diff --git a/.gitmodules b/.gitmodules index 0ff039ecbd..1ac4728006 100644 --- a/.gitmodules +++ b/.gitmodules @@ -33,3 +33,7 @@ path = extern/libtommath url = https://github.com/libtom/libtommath.git shallow = true +[submodule "extern/libtomcrypt"] + path = extern/libtomcrypt + url = https://github.com/libtom/libtomcrypt.git + shallow = true diff --git a/CMake/DefineOptions.cmake b/CMake/DefineOptions.cmake index e2498a96b5..f29f23cdf9 100644 --- a/CMake/DefineOptions.cmake +++ b/CMake/DefineOptions.cmake @@ -45,7 +45,6 @@ option(WITH_SYSTEM_PNG "Build with system PNG library (may not work on 1.6+)" OFF) option(WITH_SYSTEM_OGG "Build with system OGG libraries" OFF) option(WITH_SYSTEM_GLEW "Build with system GLEW library" OFF) -option(WITH_SYSTEM_TOMMATH "Build with system libtommath" OFF) option(WITH_SYSTEM_TOMCRYPT "Build with system libtomcrypt" OFF) option(WITH_SYSTEM_MAD "Build with system libmad" OFF) option(WITH_SYSTEM_JSONCPP "Build with system jsoncpp" OFF) diff --git a/extern/CMakeProject-tomcrypt.cmake b/extern/CMakeProject-tomcrypt.cmake index 7689e8a867..030e057550 100644 --- a/extern/CMakeProject-tomcrypt.cmake +++ b/extern/CMakeProject-tomcrypt.cmake @@ -1,815 +1,433 @@ if(WITH_SYSTEM_TOMCRYPT) find_library(TOMCRYPT_LIBRARY tomcrypt) else() - set(TOMDIR "${SM_SRC_DIR}/libtomcrypt") - - list(APPEND TOMCRYPT_CIPHERS - "${TOMDIR}/src/ciphers/anubis.c" - "${TOMDIR}/src/ciphers/blowfish.c" - "${TOMDIR}/src/ciphers/camellia.c" - "${TOMDIR}/src/ciphers/cast5.c" - "${TOMDIR}/src/ciphers/des.c" - "${TOMDIR}/src/ciphers/kasumi.c" - "${TOMDIR}/src/ciphers/khazad.c" - "${TOMDIR}/src/ciphers/kseed.c" - "${TOMDIR}/src/ciphers/multi2.c" - "${TOMDIR}/src/ciphers/noekeon.c" - "${TOMDIR}/src/ciphers/rc2.c" - "${TOMDIR}/src/ciphers/rc5.c" - "${TOMDIR}/src/ciphers/rc6.c" - "${TOMDIR}/src/ciphers/skipjack.c" - "${TOMDIR}/src/ciphers/xtea.c" - ) - - source_group("ciphers" FILES ${TOMCRYPT_CIPHERS}) - - list(APPEND TOMCRYPT_CIPHERS_AES - "${TOMDIR}/src/ciphers/aes/aes.c" - ) - - source_group("ciphers\\\\aes" FILES ${TOMCRYPT_CIPHERS_AES}) - - list(APPEND TOMCRYPT_CIPHERS_SAFER - "${TOMDIR}/src/ciphers/safer/safer.c" - "${TOMDIR}/src/ciphers/safer/saferp.c" - ) - - source_group("ciphers\\\\safer" FILES ${TOMCRYPT_CIPHERS_SAFER}) - - list(APPEND TOMCRYPT_CIPHERS_TWOFISH - "${TOMDIR}/src/ciphers/twofish/twofish.c" - ) - - source_group("ciphers\\\\twofish" FILES ${TOMCRYPT_CIPHERS_TWOFISH}) - - list(APPEND TOMCRYPT_ENCAUTH_CCM - "${TOMDIR}/src/encauth/ccm/ccm_add_aad.c" - "${TOMDIR}/src/encauth/ccm/ccm_add_nonce.c" - "${TOMDIR}/src/encauth/ccm/ccm_done.c" - "${TOMDIR}/src/encauth/ccm/ccm_init.c" - "${TOMDIR}/src/encauth/ccm/ccm_memory.c" - "${TOMDIR}/src/encauth/ccm/ccm_process.c" - "${TOMDIR}/src/encauth/ccm/ccm_reset.c" - "${TOMDIR}/src/encauth/ccm/ccm_test.c" - ) - - source_group("encauth\\\\ccm" FILES ${TOMCRYPT_ENCAUTH_CCM}) - - list(APPEND TOMCRYPT_ENCAUTH_CHACHAPOLY - "${TOMDIR}/src/encauth/chachapoly/chacha20poly1305_add_aad.c" - "${TOMDIR}/src/encauth/chachapoly/chacha20poly1305_decrypt.c" - "${TOMDIR}/src/encauth/chachapoly/chacha20poly1305_done.c" - "${TOMDIR}/src/encauth/chachapoly/chacha20poly1305_encrypt.c" - "${TOMDIR}/src/encauth/chachapoly/chacha20poly1305_init.c" - "${TOMDIR}/src/encauth/chachapoly/chacha20poly1305_memory.c" - "${TOMDIR}/src/encauth/chachapoly/chacha20poly1305_setiv.c" - "${TOMDIR}/src/encauth/chachapoly/chacha20poly1305_setiv_rfc7905.c" - "${TOMDIR}/src/encauth/chachapoly/chacha20poly1305_test.c" - ) - - source_group("encauth\\\\chachapoly" FILES ${TOMCRYPT_ENCAUTH_CHACHAPOLY}) - - list(APPEND TOMCRYPT_ENCAUTH_EAX - "${TOMDIR}/src/encauth/eax/eax_addheader.c" - "${TOMDIR}/src/encauth/eax/eax_decrypt.c" - "${TOMDIR}/src/encauth/eax/eax_decrypt_verify_memory.c" - "${TOMDIR}/src/encauth/eax/eax_done.c" - "${TOMDIR}/src/encauth/eax/eax_encrypt.c" - "${TOMDIR}/src/encauth/eax/eax_encrypt_authenticate_memory.c" - "${TOMDIR}/src/encauth/eax/eax_init.c" - "${TOMDIR}/src/encauth/eax/eax_test.c" - ) - - source_group("encauth\\\\eax" FILES ${TOMCRYPT_ENCAUTH_EAX}) - - list(APPEND TOMCRYPT_ENCAUTH_GCM - "${TOMDIR}/src/encauth/gcm/gcm_add_aad.c" - "${TOMDIR}/src/encauth/gcm/gcm_add_iv.c" - "${TOMDIR}/src/encauth/gcm/gcm_done.c" - "${TOMDIR}/src/encauth/gcm/gcm_gf_mult.c" - "${TOMDIR}/src/encauth/gcm/gcm_init.c" - "${TOMDIR}/src/encauth/gcm/gcm_memory.c" - "${TOMDIR}/src/encauth/gcm/gcm_mult_h.c" - "${TOMDIR}/src/encauth/gcm/gcm_process.c" - "${TOMDIR}/src/encauth/gcm/gcm_reset.c" - "${TOMDIR}/src/encauth/gcm/gcm_test.c" - ) - - source_group("encauth\\\\gcm" FILES ${TOMCRYPT_ENCAUTH_GCM}) - - list(APPEND TOMCRYPT_ENCAUTH_OCB - "${TOMDIR}/src/encauth/ocb/ocb_decrypt.c" - "${TOMDIR}/src/encauth/ocb/ocb_decrypt_verify_memory.c" - "${TOMDIR}/src/encauth/ocb/ocb_done_decrypt.c" - "${TOMDIR}/src/encauth/ocb/ocb_done_encrypt.c" - "${TOMDIR}/src/encauth/ocb/ocb_encrypt.c" - "${TOMDIR}/src/encauth/ocb/ocb_encrypt_authenticate_memory.c" - "${TOMDIR}/src/encauth/ocb/ocb_init.c" - "${TOMDIR}/src/encauth/ocb/ocb_ntz.c" - "${TOMDIR}/src/encauth/ocb/ocb_shift_xor.c" - "${TOMDIR}/src/encauth/ocb/ocb_test.c" - "${TOMDIR}/src/encauth/ocb/s_ocb_done.c" - ) - - source_group("encauth\\\\ocb" FILES ${TOMCRYPT_ENCAUTH_OCB}) - - list(APPEND TOMCRYPT_ENCAUTH_OCB3 - "${TOMDIR}/src/encauth/ocb3/ocb3_add_aad.c" - "${TOMDIR}/src/encauth/ocb3/ocb3_decrypt.c" - "${TOMDIR}/src/encauth/ocb3/ocb3_decrypt_last.c" - "${TOMDIR}/src/encauth/ocb3/ocb3_decrypt_verify_memory.c" - "${TOMDIR}/src/encauth/ocb3/ocb3_done.c" - "${TOMDIR}/src/encauth/ocb3/ocb3_encrypt.c" - "${TOMDIR}/src/encauth/ocb3/ocb3_encrypt_authenticate_memory.c" - "${TOMDIR}/src/encauth/ocb3/ocb3_encrypt_last.c" - "${TOMDIR}/src/encauth/ocb3/ocb3_init.c" - "${TOMDIR}/src/encauth/ocb3/ocb3_int_ntz.c" - "${TOMDIR}/src/encauth/ocb3/ocb3_int_xor_blocks.c" - "${TOMDIR}/src/encauth/ocb3/ocb3_test.c" - ) - - source_group("encauth\\\\ocb3" FILES ${TOMCRYPT_ENCAUTH_OCB3}) - - list(APPEND TOMCRYPT_HASHES - "${TOMDIR}/src/hashes/blake2b.c" - "${TOMDIR}/src/hashes/blake2s.c" - "${TOMDIR}/src/hashes/md2.c" - "${TOMDIR}/src/hashes/md4.c" - "${TOMDIR}/src/hashes/md5.c" - "${TOMDIR}/src/hashes/rmd128.c" - "${TOMDIR}/src/hashes/rmd160.c" - "${TOMDIR}/src/hashes/rmd256.c" - "${TOMDIR}/src/hashes/rmd320.c" - "${TOMDIR}/src/hashes/sha1.c" - "${TOMDIR}/src/hashes/sha3.c" - "${TOMDIR}/src/hashes/sha3_test.c" - "${TOMDIR}/src/hashes/tiger.c" - ) - - source_group("hashes" FILES ${TOMCRYPT_HASHES}) - - list(APPEND TOMCRYPT_HASHES_CHC - "${TOMDIR}/src/hashes/chc/chc.c" - ) - - source_group("hashes\\\\chc" FILES ${TOMCRYPT_HASHES_CHC}) - - list(APPEND TOMCRYPT_HASHES_HELPER - "${TOMDIR}/src/hashes/helper/hash_file.c" - "${TOMDIR}/src/hashes/helper/hash_filehandle.c" - "${TOMDIR}/src/hashes/helper/hash_memory.c" - "${TOMDIR}/src/hashes/helper/hash_memory_multi.c" - ) - - source_group("hashes\\\\helper" FILES ${TOMCRYPT_HASHES_HELPER}) - - list(APPEND TOMCRYPT_HASHES_SHA2 - "${TOMDIR}/src/hashes/sha2/sha224.c" - "${TOMDIR}/src/hashes/sha2/sha256.c" - "${TOMDIR}/src/hashes/sha2/sha384.c" - "${TOMDIR}/src/hashes/sha2/sha512.c" - "${TOMDIR}/src/hashes/sha2/sha512_224.c" - "${TOMDIR}/src/hashes/sha2/sha512_256.c" - ) - - source_group("hashes\\\\sha2" FILES ${TOMCRYPT_HASHES_SHA2}) - - list(APPEND TOMCRYPT_HASHES_WHIRL - "${TOMDIR}/src/hashes/whirl/whirl.c" - ) - - source_group("hashes\\\\whirl" FILES ${TOMCRYPT_HASHES_WHIRL}) - - list(APPEND TOMCRYPT_MAC_BLAKE2 - "${TOMDIR}/src/mac/blake2/blake2bmac.c" - "${TOMDIR}/src/mac/blake2/blake2bmac_file.c" - "${TOMDIR}/src/mac/blake2/blake2bmac_memory.c" - "${TOMDIR}/src/mac/blake2/blake2bmac_memory_multi.c" - "${TOMDIR}/src/mac/blake2/blake2bmac_test.c" - "${TOMDIR}/src/mac/blake2/blake2smac.c" - "${TOMDIR}/src/mac/blake2/blake2smac_file.c" - "${TOMDIR}/src/mac/blake2/blake2smac_memory.c" - "${TOMDIR}/src/mac/blake2/blake2smac_memory_multi.c" - "${TOMDIR}/src/mac/blake2/blake2smac_test.c" - ) - - source_group("mac\\\\blake2" FILES ${TOMCRYPT_MAC_BLAKE2}) - - list(APPEND TOMCRYPT_MAC_F9 - "${TOMDIR}/src/mac/f9/f9_done.c" - "${TOMDIR}/src/mac/f9/f9_file.c" - "${TOMDIR}/src/mac/f9/f9_init.c" - "${TOMDIR}/src/mac/f9/f9_memory.c" - "${TOMDIR}/src/mac/f9/f9_memory_multi.c" - "${TOMDIR}/src/mac/f9/f9_process.c" - "${TOMDIR}/src/mac/f9/f9_test.c" - ) - - source_group("mac\\\\f9" FILES ${TOMCRYPT_MAC_F9}) - - list(APPEND TOMCRYPT_MAC_HMAC - "${TOMDIR}/src/mac/hmac/hmac_done.c" - "${TOMDIR}/src/mac/hmac/hmac_file.c" - "${TOMDIR}/src/mac/hmac/hmac_init.c" - "${TOMDIR}/src/mac/hmac/hmac_memory.c" - "${TOMDIR}/src/mac/hmac/hmac_memory_multi.c" - "${TOMDIR}/src/mac/hmac/hmac_process.c" - "${TOMDIR}/src/mac/hmac/hmac_test.c" - ) - - source_group("mac\\\\hmac" FILES ${TOMCRYPT_MAC_HMAC}) - - list(APPEND TOMCRYPT_MAC_OMAC - "${TOMDIR}/src/mac/omac/omac_done.c" - "${TOMDIR}/src/mac/omac/omac_file.c" - "${TOMDIR}/src/mac/omac/omac_init.c" - "${TOMDIR}/src/mac/omac/omac_memory.c" - "${TOMDIR}/src/mac/omac/omac_memory_multi.c" - "${TOMDIR}/src/mac/omac/omac_process.c" - "${TOMDIR}/src/mac/omac/omac_test.c" - ) - - source_group("mac\\\\omac" FILES ${TOMCRYPT_MAC_OMAC}) - - list(APPEND TOMCRYPT_MAC_PELICAN - "${TOMDIR}/src/mac/pelican/pelican.c" - "${TOMDIR}/src/mac/pelican/pelican_memory.c" - "${TOMDIR}/src/mac/pelican/pelican_test.c" - ) - - source_group("mac\\\\pelican" FILES ${TOMCRYPT_MAC_PELICAN}) - - list(APPEND TOMCRYPT_MAC_PMAC - "${TOMDIR}/src/mac/pmac/pmac_done.c" - "${TOMDIR}/src/mac/pmac/pmac_file.c" - "${TOMDIR}/src/mac/pmac/pmac_init.c" - "${TOMDIR}/src/mac/pmac/pmac_memory.c" - "${TOMDIR}/src/mac/pmac/pmac_memory_multi.c" - "${TOMDIR}/src/mac/pmac/pmac_ntz.c" - "${TOMDIR}/src/mac/pmac/pmac_process.c" - "${TOMDIR}/src/mac/pmac/pmac_shift_xor.c" - "${TOMDIR}/src/mac/pmac/pmac_test.c" - ) - - source_group("mac\\\\pmac" FILES ${TOMCRYPT_MAC_PMAC}) - - list(APPEND TOMCRYPT_MAC_POLY1305 - "${TOMDIR}/src/mac/poly1305/poly1305.c" - "${TOMDIR}/src/mac/poly1305/poly1305_file.c" - "${TOMDIR}/src/mac/poly1305/poly1305_memory.c" - "${TOMDIR}/src/mac/poly1305/poly1305_memory_multi.c" - "${TOMDIR}/src/mac/poly1305/poly1305_test.c" - ) - - source_group("mac\\\\poly1305" FILES ${TOMCRYPT_MAC_POLY1305}) - - list(APPEND TOMCRYPT_MAC_XCBC - "${TOMDIR}/src/mac/xcbc/xcbc_done.c" - "${TOMDIR}/src/mac/xcbc/xcbc_file.c" - "${TOMDIR}/src/mac/xcbc/xcbc_init.c" - "${TOMDIR}/src/mac/xcbc/xcbc_memory.c" - "${TOMDIR}/src/mac/xcbc/xcbc_memory_multi.c" - "${TOMDIR}/src/mac/xcbc/xcbc_process.c" - "${TOMDIR}/src/mac/xcbc/xcbc_test.c" - ) - - source_group("mac\\\\xcbc" FILES ${TOMCRYPT_MAC_XCBC}) - - list(APPEND TOMCRYPT_MATH - "${TOMDIR}/src/math/gmp_desc.c" - "${TOMDIR}/src/math/ltm_desc.c" - "${TOMDIR}/src/math/multi.c" - "${TOMDIR}/src/math/radix_to_bin.c" - "${TOMDIR}/src/math/rand_bn.c" - "${TOMDIR}/src/math/rand_prime.c" - "${TOMDIR}/src/math/tfm_desc.c" - ) - - source_group("math" FILES ${TOMCRYPT_MATH}) - - list(APPEND TOMCRYPT_MATH_FP - "${TOMDIR}/src/math/fp/ltc_ecc_fp_mulmod.c" - ) - - source_group("math\\\\fp" FILES ${TOMCRYPT_MATH_FP}) - - list(APPEND TOMCRYPT_MISC - "${TOMDIR}/src/misc/adler32.c" - "${TOMDIR}/src/misc/burn_stack.c" - "${TOMDIR}/src/misc/compare_testvector.c" - "${TOMDIR}/src/misc/crc32.c" - "${TOMDIR}/src/misc/error_to_string.c" - "${TOMDIR}/src/misc/mem_neq.c" - "${TOMDIR}/src/misc/pk_get_oid.c" - "${TOMDIR}/src/misc/zeromem.c" - ) - - source_group("misc" FILES ${TOMCRYPT_MISC}) - - list(APPEND TOMCRYPT_MISC_BASE64 - "${TOMDIR}/src/misc/base64/base64_decode.c" - "${TOMDIR}/src/misc/base64/base64_encode.c" - ) - - source_group("misc\\\\base64" FILES ${TOMCRYPT_MISC_BASE64}) - - list(APPEND TOMCRYPT_MISC_CRYPT - "${TOMDIR}/src/misc/crypt/crypt.c" - "${TOMDIR}/src/misc/crypt/crypt_argchk.c" - "${TOMDIR}/src/misc/crypt/crypt_cipher_descriptor.c" - "${TOMDIR}/src/misc/crypt/crypt_cipher_is_valid.c" - "${TOMDIR}/src/misc/crypt/crypt_constants.c" - "${TOMDIR}/src/misc/crypt/crypt_find_cipher.c" - "${TOMDIR}/src/misc/crypt/crypt_find_cipher_any.c" - "${TOMDIR}/src/misc/crypt/crypt_find_cipher_id.c" - "${TOMDIR}/src/misc/crypt/crypt_find_hash.c" - "${TOMDIR}/src/misc/crypt/crypt_find_hash_any.c" - "${TOMDIR}/src/misc/crypt/crypt_find_hash_id.c" - "${TOMDIR}/src/misc/crypt/crypt_find_hash_oid.c" - "${TOMDIR}/src/misc/crypt/crypt_find_prng.c" - "${TOMDIR}/src/misc/crypt/crypt_fsa.c" - "${TOMDIR}/src/misc/crypt/crypt_hash_descriptor.c" - "${TOMDIR}/src/misc/crypt/crypt_hash_is_valid.c" - "${TOMDIR}/src/misc/crypt/crypt_inits.c" - "${TOMDIR}/src/misc/crypt/crypt_ltc_mp_descriptor.c" - "${TOMDIR}/src/misc/crypt/crypt_prng_descriptor.c" - "${TOMDIR}/src/misc/crypt/crypt_prng_is_valid.c" - "${TOMDIR}/src/misc/crypt/crypt_prng_rng_descriptor.c" - "${TOMDIR}/src/misc/crypt/crypt_register_all_ciphers.c" - "${TOMDIR}/src/misc/crypt/crypt_register_all_hashes.c" - "${TOMDIR}/src/misc/crypt/crypt_register_all_prngs.c" - "${TOMDIR}/src/misc/crypt/crypt_register_cipher.c" - "${TOMDIR}/src/misc/crypt/crypt_register_hash.c" - "${TOMDIR}/src/misc/crypt/crypt_register_prng.c" - "${TOMDIR}/src/misc/crypt/crypt_sizes.c" - "${TOMDIR}/src/misc/crypt/crypt_unregister_cipher.c" - "${TOMDIR}/src/misc/crypt/crypt_unregister_hash.c" - "${TOMDIR}/src/misc/crypt/crypt_unregister_prng.c" - ) - - source_group("misc\\\\crypt" FILES ${TOMCRYPT_MISC_CRYPT}) - - list(APPEND TOMCRYPT_MISC_HKDF - "${TOMDIR}/src/misc/hkdf/hkdf.c" - "${TOMDIR}/src/misc/hkdf/hkdf_test.c" - ) - - source_group("misc\\\\hkdf" FILES ${TOMCRYPT_MISC_HKDF}) - - list(APPEND TOMCRYPT_MISC_PKCS5 - "${TOMDIR}/src/misc/pkcs5/pkcs_5_1.c" - "${TOMDIR}/src/misc/pkcs5/pkcs_5_2.c" - "${TOMDIR}/src/misc/pkcs5/pkcs_5_test.c" - ) - - source_group("misc\\\\pkcs5" FILES ${TOMCRYPT_MISC_PKCS5}) - - list(APPEND TOMCRYPT_MODES_CBC - "${TOMDIR}/src/modes/cbc/cbc_decrypt.c" - "${TOMDIR}/src/modes/cbc/cbc_done.c" - "${TOMDIR}/src/modes/cbc/cbc_encrypt.c" - "${TOMDIR}/src/modes/cbc/cbc_getiv.c" - "${TOMDIR}/src/modes/cbc/cbc_setiv.c" - "${TOMDIR}/src/modes/cbc/cbc_start.c" - ) - - source_group("modes\\\\cbc" FILES ${TOMCRYPT_MODES_CBC}) - - list(APPEND TOMCRYPT_MODES_CFB - "${TOMDIR}/src/modes/cfb/cfb_decrypt.c" - "${TOMDIR}/src/modes/cfb/cfb_done.c" - "${TOMDIR}/src/modes/cfb/cfb_encrypt.c" - "${TOMDIR}/src/modes/cfb/cfb_getiv.c" - "${TOMDIR}/src/modes/cfb/cfb_setiv.c" - "${TOMDIR}/src/modes/cfb/cfb_start.c" - ) - - source_group("modes\\\\cfb" FILES ${TOMCRYPT_MODES_CFB}) - - list(APPEND TOMCRYPT_MODES_CTR - "${TOMDIR}/src/modes/ctr/ctr_decrypt.c" - "${TOMDIR}/src/modes/ctr/ctr_done.c" - "${TOMDIR}/src/modes/ctr/ctr_encrypt.c" - "${TOMDIR}/src/modes/ctr/ctr_getiv.c" - "${TOMDIR}/src/modes/ctr/ctr_setiv.c" - "${TOMDIR}/src/modes/ctr/ctr_start.c" - "${TOMDIR}/src/modes/ctr/ctr_test.c" - ) - - source_group("modes\\\\ctr" FILES ${TOMCRYPT_MODES_CTR}) - - list(APPEND TOMCRYPT_MODES_ECB - "${TOMDIR}/src/modes/ecb/ecb_decrypt.c" - "${TOMDIR}/src/modes/ecb/ecb_done.c" - "${TOMDIR}/src/modes/ecb/ecb_encrypt.c" - "${TOMDIR}/src/modes/ecb/ecb_start.c" - ) - - source_group("modes\\\\ecb" FILES ${TOMCRYPT_MODES_ECB}) - - list(APPEND TOMCRYPT_MODES_F8 - "${TOMDIR}/src/modes/f8/f8_decrypt.c" - "${TOMDIR}/src/modes/f8/f8_done.c" - "${TOMDIR}/src/modes/f8/f8_encrypt.c" - "${TOMDIR}/src/modes/f8/f8_getiv.c" - "${TOMDIR}/src/modes/f8/f8_setiv.c" - "${TOMDIR}/src/modes/f8/f8_start.c" - "${TOMDIR}/src/modes/f8/f8_test_mode.c" - ) - - source_group("modes\\\\f8" FILES ${TOMCRYPT_MODES_F8}) - - list(APPEND TOMCRYPT_MODES_LRW - "${TOMDIR}/src/modes/lrw/lrw_decrypt.c" - "${TOMDIR}/src/modes/lrw/lrw_done.c" - "${TOMDIR}/src/modes/lrw/lrw_encrypt.c" - "${TOMDIR}/src/modes/lrw/lrw_getiv.c" - "${TOMDIR}/src/modes/lrw/lrw_process.c" - "${TOMDIR}/src/modes/lrw/lrw_setiv.c" - "${TOMDIR}/src/modes/lrw/lrw_start.c" - "${TOMDIR}/src/modes/lrw/lrw_test.c" - ) - - source_group("modes\\\\lrw" FILES ${TOMCRYPT_MODES_LRW}) - - list(APPEND TOMCRYPT_MODES_OFB - "${TOMDIR}/src/modes/ofb/ofb_decrypt.c" - "${TOMDIR}/src/modes/ofb/ofb_done.c" - "${TOMDIR}/src/modes/ofb/ofb_encrypt.c" - "${TOMDIR}/src/modes/ofb/ofb_getiv.c" - "${TOMDIR}/src/modes/ofb/ofb_setiv.c" - "${TOMDIR}/src/modes/ofb/ofb_start.c" - ) - - source_group("modes\\\\ofb" FILES ${TOMCRYPT_MODES_OFB}) - - list(APPEND TOMCRYPT_MODES_XTS - "${TOMDIR}/src/modes/xts/xts_decrypt.c" - "${TOMDIR}/src/modes/xts/xts_done.c" - "${TOMDIR}/src/modes/xts/xts_encrypt.c" - "${TOMDIR}/src/modes/xts/xts_init.c" - "${TOMDIR}/src/modes/xts/xts_mult_x.c" - "${TOMDIR}/src/modes/xts/xts_test.c" - ) - - source_group("modes\\\\xts" FILES ${TOMCRYPT_MODES_XTS}) - - list(APPEND TOMCRYPT_PK_ASN1_DER_BIT - "${TOMDIR}/src/pk/asn1/der/bit/der_decode_bit_string.c" - "${TOMDIR}/src/pk/asn1/der/bit/der_decode_raw_bit_string.c" - "${TOMDIR}/src/pk/asn1/der/bit/der_encode_bit_string.c" - "${TOMDIR}/src/pk/asn1/der/bit/der_encode_raw_bit_string.c" - "${TOMDIR}/src/pk/asn1/der/bit/der_length_bit_string.c" - ) - - source_group("pk\\\\asn1\\\\der\\\\bit" FILES ${TOMCRYPT_PK_ASN1_DER_BIT}) - - list(APPEND TOMCRYPT_PK_ASN1_DER_BOOLEAN - "${TOMDIR}/src/pk/asn1/der/boolean/der_decode_boolean.c" - "${TOMDIR}/src/pk/asn1/der/boolean/der_encode_boolean.c" - "${TOMDIR}/src/pk/asn1/der/boolean/der_length_boolean.c" - ) - - source_group("pk\\\\asn1\\\\der\\\\boolean" FILES ${TOMCRYPT_PK_ASN1_DER_BOOLEAN}) - - list(APPEND TOMCRYPT_PK_ASN1_DER_CHOICE - "${TOMDIR}/src/pk/asn1/der/choice/der_decode_choice.c" - ) - - source_group("pk\\\\asn1\\\\der\\\\choice" FILES ${TOMCRYPT_PK_ASN1_DER_CHOICE}) - - list(APPEND TOMCRYPT_PK_ASN1_DER_GENERALIZEDTIME - "${TOMDIR}/src/pk/asn1/der/generalizedtime/der_decode_generalizedtime.c" - "${TOMDIR}/src/pk/asn1/der/generalizedtime/der_encode_generalizedtime.c" - "${TOMDIR}/src/pk/asn1/der/generalizedtime/der_length_generalizedtime.c" - ) - - source_group("pk\\\\asn1\\\\der\\\\generalizedtime" FILES ${TOMCRYPT_PK_ASN1_DER_GENERALIZEDTIME}) - - list(APPEND TOMCRYPT_PK_ASN1_DER_IA5 - "${TOMDIR}/src/pk/asn1/der/ia5/der_decode_ia5_string.c" - "${TOMDIR}/src/pk/asn1/der/ia5/der_encode_ia5_string.c" - "${TOMDIR}/src/pk/asn1/der/ia5/der_length_ia5_string.c" - ) - - source_group("pk\\\\asn1\\\\der\\\\ia5" FILES ${TOMCRYPT_PK_ASN1_DER_IA5}) - - list(APPEND TOMCRYPT_PK_ASN1_DER_INTEGER - "${TOMDIR}/src/pk/asn1/der/integer/der_decode_integer.c" - "${TOMDIR}/src/pk/asn1/der/integer/der_encode_integer.c" - "${TOMDIR}/src/pk/asn1/der/integer/der_length_integer.c" - ) - - source_group("pk\\\\asn1\\\\der\\\\integer" FILES ${TOMCRYPT_PK_ASN1_DER_INTEGER}) - - list(APPEND TOMCRYPT_PK_ASN1_DER_OBJECT_IDENTIFIER - "${TOMDIR}/src/pk/asn1/der/object_identifier/der_decode_object_identifier.c" - "${TOMDIR}/src/pk/asn1/der/object_identifier/der_encode_object_identifier.c" - "${TOMDIR}/src/pk/asn1/der/object_identifier/der_length_object_identifier.c" - ) - - source_group("pk\\\\asn1\\\\der\\\\object_identifier" FILES ${TOMCRYPT_PK_ASN1_DER_OBJECT_IDENTIFIER}) - - list(APPEND TOMCRYPT_PK_ASN1_DER_OCTET - "${TOMDIR}/src/pk/asn1/der/octet/der_decode_octet_string.c" - "${TOMDIR}/src/pk/asn1/der/octet/der_encode_octet_string.c" - "${TOMDIR}/src/pk/asn1/der/octet/der_length_octet_string.c" - ) - - source_group("pk\\\\asn1\\\\der\\\\octet" FILES ${TOMCRYPT_PK_ASN1_DER_OCTET}) - - list(APPEND TOMCRYPT_PK_ASN1_DER_PRINTABLE_STRING - "${TOMDIR}/src/pk/asn1/der/printable_string/der_decode_printable_string.c" - "${TOMDIR}/src/pk/asn1/der/printable_string/der_encode_printable_string.c" - "${TOMDIR}/src/pk/asn1/der/printable_string/der_length_printable_string.c" - ) - - source_group("pk\\\\asn1\\\\der\\\\printable_string" FILES ${TOMCRYPT_PK_ASN1_DER_PRINTABLE_STRING}) - - list(APPEND TOMCRYPT_PK_ASN1_DER_SEQUENCE - "${TOMDIR}/src/pk/asn1/der/sequence/der_decode_sequence_ex.c" - "${TOMDIR}/src/pk/asn1/der/sequence/der_decode_sequence_flexi.c" - "${TOMDIR}/src/pk/asn1/der/sequence/der_decode_sequence_multi.c" - "${TOMDIR}/src/pk/asn1/der/sequence/der_decode_subject_public_key_info.c" - "${TOMDIR}/src/pk/asn1/der/sequence/der_encode_sequence_ex.c" - "${TOMDIR}/src/pk/asn1/der/sequence/der_encode_sequence_multi.c" - "${TOMDIR}/src/pk/asn1/der/sequence/der_encode_subject_public_key_info.c" - "${TOMDIR}/src/pk/asn1/der/sequence/der_length_sequence.c" - "${TOMDIR}/src/pk/asn1/der/sequence/der_sequence_free.c" - "${TOMDIR}/src/pk/asn1/der/sequence/der_sequence_shrink.c" - ) - - source_group("pk\\\\asn1\\\\der\\\\sequence" FILES ${TOMCRYPT_PK_ASN1_DER_SEQUENCE}) - - list(APPEND TOMCRYPT_PK_ASN1_DER_SET - "${TOMDIR}/src/pk/asn1/der/set/der_encode_set.c" - "${TOMDIR}/src/pk/asn1/der/set/der_encode_setof.c" - ) - - source_group("pk\\\\asn1\\\\der\\\\set" FILES ${TOMCRYPT_PK_ASN1_DER_SET}) - - list(APPEND TOMCRYPT_PK_ASN1_DER_SHORT_INTEGER - "${TOMDIR}/src/pk/asn1/der/short_integer/der_decode_short_integer.c" - "${TOMDIR}/src/pk/asn1/der/short_integer/der_encode_short_integer.c" - "${TOMDIR}/src/pk/asn1/der/short_integer/der_length_short_integer.c" - ) - - source_group("pk\\\\asn1\\\\der\\\\short_integer" FILES ${TOMCRYPT_PK_ASN1_DER_SHORT_INTEGER}) - - list(APPEND TOMCRYPT_PK_ASN1_DER_TELETEX_STRING - "${TOMDIR}/src/pk/asn1/der/teletex_string/der_decode_teletex_string.c" - "${TOMDIR}/src/pk/asn1/der/teletex_string/der_length_teletex_string.c" - ) - - source_group("pk\\\\asn1\\\\der\\\\teletex_string" FILES ${TOMCRYPT_PK_ASN1_DER_TELETEX_STRING}) - - list(APPEND TOMCRYPT_PK_ASN1_DER_UTCTIME - "${TOMDIR}/src/pk/asn1/der/utctime/der_decode_utctime.c" - "${TOMDIR}/src/pk/asn1/der/utctime/der_encode_utctime.c" - "${TOMDIR}/src/pk/asn1/der/utctime/der_length_utctime.c" - ) - - source_group("pk\\\\asn1\\\\der\\\\utctime" FILES ${TOMCRYPT_PK_ASN1_DER_UTCTIME}) - - list(APPEND TOMCRYPT_PK_ASN1_DER_UTF8 - "${TOMDIR}/src/pk/asn1/der/utf8/der_decode_utf8_string.c" - "${TOMDIR}/src/pk/asn1/der/utf8/der_encode_utf8_string.c" - "${TOMDIR}/src/pk/asn1/der/utf8/der_length_utf8_string.c" - ) - - source_group("pk\\\\asn1\\\\der\\\\utf8" FILES ${TOMCRYPT_PK_ASN1_DER_UTF8}) - - list(APPEND TOMCRYPT_PK_DH - "${TOMDIR}/src/pk/dh/dh.c" - "${TOMDIR}/src/pk/dh/dh_check_pubkey.c" - "${TOMDIR}/src/pk/dh/dh_export.c" - "${TOMDIR}/src/pk/dh/dh_export_key.c" - "${TOMDIR}/src/pk/dh/dh_free.c" - "${TOMDIR}/src/pk/dh/dh_generate_key.c" - "${TOMDIR}/src/pk/dh/dh_import.c" - "${TOMDIR}/src/pk/dh/dh_set.c" - "${TOMDIR}/src/pk/dh/dh_set_pg_dhparam.c" - "${TOMDIR}/src/pk/dh/dh_shared_secret.c" - ) - - source_group("pk\\\\dh" FILES ${TOMCRYPT_PK_DH}) - - list(APPEND TOMCRYPT_PK_DSA - "${TOMDIR}/src/pk/dsa/dsa_decrypt_key.c" - "${TOMDIR}/src/pk/dsa/dsa_encrypt_key.c" - "${TOMDIR}/src/pk/dsa/dsa_export.c" - "${TOMDIR}/src/pk/dsa/dsa_free.c" - "${TOMDIR}/src/pk/dsa/dsa_generate_key.c" - "${TOMDIR}/src/pk/dsa/dsa_generate_pqg.c" - "${TOMDIR}/src/pk/dsa/dsa_import.c" - "${TOMDIR}/src/pk/dsa/dsa_make_key.c" - "${TOMDIR}/src/pk/dsa/dsa_set.c" - "${TOMDIR}/src/pk/dsa/dsa_set_pqg_dsaparam.c" - "${TOMDIR}/src/pk/dsa/dsa_shared_secret.c" - "${TOMDIR}/src/pk/dsa/dsa_sign_hash.c" - "${TOMDIR}/src/pk/dsa/dsa_verify_hash.c" - "${TOMDIR}/src/pk/dsa/dsa_verify_key.c" - ) - - source_group("pk\\\\dsa" FILES ${TOMCRYPT_PK_DSA}) - - list(APPEND TOMCRYPT_PK_ECC - "${TOMDIR}/src/pk/ecc/ecc.c" - "${TOMDIR}/src/pk/ecc/ecc_ansi_x963_export.c" - "${TOMDIR}/src/pk/ecc/ecc_ansi_x963_import.c" - "${TOMDIR}/src/pk/ecc/ecc_decrypt_key.c" - "${TOMDIR}/src/pk/ecc/ecc_encrypt_key.c" - "${TOMDIR}/src/pk/ecc/ecc_export.c" - "${TOMDIR}/src/pk/ecc/ecc_free.c" - "${TOMDIR}/src/pk/ecc/ecc_get_size.c" - "${TOMDIR}/src/pk/ecc/ecc_import.c" - "${TOMDIR}/src/pk/ecc/ecc_make_key.c" - "${TOMDIR}/src/pk/ecc/ecc_shared_secret.c" - "${TOMDIR}/src/pk/ecc/ecc_sign_hash.c" - "${TOMDIR}/src/pk/ecc/ecc_sizes.c" - "${TOMDIR}/src/pk/ecc/ecc_test.c" - "${TOMDIR}/src/pk/ecc/ecc_verify_hash.c" - "${TOMDIR}/src/pk/ecc/ltc_ecc_is_valid_idx.c" - "${TOMDIR}/src/pk/ecc/ltc_ecc_map.c" - "${TOMDIR}/src/pk/ecc/ltc_ecc_mul2add.c" - "${TOMDIR}/src/pk/ecc/ltc_ecc_mulmod.c" - "${TOMDIR}/src/pk/ecc/ltc_ecc_mulmod_timing.c" - "${TOMDIR}/src/pk/ecc/ltc_ecc_points.c" - "${TOMDIR}/src/pk/ecc/ltc_ecc_projective_add_point.c" - "${TOMDIR}/src/pk/ecc/ltc_ecc_projective_dbl_point.c" - ) - - source_group("pk\\\\ecc" FILES ${TOMCRYPT_PK_ECC}) - - list(APPEND TOMCRYPT_PK_KATJA - "${TOMDIR}/src/pk/katja/katja_decrypt_key.c" - "${TOMDIR}/src/pk/katja/katja_encrypt_key.c" - "${TOMDIR}/src/pk/katja/katja_export.c" - "${TOMDIR}/src/pk/katja/katja_exptmod.c" - "${TOMDIR}/src/pk/katja/katja_free.c" - "${TOMDIR}/src/pk/katja/katja_import.c" - "${TOMDIR}/src/pk/katja/katja_make_key.c" - ) - - source_group("pk\\\\katja" FILES ${TOMCRYPT_PK_KATJA}) - - list(APPEND TOMCRYPT_PK_PKCS1 - "${TOMDIR}/src/pk/pkcs1/pkcs_1_i2osp.c" - "${TOMDIR}/src/pk/pkcs1/pkcs_1_mgf1.c" - "${TOMDIR}/src/pk/pkcs1/pkcs_1_oaep_decode.c" - "${TOMDIR}/src/pk/pkcs1/pkcs_1_oaep_encode.c" - "${TOMDIR}/src/pk/pkcs1/pkcs_1_os2ip.c" - "${TOMDIR}/src/pk/pkcs1/pkcs_1_pss_decode.c" - "${TOMDIR}/src/pk/pkcs1/pkcs_1_pss_encode.c" - "${TOMDIR}/src/pk/pkcs1/pkcs_1_v1_5_decode.c" - "${TOMDIR}/src/pk/pkcs1/pkcs_1_v1_5_encode.c" - ) - - source_group("pk\\\\pkcs1" FILES ${TOMCRYPT_PK_PKCS1}) - - list(APPEND TOMCRYPT_PK_RSA - "${TOMDIR}/src/pk/rsa/rsa_decrypt_key.c" - "${TOMDIR}/src/pk/rsa/rsa_encrypt_key.c" - "${TOMDIR}/src/pk/rsa/rsa_export.c" - "${TOMDIR}/src/pk/rsa/rsa_exptmod.c" - "${TOMDIR}/src/pk/rsa/rsa_free.c" - "${TOMDIR}/src/pk/rsa/rsa_get_size.c" - "${TOMDIR}/src/pk/rsa/rsa_import.c" - "${TOMDIR}/src/pk/rsa/rsa_import_pkcs8.c" - "${TOMDIR}/src/pk/rsa/rsa_import_x509.c" - "${TOMDIR}/src/pk/rsa/rsa_make_key.c" - "${TOMDIR}/src/pk/rsa/rsa_set.c" - "${TOMDIR}/src/pk/rsa/rsa_sign_hash.c" - "${TOMDIR}/src/pk/rsa/rsa_sign_saltlen_get.c" - "${TOMDIR}/src/pk/rsa/rsa_verify_hash.c" - ) - - source_group("pk\\\\rsa" FILES ${TOMCRYPT_PK_RSA}) - - list(APPEND TOMCRYPT_PRNGS - "${TOMDIR}/src/prngs/chacha20.c" - "${TOMDIR}/src/prngs/fortuna.c" - "${TOMDIR}/src/prngs/rc4.c" - "${TOMDIR}/src/prngs/rng_get_bytes.c" - "${TOMDIR}/src/prngs/rng_make_prng.c" - "${TOMDIR}/src/prngs/sober128.c" - "${TOMDIR}/src/prngs/sprng.c" - "${TOMDIR}/src/prngs/yarrow.c" - ) - - source_group("prngs" FILES ${TOMCRYPT_PRNGS}) - - list(APPEND TOMCRYPT_STREAM_CHACHA - "${TOMDIR}/src/stream/chacha/chacha_crypt.c" - "${TOMDIR}/src/stream/chacha/chacha_done.c" - "${TOMDIR}/src/stream/chacha/chacha_ivctr32.c" - "${TOMDIR}/src/stream/chacha/chacha_ivctr64.c" - "${TOMDIR}/src/stream/chacha/chacha_keystream.c" - "${TOMDIR}/src/stream/chacha/chacha_setup.c" - "${TOMDIR}/src/stream/chacha/chacha_test.c" - ) - - source_group("stream\\\\chacha" FILES ${TOMCRYPT_STREAM_CHACHA}) - - list(APPEND TOMCRYPT_STREAM_RC4 - "${TOMDIR}/src/stream/rc4/rc4_stream.c" - "${TOMDIR}/src/stream/rc4/rc4_test.c" - ) - - source_group("stream\\\\rc4" FILES ${TOMCRYPT_STREAM_RC4}) - - list(APPEND TOMCRYPT_STREAM_SOBER128 - "${TOMDIR}/src/stream/sober128/sober128_stream.c" - "${TOMDIR}/src/stream/sober128/sober128_test.c" - ) - - source_group("stream\\\\sober128" FILES ${TOMCRYPT_STREAM_SOBER128}) - - list(APPEND TOMCRYPT_SRC - ${TOMCRYPT_CIPHERS} - ${TOMCRYPT_CIPHERS_AES} - ${TOMCRYPT_CIPHERS_SAFER} - ${TOMCRYPT_CIPHERS_TWOFISH} - ${TOMCRYPT_ENCAUTH_CCM} - ${TOMCRYPT_ENCAUTH_CHACHAPOLY} - ${TOMCRYPT_ENCAUTH_EAX} - ${TOMCRYPT_ENCAUTH_GCM} - ${TOMCRYPT_ENCAUTH_OCB} - ${TOMCRYPT_ENCAUTH_OCB3} - ${TOMCRYPT_HASHES} - ${TOMCRYPT_HASHES_CHC} - ${TOMCRYPT_HASHES_HELPER} - ${TOMCRYPT_HASHES_SHA2} - ${TOMCRYPT_HASHES_WHIRL} - ${TOMCRYPT_MAC_BLAKE2} - ${TOMCRYPT_MAC_F9} - ${TOMCRYPT_MAC_HMAC} - ${TOMCRYPT_MAC_OMAC} - ${TOMCRYPT_MAC_PELICAN} - ${TOMCRYPT_MAC_PMAC} - ${TOMCRYPT_MAC_POLY1305} - ${TOMCRYPT_MAC_XCBC} - ${TOMCRYPT_MATH} - ${TOMCRYPT_MATH_FP} - ${TOMCRYPT_MISC} - ${TOMCRYPT_MISC_BASE64} - ${TOMCRYPT_MISC_CRYPT} - ${TOMCRYPT_MISC_HKDF} - ${TOMCRYPT_MISC_PKCS5} - ${TOMCRYPT_MODES_CBC} - ${TOMCRYPT_MODES_CFB} - ${TOMCRYPT_MODES_CTR} - ${TOMCRYPT_MODES_ECB} - ${TOMCRYPT_MODES_F8} - ${TOMCRYPT_MODES_LRW} - ${TOMCRYPT_MODES_OFB} - ${TOMCRYPT_MODES_XTS} - ${TOMCRYPT_PK_ASN1_DER_BIT} - ${TOMCRYPT_PK_ASN1_DER_BOOLEAN} - ${TOMCRYPT_PK_ASN1_DER_CHOICE} - ${TOMCRYPT_PK_ASN1_DER_GENERALIZEDTIME} - ${TOMCRYPT_PK_ASN1_DER_IA5} - ${TOMCRYPT_PK_ASN1_DER_INTEGER} - ${TOMCRYPT_PK_ASN1_DER_OBJECT_IDENTIFIER} - ${TOMCRYPT_PK_ASN1_DER_OCTET} - ${TOMCRYPT_PK_ASN1_DER_PRINTABLE_STRING} - ${TOMCRYPT_PK_ASN1_DER_SEQUENCE} - ${TOMCRYPT_PK_ASN1_DER_SET} - ${TOMCRYPT_PK_ASN1_DER_SHORT_INTEGER} - ${TOMCRYPT_PK_ASN1_DER_TELETEX_STRING} - ${TOMCRYPT_PK_ASN1_DER_UTCTIME} - ${TOMCRYPT_PK_ASN1_DER_UTF8} - ${TOMCRYPT_PK_DH} - ${TOMCRYPT_PK_DSA} - ${TOMCRYPT_PK_ECC} - ${TOMCRYPT_PK_KATJA} - ${TOMCRYPT_PK_PKCS1} - ${TOMCRYPT_PK_RSA} - ${TOMCRYPT_PRNGS} - ${TOMCRYPT_STREAM_CHACHA} - ${TOMCRYPT_STREAM_RC4} - ${TOMCRYPT_STREAM_SOBER128} - ) - - list(APPEND TOMCRYPT_HEADERS - "${TOMDIR}/src/headers/tomcrypt.h" - "${TOMDIR}/src/headers/tomcrypt_argchk.h" - "${TOMDIR}/src/headers/tomcrypt_cfg.h" - "${TOMDIR}/src/headers/tomcrypt_cipher.h" - "${TOMDIR}/src/headers/tomcrypt_custom.h" - "${TOMDIR}/src/headers/tomcrypt_hash.h" - "${TOMDIR}/src/headers/tomcrypt_mac.h" - "${TOMDIR}/src/headers/tomcrypt_macros.h" - "${TOMDIR}/src/headers/tomcrypt_math.h" - "${TOMDIR}/src/headers/tomcrypt_misc.h" - "${TOMDIR}/src/headers/tomcrypt_pk.h" - "${TOMDIR}/src/headers/tomcrypt_pkcs.h" - "${TOMDIR}/src/headers/tomcrypt_prng.h" - ) - - source_group("headers" FILES ${TOMCRYPT_HEADERS}) - - add_library("tomcrypt" STATIC ${TOMCRYPT_SRC} ${TOMCRYPT_HEADERS}) + set(TOMCRYPT_SRC + "libtomcrypt/src/ciphers/anubis.c" + "libtomcrypt/src/ciphers/blowfish.c" + "libtomcrypt/src/ciphers/camellia.c" + "libtomcrypt/src/ciphers/cast5.c" + "libtomcrypt/src/ciphers/des.c" + "libtomcrypt/src/ciphers/kasumi.c" + "libtomcrypt/src/ciphers/khazad.c" + "libtomcrypt/src/ciphers/kseed.c" + "libtomcrypt/src/ciphers/multi2.c" + "libtomcrypt/src/ciphers/noekeon.c" + "libtomcrypt/src/ciphers/rc2.c" + "libtomcrypt/src/ciphers/rc5.c" + "libtomcrypt/src/ciphers/rc6.c" + "libtomcrypt/src/ciphers/skipjack.c" + "libtomcrypt/src/ciphers/xtea.c" + "libtomcrypt/src/ciphers/aes/aes.c" + "libtomcrypt/src/ciphers/safer/safer.c" + "libtomcrypt/src/ciphers/safer/saferp.c" + "libtomcrypt/src/ciphers/twofish/twofish.c" + "libtomcrypt/src/encauth/ccm/ccm_add_aad.c" + "libtomcrypt/src/encauth/ccm/ccm_add_nonce.c" + "libtomcrypt/src/encauth/ccm/ccm_done.c" + "libtomcrypt/src/encauth/ccm/ccm_init.c" + "libtomcrypt/src/encauth/ccm/ccm_memory.c" + "libtomcrypt/src/encauth/ccm/ccm_process.c" + "libtomcrypt/src/encauth/ccm/ccm_reset.c" + "libtomcrypt/src/encauth/ccm/ccm_test.c" + "libtomcrypt/src/encauth/chachapoly/chacha20poly1305_add_aad.c" + "libtomcrypt/src/encauth/chachapoly/chacha20poly1305_decrypt.c" + "libtomcrypt/src/encauth/chachapoly/chacha20poly1305_done.c" + "libtomcrypt/src/encauth/chachapoly/chacha20poly1305_encrypt.c" + "libtomcrypt/src/encauth/chachapoly/chacha20poly1305_init.c" + "libtomcrypt/src/encauth/chachapoly/chacha20poly1305_memory.c" + "libtomcrypt/src/encauth/chachapoly/chacha20poly1305_setiv.c" + "libtomcrypt/src/encauth/chachapoly/chacha20poly1305_setiv_rfc7905.c" + "libtomcrypt/src/encauth/chachapoly/chacha20poly1305_test.c" + "libtomcrypt/src/encauth/eax/eax_addheader.c" + "libtomcrypt/src/encauth/eax/eax_decrypt.c" + "libtomcrypt/src/encauth/eax/eax_decrypt_verify_memory.c" + "libtomcrypt/src/encauth/eax/eax_done.c" + "libtomcrypt/src/encauth/eax/eax_encrypt.c" + "libtomcrypt/src/encauth/eax/eax_encrypt_authenticate_memory.c" + "libtomcrypt/src/encauth/eax/eax_init.c" + "libtomcrypt/src/encauth/eax/eax_test.c" + "libtomcrypt/src/encauth/gcm/gcm_add_aad.c" + "libtomcrypt/src/encauth/gcm/gcm_add_iv.c" + "libtomcrypt/src/encauth/gcm/gcm_done.c" + "libtomcrypt/src/encauth/gcm/gcm_gf_mult.c" + "libtomcrypt/src/encauth/gcm/gcm_init.c" + "libtomcrypt/src/encauth/gcm/gcm_memory.c" + "libtomcrypt/src/encauth/gcm/gcm_mult_h.c" + "libtomcrypt/src/encauth/gcm/gcm_process.c" + "libtomcrypt/src/encauth/gcm/gcm_reset.c" + "libtomcrypt/src/encauth/gcm/gcm_test.c" + "libtomcrypt/src/encauth/ocb/ocb_decrypt.c" + "libtomcrypt/src/encauth/ocb/ocb_decrypt_verify_memory.c" + "libtomcrypt/src/encauth/ocb/ocb_done_decrypt.c" + "libtomcrypt/src/encauth/ocb/ocb_done_encrypt.c" + "libtomcrypt/src/encauth/ocb/ocb_encrypt.c" + "libtomcrypt/src/encauth/ocb/ocb_encrypt_authenticate_memory.c" + "libtomcrypt/src/encauth/ocb/ocb_init.c" + "libtomcrypt/src/encauth/ocb/ocb_ntz.c" + "libtomcrypt/src/encauth/ocb/ocb_shift_xor.c" + "libtomcrypt/src/encauth/ocb/ocb_test.c" + "libtomcrypt/src/encauth/ocb/s_ocb_done.c" + "libtomcrypt/src/encauth/ocb3/ocb3_add_aad.c" + "libtomcrypt/src/encauth/ocb3/ocb3_decrypt.c" + "libtomcrypt/src/encauth/ocb3/ocb3_decrypt_last.c" + "libtomcrypt/src/encauth/ocb3/ocb3_decrypt_verify_memory.c" + "libtomcrypt/src/encauth/ocb3/ocb3_done.c" + "libtomcrypt/src/encauth/ocb3/ocb3_encrypt.c" + "libtomcrypt/src/encauth/ocb3/ocb3_encrypt_authenticate_memory.c" + "libtomcrypt/src/encauth/ocb3/ocb3_encrypt_last.c" + "libtomcrypt/src/encauth/ocb3/ocb3_init.c" + "libtomcrypt/src/encauth/ocb3/ocb3_int_ntz.c" + "libtomcrypt/src/encauth/ocb3/ocb3_int_xor_blocks.c" + "libtomcrypt/src/encauth/ocb3/ocb3_test.c" + "libtomcrypt/src/hashes/blake2b.c" + "libtomcrypt/src/hashes/blake2s.c" + "libtomcrypt/src/hashes/md2.c" + "libtomcrypt/src/hashes/md4.c" + "libtomcrypt/src/hashes/md5.c" + "libtomcrypt/src/hashes/rmd128.c" + "libtomcrypt/src/hashes/rmd160.c" + "libtomcrypt/src/hashes/rmd256.c" + "libtomcrypt/src/hashes/rmd320.c" + "libtomcrypt/src/hashes/sha1.c" + "libtomcrypt/src/hashes/sha3.c" + "libtomcrypt/src/hashes/sha3_test.c" + "libtomcrypt/src/hashes/tiger.c" + "libtomcrypt/src/hashes/chc/chc.c" + "libtomcrypt/src/hashes/helper/hash_file.c" + "libtomcrypt/src/hashes/helper/hash_filehandle.c" + "libtomcrypt/src/hashes/helper/hash_memory.c" + "libtomcrypt/src/hashes/helper/hash_memory_multi.c" + "libtomcrypt/src/hashes/sha2/sha224.c" + "libtomcrypt/src/hashes/sha2/sha256.c" + "libtomcrypt/src/hashes/sha2/sha384.c" + "libtomcrypt/src/hashes/sha2/sha512.c" + "libtomcrypt/src/hashes/sha2/sha512_224.c" + "libtomcrypt/src/hashes/sha2/sha512_256.c" + "libtomcrypt/src/hashes/whirl/whirl.c" + "libtomcrypt/src/mac/blake2/blake2bmac.c" + "libtomcrypt/src/mac/blake2/blake2bmac_file.c" + "libtomcrypt/src/mac/blake2/blake2bmac_memory.c" + "libtomcrypt/src/mac/blake2/blake2bmac_memory_multi.c" + "libtomcrypt/src/mac/blake2/blake2bmac_test.c" + "libtomcrypt/src/mac/blake2/blake2smac.c" + "libtomcrypt/src/mac/blake2/blake2smac_file.c" + "libtomcrypt/src/mac/blake2/blake2smac_memory.c" + "libtomcrypt/src/mac/blake2/blake2smac_memory_multi.c" + "libtomcrypt/src/mac/blake2/blake2smac_test.c" + "libtomcrypt/src/mac/f9/f9_done.c" + "libtomcrypt/src/mac/f9/f9_file.c" + "libtomcrypt/src/mac/f9/f9_init.c" + "libtomcrypt/src/mac/f9/f9_memory.c" + "libtomcrypt/src/mac/f9/f9_memory_multi.c" + "libtomcrypt/src/mac/f9/f9_process.c" + "libtomcrypt/src/mac/f9/f9_test.c" + "libtomcrypt/src/mac/hmac/hmac_done.c" + "libtomcrypt/src/mac/hmac/hmac_file.c" + "libtomcrypt/src/mac/hmac/hmac_init.c" + "libtomcrypt/src/mac/hmac/hmac_memory.c" + "libtomcrypt/src/mac/hmac/hmac_memory_multi.c" + "libtomcrypt/src/mac/hmac/hmac_process.c" + "libtomcrypt/src/mac/hmac/hmac_test.c" + "libtomcrypt/src/mac/omac/omac_done.c" + "libtomcrypt/src/mac/omac/omac_file.c" + "libtomcrypt/src/mac/omac/omac_init.c" + "libtomcrypt/src/mac/omac/omac_memory.c" + "libtomcrypt/src/mac/omac/omac_memory_multi.c" + "libtomcrypt/src/mac/omac/omac_process.c" + "libtomcrypt/src/mac/omac/omac_test.c" + "libtomcrypt/src/mac/pelican/pelican.c" + "libtomcrypt/src/mac/pelican/pelican_memory.c" + "libtomcrypt/src/mac/pelican/pelican_test.c" + "libtomcrypt/src/mac/pmac/pmac_done.c" + "libtomcrypt/src/mac/pmac/pmac_file.c" + "libtomcrypt/src/mac/pmac/pmac_init.c" + "libtomcrypt/src/mac/pmac/pmac_memory.c" + "libtomcrypt/src/mac/pmac/pmac_memory_multi.c" + "libtomcrypt/src/mac/pmac/pmac_ntz.c" + "libtomcrypt/src/mac/pmac/pmac_process.c" + "libtomcrypt/src/mac/pmac/pmac_shift_xor.c" + "libtomcrypt/src/mac/pmac/pmac_test.c" + "libtomcrypt/src/mac/poly1305/poly1305.c" + "libtomcrypt/src/mac/poly1305/poly1305_file.c" + "libtomcrypt/src/mac/poly1305/poly1305_memory.c" + "libtomcrypt/src/mac/poly1305/poly1305_memory_multi.c" + "libtomcrypt/src/mac/poly1305/poly1305_test.c" + "libtomcrypt/src/mac/xcbc/xcbc_done.c" + "libtomcrypt/src/mac/xcbc/xcbc_file.c" + "libtomcrypt/src/mac/xcbc/xcbc_init.c" + "libtomcrypt/src/mac/xcbc/xcbc_memory.c" + "libtomcrypt/src/mac/xcbc/xcbc_memory_multi.c" + "libtomcrypt/src/mac/xcbc/xcbc_process.c" + "libtomcrypt/src/mac/xcbc/xcbc_test.c" + "libtomcrypt/src/math/gmp_desc.c" + "libtomcrypt/src/math/ltm_desc.c" + "libtomcrypt/src/math/multi.c" + "libtomcrypt/src/math/radix_to_bin.c" + "libtomcrypt/src/math/rand_bn.c" + "libtomcrypt/src/math/rand_prime.c" + "libtomcrypt/src/math/tfm_desc.c" + "libtomcrypt/src/math/fp/ltc_ecc_fp_mulmod.c" + "libtomcrypt/src/misc/adler32.c" + "libtomcrypt/src/misc/burn_stack.c" + "libtomcrypt/src/misc/compare_testvector.c" + "libtomcrypt/src/misc/crc32.c" + "libtomcrypt/src/misc/error_to_string.c" + "libtomcrypt/src/misc/mem_neq.c" + "libtomcrypt/src/misc/pk_get_oid.c" + "libtomcrypt/src/misc/zeromem.c" + "libtomcrypt/src/misc/base64/base64_decode.c" + "libtomcrypt/src/misc/base64/base64_encode.c" + "libtomcrypt/src/misc/crypt/crypt.c" + "libtomcrypt/src/misc/crypt/crypt_argchk.c" + "libtomcrypt/src/misc/crypt/crypt_cipher_descriptor.c" + "libtomcrypt/src/misc/crypt/crypt_cipher_is_valid.c" + "libtomcrypt/src/misc/crypt/crypt_constants.c" + "libtomcrypt/src/misc/crypt/crypt_find_cipher.c" + "libtomcrypt/src/misc/crypt/crypt_find_cipher_any.c" + "libtomcrypt/src/misc/crypt/crypt_find_cipher_id.c" + "libtomcrypt/src/misc/crypt/crypt_find_hash.c" + "libtomcrypt/src/misc/crypt/crypt_find_hash_any.c" + "libtomcrypt/src/misc/crypt/crypt_find_hash_id.c" + "libtomcrypt/src/misc/crypt/crypt_find_hash_oid.c" + "libtomcrypt/src/misc/crypt/crypt_find_prng.c" + "libtomcrypt/src/misc/crypt/crypt_fsa.c" + "libtomcrypt/src/misc/crypt/crypt_hash_descriptor.c" + "libtomcrypt/src/misc/crypt/crypt_hash_is_valid.c" + "libtomcrypt/src/misc/crypt/crypt_inits.c" + "libtomcrypt/src/misc/crypt/crypt_ltc_mp_descriptor.c" + "libtomcrypt/src/misc/crypt/crypt_prng_descriptor.c" + "libtomcrypt/src/misc/crypt/crypt_prng_is_valid.c" + "libtomcrypt/src/misc/crypt/crypt_prng_rng_descriptor.c" + "libtomcrypt/src/misc/crypt/crypt_register_all_ciphers.c" + "libtomcrypt/src/misc/crypt/crypt_register_all_hashes.c" + "libtomcrypt/src/misc/crypt/crypt_register_all_prngs.c" + "libtomcrypt/src/misc/crypt/crypt_register_cipher.c" + "libtomcrypt/src/misc/crypt/crypt_register_hash.c" + "libtomcrypt/src/misc/crypt/crypt_register_prng.c" + "libtomcrypt/src/misc/crypt/crypt_sizes.c" + "libtomcrypt/src/misc/crypt/crypt_unregister_cipher.c" + "libtomcrypt/src/misc/crypt/crypt_unregister_hash.c" + "libtomcrypt/src/misc/crypt/crypt_unregister_prng.c" + "libtomcrypt/src/misc/hkdf/hkdf.c" + "libtomcrypt/src/misc/hkdf/hkdf_test.c" + "libtomcrypt/src/misc/pkcs5/pkcs_5_1.c" + "libtomcrypt/src/misc/pkcs5/pkcs_5_2.c" + "libtomcrypt/src/misc/pkcs5/pkcs_5_test.c" + "libtomcrypt/src/modes/cbc/cbc_decrypt.c" + "libtomcrypt/src/modes/cbc/cbc_done.c" + "libtomcrypt/src/modes/cbc/cbc_encrypt.c" + "libtomcrypt/src/modes/cbc/cbc_getiv.c" + "libtomcrypt/src/modes/cbc/cbc_setiv.c" + "libtomcrypt/src/modes/cbc/cbc_start.c" + "libtomcrypt/src/modes/cfb/cfb_decrypt.c" + "libtomcrypt/src/modes/cfb/cfb_done.c" + "libtomcrypt/src/modes/cfb/cfb_encrypt.c" + "libtomcrypt/src/modes/cfb/cfb_getiv.c" + "libtomcrypt/src/modes/cfb/cfb_setiv.c" + "libtomcrypt/src/modes/cfb/cfb_start.c" + "libtomcrypt/src/modes/ctr/ctr_decrypt.c" + "libtomcrypt/src/modes/ctr/ctr_done.c" + "libtomcrypt/src/modes/ctr/ctr_encrypt.c" + "libtomcrypt/src/modes/ctr/ctr_getiv.c" + "libtomcrypt/src/modes/ctr/ctr_setiv.c" + "libtomcrypt/src/modes/ctr/ctr_start.c" + "libtomcrypt/src/modes/ctr/ctr_test.c" + "libtomcrypt/src/modes/ecb/ecb_decrypt.c" + "libtomcrypt/src/modes/ecb/ecb_done.c" + "libtomcrypt/src/modes/ecb/ecb_encrypt.c" + "libtomcrypt/src/modes/ecb/ecb_start.c" + "libtomcrypt/src/modes/f8/f8_decrypt.c" + "libtomcrypt/src/modes/f8/f8_done.c" + "libtomcrypt/src/modes/f8/f8_encrypt.c" + "libtomcrypt/src/modes/f8/f8_getiv.c" + "libtomcrypt/src/modes/f8/f8_setiv.c" + "libtomcrypt/src/modes/f8/f8_start.c" + "libtomcrypt/src/modes/f8/f8_test_mode.c" + "libtomcrypt/src/modes/lrw/lrw_decrypt.c" + "libtomcrypt/src/modes/lrw/lrw_done.c" + "libtomcrypt/src/modes/lrw/lrw_encrypt.c" + "libtomcrypt/src/modes/lrw/lrw_getiv.c" + "libtomcrypt/src/modes/lrw/lrw_process.c" + "libtomcrypt/src/modes/lrw/lrw_setiv.c" + "libtomcrypt/src/modes/lrw/lrw_start.c" + "libtomcrypt/src/modes/lrw/lrw_test.c" + "libtomcrypt/src/modes/ofb/ofb_decrypt.c" + "libtomcrypt/src/modes/ofb/ofb_done.c" + "libtomcrypt/src/modes/ofb/ofb_encrypt.c" + "libtomcrypt/src/modes/ofb/ofb_getiv.c" + "libtomcrypt/src/modes/ofb/ofb_setiv.c" + "libtomcrypt/src/modes/ofb/ofb_start.c" + "libtomcrypt/src/modes/xts/xts_decrypt.c" + "libtomcrypt/src/modes/xts/xts_done.c" + "libtomcrypt/src/modes/xts/xts_encrypt.c" + "libtomcrypt/src/modes/xts/xts_init.c" + "libtomcrypt/src/modes/xts/xts_mult_x.c" + "libtomcrypt/src/modes/xts/xts_test.c" + "libtomcrypt/src/pk/asn1/der/bit/der_decode_bit_string.c" + "libtomcrypt/src/pk/asn1/der/bit/der_decode_raw_bit_string.c" + "libtomcrypt/src/pk/asn1/der/bit/der_encode_bit_string.c" + "libtomcrypt/src/pk/asn1/der/bit/der_encode_raw_bit_string.c" + "libtomcrypt/src/pk/asn1/der/bit/der_length_bit_string.c" + "libtomcrypt/src/pk/asn1/der/boolean/der_decode_boolean.c" + "libtomcrypt/src/pk/asn1/der/boolean/der_encode_boolean.c" + "libtomcrypt/src/pk/asn1/der/boolean/der_length_boolean.c" + "libtomcrypt/src/pk/asn1/der/choice/der_decode_choice.c" + "libtomcrypt/src/pk/asn1/der/generalizedtime/der_decode_generalizedtime.c" + "libtomcrypt/src/pk/asn1/der/generalizedtime/der_encode_generalizedtime.c" + "libtomcrypt/src/pk/asn1/der/generalizedtime/der_length_generalizedtime.c" + "libtomcrypt/src/pk/asn1/der/ia5/der_decode_ia5_string.c" + "libtomcrypt/src/pk/asn1/der/ia5/der_encode_ia5_string.c" + "libtomcrypt/src/pk/asn1/der/ia5/der_length_ia5_string.c" + "libtomcrypt/src/pk/asn1/der/integer/der_decode_integer.c" + "libtomcrypt/src/pk/asn1/der/integer/der_encode_integer.c" + "libtomcrypt/src/pk/asn1/der/integer/der_length_integer.c" + "libtomcrypt/src/pk/asn1/der/object_identifier/der_decode_object_identifier.c" + "libtomcrypt/src/pk/asn1/der/object_identifier/der_encode_object_identifier.c" + "libtomcrypt/src/pk/asn1/der/object_identifier/der_length_object_identifier.c" + "libtomcrypt/src/pk/asn1/der/octet/der_decode_octet_string.c" + "libtomcrypt/src/pk/asn1/der/octet/der_encode_octet_string.c" + "libtomcrypt/src/pk/asn1/der/octet/der_length_octet_string.c" + "libtomcrypt/src/pk/asn1/der/printable_string/der_decode_printable_string.c" + "libtomcrypt/src/pk/asn1/der/printable_string/der_encode_printable_string.c" + "libtomcrypt/src/pk/asn1/der/printable_string/der_length_printable_string.c" + "libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_ex.c" + "libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_flexi.c" + "libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_multi.c" + "libtomcrypt/src/pk/asn1/der/sequence/der_decode_subject_public_key_info.c" + "libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_ex.c" + "libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_multi.c" + "libtomcrypt/src/pk/asn1/der/sequence/der_encode_subject_public_key_info.c" + "libtomcrypt/src/pk/asn1/der/sequence/der_length_sequence.c" + "libtomcrypt/src/pk/asn1/der/sequence/der_sequence_free.c" + "libtomcrypt/src/pk/asn1/der/sequence/der_sequence_shrink.c" + "libtomcrypt/src/pk/asn1/der/set/der_encode_set.c" + "libtomcrypt/src/pk/asn1/der/set/der_encode_setof.c" + "libtomcrypt/src/pk/asn1/der/short_integer/der_decode_short_integer.c" + "libtomcrypt/src/pk/asn1/der/short_integer/der_encode_short_integer.c" + "libtomcrypt/src/pk/asn1/der/short_integer/der_length_short_integer.c" + "libtomcrypt/src/pk/asn1/der/teletex_string/der_decode_teletex_string.c" + "libtomcrypt/src/pk/asn1/der/teletex_string/der_length_teletex_string.c" + "libtomcrypt/src/pk/asn1/der/utctime/der_decode_utctime.c" + "libtomcrypt/src/pk/asn1/der/utctime/der_encode_utctime.c" + "libtomcrypt/src/pk/asn1/der/utctime/der_length_utctime.c" + "libtomcrypt/src/pk/asn1/der/utf8/der_decode_utf8_string.c" + "libtomcrypt/src/pk/asn1/der/utf8/der_encode_utf8_string.c" + "libtomcrypt/src/pk/asn1/der/utf8/der_length_utf8_string.c" + "libtomcrypt/src/pk/dh/dh.c" + "libtomcrypt/src/pk/dh/dh_check_pubkey.c" + "libtomcrypt/src/pk/dh/dh_export.c" + "libtomcrypt/src/pk/dh/dh_export_key.c" + "libtomcrypt/src/pk/dh/dh_free.c" + "libtomcrypt/src/pk/dh/dh_generate_key.c" + "libtomcrypt/src/pk/dh/dh_import.c" + "libtomcrypt/src/pk/dh/dh_set.c" + "libtomcrypt/src/pk/dh/dh_set_pg_dhparam.c" + "libtomcrypt/src/pk/dh/dh_shared_secret.c" + "libtomcrypt/src/pk/dsa/dsa_decrypt_key.c" + "libtomcrypt/src/pk/dsa/dsa_encrypt_key.c" + "libtomcrypt/src/pk/dsa/dsa_export.c" + "libtomcrypt/src/pk/dsa/dsa_free.c" + "libtomcrypt/src/pk/dsa/dsa_generate_key.c" + "libtomcrypt/src/pk/dsa/dsa_generate_pqg.c" + "libtomcrypt/src/pk/dsa/dsa_import.c" + "libtomcrypt/src/pk/dsa/dsa_make_key.c" + "libtomcrypt/src/pk/dsa/dsa_set.c" + "libtomcrypt/src/pk/dsa/dsa_set_pqg_dsaparam.c" + "libtomcrypt/src/pk/dsa/dsa_shared_secret.c" + "libtomcrypt/src/pk/dsa/dsa_sign_hash.c" + "libtomcrypt/src/pk/dsa/dsa_verify_hash.c" + "libtomcrypt/src/pk/dsa/dsa_verify_key.c" + "libtomcrypt/src/pk/ecc/ecc.c" + "libtomcrypt/src/pk/ecc/ecc_ansi_x963_export.c" + "libtomcrypt/src/pk/ecc/ecc_ansi_x963_import.c" + "libtomcrypt/src/pk/ecc/ecc_decrypt_key.c" + "libtomcrypt/src/pk/ecc/ecc_encrypt_key.c" + "libtomcrypt/src/pk/ecc/ecc_export.c" + "libtomcrypt/src/pk/ecc/ecc_free.c" + "libtomcrypt/src/pk/ecc/ecc_get_size.c" + "libtomcrypt/src/pk/ecc/ecc_import.c" + "libtomcrypt/src/pk/ecc/ecc_make_key.c" + "libtomcrypt/src/pk/ecc/ecc_shared_secret.c" + "libtomcrypt/src/pk/ecc/ecc_sign_hash.c" + "libtomcrypt/src/pk/ecc/ecc_sizes.c" + "libtomcrypt/src/pk/ecc/ecc_test.c" + "libtomcrypt/src/pk/ecc/ecc_verify_hash.c" + "libtomcrypt/src/pk/ecc/ltc_ecc_is_valid_idx.c" + "libtomcrypt/src/pk/ecc/ltc_ecc_map.c" + "libtomcrypt/src/pk/ecc/ltc_ecc_mul2add.c" + "libtomcrypt/src/pk/ecc/ltc_ecc_mulmod.c" + "libtomcrypt/src/pk/ecc/ltc_ecc_mulmod_timing.c" + "libtomcrypt/src/pk/ecc/ltc_ecc_points.c" + "libtomcrypt/src/pk/ecc/ltc_ecc_projective_add_point.c" + "libtomcrypt/src/pk/ecc/ltc_ecc_projective_dbl_point.c" + "libtomcrypt/src/pk/katja/katja_decrypt_key.c" + "libtomcrypt/src/pk/katja/katja_encrypt_key.c" + "libtomcrypt/src/pk/katja/katja_export.c" + "libtomcrypt/src/pk/katja/katja_exptmod.c" + "libtomcrypt/src/pk/katja/katja_free.c" + "libtomcrypt/src/pk/katja/katja_import.c" + "libtomcrypt/src/pk/katja/katja_make_key.c" + "libtomcrypt/src/pk/pkcs1/pkcs_1_i2osp.c" + "libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c" + "libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c" + "libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_encode.c" + "libtomcrypt/src/pk/pkcs1/pkcs_1_os2ip.c" + "libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c" + "libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c" + "libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_decode.c" + "libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_encode.c" + "libtomcrypt/src/pk/rsa/rsa_decrypt_key.c" + "libtomcrypt/src/pk/rsa/rsa_encrypt_key.c" + "libtomcrypt/src/pk/rsa/rsa_export.c" + "libtomcrypt/src/pk/rsa/rsa_exptmod.c" + "libtomcrypt/src/pk/rsa/rsa_free.c" + "libtomcrypt/src/pk/rsa/rsa_get_size.c" + "libtomcrypt/src/pk/rsa/rsa_import.c" + "libtomcrypt/src/pk/rsa/rsa_import_pkcs8.c" + "libtomcrypt/src/pk/rsa/rsa_import_x509.c" + "libtomcrypt/src/pk/rsa/rsa_make_key.c" + "libtomcrypt/src/pk/rsa/rsa_set.c" + "libtomcrypt/src/pk/rsa/rsa_sign_hash.c" + "libtomcrypt/src/pk/rsa/rsa_sign_saltlen_get.c" + "libtomcrypt/src/pk/rsa/rsa_verify_hash.c" + "libtomcrypt/src/prngs/chacha20.c" + "libtomcrypt/src/prngs/fortuna.c" + "libtomcrypt/src/prngs/rc4.c" + "libtomcrypt/src/prngs/rng_get_bytes.c" + "libtomcrypt/src/prngs/rng_make_prng.c" + "libtomcrypt/src/prngs/sober128.c" + "libtomcrypt/src/prngs/sprng.c" + "libtomcrypt/src/prngs/yarrow.c" + "libtomcrypt/src/stream/chacha/chacha_crypt.c" + "libtomcrypt/src/stream/chacha/chacha_done.c" + "libtomcrypt/src/stream/chacha/chacha_ivctr32.c" + "libtomcrypt/src/stream/chacha/chacha_ivctr64.c" + "libtomcrypt/src/stream/chacha/chacha_keystream.c" + "libtomcrypt/src/stream/chacha/chacha_setup.c" + "libtomcrypt/src/stream/chacha/chacha_test.c" + "libtomcrypt/src/stream/rc4/rc4_stream.c" + "libtomcrypt/src/stream/rc4/rc4_test.c" + "libtomcrypt/src/stream/sober128/sober128_stream.c" + "libtomcrypt/src/stream/sober128/sober128_test.c" + ) + + set(TOMCRYPT_HPP "libtomcrypt/src/headers/tomcrypt.h" + "libtomcrypt/src/headers/tomcrypt_argchk.h" + "libtomcrypt/src/headers/tomcrypt_cfg.h" + "libtomcrypt/src/headers/tomcrypt_cipher.h" + "libtomcrypt/src/headers/tomcrypt_custom.h" + "libtomcrypt/src/headers/tomcrypt_hash.h" + "libtomcrypt/src/headers/tomcrypt_mac.h" + "libtomcrypt/src/headers/tomcrypt_macros.h" + "libtomcrypt/src/headers/tomcrypt_math.h" + "libtomcrypt/src/headers/tomcrypt_misc.h" + "libtomcrypt/src/headers/tomcrypt_pk.h" + "libtomcrypt/src/headers/tomcrypt_pkcs.h" + "libtomcrypt/src/headers/tomcrypt_prng.h") + + source_group("" FILES ${TOMCRYPT_SRC} ${TOMCRYPT_HPP}) + + add_library("tomcrypt" STATIC ${TOMCRYPT_SRC} ${TOMCRYPT_HPP}) set_property(TARGET "tomcrypt" PROPERTY FOLDER "External Libraries") @@ -817,7 +435,7 @@ else() target_compile_definitions("tomcrypt" PRIVATE LTC_SOURCE) # Required since tommath is a dependency. - target_compile_definitions("tomcrypt" PRIVATE LTM_DESC) + target_compile_definitions("tomcrypt" PUBLIC LTM_DESC) # This was defined behind an always active block. target_compile_definitions("tomcrypt" PRIVATE LTC_DEVRANDOM) @@ -865,12 +483,7 @@ else() disable_project_warnings("tomcrypt") - add_dependencies("tomcrypt" "tommath") + target_link_libraries("tomcrypt" "tommath") - list(APPEND TOMCRYPT_INCLUDE_DIRS - "${TOMDIR}/src/headers" - "${SM_SRC_DIR}/libtommath" - ) - - target_include_directories("tomcrypt" PUBLIC ${TOMCRYPT_INCLUDE_DIRS}) + target_include_directories("tomcrypt" PUBLIC "libtomcrypt/src/headers") endif() diff --git a/extern/libtomcrypt b/extern/libtomcrypt new file mode 160000 index 0000000000..7e7eb695d5 --- /dev/null +++ b/extern/libtomcrypt @@ -0,0 +1 @@ +Subproject commit 7e7eb695d581782f04b24dc444cbfde86af59853 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1c851bbd32..c223c52c46 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -104,9 +104,6 @@ if(WITH_LTO) set_property(TARGET "${SM_EXE_NAME}" PROPERTY INTERPROCEDURAL_OPTIMIZATION ON) endif() -# Required for usage of tomcrypt and tommath. -target_compile_definitions("${SM_EXE_NAME}" PRIVATE LTM_DESC) - if(WITH_PORTABLE_TOMCRYPT) target_compile_definitions("${SM_EXE_NAME}" PRIVATE LTC_NO_ASM) endif() @@ -349,6 +346,7 @@ else() endif() if(WITH_SYSTEM_TOMCRYPT) + target_compile_definitions("${SM_EXE_NAME}" PRIVATE LTM_DESC) list(APPEND SMDATA_LINK_LIB ${TOMCRYPT_LIBRARY}) else() list(APPEND SMDATA_LINK_LIB "tomcrypt") @@ -583,10 +581,6 @@ else() endif() endif() -if(NOT WITH_SYSTEM_TOMCRYPT) - list(APPEND SM_INCLUDE_DIRS "${SM_SRC_DIR}/libtomcrypt/src/headers") -endif() - target_include_directories("${SM_EXE_NAME}" PUBLIC ${SM_INCLUDE_DIRS}) if(WIN32) diff --git a/src/libtomcrypt/.clang-format b/src/libtomcrypt/.clang-format deleted file mode 100644 index 686711f3f8..0000000000 --- a/src/libtomcrypt/.clang-format +++ /dev/null @@ -1,42 +0,0 @@ ---- -AccessModifierOffset: -2 -ConstructorInitializerIndentWidth: 4 -AlignEscapedNewlinesLeft: false -AlignTrailingComments: true -AllowAllParametersOfDeclarationOnNextLine: false -AllowShortIfStatementsOnASingleLine: false -AllowShortLoopsOnASingleLine: false -AlwaysBreakTemplateDeclarations: false -AlwaysBreakBeforeMultilineStrings: false -BreakBeforeBinaryOperators: false -BreakConstructorInitializersBeforeComma: false -BinPackParameters: true -ColumnLimit: 120 -ConstructorInitializerAllOnOneLineOrOnePerLine: true -DerivePointerBinding: true -ExperimentalAutoDetectBinPacking: false -IndentCaseLabels: true -MaxEmptyLinesToKeep: 1 -NamespaceIndentation: None -ObjCSpaceBeforeProtocolList: false -PenaltyBreakComment: 60 -PenaltyBreakString: 1000 -PenaltyBreakFirstLessLess: 120 -PenaltyExcessCharacter: 1000000 -PenaltyReturnTypeOnItsOwnLine: 200 -PointerBindsToType: false -SpacesBeforeTrailingComments: 1 -Cpp11BracedListStyle: false -Standard: Cpp03 -IndentWidth: 3 -TabWidth: 8 -UseTab: Never -BreakBeforeBraces: Linux -IndentFunctionDeclarationAfterType: false -SpacesInParentheses: false -SpaceInEmptyParentheses: false -SpacesInCStyleCastParentheses: false -SpaceAfterControlStatementKeyword: true -SpaceBeforeAssignmentOperators: true -... - diff --git a/src/libtomcrypt/.travis.yml b/src/libtomcrypt/.travis.yml deleted file mode 100644 index 2334b62552..0000000000 --- a/src/libtomcrypt/.travis.yml +++ /dev/null @@ -1,135 +0,0 @@ -dist: trusty -sudo: required - -language: c - -addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise-3.8 - packages: - - clang-3.8 - -install: - - sudo apt-get update -qq - - sudo apt-get install libtommath-dev - -before_script: - - gem install coveralls-lcov - - curl http://ftp.de.debian.org/debian/pool/main/l/lcov/lcov_1.11.orig.tar.gz | tar xz - - export PATH=$PATH:`pwd`/lcov-1.11/bin - - curl -s https://packagecloud.io/install/repositories/libtom/packages/script.deb.sh | sudo bash - - sudo apt-get install libtfm-dev=0.13-5 - -matrix: - fast_finish: true -branches: - only: - - master - - develop - - /^release\/.*$/ - -compiler: - - gcc - - clang -script: - - bash "${BUILDSCRIPT}" "${BUILDNAME}" "${BUILDOPTIONS}" "makefile V=1" "-DUSE_LTM -DLTM_DESC" "-ltommath" - - bash "${BUILDSCRIPT}" "${BUILDNAME}" "${BUILDOPTIONS}" "makefile.shared V=1" "-DUSE_TFM -DTFM_DESC" "-ltfm" -env: - - | - BUILDSCRIPT="check_source.sh" - BUILDNAME="CHECK_SOURCES" - BUILDOPTIONS=" " - - | - BUILDSCRIPT="scan_build.sh" - BUILDNAME="SCAN_BUILD" - BUILDOPTIONS=" " - - | - BUILDSCRIPT="coverage.sh" - BUILDNAME="COVERAGE" - BUILDOPTIONS=" " - - | - BUILDSCRIPT="run.sh" - BUILDNAME="STOCK" - BUILDOPTIONS=" " - - | - BUILDSCRIPT="run.sh" - BUILDNAME="EASY" - BUILDOPTIONS="-DLTC_EASY" - - | - BUILDSCRIPT="run.sh" - BUILDNAME="SMALL" - BUILDOPTIONS="-DLTC_SMALL_CODE" - - | - BUILDSCRIPT="run.sh" - BUILDNAME="NOTABLES" - BUILDOPTIONS="-DLTC_NO_TABLES" - - | - BUILDSCRIPT="run.sh" - BUILDNAME="SMALL+NOTABLES" - BUILDOPTIONS="-DLTC_SMALL_CODE -DLTC_NO_TABLES" - - | - BUILDSCRIPT="run.sh" - BUILDNAME="CLEANSTACK" - BUILDOPTIONS="-DLTC_CLEAN_STACK" - - | - BUILDSCRIPT="run.sh" - BUILDNAME="CLEANSTACK+SMALL" - BUILDOPTIONS="-DLTC_SMALL_CODE -DLTC_CLEAN_STACK" - - | - BUILDSCRIPT="run.sh" - BUILDNAME="CLEANSTACK+NOTABLES" - BUILDOPTIONS="-DLTC_NO_TABLES -DLTC_CLEAN_STACK" - - | - BUILDSCRIPT="run.sh" - BUILDNAME="CLEANSTACK+NOTABLES+SMALL" - BUILDOPTIONS="-DLTC_NO_TABLES -DLTC_CLEAN_STACK -DLTC_SMALL_CODE" - - | - BUILDSCRIPT="run.sh" - BUILDNAME="NO_FAST" - BUILDOPTIONS="-DLTC_NO_FAST" - - | - BUILDSCRIPT="run.sh" - BUILDNAME="NO_FAST+NOTABLES" - BUILDOPTIONS="-DLTC_NO_FAST -DLTC_NO_TABLES" - - | - BUILDSCRIPT="run.sh" - BUILDNAME="NO_ASM" - BUILDOPTIONS="-DLTC_NO_ASM" - - | - BUILDSCRIPT="run.sh" - BUILDNAME="NO_TIMING_RESISTANCE" - BUILDOPTIONS="-DLTC_NO_ECC_TIMING_RESISTANT -DLTC_NO_RSA_BLINDING" - - | - BUILDSCRIPT="run.sh" - BUILDNAME="CLEANSTACK+NOTABLES+SMALL+NO_ASM+NO_TIMING_RESISTANCE" - BUILDOPTIONS="-DLTC_CLEAN_STACK -DLTC_NO_TABLES -DLTC_SMALL_CODE -DLTC_NO_ECC_TIMING_RESISTANT -DLTC_NO_RSA_BLINDING" - - | - BUILDSCRIPT="run.sh" - BUILDNAME="PTHREAD" - BUILDOPTIONS="-DLTC_PTHREAD" - - | - BUILDSCRIPT="run.sh" - BUILDNAME="CLEANSTACK+NOTABLES+SMALL+NO_ASM+NO_TIMING_RESISTANCE+PTHREAD" - BUILDOPTIONS="-DLTC_CLEAN_STACK -DLTC_NO_TABLES -DLTC_SMALL_CODE -DLTC_NO_ECC_TIMING_RESISTANT -DLTC_NO_RSA_BLINDING -DLTC_PTHREAD" - - | - BUILDSCRIPT="testbuild.sh" - BUILDNAME="NOTEST" - BUILDOPTIONS="-DLTC_NO_TEST" - - | - BUILDSCRIPT="testbuild.sh" - BUILDNAME="NOFILE" - BUILDOPTIONS="-DLTC_NO_FILE" - -after_failure: - - cat test_std.txt - - cat test_err.txt - - cat tv.txt - -after_script: - - cat gcc_1.txt - - cat gcc_2.txt - -notifications: - irc: "chat.freenode.net#libtom-notifications" diff --git a/src/libtomcrypt/LICENSE b/src/libtomcrypt/LICENSE deleted file mode 100644 index c4afbc6b5b..0000000000 --- a/src/libtomcrypt/LICENSE +++ /dev/null @@ -1,29 +0,0 @@ -LibTomCrypt is licensed under DUAL licensing terms. - -Choose and use the license of your needs. - -[LICENSE #1] - -LibTomCrypt is public domain. As should all quality software be. - -Tom St Denis - -[/LICENSE #1] - -[LICENSE #2] - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - Version 2, December 2004 - - Copyright (C) 2004 Sam Hocevar - - Everyone is permitted to copy and distribute verbatim or modified - copies of this license document, and changing it is allowed as long - as the name is changed. - - DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. You just DO WHAT THE FUCK YOU WANT TO. - -[/LICENSE #2] diff --git a/src/libtomcrypt/README.md b/src/libtomcrypt/README.md deleted file mode 100644 index d8bf013144..0000000000 --- a/src/libtomcrypt/README.md +++ /dev/null @@ -1,173 +0,0 @@ -# libtomcrypt - -Previously the git repository contained `doc/crypt.pdf` for detailed documentation. -This was changed and the file is now only available from the tarball of the appropriate version -or from the page https://github.com/libtom/libtomcrypt/releases . - -## Project Status - -master: [![Build Status](https://api.travis-ci.org/libtom/libtomcrypt.png?branch=master)](https://travis-ci.org/libtom/libtomcrypt) [![Coverage Status](https://coveralls.io/repos/libtom/libtomcrypt/badge.png?branch=master)](https://coveralls.io/r/libtom/libtomcrypt) - -develop: [![Build Status](https://api.travis-ci.org/libtom/libtomcrypt.png?branch=develop)](https://travis-ci.org/libtom/libtomcrypt) [![Coverage Status](https://coveralls.io/repos/libtom/libtomcrypt/badge.png?branch=develop)](https://coveralls.io/r/libtom/libtomcrypt) - -[![Coverity Scan Build Status](https://scan.coverity.com/projects/487/badge.svg)](https://scan.coverity.com/projects/487) - -API/ABI changes: [check here](https://abi-laboratory.pro/tracker/timeline/libtomcrypt/) - -## Submitting patches - -Please branch off from develop if you want to submit a patch. - -Patch integration will be faster if tests and documentation are included. - -Please update the makefiles in a separate commit. To update them simply run the `updatemakes.sh` script. - -If you have something bigger to submit, feel free to contact us beforehand. -Then we can give you write access to this repo, so you can open your PR based on this repo -and we can easier follow the rebase-before-merge approach we're using (or even do the rebase ourself). - -### Reviews - -We're using Pull Request reviews to make sure that the code is in line with the existing code base. - -Please have a look [here](https://help.github.com/articles/approving-a-pull-request-with-required-reviews/) to get an idea of the approach. - -## Branches - -Please be aware, that all branches besides _master_ and _develop_ __can__ and __will be__ force-pushed, rebased and/or removed! - -If you want to rely on such an _unstable_ branch, create your own fork of this repository to make sure nothing breaks for you. - -## Configuration options - -By default the library builds its entire feature set (besides `katja`) in a (depending on your needs more or less) optimal way. - -There are numerous configuration options available if you want to trim down the functionality of the library. - -Please have a look at `src/headers/tomcrypt_custom.h` for all available configuration options. - -The following list is a small part of the available, but the most often required, configuration switches. - -| Flag | Behavior | -| ---- | -------- | -| `LTC_NO_TEST` | Remove all algorithm self-tests from the library | -| `LTC_NO_FILE` | Remove all API functions requiring a pre-defined `FILE` data-type (mostly useful for embedded targets) | -| `GMP_DESC` | enable [gmp](https://gmplib.org/) as MPI provider *\*1* | -| `LTM_DESC` | enable [libtommath](http://www.libtom.net/) as MPI provider *\*1* | -| `TFM_DESC` | enable [tomsfastmath](http://www.libtom.net/) as MPI provider *\*1* *\*2* | -| `USE_GMP` | use `gmp` as MPI provider when building the binaries *\*3* | -| `USE_LTM` | use `libtommath` as MPI provider when building the binaries *\*3* | -| `USE_TFM` | use `tomsfastmath` as MPI provider when building the binaries *\*3* | - -*\*1* It is possible to build the library against all MPI providers in parallel and choose at startup-time which math library should be used. - -*\*2* Please be aware that `tomsfastmath` has the limitation of a fixed max size of MPI's. - -*\*3* Only one is supported at the time & this is only required when building the binaries, not when building the library itself. - -## Building the library - -There are several `makefile`s provided. Please choose the one that fits best for you. - -| makefile | use-case | -| -------- | -------- | -| `makefile` | builds a static library (GNU Make required) | -| `makefile.shared` | builds a shared (and static) library (GNU Make required) | -| `makefile.unix` | for unusual UNIX platforms, or if you do not have GNU Make | -| `makefile.mingw` | for usage with the mingw compiler on MS Windows | -| `makefile.msvc` | for usage with the MSVC compiler on MS Windows | -| `libtomcrypt_VS2008.sln` | A VisualStudio 2008 project for MS Windows | - -### Make targets - -The `makefile`s provide several targets to build (VS project excluded). -The following list does not claim to be complete resp. to be available across all `makefile` variants. - -| target | application | -| ------ | ----------- | -| *empty target*/none given | c.f. `library` -| `library` | builds only the library | -| `hashsum` | builds the `hashsum` binary, similar to [`shasum`](https://linux.die.net/man/1/shasum), but with support for all hash-algorithms included in the library *\*4* | -| `ltcrypt` | builds the `ltcrypt` binary, implementing something similar to [`crypt`](https://linux.die.net/man/3/crypt) *\*4* | -| `sizes` | builds the `sizes` binary, printing all internal data sizes on invocation *\*4* | -| `constants` | builds the `constants` binary, printing all internal constants on invocation *\*4* | -| `openssl-enc` | builds the `openssl-enc` binary, which is more or less compatible to [`openssl enc`](https://linux.die.net/man/1/enc) *\*4* *\*5* | -| `test` | builds the `test` binary, which runs all algorithm self-tests + some extended tests *\*4* | -| `timing` | builds the `timing` binary, which can be used to measure timings for algorithms and modes *\*4* | -| `bins` | builds `hashsum` *\*4* | -| `all_test` | builds `test`, `hashsum`, `ltcrypt`, `small`, `tv_gen`, `sizes` & `constants` *\*4* | -| `docs` | builds the developer documentation `doc/crypt.pdf` | -| `install` | installs the `library` and header files *\*7* *\*8* | -| `install_bins` | installs the binaries created by the `bins` target *\*7* *\*8* | -| `install_docs` | installs the documentation created by the `docs` target *\*7* *\*8* | -| `install_test` | installs the test-app created by the `test` target *\*7* *\*8* | -| `install_all` | installs everything (i.e. `library`, `bins`, `docs` and `test`) *\*8* | -| `uninstall` | uninstalls the `library` and header files | - -*\*4* also builds `library` - -*\*5* broken build in some configurations, therefore not built by default - -*\*7* also builds the necessary artifact(s) before installing it - -*\*8* also have a look at the 'Installation' section of this file - -### Examples - -You want to build the library as static library - - make - -You want to build the library as shared library - - make -f makefile.shared - -You have `libtommath` installed on your system and want to build a static library and the `test` binary to run the self-tests. - - make CFLAGS="-DUSE_LTM -DLTM_DESC" EXTRALIBS="-ltommath" test - -You have `tomsfastmath` installed on your system and want to build a shared library and all binaries - - make -f makefile.shared CFLAGS="-DUSE_TFM -DTFM_DESC" EXTRALIBS="-ltfm" all demos - -You have `gmp`, `libtommath` and `tomsfastmath` installed on your system and want to build a static library and the `timing` binary to measure timings against `gmp`. - - make CFLAGS="-DUSE_GMP -DGMP_DESC -DLTM_DESC -DTFM_DESC" EXTRALIBS="-lgmp" timing - -If you have `libtommath` in a non-standard location: - - make CFLAGS="-DUSE_LTM -DLTM_DESC -I/opt/devel/ltm" EXTRALIBS="/opt/devel/ltm/libtommath.a" all - -## Installation - -There exist several _install_ make-targets which are described in the table above. - -These targets support the standard ways (c.f. [[GNU]], [[FreeBSD]]) -to modify the installation path via the following set of variables: - - DESTDIR - PREFIX - LIBPATH - INCPATH - DATAPATH - BINPATH - -The entire set of the variables is only supported in `makefile`, `makefile.shared` and `makefile.unix`. - -In case you have to use one of the other makefiles, check in the file which variables are supported. - -### Examples - -You want to install the static library to the default paths - - make install - -You want to install the shared library to a special path and use it from this path - - make -f makefile.shared PREFIX=/opt/special/path - -Have a look at the developer documentation, [[GNU]] or [[FreeBSD]] to get a detailed explanation of all the variables. - -[GNU]: https://www.gnu.org/prep/standards/html_node/DESTDIR.html - -[FreeBSD]: https://www.freebsd.org/doc/en/books/porters-handbook/porting-prefix.html diff --git a/src/libtomcrypt/build.sh b/src/libtomcrypt/build.sh deleted file mode 100644 index 4a9102011c..0000000000 --- a/src/libtomcrypt/build.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash -echo "$1 ($2, $3)..." - -make clean 1>/dev/null 2>/dev/null - -echo -n "building..." - -if [ -f /proc/cpuinfo ] -then - MAKE_JOBS=$(( ($(cat /proc/cpuinfo | grep -E '^processor[[:space:]]*:' | tail -n -1 | cut -d':' -f2) + 1) * 2 + 1 )) -else - MAKE_JOBS=8 -fi - -CFLAGS="$2 $CFLAGS $4" EXTRALIBS="$5" make -j$MAKE_JOBS -f $3 all_test 1>gcc_1.txt 2>gcc_2.txt -mret=$? -cnt=$(wc -l < gcc_2.txt) -# ignore 1 line since ar prints to stderr instead of stdout and ar is called for -# $(LIBNAME) -if [[ $mret -ne 0 ]] || [[ $cnt -gt 1 ]]; then - echo "build $1 failed! printing gcc_2.txt now for convenience" - cat gcc_2.txt - exit 1 -fi - -echo -n "testing..." - -if [ -a test ] && [ -f test ] && [ -x test ]; then - ((./test >test_std.txt 2>test_err.txt && ./tv_gen > tv.txt) && echo "$1 test passed." && echo "y" > testok.txt) || (echo "$1 test failed, look at test_err.txt or tv.txt" && exit 1) - if find *_tv.txt -type f 1>/dev/null 2>/dev/null ; then - for f in *_tv.txt; do - # check for lines starting with '<' ($f might be a subset of notes/$f) - difftroubles=$(diff -i -w -B $f notes/$f | grep '^<') - if [ -n "$difftroubles" ]; then - echo "FAILURE: $f" - diff -i -w -B $f notes/$f - echo "tv_gen $f failed" && rm -f testok.txt && exit 1 - else - true - fi - done - fi -fi - - -if [ -a testok.txt ] && [ -f testok.txt ]; then - if [ "$LTC_COVERAGE" != "" ]; then - ./coverage_more.sh > test_coverage_more.txt || exit 1 - lcov_opts="--capture --no-external --directory src -q" - lcov_out=$(echo coverage_$1_$2_$3 | tr ' -=+' '_')".info" - lcov $lcov_opts --output-file $lcov_out - fi - exit 0 -fi -exit 1 - -# ref: HEAD -> master, tag: v1.18.2 -# git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 -# commit time: 2018-07-01 22:49:01 +0200 diff --git a/src/libtomcrypt/changes b/src/libtomcrypt/changes deleted file mode 100644 index dc56d08d85..0000000000 --- a/src/libtomcrypt/changes +++ /dev/null @@ -1,1648 +0,0 @@ -July 1st, 2018 -v1.18.2 - -- Fix Side Channel Based ECDSA Key Extraction (CVE-2018-12437) (PR #408) - -- Fix potential stack overflow when DER flexi-decoding (CVE-2018-0739) (PR #373) - -- Fix two-key 3DES (PR #390) - -- Fix accelerated CTR mode (PR #359) - -- Fix Fortuna PRNG (PR #363) - -- Fix compilation on platforms where cc doesn't point to gcc (PR #382) - -- Fix using the wrong environment variable LT instead of LIBTOOL (PR #392) - -- Fix build on platforms where the compiler provides __WCHAR_MAX__ but wchar.h is not available (PR #390) - -- Fix & re-factor crypt_list_all_sizes() and crypt_list_all_constants() (PR #414) - -- Minor fixes (PR's #350 #351 #375 #377 #378 #379) - -January 22nd, 2018 -v1.18.1 - -- Fix wrong SHA3 blocksizes, thanks to Claus Fischer for reporting this via Mail (PR #329) - -- Fix NULL-pointer dereference in `ccm_memory()` with LTC_CLEAN_STACK enabled (PR #327) - -- Fix `ccm_process()` being unable to process input buffers longer than 256 bytes (PR #326) - -- Fix the `register_all_{ciphers,hashes,prngs}()` return values (PR #316) - -- Fix some typos, warnings and duplicate prototypes in code & doc (PR's #310 #320 #321 #335) - -- Fix possible undefined behavior with LTC_PTHREAD (PR #337) - -- Fix some DER bugs (PR #339) - -- Fix CTR-mode when accelerator is used (OP-TEE/optee_os #2086) - -- Fix installation procedure (Issue #340) - -October 10th, 2017 -v1.18.0 - -- Bugfix multi2 - -- Bugfix Noekeon - -- Bugfix XTEA - -- Bugfix rng_get_bytes() on windows where we could read from c:\dev\random - -- Fixed the Bleichbacher Signature attack in PKCS#1 v1.5 EMSA, thanks to Alex Dent - -- Fixed a potential cache-based timing attack in CCM, thanks to Sebastian Verschoor - -- Fix GCM counter reuse and potential timing attacks in EAX, OCB and OCBv3, - thanks to Raphaël Jamet - -- Implement hardened RSA operations when CRT is used - -- Enabled timing resistant calculations of ECC and RSA operations per default - -- Applied some patches from the OLPC project regarding PKCS#1 and preventing - the hash algorithms from overflowing - -- Larry Bugbee contributed the necessary stuff to more easily call libtomcrypt - from a dynamic language like Python, as shown in his pyTomCrypt - -- Nikos Mavrogiannopoulos contributed RSA blinding and export of RSA and DSA keys - in OpenSSL/GnuTLS compatible format - -- Patrick Pelletier contributed a smart volley of patches - -- Christopher Brown contributed some patches and additions to ASN.1/DER - -- Pascal Brand of STMicroelectronics contributed patches regarding CCM, the - XTS mode and RSA private key operations with keys without CRT parameters - -- RC2 now also works with smaller key-sizes - -- Improved/extended several tests & demos - -- Hardened DSA and RSA by testing (through Karel's perl-CryptX) - against Google's "Wycheproof" and Kudelski Security's "CDF" - -- Fixed all compiler warnings - -- Fixed several build issues on FreeBSD, NetBSD, Linux x32 ABI, HP-UX/IA64, - Mac OS X, Windows (32&64bit, Cygwin, MingW & MSVC) ... - -- Re-worked all makefiles - -- Re-worked most PRNG's - -- The code is now verified by a linter, thanks to Francois Perrad - -- Documentation (crypt.pdf) is now built deterministically, thanks to Michael Stapelberg - -- Add Adler32 and CRC32 checksum algorithms - -- Add Base64-URL de-/encoding and some strict variants - -- Add Blake2b & Blake2s (hash & mac), thanks to Kelvin Sherlock - -- Add Camellia block cipher - -- Add ChaCha (stream cipher), Poly1305 (mac), ChaCha20Poly1305 (encauth) - -- Add constant-time mem-compare mem_neq() - -- Add DER GeneralizedTime de-/encoding - -- Add DSA and ECC key generation FIPS-186-4 compliance - -- Add HKDF, thanks to RyanC (especially for also providing documentation :-) ) - -- Add OCBv3 - -- Add PKCS#1 v1.5 mode of SSL3.0 - -- Add PKCS#1 testvectors from RSA - -- Add PKCS#8 & X.509 import for RSA keys - -- Add stream cipher API - -- Add SHA3 & SHAKE - -- Add SHA512/256 and SHA512/224 - -- Add Triple-DES 2-key mode, thanks to Paul Howarth - -- Brought back Diffie-Hellman - -May 12th, 2007 -v1.17 -- Cryptography Research Inc. contributed another small volley of patches, one to fix __WCHAR_DEFINED__ for BSD platforms, - another to silence MSVC warnings. - -- Added LTC_XCBC_PURE to XCBC mode which lets you use it in three-key mode. - -- [CRI] Added libtomcrypt.dsp for Visual C++ users. - -- [CRI] Added more functions for manipulating the ECC fixed point cache (including saving and loading) - -- [CRI] Modified ecc_make_key() to always produce keys smaller than base point order, for standards-compliance - -- Elliptic Semiconductor contributed XTS chaining mode to the cipher suite (subsequently optimized it) - -- Fixed xcbc_init() keylen when using single key mode. - -- Bruce Fortune pointed out a typo in the hmac_process() description in the manual. Fixed. - -- Added variable width counter support to CTR mode - -- Fixed CMAC (aka OMAC) when using 64-bit block ciphers and LTC_FAST ... my bad. - -- Fixed bug in ecc_is_valid() that would basically always return true - -- renamed a lot of macros to add the LTC_ prefix [e.g. RIJNDAEL => LTC_RIJNDAEL] - -December 16th, 2006 -v1.16 -- Brian Gladman pointed out that a recent change to GCM broke how the IV was handled. Currently the code complies against his test vectors - so the code should be considered frozen now. - -- Trevor from Cryptography Research Inc. submitted patches to convert the ECC code to be generic allowing curve parameters to be submitted - at runtime. - -- Fixed various doxygen comments - -- Added UTF8 support to the ASN1 code - -- Fixed STOREXXH macros for x86 platforms (Fix found at Elliptic Inc.) - -- Added makefile.unix which is BSD compatible, you have to manually tweak it since well I don't use it normally - -- removed a few lingering memcpy's - -- Fixed memory free errors in ecc_sign_hash() that can arise if the mp_init_multi() fails - -- Fixed incorrect return value in pkcs_1_pss_decode() which would correctly set res to 0 (indicating an incorrect signature) but - would return CRYPT_OK to the caller - -- ltc_ecc_mulmod() could leak memory if mp_init(&mu) failed, fixed. Would you believe that ltc_ecc_mulmod_timing() had the same - bug? Also fixed. :-) - -- Added Shamir's trick to the ECC side (defined as LTC_ECC_SHAMIR, enabled by default), gets ~1.34x to ~1.40x faster ECC verifications - -- Added Brian's vector #46 to the GCM code. It catches the ctr counter error from v1.15. Originally I was going to add all of his vectors, - but they're not as easy to parse and I got a lot of other things to do. Regression! - -- Various other small fixes to the ECC code to clean up error handling (I think most of that was from the move in 1.06 to the plugins) - All of the errors were in cleaning up from heap failures. So they were not likely to be triggered in normal usage - Made similar fixes to the RSA and DSA code (my bad) - -- Cryptography Research Inc. contributed a bunch of fixes to silence warnings (with MSVC) w.r.t. assigned data to unsigned char types. - -- Martin Marko suggested some fixes to make the RNG build with WinCE. - -- Updates to the manual for print (some fixes thanks to Martin Marko) - - -November 17th, 2006 -v1.15 -- Andreas Lange found that if sha256_init DID fail in fortuna it wouldn't clean up the state correctly. Thanks. - Fortunately sha256_init cannot fail (as of v1.14) :-) - -- Andreas Lange contributed RMD-256 and RMD-320 code. - -- Removed mutex locks from fortuna_import as they create a deadlock and aren't required anyways [Avi Zelmanovich] - -- Added LTC_NO_PROTOTYPES to avoid prototyping functions like memset/memcpy. Required for fans of GCC 3.3.x - -- David Eder caught a off by one overrun bug in pmac_done() which can be exploited if your output tag buffer is - smaller than the block size of the cipher, e.g. if you have a 4-byte buffer and you tell pmac_done that you want - a 4-byte TAG it will store 4 bytes but return an outlen of 5. - -- Added signatures to the ECC and RSA benchmarks - -- Added LTC_PROFILE to run the PK tests only once in the timing demo (so you can capture events properly) - -- Andreas contributed PKCS #1 v1.5 code that merged cleanly with the existing PKCS code. w00t. - (update: I had to fix it to include the digestInfo and what not. Bad Andreas, bad! hehehe) - -- Fixed a signed variable error in gcm_process() (hard to trigger bug fortunately) - -- Removed all memcmp/memset/memcpy from the source (replaced with X macros) - -- Renamed macros HMAC/OMAC/PMAC to have a LTC_ prefix. If you pass these on the command line please update your makefiles - -- Added XCBC-MAC support [RFC 3566] - -- fixed LOAD32H and LOAD64H to stop putting out that darn warning :-) - -- Added the Korean SEED block cipher [RFC 4269] - -- Added LTC_VALGRIND define which makes SOBER-128 and RC4 a pure PRNG (and not a stream cipher). Useful if you use - Valgrind to debug your code (reported by Andreas Lange) - -- Made SOBER-128 more portable by removing the ASCII key in the test function (my bad, sorry). - -- Martin Mocko pointed out that if you have no PRNGs defined the lib won't build. Fixed, also fixed for if you have no - hashes defined. - -- Sped up F8 mode with LTC_FAST - -- Made CTR mode RFC 3686 compliant (increment counter first), to enable, OR the value LTC_CTR_RFC3686 to the "mode" - parameter you pass to ctr_start(), otherwise it will be LTC compliant (e.g. encrypt then increment) - -- Added ctr_test() to test CTR mode against RFC 3686 - -- Added crypt_fsa() ... O_o - -- Fixed LTC_ECC_TIMING_RESISTANT so it once again builds properly (pt add/dbl are through the plugin now) - -- Added ANSI X9.63 (sec 4.3.6) import/export of public keys (cannot export to compressed formats but will import - hybrid compressed) - -- Added SECP curves for 112, 128, and 160 bits (only the 'r1' curves) - -- Added 3GPP-F9 MAC (thanks to Greg Rose for the test vectors) - -- Added the KASUMI block cipher - -- Added F9/XCBC/OMAC callbacks to the cipher plugin - -- Added RSA PKCS #1 v1.5 signature/encrypt tests to rsa_test.c - -- Fix to yarrow_test() to not call yarrow_done() which is invalid in that context (thanks Valgrind) - -- Christophe Devine pointed out that Anubis would fail on various 64-bit UNIX boxes when "x>>24" was used as an index, we needed - to mask it with 0xFF. Thanks. Fixed. - -August 0x1E, 0x07D6 -v1.14 -- Renamed the chaining mode macros from XXX to LTC_XXX_MODE. Should help avoid polluting the macro name space. - -- clean up of SHA-256 - -- Chris Colman pointed out that der_decode_sequence_* allows LTC_ASN1_SETOF to accept SEQUENCEs and vice versa. - Decoder [non-flexi decoder that is] is more strict now and requires a match. - -- Steffen Jaeckel pointed out a typo in the user manual (re: rsa_exptmod). Fixed. This disproves the notion that - nobody reads it. :-) - -- Made GCM a bit more portable w.r.t. handling the CTR IV (e.g. & with 255) - -- Add LTC_VERBOSE if you really want to see what test is doing :-) - -- Added SSE2 support to GCM [use GCM_TABLES_SSE2 to enable], shaves 2 cycles per byte on Opteron processors - Shaved 4 cycles on a Prescott (Intel P4) - Requires you align your gcm_state on a 16 byte boundary, see gcm_memory() for more info - -- Added missing prototype for f8_test_mode() - -- two fixes to CCM for corner cases [L+noncelen > 15] and fixing the CTR pad to encrypt the CBC-MAC tag - -- Franz Glasner pointed out the ARGTYPE=4 is not actually valid. Fixed. - -- Fixed bug in f8_start() if your key < saltkey unspecified behaviour occurs. :-( - -- Documented F8 mode. Yeah, because you read the manual. - -- Minor updates to the technotes. - - -June 17th, 2006 -v1.13 -- Fixed to fortuna_start() to clean up state if an error occurs. Not really useful at this stage (sha256 can't fail) but useful - if I ever make fortuna pluggable - -- Mike Marin submitted a whole bunch of patches for fixing up the libs on traditional UNIX platforms. Go AIX! Thanks! - -- One of bugs found in the multi demo highlights that at least with gcc you need to pass integers with a UL prefix to ensure - they're unsigned long - -- Updated the FP ECC code to use affine points. It's teh fast. - -- Made it so many functions which return CRYPT_BUFFER_OVERFLOW now also indicate the required buffer size, note that not all functions - do this (most do though). - -- Added F8 chaining mode. It's super neato. - -May 29th, 2006 -v1.12 -- Fixed OID encoder/decoder/length to properly handle the first two parts of an OID, matches 2002 X.690 now. - -- [Wesley Shields] Allows both GMP/LTM and TFM to be defined now. - -- [Wesley Shields] GMP pluggin is cleaner now and doesn't use deprecated symbols. Yipee - -- Added count_lsb_bits to get the number of leading LSB zero bits there are. - -- Fixed a bug in the INTEGER encoders for values of -(256**k)/2 - -- Added BOOLEAN type to ASN.1 thingy-ma-do-hicky - -- Testprof doesn't strictly require GMP ... oops [Nils Durner] - -- Added LTC_CALL and LTC_EXPORT macros in tomcrypt_cfg.h to support various calling and linker conventions - (Thanks to John Kirk from Demonware) - -- In what has to be the best thing since sliced bread I bring you MECC_FP which is the fixed point - ECC point multiplier. It's fast, it's sexy and what's more it's hella fast [did I mention it's fast?] - You can tune it somewhat with FP_LUT (default to 8) for look-up width. - Read section 8.2 of the manual for more info. - It is disabled by default, you'll have to build LTC with it defined to get it. - -- Fixed bug in ecc_test.c (from testprof) to include the 521 [not 512] bit curve. :-) - -April 4th, 2006 -v1.11 -- Removed printf's from lrw_test ... whoops - -- lrw_process now checks the return of the cipher ecb encrypt/decrypt calls - -- lrw_start was not using num_rounds ... - -- Adam Miller reported a bug in the flexi decoder with elements past the end of a sequence. Fixed. - -- Bruce Guenter suggested I use --tag=CC for libtool builds where the compiler may think it's C++. (I applied this to LTM and TFM) - -- Optimized the ECC for TFM a bit by removing the useless "if" statements (most TFM functions don't return error codes) - Actually shaved a good chunk of time off and made the code smaller. By default with TFM the stock LTC point add/dbl functions - will be totally omitted (ECC-256 make key times on a Prescott for old vs. new are 11.03M vs. 9.59M cycles) - -- added missing CVS tags to ltc_ecc_mulmod.c - -- corrected typo in tomcrypt_cfg.h about what the file has been called - -- corrected my address in the user manual. A "bit" out of date. - -- added lrw_gen to tv_gen - -- added GMP plugin, only tested on a AMD64 and x86_32 Gentoo Linux box so be aware - -- made testme.sh runs diff case insensitivityly [whatever...] cuz GMP outputs lowercase satan text - -- added LDFLAGS to the makefile to allow cross porting linking options - -- added lrw_test() to the header file ... whoops - -- changed libtomcrypt.org to libtomcrypt.com .... mumble mumble - -- Updates to detect __STRICT_ANSI__ which is defined in --std=c99 modes (note -ansi is not supported as it lacks long long) so you can - build LTC out of the box with c99 (note: it'll be slower as there is no asm in this case) - -- Updated pelican.c and aes_tab.c to undef tables not-required. The tables are static so both AES and Pelican MAC would have copies. Save a few KB in the final binary. - -- Added LTC_NO_FAST to the makefile.icc to compensate for the fact ICC v9 can't handle it (Pelican MAC fails for instance) - -February 11th, 2006 -v1.10 -- Free ecb/cbc/ctr/lrw structures in timing code by calling the "done" function - -- fixed bug in lrw_process() which would always use the slow update ... - -- vastly sped up gcm_gf_mult() when LTC_FAST is defined. This speeds up LRW and GCM state creation, useful for servers with GCM - -- Removed NLS since there are some attacks against it. - -- fixed memory leak in rsa_import reported by John Kuhns - ++ re-released as the rsa fix was incorrect (bad John bad ... hehehe) and I missed some NULLs in the static descriptor entry for ciphers - -January 26th, 2006 -v1.09 -- Added missing doxygen comments to some of the ASN.1 routines - -- Added "easy button" define LTC_EASY and LTC will build with a subset of all the algos. Reduces build times for typical - configurations. Tunable [see tomcrypt_custom.h] - -- Added some error detection to reg_algs() of the testprof.a library to detect when the PRNG is not setup correctly (took me 10 mins to figure out, PITA!) - -- Similar fixes to timing demo (MD5 not defined when EASY is defined) - -- Added the NLS enc+mac stream cipher from QUALCOMM, disabled for this release, waiting on test vectors - -- Finally added an auto-update script for the makefiles. So when I add new files/dirs it can automatically fix up the makefiles [all four of them...] - -- Added LRW to the list of cipher modes supported - -- cleaned up ciphers definitions to remove cbc/cfb/ofb/ctr/etc from the namespace when not used. - -November 24th, 2005 -v1.08 -- Added SET and SET OF support to the ASN.1 side - -- Fixed up X macros, added QSORT to the mix [thanks SET/SETOF] - -- Added XMEMCMP to the list of X macros - -- In der_decode_sequence() the SHORT_INTEGER type was not being handled correctly [oddly enough it worked just enough to make RSA work ... go figure!] - -- Fixed bug in math descriptors where if you hadn't defined MECC (ECC support) you would get linker errors - -- Added RSA accelerators to the math descriptors to make it possible to not include the stock routines if you supply your own. - -- dsa_decrypt_key() was erroneously dependent on MECC not MDSA ... whoops - -- Moved DSA size limits to tomcrypt_pk.h so they're defined with LTC_NO_PK+MDSA - -- cleaned up tomcrypt_custom.h to make customizable PK easier (and also cleaned up the error traps so they're correctly reported) - -November 18th, 2005 -v1.07 -- Craig Schlenter pointed out the "encrypt" demo doesn't call ctr_start() correctly. That's because as of a few releases ago - I added support to set the mode of the counter at init time - -- Fixed some "testprof" make issues - -- Added RSA keygen to the math descriptors - -- Fixed install_test target ... oops - -- made the "ranlib" program renamable useful for cross-compiling - -- Made the cipher accelerators return error codes. :-) - -- Made CCM accept a pre-scheduled key to speed it up if you use the same key for multiple packets - -- Added "Katja" public key crypto. It's based on the recent N = p^2q work by Katja. I added OAEP padding - to it. Note this code has been disabled not because it doesn't work but because it hasn't been thoroughly - analyzed. It does carry some advantages over RSA (slightly smaller public key, faster decrypt) but also - some annoying "setup" issues like the primes are smaller which makes ECM factoring more plausible. - -- Made makefile accept a NODOCS flag to disable the requirement of tetex to install LTC for you no tetex people... all 3 of ya :-) - -- Cleaned up rsa_export() since "zero" was handled with a SHORT_INTEGER - -- Cleaned up the LIBTEST_S definitions in both GNU makefiles. A few minor touchups as well. - -- Made the cipher ecb encrypt/decrypt return an int as well, changed ALL dependent code to check for this. - -- der_decode_choice() would fail to mark a NULL as "used" when decoding. Fixed - -- ecc_decrypt_key() now uses find_hash_oid() to clean up the code ;-) - -- Added mp_neg() to the math descriptors. - -- Swapped arguments for the pkcs_1_mgf1() function so the hash_idx is the first param (to be more consistent) - -- Made the math descriptors buildable when RSA has been undefined - -- ECC timing demo now capable of detecting which curves have been defined - -- Refactored the ECC code so it's easier to maintain. (note: the form of this code hasn't really changed since I first added ECC ... :-/) - -- Updated the documentation w.r.t. ECC and the accelerators to keep it current - -- Fixed bug in ltc_init_multi() which would fail to free all allocated memory on error. - -- Fixed bug in ecc_decrypt_key() which could possibly lead to overflows (if MAXBLOCKSIZE > ECC_BUF_SIZE and you have a hash that emits MAXBLOCKSIZE bytes) - -- Added encrypt/decrypt to the DSA side (basically DH with DSA parameters) - -- Updated makefiles to remove references to the old DH object files and the ecc_sys.o crap ... clean code ahead! - -- ecc_import() now checks if the point it reads in lies on the curve (to prevent degenerative points from being used) - -- ECC code now ALWAYS uses the accelerator interface. This allows people who use the accelerators to not have the stock - ECC point add/dbl/mul code linked in. Yeah space savings! Rah Rah Rah. - -- Added LTC_MUTEX_* support to Yarrow and Fortuna allowing you to use respective prng_state as a global PRNG state [e.g. thread-safe] if you define one of the LTC_* defines at - build time (e.g. LTC_PTHREAD == pthreads) - -- Added PPC32 support to the rotate macros (tested on an IBM PPC 405) and LTC_FAST macros (it aint fast but it's faster than stock) - -- Added ltc_mp checks in all *_make_key() and *_import() which will help catch newbs who don't register their bignum first :-) - -- the UTCTIME type was missing from der_length_sequence() [oops, oh like you've never done that] - -- the main makefile allows you to rename the make command [e.g. MAKE=gmake gmake install] so you can build LTC on platforms where the default make command sucks [e.g. BSD] - -- Added DER flexi decoder which allows the decoding of arbitrary DER encoded packets without knowing - their structure in advance (thanks to MSVC for finding 3 bugs in it just prior to release! ... don't ask) - -August 1st, 2005 -v1.06 -- Fixed rand_prime() to accept negative inputs as a signal for BBS primes. [Fredrik Olsson] - -- Added fourth ARGCHK type which outputs to stderr and continues. Useful if you trap sigsegv. [Valient Gough] - -- Removed the DH code from the tree - -- Made the ECC code fully public (you can access ecc_mulmod directly now) useful for debuging - -- Added ecc test to tv_gen - -- Added hmac callback to hash descriptors. - -- Fixed two doxy comment errors in the UTCTIME functions - -- rsa_import() can now read OpenSSL format DER public keys as well as the PKCS #1 RSAPublicKey format. - Note that rsa_export() **ONLY** writes PKCS #1 formats - -- Changed MIN/MAX to only define if not already present. -- Kirk J from Demonware ... - -- Ported tv_gen to new framework (and yes, I made ecc vectors BEFORE changing the API and YES they match now :-)) - -- ported testing scripts to support pluggable math. yipee! - -- Wrote a TFM descriptor ... yipee - -- Cleaned up LTC_FAST in CBC mode a bit - -- Merged in patches from Michael Brown for the sparc/sparc64 targets - -- Added find_hash_oid() to search for a hash by its OID - -- Cleaned up a few stray CLEAN_STACKs that should have been LTC_CLEAN_STACK - -- Added timing resistant ECC, enable by defining LTC_ECC_TIMING_RESISTANT then use ECC API as normal - -- Updated the ECC documentation as it was a bit out of date - -June 27th, 2005 -v1.05 - -- Added Technote #6 which covers the current PK compliance. - -- Fixed buffer overflow in OAEP decoder - -- Added CHOICE to the list of ASN.1 types - -- Added UTCTIME to the list of ASN.1 types - -- Added MUTEX locks around descriptor table functions [but not on the functions that are dependent on them] - All functions call *_is_valid() before using a descriptor index which means the respective table must be unlocked before - it can be accessed. However, during the operation [e.g. CCM] if the descriptor has been altered the results will be - undefined. - -- Minor updates to the manual to reflect recent changes - -- Added a catch to for an error that should never come up in rsa_exptmod(). Just being thorough. - -June 15th, 2005 -v1.04 - -- Fixed off by one [bit] error in dsa_make_key() it was too high by one bit [not a security problem just inconsistent] - -- ECC-224 curve was wrong [it was an ok curve just not NIST, so no security flaw just interoperability]. - -- Removed point compression since it slows down ECC ops to save a measly couple bytes. - This makes the ecc export format incompatible with 1.03 [it shouldn't change in the future] - -- Removed ECC-160 from timing and added the other curves - -June 9th, 2005 -v1.03 - -- Users may want to note that on a P4/GCC3.4 platform "-fno-regmove" greatly accelerates the ciphers/hashes. - -------------------------------------------------------------------------------------------------------------- - -- Made it install the testing library in the icc/static makefiles - -- Found bug in ccm_memory.c which would fail to compile when LTC_CLEAN_STACK was enabled - -- Simon Johnson proposed I do a fully automated test suite. Hence "testme.sh" was born - -- Added LTC_NO_TEST which forces test vectors off (regardless of what tomcrypt_custom.h has) - -- Added LTC_NO_TABLES which disables large tables (where possible, regardless of what tomcrypt_custom.h has) - -- New test script found a bug in twofish.c when TABLES was disabled. Yeah testing! - -- Added a LTC_FAST specific test to the testing software. - -- Updated test driver to actually halt on errors and just print them out (useful for say... automated testing...) - -- Added bounds checking to Pelican MAC - -- Added BIT and OCTET STRING to the ASN.1 side of things. - -- Pekka Riikonen pointed out that my ctr_start() function should accept the counter mode. - -- Cleaned up warnings in testprof - -- Removed redundant mu and point mapping in ecc_verify_hash() so it should be a bit faster now - -- Pekka pointed out that the AES key structure was using 32 bytes more than it ought to. - -- Added quick defines to remove entire classes of algorithms. This makes it easier if you want to build with just - one algorithm (say AES or SHA-256). Defines are LTC_NO_CIPHERS, LTC_NO_MODES, LTC_NO_HASHES, LTC_NO_MACS, - LTC_NO_PRNGS, LTC_NO_PK, LTC_NO_PKCS - -- As part of the move for ECC to X9.62 I've changed the signature algorithm to EC DSA. No API changes. - -- Pekka helped me clean up the PKCS #1 v2.1 [OAEP/PSS] code - -- Wrote new DER SEQUENCE coder/decoder - -- RSA, DSA and ECDSA now use the DER SEQUENCE code (saves a lot of code!) - -- DSA output is now a DER SEQUENCE (so not compatible with previous releases). - -- Added Technote #5 which shows how to build LTC on an AMD64 to have a variety of algorithms in only ~80KB of code. - -- Changed temp variable in LOAD/STORE macros to "ulong32" for 32-bit ops. Makes it safer on Big endian platforms - -- Added INSTALL_GROUP and INSTALL_USER which you can specify on the build to override the default USER/GROUP the library - is to be installed as - -- Removed "testprof" from the default build. - -- Added IA5, NULL and Object Identifier to the list of ASN.1 DER supported types - -- The "no_oops" target (part of zipup) now scans for non-cvs files. This helps prevent temp/scratch files from appearing in releases ;-) - -- Added DERs for missing hashes, but just the OID not the PKCS #1 v1.5 additions. - -- Removed PKCS #1 v1.5 from the tree since it's taking up space and you ought to use v2.1 anyways - -- Kevin Kenny pointed out a few stray // comments - -- INTEGER code properly supports negatives and zero padding [Pekka!] - -- Sorted asn1/der/ directory ... less of a mess now ;-) - -- Added PRINTABLE STRING type - -- Removed ECC-160 as it wasn't a standard curve - -- Made ecc_shared_secret() ANSI X9.63 compliant - -- Changed "printf" to "fprintf(stderr, " in the testbench... ;-) - -- Optimized the GCM table creation. On 1KB packets [with key switching] the new GCM is 12.7x faster than before. - -- Changed OID representation for hashes to be just a list of unsigned longs (so you can compare against them nicely after decoding a sequence) - -- ECC code now uses Montgomery reduction ... it's even faster [ECC-256 make key down from 37.4M to 4.6M cycles on an Athlon64] - -- Added SHORT_INTEGER so users can easily store DER encoded INTEGER types without using the bignum math library - -- Fixed OMAC code so that with LTC_FAST it doesn't require that LTC_FAST_TYPE divides 16 [it has to divide the block size instead] - -- ECC key export is now a simple [and documented] SEQUENCE, the "encrypt_key" also uses a new SEQUENCE format. - -- Thanks goes to the following testers - Michael Brown - Solaris 10/uSPARCII - Richard Outerbridge - MacOS - Martin Carpenter - Solaris 8/uSPARCII [Thanks for cleaning up the scripts] - Greg Rose - ... SunOS 5.8/SPARC [... what's with the SPARCS?] - Matt Johnston - MacOS X [Thanks for pointing out GCC 4 problems with -Os] - -April 19th, 2005 -v1.02 - -- Added LTC_TEST support to gcm_test() - -- "pt/ct" can now be NULL in gcm_process() if you are processing zero bytes - -- Optimized GCM by removing the "double copy" handling of the plaintext/aad - -- Richard Outerbridge pointed out that x86_prof won't build on MACOS and that the manual - erroneously refers to "mycrypt" all over the place. Fixed. - -April 17th, 2005 -v1.01 - ** Secure Science Corporation has supported this release cycle by sponsoring the development time taken. Their - continuing support of this project has helped me maintain a steady pace in order to keep LibTomCrypt up to date, - stable and more efficient. - ----------------------------------------------------------------------------------------------------- - -- Updated base64_decode.c so if there are more than 3 '=' signs it would stop parsing - -- Merged in latest mpi that fixed a few bugs here and there - -- Updated OAEP encoder/decoder to catch when the hash output is too large - Cleaned up PSS code too - -- Andy Bontoft fixed a bug in my demos/tests/makefile.msvc ... seems "dsa_test.c" isn't an object - afterall. Thanks. - -- Made invalid ECC key sizes (configuration) not hard fault the program (it returns an error code now) - -- SAFER has been re-enabled after I was pointed to http://www.ciphersbyritter.com/NEWS2/95032301.HTM - [Mark Kotiaho] - -- Added CCM mode to the encauth list (now has EAX, OCB and CCM, c'est un treo magnifique!) - -- Added missing ASN.1 header to the RSA keys ... oops... now the rsa_export/import are FULLY compatible - with other libs like OpenSSL (comment: Test vectors would go a long way RSA...) - -- Manually merged in fix to the prime_random_ex() LTM function that ensures the 2nd MSB is set properly. Now - When you say "I want a 1024/8 byte RSA key" the MSB bit of the modulus is set as expected. Note I generally - don't view this as a "huge issue" but it's just one less nit to worry about. [Bryan Klisch] - -- A new CVS has been setup on my Athlon64 box... if you want developer access send me an email (and at this point the email would have to be awesome). - -- Updated API for ECB and CBC shell code. Now can process N whole blocks in one call (like $DEITY intended) - -- Introduced a new "hardware accel" framework that can be used to speed up cipher ECB, CBC and CTR mode - calls. Later on dependent code (e.g. OMAC, CCM) will be re-written to use the generic cbc/ctr functions. But now - if you [say] call ctr_encrypt() with a cipher descriptor that has hardware CTR it will automatically - be used (e.g. no code rewrites) - -- Now ships with 20% more love. - -- x86_prof now uses ECB shell code (hint: accelerators) and outputs cycles per BLOCK not byte. This will make it a bit - easier to compare hardware vs. software cipher implementations. It also emits timings for CBC and CTR modes - -- [Peter LaDow] fixed a typo w.r.t. XREALLOC macro (spelling counts kids!) - -- Fixed bug with __x86_64__ where ROL64/ROR64 with LTC_NO_ROLC would be the 32-bit versions instead... - -- Shipping with preliminary GCM code (disabled). It's buggy (stack overflow hidden somewhere). If anyone can spot it let me know. - -- Added Pelican MAC [it's an AES based fast MAC] to the list of supported MACs - -- Added LTC_FAST [and you can disable by defining LTC_NO_FAST] so that CBC and CTR mode XOR whole words [e.g. 32 or 64 bits] at a time - instead of one byte. On my AMD64 this reduced the overhead for AES-128-CBC from 4.56 cycles/byte to around 1 cycle/byte. This requires - that you either allow unaligned read/writes [e.g. x86_32/x86_64] or align all your data. It won't go out of it's way to ensure - aligned access. Only enabled for x86_* platforms by default since they allow unaligned read/writes. - -- Added LTC_FAST support to PMAC (drops the cycle/byte by about 9 cycles on my AMD64) [note: I later rewrote this prior to release] - -- Updated "profiled" target to work with the new directory layout - -- Added [demo only] optimized RC5-CTR code to x86_prof demo to show off how to make an accelerator - [This has been removed prior to release... It may re-appear later] - -- Added CCM acelerator callbacks to the list [now supports ECB, CTR, CBC and now CCM]. - -- Added chapter to manual about accelerators (you know you want it) - -- Added "bswap" optimizations to x86 LOAD/STORE with big endian. Can be disabled by defining LTC_NO_BSWAP - -- LTC_NO_ASM is now the official "disable all non-portable stuff" macro. When defined it will make the code endian-neutral, - disable any form of ASM and disable LTC_FAST load/stores. Essentially build the library with this defined if you're having - trouble building the library (old GCCs for instance dislike the ROLc macro) - -- Added tomcrypt_mac.h and moved MAC/encMAC functions from tomcrypt_hash.h into it - -- Added "done" function to ciphers and the five chaining modes [and things like omac/pmac/etc] - -- Changed install group to "wheel" from "root". - -- Replaced // comments with /**/ so it will build on older UNIX-like platforms - -- x86_prof builds and runs with IntelCC fine now - -- Added "stest" build to intel CC to test static linked from within the dir (so you don't have to install to test) - -- Moved testing/benchmark into testprof directory and build it as part of the build. Now you can link against libtomcrypt_prof.a to get - testing info (hint: hardware developers ;-) ) - -- Added CCM to tv_gen - -- Added demos to MSVC makefile - -- Removed -funroll-all-loops from GCC makefile and replaced with -funroll-loops which is a bit more sane (P4 ain't got much cache for the IDATA) - -- Fixed GCM prior to release and re-enabled it. It has not been optimized but it does conform when compiled with optimizations. - -- I've since optimized GCM and CCM. They're close in speed but GCM is more flexible imho (though EAX is more flexible than both) - -- For kicks I optimized the ECC code to use projective points. Gets between 3.21x (Prescott P4) to 4.53x (AMD64) times faster than before at 160-bit keys and the - speedup grows as the keysize grows. Basically removing most practical reasons to "not use the ECC code". Enjoy. - -- Added LTC_FAST support to OMAC/PMAC and doubled it's speed on my amd64 [faster on the P4 too I guess] - -- Added GCM to tv_gen - -- Removed "makefile.cygwin_dll" as it's not really used by anyone and not worth the effort (hell I hardly maintain the MSVC makefiles ...) - -- Updated a few files in the "misc" directory to have correct @file comments for doxygen - -- Removed "profile" target since it was slower anyways (go figure...) - -December 31st, 2004 -v1.00 - -- Added "r,s == 0" check to dsa_verify_hash() - -- Added "multi block" helpers for hash, hmac, pmac and omac routines so you can process multiple non-adjacent - blocks of data with one call (added demos/multi.c to make sure they work) - -- Note these are not documented but they do have doxygen comments inside them - -- Also I don't use them in other functions (like pkcs_5_2()) because I didn't have the time. Job for the new LTC maintainer ;-) - -- Added tweaked Anubis test vectors and made it default (undefined ANUBIS_TWEAK to get original Anubis) - -- Merged in fix for mp_prime_random_ex() to deal with MSB and LSB "bugs" - -- Removed tim_exptmod() completely, updated several RSA functions (notably v15 and the decrypt/verify) so they - don't require a prng now - -- This release brought to you by the fine tunes of Macy Gray. We miss you. - -December 23rd, 2004 -v1.00rc1 - -- Renamed "mycrypt_*" to "tomcrypt_*" to be more specific and professional - Now just include "tomcrypt.h" instead of "mycrypt.h" to get LTC ;-) - -- Cleaned up makefiles to ensure all headers are correctly installed - -- Added "rotate by constant" macros for portable, x86-32 and x86-64 - You can disable this new code with LTC_NO_ROLC which is useful for older GCCs - -- Cleaned up detection of x86-64 so it works for ROL/ROR macros - -- Fixed rsa_import() so that it would detect multi-prime RSA keys and error appropriately - -- Sorted the source files by category and updated the makefiles appropriately - -- Added LTC_DER define so you can trim out DER code if not required - -- Fixed up RSA's decrypt functions changing "res" to "stat" to be more in sync - with the signature variables nomenclature. (no code change just renamed the arguments) - -- Removed all labels starting with __ and replaced with LBL_ to avoid namespace conflicts (Randy Howard) - -- Merged in LTM fix to mp_prime_random_ex() which zap'ed the most significant byte if the bit size - requested was a multiple of eight. - -- Made RSA_TIMING off by default as it's not terribly useful [and likely to be deprecated] - -- Renamed SMALL_CODE, CLEAN_STACK and NO_FILE to have a LTC_ prefix to avoid namespace collisions - with other programs. e.g. SMALL_CODE => LTC_SMALL_CODE - -- Zed Shaw pointed out that on certain systems installing libs as "root" isn't possible as the super-user - is not root. Now the makefiles allow this to be changed easily. - -- Renamed "struct _*_descriptor" to "struct ltc_*_descriptor" to avoid using a leading _ - Also renamed _ARGCHK to LTC_ARGCHK - -- Zed Shaw pointed out that I still defined the prng structs in tomcrypt_prng.h even if they - weren't defined. This made undef'ing FORTUNA break the build. - -- Added LTC_NO_ASM to disable inline asm macros [ROL/ROR/etc] - -- Changed RSA decrypt functions to change the output length variable name from "keylen" to "outlen" to make - it more consistent. - -- Added the 64-bit Khazad block cipher [NESSIE] - -- Added the 128-bit Anubis block cipher [with key support for 128...320 bit keys] [NESSIE] - -- Changes to several MAC functions to rename input arguments to more sensible names - -- Removed FAST_PK support from dh_sys.c - -- Declared deskey() from des.c as static instead of a global - -- Added pretty much all practical GCC warning tests to the GCC [related] makefiles. These additional - warnings can easily be disabled for those with older copies of GCC [or even non GNU cc's] - -- Added doxygen @ tags to the code... phew that was a hell of a lot of [repetitive] work - -- Also added pre-configured Doxygen script. - -- Cleaned up quite a few functions [ciphers, pk, etc] to make the parameters naming style consistent - E.g. ciphers keys are called "skey" consistently now. The input to PK encryption is called "in", etc. - These changes require no code changes on the behalf of developers fortunately - -- Started a SAFER+ optimizer [does encrypt only] which shaves a good 30 or so cycles/byte on my AMD64 - at an expense of huge code. It's in notes/etc/saferp_optimizer.c - -- DSA sign/verify now uses DER encoded output/inputs and no LTC style headers. - -- Matt Johnston found a missing semi-colon in mp_exptmod(). Fix has been merged in. - -October 29th, 2004 -v0.99 -- Merged in the latest version of LTM which includes all of the recent bug fixes - -- Deprecated LTMSSE and removed it (to be replaced with TFM later on) - -- Stefan Arentz pointed out that mp_s_rmap should be extern - -- Kristian Gj?steen pointed out that there are typos in the - "test" makefile and minor issues in Yarrow and Sober [just cosmetics really] - -- Matthew P. Cashdollar pointed out that "export" is a C++ keyword - so changed the PRNG api to use "pexport" and "pimport" - -- Updated "hashsum" demo so it builds ;-) - -- Added automatic support for x86-64 (will configure for 64-bit little endian automagically) - -- Zhi Chen pointed out a bug in rsa_exptmod which would leak memory on error. - -- Made hash functions "init" return an int. slight change to API ;-( - -- Added "CHC" mode which turns any cipher into a hash the other LTC functions can use - -- Added CHC mode stuff to demos such as tv_gen and hashsum - -- Added "makefile.shared" which builds and installs shared/static object copies - of the library. - -- Added DER for bignum support - -- RSA is now fully joy. rsa_export/rsa_import use PKCS #1 encodings and should be - compatible with other crypto libs that use the format. - -- Added support for x86-64 for the ROL/ROR macros - -- Changed the DLL and SO makefiles to optimize for speed, commented SMALL_CODE in - mycrypt_custom.h and added -DSMALL_CODE to the default makefile - -- Updated primality testing code so it does a minimum of 5 tests [of Miller-Rabin] - (AFAIK not a security fix, just warm fuzzies) - -- Minor updates to the OMAC code (additional __ARGCHK and removed printf from omac_test... oops!) - -- Update build and configuration info which was really really really out of date. (Chapter 14) - ++ Minor update, switch RSA to use the PKCS style CRT - -August 6th, 2004 -v0.98 -- Update to hmac_init to free all allocated memory on error - -- Update to PRNG API to fix import/export functions of Fortuna and Yarrow - -- Added test functions to PRNG api, RC4 now conforms ;-) [was a minor issue] - -- Added the SOBER-128 PRNG based off of code donated by Greg Rose. - -- Added Tech Note #4 [notes/tech0004.txt] - -- Changed RC4 back [due to request]. It will now XOR the output so you can use it like - a stream cipher easily. - -- Update Fortuna's export() to emit a hash of each pool. This means that the accumulated - entropy that was spread over all the pools isn't entirely lost when you export/import. - -- Zhi Chen suggested a comment for rsa_encrypt_key() to let users know [easily] that it was - PKCS #1 v2.0 padding. (updated other rsa_* functions) - -- Cleaned up Noekeon to remove unrolling [wasn't required, was messy and actually slower with GCC/ICC] - -- Updated RC4 so that when you feed it >256 bytes of entropy it quietly ignores additional - bytes. Also removed the % from the key setup to speed it up a bit. - -- Added cipher/hash/prng tests to x86_prof to help catch bugs while testing - -- Made the PRNG "done" return int, fixed sprng_done to not require prng* to be non-null - -- Spruced up mycrypt_custom.h to trap more errors and also help prevent LTMSSE from being defined - on non-i386 platforms by accident. - -- Added RSA/ECC/DH speed tests to x86_prof and cleaned it up to build with zero warnings - -- Changed Fortuna to count only entropy [not the 2 byte header] added to pool[0] into the - reseed mechanism. - -- Added "export_size" member to prng_descriptor tables so you can know in advance the size of - the exported state for any given PRNG. - -- Ported over patch on LTM 0.30 [not ready to release LTM 0.31] that fixes bug in mp_mul()/mp_div() - that used to result in negative zeroes when you multiplied zero by a negative integer. - (patch due to "Wolfgang Ehrhardt" ) - -- Fixed rsa_*decrypt_key() and rsa_*verify_hash() to default to invalid "stat" or "res". This way - if any of the higher level functions fail [before you get to the padding] the result will be in - a known state]. Applied to both v2 and v1.5 padding helpers. - -- Added MACs to x86_prof - -- Fixed up "warnings" in x86_prof and tv_gen - -- Added a "profiled" target back [for GCC 3.4 and ICC v8]. Doesn't seem to help but might be worth - tinkering with. - -- Beefed up load/store test in demos/test - - ++ New note, in order to use the optimized LOAD/STORE macros your platform - must support unaligned 32/64 bit load/stores. The x86s support this - but some [ARM for instance] do not. If your platform cannot perform - unaligned operations you must use the endian neutral code which is safe for - any sort of platform. - -July 23rd, 2004 -v0.97b -- Added PKCS #1 v1.5 RSA encrypt/sign helpers (like rsa_sign_hash, etc...) - -- Added missing prng check to rsa_decrypt_key() [not critical as I don't use - descriptors directly in that function] - -- Merged in LTM-SSE, define LTMSSE before you build and you will get SSE2 optimized math ;-) - (roughly 3x faster on a P4 Northwood). By default it will compile as ISO C portable - code (when LTMSSE is undefined). - -- Fixed bug in ltc_tommath.h where I had the kara/toom cutoffs not marked as ``extern'' - Thanks to "Stefan Arentz" - -- Steven Dake and Richard Amacker submitted patches to - fix pkcs_5_2(). It now matches the output of another crypto library. Whoops... hehehe - -- Updated PRNG api. Added Fortuna PRNG to the list of supported PRNGs - -- Fixed up the descriptor tables since globals are automatically zero'ed on startup. - -- Changed RC4 to store it's output. If you want to encrypt with RC4 - you'll have to do the XOR yourself. - -- Fixed buffer overflows/overruns in the HMAC code. - - ++ API change for the PRNGs there now is a done() function per PRNG. You - should call it when you are done with a prng state. So far it's - not absolutely required (won't cause problems) but is a good idea to - start. - - -June 23rd, 2004 -v0.97a ++ Fixed several potentially crippling bugs... [read on] - -- Fixed bug in OAEP decoder that would incorrectly report - buffer overflows. [Zhi Chen] - -- Fixed headers which had various C++ missing [extern "C"]'s - -- Added "extern" to sha384_desc descriptor which I removed by mistake - -- Fixed bugs in ENDIAN_BIG macros using the wrong byte order [Matt Johnston] - -- Updated tiger.c and des.c to not shadow "round" which is intrinsic on - some C compilers. - -- Updated demos/test/rsa_test.c to test the RSA functionality better - ++ This update has been tested with GCC [v3.3.3], ICC [v8] and MSVC [v6+SP6] - all on a x86 P4 [GCC/ICC tested in Gentoo Linux, MSVC in WinXP] - ++ Outcome: The bug Zhi Chen pointed out has been fixed. So have the bugs - that Matt Johnston found. - -June 19th, 2004 -v0.97 -- Removed spurious unused files [arrg!] - -- Patched buffer overflow in tim_exptmod() - -- Fixed buffer overrun bug in pkcs_1_v15_es_decode() - -- Reduced stack usage in PKCS #1 v2.0 padding functions (by several KBs) - -- Removed useless extern's that were an artifact from the project start... ;-) - -- Replaced memcpy/memset with XMEMCPY and XMEMSET for greater flexibility - -- fixed bugs in hmac_done()/hmac_init()/[various others()] where I didn't trap errors - -- Reduced stack usage in OMAC/PMAC/HMAC/EAX/OCB/PKCS#5 by mallocing any significant sized - arrays (e.g. > 100 bytes or so). Only in non-critical functions (e.g. eax_init()) - -- "Zhi Chen" pointed out that rsa_decrypt_key() requires - an incorrect output size (too large). Fixed. - -- Added a "pretty" target to the GCC makefile. Requires PERL. It is NEAT! - -- Minor updates to ch1 of the manual. - -- Cleaned up the indentation and added comments to rsa_make_key(), rsa_exptmod() and - rsa_verify_hash() - -- Updated makefile.icc so the "install" target would work ;-) - -- Removed demos/test.c [deprecated from demos/test/test.c] - -- Changed MAXBLOCKSIZE from 128 to 64 to reflect the true size... - -May 30th, 2004 -v0.96 -- Removed GF and Keyring code - -- Extended OAEP decoder to distinguish better [and use a more uniform API] - -- Changed PSS/OAEP API slightly to be more consistent with other PK functions (order of arguments) - -- rsa_exptmod() now pads with leading zeroes as per I2OSP. - -- added error checking to yarrow code - -- pointed out that tommath.h from this distro will overwrite tommath.h - from libtommath. I changed this to ltc_tommath.h to avoid any such problems. - -- Fixed bug in PSS encoder/decoder that didn't handle the MSB properly - -- refactored AES, now sports an "encrypt only" descriptor which uses half as much code space. - -- modded Yarrow to try and use refactored AES code and added WHIRLPOOL support (d'oh) ;-) - -- updated ECB, OCB and CBC decrypt functions to detect when "encrypt only" descriptor is used. - -- replaced old RSA code with new code that uses PKCS #1 v2.0 padding - -- replaced old test harness with new over-engineer'ed one in /demos/test/ - -- updated cbc/cfb/ofb/ctr code with setiv/getiv functions to change/read the IV without re-keying. - -- Added PKCS #1 v1.5 RSA encryption and signature padding routines - -- Added DER OID's to most hash descriptors (as many as I could find) - -- modded rsa_exptmod() to use timing-resilient tim_exptmod() when doing private key operations - added #define RSA_TIMING which can turn on/off this feature. - -- No more config.pl so please just read mycrypt_custom.h for build-time tweaks - -- Small update to rand_prime() - -- Updated sha1, md5 and sha256 so they are smaller when SMALL_CODE is defined. If you want speed though, - you're going to have to undefine SMALL_CODE ;-) - -- Worked over AES so that it's even smaller now [in both modes]. - -May 12th, 2004 -v0.95 -- Optimized AES and WHIRLPOOL for SMALL_CODE by taking advantage of the fact - the transforms are circulant. AES dropped 5KB and WHIRLPOOL dropped 13KB - using the default build options on the x86. - -- Updated eax so the eax_done() would clear the state [like hmac,pmac,ocb] when - CLEAN_STACK has been defined. - -- added LTC_TEST support to rmd160 - -- updates to mycrypt_pk.h - -- updated rand_prime() to faciliate making RSA composites - -- DSA/RSA now makes composites of the exact size desired. - -- Refactored quite a bit of the code, fewer functions per C file - -- cleaned up the makefiles to organize the objects logically - -- added ICC makefile along with "profiled" targets for both GNU and ICC compilers - -- Marked functions for removal before v1.00 see PLAN for more information - -- GCC 3.4.0 tested and seems to work - -- Added PKCS #5 support - -- Fixed typo in comment header of .C files ;-) - -- Added PKCS #1 OAEP and PSS support. - -Feb 20th, 2004 -v0.94 -- removed unused variables from ocb.c and fixed it to match known test vectors. - -- Added PMAC support, minor changes to OMAC/EAX code [I think....] - -- Teamed up with Brian Gladman. His code verifies against my vectors and my code - verifies against his test vectors. Hazaa for co-operation! - -- Various small changes (added missing ARGCHKs and cleaned up indentation) - -- Optimization to base64, removed unused variable "c" - -- Added base64 gen to demos/tv_gen.c - -- Fix to demos/x86_prof.c to correctly identify the i386 architecture... weird... - -- Fixed up all of the PK code by adding missing error checking, removed "res" variables, - shrunk some stack variables, removed non-required stack variables and added proper - error conversion from MPI to LTC codes. I also spotted a few "off by one" error - checking which could have been used to force the code to read past the end of - the buffer (in theory, haven't checked if it would work) by a few bytes. - -- Added checks to OUTPUT_BIGNUM so the *_export() functions cannot overflow the output and I - also modded it so it stores in the output provided to the function (that is not on - the local stack) which saves memory and time. - -- Made SAFER default to disabled for now (plans are to cleanhouse write an implementation later) - -- Added the 512-bit one-way hash WHIRLPOOL which clocks in at 138 cycles per byte on my - Athlon XP [for comparison, SHA-512 clocks in at 77 cycles per byte]. This code uses the - teams new sbox design (not the original NESSIE one). - - -Jan 25th, 2004 -v0.93 -- [note: deleted v0.93 changes by accident... recreating from memory...] - -- Fix to RC2 to not deference pointer before ARGCHK - -- Fix to NOEKEON to match published test vectors as well as cleaned up the code a bit - -- Optimized Twofish [down to 28 cycles/byte on my box] and Blowfish - -- Fix to OMAC to test cipher block size first [prevents wasting any time] - -- Added more OMAC test vectors - -- Added EAX Encrypt+Authenticate support - -- Fix to DSA to check return of a few LTM functions I forgot [mp_to_unsigned_bin] - -- Added common headers to all C files - -- CTR mode supports big and little [default] endian counters now. - -- fix to find_cipher_any() so that it can handle a fragmented cipher_descriptor table. - -- added find_hash_any() akin to find_cipher_any(). - -- Added EAX code to demos/tv_gen.c Hazaa! - -- Removed SONY defines and files from codebase. - -- Added OCB support [patents be damned] and to demos/tv_gen.c - -- Merge all of the INPUT/OUTPUT BIGNUM macros (less toc) into mycrypt_pk.h - -- Made appropriate changes to the debug string in crypt.c - -Dec 24th, 2003 -v0.92 -- Updated the config.pl script so the options have more details. - -- Updated demos/tv_gen to include RIPEMD hashes - -- Updated Twofish so when TWOFISH_ALL_TABLES is defined a pre-computed RS table - is included [speedup: slight, about 4k cycles on my Athlon]. - -- Re-wrote the twofish large key generation [the four 8x32 key dependent tables]. Now about twice as fast. - With both optimizations [e.g. TWOFISH_ALL_TABLES defined] a 128-bit Twofish key can now be scheduled - in 26,000 cycles on my Athlon XP [as opposed to 49,000 before] when optimized for size. - -- config.pl has been updated so rmd128.o and rmd160.o are objects included in the build [oops] - -- Andrew Mann found a bug in rsa_exptmod() which wouldn't indicate if the wrong type of key was specified - (e.g. not PK_PRIVATE or PK_PUBLIC) - -- Fixed up demos/x86_prof so it sorts the output now :-) - -- The project is now powered by radioactive rubber pants. - -- Fixed dh_encrypt_key() so if you pass it a hash with a smaller output than the input key it - will return CRYPT_INVALID_HASH [to match what ecc_encrypt_key() will do] - -- Merge the store/encrypt key part of ecc_encrypt_key() as per dh_encrypt_key() [can you guess what I'm upto?] - -- Massive updates to the prime generation code. I use the LTM random prime functions [and provide a nice - interface between the LTC PRNG's and the LTM generic prng prototype]. I also use a variable number of tests - depending on the input size. This nicely speeds up most prime generation/testing within the library. - -- Added SHA-224 to the list of hashes. - -- Made HMAC test vectors constant and static [takes ROM space instead of RAM] - -- This release was brought to you by the letter P which stands for Patent Infringement. - -- Added generic HASH_PROCESS macro to mycrypt_hash.h which simplifies the hash "process" functions - I also optimized the compression functions of all but MD2 to not perform input copies when avoidable. - -- Removed the division from the Blowfish setup function [dropped 3k cycles on my Athlon] - -- Added stack cleaning to rijndael, cast5 so now all ciphers have CLEAN_STACK code. - -- Added Skipjack to the list of ciphers [made appropriate changes to demos/test.c, demos/tv_gen.c and - demos/x86_prof.c] - -- Added mechanical testing to cipher test vector routines. Now it encrypts 1000 times, then decrypts and - compares. Any fault (e.g. bug in code, compiler) in the routines is likely to show through. Doesn't - stress test the key gen though... - -- Matt Johnson found a bug in the blowfish.c apparently I was out of my mind and put twofish defines in there - The code now builds with any config. Thanks. - -- Added OMAC1 Message Authentication Code support to the library. - -- Re-prototyped the hash "process" and "done" to prevent buffer overflows [which don't seem easy to exploit]. - Updated HMAC code to use them too. Hazaa! - -- Fixed bug in ECC code which wouldn't do an _ARGCHK on stat in ecc_verify_hash(). - -- Fixed [temp fix] bug in all PK where the OUTPUT_BIGNUM macros would not trap errors on the to_unsigned_bin - conversion [now returns CRYPT_MEM, will fix it up better later] - -- Added DSA to the list of supported PK algorithms. - -- Fixed up various ciphers to &255 the input key bytes where required [e.g. where used to index a table] to prevent - problems on platforms where CHAR_BIT != 8 - -- Merged in LibTomMath v0.28 - -- Updated demos/x86_prof.c to use Yarrow during the key sched testing [was horribly slow on platforms with blockable - /dev/random]. - -- Added OMAC/HMAC tests to demos/tv_gen and I now store the output of this in notes/ - -- Fixed a bug in config.pl that wouldn't have TWOFISH_TABLES defined by default (too many commas on the line) - -- Fixed bug in hmac_done(). Apparently FIPS-198 [HMAC] specifies that the output can be truncated. My code - would not support that (does now just like the new OMAC code). - -- Removed "hashsize" from hmac_state as it wasn't being used. - -- Made demos/test.c stop if OMAC or HMAC tests fail (instead of just printing a failed message and keep going). - -- Updated notes/tech0003.txt to take into account the existence of Skipjack [also I fixed a few typos]. - -- Slight changes to Noekeon, with SMALL_CODE undefined it uses a fully unrolled version. Dropped +10 cycles/byte - on my Athlon (35 cycles per byte or 410.4Mbit/sec at 1795Mhz) - -- Added _ARGCHK() calls to is_prime() for the two input pointers. - -Sept 25th, 2003 -v0.91 -- HMAC fix of 0.90 was incorrect for keys larger than the block size of the hash. - -- Added error CRYPT_FILE_NOTFOUND for the file [hmac/hash] routines. - -- Added RIPEMD hashes to the hashsum demo. - -- Added hashsum demo to MSVC makefile. - -- Added RMD160 to the x86_prof demo [oops] - -- Merged in LibTomMath-0.27 with a patch to mp_shrink() that will be in LibTomMath-0.28 - Fixes another potential memory leak. - -Sept 7th, 2003 -v0.90 -- new ROL/ROR for x86 GCC - -- Jochen Katz submitted a patch to the makefile to prevent "make" from making the .a library - when not required. - == By default the KR code is not enabled [it's only a demo anyways!] - -- changed the "buf" in ecc_make_key from 4KB to 128 bytes [since the largest key is 65 bytes] - -- hmac_done() now requires you pass it the size of the destination buffer to prevent - buffer overflows. (API CHANGE) - -- hmac/hash filebased routines now return CRYPT_NOP if NO_FILE is defined. - -- I've removed the primes from dh.c and replaced them with DR safe primes suitable for the default - configuration of LibTomMath. Check out these comparisons on a 1.3Ghz Athlon XP, optimized for size, - -768-bit, 4 vs. 10 -1024-bit, 8 vs. 18 -1280-bit, 12 vs. 34 -1536-bit, 20 vs. 56 -1792-bit 28 vs. 88 -2048-bit, 40 vs. 124 -2560-bit, 71 vs. 234 -3072-bit, 113 vs. 386 -4096-bit, 283 vs. 916 - - Times are all in milliseconds for key generation. New primes times on the left. This makes the code binary - incompatible with previous releases. However, this addition is long overdue as LibTomMath has supported DR - reductions for quite some time. - -- Added RIPE-MD 128 and 160 to the list of supported hashes [10 in total]. - -- The project has been released as public domain. TDCAL no longer applies. - -July 15th, 2003 -v0.89 -- Fix a bug in bits.c which would prevent it from building with msvc - -- Merged in LibTomMath v0.24 [and I used the alloc/free macros this time!] - -- Removed the LTC version of next_prime() and replaced it with a call to the - mp_prime_next_prime() from LibTomMath - -- reverted bits.c to the 0.86 copy since the new one doesn't build in MSVC - or cygwin. - -Jul 10th, 2003 -v0.88 -- Sped up CAST5 key schedule for MSVC - -- added "ulong32" which allows people on 64-bit platforms to force the 32-bit tables in - ciphers like blowfish and AES to be 32-bits. E.g. when unsigned long is 64-bits. - -- Optimized the SAFER-SK64, SAFER-SK128, SAFER+, RC5 and RC6 key schedule [big time!] - -- Optimized SHA-1 and SHA-256 quite a bit too. - -- Fixed up the makefile to use -fomit-frame-pointer more liberally - -- Added tv_gen program which makes test vectors for ciphers/hashes - -- Merged in LibTomMath v0.22 - -Jun 19th, 2003 -v0.87 -- Many MSVC optimizations to the code base - -- Improved the AES and Twofish key schedule [faster, more constant time] - -- Tons of optimizations here and there. - -Jun 15th, 2003 -v0.86 -- Fixed up AES to workaround MSVC optimizer bug - -- Merged in fresh LTM base [based on v0.20] so there are no warnings with MSVC - -- Wrote x86_prof which will time the hashes and ciphers downto cycles per byte. - -- Fixed up demos/encrypt to remove serpent_desc from the list - -- Re-enabled MSVC optimizations w00t w00t - -- Replaced "errno" with "err" in all functions that had it so it wouldn't clash - with the global "errno" - -- Removed a set of unused variables from certain functions - -- Removed {#line 0 "..."} stuff from mpi.c to comply with ISO C :-) - -Jun 11th, 2003 -v0.85 -- Swapped in a new AES routine - -- Removed Serpent - -- Added TDCAL policy document - -Jun 1st, 2003 -v0.84 -- Removed a 4KB buffer from rsa_decrypt_key that wasn't being used no more - -- Fixed another potential buffer problem. Not an overflow but could cause the - PK import routines to read past the end of the buffer. - -- Optimized the ECC mulmod more by removing a if condition that will always be false - -- Optimized prime.c to not include a 2nd prime table, removed code from is_prime calls prime - test from LibTomMath now - -- Added LTC_TEST define which when defined will enable the test vector routines [see mycrypt_custom.h] - -- Removed ampi.o from the depends cuz it ain't no not working in *nix with it [routines are in mpi.c now]. - - -Mar 29th, 2003 -v0.83 -- Optimized the ecc_mulmod, it's faster and takes less heap/stack space - -- Fixed a free memory error in ecc_mulmod and del_point which would try to free NULL - -- Fixed two serious bugs in rsa_decrypt_key and rsa_verify_hash that would allow a trivialy - buffer overflow. - -- Fixed a bug in the hmac testing code if you don't register all the hashes it won't return - errors now. - -Mar 15th, 2003 -v0.82 -- Manual updated - -- Added MSVC makefile [back, actually its written from scratch to work with NMAKE] - -- Change to HMAC helper functions API to avoid buffer overflow [source changes] - -- the rsa_encrypt_key was supposed to reject key sizes out of bounds ... - same fix to the rsa_sign_hash - -- Added code to ensure that that chaining mode code (cfb/ofb/ctr/cbc) have valid - structures when being called. E.g. the indexes to the pad/ivs are not out of bounds - -- Cleaned up the DES code and simplified the core desfunc routine. - -- Simplified one of the boolean functions in MD4 - -Jan 16th, 2003 -v0.81 -- Merged in new makefile from Clay Culver and Mike Frysinger - -- Sped up the ECC mulmod() routine by making the word size adapt to the input. Saves a whopping 9 point - operations on 521-bit keys now (translates to about 8ms on my Athlon XP). I also now use barrett reduction - as much as possible. This sped the routine up quite a bit. - -- Fixed a huge flaw in ecc_verify_hash() where it would return CRYPT_OK on error... Now fixed. - -- Fixed up config.pl by fixing an invalid query and the file is saved in non-windows [e.g. not CR/LF] format - (fix due to Mika Bostr?m) - -- Merged in LibTomMath for kicks - -- Changed the build process so that by default "mycrypt_custom.h" is included and provided - The makefile doesn't include any build options anymore - -- Removed the PS2 and VC makefiles. - -Dec 16th, 2002 -v0.80 -- Found a change I made to the MPI that is questionable. Not quite a bug but definately not desired. Had todo - with the digit shifting. In v0.79 I simply truncated without zeroing. It didn't cause problems during my - testing but I fixed it up none the less. - -- Optimized s_mp_mul_dig() from MPI to do a minimal number of passes. - -- Fixed in rsa_exptmod() where I was getting the size of the result. Basically it accomplishes the same thing - but the fixed code is more readable. - -- Fixed slight bug in dh_sign_hash() where the random "k" value was 1 byte shorter than it should have been. I've - also made the #define FAST_PK speed up signatures as well. Essentially FAST_PK tells the DH sub-system to - limit any private exponent to 256-bits. Note that when FAST_PK is defined does not make the library - binary or source incompatible with a copy of the library with it undefined. - -- Removed the DSA code. If you want fast diffie-hellman just define FAST_PK :-) - -- Updated dh_sign_hash()/dh_verify_hash() to export "unsigned" bignums. Saves two bytes but is not binary - compatible with the previous release... sorry! I've performed the same fix to the ecc code as well. - -- Fixed up the PK code to remove all use of mp_toraw() and mp_read_raw() [get all the changes out of the way now] - -- Fixed a bug in the DH code where it missed trapping a few errors if they occurred. - -- Fixed a slight "its-not-a-bug-but-could-be-done-better" bug in the next_prime() function. Essentially it was - testing to ensure that in the loop that searches for the next candidate that the step never grows beyond - 65000. Should have been testing for MP_DIGIT_MAX - -- Spruced up the config.pl script. It now makes a header file "mycrypt_custom.h" which can be included *before* - you include mycrypt.h. This allows you to add libtomcrypt to a project without completely changing your make - system around. Note that you should use the makefile it writes to at least build the library initially. - -- Used splint to check alot of the code out. Tons of minor fixes and explicit casts added. - -- Also made all the internal functions of MPI are now static to avoid poluting the namespace - -- **Notice**: There are no planned future releases for at least a month from the this release date. - -Dec 14th, 2002 -v0.79 -- Change to PK code [binary and source]. I made it so you have to pass the buffer size to the *_decrypt_key and - *_verify_hash functions. This prevents malformed packets from performing buffer overflows. I've also trimmed - the packet header size [by 4 bytes]. - -- Made the test program halt on the first error it occurs. Also made it trap more errors than before. - -- Wrote the first chapter of my new book [DRAFT!], not in this package but check my website! - -- Included a perl script "config.pl" that will make "makefile.out" according to the users needs. - -- Added shell script to look for latest release - -- Merge DH and ECC key defines from mycrypt_cfg.h into the makefiles - -- updated the makefile to use BSD friendly archiving invokations - -- Changed the DH and ECC code to use base64 static key settings [e.g. the primes]. Dropped the code size by 3KB - and is ever-so-slightly faster than before. - -- added "mp_shrink" function to shrink the size of bignums. Specially useful for PK code :-) - -- Added new exptmod function that calculates a^b mod c with fewer multiplies then before [~20% for crypto - sized numbers]. Also added a "low mem" variant that doesn't use more than 20KB [upto 4096 bit nums] of - heap todo the calculation. Both are #define'able controlled - -- Added XREALLOC macro to provide realloc() functionality. - -- Added fix where in rsa_import() if you imported a public key or a non-optimized key it would free the mp_int's - not being used. - -- Fixed potential bug in the ECC code. Only would occur on platforms where char is not eight bits [which isn't - often!] - -- Fixed up the ECC point multiplication, its about 15% faster now - -- While I was at it [since the lib isn't binary backwards compatible anyways] I've fixed the PK export routines - so they export as "unsigned" types saving 1 byte per bignum outputted. Not a lot but heck why not. - -Nov 28th, 2002 -v0.78 -- Made the default ARGCHK macro a function call instead which reduced the code size from 264KB to 239KB. - -- Fixed a bug in the XTEA keysize function which called ARGCHK incorrectly. - -- Added Noekeon block cipher at 2,800 bytes of object code and 345Mbit/sec it is a welcome addition. - -- Made the KR code check if the other PK systems are included [provides error when building otherwise]. - -- Made "aes" an alias for Rijndael via a pre-processor macro. Now you can use "aes_ecb_encrypt", etc... :-) - Thanks to Jean-Luc Cooke for the "buzzword conformance" suggestion. - -- Removed the old PK code entirely (e.g. rsa_sign, dh_encrypt). The *_sign_hash and *_encrypt_key functions - are all that is to remain. - -- **NOTE** Changed the PK *_import (including the keyring) routine to accept a "inlen" parameter. This fixes a - bug where improperly made key packets could result in reading passed the end of the buffer. This means - the code is no longer source compatible but still binary compatible. - -- Fixed a few other minor bugs in the PK import code while I was at it. - -Nov 26th, 2002 -v0.77 -- Updated the XTEA code to use pre-computed keys. With optimizations for speed it achieves 222Mbit/sec - compared to the 121Mbit/sec before. It is 288 bytes bigger than before. - -- Cleaned up some of the ciphers and hashes (coding style, cosmetic changes) - -- Optimized AES slightly for 256-bit keys [only one if statement now, still two for 192-bit keys] - -- Removed most test cases from Blowfish, left three of them there. Makes it smaller and faster to test. - -- Changed the primality routines around. I now use 8 rounds of Rabin-Miller, I use 256 primes in the sieve - step and the "rand_prime" function uses a modified sieve that avoids alot of un-needed bignum work. - -- Fixed a bug in the ECC/DH signatures where the keys "setting" value was not checked for validity. This means - that a invalid value could have caused segfaults, etc... - -- **NOTE** Changed the way the ECC/DH export/import functions work. They are source but not binary compatible - with v0.76. Essentially insteading of exporting the setting index like before I export the key size. Now - if you ever re-configure which key settings are supported the lib will still be able to make use of your - keys. - -- Optimized Blowfish by inlining the round function, unrolling it for four rounds then using a for loop for the - rest. It achieves a rate of 425Mbit/sec with the new code compared to 314Mbit/sec before. The new blowfish - object file is 7,813 bytes compared to 8,663 before and is 850 bytes smaller. So the code is both smaller and - faster! - -- Optimized Twofish as well by inlining the round function. Gets ~400Mbit/sec compared to 280Mbit/sec before - and the code is only 78 bytes larger than the previous copy. - -- Removed SMALL_PRIME_TAB build option. I use the smaller table always. - -- Fixed some mistakes concerning prime generation in the manual. - -- [Note: sizes/speeds are for GCC 3.2 on an x86 Athlon XP @ 1.53Ghz] - -Nov 25th, 2002 -v0.76 -- Updated makefiles a bit more, use "-Os" instead of "-O2" to optimize for size. Got the lib - downto 265KB using GCC 3.2 on my x86 box. - -- Updated the SAFER+, Twofish and Rijndael test vector routine to use the table driven design. - -- Updated all other test vector routines to return as soon as an error is found - -- fixed a bug in the test program where errors in the hash test routines would not be reported - correctly. I found this by temporarily changing one of the bytes of the test vectors. All the - hashes check out [the demos/test.c would still have reported an error, just the wrong one]. - - -Nov 24th, 2002 -v0.75 -- Fixed a flaw in hash_filehandle, it should ARGCHK that the filehandle is not NULL - -- Fixed a bug where in hash_file if the call to hash_filehandle failed the open file would - not be closed. - -- Added more strict rules to build process, starting to weed out "oh this works in GCC" style code - In the next release "-Wconversion" will be enabled which will deal with all implicit casts. - -Nov 22nd, 2002 [later in the day] -v0.74 -- Wrote a small variant of SAFER+ which shaved 50KB off the size of the library on x86 platforms - -- Wrote a build option to remove the PK packet functions [keeps the encrypt_key/sign_hash functions] - -- Wrote a small variant of Rijndael (trimmed 13KB) - -- Trimmed the TIGER/192 hash function a bit - -- Overall the entire lib compiled is 295KB [down from 400KB before] - -- Fixed a few minor oversights in the MSVC makefile - -Nov 22nd, 2002 -v0.73 -- Fixed bug in RC4 code where it could only use 255 byte keys. - -- Fixed bug in yarrow code where it would allow cast5 or md2 to be used with it... - -- Removed the ecc compress/expand points from the global scope. Reduces namespace polution - -- Fixed bug where if you used the SPRNG you couldn't pass NULL as your prng_state which you should be - able todo since the SPRNG has no state... - -- Corrected some oversights in the manual and the examples... - -- By default the GF(2^W) math library is excluded from the build. The source is maintained because I wrote it - and like it :-). This way the built library is a tad smaller - -- the MSVC makefile will now build for a SPACE optimized library rather than TIME optimized. - -Nov 21th, 2002 -v0.72 -- Fixed bug in the prime testing. In the Miller-Rabin test I was raising the base to "N-1" not "r". - The math still worked out fine because in effect it was performing a Fermat test. Tested the new code and it - works properly - -- Fixed some of the code where it was still using the old error syntax - -- Sped up the RSA decrypt/sign routines - -- Optimized the ecc_shared_secret routine to not use so much stack - -- Fixed up the makefile to make releases where the version # is in the file name and directory it will unzip - to - -Nov 19th, 2002 -v0.71 -- HELP TOM. I need tuition for the January semester. Now I don't want to force donations [nor will I ever] - but I really need the help! See my website http://tom.iahu.ca/help_tom.html for more details. Please help - if you can! - -------------------------------------------------------------------------------------------------------------- - -- Officially the library is no longer supported in GCC 3.2 in windows [cygwin]. - In windows you can either use GCC 2.95.3 or try your luck with 3.2 It seems that - "-fomit-frame-pointer" is broken in the windows build [but not the linux x86 build???] - If you simply must use 3.2 then I suggest you limit the optimizations to simply "-O2" - -- Started new error handling API. Similar to the previous except there are more error codes than just - CRYPT_ERROR - -- Added my implementation of the MD2 hash function [despite the errors in the RFC I managed to get it right!] - -- Merged in more changes from Sky Schulz. I have to make mention here that he has been a tremendous help in - getting me motivated to make some much needed updates to the library! - -- Fixed one of the many mistakes in the manual as pointed out by Daniel Richards - -- Fixed a bug in the RC4 code [wasn't setting up the key correctly] - -- Added my implementation of the CAST5 [aka CAST-128] block cipher (conforms...) - -- Fixed numerous bugs in the PK code. Essentially I was "freeing" keys when the import failed. This is neither - required nor a good a idea [double free]. - -- Tom needs a job. - -- Fixed up the test harness as requested by Sky Schulz. Also modifed the timing routines to run for X seconds - and count # of ops performed. This is more suitable than say encrypting 10 million blocks on a slow processor - where it could take minutes! - -- Modified test programs hashsum/encrypt to use the new algorithms and error handling syntax - -- Removed the PKCS code since it was incomplete. In the future I plan on writing a "add-on" library that - provides PKCS support... - -- updated the config system so the #defines are in the makefiles instead of mycrypt_cfg.h - -- Willing to work on an hourly basis for 15$ CDN per hour. - -- updated the test program to not test ciphers not included - -- updated the makefile to make "rsa_sys.c" a dependency of rsa.o [helps develop the code...] - -- fixed numerous failures to detect buffer overflows [minor] in the PK code. - -- fixed the safer [64-bit block version] test routines which didn't check the returns of the setup - function - -- check out my CV at http://tom.iahu.ca/cv.html - -- removed the GBA makefile and code from demos/test.c [not a particularly useful demo...] - -- merged in rudimentary [for testing] PS2 RNG from Sky Schulz - -- merged in PS2 timer code [only shell included due to NDA reasons...] - -- updated HMAC code to return errors where possible - -- Thanks go to Sky Schulz who bought me a RegCode for TextPad [the official editor of libtomcrypt] - -Nov 12th, 2002 -v0.70 -- Updated so you can swap out the default malloc/calloc/free routines at build time with others. (Sky Schulz) - -- Sky Schulz contributed some code towards autodetecting the PS2 in mycrypt_cfg.h - -- Added PS2 makefile contributed by Sky Schulz [see a pattern forming?] - -- Added ability to have no FILE I/O functions at all (see makefile), Sky Schulz.... - -- Added support for substituting out the clock() function (Sky Schulz) - -- Fixed up makefile to include new headers in the HEADERS variable - -- Removed "coin.c" as its not really useful anyways - -- Removed many "debug" printfs that would show up on failures. Basically I wanted to ensure the only output - would be from the developer themselves. - -- Added "rc4.c" a RC4 implementation with a PRNG interface. Since RC4 isn't a block cipher it wouldn't work - too well as a block cipher. - -- Fixed ARGCHK macro usage when ARGTYPE=1 throughout the code - -- updated makefile to make subdirectory properly (Sku Schulz) - -- Started towards new API setup. Instead of checking for "== CRYPT_ERROR" you should check "!= CRYPT_OK" - In future releases functions will return things other than CRYPT_ERROR on error to give more useful - thread safe error reporting. The manual will be updated to reflect this. For this release all - errors are returned as CRYPT_ERROR (except as noted) but in future releases this will change. - -- Removed the zlib branch since its not really required anyways. Makes the package smaller - -Nov 11th, 2002 -v0.69 -- Added ARGCHK (see mycrypt_argchk.h) "arguement checking" to all functions that accept pointers - -- Note I forgot to change the CRYPT version tag in v0.68... fixed now. - -Nov 8th, 2002 -v0.68 -- Fixed flaw in kr_import/kr_export that wasted 4 bytes. Source but not binary compatible with v0.67 - -- Fixed bug in kr_find_name that used memcmp to match strings. Uses strncmp now. - -- kr_clear now sets the pointer to NULL to facilate debugging [e.g. using the keyring after clearing] - -- static functions in _write/_read in keyring.c now check the return of ctr_encrypt/ctr_decrypt. - -- Updated blowfish/rc2/rc5/rc6 keysize() function to not reject keys larger than the biggest key the - respective ciphers can use. - -- Fixed a bug in hashsum demo that would report the hash for files that don't exist! - -Oct 16th, 2002 -v0.67 -- Moved the function prototypes into files mycrypt_*.h. To "install" the lib just copy all the - header files "*.h" from the base of this project into your global include path. - -- Made the OFB/CFB/CTR functions use "unsigned long" for the length instead of "int" - -- Added keyring support for the PK functions - -- ***API CHANGE*** changed the ecc_make_key and dh_make_key to act more like rsa_make_key. Basically - move the first argument to the next to last. - -- Fixed bug in dh_test() that wouldn't test the primality of the order of the sub-group - -- replaced the primes in the DH code with new ones that are larger than the size they are - associated with. That is a 1024-bit DH key will have a 1025-bit prime as the modulus - -- cleaned up all the PK code, changed a bit of the API around [not source compatible with v0.66] - -- major editing of the manual, started Docer program - -- added 160 and 224 bit key settings for ECC. This makes the DH and ECC binary wise incompatible with v0.66 - -- Added an additional check for memory errors in is_prime() and cleaned up prime.c a bit - -- Removed ID_TAG from all files [meh, not a big fan...] - -- Removed unused variable from yarrow state and made AES/SHA256 the default cipher/hash combo - -- Fixed a bug in the Yarrow code that called prng_is_valid instead of cipher_is_valid from yarrow_start() - -- The ECB/CBC/OFB/CFB/CTR wrappers now check that the cipher is valid in the encrypt/decrypt calls - Returns int now instead of void. - -Sept 24th, 2002 -v0.66 -- Updated the /demos/test.c program to time the hashes correctly. Also it uses the yarrow PRNG for all of the - tests meaning its possible to run on RNG less platforms - -- Updated the /demos/hashsum.c program to hash from the standard input - -- Updated the RSA code to make keys a bit quicker [update by Wayne Scott] by not making both primes at the same - time. - -- Dan Kaminsky suggested some cleanups for the code and the MPI config - Code ships in unix LF format by default now too... will still build in MSVC and all... but if you want - to read the stuff you'll have to convert it - -- Changes to the manual to reflect new API [e.g. hash_memory/file have v0.65 prototypes]and some typos fixed - -Sept 20th, 2002 -v0.65 -- Wayne Scott (wscott@bitmover.com) made a few of suggestions to improve the library. Most - importantly he pointed out the math lib is not really required. He's also tested the lib on 18 - different platforms. According to him with only a few troubles [lack of /dev/random, etc] the - library worked as it was supposed to. You can find the list at - http://www.bitkeeper.com/Products.BitKeeper.Platforms.html - -- Updated the hash_file and hash_memory functions to keep track of the size of the output - -- Wayne Scott updated the demos/test.c file to use the SPRNG less and Yarrow more - -- Modified the mycrypt_cfg.h to autodetect x86-32 machines - -Sept 19th, 2002 -v0.64 -- wrote makefile for the GBA device [and hacked the demos/test.c file to support it conditionally] - -- Fixed error in PK (e.g. ECC, RSA, DH) import functions where I was clobbering the packet error messages - -- fixed more typos in the manual - -- removed all unused variables from the core library (ignore the ID_TAG stuff) - -- added "const char *crypt_build_settings" string which is a build time constant that gives a listing - of all the build time options. Useful for debugging since you can send that to me and I will know what - exactly you had set for the mycrypt_cfg.h file. - -- Added control over endianess. Out of the box it defaults to endianess neutral but you can trivially - configure the library for your platform. Using this I boosted RC5 from 660Mbit/sec to 785Mbit/sec on my - Athlon box. See "mycrypt_cfg.h" for more information. - -Sept 11th, 2002 -v0.63 -- Made hashsum demo output like the original md5sum program - -- Made additions to the examples in the manual (fixed them up a bunch) - -- Merged in the base64 code from Wayne Scott (wscott@bitmover.com) - -Aug 29th, 2002 -v0.62 -- Added the CLEAN_STACK functionality to several of the hashes I forgot to update. - -Aug 9th, 2002 -v0.61 -- Fixed a bug in the DES code [oops I read something wrong]. - -Aug 8th, 2002 -v0.60 -- Merged in DES code [and wrote 3DES-EDE code based on it] from Dobes V. - -Aug 7th, 2002 -v0.59 -- Fixed a "unsigned long long" bug that caused v0.58 not to build in MSVC. - -- Cleaned up a little in the makefile - -- added code that times the hash functions too in the test program - -Aug 3rd, 2002 -v0.58 -- Added more stack cleaning conditionals throughout the code. - -- corrected some CLEAR_STACK conditionals... should have been CLEAN_STACK - -- Simplified the RSA, DH and ECC encrypt() routines where they use CTR to encode the message - now they only make one call to ctr_encrypt()/ctr_decrypt(). - -Aug 2nd, 2002 -v0.57 -- Fixed a few errors messages in the SAFER code to actually report the correct cipher name. - -- rsa_encrypt() uses the "keysize()" method of the cipher being used to more accurately pick a - key size. By default rsa_encrypt() will choose to use a 256-bit key but the cipher can turn that - down if required. - -- The rsa_exptmod() function will now more reliably detect invalid inputs (e.g. greater than the modulus). - -- The padding method for RSA is more clearly documented. Namely if you want to encrypt/sign something of length - N then your modulus must be of length 1+3N. So to sign a message with say SHA-384 [48 bytes] you need a - 145 byte (1160 bits) modulus. This is all in the manual now. - -- Added build option CLEAN_STACK which will allow you to choose whether you want to clean the stack or not after every - cipher/hash call - -- Sped up the hash "process()" functions by not copying one byte at a time. - ++ (added just after I uploaded...) - MD4 process() now handles input buffers > 64 bytes - -Aug 1st, 2002 -v0.56 -- Cleaned up the comments in the Blowfish code. - -- Oh yeah, in v0.55 I made all of the descriptor elements constant. I just forgot to mention it. - -- fixed a couple of places where descriptor indexes were tested wrong. Not a huge bug but now its harder - to mess up. - -- Added the SAFER [64-bit block] ciphers K64, SK64, K128 and SK128 to the library. - -- Added the RC2 block cipher to the library. - -- Changed the SAFER define for the SAFER+ cipher to SAFERP so that the new SAFER [64-bit] ciphers - can use them with less confusion. - -July 29th, 2002 -v0.55 -- My god stupid Blowfish has yet again been fixed. I swear I hate that cipher. Next bug in it and boom its out of the - library. Use AES or something else cuz I really hate Blowfish at this stage.... - -- Partial PKCS support [hint DONT USE IT YET CUZ ITS UNTESTED!] - -July 19th, 2002 -v0.54 -- Blowfish now conforms to known test vectors. Silly bad coding tom! - -- RC5/RC6/Serpent all have more test vectors now [and they seemed to have been working before] - -July 18th, 2002 -v0.53 -- Added more test vectors to the blowfish code just for kicks [and they are const now too :-)] - -- added prng/hash/cipher is_valid functions and used them in all of the PK code so you can't enter the code - with an invalid index ever now. - -- Simplified the Yarrow code once again :-) - -July 12th, 2002 -v0.52 -- Fixed a bug in MD4 where the hash descriptor ID was the same as SHA-512. Now MD4 will work with - all the routines... - -- Fixed the comments in SHA-512 to be a bit more meaningful - -- In md4 I made the PADDING array const [again to store it in ROM] - -- in hash_file I switched the constant "512" to "sizeof(buf)" to be a bit safer - -- in SHA-1's test routine I fixed the string literal to say SHA-1 not sha1 - -- Fixed a logical error in the CTR code which would make it skip the first IV value. This means - the CTR code from v0.52 will be incompatible [binary wise] with previous releases but it makes more - sense this way. - -- Added {} braces for as many if/for/blocks of code I could find. My rule is that every for/if/while/do block - must have {} braces around it. - -- made the rounds table in saferp_setup const [again for the ROM think about the ROM!] - -- fixed RC5 since it no longer requires rc5 to be registered in the lib. It used to since the descriptors used to - be part of the table... - -- the packet.c code now makes crypt_error literal string errors when an error occurs - -- cleaned up the SAFER+ key schedule to be a bit easier to read. - -- fixed a huge bug in Twofish with the TWOFISH_SMALL define. Because I clean the stack now I had - changed the "g_func()" to be called indirectly. I forgot to actually return the return of the Twofish - g_func() function which caused it not to work... [does now :-)] - -July 11th, 2002 -v0.51 -- Fixed a bug in SHA512/384 code for multi-block messages. - -- Added more test vectors to the SHA384/512 and TIGER hash functions - -- cleaned up the hash done routines to make more sense - -July 10th, 2002 -v0.50 -- Fixed yarrow.c so that the cipher/hash used would be registered. Also fixed - a bug where the SAFER+ name was "safer" but should have been "safer+". - -- Added an element to the hash descriptors that gives the size of a block [sent into the compressor] - -- Cleaned up the support for HMAC's - -- Cleaned up the test vector routines to make the test vector data const. This means on some platforms it will be - placed in ROM not RAM now. - -- Added MD4 code submited by Dobes Vandermeer (dobes@smartt.com) - -- Added "burn_stack" function [idea taken from another source of crypto code]. The idea is if a function has - alot of variables it will clean up better. Functions like the ecb serpent and twofish code will now have their - stacks cleaned and the rest of the code is getting much more straightforward. - -- Added a hashing demo by Daniel Richards (kyhwana@world-net.co.nz) - -- I (Tom) modified some of the test vector routines to use more vectors ala Dobes style. - For example, the MD5/SHA1 code now uses all of the test vectors from the RFC/FIPS spec. - -- Fixed the register/unregister functions to properly report errors in crypt_error - -- Correctly updated yarrow code to remove a few unused variables. - -- Updated manual to fix a few erroneous examples. - -- Added section on Hash based Message Authentication Codes (HMAC) to the manual - -June 19th, 2002 -v0.46 -- Added in HMAC code from Dobes Vandermeer (dobes@smartt.com) - -June 8th, 2002 -v0.45 -- Fixed bug in rc5.c where if you called rc5_setup() before registering RC5 it would cause - undefined behaviour. - -- Fixed mycrypt_cfg.h to eliminate the 224 bit ECC key. - -- made the "default" makefile target have depends on mycrypt.h and mycrypt_cfg.h - -Apr 4th, 2002 -v0.44 -- Fixed bug in ecc.c::new_point() where if the initial malloc fails it would not catch it. - -Mar 22nd, 2002 -v0.43 -- Changed the ZLIB code over to the 1.1.4 code base to avoid the "double free" bug. - -- Updated the GCC makefile not to use -O3 or -funroll-loops - -- Version tag in mycrypt.h has been updated :-) - -Mar 10th, 2002 -v0.42 -- The RNG code can now use /dev/urandom before trying /dev/random (J. Klapste) - -Mar 3rd, 2002 -v0.41 -- Added support to link and use ciphers at compile time. This can greatly reduce the code size! - -- Added a demo to show off how small an application can get... 46kb! - -- Disastry pointed out that Blowfish is supposed to be high endian. - -- Made registry code for the PRNGs as well [now the smallest useable link is 43kb] - -Feb 11th, 2002 -v0.40 -- RSA signatures use [and check for] fixed padding scheme. - -- I'm developing in Linux now :-) - -- No more warnings from GCC 2.96 - -Feb 5th, 2002 -v0.39 -- Updated the XTEA code to work in accordance with the XTEA design - -January 24th, 2002 -v0.38 -- CFB and OFB modes can now handle blocks of variable size like the CTR code - -- Wrote a wrapper around the memory compress functions in Zlib that act like the functions - in the rest of my crypto lib - -January 23rd, 2002 -v0.37 -- Added support code so that if a hash size and key size for a cipher don't match up they will - use the next lower key supported. (mainly for the PK code). So you can now use SHA-1 with - Twofish, etc... - -- Added more options for Twofish. You can now tell it to use precomputed sboxes and MDS multiplications - This will speed up the TWOFISH_SMALL implementation by increasing the code size by 1024 bytes. - -- Fixed a bug in prime.c that would not use the correct table if you undefined SMALL_PRIME_TAB - -- Fixed all of the PK packet code to use the same header format [see packet.c]. This makes the PK code - binary wise incompatible with previous releases while the API has not changed at all. - -January 22nd, 2002 -v0.36 -- Corrections to the manual - -- Made a modification to Twofish which lets you build a "small ram" variant. It requires - about 190 bytes of ram for the key storage compared to the 4,200 bytes the normal - variant requires. - -- Reduced the stack space used in all of the PK routines. - -January 19th, 2002 -v0.35 -- If you removed the first hash or cipher from the library it wouldn't return an error if - you used an ID=0 [i.e blowfish or sha256] in any routine. Now it checks for that and will - return an error like it should - -- Merged in new routines from Clay Culver. These routines are for the PK code so you can easily - encode a symmetric key for multiple recipients. - -- Made the ecc and DH make_key() routines make secret keys of the same size as the keysize listed. - Originally I wanted to ensure that the keys were smaller than the order of the field used - However, the bias is so insignifcant using full sizes. For example, with a ECC-192 key the order - is about 2^191.99, so instead I rounded down and used a 184-bit secret key. Now I simply use a full 192-bit - key the code will work just the same except that some 192-bit keys will be duplicates which is not a big - deal since 1/2^192 is a very small bias! - -- Made the configuration a bit simpler and more exacting. You can for example now select which DH or ECC - key settings you wish to support without including the data for all other key settings. I put the #defines - in a new file called "mycrypt_cfg.h" - -- Configured "mpi-config.h" so its a bit more conservative with the memory required and code space used - -- Jason Klapste submitted bug fixes to the yarrow, hash and various other issues. The yarrow code will now - use what ever remaining hash/cipher combo is left [after you #undef them] at build time. He also suggested - a fix to remove unused structures from the symmetric_key and hash_state unions. - -- Made the CTR code handle variable length blocks better. It will buffer the encryption pad so you can - encrypt messages any size block at a time. - -- Simplified the yarrow code to take advantage of the new CTR code. - -- Added a 4096-bit DH key setting. That took me about 36 hours to find! - -- Changed the base64 routines to use a real base64 encoding scheme. - -- Added in DH and ECC "encrypt_key()" functions. They are still rather "beta"ish. - -- Added **Twofish** to the list of ciphers! - -January 18th, 2002 -v0.34 -- Added "sha512" to the list of hashes. Produces a 512-bit message digest. Note that with the current - padding with the rsa_sign() function you cannot use sha512 with a key less than 1536 bits for signatures. - -- Cleaned up the other hash functions to use the LOAD and STORE macros... - -January 17th, 2002 -v0.33 -- Made the lower limit on keysizes for RSA 1024 bits again because I realized that 768 bit keys wouldn't - work with the padding scheme and large symmetric keys. - -- Added information concerning the Zlib license to the manual - -- Added a 3072-bit key setting for the DH code. - -- Made the "find_xyz()" routines take "const char *" as per Clay Culver's suggestion. - -- Fixed an embarassing typo in the manual concerning the hashes. Thank's Clay for finding it! - -- Fixed rand_prime() so that it makes primes bigger than the setting you give. For example, - if you want a 1024-bit prime it would make a 1023-bit one. Now it ensures that the prime - it makes is always greater than 2^(8n) (n == bytes in prime). This doesn't have a huge - impact on security but I corrected it just the same. - -- Fixed the CTR routine to work on platforms where char != 8-bits - -- Fixed sha1/sha256/md5/blowfish to not assume "unsigned long == 32-bits", Basically any operation with carries - I "AND" with 0xFFFFFFFF. That forces only the lower 32-bits to have information in it. On x86 platforms - most compilers optimize out the AND operation since its a nop. - -January 16th, 2002 -v0.32 -- Made Rijndael's setup function fully static so it is thread safe - -- Svante Seleborg suggested a cosmetic style fixup for aes.c, - basically to remove some of the #defines to clean it up - -- Made the PK routines not export the ASCII version of the names of ciphers/hashes which makes - the PK message formats *incompatible* with previous releases. - -- Merge in Zlib :-) - - -January 15th, 2002 -v0.31 -- The RSA routines can now use CRT to speed up decryption/signatures. The routines are backwards - compatible with previous releases. - -- Fixed another bug that Svante Seleborg found. Basically you could buffer-overrun the - rsa_exptmod() function itself if you're not careful. That's fixed now. Fixed another bug in - rsa_exptmod() where if it knows the buffer you passed is too small it wouldn't free all used - memory. - -- improved the readability of the PK import/export functions - -- Added a fix to RSA.C by Clay Culver - -- Changed the CONST64 macro for MSVC to use the "unsigned __int64" type, e.g. "ui64" instead of "i64". - -January 14th, 2002 -v0.30 -- Major change to the Yarrow PRNG code, fixed a bug that Eugene Starokoltsev found. - Basically if you added entropy to the pool in small increments it could in fact - cancel out. Now I hash the pool with the new data which is way smarter. - -January 12th, 2002 -v0.29 -- Added MPI code written by Svante Seleborg to the library. This will make the PK code much - easier to follow and debug. Actually I've already fixed a memory leak in dh_shared_secret(). - -- Memory leaks found and correct in all three PK routines. The leaks would occur when a bignum - operation fails so it wouldn't normally turn up in the course of a program - -- Fixed bugs in dh_key_size and ecc_key_size which would return garbage for invalid key idx'es - -January 11th, 2002 -v0.28 -- Cleaned up some code so that it doesn't assume "char == 8bits". Mainly SAFER+ has been - changed. - -- ***HUGE*** changes in the PK code. I check all return values in the bignum code so if there - are errors [insufficient memory, etc..] it will be reported. This makes the code fairly more - robust and likely to catch any errors. - -- Updated the is_prime() function to use a new prototype [it can return errors now] and it also - does trial divisions against more primes before the Rabin Miller steps - -- Added OFB, CFB and ECB generic wrappers for the symmetric ciphers to round out the implementations. - -- Added Xtea to the list of ciphers, to the best of my ability I have verified this implementation. - I should note that there is not alot of concrete information about the cipher. "Ansi C" versions - I found did not address endianess and were not even portable!. This code is portable and to the - best of my knowledge implements the Xtea algorithm as per the [short] X-Tea paper. - -- Reformated the manual to include the **FULL** source code optimized to be pritable. - -January 9th, 2002 -v0.27 -- Changed the char constants to numerical values. It is backwards compatible and should work on - platforms where 'd' != 100 [for example]. - -- Made a change to rand_prime() which takes the input length as a signed type so you can pass - a negative len to get a "3 mod 4" style prime... oops - -- changed the MSVC makefile to build with a warning level of three, no warnings! - -January 8th, 2002 -v0.26 -- updated SHA-256 to use ROR() for a rotate so 64-bit machines won't corrupt - the output - -- Changed #include <> to #include "" for local .h files as per Richard Heathfields' suggestions. - -- Fixed bug in MPI [well bug in MSVC] that compiled code incorrectly in mp_set_int() - I added a work around that catches the error and continues normally. - -January 8th, 2002 -v0.25 -- Added a stupid define so MSVC 6.00 can build the library. - -- Big thanks to sci.crypt and "Ajay K. Agrawal" for helping me port this to MSVC - -January 7th, 2002 -v0.24 -- Sped up Blowfish by unrolling and removing the swaps. - -- Made the code comply with more traditional ANSI C standards - Should compile with MSVC with less errors - -- moved the demos and documentation into their own directories - so you can easily build the library with other tool chains - by compiling the files in the root - -- converted functions with length of outputs to use - "unsigned long" so 16-bit platforms will like this library more. - -January 5th, 2002 -v0.23 -- Fixed a small error in the MPI config it should build fine anywhere. - -January 4th, 2002 -v0.22 -- faster gf_mul() code - -- gf_shl() and gf_shr() are safe on 64-bit platforms now - -- Fixed an error in the hashes that Brian Gladman found. - Basically if the message has exactly 56 bytes left to be - compressed I handled them incorrectly. - -January 4th, 2002 -v0.21 -- sped up the ECC code by removing redundant divisions in the - point add and double routines. I also extract the bits more - efficiently in "ecc_mulmod()" now. - -- sped up [and documented] the rand_prime() function. Now it just - makes a random integer and increments by two until a prime is found - This is faster since it doesn't require alot of calls to the PRNG and - it doesn't require loading huge integers over and over. rand_prime() - can also make primes congruent to 3 mod 4 [i.e for a blum integer] - -- added a gf_sqrt() function that finds square roots in a GF(2^w) field - -- fixed a bug in gf_div() that would return the wrong results if the divisor had a greator - divisor than the dividend. - -January 4th, 2002 -v0.20 -- Added the fixed MPI back in so RSA and DH are much faster again - -v0.19 -- Updated the manual to reflect the fact that Brian Gladman wrote the AES and Serpent code. - -- DH, ECC and RSA signature/decryption functions check if the key is private - -- new DH signature/verification code works just like the RSA/ECC versions - -January 3rd, 2002 -v0.18 -- Added way more comments to each .C file - -- fixed a bug in cbc_decrypt(pt, ct, key) where pt == ct [i.e same buffer] - -- fixed RC5 so it reads the default rounds out of the cipher_descriptor table - -- cleaned up ecc_export() - -- Cleaned up dh_import() and ecc_import() which also perform more - error checking now - -- Fixed a serious flaw in rsa_import() with private keys. - -January 2nd, 2002 -v0.17 -- Fixed a bug in the random prime generator that fixes the wrong bits to one - -- ECC and DH code verify that the moduli and orders are in fact prime. That - slows down the test routines alot but what are you gonna do? - -- Fixed a huge bug in the mp_exptmod() function which incorrectly calculates g^x mod p for some - values of p. I replaced it with a slow function. Once the author of MPI fixes his faster routine - I will switch back. - -January 1st, 2002 [whoa new year!] -v0.16 -- Improved GF division code that is faster. - -- documented the GF code - -December 31st, 2001 -v0.15 -- A 1792-bit and 2048-bit DH setting was added. Took me all night to - find a 1792 and 2048-bit strong prime but what the heck - -- Library now has polynomial-basis GF(2^w) routines I wrote myself. Can be used to perform - ECC over GF(2^w) later on.... - -- Fixed a bug with the defines that allows it to build in windows - -December 30th, 2001 -v0.14 -- Fixed the xxx_encrypt() packet routines to make an IV of appropriate size - for the cipher used. It was defaulting to making a 256-bit IV... - -- base64_encode() now appends a NULL byte, um "duh" stupid mistake now fixed... - -- spell checked the manual again... :-) - -December 30th, 2001 -v0.13 -- Switching back to older copy of MPI since it works! arrg.. - -- Added sign/verify functions for ECC - -- all signature verification routines default to invalid signatures. - -- Changed all calls to memset to zeromem. Fixed up some buffer problems - in other routines. All calls to zeromem let the compiler determine the size - of the data to wipe. - -December 29th, 2001 -v0.12 -- Imported a new version of MPI [the bignum library] that should - be a bit more stable [if you want to write your own bignum - routines with the library that is...] - -- Manual has way more info - -- hash_file() clears stack now [like it should] - -- The artificial cap on the hash input size of 2^32 bits has been - removed. Basically I was too lazy todo 64-bit math before - [don't ask why... I can't remember]. Anyways the hashes - support the size of 2^64 bits [if you ever use that many bits in a message - that's just wierd...] - -- The hashes now wipe the "hash_state" after the digest is computed. This helps - prevent the internal state of the hash being leaked accidently [i.e stack problems] - -December 29th, 2001 -v0.11 -- Made #define's so you can trim the library down by removing - ciphers, hashs, modes of operation, prngs, and even PK algorithms - For example, the library with rijndael+ctr+sha1+ECC is 91KB compared - to the 246kb the full library takes. - -- Added ECC packet routines for encrypt/decrypt/sign/verify much akin to - the RSA packet routines. - -- ECC now compresses the public key, a ECC-192 public key takes 33 bytes - for example.... - -December 28th, 2001 -v0.10 -- going to restart the manual from scratch to make it more - clear and professional - -- Added ECC over Z/pZ. Basically provides as much as DH - except its faster since the numbers are smaller. For example, - A comparable 256-bit ECC key provides as much security as expected - from a DH key over 1024-bits. - -- Cleaned up the DH code to not export the symbol "sets[]" - -- Fixed a bug in the DH code that would not make the correct size - random string if you made the key short. For instance if you wanted - a 512-bit DH key it would make a 768-bit one but only make up 512-bits - for the exponent... now it makes the full 768 bits [or whatever the case - is] - -- Fixed another ***SERIOUS*** bug in the DH code that would default to 768-bit - keys by mistake. - -December 25th, 2001 -v0.09 -- Includes a demo program called file_crypt which shows off - how to use the library to make a command line tool which - allows the user to encode/decode a file with any - hash (on the passphrase) and cipher in CTR mode. - -- Switched everything to use typedef's now to clear up the code. - -- Added AES (128/192 and 256 bit key modes) - -December 24th, 2001 -v0.08 -- fixed a typo in the manual. MPI stores its bignums in - BIG endian not little. - -- Started adding a RNG to the library. Right now it tries - to open /dev/random and if that fails it uses either the - MS CSP or the clock drift RNG. It also allows callbacks - since the drift RNG is slow (about 3.5 bytes/sec) - -- the RNG can also automatically setup a PRNG as well now - -v0.07 -- Added basic DH routines sufficient to - negotiate shared secrets - [see the manual for a complete example!] - -- Fixed rsa_import to detect when the input - could be corrupt. - -- added more to the manual. - -December 22nd, 2001 -v0.06 -- Fixed some formatting errors in - the hash functions [just source code cleaning] - -- Fixed a typo in the error message for sha256 :-) - -- Fixed an error in base64_encode() that - would fail to catch all buffer overruns - -- Test program times the RSA and symmetric cipher - routines for kicks... - -- Added the "const" modifier to alot of routines to - clear up the purpose of each function. - -- Changed the name of the library to "TomCrypt" - following a suggestion from a sci.crypt reader.... - -v0.05 -- Fixed the ROL/ROR macro to be safe on platforms - where unsigned long is not 32-bits - -- I have added a bit more to the documentation - manual "crypt.pdf" provided. - -- I have added a makefile for LCC-Win32. It should be - easy to port to other LCC platforms by changing a few lines. - -- Ran a spell checker over the manual. - -- Changed the header and library from "crypt" to "mycrypt" to not - clash with the *nix package "crypt". - -v0.04 -- Fixed a bug in the RC5,RC6,Blowfish key schedules - where if the key was not a multiple of 4 bytes it would - not get loaded correctly. - -December 21st, 2001 - -v0.03 -- Added Serpent to the list of ciphers. - -v0.02 -- Changed RC5 to only allow 12 to 24 rounds - -- Added more to the manual. - -v0.01 -- We will call this the first version. - -/* $Source: /cvs/libtom/libtomcrypt/changes,v $ */ -/* $Revision: 1.288 $ */ -/* $Date: 2007/05/12 14:37:41 $ */ - diff --git a/src/libtomcrypt/check_source.sh b/src/libtomcrypt/check_source.sh deleted file mode 100644 index a193d3fa7c..0000000000 --- a/src/libtomcrypt/check_source.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -# output version -bash printinfo.sh - -make clean > /dev/null - -echo "checking..." -./helper.pl --check-source --check-makefiles --check-defines|| exit 1 - -exit 0 - -# ref: HEAD -> master, tag: v1.18.2 -# git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 -# commit time: 2018-07-01 22:49:01 +0200 diff --git a/src/libtomcrypt/coverage.sh b/src/libtomcrypt/coverage.sh deleted file mode 100644 index 47ec84594c..0000000000 --- a/src/libtomcrypt/coverage.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/bash - -set -e - -if [ "$TRAVIS_CI" == "private" ]; then - exit 0 -fi - -if [ "$#" != "5" ]; then - echo "Usage is: ${0} \"coverage\" \"\" \"\" \"\" " - echo "CC=gcc ${0} \"coverage\" \" \" \"makefile\" \"-DUSE_LTM -DLTM_DESC -I../libtommath\" ../libtommath/libtommath.a" - exit -1 -fi - -if [ -z "$(echo $CC | grep "gcc")" ]; then - echo "no gcc detected, early exit success" - exit 0 -fi - -if [ "$(echo $3 | grep -v 'makefile[.]')" == "" ]; then - echo "only run $0 for the regular makefile, early exit success" - exit 0 -fi - -# output version -bash printinfo.sh - -bash build.sh " $1" " $2" " $3 COVERAGE=1" "$4" "$5" -if [ -a testok.txt ] && [ -f testok.txt ]; then - echo -else - echo - echo "Test failed" - exit 1 -fi - -./coverage_more.sh > test_coverage_more.txt || { rm -f testok.txt && exit 1 ; } - -make lcov-single -# if this was executed as './coverage.sh ...' create coverage locally -if [[ "${0%% *}" == "./${0##*/}" ]]; then - make lcov-html -else - coveralls-lcov coverage.info -fi - -exit 0 - -# ref: HEAD -> master, tag: v1.18.2 -# git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 -# commit time: 2018-07-01 22:49:01 +0200 diff --git a/src/libtomcrypt/coverage_more.sh b/src/libtomcrypt/coverage_more.sh deleted file mode 100644 index aaf8b1361f..0000000000 --- a/src/libtomcrypt/coverage_more.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash - -set -e - -./sizes -./constants - -for i in $(for j in $(echo $(./hashsum -h | awk '/Algorithms/,EOF' | tail -n +2)); do echo $j; done | sort); do echo -n "$i: " && ./hashsum -a $i tests/test.key ; done > hashsum_tv.txt -difftroubles=$(diff -i -w -B hashsum_tv.txt notes/hashsum_tv.txt | grep '^<') || true -if [ -n "$difftroubles" ]; then - echo "FAILURE: hashsum_tv.tx" - diff -i -w -B hashsum_tv.txt notes/hashsum_tv.txt - echo "hashsum failed" - exit 1 -else - echo "hashsum okay" -fi - - -exit 0 - -# ref: HEAD -> master, tag: v1.18.2 -# git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 -# commit time: 2018-07-01 22:49:01 +0200 diff --git a/src/libtomcrypt/coverity.sh b/src/libtomcrypt/coverity.sh deleted file mode 100644 index 8f3059628b..0000000000 --- a/src/libtomcrypt/coverity.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -if [ $# -lt 2 ] -then - echo "usage is: ${0##*/} " - echo "e.g. \"${0##*/} \"/usr/local/bin/coverity\" \"-DLTM_DESC -I/path/to/libtommath/\"\"" - exit -1 -fi - -PATH=$PATH:$1/bin - -make clean -rm -r cov-int/ - -myCflags="" -myCflags="$myCflags -O2 ${2}" -myCflags="$myCflags -pipe -Werror -Wpointer-arith -Winit-self -Wextra -Wall -Wformat -Wformat-security" - -CFLAGS="$myCflags" cov-build --dir cov-int make -f makefile.unix $MAKE_OPTS IGNORE_SPEED=1 1>gcc_1.txt - -if [ $? -ne 0 ] -then - echo "make failed" - exit -1 -fi - -# zipup everything -tar caf libtomcrypt.lzma cov-int - -mytoken=$(cat .coverity_token) -mymail=$(cat .coverity_mail) -myversion=$(git describe --dirty) - -curl -k --form project=libtomcrypt \ - --form token=${mytoken} \ - --form email=${mymail} \ - --form file=@libtomcrypt.lzma \ - --form version=\"${myversion}\" \ - --form description="\"libtomcrypt version ${myversion}\"" \ - https://scan.coverity.com/builds?project=libtom%2Flibtomcrypt diff --git a/src/libtomcrypt/demos/constants.c b/src/libtomcrypt/demos/constants.c deleted file mode 100644 index 309d9c88f2..0000000000 --- a/src/libtomcrypt/demos/constants.c +++ /dev/null @@ -1,87 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L -#include -#else -#define basename(x) x -#endif - -/** - @file demo_crypt_constants.c - - Demo how to get various constants to dynamic languages - like Python - - Larry Bugbee, February 2013 -*/ - -static void _print_line(const char* cmd, const char* desc) -{ - printf(" %-16s - %s\n", cmd, desc); -} - -int main(int argc, char **argv) -{ - if (argc == 1) { - /* given a specific constant name, get and print its value */ - char name[] = "CTR_COUNTER_BIG_ENDIAN"; - int value; - char *names_list; - unsigned int names_list_len; - - if (crypt_get_constant(name, &value) != 0) exit(EXIT_FAILURE); - printf("\n %s is %d \n\n", name, value); - - /* get and print the length of the names (and values) list */ - - if (crypt_list_all_constants(NULL, &names_list_len) != 0) exit(EXIT_FAILURE); - printf(" need to allocate %u bytes \n\n", names_list_len); - - /* get and print the names (and values) list */ - if ((names_list = malloc(names_list_len)) == NULL) exit(EXIT_FAILURE); - if (crypt_list_all_constants(names_list, &names_list_len) != 0) exit(EXIT_FAILURE); - printf(" supported constants:\n\n%s\n\n", names_list); - free(names_list); - } else if (argc == 2) { - if (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0) { - char* base = strdup(basename(argv[0])); - printf("Usage: %s [-a] [-s name]\n\n", base); - _print_line("", "The old behavior of the demo"); - _print_line("-a", "Only lists all constants"); - _print_line("-s name", "List a single constant given as argument"); - _print_line("-h", "The help you're looking at"); - free(base); - } else if (strcmp(argv[1], "-a") == 0) { - char *names_list; - unsigned int names_list_len; - /* get and print the length of the names (and values) list */ - if (crypt_list_all_constants(NULL, &names_list_len) != 0) exit(EXIT_FAILURE); - /* get and print the names (and values) list */ - if ((names_list = malloc(names_list_len)) == NULL) exit(EXIT_FAILURE); - if (crypt_list_all_constants(names_list, &names_list_len) != 0) exit(EXIT_FAILURE); - printf("%s\n", names_list); - free(names_list); - } - } else if (argc == 3) { - if (strcmp(argv[1], "-s") == 0) { - int value; - if (crypt_get_constant(argv[2], &value) != 0) exit(EXIT_FAILURE); - printf("%s,%u\n", argv[2], value); - } - } - - return 0; -} - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/demos/demo_dynamic.py b/src/libtomcrypt/demos/demo_dynamic.py deleted file mode 100644 index a0699e46c0..0000000000 --- a/src/libtomcrypt/demos/demo_dynamic.py +++ /dev/null @@ -1,309 +0,0 @@ - - -""" - demo_dynamic.py v2b - - This program demonstrates Python's use of the dynamic - language support additions to LTC, namely access to LTC - constants, struct and union sizes, and the binding of a - math package to LTC. Also provided are simple code - fragments to illustrate how one might write a Python - wrapper for LTC and how an app might call the wrapper. - This or a similar model should work for Ruby and other - dynamic languages. - - This instance uses Python's ctypes and requires a single - .dylib linking together LTC and a math library. Building - a single .dylib is needed because LTC wants a fairly tight - relationship between itself and the mathlib. (ctypes can - load multiple .dylibs, but it does not support this level - of tight coupling between otherwise independent libraries.) - - My .dylib was created on OSX/macOS with the following: - sudo make -j5 -f makefile.shared \ - CFLAGS="-DUSE_TFM -DTFM_DESC -I/usr/local/include" \ - EXTRALIBS=/usr/local/lib/libtfm.a install - - For python 2.7.12 on Ubuntu Xenial the following worked for - me (without MPI support): - sudo make -f makefile.shared install PREFIX="/usr" - - Reminder: you don't need to bind in a math library unless - you are going to use LTC functions that need a - mathlib. For example, public key crypto requires - a mathlib; hashing and symmetric encryption do not. - - ------ - - This code was originally written for Python 2.7 with the - ctypes standard library. This version is modified to run - under both Python 2.7 and 3.6. - - Arguably the biggest change for Python3 has to do with - strings. Under Python2, native strings are ASCII bytes and - passing them to LTC is natural and requires no conversion. - Under Python3 all native strings are Unicode which requires - they be converted to bytes before use by LTC. - - Note the following for Python3. - - ASCII keys, IVs and other string arguments must be - 'bytes'. Define them with a 'b' prefix or convert - via the 'bytes()' function. - - "strings" returned from LTC are bytes and conversion - to Unicode might be necessary for proper printing. - If so, use .decode('utf-8'). - - The Python2 'print' statement becomes a function in - Python3 which requires parenthesis, eg. 'print()'. - - NB: Unicode is achieved under Python2 by either defining - a Unicode string with a 'u' prefix or passing ASCII - strings thru the 'unicode()' function. - - Larry Bugbee - March 2014 v1 - August 2017 v2b - -""" - - -import sys -from ctypes import * -from ctypes.util import find_library - -# switches to enable/disable selected output -SHOW_ALL_CONSTANTS = True -SHOW_ALL_SIZES = True -SHOW_SELECTED_CONSTANTS = True -SHOW_SELECTED_SIZES = True -SHOW_BUILD_OPTIONS_ALGS = True -SHOW_SHA256_EXAMPLE = True -SHOW_CHACHA_EXAMPLE = True - -print(' ') -print(' demo_dynamic.py') - -def inprint(s, indent=0): - "prints strings indented, including multline strings" - for line in s.split('\n'): - print(' '*indent + line) - -#------------------------------------------------------------------------------- -# load the .dylib - -libname = 'tomcrypt' -libpath = find_library(libname) -print(' ') -print(' path to library %s: %s' % (libname, libpath)) - -LTC = cdll.LoadLibrary(libpath) -print(' loaded: %s' % LTC) -print(' ') - - -#------------------------------------------------------------------------------- -# get list of all supported constants followed by a list of all -# supported sizes. One alternative: these lists may be parsed -# and used as needed. - -if SHOW_ALL_CONSTANTS: - print('-'*60) - print(' all supported constants and their values:') - - # get size to allocate for constants output list - str_len = c_int(0) - ret = LTC.crypt_list_all_constants(None, byref(str_len)) - print(' need to allocate %d bytes to build list \n' % str_len.value) - - # allocate that size and get (name, size) pairs, each pair - # separated by a newline char. - names_sizes = c_buffer(str_len.value) - ret = LTC.crypt_list_all_constants(names_sizes, byref(str_len)) - print(names_sizes.value.decode("utf-8")) - print(' ') - - -if SHOW_ALL_SIZES: - print('-'*60) - print(' all supported sizes:') - - # get size to allocate for sizes output list - str_len = c_int(0) - ret = LTC.crypt_list_all_sizes(None, byref(str_len)) - print(' need to allocate %d bytes to build list \n' % str_len.value) - - # allocate that size and get (name, size) pairs, each pair - # separated by a newline char. - names_sizes = c_buffer(str_len.value) - ret = LTC.crypt_list_all_sizes(names_sizes, byref(str_len)) - print(names_sizes.value.decode("utf-8")) - print(' ') - - -#------------------------------------------------------------------------------- -# get individually named constants and sizes - -if SHOW_SELECTED_CONSTANTS: - print('-'*60) - print('\n selected constants:') - - names = [ - b'ENDIAN_LITTLE', - b'ENDIAN_64BITWORD', - b'PK_PUBLIC', - b'LTC_MILLER_RABIN_REPS', - b'CTR_COUNTER_BIG_ENDIAN', - ] - for name in names: - const_value = c_int(0) - rc = LTC.crypt_get_constant(name, byref(const_value)) - value = const_value.value - print(' %-25s %d' % (name.decode("utf-8"), value)) - print(' ') - -if SHOW_SELECTED_SIZES: - print('-'*60) - print('\n selected sizes:') - - names = [ - b'rijndael_key', - b'rsa_key', - b'symmetric_CTR', - b'twofish_key', - b'ecc_point', - b'gcm_state', - b'sha512_state', - ] - for name in names: - size_value = c_int(0) - rc = LTC.crypt_get_size(name, byref(size_value)) - value = size_value.value - print(' %-25s %d' % (name.decode("utf-8"), value)) - print(' ') - - -#------------------------------------------------------------------------------- -#------------------------------------------------------------------------------- -# LibTomCrypt exposes one interesting string that can be accessed -# via Python's ctypes module, "crypt_build_settings", which -# provides a list of this build's compiler switches and supported -# algorithms. If someday LTC exposes other interesting strings, -# they can be found with: -# nm /usr/local/lib/libtomcrypt.dylib | grep " D " - -def get_named_string(lib, name): - return c_char_p.in_dll(lib, name).value.decode("utf-8") - -if SHOW_BUILD_OPTIONS_ALGS: - print('-'*60) - print('This is a string compiled into LTC showing compile') - print('options and algorithms supported by this build \n') -# print(get_named_string(LTC, 'crypt_build_settings')) - inprint(get_named_string(LTC, 'crypt_build_settings'), 4) - - -#------------------------------------------------------------------------------- -#------------------------------------------------------------------------------- -# here is an example of how Python code can be written to access -# LTC's implementation of SHA256 and ChaCha, - -# - - - - - - - - - - - - - -# definitions - -from binascii import hexlify, unhexlify - -def _err2str(err): - # define return type - errstr = LTC.error_to_string - errstr.restype = c_char_p - # get and return err string - return errstr(err) - -def _get_size(name): - size = c_int(0) - rc = LTC.crypt_get_size(bytes(name), byref(size)) - if rc != 0: - raise Exception('LTC.crypt_get_size(%s) rc = %d' % (name, rc)) - return size.value - -def _get_constant(name): - constant = c_int(0) - rc = LTC.crypt_get_constant(bytes(name), byref(constant)) - if rc != 0: - raise Exception('LTC.crypt_get_constant(%s) rc = %d' % (name, rc)) - return constant.value - -CRYPT_OK = _get_constant(b'CRYPT_OK') - -class SHA256(object): - def __init__(self): - self.state = c_buffer(_get_size(b'sha256_state')) - LTC.sha256_init(byref(self.state)) - def update(self, data): - LTC.sha256_process(byref(self.state), data, len(data)) - def digest(self): - md = c_buffer(32) - LTC.sha256_done(byref(self.state), byref(md)) - return md.raw - -class ChaCha(object): - def __init__(self, key, rounds): - self.state = c_buffer(_get_size(b'chacha_state')) - self.counter = c_int(1) - err = LTC.chacha_setup(byref(self.state), key, len(key), rounds) - if err != CRYPT_OK: - raise Exception('LTC.chacha_setup(), err = %d, "%s"' % (err, _err2str(err))) - def set_iv32(self, iv): - err = LTC.chacha_ivctr32(byref(self.state), iv, len(iv), byref(self.counter)) - if err != CRYPT_OK: - raise Exception('LTC.chacha_ivctr32(), err = %d, "%s"' % (err, _err2str(err))) - def crypt(self, datain): - dataout = c_buffer(len(datain)) - err = LTC.chacha_crypt(byref(self.state), datain, len(datain), byref(dataout)) - if err != CRYPT_OK: - raise Exception('LTC.chacha_crypt(), err = %d, "%s"' % (err, _err2str(err))) - return dataout.raw - -# - - - - - - - - - - - - - -# a SHA256 app fragment - -if SHOW_SHA256_EXAMPLE: - print('-'*60) - data = b'hello world' # we want bytes, not Unicode - - sha256 = SHA256() - sha256.update(data) - md = sha256.digest() - - template = '\n the SHA256 digest for "%s" is %s \n' - print(template % (data, hexlify(md))) - -# - - - - - - - - - - - - - -# a ChaCha app fragment - -if SHOW_CHACHA_EXAMPLE: - print('-'*60) - key = b'hownowbrowncow\x00\x00' # exactly 16 or 32 bytes - rounds = 12 # common values: 8, 12, 20 - iv = b'123456789012' # exactly 12 bytes - plain = b'Kilroy was here, there, and everywhere!' - - cha = ChaCha(key, rounds) - cha.set_iv32(iv) - cipher = cha.crypt(plain) - - template = '\n ChaCha%d ciphertext for "%s" is "%s"' - print(template % (rounds, plain, hexlify(cipher))) - - cha.set_iv32(iv) # reset to decrypt - decrypted = cha.crypt(cipher) - - template = ' ChaCha%d decoded text for "%s" is "%s" \n' - print(template % (rounds, plain, decrypted.decode("utf-8"))) - -# Footnote: Keys should be erased fm memory as soon as possible after use, -# and that includes Python. For a tip on how to do that in Python, see -# http://buggywhip.blogspot.com/2010/12/erase-keys-and-credit-card-numbers-in.html - -#------------------------------------------------------------------------------- -#------------------------------------------------------------------------------- -#------------------------------------------------------------------------------- diff --git a/src/libtomcrypt/demos/hashsum.c b/src/libtomcrypt/demos/hashsum.c deleted file mode 100644 index 709c19b183..0000000000 --- a/src/libtomcrypt/demos/hashsum.c +++ /dev/null @@ -1,300 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* - * Written by Daniel Richards 6/7/2002 - * hash.c: This app uses libtomcrypt to hash either stdin or a file - * This file is Public Domain. No rights are reserved. - * Compile with 'gcc hashsum.c -o hashsum -ltomcrypt' - * This example isn't really big enough to warrent splitting into - * more functions ;) -*/ - -#include - -#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L -#include -#else -#define basename(x) x -#endif - -#if !defined(PATH_MAX) && defined(_MSC_VER) -#include -#define PATH_MAX MAX_PATH -#endif - -/* thanks http://stackoverflow.com/a/8198009 */ -#define _base(x) ((x >= '0' && x <= '9') ? '0' : \ - (x >= 'a' && x <= 'f') ? 'a' - 10 : \ - (x >= 'A' && x <= 'F') ? 'A' - 10 : \ - '\255') -#define HEXOF(x) (x - _base(x)) - -static char* hashsum; - -static void cleanup(void) -{ - free(hashsum); -} - -static void die(int status) -{ - unsigned long w, x; - FILE* o = status == EXIT_SUCCESS ? stdout : stderr; - fprintf(o, "usage: %s -a algorithm [-c] [file...]\n\n", hashsum); - fprintf(o, "\t-c\tCheck the hash(es) of the file(s) written in [file].\n"); - fprintf(o, "\t\t(-a not required)\n"); - fprintf(o, "\nAlgorithms:\n\t"); - w = 0; - for (x = 0; hash_descriptor[x].name != NULL; x++) { - w += fprintf(o, "%-14s", hash_descriptor[x].name); - if (w >= 70) { - fprintf(o, "\n\t"); - w = 0; - } - } - if (w != 0) fprintf(o, "\n"); - exit(status); -} - -static void printf_hex(unsigned char* hash_buffer, unsigned long w) -{ - unsigned long x; - for (x = 0; x < w; x++) { - printf("%02x",hash_buffer[x]); - } -} - -static void check_file(int argn, int argc, char **argv) -{ - int err, failed, invalid; - unsigned char is_buffer[MAXBLOCKSIZE], should_buffer[MAXBLOCKSIZE]; - char buf[PATH_MAX + (MAXBLOCKSIZE * 3)]; - /* iterate through all files */ - while(argn < argc) { - char* s; - FILE* f = fopen(argv[argn], "rb"); - if(f == NULL) { - int n = snprintf(buf, sizeof(buf), "%s: %s", hashsum, argv[argn]); - if (n > 0 && n < (int)sizeof(buf)) - perror(buf); - else - perror(argv[argn]); - exit(EXIT_FAILURE); - } - failed = 0; - invalid = 0; - /* read the file line by line */ - while((s = fgets(buf, sizeof(buf), f)) != NULL) - { - int tries, n; - unsigned long hash_len, w, x; - char* space = strstr(s, " "); - - /* skip lines with comments */ - if (buf[0] == '#') continue; - - if (space == NULL) { - fprintf(stderr, "%s: no properly formatted checksum lines found\n", hashsum); - goto ERR; - } - - hash_len = space - s; - hash_len /= 2; - - if (hash_len > sizeof(should_buffer)) { - fprintf(stderr, "%s: hash too long\n", hashsum); - goto ERR; - } - - /* convert the hex-string back to binary */ - for (x = 0; x < hash_len; ++x) { - should_buffer[x] = HEXOF(s[x*2]) << 4 | HEXOF(s[x*2 + 1]); - } - - space++; - if (*space != '*') { - fprintf(stderr, "%s: unsupported input mode '%c'\n", hashsum, *space); - goto ERR; - } - space++; - - for (n = 0; n < (buf + sizeof(buf)) - space; ++n) { - if(iscntrl((int)space[n])) { - space[n] = '\0'; - break; - } - } - - /* try all hash algorithms that have the appropriate hash size */ - tries = 0; - for (x = 0; hash_descriptor[x].name != NULL; ++x) { - if (hash_descriptor[x].hashsize == hash_len) { - tries++; - w = sizeof(is_buffer); - if ((err = hash_file(x, space, is_buffer, &w)) != CRYPT_OK) { - fprintf(stderr, "%s: File hash error: %s: %s\n", hashsum, space, error_to_string(err)); -ERR: - fclose(f); - exit(EXIT_FAILURE); - } - if(XMEMCMP(should_buffer, is_buffer, w) == 0) { - printf("%s: OK\n", space); - break; - } - } - } /* for */ - if (hash_descriptor[x].name == NULL) { - if(tries > 0) { - printf("%s: FAILED\n", space); - failed++; - } - else { - invalid++; - } - } - } /* while */ - fclose(f); - if(invalid) { - fprintf(stderr, "%s: WARNING: %d %s is improperly formatted\n", hashsum, invalid, invalid > 1?"lines":"line"); - } - if(failed) { - fprintf(stderr, "%s: WARNING: %d computed %s did NOT match\n", hashsum, failed, failed > 1?"checksums":"checksum"); - } - argn++; - } - exit(EXIT_SUCCESS); -} - -int main(int argc, char **argv) -{ - int idxs[TAB_SIZE], idx, check, y, z, err, argn; - unsigned long w, x; - unsigned char hash_buffer[MAXBLOCKSIZE]; - - hashsum = strdup(basename(argv[0])); - atexit(cleanup); - - /* You need to register algorithms before using them */ - register_all_ciphers(); - register_all_hashes(); - if (argc > 1 && (strcmp("-h", argv[1]) == 0 || strcmp("--help", argv[1]) == 0)) { - die(EXIT_SUCCESS); - } - if (argc < 3) { - die(EXIT_FAILURE); - } - - for (x = 0; x < sizeof(idxs)/sizeof(idxs[0]); ++x) { - idxs[x] = -2; - } - argn = 1; - check = 0; - idx = 0; - - while(argn < argc){ - if(strcmp("-a", argv[argn]) == 0) { - argn++; - if(argn < argc) { - idxs[idx] = find_hash(argv[argn]); - if (idxs[idx] == -1) { - struct { - const char* is; - const char* should; - } shasum_compat[] = - { -#ifdef LTC_SHA1 - { "1", sha1_desc.name }, -#endif -#ifdef LTC_SHA224 - { "224", sha224_desc.name }, -#endif -#ifdef LTC_SHA256 - { "256", sha256_desc.name }, -#endif -#ifdef LTC_SHA384 - { "384", sha384_desc.name }, -#endif -#ifdef LTC_SHA512 - { "512", sha512_desc.name }, -#endif -#ifdef LTC_SHA512_224 - { "512224", sha512_224_desc.name }, -#endif -#ifdef LTC_SHA512_256 - { "512256", sha512_256_desc.name }, -#endif - { NULL, NULL } - }; - for (x = 0; shasum_compat[x].is != NULL; ++x) { - if(XSTRCMP(shasum_compat[x].is, argv[argn]) == 0) { - idxs[idx] = find_hash(shasum_compat[x].should); - break; - } - } - } - if (idxs[idx] == -1) { - fprintf(stderr, "%s: Unrecognized algorithm\n", hashsum); - die(EXIT_FAILURE); - } - idx++; - if ((size_t)idx >= sizeof(idxs)/sizeof(idxs[0])) { - fprintf(stderr, "%s: Too many '-a' options chosen\n", hashsum); - die(EXIT_FAILURE); - } - argn++; - continue; - } - else { - die(EXIT_FAILURE); - } - } - if(strcmp("-c", argv[argn]) == 0) { - check = 1; - argn++; - continue; - } - break; - } - - if (check == 1) { - check_file(argn, argc, argv); - } - - if (argc == argn) { - w = sizeof(hash_buffer); - if ((err = hash_filehandle(idxs[0], stdin, hash_buffer, &w)) != CRYPT_OK) { - fprintf(stderr, "%s: File hash error: %s\n", hashsum, error_to_string(err)); - return EXIT_FAILURE; - } else { - for (x = 0; x < w; x++) { - printf("%02x",hash_buffer[x]); - } - printf(" *-\n"); - } - } else { - for (z = argn; z < argc; z++) { - for (y = 0; y < idx; ++y) { - w = sizeof(hash_buffer); - if ((err = hash_file(idxs[y],argv[z],hash_buffer,&w)) != CRYPT_OK) { - fprintf(stderr, "%s: File hash error: %s\n", hashsum, error_to_string(err)); - return EXIT_FAILURE; - } else { - printf_hex(hash_buffer, w); - printf(" *%s\n", argv[z]); - } - } - } - } - return EXIT_SUCCESS; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/demos/ltcrypt.c b/src/libtomcrypt/demos/ltcrypt.c deleted file mode 100644 index 4be5cf3ba5..0000000000 --- a/src/libtomcrypt/demos/ltcrypt.c +++ /dev/null @@ -1,205 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* encrypt V1.1 Fri Oct 18 04:28:03 NZDT 2002 */ -/* File de/encryption, using libtomcrypt */ -/* Written by Daniel Richards */ -/* Help from Tom St Denis with various bits */ -/* This code is public domain, no rights reserved. */ -/* Encrypts by default, -d flag enables decryption */ -/* ie: ./encrypt blowfish story.txt story.ct */ -/* ./encrypt -d blowfish story.ct story.pt */ - -#include - -int usage(char *name) -{ - int x; - - printf("Usage encrypt: %s cipher infile outfile\n", name); - printf("Usage decrypt: %s -d cipher infile outfile\n", name); - printf("Usage test: %s -t cipher\nCiphers:\n", name); - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - printf("%s\n",cipher_descriptor[x].name); - } - exit(1); -} - -int main(int argc, char *argv[]) -{ - unsigned char plaintext[512],ciphertext[512]; - unsigned char tmpkey[512], key[MAXBLOCKSIZE], IV[MAXBLOCKSIZE]; - unsigned char inbuf[512]; /* i/o block size */ - unsigned long outlen, y, ivsize, x, decrypt; - symmetric_CTR ctr; - int cipher_idx, hash_idx, ks; - char *infile, *outfile, *cipher; - prng_state prng; - FILE *fdin, *fdout; - int err; - - /* register algs, so they can be printed */ - register_all_ciphers(); - register_all_hashes(); - register_all_prngs(); - - if (argc < 4) { - if ((argc > 2) && (!strcmp(argv[1], "-t"))) { - cipher = argv[2]; - cipher_idx = find_cipher(cipher); - if (cipher_idx == -1) { - printf("Invalid cipher %s entered on command line.\n", cipher); - exit(-1); - } /* if */ - if (cipher_descriptor[cipher_idx].test) - { - if (cipher_descriptor[cipher_idx].test() != CRYPT_OK) - { - printf("Error when testing cipher %s.\n", cipher); - exit(-1); - } - else - { - printf("Testing cipher %s succeeded.\n", cipher); - exit(0); - } /* if ... else */ - } /* if */ - } - return usage(argv[0]); - } - - if (!strcmp(argv[1], "-d")) { - decrypt = 1; - cipher = argv[2]; - infile = argv[3]; - outfile = argv[4]; - } else { - decrypt = 0; - cipher = argv[1]; - infile = argv[2]; - outfile = argv[3]; - } - - /* file handles setup */ - fdin = fopen(infile,"rb"); - if (fdin == NULL) { - perror("Can't open input for reading"); - exit(-1); - } - - fdout = fopen(outfile,"wb"); - if (fdout == NULL) { - perror("Can't open output for writing"); - exit(-1); - } - - cipher_idx = find_cipher(cipher); - if (cipher_idx == -1) { - printf("Invalid cipher entered on command line.\n"); - exit(-1); - } - - hash_idx = find_hash("sha256"); - if (hash_idx == -1) { - printf("LTC_SHA256 not found...?\n"); - exit(-1); - } - - ivsize = cipher_descriptor[cipher_idx].block_length; - ks = hash_descriptor[hash_idx].hashsize; - if (cipher_descriptor[cipher_idx].keysize(&ks) != CRYPT_OK) { - printf("Invalid keysize???\n"); - exit(-1); - } - - printf("\nEnter key: "); - if(fgets((char *)tmpkey,sizeof(tmpkey), stdin) == NULL) - exit(-1); - outlen = sizeof(key); - if ((err = hash_memory(hash_idx,tmpkey,strlen((char *)tmpkey),key,&outlen)) != CRYPT_OK) { - printf("Error hashing key: %s\n", error_to_string(err)); - exit(-1); - } - - if (decrypt) { - /* Need to read in IV */ - if (fread(IV,1,ivsize,fdin) != ivsize) { - printf("Error reading IV from input.\n"); - exit(-1); - } - - if ((err = ctr_start(cipher_idx,IV,key,ks,0,CTR_COUNTER_LITTLE_ENDIAN,&ctr)) != CRYPT_OK) { - printf("ctr_start error: %s\n",error_to_string(err)); - exit(-1); - } - - /* IV done */ - do { - y = fread(inbuf,1,sizeof(inbuf),fdin); - - if ((err = ctr_decrypt(inbuf,plaintext,y,&ctr)) != CRYPT_OK) { - printf("ctr_decrypt error: %s\n", error_to_string(err)); - exit(-1); - } - - if (fwrite(plaintext,1,y,fdout) != y) { - printf("Error writing to file.\n"); - exit(-1); - } - } while (y == sizeof(inbuf)); - fclose(fdin); - fclose(fdout); - - } else { /* encrypt */ - /* Setup yarrow for random bytes for IV */ - - if ((err = rng_make_prng(128, find_prng("yarrow"), &prng, NULL)) != CRYPT_OK) { - printf("Error setting up PRNG, %s\n", error_to_string(err)); - } - - /* You can use rng_get_bytes on platforms that support it */ - /* x = rng_get_bytes(IV,ivsize,NULL);*/ - x = yarrow_read(IV,ivsize,&prng); - if (x != ivsize) { - printf("Error reading PRNG for IV required.\n"); - exit(-1); - } - - if (fwrite(IV,1,ivsize,fdout) != ivsize) { - printf("Error writing IV to output.\n"); - exit(-1); - } - - if ((err = ctr_start(cipher_idx,IV,key,ks,0,CTR_COUNTER_LITTLE_ENDIAN,&ctr)) != CRYPT_OK) { - printf("ctr_start error: %s\n",error_to_string(err)); - exit(-1); - } - - do { - y = fread(inbuf,1,sizeof(inbuf),fdin); - - if ((err = ctr_encrypt(inbuf,ciphertext,y,&ctr)) != CRYPT_OK) { - printf("ctr_encrypt error: %s\n", error_to_string(err)); - exit(-1); - } - - if (fwrite(ciphertext,1,y,fdout) != y) { - printf("Error writing to output.\n"); - exit(-1); - } - } while (y == sizeof(inbuf)); - fclose(fdout); - fclose(fdin); - } - return 0; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/demos/openssl-enc.c b/src/libtomcrypt/demos/openssl-enc.c deleted file mode 100644 index e2c8ec3b9f..0000000000 --- a/src/libtomcrypt/demos/openssl-enc.c +++ /dev/null @@ -1,397 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* - * Demo to do the rough equivalent of: - * - * openssl enc -aes-256-cbc -pass pass:foobar -in infile -out outfile -p - * - * Compilation: - * - * $(CC) -I /path/to/headers -L .../libs \ - * -o openssl-enc \ - * openssl-enc.c -ltomcrypt - * - * Usage: - * - * ./openssl-enc infile outfile "passphrase" [salt] - * - * If provided, the salt must be EXACTLY a 16-char hex string. - * - * Demo is an example of: - * - * - (When decrypting) yanking salt out of the OpenSSL "Salted__..." header - * - OpenSSL-compatible key derivation (in OpenSSL's modified PKCS#5v1 approach) - * - Grabbing an Initialization Vector from the key generator - * - Performing simple block encryption using AES - * - PKCS#7-type padding (which hopefully can get ripped out of this demo and - * made a libtomcrypt thing someday). - * - * This program is free for all purposes without any express guarantee it - * works. If you really want to see a license here, assume the WTFPL :-) - * - * BJ Black, bblack@barracuda.com, https://wjblack.com - * - * BUGS: - * Passing a password on a command line is a HORRIBLE idea. Don't use - * this program for serious work! - */ - -#include - -#ifndef LTC_RIJNDAEL -#error Cannot compile this demo; Rijndael (AES) required -#endif -#ifndef LTC_CBC_MODE -#error Cannot compile this demo; CBC mode required -#endif -#ifndef LTC_PKCS_5 -#error Cannot compile this demo; PKCS5 required -#endif -#ifndef LTC_RNG_GET_BYTES -#error Cannot compile this demo; random generator required -#endif -#ifndef LTC_MD5 -#error Cannot compile this demo; MD5 required -#endif - -/* OpenSSL by default only runs one hash round */ -#define OPENSSL_ITERATIONS 1 -/* Use aes-256-cbc, so 256 bits of key, 128 of IV */ -#define KEY_LENGTH (256>>3) -#define IV_LENGTH (128>>3) -/* PKCS#5v1 requires exactly an 8-byte salt */ -#define SALT_LENGTH 8 -/* The header OpenSSL puts on an encrypted file */ -static char salt_header[] = { 'S', 'a', 'l', 't', 'e', 'd', '_', '_' }; - -#include -#include -#include - -/* A simple way to handle the possibility that a block may increase in size - after padding. */ -union paddable { - unsigned char unpad[1024]; - unsigned char pad[1024+MAXBLOCKSIZE]; -}; - -/* - * Print usage and exit with a bad status (and perror() if any errno). - * - * Input: argv[0] and the error string - * Output: - * Side Effects: print messages and barf (does exit(3)) - */ -void barf(const char *pname, const char *err) -{ - printf("Usage: %s infile outfile passphrase [salt]\n", pname); - printf("\n"); - printf(" # encrypts infile->outfile, random salt\n"); - printf(" %s enc infile outfile \"passphrase\"\n", pname); - printf("\n"); - printf(" # encrypts infile->outfile, salt from cmdline\n"); - printf(" %s enc infile outfile pass 0123456789abcdef\n", pname); - printf("\n"); - printf(" # decrypts infile->outfile, pulls salt from infile\n"); - printf(" %s dec infile outfile pass\n", pname); - printf("\n"); - printf(" # decrypts infile->outfile, salt specified\n"); - printf(" # (don't try to read the salt from infile)\n"); - printf(" %s dec infile outfile pass 0123456789abcdef" - "\n", pname); - printf("\n"); - printf("Application Error: %s\n", err); - if(errno) - perror(" System Error"); - exit(-1); -} - -/* - * Parse a salt value passed in on the cmdline. - * - * Input: string passed in and a buf to put it in (exactly 8 bytes!) - * Output: CRYPT_OK if parsed OK, CRYPT_ERROR if not - * Side Effects: none - */ -int parse_hex_salt(unsigned char *in, unsigned char *out) -{ - int idx; - for(idx=0; idxpad+nb, padval, padval); - return nb+padval; - } else { - /* We are UNPADDING this block (and removing bytes) - We really just need to verify that the pad bytes are correct, - so start at the end of the string and work backwards. */ - - /* Figure out what the padlength should be by looking at the - last byte */ - idx = nb-1; - padval = buf->pad[idx]; - - /* padval must be nonzero and <= block length */ - if(padval <= 0 || padval > block_length) - return 0; - - /* First byte's accounted for; do the rest */ - idx--; - - while(idx >= (off_t)(nb-padval)) - if(buf->pad[idx] != padval) - return 0; - else - idx--; - - /* If we got here, the pad checked out, so return a smaller - number of bytes than nb (basically where we left off+1) */ - return idx+1; - } -} - -/* - * Perform an encrypt/decrypt operation to/from files using AES+CBC+PKCS7 pad. - * Set encrypt to 1 to encrypt, 0 to decrypt. - * - * Input: in/out files, key, iv, and mode - * Output: CRYPT_OK if no error - * Side Effects: bytes slurped from infile, pushed to outfile, fds updated. - */ -int do_crypt(FILE *infd, FILE *outfd, unsigned char *key, unsigned char *iv, - int encrypt) -{ - union paddable inbuf, outbuf; - int cipher, ret; - symmetric_CBC cbc; - size_t nb; - - /* Register your cipher! */ - cipher = register_cipher(&aes_desc); - if(cipher == -1) - return CRYPT_INVALID_CIPHER; - - /* Start a CBC session with cipher/key/val params */ - ret = cbc_start(cipher, iv, key, KEY_LENGTH, 0, &cbc); - if( ret != CRYPT_OK ) - return -1; - - do { - /* Get bytes from the source */ - nb = fread(inbuf.unpad, 1, sizeof(inbuf.unpad), infd); - if(!nb) - return encrypt ? CRYPT_OK : CRYPT_ERROR; - - /* Barf if we got a read error */ - if(ferror(infd)) - return CRYPT_ERROR; - - if(encrypt) { - /* We're encrypting, so pad first (if at EOF) and then - crypt */ - if(feof(infd)) - nb = pkcs7_pad(&inbuf, nb, - aes_desc.block_length, 1); - - ret = cbc_encrypt(inbuf.pad, outbuf.pad, nb, &cbc); - if(ret != CRYPT_OK) - return ret; - - } else { - /* We're decrypting, so decrypt and then unpad if at - EOF */ - ret = cbc_decrypt(inbuf.unpad, outbuf.unpad, nb, &cbc); - if( ret != CRYPT_OK ) - return ret; - - if( feof(infd) ) - nb = pkcs7_pad(&outbuf, nb, - aes_desc.block_length, 0); - if(nb == 0) - /* The file didn't decrypt correctly */ - return CRYPT_ERROR; - - } - - /* Push bytes to outfile */ - if(fwrite(outbuf.unpad, 1, nb, outfd) != nb) - return CRYPT_ERROR; - - } while(!feof(infd)); - - /* Close up */ - cbc_done(&cbc); - - return CRYPT_OK; -} - -/* Convenience macro for the various barfable places below */ -#define BARF(a) { \ - if(infd) fclose(infd); \ - if(outfd) { fclose(outfd); remove(argv[3]); } \ - barf(argv[0], a); \ -} -/* - * The main routine. Mostly validate cmdline params, open files, run the KDF, - * and do the crypt. - */ -int main(int argc, char *argv[]) { - unsigned char salt[SALT_LENGTH]; - FILE *infd = NULL, *outfd = NULL; - int encrypt = -1; - int hash = -1; - int ret; - unsigned char keyiv[KEY_LENGTH + IV_LENGTH]; - unsigned long keyivlen = (KEY_LENGTH + IV_LENGTH); - unsigned char *key, *iv; - - /* Check proper number of cmdline args */ - if(argc < 5 || argc > 6) - BARF("Invalid number of arguments"); - - /* Check proper mode of operation */ - if (!strncmp(argv[1], "enc", 3)) - encrypt = 1; - else if(!strncmp(argv[1], "dec", 3)) - encrypt = 0; - else - BARF("Bad command name"); - - /* Check we can open infile/outfile */ - infd = fopen(argv[2], "rb"); - if(infd == NULL) - BARF("Could not open infile"); - outfd = fopen(argv[3], "wb"); - if(outfd == NULL) - BARF("Could not open outfile"); - - /* Get the salt from wherever */ - if(argc == 6) { - /* User-provided */ - if(parse_hex_salt((unsigned char*) argv[5], salt) != CRYPT_OK) - BARF("Bad user-specified salt"); - } else if(!strncmp(argv[1], "enc", 3)) { - /* Encrypting; get from RNG */ - if(rng_get_bytes(salt, sizeof(salt), NULL) != sizeof(salt)) - BARF("Not enough random data"); - } else { - /* Parse from infile (decrypt only) */ - if(parse_openssl_header(infd, salt) != CRYPT_OK) - BARF("Invalid OpenSSL header in infile"); - } - - /* Fetch the MD5 hasher for PKCS#5 */ - hash = register_hash(&md5_desc); - if(hash == -1) - BARF("Could not register MD5 hash"); - - /* Set things to a sane initial state */ - zeromem(keyiv, sizeof(keyiv)); - key = keyiv + 0; /* key comes first */ - iv = keyiv + KEY_LENGTH; /* iv comes next */ - - /* Run the key derivation from the provided passphrase. This gets us - the key and iv. */ - ret = pkcs_5_alg1_openssl((unsigned char*)argv[4], strlen(argv[4]), salt, - OPENSSL_ITERATIONS, hash, keyiv, &keyivlen ); - if(ret != CRYPT_OK) - BARF("Could not derive key/iv from passphrase"); - - /* Display the salt/key/iv like OpenSSL cmdline does when -p */ - printf("salt="); dump_bytes(salt, sizeof(salt)); printf("\n"); - printf("key="); dump_bytes(key, KEY_LENGTH); printf("\n"); - printf("iv ="); dump_bytes(iv, IV_LENGTH ); printf("\n"); - - /* If we're encrypting, write the salt header as OpenSSL does */ - if(!strncmp(argv[1], "enc", 3)) { - if(fwrite(salt_header, 1, sizeof(salt_header), outfd) != - sizeof(salt_header) ) - BARF("Error writing salt header to outfile"); - if(fwrite(salt, 1, sizeof(salt), outfd) != sizeof(salt)) - BARF("Error writing salt to outfile"); - } - - /* At this point, the files are open, the salt has been figured out, - and we're ready to pump data through crypt. */ - - /* Do the crypt operation */ - if(do_crypt(infd, outfd, key, iv, encrypt) != CRYPT_OK) - BARF("Error during crypt operation"); - - /* Clean up */ - fclose(infd); fclose(outfd); - return 0; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/demos/sizes.c b/src/libtomcrypt/demos/sizes.c deleted file mode 100644 index 4caf93c051..0000000000 --- a/src/libtomcrypt/demos/sizes.c +++ /dev/null @@ -1,81 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L -#include -#else -#define basename(x) x -#endif -/** - @file demo_crypt_sizes.c - - Demo how to get various sizes to dynamic languages - like Python - Larry Bugbee, February 2013 -*/ - -static void _print_line(const char* cmd, const char* desc) -{ - printf(" %-16s - %s\n", cmd, desc); -} - -int main(int argc, char **argv) -{ - if (argc == 1) { - /* given a specific size name, get and print its size */ - char name[] = "ltc_hash_descriptor"; - unsigned int size; - char *sizes_list; - unsigned int sizes_list_len; - if (crypt_get_size(name, &size) != 0) exit(EXIT_FAILURE); - printf("\n size of '%s' is %u \n\n", name, size); - - /* get and print the length of the names (and sizes) list */ - if (crypt_list_all_sizes(NULL, &sizes_list_len) != 0) exit(EXIT_FAILURE); - printf(" need to allocate %u bytes \n\n", sizes_list_len); - - /* get and print the names (and sizes) list */ - if ((sizes_list = malloc(sizes_list_len)) == NULL) exit(EXIT_FAILURE); - if (crypt_list_all_sizes(sizes_list, &sizes_list_len) != 0) exit(EXIT_FAILURE); - printf(" supported sizes:\n\n%s\n\n", sizes_list); - free(sizes_list); - } else if (argc == 2) { - if (strcmp(argv[1], "-h") == 0 || strcmp(argv[1], "--help") == 0) { - char* base = strdup(basename(argv[0])); - printf("Usage: %s [-a] [-s name]\n\n", base); - _print_line("", "The old behavior of the demo"); - _print_line("-a", "Only lists all sizes"); - _print_line("-s name", "List a single size given as argument"); - _print_line("-h", "The help you're looking at"); - free(base); - } else if (strcmp(argv[1], "-a") == 0) { - char *sizes_list; - unsigned int sizes_list_len; - /* get and print the length of the names (and sizes) list */ - if (crypt_list_all_sizes(NULL, &sizes_list_len) != 0) exit(EXIT_FAILURE); - /* get and print the names (and sizes) list */ - if ((sizes_list = malloc(sizes_list_len)) == NULL) exit(EXIT_FAILURE); - if (crypt_list_all_sizes(sizes_list, &sizes_list_len) != 0) exit(EXIT_FAILURE); - printf("%s\n", sizes_list); - free(sizes_list); - } - } else if (argc == 3) { - if (strcmp(argv[1], "-s") == 0) { - unsigned int size; - if (crypt_get_size(argv[2], &size) != 0) exit(EXIT_FAILURE); - printf("%s,%u\n", argv[2], size); - } - } - return 0; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/demos/small.c b/src/libtomcrypt/demos/small.c deleted file mode 100644 index 9de388aef2..0000000000 --- a/src/libtomcrypt/demos/small.c +++ /dev/null @@ -1,22 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -/* small demo app that just includes a cipher/hash/prng */ -#include - -int main(void) -{ - register_cipher(&rijndael_enc_desc); - register_prng(&yarrow_desc); - register_hash(&sha256_desc); - return 0; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/demos/timing.c b/src/libtomcrypt/demos/timing.c deleted file mode 100644 index 6e4379a23d..0000000000 --- a/src/libtomcrypt/demos/timing.c +++ /dev/null @@ -1,1468 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -#if defined(_WIN32) - #define PRI64 "I64d" -#else - #define PRI64 "ll" -#endif - -static prng_state yarrow_prng; - -/* timing */ -#define KTIMES 25 -#define TIMES 100000 - -static struct list { - int id; - ulong64 spd1, spd2, avg; -} results[100]; -static int no_results; - -static int sorter(const void *a, const void *b) -{ - const struct list *A, *B; - A = a; - B = b; - if (A->avg < B->avg) return -1; - if (A->avg > B->avg) return 1; - return 0; -} - -static void tally_results(int type) -{ - int x; - - /* qsort the results */ - qsort(results, no_results, sizeof(struct list), &sorter); - - fprintf(stderr, "\n"); - if (type == 0) { - for (x = 0; x < no_results; x++) { - fprintf(stderr, "%-20s: Schedule at %6lu\n", cipher_descriptor[results[x].id].name, (unsigned long)results[x].spd1); - } - } else if (type == 1) { - for (x = 0; x < no_results; x++) { - printf - ("%-20s[%3d]: Encrypt at %5"PRI64"u, Decrypt at %5"PRI64"u\n", cipher_descriptor[results[x].id].name, cipher_descriptor[results[x].id].ID, results[x].spd1, results[x].spd2); - } - } else { - for (x = 0; x < no_results; x++) { - printf - ("%-20s: Process at %5"PRI64"u\n", hash_descriptor[results[x].id].name, results[x].spd1 / 1000); - } - } -} - -/* RDTSC from Scott Duplichan */ -static ulong64 rdtsc (void) - { - #if defined __GNUC__ && !defined(LTC_NO_ASM) - #if defined(__i386__) || defined(__x86_64__) - /* version from http://www.mcs.anl.gov/~kazutomo/rdtsc.html - * the old code always got a warning issued by gcc, clang did not complain... - */ - unsigned hi, lo; - __asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi)); - return ((ulong64)lo)|( ((ulong64)hi)<<32); - #elif defined(LTC_PPC32) || defined(TFM_PPC32) - unsigned long a, b; - __asm__ __volatile__ ("mftbu %1 \nmftb %0\n":"=r"(a), "=r"(b)); - return (((ulong64)b) << 32ULL) | ((ulong64)a); - #elif defined(__ia64__) /* gcc-IA64 version */ - unsigned long result; - __asm__ __volatile__("mov %0=ar.itc" : "=r"(result) :: "memory"); - while (__builtin_expect ((int) result == -1, 0)) - __asm__ __volatile__("mov %0=ar.itc" : "=r"(result) :: "memory"); - return result; - #elif defined(__sparc__) - #if defined(__arch64__) - ulong64 a; - asm volatile("rd %%tick,%0" : "=r" (a)); - return a; - #else - register unsigned long x, y; - __asm__ __volatile__ ("rd %%tick, %0; clruw %0, %1; srlx %0, 32, %0" : "=r" (x), "=r" (y) : "0" (x), "1" (y)); - return ((unsigned long long) x << 32) | y; - #endif - #else - return XCLOCK(); - #endif - - /* Microsoft and Intel Windows compilers */ - #elif defined _M_IX86 && !defined(LTC_NO_ASM) - __asm rdtsc - #elif defined _M_AMD64 && !defined(LTC_NO_ASM) - return __rdtsc (); - #elif defined _M_IA64 && !defined(LTC_NO_ASM) - #if defined __INTEL_COMPILER - #include - #endif - return __getReg (3116); - #else - return XCLOCK(); - #endif - } - -static ulong64 timer, skew = 0; - -static void t_start(void) -{ - timer = rdtsc(); -} - -static ulong64 t_read(void) -{ - return rdtsc() - timer; -} - -static void init_timer(void) -{ - ulong64 c1, c2, t1, t2; - unsigned long y1; - - c1 = c2 = (ulong64)-1; - for (y1 = 0; y1 < TIMES*100; y1++) { - t_start(); - t1 = t_read(); - t2 = (t_read() - t1)>>1; - - c1 = (t1 > c1) ? t1 : c1; - c2 = (t2 > c2) ? t2 : c2; - } - skew = c2 - c1; - fprintf(stderr, "Clock Skew: %lu\n", (unsigned long)skew); -} - -static void time_keysched(void) -{ - unsigned long x, y1; - ulong64 t1, c1; - symmetric_key skey; - int kl; - int (*func) (const unsigned char *, int , int , symmetric_key *); - unsigned char key[MAXBLOCKSIZE]; - - fprintf(stderr, "\n\nKey Schedule Time Trials for the Symmetric Ciphers:\n(Times are cycles per key)\n"); - no_results = 0; - for (x = 0; cipher_descriptor[x].name != NULL; x++) { -#define DO1(k) func(k, kl, 0, &skey); - - func = cipher_descriptor[x].setup; - kl = cipher_descriptor[x].min_key_length; - c1 = (ulong64)-1; - for (y1 = 0; y1 < KTIMES; y1++) { - yarrow_read(key, kl, &yarrow_prng); - t_start(); - DO1(key); - t1 = t_read(); - c1 = (t1 > c1) ? c1 : t1; - } - t1 = c1 - skew; - results[no_results].spd1 = results[no_results].avg = t1; - results[no_results++].id = x; - fprintf(stderr, "."); fflush(stdout); - -#undef DO1 - } - tally_results(0); -} - -#ifdef LTC_ECB_MODE -static void time_cipher_ecb(void) -{ - unsigned long x, y1; - ulong64 t1, t2, c1, c2, a1, a2; - symmetric_ECB ecb; - unsigned char key[MAXBLOCKSIZE] = { 0 }, pt[4096] = { 0 }; - int err; - - fprintf(stderr, "\n\nECB Time Trials for the Symmetric Ciphers:\n"); - no_results = 0; - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - ecb_start(x, key, cipher_descriptor[x].min_key_length, 0, &ecb); - - /* sanity check on cipher */ - if ((err = cipher_descriptor[x].test()) != CRYPT_OK) { - fprintf(stderr, "\n\nERROR: Cipher %s failed self-test %s\n", cipher_descriptor[x].name, error_to_string(err)); - exit(EXIT_FAILURE); - } - -#define DO1 ecb_encrypt(pt, pt, sizeof(pt), &ecb); -#define DO2 DO1 DO1 - - c1 = c2 = (ulong64)-1; - for (y1 = 0; y1 < 100; y1++) { - t_start(); - DO1; - t1 = t_read(); - DO2; - t2 = t_read(); - t2 -= t1; - - c1 = (t1 > c1 ? c1 : t1); - c2 = (t2 > c2 ? c2 : t2); - } - a1 = c2 - c1 - skew; - -#undef DO1 -#undef DO2 -#define DO1 ecb_decrypt(pt, pt, sizeof(pt), &ecb); -#define DO2 DO1 DO1 - - c1 = c2 = (ulong64)-1; - for (y1 = 0; y1 < 100; y1++) { - t_start(); - DO1; - t1 = t_read(); - DO2; - t2 = t_read(); - t2 -= t1; - - c1 = (t1 > c1 ? c1 : t1); - c2 = (t2 > c2 ? c2 : t2); - } - a2 = c2 - c1 - skew; - ecb_done(&ecb); - - results[no_results].id = x; - results[no_results].spd1 = a1/(sizeof(pt)/cipher_descriptor[x].block_length); - results[no_results].spd2 = a2/(sizeof(pt)/cipher_descriptor[x].block_length); - results[no_results].avg = (results[no_results].spd1 + results[no_results].spd2+1)/2; - ++no_results; - fprintf(stderr, "."); fflush(stdout); - -#undef DO2 -#undef DO1 - } - tally_results(1); -} -#else -static void time_cipher_ecb(void) { fprintf(stderr, "NO ECB\n"); return 0; } -#endif - -#ifdef LTC_CBC_MODE -static void time_cipher_cbc(void) -{ - unsigned long x, y1; - ulong64 t1, t2, c1, c2, a1, a2; - symmetric_CBC cbc; - unsigned char key[MAXBLOCKSIZE] = { 0 }, pt[4096] = { 0 }; - int err; - - fprintf(stderr, "\n\nCBC Time Trials for the Symmetric Ciphers:\n"); - no_results = 0; - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - cbc_start(x, pt, key, cipher_descriptor[x].min_key_length, 0, &cbc); - - /* sanity check on cipher */ - if ((err = cipher_descriptor[x].test()) != CRYPT_OK) { - fprintf(stderr, "\n\nERROR: Cipher %s failed self-test %s\n", cipher_descriptor[x].name, error_to_string(err)); - exit(EXIT_FAILURE); - } - -#define DO1 cbc_encrypt(pt, pt, sizeof(pt), &cbc); -#define DO2 DO1 DO1 - - c1 = c2 = (ulong64)-1; - for (y1 = 0; y1 < 100; y1++) { - t_start(); - DO1; - t1 = t_read(); - DO2; - t2 = t_read(); - t2 -= t1; - - c1 = (t1 > c1 ? c1 : t1); - c2 = (t2 > c2 ? c2 : t2); - } - a1 = c2 - c1 - skew; - -#undef DO1 -#undef DO2 -#define DO1 cbc_decrypt(pt, pt, sizeof(pt), &cbc); -#define DO2 DO1 DO1 - - c1 = c2 = (ulong64)-1; - for (y1 = 0; y1 < 100; y1++) { - t_start(); - DO1; - t1 = t_read(); - DO2; - t2 = t_read(); - t2 -= t1; - - c1 = (t1 > c1 ? c1 : t1); - c2 = (t2 > c2 ? c2 : t2); - } - a2 = c2 - c1 - skew; - cbc_done(&cbc); - - results[no_results].id = x; - results[no_results].spd1 = a1/(sizeof(pt)/cipher_descriptor[x].block_length); - results[no_results].spd2 = a2/(sizeof(pt)/cipher_descriptor[x].block_length); - results[no_results].avg = (results[no_results].spd1 + results[no_results].spd2+1)/2; - ++no_results; - fprintf(stderr, "."); fflush(stdout); - -#undef DO2 -#undef DO1 - } - tally_results(1); -} -#else -static void time_cipher_cbc(void) { fprintf(stderr, "NO CBC\n"); return 0; } -#endif - -#ifdef LTC_CTR_MODE -static void time_cipher_ctr(void) -{ - unsigned long x, y1; - ulong64 t1, t2, c1, c2, a1, a2; - symmetric_CTR ctr; - unsigned char key[MAXBLOCKSIZE] = { 0 }, pt[4096] = { 0 }; - int err; - - fprintf(stderr, "\n\nCTR Time Trials for the Symmetric Ciphers:\n"); - no_results = 0; - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - ctr_start(x, pt, key, cipher_descriptor[x].min_key_length, 0, CTR_COUNTER_LITTLE_ENDIAN, &ctr); - - /* sanity check on cipher */ - if ((err = cipher_descriptor[x].test()) != CRYPT_OK) { - fprintf(stderr, "\n\nERROR: Cipher %s failed self-test %s\n", cipher_descriptor[x].name, error_to_string(err)); - exit(EXIT_FAILURE); - } - -#define DO1 ctr_encrypt(pt, pt, sizeof(pt), &ctr); -#define DO2 DO1 DO1 - - c1 = c2 = (ulong64)-1; - for (y1 = 0; y1 < 100; y1++) { - t_start(); - DO1; - t1 = t_read(); - DO2; - t2 = t_read(); - t2 -= t1; - - c1 = (t1 > c1 ? c1 : t1); - c2 = (t2 > c2 ? c2 : t2); - } - a1 = c2 - c1 - skew; - -#undef DO1 -#undef DO2 -#define DO1 ctr_decrypt(pt, pt, sizeof(pt), &ctr); -#define DO2 DO1 DO1 - - c1 = c2 = (ulong64)-1; - for (y1 = 0; y1 < 100; y1++) { - t_start(); - DO1; - t1 = t_read(); - DO2; - t2 = t_read(); - t2 -= t1; - - c1 = (t1 > c1 ? c1 : t1); - c2 = (t2 > c2 ? c2 : t2); - } - a2 = c2 - c1 - skew; - ctr_done(&ctr); - - results[no_results].id = x; - results[no_results].spd1 = a1/(sizeof(pt)/cipher_descriptor[x].block_length); - results[no_results].spd2 = a2/(sizeof(pt)/cipher_descriptor[x].block_length); - results[no_results].avg = (results[no_results].spd1 + results[no_results].spd2+1)/2; - ++no_results; - fprintf(stderr, "."); fflush(stdout); - -#undef DO2 -#undef DO1 - } - tally_results(1); -} -#else -static void time_cipher_ctr(void) { fprintf(stderr, "NO CTR\n"); return 0; } -#endif - -#ifdef LTC_LRW_MODE -static void time_cipher_lrw(void) -{ - unsigned long x, y1; - ulong64 t1, t2, c1, c2, a1, a2; - symmetric_LRW lrw; - unsigned char key[MAXBLOCKSIZE] = { 0 }, pt[4096] = { 0 }; - int err; - - fprintf(stderr, "\n\nLRW Time Trials for the Symmetric Ciphers:\n"); - no_results = 0; - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - if (cipher_descriptor[x].block_length != 16) continue; - lrw_start(x, pt, key, cipher_descriptor[x].min_key_length, key, 0, &lrw); - - /* sanity check on cipher */ - if ((err = cipher_descriptor[x].test()) != CRYPT_OK) { - fprintf(stderr, "\n\nERROR: Cipher %s failed self-test %s\n", cipher_descriptor[x].name, error_to_string(err)); - exit(EXIT_FAILURE); - } - -#define DO1 lrw_encrypt(pt, pt, sizeof(pt), &lrw); -#define DO2 DO1 DO1 - - c1 = c2 = (ulong64)-1; - for (y1 = 0; y1 < 100; y1++) { - t_start(); - DO1; - t1 = t_read(); - DO2; - t2 = t_read(); - t2 -= t1; - - c1 = (t1 > c1 ? c1 : t1); - c2 = (t2 > c2 ? c2 : t2); - } - a1 = c2 - c1 - skew; - -#undef DO1 -#undef DO2 -#define DO1 lrw_decrypt(pt, pt, sizeof(pt), &lrw); -#define DO2 DO1 DO1 - - c1 = c2 = (ulong64)-1; - for (y1 = 0; y1 < 100; y1++) { - t_start(); - DO1; - t1 = t_read(); - DO2; - t2 = t_read(); - t2 -= t1; - - c1 = (t1 > c1 ? c1 : t1); - c2 = (t2 > c2 ? c2 : t2); - } - a2 = c2 - c1 - skew; - - lrw_done(&lrw); - - results[no_results].id = x; - results[no_results].spd1 = a1/(sizeof(pt)/cipher_descriptor[x].block_length); - results[no_results].spd2 = a2/(sizeof(pt)/cipher_descriptor[x].block_length); - results[no_results].avg = (results[no_results].spd1 + results[no_results].spd2+1)/2; - ++no_results; - fprintf(stderr, "."); fflush(stdout); - -#undef DO2 -#undef DO1 - } - tally_results(1); -} -#else -static void time_cipher_lrw(void) { fprintf(stderr, "NO LRW\n"); } -#endif - - -static void time_hash(void) -{ - unsigned long x, y1, len; - ulong64 t1, t2, c1, c2; - hash_state md; - int (*func)(hash_state *, const unsigned char *, unsigned long), err; - unsigned char pt[MAXBLOCKSIZE] = { 0 }; - - - fprintf(stderr, "\n\nHASH Time Trials for:\n"); - no_results = 0; - for (x = 0; hash_descriptor[x].name != NULL; x++) { - - /* sanity check on hash */ - if ((err = hash_descriptor[x].test()) != CRYPT_OK) { - fprintf(stderr, "\n\nERROR: Hash %s failed self-test %s\n", hash_descriptor[x].name, error_to_string(err)); - exit(EXIT_FAILURE); - } - - hash_descriptor[x].init(&md); - -#define DO1 func(&md,pt,len); -#define DO2 DO1 DO1 - - func = hash_descriptor[x].process; - len = hash_descriptor[x].blocksize; - - c1 = c2 = (ulong64)-1; - for (y1 = 0; y1 < TIMES; y1++) { - t_start(); - DO1; - t1 = t_read(); - DO2; - t2 = t_read() - t1; - c1 = (t1 > c1) ? c1 : t1; - c2 = (t2 > c2) ? c2 : t2; - } - t1 = c2 - c1 - skew; - t1 = ((t1 * CONST64(1000))) / ((ulong64)hash_descriptor[x].blocksize); - results[no_results].id = x; - results[no_results].spd1 = results[no_results].avg = t1; - ++no_results; - fprintf(stderr, "."); fflush(stdout); -#undef DO2 -#undef DO1 - } - tally_results(2); -} - -/*#warning you need an mp_rand!!!*/ -#if !defined(USE_LTM) && !defined(USE_TFM) && !defined(USE_GMP) && !defined(EXT_MATH_LIB) - #undef LTC_MPI - #undef LTC_TEST_MPI -#else - #define LTC_TEST_MPI -#endif - -#ifdef LTC_MPI -static void time_mult(void) -{ - ulong64 t1, t2; - unsigned long x, y; - void *a, *b, *c; - - fprintf(stderr, "Timing Multiplying:\n"); - mp_init_multi(&a,&b,&c,NULL); - for (x = 128/MP_DIGIT_BIT; x <= (unsigned long)1536/MP_DIGIT_BIT; x += 128/MP_DIGIT_BIT) { - mp_rand(a, x); - mp_rand(b, x); - -#define DO1 mp_mul(a, b, c); -#define DO2 DO1; DO1; - - t2 = -1; - for (y = 0; y < TIMES; y++) { - t_start(); - t1 = t_read(); - DO2; - t1 = (t_read() - t1)>>1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "%4lu bits: %9"PRI64"u cycles\n", x*MP_DIGIT_BIT, t2); - } - mp_clear_multi(a,b,c,NULL); - -#undef DO1 -#undef DO2 -} - -static void time_sqr(void) -{ - ulong64 t1, t2; - unsigned long x, y; - void *a, *b; - - fprintf(stderr, "Timing Squaring:\n"); - mp_init_multi(&a,&b,NULL); - for (x = 128/MP_DIGIT_BIT; x <= (unsigned long)1536/MP_DIGIT_BIT; x += 128/MP_DIGIT_BIT) { - mp_rand(a, x); - -#define DO1 mp_sqr(a, b); -#define DO2 DO1; DO1; - - t2 = -1; - for (y = 0; y < TIMES; y++) { - t_start(); - t1 = t_read(); - DO2; - t1 = (t_read() - t1)>>1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "%4lu bits: %9"PRI64"u cycles\n", x*MP_DIGIT_BIT, t2); - } - mp_clear_multi(a,b,NULL); - -#undef DO1 -#undef DO2 -} -#else -static void time_mult(void) { fprintf(stderr, "NO MULT\n"); } -static void time_sqr(void) { fprintf(stderr, "NO SQR\n"); } -#endif - -static void time_prng(void) -{ - ulong64 t1, t2; - unsigned char buf[4096]; - prng_state tprng; - unsigned long x, y; - int err; - - fprintf(stderr, "Timing PRNGs (cycles/byte output, cycles add_entropy (32 bytes) :\n"); - for (x = 0; prng_descriptor[x].name != NULL; x++) { - - /* sanity check on prng */ - if ((err = prng_descriptor[x].test()) != CRYPT_OK) { - fprintf(stderr, "\n\nERROR: PRNG %s failed self-test %s\n", prng_descriptor[x].name, error_to_string(err)); - exit(EXIT_FAILURE); - } - - prng_descriptor[x].start(&tprng); - zeromem(buf, 256); - prng_descriptor[x].add_entropy(buf, 256, &tprng); - prng_descriptor[x].ready(&tprng); - t2 = -1; - -#define DO1 if (prng_descriptor[x].read(buf, 4096, &tprng) != 4096) { fprintf(stderr, "\n\nERROR READ != 4096\n\n"); exit(EXIT_FAILURE); } -#define DO2 DO1 DO1 - for (y = 0; y < 10000; y++) { - t_start(); - t1 = t_read(); - DO2; - t1 = (t_read() - t1)>>1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "%20s: %5"PRI64"u ", prng_descriptor[x].name, t2>>12); -#undef DO2 -#undef DO1 - -#define DO1 prng_descriptor[x].start(&tprng); prng_descriptor[x].add_entropy(buf, 32, &tprng); prng_descriptor[x].ready(&tprng); prng_descriptor[x].done(&tprng); -#define DO2 DO1 DO1 - for (y = 0; y < 10000; y++) { - t_start(); - t1 = t_read(); - DO2; - t1 = (t_read() - t1)>>1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "%5"PRI64"u\n", t2); -#undef DO2 -#undef DO1 - - } -} - -#if defined(LTC_MDSA) && defined(LTC_TEST_MPI) -/* time various DSA operations */ -static void time_dsa(void) -{ - dsa_key key; - ulong64 t1, t2; - unsigned long x, y; - int err; -static const struct { - int group, modulus; -} groups[] = { -{ 20, 96 }, -{ 20, 128 }, -{ 24, 192 }, -{ 28, 256 }, -#ifndef TFM_DESC -{ 32, 512 }, -#endif -}; - - for (x = 0; x < (sizeof(groups)/sizeof(groups[0])); x++) { - t2 = 0; - for (y = 0; y < 4; y++) { - t_start(); - t1 = t_read(); - if ((err = dsa_generate_pqg(&yarrow_prng, find_prng("yarrow"), groups[x].group, groups[x].modulus, &key)) != CRYPT_OK) { - fprintf(stderr, "\n\ndsa_generate_pqg says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - if ((err = dsa_generate_key(&yarrow_prng, find_prng("yarrow"), &key)) != CRYPT_OK) { - fprintf(stderr, "\n\ndsa_make_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - t2 += t1; - -#ifdef LTC_PROFILE - t2 <<= 2; - break; -#endif - if (y < 3) { - dsa_free(&key); - } - } - t2 >>= 2; - fprintf(stderr, "DSA-(%lu, %lu) make_key took %15"PRI64"u cycles\n", (unsigned long)groups[x].group*8, (unsigned long)groups[x].modulus*8, t2); - dsa_free(&key); - } - fprintf(stderr, "\n\n"); -} -#else -static void time_dsa(void) { fprintf(stderr, "NO DSA\n"); } -#endif - - -#if defined(LTC_MRSA) && defined(LTC_TEST_MPI) -/* time various RSA operations */ -static void time_rsa(void) -{ - rsa_key key; - ulong64 t1, t2; - unsigned char buf[2][2048] = { 0 }; - unsigned long x, y, z, zzz; - int err, zz, stat; - - for (x = 1024; x <= 2048; x += 256) { - t2 = 0; - for (y = 0; y < 4; y++) { - t_start(); - t1 = t_read(); - if ((err = rsa_make_key(&yarrow_prng, find_prng("yarrow"), x/8, 65537, &key)) != CRYPT_OK) { - fprintf(stderr, "\n\nrsa_make_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - t2 += t1; - -#ifdef LTC_PROFILE - t2 <<= 2; - break; -#endif - - if (y < 3) { - rsa_free(&key); - } - } - t2 >>= 2; - fprintf(stderr, "RSA-%lu make_key took %15"PRI64"u cycles\n", x, t2); - - t2 = 0; - for (y = 0; y < 16; y++) { - t_start(); - t1 = t_read(); - z = sizeof(buf[1]); - if ((err = rsa_encrypt_key(buf[0], 32, buf[1], &z, (const unsigned char *)"testprog", 8, &yarrow_prng, - find_prng("yarrow"), find_hash("sha1"), - &key)) != CRYPT_OK) { - fprintf(stderr, "\n\nrsa_encrypt_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - t2 += t1; -#ifdef LTC_PROFILE - t2 <<= 4; - break; -#endif - } - t2 >>= 4; - fprintf(stderr, "RSA-%lu encrypt_key took %15"PRI64"u cycles\n", x, t2); - - t2 = 0; - for (y = 0; y < 2048; y++) { - t_start(); - t1 = t_read(); - zzz = sizeof(buf[0]); - if ((err = rsa_decrypt_key(buf[1], z, buf[0], &zzz, (const unsigned char *)"testprog", 8, find_hash("sha1"), - &zz, &key)) != CRYPT_OK) { - fprintf(stderr, "\n\nrsa_decrypt_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - t2 += t1; -#ifdef LTC_PROFILE - t2 <<= 11; - break; -#endif - } - t2 >>= 11; - fprintf(stderr, "RSA-%lu decrypt_key took %15"PRI64"u cycles\n", x, t2); - - t2 = 0; - for (y = 0; y < 256; y++) { - t_start(); - t1 = t_read(); - z = sizeof(buf[1]); - if ((err = rsa_sign_hash(buf[0], 20, buf[1], &z, &yarrow_prng, - find_prng("yarrow"), find_hash("sha1"), 8, &key)) != CRYPT_OK) { - fprintf(stderr, "\n\nrsa_sign_hash says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - t2 += t1; -#ifdef LTC_PROFILE - t2 <<= 8; - break; -#endif - } - t2 >>= 8; - fprintf(stderr, "RSA-%lu sign_hash took %15"PRI64"u cycles\n", x, t2); - - t2 = 0; - for (y = 0; y < 2048; y++) { - t_start(); - t1 = t_read(); - if ((err = rsa_verify_hash(buf[1], z, buf[0], 20, find_hash("sha1"), 8, &stat, &key)) != CRYPT_OK) { - fprintf(stderr, "\n\nrsa_verify_hash says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - if (stat == 0) { - fprintf(stderr, "\n\nrsa_verify_hash for RSA-%lu failed to verify signature(%lu)\n", x, y); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - t2 += t1; -#ifdef LTC_PROFILE - t2 <<= 11; - break; -#endif - } - t2 >>= 11; - fprintf(stderr, "RSA-%lu verify_hash took %15"PRI64"u cycles\n", x, t2); - fprintf(stderr, "\n\n"); - rsa_free(&key); - } -} -#else -static void time_rsa(void) { fprintf(stderr, "NO RSA\n"); } -#endif - -#if defined(LTC_MKAT) && defined(LTC_TEST_MPI) -/* time various KAT operations */ -static void time_katja(void) -{ - katja_key key; - ulong64 t1, t2; - unsigned char buf[2][4096]; - unsigned long x, y, z, zzz; - int err, zz; - - for (x = 1024; x <= 2048; x += 256) { - t2 = 0; - for (y = 0; y < 4; y++) { - t_start(); - t1 = t_read(); - if ((err = katja_make_key(&yarrow_prng, find_prng("yarrow"), x/8, &key)) != CRYPT_OK) { - fprintf(stderr, "\n\nkatja_make_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - t2 += t1; - - if (y < 3) { - katja_free(&key); - } - } - t2 >>= 2; - fprintf(stderr, "Katja-%lu make_key took %15"PRI64"u cycles\n", x, t2); - - t2 = 0; - for (y = 0; y < 16; y++) { - t_start(); - t1 = t_read(); - z = sizeof(buf[1]); - if ((err = katja_encrypt_key(buf[0], 32, buf[1], &z, "testprog", 8, &yarrow_prng, - find_prng("yarrow"), find_hash("sha1"), - &key)) != CRYPT_OK) { - fprintf(stderr, "\n\nkatja_encrypt_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - t2 += t1; - } - t2 >>= 4; - fprintf(stderr, "Katja-%lu encrypt_key took %15"PRI64"u cycles\n", x, t2); - - t2 = 0; - for (y = 0; y < 2048; y++) { - t_start(); - t1 = t_read(); - zzz = sizeof(buf[0]); - if ((err = katja_decrypt_key(buf[1], z, buf[0], &zzz, "testprog", 8, find_hash("sha1"), - &zz, &key)) != CRYPT_OK) { - fprintf(stderr, "\n\nkatja_decrypt_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - t2 += t1; - } - t2 >>= 11; - fprintf(stderr, "Katja-%lu decrypt_key took %15"PRI64"u cycles\n", x, t2); - - - katja_free(&key); - } -} -#else -static void time_katja(void) { fprintf(stderr, "NO Katja\n"); } -#endif - -#if defined(LTC_MDH) && defined(LTC_TEST_MPI) -/* time various DH operations */ -static void time_dh(void) -{ - dh_key key; - ulong64 t1, t2; - unsigned long i, x, y; - int err; - static unsigned long sizes[] = {768/8, 1024/8, 1536/8, 2048/8, -#ifndef TFM_DESC - 3072/8, 4096/8, 6144/8, 8192/8, -#endif - 100000 - }; - - for (x = sizes[i=0]; x < 100000; x = sizes[++i]) { - t2 = 0; - for (y = 0; y < 16; y++) { - if((err = dh_set_pg_groupsize(x, &key)) != CRYPT_OK) { - fprintf(stderr, "\n\ndh_set_pg_groupsize says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - - t_start(); - t1 = t_read(); - if ((err = dh_generate_key(&yarrow_prng, find_prng("yarrow"), &key)) != CRYPT_OK) { - fprintf(stderr, "\n\ndh_make_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - t2 += t1; - - dh_free(&key); - } - t2 >>= 4; - fprintf(stderr, "DH-%4lu make_key took %15"PRI64"u cycles\n", x*8, t2); - } -} -#else -static void time_dh(void) { fprintf(stderr, "NO DH\n"); } -#endif - -#if defined(LTC_MECC) && defined(LTC_TEST_MPI) -/* time various ECC operations */ -static void time_ecc(void) -{ - ecc_key key; - ulong64 t1, t2; - unsigned char buf[2][256] = { 0 }; - unsigned long i, w, x, y, z; - int err, stat; - static unsigned long sizes[] = { -#ifdef LTC_ECC112 -112/8, -#endif -#ifdef LTC_ECC128 -128/8, -#endif -#ifdef LTC_ECC160 -160/8, -#endif -#ifdef LTC_ECC192 -192/8, -#endif -#ifdef LTC_ECC224 -224/8, -#endif -#ifdef LTC_ECC256 -256/8, -#endif -#ifdef LTC_ECC384 -384/8, -#endif -#ifdef LTC_ECC521 -521/8, -#endif -100000}; - - for (x = sizes[i=0]; x < 100000; x = sizes[++i]) { - t2 = 0; - for (y = 0; y < 256; y++) { - t_start(); - t1 = t_read(); - if ((err = ecc_make_key(&yarrow_prng, find_prng("yarrow"), x, &key)) != CRYPT_OK) { - fprintf(stderr, "\n\necc_make_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - t2 += t1; - -#ifdef LTC_PROFILE - t2 <<= 8; - break; -#endif - - if (y < 255) { - ecc_free(&key); - } - } - t2 >>= 8; - fprintf(stderr, "ECC-%lu make_key took %15"PRI64"u cycles\n", x*8, t2); - - t2 = 0; - for (y = 0; y < 256; y++) { - t_start(); - t1 = t_read(); - z = sizeof(buf[1]); - if ((err = ecc_encrypt_key(buf[0], 20, buf[1], &z, &yarrow_prng, find_prng("yarrow"), find_hash("sha1"), - &key)) != CRYPT_OK) { - fprintf(stderr, "\n\necc_encrypt_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - t2 += t1; -#ifdef LTC_PROFILE - t2 <<= 8; - break; -#endif - } - t2 >>= 8; - fprintf(stderr, "ECC-%lu encrypt_key took %15"PRI64"u cycles\n", x*8, t2); - - t2 = 0; - for (y = 0; y < 256; y++) { - t_start(); - t1 = t_read(); - w = 20; - if ((err = ecc_decrypt_key(buf[1], z, buf[0], &w, &key)) != CRYPT_OK) { - fprintf(stderr, "\n\necc_decrypt_key says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - t2 += t1; -#ifdef LTC_PROFILE - t2 <<= 8; - break; -#endif - } - t2 >>= 8; - fprintf(stderr, "ECC-%lu decrypt_key took %15"PRI64"u cycles\n", x*8, t2); - - t2 = 0; - for (y = 0; y < 256; y++) { - t_start(); - t1 = t_read(); - z = sizeof(buf[1]); - if ((err = ecc_sign_hash(buf[0], 20, buf[1], &z, &yarrow_prng, - find_prng("yarrow"), &key)) != CRYPT_OK) { - fprintf(stderr, "\n\necc_sign_hash says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - t2 += t1; -#ifdef LTC_PROFILE - t2 <<= 8; - break; -#endif - } - t2 >>= 8; - fprintf(stderr, "ECC-%lu sign_hash took %15"PRI64"u cycles\n", x*8, t2); - - t2 = 0; - for (y = 0; y < 256; y++) { - t_start(); - t1 = t_read(); - if ((err = ecc_verify_hash(buf[1], z, buf[0], 20, &stat, &key)) != CRYPT_OK) { - fprintf(stderr, "\n\necc_verify_hash says %s, wait...no it should say %s...damn you!\n", error_to_string(err), error_to_string(CRYPT_OK)); - exit(EXIT_FAILURE); - } - if (stat == 0) { - fprintf(stderr, "\n\necc_verify_hash for ECC-%lu failed to verify signature(%lu)\n", x*8, y); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - t2 += t1; -#ifdef LTC_PROFILE - t2 <<= 8; - break; -#endif - } - t2 >>= 8; - fprintf(stderr, "ECC-%lu verify_hash took %15"PRI64"u cycles\n", x*8, t2); - - fprintf(stderr, "\n\n"); - ecc_free(&key); - } -} -#else -static void time_ecc(void) { fprintf(stderr, "NO ECC\n"); } -#endif - -static void time_macs_(unsigned long MAC_SIZE) -{ -#if defined(LTC_OMAC) || defined(LTC_XCBC) || defined(LTC_F9_MODE) || defined(LTC_PMAC) || defined(LTC_PELICAN) || defined(LTC_HMAC) - unsigned char *buf, key[16], tag[16]; - ulong64 t1, t2; - unsigned long x, z; - int err, cipher_idx, hash_idx; - - fprintf(stderr, "\nMAC Timings (cycles/byte on %luKB blocks):\n", MAC_SIZE); - - buf = XMALLOC(MAC_SIZE*1024); - if (buf == NULL) { - fprintf(stderr, "\n\nout of heap yo\n\n"); - exit(EXIT_FAILURE); - } - - cipher_idx = find_cipher("aes"); - hash_idx = find_hash("sha1"); - - if (cipher_idx == -1 || hash_idx == -1) { - fprintf(stderr, "Warning the MAC tests requires AES and SHA1 to operate... so sorry\n"); - exit(EXIT_FAILURE); - } - - yarrow_read(buf, MAC_SIZE*1024, &yarrow_prng); - yarrow_read(key, 16, &yarrow_prng); - -#ifdef LTC_OMAC - t2 = -1; - for (x = 0; x < 10000; x++) { - t_start(); - t1 = t_read(); - z = 16; - if ((err = omac_memory(cipher_idx, key, 16, buf, MAC_SIZE*1024, tag, &z)) != CRYPT_OK) { - fprintf(stderr, "\n\nomac-%s error... %s\n", cipher_descriptor[cipher_idx].name, error_to_string(err)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "OMAC-%s\t\t%9"PRI64"u\n", cipher_descriptor[cipher_idx].name, t2/(ulong64)(MAC_SIZE*1024)); -#endif - -#ifdef LTC_XCBC - t2 = -1; - for (x = 0; x < 10000; x++) { - t_start(); - t1 = t_read(); - z = 16; - if ((err = xcbc_memory(cipher_idx, key, 16, buf, MAC_SIZE*1024, tag, &z)) != CRYPT_OK) { - fprintf(stderr, "\n\nxcbc-%s error... %s\n", cipher_descriptor[cipher_idx].name, error_to_string(err)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "XCBC-%s\t\t%9"PRI64"u\n", cipher_descriptor[cipher_idx].name, t2/(ulong64)(MAC_SIZE*1024)); -#endif - -#ifdef LTC_F9_MODE - t2 = -1; - for (x = 0; x < 10000; x++) { - t_start(); - t1 = t_read(); - z = 16; - if ((err = f9_memory(cipher_idx, key, 16, buf, MAC_SIZE*1024, tag, &z)) != CRYPT_OK) { - fprintf(stderr, "\n\nF9-%s error... %s\n", cipher_descriptor[cipher_idx].name, error_to_string(err)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "F9-%s\t\t\t%9"PRI64"u\n", cipher_descriptor[cipher_idx].name, t2/(ulong64)(MAC_SIZE*1024)); -#endif - -#ifdef LTC_PMAC - t2 = -1; - for (x = 0; x < 10000; x++) { - t_start(); - t1 = t_read(); - z = 16; - if ((err = pmac_memory(cipher_idx, key, 16, buf, MAC_SIZE*1024, tag, &z)) != CRYPT_OK) { - fprintf(stderr, "\n\npmac-%s error... %s\n", cipher_descriptor[cipher_idx].name, error_to_string(err)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "PMAC-%s\t\t%9"PRI64"u\n", cipher_descriptor[cipher_idx].name, t2/(ulong64)(MAC_SIZE*1024)); -#endif - -#ifdef LTC_PELICAN - t2 = -1; - for (x = 0; x < 10000; x++) { - t_start(); - t1 = t_read(); - z = 16; - if ((err = pelican_memory(key, 16, buf, MAC_SIZE*1024, tag)) != CRYPT_OK) { - fprintf(stderr, "\n\npelican error... %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "PELICAN \t\t%9"PRI64"u\n", t2/(ulong64)(MAC_SIZE*1024)); -#endif - -#ifdef LTC_HMAC - t2 = -1; - for (x = 0; x < 10000; x++) { - t_start(); - t1 = t_read(); - z = 16; - if ((err = hmac_memory(hash_idx, key, 16, buf, MAC_SIZE*1024, tag, &z)) != CRYPT_OK) { - fprintf(stderr, "\n\nhmac-%s error... %s\n", hash_descriptor[hash_idx].name, error_to_string(err)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "HMAC-%s\t\t%9"PRI64"u\n", hash_descriptor[hash_idx].name, t2/(ulong64)(MAC_SIZE*1024)); -#endif - - XFREE(buf); -#else - LTC_UNUSED_PARAM(MAC_SIZE); - fprintf(stderr, "NO MACs\n"); -#endif -} - -static void time_macs(void) -{ - time_macs_(1); - time_macs_(4); - time_macs_(32); -} - -static void time_encmacs_(unsigned long MAC_SIZE) -{ -#if defined(LTC_EAX_MODE) || defined(LTC_OCB_MODE) || defined(LTC_OCB3_MODE) || defined(LTC_CCM_MODE) || defined(LTC_GCM_MODE) - unsigned char *buf, IV[16], key[16], tag[16]; - ulong64 t1, t2; - unsigned long x, z; - int err, cipher_idx; - symmetric_key skey; - - fprintf(stderr, "\nENC+MAC Timings (zero byte AAD, 16 byte IV, cycles/byte on %luKB blocks):\n", MAC_SIZE); - - buf = XMALLOC(MAC_SIZE*1024); - if (buf == NULL) { - fprintf(stderr, "\n\nout of heap yo\n\n"); - exit(EXIT_FAILURE); - } - - cipher_idx = find_cipher("aes"); - - yarrow_read(buf, MAC_SIZE*1024, &yarrow_prng); - yarrow_read(key, 16, &yarrow_prng); - yarrow_read(IV, 16, &yarrow_prng); - -#ifdef LTC_EAX_MODE - t2 = -1; - for (x = 0; x < 10000; x++) { - t_start(); - t1 = t_read(); - z = 16; - if ((err = eax_encrypt_authenticate_memory(cipher_idx, key, 16, IV, 16, NULL, 0, buf, MAC_SIZE*1024, buf, tag, &z)) != CRYPT_OK) { - fprintf(stderr, "\nEAX error... %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "EAX \t\t\t%9"PRI64"u\n", t2/(ulong64)(MAC_SIZE*1024)); -#endif - -#ifdef LTC_OCB_MODE - t2 = -1; - for (x = 0; x < 10000; x++) { - t_start(); - t1 = t_read(); - z = 16; - if ((err = ocb_encrypt_authenticate_memory(cipher_idx, key, 16, IV, buf, MAC_SIZE*1024, buf, tag, &z)) != CRYPT_OK) { - fprintf(stderr, "\nOCB error... %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "OCB \t\t\t%9"PRI64"u\n", t2/(ulong64)(MAC_SIZE*1024)); -#endif - -#ifdef LTC_OCB3_MODE - t2 = -1; - for (x = 0; x < 10000; x++) { - t_start(); - t1 = t_read(); - z = 16; - if ((err = ocb3_encrypt_authenticate_memory(cipher_idx, key, 16, IV, 15, (unsigned char*)"", 0, buf, MAC_SIZE*1024, buf, tag, &z)) != CRYPT_OK) { - fprintf(stderr, "\nOCB3 error... %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "OCB3 \t\t\t%9"PRI64"u\n", t2/(ulong64)(MAC_SIZE*1024)); -#endif - -#ifdef LTC_CCM_MODE - t2 = -1; - for (x = 0; x < 10000; x++) { - t_start(); - t1 = t_read(); - z = 16; - if ((err = ccm_memory(cipher_idx, key, 16, NULL, IV, 16, NULL, 0, buf, MAC_SIZE*1024, buf, tag, &z, CCM_ENCRYPT)) != CRYPT_OK) { - fprintf(stderr, "\nCCM error... %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "CCM (no-precomp) \t%9"PRI64"u\n", t2/(ulong64)(MAC_SIZE*1024)); - - cipher_descriptor[cipher_idx].setup(key, 16, 0, &skey); - t2 = -1; - for (x = 0; x < 10000; x++) { - t_start(); - t1 = t_read(); - z = 16; - if ((err = ccm_memory(cipher_idx, key, 16, &skey, IV, 16, NULL, 0, buf, MAC_SIZE*1024, buf, tag, &z, CCM_ENCRYPT)) != CRYPT_OK) { - fprintf(stderr, "\nCCM error... %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "CCM (precomp) \t\t%9"PRI64"u\n", t2/(ulong64)(MAC_SIZE*1024)); - cipher_descriptor[cipher_idx].done(&skey); -#endif - -#ifdef LTC_GCM_MODE - t2 = -1; - for (x = 0; x < 100; x++) { - t_start(); - t1 = t_read(); - z = 16; - if ((err = gcm_memory(cipher_idx, key, 16, IV, 16, NULL, 0, buf, MAC_SIZE*1024, buf, tag, &z, GCM_ENCRYPT)) != CRYPT_OK) { - fprintf(stderr, "\nGCM error... %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "GCM (no-precomp)\t%9"PRI64"u\n", t2/(ulong64)(MAC_SIZE*1024)); - - { - gcm_state gcm -#ifdef LTC_GCM_TABLES_SSE2 -__attribute__ ((aligned (16))) -#endif -; - - if ((err = gcm_init(&gcm, cipher_idx, key, 16)) != CRYPT_OK) { fprintf(stderr, "gcm_init: %s\n", error_to_string(err)); exit(EXIT_FAILURE); } - t2 = -1; - for (x = 0; x < 10000; x++) { - t_start(); - t1 = t_read(); - z = 16; - if ((err = gcm_reset(&gcm)) != CRYPT_OK) { - fprintf(stderr, "\nGCM error[%d]... %s\n", __LINE__, error_to_string(err)); - exit(EXIT_FAILURE); - } - if ((err = gcm_add_iv(&gcm, IV, 16)) != CRYPT_OK) { - fprintf(stderr, "\nGCM error[%d]... %s\n", __LINE__, error_to_string(err)); - exit(EXIT_FAILURE); - } - if ((err = gcm_add_aad(&gcm, NULL, 0)) != CRYPT_OK) { - fprintf(stderr, "\nGCM error[%d]... %s\n", __LINE__, error_to_string(err)); - exit(EXIT_FAILURE); - } - if ((err = gcm_process(&gcm, buf, MAC_SIZE*1024, buf, GCM_ENCRYPT)) != CRYPT_OK) { - fprintf(stderr, "\nGCM error[%d]... %s\n", __LINE__, error_to_string(err)); - exit(EXIT_FAILURE); - } - - if ((err = gcm_done(&gcm, tag, &z)) != CRYPT_OK) { - fprintf(stderr, "\nGCM error[%d]... %s\n", __LINE__, error_to_string(err)); - exit(EXIT_FAILURE); - } - t1 = t_read() - t1; - if (t1 < t2) t2 = t1; - } - fprintf(stderr, "GCM (precomp)\t\t%9"PRI64"u\n", t2/(ulong64)(MAC_SIZE*1024)); - } - -#endif - XFREE(buf); -#else - LTC_UNUSED_PARAM(MAC_SIZE); - fprintf(stderr, "NO ENCMACs\n"); -#endif - -} - -static void time_encmacs(void) -{ - time_encmacs_(1); - time_encmacs_(4); - time_encmacs_(32); -} - -#define LTC_TEST_FN(f) { f, #f } -int main(int argc, char **argv) -{ -int err; - -const struct -{ - void (*fn)(void); - const char* name; -} test_functions[] = { - LTC_TEST_FN(time_keysched), - LTC_TEST_FN(time_cipher_ecb), - LTC_TEST_FN(time_cipher_cbc), - LTC_TEST_FN(time_cipher_ctr), - LTC_TEST_FN(time_cipher_lrw), - LTC_TEST_FN(time_hash), - LTC_TEST_FN(time_macs), - LTC_TEST_FN(time_encmacs), - LTC_TEST_FN(time_prng), - LTC_TEST_FN(time_mult), - LTC_TEST_FN(time_sqr), - LTC_TEST_FN(time_rsa), - LTC_TEST_FN(time_dsa), - LTC_TEST_FN(time_ecc), - LTC_TEST_FN(time_dh), - LTC_TEST_FN(time_katja) -}; -char *single_test = NULL; -unsigned int i; - -init_timer(); -register_all_ciphers(); -register_all_hashes(); -register_all_prngs(); - -#ifdef USE_LTM - ltc_mp = ltm_desc; -#elif defined(USE_TFM) - ltc_mp = tfm_desc; -#elif defined(USE_GMP) - ltc_mp = gmp_desc; -#elif defined(EXT_MATH_LIB) - { - extern ltc_math_descriptor EXT_MATH_LIB; - ltc_mp = EXT_MATH_LIB; - } -#endif - -if ((err = rng_make_prng(128, find_prng("yarrow"), &yarrow_prng, NULL)) != CRYPT_OK) { - fprintf(stderr, "rng_make_prng failed: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); -} - -/* single test name from commandline */ -if (argc > 1) single_test = argv[1]; - -for (i = 0; i < sizeof(test_functions)/sizeof(test_functions[0]); ++i) { - if (single_test && strstr(test_functions[i].name, single_test) == NULL) { - continue; - } - test_functions[i].fn(); -} - -return EXIT_SUCCESS; - -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/demos/tv_gen.c b/src/libtomcrypt/demos/tv_gen.c deleted file mode 100644 index 69aea5083f..0000000000 --- a/src/libtomcrypt/demos/tv_gen.c +++ /dev/null @@ -1,802 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -void hash_gen(void) -{ - unsigned char md[MAXBLOCKSIZE], *buf; - unsigned long outlen, x, y, z; - FILE *out; - int err; - - out = fopen("hash_tv.txt", "w"); - if (out == NULL) { - perror("can't open hash_tv"); - } - - fprintf(out, "Hash Test Vectors:\n\nThese are the hashes of nn bytes '00 01 02 03 .. (nn-1)'\n\n"); - for (x = 0; hash_descriptor[x].name != NULL; x++) { - buf = XMALLOC(2 * hash_descriptor[x].blocksize + 1); - if (buf == NULL) { - perror("can't alloc mem"); - exit(EXIT_FAILURE); - } - fprintf(out, "Hash: %s\n", hash_descriptor[x].name); - for (y = 0; y <= (hash_descriptor[x].blocksize * 2); y++) { - for (z = 0; z < y; z++) { - buf[z] = (unsigned char)(z & 255); - } - outlen = sizeof(md); - if ((err = hash_memory(x, buf, y, md, &outlen)) != CRYPT_OK) { - printf("hash_memory error: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - fprintf(out, "%3lu: ", y); - for (z = 0; z < outlen; z++) { - fprintf(out, "%02X", md[z]); - } - fprintf(out, "\n"); - } - fprintf(out, "\n"); - XFREE(buf); - } - fclose(out); -} - -void cipher_gen(void) -{ - unsigned char *key, pt[MAXBLOCKSIZE]; - unsigned long x, y, z, w; - int err, kl, lastkl; - FILE *out; - symmetric_key skey; - - out = fopen("cipher_tv.txt", "w"); - - fprintf(out, -"Cipher Test Vectors\n\nThese are test encryptions with key of nn bytes '00 01 02 03 .. (nn-1)' and original PT of the same style.\n" -"The output of step N is used as the key and plaintext for step N+1 (key bytes repeated as required to fill the key)\n\n"); - - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - fprintf(out, "Cipher: %s\n", cipher_descriptor[x].name); - - /* three modes, smallest, medium, large keys */ - lastkl = 10000; - for (y = 0; y < 3; y++) { - switch (y) { - case 0: kl = cipher_descriptor[x].min_key_length; break; - case 1: kl = (cipher_descriptor[x].min_key_length + cipher_descriptor[x].max_key_length)/2; break; - case 2: kl = cipher_descriptor[x].max_key_length; break; - } - if ((err = cipher_descriptor[x].keysize(&kl)) != CRYPT_OK) { - printf("keysize error: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - if (kl == lastkl) continue; - lastkl = kl; - fprintf(out, "Key Size: %d bytes\n", kl); - - key = XMALLOC(kl); - if (key == NULL) { - perror("can't malloc memory"); - exit(EXIT_FAILURE); - } - - for (z = 0; (int)z < kl; z++) { - key[z] = (unsigned char)z; - } - if ((err = cipher_descriptor[x].setup(key, kl, 0, &skey)) != CRYPT_OK) { - printf("setup error: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - - for (z = 0; (int)z < cipher_descriptor[x].block_length; z++) { - pt[z] = (unsigned char)z; - } - for (w = 0; w < 50; w++) { - cipher_descriptor[x].ecb_encrypt(pt, pt, &skey); - fprintf(out, "%2lu: ", w); - for (z = 0; (int)z < cipher_descriptor[x].block_length; z++) { - fprintf(out, "%02X", pt[z]); - } - fprintf(out, "\n"); - - /* reschedule a new key */ - for (z = 0; z < (unsigned long)kl; z++) { - key[z] = pt[z % cipher_descriptor[x].block_length]; - } - if ((err = cipher_descriptor[x].setup(key, kl, 0, &skey)) != CRYPT_OK) { - printf("cipher setup2 error: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - } - fprintf(out, "\n"); - XFREE(key); - } - fprintf(out, "\n"); - } - fclose(out); -} - -void hmac_gen(void) -{ - unsigned char key[MAXBLOCKSIZE], output[MAXBLOCKSIZE], *input; - int x, y, z, err; - FILE *out; - unsigned long len; - - out = fopen("hmac_tv.txt", "w"); - - fprintf(out, -"HMAC Tests. In these tests messages of N bytes long (00,01,02,...,NN-1) are HMACed. The initial key is\n" -"of the same format (the same length as the HASH output size). The HMAC key in step N+1 is the HMAC output of\n" -"step N.\n\n"); - - for (x = 0; hash_descriptor[x].name != NULL; x++) { - fprintf(out, "HMAC-%s\n", hash_descriptor[x].name); - - /* initial key */ - for (y = 0; y < (int)hash_descriptor[x].hashsize; y++) { - key[y] = (y&255); - } - - input = XMALLOC(hash_descriptor[x].blocksize * 2 + 1); - if (input == NULL) { - perror("Can't malloc memory"); - exit(EXIT_FAILURE); - } - - for (y = 0; y <= (int)(hash_descriptor[x].blocksize * 2); y++) { - for (z = 0; z < y; z++) { - input[z] = (unsigned char)(z & 255); - } - len = sizeof(output); - if ((err = hmac_memory(x, key, hash_descriptor[x].hashsize, input, y, output, &len)) != CRYPT_OK) { - printf("Error hmacing: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - fprintf(out, "%3d: ", y); - for (z = 0; z <(int) len; z++) { - fprintf(out, "%02X", output[z]); - } - fprintf(out, "\n"); - - /* forward the key */ - memcpy(key, output, hash_descriptor[x].hashsize); - } - XFREE(input); - fprintf(out, "\n"); - } - fclose(out); -} - -void omac_gen(void) -{ -#ifdef LTC_OMAC - unsigned char key[MAXBLOCKSIZE], output[MAXBLOCKSIZE], input[MAXBLOCKSIZE*2+2]; - int err, x, y, z, kl; - FILE *out; - unsigned long len; - - out = fopen("omac_tv.txt", "w"); - - fprintf(out, -"OMAC Tests. In these tests messages of N bytes long (00,01,02,...,NN-1) are OMAC'ed. The initial key is\n" -"of the same format (length specified per cipher). The OMAC key in step N+1 is the OMAC output of\n" -"step N (repeated as required to fill the array).\n\n"); - - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - kl = cipher_descriptor[x].block_length; - - /* skip ciphers which do not have 64 or 128 bit block sizes */ - if (kl != 8 && kl != 16) continue; - - if (cipher_descriptor[x].keysize(&kl) != CRYPT_OK) { - kl = cipher_descriptor[x].max_key_length; - } - fprintf(out, "OMAC-%s (%d byte key)\n", cipher_descriptor[x].name, kl); - - /* initial key/block */ - for (y = 0; y < kl; y++) { - key[y] = (y & 255); - } - - for (y = 0; y <= (int)(cipher_descriptor[x].block_length*2); y++) { - for (z = 0; z < y; z++) { - input[z] = (unsigned char)(z & 255); - } - len = sizeof(output); - if ((err = omac_memory(x, key, kl, input, y, output, &len)) != CRYPT_OK) { - printf("Error omacing: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - fprintf(out, "%3d: ", y); - for (z = 0; z <(int)len; z++) { - fprintf(out, "%02X", output[z]); - } - fprintf(out, "\n"); - - /* forward the key */ - for (z = 0; z < kl; z++) { - key[z] = output[z % len]; - } - } - fprintf(out, "\n"); - } - fclose(out); -#endif -} - -void pmac_gen(void) -{ -#ifdef LTC_PMAC - unsigned char key[MAXBLOCKSIZE], output[MAXBLOCKSIZE], input[MAXBLOCKSIZE*2+2]; - int err, x, y, z, kl; - FILE *out; - unsigned long len; - - out = fopen("pmac_tv.txt", "w"); - - fprintf(out, -"PMAC Tests. In these tests messages of N bytes long (00,01,02,...,NN-1) are PMAC'ed. The initial key is\n" -"of the same format (length specified per cipher). The PMAC key in step N+1 is the PMAC output of\n" -"step N (repeated as required to fill the array).\n\n"); - - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - kl = cipher_descriptor[x].block_length; - - /* skip ciphers which do not have 64 or 128 bit block sizes */ - if (kl != 8 && kl != 16) continue; - - if (cipher_descriptor[x].keysize(&kl) != CRYPT_OK) { - kl = cipher_descriptor[x].max_key_length; - } - fprintf(out, "PMAC-%s (%d byte key)\n", cipher_descriptor[x].name, kl); - - /* initial key/block */ - for (y = 0; y < kl; y++) { - key[y] = (y & 255); - } - - for (y = 0; y <= (int)(cipher_descriptor[x].block_length*2); y++) { - for (z = 0; z < y; z++) { - input[z] = (unsigned char)(z & 255); - } - len = sizeof(output); - if ((err = pmac_memory(x, key, kl, input, y, output, &len)) != CRYPT_OK) { - printf("Error omacing: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - fprintf(out, "%3d: ", y); - for (z = 0; z <(int)len; z++) { - fprintf(out, "%02X", output[z]); - } - fprintf(out, "\n"); - - /* forward the key */ - for (z = 0; z < kl; z++) { - key[z] = output[z % len]; - } - } - fprintf(out, "\n"); - } - fclose(out); -#endif -} - -void eax_gen(void) -{ -#ifdef LTC_EAX_MODE - int err, kl, x, y1, z; - FILE *out; - unsigned char key[MAXBLOCKSIZE], nonce[MAXBLOCKSIZE*2], header[MAXBLOCKSIZE*2], - plaintext[MAXBLOCKSIZE*2], tag[MAXBLOCKSIZE]; - unsigned long len; - - out = fopen("eax_tv.txt", "w"); - fprintf(out, "EAX Test Vectors. Uses the 00010203...NN-1 pattern for header/nonce/plaintext/key. The outputs\n" - "are of the form ciphertext,tag for a given NN. The key for step N>1 is the tag of the previous\n" - "step repeated sufficiently.\n\n"); - - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - kl = cipher_descriptor[x].block_length; - - /* skip ciphers which do not have 64 or 128 bit block sizes */ - if (kl != 8 && kl != 16) continue; - - if (cipher_descriptor[x].keysize(&kl) != CRYPT_OK) { - kl = cipher_descriptor[x].max_key_length; - } - fprintf(out, "EAX-%s (%d byte key)\n", cipher_descriptor[x].name, kl); - - /* the key */ - for (z = 0; z < kl; z++) { - key[z] = (z & 255); - } - - for (y1 = 0; y1 <= (int)(cipher_descriptor[x].block_length*2); y1++){ - for (z = 0; z < y1; z++) { - plaintext[z] = (unsigned char)(z & 255); - nonce[z] = (unsigned char)(z & 255); - header[z] = (unsigned char)(z & 255); - } - len = sizeof(tag); - if ((err = eax_encrypt_authenticate_memory(x, key, kl, nonce, y1, header, y1, plaintext, y1, plaintext, tag, &len)) != CRYPT_OK) { - printf("Error EAX'ing: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - fprintf(out, "%3d: ", y1); - for (z = 0; z < y1; z++) { - fprintf(out, "%02X", plaintext[z]); - } - fprintf(out, ", "); - for (z = 0; z <(int)len; z++) { - fprintf(out, "%02X", tag[z]); - } - fprintf(out, "\n"); - - /* forward the key */ - for (z = 0; z < kl; z++) { - key[z] = tag[z % len]; - } - } - fprintf(out, "\n"); - } - fclose(out); -#endif -} - -void ocb_gen(void) -{ -#ifdef LTC_OCB_MODE - int err, kl, x, y1, z; - FILE *out; - unsigned char key[MAXBLOCKSIZE], nonce[MAXBLOCKSIZE*2], - plaintext[MAXBLOCKSIZE*2], tag[MAXBLOCKSIZE]; - unsigned long len; - - out = fopen("ocb_tv.txt", "w"); - fprintf(out, "OCB Test Vectors. Uses the 00010203...NN-1 pattern for nonce/plaintext/key. The outputs\n" - "are of the form ciphertext,tag for a given NN. The key for step N>1 is the tag of the previous\n" - "step repeated sufficiently. The nonce is fixed throughout.\n\n"); - - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - kl = cipher_descriptor[x].block_length; - - /* skip ciphers which do not have 64 or 128 bit block sizes */ - if (kl != 8 && kl != 16) continue; - - if (cipher_descriptor[x].keysize(&kl) != CRYPT_OK) { - kl = cipher_descriptor[x].max_key_length; - } - fprintf(out, "OCB-%s (%d byte key)\n", cipher_descriptor[x].name, kl); - - /* the key */ - for (z = 0; z < kl; z++) { - key[z] = (z & 255); - } - - /* fixed nonce */ - for (z = 0; z < cipher_descriptor[x].block_length; z++) { - nonce[z] = z; - } - - for (y1 = 0; y1 <= (int)(cipher_descriptor[x].block_length*2); y1++){ - for (z = 0; z < y1; z++) { - plaintext[z] = (unsigned char)(z & 255); - } - len = sizeof(tag); - if ((err = ocb_encrypt_authenticate_memory(x, key, kl, nonce, plaintext, y1, plaintext, tag, &len)) != CRYPT_OK) { - printf("Error OCB'ing: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - fprintf(out, "%3d: ", y1); - for (z = 0; z < y1; z++) { - fprintf(out, "%02X", plaintext[z]); - } - fprintf(out, ", "); - for (z = 0; z <(int)len; z++) { - fprintf(out, "%02X", tag[z]); - } - fprintf(out, "\n"); - - /* forward the key */ - for (z = 0; z < kl; z++) { - key[z] = tag[z % len]; - } - } - fprintf(out, "\n"); - } - fclose(out); -#endif -} - -void ocb3_gen(void) -{ -#ifdef LTC_OCB3_MODE - int err, kl, x, y1, z, noncelen; - FILE *out; - unsigned char key[MAXBLOCKSIZE], nonce[MAXBLOCKSIZE*2], - plaintext[MAXBLOCKSIZE*2], tag[MAXBLOCKSIZE]; - unsigned long len; - - out = fopen("ocb3_tv.txt", "w"); - fprintf(out, "OCB3 Test Vectors. Uses the 00010203...NN-1 pattern for nonce/plaintext/key. The outputs\n" - "are of the form ciphertext,tag for a given NN. The key for step N>1 is the tag of the previous\n" - "step repeated sufficiently. The nonce is fixed throughout. AAD is fixed to 3 bytes (ASCII) 'AAD'.\n\n"); - - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - kl = cipher_descriptor[x].block_length; - - /* skip ciphers which do not have 64 or 128 bit block sizes */ - if (kl != 16) continue; - - if (cipher_descriptor[x].keysize(&kl) != CRYPT_OK) { - kl = cipher_descriptor[x].max_key_length; - } - fprintf(out, "OCB3-%s (%d byte key)\n", cipher_descriptor[x].name, kl); - - /* the key */ - for (z = 0; z < kl; z++) { - key[z] = (z & 255); - } - - /* fixed nonce */ - noncelen = MIN(15, cipher_descriptor[x].block_length); - for (z = 0; z < noncelen; z++) { - nonce[z] = z; - } - - for (y1 = 0; y1 <= (int)(cipher_descriptor[x].block_length*2); y1++){ - for (z = 0; z < y1; z++) { - plaintext[z] = (unsigned char)(z & 255); - } - len = 16; - if ((err = ocb3_encrypt_authenticate_memory(x, key, kl, nonce, noncelen, (unsigned char*)"AAD", 3, plaintext, y1, plaintext, tag, &len)) != CRYPT_OK) { - printf("Error OCB3'ing: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - fprintf(out, "%3d: ", y1); - for (z = 0; z < y1; z++) { - fprintf(out, "%02X", plaintext[z]); - } - fprintf(out, ", "); - for (z = 0; z <(int)len; z++) { - fprintf(out, "%02X", tag[z]); - } - fprintf(out, "\n"); - - /* forward the key */ - for (z = 0; z < kl; z++) { - key[z] = tag[z % len]; - } - } - fprintf(out, "\n"); - } - fclose(out); -#endif -} - -void ccm_gen(void) -{ -#ifdef LTC_CCM_MODE - int err, kl, x, y1, z; - FILE *out; - unsigned char key[MAXBLOCKSIZE], nonce[MAXBLOCKSIZE*2], - plaintext[MAXBLOCKSIZE*2], tag[MAXBLOCKSIZE]; - unsigned long len; - - out = fopen("ccm_tv.txt", "w"); - fprintf(out, "CCM Test Vectors. Uses the 00010203...NN-1 pattern for nonce/header/plaintext/key. The outputs\n" - "are of the form ciphertext,tag for a given NN. The key for step N>1 is the tag of the previous\n" - "step repeated sufficiently. The nonce is fixed throughout at 13 bytes 000102...\n\n"); - - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - kl = cipher_descriptor[x].block_length; - - /* skip ciphers which do not have 128 bit block sizes */ - if (kl != 16) continue; - - if (cipher_descriptor[x].keysize(&kl) != CRYPT_OK) { - kl = cipher_descriptor[x].max_key_length; - } - fprintf(out, "CCM-%s (%d byte key)\n", cipher_descriptor[x].name, kl); - - /* the key */ - for (z = 0; z < kl; z++) { - key[z] = (z & 255); - } - - /* fixed nonce */ - for (z = 0; z < cipher_descriptor[x].block_length; z++) { - nonce[z] = z; - } - - for (y1 = 0; y1 <= (int)(cipher_descriptor[x].block_length*2); y1++){ - for (z = 0; z < y1; z++) { - plaintext[z] = (unsigned char)(z & 255); - } - len = sizeof(tag); - if ((err = ccm_memory(x, key, kl, NULL, nonce, 13, plaintext, y1, plaintext, y1, plaintext, tag, &len, CCM_ENCRYPT)) != CRYPT_OK) { - printf("Error CCM'ing: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - if (len == 0) { - printf("Error CCM'ing: zero length\n"); - exit(EXIT_FAILURE); - } - fprintf(out, "%3d: ", y1); - for (z = 0; z < y1; z++) { - fprintf(out, "%02X", plaintext[z]); - } - fprintf(out, ", "); - for (z = 0; z <(int)len; z++) { - fprintf(out, "%02X", tag[z]); - } - fprintf(out, "\n"); - - /* forward the key */ - for (z = 0; z < kl; z++) { - key[z] = tag[z % len]; - } - } - fprintf(out, "\n"); - } - fclose(out); -#endif -} - -void gcm_gen(void) -{ -#ifdef LTC_GCM_MODE - int err, kl, x, y1, z; - FILE *out; - unsigned char key[MAXBLOCKSIZE], plaintext[MAXBLOCKSIZE*2], tag[MAXBLOCKSIZE]; - unsigned long len; - - out = fopen("gcm_tv.txt", "w"); - fprintf(out, "GCM Test Vectors. Uses the 00010203...NN-1 pattern for nonce/header/plaintext/key. The outputs\n" - "are of the form ciphertext,tag for a given NN. The key for step N>1 is the tag of the previous\n" - "step repeated sufficiently. The nonce is fixed throughout at 13 bytes 000102...\n\n"); - - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - kl = cipher_descriptor[x].block_length; - - /* skip ciphers which do not have 128 bit block sizes */ - if (kl != 16) continue; - - if (cipher_descriptor[x].keysize(&kl) != CRYPT_OK) { - kl = cipher_descriptor[x].max_key_length; - } - fprintf(out, "GCM-%s (%d byte key)\n", cipher_descriptor[x].name, kl); - - /* the key */ - for (z = 0; z < kl; z++) { - key[z] = (z & 255); - } - - for (y1 = 1; y1 <= (int)(cipher_descriptor[x].block_length*2); y1++){ - for (z = 0; z < y1; z++) { - plaintext[z] = (unsigned char)(z & 255); - } - len = sizeof(tag); - if ((err = gcm_memory(x, key, kl, plaintext, y1, plaintext, y1, plaintext, y1, plaintext, tag, &len, GCM_ENCRYPT)) != CRYPT_OK) { - printf("Error GCM'ing: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - if (len == 0) { - printf("Error GCM'ing: zero length\n"); - exit(EXIT_FAILURE); - } - fprintf(out, "%3d: ", y1); - for (z = 0; z < y1; z++) { - fprintf(out, "%02X", plaintext[z]); - } - fprintf(out, ", "); - for (z = 0; z <(int)len; z++) { - fprintf(out, "%02X", tag[z]); - } - fprintf(out, "\n"); - - /* forward the key */ - for (z = 0; z < kl; z++) { - key[z] = tag[z % len]; - } - } - fprintf(out, "\n"); - } - fclose(out); -#endif -} - -void base64_gen(void) -{ - FILE *out; - unsigned char dst[256], src[32], ch; - unsigned long x, len; - - out = fopen("base64_tv.txt", "w"); - fprintf(out, "Base64 vectors. These are the base64 encodings of the strings 00,01,02...NN-1\n\n"); - for (x = 0; x <= 32; x++) { - for (ch = 0; ch < x; ch++) { - src[ch] = ch; - } - len = sizeof(dst); - base64_encode(src, x, dst, &len); - fprintf(out, "%2lu: %s\n", x, dst); - } - fclose(out); -} - -void math_gen(void) -{ -} - -void ecc_gen(void) -{ - FILE *out; - unsigned char str[512]; - void *k, *order, *modulus; - ecc_point *G, *R; - int x; - - out = fopen("ecc_tv.txt", "w"); - fprintf(out, "ecc vectors. These are for kG for k=1,3,9,27,...,3**n until k > order of the curve outputs are triplets\n\n"); - G = ltc_ecc_new_point(); - R = ltc_ecc_new_point(); - mp_init(&k); - mp_init(&order); - mp_init(&modulus); - - for (x = 0; ltc_ecc_sets[x].size != 0; x++) { - fprintf(out, "ECC-%d\n", ltc_ecc_sets[x].size*8); - mp_set(k, 1); - - mp_read_radix(order, (char *)ltc_ecc_sets[x].order, 16); - mp_read_radix(modulus, (char *)ltc_ecc_sets[x].prime, 16); - mp_read_radix(G->x, (char *)ltc_ecc_sets[x].Gx, 16); - mp_read_radix(G->y, (char *)ltc_ecc_sets[x].Gy, 16); - mp_set(G->z, 1); - - while (mp_cmp(k, order) == LTC_MP_LT) { - ltc_mp.ecc_ptmul(k, G, R, modulus, 1); - mp_tohex(k, (char*)str); fprintf(out, "%s, ", (char*)str); - mp_tohex(R->x, (char*)str); fprintf(out, "%s, ", (char*)str); - mp_tohex(R->y, (char*)str); fprintf(out, "%s\n", (char*)str); - mp_mul_d(k, 3, k); - } - } - mp_clear_multi(k, order, modulus, NULL); - ltc_ecc_del_point(G); - ltc_ecc_del_point(R); - fclose(out); -} - -void lrw_gen(void) -{ -#ifdef LTC_LRW_MODE - FILE *out; - unsigned char tweak[16], key[16], iv[16], buf[1024]; - int x, y, err; - symmetric_LRW lrw; - - /* initialize default key and tweak */ - for (x = 0; x < 16; x++) { - tweak[x] = key[x] = iv[x] = x; - } - - out = fopen("lrw_tv.txt", "w"); - for (x = 16; x < (int)(sizeof(buf)); x += 16) { - if ((err = lrw_start(find_cipher("aes"), iv, key, 16, tweak, 0, &lrw)) != CRYPT_OK) { - fprintf(stderr, "Error starting LRW-AES: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - - /* encrypt incremental */ - for (y = 0; y < x; y++) { - buf[y] = y & 255; - } - - if ((err = lrw_encrypt(buf, buf, x, &lrw)) != CRYPT_OK) { - fprintf(stderr, "Error encrypting with LRW-AES: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - - /* display it */ - fprintf(out, "%d:", x); - for (y = 0; y < x; y++) { - fprintf(out, "%02x", buf[y]); - } - fprintf(out, "\n"); - - /* reset IV */ - if ((err = lrw_setiv(iv, 16, &lrw)) != CRYPT_OK) { - fprintf(stderr, "Error setting IV: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - - /* copy new tweak, iv and key */ - for (y = 0; y < 16; y++) { - key[y] = buf[y]; - iv[y] = buf[(y+16)%x]; - tweak[y] = buf[(y+32)%x]; - } - - if ((err = lrw_decrypt(buf, buf, x, &lrw)) != CRYPT_OK) { - fprintf(stderr, "Error decrypting with LRW-AES: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - - /* display it */ - fprintf(out, "%d:", x); - for (y = 0; y < x; y++) { - fprintf(out, "%02x", buf[y]); - } - fprintf(out, "\n"); - lrw_done(&lrw); - } - fclose(out); -#endif -} - -int main(void) -{ - register_all_ciphers(); - register_all_hashes(); - register_all_prngs(); -#ifdef USE_LTM - ltc_mp = ltm_desc; -#elif defined(USE_TFM) - ltc_mp = tfm_desc; -#elif defined(USE_GMP) - ltc_mp = gmp_desc; -#elif defined(EXT_MATH_LIB) - extern ltc_math_descriptor EXT_MATH_LIB; - ltc_mp = EXT_MATH_LIB; -#else - fprintf(stderr, "No MPI provider available\n"); - exit(EXIT_FAILURE); -#endif - - printf("Generating hash vectors..."); fflush(stdout); hash_gen(); printf("done\n"); - printf("Generating cipher vectors..."); fflush(stdout); cipher_gen(); printf("done\n"); - printf("Generating HMAC vectors..."); fflush(stdout); hmac_gen(); printf("done\n"); -#ifdef LTC_OMAC - printf("Generating OMAC vectors..."); fflush(stdout); omac_gen(); printf("done\n"); -#endif -#ifdef LTC_PMAC - printf("Generating PMAC vectors..."); fflush(stdout); pmac_gen(); printf("done\n"); -#endif -#ifdef LTC_EAX_MODE - printf("Generating EAX vectors..."); fflush(stdout); eax_gen(); printf("done\n"); -#endif -#ifdef LTC_OCB_MODE - printf("Generating OCB vectors..."); fflush(stdout); ocb_gen(); printf("done\n"); -#endif -#ifdef LTC_OCB3_MODE - printf("Generating OCB3 vectors..."); fflush(stdout); ocb3_gen(); printf("done\n"); -#endif -#ifdef LTC_CCM_MODE - printf("Generating CCM vectors..."); fflush(stdout); ccm_gen(); printf("done\n"); -#endif -#ifdef LTC_GCM_MODE - printf("Generating GCM vectors..."); fflush(stdout); gcm_gen(); printf("done\n"); -#endif - printf("Generating BASE64 vectors..."); fflush(stdout); base64_gen(); printf("done\n"); - printf("Generating MATH vectors..."); fflush(stdout); math_gen(); printf("done\n"); - printf("Generating ECC vectors..."); fflush(stdout); ecc_gen(); printf("done\n"); -#ifdef LTC_LRW_MODE - printf("Generating LRW vectors..."); fflush(stdout); lrw_gen(); printf("done\n"); -#endif - return 0; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/doc/Doxyfile b/src/libtomcrypt/doc/Doxyfile deleted file mode 100644 index 63144d8e0e..0000000000 --- a/src/libtomcrypt/doc/Doxyfile +++ /dev/null @@ -1,2430 +0,0 @@ -# Doxyfile 1.8.11 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = LibTomCrypt - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER=1.18.2 - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = libtomsm.png - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = doxygen - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = src - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = ../src/headers - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = YES - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = YES - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = YES - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = YES - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = YES - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. -# The default value is: NO. - -WARN_AS_ERROR = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = ../src/ - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f, *.for, *.tcl, -# *.vhd, *.vhdl, *.ucf, *.qsf, *.as and *.js. - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = YES - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = NO - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = YES - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the -# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the -# cost of reduced performance. This can be particularly helpful with template -# rich C++ code for which doxygen's built-in parser lacks the necessary type -# information. -# Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse-libclang=ON option for CMake. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = YES - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 1 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /\r\n" for (1..$back); - } - my $fwd = [ @$current ]; splice(@$fwd, 0, $common); - for my $i (0..scalar(@$fwd) - 1) { - $files .= ("\t" x $depth) . "[$i]\"\r\n"; - $files .= ("\t" x $depth) . "\t>\r\n"; - $depth++; - } - $last = $current; - } - $files .= ("\t" x $depth) . "\r\n"; - if ($full =~ $exclude_re) { - for (@$targets) { - $files .= ("\t" x $depth) . "\t\r\n"; - $files .= ("\t" x $depth) . "\t\t\r\n"; - $files .= ("\t" x $depth) . "\t\r\n"; - } - } -########### aes_enc "hack" disabled - discussion: https://github.com/libtom/libtomcrypt/pull/158 -# if ($full eq 'src\ciphers\aes\aes.c') { #hack -# my %cmd = ( -# 'Debug|Win32' => [ 'Debug/aes.obj;Debug/aes_enc.obj', 'cl /nologo /MLd /W3 /Gm /GX /ZI /Od /I "src\headers" /I "..\libtommath" /D "_DEBUG" /D "LTM_DESC" /D "WIN32" /D "_MBCS" /D "_LIB" /D "LTC_SOURCE" /D "USE_LTM" /Fp"Debug/libtomcrypt.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c $(InputPath) cl /nologo /DENCRYPT_ONLY /MLd /W3 /Gm /GX /ZI /Od /I "src\headers" /I "..\libtommath" /D "_DEBUG" /D "LTM_DESC" /D "WIN32" /D "_MBCS" /D "_LIB" /D "LTC_SOURCE" /D "USE_LTM" /Fp"Debug/libtomcrypt.pch" /YX /Fo"Debug/aes_enc.obj" /Fd"Debug/" /FD /GZ /c $(InputPath) ' ], -# 'Release|Win32' => [ 'Release/aes.obj;Release/aes_enc.obj', 'cl /nologo /MLd /W3 /Gm /GX /ZI /Od /I "src\headers" /I "..\libtommath" /D "_DEBUG" /D "LTM_DESC" /D "WIN32" /D "_MBCS" /D "_LIB" /D "LTC_SOURCE" /D "USE_LTM" /Fp"Release/libtomcrypt.pch" /YX /Fo"Release/" /Fd"Release/" /FD /GZ /c $(InputPath) cl /nologo /DENCRYPT_ONLY /MLd /W3 /Gm /GX /ZI /Od /I "src\headers" /I "..\libtommath" /D "_DEBUG" /D "LTM_DESC" /D "WIN32" /D "_MBCS" /D "_LIB" /D "LTC_SOURCE" /D "USE_LTM" /Fp"Release/libtomcrypt.pch" /YX /Fo"Release/aes_enc.obj" /Fd"Release/" /FD /GZ /c $(InputPath) ' ], -# ); -# for (@$targets) { -# next unless $cmd{$_}; -# $files .= ("\t" x $depth) . "\t\r\n"; -# $files .= ("\t" x $depth) . "\t\t\r\n"; -# $files .= ("\t" x $depth) . "\t\r\n"; -# } -# } - $files .= ("\t" x $depth) . "\r\n"; - } - $files .= ("\t" x --$depth) . "\r\n" for (@$last); - $files .= "\t"; - return $files; -} - -sub patch_file { - my ($content, @variables) = @_; - for my $v (@variables) { - if ($v =~ /^([A-Z0-9_]+)\s*=.*$/si) { - my $name = $1; - $content =~ s/\n\Q$name\E\b.*?[^\\]\n/\n$v\n/s; - } - else { - die "patch_file failed: " . substr($v, 0, 30) . ".."; - } - } - return $content; -} - -sub version_from_tomcrypt_h { - my $h = read_file(shift); - if ($h =~ /\n#define\s*SCRYPT\s*"([0-9]+)\.([0-9]+)\.([0-9]+)(.*)"/s) { - return "VERSION_PC=$1.$2.$3", "VERSION_LT=1:1", "VERSION=$1.$2.$3$4", "PROJECT_NUMBER=$1.$2.$3$4"; - } - else { - die "#define SCRYPT not found in tomcrypt.h"; - } -} - -sub process_makefiles { - my $write = shift; - my $changed_count = 0; - my @c = (); - find({ no_chdir => 1, wanted => sub { push @c, $_ if -f $_ && $_ =~ /\.c$/ && $_ !~ /tab.c$/ } }, 'src'); - my @h = (); - find({ no_chdir => 1, wanted => sub { push @h, $_ if -f $_ && $_ =~ /\.h$/ && $_ !~ /dh_static.h$/ } }, 'src'); - my @all = (); - find({ no_chdir => 1, wanted => sub { push @all, $_ if -f $_ && $_ =~ /\.(c|h)$/ } }, 'src'); - my @t = qw(); - find({ no_chdir => 1, wanted => sub { push @t, $_ if $_ =~ /(common|no_prng|_tests?|test).c$/ } }, 'tests'); - - my @o = sort ('src/ciphers/aes/aes_enc.o', map { my $x = $_; $x =~ s/\.c$/.o/; $x } @c); - my $var_o = prepare_variable("OBJECTS", @o); - my $var_h = prepare_variable("HEADERS", (sort @h)); - (my $var_obj = $var_o) =~ s/\.o\b/.obj/sg; - - my $var_to = prepare_variable("TOBJECTS", sort map { my $x = $_; $x =~ s/\.c$/.o/; $x } @t); - (my $var_tobj = $var_to) =~ s/\.o\b/.obj/sg; - - my @ver_version = version_from_tomcrypt_h("src/headers/tomcrypt.h"); - - # update MSVC project files - my $msvc_files = prepare_msvc_files_xml(\@all, qr/tab\.c$/, ['Debug|Win32', 'Release|Win32', 'Debug|x64', 'Release|x64']); - for my $m (qw/libtomcrypt_VS2008.vcproj/) { - my $old = read_file($m); - my $new = $old; - $new =~ s|.*|$msvc_files|s; - if ($old ne $new) { - write_file($m, $new) if $write; - warn "changed: $m\n"; - $changed_count++; - } - } - - # update OBJECTS + HEADERS in makefile* - for my $m (qw/ makefile makefile.shared makefile.unix makefile.mingw makefile.msvc makefile_include.mk doc\/Doxyfile /) { - my $old = read_file($m); - my $new = $m eq 'makefile.msvc' ? patch_file($old, $var_obj, $var_h, $var_tobj, @ver_version) - : patch_file($old, $var_o, $var_h, $var_to, @ver_version); - if ($old ne $new) { - write_file($m, $new) if $write; - warn "changed: $m\n"; - $changed_count++; - } - } - - if ($write) { - return 0; # no failures - } - else { - warn( $changed_count > 0 ? "check-makefiles: FAIL $changed_count\n" : "check-makefiles: PASS\n" ); - return $changed_count; - } -} - -sub die_usage { - die <<"MARKER"; -usage: $0 -s OR $0 --check-source - $0 -c OR $0 --check-descriptors - $0 -d OR $0 --check-defines - $0 -o OR $0 --check-comments - $0 -m OR $0 --check-makefiles - $0 -a OR $0 --check-all - $0 -u OR $0 --update-makefiles - $0 --fixupind crypt.ind -MARKER -} - -GetOptions( "s|check-source" => \my $check_source, - "c|check-descriptors" => \my $check_descriptors, - "d|check-defines" => \my $check_defines, - "o|check-comments" => \my $check_comments, - "m|check-makefiles" => \my $check_makefiles, - "a|check-all" => \my $check_all, - "u|update-makefiles" => \my $update_makefiles, - "f|fixupind=s" => \my $fixupind, - "h|help" => \my $help - ) or die_usage; - -if ($fixupind) { - my $txt = read_file($fixupind); - $txt =~ s/^([^\n]*\n)/$1\n\\addcontentsline{toc}{chapter}{Index}\n/s; - write_file($fixupind, $txt); - exit 0; -} - -my $failure; -$failure ||= check_source() if $check_all || $check_source; -$failure ||= check_defines() if $check_all || $check_defines; -$failure ||= check_descriptors() if $check_all || $check_descriptors; -$failure ||= check_comments() if $check_all || $check_comments; -$failure ||= process_makefiles(0) if $check_all || $check_makefiles; -$failure ||= process_makefiles(1) if $update_makefiles; - -die_usage unless defined $failure; -exit $failure ? 1 : 0; diff --git a/src/libtomcrypt/hooks/pre-commit b/src/libtomcrypt/hooks/pre-commit deleted file mode 100644 index 8a82f12d05..0000000000 --- a/src/libtomcrypt/hooks/pre-commit +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -# -# An example hook script to verify what is about to be committed. -# Called by "git commit" with no arguments. The hook should -# exit with non-zero status after issuing an appropriate message if -# it wants to stop the commit. -# -# To enable this hook, rename this file to "pre-commit". - -if git rev-parse --verify HEAD >/dev/null 2>&1 -then - against=HEAD -else - # Initial commit: diff against an empty tree object - against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 -fi - -# If you want to allow non-ascii filenames set this variable to true. -allownonascii=$(git config hooks.allownonascii) - -# Redirect output to stderr. -exec 1>&2 - -# Cross platform projects tend to avoid non-ascii filenames; prevent -# them from being added to the repository. We exploit the fact that the -# printable range starts at the space character and ends with tilde. -if [ "$allownonascii" != "true" ] && - # Note that the use of brackets around a tr range is ok here, (it's - # even required, for portability to Solaris 10's /usr/bin/tr), since - # the square bracket bytes happen to fall in the designated range. - test $(git diff --cached --name-only --diff-filter=A -z $against | - LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 -then - echo "Error: Attempt to add a non-ascii file name." - echo - echo "This can cause problems if you want to work" - echo "with people on other platforms." - echo - echo "To be portable it is advisable to rename the file ..." - echo - echo "If you know what you are doing you can disable this" - echo "check using:" - echo - echo " git config hooks.allownonascii true" - echo - exit 1 -fi - -exec perl helper.pl --check-all diff --git a/src/libtomcrypt/libtomcrypt.pc.in b/src/libtomcrypt/libtomcrypt.pc.in deleted file mode 100644 index 714f060487..0000000000 --- a/src/libtomcrypt/libtomcrypt.pc.in +++ /dev/null @@ -1,10 +0,0 @@ -prefix=@to-be-replaced@ -exec_prefix=${prefix} -libdir=${exec_prefix}/lib -includedir=${prefix}/include - -Name: LibTomCrypt -Description: public domain open source cryptographic toolkit -Version: @to-be-replaced@ -Libs: -L${libdir} -ltomcrypt -Cflags: -I${includedir} diff --git a/src/libtomcrypt/libtomcrypt_VS2008.sln b/src/libtomcrypt/libtomcrypt_VS2008.sln deleted file mode 100644 index 1508689e31..0000000000 --- a/src/libtomcrypt/libtomcrypt_VS2008.sln +++ /dev/null @@ -1,26 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtomcrypt", "libtomcrypt_VS2008.vcproj", "{E3802982-DCB6-4D85-A2BD-6B08F0657E79}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E3802982-DCB6-4D85-A2BD-6B08F0657E79}.Debug|Win32.ActiveCfg = Debug|Win32 - {E3802982-DCB6-4D85-A2BD-6B08F0657E79}.Debug|Win32.Build.0 = Debug|Win32 - {E3802982-DCB6-4D85-A2BD-6B08F0657E79}.Debug|x64.ActiveCfg = Debug|x64 - {E3802982-DCB6-4D85-A2BD-6B08F0657E79}.Debug|x64.Build.0 = Debug|x64 - {E3802982-DCB6-4D85-A2BD-6B08F0657E79}.Release|Win32.ActiveCfg = Release|Win32 - {E3802982-DCB6-4D85-A2BD-6B08F0657E79}.Release|Win32.Build.0 = Release|Win32 - {E3802982-DCB6-4D85-A2BD-6B08F0657E79}.Release|x64.ActiveCfg = Release|x64 - {E3802982-DCB6-4D85-A2BD-6B08F0657E79}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/src/libtomcrypt/libtomcrypt_VS2008.vcproj b/src/libtomcrypt/libtomcrypt_VS2008.vcproj deleted file mode 100644 index cca67e3e46..0000000000 --- a/src/libtomcrypt/libtomcrypt_VS2008.vcproj +++ /dev/null @@ -1,2518 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/libtomcrypt/makefile b/src/libtomcrypt/makefile deleted file mode 100644 index 8a96ff7774..0000000000 --- a/src/libtomcrypt/makefile +++ /dev/null @@ -1,132 +0,0 @@ -# MAKEFILE for linux GCC -# -# Tom St Denis -# Modified by Clay Culver -# -# (GNU make only) - -ifeq ($V,1) -silent= -silent_stdout= -else -silent=@ -silent_stdout= > /dev/null -endif - -PLATFORM := $(shell uname | sed -e 's/_.*//') - -# ranlib tools -ifndef RANLIB -RANLIB:=$(CROSS_COMPILE)ranlib -endif -INSTALL_CMD = install -UNINSTALL_CMD = rm - -#Output filenames for various targets. -ifndef LIBNAME - LIBNAME=libtomcrypt.a -endif - - -include makefile_include.mk - -ifeq ($(COVERAGE),1) -all_test: LIB_PRE = -Wl,--whole-archive -all_test: LIB_POST = -Wl,--no-whole-archive -LTC_CFLAGS += -fprofile-arcs -ftest-coverage -EXTRALIBS += -lgcov -endif - -#AES comes in two flavours... enc+dec and enc -src/ciphers/aes/aes_enc.o: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c - ${silent} ${CC} ${LTC_CFLAGS} -DENCRYPT_ONLY -c $< -o $@ - -.c.o: -ifneq ($V,1) - @echo " * ${CC} $@" -endif - ${silent} ${CC} ${LTC_CFLAGS} -c $< -o $@ - -$(LIBNAME): $(OBJECTS) -ifneq ($V,1) - @echo " * ${AR} $@" -endif - ${silent} $(AR) $(ARFLAGS) $@ $(OBJECTS) -ifneq ($V,1) - @echo " * ${RANLIB} $@" -endif - ${silent} $(RANLIB) $@ - -test: $(call print-help,test,Builds the library and the 'test' application to run all self-tests) $(LIBNAME) $(TOBJECTS) -ifneq ($V,1) - @echo " * ${CC} $@" -endif - ${silent} $(CC) $(LTC_LDFLAGS) $(TOBJECTS) $(LIB_PRE) $(LIBNAME) $(LIB_POST) $(EXTRALIBS) -o $(TEST) - -# build the demos from a template -define DEMO_template -$(1): $(call print-help,$(1),Builds the library and the '$(1)' demo) demos/$(1).o $$(LIBNAME) -ifneq ($V,1) - @echo " * $${CC} $$@" -endif - $${silent} $$(CC) $$< $$(LIB_PRE) $$(LIBNAME) $$(LIB_POST) $$(EXTRALIBS) -o $(1) -endef - -$(foreach demo, $(strip $(DEMOS)), $(eval $(call DEMO_template,$(demo)))) - - -#This rule installs the library and the header files. This must be run -#as root in order to have a high enough permission to write to the correct -#directories and to set the owner and group to root. -install: $(call print-help,install,Installs the library and headers) .common_install - -install_bins: $(call print-help,install_bins,Installs the useful demos ($(USEFUL_DEMOS))) .common_install_bins - -uninstall: $(call print-help,uninstall,Uninstalls the library and headers) .common_uninstall - -profile: - LTC_CFLAGS="$(LTC_CFLAGS) -fprofile-generate" $(MAKE) timing EXTRALIBS="$(EXTRALIBS) -lgcov" - ./timing - rm -f timing `find . -type f | grep [.][ao] | xargs` - LTC_CFLAGS="$(LTC_CFLAGS) -fprofile-use" $(MAKE) timing EXTRALIBS="$(EXTRALIBS) -lgcov" - -# target that pre-processes all coverage data -lcov-single-create: - lcov --capture --no-external --directory src -q --output-file coverage_std.info - -# target that removes all coverage output -cleancov-clean: - rm -f `find . -type f -name "*.info" | xargs` - rm -rf coverage/ - -# merges all coverage_*.info files into coverage.info -coverage.info: - lcov `find -name 'coverage_*.info' -exec echo -n " -a {}" \;` -o coverage.info - -# generates html output from all coverage_*.info files -lcov-html: coverage.info - genhtml coverage.info --output-directory coverage -q - -# combines all necessary steps to create the coverage from a single testrun with e.g. -# CFLAGS="-DUSE_LTM -DLTM_DESC -I../libtommath" EXTRALIBS="../libtommath/libtommath.a" make coverage -j9 -lcov-single: - $(MAKE) cleancov-clean - $(MAKE) lcov-single-create - $(MAKE) coverage.info - - -#make the code coverage of the library -coverage: LTC_CFLAGS += -fprofile-arcs -ftest-coverage -coverage: EXTRALIBS += -lgcov -coverage: LIB_PRE = -Wl,--whole-archive -coverage: LIB_POST = -Wl,--no-whole-archive - -coverage: $(call print-help,coverage,Create code-coverage of the library - but better use coverage.sh) test - ./test - -# cleans everything - coverage output and standard 'clean' -cleancov: cleancov-clean clean - -# ref: HEAD -> master, tag: v1.18.2 -# git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 -# commit time: 2018-07-01 22:49:01 +0200 diff --git a/src/libtomcrypt/makefile.mingw b/src/libtomcrypt/makefile.mingw deleted file mode 100644 index 8948ca9fa3..0000000000 --- a/src/libtomcrypt/makefile.mingw +++ /dev/null @@ -1,288 +0,0 @@ -# MAKEFILE for MS Windows (mingw + gcc + gmake) -# -# BEWARE: variables OBJECTS, TOBJECTS, HEADERS, VERSION are updated via ./updatemakes.sh - -### USAGE: -# Open a command prompt with gcc + gmake in PATH and start: -# -# gmake -f makefile.mingw all -# test.exe -# gmake -f makefile.mingw PREFIX=c:\devel\libtom install -# -#Or: -# -# gmake -f makefile.mingw CFLAGS="-O3 -DUSE_LTM -DLTM_DESC -Ic:/path/to/libtommath" EXTRALIBS="-Lc:/path/to/libtommath -ltommath" all -# - -#The following can be overridden from command line e.g. make -f makefile.mingw CC=gcc ARFLAGS=rcs -PREFIX = c:\mingw -CC = gcc -AR = ar -ARFLAGS = r -RANLIB = ranlib -STRIP = strip -CFLAGS = -O2 -DUSE_LTM -DLTM_DESC -I../libtommath -EXTRALIBS = -L../libtommath -ltommath - -#Compilation flags -LTC_CFLAGS = -Isrc/headers -Itests -DLTC_SOURCE $(CFLAGS) -LTC_LDFLAGS = $(LDFLAGS) $(EXTRALIBS) -VERSION=1.18.2 - -#Libraries to be created -LIBMAIN_S =libtomcrypt.a -LIBMAIN_I =libtomcrypt.dll.a -LIBMAIN_D =libtomcrypt.dll - -#List of objects to compile (all goes to libtomcrypt.a) -OBJECTS=src/ciphers/aes/aes.o src/ciphers/aes/aes_enc.o src/ciphers/anubis.o src/ciphers/blowfish.o \ -src/ciphers/camellia.o src/ciphers/cast5.o src/ciphers/des.o src/ciphers/kasumi.o src/ciphers/khazad.o \ -src/ciphers/kseed.o src/ciphers/multi2.o src/ciphers/noekeon.o src/ciphers/rc2.o src/ciphers/rc5.o \ -src/ciphers/rc6.o src/ciphers/safer/safer.o src/ciphers/safer/saferp.o src/ciphers/skipjack.o \ -src/ciphers/twofish/twofish.o src/ciphers/xtea.o src/encauth/ccm/ccm_add_aad.o \ -src/encauth/ccm/ccm_add_nonce.o src/encauth/ccm/ccm_done.o src/encauth/ccm/ccm_init.o \ -src/encauth/ccm/ccm_memory.o src/encauth/ccm/ccm_process.o src/encauth/ccm/ccm_reset.o \ -src/encauth/ccm/ccm_test.o src/encauth/chachapoly/chacha20poly1305_add_aad.o \ -src/encauth/chachapoly/chacha20poly1305_decrypt.o src/encauth/chachapoly/chacha20poly1305_done.o \ -src/encauth/chachapoly/chacha20poly1305_encrypt.o src/encauth/chachapoly/chacha20poly1305_init.o \ -src/encauth/chachapoly/chacha20poly1305_memory.o src/encauth/chachapoly/chacha20poly1305_setiv.o \ -src/encauth/chachapoly/chacha20poly1305_setiv_rfc7905.o \ -src/encauth/chachapoly/chacha20poly1305_test.o src/encauth/eax/eax_addheader.o \ -src/encauth/eax/eax_decrypt.o src/encauth/eax/eax_decrypt_verify_memory.o src/encauth/eax/eax_done.o \ -src/encauth/eax/eax_encrypt.o src/encauth/eax/eax_encrypt_authenticate_memory.o \ -src/encauth/eax/eax_init.o src/encauth/eax/eax_test.o src/encauth/gcm/gcm_add_aad.o \ -src/encauth/gcm/gcm_add_iv.o src/encauth/gcm/gcm_done.o src/encauth/gcm/gcm_gf_mult.o \ -src/encauth/gcm/gcm_init.o src/encauth/gcm/gcm_memory.o src/encauth/gcm/gcm_mult_h.o \ -src/encauth/gcm/gcm_process.o src/encauth/gcm/gcm_reset.o src/encauth/gcm/gcm_test.o \ -src/encauth/ocb/ocb_decrypt.o src/encauth/ocb/ocb_decrypt_verify_memory.o \ -src/encauth/ocb/ocb_done_decrypt.o src/encauth/ocb/ocb_done_encrypt.o src/encauth/ocb/ocb_encrypt.o \ -src/encauth/ocb/ocb_encrypt_authenticate_memory.o src/encauth/ocb/ocb_init.o src/encauth/ocb/ocb_ntz.o \ -src/encauth/ocb/ocb_shift_xor.o src/encauth/ocb/ocb_test.o src/encauth/ocb/s_ocb_done.o \ -src/encauth/ocb3/ocb3_add_aad.o src/encauth/ocb3/ocb3_decrypt.o src/encauth/ocb3/ocb3_decrypt_last.o \ -src/encauth/ocb3/ocb3_decrypt_verify_memory.o src/encauth/ocb3/ocb3_done.o \ -src/encauth/ocb3/ocb3_encrypt.o src/encauth/ocb3/ocb3_encrypt_authenticate_memory.o \ -src/encauth/ocb3/ocb3_encrypt_last.o src/encauth/ocb3/ocb3_init.o src/encauth/ocb3/ocb3_int_ntz.o \ -src/encauth/ocb3/ocb3_int_xor_blocks.o src/encauth/ocb3/ocb3_test.o src/hashes/blake2b.o \ -src/hashes/blake2s.o src/hashes/chc/chc.o src/hashes/helper/hash_file.o \ -src/hashes/helper/hash_filehandle.o src/hashes/helper/hash_memory.o \ -src/hashes/helper/hash_memory_multi.o src/hashes/md2.o src/hashes/md4.o src/hashes/md5.o \ -src/hashes/rmd128.o src/hashes/rmd160.o src/hashes/rmd256.o src/hashes/rmd320.o src/hashes/sha1.o \ -src/hashes/sha2/sha224.o src/hashes/sha2/sha256.o src/hashes/sha2/sha384.o src/hashes/sha2/sha512.o \ -src/hashes/sha2/sha512_224.o src/hashes/sha2/sha512_256.o src/hashes/sha3.o src/hashes/sha3_test.o \ -src/hashes/tiger.o src/hashes/whirl/whirl.o src/mac/blake2/blake2bmac.o \ -src/mac/blake2/blake2bmac_file.o src/mac/blake2/blake2bmac_memory.o \ -src/mac/blake2/blake2bmac_memory_multi.o src/mac/blake2/blake2bmac_test.o src/mac/blake2/blake2smac.o \ -src/mac/blake2/blake2smac_file.o src/mac/blake2/blake2smac_memory.o \ -src/mac/blake2/blake2smac_memory_multi.o src/mac/blake2/blake2smac_test.o src/mac/f9/f9_done.o \ -src/mac/f9/f9_file.o src/mac/f9/f9_init.o src/mac/f9/f9_memory.o src/mac/f9/f9_memory_multi.o \ -src/mac/f9/f9_process.o src/mac/f9/f9_test.o src/mac/hmac/hmac_done.o src/mac/hmac/hmac_file.o \ -src/mac/hmac/hmac_init.o src/mac/hmac/hmac_memory.o src/mac/hmac/hmac_memory_multi.o \ -src/mac/hmac/hmac_process.o src/mac/hmac/hmac_test.o src/mac/omac/omac_done.o src/mac/omac/omac_file.o \ -src/mac/omac/omac_init.o src/mac/omac/omac_memory.o src/mac/omac/omac_memory_multi.o \ -src/mac/omac/omac_process.o src/mac/omac/omac_test.o src/mac/pelican/pelican.o \ -src/mac/pelican/pelican_memory.o src/mac/pelican/pelican_test.o src/mac/pmac/pmac_done.o \ -src/mac/pmac/pmac_file.o src/mac/pmac/pmac_init.o src/mac/pmac/pmac_memory.o \ -src/mac/pmac/pmac_memory_multi.o src/mac/pmac/pmac_ntz.o src/mac/pmac/pmac_process.o \ -src/mac/pmac/pmac_shift_xor.o src/mac/pmac/pmac_test.o src/mac/poly1305/poly1305.o \ -src/mac/poly1305/poly1305_file.o src/mac/poly1305/poly1305_memory.o \ -src/mac/poly1305/poly1305_memory_multi.o src/mac/poly1305/poly1305_test.o src/mac/xcbc/xcbc_done.o \ -src/mac/xcbc/xcbc_file.o src/mac/xcbc/xcbc_init.o src/mac/xcbc/xcbc_memory.o \ -src/mac/xcbc/xcbc_memory_multi.o src/mac/xcbc/xcbc_process.o src/mac/xcbc/xcbc_test.o \ -src/math/fp/ltc_ecc_fp_mulmod.o src/math/gmp_desc.o src/math/ltm_desc.o src/math/multi.o \ -src/math/radix_to_bin.o src/math/rand_bn.o src/math/rand_prime.o src/math/tfm_desc.o src/misc/adler32.o \ -src/misc/base64/base64_decode.o src/misc/base64/base64_encode.o src/misc/burn_stack.o \ -src/misc/compare_testvector.o src/misc/crc32.o src/misc/crypt/crypt.o src/misc/crypt/crypt_argchk.o \ -src/misc/crypt/crypt_cipher_descriptor.o src/misc/crypt/crypt_cipher_is_valid.o \ -src/misc/crypt/crypt_constants.o src/misc/crypt/crypt_find_cipher.o \ -src/misc/crypt/crypt_find_cipher_any.o src/misc/crypt/crypt_find_cipher_id.o \ -src/misc/crypt/crypt_find_hash.o src/misc/crypt/crypt_find_hash_any.o \ -src/misc/crypt/crypt_find_hash_id.o src/misc/crypt/crypt_find_hash_oid.o \ -src/misc/crypt/crypt_find_prng.o src/misc/crypt/crypt_fsa.o src/misc/crypt/crypt_hash_descriptor.o \ -src/misc/crypt/crypt_hash_is_valid.o src/misc/crypt/crypt_inits.o \ -src/misc/crypt/crypt_ltc_mp_descriptor.o src/misc/crypt/crypt_prng_descriptor.o \ -src/misc/crypt/crypt_prng_is_valid.o src/misc/crypt/crypt_prng_rng_descriptor.o \ -src/misc/crypt/crypt_register_all_ciphers.o src/misc/crypt/crypt_register_all_hashes.o \ -src/misc/crypt/crypt_register_all_prngs.o src/misc/crypt/crypt_register_cipher.o \ -src/misc/crypt/crypt_register_hash.o src/misc/crypt/crypt_register_prng.o src/misc/crypt/crypt_sizes.o \ -src/misc/crypt/crypt_unregister_cipher.o src/misc/crypt/crypt_unregister_hash.o \ -src/misc/crypt/crypt_unregister_prng.o src/misc/error_to_string.o src/misc/hkdf/hkdf.o \ -src/misc/hkdf/hkdf_test.o src/misc/mem_neq.o src/misc/pk_get_oid.o src/misc/pkcs5/pkcs_5_1.o \ -src/misc/pkcs5/pkcs_5_2.o src/misc/pkcs5/pkcs_5_test.o src/misc/zeromem.o src/modes/cbc/cbc_decrypt.o \ -src/modes/cbc/cbc_done.o src/modes/cbc/cbc_encrypt.o src/modes/cbc/cbc_getiv.o \ -src/modes/cbc/cbc_setiv.o src/modes/cbc/cbc_start.o src/modes/cfb/cfb_decrypt.o \ -src/modes/cfb/cfb_done.o src/modes/cfb/cfb_encrypt.o src/modes/cfb/cfb_getiv.o \ -src/modes/cfb/cfb_setiv.o src/modes/cfb/cfb_start.o src/modes/ctr/ctr_decrypt.o \ -src/modes/ctr/ctr_done.o src/modes/ctr/ctr_encrypt.o src/modes/ctr/ctr_getiv.o \ -src/modes/ctr/ctr_setiv.o src/modes/ctr/ctr_start.o src/modes/ctr/ctr_test.o \ -src/modes/ecb/ecb_decrypt.o src/modes/ecb/ecb_done.o src/modes/ecb/ecb_encrypt.o \ -src/modes/ecb/ecb_start.o src/modes/f8/f8_decrypt.o src/modes/f8/f8_done.o src/modes/f8/f8_encrypt.o \ -src/modes/f8/f8_getiv.o src/modes/f8/f8_setiv.o src/modes/f8/f8_start.o src/modes/f8/f8_test_mode.o \ -src/modes/lrw/lrw_decrypt.o src/modes/lrw/lrw_done.o src/modes/lrw/lrw_encrypt.o \ -src/modes/lrw/lrw_getiv.o src/modes/lrw/lrw_process.o src/modes/lrw/lrw_setiv.o \ -src/modes/lrw/lrw_start.o src/modes/lrw/lrw_test.o src/modes/ofb/ofb_decrypt.o src/modes/ofb/ofb_done.o \ -src/modes/ofb/ofb_encrypt.o src/modes/ofb/ofb_getiv.o src/modes/ofb/ofb_setiv.o \ -src/modes/ofb/ofb_start.o src/modes/xts/xts_decrypt.o src/modes/xts/xts_done.o \ -src/modes/xts/xts_encrypt.o src/modes/xts/xts_init.o src/modes/xts/xts_mult_x.o \ -src/modes/xts/xts_test.o src/pk/asn1/der/bit/der_decode_bit_string.o \ -src/pk/asn1/der/bit/der_decode_raw_bit_string.o src/pk/asn1/der/bit/der_encode_bit_string.o \ -src/pk/asn1/der/bit/der_encode_raw_bit_string.o src/pk/asn1/der/bit/der_length_bit_string.o \ -src/pk/asn1/der/boolean/der_decode_boolean.o src/pk/asn1/der/boolean/der_encode_boolean.o \ -src/pk/asn1/der/boolean/der_length_boolean.o src/pk/asn1/der/choice/der_decode_choice.o \ -src/pk/asn1/der/generalizedtime/der_decode_generalizedtime.o \ -src/pk/asn1/der/generalizedtime/der_encode_generalizedtime.o \ -src/pk/asn1/der/generalizedtime/der_length_generalizedtime.o \ -src/pk/asn1/der/ia5/der_decode_ia5_string.o src/pk/asn1/der/ia5/der_encode_ia5_string.o \ -src/pk/asn1/der/ia5/der_length_ia5_string.o src/pk/asn1/der/integer/der_decode_integer.o \ -src/pk/asn1/der/integer/der_encode_integer.o src/pk/asn1/der/integer/der_length_integer.o \ -src/pk/asn1/der/object_identifier/der_decode_object_identifier.o \ -src/pk/asn1/der/object_identifier/der_encode_object_identifier.o \ -src/pk/asn1/der/object_identifier/der_length_object_identifier.o \ -src/pk/asn1/der/octet/der_decode_octet_string.o src/pk/asn1/der/octet/der_encode_octet_string.o \ -src/pk/asn1/der/octet/der_length_octet_string.o \ -src/pk/asn1/der/printable_string/der_decode_printable_string.o \ -src/pk/asn1/der/printable_string/der_encode_printable_string.o \ -src/pk/asn1/der/printable_string/der_length_printable_string.o \ -src/pk/asn1/der/sequence/der_decode_sequence_ex.o \ -src/pk/asn1/der/sequence/der_decode_sequence_flexi.o \ -src/pk/asn1/der/sequence/der_decode_sequence_multi.o \ -src/pk/asn1/der/sequence/der_decode_subject_public_key_info.o \ -src/pk/asn1/der/sequence/der_encode_sequence_ex.o \ -src/pk/asn1/der/sequence/der_encode_sequence_multi.o \ -src/pk/asn1/der/sequence/der_encode_subject_public_key_info.o \ -src/pk/asn1/der/sequence/der_length_sequence.o src/pk/asn1/der/sequence/der_sequence_free.o \ -src/pk/asn1/der/sequence/der_sequence_shrink.o src/pk/asn1/der/set/der_encode_set.o \ -src/pk/asn1/der/set/der_encode_setof.o src/pk/asn1/der/short_integer/der_decode_short_integer.o \ -src/pk/asn1/der/short_integer/der_encode_short_integer.o \ -src/pk/asn1/der/short_integer/der_length_short_integer.o \ -src/pk/asn1/der/teletex_string/der_decode_teletex_string.o \ -src/pk/asn1/der/teletex_string/der_length_teletex_string.o \ -src/pk/asn1/der/utctime/der_decode_utctime.o src/pk/asn1/der/utctime/der_encode_utctime.o \ -src/pk/asn1/der/utctime/der_length_utctime.o src/pk/asn1/der/utf8/der_decode_utf8_string.o \ -src/pk/asn1/der/utf8/der_encode_utf8_string.o src/pk/asn1/der/utf8/der_length_utf8_string.o \ -src/pk/dh/dh.o src/pk/dh/dh_check_pubkey.o src/pk/dh/dh_export.o src/pk/dh/dh_export_key.o \ -src/pk/dh/dh_free.o src/pk/dh/dh_generate_key.o src/pk/dh/dh_import.o src/pk/dh/dh_set.o \ -src/pk/dh/dh_set_pg_dhparam.o src/pk/dh/dh_shared_secret.o src/pk/dsa/dsa_decrypt_key.o \ -src/pk/dsa/dsa_encrypt_key.o src/pk/dsa/dsa_export.o src/pk/dsa/dsa_free.o \ -src/pk/dsa/dsa_generate_key.o src/pk/dsa/dsa_generate_pqg.o src/pk/dsa/dsa_import.o \ -src/pk/dsa/dsa_make_key.o src/pk/dsa/dsa_set.o src/pk/dsa/dsa_set_pqg_dsaparam.o \ -src/pk/dsa/dsa_shared_secret.o src/pk/dsa/dsa_sign_hash.o src/pk/dsa/dsa_verify_hash.o \ -src/pk/dsa/dsa_verify_key.o src/pk/ecc/ecc.o src/pk/ecc/ecc_ansi_x963_export.o \ -src/pk/ecc/ecc_ansi_x963_import.o src/pk/ecc/ecc_decrypt_key.o src/pk/ecc/ecc_encrypt_key.o \ -src/pk/ecc/ecc_export.o src/pk/ecc/ecc_free.o src/pk/ecc/ecc_get_size.o src/pk/ecc/ecc_import.o \ -src/pk/ecc/ecc_make_key.o src/pk/ecc/ecc_shared_secret.o src/pk/ecc/ecc_sign_hash.o \ -src/pk/ecc/ecc_sizes.o src/pk/ecc/ecc_test.o src/pk/ecc/ecc_verify_hash.o \ -src/pk/ecc/ltc_ecc_is_valid_idx.o src/pk/ecc/ltc_ecc_map.o src/pk/ecc/ltc_ecc_mul2add.o \ -src/pk/ecc/ltc_ecc_mulmod.o src/pk/ecc/ltc_ecc_mulmod_timing.o src/pk/ecc/ltc_ecc_points.o \ -src/pk/ecc/ltc_ecc_projective_add_point.o src/pk/ecc/ltc_ecc_projective_dbl_point.o \ -src/pk/katja/katja_decrypt_key.o src/pk/katja/katja_encrypt_key.o src/pk/katja/katja_export.o \ -src/pk/katja/katja_exptmod.o src/pk/katja/katja_free.o src/pk/katja/katja_import.o \ -src/pk/katja/katja_make_key.o src/pk/pkcs1/pkcs_1_i2osp.o src/pk/pkcs1/pkcs_1_mgf1.o \ -src/pk/pkcs1/pkcs_1_oaep_decode.o src/pk/pkcs1/pkcs_1_oaep_encode.o src/pk/pkcs1/pkcs_1_os2ip.o \ -src/pk/pkcs1/pkcs_1_pss_decode.o src/pk/pkcs1/pkcs_1_pss_encode.o src/pk/pkcs1/pkcs_1_v1_5_decode.o \ -src/pk/pkcs1/pkcs_1_v1_5_encode.o src/pk/rsa/rsa_decrypt_key.o src/pk/rsa/rsa_encrypt_key.o \ -src/pk/rsa/rsa_export.o src/pk/rsa/rsa_exptmod.o src/pk/rsa/rsa_free.o src/pk/rsa/rsa_get_size.o \ -src/pk/rsa/rsa_import.o src/pk/rsa/rsa_import_pkcs8.o src/pk/rsa/rsa_import_x509.o \ -src/pk/rsa/rsa_make_key.o src/pk/rsa/rsa_set.o src/pk/rsa/rsa_sign_hash.o \ -src/pk/rsa/rsa_sign_saltlen_get.o src/pk/rsa/rsa_verify_hash.o src/prngs/chacha20.o src/prngs/fortuna.o \ -src/prngs/rc4.o src/prngs/rng_get_bytes.o src/prngs/rng_make_prng.o src/prngs/sober128.o \ -src/prngs/sprng.o src/prngs/yarrow.o src/stream/chacha/chacha_crypt.o src/stream/chacha/chacha_done.o \ -src/stream/chacha/chacha_ivctr32.o src/stream/chacha/chacha_ivctr64.o \ -src/stream/chacha/chacha_keystream.o src/stream/chacha/chacha_setup.o src/stream/chacha/chacha_test.o \ -src/stream/rc4/rc4_stream.o src/stream/rc4/rc4_test.o src/stream/sober128/sober128_stream.o \ -src/stream/sober128/sober128_test.o - -#List of test objects to compile -TOBJECTS=tests/base64_test.o tests/cipher_hash_test.o tests/common.o tests/der_test.o tests/dh_test.o \ -tests/dsa_test.o tests/ecc_test.o tests/file_test.o tests/katja_test.o tests/mac_test.o tests/misc_test.o \ -tests/modes_test.o tests/mpi_test.o tests/multi_test.o tests/no_prng.o tests/pkcs_1_eme_test.o \ -tests/pkcs_1_emsa_test.o tests/pkcs_1_oaep_test.o tests/pkcs_1_pss_test.o tests/pkcs_1_test.o \ -tests/prng_test.o tests/rotate_test.o tests/rsa_test.o tests/store_test.o tests/test.o - -#The following headers will be installed by "make install" -HEADERS=src/headers/tomcrypt.h src/headers/tomcrypt_argchk.h src/headers/tomcrypt_cfg.h \ -src/headers/tomcrypt_cipher.h src/headers/tomcrypt_custom.h src/headers/tomcrypt_hash.h \ -src/headers/tomcrypt_mac.h src/headers/tomcrypt_macros.h src/headers/tomcrypt_math.h \ -src/headers/tomcrypt_misc.h src/headers/tomcrypt_pk.h src/headers/tomcrypt_pkcs.h \ -src/headers/tomcrypt_prng.h - -#The default rule for make builds the libtomcrypt.a library (static) -default: $(LIBMAIN_S) - -#SPECIAL: AES comes in two flavours - enc+dec and enc-only -src/ciphers/aes/aes_enc.o: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c - $(CC) $(LTC_CFLAGS) -DENCRYPT_ONLY -c src/ciphers/aes/aes.c -o src/ciphers/aes/aes_enc.o - -#SPECIAL: these are the rules to make certain object files -src/ciphers/aes/aes.o: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c -src/ciphers/twofish/twofish.o: src/ciphers/twofish/twofish.c src/ciphers/twofish/twofish_tab.c -src/hashes/whirl/whirl.o: src/hashes/whirl/whirl.c src/hashes/whirl/whirltab.c -src/hashes/sha2/sha512.o: src/hashes/sha2/sha512.c src/hashes/sha2/sha384.c -src/hashes/sha2/sha512_224.o: src/hashes/sha2/sha512.c src/hashes/sha2/sha512_224.c -src/hashes/sha2/sha512_256.o: src/hashes/sha2/sha512.c src/hashes/sha2/sha512_256.c -src/hashes/sha2/sha256.o: src/hashes/sha2/sha256.c src/hashes/sha2/sha224.c - -#Dependencies on *.h -$(OBJECTS): $(HEADERS) -$(TOBJECTS): $(HEADERS) tests/tomcrypt_test.h - -.c.o: - $(CC) $(LTC_CFLAGS) -c $< -o $@ - -#Create libtomcrypt.a -$(LIBMAIN_S): $(OBJECTS) - $(AR) $(ARFLAGS) $@ $(OBJECTS) - $(RANLIB) $@ - -#Create DLL + import library libtomcrypt.dll.a -$(LIBMAIN_D) $(LIBMAIN_I): $(OBJECTS) - $(CC) -s -shared -o $(LIBMAIN_D) $^ -Wl,--enable-auto-import,--export-all -Wl,--out-implib=$(LIBMAIN_I) $(LTC_LDFLAGS) - $(STRIP) -S $(LIBMAIN_D) - -#Demo tools/utilities -hashsum.exe: demos/hashsum.o $(LIBMAIN_S) - $(CC) demos/hashsum.o $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ -ltcrypt.exe: demos/ltcrypt.o $(LIBMAIN_S) - $(CC) demos/ltcrypt.o $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ -small.exe: demos/small.o $(LIBMAIN_S) - $(CC) demos/small.o $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ -tv_gen.exe: demos/tv_gen.o $(LIBMAIN_S) - $(CC) demos/tv_gen.o $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ -sizes.exe: demos/sizes.o $(LIBMAIN_S) - $(CC) demos/sizes.o $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ -constants.exe: demos/constants.o $(LIBMAIN_S) - $(CC) demos/constants.o $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ -timing.exe: demos/timing.o $(LIBMAIN_S) - $(CC) demos/timing.o $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ - -#Tests -test.exe: $(TOBJECTS) $(LIBMAIN_S) - $(CC) $(TOBJECTS) $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ - @echo NOTICE: start the tests by launching test.exe - -all: $(LIBMAIN_S) $(LIBMAIN_I) $(LIBMAIN_D) hashsum.exe ltcrypt.exe small.exe tv_gen.exe sizes.exe constants.exe timing.exe test.exe - -test: test.exe - -clean: - @-cmd /c del /Q *_tv.txt 2>nul - @-cmd /c del /Q /S *.o *.a *.exe *.dll 2>nul - -#Install the library + headers -install: $(LIBMAIN_S) $(LIBMAIN_I) $(LIBMAIN_D) - cmd /c if not exist "$(PREFIX)\bin" mkdir "$(PREFIX)\bin" - cmd /c if not exist "$(PREFIX)\lib" mkdir "$(PREFIX)\lib" - cmd /c if not exist "$(PREFIX)\include" mkdir "$(PREFIX)\include" - copy /Y $(LIBMAIN_S) "$(PREFIX)\lib" - copy /Y $(LIBMAIN_I) "$(PREFIX)\lib" - copy /Y $(LIBMAIN_D) "$(PREFIX)\bin" - copy /Y src\headers\tomcrypt*.h "$(PREFIX)\include" - -#Install useful tools -install_bins: hashsum - cmd /c if not exist "$(PREFIX)\bin" mkdir "$(PREFIX)\bin" - copy /Y hashsum.exe "$(PREFIX)\bin" - -#Install documentation -install_docs: doc/crypt.pdf - cmd /c if not exist "$(PREFIX)\doc" mkdir "$(PREFIX)\doc" - copy /Y doc\crypt.pdf "$(PREFIX)\doc" diff --git a/src/libtomcrypt/makefile.msvc b/src/libtomcrypt/makefile.msvc deleted file mode 100644 index 1efa11c6aa..0000000000 --- a/src/libtomcrypt/makefile.msvc +++ /dev/null @@ -1,273 +0,0 @@ -# MAKEFILE for MS Windows (nmake + Windows SDK) -# -# BEWARE: variables OBJECTS, TOBJECTS, HEADERS, VERSION are updated via ./updatemakes.sh - -### USAGE: -# Open a command prompt with WinSDK variables set and start: -# -# nmake -f makefile.msvc all -# test.exe -# nmake -f makefile.msvc PREFIX=c:\devel\libtom install -# -#Or: -# -# nmake -f makefile.msvc CFLAGS="/DUSE_LTM /DLTM_DESC /Ic:\path\to\libtommath" EXTRALIBS=c:\path\to\libtommath\tommath.lib all -# - -#The following can be overridden from command line e.g. make -f makefile.msvc CC=gcc ARFLAGS=rcs -PREFIX = c:\devel -CFLAGS = /Ox /DUSE_LTM /DLTM_DESC /I../libtommath -EXTRALIBS = ../libtommath/tommath.lib - -#Compilation flags -LTC_CFLAGS = /nologo /Isrc/headers/ /Itests/ /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_DEPRECATE /DLTC_SOURCE /W3 $(CFLAGS) -LTC_LDFLAGS = advapi32.lib $(EXTRALIBS) -VERSION=1.18.2 - -#Libraries to be created (this makefile builds only static libraries) -LIBMAIN_S =tomcrypt.lib - -#List of objects to compile (all goes to tomcrypt.lib) -OBJECTS=src/ciphers/aes/aes.obj src/ciphers/aes/aes_enc.obj src/ciphers/anubis.obj src/ciphers/blowfish.obj \ -src/ciphers/camellia.obj src/ciphers/cast5.obj src/ciphers/des.obj src/ciphers/kasumi.obj src/ciphers/khazad.obj \ -src/ciphers/kseed.obj src/ciphers/multi2.obj src/ciphers/noekeon.obj src/ciphers/rc2.obj src/ciphers/rc5.obj \ -src/ciphers/rc6.obj src/ciphers/safer/safer.obj src/ciphers/safer/saferp.obj src/ciphers/skipjack.obj \ -src/ciphers/twofish/twofish.obj src/ciphers/xtea.obj src/encauth/ccm/ccm_add_aad.obj \ -src/encauth/ccm/ccm_add_nonce.obj src/encauth/ccm/ccm_done.obj src/encauth/ccm/ccm_init.obj \ -src/encauth/ccm/ccm_memory.obj src/encauth/ccm/ccm_process.obj src/encauth/ccm/ccm_reset.obj \ -src/encauth/ccm/ccm_test.obj src/encauth/chachapoly/chacha20poly1305_add_aad.obj \ -src/encauth/chachapoly/chacha20poly1305_decrypt.obj src/encauth/chachapoly/chacha20poly1305_done.obj \ -src/encauth/chachapoly/chacha20poly1305_encrypt.obj src/encauth/chachapoly/chacha20poly1305_init.obj \ -src/encauth/chachapoly/chacha20poly1305_memory.obj src/encauth/chachapoly/chacha20poly1305_setiv.obj \ -src/encauth/chachapoly/chacha20poly1305_setiv_rfc7905.obj \ -src/encauth/chachapoly/chacha20poly1305_test.obj src/encauth/eax/eax_addheader.obj \ -src/encauth/eax/eax_decrypt.obj src/encauth/eax/eax_decrypt_verify_memory.obj src/encauth/eax/eax_done.obj \ -src/encauth/eax/eax_encrypt.obj src/encauth/eax/eax_encrypt_authenticate_memory.obj \ -src/encauth/eax/eax_init.obj src/encauth/eax/eax_test.obj src/encauth/gcm/gcm_add_aad.obj \ -src/encauth/gcm/gcm_add_iv.obj src/encauth/gcm/gcm_done.obj src/encauth/gcm/gcm_gf_mult.obj \ -src/encauth/gcm/gcm_init.obj src/encauth/gcm/gcm_memory.obj src/encauth/gcm/gcm_mult_h.obj \ -src/encauth/gcm/gcm_process.obj src/encauth/gcm/gcm_reset.obj src/encauth/gcm/gcm_test.obj \ -src/encauth/ocb/ocb_decrypt.obj src/encauth/ocb/ocb_decrypt_verify_memory.obj \ -src/encauth/ocb/ocb_done_decrypt.obj src/encauth/ocb/ocb_done_encrypt.obj src/encauth/ocb/ocb_encrypt.obj \ -src/encauth/ocb/ocb_encrypt_authenticate_memory.obj src/encauth/ocb/ocb_init.obj src/encauth/ocb/ocb_ntz.obj \ -src/encauth/ocb/ocb_shift_xor.obj src/encauth/ocb/ocb_test.obj src/encauth/ocb/s_ocb_done.obj \ -src/encauth/ocb3/ocb3_add_aad.obj src/encauth/ocb3/ocb3_decrypt.obj src/encauth/ocb3/ocb3_decrypt_last.obj \ -src/encauth/ocb3/ocb3_decrypt_verify_memory.obj src/encauth/ocb3/ocb3_done.obj \ -src/encauth/ocb3/ocb3_encrypt.obj src/encauth/ocb3/ocb3_encrypt_authenticate_memory.obj \ -src/encauth/ocb3/ocb3_encrypt_last.obj src/encauth/ocb3/ocb3_init.obj src/encauth/ocb3/ocb3_int_ntz.obj \ -src/encauth/ocb3/ocb3_int_xor_blocks.obj src/encauth/ocb3/ocb3_test.obj src/hashes/blake2b.obj \ -src/hashes/blake2s.obj src/hashes/chc/chc.obj src/hashes/helper/hash_file.obj \ -src/hashes/helper/hash_filehandle.obj src/hashes/helper/hash_memory.obj \ -src/hashes/helper/hash_memory_multi.obj src/hashes/md2.obj src/hashes/md4.obj src/hashes/md5.obj \ -src/hashes/rmd128.obj src/hashes/rmd160.obj src/hashes/rmd256.obj src/hashes/rmd320.obj src/hashes/sha1.obj \ -src/hashes/sha2/sha224.obj src/hashes/sha2/sha256.obj src/hashes/sha2/sha384.obj src/hashes/sha2/sha512.obj \ -src/hashes/sha2/sha512_224.obj src/hashes/sha2/sha512_256.obj src/hashes/sha3.obj src/hashes/sha3_test.obj \ -src/hashes/tiger.obj src/hashes/whirl/whirl.obj src/mac/blake2/blake2bmac.obj \ -src/mac/blake2/blake2bmac_file.obj src/mac/blake2/blake2bmac_memory.obj \ -src/mac/blake2/blake2bmac_memory_multi.obj src/mac/blake2/blake2bmac_test.obj src/mac/blake2/blake2smac.obj \ -src/mac/blake2/blake2smac_file.obj src/mac/blake2/blake2smac_memory.obj \ -src/mac/blake2/blake2smac_memory_multi.obj src/mac/blake2/blake2smac_test.obj src/mac/f9/f9_done.obj \ -src/mac/f9/f9_file.obj src/mac/f9/f9_init.obj src/mac/f9/f9_memory.obj src/mac/f9/f9_memory_multi.obj \ -src/mac/f9/f9_process.obj src/mac/f9/f9_test.obj src/mac/hmac/hmac_done.obj src/mac/hmac/hmac_file.obj \ -src/mac/hmac/hmac_init.obj src/mac/hmac/hmac_memory.obj src/mac/hmac/hmac_memory_multi.obj \ -src/mac/hmac/hmac_process.obj src/mac/hmac/hmac_test.obj src/mac/omac/omac_done.obj src/mac/omac/omac_file.obj \ -src/mac/omac/omac_init.obj src/mac/omac/omac_memory.obj src/mac/omac/omac_memory_multi.obj \ -src/mac/omac/omac_process.obj src/mac/omac/omac_test.obj src/mac/pelican/pelican.obj \ -src/mac/pelican/pelican_memory.obj src/mac/pelican/pelican_test.obj src/mac/pmac/pmac_done.obj \ -src/mac/pmac/pmac_file.obj src/mac/pmac/pmac_init.obj src/mac/pmac/pmac_memory.obj \ -src/mac/pmac/pmac_memory_multi.obj src/mac/pmac/pmac_ntz.obj src/mac/pmac/pmac_process.obj \ -src/mac/pmac/pmac_shift_xor.obj src/mac/pmac/pmac_test.obj src/mac/poly1305/poly1305.obj \ -src/mac/poly1305/poly1305_file.obj src/mac/poly1305/poly1305_memory.obj \ -src/mac/poly1305/poly1305_memory_multi.obj src/mac/poly1305/poly1305_test.obj src/mac/xcbc/xcbc_done.obj \ -src/mac/xcbc/xcbc_file.obj src/mac/xcbc/xcbc_init.obj src/mac/xcbc/xcbc_memory.obj \ -src/mac/xcbc/xcbc_memory_multi.obj src/mac/xcbc/xcbc_process.obj src/mac/xcbc/xcbc_test.obj \ -src/math/fp/ltc_ecc_fp_mulmod.obj src/math/gmp_desc.obj src/math/ltm_desc.obj src/math/multi.obj \ -src/math/radix_to_bin.obj src/math/rand_bn.obj src/math/rand_prime.obj src/math/tfm_desc.obj src/misc/adler32.obj \ -src/misc/base64/base64_decode.obj src/misc/base64/base64_encode.obj src/misc/burn_stack.obj \ -src/misc/compare_testvector.obj src/misc/crc32.obj src/misc/crypt/crypt.obj src/misc/crypt/crypt_argchk.obj \ -src/misc/crypt/crypt_cipher_descriptor.obj src/misc/crypt/crypt_cipher_is_valid.obj \ -src/misc/crypt/crypt_constants.obj src/misc/crypt/crypt_find_cipher.obj \ -src/misc/crypt/crypt_find_cipher_any.obj src/misc/crypt/crypt_find_cipher_id.obj \ -src/misc/crypt/crypt_find_hash.obj src/misc/crypt/crypt_find_hash_any.obj \ -src/misc/crypt/crypt_find_hash_id.obj src/misc/crypt/crypt_find_hash_oid.obj \ -src/misc/crypt/crypt_find_prng.obj src/misc/crypt/crypt_fsa.obj src/misc/crypt/crypt_hash_descriptor.obj \ -src/misc/crypt/crypt_hash_is_valid.obj src/misc/crypt/crypt_inits.obj \ -src/misc/crypt/crypt_ltc_mp_descriptor.obj src/misc/crypt/crypt_prng_descriptor.obj \ -src/misc/crypt/crypt_prng_is_valid.obj src/misc/crypt/crypt_prng_rng_descriptor.obj \ -src/misc/crypt/crypt_register_all_ciphers.obj src/misc/crypt/crypt_register_all_hashes.obj \ -src/misc/crypt/crypt_register_all_prngs.obj src/misc/crypt/crypt_register_cipher.obj \ -src/misc/crypt/crypt_register_hash.obj src/misc/crypt/crypt_register_prng.obj src/misc/crypt/crypt_sizes.obj \ -src/misc/crypt/crypt_unregister_cipher.obj src/misc/crypt/crypt_unregister_hash.obj \ -src/misc/crypt/crypt_unregister_prng.obj src/misc/error_to_string.obj src/misc/hkdf/hkdf.obj \ -src/misc/hkdf/hkdf_test.obj src/misc/mem_neq.obj src/misc/pk_get_oid.obj src/misc/pkcs5/pkcs_5_1.obj \ -src/misc/pkcs5/pkcs_5_2.obj src/misc/pkcs5/pkcs_5_test.obj src/misc/zeromem.obj src/modes/cbc/cbc_decrypt.obj \ -src/modes/cbc/cbc_done.obj src/modes/cbc/cbc_encrypt.obj src/modes/cbc/cbc_getiv.obj \ -src/modes/cbc/cbc_setiv.obj src/modes/cbc/cbc_start.obj src/modes/cfb/cfb_decrypt.obj \ -src/modes/cfb/cfb_done.obj src/modes/cfb/cfb_encrypt.obj src/modes/cfb/cfb_getiv.obj \ -src/modes/cfb/cfb_setiv.obj src/modes/cfb/cfb_start.obj src/modes/ctr/ctr_decrypt.obj \ -src/modes/ctr/ctr_done.obj src/modes/ctr/ctr_encrypt.obj src/modes/ctr/ctr_getiv.obj \ -src/modes/ctr/ctr_setiv.obj src/modes/ctr/ctr_start.obj src/modes/ctr/ctr_test.obj \ -src/modes/ecb/ecb_decrypt.obj src/modes/ecb/ecb_done.obj src/modes/ecb/ecb_encrypt.obj \ -src/modes/ecb/ecb_start.obj src/modes/f8/f8_decrypt.obj src/modes/f8/f8_done.obj src/modes/f8/f8_encrypt.obj \ -src/modes/f8/f8_getiv.obj src/modes/f8/f8_setiv.obj src/modes/f8/f8_start.obj src/modes/f8/f8_test_mode.obj \ -src/modes/lrw/lrw_decrypt.obj src/modes/lrw/lrw_done.obj src/modes/lrw/lrw_encrypt.obj \ -src/modes/lrw/lrw_getiv.obj src/modes/lrw/lrw_process.obj src/modes/lrw/lrw_setiv.obj \ -src/modes/lrw/lrw_start.obj src/modes/lrw/lrw_test.obj src/modes/ofb/ofb_decrypt.obj src/modes/ofb/ofb_done.obj \ -src/modes/ofb/ofb_encrypt.obj src/modes/ofb/ofb_getiv.obj src/modes/ofb/ofb_setiv.obj \ -src/modes/ofb/ofb_start.obj src/modes/xts/xts_decrypt.obj src/modes/xts/xts_done.obj \ -src/modes/xts/xts_encrypt.obj src/modes/xts/xts_init.obj src/modes/xts/xts_mult_x.obj \ -src/modes/xts/xts_test.obj src/pk/asn1/der/bit/der_decode_bit_string.obj \ -src/pk/asn1/der/bit/der_decode_raw_bit_string.obj src/pk/asn1/der/bit/der_encode_bit_string.obj \ -src/pk/asn1/der/bit/der_encode_raw_bit_string.obj src/pk/asn1/der/bit/der_length_bit_string.obj \ -src/pk/asn1/der/boolean/der_decode_boolean.obj src/pk/asn1/der/boolean/der_encode_boolean.obj \ -src/pk/asn1/der/boolean/der_length_boolean.obj src/pk/asn1/der/choice/der_decode_choice.obj \ -src/pk/asn1/der/generalizedtime/der_decode_generalizedtime.obj \ -src/pk/asn1/der/generalizedtime/der_encode_generalizedtime.obj \ -src/pk/asn1/der/generalizedtime/der_length_generalizedtime.obj \ -src/pk/asn1/der/ia5/der_decode_ia5_string.obj src/pk/asn1/der/ia5/der_encode_ia5_string.obj \ -src/pk/asn1/der/ia5/der_length_ia5_string.obj src/pk/asn1/der/integer/der_decode_integer.obj \ -src/pk/asn1/der/integer/der_encode_integer.obj src/pk/asn1/der/integer/der_length_integer.obj \ -src/pk/asn1/der/object_identifier/der_decode_object_identifier.obj \ -src/pk/asn1/der/object_identifier/der_encode_object_identifier.obj \ -src/pk/asn1/der/object_identifier/der_length_object_identifier.obj \ -src/pk/asn1/der/octet/der_decode_octet_string.obj src/pk/asn1/der/octet/der_encode_octet_string.obj \ -src/pk/asn1/der/octet/der_length_octet_string.obj \ -src/pk/asn1/der/printable_string/der_decode_printable_string.obj \ -src/pk/asn1/der/printable_string/der_encode_printable_string.obj \ -src/pk/asn1/der/printable_string/der_length_printable_string.obj \ -src/pk/asn1/der/sequence/der_decode_sequence_ex.obj \ -src/pk/asn1/der/sequence/der_decode_sequence_flexi.obj \ -src/pk/asn1/der/sequence/der_decode_sequence_multi.obj \ -src/pk/asn1/der/sequence/der_decode_subject_public_key_info.obj \ -src/pk/asn1/der/sequence/der_encode_sequence_ex.obj \ -src/pk/asn1/der/sequence/der_encode_sequence_multi.obj \ -src/pk/asn1/der/sequence/der_encode_subject_public_key_info.obj \ -src/pk/asn1/der/sequence/der_length_sequence.obj src/pk/asn1/der/sequence/der_sequence_free.obj \ -src/pk/asn1/der/sequence/der_sequence_shrink.obj src/pk/asn1/der/set/der_encode_set.obj \ -src/pk/asn1/der/set/der_encode_setof.obj src/pk/asn1/der/short_integer/der_decode_short_integer.obj \ -src/pk/asn1/der/short_integer/der_encode_short_integer.obj \ -src/pk/asn1/der/short_integer/der_length_short_integer.obj \ -src/pk/asn1/der/teletex_string/der_decode_teletex_string.obj \ -src/pk/asn1/der/teletex_string/der_length_teletex_string.obj \ -src/pk/asn1/der/utctime/der_decode_utctime.obj src/pk/asn1/der/utctime/der_encode_utctime.obj \ -src/pk/asn1/der/utctime/der_length_utctime.obj src/pk/asn1/der/utf8/der_decode_utf8_string.obj \ -src/pk/asn1/der/utf8/der_encode_utf8_string.obj src/pk/asn1/der/utf8/der_length_utf8_string.obj \ -src/pk/dh/dh.obj src/pk/dh/dh_check_pubkey.obj src/pk/dh/dh_export.obj src/pk/dh/dh_export_key.obj \ -src/pk/dh/dh_free.obj src/pk/dh/dh_generate_key.obj src/pk/dh/dh_import.obj src/pk/dh/dh_set.obj \ -src/pk/dh/dh_set_pg_dhparam.obj src/pk/dh/dh_shared_secret.obj src/pk/dsa/dsa_decrypt_key.obj \ -src/pk/dsa/dsa_encrypt_key.obj src/pk/dsa/dsa_export.obj src/pk/dsa/dsa_free.obj \ -src/pk/dsa/dsa_generate_key.obj src/pk/dsa/dsa_generate_pqg.obj src/pk/dsa/dsa_import.obj \ -src/pk/dsa/dsa_make_key.obj src/pk/dsa/dsa_set.obj src/pk/dsa/dsa_set_pqg_dsaparam.obj \ -src/pk/dsa/dsa_shared_secret.obj src/pk/dsa/dsa_sign_hash.obj src/pk/dsa/dsa_verify_hash.obj \ -src/pk/dsa/dsa_verify_key.obj src/pk/ecc/ecc.obj src/pk/ecc/ecc_ansi_x963_export.obj \ -src/pk/ecc/ecc_ansi_x963_import.obj src/pk/ecc/ecc_decrypt_key.obj src/pk/ecc/ecc_encrypt_key.obj \ -src/pk/ecc/ecc_export.obj src/pk/ecc/ecc_free.obj src/pk/ecc/ecc_get_size.obj src/pk/ecc/ecc_import.obj \ -src/pk/ecc/ecc_make_key.obj src/pk/ecc/ecc_shared_secret.obj src/pk/ecc/ecc_sign_hash.obj \ -src/pk/ecc/ecc_sizes.obj src/pk/ecc/ecc_test.obj src/pk/ecc/ecc_verify_hash.obj \ -src/pk/ecc/ltc_ecc_is_valid_idx.obj src/pk/ecc/ltc_ecc_map.obj src/pk/ecc/ltc_ecc_mul2add.obj \ -src/pk/ecc/ltc_ecc_mulmod.obj src/pk/ecc/ltc_ecc_mulmod_timing.obj src/pk/ecc/ltc_ecc_points.obj \ -src/pk/ecc/ltc_ecc_projective_add_point.obj src/pk/ecc/ltc_ecc_projective_dbl_point.obj \ -src/pk/katja/katja_decrypt_key.obj src/pk/katja/katja_encrypt_key.obj src/pk/katja/katja_export.obj \ -src/pk/katja/katja_exptmod.obj src/pk/katja/katja_free.obj src/pk/katja/katja_import.obj \ -src/pk/katja/katja_make_key.obj src/pk/pkcs1/pkcs_1_i2osp.obj src/pk/pkcs1/pkcs_1_mgf1.obj \ -src/pk/pkcs1/pkcs_1_oaep_decode.obj src/pk/pkcs1/pkcs_1_oaep_encode.obj src/pk/pkcs1/pkcs_1_os2ip.obj \ -src/pk/pkcs1/pkcs_1_pss_decode.obj src/pk/pkcs1/pkcs_1_pss_encode.obj src/pk/pkcs1/pkcs_1_v1_5_decode.obj \ -src/pk/pkcs1/pkcs_1_v1_5_encode.obj src/pk/rsa/rsa_decrypt_key.obj src/pk/rsa/rsa_encrypt_key.obj \ -src/pk/rsa/rsa_export.obj src/pk/rsa/rsa_exptmod.obj src/pk/rsa/rsa_free.obj src/pk/rsa/rsa_get_size.obj \ -src/pk/rsa/rsa_import.obj src/pk/rsa/rsa_import_pkcs8.obj src/pk/rsa/rsa_import_x509.obj \ -src/pk/rsa/rsa_make_key.obj src/pk/rsa/rsa_set.obj src/pk/rsa/rsa_sign_hash.obj \ -src/pk/rsa/rsa_sign_saltlen_get.obj src/pk/rsa/rsa_verify_hash.obj src/prngs/chacha20.obj src/prngs/fortuna.obj \ -src/prngs/rc4.obj src/prngs/rng_get_bytes.obj src/prngs/rng_make_prng.obj src/prngs/sober128.obj \ -src/prngs/sprng.obj src/prngs/yarrow.obj src/stream/chacha/chacha_crypt.obj src/stream/chacha/chacha_done.obj \ -src/stream/chacha/chacha_ivctr32.obj src/stream/chacha/chacha_ivctr64.obj \ -src/stream/chacha/chacha_keystream.obj src/stream/chacha/chacha_setup.obj src/stream/chacha/chacha_test.obj \ -src/stream/rc4/rc4_stream.obj src/stream/rc4/rc4_test.obj src/stream/sober128/sober128_stream.obj \ -src/stream/sober128/sober128_test.obj - -#List of test objects to compile -TOBJECTS=tests/base64_test.obj tests/cipher_hash_test.obj tests/common.obj tests/der_test.obj tests/dh_test.obj \ -tests/dsa_test.obj tests/ecc_test.obj tests/file_test.obj tests/katja_test.obj tests/mac_test.obj tests/misc_test.obj \ -tests/modes_test.obj tests/mpi_test.obj tests/multi_test.obj tests/no_prng.obj tests/pkcs_1_eme_test.obj \ -tests/pkcs_1_emsa_test.obj tests/pkcs_1_oaep_test.obj tests/pkcs_1_pss_test.obj tests/pkcs_1_test.obj \ -tests/prng_test.obj tests/rotate_test.obj tests/rsa_test.obj tests/store_test.obj tests/test.obj - -#The following headers will be installed by "make install" -HEADERS=src/headers/tomcrypt.h src/headers/tomcrypt_argchk.h src/headers/tomcrypt_cfg.h \ -src/headers/tomcrypt_cipher.h src/headers/tomcrypt_custom.h src/headers/tomcrypt_hash.h \ -src/headers/tomcrypt_mac.h src/headers/tomcrypt_macros.h src/headers/tomcrypt_math.h \ -src/headers/tomcrypt_misc.h src/headers/tomcrypt_pk.h src/headers/tomcrypt_pkcs.h \ -src/headers/tomcrypt_prng.h - -#The default rule for make builds the tomcrypt.lib library (static) -default: $(LIBMAIN_S) - -#SPECIAL: AES comes in two flavours - enc+dec and enc-only -src/ciphers/aes/aes_enc.obj: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c - $(CC) $(LTC_CFLAGS) /DENCRYPT_ONLY /c src/ciphers/aes/aes.c /Fosrc/ciphers/aes/aes_enc.obj - -#SPECIAL: these are the rules to make certain object files -src/ciphers/aes/aes.obj: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c -src/ciphers/twofish/twofish.obj: src/ciphers/twofish/twofish.c src/ciphers/twofish/twofish_tab.c -src/hashes/whirl/whirl.obj: src/hashes/whirl/whirl.c src/hashes/whirl/whirltab.c -src/hashes/sha2/sha512.obj: src/hashes/sha2/sha512.c src/hashes/sha2/sha384.c -src/hashes/sha2/sha512_224.obj: src/hashes/sha2/sha512.c src/hashes/sha2/sha512_224.c -src/hashes/sha2/sha512_256.obj: src/hashes/sha2/sha512.c src/hashes/sha2/sha512_256.c -src/hashes/sha2/sha256.obj: src/hashes/sha2/sha256.c src/hashes/sha2/sha224.c - -#Dependencies on *.h -$(OBJECTS): $(HEADERS) -$(TOBJECTS): $(HEADERS) tests/tomcrypt_test.h - -.c.obj: - $(CC) $(LTC_CFLAGS) /c $< /Fo$@ - -#Create tomcrypt.lib -$(LIBMAIN_S): $(OBJECTS) - lib /out:$(LIBMAIN_S) $(OBJECTS) - -#Demo tools/utilities -hashsum.exe: demos/hashsum.c tests/common.c $(LIBMAIN_S) - cl $(LTC_CFLAGS) demos/hashsum.c tests/common.c $(LIBMAIN_S) $(LTC_LDFLAGS) /Fe$@ -ltcrypt.exe: demos/ltcrypt.c $(LIBMAIN_S) - cl $(LTC_CFLAGS) demos/ltcrypt.c tests/common.c $(LIBMAIN_S) $(LTC_LDFLAGS) /Fe$@ -small.exe: demos/small.c $(LIBMAIN_S) - cl $(LTC_CFLAGS) demos/small.c tests/common.c $(LIBMAIN_S) $(LTC_LDFLAGS) /Fe$@ -tv_gen.exe: demos/tv_gen.c $(LIBMAIN_S) - cl $(LTC_CFLAGS) demos/tv_gen.c tests/common.c $(LIBMAIN_S) $(LTC_LDFLAGS) /Fe$@ -sizes.exe: demos/sizes.c $(LIBMAIN_S) - cl $(LTC_CFLAGS) demos/sizes.c tests/common.c $(LIBMAIN_S) $(LTC_LDFLAGS) /Fe$@ -constants.exe: demos/constants.c $(LIBMAIN_S) - cl $(LTC_CFLAGS) demos/constants.c tests/common.c $(LIBMAIN_S) $(LTC_LDFLAGS) /Fe$@ -timing.exe: demos/timing.c $(LIBMAIN_S) - cl $(LTC_CFLAGS) demos/timing.c tests/common.c $(LIBMAIN_S) $(LTC_LDFLAGS) /Fe$@ - -#Tests -test.exe: $(LIBMAIN_S) $(TOBJECTS) - cl $(LTC_CFLAGS) $(TOBJECTS) $(LIBMAIN_S) $(LTC_LDFLAGS) /Fe$@ - @echo NOTICE: start the tests by launching test.exe - -all: $(LIBMAIN_S) hashsum.exe ltcrypt.exe small.exe tv_gen.exe sizes.exe constants.exe timing.exe test.exe - -test: test.exe - -clean: - @-cmd /c del /Q *_tv.txt 2>nul - @-cmd /c del /Q /S *.OBJ *.LIB *.EXE *.DLL 2>nul - -#Install the library + headers -install: $(LIBMAIN_S) - cmd /c if not exist "$(PREFIX)\bin" mkdir "$(PREFIX)\bin" - cmd /c if not exist "$(PREFIX)\lib" mkdir "$(PREFIX)\lib" - cmd /c if not exist "$(PREFIX)\include" mkdir "$(PREFIX)\include" - copy /Y $(LIBMAIN_S) "$(PREFIX)\lib" - copy /Y src\headers\tomcrypt*.h "$(PREFIX)\include" - -#Install useful tools -install_bins: hashsum - cmd /c if not exist "$(PREFIX)\bin" mkdir "$(PREFIX)\bin" - copy /Y hashsum.exe "$(PREFIX)\bin" - -#Install documentation -install_docs: doc/crypt.pdf - cmd /c if not exist "$(PREFIX)\doc" mkdir "$(PREFIX)\doc" - copy /Y doc\crypt.pdf "$(PREFIX)\doc" diff --git a/src/libtomcrypt/makefile.shared b/src/libtomcrypt/makefile.shared deleted file mode 100644 index 2c430774d4..0000000000 --- a/src/libtomcrypt/makefile.shared +++ /dev/null @@ -1,77 +0,0 @@ -# MAKEFILE for linux GCC -# -# This makefile produces a shared object and requires libtool to be installed. -# -# Thanks to Zed Shaw for helping debug this on BSD/OSX. -# Tom St Denis -# -# (GNU make only) - -### USAGE: -# -# CFLAGS="-DUSE_LTM -DLTM_DESC -I/path/to/libtommath" make -f makefile.shared all EXTRALIBS=/path/to/libtommath/libtommath.a -# ./test -# make -f makefile.shared PREFIX=/opt/libtom install -# - -PLATFORM := $(shell uname | sed -e 's/_.*//') - -ifndef LIBTOOL - ifeq ($(PLATFORM), Darwin) - LIBTOOL:=glibtool - else - LIBTOOL:=libtool - endif -endif -ifeq ($(PLATFORM), CYGWIN) - NO_UNDEFINED:=-no-undefined -endif -LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) -INSTALL_CMD = $(LIBTOOL) --mode=install install -UNINSTALL_CMD = $(LIBTOOL) --mode=uninstall rm - -#Output filenames for various targets. -ifndef LIBNAME - LIBNAME=libtomcrypt.la -endif - - -include makefile_include.mk - - -#ciphers come in two flavours... enc+dec and enc -src/ciphers/aes/aes_enc.o: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c - $(LTCOMPILE) $(LTC_CFLAGS) $(CPPFLAGS) $(LTC_LDFLAGS) -DENCRYPT_ONLY -c src/ciphers/aes/aes.c -o src/ciphers/aes/aes_enc.o - -.c.o: - $(LTCOMPILE) $(LTC_CFLAGS) $(CPPFLAGS) $(LTC_LDFLAGS) -o $@ -c $< - -LOBJECTS = $(OBJECTS:.o=.lo) - -$(LIBNAME): $(OBJECTS) - $(LIBTOOL) --mode=link --tag=CC $(CC) $(LTC_LDFLAGS) $(LOBJECTS) $(EXTRALIBS) -o $@ -rpath $(LIBPATH) -version-info $(VERSION_LT) $(NO_UNDEFINED) - -test: $(call print-help,test,Builds the library and the 'test' application to run all self-tests) $(LIBNAME) $(TOBJECTS) - $(LIBTOOL) --mode=link --tag=CC $(CC) $(LTC_LDFLAGS) -o $(TEST) $(TOBJECTS) $(LIBNAME) $(EXTRALIBS) - -# build the demos from a template -define DEMO_template -$(1): $(call print-help,$(1),Builds the library and the '$(1)' demo) demos/$(1).o $$(LIBNAME) - $$(LIBTOOL) --mode=link --tag=CC $$(CC) $$(LTC_LDFLAGS) $$^ $$(EXTRALIBS) -o $(1) -endef - -$(foreach demo, $(strip $(DEMOS)), $(eval $(call DEMO_template,$(demo)))) - -install: $(call print-help,install,Installs the library + headers + pkg-config file) .common_install - sed -e 's,^prefix=.*,prefix=$(PREFIX),' -e 's,^Version:.*,Version: $(VERSION_PC),' libtomcrypt.pc.in > libtomcrypt.pc - install -p -d $(DESTDIR)$(LIBPATH)/pkgconfig - install -p -m 644 libtomcrypt.pc $(DESTDIR)$(LIBPATH)/pkgconfig/ - -install_bins: $(call print-help,install_bins,Installs the useful demos ($(USEFUL_DEMOS))) .common_install_bins - -uninstall: $(call print-help,uninstall,Uninstalls the library + headers + pkg-config file) .common_uninstall - rm $(DESTDIR)$(LIBPATH)/pkgconfig/libtomcrypt.pc - -# ref: HEAD -> master, tag: v1.18.2 -# git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 -# commit time: 2018-07-01 22:49:01 +0200 diff --git a/src/libtomcrypt/makefile.unix b/src/libtomcrypt/makefile.unix deleted file mode 100644 index 939f4eab4e..0000000000 --- a/src/libtomcrypt/makefile.unix +++ /dev/null @@ -1,294 +0,0 @@ -# MAKEFILE that is intended to be compatible with any kind of make (GNU make, BSD make, ...) -# works on: Linux, *BSD, Cygwin, AIX, HP-UX and hopefully other UNIX systems -# -# Please do not use here neither any special make syntax nor any unusual tools/utilities! -# -# BEWARE: variables OBJECTS, TOBJECTS, HEADERS, VERSION are updated via ./updatemakes.sh - -### USAGE: -# -# make -f makefile.unix all -# ./test -# make -f makefile.unix install -# -#Or: -# -# make -f makefile.unix CFLAGS="-O3 -DUSE_LTM -DLTM_DESC -I/path/to/libtommath" EXTRALIBS=/path/to/libtommath/libtommath.a all -# ./test -# make -f makefile.unix PREFIX=/opt/libtom install -# -#Or if you are using Intel C compiler you might need something like: -# -# make -f makefile.unix CC=icc AR=xiar CFLAGS="-fast -DUSE_LTM -DLTM_DESC -I/path/to/libtommath" EXTRALIBS=/path/to/libtommath/libtommath.a all -# - -#The following can be overridden from command line e.g. "make -f makefile.unix CC=gcc ARFLAGS=rcs" -DESTDIR = -PREFIX = /usr/local -LIBPATH = $(PREFIX)/lib -INCPATH = $(PREFIX)/include -DATAPATH = $(PREFIX)/share/doc/libtomcrypt/pdf -BINPATH = $(PREFIX)/bin -CC = cc -AR = ar -ARFLAGS = r -RANLIB = ranlib -CFLAGS = -O2 -DUSE_LTM -DLTM_DESC -I../libtommath -EXTRALIBS = ../libtommath/libtommath.a - -#Compilation flags -LTC_CFLAGS = -Isrc/headers -Itests -DLTC_SOURCE $(CFLAGS) -LTC_LDFLAGS = $(LDFLAGS) $(EXTRALIBS) -VERSION=1.18.2 - -#Libraries to be created (this makefile builds only static libraries) -LIBMAIN_S =libtomcrypt.a - -#List of objects to compile (all goes to libtomcrypt.a) -OBJECTS=src/ciphers/aes/aes.o src/ciphers/aes/aes_enc.o src/ciphers/anubis.o src/ciphers/blowfish.o \ -src/ciphers/camellia.o src/ciphers/cast5.o src/ciphers/des.o src/ciphers/kasumi.o src/ciphers/khazad.o \ -src/ciphers/kseed.o src/ciphers/multi2.o src/ciphers/noekeon.o src/ciphers/rc2.o src/ciphers/rc5.o \ -src/ciphers/rc6.o src/ciphers/safer/safer.o src/ciphers/safer/saferp.o src/ciphers/skipjack.o \ -src/ciphers/twofish/twofish.o src/ciphers/xtea.o src/encauth/ccm/ccm_add_aad.o \ -src/encauth/ccm/ccm_add_nonce.o src/encauth/ccm/ccm_done.o src/encauth/ccm/ccm_init.o \ -src/encauth/ccm/ccm_memory.o src/encauth/ccm/ccm_process.o src/encauth/ccm/ccm_reset.o \ -src/encauth/ccm/ccm_test.o src/encauth/chachapoly/chacha20poly1305_add_aad.o \ -src/encauth/chachapoly/chacha20poly1305_decrypt.o src/encauth/chachapoly/chacha20poly1305_done.o \ -src/encauth/chachapoly/chacha20poly1305_encrypt.o src/encauth/chachapoly/chacha20poly1305_init.o \ -src/encauth/chachapoly/chacha20poly1305_memory.o src/encauth/chachapoly/chacha20poly1305_setiv.o \ -src/encauth/chachapoly/chacha20poly1305_setiv_rfc7905.o \ -src/encauth/chachapoly/chacha20poly1305_test.o src/encauth/eax/eax_addheader.o \ -src/encauth/eax/eax_decrypt.o src/encauth/eax/eax_decrypt_verify_memory.o src/encauth/eax/eax_done.o \ -src/encauth/eax/eax_encrypt.o src/encauth/eax/eax_encrypt_authenticate_memory.o \ -src/encauth/eax/eax_init.o src/encauth/eax/eax_test.o src/encauth/gcm/gcm_add_aad.o \ -src/encauth/gcm/gcm_add_iv.o src/encauth/gcm/gcm_done.o src/encauth/gcm/gcm_gf_mult.o \ -src/encauth/gcm/gcm_init.o src/encauth/gcm/gcm_memory.o src/encauth/gcm/gcm_mult_h.o \ -src/encauth/gcm/gcm_process.o src/encauth/gcm/gcm_reset.o src/encauth/gcm/gcm_test.o \ -src/encauth/ocb/ocb_decrypt.o src/encauth/ocb/ocb_decrypt_verify_memory.o \ -src/encauth/ocb/ocb_done_decrypt.o src/encauth/ocb/ocb_done_encrypt.o src/encauth/ocb/ocb_encrypt.o \ -src/encauth/ocb/ocb_encrypt_authenticate_memory.o src/encauth/ocb/ocb_init.o src/encauth/ocb/ocb_ntz.o \ -src/encauth/ocb/ocb_shift_xor.o src/encauth/ocb/ocb_test.o src/encauth/ocb/s_ocb_done.o \ -src/encauth/ocb3/ocb3_add_aad.o src/encauth/ocb3/ocb3_decrypt.o src/encauth/ocb3/ocb3_decrypt_last.o \ -src/encauth/ocb3/ocb3_decrypt_verify_memory.o src/encauth/ocb3/ocb3_done.o \ -src/encauth/ocb3/ocb3_encrypt.o src/encauth/ocb3/ocb3_encrypt_authenticate_memory.o \ -src/encauth/ocb3/ocb3_encrypt_last.o src/encauth/ocb3/ocb3_init.o src/encauth/ocb3/ocb3_int_ntz.o \ -src/encauth/ocb3/ocb3_int_xor_blocks.o src/encauth/ocb3/ocb3_test.o src/hashes/blake2b.o \ -src/hashes/blake2s.o src/hashes/chc/chc.o src/hashes/helper/hash_file.o \ -src/hashes/helper/hash_filehandle.o src/hashes/helper/hash_memory.o \ -src/hashes/helper/hash_memory_multi.o src/hashes/md2.o src/hashes/md4.o src/hashes/md5.o \ -src/hashes/rmd128.o src/hashes/rmd160.o src/hashes/rmd256.o src/hashes/rmd320.o src/hashes/sha1.o \ -src/hashes/sha2/sha224.o src/hashes/sha2/sha256.o src/hashes/sha2/sha384.o src/hashes/sha2/sha512.o \ -src/hashes/sha2/sha512_224.o src/hashes/sha2/sha512_256.o src/hashes/sha3.o src/hashes/sha3_test.o \ -src/hashes/tiger.o src/hashes/whirl/whirl.o src/mac/blake2/blake2bmac.o \ -src/mac/blake2/blake2bmac_file.o src/mac/blake2/blake2bmac_memory.o \ -src/mac/blake2/blake2bmac_memory_multi.o src/mac/blake2/blake2bmac_test.o src/mac/blake2/blake2smac.o \ -src/mac/blake2/blake2smac_file.o src/mac/blake2/blake2smac_memory.o \ -src/mac/blake2/blake2smac_memory_multi.o src/mac/blake2/blake2smac_test.o src/mac/f9/f9_done.o \ -src/mac/f9/f9_file.o src/mac/f9/f9_init.o src/mac/f9/f9_memory.o src/mac/f9/f9_memory_multi.o \ -src/mac/f9/f9_process.o src/mac/f9/f9_test.o src/mac/hmac/hmac_done.o src/mac/hmac/hmac_file.o \ -src/mac/hmac/hmac_init.o src/mac/hmac/hmac_memory.o src/mac/hmac/hmac_memory_multi.o \ -src/mac/hmac/hmac_process.o src/mac/hmac/hmac_test.o src/mac/omac/omac_done.o src/mac/omac/omac_file.o \ -src/mac/omac/omac_init.o src/mac/omac/omac_memory.o src/mac/omac/omac_memory_multi.o \ -src/mac/omac/omac_process.o src/mac/omac/omac_test.o src/mac/pelican/pelican.o \ -src/mac/pelican/pelican_memory.o src/mac/pelican/pelican_test.o src/mac/pmac/pmac_done.o \ -src/mac/pmac/pmac_file.o src/mac/pmac/pmac_init.o src/mac/pmac/pmac_memory.o \ -src/mac/pmac/pmac_memory_multi.o src/mac/pmac/pmac_ntz.o src/mac/pmac/pmac_process.o \ -src/mac/pmac/pmac_shift_xor.o src/mac/pmac/pmac_test.o src/mac/poly1305/poly1305.o \ -src/mac/poly1305/poly1305_file.o src/mac/poly1305/poly1305_memory.o \ -src/mac/poly1305/poly1305_memory_multi.o src/mac/poly1305/poly1305_test.o src/mac/xcbc/xcbc_done.o \ -src/mac/xcbc/xcbc_file.o src/mac/xcbc/xcbc_init.o src/mac/xcbc/xcbc_memory.o \ -src/mac/xcbc/xcbc_memory_multi.o src/mac/xcbc/xcbc_process.o src/mac/xcbc/xcbc_test.o \ -src/math/fp/ltc_ecc_fp_mulmod.o src/math/gmp_desc.o src/math/ltm_desc.o src/math/multi.o \ -src/math/radix_to_bin.o src/math/rand_bn.o src/math/rand_prime.o src/math/tfm_desc.o src/misc/adler32.o \ -src/misc/base64/base64_decode.o src/misc/base64/base64_encode.o src/misc/burn_stack.o \ -src/misc/compare_testvector.o src/misc/crc32.o src/misc/crypt/crypt.o src/misc/crypt/crypt_argchk.o \ -src/misc/crypt/crypt_cipher_descriptor.o src/misc/crypt/crypt_cipher_is_valid.o \ -src/misc/crypt/crypt_constants.o src/misc/crypt/crypt_find_cipher.o \ -src/misc/crypt/crypt_find_cipher_any.o src/misc/crypt/crypt_find_cipher_id.o \ -src/misc/crypt/crypt_find_hash.o src/misc/crypt/crypt_find_hash_any.o \ -src/misc/crypt/crypt_find_hash_id.o src/misc/crypt/crypt_find_hash_oid.o \ -src/misc/crypt/crypt_find_prng.o src/misc/crypt/crypt_fsa.o src/misc/crypt/crypt_hash_descriptor.o \ -src/misc/crypt/crypt_hash_is_valid.o src/misc/crypt/crypt_inits.o \ -src/misc/crypt/crypt_ltc_mp_descriptor.o src/misc/crypt/crypt_prng_descriptor.o \ -src/misc/crypt/crypt_prng_is_valid.o src/misc/crypt/crypt_prng_rng_descriptor.o \ -src/misc/crypt/crypt_register_all_ciphers.o src/misc/crypt/crypt_register_all_hashes.o \ -src/misc/crypt/crypt_register_all_prngs.o src/misc/crypt/crypt_register_cipher.o \ -src/misc/crypt/crypt_register_hash.o src/misc/crypt/crypt_register_prng.o src/misc/crypt/crypt_sizes.o \ -src/misc/crypt/crypt_unregister_cipher.o src/misc/crypt/crypt_unregister_hash.o \ -src/misc/crypt/crypt_unregister_prng.o src/misc/error_to_string.o src/misc/hkdf/hkdf.o \ -src/misc/hkdf/hkdf_test.o src/misc/mem_neq.o src/misc/pk_get_oid.o src/misc/pkcs5/pkcs_5_1.o \ -src/misc/pkcs5/pkcs_5_2.o src/misc/pkcs5/pkcs_5_test.o src/misc/zeromem.o src/modes/cbc/cbc_decrypt.o \ -src/modes/cbc/cbc_done.o src/modes/cbc/cbc_encrypt.o src/modes/cbc/cbc_getiv.o \ -src/modes/cbc/cbc_setiv.o src/modes/cbc/cbc_start.o src/modes/cfb/cfb_decrypt.o \ -src/modes/cfb/cfb_done.o src/modes/cfb/cfb_encrypt.o src/modes/cfb/cfb_getiv.o \ -src/modes/cfb/cfb_setiv.o src/modes/cfb/cfb_start.o src/modes/ctr/ctr_decrypt.o \ -src/modes/ctr/ctr_done.o src/modes/ctr/ctr_encrypt.o src/modes/ctr/ctr_getiv.o \ -src/modes/ctr/ctr_setiv.o src/modes/ctr/ctr_start.o src/modes/ctr/ctr_test.o \ -src/modes/ecb/ecb_decrypt.o src/modes/ecb/ecb_done.o src/modes/ecb/ecb_encrypt.o \ -src/modes/ecb/ecb_start.o src/modes/f8/f8_decrypt.o src/modes/f8/f8_done.o src/modes/f8/f8_encrypt.o \ -src/modes/f8/f8_getiv.o src/modes/f8/f8_setiv.o src/modes/f8/f8_start.o src/modes/f8/f8_test_mode.o \ -src/modes/lrw/lrw_decrypt.o src/modes/lrw/lrw_done.o src/modes/lrw/lrw_encrypt.o \ -src/modes/lrw/lrw_getiv.o src/modes/lrw/lrw_process.o src/modes/lrw/lrw_setiv.o \ -src/modes/lrw/lrw_start.o src/modes/lrw/lrw_test.o src/modes/ofb/ofb_decrypt.o src/modes/ofb/ofb_done.o \ -src/modes/ofb/ofb_encrypt.o src/modes/ofb/ofb_getiv.o src/modes/ofb/ofb_setiv.o \ -src/modes/ofb/ofb_start.o src/modes/xts/xts_decrypt.o src/modes/xts/xts_done.o \ -src/modes/xts/xts_encrypt.o src/modes/xts/xts_init.o src/modes/xts/xts_mult_x.o \ -src/modes/xts/xts_test.o src/pk/asn1/der/bit/der_decode_bit_string.o \ -src/pk/asn1/der/bit/der_decode_raw_bit_string.o src/pk/asn1/der/bit/der_encode_bit_string.o \ -src/pk/asn1/der/bit/der_encode_raw_bit_string.o src/pk/asn1/der/bit/der_length_bit_string.o \ -src/pk/asn1/der/boolean/der_decode_boolean.o src/pk/asn1/der/boolean/der_encode_boolean.o \ -src/pk/asn1/der/boolean/der_length_boolean.o src/pk/asn1/der/choice/der_decode_choice.o \ -src/pk/asn1/der/generalizedtime/der_decode_generalizedtime.o \ -src/pk/asn1/der/generalizedtime/der_encode_generalizedtime.o \ -src/pk/asn1/der/generalizedtime/der_length_generalizedtime.o \ -src/pk/asn1/der/ia5/der_decode_ia5_string.o src/pk/asn1/der/ia5/der_encode_ia5_string.o \ -src/pk/asn1/der/ia5/der_length_ia5_string.o src/pk/asn1/der/integer/der_decode_integer.o \ -src/pk/asn1/der/integer/der_encode_integer.o src/pk/asn1/der/integer/der_length_integer.o \ -src/pk/asn1/der/object_identifier/der_decode_object_identifier.o \ -src/pk/asn1/der/object_identifier/der_encode_object_identifier.o \ -src/pk/asn1/der/object_identifier/der_length_object_identifier.o \ -src/pk/asn1/der/octet/der_decode_octet_string.o src/pk/asn1/der/octet/der_encode_octet_string.o \ -src/pk/asn1/der/octet/der_length_octet_string.o \ -src/pk/asn1/der/printable_string/der_decode_printable_string.o \ -src/pk/asn1/der/printable_string/der_encode_printable_string.o \ -src/pk/asn1/der/printable_string/der_length_printable_string.o \ -src/pk/asn1/der/sequence/der_decode_sequence_ex.o \ -src/pk/asn1/der/sequence/der_decode_sequence_flexi.o \ -src/pk/asn1/der/sequence/der_decode_sequence_multi.o \ -src/pk/asn1/der/sequence/der_decode_subject_public_key_info.o \ -src/pk/asn1/der/sequence/der_encode_sequence_ex.o \ -src/pk/asn1/der/sequence/der_encode_sequence_multi.o \ -src/pk/asn1/der/sequence/der_encode_subject_public_key_info.o \ -src/pk/asn1/der/sequence/der_length_sequence.o src/pk/asn1/der/sequence/der_sequence_free.o \ -src/pk/asn1/der/sequence/der_sequence_shrink.o src/pk/asn1/der/set/der_encode_set.o \ -src/pk/asn1/der/set/der_encode_setof.o src/pk/asn1/der/short_integer/der_decode_short_integer.o \ -src/pk/asn1/der/short_integer/der_encode_short_integer.o \ -src/pk/asn1/der/short_integer/der_length_short_integer.o \ -src/pk/asn1/der/teletex_string/der_decode_teletex_string.o \ -src/pk/asn1/der/teletex_string/der_length_teletex_string.o \ -src/pk/asn1/der/utctime/der_decode_utctime.o src/pk/asn1/der/utctime/der_encode_utctime.o \ -src/pk/asn1/der/utctime/der_length_utctime.o src/pk/asn1/der/utf8/der_decode_utf8_string.o \ -src/pk/asn1/der/utf8/der_encode_utf8_string.o src/pk/asn1/der/utf8/der_length_utf8_string.o \ -src/pk/dh/dh.o src/pk/dh/dh_check_pubkey.o src/pk/dh/dh_export.o src/pk/dh/dh_export_key.o \ -src/pk/dh/dh_free.o src/pk/dh/dh_generate_key.o src/pk/dh/dh_import.o src/pk/dh/dh_set.o \ -src/pk/dh/dh_set_pg_dhparam.o src/pk/dh/dh_shared_secret.o src/pk/dsa/dsa_decrypt_key.o \ -src/pk/dsa/dsa_encrypt_key.o src/pk/dsa/dsa_export.o src/pk/dsa/dsa_free.o \ -src/pk/dsa/dsa_generate_key.o src/pk/dsa/dsa_generate_pqg.o src/pk/dsa/dsa_import.o \ -src/pk/dsa/dsa_make_key.o src/pk/dsa/dsa_set.o src/pk/dsa/dsa_set_pqg_dsaparam.o \ -src/pk/dsa/dsa_shared_secret.o src/pk/dsa/dsa_sign_hash.o src/pk/dsa/dsa_verify_hash.o \ -src/pk/dsa/dsa_verify_key.o src/pk/ecc/ecc.o src/pk/ecc/ecc_ansi_x963_export.o \ -src/pk/ecc/ecc_ansi_x963_import.o src/pk/ecc/ecc_decrypt_key.o src/pk/ecc/ecc_encrypt_key.o \ -src/pk/ecc/ecc_export.o src/pk/ecc/ecc_free.o src/pk/ecc/ecc_get_size.o src/pk/ecc/ecc_import.o \ -src/pk/ecc/ecc_make_key.o src/pk/ecc/ecc_shared_secret.o src/pk/ecc/ecc_sign_hash.o \ -src/pk/ecc/ecc_sizes.o src/pk/ecc/ecc_test.o src/pk/ecc/ecc_verify_hash.o \ -src/pk/ecc/ltc_ecc_is_valid_idx.o src/pk/ecc/ltc_ecc_map.o src/pk/ecc/ltc_ecc_mul2add.o \ -src/pk/ecc/ltc_ecc_mulmod.o src/pk/ecc/ltc_ecc_mulmod_timing.o src/pk/ecc/ltc_ecc_points.o \ -src/pk/ecc/ltc_ecc_projective_add_point.o src/pk/ecc/ltc_ecc_projective_dbl_point.o \ -src/pk/katja/katja_decrypt_key.o src/pk/katja/katja_encrypt_key.o src/pk/katja/katja_export.o \ -src/pk/katja/katja_exptmod.o src/pk/katja/katja_free.o src/pk/katja/katja_import.o \ -src/pk/katja/katja_make_key.o src/pk/pkcs1/pkcs_1_i2osp.o src/pk/pkcs1/pkcs_1_mgf1.o \ -src/pk/pkcs1/pkcs_1_oaep_decode.o src/pk/pkcs1/pkcs_1_oaep_encode.o src/pk/pkcs1/pkcs_1_os2ip.o \ -src/pk/pkcs1/pkcs_1_pss_decode.o src/pk/pkcs1/pkcs_1_pss_encode.o src/pk/pkcs1/pkcs_1_v1_5_decode.o \ -src/pk/pkcs1/pkcs_1_v1_5_encode.o src/pk/rsa/rsa_decrypt_key.o src/pk/rsa/rsa_encrypt_key.o \ -src/pk/rsa/rsa_export.o src/pk/rsa/rsa_exptmod.o src/pk/rsa/rsa_free.o src/pk/rsa/rsa_get_size.o \ -src/pk/rsa/rsa_import.o src/pk/rsa/rsa_import_pkcs8.o src/pk/rsa/rsa_import_x509.o \ -src/pk/rsa/rsa_make_key.o src/pk/rsa/rsa_set.o src/pk/rsa/rsa_sign_hash.o \ -src/pk/rsa/rsa_sign_saltlen_get.o src/pk/rsa/rsa_verify_hash.o src/prngs/chacha20.o src/prngs/fortuna.o \ -src/prngs/rc4.o src/prngs/rng_get_bytes.o src/prngs/rng_make_prng.o src/prngs/sober128.o \ -src/prngs/sprng.o src/prngs/yarrow.o src/stream/chacha/chacha_crypt.o src/stream/chacha/chacha_done.o \ -src/stream/chacha/chacha_ivctr32.o src/stream/chacha/chacha_ivctr64.o \ -src/stream/chacha/chacha_keystream.o src/stream/chacha/chacha_setup.o src/stream/chacha/chacha_test.o \ -src/stream/rc4/rc4_stream.o src/stream/rc4/rc4_test.o src/stream/sober128/sober128_stream.o \ -src/stream/sober128/sober128_test.o - -#List of test objects to compile (all goes to libtomcrypt_prof.a) -TOBJECTS=tests/base64_test.o tests/cipher_hash_test.o tests/common.o tests/der_test.o tests/dh_test.o \ -tests/dsa_test.o tests/ecc_test.o tests/file_test.o tests/katja_test.o tests/mac_test.o tests/misc_test.o \ -tests/modes_test.o tests/mpi_test.o tests/multi_test.o tests/no_prng.o tests/pkcs_1_eme_test.o \ -tests/pkcs_1_emsa_test.o tests/pkcs_1_oaep_test.o tests/pkcs_1_pss_test.o tests/pkcs_1_test.o \ -tests/prng_test.o tests/rotate_test.o tests/rsa_test.o tests/store_test.o tests/test.o - -#The following headers will be installed by "make install" -HEADERS=src/headers/tomcrypt.h src/headers/tomcrypt_argchk.h src/headers/tomcrypt_cfg.h \ -src/headers/tomcrypt_cipher.h src/headers/tomcrypt_custom.h src/headers/tomcrypt_hash.h \ -src/headers/tomcrypt_mac.h src/headers/tomcrypt_macros.h src/headers/tomcrypt_math.h \ -src/headers/tomcrypt_misc.h src/headers/tomcrypt_pk.h src/headers/tomcrypt_pkcs.h \ -src/headers/tomcrypt_prng.h - -#The default rule for make builds the libtomcrypt.a library (static) -default: $(LIBMAIN_S) - -#SPECIAL: AES comes in two flavours - enc+dec and enc-only -src/ciphers/aes/aes_enc.o: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c - $(CC) $(LTC_CFLAGS) -DENCRYPT_ONLY -c src/ciphers/aes/aes.c -o src/ciphers/aes/aes_enc.o - -#SPECIAL: these are the rules to make certain object files -src/ciphers/aes/aes.o: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c -src/ciphers/twofish/twofish.o: src/ciphers/twofish/twofish.c src/ciphers/twofish/twofish_tab.c -src/hashes/whirl/whirl.o: src/hashes/whirl/whirl.c src/hashes/whirl/whirltab.c -src/hashes/sha2/sha512.o: src/hashes/sha2/sha512.c src/hashes/sha2/sha384.c -src/hashes/sha2/sha512_224.o: src/hashes/sha2/sha512.c src/hashes/sha2/sha512_224.c -src/hashes/sha2/sha512_256.o: src/hashes/sha2/sha512.c src/hashes/sha2/sha512_256.c -src/hashes/sha2/sha256.o: src/hashes/sha2/sha256.c src/hashes/sha2/sha224.c - -#Dependencies on *.h -$(OBJECTS): $(HEADERS) -$(TOBJECTS): $(HEADERS) tests/tomcrypt_test.h - -#This is necessary for compatibility with BSD make (namely on OpenBSD) -.SUFFIXES: .o .c -.c.o: - $(CC) $(LTC_CFLAGS) -c $< -o $@ - -#Create libtomcrypt.a -$(LIBMAIN_S): $(OBJECTS) - $(AR) $(ARFLAGS) $@ $(OBJECTS) - $(RANLIB) $@ - -#Demo tools/utilities -hashsum: demos/hashsum.o $(LIBMAIN_S) - $(CC) demos/hashsum.o $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ -ltcrypt: demos/ltcrypt.o $(LIBMAIN_S) - $(CC) demos/ltcrypt.o $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ -small: demos/small.o $(LIBMAIN_S) - $(CC) demos/small.o $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ -tv_gen: demos/tv_gen.o $(LIBMAIN_S) - $(CC) demos/tv_gen.o $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ -sizes: demos/sizes.o $(LIBMAIN_S) - $(CC) demos/sizes.o $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ -constants: demos/constants.o $(LIBMAIN_S) - $(CC) demos/constants.o $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ -timing: demos/timing.o $(LIBMAIN_S) - $(CC) demos/timing.o $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ - -#Tests -test: $(TOBJECTS) $(LIBMAIN_S) - $(CC) $(TOBJECTS) $(LIBMAIN_S) $(LTC_LDFLAGS) -o $@ - @echo "NOTICE: start the tests by: ./test" - -all: $(LIBMAIN_S) hashsum ltcrypt small tv_gen sizes constants timing test - -#NOTE: this makefile works also on cygwin, thus we need to delete *.exe -clean: - -@rm -f $(OBJECTS) $(TOBJECTS) - -@rm -f $(LIBMAIN_S) - -@rm -f demos/*.o *_tv.txt - -@rm -f test constants sizes tv_gen hashsum ltcrypt small timing - -@rm -f test.exe constants.exe sizes.exe tv_gen.exe hashsum.exe ltcrypt.exe small.exe timing.exe - -#Install the library + headers -install: $(LIBMAIN_S) $(HEADERS) - @mkdir -p $(DESTDIR)$(INCPATH) $(DESTDIR)$(LIBPATH)/pkgconfig - @cp $(LIBMAIN_S) $(DESTDIR)$(LIBPATH)/ - @cp $(HEADERS) $(DESTDIR)$(INCPATH)/ - @sed -e 's,^prefix=.*,prefix=$(PREFIX),' -e 's,^Version:.*,Version: $(VERSION),' libtomcrypt.pc.in > $(DESTDIR)$(LIBPATH)/pkgconfig/libtomcrypt.pc - -#Install useful tools -install_bins: hashsum - @mkdir -p $(DESTDIR)$(BINPATH) - @cp hashsum $(DESTDIR)$(BINPATH)/ - -#Install documentation -install_docs: doc/crypt.pdf - @mkdir -p $(DESTDIR)$(DATAPATH) - @cp doc/crypt.pdf $(DESTDIR)$(DATAPATH)/ diff --git a/src/libtomcrypt/makefile_include.mk b/src/libtomcrypt/makefile_include.mk deleted file mode 100644 index a48eefe9cc..0000000000 --- a/src/libtomcrypt/makefile_include.mk +++ /dev/null @@ -1,490 +0,0 @@ -# -# Include makefile used by makefile + makefile.shared -# (GNU make only) - -# The version - BEWARE: VERSION, VERSION_PC and VERSION_LT are updated via ./updatemakes.sh -VERSION=1.18.2 -VERSION_PC=1.18.2 -# http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html -VERSION_LT=1:1 - -# Compiler and Linker Names -ifndef CROSS_COMPILE - CROSS_COMPILE:= -endif - -# We only need to go through this dance of determining the right compiler if we're using -# cross compilation, otherwise $(CC) is fine as-is. -ifneq (,$(CROSS_COMPILE)) -ifeq ($(origin CC),default) -CSTR := "\#ifdef __clang__\nCLANG\n\#endif\n" -ifeq ($(PLATFORM),FreeBSD) - # XXX: FreeBSD needs extra escaping for some reason - CSTR := $$$(CSTR) -endif -ifneq (,$(shell echo $(CSTR) | $(CC) -E - | grep CLANG)) - CC := $(CROSS_COMPILE)clang -else - CC := $(CROSS_COMPILE)gcc -endif # Clang -endif # cc is Make's default -endif # CROSS_COMPILE non-empty - -LD:=$(CROSS_COMPILE)ld -AR:=$(CROSS_COMPILE)ar - -# Archiver [makes .a files] -#AR=ar -ARFLAGS:=r - -ifndef MAKE -# BSDs refer to GNU Make as gmake -ifneq (,$(findstring $(PLATFORM),FreeBSD OpenBSD DragonFly NetBSD)) - MAKE=gmake -else - MAKE=make -endif -endif - -ifndef INSTALL_CMD -$(error your makefile must define INSTALL_CMD) -endif -ifndef UNINSTALL_CMD -$(error your makefile must define UNINSTALL_CMD) -endif - -ifndef EXTRALIBS -ifneq ($(shell echo $(CFLAGS) | grep USE_LTM),) -EXTRALIBS=$(shell PKG_CONFIG_PATH=$(LIBPATH)/pkgconfig pkg-config libtommath --libs) -else -ifneq ($(shell echo $(CFLAGS) | grep USE_TFM),) -EXTRALIBS=$(shell PKG_CONFIG_PATH=$(LIBPATH)/pkgconfig pkg-config tomsfastmath --libs) -endif -endif -endif - -need-help := $(filter help,$(MAKECMDGOALS)) -define print-help -$(if $(need-help),$(info $1 -- $2)) -endef - -# -# Compilation flags. Note the += does not write over the user's CFLAGS! -# -# Also note that we're extending the environments' CFLAGS. -# If you think that our CFLAGS are not nice you can easily override them -# by giving them as a parameter to make: -# make CFLAGS="-I./src/headers/ -DLTC_SOURCE ..." ... -# -LTC_CFLAGS += -I./src/headers/ -Wall -Wsign-compare -Wshadow -DLTC_SOURCE - -ifdef OLD_GCC -LTC_CFLAGS += -W -# older GCCs can't handle the "rotate with immediate" ROLc/RORc/etc macros -# define this to help -LTC_CFLAGS += -DLTC_NO_ROLC -else -LTC_CFLAGS += -Wextra -# additional warnings -LTC_CFLAGS += -Wsystem-headers -Wbad-function-cast -Wcast-align -LTC_CFLAGS += -Wstrict-prototypes -Wpointer-arith -LTC_CFLAGS += -Wdeclaration-after-statement -LTC_CFLAGS += -Wwrite-strings -endif - -LTC_CFLAGS += -Wno-type-limits - -ifdef LTC_DEBUG -$(info Debug build) -# compile for DEBUGGING (required for ccmalloc checking!!!) -LTC_CFLAGS += -g3 -DLTC_NO_ASM -ifneq (,$(strip $(LTC_DEBUG))) -LTC_CFLAGS += -DLTC_TEST_DBG=$(LTC_DEBUG) -else -LTC_CFLAGS += -DLTC_TEST_DBG -endif -else - -ifdef LTC_SMALL -# optimize for SIZE -LTC_CFLAGS += -Os -DLTC_SMALL_CODE -else - -ifndef IGNORE_SPEED -# optimize for SPEED -LTC_CFLAGS += -O3 -funroll-loops - -# add -fomit-frame-pointer. hinders debugging! -LTC_CFLAGS += -fomit-frame-pointer -endif - -endif # COMPILE_SMALL -endif # COMPILE_DEBUG - - -ifneq ($(findstring clang,$(CC)),) -LTC_CFLAGS += -Wno-typedef-redefinition -Wno-tautological-compare -Wno-builtin-requires-header -Wno-missing-field-initializers -endif -ifneq ($(findstring mingw,$(CC)),) -LTC_CFLAGS += -Wno-shadow -Wno-attributes -endif -ifeq ($(PLATFORM), Darwin) -LTC_CFLAGS += -Wno-nullability-completeness -endif - - -GIT_VERSION := $(shell { [ -e .git ] && which git 2>/dev/null 1>&2 ; } && { printf git- ; git describe --tags --always --dirty ; } || echo $(VERSION)) -ifneq ($(GIT_VERSION),) -LTC_CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\" -endif - -LTC_CFLAGS := $(LTC_CFLAGS) $(CFLAGS) - -ifneq ($(findstring -DLTC_PTHREAD,$(LTC_CFLAGS)),) -LTC_LDFLAGS += -pthread -endif - -LTC_LDFLAGS := $(LTC_LDFLAGS) $(LDFLAGS) - -#List of demo objects -DSOURCES = $(wildcard demos/*.c) -DOBJECTS = $(DSOURCES:.c=.o) - -#List of tests headers -THEADERS = $(wildcard tests/*.h) - -TEST=test - -# Demos that are even somehow useful and could be installed as a system-tool -USEFUL_DEMOS = hashsum - -# Demos that are usable but only rarely make sense to be installed -USEABLE_DEMOS = ltcrypt sizes constants - -# Demos that are used for testing or measuring -TEST_DEMOS = small tv_gen - -# Demos that are in one config broken -# openssl-enc - can't be build with LTC_EASY -# timing - not really broken, but older gcc builds spit warnings -BROKEN_DEMOS = openssl-enc timing - -# Combine demos in groups -UNBROKEN_DEMOS = $(TEST_DEMOS) $(USEABLE_DEMOS) $(USEFUL_DEMOS) -DEMOS = $(UNBROKEN_DEMOS) $(BROKEN_DEMOS) - -#LIBPATH The directory for libtomcrypt to be installed to. -#INCPATH The directory to install the header files for libtomcrypt. -#DATAPATH The directory to install the pdf docs. -#BINPATH The directory to install the binaries provided. -DESTDIR ?= -PREFIX ?= /usr/local -LIBPATH ?= $(PREFIX)/lib -INCPATH ?= $(PREFIX)/include -DATAPATH ?= $(PREFIX)/share/doc/libtomcrypt/pdf -BINPATH ?= $(PREFIX)/bin - -#Who do we install as? -ifdef INSTALL_USER -USER=$(INSTALL_USER) -else -USER=root -endif - -ifdef INSTALL_GROUP -GROUP=$(INSTALL_GROUP) -else -GROUP=wheel -endif - - -#The first rule is also the default rule and builds the libtomcrypt library. -library: $(call print-help,library,Builds the library) $(LIBNAME) - - -# List of objects to compile (all goes to libtomcrypt.a) -OBJECTS=src/ciphers/aes/aes.o src/ciphers/aes/aes_enc.o src/ciphers/anubis.o src/ciphers/blowfish.o \ -src/ciphers/camellia.o src/ciphers/cast5.o src/ciphers/des.o src/ciphers/kasumi.o src/ciphers/khazad.o \ -src/ciphers/kseed.o src/ciphers/multi2.o src/ciphers/noekeon.o src/ciphers/rc2.o src/ciphers/rc5.o \ -src/ciphers/rc6.o src/ciphers/safer/safer.o src/ciphers/safer/saferp.o src/ciphers/skipjack.o \ -src/ciphers/twofish/twofish.o src/ciphers/xtea.o src/encauth/ccm/ccm_add_aad.o \ -src/encauth/ccm/ccm_add_nonce.o src/encauth/ccm/ccm_done.o src/encauth/ccm/ccm_init.o \ -src/encauth/ccm/ccm_memory.o src/encauth/ccm/ccm_process.o src/encauth/ccm/ccm_reset.o \ -src/encauth/ccm/ccm_test.o src/encauth/chachapoly/chacha20poly1305_add_aad.o \ -src/encauth/chachapoly/chacha20poly1305_decrypt.o src/encauth/chachapoly/chacha20poly1305_done.o \ -src/encauth/chachapoly/chacha20poly1305_encrypt.o src/encauth/chachapoly/chacha20poly1305_init.o \ -src/encauth/chachapoly/chacha20poly1305_memory.o src/encauth/chachapoly/chacha20poly1305_setiv.o \ -src/encauth/chachapoly/chacha20poly1305_setiv_rfc7905.o \ -src/encauth/chachapoly/chacha20poly1305_test.o src/encauth/eax/eax_addheader.o \ -src/encauth/eax/eax_decrypt.o src/encauth/eax/eax_decrypt_verify_memory.o src/encauth/eax/eax_done.o \ -src/encauth/eax/eax_encrypt.o src/encauth/eax/eax_encrypt_authenticate_memory.o \ -src/encauth/eax/eax_init.o src/encauth/eax/eax_test.o src/encauth/gcm/gcm_add_aad.o \ -src/encauth/gcm/gcm_add_iv.o src/encauth/gcm/gcm_done.o src/encauth/gcm/gcm_gf_mult.o \ -src/encauth/gcm/gcm_init.o src/encauth/gcm/gcm_memory.o src/encauth/gcm/gcm_mult_h.o \ -src/encauth/gcm/gcm_process.o src/encauth/gcm/gcm_reset.o src/encauth/gcm/gcm_test.o \ -src/encauth/ocb/ocb_decrypt.o src/encauth/ocb/ocb_decrypt_verify_memory.o \ -src/encauth/ocb/ocb_done_decrypt.o src/encauth/ocb/ocb_done_encrypt.o src/encauth/ocb/ocb_encrypt.o \ -src/encauth/ocb/ocb_encrypt_authenticate_memory.o src/encauth/ocb/ocb_init.o src/encauth/ocb/ocb_ntz.o \ -src/encauth/ocb/ocb_shift_xor.o src/encauth/ocb/ocb_test.o src/encauth/ocb/s_ocb_done.o \ -src/encauth/ocb3/ocb3_add_aad.o src/encauth/ocb3/ocb3_decrypt.o src/encauth/ocb3/ocb3_decrypt_last.o \ -src/encauth/ocb3/ocb3_decrypt_verify_memory.o src/encauth/ocb3/ocb3_done.o \ -src/encauth/ocb3/ocb3_encrypt.o src/encauth/ocb3/ocb3_encrypt_authenticate_memory.o \ -src/encauth/ocb3/ocb3_encrypt_last.o src/encauth/ocb3/ocb3_init.o src/encauth/ocb3/ocb3_int_ntz.o \ -src/encauth/ocb3/ocb3_int_xor_blocks.o src/encauth/ocb3/ocb3_test.o src/hashes/blake2b.o \ -src/hashes/blake2s.o src/hashes/chc/chc.o src/hashes/helper/hash_file.o \ -src/hashes/helper/hash_filehandle.o src/hashes/helper/hash_memory.o \ -src/hashes/helper/hash_memory_multi.o src/hashes/md2.o src/hashes/md4.o src/hashes/md5.o \ -src/hashes/rmd128.o src/hashes/rmd160.o src/hashes/rmd256.o src/hashes/rmd320.o src/hashes/sha1.o \ -src/hashes/sha2/sha224.o src/hashes/sha2/sha256.o src/hashes/sha2/sha384.o src/hashes/sha2/sha512.o \ -src/hashes/sha2/sha512_224.o src/hashes/sha2/sha512_256.o src/hashes/sha3.o src/hashes/sha3_test.o \ -src/hashes/tiger.o src/hashes/whirl/whirl.o src/mac/blake2/blake2bmac.o \ -src/mac/blake2/blake2bmac_file.o src/mac/blake2/blake2bmac_memory.o \ -src/mac/blake2/blake2bmac_memory_multi.o src/mac/blake2/blake2bmac_test.o src/mac/blake2/blake2smac.o \ -src/mac/blake2/blake2smac_file.o src/mac/blake2/blake2smac_memory.o \ -src/mac/blake2/blake2smac_memory_multi.o src/mac/blake2/blake2smac_test.o src/mac/f9/f9_done.o \ -src/mac/f9/f9_file.o src/mac/f9/f9_init.o src/mac/f9/f9_memory.o src/mac/f9/f9_memory_multi.o \ -src/mac/f9/f9_process.o src/mac/f9/f9_test.o src/mac/hmac/hmac_done.o src/mac/hmac/hmac_file.o \ -src/mac/hmac/hmac_init.o src/mac/hmac/hmac_memory.o src/mac/hmac/hmac_memory_multi.o \ -src/mac/hmac/hmac_process.o src/mac/hmac/hmac_test.o src/mac/omac/omac_done.o src/mac/omac/omac_file.o \ -src/mac/omac/omac_init.o src/mac/omac/omac_memory.o src/mac/omac/omac_memory_multi.o \ -src/mac/omac/omac_process.o src/mac/omac/omac_test.o src/mac/pelican/pelican.o \ -src/mac/pelican/pelican_memory.o src/mac/pelican/pelican_test.o src/mac/pmac/pmac_done.o \ -src/mac/pmac/pmac_file.o src/mac/pmac/pmac_init.o src/mac/pmac/pmac_memory.o \ -src/mac/pmac/pmac_memory_multi.o src/mac/pmac/pmac_ntz.o src/mac/pmac/pmac_process.o \ -src/mac/pmac/pmac_shift_xor.o src/mac/pmac/pmac_test.o src/mac/poly1305/poly1305.o \ -src/mac/poly1305/poly1305_file.o src/mac/poly1305/poly1305_memory.o \ -src/mac/poly1305/poly1305_memory_multi.o src/mac/poly1305/poly1305_test.o src/mac/xcbc/xcbc_done.o \ -src/mac/xcbc/xcbc_file.o src/mac/xcbc/xcbc_init.o src/mac/xcbc/xcbc_memory.o \ -src/mac/xcbc/xcbc_memory_multi.o src/mac/xcbc/xcbc_process.o src/mac/xcbc/xcbc_test.o \ -src/math/fp/ltc_ecc_fp_mulmod.o src/math/gmp_desc.o src/math/ltm_desc.o src/math/multi.o \ -src/math/radix_to_bin.o src/math/rand_bn.o src/math/rand_prime.o src/math/tfm_desc.o src/misc/adler32.o \ -src/misc/base64/base64_decode.o src/misc/base64/base64_encode.o src/misc/burn_stack.o \ -src/misc/compare_testvector.o src/misc/crc32.o src/misc/crypt/crypt.o src/misc/crypt/crypt_argchk.o \ -src/misc/crypt/crypt_cipher_descriptor.o src/misc/crypt/crypt_cipher_is_valid.o \ -src/misc/crypt/crypt_constants.o src/misc/crypt/crypt_find_cipher.o \ -src/misc/crypt/crypt_find_cipher_any.o src/misc/crypt/crypt_find_cipher_id.o \ -src/misc/crypt/crypt_find_hash.o src/misc/crypt/crypt_find_hash_any.o \ -src/misc/crypt/crypt_find_hash_id.o src/misc/crypt/crypt_find_hash_oid.o \ -src/misc/crypt/crypt_find_prng.o src/misc/crypt/crypt_fsa.o src/misc/crypt/crypt_hash_descriptor.o \ -src/misc/crypt/crypt_hash_is_valid.o src/misc/crypt/crypt_inits.o \ -src/misc/crypt/crypt_ltc_mp_descriptor.o src/misc/crypt/crypt_prng_descriptor.o \ -src/misc/crypt/crypt_prng_is_valid.o src/misc/crypt/crypt_prng_rng_descriptor.o \ -src/misc/crypt/crypt_register_all_ciphers.o src/misc/crypt/crypt_register_all_hashes.o \ -src/misc/crypt/crypt_register_all_prngs.o src/misc/crypt/crypt_register_cipher.o \ -src/misc/crypt/crypt_register_hash.o src/misc/crypt/crypt_register_prng.o src/misc/crypt/crypt_sizes.o \ -src/misc/crypt/crypt_unregister_cipher.o src/misc/crypt/crypt_unregister_hash.o \ -src/misc/crypt/crypt_unregister_prng.o src/misc/error_to_string.o src/misc/hkdf/hkdf.o \ -src/misc/hkdf/hkdf_test.o src/misc/mem_neq.o src/misc/pk_get_oid.o src/misc/pkcs5/pkcs_5_1.o \ -src/misc/pkcs5/pkcs_5_2.o src/misc/pkcs5/pkcs_5_test.o src/misc/zeromem.o src/modes/cbc/cbc_decrypt.o \ -src/modes/cbc/cbc_done.o src/modes/cbc/cbc_encrypt.o src/modes/cbc/cbc_getiv.o \ -src/modes/cbc/cbc_setiv.o src/modes/cbc/cbc_start.o src/modes/cfb/cfb_decrypt.o \ -src/modes/cfb/cfb_done.o src/modes/cfb/cfb_encrypt.o src/modes/cfb/cfb_getiv.o \ -src/modes/cfb/cfb_setiv.o src/modes/cfb/cfb_start.o src/modes/ctr/ctr_decrypt.o \ -src/modes/ctr/ctr_done.o src/modes/ctr/ctr_encrypt.o src/modes/ctr/ctr_getiv.o \ -src/modes/ctr/ctr_setiv.o src/modes/ctr/ctr_start.o src/modes/ctr/ctr_test.o \ -src/modes/ecb/ecb_decrypt.o src/modes/ecb/ecb_done.o src/modes/ecb/ecb_encrypt.o \ -src/modes/ecb/ecb_start.o src/modes/f8/f8_decrypt.o src/modes/f8/f8_done.o src/modes/f8/f8_encrypt.o \ -src/modes/f8/f8_getiv.o src/modes/f8/f8_setiv.o src/modes/f8/f8_start.o src/modes/f8/f8_test_mode.o \ -src/modes/lrw/lrw_decrypt.o src/modes/lrw/lrw_done.o src/modes/lrw/lrw_encrypt.o \ -src/modes/lrw/lrw_getiv.o src/modes/lrw/lrw_process.o src/modes/lrw/lrw_setiv.o \ -src/modes/lrw/lrw_start.o src/modes/lrw/lrw_test.o src/modes/ofb/ofb_decrypt.o src/modes/ofb/ofb_done.o \ -src/modes/ofb/ofb_encrypt.o src/modes/ofb/ofb_getiv.o src/modes/ofb/ofb_setiv.o \ -src/modes/ofb/ofb_start.o src/modes/xts/xts_decrypt.o src/modes/xts/xts_done.o \ -src/modes/xts/xts_encrypt.o src/modes/xts/xts_init.o src/modes/xts/xts_mult_x.o \ -src/modes/xts/xts_test.o src/pk/asn1/der/bit/der_decode_bit_string.o \ -src/pk/asn1/der/bit/der_decode_raw_bit_string.o src/pk/asn1/der/bit/der_encode_bit_string.o \ -src/pk/asn1/der/bit/der_encode_raw_bit_string.o src/pk/asn1/der/bit/der_length_bit_string.o \ -src/pk/asn1/der/boolean/der_decode_boolean.o src/pk/asn1/der/boolean/der_encode_boolean.o \ -src/pk/asn1/der/boolean/der_length_boolean.o src/pk/asn1/der/choice/der_decode_choice.o \ -src/pk/asn1/der/generalizedtime/der_decode_generalizedtime.o \ -src/pk/asn1/der/generalizedtime/der_encode_generalizedtime.o \ -src/pk/asn1/der/generalizedtime/der_length_generalizedtime.o \ -src/pk/asn1/der/ia5/der_decode_ia5_string.o src/pk/asn1/der/ia5/der_encode_ia5_string.o \ -src/pk/asn1/der/ia5/der_length_ia5_string.o src/pk/asn1/der/integer/der_decode_integer.o \ -src/pk/asn1/der/integer/der_encode_integer.o src/pk/asn1/der/integer/der_length_integer.o \ -src/pk/asn1/der/object_identifier/der_decode_object_identifier.o \ -src/pk/asn1/der/object_identifier/der_encode_object_identifier.o \ -src/pk/asn1/der/object_identifier/der_length_object_identifier.o \ -src/pk/asn1/der/octet/der_decode_octet_string.o src/pk/asn1/der/octet/der_encode_octet_string.o \ -src/pk/asn1/der/octet/der_length_octet_string.o \ -src/pk/asn1/der/printable_string/der_decode_printable_string.o \ -src/pk/asn1/der/printable_string/der_encode_printable_string.o \ -src/pk/asn1/der/printable_string/der_length_printable_string.o \ -src/pk/asn1/der/sequence/der_decode_sequence_ex.o \ -src/pk/asn1/der/sequence/der_decode_sequence_flexi.o \ -src/pk/asn1/der/sequence/der_decode_sequence_multi.o \ -src/pk/asn1/der/sequence/der_decode_subject_public_key_info.o \ -src/pk/asn1/der/sequence/der_encode_sequence_ex.o \ -src/pk/asn1/der/sequence/der_encode_sequence_multi.o \ -src/pk/asn1/der/sequence/der_encode_subject_public_key_info.o \ -src/pk/asn1/der/sequence/der_length_sequence.o src/pk/asn1/der/sequence/der_sequence_free.o \ -src/pk/asn1/der/sequence/der_sequence_shrink.o src/pk/asn1/der/set/der_encode_set.o \ -src/pk/asn1/der/set/der_encode_setof.o src/pk/asn1/der/short_integer/der_decode_short_integer.o \ -src/pk/asn1/der/short_integer/der_encode_short_integer.o \ -src/pk/asn1/der/short_integer/der_length_short_integer.o \ -src/pk/asn1/der/teletex_string/der_decode_teletex_string.o \ -src/pk/asn1/der/teletex_string/der_length_teletex_string.o \ -src/pk/asn1/der/utctime/der_decode_utctime.o src/pk/asn1/der/utctime/der_encode_utctime.o \ -src/pk/asn1/der/utctime/der_length_utctime.o src/pk/asn1/der/utf8/der_decode_utf8_string.o \ -src/pk/asn1/der/utf8/der_encode_utf8_string.o src/pk/asn1/der/utf8/der_length_utf8_string.o \ -src/pk/dh/dh.o src/pk/dh/dh_check_pubkey.o src/pk/dh/dh_export.o src/pk/dh/dh_export_key.o \ -src/pk/dh/dh_free.o src/pk/dh/dh_generate_key.o src/pk/dh/dh_import.o src/pk/dh/dh_set.o \ -src/pk/dh/dh_set_pg_dhparam.o src/pk/dh/dh_shared_secret.o src/pk/dsa/dsa_decrypt_key.o \ -src/pk/dsa/dsa_encrypt_key.o src/pk/dsa/dsa_export.o src/pk/dsa/dsa_free.o \ -src/pk/dsa/dsa_generate_key.o src/pk/dsa/dsa_generate_pqg.o src/pk/dsa/dsa_import.o \ -src/pk/dsa/dsa_make_key.o src/pk/dsa/dsa_set.o src/pk/dsa/dsa_set_pqg_dsaparam.o \ -src/pk/dsa/dsa_shared_secret.o src/pk/dsa/dsa_sign_hash.o src/pk/dsa/dsa_verify_hash.o \ -src/pk/dsa/dsa_verify_key.o src/pk/ecc/ecc.o src/pk/ecc/ecc_ansi_x963_export.o \ -src/pk/ecc/ecc_ansi_x963_import.o src/pk/ecc/ecc_decrypt_key.o src/pk/ecc/ecc_encrypt_key.o \ -src/pk/ecc/ecc_export.o src/pk/ecc/ecc_free.o src/pk/ecc/ecc_get_size.o src/pk/ecc/ecc_import.o \ -src/pk/ecc/ecc_make_key.o src/pk/ecc/ecc_shared_secret.o src/pk/ecc/ecc_sign_hash.o \ -src/pk/ecc/ecc_sizes.o src/pk/ecc/ecc_test.o src/pk/ecc/ecc_verify_hash.o \ -src/pk/ecc/ltc_ecc_is_valid_idx.o src/pk/ecc/ltc_ecc_map.o src/pk/ecc/ltc_ecc_mul2add.o \ -src/pk/ecc/ltc_ecc_mulmod.o src/pk/ecc/ltc_ecc_mulmod_timing.o src/pk/ecc/ltc_ecc_points.o \ -src/pk/ecc/ltc_ecc_projective_add_point.o src/pk/ecc/ltc_ecc_projective_dbl_point.o \ -src/pk/katja/katja_decrypt_key.o src/pk/katja/katja_encrypt_key.o src/pk/katja/katja_export.o \ -src/pk/katja/katja_exptmod.o src/pk/katja/katja_free.o src/pk/katja/katja_import.o \ -src/pk/katja/katja_make_key.o src/pk/pkcs1/pkcs_1_i2osp.o src/pk/pkcs1/pkcs_1_mgf1.o \ -src/pk/pkcs1/pkcs_1_oaep_decode.o src/pk/pkcs1/pkcs_1_oaep_encode.o src/pk/pkcs1/pkcs_1_os2ip.o \ -src/pk/pkcs1/pkcs_1_pss_decode.o src/pk/pkcs1/pkcs_1_pss_encode.o src/pk/pkcs1/pkcs_1_v1_5_decode.o \ -src/pk/pkcs1/pkcs_1_v1_5_encode.o src/pk/rsa/rsa_decrypt_key.o src/pk/rsa/rsa_encrypt_key.o \ -src/pk/rsa/rsa_export.o src/pk/rsa/rsa_exptmod.o src/pk/rsa/rsa_free.o src/pk/rsa/rsa_get_size.o \ -src/pk/rsa/rsa_import.o src/pk/rsa/rsa_import_pkcs8.o src/pk/rsa/rsa_import_x509.o \ -src/pk/rsa/rsa_make_key.o src/pk/rsa/rsa_set.o src/pk/rsa/rsa_sign_hash.o \ -src/pk/rsa/rsa_sign_saltlen_get.o src/pk/rsa/rsa_verify_hash.o src/prngs/chacha20.o src/prngs/fortuna.o \ -src/prngs/rc4.o src/prngs/rng_get_bytes.o src/prngs/rng_make_prng.o src/prngs/sober128.o \ -src/prngs/sprng.o src/prngs/yarrow.o src/stream/chacha/chacha_crypt.o src/stream/chacha/chacha_done.o \ -src/stream/chacha/chacha_ivctr32.o src/stream/chacha/chacha_ivctr64.o \ -src/stream/chacha/chacha_keystream.o src/stream/chacha/chacha_setup.o src/stream/chacha/chacha_test.o \ -src/stream/rc4/rc4_stream.o src/stream/rc4/rc4_test.o src/stream/sober128/sober128_stream.o \ -src/stream/sober128/sober128_test.o - -# List of test objects to compile (all goes to libtomcrypt_prof.a) -TOBJECTS=tests/base64_test.o tests/cipher_hash_test.o tests/common.o tests/der_test.o tests/dh_test.o \ -tests/dsa_test.o tests/ecc_test.o tests/file_test.o tests/katja_test.o tests/mac_test.o tests/misc_test.o \ -tests/modes_test.o tests/mpi_test.o tests/multi_test.o tests/no_prng.o tests/pkcs_1_eme_test.o \ -tests/pkcs_1_emsa_test.o tests/pkcs_1_oaep_test.o tests/pkcs_1_pss_test.o tests/pkcs_1_test.o \ -tests/prng_test.o tests/rotate_test.o tests/rsa_test.o tests/store_test.o tests/test.o - -# The following headers will be installed by "make install" -HEADERS=src/headers/tomcrypt.h src/headers/tomcrypt_argchk.h src/headers/tomcrypt_cfg.h \ -src/headers/tomcrypt_cipher.h src/headers/tomcrypt_custom.h src/headers/tomcrypt_hash.h \ -src/headers/tomcrypt_mac.h src/headers/tomcrypt_macros.h src/headers/tomcrypt_math.h \ -src/headers/tomcrypt_misc.h src/headers/tomcrypt_pk.h src/headers/tomcrypt_pkcs.h \ -src/headers/tomcrypt_prng.h - -#These are the rules to make certain object files. -src/ciphers/aes/aes.o: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c -src/ciphers/twofish/twofish.o: src/ciphers/twofish/twofish.c src/ciphers/twofish/twofish_tab.c -src/hashes/whirl/whirl.o: src/hashes/whirl/whirl.c src/hashes/whirl/whirltab.c -src/hashes/sha2/sha512.o: src/hashes/sha2/sha512.c src/hashes/sha2/sha384.c -src/hashes/sha2/sha512_224.o: src/hashes/sha2/sha512.c src/hashes/sha2/sha512_224.c -src/hashes/sha2/sha512_256.o: src/hashes/sha2/sha512.c src/hashes/sha2/sha512_256.c -src/hashes/sha2/sha256.o: src/hashes/sha2/sha256.c src/hashes/sha2/sha224.c - -$(DOBJECTS): LTC_CFLAGS := -Itests $(LTC_CFLAGS) -$(TOBJECTS): LTC_CFLAGS := -Itests $(LTC_CFLAGS) - -#Dependencies on *.h -$(OBJECTS): $(HEADERS) -$(DOBJECTS): $(HEADERS) $(THEADERS) -$(TOBJECTS): $(HEADERS) $(THEADERS) - -all: $(call print-help,all,Builds the library and all demos and test utils (test $(UNBROKEN_DEMOS) $(BROKEN_DEMOS))) all_test $(BROKEN_DEMOS) - -all_test: $(call print-help,all_test,Builds the library and all unbroken demos and test utils (test $(UNBROKEN_DEMOS))) test $(UNBROKEN_DEMOS) - -bins: $(call print-help,bins,Builds the library and all useful demos) $(USEFUL_DEMOS) - -#build the doxy files (requires Doxygen, tetex and patience) -doxygen: $(call print-help,doxygen,Builds the doxygen html documentation) - $(MAKE) -C doc/ $@ V=$(V) -doxy: $(call print-help,doxy,Builds the complete doxygen documentation including refman.pdf (takes long to generate)) - $(MAKE) -C doc/ $@ V=$(V) -docs: $(call print-help,docs,Builds the Developer Manual) - $(MAKE) -C doc/ $@ V=$(V) - -doc/crypt.pdf: $(call print-help,doc/crypt.pdf,Builds the Developer Manual) - $(MAKE) -C doc/ crypt.pdf V=$(V) - - -install_all: $(call print-help,install_all,Install everything - library bins docs tests) install install_bins install_docs - -INSTALL_OPTS ?= -m 644 - -.common_install: $(LIBNAME) - install -p -d $(DESTDIR)$(INCPATH) - install -p -d $(DESTDIR)$(LIBPATH) - $(INSTALL_CMD) -p $(INSTALL_OPTS) $(LIBNAME) $(DESTDIR)$(LIBPATH)/$(LIBNAME) - install -p -m 644 $(HEADERS) $(DESTDIR)$(INCPATH) - -$(DESTDIR)$(BINPATH): - install -p -d $(DESTDIR)$(BINPATH) - -.common_install_bins: $(USEFUL_DEMOS) $(DESTDIR)$(BINPATH) - $(INSTALL_CMD) -p -m 775 $(USEFUL_DEMOS) $(DESTDIR)$(BINPATH) - -install_docs: $(call print-help,install_docs,Installs the Developer Manual) doc/crypt.pdf - install -p -d $(DESTDIR)$(DATAPATH) - install -p -m 644 doc/crypt.pdf $(DESTDIR)$(DATAPATH) - -install_test: $(call print-help,install_test,Installs the self-test binary) test $(DESTDIR)$(BINPATH) - $(INSTALL_CMD) -p -m 775 $< $(DESTDIR)$(BINPATH) - -install_hooks: $(call print-help,install_hooks,Installs the git hooks) - for s in `ls hooks/`; do ln -s ../../hooks/$$s .git/hooks/$$s; done - -HEADER_FILES=$(notdir $(HEADERS)) -.common_uninstall: - $(UNINSTALL_CMD) $(DESTDIR)$(LIBPATH)/$(LIBNAME) - rm $(HEADER_FILES:%=$(DESTDIR)$(INCPATH)/%) - -#This rule cleans the source tree of all compiled code, not including the pdf -#documentation. -clean: $(call print-help,clean,Clean everything besides the pdf documentation) - find . -type f -name "*.o" \ - -o -name "*.lo" \ - -o -name "*.a" \ - -o -name "*.la" \ - -o -name "*.obj" \ - -o -name "*.lib" \ - -o -name "*.exe" \ - -o -name "*.dll" \ - -o -name "*.so" \ - -o -name "*.gcov"\ - -o -name "*.gcda"\ - -o -name "*.gcno"\ - -o -name "*.il" \ - -o -name "*.dyn" \ - -o -name "*.dpi" | xargs rm -f - rm -f $(TIMING) $(TEST) $(DEMOS) - rm -f *_tv.txt - rm -f *.pc - rm -rf `find . -type d -name "*.libs" | xargs` - $(MAKE) -C doc/ clean - -zipup: $(call print-help,zipup,Prepare the archives for a release) doc/crypt.pdf - @# Update the index, so diff-index won't fail in case the pdf has been created. - @# As the pdf creation modifies crypt.tex, git sometimes detects the - @# modified file, but misses that it's put back to its original version. - @git update-index --refresh - @git diff-index --quiet HEAD -- || ( echo "FAILURE: uncommited changes or not a git" && exit 1 ) - @perl helper.pl --check-all || ( echo "FAILURE: helper.pl --check-all errors" && exit 1 ) - rm -rf libtomcrypt-$(VERSION) crypt-$(VERSION).* - @# files/dirs excluded from "git archive" are defined in .gitattributes - git archive --format=tar --prefix=libtomcrypt-$(VERSION)/ HEAD | tar x - @echo 'fixme check' - -@(find libtomcrypt-$(VERSION)/ -type f | xargs grep 'FIXM[E]') && echo '############## BEWARE: the "fixme" marker was found !!! ##############' || true - mkdir -p libtomcrypt-$(VERSION)/doc - cp doc/crypt.pdf libtomcrypt-$(VERSION)/doc/crypt.pdf - tar -c libtomcrypt-$(VERSION)/ | xz -6e -c - > crypt-$(VERSION).tar.xz - zip -9rq crypt-$(VERSION).zip libtomcrypt-$(VERSION) - rm -rf libtomcrypt-$(VERSION) - gpg -b -a crypt-$(VERSION).tar.xz - gpg -b -a crypt-$(VERSION).zip - -codecheck: $(call print-help,codecheck,Check the code of the library) - perl helper.pl -a - perlcritic *.pl - -help: $(call print-help,help,That's what you're currently looking at) diff --git a/src/libtomcrypt/notes/base64_tv.txt b/src/libtomcrypt/notes/base64_tv.txt deleted file mode 100644 index 01c8a4e746..0000000000 --- a/src/libtomcrypt/notes/base64_tv.txt +++ /dev/null @@ -1,35 +0,0 @@ -Base64 vectors. These are the base64 encodings of the strings 00,01,02...NN-1 - - 0: - 1: AA== - 2: AAE= - 3: AAEC - 4: AAECAw== - 5: AAECAwQ= - 6: AAECAwQF - 7: AAECAwQFBg== - 8: AAECAwQFBgc= - 9: AAECAwQFBgcI -10: AAECAwQFBgcICQ== -11: AAECAwQFBgcICQo= -12: AAECAwQFBgcICQoL -13: AAECAwQFBgcICQoLDA== -14: AAECAwQFBgcICQoLDA0= -15: AAECAwQFBgcICQoLDA0O -16: AAECAwQFBgcICQoLDA0ODw== -17: AAECAwQFBgcICQoLDA0ODxA= -18: AAECAwQFBgcICQoLDA0ODxAR -19: AAECAwQFBgcICQoLDA0ODxAREg== -20: AAECAwQFBgcICQoLDA0ODxAREhM= -21: AAECAwQFBgcICQoLDA0ODxAREhMU -22: AAECAwQFBgcICQoLDA0ODxAREhMUFQ== -23: AAECAwQFBgcICQoLDA0ODxAREhMUFRY= -24: AAECAwQFBgcICQoLDA0ODxAREhMUFRYX -25: AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGA== -26: AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBk= -27: AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBka -28: AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGw== -29: AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxw= -30: AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwd -31: AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHg== -32: AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8= diff --git a/src/libtomcrypt/notes/ccm_tv.txt b/src/libtomcrypt/notes/ccm_tv.txt deleted file mode 100644 index 40cb2f19e4..0000000000 --- a/src/libtomcrypt/notes/ccm_tv.txt +++ /dev/null @@ -1,284 +0,0 @@ -CCM Test Vectors. Uses the 00010203...NN-1 pattern for nonce/header/plaintext/key. The outputs -are of the form ciphertext,tag for a given NN. The key for step N>1 is the tag of the previous -step repeated sufficiently. The nonce is fixed throughout at 13 bytes 000102... - -CCM-aes (16 byte key) - 0: , 54C92FE45510D6B3B0D46EAC2FEE8E63 - 1: DA, 7A8984228DCF944903936CA9D7709ACF - 2: B95E, 1056DE0CBBEEA760ED2053FFEB554EA6 - 3: 58FF3B, A42DE1A812D29BBC6C1C5AC808565437 - 4: 9D6E6FB6, 5E8E0422792999381ED669CE17601D34 - 5: 40D49E851D, B076B4ED79BF0155B39A743550593944 - 6: 015356B9A6E1, 8D62CEFC451CAE4A21C1C579C6CAA128 - 7: A2CF0A77AE0DE2, 97B9D201740FA59E863513EDACC59FFB - 8: A44C68E52F95B48B, A461B79D4D9B8ADF6C6618E6ECDC059A - 9: F56B8AD68AA31F22B9, C5C7D2E6FE34D94CE72B86DA55679080 - 10: 5C17EEBF4E348CBE3278, 29FAE7B470CB652C501343FE23B25894 - 11: 1EE960BFAE360302D834E3, 8F8F475EB9BAB29CE14A9CF42C30B148 - 12: EFF6BA1F2B1389237C6C045E, C895302DD8E75096951EF5CA63BFDD67 - 13: 5A1179A4047334CCD9162F36EB, 110987D37F45422625DEA402BD7580EB - 14: F26E2C27E7D287B182FA42879978, 530FDE90C13A01EBCA86449073A3B035 - 15: 77BFE79B4BC87116EC5232606E890F, 280994EB0E16C7CF10F31BB60DBF52C8 - 16: 9926A4CE1AD70B89CC0050A58B958742, A635B4272EBFA1F83DAE270452D877E7 - 17: BAAF99CAE4753E3304D6F8F9C0CD366C68, A6F606AACD0B87923B43C3EB61AC3965 - 18: F72453C6765352A31494FA02B388E407B1FB, 0A446D28B7C5845C3621B4D3A0FA98DB - 19: A7372589A86B2E137F124A96618095EB5E1435, 3C59A6A858947FEBFD32441E37309F1A - 20: 5683E13A4E82A1AB8B3DC2051B6DBF2E1F2BB417, 459D1B0D2CF2C30B5ED5C237D07DFC19 - 21: 33594C4B84536C23DA5AB2117E9267258CCE5DEC3B, 6E4BB70A72343E142AC4E31CE0FE6A77 - 22: 332EDC9A3BDB90DBCCF317AC55BE5855CA9BCA2A73C4, 9FB310E5FFF5C754EE1E5FFF865F1656 - 23: 734618677055469335FFD574B008F2C68B78633F79010E, FAD31386E42BB4EA76A643A9004A8CB4 - 24: BA6F6ABA2AF35895F7F966D71F4E91A0BDD1DD551826F861, 25A3EC1C91C26283BAA5975390285AB2 - 25: FF519213E858E36AC8D92450F81CA46C8CA8AB129A997EBB36, 0D4AB2B7A5EB02242C01A81CEBF5D84E - 26: B1F80058C3B4316EA86E9A898CD0B9C0366DFCB2AEC0799312D5, 0F4FF2759EDDF6349F4E23F284FAAD2E - 27: 00BDC15012F8183112D5C3A135DC60DC9C764A04BD39A8E041F1D9, 0C68BC9E6A6BF1B01743F3183C9B7C80 - 28: 3022FD12969D925365C553D98D59E5D1EC494540909D1FA794F41E18, 05E61844943E78DB9BD417DDDE9C98B2 - 29: 4F4A4554BFED6BAA09E3D8843C4EA3807B8762799C1D21289A46575389, 3A59A6DC9230020FE061466A92BBCAFD - 30: 6AE735EB15D9B39C8AD0E54F45307AAD97DB9F8A2A66BDC9BABCCFBD54A3, 0BDB365E493A9E160EEFD7DE24101870 - 31: 4AF19F00EAE55FED2304B94FBCA29383042F2BE711041323C1D9F14BA63383, 94561581E496553D068052BA698683D2 - 32: C2438BC46A92A465E0DB41E638CC6C8E0029C4DA842CA4140D73F90985EABA9C, 0F5A69F52AA8D8508D09E642511E54E5 - -CCM-rc6 (16 byte key) - 0: , D01FACF2BB577BFA6194800E53FB4A00 - 1: 65, 92E48F7300FA2697E9E0FF80DD187237 - 2: AF5C, 332863BC515649D5BCAB6A2FE5F5250D - 3: E7C89D, 49A641F027C65A15100009D99E79CF3F - 4: ACB36D46, 53DE328A8B4B14CAD363BED53DACE8A1 - 5: C3ADAE6CCF, F713F5079BD77046F95D8685CDF522DC - 6: 5A8CABC912DA, FB97B059D2BE1273497FA8D2739A1505 - 7: 27F101DD6D0894, 266ACEF34476A0E64410D209219335D0 - 8: 66164DA09BE2F46D, EFC64C01890A5B562AF39ADFC48E1CA9 - 9: 1B0018895394753995, FA894E1C882D96E35A4C238708931F3D - 10: D346062826187BAEFC3B, A036AE1D3C02E2AD23541DE095AC7B84 - 11: EFB375BA1138339FA1B504, CDD4232FF4664D59D5AC6BE32CBE1B35 - 12: AFCF494078D7D7E6D9803FD5, 07E06ED923F76150BE82C1DDCB62C4DD - 13: 75DF2EC91379408DA426A444E4, 440ACDF2A6567FA3A5009DDFE502A1A1 - 14: 3B36B62B01E324E702694305DD29, 4093598607DCD9993845D1837D211FE2 - 15: 7DF6595C9711B164C99CB246B4D57E, F364993B2C187058F466B62D11E0F94D - 16: D317EE9EE1746D1B89A4CC52D88F0819, 41856B0B229D38344FA718E04CA57A8B - 17: 85252277A97CA7553007995BD5A0DCD372, BDEEAB636BD1ACC8D5A23F658150FA30 - 18: 36FF305AC6EF662C155A1C15A6C195D3EC88, 9AC48EF07A510E308E06E79C0C80C3A0 - 19: 51645A614313E978F6DCE7BBDDEDC33E3284AB, E9F7723E763AD50161C0671C4034FD0A - 20: 3CB9E6D0730FE05F903D338708AD8E34BFBB3285, 8A12185DAD518049F0FAC945A8FB305A - 21: 276E37D246C40ABF32DC83007B95390EE801CDA6E3, 73FA1D310D031E0A0A3A1421661B4697 - 22: 4444BB070EDFBD1AC59D0BF70D66F48F0830069F3562, 9DCB6A99CBCCE3C8AEF29F06AF5057FB - 23: D16BA084CF82EDD2E43349311140BF3A2E37DE40544BF3, CB93C5AD60C700D4EA653136101AACCC - 24: 3FBAEBB36E2B74014043BA7D72F899B0D8DED883F592D778, 54DEA31D7EEA863A06A16D6C9B25DC13 - 25: 3614B5428B790793F31E23670A38A070B65DB8E51C61FEA9C9, A91B750FD7ABFF18376C982DFA0C8872 - 26: AC15FD90A4C254BA1406BE7DBA5694BB2625F634C69F45CCCD04, E6F97BCC8526BE3C04BA139EB50E65DF - 27: B506E83557E48553BD8557411D2C17D64005E734BA5A5FF1CF98B1, 6FA001758A19F783A71C97AF1AA61F94 - 28: F07721663400838947EA1B9404D9683556F2D911429A9F59E3F5AD31, 376A1165A30C919E96C3706A4AB5DB37 - 29: 98B5EB8FE0005E515A585D8F44D838FA590054EA5201CD444366B6F71E, D8C58448F601F2C05F24ED2CC349C78B - 30: E36E2FC225767CC1E2C388BEBC2C81C340FEF5B504575D5FA49682E1C214, CFED56F38CA4F84E6E1E16CEF50A6154 - 31: 7A9FDD8E481B822B3D282AAF726944101ED61DAE73782DE055D7D305E36B27, 328B10841E977041CBD13C39CD70F03F - 32: 48AE8B5FA027930A7BCEC27468D795D0D8E6099C5F0558361B3AD20C1ECFF89F, B180AA9353E9EB6A22710A4DE872FACB - -CCM-safer+ (16 byte key) - 0: , E106F41D61402E532662213EBA471BFF - 1: 05, 1749600C7045647DCB3293C0724E7A21 - 2: 2355, 80DD597665723F4AEFFF760C5C6C5EE2 - 3: 5F4CD8, 59AE54E63A8CF4DBAD050B42CE922013 - 4: 75F63A43, C31B6BD3125C036C99507DDEE0197201 - 5: 51D4D87B8D, 0F3872088CDEB0E958C35F343677AC24 - 6: 8CF6D81A274C, C8E688954E72A052B5F8D1CA46FB44B0 - 7: 5EB8283B299AB1, 5977CB96C8D439DE3A86AE0452A2EE34 - 8: 829B1A4EA8643EAA, 1E892D3DFB73A469035CA81DD7F937D1 - 9: 0FEEF9504CF0F4E282, EDCBED7C61E8E2D24392B4145218F0AB - 10: DEF7679D3073D461A94C, D7ABAE561901CBB30FD7D9467C088B3B - 11: 625FD679C7354A74D62893, 450E3954857640DDF4C7A95A6E202A1E - 12: 3C9E76E4E2D4D95FEABD5C90, CD4467F695B7ED8973AEED5A822B347A - 13: B1B6294ECEAE6AEE4853731CA9, 6042302DAE598822BE8554BE038119CF - 14: 204BF480582D4BA408BAD23CEB52, 4D6B87334E1BFB9BA2D42B89B24165B2 - 15: 277591770E3E2DB97A3011D9616991, 75D0A4B9937748EAE7794056F7A8A7FE - 16: 5669F75D0C908BFF7B82095231B86DAA, 3E816776A73FB89276534A3646C0F8FB - 17: 37E621EF5A043A83FC98A65329891BC031, 159A823EA61B3A47B42EFCF12F304725 - 18: 18AC6ECF3F478A0797BF813C871235A9D309, 9B415B1B3A933B22C9027E2D72764956 - 19: 671484C7587DAAB885C7F2FAF030081B452CC6, 574A63D113A5ECEC877D5A368A3160AA - 20: D7AB0F7D46B7ED976C8F6E7D0C6AABE3CAAA5A6E, 266C7A025C4EDF657DD42EB82BB6616A - 21: D60E4CFC6500E237276A69F35AE4BBAE17371392EF, 6ED2A1673F8B4DB795547D9D93D76D8B - 22: FAC6E21979D8D9896C790CB883C29F84D6820AE4FD4B, 1C7B6D73200E3C2DC5C701152F38EE8E - 23: 39240DC2B544CA8BEBBB4EA499FD48A5EE707198AE8AC8, E7FFD169552665ADE7B9C0DFFDD04EBD - 24: 6BE2C24172CAA192D55CC3E640E34675DD7F441CE5DB0FC0, 760CA976355281F76E49A2856A4EC7A0 - 25: 0E20427218D6447D6E23FA4832CB8D2A172B23FDC542B41524, 27D0F37E109252FF5E6F6F703CA784F5 - 26: 0AF75BD89028A5691B8B7993B9CE4FD24334A312DE28212C8B2C, AFE4C6B193B0F1796FC9E6C23292C060 - 27: 6830D8E2E6DEC1476796DA44C982D36409E268F966283A66E801ED, 9E2C92D5B30EB0943E17869ED4C789EC - 28: 75ED280BEECD7768F7E032071F0E06D9D6BF1C9FF8E5DEB536DCD4BA, BF0DD11D633DBA5DCD25F4172765570B - 29: DF1FAECC1DB24718236B18B90B354F405FD5DE1257EC43F811F4A43DCD, 48D182E572E794350BBDA91FD76B86BC - 30: 176681E38ACACCD3C625F554C1F7A2D7C2C474C9444EAC8929B8C36EC05E, 080E109FFC5D247F1007217DD642BBA3 - 31: 8A8172C21D88A1FDD43089C545C308507617F7BDB02C47CF2719F1484407E2, 1A0D10B0AF5BE21BF19D570D3FDA5BCE - 32: 0A93CAE2B95517773A4009FD3438231A207B9D46AABAE83FC4E1057EA4E2D6B4, 717AEF2F55DC8669F7E2D0298F8A7BE9 - -CCM-twofish (16 byte key) - 0: , 33B3DF1B59C84DD3C15E4FEB66173303 - 1: BF, 92DCEBF1C11DD0B028DEC944A555E4C6 - 2: 8A4F, A859C7F76291326D821BB3C7519657C0 - 3: BAE755, 14D7C2EFBCA1063460FEFCEBAE3AD79A - 4: 25695BC6, 9358BC434B14B59ED17F9C0D3F51DCB1 - 5: 1D9FC70ECE, 2A86578FA3A8C702E2E6723DB9A9893F - 6: AC39F1DF3661, 3F9C71EE0506FD2BAFFEE7200D22CD92 - 7: D330A915EED9D0, 22DC25EDF5ACDEF8358BE2A3082112BC - 8: EF913ADAE6380507, E87D72BB6395EEEF2AD4F546B4033DE8 - 9: 5EC16994E762BCE467, D7700F7BF4FE026A2076F161C3383A0A - 10: 7EEB4910B7C2B540B490, 40C88A977E1DCDDABD749ABC9A0C60F8 - 11: E5DD32FF54D39451CC2AF8, 541B1558B5AFF6E9EFBEE496D60AD65C - 12: 242C2900F859966B6627FF5C, 1CED148098350F3A5D1B5634180817A3 - 13: EEF025B9E4EB867B127EBD19D4, AD0179A07AD1418C25F40E123C2BEF47 - 14: C5E812B0AE37098686E2C4452C12, 02FC88AAA62E34742BB8577A651E922B - 15: 7BCAB32D1A871A62F9C781AFCAC60C, 2CD1C11EE197D9E130359F76E7F49251 - 16: 1E82D8B8EED9A730D1670F0DCFF17B60, B7730261560EA6CF715FF7006D5FEFE2 - 17: 0E1966992E360DC81312B28ECA6865B811, 10C40ACD169CB0F2A6FFC99F9A5516EA - 18: 5F5418C1322BF7EB828CF27C1F72086515BE, 90F8ED0447171A10476DED39F7518075 - 19: 6C552506FA167FB8AA12E9F416930031487D4E, C992009F83F31A7BF922BFAE68C4134B - 20: 38429D966676406B17638DB7F9F7205250408BB2, 3385A50E9789D2C63835A80EFE9CFAE4 - 21: 56EF426315EF96BE4C60B49F41C9BDDE2E0CDB3C22, 2D51D5B4F5B04BEF3BC1A7CF1AEA70E9 - 22: 314B075C097EE531ECCE6AD7CEF22A72AAFCEFB02029, FB7A7D84D23FF524D060871D90FAC106 - 23: 61CCCF7E2A9B3E46CD0A94D7F4A7617BB0DBA2D989907A, B3F4D46094732F3EDD81E0755F0C52EB - 24: 7A812A3BCED4E0A72FB81218BD5A4E33D69CA18834FFAE61, 487F80588B41F4E1198124708987667D - 25: DBFAB77EF07AA4C9ED2B05500BDFA00FE3F19F15F97A74880A, 84504D9EECBC6CE11B18BD105DE55E2C - 26: E676D4739B01B5101E36BF8D9F4FAE8F767C028E83A6D5B39664, 3141A05669807BCA30F0934F599FD077 - 27: D8FEBD069D87C1EE504CB8F72ADFF2166B14BA40B17B4DAA439668, 1D99A301943041C2F7A71432DA736FE0 - 28: D98E2A1CFFAB28341F92C41971A21AD0FDDE733EA25F2607967CD0C3, 42E05A53BF4F1A6C5B7F84742ECE031B - 29: 13FA412B484945C1FE8291A7EB8F8FB78D2DC2C72C5132386EA82BF4A6, A1A8E8B026DD116B0F9C73EB14C1C7CD - 30: 10ABD2DC25C8BA594FBFA9312E69C1A2DBF326475AF2080E55E3611FBC0E, 49DF8A5171DAC3FB684BA2CF7FBB3D3B - 31: F401D2123619B81F54F307B783362CC40FB4FB2433CF51F5543A147BCD1FE5, ACBB670CB3722059B4B9FBEE67703E98 - 32: 839A9BFA1D3CA37924BC6648DED2291FC61736A3638906D9C5DA28A66AA684AC, CD07B83C8E0C3E6FB4115A149BDF6FDA - -CCM-noekeon (16 byte key) - 0: , AB924F56DFA05F4E8628C14111272E5C - 1: 08, 8A76DCADA7CE53A0F4577E67B0B958D7 - 2: B602, E0BEAC0B1E95C4570A823295E7517C25 - 3: 50E4B1, F874F8B5F2806F64AE0AED151821C638 - 4: 990F28F6, 9AE2D6D5576D1C4722E2E3C11F5D98FF - 5: 297104DD8D, 7A245E5F5E0F4C3466E16D5EF2B96D80 - 6: 7B6E9776EF05, 6B540166DE5E154D7A3A34EEA3FAD5F3 - 7: 67EB1922FAB0E1, 549F39F7C3CB17F0EA6EA9C75899BD55 - 8: 343E752F0F956C7F, 19CBB59CC4117DE6EB9924AB0CE2C9B9 - 9: 98A25FBBD87D8C1829, 6E3D4F0ED0C5B9161EB11AE9600003F6 - 10: AAA54C273F69638CFB54, 1192FCD1F9F543889F3607CD6B623AA6 - 11: 51B3F33EF8B1F38438618B, 8A704F5B003A21E4033ABFCC6C53577A - 12: C7E5167D81B23F47AE90DFC8, E218F7DD222CE31642CB06C329911CD9 - 13: B065DFE10B9C32F1B028AACE4F, 5EC4DE45C29C78D1CDDF2A6AC05BD53F - 14: B5AAF0ADCA03812F251C8A2BE745, AA353E20F65237279643D4CCC06150A8 - 15: 88AF734661B83CBA42FF983C260B63, 8F20A5190A218B8D392ABA1295CBF905 - 16: 6663AE30F79A110747D6678784330BF6, 142196DDD26668E08D196BCE0989AE01 - 17: 8153816C6E9C449B0439AD7892DF8C0492, 58B376CF240C37A08337C7794736838D - 18: 1611C22134C06CF8F43625017CCC65B6E305, C0443028C8DC5FB78F9350C4A8D1D32D - 19: FD2EEDDF2B20F7623D854FF4E987DB4196AB2E, 8B2CD7C72438F3EB071A33A7C65610B3 - 20: 641256A9C543D0860E609F1AABC36EAB515E29C1, 0E1A0FE82BB18BFBB3D13BEB84BA185D - 21: 437719619E96C3AD2080470809F7CDDEC3011EB6E9, E31934C5F0C2E4A04A4ED533A98C795C - 22: CF2B11E8660CC6E650EDDB2146B11F864E01B4C99DDD, 8647759347E7A4FD2CE8AC17AF4186C9 - 23: F339314695B539B715A7E5FB4799029CC133CEE26A2E86, 136274C51D9797986E92F9E540A80EB1 - 24: 38F843B9DA155D57166D310D85406E72FB382604C2EA4CE3, D1D7C6397599ACC2EB5CF1E06975B423 - 25: 29E497528D72C2BEBB12663F71B3981705BEF60A5451FAE4F4, 50F6C796CC00FE590E5E975206045702 - 26: F16F583E1FEBC78F5AB0FA61B5BC389D3C16B62ECA7C6A86BC98, B3643EA448ECA0511312895B63193516 - 27: 80347C7148FE1A5B078A27B3821DDFD93341F0351F4323EFEA6632, 8AF133E83EB316E615F1BC9DF241E23F - 28: 96939F79855C211B23E45771DDA2C3AB81C2672F94B87A7FFE46FC84, 4E7DEF91D1A102667BF55922B2531E6A - 29: 4789028961FDB78E8821A1FD9AF93BDB3CAC5C75566613E148B4439E90, 470DC4389C466AE79051A62F8122A1BD - 30: 7D2030ACE87827B785D3EFA3AE5CCB3DBF3A06DE4BED2D4FAB31DBE90F58, 55437514620E6B499C4FC01445FD2828 - 31: 276940205F5B869E40BBB064BB0DEF9D86D520DFCFE531A77A55AA78DE8709, F291F6A4D7EFF52E5EE47CC3ED7902B3 - 32: A75FCDC9F4E38C02E70D885353F5E3E7E13A14237D75EFA0D53B0C808EAF10AE, CABDB90052202C4EC777936B6097320F - -CCM-anubis (16 byte key) - 0: , C85F41475E06F25682F855C3D45A6523 - 1: 25, 437BD73ECB8CFFAD9B2876F08D4BDA36 - 2: 5ADC, 5C762058A5EF71278B69F567F18CBE51 - 3: 95E541, DF099E8218AEDE8087791B38298334E9 - 4: 2DAA84E4, 7437094198E4AD2647C2618248769A26 - 5: B9641C5855, 91B02EC44D22460BFF22BB40C799E20C - 6: 102012BCEFA5, E60488DA65D683182F0EFDF9DA52A78C - 7: 8F14972CA4F8EA, C26B51F20ACDEC7DCA911500CF1241ED - 8: ED2714B652972256, 8BA29459D5D370FC608EE362B55B7633 - 9: BF58A269A4F59CE0A4, D69080820F836E5B5CA8F393E61ED009 - 10: 44AF1F715ADAF26C6EF0, FEFBC7DB75ECDDBA4A13CBF9A57873D8 - 11: 77CDE1B951F0803893642D, FBF8B80B061703504D8D3A7718366B6E - 12: DE599BAAC9D3EFD9FCD47E44, F636EC35D172D661F01746FF86688B95 - 13: A792B8359050C4866572977415, AE67D4EED92E63A14003FBC936EEF43E - 14: 62D5A7A4DFB78A175831627987CB, 25F7B440DBE9902C28B28E50BF02C516 - 15: B6F289459F924C76586F4EEA0C1CAA, 54266B4424C3AF6E81F6CC4F2437F54E - 16: 884B7DF3395F063DCA26BDF9F2FEF4EA, E3C2BFA1964EFDF78FDB9559C8031C50 - 17: 774962377B8731F2F301B930487518801F, F35B54264711D843D23636BA6CFA3E4C - 18: E9C8D1164F2B196C7305406179B232E45F1F, 2A13E034A136EBC0ED3361737EAD214C - 19: D3DCD242C952C5589E00B65CD826CA87691B8F, 9D624D482042798DB896B55D801EAD98 - 20: 57065B2655D4799C0478FE7E8463A2215E758875, C8FB052F14F9DF6731A9C8B566E71D53 - 21: FF736FDBD23593D9BC9A0D8CA7D819F550EF969322, 5CC3023029790BFD43204B27D52D7D7E - 22: C562B7387B8F1D3DBA22DD1636C9C4AB443F2FF15F70, 195C928EAF88BB4ACBA8A01B4EBAEE6E - 23: D0AC6EA8A804DC261304D4821E6AD7FCC2F0DC1A299B9A, 34FE2034CCF09A98DD50581DA8BCBE39 - 24: B65933A7D7C8EF19C1BDEAABE2B4CE5E821459D953565EF8, 42B20EF142EB228803D6AF47C6482BEB - 25: F1F4FCE842EFEF563F6F047956E6706DC9B178D00D82776D74, 3ECE3050D8C80319821D5F57A7CA7066 - 26: 4A3F10F4E34210A5CA1B81AD4269CBC3FD68AC662BF0E9DC9935, 0BC0724AA9A194D8C75EE6FC8E7F28F1 - 27: 077F3C055303FD669BC1A370B18AA7F31D3C8CBFF5A69381404FBB, 872C7946401BE70E677B79EA13FB0F58 - 28: FD39D32B27FE5BB8E6512C642D490E0AD0866E386580AE115C85ED2B, EE81712EA57DD54DDEE98EAB3285E6EE - 29: B45ED179290A6064188AFF6B722B37F8C3E984EC37AB5F47B353229B12, 186B3AD0C9F60D57E84992CBB2B0F71B - 30: 83FF1FD179D518A414148C15BE566BE4CC3DBE9FF5319A651E862811F152, 4B2942C66565EB9139A83C2EFD549D55 - 31: B8176469E6A0D5797ED6421A871FEECDE48ACF011E394981C43AC917E8FFD5, E9B01383DB1A32E6126BD802A6C6F47E - 32: AB6A0AA29B687D05735167D78DB697BA2478BD14ECD059AE9D1239E7F2AB48FD, A560A30FD87CF28BA66F5B2638567E4B - -CCM-seed (16 byte key) - 0: , 960414F81DF9F363AE6234067B946EA6 - 1: 15, 17746EC09B06AF1DE24710D2506629CD - 2: 892C, 828705A8CF1E51688EC4F1FFAC4C151A - 3: E411A7, 1AF2DD611D05DAF48118D1E7D810C173 - 4: B9DC8276, 4D335DF8B860AF121904310F5C004212 - 5: 8182C84A25, B713177663D498218908178B3EA3C65E - 6: 5933E7872324, 52413BB22BABEC9E43F1A98B78B4496E - 7: A243E381075DEA, 8FF3D2D465748AAF2373D1D8F8EDCFC3 - 8: 57A4E46B9B5C1795, B26653992639D54D5CEBAC7473CD3285 - 9: 4D05D6669D9A0C3079, 6B26FA6D5271D74D444985466D2CF0AA - 10: 1D35BB653A9F48C3314B, 494E108B0780280DF7CB4BE24CACB5CB - 11: 9A227951B4565021D29DD4, 3E21A07540744E26424996B0670CB07A - 12: 3E893574DD3D82CCD83E87E0, 017D51F744FE95E375D0456FA8BB0EC9 - 13: 5DF04297D842B3CEFCF93F5B95, 49CCE7A12C85648BD2A07944623C81AC - 14: 27F7D25EDE3471AAE1B91BBAEAD0, A6F1DD19DF08160D982184A414247B8B - 15: 6F8583E5B88B15F89070FB7A49383F, 4C98CC3884A2BD20AC6FA5184FB72670 - 16: 5D8D511AE705860B1A55E2FDAE9581D9, 96EF02C285AFD27D2B26BCAC02EC56A0 - 17: C4508E9E03DFE7C3B89192589CFD171A16, A2A4DC81E900BC5C404389BBD0B4710D - 18: 3163AE0E74B3DE3779745A82B783D882F092, A89574F7D1C2B90241A702A2C6A2AD86 - 19: 2D9C64EF9D8C2E195AF05BAE747A7BF8EC6C30, 07EEB7667A539164862E472366FFAD68 - 20: 03D145C9133E9108BB7A61D17880B155A56A58E6, 4F8EBC9A3F3C74EEA02099BB5AE6D456 - 21: 41C20EF2D199B6C0FAD9DA02DA0296D37B23059C3A, 062AE92091F7A8CF74A8E9DAFC58BEDE - 22: 402912121F84EDB82F101195A68EF214F0A8F4DA6DC0, B35C944A4E5BA8AB60A4415B5BDF6E30 - 23: 4D3F14438904F8F4F911CE729B26415F4EF819F80D2254, 2304E0373E136010B9BC6E061660D881 - 24: A855C170C1E2D326D74996939C48A85EDEED2E06F97BE61A, E66F188735CDBD27F6354C260A4796BA - 25: F882B023A3B25B878073DF739A234256E4174238A30A5B5062, 3C8BEBFA98ABF880891AF2539D3A0FCF - 26: C66F850279CD23D5243CF15E6084A17C124DDDE840DFD9532954, 003202A7E393626BFF93D48207E7DE39 - 27: BAC89C099A8AF633EFAFA496198DC9398DB3AAB47A8D24E2FE7D62, 32583F94ADE55278F2533ABE934CD535 - 28: B9EB02F63EFB72455CFFA2799A5BFA9E0BFDE240379AA98B4D0532C8, 5D01FD2F100C003EA284A2AF55EE5934 - 29: BAD5BB6B8DF316401B12B2BF36329F1D977E1FD943F594A6F4ED696194, 3D91CE3618998F3E060038D4DCAAD084 - 30: 8964B7FAC865310E56DB3238E03803F3B79D095523D278D609AD34BA8B67, C57D3AA1FF71636CC7497DF3CB4F7B71 - 31: F83C35D61E5C48CC7C402C9C78758D0DC696D2708FBC5294879DBF700BAF75, C69997844AB43312C90E995AD8C91E58 - 32: 03CA8E42B89C0AEEF0B7A364E94E326C537AFC4392AED3E6DA71EE65032A5CDB, E8DCD9120DE61900A194E8B94AEF6B2B - -CCM-camellia (16 byte key) - 0: , 3B53D5CC8B26A5FFC78D2E974E45A661 - 1: 5B, ED7741D8C258D56A29392A7A65CF147D - 2: 9396, AEC9E6690624A94E9ED39A0507C32277 - 3: 7D7DDB, E7D4B50F856F78EAFCCD6B91CA985AFE - 4: 1DE036A3, 4F519237C8534508140174DD3F5D5E10 - 5: 9BD3C8B888, 760CADF4D2722C52BE28D89F9F1BEAAC - 6: CA4252105A3D, 675B4D6953136E0691C3FE174381C231 - 7: EFF8ABC8F5CFA0, DDECDDF8FAE2BCAE971003D05A86024C - 8: D155E0590C4DC889, 08EFED0B6FA5C0EB64B7900229EA41DC - 9: 50AC40B4A083BEBF21, 14DABECF5CDBBB8F0AF3E7DDC034DAC6 - 10: 1C5442AF9F2D491BE911, FD19818919D55FD80BCC9EBA0A108920 - 11: 85A748561995A968CC9124, 69F769B8EA2BE927DADD209300752181 - 12: 2F0838A1C593A629C1AE9032, 4C8AB614BCF4F7988EB4B93E1DC48EE2 - 13: F19EE633F8B5E323904469D5C3, F82B28464B4BF73C39B332814E1672EF - 14: D6DBE7D82D4C99830FA1A6245125, 94D9EDF12A4A4EE357B647184EACC01B - 15: E8D02CBECEAD690DDFC1E48EE16B1F, 2D1355394CD62544D8840302715862D8 - 16: 74C395F0C833ECB858F6D09C097192C4, 9079E949C4081B348259080AA0AAD85B - 17: ECB27927C303ABE439BCD9F9D4E87D5674, 726E8E755398A30E930F2159B510DD8B - 18: 86593B1148EF7D5B446AA3AD22001CB66CB5, 63B0D269B586B9C887584498FF61D8BA - 19: 0373123872929AAF354B085FCEAB74DD2D28E4, 5FE2491F2603E474D15500DB2E32481D - 20: 3EA3D8DC013F2A6E42BFCCEE51BBFCEDD194BA40, 5667BD5212E31F02C8D8B94FAB5A9DEF - 21: 5ACC89A28DB162595FD55D63ED2C5B48976E0BA0E9, A52EDC5A3AB7B070B755DBB008D99787 - 22: 381266462C783DF3B5F3F3570611D6E0A61ABDFF7BA5, C79D371D81511D85D7B54B686AADFAFD - 23: 8819DDC964172B3BE049CCBABCF5AA7EDB50BD90E871F4, 45561AD598EB2DB8F7825878786B2CED - 24: F514E9F64E90197728E2D061443ED006F2CF2236EC2E65CF, 0C47214A73F6CEAEC1C96FE859C519E1 - 25: 3B965F16101777CF84C85AD864701BCDD617681B92944386AD, ECBE6B6BA145D10FE0D5042A5F04BB68 - 26: B573EB75A48CB8F56163A55DFB870017E06940D799ECCECE7C2C, 63A7C16D33F6ECA72B2B33C6FFF4F13D - 27: 47A3A96928BC9B28E22C3AF1999A30E271806BD3E6C8FAA4D82D62, 25E319011BA2F72BF7447C8EB36BBD01 - 28: 0E873D38B34A0857FB82BF278AE07AEF9A4B378A8300CDD96C5BDE34, 6045114D75AE7681C91E5BC508E2398B - 29: FF33B9683538014DCF4F7D78CF7126FB43448BF9883D69B824019B05FB, 28AD47D363A7F9A4653C6685F90C2971 - 30: 58005BF96E194411DF808DB3A6D405CA241986486160313AD092026A0A54, 7D8A8C8E8AB6ACE7312D82146219F37B - 31: 20C3DFE512F4EC1F17973BBB164E9F1B77CC3EB37B486119614764F4C7D0E2, 57CEB0625D34AD40935B03C54A1B8779 - 32: 913F8D366D4C2AC10ACB3196CCBDB5F436CFA92377045EB3A1C066F6ED7DE0E9, F48C8BB647E719049DB38C39EF779CE2 - diff --git a/src/libtomcrypt/notes/cipher_tv.txt b/src/libtomcrypt/notes/cipher_tv.txt deleted file mode 100644 index 1bd799f820..0000000000 --- a/src/libtomcrypt/notes/cipher_tv.txt +++ /dev/null @@ -1,2339 +0,0 @@ -Cipher Test Vectors - -These are test encryptions with key of nn bytes '00 01 02 03 .. (nn-1)' and original PT of the same style. -The output of step N is used as the key and plaintext for step N+1 (key bytes repeated as required to fill the key) - -Cipher: aes -Key Size: 16 bytes - 0: 0A940BB5416EF045F1C39458C653EA5A - 1: 2B20AF92A928562CF645B1B824F2E6D9 - 2: FC29C3356937ECC3159D8D6EF5E883A1 - 3: 4C07B5A2EF31A3229C87AB2E4DE88602 - 4: 93AFA1147E793FFCC3D852695A62D008 - 5: D4BCC317DC9AFE0E6C7AD1E76F79DBE9 - 6: FEDB3371F3C65162AFCCDC6D18C79A65 - 7: 4AF2A76F93F07C14161C16B5C176E439 - 8: 00A1A596AF7CF44FD12981FA12CB1515 - 9: 8013D7006AB38AEBD40D0DC10328751C -10: 81A077F3A262FA4D00D98EE4D1BEC390 -11: 0CCBC99A3135F26D2BE824D633C0366F -12: CDBB5568610AD428706408B64DB66E50 -13: CE94461EB0D57C8DB6AEB2BC8E8CE1D2 -14: 06F14868F4298979462595C0FBF33F5A -15: FE22A7097513246074B7C8DFD57D32B2 -16: 0F2D936610F6D9E32C0E624568BB8E6F -17: F32BCD92B563D475E98322E5850AC277 -18: 6E6FCB72930D81469F9E05B20FD406C0 -19: 42FF674CBA6C19C4AD84D42816173099 -20: 41C12474A49B6B2B5E7D38E03A4DD4E0 -21: F9E234E3CE3FCED184C775B6140AD733 -22: 7EB5CC6B183D8B3EB4FBA4717CD8838A -23: CB6C5D78F9721E5BF8E980F0EDCAD4AF -24: B3F20EF6C26FD9301576D82DA6D50809 -25: F9375037377D86599FB4F241166C43E9 -26: 98BAF9AB7402479C2DA356F5DAE35D5F -27: 58D1A8E0DC3BC53FD995BB0F60F25FE7 -28: 0A75C0D22D2627C97BA2A7344B9B8C74 -29: 88C299B2F8C9EDAF86A301BBF534BDA7 -30: 755E3A17420281F2C619588A6B521FF9 -31: 0E540DD25C0C147461146E11F832A63D -32: DC5B58691C6BA5B243036A41301BD7D1 -33: E9299A7336C2D8A51D6C7E2BD1B8F054 -34: 78CA6F682FC649DB289DD62D28D3A22D -35: 98D96EDA081DE416083650B22BD3869D -36: E747DE96D122CE1EF6F89BDE0FAE75FF -37: E48DDF2EDDEB54C861A1E42F5B649EEE -38: C650C2CF1E903B7F9C8536A2446CA762 -39: CF0BCDCE0F1FE7EB40016C1231FB2962 -40: 37B1C8BE3812147E0D5D115A797663EF -41: 45DD8184581049C4B28FBC0809690C5D -42: 11B0D889F96E677EEC2E934E9F7F5398 -43: CEC30BC1128A96CD506E406B5ADFAE19 -44: DE67D5439BF83D5338D53F362FCF79B6 -45: 724FBB2D95CBEABC568AA44941D9B6E5 -46: C63F480DA3C73B2A661F1FBC3E4D1F89 -47: 225CD18789D18FF09C982EF38AEF0AAF -48: B493DEC7E3D11911DEF8788102453670 -49: 23E0B12A67DF025CB77CBDF9E295FCAF - -Key Size: 24 bytes - 0: 0060BFFE46834BB8DA5CF9A61FF220AE - 1: 597FA00D03EDDC81C2575B4DD6B6AEFD - 2: 4881E4EF69005DCB9110BA327CAC8460 - 3: FC4A968AF65FCFF45E4698455918673D - 4: 3079D7B27A3DA5C0805A61CC37109EE0 - 5: 9B3F2C7C35806276E2C53826EC1B3C84 - 6: FCDFCB1FD9FCF1B63E1AB6737FC154E8 - 7: 4A8012AFD410D29CE2CEE0FD195EF9DA - 8: 9F4201C4174C71A3AEF8FD6822197D67 - 9: DE3E5E98DA60E895389A1C17E3D50DA1 -10: 20C9064A076C01D1BC121A5A2A1F913C -11: BA41A36CD24B515545B8B464B244E5BE -12: 2CC1DE9DBCAC45269C6DBBC9203095F4 -13: 2ED2499CFEB30203E6305B3E1C329C4D -14: FD709FC0AB48B204C95B74AD189C8832 -15: 7ED298B472C53A4CB7A3BAE588805E86 -16: CB0C6FE2BA76901F9EDE752634DCC31D -17: 6C5CA6EFCF7101881507AB8770ACF1DE -18: DEC3C5209E98BBFAA469C5FE6C02A674 -19: CFAC040C1198C8264679CACEAA7E9DE7 -20: EF990992EBA8ECA7E5F95E3B9D69D3A4 -21: 8FC1B640EB55A96D08D83D1184B77769 -22: E1F3DFB9D055BCB2D6CED6DCB8361BFB -23: 6621F47057706F2A079819DBC0197B9C -24: 882611AC68778CBD6A46FB5DD4611A37 -25: F35E1367A283CC641FBCE26512A8F2F1 -26: 5A4A71F69056CFBAB67DDA777F5CD945 -27: C446F2BFAD060A9E9E17F71B05ADABD0 -28: 1F0E50F71A67FAA7D169A7A1017FFD65 -29: A6A38588848915509451A2354D2AAC8E -30: 4C887574F2C5DB00ED4FBAF814A70302 -31: 1B642944162A049CCA9FD0284D7AB4C3 -32: 431BD9293C5BFD12F948C255C838880B -33: 32CD23A30039AE2FB80B804B905362B1 -34: EBB30E07E7517580A645CD1B5F664182 -35: 292F2BB28BB172620B05C7621BA347D6 -36: 46C06E1223F392D57B98EFCF4C832C18 -37: 451DFBAD2AA92080204F85432236A42C -38: 768D6206D2B3DD1B9C26FAA5977A6477 -39: 3705F9CEBFE8F91ECE07F84578C05494 -40: 085EB0DCF360F5403FF1E7402A0F7A03 -41: 2A0D56F2E7C7FCE3095F511BDE4AD9A2 -42: A8AB2F3643A61AF164F99FEFAE2CE1B4 -43: E73FD4B1FAE0E5E6A6A31CCC2AF96386 -44: 578E84FD1AA16FF350374E4FD5FDD529 -45: EEAE301DD57084801DB01F8B9C4036CE -46: 1C44A93B404298327857F71962E0604C -47: B5F64CD5835C85A68DC23E26D4B8FF80 -48: 6C6F97850A87088AF195D0500B3F5D78 -49: 0BAB3A60A25CD1A750C2C443AA01C57A - -Key Size: 32 bytes - 0: 5A6E045708FB7196F02E553D02C3A692 - 1: 5F7229D6AACF0DAFE3B518C0D4ADBAB4 - 2: 96477F47C0A6F482AC4036D2C60FAAD8 - 3: 7F791D54914F12E9F0D92F4416EFBEC0 - 4: 87DDB19415BEDC42BD361FE380553C5A - 5: 8EDB2A09DC8731DB76D9F67A03AC4D9E - 6: 269A7C08C28D5E4D9355DDBA161F862E - 7: 042A3397BA5029C443DD76755008DB2A - 8: 469C82A94BC5F7B2DF57F0CE1716EE74 - 9: 5A84A93077FA19146078310035F4B7E4 -10: 28CAF1C0D811F86CFD3C5EFC30DF79F9 -11: 05B575D06C2D593B708F7C695CE97571 -12: B7E8CACF0A0BD7F2F5DA0B09CC8B8AEC -13: 0ADDE90F66F1BCF38CEC63EFBF9DBD46 -14: 9BF99E7F5B8F176DD686AF017D5196E2 -15: ABC189EE80D4A4588B3D54DDACCD9778 -16: A57405378580B1E8A8D877791300374C -17: D1EF03F72FAB3DB68022FC60A2CEC13D -18: 3D2406231BA17FF7CC973C5E203872DF -19: C3E07233BD101502953D6186001838E4 -20: DC281C0CE02A83098C80D6C9463F3449 -21: A923023D2390B2230FCE9217776AAAFC -22: 92E28E69009959FB84046C5ED1B64D1A -23: CEF8F684EC64A31C651280CDC942DFC2 -24: 5A954684B22691F9CFC60442A654EF61 -25: 56A38A0D93188BAA50DFAF2CB799A76C -26: 54503340C5DE26679AA5F35215DE85EA -27: E74BFAF64946DFD699583FF9C47A1EAF -28: 01F234F9868B085E9B1A2EC84738E2DB -29: BBCA3DAEAB24EF25BC7B623F4D9FD680 -30: 3956C880F7F7D94ABC259D3D86157F27 -31: 4672C2149054C839C537BDA1F5BBF8F4 -32: CF1E9ACBEB391062593BD88C7948F64D -33: CA5B4E867AE9D8BA2D4416C908EB99F1 -34: 36666180C768636CF1708CC5C85A6875 -35: 53E396D2755218675494C7AA515A2310 -36: C2B7D31A59A602A65E155F80353DB83D -37: 0EBCE19FF6FC03E327A2602F858D835E -38: E47CC2A5E6C7FEF185806E2CFB304D91 -39: D61F15FF75E0F523FA3872132A09AF42 -40: DCC25495052980986AE30756BA0417DA -41: 451BF5B7C1F1AED9F3D5E18A391EA4DA -42: 1B6B105C580083D23F3A8EACE41B7984 -43: 8C2F86CD6C86B67C9EBDCAFC5720E4F8 -44: 41360BDB3E4C6836BE0D15B659CEC5AA -45: F972104AD851BAE0AD963817A3F03F58 -46: 396095F7C102B5A238110DD3D6D4ADFF -47: F58391AEB9A5D8BB32A3055B37556E81 -48: A23789B146CE89C876F3C331901261D8 -49: 2684AF345C4B13FA154E93A3E2CD2A90 - - -Cipher: blowfish -Key Size: 8 bytes - 0: 84BF44A1442B8217 - 1: 3981205BDD22C01E - 2: 0ACC5CCBA118CD07 - 3: DF76980D5E089145 - 4: A8503E8D849C599D - 5: 5E56574687038F5F - 6: D63296B036996F50 - 7: FD2FD7A0669A9E7A - 8: BC6583720A962585 - 9: 4B38C2856256103E -10: 48A4FA354DB3A8A6 -11: EF97C32734BE2A10 -12: A7467E9C729F8123 -13: 04D2507F9C4B5854 -14: 57F76A4D406B22D1 -15: ED0A3B26D842C8F2 -16: 047CB457E9730CD1 -17: 9F13BB1A97BF5E2F -18: 628CA4F77161C95A -19: 37C7D8EF718DFD50 -20: 2C9A9C655B839B1E -21: AB222D66579DBE0D -22: 57950CDEAD6FAE88 -23: 67AAB3669431E403 -24: 6B35C87144F6B748 -25: 94C2E8A1DBC963C2 -26: ECD68F56EED1F78E -27: 2E7BE0B866B1D3C7 -28: 6671DCDCB3D8EED4 -29: 8ACBE7A2F77FBB35 -30: 0BF0AC4EAE284F93 -31: 29928AE5DC8A57C6 -32: 84E48C27E21264DF -33: 4EF0E943E4F48ED3 -34: DA155BEFBFFD2638 -35: 611EC83E0931FFBE -36: 3BDDEC15BC543A92 -37: D7B9564BBAEE19FC -38: DE44907E9F0A1F11 -39: C8638C0594D13614 -40: 9E67F1B15418BF14 -41: EDF531A083F72852 -42: 7E5F8F9A72890BB3 -43: 2A0B060E3EDDE9C3 -44: 9B4B0F6FE6511106 -45: 328658F222C7FCE4 -46: F6F1B50B4F9F9C93 -47: A620519E69952F5E -48: 24DA24DFE96AD818 -49: 226C43435FBDA34A - -Key Size: 32 bytes - 0: 46CDCC4D4D14BA2E - 1: C079641BD6584E5A - 2: 38828DF8B4C4920C - 3: B4ABCF6B78A721F3 - 4: 8E7E2914CBBA708C - 5: C0EBE7002C888495 - 6: C60F404DE7CF9B78 - 7: B29E843E1771EF26 - 8: 983033386CA6A09B - 9: 76F1F89AFDCF7130 -10: BED4E2114F4376FA -11: 879A2B9D19AFAB87 -12: 366201BC87532AE5 -13: 6F409580FA907A64 -14: F7A202F00A38863E -15: 98B0A9C79FFC27B1 -16: 1CB68D9BBF8A1A8A -17: C21A2C54E5471D23 -18: 76A81C3DFC149934 -19: C7A0627412FC323A -20: A034684D7058E7A6 -21: AC87722F27029BC2 -22: 36A6C2AF10245E3E -23: 1F85B90D11217EBE -24: 9C2A0C383A4AB7D5 -25: 11D5C689039CA179 -26: B0B38C7077E1450B -27: C59C7DCCC3B8A1BB -28: 9BC539F29208AC24 -29: 8546F17C77C60C05 -30: B189C3E92AF53844 -31: 3C7689163B8D2776 -32: 6AFEB9A0671156A8 -33: 05514E39F2990008 -34: C941E31A2A1F42BF -35: 87C3777C74A730A0 -36: 2861667755C8B727 -37: AF75A0312433B151 -38: F76939331E9C9792 -39: 819FF8C81FC7C8DC -40: 31E7B07EB03D170D -41: 696E5EC1A741170E -42: 6C5BF0E0BA48FEC3 -43: 6D751BCCDC475797 -44: BB5A91D0CA7E60F4 -45: 7F7EC0531C88B14C -46: 9F302392529B70E8 -47: CAC9A1A88F09AC1D -48: 39D56A652E02D5B0 -49: 13641D42BC126517 - -Key Size: 56 bytes - 0: 373C66BBA50EB9CC - 1: A4E8C602AE3A2CEB - 2: A59F08BA78502F32 - 3: D0D4968015F4E4FF - 4: 0D3C2F291E6C2EE0 - 5: 3F99F5DADAD5FD2C - 6: 5BA41EC1A506396D - 7: 0BDE3B5B50591D35 - 8: 5C4A6AEFA69A115D - 9: ADABFE96D6D159E8 -10: F97F0B9C88ACD5C0 -11: 8882A163F0F02BB2 -12: F00556C9F5A56A32 -13: 257615BEC96CC228 -14: D58DAEC547DD8B89 -15: E677F4953EC44097 -16: 20156D066DC37000 -17: 6F18E01C6FDF947E -18: C8DFF24F12621237 -19: 032F91C5119AE308 -20: 394194AD8BC1E5CF -21: 6F24E937F3925581 -22: 086A4510D95759F3 -23: 073204BADF0EE942 -24: 5BC8B8E402D90F43 -25: A10B7E9D01DD3809 -26: 22C0B183AFFDA506 -27: 216306AE6DDBAF3F -28: E275E1F52430A1FD -29: C3BDB49D588D31BB -30: B860818C5923B688 -31: BE1BC7A444B0E141 -32: E4C4B67900DBC8DB -33: 36D7B7ECB6679A9C -34: C1EAD201EE34BEF7 -35: 9ABBC877CE825B14 -36: 3B211121C0C3C09A -37: BE3B34FF2E83F5A7 -38: 46C2B3E628A53EAD -39: B7E7DDE16C7DFF62 -40: 3C9A14C4226EBCC5 -41: C5FD46242DB29704 -42: D45A96723FF62201 -43: BB015D10878CF70D -44: 71DB021BE398D41A -45: 06F52D237F06C260 -46: 3552F47E8CCFC73F -47: 769E33828AD5D88E -48: 659861DDF080AA67 -49: CF7A13782F317342 - - -Cipher: xtea -Key Size: 16 bytes - 0: FFC52D10A010010B - 1: 9CFB2B659387BC37 - 2: 7067D153B259E0D6 - 3: 0A1769C085DD67A9 - 4: A9D781A1A7B4B292 - 5: 6FEF8300DF395062 - 6: A67B66CA99B9121C - 7: 006E657E1DAD46D3 - 8: 2D63322467438A5B - 9: 4F67A826126BE01D -10: 852C6FD597EBAB00 -11: F8DD14F59FF44A20 -12: CD4DC4E92B5CD40B -13: 802B89A3EFB75810 -14: CCA7D920F69A5491 -15: 0DFF98CA4F71CA0E -16: 80118F2AE4E83DE8 -17: CD6935285D45D83C -18: 47B4613483889187 -19: 87F3F1975B8618E3 -20: 49BF15EF40C72DBA -21: F850822AD58AD1CC -22: 9701AD2EF51FD705 -23: 705AE7F6FD60420B -24: E885CC84A9866B28 -25: 93E0D712D27E4E22 -26: 8C9CE43E517D3324 -27: 31004841AF51FB0E -28: B250BEBF0E58457C -29: 78290B6D83D442E9 -30: 3EC72388709CC6E2 -31: 099FB875AB5CA6EA -32: B15E20B58F5E8DD0 -33: A41511E198E0B1E7 -34: B8B5CDD9607B6B40 -35: BEF9624E922DB8AC -36: AF198FCD314D8DD4 -37: 1A37E433C261EF9D -38: AB7895A2E9D41EE4 -39: 4C95BE8D34A7D75B -40: 0D90A8EB03F2852E -41: 9AAD1D630D835C67 -42: 6AD88003661B2C5E -43: 4FA7E2CC53EBA728 -44: 862245D794441522 -45: FAB262C13D245B3E -46: C0A29AA315A5721E -47: F98617BBEFA6AD6A -48: 6F84EAB462F10F36 -49: 30850051303CDB96 - - -Cipher: rc5 -Key Size: 8 bytes - 0: 04F6B9B18E6828C1 - 1: BEA50D165E50EA04 - 2: 6F3728FE19F09B03 - 3: C682C26278B372FE - 4: 78BCC81E144E1B0F - 5: B62775716366450F - 6: 5BC49690F97CBCFC - 7: 359414E9EACDE379 - 8: D3331D8ECBF684FF - 9: 13129FB10EAFC82E -10: 7F29218421CC4B5A -11: FC225A4F31A75162 -12: 29BF8BFDA8A15D37 -13: 6854AC5BD98EEE95 -14: DEF05AB6D102E992 -15: 317C3EA6F0600016 -16: D6F3658B2E80B77F -17: 7C1DF7ED6C92C23D -18: F8665145BAFE28C5 -19: 9D8059C34B79F0EF -20: DC8D1617D3EBC7DB -21: 2D8FF59FCA19BE6C -22: 5C6956743715EA13 -23: 91160BE1F4F3D4A0 -24: 1D482C2359EC93F5 -25: 9C21D1A3755A7251 -26: E48D1BB926D51E63 -27: 08A054946263F617 -28: 9C900BA37199B7C7 -29: 0C6C58743EC83082 -30: B24197EEB5603D3D -31: CF5B735F8A492E49 -32: 337C504698BBE553 -33: 3A2BCCC88BE9ED51 -34: F3E9241743203ABF -35: B67BCC625815C585 -36: F8E96E4EEBC2566C -37: E27D162006C67C8D -38: 08CE8C1A5E3C169A -39: 0CF8AD04125EFCD8 -40: 6712F9F044864FAA -41: 0FD465AFFD64085E -42: 6BA8C82B3974391F -43: A5FFF24CE9659357 -44: 0947F81E1EB4970E -45: DEA966CA50243067 -46: 1F1BE4866F48E39F -47: 03A7D7CE793F52C7 -48: A1FADE3F801B414A -49: DE7DA6D14A50E305 - -Key Size: 68 bytes - 0: C8704ABBDA9624EE - 1: C719C645E301FC16 - 2: 32D82553B0E35EF8 - 3: C63C77EE6C2A6E36 - 4: F84EDA1E77ECB5F0 - 5: 382C1E72AA1FD1BC - 6: 6B00939F535F9C83 - 7: 3CE0825AE10C2B0E - 8: 1F9E7738602BDD0A - 9: 9273E7933CED0B0A -10: 4CAB45EEA45C32DC -11: FD0208C6A89FB519 -12: 520D8E6912E9551D -13: 5B88684544868BD5 -14: 32AA2A8EE58135D4 -15: 281045702DD38766 -16: 26D68E073C996747 -17: 23DFB9E174D86192 -18: E32FD5AF5101E45C -19: 3DEFB679670A143C -20: E616394D859BFE94 -21: 217B9BE0ED47DDAD -22: 4F7901A5620EA484 -23: 6654C042783F5737 -24: 752AA74BACF9BE65 -25: 2FAEBEB8B325F89B -26: 6FEA020B058F32CB -27: 2A32682A36691665 -28: 338C8AB628A30105 -29: DFAE9DD082DFE38C -30: 51B451C29DBA19C4 -31: A2993DA9B8C1D5FD -32: 24D92FA331E2F93A -33: 821A961C0524C89D -34: A07BF305EE8964D9 -35: 981652361262C5CE -36: 3DD770C3761B695B -37: F36359AFE1C8A07C -38: BEBC629B8938F4A3 -39: 2E31DC53F77898B3 -40: 52E4104C4E8E6901 -41: 75C912DA610525EA -42: 2F280F70963F82DE -43: D7E3FCCA75AEE5DF -44: 8EBC7E825A14A2BB -45: C1138701F64187DB -46: 1294E21ED2550DFA -47: 577820D772BE2C8E -48: 48CE93C46BFD33CD -49: 3B50D264382E03BC - -Key Size: 128 bytes - 0: 236CF0A207576E8E - 1: AC12D8F1AE55F057 - 2: CEC4230F747B547A - 3: 61EA1B510D033B26 - 4: E064F51998E20804 - 5: 6247797DF02BAEF7 - 6: D25A766244063A7F - 7: 2C2B3FDDA0E07067 - 8: 04EED646C3F6FF90 - 9: 05487E7702865E4A -10: 6C0A92AC23ED07C5 -11: 6E54E768C797F797 -12: A7C53BF7B252A884 -13: 731052795E12C80B -14: 3E4DAD15A826C43D -15: 10B1191B4012C2A0 -16: ADD244B33AEAEF7E -17: F6CC7B5F0885E056 -18: E23489F3B7BE438E -19: B0C27661692FDE4C -20: E81CE014DA769F07 -21: 7A8BE0D2D52623A8 -22: 082F444E00D5E127 -23: AE42F684ADD1DAC7 -24: 9061BA686F76A450 -25: 9BEB7141B8F6F5F0 -26: 38CBA9933AEF85E7 -27: C66F4245901CB341 -28: 8659AA47E6B06BC3 -29: 357AB20DCE2DDA3E -30: 236689C2F36976D9 -31: 331EFD7D5CF7AD50 -32: C373526C2D44DB80 -33: 79F7ACBA770F5C92 -34: 64325C5A67F364F6 -35: DF2F720829FF1694 -36: 9EE17F47ED487BC6 -37: C41067896AF4CFC5 -38: 5776E1E5FBE59933 -39: 07A05B1508B739E0 -40: B19EF72A65B3C035 -41: F8BF5FF4095C0173 -42: 7F1226C6CA7B4072 -43: 8A6C8F26A97DD33B -44: 62948A9A627E98AD -45: 9EC58E3F8A477D21 -46: A656F285AE0684B4 -47: 8489690681A53EE5 -48: 940915E733721837 -49: 1221956BCEE0143B - - -Cipher: rc6 -Key Size: 8 bytes - 0: 6533F7041D69B9B883A5305180A85520 - 1: 496683D6356950E8F4AF4582630BE46C - 2: CA421828FCFCEF2F042F6D81F14CBE76 - 3: 92DB67F2F057858FC806E071D239F245 - 4: 203CDFE0C36434AEDDBE2DA68ADC5EF0 - 5: 8EB23BDBD58A279C1F3BF75199FC9E34 - 6: 8FA8BB4E772E09DD1EFBE03090E77FF8 - 7: 2018803BFD91D157AE20C6E8FF1894B0 - 8: 267319634294F0684AFA7B26EB612B3C - 9: 108745E1F2E80864D9043582CD5550EE -10: E4F9EFE5A6C426BB719EA17174890D0A -11: EFFD4CAE649740B3309692AA19ACA227 -12: EB909E6D0789F649538E7EA1686FC0F9 -13: 0216851E23EDAE52D9964939DA0A7493 -14: D6A9CD3429D1679D26A9599EBDE5409A -15: 5DCDECA6E89A7F0EB40649EFDE6420AF -16: B74FD556B06C07BA8D9E517348CC66CC -17: 9A22CB5B73EF1DDE68A5AEF1B1510ECC -18: 77F78557143E08A7449A75A13098FEF8 -19: 548FE6700BD17D0AE247B07C2F1AB0E7 -20: B7DFD8CB428A36733BBE9A51CF45C072 -21: E7E8B7AA2D93E3DE99C543A473CC6760 -22: 3FA5821248B0F0AEB5CF00EEF7958F5E -23: 0A655AC6C51DB33849BCDA72DAE106F1 -24: 9EE93EAB01E1A1DC57B698C266469481 -25: A7D398720E0ABA2D0D143D8306FD5AC8 -26: 98A46C94125BD2E5600BD26EEA420F2A -27: F4789EDC3C50BC4186816F14A86403D1 -28: F8AFBA8EC652EFDC3AF5EA5CFE143E16 -29: CEEEBD4B6724A30E1859A5B4EF9B2B3D -30: 766715B4C4FA7CD4B365A2A67C79E48A -31: 92C5EB7BE61155D79DE0A6F55715DA22 -32: 42CF0C9B2BAACB085CB1603688037D0F -33: 6C4BE816F7B573CCFA8BB6E399EEB17F -34: B6D7E606CC99D267ECCFDBC006878691 -35: 2048B58B74F9A721B2E33D2EB86F5991 -36: 3E458C1015ECB08CC7B8980135E71893 -37: E4E28A032CF2F3C8262CD4BBE7A4CDF8 -38: 701EAA449AD9E5AF81DF3F436AB25620 -39: D1C3FB7C16F5249503EB389A692B112F -40: 7012790DB65526DC87F9A2BF0FBB5664 -41: B782A3104FFE65DDB340F713ACFFE25B -42: A155F033E4536FB1176EBDF9EB5FEC4C -43: 8898BCC7A008127014850D5529327352 -44: 8F4B3BE150FAA0371CDE69891E52A3C9 -45: D371C8283F68DE983C98D98A7563B934 -46: DEB679915E8F0D0B65B37918BE4596F7 -47: 84D74F7FA199304A47BB37B8AF893CF0 -48: 5367B0187496539F6DF6CCE0965B376D -49: 4B9C6011D43CF2D8FAFA2E7105D85024 - -Key Size: 68 bytes - 0: 6BBF763FF30876A4BBB68A7E7E290770 - 1: 59852279E82E98B8B680E5CEE12BB99A - 2: F96989565E5B163EA483FF74ACA22DC9 - 3: 221F7A410F5AD73C1C67DEBA99683E0A - 4: 55F058D1D9B8C372E2A28AB6E953A851 - 5: 24A8F7E07620A55D69CC3981B92E5CCE - 6: F4D9DA95BF66FE28BA3A84E77E62822D - 7: EE7EAC2BD34DDE6F83E6D4F23C0A49D3 - 8: 4218AA697FB7C5D897E66EB00A9FB489 - 9: 55A8CDF8608A3B1A6B14275E2258A096 -10: 18D50743982F5C8A5C528BDB5896CDFC -11: 391403B889F0CEE865893EBE9F1BF90A -12: F3CA9C30C163C510432D3207DB6967EA -13: B14B6574DF53257BE4508DBE78843B47 -14: F52F1E5FD6FB19C1F5466276F9C33A97 -15: 9D5AABA86E8B65E4F633B6EDE17516E8 -16: 9038CF746F722DA1A0C34461359FD378 -17: 398E317E9CC074C2293B59598F72EA64 -18: 9D75D897D487DD2B5BC534B4B223ADD1 -19: 6C6DFF734BFB9700EDD6B3CFC6E311F7 -20: E27591407CA9771F227A5B6B3A77C928 -21: 1618F15FFA8E2692A3B3EF8EB6151427 -22: FA426AC6161F31F0D63FC9DA97A6A393 -23: 1281869E9959DED2CF75F50DA7FAB66A -24: E8BF17E4B76D6DC5C1D07DC80970665A -25: 9A869B6C5EEF391C7E7C4585FFD9FF3A -26: 59564F799AFC984D39A8168D1A30C8C8 -27: 1D3927AA2E2C48E6CFEF88D04ADD30DE -28: 39BF89DE1365DF15A8ABA86856ED074B -29: 0CCC4A4DEB36A000E7EB271F5EE54543 -30: 26476623D35A514B8833D868426A2BE9 -31: C3C85993EA15AB2D056D670707851802 -32: BF5F7ED18E1320BAD536DCEDEE1A9AF7 -33: 337BDC5FF0F7AD44E6A3F5D6712BD5DF -34: 7DBA76B3D9C818D0CE1A530BC79E77D2 -35: 20DF55E617CD2598F18534DA7A22B555 -36: B0A0C1BDF9E81B4F07F47D31A9CC8408 -37: CB9586F4B27F759B9B9C6C7DB01D26A8 -38: 1E79A2894906A64098AC43799CEFED38 -39: 82FA120F237EB0B3A1F8B52379B8346F -40: 3DB9848603E3B1134585E5C9001D119B -41: A750875900E244996887EC995131D151 -42: 12133748D3745F77C161470A921F73BD -43: A265C351694574B44517FDAD8816133F -44: 5E50CC8281C2A69FD376250D99620DD3 -45: 443ABBC1AD5605A0BA05B8E6ABA5D2A1 -46: 73546A87B39C54F0639EBEC118ADA007 -47: 380244C822817453C75405B727D67C4B -48: 73F1E23DFF05EFAB5D39E503031C4165 -49: 8030071491490590A8913AE4B5D082CC - -Key Size: 128 bytes - 0: 24B06811BD97AE9512B3799E3189DCD3 - 1: 92DBA6269E880F8D8A09143D792A46DE - 2: F956F459C333DFBA4C6A309C613DD661 - 3: C31488EA551CC0FC8885F6817CA696FF - 4: F59634FE907F9DF9467BD1059F82DAAC - 5: 051AF11DD2FCF742169B58A786128CE7 - 6: 87326A3A4A98CC15B23DFBFFC5AE16D3 - 7: 58FCDE2E88A79D5682729ADB4D971142 - 8: EAA787D68EB68CA79CCC6BFAC3BE9247 - 9: 8BCF6980AEED36AF38B68A50DD454AF0 -10: 4B0E31AE48E903DFF52939800BB16DC0 -11: 19766AA929B40840715D53D9170C986F -12: F9CAEB36F03CE7B3BB363AC7EB3ACF99 -13: C8E34A6BDEDA4DB836DF3D863D02A6EB -14: 370547CEA441FDCBAFD281A8653BE2D4 -15: 77E0F33343158A8C3AC3C6D14FD69431 -16: 7A985B1368F842C644538C654D081FD3 -17: 60E0C8933F43D40003030196E8E881AC -18: 3473474B58AE6BC7582ADD7AE24711B7 -19: 75936C8D46F6D5AF5C7EE0E8DCEB5AB2 -20: 4A04F619FB0E05F7B07C43F4B9F2E134 -21: FD53A5A7F4F0B9D933E38D9F07AC88CD -22: F62EE43B20F582AC77879AD7E66FCCAC -23: 4436AD771624896683D7D29E8879F89F -24: F88F3C0EF2B9FD0CA997BEF17787DA2F -25: FF5576F42CE9A0665A1D6A2420A691D0 -26: C077D6AEBA65B61CD1A9AAE17FCFC04D -27: 84D0D7C52D6DB3979BC3F6F34456CB91 -28: F163121D9EB7569CA7DE3B7619E0BE51 -29: 727D23FB43215467B57DC67A8890CF26 -30: 60BA577F3C6627267D7B33E693FB7BCB -31: 82C66B23586CCEA2AE1480B469B3F3C3 -32: A65092726D6CF2F77CE00648E2D117B0 -33: EC30662CBA891A3380B846DA6C64024E -34: CE1B253FBCE36B217ED1EFBAAAD2E783 -35: 9D963CD5E65A9ECD2DAEE93B6C6C1178 -36: 1B8E3D07E7BD4BB4248B6A7DF8935980 -37: DBC3FD5888B80C4CEFC6C5E170E271CE -38: 307CA8CDDFE5DA152B66E10346BB2E1C -39: 8858250F933650D978B403A4504EA581 -40: F06005FA6E56E0C0D96988A3FAD359FC -41: 816CBE37FDE3719804DBFD093E3FD87D -42: 4878C07B127D696214393DDC66F5EB36 -43: EFBA6045243050C0D8D82046B17008E8 -44: 3D30C3E5892D32BA3C685DC5B186E959 -45: D4A4C41F0E6687E4021FB90D7A8A9F81 -46: FE1057B2013308C4CE839B4186F43B4C -47: D7333AC65F66ED6D4BB8D069E265020F -48: 33C262F58BF0D91DF2047E799BAA5F37 -49: B960A18764D7A6E17FA1F88487EFF192 - - -Cipher: safer+ -Key Size: 16 bytes - 0: 7D42607880B424C27E5A73A34FECE686 - 1: 1A99D469F1946EA46523083FBAA79CBB - 2: 831385E400FD681C8A30AAD9477F1ABB - 3: 5C1BB8F259CDEC2C1BE0B803C7D9447F - 4: C57C1CBB18D87FCF72A87B247392752D - 5: 1625183B0C595A33FE0E8AE0DCE40ADE - 6: 4AF3A9D6733DC4FFF3422AA5BE5ADC94 - 7: 853133894C87A23318DFAD2B247FBFF3 - 8: 8C7F68E01A8413D19B9A479246E54722 - 9: 8620898ECD3BF91A47CC54E6D9987FA7 -10: 33F12ABB7CC6A9041543A2073AEDFFA7 -11: A096E46F2834F79C096D0B655EDC9A63 -12: 3DD0D7824A87C9F5D8D25F5AF57E70B7 -13: 6B7C99E5CD29AC1C5A8D66AB460E5AD5 -14: 95A9F6009AB4DD2AC7E8E45F36D91E9C -15: 60CCEFC6630329C341782B17365995A2 -16: 0276C96A7B1191BC16C8A9C98468DB05 -17: 1F352CB77C21139C058837B8194E3E64 -18: 2DB8E340F58844705F217551782F6B4D -19: 34E99832E0722C5AE8F0CA1A50E9E7E2 -20: 7E1538DC10C1F56C3723A87BFD127743 -21: 36B9714A8ACDC8B8A17E85E2803A8C88 -22: 11848329B0DB9DC7768C07D95F0CF662 -23: 93ECEDEB4C6369AC56AF1F49345720A6 -24: A3ED7F9D17067C2650728E266B623124 -25: F33574590B435D1DDBBA925F0D0EA8AD -26: 87E542DBD40DCBD80C4AB52555C264C1 -27: 6D806991AB8E3604C8267AC1EBEC2E21 -28: 4B7333F87EBB46BB2A8ECD392C85A12B -29: 4FF49ACA62898F558AC065B66CAD0234 -30: 62DE7B2133B09544EDD0DF66DC4F5E2A -31: 82195B39FF7B8A85D7F0EE52D19E510F -32: 24FA56176A4F0B37F851CBAB176C9702 -33: 85FA9230D9B93CDCC0752FC738211703 -34: D441132032BDAC6715F4453CBC2434D8 -35: 438AB9BEA8A900368D84EF870EAF7E84 -36: 433BE5BFE1529BFA7C5688CFE3BD4DE5 -37: 2A79FB6F37AA08533445B8BEA5098EA2 -38: B9C986EE45D204B6A1CA152944912C9F -39: 8289C9F78760D02AA71873FD97E2ECB8 -40: 48B0D1244523165055BE9A5E95CF852E -41: 471E211E5E784C2AF476DB3CB555CF35 -42: F290CBEB1F1009D250F7B12E044B80C3 -43: 1B9796D80C3976FE3071B1C01154D42E -44: A80E21A1A1007B69E8BCAE728BBE6A92 -45: 652058EF0FAF8549424F998669660931 -46: 89418FB4740E9801F6DFFEDC593FA32E -47: 907561A69CFA117F167A52B88777D89C -48: EA2EB4B1EE739320F99894B476A8A51E -49: E627E64AAB6E2FF6B99643A7FBB84BFC - -Key Size: 24 bytes - 0: E8975F94A8B1392FBA78CBDDCC8E8F08 - 1: 708CEFB68A0281AEA424B3D4698D2F2B - 2: 21A0DE56545BC950FCE4DF209C96CE6F - 3: F2CA4103B703264D46CBC09E13D5B8EE - 4: 2892101077FEE427C434CCFBBAB598B5 - 5: C2F191CC5C681CBFC098B264C479B2AD - 6: 308C3B794C8A7971BBA96FE4C727F48E - 7: 8A4F9D4463B5DC4DD461ED0763CDAEA2 - 8: B7E1BBBE455AEDF18329A6EECD6E222C - 9: C80DAAE7FBDF56DE05A897FBDBB53DEC -10: 6A3D38758BF0390156F22F83C20F0262 -11: CA493DF771E37A93822D6117ED14B60C -12: 623012748826A08F3C59B71FF3D66327 -13: A283BCB126B9795D306B129035BCC2DC -14: 3790A6704BB0F119139A0264F7E8B2C8 -15: 9B369BBC095428EBD712517B2C4D06F0 -16: 0F488018162193ADB11E4C39CFDEE0DC -17: 8AFB7C6FD7D6DD64C2C77DA3A0D91EE2 -18: B8BEFA241BA339BF6F059464C533F9F0 -19: E76141C8CD54200FAB2F8C2B76AF5FEE -20: 80B4FE57851C0240D81E78DA8200F195 -21: 8BF1C690EF5FCE7ADC74E31C24F83F5E -22: D30C4F78703BDE91750E0E49FA0E8982 -23: 86C5D1E0B88EF0AF9B899850510000EB -24: FDE727442BCC0305A7B06E6EE179D836 -25: 0B4A719342F9226FA680796887A98FA5 -26: 980D4BE9AF3E3CF9D4558478D1DD03AB -27: 03ECD11992D3D5864B8D1987966BA544 -28: 8DBC2931D7D17657BF38E3931F486850 -29: 76AE069E39FA7308BBF507ABE35BC1E8 -30: 9541B59CE18EA255CDC06DFD3FFCD1C1 -31: 5A382748AE3641ABF6D9CA24A35B2002 -32: 9B7A49DCC2CFC5A6078AB41E6F62B4CD -33: 91B2EAC878E5628DBCC7C876B91B73D1 -34: 31125CFFC41A0D3528FB16BAE761C47A -35: 916D2A769DA002ADCA8C87F8241BB50D -36: 681C3F601EE5D82F9B040932F2FB4AEF -37: 6B6F32E5EAC2F424074C33F7C988D5FE -38: D15A5FDC2A4956DE61BA6E1C98867242 -39: 0747BCFE1B979E947EED5225FAFCA44F -40: 133B43C85CCBC360DF8649BBBD2EB45B -41: 052D943062A6D475D30100EA412C30EE -42: BD6401C591D585F4A82CDCF678679D5B -43: F95D1A5E338F56760C425D972D67B57B -44: 9B1569308608CA00BB1E2BC9E20289A7 -45: B6454C52C64F64D69F1D36D2D224A222 -46: 529B5B013AE3F37E38BE340D1D200A64 -47: 1B65904F177212AC8E9ED4D8DB287810 -48: CD5CAC56236E0B9A25A5D306F12D8C4B -49: 01DF7E1D0F5F7A5DAA0B379388425126 - -Key Size: 32 bytes - 0: 7FBC212996ECE9CA2C4D5BD88FA0B3D9 - 1: EA3D788C25CF3BE7F4101EDECF23455B - 2: BD0B98481366AE0869ABA11DB18D1E95 - 3: 53393E2B757C90489EB6B47F67837337 - 4: E1D350640CCA6C13648C3B57BE00B950 - 5: 951E1EF99E6DE72744A9D8D9EBFBA94E - 6: 433E4D4E64B41818097BD5E2EBA01D8E - 7: 8FCBD07E303B381B2935FB82CA0CBF13 - 8: CF46569005BD968B9310149E892B4D69 - 9: F1B672657C2657AD53BFFE2BA5DDE1D2 -10: 0035337210703240F9CF2F5A9184FDB7 -11: 773951841F77DCF8A6730109DEDF3E9A -12: E47DC0FB381DB86EBD208A0D649E7B03 -13: 0D9E34ADB257146EAB95AF14636301D2 -14: AB5D5C106E52AC7662C26F9F27F2CD55 -15: 6938F205DC23C3500B7723281E9F626F -16: 3CABD52558D7F418CAF6B41CEC334DAD -17: D2192F1E5AFC3B989C42C396B3764862 -18: 59D32E3A41141C6CAA2A8F44FD587D94 -19: 483CFECF65D71CB2994E1C12A1A7F907 -20: 8F086AD81B1FD5B13195EDB4DAB7DC73 -21: EFEB1328CE7AE6A63E7D8B3ECA9E12B9 -22: 362AAE308B3BBA588DBCFBB7197E693C -23: B817A136EB30CD127B5015A85A7B6E95 -24: 03796E7F244CC916BE02AF61E5FEC42F -25: 5854F2889CFF44B0688718C23B0A822D -26: 0F772AC6E37364AA7B844AEACB33F4A2 -27: B3E95F5195BA646DAF333AA89130451F -28: 911A32AF7CC44309B37D75E158A4AB18 -29: 232CFE228EB72A949616B307C2BEED15 -30: 7C8989F135B8DE6FD26C7792B8354F35 -31: E79231779BFB9F792BD179C0625280A8 -32: 015F6CCAE8A1275A2E836A207D8254EA -33: 4EB94709245CE1FBF7C6D9587FA92D40 -34: 63D82005320F974EFDC4C021FB73ABB5 -35: 0F15B2E8E389C2D59289D7DA41ABD07D -36: CEE7FBBF766540D4E39903D0494DB797 -37: FB564C18A15D53108C1954FCD3518FC1 -38: A67C5F4A4A95AF2BD8E4FC1182B2EEBB -39: 0D354E664C35B9364E4EE9DB8DE0CA76 -40: 3295826D52F3B980B50EFF3E9317F1CB -41: BC65592A9C0BADD84F363A175EE6BC54 -42: 58DE762ADA621FE2A7A6A83F68E93213 -43: AD774FC8402F7DDBB881B703EC836057 -44: F1C95AD5E004AF35AE315AE88A2577FA -45: 968775A2C3485875B024B008D96182EC -46: 623E736238B5800ACD9B67D76C84D236 -47: 1C5E9F65D43343D743E50C80D0E0F648 -48: A62E4A197E15CF90C2569DC38D9FC915 -49: 165B139BE483A71381B9A8E93D9473DA - - -Cipher: twofish -Key Size: 16 bytes - 0: 9FB63337151BE9C71306D159EA7AFAA4 - 1: 8CC5A931DEC29B4C7D85595D24FF8405 - 2: E867FC0E144FDEA24FEA88D22D8776EA - 3: B450A2969C67D93E1AE3A4093BA4C48F - 4: 7AEA41F9956149F336612E868E42B3C4 - 5: F201FBB730E6E58CF9E5AD1DC4844C4C - 6: 13D8869E66412C6C288B5D7F37F2D94A - 7: CD57DDDDB782C0A04C40E47D920799DC - 8: 65371C8ABC919EC09004A7D63D9302BF - 9: CC31DFD3B7DCCC86866CC79D45A89C3F -10: 541D548D311714EF8661BFA721568D16 -11: 269F3AA2D2D10DBD3DD3992BFEE23C05 -12: F86DA5D73AFBA94A9D592D02B5855D25 -13: EAD8D785B50E036437E39F3B27DB4657 -14: 2AD0A13C493B9F3EDD259E11A495B205 -15: C05F9D72AA384F05B28A3519AF218CA9 -16: D442072F588D38AC8B9D447762E9FCF3 -17: FDD3BFB91EFD127196FF9F19ADADBF28 -18: F56717661B424E41D7DE1CD13E21DF89 -19: 0F6C952D9BE6CA49B5147EFD44455A92 -20: 6C214935726364F2766BE7B4C2B64362 -21: 5D5316D7E057FF481CCC10C7452D1A17 -22: 56C78DBD802CC9B040446A3EFF3F12AC -23: A38CEADA8448DBE29C2D11DF2A487715 -24: CB2F786AB8063350F3FAE11EC8C65A5B -25: F5B7298B6F558E2C4FCC11744AD22653 -26: 01BF89C1B48C5F6918FC6BDC10B12A21 -27: A031F25AAFF294EE79220BC76E73E52E -28: 42C94B50E12499DA35F14BB6BB6E684D -29: FD68B6840DC9A271CDE2032EF0200295 -30: A9863C1B04B3FE3945D29966F67B87E2 -31: 6226D4CEEC1E8AEC1B7B3E13D80A83FF -32: 6100A71B1E3ABBBA48A9ED280DD1617E -33: 5CE93A26D4EFF0CC7DFA2DD43A511871 -34: 282D165BFBA0F7F229161BE533BFC4D9 -35: E6AC479970891392972B2845C949A068 -36: 4E4A887368F8443BE51FA7CD16CF0B87 -37: 121AFC81AA2750572B35D100BDC34DB5 -38: 7C41FA7E0A18A87E44BE488F331B35E0 -39: C8847D295E1F505C04E2F5CE2CBF5E00 -40: 4686EE8628BC1BBB92CE825F04B1D5E8 -41: 397DFACD19C283B3FC27D3FCBE952254 -42: 815B6C69608B5A379E3C9E67FB1BA15A -43: A73E72B912EB3AA4929E9EAF73A448BB -44: 5BC4E2C88512BCD55408CC5AEAD15A91 -45: EF20B2BF297456DED1F4AB7BE0747902 -46: 3D876135E19BB56B98050450C6B0FD06 -47: D68100E1BAD07B438786337C0957471D -48: CE85A91938049B5E21C983F7C45ECA3E -49: 9FACEFFB9D08BB65DDC34E3C575B8442 - -Key Size: 24 bytes - 0: 95ACCC625366547617F8BE4373D10CD7 - 1: 99AEB25CCE73B3796C351A19791ACD52 - 2: 56B9D6689830275C1A3E4266B3D56D53 - 3: 2F5F822E11F087BCB8A0F428414855A0 - 4: 65400F729990FE175AAA894BCFBB1A59 - 5: 947BA33D20194BBB0D4904023FB32FFB - 6: 116B0C6744D215AE98DEB1F9FF1D36C0 - 7: BA6964C101FA044ED06877E46D540850 - 8: A36B18526FA0004CF557C99A3AC1423A - 9: 573099674B8AFC2DD6424A2E4C581B89 -10: F46169CFE9496A2696A93EEB7EC561FB -11: 2C64BC052898F3F3A2B78F2591F2BF1E -12: E8A0D40B08585459199DD6ECC108A490 -13: 47927989BE5EB55B9A0F294C04FF035F -14: 54A3024E3AD86005A2C44E4B8BDBBEFB -15: D0AD51D1DADFAD7ED0EBCC756DBCDCC9 -16: 5DE698B7014C34AA6F0099CBB5937A20 -17: 9BA30F49470C6DB9632C5EDE34F8EE73 -18: 0BDF558A2AE9298288E60616442D3408 -19: 25F6DD23BA4E090E1CFFA6EE3487AFA7 -20: DAC5FB99E299D2672F79F0C38E177D83 -21: 58CB113430895C9890D96EA60E3DDC23 -22: 48A0771F0049B776A44AE8877B57EFFB -23: 2F12B26A4BF7065076417530CDEE14CC -24: AA6ADCB0176D5324C4C1FFD640D502EE -25: 384B52A66F4C7A70ED36091BC3FEA09C -26: 2AFE7ACF071C6B0FD69930A09D6DD5E5 -27: 9A2DB9A5E7712A5BFB095D2C09453CA3 -28: 716C0EF522A13EA05A48F16BAD3FD10A -29: 44AB46F3CCFD02BDD2C77A332293A4D9 -30: CE6AB27A0F60F410B1B3CACD9AB923A8 -31: 69EAFAFC171C55D1D90ED1C6E1F3A48F -32: 5EEEB0B7833121AD7D27BCFAF2D4F8ED -33: 47133445A4EBCC60E27B29FCC160FA75 -34: 9F1BFEB9715A20D5FA7BA3BFF1A27BBC -35: 516D4615F07756B4DBE7D37EBBF4684E -36: B88744E53073BDA0F1B115E3DB224E83 -37: 1B77C3D067BBE00420450BA5CD9A83CA -38: 94B87AC96F8CBFF36B01A68E0651E591 -39: 52ACE87A1A8E46655935536FB3701290 -40: B406BB632D5B7985400EC78D621C8801 -41: 20F9ABCBF97A9917EC6C5DE3CB2C925B -42: 539A8AF920833F9E81A20A6D10543176 -43: B79AFB8BB39B0351094F37C6EC93F8A9 -44: 5830BD21289FED3F95C3E3740AC6C5BF -45: 86C4AF5839ECB9860B175642ADA32895 -46: A6427E5E08CEA2A50B8426B063AEE189 -47: 2E872129B5BC5F535BCE2B81F013A103 -48: 2203EB9B2BF51FC2025549D0BF1924A7 -49: 6A5E383A4FC78F6E03B9B276F81195BE - -Key Size: 32 bytes - 0: 8EF0272C42DB838BCF7B07AF0EC30F38 - 1: 9F8801E94E41A7DC875665663BFA7912 - 2: EBE2CA6B45A0BEE83B54402E1A843A3B - 3: F6C5A1187AEF4B5A88E97E866CD757A1 - 4: B3E62CD473E53812EDF9ECE875F39F5B - 5: D8C38B1EC23264BB7C42B5589C1300B2 - 6: BE315EB75B944EC9E51F5EAE65F70BD2 - 7: D4275409941A44993037364886B60598 - 8: FC34F1D4E9C4A634C1349F6D4E9AB94E - 9: BE712387C59A40A8A35F854333A0302E -10: 1F1FE164834BABC71DBFDFCCA7D2B4B6 -11: BB2413CCB5347B5157651819E698D988 -12: 6EB5523A968ECE965D9AA4B975D7C2EF -13: B5DD49AB7E269F9D8516FB57EB47D57D -14: 74F5D81856F192D49A70B3743945BFC0 -15: 95437BB00D57CD88BD52DE0A66D934C6 -16: AE4804A975D67C6B6F99176F407AAA3C -17: 5E5B2FB9B2A028A5467B56F8BDBA6980 -18: 8C617FF1F9C50A36BE2EC19A629BA96B -19: E3401F7CBE177A1D224117894E7EA08A -20: F8451D9DD31A08BE828FA9AF39708921 -21: 5BE66DD577826804817B85A07BCEDE28 -22: E426227780943AA1A830B7E7D7F7CA0A -23: B39C7277C3A5CA21897563DBD8DD6D94 -24: FA9992385396F959841D1E0E68CCE00D -25: E1DE89B1DD5CC31685558A51CC731E6C -26: 64618455C46C6FF117F19FF300B3B557 -27: 882758C02B3C11D406A21012977D4BF8 -28: F948B62F8038D3A3AFB73041B2F263AE -29: AE3BF626020D2877052B90B31E70B8A4 -30: F1C6DBBC166985C9EC2E1A3A61BD8E75 -31: 82C343FA36B6D4E9E7AF6D0B7741FB09 -32: 0BFB756EC55AC63BEA71E4A8187C2B10 -33: F1941AD10BE60DAD3FBA33CB899B63A3 -34: 18236A39CD34743DE7B60B2575A9B204 -35: AA37FBC2525F74710D7561D316E8D90B -36: 413E0F72C2B349FE2691554F77162B5C -37: 5B9E6F98B2CA0F637E463BE4A6EFD39E -38: 1B4A4CA36DC60D51BA981392D6070379 -39: B1E26163A90F339E33F86D252EFBAB99 -40: BB98F9F844FA81B25ECC89A8482404BE -41: CE142F512A42A28F4788847B971AA7E9 -42: C5CE782936F3D28C69C2BD45FD7BC117 -43: 9B6E142582E0A309EDB550DED51238B0 -44: 0D9D80C01612977FF3A2C7A982D0894A -45: A7630C752B1F787B07C382693334C6AF -46: 9F24990F270D575881C746481A59C245 -47: C38B5E11479C200B5ACE1D6522FC6B1F -48: 99118D8114D24B6559CC5D9456F1BEDB -49: F8B974A4BC134F39BE9B27BD8B2F1129 - - -Cipher: safer-k64 -Key Size: 8 bytes - 0: 533F0CD7CCC6DDF6 - 1: C3CD66BB1E5E5C17 - 2: 079DFD68F6AF9A79 - 3: 84EB4922264A1204 - 4: 31F3A7D739C7E42C - 5: 381F88FB46E1DCA2 - 6: CAF4AC443E50EF47 - 7: 2914E255DA9BDDBB - 8: A160A24120E4FECC - 9: F748C6009FFBC465 -10: 8B3CB5784846D2B0 -11: 4F98C1621473399B -12: B486B0BC365ABEE9 -13: 314EAB2B4E9F7840 -14: 613FE3637968A8FE -15: 28935352361E1239 -16: 0DCB090233B8EB3C -17: CF0BC7F307586C8B -18: 64DF354F96CB0781 -19: D2B73C6BAACA7FB1 -20: 638FCEEF49A29743 -21: 204C4E0E0C0A8B63 -22: F041EF6BE046D8AA -23: 76954D822F5E2C32 -24: 6700C60971A73C9E -25: 80019293AA929DF2 -26: 8EF4DE13F054ED98 -27: 41DDF9845ABA2B7A -28: B91834079643850C -29: 8F44EC823D5D70DC -30: EC2FF8DE726C84CE -31: 25DF59DC2EA22CB5 -32: FC1130B511794ABB -33: ED3259359D2E68D4 -34: D7773C04804033F6 -35: C1A32C114589251C -36: 51647E61EE32542E -37: B95A8037457C8425 -38: 4F84B3D483F239EE -39: 458401C3787BCA5E -40: F59B5A93FD066F8A -41: 1450E10189CC4000 -42: 0F758B71804B3AB3 -43: 51B744B271554626 -44: B55ADA1ED1B29F0D -45: 585DF794461FEBDA -46: 3790CC4DCA437505 -47: 7F7D46616FF05DFA -48: 6AE981921DFCFB13 -49: FE89299D55465BC6 - - -Cipher: safer-sk64 -Key Size: 8 bytes - 0: 14A391FCE1DECD95 - 1: 16A5418C990D77F4 - 2: EE33161465F7E2DD - 3: AB85A34464D58EC4 - 4: 3D247C84C1B98737 - 5: D88D275545132F17 - 6: 00B45A81780E3441 - 7: 6830FAE6C4A6D0D3 - 8: 93DF6918E1975723 - 9: 15AB9036D02AA290 -10: 0933666F0BA4486E -11: 93F42DEE726D949C -12: 756E7BA3A6D4DE2E -13: 4922DCE8EED38CFD -14: 8EC07AFBD42DF21C -15: E82BEBCFB1D7C6B4 -16: B3EDB4CB62B8A9BA -17: 5521307CA52DD2F3 -18: 54B5D75512E1F8F3 -19: 1A736293F2D460A8 -20: 778C71384545F710 -21: CBC041D3BF742253 -22: 9C47FC0FDA1FE8D9 -23: B84E290D4BF6EE66 -24: FC3E514CE66BB9E3 -25: E8742C92E3640AA8 -26: 4DA275A571BDE1F0 -27: C5698E3F6AC5ED9D -28: AC3E758DBC7425EA -29: B1D316FC0C5A59FD -30: 2861C78CA59069B9 -31: E742B9B6525201CF -32: 2072746EDF9B32A6 -33: 41EF55A26D66FEBC -34: EC57905E4EED5AC9 -35: 5854E6D1C2FB2B88 -36: 492D7E4A699EA6D6 -37: D3E6B9298813982C -38: 65071A860261288B -39: 401EEF4839AC3C2E -40: 1025CA9BD9109F1D -41: 0C28B570A1AE84EA -42: BFBE239720E4B3C5 -43: 09FB0339ACCEC228 -44: DFF2E0E2631B556D -45: ECE375020575B084 -46: 1C4C14890D44EB42 -47: EA9062A14D4E1F7F -48: 82773D9EEFCAB1AB -49: 516C78FF770B6A2F - - -Cipher: safer-k128 -Key Size: 16 bytes - 0: 4D791DB28D724E55 - 1: 53788205114E1200 - 2: 4472BCCAF3DDEF59 - 3: FE9B3640ED11589C - 4: 4DDD7859819857D7 - 5: 6BF901C4B46CC9DB - 6: 930DBFC0DE0F5007 - 7: E89F702158A00D82 - 8: BEB661953BF46D50 - 9: 6F0DA64C0FD101F9 -10: 4EBBCE4E5A37BED8 -11: 996EAA0AF92A09AC -12: AED6BB9522E0B00F -13: DF9C643624A271B4 -14: 2E5C789DD44EF0CF -15: 86A5BA1060177330 -16: 2385DBA4DEBEB4A3 -17: 82E2FC765722094D -18: B3CA2161757695EF -19: F8A4C6081F3ABC06 -20: 6422316E1BEFFAC8 -21: C178511BFBFF380E -22: 049B8CBEDE5942A9 -23: 0E181292C1B1DEFC -24: C347BA0632A49E55 -25: 32FDA46669714F99 -26: 0523743E30C16788 -27: 782BE96A93769ED0 -28: 9F99C9E8BD4A69D8 -29: 104C094F120C926D -30: 1F7EA3C4654D59E6 -31: 90C263629BC81D53 -32: 1803469BE59FED9E -33: 1478C7C176B86336 -34: 362FE111601411FF -35: 6428417432ECC3C8 -36: D74C42FCC6946FC5 -37: 1A8F3A82C78C2BE6 -38: EE22C641DC096375 -39: 59D34A0187C5C021 -40: F68CC96F09686A30 -41: CF8C608BDCC4A7FC -42: D2896AB16C284A85 -43: 8375C5B139D93189 -44: 0F0462F9D8EBAED0 -45: C3359B7CF78B3963 -46: E4F7233D6F05DCC9 -47: 8533D1062397119B -48: 4B300915F320DFCE -49: A050956A4F705DB9 - - -Cipher: safer-sk128 -Key Size: 16 bytes - 0: 511E4D5D8D70B37E - 1: 3C688F629490B796 - 2: 41CB15571FE700C6 - 3: F1CBFE79F0AD23C8 - 4: 0A0DC4AA14C2E8AA - 5: 05740CF7CD1CA039 - 6: 24E886AD6E0C0A67 - 7: EEF14D7B967066BC - 8: 6ABDF6D8AF85EAA0 - 9: 0EB947521357ED27 -10: BDD2C15957F9EC95 -11: 0989B87A74A2D454 -12: 04C793BA2FAB7462 -13: 3DAD2FACDDFA3C45 -14: D1194935CC4E1BD7 -15: BAC0A2C8248FF782 -16: 7DD5894A82298C64 -17: A59F552A4377C08B -18: 8DDDE41AB4586151 -19: 7CC4261B38FFA833 -20: E99204D6584158EC -21: AACC8ED0803CB5C4 -22: C105CA72A7688E79 -23: 3D662FDC35B88C09 -24: A4BCEDC0AE99E30E -25: EAECF9B6024D353C -26: 214651A3D34AFF40 -27: 807099325F9D73C2 -28: 45EC21AEB6B90A24 -29: DCED39526687F219 -30: 2CC248E301D3101D -31: C7F37AB8570BA13C -32: BB9B31A34A39641B -33: 5314570844948CAC -34: 4581F837C02CD4F4 -35: 4E036B1B62303BF3 -36: 7B3B88DE1F5492A4 -37: CEF2865C14875035 -38: 14DE8BEE09A155DE -39: 3AA284C74867161B -40: 3616B4607369D597 -41: 07512F57E75EDEF7 -42: 710D1641FCE64DC2 -43: DB2A089E87C867A2 -44: A192D7B392AA2E2F -45: 8D797A62FBFE6C81 -46: E52CE898E19BF110 -47: 72695C25158CB870 -48: 29F945B733FB498F -49: 27057037E976F3FB - - -Cipher: rc2 -Key Size: 8 bytes - 0: 83B189DE87161805 - 1: 7DCB9C9E50D15508 - 2: C724D535853CDE79 - 3: 113AFD4BA7D3D7E3 - 4: CFA06CFB93C2280C - 5: B3F291C1AAD9CB07 - 6: 606F74D9AAD4FA71 - 7: 1CC3F7AD551C5F89 - 8: 43F8772BA6C6B60D - 9: 2F933E12F57689DD -10: 2BC1AF0D5571D17E -11: 4123AAFABDB254E5 -12: 413E0AD5C709DCE0 -13: 6B3CF01A7542BD2F -14: 1E5E2CA0CD605999 -15: D0F7C9DC472A0709 -16: 00482798857A2BB9 -17: EED583440CFA8B48 -18: DFB377FE1EE5E055 -19: 30511C4C565E8F75 -20: F74A72482B43B99E -21: 1EE4EA7849B0B070 -22: DB7A4ACF022706FD -23: 2D7EBABC8C8E4DD4 -24: 6F0369BF66A8B637 -25: 59E5D13B247EE0F6 -26: C7BAB430AA89A5FE -27: AE0F03746D38138B -28: 942DF0B523D02482 -29: 929CE0963CFA46B1 -30: F8C68A91DC53B7CC -31: 5735395C63E15094 -32: 7821605C18D83D42 -33: DEC892FD743BA6DC -34: 77AC80C1177963D3 -35: 3E223EB4EA297456 -36: AF63B231D671D9DC -37: 665CA287AF32E92C -38: E451EAB337DC1EB6 -39: 95B179EC950992CA -40: B8937115492802AE -41: 355A6E5EDF40A939 -42: 353E77D4A5A28D79 -43: C958FA5903F921B8 -44: C334E296BCB24ABE -45: 4F37F7F652FE31ED -46: 77304A655B03ED67 -47: 3548A4209ACB6EE2 -48: 696E712B1911B695 -49: E4B63641D22A3DDD - -Key Size: 68 bytes - 0: 7ED68E8B30A7D5DA - 1: 867E18AE64B783EE - 2: 032E554D6AAD7055 - 3: 26BD785D0DDAD48B - 4: FFBD4009ABF53D03 - 5: A71006E1E30C3855 - 6: 92638EE741BE65B5 - 7: FC8C5F28CB38C83D - 8: F03F145CBCC4CF80 - 9: A28A7C63F67DDE7B -10: 3089486A2247B72A -11: CDD6E6BA5ED53A8D -12: B75A2DE8CB96A267 -13: F74D72A2CD68CEF5 -14: 3865AC8D170EEDBA -15: B1B520CE5FC2BA39 -16: 658DACFDD701B4EA -17: 6B5C1DA9484FCEDF -18: E3CDFB5755BDFFC1 -19: 56DAFF7E9A908880 -20: B6F8B970F68BC2BD -21: 7A00DEE6977A91F2 -22: 6C0CE4FD2D02B36C -23: 8EDA10D868504648 -24: 76FB106689E66EA7 -25: 67F45BB28A20E110 -26: 5F3207099AF93B07 -27: F5E382F7266AB342 -28: 0E31AC2E4CEFFBDC -29: 8DBA1B2FC6980FF0 -30: 311368E62EC2A9E2 -31: 50DD1F7A319727EB -32: F0DE146C9ECF5662 -33: 81CE0842CE223F15 -34: 4C442535A8BC9AD2 -35: 06EE8869DB91EBDA -36: 4078E7CAC29DCEE7 -37: 115D619FB705F289 -38: 3D3F8A380DCB8FB1 -39: 9044E5AB8049D21A -40: 66327F00B07CFC76 -41: 811AB23A4AD3F132 -42: D4A507E96BB39BC2 -43: 51C9E4C9318F87D9 -44: D2255C13DBD09E88 -45: ECB76BCB961F812D -46: 83D7E39727BBBEC5 -47: 415540F0AE34DD65 -48: 232D20F9E188E2C7 -49: EE37261ABA270B22 - -Key Size: 128 bytes - 0: 8A8F8E5C5A04C73B - 1: B197CF922883CE71 - 2: 8AF3F896460CC597 - 3: 755F313AEB18D3B8 - 4: F1DB52688BB879A8 - 5: 29D68EA6456B1CF9 - 6: BE7C444267A7925D - 7: 46A7BF7DED575933 - 8: E2C7AD7C902E5E15 - 9: 90A38AE1DD69C2EA -10: AA95FA050CD3388C -11: 23822B6AD5B83018 -12: 8FD42F0DBFF3FEE1 -13: 645098BC94FDE21B -14: 7E43D43EAC50E992 -15: 2F540FC66A9E0F43 -16: 453E52EA7B2D1F92 -17: F6F731E8C5A32C54 -18: B1E89646504E4D7C -19: AB8168452A7984E1 -20: 044BB0758DB5435B -21: E9BAE7C99A152BFF -22: B758F70708B6597E -23: 23A1EFD0AA925D7E -24: CA60DD174CBA23DC -25: 5E916F2DF7B6B3CF -26: F2723A9BFD82BB62 -27: 2BC381F6C048687E -28: 573BFD71896A4133 -29: 03DF7250C3D69801 -30: 8639060454669BCB -31: E31945F0A87221AB -32: AA39447BBF0A77EA -33: 174F1B65BF6A34A3 -34: 2712F966022A9589 -35: B6358876D6D56D16 -36: 2A92C131E68B77BE -37: 040C6935F4CFC43B -38: F23503C74121C660 -39: EDD120883F1F813D -40: AFC6500D34BD9D33 -41: 963117444417BDD3 -42: 2FC3A58861B4A58E -43: CFDB70ED8BCD1173 -44: 91B75760CF38B8D5 -45: 93A59048B78B3415 -46: 7E60C5E75225D45F -47: D4212C6422878FFA -48: DDD1B241E0E0EF6E -49: 20337DB931078078 - - -Cipher: des -Key Size: 8 bytes - 0: E1B246E5A7C74CBC - 1: 9262AFD8AD571E2E - 2: 36D2067D960EB870 - 3: 319834DC66705192 - 4: B4508A7C5F012C93 - 5: CAD1DECDDEE81342 - 6: AE9E1CBB71C719E6 - 7: D7FBB1CDAFD5B2C1 - 8: BE1A70564E3BFB5A - 9: 96D9EC1407A1BD34 -10: 05E4B9AF3A4DABB3 -11: 0DC77419E1F12C02 -12: F73E62369190A5E3 -13: 830C1CA7820ABA2D -14: D2574B6AEED0A4F4 -15: BC08782E293546A1 -16: A35DCC9AAD1EBFB3 -17: 79B2224667B33706 -18: F9462FFD2808233A -19: D6421CD0D9697DC5 -20: 57CB2173D67E7001 -21: DBE2DB0BDC07644F -22: 014E72E7E99C969F -23: 37901B1963D0B29B -24: 8E12C23929125686 -25: 73AA9E2A60C327A1 -26: 54A19D07D941EAC2 -27: ADB8CBBAEE1848D6 -28: 3997E866119856B5 -29: 4D647526FE7E1E27 -30: D574FE7342104F93 -31: B84383E34A790E11 -32: 322214BE9B93BB6F -33: D4C8E0B7AA139D68 -34: 2B9747CD280E48C8 -35: F92EB2E3711FEE2C -36: 5CEE84E124B7882B -37: 82427488597FF618 -38: B1E8B313D2DC76CF -39: 03E237CD40D7F214 -40: 8C8DC1299293E15D -41: D6C7463FE86D4EF8 -42: CF1550CACE647779 -43: B998B3D32B69F00B -44: 1B94C342C3D91107 -45: ABD4551B27F58BE8 -46: 2B24D978D1BFB3DA -47: 85361D36950635CB -48: 448009F38F1DBB4A -49: 6B901B2B79B6950C - - -Cipher: 3des -Key Size: 16 bytes - 0: DF0B6C9C31CD0CE4 - 1: 9B3503FDF249920B - 2: 653924639C39E7FF - 3: 6A29E0A7F42025BB - 4: 1628B719BC875D20 - 5: 7D77004A18D0C0B2 - 6: 4D21684EFE962DC1 - 7: B6BD7F82B648A364 - 8: 1F87ABAD83D19E96 - 9: 3DF3533220C3CDED -10: D0E7D0ABFBA68747 -11: 109FE5B38D74E6C9 -12: AE12C4B4D523784F -13: 953CD7F264166764 -14: 70B3A87D72FA0A22 -15: 9C9D09AC66AB8F6D -16: 4A15AEACB35B76F0 -17: EFA32F95623BCF1A -18: 679901F7737E195C -19: 221BB06209DDFCF4 -20: 0889A953C60BB1BF -21: 88F2249380E2D5D9 -22: 5AB26168B7FA24D5 -23: 934229150997D390 -24: 535E4F4C4DA97062 -25: 03E8D711AC2B8154 -26: CB5EF6E72EA3EC49 -27: 9278A864F488C94A -28: CB91B77401DAF004 -29: 4D0BA1C9794E0099 -30: 9CFA24A21F48043F -31: BB6B3A33AEEC01F4 -32: F2A8566E0FF6033D -33: E6AC213000E955E6 -34: 91F5FF42BBE0B81B -35: 6506D72ADEA70E12 -36: F9BD8C0506C7CC4E -37: 89CD85D1C98439ED -38: 409410E3E7D66B10 -39: 4CA64F96F4F3D216 -40: 383D18FBF8C006BC -41: 3806A8CB006EC243 -42: EE73C06D903D2FCF -43: 624BFD3FAD7ED9EB -44: 1B5457F2731FB5D1 -45: 4EC4632DFAC9D5D6 -46: 8F0B3100FAD612C5 -47: F955FCAD55AC6C90 -48: BEB5F023BD413960 -49: BDC369F3288ED754 - -Key Size: 24 bytes - 0: 58ED248F77F6B19E - 1: DA5C39983FD34F30 - 2: 0BD322177B935920 - 3: 9D093F3174EDBAE3 - 4: 756B1F2CDF02B791 - 5: 57C31C2A913C1126 - 6: CF936257517C53FA - 7: 5F06305849E5E158 - 8: 9A85DFD788C59D19 - 9: 6392279BBE29DC1F -10: 76B0AF835D79C4E8 -11: 7073F36DB1E31464 -12: 276258605F2CAB3B -13: 3B69E97811FDA996 -14: 3E6E491D2862A1F3 -15: F8F3F68BDB006520 -16: FD376E66D401A097 -17: CA2FE47825804996 -18: 6F5C256F84FD14AF -19: D7B07F5C40FF0CDE -20: 73F2E074F1324496 -21: 0B2A35016F24BD21 -22: B040D2E3B311C193 -23: 3938DEA347112E2E -24: 9D7C1703CEC0BFAA -25: A07949F76BDFAF68 -26: 43087EEF52564C4C -27: 11132B599734AF0E -28: 62A04C819FDD9A8C -29: B74F0E5649D33690 -30: 8E77E5009B0AA322 -31: 5174134B9A1889B9 -32: 053E33441D11AE63 -33: 01EF381013F86E4C -34: BCA358DEF35DFD60 -35: 5908A88513E2E5A0 -36: A3214C8367E04B05 -37: B2CBBE851A54BE9C -38: B271817F63B3B76A -39: 08AFBF82ABB97D8A -40: 2CE02ED014186B86 -41: 63F3011C97F6E990 -42: C392351F432738D9 -43: 0534DDA50E685725 -44: 1509456871F5CC20 -45: 2383029935901342 -46: 8714F1A53CCB213A -47: 2491B2FD3CE6A7CB -48: 4BB02399D85BB66E -49: B8AC2CDFF7AC22C1 - - -Cipher: cast5 -Key Size: 5 bytes - 0: 9B32EF7653DAB4E6 - 1: 48AEB06B1BDB2397 - 2: B530927183622D58 - 3: 0ECC8F24BA742216 - 4: F6352F9B6461D82C - 5: AF6315AE98E12A71 - 6: C364D4B506EF28B9 - 7: 817061BEDF5E0A5D - 8: C19DE7B1F2066C04 - 9: A6E1345E3AA1B79D -10: 06B036B04785428F -11: 244DAB3F7223F567 -12: B9CF3791F6C79F4A -13: 86C5A02AF0517C5E -14: A16E3198F1317E04 -15: CF72A44C01E36DDD -16: 199C72ECD5E632ED -17: 0BC66BF05EB7887A -18: AE1F696F3D6B7952 -19: 685C92084F600885 -20: DBC1353A95AD2097 -21: F481E98CB36CAB3B -22: 8F1C06A482C70BB6 -23: EA087739954A9CE5 -24: 6D0AD727D8E4EF9D -25: 61CA0F7965FEE246 -26: 0D664CA16BA785DA -27: 2359D363755605B9 -28: 6B6E3A216ABFB55A -29: 6FBCCF7B0342D3C9 -30: 3431F4572E2CBE57 -31: 36D84FCE6D5D8FE4 -32: C234F6AD41E34E76 -33: 522F12E8D0617263 -34: AD8199B6E94D4E74 -35: 56DEC7C21C83B2AD -36: 22CDBFBC5B476E69 -37: 70BAD497381F378D -38: 4584F15DBC0EB7F3 -39: DE0603CEE19BCFCD -40: EA8D582C1CE62FC9 -41: 4299C28A912CE568 -42: 7208AB000E3FA9D4 -43: 7AAE6CB398D01665 -44: 33A6AA42B6D7949C -45: 2AEC5640AD535D69 -46: 74D37D9DD7B67248 -47: A5300FFF5CF85833 -48: 834F83398D591C38 -49: 85C787A8B7E519DB - -Key Size: 10 bytes - 0: 95827CB504BD43C7 - 1: 8FBF4EBCB8413ABF - 2: 5CFF411BECED9971 - 3: CEE2AEB4415E0A5D - 4: BB3A8DF7C54FA88F - 5: D508B933EF335111 - 6: 993745722EF0D8D3 - 7: 04EFB233AA88E796 - 8: 478A7DCEAF243F90 - 9: 269CC3D138ED48E7 -10: 88EBD14D2F999C89 -11: B7441626D4487A20 -12: 46A6E2CE6C66058E -13: 60687D2D5381757F -14: 885D05ABBF187B89 -15: 5032A7ECD3D51521 -16: 50BAF36BC5C14A8B -17: 8E805499569FBB0E -18: F8359B18AF3E69C5 -19: F24E415CB4D2AA95 -20: 361805D4E45B56B4 -21: 3172336F01E3530C -22: 333A551E0A03C4A3 -23: E2B991995A2D2962 -24: 067CEEDD8F213B67 -25: FEC3F306851F8616 -26: 4B80DAE6AB11894F -27: 250C26E21A8273A2 -28: 313F2A505915C909 -29: 42E0DC3D4816B38D -30: 9FAEEF0510DEE721 -31: 3BB5F5EF74B4CD7E -32: 0FBC9007F462BEAC -33: B9D1467B0D7A1043 -34: D9B991C9348DF321 -35: 061D577806C50742 -36: 48AEA67AAAB6FA23 -37: 22F7910383BDA87C -38: 9987087EDBA56FD8 -39: 2FCC8341B69BAA14 -40: 29DEDB6C2A433F50 -41: E067D2746B99A9CB -42: A5C9CB975A856D57 -43: AAFEFD3A82D6185B -44: BBE8952CC93CCCC8 -45: FC08CE0934EF2E25 -46: E44E642DBA7CF3F0 -47: CC26F0E8E85AB372 -48: D95D63B8389082E0 -49: BCA941C921B91E16 - -Key Size: 16 bytes - 0: 20B42D77A79EBAE5 - 1: 96CF6C91E5183CA2 - 2: BD87E77A38DDB4E2 - 3: E7454CA30B69DE2D - 4: 888F278D219384EE - 5: 972CB887CDE920F8 - 6: 49BEC1E7913F3CAE - 7: 96A81B37FEF63CA5 - 8: 408DD23A6DA940FC - 9: DA86E92BB735755F -10: 2032F2D972F228BD -11: 8F9EF7DEEF74EFEA -12: 547C92025DCAF9F4 -13: 80CD440DFF2EA62A -14: 7D6141D102E1B941 -15: 307596ABF5C9A6B2 -16: 82E3F1B17EBD52FE -17: 5917DDD11EDB55A3 -18: 2909F77166F24F9F -19: 88BDE9D686328942 -20: 8F987B737F6A011A -21: A74B3D1D6433B9F4 -22: DA8F95DE949482EC -23: 953BA9B26B9AC476 -24: 76A52FE193CBFAF9 -25: 4BB7D2597A78F2D8 -26: 5C8BE951251F4B1D -27: 6E8AB32A4A279D84 -28: BB94BC9937B42848 -29: FF0EE686F97BF8DB -30: 4146656AB1477E13 -31: 1BFCA7053E6DB8AC -32: 4B9A6A349BFA926E -33: 3B5F6FDD127B0A87 -34: 53C996E956598599 -35: 62C142E63C28B5EE -36: BBB71D6548F32693 -37: 107576AA26352455 -38: DE32E31FFE02B6F9 -39: 4C5DB81D1715FF5C -40: 8E5C706206F493A6 -41: 4BBC51E184A67C92 -42: AAE216B413DE2A06 -43: 77AE26F467233B06 -44: E8680D0E71F6AAD6 -45: 7061DCED4BC94F78 -46: 06772D63818C7E86 -47: EE5B9CFC06CBD639 -48: 5784B3EFCDC28DD4 -49: 4F962107A2EF843C - - -Cipher: noekeon -Key Size: 16 bytes - 0: 22C082F55D7F6D861B11C36911BE694F - 1: 0485388F24B147918116347E942BCF4A - 2: 47388A4B060617B21134D3B4EB1CABCA - 3: AA8866CFB9D7507CC67A7F271AEF11E0 - 4: F6A078AEF1BDF8B621A76CB732804FF3 - 5: 8301F76E39A4E8C8AC38A7751B26DD31 - 6: 5BE06821E7B23277B808143F36BABDE0 - 7: E326A3A32F4F0D8A4FA94877997DA11B - 8: 2BA7773B55F90B5399C11EA80D6CADEF - 9: E64776D92B81770E51E4E2F44688A59D -10: E987ED52D4C33B2668BB9DCF0889D5AB -11: 351F5BC075D06BC6977D31A442CCC2B6 -12: 645468E2497FA5EB913C04032457C1DF -13: 10CFDBEC689B01FB969AA2C760F76CCB -14: 0BC5B171A3B727B9594238EC522F72F0 -15: 887D105D54D8EAABABC892F04F3455C0 -16: 53CC30B5F16713AC77205B0F194FED59 -17: CD63AD99CC0D5F34D67C363F99F7CF1E -18: 59BE7B22114383FE8491304FB291D2BC -19: 4B107C8D37CD46EF1DB68ECF4588FEF3 -20: 46034C755D278E368305D1133BA6B4FA -21: E2472AC6D4048AB59E126930F6476D06 -22: 821014CDA5084A85058F1D556854D33D -23: F67C3FB5CB1271B454810FEE632F7EE8 -24: 57705CB352AF1A8B342E1E555C9DAEAA -25: 72AB36C1A8D3C2111330D0EF78726227 -26: 1931783D7E3DD6A33962BAD6962D8A33 -27: 06029A07CA801027D97BFAFF4719FB89 -28: D78B7E4E3083A60610C42BFC03810590 -29: 3CA3B14C5741A43F1FF5AF2179684DBA -30: D1BCC52AE476999E25391E7FFDC59C81 -31: 1E102DBAA4224ED5E32515A59A07EDAA -32: 81BE227D2663DBB733F9CB5018AED67C -33: 92C5A77D5D62A16C031DA0BD968FBAC0 -34: 9EC8E61B543BE73AAD711A9F58C86790 -35: B6A1FD059A7D8D73C143C17D97E4C177 -36: 0316ED78EA520EE98BB568413A390E44 -37: BEFEE68550E2FAFC4AECBE309031BEFD -38: D394CBCC38A47482B2B6900BD68D6540 -39: C58F2EE6C493BD1EB41DEB88A169D240 -40: 0A45FFA6D6E888B1F6E95E388818C6AE -41: 8A9CAD2C511F284CE1D77167E5D23456 -42: 577CB9155A69CA34213FFD15E03D54F4 -43: 2AB7DD760EB7DDDD3883A6966B9D44D2 -44: 4564DC5318B0A940CBBC3C1607804B70 -45: 0E9F42D9C2AC03694CC2E82BA3C4BBBF -46: A49089D9FD9E13DF35B0490E59A9B7C9 -47: D58B3008003D6C8D556D7D76180691FF -48: 1FBC6D5F3F1B0E599DED48FF7A63CB76 -49: 077533478FABE8AD5DC2B9E96E7CC6CB - - -Cipher: skipjack -Key Size: 10 bytes - 0: F62E83484FE30190 - 1: 03B4DFE5423A117B - 2: 8CE4DAA2307CF018 - 3: 77D8C958DAE4336D - 4: 00D367D5C1FC95D8 - 5: C1F1305A5B01A474 - 6: C3956225C846F695 - 7: 2A8977DC186749A3 - 8: 433AC6B56AE5C200 - 9: 10489A7E87F803CE -10: F176DF022D02D136 -11: 1395AE1C0C00AA1B -12: 0C1C3FF32E93F789 -13: 901EAAD562EE92DF -14: 59D55D9EE3EA0154 -15: D9135CE0BBF68AC7 -16: 90A8E4A8E76349A3 -17: C04ED52AA69D1ED0 -18: 19E842698B5008A4 -19: 26FCA0FA3AA7718D -20: 62635FD1A542C7C0 -21: 5A3695398C979E40 -22: 34998BB72108D89F -23: F889CF892998D689 -24: 2C6A4D61F468F19C -25: EC70D59FC906349B -26: B95F11FD098B34A6 -27: 32F86206BB4E525B -28: E6BE51063B60CB9A -29: 8964E47BAC22F995 -30: B1C297883819747B -31: F2AE1F39F55FB6C2 -32: E633EA2DE342767E -33: AF1F0ECBCA788A28 -34: 6A898F4407696B27 -35: CD9CB5374EA080BD -36: 15881B0200AE6A42 -37: 579D05E5F5DE7840 -38: 86F8C683D23EB976 -39: FDAC7DC6C8F7777D -40: 10D6F7641409F027 -41: FCDAA0872D1EC61A -42: 7A353991A81344DC -43: 43661187956D3F8D -44: 5190FDFB904A78F0 -45: EF651E67F65CCD57 -46: 5E539C61748BDE3D -47: E11E23BA8BEBA42E -48: BAEF0956173B32AD -49: 0AAB29DF65861F4C - - -Cipher: anubis -Key Size: 16 bytes - 0: 30FF064629BF7EF5B010830BF3D4E1E9 - 1: DD7A8E87CFD352AF9F63EA24ADA7E353 - 2: 0D0BE8F05510EBD6A3EC842E5BD9FC2A - 3: 330F09581FDC897B3FE6EC1A5056A410 - 4: 30349D965F43C295B9484C389C4D942C - 5: 9225343F0056BC355060C0282C638D02 - 6: E3A85D41B5337533C4D87730948A9D4E - 7: 09DA0DDB65FF431081CAB08A28010B76 - 8: 6C0D0BD6CEAFB9783B31023FD455DAC6 - 9: FBE6F26B7CA322A45312856D586DE2EE -10: 1F269EC072D0FBA72E87CA77F8B983FB -11: CFFAE9ADE3006BD511ED172D42F16D05 -12: 73F0E9DE89F4C7541506F052D181BAC2 -13: FCFA3E2E89FF769834295C77431EF7CE -14: 0452360383D56F827C81263F6B0855BC -15: 40744E07299D6A2A210BE5598835221B -16: 2F0FC61148C36F4C7B42DF274AD0DDE0 -17: 2EA0E9BE9E4E4DF85488FE6E7CFCD6E3 -18: 0AD1254FA64C3996BBD485D41A3687A0 -19: 5B55988652DF200348A114F802FD3C03 -20: C32906AF76934C1436CA60BAD58A0C66 -21: 59D87987DE9DD485C4537F3A95A164A0 -22: 0A706ADF488D84632C96F4BEC43D9FA8 -23: 0B74E0CDD14D984B37491E2D9FA63CAE -24: 47CB1827D151A60473E67BD5D233102F -25: F455B4B665D3D0AFB25FDE4A3312AFF6 -26: F9A0649421D45DF604206854F681DBDB -27: 21477F5546339E4B6D8215368EE9F884 -28: 577640F23CA73345701B0906DFABA4B7 -29: 89F8D08A6E173759020DD7301E0FE361 -30: 44EF7AF7043FD4B8112345CEE42BC969 -31: D7CF0CE04A57253F4C63CABC4A5CB034 -32: AF73D3F4CED32593B315E27079131D22 -33: F6E603E3455359FE43A3B83AAF3AF0C5 -34: DCC3FB557F2C301B631DEF499097E4FD -35: 8285A25CF6F7E701644708E12081C62C -36: EC702DD0293F4C646B1C9C2606762816 -37: 289491E5A65DCA605B78E88DA8A9F8AB -38: D82FBC14452BE34C5840DAD81FC2A65E -39: B88A340EB1BF8D5ADE6A4E6C16104FC8 -40: C9FC3D70D2BA26C4059BD3D34134264C -41: 18CE3D2920E3BDEFA91C369E9DE57BF4 -42: 50917AE58278E15A18A47B284D8027A3 -43: BDA6F9DE33704302CE056412143B4F82 -44: C287898C1451774675EB7A964C004E0D -45: 3BDE73E0D357319AB06D3675F1D3E28D -46: 30FF4326C89C0FFE4D31D2E92CC0BF9B -47: F69816F304ED892232F220F290320A8D -48: 1368153F1A54EFF8D61F93A2D6AF21E3 -49: 06DD274894B6EDF3159A1403F47F09C7 - -Key Size: 28 bytes - 0: 7828B1997D3D050201DC6EE45C8521B5 - 1: 0D77F896F9CEF16DAAFCF962C2257AAE - 2: 89C27B0623F5EECCA38BAE1AD86AE156 - 3: 44EC09834052009CC3CD66E1BA11AF01 - 4: F922BFDB03FB186A069C1E7B48222E3D - 5: 277F7971955D8984AAECF287C32B8211 - 6: E77ED0144A3ED827B71453B91562FE25 - 7: 1760EFD04477AE527BC37F72C8BBBCAE - 8: 26259425ACD58207AE328B3F1A217AC1 - 9: 0876C4DC51D22657C4121E9067C2C3BA -10: 0214981592C9CEDD4D654F84AF1793A5 -11: 3E11FA027BC4F15048D27B187062259A -12: 24E7D61BB21EA90B5282B43AAFB0DBDC -13: 688F56ECB45B7C242000653460F04A23 -14: DFA587501A875ACDE8687A04AE404861 -15: 4C21CC3FBB768CC9AF2242FA206FE406 -16: 5CA0B03FA7751DEBBE70CB21AA61765A -17: 4879B3AC26270C422645B9CA29CAD8BB -18: 24F941E1B9AF84C18D03885EAACE16E3 -19: 05E163A0150123C2664131A81B20AFC1 -20: D606CAA85362E23598E5B8BD60C60506 -21: 33BD0AE751019BB751C151AE47BD5811 -22: 75DA523F5F793F90034144A3599DC5E6 -23: CD4709B56521EA306F5AD95CCA878183 -24: 6A4EC2EDDEBBBFEB62C1F13F7A59BF20 -25: 2A36272DC4EFDFC03F4DCF049ED2ADFF -26: FD4F3904E8E37E7C31508E5829482965 -27: BA64BAE1C2ABB8599A31B245DBAD1153 -28: 757E0151783A50FC92AE55861DCD797D -29: 5E63BDA3217ECB544972CA14A9074DA5 -30: E52F1195921767FA2410BA095EA5C328 -31: 6D7E42D67E329D669299B5A590017E8D -32: 0516F6F7D99ADE5DC42E635BB5832E80 -33: 57FB4E6B82ED2A3091248DCEF9C27F14 -34: 25231D0E9B96534977D2F2AF93DD10AB -35: 847C4C524A586568D19EFA3ECA343F1C -36: 52448814064E0F33A4EA89368C2E1ACC -37: 461275466FAA7BC16ABAD9EC459BD67A -38: 16C8324A383A00DA06DBEC419B69C551 -39: 5F26F7CF715FF2649DCC3C71EB6B92DF -40: 575363411FB07C067CD4357A1CD1D695 -41: AB70F08BAB51C5F57139A107EE858A12 -42: 887F62AE3D700EC5323EDA231C6B4C48 -43: 7B9851B01DC9083293F3B226690A54F4 -44: 36E03DF51C574E35EF2077DB7A49548E -45: E238A564246B163F97EDD733A235EDEB -46: 30679CE080915DC3BFA91D0DAFF5E82E -47: 7C2E8145D803D4FE18EE32995AAC16B0 -48: 24D6F61ECC87206804885D33BFA7B2CA -49: 1F4F81751CB3FAFDC9F9C27E639F370B - -Key Size: 40 bytes - 0: 31C3221C218E4CA1762B0DE77B964528 - 1: 0B6E4BD937773597647FFE0A3859BB12 - 2: 67A116E5F762619DE72F99AD1562A943 - 3: B6A841663FB466ACAF89C8DA5BA080F0 - 4: 0442708BF804642B9B1C69F5D905817E - 5: BC77391EAB530B96CA35319E510DB306 - 6: AED37991A50AECB70C1B99137D5B38F2 - 7: 8735F7AF0BF6C5C7E3C98021E83A31EE - 8: A614243B1B871D80BDCE4A23AD00F9FA - 9: 16AC67B139A92AD777871C990D3DA571 -10: B1774A2A12A8CAB25D28A575B67CEF5D -11: 4C9B1A120BC6A33C62AF903FEEC3AF5F -12: 7B128F00480E497C5754EE333457EE5E -13: AB56D578229492B95ED309C0EC566658 -14: 42FAF577855FEDB3446D40B4B6677445 -15: 84E0C19B4A4512001F663E22D3184F0A -16: 8B01680D049F5A9421BA9BED100CC272 -17: 2B1D70B92A5DF12CE0FA6A7AA43E4CEE -18: C7F61340D1B2321A1884E54D74576657 -19: 153C07C56B32530866722C4DEAC86A50 -20: 2EACBEFC4A29D1250EEAFD12A1D4AE77 -21: FCCB40B0997E47512295066F1A0344DD -22: C149A543345E2A1B8249F71CB9F903A4 -23: 3FD0688A8D0BE5F06F157C234C29BF9A -24: 6A3F813F396D77C7F4641ECC3E0BF3AA -25: E2888B9D2A6D819367F61C5792866A8F -26: 1A8A000F91AF4E600DDD88E098BD938B -27: 2283E758C04548EF8C37FA9F5700A7AD -28: 4FD6D8E1678D2B85520B96C038C582BF -29: D13C0B228F792EF88F09ED192C571029 -30: 1A2A06B1987BE0DADA4B558AE5E6A128 -31: 097B0460C47F1801986F5706A69EB01C -32: DD17BAC0737515C6386ECA6A6D6C02B6 -33: 5989BD1D46FD6EC14D4C55D5D6D17F99 -34: 431002E0224BD34B0B93988356C19E7C -35: 37DB7570296DCCE45ABDDE36EBE4731D -36: 4731DE78EEBAA1D02568EEEA2E04A2F5 -37: 1F879753A7964AF44C84FD5765D8E080 -38: 54F120726F68EA4B0501365CD2A84759 -39: 366E43BB744C615999E896D01A0D1D0E -40: 18747BD79F1D0529D09CAC70F4D08948 -41: 4F9854BAE0834A0C5FD12381225958F2 -42: 7C14ADF94A0B61828996D902E4CCFF3E -43: 242F0E9CE96E4E208A9E0C5D76F8E698 -44: 27EE179E2A9301B521B2C94ED3D36A77 -45: 892C84A5E77E88A67F5F00F3597F4C04 -46: FC7880D7860E90DE17E935700FC8C030 -47: BC49373F775BF9CD6BDC22C87F71E192 -48: 365646D0DE092AF42EC8F12A19840342 -49: 62D0E9C210A20ECD2FF191AD3495DE6F - - -Cipher: khazad -Key Size: 16 bytes - 0: 9C4C292A989175FC - 1: F49E366AF89BD6B7 - 2: 9E859C8F323666F9 - 3: 349EC57A02451059 - 4: 59E34CF03134A662 - 5: 436C16BAB80E3E2D - 6: 81C35012B08A194C - 7: 056CCC9991C1F087 - 8: 0A59F24C4715B303 - 9: 3C2CFF98AE8500FD -10: 9136C3FCC332D974 -11: FA3FA726E6BEBA65 -12: DD84E4F9F39FB7EE -13: A3F397CC9FB771F5 -14: E2D6ECC1F40A51C7 -15: 6704A1A705163A02 -16: BD820F5AF7DEEB04 -17: E21E37CC122027FF -18: E319085D8E2C1F4F -19: 0DDFE55B199A49A9 -20: B70F39CCCB2BA9A6 -21: 3F2F25723AED2E29 -22: 751FACD5F517AB2F -23: D32CE55FBF217CE9 -24: 91393018EA847012 -25: D50F1C54BABE7081 -26: C73350FBC5B3A82B -27: E9A054F709FD5C57 -28: 94BD5121B25746D4 -29: EE19F88B28BEB4B7 -30: CE6845FD13A3B78A -31: 566729D0183496BC -32: DC0E1D38CB5E03A8 -33: 251AD2B2842C75E3 -34: D344AC41190F3594 -35: 579B956A36ADA3A8 -36: 5F83D3AFEE9A6F25 -37: 2D3FF8708A03C600 -38: 32A732C7BEEBB693 -39: F437276FAA05BB39 -40: 58DDD4CD0281C5FD -41: ECC2C84BD8C0A4DC -42: BAB24C2CEFE23531 -43: 5244BFA3E2821E7D -44: A4B273E960946B2C -45: 039376D02A8D6788 -46: D3EB7074E3B05206 -47: 89C18FFA26ED0836 -48: 1F05A2D2D78927D9 -49: 0133E1745856C44C - - -Cipher: seed -Key Size: 16 bytes - 0: A6E8D7325BBE0998CF235C1B57E64360 - 1: 83A2EB0094D1CF95E683DE8BA93DE478 - 2: 3DF178E121DA1CDB77ACFB37F9499A3B - 3: 785A1D88210885D6D2D84C2CB4461D57 - 4: 4F177E4C76F6CA9C989E724A0EC275F4 - 5: 3AC502689139EC1AFA7EDCDB622A6061 - 6: E1B9675AEFFE45A249644E7E0863110D - 7: C8A4294FF821E88EC5D181E54BBD3919 - 8: 7598C35780522C63B531758F53B7CCCE - 9: 3E59799FC5A5F99100A3791F6AA284EA -10: A8572971F5FC281E7617BCB8D616FAD3 -11: 3C5DCA82BA53DAC088D34E6C4D069E22 -12: 0886C2F45E358409230F6FA0F4ADB7BF -13: F4BF0388027AFBADEB6AD1AD0AC9339E -14: 587F60852DA55F76C486D9A6BA884F8A -15: A6F2518AD3B9A68C3FB8847E28B15212 -16: 6B6DB6C7085FEF6FD2BF32CAA2FEC2E2 -17: 40FF5FC134BC3911614A4E021254EFDF -18: 9B1016CD948F70B8A04D2604D4FF08AD -19: FBB86D1B49204838C7D544C8BAAE61F9 -20: 02EDFBE9A9A4CA2206CF9047FF146949 -21: 6B9FF89C1E607E494204B28D4391ED35 -22: BB85B8BAA9A4B74ED66C7485415834A0 -23: A6F72520E6F0248D88AFDBDA7CBDD6FE -24: 4BC1D4E990FC80E9ABF9E0FBC745E2D4 -25: 0358D44D7A59743AAF6D25CA179FB6FE -26: 320924C80B53E406DE45D31AB0E265F3 -27: B727A4AB9E8455EF11B18F300E22ADED -28: DCB6BEF8F35FFA2F2CDADAE161E56D48 -29: 847A39F0670E930BF7899656908C2B92 -30: B5223282B9328ACC4C6BF06F15C920EB -31: C265081FC225CA4ED28FABBF0BBB0298 -32: 35F6113CEA7C15DB21223D5AB0E9E558 -33: 3437EECD2984AADC9F07286CC23FB940 -34: D0C878AC8C01BB9868B499691373988A -35: 684381B5D98E9D1290AF5D633A903F68 -36: 69652249BD52F49ED11219881059ED38 -37: 08DD215881D98B1D8234FA1806E634FF -38: BFA836EB71C35B3E3CC9BFE9168D1B5F -39: 238BDB3340961C47A13F011AAB45FC5A -40: F55C630CE6008E7F15EA1686D887DEA4 -41: B78DED6C49E3167CD7ACF2CCB4E365DC -42: 79990527F22373B043039F18E343A8B7 -43: ACD08505E2759003C016F6E820DDC562 -44: 8DB7189177EF39A7A969F28B882CFF05 -45: EC0BEA22AE28469B91AAD4654858367E -46: 19A7F32CBCB4CE89163EC6F98FACFF36 -47: 3747F9C67FA044D52C3893D170DEC4A9 -48: DE799E6986BB77CA5C24F9A956BC28E4 -49: AD4CEBB75177F1CBD6FCEBF8457F85D2 - - -Cipher: kasumi -Key Size: 16 bytes - 0: BB6B2E0C88AD7C37 - 1: 5AFA50CBEF3FD5A4 - 2: 1914DFD8DD86C361 - 3: 0976E7F6AEBFFEDF - 4: DE0EF590AEC61F17 - 5: 089FA192859E6124 - 6: 72E283C82D366B51 - 7: 61DA033662AF0B74 - 8: C4CFA2C3ECA84CEA - 9: 15757205BAAC8639 -10: 4349914688A6A850 -11: 4B1F5E0D5B7ABBDF -12: 5482444DC8815041 -13: A8C198FB1D865A93 -14: C2641B2501AB6525 -15: FE492BE02E717496 -16: 03B3034E3A26006D -17: 0CB4B7FBA4582D1B -18: A61C750E5DFF1791 -19: AD5374F2B0860365 -20: CBC588879F98A820 -21: 04CA5EABB466C1C1 -22: F4DF5CEDAE6C0E17 -23: 6133AAD21D875DBB -24: D386BCFA19FAA860 -25: 68C9ED9206F07F47 -26: 00A49444A0C176CC -27: 4BEA00D55452196A -28: A9A3FAC7A2D553A3 -29: BE61DDF4CFA8EC8E -30: B1547D01A23C2632 -31: 400604E71F3F85AC -32: 8F431BCB447A132D -33: 0ED503EBD61D4286 -34: DF7B087B7D315E2C -35: 247A7872587F0507 -36: 7814D6B13A08CA60 -37: ADE44D69362B8199 -38: 49FF8C275D50A175 -39: 5DAC0F53391421C5 -40: B1C316E682E4F314 -41: 72FFFEA2DFD85E08 -42: 0418F02B7A89FC43 -43: 12826A96C5633C97 -44: A4726DA149DBFED1 -45: 5B276374E1EFC6CF -46: A91C4E4804D9A103 -47: 7A2894030C9FE01E -48: 0C59C6FA87DF2DCD -49: A86C6D3C7EAE644D - - -Cipher: multi2 -Key Size: 40 bytes - 0: A69A64BE9EAF56FC - 1: A8AB26A19D7804C6 - 2: D5468EF0C9CDF530 - 3: 2D08D23459949175 - 4: EE66EB212BEC593C - 5: A2D088F95C855F60 - 6: C206004787FEECEE - 7: E4875B7BE2C819B2 - 8: FBC692536393F8C5 - 9: 886DB391EE3BA443 -10: F45359B08EFC56FF -11: 1113E4F4A177E1DC -12: 8A02560CAD0CCF87 -13: CF57FF05E6BB7A67 -14: 21F4EDCF8E8A3D9D -15: 26A26EEFDF51B7F6 -16: E9AF9D2EF2A9EE4A -17: 6866182BC49D09D7 -18: 657E0D732BD7B5CF -19: EFCC33778BC265AE -20: 3556CD607D59C32B -21: A7477466892D114F -22: E210A7B32E9A2E08 -23: 9EBC0B60EB1FEA70 -24: C1E8C3A38E0063B9 -25: 3C9FC4089F87B0D6 -26: 100EA58D00F38495 -27: 3BB3D47D52A81774 -28: F1FA3DE89274A681 -29: 18DF1E38CC0C5230 -30: C3FDCDD9159B0258 -31: EA6ADFAF7D8D3C87 -32: FC4C369E7835461A -33: 791D1D34EBEF801B -34: 3B5A5B64C72B2F77 -35: 55ECED8C5D0F69FC -36: A6DE960F4B81C114 -37: 3C4EDB0671BFFC57 -38: C493186F4BF52F5D -39: 01B2C607B2329E87 -40: 109035510A1AEB20 -41: 0EA4699CA4A161FC -42: 182665FBB15EBD34 -43: 04458216DCB8F55F -44: 850BD374C892FC07 -45: 4C428488381D6FD0 -46: 56FF4CE0AA4132D9 -47: 9F95F0A47D70A317 -48: E12CC913356EFF86 -49: 7E614927A295C45B - - -Cipher: camellia -Key Size: 16 bytes - 0: ED18D83F3153160C5A6D01AC3717515C - 1: 1012886CCDF3FFD25E588BA10D6CE363 - 2: D25562F6943EBE3A7E0EF28D33CF091E - 3: C26FDC4539DD1E6D0330B5836AB24420 - 4: E14A50CE727B74B8CEBEB284FEF3C810 - 5: AABFD72D334F594344C617EF8E8F5741 - 6: E8D941419ABE88060835E9BD375455BB - 7: ED863784E1590139A2CA50D77450300A - 8: 545FCF42030BD764724C3EF5C139B038 - 9: 08C194E007FAA99997D855A759D10743 -10: 3899D3731500C79D2945AFC2980B4C17 -11: 2720FA4B402AB7F1B019AF6248702369 -12: 3FF6C3C90AB4141DEE5FF30EA2047F73 -13: BB5BAF7545AA774C7AA5A58568F96832 -14: 66349C52709EDE0EE34AB6501B420C7C -15: E1E93D923504A5421BAEA5F1D61D4C9A -16: 3C07DFD64B2407BB7575A905F3F31E83 -17: 0FC569AC89ED790F69BBD1E998700C97 -18: 6B6F390AFA1052BD2E8DB0DC261E4D26 -19: CBEA83ED55DA9DED95B87F2BBBEAC37D -20: CE005DECECB98F5937D5ED26FD83154E -21: 738301D76316EC4173F124A9C9D6577A -22: D00A1E40CFB5F2B8FD2C0714580FAD50 -23: 7EBF497C78B72E646EB72A326F1D5C4B -24: 7E0023900F6000D00737242DA8F2E1B1 -25: 0F7737E715BEF0DEA503E355394540A9 -26: 15452DD70DEBF45BEF39782CDB8BB086 -27: E7464917B3AF060BC763D8959DDF90C1 -28: CBE4B90FF8C66672122D53585198773B -29: B7262E6CAA2C14B18EE374DF922CDB98 -30: 01E695E3CD87A2FD4B9C49D08D032DAD -31: AA1686BA0B5C5688D0F370C6E2BFA43C -32: 9448BA348E8E904992C3F4233C226B22 -33: A1DCD1CB810DFB46BDCE6FBE3A192560 -34: 4345D200A309FA8C5A0CE9EC60EE506C -35: 54C7F64D9B411BF90B283ED62686D28F -36: E347E882EC2635081547612B1D9589D1 -37: 36D44CC101B37BB6F6AF68C3FEA3A7B7 -38: F38C2D5B921965D2AFFDBF4EC5BCEC19 -39: F7ED6BF85782F0526301BD1CD1624E67 -40: 7959C134BFC85CA176550EA689F81054 -41: A8FC96504C437F0EFD0BDF6CCEF516D2 -42: 6B88D1A06D7C8C74379FEFE2D6A7C895 -43: 39C21AA165F4A71A161971D89CA5DC32 -44: CC123C40071BF02D282DC83D2AC18226 -45: 0780A63741AE47CD03FA99A74C320E33 -46: DFB0831BA27AA0750701439603B8A805 -47: 0C783CBA4ECD9EEE1F91838259831187 -48: 1456624438B22555B08D59CA50D6E95D -49: D5F463D983A9A6FE9A0B47C245596D40 - -Key Size: 24 bytes - 0: 1D1DAF85EA5CAE19F5F5EA1DC61E5B83 - 1: DDAC7FCF2C2F275C7041E7821AAC84A3 - 2: 591091C3755816AAEB9170D5DF77A0B3 - 3: C4BC965CDC20E6FC039F07DA2CD10BE3 - 4: CD8DA54FC48524EDCFEF985C0C39C961 - 5: 14FA12F39AC3D701A958765B4499FFAC - 6: 2BBEA5F3AA140CFFED9F1EB2BC969D56 - 7: 5F73CA8BF641770D6833A43947D9A5C3 - 8: 3E872D303B882284AB02393D43137450 - 9: 01EF55D4CE182FA03216A83A5128F761 -10: 915C2F5793692A6D118D865783317C58 -11: 4368A442B61D6F12D5447F1CB8854714 -12: 3477ECB27ECFF2D7108ED1297DE80F86 -13: 89C875CB55C1CE80FF2D430921FADB05 -14: C5AAFE7A4588D4D9039E4552B3FC9B02 -15: BF1E7509405AB219B540BDD0D3DE7528 -16: 7E5CC85B6563099B902638B7E0D09728 -17: FF04D2350647F117F81DA037A9E11946 -18: EA294A53395A20B391B11AB9F97262F3 -19: 448C801307E9405F740623BA55A45639 -20: 62032AE6EB01322233FB321B2D6A8C38 -21: 79A54FFB9CA25AE315BA0E7B6E59EA99 -22: EDE7E634C396926876A49DB3C0E261E1 -23: E9DA5106B8BD33391C28407E9B3758BD -24: D8EAF9F744E060695AD1F55F85AF3D76 -25: F1E61F0F467C0785B6053332129114EA -26: 3119CACB24B012F3B96EFAD3FB856AFB -27: 97753ACDAFD6224E5D289BF76673A73A -28: 8D5912FFFD628736C64B3DE01DF1E674 -29: 8951CEDB758DF5EA5D2A78B2A08480EE -30: 3C0FC9DFD8CF79A5F9F75CC43B1A9247 -31: 4C7047481FE0849EA0416BDC00A52321 -32: 97034388AE8553570366EDFB9F6D618F -33: F16BCC0FB2B77CCBDC5EF7AB2233599D -34: 6D94D041196F43F0224B1DAC84165E7C -35: 313C6BA0AD767259860DCF8003F2F5A2 -36: C5F835DCF63D1C40E56DBAC7ADCE7F3C -37: DAFAFF6BB46EA9280562E5DDFA793BA8 -38: 5C8C0570B06C595E296DD4A9FB864FCE -39: 72B433F78D7CA638C2ADA09D99CFB769 -40: B6D7A6C47339743E9739D35D0F08A25D -41: 6CFD73F9E9781FFCE53C69AD2EF11E03 -42: B7F0BA994EF90642B80FDD798666D752 -43: DD49766125316ED4F546B246A2CFA23A -44: 8ED53D6CEF3CFB9DB0147F02656EDA35 -45: 95690401D61C84A013EC6D25CCAC5CD1 -46: 7693648B4A6CA804B6F01AE67816746C -47: F08C5898CE7970C41A5F8C05882CAB8B -48: 91EC0EC1CF839B58009E6CAAB3FD67A0 -49: 853DFA14A029EB8FB8D693B0A65306A1 - -Key Size: 32 bytes - 0: 5F77DC44E5E6701E8755C1FA176E2434 - 1: 5C1F70FC144C66D82D8F21DD2A0BA54E - 2: A98317BC656475F83E83062A69A17EF6 - 3: D5B8C0DB1095E65D49CEC82D78FD4C7E - 4: 37A537292409ABE5B922DD97EC0F6CA4 - 5: C7FD40883DE6BBC6059327DA586AD96E - 6: F4D19C443A2195B66085DACA7EFFDADF - 7: 6F12FD74B4D25C9F2856CAA1BA32461E - 8: DFC00046F41BC27684321B980BF68F6E - 9: 4A8BECB6A8D57002FCC6FE08B6D31118 -10: 859562FB3727E535BD4A914907822545 -11: EBA65EA3BD622DC044CA5384E568C65F -12: 79C16A751FBE22340F30462600724324 -13: 8F4FB71B5B3E0C1DB870B4BC81E995D0 -14: 4B82E7E8D64D8EF9D78DA944B292CED9 -15: D873F8D7125A63EBB04473F7331B1975 -16: 2FA25AF9E8D5A4DC82CAD98505E5DA60 -17: C80C24625096E6E9852A6F9EE12735BB -18: 10D4434CB795DC06E926CFA3B43D2368 -19: 070795AEA2765A443213F9CA909DF6C4 -20: 7184D2F5644306FB6DD55F1C90C111CA -21: F4FAEDF12FB40DE7CE7B08121A340557 -22: 86CE014AA863FD3030A26E6F8C178673 -23: 5A46BF2B3F14D5FEA884C3361EA87ED3 -24: 456584515D983D17ED4F3AE944BFB2C4 -25: E1E8F394691C2A9123023A8EE3FCBBEF -26: AC73E8BD1758850DEDAA3817B01E6353 -27: 15AE5395CBC3371F81A6F5B05C52671F -28: F15AA72D34C4E0EEF8DDDDA90D9A9539 -29: 3325E709043735898EA242E94D169112 -30: 044AB447754DADD4E2709FEE08D5CEA2 -31: E02DD5E86D32B3A6CC7F0016375AEC5F -32: 790278BD19E2860618E24DC69993F92B -33: F776D24FD90A43A78D000CFC1189E56A -34: A3EE4A3D121280750F7C70E55DD40FF4 -35: 32928BBBF98DF4B9E107599DFB30364F -36: B3E9296B529118B656D27AFF0F4D1A55 -37: 4668FD77100255C3406281EC813719AE -38: 16F9FF27B26F13300DB8DEE2EDD023AA -39: 9295F8435D688D12BE631A31B2531482 -40: D86917DF41ED4342C0ABF10628DBD1B4 -41: 1F5215B987C3F079769292E65D04B823 -42: F68B98BD2F12AACEBE78666AA83CA7D0 -43: 09BB635B67279F5A6B1D5C5D880A1357 -44: AE4ABBCC1D35CD8C4C254111D5F27158 -45: 5552B3E39DE67F759799A686222EE4EC -46: 1CA439434B9FD2F24561A32A0A2A79C5 -47: 0E33BE7CE3B9A5CFF00A73BD27DFE9EF -48: 6B7056FDC97983173D6B3D5BFC9B09B8 -49: DA293A4CB96FE3608CFFD89B927C9ED6 - - diff --git a/src/libtomcrypt/notes/eax_tv.txt b/src/libtomcrypt/notes/eax_tv.txt deleted file mode 100644 index 3d11a17802..0000000000 --- a/src/libtomcrypt/notes/eax_tv.txt +++ /dev/null @@ -1,569 +0,0 @@ -EAX Test Vectors. Uses the 00010203...NN-1 pattern for header/nonce/plaintext/key. The outputs -are of the form ciphertext,tag for a given NN. The key for step N>1 is the tag of the previous -step repeated sufficiently. - -EAX-aes (16 byte key) - 0: , 9AD07E7DBFF301F505DE596B9615DFFF - 1: 47, 57C4AC75A42D05260AFA093ACD4499ED - 2: C4E2, 26C5AB00325306772E6F6E4C8093F3D2 - 3: 16177B, 852260F91F27898D4FC176E311F6E1D1 - 4: F09F68BE, 700766CA231643B5D60C3B91B1B700C1 - 5: 8472705EDF, AC4C3359326EEA4CF71FC03E0E0292F2 - 6: 14C25EB5FD0D, 8DBD749CA79CCF11C1B370F8C975858C - 7: F6A37F60670A85, AFBD1D5921557187504ADE61014C9622 - 8: 1AACFEAE8FBAD833, 82F477325D6F76BB81940AE25F9801C2 - 9: 069414324EC293697C, B980E21C09CA129B69E9032D980A9DC5 - 10: D8174DE9A2FC92B7DA9C, 1E42CC58BA2C8BFD83806444EA29DB61 - 11: 2C087DEA30F8B7EE510990, 83DB400A080C4D43CAA6EC3F1085A923 - 12: F36B93C272A703D3422C6A11, 1370C3AF2F3392916364BBBCC2C62EC1 - 13: A0F33477BAE2E28E6747AA3193, B626DC719528CAC65DB0EF94E35422CE - 14: FCF5193506052E8BFA095C1A5205, F5BD02E0B3C91CC7D6FAAA8A9A76CE6A - 15: 3797D7F8599B8EEAB39C56241880DC, 0B70003E77146B903F06EF294FECD517 - 16: C4BAD0E0356FFD369110C048D45D81BE, DE7C2B1D83BE2CC8EA402ABE1038BB79 - 17: AF5C358BD31CDCAC2F0EA5252F1C3BE1E4, 2D700986F93B22DFE6695C2A243B4E42 - 18: 7DEF9056FBDAF491D7206B26B19DEF617AA1, E71A7D00BE972D85C77931D7591B2151 - 19: 6E9B2C0A90BF9D38A6EA3B5D2B9B2D97F938EB, 5B483D7F15C39602C2918181E57DA341 - 20: 7C5F68DEE9BBA3B04F11D5FC7C9C7FE6E8B5025C, 0AE6A12D37A9C10BB1A494E16705DC05 - 21: AF0A886BF673BC72045FC074F06A0176C96105E2E6, 06B2DC9A2868C23F86D710E01E37E07B - 22: 5F228A986DFE4301EDBAF07A02E114F1B30932995CD1, 74EBF68627C78B1FD024A59B56B2A8FA - 23: 911322F60555118CBECD8DD82F186AC19514316E8D48BA, B6A8BAF2F175CD0C71B63B1EF37E185E - 24: E7F52730CFB808EFDB376A5D5DF31A7EF8292DC5FC37E9BC, BA2AD158A2D2E5CE01296402B592E1DB - 25: B3F8D7CA47D8D86E94D670AFBAFA3B8D9E186C97DC029D4705, 709D2D2B9975D4729C19D4EAC430E65E - 26: 7178FEC027AFADDC2C03518E75CF34D207CAC2EB1537A0DBA520, A315F034CE5E66601444402520F55DE2 - 27: FC230B2B8522F53459D0B968421469BBA7E683ACB0190393B2870F, 48679A78E470E175CF3D3E9B46CEDFCE - 28: 35A641127C78C721ECDC50866C21637FDC9515E41CE60F09015EA713, 0062987222F6412B7AAF8A9ABF6FBF98 - 29: 3D42D6C113421743C08A6F682CFA0E517D5531BB66241C02EC4DCC26F7, B1AAFE11FA2D6E0C870177DDD7F98FF0 - 30: DAD065B4669B7C59C8392D8E7BD7E64BC01CEFFF27E335B25A328D356F0E, 8973B9B9ECF26DAB58CCF0787EE928E5 - 31: EBE626F9E241FD233D9781C359430C982667AA26921B62E98FAEC502C01B0B, 2AC0D7052A2CDCCE8E26FEA7595198AA - 32: 64D842B66796A797C2B4C6905742FDF2148FFC445E192F9E03B53810C082F788, 9778B345EC12D222DCC6DBABD2651750 - -EAX-blowfish (8 byte key) - 0: , D8C4C23A6AC0B7B7 - 1: 2A, 5E0E4BDDB60772FB - 2: 7695, 7581B16CCC9C45F1 - 3: EB14C8, 6223A121CFA216C7 - 4: 5A5C809C, 4A47658796337D6A - 5: 8BC2041181, E1FBA8DBA00571FC - 6: 89C666F015FA, 2B4A76A0E699FCFE - 7: 86C1FA92484AF6, 31B3B738A261D6F5 - 8: D1F401C145C9328B, 4C4A045EB489F59C - 9: 70C9C7753698324A73, AB298B5B20567EB4 - 10: A50D9D88DC101B6DC8D2, 529DFCBFD13B8E6C - 11: 7CC2885C2BE79C44F28FF2, 566255022B40C81C - 12: 6902D58347C29250EE07981C, 34619AF18E14C690 - 13: AB6C3C4AD3EC45143392B642DA, E6D2DD323DA175BB - 14: 7065B28BA8AB67B2FB7B6D5E3FAF, AEDCAA54F4B0772F - 15: CBBA14A74AD4ADC0EF036EDAE42D51, F2BFFA4D81BAC034 - 16: 60A315193F58144F5701D547C79FEEED, 912FDBDB05467DF5 - -EAX-xtea (16 byte key) - 0: , A04FAC8D0416F081 - 1: 5E, F95DAA99F8FE28E9 - 2: B6A7, E2A05E1F1E6D17B5 - 3: 27D698, CCC0CC54F40DA243 - 4: C2E81CCC, 283AB8F109D287ED - 5: 51B99DF694, A9637DB356B4BC0C - 6: C2ED3E79A4F2, 413D3A65FFE803BA - 7: 40E35BE6CA019C, 1B68833B90E4E026 - 8: C246C2B5ACEBEB08, 50CFEB01DEC3BB1F - 9: 35E2F7AAB57842D50F, 617804483BFFCA9D - 10: 2F855AB7A4664958300D, 6F054767FE484664 - 11: 2824A5486D1B621D0F992A, 238566B9F56ECAB1 - 12: BF5C121A6144AA0CC05A380E, 63F4DA4B898FB2A8 - 13: 2EB53E8A4698EDEBB990FC65E6, 7DFFE0E43187D10C - 14: 85F77FD150C6649F5826AD45D50D, AA660F37975768FC - 15: 8B4EB3750814EE7E8FC6B97B3ED1ED, F79545FB1F1C389B - 16: 980EB7FCEEE37558BEDA0E938325F608, 2FAA9235BFA3EA30 - -EAX-rc5 (8 byte key) - 0: , 169C7954341EF44D - 1: 22, DABFDA9A0B0BA067 - 2: 2E54, 6A3D6D9AA5877C5A - 3: 2A6ECF, 2A34A3AF5DE8919E - 4: 9CC5F84F, D3F673EDAF75E3B5 - 5: FF5611756C, CC647FAAC8D49BF1 - 6: 74C939BEB31C, C335999CCFE8F5FA - 7: 7976B6F7709B5F, 2A7969C5FD063A88 - 8: 421EEC5022276174, 2C9BFB1EAC3C54A2 - 9: 6A4761CD266B1C0ECB, 3EA3CCEBC85FAC4E - 10: 7C09201098E764239A2E, 8043ABA9BF4D5AEE - 11: 8CE26277562F646DE33C88, D72AED48895E3B40 - 12: 52150F44D37D121560DA87F6, 58E865E22B485906 - 13: BA0A73B45F93ECFBFC3AB3D8D0, 683D52FA47FB1A52 - 14: 96546CBE01054AD24CC95DB54724, D80D0D530E5D1DDE - 15: 61E654BB18CD26FC36C09F874DC2C7, C65884CB9D9FEC1E - 16: 1D77B8BF02CDEAB4A707C07628826D5B, F18D1730C3D64701 - -EAX-rc6 (16 byte key) - 0: , 1DF8B0B92A3F0C951C425AF4830E63FD - 1: 1A, 8A2959EBBE90180999994DEB7036DB85 - 2: 435D, 7EF00CB57DB7B4155DB530D75CE6B025 - 3: 08A6CF, 2ED6AF0F2D5BAB05F623D389480A01F2 - 4: A86E54D3, FC69547C8BD922A5BF2F7B26C4D20F98 - 5: ED0822E439, 0007A3C6DEFC6C912C0E5B853B520368 - 6: 7BEFC7FD4054, D32C43A4D1086D57C5BCFAEE04EBC600 - 7: 5235E58E79287C, A27E9C781327C0FC7C55410EB0C828A9 - 8: CEB5EE99BE521F4D, 547F46383987F2A3582A81A3BCF9B280 - 9: 0358B063D5F99C3770, C0A73730512CDA6AD49599775D59EDA1 - 10: 434B9AEE07DFADD0A332, 499BD88881E558E09A8E822BE27D2496 - 11: D47849E650F350BB622D74, 638E37A84E7FAAF8F5D77F1B061773DC - 12: 814592F568284085E79A024B, 9EB1405E8422FE50BC0D88D837A2C650 - 13: 6F2B55EC91B591082053AF692E, C48F91EF01AA43A1EE3B36D233DDD48B - 14: 506CBDD2901838EE2F178B6953DA, 03778957F536509BFCA577B23A18F726 - 15: 446EE435D3D1848B51BB8C5F7BE4A1, 1129EAEAADE534940546D43242A4C839 - 16: FB9D2B150C42465B1685D8F069CC06DB, 41E2940F5DC63CB4E2FBEC25ED8A31E6 - 17: 9684F683260107BE8FEBBEE1D3EEDAA7BD, BAE7C116F7FF96631F4ACEE95C65CEF3 - 18: 5082B1FE48CD3AB58F63C2DCFDD4069AC736, 19AC7B8EE315CBB7131A283851B32266 - 19: 8C72AE495B6F003A3C784D144E84E88885F78E, FA4CEC023740A8D670E351FBCF62C1CB - 20: 815D6361C7AE34C9D796ADF9C71ABC46AEF88BC9, 9A1F7288C61A6623B9A82748137ED7CC - 21: 904A853E2E96BD2B85AAB3F5DFB900E9B3642EE667, 9AA90DBDD461CAD20495DCFBCB513DD2 - 22: 79D738A462F727B3D3C529ED999B6FDCCD991D1C5A4D, BF0987BEDDE650D73CAE7D380FED3431 - 23: B2DEFDB7D503A84E83155A04B8DE8C8DBB68C2FC475007, B7CE900CF43CD518024123C76F6DA328 - 24: 9E723E15439E12F6C46DF8A309AE1E97B6FD18436259CFB0, DF8B6E1E23512CC4CF5FF531A1908F69 - 25: A7F0AD03CEBCC9202718AA164886E1026975306A664C5AC7A9, 4A771BF8B9A4325705C85E5499FD98E9 - 26: A53A92AD1C6835F28E04EF591E783D36F3D76E489B31B87BEB7A, AA263B52A6E6A043DE4D7029D4DC73F5 - 27: 79BE3C38291A7F77E932C8A9DEAC08DE6442EA9B3895B101A14E7B, 33B84DE06342E675E019CD0237292ED0 - 28: FA108123C5A69571CFDFE8C3D00535121FDE3096DDC0D700F8F26A5A, 764025D7CA1A3F2C54D28956423B0C77 - 29: 36EC2D67FD977BD2B73DB6D8EB756B3EADA13690E1B6DFC12A4781B34B, 4BC6B38DE3B02283D92F4DF19A5C48C5 - 30: 96D3243C945905C9732B5927E46F00886D511463B38C86002FC26B65AB8C, 5B5511CDEC35687AB8425AB22D58B4F1 - 31: 9CF83B87BEA3374AF7722E999863E3DABB858B0383383EAC7757F5B80FD44B, 1E0CBC961940FDA93B73A92DACFD67F3 - 32: CE3BC3C9FA5EF4AFE5272B3EDD24B1B003FED2C2E501528CFF44D3FABFF52CB4, DC94FDDC78AAB2B7CAA1E1EF149AC355 - -EAX-safer+ (16 byte key) - 0: , B120C7B37450C46189712E4DFD1F0C44 - 1: CA, 82BA1869C5FF1EF2A4F6ADC1E7DC1F1D - 2: DD20, 6BD5601B16C9943A84AC1F99A176E6D1 - 3: C1C09F, 0911DC63AA414C004E2BD825BECDC93B - 4: 27E43F59, BD858F084B082F76814DC385E1FB20D1 - 5: 2A9A92F246, 5ADC4A32491934AC0BD00FCE686B26F1 - 6: 52C78C0CD6F4, F35886F46C03EDCA10B3D01CF07B1E0A - 7: 23E0D3CED3795F, FE33D96FC98B78A30C0A412C60E93992 - 8: CD3FC9961559F239, 9982364A61609FC41068260267231EE9 - 9: 6EA46CB7AD7505C1BC, BB15053EF0F78B9091B3064118F3E9BF - 10: 05D9BA230A56CCA0703A, 1338E68E3DC992B6EB2685C668E75869 - 11: 7AAD6049DFDCA6771AE42B, 35267E431051E1812495615324C4CBE6 - 12: 8695091532B83B23C296F620, 7B2EEA861E9A91E6B6A911E10FC3FDD1 - 13: D909DA4BC7372ACAEA78E6A0EE, EA6C1CD16180DF0B07F4E204A4B4FACB - 14: 7DEC8443600D0563AEFE87A2064F, DA454728069B3B409889664783588189 - 15: C042FE656742CD2FE5D9C212D18C6C, 5929E4AECC2CA047BAE948E7023FE4D0 - 16: 0B84D3CF59EEF7319633F4A397D47CF8, 31F892FFDB7535DF5D9143456E404163 - 17: 8C9E57AAFA7969B142742B63AB73286600, C418231C44F96660DDBA8C26B3BB3681 - 18: E9EED66D370A3A6A39C7E0E570D96F807EAC, A4AFE8D1D3C31B956A3BDBD043E7A665 - 19: 1A5D47992DA5597D1449B4C8DD47B7404C7657, F3ECEE5182014FC3365FDBC4C33CC06A - 20: E7C7945FD1AFD3F5DCE666D8A5A2E8A3C11A7A5F, 86D78B2FBA7597B8806BED505B52BDF6 - 21: 9E2165B47B29CBC4ACD50660E011D691F061209969, E9B1E860BD02085177E1A94E1EE6F3F0 - 22: 48EA2945C8DD3FE09407BAC8973A861DB15B788C8FFD, 502926712EDB1B3DD13806052C6C75D7 - 23: F37D46B35B60819EA52B00457D79155C04B55972D0DFA9, BB2B7D210BF0570F422640BF81F39B9E - 24: 12E85C0C78227205CC682360C79E35BF58EC6551CF8FE2D0, 042990D7A58D458C570A15DD375DB4E7 - 25: 4F6C15109DE980DD14A7F4C27F48671E4787C53A564232F427, B097A5990D8067DD89C21473150C070F - 26: AAC472E49DB101B564A8A01E2C80C0C6AE9065D332C2DE79FAB6, ACDD587A7DB86542E195DF73AF1C1CBC - 27: B9912CE18019C31692A1F7E11D9CCB20297ACCB9DC62C47C01D2C2, B0ACBF028CA5B15E0035D2EB8CA916BE - 28: B4F2B1FE14A1ECDC9C8EA1A0120395E6ED1E69D3FC85DD0F3F90F350, 9A561EBC769369B95B9CB74FC6AC27D3 - 29: 3FE397C8AD02689B7437A37861F0907AF1F6014A293B46419348771C5A, 6B7BEB9BD5018FECD71BE5081C7C2544 - 30: 5019089142199F7207E1B7731B8B247A18A685B231499DF12A73F5D67D37, 307E93446777005BA1B088F178A0DB6E - 31: EAE8F9F02F8DB3D70B78B08CFB0949D99F1A86C958A8E3823736BCEAB86BE1, 6C94F48591C18BF9C450515B73379973 - 32: B9C795F7A87305B4AD36DBA10B3B1C70B329D29E49C8C6A932D96A74334AEE4A, D18E6E233FEFD6E5C7148BDC1504299C - -EAX-twofish (16 byte key) - 0: , DB0C02CB069E3773296D3BD4A87A381B - 1: 99, 7D21D19E9C440F68E99F1F2EA2668694 - 2: 0696, EA590EC417C88E23FD23917F9ECFB0C6 - 3: B9B082, 82D4C9B68DDB02C906496413E13A2D68 - 4: D6B29D74, 5BCE5CA4F662E883BF7FCAAE5FB2CE01 - 5: A59C9CB009, CBFB04226D1029A7EC9D64A48A6729BE - 6: F4924FE3E355, 3D85B3900DECA0528C815F1447A1F209 - 7: 679C88D52FB519, 931C7A863C3701D8015FDBD8696C6C30 - 8: 26DA41C0D115375E, 7627E23E791A4DCB0FA5ED71B1ED2288 - 9: 8FEC6EB7016AD2B178, F65ED0286A724F0CB2EA317D5022B0D8 - 10: B5F22415B1334133C531, 87C4F3A8991BBB85984BC4D3305A5CF1 - 11: 23E1D0ED2E820AFE7DA2FE, 100499F1093FAB2ECF73B643594E98E3 - 12: 79519ABA91F46B8DAD6D5335, FBDCD1FCDB20AB99135F28A714C6992F - 13: 5968D0B4198A0AAD3D0395018F, 781F22E2DA98F83398FCF911B2010057 - 14: 4E55B14432B601E3EF2EF567CB15, 8BF6E53D7657E56EA3DA1BFD9C9EC06E - 15: 6ED89651CE19B3DD1EE5C8780B5015, 131CFD657D32D4E1B35140ADDCA0E13A - 16: 2295A968B4D072D12757756247554850, F35FAC95C2AA4155450EAAA6E2E789B5 - 17: F9B2AA2AA502EA79BBA0C5EAD932B8E1EE, 0ED81AA40B9BF39A9AAEDDDB7A04BEA6 - 18: 385055F1C1C26C0472A504B4CD225DCA55FE, 24831680B56368231AC54227D737F582 - 19: 771529585C741A3F8B1C973709892F255A99EE, 2A132B4BF96FD5109DB04459103F5E84 - 20: E7A2197D9FAA8AB8B303B5EC71AE34AD5EC5DD66, CCAB6518371EC8E0A9E9EE4F7CA5878B - 21: 279E54F755EAC6B57375B9EC4406E43DB3139D740C, 7B6F26F2C0ECC9F2DF4EDD7513E6E0B7 - 22: 27816AA94CBA2BF98E49E595AF5B3FAD12BF1D6F1AC6, D04876C5492D275F15C834E3CF794F0E - 23: B5658DC148855F68B282211D879F688F3C142FE555CF81, 4539CDA8A65DB9047AAD76B421B81120 - 24: 72F0BD4F939C2C9B4FA734DCB0AE4FB9BD342BC8459ED2FE, CEA8469BC0457EBF3418C1114288C904 - 25: 70568245E6E6BD5D11AD0C74030D7AE08BA05057DEA0FBF4AD, 71554FDE6B87477A51EE4499D78783D2 - 26: 8702D35BE07D7ADF70684046CC6C72FBBBF821E0BBCCBC973601, 33CC6FBFDA15E306919E0C3BB2E22BB6 - 27: 0BA23F4A6174165D4A8BA80B7C875340B0F8B2A6967D34E106BC22, 00E6679496714236EECEC84B9AF3072E - 28: B9E25ABA84C6BD95B5149E7616FE2E1D6FAACEAAD77A636C60279176, 8D8AD0B9D4C709E1DA370EE01611482A - 29: 74759711F6D542581F9F83498FB616638D092732BA07109BF4B5BE045C, 71A40DC777BD09F75362F7B20E0B7576 - 30: ADBF7E98926484BA2C7F6CD7CD9734FC19265F68AF3BFCAEB025F6296E37, 8DF15B5F69B67F7DABE44E3666B55047 - 31: 2DC26D449379997D110309B2A0DC2760FCE8CADB4B14ED580F86C70F69C9BA, EFCB60EB2B25737E256BC76700B198EF - 32: 2B1890EB9FC0B8293E45D42D2126F4072754AA54E220C853C5F20FBA86BE0795, 1A1B15BBC287372FB9AF035FB124B6A1 - -EAX-safer-k64 (8 byte key) - 0: , 9065118C8F6F7842 - 1: A1, 1926B3F5112C33BA - 2: 2E9A, 5FA6078A0AA7B7C8 - 3: 56FCE2, 984E385F9441FEC8 - 4: C33ACE8A, 24AC1CBBCCD0D00A - 5: 24307E196B, DD2D52EFCA571B68 - 6: 31471EAA5155, EB41C2B36FAAA774 - 7: 03D397F6CFFF62, 7DFBC8485C8B169B - 8: 8FA39E282C21B5B2, 2C7EC769966B36D7 - 9: FEA5402D9A8BE34946, A058E165B5FFB556 - 10: 6CDEF76554CA845193F0, FED516001FFE039A - 11: DC50D19E98463543D94820, 8F9CCF32394498A1 - 12: 42D8DC34F1974FB4EB2535D7, 77F648526BCBB5AF - 13: B75F1299EF6211A6318F6A8EAA, C5086AEA1BE7640B - 14: 1E28D68373330829DD1FFC5D083E, 33EDA06A7B5929A2 - 15: 85529CF87C4706751B0D47CC89CEA6, D031905D6141CBED - 16: FE5CB61BAF93B30ED3C296EE85F51864, CC484888F0ABD922 - -EAX-safer-sk64 (8 byte key) - 0: , 5254AB3079CDCB78 - 1: 75, 798DCF14FEF8F4D1 - 2: 0300, D5FCA75DAC97849C - 3: 520F98, 10E357957CE20898 - 4: 80E2764D, 5C7F46656C6A46EA - 5: C48960CDAA, 3CCF44BD41F01CA8 - 6: E0E60BD9AA2C, EBB493983FCEE79D - 7: D13D8804906A1B, 6EDDCA919978F0B6 - 8: B7AE14C37A343BFB, 2369E38A9B686747 - 9: 5DE326BBCC7D0D35E9, 041E5EE8568E941C - 10: 13494F5B0635BA3D6E53, EAEEA8AFA55141DD - 11: A9BB35B14C831FDA0D83F7, 4002A696F1363987 - 12: E242043A1C355409819FABFC, 63A085B8886C5FDC - 13: 204598B889272C6FE694BDBB4D, 194A1530138EFECE - 14: EE3F39E0823A82615679C664DEBF, 1EFF8134C8BEFB3A - 15: 8579D87FD3B5E2780BC229665F1D1B, A832CD3E1C1C2289 - 16: 74D7290D72DA67C4A9EAD434AE3A0A85, 96BAA615A5253CB5 - -EAX-safer-k128 (16 byte key) - 0: , 7E32E3F943777EE7 - 1: D1, BA00336F561731A7 - 2: F6D7, 8E3862846CD1F482 - 3: 5323B5, BD1B8C27B061969B - 4: A3EC3416, 170BBB9CE17D1D62 - 5: 0C74D66716, 7BD024B890C5CE01 - 6: 6158A630EB37, B5C5BD0652ACB712 - 7: 17F2D0E019947D, F9FF81E2638EC21C - 8: 68E135CC154509C8, AA9EAEF8426886AA - 9: EDB1ABE0B486749C21, 355C99E4651C0400 - 10: DB0C30E9367A72E8F5B2, 631B5671B8A1DB9A - 11: D4E5453D9A4C9DB5170FCE, 75A2DF0042E14D82 - 12: 3F429CC9A550CBDA44107AA7, 2C2977EA13FEBD45 - 13: A7CA22A97C2361171B415E7083, BFE81185F31727A8 - 14: 170F79D8B0E3F77299C44208C5B1, D5ED9F9459DF9C22 - 15: 2E24312D2AE5D5F09D5410900A4BBA, 2FC865CA96EA5A7E - 16: 8F3C49A316BA27067FF2C6D99EC8C846, 9D840F40CDB62E4B - -EAX-safer-sk128 (16 byte key) - 0: , 22D90A75BBA5F298 - 1: 3F, 98C31AB2DE61DE82 - 2: 584D, F4701D4A1A09928C - 3: B9DEAD, 6E221A98505153DA - 4: 06D4A6EB, 0E57C51B96BA13B6 - 5: 7B58B441CA, E28CCF271F5D0A29 - 6: 7950E0D1EC24, 2ACDDE6E38180C07 - 7: 65A4F4E098D7C6, 7DC1C9E9602BACF2 - 8: FEBE4E72BAA0848F, C4607EA3F138BAD9 - 9: 9B7BD6D6D655985AA3, 8B2C58A9530EA6AC - 10: 60C92F925D1478470203, 51E6F5F6DC996F84 - 11: 7B40769370E651F64AA654, 74F1F8A8D3F4B9AF - 12: 7215832C2FB9C54DF7A9C686, 9BF9AEF14F9151D1 - 13: AD0F9C79008572AB8AE2466EFF, F375D0583D921B69 - 14: C05076E2C330A0D25D7CEC80597F, 843C12F84B00A8E0 - 15: D18F0563AB0278140B0CD9A9B07B34, 262B1688E16A171E - 16: 650747091F5C532EE37D2D78EE1EC605, 1BAC36144F9A0E8D - -EAX-rc2 (8 byte key) - 0: , D6CC8632EEE0F46B - 1: 4C, EA19572CB8970CB4 - 2: 5537, 3EDD3253F6D0C1A8 - 3: 206FA6, 20FA88F03F240D31 - 4: 17EE8B40, 702E8194F1FCBFDE - 5: 2A89287136, 31C5534786E15FB3 - 6: 3A6AEDC7066B, 3C663A4081E1D243 - 7: 8BC5203947A644, 6AAC806C92BFBD6E - 8: 2E0274BBE14D21A3, CEB0E0CB73C3664C - 9: 9C4B292B0CF17E3A29, F23CD535559023EC - 10: 8E322734308F85662877, 46363D7EFC322821 - 11: C413C405767FF5F98E3667, E7BA35D8F3678E7E - 12: D77806B7A218098B1569EADC, BA67C306E5C0181B - 13: 4BE5EF74F9E9799A4D636FEA9F, 4C511C44ADBA4030 - 14: 7E19969170C2C8D8AEBA8C7FBC2C, 54CC6D466A2DF6DA - 15: 2EF1CEDC1DD3403CF440FC5561BE33, 61C6FB277E93701F - 16: DE052719153EBACE9D7B19F52AC4282F, 4AC2A96F2FA8634C - -EAX-des (8 byte key) - 0: , 44048B7F240B6F5F - 1: 0A, 37009B7D4E09953A - 2: 03BA, BFD2FD7758961728 - 3: 37EE10, 16A6AF96DE888A19 - 4: 07F44290, 100CA84AA0EDAA1D - 5: 389EF0023B, 9614FB800A533268 - 6: 3F4DBA8AA01C, EFA6B55B7ED5E40F - 7: 8C7B837896EAE7, C113CE8F664CE3D4 - 8: 7011D993D8EDB0C7, B4C370A919F60497 - 9: 0DEB30A31351B13D7B, 00ABC82DC5F3A1AF - 10: 8D3897B2CBE323D6EE1C, 7A2D15627CA1441B - 11: DBC002C817DEBFB419F94B, D8EB87F86D6ACDEF - 12: 17048E2976FA85AA849E9A80, 229FCD1C9D1E3B9C - 13: 30B989EF646544885A478AC198, C1B7EB4F799105C8 - 14: 5C2E12A7F118A08D6FD585F9C839, C358679FEE6FE7D7 - 15: 8D1A1E888BBB8648E638C4E74E11B8, 685E006C441448B8 - 16: 93AE906B8BE4EAC8ED6D8F48F04A7AFF, 71DD7AF752FE28FB - -EAX-3des (24 byte key) - 0: , 8914311BB990B725 - 1: D8, 2094EDC5D03E54B1 - 2: FEE5, 781CFB0EBE3895CA - 3: DECF5E, 59918E8A5C4B459B - 4: BD583AAD, 2013BEEBEEA795A1 - 5: 2BC01C6C78, 0B1134DBBEAB5D3F - 6: 4D5EAF01A895, AB4D17516ECBA50A - 7: AF229F90614480, D3113C0A9D133CD4 - 8: BCA6F375DF4568E0, 8E9EAEC8E77786BC - 9: 575F34219E6DD8DB4C, B40C75139E5D1860 - 10: A199B8AC433B615EC96F, 774AF803698ADE3D - 11: 718A2975DD9A872A68AE10, 3B9460F849CBA7FB - 12: AB38E148180F6E2FFBB96F91, E3EE3B8FC50DADBC - 13: EB10E0233507459D4A6C29EE80, 8D90B46BB1EAB27E - 14: EB48559C320DFB056C37458E19B5, 9315F0C4AF8500EB - 15: 9E8C73EADA105749B5D8D97392EDC3, 2E749EE66C1E6A16 - 16: 600FA4149AF252C87B828C780AEFF8BC, 33D7D11DCDC19936 - -EAX-cast5 (8 byte key) - 0: , 382FB8F7E9F69FDC - 1: 99, 20DA959849B3F7AB - 2: C54B, D05547C6AFA3484A - 3: 579836, AAA92B2321FC50C5 - 4: FEB7AE55, 639EDF01C4FB965D - 5: EA8A6023FA, 01274B3ED5CE102C - 6: B7C4E995121F, 712BFE27CAFF6DDE - 7: F44236660B0004, FAC51D1DF8EC7093 - 8: 01CD7E3D0BF29E8A, 049C47A45D868D0B - 9: DAB170493DFD6E0365, 6F3AEDD9A3ECF4FD - 10: 82C9EEC4803D9CD11FA8, 32683C0A9128C6EA - 11: 324AC59E87B244ECE0F32F, F6B095AAB49353CF - 12: DBDDAB11D02C9CA5843C406E, EA728FC46DDD3B04 - 13: D67376C2A4AD92E7DD80E39303, CAF72B7E7C237EB3 - 14: F2B9BBEF08036C2982C6DDD06918, 70A29D780C22752C - 15: 96E3D9141F8EBF520540C2BC9A9C23, CEFC86A1CD48203D - 16: 70CABBA983179106AE7FCD5F1F31D5C3, BF7F9168F4F82F56 - -EAX-noekeon (16 byte key) - 0: , 5CB584CC68025F830B42371B9CCE99EB - 1: 65, 69D866C00E11E4311ADCD50AE2F91D03 - 2: 80D2, DA0499598F478A7FF53324908EB4DC74 - 3: 86EFB4, 7DC1556C65F9E7CF2E3A357B38E326D1 - 4: 87387A77, 7B58F421766918A179A999520A6E3781 - 5: D18B9788C6, 924A2FF178FD06BF292A605FCB27BDD9 - 6: 0075EC03ECD1, 78F553564A25A574E6A4857778A2DB43 - 7: 5BF96EC79C2E88, C49CBD1C4F631B35D5A3B764251870D2 - 8: 70DF3B35F6D9B822, 42351BF5C947AF7A0E1F852199B5840C - 9: 2E53748525AF367861, 4986BC390AA0DA1E4E78CB2148A2C513 - 10: 05DE8BAD8C975ACECF87, 1C0F1C18FB8682D76AF9E48D3547D88E - 11: 8B2B1D70F6A74059503F42, 839EE120ADC8BF08CD9A7DF6393D1E51 - 12: 9D7F92F08953B5B300A7410E, 603A43432DAB26882797BB5AA7A75D28 - 13: 4CA551DDB4BBCFA45BF71C49DA, D2743508826E3E39151F21C0AD81C8DC - 14: BAE72091E78013369AF5D0294AC6, 3F0D391BF01C3BA116A9CAF50DC28307 - 15: B037AFB65588B95BC86E1430E0746A, 2399A4C31F55310AE2C4A2FE3379C74F - 16: 842F0B29888C43999545D29CFEFA58DD, 9B6E4FED2A6BE59DC2DFAB407D2FD124 - 17: 86F7DA57E5C9DE9C88EFC1ED0CA61F76A4, E7278F365289FD0C484A166FA9EDB801 - 18: CB94AD60C1FBDC9868DDE0D4674251A644B5, D857CE47FB963DFBE7983D183695803B - 19: 5A0B24FF167EB133808A3FBF89D9895F30BE1C, 488362E61725BE723CE892F550AF028A - 20: 60D43A8C29F1714588672847FA00DE771F2C3D36, 25D7CEF55A2A33953D9B7739F9C98C12 - 21: CC47C891FAB841800F0AC0F746A257062BE9AF49F3, 220A3EE618FB735B9E801F9B3708D4FE - 22: C8E0F9AF7A7C62B6C297B16025DA55BAF5BA13F6ABA7, FA16192047892BC2472AF1DBD95E0D6F - 23: 731BDA5BEFCBA427E715839C21E4A176D0E28F042C3089, 4CBE4BB916EEE773B9299FE2FF0BBD81 - 24: 62C5CD4F7EF81EA4E58847F3F715FA9E9EFB32059D70BA88, 090E92CEED8FB5D472CCDA11363FC904 - 25: F7FD159377B130633F93B4D18BE68B0872905BDB205025E4FB, 6F335AB81AC8507D5F4018F86FB0230E - 26: DC374E5B40E8F4614C2BE685539C97825C7A972CA2BEFF338208, 719F6C042DB09A08C36D92810FCC29FD - 27: 1050C71D491237EF77F4F043D7EDCBD41DA0BC155F1CB65EAA1D5E, 44E7CD8CEB27584340270F3CADE1A083 - 28: 8AE94A4FF500DC889436866D90B8E150B63EDE74074912029FF9C3A0, 3C96328BE53423BEB32FFE0D05F9B71A - 29: A801D1571411396C0727B132AEFE114D7BD486DA74C549E7661F2D8B87, DD6A443497AFC9EB14FE6EE9069AD580 - 30: C79DFE19B0199768EFDD29026863C644A0ADBD14A3F3866DE74EE7AA2E0C, CCB313FE30CD4F04BB3548808FEBAE6E - 31: F658ECDD95F960D7C68D03F9BBADF066F8B9CE8108867C7DEA305FF4124AF2, 8AE64618E77A2806B53E239927787ACB - 32: C92EF301771E89D5BD3B901B380EBE18BD2A193B5989092006E7AC15345AFD34, B450AC584DF13D9C8BDD32DA686A1AF9 - -EAX-skipjack (10 byte key) - 0: , 85F74B6AFFB10ACD - 1: 3F, 604DF8BDD98A0B3F - 2: EA87, 792374FE07588BF9 - 3: 0169CA, 489AB8AF69DA3306 - 4: A7AC3EB1, 428DAF508E24B583 - 5: AA9028D5B3, C0A44EDA71FB2C86 - 6: DA97BA88A061, DA2EC34077F42585 - 7: 7E25FAA41CEBC8, 36D4987551E06D5B - 8: F662DA6C9001CBFE, B7DEF76680C316A9 - 9: 6D3F73EC716E1DA897, 5F0F83BAE4D3513B - 10: 2A300F585BEE9C889743, F4756C24DEB72A9C - 11: 80518B010DD77C82D19106, 50FF5CAA365F4A70 - 12: 6E579A2173C861B6F37B4CD3, 81E3E5ABBA8F0292 - 13: 5B04829880A72C38871C7021F3, 6B26F463708A3294 - 14: 934177878E9A9A9FB4DEB3895922, EBC1C32F0A2A3E96 - 15: 07AF486D1C458AAB2DBF13C3243FAD, 87288E41A9E64089 - 16: 84059283DF9A2A8563E7AF69235F26DF, 351652A0DBCE9D6E - -EAX-anubis (16 byte key) - 0: , 8E20F19D9BA22ABA09FB86FDE6B9EF38 - 1: 3B, F4201E546A9160F989191942EC8FD1D3 - 2: 9F38, 4E3CEAE3E1CB954E021A10E814B71732 - 3: 4F4769, 3E8F35A6A5B11200E9F1AA38590066CD - 4: AB41F5FC, EC4C97A8892AAF5433106D4AC8A49843 - 5: 414F95D61B, BF831E34D1E3FECB973A8C730ECA2E6D - 6: 4798322F06D1, 005BBC30BFEDBE6463536C4F80D1A071 - 7: F256B6CD1BF4F5, 468A28F0661884B846B191B530C8D064 - 8: 90906F27A633ADDE, 6D9200A37A7F6A456CB103673184C2E5 - 9: 16CD3C17C9B4EAB135, 6D716E23D7B35109F55B036EDFA7742E - 10: 7AD1C22F1F06298DFB25, B076990F8193543C8F3185D3792BCE56 - 11: 0476F2ABCD057FE6FEE39D, BB2876DB18C00038FADBBD9B264ACC3C - 12: B69EDE336407DBC2EE735857, AB63E5906116A8BE22C52B5DA31B1839 - 13: C3864C1354065A56470669E602, C72BFD3A0BC73BFF051C9AB2F0DFED93 - 14: 296D8F183A59020D33890420DD7B, C9D90B9EB42C32EDCF6223587D1598A6 - 15: 256ED8E9D982616680559979BDF2E9, 179FE4E7BA7E966050D35900317E9916 - 16: D4ED8F30FF9C0470D75B3B16750A3AE4, 5D50F05BB270A292DFF9F67A3BA84675 - 17: 40CDEB6388274143CA3C4F6020BD9A4875, B27C7DFB1BFBB3FCCEE0171852C7924E - 18: 54EF262EC1801D505C7629D038654EBA0594, 9D2060FCD0A2C577511C7752ADE60BBE - 19: F39EE54A37F16DD38B624D7AB8F0D9CBD4B981, BC056C7D2C09D813703CDD63C1C69F44 - 20: F4E7AD474FCA153ABD670E43081ED09EB2C4CC1A, F244BD4D630272F0D98FCA04226C04F1 - 21: 039ECC36A0A16273E7246CA1FF19D213AC87B53F29, 3056DB6916C925DF220B6C9980EE141A - 22: 7DE1DCDEF01447CA2FE83375A48DD84E4A7CB7C01992, 79AFEA4816EAF8DAC8A5E93960F1594F - 23: A886C4B914BF0983003272F226F9B2197EF2DC05ACDDE0, B59D85A0FDA5FA4422F7203C055B97A9 - 24: 00B3E1E91448E250AAFB695C0643A6577AB453EFECFABF53, 4A7EFF1CBC1AB535122A017203616D85 - 25: 85E972E774D66D0531E40B8FE9E264A77B50FA883AB0943080, B18E164BF89B7E7AB0DC256DFEC7C72F - 26: 004849E39334969B392CB0CF3FDEFB3D792DCBBC15F8328C7EDC, 3C51295711F5F878DE8F0B2B5A26A227 - 27: A0BAD6C2264AB1578993BA49E59D4598822FFED20A57D88F756FF1, 2EB9D525697A419A10DB2A84AEEA5FBC - 28: C34DD806EAB5AD823D78BCA78A7709A705FC94ECC521A367D76C9588, 3C57580C7903039D645C06DBAF07B477 - 29: C447EC77512938CF7862388C32AF22ACE6B5E4CBAA998BE4F5CBC4D215, 43425D09B7ACFD90371C08953946A955 - 30: 2C16993AAE624CBA4CDAF34FE3D368559E6BE548292B281439866375013B, 3B7360C3FA8FB1C15D19F567153CB46C - 31: 538E5DFAF14854A786851E4165F2E01CDDA963E318FCE4FB58E31A6B5CFC33, 2F8EA13B7A6873FE556CA535ABA0968B - 32: 5E29CDB7D9695A110043E9C260104BDF020A3A2A139D4112E918AB584BDD7EDA, 9133213AA7BCF062D2BD37F866683D3F - -EAX-khazad (16 byte key) - 0: , 75968E54452F6781 - 1: 95, ADAF5949F09B5A22 - 2: 6B8F, A06B201947424A11 - 3: 5BE668, 3251416625DF347A - 4: 5A92E82B, 33E25772427D9786 - 5: 62F9F2ABCC, DE714F5F5D17D6D0 - 6: 0E3CD825BD8D, A7991C8CB8975ED9 - 7: 4AD0D999503AAD, 53A827D7886F7227 - 8: BB08E6FAED1DAEE8, 91A118749B7AB9F3 - 9: 16E30CB12E20D18495, F8F8B8C1280158F9 - 10: 616DBCC6346959D89E4A, 506BF35A70297D53 - 11: F86B022D4B28FDB1F0B7D3, EA42220C805FD759 - 12: 9B8A3D9CDBADD9BBCCCD2B28, BB478D3CE9A229C9 - 13: CDC4AB4EF2D5B46E87827241F0, 658EDB9497A91823 - 14: 1A113D96B21B4AEBDB13E34C381A, 63AD0C4084AC84B0 - 15: 14DA751E5AF7E01F35B3CE74EE1ACF, 3C76AB64E1724DCE - 16: A13BBC7E408D2C550634CBC64690B8FE, 3D4BBC0C76536730 - -EAX-seed (16 byte key) - 0: , 3D0715108CEA3BE144350082B1BC4F25 - 1: EF, E56898AEDB0F461980587FFBDB83EE59 - 2: 9552, 9647B7FCEDBB9EF4EDEBCD98831E5BDE - 3: 25DCD8, 3647D80EF3529C72F16D223D04D7ACAA - 4: 3D169011, 7A741FA2536E5905FD4ABAB104062D3B - 5: A92411F6BC, 18A306E5DBF4DBDCE21505F16DA85482 - 6: 9D4661D2859F, 7B2FC34AB3DE45DB4AE8C97BF3B32BA9 - 7: 0E8C26E24B0961, DFF098B44E7D57A71F68FD0D2D2416C7 - 8: 485EE54D5D2684DF, C8FCF501065D23F936A4A530BB028EA0 - 9: 768888B50865A635A2, 8121463B762AC12D19EE21C58A8A1B7B - 10: 647FF44F0B350385BF27, 883241565540347D491C0E397FF5D663 - 11: FD868A569E2E597EB3B5AC, 4DE96B6810A1FC5F19A085B4F4C8B687 - 12: 342D72063420F3FCFC1EF71F, 88B94C3FFD74F052CC44722B87E1A45D - 13: C768F88646D47D5201FDF47A1E, A01EB1FBB3AB135F258B87C30A8E1A13 - 14: 44BF87EC9A5F5E20E5D972ECAE4C, 6F1C44EDB3533EFF973B53EAAF84D601 - 15: FDE60E4F25C4B9388BD3D348912B7F, 863871D706A32F92DAD13803CF2008E1 - 16: 69881E58AF690C5EEBC00DABDAAFBCA9, BD3911C5E41B327A10DC7D03435FB8AC - 17: 41AC0D70E8ECB01CFFFC9352E3800F568E, CCD63A0D20D0FD385EB720B2D60D20EF - 18: 88301B40FA8B84ECEE7238F17B08EC2A2DA3, AD10D120ABCCB67FD3F12C8D8BD216F7 - 19: CCD0F8187B7455274D80A2387599617582B7C5, 3DAA6952A9AA160863E4F489AF04C6A5 - 20: CB955D3B6044F1712DEDC65451E46B8D9FBE5067, D46FEEFA0A0069115F262877050265E9 - 21: 373B8AD20672BEADE5B742C72306455549B26DB631, 16DC5FE5C7C0D5478FF67AD00463AEF1 - 22: CAB49183077EB4DF3BFBF7FE026BCA8311A6BC067EDB, 8F4497F253167AB81A70A05218734C1F - 23: C2F860DA7EC7801FE30FF8C362EFA11E9392E029E24407, 1612D514BF9F365EB0E5CA13E974670D - 24: F0084F22D7AE598FF5DFEF76CCC0728325BB5D3DF5467B2F, 1DE5CD767D2B731DE4C9B4E303A7E771 - 25: F5E907AC398B2C7BE124ACCAD1FEB001BC3EC7C77C21E94110, D8C7D50EFB0CCE2926DA9E796EA46E17 - 26: D65A41B86D24C573D21EE416F2F853E8FF7A0788120102E8BABB, 3EEDB65BCF0E32C24B797D972913F943 - 27: 3B39B9994248DD1FB3EFD68820D19E8436F66FF0E6D82F40E50AFF, 7892720F9AA0ABC34E05FD982396C13A - 28: 9B924A2F620E5160B8F6C8DD313F39D6DC22B7E0596C8D0BFCA14907, E417D1FE5569975E8698C4D80684A613 - 29: 01068AA5F6FBFFDE1A8290CB315426F8CFD2438C09FD5982BE45EB21CC, A7DB568F037E8A4DB2D73CB2DF2BABA4 - 30: D39210874C4B7BEB63966BDC89AC7279B67C118618E9C44C1C563A10F74B, FB64939029B8E5DC1318EBE3FDAFC9F6 - 31: 8338B7BCA36C104C4B7EEBFF582FEAF879894FD6F00434859AD94E644BEC60, 93DECCE7AD61E69A2BD6621FEE2953D9 - 32: 21DC38BE252ECCA74963965660C98B5D9B5C2411945D8AAF9EF93732748A6162, 2BBE555F1D3C94BC6F1665A6DEDB536C - -EAX-kasumi (16 byte key) - 0: , 9E0C41B26B960E81 - 1: 03, 26B904336B9E0BDA - 2: 9EB8, 18E90B52DB587A8B - 3: F8E4F4, 9842D0A42ACC7717 - 4: B5688382, 2134820AF25CFFF5 - 5: 582E9402B2, 9C0F60D5B2D4BEA8 - 6: 836A3CEA4965, 6EB7565E0FF7FFCA - 7: 00DD66F0AB54AE, 0CAFA81DFB52F835 - 8: F5824156469E77DA, 44AEED7DA55C7C2F - 9: FCED54C15FAE6EB601, 95D7A3592D5F3B0E - 10: 0630750CAF71D334562C, D8F7432F9AAEC624 - 11: 25E3C5FAFE86F59D30BEDE, 42E3F6C3B8F73F64 - 12: B98480D54E604E4CFB988EFB, 2BCA65A62CE3E363 - 13: F07F1F98A2411749EA11FD87F2, EC7C07D37B7CC07C - 14: 19A6D648AD698ADED0AF37001479, F88417372E600717 - 15: 17CE88FC64ED98233BBAB20AA4DA45, 4959410987AE317B - 16: 61EE83703D8CA5D652F8E1E83C86D58F, 57EC73A828C20B68 - -EAX-multi2 (40 byte key) - 0: , E3EB492A2A560816 - 1: C6, E0A176A66E269255 - 2: 1D00, 472E25EF8B4ED450 - 3: 1DFE5A, BEDB3404162C7122 - 4: 915B77D4, BABBB74A3EE61755 - 5: 3C966136E8, 603664C04EF42178 - 6: E4A4925C9F75, 41B77B32F28613DB - 7: 365BC4FEF0B1B0, BB09E42F396F3832 - 8: FFCE6DA57D7FE9D1, C11BA7A7B580032C - 9: 0413506EE42819574C, 9B5C6A8111BE7B29 - 10: 531319C06A4B68AE226C, 77BC1DF09414D212 - 11: 85C0454EB3B9CDEDD32EF9, 39576F2268A59EF6 - 12: 8FB1732015FD006D2FFA8D9C, F8F51511ECA4E0A7 - 13: 1654F11C940FCBA529D2384A0D, 871B4541612C7CCE - 14: F119DC9F998D92B4C45185CFA2D1, B50D3A61F3CE76B0 - 15: 05B051F7DA81609FAC41BF0A19C45A, DF1265F3F69625F5 - 16: A313136E4E7F1314E7ED504B48324047, A9D1C5527D6EF7D7 - -EAX-camellia (16 byte key) - 0: , 9E8CDB7237166EF9FD0605A0AD3E4070 - 1: 8A, 23F462AC7E22EB9078DAC34CB1CFFB08 - 2: EC9D, EBA9E2E3112C18CC2991FFF97EF77E6F - 3: D2A9CF, 913472F45F6D6B087D8AEB34B0FF9494 - 4: 360A7ECC, 6382103D53AB8C9263977AFB1A96AAC4 - 5: 80B52AAFE6, F855787CD6CCA56CD656A0DBC663CAD1 - 6: 0915D546F5F0, EBE17981CAB5D59E6376CFE30DE66936 - 7: 086B525B082B71, 182D76F2DE42F5D0AC252F25E7BC34CA - 8: 438DA1E9E78B9D2E, 36BA12456C3AC5ED3A0BDF851A651E82 - 9: 0F9C9890152D6AD5EC, 06F3A96F40D794552CA799006E76AE7A - 10: 7754241DCD040CC449EB, B576881B5E542A73717A6AC24E516079 - 11: BB536F70C1111BFAC4D149, DDC6043F2B5DF96418799DD13BD04726 - 12: 4B530B4F67376C4B7EC1CB29, 43A36C14092F19F168ADF0FD9F557424 - 13: 55D5D285DC88451148C7B2B143, 7C2CB43BD19808EB90F045E6D6EB70D0 - 14: B321948117659CB06E6B364D00A7, 1B30A37234E3A13A335EFE6A07B070DC - 15: BDCCAC5E956953E6D5C43D9436D453, 98F924C659F4112B1D9DAFFF711FB2F6 - 16: E0A2F28186D79A9494700E5A30351542, C604F7F47C3F18F236DDB289D287BE91 - 17: 750D6EF87E1C9E1023920D3F355B2BEED8, 96FEEAC4DA36FD36129F67C3EADA75EF - 18: E7F91687119D70793B9BB0114C7B588D32F0, A75052978F26EE6FE5D802BD4C06004D - 19: 56D7420981DC556AE0137DB0F1BD1CEC0BC945, CC024D30F19EAA3CDF66E51246FC3225 - 20: F2D61A0E214472663F5F41C9D66EDEEC2F7C824A, 9706F273AF680AE2537D02BE41A2C980 - 21: 30F76A83CF8010DF0F49F73C06435E0C5D85EDC6E3, 1F18354A73BF506D229369836855EFD5 - 22: DB9688FB58EB83AF06A579CE56FBC75D93412790924C, C9DD5350751CFF0AB1A8910AC1898E08 - 23: CBD64BAB16852F40FB00D9FEEF5365C773CA14B77EF5E2, D6A02105B1BD018A5BCF47A69803248D - 24: BDCE2AA8092D4790041750DC922F2D6AA12DB3F41A547C7E, 3DF09D758306DAE21C3AAAB3FC51623E - 25: FDFF0AFA4D94CB3019AB27234259ED225B1B3B0F2BDC32CDD0, D64E69725D638D9F0F90C44C6BF51722 - 26: A9D2CC4F7FB98D54A78293C64C2A41CA19CC1F7B9970F3437AE9, BDFC6B10DD012BA057CCCD40AE14569B - 27: 81FE813C4A6A47D34F146DD943092940ECEA77F85339A219B6134D, 5F44590AE8CDF89E13AE2BE4D32AB7DB - 28: F618779FC6E6F5B7EE3FB4E937097E6A122B979E3DF837F72A8FA3B9, 00F0A3B4C67F68590AAA0BEF2D399D1F - 29: 0A8AB66D218268C9181DB8C6EF542AA4B42E53E4623E3385723024CC3A, F28D7D86317D2F509561DD3392F3EF3C - 30: 9CD50C94ED5391BED5C8CE2A07F8955744B275B6C5E5B6F453A5E6185C03, 048E889FF70729C55582003ED6169E0C - 31: 1CFD6D8EF6F44265703544AFEB2BBA2A067BE8DAB412E071B66B70E357238A, 0A5BB055E00D42F4291CAB3813FC2946 - 32: 8E6E6433E4FF879155E0612F17EFC00AA8D5236EFAB5D9D6A912898F3124B588, EDF81BB73FF9288F315B988413432823 - diff --git a/src/libtomcrypt/notes/ecc_tv.txt b/src/libtomcrypt/notes/ecc_tv.txt deleted file mode 100644 index c61729ec25..0000000000 --- a/src/libtomcrypt/notes/ecc_tv.txt +++ /dev/null @@ -1,1261 +0,0 @@ -ecc vectors. These are for kG for k=1,3,9,27,...,3**n until k > order of the curve outputs are triplets - -ECC-112 -1, 9487239995A5EE76B55F9C2F098, A89CE5AF8724C0A23E0E0FF77500 -3, CFC1E3447FC33E5C2A7D2BF71298, 5BD6AC32F0A9E7AAB6AF722C3CB7 -9, 3F37CF870B918CD41EE58F58DF14, CEC3FA5A53FF5A372B583CE40F20 -1B, D5E45D28A47A0819F3AA3018E58, B05DB66559FB78876CF830A6ADB4 -51, 869FEFA6DE5F619CA54CA719554B, BB93E27BBC3FAD016BC369766F4A -F3, BF1784B857F668E9459714D80D75, BEE55B564CB923C7018E855A2E05 -2D9, 27067CAB2BC8C9201B1E8F1D54FE, 4A9BCE40D87B0C82EA66D645C931 -88B, 4E9974D7B890442760FE4D05FB8E, 96BF4DDF0043AB6AB78E373DF010 -19A1, 6CCE9122C482A8EDC2DE37142043, BC64E1D358F7293FC9B0C2B81D3A -4CE3, 48268EA8193D8BD0308108411368, 127A6D8E01399DD3F654F713B5AB -E6A9, 46154FB1028BFD86CB29749C1E4C, C4FAD064CA84566739451DC6DEF -2B3FB, 11F16DF4A122B5C99B897921688D, C2CE146C26BB79F7CEA74A40665A -81BF1, 86023D4E9A40252B9943323AC6C2, 98BC7CFD540529771336414B0240 -1853D3, 9FFAADE7C13872809428B28FFEF1, A3383F446BEBF57C93213A70B155 -48FB79, B16EE42EDA484E3E32BFCD300A56, 8D0FEEE47DAAACAA9D8BCF69D2FF -DAF26B, A5B330E8EA36077522FE1C6FB7C3, 88A84BB806A6F5A4BFF3E551AF00 -290D741, 3C586EF3F731E651CA6002C7332F, D059BC68D7BDBD36CFC989CF7BF0 -7B285C3, C2C91FA9E776ED3BA285AB5E107A, C93F41A8A39B2BACBE05E1F93428 -17179149, 354AA3FE191A506359EFE3B9EBC0, 7BEDBBEDEC768086086C474FE9DC -4546B3DB, B0C34C7B4EC509BA7D128D7B880F, D176BF07B375EBE808FB57863382 -CFD41B91, 6752AE66F3D3302EDE020EF64CF5, 7ABCCC45227CE3FBA57F036E5180 -26F7C52B3, C292C0F2205C7DD85C160500C39F, 44704F5CE0FA803B44BA85BD4D26 -74E74F819, 560A5FD4CBEB26EF2C4A81C3AB99, 9A685B6C7F8BD203764B64980068 -15EB5EE84B, BFEC2498A5C662D7CE0EC0795D86, 81EFC44FFFBA1FE5C10EA50E805B -41C21CB8E1, 3EA8636EF746B6A7D42DA2E631DD, D23DB097D9F656B902E5BCAE5923 -C546562AA3, 1189BF2ED2A10F7312F0DC6AC131, 67ACBE20F636DD4B5B342A3C76B9 -24FD3027FE9, 288B4BBDC29EA71196301B8AFE99, 873196BCFCCAED2E2233525917E0 -6EF79077FBB, C89009F3E7A92102202082A4BE35, 84DA334BD6DF4847B23A2204BA5E -14CE6B167F31, 1C3C9F6D15A9B366431579FB48CF, 9AFB81BE81FA8D1A6D067D7CC28 -3E6B41437D93, D96F30DEFAE1F3445067E1BC5126, 5F94C2A388F7F4E7EC9B783DB0CC -BB41C3CA78B9, 5E85D2777031FE74B02214A898E9, 56BDEB0542BC36CC3F6A269667EC -231C54B5F6A2B, 150A2E2416E3AC315569A3820D92, 4DF8FC1F8ACD06B742E611626199 -6954FE21E3E81, 541D5FCCFC84A2C05E8A0145BFC2, 28BFDB73DCF4206857D022AF52FC -13BFEFA65ABB83, A990A2BC3B113A648B9E00D8E750, 3DEB9F5B4AA6913CAB843B8F2BB2 -3B3FCEF3103289, 9A0FC99B826CC66625274DF01B38, A0570619D2047C864B90C0513575 -B1BF6CD930979B, 3BABB8E3761B38E004DB334E568D, 169B474A41D6D0605A39D45C0CE7 -2153E468B91C6D1, B12E873F58C89718B6DD46DA6C05, BDC3684AD8177FFF90861DEF3497 -63FBAD3A2B55473, 6B9B195EA91798FDFEABACC415B7, 40A0693CFF52DE53819A9704DCA8 -12BF307AE81FFD59, 8A0AB24E8E9795B8482FA478A71E, BCC991821FFB5738E066733633F3 -383D9170B85FF80B, 730E403E64D699C16FACD6738B21, 919761D719C12BD2BF229193746A -A8B8B452291FE821, 3333B47B85D23C6D8300F5229461, 48D6FECEA3083B9D31EC469C6B43 -1FA2A1CF67B5FB863, C3F5AE461252F5B26EBC9DF1B5FA, 16DA58A6C565708C13823D1B2E58 -5EE7E56E3721F2929, 6BAEED3E90E849B001207107F7B8, 5E1C7B8EB4B3E367A4CEAF4B73C6 -11CB7B04AA565D7B7B, 3385AC6BBD490AFF201532286DBF, 7B027BFF07B56FDE6F0BCB37752A -3562710DFF03187271, 8146FD74592B1145492D39680AD8, 508AA9E106E7958CF011D8AA71E9 -A0275329FD09495753, B0FE244CAEED9FAEC678BD22CCD2, C97B3257468A23C4F6E883737FBB -1E075F97DF71BDC05F9, 605DCAFF23DDF804CB1CE4FD847D, 68684076591F042B98CDF14148F0 -5A161EC79E5539411EB, B65AA0ACF8A9C8E99A3F64930DF1, 34613D915630023826CAE908918C -10E425C56DAFFABC35C1, 16CFD49EE4D4850F1689FAB0041C, B50DD3663AFA67A306702BB0582E -32AC7150490FF034A143, 4E0EBC80756B99D91663DB7EE498, 6A22D944B1BAECE8B2EAD6AF3F3E -980553F0DB2FD09DE3C9, 603221615965C9EC9E587C34303D, DCB1EE7A0C41E65C08CA8D78983 -1C80FFBD2918F71D9AB5B, AB82F4270F8C35C774344595F48B, 3B4007030E1D65C6F8544508F5F8 -5582FF377B4AE558D0211, BAADF5F7E998465DBFEC5A7A4847, 1282C981EA4D0B8E7C77DE905D5B -10088FDA671E0B00A70633, 6D60A5CD3CA86F79C566F81AE66C, 22587D260CD8D45DAD2E5CE9C2EB -3019AF8F355A2101F51299, 6805F4FC0B350109728B3F56BC41, 63A9870300ED7D0852DA7163A9CC -904D0EADA00E6305DF37CB, 183156FCD56D11B82CE4B689323E, AB6145C5F793442B022B76251767 -1B0E72C08E02B29119DA761, CD59AC87B06C5D8B1EEB8C59B29A, C956728D4A8CF105F2F15B7F128A -512B5841AA0817B34D8F623, 90AA398DA812A180FE8F6C8CCC41, 9EB2C705EC011EC23345E6148DF3 -F38208C4FE184719E8AE269, 2198735C806266C1C47C8AC08161, 5FD1A06C68BE0F8D08A8EE9A2C4E -2DA861A4EFA48D54DBA0A73B, 2F7E0DFD695A6FB3085C4F3E8C91, A51B8EC5C0C1989073E756666E03 -88F924EECEEDA7FE92E1F5B1, 782D992A0601EF4DAFF89C133151, D52680F34F0E03B54F76E4F49F52 -19AEB6ECC6CC8F7FBB8A5E113, BB4C8DC0FE6FD008C8177F0D0C01, 57574AAB071C6338598333210100 -4D0C24C65465AE7F329F1A339, A12F5BBFD3757AD57EBF19FA89AC, B5F12289CFBED9161324EA137009 -E7246E52FD310B7D97DD4E9AB, 6FB82F9A01630129D70A2855DFFB, 32E0E55F5B39C0FD6042126860EA -2B56D4AF8F7932278C797EBD01, 37F034607B71FD0BE1F85ACB818E, 34CC63FF7DC6E54494BE65F82BD8 -82047E0EAE6B9676A56C7C3703, 920ADE8D3AAF24783082AF163FA1, 13A02EC88C9AF237467FAECF980D -1860D7A2C0B42C363F04574A509, D2790CFD605F2D322D213092A58A, 1BD7AF8E6F3710909B7D400F3B51 -492286E8421C84A2BD0D05DEF1B, 7F5E570FE30F7211AF05E245C3FC, 7EED46F891C350470AB27A1CD0F9 -DB6794B8C6558DE83727119CD51, 7541506150DBB1D4C44CBBD8E025, C83F59D03595F97F6FAD1EF00D77 -29236BE2A5300A9B8A57534D67F3, CA36DD2689FC281999437CC412E2, 577E04E806003AAC5A4E27D496B5 -7B6A43A7EF901FD29F05F9E837D9, BA57BDF8F748B946F34F0CE6BA64, 6B9B5A5A98D4D1F0BBA56489B259 -ECC-128 -1, 161FF7528B899B2D0C28607CA52C5B86, CF5AC8395BAFEB13C02DA292DDED7A83 -3, AD632F542942F23AA423B628A304B3B, 7AA67EE421C4E78851E4B4679BCDC41F -9, C732AE957882F6ADEEF94EF4FDFDB5A, 5F832D3A461B9BE0DAB9B6EFBDAAC16A -1B, C3E7FAA2B004CC66DD779D4D4CCC92A3, 898A5F77130726447D7C6A9FF7BB55CA -51, 882E79BE6E2A92F17FCC14EA8F4A004E, 81EFEB830764DE30840441087E0269A7 -F3, FC8786E47911BEB448FC8614FF44F929, 5FE26C7837CAC0E72CC392ABC915BBE9 -2D9, EB3002AF9DE4BCAB7F00CE22E61E638B, BA9555616D61C3DF55F940D9BB9407E6 -88B, AA37332C95651AA27D6C14B1BDC4B9, E062A0B2F0CF02FD0859E2AD452E12CA -19A1, C5364D02273F5AE032FFE5C95BA33FB, 21359BF3D455E8E4FA1B6498CF03C667 -4CE3, 565406637B339CD9E514048D0C1B6669, 33657B7FAE1D43ACB8A52F5D7F0D46F5 -E6A9, F686D8593E675C596913DC20C39196AB, EC3DA164F561288B3BE727ABA99A5BA8 -2B3FB, CBB20B834591ED538A32B71DE5AA1694, 84CC322D35B760E1422B85AB39500CC6 -81BF1, 5768402750F948709BF083D3B43D7062, 7FCB8577F1466DD3B4ADDA5431E601C9 -1853D3, C63158FF3359CE48ABFCC553F4D372B9, B6F020B6798EFB8AAF545D1B9CA83214 -48FB79, C8B1549674C6B1BEEB462953869C1B89, 61EA95C1FBF57EED2FD7443E667D5EF8 -DAF26B, 93D97715A671D51D5901C41772EC79DE, CBC8994EAF9C478A08B6D2E6F95CA1E9 -290D741, 54C38EA59EDE54565FF3B44D0B805C51, 4DF1848B089AB3E49808DC6CFD682BC2 -7B285C3, C51B5FB02D8FF4095E1AFB276A4B7636, E4403921DF02292B81A41CAAD9E2A686 -17179149, 39AF1443D88EBAAFF645D16F7281728B, 79992D9CABB675B1A3067D7CB4C7D2 -4546B3DB, 4B549361136416D85AEB0ED0FCEB3288, 7F1DAD94D1A72737286A3032B6D15639 -CFD41B91, EC268299DEFC5CC003B593F8E9D9D496, F3744002B83FFFC6A545A7EAF0FEFF6A -26F7C52B3, 6710D002065B89EF2277E6CECA7DA7E6, AA5A24DCA5010A0A026F905D357CD35F -74E74F819, 909E50A61A9634AC70A1F36B5EEA62D6, 1EFA89A81D83CC9911CD5E9978878EED -15EB5EE84B, 76AD0DCDA97CE86AFA5578E05BE3EFC4, 7DAAD7E724AE5EB4B3C9D4D0FEB2D30E -41C21CB8E1, 58DB151CE74B0E1242065F332EBC50A2, 8E65CA6336413235C7C1AC14AE2A90C6 -C546562AA3, 8440EBD3BCB98DBD710835CDA523B048, 3B0DA47B14728C63811054EC0F81E8F2 -24FD3027FE9, CDD14651443254E413C608F12C61A7CC, 550272BFD6373BC4FC1831B37BD5ABE0 -6EF79077FBB, 4C192607510F362548461733029B3ED5, B7979006BE6A92F246D7A099F769D35F -14CE6B167F31, DEAB8C0525BF41F5C7B0CBD67C2AAB50, AEBC99F2E54D009E5E2C320F60CAEB7 -3E6B41437D93, 2FD0BB2280BC6C722FE5E80D12D195F, FCA37EAB062A9462C03CA98821509D09 -BB41C3CA78B9, 8A3D3FCCFD5BBFC94D16B9829527ECC8, 7B9FD0406FD2080B8AD0CD3E1783991F -231C54B5F6A2B, 3810114B6C1FE3C3ACD5522AC46AAF97, EC32DBEE521BAA4F82EF77E0619F5C18 -6954FE21E3E81, 405F7016C928A10BF66DA9B03044BB9F, D4698929696E3C37AC7AC9FBBFFA4472 -13BFEFA65ABB83, D67FE4FDD2ECDC8BABAF926A6781F95B, D1D6DC7CCD9136ED7F1A317C32CB21FE -3B3FCEF3103289, 19891D1CCCB0D82DC07E55D8AFD84043, F94A2B60F3612F2F93F089F4C7A7D651 -B1BF6CD930979B, 420D29204148F5C5AE3E01F851DA4999, CED9F97FFBBFD48DC47A73029CCDD177 -2153E468B91C6D1, DAACDE05B55CBF0390619094A2008488, 56EA7F89E84711803150BDB0421763E7 -63FBAD3A2B55473, 6E5E8684280C87E1C00AD9E3D61CDF6, 52874C99CB842257C0B0F379B8BAEC93 -12BF307AE81FFD59, 202E8278E8C3F2C1AF84F5A0F76F2385, 6844CC669644B1AB8EE0FDFD9EB957FB -383D9170B85FF80B, 1076688ADD5CAA1B9DF02110172F23A3, E42D03AE9241C34F9835B58086176E24 -A8B8B452291FE821, 44D019D2CCEAC749E03FED3C21604CFB, FCE1C2B98417DCA06124B3AE6BB791C0 -1FA2A1CF67B5FB863, 127A50F7AB7BEB412F93D71A5CF60EE3, B48160DDAD09C097CB759E77DA097FEC -5EE7E56E3721F2929, B039E3D5C41FCCF03D679CA633E467BB, FD56EF249B88F9F8E94B55531DD41DBA -11CB7B04AA565D7B7B, 604E6D877AEE8F5F9269C930C127D7D8, BE50FC8BE50F050B06110DF717825357 -3562710DFF03187271, E226E23826D762D6F35BC3B3BD3DB950, CFB94DB91B375BF813D12D85245388F7 -A0275329FD09495753, 83501B5274973F7AAC7E3F79952B13EE, C990598F4525E33B280624A451CCAEA4 -1E075F97DF71BDC05F9, DC941F53E570141D154C8A8F6BE9696D, 69E268FD63702FA8EEB92245A64173FD -5A161EC79E5539411EB, 95582E3BA2B92671D1C55968FBFFDADD, B2D2867D6E68519E4972E107222CC2 -10E425C56DAFFABC35C1, 9E55507068B0AA334B61061B55A3FA4C, 76326CA07A608EAF2E44B2850BEEE7D -32AC7150490FF034A143, 645C473D1D29E12DEB103E33788AFC31, 6DBC857B8511CBEE87DBCEE51F1BAFFC -980553F0DB2FD09DE3C9, 972FD74F9090821E1BD8282DAA179367, 31594172934FC8099FE3243C7093A6E7 -1C80FFBD2918F71D9AB5B, 72508D40467FA52802A5E3EAE46A17CB, 6CDBB3294FCC463054987835AA2CF69F -5582FF377B4AE558D0211, F44B0CE30AE8581BF0276E6154BAACF0, 9DEEF0EF522DEB481A57AA528A9EF389 -10088FDA671E0B00A70633, 7CAD62F23B498A629F61C277B78F53DA, 8F848CA28D10758AF2620948FE7FB18D -3019AF8F355A2101F51299, 674D4F80D1E6E600660FE8C745C35137, 8113E9FEFEE67BFA1C5F84DA37B85AC4 -904D0EADA00E6305DF37CB, A2E3298F5B8D5BA408FBD59A0BCF21E7, E19DEA06A7CB2513672EEC09747311A0 -1B0E72C08E02B29119DA761, 82D4054101D260AF59BC6B34D9F7EF0, 44B2678278DB6E19D6D7F679C64E2A83 -512B5841AA0817B34D8F623, 7FF216DEBB005D7D53E8FD83CC0B7399, E326E0E156FF26FE96EB3D139849C187 -F38208C4FE184719E8AE269, 98A614DBD92CAD5D17A0A51BBA6651C, 6168C46592C07BAF794C2018483DF4E0 -2DA861A4EFA48D54DBA0A73B, E15AE151CFFFF7C9BAB06C0C4E02189A, 4FD57A693728B5851B96176BE8A020CA -88F924EECEEDA7FE92E1F5B1, 626AD277498319CEAB580C3DAD611364, D635A54D313CA01AE564D15090E8DDEB -19AEB6ECC6CC8F7FBB8A5E113, FBB841D08716F39105F0C6A0E6B44D34, B23848958CE5573D5E61D77AE65AFBA5 -4D0C24C65465AE7F329F1A339, ED6A4EC608872EDDF0DCCFAB98CAEED0, 380D8EB7DFD27459673189FD0985857C -E7246E52FD310B7D97DD4E9AB, CD713A6FA65C4DECB2E919D81FA26EE3, 7C76DE743916BFD44823F21C97FE6F17 -2B56D4AF8F7932278C797EBD01, 129F5F40B7015CA3182E56DB5BB94527, B547386942DC53B940ABB4D710C573B -82047E0EAE6B9676A56C7C3703, D61FE443E8768B4A7C75C51DFC79B3C1, 3D4EB1AA062D55772A54FA4082629402 -1860D7A2C0B42C363F04574A509, B65B5424B49167FAF49F45D0F95E6BF5, F5B3477C391B4A0DF92B5F54A633225 -492286E8421C84A2BD0D05DEF1B, 9DA44051B7F939BBD5A4D0156AB26975, 9E9A77EA27C4B6281A04C2E8B20C2440 -DB6794B8C6558DE83727119CD51, 4C6F67B418FB5E4E354DCB622F55893, 9CE7E4249148A54EF9F75A23BFF7E163 -29236BE2A5300A9B8A57534D67F3, 84FBDE461ABFB4C47D9F9EF607390113, 2DB9ED91647C0BB98985BFF0BC652C94 -7B6A43A7EF901FD29F05F9E837D9, 111A425699A95CD6E6CFC8B2DE7982A8, DE3C25EB858FF46CFCD755C465EE0EA7 -1723ECAF7CEB05F77DD11EDB8A78B, 418DDDF6455242DC8E3CF706F7357A31, 9874EFD9B781E72D6DEA50907E09F9F5 -456BC60E76C111E679735C929F6A1, 24B1B158EB838752EB7EE82661942D6B, D630B06558D5C804203229D23CB97B1B -D043522B644335B36C5A15B7DE3E3, AA62C51A16D74D572E05D72465A9EAE8, BA546EF43C8432DD112F6F3F33484FA6 -270C9F6822CC9A11A450E41279ABA9, B17D5A63D3E50E0759FACE17139F4C9B, 59F0D096D23A72BCF3990DDDF9B135F -7525DE386865CE34ECF2AC376D02FB, C394A85DDDF3E8DF5A784CC2D94B87B7, 4B812AEC48DCD1A8856522862CE11FED -15F719AA939316A9EC6D804A64708F1, DA54D51C35FBF5D55CE16C5D3551A64F, B5B46E38541FA7D4E8B300F3ECF46299 -41E54CFFBAB943FDC54880DF2D51AD3, D52F7E4371E70669479959E67426F091, AA001B1E7714D0E2B6DE83A839CF3083 -C5AFE6FF302BCBF94FD9829D87F5079, 81C87D44A112676C129F7F0A8AB2FC2E, 734E4D8902E68F34655AD425DE9C4D8F -2510FB4FD908363EBEF8C87D897DF16B, 56CD2AEED77F0DB901402C32DFF4C325, 4AC2237E19DA29D0F281B2B4F18953A0 -6F32F1EF8B18A2BC3CEA59789C79D441, 356212C5077F17620E6A781AF20CD65, D45C73449F6B5F7F271DBDCB09AE90C0 -ECC-160 -1, 4A96B5688EF573284664698968C38BB913CBFC82, 23A628553168947D59DCC912042351377AC5FB32 -3, 7B76FF541EF363F2DF13DE1650BD48DAA958BC59, C915CA790D8C8877B55BE0079D12854FFE9F6F5A -9, 25393E48E2B7B5DF8142CF731E3F00664D93BBB, E75DE5DF76185C0D233F23A2E7B973A954694156 -1B, A3E33AEB16B8B30F28BE00A54ED1D1278EF7E4C3, EA331BABC1F9C850CB6FE00C6E8D595A2F0A526A -51, 734F0EC134FA53E573BE31828ECDCFE969230F18, B39736E2FE9A766947CC8F236627E6551C74F1A3 -F3, B5C70987F380C3A1482499B7E38DE108E49B1B7, DA72E3B069331A4CCCA6C6770C1B0E95BED8F3BB -2D9, A2DCEB63F2DA16B8ACD68B6EFFCC730BC767D400, 23D6DEFF4A0C085D623627D28E991EE25D5AE745 -88B, A33D980E4D1E6EBDE888380645B1F81C28340F61, 47D8D18D8D640105CE735D0570D16B578F7552C4 -19A1, BD52E5C229FA5763E2F048582672D779960952D4, 8EF1779DA5A8AEF223E0AEEC19DC315E19A3402C -4CE3, E7D4964676C3994C0619030152DD1E739166F2E7, 20E6BC678D4C3C0B05147A2DEB123CD659025CC7 -E6A9, 5D0C33FE66FD1DA56FA31E0C1570286875C7A5C3, 917773615CA2E1DE0B6A7E14BC5EFA8AB86947FA -2B3FB, DC7520AE8A604FB5BAFCB40BAB185803F5012D89, 3ACB6E6F454DEEE809D36113FB941A319C004595 -81BF1, 968191992AEA557635F337FA23CD88DA24DEBF4A, E3035E5E5AFFA7019DB899FAF65FAECD2757EA60 -1853D3, 6D278B8467DA43BF84B72675DEC87ED91A6D4893, 2EB55C1C3AD1C98C553CC6B2CB98E6CEFC73C8B5 -48FB79, 31E014D27430CE99E8F8932F36D9FE1321C9AC9, 4EC4FE2EF24BD4244F872AA286ED3BDC182EA410 -DAF26B, 26919D4E3DE999CA8BFA6D00FA8E97C42FAEA85, 2DB843F7603367F4B1F07F6B45403A8F88324BC7 -290D741, 4B7D7FE3FBF73AF19CA0EC13A7F22B8EA31CE7DB, F82DC14B5E53CC35E4275BF639DC21B49F24EBBA -7B285C3, F445903F825EEB5A3BAAD6DD5E7B319B0E9ABC2B, C5BAECCFDEA34B7032BDA2932DF4C9AC10CCB4B4 -17179149, 4183B5F938FBF5F0DC8A95704096DB5931A5D627, 2D7E42949C7703BB0149FF95815F2DFAABB6A73E -4546B3DB, 67EECA2A2448A42FB50F6321F3AB4C06E3D10DA, D2DE1EFE80A29F460F7F7B2DFBDD93A3B87BC1FA -CFD41B91, 306D5FF90BC57AE7B347E8938FBACD5E8C3CB4ED, 3877474EABC5B88D529EA9550A3EB445A4FE01F8 -26F7C52B3, 30DE6E2A4370693BD9FA7D8A600EA5E6D75943C1, C288A48857FA2E8F677DEED44A1DC5B167708287 -74E74F819, 71E796FF669023C714A0A5215D7DE249B96E4CBA, 1D5AE16000FFA8FC848552E930E9D00E2DCFC4CC -15EB5EE84B, F8A8781D8F0844BA0F689184FF56AFD53D876557, 840E775C494738E49D3AE5D0AB7BF6F25F50F385 -41C21CB8E1, 48B5F313F23E31A72D61337E56203892FBD4AE68, BAC7A49986E06088A62FE1AC07CA2B67CBAFBEC7 -C546562AA3, 73CB8D5A5C2941C636B5D7E9EC69C1015982154A, BCB81976F0CF4F9E55887EE4AE7CB5274944F28E -24FD3027FE9, BF90E02AFDA1EBCC34B02D695CB360B150EDE3E9, 7361D6BD46767F2605995A7448154541ABF3A996 -6EF79077FBB, 93F4B601D818A4C11025779BAC80913BA0858801, C31A64DF2E600901674AA123A792168E17AFE90 -14CE6B167F31, D7D857B44C53BBCB5C3C888E15FA2FB31451E28F, 2E0F00931FC5DCB0049FCC78BD2F4B2593FA8F6B -3E6B41437D93, A29B3FFB401FD76A45DCD8F5E87C2133C36FD1ED, 1883EE891DC09A914AB0B456D78876B89F455266 -BB41C3CA78B9, 9FC8C86A7E9F2958C8CD957C89B414A759586954, A76C1576AED305C9491B7EC075D3C7767777C37A -231C54B5F6A2B, 6D348E7C4A319BB00DAA66615C113976AFDBF66, BC6DA4F9545617DD2F800E74B22142EBD2DA2FDA -6954FE21E3E81, DDC68F983A0D9EDA70E0B9E619D71A8F437B6276, 726642668979300161F48BA9696ABC855BB4B795 -13BFEFA65ABB83, F638399A8904AF059B46A6B8B8B8CBDAF598D9C7, 6F267B6C287DF615F54915DC922EE4AE41126D93 -3B3FCEF3103289, FD136674C5A9E5909FF90397A160EB2232983B44, 5143E198C0B9E3F70215E0AF841BC841F7F7F6B3 -B1BF6CD930979B, 483832C21A3569E8F58AD8FCAEA84F7FC4559663, 5CDAA7FC128E85AC5BEFBD9D94AEAAC681F7AC2A -2153E468B91C6D1, 9918DECF01630EEAA5B226AB6AD577A4D9044F8D, F57AD0162569CB722C85DE7CF98466FF4AB0E09F -63FBAD3A2B55473, 56AEDFC9DE5293FA3FA625D6D8F5B54F95754160, 26D366028621815862EC3CDEDCA7BD09654605E2 -12BF307AE81FFD59, D70777E9F2381429250279FFA09A27A1AA7EE866, FDF2FF1D369ED1003C1BB3AEE3F5F6DEAABC0E57 -383D9170B85FF80B, BD3A19DDF16D9281B8F5A35E0458229481ABC2A, B35E3DE71303702A1AA8F9B4845E3B660EF3F4F7 -A8B8B452291FE821, 9D7659C6B17D17DF5104DB2022BC059D85170F82, DEB9A9B784E14ECEA14116443C2FC6D46F723D -1FA2A1CF67B5FB863, C122BBC2034E30588D106375C098006F80DBAAFC, C31567A287D0CF0DF1904CDA7B239EDF4DEF83FD -5EE7E56E3721F2929, 1A1181829744B2D0DBAA23570C1450BDAE6A9388, 23E295A382E8CB2CF6822B7840734712427FBD60 -11CB7B04AA565D7B7B, CCAC921924E4E2CE73B1328BB65D1BEB111D05F9, B6DCF138575699B24E65F8E4509DE3656AB670D -3562710DFF03187271, 46CAE3F8641148620DAC97B2269086E1034508CD, C466FB97D2B63A866079C4EBE5FB6147C4D41C84 -A0275329FD09495753, C3D05A02C096E19F6B823D399F177F33B6661404, 19EB1CE2B123F8AF342A70DBA6BF1B0904DFA277 -1E075F97DF71BDC05F9, 355F10F526DE3DB79A28C4AE4AB83C91F16DE2DA, D93A8F2292847BA20C54E9D4FE376BEC9BDBAED6 -5A161EC79E5539411EB, 69E617B5E403AB15B10932003AA4C754FD585888, 6199B97EB0B634DF4B51987DE8730F7E364CC46B -10E425C56DAFFABC35C1, F230C76976E57CF10DCE884D10713CAF8B46955C, 80C1A15211B1F06919D56CC86360AFF3522AEBFF -32AC7150490FF034A143, 517ABE22245548B18CB7CA541852FB4682C92B54, 7AD5AD7E91F8A28D842F38C1277553D14C1D8EC4 -980553F0DB2FD09DE3C9, 4AD778F7AF703238A93EAA761B305AC36008AAB9, 296C7D40D07C37D5190B9FDB55ABEB8363D598DE -1C80FFBD2918F71D9AB5B, 34589A4F974E2772B581F8B1F9292B4A3221A392, 95F634C03F3461C88C258B6C3496CDF57CA94855 -5582FF377B4AE558D0211, BA1FC48E95584F0881F117C52E9B84D70ADB8CB2, E34B05161D00DE1B9235538B4E6402F8D62DD13E -10088FDA671E0B00A70633, 9EE3D749EA08A4DCF3A7AB51C15A8ECF8F41B016, 3A21E95620AAB5F8B829C494810E9226AA78060F -3019AF8F355A2101F51299, 86135777B50119CEA4C54A768B4D55C14B6EEAFE, E848B2F0072DB1E57BB2BB41FDBEEF6134101918 -904D0EADA00E6305DF37CB, B3EF2035AF9A8FF6A1D541D0F1C6D56F25051C35, 72DF35F50E4540C80E07AD5D49E9F182CEF78AF5 -1B0E72C08E02B29119DA761, 6F8E9E9456805DB0C58ECC6D596766A1A244F60B, 3EDCDBCFACA7A9D5A1319E8AD429A320DF4354C -512B5841AA0817B34D8F623, 93FC2F22165E8A22439C9AC49D0BECE1E2BB8716, 751314404EE1091A09864791FCC91780F94057EF -F38208C4FE184719E8AE269, D341F5018D6AA45C31DEE5341D09E3E04814B56A, 7A3FD8CED82C7DCBD444C2E07691B1711C96C56E -2DA861A4EFA48D54DBA0A73B, 8960BD4CDA88561DA4155542FCE995FBDEEDDF23, 797312B7B2B5E29279A3273192E0A0E148BBCB8E -88F924EECEEDA7FE92E1F5B1, 59396BDCDA965D15F1FC0BF0222F0FC86B2C300D, D4283D03C78C717445AC36328C1A64693FC7BDB4 -19AEB6ECC6CC8F7FBB8A5E113, 40A00776282D3C393BBC1DE7C9D1C1FBBDECF448, 512DF328AAFEE099E889CFB2C6FE9927005FD4EB -4D0C24C65465AE7F329F1A339, DE65CA9A566D89C6788655F1E450324D554B84DF, BF508E8B4FEA2B015E96C03FBE31268A6ED591AF -E7246E52FD310B7D97DD4E9AB, 1F680491EF657A5FC246FBB202A0002923325733, 5553CC698246C9B786179BC5037C9FB01713814F -2B56D4AF8F7932278C797EBD01, F333344C9F419569DEA6CB228D8938CC69FB81E6, 5D193CC5C5A830A12AC4F6C91FA6253E91267B15 -82047E0EAE6B9676A56C7C3703, FD6623768A2373B6BCC6D84569818D332E27B1EC, 72C39291859E0AD1217D23A34B662C4642113024 -1860D7A2C0B42C363F04574A509, 95761AD2BD51DC587A418ACDA16076A4DC844E22, EE5D215DDF7FE9F6EA2774845041EDB2D61C6E85 -492286E8421C84A2BD0D05DEF1B, 4A3C6077D76D09148B0611C8746EC56D0DEDC031, BCA3BC2177F774CF3B15B6E2128986FEB789322C -DB6794B8C6558DE83727119CD51, 2A3C6AD8102997ABB372D9D9C97C4E4EC8BAFF96, E152C4D5C594088B278E2A935EFCABE1E7B1FD6C -29236BE2A5300A9B8A57534D67F3, AB097E5ACB02E4459030895C6E354484EDF251F1, E6FE3BC507244169DC7CAB7DE32B6AE92AA1A6BB -7B6A43A7EF901FD29F05F9E837D9, 129D7BE9C4EC8914B41A2C766D476879D6F76BE4, 587962443B8E295B1CB893E4ED281558A8C8EFBC -1723ECAF7CEB05F77DD11EDB8A78B, 1C96D21218F2851F453D52871557B037B3512E0A, F6B977791E1C83A34B3EDE67CAD7B751CD0C0E92 -456BC60E76C111E679735C929F6A1, EFBF075A3FDCF11C6FC8C3EDAEAB2768A6D30731, 6B729DFA5729476544770F50F915D458B678341C -D043522B644335B36C5A15B7DE3E3, 36BDD9FC45AB77B06CE2173B8B793427D108EF81, B96612AACFB4C44DF74B6E26B12038BFDB7AD69F -270C9F6822CC9A11A450E41279ABA9, FC4D15FEEC11A0EF59622B7D2895970552345A56, 1AB20573F123C149D487E3B1336993D3EF5AD1CC -7525DE386865CE34ECF2AC376D02FB, C4430A83572A1BDC98CB1E457781A43C35050B2A, C3DE096745E831E6CFC7EBB98B747602C96096CB -15F719AA939316A9EC6D804A64708F1, AD78F890515B436B7BAE6A083B2DD5E1C1F7B70E, 4E849C221A61E5D46DA23E3B2F74B8B8EE14E075 -41E54CFFBAB943FDC54880DF2D51AD3, A53BB39DBE63EA5BB49D5D85991666C3490CAD02, 88479ED000F61E28450E1AF1E0F62F5AD1E3F905 -C5AFE6FF302BCBF94FD9829D87F5079, A653F42589F8B26F03067FBA1D3F20082632CF0, 8625B86D912D177E139E4A0FEABB68DB28E8D84A -2510FB4FD908363EBEF8C87D897DF16B, 6A5F2C81A3BA8543858ECC97FBD98BB0990B851B, 20F3777694592F1FFFFC055B716919C1EA625385 -6F32F1EF8B18A2BC3CEA59789C79D441, 1D7A2FAB41A5CF1DB3A235E261C5E3D2B4F92EF4, A1BBC0E673FEBD4D5F409907FBE404B41435395E -14D98D5CEA149E834B6BF0C69D56D7CC3, 2F885A7A345B99E03192A6EED5F969347DA805EC, 623B9D1A9A9012DCDB9BA68958A47ECF4C3CD0AA -3E8CA816BE3DDB89E243D253D80487649, ACA5A382C70ACF6199716A36FB9666F71F8DFF57, 62BA96DCDC4809E71C659228E6CA1FE80597B8AF -BBA5F8443AB9929DA6CB76FB880D962DB, 6ECFE7E695F17D048C516C35458CA3967541651C, 1036FD8DB26A743B7DB499F42C4301F079E5D567 -232F1E8CCB02CB7D8F46264F29828C2891, 44E0AF7A04FE3957C608146CF14B4275C3D7B666, 38A0714252B9B7D3A44EEAE50086DA06A9388999 -698D5BA661086278ADD272ED7C87A479B3, 7088D973680A53E9479DBFFA467A2111BCD3BE0F, 7D5D05994DA529E8E004D671E788FF3BF888CD7C -13CA812F32319276A097758C87596ED6D19, E4A9C3225C1C2EB76CC58CDC6E894973D58D70DD, A7B92C8791C5E5BABAA17466564A7281F9222F36 -3B5F838D9694B763E1C660A5960C4C8474B, 5739713DBD47167D3E32CD79B47A4A6E275AF078, 5DB73EE6DA8D4979FD94A281D633B43AECA6E9D -B21E8AA8C3BE262BA55321F0C224E58D5E1, CF96DC40E4B69CD8C790FBEDC0BB25952C9DE5EC, 366881EDE370510AE1E82532147CD8E01752E8C5 -2165B9FFA4B3A7282EFF965D2466EB0A81A3, CCB043B608DBC63760B564CA50654FB86817EFC5, A0CD38CE52DE2F283CD2A7CA558ED9BA01CB56F3 -64312DFEEE1AF5788CFEC3176D34C11F84E9, 9FA21A21FAEFBFB6E12775F9949ABE24429110FA, EFAE412FD472D2A05ED3F46933B3EDCFB203E723 -12C9389FCCA50E069A6FC4946479E435E8EBB, 5D876339E7170085A3A74848EA70B60B6588BD71, 65A7DA5C09F645BFE10CE52CD00F63B00350388D -385BA9DF65EF2A13CF4F4DBD2D6DACA1BAC31, C7EF4CF57F0BE40146B2D5F6B14443B6D96171E5, C7B0BF0558433FBE1018FA28A80B384596A6B9BE -A912FD9E31CD7E3B6DEDE937884905E530493, 57863906F760EB7472FDBBAA7AB922EDE99A30CD, 470EEE35775797FD7D756306011784D4D1A94B3F -1FB38F8DA95687AB249C9BBA698DB11AF90DB9, 4EE1981D55A77FFFC3844C7DFB87FFEB33D2287F, 411D7A29479A565BEFC56F5FD2952DADBFE3B736 -5F1AAEA8FC0397016DD5D32F3CA91350EB292B, DA706E4409447F41D36634A89DEADD450031EB07, 25E66A476688C499CE354500B69ABF7E54C83CAA -11D500BFAF40AC5044981798DB5FB39F2C17B81, 3B492E0378D8BAC27FCDAFEB53B6DB8E88A678EC, BA3A45947418E51A09B5FB16C808B4A256112E51 -357F023F0DC204F0CDC846CA921F1ADD8447283, 201D6DB45EA1F22E7AFD6D1E226F028123EE9EC9, E69423D5D87FFBF101BA7C85CC3D2F63CD013BB1 -A07D06BD29460ED26958D45FB65D50988CD5789, B23E082FEF3C87F6C431FA42CAB2E70E6B22165A, AAF1370FCD36AFC7EBB188EA3CAC36B6143C4324 -1E17714377BD22C773C0A7D1F2317F1C9A68069B, 2A808829F1789876B2FDE344382EE0B8690C2B00, 3273FA8D18A239DC81FE8294352CD40A408FECA1 -5A4653CA673768565B41F775D6947D55CF3813D1, DFA008B9187788078297F4A9FA02192C4FC0DAE2, ED0614DACFCF34F0125FDA6F9E7AFF7C5DCACCB6 -ECC-192 -1, 188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012, 7192B95FFC8DA78631011ED6B24CDD573F977A11E794811 -3, 76E32A2557599E6EDCD283201FB2B9AADFD0D359CBB263DA, 782C37E372BA4520AA62E0FED121D49EF3B543660CFD05FD -9, 818A4D308B1CABB74E9E8F2BA8D27C9E1D9D375AB980388F, 1D1AA5E208D87CD7C292F7CBB457CDF30EA542176C8E739 -1B, 1C0A558549162FE7C5D7274A730E9F58CE960BC9958D3288, 618AEECD7C6D796F0FA9BA3312490CDBFA0F3488F2FCD59A -51, 46AFF85827C9065133AD79BCF0372820C81880C645F2D928, 1B8911D44F06CFF14B4222E19BCBDA59194F970F34A103E2 -F3, 1C142C97C6CDD5A87475E04FAE2E86708EDCAAA2F33D97D0, 67793727B60FBB2E8D4163C131D2D72F6774827109C02B69 -2D9, 6157465770D08B8E53FB60AC57DD68F88160FD474B9B02B2, BCF67CF4003CDE95B507EAF4E07CD713C2F7A9FB3202B49C -88B, 767B00C09E0D583CEF4F301B727777673EAD242F2593697D, 7CF2510D4FF604A749FA3918DCB4840455CF7E68AB245A0E -19A1, 5A15B62CC74FBDEB931F1271CD38CF9F1D86131213248677, B69BCF78F9BA76C45601EF2486C166D04F34417804E913EC -4CE3, A51BC29BDFB0993FEDE91916D06D609FC744A813033B2F26, 6B0D669EAD4945315E92989358ABE363ACCA90FF09C25120 -E6A9, FF714040AADDF96A94380ED63FDB4D4207E9C94664724C57, A8B1A8B19F339AC663919850BDDB8A43DEAA04C861735987 -2B3FB, 35F80DA2E24E3523F1CF19B44A5C3B3A58C96AE146464293, 7E7B7C4AFFCDD781F641F9C2376E5E24121CCB2B9957901 -81BF1, F29F6F84ACBF1EEE1A4C3CD4D6006E0EEB0AE0A9EE08EE2A, 43CB330E3143943CBFF1F0EB889258E12353A2777F61FD4B -1853D3, 2AADE7388043FFDD4D4ECE26ADF6C85E564AE7119AD601D, B0136CD55AF4DD76C090358324B2D4044FE78519AFD2627F -48FB79, ABFFB427AF19C1618934C4ACF80A73D30CDCB3F5647361B, 577058997D7AF23F88D039AE8D195E1CF20E94A9E55CFEBA -DAF26B, E44F89F1FB04FDBC19DAD570D1EF3588EB47F799F3B31F40, 47509D6BF8F7A072255D4856B021543AB17DDE0F0EEA046B -290D741, 85E180BCF6BE779694A2C71D393AF8043A7A74F076778283, B0D254C1E67B7ED57C4847AEDE7F110FBEB337106517353F -7B285C3, F15B9270198F4ADBCFF3E3719F20F44E9C0786EBF5116BCF, EF12D95EFFE8FA9E4574B948CCB009C59B837B2065D4E754 -17179149, 76D8028D35E2B6760E4270781E2CAF51310433B0A7A525C4, FC2969795EB4BBC23B402842C4BA723D361AC065966C4927 -4546B3DB, 115569333F111A12BE5556453644F009567F4C7B40C5712A, 95776EFF47496BCE215E608F57E2731FAC2445666855BCED -CFD41B91, 181B8097BA5677CB3A3C3BC977AEDB8E861DC7374D5C9D82, F95ECBD7B0952380C21A214F75A69DFC486F2316A7A2BACA -26F7C52B3, B43A147C979080FDC8360039F4985EA31F7CE7D049478450, FB4687DD7D77359C497216FAE50F953C38288FAF271BDA68 -74E74F819, F16191FD000EDFC6F3D0E9C75DDC56ECC0255BD0874B8B40, E6FF81A430405BF3111AE21B28679D3FE6BCE570EBB3ED6F -15EB5EE84B, D88192214F0A25FABAD10EC7A4F7FE0EA6CD328D0E81784F, E8D10332314077FF28378C0D404FDAEB3508BF11C025DB9C -41C21CB8E1, D797A077FC44D1A5398FBCF648FE3CF921EDC23A59C6AA57, 197EBA01F6EBF058D4E19BBCF358EBA512DD4C403095F96A -C546562AA3, 1EA9FE83CD362F5A675DAE672D1229D37FBD501C0DEA7021, 5EB6874C8853B0FD10662F3B25FA9A21F4A66315E790FB8 -24FD3027FE9, 1E3628D25F1AF3C515C0758723BBE2D111AF7E4779DF425F, F991DAA7AC2BEAA1515D823283B67D9FB1B91C1E043B27EF -6EF79077FBB, 6C3F8E8C135BC46234D8B85AB9BA94A9ED2E7FF9B8D9D84D, 1710D8B22CA3F572CCC4F3F7D29B4508FD0EB49737ECFB01 -14CE6B167F31, A1DD7DC14AD895FC0E6DE95019379A4FCA488996903320CA, 34CB85A2D98AAA0FEC199A6DC1F5BD239F9E3AD45D5F9C63 -3E6B41437D93, 8A29236CFDDED1F057141CDB01E2042A36C8584BD1F7EBB1, 41DFA388743EB780842CFA8E90360E21BC957EF0B0943AD5 -BB41C3CA78B9, F0D31E7BA6299CF97D49459746F376976F3F69A254FA430B, 816B3BE3CDA212DCA47942E839460AF55BB368CF82443FD4 -231C54B5F6A2B, B61E3CE7469FB46A5A75E6F369319E86B3EDFDC15FD71139, 6E4A91ACFD67BEC34120A13329B9B94E9334B440F5BF929B -6954FE21E3E81, 1075CC5D277AED7E0603C852EEEEFE98B0111577047C239D, 82FD41C0DBB75F8698F96262EB53EF6C6D166AF078519E12 -13BFEFA65ABB83, C5DCEF887D8AB1FEF1DDB523F4F13B3B9C6692FC8FD8FCA8, 108EBDDDC411685D240CCB72D9046F60388C45D4B380ED7D -3B3FCEF3103289, 1214A2F9361F8F7E450D576A8C2316431EDCE1E0B40A180B, C47699ACD4F1B58348F5AC484B98A91ACD3097E1DD88C01B -B1BF6CD930979B, D590D2A3B6DC021E4E32CDC319EA48CB68FA7E953409C71, C06ECB0FD72F556006DD810E84E0DD1B1209198F013A86D5 -2153E468B91C6D1, 7DF6201144ACD2F93FB748724CD4E4E6F35FDC8C94CB203B, E9A12B853E94CB76FC0BEBA53461441B71C53B5C1061CC07 -63FBAD3A2B55473, 760FCF9057B0FEA16B60C8D3F754D9E2C18B973ABC701BC1, 92BFBA6E586583F61FCFF086CBB54AA070C273D847576A81 -12BF307AE81FFD59, E462BAC637E80D709FC2026CA864349722CFFEB2A8C14034, D6FC9AD4D0D9E3A80900DA823A02D01C20C05CD208217CB3 -383D9170B85FF80B, 2A20664813D23476502D4C405D7E073570F631E4E2527E87, 97F0E060BAAB21323695BEE672AE1A15D7B496176B1F7C25 -A8B8B452291FE821, 8A9FE5C70C8E1B73C0E2A3E5ACE91741F248E36F5E9809ED, 70051C26F338D61010A95921117E6F0B6E9BF0F9CED42EC5 -1FA2A1CF67B5FB863, 22834749F02FBB2D964358D12A7133DBDA532549F1745F35, 673546F13C6994B970C0376F96BD0051D19EB0D7A0CF09D6 -5EE7E56E3721F2929, 4A31DBA1B4EA6F5F5A166B73CF7E83BFBECBCD2CB22D0A65, 89E8AA2325C986557C262BDB2BE805222875242E276D7E6B -11CB7B04AA565D7B7B, 4FE579CA87A004AD36CEA14292F91BB85A6F5964760433EF, D381D212DAED188E721AFB8354CE0D1B7015BA8D8E8244E2 -3562710DFF03187271, B804A5F404DC163EED2D2E571F5FB77F35AA8B078586AE73, A6071F8E16F8C2FC4EC87B3FB20442F4E1A3738E91304568 -A0275329FD09495753, C7F9292AD9FA97DA3AFAACDA2B6D0B9D83E7116F0B2A2B76, C2499ED4938444F34F1D89136C7153A683A84F048A6DB9DC -1E075F97DF71BDC05F9, A5F5374B2F7E07EB06562A1BD3F8F53140F3D43472D1DE8, 5E94BDDB00BE4723D64F58D1C76A5916EE79B9BC08E65754 -5A161EC79E5539411EB, 54665882C939F6938E006794AB3F2EA50148C77F2F3E09A6, DC19F80B200FB36AA3933E7DD2B8BDCD9DEFBFA094C068AE -10E425C56DAFFABC35C1, 6D32C477B9B88E4A2984996C8F586E4CE670ABA7F9317BB7, 47B1FAE5A733CC165666A8E1B1B3C9D36520CA82978B3C4A -32AC7150490FF034A143, 704962F0155A1907D04C921D773827724C1550C9B321E07F, D65D2FDD10F3569EBE0F71CADCED6A08C30C79EC221FE703 -980553F0DB2FD09DE3C9, DD2B09ABEC03C2B6B79C59527BC2506AE8ACE5F5BDF8C9C4, A0F0FA28A86BF4A8EEDC13A4071CA4799E3ED3B7A551FAE4 -1C80FFBD2918F71D9AB5B, DD8D44CE64115353C51BBFE970E1B7F8BEC0A56815641AD9, A1678B2557AF4039AD5FF55592F1B62D16C493144650588C -5582FF377B4AE558D0211, 9F49FC1430F451B4239C265C6FDED93866D82DF30233296A, C5B07F840EB2F171CF4A6786473096BD94070F3D8F9FD80B -10088FDA671E0B00A70633, C3F8B7CF57A281463239C03C51AEC841435FE7D43F1E241A, D9474297A32209AC6577ACDBE59482971D25C811A83524A5 -3019AF8F355A2101F51299, 2F89FF42A3477AF0099EB8D20BFBF246A42BCE28C041BA10, A3958623E8ACDB16662C3F5EAFB757CB912F0E55AF480A6E -904D0EADA00E6305DF37CB, DE9877B73B97DAC40E06560B53557C093F46E2A9FAA70020, B7868444CE638BEEA8C062AF8FDC3D42BA3ED8D384368196 -1B0E72C08E02B29119DA761, 87411F357505BE61E8A2EC83A1C73D414893421E7942A63C, A2F641BA92F59BC2FD0051EC789DC6A22D1B790431CD53A1 -512B5841AA0817B34D8F623, 33EA40EBD183D3CA2E967763711F5EAAC247A83D10F4D8CD, B501868B4942D1DEB3F4DBB18C938BAAEA097B5DC8DCAF06 -F38208C4FE184719E8AE269, 9758347531DE82D0487EA03FE4245747640FA7CC1089C27C, 5F37E601C56ED8B600CC9D1B57B909D21A12EADEB917636A -2DA861A4EFA48D54DBA0A73B, 63D7007A3B25A362767A40411B2A0394AACDBF13A7EEDF3D, A721D1395745E4031DF177B535C09FC94756C0FDA0AE6631 -88F924EECEEDA7FE92E1F5B1, 6C8A8C2394FF380A228917B08B111D76A2A4E9EFD7E4E66E, 2EA61738C24D33C2789A186A5CC15245798CBC62F5A74766 -19AEB6ECC6CC8F7FBB8A5E113, 8DF315820BD24BD6F20122ECCA03EC60783576FF1931D06B, FFA2AC7836B24C3C2EEBB76F24B5A78CE8BDC8144545EB9C -4D0C24C65465AE7F329F1A339, 3CBCE069C8034D233B9C2ADE3C8F3F26D6004D6851BE36EE, F1CCE453C42F608ED79ECBE9DFF05E12D7843DAC2AF0165E -E7246E52FD310B7D97DD4E9AB, BC6196B8E020F764A84E9A7032B2AC38460015DFC3EAC411, 924EB9460BD723CB9ED2DD3E894CB24CC412B0CAE2AF8886 -2B56D4AF8F7932278C797EBD01, 1F9E734CD4742FA8537DB9BBD53A9EEA94D4CD47BCE92196, 2F2FAE55F79ACBE6223AACB30255161AC9B99F3A77087416 -82047E0EAE6B9676A56C7C3703, 6A00F547D2CA07929AD0382EC1CF2DE4240CF04E2ADB958, 9F6A1D2003032B61F65ABA33469464AEE22FFE40BD214EBE -1860D7A2C0B42C363F04574A509, 8607DE682EF40AB177F96540C70830855C1D8A3BB3340364, BC5B59F9E8C983ED333DC75231223668C20CD7D818FE09B1 -492286E8421C84A2BD0D05DEF1B, E40E7B5E5CB42241CC23170739DE4978F0C1FAA44C3B0A66, CAEEAA3DE08BDF32427CDDF8FEBFC42C2555FE38702227A7 -DB6794B8C6558DE83727119CD51, B72BF024B3D76D808D554D4A65334D4FCE8D5010D822C0EA, 3504AC222FE822E481A27F9C16EB584FCB390CAD0FEBB46B -29236BE2A5300A9B8A57534D67F3, 886AEF669BC564617B66F6057D040E60A3AAC8ADFBC5883, 765D1317E730E046228634241626AD17A004D0DEB3E6B8E9 -7B6A43A7EF901FD29F05F9E837D9, 919F5CCE4A889BAA1DEB916BBAB5C95163935DC7D78B35B7, 2AE6C9F8C027135C88DFB1223CF7B9E198D635D7BC8FCA2B -1723ECAF7CEB05F77DD11EDB8A78B, 97564D4FAC349DEAEB4AD24D9C2565CACA598BAD07981E2B, 17621261F147574DC2D663D58A81011CB42C5787424FA570 -456BC60E76C111E679735C929F6A1, 40677079B500B3DDEAA6B0D519C51CC99954B80DEFB416F4, 7A80B080F44C4F71A01CFFC33622E3DFC98656B3A5CF701F -D043522B644335B36C5A15B7DE3E3, 78EA536B23938AF681E0DA7B216815C3A9D62AF7CA76CB8E, 4A44318E21F72E0CF092DDB80A9A145D423505C775330BF2 -270C9F6822CC9A11A450E41279ABA9, 1E4296F8BBBF2BA1416B131712D0D0323CD566D288617A38, C4E33977F7CE998528ABE9899BEA3312FAD976A9D07FDBC1 -7525DE386865CE34ECF2AC376D02FB, 5D37F277984FA15FB5E47EF1B4AB48DA0025E01C70BCF192, 53758437DD9F6CE7214ED99806350E5822C1C022371C986 -15F719AA939316A9EC6D804A64708F1, 45F0D931BE0BECFA19EE77C69F2D6EE2BFD46A3ABA9E7860, 2DD205C736CF8D474508D1D9FEDBAA9B398124C8963AC9AF -41E54CFFBAB943FDC54880DF2D51AD3, C4148ED33A11E3B919F678D0F6DF2E5F19E888252337502, 6BBB5EF5AF0688950B4E9A05B69F3AB4449724CFF38B6D17 -C5AFE6FF302BCBF94FD9829D87F5079, 1F5855C573EA7C76D6E6B34539885B1CADF69A26C4F4D42, 25EC84477867183873938999C5445871630DC9EAC9331B7C -2510FB4FD908363EBEF8C87D897DF16B, 2275194E1FF9F071D0B9D4DAA0C859E9EFAB5DD0131B86EF, CEBA1E77F349F3A9E4E9CD42689FB29E0633174627A9892E -6F32F1EF8B18A2BC3CEA59789C79D441, A2CE1B722AEDD1C545E1FB6E6A3018C2EDCAA5DB7D4B523C, 759070FC0CF663F1D84E885952FD9681898ADCDA47D3DA88 -14D98D5CEA149E834B6BF0C69D56D7CC3, A7BF44284B9EF496941F31B6442EF663627427C9DE50AA10, 993CA2E4B263BAABDBB58D27F3E3C72BC71647D9EC3D0ABE -3E8CA816BE3DDB89E243D253D80487649, 3DB825FC33496FEBCA37FFAF958DBEB50EB870F7193D2BB, D59884A0FA78538B678628374DDA23ED6EEF75A863E3F53A -BBA5F8443AB9929DA6CB76FB880D962DB, 8D6011151337C570552757A22E3A302FCB7BC3D61DF6061E, C455C35E4A071CA2715C80121BE43DAEF519B5D1B768B849 -232F1E8CCB02CB7D8F46264F29828C2891, 1371514D33D4256E50425500708416E4F8706EE52F803A90, 892FC707DCE3352CE8ED23ECE989825FDEB32E79C049C2D3 -698D5BA661086278ADD272ED7C87A479B3, B940EA3133CBF5A3E287F71ED5DEF98FB931BC0965BB6B36, D272093C69411C10DA893316831A3DD11D76C441AE0E38D9 -13CA812F32319276A097758C87596ED6D19, C1BF61C85F79B24A7B30240D42A70BE0BE5E7DE6A0563471, DB49E02EC0BB0401BD566B072013552266F518DF05987BE5 -3B5F838D9694B763E1C660A5960C4C8474B, C0ED93B53A193A35D1794337F74C4DD58D8BA88678929E68, 7DE86FD1C4693DC901A7890DECB307F00EF432CD17A9669B -B21E8AA8C3BE262BA55321F0C224E58D5E1, 71E6E0470A2A76566ACFD8C69786213DFC50FF8449FA9D00, 6FF8607F003A90FB76840D8CA367B4612F8A555BA2C7D07B -2165B9FFA4B3A7282EFF965D2466EB0A81A3, 162376F28E53249611556C1ADD58DD15AA66451D49BDB18C, 9A246765E6CA5B19BF853332B39FEC421739DB52703B6513 -64312DFEEE1AF5788CFEC3176D34C11F84E9, 7F3355A10C96EE64DE95CB40F2C16C6A8BD9AB19F243EFAC, E25ED7D4BF395ACE15CA7AD9CCEF8F82C3B8680B40C5AD8B -12C9389FCCA50E069A6FC4946479E435E8EBB, 65801BF19C26F27BE259A68033096C0F21CB908C2BE431F7, 1CBF7FD180A1FA7673BB20DDD3DEAFDD224992B000DAE969 -385BA9DF65EF2A13CF4F4DBD2D6DACA1BAC31, 2434447503C73CBE250329A649A71BF7FB9235B4D7DB5AAE, 4F1E6B3691512BDFD642B837035EC68B3DDAD08306D0E7BC -A912FD9E31CD7E3B6DEDE937884905E530493, ABE1D7C9D4446CAD96B696E129225ABAE79BFF43CBFF4EAF, A07CD0DA6177938D334381A6CAD4FE2A54189E157DBFB657 -1FB38F8DA95687AB249C9BBA698DB11AF90DB9, 45B3A8DF8C53006D2181D52E578502906DCF166E53B2E490, A4C15F301AD5F5B61F603F93230CC3A817C6DC86AB842DBD -5F1AAEA8FC0397016DD5D32F3CA91350EB292B, CA66D4AE5E37980E54A32EC981AD6FB8F130A811DFA9F283, 2E516FD1176602D650B7687449E87127583E18F8E8AD6B67 -11D500BFAF40AC5044981798DB5FB39F2C17B81, 673AE0961D0B12B6526E82EBF3244BD9C392B92D52ADD0B8, 56F605CEAE8E71F28DFDD4CBAC06CAEDC3EFD0F4FF0C7D7B -357F023F0DC204F0CDC846CA921F1ADD8447283, 2BB6D5B9E52B42C17E34205A523FB4596E83B34E653A1B20, A1F89B4682D8A6F1D07F8CA40A456962BFFE0D0322EA5BA1 -A07D06BD29460ED26958D45FB65D50988CD5789, 5C16C7F871FAA2972D6C00EECCE62B9951CCA91CDD44C978, 53379BC875B840940BE2F0BD83C3BE3A4F73898B2D243D72 -1E17714377BD22C773C0A7D1F2317F1C9A68069B, 985E2871102C0F5BFA09E1D16F677E1076123BEA019DFF0F, 3B0EE452994A31EE10E8B76D4F1E5AFBFEBADDA52BFE5238 -5A4653CA673768565B41F775D6947D55CF3813D1, 85A95B40A2408C88065A6B06A2C70C0F3B1016B850B03FA4, E123762ED9FAADDBD571D4D9D55BAC21635B8F23432CCDF7 -10ED2FB5F35A6390311C5E66183BD78016DA83B73, EE9BCE88E1300A048C6EE04BC7C4D6B14F9C46C4E5E0DC5C, 426DD5BCBADB2B5831B05AE0EE36A4357A9CCB975BE6D97F -32C78F21DA0F2AB093551B3248B38680448F8B259, C8F67DBFA81A917ADE5BC7C680466B6C59A0614CE37CC492, BCBC3245DE309B260381C29A51A08FD7AA7A897A57F60C43 -9856AD658E2D8011B9FF5196DA1A9380CDAEA170B, 102F282C7749464D0B5BAFE7862ADB176CF528959E6FF16, 4471B34D0C427D1B2E6BB4D1D1E7019B19FB29AD3508FD55 -1C9040830AA8880352DFDF4C48E4FBA82690BE4521, A9D88CECC8F30E7367B1826614750C5E62DAC63B4EC69F65, 1DD5CE403B28F8E828AD61FBDE8DDB29AB799E322EE5B12C -55B0C1891FF99809F89F9DE4DAAEF2F873B23ACF63, BBD9BD8DB52BC779DED4D10D87F9A51D6F688EF2AB24DA9D, 3B81E803B4947D886C31DE671C257B8D4AAB9703B1425FA7 -10112449B5FECC81DE9DED9AE900CD8E95B16B06E29, 4D17C614554EF49C3ECA4174BA73E5118E5E60AA0A77C63, 7B6297E167ECBFA4B7BD7FEA88BCED0D846FEE03DD3DCE7B -30336CDD21FC65859BD9C8D0BB0268ABC1144114A7B, 14D38246CEFA8D9795894008CA0C0D126F83C78C83DC92BE, 36411B77CECDAE847590B5677F59939973BE6FF2F64A9042 -909A469765F53090D38D5A7231073A03433CC33DF71, BF7AC1EB3E7190BDE4D71ED57DBD52DE03050EFB40CB5EAA, 8FCAFA78361658F188F43142956A156857563AFE6C1EC45 -1B1CED3C631DF91B27AA80F569315AE09C9B649B9E53, F8D28C0DCAE91C461C70A234D69A2538F29308A11DEC6B7E, 81F11659C6F8F433DAF384B0677656D43AA1043655DD8E5D -5156C7B52959EB5176FF82E03B9410A1D5D22DD2DAF9, F730589659E8FEE715F0A3398A547498C858172E776C9E33, 7725C13706670A811F93D5FB0FC7BEDF0D439335D2FBA1B6 -F404571F7C0DC1F464FE88A0B2BC31E58176897890EB, 3B666DA46C5BB9CF8D8444366602DC2C793281C9FFA16E2A, 933B3919778A797358D4F485D911ED7B8C8C3A3C9B782CB9 -2DC0D055E742945DD2EFB99E2183495B084639C69B2C1, 251F31E3F7B52DD8BD58E5D15E5AE490923752672A578D78, B5D6D075DCD78583BE68D8F37C3A4E6BA38C478BEE16E90D -89427101B5C7BD1978CF2CDA6489DC1118D2AD53D1843, EE4089782BEEEA54B8CE2A2165A343D8D1D111F8BEEA6F7A, 29E6B9FE3066CF09CF8227D8E559A072F36B2382FD3BFCA -19BC753052157374C6A6D868F2D9D94334A7807FB748C9, 87E107AD5A9D73AD3575BB56785B149C7C548689290DE1C7, A57878A169EED1B6D2AB99F88716ED86D5FF090D3C72BB96 -4D355F90F6405A5E53F4893AD88D8BC99DF6817F25DA5B, F0209D045652BEC6993A3B280AB6584EE0FA4CDA8451CF67, FB02EC759B638B43CC694F1FFBFE8DA49EA76C2D17A3793C -E7A01EB2E2C10F1AFBDD9BB089A8A35CD9E3847D718F11, FD1E7CF082B2DC167E1428F12735BE092F295A4A8E1E760D, 3544868B55914D92838E1203C31317C641815972FA81212F -2B6E05C18A8432D50F398D3119CF9EA168DAA8D7854AD33, F0DD616A23DA61FFCE001E709706367C9B3E362E741B638F, 23DCED8532944C2CD408745053B4D8566A1222B4FDCF779 -824A11449F8C987F2DACA7934D6EDBE43A8FFA868FE0799, F7477B1F68BC6780620B206B46251DB5BDB3C3DF7E1E27FA, 31BA57AD0B0BF24867480A9F85FBFB9930274616EA260236 -186DE33CDDEA5C97D8905F6B9E84C93ACAFAFEF93AFA16CB, 96AE79EB0A648DAA2EF738CA6A4FD4DD171A20DD0A36E7F5, 1DA556917FD6DDCFC2ACF833D2DD9D5B8071C305EA1FC052 -4949A9B699BF15C789B11E42DB8E5BB060F0FCEBB0EE4461, 94A09B7C63E9B75B117E09E1784125C65B2B67F98D3F46B3, 922B5F92BA51AA72C51FCE3B6FF14ADCE1248EC839984332 -DBDCFD23CD3D41569D135AC892AB131122D2F6C312CACD23, 59777F6D3BB4D0FBB4030BFB59261F24B9057A9DD29BC2C1, 1C450FC266C1A45AE52864DEB7390A2947BF0C5365092D38 -ECC-224 -1, B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21, BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34 -3, DF1B1D66A551D0D31EFF822558B9D2CC75C2180279FE0D08FD896D04, A3F7F03CADD0BE444C0AA56830130DDF77D317344E1AF3591981A925 -9, 2FDCCCFEE720A77EF6CB3BFBB447F9383117E3DAA4A07E36ED15F78D, 371732E4F41BF4F7883035E6A79FCEDC0E196EB07B48171697517463 -1B, 1989153B5F6636B610854BCC50AFC929E914C03DA51A4A8239F4865B, B9381E6DC79B58E0443CDB009164837AD450A68C19192F126542796C -51, F92767380D3731F228A44AA785B413FD807DBB30FD6E11AE45D1EAC1, 82FC1287153C3E5F1CEF13FE31291C43CC54F10169FC9CA22E5083A6 -F3, 9799481F3A9E0297A75E32DFC88512E777EFDC48E977349C4FC68C74, B6E8E987474C0C8D13AF4F7B8AF9A1F27667ABE8D6571E71B7D8359E -2D9, AB94C2D7A56E82D79C168B3DA45E33D72D45A5B25FA4AB096898C10B, 24899FC8552974E40FC2A5EE9690D11BFF96A38D84FC79DEF9EB70DF -88B, 5AF579EAD2DC6E6B52430A2F79A3BCECDC2B9952F353AA12AED13393, 30379F3012A1B94F83C5B4AD6580D7C8D42001FE29FA6D06F4C49C96 -19A1, CDC4EBC6434E16ED2A94AD8FC5325D69EDBA5FC3F94940C37BDFBB93, 6F3DD0D2C4CAAA54DE14DED296B8067EC04F5EE1709C27E90CC4748B -4CE3, 362946F3E1813D4DBADEA15A78CDF4D04B9DD573B8CE48E082DD249E, 4632F24D670E17161BFEB43737A29FA7EC19CAE59C994DDF38341A05 -E6A9, 198F000B110BB2776BE024C515BC56186CAE13FFA1F420EAFB7D1368, D47DE0455E35D402E5E7D7689AF837621F1E5067C7FBF9653D6D47D8 -2B3FB, EAECA0011B1AF3CC2C81C542AB82C18C5046B4DD642091467B05BAD0, 823E2074A55D4ADC32787285F42B9E6186D38428996442042884E2DD -81BF1, 3FA4321CEF75D9C148069871B21E0E7D621C008CC1E3EB41CB63E306, 674C08B2AEC76DB3DF5FA9FC5F8DAB6CAA14C605536B0CBF26E91E17 -1853D3, 750F11C5424EF88D236F8C0B8F3B858568333C2ACF4C17084FBCB243, EF8D1C2B5094B210852D8E751F28E23FAD4DCA26B985E54B527482ED -48FB79, 6129013EA424933A18B3986C9DCC4166C7A1FC13C0022358894D6F3C, 7251B2A84BB265DC493617FD712CB971FE10C6903FEC82CDA8631312 -DAF26B, D82B5F8A652AD0B923557D68CA5CC42CFFBDC73DF3B00AA8F9F3799C, 5EFA86F7149BCD9FF4A5227C1E331487B9149262561A94E635999A6 -290D741, EE88DEB98E68A56E4046566812F68193A1B8856D09CCF33D6EEBC446, FE5E7FE985E2DE483CD0B6481A1A1900CC3DA0567AD7BCB1AE54B597 -7B285C3, CE9184F33548BA664AE32AE3613640988CCAC3A4A6269577040633B2, 6AA351D10075F5FC6BBAB3E1D6592A258CBCB6D1D6C828B880043A8C -17179149, 3D30DC993405651CF936A840EC2758454B71AD7DBFB9EFD3216B46DA, 8F1E7837F24D3E04F734FD6275C252E56B9F61F40056AAC2CDACFC56 -4546B3DB, CD6075F48F57C66341B821BB05D75E8C5F68C0EC9E5C901DB6E16A96, 2ADCB9E834A6536D26C0325D0A9B8A05F32523B77AAECBB39025990D -CFD41B91, E700466493B51C521C4A7DE071BCB89635ADA469B7CCFBAEDE84E6E7, 2DF8808FB469DF1A5762291BD71A6F47D5A87C8F77849443AD08B3F2 -26F7C52B3, 985809BF0BF34DA2C90ABEDDEB5426E779A05144C233715EA2F1E2C8, B42E15230584FACC51355E602CB536A89EBDE854C1B411313DB3292F -74E74F819, F4183C3B4AA8694A581F6FFC811E8FA2973DB1CA2721C1771DF7B741, 981354E9716A0B3CBB78959211642C5AFE7DB94E7D874B716EDC96D3 -15EB5EE84B, C90D782309B6C358C6A040936A326BC4FBDDD5A3016CD04949F64941, 4C08C351A44BEB5608AC72E9CFEC3BF6D63DDC289023E067870058F2 -41C21CB8E1, F15788A0BBD53A46BAE249FE197DD5DD6FE0E8A0FAAAF9F31DFE0C95, 11F66BEB06E4DCB13B97EB80D31402734EF078D341522662458D33F1 -C546562AA3, FE978F3F57441E1E0999BB12CC774E32D9C8928EE7FF589D21CD90C3, 9E7ECD938870A5E3AABAE92FA7535707777D9D80F9A14DDB31042A50 -24FD3027FE9, AFD87F62D228450B96109E5206CC0553D9DD8760A9FF052B23095339, 56F145952A468E31AB06CACFC7850EFFEFEB6DA967FD39C4FD8C89BA -6EF79077FBB, 5ED036592516527B62775793FF08D45400E50F198583F29BCF6A33E6, 2B9073611B24F7CA6255B95BCCE19A3D9554AD10C7F188F78DF5065C -14CE6B167F31, 60A0A5676AABAAFAD67595EED957F060A8D9342985CB607BA210DBB3, 3AB05338FA134C4978673E91D790E6F5ED28A46DA9433DABEE72024D -3E6B41437D93, BA33BE7DEF4864D1D40DB7E258658258E04AD1D1221909B5BCDEB9ED, 96DA7AD512B69C87A3FF6AF89C146C73612C8FA17DA6FC39ECC2C000 -BB41C3CA78B9, 56591F0AD7964EB69D2C422C7009014FAF45D3C4FC4DFFB66170DF72, AA3DCF0450F22193AA586D18090DE2C2DC456E7017701C79EDCD4BA -231C54B5F6A2B, D4423739B5D2E81AB85B2D9F9BFFFA4D9E2E97238642A1C2A5FCA5B2, 281817D29BCFB1677208EA276B4AAAA031017C252E3D7429604744B2 -6954FE21E3E81, 2FE618ABCD354D14D175B89C2FA8727F754ED05408F8EC953D7A029C, 8A0F74A70F6BFEEA4825AC6D4940709E38A9D241B9B67BC15C1329D1 -13BFEFA65ABB83, 1E79CFBD171425E53246D1649632EA82320D09D104541BF644B43276, FC4265BD80FB46A4694E221E04EF6CE85F2F349476351FBBCF098B77 -3B3FCEF3103289, 2531CC4E788EEE33FF40F03E63FEF997D7BE20AD5AADC02DF93AEE42, A738D399C5B3538219E2121714A316F427B2555F7899F40A6AD899EC -B1BF6CD930979B, A5AC42D6345A9D75DCBC35F3E9895D953EF7D15B54359DF6BCA1D15C, D55EAD112488C576C751C832176EC7AFDD7D31440BCEA86B93345155 -2153E468B91C6D1, 6302D07975E9BC0E0C794DD36ABC39B153DFE291C8C1731DE4A73926, 6032CC140FAC1603602354F3FF99F60FACFFBBD4393B24EA0601A407 -63FBAD3A2B55473, 1FE003B196E5F0BFB88AA343D5919E7C5E19026956DFAEFF10B41D6, 624EB829116A336D847259F80EC45B6B1D644C1F5D8DDC83404D35BF -12BF307AE81FFD59, 907A212C20C70A7E53A9340330BC05493DD188A7CFEE5FA372889778, C3A13E3D77F269C67C6543678E61A35F392DA85F49B992105350D00 -383D9170B85FF80B, DB42BDBE076F7E75C34C2B927E73EC709265995BC4512A7E6F04C132, AE2A41EE109CBCA26E318A18003E2D7D1B557ACC196244CB175DD865 -A8B8B452291FE821, 17F0BAF1779E31ECAE02C138D69109CAA1EBE101F9AD91D825E1D3D5, 24B76AC081C96497AA7B8CDF614E5A5AA53FB53F1D93369B9DA8190E -1FA2A1CF67B5FB863, DEC95AF67977A90F2C831F822A9883FDD3B119C9CCC552E714907F21, B161B842051D2CD8582CF365E5F919411C9E27ECDB896BA6DA21DFEE -5EE7E56E3721F2929, D34CB5030D6158A0BDA99A9AC40235591C0409BECE4A28AA7E989128, 78D670AF8D31D053B53F67854B7755F38CDA6731145F89378E2EDD12 -11CB7B04AA565D7B7B, 806023F600D2D35B2B9DA9BE107802FBD9B04F4FB569055885F84174, 8463DB49296E86750888E06353ED42732C95F5C61AA4696508F9BAB2 -3562710DFF03187271, 24F8274CA5282CD9FD95B53022F5CD1B878ADDED1D7A3DCF46D25786, B0485DAE467D6795EC97DE1FB4487FC2112D5798B77605E5C8D3F77F -A0275329FD09495753, E7D0B41DD20AF5A36176BCC234AEE25FE7F9A12360E62043F11FF2AF, 982BDB1CA14088CF6A80E3A9CD5F329A8CED5AFAD519FFD7A7CB3DAE -1E075F97DF71BDC05F9, 418DD0F298DD0261802CDE28BCE840A007E09CFCFE85F518F7AE4C7A, 766C0AB7B8D4B2351F72A927583A927A46546931BDF66E9D53E7913 -5A161EC79E5539411EB, 26D81F8AAF392DF2216B68C2125115B3AED117A4F20588A13C2D1EE6, BF9575307370151F7F217482C63851895CDA7DF49B406AD83449C633 -10E425C56DAFFABC35C1, 2A2BDAB9F1E3426526EA8A02EDB7504793A023A7B94F1750A35F1290, 46FA41933EA40F859D230D2AF76D309F4B42831964131DA7879AFFAA -32AC7150490FF034A143, F8BC0F7FB724B0E98068DC7C649C86439D9A0CA110D70534C249A957, 567D9D1611222829F765E233F2865CA765C533A75DF52A8CA6E2EE42 -980553F0DB2FD09DE3C9, 3E52D85CBBE66635CEBEC93FFDF099863AC3532248828404C4488A66, 6E32E7FDBA3D4121370E6E7419258EF83434AD93AB0BC2C42ABDD324 -1C80FFBD2918F71D9AB5B, 6B1FF073A3CD8A64AE76CC428B83D25B9DAA0D80830E98B8D30B1AD8, 5D88EC8A26D1CE0065466721A5EBD21983E5212CE7CE0E86412CC4CF -5582FF377B4AE558D0211, F866E3EF3FA7E04BDAEDE69793A48B1A11F184007E2E8BF3E7B0B13F, 89CBCADC39970CDFC908391FC332BE45AB7040C154908B1FA9363E41 -10088FDA671E0B00A70633, 27088BE15042726C5934504CC097EDB828B808E274382184A04865FC, 7E28842B3D3B141A8FAFF4EC5FB4523A817F533BA3878BF62DE490D2 -3019AF8F355A2101F51299, 7612A5EF2A4FE2ACC965E9EA98C980414008820044C8D2494A6E48A1, 804F8875E4FD670460E6E8774E3F8EA7ABE132EB4F8538C0F263E753 -904D0EADA00E6305DF37CB, A2E07EB44A40264D8CFA93118985E2AA715D9834A7A2FCA5337105AB, 82EE99285D88747C9A969C03DD91F97749A795556206937E02EB7070 -1B0E72C08E02B29119DA761, D130DBB6587C74D79A7B2C25467D87D63290201BC142A26A3F7729F8, 593F7B51E5DE8439291758949A287941E2D0C9C16D257B50E59E5657 -512B5841AA0817B34D8F623, 4DB182A30BBE6B0F0C1733FEC0EDCF0F29F6FF3C3224EF165B40135F, 2F1B284FB92E47C7BBE9C49B99A6E63E95A929A2043A3AD156A831C8 -F38208C4FE184719E8AE269, 91507DC0D051315B394C9D8868B523C1580CA006D12AF7A59B742595, 8C35E6ABDEA10E34147ABDD51A338D043A7DE36C66CCEFAE82388521 -2DA861A4EFA48D54DBA0A73B, C869E191772D7416E0854FC627CD4D52C8E1DC706368EDED86C0A5C9, 1958DB34382603897FA5DBB481AB9491B0B4563D9411707DB27E75DB -88F924EECEEDA7FE92E1F5B1, D74520FAD09C24D7C8229D21268D9F796CE671646C7A1F663112E3D7, A39D0856AB0790FC41750BF4B44470685847810C591E9C65497A7003 -19AEB6ECC6CC8F7FBB8A5E113, 6A854252F1E6A0B376BEDAE354AF23012963364589417EE9A0E0C8C5, A8DBF75C9AE8108AEA6407839DB057455E75EFF24B126782DBF17E71 -4D0C24C65465AE7F329F1A339, A7BE78954E6711850881AAEF30A804E95091F4ACE0A451C4EFBBFCC4, AE45F4111709124C24656B5D9A00A2EC632DD1F9E0D19B7C4C74E2BD -E7246E52FD310B7D97DD4E9AB, BB6BF6D52101D7171692B076718926024949B2FC1CACC4C217E22A49, F4E2E945D6A047AA3C19E8AAC06704D6E6A3E6597C965222EF146060 -2B56D4AF8F7932278C797EBD01, FDCAC4F59249609AD294C519C8AC53DE2F000BED9FC04C4C6B8F2B72, 3D2E5C42C563572BC901E922FBEAB3F05362F30FB064927C9F12B6CE -82047E0EAE6B9676A56C7C3703, 78841771E59617F86F26F54E29FB34D0BBBADBE036332D95CDCF99EE, 4301EE6FAB7416ACC553C2717D7CD36D5545F1BBFCC3D9D1AC99CF73 -1860D7A2C0B42C363F04574A509, 34F8CD3C4075CC243E90AD791FCAD0863A0B8780E807349CB95F8356, 66FF86AB3C4FE675957707DDE054751EC4F630313DA1D3EC3248599E -492286E8421C84A2BD0D05DEF1B, C063400A25BC0F494FC7C150ACAB7A62B117A708E912C1898BECF607, 4EA8F6FBB32B3E8919891173164A63BF8B8FB964E0B004E56379E049 -DB6794B8C6558DE83727119CD51, 1C9455B676487BAA9275CF474F25B77C05CD1CEBBA5E83B72E84F8C5, F771F0402BCD3FBE57BA3155E76AF6F1EF4895C072F27575EA674B38 -29236BE2A5300A9B8A57534D67F3, 3E246D1BEAD5B9A65A6462B144D74E9EC9060D5CBDF7199D0271D3BB, 4D96FBC404BB208D2283DCB44F907E563C3725550EC601D11464C4CF -7B6A43A7EF901FD29F05F9E837D9, 44809885890A682AA2E5A3E36DF30F49650E53597A90EDE162E0A663, 32F2EFA01F22C2F5C35E715BCFCCEE8A1D054E31D6BA67E6F66B51D2 -1723ECAF7CEB05F77DD11EDB8A78B, 1ED9A1DA3FF1D896E53DA5AE2D1ABB5531F29D8AECE017EC27333099, 810A5D32B852640F61043D8905CC49F6B9E5E1A8675E114DBD10E28 -456BC60E76C111E679735C929F6A1, 963BC62E52F3E9089A4CFAE8889AC36C02CA5CA870255BBA41D80992, 8283036EC72E77656965A322EAE1835DEFE81BC2BB606BE039AA08B1 -D043522B644335B36C5A15B7DE3E3, 59513B27D32F5487E7BC263CA8163825CA301AD4FCD2AF6BC38CD8A0, 86F10C63D8DDF602FC5FD1FF212BD6018FD8E84EE2DD8AF699030FDD -270C9F6822CC9A11A450E41279ABA9, A6FDB2969639E579FC432045414BE41C70DDA2E08F038A0A5BB42AE3, 676F76DBF44A80DBE674C97E925AD073A225ADED52A66EAD1743E349 -7525DE386865CE34ECF2AC376D02FB, AE3C55F9F92AF86E2E24690093279721BA8BC470C0BB30629DE7A830, B89FD0207A227000BB68B30CB54E30F4FB91D5530153B82D52EC8688 -15F719AA939316A9EC6D804A64708F1, 340E2C333CBC4F554A9D395F81FDC65134504DD940C5C169096B2E6B, E46482D2ACFC6B7DD12794118B3FB4844702E6AD410EBB2572D70C2D -41E54CFFBAB943FDC54880DF2D51AD3, 3DBC30E4C85CB76E7AB13CE933C124BBCE4780ED0E5DD209EF3E0D79, 2436FD101DB483C4A9AED4CA46524814763E33DF799594196FBD5FF0 -C5AFE6FF302BCBF94FD9829D87F5079, 8D232E2CC2BFD2ABF2381EBDF8E2F208EB7221D6051AA3F848BAD7AA, 84379CACC97CB4CC3E038F03F9C3E39A95B2692EF3207992F6BC5A71 -2510FB4FD908363EBEF8C87D897DF16B, 474E806113EBED5D3207F369B9025C92E5781882FD8283DC156FEC94, 92C1255A2357F57D2033F648A07CB8BF6ED976DF92723F83C1742C68 -6F32F1EF8B18A2BC3CEA59789C79D441, EEFFEB6E96579EABA84813CE7D7D8684BC4526783BB99D766412C93F, 7A882D966C41A7776DE16D83627BF26E6AA2438AAAC509ECB59FC188 -14D98D5CEA149E834B6BF0C69D56D7CC3, B6D1C744E5F1B500F7C00FA3ACD776A4D4FDA70A1AD6FF2A28CB5440, B6B1B53BDCF1D5C3388C7B9E89D13B317935DE42E0EA796DB4CD4F95 -3E8CA816BE3DDB89E243D253D80487649, 565A2413DAA241BD78E000D4514586C32A3618B0540EA46E6E404DA1, CE6054C367C0108D3AE4BA143353D0E88B48507206BF70928F2D612C -BBA5F8443AB9929DA6CB76FB880D962DB, FDDB75542EC1312CE37D27C86B713322E71DBD862F7C32225A3A1ABC, F89EE7A1D1C4E4E211A7080BDEC6A5921C285ACBA7F6971C031F1387 -232F1E8CCB02CB7D8F46264F29828C2891, 13957BFCE2EF1DA3867BFE22E31E40720E4D4A58803579FF12CF72FE, B82DE7FAA2528B4A77D62559ECFD2322A4FBE18EE5113D1E43C24D85 -698D5BA661086278ADD272ED7C87A479B3, 860F61F11AF83C2D6B66DA9D942C2E5BF6B315983A58FE19F3827010, 1A6894B0D572A2D5940F2CE046AB40334FC1145DBC8E2DD87FD1E33B -13CA812F32319276A097758C87596ED6D19, C7C67E5E063741E3906B13E7C7D165C8F16D90B837B5294ABB02CA3E, 91394812FD3A35E358B2864C9E9AAE270F948390B3B1B9FFF5D2352C -3B5F838D9694B763E1C660A5960C4C8474B, 8E0628DC2359649255B2FB0BCD820AA5EF46D52FCD4FA9C6D2935704, 815596DDA0D138F90381FC63591F92F6D0ED19028DD6457B8D56B988 -B21E8AA8C3BE262BA55321F0C224E58D5E1, 79C4ADB605F9C0B34F52281817969775FFD63F36B4F696B06790E61F, 22171C082EAE8EE539438A3DEE8404A94A1737F08645403FB32D76FF -2165B9FFA4B3A7282EFF965D2466EB0A81A3, 83E2B541F70B5F49DF385A40E91EEDB42430A123C73BD71573C4AD68, 471064372661A3CE3FD801604676413F29F37E5A076F307D685F8627 -64312DFEEE1AF5788CFEC3176D34C11F84E9, 7E4C45B94EAAC7A463DF23F5D330F9B7D7A130CAF6D9AE253015054C, 4DB6EDDED348A8E3E3260EB7D6A702A7E9DD3706C3EC4001AE1A1304 -12C9389FCCA50E069A6FC4946479E435E8EBB, 5B0E2714AB739379A642EBBB6DF9A42FF8BF3AA08DF2C874E340AD12, D13787A422669EA964C6E694C3E6A2FED4A5BBC54BF7EB6E5CFF54FC -385BA9DF65EF2A13CF4F4DBD2D6DACA1BAC31, 835CEDB242D2FCE30CC25ED413002AF81CA3BE6694BB2740D2C7AFE6, F4F2FA5A1390F06C10373CEE927A2753AD4E6E76E16E82419936FA5C -A912FD9E31CD7E3B6DEDE937884905E530493, CE8ACEA7322FCB9D00F72613D70EECF3634C18CB7CDB86B85DF25B16, F8D7423C003EBEDD38FD283A4581B016554B3B6F19C7A3B21F1B5F49 -1FB38F8DA95687AB249C9BBA698DB11AF90DB9, A5388908704BD7037303452C9CD652B019B90B9102E34C62995109E2, 57B7FBDC820539E6975600AA55C452180385AB6CDB9FA9CCCB39D5B -5F1AAEA8FC0397016DD5D32F3CA91350EB292B, 1846C2A8382CA7D35AE259A5F991765B0FFE6863984CFCB9C5E3F18D, 9217BB8675E5AA70DDC907F9E7B3704D6F7CA78E7AAFA78F4BD3D326 -11D500BFAF40AC5044981798DB5FB39F2C17B81, 4AB209E645972B5875BC6FB67F451B89E1D0E9982FBADEE7F8AE9AE7, E5108B1082281FF1B7E1C00A0AFA7925469B765385B039CF0ACA4A8 -357F023F0DC204F0CDC846CA921F1ADD8447283, 4938C6436695D4BD1BF9390F81C74F9C3F409D29CE8D1C724B1D93AB, AEA0DF59B29A08951F32001E0EC78B67E8BD026B0B0A5E5E8B67A67A -A07D06BD29460ED26958D45FB65D50988CD5789, 513B8E07F4F315E84EDD6AA65D8EC03DF324D3FF8CACDAF578C19BD8, 171A0D3BB9031D3B1A3F395A89BADE2C015FB77FE2F720627913DE5B -1E17714377BD22C773C0A7D1F2317F1C9A68069B, E85227C4F5C7049F7A3E2D1AF6F809D4DD4060586A7DCD8A9632E30D, C50E343E07A9B62BC3F90F568BDBB438119AF291F784F3CF94170B32 -5A4653CA673768565B41F775D6947D55CF3813D1, 5004F41DC75A5100D0C4C94B5F4ABDC830BB70D8A3EF8BA80F8B0106, D01D936E9B1275413D6F5A3AE69C53337F92A9999AC6A174D4BB7BDD -10ED2FB5F35A6390311C5E66183BD78016DA83B73, DA08B4FA25D8EFDAA21CB16AF0BCCC5A1FB84F36B04F01F9ABF7A466, EF5FD5BCA10427BC9E9EB97FE64B52538BD2A42767EE24E28D998F79 -32C78F21DA0F2AB093551B3248B38680448F8B259, 5A3D7E4FF4ACB9E2E42E291CB0A00055E8D564656BF80140A69AC7CD, D44465AB9889071B964EA9D6DD2293C2FD5DEC5F2DA19647E2ADDEC9 -9856AD658E2D8011B9FF5196DA1A9380CDAEA170B, F426C8B26E65590D7E482ED14E0A753A04F748E6CA68A95B109422, AA91BC40AF7E2DB5310AE16A791546327B3F65C6BE9D0D48ADC16B2C -1C9040830AA8880352DFDF4C48E4FBA82690BE4521, F871C97FA218C2B9A246DB1C983950E8ED2A5C1F780D1BA90DCF6D30, 596300CFDC1B550F7AD7073FD71DE02CD7187A9B55E4695364534EF2 -55B0C1891FF99809F89F9DE4DAAEF2F873B23ACF63, D6BD9CE76DB2389E2A9F0282FE09650599A0EDABEFAF94D680041035, FA546DEEFED7B001A773FABCA8FE96217409BD2417D0B3AFDCF9A622 -10112449B5FECC81DE9DED9AE900CD8E95B16B06E29, 5DC7A99F493CA394F30A83B8C3EFBB4ACEDEEA32742791B6E4D96D06, 54B0AE3E89CFDF50F2673CBAED1A2E51FC3AA88D231CD755F3E865F4 -30336CDD21FC65859BD9C8D0BB0268ABC1144114A7B, 3B704A574160450486E281407FCB9F385887E9CED024E0772D956F7F, 7867D7C0F8A58BA59B9ED64300AC618A35D112D7D02EC6630CCF8112 -909A469765F53090D38D5A7231073A03433CC33DF71, EB275092513826241ADD2027C318622FCB610FC48886B0C053F66B9C, 4752DAC073728D4B3E12A23393640A0F38A1ABA1FE514AA952B071ED -1B1CED3C631DF91B27AA80F569315AE09C9B649B9E53, F3A80BEC6326399E5D846455D2AB4D26F80A5467A344B6E53DB51308, A2DEFFF968EB3D918D3348639CD9DFB31DF0A3BFEB8B0C6D68132B2 -5156C7B52959EB5176FF82E03B9410A1D5D22DD2DAF9, 5198983342D72EA3323004852DBE34D2D19BC0666746CD4DBA5BB4A0, D43596CE581C07801F494EB0D2176A71076C5C560039CE26FB2BD990 -F404571F7C0DC1F464FE88A0B2BC31E58176897890EB, ABAFB40DB81416834897227A8062CDB4006F8A2376BC5309787049A7, 31EA667608996EEC5BDA680378000F7246E3728F8F6CEC7989B72F40 -2DC0D055E742945DD2EFB99E2183495B084639C69B2C1, 49AD83CFEB347D0B79D44A50F4EC30D4E50EBE9CBC15208EC8A75E2F, E37F7E851E485A9265037E548F318D689E8213D76258FAF7B70C5179 -89427101B5C7BD1978CF2CDA6489DC1118D2AD53D1843, 84392061F665B5AF5AF5D40C958CA52289AD4F17212C7E25103EFE8E, CFBA07E2045F60399D7E4B11EC70C2ECB1B5EB26EE1557D28D54A5AA -19BC753052157374C6A6D868F2D9D94334A7807FB748C9, 751E83A6AF15280FC00AE31EA3B3607AC9CC25462E8CCF6CCC13C691, 9DB6DBC34AC49A3D0861AFD9C441A1BC177BBC617D470D48C3F5344E -4D355F90F6405A5E53F4893AD88D8BC99DF6817F25DA5B, 646DFFBAD04916E629FF52412143CCFB2EE3A66388BE2F784A67633B, 66D781B41F6D348179275BDC06D41DBC6E8592CC4AB489D246752E0 -E7A01EB2E2C10F1AFBDD9BB089A8A35CD9E3847D718F11, 64CF8470EB59EAB6FEBF0FF401D163EED509CC225A11759D893EB01A, E239DCD5315AC07B34C598E164C23A022660D6B943402173A3E0D85D -2B6E05C18A8432D50F398D3119CF9EA168DAA8D7854AD33, 56FEDA7F730804922645928C5EC38B358B16F5B37F07562CA988FCFB, 3EDCD377E4B203D860DD24FE73D18CA02501FE8F1B9E14EF817D53E -824A11449F8C987F2DACA7934D6EDBE43A8FFA868FE0799, 603959E0F53EDF19D13140C404E972C587A34BC7DAC54863BE600240, 5A729278913677FB173E9F33F4C6B5F2D4F23DB09CB1A491419B46BE -186DE33CDDEA5C97D8905F6B9E84C93ACAFAFEF93AFA16CB, C0BD22730FD9CB9CE51E73FB04300214B11D028EA97FCA25630329B4, 400029E2F127F00EE09724769AD4EA2F0219334A865C466FB686B120 -4949A9B699BF15C789B11E42DB8E5BB060F0FCEBB0EE4461, 8928662533735CC4D2294BB65D62C9348DC54860651C5D8ECE9CC4A2, CF38DB1A99A04631C3EB3D91B75D324B7EC158898847C8E97D0D1CEF -DBDCFD23CD3D41569D135AC892AB131122D2F6C312CACD23, E31F70D450B1C4D908D42FF14ECC288401B4B2351E09039AAC06760B, C05385585CC321BFE1E9CEE4B724B27A1A44073047B2DB23218B8D89 -29396F76B67B7C403D73A1059B80139336878E44938606769, 540CE2017428F8F2C685D3E026400B8B7F85A9111AEB1C7E732EEDCA, 3FAC5B38F1425C92BF205C5807EF49B0E18407015BC8CB8E48BCD654 -7BAC4E64237274C0B85AE310D2803AB9A396AACDBA921363B, D6DEF929A63BC8925B4A4E63173BD90662A8F7FB9D88B4270DE2CE69, 9F4EA22418479B10B4755E8FE107D8ED866CE49DB22A1ACE76718996 -17304EB2C6A575E422910A9327780B02CEAC400692FB63A2B1, BB4670CE0329AFF79258EF269A7BCC959D87DFE80BDCE8BA6459936F, BBA1D31C04E781A900AA8BAF2988D34F340973192F981CD1E83B4564 -4590EC1853F061AC67B31FB9766821086C04C013B8F22AE813, 45E6B1674732B7D2338DD56A0ABD9B3D9A9A59D86BD455DC7FF9616F, A2B85EC52F699E000507B6C8B4660AF31CCB90CE106AF94CCC78BF78 -D0B2C448FBD1250537195F2C63386319440E403B2AD680B839, B837F43BE73BC0B560801DE91A7D47A558D25FB1E4FDAD26357CEB8C, 6789EEDD114F7A3A1B18C5737DF2BCB1FB9EF1996B5DD03EAEB9F10F -272184CDAF3736F0FA54C1D8529A9294BCC2AC0B180838228AB, C8B5377944667B0C017AB22CCC734EF549632F406104D3C1D2FB19D0, 805A0F9CBB7765A78AEDB87FE42AEA6E360C37A4116DDF9BB8329954 -75648E690DA5A4D2EEFE4588F7CFB7BE364804214818A867A01, 4F400F7A8721EF9FC9CE4AD8A8068F74B51B197400AB38B4D10E6C87, 5F9423C807D049F2FE86443FE8F0C6F1A1F656F3D35CA7106D74F8C3 -1602DAB3B28F0EE78CCFAD09AE76F273AA2D80C63D849F936E03, 838D9F9EA47C47AE25896303825C31C1ECA75F22A8D3165BA1B4F090, 9ABD33EC035B387A845CE11E42EFF71C8742DB5EFC4C61B201A96599 -4208901B17AD2CB6A66F071D0B64D75AFE888252B88DDEBA4A09, 9B589D1A1534080FD91DF288F0D88C927D27557FD0A1C6F196A9E3BA, E70E4D2B95236DD2B6573945FFEDAB3C02179D2940B75335444E72BE -C619B05147078623F34D1557222E8610FB9986F829A99C2EDE1B, B60C05EC716F5B18362AEFB4BF529146EB2A3C2F2946FCA74078181A, 98F6988C710D73932AB7F72AD0D91CC7D7EE23DED80CA0C582F473B4 -2524D10F3D516926BD9E74005668B9232F2CC94E87CFCD48C9A51, B1130EAE2B5733BE78E54DC9070BD3ADA67EB19421C9FC19563D2EA7, EA34001A4E9751C94446E85701671D73C8B668E67F950B25660016DF -6F6E732DB7F43B7438DB5C01033A2B698D865BEB976F67DA5CEF3, C91E72D890018B343D3D6D90572BB75000B26EEA1DDEF16709C84F1, E8530B7143DD8E828E10A06135C12CD002E5EFB35F5D9DFCDD636320 -14E4B598927DCB25CAA92140309AE823CA89313C2C64E378F16CD9, 496C1AFC7DCC2F878B24443D4250EE53A2E576FA8DF2DA47AF4136B4, 34B68FA994B037B5DD758CDCF737AC97DAF04C8C6FACA4A036EF6935 -3EAE20C9B77961715FFB63C091D0B86B5F9B93B4852EAA6AD4468B, D92253DC324640172F572A67CB7FDFA2FDAE009020E36F59673CF795, 713535A0A4F70093D3668264512A154FB47A6E63883ECD4627532486 -BC0A625D266C24541FF22B41B57229421ED2BB1D8F8BFF407CD3A1, 9829981ABC910F195474EBA80C8105570E7062D5CA2F698180896058, 2471A6945484D09320F925B9666DCED662FBD278480935075B1080BD -2341F271773446CFC5FD681C520567BC65C783158AEA3FDC1767AE3, E738FA89F04B3B264E3D9148659F8E89FADA75CA07EF94D99E5E4049, 8D7189B1F1E7121972AEF7EDD22F646973F77B7FA2E9BD9642C974C7 -69C5D754659CD46F51F83854F610373531568940A0BEBF9446370A9, B3FC9DE2B39001A55875256F0D573F47E1178870A2EA8749E5F6B0DE, 175F7C353FC68068FB501F3F6A0E6B104322E6430E14B46B3623DBDB -13D5185FD30D67D4DF5E8A8FEE230A59F94039BC1E23C3EBCD2A51FB, 832264CDA085803F497645A5841F9E4AECFAEBB1B91068D05C20D2A8, B0032AE2BE48983FD9696331C744ADC95D2A706D97CE5F6CCC8016C -3B7F491F7928377E9E1B9FAFCA691F0DEBC0AD345A6B4BC3677EF5F1, FD00B3858B888CA0E7A44E42656765F775A748BD75E1E3C6D6555D7F, A6E710390E0AD2AF144746F59758C92C08A9F4B666879B795E9AC9E4 -B27DDB5E6B78A67BDA52DF0F5F3B5D29C342079D0F41E34A367CE1D3, 23B97099A944244533AC76542AB9A004274ACC5ECC9819474681C068, E3C1C5EB1806DA05C3F40EE0296991D5F9019CA998F70E4509EACA4C -ECC-256 -1, 6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296, 4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5 -3, 5ECBE4D1A6330A44C8F7EF951D4BF165E6C6B721EFADA985FB41661BC6E7FD6C, 8734640C4998FF7E374B06CE1A64A2ECD82AB036384FB83D9A79B127A27D5032 -9, EA68D7B6FEDF0B71878938D51D71F8729E0ACB8C2C6DF8B3D79E8A4B90949EE0, 2A2744C972C9FCE787014A964A8EA0C84D714FEAA4DE823FE85A224A4DD048FA -1B, 184FFA5819D80D51DEBA2FAC4611F378576355BD683E54ABF2E201173B0883D1, C0A66E276688F359A4C6D90826CB999545BDECCC63F0491620D242C260906E6F -51, D829AB2D2EED358C8464C3093DC72E911E2A1B96700BB9B12CDCF0C2A8A3B072, 3EC1BBE459CAE899E1F6C7BE2A598059166273E2D406AAF7CF3BC0B0B543775E -F3, A392B26B0503A71F0CE1E02ACADF19D72A84D6211B21C914EE8BC58DFEA92529, 90BB3C9F9F1B598B6F97AED2C48F4C59F12194D8EB011465FF88E7560D1C5493 -2D9, 78D56FA935996DDB7565CD320D2F264F5305BE551F411D49CE17944BBD8009CF, DC5B53BB32F4D146A93A6DDE353B6E25A9FCAFC7A5DE15E01F7746239B88C07F -88B, 51E39E9F111A1FFC74D63499CF065324B86A479BC0FBB3DB0EBB77E95DFA86A1, 8C945F778CDEDCD2DE6D7768005041FFB91C6BC2DA656C104373132AB0C9102D -19A1, 9EE8C552F615C8D0E86A7B983EF37F69BF5906DE3ABB7584493EC15E8C803EF7, 2B0363927BEC85207FFAFF4FA95C20BCF723AEB67862C5EB892A726A41500A27 -4CE3, B97B92F86F23855AE92E8578B23FB85128CE00A4428EE1FD91ABFB48316FEA58, 77DA430A9B98E46C9EBC9F627F507467D05CB06172EDE14FA580CA2782184805 -E6A9, 82D3B3A3A5C7E5B34187CDC1AA0FA9FF0E8AD81F269EBE2A079A1CF9837C0794, 8413A7951DAB0CDB00C790192CE9D7FC142AC2E8BDBCBC37671764B264087D8D -2B3FB, 84D845BDA10BD468A270B290020C440958F2CBA1345F77097590E4F0982C5A97, 952F9B537E6E32499A76AF3432CF0B47C9EF5DE39E7EB8B5D5355C30BE1CFCC7 -81BF1, 48FB22AC3EA85118E91EB21C22CD06C0E9AFF19DB827439BE275553C1232DBC4, C1F09255BE08A671628A64F25A2B562618F0014DD092BBC12FC2FF8A3E59BF6F -1853D3, D547A583C479BDBF65D90A6ABACBE47B2ED9BD5DDB848DAEFC3ADA9F045F8DF5, 7A7E2AA0AFC241FF6B254CB58B36125B87E560AD50B469E562CEEAA1BC626C39 -48FB79, 26A141A8ACBB471D3F3BDFEE5889D101F5F244A1ADA073A28A1ABE4D66AFACDC, DD5E7A714BAEF3F3D20947A3EDB6C9A11D221344B572EB75F075DF225514AE4 -DAF26B, EE8A3A9A685BC75A6A6329537AB447B4EBEFC93DEEE05D92D5481BC5FA2DD2D4, 11C6F3406FC0871FA80021D28B9252BA2A4401CC6DE5DD887E1C102F89194236 -290D741, 6777D49BC45F54537A46598C9EF93D4A260CB2E223883131F90EC013AFC3CA9C, 1B309AD15E576A8F6AFACCC30E14BA222C8278D5942B1D3C4D5F3B2E926E9D8 -7B285C3, 1C38CDF2246338A098DB0E2B0E438FDBC1C9E598BE6B661AB5413D7AAC7365D1, 965E5C9AD86C0BD83BB0EB34F4742D02B4C12372661A5A7792FEDE41A036363B -17179149, 2E1F9230C1189F7303AE23F85A4DEC206FCB2C9B9DAABE775D4350759887E3E7, 853E17E5254608B15FF68DCCE6DD47F5206AD0545A70B0BB8E38AF816D9CF154 -4546B3DB, 6DD8BDFAF3A6ED8A97C35E0B8C0889A45232E5ED8DB12BC03C18B5CEA4D146B1, BDAB741CDD72401A40D3FF40F2FB6C8D49AEDBE01AC8221DA68D922E4EFBF0CD -CFD41B91, F11C444EF887CA44ED031DDCEC54AB09CA839113B84DA5478F5990CFDC4A280A, AC2D493266FC8E5814994EF40C6612D15B8A5FA6435C4499A1ECA1783448EE4 -26F7C52B3, 4CFB521D25D4841B3B3AEA60BF54890744FB04AD389D90751CAB408870AA96E7, 63FF30C411688891F322842464D50CEAB09508CDFFB2518613D07493A68E7D53 -74E74F819, E33DFB2BEBEA0F89F7B24E912C309F1BD2201385E7195A7F86EE8D827D252C48, CF788477541A99C605A5A49A445AE2DC83D332CC2E25C00E8DA74DA1816602B3 -15EB5EE84B, B6F05F7350F984E483866624FD32F344571505D798AF01C76B0037A161898402, BEC64BB72514F0302CD84ADD7F8B839914D169F32C4D7DD7E75BDE14610EFEA3 -41C21CB8E1, E4BE38E3A719C76CBE660756EEDCE585E836F79C252F14ACBC347D1F2B005D03, 6F69C0A3DCD5F48BE6EDF0D787AF6C985591C93FBA8E9844B2E2BA83937A3F06 -C546562AA3, BE14B442FE165FE657CFC0CA8A1A765FAB5D14F96988FD02336F03B96686FD3E, E6E8020E81856E788370FACA0708AFF83831A25F751A8F192BB13B9039338DBC -24FD3027FE9, FFACC9CB1F8FEDC112BE4EBF255956A8C8770686D236862AD1AA51C655A8D6E3, 8301B27043EF5D774421E58E3160AC2B82DF8FEE0C97E0A7D2C3499D1C2D1B91 -6EF79077FBB, B192264B1A443E9AFB9CF79B1ACB997B6664A92AE1B8C84FBEA2FAF6E9FB1841, D499FB416CB4709AF072C78A4CD5ADD0926BE45964F09A37E9B3605B15F62F27 -14CE6B167F31, D4C9949DB9AC21F126575255AF2E99EAA6EC3E2C9658D572594445699B0A811F, 6C88B1474CD419D6D7725FEB2EAB9E0F007DC873F12B11484A06433AFA0ABD54 -3E6B41437D93, 5B582B68144EEB9B4921D698129CC87D4DB79A8057E1DFDF87031FB59617C6EF, 43E9A8B669B41532768550B6FE7885F5E75B114D9802A777A9D6C27224C8F361 -BB41C3CA78B9, CC026A9D0A728EC8994DCBAF79F3CA6BD3A935AD808C606886BD333B031940F0, A44C9033F98079E7F2621A921BDF565C861C125A8E6A977F1847B90F34A0495F -231C54B5F6A2B, B4D0291977B7338239B0087DA7205FEE91AFE4E9502AF60A686F0A4ED6E898D4, EAA998CDC7F5BA3ADA9B4FD1F031C0439B1901FD7839C4E6C57D34981598817 -6954FE21E3E81, C84EFB4200A900E25C11788DCD6486271683966891A1720D4E69A05EFDF75CEB, 7927618CF298C706A84F263214389D2ED3590B0CF56616B17A4F92578AA66F79 -13BFEFA65ABB83, 6873677B3481510BA6C07094667A74758A95955382745C2DC9BFD221D86220E9, A996843948A68261819C67D9832431FDFEE4C4B740468B1D32E634AB54FBE56B -3B3FCEF3103289, 318D2083EDBBDFF616035068099DEF9F8F301C18862819572AF983C0DE1B5766, CF4EB2E4EEA21CB80737146A9FE0A9FA8ED27BA3304B591D044F0B5844BE2440 -B1BF6CD930979B, B9F8D2CD8605FBB34FB2E45CA1B7B551290A9756E4E505B8BC1A24D573A2315D, A7DDE469F7EC6C41AF7106D876E942D6326B0B080FB8974B5FCFF4F57B2FE3DD -2153E468B91C6D1, 4F34B85A6E86EFCE07F2416EA5207584EA73EE563AAEB8BA5718998C3E6BC837, B9E58B8C624FC69CABFFF05F0AE627831D321A7CEFB9B46DC00001BE04557FC3 -63FBAD3A2B55473, C72747417F3EDEE3A825D6812433A765B86A5232C6C6A659C9A4B191B1E1DE94, 6CEEF872773D01CE3DF28BC9CAAF7FAFB99DF1D959F68E72E35B6857E0932F8F -12BF307AE81FFD59, 81FD011C8A99A40DCA8A7C32C79162A5F2D4890896CC78B3A32ED717CA5FA2A4, B9D74EB358E8317836B4AF55570A1D3D12860572CD2A5B2D0DFCC4BD3C4BC987 -383D9170B85FF80B, 40AFAE4C462C69336D891960DFE6E196E9993833E665E049B1954637D43A129E, CD4061C098918CE5A9C8AA6834BB03BD772075E65A409E46D714F355EC60EB8A -A8B8B452291FE821, 74704BD80D4E27078A655E706E2A597ACDC29E436EE80BCBE18FAA84C15C6DA3, D1B40931780C1DA6335FC44FE4692B6484F60E252D02F83BCADDDB3EE7A896C8 -1FA2A1CF67B5FB863, 6B439DDBC100DEDEE0483A0C4FD5A8CDAC1802CA3F97293CA725C279CD7BB08E, 59140C0741B1FA234AAE1DA31DBA65D9791F33969AA7061B0749FDBF88758FD9 -5EE7E56E3721F2929, 7668C2BDC91D291B02650789062D5E751BAFAF59CF998678B898823961062D01, B34EB15AA456E24AFB98C5E6E4DF372DD91D129AEF901E0B130BCF7E9331F5ED -11CB7B04AA565D7B7B, F92C3A38FA5E7DFBEFC60FA0E2456DB43753A261BFE6FF63C62E363EC0878113, EEB2E1B0276140E9BE5305B50B749C7B86A03E318DC329631BADBF3887482246 -3562710DFF03187271, 29E7020497D6ACA67F6763F75F4B42AB5AE4EE8A13AC502FCD3D360F4ED642F3, 4CDE12B3883D75D2E0A6D7609B0AFBDFAC4988D9705AFAB4EC0A1589514E0329 -A0275329FD09495753, 1FAD5E7460F6DFD39F30175930AF50D1BD7C5D7DC6BD042D5C41F2C50CDA39F5, 621FF115E20C9EA82F065D44A3A8E1A5ADFE5BED5A2CCCB7CB41EA3011DEE37 -1E075F97DF71BDC05F9, C32260FF2CA314BF21C9657FE2A67DBCD42F8FEE94801DFBF19B90B5F0391D3D, 4D5C4D7A51DE0E13C84D9F73397E2B60691641DAE21E8A0EC176099E53CA25D6 -5A161EC79E5539411EB, 27A7C9B7C1D4890DA2D7EFF72817674AF89B0252D4C5D475BB3A4465E447FAE5, C5E46F8F273374A13C5946F38885C32EC2A74E0EA841FCC7B89BD8D83F55FB7 -10E425C56DAFFABC35C1, 118A2CAC0A483723089A3E884871DF85AC85AF79F585EBC3DE428161FCDFF17A, 25755E6E4CBE651A0FFADCB9BA725B814120B6C06CDFE5A84F907E6E2A6470DB -32AC7150490FF034A143, 8449173F1EF306C543D0C4B9F2CB93429F34637236E309BE67D53D4157796723, 781842F7C978BB63AA594FAD8A68134335C945AD09177FFE0301E67A0B8578EA -980553F0DB2FD09DE3C9, F5E177E4C208EE73EA60F93CF55AA29C7432F64190151C3C9120EFF544507895, C3A1129403AF90EB0144B02064C808A74E77FF1B8D5D20959F2D1C6485D8201B -1C80FFBD2918F71D9AB5B, E97A1033D8D47612F69417D75A39F45E4D3E2FB2BEF8A236C5B1378403C3C82, A1FF6F7DECBD7908319D1735F7E9FABE8A65C6496586B7773B9DD7F3C8458AA -5582FF377B4AE558D0211, 9B62C7D0DB0A1F1F71060373F50A34A3A8956CB4C6ED4AB95B400369E180F74A, 2074BE51F968B87465918C164637E3388C151DA1454F9F5696D93C0B89F5B795 -10088FDA671E0B00A70633, 57789C6F63C6D8B3E1B8D2DED479226BD3C4E15D76A8F184F6434DFD51C95EB7, 2CEA6ED3DE8E8DA3FC023B7EF1879D4035F6FD58A9F5B2CFC3AC0BA58C6CA623 -3019AF8F355A2101F51299, D8BFACB83417C2B665562F70C8AA2A54049B5490BE83D35219E61F4F3AFA6DFD, FA0EA105DC3EDB5BFB57AB2EB0AFE60439F6FBF7ED372C41E23CF87EA1D7D7A6 -904D0EADA00E6305DF37CB, E05FDA5A217409FA3682C6E5707D440D3DF750C185C58CDCF9FB96D7029E6727, 4E336308069F06AD9140C23FC466A16156F5E96E838213AE77F98CDDB1C36A1B -1B0E72C08E02B29119DA761, 84090FDF8B97262415190B79DB0D272ECE5CB2F374E4C05A524DF214BE291BAB, 1F40013072768A2CBAC51F4C1F1C03FE57BE78DD50630416450C9233682514A7 -512B5841AA0817B34D8F623, A3E2C85B131943FC0D17EAEF2B5A417D31C82139ACB2DBCCE2ABBB47AFB8BD1C, 9BFDD98C5698680E991367A49595BE03693E633F6D3ED8D798D8D16F3B4AF3B6 -F38208C4FE184719E8AE269, 38F0BE60E0FC25D6408D876E330CB8EF1EB27187B105D16B1629173F8D68B2FE, 5EA95CBB1C921B1CDF7B3EAFC19B38B86C0C014C8310ABCD47AE72332FA3476E -2DA861A4EFA48D54DBA0A73B, DC28C706097F7625A596B6A820CBFE34152C1CB3B6E98A45CF408B2FFB9A4212, CA52B09F3E15F24719FF2957437117225F89CD191B926868DF67ABF6300A628A -88F924EECEEDA7FE92E1F5B1, 757C39D0DF71B146F31A43DF4399E4D48D2F4310B4686065D1151C00BA3DD58B, A9EAEFD96F3B04DB4CF7083552BCC39490651B3D25939B976273172EF2148CD0 -19AEB6ECC6CC8F7FBB8A5E113, C5CF26F8A81A725795FDE9E4D87D5D3A65D02C62BA9A314FF3C452287CFCB3BC, 7A6E7E4F2F6F5B01B6BD56D85D5A521E202DBE1C92C26E4EFB53A42E82132FE7 -4D0C24C65465AE7F329F1A339, E4A096A0679B179692D761649FC84D12633A45835BF68FF0F6363BB7ACDA2C20, D583B39C13EB95321119438A0FEF948B6FE153AB86CD3B04D68C1C996E0077F9 -E7246E52FD310B7D97DD4E9AB, 1EF7F3BC67DC61B3FCA443E1BE7D775B88F177DDE0DBBC4F87747F8E1FEA5773, 49D9B998A6E36EDCC36EC02D8FB19FB7B9C62773EFFAD5DDBCE44EA8536DBA19 -2B56D4AF8F7932278C797EBD01, B62940D11E471FDB4D19A1C031BDD77D03D9EB7872F1E346C4D71C84A5FBEB2A, D6A251B89ACC62DE0C334E772BB10CF98D42213CA33A7D80E1D5FD97A6BA7588 -82047E0EAE6B9676A56C7C3703, F19C132F1A7081351289273DC31E2383DCEC911C26A5E72B479310EFDCA4956A, 5DA7EC8045266BCD898B3B74EC70C50F3018F6358DB778DCC03085327A5289E9 -1860D7A2C0B42C363F04574A509, 49E7608848B7D6FEAF1C2E3099BE6C27CB12FA90C152CFF8079245EC7C99FDA, E2D3BEA787376ED5A8068D0DFFC52DF910979622F4C6E7B8C366395E6D79EB1E -492286E8421C84A2BD0D05DEF1B, F1F7EC33D596D85A2DD9F97761DA0EC886A28A8E3785B1C431C808BCA54AB101, F5E265D2AA027AAAFF41EB6C62C0C2B45EA12EB74BFBE90BA24F7AFB2023C613 -DB6794B8C6558DE83727119CD51, A8AE6416C72DA357FE356210B220922D91459F8017B948C939968BAE6A816FD2, 19192FDED9B5BE5F6767116343ABAD2B918D3E1E69324E8394C3AE15D18B363C -29236BE2A5300A9B8A57534D67F3, 802604495D3CAF58CB2DB7EF1B5A9489E8F1EC87EC2FB8755D13A712B9F29F28, 8419F80449048AD209258E35789417524E5279FDC69291AE75C1E2E0FC3BC923 -7B6A43A7EF901FD29F05F9E837D9, 3256A959AD2F07223CCE16C4518C5FC0A048C2F275D6ABF5A0E75D89B4AE4641, 5770511F6606B0A9C31BB70996580A9D594A7352E9F0EAB145521238A1D0E141 -1723ECAF7CEB05F77DD11EDB8A78B, E3DEEE86BAB797332DD6C21DE8E6D3CC40236C52A409B2B2AC77F2EB450EB271, 5149CA7FEAB69D29F8636DE57E8BCCB7D2DB60F41C8D6294F6863E29AD46B6FC -456BC60E76C111E679735C929F6A1, 639346FC6E6328306F4EB3EDFAAB0032027423AC593C6BDE70D6D15FBDFD94FF, 648B19BBAA5AAE60A88FBC1003CBEBB684977372D1DBB7D06109421A3BA65043 -D043522B644335B36C5A15B7DE3E3, EDF2B3D2431C8DF28E2CAEEDDF543B82EB427F9C176F3D6E7A7E2F796B01BB91, 803FA14E1D972D8D1B9731C69B1BECE49B8B5DB5F0F35F0DD83E58960F8067CA -270C9F6822CC9A11A450E41279ABA9, C0851884918A2A184BF17459E52C18138489928D34EB18C4145110525CCB70ED, 5E2BCDBDE7699A6C49D22217799C78B881D07A3F6968F21294AB9FB9BB80CD05 -7525DE386865CE34ECF2AC376D02FB, E86A26AF7DF39DDC653ACDC0FF0C106E9CC39A52950B66C813ACACFD7EAE0396, 894E0A381D815ABFBF2935DEC8B5FCF1AEDADD8C8A733991B7E6A1F46B22E5C0 -15F719AA939316A9EC6D804A64708F1, 3BA575814160D9E223A87EBEA660EE5B7801E07C94FE56CFEBB8C7740B2DCFFE, C057035184B7BBA91FF3B71297AD8482B9DFC0B1BF0395F0365AE5E0EB535019 -41E54CFFBAB943FDC54880DF2D51AD3, 26C0625191AA21183B99D36778865073A8A07CE5EBE1124BC796D027EF884B43, AE8B3BD095D79CB195CDD9FBC1078878B7EF018902B504A3F1B8F8B291C655F8 -C5AFE6FF302BCBF94FD9829D87F5079, 2EC7445C966E75B5096FCD85DB95E5A46B8214C0B412E6483A70DE7AB33E9F61, 1F06DCCB29051713852C3D9120D5DA846B868105F5838993B48E649BE7660104 -2510FB4FD908363EBEF8C87D897DF16B, 515259E8C7DEF6D58539D142D4049D6C1CAD70C1EBAB248E7ACA4113CDA147BB, A25072696182B4EF15DB2A453D4253491A86BEDB929A1BF10AEC1846A68B2A9D -6F32F1EF8B18A2BC3CEA59789C79D441, FC9D89DFFCF825FDE96C6A3E1185639B51ECD409A6EF3FB016D825BBD0275A91, 4BE6FE0665F733F48827BDCC02E14FC0443D3BB6D165956A12F6A49350568051 -14D98D5CEA149E834B6BF0C69D56D7CC3, F43AA390DB46C4DD0B16E616CFB9C56556AF36E3208B7AE109BC31696A12E8A6, 7B26118F753416608949A5425AC4FBA4C73C799A92EA56A07D3C70A60A37CA6A -3E8CA816BE3DDB89E243D253D80487649, C519979CB8BF80734D6122317A41B2B028C00F9D670B2351A2556150D3AF52C0, ACB6ADD534B0D4272B93EAE9F8D77A064F51F9A110427694EA8EE9549C5EF270 -BBA5F8443AB9929DA6CB76FB880D962DB, 3EE87C4796A96E074122A62B1953BD3812489741BB88CA714F20798F8B27B487, 2A8B7621DCD56DBCDAA3A4AC5D7B1CC1D78586969CDC9738F97A0DE7D469527 -232F1E8CCB02CB7D8F46264F29828C2891, D37321D22010BA39741189B284438540BCD88595890B8AEC37C8F50A106214EB, 9384CA1E485F0C77E3CE399D1518021D33F1C09454924EA1C7377BD9F46E4064 -698D5BA661086278ADD272ED7C87A479B3, B0063A950C72BED8F3AA2D87E7F9728CBDE2AC10AA203CF0A507EC2B1F431972, FC9D164F254D82AA6DFFA81F0C0AFBA525B2AF3F5AD1914081A3AA57D8424A0F -13CA812F32319276A097758C87596ED6D19, F46A205F21E8560CE289D4FC7EDA91AA9302B722435F24D3168FAE1176B0EBCE, E1F04C816D7EA9783538D556B58A83DB5ECBC835559CD620D7527BDEF66D2AF7 -3B5F838D9694B763E1C660A5960C4C8474B, 27ACBB5308966BF46CD907C16A73EEA175B6A8DFF72BA8000CFC0C5D8D3CF1B1, 4BA2797C5210175846145355E7DBF420DE8CCED60A0F2C3130EFD226C66C0084 -B21E8AA8C3BE262BA55321F0C224E58D5E1, B5C3E7F3488FCD747D7A654DF687E7229B48D8B4350F3C48A28BDF16616E9989, 6425C6B6A515EC5152ECA6AAA9B7DA7636DADF51C2E54429828F0938BB4934E0 -2165B9FFA4B3A7282EFF965D2466EB0A81A3, 379B3609C349B0E1DAD8C90EDD479E70F278F5BB7CDB365316E23DD044A0516A, DC79E2235CAAFAD8163120508E6A233A60883119E36A625E8A11328957072B9C -64312DFEEE1AF5788CFEC3176D34C11F84E9, 7538AC4A0F08CCB59A0193BFCE0C12DDC80C84807939190B0629C510C804B714, A8B3FC8066FE1C94383F4C4188271EAC8383F2BA6353E289518C7F0F7B04AF7A -12C9389FCCA50E069A6FC4946479E435E8EBB, BBC2076BE1060AD9806A9FEE9C39DCF83E8911CF108ADD64DDD9A1F5913022FB, 99BD974AA1EDC414FFE0CAECB42E3AEE437DA6480E93C5B8A9DD476939B4BAD8 -385BA9DF65EF2A13CF4F4DBD2D6DACA1BAC31, 75064663173439F4642B322604A5CFDBB542E474555FFEFECB1FCE3B5175412, C33956CC23C2B31CF01DA801E18571535C27C5F5A16A868034571259786E3C3C -A912FD9E31CD7E3B6DEDE937884905E530493, 41B3248D83A738F9D18187BD61E3A3DE66127F8C7598320653F4827E74F1ABA9, 535A0212A912E134E0AFF0792062A7E8AB70DDACD27A84E15771D52789D0BE83 -1FB38F8DA95687AB249C9BBA698DB11AF90DB9, CB0D26B71EB1A3F0B6734AC607DAEABA8FC174E58F09431022D27A7EB3E0390E, 98F49A1576BEF607E105FD66233F5F4B3EC2E137E3191309E025233F12338CA7 -5F1AAEA8FC0397016DD5D32F3CA91350EB292B, BBA6B4AAB4E9AFFDA12A1B46BDE8BD974B9BE34927CA1CF60414A9A118145EEC, 1506C0C1C16DD4EB36FC0CCDBF62FF6E83338A315D4FE7D198C41021595C9FED -11D500BFAF40AC5044981798DB5FB39F2C17B81, D31396ADAF5CE28C15DAD95035DA92470821F4EF5F0580A76D47F01A595336DE, 6E15BC1BAF9CB2B85ABE5863AE8174D9C7E7AFF65A253D7627100F21D5805E8F -357F023F0DC204F0CDC846CA921F1ADD8447283, 9D29DA456BC96B1A6098E5D33C6A28D09E30368D2864EA09A392FE65903B926C, 3ED2BEE9A1F81625B56BD99534F4F332FC590960BF879251028785D75AF8B015 -A07D06BD29460ED26958D45FB65D50988CD5789, C9185F8DC5E5920FDC3E7BE8DC01E225FEE33FD36878AB8509F85B5306FFA9BF, E3CB73400EF954633EB052C2521D0AABF57C3E67C24DC52D999486D553C7E85 -1E17714377BD22C773C0A7D1F2317F1C9A68069B, 42A227EEDFAD4F956B08220D22CA0BE899F4B53407968C28DA2D8A1B7DB164AC, 4A907645D663C2685F6FD6DF0DC5A6B6EA158D3711D54C20E269FCDEDBE315BA -5A4653CA673768565B41F775D6947D55CF3813D1, D0D9EE4E36C677D83C325453BF023BDA5AFC8D58E21D23C1054F1BFC64BB53C6, 2AFD68ED137B3D199657BA1818CED99986F51FD25B482035544E6DB6EEC374C1 -10ED2FB5F35A6390311C5E66183BD78016DA83B73, D5B0A27331B72048E0256C1889452B91E366A6174BCE131707D7714A77EAEB72, 5677E46D5757EA41DAC027757C3FA37167EFE9899882365A90088AF78E70864C -32C78F21DA0F2AB093551B3248B38680448F8B259, 601B3A7F661400DC5FE42836C3179183437C2FAB42D177A9B4DB1E3C3D001BCF, AEE8201AB9C8A131A9BE793AA5AD2656E617C9F6756A07A21B6D0CEAC1F986D7 -9856AD658E2D8011B9FF5196DA1A9380CDAEA170B, 20B5805698BF8ABE22E9EEAEA3BAC3997386EB8AD44978C74A96C82285954243, 74717E6B981FFA53DFC4DA6A594F5D1F19502DE455F4E76FD452DBC43C006EE -1C9040830AA8880352DFDF4C48E4FBA82690BE4521, 5DD4513D170D41F1C44A39BD70BA0F893514E621938B46BC7ED527BD56CF229B, AD7E0A11FD54CF08360541F956DC20981C338736AF5CC9CFA02944C25E450DFC -55B0C1891FF99809F89F9DE4DAAEF2F873B23ACF63, BCBA4F7644827255373B8438FF87536AB8B311403E566509EBEACEFA63795C53, 6B33C2E0F5E5295A540DF25382ACF3F7A43A2BBF87F07362500846A09A995928 -10112449B5FECC81DE9DED9AE900CD8E95B16B06E29, 2C4DD6E270226605AA870A557478C45818C2FBE60A3051602938961A898A47DF, 67809BADB323B5771403E5451F1164D30B153BF06264D95C5506ACA551808494 -30336CDD21FC65859BD9C8D0BB0268ABC1144114A7B, 172E760F60F5832A4102279B67D7DBCEE5D6B160D08B3406291B2602B6380123, 6BCF9F3127D34CA4018B2A353188139AD5BB27349343973BFAC8C4C8F7B06FB -909A469765F53090D38D5A7231073A03433CC33DF71, E5EFE6615988FDC242F4897408F12A775E9CE30EA49E86768A50D75B1D29EC2, 811C3E746DB0213AE68C4A59DCEFD8D97B025642ADF378D1D8DAFBEB00902EEE -1B1CED3C631DF91B27AA80F569315AE09C9B649B9E53, 11230F173782A6F4015B5C73F19BBED3B4A77A42194CE966634FBCFBC55FAA79, E7F5601F7142B324399DBF432D96E3EC7DC1E9C1B3038EF671323BF544B3472E -5156C7B52959EB5176FF82E03B9410A1D5D22DD2DAF9, 2932732777DAD6699B771BE1588FD7A8755125F75211256AE80882301402E8E2, 21E71D0914D952CA1EB4BCBDF5245D6063E4F414DD38E7DCB9FF35CA2328D644 -F404571F7C0DC1F464FE88A0B2BC31E58176897890EB, E1DC9FBA51344E8961A9F1BC2457BFEB72E012FFFACF6B7D878AF94685A99783, 2C73575BAE8AF4E6729AC50A8BA3232CE3A508899B82BC40124EDAFFC148662C -2DC0D055E742945DD2EFB99E2183495B084639C69B2C1, 8C4E50B668E48CF16D0424D5DF62FDF56D81664BB1C86D6E227E1148E57F875A, B5A3360FDEA16D4B198319417A0DA67F61B05FD17545DA2F102347D9B854A965 -89427101B5C7BD1978CF2CDA6489DC1118D2AD53D1843, A0E92557F24612657AD7F806B01783729DB117684D1CFD3EEA21AF00239DAC4C, 1E5DBDB219B477DCA45F33FBDCA3563EFC0238A800FE63AF67E229346C093EAB -19BC753052157374C6A6D868F2D9D94334A7807FB748C9, CF09FEEC622B4510F5454E6D607D6A0DEAB9747859F04675E6C82DBB49BC32BD, E4D6AEA583107B538291B8CE6D18BB1D8F88B52613C8DABEAFA634D472EB47E8 -4D355F90F6405A5E53F4893AD88D8BC99DF6817F25DA5B, 9F1E4A1D7B7102C71B2C94FF205E3A5B466D61BA76A38DB5AF85A2FC47A57865, 7A0B26C93C1E627E33806C188F92341507B172B325836CB3A89F9DD153E2C652 -E7A01EB2E2C10F1AFBDD9BB089A8A35CD9E3847D718F11, 6915B63364675BC7AFBAFFDF78D9238D3D7FE8525AE6E40525CE9164C5900F47, 1F922B67DF773EF9DDC0303A9173D4A0D2A294AF23AD0629B8C9D84C29B061D3 -2B6E05C18A8432D50F398D3119CF9EA168DAA8D7854AD33, 88E314A2C7AE62DB858AA1E9795A5A89F2FB360A2AC6D4426D7A3A455EBD3BFF, 27CDD0A660FD359BB4EB9CEA269BBD47D4D09904CE636FC6E470CC7B212AC975 -824A11449F8C987F2DACA7934D6EDBE43A8FFA868FE0799, ABA0CF697B1B733B287C0A97ED1FE76E29ABB4FC913E67443CE35082A92CB204, E4517A1AED272352E021638B812635F6C601BD46D04DF1EF3B38D4136C46C556 -186DE33CDDEA5C97D8905F6B9E84C93ACAFAFEF93AFA16CB, 5E42DC088B475F6118D595BB3E79E896F5B2D8704890A1A0501702EDC00E8994, 1A822DB338757C5660D439700AA2183DF58FDABCB75E7ECDE52727FE5F18B220 -4949A9B699BF15C789B11E42DB8E5BB060F0FCEBB0EE4461, 408FE43D610E979002BCD4BED86DF136D1A75ECAA324A7B9BEA97520C3854EB0, 7986FE1E891C6207C55AF240C7DD10F69A819CE9F62FAA1CE2BCC0CD701EA243 -DBDCFD23CD3D41569D135AC892AB131122D2F6C312CACD23, D16513119B25F3BE15558FE23F5B87BC28C2189B706EBE95719DAAF309273834, F0173989C37D2E786E3110CBD4B6E56C4FDB00D4B21B85723E1784316AA1C047 -29396F76B67B7C403D73A1059B80139336878E44938606769, 3DAB6AD259B5F731E52FBAC416D3BEC5DD302D6EB68C518F7D8D930A134B36C8, 7FF5B6B018B0EA0FE9ADDE3E7375545098B5E3E259CA449FE20C56C2FF496F26 -7BAC4E64237274C0B85AE310D2803AB9A396AACDBA921363B, A5C296195DA154D92C3D19541995F590B88AC659F9F74B9897230977BFDD2D5E, 8904813927D5C1E6B4F3905C8C51C3B14DCAC2719201A8EB05D689628148C1BF -17304EB2C6A575E422910A9327780B02CEAC400692FB63A2B1, BB9CF3584D191A4AEACB45036D831C849DF57560084E52A72067D3BE614E750B, 54AB4A833C01CC422A1A253EF92A60FFA34A20BD82E8BFAD6E15558ABDB6226 -4590EC1853F061AC67B31FB9766821086C04C013B8F22AE813, 5FBE2FC3B80AD6CCE2607AC27C6BAC3653A234BFC23B57A030DAD8514A2C6216, 1ECE4BF22FD472071C1C9F236504A74CC79A830DAC770D5197F39396AE2BFBE7 -D0B2C448FBD1250537195F2C63386319440E403B2AD680B839, B353A8A9EEF105CCDB44FD3199CB6F125CCA844DBCEBD50CA02BAA1600BC50CC, D02DF9BEBB10D532F76D7311D563CA98FAEA4CBA7875285C846A8EA76B0D1EEB -272184CDAF3736F0FA54C1D8529A9294BCC2AC0B180838228AB, 91D63516B8BB7FAEC5F621F5A9675F3650E4C816CCF87E80094CB7D6817A366B, 51747822D2D489E1A9D5082F36C2C15054B2747EF232DD9D08BB1B3BF944BE20 -75648E690DA5A4D2EEFE4588F7CFB7BE364804214818A867A01, 15E0B6AD6FFA887741DE3014BF4FBCFA1022FA8285382D8D5C69EE243EB3541F, D04B1F1C77EDE6A5579397AA35EB012EAB1C31423B2224AA972CD8471DE8D3D8 -1602DAB3B28F0EE78CCFAD09AE76F273AA2D80C63D849F936E03, 18159E5ADFA2E5478A196D3E973758F6D6A24E90BFE666FE0934E3567F212D45, 4241715C90E432F154949B3D82CF2F2EF48F0C17FFE7F532347C8DB4B30DAA1D -4208901B17AD2CB6A66F071D0B64D75AFE888252B88DDEBA4A09, 55F7D55C605C0358BC078616EFAD8E90CCB6E737BD9D1CC10F5BB8A83B49F257, 39345974E4659E643CDE92C9EA5383F2FC74B533B359A701D4369E87C5A87384 -C619B05147078623F34D1557222E8610FB9986F829A99C2EDE1B, C5012B7A288170DA3E0C9B30C558424060777BB1AA385D7BA777D3F2A5CD570B, 269487431A01A4958ACACF309193F80E09E762CD45C228B31D7CF3BE064C0F6D -2524D10F3D516926BD9E74005668B9232F2CC94E87CFCD48C9A51, 494002E29ADAAB3BD42DE827969021162576E562D318A88E6839B0632BEDCE3F, 4B659BC6EB77EEAC9AA62A9B0A25283C285D350002865ED266357C978FA9AFA2 -6F6E732DB7F43B7438DB5C01033A2B698D865BEB976F67DA5CEF3, 8937CFDC5B97748769F993BFF1FC5300A102362694F9CDA200F5A3917E734947, 3D77B10A04A27B8C79375F6CA5F24DB11A02620065B9A5DB088D246DD25BBE52 -14E4B598927DCB25CAA92140309AE823CA89313C2C64E378F16CD9, 2496ED6C44A9C788229A5205D2AB01F491AE4217707F18C27F5E63B567581A1F, E394A06C008B80E00BE7FDA6A79D45D13422B5790A871F010B6C92EEC8AD15A4 -3EAE20C9B77961715FFB63C091D0B86B5F9B93B4852EAA6AD4468B, F21CFFB3EAEE40BA9DF1DACB4CEC7F65DF71910445027153231DED0F452DC3F0, 1D03B97F11FE7BF87ED8485583EC19B6AEF9A236F3DCCF88689EF77211E21AC8 -BC0A625D266C24541FF22B41B57229421ED2BB1D8F8BFF407CD3A1, 645112B55D4EFC904950086C082DC4D3D41A8E164E86C01554909C0118686C2A, 6B68130DCD38D7DDFFB0B6C24F63BB856995DD1A1699847F67935A7EBC07ED95 -2341F271773446CFC5FD681C520567BC65C783158AEA3FDC1767AE3, 93F17111EFE40A080B8ECB79E19B0176E9D80A46C0AC6F68799DEBF64B31F72, FF64A78282EE7D13EDCA84C46F0869C6BD962D02460EFF4DDD8644ADDAE46556 -69C5D754659CD46F51F83854F610373531568940A0BEBF9446370A9, AE69334BA71DBD00B72490AA9EF5BA78A2E20D515F2CA5C6F926D9C08E3B3259, 797BF85C91245664BC1EC92B9A706977FFEA62465783AE9D93FAC6385A74FDA2 -13D5185FD30D67D4DF5E8A8FEE230A59F94039BC1E23C3EBCD2A51FB, 5F038A8AC8431F9321D202C24005781866563A68A2BD832BC55CADCAA0A51AD5, AC0696E2796C5A3112CF6ED1A7D9A08FC3D98AB9A24C8FC23A24228D5AD8C8CB -3B7F491F7928377E9E1B9FAFCA691F0DEBC0AD345A6B4BC3677EF5F1, 82DB9DB3EEC13250057CF1BFE491A65657160DCA8D8B2FEB6FE6FAD546D4F2A7, 84B0E6C31FC401C5305381127E0BA9D69270B4013C54F490E153A075827A6908 -B27DDB5E6B78A67BDA52DF0F5F3B5D29C342079D0F41E34A367CE1D3, 34B824BB7171AE67B8D36BDC03BA146348E472024C48336F253A55FFD92EB98B, F86CB5EEECD0A02BF01D079BA5CF97C797C5AC68FA2710E396C9BD45E0407C69 -21779921B4269F3738EF89D2E1DB2177D49C616D72DC5A9DEA376A579, 279DBD6D1E7C0856C628499CED784DA0E025065E8CD73CF468281147F76695C0, 15C322F07B13711DFFC4F90149E49679A3478FB598C013724570F1C042B1CA97 -6466CB651C73DDA5AACE9D78A59164677DD5244858950FD9BEA63F06B, 88F6C763894E985C100A297CEBEB74F0AC2200A6CE73E1968973F6DC093EE523, DB6E1A86B52B180EC1A61C61CC574DD86F9A75503F905679DEB642617BF36EE4 -12D34622F555B98F1006BD869F0B42D36797F6CD909BF2F8D3BF2BD141, D5D356D043B1536C5D197072C9D15592EFBFE8D34250CF7D20FB1AA7AEB348A5, 56A5F938EDD5FCF99D493874F71D6D893635255A88726D9C35AE85D77194D385 -3879D268E0012CAD30143893DD21C87A36C7E468B1D3D8EA7B3D8373C3, C14DB8C85E0B6D2B676E4C0A250649A85FE73C8D0C7B453F1C4AFEDF67454ABF, 895257DFB694ED1FB4485800DE790065677C29C0EC2D052A884C07D480933A54 -A96D773AA0038607903CA9BB9765596EA457AD3A157B8ABF71B88A5B49, DF7D5C7CF72E94C8C8BBC544B593AC942345A022B8F252D517FEC874AEBB57DB, C7D88559EFD4407D8BCAA17618E49AA4CB144788696020A15507F2FC9C287EB7 -1FC4865AFE00A9216B0B5FD32C6300C4BED0707AE4072A03E55299F11DB, 6F6ED9FE2B4AC0DA65688AB6597A4FECC2569C7A40B8EA464A433C399801B87F, F6081F2CD5035CCE5720C1994CAF29AEECB703F862D6041734049FBF89D00495 -5F4D9310FA01FB6441221F798529024E3C715170AC157E0BAFF7CDD3591, 8BB82D1D4814E632E56B14E7E14A66EB4D199B8DB27688D93109C02A83C03717, 98269529F24CCA3CA4385B62FE340000A315A5BE887C6C914B58A0E71FC2B113 -11DE8B932EE05F22CC3665E6C8F7B06EAB553F45204407A230FE7697A0B3, A33FB3D793FA380AF2F28AF7A62D59A92D6BD0C837D01BABCD439C47C270A090, 4B7DABD362A3CD41D839684D8F247DB031B9EB5A06F808360288B0AF42A645CB -359BA2B98CA11D6864A331B45AE7114C01FFBDCF60CC16E692FB63C6E219, CE26845F94DEE7E0061E9E5C14A7CEA984708362168320A5A0E83029C16A2D9B, C02FB0DF34C761734BAEF1573B4854E24174372E735AAB81E616326D406EF10D -A0D2E82CA5E358392DE9951D10B533E405FF396E226444B3B8F22B54A64B, B859547C4E7207BE3CD43268192AB88A88BBFBBE5687E8533C7AECC6A1D2BF61, 7E53936BC792436E53C10B930321945784E885B43626B26739DB84A713E002C5 -1E278B885F1AA08AB89BCBF57321F9BAC11FDAC4A672CCE1B2AD681FDF2E1, 22CE0FBE44DE6BCDF09CB9D85FEA1FEE51E515EAED6CB21B8977C7BAF5981C38, 1DEE07C7AC027A082F77EC582E2EAFE281F7AC1D709788323DABF79E5A73FBEC -5A76A2991D4FE1A029D363E05965ED30435F904DF35866A51808385F9D8A3, 2ECC1298F418914C6AF79DE90BE8021E3C7F81ACD61F0449D3ABFD9E3DC63997, 8D229C381A022D2AE62A7B4E481F2564202867A4FCA904D4E91CC6B70C3BB10D -10F63E7CB57EFA4E07D7A2BA10C31C790CA1EB0E9DA0933EF4818A91ED89E9, F8F4F6A1955A9B753D766668CE35829F70030A14CD05853AA09E6F610CCB168F, C6AE8802312258020113FFA9576856155057345E8DE06B43F5D8EA9DAAA9942B -32E2BB76207CEEEA1786E82E3249556B25E5C12BD8E1B9BCDD849FB5C89DBB, D7428B9DDAD0BAABB29E93E13F764F941A00E4645F2590D7E2C1EFC84D91568D, 196696F277C70CB49678359D63AB99AD479B6B9644CA1CDFDD2A1BB3EFAD249A -98A832626176CCBE4694B88A96DC004171B143838AA52D36988DDF2159D931, B8E809F295A7623691734C066D59C8FA0D280159ABCBE1D42967A513648664F2, 280F44E7306591A76646D5FAD6869034A5176A4C361B374E8C6D3CFD333D5DA -1C9F897272464663AD3BE299FC49400C45513CA8A9FEF87A3C9A99D640D8B93, AEB5B4C2AAE2B8F67DF988F43BA523740CBA257BE4422213F4F2A162E4A5BE4A, D42994CF1C0EC81D51EF67AC67F7E77FCB1DFF4A0E031ADAC893EFC3EA9C0AB9 -55DE9C5756D2D32B07B3A7CDF4DBC024CFF3B5F9FDFCE96EB5CFCD82C28A2B9, F9BBF4C0749790F216CC5CDAA17232BA85B3729B36A4547F795A74BA4BB31F3, 322EFD9EBCA43A2625AC3DB8A785DB6FDE7288258B64FAB6C824013568E1AA34 -1019BD50604787981171AF769DE93406E6FDB21EDF9F6BC4C216F6888479E82B, 6336F3F2C0287F1ECA291AB6434163DE79B45E68DB62986970DED3A46D38A43D, 4D91C779F2B3505E0952D2BD1C3F59FC91B625546C5087E9E7D39347DEF446E5 -304D37F120D696C834550E63D9BB9C14B4F9165C9EDE434E4644E3998D6DB881, EF7444E99D2F2A08ACE89C4143B0F95078F15B7F4FC7D9341766429383589095, 215F00149824E1739E36F1E6FFE3EAAD9C08DA5CB082F3B1DF0A3F2349DDD9F0 -90E7A7D36283C4589CFF2B2B8D32D43E1EEB4315DC9AC9EAD2CEAACCA8492983, 4B0A4283D9A07E54E2D09B415DEF9C09C5230568EFE290E696F2957F75E2EBCF, 22FB66F09632C8A9B39DAB9BAEA63D364B93FE0D4B508DEEA6F4716C4E5616F6 -ECC-384 -1, AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7, 3617DE4A96262C6F5D9E98BF9292DC29F8F41DBD289A147CE9DA3113B5F0B8C00A60B1CE1D7E819D7A431D7C90EA0E5F -3, 77A41D4606FFA1464793C7E5FDC7D98CB9D3910202DCD06BEA4F240D3566DA6B408BBAE5026580D02D7E5C70500C831, C995F7CA0B0C42837D0BBE9602A9FC998520B41C85115AA5F7684C0EDC111EACC24ABD6BE4B5D298B65F28600A2F1DF1 -9, 8F0A39A4049BCB3EF1BF29B8B025B78F2216F7291E6FD3BAC6CB1EE285FB6E21C388528BFEE2B9535C55E4461079118B, 62C77E1438B601D6452C4A5322C3A9799A9B3D7CA3C400C6B7678854AED9B3029E743EFEDFD51B68262DA4F9AC664AF8 -1B, 9C5FA2C13F418E623C316D5A82C8B70508E3ACAA2B4A8D3A4ACB49C0D7BA04E220761BC15898E1B06B4EEDFA23E2E546, F641DE0CB075851A5AFE81503CB7BF6194FDF1B7DA9E59556F015651BD9218E30EF2C4B2213F519B529FB56479F48752 -51, F0091B1080B24C407E983FC77C0527861E28CC8D5C9C5B48B1F416FB8F72FDBAB1BA877E2DC9EA82187A3E46D072AA44, 22492B56C351FC882CD63A572FBB7A794EC8CCC18F16F8F352071D69AF769F4E7ED6077A9A08429B58810F8CFDDCFB8 -F3, 5A815D846315E5DBD155BC729B098C810D68B92B05ECA2849230F66A356158C4A1856A11CF7BA5D563BAA6F3AB3D0087, FB880F0D6F85075B70191837CC459851981406857F03F6C8EA0D2ABC5042F0EFB9FC97561A63C71CF8159381F038E7C -2D9, 2CC6E0DE17D86C60A9D764CA17E6B3BF8FF48AB9E6E38EB0996BB6CB36DCD276B61B24C5DC0F7C1083FCB2A87B493240, C86ECBB06ADD45F4FBC5D411AC0B9BB07292D7CB6FDAC1167728A7B825E226D225A3F90DC40DC7DA4F10106A7412E7A3 -88B, D5BECF937401D03C63994BAA76FF1F359A554953B2613F62908B47497CBE15A5F124488C3DBB9F13DB9409751AC6B9D0, ED2841702966C15664AEA733911FD1C00FF1258A5B6C9F00530C0BE9EB940909D8F519D50D08ADA801D35D6EA04C05EF -19A1, C7A8AC69A56E8F724AFD6FD01CA9EDF2D427C332C596992C5F3B54D57911FC5323D21242E4942135649F382EF9A2CA8B, 4186C16218EBBFD84E4DBE3583E37D7158071639B84B9FAAAECF1FF6955F6AA4B0BD21BD5DC7C2927E76C7AE49585543 -4CE3, A4B32813B19844D83A31C9D638DD87F16D7EE7A32D49A6A99D6A902AC26082E41EB9E77B1D44C02E9F48F247D8DEBF11, FB66140C5C887D1CA28EEAF5B8DB7B25AC4DB1A49FA6BAB93639E4A1DAC6479447E8F4BB1312946E0D07CC09B63FED51 -E6A9, DE58069466D407CB27257473DC08FD2BD09D262036D56ECBC0BA9F582641294B18D7B1285E9290C55764CA0E7167B05A, 4248B42C8B6FF55AC40A50191D86129375C7A6C3595EE62A12F74192C9A431EE1BE1341D824CC31AF10370D8DB358BED -2B3FB, A9EB0041AC0EB5825B04B81B34D2402E1F14638B62F4BAA5E9E3F47320AE724F7257387BC470A0B77E1F9855155018D6, 707400FA47C87C696AB61A610D68A34482EF3FF32D2D954E3543F27C2A9F04B261DD53219E14F61B4D5F9CF9CBD4260F -81BF1, DB70CB69AFC2C9BB0EE647BEBEE4F908F43E04800B8685726E1BBBD19AF36B9CA47D1F460923A00CE54E9F03A462B4D7, 7FBB8BECBB33AC921B3C58DC62ED4E339B1A715D5A24137B5DA6C48D8123DD5A91D3A4FCBF8E1C8DC4FD80F7541202D2 -1853D3, 5B513BCC210FEDDABFAC368CA876F91808FF8D082DFB3DC6DAB494797A547F2643BC1C3D05770E0F39F08A1C52599BEC, F6D2A470961AFBA04D94E96A4DB1DD413DDBFA0449C16A72EB95D39CABA47A3CB4FF90A7C8085CE7CDA3564D0DD971CB -48FB79, 2AEE1407D07D4B8101A86061486B19D9399CE28345A1992A7CB9EAC43F3A13941CAE792E3402867B080BC5054D259F6A, 8383EE4A9984E0CC3F51CB1BDEE6BBA3A14E503D09EF36FBA83BDE79A17BBBD9663CE8AA4CB778C8F8252B309790B120 -DAF26B, 6E640CD04E1AC2A7957987D2FC85EA7688625CAFFBFB587770F26E1A44C682A0D947BE7BE485233006AE59ED12B25625, 1CE1DD4F5752F802D264A68F5137CC5F0C76F24007ADCD6C2585F33A21BF4FEAE0C8E450A6FB79A0B091674BD22BB668 -290D741, 9FBF2CBF74EF244D733676D051D0314BEACE57207E02A53BAD5BF777D99EBF3B217705790EE17CC41EC09809E64F6A27, CCB0A336CF5B42BC181EA33476CC4F348710CBEDE690B39C578115D1E085CFF5E51EF95634C23A71226563FA80E55AF7 -7B285C3, 9D94D0999D059A6E294DAEF56F75809D824E8AD91026BF00C792953330B5997B51848ECA853F5969FEF12BB877A7EC8C, 46C61C9C588D5814B789643D945277D6E7801877A09B2EA726567F11B2DB7A06526FBEF365B6FBFB4D56497814BFD97A -17179149, E6A9F66A755375FEDFE9EF57DBB63A784D541BA6BCB6FED27FE4D4B5605E5A6F83AFA71EC1436091B8B64E2FCC27F5A7, 9E5BBC160854223B74CF1E0E26C7AB304A3BA3E6392C1F74EA1BA8C55680171B01D278EEF74CB3B4D7F390C86005C21B -4546B3DB, F806B14FA71B88D0F6A8B54E3708E45040A85999A70C13D40E06990F3630793A141FC517E95CD0021EA1621C951A4A2D, 72870FE8BE24B5F749322F9197AE03DFF1E4689AAADF78BBD4DF16421D5D59E2AF2A5B499B7A1919EA311053E6EB813E -CFD41B91, 139EE0E2DD813FE72168E8876E14A03EF31F4C3FBFC01595733B809A7C1B8CFE6014626622BFE2F6741E77B27123815F, 3D2F7570CCECF08D7ED8451AFAF7A06D94BA65545A20B8ED6248B24988B724F234962DB05E2A6394D344FF64C772B9B6 -26F7C52B3, 13BAC5430DDE14CDBA331A82158D3A45D2CF09D30CBD950F3606103BDEE195179ABBFCF3BA58B664A5C97156ABFE3374, 74A00DBF0C6E447031269B041121D7C928179937EB907FAD50DD4A9F128FF462BBE3021B01F9DE9C712425BC7508C0F1 -74E74F819, 8959A4D72613CC021D691B8DFB887C22870C01354A6B0C185CBB535945A19AB5AE476A58605A48A2568F3A1489B9827A, E49AC7C932874225A94A3020CC9E83415E9F2FCF77A2D70CF6BFCD2F890D2719DB4E3FD816C76D4D3F3F104AC76C0353 -15EB5EE84B, B54125CA1A5CE47ED09AB99872804FA8149E5B11FC65AB34CD2B30DF03965D147CD39471C2A59549A95D6DD850666D3A, 2BE82D08A0CF2FD28CBBB9373C40A5874F8A155650E860A0B31D19F81B94550B065B405245E0A3A683E35B25214C609C -41C21CB8E1, 9E639E290614EE79CEC390A013A4090318FCF5744AFAD91A33634DB4BF5E36B488FC75E21EA5FC23217DC3FA3E006D69, 2E192259B316A4EFF05925CC2D59571A0197E9D6E06B0215E15E3F3F4DC4E67A9D896FD25A256907A34156B72CD9BFCD -C546562AA3, 358CE79F6387AE804C6EABC6780CFDCD1AEEB836B8F94799CC5739B895D603940C52850062824C35BB8A2B199DC4B617, 6D7EF97FAC79F796FA7704F07FE682AAC28EB9CBCFAA2DE4FBFF47C71673BDDAE56316940DDE58B40B8B7A7D0A5B86B5 -24FD3027FE9, 423CAEFA17D4E092260A7BB3E2DA55D2DFB2E12938BA950E0E6E4BD4FE8B0AD48B0A05DE009DF4B5AFCE1C2868418A91, 69B2DD050A77CC4D204492EEF9D929CA7828B3A322827333F37E82A0E76D34470AB332C981995BF1495AC997724634DE -6EF79077FBB, 618FA99EFBF4A6DBADDBE9A1B0EDF34F5CFB93FE5591E3B20B5488ECC48C79C7F8431175F87F1229B87FB2F211328B04, 48DF2D31CB4625EA7FA198F4142C6ECC70EAF215B8F54B5CDFF0988499559D2AC1154B9D9152A83C462E41291B121A93 -14CE6B167F31, 34DEE1D270606CC9B48F3151F8D3490C37E339A9133D47746D2901DAFFE5D6C5F8FB205B66812B177BE43855D2CF47BD, A20D5FDECCB8DB396B9574EBD8B05A7360BD01C47FC7944B46627B09A4990494BE2FAF15938D83FF4F0038DF61348B13 -3E6B41437D93, 7ECD0A221205D3BE0069AB3C5CA03C967E9F27AADEA2A52C8A0213CCB8C7A20AC299EA5AE268C3F5F7763F5B6F2BDDAB, A4ACE46D02BD9C63DFDE827C213D712AB8F01A8AC000995DC39006A60E0CCD233F8CF069BA9620731FF6FC77175DDA9 -BB41C3CA78B9, FDED8D3CB351E254D1E0726D6C34D7B4A6646F9778C008BD0CC094B803DA1A985BE039CFB438326B7EEF7C55C4B23DF5, FA023A32F20E217FDE376F4C775C6A41121C77B79D5E652F8DB71E7564B0D6B8DF83EEDFA246487E94DC53CC4089F0D5 -231C54B5F6A2B, D17E9C9792D9D2E438536433C676EFDF6BA1480ACB525A12947BE7B7575B873948ABC34A014A4E09BBC7BC766FF1B785, 60416FBCBFAB85E393972216B2675BBE25D050F2AE4CCA15FCA0E9F2803F1C873BE66895C3F3BE92D037FFB0972A7B3E -6954FE21E3E81, 5200FC8B4BDF422B0183CB0A4DABE978847983772893337FE827A02A2791BBD720A6C8FD46CABFD32250C64B5D67DF29, 7B47EBE2F9E20842E512D353E5CF2CBFB802567A6C805EDBF1856A9B46D0971FE5A2494EC51751518F9FB1EE036E62DC -13BFEFA65ABB83, 79609210110637883B2BB4CB017FD531F2F85DA33C75A0BC3FED33B885B31D684B76DAE207A6CDAA91370455FB36814, F4FFEAF18C196E94CDC1BBD09FF52ED957F433F23BEB3751003E2C3FDF037F9F8DAD43DDC956220DA5D69B0D47EE1534 -3B3FCEF3103289, 8D6F8533C380A5CE6B07F860644087788F06E65135CD58D44FED92282A45EB99793CFF0379F81FADC2EEFF5B9FFC4C5E, 1B5302FD186E2C8E57A869470F542C4B633E48A026933D95E6202455262AAEB8015DA857486D2D2D1B45FF07AE30828A -B1BF6CD930979B, E1C2553F742CFF283D608E226C5E762EF88DAFD75A6D68DD79A6E94EB094D4D04A40C8B4BB80B5F4999C3A44151DA19C, 974EA4ABE8955CEA715F0441070BBCBB04ECD686C50EFB44B07E830E5765928495D0635AC8AF0CCC829E7DEDDBD1698E -2153E468B91C6D1, 10821F1D9AD2F1C09929D08F2292B58156E94C0C729DF58BF3AF929E79CE011D3BCA116FD47B21DB9F043C17E20521E0, B6032D349B49DFA2C97EEA10A605A097B51582D653D0BF297CB385E0EBA2DC982CA7E9135A0196031EE0700C8DCC3DEB -63FBAD3A2B55473, 1BBD5C55CCE19CCB0AD30DD7405F5E91E2D2F51DEB09ED974AE09EF7666A8C74616D7779FC5BA74E76F39FE4AABEF089, C827ADAFD48192B2B995FC8378122BD8A360298C79B36643DBAD49BED8453711AE16DE6A1B146443C19BB59E439B14A6 -12BF307AE81FFD59, 4035E13EF898A12EF15E72CB79DF83496D5B3CB5A0BBBD6800193CCDABFB20794297529F34F935F1D80DFC69B3144795, F2E854351506A1C15CD2E2E6DA7ECFD10A0AC16DB2FA937A03AC6C0B874BE34A2438906FD3F22F5E50CB52D2E84D5675 -383D9170B85FF80B, 2AA4B819AC5737D89948634E8A92968B0A9E70CBB47EB67AD08F14B8A59C978C944FCF5039D4032B41C8BA24A6B08069, 3332B17A4F66A018B7398F793D5438C48EF88F9A8B439800B4A3A38E483727871683286179494DD4C84130DB63B98D62 -A8B8B452291FE821, 551AFC585E46CDD5024AE80BEB75B079B435F90FAABBEBCC0A7615938A83FAAC3B51C42B295B8BD7472AE9E4278B5072, 5EEC8C5C1AECB5D4329738942D4004654AC375E486108FEB24FBF2AAD5FD457BD32F6563281A34B670D100F196E563C3 -1FA2A1CF67B5FB863, 19E89C4E47EEB8970573C05931D43B8083D850494645CD6C4B378B3C90CA8015EB9B22C79C8876B3AB7815DC1C9C9620, E97B4F1C222F10610F6DDFB5D18D3FC1993367E2EBA32B94390573E89D43A1658AE798523A114E6AD58A56CE5ABBAE6E -5EE7E56E3721F2929, 3AA7711700EBA565E90B25BC0A1ED92395D92D9DB8FE06A54E455F9FC9C0311882C470E519B2AB2748A3EA8ED5934BF9, CA0EEF27B7FA621893B155320A8CFCC7BAB2C4C0567523A34B3FD17F843226022E5D87025DD4F87B1F6CA4376BBFAFDD -11CB7B04AA565D7B7B, 2BD895DFCBBD85950FFE675BD6CC298963B99DB909F627A5B2B08BE481D86FCC9640823964E2413808625511E3F8DFAB, 5161CCAD4A7968B685ED3CD380F9BB391BC59D9DE08F4C467F0B65F70DD77A367EDE2B66551330E5FC8898E1446E39B2 -3562710DFF03187271, 4A55371E09700D7F1B9547414D6B3E4071F426A30F1580690496F7DA06EA9290D3A2F68EDF64BD75145AC8D60E124ECA, DAE73F39BFBD3F2A9F3AD247EE94FD25AD9E891A079F2AE191625632D9D511DD777FC32E2AE930C5A5B6337385618AB1 -A0275329FD09495753, 6B45A93F4BFC9F903B6380C8E1BF23D330FF66978031B2BC2BA2F9F112E04C242B7E1DB73C7B28BC1FF12A1999249229, 94667AA038152520F1C8CFED64D8C65F60B2A68F1B5F9616A6656FC5E91F3447A35F684187DE651C517A4AA8679B2C8A -1E075F97DF71BDC05F9, 7F0F54C1E4FB427556DA4581F48013F3A2CE46BBED66E872C287120F723818B9CD6816DECAA6E215D629AC01BB5C2078, 470121A7E34B39212107BA473B7DC132E2FA3239DFF3C9287DA6AF1AF46591F015BD962FF0F8C66DBF55DDD02579ED0D -5A161EC79E5539411EB, C7E85917B65250AC843FA5FDA808F01CAABD276DE03A46F54CE92C17ED6019D353FEE8BDEAFB646EA6B645E16D822039, 6D38FB10252426C24D77367F6ED6CD68C1CB3EFAE0EF23A29B8FFF5072C32199D71DAE1204EF30AA8405C2428C093A4E -10E425C56DAFFABC35C1, 36A8B370957DB1F875A6D916D84608B1D4902183518B2E2A3409961E852DC422769A7C6D871996FAA0D68A87D73824E1, 7C0B56B029CCDD9D106E88A8CC4A5384697EB9A5D66041F438753FC0724FC8C32AB2001531AB37BDDAFA2F666A7A8F57 -32AC7150490FF034A143, 65E8324C8CAF05BAC68315E1FA3BAEAA4D7D07B42A0F341960D3881D88AD11D3823CDC06717947BFBC47CF77EF02A288, 236A05EA0CFE71B5D2E6AB212281EE351E380150733F52FDF4097D255994FF9D5E5817B114C1D7E259FB45D61675DEEF -980553F0DB2FD09DE3C9, A7B928461464C1A9873A0BDD6D48B7EBCE933FEA1F455B21B5225B3D1117A5E77EFBBAF60EDFCAA51BDE34E069B539D7, B4BF3523C06B1A71D2217259F39056BE28C34F0862DC37663954111458D8DADAE5CBE146DF1A9033B173FCF5B2C7F147 -1C80FFBD2918F71D9AB5B, 87B28B4555AEE7C57918FDC6B416098D30C9F380228B6227AF9AE72CF98550CCD5B4A5566CEE6FFECD9B8B0E024ED8F8, 70E5D13FD11F0FB5BEF6FFF84864B2C7A50B56B5C25FBF811673011CC98531B15F3318AB9287C6999DF07422AFD1D898 -5582FF377B4AE558D0211, 9B7DD39A6DEA392C0971B2303CDFF0F595B6D9C6F7BA2278FC6B1A292455199CD38CCDB75C6359C7F9FA637735E294F2, 4CBFE074C529177CEE79A3889C2906F51CB420DEAB24D1A2295D14BAD2CE1E63578F8E363266122A5553B095F257C3CC -10088FDA671E0B00A70633, 8EDE71C80007CB8C4066C7593C3139DFCCED7FE42B3F64A1F6CD10DBABBD1E7045579F746E2F8C8ECD83B7F38A0059D5, BB79F8822EACFA328432209422A511FFE4C4C1AFC8E02A826B4F163D886B58541BE647FE9B3C78A8906929E8D76BD966 -3019AF8F355A2101F51299, E49ADBC7FC61A49FF1F42CF80B980335A892F6CF196854A21D7C021821C760797C715E7DE1E985EBA92A2D2A6DCFDC68, 117B5A3BE910325BEE9848A9CD4B80A04A3D7E965D25B0290C7586536F2EBF609520A3D294F75D6FE4033EADC3066FB6 -904D0EADA00E6305DF37CB, 3F7D97C61511354B7012FAAA7D96CA248D218712BAD609F8C8BB582A4390A6FFEC4D84E7BC8C5275D3689280EB3B8F3C, C53855408A0A66DC02FD05315CBB896E4C267FF86927FF60A38FCD6E805285890F2C7A63BAAF85A76B220EE363855CE1 -1B0E72C08E02B29119DA761, 3D47F8DF16209777FEDC6E275C860D4D9A56E8CD3444637C0CA0CD85D2E6178880A962B8E40DFD0DCB149DC6AA93787A, A5D39B548BA391ADB45EF05C36488890D705AC1FCAB71987EDC2802BE6BE90A731598A382482B3BC96ACCD6F6EC59C85 -512B5841AA0817B34D8F623, C322629B606B407C8F1C5F604AAEAA423BA63F61AE9BE78A2B89B47AD8931C212F5CA0A95C1CB320A6B1BD8ADF139255, C6CB476EF4151210C3B251982E760E13E4E5C1441A8283C6F08406BB84CBCC4EFAD80A3C64F9043F31193DF5324DD82E -F38208C4FE184719E8AE269, 3E538420C3C76466E691B6247B0BE38DAF4798B81FD55C709C7C619D4B15D60F883E48D08FA6C053A24FC06E843C3783, 5A6462B1894C0CF98D111685EC276E5FA1AA1B9417A739FEE271668766AFA5FAA2B5B98EA63A5848C858CA487A9DB837 -2DA861A4EFA48D54DBA0A73B, 290B7D67190B64B175521392B310336F3B51EED4E82CAE26BDE9111D40D5A425B8CD7C492B3B428653D4428F21AEA32, FC2CCAE4FE20F15A659B6F07952D7C23DD36E771511DDAB346EFD02713F78F68827B7296CD6EC8BB98F9E53629F967C8 -88F924EECEEDA7FE92E1F5B1, 469599F3D1D7285564D2D19E9FB20E374661B95959F87497F6DD3019DA7D123A7A2794F97F61471FD435C478C7871E52, D6BCC6D99E3F448E7F6786FEC721E8408168CC3A49BF3A5D12D635850DAC424F8AD6CD7908292AA7CB11841B683A784E -19AEB6ECC6CC8F7FBB8A5E113, D8486C5E2126B1C0C745F38AA9A7C2CAB8CDC62677DB993C9179E3E72996CDE33C773D4F90DDEB6BD109EC9D295B3754, 180CAA2EC87EACA14D93E5A8B424090A76DD7E9E53299010848A771B4E565ADD29752719D5D69930AE8DA4662A7133C5 -4D0C24C65465AE7F329F1A339, 2F1767176C2E58E0F08B4A51F500F2036EF4D00E163504A2EAA75A374B2999F0486173A22BC4BFA2131C11590EA9749, 293A321223DD7EEDE4B1FD6C5CAD51FDEC7E11F19BCF3BCD15CA43DBC184944CB382D50E435AF3A7DF069E690FAE6A85 -E7246E52FD310B7D97DD4E9AB, 39C1DB044294452FF3AFA2ECE3A2A5E16D1A239C0B63A22A52386CB4546DD87599DCDD9894B95A9D17D0F15422A64244, FADEDAF6E5224FEC08E3A2B3294916FFA178F12984C3E777E1FBFA571E858F7B28AFDBCC0E24BFA7CF84352790BBC942 -2B56D4AF8F7932278C797EBD01, 9A23F134256199B6922DE8BF63A334D48D13823DD447E505373D5AFDE4FCD39329B5D1DF0A33B0065B769A278A07E525, 88EC25D8A2E33B51E8CA17D685FD9D48C82E420F1B9ACA9E789CF5BAE95BA8579F7D2884C0B61A400B69E75F6CC8972F -82047E0EAE6B9676A56C7C3703, 5DDF3AFB5D6453AFB90D7FBBF3F73EE9C15443A82E11A6E719F45B764E0DAFEFEEE11F1ACFE188F75AA277214E580F13, 220B6401CCA494C4E93E478DB4788C0173036AA99EFA9BA4405F2F82B110D68F24FE771078661FAF4FF4CE87DBB50A31 -1860D7A2C0B42C363F04574A509, B32F67F1555963943858BA0AC73C2B4FC2BA2F54681B923EAC5B129E832BA9AD25028C8DFDB250606E937277A3A85B1D, B0F39895C81FA823465E9DB3008DAE9DB4E7FA06B31C61539CF23429F9CD58FD296AF6761D8B258643C779B932A9A67C -492286E8421C84A2BD0D05DEF1B, CF13701368E0B66045CFC41D45E197A675F4B4C4C5D41BF6CCFC908C3826C6C2277B68B52995F9BE860EBC293A59A56B, 6D018EA175D603E924B10DED802836DCE9F0A44EB36094FD1CAA79B0301556B8FB62DD8886D5B2214F5BCA6731477AF3 -DB6794B8C6558DE83727119CD51, F55FF1C787A82E6DA78187C53100B3186E96DA39C7FBFD7EA069B28E1D0B2A1C67A3A93A0D5C79390CD1E2C9E03FDB3F, 541F5BA6D856B9C9BA325F7F0E60FC23E3CFEEA0D5C1316074ADE10586A292937DBE8D8EE191A5884EA9756A53DFE6EA -29236BE2A5300A9B8A57534D67F3, 3A3868C5F9CD908C3B0F19943EA5552364E99755BA974843D32609F63CC9483645365417A34670EE6D0B53D3ABBB1BB6, 8BCEE0B863EADC2DD0D5E528E9F4F6FE549E84DE48958F61201F3A7782D0FAE523791653CBBA5424B17DF7C650759E8F -7B6A43A7EF901FD29F05F9E837D9, 78D503528BBD16DFEE6EE4A6DC1F395A6F5595184953A790EC01A3B61EB8C5060FA3C5BF362FA6575F8BA54698231748, 10EE2DB69F3B9CC49C55547A1A765DC0D6B738E3EB6ED5FC48311358B5A660EAAD585B0DF4D7D5AD0882E8434FA3FBBB -1723ECAF7CEB05F77DD11EDB8A78B, 83925EB0FED9F743B04F4B5B343F649095C14C8EF51E079DB96936096B3E80B7A2A05550202926D63B93C92A737CB862, B4116BFC49CD206618C3ED100FCFC7789E208F83E5D9D95917FD45A5346D4C37CDA6AF21049E160A628B06A139562423 -456BC60E76C111E679735C929F6A1, B17AC741C6CADF3A76DE0FDF1F24B20129CE3B7249B8ACC3DD8325C09B1708389BB28F7F3DD4C9A0863D076DD614EB81, 1E42CBFF458CDE07A8A615D3E5FE7B519EC20071EE1A82C6B32279F823DB84ED192F310E6BED4F24780DAEA76E1541EE -D043522B644335B36C5A15B7DE3E3, AF1FDDE67323B8ADA15C00E1C5B1622C7EC3D4306AF6BD2CFD1ACC443DED11631E39C851A3564646A2EC4748AE6D2B25, 8FDB4636869020D89FCCBFD052B8ECBDEB72004D6F6745FCFECC1F3C66376DA7312203518B26C4D907C2F4208BF1C24E -270C9F6822CC9A11A450E41279ABA9, 801DB56BD43A50C4857BA92264D312816A1455D6686746FAD8158C380841C578750DC162B7546B14E1BBC5DBD43A5DBD, 4747FD5874A10E40E76DAB3C8D274426946D710857501D1AC4F32D93B3551C3A8E37C3EE12C9D6BE425F26A33BC8B953 -7525DE386865CE34ECF2AC376D02FB, 5562E0CCD78C58F382B98659B6C0BB6071EFF74A52BB1D90DFF09462CE1E1B3D3CF24CB722538E992DB861E8B0459C09, 48DD52612E8E79EB8F68B117A579EE598C4E04997BFC71FDA1E51A98F2E1A071CB95C6D40BC32C1330DC85C52398037E -15F719AA939316A9EC6D804A64708F1, 3C720118EACE572081ED712457E028E01A637A131FC16EBF34DF0B65142A6D66B813DA68A66AD213D18DB5A0A562D0FC, 806E1629250396C00C35240719499C02F8AE734C49BA2ED9095BAB5ED7C1743DC8C77478EFF551B25BC16066BEAC8EFC -41E54CFFBAB943FDC54880DF2D51AD3, A665E9B0F5EE4FEBC8EBAA787135EDDCD4DD64F5566F8C4A0214642D08D2C8E96D4A9F8B6A1DBF946AFBD47E8CC1F6C7, C793540EE4FC8D84C7C7A5C5AFFF7B9213E294EACD48680F184AE550C35C3B609C4E4524EEAC301FB7CA87B89255A9 -C5AFE6FF302BCBF94FD9829D87F5079, 698882343467EAC6E642E0634AE74826F0F8635825CB8631FDD461FCA776DAAFD93AD926AF0F1F723643DDABA86746FB, A15F7C8B2ADDDA5A50E830C56F5637A2701C5AB8E0F3AF776E746F35BDDAFA81200428BDFFC3BBC398FC22D942A32F8C -2510FB4FD908363EBEF8C87D897DF16B, FD10B62E5826880EC655B8FE38D8837F111FCACA1E3389DC9645350A8B17F0F12787B654C02B7D3BF6A72883552B66A, DD69AD5311B203C8709708C2AE9E5ACD6ECCBC71CBE837F05AC59188B2CF5364F9449446899879A40AF9A3C8A94D5172 -6F32F1EF8B18A2BC3CEA59789C79D441, 7D3DE83A27F5501DC3AEB5246AA159119CC20BC592B3A04EAC140383178FBD73DC291C6976DBF62E8FBAEB47E4EEC242, BB6EEA3848808EBA89EBE470AD2C79639BAD34367A4A9FA2BCE07D594416A87A03AD56F47A599484923E3B884CEA2897 -14D98D5CEA149E834B6BF0C69D56D7CC3, 56F6423CA135EDE0065ED6853DC33A5CECEA4BDB0FDCA5DC485812695AAEC1EA62E32F362A89AAF790CE385AA3B227F8, 7A23245FD401F4B8F806D92CB0DC01D070A17200105482F24B334C29DF436C8DE4BF74004C36F1716CE85539315DD47C -3E8CA816BE3DDB89E243D253D80487649, FB7ACF54D6BC1F87053A2A68EB73DB8C041E9BD90BA2D7384C2404D3BA6B989955A23C4A42CBBE592119EA57C7D130FA, 804F17D4B2F4347AFEA0046AD2E3AFEC66F320A40B2EFDC02FD2105A44FA3A4A39D75F8A2349DADF154830911D4C4D79 -BBA5F8443AB9929DA6CB76FB880D962DB, C6051F6AC7C8D3A0FB9617CF6B935BE246366DAC40D6DAB7D5CA3271109E74E9DEF5B5DCD34054C3148E09A8EE376F96, 17D5118CD46CB520EAAE22A5CF953AB6C6BF30C4E9903E5646AE4D3DABC0112D8A9DE529A9A730E11C97BDF6E24CF37D -232F1E8CCB02CB7D8F46264F29828C2891, 8226F16EECDCED762B53A5C236CB0473B1E426B7514DFDEA8E1D5E2236CAC6516A8354C0A9D8AEF2AB25B0AEB5642CDC, 8141785EECC969BA58EBFC3A0E0F92C17878E780C6823DED77CC8634EDB5151A13DAA506436787FBEF21FD02F43E1B0F -698D5BA661086278ADD272ED7C87A479B3, 7C6954982B5BAF090627E007EF96BF45BD189BD7C0AD6A22E5956739B60E534DBB10D4B52849E7F230BD8B0097E27848, 4414332E5758586C495E14D6501BF0BB312A7A93ACA75B4DC3C2E8295469039864A70CFFC1416D17C1D558AAD1B55656 -13CA812F32319276A097758C87596ED6D19, 845E24A572803B02599739D0210BCAE6C383FD36400A5AA96B09B89D88916732A039A546F77EA90718971D2520EE8F89, 8974A58DF0FE67F1B723EA739F578733B40BDA73EEE3DA2BB45BE94D485186CC3E76177C0EE81A32BAA03C681E4AAA39 -3B5F838D9694B763E1C660A5960C4C8474B, FDA6AD1957A6CF2E377D1E44E27DE0DFDE39CDCEAE40A2E830A00D2D514F939B3220FC1DAD3F08FA7EFA9E1D15DCD033, AD850C003BDA4DB0D2CCE0B47476AFAA63087A066FE9D9AB8E50B1E6980A810A485759238FA8FD45675BB4E04253D160 -B21E8AA8C3BE262BA55321F0C224E58D5E1, 430CAEBFF1D8578CF05091DB0C810C191E48C4A7B46A1623862DCB8992C520E62130F66EA8DF65A80874CD088B9172BF, 1360132ED83FB5FE4D26E29B84B4747C0C00E884A2E9FC206D54DC70291B8DC2F0BF0C84EB0FA93B471DC10D49DCE982 -2165B9FFA4B3A7282EFF965D2466EB0A81A3, 6739E6A985EA9F1EC9C93887AC7A821BF68B1833EAC32833602DE1BE88259C01BFEB412BD9352744DB2AA7E099F65C51, 8E364F68331A2812476F1AD0C35366CBF08FCBDE69BE8F74C33961F47212BDCB3F06B1B374F03F81AB41306A10692FD1 -64312DFEEE1AF5788CFEC3176D34C11F84E9, EDEC4A7A3F5843004EC311096F8353655986118E7ED362D24F31A214F9BEDC78BB0A1DCFC3B2826F45F9E5CC423D0915, E0BCFC02BFC1B3243A746B3BD9AEE8CC30861D93A814B41DF90D982E72A95C4E3639448C3BDF9581F1C2F3E629C31F9 -12C9389FCCA50E069A6FC4946479E435E8EBB, 58C6EF296B7580441B6F638E39610323882456B0367745A88AFC81787F1A39B6EECE6CD8E17E9010A9069FDB54C0B4AE, 3287198D302A7CDB02E65472CC8A59B26FCBAB2A3FA5E7A13B29D2A56E29930D9C0A55294507DC563C96010D89897DE1 -385BA9DF65EF2A13CF4F4DBD2D6DACA1BAC31, 8F460CAC5C0E019B2DC8D38FD9D74FC3E0BBCA91E1EBE5DB396CB991B23AF91A763BAAA0E1B192E52CFDE09E734B0675, 9CE93A27A6CFEA9B6928521EB9BBB07CEAD33D0401193CB279FEBEF0C2F5327B2E89EE0DE36B804F5898463912026479 -A912FD9E31CD7E3B6DEDE937884905E530493, CC18138D957D582F79133F05A4C8DE1443E6B02797C255A29C05E99BAA764B1DE0CF9759E5FAE7733AE10CDC105818D0, 82D4403C3DCB1607AD8D980895859E251FDD217725D1F6E543C284E75CB23AA8D6E42F824A943F05F1F1590F2B5194EE -1FB38F8DA95687AB249C9BBA698DB11AF90DB9, AE1E98C0EC6BFEDD0D6D06DFCE8BECBA637BDE30229D08E07BED521F3BAAEE494BD05C044BC69335DECB16A7DDA79863, 33EC3113A34D25DF5837E0A7AC4928C1322BA285F07F4543DBB67D79D9722B2D3A6E11E0C04B3967F422E0E19EA1A4D6 -5F1AAEA8FC0397016DD5D32F3CA91350EB292B, 59EB072C6AF606C6F56CB4EABAADB7FF55CA5F373C968D6D47B2884549AC41C61FC0C7A54928FFFE412D1748827C3797, 7366C6427125F79910555E2724556992738BE7FFE6D74C2211FAEEB7C64DC4DC37EB20B71A1815EECF1CAD70828742FA -11D500BFAF40AC5044981798DB5FB39F2C17B81, 34DCD5BBB389A5288AEC85E92DD3D603A6BDC4B912344A37B3906087666F63A9A5E1B98B51CCC55D8CE71E2C609786E2, CC0592FEA9284D16230652ABE63501DB123F74DFB960E5803B29B5488B8BB6C85F0B16B5CCF652E7E2F6E6F797E9925F -357F023F0DC204F0CDC846CA921F1ADD8447283, 6DF7DBC6C027088596D82132A7CE15311D34D06486A9698B561AA3B8856FC66419FB551B0B070DB0D38CFFCD1FEEAE33, 28FF1E1E95640E7CCB11E267C06284C3E6FB36048B8CE07B69FB8D6050704FD3DB2899A3C795A287D5CEA737BFE4F669 -A07D06BD29460ED26958D45FB65D50988CD5789, BEAE9EDD444F66A2EDC62B5BF8C0F40AA330F1DAD2D9AD97BAFD1A4DF7E126E9E8B48D05324A44C3B2CAD59A6B8ED27, 45CB5D6C9806A848325ED1C701C8D194C4697A4D9907ECE4322980E2143DBF7D300ED3A9F7C27C3A237881A71DF57EA8 -1E17714377BD22C773C0A7D1F2317F1C9A68069B, 8AD64B9BF757181B9C147A77403A713202106DB926B838F1E42B8074650779A3A585073FDDC369151840F72C846FCA80, 41669D2A06284F90A37175944E0AFD30512C02838BE0D3759B8827904086E35F6FD9B7ECE02700026100DBB1C129DB95 -5A4653CA673768565B41F775D6947D55CF3813D1, C3B69AAC77A2DFBC5D3544F50A09FC113E0A5FCB6B05144B9863DE64B42571C2B960DA075BD299BDA28F1C7F553EF53A, F6E91117168706FEDD13B5048AFB9255D8501CF8DDA48CD1E3E9E11D6C520A48A1ABCB7FF39062E7AC44D07001BF1AE0 -10ED2FB5F35A6390311C5E66183BD78016DA83B73, 535245AF848D7BAAEDEE934B11A06399F48DA9DC246649F037AB8FBA0D943667B589B229F3ECAEF118AC301AB40EB26C, F3C69A881DDB19055DF5278E6597220BBC130DBEA8074DD98D8F58F155EE67A180F1DF613749A788B9E1E8A18FCDA398 -32C78F21DA0F2AB093551B3248B38680448F8B259, 6E332109579449BA6BC1159763DD73DAA750407D51A6057F719643B1EE06C6C23D4061768C56C8F991A6DD6A48C045D4, 23D28B89995E355F98AAB3522B85682FAEDC9969D711BFB7907269B1E96EC48EFA09225EB1F0C2772CE3A6022D23564E -9856AD658E2D8011B9FF5196DA1A9380CDAEA170B, EEE848AF3D55232914F20D9D9858F0DA7D88608E3F95DEA3289EB042655E5BFCAE1FEBD1E4757E9A0A87005E9B77331, 9C81AF59270DA297E5A872F7A0295794AC84E9D85DE0C65B4A1CD40AE0690CC98C6E0CD89D6E689758116D1BF4EE7920 -1C9040830AA8880352DFDF4C48E4FBA82690BE4521, 4B44D4ED3C2F032A81CE01F5C3049B9F1E1028A9022E3B0B3C7A4476E9BDAB5FB7BC0CC016456A1DC16AA72838EA56BB, F36803A7483D04F05FB0E0EA52ABFD23AA5C2EF8E2B7097C58BD6FD9DB83AFE98F26FD21EEBC1BACE257FB41071A8356 -55B0C1891FF99809F89F9DE4DAAEF2F873B23ACF63, 6336A76D5D94FDE2A1A625790B044E38959C462C38FD202048B3A81DB7F27048085EF06D13A0F5DEA359285F636F42E4, C52923D0F12679656B59660FFA4BD70312045985A040CD858F7CD07E8E1F03923B92543186D2E87823B64F7CD9981986 -10112449B5FECC81DE9DED9AE900CD8E95B16B06E29, E1FBB64EDCDBF21B448243896D0DC028DFA9CED2AE3F184D978F29582FEF39643F36E0A0AC79DDDC13B5299D20BEBEA5, AE25787C0F1B3FECE1851245D98A149B7877EB90400C23A792145CFEFA26958F187B68ABB7C7A10759AA56FEDA55CD9C -30336CDD21FC65859BD9C8D0BB0268ABC1144114A7B, 269B83C644BD0217E3254DAEE476D3B8BAD3A7854B26A2DA8A49445DDE2D907BAB408CF736F02A654C4E104B82163271, DDC4F14FAB24E5496232BE99D74546EBFD28C9FC486F2EF27908C7A3C44D5248CCBBECA1645E327ADEFBAE66049A2D5E -909A469765F53090D38D5A7231073A03433CC33DF71, 60DE6F9CDB270A1813608B46B985565C1202EDDE62C3750A97792AA1F833A91093EF8F86DEC018FF2D427B849D966BE8, D6AD1734E5E3C4AAAB583F75862868EEE4D6EF2C6E7EFB22E73EA567854BECC038AA804E757D93BA6CA41165C9795E9D -1B1CED3C631DF91B27AA80F569315AE09C9B649B9E53, 917B6E9836F425605F20B8A77749A729C7E4F37A728363B03813AEA1B7B1BBAC195C6254EBB52EB9C5AC8026729E6D3, 77CA655D0D540EA8EFCDC1013A5E6C1FD4B4C9D4070A81047C476B2B78910ECC97DACF8E1A96708BD50F82EF4F13D19F -5156C7B52959EB5176FF82E03B9410A1D5D22DD2DAF9, 3A4894159A887E6C56EF92C6C88C6750BFE1D2D13647FB1B52623C8E96BBF4E4B61C1F0742859A18878A2A4965E685FA, F9E93CB6DC1BBBDA7F4B78CC4F64DA85CF8C70F099DCF2DC1648280B96105EF082140144B244A20249620F2CF5E8925C -F404571F7C0DC1F464FE88A0B2BC31E58176897890EB, F094C286632F41143FFB04A0B2CD8E5B787F09E0C3451DD5318528041D0CA63C5104D91A59640275CE525C0C8F067D76, 67024ADFC008C46A0D483ED77CD5814AE9E0D53C60C60D4D1C7ED25480A1E96002878118055414E1D661811AC3F1822 -2DC0D055E742945DD2EFB99E2183495B084639C69B2C1, 50C86496BE68E05F94DE7582524168D2D2CD8CC0276F49591D5FF71B5453FE91A11A6514C434960FD8C5B81956450BC3, C938D1C2209D48E5433B296B7FED13590C1FA6EE09FD4BF5FDC64743AE764DDAED4A086976530F6F25F9683B153C3F7F -89427101B5C7BD1978CF2CDA6489DC1118D2AD53D1843, 16FE8D74114511776207D5260CB7A18DCFF4BA22B020031A69A674107B65E87989DA9A0F72F63528E70F9915C8203409, 7DB56DFA23AB19BBF58F56576E30FF7D69FF5B5231AD17E315BFFCD97898F70F1A6FA88FB74F11FBA6329709D3EAB05B -19BC753052157374C6A6D868F2D9D94334A7807FB748C9, 20FCA562C8571FFC1F577B5C94FAABE2D5380E392DA26C522A85AC1BBFDA4C8C45806775FFC28A24F5FA0A4A964E9749, 2D2465AF770DA93F5A3F992E2FADBCC6D3EA627D6B32804838ACB0978C4F8C0A26C686C03C49E98F943AC8E7733A92C1 -4D355F90F6405A5E53F4893AD88D8BC99DF6817F25DA5B, E68405FEE3EE25E42DA1AD218C20AACF30D7448C4CF150A9622A8518D8DFC6F1D8469CFAF1C2C979443CC8C2EB1B088C, 889CF33EDE61331625C9F87C68F56417D125FEA6110B72EEF8569A5D005C0BCC8F2DF0F65B068DB4FC4A9AC5C0045D3E -E7A01EB2E2C10F1AFBDD9BB089A8A35CD9E3847D718F11, 4EDBB67E1894CB5A1B274499DB09255A8664299ADD5D4BD7194DD165ECF1F93939422E7B37A91E7DD2A017931F77ADAC, 2541889DFB620C0A68FFAD21565BDF7D1C7EB43A37C428EBCB8BE6748BF04A3513791A304BE52757CF925C1CBE06F027 -2B6E05C18A8432D50F398D3119CF9EA168DAA8D7854AD33, 23EEAD8B04C990E245822318E65390210C6CCC496252AA22BEA07F6BB4E133155E8FB686A27E74660E02484BAACF68A3, 756FEA2D2A57C404D5BB305017064DD529AB9140465FA3E99F812083D6281BD55C2FBB3BC2BD49AB2A8510190E935261 -824A11449F8C987F2DACA7934D6EDBE43A8FFA868FE0799, 257D81AC8456551EFF4807051969ECFF195098C16F7284260A74ECF69326D04269A31C9FD892F61C6DED793838389DF2, A019CAA36E0447BD5EDB2EB775A625024A5723C4296630B4EC4C64F5B4DFF7CBB270705A53C59121BE38A418A0876D1D -186DE33CDDEA5C97D8905F6B9E84C93ACAFAFEF93AFA16CB, B4EA5DA208AB4AC5E396DE24E497BA1AE849E1C051748F9521D52B0FC34220F11DE6D1B2DBB913910A4FA8DC302375F3, 7C9E108A52DB2853D5CCABAB873BBAA565746DD426B5C9C913DB934AC5881ACA09D13ABCC4EAF4C2C2E8807E2470B03F -4949A9B699BF15C789B11E42DB8E5BB060F0FCEBB0EE4461, AB164B4CBCE4672AE7FE5009859092D08DE511B15AC5D93DEC0174AE4183CF3B8E48DFA0E5EB56FF8C1B3DD90A2B58D6, FB3FB21AC0899F5EE414D74B727726B77927E5B803A86618178EF1AE684F9AE59F4AAA0BE668BD2C612225601D76B3A6 -DBDCFD23CD3D41569D135AC892AB131122D2F6C312CACD23, DF4B2ED8CBF816C905D49AB05AEC9207594DABBF714EFC8F4B042F4133B740FB4DBF2180D21A6E7F167F7958489D406F, 346D924EE85217C15047D68E5253C2B874EFA2DC5626572F34765006E0C802E2E63CFC90830E0E56D90F408099188F8F -29396F76B67B7C403D73A1059B80139336878E44938606769, 5A238C0C26189BB0B65A54935B9DEDD95393726976440BF373A6CFBBC6FC4653145CC89BC8B006A07ED37F2A0ECB0BDE, EAABAE89EFC6B022EA3AB568441DCB57B66C6D33C3E419ADBD17787D90FC0436B970DD920EF8417C6BB1D941C9C37DDA -7BAC4E64237274C0B85AE310D2803AB9A396AACDBA921363B, 6F6FD3AA2E7311C2E92A22EA7E6C3328F12298C2C963BE81C6F020F2708899AE1FF38BC6378DF21BED067EE89E78E938, 5701988546F00FC727989B485A1B61B06C2F8E6B9DBC924719F6685B3BC3D6B00EB2E8175217B04059606B2FA0245019 -17304EB2C6A575E422910A9327780B02CEAC400692FB63A2B1, 1CCD7B257AC9A6872C8810A060AB7E19430F7E4CA055FCD3611A3F2144C457ACDBDC241420B559581D2904FE211DE99E, 6492BBC9ACBEA3A180F8DD8692C08287C5EF99197027B35267023B898C97E59F3C97E80F37DF21C76FFA5E3DFFF064F9 -4590EC1853F061AC67B31FB9766821086C04C013B8F22AE813, 26E4BDCB7E4728FDD66386BD84DC8F9D1F970225DFBD3C0FE2F67D181650E1596D7EFFC026BCC5A1DC308E7DEE1E3BEC, 380E5C9DB3696B6FCE63A57F7C07D3B81A8E8E58986AA355AC2C9660B9921403AE264BD6BE95A007E6BCCDA136362967 -D0B2C448FBD1250537195F2C63386319440E403B2AD680B839, D2AA21E3F8C0BF9284D2E68C6825DC582F562A97B7A7CCEB465D842DEEB769A359012496E5CC04D171D4FDBF5982F8DB, 1C5B56811ED04F7178AB50C29B6E3D3D27755BC3359C1EBFF91DD3C768D6333C67074E51A7A349F9B723559177F5E42F -272184CDAF3736F0FA54C1D8529A9294BCC2AC0B180838228AB, 91AC5FEC6C41D4425E3897CADD5AE51ED472C57B703EFEA6AECFC67BE673FB27D8B804F503EADBC871CE70C9D0BE4F93, 47717619E6C0CA27B810F03E29869DB7D32B3471F1DE6B54657FAC227436EA19DDB03638ECF556C684426FEEACD6B87B -75648E690DA5A4D2EEFE4588F7CFB7BE364804214818A867A01, 5262D4A1DD05B932C7111E5AABDD63B28BF8D3D6722A69AA8E519BBD4F2D87EFF12AC973F4DD91BD98F2163F8E430C9D, B212E52DB29F450107779ADB7859DE9978C4674A06D9ED513FC68E4BB363B382486D06760B38B548E0C89074B01361B3 -1602DAB3B28F0EE78CCFAD09AE76F273AA2D80C63D849F936E03, 3EABD0CC3A97810473133BF0E8CCEDA93B3A16646F942219B55A767BE749AF9EDEC5B86FB10CEE90CFAAC82BDE809BCC, EF5D3C16700E6057A37109AB95DD32D86E6702A8A103CA0BF0E95600B128BD0794DC236F442288FB818419AE2D0CE047 -4208901B17AD2CB6A66F071D0B64D75AFE888252B88DDEBA4A09, EFB51FABA5E00921B4FDC615C3656C9E32C6E3FB0319C08E720C0537B42A037CA0D7DBEA1A9D1817663B919F50D6A19, EC313A410871C71DB05472484B0792E8257B781D366A9206AA53EB8DB56F3FE5C25A094CF2D84B147F696B6646EC984B -C619B05147078623F34D1557222E8610FB9986F829A99C2EDE1B, 661219AC4AF8FC7BF8BD2B25F39000A4397C9FFB10FC23440F5A7E33DCC879A1A7ABBEB89ECD462F7B7E895EB7EBBDDF, C8206ADD87BEEC60A01C55CF114D929E2ABFC2F51C8FEE12FEF28379EEC12254F9DE7111D4C1EFF50477C3BB0412D826 -2524D10F3D516926BD9E74005668B9232F2CC94E87CFCD48C9A51, C55C2D48774AE739DAB54C3354FD2FD48663E6CF1CBB52F746E91B8E96BA820B4365F4BB5EAC8ECC5198BF081DF7D44E, DC442CAAA1405C10CC8652B3263C52AA99A788B53CD14D256C1453D20911FC4973E77A5396D064C8D15570AD0177B993 -6F6E732DB7F43B7438DB5C01033A2B698D865BEB976F67DA5CEF3, 654F8444B40DC6ECCEA01F6FCC83E4CE74D39F33612C575F92683B2782A63DC1E34587BD40EDA8A69776E0945CA1FF25, C2D2275E31F42F004918F91901E663053392C1E49FBF375BC7B2188024CDC5499C01367BE41E0820D1F5868133BF0C6A -14E4B598927DCB25CAA92140309AE823CA89313C2C64E378F16CD9, 3F216AA2F0175611B41BC07B9B81F10F84B5469A2DD56BE4E2BF76948B9BE2E88A41A98C1E5CB617FB77548A828605FF, FC2986A007B72EFB5E00BB3E7A4366E08060A995DDF4FF49BA59CAEB193A3DD4BEB1ACF422F9069C59B668CBEA74262E -3EAE20C9B77961715FFB63C091D0B86B5F9B93B4852EAA6AD4468B, 49EC115431A5A9DC1FD1CDB9B3C46C80AB42AF7B02521881F5D2BDF9C14B5CD5D8AAC08FCCDED7B8A05C54F322C700BF, 90DA3972F2DAA834EEB421C6B557BF274410DFDD362410AA89EAA3D9677EE83A4B6EB5805D918E1805AC5AF73316A389 -BC0A625D266C24541FF22B41B57229421ED2BB1D8F8BFF407CD3A1, D0724A40A6DDE3428D9B2BAF2E00DA732AF48EC07698CF79A7CA9EB67CCBA3EFB901DD0063C085B085B9247B6A7AE89E, 72180D820606E4FEA96FD856BF0117AE642FD3D72E26296852D6EB984AFF90AEDE44380B84F8897045EACB6E38E173DF -2341F271773446CFC5FD681C520567BC65C783158AEA3FDC1767AE3, 833ED3838161710EEE4FC1F626831804802621B49ED0374D46F96B647C326F48CF96690B69893E489412B7FD9318CF07, 96FB35E7F381526147249C998456C7C3D7F757499A6D33F7C5093E019C2612A8FD24F7F1BAA032E9B0D7B46CEB052A6 -69C5D754659CD46F51F83854F610373531568940A0BEBF9446370A9, 40F2612CC9F0E96C6879CA085A5616E49DA57FEC8435FA5EBF939CE788845246970CB0E3CE1BC5B2EE613581C60A4A53, C317A1E6132860FAB9880F037C229ED821D812F7833743E6EF1862187D210462A6AE2BEA291A3457A280066E05894BB3 -13D5185FD30D67D4DF5E8A8FEE230A59F94039BC1E23C3EBCD2A51FB, 501750558640FA04A14396E4942F19B56AAC8BEDFE6F0CEA9162FD91DB0ACBC027BF394BC3C5454CC2F14353EB85AFFF, 48AA1ECA7DAD2DF287751FBD4CCA886EBDB1D384757EC24997C0F3D923884103EF6EC9AE271FB548D6715F1640C4E3D3 -3B7F491F7928377E9E1B9FAFCA691F0DEBC0AD345A6B4BC3677EF5F1, DA71BFFA9B3DFCC1C8C69F399535620181F9746CC43D11B7D18A6E058325494AE62D2770FC152C036DF1C34844DDA551, C59A5AF3370D830693263F0995094CC583E3DBA084F4D7A38F1DD12DD23D6F8E112A1B8EFE0B9E9C061931CD6071AD09 -B27DDB5E6B78A67BDA52DF0F5F3B5D29C342079D0F41E34A367CE1D3, C7B30F1ED4C3B57B38B529ED7406C0A3B2BD8B61CE67C1541AFD0CB78D14015271FC4A781367FF73BAB6063B062CAE1A, 8A884288BF9A200A768843EC58E978AD5FCB4D9DB5C3FBBFB46079B58D8E6FCB99187742AA4CEBD9784735107BBC2C36 -21779921B4269F3738EF89D2E1DB2177D49C616D72DC5A9DEA376A579, BF927F2AF838FAEDF98BBAEEF2659F53F63E4E9B56C0AD4B68650A420F70936E1FEC3912DE76ED20BE8A21D0DB77A422, BF0847721A506302EC96C99E6D332B92B09E0897FBEE42F4552D705F3458DC12F47CA0DD88F0D3E510000052D320C011 -6466CB651C73DDA5AACE9D78A59164677DD5244858950FD9BEA63F06B, C9BD2B3FD0F566D809EC8D7B7FD72120B2E626C0F8C641084B6A19A318BEE009A6D53A939E421DC87E713F8D9DEE1F24, 19EC304A50124DDEB962755B2E778741FA3B632B4272BA187D17A7D0EF24AED57AFA884118C32474E16454A5F4203335 -12D34622F555B98F1006BD869F0B42D36797F6CD909BF2F8D3BF2BD141, CAB3A4A9782F3622F212D2D7C0C2D9B6D4129A4A91A93D646BBB5EFB09C822E25800E1D2DA6B7492C4BDD5263C9791CB, 5A495C63C88F6A7BCC513AE17B32B1D787DCFF22EA60ED304158EDB9EE3C9B0D86AD42F77764D6900DF50A4B2EF799C -3879D268E0012CAD30143893DD21C87A36C7E468B1D3D8EA7B3D8373C3, 893E42A8127814CD00941183603F65B853DDE5DD89D33DBD2C7E2BF9CEA93F60B850D70C8CAA53143F6BFD34D9BEE20C, F71C691901A5B8198F97F5AF432760501A8C4948CA35A51EA6143D8A64587F78F794172ADC560320AFCCED3C6FA1567F -A96D773AA0038607903CA9BB9765596EA457AD3A157B8ABF71B88A5B49, 1A94BF7387BCDA5301E6B192C85D2DB9E77A7A018C4156BF22A58D501412379827E113C64E047DCF69BC2A9BE6203, 22434B28AF8DB072919E660298AE0B325B3440E366A6EDA5A22E2BD9A684E26909183EAC51B4DFCDB7FC1C9F497F0162 -1FC4865AFE00A9216B0B5FD32C6300C4BED0707AE4072A03E55299F11DB, 5F83049AD2A8EB2F763D965E30C08DB85ADCBA02904E9FF60352E04C592A2414FF7BDB87A622CEAEEF82B380DCEC45B8, B884E47A9BCD85D71B52B574202973FD66C49D5ED9896ACD9AA95CD70D40088AD0A88CAF5E5D8D24AE541C0118680FC -5F4D9310FA01FB6441221F798529024E3C715170AC157E0BAFF7CDD3591, E6427E2A57BE5CFC7B823528AD5100BC4154789A9CFB5A1D93536A24E72A4CD0D3BD385E4AFB5ACEC9E0FD37F42B832, 775AF7E903ED68D4456252EBEEE04FA5C1FBE917742D179FAB27A2AF16F1BCABA2131F6A66842C26A406098BE0778F63 -11DE8B932EE05F22CC3665E6C8F7B06EAB553F45204407A230FE7697A0B3, 892FD294F87BDDAB30F383CECC76D1597ACF09DF87254C3B4E1C6C8B5135FCEB17A6D37232EFA3D8C45F16F3110B17AC, 4385E858C8E3471A4DC02ADA4584808333B2531B6F5D23466BDDF2A545ECE801B44F800A82357080E53D254436436953 -359BA2B98CA11D6864A331B45AE7114C01FFBDCF60CC16E692FB63C6E219, CA910127E96D2E00398B88A8933D9CF5DB362BEF06FB9A9A465C64C76749F847B914F5DA1761AB26B194EE879F081F5F, 98327BD190C9F4C1B941789842DD0B475B5B81670F80CB823A77901CFA8222D99E538D72217CD5DB2D2834122A711F01 -A0D2E82CA5E358392DE9951D10B533E405FF396E226444B3B8F22B54A64B, 8C4944FAAD1A578DF285E647447C815DBCBC7070CE37468C4F1DBD28EAF0F05375DF76411B609B71042839631F5A858D, 64958FA8D1DF71EA39B7DDC72CD2043669FFDA77B02907D1F34D763645E013019A0A871D73D01B340BC4F45E6340EA4A -1E278B885F1AA08AB89BCBF57321F9BAC11FDAC4A672CCE1B2AD681FDF2E1, FF7E584C289D4D97215C9C4372ACEC259B694574A8AA749056181FFF3F601716FA972FD2DBB10452DA351F10FFB630C0, 108F5B4B48B0FD567D8A7A6DFC3A7FAA288503581320618BBB9C200124D4CD51E479CF32096C3E6DEF66A548A268BB66 -5A76A2991D4FE1A029D363E05965ED30435F904DF35866A51808385F9D8A3, B533B5DCC6D8C4666AE835793FD39E87CEFF57FB7C113A3B99F82D3448FEC01D088F7DB750707B5573ED055E755A320E, E6478E7F94BC2338C551AC03C60D868B0DF6CB6654397F6AC90B8C1251D2A1E1D2FB71D5FFBAF46875FE0CC10B4CA7AE -10F63E7CB57EFA4E07D7A2BA10C31C790CA1EB0E9DA0933EF4818A91ED89E9, D7DDCBBA259A6E4018A0F62DD0DC6AF8412BBA1F0909C88E71B83D9A75CEF1A66F8A27B5A8754AD77B0A9A0C64B8F0FB, C490F422E5A8F64264DA5E82693640C5F0505F924F553105130CC705D4F469E3768D9A29DCC2F9C1FE6EBC4ED8340349 -32E2BB76207CEEEA1786E82E3249556B25E5C12BD8E1B9BCDD849FB5C89DBB, 3AC066784ACFDED2405E992A297EDBF9970631B2F73A069661887ADFFC84DD35121F3C61A16A9DB441A256CAE3AD76FA, 2902428EEE224C9406A319FD6068F958A7AC490A6DFA71A0D5D6DCDF06412C68C2FA3FDEB0D8266BACC42F9B6CEA601B -98A832626176CCBE4694B88A96DC004171B143838AA52D36988DDF2159D931, 90434B263679BCBEC06BAD5BB43B185E912831A31C0622629F80AA005A09C34B650FBBE82E735F4B9755157E1ED7F619, 5FEB842F99CD571202E05EDD9DCEBEEE7133A387A3CF3114DE210C2B076FAB65166B4AD46211137CCBC156446F348A01 -1C9F897272464663AD3BE299FC49400C45513CA8A9FEF87A3C9A99D640D8B93, 2216B8FAEC60F877265A440D0F311E65E6AE312BE03260408A01DAA1DEC1C18003C2965461CEBE6145B99FAD6A4EF282, 5FB5B6A1C7BCAA608AC9C68AB4D3EB4194A035835D45519F34DE59AF4D34B6887C3394500AB59193B7F6458966774AAA -55DE9C5756D2D32B07B3A7CDF4DBC024CFF3B5F9FDFCE96EB5CFCD82C28A2B9, E03EE03D488826AE89725DBB0038E503F879AEC7DBD3C7A88E522246BE8B2C4FE2F1FF10D55B749852AC2BC9F54C5078, DEBBE08771240ABD85A508BC64ED09CC78787F97393C58BAA0748BC9D31F8A107FDF88F018596C200A4EEEF0303D10CE -1019BD50604787981171AF769DE93406E6FDB21EDF9F6BC4C216F6888479E82B, 6CA1BD5FF27D68C0635823A156C58CD842077B12D050729DCCFEF7BDADD7A700ECF11451991C3A304EE485072DEC2339, 75E0EFCF80D47859E030BB4E89D25F36A6E93A4FD19F8193FA267752304C8B084C426C0CD2811BF188603E19B639694 -304D37F120D696C834550E63D9BB9C14B4F9165C9EDE434E4644E3998D6DB881, 6E7FD0CB368344068BE614E8D3C54E920DD4337ECB645AB816BA42032C40AF9E44A78D478A7D00783FC23AD0C6C6D3C5, 6B8146C68094E6FC6877EE99966A4C9BD7B172755454A90BAFFB9B9ECE25D0C1188E723E783D6C2C4A11E22B65DCA5CA -90E7A7D36283C4589CFF2B2B8D32D43E1EEB4315DC9AC9EAD2CEAACCA8492983, B796AC582388B56FEF9D37755BB7E529FC393C59817E2C2A30365352E3058BDEBBC05A17474C9B21BB177E4DADC90A38, 58112D40D3398F49094196A8FD81090B1CF4F60C8FE567D2521C8C0DB5829B75824557C00105D9FE407CA1F222BEFCB -1B2B6F77A278B4D09D6FD8182A7987CBA5CC1C94195D05DC0786C0065F8DB7C89, 6722763349DDE6305488A56BF54C65EDD505C368D147C7C5ABAE253EDD874D927E270641EF606DCC5944EAFB5C816755, 67BECC5F12221AEE2F18EA6EA98B1AC354480566B271A2A95CF15D7AA7C4B40EE41E2A7759D4223E9DF3061A972B9994 -51824E66E76A1E71D84F88487F6C9762F16455BC4C171194169440131EA92759B, 1D7D201EB1E6DB52E1D4EB87C857E0933378768238B02CBF74864BCD3585432670F7970AB150C6CAD21C4CCCCE9ABB7C, 6429429FCD058769C0557F1F591D22804C71E34CF62A92AF3398CA296A3D422DA76326AF7D3401CB0D922C35B60468 -F486EB34B63E5B5588EE98D97E45C628D42D0134E44534BC43BCC0395BFB760D1, 818DDB262DBA224B41A4E6BCB3BC5B06D2E1215295A5795BEE762A2B1AB803ADAB1CF78CA1E9B428678766C7889DC0B0, 2851BBC399216D09B52E3D0F518FC440BC11E65B8F60FD5F61FCDC544740F4AFAA080880158B1E899F4CE19427F89E4F -2DD94C19E22BB12009ACBCA8C7AD1527A7C87039EACCF9E34CB3640AC13F262273, 60D6926E594171B8C88C1B85A317653FA0A5BECF9138BA15BC5CDC34DA139DB3840B90274CA4D92F47BA84D7C045D616, D0872A2E735DEB24AF801252B2096E2A340671F7B4B2B89063C2F2E4D51ED48978B99FBCA36F781F0A805FE8F4AA3304 -898BE44DA68313601D0635FA57073F76F75950ADC066EDA9E61A2C2043BD726759, 6CE00FFE436BEAEB07C97C3E273DD166D9F292D8CDDE885B04697A77267E99C7B3E84CEC74B08974764EFAFCED7971CA, 12FC43F043C8B8BEA9C9E1CA67602DFAE22C2D1B9754CB44F453FAE6710A31F338924DE4FA9AC00DA116B61382D03920 -19CA3ACE8F3893A205712A1EF0515BE64E60BF2094134C8FDB24E8460CB3857360B, 9D96088E2D41DE9BCE458A6AD83BFE9631CF5461616B5CA08F300DB605A0FE950D76176D31B7225F7E13866FB57FE5DC, 5FCBC3C27E8A2E16B95CA9BF832A7EC4186429291164CC134F6DDE96DA9240F13561D5E84FA4EB13A1E41BD6837B4CFA -4D5EB06BADA9BAE610537E5CD0F413B2EB223D61BC39E5AF916EB8D2261A905A221, 2D3410D1606FAC3B4DBF1265C82F2D5F211035E0C2E928D0A9D151323F7B32360E52238D422679200EF62DA2E6C36013, 79B4F256438C02B3DD0A5CDDBA9E1F6E18A9D669D3652F8FADD79A530F8C22C54029015F15B1094179AF5D9B4B9089E9 -E81C114308FD30B230FA7B1672DC3B18C166B82534ADB10EB44C2A76724FB10E663, 172FF498DBFF706541FF31AFF32E3EB9F07FC81748CD84A8AEC1EE9CF35C2E17407A812DDAA5491E32E83F69AF427086, 6F67F66B7BD3FFDE4C80AEEC026E31D1D7CD459A6360ECD900A879A8BD427D340B0A925DA83654C9855C04910B11768E -2B85433C91AF7921692EF71435894B14A4434286F9E09132C1CE47F6356EF132B329, 31626266CF735F78C5A9BA98EF6A9EB3B714077365DEA9ABEDC4CBFE1812E4F819B5FF3123A2A7AC683EA42E578B6DA7, B0FD65EE7A38E4A4389412811F42A0FB7B223183A2292FA0CD8A5C66F054C987D8C1FEE7A571A2B45D8BF126BC1BE5A -828FC9B5B50E6B643B8CE53CA09BE13DECC9C794EDA1B398456AD7E2A04CD398197B, 49B9BE9070D4BBCAEF23333DEAE2A7E39846EA57C853C59249048D6CA3C72EF8AC5C159B371E16F599BFAAA358FCCFC9, C440C717EBFA22023D74BE6945C7F0040B52029A42AC9FDEF1EF3675478C56F01B71AA26BFE0F30E7194C4A9226839FF -187AF5D211F2B422CB2A6AFB5E1D3A3B9C65D56BEC8E51AC8D04087A7E0E67AC84C71, 23D7F597BBA17B451745CA23428D62BA70713DD5B5B5B8FD060BA4D7070F3A8530996EA96CF6C423FEE9F1D28B12C222, 1EB5C7A12590265923F5C803E51052B75479B2AF848C4FAA898C9F93132C3731BBB62E20B33F7069645A6B9802140E57 -4970E17635D81C68617F40F21A57AEB2D5318043C5AAF505A70C196F7A2B37058E553, C52B3E6360111931BBD8070F79BB3F2B1C594D7D8F2900AD14243F19A9D5D739FAA0C88F30D7C6BF9F9832B4230D8D71, BB82ECF98204BBCE23A794D5D049C9925C1321E8F7EDC9528DCAFE06FE96ED1E11C99210CFAA67AF4A70B5551E95B337 -DC52A462A1885539247DC2D64F070C187F9480CB5100DF10F5244C4E6E81A510AAFF9, B2609AFC57A8238AD4A3C14077736B32493452C962D369BA4ED8182550EACE70252EA9DA790C98767F46A8603EC0A53B, 9E83C5FA32789C1E8BD7DBE04D0B96780C93EFF30FCEDD284D023E588FD1268CAD987F5698362DE3ED24D9BF3E29EC97 -294F7ED27E498FFAB6D794882ED1524497EBD8261F3029D32DF6CE4EB4B84EF3200FEB, 2AE916732DE7DCD8C8527890C10AA218688B578078A25033CDBC57FAFE79AF82E308D860BEFE747EAE19F5ED8FA9D136, E5993D6EC3EA6D8E0CB58D40379B6A0C489D455F9AC54297A41D20CBF958CEC7B35A0259E0E244FEED1EDD5EA86B9AC3 -7BEE7C777ADCAFF02486BD988C73F6CDC7C388725D907D7989E46AEC1E28ECD9602FC1, 7A74434DB230C40AAA6E6696EB973AA6A02BB1A85EA9B403B21B7F4F83404FBF79D11B4DC4264C848EE9863D49DF631A, CC6DA04984781D57199BB36EAE63B650402DEF1968216EE194BA36AEB176B7BF40DBDE28F6465ECF3371F040B9A6AFF1 -173CB756670960FD06D9438C9A55BE469574A995718B1786C9DAD40C45A7AC68C208F43, B8F7F463E8DD26A1A5FB48D3DF0C08A4F2ED37877B4A055FE4DBE0BA4E8761C1D572BAADAF2A999C4148B41DAC692700, B9141FD5AC249FCEF63CA1E13852ED4A874314E74C8F7F1595F7742A8626D2852F9EAF31AA1986C3E57A80826D3F4C58 -45B62603351C22F7148BCAA5CF013AD3C05DFCC054A146945D907C24D0F7053A461ADC9, 68E34CB48DBB00929D9BF6FCEF98A117BBD510C2564FA29FD2735680550BAB2CD93DF8AE1E6A4AEF1156A7093BDD07D5, 74FA37802F53F3682BF03F2BCA48C833A7B40D1AEE181FE764459A62EB99AE94E0D92048186717CCF2AAD7C483F6BF19 -D12272099F5468E53DA35FF16D03B07B4119F640FDE3D3BD18B1746E72E50FAED25095B, 4BA1856FE53A35E25635AAB9F080EADD97F9C96CC49D01293F6178F5B09B736C69692401143D1200CEF4E8B52C5984D9, DD8D0BBFF3E6511AA4530671F525ABABFEA2C5D4500C151029232172FDC69CE5C69BB53A2AEAFE99C8F7FCE1EE25FECA -27367561CDDFD3AAFB8EA1FD4470B1171C34DE2C2F9AB7B374A145D4B58AF2F0C76F1C11, 23C4C7322C274C1FD10B4AEEA784FA4C8A7A8E72536EAE3F8A97EB3FB1B2B8D7E880A39B3B0E4DC95F1C704F0ACE2F38, 36FB622E09A43F62A4C543488A3239F341D231115C4BBE0D7577883A109ED94B19974D2B87B6D1A324DFAB73C6DAFE03 -75A36025699F7B00F2ABE5F7CD521345549E9A848ED0271A5DE3D17E20A0D8D2564D5433, 29E716AC4CF5EFA90E79D99EED9DEEB46EC39229B477F887175C6A68CC6345B5ED1A760FBC997E6CF3EEE584679271FC, 2DAFEAD17CDAE27C83A8ACEEBEBD1655719C74495B1BD05C123254CEE24D348B0E6C3649409F391AABE51E6006E45A5C -160EA20703CDE7102D803B1E767F639CFFDDBCF8DAC70754F19AB747A61E28A7702E7FC99, A840D7F9FEB2351C3C6BF1872AC022AC068F265F3FA0D814762119C514BE0010F62DE741E466AEFD5E7F72190AF5C7D, FB0E5DF0996F206E7154411E990D83D0E73397A27FA795B814B68B344F172248B0F1B7789840B792564D83AD898510BC -422BE6150B69B5308880B15B637E2AD6FF9936EA905515FED4D025D6F25A79F6508B7F5CB, BF0DA77B49FBB8EA2BB433C8873D96485B4A623820B8FDF825A34B7BB5EA6F0C415102C6BCE038424BF3D313BBD3E7BB, 38F81B9F33DF390BA1D1001A09530E35E77F91FAA3FE35CB5C95FBE7DB45E89D9BD081E98A0A1D7250866B27030F11D -C683B23F223D1F91998214122A7A8084FECBA4BFB0FF41FC7E707184D70F6DE2F1A27E161, EF1240F5396B769ABB10781B79F9A1D04C94B089512298B1EE4A1E5073C21FDDDF9EA1106E9C73DC0C27636F6B11993, F0451FDAE15BD55E1992AEDB6D907DD0A6EEF5E9A0872BE6042F8E848F536180FD13EB71D792E0F8FA485C8F658BFD13 -2538B16BD66B75EB4CC863C367F6F818EFC62EE3F12FDC5F57B51548E852E49A8D4E77A423, F3B8A70AE9920F885DA2487B839FCC238E78D3D98B24EAB8B29F329159AB1A28557B0154C92F7268CE9F48D8C47DAA92, 7C544793B5EDD523D217EBBB4EA3C36F8075B1166C06567F6538C3FF5212EC7AB422CEDCF5B4CAA86DC9CE28E780F66 -6FAA1443834261C1E6592B4A37E4E84ACF528CABD38F951E071F3FDAB8F8ADCFA7EB66EC69, 5B9900B2E181437F20C7371C9EFB6DDA9709AB3E8320AD75BEDA3D0A2454F5B84CFB98311F0EB15CE447A395482A31FC, D16A898817F2C9FB2DC857485F9BB615A5AE7258BD5992A565FA74D2232FD754E70EA35EAA181355AAC3374B5BD9FED2 -14EFE3CCA89C72545B30B81DEA7AEB8E06DF7A6037AAEBF5A155DBF902AEA096EF7C234C53B, 3B8F1CE353ACB011F49C9064C619BAC0DCF51E18ABE28DEA414A81531A565D5BF948659CC68A92060658E8706B1254B, 6E9316CDD398FD11D8795CA47382106FD573838D14E6125F228D75F9CB9C0658E4583CE3C6A72A977C29F3F89141FAAC -3ECFAB65F9D556FD11922859BF70C2AA149E6F20A700C3E0E40193EB080BE1C4CE7469E4FB1, 6AD6980445D9CAB83CD3537B2EB1672E3FCCFAFEEE9B71367E60A47790A0D46C1DB962810D734F207A1422034C055926, 61CB8721438BAA0F4135DBCBF1FC357611944DBC71C99436874AA3CE288410C02CCBE22225588524E21794FE443C8DDD -BC6F0231ED8004F734B6790D3E5247FE3DDB4D61F5024BA2AC04BBC11823A54E6B5D3DAEF13, 16F274584C49E3A1F20AF403B4F8440FF0D6AB32A1A23C07DA5848183CFC509401EFF5114818FA45ACB81903040C2EC3, 23FED4B22E70E6EA699F33E154A861E4AC2782AEA62D54D7CA1FC5893A584CAC39443F8FAC3AFBCF9C1B07386C209D1 -2354D0695C8800EE59E236B27BAF6D7FAB991E825DF06E2E8040E3343486AEFEB4217B90CD39, 1A5825D393E1A47191EBA134E7D60FF6113489F99384AE7000844A47EF1781079572BFA26BDA0D2951C7BDA1FAC20999, 752EF2C8EAB59125A80DD0FE3C442A2E0D50A69D7E01BF0DFC3A98413C041CA449B8BAC885BCF6F8BD58C604A12B6967 -69FE713C159802CB0DA6A417730E487F02CB5B8719D14A8B80C2A99C9D940CFC1C6472B267AB, 3B82F8F2C80125EE2A43235037F5B95373B0422FA2F571B50F88EB80C2C8131C8D8B3F64DB9FA15CE443CC15989B2BF0, 5D6B663E995289465BBA3CB4288FE2931243CBBAC8B11A24B47F1C9D8796FA8DAB75973446211400DAB640F13E6EF994 -13DFB53B440C8086128F3EC46592AD97D086212954D73DFA28247FCD5D8BC26F4552D58173701, 6D23BEF6019F6DBC92F4397AF380D0BAE72D88EDE78F62C1AC8A66A5B9F7423F3A57362503C9AAC6BF098F3863BE678E, 15621BA770C918EEAC97C8EC21C98FD27DFAFFBF9A2993AD6C111E0070A2E7140ACCB878C2FD39D0D32346C7C4231A47 -3B9F1FB1CC25819237ADBC4D30B808C77192637BFE85B9EE786D7F6818A3474DCFF880845A503, 516A07F49BDDAC28057A613D5C5E8B3DE0B7D33F3DA6FA38DB282959CB5D0DEF0656CB453815DB5D27E04DEE3D5C4979, FC0892ECFD57BCB0BED19F4E9391CEEFA5867C2E497A0B8D537A5B244985A305DEF1E28BD873622A1FCC9DDD20D69B82 -B2DD5F15647084B6A70934E792281A5654B72A73FB912DCB69487E3849E9D5E96FE9818D0EF09, 663334009EEF0F5BDAC82A98842DBA6C290AF03FDED8E8933800DFC77CD1F21F47E19BE9F0E916D6ADD5458FA9AE757E, C145C26410F722906D5AF84E072D953B6BC2A07C6C8966008FD38D12D1B8E514CB467250F0C5BC0CF80D4FF056D1ED2A -218981D402D518E23F51B9EB6B6784F02FE257F5BF2B389623BD97AA8DDBD81BC4FBC84A72CD1B, 695892E7A578108D9605017456CCC44A0228E3A0CEDEC67A8A5CB219F35626A73228C602DFF9600C2481E1A52F881B5, 803E5E1E1BE9ADF9F8B30EFDF941BEB8AE011BD1C2E4C6AF07D20ACBB88E9DA82F24348AB83E3941B75A3D0008A341B2 -649C857C087F4AA6BDF52DC242368ED08FA707E13D81A9C26B38C6FFA99388534EF358DF586751, 8B86E7D53BC4234563A036A2AFA90A98A9FDF86687A4C3BD60878AEA479DA1EC10A9821CEEF5F50F4C72CD8B58D64452, 2BE84EAC8BB312E4B313DD09E302854C38BDF82A1B5E9C0907F1477D8AC09E0E1C77803827E5E0DCCDBAF0B309E37330 -12DD59074197DDFF439DF8946C6A3AC71AEF517A3B884FD4741AA54FEFCBA98F9ECDA0A9E0935F3, A796AEA61F3BB341C35F547715FEACC5AFDA9D48985E424B89251D9BF11C99A5B10F32A8FC31FF136D016E74E7C7415E, EDF583406BFB78341830245DB5EEC7F601CD84AEB9D045A6F1B0AEF7114F5B7D4A6C9A1FA61A3D4C3A16E2FA1056E191 -38980B15C4C799FDCAD9E9BD453EB05550CDF46EB298EF7D5C4FEFEFCF62FCAEDC68E1FDA1BA1D9, 4AE935C284776ACD166F4C343D5D12720C1BE8C88CBB9C7BE9EA1A70466C47A58CA7B5A2E5B8FBCAF23C0DAFF65CFD31, 91F85E4F305B7F1716C9CD45AFE07B797E70EA8B823F25721C58BD89EFE71F7C978D4B1180D7A88AD6883DAFB5B2D40A -A9C821414E56CDF9608DBD37CFBC10FFF269DD4C17CACE7814EFCFCF6E28F60C953AA5F8E52E58B, 63F40B7C626645481A5B538C360EB288121A3EEEA90DCAF7177E7DF8041655109424A7BBDE730D1E09D690855A7B4A1A, C28E69941D0632596D822EC58B9B6AFB16E303D3C63302A9BCEDD5A96E06B683E6ACF1BF544C83893E9E667A425BFFE4 -1FD5863C3EB0469EC21A937A76F3432FFD73D97E447606B683ECF6F6E4A7AE225BFAFF1EAAF8B0A1, 8431F65646F1A9FD64333DA2687925C55EAFA25A69E476E3DA1CF415A1F05DB42C4C05EA4469179EE0F90C2D70213DAC, B0162F02D0FF9D64A3F6F92C0017504EE441EA61242F1BDBDD6FCAB0EB2915B91C538D435C6D3F400315C42C60E7A4A5 -5F8092B4BC10D3DC464FBA6F64D9C98FF85B8C7ACD6214238BC6E4E4ADF70A6713F0FD5C00EA11E3, 720CB31D6AF250CE026759C170577B008337D57F53A751EF3A9FF29F89601490E5F69EE0E2344481AB8C8809ED64910D, 7483272A9609DCB8BEC8FC7127F05F6AD620E65351DF224D768740B155D7D13BBBA239B38640AEEA65D5FEF11C39326F -11E81B81E34327B94D2EF2F4E2E8D5CAFE912A57068263C6AA354AEAE09E51F353BD2F81402BE35A9, 3DF3D364A95EA24C74117A960CD50445ECB524933484713A87342B06622B975313AC26A82357C46824A50E983E794194, D8008224ACFFCCBA4A2978C20794F25215FE7A5767218CF26B017EF7E1DAB692E2A2CBA87E7A95D3BCB35A6110412906 -35B85285A9C9772BE78CD8DEA8BA8160FBB37F0513872B53FE9FE0C0A1DAF5D9FB378E83C083AA0FB, DF2C5508681B1AC68D71B67556F13BB4A0661BD8266593FB948379D2CDEB836B49B5170A9C309284ECB59929B0AF5434, 906F784289214F86A978A719108537B813E3285290705F2F2E10D617554B898F98B72286B96643D7B17D6BFCCE75E72F -A128F790FD5C6583B6A68A9BFA2F8422F31A7D0F3A9581FBFBDFA241E590E18DF1A6AB8B418AFE2F1, 7B07D208B5A058E7D09112F3A875A58D0D080BEF1F931D83C6F276F85398FB7ED40DD192F0315D7AE8DE0DD00E40143C, 1A7551F40AD14AB1911F794C368A53E6735C3F3A5EA54DBEA88D99BF4CDFC051BB6FD19185CF15ADE25859E4C82AFBA9 -1E37AE6B2F815308B23F39FD3EE8E8C68D94F772DAFC085F3F39EE6C5B0B2A4A9D4F402A1C4A0FA8D3, CA85DC8914314A4F365B1F278F28E0A74EE41E7FC277861406E74E23F6B6FC1A4BD2C3858C71098296B98CF738F47105, 4A964F885C21C5F5D39EB292D2449571D1255459696C4DC9C71CDDBE7408538E33DFB7931530F27DE203B1758AF5FBCC -5AA70B418E83F91A16BDADF7BCBABA53A8BEE65890F4191DBDADCB4511217EDFD7EDC07E54DE2EFA79, C1B9607B4E9DE23B63A46331D0C4B5AB9E6EB094EFD7552081A6B2457024209B108BCD6CEA1174282BD06B34DAF330FF, 5B1C62CDC41E849CCA465468171DB1F5484A0EC6C62D5F94DB5C2FCA5CA6D65322A6F36375D810BC5CC972185F843728 -10FF521C4AB8BEB4E443909E736302EFAFA3CB309B2DC4B59390961CF33647C9F87C9417AFE9A8CEF6B, 8B8B73F58F59088BD5E624F68B426656FC6D90812AFC7AE3D4E28F3532F218C65D21BD545D325C4B6A6BEF298894ECD0, C700E0E02F65DB161A44B5A83492654FC519D1CD37C190DA83077452D21681DF52F06DC3C4C44B830A115BEA40B96A2E -32FDF654E02A3C1EACCAB1DB5A2908CF0EEB6191D1894E20BAB1C256D9A2D75DE975BC470FBCFA6CE41, 440D5BC580B0671558717901C5D909422E72AEF58AD0CFF4A2232EC8BCD98619E81B131583F8F7589DB5DD58D9E557F4, F868CD69FFC0AC254E75BE18F5650456EE793CE63DECAD62F674CB71A9B80A010D46B5E4A9CD3FE2DE626873F7E6BE5 -98F9E2FEA07EB45C066015920E7B1A6D2CC224B5749BEA62301547048CE88619BC6134D52F36EF46AC3, BD75A8FD05141C42E256A896D747F31E1FD5E4D9BBEBC6B03AFAF2D787A060582C097329F581B6D39B0A1505FB8A6780, 9E26B1552C65DB9475D1BBA9911355EF925895C906C9C836160192BAAD415C0B1BE80E280E19A3C60B761AB675308060 -1CAEDA8FBE17C1D14132040B62B714F4786466E205DD3BF26903FD50DA6B9924D35239E7F8DA4CDD4049, E5FAC224173981787051EABC0D28F0420B0DC0859F0675E306AD76AF737F5D40821AD62B59035EC94AD2BF9A72FF7A9F, 39F695FD0A751F8910AFF1ED0C9CBA4AD1015C9E098078532E5CB579357277F29D61039650B90D3AC4BFE6C2A34FCE75 -560C8FAF3A474573C3960C2228253EDD692D34A61197B3D73B0BF7F28F42CB6E79F6ADB7EA8EE697C0DB, 2889DF3262DE61C93D8A9AC7A33E9EC88268D744788A4ADE8AD19102E3F647725C622F80AB654275CDF450239027D9A7, C330BB3D4BD5914FD431AB21612DE48893A1A3B25BCC1E9C03E926280BBFE5E5D8DD7A71449707B11B818C6035CB1ED9 -10225AF0DAED5D05B4AC22466786FBC983B879DF234C71B85B123E7D7ADC8624B6DE40927BFACB3C74291, 807E3BF550B32E277C88533440666708A429FE39EDD1FDBFEE02FB855AD4BDBBCCF91048F74A61026C44F550BDCB305D, E7B5A99A3C298578676B57D21B9FF5C0B2A499B1494016860F14F781E21FC883DBD6A5D6F47E2E6143E1BA2CF2E22F58 -306710D290C817111E0466D33694F35C8B296D9D69E555291136BB787095926E249AC1B773F061B55C7B3, F7EFDF8EBCBD56156CA8D4A9F5568481919826980B4F7E667C00FB84360BDC99E2463C7A617B6B81FA6BA95E9E88C098, 327A298A1A2306076C1CB70642AB1DD09A26502D450D370BE6D7976651839A483F015D9042F6906D595FC75C80005097 -91353277B25845335A0D3479A3BEDA15A17C48D83DAFFF7B33A4326951C0B74A6DD045265BD1252015719, CD8AFA2E883373AB1647AFD64DC8A80F61A2003B3A4ABDC2B7576196475EA14E434A874CF46A58F68396B918B1109915, 5A3BC4B19FF83A1F3CCF539475A8A4A0E50F9055E3B381D6A366F4DE1E5E15E7C782ED26E192158E0DFF52934CEE6FE3 -1B39F97671708CF9A0E279D6CEB3C8E40E474DA88B90FFE719AEC973BF54225DF4970CF7313736F604054B, B778EEBEFF27BFE361B2C919A12EE43AF10DE8A0F09F77C682917949CB68AB1A47B8D9C3B414D493A41FDDFF0960B378, CB71031FDC86DF7AC19BD60BCEBFB1B6934E662F83B41326C8247DF23F3ADBC857AD7105E9BE30D96FBF7F5438C7E1D5 -51ADEC635451A6ECE2A76D846C1B5AAC2AD5E8F9A2B2FFB54D0C5C5B3DFC6719DDC526E593A5A4E20C0FE1, 7150F2DBA77739F4177B6564316E12B6316CA42EE135DE214918C4AF468C07AEA8A7F7378689BAEFF4D334D04D418479, F5D215B075DD96B5DF1CEAE9BFB8CD5B77C1D9CE8F28E78A3B000FFB724D6F1D36F15CC6C4138BE0503FE49504F14D9 -F509C529FCF4F4C6A7F6488D445210048081BAECE818FF1FE7251511B9F5354D994F74B0BAF0EEA6242FA3, DC61DBAF71F48C4FCF89940E18949B92B8B6DD2ED84597727FC1676B21D1A6F2C317995A9F3FD7F35ADB0AAE0F17F7AE, 330C903F413F78030C1301ADEF491CA62A5EED46A7B6F3AED2D0124FCCAB7056C25582139A05EA9CA06932A257E7659 -2DF1D4F7DF6DEDE53F7E2D9A7CCF6300D818530C6B84AFD5FB56F3F352DDF9FE8CBEE5E1230D2CBF26C8EE9, CA764475D35AC4A15EADBBF53EBD3D8694B1E0A832793BECE7CDEFCFFA11E75A5DDF23CA2433BC3DED213DC364E50D1C, F0F6559FAC131174B886F2BF1112759FD0A21F9F9991001AFAA28C72D11C62807107DEB6F256A2E0EA935333380608F3 -89D57EE79E49C9AFBE7A88CF766E29028848F925428E0F81F204DBD9F899EDFBA63CB1A36927863D745ACBB, 4385C0B8DC024C0E4E891F56C58987A8DC44A92F6F1CDE15F327D66EDD3A2248D6A733A913A0139DBA833235E6A476D3, BD8B69A56D688E8DDF2E696E363F1C119FA4F9102F4015E99E37C821DD8093984D1888CDB3A45305D2F25DDDBEF2E0A7 -19D807CB6DADD5D0F3B6F9A6E634A7B0798DAEB6FC7AA2E85D60E938DE9CDC9F2F2B614EA3B7692B85D10631, F26EEA9694983171D70E3A5A4FBF178A08C1C087B5452BEF59490F688D3972FA8CF05B9DBB4DB5FC97B71EF47EFC7745, E14DCD1F6B3392DA3E2D39B93D9042435393206764228FC2E07A5A0C9D95655D5F5915551AFC31F8BDE0873A0D2F4F62 -4D88176249098172DB24ECF4B29DF7116CA90C24F56FE8B91822BBAA9BD695DD8D8223EBEB263B8291731293, 469B1D8A201CB9C63D915BA76C776B04DB67DE4A343709F8FC84C3A7569757A14C738A89D1E093FAC28D84E81098C208, 4585BAAFA636261C5FD8B417B98183E8DB4A5FC31F15B9F3607BAB58A5DAA4CDFDAEA9EEDB2C8423B53EE439D630E9B8 -E8984626DB1C8458916EC6DE17D9E53445FB246EE04FBA2B486832FFD383C198A8866BC3C172B287B45937B9, 2224A5B8D0E6DF5C14303F40BA3FEC51120D078CC9E2D3E085FC2E002D79344B5432C0D78C179B5D64B3D26C29E943AE, A055CF02A96E37559A219599FB3DED8D753DD9AF7F2DD3073D6D60DB00593058C12430BAE9668B7F5B1F3C7247121581 -2B9C8D27491558D09B44C549A478DAF9CD1F16D4CA0EF2E81D93898FF7A8B44C9F993434B445817971D0BA72B, E97D762CF98BE3BD1D4421FAC2EDB20F4E84E6D938BF969AAB005123AA6FB407164013C9C33D9983D11D14BD922B7929, 31842B2BE7B7F860187A6D89515656872296A3E190933868AD6B27035F6B8A5FB7701923243A802D4E9625A0209F9CF4 -82D5A775DB400A71D1CE4FDCED6A90ED675D447E5E2CD8B858BA9CAFE6FA1CE5DECB9C9E1CD0846C55722F581, 25915C50000731C1EE573D1977A5B8CC724F0663838BABE67EE11980BDC2618AE387874403DBFC0D3AC4D0DA4CA078A6, A3B49BFEC66C5FCFCAF2ACEEE28A8D01F4D57296AB730B650F488CA03BB3C90E758BF6558DF5D9183920CEC2EF5A1A7D -18880F66191C01F55756AEF96C83FB2C83617CD7B1A868A290A2FD60FB4EE56B19C62D5DA56718D4500568E083, 68582E393203364311515678FD8679A1778E6EF1D69EDBF93F45ECCE63B6498501ACA1EFAEFDAF7433B3A3FFB6208CCE, D34FEF465EBAE7912B706EE27B62BCB27D9A44886B3FD502BCEE62F043383335D1A1209B5932CDF9EC4CB31B0E154E28 -49982E324B5405E006040CEC458BF1858A24768714F939E7B1E8F822F1ECB0414D528818F0354A7CF0103AA189, E319DF8E341DA59683C28497E8F01110A036805A0547AC8F0550A5DC0A98A315C19664457B517FC68BA31E498A593FDB, D28C5DCB4664862FDEDF90C3C9E1C0E187D79F2994F7D1B24E1431D5D037A69D65EF285EA3E690474B6DB46FE06F10FC -DCC88A96E1FC11A0120C26C4D0A3D4909E6D63953EEBADB715BAE868D5C610C3E7F7984AD09FDF76D030AFE49B, D904A712CA3DE0A765BC1E4324D6D501B1E34C0C8223D8A51CD12BAF9F6EF03F3D02BE88AC5A9645C1C91B132E2D8EF4, 25F54CDE887A4DA40FE21141E431B0C4D4985DBB7FEAB4B7FB2070AD309A78AA21DDAB4BB1A34BFC4F29C47C5F1A9E50 -296599FC4A5F434E03624744E71EB7DB1DB482ABFBCC309254130B93A8152324BB7E6C8E071DF9E6470920FADD1, E1030CF841E5BEA460A2BB2BD04162CAC55629B2424D04DC0F653EEF2D139BF86EA6E885A8B7BFA30114FA978733FB26, 6A4AE9C945427E1CD30AC2C2DB4CB0793DC9A1FC31A587EAE1FB86DD800A3758B4C44C3013F815691019DE1EB343B716 -7C30CDF4DF1DC9EA0A26D5CEB55C2791591D8803F36491B6FC3922BAF83F696E327B45AA1559EDB2D51B62F0973, 552AC5C872630618A2DA71D90E05B80D707262AFFD89B7BF1379911B43AE303EE4796FD4C11D9577D20A78D8F8A07670, C6EDABEB5325FAB19B27AA2692CBB58A4AF57642C7E35435EE1A118A618C6FF921715D62FE85404A341877F6429BEB31 -1749269DE9D595DBE1E74816C201476B40B58980BDA2DB524F4AB6830E8BE3C4A9771D0FE400DC9187F5228D1C59, 22541C181BEF319BA4DE0F5A38E5E3AA178683D7359594C9834A698B4882F8EC933B0C2530340861A6458ED7AA3E30E1, F10BADAD71BE09E1B9DCF0D56C22CF5C0AE30DBC3293B97C9F0C76F0A209F72F33CA699D0E24FBBA50F8E73440C920D0 -45DB73D9BD80C193A5B5D8444603D641C2209C8238E891F6EDE023892BA3AB4DFC65572FAC0295B497DF67A7550B, 702A63CB0B2FF15F9319DA8A4CDA259AFA8494CF9F1447B743EBA7EE13BF717754D0E7D207B86F4B1D3E1673022ED9B, B21CE14F336590C7B851224E5C2E480932792034CDD49464EA85C8AAC6FEBF2BE68A7B7B7ED28166FE99741D9456A47F -D1925B8D388244BAF12188CCD20B82C54661D586AAB9B5E4C9A06A9B82EB01E9F530058F0407C11DC79E36F5FF21, AA9985D7AF3E2FB935029511CDEA0DB144B3D8D67E523E98E23E2AAC3469B46DAD414B4522DEB39EC90907851C9D3CD6, 6513494B1E10AA85D4DBFE8992F61A1140A1E7D066DD0C2E7C5C34DD8AB649D31A555A41CD06DFAC4ED92FA325FB748A -274B712A7A986CE30D3649A667622884FD3258094002D21AE5CE13FD288C105BDDF9010AD0C17435956DAA4E1FD63, E8C81D1BC1C3FF2CCEF60F5029D4A63BCD22FF762032AC65B302A0445F11A2EFC60E46BCE00D714E0A246276E9706428, 7B5565840FB95A2D76313483E2DCDF4B17F0F37C6E67B9A998937791323A310D3E75C30F8E40273544F0ACEBCAAE4F9A -75E2537F6FC946A927A2DCF33626798EF797081BC0087650B16A3BF779A4311399EB032072445CA0C048FEEA5F829, DBD7AB5BBA5A5CFBAA7A1416BF065B07B7E3325742AB9BFDCBF78DE111FEABB9F04532FE06604D6056CF61336EE1750B, 66A3559D318D264DFEE5DF77CE521A3F53857383B89800757866D78B64173F1C3F24206DCB8905F5AC0E859ACBB71547 -161A6FA7E4F5BD3FB76E896D9A2736CACE6C51853401962F2143EB3E66CEC933ACDC1096156CD15E240DAFCBF1E87B, FA533E8AA1FC1203A3C8D8E9A9405C71699B75EA71CE0B1246ECDEB000B1BB8117A1377EBCB2A431FB63F4E0D90CE06C, 23A480D5A4C528A8B9A8D790A03D9FE76D9CF8DA3C5370C810B62A1C6F28A0169B3EF0933484DA685DCE40CC5E2D6607 -424F4EF7AEE137BF264B9C48CE75A4606B44F48F9C04C28D63CBC1BB346C5B9B069431C24046741A6C290F63D5B971, 8BF66C05DB5448E6BF481285A14D38ACB18740BC28FD8F77A2CB3049F894F14F6565A0C2E7DA29E387C191B5E3E19D43, 637CEBAEFA425A2C23E6167589A0D68DDE19AA465F59A1E08C46A64383A1A4703FE0510ACB504CCF2129479EEA3ACEE -C6EDECE70CA3A73D72E2D4DA6B60ED2141CEDDAED40E47A82B6345319D4512D113BC9546C0D35C4F447B2E2B812C53, 9F776F4942E963364B571CFE0F2743030869C03A56D35D0F3928F43EB2D9A2179A6D3D4F2BACDAD96F3304EF7FA941A9, 5B0D270FD2C9BDEC2871510D56B5386D52B2B0911AA180EEB027802E5A25A88674C3CA0A42C204E73411877DA612806D -254C9C6B525EAF5B858A87E8F4222C763C56C990C7C2AD6F88229CF94D7CF38733B35BFD4427A14EDCD718A828384F9, DAFDCAE4D6C475716EC405C348AC9A2343D5D67F9B10082B4D3E2675BD85E32785D536C13BEC607D41410BAD609742A1, 2837910E8A7C8D3ADD8BFD714FF5730614698C4D32B8A9828C42C28869F90254DBEF41A5E43B71E78A2069AC85B05666 -6FE5D541F71C0E12909F97BADC668562B5045CB25748084E9867D6EBE876DA959B1A13F7CC76E3EC968549F878A8EEB, C47B4D6351C30544BE020706A3713B8C9BD48BE44FECABDF134B45AC705B7AA5E1D2E0A4C5CEC413591A93D5134AA50B, C9CF3149AB16FCDA4CEE3BBB757AED324007869C47819656EEA647EC16F896C9919E7C58624BEE371C8D4097A204E42E -14FB17FC5E5542A37B1DEC730953390281F0D161705D818EBC93784C3B9648FC0D14E3BE76564ABC5C38FDDE969FACC1, 4D466DECA0E5F2C664B1C170485D0435CC913B4CEDCB8904E7EC68025C5E24F54250FF8EBD1AADBA575CAE796BA20E32, C1B53467F914F7BE0779A44AFC51735B26B644A1ABAFF7027BF87BE11FD80B816CAEB33C735ADC55DBF4C2118608BA58 -3EF147F51AFFC7EA7159C5591BF9AB0785D27424511884AC35BA68E4B2C2DAF4273EAB3B6302E03514AAF99BC3DF0643, 186F34F7D45ACBEF7F7F7F93C57758A2A578981E9939AFA22AAD14879905E3694737867BF73633CF9F7E25C6A598FF24, DD0B1F68005D3588418D13E69D343B10722C96285A12B139049B8D3E1644C2F110D36BB7F919BC40DEB99EAF443D3482 -BCD3D7DF50FF57BF540D500B53ED011691775C6CF3498E04A12F3AAE184890DC75BC01B22908A09F3E00ECD34B9D12C9, 8F6F64EA2755FDA51C99A50B57D7F438DA05A117322884A8F7F7928BA92C78310EF578005B1FCC2FFCFFE79C0802B2E4, D32301BC33B7B167EEAB552E05A20AF64E86E65986D5961C9E9EBF56F4D7F05D428EBDACFAA30907C50D18E3E7F7927 -ECC-528 -1, C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66, 11839296A789A3BC0045C8A5FB42C7D1BD998F54449579B446817AFBD17273E662C97EE72995EF42640C550B9013FAD0761353C7086A272C24088BE94769FD16650 -3, 1A73D352443DE29195DD91D6A64B5959479B52A6E5B123D9AB9E5AD7A112D7A8DD1AD3F164A3A4832051DA6BD16B59FE21BAEB490862C32EA05A5919D2EDE37AD7D, 13E9B03B97DFA62DDD9979F86C6CAB814F2F1557FA82A9D0317D2F8AB1FA355CEEC2E2DD4CF8DC575B02D5ACED1DEC3C70CF105C9BC93A590425F588CA1EE86C0E5 -9, 1585389E359E1E21826A2F5BF157156D488ED34541B988746992C4AB145B8C6B6657429E1396134DA35F3C556DF725A318F4F50BABD85CD28661F45627967CBE207, 2A2E618C9A8AEDF39F0B55557A27AE938E3088A654EE1CEBB6C825BA263DDB446E0D69E5756057AC840FF56ECF4ABFD87D736C2AE928880F343AA0EA86B9AD2A4E -1B, 160373EDF8218F9B6A762A4D4EB889E646F8739535D0E4F862C33F35187E135854D80B2123DA719D48351353AEDA0D3163CB215604492EC4568357643017002D68B, F1597050014DCFE1C5E5828401AC06A3FA9FD193C5CF52C3BB4A56F78E1A1B22011EFA491ED92EBC5413B874F4A8BB572E463FFE709D45ACB3F3E6AECA5D90B740 -51, 1D1BBA380289A7726BBCD7D76D6D63469CC842DE44D26646BBC45381FD72BE7EE8109F67171227B5C923577F6B0A4731872575A0B029A7B251E5A339416299C8AE0, 1703AEE0F7AD8244CC35BD69E91C0670F3E541C9CE6E3529B902A980E93172EBC8AFEC0368616E1E23B04B4D5DFCA8343EB93B0C8870F7A6662EE1B2160CBB90F01 -F3, 1CB253227B37965174617D5542FC0CA5EB142B4BCB51BAF2D6495008BF2C90BD93043A7377A937E1050B6BB117A81C461A34B14C0832AB26A2785D76462ABDC8B2B, 12FDF35A935AB3008E037D84F5B637C7A745FB21A00884834C9804B4CD3BAC49C9B1DE4AF315EB36E92E1E4A4AEA8351855E70B0BC4BA8904EA3E74E2A5F2ED15EC -2D9, 189607C1793AF3818DA32FA2F94A468BA69B3EE6EAB818B69F889101494155F9516765A8EA7440BE2930179D016B7DF6BB0D89773B072CBEBECFDCD196A56124DBC, 20FFF32EFEF92D8A2FF99E29C3724399CA1B0FC9430F672B5A82F7494787E4EF0DF0727CAB8B82250B0CABE69ABF34CBF4B194D03FD99CD85ACECE083F2B34E9DA -88B, 4E5EB103B19BBB84C89641B7E507308DEDC56060BFF03325AE009A4142D11438A3B2EA22FA8743D6B4AD2CEDB2F0578C98FB6FA857CE3527DD3B746316530116C3, 716F68F81916580A647CCF3036F3C8140D60A63D105B91AD0173BCF6F84CE0CA1BDB1D4049BB7263BE724FC920208014BCF75404D3300C1CD2CACCB07478308AE -19A1, 1D2EF46577B66170D9EF0F1F1486C3E7DEB985FEE76898575B630042DEEB54D8C3E934E6DF77FA7681CAA1AFC7A7C23053E87086932F561BE9B25FF70318BC495F2, 1B0D12E74EB99A8E16F0AFA3BB928B75D2B03E2889F84F3ABBCBAA77027198D5B8E2F72B6BF16937AE709C3026C74D26F2BABE31CE6E0294439928262D66A4AACDC -4CE3, 531C9ABE51563C7C779E89BB2404E00B47891DE3E465286B5177274B12285AED14935FFA8229705B3BD523C93421282EE4C544050F49A79285C61F8F311BDD0FB7, 23B671A070590887AD3388D92AB2FA6A0196BA044186CEA279BE939CC13053702BBFCBE4A8CBCF162D80DDA67E46EDE513B57E5B7D52FDBE040A91C497A2F35CE8 -E6A9, 1EC7605CD3363B524A70C0BC1A258A53FE8F61A982FA3E86337C2B9AADA6C3683717982A9546CD1CC02FCB1F1EB9CD45D91DE8CA29E61E8A88323A6E237A62A28EC, 17CEC602FAA9164AE7D8D342FD9B8A47848D1780F92CB00C221E3A32424DABCF89EE805D1BFC602BC6110012352A15185CC5513116E370B46057A8DF61D9A60F3E8 -2B3FB, CDD2F0F3012DF190BB260CC871FC42A9F17979A329D683503E59E7D4776D8F10F62C390E045D847E7FAF9AA1CC077CDABA6D87F4B1125886F25AFC4D6309199F5A, 417903A05C021068B2FBB9F2009317DC0B51D8A5A1C89B9824D99089D0958AD488C1001BA16E75873ACAC17E0CF711856929255B40B93CB2B95FAF77AC3C8EBF7A -81BF1, 3D8825CF08E2EEC0FCF1BC392D7019ED417E5DDCA47546B14A82F8D7F2EDB9D2DC774C0AC9E9F5478FF1CAE8CCAD02E00A25B8D8179B812D14FBEB962169397004, AB19E783633A89835F7389184681A605E6D5E4E3E9BBD55792E1F05A1EAB5B0F3F72F7333E659AC5EEBEDDB0F6D3E80922C19427CE4E391AAAB8F709613EFAB86F -1853D3, 425EFDBC284A04B79521998BD8199C9C2CA979A33CED4D78A27320B04BC460AB5F504FA2A3B85B09D709B16440BE80DA6391F448C134C2FA99EF5E7D6B0311852, 5B15B0C9DCAC88A1E0DA573948D3E637AC33B3D52B5C365B5F56ABF002624FF68CBC554C37706F33AD005CF0D2F07122AD3A35C8E80389DAFEBB5DBA489A1474E7 -48FB79, F4666458E61E777A01C5CA195BD0BC48C3BDD5F2721F624C448034CEAA54638D8574E56DF526A81CCBB4652BA243713F659B1EDA90CF2D7AB62BEF511B665F843E, 19450B9BC802D91034E580F9568EF80B45DA1F84C1DB1D1D55400D3D3CEDAF64CB01606F3D1EA3C06A5975B09E91173E1573C910F84A98709EBCC9ED1386687D3F9 -DAF26B, 130A85002F8B5DFA04E6AE28359493A64CEBA9CC6E69F799FA502A3E07CC534D9A1E7B3758B6A3C4F95088E03AA1619D778C833EDD1FBA196EEB6AB19FED3D64486, 18233CAC49290DD86F4CFCFDA74A217E141497EE6D3EFCCB1B32C46802AA3ABDB2CDFD3CAD19705580A2BC5C03D42F444AA8B9D98A51634F3B5DF048BDC17D633CA -290D741, 1A55360AB86673AF294A626616B918EB6BB916E45179AE4CB70F5981D71C976BCDEE1979FB76E3F8B04A60D1823E697D7C37168D34EA018F08A79CE901418186E26, D3ACA61B48D79BAF9BF060A0E7E1D9D99C8C1CBC3DE7F8E976EC0786A8075AF407C9B42CC9310D16CBB493CCBC8E816F6CB650C1F8FB5843E5BB43EF79FA639B82 -7B285C3, 15DA0FAD97C5664A014EEA2068AFEB285536825108BC34A61F087FAF171A99D33671EA45F649A5DAF48F34EF86D9808AD8C15FB1780C15399E1E4BED006E11DA035, F78B2177D18B6C6C5FAE8F0EF19C8FBEDB436A41E3495B8C6D0D7FB1FC714E946FAD13B2C1D440C6629C2CEF0766E5A159321C696603B575489CDB5495E69BD8AC -17179149, 1BA1C685592B7F42D16E61C809DAB11F052F214BE908009B25101E39E52F44FBFD0D28E679DF4B830F75A63FCC2EBD52AE1F74345E281DCAFD3C93F5F9F939788BB, C4A69AB266A89B3ADD952780C9B744ED9BE8FAD135579ADBA4E1985872E17A44EC68A34B179E2E5DD6B7590220F5D7629AED0A51184FDFEEFBE69754528F441359 -4546B3DB, 12AAC7907677FFC2B0EA828F9B62CC1D078295332C882FEF4E8D6D83D9774C84DDE3CEAA863B36916728CE0873CF8CAABF1122927922EC7DD748578DD1430F54936, 93DEE239B6A969AC8697F2E66DAF6D86DD382949FE36C628232FAAB7F8ACE756D35F8770B84C0CD91740263801B86EC85D84A707DFE8236920DAA0DB61DB0DA21B -CFD41B91, 1BA7B15DECE55F529F1860709D825B96A0DA2F1B10696EA1411B83E0B1A60AB48419D6332525140733F5A39EC66E9A7E6041CB291BB4A650D28E12E60901151E778, 1124E66E982013045FCBF3AAA04CF16E919DD9584A0ADB75B155569F037F037C9E463B4DC781BE70FCE6E4FD6D064A03DAFBAFB2F1B3BF98AC081A58D9655BFE3E1 -26F7C52B3, 1D5605150C9C55F2AD48D4DCDF57D783CD0FB107F899ACFA8044842BD3EEFF0E14C35FD9D6AF8F5C8CCE32652A44D0485F64D3BB2272B478A4052C07CE083645ABA, BC7178CA8B9F702147D51D9C227AB4ABEADC91CB315BFB4FA0741CEA14A1F093CBC1C9F08070E03E5A363ACCCE3526B398AD79A19B98907C4E83D2F020A615D836 -74E74F819, 881A1909C05C38ABB0B34FB973B0E7F2E67DC887E27B3CC5233F8B4537656DB0B174F85F345B26B26F1691A1C1308E1EA8A3CEEA5957566AC29923E74305027B2C, 1E266B9DF37F657891919442B7AA3BAD7918D1A5BE12CF04057DAB9F2A0548A4473C6114955AED0ACC4E193E185F762F16C8D135C43059083EFDF8FD2E04DCD7BF9 -15EB5EE84B, 1869716D001DAECCFD6765136D256680A68837DC68F2BD235F1A1AB286791F8488373122C50CC598CE10B86845BD722AC0ACBAE9ADFC3A75B77617AFB6481CAD729, 436FE2AAC82F0FE513573C6F2484FD302A46B3D4827BE3B71A26A909479436C9A58D7510CB4FA9435DB86EFB17230EDD1CACA27445115E7B061A62A924444D4B7 -41C21CB8E1, FE3826BD84AB28E075AEB1477999DAF32D238A95CBFF442C09BD1B5EF9447BAE6798F2D8F6FBE0C71CC18F1EDD5A0254D966A6AD84977B88D4C96EE48EBD457AB6, 98C16083605208DB3FB220383B4993E15F5C150B31386642F0BA05F8997713A9238E599628E12BC5B8383E658063394A7C20B0D24C4F7EE5294ABA596D5445F1C -C546562AA3, EC6F7EDA0EB724FBBBCD1642B71BBD0D40F7FE2E47D31C7D02A7AEF1BF89CEFC184B2B6AF7DC8AB5ED0520239EAEB949BE69BD467F0AAA56369A2113FFD5793B76, 846058E5FB3C6F251B6104B0CFB3874CB2DA880F88C48B4C454B1793F0683D21944ECF45D421FE165BF43C1F071FEF68EE89434CB7D540D49500747877255F60F0 -24FD3027FE9, B382CFAF97D0624BD9EB280CEF9DB56B0486194A4CCBAFCBD85AEFC95A12CB624126246F01D1540EA22E94779CA825FFA1DAA6178AC1304F86475D4BADA8D367A1, 1F2BA28968FEE1B6D87B34588AD9636ED261791F2DA1238C5D01A809A01BDDDFBA72C30526542AEF9AD883722BE392D083309705E1D0B79A36B7341E165E3C11B55 -6EF79077FBB, 1781C76DCF27574470E3DD260059BF8A683C7B035EE47DC890A0F22574D58165594F37D2D0723C39C72ADA10E51E5081C60DDBD167AB620CE3CD081BC4705A6D837, 45B969A054784E6F13E3EE16180E1CA0A8D181421D99CF8893A5000435456CABC0DCD5D2369C422D87018B15A81BCB33203A2E48D366D162CB5F4A4EEF0B4B0546 -14CE6B167F31, D3FED2DF278619FA7A3859FB70B813D86E67657BF4E7E3E95D0A8E7B018427BD5F105B54AF8FB6A72E7D8AB8BBD828E5EE05A535E8BE183861163DB1537496F9AA, D8157793E51CD1C45AF217AC773ED035065C5A3E78AD7B14890C66F2403091E7CE1DDDD95970793209CDF9227668A7BC620832D6A8CF8FD07787B1C5E62A1FDDF5 -3E6B41437D93, 1110B187C53AA1B25912B804E1011A16DC86D532691FC2C749FBD2071CE687322798D50FC7F3DE67A6F150D4CE081077F872532FEFA87CDA9A64090A9D96548AB23, 1345A97C14F469E58CB8B9598CAA1E4335F3AEB9174F57BC8D12ACB74995A881A5D4215D834C71CBA3B7EAEE8990AAE324E964A1FE99E4EBDF39D0E30B013E23740 -BB41C3CA78B9, 7EF65FB33141FC3CD577E83C6DD24C9960469C1BA9F8939E83C39E0C561A61C3DDB78B6709FFFF0CFB7300E4149D65554F154D5AC9401C6E6663D1B19B245DBE43, 15E0841BFC562819CF29F603B16F3B4B6ECBFAEA980FA99CAEBB586020182DD2AE3AD469D8E4506A620A261760A08E89D7ADFA6303676DD9B2A2C356A07A21E7558 -231C54B5F6A2B, 5C3F8CC55F447AF2EB183605C74A82F3C0503FC590C286DE08377DC1F84150692145DBEEDB8D94DDD70A2E3DB7C1B20052D9A38A14BF0EAD75E1AB7D96A541DCD7, B2E19C85DF2FA1A6D189A6C4F8F8691E3A535EEE83BC98686A80C6FC5E941AEBDF187964CB68FE5724FE84B51B5B14ABEAF7B9BBF4E9112E29A2F03F83A51D6777 -6954FE21E3E81, 181F180ECA59385A1C1CFD5D73D3D0933E21C3718F5D1EFAEE38A87731B9E337C61D4C1DBAC9FD9C817B1E0D748EC2B54B396C14DAE674D51F1D007A3331F1EF76D, 1A04D11D9CEF25742E0732AFC481E1D86ED617252BBBBCB2BB9E6441167EEB9F5EE4B5CB9DE320C12873A20CF3F9DA34658B3054E17B30939612BAE9FAB3A4572F9 -13BFEFA65ABB83, F09AEB4174243A39E411251C72FB8A141F53F78F6437A92D9F860E7773B8FA2581D9B925EC5AD1A523AE5905F7413745F52A7D8159BDA1C696829F251AC2C87D51, 1FECE716F47B3CF77F2C8564FD0EB11C8705635F31A9B9F456FAD7F7416D2A21CC59AAD8E3A7340F1097164E467224E7553A7C81A279187B08BD8797080334CB642 -3B3FCEF3103289, A4849FFBC7142570E096397E16381C45FCE90C3940F5C506A6DC4363D1A8491A13357ABE330BCE6A9764B8CC517D03038046481FCF18A503C5D8D5BB047311C816, 639FB120417256BB3CE1D55C5F5797D3A9BA21E9E2BEA415536EF6548C2214E80D3D81620702E7EAB848801A408EF6BC9D48C4CE90FC68C80566305D88835E6414 -B1BF6CD930979B, 12C0838ED0101EA04C5AF21B09C2DA4B3FCE8DB0067FC42ABA1FBF319CDEBF33A384BA9407A550C22572FCD41204B4FF01D65E29B9E875970CBEBBC8E6505849783, 1A2D863319E3AECF20C3E9D6F60624A87361177A696D77C559C3EF166240C6B849A986D2BB5214AFB3C1EF5DB60CA5F22A4DD91B0260EFDBCD947536D634D6E17AE -2153E468B91C6D1, 54B1388159170C0C7C4A6ADD5FC41C74FBB1EDF355ECD1D872F9E9582A00D320D0A9205FD2673D3A09FFFAF58C96FAC65527FE5796FAC796371D81502B93FE455F, FAD84EE0FBF823A557B8CA17B3FEB79EB50B631CEBD7C4E43A3362F36DAA89AE7AA44E49459DF34321F7AC9AFAABFC686A00BF2D783909653B3BDAC7593E8E9E01 -63FBAD3A2B55473, 1DD666A051BBAD5E6EB96883A55A9DD77E63C201AB1A143512B774076D0C40AB4F0308D6564CB63D73CDD81DB462FB3C17A57BD33E3B26D7EB96BC2DBBFDE96B260, 50893602BC1EC6F294B5ECD39CE9D1840739C096AC7C1D8C1E4453FA1BAEDD0B18655FF725E6653FDE18EB8FBB6F4F63335FF2DD69AE98F171DCFBF146B86BA08 -12BF307AE81FFD59, 1DE0E9F3E035E3F7D564C189397C21832ADE29F85EC8FC9B1D008871D6B4EEBC84D358C704CB4F7E9D12B909D458E218E9A7A8CFBF1D2C4044B6034EBBA8C477216, 10B2ECEAA69F5F89AC4A7B90EC5A0D8D43613F8E281A63E0727E5B08230689142C3A4BB826F8601CBFADD6282EC2929668EEE0B97995AC796E1335AC32C1A8D419 -383D9170B85FF80B, 118A8A0B98A299F5FFC7CBDE5D89FFB8AD7C24832DE083022DAD4814F3C7A73959F77B6DE807F1DB1879DA1BA9BB547DB38BEBF82707D6A7E66F586B2052DAC77BA, ADD0F1B8DBBFEAD35FD7C4A9F3F8D2076FE42BD91740915B76D090FD31F8AD3365E5A028AD20081EB78B526AD36D46321AAB2FEDC68F0EA3961B699CA015B412A6 -A8B8B452291FE821, C23FC4B56C816757ACDBC3F53C21CD67F660DEE23A06A95D8C8EF751F0060951D343780FB576AB07CDA6B2F68900D6E97C6813E8E3BF40B3D0BAD80909872228E6, 19AABFEB7C4295A5619C5590F209DC72C957654058104E2B0AB4716505C476CF221E541E0264348285961D3ACBB3B148993A06578DC94D7CDC9793C7C2FC8714BA9 -1FA2A1CF67B5FB863, 1FD7232A28A4A37238C080753E6FEBDA89A14C9C44224D77E8E89187C3912EAAAD59EAC55420158B02C1290F665F7DF4BA66D02A82BB379BDBBAABC4315B1DB3BA8, 1909AC430FC4A553DD7285019E0D3627062A6B41D8AAEDAF0B907E2BE68887A568D7298795A0C9470ABFD6ADD29E62AC3B690774EF7B1291A05C61D0DBB47B72E8C -5EE7E56E3721F2929, 1EF6594F94654869B4EBFA95DFBB70B9C735505D45833E17F6DDFF6B02B1C560CE8EE7F4E25F7C1A59C167D6F39573A9A4808BD555C8E8ADAE7AC9678DDF5DFE6E2, 1A47987BA40C43D6A93E5FECB0304973D2EC8E27972524E3E95FF7EB3E1857988C1D37CE6CD9D7E5908919869B8A140FE780CF4EA803FB9124E0BE12E1964B6B9D4 -11CB7B04AA565D7B7B, D25637FE03EF4FF9A71BD0594EA52CBEBF4F16B56E82C566530B0D1C7056EC19099EC1480018CD144D9C91426BC022715BCB190D9BBDB5AC1605B8A102A1E2F63D, 58BB79C16C10D2FB237EF55BB3401B4B9D9FCCBDEF3683C2F5431D4614EDEAC1FE29DDD23D58DD819F2ED64D9E6FE95F1AFDC3C17F70E32D156B416E6308F8BB58 -3562710DFF03187271, B678885DCBE552E09F2C2B9CCD040A76BE73D101CDFF12C1F38427F0B563F2213662D281EDFDD0518E93871490D3C322152B8B99FE156C072AD48A6F246FCEA43D, D98172CD1094736AAA947CBB22A4B9C7CFE82037B816ABBCC70AA20B26B2781AAFD3B8BB597140EF417405AF726F8521918A7B14537480B788DDF7FABD535B4EC4 -A0275329FD09495753, 10F8C57ACF45355ED2C38E40BCAD9BEBD2020CE99D2F445BBD1B2A5C2E9DDC8DE00A6BFB51B85355209E80233075510134E8C44576FC3F33C9390562FF2159DE058, 52CB1CD6F1AC84252B5A69AF5168E00C299C359440CC8E1BF03C49B86CE88794F64DF89563D979F68A166A079A7FB01CF118B46665BFE9C2082F57614D9B48F163 -1E075F97DF71BDC05F9, 45FD2500C1744A0DBB9A28A832FAEC3AE568A8E77E4AE385FCDF45890FF826FA1660018C246E51FCDA6CE0AD7E7BD1C5B9D586495D1D61E1AE1DCDCD2F863A2305, FC6B68E01AD52855522DFB440A5C46171F69047C164E55CA6EBAFDA5908155B166652C487B4024D5B4687F973D90FA1F9DD3F433423583B4EB1B184C0E753D76F9 -5A161EC79E5539411EB, 1496D321897B3869680DB0EF9F0036875B21F27B73E246377ADBB80164A0C8F7AED5572DAF12679DFDA0301B50C7FA50E79CB410143B7E95051ABD52B3DF7944FA0, 12E3332B48AA11E31086040E7B4669F628F17BA333C66E5B4F0602C9348FD5B59333F266A17E7F8185387E4B1B1799759D51DC017811B4E9FD37A506F8656D3810E -10E425C56DAFFABC35C1, AA821872EE88279B74988466C480438447B0B91B8660F1C7427E2A23CC66008E29B5D9AE999C200237C380034E5CEC62C6028DB0B986465EE01EF299FA4051D06, 47871E7FC41A4520303091E7077A820351A6ADDB9B55F75DA39E6C56404EB3897BEA59D9BA933E64A434ECB010256E33B564303B234A8B18ACEBDC9050909228A7 -32AC7150490FF034A143, AEFDEF3E624447E87789B37B9B355B51ED382F62AF2BB9B01722C3D110FB865328AE5973CE920E5BCFED14E6E6FF3369F59F0E0B0DC8C2595B97F3093842BFDA89, 11C15F166282F692177A8025ACAA1E27C6CAA771523400634E083DDF03622E6AA0FE32C97ACD80F74A7AEA83E3C1C46620454F19DC44F695692CFF8C9B5924EEA5 -980553F0DB2FD09DE3C9, 82CEDE98FDEA05EE814A7EE86F73EB5D196FA0529C958F8ACC5DC65EA8566B0D6A7A069C906803C812774D92EA196403326F5CCD84A6E07EB5DCA49D8457017971, 8021ECB6CA72FAD06B69A0963245C26C9D5782ACB28698E3A8ADE1DDAD20C0A3FB0ED90EAD4A7CF0A533AF508884358A6F709F34D9244BAAC40FFD44B6B17EF00F -1C80FFBD2918F71D9AB5B, 1079E822EF5B40CF8050214A2AE16F24F115BB98C379D1D9718EAA33EC9F8FA94C05C017CA59117D2AA5210982D579889C675D61240DFA3C7060C85730DEB36CABE, 133924F6747F6611A1EE66B2E6FCE491EE18A6BF11DD6C56B95AE5E2A96D3DDC9F22C0C3CFEEE18249A5D8078A785D85A271B0F8A6DAC66C440BCCE6A4DE320AE78 -5582FF377B4AE558D0211, 464C7F0BB11C4EFA309221BD9F617FB5C1D286AFE1AB1CF01B8FE713156FB9556592DDF1FC67FD72C382414CB4366E5E17A848928D8DAAD48D1B9D58F410858460, 49D757F4B9D5993E0E7516AF45DE7EFD76E6D433B7B73F90F669ED0084C456F9181E6925BCF62036B9A9CC9E2836B8A3F91CA4E5464DE749392C4D159F681CE6F2 -10088FDA671E0B00A70633, 14395C5F8FEC4BE0611A13208FA0A51884B9B64134D0D490DCD3E226818DB25F60BFDFCAA038DE5EBEEA261832450D85736AD1F5A353E0324A905B004F1175565F2, 1B99F4AECF9C15B1D09195840400CAE567D141A068140DCC08EF11BEC7259B13518FF6786354D09859A04D117E94E76592918C21F78101035F3906232E164019DD1 -3019AF8F355A2101F51299, 1DEDEB355DFB25C0781BF5B8D9DE88C9DAB56DB998BC5C6B061AAED98EE95132173E81FA1515AA8540150E1B6BB80BB696823810A0F8AD17AA41EF6FE3786C91063, 11575AC1A36A174FC9103F22D997C67C7687941093A22E83D04D889A0E4C4228FD13B01A38DAB15CCD7B49E219A6697339C856F72BC99870BBD5EC2DA02C5E50839 -904D0EADA00E6305DF37CB, 16F5861E70F20A1F80908525058B17696A11185F6544C78D4F30258816B2B5DECC7E26B333D31E29DCB26E7B155D34656BAEF5C9D9C9ACB32C5AF0C0571BA8627F4, 1FE3AA95CAE6D2DE7A1CCCDF28F249FBAD507CC03533C992A291429AEE0CE1EB8396F4F960686CA6351C883E5A93628BC28DBDEDBC9CDB89D92ABB6F4DA6D736C45 -1B0E72C08E02B29119DA761, 4E45FDE0FFE64B86818146F92783D1E967C8C4BDCDA44E8927D72F269AFF5F6DF8F4BAD6CE3B2A722E5A1DDD8AFC048C3D7CF02DA3B4C71556D6F2F82C207049A5, 125556AD32950BAAB4C37676815F498FB270A292EAA3C7669A0D13614772C8DBB052C6EA9E753E58E9C65F0D8C4B54A58CB1F25E0C4DC167B4AC0942BF1CC5F0C9A -512B5841AA0817B34D8F623, 1EF25525912F28BC6F2B321C13B7D27237ADE5851431A190C619015DC3571360B3E76452A8A904532512F1F210509FA8EAC2D8E9FD3B6B81050C2026E63CCBCBD78, 7AFB8D42BB5B56C73B38A43015354E85D9E654821E3756C2F57FE1B3206F8BDC693EE96C1166B237C90CE9E9B65A49F1D2CAE4BC4B9A10AC94EA0B505BB233CE4E -F38208C4FE184719E8AE269, F33D784313B9EFFF097C88DFA87ED80B1BFF56340832B5BDAB35E0BEE1D73BAF183D455C977BA643E42B218400FC5B389B1CB9A55B9FAE1D2F66C261EE24B54567, FF1D6CEF8D0E6AAD96D5C9CA827054937CF40AD2F68FE277436E4966D04B64FA071A56B058CA38807C61C5533C9E6525C2FB02266BE222A5ACDFB059CCBED8E255 -2DA861A4EFA48D54DBA0A73B, 1ED6C2C3B4546B41DEC00095940C7A8B629C5C0703F15831096240174D0A18A94376561537C57F8483317B215B00D422D04A7C479035093CD580F1DBFE81BBCAAFD, 1B4AD3B7CDCEB8C34FD7D35FD087D5737A846D7F82C9C3E81D42B35D089E00AAB6197F7956A475727F5FE2899EB19663609C9EBD835C4E066BDC4DE8830138437F0 -88F924EECEEDA7FE92E1F5B1, 1F510CF12AE559559B6D56A7C4CD12B2D6F4E9B211AC80347BE28C544560394E0B77D18909751427F0D72757C95B2288AD53B04EB04C1DE823FFB6599CC12910647, 1C825308C453E4BE1BC25A470AAA262CF256BECF6539005B1835468541B9D137E5A20EFEE41B70BC6109E92C1ED2290DAFE20F523433150AC3A1D4B62A382DA6A4 -19AEB6ECC6CC8F7FBB8A5E113, 1D96F773C1736D046ADBCE278A48CC600A496AC353FD3A0D85B7A39B4F127964577642183E76283976014BEE00E7F8CFAAFDFBF35FC6E79DD637B67FE8AFC22F018, 1B20DBA2B18E31F5620E2231BCA4B4499FBBA844E1D424D2C295F4114AEA4BBEA643C3171126BC9498400E689DA349F3434C692C5598D93689C9CCF7A0E26D197B8 -4D0C24C65465AE7F329F1A339, B69E4A8BF1AA895C618A8DF89CF574C07B737074355578AEEF4534C8D218C975A01D89E699E2BC848643CD5D3D1BCA0468BB0D57AF11B8C90E8C90F415D7DBD14, 8CDEBB41AEF07326AFBBB4CF350B651BE771F46C262914353D64E753FF4616EC07F1421FC38999131449B99A42D460596E53ECAADF9520D8C62936C1945E695CEC -E7246E52FD310B7D97DD4E9AB, 2F44DAC7B64226187E6D4A243122268209B26AF89C369614080A0102CACDDF9FF10A3AD4443AC0895D935E76EC7077FC22D6F8148E43B4EE1ABAFE72DFD4A5C45C, 16811C302BAE1D2139926DFB84E07747F2992E8668A438642E42E0371D0964F5B9E544E8DD50FD4DE7A4FC149FA7CE15705AEBAEBCE2430F98F761E41EDB0348ED -2B56D4AF8F7932278C797EBD01, 599F9A9B5DF7E42F73BFF94099111504BC3FE81340CB7B761A904D8F02E57B1130939C5926BA6D8E7A2F16B6EAD185A67E74BBF32D9C35369EAC094E8404DF08F, 151187A64F516FB7E574009A05FEED58FE9651908128303BECECFAC8833DDF5C33E19EFCF088C2DF944907ED1A7222C55844DD71FEDE063447C3D2B900E3B011932 -82047E0EAE6B9676A56C7C3703, 1F0EE7B47DF0981FB658EAF622151FCD58856F9EF226296F9265FFB4D345D61EC0BE7950BA891C449B1414CA01E824C219E0F95860BBC4C6BD5D5A8082AE156A500, 136C0FDB133DED142D973CF3FFB7AE59F5E379E53ABA3D5B8A773524A947E694B45800AEC0B8E64B1D3BE54569B12B1E96D6F25B6126F03604EB5F205E0C0D2AFF8 -1860D7A2C0B42C363F04574A509, 967C8D057C2C6C527FFEC4B65418CD070D20C917F7ECD53B980352C26E4E8CE1EEF1BD8C18BEC61A3259169AA9573E89BD4A43365AA35238FF792F8831C94F5778, 76A652C96706E490E0642B1B897C1E835FFFF5A0B6B70C7299C0FD1CD7FC902FB5078D58DA583DDC9FAFF4A1E5951C421119DE818EBD78D4B9C645A839DD8FD05E -492286E8421C84A2BD0D05DEF1B, D481529C0B8908B0D26BA5280C36C090539B2C8777DA422782DAC32B8D938CD9FBE48B0F089CCC19E927478344DF6538A12E4C70FB83BB0167BC5F67DEBA96EAC9, 10BCA3006DD8A63F380393337ADA78EA09DBEF67B7341005E5426FEBE6CF6B1D3CE6164C3DA46BB7C583C7EDEE6B3B2CF61DD7170668ECB5780BFBA9363B51D8D7D -DB6794B8C6558DE83727119CD51, 17C0CE40712F4B52705DDEB104DABD27FE0DC8252D732ED96B1EB6D0D2ABC4659B11A7ECF21FE1AD66EFDD6436D4983D1D919334863AF043783A0ED16C91B14FEBC, 680A8191E60E5CD6E64C511B271B665A4A7A3325113C96829FC28FB75305D207BE337A77832A461611F76F63637DC8E2B28383025869AFE5B637E0D6AD57FD5673 -29236BE2A5300A9B8A57534D67F3, 2FAE54CE1D4AE5B9E83ACDDE92C47749C206F41B72A5CD5BAAD031F0AAC34CA679D5F84B81AE4291C7A98BB2C396C22CDE0D896BE34FE237390D27BE54A7533ADD, 173ED43CCD7FCE3B515C941BC744FC62E2B4193E1D95DF624661F795ABB261B5DA5CBFAAA02CF9988B5EF05E095A2C7CB0ACE356D76D919852A1D672E37FB3CB3C6 -7B6A43A7EF901FD29F05F9E837D9, CF6727DD89F1CFC1997BA16862CF19E9217A82FF270B247AED2AA0C992A4526E58B86E23F375BF50B5629312370FAD1E3FA1DA5E3B2E6DDEF7D1F48EB245270489, AB35A48111037289A4C8E360B1AE3000ADDE3FA27917BADEF8245386F1DCC6274522A3D38C74975BFA5264BF1BBCF39E37C7E6EDA0A6D03B896140771991D28890 -1723ECAF7CEB05F77DD11EDB8A78B, 15ED4363F07A28A30112EFA8CA8AA56350AF5752D65AF4EB57007025116EA9F04ECE481F90EB53495798F89D4A54040E5FD4C16D368921865BE454EFCF60AD5FCA5, 68039E8220C159DC30F35F437D9D174574C2AC67D388C966C489462217C2189B2AEDEE9602880578ECDB49034C0B1065C659DD043EDE93ACB1B18EA874CADBA064 -456BC60E76C111E679735C929F6A1, 958CDFC357EC3618C7762B10E3D45E76EADF9157CEB5236A564898DFC4AFAAAE26A07BE8C653A8E16A36DD0F4E448A1E7CC88D6B7542A8E499EB678F78E4B6B2CC, 19723F0CDF33BD23A14BA13A98043FB63B746B0EDB2852963E491E21AD37B959F512DE84F9958BCDF77D22123F887A659ADB27DB668DEED9C90D7D283368651C7D8 -D043522B644335B36C5A15B7DE3E3, 1D6FF827024331C45120C4C71DF35D6888B12C5AF4FB70B5724957FDFE8824A0E713106E888B77D031B740CB73D4D6BD495D80494AD621F0AF8727A6758A455C68C, 19E2DDC3260794B45204C946A2437D266F9F799D6F8AE9886D94ABD5019E7AA7957D5804426AA6195EABA99FD5E2EB8E09363F46FAAFFC262DFBEAA241C79A2E7A1 -270C9F6822CC9A11A450E41279ABA9, 8F963C0D060D273C74B097FF5762CF227BD859561D2FE6195C1EF495DE1B79C97562C7866A34DE56D61B3A8EB42EE87C3E437157EEC3064CA0C7BE6B38F7B259E, BFC2A9BD95034A3B05F63CF91402403BC9987B22290288832D84F33B0F6738C7D010033EA032F3321B6D87720E5F6F564B1BF31BD9A3802FBF2E108126591E707A -7525DE386865CE34ECF2AC376D02FB, 7B9F3B77DAB322FBB3DA19EF73F6F829D881619451B0C5DCDACE17EAF0830AF0204D4D0C51B82ACD94341870BA4C4EEF1A177DA2AAE93092D04B4809DEE94A2047, 44BD3C36192CB52431584F01FD2117C61A0D98B9CEF1AF9D430510B9B9629558DE745AA3CEF2B211BE4EDCB9BFD853DAD9F4B0C2F6DA8954AC0CE29565F5EC1F58 -15F719AA939316A9EC6D804A64708F1, 1F2C1685E8DFBA68D3759869081288CC99224189EACA61392C72BD4C4964C67E3895CE7B5B414F4C0AF73B77691CCB26B592639E3008DD72BD38EB90238150EEFDD, 1141FB62A9474E430A714A2B04743FDFFC938BFF16DF9D4AA8EACD70CF1F05D88A7B9C5B8FF05362083EA0912D36549DC3AE8C1FDA2E7B3DC17295AE0F027C16A45 -41E54CFFBAB943FDC54880DF2D51AD3, 1EA7AFFDECC9D2D173E0B2B2DC0BB570DDD10D7814067F030620B8FD9D8E1BC8B552506418F51396174F99150852490D0F6ADAB392B7C743CF53728ADF7412B3F0A, 10BDE149B34A218B62D35AA3DF252FEF49473C2F730F4868E46FEDB512AC8F176BE2A0C2C339CBCA3A70F9133CE0FEE52DEBB53BE9028901C6CA0B25F7C7F842F2E -C5AFE6FF302BCBF94FD9829D87F5079, FB865DF26CB3AC31F6DFE99E723F631A89D632B63715606D8EFD1ACF7D492A9E974B200B1908E0DD532D564D567E37017777A6BCE040A5EE643950EBB838B601C0, 1CAB509D1E0E6A1B59C2A5D3487D7852CB3DA13533EB1C2FA50A256B805B5B0AF35D95384846CAE1C28EC5329F804F6381BB78ACCF3F737373A2A67FE832D71B6A7 -2510FB4FD908363EBEF8C87D897DF16B, C9F00AA0A548FFACC5478CFA43A2F9F23FD32392FACA4F68AB3FBE66383B2B6E37BA355326F42B58C3A7F6E93E51908D4ED0185D05E5A7844929AE208C3B51B46B, 5B75696DFC684DC9A8432317EFD07C0B2691A237AC0E7498B96730FF547AA7CD9B51B847BBCF2DED8CB93BB0482B67E135F874F5F4C42A8BBE1B70C58600E98F85 -6F32F1EF8B18A2BC3CEA59789C79D441, 1F866ED983E6EF590371618A0BD8FA42B0DD46AAC941F877EC14B24C2B828CEED391ACFECEFC04E35A0DD1FE856426D83AA3FFE1F5556919FD697066BBED3339335, 199585DD07BAFBA24F2DFAE36A30E040AC29EBC63ABDFCFBEA0957702262334EB1A7FA179C3BBFBE928AFBB4D0532A8F0EF113CDB8982134A9D326148CFED21F762 -14D98D5CEA149E834B6BF0C69D56D7CC3, 10CD4E393DF012064B73934CFF7EFBDFC72F3D58CCD733D885EEBAD4B91B64A5E504FDE8F2299F704472772D53CE6D81BB39632B81AB25FFFA7C774E901E1A222F0, 29178F12625748895118D70305535EF88A93113FEE977DE33E330633D40181E9F45DAF7030545F55EE8A612C608B7F41F2812B79D9C26CEE3734DE551026E58CAC -3E8CA816BE3DDB89E243D253D80487649, 171E578DFCDA69BD9D2DA57DBE8A515D48D4C4BA222627FBB8B068ABA56059569031113F60CFE8027D77F3FB990C73F70F1A2E4BF31DE19DD0202334CD1157FF5D3, F1101674FF1C2831E2C145BD2ECCABA19ACC2B87B68A4F5BF5CBD68520C679861800C8366D545A7FCD9124349737AFF5478EC4DAE5F1AE2EECF5F9FB8ADDE9A292 -BBA5F8443AB9929DA6CB76FB880D962DB, 542880C040CC682EFE7BA92DBDE3DBFFC5780584AE3D1F7C2941368F0B44F59C98F27014644580BBFFA2C62C4A81DFA087ACBA7F0A24E7DD877FC26AD10D074040, 18687D13361B2E4DC66E8136E50BBEF079B5D6AF64B839265EC3871B2A9D034FA97A94DCEB81D154C020638D38B4BAE16C6DB8657585EB4F60B71BA08C9EF05CA2F -232F1E8CCB02CB7D8F46264F29828C2891, 1CB8816EC66D80ED05C3172AA33B4F8C8F023816708F2BCE3B41C42AAFD41C6853796F7D014125124230EC2648BDB7088A1AF454B01B4EA6F77E39361AC698138EF, 16503C993B51F6FC4C3EB4A8D408E7370E6EFAE214DF09850DFE12B1C2E7E9B90831B1F495CA81BEB9A96C662E0B223CF4C957E2B3A362AB603B0DD26770C6321FA -698D5BA661086278ADD272ED7C87A479B3, 3B2C55D7171BADAA27F36255458B30A71749AD17F111408543DBC83DDED63CFCA7A232A9A3FFB18073CF39803E8F6F0C1AFB5E745CFC8F923C410B7AE751BE80EA, 8F56701849C8FAF70AFCB92AAE2B0E48C1E85114B78D545635AACE43FB0B51EA53B3CC6D54F13345BF354924FFA4E26C710173F289E49B9A1E10041C2078C1AA64 -13CA812F32319276A097758C87596ED6D19, 1FE012AEF9537E574FE550E8E145F2026F96D3EE1D2301B3D6969D977C4C314E9078F0C5ED85C16C44CBFCE04CB44EC2A7072C5D936495A68A601BE32EDEC595B4D, 1742AC39661002F4DE12307D367F017BB4685AB03035D6B90CFB4389E139DCDFD1B432FE7DA51D87519E46CE9C6E6496A13F59299830B326AA54979477523D547CC -3B5F838D9694B763E1C660A5960C4C8474B, D2B008C3D599CB7CC6C4CCF5F06421B49FA454D80B0503D66E859D02EF0F6A1507FE3B42B5E3BDEC83288AF0C2E79DC348FFC3509A389F223104CFBAC4337B20F0, 158571D28D8179FD934EC4146F45C844BFD806DA4D218567FC4CFB08A1F01B5EC213C8168477816F230DA0FBFB665278E79EE36501C673292F3DE8087B1BD7E16D0 -B21E8AA8C3BE262BA55321F0C224E58D5E1, 4C23E297383022249FAEEC517AFBFC0EBE45AE15602AAF45023BE25A933D3A9A85FAF3B72A2E278528B9A753D3005E299764BEF3A475BFE7DD68EA3C72E7BABF6F, 36D4680C53A60472483B7B8F1845D56BF19FEAF97146E16C66D78A4C5B2EE27088AF0DC602652282269A68ED1CBDEF9FBC6388B28BE732A9BF4DD38C599E3143F8 -2165B9FFA4B3A7282EFF965D2466EB0A81A3, 2F7F9D1A89B72384CF5B5B604246FF8AB4BF00A68EA1DFA7B1DDF8345D2016F570276A2ACBF321772DEC7524128724938E74D5E369F6EF5F919ADF2E8F0B8F87CB, ADABA23841365A83D287BB51C50E3CD0149C369080CDF2C1082A7E359A16506AAA3F0B6DB5F55B3CE9977772D434D7AA0CF8EED7B322BFC16790E2A257AA00B144 -64312DFEEE1AF5788CFEC3176D34C11F84E9, 1EF2DDB94CB948844F7C000FBE090D7878F02C3AE37F722220D92255F5244889AEE0B5D0CA9CC1DFF8EBCF35C4C14D7E33C052C47BC870F5C2F648F3AA9F156E372, 17F3D6D89125ABD457EE45B912AFBE4E9B2008C7A95562303CF7A0F2BE09B69D905E5494E0EB3FAE1C47A48924CAB4C56FA49E970E57599C852E93208AC0B7747D6 -12C9389FCCA50E069A6FC4946479E435E8EBB, 11A0907D5B4E6BAAB05F813A307D7DF94FE31024D96233DD9F52966A94EE19BECAF0D93F6ECCA6217FD70954B37929BFE22ED5B529A1FADE6896ED358668E746F27, FA46B3B6C5694F1B4AC9763E9877623BE6DCB01D6A101088DEDDA69FED18D42B0ED1246C4DDC739D03A411EAB3E6316AFDE71E8CC0E2AA04FC8E5F137B84CB8E30 -385BA9DF65EF2A13CF4F4DBD2D6DACA1BAC31, 1ED6569F5F669F3E6A55A52546060D59D5A1561B0E8DF439602195CC8BA01C90C3F80D7FED2631BB8153EFA46FD56B8CB0DEDE95F9FFD0B0546D23ABEF7996226C2, F4E4A923720917242A16BB7CC62A07C4D017DE653D76AC912783BDEA237F6731AC2C802C7ED70639B1B00026534A9DEC23D7130BF3117475F9F1A0702CDC6D6D59 -A912FD9E31CD7E3B6DEDE937884905E530493, 1EF01E309E9B1FB687AECE947806C35B944D9E5EE06E61DB9390FDE011309E0A91EB0F4FA4A5E62E6D5999E46A4C2D48EA853DCD9313F4BFAF853C4ADD1CF47BD72, 195159841C9D16C350B52E181F559EB969BB113BD08B5159B05A1980F53C799EC1CDB1AA4C8A040B9D9D67B2F794CCA95EE767BB18AF9FD36C45318294BA1668C80 -1FB38F8DA95687AB249C9BBA698DB11AF90DB9, BD9334DD3485BEA7DA10E2ECDC8F5433A34C9BFE42391068BB8C061C129F700FFFF83B6FF9D31B0E1D3E2BF65ACDFEA9BD244D055D50CEE355412A4EF9E8D49356, 1B87707BD5D317EB668D0176B786C728DCFFDB8141EE945BD989B27AB1F31320E5A370C582E6F65D91CA166FF8D99DDAACE7AEFBE1576A86135171ADAC1B3FC412E -5F1AAEA8FC0397016DD5D32F3CA91350EB292B, 142991D8B21AB53FBB5380B3DACAA3E41FC1EE1ECE7641DC7158621418523DBCEC0ABC7CA28DBD6BCCB6C3097C67F5B60B203F0636F9479EB1B7CFBB7557C14D5A2, 1434E44D52CDED2ED19B5A3B68A0C618EB37B217F52BE2E56CCA41B32FB1E04424FCD9E07BABDD36958108C77027311DE4935A203DCB32FAF18345EDF762B4FCE76 -11D500BFAF40AC5044981798DB5FB39F2C17B81, 74FB515E4078D2CA6B1B17E3297A70726EB56C124EA964EC24FEB6139A5DA47D3F196109AFA5D1115B0C64464D8AB116708DA0B760B9903680AF97F30AB5552E18, 13D19498C65A6D9BD7208ABFBD74BE1B67B113B378B58035C2FA0D0691D72EC683BFB7001080C90635E837B87621E618690179E19F580E5DB4F6B3B28E61E6FEA05 -357F023F0DC204F0CDC846CA921F1ADD8447283, 40581EB0C5F1784C5A3173C273ADAB26E7D72EF757D175989BF73BD364812F7391381DC96735990F8F1F0E36E1EACE55F713EE4FFAA31B516838A3C5F878BD963C, 173B41D46C73443E7EED3F153A1744D7047E8ACC8A949AD240F8D315FD681F4FD44855D23C5FA4BAAF050CD21C10F13BB1A041C170295AE19BA25A1DE1C4208E4BC -A07D06BD29460ED26958D45FB65D50988CD5789, 1564AA18C5C10364E75E1211E1D5957C673B0640720CC5003A31BD1367E2647937C29C56B6916F44F73F60B1EAF592FD808D4C4DE874BDDA27E5D88C14A71D75EEA, C53D8A2301F213A680F58774FB4CFF9DD3B6E8E53B94B94FA131BED87DC53CFC4C6BE4C084FF9B94F35590B74551C0350E718D994B10B1C9E44373152E76FEC25C -1E17714377BD22C773C0A7D1F2317F1C9A68069B, D1E6F2EF12C66869F67933B64C2F4E16E93476720B87383E61FC410EF3D0F9684C1A21C5B9315C29BD4D631EDA4DCD1078978E678046660A8FE982DA818C32598F, 185D08D93D463230366480261B90AA10CFBCE2DFA484A5F5BE5627354EC75340611E7EBD3B10B03165040C0E5C50345C298FA9FDF937C5B76384E72AA2A01E3359 -5A4653CA673768565B41F775D6947D55CF3813D1, 9F9A8B3F2C05FC80D9C0897A82B47D657A0A9172DB16C5EF6BF7B7CCFA589BEA69CC9318A9B7DEF5A4E1D69065B5364CED0F097C073562CFDB61A9D9F3829B2FEB, ABF0E1608D995600118FB59CDCAC5D6337E04A79BECED24697291F011F185AEBABF8A4CE35EF5AC09BD274D21A393FF6A25952D959429E6E00A487941A531A9DBF -10ED2FB5F35A6390311C5E66183BD78016DA83B73, 11717702EAEEB89C79271FD5B6E7E04DEE3550E8F4AB75C89ECBD33B636E3698D5EF69DF324BB8B3EC6B87744718501A2C7CC9A9D15B3A75C015DC310A210F09A40, 1BF3ACE0D121D1653E89459C50FAED6562BA69D2A0CBC65EA92DFC5034C2021E29B16C6B43B436BE76FA7D31CA1AFC06C803D43060459DF22BA75312F158A0E32D -32C78F21DA0F2AB093551B3248B38680448F8B259, A3D261D481EBB0969C4A6767013AFC759D91F214A5EC4F85C7E504955FF6BBBA4F7A9F4883D15C4BA8F4A0AA86E5F70E7ACF8447E44126DF957EE85C4BBB37C501, 62472A2C7D924E1AB0C95C9C5A2A205EA31DDBF4D819A0DA4B9F76AEA610BB2FA8AF486C18FA0DC5F33B4BB2309B5162AECA6E7A76C1D783CA9DB7B0405F6E4B2E -9856AD658E2D8011B9FF5196DA1A9380CDAEA170B, 72A122AC271DBAC95F310F20E8D8A0BE4192A7E701C93B600AD4AECE62ED31D56C4B1F5CB180526FE2B898FEE0CA1392368A11284DA1F0D0CAD7F429B5FD2B7DCD, D09B0D1D5B5CF5F9C068B758E333A1017659ADFC6CFC7D251E67778D8D0EEFF6F1A03AFE47ADEACE046B0B6890CF29746EC4D774BAF26D6E2F7A7FFE1ED0991F64 -1C9040830AA8880352DFDF4C48E4FBA82690BE4521, 4C1A20EC2425F70CDCE5358CC7CD25D0DEFB0ACFF160BC4AA218AD3EB91304D17B4A134EA4172933E39EB25D0DEE0B1A0775CE2580B7CFDBB449E2A39B9C596FC3, 1E7B8A2A66FC73F114C81AD17D7FC08DBE776804FD3B83F6D2781B8E87E67C1667461BA0EE0B2BB16A3481E10CD940E8A5815A83785F0A95768358C6D6D43CE2A56 -55B0C1891FF99809F89F9DE4DAAEF2F873B23ACF63, BE5C3F42502CA61D1E5E677D4221FC08CA8F1A4ED3820EF4426EAC78043187379E5261254745F2FC875C90446B4A1E6CBD532F276133AB456BDBEB0E25A0D53D41, 174A4B5868018B84BD3897D160E791211889C3CC956E4D985FB6FFDCAE7D2836B3CC542F037971D2EB442D965C373AB5CD51087090CCE1EFA725AE1EA5DA932F70E -10112449B5FECC81DE9DED9AE900CD8E95B16B06E29, 14868EC0DF006ECFC9D030DB5D1EE2009127F2E91CCF2174B3A4611BC5FCA6A36143D312A1A540D4871C123F6CE5517BC6490A874B09CBEDD30B2761F7ECC64F9CD, 1DB894269EF8C3F60BC6998F0EB3D41A2E2ED7484D1CA927F80F3FF0B5EFCB6797857A114F9E38061EDE7D53B9FDC977F7CD6A53E4ADEF5194AC5A6A1238DFD927E -30336CDD21FC65859BD9C8D0BB0268ABC1144114A7B, 169D74D0DF6E55C842F42DAF2A7576785AA500100528F7859AC23B2279F4F9B48AECED1237856844D87DCCE57D75A38AAEC5FC54468A507FD5630DDECED73C6E781, 4C758619304B7209D2EE9F95698FB440F498369BCCAB059A61E8BDC4BE5636119C03B6D2B7524087CF5CF414A2DCA1801BBD04CF066870B83864731422D3619D48 -909A469765F53090D38D5A7231073A03433CC33DF71, 1CF38F976E1BCA7C2167355075FB849AF27AEE67B5662CE2A0A1431D4E4A93E1EC871FDD78092A42E13D87E16DFFDAF1139A4C097EC77EA6812A6BF24D0EAD26821, 1DA4F590E499D7787F79162DC89C294C8C5D8051FDDF922231EE338FB111E21BCBCA3A6ECEF2FE6E4F894AA507DCCC5C4191A28D848B8C5E80186FA8514B0DAAC47 -1B1CED3C631DF91B27AA80F569315AE09C9B649B9E53, F111900E115DE9D3765613A20DEA4D5E298BED03A193EDF851E0D73BA054F720821B14560BEB25929EA6DC3424E7C7F2D986455A4CA92F96B74B556D6536180B30, 1FA14F416C63E6A126894B3C30B3433A5179A347B0BB479F6F961EE6E3331A0CB4CBA92B0E83976071B67218F8948BBC5F00EADCA8FA26BED3E5BFCF494D8EE358D -5156C7B52959EB5176FF82E03B9410A1D5D22DD2DAF9, 111E666ADECCD8BD3BFE3783FD87F097483AA335F2D8206ED1D37B81F508D19DD61BAF93FCD96AEF68AB142407E61FC8C1FDAA4458D6BB6A0044E6F018AB8686F7D, 131FFCD5B2D80063ED2815BEA13A5A5D1E110458CFCB6F36CCA1BFA55343F8823E68D0AF8043551002A08DBA039245117DD070B88FF61A9A15CFF145AAE0E0F6CA9 -F404571F7C0DC1F464FE88A0B2BC31E58176897890EB, F2D496483584F01E1380FF91B4740B51859EC60ABDED4AE8ACE803C66B822B5FF693892A496649415FDCA986541E35863C3018FE33638CE4D2411F65BAE0D714EA, 8C4CF8529470E0D6EC329ABF9FBAFF170D67885F1EE19FFBE6ACF844FBF233CBD595C6534AF1E27C2F63E85D9EC2F9D6952F4622C0667AF9F85A0EF9F96EDDD2CD -2DC0D055E742945DD2EFB99E2183495B084639C69B2C1, 1B4F041AFC25FF407E0038A9DCF5AA42B7B99542F5AC80FACA31458F36B6F466B6F0660A23264F28CD0EB31144D83A001002058DBA811E1AA6265E34F50654F318B, 7E4D4E645B80E8F070DDE8A3A5FEB2F578FCAB84085112D6E9483775159938B53C8EF5DED2CEC556D200F20DDFE651892E009C8D5BF8CCC95F1A0A5F17E877890D -89427101B5C7BD1978CF2CDA6489DC1118D2AD53D1843, 1526597072116E68F74763B7DB91938AB319D8FAEEDCA942A5BA6482356DEC3DF9E8895C88A7D9DE6590AC9CD327E66D9E75613DCE5A8953032DDE0BEB4B85D8B7F, 961CD4191924722C5EACB285AF255E56A2DD4BAE958CA5952C4538FE5E7AFF79D2AB3515A4B031A11B95F2AC76DC763B40257CFD9D10DB6FB5A1C21DD6A53DA8C9 -19BC753052157374C6A6D868F2D9D94334A7807FB748C9, 499FCBA3AB753869DF5D089B5508BC7A0AF8F5F6A545C7BAE4C57A3A69F8A09AA3B300389C3A04C70D59F5122828B0E9F6EE9385C512FD3348940605D8A57FDADF, 65AB9CC6B5FE8E00634578331B020C3EF09D51386E1904A1BE07AFE833D018FEAB033CB01E854D8CA3433B693C91676986AD310FBC26BB5A1728EAFE3E4B43083 -4D355F90F6405A5E53F4893AD88D8BC99DF6817F25DA5B, 11878C5B974923546375AF0313FB844924EEDE1F76C8035C8EC2A8152D79B03AEB96F71C7618F851B40B4AB5811C402F6B877F233C7F6F77A8CF025BE6819D901C1, 71ADB0A94401E1CD89A353D5089B58493AFA093DCB325D18C3A582AFE1B8B25055467B93C61B1F5C35E8645D90B7E9EB062F36A39D621029BDF6AA0639E25532C6 -E7A01EB2E2C10F1AFBDD9BB089A8A35CD9E3847D718F11, 1EB6B4775061A40AB1C7D14DEA339FB0CEE8EF61EFE340F20EC76D52AD03BF60A1B6630187A1D0B41CB0F062C91FB97CA454E77936B14CCCBD6ECFD39207E98D0E1, 119309EBFBB787F62EC0786D5AD5ECF146D7F8D4758C896680180B5EBF119DABE039D55BD1C503252B25713B29EDB52DF67CCDB83F6859B8E66897E3BB3EC10D9D9 -2B6E05C18A8432D50F398D3119CF9EA168DAA8D7854AD33, A0289125A717D790905F7B1171158B7644ACCCA44BC9DD67F2778C89DC7731B18908040BB3F891AFC5B2E5168E1BC29442B8BF5B5CBC0F3EB208D9980A5D1A73B7, 129540821B079BB7DB7BF9D9075CEA7833458FFF77950DDC90B7DA4D30EDEE52B4CDEE9519DAF6FF5898CA3365CF0107D07D9CA9DD0DA2BA47FDAF821823AAED34A -824A11449F8C987F2DACA7934D6EDBE43A8FFA868FE0799, 1A0D36A91082C697C7FAC4E50887B8A8AB6AF0C82E29B648A7144F60AF2C68A316A90DFEE21303FFEC7DF1F9B6506747943295529A6ABF42F2624B23A60328C3735, EF0B8E839A394FE4AC141BA2F2DDA0DCC357A5461EDD668BDE46239ABAA3A91BEABBA5290463DABC13A426C5F250F26D559CB9131D89D28A953DE7BFE8F2955A3D -186DE33CDDEA5C97D8905F6B9E84C93ACAFAFEF93AFA16CB, 1B099C1AD9DF6B5773444416A28A28BF25744C9E24F80ECD775417AED062C1874E84E3768FCBD1E2753C43EE7B92ABA6CDC2763296B0E3B88316356517292AE9040, 9FE463186297600D62182EFC6D5184758005A894C96DD177491333ECD2738BE64B5575FB0C453D49DC9348BFD9784B9271233E5C3992DAD8D3ABDF1D4567DCB16D -4949A9B699BF15C789B11E42DB8E5BB060F0FCEBB0EE4461, 103A1AE83D0C63E738F7EFB2A35C4688C93A74FE41D0AFCC3ABF8F5E1558F00A172506733113EF0AA7B41B1D8C3A5A6DCCBD252093EC9BD62794DB6FEE9E86D7EA6, 15E4053454D9FCC2D3CA84B7DBEC5C2450DDDA3035FDA7E6788FFA0F8D0F038753A2FBD4C103AFFBF9D7E36A2F8139FE3DCC137D41F061A5C1328A9901FC6B1585D -DBDCFD23CD3D41569D135AC892AB131122D2F6C312CACD23, 662249AE4DD87AB5F98D8BE4E173D91681948232CBC5C3F879AB89654018AE70D797B806967745E9EBDA56102EBF6A72AC9BD5325D3F7551A37D4D123086308F90, 1478866BB350E2AA72AA154037D6D657DD1214072AE0E6BC2B871FE4B178E55F8168A147416D8A90478A4C559C4971CE67C0764D03754EF17100C4A838B82545A6B -29396F76B67B7C403D73A1059B80139336878E44938606769, A2B8066D700AD69186ED471A2015DFDA37D30C72016569F9C57170E78B3B3FD6085B6D2ED83B7FB0FD0135671FDA71375931F4BF21A40600B214F8856801F70BAF, F3C3A4D255BED81E9A43E4417C7F2EF1BB99013BCF9AE93E0AA273DA41B0441E5EEB722558A89A6A5CE50FAC5A513A1C8546845CE4070CBD5A0C520DEA724AA1CB -7BAC4E64237274C0B85AE310D2803AB9A396AACDBA921363B, 6B65E9AE0ADA398071A375F757BCDF809C0DE791D409D711F35278D94A1C56CAE3716EA377E91A5B2465111AA76FD98BDF4A654F975582B7E041E77BCF3B1D737D, D633E4CED977BE21D68CC999596F0ED8C4890B938AB85BC06C5A2EA52A439A8FF5C70C72884DEDB18D90AEC29CDF6B17086C94CE5162E6F84E4A8308C4DC02A95A -17304EB2C6A575E422910A9327780B02CEAC400692FB63A2B1, 17FAA1BFBDADD90A856D9B2FC478F5402B1D2918C87668F55BA10CE65F676F0748168CA0D02BEB2DFAB95ED49399D9C4495A93C6CE137CC3D0B45AE030DE85C41D7, 1163583065327C943A30C9BB603C480727DEADEA437D0D5873E99DF0BD3487DFF2686E8AC8ABF3DAB36D19DB2FA5966155D8AD2C337B65DB70A05D7FB3813B847DF -4590EC1853F061AC67B31FB9766821086C04C013B8F22AE813, 1283BE1296F2AE4C4997BBB632EE6D07944AACA7D641CC8B3DFB8A0905915B005844529B90CBB2EBB4CF6BADD117E2858DCD30DD6560F87CAB349F0501E925ABB82, 13ADC3807C80A9BC519F74419B432F120BFDC918992729A7ADB3AD95206BEB793035960DAA0E5D002EA8E6DFFF927472AC1DDE10AC7E196FE77AE23C5E1A647CCD -D0B2C448FBD1250537195F2C63386319440E403B2AD680B839, A8C3ADC331BF40F457720076577CFA98F6B61201E700DB58FB4CA46C1AEAFBE8EE0BA52B1BA72645A3349B63B98DC252C108914024BF8CF706981993DDD6310D72, 18423EC6B5072CF004A624699C003F2D7FDCE5E243DCDAFDA117273D72746FF3A917EFAA523FC2226D9B39F52569DF509FF340B32E727A6A22F3A33C62F4F1C357A -272184CDAF3736F0FA54C1D8529A9294BCC2AC0B180838228AB, 1FCE7ABC8F809FDE63758D1E935AA2D81077300AEC2C16AACE21DD6EDD93FB9333E04B8B403902C9F1B71C2FDF8A3216C20598BB16DC90ECC6D066794EC63CB591C, 3C61DB1B9DEE067756E94A963A2C6E3F4BB681F28EFA3D2084BA6F8ABEF41419E4FA8947B8A02298542F4A3B1F4122745E1DE106C90A69869E0300C68B8CBA169D -75648E690DA5A4D2EEFE4588F7CFB7BE364804214818A867A01, E6BFBA40FF120E16AA00C0F66A80F7DCDBD7D6FBA8EEEDBBA02A98B760A000705E85DA0C7D50C48740047F0DD69BF9DF9C62A11F0F116ECA18E4EA546AFA1BFD8D, 149A3FC28C6383506634926425F33DD05C0CC9BD9480E0612F0A5D628B4BA963D6B297A44385F3D1895FC16137FD2A38C24A023053356A993BD4DEC457A46DC2282 -1602DAB3B28F0EE78CCFAD09AE76F273AA2D80C63D849F936E03, 1D4CAF57B94C16D0AA062D2550C98F220D11A3225CA0C7D8E072BC3C241EBFE8D4FE18121599EFEC0BE7EA42C096010B3693CB88F236A53337296723A4D5534B667, 74A7A7D6F099C8B93EB56BB9BFF40AA69B864E8CDC6AF09C5DCCF7B6AB3EBF2FEF2707486074BA12BD1CEFC7D0E3A64D952E4079F7A28CE69FB1E550B66D905FE2 -4208901B17AD2CB6A66F071D0B64D75AFE888252B88DDEBA4A09, FCAF330D53AE4078B34A33DCFA771E7DAD5DAD53FA88CD734FF7E32C4C14FC544E0D55DB2CC71F0C877D1C6C8692B582BA5B4C2BE33530E0038495673C8CEB50D0, 569CCC4D8CD0A3B06DFB4AECB1480D22CA7C9212EC22939834F51856FFFA9D4BCE26CBC1F5BB02A19976670AFE3CD0368AAEAF59D859C2C3087B79F9877D404412 -C619B05147078623F34D1557222E8610FB9986F829A99C2EDE1B, 13858A26EC38DA9043362D4E5A46F65F9879B95C1F9D577360331017C3C78940FBE597F3CB320B9167C33AA1EC7014C3216A3C74C6E6FB713BEF1720BFAE6B85D0B, 127E2683B280F8214B351A92F95359ADF1E8EE20A57123460696269FAAEDCB05DA8EE020E114E476A07716DC8D2D290097AAF4D09C6E2EE25D6F5A811BEBC554BF7 -2524D10F3D516926BD9E74005668B9232F2CC94E87CFCD48C9A51, BC920E011597A73E2EA7EE4340517EBDC3DC684021895227723C47989293D8892799C3910A22BAD473DB9B926D7994D89B9E6364C387ADDA4A7EC4F899EE46EAD5, 17C42CB788E5A4074F5AC52BA2C9DE4141C5A98A34C1BF61D6211EAAD6240CD678E800EDFE55F288332BE5CA9363CD4956AC634A5066EC952636E3862847B11AFDB -6F6E732DB7F43B7438DB5C01033A2B698D865BEB976F67DA5CEF3, 9759EC582DCD5670813AFC147091E485081FF3C3D562AD75F6F568F84F64F5146C47402FF67244B573AFD63955706DDBC77009DE6F74C4B9F9981B978CAF2C639D, 1E2933FBBFE103F66C86AC29389D9DAD27B8762225F73A0F3ECC418A02A63872C791F105C33123C562C0CAC2C6E87106DD93344A311F3AEA85AE4B67980B60C9234 -14E4B598927DCB25CAA92140309AE823CA89313C2C64E378F16CD9, 1DBD594A0AF67FC7CC2C2FE844E483B3A597C84573F0FCCD844351D43F5D57ED973880B55C02D48DFC38AFF28405B3194B0A0C4D4675571F2AE5FFCE93F3E08466A, 80D427650E87FC3C73D52BA682597946D0865E3F9B1519B17E2D5FF1C60F2FCF7530EC55FE580F3857872E97749FF95B6D263BC697E29FDC85C51953D8A72096F2 -3EAE20C9B77961715FFB63C091D0B86B5F9B93B4852EAA6AD4468B, 190DEFE7D1685379A0003C2A0D82EE746BDB82DABE09510ACF7204360D43C0A3314D4EE74633741A52771723FF1B6C6C8526A12A557BEC896878EF9D11E1B8F8F0F, 5BE592B217845D4CF9059046C53F85B8726FE113BDA0065FCC6E5ECC0A06F93BCBEE6A64061EB48C4929561B3DF8C86FB0BA979662DF1CF3776BC19D74E205A1B6 -BC0A625D266C24541FF22B41B57229421ED2BB1D8F8BFF407CD3A1, 11B6D026D9F4851F01D34D7F5780701DACB7AB6DD7CDFEC470E25C3652C9C779A982E474CC1208F9EF2BF596D74E1FAAA49B43E973A243F8A5B60D3FB66030DE7E1, 64BF8C1BD5473B0D461B492183C225F0D0F3AA34DB8B7F4C7C3EE06072C87AD140930A462EFFDDB14FA9E1FE435E7180031B7F005D34A1D0CBE48858AA299BEF1B -2341F271773446CFC5FD681C520567BC65C783158AEA3FDC1767AE3, 164AB3523A729201BD1D19382F1DC55E670705610412A8DDC168FF814FEB847BD56849A951696ECF9E227DE82773B6818C92BB2628561BE0D5A1842794AB4CF1F8D, 22C694371AEEAF25C7BC9072A8840B28B59F672AE5D17261C003030E780FFCA5E9D01D97931D2187DCD0359A4FBBAFF5BE89917A0230A7346577B5D2C93B0D1BF4 -69C5D754659CD46F51F83854F610373531568940A0BEBF9446370A9, 4BC724058FBA3F6B8DD55B549FAECDEFF30E9AEC3E1AB403510FABB0F868CF4B169972DE4A859A88C43BDC5203A926582A4826291162059A5F868E08D94FB6A665, F937E3699DC0F1E7516E0CB5ACFB648B32F44E1C2AFA68BB02C512F52723CBE81B887C41CBBA3D694A7C1EAE2395C687CB605F0019E150419D4F4CA4CC4EDFF17D -13D5185FD30D67D4DF5E8A8FEE230A59F94039BC1E23C3EBCD2A51FB, 1D892EDD5504144A3F3B9F007D54525CF4D84A64D2F673559FD7D456029B02C3D7FA010FDCE1CFD670E16376C2DFD746AC5CF39D2B05B6A4545013B78B315A4E55A, C17218A3397CB115A3595DE79809EF3C4BA2B15ADA5EB22CE4015ADE9E4023EA802B8A8DFF386603A670B4987A98421F86868278FE5AA043141596C72AD92A244 -3B7F491F7928377E9E1B9FAFCA691F0DEBC0AD345A6B4BC3677EF5F1, 3C5B2B112CF11BB235AC1B800AF6E31E35471CBF50AED698BF79299C08A3738B41C61042D970202C3913F4D498B0B41B20A13BA313119CB532872B1C4C6232E07E, 1D5AA48D23764FC6359A13D989F58F22BFE9207B146993E1EDB3056170EC936540D0C9953252B7EEBF97E13CA04621AB62CBE5F1112A4A3C6E7C1CDE43755B73563 -B27DDB5E6B78A67BDA52DF0F5F3B5D29C342079D0F41E34A367CE1D3, 10E8673C755C854DFDA62B87D3BD2D7E63AF695636574BBABF04CD343FA7492FECA79AB043031DD2BDB90CCADFE3F691A89E3A131565D66396CE69E22FD6083BB67, 74AEDED0D962A28B5E758F140239A21455273FA8E1913FD4A53357AD5B54668BAD4A2D8A2A1934D3B33EDADCAB0D727508FBD18E8AE38B5A0600D34ADF1276F27 -21779921B4269F3738EF89D2E1DB2177D49C616D72DC5A9DEA376A579, D0729406F428C80837768678BB983027AE7505DE8FE2622C5CC714FBE823AF37E0734CCE94B3B8740489658705A891F8D880C2DBF11A51DFC26A2D2F182B6A68AB, 7CE9DAF11E14AA829DBF52642EDF9B492869835072FB9913CB795BE185C0C3D6AADF859B2AEC23CE27B64D74C2900A9F2EE47A43584EE9F03509C94C6B05A70BB2 -6466CB651C73DDA5AACE9D78A59164677DD5244858950FD9BEA63F06B, 29F0A9A453EBCFD62C1FACADBE38D211E7313D6E2FD33D958E9F6C3C6A611D7DE6A3770D504CC09646C2C4D10977EFAB8471EE836A808455418F7BC9A453705D01, 11F9663DF4E4A066EAED2CDAF290FB828D6250EBFA971A845728D0521EFC09BC3A916FBCA667F548216E624BF530BF81128598D8A1061B040DDFC557CC88F9418D9 -12D34622F555B98F1006BD869F0B42D36797F6CD909BF2F8D3BF2BD141, 11CE6BABCF9E8DDB31FE971D9E45D4A5C849F9D9595BBD6DFD8EE2238EA53AA41F1B5EBF7D0FEB3362A147A29FC186D8169608EBED6530BEFE559C735B59FEF367B, 3B7C2CA6780FB6E5B8A9C322208D68F5E750408A16D5B64EFA80401871D10EFC5FACC14A2B85A29BD03C1D283ECCB737DFC5083E9BEC57B66388AAC211780C4D79 -3879D268E0012CAD30143893DD21C87A36C7E468B1D3D8EA7B3D8373C3, D4767066E75F170297AF0A2DFC8B992DAEB6C9659AE1853C864141DF8986CBA47DB37AFBBA09F3B5ADF21E872A9ACC6B6A55C657BA30A32A546504E05600264B1, 6AF30CAF30BDBEBAE9B7B9E56104D11E6D1A7727F95C0D6B1EA7B2F289D3C422056A752CE684A9A1EF307CC7A343EA4399B09E88AEA783367F3F33BAD7DAC2807B -A96D773AA0038607903CA9BB9765596EA457AD3A157B8ABF71B88A5B49, 17B8CDA732A38BB4F2E5EED4598C0F559C09162C32A7B58DFB5313FD14993A33E3A0DD74F40731E39A57A02FA77C096DB8A80214245500580BE4C012FA5E0656448, 1B544800212017D3135D9414D74622C7EB388485F74CCAE80C7C25E19C313A39A048761521D73D6DB4AAA6A9312A6D72CD64E1DB67325E04C74233C6E6000D2AE59 -1FC4865AFE00A9216B0B5FD32C6300C4BED0707AE4072A03E55299F11DB, ECDA2A3B7F5A1646BCC1D161E8E1166CC2FC436C2112BF60C0929DC435D1BB987CBDB27DB1CD4A6A4CF270D07C9F90243EBE432ABB6F595134F3675324FEAA24CE, 785B5E021B11C2CCE21EDCDCE3DC893638501F9E78642BC8DF1EAA3BF093441F18675F1B371DE21C912A46594F120299813ED460CE1195E475C6AE1A2A05039CBD -5F4D9310FA01FB6441221F798529024E3C715170AC157E0BAFF7CDD3591, 159F88FF1E2F2FFCCEFD23F8D1A38A4FA2C522F6B9B18147E03D72BB12C9C2956BC994634B0A74DEB22194A011C5B665FA0DB05370781A86D683C9E7564AC7DCA3D, 1E724FC8785486A0F677C45DBA1877FC91C6D7CAA4223B2F5916B86AA814A13337A66747AAC5CE9532C804C03410FB8559397059103147D9EA84BB756E0FD56EA18 -11DE8B932EE05F22CC3665E6C8F7B06EAB553F45204407A230FE7697A0B3, 1610A5ECFE3DEF284957B60A5E93D8A1C7535E4B6ED12C761E3B0E471F791D8C18234675F21F30252E776BAC8CD146EDF36A4A8F8E4A53725DF306A0D3673A57E07, 29E8CF5534BF3DDDFE777C2D2990D3AAC191DE1F484A167A58DF107587AA566247DEE42557C156CF1FCBA36F8363CE7C3D84F36CCAFA3E583EAFAA8EF5B9CACFD7 -359BA2B98CA11D6864A331B45AE7114C01FFBDCF60CC16E692FB63C6E219, DEA62C72D6C78050E75C00035E1AF8DF2989C894D670DB01F349FEEE0DE4E546925714AF015AB274EC618C4768BE274DA79CFA22E94527DFFCFE14F4354D16E2CA, 123797023635761679034FA1950AD28C33B0F8D96845EED5D88C02E7568B6CEC7480A8770191CB2FA14D2D6486F0E10E307AAA05C1056995BEAB328C9B7B6DA85E9 -A0D2E82CA5E358392DE9951D10B533E405FF396E226444B3B8F22B54A64B, B87BBD1F611BF92D894169BFD4F23547E36D67DA0336C63B1533A9CE21CDC96A0C64C6FDD178D3F08F9B8FA67C55F28DC47A6FE8790F53517D01A961B276774EC9, 87F7EC1DB9880B43EF8834F32B5F032F7459A9B9ECB2A75EC011D81351E43A6D5B73541A1D9E5A9E518B9B53C4367330B9492A65DA429EA5C8CFC4DFE6D244B67A -1E278B885F1AA08AB89BCBF57321F9BAC11FDAC4A672CCE1B2AD681FDF2E1, 19A34D1B76A18D0E607EF77C8C814FF033602A21062A1E83A740B2862E66F2A1560D4751ACE19B94FA4CE11C865B64A52519C126A400FA1D4488FF945F4FB5DB60C, 90FB5CAF650751DCEFA16B6E8B0CD5730AB7795501630DA548141AD65516DC20A70FB250991D1791906AA8051C841FC95FFEC14B25E103E3A1471D4B33866039B4 -5A76A2991D4FE1A029D363E05965ED30435F904DF35866A51808385F9D8A3, 1D0831B6FD3CABDA8B1D516667759EB49114FFA69F537F417A4BEC464121659E0A1144DE9F9436F071BAFA3D13AB7B4754110B230411F6C5D7B4E56E3B5BEF3D92B, 392535DF0A31A897E6694651A5093FA9A6AAA00EE4CC6BD57469369E023A76E1249117A3F6986AEAD1F62996397319732FFA864536C678167F7278991F7FF35687 -10F63E7CB57EFA4E07D7A2BA10C31C790CA1EB0E9DA0933EF4818A91ED89E9, E0B3D3C63E8B33E1ED24CC6DA33B6D72742A545C2158D0451194B3E1090BF3BADDE24EB99F58FB01C62524164F6188B0884AF18AAA6A448DA00744E2D1C893C432, C63F7AA54C8955D3909A8E319C919DD682AEE6C9FB4A91D1E5F3F9CF2962012D54DD1D681DF2C18840FB220A64F1D7886CAFBE7A91AB1E96DBB0476DE75591BAF3 -32E2BB76207CEEEA1786E82E3249556B25E5C12BD8E1B9BCDD849FB5C89DBB, 1B418A885DBE10F1DE1D4FAA6625E7C5B50E7F103CF198A5D037719732FB02A24742170611D9A17FF4457DD42F57F31D7A6B9297ACA94F588996845555E9127CC20, 13AB37AE7CC6CADCA4771D9C038E99E1D58874AB894F5B9BE8EC9F14F3A775D0CAC19F8B34A3751896D59D4F0592DEAC2D9C5049176E8A68F298432814ED9773A3B -98A832626176CCBE4694B88A96DC004171B143838AA52D36988DDF2159D931, 1A359A1F3D1667CDC519D36C1962CDCFBCEF7602E48910A5B33288A5EE547B6A3F94EFF8BEC2E547B5A9134A922AE48953B5369CF39839F9A69F11081D76A6BF3A5, 1615CCA77AEB96CE15EAB63C51EAA6EEF5261B162C74B3DC084C90B270DD50EF73FD0ECDFBF4B5BD230C1658BF972875D96165F7591EA4814FE4617F3AC7C283754 -1C9F897272464663AD3BE299FC49400C45513CA8A9FEF87A3C9A99D640D8B93, 1E4FE297E703C93E2B75100F44B6A52BEE272AEDE7A21AE9659E4BA43428E4392C1C27E5A6C9B66A3F412F4BF3843ADE045A1C1DB162D1485755F258D365B48F13A, 3AF8C0549DD3F8B0CDAF9755A6492588FB9685D008ED243C25798DA3C09F15795F7F4E1C82BD554B6C08CB80B425F009652D7692F57AD0B312AC9B05C8DDAC1F3D -55DE9C5756D2D32B07B3A7CDF4DBC024CFF3B5F9FDFCE96EB5CFCD82C28A2B9, 20CA37292450109E49A2A9D0686D1B43B69634CDA8CCBF78C6ED7A29FC1815EF3CB53D5222496D5F0EBB9E835C90493B90363E6903A5EEE8B6DB978DE8A5FAD2A9, 730D3811A46FDF1808F58DB195DF5D2B3A4FBDE18C8AA7A4077A76A4EFCAA46CBA96FA112170F6F430373D2CA457B3D57094F486E9B61CF8EDC1552617BF66F1D3 -1019BD50604787981171AF769DE93406E6FDB21EDF9F6BC4C216F6888479E82B, 18D651487BEF70163585C3C8372872EB86E6A990D4E719C978C91F3A746F74A21360A64BBB66865C3EDE964DFAA2743DB4E4BD62221AA9AA11BFA9F5395E7131FD4, 13085D837CC678A887A51F8D71EA4C19D1D0EA6045FEFF3880B267ED7162D2772FB1B71FED0BAC58BB82414F56B0853864D32E03EE2069EA5C2CC977C8DAED23824 -304D37F120D696C834550E63D9BB9C14B4F9165C9EDE434E4644E3998D6DB881, 180F36A0129B527AA2406918B35317A7B46AA598F972066A1A507358AB092859299D3CC5903E4AC88B338D0ACECFD0EB204A3453E01CE0049C01766EF82C5A34928, 6AD97A0F30FCCECEF1FEE695711E3A496E46DC284ADC1CE2026E14B569F7EE27729D55C1F7C0E4511B3719492A6D3DCA83CF1E28DF77201944FC41BBF73A2CBB6A -90E7A7D36283C4589CFF2B2B8D32D43E1EEB4315DC9AC9EAD2CEAACCA8492983, 1A5B4157F0C5FCB90A58A5DC1D14975B15962F49DBBC2EBA31A65B701C238B0AD022E24E47E587ED570595C9162F3E421B7F7804B6154B8D606641A82A7B5BE5CB3, 12F37607BE36AC4DD47DCBE8015B69BB588E6FA0BC01392B2B36C6E290F5E969BF83A2D1B8CA4EFD79AC7E5B224134650C2C39EF047AF43791A410AB4E68852F186 -1B2B6F77A278B4D09D6FD8182A7987CBA5CC1C94195D05DC0786C0065F8DB7C89, E63A4F551D90B514F4832649A06CAD4523914E6BFBC391A726E506ECE986510A5ED3C551794062755E5A228F3E9957B58DEC10D80FF5A0E479809F375F32274A13, 1EAE6C44B101FD4805CAC7FC3BF97BB1A68149BB17C233E85ECF4A8836C5861AC92AA606ED12209EFE1B1E3022CC3870A1D53C9BA1A4348FAA5FB01BD724BCAA3F8 -51824E66E76A1E71D84F88487F6C9762F16455BC4C171194169440131EA92759B, 1F02E70FE3DCAC36151EDAE25C6D72813CA6DFE36476FD4682E562E82DEEA12CDD3E0B37B60AA10F7195BBF9B0FF61927F444A80AC0B4ED1DB14074F4D5A5E4427, B128F9D80F6E58DAE2EFAFD9B2C284E9FDF43681AFCEB6692E2EC590C3F52B527FE574B816FE8542C5253D7FBCAFE011BCED52CEE20F51CD612F57045CF0EFEE1F -F486EB34B63E5B5588EE98D97E45C628D42D0134E44534BC43BCC0395BFB760D1, 9C0007EA99435B2533454E908173396852D76E54753F270D28E8F0B2E17AC7EB3394A052F105538ACEDDE58FA2B7274911F952015058333A123D5262B241933818, 10C2C8283D9D3709E8297555534587F920ACF83CAA8D6B90EA66486F82B02AD9C0C85AAA0C13E1504B70D7C630F71971ADF6E2DE4D672E1AAC0DB2B8DB0C726A680 -2DD94C19E22BB12009ACBCA8C7AD1527A7C87039EACCF9E34CB3640AC13F262273, 10C1903FB8A32CF20C7A12DAD680CEBB307607879242D08DBDC8C903C11BFE85208701BDACFE16108C22B0BD33D030AA9700E9FDEF79C74E86600134A8222D9A502, 13A88FD6D22788E955666D60008D59354B6334AE2516231C5C03C3BEF456BAEA119172DD74301F53E80344D4A7AE740C1F357F71D645E17338587F036D38B383B3B -898BE44DA68313601D0635FA57073F76F75950ADC066EDA9E61A2C2043BD726759, 1A1CD70F1E683ECF127EC2772C379522976477E1D0678A50CDFC7968FDA4927C4DED88D520474D314F322DBD76571A269931ECD5435281D92D7D57E72E7E659F5D4, 1B627A3A526D1D7BC41D5843B213BAFDDA248662BB6E193CBCB2B6DD286960B95DCDCE96403CED7408EE362D21C041BC0F3EFE412D6051D1E59464D472118B87528 -19CA3ACE8F3893A205712A1EF0515BE64E60BF2094134C8FDB24E8460CB3857360B, 5A543EBBB1F837274873B93FD59123E0C45FECCC0F0F52A037F10332960AAF0193402A86485C3FD904C349EA2EE2A9AB3EDD1C3707D2BB7EB00727E33B782FFA0D, F22375846AFCBA67544E2716B6A90EB56AFAF8C5B82E8B3C8B8AFC0FD624D079028EF685471D7EEFBA4F27CFDD34FF45E966698BBB058AB20B0C256AAD7DEC026B -4D5EB06BADA9BAE610537E5CD0F413B2EB223D61BC39E5AF916EB8D2261A905A221, 1F3F9B2CC9C1E07880A96698C753CF5697A3BB8F2043E26A211026C0AA9D3CEF50B0F8A12B7D99E8FDECCA3BF921D143739AE0D9EA28A2E3DB4BC49590FE16BB4AE, DFEFF48E42A737A51014392E0AEBBAC0282FF7B3E566D53EAC71DF1ED5251A8EE6FD08E49077B755498FD5E5A6C9E15697B7EEA93AC94B5AEC19EB0EE7ACB99C -E81C114308FD30B230FA7B1672DC3B18C166B82534ADB10EB44C2A76724FB10E663, FFC1CBB203F198EF41B40F208C5391AC63C9CB2869E21F21BE8CFB881F832430FB6BAB63B6A3895A29EB3BD5701B1F50ABA29B1EED4B8C3AEDC012F1F08B6C12D0, 1DCC33294F3CB76499A8A19D7F89D88181C0CA4912987F9120C909170CA20D2E6B669E42D46D2EB14CC0552833C71872419E098299EE54D96F9BCAEEA80EBDC5FCA -2B85433C91AF7921692EF71435894B14A4434286F9E09132C1CE47F6356EF132B329, 1D6A85F8B70108861307710CB8D7BB3D1B591CAA4610DE8C7F4DF1EAE6DE9B51320F1E21FC6515B1AE7F2CD3C00EE1C9264BD9696D56A7EC83ACBAB9203EF957BCF, 1006A5B1FA539993E8C089225C958EEE173E63065CA68CDADD692E0BF1CB9B34E2100F62B2AF92AB803C6E8A00B2098EB8402596F1472829B756CA66BA3759BC0D7 -828FC9B5B50E6B643B8CE53CA09BE13DECC9C794EDA1B398456AD7E2A04CD398197B, 1E7F332DFF1E2D2459A67A0FF1B84BCA3D46D093F583C29D76E1452BB750A9BB4187B1DFCA2F8B56FF032BD43F0FBB29D6D24933E1197DEFEA1AE89944F94179747, 12CFC33FB4BFEE0FC122E3DE5EDC67ED76B61A13F27CFEA2137B6CAF42C002E8A5F5E61449054FCAA1C5E740E1B2DBF21DE5A816DF2D892C2C20C949C46CE5F860D -187AF5D211F2B422CB2A6AFB5E1D3A3B9C65D56BEC8E51AC8D04087A7E0E67AC84C71, E953F7910E7A89904FB2E7DB9B4F9AC1D62DC5B40173273307270C677B51B36A8DC2FA7953AE188D8519F9FACDE50100063AB4653C0AB071E0596EE90BF675E9C6, 455ACDA2038D64CB38D887D510216B1A1946E148D7955808194CB0680FEA8E43CF69B76C36B79BA7CAB44BE515ECB27D25D96CEBCB4A19AD4927B18CDC7ECDBF71 -4970E17635D81C68617F40F21A57AEB2D5318043C5AAF505A70C196F7A2B37058E553, 5383BDA32EDE6A7575F29F48F9D84289D00645674D61DAA74A1ED23CF20DCBCEBA7C074AFEAC4A472431D3E9AB481D6350AC567F818EE71646C579D45763A0B669, 1CADEAC716DA20F02E7B10F8A7334A7692B5BCF85AD19B8F3AE1A4D7BCED238FB0AB6BACCDA35A12A2F2B8CE9A4E02145A7B3B6CB099F0928E7F47097E6F5F2C7FA -DC52A462A1885539247DC2D64F070C187F9480CB5100DF10F5244C4E6E81A510AAFF9, 1BD4579B3E45CDD3F5375E28A03264DA8774B801C774CCCAC16D102CEC7C6A5803BE118E1AE9FBE8F3CBED76C3C44DD8216826F32B6B01520C195DA3FC88E4B115D, F0E428AD2666FB219A2FE10824D4BC3252A2DFF7837EF9C43B2086249F882692C38E6DAB2F81968709393012FB6295133656D3C8F8E761368961E393F6DB838159 -294F7ED27E498FFAB6D794882ED1524497EBD8261F3029D32DF6CE4EB4B84EF3200FEB, 6B46BB397CE7AB596A2AFB3C34EEE6834DF1491B47F0DE7B3D2990A485753D6C166194484AFB55F38C5175436E5A9F128BE0BE0019B24AB71A34E42842D73748AE, 11925CFEE57807337021C6F47CC72712C03E7EE368DDDC30E0130E9370D807069EDD619A21CE113A07B2063F9839B3954139CE9D1CADC158E638D19307ADB216ED8 -7BEE7C777ADCAFF02486BD988C73F6CDC7C388725D907D7989E46AEC1E28ECD9602FC1, 18729744522369D94181089B87BEEA5BBF0C661F21EC5BFCCB5B3880449E3C4DE92641D043B46E5572F2C9AD3836420981156C5F48760E7C393C29B42687EECAFE1, 16917E1777E8BC48D8E68A06A315ACCCB32A37B6E6EC3FE99E6F8A633DB23544A6191730FD4D64CD60256753E9A07E5423AF425955231452821380617FD34E6859 -173CB756670960FD06D9438C9A55BE469574A995718B1786C9DAD40C45A7AC68C208F43, B8C1A2FAA4A38C6B5C086B3E47FEF5D32F3AC9CBC21BF67EFC711CE011B443F117208A16C3694C16BA84E0712C243C13B2F4F7BEE7B1A37F2AEB6E7E544F21F0D0, 9C51A7F89AEFAD420E44B4DFD3BE16BB66E10342AC8BA42F929F18E25B59D22EA2EB1F83D39078AC903817136B4F472B5E87EA2F6CBF912BB7038F5504FF8C8914 -45B62603351C22F7148BCAA5CF013AD3C05DFCC054A146945D907C24D0F7053A461ADC9, 18AB4B785CBE1161A362E5F03D845438758C58A5EF9620B963D5B42A1EAA8F4C49AD5F9FD2082E22E5065D2FAAE0F0E1C83E294908C99EFCC6064A532E52AD68CF9, 2538470BC76D01561C4666A8E69BC626D44B52FD225043639CC3E9922E38A5C292749F8205D21CFF8CAE96837FE677BA2B9B7C1C8690FC417E8EF2E3FF03F3DD6 -D12272099F5468E53DA35FF16D03B07B4119F640FDE3D3BD18B1746E72E50FAED25095B, E4A52924D439236B1A1BAE96F553B2311FC0AC49B5BB80066B00C26AA289618BE855523C7E699B6AD2AEDD03DED3A9F6EDCA065FE37E5FA697E273215ECF45BFB1, 11168C369531E88137F59DCECD60055F4727B03641476ED173E46EFD6B9E89CEFE115AA4A7A9391141F7A84707C78FA2ED89A26C4DC12DAF7C75245F0EDB85151DA -27367561CDDFD3AAFB8EA1FD4470B1171C34DE2C2F9AB7B374A145D4B58AF2F0C76F1C11, ABD75587F23664C736EE9C39EEF7EA79A8A5E756607E6567E0C2E3EB8A3A6BADB017A40DAB56FD0F56572ECDD2986589941DABCF7D46F840323CD60FE200AD01E6, E5DFB5B010DB7E1A6D634E9AE22E141551A6B43D3DE32B45DDABA4096500ABC1F50E2E2522CD9BDF74C6E6D340F35143E9885550FF2319986F17F6B85456629621 -75A36025699F7B00F2ABE5F7CD521345549E9A848ED0271A5DE3D17E20A0D8D2564D5433, 1F3DC34CB9A1697825462062316E191451238CB41A9826DB5E53A3A082B9BD41DEDD03E90675302C81A35294F0F337D86DCD7F71F3362DC7BCD37A37622A3B9F061, 7258ED67EE1F89F2D00BFD90F18F8D5405CE23509A3F8893B94683794D19D5680FFE4B05C91207C29DD4F44C8D6C9091CB254463ED419E534115A93857D3D99D3C -160EA20703CDE7102D803B1E767F639CFFDDBCF8DAC70754F19AB747A61E28A7702E7FC99, 197339C4DB2660663C9BA318F1A871179FEDD145084F5A4607BF0BE5892C590271AC7A22DC1888F066931DB069CF1F9DFD4A26122C64DA097581DEED417FF021FC6, 1707C2DB68D0658BBDDF5C311A8DD905538FB345321BCD65B7275983B3599873B631AA12BB911AE829523C5542D2709EE3B9F84BB509EEB70F5CFEFB23720E432FC -422BE6150B69B5308880B15B637E2AD6FF9936EA905515FED4D025D6F25A79F6508B7F5CB, 19A9A57FBA49EE9897F17B0D51802625E0CD5635DD00253BC0F86066AA9CBA83E9A44E5CDE14227C29AE0C37476E38E2D9FE4A4E85BAF6E3E4DE8B1E8C1E2B92668, 1E4C99F87C7A0C6E6700882ABBDF476A7EEFAEED07093D36A212F9512A8321B60E3B2C4FBEB0F5119A33AD5340A162882FEA16841521561708EF5335B9C36B27202 -C683B23F223D1F91998214122A7A8084FECBA4BFB0FF41FC7E707184D70F6DE2F1A27E161, AFFADD86FDAECEB5FE87E5D68BCA5D6FC66FAAF75B235D75056C703E5C7D08C8568AFB7FAD0318B455BB742E5C5D573D0E777F1AAA6932F12F1B4CAC01D4F48B9B, 1D46544CE165765D7DB51CF3C4D49E75AAF0D8E19736E38988047627CAABB924A9593FA5F6E986330D6C77350A77B0560BFD3C6A2BE3A4DF3D4A224F033BC1DAB25 -2538B16BD66B75EB4CC863C367F6F818EFC62EE3F12FDC5F57B51548E852E49A8D4E77A423, 9D634B0CFF495B37AC29CA30231766588AEA0BF70E3B50A57BEA4159BFBDF3A728D1A4C508A0B9FFCD7A5FE17060BA9C13CFCDCCB48C73230B8D980E62FBFB3E21, 1AF3E53AD7A892A66757823448E49F147D8FE84A0FD56C34C6D536FB2060DCBFBEFE3D17A4981549D5790028D34BA5673F420B1AB09364195E8DE4B3130D6533117 -6FAA1443834261C1E6592B4A37E4E84ACF528CABD38F951E071F3FDAB8F8ADCFA7EB66EC69, 1A6571DC66DDC875EBC7128C7FD1DD5A6838546BD6E101B7925BF891C74B3CB50D29E517DBCA28A538C5AFA9296854A263CFE612364EAD8566A11B1552474146537, 1C81C3E9D9E771C0BAA09224BD0008A11F17F14B68136C61A02D03876711C08FFD12227570FC67DB8D5A7DEC702E1BC928EA3EA3370A8F7455113338D8A27965279 -14EFE3CCA89C72545B30B81DEA7AEB8E06DF7A6037AAEBF5A155DBF902AEA096EF7C234C53B, 8ECE9055639C581B93707DC57F1EBFA5AC5BC5DBD73A05E230CA4C7C1284FE0D47BD8E42F10BEB6576E2070CA1D307D23E5EFB51D1DC20AE19C50BDDAEADADB666, 16CECEE05BA436340253C616F1DA3DE5CEB5A96BA7C077811E3AEC39A5B06B829A959213655ED6F2646A6AD1F3FCC71D18AB5B6F85BB72A15A8560356D6BF0C43D2 -3ECFAB65F9D556FD11922859BF70C2AA149E6F20A700C3E0E40193EB080BE1C4CE7469E4FB1, 108BD3A64E5D20457FFBA7C8D687322232398D44C8A2AA2CEBA2634ADAAC5B95DE65A32B34CC4A9ABA606E2100ED7D968AA2C29B8726D94060CC82D833926D7B9A2, 10D2C7977E4F7CAE8ECF0D06F93766DCDF35DE069D00D26086193305A6197E392FFA92061D019DABC648A9DCF430AB838F2CD46814A3F627618AACDE1756D712333 -BC6F0231ED8004F734B6790D3E5247FE3DDB4D61F5024BA2AC04BBC11823A54E6B5D3DAEF13, 14E82F5E00E4935979D0512654B1B9D2CABF8257FD5BE4850FE76DA5EAD5E84804975D2DD2866FC1784EEA04618E183F6284FBC7C62AAE47013EBCD4590F2B3D6C2, 1A7194BE49BE87849376BC8109F94547056936DBEF812319CD75656EE7F54A152576840BB0399886E9F80B76148208B21E53E0CA4D28F1505421CBD1C6821CCE476 -2354D0695C8800EE59E236B27BAF6D7FAB991E825DF06E2E8040E3343486AEFEB4217B90CD39, 852E915A7A02E40E80A2A8235C2B7A8D45E147EA0549D43461B4BECE2968967F64D8990FDC738CE9DACBDF1FB766240F6F35998EF1E4AEF80AAE4A6EAC04D820EA, 1767EA9A64894B2F66C3076202B9A2AE8805C46FD459A2C8E6110EC78455439593C5EA721489364487EA6D90F3BF8E67D0A0EC39BB430FBC70527B6EBB951DC0B12 -69FE713C159802CB0DA6A417730E487F02CB5B8719D14A8B80C2A99C9D940CFC1C6472B267AB, 1D7C81ED3CE43F21CE09B33EE9A2A985DFF8AABAC817BAD6A99AAD667F44464B529BE9F198546118D5E3525FF0BABAB2E880CBEB0BE003BB04CCC7A5A5D0941894B, EDED4661C5126B5462FB1901A924B7F8FAB742D6625AA9B70DC077D1AC4FB2D30230EF300FBB29B8B4F2A100104A9E630230346EE34DD00B0FD029130CE8880C4E -13DFB53B440C8086128F3EC46592AD97D086212954D73DFA28247FCD5D8BC26F4552D58173701, F5F9A310F3CA4741EE02E3B2A6FD6D74590E9E0F1BCF0CAE1493FF0F558885F75E7A028DB98F343FA0F64D62AF378597FBDE10796267E481C2F5F13C9379F68C4D, 1DBDD5A00E6232A7ACDF3A1C381DC6C6FFD35DF91393ED9FCFF358CEDD9AD0665EF4BDA23D3DF531EE648C42FE52BACCBA29E6111EBDBAE45AFB075312DDEE6863B -3B9F1FB1CC25819237ADBC4D30B808C77192637BFE85B9EE786D7F6818A3474DCFF880845A503, B7AB75D4B652C91083634B8523C1F2113CE5AA18AF727EB9986929BF5817B90B8242869ADCC673A993B688191E06215D208B31B422AE2E7762CB383F3EEA071B59, 40C822C2A70CD378592127F2B43B1EE965CF4C8B25D60E620245F6040378CEADF42112282101EDAD44F4A1C0089ABF8CFBAC1AB25E429E5B0F9984325216BB2142 -B2DD5F15647084B6A70934E792281A5654B72A73FB912DCB69487E3849E9D5E96FE9818D0EF09, 23BB0BBE506F35E1D04F7DF9F4841129F90F77B6E8B480055464020125C064FE358CBEB08954ECFF1677CBA0D685433C2D3D927F60B18EC557452B59B5B13C16F6, 18710199C5E7B1DE8A3F3E2F8FBB324DFE81C125EF81C54FBB4897FBBFD753FF1F3C5622C2346909D139BDFA7D8C3C0FCA0FC359F427C1FCEDFBF7BB8A6CBF2B312 -218981D402D518E23F51B9EB6B6784F02FE257F5BF2B389623BD97AA8DDBD81BC4FBC84A72CD1B, 19EE555DDFED3875BA08AA6145D62D17D9CAE348EB031320A3CD088150D1F90EDEBDC61B482E97D19AB229EEDB23F1AF9BCC62A6892AD1529FDC7B0E6234222C7A, 9314C13F2224643EE0B019BAD6F3774F7CB60763F83B546D3B8A7946FEC5209857BEF2D099EDD8C2FD215878EE6484B7BE3CC3044EC098CE2FDA83091B264899C5 -649C857C087F4AA6BDF52DC242368ED08FA707E13D81A9C26B38C6FFA99388534EF358DF586751, 16075372C721674577CEE52EA455128D3998292A38BC88B4EA697D42143325AF07DA057F65CE57C90C0365DCE08F7E5B95F2550A1CD0C28D3515861FD0177EDD209, F5BED40444A770145B534AA1D862292CB1340409A356555F75F0EEAA740C4F86CACAF244DC66924CB2280E5CBBA6789F4EAE28A1D08CF0F36A6DBB446B87FB2338 -12DD59074197DDFF439DF8946C6A3AC71AEF517A3B884FD4741AA54FEFCBA98F9ECDA0A9E0935F3, 15515C1294E288CF1596287A48613C5FEBF86E440338DF09FDCE61A7062FA047D1F1233DD630D625AB52A0E2240FAC6D61026C8A11755F4FC14D90B0DBB229A014C, EB06C276F432EA10AF2E558DBF476575772B86AD17DCBF894E0DA79DE89EE46D55A4D5E96CB1AF668353C1CF6B54B3A4A2EFA65BAB36AFC775432624C1D2D26CB1 -38980B15C4C799FDCAD9E9BD453EB05550CDF46EB298EF7D5C4FEFEFCF62FCAEDC68E1FDA1BA1D9, 153A4BC626A9A8D19D8A1646954B1005036DA02A5B519A51540A55C53F3E0861DB7FB007503F805521C6361B6964C3CB41B5FD0902047111A49175F5B24D5F9DC40, 1D5F0402244D4C1D45942553CAAA51107637E7C93FA54A83C9F5D55A80775AFA1AD4374EA2D592008AC100414265377BA8BF3EE11C00FBDFC1DE4CB9A0FE36F9721 -A9C821414E56CDF9608DBD37CFBC10FFF269DD4C17CACE7814EFCFCF6E28F60C953AA5F8E52E58B, F1062444D092FBED2979971EAB4D274A10262112FDAD0629AD5ED2232BA94BD9ABA9A3991686823A631E6FC37A7DEF9C9AF9E93769CA10308E7DDEB39ACB042DA0, 18EEA79622BE1B249B37021D0A2B2F3CB16DD80B8834CBB944BB5B7C648C0E9BF6AEE03209992035AD418C6B3998BE7C7CAA2A9C315236CE808CFE32FAC7F9B5DB -1FD5863C3EB0469EC21A937A76F3432FFD73D97E447606B683ECF6F6E4A7AE225BFAFF1EAAF8B0A1, 16A7B3B8A011629BA8FC3D6B73239D53B2AA8123F398481BA5DEAA77914F223F158F6BFE6A43BC783BD36444340CAB70371871835BEB71F25F38150F2BBBF0AAA20, DE1A1D2DC84533D4CAEDF36862796C7EFE8F3FBB2477516AA2316C5DCAB66ED9D158BFD6475925B8EE68A19C506D04B010B76B73C8953947B450763DA698A95873 -5F8092B4BC10D3DC464FBA6F64D9C98FF85B8C7ACD6214238BC6E4E4ADF70A6713F0FD5C00EA11E3, B3A32B8F0BF1261463F92FFD6CA9D33B7822DAD48CE12E202380D86C1CFA67E1184981A0C2553D72D4145AD6F8A6E2B6CAAD43E36DED935D27F5E58C8CED0ABEE, 7EAAB85F3096772A6BD6715D78ACAB8F3BED1DA00714FFA32D89C84005D252CE762835DDE9E721102105E475C633181680410B3285365E34AE4F7ECDA742DC404A -11E81B81E34327B94D2EF2F4E2E8D5CAFE912A57068263C6AA354AEAE09E51F353BD2F81402BE35A9, 16293E3C8419D299E80B94874AB33A48B6EF4C68F8BDC5383FBD324DB60722AE3C324E634F5EC766F429AA82F9B37519D306C9A9B171B3FE010BFF6FE248E776421, 1EB9D1B34120CA7A75F4422A7FF649DE4A9053CC549688E06F9C9F1601F277BD8EF927BCC5250429612EE754F95E79EBE89D886F20A639022168AD47CF8E6C5B1A9 -35B85285A9C9772BE78CD8DEA8BA8160FBB37F0513872B53FE9FE0C0A1DAF5D9FB378E83C083AA0FB, E8B32CB499ECB3E01DAE281F97368802E734B54A4DD62197D713386ACCC0D268AA6FB0F4B04A17E7571FDEBD7B82D9AAE179B602B002304C0C96B501A601B40106, 185428F1BD795C5C11FB45B9EB69E2D12BB7F2F4608BEEF4C6A9317911B0B8B5740BBD54BF899812AB38EB6ED33A7928AE6B9AC49FDE34C3009281D6C62014596C1 -A128F790FD5C6583B6A68A9BFA2F8422F31A7D0F3A9581FBFBDFA241E590E18DF1A6AB8B418AFE2F1, 28328B0CB88F54810A53575CC43C0C8195C0ECED24B4C4668E6C43A6F1C42FB6FAA8D2A9DFE090F135B3FA4FD80208A03CEB8F5DFBBB41204590A670F250F80A5A, 1E646A13E24FD0ED26166AACF070A913B06502ACC9F4BEAEBE1C1EC4347FF0B56A3BF97A11C55C1EF82CC298C393D836C929A43A6E605BB4CA1E72DD4D02D50282E -1E37AE6B2F815308B23F39FD3EE8E8C68D94F772DAFC085F3F39EE6C5B0B2A4A9D4F402A1C4A0FA8D3, A01C54C9314D22DE68E6F90046F8CB4EB4E06D9F57209D3BD6F1E043AEE9A14056B9FED753DD1B054E8104C060637F8FFB22BFFFE77C8417B1977AE3BFFDA8B0EE, 1DDCA880C7AA445F1B154277E9EFDF46E65E1BD60D49875AFCDFCA1041C5D79F15B825B2F77787D0A38518BA80017215CF3A5A77F0A73E4E99FC8E5CAB3FA417325 -5AA70B418E83F91A16BDADF7BCBABA53A8BEE65890F4191DBDADCB4511217EDFD7EDC07E54DE2EFA79, 1369E0815170D373D37F3288BBCFDAE28DA52FB130FFA71157E472A05E75E9E945E8E04220B3A578EEA28386611C63AB52967841F102985CDB40A5772F091721979, B13A78147B142DC325879992F8539804AF4674B0FDD63B93E945E9E54C000838E76429441F0E8A0F497B9EDA8BAE28437B4600490A88C7DAA6D10C1125B0992A48 -10FF521C4AB8BEB4E443909E736302EFAFA3CB309B2DC4B59390961CF33647C9F87C9417AFE9A8CEF6B, 36DA5963E99910A1A68B127398D3FFAE34EA7CFBA3EDE70E12146FD4BF8C1701FDD1C38CA9F73AED1F6023D5C0A0B2B2B05159464CA22E82AAE4950E46C7754117, 1C7D90BC4A5A2A568E89E2D00AFF0AB0D166581A72786380C5A73FE196B4B5487281681FA883F21BB6C14753E696AD56CF9EDD192B1DFDB6FB9933DEB19F74529F8 -32FDF654E02A3C1EACCAB1DB5A2908CF0EEB6191D1894E20BAB1C256D9A2D75DE975BC470FBCFA6CE41, 16A810D97154E1989F831932E98792A3166E6382CEC6B5283EDCF1DB34A1499215B3D11401B0D43CEF4D1F3FF95AD42B4D8177D292EC288564FDFCF4B231C0939FF, 160AD3F0BD27347233370D71201E3356E37D8770C40C56CD99AD699D5C9AD38FBD2167C8ED288A44F08963FDA2820DDA65C36513FE5C42409542E4802E4BE5B5BFA -98F9E2FEA07EB45C066015920E7B1A6D2CC224B5749BEA62301547048CE88619BC6134D52F36EF46AC3, 1807A09363E63533ECCB0ECF180959E7ADA64C6C0A1048D7AB81DEE383C8466F8F8A1A5098EE5CD6277806412947DAD2686A7FEBE93066D02ADC4AE6E0E4758C884, 50443D8C393AF39EBC95BD1F76F288260FCAB0B5A494A064CAD1F7A2AB1D273DDD7BD520C1D7B91D622F2D9D5FB79A46FE5B3C00A17CD7DD8B750B05D50344F8F -1CAEDA8FBE17C1D14132040B62B714F4786466E205DD3BF26903FD50DA6B9924D35239E7F8DA4CDD4049, AD85E38956CCC0F3D48DCD3D46AE51DCC5BFE7CE21F7FA9C1C757796AE8174CFBC0CEE9B1894E52EC8243D012DF6495C6CFA08665F9C931362EEF089CD4F0C4C44, 146336282DAF91B0A26EE20548F978915DC6A84C1361D019587A98A38BA5D0988EFE56031C71BA4E74F0CA01261321DC3243943D7C9D32ADB45909A938DD3A8A248 -560C8FAF3A474573C3960C2228253EDD692D34A61197B3D73B0BF7F28F42CB6E79F6ADB7EA8EE697C0DB, 1E66D6896F7302DAA54CCEF2172C0265DEAB2BA08847C246A631CE6907D5EAD4CA78C299D41B35C4EA4477EAAA79BE8FBCF9B41B1774F8B1EFB54CD2689A8D65D39, 63AF0ACA68529DA67E4DCE456F667218A32D15EC4EEDC4F6976AD85543DAB81459B2844A463E1EA2378C3EE981C75C219E0CB5AFC5FEF7F368EC32B1F35DF22007 -10225AF0DAED5D05B4AC22466786FBC983B879DF234C71B85B123E7D7ADC8624B6DE40927BFACB3C74291, F5ECF3A8796865EC1A21C55D77D467A56674814842BBAE32EE0A2D0DF0C02EACDAB345798BA853ABEAB13C017B99DA5F7BE4C62950B55263565C7F938D4E8E6EFB, 31BBD71552D2A85EBD6C1C4AE68FA03C8B5C4358F65D39DBFE5F40975611FED7E0068430225CCA1255A1A0F190A81A097243501635111CCAFC62B98CC74587C7D9 -306710D290C817111E0466D33694F35C8B296D9D69E555291136BB787095926E249AC1B773F061B55C7B3, 1E958824845860B6DE2C49F60DB58593C7DE3F3D40DB8C239BDAEE35CBA77E86BD9785D9FC738454364898EF682904FBD69284B4CA8579F819B605A00E90F0D3951, CBF7F4DDC6801FA907A0347DFF562B217555DA0CD819409D1FCA92470279E06FEF56514E434D3E0EAC3F4D81B4CE716A89F061A9FD986626EE7A4EA424CDEEF777 -91353277B25845335A0D3479A3BEDA15A17C48D83DAFFF7B33A4326951C0B74A6DD045265BD1252015719, 1D089469ABBF7F177EE086B20D8F4D560F9D2F65FE301568FCA0E9FF8DCBD99D56A143D898015694A23F7204744A39053CEFABA04AF3FE0713C8599ED422409C3C0, FA0B96A5638E827A73DD30F585BF1F5BF2029C939E003CEB4E27CEDCD24420AFE4B7868B91B0127E534E9E46366EAB6D142B9CB7890E0470F14F0F34BC6CA987EE -1B39F97671708CF9A0E279D6CEB3C8E40E474DA88B90FFE719AEC973BF54225DF4970CF7313736F604054B, 7113015C26BF1BAE03B69F4057736389DA5467B2DA955CC58518E853F93AB4581A8B30A01E2597CD4425DA9EBBACD763EB41B7A4C961EB6F26A07202F0C9A23A79, B4EF5757BC534D27C76A7BA8563CD66ECF1E8D42D1F5EB77512E8DA4A62C68128389A3F61C4DB8EC4241FC177BED538226A825A2582591D69218ECCE47B8DF7240 -51ADEC635451A6ECE2A76D846C1B5AAC2AD5E8F9A2B2FFB54D0C5C5B3DFC6719DDC526E593A5A4E20C0FE1, 1274B0343F67A9984E16FD0EE80743056214310796F34D3976A6A8D43CB020B65C3D88DCF58B6C3B7C75A4F7112DC21B3CEA4BE2A80D099C30C44F3E2F504D3619C, EEC43E2E523577DD55CA396E74B2C6C6CCEF6CD565D5718471A0F73F2F74A152545F336682FDAB3DA0599DD52E46AF2A33F7C5FB466AFAAFCAA5918B7651A9A673 -F509C529FCF4F4C6A7F6488D445210048081BAECE818FF1FE7251511B9F5354D994F74B0BAF0EEA6242FA3, 12E87A58496C08ACDE681A371A002932F96EAD5BE0DC83CD756C0C0FBB69CC5CCB27A0256F78751C9DEC296BD9AC216110ABE2D36FF5C6C0E719646CD9BC9848CAB, 13D51083E33466DAA74CE90C42013673B567A1594DBE189EB584B67E9EB02A9574AEA7C9AFB30539B2D82A25B0A10BCF86CDE5ADA0F29FC861C1582AEF897021475 -2DF1D4F7DF6DEDE53F7E2D9A7CCF6300D818530C6B84AFD5FB56F3F352DDF9FE8CBEE5E1230D2CBF26C8EE9, 1AA70532FA8B2911D34749E66DA1BB5151C87B1411820B84746DA5D9551987848341D861DAE93FFE3FFB9A213D928CE02092C0BCCD00FAF16D22A8E02C8358752D8, 1AB4A1B3E648A8E3620136FF7445826600E94506F09ADE6B253515F8928C2CA997A1A665324082891388FF046C92E5A33B6F34A289BE1D1D2DDD32C9877287FFB57 -89D57EE79E49C9AFBE7A88CF766E29028848F925428E0F81F204DBD9F899EDFBA63CB1A36927863D745ACBB, 1FF46288A30152DA6309081DC1BBA11624FEC902A5A959ABB3A46C03FC445DE1BA6A71C3380CA21D757A1C07AFEC03AD23C0F515F1E9AF43039AF86B0115F13EE6A, 116660F754DCC1AFAD29679A16D50F35C37B60424E29A15D64F4C181A5A38086473EECC9D052E5F87F35492E054762EC80A51892F1A3D8AC963BB801936ADF9E032 -19D807CB6DADD5D0F3B6F9A6E634A7B0798DAEB6FC7AA2E85D60E938DE9CDC9F2F2B614EA3B7692B85D10631, E2E2659D183137629CE339815983912705862D112419B5CD3FC4EA51C9544A90BD1E588801913F12BDD30AF3154E116D9CCB5F745035FB4AD89CFA93FE4A25EA38, 148B85F716EB71EF8E4D698A41073FAEF30832AFA80A36A32D40A1F1B2B5D2663187C80EE5A01DA95D88207D6DE6AD84B50CBFC4D3CAE65C9B7C771F3193468D326 -4D88176249098172DB24ECF4B29DF7116CA90C24F56FE8B91822BBAA9BD695DD8D8223EBEB263B8291731293, FBC226F86D592BD29142CC8317D5B3ABE29449B677CB1B82AC622039DD89DBE1AFCA884E42CB3E07B2EA8115CAA0304E60DB626CFAC619471B750EFF62A4726E7D, DFE3C45B09642026C6DC0863F6F502A698D7188E68170FB79A46023B2C986C245F246FC0D53EC4409A81B26979866B9ABBD4D2083F23B628260B93BB914FA8345A -E8984626DB1C8458916EC6DE17D9E53445FB246EE04FBA2B486832FFD383C198A8866BC3C172B287B45937B9, 7F9538AFB15DD31A0B7EACC6912CC76FE8110FD28A900EEB0AA2910EFB693E2124520AA7DCCA641DF1D78D91091F901C759C932884245DBC6CE6A28D5934515691, 3A9DEBCE202031C250E079E2269CCE0E9E7A1E359E14F3A7F8D54B5A8A65E452F4A7ACDD448849F267C535F9C4DB5DDCE46A5B7F8120F639387415A4C15CA50058 -2B9C8D27491558D09B44C549A478DAF9CD1F16D4CA0EF2E81D93898FF7A8B44C9F993434B445817971D0BA72B, 1E5FD5C9C75CA0C2D3C43ADC8CD5C3FD62AF802CB61953315E9D4A1B8C195A62F5C2F8CDFB283D0B0DF7F11B48B138EF0AF7FB0EEF04E521D643BCE26BF6E279E44, 17967B0FAC085EE5D20FCB0B2709B5C248F24B65306BA860B5415A72D4408C8A2A7EDF85BCD36E65F85B545657B94AA209EE994FCA0D8FA2585F58C32F133DF02C6 -82D5A775DB400A71D1CE4FDCED6A90ED675D447E5E2CD8B858BA9CAFE6FA1CE5DECB9C9E1CD0846C55722F581, 1BC6904BA16978D90118BF7847B561CCEABDEFF76649BF1DD7C7BFC4866BA3890F36A0436475DAEB48036E10BE570A6F3642BF69124C47251AF89A9278CC6E56AA2, 1614884FB58B7765EFB0A666AF4D03FD52940BDB0020AE8B94AA36B4942CB4709F1264DBE0A5AD0BE53F57F8270FA443D4BB44D5534BA201D4704C12ECDD008DCAF -18880F66191C01F55756AEF96C83FB2C83617CD7B1A868A290A2FD60FB4EE56B19C62D5DA56718D4500568E083, 9B1D4C6D7F418D04F09AC17C612276BE0D03341EC838F048CEE9A2ABB73EC54815C99E20C51FE7DB47F8CF2A282DB44AB14A1FE920413F60449964B742F8B02C3F, DF24FB8FCF13B35DFCD676EBFAEE3E8D6DCD9C3623A9465BEA96ADA57E4B41AF31BE04ABD82400ADC1E419CF1A43AEC9C024703710660BF3A0ED096AB88A4F58AE -49982E324B5405E006040CEC458BF1858A24768714F939E7B1E8F822F1ECB0414D528818F0354A7CF0103AA189, DAE4D9F107CC11823DFE8293A1FB69ECBB9E946ECB97384C444B634C39FC02074DA7BE04D7FC5B68F73BE754DC3B32CDFFA82E9E1D6A3AECDA4699D0CB93F7F9BE, 16841ACF02E71D74B2036B6F1B1A9E060BF30E0F3FBDE6C6100D21040633CE7DC894D7FBDC785498155AB8E84582394DAC0341339C1DFC0078F316F9624285DD2D8 -DCC88A96E1FC11A0120C26C4D0A3D4909E6D63953EEBADB715BAE868D5C610C3E7F7984AD09FDF76D030AFE49B, 161107D0364D04CEFA9EC04CA61E26ED28698B8F90C5884003369C845A2AF92396C1501A56A600B818E688AA9B913E90402DD2C11A699640CA5B27961003CAF5C5C, CAE4335DCA78ECC080C6D6251E525E7EA6F29AF9D5220E9100413AEEE592C4C38622F902D5D29B1A8F96BA41E004EA9F3520DF16332A48C5345E600ED1EDAE178A -296599FC4A5F434E03624744E71EB7DB1DB482ABFBCC309254130B93A8152324BB7E6C8E071DF9E6470920FADD1, 1D61CCAAB9B9A1986CFD80B25C58B5BF17349AE6E6AB487D1CE00C445E89568C1584AD342E40F95D39E45008499F525218D7F3F386C8A3818475C4D4D260C9CBF4B, D9052AF5E8194BC8A13EFA0797FD4F1585B4F79D97EE261FEBEEC68C15B0B6E807800483694A5ACBB1993184E7741D78956555510C1CCFE285F7C3FBEB1DD25520 -7C30CDF4DF1DC9EA0A26D5CEB55C2791591D8803F36491B6FC3922BAF83F696E327B45AA1559EDB2D51B62F0973, 1516B4B8A638A216CCF3FDA789F265E0710C5AC5CC7CA9ADBC8C21992A7ED6D0BD282056E99BD2FB920EDB5D6EBC4AA1594C2D49B7F16BC4884F120456BD478C1A9, 97A845B03C195EAF74BDAC8ED9808A4655D7B141023599BAAAF4FB9F4F3383875D12BAE755219B7D1840A88A0994222A1D36AB929B9B12AB3F825E7665200A1AF5 -1749269DE9D595DBE1E74816C201476B40B58980BDA2DB524F4AB6830E8BE3C4A9771D0FE400DC9187F5228D1C59, AA06655EA7BAA2FDC21918D55027FCB1CB702DC30D410703BCE95272371A138C95BD13E63AA1F5CBDF3EE18457EF526DB733067BDE9F926BE6E011A32F0D766316, 14153B0F8B6C4AD4CEC216C28EE58BA2003B3092CE98995FE4F3D90B0814F71E2E027621007EBC567127CC20DBC01BBFC88BB23FA65E3B5D7E62FD21EE041AD3D77 -45DB73D9BD80C193A5B5D8444603D641C2209C8238E891F6EDE023892BA3AB4DFC65572FAC0295B497DF67A7550B, FB33691F370AD3058190F92BA7F06D284FB8DB5B15FE90EEEDFFA7B1DA706AD4EF7ECD864B6249480E8D91FABF770AABF36DBE26B52791DC164ECCFE8647DD6016, A501BB4A888E289FC4EFA7F0C408CA0336725829D5FC875143D4E3184D7C2CABBA5586710AF702B2B45FC1983BDD9C300EA86CDA223B7A59DB8FBB3773A623583E -D1925B8D388244BAF12188CCD20B82C54661D586AAB9B5E4C9A06A9B82EB01E9F530058F0407C11DC79E36F5FF21, 5EEC1A628A508CA7A549E77AE683842FC36D7AF0384F54C610A3334E7FF3AD9431BCB451656DA932DA230FCEED26095A0C7BAB19F5D28CFF45CF0C5E0A1E751173, 734279530B1A50BD84B0D0F8DA98800F2A9728333254F29B99232FDA0D6B0C56BA96D5A84E32E5B0704A06D600D6A40DB0B83CA1C6D01C7A29BA145269136E0553 -274B712A7A986CE30D3649A667622884FD3258094002D21AE5CE13FD288C105BDDF9010AD0C17435956DAA4E1FD63, 1B19DF6C95BDA62FCB386A76487544965A4542943E7BDD4945DA59E897ADEC0FAEB5C298361E7D97144F890C8F6CB4ED5D139E0F2BAE201A6859D59DE0800F6A7BE, 18878C679DE2FC6FF305A3B61B3DBE608A21CD0109A7E4A9A6A8C516CF393F2B5F90CCDE100A07E9E83A1AB3E1B18E3AF7D533F50EEFE25910F8DAAFC12273F12F3 -75E2537F6FC946A927A2DCF33626798EF797081BC0087650B16A3BF779A4311399EB032072445CA0C048FEEA5F829, 175CF3D0E1BBDA63D8E533F978D4B6D0EF6EF292433ECB7186216D15F4D56CDE6B2CD949A58323E7130F9E72A17C89CD58D32A3AB51E2A9E207DEBAAB85324E33D5, 13A0754082205127C4FD65976065B904436EE0731BEB74DD02292431349BFE953B8DCAE9A29AD924F4706E6372F6E30A1A695142815AB6EF3D34208FC8B67D3E2B5 -161A6FA7E4F5BD3FB76E896D9A2736CACE6C51853401962F2143EB3E66CEC933ACDC1096156CD15E240DAFCBF1E87B, 1396B8FCC0B17435E67FF47105282E3090A8DE3A75F43EBEC99041CF94D6679ACB215D84E7F30E5CE8B90548CDFAF598647502434C909F13BBBA7CEB824E96B893E, 7551CBCF404CD416CF86112511C97B90C8AE11B9C38156DC018FF8F97CF0A584FFF3A893B1A7EBCBDFBBA7F25975D1886CB435D671645B344C80EC55268980D3DF -424F4EF7AEE137BF264B9C48CE75A4606B44F48F9C04C28D63CBC1BB346C5B9B069431C24046741A6C290F63D5B971, 658D21B04BB7C57461C88434A25D45E0342EF60B29784C6D89BAEA32CEE97E851C142E8C5FBC5C0DE86CA53B402521B7F68EF42D2A9A7FA59ECB2248DE9FC6A6CA, 77480221F9DE981E3F86871DAA4D6B80931F505FDE7FA3EAB499A15F6159CACD3CCEAA18F8E595CF55C15BBA54F5E9FBBCCED5937B0A4935D87635C6BA9FA2A28C -C6EDECE70CA3A73D72E2D4DA6B60ED2141CEDDAED40E47A82B6345319D4512D113BC9546C0D35C4F447B2E2B812C53, 121980C2C37BEDCE3326677FF35C771AE76BE229B43A01B3C3F5D0C63C5E8CDDFA0D57E54426FD298543F55ABA17F408BF2589704A24F81377B148F92C9AA21199B, C05D2B359801DBC37651649B512F0B3C351569ECDBE80DE9D3860FE9F2BB38A7E84865634AAEFD2EB95C2E2FEA210298E0C09C50C625D2A2BCE61FD7A324C6CBD7 -254C9C6B525EAF5B858A87E8F4222C763C56C990C7C2AD6F88229CF94D7CF38733B35BFD4427A14EDCD718A828384F9, ED37DAE03EF4B2813D2F3E81E66FC87582CC1A5B7032E4E5E63306E079753CE2AC57ABD4D61BDD6ADBA549028144DC56F67B6B63304F38A6934119FD79802C353F, 1E805CD53068D979B31A43CBAC7D2D6449055A6085598CA827FE4A11755D8E320E571FD19F1A761281AC06B2847DD34CBCE12F1ABFD5A1755AD7C167142C0BE36C6 -6FE5D541F71C0E12909F97BADC668562B5045CB25748084E9867D6EBE876DA959B1A13F7CC76E3EC968549F878A8EEB, 1C4C0F57168F21D9D13B2FE10315B35D61AFDCCD8B5C97AE71D2E4305F7DD91B81A1C014D3527805717592BD75AD58308656B11EFE66CC2A1394663BFACBDC1622, 1B5EF0897B34AB0A00061B8D69EBF65B3B275F090686273310475D8448F2C1CA49475E7FA4BFA034D1F429A7C2BBC31882B9979E23C7B22F58A1B3F49C3CE97EE52 -14FB17FC5E5542A37B1DEC730953390281F0D161705D818EBC93784C3B9648FC0D14E3BE76564ABC5C38FDDE969FACC1, 11C0062E9776CED7BFCF6F43C9E15B6CDF00E76E8784374A406294C96FC223FB0C0B0E78D0841EAE90607787D9721851678BD4AB5A36B851E5A3C3B3E53DB11EC36, D6BE3739431207B31B4A752767A352EE066FDFD4C26B0B650ADACB6535B0FA90FB451EF577EAF681D363FF72D0C82D5A46CC4D02D7EC4F44ED97C625F2E2F30118 -3EF147F51AFFC7EA7159C5591BF9AB0785D27424511884AC35BA68E4B2C2DAF4273EAB3B6302E03514AAF99BC3DF0643, 171DFC8EDD79DAE5A63D6B79497C7B5EB4321C8752F0F766B8997AB8EF3B0ACF5A72F2344BB737CD2CBE56969D6CE1A9D71E3C9C53A518C626309D3B9AE0F92F3AF, 183BA878DD292A2271D749D106345546621C5C253767EAC72CA3F0367B50E25EB9201F2A8B3616160115EAE4615625A54646694540889FBA262AD60C3171C6982BE -BCD3D7DF50FF57BF540D500B53ED011691775C6CF3498E04A12F3AAE184890DC75BC01B22908A09F3E00ECD34B9D12C9, F207D39271725932A582154650156D6D38BF9F895640D55CB696C4D786AA53ACD7C1DD39EE7B7E0C2E401E0A3FE5FB3BD1C781449A638D55E49114DCF6837BD28B, 1599FD70519256F1DE4C58AEEC3B51C87AF3D186286678630915A355EE234583AF53DDB7FC4275ED66C68AB3FC2FB9403C601421556A6162F33334CA502498CD2B4 -2367B879DF2FE073DFC27F021FBC70343B4661546D9DCAA0DE38DB00A48D9B295613405167B19E1DDBA02C679E2D7385B, FCC2E5F471839FD7A4E786834F61EF6953B1F133E0473305C42A47F79100863AC8CEB3536FDC24CF7208FA74CD15969A2EDFC3321E15C467115A148DD5F1731A72, 1D24B7C1566DC10BBE2166872A3D96B18A934089BC31E873D1C4C7FAAE1D60FA400EBB57C2C20CE54F9B76F1C2190465E5C0B40FF2BC61BACBEA1D8C6C4B0E7808C -6A37296D9D8FA15B9F477D065F35509CB1D323FD48D95FE29AAA9101EDA8D17C0239C0F43714DA5992E08536DA885A911, 3DF965C45946AD537A86FC2B19944CBB24F90EC64899B98B4AE59BDBDD2D3BE2ABAFA6300D916DE8596C0AD5D539210E8B5013472022D5B7A543B652C2B91C4FAF, E90E42247029EC1E9AAD74EB38BEF22971B531ADC6DC665A7C492772DEE75372183678E0C73BCCB96E925CBAC19A2BFEA9E40610CBF5499189CDC014640F849FD1 -13EA57C48D8AEE412DDD677131D9FF1D615796BF7DA8C1FA7CFFFB305C8FA747406AD42DCA53E8F0CB8A18FA48F990FB33, EAC71B13C1006B0163DBFE5BEE05EE005B56794E505366429AE0000138636EF38C9EE9F38581253984481BD285AE21F0244EAD9BE49B576001A3608BCB9E61D1C0, E815EA8641A20B6E7EA92A82A3D55BD9C4FDF65489CB14B782D11913E0FC0BD546E5BE5D8A8E0334FF7255BF91DA611ADF182455CA65E9BD7C77BBEF0AB33CB658 -3BBF074DA8A0CAC389983653958DFD582406C43E78FA45EF76FFF19115AEF5D5C1407C895EFBBAD2629E4AEEDAECB2F199, 137BFE281C39C1A82BFBBF9E4F8B41477D916BFBC30545AD9868D3A650AECFE9CED818BA87FF07D4991E26FCD4A54E4594F91D16208ACA217E3ACD6EFDB47700D88, 578A287AE50EDDAA7E8449AB5A3450AEBFF0A542648E9D99DE733657F2C41D9D43F82A12AAF71C639D530BF30AAC13F430FB64E1F11BF700982DE54D440987936 -B33D15E8F9E2604A9CC8A2FAC0A9F8086C144CBB6AEED1CE64FFD4B3410CE18143C1759C1CF3307727DAE0CC90C618D4CB, 14ADF84B7B26C3B76CF0CCEEFCBC09A3A92870F7EE60C6F616A790FE2DC627EB28E06C5B2FC2E6890922EFB8383237A58870360231BC5FA2A48489B5AC76ECD152B, 8CDEB8EA82B077D2C87E3F7108A5FC13E3FBC9FB84413D99E03DE8DCFFC6647143266DA21E581C71C8DC68A7067B6EAB15A4396ACF2A1279F0B3E3E7BE1620668B -219B741BAEDA720DFD659E8F041FDE819443CE63240CC756B2EFF7E19C326A483CB4460D456D991657790A265B2524A7E61, 110959607CECAD1C0EEB261F007276A4B530693EB5B1EE3CC676BD743E0B062E80FAFB5CD57A6FD0A3368302B30DFEC3C160B941BCEA235FAE9E0C8395E55A85F9A, 19037164E32E56A58DE230792A5B3A67AEFE55A82F4A7D1CBE8C1FB706B7367FBD5D49A89D39DB27E85167993E9E5A9B9623E20EE463B49E3D30C048AE13C268F30 -64D25C530C8F5629F830DBAD0C5F9B84BCCB6B296C26560418CFE7A4D4973ED8B61CD227D048CB43066B1E73116F6DF7B23, 16F7CA28B99A2EDF84B4BE88B786B6B9A00740C2EF71D1667048A800E4C08C96B278AF7EF10716BC5EBDEA3697530C4D33EDD61DBFDA322DB3E805FAED9595C603E, 1776DBDD44736F14F5965BA7D3494985772D5BFFEFEF6B07109F6EEB71EB0BAA72836F0275819FDAA9F6FDDEB34C79137426EAE4C8BC9DEC3938BD423757E13243F -12E7714F925AE027DE8929307251ED28E3662417C4473020C4A6FB6EE7DC5BC8A2256767770DA61C913415B59344E49E7169, 46093616F98BAF2EB3E175DC458EE3C69E5C6B8B5CF13987E3A7A0A941559684F9229DE2A8E9ECEDD82F2897C03BE32BCF0898DE9E3437489431BD7A123C392F8F, 57381B88BFCE0A557F735D9665C5AB29DF169F254231BBBDE2E155B50DABD5196A9DDD183CCD8176BF4B9FCE09EB011C5FB30140BD79A7440064C90341C7CD89A9 -38B653EEB710A0779B9B7B9156F5C77AAA326C474CD590624DF4F24CB7951359E67036366528F255B39C4120B9CEADDB543B, 426C8875006ACDD8271F635D6E3A882C083690635A6C958932723447CB1358D86DCE4CE707B6E50F5476E7E99D848917231FB51C72B2425DDADA401E6A83785157, 16BDE232C303ACD1CA6FAC26991357278F9ED8BEC7DB42BB50D7E22CA0BC96DD316DCD87D4D0F532877DAAA6885AFDB2298720062B9E591451B5FF6CEFCB5B5F7E0 -AA22FBCC2531E166D2D272B404E1566FFE9744D5E680B126E9DED6E626BF3A0DB350A2A32F7AD7011AD4C3622D6C0991FCB1, 1292687676096BA03D01330426AD90A3F1D3772AE8197B1D2F6279FA31C14C26034B567BBEB7CDDA07BF26D1809A694CF6274539B42A706A3915C2F44046CEA0499, 14C8CBF78462ECF2090C0098CE7EE93C2358E7C308B17A5D599887FC20DDDF520F3CA8A15D1928E0EC67DBBC167DA58808AF42127B1C6994B7F3B18F51EAC57B860 -1FE68F3646F95A4347877581C0EA4034FFBC5CE81B3821374BD9C84B2743DAE2919F1E7E98E708503507E4A2688441CB5F613, 1FBD973F8AA1CD7E7E758F543C4B15962E243BA435A7CE62E75193045D248AC3CC08E7B717D6541F30041C02000311155C2F7B8BC50CAACDF9A20223308BA0B3ED4, 11132F7ECA282F2CD15B135664DC71B307793681D35D355CABE19601048E932287AB606919C7C3196EABE8A1FD7E60BC6EEC595619058B5A3832538FD67ADABB878 -5FB3ADA2D4EC0EC9D696608542BEC09EFF3516B851A863A5E38D58E175CB90A7B4DD5B7BCAB518F09F17ADE7398CC5621E239, 1172C5E0FB6D1E3676490A8F6A6F07BBA0168BA6661A2F81FADB201F9522839975840C028A8B0B60A6931692554EFBE883026A2C152DE91CEA777BDDC6F627A661E, D4AC0F11A8727495E69CD5F60359D12A0A1B11FDE3E00934299C0E83DEBBF7CBAABCDB875B24466CC0A43EDDD5F8D7546E4C227B24F7D4F7732B3E6650AA41983B -11F1B08E87EC42C5D83C3218FC83C41DCFD9F4428F4F92AF1AAA80AA46162B1F71E981273601F4AD1DD4709B5ACA650265A6AB, 1CA5C8ED8414E7F8F6845BAFF4C222176323EA57470A53C69F8C43B5D4760E9041FA400BFA27F538AF1A55FEA6D04F5E14D722A1E728969A8704C96423C25AF247E, 166CA93A22B4587FCB2BDE36253A9B9F990C55119E3DA00619E9FFFAB11F979BA125F9864E0BE3047C5F8574AE27B2D39A081CDBE0DFE725D7D05A5D9DA69334358 -35D511AB97C4C85188B4964AF58B4C596F8DDCC7ADEEB80D4FFF81FED242815E55BC8375A205DE07597D51D2105F2F0730F401, B7E9D6A27F654531FC0F7C786F000863AD0D08FAA424DB04C37F85E91A43905EC1F50CF7E0DE5771279B6D00DBF2CC797B92F428F408DD4F23AEE37903F0EAB72C, 1986D1216BB254A2D161DE42417B688B83A75462BBD00E9C73EDDE6B1BCD3E7F9F0BE17BD038F9C0241974B294FC1278283527FCC83B8B93A0A6611D4B2C592EF7E -A17F3502C74E58F49A1DC2E0E0A1E50C4EA9965709CC2827EFFE85FC76C7841B01358A60E6119A160C77F576311D8D1592DC03, 236D2BF74A2778902DFC71134461968114F6CB85470D0814CAE32C93B1F67B4AD78129CDB257FAB298BCE51088B7C446DC98B20D2F9E591E1FC45737D81B17371B, 764E49450662287FF960F7DB953827D14CA687EAAB6F46FB2754EFAABE7B237033CD52F4C9AFA158494D105F8E284A07CD9061694DEE4AF200144B645BF62FB0D1 -1E47D9F0855EB0ADDCE5948A2A1E5AF24EBFCC3051D647877CFFB91F564568C5103A09F22B234CE422567E0629358A740B89409, D6C48BBDAD09D5C4D21C15913F12DE690D298D78919C30833234F234083C2FBE422C99CA3ED62A84C46B5966DA502C674ABB2D445F084F10EA0325DC725EBA1C6A, 1236C9FA47E0DF713E6FB06AE623DFABED654C699A50C9FE01F0473BE37886B96A20AA210441B28C0778057BF8B2E45421ED2941BC9EFA52791BD477EFBDE2A90B3 -5AD78DD1901C120996B0BD9E7E5B10D6EC3F6490F582D69676FF2B5E02D03A4F30AE1DD68169E6AC67037A127BA09F5C229BC1B, 10271D98E7D157B7462534EC909A78F441E2A76CB8DB4E70A1C3D0F25322440ADAC2398FA7A4B2400EA173209AE764425C3677B93C192CA2316A81C32B9040AE523, 4E1CBEE003FFC3496359FF19DE33ECE2AD87960998B25B7C744B096D4B0829F4553C60C55D34F742D685CBBA36153BF462DD7E516659F1B9619D9E58EC2982B716 -11086A974B054361CC41238DB7B113284C4BE2DB2E08883C364FD821A0870AEED920A5983843DB405350A6E3772E1DE1467D3451, 3C5BF99CBF25A5FBC1ED41341A01727F132CFB9B88F96CB4E205FF7982AE6430EECF9F1CAEB0616377B195F3D6CB32DD2B2521F98A5177D270A586BC03591F4B5, F13C82A9FB0BE0FC3285BBBB387C6EF42ADD9D8B1DAA42FBD9DB171220E7989C13FDCE7F6F049B649BE80E193845DE2B82D34ADB8858B3BDDAB5EB76490076167C -33193FC5E10FCA2564C36AA927133978E4E3A8918A1998B4A2EF8864E19520CC8B61F0C8A8CB91C0F9F1F4AA658A59A3D3779CF3, D974441FF93BD875D32F85621FDA40CC5B8D3E553898195D01951434FF62CEDC9E5EF9F286427798DABCF8D7C86B0177D57414A5BB5BE43E671112602B9CB523AF, 5DDC2DEF5B904E5BAFEC40B0BDB02D4C9FF954EB75454E68A83C0FB2836090AA593ED886780518F113C598BFE901724B64F3219779E9829CD4237173BE3B49A352 -994BBF51A32F5E702E4A3FFB7539AC6AAEAAF9B49E4CCA1DE8CE992EA4BF6265A225D259FA62B542EDD5DDFF309F0CEB7A66D6D9, 3B1130BEAB751C179D55ADBB49C6CC941440104AE070F4D960B6994615B661DC31EA425AEDE1DC4086E3671A82836E5AD425F73E76DE95FED7E11E28E7BDDEB27D, 14028F1E42C5B0B76832EAFFD5DABF2206A2DD8FC481827449AEFA922A0A117EE4D85DE95475FC3038B2D6543538FB0BF037DFCEB6A9199597A1BC2987CC67B23B4 -1CBE33DF4E98E1B508ADEBFF25FAD05400C00ED1DDAE65E59BA6BCB8BEE3E2730E671770DEF281FC8C98199FD91DD26C26F34848B, 15491048378808C7F9ABF6ECFA499A4BAF3208DED49D6048674EC5A7C5118B47748A66B5DE05E4F8D508CB5A38C02A9AB4EE56E6281738C4B24A59AE432B3820B28, 1F0CD96FB51360B9588233605504816284D6C46397DCAF1456CC40669408EE35B8E6F8C21AAECEFAAF135B9E2C051D657A657246EEFF851F80A1B3FE30900BFCEC3 -563A9B9DEBCAA51F1A09C3FD71F070FC02402C75990B31B0D2F4362A3CABA7592B3546529CD785F5A5C84CDF8B59774474D9D8DA1, 744DC5532622CE93265A9BD266A973120840EE42A70231F27735C12F262F486F42B9E34DB4823D824171E3952E39888FEB536BBEF3562F9B7FD08031D32A5AAB9D, 1D36375EDC6231BA3AD055C78BF93CED67B4970235AC69908FFEBCD5201A7D42621CE6742B2A7683BC701286DEBE2F1A576D02A9ED1BDF2CC7EFB8AD92AD9A588F9 -102AFD2D9C35FEF5D4E1D4BF855D152F406C08560CB21951278DCA27EB602F60B819FD2F7D68691E0F158E69EA20C65CD5E8D8A8E3, 1DC533F0E41046DE07F15B53528476DB472D8CCAC8028EEA5869BF60102921644F612DE0A96D8E47B2AACC12868CB24F1A6C89C5C91136DB9E68BE0A4EC7191F875, AF5A59CDADCDD5BDFA872792365E735A3507B76A790F8738C88E62DCF758ED22875CE8A27E3E166A5989316331A91F5BB0112590E6B2179903BEAF3179F2D1DD7B -3080F788D4A1FCE17EA57E3E90173F8DC144190226164BF376A95E77C2208E22284DF78E78393B5A2D40AB3DBE62531681BA89FAA9, 192E4960DFF304595C4F784334AA092C2C944CB31328A05C0224B63A8F0D5EA1753F591E02C35064680DBBFD6B8B8BB514E1E0BC4B66C67512D1080EB4ABB010E44, DBC0284A211FE68D52614ABA9B9BA5847BC114DDB1B2805F84F772BE295B0536520404418E2B3186A2DCAB4C4E1CFACA1D096BA3BEC7F32ED20AF10537A6B6DD30 -9182E69A7DE5F6A47BF07ABBB045BEA943CC4B067242E3DA63FC1B674661AA6678E9E6AB68ABB20E87C201B93B26F943852F9DEFFB, 1A72286CA4510335269C0A7A8528973C9057B408FA9344D1F4064FFFD3280B6897D1F43B3579777800F5C48D9E8555E5C27DC179BF25825CEF9FBD1B5B63B04928, 192FE4551454D55E266A623155D2473AB4DF1F675A453494D3A7E905B4DCA0959C98E865624BE3B84E6036939041D0A737582CB1F8404DB0C3BDF9990290A32547A -1B488B3CF79B1E3ED73D1703310D13BFBCB64E11356C8AB8F2BF45235D324FF336ABDB4023A03162B9746052BB174EBCA8F8ED9CFF1, 13093DAD0548EF1CD3DD104F6F415B4BDAC830442AE1946CC95D4FE385F7D89282360B7581F7851C0A484879E5B3F2799772E6BE515D10C90567D5B6462FABC8A3B, F0A2E650678B0526931C544D24987581E01C60A22DD2D5E32D908AA27B7C0F29632BDF2F0049F721783C472E5F2FA4F8AEE688FF530098B8CDB67968BB3354C271 -51D9A1B6E6D15ABC85B7450993273B3F3622EA33A045A02AD83DCF6A1796EFD9A40391C06AE094282C5D20F83145EC35FAEAC8D6FD3, 16382C2B7F9C282EDF4CC15898744DD404BEFDDD274461CC33BAFB8682B4C02417BB3512B566A0722B40FB7A5B8B3246F46621445FD1ADF186E2B7A9AFF802F4818, 1C7D37BC2A4F2359FD35A2AB14FFEB355C483453FBBCD7A0D0F4AE0B30E1562FA3D315393E5702FC07DEF2356E0DB3BAC1A5F58AF3C5E856E51958A614641CC5402 -F58CE524B47410359125CF1CB975B1BDA268BE9AE0D0E08088B96E3E46C4CF8CEC0AB54140A1BC78851762E893D1C4A1F0C05A84F79, 15162C2DB067EF24A26AFBE769EA5FE69155ABF0C39EEB8E3B898070750A0549B318D5B69519795EC7FB0E8F6A7AC1757973EB6040280C3144B57AC950B2A3DF862, EDFE8D5AA5BAE7C42E4A4DDA5EB3512FF854C02078D19F17AE01DFB6651472432F8F69F9C678ABFE4EB28B6E63138813569042DEBCA32E0D7CF3E8F3BD9CF24B6 -2E0A6AF6E1D5C30A0B3716D562C611538E73A3BD0A272A1819A2C4ABAD44E6EA6C4201FC3C1E535698F4628B9BB754DE5D2410F8EE6B, 1D30D470B2E079FFFBEC501C304666F49A7246B7B4A3932506E0F7521FB935E8AA9EE82627247FC724A329D7A8AD5BB18B953F3F5A0764C959BB0B42755157A21A3, 1051AB08DF58DEDF5E83101A3A8349C7C0F6929BCE9FCA91167FEBC248D88BC6CE46FEC4521A9624EEA4AF30991AA03BA342C85517C39E04D3839542A67331C4595 -8A1F40E4A581491E21A54480285233FAAB5AEB371E757E484CE84E0307CEB4BF44C605F4B45AFA03CADD27A2D325FE9B176C32EACB41, 179648DFC76F49FEA912C21304EEABB3EF2D9D43930DC5213E1F261E31D9A32498B8D97A0FF0E93C08FB7A8B58D0062B3AC983FCBE0D427DDFAA6A5F6270A9F7B61, 54B10D0D94D499FD2E853B61FD6C099E4FBFFA8D42FC273A811031AE8ECA4CF4FAEF3735B11FDA90E571D89EA06B7D75A0B4F85DC5F20A681E03BC4B08A54246F -19E5DC2ADF083DB5A64EFCD8078F69BF00210C1A55B607AD8E6B8EA09176C1E3DCE5211DE1D10EE0B609776E87971FBD1464498C061C3, EAD7064A238176B81C605C4CE0E2EDBB7B5F1246A165A961D5F77CF873041F4A7DE3F37B125C8963F7B8450801F2782FBF133AD4035E6182C9B5F15D1344CA7CFB, 11A8F3CAFFCF2B9E0B4CE967566AAF56687397F9A972612D835299D6952275F6861505D876209DEFC0561414B9527C6A201B3ED62669BF45EB8A707C46C41C34A6D -4DB194809D18B920F2ECF68816AE3D3D0063244F01221708AB42ABE1B46445AB96AF6359A5732CA2221C664B96C55F373D2CDCA412549, 1B8E82141830FE5094583A91383E1C96552C95002A1FF026A60AB5A0A20FFD6A90EB0B1306015EB03946E37ED13CB29CC59D74DB098440F642E963E553C984D26ED, 4CD62F03E4DD7578C64C1046280FCF8C3E54A91E16DCAA6D6B65C59358CC0FCCA9A4B597AE9E13FF58BB5DDA4C7D192507B29AE440526E6395283003127ED3823A -E914BD81D74A2B62D8C6E398440AB7B701296CED0366451A01C803A51D2CD102C40E2A0CF05985E6665532E2C4501DA5B78695EC36FDB, F19EF8D87AF85C3B5321BB3C39AD9CBF60F911B4BB6C73F02D2ECDEF4A1367989115192704B9889CF0EB84013B23DCBB0D38F0FDA0296714B50D6F0EF1AAF4791E, 3B90D68A294B4EA3D33613398EB1A8881ED876F47B54DAF92C3C80A80AC555C8BEE98A9D3025DD03FAC042121BCBE797E39B3880309C0E50ACE24F824DA1D0739B -2BB3E388585DE82288A54AAC8CC202725037C46C70A32CF4E05580AEF578673084C2A7E26D10C91B332FF98A84CF058F12693C1C4A4F91, 1F2CE747EB4B22D5014B69BF3CDECB279446105BDEC7AF21B58C93141D32C8D1B031CC78BE26579A0517B8E16335F7087452963CCB010C52A91A2D4BC507DA3BE8, 1F6161A23C26AD6A1DDD965ABA1C3117C77F818CB3083AF6568F1BB8FC2AC7DFCAB7746676E2199433F7E5D4A663F14EA9AFF3413930CE62A4FA4FA1F000448ABB9 -831BAA990919B86799EFE005A6460756F0A74D4551E986DEA100820CE06935918E47F7A747325B51998FEC9F8E6D10AD373BB454DEEEB3, 156A69E1756107B3310D77907458EAA27FA69DE7C110428618F7CFECE6BDED7051A0E856FC2EB2E7E93B3FD8C185B020AE7AEB680F9A5EFA72D1CA4D046F7D51735, 1EDC17FF76DA34AEB0CFFBAC598F2C287AC06A8F2101514978ACA8127D374EEFF677FF1BC7228276D272ACCB872909FEA1DE6EEA69C121D51CEF2DA0202916D1506 -18952FFCB1B4D2936CDCFA010F2D21604D1F5E7CFF5BC949BE3018626A13BA0B4AAD7E6F5D59711F4CCAFC5DEAB473207A5B31CFE9CCC19, 18E231A2BB0970DC1E6655C8A2B7D8325957D73B7E59A9BB206B638C8CD5439BD295D42BD2C9AACAC391A7513266EDA35379FC12B59D494B4AE60E90BF0818D63FF, 18375B951D26832902650144F76A1CC16E91F6EE5AD76F953E6B61FA754E3CDC764481EC519BC6D4CFE1BF6857258F0AA097B5A724E790A000086E70B24EB73206A -49BF8FF6151E77BA4696EE032D876420E75E1B76FE135BDD3A9049273E3B2E21E0087B4E180C535DE660F519C01D59616F11956FBD6644B, 1975AAA66ADCED2833DE622B01A797EFAE478631A9B455D895F46D40A6901ABF6F6F7C5AF208D2CCB6BE2B81E70BB7FC4C72E88DDF00F1409269A9FE17374B940BB, B605C4E9CDE6E43F254A4FBE3A326F3FF37966BFD5F1FF5BEB0178EEAE932FA78987E6F864443B93BB7B9629E16411B35B680E1B110912A33445E6DFCF4BEBED7 -DD3EAFE23F5B672ED3C4CA0988962C62B61A5264FA3A1397AFB0DB75BAB18A65A01971EA4824FA19B322DF4D40580C244D34C04F3832CE1, 1EB1123F455B677723D14412484CFEBB4DA3950F61F19DF5721F58FD3EFA8A75DA98689B5E7A1EE2C070CD3BB069E55DF84D7DC2CC22582F3F7E56D0C439D2E8325, DA618FD3C5505047AAA8CAE07572462797A26A09D089ACECE3C786408BAA657F6422ED5F7417F5367416E9D764D0F22B9F7EB61E7DFAE97D0CE29C56322B9DC091 -297BC0FA6BE12358C7B4E5E1C99C28528224EF72EEEAE3AC70F12926130149F30E04C55BED86EEE4D19689DE7C108246CE79E40EDA8986A3, 1CC4EA4FCAF6798C560DFE9FE970AD45D754BB2933147A73A81A2DB9ACEFDA4F606398E1597D2C064242A56345959692841FF26D364A5745C3D6597B964F2D987FC, 1E67EE899571AAC18EF4570DF909882D6FC76B1BDE8254A616CE9705A9B55100C322BE863FC12DBDCBFEB4A9D4734477590A2F53F63EE8A3D4EFFF2198F1232C4A2 -7C7342EF43A36A0A571EB1A55CD478F7866ECE58CCC0AB0552D37B723903DDD92A0E5013C894CCAE74C39D9B743186D46B6DAC2C8F9C93E9, 1C5C94EBCF4E441AF961635E852A590638E66AD61ADAFFD38AB95CA9BB0D97ADDA6D45BF2115644D4318D25F357D46CEA9858BE53CD9DE75C6EED05FEE6497A5E8C, 885DAE71332B75E9853931E7A602744D6FB7E30138D8B830955D24A0A83A044979C74D51A59E243F90F480A59BDC38FF79A929562BFC73AD896775CBCDCA12D2C1 -17559C8CDCAEA3E1F055C14F0167D6AE6934C6B0A6642010FF87A7256AB0B998B7E2AF03B59BE660B5E4AD8D25C94947D42490485AED5BBBB, 1B1F5EBABC694721BAEE86B8B527C4EA9703C2F49E191F4E6502DA6C447E0A608E87150FE87AAC675580D30D7A74FA52BCDA80AB8804D18EA902BB4520670EBA8B5, 1843B5C24B62CA20F46E7559F3ACFE2DA8C215FFC6B6B9FDC7EB507D8171B7A7E807465B98077EB5CC60A056C1FA738812C6C1BB49AFD117A6AAF3D1F8380F4B300 -4600D5A6960BEBA5D10143ED0437840B3B9E5411F32C6032FE96F57040122CCA27A80D0B20D3B32221AE08A7715BDBD77C6DB0D910C813331, F709B54B5114543471870692754A841428EFD0770C82A781AECAE63386C327B3C52E992379AA2FBC8514F0A0C9BA2B068CD1C494DB1DFEF4B7827424109323E2A7, 159926BFE544257AC5EAFDAA49A90D4390E578D9A90C2670626317FCD26F384CD65138EA7CA1265E9382F6705158192785D8FB604EF15C540E461F58B17BF21D484 -D20280F3C223C2F17303CBC70CA68C21B2DAFC35D9852098FBC4E050C036865E76F82721627B1966650A19F6541393867549128B325839993, 17C4EF2EDDAC7B6B9C896D936664555798422656BBD4240E7C7F9A447E6EB50B6A1B2A56BDCBB92D4BD10553166815B0127960E767103BDF20CC7E24667AC0ACA57, AD52F42C442B23FCE2650E4B7707D6AA5866F862EBF898F105D6AB42292B3343EA986BFE3BF684F131D0DF349C368860167287B1C2BE5672EC431A7CDA8BA22D3E -2760782DB466B48D4590B635525F3A4651890F4A18C8F61CAF34EA0F240A3931B64E8756427714C332F1E4DE2FC3ABA935FDB37A19708ACCB9, 1329513C937AD4092298CF1593A972B39C33A1A8596632AB6422BE1D1B9DFFD17E272D7C9363210E37E43500C399CF9B14870D231A509FE4386449DC32124F5A6D3, 9B3EB56B122B82035030DF2A6CB05FD0463325B70B5475EC576174FCF58861BC26893555D261A8C7B66B38E2FAF393D1C898FC6F4B339B3FFB48D6208D2C5534E1 -762168891D341DA7D0B2229FF71DAED2F49B2DDE4A5AE2560D9EBE2D6C1EAB9522EB9602C7653E4998D5AE9A8F4B02FBA1F91A6E4C51A0662B, 107D8FE9BA7975F4AD4CA1E8446699B2438621B2C0178900F2F8E2CE179048C984AAD88E794F499258EBFF42DF2B9270DE833EC337BB8BFC1033F7976A49BC9B1FA, 51174AC7A12F0A4D508FF09A0EF48CFA212C36F378AC67929607547544A198DEDA80674FBCFDCB81FA90D98F0960FA7CFD17C2C6945B5D7EED22B701F86469C5B6 -16264399B579C58F7721667DFE5590C78DDD1899ADF10A70228DC3A88445C02BF68C2C208562FBADCCA810BCFADE108F2E5EB4F4AE4F4E13281, 15F1D0395CFFEFA176770CDB66BDBDA07534A481B1F5A2A31991B140FDA835DBFF58429A4845EB501A733F0234698DA9B3C58E23E9BE24E5810F9061AF7F20DBF95, 5FE3F7A9D8213FE65D219E638873F080FE94EFF192711EC237B1098D1F6F3C6AF1DE7E3C727FCDAA1B33D6EFDEB72FD9901049E26C373A7FA37FD8E3B5C2F23679 -4272CACD206D50AE65643379FB00B256A99749CD09D31F5067A94AF98CD14083E3A484619028F30965F83236F09A31AD8B1C1EDE0AEDEA39783, 13BB73C7C0DE9343FD9BF33177CC2C916D2FFA0AABEFFB9F166932845A97212A1259BC6416E1EB584C9ADF7486167CE6E8B642C8AE46FA71434D1B82E514620E4EB, 143266D91BD24A639499B5A0C94641BE2D6434BB8FBAEA6D008F021884E4A5882E50CFCC4A939319AE0AC2733A91B0403BF722EF7382CA0EA696457921845B57597 -C75860676147F20B302C9A6DF1021703FCC5DD671D795DF136FBE0ECA673C18BAAED8D24B07AD91C31E896A4D1CE9508A1545C9A20C9BEAC689, 1A2D288FA87769C9695DD78C70D463392AFFA2BB93EF9D5426518F73FB41ABBFBC1CEBF14271400C54782F8CBA28DC665B3A146B383F1D70E391BAA17669E829CC0, 760C7FCB93FD8D145692C3EB4318EE6F03DAD12F014294CAC35A8481C6020EC71DF14764AD139B9406E77F63A41C7E832F4BDA940EF57A957DE9B4A7F17C1FDA69 -25609213623D7D6219085CF49D306450BF6519835586C19D3A4F3A2C5F35B44A300C8A76E11708B5495B9C3EE756BBF19E3FD15CE625D3C0539B, 127B866890F34CC775044844BC0864B15175DE7A26E51B4F993D1851F605F6D4944703F7D718ECBAEF5C69B806F7AC29604952AD0A0C77154ECBBD3AFE3A9D3652E, 1C8949428A66A1F2D7E54CC8F8C56A421FC0B8A8E2C6B0637671F2BF31AC064E141FD615FBB996C23A4C499189B07BB9DF72F5CFBEB16C25A71F9D4733E7AB3FB83 -7021B63A26B878264B1916DDD7912CF23E2F4C8A009444D7AEEDAE851DA11CDE90259F64A3451A1FDC12D4BCB60433D4DABF7416B2717B40FAD1, 79CD3328A3A58064FB8B90F9FEA4437413F176EE41F6B97E299A538170CB81016CBDDB53C679197505B5723F770D7A4F059ADC86003C634A5630AA114E243E2453, D82A25228F8C3B1407B7EAB67628966010429247A8A4B7B6218D010171EE9C896CC4E817040FAE1FA8A0BCC230399DFD3C961397AF4E8D2FD0BC5E380FCAC4EFE0 -1506522AE74296872E14B449986B386D6BA8DE59E01BCCE870CC90B8F58E3569BB070DE2DE9CF4E5F94387E36220C9B7E903E5C44175471C2F073, 67A20B586960E640C96F6C47EAD9D8C0116AEB8C66345879FCE394A5E94F122A628B56B5B555A2B274B28A4CB8213B594BE94DF210358AE760672771435342CDB7, 161A396F9E6651642A631177DF1A79BD53B1047C0A14A8DF913261343FA40E8C73B108CE4D6E4E509EB14ED597F34FAB0B30BF125C627BC778CE764EAB24D0DE295 -3F12F680B5C7C3958A3E1CDCC941A94842FA9B0DA05366B95265B22AE0AAA03D311529A89BD6DEB1EBCA97AA26625D27BB0BB14CC45FD5548D159, 10A9131226B61979B6A9798D2E2A8448E379A2E558B4E4D817AAA04B0304B59F864A3E85CA1050CE55AC738D8AE14386BEC6C0C311505D55AD8D7CC931AEEBE692C, B6483343D7004A3AD8D5B99094191C7FBE8B8B52D6F564E0A4D60E3D56F9EED4445B301D8372613428FDEF86824EBAE9E4CC29BFD4CA39D2602C915ACA75A53466 -BD38E38221574AC09EBA56965BC4FBD8C8EFD128E0FA342BF7311680A1FFE0B7933F7CF9D3849C15C35FC6FE73271777312313E64D1F7FFDA740B, 9E517DC30559C4CEA55660FE9CC6504D875989DF21629D2C8A83A526A9A186BEED0E8BEFE8999F44086625C32DF45A310E41E18B82210B81A81048D465E762BAD2, 14BAD2DD2D10E324491AE8D29FB0181F16DC0101C47FBDD211897425A410B743028CA405FC074843916801507894C24AC22C2428FDB7053DD07E6D78950F452E0AC -237AAAA866405E041DC2F03C3134EF38A5ACF737AA2EE9C83E5934381E5FFA226B9BE76ED7A8DD4414A1F54FB5975466593693BB2E75E7FF8F5C21, 8C6E1CF957E955181DA548E3DC55EBEC6C3C68BE50F4FBFA0B8AC28F7D4E92FC1F9E5F9D32AC4953F7A6602861575BEE012B9F43771619D1CEF7A8CD492B255268, 14FF248CEADBC92366358C2F3F8046F5DA1A153F8AAB1FF50FD701223209C9B876846D1FAE69EBA7DFE27E6824A101F3E976929EAC9AF070AEA5D53296155AE4868 -6A6FFFF932C11A0C5948D0B4939ECDA9F106E5A6FE8CBD58BB0B9CA85B1FEE6742D3B64C86FA97CC3DE5DFEF20C5FD330BA3BB318B61B7FEAE1463, BBEF569E0CC9A96C7A1C0CC4D3D70620BD5E9D53A58ACD7CD25BF21678DC6EFFAA1F89B1F8F39E7631A9A07D25C19E1C6794958AB2A600B278118F0E25C6223487, 148743E3D98925BEEC533C26B0E3AD101CA28BC7701C54F16A92CE70B2F39B67DBC5984D805C418FE5CB09F4134C2FF58B860A64B9CFD866BAA470EA32DF7DDD68B -13F4FFFEB98434E250BDA721DBADC68FDD314B0F4FBA6380A3122D5F9115FCB35C87B22E594EFC764B9B19FCD6251F79922EB3194A22527FC0A3D29, 1C658E918AD481902FFCB697AF52CEDE3F262449436145B74AD147D2D8E4570FF630D547AAAB4F0ADAC32945E559628A5508C60E3775F0F7B3C62223995CEB56ABB, 7BD861163EFBEC24CCC38A42E1EAA9D2B9BA2D2CD8545876004EA665F0ABD374D38E9A476B291E57DB92DD513D17B93C87CEDEB1A187FBF722416B4CE271384BEE -3BDEFFFC2C8C9EA6F238F565930953AF9793E12DEF2F2A81E936881EB341F61A1597168B0BECF562E2D14DF6826F5E6CB68C194BDE66F77F41EB77B, AF1430CCFB6E96905C60132D711CA0183DC456517413D6B4EA79360EE24DF4C61CEE38D67D57D8F6B97B7996FCEFA4935C2EAE90DC1F7EF6CD93B792EA09CB72CA, 15BBEB0B26DF08BA3BA3DF04DA15DEF333445C9D588166E8F5E7C4333EFEDAAE216228A789DB5E9B76A9F9F8C463C7D028EA38995D37D6755E95769D32B68B93736 -B39CFFF485A5DBF4D6AAE030B91BFB0EC6BBA389CD8D7F85BBA3985C19C5E24E40C543A123C6E028A873E9E3874E1B4623A44BE39B34E67DC5C2671, 11EB2130BCDCE91DFEBF477898E00F46CB475BF5B27E7C5679BD0B167AEFFCE9DA47D499B4A2F13DC4DE9E7223659A6A64D6DE2B246C475F93A4E0AB69374C77CB9, 1D33D47802BD0525A4294A01AAFA1C5BC445EA609D1C91D0A35AB25145951BC9766149EE2190FBFF57350187675CA4F0A2E2F4CDBE21AA58048E538D3082735AF08 -21AD6FFDD90F193DE8400A0922B53F12C5432EA9D68A87E9132EAC9144D51A6EAC24FCAE36B54A079F95BBDAA95EA51D26AECE3AAD19EB3795147353, 1A2F18405BC7A3D509B69C1D05856D4CEF9834E79A256273905DFA6F8B965960B1A7355C8F6365C9D9F4D2540979AE68FE6D4F89F1C462628FDBF2C25F47A9496C5, 14DAA6BB8249897441A6E142244167B9DF06E74D7905910A14AE645A0D23AEC3B4C5A160DE60C9FF1DB0AC4A2AC3D5932D77BBC22D02AC2DC1852F3A9F359D38EEB -65084FF98B2D4BB9B8C01E1B681FBD384FC98BFD839F97BB398C05B3CE7F4F4C046EF60AA41FDE16DEC1338FFC1BEF57740C6AB0074DC1A6BF3D59F9, 1BB9D99F0B34F71683F9629D3ACC1EC0E710861E99FFEC3BFCA03147AFBA4DF250247E2E3AC0C139C54C9DB78F3DE4B6C88D88C435C0253EE30BC55A0F75EC6CFF0, F390B86711EC1DA460FA73AB1C7753428AB592FAA788492718D0ED596A3273914A0BDB4EF43ADD85A9C097F48D7C614E28FCDB14AE62129AA2DD7994C5F51C7D7B -12F18EFECA187E32D2A405A52385F37A8EF5CA3F88ADEC731ACA4111B6B7DEDE40D4CE21FEC5F9A449C439AAFF453CE065C25401015E944F43DB80DEB, AB70771B55DC2406DA2CFDF6AD36BE05F3D6B71391504333C2ADA85367215599B1F75483E32432709AF01E8EF2DC7B393B69D0A66F6BB52749E51A8C855E2B2165, 1C927D230DDEC9908E2202D863E37A9254A9AB0F15B4AD3058D6B508285BF638379DF0513C3DED4C5F003CB486001FB9B5AEA796E8559284FE82113E7BC9EE7184C -38D4ACFC5E497A9877EC10EF6A91DA6FACE15EBE9A09C559505EC33524279C9AC27E6A65FC51ECECDD4CAD00FDCFB6A13146FC03041BBCEDCB92829C1, 1CC9802E3D53A08C1063EF50510241DAAEDF80C1696258F812411A7619D500E3ACAE35D1DC16761E9AB1B667F6A5CFB3DE60C6D0E0626DE429A138FEF3418910622, F45C2CA54B397DB15640C19E2FC5C23A727341A86AA485B95E5E21EF56BDA509239649D4DF7C736DFD5B9423FE2B964941333BA7D63F8AD92E6CFB040992C7F694 -AA7E06F51ADC6FC967C432CE3FB58F4F06A41C3BCE1D500BF11C499F6C76D5D0477B3F31F4F5C6C697E60702F96F23E393D4F4090C5336C962B787D43, 15C7C77A85A087586E3543849614AF7CD373C56AD4D04865A72D9DC8572DEB2E811A75A3FC28C8A1D1D7EC61312E1E81CB02EED003FF3693259DFCD877891BE183C, 6F9499F4D91F936C153285A7C383B8C6058E9E676D1E68AA777896030C86F96022A08CDED4527E2B947D4A27E7D11E942F6EBC0E74E84EC2E2F1CD3ECF59DCC8CF -1FF7A14DF50954F5C374C986ABF20ADED13EC54B36A57F023D354DCDE45648170D671BD95DEE15453C7B21508EC4D6BAABB7EDC1B24F9A45C2826977C9, 542B6B74778AC458886E35A9A1410C3DA9F0F0E77930495B62631ACE17B7A0484C9B014CB1536770BB7B6DFC4913B0F34E63FF33C91481C63F7BC031222BCB53AA, 11D96C405781389CF533F8156A70AAE884D261FF36AD792810CA859A2751B6C14CA1C98E12332DAC28A37671D0693C5E81493A483BCE1BD739333035DDAEAEF5AAF -5FE6E3E9DF1BFEE14A5E5C9403D6209C73BC4FE1A3F07D06B79FE969AD02D8452835538C19CA3FCFB57163F1AC4E84300327C94516EECED147873C675B, 183C05B70F209BE717045ABEA0B91E88645D9210307A45F7887CB5B8E05387801E06A17E34545E4D54B50A61A0AD8619B62A9453D499D4CFA64FC591541D360FA55, 185CA9FFA827C9EA38F9EB0BF24CE36701AE794CF05344AAD469C6B13CC40B1426ECF8DFEB69EA8831612E4A042A883279AE8378F3C28CB54A5B367F41A9CEFA885 -11FB4ABBD9D53FCA3DF1B15BC0B8261D55B34EFA4EBD1771426DFBC3D070888CF789FFAA44D5EBF6F20542BD504EB8C9009775BCF44CC6C73D695B53611, 17E2D3E8289F1A3822316EC45C80A93F113C2CCF92BBAD0616CE4C31F47A6786DE3104B172733C9C349ECB4724C59F90943CE6A87064F36369B4173D402B33B89D4, 14FC14E5BEB0866623400696A2FF439967C7E33A1528F5790D196FAE0CAA5686D38BD795BBBA74712F406E183A92EB79102086229675A2A8B2EBCA9816608596DA0 -35F1E0338D7FBF5EB9D51413422872580119ECEEEC374653C749F34B715199A6E69DFEFECE81C3E4D60FC837F0EC2A5B01C66136DCE65455B83C11FA233, 1673C0F4D6A21EAA5692AC9256C648738BD7252DFD184E9512C3F5F92F8F51E4DCA6FEB75D13FF75EDC8ED728CE24512115B7D66E5A8C7BDD53F148CF7DA70E6CE7, 11AAEC3CE7DF2AD0591949D0BB5F4B5437A7287D3A1CFC06F61FF24D4714631E0471E02782BE823E904AD29FFCE51D17AA838F52E304A157FE0EE06742678A1D22E -A1D5A09AA87F3E1C2D7F3C39C6795708034DC6CCC4A5D2FB55DDD9E253F4CCF4B3D9FCFC6B854BAE822F58A7D2C47F11055323A496B2FD0128B435EE699, DE321BBBF4C54AFCE7D32215A2EEFEB2EE09767FFF04FAA6B2341FAF782CF9A9D07EDBE5936F2B36C585E5D99A29B69E8F08F4A2CFE21641DEB6D041C08B974EBD, 18177025D1E0BE77A67CDEB542C098488503F70360EB2F61C823A7B1BDEBB1A8892A3097D85F49AAABCCA29745C5E7CBF103AC62DADCAA995AD95206EF2411C752D -1E580E1CFF97DBA54887DB4AD536C051809E954664DF178F201998DA6FBDE66DE1B8DF6F5428FE30B868E09F7784D7D330FF96AEDC418F7037A1CA1CB3CB, D8DE2E16D35FADD54628BF94D1EC81611E6D703B7D87B3727F96FBF1326D8EFCEE5469442F6229708D2B9F28D0FF2784C78B44877304A890247ACCCBC16872A3B3, 1FE6EA28DD4B30DF390C567AA15EDEB300863F425A5B1B3CC16BCD861924EAE7834D73C0B13FE1A03BB1DD27ED7424BCC01E7C39AB3A211A8EA92445D13444BE9C9 -5B082A56FEC792EFD99791E07FA440F481DBBFD32E9D46AD604CCA8F4F39B349A52A9E4DFC7AFA92293AA1DE668E877992FEC40C94C4AE50A6E55E561B61, 184ABE3FB0312D282A4E0DF22DAF6408F35D4F08EA171E96DD753DAFB8E334D9CB1F94FDAAE28A52CADAA6196F8EC9FA8C4A1228E5C0FD1C77B69662CFDB90821DB, 188314CA090595942D25D26EE3A71B97DBFD8F3022A799BD61054D6BCD7DD852759102E0B1FD13A4E496B0D03EB499F44F66D803AE7FDDBAABD6B43AD1961CD392F -111187F04FC56B8CF8CC6B5A17EECC2DD85933F798BD7D40820E65FADEDAD19DCEF7FDAE9F570EFB67BAFE59B33AB966CB8FC4C25BE4E0AF1F4B01B025223, 2DF486A3DC35410AAD27C68671278B1DF07EC59A3555AC1F33AC99327743EEEFA50450981D4A63AE1D4791F8576E745B58E21FFB0132BC9F5471CD596C75C9E2D1, CDDF942FAC9EC5A83D34C1E61BFC6DD0432FCF22A03E617B2A76FB432ACCF076EE5538D91019809C257F329D670DD32BC861236C46F8985263556421734E2DB47E -333497D0EF5042A6EA65420E47CC6489890B9BE6CA3877C1862B31F09C9074D96CE7F90BDE052CF23730FB0D19B02C3462AF4E4713AEA20D5DE105106F669, FC47F39D9A9342D32CCD7ED1550B17FC76DBD98E4EC648491EAA3AD81ECCD498E758EF6E68E2942FB5436EC2F18E6E1A59455534D36645AA6CE2EEF7ABEA6A429F, 77B64D0C8442C16071D06AB2F56DC1E454EB37C0046CF9D9A05AF17100789242D6B426A335007936677AA7C82E365E25E6D335C67E5A4C7F22E80AC4F7A915D218 -999DC772CDF0C7F4BF2FC62AD7652D9C9B22D3B45EA96744928195D1D5B15E8C46B7EB239A0F86D6A592F1274D10849D280DEAD53B0BE62819A30F314E33B, 72DF7D29DC382D061D17FA29CDF4F2CA5FE533F44E6C0BB39ACAAA5B535748D155DA215C572A24EFBEB3E08C422CBC7CC389280C764FBB120B37485BE7ED793300, 1379F04E35E19E2823531C0D926889287BC66FEDE617EB1F906294FC5C10D7185AFF09ACAA36484097EEFAD2CB2D9FCD1667FC94A21D7BF27844C157D8EB546769E -1CCD9565869D257DE3D8F5280862F88D5D1687B1D1BFC35CDB784C17581141BA4D427C16ACE2E9483F0B8D375E7318DD77829C07FB123B2784CE92D93EA9B1, 6AF49F5160C72F719C743C516123F45DED177FC979A5257EB459D293CC49C6D6C85FA019A1B25A75D5C5C8EF5AB2D7F471722BAF41D880435CD333F1D35A11A1F9, 17A092F54E224F3F5E370D6188B9735D77BA59A16BF18BDBA27C8622CDB0C4AAADDE676975F36A715B1F5C998E463973C56E5077D81351605DEDCC86E1579E4F45C -5668C03093D77079AB8ADF781928E9A817439715753F4A169268E4460833C52EE7C7744406A8BBD8BD22A7A61B594A986687D417F136B1768E6BB88BBBFD13, 1509FE8354E1C0D49704F7C9E384B44EE122F206A73FD15D5FE5C0893A35BACFC657A2F459B6919C6A59F8B16485DD86901D5FC0334C7F8F56FE2FDD9CD710BAFC3, 1A0FA3E32180226048F38FFE609BC26FD2397A092D6A9CF1EF4F76C682FCA5E0A9BF5B17E87737CC187722AB4DB85E35E6435FBD0B10136F68DABA009D03CD553F1 -1033A4091BB86516D02A09E684B7ABCF845CAC5405FBDDE43B73AACD2189B4F8CB7565CCC13FA338A3767F6F2520BDFC933977C47D3A41463AB4329A333F739, 46DBEFDA4678029137F8D2B537F8B3418FCEB35AD4DE9EFD7016EA10AB8CC83F5DE525A4AF44B85D871880490340C24799CFEC7AEB7DCB8A27F328B78033DA3E3A, 17088E0DA70A4E95C5A05C3C9E7FA1E64803497C8ADD85CC6BE00F1F4730ECC3D83320251BEA6F903C26D518C64D70F0391E40F52394D20D464C4CB1ADDFD17765B -309AEC1B53292F44707E1DB38E27036E8D1604FC11F399ACB25B0067649D1EEA6260316643BEE9A9EA637E4D6F6239F5B9AC674D77AEC3D2B01C97CE99BE5AB, BD1D1172FEA3E457BD8AD5444E23C3185D33B63F90381C7F4ED35DD5ABAD4225EB96C94B2ACA6D6445CD805492FAED155383CB2ADCAF8D2109ED57FFD12DBC60D7, 128187DBD872D2FE96112AD4670661DE2B1E1FF315EC45437DD1D17F22855C64181698EFEA87062EA0B21E9920811A09616DD72A9588D4C2B3C05F2D751554A986F -91D0C451F97B8DCD517A591AAA750A4BA7420EF435DACD06171101362DD75CBF27209432CB3CBCFDBF2A7AE84E26ADE12D0535E8670C4B781055C76BCD3B101, AB657A84D03CBE90E321B0C132C593A87E3229AB6F8526BE212718B4938FB431A10D612146F2FEA097A258CBC3C6490D9010D4BC3C8D449512A8644E32B4B2802F, BE610A0EDA21A8284FE7AF01AE163E93C7AA71ECCDDB50B15D2DE9A13FAAB4362C2A29DDB3BB59ACC8DF9002796B193FB9C686C429F5C8961ECCE946F9051849FA -1B5724CF5EC72A967F46F0B4FFF5F1EE2F5C62CDCA1906712453303A28986163D7561BC9861B636F93D7F70B8EA7409A3870FA1B93524E2683101564367B1303, 16FDBCD87907F7640250E562D5D7EA5FF0C1EEE49A0D63FA7A56D6B848793BF1BCD9755011FFEA81132A9364407F299170A095FE89B9A6A3DF9D79AEE77FD341D62, 12548441A0B629009456EAD09DD05F0DE1FE178D71DB7AB140D32B5D0208268C125BD6C60304F450B4CB684CBE67798C91D4CF70E17D2DBFE6E1C4C3E70BAE03796 -52056E6E1C557FC37DD4D21EFFE1D5CA8E1528695E4B13536CF990AE79C9242B8602535C92522A4EBB87E522ABF5C1CEA952EE52B9F6EA738930402CA3713909, 10470A88DFED45D0F19595E671D53581F51E4A2D3A0DA6533F89632AAB22FCB4BFBB025554F762A32AEAEE6A1101100F9C006A037BC6DBECD79AA761F0E843F395C, 657458DEC44CCAAE706CB552B34BDC57E34F46E7B24B3DB8D3B346E8D3F066DCBC7AF6FFDC52115D76A5551C996FE46037A45279553A8532D4A6288211F966FA64 -F6104B4A55007F4A797E765CFFA5815FAA3F793C1AE139FA46ECB20B6D5B6C829206FA15B6F67EEC3297AF6803E1456BFBF8CAF82DE4BF5A9B90C085EA53AB1B, A9C7B530A8C82ED3DDAC093C679BBA9C10BAE4C6E70A46CE699056782212C251D4659D0174C80EB4A3A9DA5C1309DE8EAB660D182B197CB70984C394B280F2FE51, 1A9AFD356F904DE55B89E664146636D5AA3833C9A8CDC3DB1DE6A40B183F2B658AB79F29024AF382AB6E1E0F5A451C9F54288869F9EB728E3AE80E2F00B786CE883 -2E230E1DEFF017DDF6C7B6316FEF0841EFEBE6BB450A3ADEED4C6162248124587B614EE4124E37CC497C70E380BA3D043F3EA60E889AE3E0FD2B24191BEFB0151, 10BFECB2F86933EF2D3D0F4FC1B8BE4C3C2B6AEA1FAFA4BDC00C5E26457551DFE3FDECB8114596EAD3445FB3F7C2D6807AAA4CF476C0F9E2116EE212848E22F7E64, AA03AF238C228537E1528ADB56243799645ECCCA9AB62D78D4354DA6B06EAB59B7B1A61BE103CF52AEF6FD02E39994B0EDF5B55E5E6835E20729BA6CC3BDFD7B81 -8A692A59CFD04799E45722944FCD18C5CFC3B431CF1EB09CC7E524266D836D097223ECAC36EAA764DC7552AA822EB70CBDBBF22B99D0ABA2F7816C4B53CF103F3, 89C9C81B7863056A04D35A8DA566FED1A583B11A32C139AF5ED52B6B3C84763CD9D16A03FE9F8F76D66D9043A12CBA99E2160163462553A259E7DBB9E39B36BFCA, 1ACA646516FBCDC7419702A53757BA2EE8EEAC0D228F499870BEDF68661F8D56FF9B44F829B6F0DC32D4C7209F81A8A818C83B8DAE23373C5FB482335007B5287FD -19F3B7F0D6F70D6CDAD0567BCEF674A516F4B1C956D5C11D657AF6C73488A471C566BC604A4BFF62E955FF7FF868C25263933D682CD7202E8E68444E1FB6D30BD9, C838E095D259ADC1081183214930E368BC3C68C226983B0808314A7B5C54400F7EE47C093230C367AD46D06616AB864A293C3509732F99C4E4A3BF76277B58CD20, B5A4ACD32FB314B1A0FEDB687CE97FE16CA00A7004D73036E80C6246420D9EA5211DB0ACAD07813C8E74B0370073906EC7AB3B0962DB31A624AC86A03914E52D05 -4DDB27D284E52846907103736CE35DEF44DE155C048143583070E4559D99ED5550343520DEE3FE28BC01FE7FE93A46F72AB9B8388685608BAB38CCEA5F2479238B, 12B7BA8CDCD76630988291EF9B9F414711BECB923207BD1641F63650D2EB79F03D42438B275A2261C69F7DD6FA439794022FFC997C80F12B1255DCAE82A50AEB331, 8B37583CF151BB968D438E17E21480A701261C14963FAE4EF37F9BFA12174D1FB477DAEADAF447DA8188E2D89C052174073ED02CD014CF16A87D2CC77FB0F42F5E -E99177778EAF78D3B1530A5A46AA19CDCE9A40140D83CA089152AD00D8CDC7FFF09C9F629CABFA7A3405FB7FBBAED4E5802D28A9939021A301AA66BF1D6D6B6AA1, 1AA4D99854C554B4BC1106C67B4F4C7471C350068949097410ECC934CE1D8A93521FEE72B32980D51B0C4BEB4CCC4F26661ED17AF49D08A6B6850F01C9811960635, 1E2FDA7EBE4C8581C5342540A22C6AE12D991D5D4AB67CACC38078F0DA280902E90E6A14609E9E404711A048A8FEF8A75DA40957494E1577DAAFED199A66EE97C5F diff --git a/src/libtomcrypt/notes/etc/NoekeonVects.java b/src/libtomcrypt/notes/etc/NoekeonVects.java deleted file mode 100644 index 8ec542aad2..0000000000 --- a/src/libtomcrypt/notes/etc/NoekeonVects.java +++ /dev/null @@ -1,249 +0,0 @@ -/* - NoekeonVects.java - Generate Noekeon test vectors using BouncyCastle. - - Written in 2011 by Patrick Pelletier - - To the extent possible under law, the author(s) have dedicated all - copyright and related and neighboring rights to this software to - the public domain worldwide. This software is distributed without - any warranty. - - This file is dedicated to the public domain with the CC0 Public Domain - Dedication: http://creativecommons.org/publicdomain/zero/1.0/legalcode.txt - - You may also consider this file to be covered by the WTFPL, as contained - in the LibTomCrypt LICENSE file, if that makes you happier for some reason. - - ---------------------------------------------------------------------- - - This program was inspired by the comment in Botan 1.10.1's - doc/examples/eax_test.cpp: - - // Noekeon: unknown cause, though LTC's lone test vector does not - // match Botan - - So, I investigated the discrepancy by comparing them with a third - implementation, BouncyCastle: http://www.bouncycastle.org/java.html - - I determined that there are two reasons why LibTomCrypt's Noekeon does - not match Botan: - - 1) Botan uses "indirect Noekeon" (with a key schedule), while - LibTomCrypt and BouncyCastle both use "direct Noekeon" (without - a key schedule). See slide 14 of - http://gro.noekeon.org/Noekeon-slides.pdf - - 2) However, LibTomCrypt's direct Noekeon still does not match - BouncyCastle's direct Noekeon. This is because of a bug in - LibTomCrypt's PI1 and PI2 functions: - https://github.com/libtom/libtomcrypt/issues/5 - - This program uses BouncyCastle to produce test vectors which are - suitable for Botan (by explicitly scheduling the key, thus - building indirect Noekeon out of BouncyCastle's direct Noekeon), - and also produces test vectors which would be suitable for - LibTomCrypt (direct Noekeon) once its PI1 and PI2 functions are - fixed to match the Noekeon specification. - - Although this program uses a PRNG from BouncyCastle to generate - data for the test vectors, it uses a fixed seed and thus will - produce the same output every time it is run. -*/ - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.Locale; -import org.bouncycastle.crypto.digests.RIPEMD128Digest; -import org.bouncycastle.crypto.engines.NoekeonEngine; -import org.bouncycastle.crypto.modes.EAXBlockCipher; -import org.bouncycastle.crypto.params.AEADParameters; -import org.bouncycastle.crypto.params.KeyParameter; -import org.bouncycastle.crypto.prng.DigestRandomGenerator; -import org.bouncycastle.util.encoders.HexEncoder; - -public class NoekeonVects -{ - private final DigestRandomGenerator r = - new DigestRandomGenerator(new RIPEMD128Digest()); - - private final HexEncoder h = new HexEncoder(); - - private final NoekeonEngine noekeon = new NoekeonEngine(); - - private final KeyParameter null_key = new KeyParameter(new byte[16]); - - private final boolean schedule_key; - - private final boolean botan_format; - - private byte[] randomBytes(int n) - { - byte[] b = new byte[n]; - r.nextBytes(b); - return b; - } - - private void hexOut(byte[] b) throws IOException - { - // HexEncoder uses lowercase, and Botan's test vectors must - // be in uppercase, so... - ByteArrayOutputStream os = new ByteArrayOutputStream(); - h.encode(b, 0, b.length, os); - String s = os.toString("US-ASCII"); - System.out.print(s.toUpperCase(Locale.US)); - } - - private void printCArray(byte[] a) throws IOException - { - byte[] b = new byte[1]; - for (int i = 0; i < a.length; i++) - { - if (i > 0) - System.out.print(", "); - System.out.print("0x"); - b[0] = a[i]; - hexOut(b); - } - } - - private void printVector(byte[] key, byte[] plaintext, byte[] ciphertext) - throws IOException - { - if (botan_format) - { - hexOut(plaintext); - System.out.print(":"); - hexOut(ciphertext); - System.out.println(":\\"); - hexOut(key); - System.out.println(); - } - else - { - System.out.println(" {"); - System.out.println(" 16,"); - System.out.print(" { "); - printCArray (key); - System.out.println(" },"); - System.out.print(" { "); - printCArray (plaintext); - System.out.println(" },"); - System.out.print(" { "); - printCArray (ciphertext); - System.out.println(" }"); - System.out.println(" },"); - } - } - - private KeyParameter maybe_schedule_key(byte[] key) - { - if (schedule_key) - { - noekeon.init(true, null_key); - byte[] scheduled = new byte[16]; - noekeon.processBlock(key, 0, scheduled, 0); - return new KeyParameter(scheduled); - } - else - return new KeyParameter(key); - } - - private byte[] encrypt(byte[] plaintext, byte[] key) - { - KeyParameter kp = maybe_schedule_key(key); - noekeon.init(true, kp); - byte[] ciphertext = new byte[16]; - noekeon.processBlock(plaintext, 0, ciphertext, 0); - return ciphertext; - } - - public NoekeonVects(long seed, boolean schedule_key, boolean botan_format) - { - this.schedule_key = schedule_key; - this.botan_format = botan_format; - r.addSeedMaterial(seed); - } - - public void ecb_vectors() throws IOException - { - for (int i = 0; i < 8; i++) - { - byte[] key = randomBytes(16); - byte[] plaintext = randomBytes(16); - byte[] ciphertext = encrypt(plaintext, key); - printVector(key, plaintext, ciphertext); - } - } - - public void eax_vectors() throws Exception - { - System.out.println("EAX-noekeon (16 byte key)"); - EAXBlockCipher eax = new EAXBlockCipher(new NoekeonEngine()); - byte[] output = new byte[48]; - byte[] tag = new byte[16]; - - for (int j = 0; j < 16; j++) - tag[j] = (byte) j; - - for (int i = 0; i <= 32; i++) - { - byte[] header_nonce_plaintext = new byte[i]; - for (int j = 0; j < i; j++) - header_nonce_plaintext[j] = (byte) j; - AEADParameters params = - new AEADParameters(maybe_schedule_key(tag), - 128, - header_nonce_plaintext, - header_nonce_plaintext); - eax.init(true, params); - int off = eax.processBytes(header_nonce_plaintext, 0, i, - output, 0); - off += eax.doFinal(output, off); - if (off != i + 16) - throw new RuntimeException("didn't expect that"); - byte[] ciphertext = new byte[i]; - for (int j = 0; j < i; j++) - ciphertext[j] = output[j]; - for (int j = 0; j < 16; j++) - tag[j] = output[i + j]; - System.out.print(i < 10 ? " " : " "); - System.out.print(i); - System.out.print(": "); - hexOut(ciphertext); - System.out.print(", "); - hexOut(tag); - System.out.println(); - } - } - - public static void main(String[] argv) throws Exception - { - NoekeonVects bot = new NoekeonVects(0xdefacedbadfacadeL, true, true); - NoekeonVects tom = new NoekeonVects(0xdefacedbadfacadeL, false, false); - System.out.println("# ECB vectors for indirect Noekeon, in Botan's"); - System.out.println("# test vector format, suitable for insertion"); - System.out.println("# into Botan's file checks/validate.dat"); - System.out.println("# Block cipher format is plaintext:ciphertext:key"); - bot.ecb_vectors(); - System.out.println(); - System.out.println("/* ECB vectors for direct Noekeon, as C arrays"); - System.out.println(" * suitable for insertion into LibTomCrypt's"); - System.out.println(" * noekeon_test() in src/ciphers/noekeon.c,"); - System.out.println(" * once LTC's PI1/PI2 bug is fixed. */"); - tom.ecb_vectors(); - System.out.println(); - System.out.println("# EAX vectors for indirect Noekeon, in the format"); - System.out.println("# generated by LTC's demos/tv_gen.c and consumed"); - System.out.println("# by Botan's doc/examples/eax_test.cpp, suitable"); - System.out.println("# for insertion in Botan's doc/examples/eax.vec"); - bot.eax_vectors(); - System.out.println(); - System.out.println("# EAX vectors for direct Noekeon, in the format"); - System.out.println("# generated by LTC's demos/tv_gen.c and consumed"); - System.out.println("# by Botan's doc/examples/eax_test.cpp, which"); - System.out.println("# should match LTC's notes/eax_tv.txt, once"); - System.out.println("# LTC's PI1/PI2 bug is fixed."); - tom.eax_vectors(); - System.out.flush(); - } -} diff --git a/src/libtomcrypt/notes/etc/saferp_optimizer.c b/src/libtomcrypt/notes/etc/saferp_optimizer.c deleted file mode 100644 index da28179ea8..0000000000 --- a/src/libtomcrypt/notes/etc/saferp_optimizer.c +++ /dev/null @@ -1,177 +0,0 @@ -/* emits an optimized version of LTC_SAFER+ ... only does encrypt so far... */ - -#include -#include - -/* This is the "Armenian" Shuffle. It takes the input from b and stores it in b2 */ -#define SHUF\ - b2[0] = b[8]; b2[1] = b[11]; b2[2] = b[12]; b2[3] = b[15]; \ - b2[4] = b[2]; b2[5] = b[1]; b2[6] = b[6]; b2[7] = b[5]; \ - b2[8] = b[10]; b2[9] = b[9]; b2[10] = b[14]; b2[11] = b[13]; \ - b2[12] = b[0]; b2[13] = b[7]; b2[14] = b[4]; b2[15] = b[3]; memcpy(b, b2, sizeof(b)); - -/* This is the inverse shuffle. It takes from b and gives to b2 */ -#define iSHUF(b, b2) \ - b2[0] = b[12]; b2[1] = b[5]; b2[2] = b[4]; b2[3] = b[15]; \ - b2[4] = b[14]; b2[5] = b[7]; b2[6] = b[6]; b2[7] = b[13]; \ - b2[8] = b[0]; b2[9] = b[9]; b2[10] = b[8]; b2[11] = b[1]; \ - b2[12] = b[2]; b2[13] = b[11]; b2[14] = b[10]; b2[15] = b[3]; memcpy(b, b2, sizeof(b)); - -#define ROUND(b, i) \ - b[0] = (safer_ebox[(b[0] ^ skey->saferp.K[i][0]) & 255] + skey->saferp.K[i+1][0]) & 255; \ - b[1] = safer_lbox[(b[1] + skey->saferp.K[i][1]) & 255] ^ skey->saferp.K[i+1][1]; \ - b[2] = safer_lbox[(b[2] + skey->saferp.K[i][2]) & 255] ^ skey->saferp.K[i+1][2]; \ - b[3] = (safer_ebox[(b[3] ^ skey->saferp.K[i][3]) & 255] + skey->saferp.K[i+1][3]) & 255; \ - b[4] = (safer_ebox[(b[4] ^ skey->saferp.K[i][4]) & 255] + skey->saferp.K[i+1][4]) & 255; \ - b[5] = safer_lbox[(b[5] + skey->saferp.K[i][5]) & 255] ^ skey->saferp.K[i+1][5]; \ - b[6] = safer_lbox[(b[6] + skey->saferp.K[i][6]) & 255] ^ skey->saferp.K[i+1][6]; \ - b[7] = (safer_ebox[(b[7] ^ skey->saferp.K[i][7]) & 255] + skey->saferp.K[i+1][7]) & 255; \ - b[8] = (safer_ebox[(b[8] ^ skey->saferp.K[i][8]) & 255] + skey->saferp.K[i+1][8]) & 255; \ - b[9] = safer_lbox[(b[9] + skey->saferp.K[i][9]) & 255] ^ skey->saferp.K[i+1][9]; \ - b[10] = safer_lbox[(b[10] + skey->saferp.K[i][10]) & 255] ^ skey->saferp.K[i+1][10]; \ - b[11] = (safer_ebox[(b[11] ^ skey->saferp.K[i][11]) & 255] + skey->saferp.K[i+1][11]) & 255; \ - b[12] = (safer_ebox[(b[12] ^ skey->saferp.K[i][12]) & 255] + skey->saferp.K[i+1][12]) & 255; \ - b[13] = safer_lbox[(b[13] + skey->saferp.K[i][13]) & 255] ^ skey->saferp.K[i+1][13]; \ - b[14] = safer_lbox[(b[14] + skey->saferp.K[i][14]) & 255] ^ skey->saferp.K[i+1][14]; \ - b[15] = (safer_ebox[(b[15] ^ skey->saferp.K[i][15]) & 255] + skey->saferp.K[i+1][15]) & 255; - -int main(void) -{ - int b[16], b2[16], x, y, z; - -/* -- ENCRYPT --- */ - for (x = 0; x < 16; x++) b[x] = x; - /* emit encrypt preabmle */ -printf( -"void saferp_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey)\n" -"{\n" -" int x;\n" -" unsigned char b[16];\n" -"\n" -" LTC_ARGCHK(pt != NULL);\n" -" LTC_ARGCHK(ct != NULL);\n" -" LTC_ARGCHK(skey != NULL);\n" -"\n" -" /* do eight rounds */\n" -" for (x = 0; x < 16; x++) {\n" -" b[x] = pt[x];\n" -" }\n"); - - /* do 8 rounds of ROUND; LT; */ - for (x = 0; x < 8; x++) { - /* ROUND(..., x*2) */ - for (y = 0; y < 16; y++) { -printf("b[%d] = (safer_%cbox[(b[%d] %c skey->saferp.K[%d][%d]) & 255] %c skey->saferp.K[%d][%d]) & 255;\n", - b[y], "elle"[y&3], b[y], "^++^"[y&3], x*2, y, "+^^+"[y&3], x*2+1, y); - } - - /* LT */ - for (y = 0; y < 4; y++) { -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[0], b[0], b[1], b[0], b[1]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[2], b[2], b[3], b[3], b[2]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[4], b[4], b[5], b[5], b[4]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[6], b[6], b[7], b[7], b[6]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[8], b[8], b[9], b[9], b[8]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[10], b[10], b[11], b[11], b[10]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[12], b[12], b[13], b[13], b[12]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[14], b[14], b[15], b[15], b[14]); - if (y < 3) { - SHUF; - } - } - } - -printf( -" if (skey->saferp.rounds <= 8) {\n"); -/* finish */ - for (x = 0; x < 16; x++) { - printf( -" ct[%d] = (b[%d] %c skey->saferp.K[skey->saferp.rounds*2][%d]) & 255;\n", - x, b[x], "^++^"[x&3], x); - } - printf(" return;\n }\n"); - - /* 192-bit keys */ -printf( -" /* 192-bit key? */\n" -" if (skey->saferp.rounds > 8) {\n"); - - /* do 4 rounds of ROUND; LT; */ - for (x = 8; x < 12; x++) { - /* ROUND(..., x*2) */ - for (y = 0; y < 16; y++) { -printf("b[%d] = (safer_%cbox[(b[%d] %c skey->saferp.K[%d][%d]) & 255] %c skey->saferp.K[%d][%d]) & 255;\n", - b[y], "elle"[y&3], b[y], "^++^"[y&3], x*2, y, "+^^+"[y&3], x*2+1, y); - } - - /* LT */ - for (y = 0; y < 4; y++) { -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[0], b[0], b[1], b[0], b[1]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[2], b[2], b[3], b[3], b[2]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[4], b[4], b[5], b[5], b[4]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[6], b[6], b[7], b[7], b[6]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[8], b[8], b[9], b[9], b[8]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[10], b[10], b[11], b[11], b[10]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[12], b[12], b[13], b[13], b[12]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[14], b[14], b[15], b[15], b[14]); - if (y < 3) { - SHUF; - } - } - } -printf("}\n"); - -printf( -" if (skey->saferp.rounds <= 12) {\n"); -/* finish */ - for (x = 0; x < 16; x++) { - printf( -" ct[%d] = (b[%d] %c skey->saferp.K[skey->saferp.rounds*2][%d]) & 255;\n", - x, b[x], "^++^"[x&3], x); - } - printf(" return;\n }\n"); - - /* 256-bit keys */ -printf( -" /* 256-bit key? */\n" -" if (skey->saferp.rounds > 12) {\n"); - - /* do 4 rounds of ROUND; LT; */ - for (x = 12; x < 16; x++) { - /* ROUND(..., x*2) */ - for (y = 0; y < 16; y++) { -printf("b[%d] = (safer_%cbox[(b[%d] %c skey->saferp.K[%d][%d]) & 255] %c skey->saferp.K[%d][%d]) & 255;\n", - b[y], "elle"[y&3], b[y], "^++^"[y&3], x*2, y, "+^^+"[y&3], x*2+1, y); - } - - /* LT */ - for (y = 0; y < 4; y++) { -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[0], b[0], b[1], b[0], b[1]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[2], b[2], b[3], b[3], b[2]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[4], b[4], b[5], b[5], b[4]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[6], b[6], b[7], b[7], b[6]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[8], b[8], b[9], b[9], b[8]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[10], b[10], b[11], b[11], b[10]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[12], b[12], b[13], b[13], b[12]); -printf(" b[%d] = (b[%d] + (b[%d] = (b[%d] + b[%d]) & 255)) & 255;\n", b[14], b[14], b[15], b[15], b[14]); - if (y < 3) { - SHUF; - } - } - } -/* finish */ - for (x = 0; x < 16; x++) { - printf( -" ct[%d] = (b[%d] %c skey->saferp.K[skey->saferp.rounds*2][%d]) & 255;\n", - x, b[x], "^++^"[x&3], x); - } - printf(" return;\n"); -printf(" }\n}\n\n"); - - return 0; -} - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/notes/etc/whirlgen.c b/src/libtomcrypt/notes/etc/whirlgen.c deleted file mode 100644 index 785f5bb10d..0000000000 --- a/src/libtomcrypt/notes/etc/whirlgen.c +++ /dev/null @@ -1,95 +0,0 @@ -#include - -unsigned E[16] = { 1, 0xb, 9, 0xc, 0xd, 6, 0xf, 3, 0xe, 8, 7, 4, 0xa, 2, 5, 0 }; -unsigned Ei[16]; -unsigned R[16] = { 7, 0xc, 0xb, 0xd, 0xe, 4, 9, 0xf, 6, 3, 8, 0xa, 2, 5, 1, 0 }; -unsigned cir[8][8] = { - {1, 1, 4, 1, 8, 5, 2, 9 }, -}; - - -unsigned gf_mul(unsigned a, unsigned b) -{ - unsigned r; - - r = 0; - while (a) { - if (a & 1) r ^= b; - a >>= 1; - b = (b << 1) ^ (b & 0x80 ? 0x11d : 0x00); - } - return r; -} - -unsigned sbox(unsigned x) -{ - unsigned a, b, w; - - a = x >> 4; - b = x & 15; - - a = E[a]; b = Ei[b]; - w = a ^ b; w = R[w]; - a = E[a ^ w]; b = Ei[b ^ w]; - - - return (a << 4) | b; -} - -int main(void) -{ - unsigned x, y; - - for (x = 0; x < 16; x++) Ei[E[x]] = x; - -// for (x = 0; x < 16; x++) printf("%2x ", sbox(x)); - for (y = 1; y < 8; y++) { - for (x = 0; x < 8; x++) { - cir[y][x] = cir[y-1][(x-1)&7]; - } - } - -/* - printf("\n"); - for (y = 0; y < 8; y++) { - for (x = 0; x < 8; x++) printf("%2d ", cir[y][x]); - printf("\n"); - } -*/ - - for (y = 0; y < 8; y++) { - printf("static const ulong64 sbox%d[] = {\n", y); - for (x = 0; x < 256; ) { - printf("CONST64(0x%02x%02x%02x%02x%02x%02x%02x%02x)", - gf_mul(sbox(x), cir[y][0]), - gf_mul(sbox(x), cir[y][1]), - gf_mul(sbox(x), cir[y][2]), - gf_mul(sbox(x), cir[y][3]), - gf_mul(sbox(x), cir[y][4]), - gf_mul(sbox(x), cir[y][5]), - gf_mul(sbox(x), cir[y][6]), - gf_mul(sbox(x), cir[y][7])); - if (x < 255) printf(", "); - if (!(++x & 3)) printf("\n"); - } - printf("};\n\n"); - } - - printf("static const ulong64 cont[] = {\n"); - for (y = 0; y <= 10; y++) { - printf("CONST64(0x"); - for (x = 0; x < 8; x++) { - printf("%02x", sbox((8*y + x)&255)); - } - printf("),\n"); - } - printf("};\n\n"); - return 0; - -} - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/notes/etc/whirltest.c b/src/libtomcrypt/notes/etc/whirltest.c deleted file mode 100644 index f91d46fc20..0000000000 --- a/src/libtomcrypt/notes/etc/whirltest.c +++ /dev/null @@ -1,19 +0,0 @@ -#include - -int main(void) -{ - char buf[4096]; - int x; - - while (fgets(buf, sizeof(buf)-2, stdin) != NULL) { - for (x = 0; x < 128; ) { - printf("0x%c%c, ", buf[x], buf[x+1]); - if (!((x += 2) & 31)) printf("\n"); - } - } -} - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/notes/gcm_tv.txt b/src/libtomcrypt/notes/gcm_tv.txt deleted file mode 100644 index 0e3962cfdf..0000000000 --- a/src/libtomcrypt/notes/gcm_tv.txt +++ /dev/null @@ -1,276 +0,0 @@ -GCM Test Vectors. Uses the 00010203...NN-1 pattern for nonce/header/plaintext/key. The outputs -are of the form ciphertext,tag for a given NN. The key for step N>1 is the tag of the previous -step repeated sufficiently. The nonce is fixed throughout at 13 bytes 000102... - -GCM-aes (16 byte key) - 1: 3A, 03C32E0E9D7E07A410B9BEE40A8F0D26 - 2: 26AE, 3A635BBDC1A17CA40B58CEEA78105CDC - 3: 142FAC, 7E8922E8FA6F1E41E4339F0B52176DE4 - 4: 20C1863F, A1D12620C22EA7A0AA0E74667A20B8E1 - 5: B3B796AA54, 53F0F9F03791BBD76BC99D1B5639F3C0 - 6: FDCFF8EA82D8, B56076B42E3EEAC73DD42FC83B9220F9 - 7: 4695E719E67849, B4A1A2E29AAD713D5677CF425E65A400 - 8: EE5BA3309D417697, 146EA95CED151F8C40DF98C1CC54930B - 9: 13FF05ABB084FA608F, 55550AADC3461CC190CA22F29C6246CD - 10: 008B0102208A22D3A562, 7178534BC7145754BAE525CC06E14A6B - 11: 3536DBBB07B026E78E94C8, AB27183AEA2240B0166D702EEB2A7BFA - 12: 00739D5A27AE82AC7D6A40EC, 4354578C3D241074D3C1F6496420F239 - 13: DA41A5F458400C94B84026C052, DC6CB036FCAE9765A69F5B8C38B0B767 - 14: 4C99797C7EDCEA9D5425565522E2, 3FFEEC557F0D5FA73472D2A3F8E71389 - 15: D381E7AD2E5BE2C97FB4BD958BC2EB, 6BF713D4E7DA7C4290967A1D23F97EDD - 16: 5016C127F16A4787734AF3A3E6F6F0F7, 8CD8458531E94BC8160E2176F63F8D0B - 17: BDF3D0F24D9415AB5CF9B87BB45B4A8AE4, D81A3D56451313742ACE53D41223F6AF - 18: 68C1FCBE22FBDB296C246F2E34D871A6902E, 7AFD64D4EB0DE7E2A842B518AC6D483F - 19: 7D8D3C31E643611B0B557F29B437F635FE3FD0, 8501B61DBF4A4DD19B87E95055B95962 - 20: 4185EEB0B9B480F69B3EC7A162810073A36AD95A, B9BCA6D9CA0AC2B4B35D7BFF4DB27D25 - 21: F991F4A481E322FEEC6FE9302D010AC4C811B23B4A, 54FA4DDA92E57509F4D48D206A03624F - 22: B288424FF96596B2A30A1EB9480F5EADC2F6D8551B9A, 2C998C8DFDC7663C8DE677B2F1CBCB57 - 23: 1066FE3DCB9F8AE0DC0693F7179F111E0A7A1FFE944FF4, 65402D1F8AFBDC819D6D1ADB5375AFD0 - 24: 0A8772CCDE122EFF01D7C187C77F07BDA50997B4320CD0D8, F55823AFC3D9FE6E749E70E82C823925 - 25: E6E2FBB3E2238BC8CB396F463C2F488B4B4933087728D39815, F06DA35A9AEE65F9AD0DAD5B99AB4DF6 - 26: 569BD39CB1693CB89B88923ABE0D8CFA0B4F22A48A15E2EACD4A, 661AF51FF0E0E363406AB278BFC9176D - 27: 199EED81C2428170EB089060FF9676596EADD2270895A0C8650903, 90AA9C634469D45E7BDD9AB955B90130 - 28: B5200497A0654009B9F5B0D45FFDCF192F3042D6B05C6D6A8191A7EA, 71F6C4982AA50705D5FFC60512FC674C - 29: E39DA262C0E851B5CB5BD55A8B19D0AC0ABDC6FF3F32DF3B1896242D9E, B58AA05F594FC9779E185353CC52B8FB - 30: AF349B91BAD4BE2F2D5E4DDE28A1AA74115A9059A5EBBF9E38F341DC368B, 966B04FE43A2A9D94004E756F7DBFEFA - 31: 8C87861DFFDE72FA64E926BF741330F64E2B30837650F309A3F979AE43BA2E, A5C825AE1B844D6A8D531077C881BD36 - 32: 924E178A17FA1CA0E7486F0404123B91DBF797BB9DBDE9B1D48D5C7F53165912, 10F972B6F9E0A3C1CF9CCF56543DCA79 - -GCM-rc6 (16 byte key) - 1: 16, 2CA928694EA91AF92B3ADB402FBBCDEE - 2: CD9D, 4A9940BD7148F08AE75A4F238148C174 - 3: 6D1332, 5CD73043FD797D1375AA011D2E36896A - 4: ADC34199, FF5D2B40B02CB58BC63AA6D1CFBA811B - 5: 83158D52A1, CB8C45A56D7539CBACBB85DFB4C1F52E - 6: 66E32F053C17, 3EB9AC9A066DC66DB4973B5C78C6EC0B - 7: F23224FEB14897, 0ED4890D034F20A9A78ACA7492AE9341 - 8: 3FF9570F77486C86, B82C19DE2C5CA6CAAC223F337173F840 - 9: 44B4F4130619FD516C, 6689DC410118E0DC2D90ADCD6327049B - 10: 6E205B2537935E50A1E3, CE5739FDFC13D279075508786388C08D - 11: DB836471D91F2FFC6A199E, 1518E9A6CD2190D32A9EA1AC0849DF09 - 12: B9936A58667AABD9BB9B2ADA, 388894E75CEF512CD5E3986DFB2CA589 - 13: 1B5072C8FC0EA19A0486C0E04C, A804D99E2414A314440E5F4B8BDCFB45 - 14: 614903F301B1E7C092E9A32C195C, B4F7406533C58AC54869F09C4B0801CE - 15: F30ADEF328878D174B1AEAF5D7137D, 7C5BB92772540C1E2209B77C78AAB092 - 16: 776D20B980DDC7C48ACE4225F59E2736, 85DAEE9785EB1BA9C99FFAA5AE565159 - 17: 6BBA225325564369BB5F11EF5734604938, E41E0E3C31F4B1770AB93750A386286C - 18: 6EAAF9EF0C149A13BA535A2AFC398281017D, 10CBB6A874711DE179D8A4EEDC4DE085 - 19: 9D0B62274F7E5426F5AD9515DAAF4742C291D9, A35D18485F881CB0BBB00A9421C9694C - 20: E6A18F640923DBB22FCBCEB0ACD1A2BC94256212, CFCFC7E7E5C64090DF746F8C36F605D4 - 21: E37EB92C38B47C6E2621C2CC64D83CCCA9104C2095, D88C0FBF2402FBA40EB525118FC2CAC8 - 22: 0E690F9D73E7E689AF48FE5B99E58AC42F3702EA40FD, 33D698F9C44FEB68C1C442B30DD36B9E - 23: DA759D58629FA946FB635538C1AED318890C4D84EB6610, D7BC6A69DA658EE3DB842C01B9085A07 - 24: 581F86B5A844FD709B13E09A7CF64ADEA84EFC2D7AD9300A, 0296F58775CE4D4E92C4DD0CF65CF8D7 - 25: 78B346A03098BD6EBE0BF56F5C37C83B3C42288D0E031E0D4B, 2F89EDA70B8A31EE64B264C7C5165AF1 - 26: ED768B0F18A13ACF40738FD61642C0CFBCF746D60887A8C5FDD9, 56EE211AB10B37D61FD80692A76615B0 - 27: FCC298575C9F4E1DD2C8B0482F9FFF42EFFE565ED5FB178DC56947, 0EBA843B28F91798D79E2105995EF662 - 28: 4341133DA062A885DA6D7BF4387C6F28829E65EA7DB7E50B15F2D03F, DAEFA9D1230FE3084FDB91AC7ED35503 - 29: 777C13A7FC16345BF949508CBC1051540928CB5B9B36569488109FB60E, C8DEE566513233B8E74ACB1046FE87B4 - 30: 6342B6FEDC0B8868AAB5E870CE1B2E420269CB11DBA74F10C5E978F2B44D, B2B001639A2A0BA045023817947573E4 - 31: 99A123D836EF76A4250A960DF7DCFA231C3595EAB53024F53B961EF80901ED, 02E8820F6D31A23DC9F0DCE511A1F8FF - 32: BF57034D1EA94A6DB86642918EDBC9CC7D6C39025F9EC528EAA2A9EE7B22EAA1, 7801231ADBA83C137D760AA75FF2C9E6 - -GCM-safer+ (16 byte key) - 1: 0F, 62E723CCA67DFC49C1915AD3C69FDFF7 - 2: 87A7, A73B3D416AD68235C662E9684430FAA0 - 3: 40FF80, 8EC11FFA3B777664FC6D2AD37AED3765 - 4: ED5B1716, 1A4FD3FDC9D197866FA8AA1403E3219F - 5: 033CF349B9, CA1E6111A5BF539931490D2EFDA7575C - 6: 23E30716B131, 79FB546DE6C534A18BBA604E8E2BE8D0 - 7: DE67DCF5635B0D, 463989CCB9A972468B870C403AB840D8 - 8: AFB5BCFD6E36E41F, FD3A63618F1D31A8A71D94FE91F41501 - 9: DBA0EB7B664D303BE5, 2860B5516CF0CE20E35BF766A4375EAF - 10: 2826E6EDCFD7E9FB938C, 685E8B032254DFF65DAC8A44C3819E08 - 11: B70FC9EE54123F45A4E67D, 8661E54524A0F12612E000876E8E6F15 - 12: 5FC3C79807594E403B82B9DB, 9D88DACCB8654708B241A505AB12FD47 - 13: 2C7AC463E62BBC014E1A48E15C, B4FB110193F147E4A59EC38983528047 - 14: 046D692C6B2827453F7BA3EFB609, C4E46E0D5F71D2D477D7CD12B7447713 - 15: CD693A49640E00134FE33C9E324122, F43001B425E37C094BCCBAC49A6471C8 - 16: 9FC2042EF22E0F8A767DB0C52109E4F5, F60730D914AA02A3BCED7F737640B9FC - 17: F09ECC9AA4FE3596C00D0AF4E052E60755, 199B8C9CEED9B4E70526BFE603FD5E45 - 18: 0C8BD929E87A21A9F043E47CE79950EA0E75, EC9D38AB193FEC16EC470A15E27FB367 - 19: F621E43B7FB21D98544817FB229C2F308361D4, B6BDD4053C4DFBD3970A5055E4A7719A - 20: 63F1D36ACEDADC63627CD438B379C48D648126A8, B1A7217302F84CF5F6A259F2881484B6 - 21: 60BAE96D5E0F248A257CB3A7788D6107CFB525D20C, FE60C3B3E2029869EA063BA3B981AB96 - 22: 01213496633A4525B2C7CAABDCFEB84193A8AE2D8059, 738E7956DA8464FF655CE4F5B0A005C9 - 23: F6822F3C87B238F6F7E44307C416B6366C18B26B2357C1, A27A98EA0AAFD1D3010DAF4070F52E7A - 24: 32B49BE196CC3825B7B6E0DEBD90680B996C3AA161BB52ED, 8505573CC5191577BD992A004F255953 - 25: 38361B85808140127A44B364046A5E1FB0B86885D5030110D3, 17DF461782D45807A7709EB2BCFAABE1 - 26: DBEF6C2067BAFF378A285EBF685F559A896B76A517292B4301F0, B6061185764BA316CC0163925F27A1A7 - 27: 15E2A0634520C0CF4C189436D35DE01CF5C83F0684CBC261A59AC5, DCD96E1687F24676838B60E873D47087 - 28: F837ACBF63898720B0527477B59A8EA74751DABCF2CC48C768AB421E, 72DD76EADF13C65E6F322E110F9944FD - 29: FDA50738B60251E5FF1C38AF0A8E3F619D247C24A20D63B372571AD6D7, F1F1B212BD7E973BA17BDABDF27F5AC3 - 30: 0CDDC7A10CA3F3616E923A751EB638CF1E67CC2D17A03538C6A2BEB8555F, 7DB533FD15E48FFB217B18E91B7B2928 - 31: BE0C9A148FC3344025C8BD35AC883B584AC706F540BE1100A92DB67EF900B9, FD172B0942DDC1EA076D46BA46B9F7AC - 32: F8256E9A41BC6E09084274A91229DC877257C433E3E43F05FDDBC3584B6093D4, 5CD834DDE7406085CADD5BEE122AF052 - -GCM-twofish (16 byte key) - 1: E9, D82A22BF49B52DECE1A3DAA163956EA1 - 2: 3DE3, 837CB2018053A6FA9A51A18362C0A6E5 - 3: 1123B2, 280150FC247D06FF79ABE3C6C5ACFDBF - 4: 6BE74C72, 52FA635AA14154D3FFD7A4866AC989E7 - 5: 7610B2DE22, 3E77AF501CA8EF386E2843A2C9F30425 - 6: 31BBF5CC9F77, DA25899A5B84C4CE3CB031D24BE39EEC - 7: 49FE2D43D16BEF, 491CAFC0F9A749AF0F87CB5276FF7BD0 - 8: 28191B8F4FBE3C03, B8318CE8B7EEE3BD42A35F7EF7B4FE91 - 9: F6BCC7AD009DF4B71F, 01BDA4572E1B95D0152A8675BBA9F6B4 - 10: 89B6B6B611CBBD4AB667, 5AD5C05B2FFC3AF07ACA04EC488BC4BF - 11: 985A04A3BE0A43A3489870, 57AB64D52976293C09882943B8622A0C - 12: 15DDAC26F9C07856F5C11CCA, 183A4FD20C0D7AD1744B77992D4A16C1 - 13: FE45E506C3C26745D6B5B53A36, 67B3768535D1A50D2756AB4ED83C73F1 - 14: 8EBA337B5E13FC16BBB18B8F0B10, FA90CD334FA6565E517097C37B7281C7 - 15: C9F914A669C4C58ACA86884FFF469C, 876599BB8BC1AD6E7B1DBB00ED53276E - 16: 8416EEB95A4B3DA645035CBDC76C8532, 405B3A936CE697DCBA9385CAEAFE2B55 - 17: 312BBF82B6619E5F7EE56AE873CAC9C415, D5FB2028CF3F6C57295BA6F7E5F410A9 - 18: 1B51044539639A7093D996E3B4174D6A253C, E934D7A7EF90586A56C6C2DB53CD6C40 - 19: 178762C071950E8E0198E6573BD585EEEE4E69, DD661E463BF3BB45225F7E7A6E0DE3EA - 20: FFD6BA51FEDDB7E20593AD2BF0EEE061D3B5C014, 0DCCDAEBE6135EDF787FEEDABFF3A4F3 - 21: 04BE622B5CBE1058A4C8356F65B8158295F39E1AB1, FCA9B0BCA348B319D0B19DD28EE9DE79 - 22: 8B49016BFA45DCE019BA9E4606E987A159ED0DA07D2D, 6B93BD424871D5231EB359E40666CC5E - 23: FF8D016642B2C3190094423F5A61F7CBD358522A5E5799, 2088A4088AF6F786DFE08AED79A19B3B - 24: 07F446A2E3597041B9AFFEDF5DD474CA5FA5C872844A4F8C, 870223F7404BA37C8DB940623F0DDBE2 - 25: 32C2EF41ED54C8B63AB8151E690C1770CED90D2827EB2C302B, 5BC4EABF30986EE33FE483B8FABCE7D3 - 26: 3310D94B00007C10D4B3BC3F57DE877D0E2B822B96DA9CFEFEDD, E0E114CEC34558A180675B0438128F30 - 27: A4C95A5B316AE03A569B7862290DC6340FDEA1299C5B27591333B6, 63288F9CDEB93BF029C194B2C62B4AB6 - 28: CB63472F93E0325123558620DB9FBA058455D8AF1D23A94BEBB60A79, EC0968F60DCAFEB17411C4A2D7793FCD - 29: 74241261257C5610211A3B9D45D62AA0876B63EA289FE938FB03CC8D1C, 4A18EAA2039B29F0CEF7745EB8AA7DDD - 30: 6172080F96B60E3BA450BA195EB4D6732A25AF30A109031560915C4C0344, 3B690B088522D3EBD6B647070AECF97F - 31: AF52E18DE8608C39FA886377899C66AAF8612513C21C7B815E248D9F75D775, 39F0F712265F44A442A7581D8F314D1B - 32: 64F9AE4A9E6735D348343EA7ADD617F0687C2883637468BBFA3664F9194F1683, 947A02C9994DA490BFC9E036305B26EA - -GCM-noekeon (16 byte key) - 1: 05, E18F8A201F281A4F3F4FE6F43A001107 - 2: 55DF, BE4D95A0BC5966CC2E80FB544AD43B8B - 3: 0C5A1D, DDAE782864D5EAC894C863D4D2E3CA54 - 4: 767CCE5C, 106D7DBE5D9D56D38E6A679528C72688 - 5: 9F099BF360, D4D50BE3B13DE7B18BE415B21BD9AD4B - 6: AE4B0C056B1B, 8E0EA5A5F612835B1A498C671413CA19 - 7: A8EF51FA62B5F9, 44A65E1A85C9C102467A50297F8256B0 - 8: C58D955A860EE8E0, 45622020FC40884B61BE3C35B940A870 - 9: FC5F5562143A7F9AA9, 7FBED30D1594D1DB57BA10EEF0C4AABA - 10: C2B2D5B922504BD29C23, F14AF5025799EAF249745F1B91AB554A - 11: 62C250C8548BAF088DD01F, 6D49DB3F4D3D8D30DB0B26DCF6CF6A80 - 12: 3FD64FC5BE13ED2AA041B8C5, EDC192E68D5A7B37F395B794C3D8245F - 13: A84B4EA6C8CF088B0C6D40B5E0, 01EE07A0D3F4A1957579C1EE36C5D5A3 - 14: 39A4C10E5C542FABA9C6138E02D6, 8B31EDD92A71F53ECEF716E08CD0A3C3 - 15: E4DF855B9065B51C47454CBC3209A1, 4714B347E11804D0AB3241B1D72F4FCB - 16: FB6D42C9C44997D4C854BA321C8631CB, 7F0BD8708CC6358899B7C62A7ACEE739 - 17: 81A2C031F0D5593DBD283A9650A4160185, 3267D10C3BE6044B0D2E0BB59A919AFC - 18: 33776FB240A45E1A84B86B49FB04A350B9F8, 3743BA55B523F4BFC25E8B2474347C70 - 19: 4E19A791B6EA4B776C5449CC3AC486EE9EAAE7, 9D4FD554D57E73B6789D20E262E706FD - 20: 10B946D1B1C005516B7DE7F51CD41C8DCC581DA5, 3F41B2B8FFCFDE5298473D2E6FF76227 - 21: 184C4DD415AFE6FE74B3BE662AC04E6229F517F4A2, 158749C83A13B178F0FB7C48E7A4A19E - 22: 6DBD3F3888A2028841B61167C3EDAAE71FC23774C923, E0E87641B9C55DCC041D343960C9417C - 23: 6D995776DB3B90B038A4CE44EF2D4EFEA16DFE0A5BB054, E14F63E6C6657CB904B16EC4F2B82972 - 24: A955576527F9A240B13F9DA2FD67997D5E606D34548C1444, B8FD23A3EFA33E7F4367C61E071F8BEE - 25: F7D9EE67BD019E97A5EB7A33B7A307B2268ED7BECA95553D92, 6B31B756C9B3EE98613BB29B357FADAE - 26: ED68485EF62E89965CC8B085CAFE89BD9661ACF66939FB014E1F, C57A80259C493520E50902597EA3EFCA - 27: 53365AF657B186724902E8011368D6E49DDD2158F51EE0FFFA9658, 8EB890A78716344E79E4AD48C52D423D - 28: B49CCFC3FEAEF5C8DE4E41EF538A537552B4957E8965E454FFA3B5F7, 7CA3442BAF416B50431BBBE5CACD44DD - 29: F02E7CA72035455ED723EB802E66118D5FA642295416F12AB298567AF8, AB211AB9624F17975279690C6D95EB51 - 30: CA4C2EC503773BBF34FA411340CBAD6A9115E81B073932444ACEC5537614, D877D5B78FFB31CC54142562BED1890F - 31: 9B9BBF2D46D301F3ECDE92A13C1EEE8F9F1533AA4AADFE2E22D36D51F5F469, F03F634BCCAC070F210142F737542491 - 32: 92AD34E95350275A4CF208CC1A07776E7A6635EB8F2A7D4D9B6B6C96D6812616, 52E49767709D7CE349AAFC0C405A68ED - -GCM-anubis (16 byte key) - 1: 99, DD35EDAD537F6FCA5BCDEB053BEE36B8 - 2: 12A6, 24CB6ECAECF376400F7BFF52C4312D08 - 3: 791DDD, 7C35A987766AC11A4625C92BA4AA419E - 4: 601FF830, 69A6E3718404D3A20019D9E7F875C2FA - 5: 45A67C8B23, 92EFC3CA67CA0934E5E22A0EBA4E5613 - 6: 5F2C7A733D42, EB5BF55241D049343457F05BE8B53CB5 - 7: C356F4D8AC59BB, 12598DA524E6F01EDDB512E3B988B860 - 8: F24201E87407B8BC, 58FBE9D3E242E16BA16420C354BCF0D0 - 9: 509A017E05D0075264, 357822F3CAF350972D86F2423FE49040 - 10: 0BCBA97FD277C65D4BB2, 068F57C866AD35379F108237B39C78C0 - 11: BFE30A88F0B1FE651D0EC3, EE2F073E23DACD211B1C22074CB32A70 - 12: 11AA35923D9CCC49AF83DA5D, 9A7E9EED9774C06D1D127D1ADE221893 - 13: E3FE3E1C2CA4E1C61D530AA46F, 0D26F48272F7DAE98C797F0AE5BD5B3E - 14: 6407C7F6DD9E188DB09F584AD32E, A673DD2BB4ACC85983DCD4B5EAC2FB68 - 15: AEFBD570198C05D5B430A275AA82D5, 3A1CB79A7DDB7601C7F72A5B0DA8531D - 16: 40C1B9150E8E09C9483C1CA0CCBDF363, 241FBB631ACEDF77D51594D660BB4981 - 17: AD3F3FA6D431E12D6B41476D7B5DA77C2C, 4C22BF4240AE4235FEAA2D3ED7AAB8B4 - 18: 5EB8D86E7B26064D75E56C42B090A17544E0, 44EBE42984F206FA78D19DFC88AA1EAA - 19: 75D7E5AD5C2D19E21A1931F88229C1456EBFD4, 1F1CF1F832658DB0804D577BB2FCD2AB - 20: F73F1D3F38E8B99898E30FACECEFA40FA933F63B, EFF893CE73B6B30AD144735A5BC759A3 - 21: 452A09F297A013652273C124085FFE03D5034EC331, 9E71970BCD0EC639049F906589B7FFD1 - 22: D7BB98AD11A884CC8BF3F2F52CE9F8C17F8B188C190E, 31496C89519DE6F66113C9BEEB151275 - 23: 97B8305B1D1E02D4D1D8194BC54E4AB394FA8F5C8B2526, 1A153F52C3C67E0DA81B626C159D31A9 - 24: 1542789709D1FD889E7C5820F920126434D5969C4EC3F6AB, 685A03CA342688A70753953AB27CF0BE - 25: BB08A7F815AFA96B96C028EA48D79FF3BA7FFFFFA1902E7822, 98E4377462566EFEE39F65659DEB13CE - 26: DC8EC0B08BCADA829B3663980D66B80A2D51500AFD80EA0F18CC, 58D9C85F9561F59BF264393DA954399B - 27: 477A3B8344DBCC79577C15524F35B45A7FEA72B0561A0CDCB3CD66, 57343CF1432D30FAF8724C5AB3120539 - 28: 3CE2DD2869EDF99ABBB3DABC981B5BF294D6AA29A785F1ED6363D6A5, A939560243DC164D46028133C12B16BD - 29: 72504872BE65F3DE8F0B63BD24AFEED17B195D270AB20ACBEA7E6B0B8A, 4D5D642AEAFE6A2CE8881577FCD7F2B7 - 30: 5B71030C43F551C27183A17D08FC1B9C8AC1829D404B8DA8803FBB09343A, A602A88365B46F19DB240F2C077A0334 - 31: 89C0C85BA495D5F92D91EAC281362F374A0F41C507FD20DF6E05147C8E7208, 7F8994E46CE0548DE8F290303E8F3613 - 32: 5AC62A000B9A80B6B849F3A36E1B512097922F8475D3C6F237C3DAE23A6B8C6A, 346203E5D4775D002A1022D7F42504C1 - -GCM-seed (16 byte key) - 1: 26, 87B72BF4F343FA59CFA40D1091F50FD1 - 2: E80F, BF6A3B3F649E3AD1D07D24326C44365A - 3: 16C93E, 740A57E99296F82515190712B4B56F00 - 4: C403D1FF, B210C95ED48A15A8E78DBECA2831CBC8 - 5: DAF5735AE4, D74ABA53295DAEB4A04842D0F587C0FD - 6: B80ECF00DBBA, 91DD19615D6F71F696C4AE9D388D7266 - 7: 45F170B0D2ADD6, B9FC969B51976A3CE3D8CDD227722A53 - 8: E3EC82041FE3EEDE, 3B82743C9A974E594D53DCF17204CE55 - 9: 15B8E18A9D105E2F2A, F1452F649ADEB08006092347A722497D - 10: BE3E6D03650BC96975E1, BFA2A6EDEF412FAB922E861514475C21 - 11: 0361D6CEEAFBA30C30EE5D, AC97D081314CB9CD24113CF38E9E41FB - 12: 50E4627778596D55D7A508F4, 99A3E41EC4F3B20DE8D217C06C828F23 - 13: E3362B153E59770912C7B12FB2, 9A96E56341834743DDF33156AF411B5E - 14: 3408B88EEB308F20964DAA903AC7, A4D487202ED5EEC5EA4C45792982A821 - 15: A6AAA4ACBFF8AE329618B023C1EB99, 5B67A194B6358D44FA5801B588289DF0 - 16: 4DCF2115BE730CEFA52053E9398EDCA2, 5DE56AA2FFC6FFEAF87225316C74C87B - 17: CFFA74C036CD62DCE15843160B39FD18F2, B0CA9A45CCFDD7A61B1D06E0075610B2 - 18: A68AA4DB35238DCE0D537670D76073ECE5FE, 283B33B1D7B57917B8658B3E957B52A0 - 19: F99FCDF3990405A203BC6F9F7D56DB5B8A3E5C, 0887CB21263AE7178AB02E287D47E2C2 - 20: 363664B0944200D152A48C8C27183D7AEE177A1A, 3043B2927916652091951B9E2104E91B - 21: C1D9BF607F76D69761A9BDBA7D13D9CE4C8E430F7B, D6E7509B620B7E83B3FF7F931020F56C - 22: BB2DC71C8FB4A7A201AF36C4A174AD542D3A34EB2BD6, 2158A10FFA890769882FBB6636F95D1A - 23: 6B478DD22EF941F726D89C1B5654260845DC9140317630, 359297946889A740671BBB0BD2857883 - 24: 3211DA2201F029B1ED2E11187E62D434442D5302E78A3242, 0C1D43B63A4DD329EA11ABE5404E83F4 - 25: E0398E55D8E5146A715FE9E9A74316BBBD69DE747B5F7C3C68, 74FE8E2F10A96CAB8102EE6F0847380B - 26: C404BB08D0BEE8FF032D3EFDE7A15CEE27BA29B43161F0B5E952, 0F21B0E2D83584B65BD7A2F912BF9CEB - 27: C61D97BC584FA3CB0E6CA3E966747D75BE90CE32E4E1DFA2F34CAC, 45D4D5B01D578ADE8EB7B58CDEFB7950 - 28: 2EEC4B1DEF647FAB996C7A5FA5061E5B572E8B1B0BAA0C8B7D01D122, 36E014FF6D8729B2EADF2E0406840B9E - 29: 9753865FB716D470C634974C2056D637F11EB2467274D0024A72E5FDCC, 1E2DEAEBBBA78E0E6000275B7CAEC89C - 30: E9FE40F4C8F4AF2607E41C6BDCAA28EC7241FBC6C8DEF6F36961EFE9B46B, EC5EDD19299A09A39D2F9006093E4CEB - 31: 995FEA1FA6A0B0B141375B12BC9BA18E29229E3D3BA3FF2F67438268B06EAE, 0413AF0B5AAB28C4EE92495ACEAF17B1 - 32: 746961D162BECF915397F718478F5C1DF7A3FB8BD2413A4BF7C0C43314F6E2B1, FED8ACB5288B6ED8E0556D169CAD99B0 - -GCM-camellia (16 byte key) - 1: 13, 0679D1B662AFDDF3ACFCE419B6DA94AC - 2: 26D6, 162A86F8E59F9E6EA5DF0748B890862A - 3: 58767A, EE0B79D3ED4B852EEFA323F8EF9839DE - 4: 0CA5F75E, A8063610439C0AD6631F6CFBE10C2AEE - 5: 5B821141C2, 0568AE410E4EF4C9FD4EC55926FB0300 - 6: ADCDD0B1C7AC, 84B1E359DF762B7E51084FCE1619D632 - 7: 75882A4FF78AF6, A13923C17E9006E06FC10710C3F1FAD0 - 8: C4F2E79246F1CE2C, 27FE18DF274233BF632F91F5C6004C3F - 9: B5F5462F5AFD8333EF, 56EE2A3CCF86F4F5CC6FCFF2638283B7 - 10: FF40C4163E604B0679D7, F813C36C222C5EC2DF7EF51DD12BDA97 - 11: 93FAF62FB742529F2F1034, 2A67CA1A0CD5ECD3EC62E9A303D11B27 - 12: 4C7F377995D7FA5D94E740A9, 0F8B822AA9775F742D5436029263520A - 13: 357A0DE9ED3E1070808B2AFBA4, FFB8426038E07FD7D23E92876B3CF4CA - 14: 281F9A4C95ED6C363A1F00564206, 93D5470EEA15AF8E85019C47728B217F - 15: CBBB9CCCBC78A78CF1F571BF667059, 15C7BFE9E2D25DE73BACE501D9BB5346 - 16: 8A3392119B0B01A9C38C556C6F31AE45, 87886BF5B99CB77FE3B681826286E87B - 17: EC52B385BC9CE88DABC560DA23B3684378, F6B71A19E39723BD4D9DCFF7ADE97796 - 18: DA81EDEBBAD7F6A49D3BC377E5F16272765A, A0D06F71CD2D9947562832E1A83E577C - 19: 2146F272EDB8F46958C01887D92BD3AC9B8A47, B5CC3F66E09AD98AB6BCEAFCDED10CB3 - 20: 3E281F975765DE1DB519696DDEA6F94B462B4717, 515B758DC732EC6CAEEAA4B94C943CF0 - 21: B3A735243E2D508E2EF3066705D0FA37442C8406BA, A8C1CC8EE8D5935FBEEC31B7132977FE - 22: C1272F2CFEE63BA750A7689385ABBCD4D431A99BD2E6, 46511DE41E6ABDBDA73AD854149B03F5 - 23: 3C66C359BA5DC0AB52EB152DBE89AB28767B7E4A6A05E6, DE4BB656C5B0DDE993ED461A0D9C185A - 24: D0248AC2923887E76BAB9FD48D8FB73D93B23E4FA8704C10, 7C120335F1DDBB429431F15E24F64455 - 25: ACFFD738047C794E9C88BB76C2BD8E300CC5F89C2E5505815F, 7D090676F5CD61FE8BB3E20BB1BC8235 - 26: 8B2F83612C9B5870782FDC506FD9E7CF08024C6D126AA0E715AC, 5A72E736892087A91E77FE785200ED68 - 27: DDB64F5869813B94E80975E55BB8B62A23CC8B0DD56357C51A0B2F, FE9B74933C7D6FF5272A0DD90D1F5D71 - 28: 00A21C6C047DB3551368ACA67B45222386A2DD63297CABC780493A73, BEDAED8C4799594FDB40F992CC82B4A2 - 29: 35FE5CD3F9ABC78C3B6E96EF11FB601741710FDA8572CF741EF9E5A522, FE34A91C83C93FE08F7D4EEA3F927415 - 30: 4CEE166BB1E1325C69BFAE06C9422BA735FD5B21EE2D7581E27FC027CDB2, 31D3086C3A0639D79FE08F5DEEB3E81A - 31: 6F575BCEF0FC079F8FA300040AA50AD6CF6F4C92A27E24A210AD32FB1FB0E7, 057E5239A6277E1D96BC277D4EEF5FFA - 32: 5090FF37EF4F163F5B54AEA54DAF1CDAC1125C46A8617CE3D251576BF52143E2, 182FD3ED463E1A6A615F4E25B34CA748 - diff --git a/src/libtomcrypt/notes/hash_tv.txt b/src/libtomcrypt/notes/hash_tv.txt deleted file mode 100644 index 3c8191febd..0000000000 --- a/src/libtomcrypt/notes/hash_tv.txt +++ /dev/null @@ -1,5035 +0,0 @@ -Hash Test Vectors: - -These are the hashes of nn bytes '00 01 02 03 .. (nn-1)' - -Hash: tiger - 0: 3293AC630C13F0245F92BBB1766E16167A4E58492DDE73F3 - 1: 5D9ED00A030E638BDB753A6A24FB900E5A63B8E73E6C25B6 - 2: 65B0E1EA36CA17EDE2F055E67EAD67B1C282A11A5BA3A8E0 - 3: AB7FB8D21CE3D8D9BB5F1AF1F2FA0D3C277906160DB8D226 - 4: FE2E9D43F74B199D91B9291D73CCFCA0BEA5F068FBA244FF - 5: 3DF6D672FE9DAAB21523EB04705D8A8B72B78B00AD465D1C - 6: E05724353FE29957C3E8DEBAA21D0C2DD49CCA22191D5AD3 - 7: 4056DDBF82AE74AB56720DEAF079ACA2F076ED046D044DE5 - 8: 801FB9BE1A9AC7337A81345B3845E4E7C13AF1FBADB73723 - 9: 430156547A82492CA859385304748F65F2D4A7E2664AE2B1 - 10: FC435137CD652D720A11EDF47ABE4680BA4AD5BD810C9835 - 11: 20A8143DF47F5715FA0905FE6F9D1D2B5B2D4E26FA98930B - 12: E4A2063019FBC034DEB01E2A95296042319CBC039DA69A91 - 13: B5F0FA570C4CD69A3C68448BE42C865BDF77ED68B93875E7 - 14: 802BE6EA2CE86A0B371F2354944B19CB3231AF7FB4F00FF8 - 15: D7C08863B5E5E3D69B5404A116315A698E128EBAF8636B70 - 16: 5C5288CB0E4E533056BA5293440D9BE6F3C461233BF1ED51 - 17: 88D3A94F3820E4087DA69D8BBE2CF415466063709C450C4D - 18: C07B4B155F9F75805D9D087087FCDD28D08A9D022192447E - 19: EE473E569FF3E092CF8996B31CE665EA7D61520D42E27395 - 20: E13DAE8098139CFCEA755D2060F107E3C7581EDF9F4B3B85 - 21: B48A9C09F26B379AA28FBC750B50CEF69D0D0EE37FF765F7 - 22: 574A01456373014F4179CDA14541E2E3C5A1CDDA9F9D071C - 23: F2E2831E5BB4AF05914C4BA61BB8D600D1EF071C5DF02269 - 24: B7808A5B6258CBE718EDA938978C69D3FFC45A222E9DBF4C - 25: D8E4E076DDE78950D51EAC9F97D2D1916A0910465D45A55C - 26: 4EDECFAAE1DE98B7E056E64CA24003422BBE6F048129B24C - 27: 0DE283B5A4953EAAEC6F3FDE50D7875C8EE57FA79BDC70FC - 28: ECDD4BA1936DB9E6F83E2BD7F39D23927A1A17B2D52A8649 - 29: BE11893460E49659F7DF3FB3BD5E3E9A319F85FD3496E26C - 30: AEC0DA0F2CC0646325CC03319A0E080F68B46B33F81920D6 - 31: 8824FD39984F6A52FFFF19016E27C594921452086373F2EE - 32: 8B6592AFBB02E227AA451B5CFDC821B84245D34B96BF4F13 - 33: 960DF9C349EC6619FF37E3F0F4832E19CC6A4E4D68962651 - 34: F4E2B7AA72BC7D6E0CF6DA1094BEEFAA9C55610327C62900 - 35: 05FD1B80CA4C7C14FE5BF0ACBD0EA3DAE498DC391DCF2277 - 36: C5E95F953898C68355B591507BB714F0E5DAB9989D083900 - 37: B2D4E286CF7EA8AB6ECD650C9E48CA23497EADE55485DB1E - 38: 9D51657E11C54FFDF205DBB435097A2BC6F93C4BE8D6180B - 39: 3C6AE3911356A343AE3113735F07FCFB5E046ACD47B00FBB - 40: 664342CDECC825ED340A7FFE2E57107DD0B5F24C24B2C3F0 - 41: 4EF7FCA13CE684D81DE4F566D2897CEB407FBB3DDE81FD64 - 42: 54689FECED63F297B13CD494B85E686680F4F78DE7EC81D5 - 43: AF434BDBDC7EF90BE03E40A033F16E8A57B41840E1E8AB59 - 44: A32DB678F44905C18968F5D898CA7992EBE2E4CC3318B96C - 45: DEE9D519A12ACFB8A0935A368D6E6C75EEEEE6F2B0D5D191 - 46: CBC74863472D1C9D23C526F4908BD4D4234E00CBCC99A9E9 - 47: 6C228A1D4871E802E035C9BB16C5187354841FB6BE3C69B6 - 48: CAA755C55AA869E633CB3C6D93A561944AC7418154E2B0F0 - 49: A6835F7C0C6CA8F4A45787BAFA77478AE9ADDBEFBC3052D3 - 50: E406755957EC21BA6A64B5D3AAF31749CF98DF92F1B1FFE0 - 51: 0C2D4A44A803DBA99B7A467553C9293B46A538558BD77DD4 - 52: F04F011B09D275A185528CC040EB719649C8471A87B259B3 - 53: 3DA8B57FF52FCAE7C32636EC6C80708189CED8113C5CDE1E - 54: 6C6C88B8E18DF5CB22EDB61A2D3ED74741A708BC46576FB7 - 55: 2D48EE2BF85DE234754BECF3C6F5B0E62988B5BF24AEA5BB - 56: 0D17702DDCA078ED1CC51B95DF29EA1053CE97F69395C613 - 57: 9D8C2AD327DE43D5782D5F20881F4A8C433BA19AFC8C15AD - 58: 227BA419B760D9D10DBB09585EDD475AC2734FD4539F8275 - 59: 2F5220A828EF94E327BD51D4DF5C58609F8A93B9FE01FFF6 - 60: 0EED9F91E1A33A50B8E913DBA0B5E248D263E1FC72C6A449 - 61: 766B707E999FF3C51EE01168513BA0DCEFEAB222DD1F69F6 - 62: 85E6710694E7C36A2340DA6A371C0560450F3D44D35AD98C - 63: D401F9B13D39C24477C0AE6971C705C63C067F29508C29C9 - 64: 212DF89C57155270344ACCB19027B0B26B104FA0FBBE0FE4 - 65: 3BEDE767AA4A7507DBEFF83D1BC33F67EBA9C64945066227 - 66: 79FED1FB9F17C4980108E8605C10D9E176AC8FE4F6A65064 - 67: 48D9B7622AB7F8968ED926255F78E8CE461E4C9162FFE8B7 - 68: 6638C83837297B3F53B0F824C087D9A0B8D9FC6265683B8F - 69: 174421CF6D331FF51924F8946E8244555C9020D38E31B6DB - 70: 03E42AFB5FFF9B9C3794A3DBEC99FA7E3F7305EF07BD29EF - 71: CCAFC68D4B3ED889DC9F28CB9225808A40AA8E0D5CA343FF - 72: E824F93B4022011886EFC54539D4D5D51863ADA329FB4E22 - 73: 7CF0DC01B326687530F42040BA0D0CE93174455E8A990D14 - 74: 7A8E619479F4F5C418EC041806850E6723CA56AFBC3D32CC - 75: 083C5CA90F4B296C42040559C8296149D4EEBAB5EF2CB82D - 76: 3581B7AC32FA8A0986FD14F277FB106E112B92D18CD689BD - 77: 258E822D9CC1ECA8B55D925BA361BA2D9FC27AF181F138B4 - 78: A86C1E88A64515FA281A462D467458231494F16E835DF873 - 79: 76E7F06FE9B8B388DB012F8B4BE2FB343F95913EDDE47A27 - 80: 00278B4E5690E729EC7118B5BF63C9D1EB1268960893CA75 - 81: 8DE70E64A31BA1AF4F5C23CF774CCA32FE952D76C3FDD1B7 - 82: BBEA72C840749BABAF1415FEAC343411B89515B87848A09A - 83: C6C3CCAC1B338DF117A61ECF9A280E9BA709784C72B76771 - 84: AE9813EF4429EAE73EA9FDB5E23D263AF1BB87928CF5F048 - 85: 68647CD7BFFB8E530D28C86685A8D2F657EE4CD64EDD7E66 - 86: AA8C35B0E746AF56435F6C711AD0423966EA459087409713 - 87: AAD5C0D5E980B29BC88985C544717B81F58CDB923A3468E0 - 88: F60929D14781DE44EA607AAFC0D25FA1B6EF3C6AA0F8B3D7 - 89: C48087DC75EC43A54A593F24E1B359BB75C581A65C3170D0 - 90: 11D1372FBDFD9FF514611AB20D31BA62F18856C8D6AE3AD7 - 91: F2A8076B9017EDADEED41F409C9E32EB3BC090EAE89F855D - 92: 702FA47E5BD35E344B5B87C0082106337206CADD3D4D5014 - 93: B9E03FED752A560C3B0365EDF5BFC4DC7EAC5E4BBB93738D - 94: 3C84C52BF51077A5819F56E5A5C1C06209181579393220C7 - 95: F8ECCA28A525594E138B55C06617A063DF74FE3469D98381 - 96: 1081C3BAEEC0ADF4980C2EA6593B0906DCBEDE4805754774 - 97: B5152E39DE0BFE8982D783FC4F0CB7160EB2D69F6F3B3E5B - 98: 6A6B760BFB1965C72AC793F9C02FA21B0F1C34BD2640BB6B - 99: 1E6DCBFA8BA8D96C29101768A6A39433D5AD5A50E0970730 -100: 733222D3A033351FAFD68C5CE8A4D833BA7420D44103CB6B -101: E4CD7DA59B215F1DEAA8FBBA850F2C1A7F4C3D495FE6804A -102: 7BE78C790713545754D4C78A9318ACA4AA058C5C23540131 -103: B71C3809A504BE2F57AE9E25BDCC3921DC665C65289EA55A -104: 2B8CA39977535EB692EFBF0DECDA8971A8604F7FCBAE75DD -105: 3CC48B51E4C5DE4F0C2ABE0BE6EE4B63CC564A87C01943CD -106: 157ACDF7B59FC25966F9783207554364882840E7251ED6C1 -107: DEA1CFAECF18D3611CCD0517131A16DDBC97A12902DD8BAB -108: 2AD2E990BCF6481284DF44B961632687C2E64DFAE2AE16C2 -109: 838F3A3B28A50A12B5707490A66080DCFA0230E583B6EB14 -110: C8B20315121CDFB3A91BC0EDF11886F283CF6C480F498627 -111: 2B0FB04F100BE9AD51B7D64C76651BAB4B7D31D1D9195711 -112: B6495B6256FF464EC409A4098B622E8BDBB1003411854FD7 -113: 1741A789472E20E1CC89869A2477E4F2807C22182EA5B221 -114: 07ADC82CB3F27389A12B6B9C2B268BDDFD1D9478D9EDA0D7 -115: D9BD6760FB819A8A3CEE75303F8208FCA3E138B517DAB934 -116: 9FCF21A9236C2C12861FD20F1FB15A187CD7EE7821F72BE7 -117: 73D165769B34DA6F151464E61115D0E09A66F8D0FA049726 -118: 74580BFA88EEA03C0EAE722F81997E400D9CC25FA0311DFA -119: E3C6A369820E267C938D276A858928040C7C25A826501DC7 -120: C20AD90DB0B8BEE0335D069259991060969EEC9F939E4CA7 -121: F3746F4CD6A19CC137C5FCC8F60A4C0A7F56D97190B7A9C2 -122: 63A3B79EAF3DF35180960465059C0ADEE06D45179A56284F -123: 606AFD833D082628D58672403EE6DB348E6F68D8CD1947F8 -124: 7567EA8E10CBF312F8478B7C51D87B00B6CF3DE82B03DCE7 -125: DBCDC2B9B8589F6C7616B55B059B3B3E38D97A9E6DF1F29A -126: 15D9909F8D69689E7E78A0DB928194A59623E7253AA9D400 -127: DE39589DCC0C654867943801946B9888B347526279CA15BD -128: 34FA7C74EE67C1F92C0BE1CFD4B2F46A14FFB999604925F6 - -Hash: md2 - 0: 8350E5A3E24C153DF2275C9F80692773 - 1: EE8DBAE3BC62BDC94EA63F69C1BC26C9 - 2: 1EAA4F494D81BC570FED4440EF3AC1C3 - 3: 54CDB6D1BF893171E7814DB84DF63A3A - 4: F71A82F8083CD9ABA3D0D651E2577EDA - 5: 2F708334DBD1FE8F71CEE77E54B470F9 - 6: E014DF2DF43498495056E7A437476A34 - 7: 9C410644446400B0F2C1B4697C443E19 - 8: 0944DEC40367AC855117012204018C9F - 9: CE8A6E797AC79D82D2C6D151F740CB33 - 10: 06DB4C310570268754114F747E1F0946 - 11: 9F323D5FC6DA86307BEBC0371A733787 - 12: 3C1C7E741794D3D4022DE17FCE72B283 - 13: 035D71AA96F782A9EB8D431E431672EE - 14: 7ABE4067ED6CA42C79B542829434559C - 15: 5E8D0D6F6F8E07C226AE9DD32609035A - 16: 2B1632FF487D6C98AA3773B9D3FCD2AB - 17: D3D894482F7541BC0948B19842B479D9 - 18: CFE6B872AC98304524CC6A88B6C45881 - 19: 1573DD015C8629DE9664CA0721473888 - 20: ACFE2D3BB3CCAD8AEF6E37D0D8FBD634 - 21: F5F83499AA172BE8344F7F39BA708AAA - 22: 1D1C71FF6321B685D26F7FA620DA6C22 - 23: 4D7E74B6C8321775A34F7EFF38AAE5DF - 24: 351A988C86AC5A10D0AB8E9071795181 - 25: 970F511C12E9CCD526EFF8574CF1467F - 26: 0A68F53A476F7499EF79278A4EE8DAA3 - 27: D458CF9C8CD0ABA23BD9A8C5ABE495CE - 28: C8002E85C3AD9B8B4AFD23378165C54B - 29: 0B4788B157ED150A34D0E6E96BB4789C - 30: B14F4E31DE09281E07248A17939BE5B9 - 31: 803EEB99231526D6A33C8D4FCA537A6F - 32: 51FE5D6637D2F0F09E48CE2A7F5030EA - -Hash: md4 - 0: 31D6CFE0D16AE931B73C59D7E0C089C0 - 1: 47C61A0FA8738BA77308A8A600F88E4B - 2: 9E7A1DDE4D280E7F389018A5CCC3ABF2 - 3: E9A4DB2923FAF634CBB12CC1F8AC5C66 - 4: DF8FA069C6121801FFC539DADD33FCB9 - 5: 4B3511308F7E71BF6462CF18F1184C61 - 6: 075582A51F87682919E733C84C9FD998 - 7: 20DDA7535A464D13E1763BA61BDC12AC - 8: 66AE1E305BED186780BB60328D3CCBC5 - 9: 503E90BF2375627262E58D90177220F8 - 10: AEC6B48C10659E3D6E18A2CDE8F8D3A0 - 11: 45EFB3704B6684B0750E3DEDBB2BCDA9 - 12: 7C9443DBCD858138E32604E0D288F7B8 - 13: 95E5B93F4EA79C082BA1745D3026D70A - 14: C913D5DE0BBD1C2F2838E46363732D97 - 15: ABE357BDC413C82C8BBAA380C39CB5F9 - 16: 22F840370EBB1DDBEA4FA3A40243391E - 17: 0A289FEC69AF967988FA40C47960060B - 18: B63D3ADF13B509C95C088F909A0B356E - 19: 36E8E07E3202E6F4F7E885853C9735C7 - 20: 1D363AFD1208A7B8BD486D51AEBFAEB8 - 21: 75E36A5445AD72CF5BF47301EBED1FDF - 22: DA7979688F48A6606D86C762DF0D8850 - 23: 6ACB325CE624372873CC01A4AA053F8E - 24: 94F9BFD6503DBDC58C163E33504B7EDB - 25: 3702CB296784290FC46B82445BF7EB17 - 26: 903510251E7A00415EA21B6AC268A92D - 27: 6DF08DB9C33C86CFE8DAF5E5BB865ECE - 28: C29C5223D89A6589DE9253AF050D3449 - 29: 16B935ACC3EC6C016CA1BBF727C272B9 - 30: 644C01B157A24584B02A32119A424C01 - 31: 4A3C6C73634759420C419426F7D43E67 - 32: 7BD627A6B82FF3D797FFF130D8956391 - 33: 811A69D6A8AFE3C4FE5B4EFD73804F6E - 34: 721BE5F4BDDED885BFF842868F62F4ED - 35: 76956871B22D5BECAD3E9A459B4A448B - 36: 4F2CF372771A13B4C0C1A589F0EDCF87 - 37: 084AFBAE8D22DF83CC760A61138E560A - 38: E1CA123EBA05CC4899731A593833F372 - 39: 9D9E277FA61993C018C1C61AE09588BC - 40: 85E0D0316F0B76578948810039EDE2BA - 41: 27736345D0F2B0A1A9576D17C47D0202 - 42: DC9F788BE7C97BB5E0D2DD49B9F1D2DC - 43: 27F1A9A0D166C495493877DF06E9C104 - 44: D1ACA7951866F58773CD4AFA3D2F5C2E - 45: 5204BE3729BD7D318EA8127BED82D5CC - 46: 10258B7939D81F5F8E0EA70EE6500B08 - 47: 4E699952169098ED3084DC2EEE7BC488 - 48: DF6ED8D604512088FCEAFB21808BF7D0 - 49: 904D0667C94C9C981D59BE80DEEEE628 - 50: D83483A47B64D74F9DED5278EE462404 - 51: 490EC8799A9DE3BDE8708DAF68E6888E - 52: 443E4D2D5F800C22D818927A29A38490 - 53: 48E82AA772E111FCBE393177F3123963 - 54: B72685D042162D5F30472281278C42F7 - 55: CC8A7F2BD608E3EEECB7F121D13BEA55 - 56: B8E94B6408BBFA6EC9805BF21BC05CBD - 57: 6AEC85410412FF54078A9FC72A55ACE5 - 58: 3E69F792BE88478883E46E867F3C93EB - 59: 3B057FC41BA700F0E46740B8FF391F52 - 60: 3E3C6DF9500BFF8404486A3AEFC6F16D - 61: F5AD65BA970ACBBB8335F9C0B9D7139F - 62: 75D45F8E48406E32ABF94D07FF9B9C84 - 63: 54BA4472FCD03E99CF28F90EED9F2AE0 - 64: 2DE6578F0E7898FA17ACD84B79685D3A - 65: 3A4F2CA37EEBDF6DC99A6155517B74FC - 66: E19DC463C01E1B712B9415202A2B5505 - 67: 61D8AA0838DEAEEADE2F26156AF58761 - 68: BE294AFF81BFEA3159564B8B61844EFE - 69: BB943319320EE7B3A029D7BCD101F92F - 70: 36239791A7BE33AD46F668B51D724481 - 71: 21DCC9A32031428B7B02F68E1450A0F3 - 72: 95C1B0832575E21982B17CCCCAF54556 - 73: 24939E25985A3B5620B19D7889E5E153 - 74: 3029C8B005386705FE7E4CBAA060E987 - 75: E8BD97C5C1A0CC9AD1F1BEB3913B22FF - 76: 808EBCA0B0E6FD1B30E4BA499C05EF9B - 77: 55BD20AB87DE2E536DDE22286D0922D9 - 78: 2B2E45FA5628F29DA06462378D17DD12 - 79: B90F1709241EF59F78666AEBB3D5607C - 80: 37854275343F079BCE1639C84D74AE1C - 81: 444AB5A4F39B765C5D67BB433D4CF0B1 - 82: 7E30CFA6363F9AC96607783710E151B9 - 83: 9D9252DFFB2D5023CFE34873EA6C43AE - 84: 49A70634AFCED27DC2DF2EB079F7A1E6 - 85: 4C976C9EF13716CCB468D82BD8C56FE2 - 86: 4EB382D16DDC18C31E6DBAC6CA83247D - 87: B16112D0FF3C6A8ADB19C13DF742F5D1 - 88: F703DC6100AE23D194E01EAC433CF28B - 89: A6527B1B907218063BF196AA91C73F47 - 90: 61F1A1E947F3F542FCF85AC758BA5D14 - 91: 12ADDEDCE418E9444AE34A40353ED0EB - 92: D1C35142C475D44A52CEB0A8FAEA7AAB - 93: 1F89912C1FC59AAB53C983B035661269 - 94: 2E7E19A4A6635AB5958DDA70B415EB06 - 95: B700B6739C0AF162D246AF07284A1AE8 - 96: E2B95AC9F876A38D33CCBBD7FA92D67E - 97: AEB4849953750A10BB236BAC8D5AB487 - 98: 82D738AF18FD4B26FFF61377EE921E62 - 99: 0E1451640E59CE0461A46934F174E237 -100: AE06EA64074E8C07116563E8E0893BDC -101: 562DCEB678FBFAB24141E591FFD471B1 -102: 7DD6C3C2884E483E8CA572C471B2D812 -103: 2A4C8E4EC2672C1D54A8DA8F32F04783 -104: 2BFED22E8810A4658060B95B0ADB60BC -105: 214D8F2DD099BAB68EC17189BFF8A8EF -106: 98E4EB29797C8E631CD4317AF422FB05 -107: 241A0F826F359A21CA0E6D9154D1E291 -108: A3398C0118A3605E7A7794B8DF7CA152 -109: 5B0A6FC8721F14EB8A03E9A5D87F173B -110: D93ABEC3EBD5672350C3C36F8FB00E53 -111: 659905751D1F614A78ECBB56D4398D06 -112: 594691B38126E028352DA5B28ADFD416 -113: 7533FBD1FD58C85D54A712EF218A9D53 -114: 654796E7D2F9F2C2D166F23B5AB18812 -115: 5D25B604FB75727AE7EBFF980F54D96A -116: 426A7709CD61EB6ECF4034EC83E073EC -117: 62E21CA2F8E39C03BFF56C8265ACB60A -118: B7C9DAAA89A29F2805DEDE790DCB9575 -119: 9C1067170940CE8F8E4745D362675FAB -120: C5BB35660E3D0A286A96EA3AA4922B3C -121: 8F3B6351623A0E482B57525474DC703A -122: CCC34CC280340681CA5117477DD86AE8 -123: 2F5FB6B41301F87A0490035DE4C1BB99 -124: A16E28DB3F331091E928F9AE3F1ACEB6 -125: 7D2259C98085B9BF7F5E36B29DF8384A -126: BDDA1266FF3E8FFBA1DE1B2759B58BCC -127: 2067886DA4BDE10A94B971CD740B0AAB -128: E1275970EB67D2D996E6E658270AA149 - -Hash: md5 - 0: D41D8CD98F00B204E9800998ECF8427E - 1: 93B885ADFE0DA089CDF634904FD59F71 - 2: 441077CC9E57554DD476BDFB8B8B8102 - 3: B95F67F61EBB03619622D798F45FC2D3 - 4: 37B59AFD592725F9305E484A5D7F5168 - 5: D05374DC381D9B52806446A71C8E79B1 - 6: D15AE53931880FD7B724DD7888B4B4ED - 7: 9AA461E1ECA4086F9230AA49C90B0C61 - 8: 3677509751CCF61539174D2B9635A7BF - 9: A6E7D3B46FDFAF0BDE2A1F832A00D2DE - 10: C56BD5480F6E5413CB62A0AD9666613A - 11: 5B86FA8AD8F4357EA417214182177BE8 - 12: 50A73D7013E9803E3B20888F8FCAFB15 - 13: B20D4797E23EEA3EA5778970D2E226F3 - 14: AA541E601B7B9DDD0504D19866350D4E - 15: 58B7CE493AC99C66058538DACB1E3C94 - 16: 1AC1EF01E96CAF1BE0D329331A4FC2A8 - 17: 1BDD36B0A024C90DB383512607293692 - 18: 633AB81AEA5942052B794524E1A28477 - 19: 2D325313EB5DF436C078435FA0F5EFF1 - 20: 1549D1AAE20214E065AB4B76AAAC89A8 - 21: 7E437C81824D3982E70C88B5DA8EA94B - 22: 2F5F7E7216832AE19C353023618A35A8 - 23: 6535E52506C27EAA1033891FF4F3A74E - 24: 8BD9C8EFBBAC58748951CA5A45CFD386 - 25: D983C63BF41853056787FE1BB764DBFF - 26: B4F24C1219FB00D081C4020C56263451 - 27: B0AE6708C5E1BE10668F57D3916CF423 - 28: BA7BB5AD4DBA5BDE028703007969CB25 - 29: EA880E16EAC1B1488AFF8A25D11D6271 - 30: C7172F0903C4919EB232F18AB7A30C42 - 31: E9E77893BA926E732F483282F416FFAC - 32: B4FFCB23737CEC315A4A4D1AA2A620CE - 33: 5506A276A0A9ACC3093F9169C73CF8C5 - 34: E5A849897D9CC0B25B286C1F0BFB50E3 - 35: F54FA30EA7B26D3E11C54D3C8451BCF0 - 36: 07602FE0229E486957081A49E3F06F83 - 37: 7C4BBA98253CA834BF9ED43FD8B2F959 - 38: CF8DF427548BBFDB1E11143FDF008B85 - 39: 1431A6895A8F435755395F9BA83E76BF - 40: 30DD5E4CAE35BA892CC66D7736723980 - 41: 8EE247A1063931BEDAF4C2FA3E4E261A - 42: C32CEEE2D2245DF8589F94FCDA0C9F2C - 43: F25FA0E071D1F1CDC6632C6B673BCCD5 - 44: 370491B643E97577F4F74BD88576D1EC - 45: B292BF16E3AAFAF41F19C921068214F8 - 46: 52921AAE5CCC9B6E8E45853419D0C80F - 47: F1375BE31969155EF76F04741CD861D7 - 48: 04605CA542B2D82B9886A4B4B9ACFB1C - 49: FA887BA0FA491FAAACBB82BC5FEFCD5B - 50: 06470E932AD7C7CEDF548B5CCB9D4806 - 51: AD130B245E2DD894267CB0DDC532D169 - 52: A9EEB95053682248608E97D79E89CA82 - 53: CC26A3DC608268B98ECD1F3946C4B718 - 54: 33DD62A2DF6538DAF1CF821D9CDE61F9 - 55: 6912EE65FFF2D9F9CE2508CDDF8BCDA0 - 56: 51FDD1ACDA72405DFDFA03FCB85896D7 - 57: 5320EF4C17EF34A0CF2DB763338D25EB - 58: 9F4F41B5CDE885F94CFC0E06E78F929D - 59: E39965BC00ECACD90FD875F77EFF499A - 60: 63ED72093AE09E2C8553EE069E63D702 - 61: 0D08FC14AC5BAA37792377355DBAD0AE - 62: F3CDFFE2E160A061754A06DAFCFD688B - 63: 48A6295221902E8E0938F773A7185E72 - 64: B2D3F56BC197FD985D5965079B5E7148 - 65: 8BD7053801C768420FAF816FADBA971C - 66: E58B3261A467F02BA51B215C013DF4C3 - 67: 73062234B55754C3383480D5EF70DCE5 - 68: F752EBD79A813EF27C35BED69E2EE69F - 69: 10907846EB89EF5DC5D4935A09DAD0E7 - 70: 5F1F5F64B84400FB9AD6D8ECD9C142A0 - 71: 3157D7BB98A202B50CF0C437AA216C39 - 72: 70E7ADE70281B0AFCB1D4ED13EFC2E25 - 73: 0BB96A503B1626C9AB16C1291C663E75 - 74: 5BED4126B3C973F685FCF92A738D4DAB - 75: 7523C240F2A44E86DD22504CA49F098D - 76: 6710949ED8AE17C44FB77496BEDCB2AB - 77: 4A4C43373B9E40035E6E40CBA227CE0B - 78: 91977CBCC32CDEAEC7A0FA24BB948D6A - 79: A6A0F1373CF3DBEE116DF2738D6F544D - 80: 761F6D007F6E5C64C8D161A5CED4E0AA - 81: D44EA4D5A7074B88883A82F2B4CFBE67 - 82: 3097EDA5666E2B2723E8949FCFF2F244 - 83: AB247A3D9BC600F594D5A6C50B80583F - 84: B229430E3DB2DFDD13AA1DA1BAC14D5C - 85: BEFEF62987C6DCDF24FEBD0BB7CD3678 - 86: BFC3E5C7C461500FF085A66548378E0E - 87: A5712194537C75F0DD5A5AB3E9EBAF03 - 88: 8DAAC097E9044B85B75999D6C3BCCD24 - 89: B8124DF21129685597C53A3F606FFD28 - 90: 8FBC4D795C22D958248582A8DF7332ED - 91: 36D217135DB136B2BDF1617D7E9C79CE - 92: 1B3E6271A3A4B663C509A1255027CA99 - 93: A25F596574031FF9C34314C1B1F6BF34 - 94: ACA7017E5BB62BFDD5BBFDED78C8987A - 95: 8129E53A694ADD0560B1534B32FE5912 - 96: DA0E48224106C7535A4CD8DB2AC7B8E3 - 97: CBD4ACE3D766D8E44F63E0DE8F110F04 - 98: BDC17A0EF2777512CB402C90E9D13E31 - 99: 47695AD6AF968D6F1CDD2D8C5C87A466 -100: 7ACEDD1A84A4CFCB6E7A16003242945E -101: 225489D3D073AC705F7B3AD358EABAB2 -102: 301DA87A7B2EC27514C3A2789D5DBE49 -103: 16222C503718F1420958133C330FE3F8 -104: D778CE7F642AA23355948477DA4CC11C -105: E873C37F8977E200A594B815E1A87EF3 -106: E8F8F41528D4F855D8FDF4055BBABE2F -107: CACF3D3D1E7D21C97D265F64D9864B75 -108: 6BF48F161EFF9F7005BD6667F30A5C27 -109: 42E7BB8E780B3B26616ECBCACE81FA1A -110: 225AFD8EC21F86F66211ADF54AFC2E86 -111: 4FAD3AB7D8546851EC1BB63EA7E6F5A8 -112: D1FEC2AC3715E791CA5F489F300381B3 -113: F62807C995735B44699BB8179100CE87 -114: 54050B090344E3284F390806FF716371 -115: 50482241280543B88F7AF3FC13D65C65 -116: 4C36F27D4786FE2FB8CAAC690B6D62F7 -117: 5A0EDF0B97977EE5AFB3D185B64FB610 -118: 4541055C6675B614D27C537C3BB15675 -119: 1C772251899A7FF007400B888D6B2042 -120: B7BA1EFC6022E9ED272F00B8831E26E6 -121: B0B2D719A838DB877B6D6571A39A1CDC -122: 800AA956EC16F603ECDBA66C2DC6E4CF -123: 8827D2778287C58A242ACD4C549BEB31 -124: CFBC5AA0B61103C1A982D8927B26F575 -125: A1F5B691F74F566A2BE1765731084F8A -126: 80749BE03F5724FA4CA0AEF8909379B7 -127: 8402B21E7BC7906493BAE0DAC017F1F9 -128: 37EFF01866BA3F538421B30B7CBEFCAC - -Hash: sha1 - 0: DA39A3EE5E6B4B0D3255BFEF95601890AFD80709 - 1: 5BA93C9DB0CFF93F52B521D7420E43F6EDA2784F - 2: 3F29546453678B855931C174A97D6C0894B8F546 - 3: 0C7A623FD2BBC05B06423BE359E4021D36E721AD - 4: A02A05B025B928C039CF1AE7E8EE04E7C190C0DB - 5: 1CF251472D59F8FADEB3AB258E90999D8491BE19 - 6: 868460D98D09D8BBB93D7B6CDD15CC7FBEC676B9 - 7: 6DC86F11B8CDBE879BF8BA3832499C2F93C729BA - 8: 67423EBFA8454F19AC6F4686D6C0DC731A3DDD6B - 9: 63BF60C7105A07A2B125BBF89E61ABDABC6978C2 - 10: 494179714A6CD627239DFEDEDF2DE9EF994CAF03 - 11: 2C7E7C384F7829694282B1E3A6216DEF8082D055 - 12: CFF9611CB9AA422A16D9BEEE3A75319CE5395912 - 13: E51F9799C4A21BBA255CF473BAF95A89E1B86180 - 14: F741644BA6E1BCF5FEE6D3C1B6177B78468ECE99 - 15: FB1D9241F67827CE6DD7AC55F1E3C4E4F50CAA03 - 16: 56178B86A57FAC22899A9964185C2CC96E7DA589 - 17: 0A0315EC7B1E22A79FC862EDF79BDA2FC01669E3 - 18: 32AF8A619C2566222BB0BA0689DABCC480C381D5 - 19: D35B5AFBC48A696897C084E6E71AAE67C7CD9417 - 20: 602C63D2F3D13CA3206CDF204CDE24E7D8F4266C - 21: A3C6FBE5C13E8B41FADC204C0CF26F3F214189F4 - 22: 25E480E9E0CA2B610105CD1424B8A35F63FB3981 - 23: 45412D51D3CA7BCF452D1612720EE88F9D2427C3 - 24: ED6A95036E3E046931597A457DB7A78B7309C4C0 - 25: B4FE0256D346700783420E08A4A6F7992B1E36C9 - 26: 33E1799E98280E5A9ACE5509477A2048607C5537 - 27: CF193837F6DE43F8E38000ACFCF764FA8D8FDE22 - 28: 7C8DE247DDA83599AF2EC2EE2D29E20583DAC34B - 29: F38A076F70613FC251C4D21E6435AD08341A8A99 - 30: DCD68E6174BD74BA180DA047A7345E8D111F85FD - 31: 43BBACB5F62A0482CBDB564171B04365CA6E27C0 - 32: AE5BD8EFEA5322C4D9986D06680A781392F9A642 - 33: EB90BCE364635C4C23B49F493F0043579BC85C17 - 34: 2942C7AFA65444C43D0592D0DC73CA71DB729205 - 35: ABF726F5FDA729FB7F3F0484D7C94B3107AA02AE - 36: 75DB4F6BCC05A781DDA9D17C46717286DD53654B - 37: A82CB42D89DAF5FBC1D4A48476229C495782F98D - 38: FC1A69683744AF823CD69E8A1E3F460591714028 - 39: DC68DB44B48521B0700A864896A00E17777AEA83 - 40: CC9AD99E917042381B0F99588896CBF236AA8ED3 - 41: EC7A68484A749C7065C6B746F9C465DCB414F370 - 42: C627C449DEFF14AE7ED807293D30846F061DA5B8 - 43: 4782F2A19B6DBB0882D656DE86C3D21A7317F768 - 44: 02D4EED99E7307BEA39AF5330BF7FB388D48B496 - 45: B3D99B9D90A69E50FD4365704F5AB2EAB7BC9763 - 46: 9B1C07176BB227F73E8A4E173071D39302061DE2 - 47: D79097DDAC552A6E02A52CE7AAF494D2D73B2557 - 48: DF7F23B160E75B9BAE5EA1E62B43A5A34A260127 - 49: F598F3780D8C374D97957B9B62D56106E9E0B2D2 - 50: 0BD98598F9AB29C1359EF5460A206DD1370515E3 - 51: E6C320834F69D81689E1ECD5ABC808D49D9C4E07 - 52: FD5EE7588CD129E12B886974621FD29FACC78E19 - 53: 2A9C28EF61EB536D3BBDA64AD95A132554BE3D6B - 54: CFAE6D86A767B9C700B5081A54265FB2FE0F6FD9 - 55: 8AE2D46729CFE68FF927AF5EEC9C7D1B66D65AC2 - 56: 636E2EC698DAC903498E648BD2F3AF641D3C88CB - 57: 7CB1330F35244B57437539253304EA78A6B7C443 - 58: 2E780486F64BC91FBFA2785EC1CA5C9E3CC07939 - 59: 4A7713D44E97D9F09AE1D786199C58AE2BFAF3EB - 60: C98714B16F92C8A770E9FC229DF834D1688E282F - 61: AACE3DD6F54A2A255ABA920F5FFC8CF04B85A69A - 62: CF8563896A3B0A0775985D8289444C4BBC478DA7 - 63: 6D942DA0C4392B123528F2905C713A3CE28364BD - 64: C6138D514FFA2135BFCE0ED0B8FAC65669917EC7 - 65: 69BD728AD6E13CD76FF19751FDE427B00E395746 - 66: CE705B7C60D46E7E36FE073DB8822698579CA410 - 67: C717EBBF6A2BF1BB33DA6257352D5085BEE218B3 - 68: 86151D140AAFC9A4B5877D3FBB49014FE5906E57 - 69: 7446B5A6BBCC58BC9662451A0A747D7D031F9A7D - 70: C24887924F92ADAC5AE367995D12691C662B7362 - 71: 5AF83CFD42D61967778889CA911CFB6C14339BA7 - 72: 587D4F6E6B4E21343423E434679009CBD3D24DCF - 73: AC65DD946C5CC432D4D624CAEB53C7363F96B7AF - 74: FA71E70750674C0F6B4AA19D0BE717B2936C83FD - 75: C9EFE6DD0A019315F73F3962DE38B6C848A1705B - 76: D1D05649B952C8F6EB016BE08FE1544AAC5D5925 - 77: CC3081AC1D695BAE51CFD5B44B9FB3A230733CC3 - 78: EB9DE332558953792687D9A7F598B5D84BF0A46B - 79: 39DE5EFDC92E3D3678F24D2CF545BA4D172D003D - 80: 399DBC9F721E44A992A0DEF42D999B32AF449ADC - 81: 996A2817C8ACBC667E1C4C27B8F4E9952736DD7A - 82: 3EF8189CE1BCC0D65AA182B1A81534635EDFDF2B - 83: D676714C6A6FF4E17A60C0511C25AA8B164FA606 - 84: 4DB6E3381E1B9290267C1539E1053793C8B81FA1 - 85: 3A34D35B0296FE4D83EDA39B742A9D8F4B13A958 - 86: 54F3B45304EF1287F54B877FCCE3285E154F9D6C - 87: B1EA96216E025377AB5AA845238FC8BC65DD60E1 - 88: BC6C7488145485DEDE1AE1D43B594F0046BCDA0F - 89: 3D9A0619ECF88C84CE86213E9AA91D9A252CBC32 - 90: 92CCAA0B4CE89E2BD80A61B9BAFD5AC58AB7B588 - 91: 3EB326B5BF4440FB3A88E3DCB05C1DB5EA01AC5C - 92: 989C63E819B13D4CADFB33F8DEAFBC57C1992A12 - 93: AE944552C20CF16F07A5C357713832C9D72D0C6B - 94: 46723E982569A1E2D9EDCED5498FC1F46F7D63FC - 95: 3BC5DAE7907C83A0693F87FD8372EFDD1DF53E09 - 96: 96D281BA44EB21ECFB1663C8AC5752C48686A927 - 97: FA0EF18178880A72B51C26555C10F5210DAB4390 - 98: 0C7ECAC32B8ED6D9835D381BF069568722A276E1 - 99: 649E44ECBA85C0938EC09229CEE4BB69388EC642 -100: 1E6634BFAEBC0348298105923D0F26E47AA33FF5 -101: AF2AF2734BB2BAA288940CB62109F4849DAA347F -102: 22D14BC045CC9A3794C99BEEE7ABE278BF24D6D8 -103: C3164CCBED75B82ED3F59F4A47FE09B256025549 -104: C27B5BC7CD24DE4913614A769A442E9CC9FB0E08 -105: F44D48D98CAC77522FF6B9E1B9CBB8489E58E588 -106: EA19A71FFBEC9572F6CD65523ACAF865EC05AB52 -107: CDA0EB9D310247BD1E8B3EA10D9B9DEFF6FBABA9 -108: 449DFCE971B9D65D69FBC72940E9A885E8DDE9CE -109: 96EEBB6B95A9DA99C58190CBD77CD6FBCF638A79 -110: 670F7A869E90CE86E0A18232A9D4B1F97C1C77D0 -111: BC544E24573D592290FDAFF8ECF3F7F2B00CD483 -112: E4CE142D09A84A8645338DD6535CBFAAF800D320 -113: 1C26461E26EB697CCC36A98714EE70CAAA87A84E -114: 51C5B1C25A71FF00394A84AB48B5733C8955551E -115: 84803504181C0AE33A511C49AF5015A5B1892BFD -116: 7CC8BCA120C2635ABFEA82DD203112B5C7E165DA -117: 44E2519A529D7261F1BEBEDC8ED95E1182CAE0DC -118: 2A81372DA39C1DF4251539A9922717B7CF5F0334 -119: 41C89D06001BAB4AB78736B44EFE7CE18CE6AE08 -120: D3DBD653BD8597B7475321B60A36891278E6A04A -121: 3723F8AB857804F89F80970E9FC88CF8F890ADC2 -122: D031C9FB7AF0A461241E539E10DB62ED28F7033B -123: E0B550438E794B65D89B9EE5C8F836AE737DECF0 -124: FB3998281C31D1A8EEA2EA737AFFD0B4D6AB6AC2 -125: 7A914D8B86A534581AA71EC61912BA3F5B478698 -126: A271F71547442DEA7B2EDF65CD5FBD5C751710AA -127: 89D7312A903F65CD2B3E34A975E55DBEA9033353 -128: E6434BC401F98603D7EDA504790C98C67385D535 - -Hash: sha224 - 0: D14A028C2A3A2BC9476102BB288234C415A2B01F828EA62AC5B3E42F - 1: FFF9292B4201617BDC4D3053FCE02734166A683D7D858A7F5F59B073 - 2: 00AC60F30E9BD1956F914C8E5125B69DCC31A179734E6A85B3F702BA - 3: E615202185AABE2ACA924BEC29E5A12384F8339EAE4E64C9CBA9F1DA - 4: D70DA0705EAE42A5C596D92F331DDA2421B4E14F8B3035FB73B8B700 - 5: 98029CB458A39A16355963922D32DACD9439F90E9FD106D42A0D123C - 6: 7D92E7F1CAD1818ED1D13AB41F04EBABFE1FEF6BB4CBEEBAC34C29BC - 7: DDD5BABB1B05D8BCCD644ADC393A9E2303C850DA31922C4DA07574F9 - 8: 4C07070802E21052FB0295AC0571CAEDF219143ADAE0627E2850EDAA - 9: 5D3CA3BFE738D33F841069ADF6DD79B987351CE580ACA23326B3A7E7 - 10: 6B5373C535A4FA5D56D6C4953575CE64968031BB019B909F8F2DB904 - 11: 767D0CDC11079BA8DCA276DF5C4B85507DE67DCE47EDA4CD9196D312 - 12: 02C513977B6242D2FAAC094CAE3C247C6E2745F8A71494A60535A2EA - 13: 1F39482310E2209C10A88C7FD7FC1FD567F36789808C37D30045A82B - 14: 55BA81EBA644183AB2460C234BB95ABDA898E980BA976584E2977231 - 15: 2522E2B35A835436C80A122E4676DE64690C81440D42DBDA40EF2151 - 16: 529D656A8BC413FEF58DA82E1BF0308DCFE0429DCD80687E69C94633 - 17: A153F81C68D9FFFD4DE0AB9111C2FA86E8EDCA9B294376083077A135 - 18: 1EC706AEB2227B263A105EDBE2562E0521C96420DA4558012327661B - 19: 4904ADADF19D088911EE0EFD20A9AB511F2786C8FD43F1E5E8BE2AC6 - 20: 6CE245C296289A32F661986FF1C80E893BBD35EB0B182EDC14AB3A7D - 21: 33831C459A43CBF8BEB6DD50039750F1EA3688A7EAEF68CB2F095E16 - 22: EB4BC2EA1F7146E8274A96E874585C401256FB921FFC7E935DDC7FFF - 23: 09A266C98019B6B2A4318FBEDBEA5481AF01F0AD2AD16F09991A3C3A - 24: 7AF2814CD6105473EE530F2B3DAE992ABB6C801428F33430501F09A6 - 25: C5BD6127243049C4D5E9E3B391E12BDA86DC7A9856910A757004486F - 26: FCA06DDE2DCD212E6C1C11BB22B18B4F5582202655DFB9B6C9960C57 - 27: 0851998120F8CE47482DA5B2EB21BADF73C9F145921EEFD33459D49F - 28: ED36A2092538C5D4769917953E7355A13072DDAD8A6E5E2AF1DE96F6 - 29: 2C4A89C05BFD09B7068BAFDA37B0314EFCE02AFAE1B2C25DCE337326 - 30: 1D552A4D06BB8A0827BFE8DA2B6EE56ADBD17CE4810908D572076F6E - 31: 997D180912E0655445B07259278AAAD424633F5FF6BD0AFECD4F15DA - 32: 71446EA93381BA091F94AFCDC5B938323290A1A027C22A75E88A04D0 - 33: F77087D6F4AE34E88C62597CEC06220F4C694D2E0EB704820035AE6A - 34: 64EE78B0A6C116380A4C16F24489C1E94A578E558453537A9819A2E6 - 35: F39C1C862FDC9AB4ACFA50FE283CB7595C608F8C521BB7898CF71D34 - 36: DB482A26C9488A963359D145914612E34B821CC6CDC11113B73BDE2F - 37: C7C45F3AA5EEDE664D6CCD510F628D4DC3C67F93973FE05B0163CA13 - 38: 7F230E3E597845DB9F8D61B44740968FF55F2DF28CA538A68927F130 - 39: EA52362A9C66B6A5FF3B642FCFEBBF54F793B088D29E6840D7A5CF56 - 40: 84B064EF9C13F1ED54AD0B8FC0CC28F9BCE5009500E1CD92CA2BAE04 - 41: A2702281BD63CA745553CB18693DD70AC9A70CD73C01783727707C97 - 42: 89231FCFFC7022DF20B1846285FAACE44AFCC677685DA55EE02D94EA - 43: 4C5B01C50907D097DDBF0923B885A26B58DFF5761C1AEDFB8D5353F5 - 44: 84E0CF33A7E1C0EAA46F37E99CE5C8B292E81AD61318796D1A9A90C3 - 45: 27E59A0B6E7B9125D4CAA658810AE5054CE40A9A0A0FFE6E36435EBC - 46: C7F21E2B4C89B2A6E64D92F93FC4146EB5886503C1231EE6924B4E13 - 47: 653CAFF50E077A855992990F0C5F89C75FA18D1CC147F685AF2EA993 - 48: 6A7BDEA7E456D5339B7D9C244E246AD65B18BA95E0518E201AAA7889 - 49: 837ADE7F298F8159E6E2408751B0C480648CB6FD6D26C551983F3176 - 50: BEEF3F6AC40A9DED345BE41242BB2CF924B457A45CACC68379B1DC4A - 51: 6D2908EB3B6C8952346E0B65B9406D949B5A340123DB83B151DF5F81 - 52: 9E75A1D6B4A4D1A9F5AA6F8A48AFD6F3FD360D2D8723B53DBB63208E - 53: 436E3BFE94A39359CDF47D35395D34C0435018C88B4E96E68C22645A - 54: C209DF2E99E03D679FBA9E14AAF958AC1B0A22076BB3B532A0D7F092 - 55: 8991DFBA74284E04DC7581C7C3E4068FF6CB7A63733361429834BB56 - 56: 2B2CD637C16AD7290BB067AD7D8FD04E204FA43A84366AFC7130F4EF - 57: E87F5BC938C3B981C197D4B163C635A5049FAC81C4C6467E1251BE48 - 58: FD9BDAF5CC288A603D1623651D5BA3B8801D1602B0B9221C0B48435D - 59: 87F207D9D870EDD7DA61753473A51FC386E2792A3861F949BEA05CFE - 60: C9EFF79F4412CE49296C082DC777118F92C9AC4136D4EB32621E942C - 61: DDBC76D25D9819693F3597D6F09044F8D6CCBD12F081156F1090AF7D - 62: 6411AD13AA3654302BAC8E2BFD1CE76F37E3B3394014BBE260062CFC - 63: 049E8DD7EAB3378CE9F823BFB569E5B270235D4B7F9623606971998F - 64: C37B88A3522DBF7AC30D1C68EA397AC11D4773571AED01DDAB73531E - 65: 114B5FD665736A96585C5D5837D35250AED73C725252CBF7F8B121F6 - 66: 7D9B844CAAC9EC93AE2159ED3D336C55396216DAC6AC5DC5DECC11C9 - 67: E1C799109DEEA117F68DD1826B38B514E1D265F11A8B60B24630FF8E - 68: 029A0D024B6C0B63E1586F3D34111727E37D49CA12E7F520FA91A926 - 69: 2EA94F04A72C770A98E2A495D886EE674B7D0FB987B7B5C2217A8773 - 70: FAF445688FFCA34ED783F948B8F74578503D4845836CAF69DBD5EB51 - 71: 91EC59AC7C98F9DFB869E11C80027F8A4D311324597E6FC6135224D3 - 72: 190DFC9C7BDD954E415E543F99B00B5110ED6A12182BFFDCAA77D8B9 - 73: 8C3AA805FA75625476F3267C211B1DDA52E1810B058EF804E34BEE58 - 74: BFD0E517E4A340A4E0EF1AC306EE2C6DD1288C77531EF0FD5ACB73FA - 75: C621A18D7E09976296CBC39761B020E7E346042FC735FDF106148F3F - 76: 27EE5F7E3FE49EAEC0AE0A93FD971EDF0304A4C0513BCF43424C95A2 - 77: BD9D42F293DA572219F08D4A38081D203E44F612EEDEF93CE0DAF6D4 - 78: 374CFB6FB12768717EFED2681718C11B22588C429DB9C71AFB5EB562 - 79: 1CFB1037FC3943559E9F913183DB71392CD4BC68CDFD47D7DEC9C9AD - 80: 2537E015D5945E0541BC48320AE4DFF7FEAB911227AE0D579DA1CD05 - 81: 012B34E1A530B6889E87863A59645EE4FFEB292A33815D2CE11918EA - 82: 5242DD4DFEE389E668D8FF78DA9B2D85AAE12D0C220E8D1BADBBA845 - 83: 4813D70E1D6BB6232CD9257B5132FDBA05E1A4A858E237C303CFA052 - 84: 0530BBA43AE6393655F21F7EEA67F8E8E819BA225AED78CA8BDE075F - 85: 4F7EAF4A9D0000B0E957DFE46DB304EBB2664A32AF4142EC74BE18D8 - 86: 68CF23B9DC4DC3430835B484648CBF126940AF6BAE51431A66D7F0E6 - 87: A093D2119C7076259F194F107077061C61C792DC5326C3A4D3A63BA6 - 88: F4E883F7FD12ACD36E3891986E4D7FF03F3E150F09CD4FB58A023A04 - 89: 0816862C59CE35E0D78834A221D3BABE21987FDAA81F20ED61D9DA84 - 90: F415933677BB364C589722E30B958F2BEF8670A10F1F5082F79FDB4F - 91: E40C5632490BB8DAD2283B6DBDCA870F4B5AB4271C61127DE999BDF0 - 92: B2D4E6CD7AFC35A475620EA1446B9024D767890B8593AB50275F370D - 93: 948616FD7828F09E8A57F986589948085D18EC3550E0ADA8E0127665 - 94: 2B115E930333A355A82F074EF261DE6BB2942D9DD64F98BA12D92DDE - 95: 6EEAB864B5AD618CDB1AE79C7B1DE31020966A02350AEF71088E6876 - 96: 676AD81F213E037F3C9BA2310F49DDDA4D6476C28A8EFC0046D3F55C - 97: 03A28C9068BC10A6FD87A1E53F00415F8CE994C968DD9CFF60D6B0A2 - 98: 01D91D084F400C591EDD750B66EC2482C834CE0E140A37E6E142CFEC - 99: BCAD899E7C771764CB91FF60AD79BFD629F4803A05FCBCC24E8F3E79 -100: 6E08215B5470DDEB67E44A494E52E259A9C2C4FBED4AF5DC6DB3E92A -101: E5C45BED6F8BFC487FF7190B108AF5C5B66F6D55D365B5A1BA156914 -102: 0DB55D83B38D42D229CA42D001B09758B5F3F032109F2F999C553655 -103: AD4DF1AF973A2747568A1B8DEF15E34A350A93F45BA84596580D11F0 -104: D4905849C8C4EA32159A431B52BAAC092F90037093E200A0C46611F9 -105: A936D0AA091B827BAD86644C94603068AB34A5B59E29D1E3BAB13039 -106: 46D214E9FA8C877C2791CC8E6716868713CB5B677CC4D838242C9B18 -107: AE8D3EB227AA3558101D5E5A2BF6C862C9F7297A31A3DF24E4502257 -108: 4462C366B10326D4FEF46E71930BCF93713F7D45FAC9963520FF5FE8 -109: 05EFC35781E413ECBCC763AE13D5A37C159CE5CCEE6EAA1CFF7CA516 -110: CDDBA09D7FE081E7A39C4017B3EDF7A9138D1CB857559BA9AD2C939E -111: 1AEEF583C448A9AE00FBC931B50BC0DA5BB8323E616B11076CEE8B44 -112: 01E5ABF50619B5C2078E754EDDEDCF4DE8D31185A2219313CB91A8C9 -113: B7FF114CA77757CAD67801E6761AF20F4CBB8328AEF290F77EB612C3 -114: 08F43DF4547732424AC7D0390AD8AB3D4978826462446D13B2B468D6 -115: AC3799ED09E3BD9E770FD3A0073E371FE9A3D4E3D464C3A7023CC72D -116: 795F160C275FF6B575031D4053BA1D1C32744D09F005B3BF10BDD1F7 -117: D2EFD4AC8ABA33151D0399E2893769A6D8BBFBA7B128388BFA65B841 -118: F85910F64FEE2B8F91DEC8064F75CB97E1FFC895AEE912DD3945F839 -119: 762F18C0DF65C3D0EA64126C8A6E51DB4425E76D4D969ED0F83899BE -120: D022DEB78772A77E8B91D68F90CA1F636E8FE047AE219434CED18EEF -121: A802D8B618A503352CDBCC1FBEF04EA36499EA72D0E32D314CAF83E5 -122: 6DE1088DD95C9535849294A8635A44084BA36E4EEF81C6D67B98CE90 -123: 6AA11591302A30EFACF874F40AA017F8545D3D9EA68D479965AC0B3E -124: 3288A475A4817D2E42830C709C1DC18A4BBD59DBD903B43CA702F275 -125: CCEEE7F6EFA60B2F2CE1090FB929D6068F7EE301E7A84072FD163F7E -126: A45B0FCFAC3F05279B7E8278AED93E37B225E6A997664F92C7555447 -127: 554C9C3F7E92B80F4121E00CC147535D377EAEB4FB1FA8E25C7F81C1 -128: 67D88DA33FD632D8742424791DFACE672FF59D597FE38B3F2A998386 - -Hash: sha256 - 0: E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855 - 1: 6E340B9CFFB37A989CA544E6BB780A2C78901D3FB33738768511A30617AFA01D - 2: B413F47D13EE2FE6C845B2EE141AF81DE858DF4EC549A58B7970BB96645BC8D2 - 3: AE4B3280E56E2FAF83F414A6E3DABE9D5FBE18976544C05FED121ACCB85B53FC - 4: 054EDEC1D0211F624FED0CBCA9D4F9400B0E491C43742AF2C5B0ABEBF0C990D8 - 5: 08BB5E5D6EAAC1049EDE0893D30ED022B1A4D9B5B48DB414871F51C9CB35283D - 6: 17E88DB187AFD62C16E5DEBF3E6527CD006BC012BC90B51A810CD80C2D511F43 - 7: 57355AC3303C148F11AEF7CB179456B9232CDE33A818DFDA2C2FCB9325749A6B - 8: 8A851FF82EE7048AD09EC3847F1DDF44944104D2CBD17EF4E3DB22C6785A0D45 - 9: F8348E0B1DF00833CBBBD08F07ABDECC10C0EFB78829D7828C62A7F36D0CC549 - 10: 1F825AA2F0020EF7CF91DFA30DA4668D791C5D4824FC8E41354B89EC05795AB3 - 11: 78A6273103D17C39A0B6126E226CEC70E33337F4BC6A38067401B54A33E78EAD - 12: FFF3A9BCDD37363D703C1C4F9512533686157868F0D4F16A0F02D0F1DA24F9A2 - 13: 86EBA947D50C2C01570FE1BB5CA552958DABBDBB59B0657F0F26E21FF011E5C7 - 14: AB107F1BD632D3C3F5C724A99D024F7FAA033F33C07696384B604BFE78AC352D - 15: 7071FC3188FDE7E7E500D4768F1784BEDE1A22E991648DCAB9DC3219ACFF1D4C - 16: BE45CB2605BF36BEBDE684841A28F0FD43C69850A3DCE5FEDBA69928EE3A8991 - 17: 3E5718FEA51A8F3F5BACA61C77AFAB473C1810F8B9DB330273B4011CE92C787E - 18: 7A096CC12702BCFA647EE070D4F3BA4C2D1D715B484B55B825D0EDBA6545803B - 19: 5F9A753613D87B8A17302373C4AEE56FAA310D3B24B6AE1862D673AA22E1790F - 20: E7AEBF577F60412F0312D442C70A1FA6148C090BF5BAB404CAEC29482AE779E8 - 21: 75AEE9DCC9FBE7DDC9394F5BC5D38D9F5AD361F0520F7CEAB59616E38F5950B5 - 22: 22CB4DF00CDDD6067AD5CFA2BBA9857F21A06843E1A6E39AD1A68CB9A45AB8B7 - 23: F6A954A68555187D88CD9A026940D15AB2A7E24C7517D21CEEB028E93C96F318 - 24: 1D64ADD2A6388367C9BC2D1F1B384B069A6EF382CDAAA89771DD103E28613A25 - 25: B729CE724D9A48D3884DBFCBEE1D3793D922B29FA9D639E7290AF4978263772B - 26: B858DA80D8A57DC546905FD147612EBDDD3C9188620405D058F9EE5AB1E6BC52 - 27: D78750726155A89C9131D0ECF2704B973B8710865BF9E831845DE4F2DCBC19DA - 28: DC27F8E8EE2D08A2BCCBB2DBD6C8E07FFBA194101FC3458C34DED55F72C0971A - 29: D09BEA65DFF48928A14B79741DE3274B646F55AC898B71A66FA3EAE2D9FACD77 - 30: F2192584B67DA35DFC26F743E5F53BB0376046F899DC6DABD5E7B541AE86C32F - 31: 4F23C2CA8C5C962E50CD31E221BFB6D0ADCA19111DCA8E0C62598FF146DD19C4 - 32: 630DCD2966C4336691125448BBB25B4FF412A49C732DB2C8ABC1B8581BD710DD - 33: 5D8FCFEFA9AEEB711FB8ED1E4B7D5C8A9BAFA46E8E76E68AA18ADCE5A10DF6AB - 34: 14CDBF171499F86BD18B262243D669067EFBDBB5431A48289CF02F2B5448B3D4 - 35: F12DD12340CB84E4D0D9958D62BE7C59BB8F7243A7420FD043177AC542A26AAA - 36: 5D7E2D9B1DCBC85E7C890036A2CF2F9FE7B66554F2DF08CEC6AA9C0A25C99C21 - 37: F4D285F47A1E4959A445EA6528E5DF3EFAB041FA15AAD94DB1E2600B3F395518 - 38: A2FD0E15D72C9D18F383E40016F9DDC706673C54252084285AAA47A812552577 - 39: 4ABA23AEA5E2A91B7807CF3026CDD10A1C38533CE55332683D4CCB88456E0703 - 40: 5FAA4EEC3611556812C2D74B437C8C49ADD3F910F10063D801441F7D75CD5E3B - 41: 753629A6117F5A25D338DFF10F4DD3D07E63EECC2EAF8EABE773F6399706FE67 - 42: 40A1ED73B46030C8D7E88682078C5AB1AE5A2E524E066E8C8743C484DE0E21E5 - 43: C033843682818C475E187D260D5E2EDF0469862DFA3BB0C116F6816A29EDBF60 - 44: 17619EC4250EF65F083E2314EF30AF796B6F1198D0FDDFBB0F272930BF9BB991 - 45: A8E960C769A9508D098451E3D74DD5A2AC6C861EB0341AE94E9FC273597278C9 - 46: 8EBFEB2E3A159E9F39AD7CC040E6678DADE70D4F59A67D529FA76AF301AB2946 - 47: EF8A7781A95C32FA02EBF511EDA3DC6E273BE59CB0F9E20A4F84D54F41427791 - 48: 4DBDC2B2B62CB00749785BC84202236DBC3777D74660611B8E58812F0CFDE6C3 - 49: 7509FE148E2C426ED16C990F22FE8116905C82C561756E723F63223ACE0E147E - 50: A622E13829E488422EE72A5FC92CB11D25C3D0F185A1384B8138DF5074C983BF - 51: 3309847CEE454B4F99DCFE8FDC5511A7BA168CE0B6E5684EF73F9030D009B8B5 - 52: C4C6540A15FC140A784056FE6D9E13566FB614ECB2D9AC0331E264C386442ACD - 53: 90962CC12AE9CDAE32D7C33C4B93194B11FAC835942EE41B98770C6141C66795 - 54: 675F28ACC0B90A72D1C3A570FE83AC565555DB358CF01826DC8EEFB2BF7CA0F3 - 55: 463EB28E72F82E0A96C0A4CC53690C571281131F672AA229E0D45AE59B598B59 - 56: DA2AE4D6B36748F2A318F23E7AB1DFDF45ACDC9D049BD80E59DE82A60895F562 - 57: 2FE741AF801CC238602AC0EC6A7B0C3A8A87C7FC7D7F02A3FE03D1C12EAC4D8F - 58: E03B18640C635B338A92B82CCE4FF072F9F1ABA9AC5261EE1340F592F35C0499 - 59: BD2DE8F5DD15C73F68DFD26A614080C2E323B2B51B1B5ED9D7933E535D223BDA - 60: 0DDDE28E40838EF6F9853E887F597D6ADB5F40EB35D5763C52E1E64D8BA3BFFF - 61: 4B5C2783C91CECCB7C839213BCBB6A902D7FE8C2EC866877A51F433EA17F3E85 - 62: C89DA82CBCD76DDF220E4E9091019B9866FFDA72BEE30DE1EFFE6C99701A2221 - 63: 29AF2686FD53374A36B0846694CC342177E428D1647515F078784D69CDB9E488 - 64: FDEAB9ACF3710362BD2658CDC9A29E8F9C757FCF9811603A8C447CD1D9151108 - 65: 4BFD2C8B6F1EEC7A2AFEB48B934EE4B2694182027E6D0FC075074F2FABB31781 - 66: B6DFD259F6E0D07DEB658A88148F8253F9BBBB74DDD6DB3EDBE159A56BC35073 - 67: 8FA5913B62847D42BB4B464E00A72C612D2AB0DF2AF0B9A96AF8D323FA509077 - 68: 7DED979C0153EBB9EF28A15A314D0B27B41C4F8EED700B54974B48EB3ECAF91C - 69: 1CF3AA651DCF35DBFE296E770AD7EBC4E00BCCCD0224DB296183DC952D0008C9 - 70: 5767D69A906D4860DB9079EB7E90AB4A543E5CB032FCE846554AEF6CEB600E1D - 71: 8189E3D54767D51E8D1942659A9E2905F9EC3AE72860C16A66E75B8CC9BD2087 - 72: 107DE2BC788E11029F7851F8E1B0B5AFB4E34379C709FC840689EBD3D1F51B5B - 73: 169F6F093A9BE82FEBE1A6A4471425697EC25D5040B472C5B1822AEEA2625988 - 74: 2087EBD358AE3EA2A092FC19C2DFEE57C5F0860296BC7B057C14E1227C5CB9D1 - 75: 182AB56F7739E43CEE0B9BA1E92C4B2A81B088705516A5243910159744F21BE9 - 76: 081F6C68899A48A1BE455A55416104921D2FE4BDAE696F4B72F9D9626A47915E - 77: 5CE02376CC256861B78F87E34783814BA1AEC6D09AB500D579ED8EE95C8AFCC8 - 78: B93E407404E3E95F20FD647365E0E7F46AFABE9AF1FF083AF996135E00D54009 - 79: E81FA832B37BE8ED8F79DA29987AA4D61310DCB14B2859DEDF8FB1DAA2541FD3 - 80: C56705FEA5B110B8DC63688533CED21167E628017387C885423B835A55EDD5EF - 81: C2226285D08A245A17058ED2D24AD095B714F608AE364FDDF119E0A7DF890540 - 82: F9C270DA8793221A6809AC685FDD4F5387E0FE1EE6AAF01C74F1E0A719621614 - 83: E69BEFD6EF7F685C36E343AC1702D87AD6A0E4AC8C0D5C521D04AAD4EF0B7458 - 84: 4E3033562AD74A7D43EB5FF5FC2382622C6307CB10E245AD62DA77C4C63CB178 - 85: 2EA17629472564A59E5EB845A2CDD04F442DF2FF26BCC866E400F77158D612A1 - 86: B90223DF74DD49A8A1461F340F2D7A90F96903CCBB5BC3C74EA3658FC8948B20 - 87: E0209F42B927EC9C0F6D6A76007ED540E9BDD6E427B3368A1EA6C5E7565972DD - 88: 10D9BD424114319C0999ADF6288F74060CD8918EF1228827A6269B2BF0F0880C - 89: 7D1978A65AC94DBBCDC62E3D81850299FE157DD9B7BD9E01B170156210D2815A - 90: E052DFF9E1C94AAA49556F86FAD55029A4875839FDA57F5005F4C4403876B256 - 91: 58D29459B2130A2E151252D408B95E6DAC424C564062EB911CC76440CB926CA0 - 92: 4E4530C392316F598E1BD07F32166380A8F712A33A48E9EB4247131EC5DC05D3 - 93: A09C9D3E42342C7DEA44EDB4AEB48CF6727CACD8032A12CF77A25829FC249D32 - 94: EB978D0F1AC03CE5C3510B5F4A16073A7A2BDC15C4AB7777DCF01030CC316667 - 95: 7D1905A3ACE827EA1AC51C4FA08C281ED3BE87E7F4E928D696BFDE35C8F2DC0F - 96: 08359B108FA567F5DCF319FA3434DA6ABBC1D595F426372666447F09CC5A87DC - 97: A7B3830FFAB0F2BBABBEF6DF0B169A7917008BF238880BBF8C20B8E000077312 - 98: B4F5D9B1555994C5EBAEBD82918D560A3BF82962A171A1614E7551939E943366 - 99: 014ECAEA1B378900F1212898C6DDB01565D81AF1D0EF78DF5E28D46E9CAF7CFC -100: BCE0AFF19CF5AA6A7469A30D61D04E4376E4BBF6381052EE9E7F33925C954D52 -101: 4565D7B898CCEA3139AD260F9273115F806B30079D7683218C4E3ECD43AF3B33 -102: DDADEB660FE8902C9FB2DB9B6CF237C9CE5B31753398085C4367EB5910B9CC13 -103: C15A8928131F6687DD10F3C115DDF8D7C8F2DF7E18D12C08C4FD16F666CE60BA -104: AE8E3D799B1353A39815F90ECEEBEFA265CC448FE39FAF2008CB20784CB2DF9F -105: 98545371A3D9981ABE5AB4A32A1D7B2FADD9801D89DA52A94A4F78A42740D21C -106: 6323DCE2F8B3A04DCEA8D205602348C40403CB200C677EB1A1C0FE37EDB6EB2F -107: 8150F7C5DA910D709FF02DDF85DD293C6A2672633DE8CDA30F2E0AA58B14B0C4 -108: 44D21DB70716BD7644CB0D819FA6791805EBC526EA32996A60E41DC753FCFAFC -109: B9B7C375CCA45DB19466EBD0FE7C9E147948CC42C1C90F0579728CFB2651956D -110: A47A551B01E55AAAA015531A4FA26A666F1EBD4BA4573898DE712B8B5E0CA7E9 -111: 60780E9451BDC43CF4530FFC95CBB0C4EB24DAE2C39F55F334D679E076C08065 -112: 09373F127D34E61DBBAA8BC4499C87074F2DDB10E1B465F506D7D70A15011979 -113: 13AAA9B5FB739CDB0E2AF99D9AC0A409390ADC4D1CB9B41F1EF94F8552060E92 -114: 5B0A32F1219524F5D72B00BA1A1B1C09A05FF10C83BB7A86042E42988F2AFC06 -115: 32796A0A246EA67EB785EDA2E045192B9D6E40B9FE2047B21EF0CEE929039651 -116: DA9AB8930992A9F65ECCEC4C310882CAB428A708E6C899181046A8C73AF00855 -117: 9C94557382C966753C8CAB0957EAEDBE1D737B5FCB35C56C220DDD36F8A2D351 -118: D32AB00929CB935B79D44E74C5A745DB460FF794DEA3B79BE40C1CC5CF5388EF -119: DA18797ED7C3A777F0847F429724A2D8CD5138E6ED2895C3FA1A6D39D18F7EC6 -120: F52B23DB1FBB6DED89EF42A23CE0C8922C45F25C50B568A93BF1C075420BBB7C -121: 335A461692B30BBA1D647CC71604E88E676C90E4C22455D0B8C83F4BD7C8AC9B -122: 3D08C4D7BDDA7EC922B0741DF357DE46E7BD102F9AB7A5C67624AB58DA6D9D75 -123: CC63BE92E3A900CD067DA89473B61B40579B54EF54F8305C2FFCC893743792E9 -124: 865447FC4FAE01471F2FC973BFB448DE00217521EF02E3214D5177EA89C3EF31 -125: 3DAA582F9563601E290F3CD6D304BFF7E25A9EE42A34FFBAC5CF2BF40134E0D4 -126: 5DDA7CB7C2282A55676F8AD5C448092F4A9EBD65338B07ED224FCD7B6C73F5EF -127: 92CA0FA6651EE2F97B884B7246A562FA71250FEDEFE5EBF270D31C546BFEA976 -128: 471FB943AA23C511F6F72F8D1652D9C880CFA392AD80503120547703E56A2BE5 - -Hash: sha384 - 0: 38B060A751AC96384CD9327EB1B1E36A21FDB71114BE07434C0CC7BF63F6E1DA274EDEBFE76F65FBD51AD2F14898B95B - 1: BEC021B4F368E3069134E012C2B4307083D3A9BDD206E24E5F0D86E13D6636655933EC2B413465966817A9C208A11717 - 2: 5D13BB39A64C4EE16E0E8D2E1C13EC4731FF1AC69652C072D0CDC355EB9E0EC41B08AEF3DD6FE0541E9FA9E3DCC80F7B - 3: 4F895854C1A4FC5AA2E0456EAF8D0ECAA70C196BD901153861D76B8FA3CD95CEEA29EAB6A279F8B08437703CE0B4B91A - 4: 80AE432E757826025095CA1FA4F89C06C8BA6754B1D883A8E31A1E65FCFB820BD74ACFACA3D939A574EA408A74162D1D - 5: 561C16404A1B592406301780C0C2DF6AA0555F504F35BFBEAC810AE36A343B776858C5E0DE56BB79607A34D2F67108F2 - 6: 79F4738706FCE9650AC60266675C3CD07298B09923850D525604D040E6E448ADC7DC22780D7E1B95BFEAA86A678E4552 - 7: E6CE1896C9783A70AC4C90276CC37B37687D7E30C753975762F961AE37118D9A610242716E8359EFC4975AA98C632DCF - 8: CFB18F81F4BB672B03214F1FEDE456F882A0DE40120212A1FEBA8FDC48F763C86ACBBFB684D34B70F99F4D8D81FE3A28 - 9: D075AE1178210804635AC02C656309311527FC8190835C8AD8196577C3332AF4D87F056023F235DB893C69AA87B0CFB9 - 10: 182E95266ADFF49059E706C61483478FE0688150C8D08B95FAB5CFDE961F12D903AAF44104AF4CE72BA6A4BF20302B2E - 11: 89BFCF569AE4AF718510DA78C67414109F5739BB5C40D51C9C8C50E2B2CEE86F2F80C8B9D68F7C01201A0714572FE602 - 12: B635441A3721CF190B39D23703C5B77018FF1A56C94F8252EE95C217E3477F093E8EC65C6AE767179A7872C8DB9B2141 - 13: 48DEBF56626CC86DFA47AD6FDEC73FD182434621DA8BC6DB23AFF067BC36DC8244D3071B1F57DE4B716F63D9820DFB23 - 14: 58475B7CF93FECCB2C02B588F1552A359E7EE9AC45D9AE50B2D7C22021466677D70EF24EFA5C492515164458E9A24744 - 15: 0AA75534F0F58756A01E3366F78E7611BC7F432364C649C3F50547F7BCA3E5489531B8AB129495FEAC834FF0A0B45DB6 - 16: C81DF98D9E6DE9B858A1E6EBA0F1A3A399D98C441E67E1062601806485BB89125EFD54CC78DF5FBCEABC93CD7C7BA13B - 17: FDD3C4C0F87EEC0CADD73028A06B01E67696C7E04960936B30C73F004CF6B595D644533F8B473C8E63B02D593A64B041 - 18: 445E4CCA1A03480D149F38014C14D28DF8288F2C6CFF047F45D4F2580AE85EFFB3BE009C9D2ACC54B51467F83A09FBE2 - 19: 8305DC56172245B82AEDCE7F9C7DC88C0E62CBF835A2AA133EB579F415FFD15BABBC30BB98E55DFDA0F9E80275C92BC4 - 20: 8A48240E1C85E80651EDDC88599273444839A952CACA2BEF4400576E65B1EB6C19C47A3067B63AF7CDC4238ADB9A8DAD - 21: 8F2F7669C27A7CB1CF7A84A2C4F050D7141852D8B429291956B85E2DB5287741A3104E7E99CA5D23A5EEA59A68A4DDB1 - 22: 32CF04AE2A4A326FDE2FBB887F47FB7A2C486E56088D85B45F0C7587591F44797FE0A67E36F571809695E05F254884B2 - 23: 713A04A3A6BA8D2FD821F1CDF9FACAF42795E4247C9A26F0ADC5E0E6AACBAFFD8F4E02563733C6BDF1A863A787949B35 - 24: 35D8A5AA0DC9AB4C9A4C62B36E0E1013977C198B05CF6B92CEA25C08309DAFD282AA9A4862958593C06BA46919EA8019 - 25: D3FB60C2E981A5C82F1B1BCB3D4D7AF62C9A32A9F0D87E0532C9D3AAC083D70133EFF63A1E2CCB87360BF032C25FE9E1 - 26: B119F9AC74E58BD081E24C0CC1E090012C192996EED67A8ECA33794FE7E1920E26C0EFAEB866EB5AB82FCA3188A3B05A - 27: 5B29543AB0F76F246B7FDE6E8E5D3DF6017A39342BB08351A4EF609AE00A91ACB7C5D0487B3760B34CEF326F63C84572 - 28: F8E1FAA657BF829C9D2E4811805238CCCD11F0C1AB7619058241BA5606E7BD5E4816163E6E8E82E62A43CB4943A41006 - 29: 0855B919786B5E5C87B85A6C17A46C550B2BA81B3724389088E2B54BA89D82B8F9841FF442DA5DB8D54C9B2AC108DC3C - 30: 7DEF8CAB7C80CEF90FB38989ABEF6F1A5EC18379681E484A1B4DB6624818D2E486FB9C245C1F0DDD85A846D4268344B1 - 31: 04AAA180C2CD24F0FB150B1AA360F445344150DCA13E1ABB8117D42E25DF7FE29246D9F00C7473D20CEC32A71E64E1F5 - 32: E7112491FAEEFD57786DA73F367B25A6F5769F5C98FA7B704D8D37747724A647371989E8B0FE8D3CB23F9EEDD528456B - 33: EA27126D0B96E00E428943EA94F4B03FD22D56C4FF4636EED139D027E6D45EF57AB86093A7342B3B3851FD3BFD1DDA23 - 34: B2BD337A4BDD48D25A5E3FCE3E0948EC67829B835A8E3DD0D9F4881D10C766369B079028C6060B7263603288D8FA4BBA - 35: A9E940504AE6B137BB1BC88CE3A9AE53DCB63AFDFE5FA0C652003A921F582C08662425C7FBD5B1E1422E39E645D4A757 - 36: F033150D7464D49A076C7D4BB9E2A5488132786CB4851A4C81DA5B0FCE66D775D3C1766094AD6CA9482DD9539F28ED9A - 37: E64D999E7258ABBB4CFF6F74AF7D6A1E9B044C17E1ACE0FC61B29E7732763755A9C1D3A380B080AD968D2228DB731DE7 - 38: 9030D47B57ABEA93B51162556FF352DA61FDF501132A9FD94E6CB56690E7A805CDB290FB4ADE36BF90A53F20922C9B6E - 39: 4473396BB0461EDB4712880810A3F7252725AD4FD6092021A40559F453A1C63ACFFA8A02C85CC8DB86560323DA0A0FD9 - 40: 095FDD130278B3C8F574D17283611E4D6199EA63A0F1599E01ED070CD0B115296FE353477582BF279D622355C89A23E4 - 41: 7EE600CEE8437531C6A5BEC313D53371F9B56425D5662C104624D83D51111E5C9F4B83000B8A3EF150E04AEDCF67C237 - 42: 676D2BD2500BC527DCB51968FE8742E40D2965047478E69155AAB9201E0C9B0F6BA9BE85C4734B0DD556B5FA7608BE83 - 43: 09F5FE433D1FB8F62A76E5654B54CB6A9EF505D2465A49DCB9669EAC9A30B2532505E4500F842EC9FBE79A382C8C2F4D - 44: 075821CA8C547E66AD94F4C4ADF866A2A7554E08D2B0F0B3576801773EDC85DF76107E6912904E9757EBA753A77CD0FF - 45: 2172C22E7E48BD0B4A73FF02803D6FCE776CECBD95DFC43CA0763A0B375D57030000B12E59F9CDE81DE58E17489B2C41 - 46: B9A15689BA4F41BE46855775B46A5DB9D6826E0CBDBC3B292DA6D57B2A179A3D393A8E1B55DE79438E5221580C604EAD - 47: EBFA57C946831E2E370A6B1BE46E27C95C512297499B8BD15722622178E00599DEEADD48F1B4B08EB649A137805CB786 - 48: 25866C8288F9FA319FA9AA2470B4FC2595DFFA9154E607444EA3247E81D74A2AE0957D6B7E050F8C96AA7577BEDCABB5 - 49: 3D28682B90022C873CEC78C3A47FD45B5124E49ED07E2F0FB41A112A63AACC9E7614ADBB007D129C0673B08C51210839 - 50: F76D9B7ED868085905AE806CFC5C6DE994999E379922AC003D53F00B65467AACEF3929392F1F2F56C621D2F552544A22 - 51: 324951FA2432B63D1765C21F98325BC4AE2FFB25F411047C53ED5A3D550B50E2B8F6E79BBE65F2C686A5132E5B982AC7 - 52: 320CB033AD533AF8EDB3E664E34BB85B2327AFCFC583CE9202C0B11F16425A58FD895D7435E8953F9506A25DE7BE6EF3 - 53: 6065D55530ED8339B09D7A4D9CB1919004F69ED9D6B119E78E1C39C7AD2AAC029A3F266F7E48350966B845C4D7D92A72 - 54: EB6E866BDC0B5089301D89B870B75056ABA6D5FA6C7406A8D6D97CE5175102479647D3F93325A2CB648A3F40CCE38542 - 55: DCEDB6B590EDB4EFA849C801E6B6490657A5C1E64F69269F5F63C9267F6223DE24CEA7AAA6B267D9BCECC15147B6C875 - 56: 7B9132D597B8873AD55BBC30F18ED3F2C9F340E7DE69FB5774056C71A06D9BC2B14137E9E1C68B6B645FED28B188249D - 57: 0901B1E5B13FCE000486BDA64FBE45C79FCE15F38A4DDD9335A521D98829D267ABCCD84284BEF1EA3C2D4E4687C6D3B8 - 58: 4A9375DBAA878E2C1C7BFB977989E6D39CC00F890ADC425F7084AE3761BAEFCB9384C8B9EB3ADD4C3C838A6D560DF788 - 59: 908682C3E0D97A4943063EA9DD0A0F55EFCA203ACA3004010D3D7EF94593592729B523EAAE4160C3EA2241EBA236FD65 - 60: 24586F75A43A08D6CF116B87B86CC43300FC4132523CC4824B7FBB3F54A5B41C7D598B40639B25A99732D575A5CFD355 - 61: 7B4CFB73E247E941570E70C7308ACC5166F123187F003B1CAA9BCD17DDA8ED5535ACAE443C9ADE93C5567090EACE29AA - 62: E97EF4578822DDC79AF60514A188F8C719E4133B58E5EB134261AA7E89C402EA7219129A06B395E5E1D2738AC23FC876 - 63: DD66B519F51A925814407A449C60B34C553D7652D41783EE903A810A4C9F833B8181C91C7F12283EACD6A5F8A2639DDF - 64: 9F2C9EB7116B3D7A4BA84A74A4D4EFF8A5EFCF54B6D7B662693C38577914C73A214766F0A175339BB0895A863824FC0A - 65: 14B0A9FFCE149426BF5045FFC24C057451D2473186DEB4F150117B855911A7641651FB1E15DF406EB373D71151C46F25 - 66: 286505FF7A9EF81224988A8FF1E423A2AD21F6B339E91B89F7F1540F14CC9A603952564539167465CA70FF0B523BECF9 - 67: 8CAB08A79BA16F3D7CBEB942C7D8676F8D0295B5FAA01F3C850DC4B5FE913AF00F2E938BE0B442187B135BEF1A36C34C - 68: 4D12FFBCE2E770ECA1104BD2F29C65FE95534E390A138C30CB0ECB6436A971116D82C6321D2EA2C0A735AF34E5E3E3B2 - 69: F8617A35FE9116A719441F82F21C79B8868E5FFFC2EA737FDC821246DB7610E9868D870575F19B29F2FD259D9242A497 - 70: 932FC435B590B1E1D49C34EB3B627DAD5476216518250B1FBFE772476437872B8DA6CAF6D2F33CE7AF8648D956CF717F - 71: 3F63DF48C2D87CEB2168BEFBF6B857A415D8BFB7062251E8E1AB0487483EEBDE5E8E8B8B0E3AD81ED4AB15E81FD5E448 - 72: 4A71E4E737DE74F78E72ECB9DDB580EA5AC96E5BBD5E52E11D4A41AB3B8303E3AF3458A8AD89B39CD9F4A6D5DB3C9E2A - 73: CAC3A81A98103BBF08C440F6C8F61AC010DF8AC05FDA77E2ED8660AB73A978B9428BA0458A5C64DFCE35D87F0DAA2A6F - 74: 6E5D162C60A451B6257781FA0E36B3BDD9BC42A7BCFEAEB75C18E541A4DE00967E6BF575CB32374C1E9FE7B36D92048B - 75: 04DDFD71893D0F4AD2A0B672A057ED2795D6811AEAFDB7136BC8C20A55DABB3AE4B62B8A2C722C1F53E18FFA5771610F - 76: 555D5B51C2EA17659516A67D31CE2CB302979F80BD7056908C1A152403FD902EAEBABDD066AB3F7834E7213A6CE99EEB - 77: 44797CE4FEC66B26B52A4249C2B267AF891C912E55221EDB6CAFC4E2F022A40E8231931DF0B19321D5CCB2AB8A4F256A - 78: 51D7AC85289FE7E4D9431414B2BF3760BE65FEDD1A0B34BED0E1562A73495EE10971B5141835DB454C865039154BEA15 - 79: 2E31DAE50A484B7E11E2E621D0552803791E07279752E09EDF4C884EF24C79C33D9572AE0DE6E0B6A20271F1F7AB98FF - 80: DDC65ED22CAE4D159D35E129A1602D8FA50D7AA53E209B0D5442BB121DB0D5D102441054B2B321675F3722669FECD06E - 81: 200E0BC495311E2FE524A1579490D843011A592E4E9B927DEB0727E5481898C557CB2941F18AF0F2725A1B19DE045BA5 - 82: 561E1875B31DEAEC4DB2FF5BFA7856A6F0ABE1294CDCCA1DA12CCB1786D9556881A768ABAE50F7243921ACF993AAF18C - 83: F6B88007732D5B9F75209F9FE107B9917010D5960184FD239854AB4611CC788D1455B113A5565A87326B3CE6CA190DB8 - 84: B4E703169169B07AC61E76A75ED4AACEE4115F6A43842BF136B514824A05F5C5ADB68F2E525D8C9E8BDB20D3BCA21155 - 85: F72E2083B296EB7468C97749D3AA1B08F418EBCD9A2E5CB4117C5A034BBEA5E2004EE1E43E26A98E4F25AD4306AF3A57 - 86: B1DE9ED0D5E5F7FDCDF530041D7320CA7376A64590F6679971F84061C42AA03F0B07C7EBCB806EC8380D9FF0E182293F - 87: 30ACC02AECEA9B91F3C6BB0F4CA8EEA1B84A0BA6BBB8F7749FD29C9BE5C5E28AFAE5A33617DFE3FC28CE3A78D1A19CDD - 88: 5B2DABAF662B86DC4B1DF6A2EBDEB5CFF1F63C65ACE5E1237DB507DD3FA2C27FF46517B0FCD6F32F25DCD55ACDC07FA0 - 89: 33BE80B29355AB16AA0F05A45A8DC15A5EF7F9FEE60BCBE05E106BF6FA0F196BFD9CBB8D79298360F760DA7B05135F83 - 90: 048C648A525FAB61CF81E087047044130E407B71DDD27293119689C8516B19DDC4F276E3B4E93E6AB80A79BB2700DE68 - 91: BF18EA9E00E6C2262D802FB66E04FFA21DC5C13640BBF27B2C22592DE4AFE31C18147E6EBD2D45669C36F9432494A000 - 92: 0A1A114981A785C399E2B21871A532B2A747FC67B4DAA287C14F2F449FC6F7C6925DB5E884E6E041D08BF6BC69295124 - 93: AC6705C373300FCC09A291CFF1834401FC30FAD512569848A05171AA02426B7034EA2E4777AAC2DDFF48089226A4884C - 94: B7B08352FF8988C0FFE3FE0E27278F068BDC88AECBA8D7ACD8919850D7400A2C0A0A8519B264F61102290C9AAAD3C2DD - 95: 8F78C56A93B3DC69ECC5827F8D591195FB683A9951175754926A8E19F81FF859DC1904DE12BC8482A760E998552D28E6 - 96: E606004ECDC6878B5EC15F4554017CCF962E92CC6EAEBE4997BA34EC0E53C67D564C8461C013701A401FE347EC0F721E - 97: AB7D7116F436ECB13ED2EC42347DDF902E0FD766EA8978CF93625F56B2164E2E630D6383EB03602A8DF27F28F580E3C7 - 98: D716BE6974E46F19A606486BE576AC6E250AAE6AC2ACE7CA9A924C874790E6B4C94670FD884A6EF770EC5E5F3F264306 - 99: 746EEE51375E6695BC4B66190172DC6E86C18E144267C7B0133D6C2ECE05F75B862E4C4EA5F813DD927D60C46E2C554F -100: 3D20E33BA4D52A8C374878F1A624A907132264D0C831C64FC51ED8E1CDB75D11C3FC78D4C3CFBF99D7F0BEA9829B725C -101: FE6A6EBBE30EEA13CE04B1C8FA4199331B77566D2AF420D4EACEDCF22C23B3D7AD2313175389A0765AD60A79C0AA85C4 -102: 1806469C58C028D7FBE80F219DD45333D440A824032778DEFC0A89CF704D40745F0F449F7DF82D228E1718391C85F318 -103: 20CD15E37F6371020B78579210FFD7756B42BD01EB829C1320C59AC382781AC4224439F1F820E215EE907091EE4F028B -104: 7967636E73E440EF1F8751441ADE0F4D169167AC270949A758FE0FFE0B90C2773435623160E4BEA5F23DBE0678E95ED2 -105: 754F6D73A11693E07A2E5F05FBE13514C52F04F904131E0544202354D30917C333DC649FF7C33557005BB19B64DB777D -106: 358D83F883166A6D2972C63F2A46EF893D2FF0F577A53830B3B8E2CB28D1EFE8405084C145EE4E0BEE5DFA9AEF739263 -107: D74B6FD707BCEC9419F032A9C21A7C79CD38F42D564057CDB956485FC5C2ACAECE9D86BE8E12B9181018EA7871343147 -108: A517359A64226F2D08B65203593F3427DD42852476A7609C7F6423C304FBA6EA83981470B8CF171F71BF02F688BB2448 -109: 62162975F98C8ED1B74ADE5B2325EC3D185F7BF8D9DE6C08BB3AB052E54C28399AABE2BE4295CBE12003A03924D4EE3F -110: 8F1E4237FBB668D2705FA6964FF50014F54AB6346A7DECC8DBAA282B51803DE20F9090E7AF2E6B40FD8A138AFE25E1BC -111: F5F9FE110D809D34029DE262A01B208356CAEC6E054C7F926B2591F6C9780579D4B59F5578C6F531A84F158A33660CEF -112: 33BA080EC0CCB378E4E95FED3B26C23AA1A280476E007519EE47F60CD9C5C8A65D627259A9AA2FD33CA06D3C14EE5548 -113: F14FC73C4192759B70993DC35FBEE193A60A98DBD1F8B2421AFA253DEC63015A0D6B75FB50F9F9A5F7FB8E7241540699 -114: 72B9E34E0E655DCD7D9C288D11839A4FD96292F76F69BFB2E7D4F848E498B842CD4ED6486E77E30C603D218144AEEFB7 -115: D71CBD531B25BA65E319954E5AA670C8055406A595D006F0DCEE11AFAAF735CB1615EBAB4CC98061645FB70F31CDD9AA -116: 1F4398793AE7B2C4975AB102BC054DCEECB238DE4307B5DC54F6D7C20E066F638A782E33441533276DF9DB1AD0EAA75A -117: CCD908195016DC596A78C6C10C92EF6F272C6251F3C40B2E7DAD3A4538BF3FF585D4E44035B49EC397D1476E9DD28D02 -118: A8A26DDB23032BBD4432AC857383A5DE280202B21CE173D864E19C4A52984E159BDD006D95605A4682458137FE6B71BF -119: 0C8D3031D85CEFA23A09E13CE03623F0E648A030E43700C82AA1C8AA7E3EA9CECEF3029A23815AD940CC39ADB7747D2F -120: 0577AD6090B2A39FFA1C4A25436F9E958890C55A5B23CF8CEE8195A5984316D81D6CF0B5916C0AD8B1F512FB39826C6D -121: A5E7C31DCDEC53D8898DCB27D52A5C1774115D8DB163543A330AB502FE31D6017FA4BA4C65ADE0CD911972C5A1B7739D -122: 2785C149B798E41E6ED600DDA5257E2F31484BA4D14D35C8353BA4BB3BFB47F6E2CD9B64C940E3C1F83AA4587DC29CAA -123: 977756EEF1A7C1D4CA31A8E6936E7B8884968A22F2846F20B38F247345B1CCD47405040F727BBE2E0FFCD159206F5E87 -124: 9E4811F182E5D6734EA097FCBC77892EC48F09DBA138AD5A5ABFE67F2E88AB61B0A3ECB29028B5528180191754231765 -125: E964C5CC45E8356DCE9FFFE715D01AEB3935D644DC9C2603ACD175A04E8924DD84A4D88A1384D6BAA8AB3F7F7D52D122 -126: 764EB963850537E57D0969C9914355C5AA67AA9722644569B7F50E20DA8461CC9C6CA5958ABE10F5469E4DC1ED27619F -127: D5FCFE2FCF6B3EF375EDE37C8123D9B78065FECC1D55197E2F7721E6E9A93D0BA4D7FD15F9B96DEA2744DF24141BA2EF -128: CA2385773319124534111A36D0581FC3F00815E907034B90CFF9C3A861E126A741D5DFCFF65A417B6D7296863AC0EC17 -129: EF49AE5B9AD51433D00323528D81EA8D2E4D2B507DBD9F1CB84F952B66249A788B1C89FCDB77A0DB9F1FEB901D47FC73 -130: D9B681BA08EC0D0598DD3A2A37F909D01A231D22DA52216126534402A58A072DB35FDAE555B99159894BC823F9DACFE7 -131: 961E792C94027A091DF880A713ECBCA94E7699FA392CCA3E4B9988CB95DD46C894AB6CFA3DE91236188F7A372B1C60C0 -132: 779C845CED9623B6558577C06C6F22768E4A01CED2A9722CB8788FCCA89E0B5CC6A8925533FD097F635997A9C191D59F -133: F8A6FA1C730483AE488191E5863AB3DAB4BBDA1722710E519A2B2455273E78A382C60DB0D21E3B497EF9EEB2780AB384 -134: 1DAA34486981474A57029F0B1FF5150A144CEC7939A5D0C3D7DDDC4F471225D98E83E8A0DE880036F1A265E24CA1E674 -135: 769694D69D701764BCF81C053E2899B232344506C08A39DEDE3D838F85870818C3A8CD2DBC8695EDAF8FE34B4A5CC35D -136: 97E29E4AE7C7E461196C1D698B5D1186822BB66ACA3B3E062A3AE07DB9DD0FED83A345014D3E5AD89E9046606AD2CEE7 -137: 6B57593EE18186573F92273A9B722F9FD77A4A512164FE3756BC2D9F665768016EB2766C46D473A103D7D7090073271F -138: 35235261C522612958048B7FB8E48F96462D2B8B52AB2455C7C142E442E4CF643B367ED466A30BA97D91C1C8C0070E05 -139: 67004A5E74598981A79984B2662FFF8C8F49F8FD13C8A841F68DBA18DF68015E9C1EF38D6522D44F89DBFEA8AF48D2D0 -140: 8ACD05F9738BBB176E50C7419A05C8200E1BA84B5797032E025ED4B55D7A61CEC4CE3662432A4E0BA938D8C9143D5254 -141: 9963300C0CE5F2D39C2B899E47988BFA914D2EA2DBB972C15B3CBC414E41DF3A2FE793597243D46CFF937F41C0D83136 -142: FBEE0F5E072237D19170999D02BB95F6F8F48FD0596A982A4FA2D1273872226398DF57A63E1ACCCF6343415DF387D89E -143: 32A65099C47EAE3BCD0F68645845C0171417385B15DB5E5F7BB5AD965F66C98CDC39B7534198AF70AD5739C8A2F2B8DA -144: E936DBA2CED7F65DE3450BA7ADBE1030D7AEFAFCCE0CBA94E671422790B45B49918319A90FAA7692780CAB4301D9833A -145: 1E20D13B4D71ACBDBD5D2AA129E98929510C795119EA8A07EC63917114315E2756B45E7AE42E1A44C5E410ECBEFB3661 -146: 02A0571C5C3076CACE7F061BDB108D7CD9C7EA51D0FBF1D00F202A0B5C87F22CE687D1CB15F798ED164CAF1CECF92CF2 -147: EA07C4A1DF1E5CB26DC7A7BC76FE518890FB8C424AF3B1C76B37AB21445D9F7FBAB73C7DB35E85337A8F7A0D55121F34 -148: 7829712876378DF986A63E4616DCA38DBE8833B14760168897AA808B96D8FFA4460CA3C1A9B674A0FC13E0625537C45A -149: A7CBB3CD50AA663BD2C4520CCEEF123F7D314870806291DA26A59C003D041E46E6B563670F27BECC5F838A273D349AFC -150: C14E7F70D28E17D3546EB40EE96D239CA5EF7EBBBD0DE64B964C145A5F2980D408A6AC248D651E4583E25093042EA286 -151: 19F87BFFBFF4B1E195612F41E67E1D4CD0393E73FEDAC1C36550C2B1A7323D3E7D747EAAB9844F45F150F8DF0FB72E80 -152: 6BFA3BC29FFF3A92FEC377AF8508D4823F4E87072D6F2F16370B7DD30789A944EE5721EFDA7ABFD47A512EA2D4984BC0 -153: EE10FDDE70EB0A11462DC00860AC4756B21C83BFF0066C431B17BA57CCBB9ED018E8058CB9EA44CC11952C3C9BD15F09 -154: E6A72B9D2A0FFCA41C3122C767A6FD9CFA04CB5B1D1D94B79A0B2C592A584F731CA0523AEA8F2DBA35FDEF74CAF165EC -155: 59118A53C4479070DC728D94BA36D211F4ED5D35F1B69E4DFC0543F07326F982D2B81DDB020F2CACCAF1E5E9832624E3 -156: 63778B7830A3AB7421912A52B3CE9303A53C2A6655291042F428691A633FB9FF173937A8D8F59B21F72D490F39A9AC06 -157: A702F15D9483BB767FC6BE9C3BFC64732277CE936AEBADE4022B24B4822BD1B0FA1213AACF7B4506BF8F330FB7643955 -158: A3FBEA92041484F7F46B380462C5114B0243A79FEED89ECF8E6D8306D60DBEBDC5FF1578EE7E94B5527EFC5707D2B7D3 -159: 1EAEA2602E0B6B328D008A5325C5D4F9DFF7AB9BB5D36816D3EBFEE733BE664E35170506667BF5A24D00222EBC5DCDCD -160: 92E4D41594E15628BEF06CA61E644D2A686C113BF8E3F9A8CD2CD8261B11D01B081EF2941D5182E565B70C566D461B23 -161: 2F08DAAA98DE6DB4E85B81E32C651D88075DE18B7F9C3F633BE1F29C89F24968525B1B357DE80C6EA8D9570E003C75DE -162: 5DF64E7960C755D40BE78F0BB7C1A185DF8E505F0B421BE23563472843E3B5CFC7DA0F40908BF56C6F3A6244581C1DE6 -163: DABB5DCBC32FE7298C811CE22025E9B1C0B87DA5E7931CC3614E3EE39112206DD8422A5504F11599436B806C9108B01B -164: 31AE27382E330115E009474FB5AC750A278B79EFF63755E323E3478B0761E5E946DA6D2436DC44ADE9F4578A8FBA9896 -165: 6804CF0314E455F499E73BBDF4FAA22CA49020330E74C55B1CF4A2D2F4C57D7149B41916002B2852ECFA0713BA91A094 -166: 7FAD2AB0972D8059D4306F0B63F25D9ACBBD8FD95EC8199CFA89D4E227EEDE6052AF0C53C703C7E319047DC5734C9F4C -167: 4635E654950B173D3EC81A8212C1E65605C85835CFAD8607C829786855636A660D6C3045FF17663DE465BF2B152879E2 -168: B40764D8F066C897C3A8FE54BF21DA294C6B3F1B35255F68C8AB325AB3B94EE8AE2E5173936C17FDC95C9B7C3D3D3A58 -169: EE7E424C550F79BA82043245C3B7D0AC32A41B876988C322B9997D87F0A0A1FB8263726B953B43B4616285A239994936 -170: 627DCEEACB27F39552AB683330A67A316B2F53842BCE8056FCF3988702955E3BA72FDEEAC2CDB53F13627858C1BBC51F -171: DD13F3B3E9C79958B20D1986650A79CEE1343F9957FBEEDE18B2FB5E543E3B8839EDF7A57EFD818129C4F00F505D2112 -172: 0A7061C0FBF1EE8CCB0F4A1D0DCAF2F200291AC06830F0E38D05E1CA2429A2BF57DE5BF8DED5A7CECC3A4748FBCB880E -173: 3635AEA9152337FBFA4C2824C5499B9F3FD32061297C4121FB0A44CDF5D3C8D4C6EFD760A0BF076DBD1801C416949A9C -174: F9C58AF2259C719B0B852FC68299AC9F17A802B49B34CBF5FBEB85DB3C68767CC34DAE2CCB536FF90BAE49FDDEC0CFE4 -175: 3541EB8602A4C84545F4476749EAD54E4542C4358CC78CA5B7C8B6BCD9E9A3E649CCB243FE0B3D02930CF1CB7A507FFD -176: 4AA26C2565531A52811D30A1C59152BDE4C61AE2CEAFEF9642E7076EC44C7EBD50F1D1853761B4097D985DFE6878A701 -177: 32F1DD0B4AF205B4891E2F43D772EB5E4A5EA3658106FDC8B8CEEBD2D502F8048B583610A419E1A60020C8C2A5A02FC8 -178: DA7403FE3C3D3139893522C5DC8E4F615D36A0F7B7B8AAF150D1337C8DFE70311544E54880D1C575D664E9AF979984D9 -179: 39F8450D4A946ABC6FCA804AE11935CDE846D999BCFF3091F1E6944EAEAD504F77139A919F915D34DACC13757CCE0157 -180: 45CC03085CC3278B8337096BEDFE6F1D645994690660F23A358C4EC728EBAFD6966C487B9492DE217C17823B16589852 -181: A2150F3BA3349E3AA0ED97B1A02A58F31EB5731012393EC68846D95465F3B787C272852B6945B1CC0FC2B3BE999E0E46 -182: BF9392B085B3C5FFBDE70A3FB64AAB36E39BDE4816F1C9B2A608269336906303F7DFC15F4701D3FAFA5D7A8BFE316A1B -183: 21BDA179D5B80FA6B9444AB1D1F7E06F89F670DA4A038E7E83E8A63CEDD44AB6C1D069D12C6F538B45022EF3160D396D -184: B4216CDE6BC1C27A5C1EA9AC79E85776740F93440AE438D4D9CF51BE8A83AD44565586FBFB58DD743782724A440218E8 -185: 5C3D5C00381BCCF77FC2103C262F373592FE34C2B2895F54BCFD1F9B3C87026288130822B2B451D716FA9D4D7FCC93F5 -186: B927E3777D4BE05FA85D0CB707FB00F08C576777840634531795CD3D6818F192789977AD6425018025E10F5892FFE708 -187: 9C6976E1EDFAEDC32378C8D2758D1B0C5B287C500442EC5D19560BC87C75FD2A7379A3E64ADC1421B7410D1ADD6456BB -188: 9C20482AB71BBD8E985D7891499DB526BCAAE11D2A42DD72FFED664D7BF7F254C2F8DDA2E340690FB83E1F5C58378B72 -189: 7899D5AF410188A3D0D0B12D52437313D786CE7959FC4D194D6A3ACA85729B60ABBDC58AC40731B9E833505156BEFE24 -190: 4F958FD1841D2B790A199EE3358F4DCEEC64CB34D0886EA91AA5E38F8600FBE13DEE4D6A55AC1273B3730CC62A3611B7 -191: 66572F61FE6C34B440AC00C8D3992B9CDE3FC465FCBB193CB7716B53E8032C743718D4F8245D94A22A9AE125795589E0 -192: E7AD49861960D1460A77F4F363341ADC2207E205302957250612C7E903802AF5C9423414C52F4C1AD55CC1C8B2922EF8 -193: 62BE3AA3A9D08CB41F2CA3ABCCB96E2E91A248E569FF58F58C8BECDDA5B4B25FF46BB30EB37999E6131D944CF3253302 -194: 3E082F7DBDF5BBA5F52CC870F2C6E9C63DFCD5D547B183F3FFBE392BF0A1F8F4970CA21E5B9B4306792C138D6B2056C3 -195: 5CC36277225DA2EDCC6CB603EDE9C629E5DA823E6D233AB7833F70FEA2878B2F8D08F361BD5B4C7609577329784D87DD -196: 9555EEEE1EE60EE981CED3FB6BF74699E5383436ACC283BDA0F9F6FFE20561ECE75ECE2C5A82C0A158C071A3BA59CF58 -197: 0B975D2ABD0551BA987680C4890F80DF93AF2292FDD1E47322560B0AD3BDD38A67D3A78497D78B3C38DA597846C5159D -198: 016CE0B8AD1628C7FBA358EEBB7C3667FA93566086B99F20EA6F87FBACB320E7BCEEBABF0008550A59AC1E6C3B4478DD -199: 3D138114480946A2AA1E2B78948B6BFEA95F53BD8BED81ECCE166062A67FD111933A696E6FFFBFCBDDF71041955C98A0 -200: 7EA4BB2534C67036F49DE7BEB5FE8A2478DF04FF3FEF40A9CD4923999A590E9912DF1297217CE1A021AA2FB1013498B8 -201: 80C399C975ADDAB12FA20B3C3D04F25218DFEB678B5A87F9963A462F5474732C7C5FAFE0EBBBAA94662789CC10C9AACB -202: C27E28A5B6C7BFBC7ED372B5BD2555EF1370FD96043753015B3FB9AF31D41E7189D4FA8860B183703560A298D90B6E75 -203: B792B021B3FA904B5948AFB4E56BD4C40119AC79E57EB24C32A7BF0A1A889313D816997E35F2CA192B34D2FF9B05ED9A -204: 7828C6235E2B8AC46E4BCD7F7C7554EA81B5BFC046133EEFA0C4E64AAAAD7115B04EE09E33CB4EA1FF476960C64D9A36 -205: 06678F9A2F238953A8D6646F859FCC3BB0C29BABA669D7F891142C2C3A0BAC1220200B4EFF8C17F5D79E261128C58248 -206: 0FD4448A47B6620FE90551A9AA06DD991AB13DBD2AF18A4F17AE4A9A24D9A83E7653D5F5A2C54633C42ACCB0E5915A35 -207: AABBB8857DE60BDBB21742DE7ACF7EB8D9180D5D0AED23B7F708F09006C6FC56CE85DB87D9642CB909038E70C15C1574 -208: E1BF933A4F32AF56C929911284F9B05B79F0216EF3A150483D74B2D4DCD78885190EB1601A320150C860168221C6BA49 -209: 9074B187372B0535738D4606AA0478BECB5251EAEC961699C2795FC028D641D60230532C8F6A096FEF419A46B0DB87FC -210: A63532A684A1851050E2861F7AB94296D131F768A94AB0019A941734E13842EBE8AB1F42DB4D0A84E261CB4707C74290 -211: DDFD64103308F0537ABD8D4F2209D8920CB42FA9ECBC93318D438C1493FE11B6134DDFF95DBE3FC6B8AA31F833E305A6 -212: 044ED56EF3129D29243665545A59FDC12412E137E1F55A543AACE511F9F86CD3202E3D24807B0FC878BA76223EDC6F42 -213: 2E470AB58A76690755AE6643D615039E767B84AE9E68480DD937913C44AC2350A27FDB45D6FADC242BD5F84809D59E2A -214: EC0ABAC477B5AD5F6B11DB4B699283FD4668D84C2BA7F8DF90A5BF83C0E1E224623F0D2BB3F2DC6EAAC5E41436035D58 -215: 9FEBB6C1604914837F6D00F9AE23A3459DEDCFD81EF755B96A3CC1F63E4CD2E67F5AC2605E594DCD2610F4962EA6C277 -216: 3873BF1A102F1609A624F1A096E420CC459C02590600808F7DA5E3FD49F5B491269C1116A2AC74185A3105B5E9606126 -217: CD7E8C16B59BCEE5888DC7FFC28E65B72570B26F3A0C85885BBCE81E5A6B63D781F953E497399DCB506E8C4F5E237169 -218: 3D24BC91A4932BF6D631EB7698549B03E7F3930662B8527EC122FC2C7AA41E330862102557F480273864FF9B06628BB2 -219: F0B21BC919A3C6089BE3CB7CE10B55D76E31552E759F0465086A89D1FA435E2671928AC329ED7B3D7C1D7121C158BABE -220: B32F9A1FD8A97E6E8E701371BF1A017078B26C3F4C58E342ED455B2557BDA16EAFAC00AEAC1ED7328C65D7C1E227FB83 -221: 5468F1B9192244C738EC20FA979F746CF6929FC48F69C79F43E46859AA022CC42E65203CE7CF77A039402093A1552EC0 -222: A58151FE3211C27651693B55E67CDE0E886BB0D8F2B6D9066615124CF1DA403DFA014C6F19C1B10DE7D3BBDBD0AB9880 -223: FE73FD3276463D27AE6A9F54877CD9BD3410C4A40381D25F5A915194538CA8C4F4B6154ECB9CE8B1B7E23953DC64F664 -224: 0D4EA680BA7CCBB9D88C09F6DAA6BC655BDB0B2A1C8C3DE0BE895328027794E223A45969AE594C7A21FABD5C92BA6530 -225: E6DC0E64DC804FEF91563B550A83BE7ABD50F51D3BFFA785A428EF9436775DD7E3A589793CB2717DC6BAD8B531CFC922 -226: DE168B8F03C0CE8143FD14BD2D294476FBE8DA85B09BF26C5D846E2D19957F87D6FE150B278EA4B3BCD36AE52D251FE5 -227: F34472A4DF2D3B529CE56E9D2A721A839DB05DB7B66BE8AB7202B024DEFD46ACF493973DD1FE88D8EF6E70673914DAA9 -228: 1F5E8FFB4678B3889E7FEB2288358A5F1377A97F76674A8D3E5EF39D185D02F6A1FB60E43BCC79C31E6974B37E74E50F -229: 190AFF1D363C413BEE16C78C544AFD20678C7B1141D3917B6942E4D1486EDBCEE90EDE8A50E441219ED3B11BEFA09F18 -230: 66BB67FC2BDC1D5E8E4366958804F459AA689E04D5FCAFA8CA222656D568B23E976086E2BBAD979EA0973AAA1FADEB8A -231: 0E14C70C02205AA29303D24D6491CC84B648EEB80AE9CC2A0997B7BB646ED32C69D2AE41C0DC007AFCEC514D7B04BCD6 -232: E38C413F3FC12764415F39A9F3638AA1204D3E818A43CF2EDD9F2CE01936D36C6720CF5BE8ABA362F92AEC81386A4800 -233: C3ED0B3697A84B388AA83DFF8EAA65F5BB12EF00315AD462F1F6D85D410D021BC32E77ADC763A254F7D9F1FB6EEEF1F3 -234: 8DC2C3F8C13C43709AAEBD408A679CEC524DA8C8F4157DA4BE551EFD687A395B33577728EB73EB498ECD0AD2487058E8 -235: 8AE817F2056903661E4EBF37D7293200D8BEE7AE0CADEA671E4987624A43712FD2C392E37C17D8E81EAEEBEE8E96653F -236: 9A622BC18F3A09C8BC1C8603B55260BADF32AE7ABD8DCB6CDD980C5E7A5B8A38C6D287A63FE88567BB9B0481743C06D9 -237: B74C6303DDF9F0AD7CBEE923F7F7F1C7FA52C84EF609F2BBCC07B9911C12F3D1A9BD818A9F36EBB40D4B400AA4D0FDC1 -238: 5B1AD3420ED592FA3D593435CA6EBC700583AC5E3CA2876887E5F190EC2109A1E6DD06AFC6C9D7ED0E8B0272B7F9114E -239: 2556CF077A788C49BB6D600F4A3CEE635C4443832D169F761537AFEE2980742B9F34AFBC87F598DD0AEDC4A826ED6A73 -240: D64769AD58F5A338669B935F3431E5BEF31667D0A2437BFF78F1E5275075F434FFF675F9833EA04AC4E5C2E2C2C99B8C -241: 3264CAD70D24B53CEC95269B980DAB85A30D24CF8BDBD68F0FF8A45C6208F05723A4B3270CD095FB8B2D9A4167FB3D3B -242: 4D564117E87700C69AFE5A4D90FF50DEF8A54A9BF19382E4290290D2BEE101355EBB2DFB2A9D6D044A6D12D6DDF7BDBE -243: 6AAD71FA5D5D7B63FEA64D94E211155B01F8C9E4B3D86C3B9C014CA4BB6C668037C4739A082F37B2EC5FF6D85F0A58FF -244: B36D529E55B5CF0FD3273F204F798E21DF533BE466AD1AF35EF80082132640493FD89A6CF41CA68AED066E93181A9EEA -245: 78814E883A27D6ED3A5B122260059CC00D31B8A0E933F3C377BB99EF33F47B13B6AD825B740784BEBDD9917879C2DAEF -246: A7978D0C79070B208F070241867476AE622EA887D26B0F6703FA8A455F411649D8919E6E12C540C59DF60CA9C05684CC -247: BDC3E02D31DB1EB7F04CD9FB8876AA9C7CB1852BD3BD62F56E062E216BE648A34FD327B84E3B6339F44697470711F661 -248: 9135E6D4B1E2356C3DE16A85E4AF57243CF6861DFB6C53CA13D9481371AEE285B75DCCAFC1A64499F1B2CBE4A3CD82C8 -249: D1F9BAA4007BAD437509DB6F6DCA22086CB786026553244A6F480C3A6488F7E26C416C6AE85874477BB5563BA0AECF2E -250: 49E5B7521794B6C73004BADF3D039F4185BE9BF8499FB08B9C8FDA2186B6C4BCD280AE2D2051C6775C19ECF1C776ACF6 -251: A7534C1716B59AB1C7AF3DF0AE32F22CD02A1823F61B318F36DFB536B8EF4515116A099F8DED19B00EE7B2D243539960 -252: 0F01FB323FADD9380A5E4EE6371E8BDF6FFB1F70C4D4A1B5E8BC9B281582AE0531AB354EA9F58A96568826F6172FC75C -253: 145C9D3926904D8418B75C8D645D43AF651684AE7FAD885AB46141B9EAD2D9727731F44D5AAA0204395E020D1B52DA96 -254: F663682EF7FA3F300DFF0B4D9C0D2D126F2BBC164F3B88C8A2207C3799464ED2086CDD324C1E88DAA6EF2D53CF7C190B -255: 98D7AC796C4CFB5D98A1C323656A4BE8AFAAAD168E5EE72B6B7A3FA3260461A043E27243120D41584B58F1AE4463121A -256: FFDAEBFF65ED05CF400F0221C4CCFB4B2104FB6A51F87E40BE6C4309386BFDEC2892E9179B34632331A59592737DB5C5 - -Hash: sha512 - 0: CF83E1357EEFB8BDF1542850D66D8007D620E4050B5715DC83F4A921D36CE9CE47D0D13C5D85F2B0FF8318D2877EEC2F63B931BD47417A81A538327AF927DA3E - 1: B8244D028981D693AF7B456AF8EFA4CAD63D282E19FF14942C246E50D9351D22704A802A71C3580B6370DE4CEB293C324A8423342557D4E5C38438F0E36910EE - 2: 80536C6170DD8626DC081AF148D39EC2FD5D090CC578A76647E7903FD34BD02E4333ECE57B0E24FF116F43429B6FF541834BD40EF0C8D3563ACEF5ED0FD254B8 - 3: 8081DA5F9C1E3D0E1AA16F604D5E5064543CFF5D7BACE2BB312252461E151B3FE0F034EA8DC1DACFF3361A892D625FBE1B614CDA265F87A473C24B0FA1D91DFD - 4: 4EC54B09E2B209DDB9A678522BB451740C513F488CB27A0883630718571745141920036AEBDB78C0B4CD783A4A6EECC937A40C6104E427512D709A634B412F60 - 5: B7B70A0B14D7FA213C6CCD3CBFFC8BB8F8E11A85F1113B0EB26A00208F2B9B3A1DD4AAF39962861E16AB062274342A1CE1F9DBA3654F36FC338245589F296C28 - 6: 2F3831BCCC94CF061BCFA5F8C23C1429D26E3BC6B76EDAD93D9025CB91C903AF6CF9C935DC37193C04C2C66E7D9DE17C358284418218AFEA2160147AAA912F4C - 7: B7C0B47F42F7202BF7D28D6834BEE365FC01CE3F0C8C8DF24B4D940406C2E9C230BA88854E946EBCD786C18C748969FDF012362B7C96400604B6058950FEAAD4 - 8: 8A414C5860CF1BE7BC8531442F69A65EF2ECF0B7CAD9994BCB407097EB74CCB92E93AABD24BDE60331123B4D900684CA7BE6027099D4946BF537F4D6C6DF3D82 - 9: 8B5E5E7FB6530CCE1BFFFD1B1AA338D3282E8483319BF028BB674BB6AEB8200DA389647E3D8631503DC5C487BBFA7D074584493615B036849E0242610EA4758F - 10: 0F89EE1FCB7B0A4F7809D1267A029719004C5A5E5EC323A7C3523A20974F9A3F202F56FADBA4CD9E8D654AB9F2E96DC5C795EA176FA20EDE8D854C342F903533 - 11: 8FFAEE0CCCC162851FAF051AE38667EEFD423C0164C50055F8ADE00AFC3705E3CDEB9900004B0E426CA66AB63AA3B99B075273F44FD37C22A3555C6FD1F37CCB - 12: BA51B2A9DA2F26FE81FC3EE11524255937EC6BEC48835EB437C598C55674E15AA50F88922DE7584332A5E4D24787090CB14DFC3ABDB39C55AEDF6EE108F95354 - 13: B6E30A4016029486F9205C5D141344F885B3DE2468EDFB0B870545F1775CE82597C2A40462F385C957790C20822D9E920EF1AE230878D6B23F221B0182879CCC - 14: 79D76024A31CDBE54CA951D264C46E78F6F5AC5DCD018BAF89AA586333BE82B2D5CA2BC64B99CA2A99D95A984F2DC0D6C07E7C96059DD346BB3296ADE3AA33C0 - 15: 4236736D08F26244E75B51614091CC2C2907D5DD162F8497B14D58D0D954A777C8397549BEE468F30E480252D9B893175DF7D2BF415A128CCC79407D9D5FA536 - 16: DAA295BEED4E2EE94C24015B56AF626B4F21EF9F44F2B3D40FC41C90900A6BF1B4867C43C57CDA54D1B6FD4869B3F23CED5E0BA3C05D0B1680DF4EC7D0762403 - 17: 7B9AE840AAB8BEE45B038CE398D15A8679DB92D0BA46FA67D1B8177986E41EACDE915C6552FC2AF8678425B8BE81B57E0F7EEADCC93B56C58DFC38B4D33BF25D - 18: 0EF6A8C19E19A466DBA3139E2A401175BEB9EE01FB56A8FC11A3E53B345F2327959F6DAACF0CE6121987D2491251DCF550C95F6026F93A1D96A0F4164CB1C642 - 19: D6221AACC88CE14EB7DE0F15F2260EBF4294D9AC3D75B87465EF7AF9570C959077860EBBC5C8153000507CE1E39AED5D007F2286210EFFD26A118966ED15C143 - 20: C9AC4561A7503FAB9C6B71C843AF6911438550BCDF4881EEC18DDA06E4D8B820CCA9521DFA9EF47298CCF6308FE4C4F2F5E34DFEC2ACB78FBDC04D2EF0A5A09E - 21: 73C5D58B05E1E6FCE4299F8D9294681416BC3785F51E402DCEDC0E30C0671DD48321A0248CCC13389A012B52513F1B5BBF820E91EB4F616928183485B4F1EB22 - 22: AB1725C57427DDF93B34AAC62C26F3FF1E49CAD30DD41AE7B5FCE23894245E7E889E0FCA5EC076F247DC7E929D72FB965B45688E57D8CD54212714A17480BE0E - 23: 456F6757A82F0589040996BF88F28E61317C358135A9AB6E96E22F5CA68E2A6438D13D176B01157ACA1FEEDCE3C1A6D5C3A9B1D5A471691917392FB94D0834F7 - 24: 5330241E6F01A49B21AB0D01A9C76AD662E97A325BF8E24C4EB82C6F3B7D2538ADD98F62307F36F900F3934861B80FC9844B761BE15460A1B102C26CF0410E83 - 25: D8DDA603DC21C20A6DD3C6A4F380C297679F035D27BBA82554D02E1F95ECA2EB20496164F96DC4B84B9BB0942B96A3796AFF6125BB9E8711E2674B440176E91A - 26: 81E5A3AF460DD2881353D006AF37478C58AFFF16022441226FB04439783DA920D09FD03E19F45BC82F82735FBF4F2E5F588F11AFDB87B69DB91123CBF05F7F2F - 27: 25AECF7D241EE54E668DDD345582DB777F9F631B9D2432CE4D32119BEA3968D9FA3E184B135364DF62247AB74BA7B86AC3542F63D9F18653D86B9B47944AB96A - 28: 8A372F722A922E29CF5CB22BDABC6D284364F376DA355CA65BE36DAE2FA6F0335744CEFA9089DE55D331AE64E9B2F1037E73608B03B978758A20A012924AB235 - 29: D57C54ABB87AD2D518790B81230DA336F551A0D89A57D0A3CFE2F4ACC55B4B210261CD1482BC436F62D3FC96D1536B82A2E93E9A3DB5CD0F1822EEACF307460C - 30: 6092F1E76F04A5926F6FCD149B18DC9DBE8581BDE6D2A1468145280463472B636C711FF61F5CCA84FD2F044697BD1DD18340B3ED0A131F4BBA35F839A2DD9E0B - 31: 0674A3CDF5F7C18C1B7524C87C36037F3D0267512D11E052F453DBC097CFD52BC331950880CF904656C70758B2E25E21FE2C7E0462E861112A2DC9D0636BBAFC - 32: 3D94EEA49C580AEF816935762BE049559D6D1440DEDE12E6A125F1841FFF8E6FA9D71862A3E5746B571BE3D187B0041046F52EBD850C7CBD5FDE8EE38473B649 - 33: 301F1CD7B25B097AE4C79A97E92BCE359D1289F6754E76B71E7617A06E7783A3CC30F5290209BDA3E6AF239D0DC0F3D1CD4C5E866F4C5C3209EABBD7AAFB8058 - 34: A8C7114B292CC6F46D73824CB073CAEB23EB1ED5EBB37F064A0A76AD452D936D1DF41433FFA337C3F7CD53F5CC00658ED0633252B69DE192E61D9F002B0F133D - 35: D2F92068E07C9AD0572693CF546FE75070E574807C02F5483A31B8CB2105CA55CC6AADAAFE74977F581CE90F43E2AB48260BD7E273D4A83C442EC4871CD88AAC - 36: 1A4133CDFA6CC518387D392814029744D6FA71122EBDFB70059512B89469CDB9D9B5E45900E99E67DBA54B4708036298A94835751EF583149F06AB272B2BA355 - 37: D30DE790B4905717C956A95F60D9ED5948F9E509BA27607E1C5C8FFE35ACD83F719AE04D63364C0BCB72BA529AC79C321ADDFBF7AECF7CA3CAC840A372E6F6CB - 38: A25F5D4BFFBC5F0E3D5CACC3A91870866D8C2D22573556C9B9FA0D24E1D68C55EB42726B1895DF8E5E870DA33755DDBBAC130AF2D96D84DD0D57761D25FDB64F - 39: F44001A74D0B087AF2A143B778DCDEC1554BCE5992C9672E3D0F6704D022CA1E78F087543569CB99D249B820E683138A2DDC5DC178D585167FDD269D17396A89 - 40: 692F36EB114060FD04CD38555025251DF985DDF681A0636FBD290EFEA6FCAC5226859373F3E10E8CB07AB5343547EB0A543C18420D70527D2BBD90040F8DAA52 - 41: 4B1CEF875A025624398CD06DB876EF9AB34FDB1B6A75A07CCB591D9B20EA66E24BAF323911B5CE8B67904945A36C28630B36129939D23D26218610CB049D7AED - 42: DB3E80F11517AB797265829371F245A7A0A384E36A8D43E72852C8D47F8CE37A178475EEF44CE8BDEE5AB054F47EED502E76D49B9F4A5AA392077ED1E6F43EC1 - 43: BD08551AEA7759911B37E9D45748219B47C4EC17A2D2A306D9B8FDF982A9E3106BDC1ACF3F47D383B6D16E85910BBA08128E35EE578E7C55F2E9B9B59F611298 - 44: 3BD8A709DB9A4E0B874B113564B11EAF8270AD1DA3A9236DBB16F58F43285070344962394C2231B3917401924A3F688150B9A9ED3B410547DE3F56450739592C - 45: D0206C8577202C617592B47AE178DA867AC7DAAE4E65B912C771C5FB09585FBD10C36782064E83ACE749BE27045508D544532B628F67DF00A6B7DBA9775D3E06 - 46: 745083E5994158A0FEE4D849012F43A822D19F068AFB327B372A7A8BFE8347E579DD29424EC95319BF75A24B4DB4280D9C16CEBFF5D930D61D34909061A478AE - 47: 3527A5E1E5E5953EC57F309C6513C34405531603372BA0DFD5725E68B9510E5090CC6B317B2E7359D2ABD5ADD353AE1435B85535EB5B0B8F2E09D4DD1BAF3C8B - 48: 622BE417916F1B0E9CE8C952171B11B6D2E2932D6197CC17431B9FFDF03FD0ADB69B08DEDAEBDD0F94812BC2C670C894D65165B31D2F2879532F2C14453E6A0E - 49: C2EBDADE0368F1DEBE44F8E1B77E66BC1C25E7F0FCED7784D615811E2C01192DBC21253E10709D0BEEE746DE6EF93CF65AA39BA29551E11F602ADDD27B196019 - 50: 5ACE0640F0DCB25871E1925F96BAB48162D692BA134C9C7052A37FDFA4895B90AC56C7FB0E7FAF155D147A467839500D980E9D4ED1CC96661177ACF0BA8D4167 - 51: 5D43600C04E52BF6524CDCB9DAD89B1C7563912E7C7E2CA3D34B27B3C1D07D85D35EBB7A65AF0434155AFA3102A580AD557468CC23EEA1E151BFD4EA817FC5B2 - 52: 38D7538AC3E51DDFB6724F57B29A5E46D15A8C08FB29D15FB0681A4315B03FD6747B85D0EB2B9E5FCEC709F365DE08D61A1EB363094BF292B5154671D15D61DA - 53: 2DCE13E5882A31F7396D970AE72E89FB59270D78BF7B4579D0855C4E8BA231D23E5566B77E79CCDC1146762DAAA74F49D82F9EFC0D4FCA891E78F9FF86C61300 - 54: 6D7644DB575C5C238DA02CC4259996CF163A3A3B5ECCC4FC62442DDF01AA05EF0C4EDBE3E6D220DF189C984AA55726A4922EFE004832F2D8887F0B8A9267DB40 - 55: 6856647F269C2EE3D8128F0B25427659D880641EF343300DD3CD4679168F58D6527FDA70B4EBC854E2065E172B7D58C1536992C0810599259BA84A2B40C65414 - 56: 8B12B2F6FE400A51D29656E2B8C42A1BBFE6FCF3E425DA430DB05D1A2DDA14790DEE20FA8B22D8762AFFFE4988A5C98A4430D22A17E41E23D90FA61AB75671A9 - 57: 92CB9F2E4EEE07C7B32B06CF4917FBE54365F55247CC9B5BC4478D9FADA52B07D1C302B3959D0CA9A75A629653EA7C245A8FBBA2A265CDA4EA70AC5A860A6F3D - 58: 23417F93C499DF9EAAF1BFD6A62AADBC711BFE56682943DE5D94E0DAC32F732B763BE28C32AD5F01CB95E5B322AEFF8494B111D7CD8BAB50E7C602695EA6FE42 - 59: 4ADFA8837BB499605D38716F8305FD50255DEA2EC4BF3EEB07560B3C93B5E3725C5A598277A32502CD5C8AF6C88D55756DEB03B69CFC278FFE2BFB3CA202B0F6 - 60: 981A245B249111B4CDCD565AE60C9DEB69FDB552B10C932E8D0635685904203C37CC65D674292405DF24A589682B8AA69BD0E16F666652290BD79AC10E3A9B37 - 61: 15DDF1E434A88F27DEDB8435ED837FE4F1F3BFC5B6FD387A98E93D1C83493D326467C7C53EFEEF158F6B9CC2081267D9761A32A5094399754C0FD62F4C72371A - 62: E08026874830E0B911F5CC51B81599A4DC21204F5C9381CB5A0DA8F452EE99D9FF7590B798805C2743822572E6D2E47C2C1F2D428EF3C28D05297BEDC5CAC4EF - 63: 9DC9C5598E55DC42955695320839788E353F1D7F6BA74DF74C80A8A52F463C0697F57F68835D1418F4CE9B6530CD79BD0F4C6F7E13C93FEB1218C0B65C2C0561 - 64: EE4320EBAF3FDB4F2C832B137200C08E235E0FA7BBD0EB1740C7063BA8A0D151DA77E003398E1714A955D475B05E3E950B639503B452EC185DE4229BC4873949 - 65: 02856CEF735F9ACEC6B9E33F0FBC8F9804D2AA54187F382B8AE842E5D3696C07459AAD2A5AED25EA5E117EB1C7BA35DA6A7A8ADCE9E6AFE3AD79E9FA42D5BBA8 - 66: 371DDB96ED5BE6521379457AE8ADD707A866732B629EE00074904D73858F3FAE827D84E503F3779073490B274E29D644D76154FAB18945222289BCA798BA6438 - 67: 96A693A22256D39A0596802319CB7AF997DB4BFE311577E38F8423DE81C567A96775D063471438F0982EFAA6B75B4AB173D9D3B3D4762030B522FA70DCF3B27A - 68: 7D8AB6155AB31F29740042D82788A69E880FC642E600BEDFC89098B9D2F4F98BC11141FD420870958810295100DE66F50C96E1E4F6489DE98F9BF2D4A9AA2237 - 69: CE561F8F679B4EEB1DC97DB0F72632B9DA1C5B5C0292CBF0662CAD981374BF8C9A0BE1355657FB18196F980E6685D52FE601DD45C6B0FBDE7AA5C9D52E7E5973 - 70: 10164CFD162CABC44C56D76D369096D759954074B0547FA7310C3388F0FB6BB2AA295FAF1E22C44CF59959A37EFE317698BC29AA718D57EBC831A14144F4E48F - 71: 658B337A8FA873C73AE4D19992BBAAD10E1325AFB4DC8B5733F870761429B4243A7982AB375E529C1FBE6339A48F9FB9E8FD6A568F9CAFE640E102B9F398A330 - 72: 4EBDFA0E60E1A3E7FEFB8DB424A5C3A52365F325EC7F51389A4955EE3453BBFC94692DEAC3FF6A4E94105C27D632DF26250FF37314C882FDEB65D53534F8A961 - 73: DFE9D2A6B0AD5DA802D695B3B91745852C97B0283D9A033F04D79D2CAD4FDE50048AC7D82BCF8C402B109E785D39FC9FA0203F7CFC620EE43577688BCF3E69BF - 74: F21869E1EAC3774F3878570AF0DB9A94F464373C1A92E097D180A331C9028A18A68BF4624D8E620B2216B03709F03FB6CD10004F77433ED605B0F771161145C5 - 75: F1F928D322E6852301AD6FC901E91F2156A3CEEFA204044DDA3B4B76A63692DAAC479FFC6D83EEE3BE028A1F651D3520758DD395A1B251E6C261B7CCE86D0481 - 76: 37954BB11B0AAA67F803973DDD2709A73B947D0A5FF8DC46C2D3C6918C87069AD0DF907589F3026A94B071E0F00230F00CF74AFE8010C24E489CC8AF9B8BD646 - 77: 140DB04BF46A194E44F07F6ACEE8326573AA0591F8370A79DF320093C45764A2ABAE531E5A742F496544657FADFEDB7F04D4BD74C347AAE237B5EE59921BA87D - 78: 6D0D30BE796B6E1039739BF24CE26D8DB954D25813F8D7F7444617816F93FC7488B71C69D96D77C65007EF6A2BA313AE0739302395F3D9EAB0244E372AB96961 - 79: 2B92E0D915BC7D56215651BC9F769544C55E2A27080EE726AB14FAC0A43AC51CD378EEA356DFA70EEC3C9146E08E98358C61FFFA3D477CCAC35FD6724A44C23C - 80: 2CED9E743D84F8EC5664A99C6DE2238464E61129B3C856A7FD2CE08B185F4D447A829F287870AC5428114A7234E41A78801C19EA5C6246FEFF961DC6A9B55835 - 81: 4462303D052C70DE76296234B72BFF1AF173E7B63D1CC0E26C518D103BF3BA78D9AF4BA88013192CBADAD83801B8FC29D0838A144AA3CB721AC859EEABF019C0 - 82: 880FEF79B74C109F030F3FA6FCB82DCA034528CCA68A23ED1EE4133C10B3E443434A37C436F079F3F3A922A8547549A39854120723791519DBC166936C239AA3 - 83: 12DE996C9DCE152C83BE6C0E69C66633FC4244B412066A5FE7CEAE27BD4A109FEC95332C60E87DF08A1C714D9D2ECF28A8A81F1CDF8BB3CD2CEF71011BF5A5DC - 84: 748405D18FC05F0AF7F61E0CCDDEFD8055D86826038C77F2AB230F7D97C89D0EF09CE82C4352A7491729C9FD704B279449D0DD7D86CD2FA52EB3B5A582DC2057 - 85: 746653CDC44B4C86B29DE5B28254BE9198C0271249F0690615B05F23AC0456DD66CDDD13D2F22924DF530C78FDFD3699E38E29A550E2739A803FD1FFBEB29E59 - 86: CED0B3E4011A6DA0415C51E37996EBBC5041861FD1584E3D948E1D4DBD7F8673EF93910A10797490DD5C62245EE7EC03D7CE8B8C38FAE21EFAC1AE6056AED143 - 87: FD4BE7DCAC6984196FABA1D88D0FFA9F33CAA29FBAB3E38CD3DDA7FBD94866C944F91B405B3EC613044E4AF11BE7187B15D5AFB4067C54FA09215C3BAC4FF080 - 88: 46836D5A579D5158B9F49D6EBE9A43C9F4A55C768869C3D542BB615FDBAEC8DD34FFCC40288567F8C5E9363852EFF44FEF0EFC0904BE178D3F78EA1B61B9E98A - 89: C05B8745D68BB9647E411E5AA1F924C2C9B96E7DDE71D190A3B8709ACC2856ABFF3C2DBD7093B25F81C6B9883D377E721968632FA4D566F7F72E1109BDEF2D74 - 90: 647A0E15CC4BB5EB3333919CC828D68C5352F1FCACE6964F23FCEB46D0D2408AE896D3319B202EC687F3F9E55126C05705FDB909CD8CAC88304A61B69ABCF65C - 91: 2DD1C321E3CFB58C2E883F5DC3D87F01936ABAB3F1F27648B6AE563333E3852BCCBBCBF4822230E8F0A0DFE32AB6D8DE92A2B8B2271E17DEBEEBF00D83046B75 - 92: 38122D8324807E25DC8A74012CA9C0292222604303CE8B66D7329FEA394D85B7BFBE0F656895EBFD26BD60A3B553A6E3E4003276157B31B3A47779E1633D89D9 - 93: 27FFBA5DD09485E141B659E218D2924AB0392163CDE296D4109F3AEFCDB02241CF0952F0A38E2680D5CFA35363391A324E12519B58C04E8ADF0E9C7A8B6E1712 - 94: 69DA55F3BDBB1C7397CB382B7E8075F615794F6F8453313C0933D33656A3BAB07C42FF977850625B11CA302494497B0EF3A51F3D2EC2E4AECD24BBBC661C6513 - 95: EE1270F6FE6223C19AD4814F0549B54C11AE7B43A8F3418B0F7BAC42BB5B093024DD4F3AB0C9AF5FD2025D50D5B8DC3505D8F754F98AC3237344A7C14FA50815 - 96: AD8ED48E056378B1AFCDC0B3D5D3936AC825F96ABE0953E9BB85B00EC16084A4F0BF12A2B0B73F0A29ECB9841A1DC7F003456016203E891ABA1BEE13FFD19BF0 - 97: F6EB6972CB5FB156FA20A93D8695AE1D9DA8BBDECCADBA81123E7ECBE917596B51E4A6CF9E1458D882B76B33AEA8F3286CC7CA1085F09EB3DB9B9263095339A5 - 98: 40C54D468FE760A7094726B9EF12A98A1F0FE5E7112137ECFB3A88DB04B0758EC581603EFDE3610B1D76AA879EC31933CB6AAFA2DFC559C59BA31425B091FFB1 - 99: DD0324C4DCFF798F024A32A13063A05AF673CB5F8F03E08A0D931406C868A86B5071BA711F6DA80D7FD2F7D3CEE1B7DC12EA456A1EBE4CBCB25ABFB27492390E -100: AF216A7122D29D6A7DC7B89C8B41C111E7C9A00781D4A867A1D75110B48A5A9C92A15D1DC2AEABB53B83BCFFC50F44CFDCAE29DC9984C8C84FEBD0189322BE25 -101: 1FD96E1905B024D5FA883B3BF76C00A0235EE6386EABAE4D9602B5C5E5EA81FE3A1DD0D81BFB0F904ABD4DA7FC71EF7A2BBD0DC6A766902021CEB03D2578B204 -102: 31B75B047B1214B915EC56983E284D14C214D567F149EB467A1A324080AA0D80264ED771E2F91104B2642E9A8312C0C001652CF4E55308A870A77ACFA088D7C0 -103: 59B8D11078C8B65C5DF4F39D1C532BDB9C6E8F2EF121B97DC5BBC29CAF76774A7DDCDCE0F3BCCFFD4779E57D9B23102EF596B8B940480079355CDCF7EC52D47C -104: 3F1702458BA7F28460E84A032BA160430126221AB5320AE028387B60AC53DEBC42FD169A23714AAC3009D52BF9F9485C0878C06A98BB42D1568E7D038234AD23 -105: C8DA7ABB93D370CE8BA6F2B58F91ABBF1302F96799544CCABF52D5D1EAC3318AD4EC853EDC99CF86DF9341D6D794B57B68CD1FBC5E37C03AA10297F9828D5D0B -106: E1680FAF315911FB7588AA2F02D5F96A3FB02F60DC3C93117B97E4F00E2CE6862DB06117A6627B14B11B9E4C61BBEEF09134E1684599A370C61721A3B086942B -107: BAEE728FD37CBE1DAB3FD5A922E58111BFBA9BB47E107909FBDEECCB1812DE27D2D87003FC6F9F67977ED592EBFC734470CD1E907858F555F21EAFD6E64F060D -108: 891AFA38F3094E487BADAEBA012F11D3109EF19B858394EECA4C7F0C2E8FFBB3B88A7105C7D73E7252E67BBA518ABB6A312A7B8A11742D31BF53267CF3B09E5B -109: 6E6E3BE3956224A97F813DE55B3594EC5E2F4A43BAB873D902025699AE58FB43DB71DE1DC159E83F7A7EFFC19CA5A03C1EFFD27B026EE9AAAD92D1D58104D3DC -110: 51F2BA331C24541EFEC042CC66398D388348C4FEDC3F77A4DDFDA39752AE2880C68E0465C15B07ABFD93E16BA635AE7CA7D7E144018ADE57607DE8643992F50B -111: A1A111449B198D9B1F538BAD7F3FC1022B3A5B1A5E90A0BC860DE8512746CBC31599E6C834DE3A3235327AF0B51FF57BF7ACF1974A73014D9C3953812EDC7C8D -112: C5FBD731D19D2AE1180F001BE72C2C1AABA1D7B094B3748880E24593B8E117A750E11C1BD867CC2F96DACE8C8B74ABD2D5C4F236BE444E77D30D1916174070B9 -113: 61B2E77DB697DFE5571FFF3ED06BD60C41E1E7B7C08A80DE01CB16526D9A9A52D690DFBE792278A60F6E2B4C57A97C729773F26E258D2393890C985D645F6715 -114: C02CCA2EE8BED9B4AC74438D4E8B39619347922DDA5CAD2BC3EB9E4CFD4FAF7CC7EB9F6B21ECCA2C55CB60D11EC450390EBCFBA18312E49598D2BC52020DA9F4 -115: E528ABD6C315EADE09A981E4861F6148C9DD4F2FCE0EA54CD3E9796F17033A3751FE9A223AA23CDE0E051A10C2BC27C0298BE97CB87C7110667A115B6D30657C -116: 1B0BF23602D272A06BEC3E86FC675E16DFB067B2AB662181315C45733D191137454BA22713B51478B096DC51D3FC7E9730504324655AE8B7BDFC184118933D36 -117: 12D5EBC3016C77ADCD01F1DE3F792C4230DE67C0B50102E03FBF3B6B80BF913CB66C3E72530C644719003DB2FCB15196803812D89761E0B781E8AFED7268A35D -118: A3527C4E62349394274FB15B30BD95FAC27472E1E521514775D2E667A5480C5367DA6EE526AAC8D0D1226C33EDA1358091C93EC6B1B8464739D25AC4795EF175 -119: 43E497279C2CE805903A33B54B746EA92D607F7C4807986C849823B81097A9099B5896AC7CC66DF3A93EDC8A91B6F3971D6C7F5688DAF635737760BD080E27B3 -120: 9636708964C5FF6600510319E07BF3FCFCB1F4058FEC278EFB677964BA1E140C1632505452F802E99BCF09DA3D456DC3868D149A0788A730E49D239CE7415145 -121: D5D17F592D401CB111FA7C34CF5035BC08EF6B2E0D3E64DDAB08430DEEFC8B9C09C20EB4E8F98D8EBCAC6F09AA2C1DBB7C1B3B2EFE792377CA6600F703643700 -122: 0EA053BBE2E72264AE4F54512C621C733120F777D3CF8FCD8A7CC1ABCAECFB9BE93EE821A15D19467D249A27961E474ABFC433B8C7132321198789D5C2A50896 -123: C64291C217E37E754F6F57C1316FCD8A7C2AC2426E86786FFB69797C0645848CAC41DE345FF90B72FCDE918B7CFAEA4D661687E6F737A088E9296EEF4C3B4F31 -124: DEF8A3CD4921127815F4D1650FBF8B3EF16EF724A38045133749B7359FA68BDE3EEBC9CB5190FB6720EE3D24473286FC046DE0646C6C0042EA1968B48FB6BFBD -125: 6F3581DF30AF789E44C7459356E1C248749B4A5A389759DFF37826BD278D293BA2264BB808A71C453E22A2962DD33A9C03338AD060B3783713EBA8CC8B43E2C2 -126: 2681BF910DDFA680B7204037294D00D0FCAEE84A3747F6E302A16704B3B08EFBDA0E57DBB8E61E92348C8D5FC5A59EAB74C77949A74C7740C30412A9FC65BF34 -127: EAB89674FEAA34E27AEBEEFF3C0A4D70070BB872D5E9F186CF1DBBDEE517B6E35724D629FF025A5B07185E911ADA7E3C8ACF830AA0E4F71777BD2D44F504F7F0 -128: 1DFFD5E3ADB71D45D2245939665521AE001A317A03720A45732BA1900CA3B8351FC5C9B4CA513EBA6F80BC7B1D1FDAD4ABD13491CB824D61B08D8C0E1561B3F7 -129: 1D9DA57FBBDAB09AFB3506AB2D223D06109D65C1C8AD197F50138F714BC4C3F2FE5787922639C680ACAD1C651F955990425954CE2CBA0C5CC83F2667D878EB0F -130: 90272B89212C81B9700897F611F13AC1D291C33A437000C1423336B4D962DD39CE23413160F023963E12F4CCF90D2762B31BFC6818EF865E8A7CBF918A94C1DB -131: 325638D30C9F63D7CDBAA689B7AF8D23826BFE8593B361C7042D3293926146C65C2D6092F20DB5068262359860B3E3D502B6034B9EC8E7253A1FBE4B2007B77C -132: A3FEEC20C69CDAF1936795AEB9052DC525A26F5559045FE458D4B24697E260BDAA45BE8C940A06AE39FDC1F9365F32BAD7DE824FE7722A444E469C7BC198B7C1 -133: 3F80B7BFBFC9D45073FDC2ED93F7C19F01E4D49CB912BD2568F248561F9C9ED1B6762270033D9F421C977F8BB8B4A73F9A99D580C0245DD4F64AD35D68C9847E -134: C292EF04844CD7C3E477C2C2FDDEF46FCEF97E5DEA7955FD4F418C7B4114BA0CA2CA230D0F73A585EAAAEA9277D72B83DB74AC5E887439A225C105B0BFB5A38D -135: 9F0DDAB7986DA54E65EF6B536BB4F7BFF468E0F310803DE28D3908492343E4CAA855B8CAC7409E3A8928E63B9C5D1CAEA7A408ED061809DBAE1AB1A67BA1B926 -136: C58867D309CA48AF74B4D7E49ECED514C89FD433F9DD842F9B50FFAA6C7810BEF35348D00D26DCBE28122BA1CE33D4CD00D09BA76F982A598B8F65790368AE59 -137: C8B1D6B4778932BC21EDDBBE4E48F7711D7E97ED5354DCF11BE98E3110510FB007948C288FD2F7AA71B2E41C86330DBBCA2ED472D15B444828C6DF4282815879 -138: F1C0C057C974E4C27E497EEF52A02963D5957EA02C7E1CFE06423048799AAF74475732A7352220A914BF32EBA6A0B6FF28C77D25CC3CA1AFBDA89870F4EB55D7 -139: 092E121F2C7A2621AA36AA9B040EFE4435DD649E3F336BA82788D57B9B164184F5B5BA644DB4076B46FF9F3A6B9F58D775CE94FEB648A372D960471A663B74E1 -140: 406A5382E9A563E60FDE5CC47F52C6DB86CEE271BD3974AC6E274A1B8C5A7EB369A9B7CD312C301F891D4E3A601A80B9CA06303C53CABD5D3B7834DBC5108470 -141: B2D3EFC2390CF7A1093B93C52B76D0DD74BC277F3D67A85F41635F89E923AEBC960B2BDF8A13860CF3083AC3FBA13D4FE5E426F144FC988554E89ED7A0324748 -142: F1F7100636AEEEC8AE93A2CAF1F4852F192E1EC1AF13697765CACE58FB40B9D9AFC3BBE7E52EDCE649F53C1BAF653CA20E75D3E4AD549D05EB33A68DD11E1898 -143: DB604416DFD0A7DC509DBD2C83D5FEDE5E31D641EE6C14390CF599CDC7D841660AC700D3DE4BE35E07006B724B7DD1BAA21EFC3CA6D346B3B858384FF691F913 -144: 87AE00E496649511C3BF947A65805ADB5D237AE8486CBFF01EBE52D5D5062A99DB3434EC22A37DFDB4CBA1A59AF1FA5825EE3DB2A8524BDEAE07F3264989B85A -145: F442BB697D498F2026FA2A5FFFF9AC5ACA0052F6D200E10805104D91BDFC71A3764CE0277009229B9E7C945222BD7C9085163987E4CED02ACC7420A96B0F9587 -146: 1061588877909CAABFA37D4915EEBD6E517B8D3EFD5660F872019050B3C1465F11FC9B44E72610219F3F5F21772933F101D9D58B5C5F79FD7457F95749BF11D5 -147: FBB4C9BD6821A04CF154DCC7A7507A2C655739F3636B69E8183418E2C33D951DE6BFDF2C3CA603694C44DE44057665EA4835281A2773CB8A84965BE02DF1F3E2 -148: 08D54B05F901FE95EA5B56BA19DF9120C66AD004F98BF8FCBDA9DA0874E64978EFC34877B8224A024DE12D7B926B5D83068E8A704EEF0F738A5061E5F8462F54 -149: B79F53A5117503B5A0316F801B8D448079F38CB90CC39BAFD4DFE169E3C931D622AF7E26835C9AD4DB25C0D6A684E7DAC4B88B475663E05601A99EE9FC8922EC -150: 2209CF6BA43F61D7E579651EBBA0890686A9CDC1E045255494DB0BC732C9512ACBF72158D5738FF63B500AADCCBA000D25A521D41AB4EE6D92D38E8077B79C07 -151: 8236F7CFFA68B49BE5C38A7A1BB67B745430D1511A08EF347383C32AAE1EF4AB2E7F63A20C9D8E5CF2198B32B7BC79B470D36BDF12E7263D669FA4AB8605B75F -152: 228BEFE5788090066D493CF87F75C666BC3C75E0B7BC63E80D38340CF9176251C6E185992B244D4A5B1CECFA42128DAE6EC3ED535AFF039769E364048C442DCF -153: 59171D498BF80731E2E35D0A32DA356419E69B8BAA5B1195D690CD8A5B11542087A007D8DE3FD000BFB03A0408C08E92A0C7712924373FD67A65218E4A4E0F68 -154: 4F94A8F6A136E49069C88DFDEA9361B34D68FFC25724F836CCB021BDB74E0AEE9DDFE80B938A5C12B01F0F1CC49C500FE7709C2090F809D9E0256FC93D93122F -155: DE5E17A668F75866262BBB2089C9DD86775100C77974161DF46BE02A9578855E7C81C77263105C473FD1A2D55483063970C0F643CB25AA4B4AB45A40888F61FB -156: 3314001C825DFD2CD1CE08C746F0BE5C451027F0FAA401431AC84FAEA51553EFD9E0646FB7E9B94CBC672DC98FE9870467C176AA648EC72BF61334B13E479E4E -157: 3EE80B1422E3572B46F7CE5841998BD2B6DF3B591FB5E46851B4D54BF572A17DB5963A04EC6AB98BA07C943475AC088B4D201AFD684F30F45C8037400A7C9510 -158: 3743FE18BD6AEF36887EAB7BEBCE36D5D3B69DFC306B58B1E8C6241E81A9D38425BA991A29C3B07D4F4B9C5CC762B2563C9E5A05B199CEA5833D9FA0062D161A -159: 7F9F71B086CC6D6B63052767CCD6D0349C076289F63483241CE105076B7549B3187897D45D7B5FB2147E54F056530347A1F9265E6F37953B5941272A29E2FAC6 -160: E09CBBFD3DDBB24755CBE8E51C8BFF1BFF36E571EE72E6C99DDA6D507AFE3C562D437E8612B50859AD5CD608424DBE625E0162E6CB7B838F20E7B2F93F40ED91 -161: 2E2F91BD5FEB5C79E98ED97C513E17D2D97B02A844780A0190264773C3040A2CF07FCB0E6424B7A0E88C221BA3824C1906FC1647AB40DC13E2D0CC507CBB6BCE -162: 8D4E87F66B3418105CD5583A92A2D2EBE8824E1F9150CB872FD3DA9C93D382C08065C818E1AF9B25875B142E70676D9A525D901EA2142E42D813A221D21EAEF5 -163: 0518E420BB5680B74367F8CFCF7DD32F3AAE009A0067FEC22456CEAD0832BDC2A60D8AA7B0A2FDCB9072C0F1171772BB665C0B28CD184609F63AD53F89597F9C -164: 247197FBCBEE77B8EAF6358F71A49D784CB43FB44D99910B0599E69B29E31C4019E830F322D5A7117A996BDB4D91E5CF323DB354E902E4DAEE8057B3F78ED5B7 -165: 35A7D806AF0C8167D1505B25EDB565E931864C453BF60AD7B6695035D7584E7714E21F377B35A5F3A69878835617B951977C209F5F3C5967B7DD9BEAA75A7CAB -166: CA9B60EA8DA2D0BBF46742E31AE882F5355688B071883F690AE775C4D949DED8077170F26E89A18CFC251662EA8D1FF43F5A5F28E3FB41ADD741AD2E28341A79 -167: A861DC64C745B0F5D3EFB2773C51981A836024BC420B1FCC564E03006163B491126AD8633FADB6DFCB25C2EF92FD82823FE2C7F1161A78C7766B5E21F96BACB8 -168: 1EE6CA0866F227B27678326FEDA4CBF59934AB0EA2E874E9EA233AA5C67141A05C1B4C950044BB6C9B9D146520C2E3779AE44187BE0DC1CC41FA7F72500B249E -169: DA1032057A25DA7EF987A2D7CF28B927D3DBD956979679F5A6BF4EA20FE1080BD8AF2DC8B1C7E236E7601BD82CFD64DFCA7D03A03087475ADD57EADFFEC2CA85 -170: 22E41325474C7C7EE980314D7738947E9CE3A970B2D28BCD69D545D5E795ED50A5A1839021645D000CD4779E181A65974171C15B9B08B349205B87C150688839 -171: 5FC5AD1B8B7622C4D17CCE23679FC7E0CCEBA00C1FD7178245206F866A6BB198F26A05A3D429E2C508DAAC6D0F698FAE6C0DE7FF971EACEEE84813110672F3AB -172: 2264F674AFC9743A46180CE4E4AA6A2BB33D6BF2F62AA14648179400806D718DEE8FE57DA48D88DF5D57B42087BB2FA62F833BFF87B6678606C6336CBCF34B3F -173: 65E9D1187801C74FC23C4F19698F6B93405C681B93A80D23D427D9F2CBFE63F7E2959B2AAD6CD7EF6E987A5FFD585E1BE8E314A1D502FAE80215C5331F8FFC2B -174: E0436B17C2BB096B08698F4CB448287D69322C34814776E0B1B21486A2D5B6906889A5B198FDDF699AB285BDF58783DE7913075F86ADA977DD35FD09AF336E21 -175: 857BE6485722B4BE445B72C7A15A1D0BEE6C7FB2AD541C2B4F0035DFA1EEAA10D4F0BA5A124F985DEFA53D0A0554BB258B2832BC2CB5B7787D812E96A55A93DC -176: 7B2298654B95CD00307D8D983A0079CCCFD89E5788180CAF352B6C965B9BB5153C9DE25C4A0CBB5E578859660696C887280EA378A2E02B7C7F9E6CC635509EBD -177: C7ADECC928EF065C263A97A273CE8CB30485BFC035F2FC02C78AE2AC6B7F7ED20E93897C0994CAB8D584EEF9DD475AA1613159A0C862FF179C67120F6B4C72C7 -178: 041A03CCE6696653ED5F367749AE1AF3C2654E8A9C0E70E467261E60023876C7271CAE545D114C32D38DA75389525CF0CF1FC0FA9A481ECF43FA0B1F61B868F7 -179: E652E4A88EC1A9C4678F8CFDBFB1D758774600255165E2B4DC15F61C18B9ADE14C5ACE7E8AE72D3062B7F1787583C55B14B347F642344E71D6E00FD6F4C56808 -180: 903675FD8C70BEBE9FD0DADAB17A638A2DD8089AE63114E36D28F4C75D951D75B0BCAB5247803551862720713AB45A932DBE141E48E9BF3ED9E76201577DDD43 -181: 6E61016D474D2AC2984E4EAD44ED82B7129B0B7FF0B9AAF5F45CA68B0529A736B846626CEBCAB9E7CE374D744E7A09C51BBBC746D989806F1A00703A002542FA -182: 20085D4717A204E896F10C5F7E1FD429C9AF848FFF608A2C46D3738EE4FFB944381880A7A455FEC6A1A21754D9ECCF3F1390EA22EC17FCFECE2B86E361784045 -183: 37216CA069259BA3244DE3933A3AD5F35712F0AB7B9C81D64000F0B91DD4232B53748B704E7ED0DD682A77D84BAC1B943D2FF7A3DBF5FE33DF455DDB10D11632 -184: 1F2467A57006D96FDC75A8BDAF98907AE72AD330C0418B06513C33D86DDB800AB6A51738DBFDF1C44676038C094EB5F309B5B590EAAADA4DB09FE7590FF04888 -185: C45893F92AC3E3AA3BC86A9ED659797A7C7DB949A66552ABD046DA2AA7DA9E52FF8BA2673CB44B2CB0481D599EC70020B6D5079296F2C19DB162DC8CCD64BAFD -186: 9919574ADE9B8640BB0EF45F98D1DB6FB7242C433D86CF6D4BD67AD14FF15D74A13F796429E312BAC581552E6597BAD2792F31B2488ED300C6118891ADEE9FB1 -187: 034A92D00A172A5F0CE717FC38AB8D68019F500493899401B563845EB604ABE0907749AA830F91B53AA7C89DFFF86664F8B123AFF4721D790A58CC22F36A560C -188: 54714E69859C60B07C7FE34859C855A37A82204D723F1A695F78D7765CE906D109FA6144EBA9E7E7A7D8343A99495E72D160DD468BEFB794D97659B8E2D8F1CE -189: D6CA476F7E68095DFCEF4338BD6466FCA90DF78A17DE9E29111D4645B0DAA0C6E98F156C0EBF9134BC28EF9E0EA67E6D839027DD5CB084E9EBA899DD3413E222 -190: 86EB8C026D6BF090636F01F623CD98B960D08E521E44697F364BC1AE1655B9AD6FC3EA38C929AC9A244D18E697342594F3E7DFE605954579AE4042CA69E65AC3 -191: 1F63EE615E9B809E3661C77B5029C78A92DC4BE3CC4DFD8BBE78DC7B7D990BC717238004969A8B854CBA04B4D9B30AA1A1964264C47F23D9BCDF45C74FFFD918 -192: 0351F475C711D068BE7B0395D65343B5E249FEAA3C3F3B6B87100C50306EF0340F60EF36233F0E6287057EF7BE8634BFC4D46B49E4A8F2CC4839F42F486A16FB -193: 16645F9C0ABBDA602B7436DE3B1C55AAFD1E844057D51EF80A96CBC2FAFF6E3B2706B45069C90A52D779E101793EAF4C9AE85CAD0A5A394164F0BF34C189A2A0 -194: 821E46199F4FEBD9C118D49B1CE9FFE953113EB6E4E33DA9E39C676399A0B3F792C2990A9F75D729E58EF750857C07336526631CBAA5EE0643699C8E7B7EEA13 -195: 64CB83ABF2BB0A94451F2B9C3EDD76E4A15F9D1F9EE32C0607F5E0951084377E484A8259B3C64428293396F78E6674CC3C027CED1BE12F5671D328D131740770 -196: CCC1A68114DF54BF467EC49CB15CE381EBA7E6FF06A93EFC88F442F8A35827D5DC6494A4F39E8423167CC1C3269A3EE6AE68825FE3E2E40EAFB75C8D878FF88B -197: 94D38693F1B1A8F1013544419C5B3BA0CD79B72478A91CF3AD325E4C3CDCE092AB667572233A4F8DFF132401968BC74C553AEEE96D530CA4E5F6D427F9D2C422 -198: EB080E256FA9A5D51C3DF577509B877563958704C0F1DB645F75CE24005D3B12503BDC26FD3A66E8F6882D3491428A4932EED6F5F58532FEAF521BA5FE05B70C -199: 9A43D7D0C42D7B5409963339C9D9805BA59ED8A63DB144165A3C759EB9F5D756E6288308DD2FE460CC50DE26E1A1C1747AA165FE6C8A1FD5B0F7CB1373E28CAC -200: 986058E9895E2C2AB8F9E8CBDF801DB12A44842A56A91D5A4E87B1FC98B293722C4664142E42C3C551FF898646268CD92B84ED230B8C94BED7798D4F27CD7465 -201: 9FCCC4EEF7571A2BEEE06981856228CEDAF3BD412E777F4AE8524B81C373FDBC210795C1E788EE7081BA42EC3FAFACCF2F386A9096AC719E6565B4E384E390E2 -202: E4E8BF0BF40249236FB88C442E6668E3067ED6001189053A3A81EB755798911258E25CACF7282811DD5E5147811844C4B5BF52FC24A6862BCAF9407F2E38EF5D -203: 317ECED703044C1BCE944DDA7114DD1E36244DF6A533790FAADBD0B8DDF1AC0D198B593F0479A038198F4B94AA6ED294168FE0EE800C02E769EE78ED45249945 -204: F5FA1EDDE359173067E463107FCDF00EF227CBBA0EC5EA02EBBABE2C79B12E793B98FD3A90A72BC26240D994F53DED65FE22C6FE87EAFD01B8478D1E8569A882 -205: 6323E2A8E380CE86433D5B8FCC5E02FABA4ED7F9CE5BD194F7CBFA36F65844B61A7BDF8F131CB4B28C56ACFDB99CD84830557C571FD369650B4608376BBE4FDC -206: DC6BDB69D1C6111E280F993635BB59CD6E7B189166DE593B71E194C5F218D67B00EBE0D028E944976D6538DE410C4D86A2B6F272BB94FFA590208C644F99240F -207: 2428590D2043634FB10268435EA90ABD082D45317D2C54D065529F15E180438AB18FE4CCC9129584804EB04EA1CFF646FA881878520BC01AFF392B6D7D9C0369 -208: 1A29341BEF679E5351911809DA190BAB8E665A9375BC2D477742176A70A6BE8ACE4A35645BF8DB97AB9BBAF1F0313004AF8B4CF10ADB26AC0198AB1D45D05C46 -209: 0EF4FCF3B2010921C58056B2BA367B4C09F5325E6AE9AD732AB277281D4BA797A847B1C6A74D81523DEA163AB0E556FB5102C14E8CD94AFBAC0AB0A921BF1A25 -210: 73C65AF2A53E8860BEE63AF0BD8A457B0AC8D3C5D243FBB1BC3D67624727CC175F3CA133B26342C3401D75DCDDDAD9A692D9A2B1264E90CFFD4BB9E6E775DE15 -211: 18D3DE049396E2EA541E15C31C0EF0E0BD90CCC6CA35663856B94F6F18160D616667C55F3ADC1B33E749F60BE50514A4F3BE48ABE2E18FCA10F85ED0266972D5 -212: 34DED45ED26FE224E0C5A66A193C11A2CC0786E61D421034B3BB16175019C95453F20BDE865DEEAC5C2BB5C86544641482B51C4E61D9DDACC238D050CFC35776 -213: 025D211B55974BAF086B139D8FA1AEA75B627CE1AB894D52F8769874557BE5944D27FD4BA3606266BC7F50D1734436C53D4555A1D2DE0DD2AC51D7F2FA373867 -214: 08CD521B1F13440D57001F30BDA0029FD8AA17FF26AFECEFA2CB7EE1812FC79A694ACD0BDA98184154B72FB7CE305FF4897F466CBB3972B4863FC88B3DA52C28 -215: BA3BF464071BDF124034CD122451D3374AACFBBC916C858B93E191006235F4D741564BA1DE70372269C122D360121DD3D427853BA76C6B450BB46F4156EA7524 -216: CB0B3250639B4ED947BE0C83EEF67D370DE76AB901F607F68FBF1BF8ADA15984DDA7BECAA4D7FDD55FBFE479EEE3F5ECC9CDA7BAEDC9DB7D35DC227411DCF20E -217: 8AFA4024BD96BD50323AFDCF92A7F3E7BFB4C927108CF81C01FD378F61C55D850020DBEB88C6528B8FC141C37EA4852481C14902878AFDE51A7F1EA1612D0324 -218: 27057269EEB73333A1A8059D6C9D6FD5AC89EC26500F6F9838CACEC20E93F1713CF5569E820BD80969547D77E56AB0CBF57F03182EF45AC8BDDE114470C6DDEA -219: C79C3D4A4608C7CB4A3D0C14B28CBB96364F44DD8651F36D908AE502E547AD7AD5DFC10DA26CA26C6D9E51CD40F6D7F1BEA0A03358967D867A97333DA8ADF3AF -220: 9DC3B1EF11D85FF8A57330FDF91D5B5AB142FB89A72D880DAE476E020755C2F3B4CA58C9ED36239E8807C059BD66F826EC517B7A44187E7216E48B683B567076 -221: D11A97FB7B967E90C2D39EF42EBE49327CD58EA6977C84275B01698E322DD97024A40FC3EEDD96207310708F737E81B79659A6C7202E96BE7AA34D18D4026F63 -222: C9BD62C0FCE47736ADCD9275B46845E4ECA23B73678693FEB8E21909EB8405D4B057AF2AFFD7E667E047A07E6ACCADC2A58D7360C17689769DB009F0A7795560 -223: 7FAFE6ABE7CB8C109B18A14BC4FC2E4FFEADD55A43AE7DFC58D89B9CCEBB4467FE4CC163FF6EB16C8C71B8EFF12E7891D11D3DA2C6DFA8152DEC52B232267B6B -224: AEC37B2A1157708142BDACFE77E5204174F539D86A12730BBEF6386FCA098AFF2A5C31EA1AB21D3B4537531DDEB27CA9DAEA22F5CC8C9956B2F2595F53BB931C -225: 6B005CC923D9AFF56334CFC7A5E3ECD70E97C4247EB372A3180E7DC5BEBE676E72E2FDFACB74277B70E15D871819626F46661285DB04B3F825C49EEF42391B5E -226: 509B5C993CDF61F8F507A84BBD7D6D7AB090970927400043D39E5F47DC23AC289F5BBF9D3246EDB174D9C5D72BA7A066DC13171EC15FF9508911464F8730D395 -227: 00A05302C3A60E58C4C52847F47379212A918060931A72BC660D88E7BF5599DF6C38DE92452B4823B4725BA3EEE866235CCF4D5903E91714CAA230C6D6EEBE45 -228: C4FA5EFAA31CA205A732FCD5DEBED53C09A4F30C5BD9ADF27F8C1DCD4B2730925BB6AF176E2E680B2BE325F7DDEFBC9EE6C1CBC4F0426ADCB5CBF18D1437EE6C -229: D125006B8107FA63C375A79AAA0EBE82017372B7CC65C3157CE078DDBDAEE8C569BB84FD8490F2D66D15FE73C6881245761AB2B1D4F056637ECA70641745CDA4 -230: 01C7D098DCE4E40A69DE14682587FF2A40BAF9833BDCC6413AB54DB0E64262F290D584CD5B21C6558682C50E1E27BF53A18A16D72ABDE878C3522156C9F04DE3 -231: E863DA51CAE09500F589BE05CAAD5788587E2017907444D76F547D6F30632AC658EEB8585733BBB815D2E19EA046369ED3B81AA773FBFFAC316162389E015A71 -232: FD8232F7B79BDF9CC52FF0D5DE1C565E9D659BF19769096895D182A88028C1CDB7387DD240128A7ECFD2708EBA7E9E3C676D6E2A036E1B993940F5CCDF1A736A -233: 3BF8572CDC7B825CE7F3222A3DB87F1C52FBD1A8229B957ACFEF2047C560567483C479603A3C0B0F1B2DD265BEC257D1A32C651508D7A4DF501BC015657DCAC0 -234: 23FC530B031136A17B8B2FCB55046DE7271312EE3E77851FBDB05F78A294815CB2169079168E07647A2BD5D05C1BC2B1EF1B64B929DAA1F9CE723D448C936FEC -235: 83D10057C7FB494FAAD289B4FE5F093DB2A0C7D79A298173DA735CD5063232BF9E5327A7B4AA795C99F323045790B554476F37EB9D04FE3DF40C047E4113A720 -236: 0AA201EDF4124F421D4515554A1A642E3B9D18C70E09E83A886D6F0CAB0750D9BA1FFEB9C587F3ACAB0D8B9C1D83D789102F0E2A6CFF885C50F485929DF4602D -237: B85CC52981751513B917F58305AFFDDC7D901CB3BB1D1BF5DAB058DEC9B8CDCD2DAE543D73EC6AE0889C9D785F9178D207059D994E1C80706EB28AE65AAA100C -238: 068FED72E55444AE108EEFBDD59A96DA4AEA3D81A6642742C38BBD4EAAEDA6EE21FB8702C2F95152F1F997A5F40F06C54619481F2EC343AD33400913D6FDB4FB -239: CB4C7FD522756D5781AD3A4F590A1D862906B960E7720136CB3FB36B563CAA1EA5689134291FA79C80CCC2B4092B41DF32EBDCB36DBE79DB483440228C1622A8 -240: 6C48466C9F6C07E4AB762C696B7EEB35CFE236FCA73683E5FAB873AC3489B4D2EB3D7AFCCE7E8165DBBF37ADED3B5B0C889C0B7E0F1790A8330D8677429D91A5 -241: 4F663484EFCA758D670147758A5D4D9E5933FE22C0A1DC01F954738FF8310A6515B3EC42094449075ED678C55EE001A4FB91B1081DFAE6AB83860B7B4CC7B4AB -242: 81A70404857420638D72672A2DF5A49D52B9F9F38B385D8C5129D6A2B82A682CFEAFE6509266E4B00F6B6A07341C2F64E4D4F2152583ED143E3DCFB14C1C216F -243: 31F655A1334E1A45584F12A22E03B09E3C69ED0E1D0FD573AD0D56F9C86862299E333ABE78590E97EEAA5C2FB14DC9F34FEF6DDAF6E7A9BFBF68CA6631195CE5 -244: B62C5102F97E5C4D7554790A4CF53A58D3EF44C83142D6E009BD1F6FC8F3A19AA1B89DA8DD9BD1310827A5BF662BE7CAC750C48E6ED91313E940D7D9E5EB9C22 -245: 380023C0BAC4C9524FF6778BE80CDF195E36FCF460E8CF1BF04E5C2FE08E38C35F183FBCDC3726FF26423F351C507279F6258F2319EA1403B6C8A3DCB384AC7F -246: 473FC167C7C4BC40B17DA039EE09FF3DE884879557E40C52C1981AC419CE021A090BBAE014822D05714077008988D74FF151C927AA43E88CD63FF2CCD2012AF4 -247: 006086E61959B1D66C72E754427EAD5E1D6C02D8409F5C32B2F5AE448F54682B504A1ABC0346CCF39BF66A8C7B69081E886B47A7D0B02291462391C95351EE40 -248: 3828B2ED548CFD0B74BB34A1FEAE030E267222198D7E387E7FE3ED503905A25D4C3301A9A47E78372F685B05847062476C507708CDD75580ADB579E4CDC79AA0 -249: C26A7D5BB103EDFEAE2F1201BE58AAC127F69AE378DB04156074E991745D4AA5AAB3BA064407DFDA8D34E573B7EC1F9F37CEF01ADC17FAF393C262A09F2C4736 -250: DCF82307195035A668097514FF1A10E0BF0E802B4945A702D2E17AF6DE1D3D9BA49616DFD16D802054B5219CA37884385E87A713B4EF5C7FCB69661C7F56D5E3 -251: 46049EA0DFA5C49429E15626AF4AF2CE0A9DD2F308B99BA6E6E3F3088250A146870FD0B53228D5A1F1BF9859480E1B7A3D3DA180AEF4D5D41BD2951C4E19426C -252: C0A1FB6C0A65A0D1AF46A5FE86C8A88E8A86F83E36317F435542927C98E74833C887CA3AB5E792CE5E3E21CC6C6AF437349F5A66FAFC4DA79742491C643901F9 -253: DCDD20CD47B7C7D011E9DF7855B08336BD5007C4435208BD3B914D7E503B8399164A155697E68A1B88A0600BDCF847A114D98FB773C81FEC817B92057A6998A9 -254: E2DA07644DAA73B66C1B6FBCDAE7FF28E3B9024F0BC5408FE02C18E3744CF9BD6DD54EA7BFA1F6F3A81C8560FB938FDFF9A38A29853A3A819B58D10213A290EC -255: 15025C9D135861FF5A549DF0BFD6C398FD126613496D4E97627651E68B7B1F80407F187D7978464F0F78BFEEA787600FAAEBBE991EDDB60671CD0CE874F0A744 -256: 1E7B80BC8EDC552C8FEEB2780E111477E5BC70465FAC1A77B29B35980C3F0CE4A036A6C9462036824BD56801E62AF7E9FEBA5C22ED8A5AF877BF7DE117DCAC6D - -Hash: sha512-224 - 0: 6ED0DD02806FA89E25DE060C19D3AC86CABB87D6A0DDD05C333B84F4 - 1: 283BB59AF7081ED08197227D8F65B9591FFE1155BE43E9550E57F941 - 2: 0A07690C7F1FEEE3D8C36114E0564D43CF0E710642E90BBFF1E9B7C3 - 3: 00FEC611D324972280D5B8D125BD43DD6EA2515CE38C3B888E613A07 - 4: 6E30A312ED1B6D4C7B31D269BCC7B0E6A29F0BF8AC223049732B35F4 - 5: D44BF9D6D04191EC944F8310B785991F4EF45EC090F35E847BE4621E - 6: 94EF12F2B3A28BA5E6CE4650386E4427A4BD28D2843F9D1E5B32048A - 7: CA5456E523DF159636695D94717801CDD968904348197A4FB5AC5119 - 8: 5A00A59D3FE5B7BA5B3FE011F8181487EAF7201ECE9802E424C61E88 - 9: 1666206F4D64AF32793D51D33DE4F268AA54E7D112F048356F317BD0 - 10: 069BBC329DAD3C93089EAFBB937C5A632A4319262EB1A6E2DC1E6A77 - 11: D0A05731CA8F7931F6982102E4400BA30C54F168AC16EA775E7C4421 - 12: 2613FB4EE8451FDD2CE06DCDE74D6BC07ED02EB14C1C10C0D3D363FA - 13: B667F676EC45176BF778C82B74784F49CD39190D100A09EEAF80BFA8 - 14: 1EE61F074B90106665F1D5F14ADA3EBBD85A90A1F86480A826BCACDF - 15: 0B0687B2E11D2F895E409CF2BB740A6955CF1BFD92FB6506AD842E2F - 16: 65B59A2E9935695519257ED5732C4CBA8DAEB3FFBEEBCD76ABBF780C - 17: 39933CF59CD76093DFBB32D3F22A2C625C01E27EAA08D6384AB3000D - 18: 04D4F72C5D27DF6C14A7094510B51FC1B3DD00B6B8ED4C075036E367 - 19: 559769278E6162D83151E400A271D430D679F4CF31E56318A292FFD1 - 20: EA3D6A5A59D4FB0F91EA5BE140F10EF016FF3F329C0D249B4335BB8B - 21: F47B5C68134BC28B322D79D3AC6C972BD0F399EFFDE08D63E51CE934 - 22: 4B15656266A2978EDBA018E1B2179A1AA5CE391D4C6BC519B3D00C49 - 23: 28CF753FF5C3638223730CF084FD174A241ED388733AF557CBAA7DAF - 24: D0B182ABEF413BA386AB674EF13D6645AAD072966439C05026E033C5 - 25: CDE0DAB321334986FB8D0979F91E8DA4F124A50CCF36C1E141072886 - 26: 70C12305B10FD9F7988AE80DE76C12312F5A1358CC8F501F7559A1FC - 27: 329BFD0CFDF2F12CAD586117A963E70027A4012D2E34FD48BEC23837 - 28: 0557344CB868836E365BD8D9744270FA985D68C6C26D93B800453050 - 29: D92467142FCF76D631683D3FCBE57A8B9FDD345D6B89DF1608008D74 - 30: B330CCC7206F6783B7D99DD15EED88C5ED55FA68105DE4A4B8B97361 - 31: D89725A75707E3CC1A7EABA0B6062D7EB3851BC1C49B3B237375235C - 32: CF2FC8B204143A496C4151113069636B288874D2CD9BEA3BD41B8495 - 33: 6F2B418FF1162E8EBADB34988E1FFCC412DE7613F3DC8E7C1C9523AD - 34: 0F3B76A501630F8E04214DEC93C3D019EB8F544112FDE69F77D1B342 - 35: D149A08A586593EFBAA96AE24171F962695DE0A55DB97F9AC936EC14 - 36: F3FDCC88C022ACBBC1F0BC7C738290768811A817B9A9B80B6C04B0A4 - 37: E5C962AE7DC60812C96041F20C5AD6E65B46DD55430EA0541F98E704 - 38: F22C11EC64A1BB8A883773A6CE9C435BE2B788807EEE19A19B9D940A - 39: BA5DE0946DF38400AC68EDF0A86A4DD8BF9594400FD239B8D1741044 - 40: 7802075428B0077420E37020D6932A24635C2D3AADAB7502098623DD - 41: 488268FD1A6D83CFA6EAC8685979C5F7D30933EE06A75E691871DA49 - 42: C1E30EED85DD23DE56C0897D04B8A8A4D22743ED39CF336B5338FAF7 - 43: 92813F2CD4D5AB56426D3E0B555D842E257CB0BF0C2A5393CBF35DB4 - 44: EE1FF9E3606625D954283059A3216464B5FBAA6DC64D8301B4777587 - 45: C6A59E3BF7EE5B5BF84F0F64AB196DA82686323D5213BE64F0F0808D - 46: 7A893130DFFA5DB80A087CC5CF58241A887E12D24C49F57A0CF446AA - 47: 2947CA00789EAC5FD4CB15AB516DA2BE7E728F35192F5F50A273AA69 - 48: F465139CB305691F5825A29E56F6D5E40AE1E041D3EB6E40A62FE854 - 49: 930FF6177F2A43D1A68565AFA65D85B7C335B50EC7E539F2FE44807C - 50: 3A758B9ACF4FBBEF5E4C31C181C82772AB9FAB097E3F9845F5EEF502 - 51: 570B4A6CF0CB0D96A6F285B8E0572DE4C0C9141BD78629790FBE0C13 - 52: 80AA23B431AAC8FB8DDB2291F574191BA1A66CB6F59271A6FE425ED5 - 53: 0208987B33EEDE4C081D624D50D621B6E57573A502DD3893CB89D9F5 - 54: 14433D01D241AA9EAB872098E505514E77AFD9F2FA2C64B62C9B5BC2 - 55: 4BC333B55C3237ED85AC21B6B3DFB70987C33CE04E20C2DE6142D681 - 56: DF1BB702813C49110142BC858073E618AB22AF52FAF8D5F0403D3FF0 - 57: F32287421B005CDB31B9B010A0F5A4AB12E161C2273BF69C738AB94B - 58: 26368FCAF3E938A8F144382227E1007CD58DCCA9726C74A677E2EF43 - 59: 54E346CBCB5AC8D3D5FB2D23014F485D966124F55F4866B2A3071467 - 60: 64650D072F1AEB7D3125598F96EDAFDF1EDC9F32BC09EB93E1DD687B - 61: 37240528FF0A13E4D0B1554A241BF2E658EDEB29BAAF9435C0ECA091 - 62: D233C35B97D0C77A0D925341193C664987E95CEA687EB76A473C73B6 - 63: 4544175B79234F008606D6071D74DE7483FF0BDC1DC8C99A89BCEEF0 - 64: 9E2437140847453434ACB859BC4F842E9FB4A4B55BD9DC164B74CEA4 - 65: AD09C080E71D330C7AF75C34CCFDCDC103C548EBAD3A058BF638AB01 - 66: CF9FE51BB566173AF5DCF3224C37D54801B3D8D99981D21E567A789C - 67: 58CEDB734F792A83905A7E76A014D6AFDB0C156AA08E0FEB1DC6F737 - 68: 69FE39435F7D2E63EDB3F8C43EA850DD9A89107309B72FFAF459F65F - 69: F164038057287964A01C51255DCC0BE0F2C42882598C1C2E0EF9A28B - 70: 57A8EA1F84E6653455CE70B8AFBB7CAC715B9D566250F7BD7A568E82 - 71: 424F87E867ED6A9FD34AB5B14BFF195E7BB65F70CB19D3B50510D380 - 72: A5BA006B30F2378CD1AB2E5DBB9FE130BE7F504A7A7AE51A09839229 - 73: 67386EDC9643345A4A7B060CAF230748B72CDFAD644AA1A69B846731 - 74: A48F0E00C1649D75E8D1927ED977EC333F904D97C2664B37819BF99C - 75: 1EEEAEFC4BAB0A232580116E8AB9C24BC35781E11D35562CCC97107C - 76: BE3D716B6DB628B4BB50F4472AD316FB906B5CA7DADA244D29E5FB8B - 77: A731A30796C89F3C37C99027F487979CD23B9FDCB5F03B4399A52778 - 78: D99A36476A13D2E1F4798C03E083FDF3E883401EF99C89B3D1FE7DFA - 79: 2154E08A409998272A3B7D2662BF10D30866AE0765F2AA1437983753 - 80: E0B6566F1F80ED434158B87807CBCD92BD28AC05D686C150DD67D1E7 - 81: 97DE2D154454C4693C3B09F7DED9F24D82095F0F59A49009A622CB90 - 82: 10CDECBFA161F69EDCFBAD57C10077E3DBD7356AED8CF00826554D61 - 83: 25DFC75815DD0995241F2EB0BF3899A2F70FF161C4C8913ECEFEA31C - 84: E87B6D729D9B12434CEFB32AB0F3CDDD98CAF531CE0F1C0A4EA3C594 - 85: DA64DBDD17C06E5BCA25B29FC9BD3E807FBBF85B88457C5007A29420 - 86: 2B354F454796AC6B73D4DCB61B245068857FC0AF370F7B810D998E29 - 87: D413BF567E46384C50F1C8F6D04E15EDFE49A23A9CF8FB3BA5366C0E - 88: D34D30F424F8966AEC100295D38F50BA202B7870D9F563DCAE7E53EF - 89: 4C92C6C9AC7AB81AEACD86FAB38CA0F14CBFD04F7ED2209F658C2C3E - 90: 0881AA04F7029CD296BB0956DCF148F4781F7C3FB651C6EF939C74AD - 91: D31507F6253787BB9565B114D98002010996F2930E32FAA8F5D50C57 - 92: 172205CD782DBAB95A449FAB59ACF89B3331FC060F9CF2DF94DC8D84 - 93: 0E631B1F9C604BA237CE9CC935ECC7966C35C8E847D8AF79EA7A6780 - 94: 5C632A21E6FBF71026B1BD8E89A58105A9231449F865F433121C9996 - 95: E5E6B8C1208E9F82FE16837AB87CBC3D0AEF9E424515239EA8992720 - 96: 24F4D45951C40A39A37BD5BB7FD48CB6773CA6489EBF50B396597ED4 - 97: 8807B743D38F491DA0C30FBB81C15037AD05FCE775211EB4F71677B9 - 98: D807E6C39F1F6136D03B2C64398482F8F0E34615591509EBC003EF7B - 99: 6B7514EC3320B8FD441D76AB9F7BC79257A5E6371A3F20C0A19B2233 -100: B8ABE8559D4921712A44815B8C4EACBE2B8D6E93DF96602534CEF852 -101: 3562AC37EC2EDB9D49363661B4C2A466F673D51D9081867A3D871359 -102: B35D3621C09E9C61D4B7DAC784AB12F7E08786F5F191E30A368CD68D -103: 090AA07690C305101F7943C57585F66F972B1299F5C7801971F70D23 -104: CECA8AF862A236CF08C7BEE7B938A822BE0DADDD36F52DA9832100B6 -105: B5C2B958BEAC3EF67F6352F2814F12DBB1BA548ED8C388148310852D -106: B14FAE5CC21CA79DA51DE208F74C12C1DD242E91141BBC2DF6F445FC -107: 0FC57C8D7F410CF551DA8591FD90F31F678AA10667221A4E3745130B -108: FCE9C580498A5D331A5769C7B0E28EA269DC38DC96EE653E89BA994D -109: 15628C95775984C37CDA5E240ED7469BFDA805F7837CA2B701AEB46D -110: 4F18E2DBFC15C957E51C15CBC834CFEC545C5B49BFB754A7C5C08A9C -111: F8810EE322210D0F4CBD7A4E92E7D7E72B63D2777DCB531E13DDD690 -112: 8099918892EBBD31215C9BB5E4E53C0B52927B000CED0720D2C65A22 -113: 8AA886CFB7357D802E9043498BB9CA36C80A79DCBFE06C9324F8C027 -114: 5E15C489124F3F4F1608B715B997F7965E83C025EED250E3F9590D72 -115: A0438519E0D17BAEC7D598ABF5F803F87D6B1646B1E0F7FC4D2B7FB9 -116: E09144D128BCF27B515888A761FE0C75AFC0F3C62AD49FF7EF1B7FC4 -117: 0F53884CA788693D5F51582A9A26568EE143884711E6A4502504D4D6 -118: 8255D5A16DA27ABA30904E22C13FC6D8014FBA31CEE8BC10D79ADFE5 -119: 091688FD3B855964A303EEE8F09F3A04B211B8A31B1729451A0458A6 -120: 3055CC455C76A920206971189DADE9A78A53E2455C12865C4ED36CE3 -121: A7F4D536F9028234EE7256853B95B9B984DD8CAE189C085380C70087 -122: 91CC350F8D813330D99061090A43349B57735675EEAA86C9AF9FD081 -123: 2FA22BBA6349E2F41D7AD06204547CA0D8C75DCDEA49A2BCE81F4F0F -124: 848183EA80864E016D5C5568B4A843B5E5748DE89E572169206CCF3E -125: BA1784E1FFC8B17E4E1849A54C469622482B12334A4AD620E2C5D99D -126: 35F29C25C39B50D886B398E6F654504CEE6A71B7F886D5FE9A71BFC9 -127: 29D2C4166A36E07B2DCD3A7C988DCB14776DC187040F6A733162EFB7 -128: 49A64B72A88A3C93432B6E4C59A1B4908403F70E46E13BF7494FBE88 -129: AA05964C59A40BB5140F3F1B9CA03C3EEE0A1044BBD3FE84E5936877 -130: 38E7B198B7D65953C36F24AE14A1476F4B6273D0F551B0BB46AB62AF -131: 7B95414DAB33D2063E798ACE54EBC3B59734089BD90782098B493518 -132: 3D6B803BAAB3DCB33FBF41C9A0A26AB4ABCF9B6130A1767FE8D92EA6 -133: E39B41308DE4E09EDF225ECD70773019DF360659C00788EDA15A3B09 -134: C061ECF6E38881252E65522B3244FD013700D4E0FEAB8FDBA5963C44 -135: B95387AFFDD9040046D28CC9B90CA83547C73F8AE774918FAF17112A -136: AB4D30FE79907AB6BF4153FF2E15ACFD3FA851C59918C6D1BDAFB8AA -137: ABE3E517600C412DF53B002CBCA6741DC1ECFBEA68B595EECEBDC2D3 -138: 1A5BEBAE3CF1B4C02C8B8A177801AEBBF11D194B5ED274BFFD2B0E70 -139: F87D97F5BA0D6D6C5BA279D5A803DA48E38981594517D03DDF0667AA -140: 98C4579B3C3FB17BA3A9693B6CC38184E66C6CDE8CE6B572B9DA27E0 -141: E08A209E340A496289C67BFD38EE96A84FCFA4413B3B545AE847D8E9 -142: 8AB4CFBA58F12EFF33B19D57DF495591983C39FF014DFDADEDB12837 -143: 3A85A696BC2E82456C682ADCEA5B2BEEB0A11E9FCC363D9C25124ADC -144: CF6E901A2A18C002E75E535B34812AB027E32384EA0271CA6ADFD07D -145: 1FFE5D64C7D229344ED0FFCD0FC1F87ED80F097A5F16F27E89BE2414 -146: FB238E7E0F64DAB7101050E2A594C12AF572DDA5FB5DDCF0A81EF7C8 -147: 413F330049C3A309E746A6B6D24BF40CA430D107A18227AE7BB60165 -148: CDDA7B929096FCE42B07E19C72913BF37569C75FC5183419E0FB070E -149: 07F9A28D87B98482C0053E187881D02FB15ACC321ABA51B9ED5D1F4E -150: 666CC5B7FCB82C1CA6582309CC4CFF989D4316101003CEA5897254E3 -151: CE161DD7D8AC4DD45EF0F511EA206F5D78539314C4B44A7A4F4A403E -152: 5AD4DA1DE62D6B012259C3FE1573E2F6BAB8CEC85FB6AF4CCD1B4EED -153: E9E64E30A48783FEBFDD8347837B52CE7D5287E5FA4B7A3F7F66C013 -154: DB14B1F354735C9DDF4230C844D5E184D6BDA7FB8C8E0623A4416590 -155: B394B4D91411B38C4BC98DE63940CF6393E19EC229F4767D130E1F03 -156: 904369E594C39ED6A32DBCF5D3743FD31992430BBF126CBE2E8E5788 -157: 221533E80E5B43D2F817283CB611EA92E02A1A6B31B26F1F9B5F2DC3 -158: A16564159AE18130B912A694F8311BC6F769837A5E07E46622375228 -159: C7462633CBA1DAA4C0827EDDF9632A4FABA2DC07ED45668A2D012174 -160: A002A7A6A4F75840A5A94610E7CFD2E9CE165E5F5177EC20E2211C07 -161: E12C0157BD545EBD67B907954E3A25D95A42A5626E6665BD1285AEEF -162: 0B8F3327D09BEDFFBFBAAB6D863510F7D54A81791C4DD66B7C5FACBB -163: 0BD97B63D7D8F0A4B90330A5A00444CC3941292138F2CA6BBA76CC8E -164: 5E1209A29CFF68B4DB004D0C7CDE223A0E8801C25AF560ADBBE2F27D -165: 4D458E8F2F68B901C13EE4AF463141617DC1D0D8E62F6991C6A07658 -166: 174C92CE40F01DA75C57DBEBE8114997D2B931F2B1E94BE5D99E987E -167: BB9D18ADAC9261895FCC5D1D209742EBCE546C3F68918AF614BB80D3 -168: 85A49A9C7034746587671B8DDF543CB9358C2FE4C75DDF332BC695D0 -169: 5D618C15A9044D6E5D461F8FD0896020ADE117E8DB7270E602C86B3B -170: 8B9723D842504419E29EB9F8B222D3C5C1D8D90FC02E4930FE1729AF -171: FAB6F7BC8105A9E107A5FF6CB408616197A5EC8FC8DCAD975A628CAD -172: 2D66807292855E8D11BAFD680D59BAA5B9E6D8BD360D6086CE12EA95 -173: 1F2936B3C91E9A3C17C11091DA7D4D42581CC3D9EE9192497FC3CD18 -174: 337575215CB0B37A843063867FE6AA322222F8B0F096FFAE69E385F9 -175: 002EDCA2423B16D8A84DD7B01CDF53C330A16A58A03B74D906D6EF62 -176: 37B20A60AAF4FEA526B217BE0DDDFB8CF8880ABBE5E444432B579003 -177: 975D4F979EAC80F42F7CD3789C0A18057AB0593BB78626A52B15BB8C -178: D1D7C4A4ABEC252B300560D3B95F2A8747B2B554F19542FF44B9AE9F -179: D4B36857F9DFC1F6A530767E9AE20C18123789C81CDCA6413AF990D0 -180: 853181CA65B54A26F0090111266FAB58A9F0B80DB49F89B284661A80 -181: 003337BDB25A835BD9A7141A6A35924CB47A0C404F79E9E5C1454AE1 -182: 55DE6261871747A96075A5FF81B17C65054B923FEEADACBC62DEBF99 -183: 3BB872FF69DD7B319FC39E2D6ADCAA724751339AA98EAD9B63E31C7F -184: 72BAE6681B59CC556D50204FC7A4B286E95DECF54E699C35C4C1E46B -185: F87A12A8A2C62C34126544DF55ED1C299A835AEBA148AA79D29433D3 -186: 4FE245B12D8312645AFD30E764061DF8C95E80244ADAE3853CBAC5E9 -187: ED824E6CB63CD58B9FD9C5DA0DE419AAE4AFA07D356C6D594E6C7602 -188: 5684C0B9736B43B25FEE8F75E24EF479AA28C4EDF8D3F8EC3EC1B18A -189: 516F0991FC66A910B24AC719E31EEE08972E430A08EC3E487520E6A8 -190: 02F935F3979AC59B7179F8F149B39526D9203333678E37CCBFA81AF7 -191: 487E604E36E13BCE0145C659C2018935E706AA910A4DF2F248E94AE4 -192: D3E164E063FB6FFB4F0210D91CDFCF9C1E73990D36EE98169C12C566 -193: A9ACEF6A6203186CB946133A9EE86F414937DC81B1E95EF4FFB8F6D6 -194: DCDD529CC2B0DDBAC1AA5C5581E39E129B73A3DDE04403358310544A -195: E8C8A1557D51C2B0F7E7ADFD65DB10B751E1C66400FA56C72E632EC3 -196: DDD60F8795A5C74AE07F4BDF7CF8C1EA7F617978F0D12EF2783E06AA -197: 7C13B11A3BA5A3C74BA9FDF6F10F14D1822A248E823BCE8248610433 -198: F9AC0A30F4394E8C8D07F10F03DEEFDDDDA27C1DF74B80300B1FCBCF -199: C2022C77451889454208B56284CC50CCB4126D0E44EBB3C8FE6D857A -200: 45455AC9539E497062D4D0023CB5591AF4ACED509E2465C2DA57B466 -201: 41983FDFA1EA3C3956940C1704827605AFCB16CA89EE83F4BEC0407F -202: 0B8BA25FF9E897D29F545A367453A35E86457E8C84FF4067AB3FB26A -203: 754AB63712BBE28A7BBE70E4C3071A09E13EE3D4EFF11E3EFADE3177 -204: 6026F011FB67B4C00CC20C4415AA0095E4DCED5B5BEA7EB3E3602144 -205: CBB7AAC645A32503574225E6707C28C99E35B88DE840117FFC0915EE -206: 954451525EE5B1B66B5FB3C5F087ECB9B194073804474F7CF01C4057 -207: 0357EB8AB9026850FEA61551A5487DB50245143312837BED6FE66C60 -208: 1D6CF1413CCEBC8E408888624854E7CB335EB97816E39E6BCDFEB35F -209: 6D1D954AC353DB3F79E163AC4B56776881AB10CC659A01BEFCA695CA -210: 7FDC69BDDF3C6E430EEFA3DE553BF51FD440EF85DDD34A2A49DCEC11 -211: 8703C4A16397D2E70E4E26FE49456F1EC0902AE2C02045980E8B8869 -212: 3289D50B0C47E66061711E63C249C87B364741B62DAD2320F551E13C -213: 56DB3E8CCB6000AF46A0C1219E5E56FD26A3BE542D05F2BA2901526E -214: E0B7236D6E547C20962D3E95E62006E536220CA828F96AF51D8BAE37 -215: CE3BF25BF54317D8F30D9937B14CF817A8EF6666F0C5DC88A08EEF2F -216: EB421F51CEB230081C16CD4E33DDC5472C6A0B35C623AC47734E203B -217: 7C696551EF2E84C27504678BFBF530CE978302E0B8CBF41404CAF902 -218: D96CF6D20FC6288923541976A80FAB2CBC634376A02B6A681C3E7F27 -219: A2C6217991958BB799751E34CCDBCF9E492D4623F9BFE0B791B9B0C8 -220: FC6B5B15F2AF1C3CD1B9C3C1D08DFD12E4B852217CDDE4E19DA54565 -221: 553B8F6031057F7D2B7854AC04E55D6201B15FC3540AC32B54434B11 -222: 67B0B63C5D6C16E86E19BCBDA02821B96890CBFD662B9AC796F58602 -223: CE68A9C14D4F6A0D4351FC3D1E46F323DB4EC7DCAE0E59D726246913 -224: FDB91DED054711B9DB1A93CF852650BAE3EB08B158B189D241903A5E -225: FBA7CFD46FD05633D8B5C0D9F5DA6D42A881E493054B032728FB6861 -226: A1E4C1644E91993B281A82515422B2449F364ED8E3AD3A54B37CD874 -227: CC9157FFC6FDC62AD86D826FDE2DC78BE93469B21AD7D1ECCD37B6D5 -228: 93A505763CA81F90D1D8C366D63DC9317DDE8EEE264F3700421820B8 -229: 46D41897B31707443AB817F55797FF8CB52ED791340244B3713C2D6F -230: E7928E3AFE6416915E697E356D885AA7A33D43D4766BA920405BEE75 -231: 967265670BFEEAF3B188FBD501A7AEDD79F8CE24B65538A56A6D053F -232: 7E549C75FBA3B16E0BA6C3BE6E3CAA9F5C45A78DDE6CC5E1EE90D853 -233: 9A795A0F33C4D7FCFA58249D36DF648DE3BEE61ACAA2131371B131A1 -234: 9BF0F8A0A2919F1A52B39672DFF3405FE59138051E67E0D7609C3FEE -235: 6ACAF1122C142526B46EAE5B859BE5D62CE7E54C6991EBE6EF0E0934 -236: F179211E88FB303D8A074019664F5009BFBD1DC86EE34F1582C1C72C -237: D335C48021FB0585DB327D67FB12554C65E4755B466476D3E10E10AE -238: DF08D65DD48136B07E0E7F5B6C39E1B10FE95212C3DF0CA10E00F53D -239: 5F3FD8A5A4EF847D833B2FAAA74A30FE51D22C68244298A25302B7ED -240: 181DBAE9308B111D4AE06A6229D6038C4AFFFB93A0EAFDA9CF1E83AA -241: 671D5CE9A1DBFFB15B4449CDE3DD91569F875D4BDF427E0B42DE0974 -242: 799583432083CEC377826EEA43B35F5CB5261D091F2BEC4B2EF2DA54 -243: 574DF003B08BDC906325FE2160907347104E664645BD4A9AA16FF74A -244: C8B29DDD1610D96D26F213FF883CEA12EBF19C943EB50BEB895A89F6 -245: 2C57878E2CF8C2FF0FD014392C843341D78FF741489D672285FBC5CF -246: 56B4B8AEFEA02BE5BBFD3D032C71BCFB8CE204B4CA89E22919E11B5E -247: DC5172956E9A8C86E4CC6F2B13D8BC600BCAFDC673842AEA711589D1 -248: 2B762DAD2B6591F4E60BECFC43214EF34D5D435A3DF85E091B30A47D -249: 1DF0613C3E109CD3716BE1D8D7C326FB4837AFAFCB36A6C8DCE14E70 -250: 543DA47D5E9462DEF4AF0118D4B69869E7ECB7AAA6F3E2039E1FE8E4 -251: 0872386B43F3AE3D652EA4575F7F91329413E6A67C16B419FF6E3CE0 -252: AA50752B4CD3D84C98E6883422C15D75AAA99EDE7DE3F81F754897AA -253: 367174DB2317D0E294D768BBCE69F60BBAEAEDAF755C5B2B03F76285 -254: 34ED7159891BBCEC9DF0D24C50F6209B8ED3E5380A34CE0C68C621CC -255: 9E31B671E498E8160BA558AAFACD05DEFD252B2C7D8BA8E9E618FBF1 -256: F8B6E6398B49C87678A1A3235C078D8DB93FF50271D6EA36647F7F00 - -Hash: sha512-256 - 0: C672B8D1EF56ED28AB87C3622C5114069BDD3AD7B8F9737498D0C01ECEF0967A - 1: 10BAAD1713566AC2333467BDDB0597DEC9066120DD72AC2DCB8394221DCBE43D - 2: 2E753E709156F4820A27D9CEB7908D180DD0AF1793D37130379C5FF9C9345F4C - 3: DACA0762A6678E4E26CB8A893D71D72CF3239E29CC837629590B84625DEC14AF - 4: 6DC06B8AE0CB304B1808731BD5E77B0BEFEC809F6E02379623EE0F00C10B6586 - 5: F48B764B5D6EFE72FCC9C113668A8AD8837D9245832948CDA1E77743C9C501BC - 6: A697459F59F222B055E111E791211DA13A050EE577711B4EFF2AEB7B2A6E7BA0 - 7: 39783BC9E859E0982346A792CF315BF81B492E25A12E279EE845BA6BD14435DD - 8: 20971D26D0FB904D66029DEA021A24BF8BA096493561EF86A3F75E84D3091406 - 9: A42515266DCA56240A7E09683880C0ED5AEE04221D7DFC635107A2762864706F - 10: 5F9310E9D1D72BDFD98FD0F3F442F316E5107B46FBC67E162350756B061DDBD5 - 11: C19109201CE9314D5BF1873B9B98185B0F742DEB8D6D2AFD526B8095371A752E - 12: 0A850EF082ABECF9899A6E6C5701649C7A4C41584105315C1BC0628A0F736BE6 - 13: 0EC705FB202BE5AB4CD22A5BB60142EB33A4C4F0E4DA11F3E7CD2A76BA109704 - 14: 3C33C4E6DAFB97D45F403BC662F76B5505365218FC63F23FA49772219CFDC806 - 15: 7A9A6B0575546936A59DDEBA71D76FF145478076906EFD5E0D4129901102F526 - 16: 4725E7C23DD68B8B2D722F2D370F4340D13A0AF42BF574F741AB8A89FABA6CA6 - 17: 29EBFBB5E153E98CE0FFFF83F39590685207BEEA613746496C75D984FEDE6A43 - 18: 81ED8980C1D6623A2A14C07898D0AAB69A5E89CDFE756439BF544F12CBAAB96D - 19: B08B0DE05F73D0BB40F152556ACB7413DCE4CAC59C57F95FA30F5574F5A01EDB - 20: F2C93A59085DFA0E71D7E962FAE74C8B643867F8799D16C1413225AD4CEE2F49 - 21: D35E6DC12DE337F89840A707838BE9D5CE13C839A85F8D82F92CFF2FBCF28B37 - 22: 55511CA658E7001FF7BBC193AA94006917D41996D8D0597280DAA155AB2AAD76 - 23: 925619C01E78B771F68401E5BB1ED1FFA698AC541FB88AABD7DE53973E20BF0D - 24: A2572A13D58039EAA827086B83092D235510025B3E96E214DC848B42488C46A9 - 25: F7C0B4561BE28A8BA941BCC03E7E004D6479234AFF2FB7D5CA2B48F059D1A16C - 26: 34D424317805ABFE78585C9F1C1AC0A29F1DC899D0BE57338167FF9F9B473AE5 - 27: 27BD8B29EC37CA761B9A51003F5DEE9767F7FE8155113C39796C379058624D36 - 28: 17CE5B8FDE3BE708F1AA0620998FD7CBF9173283D5432C3B4AA0213D466B544D - 29: 3A8EE8804B61227C32240859188830215D61D8179DBD4789EEBDB94781DC91BA - 30: B4A6473F90CA2E87FB330996A826916374515ADF7B7BB81334007D05DDD2B00A - 31: 82B7DF49A1D7BDB09CF1183372122339CF3FC28EF9743B98FD193609297313A8 - 32: B1915EAE84B12616CE51D7E259B7AEC3798D427A735BB13226D07119F651E981 - 33: F0DAD0EDF6A7C761E9A4EB3C8C22CBDD7F82F391B74F929DF0AD7A73D39C4491 - 34: 35CADAD79D50C2A3BB0D5D86727A3BE9E6093A2BF8CCEB0BBEDA3023F7BFA1F5 - 35: 73F5C99BA298515D9407E042C2A544907FEEC14722D22BC51A0D2D19750265BF - 36: 40FF68F9B5E4D61CA671AEF51B9972713A324E9852AA733FAFD03E0A1E7A2483 - 37: 43F79EC5D92316181F4671B464B5069F68FCCC5D87031D273A47C6E3BADB2F09 - 38: A6A8BD5CE9C76B21443C0A076ED0E059B50981A540F37586AA41BFBFA6EAF449 - 39: 161CE872D1771C378CA7208E8990776B88EE4C5B7DF327D7B68C5781A677A2FA - 40: CAB370E6ACC494A41655B487848528AFB55D884FAC6A404775FB5D4C305552C9 - 41: 6224B54ECA83BF2517E862CCEDA851D78E3BE0C9BED185B8195D0EBC85449C48 - 42: 42DA7812A177FDDABFB5EF5705542AAC732B2C9B8D7349F4150704BC5186948C - 43: 5C51E81BE0EC3817465E968AA07F049BFF7CF7A67B1D355E1E254EDFDA222F71 - 44: 9A18455A2460C62F4436E27CB08B385ECDFC3451AAC79E27A62B2A6A8EE00358 - 45: EC5A90362A75A517EB65D7120C05194E643378E6DC259B5009C6E7279C23B8E1 - 46: CA5F388E039F5E0E74158E959B0282B266AB4C8DD81223031882524297402D7F - 47: D20DCA54AE6FB42A967FF2A9AE686335A3C2262A1FA4F3E219487131D645DB0C - 48: 2D3D934745D397067D63F0B05DECB78D5392E08904D5ACC8287B0CDB697E191E - 49: AE4279312B901FB98AB0F83730EBEB0C30ECDA2E1D1AAAB62008BA5384A30BFA - 50: AC308FA5DCF85624EA186DE4081B3BF0B9EB754F8C938E992668263A87AC03BD - 51: 99EE8024BA8C355AB416B7DF162910975246F61323061EEA67ECC9C1A000FD2D - 52: 7773B4CE08E9DF85FB0B138F99A76ED421668ED19D0EF9766C5252BF9AFCE4A3 - 53: 72B6D710DECDF097D4F7FBD42DD9B9E5595D97C81D436DBA2FEC96D0D720A992 - 54: ACD22160D881277F0010D2575AE3667B0B17099E65FE34CCA75D576A721E53D7 - 55: 7DD58A7C3285D6436F4B8876A4E3CE63BAE92A11A5453C46A6032C5E469BF40C - 56: C06D2D4F6D22414491B36E215DE341782922EC36900CFCA39F4A707A5379F51A - 57: 9B0810A0330E06AF78DC08CA491BD248FE6E36A1E89FF7B9BF65AAC9E760580F - 58: E97AD0EC164712E8103CEEADFC6CD3F71F0940351617D39726EA5EF512A75E87 - 59: 79322D79A95B60F46F2EA43F94378C59B661E433B4BBD3595734586FD354E93E - 60: B5254E8E1E349B60040C76F6FE3BF9B81FC83F3B4249F5FC020D1BD182C1F818 - 61: 9B7A90CDEB29791070A3C22B14DCB04554A802A5A441EBD0A553D2C71464CB6D - 62: D0919ABDA514C7F246DDC9E6F104D61CC7B57336E3E8A658D9DE814994207B36 - 63: 53B53EC7C0D980B7980C16A40D3F7FF83C1038D0300B7313584DE5A5EAE4497A - 64: C9E483B9622515E83259E1E075746B70142CB1217863FB8C85FAE33256F4188A - 65: 9A1983429845A7FCF3191B15EDFCB8A068200DE6224FDE6791DA4C97FA6258DF - 66: 17D3846C20485DAFE0C807D0EECF5AC19A1D7DFE5EB27D569DF16CBEA52E981A - 67: 79B96A06D61A8C08B9E3A2053A3D990963E1D4CBF7CCF3160E474A3528F5CB2B - 68: 58482B747195814BE99F0ED34AF9AA171184FC2596BB147142A7863FD18D2B33 - 69: D5B79F2B49B6B50DD99AB886A3597913C561CB0ED370DCA6FDF3A3FA005709E4 - 70: F9CAB181A422478F977D5504F9BD824C30824AACE2A1D6B9F1F909841AAF9E12 - 71: DFD1598FD7C9BEB3C4653DEA2D4B480C87E33A7D0CEB1D97DEB4C5963DF53D16 - 72: 400F5322C0FF43DC5200620BC37FF4A9E24AEE56133CF7EBD145A39EC251A2FD - 73: 742E35F513B7C9728D99A11E92371D8BA6E896FEAC9D8A0D39E4495CC256D927 - 74: AAB4949E557839802A695377680D05503AC6D3CD75DB9C1F8E8A9EAB38073191 - 75: 5CB8F1894FD53479E32A37807EA634DE2E40B27D010D0EFB51A9D72056AABEEF - 76: BADBE2E21FA08388E3D8370CE52C4B238FF609467A210B55E85A294EA8A742C8 - 77: F5A95E8A2DB33C41E27C6311C38072855A449A46764CB06E83E2009F55A99690 - 78: C4F85961E3573BAA0D7A641C54FD823E1CB14AD0A80EB39EC51520C3811971B2 - 79: E5EDCEA3EF14F62971F2A7AF9844BA087FB1B788A71D45B2F742DAFEA4BB1995 - 80: EF2C5202301B45464FBBB20B620E1DA64DD3BCFC9CF70C4730034E3454FAF167 - 81: 7B634D4FC438A677BD4E870F6B032FFB560BF0B8C3DD725D9E8EDEEC215EC548 - 82: 83A722BED1883050623713ECB5579582798F2DC57E005B71260C524477EE202E - 83: 8EB021C8C8AA70F7C4AD48870014CC7C1E145584440CD43588908532C92B7BFD - 84: 6022BC8D846AF68A4657F2D6BE72DCF61B1CE43383D23444B95B2AAF145A7079 - 85: 47547F2B77898B1DB71CC4565ABFE511DDF9B965FAF8FE522B346D5B236B692F - 86: 5BA80C644AFAB98CEB9C006077DA110E52CC63C341F0941228A5992BE8D1DD65 - 87: A6B25F4E9F3AC57169CE0382D90B01F4DCC0F8C32C27ACA4A2F7907A013D33FD - 88: D851BD49FB420914B48EE013820E1C687063280292FC3DB19BA1736DD6DAF398 - 89: 5B975A34E73FF6566C891DED0CB8C7DE4AFF692BAA0927242098EBE7DB3C9D89 - 90: F2C574E2D8CBB04A7D40E5C3D135667B1C87876D0D2D6BBB60D4DD7C5685E9BC - 91: 1B337E6A77B5A12F75E971300C3D45A58B3C03C7185F2A3483B5A96CBAC4DCAB - 92: 4AF936D81988008315F97C57198E004E005C397F5AF713B4DE91C362ADEEEA27 - 93: 723108E510BB95B6B81096E9ADD1F4172746B11EE25B20EC0D7024EDA98FAFF7 - 94: 441B54654FCA74D21B181EE09949FFD08467FDB46809F5483DCB4A22155C19ED - 95: 0526880DE16DF38A3694017D726C488BA91A367987668D37A941B302127F9EBB - 96: C4242192953036ABE19D07719D2F1CBB8FF0088753D25C58632C9E2C600F5600 - 97: 1FD87DA597469DBDBD93D81DA9FB3678EE01B6B5E897BED5DEC5B17A077040BA - 98: D77403931FFF61B28384CDFC3A9857272D3452633B9ACEF703B668E564487E3C - 99: 19488ADA94F1C4CEABBE07C407BFD59A5F52E4F8EE964CBA6442636DFF12C925 -100: 1E6871799BDF2B3937F8458D124C4AE55AE5B4298EF6A83B8763070F4E2A0F3F -101: B3529A093CAE29DF5E4EECE729AE053FBF4579276DE2F90859C57D9579FAF6D5 -102: 7EA44D126CB99EEB4F985709BAF62015AA9802442D9D352D21FC75ED23450F54 -103: B52563C175057965565F8F6345282F5048846CBCB4DC920664CBEC585AED5DF4 -104: C2282AC6771F2651161B09D48DEF64CC305ABC98644C6F670D2F0E210FC9D16F -105: 54491B482182FC0C0D7B3B684AD8AB29166D007DCA103F0B2459E6834FFBDD9E -106: 1B673FB33D5A8C78E5EE95B8D7DBB22689E6644CC3AFD634A65BA79EFB47DCD5 -107: BF844D58767FA5C221422E7E12A8D33B7E529E6FC54B71813099686ADAE01938 -108: DD48C0124465C585979B4D874EBF2D62A0DDA994FDA7B7DB7A54352B3C04D9AA -109: F9B4586DB8320E1A08293C5C362C0234BA5B897D9A24303FF15309E34712B89D -110: DBF58866CDC3A0F11EB0C8AF7908C4FEFD4C1D1C2D16EECE2EC67A72E3D599F1 -111: BD209F60B0D04102A09175297FD255367E54B5A5605B928635C606306914363F -112: 2CAFEB0882CC405167E9A255B8581A66DC683212474902DD453DBCA20A94E61A -113: 3222333BE019DC995E5DD1496D5859DDAA491E03E7DF81A659D5E74957BF3B53 -114: 2CB19434BCBEDB42C79311C0F54AEDE574CD7541897075031D3A5061EAB75E84 -115: 544468938A91832E1491727D68C4D882E45E4C53CF2E94D6FA972D97B9383B66 -116: 7EC78AAB48E24164F2F4BFE5C98449A864C21E6548866A921DBB41C1E56338AD -117: 291D160ECEC8BB0A7555FDCE7BC0310066950B168CD6222F70B28F1EA2781D77 -118: 0EA887F7B2FF29215486DCFFB6336FAD698DFDE84FAAA7819C3229025760309F -119: 6FDCC1A442CC8391D7DD5A0DB6601EFAEE9A4954056C78A64038C36BF7ACB368 -120: BE74A90ABBC2EA03FF56DEDAE4EDA154BA6CF24D73A515903356283B653F5109 -121: ABECAF3391F6ED54820DEDD40221A6A2D034632B5CFD99F0E415F2D0C487C2B9 -122: 1B62C738AD0890B7EF86253EEA5BA612F65F9C106A04EF7F8F8D0DA2BDE1A436 -123: ED19094777D33AF6FBBF59170E3299CFFA2C7CEAA394B639DEE7E6691F7F23B2 -124: 715DE0E8C09E5FDE6BDA64971E9992A11A229DC1EBA3DBECA89CF1DA76757F39 -125: 3B963901747A3256269D07A476E4E3E6C74CEF45AEDCA3EF39897A3E83307C52 -126: 1DBB2537F9D1C789D59B43C188F0148C4FF00E4545F15EEF5FCFDB5B9C771A9D -127: C26BC7E9315E62AB0DC6AEB577724D07C09B0C6FDFC0A9F08D8548047C032248 -128: 2FF11194B2AEC1F943CB5F130BA647C151334068083194D7281A55D607AE255F -129: C4A3BBF841ED2A289E5109FB392229C80DB61C72FD92079B5A4F0441F095A111 -130: E9ED1482130F49D78F1FDDEEB30C8A8E255F917DAAE9553907E95B8242554C4E -131: 662F168860670C947B0954E99DFAFAABE57CEFE784D4852BD8B2F8F0118A2D6F -132: A492C90A1674016E0A2A4D47A9090C0BB496DAA57B57405E34BED2A596AC5D08 -133: 5B468AF710143DD99336EBE35CEC44D47281147F117A061279AC60A238FDF0F4 -134: C84140048F97A2B07831BC654821B316A1286A04CECEECCC172F0CA0039A886E -135: 9D4C1DAF06FC13D4E6AA4439AF56591E86302F5468ED2FD83DF5DCEC3EB5B741 -136: 744B6DED6880EA488FA1D63D52F1E5A49A8340A706C49AD81C017988AF20D2A0 -137: 89CB7DA333B0FDE45AE45950667A550E47EA40EE5E90F24CD76E0EEF8C524C4F -138: 7ED320CC648E71F703645E24DCC138CCD709B2CC301C2DB5C3AE5A12DC7D42B9 -139: 5AFAD9784B470924013641DE8B3D022C181BCD54D809F0A64FEDB2C4568997A6 -140: E503143A958D963BF71095D20C61DE3344017A745654EFD640C89FE5E07A1B70 -141: E332887A707F2A38BF12301B029A5D6472962D937C4056844E3224EC80D57B67 -142: EA6D40311804EB72D7B28C81FEDB6F926B7232AC8C66811AD1382A8BD4C4F840 -143: C83F8EA193498359183EB8A66958348E5DCBFCFADBAADD28C7020238BBC0B339 -144: 449043A396B3A48EB3467612981A8E666D60DDE6691A54CEED7ACB0E6E901CA3 -145: 978BA98ABD7DA915CB82FFD68E6C72EE336160809A9C98D0B73F6D4A5A2D539B -146: B7FE297A5A8EEF8BC273F104D7EAB6A346773BAA0C83BE78CEA1073EE6B3B611 -147: 3CD2AC21566B717D67B7CC2AC13F7883C2F05D6871F0A59FA2BE8DB5A11391EE -148: 276C34FD66A673BEB30E90B37ADD5EB27D8C07A61D7BACAB8B948B2650A97AD6 -149: ADC4756A2C775692463B9E25D3DDBE7679355F1CD7C0A63CC5B880C9EACC3763 -150: 251CFFD321CF37D9B80090EC1AE296A450B05B8DD151D60BA1C9CD63E0C5EDCA -151: 50550008EBBB5C82F774B0C6F2BA1E10CE411F44B67475515D7D515741A1FF19 -152: 7EF41372147DC56403B8EDDE2927CF7ED9C2AC755D24CFBB3A792F02A7E1E9B9 -153: 29BA190962830BE08A9D26DBD06B39F4098DFBAF63689FB732047C3EFA4227FE -154: 69943757A8848DCCF71ACEE24030DB8BF32A4C5799EA0188BDEA6F85915E530A -155: CFB235AA688E22CB7082C938A4C1FF0AC8D2F0888058A6B783EBFE538D36C439 -156: 9FA588A94CAFB1B9253AF2B2043BEE45B11C22F25939AEBA723B18C8B523155B -157: D5826F6F131A682F6E6C3EC66F00C451DE9976A74221F031E6541F9ED96E649D -158: B7586F758A8D392648F8FAEB8AC1769632F812512D07DEC1B8AC4110EF932028 -159: 7EBBE53085A0ECF3319884CE0DB4F8EC76473783E1AB2FFA953F25C6E1E76A20 -160: B301C3CC815CD2366E0B31074EBC06119400FDB8935B713CA6A44507AB88AD3F -161: E45D33110C77AB146E69D214CFC29B8521027F318A20A617D0F17D90E598F6A5 -162: 5CD02E62E506B8BD6D00BC2A7D4CE8FCE52103B7F2C3AF0A85D1FEE52D736C97 -163: C5F15519B2A71222265DA310E521CAEB50CABB221E3BCD6766D0037EBE76838C -164: 8F619377F20A94158D0ABEAA076FC591F44B1DC917524CDFA6E8A46D56D677A8 -165: C80FDE1BCB0A393E5CB79C418565E1DA15B2520CFFBDBF9D8A078F1E3DA3051B -166: 145AA28DFD7C22E2146EDDA61582E59CDFB3461C034E21A7021DFE9A87EB4F02 -167: 87CB225B33F0D1E4342CCA75D0B6838F3B5E3639605DDB6C34ADFD1F000F3628 -168: 6723FA46D8E660D58DF08ABC7B8ECCA5687BDCFCDE075DD262F351033F29B3C9 -169: 318DE82AA52B2786D92DE178B3685664D17C081937803792CD8E58D15B0436E1 -170: 1829CD424106FDBFA4CB062AA7B55BD0933EFC9DE2FD1B3CE9513A213F76051B -171: 36E31B4B7CCBF484C4A1E5D169DE9F726E3846344D9C2D7FA0D09BFDB6C26DF2 -172: A67DDC415E7AC24088C728A0C90B5718965AD380790B937584F34ACE41EC599B -173: 408517C5E891A82958F1FB2357AD46668ADBE9C9A62497E625FA99DBC9B39DD5 -174: F78CD14A1F44BCCB28D054965946DCE4EC830AEB10DB7D57453B0096354C764B -175: E7E19357A66DFAF638014FA2F68F97A61774391C0DE6D44BC8B04FD73A074194 -176: 2F43764BB6DE5F371DE70D5D321422D139E68036CCF4BEF548CEB24DD0E8F7F2 -177: 842FAD62A0B5A057DD95D8A18EBBB38DDB94E2D8BE8CBE8CB143035226F3D3DC -178: D2B5E100E50507A5CFA81D82B1675B346CD472192E781B2AF427404D6CB7DB27 -179: 05480D17248024985EBE22CBC9BC4FECF680D1C98849A45EEF652692C85E5124 -180: 44866966D06C8FCDF4E07074E1309B9DA6C498C5F624FA71DA12EA90F5659994 -181: E66A0FBA1939B25E533EFB1DA1E509111B1B2F135E2B395DC7411F1C5983958F -182: 7CFDBA5EFC5EB2C562293BC1102F9CCFF778CAB78145A3D2BDCFD4C29C5F80D9 -183: CDF05F2A14BD01139E731C82E8821AA4094971C95CC6A08C7EB4643742A3B871 -184: 52F30234CC6F24B7637DEC71243AA70C3130BC74593AC6C794EB6D5AF563B11A -185: 7A7933C4B7ABFECB8D7D1FD331A15AF98512A3AD7D9D9C3F23BF99F189A1C78B -186: 85A9BB602894578AE83F18E1ADCB63EF6F9A3C13828BF212C751A285B30EBDEC -187: 9C4D7E27B201D6B4571F897C2AFB7E95075951CC96E31C01DC224BA904A6ACC1 -188: ABB898DE6B19F043D9481E69DD97069061916E05F3415DCFB5766847A923F9AB -189: 8CF262389D731135956603DE1429E35290478239163F17BE26D92852D5B3B612 -190: BA6D869CEE76015F45212B41613A567985D9C30D363E968948A07190841F3B5A -191: 5520437CFB0246D7279CA01AFF3C8B87A7B228309A0C0C64313BA54812DE6FD2 -192: F2CEE575D139DA5D0C49A888EC3A573F3D28496699FC0F3C82C69B2FF2CC8FD9 -193: 3256ADE32D4D17F167179A11BB42888A78B0F169E0F900406E2E6527F83410FA -194: 0430205B244020D13A4E99F927EDE6363E69CEAB486F899676F092FE100C8E26 -195: 6B6B0908E9C1FEE98B95AAE59BDA5EB6F2EF14EBB49747175F0224F16A7268D0 -196: 5CC244BB87F8B09058DEC56B3F92FDA0A5C5FFD375C45D4B2C6259D9E7341494 -197: 8505317F0760F36B40A6781DBF6095BEE4A4C3C207491107C2A8F76368578250 -198: C76F387DAE210C7FD030E591F35D735258882C72C847ABE2B7BD7E0B42A8A23F -199: 2AC2E952027767245AA4EAC553E531B3EFFE92582924FCB21D9E6E7E67054209 -200: E511AA65D4E53C0BB6065C9E1D2882248307FC4987E67FCA18D7E3C77017DF65 -201: EDF8F5A95B1A6F3FF8AB66E2C6A19A8AB40743A079E936510F40148AC735BF10 -202: 053AEC7A30D83DBE469D8F2681C13147F79FD0DD9F1A1A0BE497708451905D2D -203: 21433FBA9B1939EF2C4AFA26BEAE530E2025DA29EA0F6EA68C0BE12433517BC3 -204: 52ECFE9A21C46E99B5CD93BE95C823C5833BC31CAB438609418B4D7F9F8563CF -205: 95BD806F45711A55AEE76D774CD61EB525B6C0BF30204F4D8032E3551C986F42 -206: B3B55F8CC17DEE54BB1244FBB2F8CEC30442A5B40EA1841D365ADE811B2AA782 -207: E1BDBF67EB54ACE9E283DFF0F8483CFE372362EAB502439F960ABF5D67465300 -208: D47DB397436F5F0A2A7A2E8BE41AA9422E269B9ED7885D36143ABDC43DFD6700 -209: 7BB4C3B85AF25263FFE1D275E32874F7F1A9D1EF9D1D60FB4823D6BFA7E264A9 -210: C9C929BE3E43739965C7E0674BDD1C6EA72C50297747D3BF3AAD42DB47E2FF8E -211: 12E101B96C9CBB6FF3CAF705C6CBFB89FC23AA4C9677DC5ADEA067B6F0A07F93 -212: A01A6ED04C9AC88BD6B635DC1EA960F24A1861673C6C8AEFBFCF5F395E9DBB00 -213: F32769B2C875B9FF94BDBA4967D43E9A8FD057DB6E6C30AF73D193B7043CC71B -214: 9DFBABF53ADEA41DF013F7DE81E0CB3FB45460D0EA05A4A118F94734B5C46108 -215: C64F0999F72491D5D231934F61852D4A80515D8B433919BC428A97460CAC706C -216: 727F38B67AAC9F8769C6A6DC8FB5DDEE59EB1D72F151384A3EF84B0D002A95D7 -217: 2F3752B1856A41A771463FE86D33691FCE73658B4F4D0618267850175425FA57 -218: 4A98E1098631E00F4EF84982671723616230BEDEFE262F4B85529410A1610341 -219: 531C4689A799EFD30CE2A2D7E402DC4112662E2CBD09147550BAC74F9B710E4B -220: E9AAF8A14AEA7B7095B68DF1E63BF61ECF23DE3336CD949CD7009011E26875CC -221: 5D601683D4AA736661BC2AD3DB8EBCD805782733495A973F3952BA5CFA272A85 -222: A322AFFFCCF4EBFC1235A2DF3EF4037D3F88A002D221D2658A5A813A4499850C -223: EC30D001273482A2DC2D362CB5F6A33C2156E923E2B250CA385713D4C0B01D78 -224: 2A6ED14E53950B0CC3AE36C157829AB67D8968EC2313368FED1277EC96C20197 -225: 01090CA95E440A43638AF490BDDA94E1AEA7B043DECB75797E2CAC04F7DB0640 -226: A18334813457B25623E0C90CFE5B7FB78BB8F3B02BB3EF1E60F2B5C466FBC4BF -227: 3F89302B5AFB23AC66C5C55DE02880B66EC8559D67852B66E754A819835BE501 -228: 85B211803476C33B845FA83E88FA79185C197254A72A413EDC568D1F6849CC32 -229: 08A363B5C2637D0F22E6A252C850612D66156FF2786E3D467E8076722B49B95C -230: C100CD4D709925FCCA80E4D9A173C5607638182C174458208AFEFF23B4B3C206 -231: 373EA0C75488AED51804B6E6C1C80413C234C13FF75D19BCBAB9864EBB7C2C90 -232: AC1C350458F207DD58DFB3B7EA27EB66D677E57B090FB2AACE98C85B9536E7B3 -233: A16FF8306C0F4E7C98AA5D522874AD88C465D8E1A156A3D9D951886BEEB2C5E5 -234: A4BD343B59F5AB8851FA2BA52CDC0D66FAE5C0C17C108DC8F78C2524D2F92D53 -235: 3BCE52BA2BF56215AD45CC66AAFBC61E0A32EAD8B5C0B52CAF78B7F47BE118B0 -236: C6AA797F5D490128E8ECB7828EF565605D38DAC5D2532B87B98E01B82B590159 -237: 40F2369A8409A9E373AE61F39F98754419257B8D602E89BD6646145CCFDCDF7D -238: 72CB3D5F5474F0FD2AD89B5811A13F9FCA5AC514C850A19A27984BAFB571E0A1 -239: B81472D255D80182E196481E5866AA207761A152302A0237E242EB88C577A428 -240: 6CA13C55886B74A5CA2AC9782C4B9A49FE3AEEEFDFC0CEFC34984872FB4C54FD -241: 1A488E47268942A41B5733238286FB218AE45D4BD9B59B48E1C20478410943F6 -242: 98DD6E9B848D21D02947BD75B6D220C9AAAE20AF0597C50D70896B5F494ADCC1 -243: A8DAE0682E2A7A5A7D7BAC33F409D4A2377BB7454DA5B4708F37F7435B52687D -244: 21CCDC5EFF5BDD96C32D279D5134666F5B3B3E5AF86D0A56E1496DEBCE229D82 -245: 69F37D48186A4D243267D8DD064BFC54989177834A0FEACFBDF22160D6A8C2DC -246: CACD4179F2C2AA00207A70DB4B1397C2B0F278B5F926EB6A32EA349DACCB9CDC -247: D8D16C8EA78D7F3E047016273B4B145D82ADEFA1017B07D25B36CEACF5266B7C -248: 5AE8021E842AB071A0918438CFA7D1522581994D421838B61F53331E5832137C -249: E3872214CCEA7FA48B5B32FCDFEB5389E0AFE6C1F842CD47BCEBE52FCE5F3D4A -250: 153EFE4642407F27A595C3B78AB2535F34FFD7DA8200E81E3AF8027DE8F237C3 -251: 076410D63654626C4ADA16A8911918A203FE3345628D4237CB6EADEA67A8A070 -252: 031C022F234308A9AA5C9532ACF563F299F9A63D8353F294FD8C46D1BBD67D4A -253: 718E33A2A762F99E7F1146D5A3A1E96156593ECAD1878911EFEA11AD15B5FC12 -254: D0CFB8A40E130BC70905903D1EA8EFC7A1DD0DF7E35810472DFAB302C9480C44 -255: FD932614F375BF71420530A690CB16E52C08E99CFE741AC8436FCA8C8BFD5676 -256: 0837A11D994D5AA860D06917A8A0F63E3111B95633DEEB15EED9949376F37D36 - -Hash: sha3-224 - 0: 6B4E03423667DBB73B6E15454F0EB1ABD4597F9A1B078E3F5B5A6BC7 - 1: BDD5167212D2DC69665F5A8875AB87F23D5CE7849132F56371A19096 - 2: 334CDA37A26C0669CC7A5074452F033FD57FD96AE0729582B69F865E - 3: 5FB2B598EE40EF6F46E82CB8264984AAEE891C680D89AF5C3C36ED45 - 4: 4FB067ED1266B8F487F609F12350AE92CCDA9A197D7DA4A831724D7D - 5: 365C10987F3C57DCA7B9C1FD7158C0E52A394A8FB0ABD43D738893B2 - 6: 911029D5B740DC8F65661C3A137296D9E05C3315D8F52F1FDF632462 - 7: 45C40E1C9601FFB8E7D024968E48581CE067EA33B0EFCF25F85E627A - 8: 2FF69F46EA70C729F349DBCC9A0B5D6166031321AF70833B2FACAA72 - 9: 7AC8B0AFEEFF883AF3896371FAD034386F88941E9C14371FDCEEA996 - 10: E38CF337E48CDB4B64A746B994BE20781E51F4547A4C39240599DCBA - 11: 5891AFA32A2C7435728F0627820908F20A339267E42119D5A7910573 - 12: D78D4B95DB37CAEEC81ECBA9568EB35EBD5B11E134E974267B294636 - 13: 207002605B91D5225A8F89DEE317C747A2D8688AF13CE0E3204979C5 - 14: 61FEAA9DCE58B63BAB08455026AAA94E620BC03F1DACB6A2F75121A0 - 15: 6999702B14328604DD71D59285D3E82ED3E5E7CC44169B21E975A849 - 16: 31F77B0C661546DC776A938983A2A10A2EADBC8D33D4A82863933F12 - 17: DE09A5443FF8A9F87D667C88005D06061D4DC716B29265B278A590C4 - 18: 8B53AC4F3F6ECC2707EE6B404A17996A75B2B3251B2D0078636D679B - 19: 0371C2A70002358F54FC14E5AA4B7F65D825FFEF5A0A4E3C9ABA5793 - 20: 6775D26C17A4065ED4DF905506B42E59E7F40307395BA33E5C4CED1C - 21: 7AA468C9554A9B1DF5F3E01A95678D9E7910EC9B9A6B824DDC28871C - 22: 5640D599AB3226854D178F163FA42818E59B309D56C5A827C172835B - 23: D7FBECD514F2E707020FA059E600A857635E3F7FAF5759B5800AAC96 - 24: 8FD2B6843C0C2D668607FF71C7F34F19F7FB75ADAC806B66C6C7B448 - 25: B81788863F8B00FFC7E1E7EA429616A92EC89EB559A11FB4BF5DE286 - 26: 9E987B34BABEEC98886B1002A5D42778D76BCA5330A03CF032672C10 - 27: EBA0716D82672CFE5900F7AB0BB35FEE3D8FFC95E2DF1BB61354236D - 28: 97E5E7D260B9799D5F315C3FF429EE9C86550394CE833D792C6ED1D7 - 29: 04CB508569475BE9527B16B4C43FF664175CF9F4A387A23D49391375 - 30: C82B33A8CEFCEF6AA1B38C658C066AFCBD38E6F814B0209B5053C3F8 - 31: 2457BF71C2BB07328BA31A109AE3298A6603BA56DE537542DEE8A128 - 32: BFC9C1E8939AEE953CA0D425A2F0CBDD2D18025D5D6B798F1C8150B9 - 33: 6568AE0FA4A34C7E229EFB54A763BE00B843436CF2D19C2B6BAC75E6 - 34: A40955AFC5E1756A35F7EEBFC03B769186D6C48EBB38E4DE613431C4 - 35: 3F1B508FBC4DC40BC4DA2009367ED5188611DB2337E581316BB51F32 - 36: 27DF7FC47C4DE0B861EAFE748BFF5C1C522FDB029247D7A000D19500 - 37: F6EFE4FD3D4F7C8DEEC783E891F9250BD3E86BBEDEDBE6F5CD5B86C8 - 38: 44976B957E6CC5157F46BF52C46855E49687B7FA3102F0043F251FC7 - 39: 221553ADAFE51AA810C853CEEED84EC0A2EAA0635ECCE9BE354D0BC8 - 40: 0E2FBB87B0CA6BD9FB85A32E357465CE68E0ED40A3FDAA36BED423C2 - 41: 1FCB5DB23D17C53D75D03FE26EC2EA74CDB1BF308A5D0B8A18F3A563 - 42: A24830A72AFB30EADF4EFBDB94DEF365744D0F151627EB9BC97D3003 - 43: AC2C3F390F0173B228C73C9AF69FD2D2A425FFC0883886514335EDAC - 44: CE009DCD1C90325762707024C06B19E9E98F3AE645BEC1BFB133327D - 45: E3F3F6EB37420DE23EA22C13D4B5B01D2E29594AB6E3103D0EA80CD0 - 46: 0966D9A5D07F5E2CA13699C46A77502251F802646E5D5C1A4AEEA70B - 47: B9E10F41CC2FBB430D370E20E5081C00C659D6B6A9ED2634CEB25D33 - 48: D05325556666453175764F98A08679952AEC0C9649353E592131FB9D - 49: A4F03909FE084AA3F0E5511E1DDEC77A026E5280B2D6C417BF662418 - 50: 446B0071F21FFB63BFA6054A96F44FD4996F30CB4D398190B42C6F43 - 51: 9F048B051AF10E08DAA0C9FA417CA690A65870718DE161C511C29D9F - 52: BEB65AA59119AB5F8F75D0B64859028D3BCCDC8EEF764D27B70E9F5D - 53: 3E5C923999C5D50A8C414BF627DC53834BBC2C0DB765C8087B287DE7 - 54: 9E9105787BDD3D4E585C2FF029C181F1CA04934607FBB14D1236FE33 - 55: 10681E293CCE004E088BE7C67426F50D6AACC7E31447B0F73A425C35 - 56: FC95D44E806CBBD484E379882238F555FDA923878C443ABE4CE4CDD6 - 57: 1E348592E91C1FE6AD862AD5311868830075C4189334E04EC22CA930 - 58: A7154F3DC5490F0D0751AA68536377DF56D8F2C9FB46496B79AC4B65 - 59: 93D13ACE1B752CD34122C3FF5BA26AB96A72282082AF34E40242E36B - 60: BDA4464722E003C1B8B150051E39E5106E8F05E53397C6B411ED960C - 61: BB19BEDB5FF28577B732BD0BFABAA9F18AE10BCFD193448CBCB89B82 - 62: F2E6C2BA4D6E085BD900BCC499C8ED8341C613AD721C28B3020A9978 - 63: 05E05C93D7F8B002EB5FAB6958A32D124E000143B63835DDF64E48FA - 64: FE7C26EE7D8A00D407EFC65DCD88809F25F8E37395148733E6EFC3B5 - 65: C5C12A29147A04DA59CE54CC657A26AD2B7E65E679F64684915BE492 - 66: C29AF1E7B8F818AC1815CEB1DFA5A8A177AA98B5DC2803ADA079047F - 67: 2E5265A1D7556CAA6F355C36A3E726BFEC40725FBB1088BE2DAB08D9 - 68: 07742BE70320B1D87628531D521E6744282A8F70180CD8B5EBB5AA59 - 69: BB41C858301CB57230FD85083BA5C76044282170123A990F461E3B14 - 70: C885E6C9BE4A56615ADC88657907B0449FF80A0B14459096CAA14999 - 71: 5E31D4BC8904E6E77531E6B975D3DCDD4330C03620E5204BC047CE2E - 72: 0FDD8265D5382246A4EB6580DF2452FFC3918CF04EDD9FED88F566AA - 73: B1D7EDC8A77C2457DD67597772EF2EB3360D6F2C48CE599CBD81F2CB - 74: 5798BE75376773997CE6B43A82BD323D3A5171176D349F0AA91BB18C - 75: 0F8BF99981EC3363F6FD917BDB1B3802761E6383675C249866F6C28E - 76: 7FE009BEFB156B7582BC1173871BFBF611E23D90C7B495E8FC94D7CC - 77: 449702E349D61A6391648DB4244D8B104836D856FA7B18B32F764BE5 - 78: 4F80419266A26D02B97DC83AACC2298775E061D30DAC8C6CCD9AEA7B - 79: 431C1D7A3B1DB04141C4D4C0A3C56468380E1A8810ED72DBF6851E5C - 80: D89AC3CFF48F7F73861ED16DB3FF239559BA8F04D4E9C46F7ABB20CD - 81: 7259CD78031B5012BFACFEF147D52A8FBCFDC5EC1A5E54B38014F6F3 - 82: 0E5BDF794984DE3C5082E8A9BF5F83056FE28990791707979350CCAF - 83: D49E2A8D59F3F60CA46180250742E74AF7C3E6356FE8D4B9FD145193 - 84: C4F63E763E463357642AC06CFD84DAFC4578D36AB63766726EE56320 - 85: 0C91B9E9B50B98FC31D4F70545692BF861E148DED0C6E712F710D81E - 86: A65ACC6242A0C8DEBA233A3F1FE4B9DC0B4012D45766CC22EC2EC96A - 87: A5208843BA4F129C0129323CDD22303DFD25A1F6D9063C2BF4FD08DE - 88: F6F6420C9DE252D2203641D4D68E7C6C14F8BA7B5E159F05179420D4 - 89: 82C4894ED849BF4D18672865D98A35FE504284E574C06E4310CC9354 - 90: DD61E5602720B1C1885CE5DFA61B7333259DCEF201A5FB7274FC948A - 91: B37608E84CCEFFA667E5EAAA925ECF00286C3A6DD97EB620B300C7EC - 92: 1C6005AD8414EB5FDB90FD8F8F241B781C6E78922BD5F155EB8066BA - 93: C79E89E33C99CBC50BA0D1781C45A1F2692A2FEBD162AF590E390753 - 94: 6B7CF9DCEA9126FCBD0694BF5376F4428F197E5BCA5AF957457549D3 - 95: 9E2FE74F3D509A5E0FF21517F5ED277D010AABFC8EE6DC8DE589882C - 96: 3FAC97532617C7CA76E2648958C9470A3AAF37AE74C28E5C95FE884D - 97: C855C493D7ED05F8D871AF38F66B3EF6FB6BB4E9ED45D1D23AF0FFA6 - 98: 490CB3DCD9A9CADFA1C590C9EB8695CE5F4787213CED5B7593CEC26E - 99: 8EFD1D71D36A31A799403596BD1189A25DBDD3ADC5E2425AE952B25F -100: 21649AC9D0430D74D5F5261653DA46C87AC1560540B4579101083461 -101: 03B96617EDF75C33E4949E2B462EB75828546A2EB8308BDD4C0859CF -102: C556DB7B33E53BF1736D9BC84F30AA936A8EA4AFCC590D70FBE647AB -103: 8B59FEFCAF88187D29EB7B887F5C066475168A4348DEAC4F34993D63 -104: 2027BB84E1A588623F3F5DDED0663BBFF3B93D46C65578CA892F6D91 -105: 9F2AE8EB1AD97E9B3DE8EC65BE32908225505B249F8A7A01405F2E82 -106: 3FB6E70E2AFF0D7E0FABE4A4C93B689F72D27DA6B79FB195EB790BE3 -107: A805C623242A8C03376E463285999AAFBA952369D6E87124827514A1 -108: 1A8C1E9940FD32E203065A840071FE7B4F92E51F119783A356849F12 -109: E9BE39172FC3D85C099484FC1854351A1850232F12BCC98C90ACC290 -110: 598B9E288D05E0D7F3739967C706BF888BFA4128A32543C662709D4C -111: 4FA336790D224B4A79FE2992C5A2B604988A8DBF85A76068DC5CF3F1 -112: FC8B641FE0A9268A14BC1CE81587B80F31A7BBC8D5600E310F70BC9F -113: DFC4ED11AF8646B394E816DC1EFABD6908E6ED5ADFA1CD911C905DBA -114: 2E2AECBD2EEFF11F2B904B57F514C6F26FCA9BAFA7431BF1E74158A6 -115: A7B03A76C3FAB1D2391F527FC1FD071BF2E1E98F8BB09AABCBA17727 -116: 1C9FF49680486878EFFB763A10DD1FCBEBEBB8B947086AAD5670F019 -117: 1AA1ABDB490CBC83DD173FF2F893C1E28554C5A87669171A388ACC91 -118: D708FC237FAA908E445B0E5C037558E0A30134C7171489F2EEA3B34B -119: 0509BC607ABB229F4F9328159195249390630860534528D260BE452E -120: 28EEB96CC2A73ACFCF6D7A4B8017315291AF31BDEF2DF8B09B8A107D -121: 0684AEC742C636A0A2415DD0D710B9142A4FC45E8EA5CD2226B26F6E -122: 8EA838B2DF09920001FC3D86C2DA985C5D456E2C555AFA3C2C94153A -123: 7E9584A788305A9C6CE95AE9F6E6214FB068D6421356FDEB9472C681 -124: ED232D89C157749B47A1A0CB1EDD71D7C863BC8822192921A551D15E -125: 2013B0AF19BD61CF2DDABBB7D45FAF04784103210DB6697DE37CD63E -126: 5F20F121AC27794E25A8058ED9840EF36D8668EA360F82CA64664C8B -127: E0AB99E85CC24D5AA35B2B2D5A80F15CC70FE6443FA8ED433F9DD8E2 -128: 935982770B8E39A960C38939824E4236085FCAB2EC5C00D72FBF1C78 -129: F95558A7F2A0E7A5B6F205F1D7570AE7AA08D3D50FF137CFFB5201C9 -130: 6F1D54B0F0730DA6F13E7B1ABDD301F278A979295EDA0CC9857F7DAC -131: C743E948DDE59240651706C46B8CC6D931305DCB7CEFD70BD0653368 -132: 8C26212B2F2CB047C94A2E4C312D92768A1A05936FA9D8E0DCB5175B -133: 67DD1365E9E2EC75F4D96A8460A0A9BF686827920E2B7FBBB0EF2925 -134: 6D8A43354B6C4E4E28E93AD60E16DF666EECA61B360F718009C445A1 -135: 3174E5126280625ECDFDB238D6A10D1C8B071031870ED197640CAD90 -136: 5D633F7E245E4338FA2698EF8B0CF98B129B5CC99622F770E3BA0CB6 -137: 7098DDCFF44C0AE3E0802D8D60FE7BEA8D0D3219CE28660AF1AEE40C -138: D6537CB1962DA8CE6415A92512FDC03BA319C9AF89EA795C2EA962B0 -139: 5BBE5C79373CAAF7F79F3012E96BF5AC0BAB10E324DFBAC3D29BF374 -140: 8EB136B9F46C1F40F82DD7609E65BCBFC45E641CD0262003DA81997A -141: A8DF4DBDC4C5D535EB3F590DD7E097E0B1B3ACE931447D987AC25E94 -142: 4353E7ED38EB9CC41ABBF0709C6AB707DE70D759E5D6EEDF09043FD0 -143: 64D0E8A1BE3CF30EF6727B30A6E428F7F068D44634C943D277AD8E7F -144: 5BE75E6A08F19913A1D8036C056CC4556B98DC90AECA3F2A0664DEDC -145: 90B861AC1B1598459AD8337AFA9933CE2F1A6F972C57DAF8FC2737E4 -146: BF0135795B4CFF740ECA130C323F8B44F663B0C4F9DD4A753E6D19C6 -147: 5046B58A09C9D4F0B46557C1BD29C681E1D8E6753A98E321FEF9E668 -148: A500B780B184DB8CEFA4431EDCA414D36096D69A257200BD58DA50F5 -149: 23543FCC62111C1576B4B66E27E08188AA4F428D80EDD0E296FBB93F -150: 179BF2290B46260D60D729DC9FB547A67A25BAA7B250D81B42473888 -151: 93DBC78BB8581796D80A799867EB7433A76C1112D041A43832F46AB9 -152: 86B38BEFB99A0C37BD562EAEDF416CC98D37FD76EA6841AF2BFA00CF -153: 586E75D5C595020D039B905BC0C72549F1F0F263F383071873B1A3F4 -154: 228D798D4B715B2CC5ADC9FF00FB6123A6EE5DCAB09C62CBE0F13610 -155: 4731F0557591E5F2BD5F4A82B2867217D2F187170BA434DBF3655D72 -156: AD2EB6EA86FDC83E7DE7AB85C8EE63E3F74B8C45E2F17F3DE5AAEDEA -157: 4F866857ED64EC4489465BE797D6E32DEE4866842A35EB0C3EE9DAC6 -158: 2F50B9307F67E63151C216D66DA5A14AF9AC3752B4D8C27C202D5CE9 -159: 7F034FE5B2F0109FAC7449B46DABA20944102E25A31A0C346B7DD1B2 -160: B227E462031692D03AA4784E7DBF6A5A18FFB070389D5B245957C911 -161: 1F66E24E59F472BDAF073E38CCA1FE9F0E3FD3158C0E340E1737D8BB -162: 579C94ACDD161130A3314BC21E9174A02EB8A58287450804EEAEE246 -163: 59BFEC1D1B9CD922BA82955069CFE9C69114EA87ED78057FE38ECA49 -164: 08A9164451C41B3B3D8858A9E54CDBDE2E871305FC7342C79D4291A4 -165: 2A749643D6F831532AB07A1FA9736857CB1BF699B0D88B75DBAD4D99 -166: FDD6D5D0A8014CD0E62D02703E252A32A7B3485E406A77E026AF666D -167: 3E78E02F6BCD8CF59D7F633F1A9FD522FBE6CC8914247B6171694B69 -168: 58E2D8551F4CB53E9CE8CDFBA50A81FD14E0B112A42007B03737372C -169: 44C06523FCD275B5CEFCE7D0FAD88ED27F984EF8BAA6C58E6BBFAE73 -170: 0D1EB14CE7A3923AEEEA1BB0BB547A66B7FFD35622B41A7762D44D63 -171: 29FBF6234371C81A48E85BA79527F1EDAC02B6AC990EEE8C0B2A8DD5 -172: 46F9D06D9D45A89CF79ADA602F77F39236114945E41ABBA656A122CB -173: C1754BFE1269ADA378D3805DCD05BFF68631DBF37F52A758EC447007 -174: E36A81BCED4D94D6ED0541E2E4C2754E2EB94DEEA20717A916B929FE -175: A83197194F2B4255053CBFC3F62728700A7D0A9E1DBACD047393083F -176: BB8F93DBE385D8165517FC5A3846C29C9E53BBF029E208DC99AEDE9C -177: EE83F2E05ACB846430EE4B48C00AA052117DB078B308F055814B7420 -178: 033254B2F0A9B570372D5464F9DB0248620D7D1892CF75B9E41E2A76 -179: 8EA210E4AE717107C1D01B8375E7D367F784B780F56D53D58C123690 -180: 1BE8C13BCF3907FC49D2077E50B41505E140C3DC6FB3955D098C46FD -181: CA7A249693D61CAD10F8E5F4CADC950F13ADEBCB54601D5420E5E14B -182: 724F8866C5A1920D2E44665D7A78AA651A752D02BC9540EAC624CF02 -183: FD16C06F8DCA7C4F8672315718A491E210EDCBA5046B890F36C59C33 -184: 8A43F3FA567A4A713335CF4F6827F74F4B2BE277F1A9D3DE8C38207B -185: E897112CB41BDC0CE459888212EA5F4D41123EED5FC45B80FCFED66D -186: 56C37A47857DB340CD58BCED82D7D5BD9690D6003AEDBC69960ECB2E -187: 7CEB4DF1D46918CC5066AE697DF9569EB847270F3011CBC681ABC64F -188: 3BD6FDB78946EF324512CD5A0DF1FB34DDD68F4DDA07732E9B4344DA -189: D442C6E9324A1A4DFADD0580E3AFB33C669A12777BC1A990B7848D9A -190: 0342DBC2248C6D2B283CFE82F7ECADAEF526363C88AAD70663408EB1 -191: B14CB26E7A5205BE06851D63B07270DB7815315CD5D9D53A87B9A43E -192: C8C45C35677C8B0A8E0F69A058C2B6E8684F302BC2903EE0C79430B4 -193: 11653C5C30DBA94F142056AE704EBC82CBD1F4E2A1CA120004EB7DD5 -194: 19BEC341BB47355CF06A30AB8171FF41112B5A14DCE42A6F28CED997 -195: 00DC3930079D7BCF1BFF3F76A90901F0CD528E233D0A2831FD6672D5 -196: 21D48FCED6A0C14B580C2A82F2380E70578AA22C6C50CB6BFE76BC72 -197: F5CE6EAFD6224F02CCC0AAF5DE793EBAAE2128AF4877476F8358028E -198: BF329FEE8039E89E0970053EE509EDDDE096F026A8BFCBA6D99856C7 -199: 75EFF28580619BC6992DBA34062399CACBB7F96FFE361B240E36D930 -200: 8BCD90DBC5379549B5E78A1FBE24AE120D92CAEF17750461262B1E97 -201: 0DE753D613321A4EC586FB8D4A5330A35FF2D08C32D434457C58ED38 -202: 5196805B5900643580CA19E464D276DBA36C651AD53700FCB8AAC114 -203: D2A3342D9187CA1E54457264F61E3F63B08FE6C1486C6FA27D93F372 -204: 4671BEC428BD36E0A0D9B741A8F312AB73629861731F43622397D9F4 -205: 04D3C3FB6359A09FBF9179A3E83B147A2C32274151670FDFE768B26F -206: 85F8B6BCD8364CB1F86929BE5F0C8E8CD7395508A35A28721F2005D9 -207: 05069F1D874DEDDFFDA67A3C74DEB39BA64AB26B9A288DF18EAAAAFE -208: E512D3088E41C157F4C31081D835061E78368ECB995F0F865AE7C8DD -209: 99CB5E3B68E4CEF44E7BCE89FEC5D3AD0BED68A341C4F26685A91435 -210: 257B54153499D81573E680442AEA471B48A2051AA2A87CA85B97034D -211: 027E48B8B02932BCBDBB2EE048A65AE28C348F55EC739357938C2CEF -212: 0937C69C2B9FDF13C58D5F80B627B29E2B4A00A6EA43D39303EA36F0 -213: 15F0894B40AA70EBA1BC28B7413B0FDC248DD83A7C057F1A3C857380 -214: 5C5100F771A361BDE3DA81CDD785D5EA906676D54CE6F37673D95411 -215: 4BEDD88CAB661DB3621608DAFA55424F00580E35A158EE9502878964 -216: 4B6B3E4E23805ADBD9520D65D01E6F132343DC203F97584F067761B4 -217: 4CD16EC65628AEA9E2857A339E957DD1987E0598119F58FEC84C53A4 -218: A6230282773A972AA88F8749D42E78E51089198506EF5B4D44E6B077 -219: C1CC1E77014B6CEE035C07217B2711CE0592F199B896BD9BBA8C36DE -220: 5B3D971F3BD1CD65D2D6888A044CDF4C099581690278354FB384C34C -221: C3D7CFE6AECABFED12C1D90D499910F8C98C7FF6EB1E59A4ED5F5161 -222: 01DCF63DF396168A5D79178E9C609DBF2AFA3576F5BA13E0336217A4 -223: DB2C60B5EFD3CBAEE94F9DB5069208258B2514702850ECA5B4D0CD2C -224: 6456D3B2001892E582221E5E1BA665750D0A26C977EC81086A1F2AE0 -225: BD46D6833E96998C8FF2772CA72AFEE2F6BF01B90FC4CEDB0342474C -226: B0CE5949761859192C151C57013B68ACB0E6F3280F2D01AB64D73937 -227: E4F9DA1C2B99AD60674868BD8637C183800929533663E65930593765 -228: 8A8DB3F904FB73D78C0F10412F9D5157D99BF04CEB9E2098092D3085 -229: 53F138AE00F3D4C70ECB02448F611A7AF28C8A8BF5C780C6AC418728 -230: C2B4AB66B72F8FAD6DE82CF448FB3D3364A010FD5684E782A11B9DCA -231: 36E9942DA297F65F32401003AF92650F98B9A63CF551AB4110D9F51C -232: 5B118A50CF4709C2145D0BAD449995201E813947B48DDEFC9AE91CBD -233: EFC6640A100DEBBA66807F4FA5C77EB39E961E10996B79AFD264559C -234: EF44CDCB35BE9006C8C870A459C5E9F682C133C7289FBC48D070D5B6 -235: 792F9656C76CFFF751CA61E613BC76F5B2499AF2A0D3CFBD66847C09 -236: F95E7CF33801C2DB385D9D4A2000E2E28CF90A6C6036E7D82BB0B2B2 -237: 188480C0CC9B923758036F585935647B59E172A33CA76F3CAB672105 -238: 8F15F5E14B5084D1146F050BA70363C50E0C8E5BDC49CF9215B857EF -239: D42EEAD6ECB82E4303CFB175BB4CCB02580632315B2C73DD9EE1943F -240: 14FB7CFE5D96DAC71EAA91CAFDC59A9B08FF9C064EF649BFE36D1F4D -241: 7A8D5880A965339E9F0B8E319F7EE943255949C828D7CFCC1F19709C -242: 250DDCFF230F88A6D7B5B27F489D2136598E7D99DA718EF84980C2E9 -243: 3F4259960EA3755BE7F75B42FFAFBA24238CD0A38D97C27B613A3058 -244: 40E0FCB308F152E25BC1E51C8C5FD925AE796A8CBA3C97B0AD35A19D -245: 92E16111D49BC6C2896E4C0A71585A0131B40CDAFB85D3C8E08AF23C -246: 34FB6BAFD5EC3F8911E2ADA599AF82E089106BAC823AB55B2AD9ACA7 -247: BDCEDFCB39AC3C7D206323C934B3B729AA9236AF276A1AB50D418946 -248: 981279B006F56E6E061206FD2FB31CFAC9F3096F2EA5DF2C63EF92CC -249: E9BA3E2410344DB27DA1441D36CB38A7A85FBE7A0E3C5E15EECEF990 -250: E44FDB52FCE67EA1B385A3A8572E30FA5355D07803069059B9B8BFB3 -251: 8814FD9C42084E846B56B2E648279CAFB8B68CE256BC2307AC52E229 -252: 16704FD498F3198D6A1E92CA301FEA97F303CE815B5F26EF83113786 -253: 40721B0F061E5A69413A957A876C15ED3A4892D6A471522D82516DFB -254: A525CA4BAD5D45931E9D86F95F152C7BA6685BBA7EEDDDE6A0E5E4AA -255: D95C168E8F666375A1C7D574686D36293FCFD3717D79B212D47D97B7 -256: BD34C1FAA03A01DB5E0C3A3D5E0440D6E5E361060F3DC9D149A26812 -257: 03E10A11A8BDF2EC14AFB011C5C9BB2EE3680025DEC0424DFE5DC2DF -258: 33194743142F4F5474D0C838F810B118896FE27BBC5F2DF131B0AFF2 -259: 662DC8FC31A54BE1B24EAB02A31DCED04A9F91732BC8FC1E15019FAC -260: 4DF0C8D3C0E78064FFF39A81B9425CF27143B1B8F5FEB7196F1F2D83 -261: B75B4229C34125D73A2CBB3121F52E21D0BAB18C26325D737F059E5B -262: DE5D530F306AECC6FB3E28BA257F880021DFDC1587CB6B1F4CE46EFC -263: 5A7B8217581080C5BE7D170616F2CC83515E2FBA5C65E5F34A467DA9 -264: 903BC1827EEBC44603C6B928980CB3DF28F263C4156513022A45F475 -265: 9908F48AA078D1D6597AE7C218CEE0EEB12A2C41231B51B988373353 -266: 8AB0C41518972B3C57C089A8C0EBC60A8E9C43E301C43421A37D74B7 -267: 54420E517AED65DB6EBBC277F4FAFC724B8B7C696A1C71D3AB3ADB55 -268: F5D60C41755C454A9ADEF57FDE9DA16DC5AA415BAAA78903ED9C64DE -269: AEE77DC85E4C31A8941220612457825E043F80CBA918C2E70A470788 -270: 4237D2216D0BB493CF29E7CE17172C01401E19F6D31E868532ACB470 -271: BC7C26D8C4AF880BE8506E12B4D4091949D8B8E67A1812304E6195C2 -272: FD7441603B909F3CA97425B835DE0B90F81D6245D54D835AE8601EBE -273: 6807B8CD0195E6BF20B4A9A6A549F06DC7BA4BD6E9F618949E79FC5C -274: E29F1EE90A3C617AA28137B4A4569ADC5DC70EFA6575F32168908C28 -275: 494ED666F699AE72248EA95192E97715DE29968B02782693659B73E1 -276: B2AAC103619549F1A2666EEC5A75C54EB0DF8CEDEBA0ACF8866D555A -277: BB442BC168D2DBBE1FFFA41E1C0075320998A319D8B2E52512D120D6 -278: F7A055F7B30C4AC467092B4370799F885A93C622C6EEAE4694F1A374 -279: A15A08CA715FE318CA88404B5BCB19C5D97CDF440F84FDE03ED60A70 -280: 20A02956C34845DA985D75CF6DC80C3F53BC1F1C7826126994D71F74 -281: 2E3F7DFB7B58AAA8F01B11F46B7BFD5E27063E73D3BA32666D933284 -282: 395B9F7BB41D7FB37C4C33FAEB604AB91AC82139B8DDB10B91235F58 -283: 444AFF7A34FBF38911AA5329E4A673D5A41AFBC8DC1E4C67090E4924 -284: B622574B90BF83A82B3E664E1C834EB9A8051F942300B32367FF5851 -285: 3392C851D4D61FF0F15178E7AEBF176E640271E25D1617F647CFDD5D -286: 1D6060A07BE28B210DAB552576FBA7CAFF2C25BF75C8F0BAF5B47793 -287: D0A87B49E62BC8D7A2BCC3C8104836C5E712F2A4B5FE52D67A23BAB6 -288: E0AE33F2DD63C31EF87F219C9B80C897669974B73D8A9FE64500887B - -Hash: sha3-256 - 0: A7FFC6F8BF1ED76651C14756A061D662F580FF4DE43B49FA82D80A4B80F8434A - 1: 5D53469F20FEF4F8EAB52B88044EDE69C77A6A68A60728609FC4A65FF531E7D0 - 2: 76AB70DC46775B641A8E71507B07145AED11AE5EFC0BAA94AC06876AF2B3BF5C - 3: 1186D49A4AD620618F760F29DA2C593B2EC2CC2CED69DC16817390D861E62253 - 4: 33BAD5430899ED6F8BEAF3E732B2A2CAD1D40B7C9DE0CFCDC7E0BC0756803A10 - 5: 8305D46643F04116DDC816F91544B7DCDC2A2CD34A0255498BEFCE0795E21205 - 6: ED2479F84980D846CD12447F241059AC1679AC30584443D40222FB7E1639414C - 7: 59B1ADD388B7D625D2797894A4D88C7554A796A5A3D8AE232BF5F86BD72D5756 - 8: EB4D0F2ADD0F6D0B26F0C65DBE71FE617CC6B43FB403649E82CC8BAB41195F4E - 9: 5257E34D7BB964F59AE4A46B3BA5921E04A550C2B1E04F268B297E358EAB1362 - 10: 605A0514059192E26DBF06CFAB86F3E9BBB9A69363D4BE925B2246DCD8659A95 - 11: 4585AE166873F94A8930881014FFD14EBCDAC1A0D599DC57EFB4989B44472095 - 12: 4ACBD92D310FC38697084C1BC7A79516A9BE20701DAE8EB36C643F07F45EDBD6 - 13: 154E8759089D17DDA455F74BBF702BE99F678D58AE442EBE16264A7822A8A048 - 14: 85A3D4E61229DA1490E64093E6118A733E3021B4678256335F437251F7D222C5 - 15: 89C25ECFDAEA85B2F360C15A2ECF31F0BD59A0CE821A1AAC31E2F73093DC4CD8 - 16: 39462D2A2320F8DA572A97B0B39473D4312E0228B23E2C2FE0AE9B6C67F2343C - 17: 6A37657A32560869154EAA9CA59FB648F3A96B62F5BDADD604BDFE0133783048 - 18: 636E904C72670EF3D78D9F0E121BB2B5EAE69E806FA02314688D65600424349D - 19: 6AD0DB215FBD30E7AE5E22C2841357624D5605B1FC9FDB96882BD42529E6A994 - 20: DB32380ABE23EF51F0547AC0FC4D095A2A16445A00FD8CE2E52628E189BA562D - 21: 331CC1C851DF863EB365860B2BC76E7E1E928261BAC6F1A4EC0A25ED00D0E2C9 - 22: 9F5577BA75324007CD66F9D7F16BA6E74313D853E791FC865AACFCF63C561799 - 23: F0E872C81033E67EFC37DC258435966A0D1504BD14C2750276092ABD0F9B0169 - 24: 2AADE36CEB570D6D3A92FE79DCD612CFCD3226F020F205A74FB1213244EC4857 - 25: 5BE74AA323CC1092D1A73A574496658CBB4809F4125AD275FC112E990BB8C1C8 - 26: B6FE46E0DCAB352BD9D4DCA77CDC88B733001ADCB089596330769CC6BEFC1BCE - 27: 5E080231CF3A92393C287EF7B5950D0394774700F82F2A0BAFF7EA82524223F6 - 28: 646DADA5A492B9EB649E576F976A0CC76280111F767A63921DD29C09CD4AB434 - 29: 2022202E664AE6B9E468706B45CBEA851CD7A352D6378236AC6E0DA2924E9AB2 - 30: 7909BBD61FF6C4D0552562E3A57E61F23FB82AEA99C9B2E004D94FC21A3F49CF - 31: BE29B022732A2E397FE039EC17766DA33A16D25555502775B0577BACBCA40625 - 32: 050A48733BD5C2756BA95C5828CC83EE16FABCD3C086885B7744F84A0F9E0D94 - 33: F7B83039FF915EE67C8586BA2D4B9C348733D9C75863056EFA4581E80A09B66E - 34: BD6D450C1E2072E614152D5E6344A0CF14FFB16AC8658D68176E3AF0F737C9A3 - 35: 89C2C6A69690335F7B475C47C62F930C8BC58F6AE92A99AFD4D9743CB23A832C - 36: 50B5D09F74A3FB9B07EDC08A62BF546A143A1AD234FCFEF0A386B78A4869191F - 37: 8E17112C6CB1399A06443509CCC95366C29CD72DAD72198C2395685C56FD5F1F - 38: 4910E2311E19D30748F38E265A1AAD54E0ACC89111572EA548C1B71E28C74B29 - 39: 850103B8D08D566159D0BBFC175987F991790FEC8D2905F9EE38796301CC8FF9 - 40: 02BA324D30AC854791579BEF4D356A6CA0B7729905D241058B8E5A726E74B0F3 - 41: 1BF232E67BA8ED72F1BBB4903B2589CBDFA880292AADEB416B30093439FF2477 - 42: 5D5A49DE3537A39CFC5F67716608A5012A003D5ECE5416A37DEF8E663110106D - 43: 2D3BB57730B167157EB825F3853971583F182456B91FBDD75014DC271887397F - 44: 40ED8D3D40DCED5DDE358163F73A2B4BE35C609522620830880CF6381EAEDD23 - 45: C7B82C4199A88162D5B04A4279F9A59DFCF97239D5BBBF4CDEECF3B475CC4A8B - 46: F338292A6F44F97546774EE97C578815F2A7BED5AFE036952DA0677F92F3FE1A - 47: B2E6C01E2D03B78BD71C3E246A85FB076B30F83159AA43AC18E33ED9CC232982 - 48: 8E7A856365F79E42004AA1A47A3B83E8E6D0EBDBB602F62793E574139B9F2A17 - 49: A25B6AD8226FA9A9318CB86CC7714CB0BEBFDE6C20572BAD7B89925F0D09A7E1 - 50: 57FA0A179B510246B3F8D195ACB103CDC86D8315588325EF536C47FFF2772658 - 51: 5CF520297C9B06AAD67483986D4C018A70C67173059B9EC20DE0C4F58278FFD3 - 52: 667E55FA3D3D6AFD3CA3AF6A60016598EBF2B1E98B59C702209C247B3360394B - 53: 5233028F23B5BAB4005CB86EA31B16435EC1F6C8FCF357580F6789DD795F1E29 - 54: 81EB9DBFF576E3236776D43B5CAC9DBA10685CA4FEBDB0DBA8160D5468F109DA - 55: A91A138E3374D2D8FA4791B83A93A311A06A2926EF70153428CF6E1B239C10D4 - 56: D192F5964DC70118FCAC64BF0EB838009B816D344F67B04E8E78D5BDE783E54A - 57: 6ADC19A25346D39409C264466AC7EF7EFE4A88E765A8BEAA191266791A906064 - 58: 275AA07CE6D62F62FD66E479F300C00544F697250B6D773F91BF06E206F88925 - 59: 15876B15FB6B696F89E78A040AC70BACF0EF0EC18389A5C4CA5D6D2406C22454 - 60: 3CB8D033AD71B9951AC09797B306540AF9BA7819CFED6793E9DDA6C93A0D3458 - 61: 829824766EDD820E8947845C98130D19DB0E286FB465344936326B6DA5633A44 - 62: 8FFD849312CF58640B1DF47AE8FEE5F438CCC3DE342E92A87A4F6E69EC27087A - 63: BA7AF58D214BB604BCAAD40AD55CCA7D9815E7535F1C9837BE8FB8FEE2519560 - 64: C8AD478F4E1DD9D47DFC3B985708D92DB1F8DB48FE9CDDD459E63C321F490402 - 65: 9A11F135D2231BE8EE824D1E9D3204018870DEFC2F469F34EF5969B4815CEC3C - 66: 0BBECA7B5BF86D84E697C0E52DA482B9F0B8BB90C74C59C6358DA5458527355F - 67: CD0E763F87C88CD162FE971F2F07AC888362CCC33272C2E79E4DB84C891E7123 - 68: AD93C686DBEA416E5069CAD1CA9D627B2A040E9C3D9CD148C93DF58DD01B1E03 - 69: ED379E9012F1D3A4FEF5096688A2557B3CEB68C619245BFFCF05A14A5A846FD9 - 70: 97A26B0E8066F35D400B7F12A6AE62A290BC1CA68660B4DA8BF17AFAD6B8C948 - 71: 881AD9FFBD7F090EFA51CBDFE93DA23A0401F4446F7ADF150D1C226851CBFFF2 - 72: FE58866B2893C6C40EE832CE40FB6EB4C70FF7C4794380D95C2EBEEC62DECD31 - 73: 797061B3AAD8E724740C79DC697EF3DE4C96C4DB4483DBA4E56F852222C72474 - 74: 6A3543B82C9A14D8597B2BB3916159CF54A4F3332AE55EC9706979BABC206752 - 75: D46DBEEDD389BEC862EF7431F929CEDF81BD0A20573B539E11C8BE957D6B286F - 76: 64430AFB89B5D3B944FF085D344A96F514441962E2B2808943E8159378FDE2FA - 77: 98FB8AC5EF7A58F079D41815484B19650084E4CA68D1540D90CDDF536FA470BC - 78: E939BA431C6E703F7D26FD0EB511EF41A37F6EB386E80848EABA2C3D5BE01F62 - 79: 80AAC0531BF27D1B0E3E746C34A86DB09503636E211E59C54F9952BB4E43684E - 80: 0E34AE32D043275B50E9A9E0DD024AB024213F096CA6E5B7F16B524F0B37C271 - 81: CEAA5666FC5BD015360A31EFF0499D2AA8E7FA8391A0C490E806D785A9F80C5A - 82: 6E85589621FE2ABC1214A841B22FF667E0B797C04EE736DA819ADACCF4176CB1 - 83: 0259B91E342828924911DB5071C10D890FD65C28703A000CE2EAB3485D5CAEC5 - 84: 1711B6B8E196B2BD188B71B3207AE2B03D9B2CE42D6593F816D7127567B31D3D - 85: 63F7BD481657A2C0DA9B8C5D4BC37952AA568362CD27055049C1B43BC3BDE48C - 86: 9F8D2B19AB069CAFA57FAA67D3A7796F880F35E95AC71EF4663123616F585242 - 87: D95375FF4E6BE80944AFDA92819794259C7DA31B1A952A309D7EBADA4A78EAC1 - 88: 9FD373552C93A6D904BFB67D45F7B174530C3EF7B9E71E84CBFB32DFED34831E - 89: 832BF41E6C3A51C07B9E21C17056587D07A45012CDB5FF21A9ED7F5777E2A3E6 - 90: 8F35ADF849B78A97A5F71EBF17C102521DCD86D9D20246B6EB47F78BF577809E - 91: F4C82DAF9218F14C37ECFB50FE222644FAE96F439998E990B1A8492E7BDEF13B - 92: 60B070C296CC64968EE5E4F65617D00BE43F2E77AF4994A12D6A28110C586C16 - 93: F94996D82141AF533F903BE6F0611D2DEA7584A895BE7096B2DC35097B18E2A0 - 94: 805E1F47D06244283D88F32B046CA95554AD4018076C7480DED3CE7DD393BC82 - 95: 7804AF4E51E0C1CDAF0F0A6FAC6671B260434081F7CE05070BEDA63BDAC9BACA - 96: 2BE0AF9221BFCDACB4B88321D8CCC9CEBCC53188ECDB4E97813CD1D4C775C541 - 97: E500BB02AB9FF69F068E9CCAD41F0BF7A5C176F41119FA700791DB12092AB7C4 - 98: 0F50C9F3538F0E35645720BB51D9191138A6CAC64D9F83660957D4412ABCEC83 - 99: 05186DEBA22777FE7652D51F24ADE28F18493B809236DBD60976D213575E2F86 -100: 8C46D8901AE6919EB001CD4A9907A22AAA47954630099A473D2D5336EA7689E1 -101: AF504DD36FEB666B16FE553116ADBDD604E449CA783E54A83171AEE7DDC7E7B1 -102: 986B81944604EF3A1F26032A04537777C0ECD1CB66B37E3CA6E9B108BEFAF56C -103: 120A055C592D237C0F535EEBFC05673374FE4A50E1330293EF2C1AB611E0D0BA -104: 22892EC826B20680C8462ED416E15D402E567FF4E084B08274D702FD2411F40A -105: 1D867E60B657511E28C15C100B07B62AF37CB4240C67354CA29373029B55BABD -106: 30E02DE534005D7F3064E57AC79EBAAD483ADFBDC1CB227B889F0BD66751ADBE -107: BA6B3EB9EA0CF9247B596E0BFB1129789046FA539C068B6255F21920A14672DE -108: 9581220D4D55C622420719224DA4D72ED27C5A9083FCC6C9754E0B45E89263FF -109: D2082A60F6EFE8B4DE35E6956DB4772CC74007A3C1588D6A1475DE5EC6079388 -110: 607CA9672E3C4692E094257CE00B332962EE247541D187B6135498A2F61B6D59 -111: B08646567D09C477939EA7F417FA307EC0D522A41D4F8E7AAB4D9A889EC67FEF -112: 575F18078B5874147ECD662F4260CDB3548756081EC3D2E7BED2397F67888622 -113: 9213EE952527591E3C10FE51DE916C10B72D90B234BD366BF2D3DA89C660678E -114: 80E7DD3D16B56C9038B9A7F078199CF3BA76841E9B8264AC3E103C24D3C8871C -115: FC9BF0A78CF7BC1407ADE5D07995CE2ECE2467482BC5D04F27BEE116E33B26AD -116: 0CB94A64118CA106B5D62B7B0323085551B7688ABB99FC47AD6F46AEF79AD0E7 -117: 20B54EBF368456150152F2181E5CCE7FADD18C41CD4764236C68E4FE0D49F775 -118: 398F0CBE7FBBDC6E5C88F5A6E58DA25968705D4704FE9B16BFF7BEBF39F7838F -119: A226DEFF22F92E994B1818026D923B9C93A72F8D5B4F2CC3CF622D6492373DB3 -120: DE05697A0743D511B0049E4055A7618CEF7A3F54AB2ED031EC6D2F75C5416AD9 -121: 6F2DC08E4A30CE8C74D175BB4D8F7A32F88AA145F190BA863D146D3047E01CEE -122: B722090B50928B07B1FA3D457CFFDAF70D04FDBF3EFA1D7ED4067DBE925B4F7A -123: 6C278930B0DFB48E7D9BD095C01DFD5DFF859760CB5AAFFFF939907673F44448 -124: 35C6C370972BF0F42EBD123B4FDCEAAAC4557689037249B3D64B67F034B74774 -125: 4A36E7BAEEE661BF9E8750C48ABDAADF969A83E22A91CF7D299496367CA7EBBE -126: EE257791809CA409757BC9A21F81CBD85ADA03D6EDBB5CF4171CFF2CEC87DD7B -127: C66018E60C774D770CC6539D42C023FA974C29E3FE2DB5925F226B9CC5CF8B05 -128: BEC3EBFBA06834F224543CCA2A427CB9329147BE93E19AEB0E33A7119C7F63EF -129: 0F41A20921BCBC39EE382DFB54DAF2DB373CE6B178833111E22F45266124F3CC -130: 1CEF9A7D66905E25EC17517DB9FFD91EA71F05C11BA66D9AB11E6A46753ED617 -131: 99EC5EB5856241C7AEFBFF8EF9E245D32FBA82E5A99610549C41CF27F3AC0D53 -132: C89B4AABF8E4D1C37CA932F488DDC2803334BCDCC76953900AD630AF70511761 -133: 721F0E936B3B93C0384F970C07680A8A6293E5012295E83615EA4657ED5D7E17 -134: 644E15224F5597351AEF5C4BDD22B27CA0C19DB2244431534C2A4A0BEBFDF39C -135: FDED8FD9D6551C601EEB3B7C6BC5E5CFD8AAD1D015B7E9AAA9C9B9475231D5E2 -136: CF3CCFF92480A29160C2D38317C430E14749BFEE1788106957DFE73F8C4930E5 -137: CE9D7DC90913EE5D92745019479A5352C6D6279BEF18ED07DC0A83EE8084DACA -138: 14914E322770698E090B44531062424057B3DCB0FBDFA93229D21788CAA29A6C -139: D0AF074A51AB3138DB0581170B2F4E02F464095E9AD62CBE68A48C6938F34B47 -140: 3A81A47EE2720F109E7D1CB54A36F77B64DD465803F9717264A5E5F131DF5E12 -141: 4134FA637CC87AC52320F311F4A681EF740B58DA8CE2C09C721EEDD720179C4F -142: 4996D371ABD506E72178B4CBEA8E9F5AD781A5A566543D97F89A4EFB13D5BB5F -143: 295FEF4D46110EE21FBA0D1798A1BB7C1BBC88306BC9B7661B18ACE7170F02AE -144: A32AEB728CD50069F906559158F1D0A9DF3A8C6795E5CBAFDE00C632F08BADE3 -145: 93657342BB49BC9E242C4F5573EF621D6CD90F4A2082B14FEF85BC9884D00AC9 -146: 34462E1B472269BC270A6DBF09D9075FE9CB5350CC4B74380D17AC19D580D125 -147: C1BBBC82E8512BBBDFBCB9D9A68552BD4EF3B7953541451C82F3BC92AC8C4BF9 -148: 962CF8107DF385B4E1B1B3FE3694BBC731D21FAAAFBC2B48EA1504CE07F19173 -149: 078748DDE5FE38CF8AF48260CB531BF8EF68F2700437C1DB3E210DECB757417B -150: ADAA23CA1ED892AD1CF028CD40BA8AE2BFD3D7DF1289C3F2319072106F587A98 -151: EC656CDE6ABC81A8C85C5F682D392737C495DC871303DC3D11FC651765AD99BC -152: BC744E374FD83CDF6EDD709689C4F3BCDE56BA612469F331789AC4E738F804B4 -153: 4CD9A50E3F427A64E312A1ACD8BC39D47030EE1EAC173E84C75C481D3CF13911 -154: EF5A980E76E92C94BC43C5DB34AE25B990B1B8A4CC28E834EB4CA4A27757FE6F -155: A59526AE178AAA3CD3D1849F9AEEB914FC555CA790C18EC1EA63814E45480189 -156: 92915B3078DA2EC31978123691517835AF47EEC12D9162D269900D0DDA0EC58E -157: 81B7076D3EC489393A1752F4B72C51C9CAD0BDE0F2AEC6F402739E9C20359674 -158: 3BCCD5439FC7C4BD3025675F7A9C39FF87C8CFDBEADA0B6DD29EB179629A689C -159: 764BF722DAF72E8F04AE830B10313C836667676DD9E8A072E4A1C0482EA682F4 -160: 3BDEE46E603BC40A719E84A9913468D790EE33157195217C1A723596A9708A9B -161: E55AAAF6F51D43A5336BA4D29AF2128C3DC3BC3D9D70B3E41950F445BEB1E5A9 -162: F071BE09184E4849ED48F3F71CB254A9D792C1A37BA8F61119BE4AE5F5C5E9BE -163: B9F6E53FF9892DB0A04805270E5D60B3C62F72BCCCF2052CBABA2AE2CB732C78 -164: 576E9DD4F7CE4E9432D456D02C5AB77E15A1DBF74E60F4632F80061A756BC201 -165: 67D11A37491421224C1ED64B3D2AF9C3B45C413FA0FBEDB0ED1BED26126703DD -166: 4FEE7968E68B1DC75C14E23C16C4CDDB9FBA10AE7EDAEF32345D7D9450F05CD8 -167: CAC5458D48E6163CC843D5F18E263E3CE03290CBD5A866BD3B7D02DFF2DA413E -168: 369A33BADFA618D58D16AADDEAFF98D66B30A70C2DEEE42FC809B9721DC1C524 -169: 6D9EF22B871F8518D91FE5FD48BAF514F1165ECA0A145F8975EB4B40898DAB7C -170: 92E47248A9591F77D39067359B91FBA0F011F1C753E9284C50BA10FA436CADE1 -171: 98AC409C2E9FA2DAA81A36EBD188CEBA0B1997F9C8776C73AF360A5C9D6B89D7 -172: A9317975E935A13C8E86E5C2DBD9C829936A7A222A28B52D6607E99FAA362AA4 -173: B8C8D53BCCF1F1B65DCA8F701853E6FB575A0929C9DD7C0BCDC3381EC4E8BC80 -174: 8EB9F83DBCDB9CB9FEFAA713EA6BD300389BD5F85FB63AEB60BBF39F0072A115 -175: C913434C625FB9B9969ECDD5FC622B53152B812F605C1274A7554EE18BC26BBD -176: 2A3C05080E904EACB025774D56D60C44E7716B90ED705D8640975A1C752D6EAC -177: D4C19D7ECD62C298FC6FCFB4256ED7208D4CBB01F81CA1C1F7C36C9A55667F80 -178: BB5F95132BEC7C4DA72BC38C221CB8BE458F90233CF7A5DA470A89AAFF8057BD -179: 87F6F39CC3FCA24CE71440CF4EF792C8FCA0D72291044849A256BC7BF7A59950 -180: E05AA3289774E9C934BA4B6A621A1602BC8D52D2AAA88411AADFAC36E259DEDF -181: A104B60CA8E7B09AA4B21625A6FFCD60560889736A368DED1F4BA8EAD8EE732A -182: 07F03CB0615479FA964632E84A12A7AAFDF2B0B6E76C9AA1FABCAEB0FD89FCE0 -183: 7580655A0445669030CCEC133CB73E83A628B8E1F50C3B933C889E7CB3F83AA7 -184: A0C0169EA227CBC67D8E5942118B4A3A7B4654668E86F4C332013067DD0F2014 -185: 33BD57010692128148B62E21A1A435097F01BDD21739E1231D6E79B227AE8287 -186: 4C5A425ADF6EC2CF5B50B443E014D9043659304DA510BB841FD014F04FB955BF -187: 1AFF2039CD670EF2ED07E69858CDE39BCB0890A98725D1FB2D1DFC4CD2DC545A -188: A3007F2155E2B7314B3685E848F249CF3F32F17E0CAE736F8515F1EE8468B06B -189: D4569F3356C8B426421B2F15F6DCE14C406216A1CDF2AAE78E99AE765003D53C -190: 69AA9378F0A17E0B88CF85171AF22F569C321F66CAF3193C8DE130B007AC561E -191: 8658173321B8E1A1DB6C55192851CB681B17F0B89B10D4D5766AC0EFE389DB62 -192: B86BFBEA7E3F8D0AA23A1D1F6E38DE98C0A1046274664AD1863CF2FF9A7F9565 -193: 961450E75313537FA23B0E3EA10A231CCE0DF3ED2E5FF4EF0F73C26776CFD7B4 -194: C72220672365514B8D738D9849A029BBF0B14C4D18E7A3B27AA7E90A5DA015E3 -195: 947A1BD610A6C54D7DF166EC235ECC3A686A0AB8143EC49BEA754F12C03461C8 -196: 9F40C233C2D868926FF9016820DB5E6244028B1A041A62BAE105AFFC85A643C6 -197: 30726EFCFC02ADDD0F812300BE33ADC6D64DF47AEA20C0AA09197A80DDB24DCD -198: E3CB59A416CEB3811EF17978D65B57C16705F205D21BDB7F5B958EB09D21B758 -199: F1B4BC516891C3FA44F1070ADC05E1164080FBA3F7A17840C25B1E3584C11540 -200: 5F728F63BF5EE48C77F453C0490398FA645B8D4C4E56BE9A41CFEC344D6CA899 -201: 0E24131245B6AE634ABC4C47DC9FB3E9B97966077F7311C5CE6B26E049E68D40 -202: 3F994BCC3057EF299827D6CFA47482F17B2CADC44524D5614A5BE17D61D4E751 -203: 1288DCA8F28CFBF811695EBC38D9684EA00C5F13937A527C43CAAC3C0BD29DEA -204: 22DE73FF852BE6332DD1037F00758B975B4CB6711D515248DCEB39637385D44A -205: 397CACCAF3F87F387CFED460282AFC0D24AB5A5998EAFD93E1FF984BED007840 -206: 63E8EF934181B14EA2F6C24A92BE4D65E394F512766884D37FCB9EF0B39840E1 -207: 39E999E70DF9431DA86325DB192916A2B18FBF52DCF62026310C903CACEFDD2A -208: 81DD116578D0F4E21E9296583C816C3B4E25EBCEEAB5BD1DE6E3493E409ADB50 -209: 9E29F96453F474D2811D780AB43FF74C2D768EF89DCC8E7DF05BFAC1D9C755F1 -210: 6E4E7B7E819793A3DE17FA3D49C5754E15436FAAF43E6472261B67FC49F57942 -211: A2F86FF99DAA5BCADC9217C0995FE6E06CE3E4D67E1ADD5BCE963788B9813EC0 -212: FEDE7FF8A5C4D7EDC3DB3A20B95AEF722E916D67F64BAF89A7C774FBF080474B -213: 41C05C7B1277C17C9F6E8F2C8CCBA36166770DB970DC04F84A8525B188B5FFE4 -214: 4DFCB2FAB5314BC06C2E41D837EBB4777F861BE295FCED434552E12DDAAD2BBC -215: 078FCFC3A29207AB4F251C94705EDBD0143E8FF1B9D5E69535B80971CB409826 -216: 34EEEA9B1987A580003329CC86C40BCE5D95846CDD6EE84E6A35ABA20702B7CE -217: 056D21D6F895B9BA9BF16253EB40524B66E761767C65F41B2994F7026284F273 -218: 33D0A4BD4DA19BBC49C064680E8B224C3B5A95D93CB831E6592C8F700C69DE58 -219: A3B8D55EA1BDF8C4FA4D22593836DEEC66F9637AC9B68FEF94570F2320970680 -220: 87CC4433FFC8E7CFE0757CC80DA93FA28A78395C8CE283874695F4CC7BA1F13B -221: 99D5C39A60F94C428942C050F025B6706440B1A044D852E733FF783AC38337B1 -222: CDE4A1D28164159632243BC896F29324769BAA4A303A381F01BCCD73F05654DD -223: F1B740B5C0EBB657E0B6A28AC7F669ED8397C340AA13B25DBD5C98B8113A830E -224: B735B5CE9A81446AEDFD313E492E7C11B91E71888C5A52962ADABCD9D7905C73 -225: E44FABB0A710F907C940F87987F46641A83C5693EEF1D9CE7D82E6708B3E3994 -226: 1D515AEC5C3816F3243CDD56F5ED51A70692C08F76733914F24344487E84B195 -227: F1769B5D39F07A4ABA832F5B2F845BDC8A39A4ACE27B3E9A4F843C8133B785E0 -228: E15EE3D9F169CC495ECF40DA59780B8662E773111ADCEBB9C81F06001C377AE8 -229: 13FCE1FD10B9296B31F04E9AB153C10B6C2575FBB814605D18B9C32E9CE4A306 -230: 76D4EA81772EDE0DA191154F21F0B89B8891F2347ED8C38D83B5FB82C59D73BA -231: A592228A56F858F462243D6D63C16F14E863393C9CB1F3569E7C07033129746F -232: 7C78BD9E41844375848566C240143AAB57D8E67351150462EA36707B1772B9D9 -233: D0EFF015852746AC03A445EA89D8F620578F4D8C20CD0A376C5292C8DB399E68 -234: BAFFF987F15215490FE09394EDEE3CCA219649568ACD5081E5BDADA980534136 -235: 0AF5A64DE4FBE093C163C20F22554A41350B86133E1E869239DFE28CBEE8CE42 -236: 99AF837FCFF053E2E1A406113F87C4975D6490D557CF3991A13C288BBE4E476A -237: BC11D588F1944ADCF6B73CA650CBCC0E23A82802026E3A23C217DAC1DB2300E0 -238: 8D5A9CBF73F51658AF588FC3A09D5E51C945BB01C269A360DEB506D965B74DD6 -239: 66424CD8971E43F2F47A166654ED3F601AF764151F69A1F80E75D9CF2A94C8B8 -240: 6C6F549299C69EC48681C6B9688E4AEC022E16F70DBA705D562789D045CB7163 -241: 5F37D2952EC1F9804C27123075E61BF6BC000B2E016952CED4F7DF6EE1406596 -242: 70C9E969E885D65BB4C29C9925CD8CCE4E9B4C3DEA81F8ED88AF987090130002 -243: 558A870CC4A5A17B0313804C7C6691A318BA2A6D54EF34800BF7B50C90EE3AC7 -244: D84090A202B531317C1476EA4CC824106D635B4BD41FBC081B0D942525DF733E -245: 127A74A849A390D8FF6005170ADBCC5673734CFCA276EED5468C3436D1E4E957 -246: 51368D1EBEDDFE8A9005A5D9627BC2FFF5EF100D28E246EEB6AEA6F93027E45F -247: 0ED91BE319464EA50C9405105A75367182134E7AC3D2E5E305453376BABEE919 -248: 3D4BC2BF5E8CB5B70098714EE09E16BA9BE125DF702D0E5B80D027B30989A154 -249: 2F238528F30336D00EA4933528862654549C800427C43AEBB74675EEE827B5F5 -250: C5C52F5B2EB5DDEC9C37C8922DE4EE8FFA8B674870917C20E4E862DF8CD090A9 -251: 8C94F6ECD3E33433D04E634A26C4CED1184B9BC6AF47562C4459309494A9F574 -252: D3036F099414A9187B79D3AED2F54FD068EB2FAB2322A79C0D46B8A8CB777E2E -253: 2507450731C11644F2DE23B9720BCD71A827725F8FB11A622194EBBBE16233BF -254: 6EBBC54EAC2E9506E5A6B35E09C899A6878ACBD3F7F9CEE602982F479F7BCE66 -255: CEB94E2E8BD45BBB4AF2A3AAA05CC3F7BC010A6C68E242923CE3731A108DF8E1 -256: 9B04C091DA96B997AFB8F2585D608AEBE9C4A904F7D52C8F28C7E4D2DD9FBA5F -257: 0E4ABD998FB067CF059475BFA57585C94C3786DEC4FC2B600663F59631DBE2BE -258: 4440FB3956DCD5D186F72436E23D20903C21A1A2A1BC351EDA8502509C30FEB4 -259: 08E19DBCA3C0735EE75F47131CECF6EE8922162C0E84D25C3A6BF132DB7069ED -260: 809D398F5984D455A403A77FDFE8A9E86DD18149337D891B719B4D7D7D2A1692 -261: 30FF0B8556DDB6425AC9FA62BA25F67E12DD8536EA4CB1861B02C36D54E3F9A2 -262: 90CFB8A5C3F9F243DBC96EF9703AC75E480DE00E435E80772FC57CF38E3EC7CD -263: EDE7A68F2D8F80F1C6AFEACE7F6C2F1A27F12656CCF8BD84C417CBAC9032C0CE -264: AE27F6201401C3006905D09C2B62CD74E60BFC5B23079AC41D8097A1829CFEE6 -265: 43566E4DE1A37555E272BB63D1113B6061E4A9320FB88E4B435CBA67794A1AF2 -266: 59EC88A4E06C3C0AC3739C834AF7F533BB1BB8E0FD92ECF8554F048CF0B23CD8 -267: 6F4AA17FAC4770676532195A7941EF9A34577A6493019CA0ADFAE099CAB4A443 -268: EDC9456FD6FE931C317139713DCAB3ED10CCBDE3255CD2ACBC5DA2BAF4C49626 -269: 8B6F715B06995BB2DA6A6EE96958BFDCCC873A28AC0DB5C8351DE1D67C29886B -270: D77009956124FB8FC30EE79B44B213D6C94C684BF24A02E87D8544C9C5C23D91 -271: D409BCBB54825556454A757A1F629135BA49C0467DCF6B4E0AA69E9718DD31E6 -272: 0B21EC4A8EFF6D179E09BA9FE0AB08515B24E0923FBF419F5C30A38E64577DB5 - -Hash: sha3-384 - 0: 0C63A75B845E4F7D01107D852E4C2485C51A50AAAA94FC61995E71BBEE983A2AC3713831264ADB47FB6BD1E058D5F004 - 1: 127677F8B66725BBCB7C3EAE9698351CA41E0EB6D66C784BD28DCDB3B5FB12D0C8E840342DB03AD1AE180B92E3504933 - 2: 6A4E8EE496C5FACE43BFB748253EF689F1709986EDA8ABEF8ABD5674A0A9ED2B36A31EE29ACB146DB15F36A32B3F2D63 - 3: 427EB9311DB30F28BC248174A913C1E5A7948ABF0859E522D5B99E29672B3DBBC45FB0F538EE3C98B728CC47396F6998 - 4: 0F555B913FE5BCF7A9D3E3C3DB63EBA5EF404C3CF386A9C145C4021569DAF66BD374806C1FC5915BB0C27468F47044F2 - 5: 45D4F929FBD0CD5FBA12164CA2ADCA2222D924DE218753D31FBCDD847E735811F84FF4977B6B190E53BEF9324EDF3356 - 6: D990EBFD7654E00C1E29DFE6C4250B36B9A17B71F03086FF61F7EAC792E03C10C4A759E1539C8CBAB72DA794A35D76B9 - 7: 4CA74FCA7427EE6B1761EED920CEDA439C78DAEFC6BBBA71A0689F0F4427E5C4FDCAAA52B4914CAC70BE64954A6CF684 - 8: 4E3FD32584A399E2635A17B74B3AD3DD5B827FB0D6332288BE09103DC691EEBCCF083C7C6FEBFEE10F295067B88DA1C5 - 9: 8FF05682F7E10BAC763DDD2EA1A236231254CEE6153E431A450B2D2EF36DE5E42E254C5332D5C6D58907F8473251765D - 10: 43D220837F55B8A0058C5728E0255DC0B0075A6CE69D5FCA704BCE5CDAE189634D660B736D7BC71B32CEDA6CCCEF8EDE - 11: AF48BB366B53FBB3C046532F7FBFBF8F813AACEF151028D4E1B140C3654C6E9D5A9815DC33447DD49715A124E3CF9C76 - 12: F35855F43EA37F0C41C156ED3B56C8EE337BC2FF343F571952DD26B67019261397EB840A2FFD540AEC2623E2D4AB3781 - 13: 952817A26D4534B94EBA43FB88BABD63DA1BE5C63671CB2CB475E0ECF2A8DB9668D5772B00329FB6E570B4AF9390CBA0 - 14: 31E1FCCFB404608F0F72DBD60048EFBCBE9B1D4453A8A24E14FE7B65E910BE3FAB37BECB9B9E4C98FEC79554296005A3 - 15: 580A37B961A4C6CD76C0467BCF68C281011A03A5198F28CF98F599A4D5E9AC433CE2839A071429344E716DF4E861E6A2 - 16: 788BE9032A1EA3DEA20F24AC5197342274C8AFFC9AD07CBBE37BF1CDB32DC3A70A1C447C81ABFA49210D8C1724EA2941 - 17: 07C6E7ECBEEED331245ECD219837A4031D9FC4EF02BA10273079941BD4F7709184B06DC084D24B5F09F6096DA30D2C32 - 18: 9AAAF441D0661DD007E198795F025B7E6F76743418044E90FB949310842EAF3A78BD781E2BC9758A359C28336056BC7C - 19: A7D568F94E74086B83FF05AA32D9150CFC6E477F762244FEBA12E2CFBEE67861AB63CB443AFE04B5CD2251EB56014709 - 20: 06691A7F9CA061D4BC80E4F6A84C77F7A3214AB9849A333DEDA40DCEE95336DE1C6202AE1A235B304412DCEF03506CB3 - 21: AFD3FFA73E7D3D24747915BCAA13FFFEC26B2BB7605431C302BC0EC66DE11389C892890DE043FD114F7C778AE9CD369D - 22: 68E1608FCA35CEF6FDA2E98355CA92FFE4881F9B63AB1F6744B192C09C160B2EF23AC19379BA0443263541080007B20B - 23: E7907160D99FD530D19FCA90A1AB5927D51DC02EC39015C53279F0A0855508CB3FABC74E404F2C07A9144989DE88A869 - 24: 3AE1A7E6F8E0007F53167B85C478203B8445AC2B7B092DA29046C49BF3D9DA7541965AA2C78B7A0253CDD59659AAF7CF - 25: CC78688C451D9576B021329785D34BA871FE4F4EEA517ADA3C45615F875666C0CD090DC2456800AC7F6500D4E75197B1 - 26: 15F2E7C8944B16E99C855A5272B8FC0A38CE1F2D2D12C17FF1C667F392A5811D408D82122FC21593EC836F25A02093AF - 27: B4FBE81EED8250ECDD9DD3590AA882D2C71C9B1D0A203716270A8B83BB1701A6C32F584BE1471AAB8A7FD92FAE21272D - 28: 6633732CD2666600233B24FC6CB067503632A9CA6D0CBED03855535064DE061FA2D01E28B1D9DD47663207C8E4BD77EA - 29: 6D02805A80F7EDFB1CF91D61904F6B18B3B1274F6F11447DAA68252BB4A6D9614A527B1AC69456134CEDFCE3AABC5322 - 30: 6F9F419C1A77C4F3E4DD4AABC872C415CECF23BB28704580B17482325AB0627FE5CF6C77D6F98F7168FEBC57CEA15093 - 31: 19B75DA5D63A8BD3646DDDB644C7705F2869662A1A69B2A53422B5CADCC5EEECEE452940E1C98ADD64CDAFA853BE51E6 - 32: E086A2B6A69BB6FAE37CAA70735723E7CC8AE2183788FBB4A5F1CCACD83226852CA6FAFF503E12FF95423F94F872DDA3 - 33: EB9ABC6D96A2E5BE1BC45F2EFEFEF95D06E27E29FE0817757FB404F14C18549D12BBBAF81F43613A0151FEF81F9478BC - 34: 73E74BEF021CE493DE3FCEC13E29731F31030585462A0F243105F1879EB951A6DD51CD1F3175853956726147670B2D09 - 35: D8E03406F43A864BD81CCE2E86D454F72A3C0BF581B7003A6E74F0C5EF59D2582822FC523B385FE3C82F952B3AE1506A - 36: F807C4241853A8129613C004A59ADBD404A8A925AE7DE53025ABFD9F1C21FE7C90B7F6B1456B74974D20BF00CEDA0943 - 37: 5B42CC6A0B43D9F6AF81508AFCC8C48F6030D32820DF756A8B24870ED967113D19FDFF67C54263C61C190121330FFD06 - 38: 7F0FB5D4A81102B14C899BCB53D12B8DB092021873F610E813E64B4ECF789D5728AEC725BFC88F9C584E8B2CC612A8E8 - 39: 4287487DAC605A7CA671D1B4D320023E3323AE92F868CA9779B1719ABF9ACDBF63943D125525265130DEBB36B16B99B2 - 40: 531F055E0C4CBF7B5B12C75F0E345DEB8842144DE7B567171CB4018B148EBFAF487BF516D04B25E4E9DAF7D115149A3F - 41: 5AE617D89D5FAEE633E088EE6E4B33B20CDA06D9B13D4B9D3977AC6ECDBCCF52C6287F42718C8A8D96C4CE256CBCFC54 - 42: 44E0703455BBFC23E9D679C3AB36999ED0E5D740CB610409FBB0D171A2E48E82DD0B127BEFE8DAA97E9681B4E6E1FCA4 - 43: 9A67A07470AE13E23D86A3380FC19BF16FADA592C46E1F74ED847EBE7743B9F1EE6731E5ADB9DBC7A8311C630BAE196C - 44: 2FF7CDB8D4CD5C1114F3C501EFDE8462A900003AE406F15B2F471889330F32076C5B85ED7036B5425B54333AC707CD42 - 45: BD26DB7A72ED88F8723001E57E2BA9A9FC5C4E2B5E1FABFFF50DE2B294DC4C334932996093368E3F2E2C174D1463ECFC - 46: 3B2BA4FBCF43847AF48F9E49E6AD7C58809393D342B0761B6F95845E9847B5108C07B4A164B7C5134A108165E545EC40 - 47: 2A65F9DD13E44ABF4A784CF49CB986FBA576E04545CAAD665757F3C153EF7C21EB9AB70F444D8A9D13BEEFFEDA05E849 - 48: EB865E953547BD5FC68B1553CBCE1D3F46C761116EE881EA1A62E909A73BCAB32A898EC93FD1128E8FC603419C2D2D5F - 49: 836E4E947DBCF89A7CFA651AE678B9096590FE6B12DEA601C85D11A3EC9FBA4EDD4FC5745E50EB88A0CEFE8A80A48AFD - 50: 96165224C6EFE359842F6B1243A5D7FAF1EF426F5D519A5B4F4F7640380F22C7368AE71074649E3B8C38229AE26626A4 - 51: F069917F615F432BF15BD9C7E924EAC631F997C4C5A2AC8E00EB11E72C7958C3C3F6D73EBFEA6F43F2193FC5174AAD02 - 52: 25D362142CB9610002CE07BDFCC1F5CFB3E6200C07F80C3081E875C9DAADFD571C17D98E315D3020E92E5029E12B9689 - 53: A3B2ADD23AE5432F1CA23CA42CE6EFD0B9E30076BAB13B5E208834AABB4C44F9764EA76EEE48B5BEAFEB1DECC1010038 - 54: 58F8319D720468259175A7089512D3AA405D6C761573B112E90C4D96A588CFC82F6D38CDA680F6668C2370658F5B5F32 - 55: A9FB298676F605C92C722FB6AB428A0E8739D019EB7C11728627128C7C94B66ED5D85FC95852CC4CAE72B809600D6B27 - 56: D21E03C7C28B25E16E92C070361FE0A66D7038FEFB67F1684DA7CD498325F837018C92EC8009ED6CF75B94FDC758EE2E - 57: 1ABCE3D5590BFCE73548209E667A8DE7A17B8999BE5089BCADC8B0C76F2B2A3DE8B6950FB55CC9D0505A3D1F860CA4AF - 58: EA5E4595961E82F5D01CBE7B5430541F5EDE2E70C59CCFDAAD00E6F2E69DEDA1C74259AEBF914A1A250E20E79113E514 - 59: B2BC4CA8ABEEEBDD49EA57C0B1589F5DE56128259BD7B533DB877F27B4FE700F4536D611A422DE1591874B32AB5627BC - 60: 7EDA9D065472B813052506E71214917050D854FE5E73FEB3FADCACCD2DC640EC1D627FF99DB8BA055CFE616BFC6989EF - 61: C07811A5C2114DBBC250AF41D45AFD43E75CD109D14759C14AE32DB7904A96BC1FDA849D98591C8D43EF9279708E52FA - 62: 042DD9712B07795FE9AC327B74B17C49588CAB803ABB3C775FDA744B251C5CA982F3DE574EC37760B3234FCCEB15FB91 - 63: 327F97EE34EA7DDCE677A4F7CF3531FC5D47F57394A0E62B8E86DD5FD0690286EE28E6235E8FD296070EF2813C816AED - 64: ADF2EC9D4C135C64DDD796AF90462FF4EC1D3542CC7002DD8CFC20FAC50A0FAE01A65D35B000D191398A5EC57A1954E4 - 65: 75D6EA64D59EC622BDA970ED8BF034EF19840E1797426651198982FBD8899F6907CA3A5910E2CB44AA48ADC149D07B43 - 66: ECA433A801082C9B767C6F2E7817E0CD01B807DF6C2B3A3FD26EB283E771550AB722923A9440D2A68CBA7868B19485A8 - 67: 1792DBB0259E6C4BE6C5317F3D48E1E43B6F7F5AF6D12F24A523017C7B46924B24B0BCAFD85B10A92BDEA796232129E9 - 68: C282467400D993300EFFB83B189F4DCD1D1EF2A32EF5ECBA4AD23B6F455DCAB8EA3D6F16482DBFE286EBEF594D587AD7 - 69: 71007B69C9B15FA519AF8CAB73514A8B92534513AA19153E7723E56AB54C34BCE618BAFEF9AB92D13298BD35CB6E692A - 70: F82EAB30F732330E9692860682EA083586216EE761EA08C014C8A8DD2DC08FC9901942F311F63F63BF3AB8B4DAB14975 - 71: 4BB4DB01AC1C1D1A5DE657436ACA5275E4CAE772BD6AB9B358E0ED094202BE9600724A5BDFEF0461BA7F1DC2427CF155 - 72: 240914A09175AD5BED4CC2486F1CB2160EE182E3B71E17EFE5B82DFC0C8F0A8AD30C1E1A03CE42F31E5EA64074CD6F66 - 73: 8F8EAD15C47CD6F89ED7110D454759903DF4E1FF3E2229597893776CFF5195DE326080B897A3833C20325A3A127F9064 - 74: B815CCD36BD92DB0F74CAE305B7B77182EA6741E729FEF0BED0919C42E04329C2602535784C22E35BF8622468FF0E5C2 - 75: 0FBDE2B10A882163D2B52AE4FE609FCE18DCE971241FE9AB5DA3D486BD51E1445B14B65B841A4F262B994C2ABB588FF5 - 76: 3CE139E2B58F5E0CCAB2E4D3DAF8DB4CCAE348E97B9D87F5C9EEC91508DCCA697E85F8CC6CB399FEC80BA084528B9EB3 - 77: A9469B079964D0F8CF27E36762BD3F8E9F1904B4993AE622AE01AE4AE926E2563BD36F960E3E59341F92846F253580AC - 78: AA5FB18258FBF838FEDC3898B421A9A1A742EBF0BA7E8A8947545CFF5922EB0E2F92D8959002DB97121C93861DDB9643 - 79: DCF1486489AC46EDE14EE46C0642B9456E370B45A52C8611714CFD618CCCA42E63A61384DD7615F4042F36719099C761 - 80: 849BE67D56B19F08667FC7A6CC7EC5A5813BA6EBAB51BA30B5B1EEC99A7CE364C6B3DC588F389C830B174BD946EE6913 - 81: F67D9CB19E53910982C73B72F1894ACB02F902E25CF6050E4289A695365A3CEB482AF6215CD0323B4E587FB5BAB392C2 - 82: FA36BD7CFE938653150FD74A4042BC93A8A822E9F8173571A94ADBC1DC3429D5C531F516D04228539D11E496B984DDFC - 83: 861A3A316AE078F5DBB8104A20840D578D68B3301753F08D831D077A71C7665D104766E50959D2549ECE4680F9F7274A - 84: 6D313D3151483C6DDC5CF8CD6AA184A397EAD7698BFF1E133942C4325B5341D4DB01ACEA6372D893A4F9998039B80294 - 85: 2B330544810368EC3889068A58317A0E33867F60F80CAECE9DD1C10F0BE08C3D128881048E4401ED3EEC7F4AD72CD88A - 86: 7CF48A30A434E6CADECEEB13E1012E6E96388F1E70B1398DF1C1D698DCA96A54D93BAF256D2356FF37B8E6512F35C969 - 87: 8157A2A24F2B087872084B40C14CE8EA874C5F3CF99CC7EAEA5B20F129D2D77C79C6EA42B12C2C6CC557E2CE0DBCC1E4 - 88: D4CBE9A60C7EAC9FBDB9AC13442A0F8D49141B11D3F9239E2318024A501C72D2DD9ECA5401E7F97A7569F905F414A8F0 - 89: 94145EDD14EE5941B0640ED98C6966333779D21B51E3EECC046E1833210924F2B4A113A7E6810E2B670FA28BCEA84817 - 90: DC5F8BC7D2AE1B645833C72C4DFE753ED9E742D006D20490BB52954BE27D8556099484E5C432D598496C6372059B6B2B - 91: B629CDEE3C53958792CE699FE35B2678BABA9BC6F48CB5FDB8A575F180C72301CD6ADD8690E02412E6B8CE8327358F52 - 92: F26B761B5F75F407D5AC984C3B81F14CBF198A76C7DE0692253603D422EF8C4926B018C0ED210ED8549AC78BB543C64F - 93: A88234F5311E7438E76AB5DB42EC62878DE377B74A1E951168A2D5B1D00E2C2AD7F9AD322F438C58E6E879CF045C390F - 94: B153A0BBF5BA9447B0BC53FC71AC652C279015579917BEED4BDB5225BF592D63F871034C93A88518A98D0DF5490E82CC - 95: 4024BF283702055A9460F24EFFE8963468FABC1D54EE4172231F786652BC9D45CDAC121C88F92F4B4A707670D89E4F05 - 96: D6E266970A3FDCD4A833DA861599179A060B576959E993B4698529304EE38C23C7102A7084C4D568B1D95523D14077E7 - 97: D7992EDABD2897203B1FF128271AD5464ED507900D9AD3D0701CD4896AB93E76DBA918E43155AB908E6812FA40C09DA0 - 98: 7833168F67222DAFFC2CA272904E248063BAB4F8973C69D0F85CB665323389F15D533C2F3E8B55F0C3E71D59A709F9DA - 99: 43917A5FEC80AA876D11919AB0C739681F912A998A190B051F75854388F1908BF5306231D33F4E30E50994D0FE7D949B -100: F433C88078C2BAF1A5818887F8C36D34FA62561CE3DB34EB3C9F8331A357895DD29DC98286A0ECB64601B177873FF813 -101: 1C3A5CCC5DC4030BA16305A85F59DCED8CB5023DB4479E8B3749A7004AE77BB18996931AF4C16409EFCC0C72CAA4C1A1 -102: EE8A6C983DAAEC5976CB0ED4446494D348D0D571EB4C77FD8CF7EEBDAA0733F96DE2BDD8CDD0C70F5FA4391A336107B9 -103: 1F91EE551AD18F268876D1FC262F137FE196580216C5193819A95EC5222537D2A658DD129C3D8080E65EC7460F1F4704 -104: 5B8D0D5CF8B41BE507BE8FCBFCBDBAC3A28EB368D430FED6780AAA78A93A8DA4A6C50485949CA344F228BE91A96005A3 -105: 4A2F0A8F2F1F4CC4605CC2537E0BE28CF8B465C30F0A54B494A7128EC54EE4E85706B5E47A5697344D15CBF85680CD40 -106: A29BF5A49ADCB475A13C656F4A9D529CB7CC586B1D931646DA6172D7D673EFD745EF16040099F435E96168B0F4363E62 -107: 8A6E85CC4BD8B2C161C2AD6DD96B494A33F6F5839A7236D0D9A0747B888484742B8BDB1A6CEFBB4DA774B8F5A1059CD9 -108: FDD86101B1DBCDFA8514CB2668728EEB47BAEEE250794DFA7955693A3C316B2A95532F11BECD8359D6EDA99912DC059F -109: 3410059B9C81DAF99CA10CBDB58D6EF9301682AF4B75BCDD5B50A36127E7A2EF4CD185F10AA707C57B5F0D9FD6B6D18F -110: 60D28961A90F79CC60D2085357DA8411F6BEEC0C9FE1CB3FDBC2D80D737DD83449D6A6E3D347A6E286629DAF87B66178 -111: BCB12B36F8BC6D74E23736D19008D07AD6A9CA3E29FC17F5D505BCCABD0F2309D7BA11BA421F14286ADAA5575FCB83AF -112: AD107FFFD282B3F49F01AB1C88F62E88F779671721FACFB7F969DF1D96E942FFE13E1629B8DF9BF4C4B13B218FDBDF3A -113: E65FF7BDA6A992B32D4C6F8A13481CA6CD80161D6F44780D1244B02F8B06533ED0630DADB4954CD7B88AB6FFC35399CA -114: 123ABDF1D6B601CD040090006D6F80A9831AFB48C95DF4065E1581D334F207F66360E57720354C76AA33C57AAA7CD706 -115: F04B9EE00D64D6882A32B7F1191B1B30F814C69153143ADE1DEE49A710088E938639945AA20FC9C6737415F44E3CB9DC -116: 6F7C0F4892E676B880D4207020F41E0FC4A2F307697A25E69529C0B9B5F8CC0F1425577BE5F783D3C8A02A465DE18556 -117: D821A2E3EF04C924B3FD7D953E72675933B82847A4891FE260C6B8D53B2DC5AC5AF0BDD2B37D979024E91521EF60D877 -118: A7E97286C045A4BE5063079029360D07BEA0D325A70BDCE30076E761B34D363B3E061D33BBBF1BB26D65BE918DB4E767 -119: 00AF631F808431398E9EF320E97EE5C28110AA9FC9DD9365D536E8170A7CF3F36699A0B99E15BD7DB8E2CE614268D9FA -120: A160CC9D12716DE4020C02B259FF712A7C4CE3488A8D22871CF5CC13B79F110EB35C6377046268E9237016641F51099B -121: DDF7D046DE9C741C67E4C6B65F4EE6790EDF7F76A3AF7A997EDF23BC1C7650B4311E53C921B56520B95AD52B505A357D -122: 5DAD82A9A04DAEE4E7636E42801A1FB9248F3F0FC8D7337C3838B3DD4AE5F08583A00A3295FCACC1435A9D0E670C1654 -123: C193DCFAD7E89FE66E7E3D2664C541B407DDEC921EDD35100393EE4BCDDAA9F086C2D023E161A604695A8333BCAAD4A2 -124: F4421A9C548AB2485507FB2C2ACDDFCA6E9481D10E9057B96A0BA6909E308405ADEF66D8586C1A91AF25BC4DF4F349A9 -125: C250A60DBAC9DC3AA06DC752D6ABB5BED93FAC50BEB8A2C52FF86C71331C55A1D3BE05E4136B2DE811990BA28D1CAE36 -126: 750211AD5768DC4F99A236908DC832191AE16F65C616CBA0C0F53E60B98CA65C5AB2E0D1B7086B8E1001BA85AABBC883 -127: EC728F56EAEFC03913FD2540AA1EA2D10BC4631A074A793AA8DB687E9C3FE8B6581C37445AA6C2C90BF76A489B62D2C2 -128: 77C4B75F9E92EB8DB8E3F9074C3D3ABDF06BABC9868B11F789112FF5822F6115421E0EC1627AB580B830E6C12DB692E5 -129: 5E7ACA003B911F6CB318C1182631D9252F90750F901A377F5F4FBB87BF2A55DDD11D87B1D6A51658B3A20B1BAAA296C0 -130: D33BCE776E6D67139EAB8DFF9FAE5A7F012EABA15BD35EA1D630830E6A7032A9F2E277711FB5BCAC6AFEA7F390A876D8 -131: 060858A71D11780D60E48B47C1FC6357AA0AB77974A38D1247DE8003368E5721C5A3B289F7AB2DD42EBF2C42282F5624 -132: F3CB3F6C05914501C89FE8536163EB0CCFD2D9E63A1591698DE7AC0E3CE38835A9F623A208DF37687E1956115CA2E1F0 -133: 72D7F791DD6B7E70CB118634B458BF6977A64B1A6C27A136464AE12DB9E7ECC5CB2D7D73C8FAF07D4D93D1B2E2F1C0DA -134: 0DD4000D8A25D0CFFDFE2B7151FC610CB5BF25D9249D855CE8D0D647D2151235A12092A75233EFA7820FCDFEDC59041F -135: 25D2BE1F5A681F8135992E0CC18A7B0758D1A880EB3C64D9C722F80D68B744BB3A89C223A0C38164CF4A423F91F8A533 -136: CED899B993A69F66251A7872FBB87F8BE5967857B2693E3FEB032B3440DD94B78CAB782DEBFA10956642AE536A8241E9 -137: EF446C45F31F98FE3AA92392EE4198D8C797128CB87DA84AD008AAD1E1D972D0C6D98EF74E99B4BC5B97AE92BE53EE27 -138: 1A7EB818F91840BE12AAF24D39D5C81051FAF5814BB64DFE697F23B2822BD3537C1E7623DD9EA6C06CD2693F054B3E24 -139: 0F35DF35342D118F3372E3682BD702B04C420F239106C611219DE4E0B1D7121CC9484478A7F4BC3B5C0389BB82C8046B -140: 0E10FEC501B24CFC5DF22085FC8B7D43638DBF65709304FB3A6A1BDA7815F2D0C58EC6BF257D6B16B087C415AD35C1E7 -141: CB6B185E7F5E232DB435F2D02F6E8BF16DB60F895FC92CBC7FBAD356807C5D693853FE638305C4D163D7B35D51B9041C -142: ABE7A3A2309B13851157043658589D3F011CF2B58DED164CEFC56654146F1884ED73D195C5176EA879F7821E9C332B3A -143: F25214F92D3B1CCC162C46A74AD8FAFD33E00ABDCB3048744D93D36BC77F2796F92D91CEA8946B357F14F249792DD8DE -144: 2FE2A7AB6DFD014F013C662E4D669AC595F7D80BF8056D156BBD0135DE841C17E7E544AABE568DAA2650EB58C0506413 -145: 16F18F6D08B03AD95691DEB59615BBB7330FE8F75DCD5F7B314BC022D3E27821083EA37EC2AFF3A22431305BFB315342 -146: A2294C64B7941B21124AE0B3A73D54D139D67965021201FD46F4F59BF7113001BA8C76B0E6C29143070A40966D24D9A0 -147: 6D1E58EF4EC828467268A92EEE3F622FE475DE8B1CEF0A38031C9CDBC7DB3804A683FCB9257415E904883EDA4D8B93DD -148: 8D6482ED3C1B5B1903D921D9B32B197CDEA5ADE41BE202CCDBC5709DE4D6AF80E11CC2724FEDF2C2D77BD8831A61C339 -149: F726B44377CBAABCDC3B4875D4B369769EF8F2C11D28F23ACF196A202BD3364ECFDC4B032F3E05E8088498D6F32ADCBE -150: 12560A76E0A4A4222AC89EC18ACE2843BEDBE0EEC4CA689C6A9E8C71C64DF0311BA4C14957C54CBD190CA095E386811D -151: 144E9531CB3D3379A6B1A11F335BCD21C712BE8C6B4511EAE05EA802AF5D78CA049BE38F886777A8FF9449B02C4E0E8D -152: F8E53817BFF912A42876FD20E35FD064A05F39CE42DEABEFB435DCFA2466B4ADB3C23765F13BD31E3DBB0005D695055B -153: CD728182C73A391043CA41BD05614CBA964919588017F3C7BEDCAB9DB3F618250FA3418C60F3BB0835E27B9F8964BBEF -154: 02636722F4F0E21728201ABA1C86B6BA79B57E4C3AEDAB300A7D03F973B938A74044EFE7A477684C4715E8D9335B6188 -155: C9917BB005AD6158EF50A2A2B1C3680F88796C70C9D3F87963E5D652853A4EFFDF26645811756981132C09FB855B00F8 -156: D21D724FE7C4064144A2159EEDE9331354998F631F9975317732FD5BA049095B741D9B200C027CEF5D870F1C9DB52EE2 -157: D417B70CEA7FAE4CC1CB195A5159FADCE9A8642F9B229EF1403AA8AAC3C3799C4E9474356BBD2B7860B74E55142FE048 -158: CECA34BE220603EA5BEB301A360255314AF963E0D0FDD0626E578C0B42A5F44686C7F15B5062089B7809CEA61DE6394A -159: E7C2C9E69810413212B0DF7BA4B361431D4F3D20AC8730FECEC454EBE12F18866B9A4B5227989DC61C862D29786B6595 -160: FF19F7FD7BA1617E7F31397D0D1308E035860042DB2DF5AF812895CF2C9EA36AF9234D730D2A633D87C8D836B1729BB8 -161: 672D8E8F7E7AD6BCBB602F1F7F15DE7D59AD72F441778C061E4961A40A991D26E151E7A5026C2DF69707D19BA1A4219E -162: 10381CAF7829383AADAA9569CCD84ABE6505D78817FCCD44252D71D1A6620509318C26F4F1193CB6EBCB0450C9BE9CA3 -163: DEAB3596909B7463E53801F6748DFADBCD615FF8C77AC2F78D12ED230B758CA717F157A4A551B7BE42D95EAE41424363 -164: 3E44362375F671109371AB12C4E21DF3B4F69FCD0B22B5B408D52DCA65886A335AA02C119B1D4DDE5DE316A0426762AB -165: E289F3866AACC5FA881B43A44699D69887AF10D96CEBB47D20713EB49C50B3D1F9D71DA9EA4F8D75B194A84738E7A7BD -166: C93A6A3F09E1A61FA86309398663486E96CAB9D6FBC630B3CB53F520EA77E18806597944CB780193EA79D4AEFD65E20D -167: 12442EC232A21DA5FB424E8C51416FEB6E1EDCFF3476875A80F7F2237CC873BF85EE0AFD93C3F7BE5C1B33D184FBCD4C -168: A4F7BAC5ADF27C96BFCB084091D93C51B4E6E8442A7A1D473171C2D5A73F97EA8FBC4D619FCAA642D3B3AA97C9D7CBC6 -169: 6858BABFDD40FB2890E6EFD2D32A06C5C9579C1ED70ACA8796BD1B512E61233B0A3114CF78EF02CD9B2407C9D26447FA -170: 75A5AF9FBA49DF9E0774B77B60BE134A9779DFA560AF54FC632E0275284DF5A006ED485095D8EA57A358D748B778A111 -171: C8BCFA5A29CB50F7DE56E258806F0E40BC8D4008EECF765F444506534FBA43B1560CC5B925CC825AC23FE540A5223225 -172: 3D8CC6117A23AA303ECB4596C85C070F87335EBEB1CD0C0FB78455EE271E299E5D68E43545162A12B1B31D4C89200BA9 -173: FF4033A73D1615DE86C770E25D05919C0CD18FFB50F3E8F832BCF0D65DCF91FEF57C3C336807A07708F243946091C6B1 -174: 2020043B473B8A878548E2D90844C0AF4F51FAA8BFA7C4A80573336840C8D599E328EE197688443584C57C9B0CF2B67C -175: 977197E70CC7B75161AEA543971E09280E04ACF639B031D954BE8993CC72FCCB50FF1BB8EBC7A9BED365EC65E7F0B923 -176: E954B99371301C4E29225E93BE7A8C42864ADE844857B25F14A42854D568155398AA69936DA49FD268776DAEE2EAE75B -177: B6DAC53FF0058619CECED87E7F0A8DECFDCD44EF201695EFD744970B53C2110B34A42FFD8FC3ED385D22515A5DD7FA00 -178: 338D89616AD5FE0C81FF4D64CA274F29FA2BB15BD1C03D551180EE545D7588B961EE59B6A841BC107473A5AD9D3003D4 -179: 26D29BE4726EAB64D207EBF0B0A653C5BDB49D4BE0E3D085381007182DED1F4ED1575BD3D951711D6D49830F4B736B1D -180: B4E2F98F6CF352EEF41148459B3AA81AF033EB4EAEE10517DCFB05D84EF9552241080A2CC78C60034BCE5760821249C5 -181: 659E63335B9E946685B923447F6E08950DC97736214D38DCB0A1F46CCCCF474C204A5BB3702E76504C3BBA59C238DDA9 -182: 64451295F7CE5D38916B81812E4B10E5D2663C311A43F02F927FA0105247571755C5F9931F3F521F4616B45108164AF9 -183: C8B6B136BD8E8EDDCEE3637C3872B9955C63CB62DA669ED5C664AD31B9A77D8A91F8E504C0B51DC03E30CA59F45AA967 -184: 9E0BB33CEAAEA09F3805B152A2DA475972A8886539B45B3F016728364083A11E345A2E32976277D322DE576A660696F9 -185: 86CAF7B9DFB6BA1B79ABE881DA5891EC98E61ABBD4B7F889CF5B4F01D9C3AFCD0F8AE5FE9C0D967D3F1E6106BA99C7A0 -186: 83B69D4D2F1182AD64F5DAC98AF3EB4B8817A8DE9B9D3C1159B3D1D1AC4BB763B9CFAB6E89B1BE6C289C04A7983B2958 -187: 693F93EFE5AE69C773B6BC623FADF4B8247086EBB424CD393742DCF2003242C85A843D28D98394DFB9FC45EF297E310E -188: A272286F6C14202359290D5503C385C7A09318541F27122CFC1E008EFA1AA5F8E86A7B89A799D9171FA91FB1B4FB79D0 -189: 4B0AF4F1AA4F03B1A12034328D2588635E3CE69C92A4A23B99F9E9EAF53CB80FE24964AE5CDC80F82D2C4F6B1204EC69 -190: 79BEC27CDF535873FC2094929ABEAD60945390DE5D1B0B6F978B9856F1EDA2230E7D44458810CDB6EBF9E1FD1D769903 -191: D2D19D934FF6AC59743FD35E538155CFE3402DB68116E8F0C5AC883302D2D916A8E704F4860F4BB8439A4D8A2DD188AC -192: F47FEEAF14CBDFD7A1A41CF15A1D819095AA673142EBAE96F43E27C04990B1A8E88D85E3DE952C01F931A32964F74B71 -193: 5899BAF4ADE7284EFD3E985E20145FB8E1B8D37B26A0D8A286C342D27BF65BDC96078E81802AAA0E9817AC38B6CBE259 -194: 45210363539CAF8ECE76FCDEF07053C23DB49A4298089BC06B001F2D03712AA565A4E3DF20828D251CAD574E1BD4CF09 -195: 68C4994FFD5DAED4071AD382A1F5D3692AE12BC12974A13E4EC458916000F4699DE8C41DD53492860AFC6FC32EF3394C -196: FB1922DF64C07983F8B288602BA7FBF81285B0A4367BB18047ED2D520B90776819CC900169D38367D3E3056D3AF15916 -197: E26F2631DA328E3475A4ECBC2CEE90FF6C07E60DF1C630164193FEA932109B8493EE6CF95C3E4EAD01CD159FBE2D6338 -198: AC80E42D1F3CECC2C55CAA648E6E28C4676F4FFABDAF1F91C652AA44265CF1E261842308B19378F14A035D80ABBAE5FB -199: D66C1CA84D69B546D2E54313DE3DAC651B0AC696C2AA9909A6EBA20736716D9262E0163573F6F1C3F179E9F1559F0EFD -200: B13FEBB1B3C54A7C6B69367F693A1D1F3145709B6DDEF23FF15874133EA1FB9CFA48EE7FF4EC9AA987DEA641E33CCDF7 -201: E1ADC09F58F561140C959A1F1B8945E1098DC62272073CC2209B65A089CD714E0A472A1325BD2F6B40E4343F933D62D7 -202: 499C8B1AB4D590B225F5E7C6B85691C4FDED5BEAED16968FF3AB9B25FF1412AE970C153584B731CB763AC7DD6BA3D785 -203: 0C9EB9EB4F3C025488CA6526A6B503EC466B62719557F00055064708A819E76FFD24F90A1F9D6851A6FCADD52E0499E9 -204: D359A919FFAC6B0041AB766E9F2D0B02ABB5E7CC491AEA8A0EEF81AAA58ECA52E1262C58925D9FA4C59E73E948E5AA54 -205: CFFFC9AFAF1FECD47E4554C3C94FA6F4D08887F1DCE53D9E78A4F224AE38AF650812334E1845CF60BBFC9F8A72F0B949 -206: 2DA46ECD91373DEB9675C75901D3BE59ADA8580BC8F71DF2A3FF1AE02310F23681B6C6FC840B492E59E017686EBAC7DD -207: 05C54EBCCE483360359D63BF0AAFD97E2B15B00EA40C6152B3BBAC80285711CD0B00FC234CDC214251E0AA13E38A0008 -208: 13A929EB9E4AC18A07DE84B17E79BB420A86924B9DC4CD80038DD61F17770FC42460F2A0A717DD26FB6B6B4DE357AE02 - -Hash: sha3-512 - 0: A69F73CCA23A9AC5C8B567DC185A756E97C982164FE25859E0D1DCC1475C80A615B2123AF1F5F94C11E3E9402C3AC558F500199D95B6D3E301758586281DCD26 - 1: 7127AAB211F82A18D06CF7578FF49D5089017944139AA60D8BEE057811A15FB55A53887600A3ECEBA004DE51105139F32506FE5B53E1913BFA6B32E716FE97DA - 2: 23A5743EA4136810A2DD503252708D35151259C859BCB7AC46F5F120429983D14736FFBEC6BF8F174977B44B0C5B73378EA88A4EC1F7AA295C04B5DB9017CA48 - 3: 123119AD1D6E168E0F20A3AF1FB2E29C76BC3F83711CF3EE3122AE37EF6A1C2E094BD4BC53B7F9A45C9DB1F900F87A3759327A659DE341EF1A7B1787AFBE9EBC - 4: 8A012A2D7FFA17EAB1B63C2E6CCEAB1597623362E7CFF2F1D81BB1D1813D27AB344EED9987E55FCB4315C4F8004D4C541A0CFF1AD050E5B1D39EC91BF68CF5E7 - 5: D18F88E32C65381463856DF34FB0ACB1AEEC7FC21941B628534CBBC44CF23BDA195B46A8B4CEDA76175FF1875B194E453479D66C7E51C8ECA9E79A1E5E35020E - 6: FA6BBD204ACB2A0E44E3330BEF3AB905CCD5D86B2FE7E07DCE2A8C484B676C8317B5EDEB3896D9B7AAA3250059B91AEFED0CA628E8548AEA63106E4758D56BD9 - 7: 598D98ADD2FC26B551E9E7385551F760898230A51F0E507C567FD502317A521E8FFDCC062302286C975811478B89046CDE9D148814BB4EFC21B5C901EFF0E151 - 8: 44D125F785E8EDF22739FE0ECAF0902969131B0A66B93091119B8F3BA16BAD118FF2DF4CD47D2639FFD180D5E6491CF957E6D346D6C7D914B810E4560C7E662C - 9: 3A1B39B1F0FAB64D4AB06F1082C9BCB72B6DB81CF391363B56F2EDA562B55E50406ED946A4D18777A46E6A6984A561A35A0179C6091BBCEB890570017E3F3C4B - 10: 3C5249D4D814A0ECCB3269F5024F3BCF102784E043A06A6A6A9BCBFD20F753BBFC5DA0808E34F8836DF428AB9F2541DFECB36DF288112CE0268902DBE510598E - 11: 6206D8EC11289EF46456F35E483DE20FE0AABF6261FD634473108375A63D5BABC27143ED51EAE3C4D8B7649638DC794AE63810903ABD4BB303700804ACCBED32 - 12: 06E9C5BDE5128B27926B475874B371F7D8352FEDD18BF29F9C7C1F7BC1AD267E93FB5562D3E0FEB47CE10089ADA5B67D6BBB225A5181BE3789D539D2368DDCB2 - 13: 628012B90C121454C02CC2937A47A87C7F96D1B91AA42589022941720D6F6A8B6905C489364250D21308A13D7B00529DD4F303E95918EDCA0682E64F1C3832A5 - 14: B99F8D912D10ED113884391C27032E4A92475F6363F5A7D8B08ECE569EC628A0F1DCD51E0AF640972D56C7BB570A97E67E9DB59811BE6A8FC6EB66611026F98F - 15: AE8359EDE5BF78C10A72A484FEFA47164AED963E458AC880DE4FB65604355655FD8211B11E549E925B3A28D7E288FAF5FFF8CE15CF992586434D10CC5A8927CE - 16: B1241C96B35EE185E39A58E5B481925BE53B3EC31B5D082366021B5D7DF5B832E0951A239CD0A337DBBA6DE2D3A0948105C3120A074A450799AA2547E700EB1C - 17: 38B94B9A3FFA22F622AE3508152AB5F576A20A3B55FD7521849A6C8ECDD06C132F41583258E572DCD003087EA92EF835CFF2FA5EF3634D0D55C2E66B1ADE8F20 - 18: 1E77FB17AD950D28E4C498C5697E46F70F1649131E6B61CA90F32AF38F342C108CC33BC63825EF8EDD539B4C25E21AC5B3DEFFCECC53C0A570831031A4F225AE - 19: B8AF5686985A34CDDF4B850F3A92B55C34C6F1B418C4225F4BA8CBD8A6BCD53338F635B376F37F9E434E716B7D4CBB4B240A2AB8AF1C9B8E33FADCC84B79F0AA - 20: 1F0529210804655F91186C04E0A94F4AFF12681B13728DA70725F9FA3680DF14539F37601C47CF0C6CC0B42EDD810EF6E5913C3FB199AF7EC8E38D62CB6BB2C0 - 21: CDEDA0FB94EC6D9155EB049DF7F379E537F500BC42048D46B4A0959B4F2F148F7F39D6C8A46101E64023EF37ABB101FB3E1567D55C1E872442E4175415D1B8F6 - 22: 97E5AF6C72FF3AB6941A11D321310C4BC6C510C57AE480BD74B13B4CA0D2CA08067FA4D101D3998AB637680271F61748365777B7C9075366217433C8ED14BF3B - 23: 171C2B53C78491921D7CED8EC5FCD6C420FBF509A9C46B13743F3921356FE439194767B24A7002AE1C5D20B16AF2FF16113AE64353EFDC198C085C0A83EB8A6B - 24: BDA138CC4264EA65BC361CACDDFC24F7F2932490569E1BBBBC6DBAABB2A439FA4C59D9E848462C99F4A3E904AE4D77359220DFC0C4109005220FBF5EE68E501D - 25: 89483F3ED6CE89576702D1AC3D3441E51CD1E4989B8D3D01B92BBC22CE7E4EFEC53F3FB7EA9EA392366E30B50EE72A71700C9F2F36A0374D07DC724EF5A7071C - 26: 22D09DBA077F3CA703A5C3118981B4E6E0BF9ECF644E8A50CCD9F9A8BBD201B5AEB8F44876B54FAE4814E2CA8DD8B65CEA0390822CD00FB804F6535005CD939B - 27: 4FEF39AAA693F0B425E261E448D1D4BD9C09CC213F249AEF6BF57EC20E83BDA5DFA0D5073276DD6F55E03D537AC6E41B7DA24E39C446B98A1205CF0E172E779C - 28: C2919E494C333E510EDF5EAB888F5872399D6F6F9B2669708CCFA6F3622202F514C4F65166B93CFDF13D5ED4057FBEBC3DADB50E9F88BE4270077968042144C8 - 29: 41DD097AC338442C76407A100FE4CA941BFF3CBD645ADAE50505B8B0D6B41901940EB8C2E3142C2C765488C9283D8247A9AF011BA9E4BCE11B9BB3CBB6750159 - 30: 455304D0B290FE4160D66D78F5DA2492E538D15089C74031DBB2CA3E8C820C723A89BB85F90FD0CD22AD6AB005AF0CD87C4DB3EB463BB5E35A06650C6C39DC17 - 31: 2F09F6DD601CBC8A0F8B324099C13089DAC3009BF9B0063817438C1055E7593D27822B1854A2560E664FE23362921072BA2EC4A6B28FC234B017C55A077AFAA5 - 32: CBD3F6EEBA676B21E0F2C47522292482FD830F330C1D84A794BB94728B2D93FEBE4C18EAE5A7E017E35FA090DE24262E70951AD1D7DFB3A8C96D1134FB1879F2 - 33: F55D3AA4A656D91B04900111A8EDFF4C7AA7EBEF8717F9679BE4C2852FA098ED8050E70477869E8AD13F62F70436E429E83DD9C268CC1F4D6E410004317A10AA - 34: D448BDB045C8E0AA4DF423222A8ACEC37DA81BF020CEACC49C93AE374F2051981406B736388DE716F126D77385A051783833AD6EC3EC293137DA493198C46C7A - 35: 75A0C701E69724627AFCCB915B63235E1E20B6A63E7B54B1ACF7EB82A37D437DB5FCA2CC9FBFD55C60018F22153582F846B2AF1761A369613FEFC7DF645E714F - 36: 3497BF2EABAEE843AFED140E204B88C48E3D1CDF99F1EE5B3F281A39EEC554AA169C5940EEB44B732667C3F9BFF4BC12A7B8431216653CB06A88D9D91E207245 - 37: F0657DCA8FEC2873E4788FAAB46CBB528A850D2E5C36A301D3C5E0AB2FBA04A28298F8E3455143687C86AF48B7090F18574A39ABB47CA6C2010F79A9AEA16528 - 38: 8A0DCBBA20DD46CCD073DBBBD38362A7C7806D9D3EEECB7BB75F9344C607AA3401AF20A1176BE3786ACB804A74CD2FEFCE00325CE9D9826B1F18E9D37872DA6F - 39: 3A91610D901532F12DE112D6690720B91F8004E31A4319B66BB9A9B2D345E1FBC214D3D9A3C2640AEAB1CEB876ADD27B90DCFCE3002227847AE5DE747BCFF162 - 40: 413A59AFE0BCDAB6478BE0CED2351BC7AD833EA07B08C7A58F5050030969080EB96C1ED37FD480FA57AA09B152E74193E247EBDFD8F3DA5F19AF5EED19761CE8 - 41: CB368E0D768F9DAD380B9F1FAE3CEC41739DA61FF9DA3DE813A76D65A7694D05AE89C280456954CA0472AF3BDC01326066F30EA643A4E0FEC67DC530681912F5 - 42: A0E331A70EF82DF3E913EE97B210B4E0AE47C3B950F1C9B1ADF66FD1602831BB584F661863F4592EB152119A63B1517068B339911BEE5557CF17E6FC937D921E - 43: CC9EBF97C234A6CF2B08100343C2845CBDEEB27F5968BF39F6519072E22CD07E4C81D11F43552AD78AA4E38808DCDE7A9C917B6567DCF3FCA60CC1153F9596B2 - 44: 6536411A996F5692A4F4DB792D6DE5F73E0B68F919AA551644F07CD5FBAC1331F27D902B8EC9F33D882E5B6638F013E4F08642EF91EEF7AB868998960836633C - 45: 76F62D8BC869E64476AF4C87D720EEDDE7D8B79A0E78D4688BD27F329A0065B6C3F8FD87D8CD2AEC493BCB5F88CFFEA341EC88486D2671E99ABCC4A61C271EB1 - 46: 11EA3F12DC7483B0A9D133951165E696E992AE88AE1C98FB77A66238570E59F9ACA5079FF3F3A226CF8DC93AE3589E4EEAFB7F48C38640AE18DD05FB9AAD5CFB - 47: 74BC2C69D958135E73EDC4703FEED12E89B8B5889927B87A9E35CFEEC1CF1B1B6F4913F3F5D97976DFC859E64A98D48BA0CA4F89069B84383C66F2B2870CB313 - 48: F1CFED99556434ECC9AA170228C2BA5709EDD8EA68AB9ADC118036AE5F49677EA9E2F7EB003FCE763FA35E58687BA6CC9BED2ABEE386D91D975FB9AC8D1A2E3B - 49: E5B20D257A021E4835C06DCCB770EF003657E8BD5BA79B64B55A0A8542CFC3657705DBE5AAB0D5FEC34999938CE5F66D497445F8E522BEAAEAC7CB0A679CCC7C - 50: 20E0DD49444601FF9C6237D5F94F4EC8196F9C917C37E1EAD04E814802EDE40F8A8AA9C55015602A6D53D87A0D4119B6996813F90BF984B6FE571B79DC5BCF73 - 51: C8319ED403C57E18A7D2668A9B6621DF11A34FBC54BFBCCCA63701A2F50D3BBDDEFD603F0262AA2DFBCB5D82056E9034CC51FF1D69996BB985E6C782C82F3BAE - 52: 867926EB86AF82183123664835D7D4B941D6BA4C8988F3A2A17DB8A4439C6180ED8DD14910738920E1A3FC8F6214FE05BA218345B9079CCA662AAE480519D2C0 - 53: E9FC3C407E282BD9A6BCAF1E50E3A738F843830C6F9CB1D4F1C34CD8ECDC7397C5D4D3C482896BEC7383EDC4350CE40AD700BA5400B956F2CC1585DDD7129420 - 54: E1CF4D1704A9D37DE70F3F56A0D521A41293095A1F99BA928B3A3DE90DB1E2BF2F74EBDA9A90CA9D79BBEFCBF9BA6D140E1418AC46965DD4F59017E1ACFCD459 - 55: 355541FA3EECD27B1DCA8D596B3C41F0C60D85034F8811E2D15FA8977E25433F297C5C14775A0E5C26429062B952BE7DC2DAB84A69A56FFAB826CDCB49AAB4AB - 56: 2CB606CD80F35FCB14183916DD04C4508EB0AC03CC24CF0DA485248758BF0910084CE6C503ACFC76962564C13D9EEEC408C3CEA22EEFF9C7D41B206ED8F74F10 - 57: 0BC7A701FE7AE86E7186D27F85435D088385269FC333D124C17AC32C10A38E494291007532B06114199245CEBE8B4B83AE85C435CD2983A2C342AF893A161169 - 58: 69B557C3824DF67B6CDA58E107D82A3295C3C888EED24432E002E312D4BEDA1FEA72DD4419FCAF751C11BE33BE6499FFC3A3C239327B7D781859358855216148 - 59: CC0F4C0BFA00891BDE18E07B766FC52BF19A26186F56D7DDFB5C9683BBF814BB15104DD999CD70FB310D8757B938EBCEEE59E42A62E4D654CB106BF50F1283EB - 60: 2F3E29791BF2FC175F6E3ABDCE41FEBA2B77C5F016BF076692C51ECDE344D0E1F21187F6EC0D958D6A1373639D1CFB64BE4E9C36D3E5EA1B9F0BE3ACBBF6063E - 61: 3615F2BBDC87E8AC38B03C3A73D671A855FBA02D81C204C2EF8EAF24F7F4D4DD0B6DDA1631D884F4B6F05C1D1E324DF2E4ED63430B43AAA42F87DEC2D4C7E6E3 - 62: 97B59ECB6C17B829147729D80391E09A399F7E49F781038F3DC1FF195D90677CD3CC9F723AAF309B4B8911D25720E4E399070353BE01A218FBDAC460C3AF22EC - 63: 6A930B07A37E9F0C62E2A220FFCE9DEA8D8E34BA52C0A7311C5F4090A253F16C9281BC0DE528E5EF86F187C3185F2ED244352A5DDF5FC09E99B4008FEAFC584C - 64: CB29601EFBEE71F4DFBB7F1C2BDAEAFDB212DF6AE35F8BB1EE6C0A245B99F3F35A82957567A30CFB01AE28B94C7223A62C5C786E8624B8FADDCB913E3AB2CE71 - 65: C4D102C41B4F588324E3C9E880ADDF370874B30FB6C814ECE42B599EB8C1563D88E89225E7BB5CF4DC8CAEC9E7B729664D421E5AD72B94552D57FD04B254D551 - 66: 4E91B0F1107CE978BDFFE2AB3A6A67A2C4233A0AAB518DB2D4BF243A88FAB5AFF06058CC13DAF54A7E41281AB1D411E618D73FF1115517D49ABBC1A1821F2A0C - 67: DFA65C9356EBE3265151D84993C9246A8FCB9FEB9844D8B4DC7C04689035FD2966611CA81DA600559C9533E6370861C00D23C9DB16F1E715CF4838538307E403 - 68: 9B0E7F19F3E03C425F7A29C95A8417F23A3A64C18E423F7F8717558A5D8FA1AD4ABCAEC7FBA83D216D8B66BCFCFE50FC6FBE6BEE2EB054ECD3EEB71828B44293 - 69: 65E34948011BF0715855139BD03AFCD01C10A0CBA4A6C237CF38A79977080EACE8F47E1E9EE14E7D60DCC2A9FE2E9DAB47DA5BD0EA1CD3932FA788F07E04D7A0 - 70: 351164E46DA292FD3D75132545401498D8983BE9D143732DE2DF21FBF975A5E2C81584D90A773D34D7895D4CECE328637AD2FFA973E21D4B6D03F39141CF44C8 - 71: 3CCC850D53A1287AF7B4560B2EF0D43EB5D9A80D62A0E9CF1DBC040135921104D4395168E90BFC871773EBB34BCA1BD67056E1CC7DC7A48FF7C3167D389F117C - 72: 5D63F2BBE971A983AC6847480106E4E1264EE3A0BEFD79954914E1D86E795B2E18238F12FC5E46CB9CC78EFDEC610A93647CC04E1C23D8CAAA6A58C21DD26C07 - 73: 921D9B7B2B0F3066A1646DBB058C979CB3925DEC0F8C269FAAA7F9648E73465AE55EC527257D5D5E1CFDBF5D6799BEA1004B6186F5108C74E3B92FE924166558 - 74: 88725980B5A5BC5CE6E69E9CFE128BE2FAEBCD8A5B9FC2E17C614F81367788EE6DEAD64EF02AB4141E369879E38D4E1ADDB5E678347D4CB86F8DD698631B6643 - 75: 469F61487EB859EC7E80F3B6992A9C335B4CA864CA1BC7081155A882CF2E64EE787779EA251EA3EF781F4FF42ADA9CB93DDB96E9A07EB06A793F737F2C6C12F6 - 76: 8014AE3EA99C4551E214BE2A075FD7FC2A048152FF874DEFC66E22437B8410427DA8FB5BB594E09562C403D14595C921908DDC45E270B3208B2125AAAA53C191 - 77: 74E6B15025353113071735919571F765F098622730A59779D021AE39D7B0E62A887388E3064B16D3C7A1564BA5F823870A7C318D00FE484CFA919046939E7023 - 78: 2709C7DFAF46D985813EC7B14CF8357B6C9D0F0BD206A716E5DA419F1B54C0A4F6CB1CCEEB9A1CC22A6D398B641D7AB10489084365931F961BE24EF31544B425 - 79: 02384A7707E913992BA30267BB1A07081A82C97F0C8127974B16E783E4F788B2E207B91F9385A3417D339AE468E935EB31FCFE7CE78EC03569710564525C6A34 - 80: 5B4FA98001A5B76CD19A8B11C5F47BE9615A1124FDEDCCEF6E247797371A5950810283D4C2695524749F96F6E5F11B2B17810AF4B527634C56EBEDFDC956F9F1 - 81: 245DEE786EE305DDD0F6C592830B463049A702916BCED916A29F20553ADB5F160021D2A0CE50B5CB5F9EC7B342E10E63C9C643499542786B0F13C75FE662F181 - 82: C500CEF078A00D242D6A8DBD36BFC8BBF4D16FE63AFBB2DCFF0E745737AFB65728557FF624FA1C70ECA3F7318E82B3454C22D929CC2E03427A3EB92832E2B826 - 83: 86CF47EDCA1807430CFBDC87E9CCF646299285E7A89A22C44D948959F678E3956EEE32F7724C82B832A6211FB17057418DD307EFC877EBF47B05869AE4FEC59E - 84: A22EDD54BD66968FBB5B0CBD690216BA9372DFC73C652F1A059585BA4A4172E484710741E7DAE28EF32A3188D4FE227B864724DFDD6661058B62ACB29A5B6DEF - 85: 529D168D19A280DDCD507EC1C9AAB9D622C168ED4847CAC2146CEB4A8EC3E32FBEEC137A8B975ECF60FB297702D4EFC987A2862EBCAFE4FBFC8A040BE5BAB2E3 - 86: 96C78098873B4D7842CC9D3CC7C36C872CDC0EE4DDCDF8290060A64FEB04FC55EB453337E7E77B6BE081CC5D8F2821782F82F98BE8CF290F1CB8BC6CC1314D2E - 87: A6CDBFE071376FFD6B1C3C90C9D8DEB49D46CEFE9177AA84E5D8DA9B3ED5449F507F5A972C97E1CCD258381B54A3FA8C087590D7EE85B6533795DF91DB8A58B3 - 88: 2B472A62AE504DB117D77E244C36C2B6793D26E89108F34ADCF5AE51D6F5EC08CD021BFAE4C80A4C1090FA2CA83182ACDF1957FC2C21F360852C2C8C14C2A39D - 89: 6882290FDF4829B5E8BDEBDAA9BC11826CE1B751758C9DCFE5DB84A0403948EB1BA23A5A899109C91925ABC44BAAEB57BC88DEE3383C456CAA030B4EE2072118 - 90: FD0243F8D7BF9B02002664100B0B6B228C9A11D7BE648DDDF279D147C8C4B57321F348DFACDF7E40010D1F4F960355479B7CE81EC481492952B864815648B890 - 91: 348978B95213EA28BC3B01A457173D2784D1A301886891B40E7825C627D449785B1596D1FFE81EDA8F487314F56B96265230E465CEB6B49D6D58D07C195C1F7D - 92: 85D3B3427C0F58CC5D9A1CAD73F9D66F2CA0AFAF37089519CB1E3B082C96EA1E08E67A0F692B79752BC7914D636EAFCE4281F2C4E1F1A7C80EC56584C6BF023A - 93: CE2C2B9A13F55A2700199BEA8210591DB80AD51DD5227A2E34D0722661376702B0A46AF3A3AF00C9B1B0A254299D77E568448B3BC8865BE13F8EAE6B0E714A36 - 94: 552A8EE6F26E9E1CE87ACCF9674FC96A4722F30035869194DC56843A12A986F368A760EE740E6D22DDD08461B33947A6D4C5197F5877E4FA9BDDA08F9B904C53 - 95: 5DF5B514C10744318B104C4F2790EC18070A8401B5427D06CC44CF9320F110B5FEB176CD5CEFCA31AC57567C677418D065C6AF2C6E8BEFD4688DFD8F7B3C93B5 - 96: ED4BE3D733CABFDE4659B2F6D6ED16B9C69AB46D0949BF1290F360A6AC358EB9F9FB3560582C52AEBBEAAE73B04D8D040621723521FC95A143E322258056742B - 97: A070428BF846D27696D9CE6A24CB58DA841015D0CAC74BF481270AEB2980A1F92A20733CCE4BE4D9226428E9B691B8D2E41385B836C612ED969832D14E43061A - 98: 8B0CAA5B47BD3A6881DD9FE3A9C617BA4229153F7825467E16E05A19E9277466DD002040B1897569F26F0C30D8C21E554DAD7A0042E9737EF217131AF8D72BE3 - 99: 2282F0F5B13224B66AAA946889F6DA0721515CC41988754B5075FBA46EAD1A54E6B641FF536CD061923505075EE872742E748C45E01E375F8278E5F9DB3499E9 -100: 6286A3E2A02236F45739BE74F1D1D83CC55C7DCA0018F852AC52B5F5ED9B3D1728FA4EB2087E87F16FBBDD64ABEF783F1953F20D06CF271B8F2FCE2A3BEB76FF -101: C8560C1F73D8F309676B71C239C06FCF16A7A8FC710C593B0F83B32606D6D7C85B66F9AD987A4C24BAD2F4A03A20DA89D5F1F0987F60FC97F40F306E221EDBEF -102: 9D6DF09DB9028FB57B45E346886FC0A6BA37D81607BF21B4C7E5EF811197E01EEFD4BE9C22E68A1B7C714F8F7924F2EA699B0E83A3C95379F7E8DD0CE20CA8B6 -103: C2204BC64DEEF9249AB2E29187E31DB863002B0AB130C1189D76D8E41F40AAB95606B1CC3955788FD6E377D438C2C88C4AECF8F2096A5C8D214863CFBAA3EF5E -104: D29281937684621D1473A7E7EDB80B7C9D80B0842E9D801B718A13B847B9EC4F17D1082E90EF5244D2DF629786D1F0F3F4ABF9C457B348D899A66D389D91D6F7 -105: 0A320F94BA79AEDE56D0574064050A247D8F2DFFFB8E00980C7A2523B879CA2E6A077B66DB538BB707372F81DA453072EA7C1972BDAA968974945058B768FF14 -106: 95A45FA111B186AEA2B9F4C20D8E50CBF008435DDEFB07CD11A87FA84D918CDDB35CEE7A9F4EC44D072369531712D0BB82996E16F81353DBA7AB5229D16FCB85 -107: E29FE5FD5CCA695A65944360C09BA2A361613C231A79A3995BFE552F3F1A6B77E34257F58EA53CEB86FE3F90FE078DCC66374886A1239DEF364D13F26A9782F8 -108: BC433FBC25C91C23829A411CE6A15BB068E7415BFBB8A6FA9C28D786DF721FE9BFBE68B04FB0EC74378F2156D1DD77C35376528FFBC2092DA00397B5BD74065F -109: 127612CE5CA9DF6918EA8BC7E9F4A2F2650E7471C9C0422E90891382F93E89F247D36348AD57CBAE703B898B846BD610E796C81BE5ACC0FD72636D46371BDA6A -110: 0381B5E3463509BFB578EF20C4ABD824EB6D7AC97A0447CE917910475AC58D2568B0EF6C1FD91EC1692F6ADE94E9D8BA82F6DCA14CF3447587F4EF627FD92DAE -111: 265CC0491A1AE6071EDB97771EE58406C0670DEC9C531DD0B44E8B7111FE51FDC6D44C3547D350E134116F9FA75D9836E6C38BC78C099A98E476A3A7CB955C8B -112: B44E1E6A3B4C597CC576754772B57904BEA0CC132520A265CFEBF27079F494073ED2520DA03B5370404AC5CD342C1253D261A60A8ECBB04F453F0C9972863004 -113: 287AC1401EF422FB02AA9CBD63D6D9B1F4CE54E468385822AEB353517A1322F04489C632891A261E9E24D4EDDFD9B603EF9E3854B8E41AC96A6B9BD7F995D04D -114: 158676AA01E5254B4F26D3C0A5D6517608EA8C237627C536268DEB7239531527BE936DD3D79140713FFFEB6131EF731281F5C76507FB09B110AE5F2E567FBF34 -115: 2A5FC3C6FBF1F885C21728A6095E7057D35750546EB26A04E3736D251177765EB40D21B7D36EC3AC2A8A4093A860D6BCA57667D8E86D0A1DB0ABE76A997826BC -116: 932C41E642771EECCB6AA135C5E14069EE073A21352AEC401688B630140E8AEF14734B748E28229B0B55B62349FB4247A910B155A0D5FFBDDCC9573A6DEA68AB -117: 3B89D3C164A814F8FB65B773E5775BD326AB6D2AE331499E8DF49EA15F8849442B916C9146B5078E8C736414DBB67062F18AE37B33320C4AE9514B294326E1B0 -118: 66997E8892D06568F993EC906F6D6F7C7186D954FD9646C9660F04358E08DA2CE47008900B38B83E8AAC014BA33C0AE6A541D26222055A8E9ADD10D41CEEDFB3 -119: DFB1AE03E491E5C637DEF10AEE4A668A35C5D3EA13E02C626F5527399FAFB1625FB93BA389813CC2D728FD6BEE207DA07847CCD13AA1A7B7DCE7FDDA30FA9AFE -120: 7A1D68CD4CC8DFDA9D181D639A2A96F15E7B8545AAF0E7EDE62865AC5352145ABD0429D54F3FB58B54D227AE70959D99F972425F606429B0BCC9F7299348BB3B -121: ACE2480F467F60566E3383091C0609A80D673BE13855C451B857E0E4C496C13074928A725C2EA59206965B5C7F834446683E17FDD1505FA3A49BC13C753CDA16 -122: E9E9986D2428A2CFA74A72836AFA3B2FECC1608E0AC9445E66E3AF8538D3385D7348B04AC1D446EB624F890018EDB59CD70FD97B245010B3DA87C1A8AF3D5DFB -123: D1D57CF31AD59B2D6EDCDF8C1B68AF68E3AAEC415C4F2FA00174D56394D71F70A276492C800B2A2D899EEAD95B849123C934188444FBB959C72C3002F2276BED -124: 1FDB3B4AD20BF1AE27DAFE88FB86FC52BE5EE12DEF74120674443672042A2B662D7560655700206737165AA866685B2633FAA5FD63DADC559AF412525527B132 -125: 4E773E49D0A95C02CBE48AA80D12C54EED596931D3E230DEECD012D623ADD3AC42F2771D14F4B4511A69EDA3A719B06B0A23C9CF15A4EDD72AD0EE3DFB453CAE -126: 9606F242AD1EA9046807BE0F95F3B3FEA36FE68A1DCADE5EB181003494F4A16D125F7A2372A45EFA4751DC676E3E67B1703FDBA3DDC457C362A7AA80D900F381 -127: 73BB20BA4987E427DB00B5D42E431B3A37232F41CA4D29591758F26E73788A3B3468EACC9415F4BCE5BA6AECDA14750080EDE3F0D1017727359D215A770F76D0 -128: 989C1995DA9D2D341F993C2E2CA695F3477075061BFBD2CDF0BE75CF7BA99FBE33D8D2C4DCC31FA89917786B883E6C9D5B02ED81B7483A4CB3EA98671588F745 -129: 4D8F28EA5211C66A28B6A0F98B34B45E9C51CA6759193FF52D10EE579D64441D9B240A40C3660F39AF600A9FD15F137C635ED13494FC26A5E27A23F04242BD3F -130: ADAB2304D128965FC499DA1D5955EEAD869A9E6B33D9CF03C02AE7A22AE277F35F45C45D9BC6297DD7EA49664EB213780C97688C3241443CD7FEA04BADD5726A -131: F4A3DB8BFEE2F2D0E5F9287137BEF902D1B78C474445CA56DFD0E8C5769AC90BD427408353BF9440901931F65FBB727A91966CEBF229233236E1203641FF06D7 -132: AA9B9D3091580D39BC893BFC28358CBEE8C9B6DD2BCE64856633E5BBB08CB9BE457DEE04F7735969B2E991555824F12AE3CD3E1553786FCF0D0A8368F4FC322D -133: DF7F2A48B2D154DE7D3ADF710CDD3D1528EBCB06371A72AE607E6E6836163B179800E1EF1BA08649ED405637C6617D6600B0AFCDFD7FD9E39A1240F45C21FF96 -134: 76DC7B65F9C314C810C75A7C7A520CA9BC750D14FB4984F982E86E4BB1E46F3DF3CE529BFA7B52366884EC66A1FB6DCDB9EC04A72D9405E0AF9FA1BDE9054A32 -135: D942DF0DF09AC042CD3B641144C98D8FDA0980BB037FC5C0E7F2E9A073B073DC4BB8A8C1F4CB5B45F5805C6523741ED0571D6779B15829B2FAA280FC60B50645 -136: AD8EDFF4F1B7AA1C63BBE49728AB9B165F7245B3D7102E6F99C261FC15D2D0BF6AFEF6A491720454A1349FBF5D848854875AC83A1156FD7F6E2A37AF26C07FB2 -137: 3F827E5D7DDBD54EA1DBA28CAE0154EB5FF8D8D973770865861B7CDF5F091040889D55C0E74B672CEAD274FAC1D4A559FD9185BE898AB8969B5E78681527660D -138: CB36F942BEB4E689E03249E1339A4C038970DA2EBEFEEC52522EAFC0673C1DC8919121D8D9D5D2C71E437FF4A6640784DC4D2CB84F8AAEFD32B9B9F2BD3D31BA -139: 9D6BBD48EE6103734BCD763BB2C2A586975DF08F1A49C59645651A6FC641A2D93A3D8E0A09A596F585DE9F700AF2BA4B0C6A7383EBAB422745E129472330481E -140: 6CC31CEAEF178C8526794C1FA47154264258731148AEB3694D443B11A59FE756E540CC662BA862D0D6745F75C542DD2614D8E27B25E0C56D0AF5CE6475BC13A6 -141: 3E92887FF9919469C7927CFC56523492ABDCFDA14D7FAD2BF1DE875FA05E2416674AE1793799B7A0703D4DA88CF67D09AC64004DC4E332ADB6B199BA6EE52479 -142: 64E5A4E32097CF9EEB8170B582503AF020076F2856D7E67C0ACB4C53C5F7FCB6BED9E330BCAAC7C9229D7875EFBE233877D5D3A43A25376EAF7804320599676E -143: EB9748309C6B70FFE82820052AD26EA99F43968D2AF359ADC804B2A76741A62EA8D710F018EA113C2259D0BD6687E3838602AE6C1DFF727AE985F059141C7217 -144: E1951B8BCB58CA75A34AF80A7A2B765CAD4257FE383A79B55BF21F180B75F6E5B08F09598851EEEA7D13486387618D6C6BF88CF23C0088A3F783F59A06D60493 - -Hash: rmd128 - 0: CDF26213A150DC3ECB610F18F6B38B46 - 1: F069A435C14A8D4B02A7BBAEE02D0BC3 - 2: 48456EA1CD4C51DD8E1130F625DA4F8D - 3: 6E41F2AE95605779C74CB5ACDFB361CC - 4: 0C7A6C73E99A5C65B12D3EF47ECA9D2B - 5: 3B80361C079D1B67933455D00AB1428E - 6: 0F74C4BFBFC740A027B1D5BB9CAAAFA8 - 7: AA54ED5DA34CE9205B64D138538C0C1F - 8: 08445C3C3E71434DE375CC2071430EBE - 9: 1FE0AE641DEC6F8C172F0E27E9E73B9E - 10: 4E8152B7EA8F7A31D8649A51389260F9 - 11: 0F851C98C2B997C2459B34CCB209E481 - 12: 52D27461FD7E095EE3C6ED43BC24EF23 - 13: E9F3489135F3D90EBBADF9F916C34920 - 14: 36D527B693D6531A5E4E15BDE9E4A670 - 15: 57433A07CC200953B7FD440253D5E476 - 16: 4A91FFF90756026A90A83927066EC911 - 17: 5A247C26BB1BABDF1009B6B4951FD76E - 18: 002DA29AC9F51F065A1E371660BB67BE - 19: CFFED09ACF01DEC9D3891033C0973953 - 20: B78F28AD3460C99D428AF24E2787EFE7 - 21: 5E203157AB6BAC57660F3D25FF615C95 - 22: F128F5DEC3A24AF34AD3E7F3883C8051 - 23: 2E05AF10A6CE9AD1E0C0FBCBF69B1C9E - 24: 67FAFD9A5CEA5D41863D03AF2932C5CF - 25: 5ED7E86651AC4BD0EEA718C773812977 - 26: 6BC74F78256A98761981882C3CF7AAEB - 27: 44CC573B964002D877E79B75E4433E41 - 28: FC02FF53665B52B58DE38784E2C28E92 - 29: BC4D69312DFD24EEA219F29FF2AB2072 - 30: 0355E82F130341EFDD997EBDF4469221 - 31: 453D500D997FC85F6AE16365D83ACC05 - 32: 42DF4C5A3844F00F77ED84E125237113 - 33: E782D7162BB54E735F7B9FDD75A3F14E - 34: 78993013EEEA7B14999DDD3979191D74 - 35: 27BFCEF540F0782E9A28328E8DBEE59B - 36: DCF00356DCD264B7E359F02D7D2CDBB3 - 37: 9EE0BD7F55EBD844A8D114F83B3E8FC3 - 38: 01EF8F3154BA9B9B817AE717FEA00A68 - 39: 4DCBC2AA56D785CE7249761791442BBB - 40: 10282C07B870BCCE0C8DF9E68B4C5DAD - 41: 0757B359AB2D1D121BA01BB345A12A87 - 42: 450AEDEE570A2E9B1A19D5B4747B2AC9 - 43: 2C45713898BD259B10E2352BECFD6DE8 - 44: 3E92731175E510FCD07D28AD47DDA0CE - 45: 6A8E5690AD4AA2180966AC1503A81A18 - 46: 820BE195E2AE85C115BFE3C341567030 - 47: 9C97E1F0E7DA29A0527AC4F59D520100 - 48: E1257842EA15216543BFE84521B9FDC3 - 49: 42BA484CB70A58EB3EB5DA43F1D5D5D1 - 50: 2C674397A81CA35EDF1FE77B442BADD3 - 51: A3E07C012A7C67D2B6557F4A8B4DD031 - 52: F01789A2E0379CE16D87EEDE671171CB - 53: FFF1657EC846507BDECD2DD829DECDA2 - 54: 1673DCE23D430948AB818D47E83BB5CD - 55: 37CEC696967031AB2122155998A07F51 - 56: 320B7D4DE17A731B9BA5CBB48956D605 - 57: 1EB07088E5F563DBC5DD988ACB84B048 - 58: E4DFE704E4C25D06224D2560B4650467 - 59: 6C072AD491BEC80667A6D71D9C8F2FF8 - 60: 53DA8AE3F36FA8F85072A89962F39B76 - 61: 40210D1C7A728A27E1B5F92057DA4765 - 62: A4C4E5F271F3BDD74C560787718E8816 - 63: 4466033447F1E1C9BB107D152BF06051 - 64: 406C6EC2643CCEF38F964864D12C9191 - 65: 19F725CB43B171DFE18EDCB90A9DD900 - 66: EFAC3C9FBF1AB0C0F3601C18FE3F0212 - 67: 9B9BCD32F735EE353D33A657C2292475 - 68: 68F4A4294C640BBE4B1E90FF107E05AC - 69: 3630FD1C9542A56C851140A7D76C0D00 - 70: 21AFDFAACDD8FAB91027A61F8DAB6C91 - 71: 2C7AAC93B6CD1F8E23AAFD49F04C69DF - 72: AE4C5124059CFFB3B823E68FAC8CFB33 - 73: 79E95CB7E752863AA87A7693D0677D89 - 74: 1B491E33A96D9838398A4F624E773DAF - 75: 1F3986FC593D8A8E927C82DFE1F538F8 - 76: CE64F09024A907E76726E29E1364E606 - 77: AC98817981B59789E7C7E9CB9F70FDC3 - 78: 3827B4B077493B289C25EC3E91B36D26 - 79: 75295EED68F750E506C60A780B7F0285 - 80: 4FA47F32992EE6C96C3B96B6A69A6656 - 81: C52E142B7838D731FC036517003FA73E - 82: 3451812871ECD1C09E4A95CDC80369B2 - 83: CB5261A793A55DB33016ED27A35A20F5 - 84: 2D06368ED98E266E81A3C6491BC24890 - 85: 677F6509BDB3D44BCFB088A81BFD96D8 - 86: 6990256193FB0697862AB5A45FFF082E - 87: C88D698EAF83E446C025EA915998EA01 - 88: DB8F672EE8129BF4BCE25704DD57BFA6 - 89: 807F491456D7E28A36AD6E934B053EA8 - 90: BBFD55A483CBD0F9DFE18FEC5070A166 - 91: DF7735106411CC29535664D85ED81603 - 92: 24FE3535DFCC295C2F34F3F88CACDC88 - 93: B80CDE220C4199DE303BC97FEE125048 - 94: 8C252310E9A71C7BC40C3D2011E24EA6 - 95: BBDB705F5660C50C5B0C87CD812B76FD - 96: BD517928591240C7E63C8D9F957F6A4A - 97: 78A534AA0F4250EE83D752F3E6940148 - 98: 3346EDA882F00D6073D133CE609D3B83 - 99: 51EB1D3235CD35A2386E314F815588C1 -100: B4860192E79C1233A08FE595C084315F -101: 79EDBE3E80887B4F741199295347117E -102: A2793EA5F25492D32D315B3923E945D3 -103: E398223EBEFC56D3437AA5FBC5345CA5 -104: D3E6593D69B24069AF0374671E466930 -105: 12D63F5AC48F99BD59EC863B61952C1C -106: CC99A81A22B62A0FCAB4AE889112A8DC -107: CCC82CA5D35A421FFF313F90B9D1A675 -108: 5B4A2912071CC36CEA626F9AAD34F257 -109: D21FC82D78AC98C5DA436388AC9AC6BE -110: C2F22C7C16DD2E1BBFDD2BE7915B869D -111: 2B5AE5D14DC053558A1702959367760B -112: 7A6A3A6553B2C3387BEBE119E80CFB2B -113: 7E2206BCF666B89341CD7615D0291E3E -114: 93D87A658259C7E9FDD0BCDF93A24356 -115: BDBC0B062FA3D743C1B070F2AB43D180 -116: EE0A575AFFC966F58B91BB66CC1E6B6A -117: CC24CF8DF0798ED2CCED077B06AF1BAF -118: CBAE264BB4AE635A15D8FDCF7F9A6852 -119: B879B9BBF61B6F291A8E4645B70EE06D -120: A6F88AD4A16F789A58F178799279B40E -121: 3DCB6B1674608B11F496F45C9828F90C -122: FF34A1C7748C5B5F2F014ADF57241C43 -123: 1A77E2B20ADE5F286705251495AF04BC -124: FD47EE73738626733CC63327D4F5EB7E -125: B9438B50CC80CCE0303244713853A0DA -126: 040BC7876B31E22590F5898068B19859 -127: 16ED82C338495D067BBE1D4AE73345FB -128: FBE1AC0EECF0AA2671A6F25733E9711B - -Hash: rmd160 - 0: 9C1185A5C5E9FC54612808977EE8F548B2258D31 - 1: C81B94933420221A7AC004A90242D8B1D3E5070D - 2: C0C355CA556CFE356ABC0A5595BAB1364BD86444 - 3: 6D8D360567AC2CC8C4EC11DEEDE0ADCACDDA388A - 4: 04DE53FED2BBFA80FA79698B4C5627536FB620A7 - 5: 9538F24F7432E952F030BBA82C9F744365035197 - 6: 817ABE77EBB7EA159AF7BA7DE1EBBF034FE6CAFE - 7: 340835AD791316DE50DDB59838F3EB13F5521228 - 8: 64B7269FA971B162612265C73B9911F53EF43B63 - 9: AFDD1E7F8E39C63DEE7104014AD9EB32B855E0F0 - 10: CD2E472470BE8FD70A306DAEC5C59F485EA43929 - 11: 550844206034AA74E37D813FF29973D3000C1DBF - 12: DC24FD5F309A7BEB9A7CFA7A354F2DB2CBC15AFF - 13: A814B4CBFAD24B7B92AF0E16794A793DC16D10A2 - 14: 6C316617808A930BD29972B1142C0AEC89EF00AC - 15: 3286BABC7C4635FEC52F67CEFF1471E122D50258 - 16: 696C7528A3545E25BEC296E0D39B5F898BEC97F7 - 17: C87DA6F87A65CBCBC4B02BFD6D01E26F8047B5C4 - 18: F1AC2E0951EA5875B71723BA1A2158DB49EE073D - 19: 091A39765126ED406254E7F810F02E0A6124C6A3 - 20: 4002C0305550C5A726705DCF8D3880C54FED0453 - 21: 2B59904E1585334B1298AAE6EAB06526CAE5A232 - 22: 0EF94DF816593728611664F4ED6A0C4DA28C5AA9 - 23: FE7AB8A5B0CA3C86B6524E3333490D0430E9A4A0 - 24: E748023DDA7E4B77DE8A4424744331EBC62A6590 - 25: 96147FE511BC64D9493C795ADE8FC71A78FA8C23 - 26: D81D7D3B46D5BA875EC2604814616230D7A075A1 - 27: E8245E6537FEF146A2CF6AF9BC54472BEE6213F5 - 28: 231CAE27B96A78767A0915A529ADB6B72A8006B6 - 29: 4D6BE5BB6D29A15A259C8B7BD4827EA82F514425 - 30: 3B00599329120E535A5D1A46F35AD03CCA27F9D8 - 31: 2AF4160DADBB84707F7355177A4644E4CF577DFA - 32: E6BABB9619D7A81272711FC546A16B211DD93957 - 33: 1E374AB924A652FA36B395D654D226BF901B6A04 - 34: 67281E2EFADF2EA6211B549426D3A598B5E1F291 - 35: 993464E56DC035716064577245BCE99ED175356B - 36: 298D2CEC0A3887C93501307B51F75BFD5CF0AFEE - 37: 2A0A02BF4D63CC09978EAF3B3B85A4DE8470B025 - 38: 6236F6FE25D5157BA95BF49EEBA8987A6A301D2C - 39: B4DD7121567E8A428F16BBD5A8832FB2EE68BC0A - 40: 5FBE6037F8D8EFAA9A315C070CE3373080244496 - 41: 04D5E112C47EA03BB60CBCEB9FC8ED7D92A68C0A - 42: 658797C7756256C98E04E6718D9F8952F90DA672 - 43: 6A27ECD40BDA4CC81C599DE94D0D2904716FD457 - 44: EF5AC5B8E7A00560E79DB54AAD4B97E996D2745E - 45: E67EE5275910B48F7D248A8B844DBC041257D695 - 46: FFD256BCBBF0F3BB4DF615B4236C147FD09F4F1B - 47: E83A4B18C347F188301DD3AA78265AD3AB3C0311 - 48: 13968583BC017CF0C5043364A42EC0D97E923711 - 49: 39C33EA7C4F393C4DD4B882F73FDDAC2D7FE1EDA - 50: 50B0068D46AA025615053132BB53F88DC062DB2D - 51: 434198200766DB6CF48C993906FEAC2B47224A3F - 52: 004FBC3820002357434D6B8ADCF79BFA6F9E3DD7 - 53: 13F7A8CDDDE021BCA6227EFF1A71DE19AF399B66 - 54: ECAB85CA0C2AABF18F5359F94AAD7578A08AB5EF - 55: 3C86963B3FF646A65AE42996E9664C747CC7E5E6 - 56: EBDD79CFD4FD9949EF8089673D2620427F487CFB - 57: 635B0D05BE254D82503A9E1DB7647DD1B5D5D6BF - 58: BE314B818A657DDEF92DF123FCC17C1DAA851C04 - 59: DCFBF0575A2B3F64B24DC203BDCB46290B21791E - 60: ADA425E87A8DACF9C28B67E8BE4B204A31960004 - 61: 35691DD184E08A80230467ADC6E68599B7295A51 - 62: AD1CAEFC7ABDC90E7877D376957532B7D91D7434 - 63: 6D31D3D634B4A7AA15914C239576EB1956F2D9A4 - 64: 2581F5E9F957B44B0FA24D31996DE47409DD1E0F - 65: 109949B95341EEEA7365E8AC4D0D3883D98F709A - 66: AC745186C82DF8697458326051A6CE7E4E9C1C1A - 67: 5DE50BBB11C62ABE22E7EDC288B7D1B6A1CFCC60 - 68: 7DD54CC4E8C70A4AC55F4C0485A4DFE139253757 - 69: A5E0EFB95E6162F9637D58D3E4836F9661D6A34A - 70: 6C77DE7607A361D22852385E663171148C0499BD - 71: 3467662275B136AF096D84258B17CA5F23BD6397 - 72: 1C56A69A826F95B8971635AA709978A441E75836 - 73: 9094727596F086BA28956A6BB69CCBF3B2B29FA6 - 74: 8C0B6183C33E902C22F17D81D18144ACB7B66FB2 - 75: 24ECF7598894FFBBC7D30FB1EA47092F03C398CA - 76: 6A02FE0041D98AB7AA6916A5245BFBBCF6635C2D - 77: F3021EDB24459533488660512660DDFF7F451C3C - 78: FBB7561C0065C90D7B8182018EAE73A18288E968 - 79: 32784F0E354A20688359B6EE7FD3874714C48677 - 80: 8BFBA0972D36739EA808C37C07F2E320ACB4114D - 81: 74EADA88C8ED0B649FCCC36DE338CB538242FE10 - 82: ED812B77C12856DB371E6F7DDF15A59FEBDD6962 - 83: 27021F491E923CF0B191E13ABCADDAA72586B769 - 84: 47664874218C135C09ED40DFAC26E06733AD02CE - 85: B39E492616FDAF2480F13D6E46CEBECC1FF5CBA5 - 86: DE967F65BF6DF26150AF866FADCA58C45DDC337B - 87: 8F2E2D23CC6A2B52B904032119CE68649406033A - 88: 247FB8B2BD1BDC35D0C07EA10FD9686A19E4723B - 89: 9D1E80D5695569D0DE28587D37103BBB0701E462 - 90: FA5C338E7506AC5418C4FC2C04AA933588892D4A - 91: D6BC93880FEC0163E3F223C8A64BA0879BBB0AED - 92: 8F27EE9C8A923C9698584786B5227CF17F0F557E - 93: 4C10ACF2F404236E2DABED0BB48DDC6D00AC4B16 - 94: D5166CC6B779EB2D45AB3222181064D05FFB5E23 - 95: 13042EB8245A8C5DED69CFCC1F1DB264889CF5CF - 96: 07136FE8CC1A03673891BC614E29BE79EA02D627 - 97: 73C50B2751C502572492C801C28B02C7E9F61B76 - 98: 8BE4B71D50C2D2895B9CA359ECB69F90CDCB1DD5 - 99: 36A669D7C1DA8E23D07B29BD6769DC324EB6D6B3 -100: 8AE5D2E6B1F3A514257F2469B637454931844AEB -101: F16396E005FE5ACC34EB53E6086F477415794BF2 -102: 907CD2922CA5F62F79E17B28AF389A38066E2C9C -103: 62C9351A21A50F2150367F25D4C166C63E771C32 -104: 8809CB529232A0CB22D384B70462B64D93B0EC1A -105: A85E4B4260A836BF0DA50B83BE1080D98CEF8A17 -106: 21D2A0D78435B2590B2C6366439939B9B15246E7 -107: 204FFDFDFCA5D46CCEC5FA96A778BFCBEA70BCE9 -108: 01DC05D6006E12D2F63A8F061B00D18CCA135D41 -109: 30E67D3FC0A0A6D2F257AE24EA8C168A4B0E0F5B -110: 9B9454E2B42908E57403871A64EA5E930F35B70A -111: 9F72DB053BC5370C786E34013FB8DA5958000D5A -112: C1BFA4009BFEAA30ADA4D940FC40F97FFEA3FC39 -113: 26FC30BF64087DC3FA4CA394637D15F73B7687FD -114: 36106E0DF24B7DEF46E9AEAB7CE0D784FE619D9D -115: 0D82262E443C3C56565EE35776F95978E16F1757 -116: B19E6C73E94401020B14ABBF19A15A6F0C9061AF -117: 68ECB5552C7B7B26940A82B6A67B0F4C62EEB871 -118: A834797B79DBB564AE587003EC4B74914A1580C5 -119: AD430B4283203A7B7F338B9D252DFDBF807402BF -120: B89CDC109009F1982C8B34FCA446953584D3F6C4 -121: 8030CC5A4F55566958A5BFCA97CB6F40B9C19279 -122: D0CBD1EA711E2D405DA5ECC2905DD8A3A3E83C37 -123: ACCDC924549D314019C4FD1AAC6AE3CDFB81BC84 -124: 312933643FCAAEBA4DB9BDE6EF7D6EFA70E37399 -125: 47F11AE47E2E693EDC0B06351E935C9B5DA42A35 -126: E4C6AA211767C15E90935DF552E4EEB89F23AD50 -127: 2BE8E565E24A87171F0700ECAFA3C2942C97023E -128: 7C4D36070C1E1176B2960A1B0DD2319D547CF8EB - -Hash: rmd256 - 0: 02BA4C4E5F8ECD1877FC52D64D30E37A2D9774FB1E5D026380AE0168E3C5522D - 1: 1D8ACF74B1E573CD18F674A656CBB42D2775F552C1DB4E53AAD13CA11BD6C7B2 - 2: F3F828573917AC450BADC76346959631AA2F95BBD81A11385E6F5ADA37CDBA72 - 3: 5F7E44B9139D312DF5D1BB993D18C81A4F0D4F3C838CEC281FB2705BB794BCE7 - 4: 85C61A4E83F6729898C7B314D5BAFDFF52A74E56D250F93CD5897D9784BAD6B9 - 5: A991B5F7AEA42AE89AEDE9388B36ADA18197FB01191BB6FD0CC60430CC28D14B - 6: 77A1FF436C780DBAEA30FCD6AD8CC5E885F906BA6C47E063306A4F55318E08F0 - 7: 444B048799BEC6B27F4610F84B39068C07887D08D2BEB86658D697FA6BDCA072 - 8: 590094FA91A424568DA2A36A59AD6278FAB52B1D3A6DB54F15101C6561521C47 - 9: 081CB429EEE586A5343067B92717F6B5A9848C418C9B401639C46C548335A9A9 - 10: 027E1BD9B94E8574EC015D61B89DC1CA4DE0C1F5FA2766FE3AF785106F41487C - 11: 8D04CF38DD51CBACEA243750F8D070354994F7CE7BEA0453B7FF5A775882C6D0 - 12: D216F5F19DF91D8F429F3E37B24870137CA103719ACDC0C8DEC38C84E7E632F5 - 13: 9F9DD490AE25CB5DE2AA5154BAFB77BA2275769ABEA7A67DCEF35D24FE9CCD33 - 14: 9457BD492CF1818BD1ED0E19A21B01C37610F7F8EC64580B5A9957E53ADB1040 - 15: BB66CEC86F7424A681EC72BCEDEC52A2094CEA413ED3EBFCC0B294BDC698668E - 16: C7A379F7F6C0A7E6CDB840659061DF3C16323979FC562D82455B56AEEB6EA300 - 17: 4E602340A2910B6CEE248D90574182184BE342097CF009C9D628197A8EA140C1 - 18: 0D1398C0B19C77C052E867F6E7CF807097466FF2510CDF113DF512DBED51D062 - 19: FD6D66506EAF6FCF8E2099B2933AB66E44508E7801BBCCEFE56FF5AF981AACA1 - 20: 97D651CDF20DB8AEC9C1521FECFC05E4B0F889FA9EB66EF1A871A5AE808C19C9 - 21: 6408DC8B2ADD72618AA428F75263E71B154544F67E760CF60AC55E4DD0D6F2D6 - 22: 911189A4A9AE158CE040BB42D943AE34446146ED6193110E7B1142D164BEAD80 - 23: D3C083CA2E210C4C2724597F32FA7B3DA19CA65C9871D683C4901C671EE1C642 - 24: 9A615D37A2D1371F556381FA0485DF637C22EEA2837F25477BB177D9DE869118 - 25: D910ECFF8056B3E394CBCF0B645B3008AAE92CCD547FA44A519CBF920D403B7F - 26: 1A87170F5A18669EB41E69CAB585FA327B1CAA37300C5CA78F5E39C51627C402 - 27: 4D12DDC6142978448CD7B5381BFD8FDC847AD1E80510C3115BF13BBC6603CAB1 - 28: 22ADE8ECB7F3CB38A902FEAEF0BEC86842D87AB8239A366C992D3A528518B48B - 29: 9F44A733B43134FB6414E974B5CFA51F030AE7E3D88FA87811FCBA68963DE6DD - 30: 220E600CE4D7B7B6E55942503A92A5BB5A465089FF714FC2396844D8F82D9DEE - 31: 66452A4168710FDB3324159BCD216621D68C8226A2C72EF532D99AA32F3510BB - 32: 0961108443DB15095E5B77B907A71152171A1A38DE987F48FB692B63E6F8366A - 33: F03CE07C4A208AEB939C525756898ECF0112931B941DFB9D10DB9CF1677016DD - 34: 4F5237018B528C16E7E3557B5DAB9C0B2CF9ECF2AB5D4AFC7364034096EA1EAD - 35: 31DE8243507EE06F570517D356BBA08144519FF02BC192ED6C5B72BEE636D242 - 36: DFBF28278232BF83ECF5655B3A98A295606B36D50623D87309A9E41F38F07DC8 - 37: A672BF18447A7B38A8070D81E20137D17D1B6F12EF7807EC2B502F26B2FDFD88 - 38: 08BA1B06319AF152118617949424DD56D8A5B25B3CD548762C885BF3F0B5B804 - 39: 4414D6FD839FA2F59B7191CEC9D64C638C4FFA68B5ACE58397BF9F5E03452D1E - 40: DC4689B0403652290006DC4616A2CD910C9D0CCBC9C3FDED752EDDD5E8B30CAC - 41: 65E220527C2E30668BE29950094D32958526FE61282719E755B77A9D0964F62D - 42: 1D9C633609BD66C9D79BD6D15F92A855389F2AC86746521E867D4CEC477FD8D4 - 43: BB1580974F0DFC2C43DD5AC6574476247AFC77C7659619D3ACCBF82F7B02DA67 - 44: 20EA480E09BF0DB5005719FAC0D6418704E94F8A36DC5D035FD0B0F33B1EC31A - 45: 430FE91156DD28552E37F2608CFF0EB966C6320EB402FE4BDE0EC10F280FC9FD - 46: A83A95DAFE6FE47DBD1AE9A730D62D791853A66EDECE3CD3A5D79D5EA2E852CC - 47: 94EC24274FA110FBE2FBF01EE05B6A41F7FDABB284D422DF0AD97B8878544DE8 - 48: 5A311B318E82E776228D5A31306647AE14658499B6B1F678AC68D6AC7A794C79 - 49: EECD9C706520AF15E960CCD22513F985861A7243A7DC93106E968652ACE5E577 - 50: B1841ACE57E67FEEE2E0B6EF269074B367FD65944C9A05F4637C7D44503EF88D - 51: 2D6B88A5FF09116C87CDE17BE3AEAF6A587474089EF1034298DC6BE800320FAF - 52: ADCE72E8A1066B4C73CF42431EE141B611682528A7730ACEDE6503D3FF3AE0A8 - 53: 8A8C37E1747D1BC9EFF92EF59FAA6B734C62EB78C2B3DB43F93CD97F8BE41887 - 54: 816617922335B1E5C12B92954B0463ACE6F5537B2033C9A51F0359A137849689 - 55: A7E0D9BFB62FB1E4A88F127F0664CE655B363DF17910783643A5F790EBA43F1B - 56: F961DBA8C62FA522B19FB6A376D2E2D3071E8C71E899708E4763879A369A1186 - 57: A8E7CD5B63463A2E58382B76D0D3E0188EA0D3D1AAC5965ECA6B2C746D751B59 - 58: 98FAE21943227464F26767A74F725FB35DD81E599D8B34625770A140497F9B27 - 59: 550DADC0C1FAB6C6F1F304BAAF9A43AC3C3E7A713FA5AC413556278DD91196D5 - 60: 1092B070AC7D87C2E373B34C93EC3FC58DAC222A19CE62F5F2EAC8E0F374915F - 61: DA8D53A8D17E1D4EA20EAC427E1F0BC3E3D71ADE1E15D1FE8862F2EB41CE499A - 62: 029247B7BF14EA7816155149753FB10DE170A22A050B91A03C1321827BDA1629 - 63: 0162A083B666069A0FAD1C3336B994D72026E8AB433045523366BCA9CE07325C - 64: F4FFF1BBD2086BBE13A46A8F281CBCC725D882BB783A8B2FBADE2EC969D4343D - 65: 0A8E1887EE60CD0DE01C34BE1B0C3ACB93C2A4BEC05CCF2F8117CA58C5E087C5 - 66: 90739857F831403806F7330808859E0DF94EDB2741ECD0F0171A35C6AD94F4CD - 67: 91C2AAFCAE4A8B23BAE0CE181286441BD1CEC4472DF6A53EC2BD7DDC6FA1B2C0 - 68: BB0BAA63AE67E84CB1F055D412AFFA0E8211046F0D759EAB05A706BD1CC5E604 - 69: FCC28D2003B96A3C07A70FF6B2C0C4D4390E0DB493F6D832069E73844C8FB750 - 70: 9A37D338881200153A65CB5308FB12D3A576C465A37A68173E7624121CFE4D9F - 71: F56AF9784668814B6B4326B013F7BC69A68C63A3998134B227D88EA0434C7D0B - 72: D741060526894DBFD6B79B705CAE79A2A219C934393D0499CCD3FF53B5C11FD2 - 73: 2EA96E5A9F0EB649325922072BE2555DEA2B0044D425777347D0ED1E146CF332 - 74: 7864EE22092803D666BF2458E0E2A1CDA24B60E57341B0816FD66374F2AD16D9 - 75: 50A0D061EAE67B68CA787319D60F7239728331D8644D9365B883B29DEE474E13 - 76: D73F80BBE9587C1E345BB11CF92374753B36471A39F5EFD64AABCDD0DB8222B6 - 77: 1091B151A973BA2C8D34CC05F826721ECE522EAD452569EB65EF9B7BEA530959 - 78: 635E1E849CA811275F2800E224A7702424BF219EFA77A3CCE720136E485C8B81 - 79: 51EE28464F294096221B0E3F4B7B9712A5354C4922737BCF1223DFB596D09549 - 80: 41CD03FB9EEB650CE9FC69DA04577DA1DCB81EBBA33F60A665A49FD1C2C0FD89 - 81: 7FB09C813FC022E082D9A83B4E998DA4934C64F50F0BDCD94A877DA6D4BD0655 - 82: 4CDE469AAC8792070C5C487AB3179C4C15304EF467CE24EDF5AA38DA592A9328 - 83: CA603B9165734CA8447E62D7EB813E0F1B15BCA80EB9F377BC945C20CC80197F - 84: AAE4396316AFAA2AD67468DB5471A6C20082A6162E0B91D28C5A3EFF80C15C78 - 85: 215BF71CF7FC1CC55D625727F8988576692840536D0394DF5636BD5268213919 - 86: D3F6447DC4C7E7873C017BF395327278B91C4A0F2087842921CB91C40B949C42 - 87: 59FEEDF8C57A70CD074EC8CED25059AE7E540C89F777F761A427BE4A34F99664 - 88: A789680F986CB3DAB6ABB403B9697F202AF4346EE70F0C12A7BA5A74EB42DE5D - 89: FD3335E382AA232FE743E0922A2C0A9B3203C2F5A9B2FE1B9AE54F99D9602EE9 - 90: C37B4817A90A2F72F3CFB2B76007304D954C56ABB95A8C8D8446AFD330E5CEC8 - 91: 8CC0EA382E5EBE80CB390C49DA953B8334684D2BA84D80DAF20E33A0C6A566F8 - 92: 25B5D534BA632BBD1B30416163DC1BBB3F2E3B67B823D0E98F1C975A3DAF01BB - 93: 0978AD3D43E754145B69EF750F6F7E824181A3E6383F975D3496EF66FA75F416 - 94: 263BB5B3084B1091A0E645E18AC1308AF7F62BB2B6E653A862598BC6948BDDC3 - 95: 3A930BB5919F12303BF381B59D104E928CAA96B99F8A78803B465A53EC3A3389 - 96: 2723841C4FCCAF40C397D1833FACB5927B96C8AE6C09A699913A29604725E9D6 - 97: 09679C9CDBCB196456D8FE1792CB65F5544E6575EC2B8E073C89C0D8D744B498 - 98: CEC63D082A50A7C81AFB946E87770ABF0E4C38D184F78E1003641ED0815DAA55 - 99: 671A3D948B0BE9BED110B2565E57DC126572AC82AE7DCFB65BF1B51349822E59 -100: C9DB0D4CCE88093A0809F61C6013EE42429461CCFD713CD0C66053F07294B26A -101: 54FD082DE3F67D3C04565644F169615999A2D69CF8DDF1BCBE6D8EC8A41DBD04 -102: A60C2EB5A44D7F0CBBB1120EC9299D130EBD6D635EC7A2C5B37AB15C058BFEB0 -103: 28050EB0E18F339F1B4E9F1F8A5284B4A0B2844D7518AE193CCE4B87A7000B7D -104: BE27C28206567C3ABE4D6F7D852BA0709707F5CA4BA0A3B01D11A051CF5B3615 -105: 120B73D6BC62FC2572269BA7325FD136EE5249CF073195413CE34F2A512A2AB9 -106: 7C5F4EDF9358098AFA928CB67FCB32C01ACB87B59DD522F6418A1E2181C5C97D -107: 90CAB395134B7B03A1202B3547D1D478F3FBE503D844E16566729AE29F11FD1B -108: 50D2C02A061A1A192E3EEB3B0BC24BB6EA7AA9580B2AE060C32989E81BC16FA9 -109: 61A147DBADD4FCDDFA52935E703EF0C6ECA883CC9D1E328CC72C30D375920927 -110: 498FE79B7F5DAA6C8C53A84E502E6B685A20AFF7F455B1D5D0090FBE28C830F9 -111: E625994E6ABECACE3D83E27E2979BCF696C3BDD761A7EAF33754EB9023A7113A -112: 7AB2DB3A9F6448FE0E4F2CF9BB5CE8CDEEF9EE52CB6A471286B6F89EB155C3BB -113: 62C2C2C5F240211DB4841A7500FE05B6DDA262E0DE2C75CDAFC7E95EA29DAF44 -114: 743A3B50D63DA1440A172DF952C23FA0FEC9A9AE208581B1AA6478B8F5D90C11 -115: 471617F452E5FEFEDBB2C86E60772D5BB68725E7317E416F312D9ADB1D5EE842 -116: 7B834E0663064F049AFF80C221221D400FA42C30DBBC2E3044DA31E86B9AE032 -117: 40DD593D41BB4B546D51DF3DDE0FC6CD2B2BD233C88562A05D1912519D7F0E78 -118: 08063E168FDA50E7F4AC535C9637CCAFA048518D41D10887EB0FB0C8AA8F0ED7 -119: 7D0B85895BB085F9E1C28B0BFE63683E57CBE1EE98F6A9F439542940AE91EF82 -120: 1842A9925914E3C2D799DEADF6BAA3A8BF3ED139954FAAE0E399F54F3429E6D4 -121: 254AF4A1815E6FB33D52554988A0E3F534B029155DA84A8E6F58D14B3CD56FEC -122: D4A7E0BE95FB6D084A552217E50812CC0318478CD70F7CB45A48C00A5C9EEEFC -123: D481D7F2543050CEEE34CD048938503463993719586792434F5D12E8EDD92456 -124: EE1D0F8F574EF0131DEA4AA39416FBFF031F461E7FAB8250D5DF8E4091375063 -125: 44232B4083D59327E587BA035F690FE6A8C76AC098E747E2463D0DB446C1E11F -126: FD3A67059C103328CBA0AEDA33FBBBF717AD5B3A328AAA1A76AA1120FC7B85DC -127: 9A2F5D8C138EBB3B420EF4F98A2DF1E8C65488C6AB842023C9B53A7A13D6ABF7 -128: CDBB22E28AE05A82CA0E4AEA774DF5932443CE9A4C76D05B5171FF9FE4092FB1 - -Hash: rmd320 - 0: 22D65D5661536CDC75C1FDF5C6DE7B41B9F27325EBC61E8557177D705A0EC880151C3A32A00899B8 - 1: D15DF650542C206F970C18117BC74E041E89697493726DA37A6F3F0FB3DAD8728D00FB27F0A84D52 - 2: 9571FD2B984A5BC36B4000DC8114AB76C8EEAAB8A091F2AC14A0201AD02D8FD0DA714EF47AB5DD94 - 3: EE9966717FB23EE89758E0B4038840161C7AB7A88D876058712231F4F810B945BBF5B5B9D3B3A1E2 - 4: 849C84A4355CF2F9D64D28B57ED754068A16F9573B3012D982143E916D1607E2EEA28939AB77E37C - 5: 5A94801E82D72AED7E836D10EA1B65448347E9591D4FA217797972F337DDD3067D55A60D56136A18 - 6: 28F83FBF908DE50967A51A4E074C5D80ADD2AFD54DF75653CB6A11FE77E885FF871EE4C854DA201D - 7: CF5842C46723387FC1DCE1A77AD1F7D8A875A3D1BA453820BDDE30930E3151D341E50556D8756853 - 8: 7087CCEA4A4CED84B48E5477C5048833767D55264BF859D8883E1ACCDD60750BD07A21DC8ECCD246 - 9: 7C2ECCDC632D902330B78467008F19C2F16D0FA60B27713A5CBC2688838107874EA68465453B1F16 - 10: 12AD7F5DAA2099A980DD9DBC5970235C25C3D1381EF0A85D79FC0358C5AE9942BB8BE4B0D03C2A90 - 11: DC3477B69D2797AF620A21C8436F42EBC1D79008E2C7DD581588AA9E3D5FAFDAA3384702DA10EE67 - 12: 5FC1E422DD5D5A86883F3402EF706F4195D25861C3133E6F242C765F0DA67FD9ABB423FDAD60AF45 - 13: 3C26026E3E873CF80F3E2962656CA15F7E4E269D7FCDDE6FBF01A447E68D87DF0B22CEBB55F924BF - 14: 5BC3C7E2B201783DEF03CB4063464A299569B0EF84A8FF99A23F305E659856FBFA96078D1B083A3A - 15: 21CBE4305CB6C2EC8F952BF4A46D1C403D21F3CD43C97CC60C799EE4B7A85586AEEFF906A9B0370A - 16: 006B6C4529FBDE25A4F4A3AF5FB78825BA02C6C2E56558A5685F48BDBED9365AE7CCAD528BF8DE31 - 17: 473B8F7641056D324C2C73698E2176B5D8E65E8C58D2F30E2A9F84E8896AC5A65B6292197FF3A938 - 18: 7F058B60F44F9A7F5360557EBE887CC8C3BD1A7395BA08736A8DB6FDA66D4EE84D14466861245AD0 - 19: C2F30D08093FC48571BD09DC6B1A2201760E11A30CC680DB49A34AE081DC036D4E56D364F85ED0FA - 20: 41713664A255F0B7156E679EE476665DE0DC05D52A6E2A14A66FA3DEEE5B36BC6CF4D6D6BE688F1F - 21: 953069C5FA9C7A4E0F7554FA33AFB943774144562EF3E9533E6122BD4FAC02188020F5B2C3049F06 - 22: BD069BA97BF14702CCD6175AFD685D0D5D811EBAE7FBF2D6B0840916E1DE278489165825D784FA29 - 23: D656C4AFF568971D09313C2EE38365986649093CB2F97523BE008677098933880A4C082F365EFC86 - 24: DE1B0B3A42710EAB3FD6111D24D5C425F47E38737D647BB7A6DD01E4D0909FD9D65876DF7B476DF0 - 25: 843F522FB630B5C69295746907E6F62105EF1897F1E833909CFAB1443BC2453D42E332DD0A792EB9 - 26: 22D6C4B5DA1EAE94258FFAA4FF919EDE1B1C78156F79009241A8D4072ECC193A299B228F0EF65CC0 - 27: DCE0CD9F9F86CA9D1768B6D82C46F5CF5A9CA3DD06B9CF423443D6A5B65DD76A20C3565F4D90688E - 28: D63452D7A5D2F4C997C71BC1C3DDD7CF1EA1C2942A67939A14B6012E77D6A44C4754FD104737C32A - 29: 5F7F890560B601ECED41AF54CD070B6BFEFA48483CCFFBA224D467D8420422FB1B732A5A4C30D902 - 30: 520B822D935CA48E80307D17C5C1B63F3074A9732251B8A52158F8BEE8CE8804EA611D3385ECE604 - 31: 746AB0B6625CCCD9F9F2770A7F5AA79DF5C0B00222122C5CE341D51E0341F9F10633A6BA3192CCD5 - 32: 164422906D6B607E562C23DD26A51DC2359A8AC9A97E2B90554417971E0B512659423A6239C72958 - 33: 9E7CDB5A2F9622AA49B04F6246AB486F324D175DF993CA048FDB05AB5EDF02F9F185F110BE2A90EC - 34: ABC057543ACCE8B001B06729D6149B1A74C635FAE0935ECA260DF910570BA94853517DC7E824BF6B - 35: 9A95F9664803DB3A898BC783376C03E96B5178E649CF467A0119CA8B89093566924E58CF3AD8BBC2 - 36: 772B1827AD20991D649688FF4F44FB551B2985F0E3B24DB243856A6389B56741C9C1FF2DDC4A7AC8 - 37: AFF7C444FB955F20EB094DD44AF2E1E0E85D903ADB872CCEA43D975108C3816BF528B7F4E069F5FC - 38: FFB8124321A8296B9CE714DE88AB623D61A284B6053926209FDE0EBB015F6995036A6A2B5D0BEB05 - 39: 2FF330120122CCEBA3D520DE3DCFDB60E514F6361C7C768B6FBE49FFD0D836D2E2793E9EA268FCE5 - 40: 72794B555A99BA139DA8034F6D159A3B3FCCFD65D70335778853AB803432EB28711B3EF8FF6F7978 - 41: 7B7956BC244501F15C1AA6CE66FAB61CFB2A0CE674C5534B964209889ADD73B637DC5D4934F06547 - 42: 595FF7EB667277D6CAE46F87D9903A978EBEC466E03A4A42215A46100964ADAF95546FF9D7A7A6B7 - 43: 653C057A495EFA2895FC74A79C6726132BDB8A5D3842F6768CC9918108CE5A5FB2C5982C90346141 - 44: DD880C0F514B3C5EBEB7DA070804D31C52F5EF47558FDEDE9B416828D5990C12FFC436F0407F52E5 - 45: 8E802DFC8821965F611B2BD3995EBB6D88D758804E785F933082BAB5A217EE21ECF7D0BF25D080A5 - 46: 11E49D104BF0A76A912FE1EB92CE5A87BEEBA1DDB606207C9C11F6749CDA1E378CE4D2B87EA90A6D - 47: 7189DFC591B0F89C5C947F752FF91C4C0BA40E8E1A12EA58E82DCF1C3222DF34D4617D281496C0FE - 48: 96083047284B452EE0C3E68FA169CABFCE4CD6B29D5773FD8ABEF6D3CA8F9B47032AD11F08384EB3 - 49: 27646497C0E50D41474FFE6871B3C5391420B7B753FA97BC606A770343BFB758B927329B1B950136 - 50: 9C74209F16B73DE0F9EFC3E0D29B58E3B97871807AF3FCE5F9954BCF083BE09FAB615368ED48C888 - 51: 0D44E094F2A99854C86BB1008BDFD2BF66B7A608C2FD62AFC2078B638D83F8AEEE4216C05A587B10 - 52: 979725BBC062B011B6751B68F21AB22BB0F8BF1DF10FD6D1E239B55FFA8B1D29EF5C33F193DD846E - 53: 1661FD3D05468A4A2270DF667AFF347EF8F98C38A61B2DFC482563C09FB5E789697E4A5834444971 - 54: 7B67035C8D55CFC6F0A82CE2000EA51AEC95EBC94149AF23B86BE465A0D9256CAE24FC983F60B315 - 55: D5383387F99FEF6732967302F2AFF4B8F694B43235768E151BFDA508D6170133EE44C4D1BF19D1FF - 56: A092A11FB22676778C6720BA1539B3EF72F7E25B1E75AAD307CE3D1A1FBC9962D95D1B6E8BD19148 - 57: D36B21E8609F2EE9067EE719FDE8CEBE8C23C026C133AA1831DF87F3974B6C79CC1318794B5D8360 - 58: A020799E188BE3E788AC671D338F124CBCF1A9E3FC855EB69DC0769E114C6F38DD5602A3AE0E6751 - 59: 7C0A6943329F210EF9DD005D36AC330261B6D5D01ECD0950D195219DE2137B6E67BCDD8EFFF8EF2B - 60: AC849447899C070133FD84BD9FD0755464A0CA543B20C0A8CA6E5B1EBCA0EB2F155F5CEB9B0D37D2 - 61: D692FD2DAA2A162C3EB09AAFF9A1BDBC2A9A37F39D3BD1E53927948EFF0CCF945B89EE6BB40A82E8 - 62: 35C531330A8889051467B9D9892B7A964350EF59B14301905E6C645971253BE3173845CD770559BA - 63: C8E2F8B3B8CD1127152218237982F72F4C930CE663A232231CF7A83D1F833843BE5966AEB40252C4 - 64: 8DA29DE9049DF2855CF8F26594C03275B9A216CCA012A8245818BB63B0EE6E4AB2DC069B393270CF - 65: 389AFAF1F9B4616A4FD9269A9500AB82C3B65D26546A2D6D10DE741351F96761A4337012BC2844C7 - 66: A9589DB6937A5F1F8F5BE81299F57019D06F7754079C8E7DC3E2A45AD265AF5349930282DFDA5DDE - 67: 989CF19EFFA226DC8EEC1E3EDB1A9F0436414D77CA5F4508B98378A9EEAFDFB562B54D24D55796CD - 68: 2F48B7C774572D9E2FD21AA1DF9C575F6BBF68FAB12505FC38D2B5C47289FEAC9F6D595A10024349 - 69: 48C7A6904D11F412517131C718B0D32A6DFCF05308C17802D44847C8B81778FBF67946FF4F551E64 - 70: 4E9962FBBA06B56FE8CA0CAACAA144CE1BBE30B7ABE0917A268C9D86E59042A2A343DFA8624D6757 - 71: 5B573A2AAC688FCFDE4408F647DD4965C402FCC82784C822262D15F69599D94F86DCCF42054A2886 - 72: F0A0F0D04052B3429592823CFFC713137E0833B9E776D9143213200209C214FA4E5F700B2C77889C - 73: 52F471056DD15F895C07186055791D6E688644BE41E8470DEC1F4D1BBE741D08C12BC7DFF0766E7D - 74: D1EFD8F68D3F2954C8935CE0C04F6F428DDD79A39D5B7A86C7900D21D139F20FD9AFA1B2943ABA9D - 75: 76E2F2A2BBE58D7B26E358214C8B244843F7DFC1A2C413F8F06B0ADA18D7F54E3A59F577C742EE18 - 76: 197E2B2BDC7F9DA53AC2256A8A74CD132847A3631084F4D6E95991E83B6091C0384F0AC9345DBB97 - 77: C788B723815260FE8040EADDC011B9458835942D9A9F92FC0C3BC936AE60C8EC77D9B6471DB6184F - 78: 70741225CE46A008A59CC695D9A4835689A446F378AC72611CC0344468C788752E03EEAD7D467337 - 79: 354D7204D60332E3CEBE5EAABD63E850054847F579E6175FA54EA4FC97839266034A161DB9CB0DC9 - 80: D1860BBED9848936E7AF61512FD38FE2DE3BEF4D827E18B1338C0F7EFF526C0004C5C5387C851F8F - 81: C1C866DE0D4AFC09CBBA4045089BB6D3CB914800A7F123089D9DBF29B891DDE99F170A86D2D6CB29 - 82: 751DF91EA356622D934A7E577EEBC076F97B3C82B517C20F5FEADE2679CE41C8F3BC23C659CC3D16 - 83: 2B1BB63A71808AA22C935BF7259DC253AD475239CFD072D9484CDB46541E38C7468E223E465A974C - 84: 0F05A15A2928F2E5C179C0BDC48501ECA8409440D78979A06BF6F5AF345D3D2364A4212CCFF7FA44 - 85: F1B9FB2C7E1597A57E80F7E072BE3ABA785D44EA19E5AA687B8C953C1BF62945454E15138F7E6371 - 86: 4DDDFCAA087E7747462CFE5633DDCBBEA6762F8E5755DD8384C2028070FA73960097B106CF21B12A - 87: 8E2E498EB086D591A8A1F0ED7A8192BDE00F3DF59B1DF842F3D122454F081B02A6673D937EDB5D59 - 88: 9911573F54CF6D10996AC34E5ABFC0E4B198D7B20ECCD07261665B70BD1F26B1142DB089584BFD95 - 89: CA46D0B9EEC92CBB97FFB9C358284CD79CD7C5BB1323804CDA6FE1053724DE0A1E260C9BC2201957 - 90: BB58BCEE9C19A05239237D482A9441C5D3B4F20C73F8C052AC0C86506F17534938E1F5A98E4174EA - 91: 3089F3A1C0CC73E2B31FF5F0168F78275386F9BA794D17F90DAD9055E328EBB1E2CD711F2519FA69 - 92: 6669BD24D20CFD12E8B26CDF567024513F02E6EDD5CC1FBFED6CA2C4C16A364F47B820917A39F8FE - 93: F94A8DBE7246CEEB1495764D4F029D018A1F59370A5107791A729E4C6E0D0EEEC66B96CA8CDF1EEA - 94: 857E4DAFBF430CB3183F9735700C1B7F44CCB76196E269C749AA1F39634A0EFD626F465CB4F8CB24 - 95: 250FB59132DC632527BE41D334FDC6E25C90254405FE46E3FB80C9DACFDCED35AF28FE0E62630B79 - 96: 8001B80CB6C9E446830FAABEA5F8A7CA47554FFC921DE56E7D0C3315CD14BEEF5CF1770F06A5F95F - 97: CAD6EDA223A5779FCE361EFE0666305326327BC3246AE2A7068475D67D4950B39D379F5B6B9251F2 - 98: 07BFC31731F8F076AE65894115F88204CB51C3D79C67F2699B439E2FBF133F2D0977DBEDC10363F0 - 99: 69C2279628C29A7930573D58C3C6E81714F04231316616B58104E1ACD57C038A992039111392108C -100: 558684FE7E011378CE133B7C17231B73F54CDB33D77B93668BB9994BDFEBB92D96AC84CB4CB6EB3E -101: 77FF6744C4FFBE4D4144E732850FE27BE7BB0BCCBE72B970BF38B7AF5D7FE40E0B12C1CB8E5DE42A -102: AB7ADC40BA0F9E02BBC83D933AEAA964FACF93D7AE29AA4923BC7221A8A7613CD3CC688BED4393B0 -103: EB7BE1B8110E23CD725886A7D9B8995158B166600E4440DCECFDE15A0EE426947AFCCF6CB029F1A7 -104: B45A685ABB285D8E29B471E07CFA7674420175843F4D0142D8B9A0E7664AA8B3E3D63896F8270D16 -105: E931F6602A3957C3033D243D7DAE2871F1B92698426836F4D3D06EB246B880F50CA25EE2328A6810 -106: 86DC16B09A768560DD2D985286BCE2AA9D8721397064F5521DA60746E46231AEE50C4FD7B2E6F04B -107: 9B30C031660007BCBDC3ABB3C10D063D90307DDCAE853972DDE47FBB6A4F320F5F1EDD040713C73B -108: 488F5EFC7B0A09965D1689E3456475A0B90B647FDFE38D609384BFF01D46B6C169B75F4DCF74B316 -109: E2FF3FD214B03BE527DA2CDA8F0B67D14D47F6A08FE309690A7F3E705EC26D497EC23BEDE64CA76C -110: 30606CA65C5484567BD569230183A77679B085B438BABA9A59C00888D43249161D836B870486A143 -111: 90278C79CF7129EC87620C6A1E1CEFF81361B9FF7234F1202C3CF9903E3842A09A511E27639BF037 -112: A67689A579055F4BAEC45289F5F7C2A8236196F241A84EF721A2B8FE3F7AABED17A50754A3791813 -113: B1A74D37FC23A5B0CDD60E153D988227AEFD32F2CBDE72BAA40FDB1492BA01947D607D11AADC16B1 -114: 4DF43237C8D10DC4CF90E7987059F4D77637286F8F26FE16B95A004F842FCFBD03BB667F88BE10E0 -115: BD5F268BDE9707B085E73975576BA07A71722B5EDB2CC4F7BC16C75E94CA239497161512E52E6FEA -116: 777B474F4DC1E7E7181363299506DAD103EB625F758AF9602DC5761DE3E5A4CD93D8E245BC59655F -117: E4BE803DE4CBC3CCCB32761C0BF51B4048E8326C6F2610F347AC7D6CEA89273FAF613396341A662C -118: C0F07D8589EB941D78D3B07F270905CCD19A62040C2DD5B5172187D0F6E4B919089667CAC24AD57E -119: 99DA1F25A48709E3051C52CCB417FCEADACB3B2742583E95B0BEC05E651D4F59D8169206B45A0F15 -120: A368B02B9D6ED249290CF6BCB225F6636D4E226B472F07C80B39416AD30FCB84EBD45178B95A2DEC -121: 53BF8DDAECD3022222369ED66C20B1A1C6739556DC4874A0DCE63C2818817E09D9F611031ECC4769 -122: 9EBE33A767738B7DE55A0193FEA6C76C718EA9B3D4FCBADEA37DDE743D052D1C1B2991DD7DB8B57A -123: 38FFAE3C7C07F168887997BA0AC8AAE8FE9F5CB14A87A8FEABC4642FAA5323DF94CF73A962C8AAC5 -124: 13DEBFCAE09B0FF90DA06B49D6330813AA487C606D00D3161C8283CB62A661DADABF2CA5CA4E7230 -125: ABCD79732983370AD0E130D3BE29BF19548F57CB744A4B8D3F2BBE295930DBBC484EA45FA7DC99A0 -126: D2CF766816B1592D91D66FEED7FA9D5FEDD93EC85ECAC455EE0CC1413DCB53B2A6F5D6A7BFBBF26A -127: 78E78895B7E5AFD95D4FCAEB84F89F04FBF83B51FEE8C1F7B342BE0096DC010A1748F60B57839AC6 -128: 05E40364D0466B7C46755EB198F02BFF8F4F1D584AFC27B900654A528454CF692E2792CBAB60CF8D - -Hash: whirlpool - 0: 19FA61D75522A4669B44E39C1D2E1726C530232130D407F89AFEE0964997F7A73E83BE698B288FEBCF88E3E03C4F0757EA8964E59B63D93708B138CC42A66EB3 - 1: 4D9444C212955963D425A410176FCCFB74161E6839692B4C11FDE2ED6EB559EFE0560C39A7B61D5A8BCABD6817A3135AF80F342A4942CCAAE745ABDDFB6AFED0 - 2: 2661D03372ED5C961EE23F42ED9498B451030EED2FD01F29178955529B2F8A758F0444087C82AED85540C8217E959EB8CB43EBBBB77A7E0D2980D6406AA2190B - 3: 7314E8035788304E57E68AC9EA89544ACE6D2379035697D91B98B64B105130DC814B67A4B46B4DF6C103016B8F7C7403E0B943F0291ED6909E2219B6E18E89D8 - 4: A6C01D8CB93A5CEC17A9BDD270B24C8EE78686CAFFC454F253D9B8DAD5398E52304CD57F30F2111BE78FD98338DD3A41FD8A45124C940C4A59F270100DD6CB6F - 5: DB22986F9FECA154CCF0E7DAD914AE8C0851E170D116E9B550C39B373F109FD073395C0711745E40233226F96B5FBF6C8EF1D7F8E2E4AF5375821C897EB18514 - 6: 793498B98970BB3CF187B0A28D353AB2EEC8F6CDA12E6D484CBCCDB96B2BFE6B5278CDB38C9BEDAEB59A8404645DBEDFBE1FE54227947E226EDFD36114067F34 - 7: 052A7C4EC5AD200B6B8131F30E97A9A5DA44899E1C6C31BBE078058630D5E208FD6F2F51A796F814F8AD048D759F8DCE442C405D96D6E1B1A197AD908B366E98 - 8: 219B01987262C597603DBC495792F2423E24A4BCD38825A74CEE8ED91D55935296D80E73DB43A78FDD6119233A31DA5940C6E335EB22600729478A20F61A56DD - 9: 4BBB8746D1D754CE91C27F3A6262ACBBFD4A38D100A65ADADD3174ED6EF8F6AD343F0ED2DF28309A6E979E02B12E732A3E70371EF1E0935E8A30B7C55146D9AC - 10: 81BE2AD26A90BF502C9514F46681276F927E916A630FAC442D823FE4D8EDE0FAE2E8384F3C267B56126F0C009BF8689D475C53425322BF8CD7F6C80CD2C725C6 - 11: FCDEAB03C0FAC7939E8478FD152EEC2408D4A6C0D829B55AFCC5184C50706C253676CF68DA3ABC1C1AEEB5822898C5194AC801881B8CBCC8DB15930EAAEE9373 - 12: F943E5CD2DF74699913B25EEF0B08FCA6BAE9E66BC073DF0BD950CA02FF17276F4A28393BCCCF6E567024CBC6C05C94EA912F1B07034AA375009F594B25D9542 - 13: 1260728E085D172EE82065B3F878FE21F550748598E72A40F4FAC3F54B72A99E6B3CFDA7141C7E5BE123757AE4332C8320786408523DFC8655D7E1F7010792B2 - 14: 67EB4E93961EF18A82152DE2882CC5AF4DD1254732A8FC1959147268441A80EAF0E0B68041F7CF013313ACAD044BD440F1E06D3E449D206433F3B52BE2C9E7B9 - 15: 9AB90A3384DA32A03B31DDA21732B398358DD40D7586E836CFA047961360CEA2F1E3DD0CF2D90CBB57F68C4334110694A6C1BA17B1E9E533E6CF3A3ACCEFF84E - 16: 112C2ED4CE732E21334D7248A30E683246BA602AD3681BAE365E857AA840F1F80FCEF1B9ADA33AC1F9BF6FB75045F9E61449B26F9201E482E7F2ADC8ED9A1D80 - 17: EF574EE7B498AA64F3ACBE1972E42B873C6FADE053A1459AB52D5E5B49C0AFA0C62FE901ADC3FF07A7D0ACC459C3DDB3F6D499C70B63F68B60B02E2784BB9AC4 - 18: C6185B5836DD3B160695E5E27058AB266EDE91A5417DC086988EA5181DF5BA0C51DEB11F6BA14AF2847540BE368B6C561CD976809E2D9982F4D49F96E0AF4F7C - 19: 8510D305A5E1AB3A0832B242ED402BEC2D70C24B41BD840B8D2DE436A6B4DBB7CB5F7F9F1432E694F0CB1239EAB0DDD92E6D0C7E96FDAD5F8E465E286D7588EC - 20: 926800FF566CAFAEABACA9990772EFEC8AC956C3C572A360194F95AAAAE477F98AB7750B2710E262D039D8584BE79D93E9E6405BA25DFF6DCF29C54D748DD655 - 21: 0F0B98CE94E2CC67D36086D153A2DF48F20283413407C3CD0570B619871DAC188AA37BA30BD706AFEF475BDA7AEFAB63055ADE8B792F025D088B51A08E941B01 - 22: E6538F3479D33979F046FBC88D4BA785B072EF58877BFC9D1214FA8374B78DA6895D5A4F4E50E6AC6A237E48A73EB18E4452E7C8AD50C82238FA9B323C96935C - 23: 378E83B88847F234A6A2FF7304ABA759A422E6823334ECF71E9C3C1F8B21B016D9A8A100B6B160772FFF12482A50613BD832EF534DBD1D4D055F3227C7513F11 - 24: ECFC0F6C168962197E181C27FC9AA1975FED01E655B3D4A7857872451D6AF810783184534C401709A63BF6BE6CDB1D1455C382CBAA6F68E8180CBA9E0CDDB9EE - 25: 8523B737250579A3787BD83E5DCC57F7038B393F003223A7BAB98EE4D040441190622290B164F32FB96682730DF62CC366FC33126DE2F7DDE3A38C818C48F680 - 26: C6BE341A28878B733C30F50D67F6933D3A15A0950CAAB96B9F3D7D78C95C61874A400CAB65A100302D9E2DCEADC4A0C043834EB0433D5D684C187AED93B5EC6A - 27: 4AE827A36DA140D2271F74DF1AF4303DF4B1C319428F8BA94EA28BD3765BE4535275053DA49B630E6B754097ADCD7F17DC7C16158F43E2C1851951EC3016CD8B - 28: 6D3F01856A8A28E28EADF60401E84253C3F7CD13F3A9FB8F94D8B07B74F7416817F274903C135BA0DA4509A78D004388CBCCA75B06132C7CFC0156C03803E85B - 29: 07CDC2BDD9CDC49853384FB647736B50D788AB80A0A54A0969B86603B683C22A1C5FD32D3AC92E73D378F379C4BA30A48E7D38FBB867E981271FB3962C745659 - 30: 9DC875BF987C55CE646A709E89CA89E226B0F15666D5174771368FAD768BF3318B8BC7D8CA80AFB5E6BB7FC0090B5559F11DA165DE51B940C9DFE911D4790477 - 31: 58BEE92BE003CCC34F9CE8C0B323C6BAF1297460BAAB4998CB3B52D2BBAA24D1B06CB597EB2E609A008572FF93710E3A7F42AC53E3FF09D4733757EACA41E20C - 32: 888AEB1BE2BECB28598556A128AFEA037D0689C8D13D9894F1416B2C48B2551CB2FDA321A26CC4D7E1C87332D7A3C18FFB455C92C0E7AAF829FA40B8A28BB656 - 33: 19099B4E8ABF225DC7BD1C1DC6D52F54E8FB7E4EAE0AB19293C686E6FD2828221A1153BBA4C143795D1A718585D9255B6DC911C0EDA5E0042A10565AA5D6D8E7 - 34: 22B3ED65F64C8E51257A922FF90DC09447224B9A8C7B5A6A94D68601F3D4C7C1557BB90B91DF318EF9F8BB367E838D36A3CA82FDCB85721AEA20A8A2268D90AF - 35: 0D2B24C6FD5D772704BC17D2FC8C011F1511F92491104F3C22470864882656AA40DD07C0C329C8BAFD90ADEA7F473349038CE475D352DA41E24FF64723070566 - 36: FEB43F7DCDE56A2EE963236C234E5800C011FC54D14396288DE5A7AC7DB2A72D1E8F63F04D1DDB3C55CF3BF19F4E0FBA4B79405A6B45ECB31254C9F1951C632B - 37: B8AE2C8427A750F34647C3529A05D44691B8DE0C79525D9145665BDA5C0C396C00E936BF2493F12945899B6FDAA9F61E6E7B22846023D140F873EE7D48D76BC8 - 38: E80C49D1E29F6FAF0BB5C7B47F5A85B3A0EDDED84418890748724792CC83B53AB044B051722F1ADAAB713E5069E883C1D172CE0EFF6EE6AEBE05B1FD77DB652B - 39: 1FED03FA70436EF45286648ABF39057C33815E6A80A19E22009B89C809DD6F0099C944B882FF9DF3DF08DD51295F3F02FBAB40F606C045BD4395969E27647D24 - 40: 2E3630EB519F6DD115B3E4818DB4429CDDF1C6CC2C8548F8CCA226A24F87A949A27DCBF141803B87B2A2C0F8AF830031DB1FE084E3996D8834F8E7D29EEA4AFB - 41: D54509526805DFC0871CBD6E41ACE395C64373E8F57146A657C28BB3ADBF7E57A152D27BE24B8F30F08329C2E040359B119690D9A1118BC14A3B1883D093466E - 42: 0AB062968EE4D71DCE807EFAF835EE11588854ACA0959B5341DDFD10E70BA9AD427D92168B31B8E6EF81F58615AF9215A8708CE1F144EE29901D1FC282C3F78F - 43: 45862B0D0F0AC5CC1C5769C29D786FD3AC788CFBCDD6CAECFB120D05D71F2575F4174CAD5E5A00D2D740D0714E92822427085F044A72D66631755BC55E5BCC8E - 44: D3A9EFFA759181346D8FE53130F05B2C65F96E1D5908A61DA8FA3A9BC551A7781ED7B1A6CFFCB2F742DDAE8D22B0EC99D82B14EB85719253693FF920FD5071D8 - 45: DB53395A78DDE62A406211955EC56C6F7BEB9EC2275501C35CA955268C3E2D71BA246B4286C76FAFDE012F9E2CAAC8601A74699B466023FE9F8B1BA26F65042B - 46: 9426FFB7B70DEDF1CFBCE6610583CDCD91AB421FE39DDC31F4215CF7604B9050C84A3BA29C4B236F1CC3B09F53D29229132FDDDD9B468CBB6338BBBA6193F84B - 47: 3D74F17DC6FE057703C72452BC7A078EC019424A89783F1FA40003657C323997DF30BBA38CB4B16BAD8FDC43260956090F765C26AB1FC88BF7F87EACA1821B52 - 48: C6EF119085EB17EC1B9F74791D95E366FE916F5397C20857A8966C52512F4EE16E63B53A28F7632A867EFC7FFD8080B173D5E2E33A2063FEC7D1181ACF8C7824 - 49: D878B30402FECA5EC93362105D5E183D658DD2FD38B8173FF609740CC84239C4F8F533AC3451D369001CCD4AC78814058DE0F7E1F93D167A46E85E3002F4F386 - 50: 948C4254AD2C5658A28D42DDC3CB4FE4CF731B4180B8A4A183C23C54CCEA045307422547600598CCFFD3C6229DAA6CDD006D3C782ED91AC61172059D016970DE - 51: B74FDFED0388D5164BEE25E37C6687FA8D5C069D4FB0D42A7F1A270A676F83F24FD1C9048EC0D49F7BE913D893E0015E0A3F724653B3F0AB0017683948712E46 - 52: 497EB803D053D5DF498369BADBF8AAD57ED1B072CF361D3DB2A528D3DB16DD962887916E9D21FFB439DC2C025CDD8C21ADCC98A23C8C5B0245F2D71CF728F10F - 53: 63F4098F650820EDCEA3E7C10B65D3B0F1949A28FEA323702F27C7D311C7E6BFC82D4C01F4FAD06FE0288E410EF325DE192F78B88E04075FA9581AE2B031A68B - 54: 337914B013B8056D7849E42ADB47FA761B5AB05696CB8FDA6B87FFF88B0477902991AD81664727164053E4E47ACDF880DCAD0E0E67F7141123DB494450CF0B61 - 55: A385FE66F8C852638F5BE44503B680298EBBF27DBD9F20B1A0447215C0E2C1078926002113A71C78148D5019FB22C8132DD05356C78A1A8D8E4EEC5A6442DBA9 - 56: 218336585A419E9877CB63387C5E759FC93F0FE1A7BA717B8BE9B2302393E0D14DEF2F749D138692D0A0296F1C792B567F40037DD2B8787F1F47FF363CF34F37 - 57: 7EB842771A61A9AF779C8794CA055518E7F38CD13F61638900EAAEA000B12816D52C593B62B9DAD79DB7397A463AB99A9D0035E7A1369B0556D593DB41EEEB6B - 58: E41D1492D3472FBD42F2460650F9DAF2ECCDEAEF5F4516B452D940DAD516F5168439154B4BA76610461B343BCF1E7DD7DD8C285EC0CC46C17CE3C7E14103042A - 59: 88057C0B8442BC5763283EA17FD1FE1AE011A988E1D7E0F914004CD3AD2E06FEEECDF59E309B9EBDABF19559954C37F71FA98C14BB19F7B91CE5F827C1DDE1B5 - 60: C5DE99AA273D1971272263C740E689739B39725A0B7C48B41577F05738A24F5EE2C0B673F93BD52A083798DDDC6E70A209213B58C95D49ABC5BCBABDD6AE7D22 - 61: 68296AC346BA3B14C038CDC629C5F5700CEB9F5DAFD94F948C6B991C0F91813BFD02660A2A05A02A61D8EB03BC93601F9F6A38196650047E1D7DD1071CC6974D - 62: 1CE0E6793B0ED59C4DB7D5F24FEF75A4ED2F28CE4AA7E5EB25919219C2C04935E4B15841821FA92FC7537DE2A538871E5A043A773CB1ED061333113223248C18 - 63: 37BF321F66ACE827B66ECAA651CCFCAD30AB627E717AA4FE441279C4FA48555CB7784B0AF25A73B86375BE71A1E3FDDEC661E0EB8115E0BB2B9A7FF81DC75DF9 - 64: 5C3C6F524C8AE1E7A4F76B84977B1560E78EB568E2FD8D72699AD79186481BD42B53AB39A0B741D9C098A4ECB01F3ECCF3844CF1B73A9355EE5D496A2A1FB5B3 - 65: 85A19923268414DE6A10A2CDEF7917D7AA01E68DF9D028CBAB5C5236FAEFCED836BDE9CF90D8A214013056202A1BAE5CB73606078C5572D8FE85C36002C92D70 - 66: C2FB9763A6F86225F6C66F55ACC8E7E17C1A2664416B2704D64AAC2CC5B04A626030B5243CA61D62076DDBDF3C6B3765C38D0CFA01D4D45C124EA28DA593F84F - 67: 5083280300FA5A1B172D7B5CCADA5CECE1EE5B7B5D382EB4A430179EB133970B0B89F6BB6DCBB1F38EC9F13F5B7D1559F114DE0EE26178EBC56CBE31BB26A91D - 68: B3571E8C1CBC0C58E23094B39352D554B43F9E7DD0FF981C12A01E0D8BBFF06A39875D90BEDA7F345550E6F67935A49E0183456B9967BB319D74AAD87CCA3695 - 69: D11537B780D458D37279D00621F646EBAD3244A22E4D45DF11AC5D084FDF70E7A32F897DF727E65EDD1019DABCC05DF0B5E015FC5CC1184129C5DDFB14F62154 - 70: C146458EF40E6F1944BFD863B2862A97145BA580D47C7ACA67E797EAC6790841C57D68A74930AEFCD49031819FBED806A0C033DD529A203B4E460F357BA1BBFB - 71: 660F3E1D5CD3B2AFD95DB0D8C258F6AD74DD40DB688A37AB4A24D720766541B1CB928001EF6D67CE5429039C9C1490613DDF90A27E6152BE7D42E1614C590056 - 72: DEC468EF73E98F44B60EB994935921F920DC0CEEB7498655F0FAB7607A77A7A3D9462DD8BAD46CB408EFA81FF08D7E9508BC565C1578C37C2B87D41A0A32A549 - 73: 070D4C36A0934C5C12E6B65FFF385404E49C3871DA8674D93D26E3166A7EF9693D946B419F0E10C9624964B37493DC8A46D26D8AB8942E60143036659CA4C91D - 74: BB8935CC84E08E6B4E7C6233E41D880D70CC018D1668EE64F19906A83730495D01AFCE1A4EA8129A98B7F9E074FD35C0BA6D5667625DB63A867BAA67BDEFC190 - 75: A0A7A0B619643115C582BB6953D2A3EAA942451F631FC56C0933B535313D668FA4CA7D6BEC4DC9FE2AD7528DD6F8DBE68478A040FBFDD2F3DC3AD7035DB67371 - 76: D6C57C3FB08D07A30A622B25985A52A6E552499345244725B1084E41691B11EB31D3B9776940A9A7E6115D2D1A93372D3A7388D87B01D13BCA726E8823E89729 - 77: 413CB26BE2B1BA8ABE930ED1B9978BA4874CF32B38C825CB6DFE9C21A87C0BD115D3357198FDA0A5B7CDEB4235A354E9C2F37D11B33AC6A257DEC67326830E23 - 78: 748E4648FBD009E4848E44A284D0CB2088300F50CD5215A285826E968B9DA59B6322E1987F78447150AF72CE37E516BE9E83B05A9817AB7A924ED8B09557CB5F - 79: 0A8111FEA824D43E0991C22FC3B1368A191D0C73308283494309D0762AB1EE5AF0CE2DB8F0562DECAC636128688540E845D72BEA3852A19CA2ED22D6C1E82CF1 - 80: DB1067879F014EF676471D950A81DA073D676DE52E85F67890C8471FE6144078DAF940CB6F9F097BEDB8FAC94C737C5B8A3B4217CFF4A56DC349B2AE845AB25B - 81: 6165F19F569BAAA3A3ABE6D6108D07E1ECB22092F66227DC27173DAC097118C2D927F2E5F7D20C8CEF0F99C6FE6C7AA46BF18FBC452F6FDD733728030CD0A4A6 - 82: 1D4AA14617A4BB9E48DCC1A7EE5DF65298AE45FB193F077FDB6D1C2B3252E1633AF86A527C29861661CE155A47E5BAC91D9B07715E0FF7E08B39A3128891EC42 - 83: C2C22B53D6BA460954C2D826FD3DEEE60E33AF2EFC87A61CBF2AA021166AFB90967ADE2C564D037518E4141BE9C0D0BC0B4F95498D5AD920BF28CAD4F5FE700C - 84: BB5E9CFE19C6A2D14EA4C1F6BDE51855DF61D650B23330BAC30A5072EAACF86CA02AD31FE4C146176DEC75C56A56C2B868177E0E365414508D2E7606AB9E8921 - 85: 6B40A13C5486396864608BE7285BD4D1205180BC41E10E537042A1CC6CD12FA7737B5E73D768BBC5D687FCCE41880A8D9773C26316ACEA2D78DA26FECCC11E90 - 86: DAD0DC8A7D78E29B12182D36F47B93CAB562C44FD6C5B1718651022CDEEC30133437431D13C43EC1C02DCE776F459A57C29355B3FA0D67C6BF84AD26194A8854 - 87: 8118AEE5DFBD7FD9F94403FFD3C6BEA08706D4C4DC78CDE72F751A6C4027ABEC7786A62732819ADC036B787E25E151AC51B60BD2381A64F05A326800D7514B15 - 88: C64737334A61872EC00C8A3F1B1EA931FEE8D80203CE6DB9F1ABEFEE2CD3E652971615AE4F9A23400B9E31D861BE6B7E0F6DED28ED74B45D6AE90E70AD49508B - 89: F927B571B03B892B46C0A16148F13A2E6B80630CE41BA7DBE311F9ADBB5E8F23923CF0CA527DDD20BB3FE42BBE805066BEAD569F6FED12A2722A8629427ED841 - 90: 2576A445CCD8977F24F50EE30EA7A51F0F3F49D41BAA663BD1C1734E02367A382E3D0E8C07EAED0C6A47CF662FE573BAE5593D9C4BA8FFDB4AF024F6064F7A89 - 91: E85C73AEB638F35565BDD2523AE2A86B573C339B4D5FF8498ADF71BA587CBF146AE63B8C920B2F0A166F802167A04CD0D7F7A842D7D058165894CF9188289032 - 92: E74E2ABDD6AFFF851EF78F8A866DDE9B9F86D906B298DD1E3630E1D4A30B6FCD7FF91943A57367A00E2658A84346F53ABC896EDAA395167E5EBD12C954E0B820 - 93: 6827226985276BA731A9AE2E4DBF2D0187C05D566F06D098E05E3F425DC058958B50F09B4CE0741F1375E9B522F94A61F1ED8A43A8D03A036D2ABFCEDD4F0C1F - 94: 19A71A12DCABA1BA185BA38BCC0D915584A801EA49F975393B25AFBC456571CBF1A6F9121CBAE89A9B438092C65532489A95A0864320102EAD9A2EBD30D41F6F - 95: C70F19BAEA7420A7482C9C54CBB689A9AB93E4F8538EDC2371A1EDB3A103DFB7176E04DF170FF71EF46DFDAC1E8F9CD6FF96115BE1EFC271A56BDCFB67D29E67 - 96: 8BBCCFC8815786ADD9F108F4381A2B084179002AE940ADD4C42AA2550C353CD0351C2F7F1BD544D8F268FA332B0E803838318A39079E9D93269A01EAF9CAC967 - 97: 5266FA966A04B8A2450ECF3826C9E1516FEDC33EE81D4911A601351564D27C8BD4A11BF00E0DE237E50D75421CBE475E38967F28E6A1C5D311A2C95B84898D1E - 98: DF87823E1E02AF34532C5F3A08CF03CB9B2017B835525B3E3C448B1ED15569935D9A1DA19A6B1E8D056FBC868447ABE6226B97F256F6B638B052B4BAB3BD4808 - 99: A1317CAC2364B10EABBD3540B6139D337C0EB3F7A740C050988FF9B3584213DF5833AAD81D36C30CE6CE76962A9E1D45F08667A314036A299454F25F73EB067F -100: B752B6EEB497A8BEBFC1BE1649CA41D57FD1973BFFC2261CA196B5474E0F353762F354C1D743581F61C51F4D86921360BC2E8AD35E830578B68B12E884A50894 -101: B0BB23AED2CFC9C58C8BAB019CD10DBE75717EE8F04AA45FD8D84748E3F05C523FD2F70DCC460F7A18DF7D28A224BCB86CFA4C8164D081D51F3487A7BD0C8109 -102: 0FA46C6A759DA9A3649679780A28FDD51EDFD3F99A4B801C5824247B270A137CF40006609E149C919CDA0A6C856A9A8E855A670A2BB2CD5211FAD42E84F6E365 -103: C4E350267BD335848D00151AF2C380E49A323E63AA264D534EA1BF7A860B764A78993F7FFF34ED93ACB1F5A5AB66758C462B4D2F2F4E14225D29FEC0C102E772 -104: AFA0F1DB8A321FC6C4EF7C65ED2ADC4B094E928E230D27295699DE68FB5C1657FE0E5C4E66C5852ACFC45DA94BEFDAC89CF0D4174B262E6FD51CDC3E7FFFA5CE -105: 9A86A440FF8A33DCD38C69D7564EF827F614629CB699B7F45E7FFF1CFF4AD5E27EFFDD32EF1D0845987A6A273EA34C19374E9FB606BB2E3B909157CC6666D29A -106: 1FAF8C564575D654133B0A452EC43959C9F9E20C044724B74EFC90D2CECE4C49A0512C9F4DA2E999552E3ACC04CE0F0E2FDA9826C2A1FBBACEC4330081D5CA43 -107: 8B35FFFCD91E617C8A49B13CD0FFA2199FA1F20E5633AE6E95881BBCA02B1E047392DC9A4C0F0A4C39D3984E78ECC4DCC1B5C94A26ACDC1F69C7ABABFFB45175 -108: 6C8AB69E946FE86DEF6F14B955B8F1977686EAFF8E384CA45F245CCC0EB1C80AF8E62B0E7387C0DA52BBA31B1A01EBB00CA26CBFDA9D8069A773C3B62F989A2C -109: C3A243B45B7C3C2002CB197BADBD84C4900D504FCD277D2DC6C06D34B1317B41EF098BB980800FA9D011C0363D074308835AEBCF3393B1C925045E97E14831C0 -110: 803E065AFEFC6C48EF9F701233AF512465729E81B0DBFF99A2E7FEFFB542831E1D3B30230BFA2F30343695C060AC8140C37CC8D1E25E95E6A1139C5522F4ED28 -111: 86618429B8720ADCBC8B9FEAED8BD44E0848572CB6137213273563EBFDA859240E17DFDAFF68B09953F1853C9E7EF217875E7BD6959E76DC3A1CE5F548B76CEB -112: 96439A93295B5C479F0310B28377FC10DF81B593AC233556B15897F1FA3886C940639AFF2ECEB29894DA884626B4811254FE2622EC7B4577087D9046C96AA556 -113: 9F7BAE13DB80C72A434BC4704998A73D7E546CC2590E0D0EE511CAFC63C622A8B2A296426E42754606D02B6EA060892E325EA1AC13EF0B523A3551F4D25BE241 -114: E999A862E5C479B7BB21EB52E4BD301571A8A39B712EBFEFAC720F28C515025E98CCC74B950D57CF3C3B34D788D62CDA0339AE0DA02C8A107BCDD797C4751FF1 -115: CD00EC5142CBBCA87BC15D69EBE96B5222F25BE1576B318208178679B13A9A8BA4BBABE9A488BB38C4EEF327C9A4DEA4225DD30C0F70B97C18C5C2FB19FC2134 -116: 1289951D2B62112BA590D8C0CF9EFA38AB77737F994060596738612E6BDC41EC8672F50A027A2C049299FD39E1776BC3EEBFE3E66CCF4009615D63F0A4C43ABE -117: 451A46FBDC954FB76E744AF3DA8429C881197F6BC12D22412438729288AA4540843B9FD4CD1BDBA5E864FEAEF0CD6CFF045A37510B3759FADFEF4697E9BF9240 -118: A267FCDF72D9160DA2A01E781E07701478F95A38C262ADEBFA194EA6D5A50A9CF3E04D32AA4B492580C6E8D8FAE1F813F3C17F82B7F47D8CE0C900F0F3052F98 -119: 3D910AB6579455653EFC939BE1B22D993537408086361008EBB166724FAFE3C8578EF4BE0378BC28ED883FC0FF3DE5A9310CEDE65FAF3AD9590A13B3CA4F81C5 -120: 47386DF4D41775737BC4E52D7CB2EFC11BA335A5D59597B5DEB3DD0A35032461F5DB4779D48BD6F3A10C5503AC563C790235E6F54EA79CEADB6A56AFCCE890DF -121: BA59044EF3A242974F074337CBB6840FA0506C2227A429498F546B2CEBE0644DFF1D442190C48CB54BEE72F960670F71AF1F8402AD5ABE8C1482DEFA881FA903 -122: 89B4F35E5C8C19AD61CF1600BA80C1A1BBCFDC86AD9F8066C967BA10F62827FCEFA1EBD07C90C82B48082A5B7D6A72E0AAFD230DE05955C7E8C081286B0CA96D -123: 0C7F94250F4EA7647F91E7EA8B8612AE8E7BFE4F5BCDD90CDCE564BC9842F6987AFB4C3661D8431440FEE18EB2EC70BCCD34A6B61D209CB72BE782A0808C08E2 -124: 2C8B8B17820085795BC6A2720B5D0BDF5407D9DEE1CAA4270FFAD010AE9555DFD2B74A742512BAFFAA1D5B4F14ECDB2BD4BF37838D5981A317C7287805974019 -125: B464C5A9D040F11DA45D98C4BCA9295D0F589DB11EE5603410C62BDACCC329B9AC14567C3A6F3BBA4B92CD3B95BE58AD4DA435199CE62D8BD61269F8BEA38FE4 -126: 2F64554FD54AA4A04ADE3793AFCC5C968B1C3603F4F71E1BB5342BA4E951D79A4580BF57736E7FC13A43604A057E9C360C099AC5B3403DA8AAFDBBF417FF6ADC -127: 3C9A7F387B7104DF19CF264B0B5821B2E46E44ADC79262546E98FFA113EB3D45799EAC78CCA4643C937FCC3C1D249A212FACB34C63D45EEC81069095D7CDCE7B -128: 803A3B37C89E84FBBEC75BEE3D00DD728FFC4246B5A5E989DC8DC2CD0F7937966AB78C79E1D4648EE6EB40F3D70491CB46B8AB42E155672E2AB8374FCF70DD79 - -Hash: blake2s-128 - 0: 64550D6FFE2C0A01A14ABA1EADE0200C - 1: 9F31F3EC588C6064A8E1F9051AEAB90A - 2: F52B4FC6BE5AC0FE16B72622653EB56F - 3: C41561EDB251DF8F3C9523524D60A707 - 4: 51725A57BE12698E2E0D7E98910780A0 - 5: CC08C41EAFF7842C4D0FA1C64E45F1FB - 6: 2C00C87B2FF353A0C365D857F6D4F3C5 - 7: 46F26ED5863A347052CCDDCB71266D6D - 8: 873AD9CE57FB6D239970A38E0D92CD8E - 9: B044DBE06680312DB797F66F8F27165B - 10: 33B42203E0347DDA0524EEF98C549520 - 11: 1A717B76A9D588DF20A139FEB8700A7C - 12: 24375C055F615A9C0DC0EFF1311A5793 - 13: 59C26B0674069026C8FC5E40430AA282 - 14: 823CF141A111D66024B4C82AC33215D7 - 15: 7CFFAEFB9840EAC8962A67CF944D1F72 - 16: DC6772000E3E9567BCFBC92971D67816 - 17: 4398E7D6EF08141A842C26156A9A8A48 - 18: 43819E64E9B7F6CC8472C1B6B68EA581 - 19: 447BB325970AF8FD500ACA7C176ADEBC - 20: F7E75644ACEFDDC9D0547C3CE3FE3F6B - 21: F5D21AAE342B3505373AD3EC5780B447 - 22: 4100572CECDC30AEE55FD5F53BF62A21 - 23: A25F936F82C608D74A4ABC84EF708BFF - 24: 2CCB218B584B721C60607A1B9C4E9F33 - 25: 0072DEF78710F1590F26620AE20DE4C7 - 26: AB0E6C1DCBDB90C92156AA02B36F9A51 - 27: 132362DCA6248CF3D6FB6FCBFDCB4B86 - 28: 193A98A19AFC803105AB43F206F8CAFC - 29: A6C088A5D8142C015770224B3A072DE2 - 30: 25B136277F00BB182E4BB0BCC4200181 - 31: 5B7D0CCBF06C4CA454BE26866C513CEC - 32: 68B96E07FA73966CCEFD87CCAD489984 - 33: 45149912910D47C800FF4E81B0950222 - 34: 651C7F67076CB90849DB32EAE2F79D3A - 35: 9C593BA0329E86C74AE579A6DB7293F9 - 36: 61B1EC51D5066BEBB9D998B9958B363F - 37: 84E835F9A85374098C79FF250F66A7E5 - 38: 6E638958112E8D6214F8DCB9C8282D64 - 39: 02F4BF9AEC321B31762C78D925BCED17 - 40: FC80DE93148DE2CA60A05A8F37C477FC - 41: E38ACF89451884610D983EC19FD57087 - 42: DABACBE6DC653B782B05E5CBBB937413 - 43: FD86FB2467D49C061DFEB1D8E9EAC01B - 44: 07A6516B3A9776542D2309E8497D92C0 - 45: 50BF654DA910A62D1DE7D5D99ED62292 - 46: C66BB047226FE0A8CFD0E66248E950DA - 47: C7C4DBFDF0C3F654396C51688246D95F - 48: 8D9BCFB54B78C2B087C363C2C56225B2 - 49: 425BCD6D6BF3266FDCEC5D98AA85E09A - 50: 5D8355BD197259C37FE9DC2CDD182E85 - 51: BC0EA42B5670AE36052A12A26B109729 - 52: E410D3852089501841E25C84EA73200D - 53: C03EFEEA95B308DB60676C352788819E - 54: 3EE75BA9D3B2D38F2A8DFBA57E28C228 - 55: CE44DC306DFF56ED00A657FB7B25D20C - 56: 081B0E61DBE0EA09128BF93BA7ED8EDC - 57: 3E1338B231B4539CED2D544EA4E36EF8 - 58: 9ACD12EE98341CD766DC19DB927B42C0 - 59: F9DEB66F1A5099D99FFA93D1F3B36990 - 60: 9C9B2E4E368FED54222FBCF50E9DCCE7 - 61: 4349C4260FB9E6E0902EA098502F293D - 62: FCFBE4782A28AF1AFB5DAEFA9599438D - 63: 4006430A2D313751A9ECE24FCCB52DE5 - 64: DC66CA8F03865801B0FFE06ED8A1A90E - 65: 399D3E92CCFCEDCDDE9BF4C2BE14CF8C - 66: 38C73D61E72531B3AC0CDCF871C7DC8A - 67: 8A085A96DE26DE17BA55CC7476F16660 - 68: 12C7C53778F67388EB23191C74283EA8 - 69: 5D441FC807AE9884C83F49C525FED6F0 - 70: 31690A560023F81B096FF943A9838AE9 - 71: 55AF48053A29C3EC6D5B8633F42F0500 - 72: 7181837F0225C7ACB3ACBBAAB1CC6FAF - 73: B1492F0BA13EED356AE769E193B5C967 - 74: 48425DED4E98B96B4A21F8DF8ACF7CE6 - 75: 56C366C91B0994E7DCE0CFCAF1AD2E35 - 76: D85FA654A309770440100767AEB1B225 - 77: 9F21184BF396A5F3ACA9B26DD1433941 - 78: 1ECE3C33C566EA55C5E0D570A48D4722 - 79: 8389E086D81C1A08B81E2A4CE752D58D - 80: F2065C23188121333D580AB95027A834 - 81: 7FFC1056F79C0226E568DDFDEDB68D10 - 82: 91D77F2607100D2EFD10364AA221A512 - 83: BCE2E5CC780AF0CB8487C676B6C57958 - 84: CE7A9493264224636EEE4BD4228D3501 - 85: B79A73B6BAAA83BA4200C13600FB4A29 - 86: 5E175C8D9402168B081021AC4AAE5E98 - 87: 1684969736689A062365D08B2EBA4448 - 88: 3740022A6174BDE156C7880003364907 - 89: B5A1D9C73759DD4965F3A2CEDFE6AD89 - 90: 8C2EAC9298148FD6C259EE2530BD8326 - 91: DC57AD06873459EF69D3530B4F9EE73F - 92: 649619FCBF2D303DD458EBD66969FB6B - 93: 6D6A17605BD1AF230EE9898E0D8B704C - 94: 763F0C908954913C34BDAB019C143582 - 95: B65DA22F1F0F82AECEBE91E1D3CF8C80 - 96: FF04AA06DA3E342AB335E9C1F2201C1F - 97: EBC7F4AC87CFC9CDC9DC13BE494E16D8 - 98: 68C0C171AF8C661AF6AE2E958102247A - 99: F0C587EB6C6AC5E1C34DB3BB3920B56B -100: 666A861D60A4C86BF684FE089CFBA8CC -101: 9CE84B0F08E03DC38BBC89F889D53AA1 -102: C767CC2F8F867551F210DC2616A7978A -103: 8970A7DCB77D9264596EAC8CDB86AE16 -104: 6CE407E9F51D6949B0AC6931EE6BE7D9 -105: C96EE2F5911549E44A1DBBBDFADE9B9F -106: 4ED2790B30C24F0E4D25494313667CB6 -107: 76E535A3B57CD085E8F75925C458083B -108: FDFFA482F90B1A788ACC57169508ADC5 -109: DA54C33D148DAB92D70C8BED79F352BC -110: 2030C26D92D0732A5E45716052147AAD -111: 0760E13DB7921CDBA669C67E88C3A7D1 -112: 73D5A76FB7D704856C0DAA9EC40E75CE -113: 76C45083E3405EEA53EA2884496C80B4 -114: 1EB92DD78744D9C383DCB52BBB418835 -115: 342C06AAC7B367193619B247DD04B0D0 -116: CABDB99087F2227BA327A19DC8052028 -117: 1A693513B7838CD492B7A4708F2CE04A -118: D1FBF911AF9246FC36BDF7D26F85E549 -119: 9D20CA08AD292E41F4F4C0D496E43903 -120: 6DDC8ABD8A94C66B62E6BE297B38CE20 -121: E36B24346B30DEB928D52C20AE068839 -122: D422522FF476B3C8E5D8DC92CFFE49BC -123: 8CF8C2D76AEEEB6C7A72A05448FA14AE -124: 28EF0EA3F71B1F1C024CB77531E6DB95 -125: C8A7768B284F5568F8926518F09C787C -126: 52A7C5E8CC60E4AA0935BF2303A8DD30 -127: 5D3541BE0CE9B6D8F9315862AC0198C5 -128: 7A3B3FA888B60095E7B305EFCF3C3DBC - -Hash: blake2s-160 - 0: 354C9C33F735962418BDACB9479873429C34916F - 1: 63A5F3DBA42C1EE9CE4147C1B22E0B61F4C7A17A - 2: D7E7E6E5A94FB0B0319212F4376E60C0BE1E7604 - 3: 5F70714603428963ABE2EA507C1D0A7C3D67A8E4 - 4: D2EB068A022B036AD8F46AD5DB018DF76331BAB1 - 5: 9B76C33F4F273950A4CF51FF337D00E7FC61DD23 - 6: 4309F8371A6AC414FF37D1D52EF1776C95A20789 - 7: B4F2034937EDB13E5B2ACA648274F662E3F284FF - 8: 55AF018D4764BFB68D6A1157F1CEEC211E1885EA - 9: 28356DD720151A6F60845D7F0E2364A720AA6E8D - 10: 92BAE8F308BFAD697E5AEB54A465DA37F9D24425 - 11: 9BFD39BE442702851DD618737A05830E3AA40894 - 12: E2ACC08A5D25D268595EFFCFE34EE1BF3AE884F1 - 13: D899B80BD2B851D721760B03DDD6E6A37F1F074D - 14: 440DD02BBF5B49139D5A4885F0C923131AD3D3C5 - 15: CA6F08E03BD4580C89A1E341CC248A2847C52F9B - 16: 7FA3AA4D8C97FF99A6BC5D16613D859E52F026C1 - 17: AF0BECB1E358C5CA393586DF9180EE065A837A22 - 18: 6E7DC6203623F33A98CFC0C05B96A9B3F368FD54 - 19: 9E65CB46384717BF5F6A16D4C8357DC232C9FC3F - 20: 985ED9932A7529791CC7535AD0FBABC3BE4EF1F3 - 21: 98171FF82492AAFB7FEF5D1C3D2DFC9D2B67AA2F - 22: 8904388C800814EFEB7ADE5EEC2D19A3908B0779 - 23: 717B89BFE07E2D64391B315603B2AFA849595F8C - 24: 027EC32547E076CB8AA0645C7F6C3A916339FA29 - 25: 47A86EAAFF8E2C9E72E8352E13907C4625B88C18 - 26: C1688EBF848D91A22499FB6C4126869F2B45C715 - 27: 3B38DA6BC7706A551A2C554653BCE5F88BDFA3DE - 28: 45F888CFFDDDDE987FAE61A5FA1CA6C0461AB265 - 29: DFEA3AB50EE3D5878F165ECAA9CC497DB82927E4 - 30: 1AB376D7E1A479032F26BC158F698CDD905871CC - 31: 6E0C39AC0442DC1A6C05ED1602806E64A6EF82E1 - 32: F73E3143C51B27F4E4605613948AA1DD3DB1AD77 - 33: 758D383DFCF4E44D440879E14A16D1303CD4F014 - 34: 439CE5842CADDAC3DEC67A2C47CE3566D8982DF8 - 35: 0483C39E9616A1AE7083CCCD5700C4F8FAD23307 - 36: 8EE9EF037310BA9174217C4921EF32620179D04B - 37: 1C0BD65FE618575F0750D2E3B08E2E718C8B7970 - 38: F0256B86A8E9EB359F950FF0A5E16596F253BEE4 - 39: 8D7BFFBC634762D0FB5222E4BB0A8719E9B7D081 - 40: 27E1D09CEFD270ADB81599B71A47ABA8E17CE4F9 - 41: C5A52EC4DF672DED31983299F56FE7B389975988 - 42: C9813921DB8760016DA939BF7EC2E34E30A8BB3A - 43: 7B1D1B8933557B22DE1A9A5FCAE805F52CD30CA4 - 44: F192A8F9A94BD34DF766692A2CDAA63DD0BDDBFD - 45: 39E6ED136B56D8319DE6D51B3211A035042FFED1 - 46: 5E9930F1EC9066C20296AF7122CBBA72B25A2A93 - 47: 793030A738EB909568471EE20340D32BEA78403A - 48: 2E8DC80084C5A2E64245E974AFC408C2EBF89D19 - 49: 006869129561FDC6549A03C0B5214B9A76238F92 - 50: 11170463304E748E8DB1449F55191E9D153ED1BD - 51: 1A0B05555FB77D2F9C074FA3E83BB283F95BE537 - 52: 5F5F8FF3CE86AF33C1415C60F76CB2C25BDE6728 - 53: EC7675D6B24FE54113EE502F4B9C434AE2D510B8 - 54: F6D1E8931D28A492C487FE2B62684B4DEE9606AD - 55: 2C0AE504B7674099048042CE546844DD06E32EFB - 56: 81DED6F4245B0BC4C055D5B7940D4A82DFEA329A - 57: 0285CCF80282440FB7E66B16DCF53D6C530EC3BC - 58: C617F39AB2446324C5E42D8B24C773AAA55CF624 - 59: C2378D825E5E8D9C98AE33DAED09DB42D8BE0A40 - 60: 62B4DCAAB72D70A77806A9B96C099AC76D04D72C - 61: 1D9CAAA74E54F3CA2D685C74211C6A4310E66D9D - 62: 6B190C2ABC4C181FF207099CB51C3DF5C944CE15 - 63: 3D0034E3E070CED4C8555CC592D019AF6155B086 - 64: 68C18B80DD398444AA9FD4272ECFA8E71B31EE8A - 65: 20EB8EEE0C703A44779298F35F92DA38F2B4F0BF - 66: EF4CD91D8F64838A042C07FB47F2736E68B66809 - 67: E2F5974DF791223616B42D5DA419DF26F2E128C0 - 68: 06C2DBF070561DC936212A3ADC877C94D6C4A5D0 - 69: 14B0EBC0735758C60EC1EF0DB2DE0E2763801370 - 70: 3D389052DC609E219CCF557B6667F8976B82B782 - 71: ED2B645B593417C11431E55E646D26E92DE1CFB3 - 72: 7150F391010A2F175621D5FFBCF7A6EDFFC8FE1F - 73: F4B6B92EBE81533243053EF7C44C993F50983B3E - 74: 36E34AE33E41722AF099E6A57CFD466A5631057A - 75: 1FBE85FFF071FD6C98F6F1A519E2D64F475ED76A - 76: 1C6C18D0FC578FB74B92EC0AF23CB61C8E6CF595 - 77: 240240245C8BDB34F0A52656644593BAAE08A5EB - 78: 2F3320A1E36B4E3CBFF7085B2599752FC830C78D - 79: 10FCC5E7FE1927674730A94CEC96BF2F0BD9DFCC - 80: 2E33E68B08D61675372CF6DA84AB69F2EC707B00 - 81: 9729F628CE9C027774A643F3CEF26DA829F36592 - 82: 1EF72D087EF5E79D104396D63579BD6F98CF4C1E - 83: 69B9DFD3ECC5560FACCFAF2A402F949F76EEAF84 - 84: 12EE430ED6E37CD3B9FE0318F134390F11BB99FB - 85: 0D491088429004B2ECB84788FB045EAD3F7B6E54 - 86: 0A755ACE4673E9A2A083E9B7E412E0F21C4E8D18 - 87: 38FE0BEA8C3B5D105A6D6BB7D241E4345893FE36 - 88: F94971CFF90543B01DD32C5589032B0C05AC179F - 89: 720F5741BDC10B4599E67F86C1A14C0116B1C69A - 90: CB82A141D54DE5386D032C87E417240C2FEAEA5A - 91: DBDC7A6B1A2EA4CA3275871FECAB399BB2C91065 - 92: 2DF5156607D295E207A31FF08F0CFE7B5659ABD9 - 93: 338F3C5DF3EC240F5310F826EB17E86BA05C4E49 - 94: 60CFC1A154C1D98B44F0DE61090D49E71979D992 - 95: FC9B059E0B22B699387F2DAE43949A56EA395514 - 96: 18BF054303412DA7FEB896C7940D2AE0EA4DD8B8 - 97: C1942585DDFBD73AFBC7F1F8A2FE54EC9DB1DBE9 - 98: A0A46EFE86E0438226977955E5BB92454AC0EDC1 - 99: 5EB5F8576B9D35EABDC5377802F02FF9E121B435 -100: 680D1A3BDA75F684618CBDC2863A76719155EE53 -101: A2923C7BD0EE1A2BE98BA750571B4A95DCD53F67 -102: CA57C775ABB2082BC165CC102BDC54F8F3F2896F -103: AED1F4A1172389137FFDDB36CED33E70E0AF111B -104: FE6297DB2444ED4C50860BD0266978C314724920 -105: B522FE23A986B6A911AA575590675DC80A0608F7 -106: 49380F56DFD3E20B1517374304814A8F351B71B9 -107: 9053188745A526DF0431EC4BF836F329B2AD54F3 -108: EBA715AED607617D90340C144D4E9059A80FD465 -109: CB1ABE32A735C49164A068EF87120B49C7EAAB2B -110: 7081B36DEF56C5FBB541C8C0AD8BB324C29ABE88 -111: AACABE58BF3FCD680DEB8FE8C7D8D74798E9081D -112: E660714F551A3EAEBF8BF334AF6415152B86E485 -113: 2C425922F0E11972DBD91E4394282E1570BB25A2 -114: 45C24A1C263432568573075A2162CC8098CCA18E -115: 7847103CF22ABC8C2FC0AD911FEBB7B14943C9B5 -116: C5147A4590DD4C1426E212156E01F608DBD66D69 -117: 965FE7D1837B971EDAB15F7E67EBA9A2E6914F40 -118: 741E306EAD4D955C33052B0ED20F5C5AB20F2101 -119: DB5207DF29623C33809DAC6E43F475D30A72A911 -120: 71EDF00F043A71BA57F6B5E1B68A6789DD546F1D -121: 8662782A37C5750197139141A9727141552F3ED9 -122: FEE742A0F8B086265397D6F1BBCBBDC0A06BAA02 -123: 79AB45D0C1993E96A5513CB71E90B6CE6534255D -124: 81941D21C28A57C91B9912A0530393C5EC4B847E -125: D751DCCD29D33981DF4014FE866B04029BF79370 -126: 247DC8D47CA83F3B852BFBD5C1100E5EA7DB9A8F -127: B326E5F0E03512E436F31111DF9C378DCA2B3171 -128: FB7B50DB11A7A2ACECF57AA08636DF85EEAAC736 - -Hash: blake2s-224 - 0: 1FA1291E65248B37B3433475B2A0DD63D54A11ECC4E3E034E7BC1EF4 - 1: 61B94EC94622A391D2AE42E6456C9012D5800797B8865AFC482197BB - 2: B354A3A86CCB9D779E2CCA139D231DBE9ABF798F167FEA6E3F577867 - 3: F366ACA9739FDDA59DC11280B6E6D10DB6286B503E1D0A922326307A - 4: 42ABB6E970408779166B9EB742FE0621B03F77794A8881FC398F97B3 - 5: 01F21AA3E522547A29784118863AA2A1954E295F42529C3DE0600835 - 6: 4DED466648D01276EAD4A77882C05602F7E92B198E84810A52FF11A8 - 7: D2FC4A9F2B1CC35D2ED8A7C24A91A68C86FBD326574B079C66E41196 - 8: 9903423028C41511FABD3366A07AAF7E480D2B6FC0457EEF7C11A824 - 9: D664024F8A94368DCCE909495E2CD6BBF1BB02390F8066545D010701 - 10: 976C9034E79937B253F7D9CEBF6F7E81B57CF27C97551E88FB95168A - 11: 314B02060FA7ED987F3C566783A6B325D30F17A6D5F3724E23C46633 - 12: 0C7F28E829AA9484F2AFF0605535404B8E845EC763439FAD1BF86024 - 13: 3C12AE2CB1489D1E962A1D171173628B3D6BE0590C3ADE492C3987B7 - 14: 55B6D6D04513E811CC41F656DA633E7DC9555BDFF733F735ADB531EC - 15: 90C14B6F15AB39F0623A092C25171DB744DCEC78BCAC1C5F722C4B56 - 16: 9384BC14A81DA3BBCA13D0CF2A876711545EE8C3A87C191A4169F727 - 17: 49B6BDF2ED04E5D76A19CAC2BAEF08AAD16A3B4A31B2765781593AF8 - 18: 5AA9C3AABE961DE67A16AFF35B0AABB7E734C26E2EE42C76A46299CD - 19: FEB584CF41462363372F82999262AB93F154EBEEB644F58B4713202C - 20: E17CA71ADA6B48CBBB8399D9CAEA26D0F2B7F5B1C9BD4924E6A6A494 - 21: F5BE4A4A44421D403F7A154366311D61E415F6169516E72DB426A4C6 - 22: 2C347252DD3B7B99FEF9038B72E7961799C7DCD7CD9D22BEE98E5720 - 23: D5A11E41B9FF2562A8A93D62B1CC9DE2A734C2C14D7AC5C818B1D225 - 24: BB2F2A95B9A695091D79CBB7DDB60E6344EE6A1A0A00506F8D4E81A6 - 25: 4C676307A506243B96B8765274D9696C41332EBCACDDCFEF51ED98B2 - 26: EBF674014A0EC1513A522B13CCE542E7E8E4A5C4915A8545DB9A28E9 - 27: 03308AC3021B1F36500A53A14D472C669D03135DA7477E636D381412 - 28: 9F7194D71D515EBC1E15DDB382D218FB35D91485F7967D9961CCEDCC - 29: 8F6809F5F9ADD0562C0D7F70583AC71A24C6C1885EE1D5F572D3D973 - 30: 00AFC8B9B4F0C30625E53D4F2064F6BFF05EDF46FEEFAC6EA6CB7334 - 31: 4D42ABA3D1D12AF74A8524114B17D6D1957FB24753DDE2E28E9DA390 - 32: A19C4CA01CE34CD61408E9EC9946E3DAA98AD1B7D77C087782E6827F - 33: 800559FD51E93E4BC2FDDFB26964343AF7C0DD343AA3D36D40857F97 - 34: 3656E7DB967CDFC7F3D7BA099827449E9AC38AE992A02D446706CF5C - 35: DC690F1B322291B741D0CE2D9639F8DB85FDF5FDE1E41701BFD8A406 - 36: C0EBB37BB3E12CBD7888255E8C3A8F1EB6AE5A9582455D7A0772BBE5 - 37: 32B16E5D5EDD71424DD8C8E1E23A651322CA06AF13E3FB7E56EA9733 - 38: 20D5B7C0B52320AB1A1FBF7D47626BD758138E07B74B4FB2B846E186 - 39: C4A7603DFA81B43D36E9F5B0D1423DE4686327F7A4415D6277751428 - 40: 1ECBF4EA964E9B3855A9E9293F3D2D2BE1E251D9204B54B6837800A9 - 41: 9C9440E097BEAD44FA7B968818FF557D41D2AB29EF48212C975378E3 - 42: 97D936C85DA801F053AD2C7EE6D7B4ABFB43D2563FA5CFA76A366055 - 43: DEF0FA3658530B7BBC0E6D5A30AF8B48ED780C73D947BD267DB36E2F - 44: 6C26BA6D96EF33EA6977943D2BDE04AE3BAB13CD7329D7CF304A091E - 45: D5E49A864104B862020251F91E917E33F77208797F4FA7FEC2618C18 - 46: 59F3C5D276DD45FD1B1A512094E6F7CB8946D26B6DE0B16659E86505 - 47: C5F52A98EDBA4700EB18E7855EE8DD1A427FC7184FF4259B3DF09B91 - 48: 69A7C96A17478FB971E907399C125E39E7DA329D231C4A1ACFEEE1F5 - 49: F97C42B005A40AC713CD1201544058C332FE83D6A5DFFCB3F7A26DF7 - 50: 080519CB017B2953003725848DD739C9B39AE9D9E6E7E9006103A852 - 51: 267AEF7F39ED64DCA288F25B01F9AD5478599E1B91B496840A1DF1D6 - 52: 52240CD9B35403B8832680EE72FDDCF37E51897E9E4E46B55D3ACBED - 53: 63DA0BF0FBDBA65430F5BBC099A4B7F868672BC3FAD71ED31F5F77B2 - 54: 5EE73E709A1661971150CF31099124CD42A9F9D6FFF6F9078BE63154 - 55: 5CD64A9845375020F2331C72CB955821CFE11D06A3B63D8A1D1187E2 - 56: 8522AB2D20CDF3CA0F85EA5A18E5C385F1BB3E9B0A4FDC07324C98B0 - 57: FE16ABA3459844E3299FB7E0B47A8DC6337C8209CD6220407BF29682 - 58: 86B4C6EF1783701C6F6DC237A8FF45035B61FD7F3FBDA61EF37B79D8 - 59: 2A4A292DC2ACE8BD3729332332AA8757A7DEF68A181DF8CC51266910 - 60: 36410AE1CDAA027F85A4ED1C8892B70E0B4FD541C2A14CC1411D67F0 - 61: 21E5E7CCADB0A287A37C10E4CE258B2658DF29A0E7356C88A3E92C20 - 62: 027B16F4E0F5A5C17A46EA3B51DC50B368EA094F5EF196E615FE8B3D - 63: 8D88168937A3B44E45C1408C03DF60835DF2794E8B55ECA1FD1E266A - 64: 0F3CD451360AAD6BD7C9CBC1497771315BC0E0F34C82D1F4E1052B1E - 65: C4ED166EC8CCB80A236767111FA75498A0666901226B549DE011D576 - 66: 8CDD99B9C3E2F417C7DD334AD50AF32F220CAC25731C667BA6CFB4FF - 67: 19415845A2F27872B881191381DAEA10E24A6DC1214B994DCE330F1E - 68: 9973F64635A408C840C1DC2667BA0E9C2BDAFA8E86E584BF2642076B - 69: 5041DA88DB2F7478EB5AC630FFB77BE46328891A5BA940141E2344BF - 70: 7FD3930B4100F6A6E97B64EFC6BF77E23DA925E1C488FD89C618E03E - 71: 4BFA0D8F207926ACAAA0E04A4EA269D822875A5FBB462C72936BFDF4 - 72: FCA9E83CF144083FE82C39CA58341DEC32CEBBEAA87E728689C8C6E8 - 73: 1F152AEAED0107E3F1D7317BCF61FBBBE9756D9C1D3A998ACCE73B19 - 74: 5ECC27D88DC605A4C30CE046CD93C252E646CC5D1303C3A1F8019371 - 75: B44C388E1CFF293242A783EC000E9CF1D977812255009CB35917FD5F - 76: E3C4B860A91C6DEDBD796EA5EF957453A41BBD477E5C5327A23C4D87 - 77: B61901A9BA1AB20128DE4832923742E01BA41A648EF09FE5D0FC64E0 - 78: 562B90D86AF640C3835F76B24FB1DB7F509DE8091E15D52FD6283747 - 79: 5704A0A9B316400692431460D45F64C52FF939CD33AC93EE23927352 - 80: 222395B8C1DAD60F29E1B02E9E944CADDA56A61027F46025F893239D - 81: FFD94C26439196ACBD2E9C225E522F2825588BDC67053BBF3F0D3A58 - 82: 0F2C8AA114D3A687F143EB35EEBE32FD1CA325AC5B8818024AFB3554 - 83: 00402EC26EFEAAC7E376EB294CC3F1A5ACF55B8B2D06B581194473DA - 84: A504DF8BA4C46C6D0923C67DF94169F057A63192A17623FC7B20B189 - 85: 654954B063729D09A562598A9537EACCC0D98B9BB1FBB34172960F19 - 86: EE5773C670FE153A969B1F3A54F155A28AF9E25BDFEE02285940FF26 - 87: A5FCA2FCE745A8FED0338C747797539CE96998F0678758679BDC7A84 - 88: F2761BB7E85BB2953FB99AFF5F2EC50C6799B140359165035333C8F9 - 89: BD5FE527CD74ADAF6A646C6C35E0B891744CA78098224EC8E4CD5CB8 - 90: 886E3D5B274CF83C5CE6D16E4C3A8D3382A3486A3F447EC70526EE17 - 91: 23E6611E54C8D767D3C0B007F05815E5FACA2DC11A27D5EE5D3F8EAD - 92: A09DA0A8EE1DEB0B41C6F50BCE7446A7F6CE60886B5E289EE86F7008 - 93: 60382D65E2FC987AF43757FC7AAA777F82F885C98EA07F650C52A3A1 - 94: D2033BF9C929E13F39A0033669F7B270983CAE1491588D6765BFFCFF - 95: 278F3962EB35495F08C04DAC7C2DC972550B5E8125DE7B2DEF30D67A - 96: 54501DD2B4B14AE335F0DAA6DE33C862532A9C7D895A33582001BF88 - 97: D14803662A73E03B0EC08DB76877E8EBF614A7B2E48800536032A329 - 98: 4669600EFB4AB6D1653AA0470F6E35005F961A9A0896F2F3D6A2A5CD - 99: 20EE59D9CC85FF096A6C209EE25A9D9D7B01BF6A0FCF3FE512573BB2 -100: D578424CA09A3900792DC6F4D3DD0282B80C39415C0DB9283806A07B -101: 047BF849300AF65A5E5A0037A2F03236D78F18AE96C760D084683EE3 -102: 66E2C5DC229AD1318A39E5E38276181E4BEF8467A3EF99CAAD842EF9 -103: FBBA003032683675DFA34448CB70F50F9D52B3FAD23BAAF4E9D810AA -104: 87147164C725A5C17F0C108315AB67266D2F748C4F97F3A4A5450C53 -105: 808E48C1FF44EAE1289F2B460E8F5694E65F1F71F08C7F09281B2024 -106: 4D8A491E0F4E265C71A7FD993E94B187B69053D4DC4A45EEFCA66763 -107: 4B93C4B9DF00FB64A1E5D00A7130253B438DD30CF132C1FFA8B49458 -108: FA77DD5A05385B4F08787EC821A4D9643E66570F5ADDCC95C558E916 -109: BA2E4C01D2C80EEAB1C1D76C3348C37D88EDBE52D2322B38AA4B2553 -110: 50232F65130808FF427EE791C0D7F4B0D80A5428E6D153970462138E -111: 6E3DF733DCB232D9742DEAB44A6CC9CE75B52D677599DE018BE80A02 -112: 589286CE5D448B9B6A727AE3E24DEB9E8141FEDB1E8E853556A63A03 -113: E48768C63384D8C29736969B1F2934D57EABE67D80EC1B05C74607CF -114: D243C7B0EA86D4286FC46217A4DBACAB02D47B553E500F41225A6F9E -115: 5048ADFB6091292878E21F2D40682F385B130294BC61216133B7F28D -116: 2400C769610FB06F9BE1810F202E325F5984289533595D5252DB52B8 -117: B64166E2678CB7BED689CD28F0C06969559FFF3F8C31564BF68C0741 -118: D8160C3E3AAC9FE0368FACB3190AB11ECF545DF83F6A60D058A06908 -119: AC993AF05709DE0C7516C09F505562D8F10C643690ADF3DC1EB12803 -120: 8D3221FFC272D7FD44D4EA0AF6AE4AF7D5E0BE1E48F305B7EFB1BC6D -121: F14EAFFA4F73354329CD49634836E3A69DE1A89C80262BF40668F2CC -122: F4DE293C01AF09BFA4E7417488EA8D599FA854C6305E8D638AC83146 -123: BFC807EFE5CF0C5C7F71E337E68BA974F137DF299D01DC7E57F053D0 -124: B943A8B8EC482F68977BD6FEFD3FDEB1FCADFB84B3B5A8442CBF4F0B -125: 01D45AD3FF542DB030F7EE00F80342EE397DB480737A3A17098C0804 -126: 11FAE1A284C26D0475026225741EE11E10E96453B92FAA72FF4DBD47 -127: A5CE0FF6222E2669FC425EF4D5CDAED1870BF1C384A560E4DD86F5B3 -128: 784E4D4A1465F11253D1812C9C865C99581656086F4F2B7EE7FFDBB6 - -Hash: blake2s-256 - 0: 69217A3079908094E11121D042354A7C1F55B6482CA1A51E1B250DFD1ED0EEF9 - 1: E34D74DBAF4FF4C6ABD871CC220451D2EA2648846C7757FBAAC82FE51AD64BEA - 2: DDAD9AB15DAC4549BA42F49D262496BEF6C0BAE1DD342A8808F8EA267C6E210C - 3: E8F91C6EF232A041452AB0E149070CDD7DD1769E75B3A5921BE37876C45C9900 - 4: 0CC70E00348B86BA2944D0C32038B25C55584F90DF2304F55FA332AF5FB01E20 - 5: EC1964191087A4FE9DF1C795342A02FFC191A5B251764856AE5B8B5769F0C6CD - 6: E1FA51618D7DF4EB70CF0D5A9E906F806E9D19F7F4F01E3B621288E4120405D6 - 7: 598001FAFBE8F94EC66DC827D012CFCBBA2228569F448E89EA2208C8BF769293 - 8: C7E887B546623635E93E0495598F1726821996C2377705B93A1F636F872BFA2D - 9: C315A437DD28062A770D481967136B1B5EB88B21EE53D0329C5897126E9DB02C - 10: BB473DEDDC055FEA6228F207DA575347BB00404CD349D38C18026307A224CBFF - 11: 687E1873A8277591BB33D9ADF9A13912EFEFE557CAFC39A7952623E47255F16D - 12: 1AC7BA754D6E2F94E0E86C46BFB262ABBB74F450EF456D6B4D97AA80CE6DA767 - 13: 012C97809614816B5D9494477D4B687D15B96EB69C0E8074A8516F31224B5C98 - 14: 91FFD26CFA4DA5134C7EA262F7889C329F61F6A657225CC212F40056D986B3F4 - 15: D97C828D8182A72180A06A78268330673F7C4E0635947C04C02323FD45C0A52D - 16: EFC04CDC391C7E9119BD38668A534E65FE31036D6A62112E44EBEB11F9C57080 - 17: 992CF5C053442A5FBC4FAF583E04E50BB70D2F39FBB6A503F89E56A63E18578A - 18: 38640E9F21983E67B539CACCAE5ECF615AE2764F75A09C9C59B76483C1FBC735 - 19: 213DD34C7EFE4FB27A6B35F6B4000D1FE03281AF3C723E5C9F94747A5F31CD3B - 20: EC246EEEB9CED3F7AD33ED28660DD9BB0732513DB4E2FA278B60CDE3682A4CCD - 21: AC9B61D446648C3005D7892BF3A8719F4C8181CFDCBC2B79FEF10A279B911095 - 22: 7BF8B22959E34E3A43F7079223E83A9754617D391E213DFD808E41B9BEAD4CE7 - 23: 68D4B5D4FA0E302B64CCC5AF792913AC4C88EC95C07DDF40694256EB88CE9F3D - 24: B2C2420F05F9ABE36315919336B37E4E0FA33FF7E76A492767006FDB5D935462 - 25: 134F61BBD0BBB69AED5343904551A3E6C1AA7DCDD77E903E7023EB7C60320AA7 - 26: 4693F9BFF7D4F3986A7D176E6E06F72AD1490D805C99E25347B8DE77B4DB6D9B - 27: 853E26F741953B0FD5BDB424E8AB9E8B3750EAA8EF61E47902C91E554E9C73B9 - 28: F7DE536361ABAA0E158156CF0EA4F63A99B5E4054F8FA4C9D45F6285CAD55694 - 29: 4C230608860A99AE8D7BD5C2CC17FA52096B9A61BEDB17CB7617864AD29CA7A6 - 30: AEB920EA87952DADB1FB759291E3388139A872865001886ED84752E93C250C2A - 31: ABA4AD9B480B9DF3D08CA5E87B0C2440D4E4EA21224C2EB42CBAE469D089B931 - 32: 05825607D7FDF2D82EF4C3C8C2AEA961AD98D60EDFF7D018983E21204C0D93D1 - 33: A742F8B6AF82D8A6CA2357C5F1CF91DEFBD066267D75C048B352366585025962 - 34: 2BCAC89599000B42C95AE23835A713704ED79789C84FEF149A874FF733F017A2 - 35: AC1ED07D048F105A9E5B7AB85B09A492D5BAFF14B8BFB0E9FD789486EEA2B974 - 36: E48D0ECFAF497D5B27C25D99E156CB0579D440D6E31FB62473696DBF95E010E4 - 37: 12A91FADF8B21644FD0F934F3C4A8F62BA862FFD20E8E961154C15C13884ED3D - 38: 7CBEE96E139897DC98FBEF3BE81AD4D964D235CB12141FB66727E6E5DF73A878 - 39: EBF66ABB597AE572A7297CB0871E355ACCAFAD8377B8E78BF164CE2A18DE4BAF - 40: 71B933B07E4FF7818CE059D008829E453C6FF02EC0A7DB393FC2D870F37A7286 - 41: 7CF7C51331220B8D3EBAED9C29398A16D98156E2613CB088F2B0E08A1BE4CF4F - 42: 3E41A108E0F64AD276B979E1CE068279E16F7BC7E4AA1D211E17B81161DF1602 - 43: 886502A82AB47BA8D86710AA9DE3D46EA65C47AF6EE8DE450CCEB8B11B045F50 - 44: C021BC5F0954FEE94F46EA09487E10A84840D02F64810BC08D9E551F7D416814 - 45: 2030516E8A5FE19AE79C336FCE26382A749D3FD0EC91E537D4BD2358C12DFB22 - 46: 556698DAC8317FD36DFBDF25A79CB112D5425860605CBAF507F23BF7E9F42AFE - 47: 2F867BA67773FDC3E92FCED99A6409AD39D0B880FDE8F109A81730C4451D0178 - 48: 172EC218F119DFAE98896DFF29DD9876C94AF87417F9AE4C7014BB4E4B96AFC7 - 49: 3F85814A18195F879AA962F95D26BD82A278F2B82320218F6B3BD6F7F667A6D9 - 50: 1B618FBAA566B3D498C12E982C9EC52E4DA85A8C54F38F34C090394F23C184C1 - 51: 0C758FB5692FFD41A3575D0AF00CC7FBF2CBE5905A58323A88AE4244F6E4C993 - 52: A931360CAD628C7F12A6C1C4B753B0F4062AEF3CE65A1AE3F19369DADF3AE23D - 53: CBAC7D773B1E3B3C6691D7ABB7E9DF045C8BA19268DED153207F5E804352EC5D - 54: 23A196D3802ED3C1B384019A82325840D32F71950C4580B03445E0898E14053C - 55: F4495470F226C8C214BE08FDFAD4BC4A2A9DBEA9136A210DF0D4B64929E6FC14 - 56: E290DD270B467F34AB1C002D340FA016257FF19E5833FDBBF2CB401C3B2817DE - 57: 9FC7B5DED3C15042B2A6582DC39BE016D24A682D5E61AD1EFF9C63309848F706 - 58: 8CCA67A36D17D5E6341CB592FD7BEF9926C9E3AA1027EA11A7D8BD260B576E04 - 59: 409392F560F86831DA4373EE5E0074260595D7BC24183B60ED700D4583D3F6F0 - 60: 2802165DE090915546F3398CD849164A19F92ADBC361ADC99B0F20C8EA071054 - 61: AD839168D9F8A4BE95BA9EF9A692F07256AE43FE6F9864E290691B0256CE50A9 - 62: 75FDAA5038C284B86D6E8AFFE8B2807E467B86600E79AF3689FBC06328CBF894 - 63: E57CB79487DD57902432B250733813BD96A84EFCE59F650FAC26E6696AEFAFC3 - 64: 56F34E8B96557E90C1F24B52D0C89D51086ACF1B00F634CF1DDE9233B8EAAA3E - 65: 1B53EE94AAF34E4B159D48DE352C7F0661D0A40EDFF95A0B1639B4090E974472 - 66: 05705E2A81757C14BD383EA98DDA544EB10E6BC07BAE435E2518DBE133525375 - 67: D8B2866E8A309DB53E529EC32911D82F5CA16CFF76216891A9676AA31AAA6C42 - 68: F5041C241270EB04C71EC2C95D4C38D803B1237B0F29FD4DB3EB397669E88699 - 69: 9A4CE077C349322F595E0EE79ED0DA5FAB66752CBFEF8F87D0E9D0723C7530DD - 70: 657B09F3D0F52B5B8F2F97163A0EDF0C04F075408A07BBEB3A4101A891990D62 - 71: 1E3F7BD5A58FA533344AA8ED3AC122BB9E70D4EF50D004530821948F5FE6315A - 72: 80DCCF3FD83DFD0D35AA28585922AB89D5313997673EAF905CEA9C0B225C7B5F - 73: 8A0D0FBF6377D83BB08B514B4B1C43ACC95D751714F8925645CB6BC856CA150A - 74: 9FA5B487738AD2844CC6348A901918F659A3B89E9C0DFEEAD30DD94BCF42EF8E - 75: 80832C4A1677F5EA2560F668E9354DD36997F03728CFA55E1B38337C0C9EF818 - 76: AB37DDB683137E74080D026B590B96AE9BB447722F305A5AC570EC1DF9B1743C - 77: 3EE735A694C2559B693AA68629361E15D12265AD6A3DEDF488B0B00FAC9754BA - 78: D6FCD23219B647E4CBD5EB2D0AD01EC8838A4B2901FC325CC3701981CA6C888B - 79: 0520EC2F5BF7A755DACB50C6BF233E3515434763DB0139CCD9FAEFBB8207612D - 80: AFF3B75F3F581264D7661662B92F5AD37C1D32BD45FF81A4ED8ADC9EF30DD989 - 81: D0DD650BEFD3BA63DC25102C627C921B9CBEB0B130686935B5C927CB7CCD5E3B - 82: E1149816B10A8514FB3E2CAB2C08BEE9F73CE76221701246A589BBB67302D8A9 - 83: 7DA3F441DE9054317E72B5DBF979DA01E6BCEEBB8478EAE6A22849D90292635C - 84: 1230B1FC8A7D9215EDC2D4A2DECBDD0A6E216C924278C91FC5D10E7D60192D94 - 85: 5750D716B4808F751FEBC38806BA170BF6D5199A7816BE514E3F932FBE0CB871 - 86: 6FC59B2F10FEBA954AA6820B3CA987EE81D5CC1DA3C63CE827301C569DFB39CE - 87: C7C3FE1EEBDC7B5A939326E8DDB83E8BF2B780B65678CB62F208B040ABDD35E2 - 88: 0C75C1A15CF34A314EE478F4A5CE0B8A6B36528EF7A820696C3E4246C5A15864 - 89: 216DC12A108569A3C7CDDE4AED43A6C330139DDA3CCC4A108905DB3861899050 - 90: A57BE6AE6756F28B02F59DADF7E0D7D8807F10FA15CED1AD3585521A1D995A89 - 91: 816AEF875953716CD7A581F732F53DD435DAB66D09C361D2D6592DE17755D8A8 - 92: 9A76893226693B6EA97E6A738F9D10FB3D0B43AE0E8B7D8123EA76CE97989C7E - 93: 8DAEDB9A271529DBB7DC3B607FE5EB2D3211770758DD3B0A3593D2D7954E2D5B - 94: 16DBC0AA5DD2C774F505100F733786D8A175FCBBB59C43E1FBFF3E1EAF31CB4A - 95: 8606CB899C6AEAF51B9DB0FE4924A9FD5DABC19F8826F2BC1C1D7DA14D2C2C99 - 96: 8479731AEDA57BD37EADB51A507E307F3BD95E69DBCA94F3BC21726066AD6DFD - 97: 58473A9EA82EFA3F3B3D8FC83ED8863127B33AE8DEAE6307201EDB6DDE61DE29 - 98: 9A9255D53AF116DE8BA27CE35B4C7E15640657A0FCB888C70D95431DACD8F830 - 99: 9EB05FFBA39FD8596A45493E18D2510BF3EF065C51D6E13ABE66AA57E05CFDB7 -100: 81DCC3A505EACE3F879D8F702776770F9DF50E521D1428A85DAF04F9AD2150E0 -101: E3E3C4AA3ACBBC85332AF9D564BC24165E1687F6B1ADCBFAE77A8F03C72AC28C -102: 6746C80B4EB56AEA45E64E7289BBA3EDBF45ECF8206481FF6302122984CD526A -103: 2B628E52764D7D62C0868B212357CDD12D9149822F4E9845D918A08D1AE990C0 -104: E4BFE80D58C91994613909DC4B1A12496896C004AF7B5701483DE45D2823D78E -105: EBB4BA150CEF2734345B5D641BBED03A21EAFAE933C99E009212EF04574A8530 -106: 3966EC73B154ACC697AC5CF5B24B40BDB0DB9E398836D76D4B880E3B2AF1AA27 -107: EF7E4831B3A84636518D6E4BFCE64A43DB2A5DDA9CCA2B44F39033BDC40D6243 -108: 7ABF6ACF5C8E549DDBB15AE8D8B388C1C197E698737C9785501ED1F94930B7D9 -109: 88018DED66813F0CA95DEF474C630692019967B9E36888DADD94124719B682F6 -110: 3930876B9FC7529036B008B1B8BB997522A441635A0C25EC02FB6D9026E55A97 -111: 0A4049D57E833B5695FAC93DD1FBEF3166B44B12AD11248662383AE051E15827 -112: 81DCC0678BB6A765E48C3209654FE90089CE44FF5618477E39AB286476DF052B -113: E69B3A36A4461912DC08346B11DDCB9DB796F885FD01936E662FE29297B099A4 -114: 5AC6503B0D8DA6917646E6DCC87EDC58E94245324CC204F4DD4AF01563ACD427 -115: DF6DDA21359A30BC271780971C1ABD56A6EF167E480887888E73A86D3BF605E9 -116: E8E6E47071E7B7DF2580F225CFBBEDF84CE67746626628D33097E4B7DC571107 -117: 53E40EAD62051E19CB9BA8133E3E5C1CE00DDCAD8ACF342A224360B0ACC14777 -118: 9CCD53FE80BE786AA984638462FB28AFDF122B34D78F4687EC632BB19DE2371A -119: CBD48052C48D788466A3E8118C56C97FE146E5546FAAF93E2BC3C47E45939753 -120: 256883B14E2AF44DADB28E1B34B2AC0F0F4C91C34EC9169E29036158ACAA95B9 -121: 4471B91AB42DB7C4DD8490AB95A2EE8D04E3EF5C3D6FC71AC74B2B26914D1641 -122: A5EB08038F8F1155ED86E631906FC13095F6BBA41DE5D4E795758EC8C8DF8AF1 -123: DC1DB64ED8B48A910E060A6B866374C578784E9AC49AB2774092AC71501934AC -124: 285413B2F2EE873D34319EE0BBFBB90F32DA434CC87E3DB5ED121BB398ED964B -125: 0216E0F81F750F26F1998BC3934E3E124C9945E685A60B25E8FBD9625AB6B599 -126: 38C410F5B9D4072050755B31DCA89FD5395C6785EEB3D790F320FF941C5A93BF -127: F18417B39D617AB1C18FDF91EBD0FC6D5516BB34CF39364037BCE81FA04CECB1 -128: 1FA877DE67259D19863A2A34BCC6962A2B25FCBF5CBECD7EDE8F1FA36688A796 - -Hash: blake2b-160 - 0: 3345524ABF6BBE1809449224B5972C41790B6CF2 - 1: 082AD992FB76871C33A1B9993A082952FEACA5E6 - 2: D9BA03C1E5CCF9083FCB21F7AE01D20BC0A61116 - 3: 147420788D27F83264EB55BAD410D304540A21D9 - 4: 72D1B592354DFFD34B9A33A1D9696BE6B2A76162 - 5: 6BE786CBE2439FEBEE399618309831D8CCF8E68D - 6: 508A9AF9195DB76523F32DFE0DEE2615C4EAB892 - 7: 83A00152738C9C2D0CE6980BC093C73ADDA0A707 - 8: F422108C43BAD02773C989E90A027729B0FD3B8C - 9: DCFFC21F7D90B79C7E4D72CE1CB68E9393707A0B - 10: B673B12C3BF35B84553157DDE2D64F01D53170F7 - 11: 24A88757AE5A6AFB6F09E4D4BC0C0D1F7784E693 - 12: 444C019756D384677D54F4DE70E3708EEC20BCA3 - 13: D6A974E117A3B5397082A2638586CFEE6F94DAA1 - 14: 9F2FFE2B4CE9318159CD214811E856A2EB1996C1 - 15: 9729578C9F0012170273AD01920D69F5CADECB59 - 16: 2DED4F07D5B7E830711976338C12D66087F41E34 - 17: CC6A494DBAE2D0C782B9647F5E268D20C89DA8E0 - 18: D913843A8FE13C412FE21736DA128C4F6E5149E9 - 19: 6AFF7DBB8AC24568ABD268442FD2A3210B5A6FBF - 20: 52498636C61D58BD46D8BAD4C06B572BD08FF983 - 21: B91DF3153932F20DAC48D405689DDF5A3C379559 - 22: 3F6DCE460E8AE23C222EEA45BFEC0FA65E3D118F - 23: 75B340DE05638C190C1345F1823A12DC019F439A - 24: 8CEADFCD30B82A4686621E570F3A97025246C411 - 25: 362412D1AED48F91084715F30787107902601FD2 - 26: A09C9A7A20AE73A689FEBAB171C585AB0549F807 - 27: 9D33DDDEB1A31DF8C33C4F4BE8A3DD7EB99611EF - 28: 30F738CABC5598A35655D7E727AB009BB546B84A - 29: 318919F5F5CC9DB7E15C67D1BAA1FA660BFF2AE6 - 30: 0F2A40B3D3C8E9C6825218FDECEE51B65FE1F261 - 31: C9F4187E8EDBB4CD82ABE892BB0353C4DCA32390 - 32: B1B133B99F516E6C82CEDA892EF5AF50FA4B4E71 - 33: FEFF72EB10133687CC4BA345A409491346E4DDB4 - 34: AB2EBD942C73370C568A092CDD52441FD7427065 - 35: AF56FEBC670729FC0B945B30EC5FD4054D433B1E - 36: E0608B977EAA078A4ABD485A802AF1C52F44754A - 37: 6100835CA6FC89D1890A65CC01C322D195B23CF2 - 38: 25824CA722292042AA1182186BFA9863EAE3D1F4 - 39: 63445DA5519800A2CFBA55FF6C365BE2A9899618 - 40: 6BC0EEA6FD440873D7AC2A6A6D3F3651BDFBEADF - 41: EEE860BF14DF86BA903E1F62146F891820FF2CB4 - 42: F443B28F036AF2B79A2187912156129DBE28B943 - 43: C6A3BB461788D74D06EC8C58BFE9D3DDC5178BE3 - 44: EFC5B57327FCEFB5AE21FF75F65101D1ABAC09D9 - 45: 623AA14E42E6F3B8C4CEA1E5E1A49BD668F27BB6 - 46: 42098F0935B568DECD5E172321504A06820BA543 - 47: 96EA35D6AD0C91C65752562CC523E0F66E6E6DA9 - 48: 9B3BF9CDFF4CC55957AC4FB77F5BBA5CC94E4BBA - 49: 500F61E1F6BD816ECFE76B0A499FAB1A945BFDC7 - 50: 2338D3A37BAB81B165FB9B0D96774366AC1A5518 - 51: EACF1749527B99280B7A3108A8B9B79E58421F68 - 52: E80BBA9842ADAEAABB298CAA14435EBAE9F5B0A1 - 53: B1F5257EFDEE106309CE66B6F59F4C138C7B73B5 - 54: E61F350020AA8E4A83D2AC0635ABA5666B75BFFE - 55: 716A0F2CF96F308233E6C68150A1AB2A661C3DA7 - 56: E640F12A22189A12AC432BC56B24B1E4EDB0FF80 - 57: 32FC87D32E3CFC5CFF05144634DC78F8F02687A1 - 58: 137421D9E5BD9B351ABC465D61A22B2815D9F259 - 59: 045A2FD55DF2CCCA08CACDC0003FE1A026AECDAA - 60: 36DBCF4C47E0257A5A7DE43422CD55644EC22F39 - 61: EAF8D4A6B16B0DD1AC6279FEDC2B49FE742974A5 - 62: 4BA44618105A50075E3ECCF9535A1A7E758626F9 - 63: 1CB62C8F6CC806DCD161F08C81E704AE32AD5B3A - 64: 11CC6661E922B0E407E0A57249C38D4FF76D8EC8 - 65: 7E8D79A50A0FBD8BFA2C605E5AB883DB8B4EA2C6 - 66: 556938179EC873CB5F36B2F415C05EE14E3AF19C - 67: 214F921517DDE6F4E7613C99BABA4F2A7B7E086D - 68: 46685E91EB0402558744A0C9EB9F1E9B2C09E835 - 69: 976CF4208EF2432FD746EA12CC6CDFA2AD8C400E - 70: B414D0C48CE5A10DCFFEA9E625E0B4D890350145 - 71: C863CCDB88168D400BD01FAEE59BDEB3B1100ECD - 72: BCBBBB50F8D8495C0A76974C593611EF11118B76 - 73: 5D55F85EA7290C9AFEC642BBD8CDB087D96235E8 - 74: 7CE4700EABB3554168F3442D53DFAA87273A75BF - 75: 9F2CAA037876C0714A3C4F0EE93638266215B74F - 76: 326D352FD19B1E1D6EDFFC370BCCAA5B65265583 - 77: 17784225DEA6523A218939BB2C7FD800E8F901FA - 78: 64202454E538279B21CEA0F5A7688BE656F8F484 - 79: F434B89C355F32288849E69C831C43A1D1A973BC - 80: 892EF8517F0623D92778F0B85B7656F42EBDC8EB - 81: B4C72E5BCB122487DE719986D2A64D165FA2ED5A - 82: 625F82C023CF34C8E387322F254592A79A6ECCDA - 83: DF802769136C3A61B5F52602D6C9B73752716C97 - 84: 910FB3FBB922399F9C62E56ECA482D99E5795454 - 85: 0FBF8429F92927FEE97DC2BA4EAB76BEB862CFE8 - 86: D5E38C9B12ED4A35DCA2990B8D47180AD449BBB0 - 87: 2D9606C1F5981F54F1D6C2ADB5A809052805F550 - 88: C5B9110BFB2DA0CE0A55BA3F2BE0AAAB233C5A14 - 89: EAF391F4C3BF6F37F67CFA86CB3284196778F18D - 90: 3EA61BBE4F6BBD04DA75F18F5BFAB2C9CAF41611 - 91: C65BE6423EB531EAFF051098FF974168DEFFB39A - 92: 6E01FD16DDA5A7A2379FCD63778F55A8629B42CB - 93: 51A8BA40AB41BA72EE4B29B47BBCFB36868C9813 - 94: C495CE12562AAC6B126A8A131705C272D4969864 - 95: 08C93C1D82DE592963BABF7E3B8BF68CAD21C286 - 96: 732B3B39A2D7D9C69FCDCF4A9DA9D1CB4277EC3B - 97: EB7BF339D86B6F1E1ECB0D2CC3F1075DD1FEFB80 - 98: 36974AA1E83255AC9171AEA642351742005D7654 - 99: 60D55DCD8E9DC4159D840E57601D1AB937EE04BC -100: 54709EB6472DE7CAF362B93FBAB834A7A609F2A2 -101: A1BDE91C5A50CE658D9B812CCC7550BDECE3CD63 -102: 6001F23118F26AD0A177546BF788B917C81996B5 -103: 5B9147BDDF6072345DF9C1A2C1BA138F28C079C4 -104: 816C7C3ECEA245AD5FF19F59F27FBE346A54B469 -105: FA44AA7F1670D3B4158BA23C4CCF0651512406BF -106: F4337F09A0ECC6F79B837EC512AFCC2A9DF79B49 -107: 41D0368270C0346A974784BE3DF07DF66EC11D85 -108: 6E59AB52A972C60FE6CFD20615D9CB9517503C00 -109: 721D857AC832372BC36D6B38929538E2661D51B2 -110: 84DC2CD71FD10A4FC5FCAFD521E5496A157BF870 -111: 139105BC993171DE9FFF828B5E8A3FFD15297DF6 -112: 866CF68F16E920CCCC4770602C4F4952AFA6A238 -113: CB740B92FD7A86874A2E31DEA72210A41143C1D0 -114: 0F21249127C64FB12E327C57CE6C36B337298AEF -115: C4C939B4C886EB83DCBCB2EA59100143A094888B -116: 8D8B95E3506414341DC90BC7F24678373B4489B5 -117: 2B8EBA1D0B9400A865378AF46E9D9E088C21CB6F -118: 35E0E3246C15E153C12F7F0F2CC7EB54B836B193 -119: 9DE8DE7278578E387580FBF2547FC7EA34096A36 -120: C1D62B446D90A6F6AB19862E37B9BA2BB36545E8 -121: 98DE812D22A091F511537A32765F6413D4D9AD7E -122: E324F1547791E8B833E68C8C54F0407B54978275 -123: 63F4926B58D517D676813076F8ACB722CD7A01E3 -124: 872CFA83AA4A9A8E6868CD68897DB04970F8E215 -125: D5A0E33125F65896D1E02F94F6E7B2249AFBD7D5 -126: A5EE27706E706856298547F5DDC5C84FB4B998FF -127: 535975C8D8C5DD9ED14A9204757B06783DD7B1FB -128: E6992372AB022447B34F6D6032FBAB707A11ADEF -129: A7BF25F1599102AB631E3052E8303A2C097D1A7E -130: 44C843A35F07FBACB9F7819CD11CAD0359A7A6B4 -131: 86859704A90DBD20F8C6365353292BE6AEF4675A -132: 7E42D899823F55C07620599AE2EA9F61D200DAFC -133: 16F26BBC5A68AA21F97E1E847A7D8500122FDEFF -134: 982C6A68E68D5A692A4EC82B4C318887FE85FF6E -135: F036FC6B3A9D6DA82B52ECF4DE3D82BC8E38D075 -136: BE941DE2A77DAE6763E6143DD3689DBF18831E9E -137: FAEE2E5227EF4A6EA64446F1C2B5220B815981C2 -138: C667456AE916041AEEA1A358516A8C781AA6D17F -139: 43103A30BF5B2AAD39AA6864B4DC255CD4716418 -140: 9EDF855E4E411589D5C6BA1FC5D1C6AEC709E664 -141: 11E94407FBB164313ADF4DC5DA6CCF382A72C6D5 -142: 9B0ECAAF97D7724A49A70958F52EF78EFB07F1AB -143: 0D72CF6D0351BAE24D684238CF2F35EB78891828 -144: DAEB6FC65CC55220F2856E859B18E34B1AEECF8C -145: 8FCB3B9085D5FE4C3311D7B8251DE553C58F25BA -146: 37F740BC58504E705B9BA7D817963000EAE6786C -147: C69222050BA9A1DD7BA144A4B2A4385D0DCF0E8E -148: C9A7364BF1F15951585EA8E18A7DC7F34E7CF807 -149: FC6D567415981FC5D4198D899794313065A92551 -150: 6CAE5BCA89D61886E992C41E8BD2F8FF7E20BFEA -151: 806A1FDB3213323C1BB6F71EF59EB24A8E5C51BF -152: E672AFA75F19AF93124EEFEEBDD1BA7C6F3C4145 -153: 32AF925E77B58DD3BD0B5EB7F1A01584ABA6C5F7 -154: 8F2454474E0168717AC71327A5D478C4A629D7BA -155: 690C8FE73AF60FA9EFB53EA7DF43BE8FE07459E6 -156: F6D81BE22841D8CA69662342AE1D4A9A7F6F2277 -157: BC37FF42B2636850455A360F54E8658FFC6CAF1B -158: 7E6652237F861B6163B488D7FBFD0BC62A103582 -159: 94E6827AF3EE1E51C1F0B9F1A5235FB8FB70E96A -160: 52305B52403FD43054EA48937FFFA73BD2645E85 -161: 6E76DD51661F45C77A23C1C779D461AAB7A7C22F -162: 61849C549D3D38DBA2BF7E98C412F9C9ACD513B1 -163: 39813928E21F4DAF72E3285544A318ECF98D813C -164: 9C94A2F324147F03ADA5EACBFB802644D7EDFA65 -165: 8A2C08E547BF37BAA4AF6B6A30922979DDBB9766 -166: A8A876D38284AB64396DE23F1237FD34C2FD4A63 -167: 078C9EF520D26927309642117136DE00CB00992A -168: C44F0EF88C20FDB32AAFA6B0294A2CCCEAF8612B -169: 064DE4C0318AA79BC00F9CB22BD6A2E7DA535B9C -170: 8931F72588D1E6614832236EADC2997A5691EFAF -171: E9902550836A48950BDF5A63E37F117FD45B3C32 -172: 96D97FC0F694249A747FE88C9439FF26BC0CB83F -173: 2E204242469BF511FEE24C5B8A5B052C9857ABD2 -174: 96F4755AE3CC7D6387368E9367B1E174475F5ED9 -175: 26DCE87C191AFD557869175DDDF850B4035016E7 -176: A0D9CE9E4D5B55C45AFDFFC703A031BE9BB29ACF -177: 09BDF1C2FFE11FFE1D4E03FE5D808FE874743279 -178: ABBAEF9016CCC804A4FCD0DFFE1025793185F864 -179: E6B721A78CB4B9E25D100738D8202C317C73CC15 -180: 5B0E055B51EEB39B67B45E1A3E2B1475DBD22729 -181: F5CF64788C5FFDC9AEB83AFE55E1C470DFA601C6 -182: CB06E8743280ACAF9E55AD5541AACDFE3EB1BFA3 -183: CCCAFB4941602D4790A0A6ECCE6D0069F02030A8 -184: E36A5D027AB9E9DB157EFCFBCC8F17712245CFDA -185: E416E2CE9DD29D2188F03E4B2073E9DADE25D215 -186: F6235F265CC28B1BED62469D316A6109C133FE5E -187: FC70536DE716C655ED333451B9C5416F4EED07C7 -188: 69AFF1A75E074106762CAFA28EBD52B6B5D90A49 -189: 9C48186EAC0FADDE94185045875702B7C9478AC8 -190: 12644FFE3C39EC3C9CCA3A661A13A1D7CBD34F9D -191: 6CE8BBCACC200E7A78843D479ED931D4BE1622E9 -192: 3807D7BA0B12F14510C36CD3DC867BEA4A24C5F3 -193: CC621CB0A8A4573C5330EC70C455270265E3CFD4 -194: 464AB86E899FCB9FB7101BF97448AFDA4C9919AE -195: 11E7B2A04E3C271068D6F15C7FE87D06D990D3D7 -196: 5EE7F04DF2B361C5328D191CFC037C1259DD2B1A -197: E3CBFFA5DACC1BCE117ADC4CCE95D15D9E0329E2 -198: 9D3D4521501FDB4B6007EFD7885164EE8872A579 -199: 3CBC27AFC4872BF7BC98CD354E7AD8996F947168 -200: B83A5733CE63F2DD8266EA8EC93333D7935142CF -201: 7E7E2058A18ABEDC54DC4EF8B9CD797FF95E6DCC -202: E6E0046460CFB3B1DA4CB9A19B6BB5F31F978E28 -203: 8EE11462985FE95EB711F7D941C816DDED7C95C6 -204: 5132D140BF66D8BCBC58B1DC34A972575DDB51AE -205: 3EB18CF69D5435CAA7BA4C7FD7EC3555E9B3E725 -206: B42B17372AC5B3036D8E067E693F73E935BD9D45 -207: 5DEE6C27BE536C94B2A9E9228F6AAA4C781C5588 -208: CEB13F3FA99D2D9892B0F704422318B77BBC5F85 -209: CD5053DFA04346625229D8CCC398E032D0D0628A -210: 2D824961BBA32C43FD507787BB0CF0FB55CE4D19 -211: BC2A382DE0B9C4A315428954F09B77ECA75DAA48 -212: 173FC391D4955EA415E52B3D0399CCE2D719F764 -213: 8B528FF527889A99E4B0A591324E62A2F3118214 -214: 5B715BAE5A69DA3FB9A83163BFB947606936F73A -215: 89D83102EBDCAAEF3543EA3834851DB22029C09D -216: EC8802D14CFA38FE98FE63E6B3F1BDB3E7D21553 -217: 936644C0577DC88B2859B6171A0FF1C0CAA69F09 -218: 52E58F4975ADF680F4EA8FF6035EFCD8B5872D22 -219: AE824F652DB88351BCE104D0F3B8078897D82D5D -220: EE6001EFC8EBEE26639414C4D89D50DCEFDC8D94 -221: D0AC69294328955D4A656E8A1948519225ECA936 -222: 5CA8C4943132208E1A4917C14916A9C7DB14146C -223: D5DA697B560D31914A52E540D46AB971B7AEB81C -224: 7965F11D207997CF686AB4C480AA510BC53F1CB7 -225: DEBCB67C707B013472844E54B19F0FE2599CE0C2 -226: D4D2813A7A8361D0FF6984C1A2D2714B5DC13C7D -227: A5F5DB114ACBDA81E269B5BCCA6FA1CDAF60A636 -228: 75E5F2A2E56586AD611D86D619FF01CC1DBEA46E -229: 5AA68D13040B18872E8E96DF8DC779C9C88BC8D8 -230: B0A2F03F4DE93A00C520658B58BC41233109DF52 -231: 6F386F4D127D2FA1F2F4A8ED3E8A41509DF84CA1 -232: 8A9B7BA28D741469F2AC8B4AA8580991BBC5BBE3 -233: 608B8724F4A5024DC2CFF7A9A52F455B45CA5679 -234: 664C7DCAB4DC789844F04DB2CACAA1868E59B8B1 -235: FA506330D1337AA6FF8FF0BA22FCE87CD6389253 -236: 03DF08E3C2DA86552577A64FBC8E8497B77D9784 -237: 27C35B1CEB3F40EA76230702E78A52E7C7F34EA1 -238: 9DD6A68BEDB58B9E88B89638E98543FF118836A5 -239: 86347CD4FE48B0E6059E8A6A0EC8DED0A9AF85B4 -240: 1EA41C7B2FA4D908F5337D1FA5E1E8CB3B21C8BA -241: D57129319BD0C4F30221A64305512FFB239A7AB2 -242: A9343153196BA3E98E639EECF62D5795613E50B9 -243: 11F7D62D79F0C06A6D016F36B15173D6A1C25F19 -244: 98774533C0C6CDFE0CA3147BB624D65F2A61107D -245: 873D52BEA652DDC833F271295511BFB164912BFF -246: E6039C14618A04E095F517A38BAF1C205F7ED2E5 -247: 3642188C11E50C54AF7F975322631EE43AFAE0B2 -248: 9C8B66B38DB900EFF221D1848E3104D134D85476 -249: 2DA1BFF1134CC8B6A690B1070F7B159940550470 -250: 4513CC83DC564FC1174B83DEB513BF5DF045560D -251: 65AFDA952D796653E1674F877D44AC22C3A0E10A -252: C49BE08EB9F989F69F05152EDD2AFC2CDDF3DEA3 -253: B1A310B7CE162B481B9A275CBA17A7B57E8B6672 -254: 4B8F017B6C1AAB7BA3466B2C6EE28DEE9DC3978F -255: DB5A3CE0593548C3931B518DA2F02C0550694841 -256: 2433AF65183F411941345962733A8860DF650139 - -Hash: blake2b-256 - 0: 0E5751C026E543B2E8AB2EB06099DAA1D1E5DF47778F7787FAAB45CDF12FE3A8 - 1: 03170A2E7597B7B7E3D84C05391D139A62B157E78786D8C082F29DCF4C111314 - 2: 01CF79DA4945C370C68B265EF70641AAA65EAA8F5953E3900D97724C2C5AA095 - 3: 3D8C3D594928271F44AAD7A04B177154806867BCF918E1549C0BC16F9DA2B09B - 4: E1EAE5A8ADAE652EC9AF9677346A9D60ECED61E3A0A69BFACF518DB31F86E36B - 5: 663694AC6520BDCE7CAAB1CF3929FFE78CB2FEA67A3DFC8559753A9F512A0C85 - 6: 274327D0E2A207844988FAC0B39E071422E3F621913D69A5CFEF23B38601A56F - 7: 9DF14B7248764A869197C35E392D2A6D6FDC5B79D597297920FD3F1491B442D2 - 8: 77065D25B622A8251094D869EDF6B4E9BA0708A8DB1F239CB68E4EEB45851621 - 9: 8660231B62CE1D61FC8BE93BD6ACDB43FF61A7AB4CC9494F0CC803362360B07B - 10: 8B57A796A5D07CB04CC1614DFC2ACB3F73EDC712D7F433619CA3BBE66BB15F49 - 11: CC932BEE351BE391849C87925F2E00A83051419DC310B288D4304D4ADEA3D0E0 - 12: 99BD72C73BEA193F7040AC279BD656CDEC7FD35E097A657B6C03B4FA967223ED - 13: 695E93B723E0A08E8DD8DD4656389363519564DAF4CDE5FE95A6A0CA71D3705E - 14: 4CCE7128E4F659BA41EE163C45280D468163ADC8C76C4937A0BBFA0CF3BDEAE7 - 15: 929CEC40E9E746E771C6AD05CFCF37641254EF5E802FA71A02F8982F525F2B00 - 16: C7CB5D1A1A214F1D833A21FE6C7B2420E417C2F220784CBE90072975131BC367 - 17: CED0CD609F3C8FF85B9CEC93BBA556DBE3CAA996AC5BEB629D4512473D6B31AE - 18: 584C9CB4DA3BE635D86E803C9EEBCCFD27FBED4AAE27B0207CE3C934A0043AA4 - 19: 9B508680D1F75D5F1E5306FBFAF7E88621CEBF39F7F5CBF9E2DBB7EBB88504D4 - 20: 5D597F201EAD11DAA0687185C579EFD702E288D5BD72B6B21238A4ECB52D288A - 21: 85B8AFD95165D04681AB948F2F0545C47A8D11D9D1866CB7ECC88BC31A634891 - 22: 93C541C87FB52D506B1B262E49ED71689A15B745E8F3E003893C8C59CFC669FE - 23: 395D6A5E3B41B6151411B9B22F07FCBAE6C7C30DF59C10CA2DFCFE333AC8E3FB - 24: 8D71AEB3137041D31ED42466EA5FDCA2EC7A35C7701D142CCB813F8C614CECA2 - 25: 3B0B9B4027203DAEB62F4FF868AC6CDD78A5CBBF7664725421A613794702F4F4 - 26: 7384C8812F6803D8649BED21A3ACBBF36239BBD17274D249369DD65E6329FD84 - 27: 3890962F7D604FE0FCADE7D8FC03C7E6285DA2035BAC5A9362C1D68A353D5350 - 28: 9DC0B41D6A6A6C194D04336EB383AC7F4EA537700D5926346DFB1379E9453460 - 29: BD78E1C368D70B968E194DCA2C6FBDA605A67D5E52824289E058C93EEE073EF5 - 30: 4CC3E428D63DC132471D3135D406F8D6E30D2480D571BFFBD64957BBB090F582 - 31: 9ADF65B53153B1CAEC84CD717E00E01C2000D0569704CE38D065180ADEE5D964 - 32: CB2F5160FC1F7E05A55EF49D340B48DA2E5A78099D53393351CD579DD42503D6 - 33: B7634FE13C7ACA3914EE896E22CFABC9DA5B4F13E72A2CCBECB6D44BBDA95BCC - 34: 9BADDDEBF24552CB1F66D32990476594E5249A729254F7B5C840728A42749A45 - 35: 13891B823D3A2CFE0D1A5E60FE89D8C091524F994CDC3241C4DA19C4BB3C2C6B - 36: C1B7EB8D130D705C5FA9EE8061076A3151F2E36E42D9C9289D85065B9AB343DD - 37: EE6A288C4FCAE34572FC6DBA3E0B7D698BEF65DCC63BF28EBD74207A2065718A - 38: 1B5AD5F31E4061F423EE11E3DE88FEF05DFED9393C268FD360D05FE4465FE40A - 39: 87C40636D0EE94687FDF020E3D165F4E45F21D62FA04AA2B9103A8187DA6E64A - 40: 70A3082DFC7582B9D252939A474338DB1F94A6DCC7724709377797D17FF51AC5 - 41: 109036D1DECE657AC6471F7F7ED33846986FDCB9DAE8A73EA0881607E5E45F13 - 42: DEDA4F3E98E58392ADAEE3C2E7B91D172551C50945A8AE9E9E1AD10C2AE510A8 - 43: 2A82CABBBB09956D212D182CFAF7CDE2F55FA33F96E3A1AB19FCCFDB668CE2F2 - 44: 4A21B38C69F755C016EBB4A66EB76B4F9D4087A02FC8C3C257C1183EFEBDA824 - 45: D3ECAA4853A092755C3692CAC3FEA5D9CCFACA2D32B59CCAE151705333359E79 - 46: 0AB5250248686AFE6ECA3F3ED89E061C0B3AE2A13454B907BBDB643A72B25A66 - 47: 2FB57AB5FC0927E8301B6933325530E90FA7A94EAEA95BAD7C3F2F1052032900 - 48: 48DE881E6C1DC35253D9C8D56E773743640F097BB7274B80EC090F1B33D1DC2E - 49: 71745158A70425E25A8446122DDA82FCFEB6BFCB593B25D79C539C6B989C526D - 50: 45D3D95F04F304BE5A61EF38357BD01E61F9BB7F8C9979458D846D9899436167 - 51: D5AFEBAD633B7D595E6C8482D8C9A429091F58ACBD84725ADBAC12E8BE80ADA9 - 52: 06BBB3B17EA95E7E00AC21B8632F84615F11456FABCDA9D99CBF079E3134CFE5 - 53: 02B8E881B5F78B451995F07116AF3549066CBCE498497F546A9772981779D908 - 54: 370C5EFE99822C30460A123467E8F151F012065BA3639BC0407ED3B3609E5D56 - 55: ACE7DB9E8F298E823B7B265BBCD004577E0029256C48684B2D7A7CDFCBFF5E47 - 56: A6C1D35F74218E57B4DBD4ED467B41981208666738FFA0D9DC53D3DE96BE702A - 57: 25E44457F063AE4EA799502C38D66EEEFB46F520B4FC9A298DF9826C9D62EEA9 - 58: 1B35B64CF659D6D7D0CA933C9A52FB0E67FBA76A304FADB7C47DD8FF6B6FF0FA - 59: A72DE68FF63BBE9CCFACCFA6859AF660BB413F9E5D0200106100919C10301EF8 - 60: CFE37AB9C02BF84AFA7A734A10317150479B791A27EFC374DD669F4EF67A801D - 61: A55A2C06F3DB74C95B33D1E962DA18772C3601EB13FE0B86A78667B2B9F9DF86 - 62: 1B8A9195724AC01AD7DA4A76C2545D2F3DC223A0242537050D7395F588748079 - 63: 29E41A64FBDD2FD27612228623C0702222BF367451E7324287F181CB3DCF7237 - 64: 10D8E6D534B00939843FE9DCC4DAE48CDF008F6B8B2B82B156F5404D874887F5 - 65: 84C04AB082C8AE24206561F77397704B627892089A05887A2A1996472BCFE15D - 66: 2B684BABA4A7245E38C3263D85B5524A51BAA8CA18444AF1B5958596BC30D424 - 67: 1D59FA9501213440975A0B27E4B52EEA7274F8794EC35B8EE4824F7B00897ED7 - 68: 60669608711B9DF3715B631B474D5206179A81D054EF5494612899728B55E103 - 69: 46060CB9DC6BE177BAFE5425C4F84F9143B71CFC75DD958E15FF7A26CC92859B - 70: E7F909C8E018BC36B59A8E7848D16C05D6BDB0EBB91FB9BAF54CC328192CC362 - 71: 7A9F75439C68869A6595EB63C61DB2BC213D3EF067EC0CB3F25E02E554FCE2A9 - 72: ADB39B3E53A791DFD32ECA83191EB82FDEF4321AC504539B257C3376DA240ACA - 73: 240CA19B3671DCC5EF174331FB0DD24B845DFCD01B0FBE52FA72A29BCAEF1373 - 74: EBAE0805FD52D3E9F5F29AEB33B6BE8CAB0F28E668990D3CB95444D9EF90B932 - 75: EA7C3C052928F0FA3B8D86B19C87DEE905E8A4B26A0A23B3C8E8DC7255EA82D6 - 76: 4AD32C1F2D18C8B7DC29D1526D7C751B89B86882FB12AA3CC9C6EDDB7991D266 - 77: C61F81C3E6B899D0501B05DF1DE32099A7B0E878689DC2A3FD5583DE90A74164 - 78: 068A8A0B96076A2773A8E00E00E57EEF4FB26886B521285A6C747130850792D7 - 79: EFAB0151162523B18147CBA89679BDAB2D9B670F5AE222A34C360C094AF1D441 - 80: 066DE1009DACA2B8390A9DC734BCE547AC4E3CC4531645BB8B9CBC0070941D88 - 81: 9FBB33B95E79C5C1683AB09A6ABFF6612FFFB4458543DC8BBC7723A6DC2BF2ED - 82: 88FEA89237618CFC0270CBCD08E7FFDAA8933607C0DBCCB8DD075B84FBA83B11 - 83: B1960BEAA4FED01453679C7D6CF78D25442BDF92AE51BE479DAB18E1B2B922D3 - 84: A7D6821A97BC57CF6B5E25953C689439BEDA79364C903A3E64B6671DC9ECEB2F - 85: 90CA93ECD3E0E7C839E4FC0F2E4748954A89B2C7338E55FC18A53CCD08ABED2E - 86: 58FE5F45B9915A5B177F4256B51CE5781662352A2DD620A946B8755213FBD61F - 87: D109C8EC77E2253B5E7C761F59B184815E46B06CC5132A92511A93DEAD6315C2 - 88: FD9664ECB814785C8474188706E6AB0952925F9B9D8E351665CED12E84D92FAD - 89: 81342700C48F41EC5B54180D560E73E5AD6782717B2D3320B42280BE11F0873E - 90: 523CF9A356076FE8C3538BDD752BC43712C7D28F29499AAAE7812F1E4167840E - 91: 9706D70E28A9E99DB15974B1C01635868A62C6567EB40903ADAE58D417B882F2 - 92: 2216F01255FF24422E18D906C64506924940451E09D4EC17E4DBC8EA6D14EF59 - 93: 64AD22E77FC9F8A03AD6E06A067ADD9F0E0360D4533014FA286CCDF40DCEB231 - 94: 9908418A2BB564AB9607D2F863B841DD4FE47EE370DDE05A9368E400F7F9904B - 95: 981A7989084E74F6D5FD8870321E860991729EED88E60D85AB5FDAA769BE6FD2 - 96: 6528EA458EFD23391E968E0DD3A40202AC94E3854D1A4642CBBE0D13A15CB849 - 97: 767FDCD43CF16CBF980FD560DFC55F67BE20510F9A0C8FCD5C749DA8EF23FD7B - 98: 90AFC4E366BCEE748591D93BA9F7C2E05A1FDA261B58D094F8F0450C8A31FFB8 - 99: 660F9F5D430BF89F5946FD4649AD41F806937641C808A80DA70660F53179A941 -100: 5AC86383DEC1DB602FDBC2C978C3FE1BF4328FEA1E1B495B68BE2C3B67BA033B -101: 7C15CDF3705457EB6B8EDD79FB75BF568692CCB778F85FA2E1D462F48EE55C4F -102: A8DF989766FC245EDBB4B7268AFB7380E4EA3F7123802B72AE2ADB938211C9F9 -103: 707AA875C6162027AC2829894C0BE750F5EE8FE8A64465080025F708DC200F0E -104: 6EFD41538FEC50459B6C2583ADE5754C86617580EEF3071D38723AAF743F93C7 -105: 5C22D6A56A4FBDB85AA70994B4E118224BB6DB2AFD017A98C2B992CE26EA8925 -106: A4A9739A1C83135BAB3334990B470164ED81F633D7FE79722B3AC6E65DADD38E -107: F1AC1AD3348EA6C949FDE09CBEE706EA0AECF3A93FC51A8A7E2BDB8CD7400B01 -108: 492D9EAE92F27ECCE118D3FD8DF63158CF709ED5069502263B8BE1C105196EA3 -109: 8691C32810F3220C0DF76816AF0A73B3FADE2594CBCC711B855E2CD81DBDEC95 -110: CAB341F7059D974CBC620BC423B02F58B5E1A899F416B0858AE1A736D4681162 -111: E08B3D16F0A3B663F319DA999DB897488D1677048A38FA7B4F1F783E4F1974E6 -112: D5587E0B33166A320DD69417ADB01CB1129AFF5506A2F655574CF2E264636BDB -113: 5A69194C22AF2B7040A8488738F96C901AE215965D611A572932464261539FC8 -114: D8E7D58CD37ACAD505940843A8BB046971C43E4D0593C6BB946B07926644F78F -115: 46B07CC026B633E6245661813D5ACA2BCC295D0B8AB01F27F517B4F2823D0B3E -116: FC169B3E5480E72057D828702F9DA4F08D141A178EB8ADEF03CA0708C1A10DF7 -117: AE3E241C1C394190FBAC7FCCB3DF0D0BC317C6E1A15993330E9B648C80264066 -118: F430AEEF864823D8C8B448F2D25452EA3ED7ABE2966ADC8C42636B69D0A1BAD9 -119: B0D6518AFA4E3590746AA5FD1E58F7EC06A347981177737AD6631B22C53B6617 -120: 16684DDD272DFC18DD40C16A7F57CECCA70DF0A96C4A066B97646953E7C7691A -121: E8208DE0982F3D8E9AC258EB26EB3F130CED7331797B625D6B65BA4BA2064C9C -122: 8ECD4BDC226FB29DD486CD77B566723E44C77194BA7A000734736DBB76F61C7C -123: 153D5C1D5EDB08F51F6353B6B7BDD48A9BBA14068923B8991BE59346A4F932F7 -124: 60E555A694396B48273D2D778709C208C0757CD15697A43CF0C2115599C80E68 -125: 7A4A15B47029005972A6B814D5E7F2C86C616BD98E6A06BD95CBED2F47400C67 -126: 3DE5ADB8E3BF8DFABB41AFE53C58FAD23427A148755148011B5C12B88ABA3DC0 -127: F2FE67FF342E21B8F45E8F2E0BCD1D9243245D50EE6C78042E9C491388791C72 -128: C3582F71EBB2BE66FA5DD750F80BAAE97554F3B015663C8BE377CFCB2488C1D1 -129: F7F3C46BA2564FF4C4C162DA1F5B605F9F1C4AA6A20652A9F9A337C1A2F5B9C9 -130: D3B11B4CBE513EC7B6F4BB5FF0C411DE405A8641CF221493447A35927CA3AEA7 -131: 62323574C7CDAACA448FCBC7091AE4AF3E04DECB0D3C7C55636BAA0A99C88699 -132: 89B7D0203387E0332622CA84A879BDDBCFF155A213997560FC05428E79E06891 -133: BE5CCE3E365FBBB139F68A3DA3367E42AA8BD79B15F5252F7C08C3C8F0DCAB27 -134: 7AE7702BC025692F2EA5AB0C2EB6552C7975A57C5ACB93FF115D303F341A579C -135: F7C4EFACC0A4CB5836F170EA0BF5DC5CE36FE2D88E76A9F259EAAB71AEF0FF13 -136: 6A35D3DADC62DFE7819519F92181B2F8D38F5E0ED3D51A22CF8A133AB628D6F4 -137: BACECC2948C41BEB73C815CA7CEE6C7DBF2E4219190936EDAC5E4680500DD4D2 -138: 2DCE89F76F4F37472AE6374B0825A9CD61619A995C7F49733F62B606A7CE905A -139: 7B65E63A0D17D68C798B5D5631F17C35FAFF70DBE90006589CA89277DBEEAFC0 -140: 9477E374453099D2F8679E1D9B167B5F1C4E3CC66F32BDD9A3748A10876A27B3 -141: 448437ADAD41878E6529FCC2FAD9BBDB13697B6CBB2669FC8150D3AA7E0418B8 -142: CE4936743020825F508CA72C8355C88224A52C348A21567E65526FF8F82632FD -143: 556A195BF23CBA5C3193FBBE472F1CD5478EA4CAD2DC6D6A193102A2ABD0FAC4 -144: E15DC6238E2E58E9EA212B0D7ABFD700DA3AE5120D4D601341CE9E424A7C5828 -145: A22022450276C5018D51CD321E0E195A0ADD003E33ECAA97028D6974B5712187 -146: 044CABB79E57DA22B772249C332BFB43C5D1C9B683D1B2D2B75F4C5E6773A216 -147: 766E1167593896BDC8793FB7CCDB1D35DC430AAEAFE1E7A96ABA870416587E7E -148: E19D72CA8438477DB71E1BFA48924C4E75EE4F84C7AA9B0911521C60A2BA6440 -149: 512EE7AA89497A761F0798C29A1DD37D1D86F1C0870519A0AAB69D265DF118C0 -150: 80C199310A2AB7AF6A808F6D68843136C30E9228A766618632D4E1210EDF365C -151: 43FDFFD19C692B6EF87C103CAD9B80FB86919E6ECDCB73364D260DA29A5F28D3 -152: 1D1DC1909A6A8E552A0F8964601102D0EDC89F5A02D3ACCED71826BBC5CA37AF -153: FA77DAC317E8C531246E14265ED42A87ADE6FC3CE351652E6AD9290F8A157617 -154: 5BBC0F8B1A52732ED548E600865AE53360F0642A5674ECC7C6185F2CDEEB6601 -155: 89C5FCBAF3A61D6FA4FA33C3ECA8761EBAB3C3467ABA7D255394A0E70811EF3F -156: 9B3ECEC85FA5BA5E0F1542085FFF46BB2262163979879C9565294B2C56842A28 -157: 4E301B852D473B5D12271209BDC350B4EC615C99CB07BDC2B379F86679B465BB -158: B306FBBB65EEDBD07AEA67A6490DB9158A768D8223772D9414B124FE184098BA -159: DE9FC91112BA62A5B732D4B708D6CC27A4B77D88E8F9C50DB361C6F27295B46C -160: F3AAC26DC5197EA8DC068D6BFC9E3EE2217D908DF5115FD236BA31828637AB7A -161: 3A0126EC4DB7BD8C0C44E5197A84465C9C97C45F9D1FB8AB256EB5681DC25000 -162: 7B6B55E2623A8EB6D70FA0913012E3DB03CEA4A6DDC0F5B875673A225F95D86E -163: BE3ED738F221B53726D8A54AB7171189D77700BCA86A2C614F5FEFBCA37EB5B0 -164: C90BCB90AEA0AB6A2331ECC17F4E68507B544910F3561D20A41916D8ABB421DB -165: 72F18A50776C9EFBBB1D360342235BF28AB259648DBC08480390333314E02672 -166: 2F1C635728444B5189540CF99D92A77057AED5A8C6FD7DEADBBF9D86815CF5F9 -167: C372E87D3540FB30E7316AF85B65378384DE4664A04E51B30ADA778E3A226D85 -168: D244F4CE129EF1C84EB40D30DA099A2D65682E025E132B94F630FA3FDBDA05AF -169: 930A3E1F69EF7BCF3B9A81C1FEB9758F60F9086B331FC170E6FA20B2A5738540 -170: 84C3E0415A9D4DA972A4FD9EE82D63B00099A2620889BC274ECB8606912CF92F -171: 6D0D4CDE9886218E9240A0C956836EA3939B558B8DA0B309CA686F3C631F4942 -172: 86E476F2F8BACABC996360A0D6D57F0E045C9D3085FFE06D2305601C30D2340C -173: 6CA5FCF07D2D4B1449924C8C84AD2C2E432A1F923DD365D81D9FDE3C4985724F -174: 9A7E1A3B1E01F24FCE4D115EB98E2BB9EEF349CF0D40493B8AB33727C9A1CCC8 -175: 165509739C09EC3486143B0C7C009D5B588736AFF2813A2DBBFD733D5840EF98 -176: AD191A623337F01563824B493BD735BEE26833E9224D971A67B453D6E113D96A -177: F99E6D680BCBC6BB384290A5F966B18D4DB38951ABE695C6444C319058BB8904 -178: 20E7E81E12C9AD28B7D65D3917051C327031F334A2F82B1F746CBCD7DC41F87D -179: 14675C8FE5CBE514491F7093AAD58E9DCF8DD33AB22F3A8BCA1CA5130D5E5BEA -180: E105BE1CAF056CF599B91423DF3CC1FB2808E0C6A50DA68FC9DB5693D1E0A9DC -181: 8FCADE674361487F88D58330ACB439A4B3E717341615BA691370BECF4905E057 -182: 70251DCDF7C899BDDD4BC745597B998506C34BEBC5DE115D4FE85AF2AA420171 -183: D987826931A47B9FF871A0F2A8F10BBB659598DA57D8ABF81714B48A475A1356 -184: FEA31B338415F503DCB3708D68F377C4267E96345158E7B88D24EC8C232EF2B7 -185: 3F2084DEBFEAFA75D0C078BED7EDA160459A3792A440C3718FB5C14C118E3263 -186: E55583BD588FB053F040C541DB36603E4959A7421D6281FCA88454720DA34C17 -187: 0F433DE1BBCA62440BE5D1CEAEC8138A2154B374921D17E2D6493F85529A5EE2 -188: 39CC27D72466D2D63F70F28C59950A0665005B4BC8CFAAA662AEEAF34A19601F -189: E7A556EFDAC11394B6058496B06DAD0EB7315CAE4CBD509E77E496C85F202AA4 -190: B90CF1FD5DBEE8A9C18764962BFF431DC560E113073828D839E11929D7D602FF -191: 62B227EFFE8222299E757A065F1B64AB73FE6D2AAC5D762303DB956BC82B78CE -192: 7B8F54247422C43A6D36977260E195D06E1DBBA44C392B3FE76DCF4A96C433D5 -193: D1400C9E8C7758B19E29C38E356EBC7ABE8C0887741B845426821C7F74EBD35E -194: 9C557316EBD1E9CDE622271E48F654553067C08D58986190BD3108D8BF54F130 -195: F005478FB35B7A389377B35FB6193AAB0E9F3C4138127D0905E488A3E5ED1BD6 -196: F62114D69C3BFA8493061F44DF01566E3A932E83B050B94ECA7A1F7F189D6471 -197: FD915AE6A50C06BA3917BB6D001A4B84C2FF8A906813BA78E80B043A91E7D1D6 -198: 2176A39525E6A57CEED2F28EDA5179172EC4F5A15BE41B6CECE8AB140FF1194C -199: BB831D2653AF40B4E8A1048309C1F058D21334AA20C78DC63B8EB74A56FBDE3C -200: 63C3D97A9F8894D5E043A707B0FEE7F7EC4C049A23BBF1079DF20B4165F9E22D -201: 3E53214E700694863284E7DC8DEC3B98C1EAF97ADD0C1431E3BD321D6742A586 -202: CB4E69B8ADACDCB20DD2D79655117DE489030ECC86C210A268B9985126CA9DF3 -203: 33EB4A42F46198EB7B52F8FD556FEE08430872D3AD16FC3FCA466A2D63CC4932 -204: 4FB1C07CD6E6ED8DBFAC72210F3FF9707293DAD1F8A4AA19F0AC8FF6C80F3CE9 -205: 22349AA35ACBCFFA6C84AB0E0231199D8353ADDE248CA1FF91010234886C94DE -206: 4DDF8CB3D4E80C9971A9AB171F9BC29FA4FD23ECEED01E3BC297892DE389D6F7 -207: 69BE23136E4AF5F52BB333DEB3F32F76610B9FD9DAC9EDE75B2EF0491BF218AB -208: 0B5CE2869EBBBC91BCC4D2E9560BCC21F4DA20FFFC96CD4EEC422B795641C808 -209: 82C17CE6066F792DF2DCE06EACD03AB4D202185A0A531E4AF9A1A2D7B2D43DEF -210: 97B1B2E7E7AA6A9D1821EE2AD6C8062AF397072EB9A8547C75817D0F0AD1659E -211: 5AA4D29AF9903050D5D329D4D7F3A657CCD038543DA764ED931560F799690A50 -212: C78B17FF5EA603A809668BC06DBD99B78561B37FF615F6F5E5B86165A442EC2C -213: 2D1F5FB13901A205B158C5DC01BF54A5BFA9914C6B19AB66F501DA64975E3A4D -214: EF7D3F61C537CAC2A217CC214CD9D3E80F4ADAAC8431768F9DB88A6571D3A57D -215: B23A6EB1184E297B5E9EC2E3AEEAEC3C8DE411DC614F2979DE285CE4D3802E18 -216: 6598F5924005CD92E779A5525636FB061A1CFE4E7AFE97D468EB3106817D6C7A -217: F0AEC1C2872DFF14F3592C5F7E83C0DC4D299F94A7CFB247D0A4B95B9B0FC077 -218: 709DA24C1CA042C055A3CFF57280D72F2B50094BBF029D9AED1DCCA3288022C8 -219: AFB0ABB463999CC9AB124C95993D62E839BF7409D91D1C377912A895523C3125 -220: 049EB53D4BC939E817C9572A5F0DEF95E4E38B4614969D866E738E3AE6E24936 -221: 1F9DF26FB5219482437297326737C0558EB557DA4EB6374805DD9A30F842AAE4 -222: 11151481E2199BE550F9AE696CBD9DDC9BE9686DBC77B619C005D0FB5AEF9B89 -223: 0767C2DE1353F58B416E3FA492173C9C39792DE46A34C6153D5878BA01E5F07D -224: 46D743927EC8AD5E403C9E20405200481961E7335E90C4EA9C5AD35B77F3681C -225: D5FFD30325257614674DE0B40F7B2DED3A287F48AE229B02C91DD2BE28404171 -226: C36F10F2463B839F4BBE7130C8F3ABF29A56608BDF767199FACCADECC8245631 -227: 4265605E9D5B02FC438C15823BDD01CBCEC073D57AD7A699D0126312FDBE4322 -228: 829F989B205831D3C5C002EBF8CEA1B5FBA3DAF966539E3B421B6C2C768F7554 -229: 406A227D2D1767E0CF417D6BF7CA58A262C79460F421B9C155513714187D10D2 -230: ADF7D0028E41121E47AEF77DCA9DE82FEF7FE4F4C82F2D6DF253ADB4E756F2EC -231: B9A11305F92002DE551314DE53739B1C7E31C257149AEE21F3A5BA4AF068215D -232: 49F9ABBE9007E85091827B49256730F552E4A2170A7B6F9CC461483BD8AE0D52 -233: 98EBCE2D0B548D9FB99FBD63D842C119F2CE671317CD080EE036FA69457FCCDA -234: 779042D9184C626289868DC73662E71F413C1DF4FECD2F08B0EDF40BD8D520F4 -235: F8AD01320E4BBAB09282A97511598384089A447F9A6A8FA298B65A82F1731806 -236: 1D799E024FD1627CC0395C68BEC456631153BFFAEB625CDA58411B9CBE137B34 -237: A9BA7072400DAC24052EF744CA60C8273D743AF357C851A7016CAFD599225672 -238: B02147BF83730CC51219F660FE93C63A7463C765395B6721BB842E3EF230E6F5 -239: B642374D57AFA89053DCB7F6E1E72680FB96E3F28ADAAF5AED89AB4CFC78214A -240: 546B4BE370BA614A1761FE8CEF8C023D6A7F968981E23A1E8E1168B25CCE2EFA -241: 72DAB9724F6E174D48E6B8CAF489747995D649828A1B1D7A6E8527D9A01523A4 -242: 30B611734127B847BED5C68A867BCDED79B2B9DA0A358DBE15C4DD578F81E6C0 -243: 986317B1D1AFD4692DD533A712718196D412F46A6F3166F417EF01306AB695DD -244: DB6329F783ADF7CF5A10E47369FE03C95BCF523558F3AEDF18B51A355A252517 -245: 54BB60A43C1E045644420916BAC42CC72F86649FE8EFEEC866CD8E8128A88DEF -246: 802875948F79EEFB707094E323A0FAA2D6D88949A08C044ED3757174492BD2EB -247: FFC9E261842E1AFDAED9F364F125301F20AC8FB0EEA556DB975211C7DB281DAA -248: EDFE0AA71067C62E894A516A72DD4BEF8C3917E46EB22D39626EA826B90804E9 -249: 98832102B93BAB4F82EE872D1DC96D2651CCC9E908C3CF25A56B59CCE20319DF -250: 1248D2D1736F1C125C6928BF893F581EA25BE6E6E3D3C46081C557DE591D6C6C -251: 7A01651D8FFA44F6695270C73066CA9D61733AE3C181E3477D11E7C9563594A3 -252: CED595397CFD128AADBF451002457FF5B0FC2AC3993CABD47F0FC3DDBC6D0F32 -253: 8797DB8DD8DDD1ECBEE1F1D71AED5D41ADCA8345277A7BC0B12DF75BB4536722 -254: 369B09E04BE27275DF75C180D7283C083162F35456152F0B16AE680DDA5195BC -255: 1D0850EE9BCA0ABC9601E9DEABE1418FEDEC2FB6AC4150BD5302D2430F9BE943 -256: 39A7EB9FEDC19AABC83425C6755DD90E6F9D0C804964A1F4AAEEA3B9FB599835 - -Hash: blake2b-384 - 0: B32811423377F52D7862286EE1A72EE540524380FDA1724A6F25D7978C6FD3244A6CAF0498812673C5E05EF583825100 - 1: CC01088536F784F0BB769E41C4957B6D0CDE1FCC8CF1D91FC477D4DD6E3FBFCD43D1698D146F348B2C36A339682BEC3F - 2: 7AA1310D573ABED36C22FF582DD50F1DCBECE6617A402BACCBAA2B71D6FE1379C317FF80C15216D6DA64186ACDF89EB3 - 3: DACC5FDE6F28330BE86BCB13BE11032485C6FD2EB8DBE9EB9FA217F4583FF9A564BB354DD768A672BDF46A2E1465D515 - 4: AD4955474387FBD0FBD0384A8569FDC80DC55FD99B5AB37718C38D471DE31798DF9D287473CF2BF7965E025C97743EC3 - 5: 3B1DB9196F040256579DAB7044E829FF12D49C0062F65A99307286A03A43E08962CC65B431EDEAFDECE0FAC3F637081D - 6: 5446F0F8400A98B847C7C99D303A948220E62272C33F25A2C55DFB50C8FF04586F9834E1F2E7CBFC928473711088E725 - 7: 7917C2E9694CA3A8527B3848FAB9D93F54FE77EC5246398F49FB970ECD2FA3E7639B9D0DC1E93CF9A2A31752F26F734B - 8: 8EDA71FCD7AFA16D333D5897026E2628E6C272E78ACAF021A3FAB244AEE81F8A6DBE68ADF9B649C90536D621067A01BC - 9: 68D136924ADEA6DE85BD5C010277B0B62EFB7D1351EE20273946156ED9D5EDCAAA284C1FD25CE1B0BAC547F126454336 - 10: 57EBE1BEA284B150F9E15F8D58CB2606FA37AEA4BF96668304B896A7CC9CB3F5EB02DAB3058E1A26E94E59799C227984 - 11: 516BBE48CF3F244CE0A2EAFF66D09A7162A5E338AD3151A527940E27E66A159838A99962AB85A9164C2A035794B57D1D - 12: C301D5B04393D60AE2DFA5E5985EC36C37B1E58AED5753246DD8E7FC36212E0183558CCB66D3CB97DC6E6FEB9BC5CFB7 - 13: 1521E9AE85DD32E9A903A72DCF1C969173648DEB84C991E3C4914649801286BDCE85CF59E7BF15D53D84E832B0E9A1FD - 14: D52238289F07E2864591953DD6AA4657C60335BE4AFDD3D9D65A3C5BED85165EAF59EF577196770B27533B3569BD2BB4 - 15: 0558EE75B48030065F6F53D1770521BAB938CEDF8EDEA3DA43D8670836E674DF97B0F01A65EB2151D1BF7341CE1E1018 - 16: 7DBFE0CF53262764CA067721002A7A16A10D6CB22F6DC554591EE8E008E1BD26CFCD125DE7BE3EF5A80FE5E5A7C9EA34 - 17: 971E429E3E7EC82B2DFAB160EE2607CC57F6839412DDE8E23DBB744A126B1EAE250021E800B9F40812B7EF44D82A8FC5 - 18: A11C06EFB06D8A01153B06E9827A7F209A6202864AE18AB984E89E98E77FF32C3CCF5F5D40FA1CC09336E40303D05EFF - 19: BF3BF737BDDB8FA7D4055177D8F06AD9228C6BD7AA2C8D0C2B3DA435F3C9D485486712EAC07CD456C16B0A03785A2610 - 20: 094B7F217646F1637A26076C749C40BD1DD57106501342C8DF8ECB30EFC44A6F8A6155FB77CEE476DC126E88BF1BA0EA - 21: 195AED3C477C98901175BFABAAB4834D559C3E93B6849B6C7006F2E44C73B30985C56BAB7415B4AB7F872913605C4993 - 22: 2029007DB07004086EC1DE9A61EB9597B8AD2A5273D28AB7B46A0E2337CFF1C66672F76E7330E3FBEF1A26C2A4541E65 - 23: E01514C4D1B44F784FF6FB4051F38197C2223AC510A80E01D13F701F6A0486780C72430FBD7C8DD4F8FC19C0D04D94AC - 24: E991FBFC45C40FFAA3AAB7C9884BAF823C03EA63A4A4CCC4FD5D6A6805BFEEF007E0460D221B65D28314010A75D0D930 - 25: 8B331E2E7EDA24D8DEA1CB4C1AB41FF75FD0C6506413DBA04E300EDA8324D56B8ABDAAF5F3D1E05515FB51145FE7F6F3 - 26: B7AECB3B1DD4E1EADADC97510A604FBF64C60C4068C44D7B33E74D065145DA6929EFDAD333A92EB98CB7DA20FCD39D38 - 27: ECA0856AA7F204653BE5EA42AAFC91306B3019C42E8581F52E76EFCF4D023BDCF57F73A8E5DC15A497B65FE1B139D5C0 - 28: 215C2D6D58DB2FA8FDFB1C2EA3692E9ACD68C6929F15DD751B1FE056E0F3792D46D0427BCD3AF72779E8EF304254C778 - 29: C22E73ADE37B480AB20F7EC31F1844E36E5C3064F4B60B4FF5715D8D84292348B5BF482CBBA3D09032B83A1377962374 - 30: 9E661F0789728B4A7118715C19FBD272C2C5C0BBB8F4543E81133888CC38B17554687753D193131B35319F1743CCEB9B - 31: E440945BCE0807DC2FE07018E086ED53751B9BC3C0052CD039CB48EE1A80A0FD72F38C90D9A7280C9082B9F52C8A039B - 32: 7DF0B7BE6C29A965D6C3A8056CC72BF36DD8849EB73FC1F23A3AA1902B869E0C8EE99663887EA76893E239C9E45988F7 - 33: 8116547B404D20AA0459B97AF4E75D44703EE8E41084F10080F68FC6FA76C38C1047B5E17CA388DED34B5A83C87043C0 - 34: F7D5B22F0A2409ABC271202B06CE4FCC70FA9C1D725A24CEABAFE241E9F6789668AAA797F414D560F479B9AF3156A265 - 35: D2C5E302EB59E8B2F532B37435557C6BAB3E87B3B768C22EC6EE867235D3AED81335C6A8DEAF009DCE362718EB4905B3 - 36: C07401041428648F80F11E0F5BC7572A0E25198A2AFA1F9F97B575E58ECB4CB6022A643665EF5E1820801D8C1B54A7C8 - 37: 5CA967220BCD51FE2243E456725856B1F3112EC7CDFDA93DA7CB1B1F6C672CAFEE4E17AF5B57790261D1385AE9783B6E - 38: 82378F12C4AC4EE4CF23F13E6DFFE15817183D4AA354C9A14FA352CAF7DDC114663E8185A25B76E21C8FE6B9E3486E3F - 39: AFFEE2FFE4287228EED3D9332FFDBD3CD807FB1BFAC1DDE4999E0A249D7D063B492D48ADD72CF4B906510BEA724458E9 - 40: 2C455A23E456EF7209A73DB89902BAF67DAC313147C337409FF5085423A571DBBC79AAD3C09BDDCF30CEBD4E2E975EE7 - 41: CAA00F63A96D68CA39B213ECAE9204861256CC0CF19ECB1048DA9213F3ACC56202C5D0C95544E8B70B655F610EE45721 - 42: C2B4602F2BBB0F9A35DA3C4510E430B9385B8198239E45F5E2FC3BD39C7B6D9AB8AEF8E7F30615C93CB811D3E0FAE6C6 - 43: 86C274D20B1D5E2CD36100711FDCAA8835185A899FB0A34CFF37279466329299A57EBB346A55009844B88B1CF788FEF6 - 44: 0C5F57B0D24D37F3CEB925156B11C6784BAAABE196774033010033D7E2495B157F9F238F774DF3FEC6F86117E2F3712F - 45: 49048770429D040EC90B9DBC11CCB2EDE463A5B263C12C3DC529B1E28B01398992051DE4AD9FE598CF8EC5F1589FA2E5 - 46: 2BBA965E13AD32B3832A2AD0DC5DADE3EB21DCB6A919E0CF18E08E6EC7CB5BDF1B87A0347AB8D4930FCA5E612003D439 - 47: A01DE48A297DA53FB1BBC9C43EFACB7F4FA47D95265A8211451F6D18B97D56CC19962ABED9D275034C0DA48ADDA002C7 - 48: AA8339E709CE63EC6597401E71F130D615B830D3ACD50A8F61ED68DF50CEAC4621DDAA12DD68267878CD4AB7A2BA6975 - 49: 5544A73DCDB9E814896E78793D6E149C407BD334CD802193FA8DC3459A4A776713F45C8DF3AD59B8F5005930AAACCB7B - 50: DB71BCF0B95791F47A586BE936FC88B538124904E39FA99E04BBD0E7A1456B614975ACFC05EFD5684D43ABC464390F5C - 51: 87AF4B918713FC85E73C10AB6304D5A4AC64CC96FA1B62A404A4AFDC56694038631794083117FCEF571175DBA4DDA404 - 52: B0B4DFE92CB69C0CB1264907B0843D588803B1CD9F024FEF2BA61AAA8AF0E60F584C754143FDE0E551B739DAD526BD2C - 53: 3F0E22A4790A955DBBE8C557B2299BFDD9D1A472DC9FA0E16AE573AE27C14D6BEDF6C3B368D8A3E99E394FBF1E0B09DE - 54: 3B08FF3536EC029B03D7664479F33B01DE1831623834A925433F002BDB071129B89109790E1E0DA2FE6D2F5D8C5FB749 - 55: 1A27A6C9A0C6F493D66E567061980FB0EB5819461C4976D5D30CC91B3C5DE1118E89CD2E00176322C42BFEBAC3508CA3 - 56: 40FE3F1E4F60AE955D7EBCE290DC3C867557650620F512EC42689D999F7FE6CF51459A361D688225D43903BF67197483 - 57: D7C98F147ACA01767A630CAE9F73A03C0E12870E79A715229E23EA6E98B8ED666D0B79B318E5F63E7869F07F52329242 - 58: 5D48009FA2A03966BC9AB3604B68E86F097F6E7B54B33446A52C11A9ABC447AB60781E8EB2F7706FBC1F9D75C18FF50F - 59: 2F6BD98F71F935EEB12216F11964171DE85A9BA01EF4770BBB1B9C1C27C51A50354FECB5F1C37C7E207D940355A1F099 - 60: 99DE86DE7A2973FE64726E216891F5EBBC64F2F6931F0E15082BF3EAC044C9BCEB2FABD3DC1CCCEDBC7F80313BE5B5F6 - 61: C148F35C0FB796AC801F5FBD4ACE22C52E86013E123A65F2946EBCB0BE7B020019AE4E3EDE83AF60628E076CBA4BC4FF - 62: EB059F7B0CE4C6A2BABDF8C8B0CD9E1E17AF300AA403CD35A6A98A5A73CCEEC80DFC80B6F76BECA4D634A4E0B996E1A8 - 63: 16BB371B2BCCA20F406442146AB47467ED37A24D1E51115C2ED5C10B31435BB9FB5CD4025156E428B5A57701EC5DBF3C - 64: 11C8E1A6AD99F75BD0B8DF1530549C6BF2E72D64E6703535AD06512417B0F335DFE07E63CCB8C5CF99D76EE1F653F609 - 65: 31466A2F0FF943F08D69924B1049181670949CECC738075F410A6EF41A8E25BD2A8DF14829701637ABA4C97199EFF213 - 66: A1390F24E088B0EFDCFB6B4E92F5086EDC10B6C217D629FE81A1C0A52481BF018341B183A48E1ABFD710FA1F61887E57 - 67: D00AFAECF9006508F47E6AD3D9E575EF5DFC358B0D2576AFA98C965943376910DC8BDC23CEB47D485B933BEF350AD788 - 68: D2AD61644DD08EBB11133FD86F973DD55DE4E67EA347B53E5A8A9091D7095F5F63C332673F291FA2CC0F9A924B60CB58 - 69: 6CEA68549CAD3A2729AF0F3D2E468FD95BAEFFBDB1BEDFFE5116A97938E49A6F1224B6F5090CC8288EDC176A8D925ABD - 70: 7A261025C8CD21B6FF423139C14DA4F880B56991F11C39BB9B21FDDE2072C4D572534ED9AE3F1E3FE4959E977E78BCB4 - 71: B3C46D3661B30BD2B66494B2DF909BD10D0E9FE4147DF4287EACDF3C2D88074E15E4284C9F9DEB326CA22E6AB35458E6 - 72: 09DCA1ADAE2FCF98AB4BCA7AFD2ABC68300E23FFA14345FE4057EE75E362E602EDB5A3F08055410ED5E93AD8B944DE38 - 73: 1FAEF87632ECCBA883117E6C1480B5042324071F509755CF6DA179987DB08E47F41C37B1097627750970EC6C72F7A02D - 74: D3135CCCE3CD1B90288DAB286F143E05BD02703DBDC4AF12335F23258B6399B80A8E12650A933D4262B419F973F4B72E - 75: 6B9709CF76D2C68D0EC2F8DD34CDC700356143A61A3BD0646F9BE30EFF9102F59A5D0ABC5B5306ED6701115C39FDB96E - 76: BA648F2BCD568F5D498D9505D2A0CD86B9A073C99AB85D9976E4844BDFE801FAD3AA22515A9FF08EB72FE16FAF4DC81D - 77: 433B7557735704CC1E47AAAF1C7C53141E5E2FF6420E3570181524724A09CE73BFE11EA2A7B059C7E18BEE7E5D928125 - 78: A3DE980310B14F269FEC07D5AD8D0F9CEAB17EDE99F97849F976877027FAA37DD0B492198467C0DE17649167FC80C9CC - 79: 363900E86CF859C978F1A7E860AB872BD9AFDBA445EDF044364313BC29BCCFF9C912D065E55288976B5804D0861D1708 - 80: 5DF4164BE6F6706D8A3A2FC157725565CABBD520B0B198CC25D3CFBCF2C5FC14D98EC46A226A61C72AA213284FE880FF - 81: DAF3B3602A2B6A0E918C78D72885FCD9B24377879A2E8CBA72DCE8BE3C36FF5DE39D01ADEB4D7DCA8773A3438EA415B3 - 82: 8F9751EA2DA27AA11FBCCB55960A5A5D648D34C81A36EDFC9123255A4529A018AB9230FD07551236422E1B53B06A8BE6 - 83: DA5E38532DB4AFBE5C38BDC272889FD8B18B249C9658C6806F8BE25743E89AFA06860C117E1DF6067CDE4E2AA5A359D2 - 84: E1B0A43B0F121293EBB439C828ABDCADBDAFED717796CD0A8107237158D1F55E77422212B7450CF230CDC49B78F55A09 - 85: E0415562EE8DBF78FA3A543D0BCF8823BF3240419ADB0339DBA53AEB565D861448879740051D2831DFB0791D5F537CB6 - 86: 2061E08844332CBEE5C5C81C8DB9FCFCBAA9D1B4FDC14FEA69BCB2D4B7CBA02D4D179EF0BAF4D12530584F9AA83EDBC6 - 87: 8EB1C337D49DB5ABF181CA2D1EB0D5A3B530BEA1720504C7ECBCF46FE1B0DFE5365EFD119C0BDAE6D92A1F3BFE62F4D8 - 88: 5389909A11359D68263875199B2D53BC2C473D44BD5ECCC562634DDAED80C6075A35BDA179AA3129EAEC1A11B87AF6A8 - 89: E4991FF9FEA81EA2C32583CB642941BDD7677B1680B63825F2873515C632BAAF313447BC291F03F5F493FDD66DBBC462 - 90: 8CAC77097F7412CE765BC20B900A8DA83BDD561E6F0BCAD987C677A428A42D1D289E0D8B2861135F33FD6AB3F593F4BF - 91: 38C9510779D5AE1F114D0C3C3015C9869923FFC39E38660048735E7ADC4BFC073FD90505754692C3FCCACF40BD5E61E2 - 92: 4B1D3D0763BB619F0E898E0DD6F06020BE5D1828A798277553D607F273C74498CE505F160F2961B995A1D4959C3D0A69 - 93: 8820CA3444593CA1896328D90A836B768A271410BAA29D1588D22EF68F2D0F647BD2637279F2C4469FE7DF2625EE1DA3 - 94: F5BE62D7CF77289C4D3D656BC1328ED6D32A43B2DC2A9F2615D7C8F97FF3EE28ABED0CA6EE02E9966AE16BD0337E25E6 - 95: CCD1AE814F18CE64E176D8895364C8B600CE901573079DBC7EEBAD25CA1FCC23B48E7E352BDDB625DF03B2168F097F20 - 96: 447502E039A85D13DAC5EC5D009B3D9607D6F0E37BB15A0AF7D1513D63D2DDDDDF4386F642D6D7B2B47DAFC8ACBB4297 - 97: EF3C7F9D484601A79908B61B8A58049F63A0FE6B33AF31706332C5C4D5003A93D2C4DE7BDEC5EDE6E9A9CF4362BD1CA8 - 98: BB7E3FD37861E3210AAAE39E2F2F3985B6143BB872BAD077D71E2545D2E9F95A898930BF6EA2C48F2411437D08AF93B1 - 99: ED83072604C544B7B8BA03E61D6F9EDE575FB35DB4261B7783773F3DB5B1944D6D9AD484582FC78A0F7505988B5F1A07 -100: 313B0350C45772FF6787F1E2831CAFC6C8D77162BE100819E5142F1F398BB0FB3A3123FBFF2C94927F7196386952067C -101: C746055CCDC870C9FD92D249E19641C35C4908EAF0158284562897B21255A84D9051D71E9F3C0C6B5B107D7F080A765B -102: 39D7DEF4679233C60A2F2AD6C5AB9EFB8741E330A533D15F912BAC27C61C6B26936D6B70FB8723B916FAA61CD0949306 -103: 32DA7CC15BE7214D99C928E817C13B87C23837D0F4A0949E8CCCDCF66AD9D66E7329ADEBF4F8322E4737A765E4E5B69A -104: D847BBB38306F215A96B2D991AE3ED8165BD9E25561DDC000582D968D54318D82F0FE0E331E933CF2BEB9D31DD3EA4A9 -105: CB186B1873DF28A7341697806DD13B3A79032BDC9DE6CFD5F8DABB380AA7C7CAE453BC6CC53FE0ADBB2A13861F9915AD -106: 03C82565471F18CE9EA9BC5C945179D1B05AC9D1B7D42213E4C6D331E98019F5429CD4C68449E20E17112628E35B449C -107: BEDBBB184452D605455FF4C247C349B589CE3BD2D9548CF7D70C33347BC3EC90656E3A4D8C9AFEFC42356240A4B396EF -108: B9227B25C189C98256B061A0EB3A9B95CB65A1EADA1CF7F99EFFEA0A3D13153CDD0FA6C5187C6EA3BC6358BEE389DA76 -109: F66BEA2EDF972A29C888BB2E213E30C3583F07D2FC4231A4FF39CA1B8AFE14C4F7702D6F24CB69CC119A5709AA32DCBD -110: F1D96469C28B5B74EB4451F775813DF3512C212B9B9B07A3215FCD3C98A392EDF752FF95D0FA8D991E82B5EB3C62219E -111: D443F41B6461562048765AE37FEB6C63683800C4C7AD7DC4C8D7D6B67A689F8435FBB2940506D6722A09C0F3E46D6C64 -112: 40790C95C391EB482BB315E6153838AB6622BB651EBFE979B09B7456EF021C811FB216027D063732C5B83F0AD639EBC3 -113: 55985DE48CFD269E07E5D2610D64FE61F14E874098E60B681C95393B7F2576A0842F086DA49CB392195CC1333166EB2A -114: AFBD441595F4AF79546D0F56B17CA57A3991ECDAC87A029E3A51FF4150856F19DC7D97DF9AF3E92A3E75ED5993D1F259 -115: B3D06CC9DFF506E46701E6E66B69CF0B47167E46407AA348522CD913CABC0DBF1E0CDE6AA1FD0FD986C65393272CCBCD -116: 0FFD81EAC822E16262F242DEFEAF1FBC864F7BAEB4C75DF2A6D6B88F72C8CF7314F8C57463D27B85D123C1F5E0ECBDB0 -117: 4F2717491FF76CEBD2F5F2387B16DAE119F584C8EF4C503CC4CA980B0C780F7EE8D74200EA147F0E2443D194293CD0B6 -118: 926BE35284BB3E56620FAB3224B5213E06FBAEC1D3C8642E8ED86066AE531E6B0547320CD8266CCB14E8595AC2AAE69B -119: EDDE7C594252AC8FF98A48E682D6290B0381C53835373F4F9F2BB5923DC020878D83F2FDF3B9412424D5C70EA1BF183F -120: 2460963A3BA372E93A397D0BAB1CF3E4141785818AAA7BF92AC3658E45B6B55D1C9D1705D46ABC69E0F2EBCEA48A0464 -121: F699225B801D19D3A7BB057B657A8BFD2D7E5AA8CB858EF05551319D4BE76D25865928CDC4C53464AA6D12785B870EA0 -122: E4CA222F516E44719D874BEF8622C600DDBC475F8C80D664329D79372AA070900D84912C885F1EAC370D13C28D12FB04 -123: BD05EF18A7914C1C7747568B9E5FD61F7B0384E0B43FE3DFDE6C01E38A503AC98F9F4D8150B2EB2DA889A3F4B10B256D -124: 6C701A9BE9FEA1EEA3B702A3183C35BCE6B890BC623E8FAF3CD086DFE563AA7879B4ABF639FED909307F03AE4E7D65A8 -125: E87693FE710A95FBE1B6DFF46B54AFC430D290B2C7FDBC0BF551C1E8F4F40B44B68CEED6A18B0D7C4A48648ED97FCA99 -126: B371595A7AF71BF1E8FD22BD950DDAB0FD642F5D3FED006A6E66D1E71E47867CC74A7018BE3FCA6829053454A52DF1F6 -127: 0C046DCE7C3ED50A4BE7ECA79FDEB9D821EBE28F5D82ACADAC3D7449E6892789313679018034A2CE6B42F006C02F19EE -128: A2C2ACF7CE4079C02B7F38E2EF33BFF531A31A7C7EFFE712C5348B4D616C0CBA9B152679317984EC632D0C70EB11EECE -129: A95DB6E5CCD191793AD20179BFD63E8C7AEDF0CC1084549F73127E3FCCC738B405AC2A93D692E76214320089121073E5 -130: 6ED4BDD216425D5E91458C254152ACBFE8F4751BE0045401C1CBE1E2979ACFAB8384E66816D1CDE56418A9FECBE76B3F -131: 18391E55459C665CC076D3152EE0CFAA5C498595298C4D82E2E160C7ACEA15D7FD749E1D5566A104E7F24344E0BC142E -132: 0C841025777221D8F7E1271E03687A380250B269236CF5535D5CBD77A480FCE6872E4885F62DDA17136C9AE05F07FAA4 -133: 0E6A87DDCA034B11F6D221F17F53052D85B22968ED7A2E2DFCD13DC1DE64C27639A1DDF29ABEBFDF02DFAAF687E3108F -134: 8CAB0302A4402B1E9CE08E4D87F6B9D82F17424C5DDA59A2670FC29DD8F504CC7B15474BA179DB20DCF3D3580EBAAFCB -135: 17BFC685EE89A404752DDCCD0BED6B9B0696C0F968A2D96749A2BEDE10BBF8E57F4B1AEDC9E8DE723FFCC22E3F309C81 -136: ADF0CC27BB9D359090D277C3A47A3C96E1F0C6598E9ABF460ED128BD39565AE464B39CD6A75DBCA75298181AF1356C94 -137: 02AF7C886E86140E74F6635431732ED6CF9FA4EA8D27174FDBAE9A4D92EB03383F0419B26508C556D6A0A1E0777EF38F -138: 806150B2F09CAAC8311C4E1BDBE6A1FDE29693AFE7DD49C9929A85E593F2184CC27C895633FAB658C7D20C6EE545B827 -139: D0A7B0CA39327EE0BD4AE02B870903A1400B7A8D28016834B4F0F4C49A5F62581D4D4A8FE658111B80E6A6C1F2C9B691 -140: DC19DAEC1D86ECD2D9FAE6A1BD4BFE3A7C4EDD941DEFD83A92AB50C2C48DF2B9911ABF2B91CFFA11BB839692BD80B2DA -141: ABB814006D0908D4BA2CFE11B589BDADD4A17CE1E799B55E44600A7B2A0225E6BF6AFAC61D8C7958060D1F28579BF129 -142: 63F83790ED5882A85BEA456CA446A2401644E3C9BFE3D4F8A54210DBD6BB807F60F9641AEEB994D4CC8A6090F8D58871 -143: 185FE5D0E6764C660BFDF8D581CDCE8F118232BA58CDC4BEE4C021FBA072C6D04250C8CE3DA4DE58FE43C8D0172B612C -144: 57D66CB0A11F02127FD13D435B6CB6195E30EA2562E92C88B9F5DAAC5EC3E86F738F05C9C949D66F04D4665F942EC991 -145: EAF6A0121B3B4BECB5EC1163FFCC4ACCE76330D4236427646767487E0B5F1DD938204B3F3848082313C2170B3FD7F06C -146: E6793995C6B7F03BDFEDB7C41BF75FA223030E33E47AE9FB75CDAAB46AB9E5A580E864301E94A10C87EFA08AF4CE0ACE -147: 616846974DD72FD90BC27DA07485D4E55BADFAAFDDF09E0CB48B7494280DC0CC20A524BD3BC60E28723F939F915B838B -148: ACEFB24F02371015638A8D2D1F8D0CEE4CC71959F328D7B443F61BE497E1AE5D934BC47B7C3611418862820F6F2CA27B -149: 2F3F1757EAFA15BCA9E5A463D68AA56EAF59BAD93542B89FE7C733F3991640595298CF0447A35A207388F0160BE3FE21 -150: 2604AEC3CC0CC8A5F3C51D4B7977341751D35EBC4157A4CC3A5915B65370DAC58E0F7C8A5E3517A12EAFF69FAE323CD0 -151: CCD7214BE7EEBF6B1B203675A6C2A77646469794DB7841511B88A6BB95570773B1F30D494CA56320A6591F55FE011F7E -152: FEAB9CBB082877BFA8D1215C098BD9131E9C22B8F4ED666D1571F467771EC03FE0BDE78D7E24EDC5C9F14B9488D24966 -153: 90948F9AE3B1C195005D81BCAC2F3F32629B1D512F922E4376456782BCB5D916AAC5BAC7AFBF6DF03974AEF73C48CA5B -154: 2FDE1A345A9874CDDD1C966413F518D3DB91AFCBF253EC5F6F90228C904977F65B24C1039055E6AC94A7111CE00C0EF3 -155: 285F4FE6AAE37FB6DE5318AC8F07E1CFD678C8EB42D408323989589CE4D50AB96684BF399FD5EE775B4EA583C6DC4BCF -156: AC29B1F850E3FBF0CBF88EB04A23DF73E966C2D9F10259AC87240B740B94814F42C1D9EC460C5353D4518ABF4FF72A3C -157: E56BDFE4DE330B91B58DD9AAD2CD203A74FA71CC2B7973F5A055390D99A498A7C71844EE711D2989C29A481A526482E0 -158: EF6A9215377AEC65A6382C6775F7A703E0C56665B3E71F877DF5B00BAAE6E0C5E963B2C29D7E57241A6EDDB338683CA8 -159: 2AADD60F700F29CF5F1739ACF5888CC137AC0D57FC113549D1153881287C0E598728D88E19CC37C4BE1BD9E1AA2B510F -160: 1407E4D4E7E572DB091E06E73D4F0D59D67A97B861716318CEBF80AED598F26CF1BBE0EC52918D3A78A434094939E2E7 -161: EA5733A41647AB8A1A717550B41FC53AB1CA49CC28DF772B229D94727E5CA98FB18663EB0EDA37F81FBA387A8A4F4BCB -162: 9915D517A86107E27B1F78AF6E7B0896E3D2E90C7A917CF16C9F68AD4F17DCC736F0F2D8CE5C7B634BF297B197D235C9 -163: 5D9E3D02EC4088C2F3D514FDFBE27A9DB53B0037CC3FFF615B4AFB3EEF279DD7A0B8882F0DF5E125F06302BE9A30C1C7 -164: 0627AA95EB148A7682118D502CAD7ABB8BD83E13008364F5E8B8732EC3E648C0D0B78B7B3B0E2E5A58103DBB7F56E4AF -165: 51BAFAFA927821102EE620D2DABFD4F9B18C365707569E161C9A7A33B3C433E16783C87DC2A949732683E951E538C3E4 -166: 08D9894DCD5C8FF0B4A8339A75FA95E9E88C68427CD8DBAD9297ABF02598BB6ED3FAF8F7B51470514B3BB9A6C74A0137 -167: 594B4CF5BE4B482A8F23F610F7E57493C708B269207B246E628516CA66D91C7965F9D830E1A245BA191113BB2E2D19BF -168: 02FDDB82B56E4550B8DE39C7013BA1B3B8E1EF0186A1EE899FEFEABB5B83BEF41C76CD276657E69FFBF131D78FEAD875 -169: E1420C71511116DE6BD3225DFDCF54D6242DE8E84DB032E698A5548F5311D306B6B3AE57417193EDFBBB9BAF516AD804 -170: 9616D9830ADC19D61EFAF62B3B0BDDCA2182A3F9A340BAD5E347A780716A73D2195C00C5BA4783C41006D2B43FAE98A3 -171: 1A5816F33CEB8F566AD383C47850387535E020A8D0B24DE45135ABF217599664E6E78A492ABD367A7B04A44CD1B8912C -172: 5547E5190F50DCAAFC3CED495AD238852EDAB167F092FDA5648EBE8A602F073849F925B3F76D4E5506FD671885B236FA -173: 5D6A6082AF10CDB8323202F11A79FAC522AD32BE9620F77C24C809970F1F80D7E5468BB11FDD63788C8FA46F553F9B23 -174: F9AF7AD6AA566D2E80478B50B043DFCDA40256A2724351BEF6CE819039F541D8BD88DEF486CA1E2256B18417BA0F5472 -175: C3106AAB2E9F2A4C772274FE1A36BA98F3A9AA94BAD93B54ADDCFA72CFB084640BC3A6881BE9A2783AE191BE13A7E85C -176: 713B25A0A73DE00F72FB93E440DE6828D6FC1B4FE631F27538A4B37A1DD6E1F4C7928A96912590F750B04BBAE0132B96 -177: EF3AD97AFF769E1450656A161B0BD0D6B251ABE681F0EB0EC856D125E2DCB5B0D04D787232FC9D941271AA62E7CC28A7 -178: 6B3052F9304DDBD0EAE8ABE5FAF982641A5FE98D89F531373C74CC6E068C1D9A7E57994C2856EC490F607A1C421DEE9F -179: D28F0C437E0F812CFD4068F7FED2068E2C16FA89D3FED5E43FF06CB6A9EABDE3C81F585EF0CCB9CB4EB1D3BFDE7AADA8 -180: 4A7EDFD099BAE536F39D27E28EEE09683B4381A237ED49B152490108FBCB5B008B452509184F24E2C15BFF448C4222AE -181: 389B32D6503D04B43A0F608D171F79DDED2CC8F82919FED673084DAC52315A72177FEE73A489B0344EA3FA4DA2F7B82C -182: 335F0D7D2EBEA7236E1A15D892923FC92F184E112FCF749E173C3109FA4C33FE9E4B0353DBEDC0C9974A51EBF3A9620E -183: 7A2F48F490C5649A4875ADCC8B37A06A3D76D08ADD0613119E7D752D3E39E3C4D9F28E55230B1D0F0FD411685671C9E5 -184: 064EFC6A149C8BD56B889BB0D0C427C47349F72A57655B97897BFF17B3C997C3217E03F63F90E6FCDD94847FF243B6F4 -185: 1AC5D8B018C1981AF1CF0FF849C5819C42B0015B83A0111C313F3425F9B6389D7309DB7E5A7B17BB50DE72F4B4F7CE03 -186: A8D496F68517A880B7C27BB2A7DF5EECD65A79355F15645385EAF830F95B14F72C57C60E030610B6263E7A9430602222 -187: 551345C9934FD4ECFE647A7EFB9E6F094FEB70F3935A6C81A33325CB8B15A4816D3FD1AD3FFC88DD0F47CB143E8B5EAB -188: 11EE22A28D7F0B7BF6E8110A12E3413B58FB6A0BEF872744F579CBC44990AD83BDFB13FF5C1177839590312DAC646AD0 -189: A9BE399F1C9D3DD12EB61E69E0BA0AD878FF86C9A81DB6F36DA6F29B53B6FEBD998889E3DA5D1E65B35276056D019307 -190: CA0299A194825AC60197E2017618A656D8CE4973C6B2FF434DCCC202A3692373BC05BE34CC5F4E7BBC133D32D3A7D17C -191: FA0B8D238239F40622207F0CB6B08ED33DBA359ACB9FE7FF26EA0E1893F909D695AE7BFB87ED74199DC23C9E68CBBDA4 -192: FD7ACCB685C639F49D4D21AE57E2D3971A902D1892737220BFEDDA0FD89B33A97D8B96B18773910220D268A61CCDD070 -193: C62FE53E61FED07C1718A5BBB3FC65141F4F294BFF1CAB291EF62DB856953EFFD0FAB5F3BD20F8E4AAF48DDC71F3EFDB -194: D0882A9FB46B0C8D2C70DE5EFC5569027B516450835E3AD9C5FFB7A86962B55436B692B4E930B66D0CDCE2FE3BCE25C5 -195: 8DF5F9265406DEB1DCA57AB46E423AE7E9D5EAA1E650EF9B399DE74C175C694324BAEC0386AEA2AF0C75F2AAA1F4D421 -196: 3887E609D8841E57CE7415CCF815C34D7A9A31C2A1A29B9007E4D826BDA8EFF5EB8D8DBB6F9496FD2565B83ADD400DD7 -197: 0694FF8371961712D8A35970009BE8E3953E09E54F119EDFE4B947B11CFAF078ED961AE1F335BB17FC389A9EA35F7EE1 -198: 99A8EC7449A5E51B5FB4F6E086714960ED74ADF8FEFE89C1F49054CD34C3A86E673CE92154BC7DBB1DD4F780969EEC3D -199: B138AAC5B451C7558D02C518636FC80BF49FAAA6AA972D68981A684F500C43E9DDA171AE6168BA8EC2B52D0428FAB4F5 -200: C3FB89D604F306FC6EE2AAFEBEFBF69D26B21DBBDC055166858D527A4501FF479894B533398334379C182AD6747BD1AF -201: 5AF5504C1F18EDF72C918A40EBCDC51B898FA45C42CBB23A64B2BCE44F74716E7BA9465EE8E347E33C3A6DD6C1ED78D1 -202: BAABBDC830ECD27BE8B089AF00D4CC0C9225533721AEF1D24070CAFA20789407FB3CDF27D2AF1FE0058D0BFC85183E09 -203: 917496B4E3D0D4780A6480FCB04B998A035047BEE524ECB437FB2558A093DB8E1A62E62B0C2B82E73463F7E630DCB197 -204: 24CE0EB4A3ED509348442C252E7B173108A20AE8C5042DAB97431CBBB07C5A473B14E44CC5BCFD2101C8EA4DD88E336C -205: 82E9F843BEB8669C9E9A05B4F8F51B59EC6454659E5753CB6327749E8D3940DDD8593ECDBD608A6564B1D638F581D2A0 -206: 9ACDFCF2BCE50A32B083A69418B2814B10571AE455FD5179480AA02A488962B28CED5D7F54DF3569DB34E11B6276E984 -207: E83BF11E8469A7F17EE92CA39BBCC34BE04316C71DC698C008B85B5D578BCE3E3528A4001C4A39DBE0BB24B97973AEC7 -208: 8A1A5287F1875B39342B60DEA85ACB93BBB3A4DA75C13D15A88253BA0591C7308646264150B19A2B698C288419813759 -209: BFB72AF495427F4DA2663D7A71F2CFB08AAA195E9F27064B4360256AC4CF243ED69BBB5DE791F058BB2BC80149B71295 -210: 47BE392C89A6A1E9FE451B5E869BFBDA0A9A23453C66D81FF3E716DA65F6E4CCDCB6CFC1315D627B7A4D0938E04FBB89 -211: FF110E7ABE253D27C0109FD1A4AF2A89290828BBF06F3233C1E0CD979C1372F1235216B66D0BAF3F9FE1E503C6983746 -212: BAD05016EC91AB339F8F5790A86938AAB9F9A96C317F61344BE0E49FC17F49B47F11E35DFDE96D1AFC74D73F42E73712 -213: 5DC02FB03284E604C66F38F61936A1557AB265423C36AC4C66CC5AF4BD282BFFC2EE33EC924FCD47C8B771695494B487 -214: BE13DF098FA3CE6C0BC1EE8551D28FAB56989C41BC273F1E5289204A172266C294F12E631841AE8ABF90DDF15C9C9993 -215: 3EE39B0127853E2B42ABEAA2C3CAAB17A8474945CC140EE09146F2B2A9844D8490AEA003FDB7329525F4E3E49D222F8B -216: 313B503A0480DDD1387A8CB1DA3FBA0773C465964AA49DB3893B973FE2345402BFA062532B3D90FC5A679C95FE97C1FD -217: 3A59FA6049CF57C5F0459B4DE0AA3EA727A223E63B9098177D9ECB6BBDB59DDEDE8E0DFD798DCFFE9B641BEA32629745 -218: F5F5695B468E89E150B8D0769D5866FAE28D2F4B74EB01DF91744F06D88088681EED0CDBAAEEAFCEF069680FDAD53CC6 -219: 9F3217D32F0399547A5F5476FDCDC45D60ADB4EC3ACA0C9AFB12E3B914F5A3E6A42E673A3156F842C482C9AED6F452F7 -220: DC10EB95F4A95C62A62361277E3B7B4EBD26A0CFB4D40BD9B60124A718E64138F634797C4AF404E38CDCA2AF1F891E8A -221: 58B9D8007536A0ADE76CD798928830E8B2454565BFBB9B9CB4F212C423CC01B2707F23FC1B98B153E453AFF75228BFF6 -222: 96588A4D0EAFA475F6C5EF4A541057F2B42CB39A80D9304CC42FF36E52F4ED01E59477468D1C4A4E76689EE63CF3F2F6 -223: 75F4E8ABE2665CAC88D4AF0B5965E553667D44F735BB6FBF50C200EF72F842BEEF8247561898258CE1B91B03FA181BEB -224: 01F15A3254772AF6633FF9071244E79F2A5A5245B01DE8EA96BB83D4EEA7358BF2A5D605D9444E8FBB603A93E3FA3533 -225: 23CB6BF2EDE9199F57324CB43E9DB7A1E8FADF8997295DAB095297108DE429A6594DD9B80EB8BEA86E5D5D3C16A3E8FA -226: BAAA44617DEB6EC6F686D609337BFA50278CFD4E7DDC18F674A604151EB26D1D2904BEF0F928CB45E263321B0EAD96B6 -227: 2869DE18E00085B176BCBD60DB172EC57B6DF786F0E6AD675773F5923516B35F87868579DFCB7C640CB350ACF4BA661E -228: C71EC380475733D52C6D05F37A5356DD4B695C83B7893EE1F46DCE48AFB039112C5A23A11A8898AC5C7F9149C2681608 -229: 4BA5FCBB593DF2612912E0910DD1B42CA8566F643B7F80BB92B79079C42F787936E0CD4CBD12C2315B1D4264B4D40C20 -230: 3252104DB29CC76745BA21B7F77F994E68780C7A0C3679C291C7F02BD8A9719A0F7ADEC42930B6EC3DBEA0F1723016A5 -231: DA9B50C254272DE5EF502DB79D01D7685097C469B523910842213034458E9051A74C3E040778AFCD75D8598E636EA184 -232: 5D075E4C4B7A0CFDC184A2EAFD1B3E9223E21020DD04DF20F5964A8233C5A7FFC5C623AAC2AB5A1F02EA8D1A5031F593 -233: 16129C669BD55B939C1FB73215E79D43D47052A1EF756D439814B4DCC6C7FEE6E8A8925758CC9EFA3AEEE49989590554 -234: 06173DEE9A8BE76CDE992894F06D26A70A5284F120AB05BD887F6024B518A6137DE60D0158D7C34F4E1F85A6DDC20AB7 -235: 2E5468C9269C522E7A246039CE96F0491F97643776F41A2A70C8958E139D2FD106B952E8A5D766783FDC7A740F0958FA -236: 893C17BE1F39231F4C98321B0473B04E2CB421E5F6A0D9A22FF1D6E0B46884A52CB8721014280B39C5DA17E5F6CC5EB6 -237: FE61D7BAC3A3159E2F76D090871529ED846584D5710048912D75BB99674E595FD3D483B665287A86AAC5A58D6B1138D5 -238: 2ABC3C3D615EDCCC0235D36815DB403378E957BFF9AB44E4D2C94B9D5890BEB3F6C58C4BC6161D302E70AFE6B8736482 -239: 4C592636F932BCCEE6B161ABF1A565543A89CA6C7CABD2E3A3547267D1AA0732C76FE1677AE9888DD919B00A14C3F5FC -240: 1B06997AA47379409CA92F969366FF92AE888201B22ECADFB644EF6B3F8417AC220FA338F4CD6C9B08996F0CBFDEE947 -241: 8917996EFCA60051306B4D1992911CDFF4926746BFB41768A5EB407A2F2A492869F1C404EFF07B3FFBA03C928195EA3A -242: 5FC13C39D40A4528EEBEC469AE57F32F1BC8C4E36555CE49618CFD3E74ADE57CB8D023A07B8B599076ADAB673073390A -243: F66A41D3FDC709E33E6511E329799164BB18FAA44930F47BD6DF4472C5BABB1A41A514BA76F89825265C43DE407EAD03 -244: 7B23F639B5704B57AB3459FFBAE5434D6E1D913494C64081A51613B147C94E6585C8DD0C2E887835BD147DD59BBF72DB -245: 10E3C81532095BD18D7252708CD19FA796A43EE417721CFFD047FF54598C38A69389B357E14AFE69703A5863336660D7 -246: 6C015B143565592127A5D9E9C90766946CBF83388817B0C26E605C03A4637BCA7F3975BD34712177B4B7A5313BE4ED5A -247: C8F8F0A269FACC4D325F1388CA71998FF730415D6E34B76E3ED046B6CA3066B26F0C355417CD261BEF4898E0567C05D2 -248: DF7F3CD66B7DCDCC6089E2D51C27561AC5FDD261B61ECE80ED067C35B146610998BCF693FE3466DAD5C92BCE663D18EC -249: 30EBA9B4F06B52C4A2C4791972588AA2F2DA6D606D6445FBFFC00477BD69D5106070F5049A0B5CEDAA93506AD7E0B84D -250: 82A241F49733D9909BC3B7881E7337AD00CE85FD8BF7D8B8F531767E48EEA606A04FA75E038692E98B89BD8D673CFA82 -251: E9B1E02B6F1E2EF5902BFDE2A3327F960AA97B5D585CCF621F1A509FA02C280EC6BFCC13B293975AE9727A818A7658F9 -252: D931609260468BF52988D10632B2844FCADBB1410536FE332301107E0512DBDF48159C6928A7E05D4018D2B474EBF927 -253: E401AF666582970D7EEFEF6CDC74101859CF6A14371F4E650D1CA5C0E50E5D960B6D5835F170DA9274C3E55BA6BDF6A4 -254: 98154F1CF4569B9C64DBDC42C629637185CFA820502B4262B1EA6C0F782F9A1187D23D300F7B9DA8AEA07FE985490F81 -255: CBC5A8273028CE5CF0EBE5651C5910ECF16B6F18E4DD28749A72C0DCF2110DCA0A7BEA48512A9EE96277AB0F8A12A3CB -256: 9BD2B1BF7A89613FDCC76A3E02DABE81772A97BD5E6274FD9FE72E219BFFE88C5E6F681A31481485DCB85DFA34BDC657 - -Hash: blake2b-512 - 0: 786A02F742015903C6C6FD852552D272912F4740E15847618A86E217F71F5419D25E1031AFEE585313896444934EB04B903A685B1448B755D56F701AFE9BE2CE - 1: 2FA3F686DF876995167E7C2E5D74C4C7B6E48F8068FE0E44208344D480F7904C36963E44115FE3EB2A3AC8694C28BCB4F5A0F3276F2E79487D8219057A506E4B - 2: 1C08798DC641ABA9DEE435E22519A4729A09B2BFE0FF00EF2DCD8ED6F8A07D15EAF4AEE52BBF18AB5608A6190F70B90486C8A7D4873710B1115D3DEBBB4327B5 - 3: 40A374727302D9A4769C17B5F409FF32F58AA24FF122D7603E4FDA1509E919D4107A52C57570A6D94E50967AEA573B11F86F473F537565C66F7039830A85D186 - 4: 77DDF4B14425EB3D053C1E84E3469D92C4CD910ED20F92035E0C99D8A7A86CECAF69F9663C20A7AA230BC82F60D22FB4A00B09D3EB8FC65EF547FE63C8D3DDCE - 5: CBAA0BA7D482B1F301109AE41051991A3289BC1198005AF226C5E4F103B66579F461361044C8BA3439FF12C515FB29C52161B7EB9C2837B76A5DC33F7CB2E2E8 - 6: F95D45CF69AF5C2023BDB505821E62E85D7CAEDF7BEDA12C0248775B0C88205EEB35AF3A90816F6608CE7DD44EC28DB1140614E1DDEBF3AA9CD1843E0FAD2C36 - 7: 8F945BA700F2530E5C2A7DF7D5DCE0F83F9EFC78C073FE71AE1F88204A4FD1CF70A073F5D1F942ED623AA16E90A871246C90C45B621B3401A5DDBD9DF6264165 - 8: E998E0DC03EC30EB99BB6BFAAF6618ACC620320D7220B3AF2B23D112D8E9CB1262F3C0D60D183B1EE7F096D12DAE42C958418600214D04F5ED6F5E718BE35566 - 9: 6A9A090C61B3410AEDE7EC9138146CEB2C69662F460C3DA53C6515C1EB31F41CA3D280E567882F95CF664A94147D78F42CFC714A40D22EF19470E053493508A2 - 10: 29102511D749DB3CC9B4E335FA1F5E8FACA8421D558F6A3F3321D50D044A248BA595CFC3EFD3D2ADC97334DA732413F5CBF4751C362BA1D53862AC1E8DABEEE8 - 11: C97A4779D47E6F77729B5917D0138ABB35980AB641BD73A8859EB1AC98C05362ED7D608F2E9587D6BA9E271D343125D40D933A8ED04EC1FE75EC407C7A53C34E - 12: 10F0DC91B9F845FB95FAD6860E6CE1ADFA002C7FC327116D44D047CD7D5870D772BB12B5FAC00E02B08AC2A0174D0446C36AB35F14CA31894CD61C78C849B48A - 13: DEA9101CAC62B8F6A3C650F90EEA5BFAE2653A4EAFD63A6D1F0F132DB9E4F2B1B662432EC85B17BCAC41E775637881F6AAB38DD66DCBD080F0990A7A6E9854FE - 14: 441FFAA08CD79DFF4AFC9B9E5B5620EEC086730C25F661B1D6FBFBD1CEC3148DD72258C65641F2FCA5EB155FADBCABB13C6E21DC11FAF72C2A281B7D56145F19 - 15: 444B240FE3ED86D0E2EF4CE7D851EDDE22155582AA0914797B726CD058B6F45932E0E129516876527B1DD88FC66D7119F4AB3BED93A61A0E2D2D2AEAC336D958 - 16: BFBABBEF45554CCFA0DC83752A19CC35D5920956B301D558D772282BC867009168E9E98606BB5BA73A385DE5749228C925A85019B71F72FE29B3CD37CA52EFE6 - 17: 9C4D0C3E1CDBBF485BEC86F41CEC7C98373F0E09F392849AAA229EBFBF397B22085529CB7EF39F9C7C2222A514182B1EFFAA178CC3687B1B2B6CBCB6FDEB96F8 - 18: 477176B3BFCBADD7657C23C24625E4D0D674D1868F006006398AF97AA41877C8E70D3D14C3BBC9BBCDCEA801BD0E1599AF1F3EEC67405170F4E26C964A57A8B7 - 19: A78C490EDA3173BB3F10DEE52F110FB1C08E0302230B85DDD7C11257D92DE148785EF00C039C0BB8EB9808A35B2D8C080F572859714C9D4069C5BCAF090E898E - 20: 58D023397BEB5B4145CB2255B07D74290B36D9FD1E594AFBD8EEA47C205B2EFBFE6F46190FAF95AF504AB072E36F6C85D767A321BFD7F22687A4ABBF494A689C - 21: 4001EC74D5A46FD29C2C3CDBE5D1B9F20E51A941BE98D2A4E1E2FBF866A672121DB6F81A514CFD10E7358D571BDBA48E4CE708B9D124894BC0B5ED554935F73A - 22: CCD1B22DAB6511225D2401EA2D8625D206A12473CC732B615E5640CEFFF0A4ADF971B0E827A619E0A80F5DB9CCD0962329010D07E34A2064E731C520817B2183 - 23: B4A0A9E3574EDB9E1E72AA31E39CC5F30DBF943F8CABC408449654A39131E66D718A18819143E3EA96B4A1895988A1C0056CF2B6E04F9AC19D657383C2910C44 - 24: 447BECAB16630608D39F4F058B16F7AF95B85A76AA0FA7CEA2B80755FB76E9C804F2CA78F02643C915FBF2FCE5E19DE86000DE03B18861815A83126071F8A37B - 25: 54E6DAB9977380A5665822DB93374EDA528D9BEB626F9B94027071CB26675E112B4A7FEC941EE60A81E4D2EA3FF7BC52CFC45DFBFE735A1C646B2CF6D6A49B62 - 26: 3EA62625949E3646704D7E3C906F82F6C028F540F5F72A794B0C57BF97B7649BFEB90B01D3CA3E829DE21B3826E6F87014D3C77350CB5A15FF5D468A81BEC160 - 27: 213CFE145C54A33691569980E5938C8883A46D84D149C8FF1A67CD287B4D49C6DA69D3A035443DB085983D0EFE63706BD5B6F15A7DA459E8D50A19093DB55E80 - 28: 5716C4A38F38DB104E494A0A27CBE89A26A6BB6F499EC01C8C01AA7CB88497E75148CD6EEE12A7168B6F78AB74E4BE749251A1A74C38C86D6129177E2889E0B6 - 29: 030460A98BDF9FF17CD96404F28FC304F2B7C04EAADE53677FD28F788CA22186B8BC80DD21D17F8549C711AFF0E514E19D4E15F5990252A03E082F28DC2052F6 - 30: 19E7F1CCEE88A10672333E390CF22013A8C734C6CB9EAB41F17C3C8032A2E4ACA0569EA36F0860C7A1AF28FA476840D66011168859334A9E4EF9CC2E61A0E29E - 31: 29F8B8C78C80F2FCB4BDF7825ED90A70D625FF785D262677E250C04F3720C888D03F8045E4EDF3F5285BD39D928A10A7D0A5DF00B8484AC2868142A1E8BEA351 - 32: 5C52920A7263E39D57920CA0CB752AC6D79A04FEF8A7A216A1ECB7115CE06D89FD7D735BD6F4272555DBA22C2D1C96E6352322C62C5630FDE0F4777A76C3DE2C - 33: 83B098F262251BF660064A9D3511CE7687A09E6DFBB878299C30E93DFB43A9314DB9A600337DB26EBEEDAF2256A96DABE9B29E7573AD11C3523D874DDE5BE7ED - 34: 9447D98AA5C9331352F43D3E56D0A9A9F9581865998E2885CC56DD0A0BD5A7B50595BD10F7529BCD31F37DC16A1465D594079667DA2A3FCB70401498837CEDEB - 35: 867732F2FEEB23893097561AC710A4BFF453BE9CFBEDBA8BA324F9D312A82D732E1B83B829FDCD177B882CA0C1BF544B223BE529924A246A63CF059BFDC50A1B - 36: F15AB26D4CDFCF56E196BB6BA170A8FCCC414DE9285AFD98A3D3CF2FB88FCBC0F19832AC433A5B2CC2392A4CE34332987D8D2C2BEF6C3466138DB0C6E42FA47B - 37: 2813516D68ED4A08B39D648AA6AACD81E9D655ECD5F0C13556C60FDF0D333EA38464B36C02BACCD746E9575E96C63014F074AE34A0A25B320F0FBEDD6ACF7665 - 38: D3259AFCA8A48962FA892E145ACF547F26923AE8D4924C8A531581526B04B44C7AF83C643EF5A0BC282D36F3FB04C84E28B351F40C74B69DC7840BC717B6F15F - 39: F14B061AE359FA31B989E30332BFE8DE8CC8CDB568E14BE214A2223B84CAAB7419549ECFCC96CE2ACEC119485D87D157D3A8734FC426597D64F36570CEAF224D - 40: 55E70B01D1FBF8B23B57FB62E26C2CE54F13F8FA2464E6EB98D16A6117026D8B90819012496D4071EBE2E59557ECE3519A7AA45802F9615374877332B73490B3 - 41: 25261EB296971D6E4A71B2928E64839C67D422872BF9F3C31993615222DE9F8F0B2C4BE8548559B4B354E736416E3218D4E8A1E219A4A6D43E1A9A521D0E75FC - 42: 08307F347C41294E34BB54CB42B1522D22F824F7B6E5DB50FDA096798E181A8F026FA27B4AE45D52A62CAF9D5198E24A4913C6671775B2D723C1239BFBF016D7 - 43: 1E5C62E7E9BFA1B118747A2DE08B3CA10112AF96A46E4B22C3FC06F9BFEE4EB5C49E057A4A4886234324572576BB9B5ECFDE0D99B0DE4F98EC16E4D1B85FA947 - 44: C74A77395FB8BC126447454838E561E962853DC7EB49A1E3CB67C3D0851F3E39517BE8C350AC910903D49CD2BFDF545C99316D0346170B739F0ADD5D533C2CFC - 45: 0DD57B423CC01EB2861391EB886A0D17079B933FC76EB3FC08A19F8A74952CB68F6BCDC644F77370966E4D13E80560BCF082EF0479D48FBBAB4DF03B53A4E178 - 46: 4D8DC3923EDCCDFCE70072398B8A3DA5C31FCB3EE3B645C85F717CBAEB4B673A19394425A585BFB464D92F1597D0B754D163F97CED343B25DB5A70EF48EBB34F - 47: F0A50553E4DFB0C4E3E3D3BA82034857E3B1E50918F5B8A7D698E10D242B0FB544AF6C92D0C3AAF9932220416117B4E78ECB8A8F430E13B82A5915290A5819C5 - 48: B15543F3F736086627CC5365E7E8988C2EF155C0FD4F428961B00D1526F04D6D6A658B4B8ED32C5D8621E7F4F8E8A933D9ECC9DD1B8333CBE28CFC37D9719E1C - 49: 7B4FA158E415FEF023247264CBBE15D16D91A44424A8DB707EB1E2033C30E9E1E7C8C0864595D2CB8C580EB47E9D16ABBD7E44E824F7CEDB7DEF57130E52CFE9 - 50: 60424FF23234C34DC9687AD502869372CC31A59380186BC2361C835D972F49666EB1AC69629DE646F03F9B4DB9E2ACE093FBFDF8F20AB5F98541978BE8EF549F - 51: 7406018CE704D84F5EB9C79FEA97DA345699468A350EE0B2D0F3A4BF2070304EA862D72A51C57D3064947286F531E0EAF7563702262E6C724ABF5ED8C8398D17 - 52: 14EF5C6D647B3BD1E6E32006C231199810DE5C4DC88E70240273B0EA18E651A3EB4F5CA3114B8A56716969C7CDA27E0C8DB832AD5E89A2DC6CB0ADBE7D93ABD1 - 53: 38CF6C24E3E08BCF1F6CF3D1B1F65B905239A3118033249E448113EC632EA6DC346FEEB2571C38BD9A7398B2221280328002B23E1A45ADAFFE66D93F6564EAA2 - 54: 6CD7208A4BC7E7E56201BBBA02A0F489CD384ABE40AFD4222F158B3D986EE72A54C50FB64FD4ED2530EDA2C8AF2928A0DA6D4F830AE1C9DB469DFD970F12A56F - 55: 659858F0B5C9EDAB5B94FD732F6E6B17C51CC096104F09BEB3AFC3AA467C2ECF885C4C6541EFFA9023D3B5738AE5A14D867E15DB06FE1F9D1127B77E1AABB516 - 56: 26CCA0126F5D1A813C62E5C71001C046F9C92095704550BE5873A495A999AD010A4F79491F24F286500ADCE1A137BC2084E4949F5B7294CEFE51ECAFF8E95CBA - 57: 4147C1F55172788C5567C561FEEF876F621FFF1CE87786B8467637E70DFBCD0DBDB6415CB600954AB9C04C0E457E625B407222C0FE1AE21B2143688ADA94DC58 - 58: 5B1BF154C62A8AF6E93D35F18F7F90ABB16A6EF0E8D1AECD118BF70167BAB2AF08935C6FDC0663CE74482D17A8E54B546D1C296631C65F3B522A515839D43D71 - 59: 9F600419A4E8F4FB834C24B0F7FC13BF4E279D98E8A3C765EE934917403E3A66097182EA21453CB63EBBE8B73A9C2167596446438C57627F330BADD4F569F7D6 - 60: 457EF6466A8924FD8011A34471A5A1AC8CCD9BD0D07A97414AC943021CE4B9E4B9C8DB0A28F016ED43B1542481990022147B313E194671131E708DD43A3ED7DC - 61: 9997B2194D9AF6DFCB9143F41C0ED83D3A3F4388361103D38C2A49B280A581212715FD908D41C651F5C715CA38C0CE2830A37E00E508CED1BCDC320E5E4D1E2E - 62: 5C6BBF16BAA180F986BD40A1287ED4C549770E7284858FC47BC21AB95EBBF3374B4EE3FD9F2AF60F3395221B2ACC76F2D34C132954049F8A3A996F1E32EC84E5 - 63: D10BF9A15B1C9FC8D41F89BB140BF0BE08D2F3666176D13BAAC4D381358AD074C9D4748C300520EB026DAEAEA7C5B158892FDE4E8EC17DC998DCD507DF26EB63 - 64: 2FC6E69FA26A89A5ED269092CB9B2A449A4409A7A44011EECAD13D7C4B0456602D402FA5844F1A7A758136CE3D5D8D0E8B86921FFFF4F692DD95BDC8E5FF0052 - 65: FCBE8BE7DCB49A32DBDF239459E26308B84DFF1EA480DF8D104EEFF34B46FAE98627B450C2267D48C0946A697C5B59531452AC0484F1C84E3A33D0C339BB2E28 - 66: A19093A6E3BCF5952F850F2030F69B9606F147F90B8BAEE3362DA71D9F35B44EF9D8F0A7712BA1877FDDCD2D8EA8F1E5A773D0B745D4725605983A2DE901F803 - 67: 3C2006423F73E268FA59D2920377EB29A4F9A8B462BE15983EE3B85AE8A78E992633581A9099893B63DB30241C34F643027DC878279AF5850D7E2D4A2653073A - 68: D0F2F2E3787653F77CCE2FA24835785BBD0C433FC779465A115149905A9DD1CB827A628506D457FCF124A0C2AEF9CE2D2A0A0F63545570D8667FF9E2EBA07334 - 69: 78A9FC048E25C6DCB5DE45667DE8FFDD3A93711141D594E9FA62A959475DA6075EA8F0916E84E45AD911B75467077EE52D2C9AEBF4D58F20CE4A3A00458B05D4 - 70: 45813F441769AB6ED37D349FF6E72267D76AE6BB3E3C612EC05C6E02A12AF5A37C918B52BF74267C3F6A3F183A8064FF84C07B193D08066789A01ACCDB6F9340 - 71: 956DA1C68D83A7B881E01B9A966C3C0BF27F68606A8B71D457BD016D4C41DD8A380C709A296CB4C6544792920FD788835771A07D4A16FB52ED48050331DC4C8B - 72: DF186C2DC09CAA48E14E942F75DE5AC1B7A21E4F9F072A5B371E09E07345B0740C76177B01278808FEC025EDED9822C122AFD1C63E6F0CE2E32631041063145C - 73: 87475640966A9FDCD6D3A3B5A2CCA5C08F0D882B10243C0EC1BF3C6B1C37F2CD3212F19A057864477D5EAF8FAED73F2937C768A0AF415E84BBCE6BD7DE23B660 - 74: C3B573BBE10949A0FBD4FF884C446F2229B76902F9DFDBB8A0353DA5C83CA14E8151BBAAC82FD1576A009ADC6F1935CF26EDD4F1FB8DA483E6C5CD9D8923ADC3 - 75: B09D8D0BBA8A7286E43568F7907550E42036D674E3C8FC34D8CA46F771D6466B70FB605875F6A863C877D12F07063FDC2E90CCD459B1910DCD52D8F10B2B0A15 - 76: AF3A22BF75B21ABFB0ACD54422BA1B7300A952EFF02EBEB65B5C234471A98DF32F4F9643CE1904108A168767924280BD76C83F8C82D9A79D9259B195362A2A04 - 77: BF4FF2221B7E6957A724CD964AA3D5D0D9941F540413752F4699D8101B3E537508BF09F8508B317736FFD265F2847AA7D84BD2D97569C49D632AED9945E5FA5E - 78: 9C6B6B78199B1BDACB4300E31479FA622A6B5BC80D4678A6078F88A8268CD7206A2799E8D4621A464EF6B43DD8ADFFE97CAF221B22B6B8778B149A822AEFBB09 - 79: 890656F09C99D280B5ECB381F56427B813751BC652C7828078B23A4AF83B4E3A61FDBAC61F89BEE84EA6BEE760C047F25C6B0A201C69A38FD6FD971AF18588BB - 80: 31A046F7882FFE6F83CE472E9A0701832EC7B3F76FBCFD1DF60FE3EA48FDE1651254247C3FD95E100F9172731E17FD5297C11F4BB328363CA361624A81AF797C - 81: 27A60B2D00E7A671D47D0AEC2A686A0AC04B52F40AB6629028EB7D13F4BAA99AC0FE46EE6C814944F2F4B4D20E9378E4847EA44C13178091E277B87EA7A55711 - 82: 8B5CCEF194162C1F19D68F91E0B0928F289EC5283720840C2F73D253111238DCFE94AF2B59C2C1CA2591901A7BC060E7459B6C47DF0F71701A35CC0AA831B5B6 - 83: 57AB6C4B2229AEB3B70476D803CD63812F107CE6DA17FED9B17875E8F86C724F49E024CBF3A1B8B119C50357652B81879D2ADE2D588B9E4F7CEDBA0E4644C9EE - 84: 0190A8DAC320A739F322E15731AA140DDAF5BED294D5C82E54FEF29F214E18AAFAA84F8BE99AF62950266B8F901F15DD4C5D35516FC35B4CAB2E96E4695BBE1C - 85: D14D7C4C415EEB0E10B159224BEA127EBD84F9591C702A330F5BB7BB7AA44EA39DE6ED01F18DA7ADF40CFB97C5D152C27528824B21E239526AF8F36B214E0CFB - 86: BE28C4BE706970488FAC7D29C3BD5C4E986085C4C3332F1F3FD30973DB614164BA2F31A78875FFDC150325C88327A9443ED04FDFE5BE93876D1628560C764A80 - 87: 031DA1069E3A2E9C3382E436FFD79DF74B1CA6A8ADB2DEABE676AB45994CBC054F037D2F0EACE858D32C14E2D1C8B46077308E3BDC2C1B53172ECF7A8C14E349 - 88: 4665CEF8BA4DB4D0ACB118F2987F0BB09F8F86AA445AA3D5FC9A8B346864787489E8FCECC125D17E9B56E12988EAC5ECC7286883DB0661B8FF05DA2AFFF30FE4 - 89: 63B7032E5F930CC9939517F9E986816CFBEC2BE59B9568B13F2EAD05BAE7777CAB620C6659404F7409E4199A3BE5F7865AA7CBDF8C4253F7E8219B1BD5F46FEA - 90: 9F09BF093A2B0FF8C2634B49E37F1B2135B447AA9144C9787DBFD92129316C99E88AAB8A21FDEF2372D1189AEC500F95775F1F92BFB45545E4259FB9B7B02D14 - 91: F9F8493C68088807DF7F6A2693D64EA59F03E9E05A223E68524CA32195A4734B654FCEA4D2734C866CF95C889FB10C49159BE2F5043DC98BB55E02EF7BDCB082 - 92: 3C9A7359AB4FEBCE07B20AC447B06A240B7FE1DAE5439C49B60B5819F7812E4C172406C1AAC316713CF0DDED1038077258E2EFF5B33913D9D95CAEB4E6C6B970 - 93: AD6AAB8084510E822CFCE8625D62CF4DE655F4763884C71E80BAB9AC9D5318DBA4A6033ED29084E65216C031606CA17615DCFE3BA11D26851AE0999CA6E232CF - 94: 156E9E6261374C9DC884F36E70F0FE1AB9297997B836FA7D170A9C9EBF575B881E7BCEA44D6C0248D35597907154828955BE19135852F9228815ECA024A8ADFB - 95: 4215407633F4CCA9B6788BE93E6AA3D963C7D6CE4B147247099F46A3ACB500A30038CB3E788C3D29F132AD844E80E9E99251F6DB96ACD8A091CFC770AF53847B - 96: 1C077E279DE6548523502B6DF800FFDAB5E2C3E9442EB838F58C295F3B147CEF9D701C41C321283F00C71AFFA0619310399126295B78DD4D1A74572EF9ED5135 - 97: F07A555F49FE481CF4CD0A87B71B82E4A95064D06677FDD90A0EB598877BA1C83D4677B393C3A3B6661C421F5B12CB99D20376BA7275C2F3A8F5A9B7821720DA - 98: B5911B380D20C7B04323E4026B38E200F534259233B581E02C1E3E2D8438D6C66D5A4EB201D5A8B75072C4EC29106334DA70BC79521B0CED2CFD533F5FF84F95 - 99: 01F070A09BAE911296361F91AA0E8E0D09A7725478536D9D48C5FE1E5E7C3C5B9B9D6EB07796F6DA57AE562A7D70E882E37ADFDE83F0C433C2CD363536BB22C8 -100: 6F793EB4374A48B0775ACAF9ADCF8E45E54270C9475F004AD8D5973E2ACA52747FF4ED04AE967275B9F9EB0E1FF75FB4F794FA8BE9ADD7A41304868D103FAB10 -101: 965F20F139765FCC4CE4BA3794675863CAC24DB472CD2B799D035BCE3DBEA502DA7B524865F6B811D8C5828D3A889646FE64A380DA1AA7C7044E9F245DCED128 -102: EC295B5783601244C30E4641E3B45BE222C4DCE77A58700F53BC8EC52A941690B4D0B087FB6FCB3F39832B9DE8F75EC20BD43079811749CDC907EDB94157D180 -103: 61C72F8CCC91DBB54CA6750BC489672DE09FAEDB8FDD4F94FF2320909A303F5D5A98481C0BC1A625419FB4DEBFBF7F8A53BB07EC3D985E8EA11E72D559940780 -104: AFD8145B259EEFC8D12620C3C5B03E1ED8FD2CCEFE0365078C80FD42C1770E28B44948F27E65A1886690110DB814397B68E43D80D1BA16DFA358E739C898CFA3 -105: 552FC7893CF1CE933ADA35C0DA98844E41545E244C3157A1428D7B4C21F9CD7E4071AED77B7CA9F1C38FBA32237412EF21A342742EC8324378F21E507FAFDD88 -106: 467A33FBADF5EBC52596EF86AAAEFC6FABA8EE651B1CE04DE368A03A5A9040EF2835E00ADB09ABB3FBD2BCE818A2413D0B0253B5BDA4FC5B2F6F85F3FD5B55F2 -107: 22EFF8E6DD5236F5F57D94EDE874D6C9428E8F5D566F17CD6D1848CD752FE13C655CB10FBAAFF76872F2BF2DA99E15DC624075E1EC2F58A3F64072121838569E -108: 9CEC6BBF62C4BCE4138ABAE1CBEC8DAD31950444E90321B1347196834C114B864AF3F3CC3508F83751FFB4EDA7C84D140734BB4263C3625C00F04F4C8068981B -109: A8B60FA4FC2442F6F1514AD7402626920CC7C2C9F72124B8CBA8EE2CB7C4586F658A4410CFFCC0AB88343955E094C6AF0D20D0C714FB0A988F543F300F58D389 -110: 8271CC45DFA5E4170E847E8630B952CF9C2AA777D06F26A7585B8381F188DACC7337391CFCC94B053DC4EC29CC17F077870428F1AC23FDDDA165EF5A3F155F39 -111: BF23C0C25C8060E4F6995F1623A3BEBECAA96E308680000A8AA3CD56BB1A6DA099E10D9231B37F4519B2EFD2C24DE72F31A5F19535241B4A59FA3C03CEB790E7 -112: 877FD652C05281009C0A5250E7A3A671F8B18C108817FE4A874DE22DA8E45DB11958A600C5F62E67D36CBF84474CF244A9C2B03A9FB9DC711CD1A2CAB6F3FAE0 -113: 29DF4D87EA444BAF5BCDF5F4E41579E28A67DE84149F06C03F110EA84F572A9F676ADDD04C4878F49C5C00ACCDA441B1A387CACEB2E993BB7A10CD8C2D6717E1 -114: 710DACB166844639CD7B637C274209424E2449DC35D790BBFA4F76177054A36B3B76FAC0CA6E61DF1E687000678AC0746DF75D0A3954897681FD393A155A1BB4 -115: C1D5F93B8DEA1F2571BABCCBC01764541A0CDA87E444D673C50966CA559C33354B3ACB26E5D5781FFB28847A4B4754D77008C62A835835F500DEA7C3B58BDAE2 -116: A41E41271CDAB8AF4D72B104BFB2AD041AC4DF14677DA671D85640C4B187F50C2B66513C4619FBD5D5DC4FE65DD37B9042E9848DDA556A504CAA2B1C6AFE4730 -117: E7BCBACDC379C43D81EBADCB37781552FC1D753E8CF310D968392D06C91F1D64CC9E90CE1D22C32D277FC6CDA433A4D442C762E9EACF2C259F32D64CF9DA3A22 -118: 51755B4AC5456B13218A19C5B9242F57C4A981E4D4ECDCE09A3193362B808A579345D4881C2607A56534DD7F21956AFF72C2F4173A6E7B6CC2212BA0E3DAEE1F -119: DCC2C4BEB9C1F2607B786C20C631972347034C1CC02FCC7D02FF01099CFE1C6989840AC213923629113AA8BAD713CCF0FE4CE13264FB32B8B0FE372DA382544A -120: 3D55176ACEA4A7E3A65FFA9FB10A7A1767199CF077CEE9F71532D67CD7C73C9F93CFC37CCDCC1FDEF50AAD46A504A650D298D597A3A9FA95C6C40CB71FA5E725 -121: D07713C005DE96DD21D2EB8BBECA66746EA51A31AE922A3E74864889540A48DB27D7E4C90311638B224BF0201B501891754848113C266108D0ADB13DB71909C7 -122: 58983C21433D950CAA23E4BC18543B8E601C204318532152DAF5E159A0CD1480183D29285C05F129CB0CC3164687928086FFE380158DF1D394C6AC0D4288BCA8 -123: 8100A8DC528D2B682AB4250801BA33F02A3E94C54DAC0AE1482AA21F51EF3A82F3807E6FACB0AEB05947BF7AA2ADCB034356F90FA4560EDE02201A37E411EC1A -124: 07025F1BB6C784F3FE49DE5C14B936A5ACACACAAB33F6AC4D0E00AB6A12483D6BEC00B4FE67C7CA5CC508C2A53EFB5BFA5398769D843FF0D9E8B14D36A01A77F -125: BA6AEFD972B6186E027A76273A4A723321A3F580CFA894DA5A9CE8E721C828552C64DACEE3A7FD2D743B5C35AD0C8EFA71F8CE99BF96334710E2C2346E8F3C52 -126: E0721E02517AEDFA4E7E9BA503E025FD46E714566DC889A84CBFE56A55DFBE2FC4938AC4120588335DEAC8EF3FA229ADC9647F54AD2E3472234F9B34EFC46543 -127: B6292669CCD38D5F01CAAE96BA272C76A879A45743AFA0725D83B9EBB26665B731F1848C52F11972B6644F554C064FA90780DBBBF3A89D4FC31F67DF3E5857EF -128: 2319E3789C47E2DAA5FE807F61BEC2A1A6537FA03F19FF32E87EECBFD64B7E0E8CCFF439AC333B040F19B0C4DDD11A61E24AC1FE0F10A039806C5DCC0DA3D115 -129: F59711D44A031D5F97A9413C065D1E614C417EDE998590325F49BAD2FD444D3E4418BE19AEC4E11449AC1A57207898BC57D76A1BCF3566292C20C683A5C4648F -130: DF0A9D0C212843A6A934E3902B2DD30D17FBA5F969D2030B12A546D8A6A45E80CF5635F071F0452E9C919275DA99BED51EB1173C1AF0518726B75B0EC3BAE2B5 -131: A3EB6E6C7BF2FB8B28BFE8B15E15BB500F781ECC86F778C3A4E655FC5869BF2846A245D4E33B7B14436A17E63BE79B36655C226A50FFBC7124207B0202342DB5 -132: 56D4CBCD070563426A017069425C2CD2AE540668287A5FB9DAC432EB8AB1A353A30F2FE1F40D83333AFE696A267795408A92FE7DA07A0C1814CF77F36E105EE8 -133: E59B9987D428B3EDA37D80ABDB16CD2B0AEF674C2B1DDA4432EA91EE6C935C684B48B4428A8CC740E579A30DEFF35A803013820DD23F14AE1D8413B5C8672AEC -134: CD9FCC99F99D4CC16D031900B2A736E1508DB4B586814E6345857F354A70CCECB1DF3B50A19ADAF43C278EFA423FF4BB6C523EC7FD7859B97B168A7EBFF8467C -135: 0602185D8C3A78738B99164B8BC6FFB21C7DEBEBBF806372E0DA44D121545597B9C662A255DC31542CF995ECBE6A50FB5E6E0EE4EF240FE557EDED1188087E86 -136: C08AFA5B927BF08097AFC5FFF9CA4E7800125C1F52F2AF3553FA2B89E1E3015C4F87D5E0A48956AD31450B083DAD147FFB5EC03434A26830CF37D103AB50C5DA -137: 36F1E1C11D6EF6BC3B536D505D544A871522C5C2A253067EC9933B6EC25464DAF985525F5B9560A16D890259AC1BB5CC67C0C469CDE133DEF000EA1D686F4F5D -138: BF2AB2E2470F5438C3B689E66E7686FFFA0CB1E1798AD3A86FF99075BF6138E33D9C0CE59AFB24AC67A02AF34428191A9A0A6041C07471B7C3B1A752D6FC0B8B -139: D400601F9728CCC4C92342D9787D8D28AB323AF375CA5624B4BB91D17271FBAE862E413BE73F1F68E615B8C5C391BE0DBD9144746EB339AD541547BA9C468A17 -140: 79FE2FE157EB85A038ABB8EBBC647731D2C83F51B0AC6EE14AA284CB6A3549A4DCCEB300740A825F52F5FB30B03B8C4D8B0F4AA67A63F4A94E3303C4EDA4C02B -141: 75351313B52A8529298D8C186B1768666DCCA8595317D7A4816EB88C062020C0C8EFC554BB341B64688DB5CCAFC35F3C3CD09D6564B36D7B04A248E146980D4B -142: E3128B1D311D02179D7F25F97A5A8BEE2CC8C86303644FCD664E157D1FEF00F23E46F9A5E8E5C890CE565BB6ABD4302CE06469D52A5BD53E1C5A54D04649DC03 -143: C2382A72D2D3ACE9D5933D00B60827ED380CDA08D0BA5F6DD41E29EE6DBE8ECB9235F06BE95D83B6816A2FB7A5AD47035E8A4B69A4884B99E4BECE58CAB25D44 -144: 6B1C69460BBD50AC2ED6F32E6E887CFED407D47DCF0AAA60387FE320D780BD03EAB6D7BAEB2A07D10CD552A300341354EA9A5F03183A623F92A2D4D9F00926AF -145: 6CDA206C80CDC9C44BA990E0328C314F819B142D00630404C48C05DC76D1B00CE4D72FC6A48E1469DDEF609412C364820854214B4869AF090F00D3C1BA443E1B -146: 7FFC8C26FBD6A0F7A609E6E1939F6A9EDF1B0B066641FB76C4F9602ED748D11602496B35355B1AA255850A509D2F8EE18C8F3E1D7DCBC37A136598F56A59ED17 -147: 70DE1F08DD4E09D5FC151F17FC991A23ABFC05104290D50468882EFAF582B6EC2F14F577C0D68C3AD06626916E3C86E6DAAB6C53E5163E82B6BD0CE49FC0D8DF -148: 4F81935756ED35EE2058EE0C6A6110D6FAC5CB6A4F46AA9411603F99965823B6DA4838276C5C06BC7880E376D92758369EE7305BCEC8D3CFD28CCABB7B4F0579 -149: ABCB61CB3683D18F27AD527908ED2D32A0426CB7BB4BF18061903A7DC42E7E76F982382304D18AF8C80D91DD58DD47AF76F8E2C36E28AF2476B4BCCF82E89FDF -150: 02D261AD56A526331B643DD2186DE9A82E72A58223CD1E723686C53D869B83B94632B7B647AB2AFC0D522E29DA3A5615B741D82852E0DF41B66007DBCBA90543 -151: C5832741FA30C5436823015383D297FF4C4A5D7276C3F902122066E04BE5431B1A85FAF73B918434F9300963D1DEA9E8AC3924EF490226EDEEA5F743E410669F -152: CFAEAB268CD075A5A6AED515023A032D54F2F2FF733CE0CBC78DB51DB4504D675923F82746D6594606AD5D67734B11A67CC6A468C2032E43CA1A94C6273A985E -153: 860850F92EB268272B67D133609BD64E34F61BF03F4C1738645C17FEC818465D7ECD2BE2907641130025FDA79470AB731646E7F69440E8367EA76AC4CEE8A1DF -154: 84B154ED29BBEDEFA648286839046F4B5AA34430E2D67F7496E4C39F2C7EA78995F69E1292200016F16AC3B37700E6C7E7861AFC396B64A59A1DBF47A55C4BBC -155: AEEEC260A5D8EFF5CCAB8B95DA435A63ED7A21EA7FC7559413FD617E33609F8C290E64BBACC528F6C080262288B0F0A3219BE223C991BEE92E72349593E67638 -156: 8AD78A9F26601D127E8D2F2F976E63D19A054A17DCF59E0F013AB54A6887BBDFFDE7AAAE117E0FBF3271016595B9D9C712C01B2C53E9655A382BC4522E616645 -157: 8934159DADE1AC74147DFA282C75954FCEF443EF25F80DFE9FB6EA633B8545111D08B34EF43FFF17026C7964F5DEAC6D2B3C29DACF2747F022DF5967DFDC1A0A -158: CD36DD0B240614CF2FA2B9E959679DCDD72EC0CD58A43DA3790A92F6CDEB9E1E795E478A0A47D371100D340C5CEDCDBBC9E68B3F460818E5BDFF7B4CDA4C2744 -159: 00DF4E099B807137A85990F49D3A94315E5A5F7F7A6076B303E96B056FB93800111F479628E2F8DB59AEB6AC70C3B61F51F9B46E80FFDEAE25EBDDB4AF6CB4EE -160: 2B9C955E6CAED4B7C9E246B86F9A1726E810C59D126CEE66ED71BF015B83558A4B6D84D18DC3FF4620C2FFB722359FDEF85BA0D4E2D22ECBE0ED784F99AFE587 -161: 181DF0A261A2F7D29EA5A15772715105D450A4B6C236F699F462D60CA76487FEEDFC9F5EB92DF838E8FB5DC3694E84C5E0F4A10B761F506762BE052C745A6EE8 -162: 21FB203458BF3A7E9A80439F9A902899CD5DE0139DFD56F7110C9DEC8437B26BDA63DE2F565926D85EDB1D6C6825669743DD9992653D13979544D5DC8228BFAA -163: EF021F29C5FFB830E64B9AA9058DD660FD2FCB81C497A7E698BCFBF59DE5AD4A86FF93C10A4B9D1AE5774725F9072DCDE9E1F199BAB91F8BFF921864AA502EEE -164: B3CFDA40526B7F1D37569BDFCDF911E5A6EFE6B2EC90A0454C47B2C046BF130FC3B352B34DF4813D48D33AB8E269B69B075676CB6D00A8DCF9E1F967EC191B2C -165: B4C6C3B267071EEFB9C8C72E0E2B941293641F8673CB70C1CC26AD1E73CF141755860AD19B34C2F34ED35BB52EC4507CC1FE59047743A5F0C6FEBDE625E26091 -166: 57A34F2BCCA60D4B85103B830C9D7952A416BE5263AE429C9E5E53FE8590A8F78EC65A51109EA85DCDF7B6223F9F2B340539FAD81923DBF8EDABF95129E4DFF6 -167: 9CF46662FCD61A232277B685663B8B5DA832DFD9A3B8CCFEEC993EC6AC415AD07E048ADFE414DF272770DBA867DA5C1224C6FD0AA0C2187D426AC647E9887361 -168: 5CE1042AB4D542C2F9EE9D17262AF8164098935BEF173D0E18489B04841746CD2F2DF866BD7DA6E5EF9024C648023EC723AB9C62FD80285739D84F15D2AB515A -169: 8488396BD4A8729B7A473178F232DADF3F0F8E22678BA5A43E041E72DA1E2CF82194C307207A54CB8156293339EAEC693FF66BFCD5EFC65E95E4ECAF54530ABD -170: F598DA901C3835BCA560779037DFDE9F0C51DC61C0B760FC1522D7B470EE63F5BDC6498476E86049AD86E4E21AF2854A984CC905427D2F17F66B1F41C3DA6F61 -171: 5F93269798CF02132107337660A8D7A177354C0212EB93E555E7C37A08AEF3D8DCE01217011CD965C04DD2C105F2E2B6CAE5E4E6BCAF09DFBEE3E0A6A6357C37 -172: 0ECF581D47BAC9230986FAABD70C2F5B80E91066F0EC55A842937882286D2CA007BB4E973B0B091D52167FF7C4009C7AB4AD38FFF1DCEACDB7BE81EF4A452952 -173: 5AECA8ABE1528582B2A307B4009585498A3D467CA6101CB0C5126F9976056E9FFC123CC20C302B2A737F492C75D21F01512C90CA0541DFA56E950A321DCB28D8 -174: 732FBF8F1CB2B8329263EDE27858FE46F8D3354D376BCDA0548E7CE1FA9DD11F85EB661FE950B543AA635CA4D3F04EDE5B32D6B656E5CE1C44D35C4A6C56CFF8 -175: D5E938735D63788C80100AEFD18648D18CF272F69F20FF24CFE2895C088AD08B0104DA1672A4EB26FC52545CC7D7A01B266CF546C403C45BD129EB41BDD9200B -176: 65A245B49352EE297D91AF8C8BE00528AC6E046DD83AC7BD465A98816DD68F3E00E1AE8F895327A7E9A8C9326598379A29C9FC91EC0C6EEF08F3E2B216C11008 -177: C95654B63019130AB45DD0FB4941B98AEB3AF2A123913ECA2CE99B3E97410A7BF8661CC7FBAA2BC1CF2B13113B1ED40A0118B88E5FFFC3542759EA007ED4C58D -178: 1EB262F38FA494431F017DAD44C0DFB69324AC032F04B657FC91A88647BB74760F24E7C956514F0CF002990B182C1642B9B2426E96A61187E4E012F00E217D84 -179: 3B955AEEBFA5151AC1AB8E3F5CC1E3767084C842A575D36269836E97353D41622B731DDDCD5F269550A3A5B87BE1E90326340B6E0E62555815D9600597AC6EF9 -180: 68289F6605473BA0E4F241BAF7477A9885426A858F19EF2A18B0D40EF8E41282ED5526B519799E270F13881327918278755711071D8511FE963E3B5606AA3716 -181: 80A33787542612C38F6BCD7CD86CAB460227509B1CBAD5EC408A91413D51155A0476DADBF3A2518E4A6E77CC346622E347A469BF8BAA5F04EB2D98705355D063 -182: 34629BC6D831391C4CDF8AF1B4B7B6B8E8EE17CF98C70E5DD586CD99F14B11DF945166236A9571E6D591BB83EE4D164D46F6B9D8EF86FF865A81BFB91B00424B -183: 8B7CC339163863BB4383E542B0EF0E7CF36B84AD932CDF5A80419EC9AD692E7A7E784D2C7CB3796A18B8F800035F3AA06C824100611120A7BDEB35618CCB81B7 -184: 4F084E4939DD5A7F5A658FAD58A18A15C25C32EC1C7FD5C5C6C3E892B3971AEAAC308304EF17B1C47239EA4BB398B3FD6D4528D8DE8E768AE0F1A5A5C6B5C297 -185: 48F407A1AF5B8009B2051742E8CF5CD5656669E7D722EE8E7BD202060849442168D8FACC117C012BFB7BF449D99BEFFF6A34AEA203F1D8D352722BE5014EC818 -186: A6AA82CD1E426F9A73BFA39A29037876114655B8C22D6D3FF8B638AE7DEA6B17843E09E52EB66FA1E475E4A8A3DE429B7D0F4A776FCB8BDC9B9FEDE7D52E815F -187: 5817027D6BDD00C5DD10AC593CD560372270775A18526D7E6F13872A2E20EAB664625BE7168AC4BD7C9E0CE7FC4099E0F48442E2C767191C6E1284E9B2CCEA8C -188: 08E41028340A45C74E4052B3A8D6389E22E043A1ADAB5E28D97619450D723469B620CAA519B81C14523854F619FD3027E3847BD03276E60604A80DDB4DE876D6 -189: 130B8420537EB07D72ABDA07C85ACBD8B9A44F16321DD0422145F809673D30F2B5321326E2BFF317EF3FEF983C51C4F8AB24A325D298E34AFCE569A82555774C -190: AC49B844AFAA012E31C474CA263648844FD2F6307992C2F752ACA02C3828965175794DEEE2D2EE95C61CD284F6B5A2D75E2EF2B29EE8149E77FB81447B2FD04B -191: B9D7CA81CC60BB9578E44024E5A0A0BE80F27336A6A9F4E53DF3999CB191280B090E2AC2D29C5BAAD9D71415BDC129E69AA2667AF6A7FD5E189FCCDCEE817340 -192: A755E113386572C75CED61D719706070B9146048E42A9F8CD35667A088B42F08808ABDF77E618ABD959AFC757379CA2C00BCC1A48390FA2BFF618B1E0078A613 -193: A73C7DEBED326F1C0DB0795EE7D6E3946894B826B1F8101C56C823BA17168312E7F53FC7DBE52C3E11E69852C40485E2EF182477862EA6A34EC136E2DFEEA6F4 -194: 6CB8F9D52C56D82CAC28F39EA1593E8BB2506293AC0D68376A1709B62A46DF14A4AE64B2D8FAB76733A1CED2D548E3F3C6FCB49D40C3D5808E449CD83D1C2AA2 -195: 683FA2B2369A10162C1C1C7B24BC970EE67DA220564F32203F625696C0352A0B9AD96624362D952D84463C1106A2DBA7A092599884B35A0B89C8F1B6A9B5A61E -196: AAD9AD44610118B77D508AEB1BBCD1C1B7D0171397FB510A401BBC0EC34623670D86A2DC3C8F3AB5A2044DF730256727545F0860CE21A1EAC717DFC48F5D228E -197: C42578DE23B4C987D5E1AC4D689ED5DE4B0417F9704BC6BCE969FA13471585D62C2CB1212A944F397FC9CA2C3747C3BEB694EC4C5BE68828DDA53EF43FAEC6C0 -198: 470F00841EE8244E63ED2C7EA30E2E419897C197462ECCCECF713B42A5065FFF5914BC9B79AFFE8F6B657875E789AE213BD914CD35BD174D46E9D18BD843773D -199: 34FC4213730F47A5E9A3580F643E12945CFCB31BF206F6AD450CE528DA3FA432E005D6B0ECCE10DCA7C5995F6AACC5150E1B009E19751E8309F8859531844374 -200: FB3C1F0F56A56F8E316FDF5D853C8C872C39635D083634C3904FC3AC07D1B578E85FF0E480E92D44ADE33B62E893EE32343E79DDF6EF292E89B582D312502314 -201: C7C97FC65DD2B9E3D3D607D31598D3F84261E9919251E9C8E57BB5F829377D5F73EABBED55C6C381180F29AD02E5BE797FFEC7E57BDECBC50AD3D062F0993AB0 -202: A57A49CDBE67AE7D9F797BB5CC7EFC2DF07F4E1B15955F85DAE74B76E2ECB85AFB6CD9EEED8888D5CA3EC5AB65D27A7B19E578475760A045AC3C92E13A938E77 -203: C7143FCE9614A17FD653AEB140726DC9C3DBB1DE6CC581B2726897EC24B7A50359AD492243BE66D9EDD8C933B5B80E0B91BB61EA98056006516976FAE8D99A35 -204: 65BB58D07F937E2D3C7E65385F9C54730B704105CCDB691F6E146D4EE8F6C086F49511035110A9AD6031FDCEB943E0F9613BCB276DD40F0624EF0F924F809783 -205: E540277F683B1186DD3B5B3F61433396581A35FEB12002BE8C6A6231FC40FFA70F08081BC58B2D94F7649543614A435FAA2D62110E13DABC7B86629B63AF9C24 -206: 418500878C5FBCB584C432F4285E05E49F2E3E075399A0DBFCF874EBF8C03D02BF16BC6989D161C77CA0786B05053C6C709433712319192128835CF0B660595B -207: 889090DBB1944BDC9433EE5EF1010C7A4A24A8E71ECEA8E12A31318CE49DCAB0ACA5C3802334AAB2CC84B14C6B9321FE586BF3F876F19CD406EB1127FB944801 -208: 53B6A28910AA92E27E536FB549CF9B9918791060898E0B9FE183577FF43B5E9C7689C745B32E412269837C31B89E6CC12BF76E13CAD366B74ECE48BB85FD09E9 -209: 7C092080C6A80D672409D081D3D177106BCD63567785140719490950AE07AE8FCAABBAAAB330CFBCF7374482C220AF2EADEEB73DCBB35ED823344E144E7D4899 -210: 9CCDE566D2400509181111F32DDE4CD63209FE59A30C114546AD2776D889A41BAD8FA1BB468CB2F9D42CA9928A7770FEF8E8BA4D0C812D9A1E75C3D8D2CCD75A -211: 6E293BF5D03FE43977CFE3F57CCDB3AE282A85455DCA33F37F4B74F8398CC612433D755CBEC412F8F82A3BD3BC4A278F7ECD0DFA9BBDC40BE7A787C8F159B2DF -212: C56546FB2178456F336164C18B90DEFFC83AE2B5A3ACA77B6884D36D2C1DB39501B3E65E36C758C66E3188451FDB3515EE162C001F06C3E8CB573ADF30F7A101 -213: 6F82F89F299EBCA2FE014B59BFFE1AA84E88B1915FE256AFB646FD8448AF2B8891A7FAB37A4EA6F9A50E6C317039D8CF878F4C8E1A0DD464F0B4D6FF1C7EA853 -214: 2B8599FF9C3D6198637AD51E57D1998B0D75313FE2DD61A533C964A6DD9607C6F723E9452CE46E014B1C1D6DE77BA5B88C914D1C597BF1EAE13474B4290E89B2 -215: 08BF346D38E1DF06C8260EDB1DA75579275948D5C0A0AA9ED2886F8856DE5417A156998758F5B17E52F101CA957A71137473DFD18D7D209C4C10D9233C93691D -216: 6DF2156D773114D310B63DB9EE5350D77E6BCF25B05FCD910F9B31BC42BB13FE8225EBCB2A23A62280777B6BF74E2CD0917C7640B43DEFE468CD1E18C943C66A -217: 7C7038BC13A91151828A5BA82B4A96040F258A4DFB1B1373F0D359168AFB0517A20B28A12D3644046BE66B8D08D8AE7F6A923EA1C00187C6D11DC502BAC71305 -218: BCD1B30D808FB739B987CBF154BEA00DA9D40380B861D4C1D6377122DADD61C0E59018B71941CFB62E00DCD70AEB9ABF0473E80F0A7ECA6B6DEA246AB229DD2B -219: 7ED4468D968530FE7AB2C33540B26D8C3BD3ED44B34FBE8C2A9D7F805B5ADA0EA252EEADE4FCE97F89728AD85BC8BB2430B1BEF2CDDD32C8446E59B8E8BA3C67 -220: 6D30B7C6CE8A3236C0CA2F8D728B1088CA06983A8043E621D5DCF0C537D13B08791EDEB01A3CF0943EC1C890AB6E29B146A236CD46BCB9D93BF516FB67C63FE5 -221: 97FE03CEF31438508911BDED975980A66029305DC5E3FA8AD1B4FB22FCDF5A19A733320327D8F71CCF496CB3A44A77AF56E3DDE73D3A5F176896CC57C9A5AD99 -222: 785A9D0FBD21136DBCE8FA7EAFD63C9DAD220052978416B31D9753EAA149097847ED9B30A65C70507EFF01879149ED5CF0471D37798EDC05ABD56AD4A2CCCB1D -223: AD408D2ABDDFD37B3BF34794C1A3371D928ED7FC8D966225333584C5665817832A37C07F0DC7CB5AA874CD7D20FE8FAB8EABCB9B33D2E0841F6E200960899D95 -224: 97668F745B6032FC815D9579322769DCCD9501A5080029B8AE826BEFB6742331BD9F76EFEB3E2B8E81A9786B282F5068A3A2424697A77C41876B7E753F4C7767 -225: 26BB985F47E7FEE0CFD252D4EF96BED42B9C370C1C6A3E8C9EB04EF7F7818B833A0D1F043EBAFB911DC779E02740A02A44D3A1EA45ED4AD55E686C927CAFE97E -226: 5BFE2B1DCF7FE9B95088ACEDB575C19016C743B2E763BF5851AC407C9EDA43715EDFA48B4825492C5179593FFF21351B76E8B7E034E4C53C79F61F29C479BD08 -227: C76509EF72F4A6F9C9C40618ED52B2084F83502232E0AC8BDAF3264368E4D0180F6854C4ABF4F6509C79CAAFC44CF3194AFC57BD077BD7B3C9BDA3D4B8775816 -228: D66F2BEAB990E354CCB910E4E9C7AC618C7B63EF292A96B552341DE78DC46D3EC8CFABC699B50AF41FDA39CF1B0173660923510AD67FAEDEF5207CFFE8641D20 -229: 7D8F0672992B79BE3A364D8E5904F4AB713BBC8AB01B4F309AD8CCF223CE1034A860DCB0B00550612CC2FA17F2969E18F22E1427D254B4A82B3A03A3EB394ADF -230: A56D6725BFB3DE47C1414ADF25FC8F0FC9846F6987722BC06366D5CA4E89722925EBBC881418844075397A0CA89842C7B9E9E07E1D9D183EBEB39E120B483BF7 -231: AF5E03D7FE60C67E10313344434E79485A03A758D6DCE985574745763C1C5C77D4FB3E6FB12230368370993BF90FEED0C5D1607524562D7C09C0C210ED393D7C -232: 7A20540CC07BF72B582421FC342E82F52134B69841EC28ED189E2EA6A29DD2F82A640352D222B52F2911DC72A7DAB31CAADD80C6118F13C56B2A1E4373BE0EA3 -233: 486F02C63E5467EA1FDDE7E82BFACC2C1BA5D636D9F3D08B210DA3F372F706EC218CC17FF60AEF703BBE0C15C38AE55D286A684F864C78211CCAB4178C92ADBA -234: 1C7A5C1DEDCD04A921788F7EB23361CA1953B04B9C7AEC35D65EA3E4996DB26F281278EA4AE666AD81027D98AF57262CDBFA4C085F4210568C7E15EEC7805114 -235: 9CE3FA9A860BDBD5378FD6D7B8B671C6CB7692910CE8F9B6CB4122CBCBE6AC06CA0422CEF1225935053B7D193A81B9E972EB85A1D3074F14CBB5EC9F0573892D -236: A91187BE5C371C4265C174FD4653B8AB708551F83D1FEE1CC1479581BC006D6FB78FCC9A5DEE1DB3666F508F9780A37593EBCCCF5FBED39667DC6361E921F779 -237: 4625767D7B1D3D3ED2FBC674AF14E0244152F2A4021FCF3311505D89BD81E2F9F9A500C3B199914DB49500B3C98D03EA93286751A686A3B875DAAB0CCD63B44F -238: 43DFDFE1B014FED3A2ACABB7F3E9A182F2AA18019D27E3E6CDCF31A15B428E91E7B08CF5E5C376FCE2D8A28FF85AB0A0A1656EDB4A0A91532620096D9A5A652D -239: 279E3202BE3989BA3112772585177487E4FE3EE3EAB49C2F7FA7FE87CFE7B80D3E0355EDFF6D031E6C96C795DB1C6F041880EC3824DEFACF9263820A8E7327DE -240: EA2D066AC229D4D4B616A8BEDEC734325224E4B4E58F1AE6DAD7E40C2DA29196C3B1EA9571DACC81E87328CAA0211E09027B0524AA3F4A849917B3586747EBBB -241: 49F014F5C61822C899AB5CAE51BE4044A4495E777DEB7DA9B6D8490EFBB87530ADF293DAF079F94C33B7044EF62E2E5BB3EB11E17304F8453EE6CE24F033DDB0 -242: 9233490344E5B0DC5912671B7AE54CEE7730DBE1F4C7D92A4D3E3AAB50571708DB51DCF9C2944591DB651DB32D22935B86944969BE77D5B5FEAE6C3840A8DB26 -243: B6E75E6F4C7F453B7465D25B5AC8C7196902EAA953875228C8634E16E2AE1F38BC3275304335F5989ECCC1E34167D4E68D7719968FBA8E2FE67947C35C48E806 -244: CC14CA665AF1483EFBC3AF80080E650D5046A3932F4F51F3FE90A0705EC25104ADF07839265DC51D43401411246E474F0D5E5637AF94767283D53E0617E981F4 -245: 230A1C857CB2E7852E41B647E90E4585D2D881E1734DC38955356E8DD7BFF39053092C6B38E236E1899525647073DDDF6895D64206325E7647F275567B255909 -246: CBB65321AC436E2FFDAB2936359CE49023F7DEE7614EF28D173C3D27C5D1BFFA51553D433F8EE3C9E49C05A2B883CCE954C9A8093B80612A0CDD4732E041F995 -247: 3E7E570074337275EFB51315588034C3CF0DDDCA20B4612E0BD5B881E7E5476D319CE4FE9F19186E4C0826F44F131EB048E65BE242B1172C63BADB123AB0CBE8 -248: D32E9EC02D38D4E1B8249DF8DCB00C5B9C68EB8922672E3505393B6A210BA56F9496E5EE0490EF387C3CDEC061F06BC0382D9304CAFBB8E0CD33D57029E62DF2 -249: 8C1512466089F05B3775C262B62D22B83854A83218130B4EC91B3CCBD293D2A54302CECAAB9B100C68D1E6DDC8F07CDDBDFE6FDAAAF099CC09D6B725879C6369 -250: 91A7F61C97C2911E4C812EF71D780AD8FA788794561D08303FD1C1CB608A46A12563086EC5B39D471AED94FB0F6C678A43B8792932F9028D772A22768EA23A9B -251: 4F6BB222A395E8B18F6BA155477AED3F0729AC9E83E16D31A2A8BC655422B837C891C6199E6F0D75799E3B691525C581953517F252C4B9E3A27A28FBAF49644C -252: 5D06C07E7A646C413A501C3F4BB2FC38127DE7509B7077C4D9B5613201C1AA02FD5F79D2745915DD57FBCB4CE08695F6EFC0CB3D2D330E19B4B0E6004EA6471E -253: B96756E57909968F14B796A5D30F4C9D671472CF82C8CFB2CACA7AC7A44CA0A14C9842D00C82E337502C94D5960ACA4C492EA7B0DF919DDF1AADA2A275BB10D4 -254: FF0A015E98DB9C99F03977710AAC3E658C0D896F6D71D618BA79DC6CF72AC75B7C038EB6862DEDE4543E145413A6368D69F5722C827BA3EF25B6AE6440D39276 -255: 5B21C5FD8868367612474FA2E70E9CFA2201FFEEE8FAFAB5797AD58FEFA17C9B5B107DA4A3DB6320BAAF2C8617D5A51DF914AE88DA3867C2D41F0CC14FA67928 -256: 1ECC896F34D3F9CAC484C73F75F6A5FB58EE6784BE41B35F46067B9C65C63A6794D3D744112C653F73DD7DEB6666204C5A9BFA5B46081FC10FDBE7884FA5CBF8 - -Hash: chc_hash - 0: 4047929F1F572643B55F829EB3291D11 - 1: 8898FD04F810507740E7A8DBF44C18E8 - 2: 1445928BB912A6D3C5111923B6C5D48D - 3: D85B2E8854D16A440CF32DDDA741DA52 - 4: 5F3082124472598098B03649EA409CDC - 5: 604A19622A06D0486D559A07C95B297A - 6: A16F89E4DACA6C8174C9D66AA23B15AF - 7: FC6893F79A2D28315FBBEFCAF0280793 - 8: 6A80F04CB93B1CFB947DED28141E877A - 9: D036D0B4DEF1FA138C3181367143D1A9 - 10: F031A2DC2A196B268046F73728EE7831 - 11: 2E05C9B5A43CFB01AD026ABA8AE8201F - 12: 8B49EF0BC936792F905E61AE621E63C3 - 13: 485CF5E83BC66843D446D9922547E43B - 14: 704767A75D1FD6639CE72291AE1F6CD8 - 15: 19F6228C2531747CB20F644F9EC65691 - 16: B78FEC0628D7F47B042A3C15C57750FB - 17: 3EF9AFAAFAE9C80D09CD078E1CC0BD8A - 18: 5E4501C8DD0D49589F4FFA20F278D316 - 19: 00D2D0FDD0E0476C9D40DE5A04508849 - 20: CC7382E78D8DF07F0BAB66203F191745 - 21: 85B841BCCCB4AD2420BCABCFD06A0757 - 22: 7159E38F4D7E4CEBEBF86A65A984BA2A - 23: C8949A9D92601726F77E1AEF0E5F1E0F - 24: 8CE35EF6EC7DDA294134077420159F68 - 25: A0F4E4522832676B49E7CD393E6D9761 - 26: F55C27D180948585819833322D7BC4CA - 27: 0A3975A0113E1FE6A66F8C7D529715B5 - 28: F77135C5D04096181305C0906BAEE789 - 29: 31FF81B49B9003D73F878F810D49C851 - 30: BE1E12BF021D0DB2FC5CE7D5348A1DE7 - 31: CB4AF60D7340EC6849574DF1E5BAA24E - 32: 7C5ABDBA19396D7BE48C2A84F8CC747B - diff --git a/src/libtomcrypt/notes/hashsum_tv.txt b/src/libtomcrypt/notes/hashsum_tv.txt deleted file mode 100644 index c7ee41a1e4..0000000000 --- a/src/libtomcrypt/notes/hashsum_tv.txt +++ /dev/null @@ -1,29 +0,0 @@ -blake2b-160: 684b540eb245ebba2cd66b7814fe6d787868a5bb *tests/test.key -blake2b-256: 3aaa08120aa0174c105fd1f3412e3da30c3bbb9073569b0b8ae458b34de7780e *tests/test.key -blake2b-384: c33f39ab19099d5dea6789479e23447857803a3f45361ea58dd69c7b8037c8697544b6a741e236215adcb8b38fa0cfc4 *tests/test.key -blake2b-512: a2daabae6996e3bbfb76c5d277fb881107037c756173f510d83a78f669cf0b70a5088b971e30ca2168381568ea3d30b80a7b500944a5e2e3294f25aed4c3a5f1 *tests/test.key -blake2s-128: 7e1f9b6de11a3c597308f9d8aacd7321 *tests/test.key -blake2s-160: 3d1c9ae1a0afe8a6ef8b61d5380de7b061cd353c *tests/test.key -blake2s-224: 95dacd83d0421b2d69a52d92ee54143bb97c91a61450d917a88d4388 *tests/test.key -blake2s-256: 92ac6dc88b9ce4a75b2a54783435a37919303f713396db0e9ccd976d8c55f1cf *tests/test.key -chc_hash: d50da1ea9b53c0b891c8bcb0a4c6e5e0 *tests/test.key -md2: 0b327a17a102580ccde8081c18f137c7 *tests/test.key -md4: 6df7b3c1f7fbcbf6b8246dc0046e9d6b *tests/test.key -md5: 48fd9ed11c633069c3cf721611696a73 *tests/test.key -rmd128: a78170e11d56605eb0f5e05e6a218e61 *tests/test.key -rmd160: 56236b14cd15958c58136a295fa2b07c5edee009 *tests/test.key -rmd256: a0a658b25b8841f20be8151eb5e2c1229f085dd5cf7aa8bef4c8e07ea5738913 *tests/test.key -rmd320: 2ec15ca947f29dd8cef4782aeaeb4541ac00dc29e1649c4f5f4578ef0287091e513f9da423ce7319 *tests/test.key -sha1: c17a11eef02d7a2ad7250bc2ee22bdf37ed21f0f *tests/test.key -sha224: b226daa069512c849d55866470c23543d87e1fb768171efdcc6ab59a *tests/test.key -sha256: 76ec7faebdc42a4de35ca70024c2d273e9f7856ca61612e89f5f66350ba8cf5f *tests/test.key -sha3-224: 09525d6410c462e00e72ccd4304290bc59ff2b1b8e5322dbc197e169 *tests/test.key -sha3-256: b9016fc9976545ad0183775d88f20df5295d40b31db00d85f6916333260b8ae2 *tests/test.key -sha3-384: 5452977763b602df4185bbe7cce193346b09ee20d4a45a780fd44237e335ceaa71b9da06242621e159d796db9043c9be *tests/test.key -sha3-512: 1fadf63073c8613d38d5c944e2e3f7e086d94d93dceb2eec1e9693fd44158f3127c90cbaa8a13035cc9ff9b3572c9dce836bea15c92e8a78b036ec382caceb0f *tests/test.key -sha384: 7cc080c662524617e56d5a49f1c185909e9b1858a86684161ddd97fc5426f693b53f59d779de16da25dcb1259df879e5 *tests/test.key -sha512: f90afe4d254716a9770fd2c4f29ca544f2975f961cbd7fa207117383e4e48f7a2e1ade4aac333a2cb8c227dd6af2fff4d87c31c2a3916ae24d507c7c94c21818 *tests/test.key -sha512-224: 64ec566b5c2de736eab1b4e8542dc110f736819ea7f8f48e3712fbad *tests/test.key -sha512-256: db880bce4beb7246510febb961c7595aab57a15de6f90cd079f145e476b5d773 *tests/test.key -tiger: 97d713850e7affac30a642572c1ee7b18793d5b9e0ef5932 *tests/test.key -whirlpool: d7d41c755e0f28313f254cb198e0bfa42f56670595d97b80dceec754825d69938a9c11e5bf16e9a3809a62a09bddf021f3dbff4302ceec7ba46c88b41772b711 *tests/test.key diff --git a/src/libtomcrypt/notes/hmac_tv.txt b/src/libtomcrypt/notes/hmac_tv.txt deleted file mode 100644 index f315f7aef1..0000000000 --- a/src/libtomcrypt/notes/hmac_tv.txt +++ /dev/null @@ -1,5035 +0,0 @@ -HMAC Tests. In these tests messages of N bytes long (00,01,02,...,NN-1) are HMACed. The initial key is -of the same format (the same length as the HASH output size). The HMAC key in step N+1 is the HMAC output of -step N. - -HMAC-tiger - 0: 2EF793765716EE48A671BDB5F002103C43734304C8717C85 - 1: AE61B56C82BE9FF96DCFBC20DD02B4BEA4FC6B6D5F4EC412 - 2: B54ADBFB404457E6C5AFCCEC27199D1F259EE1994FFFE99F - 3: 08AEEC38E88403BB854935EB6F1464CE95B044F4B4202524 - 4: 4C9DAEDC1929E22128F2A7ED5F3556D8A6D3A8315A7B556A - 5: 764794ED9EE1F94891835CC3A361FE75C600C7951A07F450 - 6: 1A4C447A0FB8826A0881ED2E7BD89499EACA4B6C49F96060 - 7: 1396A21D8B465C6B898511DF94846588EE8E35C0095AD90A - 8: 7552EB03CE26A8F079AC96B42F556FEAEB756014B8FDE622 - 9: 835B7CCA9D9F13BA2A36CBD746E5C92D5B2D123CA2EC848E - 10: 7CF4EA88FF8B9A5A57E5ABB6B35278EE9D8653F624D662FE - 11: D588D953C6F438D077A1E302F84E25EF31AD99B9C5FC9DB4 - 12: 86EC62CF1A08CEA9171AC742E8E615B3F0C7B6FBC95DC3C8 - 13: 6EE7C51E26187F86370A26811C75136E28B0C39A113D80F8 - 14: E1326D54123BC26CF41B30F9F2BA2E732203836AF8A74273 - 15: F211E4C46862E3AC8B8E69976A705582CF6D1B34A6D342B7 - 16: 0C6160FEFE70C81C71B7465F42F070F30808CDAE448D1974 - 17: 492FC6BC091489F926F0F54CBF3E3F6C8CEC6ED14DF2DF8C - 18: FD166027ABD1BD9DBA13E3908D16C403E1691FF173328CA4 - 19: 28D99C64CDFFAC1E6F7B33C8E675E49749CE835A177A1C63 - 20: FD7BD55BC2A684F4875C811143A2997356AA87A300345843 - 21: DB8968E787BF65C00992ED9DDE974EA71BA947395111FFB3 - 22: 4C31B2FA4E6F7F40DECA589F85BB69BFAD1815A73CF9EB23 - 23: B4D8D7FCB314942F171F85EA0953F7816DA9F07D72AF48B5 - 24: 9A6A70BAD76203A7A1F64D1EE34375EC8BCB21810ECE0B68 - 25: D21D7E5EF6F1579C84428AB5D574468933BA037C9B0C34B6 - 26: 3C5292C87B24626241693F0EBE20A96800905691C5945E65 - 27: 350BEEC075258BA7FE0314E6803152B021570F067AE0D4D4 - 28: 6881F892886F9D66E68B937BB3A71FF5CB064611C722996E - 29: 07831F1B2D00108386339F192729687B2F57B9DAB2B1210B - 30: 38DE8DE8398EEC32939A239BC0198B0CFB18D12E4F2A3023 - 31: 5B683578F81867054089AE2E1B20E02B3BD92334CBB01FA9 - 32: E30A80BE07651BA17E2DF0D43A583A9DB268DFF3AB7393ED - 33: 42341B1EC4F61E90571188F5599FBA9ACF884B1E15694921 - 34: 7D98297D65F5FEA85CB967F22AE0707E03F305BF1D2249DD - 35: BC8EE5CE0FA8F9E6694406009EC9358BC420B7E5DE07B6F8 - 36: B8095DE6770CB4CC2127FA672F93F39CA4AF0CCBB9805DDB - 37: 20C0E981DF1B763B6BB47D43F66765AD434127C1FC55F829 - 38: 59795328D40D2CE6CFDED8DD5089F2D5B796C9438E7646CA - 39: 0789CAB229AD54416C82CA5A2E667EC7CE66019FCACF766D - 40: F7C81B1AE705019FF9A9905972AFD72484A70E11FB81B278 - 41: E72F52644BF5EE59BE87DF692EF0070D095115B7664BB53A - 42: B9A5DD984358D0B0F3C2781BA60E9BD3473C1C89C7982F23 - 43: F7BA22269249759F1A87AEA0A125D4DF9B58E93714449008 - 44: 5D2257317F8978576CD7D2CCD346E861A59FE949F74A3D82 - 45: 199D8D5B0B5C5B61E046F50E0E389DA6F19CB3A7A37C8588 - 46: F489CC6CB2D3E9F741D6C9008265CCA97E7E54D62F5EB85F - 47: A5E7CB0787EB7E62A9CFD8486390A6628C9876654B9E85E4 - 48: 22FA78EA17F0D29E16276C70A564D234BC4ECA7302301528 - 49: 4422534FB9EEC601CE7662345D6B6FF932E54BB0483C2F62 - 50: 5D2E2B90B460D393F36BF32B2F491E224EF388FA72A48501 - 51: EA5287BCBB856BF04FC785541079087CE24783E9310F3090 - 52: DEDA3920899FA69F913AE50A4F0D7119C9D3CE8F4E6D5BB2 - 53: B2F55D8EA64C9842BFEA4FADFE616664CD44C57D53998C58 - 54: 3D2C72F26188E1EF5C0F0FC8B541224066C4DF455FEE78FF - 55: 50BB36BD8A8D97E4D6CA78DDCDAD0690FBBC93DC9A66BF18 - 56: 48140E192FF8AB74FC22676AAAA186C1A7E2FA0166E986AC - 57: 40AFD540C40EE7E598D26AE3FE5A47939299B5DD46B0B4FE - 58: CEBBBD763B077342BA16D4B20412C9EDE0F0508ABCE3501B - 59: 0FE4DFE539160F5924C324B8B43DACB4F220195D286C6FA1 - 60: A06D135075F943CEE74AAB1B8DE08B772055551B1E73ED48 - 61: D4E1B5EBBDA5CDA5040DD697BB96DD702C6730CFCC012992 - 62: BD5E77B67B42C507C4912130C8880A9DBD66431DCA0C0038 - 63: D81F583A9B4DD1F48028CA602CC0F131D60561FA34F7B3B4 - 64: A41F0481EE52842CDF676177F8E43BC1F1B00A5682C63E15 - 65: CDB29E274ABEB20EECC8378D5BD806997502E4271AB56708 - 66: B8366ABD45565BB3D26CE46B6F419F74B34851863FF4C336 - 67: 5AD2C193D6D51C9C7E56C5BFF55C1D61E045366B51E7F619 - 68: 9948E3AB7D121B15A6CA8DFDF4EE5377C957F0DE891C3575 - 69: 095676D61096853635128A80570BD1CE803AC7249C0A0F57 - 70: 354F4CCC1E5112770B2AB035AE07200A6CDC0280AD088AFB - 71: A8723395E80BED25DFE8F9ACEDA942A77D225D00440302D2 - 72: 0D2BCE0F8CF396FD8277C8BD9B19D54965308D3ED04D2F27 - 73: 54B1939E9944F499798B3DCE3479AC315F2C42A1EF231984 - 74: 5CFF726EE4B2596240E6CBBC66D7C737A4D12A702B40E81E - 75: 82996D7F3F27B473BDA647BBBA7230DF217288F2D1A38B99 - 76: CB95F63E0E7A2EC4F26E94B81A3C8C757E04EEEAB35A8C2A - 77: 057DEDF45207EA885A0BAC5B64240DD21CB9D99CD8F38FEA - 78: 27DCDD1ABA459506EF98E5C8D567692264C4153F91FDB269 - 79: 911C83660F7EE8CFB5F54890AE98CCA36C4C12B8CC771DF8 - 80: 67CD07209988C517FAEE01E64AC4B5CF261B6035069508FA - 81: D9A40C407E2BA852684770A5EB08D8502DFD264F2DE5A5FC - 82: 9AAC50A2BCFD74BE3DF85237478AAA833484FA3DF912A3AC - 83: 38078488F6183B5A94B655F24212FC9769450D93986C9208 - 84: 2EFFCBFA4CCCAFCA66BF8B368FB1FEFAC280C20416BB90EC - 85: D626FD6D285C49F20E99B88B9F82640D93D9E765CA55B5B0 - 86: B1DD178943B26AA241D34031D3128344C6955F6A942CC5D3 - 87: DA0C850E2067F9FDAE433C1230E0F629700FC8896ADDBDE9 - 88: 58E393E353BD7DF75A591904AA99526E94FA45C98D095E21 - 89: 323D0E04D239BD70192B2ACCB9ACF06E2F8C3B07565893AE - 90: F9C4147C6921640C097534BB08020540B420AD569D03665B - 91: 5171DB964AC815B3A6D058419FD47833DDAED71039966E6D - 92: E7DC7C574AFC2C9A59E46CB8ADBD03330A5321B237DF7899 - 93: 97074CDA9FF8D40B0501E9F632ED7335D6A7926101A34C0C - 94: BDDCD4D007DE39680B80F9AF9803A9F21C836EA971250CD4 - 95: 0DBFF45E3155098D4B4C13815FB461D3C4BE41E9E1A68757 - 96: FC16CB95478E4D23A7AD15CCAE3C24BBB3D0FBDC8A00A144 - 97: 93A7CB506481D6A72EAB14A2BA544F8631542B55903CCAAE - 98: 9CC1FFA19736AB6EB36EB4A2C1624FCB6913B255D2346795 - 99: CE3526A088FFEDEA4345AB221707848823B16DADD19AB487 -100: 1E1D790323586DB8A306EDCCAC8C64A6F29A36F772B8D61D -101: 8C403515F2B9014E9519EC04769ACCF23E522D3E22DE7F41 -102: 6B6A634607634804988301240CA5AB029A9E86E51281D64E -103: C7C3483CC8E6B58520B554259EB08866AA7980B53FFB6B86 -104: 96E429611C9E411321947469E2095CD9B0EF29578030E40F -105: 5C5A7F2B7F1F9BCE730BE2779304A443188FD3B31DD2BF19 -106: 70933F999325353277E0AA1F543B5CBED3F28DAF4FC70A57 -107: 5CD6D136FDDF4AE9CE42F008301FB6647096D5007E79973F -108: 1162BA742AD199AC17FC707285301A82BA9CB12C09BA229D -109: C36615F6D5E29E6CABB7EBC44A6D3F7B024DAFBD338FEFFA -110: C29FEF051D1606CEFCE3417BD571CB9188BBF0FA8AB98679 -111: F925144EDDD27244E19E4B6E433F312C6CDE43EF4F9B84B5 -112: C4230A59E54A34D0709F3F1DB02C18EC8AA270078DE424D5 -113: EB1699CAEC36681CCF8A9144DFB5050566042977D15FD1F9 -114: 9FBF0D9B2DD9A6E87240E538590E9799B76E22604D22AB75 -115: 2657EA06D69A78A5895A9169F849B3DE111B31E5673A8E17 -116: D1F9E1BA4F4E52CDAAFC388FA4C366EF4BD5F440608D86B0 -117: 049196BFFD9F77175FA936066C3119293EAB79D1E0028C8F -118: 9CC1BD2CADDEC1D82FFAFA7031F2E5C9B6765CF1727A0ACB -119: ED00438670D68A70CE2E0729997CC9648947EEA35809B8C7 -120: A520A0089BC16C84CB8E05425B330C6D261108EE3049FACF -121: A55B470483E547D2752EDC3C4FDCF3B4C48A1990AD857941 -122: 46A78E772C533EC8EDA60EB4A127FCEBD35E7D0E7F183241 -123: 5EB9A774124D571FCCC83D1F36C603D9C387390DFB3928B2 -124: E904066FC77F73CA41166297A8FC631FF59634B659F0AED0 -125: B85B66AEF7D9904356F1CAA5583757D1D69EEBB8AB1D1420 -126: 6639F85214BC798D71B757FCD480CB78D325881781A3A073 -127: C5B72BBE80917B55036A9AD6908D59293C49373F0BDD104B -128: C0BD695F6B9B42DAB543C31BA73C9497A6AA6419A007A9F6 - -HMAC-md2 - 0: D39AD9DDE006587A8BE949B11B9288F8 - 1: FCB21B5348C95E8A8DCBEE50A80302CA - 2: 2F26B6ACCD0E03FE9B21A1B0E75FF665 - 3: 17CF85D985D0D85F545897CD42C6EFE5 - 4: 1537A6943B4F5AC1272E4161225D987B - 5: 83E17165D62CA6E4B9ED67DF1E599954 - 6: 7A3195C863DFF86A98968F254E128E61 - 7: BD05057AEBFCB92FA4B07456085EC6C2 - 8: 23AC0D307BFC2E87760F8BDB21851DF8 - 9: 2CD26A2F2994106A375BEB0433575BDE - 10: 1F63BFC44FDBE9A966CD90DF82265EFD - 11: 72735FAADC3819CC24CFCE1D589BA311 - 12: 28B589C3C8078B8FFEF1C8297E33C1E6 - 13: 70A6DC014CAD2752931A47C0879D2371 - 14: 81694317A37FFBA816504974F38B4829 - 15: 72F26208B3051F1B938EA7E03DD8C107 - 16: F945F57FE0696A4C81EC59AE69384FAB - 17: 54D8DFCEE33969486956698495B4BFD0 - 18: 508B82F88A234E753A9E305E15A14D82 - 19: 527D77D2AB25131693B02F653ACBD90E - 20: 4868AC540FCC3A896D5A89F7A0444D36 - 21: 6189807C5FDDDD68D20356ADF3B90DC2 - 22: 0356362F2BC4206F2B930C4282213758 - 23: 2F59956F19B3CAD687C66C4EC3CC916D - 24: E30CEFBDA3FA1A8EDDE3B72614ADDEDF - 25: 33E0E6BFCBC9581BBCDF13F4D3F26724 - 26: B11C6476F9775219A9F18B5E88857790 - 27: 49C7A9D7F56344BD405E53BE927E3A58 - 28: 99A06874B0F0CA45C9F29E05D213195F - 29: D21A60A18F061FC453AD5AC2A519071A - 30: 2F735E82090144C036E3D12DEF2E0030 - 31: F9539EAC81BBCD0069A31E2A3C43769D - 32: EDCAA9C85A614AB6A620B25AF955D66A - -HMAC-md4 - 0: 752E874F35085E497D5032112CC65131 - 1: 6B2CAAEE210F970AB481D6D8EE753114 - 2: 2162A41522C2DB0B8AF1F0C712C19A22 - 3: 7C2106C3CB687F35FE2658BEEFB497A5 - 4: 3715333CA3EB74A15B4B1802A1A78921 - 5: 403D9A691A130AFFFB81A655AAE1D956 - 6: E697C3CB42716CA1973DE0D15486068E - 7: 99676F34E42C61E396F0E76BCB77BEAB - 8: A2B2CE8CF8AC151C5556A36D58894C61 - 9: B8614BFF1DAAEA90BF319F333024976C - 10: B8759E8B97DFCBB2DB94D8CBE2C96B20 - 11: CFFE6119EB0C649831459339C1B0C82A - 12: B2FC0DBA9C4830CA66423728599D3660 - 13: 454749F1DE579F1918FF046FC1CAE7F6 - 14: CC625178FEFD46481B7D02618AF6194E - 15: C26D523EFCC42C4AF7EEC2EA4B45B719 - 16: C352DA2D077FA3F493A5CE0E9A79CB87 - 17: 570DDE9FD220F59867F17484605D2061 - 18: FF5954A163CBA61CD3C8424CC71682C8 - 19: 1240D12E3D6C07F6FE1CD595C847C038 - 20: E87A4D7958C43CA71791B13E16301036 - 21: B2CEDE4A15F8D64C53D243F8C5763C05 - 22: 54A9E9EAE155E7AFA6FC8A7E05D7FA9B - 23: DF0E79F27CE25E56ABCFF5E74D1212CA - 24: D9BE454A95E5D9127990577F7EB7183E - 25: 26F9221A8B854767861BF0281303B89E - 26: 92BD4CC81A673B254A4AB493864BB014 - 27: EBC3851E0AD28BE9876BEFD6B0A88B44 - 28: 1134BC8A40E1D2FB038B67548AC2040B - 29: 954700135C4E7F232337C84130B43360 - 30: 8C3EF2D8F896C8D252851A1543F72493 - 31: 52817E79D2B0B3A37DC08D18D3519F92 - 32: DA661A428B9659DD59545E3B09162F8F - 33: 3FF5BB67B48F87B4B642DACCD2E4001E - 34: C674F95BB622D7B8281FFF34E9EF3E7B - 35: 3A4D25E3BCABAD8CD4918CE650EF00E9 - 36: 2D91248C51837A8B80898E2CE42CBCB4 - 37: C0B3BD2B36493F0EAF9AAFEFDC37064F - 38: 9B4723B091102B480B2B59069317F292 - 39: 0F8EABB489254491FE19AD0E328A483C - 40: 25469BD482E1405E51AA021752394C4C - 41: DF1DF50EF9D95892D08DFEFB79D6552B - 42: 707A546964CB22710482C478E58C2E0F - 43: D1E243DB14E2F946D650C811030ADE9A - 44: 11A1AEA678E98A65420747DD6CF9293F - 45: 66E735F658BD689A9F1BA0B526827CF9 - 46: 98170734E67F576CCC3D01D83965A6C9 - 47: 399D99CB7979E80F6D3B5D5BBA5871CA - 48: C26651C32EABC76289CD0843D3BCDD92 - 49: AE0F50954C90E8897BCF504592D0626C - 50: EA3AB701136862428EC326D2551F8AC8 - 51: 4AE98E5A1E6B1BA8CEAE844E34934039 - 52: 7C9826187053186DDC2760AE6FB56DC7 - 53: FE0F555B851CAD830BAC9FBB40705671 - 54: 221BB509584BCC7E10F3B4FAB2AEB1F3 - 55: DD93EAFE25EE27C6FDC2CCDE7D273267 - 56: 535472E1ECD49FAA75CC6621BE7E6210 - 57: DA4554FF7D5B289A03D195F94154AF47 - 58: F15A3F547B5A3844BFF713CBCEF701A1 - 59: 279DE06FD5644C520BADD3B97D96274D - 60: B933E929073492EC1E2AEB78071C7B83 - 61: D1DA2335654AB4CEBAE5C2E78CF27553 - 62: 06FC50285F4BA5C8B5A478E9C02D6434 - 63: DB66A5D55224DDB50337B7FEF9A808A7 - 64: ECFCD0385FB49553EC89DD94AB084D23 - 65: 4187B0B79E6CB916F747B857AB2F75D3 - 66: E03E14F5E00B2DFC0614308608B929B9 - 67: 5F61FC3005167EB3256DB549DA8BA562 - 68: 21A4D14DF8E934A858569D8BA7F151E8 - 69: 5955DDA4CEF16ABADE2B551841C69B8B - 70: 8E77066A973B60DF64C27DBB93EF204A - 71: 2101EE9DC8221FF17D9D887FC39F41BA - 72: 6574A9DE32B7A673B5BA20FF18EF8C93 - 73: F571B14C9F5C5C1858D48AA944A13050 - 74: 0BA4BE0A5E853D07F79B2D29BCF046B5 - 75: F240C8C38D71131F510369D79FA32208 - 76: 920C294DE37C28803FF3C49A4135CD65 - 77: 38796D25822AD8F2AB4D64E4A65626A0 - 78: 65A203170FDF794397FD1090E318C5DA - 79: 965A767FE4A75BEECE26BAA79D816AD7 - 80: 0F4B30947B790C47924657648FA1D88C - 81: 74B05F7B7D006F7DDAB31DAE251C3BB3 - 82: 61B0366B57A8F46C2F6C16F935DA768F - 83: D4CB13CA922B542980F854C9780A1951 - 84: 039B2F23A1CE410FF4696D9C35C40C08 - 85: 2D734E28F995C2AA2A7AE2412EB99A10 - 86: 1A55FE47703ECDBE446033F492412812 - 87: 6AF4CED86D0181D6E99EE6AE57F295EC - 88: 69C239A875E0352D20BCFBCF8D5CA19F - 89: 62723FBBF0AC6F397438589AF06625A1 - 90: 424EC9353901795251AEF7D7BCFEB8BE - 91: 9BBE4ED6C8BD14F85BA86E553B1B8152 - 92: D7840AA82F788B7D58712E29003D1239 - 93: 4AA55512DCAF770FE4D9428FB318B0B0 - 94: D040BA08BEDFFB20D2C499FEB35EE12A - 95: 0F295EDEFC85546547860B7F7CDFB1AE - 96: 720FCD871B7D8824EE6A7DE9FF1A62BE - 97: 2FE3AD14E24C441C36186673A0D60767 - 98: 943FD502136B66D0313951198680F746 - 99: 4EE6829F3EFFD0A87115512ED28C85BA -100: 6EE1AC28A320246CA5C37F981E22D294 -101: 36BC623D6573C3ADB164F8A6F02315AB -102: 08B3AAED34FB0A0F99C4B22714B9CEAD -103: BDCD10B66096AB992DEC5539773EAF23 -104: 6DA36A53A79FA2C68E5060C0D2D43E13 -105: A3E886199532C025074D4646113F9C23 -106: 00D67A1D2ADCA77A20441CBF593FDEE5 -107: 2E4399F5FB44FF5573B73D01C5B248E2 -108: ED22A18A8824A30B68EE0EF9907B2B91 -109: 36166824634304417BECCC9519899CDD -110: 0757DB01193BEEE90617AA8CAD0360A8 -111: F7691CBEF4ED2E9FE4EB992CB3939970 -112: 09DC2FA975CBE8CE828919957D110EC2 -113: 7DDB74DEC57AE8C318AA5CCFB53872F6 -114: A26B7DD0AA30EAAF1F4F8314AB7DF16A -115: 088855527BEBCDB67A40FEA4FDDCC061 -116: D0F8ECC0C32B7060CB6128279F57FD80 -117: DF5B79D3671CA5E5B44CD395F6FFA551 -118: DA8999EA059C463D5F05D04020EE867D -119: C0EE404DD8447AA70D3725D5634E2B53 -120: D19D1A725F5E9F0DF21871B31900CA73 -121: EC202984BE149C93CC1D440CF6D29E1F -122: 422DB7C21B1348983B75498E270FE6C1 -123: EF136334BC30C92DB9082A9654B391E4 -124: 0B3526430AE734054873B14DD696CB3E -125: 3BEB77C0F85F8C6F21790ADF30EBB812 -126: 4376F8C8EAF5A94871822DBDFBB5F88D -127: F7DEAF52378FF735B2D171B17EF573D8 -128: B4FA8DFD3AD4C88EABC8505D4901B057 - -HMAC-md5 - 0: C91E40247251F39BDFE6A7B72A5857F9 - 1: 00FF2644D0E3699F677F58ECDF57082F - 2: 1B6C2DB6819A4F023FFE21B91E284E93 - 3: 04B0ED3E73FBB9A94444FDFFAA530695 - 4: 1557A22261110DFB31ACE25936BDE45D - 5: 54C5A67A9CB4544CA66BBDA1A2B8479E - 6: F803D9E43C934545AF078FFBB34BC30B - 7: 32F56EA655DF36D845E430D637C85D17 - 8: 14BD2095F4A478C10EEBFF379DE76DD3 - 9: AAF6867B3FA01DD26312B0DFD6371A2A - 10: 0FA2A6FEFEBE7CE3C31A38400F8AB260 - 11: 54C37BE13B7333287D0E74AA9D9227F6 - 12: 385D75A58B0C95E5CDC059DB168BD1D2 - 13: E73003103ED65C08E62D46AE1E1B771A - 14: 278ED4A4EBEA1FFA5EEC874F198C0CC0 - 15: F65CE9EEA7FDB90B9CC603329D3FB9A9 - 16: 8640836944EE0009B2CC6FDC3F5C39E1 - 17: 7819A99F82BABDF060AA51AE109629DB - 18: EF26336668486C76921D1DAB67ED5673 - 19: 13ED7BC140F1496E09AD29C644586957 - 20: 5FDD337CE9C4AC8D910833FCC2BD837E - 21: E9470246ABF7CF4D37FD378738D8F763 - 22: 384A75C33EFFA12EB69187BB80DF843B - 23: 63866A5406B9EA0341032FCFD0244A4B - 24: 8042F8572C8A9B88E135ACB83EF1FD39 - 25: BD1BE6AF2D022F966F612569E191F0E9 - 26: 9F70C839533EE4C7B3CF20C6FB65C94C - 27: 800A5CE92CA4FEE6F1D353F496113873 - 28: C35E93E1E54C84C4389D2DE71E1B9846 - 29: A130EF5F91465F5A56999F450E63F4F9 - 30: 5F16564E05285A099F628245DF9A3C2A - 31: A34F7E3DF06DD84CC67E8A922240D60B - 32: 945E50753B6E6C920183822D5F280F10 - 33: 2DDD269DBCDF5C21A1C3FD540FF4ABA9 - 34: 212FE3E2CEF7DF74FC01CC2CC83119B8 - 35: D98B2930011649F16C08BC8C0178D838 - 36: E39E21026111C1EFB0C491C0FDFA841D - 37: AE46DE06C3B0D2CEC35352C95A1003F0 - 38: 5550EE50BF88C9DE5ADA34567FE044C7 - 39: 6BC486627760373EACFF508F7032BF31 - 40: AE6E0B8DBCFDCCA4B3449B57647D5AE5 - 41: 6BE5A0F140DFC4B75439630E6F9A36EE - 42: E3E4E735BFE79397D4653A6243DF1925 - 43: 68C1D9E8973A3F6B92B588469D68A2A5 - 44: 956132D512118D5F446C8CB912B924D9 - 45: DF5C2AD650B3CA7A89EBF92EE618C845 - 46: 14D375CF7E4294ED99135E4237414F01 - 47: DB966D40B447692E2D13CC0C09C1B495 - 48: 53DADCF1C6B99BD403052A1CE1ED0D14 - 49: DEC4A3C1DB8F6AA4515C512C9299C4DC - 50: 3B3A51DD83AB1DC56A7F0CBE1C71923F - 51: 03C73353B3203EF9CDB95F9DB8750AF1 - 52: ED9E15FD86D66DA2D546D2BFC55041AD - 53: 81B649338F9DB1C6E592427D38221C7C - 54: 92E170E13BF40FF65E3B4C665F222DD5 - 55: 00D5E23F5F829B21D454C4445851AB53 - 56: 39057029AF0B3F4391A7BDC6DDCE4D07 - 57: 2DEACEFA698F9CCAD5198C4E17E69A93 - 58: AD35FD52EA199E26948009DF3546D3A2 - 59: 4C42CF2CFD4D8FD9A06E3F73D02FE818 - 60: 4D7C893E4313FFF72103854463414277 - 61: 3F04E8B32AB56EAF216503E46BD7AEBE - 62: F015DDC3EEF41ECC93E944FA3577DB52 - 63: 31F77A50A2ED96ED8E4A3CE04B9DAA23 - 64: FBF481373481756E0C88978F7E0809A2 - 65: 7D8D793B287C04E7D2896D76EAA5CA15 - 66: DAC74AEBECC2385DD9D0C3147CCA1F78 - 67: F6DDE50D37B460FF5E8B4C03A0854BD5 - 68: 5710D6A54A2124E06A6DADBE9BF76119 - 69: 19DB5D13A53E57184759F33976537AA5 - 70: 848DD8D32130626FBD11B0133C2A29E3 - 71: 4F75BE04BF2F6DD85D048DB82F19C38C - 72: 4AE9436540ED24BCB5EC62977AC90789 - 73: 859D1A9FC2B795AD60F24A37EB9EF890 - 74: CD45865317FD17B652DE9F9EBBBA16B6 - 75: 52313319D395F453BA2C0A0159CF180B - 76: A7B190C0EECACCA4DFC5B45DFB324718 - 77: 23E85CAE85B50F45F7F48EE0F22FDE85 - 78: 6A80DBFF139A5345235EF76586CFCBC7 - 79: 850E638FCE5A2F3B1D1FE9C28F05EF49 - 80: 797CDC3F7E271FC9A3D0566A905D1CFE - 81: 030CE97A9A0B1D5403E253D883FCAF12 - 82: 648FFFF44E416D9DE606BA0DDB751194 - 83: FE15098E0DAC65FA8EE45CAC67121CC9 - 84: 17C90ECD390A8B41046B4C7FA0354E4F - 85: 7D149DFF5F6379B7DBF5C401DB6D2976 - 86: 8D055A4701DD51CB9D1AF8E2AE59BD21 - 87: F3481CB07B034EB4A023D00D4FDA9A86 - 88: FEB22562FFAAA9CCE5CDDA34C29E55C3 - 89: A620AA447216709D8CE5C5F23474ECF8 - 90: F25FCBB2BF7440C5E3C5B53092B8C828 - 91: DBBAE1CF60BBCA0B05EDEA0B362F0A33 - 92: E18E85BCB4633A797FAF7975CEF44B84 - 93: 1BE27EEC72C2EDE151978705C7C7DED2 - 94: A15D36C5C5BED77699838832FC225DD8 - 95: 08F31E68BFBBB420742F80B20B69BE8C - 96: 5E9B4B5B3228F533BA8EFC3C0B9AAD3D - 97: 1239BA6D941D1D8AD2ED561BF517D4B4 - 98: 5233F50218E0D097EFCC68F1536F30AE - 99: 340B47C78B003272EAA4B9D22C3B0542 -100: E7F11759FE8A897364C21767570885BB -101: 054BD6ACBFD5421C0290B0839C0A0ACC -102: CC0748F7B2CC921CF5FA019F955066C9 -103: A4DF167697949B1AEDBBA3226A334BAA -104: 29893B9776BA5E750A9FCEA37B0116AE -105: 2DC25C935F006F7965FAB3256D77004D -106: 24089811FFF2189FB9AF38651F43977D -107: 0E048569D634BF652CD8EBF859C9B69A -108: 00386B569DAB73844A708BA5B48BBAA8 -109: 8033E1AFFBE1218F81C8331343FBE5B5 -110: 9B82008A34F3847C1204ACA89F3D57D1 -111: BE1A529F88AA05A42AFC40F663E97849 -112: 5237637AA645E83B0E56A1361AB80643 -113: 15BC4405E891ADAF48FA56D4356705D5 -114: 0820087438832B63AADC479CFC88BDBF -115: B1E3BA7E96605D5FF614B1BEC1F57AC1 -116: 838A096D64E6C0DDB069DC89E4C3F839 -117: 934BCE159F3959A933C87AB497CA8D42 -118: CA501F1DE619A570DC38FDCB8B3F7722 -119: 033B27D5994A6F5D5F6800539B69E876 -120: B447FC68FEF4E3CF9290B06EB6AECAA3 -121: DD3D3F72F0F1FBCD030D839DCFEE457A -122: EE73C4C996E0150D93B3144F20FB2C1B -123: 5AF9679D2441542391C6A903FD8C1626 -124: 2BD84B87230511DAE7256B62A46AA45E -125: EB159E5694C191F7708951EBC0AAF135 -126: 60F02EFE1DAFAACF65F6664A2321B153 -127: 14E5A0E90D4420E765C4324B68174F46 -128: 09F1503BCD00E3A1B965B66B9609E998 - -HMAC-sha1 - 0: 06E8AD50FC1035823661D979E2968968CECD03D9 - 1: 0CE34DEAAD5CF1131D9528FAB8E46E12F8FE3052 - 2: 23924849643D03BBEAC71755A878A83BD83F5280 - 3: 6119DD9A7024A23F293A3B67EFA2BF1D82EC0220 - 4: 379DC76AC2D322FD8E5117CCA765391BC0E10942 - 5: 7897CC86CFF17A3F95C7AF02CCA03546F5CC2368 - 6: 1FA1EF3980E86B8DF2C8E744309381727ED10E8E - 7: 03B2B726D71DAC6A2BEE63EAA09631DA78F5958B - 8: B8CAC4C104997A547374803B5898057B3F8110A9 - 9: E165E07F8D542FB288C7D367198D0618DE3C9917 - 10: 18125F046C675F434B3C53A28C301FB2D91B5D34 - 11: FAAB993F2FEAE442D28FDBB613D2C768ED13342D - 12: B657E7EE3A65C6484D007E21484813D9AED1264C - 13: EEEC2BB7BAC158742711ED13090FA20462A5E5C0 - 14: 12367F3A4E1501D32D1731B39CD2DB2C5DF5D011 - 15: 57DD9DA36E7A4E567A2C5AE9F6230CF661855D90 - 16: E37110DDD295D93990C4531D95564E74C0EBE264 - 17: B2115C4E923EC640E5B4B507F7BC97FE700E12DD - 18: ED20C67345867AB07E9171B06C9B3B2928F43188 - 19: 6CA7DFC9F8F432DED42E4EFE9F2D70D82507802D - 20: B39EB4D2C190E0CE8FA2C994E92D18CFBCD8F736 - 21: 91BE5ABF1B35F6227772E36337F258420CF51314 - 22: EB957199EF666C6D0EACC64FC4261D11C715BB23 - 23: 2A18D8D4AB1F8C528C9D368BF5A7CFFC2168D067 - 24: D4DC370D482D82932701DF8CEAC9337682C2551B - 25: DB9665A6A26DBDE20238F04E9F1A368D26564E4F - 26: D5AE212C9E543F2656699B59DEED54CAACA9A071 - 27: BE8890F9DEC6A02AE2848D8505B6408E884E6D1A - 28: E8D9DD9FAA3080560B0EDE798B745FEE2A1E5479 - 29: E219219D2CB8C363C2687F578446ADE1C0404287 - 30: E8E7767B35ED8D0965F68272ACE61924CB044262 - 31: 1B26689C1EF55448A61DFAEF98B6E7206A9675EA - 32: FE850390864E98A17FC43C3C871383169741B46D - 33: 3F63068D536A282C53E5C003BCEEC96646CF7455 - 34: 2962C292CE247F11ACB7E1F981447C51E9BBE63C - 35: B28909A2B7B2E0E13FDCB1124B0BDC31D7D2FEDE - 36: 8DA0FC30C8322DABD67D61E82FC92351894789AC - 37: 543DAC6D449FE2DDC3201927D08695F68F832905 - 38: 371540F3092F77867F0CA9DA69318C7673F68388 - 39: 7EAF32204EA5993C87E9A12C67ADA4C85D253281 - 40: FC4994BAA05F592901085ED7DA188EC3A9BF36E3 - 41: EBFE77592EF34E81BDA05305876411484DC0744F - 42: 25F64E8F076305D6F5741EA58232F68B725B8F6E - 43: 5DBA03F7E4B4226666F0D8D5BF49FEE77951D121 - 44: 98E1D56D723DCACF227D2AC67BF2D6E7FD013497 - 45: 53550BC55A367D87416FFA25261362E7D4618DA2 - 46: B18434BCCCC5F08B35397C1A6684D60F4F3A452F - 47: FF2BF38DFC6909B46A01E055D173F67A7E456341 - 48: DAFA445432ED37FEC99059DB8A0BC528E788E95D - 49: 7FF823C570F8B4C0E483165C076AEA7B5E727632 - 50: BC4FC948AB621FE1419CF6006DC04E7D7B32FA23 - 51: 1678AFCC3FBD1063E7C82CACAD5B6A933A93091A - 52: 97DC2F9F56738FDAFFD555BF09274153FC2FD009 - 53: 74F5CB4F0900441B7AFFC278C01A3038DF3D60C8 - 54: 021F66143270C9D58F26AB193DBA81A811917CBC - 55: F486D1C8127813FEEEA8A693C4B8ECB5BB53C3A2 - 56: 8397CAB8EED5B2164FEC6BE688971DFA2138934E - 57: E4477CE9BF8CC5A4CCDE039B4E3000F1A0F4153A - 58: D6D2D1E3EE4D643AC4B38836AE54E846F99B376D - 59: 9545B2C6279371D4D928AEE24328121D43DE1E5E - 60: 947ED38EC087C4E53F417E8216408863A8EBFCB2 - 61: 32518A2326ACDE1E962B3D0D2BF950F318894E83 - 62: 5D21D368FB9D879ADC27B341D608BCF860AB14F4 - 63: E2BEDD94D565A51915B1EC6FA9DE18C62D12533A - 64: 15ABF657DB6473C9E2F017C7A2F4DBA3CE7F33DD - 65: 0C9DAF8D959DAE3B66FF8A21A94BAFC523ABC462 - 66: A36BE72B501D435CB627C4555A426C4ADAF3D666 - 67: 1C171979D67A014A0422D6C3561C817A354CF67D - 68: B75485B08ED052A1F4C3BACCE3C563DF4BA82418 - 69: 17297624219C5955B3AF81E5ED61C6A5D05BD54D - 70: 38A9AC8544F0EF24A623433C05E7F068430DA13E - 71: 1E9EEEAD73E736D7B4F5ABB87BA0FABA623FB2E5 - 72: 4B9D59879EAC80E4DAB3537E9CA9A877F7FAE669 - 73: 7F76F2F875B2674B826C18B118942FBF1E75BE55 - 74: 1716A7804A9A5ABC9E737BDF5189F2784CE4F54B - 75: 168027EDF2A2641F364AF5DF1CB277A6E944EA32 - 76: FBC67DED8C1A1BEBBBC974E4787D2BA3205F2B1B - 77: 33DD26C53F3914FECF26D287E70E85D6971C3C41 - 78: 97906268286CD38E9C7A2FAF68A973143D389B2F - 79: 45C55948D3E062F8612EC98FEE91143AB17BCFC8 - 80: AE1337C129DF65513480E57E2A82B595096BF50F - 81: CEC4B5351F038EBCFDA4787B5DE44ED8DA30CD36 - 82: 6156A6742D90A212A02E3A7D4D7496B11ABCFC3C - 83: 3040F072DF33EBF813DA5760C6EB433270F33E8E - 84: EE1B015C16F91442BAD83E1F5138BD5AF1EB68E7 - 85: A929C6B8FD5599D1E20D6A0865C12793FD4E19E0 - 86: C0BFB5D2D75FB9FE0231EA1FCE7BD1FDAF337EE0 - 87: AB5F421A2210B263154D4DABB8DB51F61F8047DB - 88: 1B8F5346E3F0573E9C0C9294DD55E37B999D9630 - 89: 09DAA959E5A00EDC10121F2453892117DD3963AF - 90: ACB6DA427617B5CD69C5B74599D0503B46FC9E44 - 91: 9E1BB68B50BD441FB4340DA570055BBF056F77A2 - 92: D3E0C8E0C30BCB9017E76F96EEC709BF5F269760 - 93: BE61BB1BC00A6BE1CF7EFE59C1B9467D414CF643 - 94: 19D693B52266A2833ECA2BB929FBF4FCE691A5C9 - 95: B99816886D9FE43313358D6815231E50C3B62B05 - 96: 7A73EE3F1CF18B5E2006A20BB9E098E98B6513CA - 97: DEC620F008EF65A790A7D1139ACE6E8B8EFCCA5E - 98: B6BA0EBD215CF1B35742A41EB81A269ACB67C9A4 - 99: 3A0FAAD14D3B64BE4EDB9D5109DC05DFFA7680E2 -100: 12E62CE53283B5422D3EA5D8D00BC7F0AE8A127C -101: AA36F0CC6B50AB30286BA52BCB9BB5C1BD672D62 -102: 55120C68B419FE5E12DB526D4ABFC84871E5DEC9 -103: 372BF92A9A2507509C3D3932B32444B7BE1C9BAC -104: 7AB4B04EEC091F4ADA0807DDD743609BCD898404 -105: 20CB412425E88482E7D184EFEF79577BE97BAFDA -106: DEB91399A7BFB8323BC8E6A5F4045125277C1335 -107: 6769F41624E553B3092F5E6390E4D983B851C98C -108: 716760E4F99B59E90A4F914E1FB72A6D2C4B607A -109: DA0AA5548B5C0AF0CC494F34CAB662A30372DD11 -110: 17A0E2CA5EF666EB34E2ED9C10EBC5DDCD0D9BBB -111: 1B3614AF749EE359F64F3BE3650210CC3C3498ED -112: 346E604622CF8D6B7D03B9FE74E7A684AECCA999 -113: 629E46882D214F9BD78418C2A97900B2049F1C83 -114: 765F86114E942214E099E684E76E94F95E279568 -115: 002ED578F79094B3D7E28CC3B06CD230163F1586 -116: 52CC9748778AF5C8E8B41F9B948ABCECF446BE91 -117: 9326190BF3A15A060B106B1602C7A159E287FD4C -118: 18A5DFBAE6E7C9418973D18905A8915DCEF7B95B -119: 6D25BF1E8F1244ACB6998AA7B1CB09F36662F733 -120: 5F9806C0C1A82CEA6646503F634A698100A6685D -121: C3362CE612139290492225D96AB33B2ADFF7AF1E -122: 3D42A5C1EAFC725FF0907B600443EEF70E9B827E -123: 7FF97FFC5D4F40650D7A7E857E03C5D76EDD6767 -124: 3A92F2A18E8F593E6A8287921E15E2914DF651EF -125: CDE6F2F58166285390B71640A19BD83CA605C942 -126: 21A227A8DA7A9F5D15C41354196D79FE524DE6F0 -127: EBE93AB44146621BAAB492823A74210D3E9FD35C -128: 6560BD2CDE7403083527E597C60988BB1EB21FF1 - -HMAC-sha224 - 0: 6E99E862E532E8936D78B5F02909B130AB09806B2AF02F7CB9D39D12 - 1: 1D1D08669FC34CDC5FE5621A524E7181CD5B5BAFCA3DA56D2E15FCD9 - 2: 014A21F82D0CAAD15EB74DD892187D7AD93F2BEB549A596DFF2C9AA9 - 3: 5F600F19EDED821AEED09781792F9435458A32A60FFC1B678FE2C905 - 4: 8D933E18052E7FD1F98E5E7D02384DA60F3E743801032256282AE2CA - 5: 21362A65B49C33568251CD1366EB13A4E683359855C00F3AD6710896 - 6: 1E1814B72BFB185265AF94FA622E4A1A70826C06F2BE2EFD96E4E168 - 7: 118F2E1C2F1AB8AF2BD17842FCBFAC966F5B21A81996E3CBADF76442 - 8: 2C6C72703E33A20EA0333629503EBCC41B64DB829064A5C7897C465B - 9: 794046ABC3BD8165D12C2453FFA3FC518D1A6498A48C91053BEA2966 - 10: E6C3B6E2DC215702960633C976B86B8378D7780FF884910454032C7E - 11: DE7CFF6E85D9411FBD58B28FACF72DFDAFA115614BEF3119F6527104 - 12: 11CF7495ADC07EC29EAA7B3464F772D49999A5E1832F71FCE18CF7F1 - 13: A7541E63945FCAD62D2570B015079DF0422E96075986B45772860F38 - 14: AFD3EB7EBFBA79CC68E4F6F6A2D758969B5C5C014FFB53CFF21C2841 - 15: 28D942E37CB92EDE2E6F994E9EEE2BA01077D099F3562FEF97A8CAC6 - 16: 34C7562962548AC9661759B4FC347D6A82CD47991EA06E855571CDE1 - 17: DA76FA12D69D1FDBA5E544495BBE45F620BE147B73D6AA64D3B3C298 - 18: FBF1911FA019CB7ACA20E3F93ECC0D5E8D60DCA0A1A7420C63BA1864 - 19: 565FEDE0EE20842B82D59644929C2A1A426E397B38FAA772781FE018 - 20: 7B9C2BA77B2989904F194021D308089E23F00954275AE9AD87306A31 - 21: 66CBF93ED8071FFA36B61F3AABFDBFE714C3C055B2FBDCD3CF369025 - 22: D96F10ECBFAD7FDDDF60BF1511E94869ED1D992051539E50D5F32831 - 23: 5473F93F0D979D77C3C6B9CEEB2F3DC1058D81401669EF4AEAFA17E7 - 24: 5B5A75A7D99C1B40961533C345B95FBF0AFA916D6E133967FCAA15F2 - 25: 2A1E50E18C37AB7BD928AE14C206FAC9B3E869173CA337FB9374565D - 26: BF2B241659C96007ADC25D9567947BAA740555D066636731EEAE3C97 - 27: 6E1E7B64A70B190BEEBDB9DA82C8E4B160CC73B8FFA224A6B92180B3 - 28: BE36A5F8DAE9294B3995D278CBE9273E66F04D46890B44EC55028C3B - 29: 9983C289CE2F806F41182752A753E0A890217DAF3778B3AD2ED6685E - 30: 8B0F08EDF2CBE25E8F9EE4D2948BA6BF81672BF4F509530328A8BAA2 - 31: B65FB77E6CB86E5F409EAC2F1B5A05E1910213563F816121AFA8CF14 - 32: 5D15E17C8C159EA5DF5F126B12ACE777EAB36A0082C57DF71E4D9609 - 33: DCCB3D17C8756F2546B3E5B24B1678438959D83A56524415666DAE05 - 34: D28DAB7CA715AC86BF4469D743A0005AEE0101F339350661D46A1684 - 35: E7A1CCC4B2B300457DCC64534152119390B69610C7FF9DD3A683439A - 36: 29380148DA403AD5911C7BD52C783EA97EC306F2B32BC426C4D7FD35 - 37: 56DF59CD635F025925A968591E60DF2CBAB22F98B67C78122F3CE868 - 38: C20EF10AE9CD99CBB54C94C971780E0487899D7A810FA51A6553DCF5 - 39: 5B78837F366097CAB6D31624C06B099BDC71286E3AD8873509ABF4CE - 40: 8DA09589C44E710B9F84014FE553074E72E0A86C9418EFBBE420D2C8 - 41: EEE18FA2BB5A5CD16017B4621ACC4211EF7CD60613A8C879B0AFC0D0 - 42: AD9670FCD043E6F91CE986E6F55905337248B72E7B8551AE72ED32BF - 43: 97FA4FBA4815DA49F6127C96C969574AA9543B338F93BF9171D2547E - 44: 838D5AC81EA6BACB827327E8EFE96CC2B14D92C55B40CE58F4DA181E - 45: CA99480DC8480FA07784EF02074453664DBC92257366514060F07C93 - 46: 93B0E493D272470F9F274DFE4B9DDF183B26011090E15861FA21CAF2 - 47: 770CAE487AE5890DC0B931EC17623293EFA5B22EE1ED496A37EB9FCE - 48: 6F1D5CA0446E7B82DA02847ED1761CF02D646E56FB0CAB9B120E5282 - 49: 2A8A1254F6CCC3D656397A5F2D64C266412FC5207866B073B77DBDEF - 50: E8CB788AAA965ED87FF2C7B5F3107684326DCBB0E667217E0EA62C51 - 51: 85BDB6D1486F27827D5870812BEEE2C3976E0DED4BD2F994BBEC12AA - 52: A14E0343FAD6BD78E0A8E3BCD6D0B6C83B1220FE6C89F57F44BC805C - 53: 2C60D71F2D4BEC90CF10804DCEDB9311637B34D62E9CB68B8503162A - 54: 36397D66B434BA744174DA541F080CF6582F10322C7FB1869A100141 - 55: F612E4EA307F56447112CAB5D2EBEA7D12C7C4427D9155D4085687FD - 56: 9798B420980748993BC78E3601B8AEEE2D2CF6E59799C7B07B88435E - 57: 50BED37F1EE78FAE16D178FECEC2EBE4776C8E5FC738F9506E8AF676 - 58: 2755438A9AC457B81999D9E1E479C36DD9AE1F920F5BE6D109ED7431 - 59: F3DC2238B13BA706A048253F86B79045B72EF767CF25DC62F96DAEA0 - 60: 11900A3154C4DFC49B941258A134C9201DFD280728BDB3F8BC7903F8 - 61: FC584202454DD7C9258F72A6258E42F3C2669FD138FD7AEE6200C4CB - 62: 185355C13E146EA89387C332225DF31CF114AEC0BA3A5A5B53667709 - 63: 8194DABD2F7A02DDDD7B752AB5669821519640EE3B0059FD333F3401 - 64: 2CD6946C6DB676ED1EC272AE34735A0546AFB8D996323272C39A814C - 65: B7A344BC5EFFEA97AC49894A85B96F9B570E680DFBB28C76F7F9A180 - 66: 9011B80655A9CC7964CBC4BEE1CC03074003CCCFF5DA553B289ECF6A - 67: 6BDE25371B7EA9ABE31A524E49CAAE40DB220E405463D93FC7F66904 - 68: 35694194E10D0EBCA6758099D09C99C3CAB37AFA52FC4F4361C510F3 - 69: 4E7A79F362D7AE5B1680F30E6770CA46FE6264C9FCA566718C01EF67 - 70: 9DD18D21E413AE12112AFBE16684BFD4FAED7467A2FD5904EF0B493C - 71: 7532D374B66B1E5B17EB49810DC3C04264553E4C36F4550D1E860B70 - 72: 35EB09C82A624B1E3ECD965ED8522E9572EBF26791EFA667B4DB952C - 73: B9C17DF6F2A6506FB1DFCF1A9089974C45760A438330AE7547DFE685 - 74: A7DD0267C15B36D8BD1879F879E894FB9F33F254556B87BFFEDD71A0 - 75: 68A354D120CD63A5D34EEE84B7E5E5BC1E5DF6E021F712BD4270B781 - 76: 441DC4884130D48BA134E2FBA86AF643C8EB79CD1AA4688F82E0D3DC - 77: 17A3F16DEAFDBC1DA00BD14D9C24497BE765F41E2EC79578421ED8B9 - 78: 8756A267D0CAD54BFC848FCC4D6B6C94D39CAF07831EE35324DCD35F - 79: 004EBADA70F19BAB48E6072E2090941DEDB5CC0A7B624E4BBB671382 - 80: B7F8D35CB865977423710FA1E0F939808E68ABB54BD7EB0427DA03DE - 81: F3D0AAA2F912FF95251D3CF51EBF79B940DB56839DEA8BA5872D1FDE - 82: 0835B2DC376BEAE873F1FA337D75C72FD1BF0F72A81669AA891F2722 - 83: 7CF9A7D57CADEC3F013D4BD87C00B420CBFF73670A9CBB072D18EBEB - 84: 68AC0A34930329F5AA40137987208481E34D8B9C08EF7A85AE3AB38B - 85: 00492F706D84B903D5355FDC0B68C2C33B484A95A173FDC4AC945028 - 86: 6F6C509CDCC84CE1C36AB76C9BF30E4422C90C869C164C64696AB5B7 - 87: 4C0A35D512BD0DB15915DE08FEA8E6027063A1780C104F6273CAD5C7 - 88: 27087F6425878D64A56BD5ACCC0E303F803B7208F20AEFEF75501F03 - 89: 4EF78140430EF60F3CA12AAF8132674B0DDB154F495029B4051C2A36 - 90: BCCA3153EF93AAF21CA02D235A23D3013976295E704223CB37E860BA - 91: 20CC8D4C64E09B00ABF23864BD7EDE542F5BE480AFC4B9551B301EBA - 92: ECA3F86DA00098D91F866C58558BB7B00C9E4239CF83C5A3E76291B3 - 93: 7AD9AB198858820D20373C45173D76AF8D68F829D9A250ECADEE0DA1 - 94: 3E1C202F2D589BDAB015306AD063784E5BEA48AE8D1DAF45D571D2FD - 95: 990C44330D56EBC9EDD951F8CB92D5847F4BD3C6442906F57A828FA9 - 96: C92F9FCC6220EDEF52B6F842635A83914B236862F6CCBED16F4899DE - 97: 0E41C85D5C6D625E1884EF7438DD9EBAC818AB50CC265A73165928D0 - 98: AE087D57F9CDBCDF4DD68A3E8D5BDFEC709A532A4A646CB31785506C - 99: 4CB03AEFD24C833B5350996EB261E803F6DB698FB81F37F8A5C3D891 -100: E680BD218AE972999BECDC905F4D39251ECF49B29CF0A13AF5FB09A1 -101: 64326D6B692B0A17045434BFF13282ACB91E7B690339F7FCEBCC9AE6 -102: 20CD91504AB04E2D3CD849808F2362943BECB310F4A0BF6E3BD47751 -103: 80F607E2D79E1EFB0458E47C8E5726CDB8387BC05F42D6EAE3239A20 -104: F83C023D6F539967AB24309DD28321599782ACFCFC76B77186307300 -105: 70164A250799DBE6C5BD3EDCDEDB16D2516A9FC1BBA294C49F753824 -106: 1883397C9C4C9D33FB9E1E03325EDCEA1606D7ABF86C4387DABC449E -107: 1355DFA06822CC1F216C131F2BAA92A10BBF109BA3E648419A35C0F3 -108: 9E35B9B307990B7D664B9EB7F06EFDD23037F859ACB6B96A5287A846 -109: CCCA26C8F8405FF62421558255F2DA06F73F17D1AE1763A0BF8430DB -110: B4FAE909368405206333491674559B9094DA4C48913D9EACA28AD75D -111: 3A5E7D9273F91E10545FE6861D4FC223A5EB0F7B4FBFBC9931634C25 -112: 96553CF0C5C6F6A17FEED04024FCE1D292C392E60B3595FF53007AD9 -113: CA9B79F403412F71FBC10E094B35088576EB3F7F8B5D08757D89F45B -114: CF60CC5B1822E4A12EEB3E1E5F4AA79E345D8C8FCC546D57DCC7C784 -115: 807D65C33E74DA0E2D5E3788084C61AE3E8771FDFE643D1269A7901A -116: A5418DBCA94A1F9692FFDB3F7AEED75806CD9FD47171A6B67921C0A8 -117: C2B880C9E9D78B0C397D72C8B6684276E8C22A7F4D6821DB7C998775 -118: EA447EA731673E5DEAB57012CC9E0D3A7B2443165B665822963FD6B5 -119: 0F6D50C04357DF9240802977779D7F2214FBDBAE95B6D8F59B414964 -120: A3B24B29B29BBF32A01F21FFF13F44FCAA5FED50718803AC3BAAC548 -121: E31E36C38A7F2525ECADECA047533830A9C46D609E297142AB3DACAA -122: 592FF0C399A6CC1606FA3F404DA4BF8618A4DF159CBB7E05DCD30BEB -123: EEDD6A5902091ADB8EF491F820613740DA73A160D825121912613DDB -124: 3A2FCBFCB007F45CB0EEDBDD5A765EA0CB7A142CE3C024114D6D61DC -125: 5D29E1732898854AF468BBFA5B87065BB811AF8F55C91E82E888E842 -126: FD1F646D021EF31F634EF5FB0506620686B9F7D9B5C672734CA10FDF -127: 5E43945BA9DE62C364E34CC1361FFFEE9BE8974D7CF5D2E06428916B -128: 0FF4DA564729A0E9984E15BC69B00FA2E54711573BEE3AD608F511B5 - -HMAC-sha256 - 0: D38B42096D80F45F826B44A9D5607DE72496A415D3F4A1A8C88E3BB9DA8DC1CB - 1: 12B06C3218C858558CAD1DA6FE409898C31014D66CBE4ECD47C910EC975E104D - 2: EDBEF6AA747C951F25AB6AAA0D874648CF18FFECC4C9159F8FC71E971FAC6D21 - 3: 03436338A166E9051599AB268CD74867C6159378069A9FF46FC07CAE375EDA68 - 4: 634758DF0774A587F3AC6AD7988D0965524DE24EBE4DFF07EF622BCB8DA71ACD - 5: 0C08E52C7CFF8B5F70781197069DC8F209552D241687BA0D24661CCCC28D3937 - 6: 749F473E0D934694AB9917569A61591CA50BEF18CABDED51666DF243DE879D53 - 7: B1E12CFE0273F5D27192D1A4B70EEC4DDC714B66C8BB1921C63381F78CEC5219 - 8: 1C60F13A1C539788E989BAC2EBD4F8E126EE6ED82C2E25817C63B2B633FABD33 - 9: 5643F445B2C0656A49BB3DB5088C9E2E4B2082C2B611BBA0DAE5791F2FAA5D43 - 10: C467F47251DAD4694C9C7A6758E54CEBD68FC933C7C57458020774A2A2B4288B - 11: 85C90CF2719BEBF40EF8D501FDA20C342BC406E728551BC0275ADA1747BD981F - 12: 06B72DAC895B008DA249B7B1D8A5133F09D86BF82DE2C4251BFA6C3D8C4CF03F - 13: 49EDB6714A556DF324E41A3CE5B57006E38FD7CA8B90FEEA2ACAB429204747BE - 14: 7411921D759DA0B491D6D4CC372DB79CC163F146C345B4A73D93EEB4C262A1DF - 15: 5C37FFBD1F0512AF443265B2F3E8B6D01AD9B45FF6F373D2CD0A7C6E48D03E26 - 16: 773165FD16D51E51CD8A958E548902B47BBD0A6E156C31B6FEA036F6D8C4A90C - 17: 5B4BE909754EBC8ECBBB8B5DA6298B8341B35D92E17CE7281909EBA1EF568347 - 18: C6EEF2D12F54815561EEED3426D7AA7E671E26D42384B9478D91FC6B14CC76F8 - 19: 4C9FA0575CD96BB1DEF6EA79F5EC7A1F0478E86352812F690C2C2BDB70028BCC - 20: 7F87BA45FC41EC30E76F61E4EADEC013CE2B4C49CA6FE6D2FA525F6BBD45E103 - 21: 9B8CA1D70339A0894E16CE4E76F6655ADDD3EEB598F3DD80FECC5EEEF3F638C3 - 22: E4608AEA430A638799991B748BB858C91AF58F56B226E1901D28336B30498279 - 23: AF4F9C52079B28546FBB44EEBA20C7AF0BF493D34EF6967B07CA32FC4DE25ADB - 24: FE51F3A9313EEDAAA991350AB4D1D7045D42AACF3AC7155DA3AD9A2F1DE3A73E - 25: C1F5AED9D77F85404A4B308A139D33F351B20C91A738E698BD8182F124D96C82 - 26: 3CAC12A252B93B7D724AF9119FD3C18E85E88401F93BFF42AA05711B9833B1F6 - 27: E61D4E94C212324A64B1A0C04B2237A9A1C5CC003D83EA80BCEB45452DCB42F2 - 28: D01BA47DABCE4704B6820EC0ECDBEF137B9C4ACB80DC99B7C9220CFD9F9CE363 - 29: AED502C53A8B2C76F671376CDDBD0596376B3664B917CD9C9ADBC489543D4721 - 30: 3405AFD96584C5E5963362948D112A70155877BE3B5EFD479F226B73351ABAF0 - 31: 5FA0290DC68B72B1FA27DBAF157923C706B3F52CDE9C4EE38CDA31D376B0BC0D - 32: C1391C694C985CCBA707A8C78AD05E2180AF6B4DA5BB877AAC5E2AB33B4890E2 - 33: B018E7B15F92DBEC58F767633BCA3BD0D84B6D5B9443784DC1757166D7AA1C16 - 34: 8D9E2C84967004E3957DF59D502BC11CF8C8959368117EC5DB56AC958A3E791B - 35: B0EAF9C0E869D7A304DDB30061A73C580B0A6F9D49E15442ECFBB3B5A851855B - 36: 0B48B0D8C3ACF7B4F9ECF8E46563C921B1B6720B6C650D72DD1126B6763CD595 - 37: 8879D239EDB09F6606957D96A1F4BF37EAC0F3419881EEA79E8BF1364FB3FF6D - 38: CC663E436DE42E32EA110F9D90EB990D9151C9F06D51243D2076B0CC45361736 - 39: 732DC3B1F809E55C498C53FC75A23966CAEA16BE984F795CB1BC94D026FAB30E - 40: F1F0EEC77D97A0234D0F19B2FB12A96B6E2FF8626F79A74D4AF26CDE1344D838 - 41: 75C9D8C7344668C478D8AE6D9E2C41E336E7A2504CDD43B73CCBF78B4C05EEB1 - 42: 4B149BCA6429408B242E76C52C4D3A0A5F5437EC0AB6D24D71EB1AC5496D75BA - 43: EDB65EBEBC0411B4FDAF186033E306AD500711CCB80E770E99523BB2672A237A - 44: D1BBFF5A48346A0DFD5CFFAA7A2AF08C27F3FC2908D7A5D2F575E07CA9E72474 - 45: E8EFB6373DD3457610E57750738358A50026D2C6704A98148CDD69BFF7B70551 - 46: 8E3733B729CEB97444BCCA405044B98F45FC59BBA86444A3FC0F4DF4854B5C4D - 47: 868F3EE8F4D4DFEDC3FFAEEE1FA069F5FBB2CB818E63C28151C1566634189234 - 48: 3F5396115DC7F17AAB19A3A9779CFFCCA57DE7A7C1A42F748FEC49B7D8C2B82D - 49: DC2A5E3E176A693AD8CAE551A505729B78FBDE778B526E28953BC1A56B54840E - 50: DC91FD745E9A7A9D0B41C79B3B3939B84BDF78BEB007F9AAF8FF82084759223A - 51: E73DCF5413F17D4ECCEC813DC060EF907C2E952AF92DD247A0AE2BE798E6A40B - 52: 696B5EE4C1E1D8B60B0015EEA2389C9A35088022FFF10034D0D09FA722A2A3E6 - 53: F86C07265389512B2CE240A89EA29D61C6C79C2738FACA157B0DE43294485682 - 54: DB31CBBFD28D6F8564219911EFB748A5663E482DBA26E38634E8E27E3CF65707 - 55: 2F9675313AAB7A940AE77CA906D0342A448FDBA3F7589D14B1344D586EA157DE - 56: 7D829FD994258EF2AFDEF22C8CD5CC1D29A9A55B62847B3B6F5DB630421CF999 - 57: A6CDB9BC9AF75EA4680E895E8EDDCE76F536F7CCA571D62781A06DDB3424FA50 - 58: 1B4186A34EB07F5B3127F2BE0F3943610679DB0F6BABC7DA03B416FA577D36E2 - 59: 7B5DFF3459DC10B9B7AA2B2829094F97706DB5B2F133B8BF9F48D90253D68359 - 60: 2ABB68160300028BBF3B5A414970D11DF4FD6F4B4A35029DEF8492ADFB19A480 - 61: B1B13ABF9D20C42E755D63EC63C016126259C8A6C3F9AB3F0F6AC5D0BD44ECA2 - 62: 9ADDD17E5CF407CDBB12E5E52A50CE134F1B48A2A2AF90D7308344FB5A70485F - 63: 6A4C06DF40BA515C56476471D4A94F87A2B91EAFF6C66510892F2F20A342B736 - 64: 555D424206C003BAD0B08BEEA76DFC81B307C79BBB6E4F15325B2ECD37E04423 - 65: 8A58733E0B990D0D82F93F77DF36E30DCFD03B3181B73C544BB097A3A73B6AC9 - 66: 6FCCCCA4172E30A281A702E36E7BCA07370D4B57272385077A44D5F7933DD2FC - 67: 3B1A91E49AF88B1832F8E91109C7CC5DBEE2847D9ACD2A57404DBB565480AC75 - 68: 69584075C278763CB0B09D4C9E15E9300A191BF99907049F14EC8DE24D86C121 - 69: 2EE24340D13E68B10B95C3F77D55027F98BDE6BA5328D0C02CF89965687C062B - 70: C04B37F5932F427D40E21EEAB7C9594B16BFCF4F5FE2BF175CD63C62F2CEEAA2 - 71: 058E1AC8971ADD2617A4BF7D02B46A8B74A4D52B25643DF9729A1E7DF6CCC86F - 72: 18001F246ABC760197482E25F3AC64B14A795E55B41B505D6027261BFDE7C52C - 73: 4AEAAED524B173E08E54A83E2D9A8B8824E6E2F1B89203D698E9BCE7C3242F8F - 74: 7D82CFB1D7427302889CADBA23A99154CBAC0C9ADEC94EAF29EB07DC86B0B7E2 - 75: 18D42E92BA532A409CEDA8E3A07E751B430800827F5A9F14D93E3ED231BA08AF - 76: 8CFBA378D8595372DCE5D9A6E726C23512F84C0C1EC3C66ADF6B6C55DF63936A - 77: DE1A6E280A9054C91B826785928F37A16E1D2A9A3CEC831185B26D2B8EDE158C - 78: 920C40B4204C7F3D4775176BD245BA0276604C568B3C29943C9AEF1A1C93428A - 79: 935BB39E5FBCE5C4A15AC2A854475578CF80308E531CA86818DABE69BED8824A - 80: D608E561471CC09EC0865C826242CA26AA1C90BDF1625E1A38B96E3EE0CC5F04 - 81: EFE2A8D806A1A71596A05A2F5F48D18CFD4A742247B04E8089FAB27291A8DD50 - 82: 80235BE35DDEA5D49F124D8BE3D143F87CCBA7D0608C7E2CABBAAB01BB95E477 - 83: E9410E0DC14F3BE36A49A5CA673C12E18CBE4F0817E0C1CBD2069349F8A09BBB - 84: B2042A81A36F27B4CB96DBB52A61F701A815869FF5AA0CDCAD0327E1ED1C2F22 - 85: E9E5A9501B24952DCFBB9D59CF95A9A9E6A27FB7315EB472D1E2B7F523D06D42 - 86: 99193B4FAFEFFC932B261EF169250B96901ABF877424FF667CC0DA0154C50498 - 87: 1D9C7F7E681D20E1E0324EFE71C8B6913FE8CA87EE52E443335115AB2C458E7F - 88: 7308DB7E2591D2342109C5084B1174F07D289FBE91472FB2D8C06DF39F826B84 - 89: 90F06ADC29070DC50A23D3F093007E273E783491A70A2F0AD6BA40E34F02518D - 90: E676DEEDC972019F10FEC24B4AEAC0A97870E924F7B1D6D3ECF91EF38A2AC544 - 91: B5DA3B40FBF373795E67A6338F9AC3AD742741F34048930D9336D429D02EE78F - 92: 6FDE20988863CE157042EE52065EEDA233BB2E6EC0464B9DCF2AAC1F3A18971F - 93: 428D4CFF477F0F0379F634D1E7C15E4CE6DA067ADC45221A860C9C3AC4235753 - 94: 9EC80B57E921DA3F81D13B65AA851F5971E4074C96E0D8B64E50A7F5089C1FC8 - 95: 9088151BEF766D0896A48EB6DCC8A09D151C3396FBF3A9FE193C5E7BF9030B01 - 96: 86D853024A762536666316F363BB867EFE25FBD03BDD28EA7522973A1A1BD95C - 97: 007104BD935B532BA4702A78C505D67B41358A61DB8069585B91B1445DC346B5 - 98: 5C5709F6202948E805FAC25C454ECFADFAC693955864494E511F0CD1FC9CFDCF - 99: 0B010F71C5323CC96D3B8DF71170968096E44969EA55B4C3DAC632D30D81D529 -100: 54621EC4F31CC7F6273601D81674612B44726B5CC4A76EAD2BBC3D32DBF62A9D -101: 28EFE1AB745BE64E5DD7286C97360FF2D287F862ADBE44380F85E1388008079F -102: 831BFA684C25542676AD52819249A10D9EF9C2505D69CC1397D0D39D08B39E5D -103: EF7922C40CD96A47C5E7AE4D958B495F1D6954EDC20596E303CFBA43190A9EFA -104: 3A0262EBC746A7C044C1DB043951F7EAC645C40F554898D3D7B2B7AAC4EBD396 -105: 1F2CFBA7275639A12DA7CD1986F920C47850DE3FE13C931618C0FAC765820ED5 -106: 7AC8913C0975101E187FDADDAC5B5EC467A25869C4E630EADBB42DD2DFE4958A -107: D386591F326C91D274FE625A667B6F9F6F7D99CF56ACB365A218F1CF8E167A70 -108: 66286CB1B61156B005CBFC94C2CAB1A6694D7F123411B8A123F2ACD821C291F2 -109: 844D1038E710690050DA737D56FD6B17C261C7BE512713E62033384B53C40902 -110: 7EF970C40080F554851277F4E950C6F378B0A3DA3CD1BE250D976162F8A4EE79 -111: 9BC20A2B67566688BCAC77FCF30259F11D9B2FD2277D033E6AAE19E36058A353 -112: 796C72D95BBA1A4341C6B0397E165DD21CFBEF55555B35C717CE33B6C6ADE490 -113: 1E6A9C1F78AFF266EF8FB25C32C1FDFB4A0F64AFFD046D257470BF6DAEF61D6D -114: 0E1AD927AD658C5E0321333AF8AE4ED69903B4F22C5DFF90AC93268507A7C86B -115: 07B7A778E2931704E7FECA284FF3B14071E255A2B824AD0A2272D21448579CEE -116: A8D810DF06368A0E825D6DB4394916E43E217BEE9303AD4096A8E1CAD37B8703 -117: 6A9C7D302CCA1EE170366F355D8F40AE3A20D28BFCB2BA163DCB68E08DACB748 -118: 40C3A8B08FF9F767491E4243D1808572FDAF1D8CD21AB47115849531513D0750 -119: F26EA6760AA80360398371855783815BCD34431E0CCEC58A34A67997ACE43CEF -120: EEA78D68A509988ED6D7E3F27FC22F3EBCD570EF0FE242A0251457EAC4C3C1F4 -121: AF977819B87F2E63C0E131DFA2A31C555AD831ADCA6DE0FC1BE48D21A1E7E666 -122: 846A75DF3691B2BF224FB0E66E360A2E8BB1DA32422190F2B319B73E6900AD42 -123: FFA997FCFABC9FCAD4B58B0EF848890FB23B974CD57FA07223037450C371B116 -124: 0028C776965A0AE5E9E70D9B833BF328BDBCD06C5A12A2F1C510911E60AA304A -125: 7FA234C59957C214A7BE8D1B909C540B48E54414EE5FD1081B4C339FD2204515 -126: A840BEEBF2C2E80AF2E4830BB26F71AEE48A9C65DE4A9425DA9F98FA3A37DD84 -127: A95332415EA29A8CA6FDB0F771E3F2262C6907DC45B0AC8BC229F6009323C3A9 -128: 8B185702392BC1E061414539546904553A62510BC2E9E045892D64DAA6B32A76 - -HMAC-sha384 - 0: 44BE81C415D283AB7A62A45188E5DAFBCB97DA606BD5B16C92C1FC36F198C0B3A714921848D5E03DF1C4849BB8310C66 - 1: C1E1E68D864F758941B87E30C262348B373F167CE4629E4117FBA208773CCC2E6C7797AE5D6BBE2ABE6BAD4DE2E1052E - 2: BB27A0F06A1BAED5AC4FC2267C36EAB663E11EC5F0FCC0BDC09B9B0E803B0ACAA2F39D2AC73DE489FC7C9AD6DE3FC9C5 - 3: 70A273A2E9E5092EF8D4C58E99734A911B7CADD48954FD518305313B0B682CFCE192018D4847375D7E311470D05D97D9 - 4: B4FAF12B325B486B67E38A855D18B45D1BF6CC60E4D00AAA6E58268F524CC1121AD3EDB64D6E0FA524F11C0F139D0BBD - 5: B509A325F561CDDC539A3A4680380759747709D428B77E69C4CFE926F65B147D92D2C83692F526EBB5CF606AD162559E - 6: 9A1E678A743BA285CE154ADBB555CFD097F5839EEB2DE4147986464C1BF032BA0D80473293467ED0A0AC59BEAE736598 - 7: 1DF214529464666002C1AF094BB36F0FB14A4923031B108C21825E8C55BF6A0BB34C9AD7D5030B2FC7C83A2CD4C79C1A - 8: 86D8BEE44CAC35CD3946321796599F20F3A41BE28F161FDA062E4440CCC16E88BC7FFC714D525A6420CDBEBDF6AE9E12 - 9: 92417595F9974B44BB11EB9200B7560FEA3382CDCB8BA4C2CC5CFDD019C2B5956D3E78D5B186633ACB765E822B3D4E90 - 10: 2E87CF886036B7A66AE6581BA0DBB9AC2A39E1C7C7594319184FF3B612A165DC02B3A7133E3AB3D29634B1CD5305A46C - 11: A5CEDD2B54657832F946BFBA14ED5106E8EB5937EAC6C5405BE5CBE7C58053514E784E3F6668C20466A242D25A44462D - 12: 74475D913659C2C304BA49DD2B39B0C7AD7D537BB2240D8611876CF5955B347694525396C43CA73951E711DA38C6976A - 13: B0AEE82D70411F1A79DD7012421BAC1202D7C3BAFFA15B4D8B868A3E6F92B513F6B026E2E8FEE45DB2AE70C15E11D19F - 14: 7D06EA64FF5B9139662FCF9318589E8FF1F783754A9116E090B0B7A981A9EF1D4C1BF582C8EF5E71A49DEA2834447287 - 15: 8F52BB9B0A2B1066AB67603C552C17E983D15114C3B9776C548D747F7E24AC782253812802EC456914444DD67C0CDD46 - 16: 9DE6587211FE4A232F01D6D20554102D24D98EC140A05303C1893F232BAA2C07C81A10C25A95A50B38E87898900BBE1F - 17: E0175EB9DB2649801EC2EEA9DE2C1E950C129CA249C14326614E0BB8C32AEE67DF1DFC6320439DAE4FCDB4B037A53868 - 18: 0606A848086DDA50D031A585103478EED0259A9167959657050F8D7DD21B4D6B62B93AEB0009B1E878EDADEFAE9B2ADB - 19: D4A45DD1A6B613E3D2D72B35E6030E1531D75AF7C3F100934CF27EE9D0E0F0C236581EC8EE74FF759D7A19C5AA6DA9E9 - 20: 3E0FD11AE4933665EF30E10035B0E686DCA837F6D6FE2D5A10B4EC30F183EDDF3558309905F028DB93323D09A3A2F3E9 - 21: DA2A204C7908FD27A29415CAE3BD16A0488FA1D42CCFA2E2F5A1EFD6F99583EC6B3B36762060F547C629B9A332585355 - 22: FFE8FFED47933CC941A8E9233C037080B9465B4F9C25DBAC790825C013545D2344930E953187C77466437BE226962F80 - 23: 69FE734D5C69F34366E5CA6B095DE91CD4DEA29AD70BEF06AFE9BB232162E6BBB1349263087212AE3AE5D74A3B060F50 - 24: EFCF1B825AF87FA5199FB3C76783CCD1769E7DC77BCF145DB76FDC622BFA2425CFFAA40E6376086B2DBF6F5D9D97A534 - 25: 98C3DC50FC08D2A87ABE3FC16871ECB820D530B453C41F83FD304D51660FD29BEC6A7D1C63E3E12B6E80E8C58CB129CC - 26: 945047CD723EF4F25AAAC4A19FDEED463EB04CCB78EA318989143298DFA70D793391BB7FCEA6BE0D79187543426AADFC - 27: 2718D89F835037C94CD6378A3806614B85365A888B48FFD08C09F0B93360C04E43B7E7A19C79BCDC5DB9F5944579AB79 - 28: F714F16238075796DD43960E17AE0EDF9990132D690F44957C3DE9EEC2773683172FDCC44ED2104320726BAA7DBDA1A7 - 29: A87A96ED8FF0E7FD1F235F070CB5F14B41B2C4438A6D7A0A39D038C74008FE9C52497CC506498414835AEA1192439379 - 30: 31B029DFA85DF545B752506E80675E617549A6725A658CA8123D8C837FB71D8C9961BBC2460D7CCE0CABBDEDACB56C37 - 31: 0B1A9DD308E5E6E65E4C60861D42B628FBDB2C2280370EFFAB736A77A8004C5ACD5269D090B652B1D8F146C1D518D288 - 32: 2A160E0B2EC7BC927FFF813A2B56AE61301AA14933C659B3398C7A0B3CA506DD00FA6F1DE9C6D47AB0FB2BF2E7B4B83F - 33: 6893C0205F3F4ACE906F2FACC97E2B1624D40997370419E5981E6041D5CF34C77EF5ABDB1AA0D3C8C3740100C2711555 - 34: 95BC8C72DC8C70ADB7CD38311292ADEB9D7BDEC6A9580EF4E11A18317CB65667D344D8D6603C044454E67F97F4DDFF40 - 35: 3DD892A4E724376814DD5A4CBE96E4317AA8AF72478D53379247E77C35461BB92CF493851FF1FCF57A6704923099DFEE - 36: 3A5DEAF967BFA3EECA3F259307991F7DBFCEC1F354DF385CF0EE8D93291721553EA954E9D6593506E9F3E330E0A02574 - 37: E00A883DCB5460AAD611603614C7214EC4A566E0580FCAB1CA4ECF1386A42DCDA746D3AE1B0D54E0B9AC1FA336FE787B - 38: F437CDEA425E7A70CB4D197C0CA01562532A7C51FFB8462B4796A4FD0A7EC880CB0E5EDDD5F703ADC179374416592256 - 39: CE69E40F5B5F2F25E0B53281BE76ECB0E5B4558292A1C1A5EC56F2CF11B01BEEB1F0BA01E6A9B3D03BEB69AE0511F320 - 40: 41AA84D15342CD0675C8C0312C024352E99914C3E01C98F969AD04CB5705E9184F3821CFC6A22D43A77C928F6DB79D8D - 41: 74001D972353BB45FF3F7F405FC727CB5D0B00431BC76A57EAF17862BD52949AF884403ED6B2A002D618EA33523DE200 - 42: 968BC28223799F1EB92F1432B6AAF5CF6953491C3F959977B065BDB800AA438CC8AA7EE1304C18999CB5ED709431CFFE - 43: D067EC03F14D2D639C4423A311EC86B3DDC3693A2CF43C259BD0358F8D0D68F41950CB705249A59072A2CE7DF155F5C0 - 44: F41EB77179934884DDB56DCF83DC90C606D0226DDF94135FF8E1E0AA56C9A90881C4C380CC0AD3BD0DA45A6352BACC05 - 45: 27BF9A98F9E2732972FE2F35ABC80AE2E5A2BC1D238B9B1D9CE605A89144EE9766987384EBDCD63533E64BEE094E4503 - 46: 166892E106BBD9D16819D9BDD3601D24C0C11860DB13799F0797F204D07DBE914A7BD286B380EFAC34DFE3C940CDD3BE - 47: 2D85DBCFC431A94F8F50132DC8C10B25001EA10AA9DF7C53AEE9E8383EAADFCECC21202EFBCA556BB4E33CC68156B190 - 48: 086007E2874E779A5EDF0E176AC1A11D241F4AD8D02AA99DF2BC1AE3E5CC4775AAA92ADFE772CEEE89D4FDF1B601D05A - 49: 2ECA3144F4F9EA0F37C2CA5943F458590A1D4D19C0ECEA6A55CDCA648C99CD457DC57EAA995042D7FBFAB598B8AFEEDF - 50: 9C1F31F5D3A589631D8B7EF89A507011736BFC328071513D64E5432D24B1BCF47EB10139B6410A3103145AF67B5B6C46 - 51: E0645EDA004D9005399A2C072ED9959E4F8905D15C57992553202A3B53BCFEA0098E6B28BE047A4B29EED7B57602C0E3 - 52: 6CE5CA92F0B1E84D7578DDB86C96A10924601A3680BAFEE5A0B27D8390B59752205EA483832ED3E9343DE7175601C03A - 53: 47F50844C897FD910C5C228DEA1EAF456882C1115AB71DB15E6832D96607CB79C8B7AD1CDDE01966FCDDAA0B0BA9F264 - 54: C0A7EFA24590833E4788BB117D3AB3CE00C84CB4820AD9FD7F03CF1CE1A8983F9906BDD138E1943D75ECD9B98D5AD8D3 - 55: D056E9F831B6DBE97FC751453B1C52C8C6C4D18A00050F5AF2427C1123706375A918656D6755A4C950F4E5B5C318CEBC - 56: 462650CE3981EDD13D0FD2E5FDEA93A9A18CF8FA74CD6142DF4707E604D1F72745D7EE08AB13AFF3A9F8D166EA90CE3E - 57: 2BA5249841412584B161063087AF9F5BAEEFD97989BF8A0455E65C94B0663410F0E1BB22EA6402E59CBC5A23F24ABBFD - 58: C3B1E4B05A7593CC315AE15F63CE8D91C4B30E0D846A97B7D8F01FAA1B6BD7C9234EB153372F6CC7799A035E22A77EF6 - 59: 1E652653B9A3CE862DBBAF2C919E86891C5C03F54ED5970E8028F8D5EFB533B9C111DFD88ACBBDE516F0D4D636F5E821 - 60: DA773D5AAC336B6266D27A03AFDF3A151FAB302E894CC1D09B6E4ECD07C4AF4BE06A2D28D01669C7557FAE8E513D01D5 - 61: 8C8FE648A29D4BA78B3E0B944597E392A31E28F98B15280E1EC0A721C9ED5E3639A6A457744CC5AABFB3600501F5054D - 62: B443DECF40A5693F67B5BF5580A665DF6EB98FA9F14A661CD50D6635E0F78FB2943731AF363839FE6DFC0B4C49F9E849 - 63: B22EC4AFEE3EA69364701E5621E453A0C3988C1E2FDA54FDB99353F285327A534F7162BC54D701652744413B9A5D4CBB - 64: 40A22B7881AE8139941540540FB37C9AF27BCB164B6D1A3BEC709730BBBB413D1F2FD6BA4A7B7EA747FF45F3ED3336C3 - 65: 246E426C57E414575DF312223272819B0F49FF94953DCB94665FFF74FEAB049AF15160706AC5F702AF66478CF2BBA5BD - 66: 184E6E6D5FB55454EEB6DBE323BF28DB8CE60C271DD0ECC8BD4D3F1C2339B7828C1515F030058FF37BD53568FEA81378 - 67: 10B23FE1616AD5609F6F6C1D9266F702C1B5E6F7FA0B3A81406B5A766E2179D082854687701318A7B46E21FA67D2404F - 68: DFCC1280C5206F99A555E291AA1DE6F0A3AE4B49916FEED4337582B91D7EF094159556B01AC87BF7A8E84F9F53595938 - 69: 91BA9A641616449084A57221647369E2E69525A30B274EE5403FE95A43D0A7C2B301B61929D89222A3A03303550521B4 - 70: 94F59A7F5E68B942A5D66D3C642A78685F3BB400F4FF971BA576DECE94A353455277632B70D06EAE38329CC2298ED792 - 71: 21A9F5C4B1290D95A1F3F051A0158F7DD8A879E7861B61CC757FB5C729FE9A8BD46BC6DCE595D20649092B31AD27433D - 72: E4246F7DE67C3A08F18852F6159F5DC9FA4C0129A9F894EB610C10F1FB8B61B1C9947D742A418F03A00A7E11ADF436F3 - 73: 8D2CE8209B8362311D99D68DC2AAE6BE4CC8E52C03A97D99D0C5C15D8E24F1D3B51738BD27BEB6E773472CD22A1225C6 - 74: 7EAAB124A3C900F33DE06B84E7831FE327FD638C4E68DC8648EB619E3C7E5736A26BCDCFD3AA6AF34EB137C6A210746A - 75: 8B60F61A1AC2C6528C8DB07B6874F19B8D474859F98AF03503B115EEB8082E19D53F63D397647BC2D4278B8C2B741D19 - 76: A48D92BA646DAFF7D0F8CBCB1D574E9C19D396A30573A7404F6196FBD7E226731C8AB05138F7B1936986DE6C1F1F7B52 - 77: 2C3ECCA6E7AF0F9587E5A03D462C98F18B8C13C039D02D2D29E06B5309EDC82052EF72C94E0A5EB7FD35827665CA2F92 - 78: C9B659AFAAEAA8778E9E4E3B725F758768963C55151A54BD9DC191E1302ABA1F1F085D5443C46441793682A8047211E1 - 79: 9A76E83A301C14AC6AB8CFB29D2CE39E0E86B335F2B20C3C889651B4E0B94C5218E910B1DAD28474251D06D12D47072A - 80: A526CFAA2EE981A9A4D0EF12A6FA363F562057BB75A218F4645BC5E9BE7CFE7EADFD87386AAE1C607D812772498ABBF6 - 81: B747819B54CDFEAA751FB9F5C22FB269151028BFBC6650BC518692944C5F4195D26AEC45C9B4C987ECF4076B3871C5CF - 82: D45968D452B5349CA43A0FDEFE4A5379381625825A27259AD9BF5A80C46CB07BF1C919FB3ACC250D73238B11C3A07D90 - 83: C0B8AB0F8C497ED9562C65091DF1D80C32C57A018B00957BF53C41DF81A2F6371FCFE82624B2E84859114152B36B6AAD - 84: 30D2BF3DA80C0F37807F042FE7B878851E0BC4093D987438FC2B993F4CC4AF6F704669938B9E30E59BF8999883639F64 - 85: BB782ACEE42930922A98F65F319089E9B4F5D2DD2374DD76035E3178DB4468A3C04F5EF878ECF9ED757DF14DD89BDD49 - 86: 157424F30A10748940BBFAFB6D99B1B06A897E7DAA4F03387E5ED03F02D39AF59F96A20E4E9F3A4C5C07C20A8FADC8D0 - 87: B9ADED711B1E1537A35AF882F1F868D964B5898E85B07F5677DBF183232F36C14AF4D9959C2108D9313F8BFB14830B02 - 88: 7C4563BAC3C05444C3682039EAF9F9EC79B96F0CD36245F584647BC444B81734D7ED4380CC1F0A2BA876020E55660BE0 - 89: 9811A4A45CB28A780C063047EC6CF94328102DEED9971DB99E11C6FBCFC046EE38C1A00F290FF64356B9A304DC0F340F - 90: 09A69D3255EB08E9B3CF7CFA73D86944CCC91DEEEFC04214F8982836726CAF006A3FD83F8FB75600CBD060ECD639C388 - 91: 52D6D0943728CD2EED671736B6B3BE801B811410992E4A3BB50AB4269EB21AB945F6A9F7036DA654A7F2785869335395 - 92: 8C0E1052EF2B06C0C20F67D92E51DFBADF3655FC6475935426AE1C88F3096628EAB9858E5470FB98A546EB11C7B752DD - 93: B21351AF8400B9756F104599BA4BB78C2904959E2B24AC3E15FD0398627E6C8D57A7F9FEED63D8638A206BC1683794A3 - 94: B9F7CFE97C79568D62B07F1EF887C4391B48CAA669AA8495B71A326B120FA49652F02EC0D53441DABA1E104AF091E0E4 - 95: 69D2D1773208CE3BF02B38A7F14910187F3476817ADCC7A1D9830C9F25F112E604AEBB95D0237AC8795DCB23ECF52927 - 96: 57A9FA7CA61FA2FDBF0BC3E3E6463901B3B26E5D9AD79DFC0CC77F79EF3AA1AE3949E7D71CF794E067D2E38E7038EDEC - 97: FEE9196A0A1199DA8697D00AC8084D6CA1F867D105EE928FFEE14E5E36BEBEDE5C79509CA5BA05E36C3F0BAFDC9A755B - 98: 0E8DAF8BA4ED614B38808B4E468CDF88EC9B148017C6BE3FE593410D37D9B50ADF0913B7844FFDCC2F1917A27A58B352 - 99: C7FD40463E26D6A21373EAE14BCB7403B127A1E23E4583B2AC727106B07B849F74C0907804AA799C05D9FF324D04B182 -100: 16E899F4850512FF3DB0FCC58FEA960831364E5FB077CD8DA3F5B3F0F50AC626601917E8355E4847A00E0A5166E786D8 -101: AF2DADB17605DB3CC471C00D63C42F75F815594C1B49D9396BCFE7ED4D4FBB1CF15B542675DE8C9FF50EF81B72FF72CE -102: 1699A1EA2CAC707205A6BFAD8DFDAF09C8D6FCDDF2BC14A9678453463AC80054627F2C39B713861734B0974F442D707D -103: 186DA71D7E913DA49D8D97101882B1282841D41CA12F514C1B2DD61543E330B751E9F97490E18A4A37FF1853EFDD757E -104: D82050038E6DF6EAE9D2D4019827025A25BC8CB15812E0ACF4B676C799A3D80ACAE5706C0FB1FF72B2C4851DC9232B7C -105: 1657C99506EC8B28AFC1684C4A9EE4970F8F426E4BB0C3FC2795CFBA82913B453C87D84AE9B32897A4CE26FF4320CF23 -106: 9834E936482592BAC2373AA64806FE0D5C8FA92143070C61E594004F0D3B8516C2A5B0244F273124E83B20FE9A2CF5D3 -107: 5C4856A82C8E6E49BB81E89C26E355AFB75EF921E579EC4B97868BE2CFB4B1D93195ABA0500D774C5365C2269FF333A7 -108: 67B88FAD5085C8BAB8E194DF73153A5B1D334431227DFC619D5CA5D5605EDC7BC95DE33512B2F5B714F46F54E1E61B0A -109: 90C6A8F36D42C5F21A89417AA04D822A53110DF1D062E0C1A6FD9AE59C6588CC1C78469B94578B6D7C05EFFAF7FEC26A -110: 817C0E7ACD548BD3733792F4F8D845D7E4B3CAA0F0EA943B51235EB82DA7C8B77A733D756E86D57EA303F34BD97BA1CE -111: 7FF397FB43DD909AB80BC381EAA4BD50B7278DBF10F39FE718B421D6C07324F398BA5B1DBAAC64137267DE2C62F19F7F -112: FAC12B732122E18DFBCF8DC7382AB1B55353134F07E07723608825C907DB05B4FDE40FE550878D971F8B0B0953C88C54 -113: 4DB0FA3C105D64A9CAE84C0B5D7AF0955F6F58717F68366935FF9F478E94D3969B1264B1F37F8F5538BF116DE29438AE -114: BA6E693A6C3C5B048FB7F232CC5E12CA71662332EBF689AD75F6F2C54715A689CB1F75525313FB8B2713909EC13EE0D3 -115: 00BA656BEA25DBA36861B92B356C3DEE0DB1C86D4503C7FEB0A88A3541A7018EA456C95224EFC46AA31CB625421BC811 -116: 812622078CA3B4F59141569A0E125B36F7CC471F76B7B65FEAA1F1F656BAB6A3CD61A4D2456E2F5109274B2090C1F4CB -117: DBDAD8926A811DD0295C31D55AE0D41672C7F22B5CAEABFDA2C1505B084AD01440E9B8FFDA4DFCFBE281222AFD547E29 -118: A32EBC13D689B31617D24E6AC03CE6FD7B1AAA2BA78CAE2E24C36A8CA7BC74ED9BD4CF6C74E3C96DEFF048FE3964F0A0 -119: 095D2C8DCF88F69DA4CC49C64B03B2A1D2C6922CE0C6EDA12642480AE0DF35152B4E4A9AB08D6642DDC313C0FA01444C -120: 578A4BFC0CA83F1B38A0D2EABE2C7D3D67436B559624B92E4FBD9241B2CA8C1AB679B503A754D5029314AAC3AF225F38 -121: 25E321E63E4AC8994FA464B3E2B687150007D83ED8D6E1B217E86B0CA0D163B0B9686E4FA2F26C1839F2D778EDCED86D -122: C761BA17FAC3CCCAF2CACE92283DC5E5B8A6571958FC59D0070FB21CABC88A80A40DCD56318988F3AEDF38AEFBB84EB2 -123: 5EDF5D71D2CF85E7ADF9C7E964FD628ACF304C4DE3483F672666A583E3D9B1D86E9E096541ADA237D69A140571F5B3B9 -124: 401702CD847ECA2BC9208F52F27D84D07B37A86CCA5C3A877F24366CDB9719DE63670E850F02CD02C6227B7214D5DDA7 -125: 362C899156DF70FA189A66DAB6DBB3CBF80B629D1E90D9ABEB007C3C5010277EA589C4D73009C81F94AFF3FFACBFCB1F -126: CA43387C71B8245B822D3085CF029004E18CEBDFC9F78C276F3559D962635601957B6D2287089AD43F3179D077F37686 -127: 4CE8504297E21812C901E77C6680529103A017553F095913CFF06AF20E3D6DE7EFE911B636DCB5791B292C60147F6473 -128: 2AC71958C77E39D4DE4DACE92FBB6A093EABD191320A5ADA7114BD201DD026567D2B799EAC78C1F084BA9FAEC2FC8BD4 -129: 87487060C273FE18A2CF1DFF222658E1B50C3BC5A3F1F4575B3A4A6EA2F42238DEB68B3A2EC6A325E3FCA504B2E20E26 -130: 4A79A1C3C798D9F26D54715108279948EAB246086EBFDF0EAC9152216C0BA3A77AADF82A230AA84A7C884063960419AA -131: DB0BA43960FA6B763202B8BDF3FE4ADA0BAD78EBB3E6E8E57C2D5640D1ED4CFB4AC18ADB1B9770DB49A4252CDD25A369 -132: EECE296E258EA3583FBCAD1CDF2B91F4D2AD1FCC1AA339D8F591F89C7ECB5EA2FA644954006F0A58F2F3BEEA1AEAF7F8 -133: 7AFD95C86517BB6050D04BF3BB1448A0608411B612A7C2A939BB44B984E361C40569E5E57AD7DACB018689C2B8E2B3A7 -134: 7FCE7894C8E8D1FB187CC35CF5758269E286427A63A522F4BC45F814B316C1DAEF981917642C50EC693F3EF4DB8E66E3 -135: F67F56C98221892F64E2AE4325CCB80C2846A43E1629D40BB50845184E9C3B66480B3E9F792389983F2FC48FD2508F09 -136: 1CD915561856936AFCC75530DFF151F49A34D0DD0030766FBC1BE47D611F10502BE86C97B91D0E8767D4F38913EEDC1A -137: 80D9CC8B1B2B883C4735B3C0C19AEDAB78A0771753EBB4688A7E584BE7366B3C181C8532FB3A8BFC484C9CB0BBC1B4F1 -138: 8ADE2B8527C994EAB0807A89CABD5B075CACFEF42381DA3CC3D702316842E25151C65A22E80885E5CD5FB5870FCE501C -139: 2B403F2188D086327C92169871FD5A7B432D2EB999FFB0F2369B2B766E799AFDC1463CF4D9941F828FE42591D6B966EE -140: 4A0C18CECC0641C28C4136D42FABD0BC27FEC27C2587FE8A57CE0D279ADAD70F80C1E812E01B26F2BF3ECDC7673C349B -141: 8906762B63651DD5948C98DBB1B39BD6095C1438B2E4CA4B5A581D451AD3EF76C8A0FADEC9C0B0036A833D8F5C13F1C3 -142: A363BF2A479F67F949AFC151C36B052062CC2CE840974BE2F5E79C0BFD7BA29008A6BFDB55B46527D17F61531C953081 -143: 4E2AC5D6EE56567902CC1E02F119E33974762C03885EB7DFF7C58ADE22E56BC384FE74BD491EFDB2E6CF4021E3016E81 -144: BDF0AFDF17F7B014A61ECE257F8C7E0B52384EB7DEF60ADE785F273851D645E5D3B4D9534C0E6097A12C3CFF5C11D42A -145: 0CDC61FF0B3D8510C319020B82C1C5AA12C7B6F257D7D4F118A5EC3CCE03C63FFD38710F8A3C621DD8D66D8BF3790B63 -146: 19E35E1E785C7A41C523F88CDCD919EDC45F63783330D9033768546CF59D10AEBC77F013057C0E41D6FD0FE77DBF914D -147: 8AFA5DF52F6581794FF014A2E1ABCB05781C7F44AE6F37112B363AB13FF01FE1E8074F14466A365374C29FEB048C5B9E -148: BC9ECD12706BE5ADBA04DCE84AD53AE1B324F99C1F5937774DFE19C5EB4D6A20982E97B8F8E4E02EED13B25B8B13E64B -149: 8D02A1E318DA1EBFD1CDDBB7280F3603AF3AFA21B3D4E0727C7CFC576F55640B7A978B179EECDB8FBE896AD38E82F12B -150: 196929CF0849022CCE9CBE4EB2DAF6E5D8014C5A25E119EFF799A82053035BFDB8B05F6C125B1DBDD4E7B393C684FB5D -151: 58808D04067FAD72BBEEE4F6A355E80A2FF76EDBB5366CA43FF358A842FBFA2F9E1AF5FF266BD2E2DAB1D286AF5BBF92 -152: 4A548031093ABA730D8D99A2C1C6EC2A986A94167CF8C1EBE83D52B34BC2068A4C95665988FA93F5246D0FBACDF85FE2 -153: ED949965036F16A0B5856EA4CF69CEDA35C653BB56FD0F0B397E73FF4884B3E679ECCB19B07D6A93504E82A1613CB87C -154: DBA644B20B01E4AC5CD0A325CB063EEF53AD77E5A9E7095C1BE0EB0E6B7CFE60BF25F38CD57F2AC055D327EB6AECC7D6 -155: CEFD6165F70D9019866374AD7AF9C73F3041B932D61A41734E39AE8AA9C7A4FBF1DCBAE9B2A4E979C64352E3CD4E1B95 -156: 732C3B457F78DED89390BC461380760FBEF3CFCB9BF42A6C86ECF120C821CAC79D4D51C71A955309E33724742FE2FA0D -157: 54803568BAE2DB4F143C78FF53B85E6A9D42EC3894FCFB39BED8EE611B36BBCBED834D366A1F797B626DFF3D83CE963C -158: 35A1858E567FC8A11B92737E369069B12502ED3F44DB50434506F2E540FE643655CBF806C06F15CF2428FB408A65C04B -159: D1F9E930418D10043D0E83096CF717B79C1C9234C741C59436F42737AC73BD39B3F4B6D6439375E0D44260131B25FDE9 -160: D5B56A1A70C47A3F88C519668097B54C989E119EE9DD5B8B34F0DBC092FE7108C9D396CFC62C9322563EE72A0E324010 -161: 1578BB76F87DB309A5D3A2229A2B346DE39ADB623836EF0561348ACA7E315C16C6E31328BC70DD0B0D7D9B7ECE076CE6 -162: F8DF4C71F3623ED00EDF8EFC4E0EC154644E21E78B06C9C5ACB980480732E17E92ACFA059BDF299BB6C8351C6CC6AFF2 -163: 090DCE25595D7770753B78C410F10E830140B23D779E0F52FC451582CDE7511A390450F8B65D7BDA77A18CD95EE3DD38 -164: 5D3A56D23BEF1324B1EAE33B8255F904F7DDF131517200A505031D41A2EC3F2AB03912DEFF6BCECBFEDCB8B948CDACA2 -165: EF712AC1E6859F70D0D2CACE7AEE120A666DF9F210512F5C94AA7FB388F1DDD913A12FF92CCD2537675EAEC870203411 -166: A0E6443505B193D89595A51BCBD47A46E1B5AEB239D68B8B18A119E5C9EA1EB8863B373F91B9F22FA944C29365406A79 -167: D97DACBF80BCC76335C187DA29FF33F6D35EA8A8925709322EF3C0F6FE35D128D9D423F911EE31F1C38E1DF36046E507 -168: 67FFCF0A9F88F84B3EE85000B2DE0B7DC12A06160FCBBB57BA291DC04E14B6DBB3CDB81A40C2EE1859956DAD097C1EE1 -169: 7AE82196B46DE3E6948D7FBC7383A6F080903D6BE6E357700A87F82A964581D375006DE35169446B447537B4F11C5702 -170: 502E0A4CF125EC0640DC7E7264D9E47300814B00D4322F2F62BC1D5F1D0D77173B0E7C2874CD59FD8E056B8F38F78D99 -171: 74FDBC4532534DBF24230ED5677A920B12E328E3D073364498D80F0CEAFBEC774EB53F28F0934F787C56AB794B60BE31 -172: 3C9BF5EEC652F40AA0ECB82A834C836E495E841D337E1299AAFC067A2049C540AABE92CAEAE02F099BC4D3A383D541B5 -173: 105AC61F2D4E586E376524C488C33521C4D49D1F95B752D27F49ACD7181E8FBBCA2E0F0B543EFC0CBD32A5EED2CC08A2 -174: 5CA49D8B554D70B3FC467604661DF8FA51D9987F2A77B13DE44D7809FE2956D21485B36F1D17B59F2261B1B40553FBE3 -175: 1DD075C696DB9B07510A0D276F8BAD12225E00515D19E3B85583BF97CF82B5FE3F685502F64D91F4FEEE1848BCD0502B -176: 11A018C4B213BC67C09370C8A3D0B720428BE71C01C6EE9EF6C9C9DA8B2E1FBAEEE42FA44EE54D0F526DCDCD3C2BB2FD -177: E188EC519C6E0B8A89DE68A7648DAC6D9F84FDAA678B431794EB4BFE077901C95FAE25CA3D39D48EA0292F3F6C35FF73 -178: FABEE0B0A02BA622931A5EB82CD63656B47A20D3C0E703D5A69AFDB92C0A7EC5CF6944D9D7A141C1255D60FF9532B089 -179: 3C8E0BB55E099CA9F6E436BB3CA39D511AB9CE5674469DF8BEA4A20193084AF8561D5130FDFFBE62193A712D7C2D4B48 -180: 914BE8F0A58082B877AF0DC077ED146CCD8245339A170B4099B146476B0A580749D01F83FB52834A033A3822D12041B9 -181: A1B31ECBF451571437DE10330A6E9AB4484576AADC4DEE0B31D9C3AFE59FC6DE028275126D7882A2C225EDFE491305E4 -182: E4DD2E805A5BDE3DCD329ED9D35CAEC2D5A97082966186118DC46BCA7AEB1EF52E0C6007CA28131790838DD8C00E96FB -183: 785B81A972DFC6A4982E0BB76F90F26DBB7BCD2D06E872304CCF6AB2D639CAD85FB29124ACE411EA4742468A6663EB2A -184: EEC3CBB5AA129C7206A32A176482C9BA24FE60E71B46F7C3C11FEF8EB57682A3732680E6541D5878CD6A715A48D75F12 -185: 254E279B7C4F17B911712BF7138E2C6933815BAB18661CB47388FEEBDCCDFFFB6AE8B4B88072B90074704EB7EC567843 -186: 9A8CC3FF0D9637220CF2B4AFC9A8A6CBA4D0ABEA6A0BAEBF151380848E92DFED8C0F0E57B6D05095EEAB0A58DFBAED13 -187: 349966E1D59BC9B32E1BEDB050354177868FC07257A3A1800F0E711AD00AE388746DB1E4591E3ABBAD8F418E1AE627DD -188: 84ED950BE54768557475E6B1A256C30F444E12340C29485832439BBB9CBD219050D184624D6282728D4AFBB98CE4BCD6 -189: 2A7CA4EF1A9356E853329D336B6E7E033F2CA13677BEA67CA669EB7C78DBDDE67F9E7D9099C68F34E07B96DE4155AFF2 -190: 7C7020B0528F1B3F76BA258836A89BD27429110F0AB730FD741FE9EA2714AF827E71B731AFD53A293328788292ACFE23 -191: 91400ABC089F8888DCB22880B87A380FEFDAF81F237D424F057E5C4C8E3C8EE4E423930C1D3D9E16199ED82996BE4232 -192: 412979E13B3D143270BB41FEBC12196B981E99BFD6687B780812F409C78A5E2DB7AE828994B60D26CA4A1F7A3A44C64B -193: 02BDD417852D9B03A37338549DFB6D765EC4CFE4C2385002848BA4D46F88053FAD2A39DFF615ECFAE0D41F02E5877251 -194: 77845BA2210971E362DC117B1BB13D7DFBA62F81EEEC7068D3CB9CD093DF535448CC357ADBF0C2394351EFB07C3E7DE7 -195: 0F43AA1739359C14BC5702322F193AF89335887F9175289933B2BB3F00A777D1D1DA74F5D45FC43AA90C9FFBB0CD580E -196: D1D9A7B995B9BFF09252566D2079121AB12B0A5ED06014994464FA1AA18CB1BD8E7D5E07E1C71E2EED9CF081A537F28B -197: 67DFFE8A168B7408B7DDBD10BDF14F4F2244FC904DEC5850F5D8302FE35AD1752BAD2DE50449F9C12182A2AAB8FBC9F6 -198: 030B5E833F6D8703BD0C5E36354387AF833F466AC812D4E1FAB6CDCD3146FFE3B0E56722D671FB85EAB22CA5CB0309BB -199: CB992B3785E51EF3A32DE88073586DB045F356F18A09329E82943E29A12B2D1490B386D8CEBF7D90FB492966989A73BE -200: A1D337D363A0BD8A0F2342351519C62318A120FAF88F9B90330845DA682261C64627B67D2F533FC48D2BE394DF8F4F61 -201: 319DF6326160C7277A3D3C65995BFB729A69B71B40C149DB1241C0B2376B4205837B5770805C86104677917EE5E5912C -202: EBABE3BCAD828A9A3D5EE05C5EBA9605A67E1ACE73AE69F20BF435C3A14AC63E43B61021CDF3FC2245A14FC14A7AB32B -203: 1723D844C0558D58EB3EEE3286C48C133C5F6C1D8CA512F2BAF1FAD7884D4FD5C3000A6756DD1E34E83DD066AD2BEBE2 -204: B048BED188BFFB8FF1B14CAA0BACE82605AEB1C666283FB7A6FDF216742F9F64A89C50B9852B8119B5FAEFE64615C241 -205: 7FC6E8633CB9B16F553ECA3C75C0C0F7B610010853EFC94AC330D36977EA8722B970DC264D5FC4D69F39105E7AA0EE3C -206: BBC6F0E0158B6DD549C5BADE0FDFE415747F1FA2D2A85CC9DB758F34998FBC8C8D99D573CD948EC768540B363D67C4F0 -207: 5073FA9E162BE773AF5BA1CE5E6FC21F2F0F902C80F09BBC3AECAA6CB1867DAE4DC011D1DB987642949E8095909CB984 -208: A641BB0E1D20D5DB0C5CB33D35B73ED83216F2F5DDD5234A0BAA3B209A39E015B7245C40F9F372E618EC73450487B54C -209: 948806B7335EDCC7C4BBE751844DF5717457B223C7A3B81B57AB3A949D0A726BAACFBA228BF6C2CF94E942F9B2F1A7AA -210: 0451CD5EEA206D50A7897F495D648425CA333158C126C4DBA44ADC06447A51D3C7BF2D4D81779535CAE29792C7FE5650 -211: B4227FEE0A32009D60C9C30033C12B7143D4C7A1C25F39F3E4A076BC4943992AD299DEB2C15E27DF867BF948DA27C009 -212: DAAEA18FA433CF3E117F2D43303139D3F1D8C3BB8AE8EFB30B44B9D5D4BD4E553B9B6EB9019CC4E1AE5D0DBB6C23A102 -213: 4434C818BCCFD92189A3A466D2757AE2655BF0D6CD954706C85220A33B95B184EB560FF3CDDCC4DF557E427E60F9FBFC -214: 6AA3B44FA507B6D704A66B4D7F26CBAAB2B400C6BE0A8B61B50EE617A16C2C09CB36E72FC309C6E4DB24961B1785CE3B -215: 63AE9C02B96B4BC456FE5CB9BA35366DD69E78DC9CEEC376C6780703883D609333D45CA577A982A177515674B975B658 -216: 3B5DD4CCBE8CDF32009CE29FEE4F6EC7CCB1471A3F8E9BC9A35E8CC37F6C56957B757DA4C3204F9014977B93F9E30DCB -217: 04A6528CDE6BB9F425132CCD4AEA1EC6CEA482249E5F3782B000FB071A4EB2434597A7FCE2A364A9BC9E0643A8403DDD -218: 69275CA1F9F102925165A568C1F152D25DF8820A6F34595C4359159070052FED260C55FFFAEA2116AEE7A63DDBAA0160 -219: 584697C23C63904709BEA89F055AC592DF48034F908C9F06C706A51C3F6BE5F0F2A5B953AC2119FBC0855B785326C06D -220: 04221F0A6C4799F9CEA3C1D9E65B9F77F77C613FD114135DB019D8C497B8899513AA4B499E720CC11AECADD1AC071DBC -221: C7B878613C2F2ED10C8EA413970B124838F11F0414AEC89A3825DDC588629A8049E82B461A23F25C4F93E5BD11C184AC -222: 1891E7A51768E05BB1D03A1EC1B844C7C8EF77C433F700175998B2D8E2EEEEC4618F00003793C5873655E093048B674E -223: ADD2B81466BC727AC85DBE258B566C4DB56F6F7D81D7A4E43F86C125F2AB2E08C648E628B9CFE440F8BC06FD5D861D3C -224: B3684BEBA86D275745CEAF0922473CA581CEB7371C5747EB87B407468006BA50D69F9BD8BB7F214185CD0D0C548C5432 -225: 0C783882FC826917619C07FD03FFC46DE6CD87BDFA87F1FB872989489C32FE74E8C5660748E1E8E9AE19C68B075B0EBA -226: DF52553B4F7BD148574BB47F61BF8F7B2FDBE5B6963E29CD559F236BAAFC3DFD6A7EB5EC9968E0C2B3A453F982F16AAC -227: 45102671440B04027B1F9966C1013AA351CAA3F3CF42C4D98F5B2D030FF37836E9F5865421D7DC8B037644FE53C6B280 -228: 247396BF60C0FBA27B245CFCA061D1F6EC50CB87CEE54E8C4A7186A07745D255E4EF9457C0A329AC9E3FC913DF86A4CA -229: ACC5998C464A26C1719E9B17E1B8F5E3657FF0364C46FE87154DCD1C95A84734214D2B81CEA8DDBA501975281EF4EA9D -230: 163F5AE385500C1A6EA212D6925E48CE2189DB1DD47F7F2D2D889272D17449A1C33EB3970A5982EF2FE5F1255367C33E -231: E8BBFF2C5CDA88CB60BEADB8D04B88795B0CCD89057CEFF1FF588A169363AD453564FE7528D1FB7148845363C3E17824 -232: 5F8671B7C62A5EE9717FF80EC2AA0A03E557A2840C0FD0B59027AFC834C051CC9B7BEFFDEE3478165DB9CA303E2D874C -233: E0E4DE22993E4A6B4884163C678A23AD6349DCD4C16B9041D01F8B3FAB1E8D8B07DA78BFEB57F8C235C173B2D238C4B7 -234: AD6F58BFA15FD0DF1191171F86F2B4C8729FE407128ADB4FAC3404E15C04752F2A4B5F4BDD488378C56FF8D85A38E583 -235: 90C5A75642A1811D8FC1ECB84AF4904C6D9E613353C1B9ED0FCA37D20974CC2425052E2300738824BECFDB981AFF06FD -236: EF73A9E6D23CE43508400163CE6F3E8F7076CEFB94E549EB6116C2557F740D66A1727AD51CA645A7F9022912058FD262 -237: 99FA424E413A57DB2B1B851098FAB1B6D3337AC7FA85709121F0BBDAFB3EE291F44092EA7EB28E9BF0EA0691AA531BFC -238: A1E0A088A279E750CEC429D0AE320B638ECBF9EE387C65C66D2231C884D844DCD438D4D4E052B8D76998A444E0666629 -239: 0657FBA0E7A73F7525505235120C44AAC6D37CE974FF23F52872D6ADA50DA022D417D8DAE40E80336846E8CE211D5AC5 -240: A72ED7917F0F9D0DD888DAB10AF9091A380F518D5DAFC005D1EBF0013F57A7452AEBA98913F509509A02665F332EE255 -241: 74CC959DC6CFB31CFBBE9CE8ABF32D1629E0F578F9199B9A2E90889A2F032919923142AB32E1DEE0A53ADAFAEFE0EBF2 -242: 9E4D463D2E3DC2B98CBA40EF84B022A76D01926D8DE6AC05F995C07C5F07D01742C5410B240240459280D7D278E8BFEC -243: 0D74C427EE654E4790C7118272998C131337D0D0555B68F488AC7CB8DE3CFB461B0248E78340D74B828C80CA28ADF478 -244: 952F274ECBC66B68EA74CC8534A5D7EDB219B755C91266E5A779EC22F52DD2EFA9C447DD311E71C90E1419B4B2F3DAE0 -245: B845B0A56AFEC2FB399559FA77C4835D2BC4C3F8D62BEB1C45462BAC661D2E553B43D0A86073F0BA5AB85B129ED20B1C -246: E65B931E25101224A6933FAAE7DFCF22FE84759937F5F3BDAA90D9C8E8ECD0BFA1777B99A77E3232E38917F9432CCBFC -247: 4F69FE2CB97E9233BC873D153ED9D61B88C20FA333BD4137A532F4F703A323FAC6F8675D8B44EF5FAD2314894F7D60B6 -248: B36F43A6DD2917A1AA0C6B566599C274701BDF03A5B7DC65E5E9F0ACF882786F07989B106A50D0D89629136EA0E26EB1 -249: 8DB7B80635C53DAEF891B777850487E72B67F57576EB05F708786F7665F1FDC2A78F441636569D1E84058A43F0243A1A -250: 14A43F1882AE0214F56819F4AE9276499D39DB4A4A939275DDDCDDD80CB6B70999E6178C4EF295E69A807EE5FDBF9AFD -251: E5AA44CEA67F0821D4ECBC981F258837A243FD901653D484BE5C24EB7F08E0BF33525EE3DDF9A89E1263A853485B5A02 -252: 0191F0505CE5512FA08500BDC090570F0C430161595894528FE7AE5DAD8726E110B0676181A228A7A90E21B7B055361A -253: 76FA1230972E771661485546D6CE556FCDA23B6DC0FFE94DD3BF7FF13FE9B46DCBC8D8FFC617F35687903B972FA7EA43 -254: FE280E1191D21CAE12EA3B53D77E03EA4D96108D35555CBFA9B156253A011ED91B857B82D644BB94BAC8E4FC4E0142B5 -255: BEDDC3C0E168A4B14B023DFC1AE07BE9A418678494C2399695EA9B17843D373077A708F8C82F37657BDC101950FED664 -256: AA5D7EA1126BF16DA2897AE036E94D1F96875AD306B19910EFE3F17B7A98F9A4163E4032EFD17DDBF78FE3321047509C - -HMAC-sha512 - 0: D29B9E3F87809686F34109FBC718D6ABBB09C278CF05A206ADF21463E1170362122E58272A31679720B254CBD63A7C6D696BF9283F9C6897E7D792483BB0388C - 1: 5EC18FCA20788348244720D58E9532B4B699E78D48CF7D7BDD1A4E5C61CD09C075EA7F112DE379FBE953332C6A7D6273B3F6360BC07203A5175FAE618E4A2F55 - 2: 293D275FDD5021716117D2B85E6D38F8D60D4984BC73E2D8D7EF5942CF1287B65C0675E566794786FEA18AED1192A024FC4B3E0505D91E1F91833B210590BFDF - 3: 8D9E222D6B16C58B3862D6BFA556BDFC2A4A152BB2574C2294D5381F6E38FB681500A6A19D55525B337A467A2FC30DD1684832FFF92AD071EEF05BC4F4399FE9 - 4: 71E7028F8C4CE9C1EAEFE459771528D26993E180E616D68355B9C618153AFF2C0E9620B151C8F733E71180EB87BD773A512B945AA353029A8F807FB2A8FF2264 - 5: 589F462D37095693ED0C1F3E0DCB892BD19086FE033718911931509EF6195AD17C79939A87665889EFA6DC19A69BEC6E7058531552832CCBBC06F1BEC70D1736 - 6: D94FC6BDAB3613271522BA05C998A6D1C57CAF0E6EE929651762F257E7EEBC07F5CC7CD3D4064A2755E408B347939B3927434556B4ED49CA406C21D1024E6D80 - 7: 4D8A886A89E9C60EDA3BF0BC512A295196C3F62018936DDB24BE9F6AEC7AA9511B33CBEC8A22309B6389417F4E7FB0489981CACF03DFECF7D9FE5B91D62BB719 - 8: D0E00955F0FFF98ABE885970EE44F1B5D4C23C205C64B681381FA13C543106B2AB4E762FD71F47008B4C429C39ED3D66B3EAEA946674F08684AC99F957F50416 - 9: 4F623E52B5FA2D556D25754FD00BB8429356FD75FE2EC57EB4BA4E25CE03C5332D3A632179C9FCFFF140E6B443A4285F4A7CE881E6D3EEC4FB0DB26C0E2DCDC1 - 10: 5196EE8D442E5308F9D8911C87050DD3C4842D0CDCF55AC554412CF096EDA94BE1A251743AD5BC5F8AC902A38B66D7D57C90C29200984572D57C04F64166B803 - 11: EF77019B0F93B1598E38D3B1B703B52660192547353E7FCD5A7C8525DBB516970D3A6F2A94729D90A5A34CEA255F310C1F46546C2A08975AF477DA2F3689F17E - 12: 0A77531D7081095AC0D0ADF2B379D3F820DD20CD89610917E287FF57BCA5DEABA750E1E075DAACA9CC4DDC74732E6F7BCCCD3671B6DD27503CA855EACC63FFB1 - 13: F1E04B1F7B09DA270A44B62DBAD2FC0160BA1D144D7721010D77ED250A00986932CB6652D95B4A977494F11AF7E7FC82A70DFDACFA11232D653B1A052820185A - 14: 7BE1855550A49FF66D6D395DA7DEBDEAF674F1AB192DF82D74F6BAE8088F83EF1471F413CE00A404486213E41B42CF6C4F7FF1BFA17A1E28928B7179F0A966EE - 15: DFF2CDE8856D811494F559E9F4159065A50B1E82961628E95F04D595F670249A2B71C2625CC1CC2B1F85829255DA007F0374363EB749E935BB72BDA24B8A3F70 - 16: D2F7FE57D9583EC1AA733403527DFBB118DFE07B2A60C43039FB238A7205A053E0496AD0F3C1896090AEAB3088283C8FAF272D1D53B5F9F88281E0A53FE7F8DB - 17: 963F629ED8F0E7D6D4CA4DC8A8B57C825F726380D0BA9A9857459491BA82F64A929EC4ABFCF79374CA68BA812E3A83A643D05454E146E9F4103D17E20B8350F5 - 18: 1FDAE69CA4A9FAACDDF30A56B23F14768EB7D5616F6666B6F01FE5E216825CD4201A69CE3D2D1D2C3D03246BA7D32ADCAAA4A7D03B9AE6AF4CFBB474E1717BCA - 19: 2532E98B6D91D8D658BC1A1FE41AC719D648D47BACB423C031A8E2E9C25CC6650D3E5DF8046BC3532875F0C8DADB38AA911F216E6741E9FAD700D31269EE5D46 - 20: C81E6E9F4B75A4EB2B903C4DE28CC437CD87BF789F6BE60EF521491CC7E44AF26E9EFAC55961135F79B3591F5F7B92ECDC9917641BDC34943C6759AAD9437498 - 21: C0C2B9478F956800B64FA408BB0E077FEF48DE4B146926B3C577C00688829FFA6540AD7C211A807286C546F7D146F95989E77B62F5E14D62FE0C77C85FCB6CC3 - 22: 980D06C1B27EB2EB15069566BD1BD838FD3DA453751BEC564C05941C9BFB9EE8443EECF84CBF8AA7DECAA294C7D1A3FA4A39C20A4659DF332CAFFCB2863A769B - 23: 70FB10E482AD19447CFAF10EB9FCFEE67F9DF7164B2647F19CB220E7D83BF892AB7B5C5ABB73B779522012BFD464D9D1B18C37C3F6CB70EC4106FA94F8CEFECC - 24: 7AB19BF67380012D3A53B93AC15E353D477FDD1E2E8851CD5AB5F36EA0C8B128D3193934F837D23D232F44009AC60DDD358AFC8D3A201BED3EAEEF74C03617A0 - 25: AAFC1227AC42CC27BBF78FE26B3FACBB7B15360891C8EAA8C737AD42C00971D02B3A07CA751774D02F402F7E76BE08E2C1241EB66242DB5E11B342C22AAB9FEB - 26: D8CC3BE5B48C7BEE8522BD8872419932907B78392B7F2546788477C858D0C7BD772985C0B0D202AB7E69AB5F4E1A0BC848A512FDD79EC29F19BC4BA6D28DEB07 - 27: 6133D836D68C82658F6263F794073CAD9029F20CC11D0A6CF589335B023CFD66D708F09136546C6C08769139363AE5CB4CC2CC86EC6911237ACBFD8B0423E377 - 28: 833DAC9CFFBD62FF0749391A42324E2848670913890754E24ECC29D4738AF00A78134660A20078FE59C66113787F4A3E6C0E783740B2F2B2BC8D36FE4EDE39ED - 29: A2F3BC0DF058506805DCF5CC3006CC4FC4085FD846C7A7A7DD3A06CD6DF635359F4FBE90A676DABD7F9AAF42577C8E3B07B63B9CEC8A9AD05B38D16F56214E8F - 30: A49C3BB487C561E5AADA4FBA2D9F5B42681486AE2DF56087DD65B3D5E03C625F709299C84C64A68D87C92A4CC90246D608E692D1FFCE2C099348CD0A19407C2B - 31: C8D7B7A7FFAEDE88963B09A09ECCCB4CAE77DF9D8D242BA19F6485BC7775308E5D11C78FE9C46E609F3AF070F3DA8ED929C103DA1F25BE7867FD4D3E4F2757C9 - 32: AD4627AFB02DECFF956E612537F011E82CB0C202A5A11AB7AFF55A201016C02CD21EFB4EB197BC2D13D272C6A830FD77F534E800B0AF1E79FCFB626ED6A0D6B8 - 33: 8D4E232D9614EA1194E60748496CFD32A4AC249BB8F08E55A7C9DFDA708DE90D067FC433EB9DA2A6833D43BBA8E8DBF31137A3C9B26903060EF9217471E9F945 - 34: 4CE5E4055F10F1D2182A7892F98206D9A120FBDA3251036B7EFEC835C95B4D1FE0BE3892E2363087D01948AA426AA403ABE1CD79F0AA851E2D1195511C7A85AC - 35: ABD65F8E9A2B39BFEF6EFC9A9EDEF6572489AE82034EF3BF2AE5F380026FF4CC40AF093F0408445735C0E6EBEF5D7E7ECC13C98B59807AE01FFE1BAB040FD14D - 36: E8C687D7AF785B1E547307875682ACD82FB58A8259551D81F309C923C2B1FBAF5935EE059B89070B8420F71EEE3BE7B1E3B55B196872F06DD1FB890F6FED11CA - 37: A344BE73E6585E0CC31525BD6D4EC3345D7780CF180D0D5C2D5FBDEDCBEA050A958FEB13C21924E311F57FD6A498756146AAC58412B98E4D2A3B29D9B77A9F53 - 38: F0A088CC818F76A1FD6B5D707B114BDE24245CD55E48611ACC6AA497A0CEF93768501B5F280AC518CEE48C15373118BE7B72F8ABB2E9FD3526DD1C18D9CB2545 - 39: 4D56D5C9222BB78E04DC9346FA9C4ADC27AE08DA3E34F490A13F674264896E58F9E9839715F633C7195B40DF722441275C84AEF162B513E673809F7874E7A124 - 40: C4B3C9E8140F0D5589E326916462354827E491F3444E0C361512E6E761F5E24AE1873B238B73F32F6BF8F1D1D8FF9437A01DACCB749282E776FF66151A4F7E19 - 41: 7B4E07BAF338DF6479E169EB6CC64CFF88167958D44C5CB6606964B7F9ECF5F3F1B1F695C63F2BD66354722F81EE4BC90B9FCF5345642E264C66F6950CC8C481 - 42: 8571A8F76A1D5DAA0900A03E236FE965D085BE6035B7C0601EAD338106BE7DAFAEC82F7C3D8AD346FF749B6DAFC69901A6072CA089B7A5724C75CB0818640F7D - 43: DF516D84392E571C3FE39F4A0BA5D16D866553644B4C4627D3513F0A1C60D22FC5AA4276A71CB37BD6D6AD05A12BF812A2D5388A606583B78372B84DC567431E - 44: 535AF3C73B479B61B8B70E590E335DC4C1E22DCA656454213E1FDD46D026B6D36133BDD372FBFBB27B6DCA8E487F4A54BDA8C5F67B37C871653C656DDE9524EA - 45: DBFA27964DC6A80FF76112FC6CC02C87811DF1ECA3A8620A5030C600561032FC374A6B060FEBE0ED67421D9217D2719F5A55621736FFFC6F4F26DD4C6049FC09 - 46: 6F69BFD2C60AB1554023A6A2094D30CA78D364501F7813A2CB73DEA94AD4B94A0EDF3A3698D6A30C8A5E764B81F51CD0CAEF0F996B8C685A345AA630CD10570A - 47: 2769DDB3AF3DD650BC381D7B10CBC4353699A2A352E57FA5D5CC4FB610E498767F49104ED0F4E06E2BD563F7F8045212F5B9C49CBE050A1662F2262BAC4053CE - 48: E50169B15772017CD9FF93D1B46AF273B375A39D174E3B8621EAC8EF968BD967E1448DC3B2C72A667EFAEBF2B90D4E6640698CB866075E95817719E0EE61DF30 - 49: 4212648E8F9ACBDC16D48CD7B355884E0817A95DB03BD9B8AC5B28BE6371D8AF83546DC82550B8B23DC77F6D06211E3AF3B25528BE686CCA1672C91117DF9762 - 50: 33C71EECDBE503A6AF72EBA8D2B9AA7AB8FA8DE536C87643ABF1BC3EDA535BBA64A8A7F4BAC90ADB7D8C926DCAB1D7DCE15D356C5074BB3EBC7B17516671EC8F - 51: C8EE9E57EFA859DC5553D03402AE80B84B1E0032CE3F2CAC43F8422A80E3EF59126AE7AB4893735F9C948CD9FA8793571E4582908DA19FC723A93C7C36F79F9C - 52: 7CABE0F83E90CF9A497DCE45F14F9926DC714DEEF05A1A0603F6436E134FC7C8346A19CB92DCDE69D794B38FB22233577BA3905C94A7020841224DA888B9BE1F - 53: FDC20554A15B71BA62F896DDC4F8B354E5D2434B0AF719CCA7DC56FBC9BD280B0F80136C4336D605C7C26208649F38C1DD0004C6E0E787A91FAA6075051FFDCF - 54: 87387F89646B4068038E011D7E02C353BD5649F6DA1C4C46CD9F7D69EB3A2F6EE84DD42D25B67BB81666CE8F92A5B1A0F3EA58D4F0B5B6E59EDEC86B43BA0CA6 - 55: 6D0210417671B66D59B8F28CA0EAFDB493C30A7D7329DF29194C53887F05EDC2C3F35853898ED77394CCC650E8D350F69598E3AEF3DDF540DACCED5BBCBAF6AA - 56: F14085036C69398BC7E0CD8A9D4451A10B080E7CEDA5582ED396E5D54441125EB3EF6EDE4534E788DFE6DD3DAAA204814097987981EC8BD8E39E8E8B35AD8FAA - 57: BA67FB4D7D137531D3F4CD3D91975255FCF8EABBEB97EF0FC7C21C4E25FD034658C63881B0AEBEECD2B7D15357C14542D26EBA3ACCA944EB4C4D7E44E9899D42 - 58: 4546585669E343AD40792308AB456DF623A6A23CCBE64B26B953D6C461460BBA7A3FB444481BDB3F7FC8D5E825F2527D2DFF193356CB3171CFBB56C679AD1BB9 - 59: 210F8AD68FCD10BDB8773194FE57EFF566C7E65BCD82BE6196DECB40BF39774691AC6BA718E4B5FF0DDCF2C0510182B9A114C6F0117A0BB0E1AD585C69D38D0B - 60: 29003A048ECAC0613CFAE8EC8757F5E5CF80E9B0BBF538D7460765FE2D6B56D6251ABCFD42B56D64B56D8F219868DEB42B968E88D3F3BE3A161DCB43EA98349A - 61: A308F9E2B60D0093A7278B0645A471408F58B45B3683531179F34931D06A15F4A502F2F7E1DF8B47830F65387BB9F102646058AB456045267F2DC403A1D9A6DD - 62: AD484DDC270FE74E68620AEC882E86320D0D0753E713D9D5C9C7FEEB894DD3FD5FDF4995DDEF87B1126B36E92618331126F5852AA8C0D44404BF9F77B780595D - 63: B4BA7B2F08BC0FC901188B50493FD165F659D3226227E2E9892BD70B02312C12D195A73AED3A4009618E6E74799DB158D9AC27FCCA9BC682B09ECF53BD368C46 - 64: 0AF65ED93646AE826C79BB6E8CD193D5246BD00B0BABF8425ACE03C845B9AEE428045D5F8267F3EA86C433F1A9DBF4AD1883AF164EAFE02C07CE43079668A248 - 65: 65F899BE2C5E9879F6A3BF7B60E62591B5DC5398283229E4FADB1EE78FFBF962295C427BA0D50BBCB9E2F1DD9694BD36CA598BAE7C2EF1F4D0700DC95BB66C37 - 66: FA9ACC46F0841962D6DDCBF5D47BBEC43A0E1E9B2A8F8B7970E2E73C06612FD95044B8BEB58C71B19AF4169B7E6500500445490F80EA4E305B6BB00C7181810D - 67: E9AEA6E12F881A7AEC3AAF428BBF0DA3138EBF69C6B8E52621609AD340D6537E4A03E2B099B735FA82A3D300F782606EF58598683D4ACB0870D5130B4B3142FB - 68: 3558ADBFD411DB8436A1A8B40420EE9C274FA153AEF891290F79DE5714130A50C70EB87E8A901D540ADCFC37E40EF44592822F6ADBBE8E5CB4EC89909633DD7C - 69: AF3852A0B4E846B59A4EAEB7A7A451311B1E8F554042CEB2D253F10FCB3067F9CA927C7DA3E57BC9C99E4E7997856B35DAB0645C194AE9F1FA0A92BC218CC9BC - 70: 6BD90F0F8FFA39C2A483E8349D2A29A96AA7F3CB4B4C1325FE5162988C9DEE849B8E56BF1423B6905ED3FC6A82A067F850372414E2A4A7E5CA379AB80F1C4F23 - 71: 6433885A8A39F2E4CBB36191A038EC3E3227BDDDAEAE24FD396481332A9AD7BECCC4E9BDEA0C8A7F33180ECB1EC1DB49218D17C4325B661967ADCBA25B341649 - 72: C3235054A1FDFF2C0D218C3B54EE6A58FA5AE99040A64A90B9C8DE601B80A7C130168FE7484CE1FD9FBE22E6E794161826730B63DE794EC4ED1D653E40B27F7A - 73: 89F4DF5AC626665D9791A1E1C30D1F206D89C4B0C59916DA295931539B0A607A1261B4EF022CCDA6ECE02E99449E252EAFC8929F5074866C3FF59CC58268E2B8 - 74: 3F1AC15A90C38AA964518F176016FDC73A85B096EFD1FCDCCF38F3EC692635BD4E610F1B3314E068164D02168F73A307AD549E1E7EF07DD374F9697DB6A17447 - 75: 4FE16A3BF0534DD2E4DACC43E221179C9B61D7D50DAEDA4DA9C45CCFDC76D6FA96EB3CC1C184DD5DDF7DAAA413D05B2FE518117E2C9A880726148C7AE6052160 - 76: 1EA870E13B7E59B97045F662682F29DAEC4413566DA341468CC9F5CAB733D1897BBAD8E9520B85C43DE33B9B70880AB774EA636248CD0A1626C9CDFEC3F1835F - 77: 37AE3A9828B08A055B2E47A613D25A8D43D5A456BF741E7964C0DF4AEC6D8E5F3EF874F2B20606A38AFCBD307C104DFA5BF40BFBB3078771436276E777F645DF - 78: 48CB9B779D37299162D2674CE2C2595B2422071917C28AB48781DED5060E76EDABA56E7C538C3182F9D960DC21928E6B3069D510046608C976D7A113DE54DCEB - 79: A565459CED6C996C04A21FF0DA10A7F24B1DE22EEAD7FA7FD2CEEAF522A42E29395F771140573D684C94F61F19C771DF68FF8EA0FF727C55294C70E701C8E426 - 80: 3A0ADB5479E65BE1F00462E60C8F7F74FF5C996680A2A4CF787B5DF65BB2E82264004E396AD7EAFCF8A201E03AA950D42B9A26EF2D24FD2AD7CF57CBD08AFFAC - 81: 6FFC799781B2E9F3F573651EB2DCB0771073DA1875CCC3D2B4C6C06F43161195610617007CA9A943B1F2B001E62518EBABD4542E73CA131E20A167FA6E8CAE44 - 82: 79C9E349F1216FCB295FFFE5771EF54A024306CED9CA111DA3DC629722DF7FA5F0927152E4401E0358BDC16D9ABFA02C709B1C21F6D86905B0CF0D6EC9FD1952 - 83: 6876CC513300CC83BAFCAAE5DFE4C4A0CB962079523ED475B19568243A63B208301335BDDE10CEC90CA816960013E08271F02111BD18FD03C1B941543FF4A579 - 84: FB5392BCB60C1329D3FBEDB4DE1131E7B89326A34F34BB099A7EBEE42B985682F52412D3F0628AA72A8C2C46BA3FEA08D5765264E48DDDBB96CB598C9C0BA93C - 85: FAE655D7CC2FDB54349870B199FA54CF47BEF2AD98021FA27B968AD4C3AE477C6B2DFA9A10C75FE275D5A32C5E9FA06B03D4C908184F49FCF15ABC409106E951 - 86: 9B15DD192392017E2F4DDFCD30B7AE58546AB71EC44DB94EE66CA3419D580AA05B5F10E5D36D9E60465FB8F56665366824B5B6E9A63A13F6E83A026F5A8E0911 - 87: 1A0EC6F024130D24D9740E8037C78A176D9C5933C4073DE3C6B0536E9F7CD20E0E89705953DAC9CD44C85EA059ADC496A7A0EFC40F187DF676D2BC83F80BE983 - 88: 5E9683BD68FA16BE904FF617510AE99249ED3477276A0B410B269EB2E03A3505EDF653C725811AD9DCD7FCCF6F2411980784F4BE7407D68C02CF6ACD21FA1B52 - 89: 47CE3079037E396A5B5A1A3FFFC3C60A138AA2C6BF4FFF26D846C7E1E84E31A26270AAC5C688DA7A29DED589018BC349E3247B073B765FDBA4C8BB271CC6E233 - 90: 280FE2B5B0B72FEFA48A9B6A1B0A3529CAC9D6338E2083816930B14FEA5B21088B1009DE147D81FC7F29B00BADAB32B57E15322A6180D713411F559658FAC715 - 91: 527C2E33018CE9895C3F84BA5C072055730AAF767DC82AE236F1F7C5511FBF2CFCBE32AAEEFEADE38EED4C0895290D0EAAB38E3A5CF7B2462675D1E6B26CE814 - 92: 8C0E22F5BE099CEE31C816A0F5DCF9A548B0EAB55AE7CC127D172AA5243A5C73B5BD3AFD77C89370D51460CB7E84F1DD15774D1B8442C07AD21A3B128688E1E0 - 93: 6CF00F05A9DD7EBA5F1A755987F5678F80AAAF9B5FC44D6199100C062DB50D2DA89096389DB94A6D68BD8337640BAB60AFC8793E1A909624A4E149AECBE415C5 - 94: 8452FD4AAEB1AF4ACA8192DD59926E7B0D7B295B8FE18DF4DD21E7C7ABE8F4ADE7391753E533EDA2EFA13CBCD96948ACF26B658F1E72390BBCD7C1BDCE8FD650 - 95: C4DBE8DC875D00FFAE2AAEB3E0BF1F01529A364454D56D329FD493D327287F3E34DBDF2AD54C5BAC5E6059F5897D18157C7DC846F15F2CDA1B2F0A6EEAAE58D5 - 96: 6C88BBBAD961E9DD1418E9F8EC69FEB443176108F56FA2B0B686E93B0E5F505E56302994FB190787EBA7CED5EAB69DD24CEC39BD566D18ABE337A31414991735 - 97: 439ACC720E8CD0C4A119B9C318FBC543CB7B35FF12DA190D82A951970248BB47D0DA2171A7BF850A881E8767FBCD542039E483974F18532FDB57DF23CD18B1D3 - 98: D71EF6284984442D05E8B6B1AB636E0BA013A8D70029F9F1B9BA7927A582D5AC6899B9C8EB990CA93B49E460AE140564D40467A1368FB4A9EFFED4A467E174CD - 99: 8B5AD2DDB4F8C044AFE2B0216B7E7D830EBDD285E4D992CA022CA2F59644806D8B7599CEC51DC73786D98B7B6F7C10C3BB7D4CEE3740FA42DB21BB51A1269611 -100: 28CA7AF155E9E7E1F5EB64F211F254D624C6C42935E27A91745F2AF2EECFDCF1DBD5896F60520A527499432DD3D0F3981F0E5BA72EF113231A0319467BF5271A -101: 45B69480A77AEE3D83D39A38717EC1CAE1634D2D50D05FD78F70309DDA566DFC160FDA967EA6ADEA8BF45B74557DBCAE4D6187DE1BB82A053CF84B4217F9CCA6 -102: BF46E03CEAE3211FEAED2147B3F2909D406A767005F9C8A5CE6139133D41C2812D3225123B3BF0792288E4BB5C8B5ECE9BDFE0F8FF097DD64FB2CCB964FC9862 -103: 3CA25AE24E0D847D9552FD74E1D6FAAF91736603DEE98E51922A2923630D7CF35917916A1DB23A758E7F067F26A5DE9135871B3DE508CE4ECFEBCBBA1A958C78 -104: 2C4380BB9F29041388A0F8292D97482E1E96429B79162A19F01918DBC2DF0B36244ED9E7D015A20290877ACC4D2FFB14D236CE7FC92ED16C7C57012B0CF6DF70 -105: A0020193ADA7F57DA648C1474731F145E6A8E9E7F9550ECE1A841E2D735B18769738AEA78E7AABB8ABB51EF08A34C187478B4C5AB5BFF4932E97F4E246C60C6A -106: 60E81090C365DA5E69E2FC12256131F134F561C7A411F51F72B7649727C9D7E99795D18D1AA54D09F6B2DD7FC556512F49D582BA6006D951D474039095F3ED07 -107: B213DA3FB3ABD16B1CF5CA81574D78649382A6CFEBA5A88C0B8DD40B1C6E18520F145968C342DB13A2B4B2659F4F865E8CF50BCF2138A7B09A1FC190676E1895 -108: 6862BF8F73054DEF42EF38C4A362ECC8F13BE7E705573D8E9AC6B347EFE6A218950A5AB5ACAC3607C0C94301E0A085BFAE7DAD5E1863D469C113B790C234A947 -109: 2D7D3040A495F8C089C67FEE236A07C7D3361D35271B4DFEA5F17C7E80B888EA339B936C4475194BBE35DD9AF3BE112201AC21C9F5858E4F4C39A0FCFF0EB31C -110: 1F995515755C98C5EB95818DAF0C55B51192BD8D752FA35EBBF51176F05ADFDC32E2FA845C1821B6110F7EC1F1D1EA963433194BB978285CA4344A5F989113EF -111: 3F5855B07A4288497533924165E7EAD3D91A16F5E832FB341F5373C118D5ED7E0EF8D837FEF594C2039F08A7870EC1C2770B7C4E7185246908976B62A416DE5B -112: 1541B5A9C84B684BBDB543F77CF384473D007992F37498F07709EE68033E41829E29109E7C77E252C241C78AF41C790E40696206D58B2FDEE768E5B321362F4E -113: 6DA9AC8390F4264064947684F53A1ADB49314E0619509298CFFEA1729A944990BE2D4C0988BD6E8BD1062D574879218ED8FC4801877D637ED3B5383C069A29D9 -114: BA0A194D5078019B21910C37AFB81A890C4FECE7B1F4E722CF855A6F2F8B82E4EAD37B7B58C07ACEF1EA2B76B146811732EBE1BC0F76A146207B8213802DFB28 -115: 20631BF1D6555C7BA761B0581BBCDCA5A7B1BAACA1B3D3E5B4D70D0C9B0A279BAF00DE093AB1334ED5994FC17386D0B2BE9E0FB67AC1038704891769AE530BB6 -116: F31F66E176DF632694A6F7E16ED8F15CE88908EF1D1F0067CC8A5C805370B9CACE0BDC78B1CEF06630012B3A35D129C4E2AA4F7302E1A122C7E53C51DA7F795D -117: 18B5417DC4CEE4387338C63156C34BBAFF19A2BB962E4248B1A1AFF1FF145BA47D84C6C8570D072BBC57D912C8048E0ED50060CA33408A00722A65C194178387 -118: 2AE09DC52D7BB9E692822A6FB3D582B805E5ECD2C1C4813F94F555BA2210429B615A2301B3EB7C491153D68AE33AD9D28F2FC11B6C61700D79BC7DDB251BD15F -119: 534390ED2DA55D45402F828D6035819C4528768DBFFAE1039CF0D18F89BEAA867589F78871FBC746E43B59E7886FDF734364DEC4193AABF56E8BEDD801E60D89 -120: 231597B2B71E6BE567C86DFE31ADD7B31332BEDA930C4921C4817B7DEBB0282A12D23B076F4783EA840D890F6C571760E70E143F8565561062877D95BD0FF941 -121: D60A1481686AB8F889EACF2E9F66BC32271E70E3E04B91ACA6CFB90375860E0BFC5AD9A627BA0C763CD7576811CDE2921E9A63C0F0A7A26E763F7EC7902308E7 -122: BA65BE7D1EF697281736B3AFA97FF675CD776C125CB01028EC2894EC2EFB9908835A3882E5E57BD44ACA09DC3B0580145EB2265E1724DA6F01AF5F93022D5774 -123: 0DEE2EBEBAA770891C14346A26834CF40212531EDDD64A21EF9FBD62F4728A16E18C673DC8CE3883156F51854A0ACC341DDEE6A0B71C4CBF797CD5327056AAD9 -124: 0717C9EDCC2FAEE525A684EAAB79653DD83BF46ECB285E6B154DFCB8A0C9F8D4B28FA200A6C224B4620CB0AB5B33B9C8BE77B2B5A04DB1A3EF8A5951EC46607C -125: BADCAAE4F76006290B9090AC81B807E7251EAC041E6CB10A2C5B58C4F4B2386E065E6D55C46CD888396C86606FACC82DE2F3F88904E15D549101AC7FFBA057D3 -126: 751F6366EFC97218AC2E0675E7F375444C8D82AE7A139E78305E14148E07100F5B7EF93B576DCE546A7BAFCE24FE148B248BE072031F89B6AE7BA9CC559E9C9B -127: EC0FCB3E124C482CC8D86BA2CDDE931E521F0B6F3E7F333C4388E7448A7F196D95766CEB8A49A90E46B592958BB85BD7495747E71508877975EB1454A4EBD57E -128: CDEEE6EC4D67DD8698B72C13735657EE9F78BB0E1DD37D0CF06063717DA9DCD617C5F4FF7656AA48CB3F697E36B3904F496136A2B04E19726DEF9D3406F8A84A -129: 81BB692EAF7F5176B6A0E5F2DFC01A045A917649D0B23B22C180BD78672F37F8E562FD006A00AF2D7AF0AFE15C8D191339AE28FF2797E64A3809400E2E73A785 -130: 04A8456D131499586CF7B9FC45C2EC96859F3F4BB8240ECD93E439EFD5DDE1DE7B67B688B583598D7FD50CB179D318D4C05EDE04F6FA318AA1E9DD7D4E279307 -131: E5C9D55B686DD9D7B1819A6144F6272B1FB5BB3B3034AB9D1BF34391283BA614D57894925C3D589A7FAC0CA1B1E98A12E9DFDDC2BCD85D1E7F2980709EF25719 -132: 2C6EF2E1C179BFA8295197371C474081790A63AFAA194E459CDC27AD4453B3A8C0110F9229BBDD4BBA5D6E80F2CEA71059334A97EA34F96810A2EBFCC3B177B8 -133: AAD54FE02E67080851DC84E20F7661E42ADB610D0B105B3EA6EB6654DAF64458B7E0F756392196AE2B40626CC2B0D82E47D74D3C50A607F4402C6C6A62999324 -134: CF210EE9A800943EAAF4EFE15DB7DEB696233A4DD62206D46BD9C84A7EB13B5EA43FF3CE15ADD8FC4BCFF022196197D1D097B7A893A79C6640135929FCEF10F6 -135: C81761EBF3235F4D56697B19F62B4F7445C8FDCE3D7999F3249493D50C19CA57C5FC84CD35CF794F58DDB6AC86E8BD53350BA9676AB63B88214162C8E11C16AF -136: 8E56EB131EFA286A92078F5A3667BC6669D6A7FD9746CA5F208EE38D5265CF27076C1624ED0F98D486C55C28A4FB89C7B667AAC505CA1CFE1E841184615B7602 -137: B6CAF44F87688E9E3651C2C98E840264464DE9DFE1F3E4CE5C1BEAD46C7D9D747DFFE282D775E101591A7254112C2DFD543E44B41E72EFEE30B032E5E015150A -138: 8E7851F56585595ABD2B3EBA5AE713672093A3120798506ADD1ACAA3ADD92D737F9AE155B8A5166C0F047801A93731D4B807DFE15F08D67DEF31A7B808601D6E -139: B36B6689A5F391688DA3A0756A15AF15E6E66701E2132CF6F06326AE9C91A0BBAA35664B28BC5B936D2BF1E6653848C5DB57654685124A08C79FD03ACC0681D1 -140: 24A23CE3A90C8EC3D10330EBDA47763B1B03035F9E4AAE0AD336169A2F464E067B026D94ED4B9723E969C8AAE7F404F7B4481C48EF7545EAAE4E648525A68751 -141: C7ADE61F21133886EE0E0B14438F070DA398B3A5387CABF98B0802662F3BD3AAA8738D36CCC0D3EA25BBE9DD3B59062BDF4BE2740482BF6D4C21D0E0FD7B0679 -142: 17EEAD5930DB3A1F8E123AD2E72C38209824F977674A52F380843442F0A5C82B55F8A362527BF5324124401648BEF5E9E26E08050B1FE80886E3856F98AC1EF8 -143: 9DE4F43CA8F7E528FFF9F4EF5897652323AEB95DF80049AFBA189C3D142CFF55AE340358A71B01797A8B72F478276E6353421E1C0C22EBDEA0C044EA60865784 -144: E259BE34C467B471C94B612EA6BD99A3F7EDE58E237DABA6A6656F7F7EB5466DAF908B7759027C277BD9234ECBB23C5C62DD2C9D248C1AE52865D66B5C256756 -145: E49099FC970994F8293E71467BFB1D241FE99322075795FCACFDBFAB396392E37BA09E66BF492684642FF2A03F8CF92E0ACF4677C21AC1C236DDCA103F0B5A69 -146: 4338E438D419D8694FC40383EB1045FD9DFEBC6F18A9A03B4914687A8639322E3B050F48E872BB7E2AD9013D374D68BDBBDD0B177024C1185320D04598515ADF -147: A36238A5C795B23F42D0833A5152770A4B0094BC19DFA72C935D32D02FAF5D136BF55D92B022D01949FF04B78507FB203302833AA7103729771A112E4FD1584F -148: 47180F9E838B129A7732A8DAD763B8CC5437BAEF77EFD34D3B33C63C09F6314B87B3A1436C6866614C3B3A693BC7926E9AE876C7BDE9D712FB5198D6417FCEF6 -149: A87064FF5DA177F3651488A139E568F6C75722ECF97507316BDAC36393724525291682776843B8563A6B014646F6B19F040B17B62BEE4A0711A7B06A67DF75C3 -150: F358321DC6A376ED500A2DABA60096B817D13B59AA02B56C1F51E2C6804F5D2DE2028409964D5755BFC6424287504994C7605749A5E5D9D802BB42922F444D76 -151: AC4A9999133546B8452047EE31B398F623E01DCACED7BAE4CB0B4DF0DD53B8E4921109308DE53C0924E0006361BC8A480AACF798D6B403F338357E8DB676AFBA -152: 0E73ABBEB68982F163257C1145FA2E465FD6E720EEAF5E532DDD1ACCC690B37A8FAEFF8D7D41564A9C86C2F185E0FBD0FCE75259D34A5E96B8C514EC83CA1382 -153: 094503A1B90D71960F83C91D76754BA6B05D670EC6A8EEE1D3CDC652DA6E52B196E155F3BCB62A9E4EF8C507F377AC1321C4C0D7A03F7D8A5286C0019C358E92 -154: 12803349F15FCBD53F2FE11B67DABCF3F470B8E3AFE8A855D7A918E611A2D5F4DAE8FE847ED1FAF834BB3678C6253111636100A991A80C1EAD0D35E28DB3AC85 -155: F489665F4D8A4AAA679D5E5A1B7C501DECE2E0B228630AEEAA1F5643FC4BCCB9E2F018FC2D7C44ABC4AC0861EBA8B7700A49B42486DD13263D978F8A7C9CA306 -156: D9DFBC3DBF0E3D247C95E16D376E7098A92EC59A54FAB482C330139EC6E06ED514D5C74F9604D1171A127502811A16D1D3039BD03C4DBED20BB765EFD34C5F0F -157: BA56A64D01FCF392A6E2F73D791D6C5A57AB40A376E73388CECBFDB910402043B4DB2F2D2B86E3510986CF1DEC3880E3C739175D5C0AA1DCEA18959135E2CF48 -158: F4B07B0A063AB240E5A64F1C494FCD9839276FD9689AA6720A94B83E579EF1044997F6506C1AD82C2CABB9384CEEA0B77D3970C1B7E13F8DE98AFA869F1F4D2A -159: CB4F232024B2D0C48E415D73193CD83C1A6BB9806CA336AC4F3B8FF7BF992B200504ED5E539CAAE68B1E47D4D8ACFD2E6B4BBC1B518689BBB5BB4311C96FE06A -160: 1E67E36D2EC5D0591C0171E7426A88919EA5A17470DA305CBA7BAEE90002E23043FAE1F4BE003EDDC2520A404E639B03880E3CCC68243C60E243A0E7A02E2CA0 -161: 40E46A8F257265A1E57A09B43890FEEFA57F56BB47551BAB38BE2BA8D143C176749484ADEB2D833EC9D6B70FBE872FA53618E64CF0AED24D51BA982D29E730C8 -162: F399712E5EFBA3FDF6B7D04600C16F69260179AB79545F44EF5849308E6FA589721CF7E6FE384461D05EF02BE51E50FA93C5FEEE9279A953C57EC07CFBE53E1D -163: 58DEEE13BF73ADD8B49EBBA90A8EDCE7030C17D6E6C449726D094F90A35A07759A3BEA031EEAF963C4753522EBBED1482789833D15D6EED7F5214E1AB93C174B -164: 13B2F766E6B796C44429A747CB46D99A9866115C78D2E94DAB52BBC9269B6584D26676CFECC2A9F026AE8E0162B6BB8DCB2242659EDA67CF793BF66963C69021 -165: 992B995865F57633665483C7C3ACD34BD108B5DDF151CED97C0D7AD134A8D9250CA8DC17C5C2A76C1C07989228F8B474814FB116C98D25D8F291D10CE259570E -166: 1C5D5E9C29DD91877E279DB679ACF0EFD8464B0A58EC9A3036EDB2621E8106FCF2A81719FDD1B89F13FCBD20960387754DD0F12876DAA911E793DF8F1991C043 -167: FE7F98A1D7839BB417CFF65A45E2DE806C74ADF2636385FEB16A34C890B524A75452EC096849EF0F905FFB38A0319D31A886DD840FE2FA66E16AC7C68B0D7FCC -168: EC67530458F01366BE95049FCFBF65465CEC9AD7D12332CF898DD72ED4D275F9C9EE96AD02603E8032F9B3B12615329CF0FEA564D278B1DC3B47EF304BF901B7 -169: 77BB3F5E58AF174DED0B31627648A1C7B5B8092C829020A6FE4CFD42CB51143E9DE20E3D827FB070DEDDA94D39BD0D330604DCB190E7252B12B03F48072B7E27 -170: CF33E5358E518807B70D6DCFBFB1CBAFBA7B2BDD20931B2A3B08BF8C6755367AB3BBB2FDCAE305F04812460FAD37E9AF70F1905D2F0D3E7628DD1FA453E5AE63 -171: 0739D32112107994BF3E6EC3A107AE3BDB9E2BBDA1D7C10D9AD6AE32952649007F68D28BA0DDD1F1C45F7128C1D3C42EBFDB1975A143A42949C7D97D9F9D3BA1 -172: A4F0B775988038E50429428C8526793AD8B6EC1F0F3AB7F6B33F716C61B7DFC49E254EAA01FFA422A31D30A8268E1BE99D385907479C7E2E0492681B6851DE1B -173: D2472E93989E1F29BE0DCF991A65BFE0E772CE77850A2F96FC6114EBCD78252DFC17712AF193FC5ECBA371B8FD27B0DAC44AFF6140923885F403904F1664AAD4 -174: 6696E09A153B0077D3586705E4A19FA6B3B2DD8621F5D13D7003017A0C569B7483C8CD9218ED1A252EB160C3620FE96A00E267DA0FA8996B417F64DD4A22153B -175: 2337E38B460CDDB026CB81B59B99572D45BCA4A43949440AA5C9F2502DBD8906453FEE23AC0AE47AB77214E52E7CF06ACE73DD8565BDD315F49A460996E08DE9 -176: 068CAEDFA329C1FB00BA02C80877E0E2B1CB6127FA2224BD14FAE5AD0AAE6FBAE052A145F5A8340B446F54AC9BB2108CF6582AFA0FADE91CD3568B604F68F470 -177: EBD69C96F4F2DB05350B74A475CA8C1FDC671B018A47072A11A8DC082C418EB20466720AF12E113C2D507F02596CB022D2BECC4EF8486CB54260020EB6C36481 -178: DB0770922005DE66FBC2B05B1F863ADA569B76DA9B8CA433C99C2F2B4AD60BD28B19A5B3820C0D8B6B2E443CF54A942B961E5EF1D53BAC4CA379964D701070D3 -179: D435D7240B8C6A6AABCB026EA53BB8DE58C5DB471EDD8173AE30C81BEFA9CCDE8E30758CBD7DED822410576115C2415D9DA7FD8A83CBEAE337E5908A012AE1E7 -180: 838AFEF97BBCFF7692C731D55442140D58CABFBE81BE76D41652106E215AF4E934691DC20F181C2123CF091B6D7552115F59937E165F1645CE0E14DEDB864B11 -181: 771815708A3D7BBE5E00FD677E4EB76B2B9A03A09412284A236401E7FCB19B340782C81D1A49371609DDCD7E38F9448FA657533D53280B3D6B492984E9C9CBC3 -182: 649EAB3244AEDAA18CF0A1FFF6619D63BBB66955C5D58E3A592E53F537FA74C60616B9E4483BCBB08AD7D1F5B6B91ED3176E89C03C224F94E5D3893FB6D01CFB -183: B4B6C653D90EDFEC3BEA0FE1FD766D5736DAFA184C360C8B036B7CC842E8C76BECFBAA7046AF087831E322FFC181073C19360A269851FF4DFFB4712E68560C3A -184: B0C0061EC50BBC67DA4765FEBD4033B8A204260177F9CFD451E97B93F19736D4B0B7478E29FBE76BE17AA6B0DFE9C4CB9C6E4734DCC8AA5EA825F101E5C9B02C -185: 54EB4D2C9B26B8B17818AD702E065407A19A711E22C8E66163E7311D8ECFA54448453890194C3EE892A599125AAFE1CB230C6EA268ED68ACD86DBBD17432352C -186: C049743F49D57D9226AFD26B94BFE9165BE5A8CEA9DCCD101F837F29C63A4201B1D4478EB5C4CE9D8F5D6E91BF89D09E6A0D918EE7A6D58CCD0A46D36963BCAB -187: F11AED8EC2B1C003B8E35F8F2A05861D9DD6B7DED02E28EFA4EDBB0BDA0DAA76EAD810CF1C78F50668D50DBE2AE65009C2E12504DFCE9F9BFA9A14969E1D0622 -188: 1CEB4106BC700F76F4825E6790959CC6EC85AD93D6FBB9783098E367E5C9676AA0D6B8CF9A7DCC67565284E71205551650557D556870B421273772524463245B -189: 9711275100A787D9678CEB38981A2246112C2FB1F0EEC1F844DF1703DE5B0FAD995FAC983526E7E3336B8CDC9DCE56FD66B73811201A2DA6783309AB6B9C0546 -190: 81E9DC0CBF71797104A44E72841FAF7F9CCF35C18EFEEF873450A25AE56564B0E9DA98598C527D5629EEF7F0571D9AD929BAB87A27539CE9898ABF4C57C9EBB5 -191: 28F4214D1C8C5B9291F2E1F7FCE732C3290A691432A65A01F7EAB1A313B83936DC98A3B39B5F7712DDEEB8968001C93A102C7FCFB8AD7D49B29661C9A9867109 -192: 78C7A025ADB85145CA8C6E417C4E68A9DB83FA78A23D0CC3DF20AD1409B936686FF756EB51BD8901157B1D031DE6848D97DC2E0F137BCA1D49EE3FB2D5A5E83F -193: E2C25FC61AFC794F65AA57DCCC4111D4B15331842493F93E9500AF01E2017CB226444E208BA9C841DF6D7ED28955B318511335F842AF3C2C0573227AFD790739 -194: 50D768C744CDD318B950986E305BF74B77396FDABCAF63AB786893B5F4104C2525F2F69905955A35234BD6BD85DB17B94AE7008F2E2C368E9639ABE8BAFEE4CA -195: C4F1BF6C56C494351A880172B9CBB59BB0D1A5955352E10A868D3C33BFEA0484EDF6ADDD009A20C8D7B59B7ABD5115D595B026CCA6442921038D9BE860C44CBE -196: C782CE6A141EF9E6CAA61853588B8C75B3A39CE191C161F43D7C5F88FB77BD5055B21F37D4A49D65CCDBD0E6BFD98193FC0092A34C21D5ED0CAA5F129D462073 -197: 1B2F68D7DC7563C286612B3D708AA725923FC9A2FEDCD4B1F1E2557CC70F3BF65944A2BAD9705303207B00F6DBCCE245C6E653C38EA0896DEF4150DA118A699E -198: C1248D0A6B75BEFFFD70EF17F2D0F3CE3628BCFB6A634C93E8F0ED97BBFDB48F6E5608511AD7091D7B062B795EBEDEC67696679EA092F7B84A64C99BB224D387 -199: 20A3D3F3676947173C7FB824B40069A202ED3A5637DB41C97ABFE9E7036D6C009BDDD5BFFF97FE80EBC40355A535D7D3A4B2FDC09B809D3BAE2DC31803413B27 -200: B85500CB777B14592A4562A26B13AF3F08CE74E03372D9622E29C1FB7988A86B8C00DDB2049C1395B43B17CD5C415A5AEDD71E05CC0980EB9520D4CAABBD6FDC -201: DB553A36A3EAABF7BE6FAF85DB96D3D0F207EA1E5B55DE589A116DB80C21AE5B1826A5FF3BB9D84C26A403A1E5C00BC7D2F6DE3F6A9661899D6D75373ED76B71 -202: 5580422E6393475B7C1F5010FA7F4395B969E190AEA056ECC88783A8B5FAB8ACF130DFF39DC0175E9BA8B63B4FABA7E4A36FC55FA1504468727086B2D26B5818 -203: 1CA3DD194E7BCA2591AD1B95D0CD4CF7938334C95A1EBE2C8C1A9B75E6A85F534C094E652248048923CBAB97CB1581E9A2D1AB8375C506159B724F74447A3201 -204: DC525D0EC1E62EA68C013470D77B61377398EDCA82A91C1C3E4D7E5D910A9D556B3AC810FB1457BDD70A18B063523C39BD806A2227C7E057CC6B018DDABFF73E -205: 2F0B9523725B27245D2A1B635DB5A3A3800099546ABFDD95C8E86C67C378D91E4711AD1927E90CC9B50A1A7BE3D60414E487E72445936FD0FA2BBF541F1394EC -206: AB6EB21BC802EB0854F61346F7BFCFFF738EA39829AB2785976D869830DBAC367D59D50C3873B960AC5185F3DBCEABD4E4E594C5C2916A8DC304207E887473C5 -207: 8E1C160A334D41F08918EC084BE12872DE79D00473D1B6ACADABD67E2A6827FB1DDDACAD9BFCF27430AA84F3F7A0D6CF2FFC91E7758F471F2739D51B60125D46 -208: C135532CFE84849FE9F40799E1F2CA05568868C0D44E6832A05C29ED17C5F6D0FB844485CBAE5E50A67F2319C30526DB444F4B45CDAE01A9D0542427731DC175 -209: B1FBEE68843D42FB558D1D9E0B759C168D6F84D07B2E90B646F45F1708B0D6AFF7BA8959EBB6AE4D5DF9A9951D139C81BBE602671CFDC618AA1EB63288DAD72D -210: DC11C3D993F59473F64F16F87D5F085E834306FC1C40D12CE7D6E44C59C31318C694282B0FE53B4B60E1E5DB546D930AB741A8DAAB8ED67C3D87E8E76B8C025C -211: 85BFAE07EEA80F939D52CB18C970C8ED9D4035B57391739C44D7973223C51344B9BE28C16EA29B35AF74A2F8F7581C766D61525DE5922A83A1BB600D97F7A3F2 -212: 26E52AFEE0F11DD79061EA3E4F97205729E6B61E50B69CC2894CABB08CFD3A10C41662CA6F6FEC9B5B80ACACBF968C5B75BB8CFA31D06C82D9CFE97F6E1F43FD -213: 74F18E92D85D9AE79BD62C4B8FFB2116DA8157E17A6927BE2B2D0D79CA101F7CAD6A25CD623C8756D49B9CBB903477B9CAC67734F84F0915ACA9025A9D5C6DD2 -214: A51B45BC09382F85334EA58CF7E7747457B517118042D53D773C66668CD6D5059B9997DB183B1C0F2900AC9949028D8F76DD8B7259149388FBF340834A3BF4FA -215: 59DC88A518FE44A7FD0F316BC8B5C865D370A8BC82533037C9872B24390F7969ECA530911463520218D00B415409AFA90A63F88EE729A252F1B747C414414091 -216: 146FBF362ACCEB8DF79A761285A0653484C38585817E26A7B8906FBBEAD70031160C7B924D3BD3A9ACE28A5712ED0E6E89CE4E71493B27F87BF73BF592D80600 -217: 74B6738B2F0904FD59F3A680CFBFE4E466FB5094037AA1942DB3A0017260D75AC5916E044CAC6BD0E25D176FDA267542B2C7EA201F7237E18B9D00723E98A239 -218: E821A4033FAF0FEFE525115109D0B836A22C287E3B157EC302768BEF7989AACE853218E5AF7DEE9F6E234AD50ABCC8A9658A0EE4D9FE050235341C94308D7A4D -219: C3EDD652D2F831B1C783CE1B8BB8CEF9453FC71F519A4800EC2362ECDBE9EC142F768185D55E322A32AF421DC84EF84615F7F3DBE6BC6E702B4BC8625CEB5BF3 -220: 6A3CA0B5A43EF42A1D6526C2F1507785248374C7D2602079A923C841F775A652724C29E788695B52387778CF2E2BBE2213B2FE212D729E3718D946238FF0E57E -221: C425148335AF813E36D072DC64C7EF6782D7DB981C5142B5D32D6D4338E06AC64363E86E88DF018968FD659DBF50A4B77BE2A02E71B243D65024B36CD71C1796 -222: B796D1F5AB11389EC7EC8DD4D1D5AAF17262C8522A4AACF454B44A7ED71E20F7028169F3164AABEE4C716B38271D72D7ACA3E54B30B9E05616AC51594995F61D -223: 113A56E96ED6F8613705B5CCA6CC4F2138204D7BC0C8965162597C1FD2F6E8143F57FF1160F4B482F7430536A349D20918064AAD2BB38A9D4403C16977B9616D -224: 9590A3BD7A0613381159E1E26342C150DD9B0A937855BF78FBF625648448B540158196A2855E7FCB967F22F5AE927D60E97D0C1C17A01E8D07284FF985F54B8A -225: 74B11968CC7CD925E21037DF011F1C93B2EC34C34A3224AA281ACE7D6F1B10F2A755DD6DDF33F1A4630123BC1CF875894FBD8D8B70AC05F8C3C1076E346A45B6 -226: 85A08D6993B7E5C014C3CA957D6B53EC1B8A5CEADD5060BBCC350915D3278F28E238425DA3A95AEF725A23B1BBD43E5D8832382BF76603F7E2E4FF711D540980 -227: BEFB08F621281473943AF153124256386570261916E5238FAFE44A72801D7C204A974B38696C102748CD1DF65BE3EA8C45A40021C28C7E4BB143800A3F38A93F -228: AFB97494318F31A4C6813246D125217242247D4EB6CF884B244E59655DF866B2820A8E1A7123DCCDE98ECBDF1F6125EC5B95A0D9F85F05CB09537B3FCFC2CF3D -229: E8C2E1D342E6503D77328A2C1336F95939B0E8855F75CFC61D4B03F4AF2305AB57C7DB383055A51E61AFB75494C222B01967BC74B4574B8208FC337E09E57075 -230: 0B396D0F15F49E60994DF4FB1E7E526A272A5B41FAB67EB8A41547CA6CE5B7F3FCE404B6A46BE79AAE37B4DF2C2EF68EAB71F39D5908760FB2124C7C83B0AAFA -231: FE86580438E8EE3459A62E73AF0E14F00F4F0FAD0447921FAEB2B77A0D8786784659B1F6D3044538300C759EBEF7066F9218F9386FF6C8099E6C71B5EC6B721B -232: C7E45B1737EBCA62C87A8F0C46F661BF7D3FC020C3B4B91988FC36C38BBC8DE05A22D4BF148F96D31115605D7B04D4CC8AB3F8738B652E933D76CD6966604CAE -233: 2C43F84381FB618512EDA0278FD382AABBA41FCF5546312DA565F4503CACB86B8A704B3B49C0C86B2207E4641F71FB5E72654B0AEE705C52ECB2E8FAF109FDF0 -234: ABC4EED8635DDFFD9900F5DF8C6246CAF12D8CD9333F38647255DCC52A20B6DE8D4109957CBCC2F48F52346579E008091628FD7CAFA092F2568828F424EABF26 -235: 14672F19BEEF8896F751B0BCF40FEED78A8093AA4DCB590D7AA588DDEB3170460381FDEF3CFB608D55F9E8A295A36DD64DE058C9EFF30B1D1F1A3671388B0AB8 -236: DB87424F975B03F925D8B99A1DD0967D2283E408B6B0155851DCFD53C0C00B05A42CFE14B10408E0F5985809813D35D7AA7C70C1A7BC852C7F254F0303103628 -237: 095D34066A6E202C896EF29F3481EFACBBFA622676F58E90FCD5A0591124E489BE3804AFA9BD3E4C92A9653EBE878A88B275BF9B5C8EF8EA0F01C89CF40E5FE0 -238: BB5BC80C718B85BB3C3DCE95D186711D5B90827B2097DE63C647E5B6C14B4766BF8EE8ED395103030F72ADF0C8992AE836086571908DB4A6258616EDB4BDA878 -239: 9A18D6DD0F97B7407DB0F17896DB2A2751B76C69B6F91E821A0DD717DFDEF630EEC1427C2D190C095DDB07601DC0EC8687B7411D735A9A6EF0EEB84A60948BAC -240: 60A614BC40A7DE580B6ADD05279A68DDCAE79EC3DDDD2C6FFF7B77BE9DD0260DA5241660982B77BA9C4B904075F39612F514BC86DF6F68E189FAE2C84A32CCE7 -241: 5CFCD44DECBE3D74708C620C70DA807C5AD58072F7558D950F519691FC96F98B760B02897C3A85F68EE37B2735931660106670C4DC7FA98EE2E18B6DED532A9F -242: AFBE6D9871AFFE6D201E2E61435703856424301ADD5152DC745D96D1BAA3ADD4C78F2D7C5057F1AE8B21FB91879562050C84144A2042AB2CD273025FA03839F5 -243: CE9C1B19D0E0FFD3085D28C5B2176A741A3034C1B76C54740AAC3470C1C8C6E77BA765AC4D6D90D4DAB0A89AFB17A8863A2917674F5A189A5CBF721C14F5D637 -244: F2F065927839C22DF56960845E27868BA8F272A464619EFFD9AEBAF1E40A72DDA81CFC67DEE13C351736C407F59DAE8EE6F2BDA17521CF66F10C73566B7DA891 -245: 24CD3AFA2218863437C5518021D1B96E0A80EBD14EBF2FA161A5E7032FD985BF71EA59DC5E35DEDE5EEE3098EAF6A16698F5BD5903C4ED218868D1E96E4B8096 -246: 1C6AC311730640FE427C1F23B60E817C25E1318109643A8AB51DA74995FFC3F156F098AEF97F37CD9746002DAD22FBED1A1F222511B92AB5F39DA9B53BD62AF2 -247: 37609371EB63AEF0CA6EACED8388D187203A88C379F24970434D87950C9B7DF9A68B618E9E83E3EB10376504F8FEE2505830EFE3FFBD23EFBE081325AA171482 -248: F0C06F6A2C7AC3F0EE428D7D1BA893E73D4D2F417999043BEFBB3CED51F95F7EA3CA882B9E8C1C973DD8A7F450CD60BB5A0B30D44A574E43E71D2533EFAEC6B5 -249: 3A9D1BD43CB3B7D3E9364F05987DF4CD99D573C036BF1337988751658EAF2896244DF5E4DD8984DD494709E587A75EA8AFF93681787AD738A95C5E98616115F6 -250: D42E2D57B36095F0CFE8F771A9B198C7B7E0433763341D35033F32D21C638CD948D8DBE75F533391347C440F208D17F20614309DBF1091DCA10801E16F5D03B5 -251: FBB964B7865A889433E99C4B61D3CD069DEB99E44673068771030EB1B8F1FD3B3ECAED1DCE8ADFA44F9A625472CD4D987EC7ED7FDA0DA912C8AFF5B20BED7F04 -252: 13F67CAD96C3304FF3C2E45D71A2D69301695516EA384F6001850A46A7F93CB74C5A4CBC1C56544166ABB6C9BBF90B9559320F5F75ABBBDE34C7B8B45C783BC1 -253: 78A609196BB40EEEBEBC04A8794C840A6F831680864D65FAAB093A499A3CF152EAC96865747ACA28392E9F102962C49247E0EDA424A345C4AC6F4B60CC3D2597 -254: F199515CF806EA25237EB93D658BEDC994E61EF70F5665CC2F230E7A40EADA14BFA00D56C1249F2E5C8920977A6C85017F8663BE9422762CF88487B76EE7EF9B -255: E8702ADD4B9034BCA0590FF897C10022C56D08FC4EEE0A43BA85E9E9C2086616B1BE7B6F928A3C53755506ED2D9D62DF5BA4A1862FBCDBA20683931A2244AFBE -256: 6E6A3CDE12F2CB3A42EC8A5D21B435C4DA4DF6CA7E41537D361D8169158287BF1D2241581DE07F88FE92F5AE4E96EB9C489FC3B258EA3842EA2D511CE883883E - -HMAC-sha512-224 - 0: 48EFBD72991A1B6C1A276D5F37B62E55DEADDBE0BD107E4BFA366C66 - 1: 839952295D1158120AC85ECE73C3983626390813FD983578BFB34101 - 2: DDE748FF9F9784F23BE861CC2C7FA01DF6AE97AB5E40BE7DB4941DCC - 3: CBC29E8C2E20F04D9AA8758F19D960287A5A31EBB6056DD31F69AF43 - 4: 23D379745B258F1CFB81E084AC79473E9DC5733E63DAB944FB929F2B - 5: 3A3A791D93D0C8817090E28192D3449BE494EEF54337BED209936746 - 6: 1B33D31AB9FD79D0A93EB9A50E8E7A4E78B448A05DD3CF93D9A36B75 - 7: 3C89FF579EC0521AADE48B00C7DD2ABFA936A4C5455688870B4121E5 - 8: 2F8520FEA211192EA7B5A1BEE7F27832AE7CC411F8FAAFF8FC573016 - 9: EB45FE092721B4190C63BE24D696F81FC84AFD6CF6E1412A90B8CE9D - 10: B25214D1058F6ABADB544B638AFD69DA778447D1EC58277215DAE60A - 11: 96B714CC79B11CF9B0B8B903AA195BDE97B84AF8EBB3C20A6CC1F163 - 12: 3ADCA3DC4F0BF937F0C01D277D448A46DE7E3AFF807926D2F608BC37 - 13: 0EF449E66BFAA6E5000271077D0B9FEC85203C63EF3A555DE2518B06 - 14: 022B7F16DBC27E933AAB75E36220BBDDE629422DE52FE52F7CB5AADC - 15: 2B8BDB3ED8FF84D18E69933E83C545FAB236A7506F025BCBBFC304E7 - 16: B338B15B48E49B4E8597E477EB64C9AEA29F1AC96E33AFDFE528CC60 - 17: 9DA6C657C280547E17BB72E307F8751077124E7CE31937F19D783CD8 - 18: 683FEA80E1AACC175488E0547F98AC771A255E92CFB22C1D95393451 - 19: 5FC8148383C08015F483C1073AC5CA9746886B88669428A3FD3FFFBA - 20: C0CF0B758B58F0E2DE2340C57192BB158E72D2FC126DC34F8AACE2EE - 21: 65469E3C95382569C40CCDE30BD09C822EE017F4A8D9306E8469DFBA - 22: 08AC0A7EC2DCE74AC22243DEA716D0279D7E3F8D4ACEF1679A37CB50 - 23: 6576D56228261D1F42BBD95C096D134E15747F4EF505AFB1D292DCFE - 24: 1E35DD06C89A8DB1536A95584B4319D56D5E58567F49F30B9532319B - 25: 6923F40994B9773B31CFFAB037F50F934E65F376A250D884B1135E4B - 26: DFA27EF85E5EE8DED1D20E090200E8917F6E7854766AE3C6E587DD6B - 27: 600F788C7B71CB72E10F5C4A8E92B77EA6DC8CA5A973647FCBE7BB5A - 28: 3ECC120D2BD6AB1A12517D85C7BEBB5C5A84DD946101C444D2B0C966 - 29: C2E8D1FAEF0F22A3DA726142FA32EE59F21C32628D6F3A19A97C3D3E - 30: 66A1CE87C65EB602284EF6DDF3F4C21F45A7929E99BED1969A63C5A2 - 31: 7F19B1FDBFDF53F80D96F5E6C9F332BB6288CCBAA4332CA48D828F92 - 32: 6C0FE6A2C4684AFBE80A8115B9D2DA15E6B4252A7CB3743261D5366C - 33: 37E4D09EFEBA5F9B93DE66EF903995CED65DD257DBE75AD83B33496A - 34: 8DA8F60B56EC0E251BD622DD811E1E872043F6CF08ECB3624E15BED2 - 35: 8FE24873322EE8118DD2A7E5F86B0D97B9F0C4CAFE90D0B0EA297DE8 - 36: 8CFA8029966C1CFA41B298072E673F8762C205D31F62952F45B31BB2 - 37: 53276A17E8351255D48E6CE6BAB2AE7F4D538F58A7F107C2CAC6EF56 - 38: FAE09DD82A2038B168D4BC23F2A52FE4D2E532BFCCF3109849624CA5 - 39: B37B81213E623D6744914F859C08C020C36A0B266651691ABDD9FB4D - 40: E0E584B70EFCD22727489D86C13BFD5B11218BECFFD12224AFE8BBDB - 41: BC9C6FED305BD9882D74533E3082782F58BBB9CE71F3507A4F928F0F - 42: 12411F98581BE2230EB7A0865149779D259A4CC5D9C2F4E792180B10 - 43: 56133ECEA7994F5216DA535BCB81CA193FF523C0FCB10E5E6593EA31 - 44: 97FD2C66D1D594B943BDE7E3F157B65B0CF8D6EAA08BAD0A218D96EF - 45: 2734BDAB39E9D243043B81FF4C6618AF7794F7D566487598A44110F9 - 46: 6D9E305E16377873B49FC8408BE1AC42BF1AA4609E7BBD83464903AA - 47: EBB237E61FD7E8D0003A4F4DB1AEB887073282311729BB56F4958E12 - 48: 9A85D05C61B90B5C18E8E4B3FA1197A1895B794BD40AA01624415DEA - 49: 05D7C140A6A20BD82D97812B48DDA409871EC57FB0847F0DAF26A9B8 - 50: 71D65BC13FF4AA3F679617C83D90689BA33C428209B59F279DF8C672 - 51: 0F2045E03869ABD13798D62D34F4F6059157C9533999F32244933458 - 52: C4E9037696D5E82E949DCA2715990A8460E0FE63928E4AC1EDF38F02 - 53: F41678F54F797944E043594234B92A7A918D32411C5E200C02C15F81 - 54: 244FA5F5A7981357358EB2825A8E48FD7F2691891D9D6A0D1E2CEC38 - 55: 605EE444B396FBD3A53EEEBF790A3B77F11FA06AAD253F2D12314C19 - 56: E7020C2C0F0950D713A006C1C577374D791F09B76F7E35A0606BAAEC - 57: AF1D23B0BC656709B57BCF069AB307E479C69F175238A190E2AAC393 - 58: 9A6260BE8242701E865CD781298586BC2C224723BF4E0A8F1DC50E9B - 59: 206C7CB8CBBFE79E1FA25A33E49DF7AD9673C8ACC1AA730EA2BA2A68 - 60: 7AE765E266FAA21812AAC4338000AFA44E0F80C2ABB325DA010548BD - 61: 9D17B8886D68652CAC09151912BB5969F399FC698A83BF0BF3C74FA8 - 62: F4EC709C89274BE6D36800FDDACCC6638F83FD058FD356E86A320123 - 63: 82892F3D1F6EED960E4814A04545115CC7BCD918606F4A150C60327D - 64: 2B97508B1FCF1C00A1D7646C93E196048A9216C80A7DBE128B087A42 - 65: 0CB2102EB19C395C3DFA52671E18DFB818246C97FE5A0C18544AC98E - 66: 040E1B2E46E2DAE8AF799386F341766384817826CE7664C726B248B7 - 67: 07225AF0EA6AC19945A07FC8BD67FC825A37ECF41C5A86060FC5B5FE - 68: 0A476E60506A019458032F6392CAE63D69B1DD8BCC67C3F867A04BDE - 69: 6FC8CAC1A00E57EC0E59D73104A5C3517CAD3F0CA1A2832C08EB66F9 - 70: 34C8FF46550C16BD8A0DF97C6AE857791F327597A1AF412D4B260536 - 71: D518FD80AA92B3FB7A48C74E136C98D63070DA11B8558FD1506EBA35 - 72: 7744B4CA11C338EB81BCF4202CAFD3B1B997AD63089E9612E10E1C7B - 73: 0D2CE3B5C63F05424B7534E5541C821B21216EA38140975D01D798F4 - 74: 7FEF76C6AA4975C98F1B0F491A4E7F2760E4742F697D3B2BB36B3355 - 75: 48974ADBA6926A3AC726872C0A2E86B6B92FDB86721E16F33AF898D6 - 76: 6AD0D4DFCB43BFB8EB86D71E46185C13871A64C53D74C0C22A7B6C31 - 77: 57720B3205D3062D7E07079CC74A41D4396FF6B6A64B0B09333F0404 - 78: B8154B62DEAEBD4D8DD0B9141629CDB565F37DE9F97FCA1B4A25EDF8 - 79: 3EC327CD667208DFF7991BF9E4F6CF5056F7AD587C7C284E70076978 - 80: 83C505DCD265C6D694D8713404BF2AD7D5650E5DAC5213601B598C4E - 81: D1162BD2E8E32CB7084C6DB435A3E579DD48A09A6C5FB9462594FAF6 - 82: 2A4B3B272D6DF409C785784442067548A3EA21DA8D87432CCA8D4FBA - 83: E4F2F49F66551F2D3502E369B3D30E82DA681E1675BE6E467855716A - 84: D0DF577E51FA006C54BC10087DD8EC1F2C5BCA01D18C76ACF8497901 - 85: 5C750D859A10B9860D051ED996B5715BF1435EE3F79AAD28702BCF2A - 86: C81980EB158DD340B404B4E8EF86B9DF685EAA3DA7C836DE9BE3A6CC - 87: 189CE82411AF0612CCF224DE13BBB34167E24253BB5D0A2271861ECA - 88: DC6FF0AEEFBCA6F550ECFDBC2D53A8A6EFF92DB62BEBEF3A490A5512 - 89: 55644C0BED38F73039F8F367E3D17E5D009F14AFDDC89245AA20E2EB - 90: 7F137F0AE9566665B86F466FF000C36A3ECF2158E448C44FDE9B685F - 91: F455FA8E060CEA12A3DF67D66E73D766B4AB82D7647362F103D95950 - 92: 687D5B52A2179DE3768F47A676CB4973FB1AA806002E2A2B3949A62E - 93: F9EA2922CAA3FF38FEBBDC41C49A25A2D11E65E9BEDCFDECB74716D2 - 94: DEC3626E3022A697CBBFD35DCF2AA593311B839B62B618C395F8FABC - 95: 799B4021680661DFC94A87EF06E8EC2CC9C5CA9CA6582016C40DFBF0 - 96: A7C44F66C5D7A1B5FE63E5C9032037F1D7E5BCE4E782E8733502892C - 97: 7824BAF4BAAB467C66206D60072752913D4C4664DBA9197289528ECB - 98: E5A0166B21D133CDDD7ADD2F000F0C97DB9E02C15E6C0D7E3761D08C - 99: 26B94C44E3B082C083C507976DC5271D64FEB19DBFBF7C38967E424D -100: 4502E140EF20B35E73DF874AFD5C83993DBC395B19197EB321C1A1FD -101: 4B098D373B6ED0E643F4D7AD71465154386457A62F409E6BE5523687 -102: 7E2F229DEBB0C08F1E7C1623F68854F9BAE2142E44EAD46CC560AAC6 -103: 685919BA2AC4826513E2A80AA3A68625E1E04B7B82510FCE0A0F80F8 -104: D77057551DDE8539059F810E1E5D1EA0F9BD3C5057D3720D25D6496D -105: 7CA61B2940A9E015C4BEACD10A2A5B5B6A1480A1BB79FBD0AA40E0E2 -106: E8B27E9AEEF6DFABFCE02989003FF965E24B888B912EA0C98C44114A -107: BE7CE40509391771AF7D8C652620520D19792BA902565910CF19ED06 -108: 2FEAE129B5A74B9EC26359553E051C09A02812F81958E8BE90326DE7 -109: 4BCE3E62A8939372CA71E83661D2D1B297B5F9EA76474BA1E5D15BEA -110: 9519D5CA28959768E59BB4C698F77EA1752B9C9F5BC6DAA684980FEE -111: 44B228490D8AE1FA0867F59C950F6B28DAF012A11D83A81A295AF2E4 -112: 595447B547F45C74D1014AFCBDB5922B10D2554E134D335597BFD351 -113: 829C4F36A1B49D658AF8366AE2B4500586625C849A3F8B03498C0271 -114: 32DF56524AB646F3DA2CB8F16FD5B4B5B12BEDFC8C525BE30B892125 -115: FE03ED2B0E48E730DF1C929E0D85FADA7E063285AC70832BEDC7B110 -116: E37C4E201A5B500915F63DC7C4A2C8D1585A893636E22C349C379A0F -117: 6994EAABD9981D8D47E4C0141FFA90E715E91CD0E784169427468DE0 -118: F00CDFB559A1E5DAC4CE58F160A59AABF1C52ECFC033FD2A249CAFF7 -119: 898B07C76126051871DC47558B53B50C626947F4F33A28C5337E1255 -120: BD063BE62F249B9A2FB1A0436616FBFCB5B2AD8A5DF1E7ABFE7A329F -121: 2D146FBDE27D9B602B77D407120CEB2CAE9D28B11D1EC346D5B1D3C6 -122: 8DFAE64D860BDF213F2A4270002C148BE8E84D0311BEB38DC5F2249C -123: 06052EC65A786D16765D2AB54389C7E85339C36A5545A853E055AE6D -124: 14CF06FCB039E3710EC182B1F5E18312B5E11EC93E0AE84D7A5BCA5D -125: 67C4256494E9291E1460AD0536102E41091F04A1AA44C78D47D6D1A0 -126: D9803698CCC34B0D46590CF24C5FCF2F36BC51FD2686A96D88D2BCE1 -127: 6914FAA3532F1AC05CC4EDD495D6912C3F5965987D9D1D4AA4B21E00 -128: 00A9DC95039BF57918AC31B1E373D77D285A84D44DBDFF9ABFBE7466 -129: 1C6B4EDEC9F9CCB58DCFF50C802BE10E79501B8792FBA8DCE52B2CA9 -130: FEDFBFE3C8172E1834E44A6752A01AFB6C8246C2353787FCF1A6BC62 -131: 27D852515A2B6B1C02D0E4D736D2DE326D5C904EEEDCCD64FDA6FBD6 -132: E3E80979EFBD933792258193F413F3E55315BB46F74A538474DE3565 -133: D151F247C1316BA8ECABB0FBADF9D4CEFBAA93EFE2C89C6C8EFFFA6A -134: 96E250A71B2521197C570EE60509BEAA3D0FB1B2338DACE0094ABC46 -135: EAB4CFCAB47A7C813A99577745A96D806B8EFDD5BC6F8EE9767267C4 -136: BAAC26619C1C10A9F9F3777D199E5FDB737DE32EE00B866FFF7F16A3 -137: D07F3979AF9EAEE82F6157E41348C259AA2D36889EAE8D002C4790C4 -138: 8EAABFC87D6C6AD10B783B54AAAA03A5F3BDE35A04F4DA9ACFF38772 -139: 7706344CC31F387CD703FD3348D2207879BF467E61A3E1CD9F567056 -140: 1412F87D074B582A81193D0F70F5C22229C51E2DE00045CBB05DDAD9 -141: 6193E659A599F54CB0B349B0E869010F257D9ADBC25514C6084F3273 -142: 4382099F2F015954D7C9E586C539A0786E58A723F95ACC9239CC68A2 -143: 3A520462C8DAEACBB88F1D68AC2DC49E337835F9E453C3004306F78D -144: DFBA194E4FC14F2B9605DBEA44F5C06D4FBA6FCA32051788FC009B37 -145: 30E504ECD4F40AD31886EE5E4571FBC5C54F6BAC96008171FE2B5275 -146: 68331004646EE0FC06565E191A5852BA6E45236B516DA9B87A442DE0 -147: FA9B8009638947DB8F7AC40D67743AA26302415FD66A73DFC983CB3D -148: B6A32174525E96186EDB85E3BB2F0B45B25D6977B7096E5DDECDD934 -149: AC09A3F072A7BAA0EC985DDFF5CE34BA31FD87981A41ED35F4E38FCF -150: C9946B4FF4245FEA0D40EC5F9439638B9AF0E886E1D5C8A9F04C874E -151: 3310303B0138A108453729DE4F075B61E8CD6FB59997CDEFF4736E38 -152: 53BA121A4A0D61468F22850DD658D31ADA31E0AF737E5E2B6F2F04E9 -153: F7213DBE2423D88FDC42890FB1CBB5E59B11641E67FCC093DDACADE2 -154: 4961A8695490DD6FE0748FDE2042D55B49176D3C450E323672BB2277 -155: 6BF7C3FCB97ED327987B17356B6D3041239392D5645664BE3DF56248 -156: D70C01960B95A2448F1F2EF31266DCFFEF4B71AE1A3C1FEB10B37324 -157: 2EBC7AB719A8DDDF75E4F1B3DC89C44B79C6AEA1D14F718462CAEB93 -158: E05E69B2B3254EE44406588B57754E295F783252C0813EFFD7B5C3AC -159: AE95B902D1D103DF530DDB7F23B5042B00DC3547C3F984D5EF622237 -160: 8EB2792098081D060698CAAFE89A17E619152856757AA70693615F65 -161: 41E0519DC9ED139EE6643D74553D44BA64E2970269C8F156C2D41CA4 -162: BE04EBF4F3BCDF671435F2D0058E2E2B924C7E8D5645DBE5F6B1BC1B -163: 927C73F4F7A760FD54383D7FD65556DB111E26D36107D4C58314E17F -164: 1A38B77BD45EF0661411CC1F5E8C2468188FEE7D8768AD4BF55F7412 -165: 7E5DCCBBAE6D0F628E409C1BCC266ACD824A6FDF01D39EA0E006887B -166: AB5A3611FBD94A61F6822F428462B69E20F660763FC116F10DF90ECB -167: 6428DFAD5C80BAE31173B0169B87DB88B9B55FD722A6BA8216C8B01B -168: 2836EEEEB3A8739F1098E8F0C14B070E40942F721EF3CF2DF29DBEE2 -169: E616758FEF5F6BD6E3A73C6A4BEB058956D3BEE8FAE489D8D548C881 -170: 2F7F4B3E1F57D94581054F05DBDA5848AA05F459C32C1ED0983C48C5 -171: 491E9FE109C7E0232DE1FD44F29AE728889CBF63F28AACFFD87E94DB -172: AE228F17075D696C6721F424A5D86ABC9F030A716FEC12353885AE1E -173: ECFBE1037F707D02849C032653FBC1B9D25BD353D10E9CEA44EF9513 -174: D6AB30DFCE87BA4F2C476FFD309B8869E393AB2FF4CD2132B64A74D9 -175: CB2FA4084BE1A1FC46B0A69091C9DD87D632CBC7684125DDB9AC6A64 -176: B1C2761E7652D38A04B819CB16EC6215B5D2479E86F7BE0085CA8B0D -177: B1BF4F1C96B3BD7D255052014E6F4D73A684BCA6F0A461310F47D8D5 -178: 8F294514DAA7CB978B8B0C5D76DC2006EA2008BDFDCEF0EDEB446B9F -179: 816A65E12EFD71A1113C4B819B88D67112401C9EFD4D855EF1092DEF -180: 6767EEAB8829B5F5BFE1BE604726C6C20FA0E54EAB0CE234FF5952E2 -181: C3C4C35690B0F28D329DFD061AAEDE2106BE2250FF537742E40EC41F -182: ECDEE6D9F4E121FC76B7F0C9B102960C69B6A1049191A11C2C7B8C90 -183: D8EF5B01A28D78949F0C58F8BE3D3BD3A74ED5DE0028BA42ED2B1140 -184: B43C43A6B6C73CD2D9D595BA20F2EC247B4D19B16A561EB26DBA59BE -185: EB7D7A248124057B9F74FC12916E559ACA75F20ECA1EB4E30FD2527A -186: FC707C7C06CE750695075E848E973EEDC9F85EB5BAF214FAC3C5AD4C -187: 678A5893561582CDEFE346CA10C16369DEFA9A17507B99ACF216E59F -188: 40765BAD0CB7932AE3B7A192E0B388D63C54EA63CAFE26AEE429033F -189: 3CAC08B9CB39953D3E3954EBBFA7A5811BCC99D9577DBAEE374771ED -190: DEDEBB105FC7B21F135DF6B69DE66D2664682946D1CABEEA1CAFAB72 -191: 79CDCB8D656F38CB7B4D8DA5EB65E6FFDF832060E9A823CAFB3C1B58 -192: 101385B6E5CB65126A27A7DB748A9290E77E0F9BEE449C1AB290D246 -193: 97BB59A5DB5AFC83E0A0D6DFE9587A960D0C8AF59308841F766D5A9D -194: ED222485EA7671E80A4109150E338D6BD2FABA6A700B4F7333C42AE8 -195: 06B50BFA5AB26627BAE25B98E382A1ACDCB21A7873B739E12F77522D -196: A815DE10C82C38D34B39BB405BDFD3B16D6C0261FF02325E81659A98 -197: 9538A95A5EDC58B478EBB83AA16983DEBA545A92159982BB1DD218E6 -198: 2E3AF5AF5E3ECD587CC91358E9C3DE5F361F124D72346728297D7D16 -199: F2B67A6B7465AD65E6F6AAEC246A37F5C430C9CC52BFB7D7B68F69E5 -200: 1A03820B8A7022C591C534613B23EB02641D95612A182FE49097715E -201: CFBCF8E23B47BB32FEC6EFE26F678A6616E6DED024F3C83ABDC32492 -202: 4922FD1B573E4A3F12067A9E516C3551F83661AB36AF1D317B3507BE -203: 21CA53A40B827CB28615D47E54AFA773A238D6370C528D6E51DCFB5E -204: 6594B5C299912FC4369F4756E55028CF82BB2BECD85814F91C0B036C -205: FE5B06D55E84F9EFB694A61C3460E55AEE34A6B4650649BADA886EBF -206: C7D15364B9CAABC921FD901A55070E6D305D1D1E8C903A142FDA20B7 -207: 92652A66541BBE1821B9CEEE55D2A4831BBFB4E9D5A35601F3482F5E -208: 1142C3CAC5A6F4F59D8A0B95BA49F7DD81FF647D6A46C8C80040925C -209: 9DF44B3DB1C6B138B346A101E6E25C308D2093E895837E7A8F4273EA -210: 036E6B3C4FE95959D73E5652B5AF98E8EFAD9A8ED6BFC8FF159B68F2 -211: 0E3CBED5EBB9230149847388DB06FD4A749902F391DC627C47E4C6DB -212: 938092819682B577C13904D3686027EA542E25B7C88ED3664D59E557 -213: B570AD6CD024E1E01FADFD2DDD9F8BA9B9F8A72B4CBAEA44C59EA8B7 -214: 7C8F6185886F1CF378D8DEDED86576C6AE8F8ADA692D82EF1E14713C -215: 5B2D3BF41C123656B34AFE19D446832EF3C7CC4EBA94AB1D0050830A -216: 8B4D91A13761BD006E792BD955BFE63F08BA94B0CA51773239B64853 -217: 041F9FA170274090D0D0C95C4604A7D3CB48E97773459169057E8F7B -218: CAE6C451053AA714E4BC801CCB87DD3E2C1E3553423995167C1BFAE7 -219: 16F92E470EB0DE652A96122647E22947645D65AE1F92D039A2B8CDC7 -220: DD1DBD6E91A1D240C8218033BEAC675A8E3EF0A7CDE00DEDB783F465 -221: BFA2D188941AE6AC2490359A0343802970D67A15DA7345EDC78181EF -222: DAB74C5A79E18B36A31E526538D0C9FFF9EEA0E45D0D7A93982D4841 -223: A7C6AAD2CFA553900C878B45FD0D7E7DA905746F9FF86B006998ECBF -224: 269B6DBD5748A95F9EA533E4348C7DC75148C41C89DC5F9C371D40B2 -225: 4FE2D39FC6F0E04EBC4A75308E59C9201F35162C264F373C17227092 -226: DC1C083866A3E5EB22A640B44F85ADF93FE649E6C76DC03906DC3A81 -227: 2B59775AD1C37F5679569987BA7920FCACF100FD3FFEB94A8995F431 -228: D8EB02B089C120E6ABA2E2642358AD4BF9EE19D263A8BBEF7B5721C1 -229: 0723AAE2214B61F78A977E1953D83C5B08127F6B9A2723163FE11318 -230: B0776EAC2CC0CB1875D42525608BAF1D64CE4B23D6E134C56727B979 -231: FC5AE9AB94A0153920EC376C1DF064782F377BB2648C0F49D5848CC6 -232: 7DC27D88145EF5E81AB5D2774408BE4E0C815BAC81ADD394E0BF6CBA -233: BF9665A989BE534A1C185AACC5E476F96E3104E1F7478F9E413D0485 -234: 8BF6BAEFD10C0DED1E3F3D4FCBCAF0591F17B986C41D45A32B18FFFB -235: 7A6F1DA4E356B3AD16B8BD2D96229A87E722B34CCFA2E425D3ADB4C4 -236: 13DA7382CA771F747E6FFF0999B5787B8FAEA91875A0871E05753141 -237: 329B5833BD5DBB13847A863E882EC388B014BB32EA31FAC004A0F0D7 -238: A1FD939A3214721E46CAE26974477C940D9AF79C2AD1DDDA270F663D -239: D4FA32047199341AB1D4B0D84C071B4E8B301F6F71A2E4D02E430589 -240: AAE0BA62DD736A105469FE5311C7F9BD5CA913FECD094D80D7E85E14 -241: 202AF230416873B89307D67CA8E8114FB9404A72F83F5F1043050C27 -242: B8D66FAD9C34E46609EF24DCFB92EA40B32C4769B02B1FCD2A424FF3 -243: 6B27A103D5DB1632650AF52160A2307CAF6B58713FDE11A0FE2F093D -244: 656DE776B94BC467B688D0B5F5C628EFB42C77897EE266E1A2D5079A -245: A4A3CA586E387F73A5275752D5FD0CEFDCE0A38E8B34C52E7FA93451 -246: 040C523CD7CC33FE5E6F8D0CCEA9046C31B4A3077B801F45811FA81C -247: D69E643B91B93592A43EAF560186B7469978CF51268092A0D1E64693 -248: 905B9304B5942D9283DEBEED6258E81DFD035AE77E6096E3F721B02E -249: E4558D0B406D536B5776C15CB0DB97A5BAF44D1C9902DA8C4B67D37A -250: 5C057CFD6953175A25A39A4291FB2E792C3B237D08F1BF4C7E0E8D9E -251: 1CC817A93A8F4926C95B33F6140C2B6DCC844A5942E5CB1B449197F3 -252: 7BABF3D47D61366A5EB605649E20EC498733189C8C51AD1853AE8FFE -253: 13D09996FC0A93BB28F340BD0CF30D8908F68B3758FC17190C625BCA -254: 8FB08B94C1B0EAE82852713641CC2FE0696727013877E4041A48C4A6 -255: 413EC6FB4311E11A44C6C031785A759F5BC9BBB65BBFD3266B7B3B3E -256: 80E0A2C5EEF95C7CFA8AB1FBD6F0E8D7C892D5B3BFE1390F2D4B7999 - -HMAC-sha512-256 - 0: 62D06962DD2C4114A07D0B1EF16DF27CC5F2D9C80FC246E8A9EF7B9B7C59AACC - 1: D5CFF98822CDDD2E92B6D0F71C612502A3DF7E3FF8790CE9C8BBFCCE717C4C9D - 2: CFAF93B7AB7525F116A0D130C9B19CE0032F8BFAC2FE49CF093C911AA5961A59 - 3: C95F7A592F833DF1E12A7A418AAE9740A55EE7991AB3D684B3F12732CA95D045 - 4: 4B0B3D921555F7DC2768F6AE7BB9EDC0E0C7F96926E282245BC46955DE8DBBF1 - 5: EE50DCC0EFE8B7D6E56747A7D38BF3F17FCF13C43995B003FFFD3B44AC6B5A7A - 6: 724F97FF36BC550BAF236C85F5E955ADAD4DA34EC7BCF5A2218D4BAE6DB970C7 - 7: DD6C61DEC4A5D57F67BF8A3937605E2B495D5AB730B461BC2CA9923EA98192EE - 8: F4344FC58C223BDFB4D7ABBBB22184B3838A00AA9F32B73034EB6D0B92B36DBC - 9: 2ACDC752DD983717AB43916E08DE084AC7C76FAA12F492955829267B5B364B8D - 10: D1941B1C3C82DAA71372B920C130C567F71EA2C7B74FFD147D9D47A6AA0DFE05 - 11: 7EAC8D2402006AC547DF468CACE2A0958BC1C6AF4FACCAB833E6ECEE4D9F7D42 - 12: 155CA430670C06DBA5D435030E0AEE85A334837CC1C283E00407CCB58C175C45 - 13: A1319AC88783DEAA14A49A4FEB9AE8A67141B1009E2CE03CFD4E74B6D05353FE - 14: 5166B9CA51BEB6D6F34C8149426538B1A4F67467C9BF48033E0CF0227767DCB0 - 15: 9B135D0A184BD1FAE7432F5DC5622FE8AE4C2346B5B7CCE49BF6A1040F39623C - 16: 4FDEE5ED2D03A4CBFE861D22036301E93C0418C56D40CA3B965E55B73B8E18DA - 17: 2B3AC5E1ED76494EFF814680BBEB4D9A9F4EC5D0CA7456F2D5FAD0585AD90ABA - 18: 4D37D3509A392000235D550A8419D0A6EFAEFD0EA63957FBF4FE40A2EFB5A763 - 19: BE6E4FEC5AC49092A42E868DCF26324BE91E3986C184BCBED4DA7CE7EDC97F22 - 20: 01E8CE2DE5E2FA9466F61673023A4C975914A10587BB81219F8D7FB304E9BACE - 21: F5964929973A3F8A160939D18387191D06CB63C077342CA3B1AF4DD28D956B7A - 22: 833BB2EC2996850A1A31BEBE5299F4C3B1F6D02A2A3A211F9FB24C1D41ADE3F8 - 23: D3730A1546F9B49995DC70CE5D855A1AF7DCF18CAC51765C3BEB8839D72A66DF - 24: 8D45D51CEFABF7617592B008F37A37BE2448446418721EE175044D965043C730 - 25: E67DA5D21A665C76232EA4EFC75DBCF3F50101B1244141DD56D739114B4BB6C5 - 26: C47D610C3CE0FDF34CB0DFF91FFAC8ABCD865B4E9606DA4B3E4568B615889975 - 27: 698CD86CCC14863A46EC599C070160C18F7368A9EF6430DE39597C554885D961 - 28: 942187A9236DFB636ECFFE0F9FF766962C81209CC3F3379ADA75D1C2357AF368 - 29: 5F3258F6E99F02322BF9C2E3AA04334F282A57F02D73E86E372D6C3EDD954E51 - 30: 19F4AF814C178BD81A515F0277E06DC028F791E7F6D0427EED563DD7FC35041D - 31: 60AAFF144C8DC8E9768A35EC713DC4F3146F322F66E29C5090AFD8441BD68476 - 32: E3A9AF6573D66861012B6DCB257F5DF8FD4ABBA279AB07ED2E021FE066F09F47 - 33: 711AA63ACBC51025CBE3ADEA8E3D68B95DD73D74E292CC57F62FE9FEF4D8C4F4 - 34: F3EB05A23BF0FA9D13913C033610BE9C7C7769FEFF271B5FA2850986FF75A40A - 35: FD9E5DD2C9E0102EB8A51E1306B3470CB67B6832C711A63156A63D82888B32BD - 36: EA7213FEACA19B5EEE7BBFBA7EEBA25E130222328CC21EF270F80D7DB942BCA2 - 37: 30D371E80BAEC1402B932E3856C15EB2E9F31C8A1D6B5A6E90EBB83AD57B7825 - 38: E8EDB9CD99D83B841C4DB9D0030BA4A4D9B5EEF2783F476316F0E641C4FFB04F - 39: 74D250A28418972D22B70DD6AA2B76DB45E29FEA64FE0B8A7129D54975ECB755 - 40: 51E3A878516AB35205E0D07E4D3932A1EDA5DFC4BC7570CE2060E72DB26AF119 - 41: C34B6F11F7BA6EC028833FDF934ABE864D1C8BD159C0D30C9E6FE12DF73522BB - 42: E59CFBABB73AC08DF99A7A2D79817B85BB0F2AA0E27527BBA4B63FB3A4F1343E - 43: EF7DAA4BDB64EDA5A5281658DFE834253F045C9594F9B488D982C031E68B9BA8 - 44: 1CE7C3AF27EB4453B4DAD5DE87520F0FB83EDFBD07EB82F2C923F22CA94E2D7B - 45: 905E951CC4D99611B6B9EB871FEC52E67B75BB37B3EAB72D0ED313D2298BBFE7 - 46: 762E0642564E2AADED03C6F9D11C375BBA7F483E88031242C1B9C9D05A4070FA - 47: A6EB16F4CC40698FCBA75C296A4B065728B156128B87DBE1AF318148FA6DF659 - 48: 0541B930547BD029B1134F95C7EC45FE3203495D0F4F4DD079D505F3FF1144E5 - 49: 84CC81D678843782D9AC7B1E04012502F9E40BFC42F4CAAB26FE078BAAEF323F - 50: 6319DB86D3DBAC66015D9446BAFA42F212EE88BEC3C4569FC871B16DD92ADE8E - 51: D7130A64E78D8FD210FD26AEE52D1E45F81440A2D7D264CF94E8136F349EA535 - 52: 9927214BB0CC3E83203395F3130AE2249F0EFED925AEA84BC38D67E768B4CEF9 - 53: 261E626722A5F3C64BB8761FA0EFC445FE718A58F4939C459D234021EB18F90A - 54: F5507EF69EC2DE971E14B2B730BAEE32FE34B96B526B9A20829C04B693CD35DD - 55: AAD06972EB603D7767EB9820BED94D13B88CA4E42DB448B410C84FF7FC94C3B5 - 56: D905F27415F62D83C9F6F260C60498A7C43610EC85503AF4667B8C21BC0C97ED - 57: 570281833310E1759DC98388BDF344F1CD71E7DC943580BCEC1EB788F126685F - 58: C279A6821C57EE9E9422CEEEF8940E1DA455D6AAE3ED8FD1AB634F517B2EF480 - 59: E91F2D38B1DA92A76E067DBFCE038EE74CD0E81C0F31E2C3CB473784305A9381 - 60: 50650CFBEE6D4D0F6657B8D064434FE6A629D64AB2D763BA4D4DA19CB65220B2 - 61: 8416B58785C68C7422935EFC970EC08091A8351A33EFF6F59EBAD35FAAD81122 - 62: D4740FEE1536246927B7FDC146AE453C20BBED8B08FDE899F1FDAAF02F5A1270 - 63: 375ACD1D1B00C50EAF0CA05DF92C111DABA5853450441C57D6F639A31D8F99F0 - 64: C143C3F81C9824880C2F0291B15F6A58103B391328D53F88DFC8A0E73F55A820 - 65: 8F418A5DCC1D51D2B5451E11D187060E65FA71455AD967ADCCEA266CC0D94C9F - 66: 09BAD687ED53A5642B29E580B8487AF0C976AFD2567056961A76A3199D05CE0B - 67: 2B0066FE122FF187FF7AC64299EE457CE53BBB52B9D0C572564F989220CFE904 - 68: EA5D252BD1BCD007440D51052C0BA8092ABF6046AF8C96ABA25C21B9F9C32FF0 - 69: 1D7FD07AA53F2E3C6907026CECF5A9574978C3968DD7E926826D8C899556E85C - 70: 2EA43F94BB6924C3931B2CEF0090C8FB3053E1B29302CD16AD9AD766354798FA - 71: D0917C2E81945607C65E049EA71D36A9B42FFDD7CC93ABDCC826EB454847B8C7 - 72: 3575BA4282ECD011D18979AE1FA0AEEA5F72008428CCACF69855402BFFB95639 - 73: 631ECE31A53741DE4A227583888A1970631E100E9BDAEC7A7A1C804225AACA16 - 74: 6265F73189AA56468FE4DBA9BDFE4DC099720F2264CF1B5CB2FD364F433F782C - 75: 19DD20D128FB5018E5C7F31C73FBF11DC64892ABF872EA0D9CFCD7A9712DF9BD - 76: 4CEC1A3D891422F40B76748AC3D5790ABD3CEC9FC51152F2E26C4BEE4A139300 - 77: C16832D1D80B9397613B54B422A1487E9771A98D99FEBB4D475026C4D4242BF4 - 78: 837072B871964FF66990EF5C933D233EA35CDB5E9C09893DE179BECC96FA2805 - 79: C0366D34EE34FBBC6B026661F60786C9146EC538CC91CB2A49DC334E467C0095 - 80: 95115429B0A8DB0C48072D4322FC02AB8251CA18F19C5AB6605E53FFBF35749F - 81: 1D64BF116FA874D17090FF12AD1C1B1FC3AB084A285602AD29962B4AC85EE0F7 - 82: 87D2628E605BF73210CEEC796EAA7333B0B24A41F014B70111B5FBD1991DCFD6 - 83: B8B7B0B1A8EE5B516F851A9B43FCE17BB830811D063D6752BB291D367F7428B2 - 84: 1DA0BD60DFA12621C8447B7B19552C6B87BF22C3B748CCC2354C29E5B2D265BA - 85: C297A0F40E8A4AF8DB006CD7E862017322CD39C1A2B0EF10F99F1B5660AEEC30 - 86: F50D782C19A217720EE223D3DADBB6843BEAB1ED5468D2A958C38713ABAB9A42 - 87: DFC5D6B5138917A3AA5B088E348D0420AACD1CEE9A43850F23766106006827E4 - 88: 5F45DCA7854D4EBD2FC11A82BB8C47FDD920E0F20842027CB8F145800275B60F - 89: 86CA61CA3FD5334623FC01D8DFDC94E41D6FEBE1A06EA6D08783AE9BC7C7F821 - 90: 30664B052BC7367F4ADBDAAB52341B71CC906DF45A61CFEC79D763C739E899D4 - 91: F789B39DFFFB627D25FF42A04AF26EA96D9288026F7950171ED75160D764744D - 92: 619E52054C59FCE2B032D61FFB8F70958A438E89EB59F568E259371D69C4F854 - 93: 5BEA7D888A08712C314E584A3C3B20165D67512A47E2FED3240208ADB11FBFA7 - 94: DC4678EB90EB26C435D1989D1D38619266DA3B8E8D4B1EB7EFFECBE3AB96D0C8 - 95: 050A9C3D445E040BAF5E0EDEFD4DF5F4113201E98F38C87AE922B910BBB67A5A - 96: 595B24A9A01E2D9EC587B3947366AA6E86191735A96B3B888310D74C06B07B6D - 97: 9FA11A915581FCC02394E1467B98D587891E2472431ECBB849158DAF7D15B85E - 98: B53026FB6233B0C18B8BD3AA2F7A6DFCE0E2648A7B883E25EC3725D6AE39C9F3 - 99: F747B648165C851B200962FD189CDCDBB9192CB897826B28C67292A39D7DED1F -100: 01192493F79FD2C509E21F8BB1572CCD9B12CA0868CE8DD5C2E6E6BF1A380D35 -101: FC152F8A4273AF47AC10906C4C89A7C1272241BDC0F5135BE8BE3C84CA050D2D -102: 5827B96117C981BCDC8E25AE0434B9924E5DA32B1953A5379D08686DE5B1435C -103: 80A8B745779BB0E9760E524D7184ED2007C849CAF124F7502779F81C473066FC -104: 75B6DAA37B64913714AA35769D7680CA70BD0553B329626A28102E78C4FFB44E -105: A56908C0AF0567D7BF2CB7F8C9F0F4E404F978B073BFC053D76A588ED45F60D3 -106: 27CC97CC666301E50887FC3ABA3695FE13C7EFE865753194301AFC42EB19B4BC -107: B41FF0483DADF4D5E08D46A3556C9A49F961AF83EB28A90A9D5B0F1C9C8EBEB5 -108: D90489ED5C6EE39911739EA5D996002F8B0DD032C8055B0C2138266253947991 -109: D0BA2D613005FA04A6D6644A16401A4899C7A294807FF1A0CBD9656694D4D20A -110: 16F6FC4FA936ACD8A229E402F026D2D09A3FB9F1F27691E600922324209FA122 -111: CC13CBC8627968D28C96A963252F4829E1D907CC2DDD6333D669AAE391EC6139 -112: D3534E8A1FC18B0CA58B46096D1C131FCD2996EFAA2E5747C1B0FE9A5930D888 -113: 753D70B35D6C7BC01A3DD3B0BCF982583BFEA16027BA4A253B1B50657EFBF641 -114: 925CAA043690E3940F04A3519C15D85C411DBA3E44CB1EEDC39E3ED1404608BD -115: 46557CD8F58B89363413583BEE5C0A4F4F31B441AB29EFF3DD626BF89AEFFD64 -116: A6609BDEDDD1C85887935332428F0C5946614DE71C045D728766779A3E1112F6 -117: 80D0F9D2C252750AAF9DF0F52BEAF3B0D19B14019DB0AEDEABB5FAAB1B663F42 -118: 9BF5C904C30831F6817B07AFFFEC8DA539A332692E0FC66E3E9452EAA926C63D -119: 889EA18D6681B77F7DD7242983CE546B3AC7DDD05C416D28AAAF3418DB5818A7 -120: EAC6ED423CB979D5D98FD9DB50552DF09AB1EF269D9ABF5B02A2769143148A43 -121: F25134457768D42CB631BE8965ACC3EB1AC21AFF354BD35C2B814D060B1A220F -122: 9E22D3BE6959123CE7DA07B66075F81ECF67D551143C1ED3101E1F12870B8855 -123: 00DF80AB54D23502D1BB02819D08C83DDAEB13BC13E9601BE5D012AA9BC4D657 -124: 3FE7390736A6B78870C581DA3C14ADFC27C73CE4E8CA06935B0BCD9D8E6659BD -125: D3E3877AE4D5866DAAA09AEC36CFA21B5314E7032D38D5FC94D84AD90C0D223B -126: 24E2A8BFEBF80BF94073537F686DF034F8A10566847A5B0086F8B76E414F9086 -127: 8DC9FC9060E27D4EF5456A08F86AB81D3BB98136A0AC4105991E2B1F71D889FE -128: B875753B5076ED9DEB7525581AC282F7348B5A63411E880518138567F506DE43 -129: 981AAF85A335E206350D1A4D15DAA926DE7D0AEE9F1F5BA79015D511644B0F0C -130: 6598102C7DA37CF6B7334B00CD906A222C7563580ED3D3B39F9F11D0B0AF0301 -131: 3479EF6A54DE9370A0A1BA3F8BAA1454FC9FA862CE9FFB4F79F8187F2125BE27 -132: 878217BFBC9338C6502FBDA1C923DF806D052DFB9DA271790A9A1B85B39F5EAD -133: 60733D591BF2A04D669068D04461759EA90A0FA68A0EC82265D64744508DA56E -134: C11ACD60E124C3BD50243ABE6D4768D742D29F9415C3AD90A3AD9DD903E86F0D -135: 67F415C2F36F67E99D0EDDAD87496672699EEBC7EBEBAFE89E9D47EEBBC80574 -136: D95CBD9586DBF532A636E4FCFC0DEC46CB670F199198AAF4BE6788D5F7FB9D12 -137: 19C034F7B948C723D1DDD04A5A77E1F9D6F85CD4DADC2D07D7BFD48BB39405F9 -138: 45020399009DE79A761BCBECB0F7347C5EE794DF231D63C132969F90AE9AB8E1 -139: 0EE2789FBE5A12E370F1393624252E8C0FB51C65C5067B8A8844D51837FA39DF -140: 7E0290CF18B4BDE787EA81CCD101D483F3CB1F2A6380FFCB32E062853467DC81 -141: 09B1A981FF43B2D4B5FDB193CB222D8C4E8C5C66AD1E5D3C21D436BE50C8D9C0 -142: FD24C2C0B6278DA18D09DB33B4ABEFC118761998394DFCB8C4D0E006B0ABAA1B -143: A441E7AC72C25365366C324B457E1D6AB791B4CE8880D25790A22A6B6C2969EB -144: 53DCF635B001F853E4830C0B6D6B7AA925BD5F14F838637DDA3A4EE718C059EB -145: D1038CE5E372A6D0D95E486C80364DC8EC540717C59E2140590E4B502D17EA15 -146: 7F4DD9F3EC6AE4DEC08681377D3AC840B0099D25C2626719D7223698BAA262D9 -147: B495BE63F7FA74F93C34CF159F5A6623876299FA622BDA58439D78F7DC972C46 -148: B218ABCB244F2FA345D394C0D3BA9EAF2F83FCE79B461C6A30C308341D5AED60 -149: 2899CAEEBADACDABEB171C3D9B9A070BC42B1D17C7F941BDA9E846F90C3C0BD0 -150: 3E64F541FC5A7EBFA2EFBDD96C6EF665983821444BBB2EB79FA0BB5B76C51A02 -151: ABE8E109AA5F1E401273D85A355B8168442FF8629C3E41E706FFE430CCB87275 -152: 2DD4680471AFFFF9B78807DDB04E055A1F7EB48948C269DE7D81B2BA9CA07C27 -153: 8BB77361122763D51C586DAC6106F2989E74B7F85AD70DB463BB10EE910E6522 -154: 11B701F336BBF2B08F9A7BE583FBDAADA074EF0CE3A547BC2E87970C9FB0D59E -155: 6054881D240814B10B89DACF686B25F6785B1A235209B2D3FFFAE1D4752746F2 -156: B4ADC9DB316A5B4E35D856DA551D1AA6B25E6FE40D77E636975E51005E460998 -157: 5432D73961F4A5AD1899267EB5DE9F2D032970AADA38968210AA8905B5A95E37 -158: 5368C8DAC0C3E84D3109E0B0E5CF5C53C17015310FF59282925487493399536B -159: E632C4E53E53222091D88E2DEC84B2C0EE356A5947AB2508258AEAE4B4FA4206 -160: 656171B95B0DB501E91A175C51BC974F1470AA1042F4576FF58545A50E91AA16 -161: C432FCB7B414B23B569496EFEB7C6FB995F15D9119FBEFD705C91D1D8D08002B -162: 022B5C7DEF3834AB569EF6F8C1DA7E58F49F2F30D045FFF569E4ECD52330FC63 -163: D028B5CBE31CE3D25D12806584E350B73D6D81B823D7D3472A7E7F3FA54FF0E8 -164: F4AC80D5B3DE0EAC631E596E03F7C20A56A23524A5FD85E0F70DD3D6CCB9B0F8 -165: 10747FD771470FA9FD57B9CB43B3EDB8D12C3CBA06F85305939953A7E2715D15 -166: D08EA8C5743A86287A3DD2C81340D38028F0CF2A51E3F1A0458BEC6AABBE291D -167: 7465B5B805CFAA8C948D5812E00F6486C0D186E131250B00834688150FE3107A -168: 92D7513E2A74050A33E46FDCB7D070ABC87D3A586B7A4621DAA71F5BF7E4E11E -169: 6431A79635A219DF89E6C3B5A6012FDCDAAF87E7A3590DB10CB8031FE2C6A005 -170: 0BE055F4704ACC45F2F215930A107187D1DC9C1562B0FFF5139E2B7E321AE97E -171: B2AE10C38C34C3FC2C89B599CD528EEB12B237E3AD2DC577A4BFE6033C8F9528 -172: A32466E6273476A64B0734E439D3FAA4D8F38D3CFC6252E44551DBC5B3B810D8 -173: 9B7E21B4021C97D05FBB65E5FA90A181D4B6EAFA49704855360C02F6C09C5A78 -174: D829ECE0A8F238D772CE5BF5871A2197843F315B16ED2D1EB37DCA96EA013703 -175: 023167EB4223BC883E7D8C7C38ADE42AF3821FB7E371A25455F497C7E127622C -176: 753F711CF07F275DC3E1A23E9630B81FDC068532085C5838A10C46CB34926FBF -177: D0AED3F462D1CAA85CC02F8A6B3A2EA636609BFC628420725C7441614F7EDAC6 -178: 3F4417BFB429566969030D1AA978CCC330E5023655902002D6C4AFADA4099348 -179: A98928F7845882D43142E88E87240D9EE137DAE61B98C5D39B789AD8590E114D -180: 6306DA7B223D3898AD01DCE8E637B1F2DD13AF50241471A216D1BB0BEA5A54FC -181: B2DAE5E3A185150A2B80CD23B8FFFE9AFF074F17E6192E1C24DEBB4518508C4C -182: 1223D7B034597FD7EBE35AB15157762CA92415281094DA7E145C2DA04B08427F -183: D663AC54B4330826E172AA7081271388071B5FBEB252D7506EB4678D54854A54 -184: 3E0802B55C89390B80CB8BD49F35507234F3223D7B21BC31C7A2A9CB699038BF -185: DD4A8FBAC932E409A61F3970B425CABA4A08B4901B1FF8AF78AB63473B12A4F8 -186: CAF1FD8E9C4ECEF6D12D3133C4CB99AA939547217808119BD5471C7E30336618 -187: 40050745910EFE4809D40652FF752EAAE800A271D6C4CAFB375C7F060E9107E9 -188: FE6A5F4AFEE97491B231AF7BDA8EE79FB9FD6F42154613700EBF58F1BFB7DBE8 -189: BBFCF14DA0B02C4BBCF087BA314A69A5CCB01EB6A926816191067532BC003593 -190: 1EA4A74EE88FB70537AA17ECCCC968FFE276FA48D3D852A8063B1D75369EBFC8 -191: 9BD73C3279E7047B8D392527C393F53A75D5F037D3E2D725471735215DF39621 -192: 89B90929270CD6D9AC58779CA9D955EECE0D251E02FECA2067652D31098E92DC -193: B9C571C728CDD03D17119788E1B7073B1148237839E5E8756FDB85E3A1D85E53 -194: E6583FE8ED9C4A6063FC7BB08836736F1294BBA9696FE18770C5A01CDF9E24EB -195: BE93441336B80550495326F81CBF037860ADD5D9C28EA4E05F46030EC10082AA -196: F9459FFB122EA907D7F39253B3B7E06A37045C32F33F751D60DF5842730100BB -197: 63277D26B37209609627198B131BE3382C8DCEAFBC65C2697FDA17C1F3A18D9E -198: DAB9A0AD0B85A48DD50883E5B23C01F1EAE1768D2D1ACE9F2D8020C79E716E96 -199: EA9BD268257F630C1A31ACE736279066B0D1D680EE5C7D4CC6DCF91D9210E501 -200: 17B7A3E7CCC6478DAAE7837C4E18685AACC5702FCFC7F926D0685EF52A083E46 -201: 19126EAF099A9C27B5683CC0C4939B469AAD0706D14E23FCB613E0CC8AF923B0 -202: 3FE1B40BF38C37810110A5AF99A719479825CC08B672AE3146CE61D1985AE248 -203: E08DE3A1463963E314BD7A1772FAFDF45A36062CF14B20A31F1F36DDB5A78CA8 -204: 78647D2B2E362F1200407AF2E5831BF41F09929E4ED66A17BCDB5D7A862CAE9B -205: 7DAB1FA44671926588657945796FA9CB990C691874D5179A9D5CBCFAFDAED21C -206: 7954B56A5C9D3BC80C4B17E79475749F0126CDEF9E9336443E9B1764C5651689 -207: 44D8383683C2B65AD284A99412E29AED2CEE73F0EF34E13B3745BC9D0731A6C7 -208: 71D4B6ABBB26296DE2E9F6E303ADD0F93C3638B1BB83B3B2677D02F48286DABA -209: 985A55982E58B96820DC94A848B479AD5AE1AF95FFE0188C6645134C31CCC07F -210: 269EE8535D5E1676BD7EFB324F5A54ED36D70CFE85F38931A04DCF66616E70F7 -211: 1460A0EFF458E46A8A9523670B93A6E9579E587C183AA9BEED0980F7DF368B62 -212: 81591F9C463F7C22792DD42D250E81C9010DB82C98680DE31D951AB1829E2E4B -213: A23042543083EDD57A4EC79D2C5A43C34C9B6433BC3C199A38C0DF86C92A7238 -214: 8C536BEAD517911541360CCAFE2E8BC2249B43B67BF8B1A2D09836E73238B225 -215: B2308B84E852F8BA58044C901BCD745579F83EFD178CD23FD85650CE53FF632A -216: 8742852257FD8188F9F04BF096ACC7F50FF3437F03D4882800CE64E1A2137C36 -217: C0DBAB7B7203575790E33BD58AA2D1E25A406F1D4088B3FE9EC850EA147E8C96 -218: D9B08D97D4E1B55AA52EF2E99FAA6E63D86DA3CC78A8CA8E45EF58EF49563F65 -219: F5C8CFAB1450530E2F645AE99A8BAA5D7F0143476AD41B4D5BE624F50CE0AD07 -220: 0526969FEA08C93BEE59510A9C4B1E70A26501426174A5C06D042AED823AEE4D -221: 3ABC7667B6063F836C6525C065D5143039F28E0B1731853AEF74ECFB6E01C03D -222: CAACFDA0DD1665CDAE0E1398094E269C46F1E976E05F5F775583DBA2F71197E2 -223: 70E9049F0B0E6FFFDC3521B5FE8361C355FB7E67A801926CB176980ABAB663CE -224: 8A410AB325AA49506162BC8B8116CCBC311A49A73B0916A466949BC72B85821A -225: 862413698EABACEF0C2C70C19AA49943C02DEF683DD6B78E7EAD43794FCC3441 -226: 1B95CB4BBB837A882868C5C6A08FB66218521A544AEB02154BA6081CA40CAE17 -227: 5C931BC92FF7DC3896B4081E41893603A06998481BD60BB82FCFE2E6887466F4 -228: 689C32BD98B033997F1D2A9AF746E63A0A5B79DE6D4D6E858CE8EF6755EC2FC8 -229: A7D22F18F09F2EC693CE318BCBF2E681E78F8907D3533544B38DED54E3D2D932 -230: EA289C980A1491D824A44C8AE9D73C5FBEC8C43AA48766E19843C1A00C762239 -231: 21B1986825371A5FA3E5EA257B3C7E39E5AA0649504251DD2163479220B84835 -232: DD5357464DBB7279BBC7A7A327AABF146ED11845A9DFC623BD39E70C650BB7DA -233: FE9E957CF1DB65A9C0768D090D46CA915F0170D1EBB0EC342F20F968EBA7C2A9 -234: CA0D3C522B886721763CFE4D5459901895624E09AF3F7E7F9566FB645DABEEC7 -235: 77879963E67A88D3354130D647E0FCFC9F57484460143F045FB1AC61957FA110 -236: 4EA2D24F2823A68EE835CCFDBC8FFCF2B417ABFD2E779EF443CE8069C90E5511 -237: 0B530EF2C4B2620BF122E645711E8A47596660E8464E7B2C1C8F420C903941FB -238: 19F115D6D9251413FE31D26A0AEE9CFF59BF52B8CA97B69D2FE764CF6DFB1AB2 -239: A59EB6FAFECD4601471BC24F3E1EA7C1BA5FD9EDF7D84A4C8034F08DAB436370 -240: CAA3A67FD134ABCAFDDACF5023BE2C032708FD211FECDF507486C8B58CE24D61 -241: C02805AA8BAA274D3A66FA440C0C426D1D78E53E6CCA833BAF98B8A4EAB1E5D1 -242: 58F27145A4E702C8E95F9A9517B98CE298DDDA3C0D5A61F3081941284E0F94D1 -243: 86838562B139DD0F2CCAF07C4125D45E7D59FA203B18E0F574F2AF9F31E9C3CA -244: 34E1EDB16414E3AA2131C6B3FC938C08EE426FDA8987A1E19A90EE9C311F31A0 -245: 5CC30D04370BAB8066F0640F1CF723909EA9E1C3A6A04103BFA39B11C3BBA77C -246: 8341D11F1491E460809591D5607563EE03C1BF09169E4F1E64A8013B14CE99AB -247: 39510EE3A27837C0611FC1D5A8C14D7D9759071E6944B0428AC9A7563032EBEA -248: FA4C5F21DB0F426DEC292A9DC7F752BF3C665CAF99AA776F658FC74868418C8F -249: C14DE83F707BE65DC6F9400ACC62AE57BA277BA82E00EC01DE3F34354F6EC89A -250: D7D91BAF0DE69A7548EE02EEE2638A357586F79DB52080ED4C36D7BE5158846A -251: 20005E8B31506A9C45EB81BFDB01E48328F5C679E8F8957786F610977806B806 -252: 8A2512FFA079FDCF44DEB445718DC45DE45B1EF23885CF7764F25505E42B0D8E -253: 4DCC6BC7AF9F767E7B955474682FA2E9E1F70691D146E1A6806CEC84F6EC2D08 -254: DA53E85ACBC931DD0084D0076FFA7F4410C1F34702E5CF12D45763E46C9D8BCD -255: 2BE7933119BE1B6E7D90983F9475EC3EAD2BEDCFB0C688F92749D05954F93566 -256: 4C1E9FE65A4635CF336D6F15BB33142C7940AD8352ED45869BD2D34C1E70AE60 - -HMAC-sha3-224 - 0: 43B8F94FE31D2662600C97097AA0D45422DE6C5BEB14DC05F76BA6DA - 1: 74E16D1585E0E9FEE9214860F892DA8D53B3B3165DCD200CE8F78119 - 2: 4B0B7F09748054B19B97D7ED6005B271AD257B849D8930D40F31892D - 3: 1F465A203DA3B301AAE9BAEEAFA6532D822BD02739CB91E5F6EA9F4E - 4: FF53166CCCE62D20670D885EC8D962CA07606BBADC5C40B5EF9DB387 - 5: C31516050FA58099AC22978436B3C1EAC7F3DD4652B87CBF76E5C0BB - 6: 57E4B09416E2BD5BAC27A0C6AF920CBD769B5CCCAF1D9BC19DF24288 - 7: 8819C0198E1BD9EB20A13FC88D50F2C6C58A27F39165C368362C3692 - 8: 64B0108F3CF4A545B309F0597E869107079B3C9E07540E9F6AE0B0DC - 9: 5D05CD8C5BF31C964825C71D8E60829F8D9D619F320E0B6724346413 - 10: 09CED0D7384BFE2ABE6857BA256193DC0ACD0E5746CB7BFD402E3424 - 11: 5331D8CE79B49468257C5B04E8C9BF131682CDDDCA3F1417C80BB07F - 12: E10EA9C3AEF6ECD8B57AA50C8F272D44D1D893A0C2D95F64AE3B5695 - 13: 8E86249D0EA82F47F0859F526589243C86AEC76BE37760D2A0C85267 - 14: 2EEC6462B7B724B3F0D37FA507E174972D99C081BD0CDFB419E75063 - 15: 67BCC714CDD11B2B64914D7901ED9124CE0FD3C357CA328EC53F64FB - 16: 529772508E3FE013510198560435823177D4D011A746D71E1D2CFDE0 - 17: D0B54A5E43342C08241D019C55167EF0952DB1B0B7A9A059B054BC68 - 18: CFCB4ED33215A0BE9BC93DF3966941B6D1A33549767D6A5080C70DC1 - 19: C4829B1CBF75B80D21C9C36DC462258A99AE029EF10FBA0F93E07C17 - 20: 9FBB8B2FF876AA11F3FDBFC8DA717A16BA4CFC5D4748D56289046076 - 21: 931E82E4B9AF0C2385ECE8AA633C6B539D75CDCB7041813F5A900299 - 22: 87B9E01EEE46F2CE6CEDE71E405B99AD13EB03D0DBEACB79CC521825 - 23: 1DA934B0541DD0192F286556F121DA9631A3109B649B2241C9CF8179 - 24: 05A64F935B719F82CD7F7DB5D2C988BC0554B7F2A56655C6A332A7BE - 25: 64EAE4204C75E10774D722E534AC173BCF4C2D48943637BCFC480272 - 26: DBF93C0AA0C9900FEB298BE229F62954373E3E4E1B18500BBFBE82A9 - 27: C3F92F2080FC6908F2277A7A9716480959DFEA1930D5299198749A57 - 28: 29D96B0F0880D4F496E3D31AC8371AFE60D3E5FD0F69A1A15B9DE869 - 29: 3D8814E0B0862D797BD06C135EA5AB02B2C801FCE9D12D03E9DEE414 - 30: 5E672AA014D249E41C13BEE22D0C7595D73568ECF9B78DC88C313CE0 - 31: 349A5B7E79F4E68430CAF41C85D3A583E624AF712C02179B729A1DE4 - 32: 8D2835E3A02C646BBA76B5AAB2CDFB2B72F5073B98041603F75C24E0 - 33: C8848B90A1A2426CB357519C00CA3880FD9B6398190BA96C1DF63733 - 34: 419EAF48EFA6C366FD27DD703B0DDBFE9151C439F610EC996988005B - 35: 248F9D1C8362BC394E31B5E8A35CF0533EBD7D5FB5969B8B63918494 - 36: 30DF5316CF8D686304A4E42FC9DBEB1C172AF98F46AE3F05BB434A69 - 37: 5D73E52C265C1DC1B039443A2A881DB2B9D4B100000F0C34A9312940 - 38: F7E6EAB3DF1F28029244BEB746D78B489A14AC2406E07759F123AE2D - 39: BD0BA55766B5A14D308E1D29FE916CC7B97C2E4F6A21FCDDE5CCC0D1 - 40: C7DFDB9A975C074E8B20347246A884185D3D81C27330B3778207CA9A - 41: 7E1652EBF0BBC6E628ECBC9D1AB2275FE56D50BF9931765115266DFC - 42: 1E92406DE8D32D0B1796AECEFA9C9C97E98C443F2AA06798BE293158 - 43: F9688DE507E0D1982B99B8066DDA0B89EF6ABF360B541DBA9E258C81 - 44: BD4076674B7049C20B5B7D46D89C78806F9FA4C506299CD7B22CD04D - 45: A1CC7A6AF0DE7008DB0FC3511A9C9F12B5B69D8A361FF036753C4045 - 46: 678B22E55DBD50FED5F0DC5F26488B1D9F7151D457BD3D85E30F0689 - 47: 593889A97724343826A7E45B85D831215624D5C720CECCA5829CFDAE - 48: 8BBA168A3C4F2996EEC2890895FECC62D463AAE1F395F0596275B632 - 49: 99F65EF06A16E1DAB96533233C745440AB839BBEAAFEAD481F6DD722 - 50: 2E49DD264AD674C41E1406C95BFB986A239712E2745440405F88D064 - 51: 5B431D21E66FA2D5E01ED91D6DE5871ACD59E3203F4AA328F6EFC706 - 52: 311812E900E4EADEA4233E2D355BA54F2B8E66F670D160213E567AB9 - 53: 07F366E371F692B3A84B3880A70A76F59B08C5E2BDAEB1B8F6D5CCDF - 54: F6EEB41C1398732F31E032873FEDFC75E9FFA51E982D65F9FE2715B4 - 55: 767163048EE79F8FB7F002F11CD972C8DFCB1F490CFE67459FF3BAD1 - 56: 5842767868717EBD11D36C5037E3ACC6201DE1F7883006A1DF6A2CFA - 57: F651451CF372D75FB777782187247D2E23C6D20001389F9431B46285 - 58: CBC19EA5B586456CD01D20C47DB87DD740F37E6D950354E3D63849F0 - 59: D9E98B355971ABC110854680EA2E7C77D0A7812F0999B9A05460442E - 60: 0555429C850F5E105946B061B00100F0CD50038129BB65D3AF6C12CC - 61: 4FF03D8F11D2F6211E355DD5B50E0C56498BAEA56D9923CE359930A6 - 62: 28E86D605D1ED5BC842F6D54E4D9B6C54CC734B3FBB88EA608944F0E - 63: B8A8C9F3A0A2B80727F3480893229E72341AD44A24710FCC515646EB - 64: C5F486DEB68F10B6CA78626BF50A94194AA952CEB0C227475D273823 - 65: 947BB25A487F6C696472D1CA63494534239FC9B50DD20F05051A00D6 - 66: 513823550969D3FDCB4FF9F7BC666C5B873DA13384DB1FB5DA4088E2 - 67: AC71951188D6A0165D241C0FCBEA005B023139CCBF478DDCEE9F0B04 - 68: 482FA768632296E555EF58F6F134DB8E6DA134D3B5F8D3547C29655A - 69: 66F9DCCD1FA2ED16BA69497D370F153B373D73E6D99AD7578E9FE89F - 70: ED5964F4C3CB6AC80D975CFE2E9945B6B2F2D0E250241D2A1D2755E3 - 71: 52C0862C24A059CE78905A4EBF3A04A2330D840A467E176BF6803ED0 - 72: A56596776D0479D6538A91F3B4F1FCF330196B73043929C82075E6ED - 73: 142EC4CD690F8F28E2455FF417BA14AFD8D483D7129633E449547E54 - 74: F72B073545706FEEBF50FFB282174003E1771E3EF78ECBF00F828483 - 75: 98937D5C20D924E154ADE9EBABBC2F3578B2449BCD995A06F2FFE821 - 76: AD65CE057F3A84DFCAA45E1C6665E625505EC230A5AB94DC55FB5034 - 77: 03EF7A85A9318AF284F57A0048FE735484946A233C64CFD3A28E5010 - 78: 7FEAE68E61C1E18A4BFB30CB29ADBE5E16EF7B28044E47D88A4FB0E2 - 79: 9FED5CE97FC500BBD6BE931F8D607B4F220DD975E9881443AA106FDB - 80: BCDDDEE6B0E0C1151121547C260FCF02083C97DB9B99D66EDB8FF0C5 - 81: 314467D82C5C64D4734BE3729FE43AF9899F247C6B0BDE7472F7DA67 - 82: 5A9F2215152F9845E12A18966DA50FF7502C5FD616528D5DFD192086 - 83: 38B513350AFEAADC9ACC27F155147B01981A7DF061E3B25BCD6F4992 - 84: EC86009DE61B85AE5D98E94514E883921CDA0707DF1EE5FE27E35C32 - 85: 099875805914ED0D2659103B23362260E9D008AECB6353A9AB6308A9 - 86: A8B2ABEE400EFED2514C005490DB46D7DDC7A26BE4C0FAAF3EAF44E4 - 87: 31715A03A2EE97ADFE4579A3B38B0932B5200FE4E9B43812CCFAF7D6 - 88: 9814B6F387B5A7C86F25A1E987FEA6EEDFABE1D06255E7DF55AD672E - 89: 376948F8F117FF814369911E64C3C58E70D651039CD70DD02E233217 - 90: 8D78980F2E00F3B1F82CB5F66550DD98FFD31BB845418919DE08C5DC - 91: 9E4941171F66217FCA2B7B15C704F7AD3BCA3B73D193328EBA84F6E9 - 92: 220A754DCEA4EC1235C6DF7B021ED865DCDD4903B49D33A0CAEE1146 - 93: 9D70DD51CEB3F271EB835BE2FA5779426812B84086B2F6B0839878A0 - 94: 67FFCCCB6C7B6C40378E10338C6F7D8597878746875C0E56B9A55DE0 - 95: 3499392774E0982BC49BF2157C1B1E3D7A6EDC971F804894613A342C - 96: 1A92B5C55D8FEBDB2C6CF1F4E3E4290836E7EE38A496802C9173D62B - 97: FE1B6D1BCC0D7F05E9751C63A517AD69F421420AFCE0BAFE2EE4C223 - 98: 4EDBE4A9E188A16BB349794635B633C94BE6294AF795FA95F2D3256A - 99: EE8D33F9EE4E563F8832F4B8B9A2613B8DAF3B8376C5D059B585F178 -100: AF2FF671BCA04CB77D43E70D100AA23721A6838B9DF7C167C2B0F52C -101: FD147899A566735F53BCFD64A4930F3400416B53072B788F2E419D3E -102: 35956E507CBDE896C13DC6CEDD754C3A9C535739381F94F59BB981B9 -103: E7B9899C45F40EDB1B9D56943A5D0FC162CE1B99BF3FF307946C66C0 -104: 61AB923F62FB6503C965049C83273D0CD8840626BF1F8F2C5B94D784 -105: 1CE5C367EEC6A7022EF512FA7C229065EB3B7C229D1BEC56D532742C -106: 2A9919A2B7AA578E08F54848670D71276530EA2454FA73A0CAC6DB7B -107: 065F78D7A478710F7A02AEAD16FB4F388E6A46100BEF69309995892A -108: 856AE3FEA77E94AAF41458893CD1453E97322703D7E50B801A92FC86 -109: 3A7121C84B5F580E6B85E895D880A5F8FAAA212BE68EE93044EE425C -110: 7E663B819CD1D6D1013366BD65D6DA61A29D1CEDB7026BF5C9704561 -111: 217C20189DDA2DCF4DFB487448504584954C53C07635C803E8AA7F7D -112: BE6DD8115DB39CA01F7F4C03B8F6297EAEF4A06CBC618D5432A56071 -113: 6BD6A60B7AAD03165743113A477A44DD42412DBEBCBBEE93B1E21A85 -114: E749DDA363599048E095E5E702CA99EAE5C94CBC0E6D65B706571A7A -115: 3EBE88686A65B51760CEAD220BF5844A8523A303630B892B0B2F4664 -116: FCD16A99ACECC901D6EF9C4EF6E47DFE363C5C0CA09607F167859A76 -117: 3195DF6179C9F423CE93C18943A9BAEAECE9466EFF19BDC2A3B50230 -118: 8F994FB8F8808862C23CE0D54D74638D5E791F223BD5B0C932807327 -119: 0076555721EB1E5109D739AD02F754F65B60925BA337E77D6A823800 -120: CA335FCB3983DA669D23CF4121D0759FA5ED4B81ABC73D3099A67F69 -121: 43E78CED42618BCFF73D12BE0FB19ACBD4B6E35D6CFD56971ED0259B -122: 7C9927AA1107EE6FC8DC2EBA1726BA11C5BF58AA4D94544FAAD9F686 -123: B6CC58E1995C7A907966856AE345BE9CDD6AF5FAD9216409E601DD84 -124: C737869555A82EC9AFA80F0F6B02E4A4B006B5F817C318A9730C40A7 -125: DD6199493CBF768529A4124A24FA610BA0F3F065FE917175767FF143 -126: 07995E8EE6590930D3121050A1EA9E02122F1402133121EB99B24953 -127: 14DAC0B2BBAE3DD9F48425B372790BB70C58BBEF3EF7F1BCD0331E7C -128: F1AB62CAC4586020538CC065E01BE62896D620074CFA83FAD004FB66 -129: EF8C3EBFCAA59914477A43765C7735EF98B9BFB4C487825176D80FFD -130: 0160860271BA8A018457C9D02FEDCDFA875AD47F688355F60984FAE0 -131: B1259FA2F49C36BA861619968B3AEE8BF0BE31F36A43085CB178B6C0 -132: A6276B9416884552F3F629C556319F75AFEE0B86213A73D65FC4C946 -133: A19E52D9B53AF45A370AEC6227599B9D748DB8227E54635FB327D734 -134: 700EF4C63D08F0467902C469570EC994FA156E5C23B11C8B23C4ACC8 -135: 155E1EB13E0CB1C7C22C229AD4C1834613DDEE84FE4868E87839565D -136: DBE339E6E3C6378E1C7E8EAE5AAB4440B6F5553E8256A10E299545FC -137: 2FC9DE54F18E6CC5FCB1DC195AF45755A6C0121D5D6F3410CAA4DFF0 -138: 9EB09A504DF98D08072B2B537A4A77CE552D73E01DBFAD29A83F2DED -139: EBCC82D245205409E258DF60BF029BA4B40838A21047B591015AD0E6 -140: 1265A4FD513273BEEAE8158C89DCDF445CBEC44144BD7845B2DA1BB7 -141: 84DAED52AB24CC81DF2E022844593DAE2B649020354D9358A3396EF6 -142: 6633AB5DB4EBB14DD8013E05FA4CAD410140483D77B1C03A84C5CD2D -143: A0DA99FB42B20F7096AD1CB88CDF20BCE959744D780A888F41952EFF -144: 74FBA63BAF4AD94E06E5B5492D91F85CB340367E82922EF2241CCF14 -145: 23049C858EF172982F10792A3AB7B4EE048C1BA2FB5E2258F701ECC6 -146: F8020E7379A0DE1C4024163956E84BA57834086FA73CCA05B28699C4 -147: EF6F3F80DB70F7F952A5A455FFCE79C41EFB4B2F379241A8ED0EEC84 -148: 81ED7F0FC910B49438DA5B6A521C6C32EEE6E37D69DDB1B60402E0BC -149: B0E14468D8B00AECBF9C75AB4A4EEB81EB5EDBBD5CD8559503202131 -150: BC87DBC579F6C1DB9C80699B37DE4928DBDC3BF3A210E7933F267C64 -151: 8EBA191F6B274F2078DA6A0E4DF9412F1B43688A0678F4CB6B21F08C -152: B5F23951F70DE4520D8569EC21BF3A6ADAF9EF75A795031793D3C914 -153: 62BB7E72FC5E18CE99835DBDF39AC8F9EADF714889732781A89ED625 -154: 1DB4DC696E5A8B260D662BDB7EC6E003F544B6D11D27028AC50EE442 -155: 48562F639C5B9A1A0AF798802B35DF2F17F8A14B252F8CEBEBDDE7F2 -156: A26A27F4CCA53145368E1B1A59E75193AF054FA4C8198986EC20422C -157: 7EC9476ACA252E535E15C03986BEDD695078B41E30C0C979D2B970AE -158: FFE44CB9C129FBED78BDC710C740ED7DC4C3083388C70EC8AD84CA56 -159: 6C129BD10A6C1F354020505ED33733DBA7386DF19F9C7E9E0874E3AE -160: 3C61A1248DF4FB6A02C68FF413A2787E69D777F838FBEFB8729A6622 -161: 9704142B751D3C508A6123D2B807909670BC9A25CEB603C79BB212BA -162: D5163C0891D82BAFB5445D495EF53AEB458759E79FBB519B409BB446 -163: A1F6A6E1A921A9C30B58C76ADF86DC93154D81ED43F429BD7F961F73 -164: 19F1D5ED5219EF7F45EEAC30F335E1B018CE38DE1C4910C13FC70791 -165: 058E0834C5135BC9BC726BA9B72E73B07AB108EC46162AC51221A119 -166: 25FCE8353D4DA996E16F52C5EF310FE9FFE541D634C29712CA0A50F8 -167: DF9540F297E29A2230497D2F1407700C34937037CE9755055F8284C0 -168: 54BEBDFFA7B42B659935FE5DB06C47FB4492EE898CD9FF96FB60C93E -169: 56C58611A9612582DBF3444950F9AD2A15F4833BFC1B8CD51EB0F02D -170: 44CF684A3726979A97B88D2C1BA4B352D483ED6BFF75D33FED9B192E -171: 79C7A8099BFF3D9D35555E7187FE4335B7000DB9399C19CB3AAEC3E1 -172: 45AB6DBA6612691C9F25BAA40CC28E934E03D045D8E60FB51FB2DCFD -173: 6C44C28DBE5E69FC6F1D7D76B313274437EFC330EAF6A924964D529E -174: 1B4620B6DF146B921957213D048071030F9A7D4922E05E0622363E85 -175: 535BC93C1CEDF95D152DC94BE264BBF03456081BD3B7EC90FF3EEF2C -176: EFEB2A0EFC5DA1B229956115216820D573C9657EDB473B37CE545189 -177: AD943B52EFD3CDFD08568F124C0DAA22309BE6C801A84C06B184A532 -178: A4ED7D40AC60D3FC6006148EE93C25EE4A8310969DEE99304ECC6239 -179: 846A1783B36EED83B26F3542156B3046387858DA302F1289880343D8 -180: 946ACA7987084DD0681058FE48A88DF58329517CAE2F111262A416D2 -181: 1366566B209824AEF5FA190F4FD3E264F96C1F98EA6807D297BD2C22 -182: 0B7221823FE41585E4CE1900F4DC36CD67D3AD4A492664F08721EAA8 -183: C5432C9C4E8EC5AD630B24DF215F4704356A6D6C9DB63DE912FACC5B -184: 5D39A43FEEA695FBD7600102363515B1D896AF2CD97BE04A79C44F3B -185: DCCDD00A15CEA8D47A3C5FB0988E871C1071276BF862B06FA4F9AE83 -186: B95E8473EBEC712E3BF028F4EA364193DD57503327AF6D079E9D7D12 -187: 40B8D3FF918F590E790886B0AAC1DEE2684C10D93005E0813507DB28 -188: 65FDD6379950C218BEC640DF00A7FA8404F867224CC67E443585B881 -189: BE8682A311FBD69C97383864493D2333510D64F8DA13835F7E629518 -190: 562FD9460B40647ECE452BE962A4BCF63D6172C9E204C5AE8A468BD2 -191: F8DE76593980E12E8E41F498C4BFC53E68E9D0EEB0FC1D2079708610 -192: 8EB58A30AFF251893FD67211CDBDDBE44F2072AB8D8E2213E132B250 -193: 9798DDDBB93B5FC196AB1E117E412DA9A746058A85C666BEC974CD97 -194: 0C8B33B90951D312557ACB0ED50B6C77AE8C9FE5D2CDB252415914FD -195: 03F8253CFFF0842172D653E49AA7701BF1D419A0F5B362BDA6BA2DE1 -196: 9189FC7CF3CA3D948F04E5AB77AF80DAFF01C816D204D5B858BD7101 -197: E3488A5BCB04D617975FB294B8C3446D847807D2E91F20D057ABBEBC -198: 15763DED44BF8D45DF9137DE8745C77AFF2CC50BBEBEA8792EF29658 -199: FCF482E3529A1D8FFCFA1573C6192586971774BA6EB359C6517EE206 -200: 00A3A32CF3438637A3C5BB1F57ADCCBBD8DB41A699008BFADCD84292 -201: D4773FF714CFD494EF23F7FA0961E0E34F28EDD2E06F102440E977DF -202: 2D8E5F0039CAC2F7246EEBF007A47A37B5FAA85CD7491133A68794C7 -203: A3DE783C44B931209216826CC20DCC1C77D64EDAECE1ADD25104CF6E -204: ACD33E1987F8D26234CECBFC3D26E56C53D1E41ABD7EC737404B6A27 -205: CE1FE075E62DFF7A0B47FE694891A59FD0ECEBC7B1DBE33AA6E44419 -206: 7CD08D628EFD7A9C2B2DC6C82006F8A1C1A1F9223A59C3F80174DA8C -207: 6610524B38D5B2E26C1E5AF3DDBE037319B157919E2CDF12A1607DE1 -208: B31D3F7EF6B10195B648485984628CB40CFBB0F93513F98E9861EB45 -209: C0A3A78EB08C2717296C0A71C5DCAEC47E4DF1BE31A5EEDFA79A2650 -210: BC6D960DFA108A61F8FAE8A1BF10C2BD91C0B3BA1959092C735CD65D -211: EB71B5087850F2B7F42D22DD4B6AB37A133E42A5D37EE217DD0D1227 -212: 155142DE31A86CA36EECEC246D5FCFA1694EB382B10A1FCF219565BD -213: 5A640F3EEC8794D87D3E40A6FB87CBE40889FB0494FE4663A03BFA48 -214: A950FF4909FBAE5AF36AC39DE179D3A2D434AA76DDBFC9EB100A9230 -215: 635AB32F412AA4F346F36FDF9EB41D29649706415B6A861D6A41D8DD -216: F7EACBADA4D6BC548AE74D3F567FD3452023B3AC4E12301E06E8EEC2 -217: 00F3FBDF9E42C60113B12CA67897C4CB139D97E2B9B3B378CDCF8E94 -218: 2D9161ED3361ADBDFA19A56FA9A8FE058947182E41616BCF9AEEDD0A -219: 62E9764F2ADDECEE21DB8ED084B4CFD61200F17CADE030860E5119FF -220: 5401387738A9F11DE23E1260E132CC6417CD4D0BF8FA1FEA99E1658A -221: DEA79477D7249DCF4EF8C3C857CCA6B1767242F0DEF1F6AAB49FBA09 -222: FEA604EC2719135F7AF1655C751768E503096FC8508BA4E76645F46D -223: 1FCFF3A561D2B3C38A9B9BC00B6DCE45004E8B486D410229606EACAF -224: 982DFA333D2EF9EBF4AAAD995D22C884A61DB282246AAA13787813A6 -225: FBBAE03A33E887A3C3A5EB7572D84AFF5649AB9A1D1780343415FA0A -226: 75FEE5E8A10779C2673E307BB46388A31AAA0348FBF647B6127F0EBB -227: 50A0A5C89CFBBBEE48AA70A9E280D4EA9785C49F54EE1C251CE11AD9 -228: E720EA2034F35A2E37CDE57AC4C250FA8C82B04B5D2643E44A7CE35E -229: 5F1941F93C4B219F88D9571595EAB3E551E580439FE7231098A94ABC -230: 9010C146B393E44C64B83B3F8DE1C2208C6EABD4E56AC6D3174C0D40 -231: 1BB76E2E713580B12A9AF0AA25BE9CE3E1CD0D414C266789DB820EBC -232: 1FA8AE4B83E577DF574BA8896C9CC145B319D6A2CAEBAF5EA765BA35 -233: D57DF5D7F1A5E42981C841F9316BDD78B492BD10CD91A6D6D3CADD9D -234: CE697F3228A27A4EE63F1B91001450ADC5D49415BE3156CD427752F1 -235: 1A10B2C52B0EB905DE30811B3804A43AA44D10162823BC19776D7F12 -236: 933C3EB00BBD11AAB39DA7B501EC4426E0364202B2D2FDCA15F2C707 -237: 78D47CBF418EE7A1629DB50C9FD335D158C61910CC4A9F1DE2DBCCBE -238: 0237E7FC73E700F15F0C8DA9CDC0B7120B45D25D88E11F9FD0A9A843 -239: 47D3D25E73BCB435C92E8A0ED5A90AEC6F30CB7D184DFD65C6E22622 -240: E364E93D1828E225C940EB9C75A8BD5D4D74330442AE76BD669E8FEA -241: C508351A61A066AC8667D01EE8F2B82E9B016DE16997CE5099959AC1 -242: E4DA6E8F7CD1587749A751523F8BBBF8057FA5167343E7646995038C -243: 45366E7F33DCA4B4720CCE7B3DCDAF674A6B4D344CCC0B87019CC2A7 -244: 7C3317597F17BE069DC00CA6FD630C954F24FA4CEA14121023390D55 -245: E67F80AC4997C7DBAEA218EBE3F6A12A1C49DC60ECF7074426C60157 -246: D2D706913B09CFCAE969BD8E55375E55826A0BCC76D2616B87421A4C -247: B7DD02446A780CA46750E57A813F8240359CB9BE040E50217394DEF1 -248: EF98DB17FA7D5670F8E5632274BA2F1DFC7845F9F03E5349AF911B5B -249: C87A383E9C0CF5890ADA3B70674F492BC024E3CD5FE686C2D30E8575 -250: AEAAC036E59D32828AB8F14D627F9DF8F96EFCF657FF06F93F464A9E -251: 5B14A767E4D592E22605FE9E88AD07CBFE29F0EB8C4C981A591DBA82 -252: 3DA791F77867AFC68F89B896ADDCE45273C189C723FC2BB37C685952 -253: AE4E91C21DA6601A7805D998D6530A7B8F1ED098985DA05E9E34CF8C -254: 6B5B4254826EFBB1BB3A840F709BFA977D44489BF63A461867E71131 -255: F52E5501F8352D8DC439D414B563A21A1791B23622130D0AA1BE06A7 -256: 17E1FED5DF79835C5579296F12C863FF2A851F2BFA890640D89C45C2 -257: D669842D60DA5ED1AB497535D923C13FA9F1971F4114DF358E4EF191 -258: D550AF20D4CC8982BEC1BFBB3D9CD48C202E6ED3BFE53C3D17533AA1 -259: 8E680422C724D3F390BDC1D619759F7706D95BEF81733AEF4FDD9E4C -260: 2102A7AFAB6BBC5B5EDCCD8B927EFAABC1BF7447255F588C13CBA658 -261: 1F86A514C7E97D5613B10C05B0B49D8AA2DA96B60A123836876D40A4 -262: 6C36C0DF541B2FC55F488E7FDEEE582EC6FB907266D05912BA5B1A5E -263: 85157706FDC77EEEF108AA709696B081357028C93FFECB8B19DD5B32 -264: 7DB694923013B743990EE3F05118B066C99D824764CB8A90BB5C7B1B -265: FCD3C0C5701F442BCB129221EB964266E051EC76F4B99001D4362E18 -266: C30E41B0B49EC36E8D6847856EED83485CF6487EF27E0D4AF81E65DB -267: EFDF7F1FA75B2AF41A8B585E780693B757F583AA55A5EC14D6AA4D40 -268: A56F33CDD6D09510CE0F3341A932EFE1E9BEF638AD230A2B3CFCA681 -269: 58EED50C50F79A48C8DBCD58D6A632080E82B555858E78146D9E4333 -270: D26DBB8335DA2322825A7A0A37A2FE89E1FF7A7FED7D22FA21E57119 -271: F97AB13EE6713D218526E1F0798DAD03972644B43E830EAD03A91672 -272: 1AA85126E0B614AC5604C0257F9C60E6A99FFAC190E71E2B3C7F08A2 -273: F4BDFD31FDD995F83D63FC2D1982AF5C62055D4CE37004C1C0253007 -274: 8A6B0524FE27D0E7EDB02C6BF0B289E933ABAFEED0E64FA8A3445990 -275: B35D6CA52AF7005DE922703C7CAA1BA625B941D17205919AC473F30F -276: 90BF6A33C4067407C484322454E3AB98EA3985D86F954AF59CE2737F -277: 24C37D603C1895C92467960B370C6CDBAC57FA76A953FD7CB3D65923 -278: 3DDEB086BFDF17EF5D3EE6929B0105E8243FA9C440974929BB6D1317 -279: C1640921825552CE15CFD29A37E6F11BD4E02702258D0A11674F0DF0 -280: 93FF2218C378730A0BFC4F0C002A9B8C0C5229A845DAC5452625DAA9 -281: 215D3F0226153D66B89EABD0E60A17080C1ECD8B47644959728345C5 -282: F43A6CCAF79F6DFC5AD2A06AB990019CED9A0F03033460CE9724CD8F -283: C89FC99E50757B20FA6690384D3D90C52E5565690EF0FFB8C19C9377 -284: E27768874E84816A45732B2FB77CD87AC1D101BABCB4A2FE793BC7F9 -285: 1FE52DD8051BFAF26E77CC14F07E1CC72D1090A57A453444B2647EE2 -286: 37F5DB200FA65595B74854735F5752C05AFF17F2539718801F860C4F -287: 3F6304F546529D4F7CC4742D0688B1211647A185FF474DA0B8D9B508 -288: 347B1E96D9A00F084C4FB3FF354E77A924BF3B90BEA14AF41BF989B6 - -HMAC-sha3-256 - 0: 50AB1606034383FE4B3B4BC0A341A82E40AC85E455CDFEED4CAC902A7B8CCFC1 - 1: 2A4A74B8A29CB3A2CF8F68BACA39CE678A516DCFED48F0028F6F6B21CDEE5CE3 - 2: F6F61821815051B11CACE0C3B1E15F794754A0ED9B285EB049C496D902D76DAB - 3: 122DA3592DBF80CF413B6CF1502B65769BAE7EF0E6A172A12A517F789049897E - 4: D7CA62324DD6A8569ECB7E03382E51D0BBD889F6B5809C42ED484922CEC50C1D - 5: 302C41DCF6B0D51FF46BB17F7F7F47DD466DCF4FA0692BC80B7142D92C94B398 - 6: 00988C6E9C8B75134E1ED42C6827E05B733F347A6DD6A4818F935A88E38AF0B7 - 7: 2288F2C4EA56CADE449DE10310D84DC7C8834855D3B6ACECC7B61AB4EEE169C9 - 8: 4B1C51C1B733CBD9D580AA144370B7844ED8737AF1181FC330F56F9716CEC264 - 9: DF656A0BDC3EA93AEBD2ACE4F55C879F8478FC4B7F550205189CCD285822A087 - 10: 7B074CCFB872E60AE73E90728B4D737327AB3ADEE35F0DBCA4935943548FE0EE - 11: 725E3E314C8F2B8EDB137810560E9F963088377101EAE97F1102FB3F51743F0A - 12: A64D8B525AF849FF14E88DF144166040F9470EEEE8AAD01E8398C842088179A7 - 13: 59E974E7B284E1C3F57AA84D5156EF1A66974A34D9F858C022DA642C24F89946 - 14: 2B33807E49DBB32F23A8A2002334D087D43752ED54254DB1B4167CC99F07CCA6 - 15: 0BA1EC1F3BAE7D4D204BF699A5552A92A30F67CED38E2B10C76B6C74DC140081 - 16: 58224E061A36912A8549EA6D607B3B88CAF93FA6801385CA04142A13DD44AE30 - 17: 242069CB97DBC5E3CD67290A72285CC3F1B9A3EEC4A83E896FAAE065E342BE74 - 18: CB5077AEEC2B61423B8F8CC227DE3CE9852509EABAE7C863A183F8EB039F5F7B - 19: 4C37A0EE90AB318AE30E577986E782F28897EAE380D2DEB28D4B142F4E2419A9 - 20: EEB7C21D476EFE2117FEFFDD7250BD29B57139BF20C951256E3556DA7B22B0EC - 21: D97566F8D85FA503926DA4A4F67412AD5AC427986777529A6B624C3CD6E65CF7 - 22: 518A2BBBF93B27A0BCD280105789839CA571EB01A99D06E8767ED99410A19E6F - 23: 2A4A957A16CC7BC7C9393BC5D4E3B12A4252A4DF03BEC301AD880DE08E9FCC46 - 24: 4F5E365BFEE6D1C3EF93FFDCD8AB271D6352F29A3A87A6B5F86E104EF389EF3F - 25: 4A19FFA1FA0AD3E85CA230BD1C48C2AA103A21050442794529B9B3F8F029019C - 26: 24677DC7A18FC2227D2137EC649C9B95C6F447561BA54CB081B6B9219F14CBE1 - 27: C8AD78F00E660E54CA173D0D9F9261CEC673150B17F03C30DC25599E574326E8 - 28: 6D402B040C9A9DF4B59D7AC5648E586DA82AFDB123237CE87964D8CB2ACBEE16 - 29: BD415D79E5C662E6251C3EDE20D47720C9CC415C413AFEEC1A64A2E293E12504 - 30: 0E6E974A876C244CE8C1862F9BB37286B6F4786084131A50844DE64F90201789 - 31: 887EF591EFF9BF94AFC48824B0E6E521242842170611EE3BF4E43075A37FB5D9 - 32: 65B9E787A34DCB7F8FF6914BF4E32F13108A8124CFFBA41F778EC5E46E19E219 - 33: 053238A9703A446E7DCF0DC70BB99AC3E40A4A1E2A0FB5B8605439C08E2DDEC2 - 34: 0F75F3CF5DB76A495AACE8048F890B7A8F19A190DE33EA47F145B35481FB7BC7 - 35: 45DA38BE1889EB202321D4A3C47162978A9CBDA8B0151C666FA99E2BF6F76798 - 36: 646135DE28865EF17A8596DDEC2CFD55F11F2C8B040E78835AE6E4962C051B03 - 37: F4B0A9FF537B0A376D22A409D9B9F28C5CA839F0F7EBE49A37B8263AD4CFB2BD - 38: 499F6A8A55C6D47A4C34D3EE81A75207A24CF900D99F4A3DDBCE78EED1A7C26A - 39: 945532B77FFC4CCB3EF7F20E09CA61E0F410F94BDEC9914207F950EF234B71F8 - 40: F8BC5F01A338090989B5507F81459C7CE8D0892E449ACD06F73F9DF79057F494 - 41: 107B28EC5C3C08CC0ACF86B679CC25D11DA16C42E625B8EE3BBB19EDE93B8F94 - 42: 40210216F27C92463DFB562826DDC5F01BAE75CC70AE97631CABF42C8D047B1D - 43: F678D0E03FBE7EF49CE023D36867ABF50866C775CCB46F2C1E5DCC77ABF1A73F - 44: 64075E1D786A9CC8C4AAC9D0F563A1D5FFFBCD0268830700DBC8E4D8BB30C344 - 45: 4781DAE774404C229D90BCECD4183D1B3F3CFA9C194003759F5DB2CF7C7AF95D - 46: 8AF09DF7EA4517C7B0D9C4C805C21397BFEBEEB57D554F47FEB4D80094AA647D - 47: 80EF33B0605B22A8D39B0F12DA83D975E69F06DD4906B9E6EC96B08FE88B8C83 - 48: E3C38B985F5CF51AD52310DF2405F78E032DC4AD0997B04069A5C16A35CDE985 - 49: A206A67631F595342D57FA131A306B7B41ED5D84F4ED4EF6746EA791B4F85A11 - 50: AF2ECD57179217DE57865DAAF9B13420597FF28FDF5FF01F1E2D9C4551ED57E7 - 51: 755796523A028BB7CA985776C339872F832353002C42FB8572D8C49E38E6C9DF - 52: A016105DF6BDF70BC6922759F3A5B14B58718273BCA5BAF98161DFBE607F1967 - 53: 4ADAC11EDF3F782ACB8877232055595CB7021C5960A310F2947CCB9B5B3BF14E - 54: 380F57D0D7F92F865F3A43BB4F52291F547F12240A6677B7AAC27F29312223E0 - 55: 03510CC4C0810C80F5981E52A044DDE9DB96BE58BF5D130BAB3E269B6F25C062 - 56: D21516F9C19A56F94F0724974B82909B86AF7291A94CC1F38E8D69EA1FAE149F - 57: 0BA82501F3CC71933134E096FFF943D24BD44A6F3C848C1794108AF2180D5CFD - 58: 277FC716ED0D63C72BFA846543675CD5173B85F04D9299ACBA9CAA54EB58B76A - 59: 058C2544BF65F46D7DBF5FC035AD4CE1D882A4C15861075BC6AF2DF5D60FBAE4 - 60: BA67ACA8A335198CD39C94E335A79FD9CECAEAE2A949B4DB6667176F4626AE8D - 61: 2486D1B356DE82F58EA2C6217FE287034C822805796F7CDC855006BDCF339F66 - 62: C274BA0F6171B13CA7AC891E2F94468D2E63679DC807C8EB062CF5872B017AB6 - 63: B58BB3648B9EBF3E973BE866D97AF8AF8C1401209174AF231A82821464D2ED6B - 64: 399166BF4F0A1557A287EA34ADD02E31E101368B70186420612B5CD686188112 - 65: 18A32B258CCD3D1B2CED8DB4AF840047625A6327ED9157138BDCC55ACDA029C8 - 66: 2ADC58FB648C5AAC3E5ADE50D808BFE983257A397EB25C305554B4D10CC0C415 - 67: 46524FF96E26F6EC52D6F7365438422FB4A8E4B41839C3BE8F0DE4AF4665DAB6 - 68: 3E7E2B6EF00FDE432DF84D58BB62BE72A4F879C30BC4B9EE3CBD7E671BDE91C5 - 69: C76882FE783BC6DF51ABE866F20AD3959C79152AF17AB373D8103273363E297B - 70: 8273D27F5810FC5F618310007078726F76835A07AD939DF874981ED3933EE8E2 - 71: A59987A2FF53697FD7F5477AD93C5D3347CA3A4D9CF2F7B1DEBC5EF0337B6BE5 - 72: F3EE99BEAB752D7F967D802B986E0C5E440FF55E6715AE62476C175DEFE49880 - 73: B8BE881E07549C7B512BCEC147BEB0999F60B37A9E3539C064BAA9087F695EA4 - 74: 526C78709F5D0FB59339C74AA110D85A538CA5F285D4C10072D0360EBB6D792A - 75: 78A52E87F895E3785A03BF0CC07B0BB3E4B13E39ADF3AE10345F55BBE4A1FE51 - 76: 8753C9A1AA4BBC04B70E1E53D2F332FAFBB37B22E04F73475C231220C078E9D1 - 77: E138BE525A0FC25896363D702DF7A51A76C7D0BB6B934E9F8367077C0B114348 - 78: C1BF13C457702E3F55B07973AB822246EDBDDA27E6E9BFB3EE8C8386C5864DB1 - 79: 0214524AC7B77CBFBDE5EA45F3591E7F3F14646D47C6E780DDEBD694A67C8C47 - 80: D03733E560950CAD1C08AC05EE4A56BBD2B6B66C2943908AE7C55B44BAA444CF - 81: 142E70361E8188C4A03168C5A9E09CA9D63746D3889DA9DF25272F2AD4715919 - 82: 58784A0DA7F53F9E8F61EC2DEBDE47D58484917FA1147C6AC2EA166C27F3D55F - 83: 7C10F5BDD0DDE3981AED24929545CFE5F7DD8E7C0463EFF8DA8CE2DC4B9ED4CE - 84: D68688FE3542987A21666ABED558EF894071940DF039C0F62E7370C00414ECD7 - 85: 69D749759F6719D5D7FCAA8E3FC880AEAAE02ED3F19B2CA3AF6603CB2EF686ED - 86: B9495E9BE90BDD2898C4BA79053E0E3BBA0CAB96156A19B6474F3D8082062DC1 - 87: 932A031D47705146C3FB5437B2BB5BB222A24F3471206615D0EB48E9616D2F2A - 88: 3378B7ECF28B590AD3A5B63DF280A2EDB4828BFB23A72A53DBE29FD5B7CA1E0A - 89: 9231275B81F2F318CF4CFC54216FD0CD66B252954AC325FE43B52207FC042FE6 - 90: 4C20DC51B49C1EF9CA34DB2BB885B3085218672347137F0FECD6342FA0A44E0E - 91: 17786F16279F1303131C4C06147451D9BD9527FBD7B3059233B2E5E5EDC76019 - 92: C9DFE55E3E9EFA758E5E678CA185C23AFFB16F4870D4C5DFBA2F235D7234808E - 93: 8BD27FBCB0727CBDFB29FBB32CE54761B659B6DDCC3F22FD92F81D711FAADBF4 - 94: AC72CFAF9859B6AFCA17D6CCBC31E14309035F179F70CC6C50B1E983742B61B7 - 95: 3820FEB4C43B2282B2ACD90E0D27CA0FB3DC4BF70C87D5C00D10284DAF9F722F - 96: 223AFBC2AB5E469ADCBB53CE8AF8A6AA1A4F84F9D9487002FD1FD17645BAA39C - 97: 269B0B7EF788E539FD881678EB1AE50EF3D41B8F230F4A76A1C6C77545549D75 - 98: A2020C92921389FF94689A1060622CE51F28AE5F8334D297AA64E51A09DEE73B - 99: 5EB2A6402D59F950BF0ED5907BDE3D3AFFFD031F2836C484C1C8F684CD0F870B -100: EB99D8D3CAB05F478E42079EBAF4565525DCAF9C64F62D7B4A71CABB6759B6C2 -101: CA4C2B65B20E3E442E8E4B49795E99A7EB93A513FDE592AD5BF6027FC0899B76 -102: 8E4B9C5D0883229F6CD2FB574EEE3C36B5346C70BDBE0CA0E273D674478FF034 -103: E01A183FE7A893DC91B1A90E84505E2390BFEE27705483EB99B5EF1A5382BCA3 -104: 2D5164AE808F846DEA107F8A919F4B8A876CCA0C5FECAB9369C3F64EDD9F6F5E -105: C2771B6830E50B5A03CA3523FFE89B31BC056E837BFAD3968937091F69115748 -106: EC666174054E0A7E07F1E4B689515BBA0C70AE109DAC104916671FAC934F972A -107: FC5E78FFB1BE74069F233DECECDE65FBEDE8BFCDB921DC53AF7024F7E45C0683 -108: 9BE4DAD0B9FE3F7160D0DC744882A4454CFCD08298A3859B8AE2231FA5F53B2F -109: 8C27F7A101ACE3A4D73607391EB3AA1893FADFE919DAD7838BD3998840BEDCA6 -110: 18512E220FED71B504B78677D81614D33427B2C753AC50B63EECB6C7E1858064 -111: 45D95E338C0681FF16F0B76FC3A613D0BC74F72EABCC3D548CB2264DED924E33 -112: 2BAC2857BF866B536ACE7270A5CF71D0532939EF6CD937D23E20BFBAAEAF3D0C -113: D289400575B939E0147D751110035CC8624A6AFF5C8E5D92B0048DC01FFDF1E5 -114: 27013272AB9340B15DD0EC5FB102A14438434D2857E580A1E4DD655393E9E8CB -115: 7E80D7EB1F1EF312AB38077F82187C5BA138A339A6E3E5DBBAE8ED530FC815DC -116: 5AC6D7E7E40CC968495778BBFF6D4518D402238F9525FD105C83105691E04C9B -117: 6BB712FE2F629B780FDF8C02B063CF28F577C97E96DC5D0C5CFAE5EE952DC60A -118: D11AD92D2392E66020B76B22D16ED503B01470FDB6473E579F9A6D676C39A936 -119: 07C552D7624B8E22152D3F3D7EB450AE400946BBBED376E2E74296F3966739E5 -120: 37B7848A2BC57DF301F90BD95B7070BE8731971B64D6A91B2246910C4BC28444 -121: D3C525A0F26AF107CFB82862543A3D44060309B5A8D8349476D8FCA68BB54186 -122: 77A0E371F935F8176285E726271C0418628D0452C65C0106F052BF457BB6BCCA -123: B01A31AAC6A8E2B64679473304C2BE2362055C81C04E15FBE6A112850A831440 -124: 99A047D24C5A77E5A10A29B0E361F040AAF886C93F733967238BFF0D0C3C0EA2 -125: B699EFD9B6FDB0F6D37C32317A7DBFD0086A86D859783C779878F4A3331BC323 -126: 8589EE4F7200F9BC7A5E2FCA66BFDA5E9E5E3AA6A3652F5C6FD419E9F247F7C9 -127: AEDFF2E6D7CD7D083F8D3D7C3ADC701D64F62044C1AF95787F30590C8E94FD53 -128: 1E641D63B739FFE9FD1388E3F1C36F59D6ABCE83BD1448B782B2ED0EA24DF0DD -129: 99137657DE6BAFCC8CC5FAB6206BC91CD8869F59CCF125A76D2B90DEC9D9F99A -130: 9BAA62AC62BD25FC74DD090DB5BAE3E2FEE4A4BC3EE4DFDDCEC35CDBFB458D03 -131: 661343E6069EB01BC90AAB94FC91900255DD5AFA973128AE4AD7A816E0003C1A -132: 45DDC37443CAFC45172D2E276E49CC82163C2937C14C2F332D6A3D21E9A525BD -133: EE83394466C27CC56F73F3D45D425A6E18BD7F847AD5302447B7C6908A2CF4C9 -134: 337D7F763C292F9C8DA49E62D47D6332E5D64F73A9FDF8C693385F2A045140DB -135: 6414B64B863E98021DB3618D54FFCE52EAF6F9E103E5AB15EFB0A58493704A0B -136: 46A8CF7BB8022FA6EB8C0060FB8CD938E2FB51FB30C9160A707E0D1396C382B1 -137: 4F5693EF4CF1F92E90A45621F80B4BEEEA0208BB34C0DA856099BB1A430D6305 -138: 834645A17330F8A307A506E9F7EC5FA2239784B90C590528B12B5CEE37F693BF -139: DD89D1A5B288F32601EE8CD02CB2FC1C46B946AECF7A8371E5B95FFF95B72935 -140: 0D9458F49EBC787249E1FCE27B5C2E62E455693959899514A1E6458FC970F2D2 -141: B8052FD0F2563CDE49FD5F0D9E23CD6E4470FFEA2D864C1353619434AB71FFB6 -142: B01087ACD73274E39EEAF42840A2BA3F510348E03A337A515418272B728A59AC -143: 93BD1DA6562815233B7557F0C422EA73DF2E1B014B4D8D0D0BD9F912869CF28E -144: 81C3B358D1FEE4E2C01DFFB8974B3558416D0D8FA24CD39C86A8CAA395DFC6B5 -145: 1CF9E97B10B8942A9D31D0B9AC1160878D5503E21E6899C9A60D958E5780696D -146: EC9C7AFB37B734FF8E7FA6DAB7FDFBB9BF27031B820AE9208EC15E46BC956523 -147: C9C2CB7542AB4004B225886AE36CEB3414EB75675D28E9968EE9ED447FACA53C -148: 1558C16700576BC28BF5851D6121748135359D2B0DAB5894B723069CC2EB0727 -149: 23A98CFC310E98FF5C275D26BEF42FA4FA69B4D355B0E46F931F35827D061371 -150: DC1BB529596F6D36401980038A1B75863800A715860FCBFB2BDBDF0AE4DB5967 -151: F434E237F8C2956D55E4AA85F559C7034DB945B350077636D99D3E34D321753C -152: 52E7FCBC18D02D8EFBBADAA3E7FF09CB2E8C8A30534612C3084515DBFE91B252 -153: C728EA292FD96DD66A3D6D56CEF4A20B8BA9B28EF5DB6B26CD813F481D4C4ECF -154: 097EBBC0F11EB0F1A8DDDCCF737A341ABAB4277B69AB6571D264368A52B42CE1 -155: D36E8951ECECE489A9710E18A1A3B090F929B77EB4342B024DD933B88D569EB1 -156: 8B27A24B6309F3A9AD58FF5C1DE97439F8A306B22DAB359F0F505437BD47BADF -157: 600AD22E3680EAA76DC3CC800C0E15A56B85ED9B0C201D12C5B565632BECCE08 -158: D5E54E53ED68592BD379F607A71C66D9D24B7533B996B952F2E9175D0DB4B53A -159: A94DBB464743F4EEB9169134A12EFB20424E4892C61849AF20DD2C5C9CC0C34E -160: F506C8FFB058467CE2FDA45308A00413FC4AC63A1F7D05AF3514F3FE07720DF9 -161: 8CC63294B21CB17DDF6214B296F19ABB36AC1F808D8A2481537FE2A9BA86846F -162: A5E796A0A6F211CE76987C2B7E965C3A6A60BC0AA46EE0B8C0A1752E857A40B5 -163: 401C0E87F3374AF4688EB111B153585B6AC59D15002279A67EBFD7A44CA37AC3 -164: 9F273752D15EF9232B67FE4544CDD77ECB05054FECB7BB777353E33106D981B3 -165: 10C1828084676F9527C5EC8A86B85E476343573E2DC01F76AF020DB0A051E7E2 -166: 57DF379A9A4F2CC81B51B7E902174BD754E615A41924B89AAAF1D82D0A1B247F -167: F968E527F2BE68B71651B39822902B920B1321A3C1D279227C9674454BF929DD -168: C8307C8DE70251DFB7B6F4176FCF3E1E2B084BD7BABCEDAE051660D112CED766 -169: 92FAD2A894E486C8F7B95D8328C07BB0019F87B412E7A0828E620D306FCF4BFA -170: 17CC3FE3A2DA637E90546C9ABF1ED9B3AC8CEFF9A1B2F3D30C818B0C55111AA8 -171: DBE1622DB683472A2A42C98B837768053AA9D3B3FB71255CEEA61A4EC89936B5 -172: 8B46A4EEF26428FEF253FE633E86450713BEECC6CFDFD6046E7B32666667EE0A -173: B0D01C04255AD566E24774585D1A4FF9FEDFD61A361E3E28F2CA8D1CBE4A438C -174: A5AB98E1CDF0C57328D373A4B33EFB85C8AA52178BE521B41065BD1C03F52A95 -175: FF470AC4BF1D2586B9BD9BD7730CD4F48B60357D4DF99A65ED26630DF3A1C989 -176: E8548CE2F42C1B6C4820E8D1FBA066EE426E69058FD7B31A18B9AA875C29502C -177: 5DF20D1EDEFAD55F8EB7E4604D8B4C2B4DC6F03753FEF0A95EF1AD75690EB4F9 -178: 632E58E4AE4DD26DC10FA6718225130901190D97614E151C72AE866263878BE9 -179: DF37B47ED64970D737B80540402FD25C74A4ED0CC5F4855067B202642584531F -180: DA715F8847774B39E7D6C70BC3D80AC4EBD65757D60A4AE99FABDD62DBEBC0AF -181: F84A5417AF999AFF15F38EC55BC1BB6DA00D40F81B6EC3D911DCF01CC6BA0936 -182: 662177D61F8C69E7080284B139A541D3AC2A499F62B4E80797BD98FBF42C179B -183: 5D481DA0458113106E36539047AD96E9EA68662B59E7EB0C04AE4F3DEDB62B48 -184: 58EC20C1B4B205E00F513F78284A0CF702D011BEB37FF4BBF65DBD7C9340957C -185: 23D9EB2F0763C3810B3492E3B401FF7A79368EAA62E447C984EA274A9BF025AD -186: 49A121A0F40CEBAFE99A77EC81BC035FAA3614E0C75A1B4E4AB75E36948E7768 -187: 36132A7DA9A65D27C5288B641BD7716F5A8F92D801E62C56838A3375C7AC788F -188: BF07B9182FA62A50A543E82B95C87845F24EC9131729F0376940016453577AF1 -189: 76F16FAEC4AA73A97E6AC9F3D8381B57198C7D8D4431FF40E8F1D73BC9ED1C2C -190: DCFA909E04204949A866CF1A8D2CB230AAC22462E474A908DC42625919E9794A -191: A9F12AFC050A6064FC371636D50CAECC5B1EB8DCBE094179FCA51ADFEBE3CC84 -192: FF715336D5EC6BD4AF1E68A92EB398E686D9F3FBC84D9AEE4FABF513FF9B6F10 -193: 93649AD7A74F92CA9C6AC6456AD9F33F77F11823429DC5E87E5456B088C10961 -194: 000BFEE1B37A94721AD664D8EB639FF572881483AA47668407CF3E7CC08E3E68 -195: D60708054606B40FB53C87B68C41168CA99AFB30F3B72B41D83A7F36A5E31778 -196: 4BBE606CDC9F6F5EFF5294EB472093D8D13D927444DC2C4B0F25938862DD1869 -197: A81A403B78559DC6B7E1E577F76A5343429C613A7F6B4B17573C6743DCD1B8E9 -198: A4452A113BE56D8737263F965E367416BBA95F825AE4EDEA7FCE93B801D23623 -199: 0BF6BFB442054369663D4204E2786048C8732A0604942656BDB7CF1AA8973925 -200: DD072D6FC4A203F430F4D44B061A15E525FDE572159CCC5DDBFF584FB8DB23EF -201: FB4B75E89C01A7CB7B82DE3A6A2D6EE4EC62C09CAF34DADE24EEBA6F0F72DD54 -202: 0558E94472154611665A926C2760FD9BAA034C5CC89A79BB3E4007F64DD4E16D -203: E3757AD0AF9DBC26B09334778333F27CE3F88189D834AF807A1F1C1310CD7527 -204: C1823F5C31D59A02D4387BD1D01B7358F2490858678AE999C5C0289A7A1C71EA -205: C2169C717BF782D7B19D2F6C23575FB053AF8969FD1EF14FB4374C3ED0290609 -206: 136C5F7C2F097AF920D2CAB5E3A6F004AF75E48F79ACAC9804957AA0830C6F0D -207: 2D6BB9AD9E809EBFC6828CC92E9937F8F8D5E8FC7B619521A5E73AFE1CE0D91A -208: 0AD746155EFCE203C44CB8367D11D2B98BA25CC41FE19FE8B24CC8A4A4925C3C -209: 293FE64479379FC50C80F598F567F0D8F83E5DE1A64B65CD0D8E24DA5301C739 -210: 071193E6DAF311F73E020279E74B1E723C3755F469D6426BB7789F409DD082F5 -211: 1509EFF810D1CC408684ED0F1C3503DFBAAAD9E8A5AE518A0DF2782AF44B33A6 -212: 5991927B26178C7C0BA7EDD5D74024CC837FC9FBD70E58B8418574EFD3A5F484 -213: 1CB1C2FB4496CAE5014718031BFAD64C7CC518EDC7659E4A786925C1F8D04F62 -214: 595BFCDD70F1F32C5631F270F1D8D4818D57F120516E2B5C4D64F85FEC0A6ED7 -215: CCE1D922A8AF198048C7FABCF1D42E15FFCD44C6E276B9A00B2F97FB5693788F -216: 85C3F375A51C733809F854FBD1E38CF5BA5E22A3FD9BF187B1AD66DA373C00A2 -217: 18B9B92F696ABABBEE8E7FE09734AA742A953E68810DDF1C5AADACB298673078 -218: F63A28A74339FB739E751A76F9C888C79930AFC73F1B43584595E5A15DF695C1 -219: CDD08C2839D569D4138C2629CFF9182A3F3B00C9E4F02E2A19316058882529CD -220: A40EA17095A5F42B8FC22610D734CFBF6FA73D1B2C758C325450B38DAD966AAC -221: 02CFDF1A9972569AC2CC02B5BA030564B4766895F8130CBF40175FA936F02032 -222: 439FDC2133ABB08E1332A14DE0D89E7096D8ABB981D7C04473AC1C087FBC3C3F -223: 6B813D645ADE1FB3B38EA39115C82391F227466FD13865570B806A30885C9E79 -224: 7BD097E6665E3FE0D3838F264E6FFC5BC8B084002A6CA0BBCE3E784FEA24694A -225: B705257D8A2EFB36696F736DCF837D6CC0DDEFE60D536C77E2CD686666B42E93 -226: 1F14516210A43C4C3C6EDD491EA8DE95C23433A0DCF3D8FCCB1B2105322AE450 -227: D3FED5040397F0CAFDFFAE80F743BE8DA753A34145045020FAB72BE3BF9D02E2 -228: 7B6FD6D61E6F5FDF59015DCC3B713CD74C889214DE584CAF4794B59DBAD87E70 -229: D56D25AE12D7A29F05B088B7562394AD9D5C94A6DD771DCE028AD3EF21348341 -230: 4237236529661A99E776617DB6D6AB36442A581B0CC97D9D3CFADC40A40EF252 -231: DBD6B4A76F0DB0E1983F8AA2208DA61558C8B366F470B2AC82F45B3C07A85CAB -232: E339723895A9F394F9BE7165276DB31F8CD47E54AA0EA8E96F80A1F136499088 -233: E5A30A8DB4BB8F7F5C3C94BF2CFD0BF366CF099C3E5FEA81477464C076E84776 -234: DA0C79BE315A665D242399FE1DEA4F23C8F332351C111668A3426197CE1D209B -235: 9FAB51892F28FA9196B05FDC0B4714C957B00030A96F98E8C84C966CBCC0714C -236: 3B571B2DFAA7233C9CE8EE8A62D3299F255A8C8D05FDF9502F5875F5E49DB20F -237: 575CD67F22C60256443AA2749D00D76C440C0FA1D44B6034EB03D4E9CB7AF86C -238: 8473742B401B29C5FC6D2384DE972E8005B60AB05BFDEFB952848662FBC49D3E -239: 61FEF2413F455758D37C0F7624B417D145222C7F1BEF37923AB3403A9B788BCB -240: 848A9A96C894AFACC6569014C5AA344242AFA3DF482AEE070A6028DA8DFEE536 -241: 5CD2CB40D998592C90AB4B3FCE978FDBBDAC8810EC77228B1F8B7CD399FF113A -242: 4B0E5A2C4071D77C7DE8FE77EDE2845085170A290C69B7253F6148EE53C3C0FF -243: 68077310C146FBD01F5B38BBB4222E8D21FEA31E0959A0463360952E0CF3AFFA -244: 022ACD451B6BB3304E7D3547EFCFE2613FA7764632BFB5845675716B3BAA6EF4 -245: 28C3749126FB7FD2846375B01A84F77B9D76257EB0EC0EDEE333128244F54042 -246: 8B77B36CF61AF6468C3C205CF46989EB832FB38D34A5FC711BC15FF1AAC4B42C -247: 4C5B01C22BDCD239E9AA8D78DAE76AE558969A9929B589CF2124AE8CDA922452 -248: 061D00E8181D9E6DD5A19CE14FD002CA17DA471028AE4EFE45B36B15792ED671 -249: 6693FED54BF0FE3EC58CDB72CFBA4CAECF6AB5C894974FB6DE7B0748419660C5 -250: B39000AFE76181C104777375284B3649461CD36AB48FD63D03B07F45C8B7AF39 -251: 025AE98309E87195E70E6D66CEE69E8CB1BF0DDCAF83F9FB4D7B6E67975CE832 -252: 00AFCD23E40B673330FE1AEF7E1A0FD15C3E606494294C626DE6F8C43ADFE138 -253: 0FA5EC169687DE9622B4EF94CD094187613FA229F33D31E03110EDB5C593B555 -254: 61F3C895552B790AA9E38F3257E909C79D3561B572F746BCE4762208227C4595 -255: 0A271E998A3C5DB822588BA02A137129E11C5ACD059570F7E2DC9BDB1791144D -256: 2B91CF89FBB3353429262AC896A57FF6CBD5BCE560AB3C1106FF91285747D80A -257: 3D84BC671A7082B45867308A1911B39D3B204E924D37E069FD12C0DBF7F9D6CB -258: 799A1E3B40FA9741FCD08232C2F37589A2A8A3F42FD31F5A56C69EEC199E646A -259: D194CECB713A996DE9BC51F4F2D5A6B95C79E746BF67282F075D1CBF79B76138 -260: AA3CAF601125B94D9B3AE037BBD513F877A16C0C326357E89B5B4806D1B5CA04 -261: D13229BCBA5A7413DF53F983695F5E7E8A158942110D5F80811FC7F2A26FDD0D -262: 5BB5D3B4320976E40364CAA40E39E41AECD835CE892F05F333D34259FFE83D69 -263: 05184BDDC02D0B51C1F17B8F9B36044DF65AD77915FB5287276DB906AB18C6C9 -264: A2F64FB5F1A853D18E47C479CC3E33B18DC98C2027E74643AE348EC9B2975798 -265: 9BE3D79EB5997C872041E5EFDCFFBF431696C4264385E5EF9DCED5206B9C37E6 -266: 8BDEC3EB418A6E4582BF7F7442DBFBF84A3793E541FBF314CBBDC6DFCACCCF38 -267: DCD72D14144DA61ACE65F6187F3F70C1D7E996542D6057447DFBD83DD9C607E8 -268: 93BAFD57513BE654B3C531ABB9BDD377946EC0368EB0D7F27A6F459C8E0341F3 -269: B821AB8CABBE27663168172CE01ADF59BA3055F25CBF344DB540F3218504E866 -270: CB8021976EC64A700DEB83081E1E556DDAA9B92B1A9197704DFC05D0A00B9CD4 -271: AFA9DE95379ECAE67D8887BCF2EB434ADCA23D7573A35A8350A0EC321696976D -272: D4CA369A89DA417922E55530703D6C3A8C7D3CB67AD7241184D7FEB27A7A0314 - -HMAC-sha3-384 - 0: D00CE89D5235B22AAF49DAE078C0C8C29FC3AB699D89837E1D1A9B443A70C9A86CFDE0A690CD4377BE0D91ACF03FC86E - 1: 405FB92DB5ED34B36DDE5ADA810D73102BCC7C4EDC56EC67C03CD5173EF67DAD4E9A911986DEF61636D6DF98603B82F4 - 2: B8A5C7859CB74C8642CF622E35A8624B906791A36CBC31DB83CE524E21F21969401768C8FFBAB66412A01CCA9C81CB83 - 3: 217B36937A51E70B3C70BB8C72A130EC09FCDC9F0044915864EBA7815A6A8F2379D982299C1F1A156DC377BB8EC1CFA9 - 4: 2D596E20A8690BAD631C9419157540F59E6B83BC1AD66D6FE5DBF43C582B0143A5740870FEA4BBB40D6367407DE8A5CA - 5: 1CD891E9ECDB3904FAEA9A45B7E2090331C926A0E703B365A11D4E7DA283DC7C766F3C1BAD0CFDDDA8932F2EF9390D7C - 6: FD75F6C3054F1B8594F382F0D8579116CE03FEDFE64E18190A07253D54E2ABD15DDC2420AE4FD82A861C97CC6FDD6492 - 7: 5221D7775F57FBA4CA33999216EFC52CA0864A86EB405B66C2113BD01054ECF0BA5ED685A6B96814269E12CD8FA92BE5 - 8: 30FF52F3A2F22105FFE8EB5B29597D4B00066C0AA94A3B08C4F03248DC140AE04F3AFA16B271A4D8587F748E3F766D1D - 9: 46C1EB8E229F47658289464D08CEC40BBA69FA914FBBAC2EBD74687891F86C6A62AA08831E0950DBCAB8D1D999E91F10 - 10: CC91CE0202A6990E188E72886C188DB46CDF5676702CD52B94479C2794184F6F6B8E2A298DDAEB0906259CD1DF6FD41B - 11: 5BCF38009AEE78EC63CBFF5CAB45C21FEFD60F3677B49335815C0C934C7F7BA79B0677F9B4E25F6953C4D15CBC340B68 - 12: 514EADF2B0C4DD12E4AF24FE28C72E6155FBD32D054B628EA64048EDFD70E761F569C1E97353F69BBD62E3BBB74C83EE - 13: 2FE23C76A46451BFB3B7247DFB417290D376B1A9508F7F1405889BC08330CC9C044643BC1C1B28E30BDAE7A9CD54EE87 - 14: 58E94B564EFFB88E622BBEAE5F5BA893D5446A5376E418FAF65A04C364AB1403C5883D49D655CF0C5305B17742779DB1 - 15: 33801F1B333CC7CC592ADB87415ACAA6D887964498151B94BB0F2347975ECB119B88045EBD1670B6B00A3705BFAA4438 - 16: 28835D49E401B7B0EC2C84B5B76CEA6D12BECFAA8D432E2FB0919CB98E95C6447F7C757B026C168B1DE4EA6F478B20DB - 17: 91203529A6044D17B4C782B4AA2674813F2BA11050B3A3BD9D6677FF84863F6D74E62129BC59E1D0888913B36139168B - 18: B0790890D7E952D8951D08C4183587206E530194842009D4C868EE902B3606416786F336FD964704E9CF0DF7EE4EF569 - 19: 4515BFC56710B63452E82A7E5D1838E18B7719FA2CCAABF0E9D43204095817AA5643622931EC4B9B5378B7FB9CB79191 - 20: 8F01650F37C4254EFC1BA9D30EC6E84F7824FBC34CFBB94BF60E758E52F344B29366D16529D4C204C675D272AC2D3962 - 21: 5E9CA7D3EBA0E5A9FC70523C9122BAED96E7864460DE13060A22635975DC007C7533B0387779BA2D2EA6084827B17052 - 22: 61EBC5C22E5CE2B706B5019E23DE9987EAF5EFDC8D003B4AEB7FDD29F6E770ADDA4A17283262C25871556C261C79F605 - 23: 59558286E872AD2227F02FBCC3E3D86E86355C2DBFAB909F2B2CFF493024C1BBCE01D048E6F3A6E666C86EC06294D91F - 24: 159B05EB57BCC17A4E43385F3BC46A5FD5124734568C85C5A52959B86765C0A4D1B7FCF987BCE48F407BA112969DBAFD - 25: EE9167312425A2E7D13E820DF3AC29F21E8089993154015107BCDD84DCEFE1A8DD9484C9D6B4950A8A7B00BF28B6064B - 26: 297DC21EB30242C6C845FEC6F8DE331E71CF09BEC82DD2AA10E069B828D7381D47664848C4DAB391BCF1DAF98AFA8170 - 27: 4AA8315602DE4899199941F9B14ED21CEA2573C3EBCCA81927DE6EFADF3E69E8862848D22ACB37793E644007FDB605B8 - 28: F56E13425CE8D01B5327922B15B81A68A25E8EB92B303042A586FD3133F99AD8B2D2DA0D5601D95D924D36D53C392EA0 - 29: 6787656DA62D2A547784DD67C01B22A8085BBD6FB93612C66AD9F11E0C13D8396ED6DB6F9EB85EDEA1B512D8AE90F1F7 - 30: CB6BB9F2B97844357595C9875DB306EC578ABC568F5DEC3A293D634CB0D1F04B1B7D33DED313898ACB70AEE94A0D7340 - 31: 91F1D8F995C3B78A8659E27368B2ED1D81C9E8FAEEE7C9D4530028AD19453937DE9C5C8D6B0DB4B1A1386A2E14C2DA61 - 32: 27A4E5B5E0D313113C019F4A235EABF3AD4C964624DFA8031740B82E858513858382D19378994AA6CC2AD0041C5CE87C - 33: 842C5F49D372F069D795DADF9357B450BCBC8F8DC2BD1637E3774FD38FBEC4AC31D08C3DB032E219A75A4B21D9F7B8E6 - 34: 3BE616F08B1B3C73747B0D7791E4870879B80EE2E42BA730C65BB6EC581CD90E25E5730FA115CFBE5C76C9AEE71587F9 - 35: E29B04FEB3258D932F873A78C84F151A6C76B64DDC91C1E410B0736BBC5770AEE800391EB81904C858DCDC1D9604249C - 36: E73C5661C4B94C067218C16539D70C65B48FF3563C61043776998D6CDA25AE869C790B4134A3128F117863F5D402DDC9 - 37: 8CAE539D4374573D76B5507F8C928E8874AFACE190B5FDD2A3DF515159A8928FB930E2E6C41B76EE855318E0E5244D3B - 38: C565AD8DDD159D90BC650E18A5214B42FB794B2E45242834D51B1D6F381EB20E4DF795A7BEB544F932EDB1565AE05A96 - 39: F078B06244FC71F84480D595039AAFC27BDAB0FA251AEC796B1DF42D5D12BA329F2769F2CBEB45144D688C2E64D55FD4 - 40: BDF8810F4E862A128DB95041C50546774489670BA94A1F3BA4BD24B540FF0CC2383C54C4DE75B66FD1F10E7920A697A7 - 41: A44D19FA05D1F71DBBD4B10ED60BEEEEC3EC6672EB7D7B7B18500AEA1689779CFE1E068CAC5302AD008C7274294518C9 - 42: FF7904A2133EC8CF6A462518C27883269BAE8248A8C50F6F7F905DDABFB5F5736D7DACDCD69603072BD23095E85B72D1 - 43: D73C738D076E9F16E37DC6193B98BD88548EA6B713BCA945C2FAC5B956F945B767ACEAB2E8BE30B59CE1D15274FFDF3E - 44: 51D2386FE4CFE73D68CFBBEF1C1C31C7DDEAC11329AABB4EE48A38B69F96073D829E489628D969A102DD0AA741B37534 - 45: EBDF109A7A48F8EE453303A19981B6A22BCBC1F0E108F196CD8FB613BCF5D9367BDEC76DE7B96BD5B6B61672A56B9427 - 46: A41072DD8639B99835C8BE32AB442AAE81ADC52A44AE4477FF2C0DA7D37F7C332CBD20A94E83FD6E5106EC1238B25D7D - 47: E6E3CBEE54A29BB62384BFAC735C287037D3CC3F32FC325DD3F88944CC730461621E74153B907A03C5A22AE854493A7B - 48: 0FE96FD8DA7AEEAAC4E3ACD688F34FAD84D06905E2F78CC3DED25547534A3EA255F9514BFE7899067531A172F9676724 - 49: BAC00AA18E64F93053F84CC69E32CC29D6E9D5F0C3E5765B631738A545650F7C5C4106D42A420D8F7F9A3E5B882446FA - 50: 5E598C707D6901E2C69E69562E597C533951F1504F5E69C11CD1FB2CCE2E099776D10F85D467520379C133CF2ECE1BDB - 51: 08B7AC513F0C78CA28C478B74C14D49A62F291CB78BCE87BF4F2F95FE094A3E24C6C5176B8A09920242E424EDCE32826 - 52: A37E733B02D4A6E01532938BE18719D80DC74C9671A24CECCD869359D960084F0B97E8FEAE52391C9805B91CEF0B2D7E - 53: 801C4E19E62A9DE32FF6E8BDE2153FF3ED55873140E81011DAD1C615121007399B6EED6102FC6664462766E699895D63 - 54: D680D7E7BB8DB2C1376765B0A21AE97A0F6A7B15F39BCCEF7EBD5F1552C8A6B9A06256002CE592356EF3A6ADDB36032C - 55: DB2D71A6B4EB44D1A09E04F3A139537FA790A69CB07F483C79D26D8B65B209F4564CE3A73AFEBC4D7B5AB937365ABD25 - 56: FDDC92175AE7AA88E86E5F579267479CB88F5B3FD65B33290E5AE2F1AF8E7C4F417230D46E83499AB3AF0FF8B93BB10C - 57: 19D9F298112DFD74D5D9B867561EB5B38052F6D5D07B9C6E6F3143773BF7005B3F0CF5F252ABDB6CF8580C85379EEFE1 - 58: 870D46C9387395A54E86407DC76D692555CC9BC35731DAE243E1EE914F60F9AA61A9129E8427144BEDB4BF97CC45C29C - 59: 36B766B9F923F7483E363FDC382547E3F0214B4DDA2D69070EC0B0C5AD2646D7B1FF5872E62245919D65F573E869C953 - 60: 2BA77E0254A38BE6B0ED52B3498DCC45C4EBE830208437916225B496A78BA38EDB7A1A11AEFC3F9DC4DD12D3C3E9FD56 - 61: 17CA8FE1AC268187121C6FABFED518BC377CC47218EB685CD94EBB9BCF030A840C0A319CC9A8E09F863D409B026237B5 - 62: A7A2608BF45D47EE66682B7E165EE77F1F2ED2BF7FDAD26D8E250C2CBDB6706C49B7792C95C61F18458EAAC4FC287C11 - 63: 7B59408DAC644072EB3B6806B514D939B0F4C2CD634EE996820468E252D1D0132CAB9B1EBC2B5CC1F0779D4CB266F655 - 64: 69D24A303ACAC6AA37A537B50EBF8B1489565DD09964110104341DC7199E628E94A51CFD135F62BC6A1E572C60758D4B - 65: 208C0C61706AECFCC650BF864F8BED282992AD6951D07217F6BC6276E81CCC52171308114B920A9C06B4FF7D3704BBDC - 66: 5B3312273491108BAAA9E52E9CC71F5EACD2EF421118711EF2BFB6DB64A0D2D9D701DACB9718E366E153FA6E728A7FDE - 67: E9E1B82A0BD09FB24113818A86219CCBC110CEA2B7216602834418AD0B77D86605E2D56099ED23863A54FC3645148DB5 - 68: 9865998832B5E99F4137C347E62E43866DE7D9D779BD7C4EBE4828FEBA9047B6D76AA1BD19781E0A1585697A62571946 - 69: 3F36314DA0CF03BBFEA256FC789FD237FDE047D3D3C40C833B889DBE7E09B593DA0DADE4EFF76795CDF4F4D7B31FA19E - 70: AB3B29673A5614167881C861B9FAF374A72F50ABE286E2389EF27ED9FAD1FBF70D2C2F0A66E4AAE384958D695F849A75 - 71: 3DA043DC6E1D59D3B4C44472CF83122BADB13D5BE5188D9F1142E91608EA917E6A313211B1FEA4CCD83DBF54F8A00B5F - 72: 4028AC4C3131F1316D214E30DD87C58103F410958600D55B32C0CDF050BB8C899685A3D2209A2928FE70772A5208B7CC - 73: 5538D91DC6EF1B34E6783EBA7A5A02229D98E71B6409F85AE377F961030EDEDE648ADD17CBB53F9A6233739A2096A381 - 74: 7F1BE0925A10996760F348A593C71D32F1D5A0C0EFC66E6567928E8B4DF906D2DD501A7BACA16582F73B94981EF4E98C - 75: 09CCEB3E7A56CC81163BDF8D23BF75725318F039F1CD13B21CDD9B2773545818F4CDA4A3C5C35392ED79460CCEF73902 - 76: 9CB5B47EE21249863C996A9332FA247C3B62D9295C0A62F6F4BA74B05152AED6D34B626F1E1F99B21167555C750D03E3 - 77: 8B01F68B62698569DB267DD28636F7F61D358ED9F44E6909B347A3BF4ED262CF653A2378937E92F2E8A2B5CAFA8561F4 - 78: B5888E0432D96E9AE49C93F4A803D1F56D1D6447AF8FFD7A4720625C085FF02CA2608706ACDA23CD21687C51DDC46FE8 - 79: F445366C4AB6692D965413E4485F7B75B9EDEEAC405657A8F818B650F0CF4ABA373D7752901B7A2A48651B5FD541C347 - 80: 3FFB363ADBAA57C8DBFA86A3E004B0D7638A51B3CDA32D830DCA800BC14761C0DD77B29A2C50DB6BC4C53C7CE4775032 - 81: 95C52CB42F07E45E9FA9399A53B556101509FB0D4C3C52CA74D4EADBD7D5DC16276C8D0EDEB2FABDFAE9D22B9EB1F5BE - 82: 8C4813B4D22071113C4A2E933B6B26CCB2D51FB0382D5872B49E17BCCD60D1596B582DE272D9F4195F21AE5237D2D231 - 83: D3142DF6206FE465616E7B803E40FF6A2548B9E10D0C216491992E862ACCA4E83C29075F77513141A1A287EE535C267D - 84: 737C2E0601033B89EF157A8C1A030C4574F9F2A427A121BC0C4DA4AAD94EC97F2E5DC4DA4E73542550F9F991D334886F - 85: FF6A7200EC5F1BD5125F671CDE9CEE485E8EF6EAA70EF7A679F5F7FD9ADE0FF6AAF68D2AC070E4B37C857A62C38CE848 - 86: 0EFE23704DFA29370503A1D22A26B5126102707F1F761FC4206DF6E4E444D7C4E6D7BFC9233304FADAA0CE1A7000FAC4 - 87: E7819E9D2EE94AE4C6F496991138EC03BD94AFDFC0867A186487F9F017A5066370F3C22317821B8EFD892D404490BDF8 - 88: DF4E6F26BA61FB47BDDDB65B7A47A7DBCF5D42E8191A231EC44847587BC9CFC581F0104DAADE840A123713849FE90630 - 89: 86DD336CFCE62C96D1D88E1E981C8E23E5CF65E1BE068581D7ECDA571D230B7E147389DDA6790F8A94FE379B10AB21DC - 90: 99BBCABBBCA80FADFA8A982F735305D686EA0EB8A241AAC4236B03DD70266A2358031FEA4D24A489EBCB9099EF5E8906 - 91: 239C8F1048675E78F2EF17D4EA0EF26619E71D904C6D23C37BD60F4D10DF8F228DA97E6527284B571A6E993709981468 - 92: E6D7E1D6E10DD40BFF662E3B8962FB89A95E635EBB7735DFF56A1EF07158402B2D007444DA3B433AD313D5B772FF88F5 - 93: 550E96D2C9882CA386CFE07A2F9CE2C9E81DAB0722F4A1F407C792B0039895B8CDE1E1CD460B20A58957C38B872357D9 - 94: FCF3F86603D252857D173053BD8D7E1590D975DB1639BA6AE077D644EF9ACFF820D0869A3B7452D2E23D9512E7B48A2F - 95: A77AE656E09EE6F848CDA9DBB2FD38EC0C6CA14E2540935C75C0EABC8CA14FC00104F0E41A2E87C6BF017CBC3A90868D - 96: 8FC876DEFB536DF7524A6DEC8B19EDC36F85A55AF01A23E8D271C790E3D6FC7C171A9744822C632B92B279C7A7A10867 - 97: 78BB1A3BB1BD13D319256E6BD58C7B03298E46B5EEF63085677C0023F3379B5659C8E972EDE222499952DB7A19544EE0 - 98: 5991F33DA48C7069F6FAC12F5B99B4F23FFB157D43BBC3BB43F9BCBC0BEE2991EB23B9B756F960BF635352F430D7DF0E - 99: 63172BE6A03A9D0F1F5D51CDD356CCCEFACBAB9F6E409F70AB74146E502F932CDBDC5F44373AE8E853307507F3DAEC2E -100: CB8C97ACB9BC21FF41085FD7494D963808766497CDE31BFCD9133E7C43BF6240CCE2C5DDE174FB2E1992ECB38C6E43A0 -101: 1F68CE6F662FFB75370CDB6ADCD3095FFC7B381BA7B4729004EED6D742EAA0B807CA23E155816E646F68347EFE7337E3 -102: 1F9111B7FE153B1C890F3F8B6B9E7ACE952C427D05F5FE1D8177B86A3DCD88C9830FC344F3BF1CD33B5B8813CAB0EB78 -103: B089207692FA237DA5B8134993F2EB6B302A77B8A13BD53392005443A43F687F52A32B470A8863660405767502907478 -104: 3659E60A05D94F46E489ECF9E0C916B984662951FEC8D0E3F7F5ABC05CA115DA7F2F9534A2880DA46264DFAC1D3F6104 -105: D028EB286C33E9400C0B3C6242C4F63F062CDF92A3C5C889CAE2A90C651DB85FD0AABC71F3685D3968C9D1A22330B0C0 -106: 51F3DA297F0E56E66FB301A840BC92BB504D7C4BE80F7DD358B128B64852E06B40720A6A2895467B92346C00CDEC6CA2 -107: EBD5BAA316F80C25A982FD9DEC059943956B3F72B1DCE0B3EC5C2186E049B76AD1A731E1A345B2ED980D04832875160B -108: A101C6E0AB891551D0243ABD2D1E15E201280AAD2555BE16E19A64F91A6CE5AD2D710BF163219741582DD3DFC9EB1CDE -109: 191F36096A116F4161FD362D1119301B23EA55ABD1B0550BAFB4E2995CD23EDC18A8E5950DC8BFA175B9FB160C5AD059 -110: 5296048FC3B99A98934971F82CA0E229136AF8E9F73FAA9DCC96173EF0F637FC265FC4398887CAFB595F0AE7E2D96700 -111: 91A833E586EAC25A4ED3E10FD1FB5727A79A85AFA70E2B3F0484EAFE847467E5E235B95C6AD8363FAD833CEAD226C27A -112: CD61E2E65301FB751DF317EA7778137644DB8D91A1EC22B1CF4AB11BD3F6F8657A6CAAE78E472DB42A1B56035B7F3CE7 -113: AF42BFED0ACA6A82B1C17E8C32DD4E9E329511BC8230FBE4CA7B1559A6695C8AFEA016A9BDA69CE0AA8A2268939AD34E -114: C05D9A6BA6FD2419EF8862F0E04FC9D3BF88C13C078F06ACB4907B95795B87F6BC2F4F11FE54D5E2C5D80EE1BCE0ECD4 -115: 7B2739239EBE27540425E6CF0F86F5A4B378F28D022F82246D45F3702597D71E002BF1057DE77E6BF11DE3EA82D0BBF7 -116: 03C894C39CF2E7BC1BC0842EC6C1F1BA1C68B56F5AD497F44EB75CB6A853629EB406FD87EB11396DB54A6F77EC43F814 -117: 4A0862ACBF7C2AB2B0791424E028C557B819EFE12BCC4BDBEBAA68519A4491B57F5C721270B51A270FDBFCBD26459BE2 -118: 12C0CEC2065DFBD52AAFD685F41F7487C3240E31CEB5F1D361626940AC537669C44C3CDF5B7106032E37FF11996392E8 -119: 9D54F93400A6322DA80297CBAAEE69EA1AB96B5A6C617C49DEDFD095BFC5BAAA85D6425A208FF26977974E6F94909A02 -120: 694CB2ED1B1F90C2E95FB0524300930F9F106CE398F119058432C3846945D5D29BFA2CB71CCB4AC5D12D7C2099361D67 -121: BF16039CC1EAD633AEDEFE62DF92ADD9EF190B0165EC68EF821BBE83C59F9D5ADAE39794032AA9487EA0C8D7A7B4BE20 -122: CACE6CB16361ED94FCD449E0E60E1D4CF0EC754595E6E6F2F8BF72926823D0A74105E8C4CBDEF6D24FAF37734E0EC9B2 -123: E47D98969CC8A80006A31DBF9FB973653EF6D97EEEC13229D6D6A187A595957EC6AA00E451979EF0F92E10CCCC204575 -124: 0CA28E8E31C61ECB4C30F83068ED5A339B2CB8A33CD73FBFF0E6670FAF11755C9D901F938505D4924BB69E5755B337F4 -125: 59FC8F1F1435E8652A377C6806A14607041BF3265D8B500401CBCDD32351973A43D5C57866FF1634059A308B9B2D7CD7 -126: E6295D9C4532121628AA1AA2A600BB1F6C65B6F09BCFA3FA5747EEAACFA81282484E6B2E813E2573BD737F187FC90C79 -127: FF25C2A6FEAFD824D887AA52FBEFEA1FEED316DC5FC28617369071CE35513978F2562CD04344C76505A824FFF2E1D4C0 -128: A89FDDDB0B571C2C7D8FAECDC193F6BB97442F6557088673223D0D53CA6E99854CA1076CDAF2A54A9CCF96A94C19E46E -129: 33B984329FE9BEFFB3709F64FA523CE1912620FCD083C514CDC701E05DDBAF2946C9E27E21B306EB264C65229FC98897 -130: E50B511DC092289CADF662768E39CCF8E08ED101368B6F9D5C30371C81B2671D3420A5143F9B20A3F8318C569FBE2EF6 -131: C568C70FEF2C81770892B919CD5C7A55D61A3CE9104EE9677471FDFDC8A90FC53453574B86F1974894D1563447C5DAE6 -132: F7F55541667F3A20C2D6F3C2098D881581B5A35F93E68F10FEB84FB8ECEA8F8B9A5D85879AE06B0B50E8601A33980E0B -133: 197D0658728C65838A42453216EC7429ADB02ECB1AEC2313C79EFE9F2FEFF66A6195B86B95B7CDA3761F826A3C27C767 -134: 1EF0101877543F08EA789FCE62114E6A33229ADE314594A8EADC0CE8D1E64F56B03032E654CB6467672FF539B03B589E -135: 2DE522B574AA46E0EB7160FA3B9AC358213044E58057BB57B3368D9213F8B88776100C8105059B0187DAEF3656EBAF83 -136: B975ABFE51E485314D4577F7EBF941D9C8A111CC919DB00309216F3E20ECB07C06E926E146B0ACEAD9FD963A58F3304E -137: 3D7852DC1A1746B59967320F436C8AD67A204582406EA8E6127D09FF0A8545F3DC298508CD4BC10274D69A1B18629F82 -138: 73669086A40A26AA20B63437FF5E21C4695A9055FC9C0E0A33A252EE75A7BFA2D550049E09B86C10594BC4FD39F001C6 -139: 8D53B12101145837F94A9623DA67013FE7EB37D4A40C7771611AF1CAB505A7C5F7DA92CF969873BFE6E7DDB354AC61FD -140: B580DB6F46C69F1D783C7EC331083085D35F5CA196A8BB8814C280F998D99E459AD944C7B0B9F4F381D0C59802C12503 -141: ECC17164BFBB5C0DEF31C384B3EB4EA6DAB146031E317C8B0BEE5905E751D412267947590422001423DDAB2FA1DF711E -142: 57412B38D69AA64710F6CB9461C61D7C813D20FE95C6FE96FD9821CBC83B48E04ACC34BCBC6F0E37AFD4916F479381EF -143: D9F1340643055927CBEE42E024024F3BA34E752D410C1574CC07B93F3D27246E3F33A70893F030D38E416526EFD8F58D -144: 3058654B27C4C374E0CF19EC648B15A58AC95BED6D9059AA90016454D3A81E740534AB1FE3B9D255F843E68CB8697912 -145: 87E84270AA2B11131D9EA7999F7DCB13CEDBAE1B181C099633B1A2FBBB9F41D6C33117613BFBFA376A8FF78071F8A73E -146: FC629F184B0FBCDDBC314C78CFF3AA0C4E83A0120A8667690BB854FAFD685722179C3170ACE7578079C4C29D426BB1F7 -147: 924FA77295C625756A05AD887E401DD2FCF99492C985980876F5EE4A3635B347569468CB960F568986312B70BD58967F -148: 67E246939BDE9A77F1CD5D76F2AA83C285285A548F41B471A6B6298767CE76F3200BA92E734C89BCE9322AF67CA80A46 -149: 7B990DCB4B1BC48FD76A011632382F21E44D8D5E0BAB87EE32F06A2E6F0E917DB8AEC4E86EA7D2BB4B90799D3560B80C -150: 6DDB0A9ED2B347969FFC0430DEFF05B9864677F4E00E6C22787A6A7A26FB3BFAFFE0EB942A3C27AA0C05A0C94E09AEC6 -151: AEB5C76CE373A45D9E6A870C95BC9034BA82773E9DFC8E530A88F5668D6C375A9BCA44CE7661D5CBAE90FD42DF6B8128 -152: 09071AB16B5746C2E5C020B49B8367E8C7A1DAEBD90460BAF5A2F7212ACA7631D6EB73A4C5103D204DFC7A94CBBC39BB -153: B538DC93F36CA59D59A38D3418C936E7CC0603CB9ECFA7453F84EB6D20D610C63C86B5DDF0E74124A2039BD46E2E1691 -154: 82C1E23F02A3466273E960D68D605A17B2391B87EA1CB48CB64DC0EA726469D7E0B2EED818C0CD57C7169676C3FA83A4 -155: 7A1CB5ECF5993C4F383DCF9CD9F1A6B4BC29E061E229F7A723DEDE301F3229223656733F41562BB5DA4CC996EE972165 -156: 5DB4921885637A9465604A6F3F3A4461F9D6D2027A64E30C90AB9AE72FBD9F809A7788CDE1063081F91C9097E1332E19 -157: 428A24F58324D45265C1F09C84B0F2E669AB54087105E8133268C7A70C5C00D4E7961A36212F2588E6DC8C496CD53CF6 -158: 5BDB40ABF30E19F8382378FCC4A1178EF3653687A753B3D4E03F5D7B190675EF5EA49219FA9A14BD9F2798B3DBFA116C -159: AD7EE03FBD15375502095A5E1B7E87BB17DC56D9F65A275DC8FC2A02508426AD011FE860AC1EBD215E1D3420CB8760CA -160: 40544F2F1DAF8BE54C01E71997270D7905384877EA48A27DEA7D7FA9720042EAF63D1CE91B511EF5F50A88752FB74CFA -161: D53D537C6391A323618CA0A5CD5120B58D3644315CAC34467A347B23F06AC61B0B670D73CE01E7B5BB63373EDC2F2121 -162: 9B2039972A8F0570A144EFD7382F2D6DBF9C2589E46A417700E3212FEC2F89030482034D2D0F1A1749908BE022315FF1 -163: 510D4ED3CE4A8908FC5216E727F4B66FD052C4BC9ED7D39C453A83B9CE6B33C6D7A509DF94C835E7E1FB34752FF0831C -164: B7259587B389C863EF3CA2E412CF206CB3D4E0D393DE042198DFF81AF9B32881411B75E8B63A03EC6106783FA2ABB634 -165: 028DC9C66F01D09133106318093D31272F15E103C9B298822338BE88385CCC5CB443C66971D099C4782E1B8E5BE3D205 -166: 4884C073430C3A45968ADDD2BF09AE87CA27586AB8646E8372FCD8C8A681DE2558286ECACFC3542CD35472AB8B44DA46 -167: 13863F78EFC686192E71B5190A8A6C94D8314C48917ECBD6D11555DB900BD0B022A2A95E96AE42CB050C9A79A9D20A3E -168: EE014F3121B1200DB52B7B4537C21709152FF3C3D37065D86007691B861A2462942A4B26A3C79CF2CE8B13BC6B8EC985 -169: E2E09C38CDC48132FF2089D4E014E0F9998A2F637605E38DE6846EBFDC90DF258CD1E3A0EB4A01A25CA92D21FA296DC0 -170: BAF914750ABFCEA813F14D902CE983E9C6B953137D393ABBBFB17E47658A8FAABAED57D9B5E8304B11BCDD3C83A6F0A8 -171: 1219B7B05D0BB6F4803BD2E0A89F8429842C234085D9BDB81ABAD29CA1C5096D0397AC2B1621F5CF9C217406B6B6EB75 -172: CC6267E631520B0C225832CBD2AB1A1FB79F97F6B7045514F331C2DE2A283A5FB5DC5802E6A9A94B670BB815C78C7C22 -173: 6484600876693F2077772149F99E696125887FAFDE0994A69FE37CC346D0F84B33E79C295959CDA12ED94285BD7B23C8 -174: 7C652527259D05BE20884C3E88A20695AD0F4F01CCE6BBEC63BB7B5A9175E73CA11B5E633DAF63C6D86DB86AB0643847 -175: F059A739D5018B1B7D9C315FBC43970A9D4DFA9DBCAFAA16FD3760B1D817AFB03C83B349C0A39A69474E98177E47CAA9 -176: 252EC8396CE2496889594D21CA2D93CE10E4AE98C228C099DC9655B7CEF6C2658C2AB90F6F3038CB367AAB0D4B0E087D -177: F5353252F128488025CD20F5E76FCB370C69581200B067E32B520E5ACA3080114933D0F34A15026F212A5B4DC0D4FA9A -178: 20DFF2494B1101D056CF9D1CC18E387634C416960B014B523F993EE08DF25FD44E98CD064A9E59A964AE57FDB89E0CA5 -179: 10865C0FE2C06044D06AD9E9715C695D5B8C67E94555AB4EB3CA103076288726F93EE7D09CD1468B0A64DDEA658CD48C -180: E0C4F439B3756F7B30B26C7BA0072297065F084963317AD70695639ABBDD3E8353709C6B656F63B6F48036BB4189F74E -181: 2FFC1C68989E2D6A0EF78C68F92950B8FBA12D1B67604BDA0B8CE227252579537512D911D61092A3F17B16118C1DDEE3 -182: 1B950679D834DB9DAE390ECD2EAA7A700EA2782F91276455FC0362804FD75FA212C7929A0169F8EAA80EDD108E4005B5 -183: 2D6492B81C21DB1A8DDB36794D869702E82DAB21BF773CC5E195DEA0AAD3C97179FCCBA21C4FC8C754DD3CEB3E426E66 -184: 79E81238BC7360E9324EA6452012CF14A949DA83E8616D7236C6872D835AEEA86165BA363311FE9BFEB05B4176CCFD97 -185: D7FD84A6267C50398C2D9F71DD923CC337D763AAEC3FD6004E77B3AC1E607838D0AFB617E7C82AF606C99CE5A8B2DA17 -186: 87AFCD90D1F35801EFAB2FF6AC07E279D9B0C97B62A51B854239B4E06A0F543E7F6E2FC0E5454BCB296241791A63AA1C -187: C01C823CAC285B54114E4CB7D04EAB93A1A7154E2AF7EB7617592512815D9D19553F7981A54121828DD001BED78CCF25 -188: 4C3285D910A0B6E3A5872CB36495F4BB1F1BA32946DA591FDEFF297CEFCF117937841877D1289DA308BBF7C3EB76DA28 -189: 6659314C927D903D1B009ECF0767E620C18F83B5F874AAF30FD8C2BED836DA56B93044FA5B727B9FC08C54B16F58AF7A -190: 7E159B967CCA37E61AA5EB0BADF93D068483CB44A8952805C517B934B7FF355214C27090032CCADDAEB6B164A58F2187 -191: 578CB4E0F032C45B04232E8C03B60FF5E02F22D81BE734CDE0AC9651F2694FD11BB2AE04824AB2205F4CF7ED548F6EDB -192: A3999E5672A9692036898D2539743542A8507F8C046DDBA553A8D68FED14498330910631A4018BF4F3173A846FABA62A -193: 0FDD9D3A3C64F995EB95E57A681DB55F66D4690052C994E855D8AC406EAF87E354934FB806C7E6525FABD2B79D2F36E2 -194: B0FE744FDD61663691A75C806038394636014BB35C1DEF9CF859FBB5466C78B3C3C67AD6E79C76DAED5BE125F8FA32F7 -195: 7F99B051EE0E0B89590A85D3689340A06769CA0FA6A5E5B094B899C05F2FF68FE7945279B29B216D5752AFFBAE93FEB4 -196: 8BE13C8CEA70655088B3E31A0EE9336F134F6B6EBDB4453ADD10108C0A59CF762DFE3595E48A945ABD0396320384E079 -197: 73D2D9DED1378CF9D626F84E90D91943EE61A1D184F07847EA2AE622F79E3738FDD7642CB7829B17FD2AC54A9A2CD903 -198: 0B878A27CE393CB05BB6323C531F358F22301D53161E611F67B9DE4BDD4926B531C168E15D78EF3FC6E76656B892670D -199: 1FB5F831279660B1E77B6DAA1948EB4931DA9A9D2FFA3225FB5B89E1BA64AF54F3F2CCCD22293226A362A010090AD4D7 -200: 6D8C6DF187063C47E297BA220EBE168161D795B130D364D9409CCCC53240A94B24E2D53C1CF8E4DD6055B332A6FCD1BC -201: A845B33749A6DC99886DBB49B3A9BF030188D518624D5819C38AF04EE4DA348487CB6D953C20A90CB7E8D3C8E9335DA0 -202: 1B30ACC8AEEE974F8551E1C545A2B3C55867AF9285D90BD55F5C844BA4C716270D62FE4CBAF0D0B1E64F059233F4722D -203: 20A80BCA843FAD7CD25CCA2298785A99CAC0C390AF744E64C2FBAC3FBE0F1984E5351D2DE74B712ABFCEFEC8CBFE164B -204: 5BEDAF458354FEF1B070F994A2F0A00A015754FD0CF905D082B4B7034C0DBA0004025BBBACDA06CAEED9C93B1F1FED03 -205: 2DE6E7673C65F52B8511BA04FAC2ECFDD163553553FAF00E2F921C6F69987AF383302172EF5A590128368702F666534C -206: 1DCC4B2EF1614802ECFB58E01E01F6E5C44308AE26C1E1115D936E3A0B7442085AC4AFC0A6D800FE8C37C834900FF824 -207: 3448D4A17ACA2646C77C4BC6303EB2F98DA1D5CF2F1E99B0F825804DCE39A47681FF41B06EC55420542A96A64BA95DE6 -208: 1D249F8DB91211F50F81E216C74D27EB3F02746D1F98AD24DF4271ECD65AEB6AD2A507A2FE2F1A3B7E0B8B789090BA95 - -HMAC-sha3-512 - 0: 607063701A568559228544D63A27D3EEFEECAB50933A989E8A2F5A6D0741A463E504D4C03A1BE0E8FCE99A20368DC5AC0F60D90CA0C48443F81A51D4C8AC4A74 - 1: 518958867D49C5BB04C52BCFC355D0B18A92B7214976839E0EA15E0BE83FD215D6DE2C1676A00D92DBB670B752F16BBDBDF37509AF380E14B566F5D46FE1E91A - 2: D74E78A3C4A6A71F8D2D16A41BE30399DA21718FE668D66598B49CBFD4D24EA980EBBAEDE671F12D01F48B6C6CB70CD6467AACA5E7338195137F899FE7B7F03B - 3: 23634DFBE24D8CE8C5A5407632E9F14DAC79995695D39E0B39F817F01A45BE19339A5BA5812683CF81DAEF4A73D76FF3E386D9CFA78C4204DF10474A8175BEF1 - 4: 9A0F5434BAF8C7BF60CDCD7E115BC1DF46E081690A85E706C844B00BA5C314AAB1B2053A795169595FE95064AF11C819B6F7699C7BB1787967CBD5B8BC8B765B - 5: 52CC5A5E5B44E77437FDDD218726B524FE2671D6F183851D4952C37AF9EEE91809237C88804791F0470084721C3A576A17B4F035593371813CE11129CD703823 - 6: 2C2563F93E4CE7BEBA6656A4BF93BA6D235FF6CB0D988A73512D3926911499BCA0E1F98EBE58E4615268BE8AAE19F75DAAD0EDBBE829259612165786474523A4 - 7: 2222101A59FD264FF005B0B18FB59723509E95737299567E32AD2F04A4E5722BBFCE67BDBA2B9608EEB14980793F49C342EE82BA667E68A08282C915CD5454EF - 8: 60E480A794F5C5E6785CA377D789FCD1C22EC85BE9853BB8C24804DEC9C179BBB4F6A9D2D0E89894561C8BECA8563042B96C815BCDD02DA1CD05AE7256396C61 - 9: 06D1CD3879AA2E196DD81E9F5740C7F60EA0D140B424A0183FF536FE6197B065033B31F755C62FD7FA853896C1433536D7AA3F486DAC868822B7F6E5D8B115AA - 10: 3DEB62CDEA3D8A58535CFDF2716A6512FFEFE90AB1A30CA9DED0D5D86407F0FE5541B35A1CA033BA7D3850CBE804241B8B78980FB4424FE6AD7DF029722979F2 - 11: 48757ABD9FCBAAAA71E91BB6B6B85323EE8423B93404CFCB6581CDA1B68B843F25B18EF7C9699B38FF8A2F114F53FB87BBA8714BD8205F4CC18932B6B0038729 - 12: C1D5946322D900C51BFB28B8519FC88C84F3B190A073F6C0DB8C6D5460817D185D9C19D939CBBC2C6634F544F59120782940443432E4B43D47B0F7B936441452 - 13: 8989CA4C20856CBFCDD62C7BD1C0EABE77C832010B5B2A493B805EBF0CA313B30BB1F3F3833588D67517CF524B1A46D2E825C584E2E681FBB80AE6C827CFA604 - 14: 023DC361B007F52873873B28CE6BB94A9262E5F7BD2252B2F75CB10EEE2B34982BF8167BF08A9BAB42B899591E903A4017DFD0E7B2C3754FB23D767F0BB09DBE - 15: D6E2962C2AD2CE76ACA3D9D14A32ED485A04D37BE939D240626C058E2F208B19640911948901530A32C78D19A50D0DC6A5035D9B12859686DF8E6FA7CCA7685B - 16: 019281117A868EACB7ED5B7E251FD36A5FC0405FCA5C484D86AEE22B20B675BDA26CFE622CBE85E3F7C547AD229A2A913728E410E0AB344D10E89EDE65D1E6BF - 17: 0851CCD83120791AD06E52DCE7993FF980157ED918F2EA262A349354BE376780DBFAE7BD04E4734AA333C1C2879DBC4FB7273F88C114B036EF8882E4BEEB01D5 - 18: 7D24626AF0DECF1DFEC5862FA2BAF83525E5AA62A3A1951C1118529F3F5DC12F1B918D02AD55C2C9A4502B5D1521EEBBC7BAF4E2EA229442F64D3015D202D209 - 19: 107A9DE066CF944A939024FDB1588501B83D9121C3B01E63D72491D5715067F4477EF88C2BDD335B498E3EA23068B83D0E641C5AC34FB8B11ACCE93CA5CF4193 - 20: A224DE3438312A8D905D018F2D4C4EE57264D91C84A367AB4BE410CDD23D43E039BC2CDEDCB70C60E807935FE1F6A8F9B913572E5A3DE6DB9027C1B752117786 - 21: F534E03700DB4466AA29FA903D1B87204D3EB5EE214DCA9B25DEB3F1FD0FAABCF9F113C03A49C022BC45F74304E616B61C1AB5130101A9DA99491E467B87763C - 22: 052CBE4C2B0E9D7FD911B80D0E9549D9016D896A35675D7A44ACF2A8222F24A2AB31CBE9D46698F8EF267814A9955541F50B2FEFD8D1A3243C1726B2E57722F1 - 23: A8A686437589EABBC9019DAF5B603393356DE6F251F274D290B210496D5B4626D4E81918DC5F4D261B71C5278D7A61A2DE5B3C5D024DD93399FE833E199A81B2 - 24: 9C22F9F56A255A15D9F7CB0F246B1D939CF22F742FA3F9DA218D69281D0BE850B1117455C13DBA690AED08A9A512BE0CC28A160CF80002A8FA868F8A299445FA - 25: 407780D19554DA490CCBFB98DC2D09693EA792409F1ECD4ADD32FFD9B586A6BDB14E1576BEED920F6CC65FD0A66144D2AF69210A8EC2D6C0EF3EAA032E972B30 - 26: 9D7B8DF3A65E5577A5E298B28F2FAF62FC535376C59C8956D3DF408CCB9C5AEEAB7E70E6B2709E91BB2FCEBAA4639DD0CE122E74F4741045E209EC68B7F27F71 - 27: AE8412C84CF6248D0B54A33B250D44D2F3451D1AEE5C04907BE12CBCCCBA0BA9D0A107F0746B6684064F3C01E300EC04AFF4EB5461FE3C0E92AFE83446AF2A2A - 28: 349F1D06656328D19B0CCFD438C7D49DA81755D504D01A8C5724080DFFB5564CD4E9A71715828138123678B4F237A49DC0494A40EC55450DC9879733C95BDBDE - 29: A47879EB68AC09C02362F5A4473ECDD87ECD87B78E916669F15157F752C2C6CCD902B2FFE9A15C7C9FED7B2C81D6DAB8F1FD8A135C8D952221EFD3E776D435DF - 30: DC20BFDE7180FCFFCFEF3B4B7842504C95D4C0F7DDE990A6489F961968D518C94404500F489B1B3CFA404973D5845DD956C18BEF2DE701F26C0CE8EB11AA408A - 31: ACD92AE66B7A42D4589CC33543C2FCB960D5804E37E456157A3C1BF99ABD2E077118B016529F1E68AD71B6A1A241E2FAA7D44BC9DB245B91E088B5FB1F824D5A - 32: ABC093135FAFEAAD1AF51E3C6BF2E5DE22BC81E7D4AC65712F0B09FD9771860816673E4738E280E6DF00F2F2B3490CDAE23036D3801FC2BA6B8CDF7FA59E3EC4 - 33: 969D35418093A58E650E19E9917A3DA6A427B8A91EB1826201A94EEB2F59A9C41E8798FE82633E32FAA2E700FA31647EC14EAEA42306255F6ABC8CDCF50F48C6 - 34: 434725B4FA11B833E5B0FBC922160E8B0459DC9F5DFD83523EA0D0B36DBBAC4D41D13C4875CAE177E4610E005582C6B18248B9F728BC3DB0B77847F7800CB451 - 35: 706186D7D5792137A90A0BFD3F550A7EA153FED6F925342738B01CC61067D43AE1F641E8979D08B0597FF54E98C01A46335723F17999E5A830CD3AA15E6126CE - 36: 3BD4387B31D794D1B66F1D47544B9F708C326DD6FC5C5D0067FD95193BF10F1E39E42EDAD18E5DAD57FCA8F074F2BEE681F6C42A98737D90C8651336D8AFF9B9 - 37: 071C211B122DB8CB871A56C9F02A7649A26FD13D007BD3FEB1F63AC2BB78AD39405E0C4A846C33863F4C28F0DEF5536AF15F0D411D1C6FC6A02468BB46CC25DA - 38: A9DCACFC97BE053FE0758CBCA3014A4476E75F223075C3A8E2DD594A5060344789962FA186F28508E6082CCE461AB1EF479DA6D5F45C38874AB9479AC86A04A9 - 39: FA5701F55087B657B470D02968DDF35229680B0B5A7B7D7873446F69C05F5BF0228163318E93A52F2245D1A5A523329C2BFB1D7D7B517DAD14995DB3F5F2C049 - 40: EAEA5865B5E17476734E0CB5B2DD9BEAAC3DF09C651D53524956D4655487D96D00A63AB7886DDBC9DBD9983D57BDBE640D5A7E71B8AB76683DB0D7072D1DDADC - 41: 83D543715F749A84C858F56644089C338BCDFEABC7A69AE810341352B9FBE2D5801AD2A28A1E12889FD8B999511B4C87BC0484C6A63E992AA83017ED72A88302 - 42: A58DF4A14438C048C31BAA80F2320F165BF4EA00D415B08387732F3C15E03C87F91E412A73973D2B9E9A49A4269C36315DF7F7C4E890957B75273B501B56F8D8 - 43: C063D19169D7606B2B48352E37EE591E79FCF010D4D3BE6018D2B1EA979166738625D0FEF7C5CF06DA11D1120C0F3B301BA91B514333BE3A28CB784358423800 - 44: ADDC3820BE7A1605E39092B7578D515AF482937C1C99117CCE7C733D622D9E22A37AF8E8BDD31AB9D23E00C4692FD2D3C7353CD162537E93A6EF37E4F70FB3F3 - 45: 72EDC8787B0C405D02F8C9DAE4ADB5DD624BA1FBF1D16F52B1F29602C0C4BCE5A5559BC8C35E98FB08FD73B595B0DBCD47F6C96B8E6EA397139E216D4BCA4545 - 46: 31FF422F0D8916CE0CB785647C4CE1129449F5E45F50D8982FF8FACC9B6801F6E058C9A143236B25E7038A2955CDD7E952C9EF68A14CCBE4DA2A9844C187F7C4 - 47: 1A06F699193CDDD7D196D8385FEC20EB4EAF2D75A78EDFE4ACEE7EF201058DBF1362670F9FF954E2548C9082D302C08EF3BBFA0FBA5F0F5003D9450F2028C380 - 48: 521010AE36C67DABFD13D932092814CBCC6FD33D7AF4685BC50904E298B9DBFA52C361E2ACB652B11DFED8A41FB78C526CAF691A37C73165FBDEE5231601E59D - 49: A98E15D413BD770699193D33DDDAB31F2B04C903FF856B6340F0E787F8302CD95D3A752A83E1E5F787CEC3E96118299CA539B3F146759872FD5BAF408A105317 - 50: 73A7DB7E1A345B59F94EADA1B291A1CE4AB02D11AFCF5405E9A59BD7247B45D44C587AEFD49E18179FDAF286F96ED392FAA20D099F5F25CFEFEAD4FD66129C7A - 51: 20E13570C79EE803735B030591DFA13CA41C4B20122327C60BDD9234B66FBB0243D99B1E752DE90F67845E22E677F11EDD15C01802A3EF493A613B951189395D - 52: EED9B5BF830F6B0CA03899009511FC52F6D254AC4374BADB1CF1D1164FFCECBD2AE3EC216B623E56ECE34FDAE922F4FFCA0E2AC64E6E85F3B99BA37FC0A93935 - 53: C20D60FBB86982D29019D36832E5804399E1A005467BAF13B40EA135C557DD51F4D9A065B1B4EE985578DE6498E5FF1C7E482253E66706781FCB4FE57F9FD79F - 54: 908D720BC0F0DC7F881CEDC67BC6D056E5578A5999048D734D9E9E0357B1011B83B6728BA3068206EEB19E8357DC356239813C15E70A25261FE18E185A2D40C4 - 55: 11DA786BF18C8357D2F9EE47AB193FB0DC39DD0B260F1A8FBA4FCA903A653AF6B4FC4AC143457B6BE5AFD7DF316AF22AF16C54483B9EA08DE45A7B122ECEA284 - 56: AD035577451C5B9EA43ED4AE6B52F09D3C84D3F639480462DEB3A9C89B4B313B10858BF02A6A00D5343D2CCF5270B936C471ECF391F1DEE3E9F64B706872E331 - 57: 6487F7F7DD92E17BB9932CB151FB7F048293287FFF0613A0481E6B6C46F5FA488C336CFF852B67D2C0DDA4DDA6CAC21D20C1B47D7DE87E9A51DE059939F939D3 - 58: D3473E01ECD565ACD20C2653E74436F791BE692CE8E15E14CA3E32F1795A5B22F074020175AF28B5DB8791E9A0EC4E2C3124EC5AADB248D4BE2E409A19AC1A65 - 59: 0153A44A6D62977FC08C3DC243EAAA4A81902A1EC58155D0FC7A6A918D9C8D8F349754FED4D0E2F963672740AEAF013C030F6B1FA4BDAFC6ADAF2BC27BA03E7C - 60: 460EDF7AD01EED909917D674FF7DBEFD065101A1A5691E94545BA08135F101DB2B0CAC6082363511D04A40776C4F9779195612E9D5A6A1C68C319D15CE35221A - 61: 077A82F24FC3647F3FC9566122B8CE4DBF0A358F903CC7B8167DA9D0C197339228E0FE566E999983548F47FFE8F51E9AC4D436FBFBDF16B6A02502A317EB5C0F - 62: 5060763DC1E321D3DF08E1E12063CE362D9A82BE4D81FC7F77E7AAAA00DD2133063F0D6F610F5BBA4220A721E5B6D86B159F9E7C8278EA3F4759CC41B71CB15B - 63: A30EC44AFD5A217FF44642F4380CB8BBED1C8B6C063D5C4040269F957511E41A6CCDF697A4EDF986A75EAEE04D09BA2CC725A842A3FD568C9F56FF63D488ED49 - 64: 76DF0FD1EE3F8783087D1FCB42DAF99A259047D2D5DEFD155289E81CAFFCB039FF7D6ADC105194EED7570668F2980AECB7AC2509EDC76BC837D529F782198213 - 65: 5E45B1D0E2C4E578E091A1DFCDCFD22D63351BF3BC5D1D221FAE54197F9C26517BC963650EE57A57721A7B9C429D4CEAE9CA6BA9FF3B700ECF34815313227E87 - 66: FA1EAA3FD0AE71E839BA8F88B79FFCF623AF786EFB1664F063632DDCC6C022510B33F0DA9380A4E99B25D32AD55C094CD019CFDDC333BF38528172B2CAD42872 - 67: 17E781B3DB6481DE63C1BABF42DE994F3080E9BE3D5B106EACCCEE9E777DD111F5140995BFB42EBB2DC9825BD8762604B2F44CF0D0A2B1CD523613718E785533 - 68: B9B0CEB5FBBF8700BC942EC9955E2A03D1936A263F0E5A34DA9C1343F8DA6C091E21CBA8F2B2C31F8D1E2B1113BDD4D9320D502C893B8FB207F4402FE4080AD8 - 69: 308DF238B129A559414D0C204B52F999CD3BF21630367B1B5FB0F555C1B4AE4202BD08B4B56BB5B003BFECEF98206DC4AF5BCDF968731E0C7649BDB3A8EE5172 - 70: 41CD3EA09D81E56FFF257379347FB3FB9C76FB73155C20786D7DB013FF52166387C50A46C9113A7EE639C6B3F0D89CB2EBC17414E84D62309DA2ABF2EEB85B45 - 71: B38598D56852345D06B9317CDFFFC0EB64D04C7AE38F50C6F772F6FE19171F8EF2201E0DD7B977F738FA92FD35D8DE210393A63052FE547C0BF1A2B9FB3A642E - 72: 4D94CAF6581C2CB75D0569975DA9D453DEB8FD8BB3A2B6113BE2B2678262153D138D9DDF4FC7B34C539DB8E6A205DA6749D43307C19258C7197908558A56C05C - 73: 651D19D053570235C7E5BC5D7C21C3565490D87025A22DF7A4FF24F4213E5E8A2490628670328D6C1E207687DFC8B38C05907D7270F0F6FB8103D61369812C6F - 74: E290455679285C240FD4572F0EF3034CBBE1BDB86C4C0FF97523FF2998F6CF67FBD0866752F12A8DF04CF14532B49556437056BD80C7670383C3E2741C5C0952 - 75: 8E70604A73AEFAE09D79D861F6DEDEBB55DF6DA62654CFA7275DA075A946B55DCB65122734DF8683DA5190AF2F68223B8C5C552259A53C128FBEADF51E91F069 - 76: BE89C425AABDF6A595E617947B26F5397734538B5C02D4CE4A674A7E42852E125FD805177DE636C347EE837F94724B03177B7275D4FE4EB5D42BE2566A3280F3 - 77: EBC825C4337A805A58CC1B666D0FE82DBB9E8C0D3FA28C57F931777DB649DBA1509B21A5537629AE063BEFA5EBBD26FEE0C3DABEFDFCD4BA1D391AF08C64417F - 78: 9397823EC26C6D72A606887CAF2A53F1EDC1EFE2BFF128B9A7004C4468EE95F3F2AD0FEDAD9ACEF8743560469E83BAF4FD5E00F891E30993C5F48D2C6969E313 - 79: A61871CDED4DEB4C74ED2781538458FF13F51F27D7E476BD9B66442BF592BBCBBB74DDEA121392B010CF35F247BD3218AED10F1A2E7EAF5B574BD6E5A8918B7F - 80: 799991C408F4F80E849D879DD89855BF1BD45263B58A5D94EB899F0AE3C8293B9EB2316B5C681BA85DB6A322354741EF3001904E23351C31E8AD0FDAC4C5778F - 81: CF7803A56DBA2A1FC0C031EB761B73DEE7B88EC885FE5DCF9B3EFCEE15D87D049D738AE5A1A8A064B4382E09B376570768BC93473AC5695737FE645694111D8F - 82: 7885B5D757583E32622F5AEAA8AF71B4BF45CA48764EE3DFF1389A69F5376814C0EEA34C58BDF221DE78A2579EAAF9E1067014EC6B0B54E32977F5EE003CE412 - 83: 7BF9F15306D499239FB665BB916DABA83BF123F497495D5D3E52B561CD4883700B59F0C7628579183C655E1794A148849754EFE2E41C34040B828D1BD2B38CB0 - 84: E912EB1A389F40F10BDA61345810EF3EDFBF563FD0F2C242F69F01D99DEBB5E65CAD858D83CE14D8B6FAC0219905A3D2923DCBEDA72FA64310BACC212BF05090 - 85: CED56C84245438276DAC269055623360DC642385D86CDBEF4C30C774FE176DF4F3E4B69C3A565E9D4A96ABE6CA17FFD015216F586C2E26F82FCC5FFE94A7EC9D - 86: 3447E02B9815968A5D1758F12269978A46CE0646639085C06F96C31E199D0266A0F145B30B490D43B2DD0B4149F07982C50265F7743BC24F03AF76B7A5983EF8 - 87: 96837746AD9C1A6F83F582DB6D8D2F6C23BA4C24EE4DBA36A07B00CFFEB1384C26D508D6B0DAC036BC66775F898ECD1DEE83759B733A6AAB9674B1D710BAB0BF - 88: 4E82BE79528840658E3A5372FE5D79D4E03AD9EBA12D9D38EBDA5005CF7AD04A0CB5D3C8E0FCE9EBE5EA15C758E7303107E116FE7B5144ADACD7691DF90A7EBC - 89: 6FBDF01B54D350B9DA4DEEE82E99006D59327CB7D6402DBFE9ED6CBB3AA937FD2A0B62BE9AFB2A1AA90C75D8B6DE3FD44CBD63A074BD75786C92F31AA56589C1 - 90: AB53D2FD8CC51A8EFE5D2AB8F201B0C1698157F86CC0A1C68D8CE48ABF9BF86DC1D9DC4EFB96FEC95830096B687DF86DE71C2E96E6D9683692AD5066194D5A48 - 91: 9CCA67CB98D216077B03D3EDEDD30F930EE03814D77AFAB4B6AF4F81C32779F01471C06DB24A21195CDAB34C34A68DEACBD887684CF4741709F08BDF3A66AA7C - 92: 59FD4F4C0086043358739E394F208D33E582CC5FA5B55340C8AA43FEE5EFA23629ADBD891E0385319492F9A7CEBFD11C1E3F9BEC44B6918F5CACF613235730A1 - 93: 7215240E23507E346D1D187F6ABF494A14E45396670DE22FD42E921CFF65B9669A9F4F3B3D55DEC694683A32F6204C2F1365348EEF7018796E808D5802FD268E - 94: A7DBEA28FAAF61BC0EC40483B38FF7C7342817AFF2F2D1B7C8ADEDA1E18FA8FCB1800BA6130C9A1D7365ACB0E9C3CE72FE93D92887D7BBBADAFA3C7F4CCAF6C6 - 95: E56A3A60F528AC752C7D32CDEC1A1F5DF2D5EBE1179CAF8B7C79676E43E7236145C9B9CEC126F5141F522C79BB4E749D33A57BC55520506BBD527800A50A5EDB - 96: 77F1262505D3AE47AC2E9C11884194744FE2A855F532BFD507A9B064C602E29ACFC0F943760E370B166E5E1291F02D20343559F3D7E6C1A8C7936F927DEF8A52 - 97: ED60B7711A77310121498DA56D76932EA6414ED0352F6DFD87648C0A5C98EA43C836F34C4154BC49A727A518D055745C2241FDDF4421E9607530C2C1D6CBE0DF - 98: 0DF724CED01A4A8F9C096D8ED0CD616BE03CAF7517C2B9434E414F257A0CC816F1853B3A9568468DB610224905E136825FDE83FF0F7BF475F1D60FF95032AFAC - 99: 281CC53B70A1D7CEF29E202C1E8A381ED4DFD1711EB0180DD2AF647809B77A9D8C48FD539D1E75617AF375FF9734D9030B0779931840BD053F50278F881EFAC6 -100: B92C99FFFEA9ADD8BFD019919B4FBFEA7460A99BABB6E41B48DD378DADF0473B7F0FDD3A8A5972935E5EB29992FD620E09BE090E104DA7A2FE0C3015E0828392 -101: E845187E29CC4D772443DEE9C0F3C79348325EB5F75857CA6356A261F4FB2C1BA49005C6E7AAC9CC1F4DB1A9BF629F4419FCA2252CFE23727BA57BBB31873864 -102: A1A3CCA0FE40FB5D9D057D2ED51C324AE138BF78A111480F3008D6FC62A9FD9C728BD050AF383D476F66F443C132303AEA589FCD6157203756E35C58694AF866 -103: 9EBA0C6229290209E18C97271FBC6C7BC3089E5C01B549BC2643395040A13A2045C2C0C3E08839DD8FEB20C3678DA10BCCA1410647401944F46EDE6AA40D1010 -104: 3A6E5344F8392145F25BFA6D0282F584AE80DDFCE76A5F5DF7E4EA743C64D74F35895D476282CF32E35AD3A40B431F09F38D3A80B45C8C33100CA98BC28962CB -105: 61211EAD2143949C4D667C5B2B6EEBCF0D4FC4F45F373D36E58CD307258A593975CF953BC268C64103824553F0B5539209B995E21C0BC17E776B28862C766F1D -106: 743631807E2629AACE87CC7E4AA1B340E97DF291EE47F5538FF968FFAF031E90B4066E1EBEDBECDBA101515C4514EB2A4638D6E393ADB740479E371E7234B3A1 -107: E13DAECB91144E05010B31216CA7A4D5775BCFE36079871F99E4E7DA641BE6496FC9DE05DAA459035298F76E931A5C3E380C02328ACAF1E3B4A637344643A20B -108: A24E27BB79F437C5652E6E063680E1E5A3257FA87DB6E8E778B9FB01C7667420043255DA5E8F7E96B3B14E55434F8F4CF918305512C1C6E3A3DDED2E69542D46 -109: 81F77DB64AC43580C9230A961CB1345B309A95ED5B424740F14D3407E3B553CF507520BF474062F5035E433BA40A22700F9F6C4C5BE1F101F5A45CB6AABF8EA6 -110: E9630884EF50E2DA61AF946307586F8E1F9738616EB01E54AC9392E440FE17E8D3E94633BBAE0870AC7908DD8D63637DA19B772960336277A7A0651C9130002B -111: EE1EA8A5904F484B788DECEEB8E13E525ABD21574279AB80AB196B1A419BE9A6134071E02AC515A09E80D9AACC0050A2254147E8A9D66FF9CF8A465902BADD33 -112: EC74AE25260DD8A3C9EDC3BCBF234E042FC694576838C40A7F12D650A6C519974B76E5B2E5F64E3CE51629C4AEF0EEB38EE0C634BF3DE12FDA8810B4E6F941E7 -113: 931B6F44FD03182E692F2A4FA4A3E1FC2E354E002FACE4C012DE2552508B5612F1480D29A36F4CAB2806B5E0C9C4DE7160BC6E257189DE795BDDDED964E21690 -114: FA1F621E61D8FBBAC7A821D1E345047CF58F54D06B0983CE3FB01418C50E5326257F5FC563EB50236EA5CE046359F751A9F002CF09AF8736D571610BAE0EC4F1 -115: 82EA8C6EDA51ECB1EDEF20828D61E5B26479DBE6EE9414BA97763058096352853E9E2312935EACA691088D36F234DFCF383DDC75C6C58025CDCCD3A3D1AD009C -116: 5DE671C1BFA41FACD8BFBF896D120DF259792BF4895EB963CFA30DC7109762655B0CD1843BEDC649C4F72A0E8149B21547FDE93E55860DF8E0C8F21D4F0B7EC5 -117: 581E8C5B8CC2A3BA81A14B20909830EDD24C7F48B3621931C201F4D080C58EC855BDDC6FA8355DE22938B536C78E77D434E03CE00B71C1C8FDD99903052D83DF -118: 7A815C74EA89BC9A49D18FF81C4ECC9A54813DB52906BF2AD103647C2F20D8F31FF28AE4A861DF56207FB2F3ED4E3148C27D617B09798175496C9E6968A239B1 -119: 8ADD3C5C93F6EA7B077B9831791461BA7CAD720E79E31E50723D47158761D013B185B89553579A7E7BBF38DDA482F9DEAFE67CC9F001BE90EA8466BD4A49E9CB -120: B9C76635525DDB96BC98F9B3BE26E37D3050ACF7E1ABA6F0CD46E72847B1946A8CDFC107A8A558962F7DE52B5ADDE261CC2DC3B410AF14A8A76DBB5436784CDE -121: 14A505A0AA73DB2255292C2C2EFDE974B134CACB3A5BBF7F37968FFDA6EF663182220DECB06980035A834C7F91D6A1E3DEB9BA60FEF04A131FFED11EF780F935 -122: BD2E42452ECC149FF1D7046CDA8EADF6ECF4C439A37B648B23FD533834FB3A763E3537ED8057A5B31EA5223FA3F3D60681527AF2CB1F80AB38C2F541E564AA32 -123: 570490B81BB43A320485B2E0D4394BDD58C0905F38CA8971E05FD0E414E63A300DA6A76EFB88A450C298BD626994368E20E90AE3F326A2CEA765BAC696EF02E1 -124: CA8FCE1DE2BEC3FA3954B81B52C90D0309BFF1D1C1BEEB3EB9DA72B30B7879EE3F2650038AB6F92080A56000B2D4413163878F5991B17D018DF01BEC206F5A5A -125: 32600E7F6B798E61530C18A8F680331E1AE0AFFF5E038EB31D0F9613DE3DCA5760553B3C839BD3A569816A13A6BCD87638954ABB8EC14263691FDAFBF96FEE17 -126: 8F0472A84F22A63A1C800AF6FBF4E85FCFCFF82CFF86703AE0EA0AB6B698C215A9B8D8077C78622BB66A2B308F26D9774C67BA5B22DF209322D901911713CF14 -127: CA743B61164E0011812AE0F06BD1182B1180DC49946D6778C40BD2923CF5185D22417891AB9375B87AE58AE5043BE60A4A26B0765393CB67380AE78B9BE48EE3 -128: B6A0E07F242E1645818515B0EED349400D01CC55744618A3ECD039F0AAACEE1EB952B60BBC4E5E652DA2069B2111823B719D4E99CF227BF9C792E38626D115CC -129: 43A7EEE316DA7919A83931C818C11EC083E361416AFA7E01D59729F6E9436408416AACEECC8AB703687F91794ABECEC86C7DFDE61A27B6BA64F72F5FF264CCFA -130: 4F98FC1891941C50961951CBB2569E3D9B3671CEF5AE4BC637C77A788376CB6D5801D42BF1BCC319170ACB5570927362B214157FE1CA9F20FB38DF2B9DB4730D -131: D11D5C742084336982563D6255E5F3D314D530EDAB9252D47B160F141E02843A973DC919DFBBE2EA4C28B72BB1DF9720CB4A8FBFD5B6F40F43E5EE91D7DB7275 -132: 3A28C283AF2BB4DDEA75E456769222253CCCEC64365AE0DC37033029198647306E598ABF2BBFD7E7C96338590681508062C439545D9E34CBF89291DEE8617268 -133: 7F2984DB3289C5EA0839FD394AEA241F15CF6ABAA1DF9A46F27A979F519CA5214A73FDF8ED5B3B3B4DD847EA99C5BD6593D42990F641365A209AC4E483989757 -134: 65FEBAF4BE31967634B3DF6C7F0577EE88299175B1A06727C6259DDA8F0DD8AE5372F12E73F429878AEAE55C4052A17909FF88B0814983F0444CDEB8FF2E17F0 -135: EE044EB2C8B74F3E5A0E45282B5001377163764A4939EB4A2D0B981A348202DFC4BADBFBC302C18022FDADBC095CB5D63AFBC630FCEF02C6E79AB045AE202AFE -136: AFFED6BA5C6CF9364C667163785C58DB1F6D3CA753FF3ADB109E769BDBC5CF207C6B0252FAFD08391B9E45513E2697EEA834FE784907D32A8250D2C555BC584F -137: A029E5EC734D594288D8A29BECE7BE5588C8E5F042BADA19A689AF3F4BE3BAF00FAB7C44FBDE00B7556A81458ED841E748996FC6D7254A5B711AC642BB94F346 -138: 5AAAF48A2C5036659F760955FAFCEDEC18C63217F3EAF65DA3089D84445B8876E8C1D13DB6B84516D519352649359CCBEAAC3DFD904B6E98A0A43E0BDD144451 -139: 564F2DA71E753F3C8A96AF4AB1CBE8A94FE4F0E0F929ED2A92B9C82C41F5953F7A00898A08D7605F1A12A5A315B1FEEC3BA20D817EE9DCA92AA06DEFA4592D34 -140: 2C6776D0136C670EA76F67C6AEC33A3FFCAC63AB0EC041CF4267E5EEE0F5B998432D6FBF4C88A2578B8F31BFBB4AB9CAB7384EB00F300D76984C66AC1A562F36 -141: D96D1796E76DD7A30B34BD93FD093A0F1093DA9A2B9F93C5039B3F53B30EFCA87600E94E9910EB4C925E90B77D647039FCA61EB97643A1DC1C15E19795093C8A -142: 61C012F71E8837B780B91E9E2D5358063D1C93658A6C1895DF5DE8CEC451C95E4E6ACA438677F22EB6BC9B03D1B0D566A852C1382C48F470F0897C5DB119962F -143: 6D420F1046965A2AD82C3F65754B7D688D4FBF14F1506276C3F0D5A6D0798E1C9B1579C7940E81D12C484B66CC7ACA8AA74D708796B3DD72262B54B44B271F8A -144: E201BA62FAFD13C7C1B38BE2F583DED1CDFD8DC53FA390402A9869E876F1E75A4A143AF67FF0521F0E559E0B38B798B76AD2AC6B2863CA3A5C2AA85CD392ED97 - -HMAC-rmd128 - 0: E9BF401EB338AE9ECE9F2DE9CC104A5C - 1: 9536B19B029E60F979B3A6B3052685BE - 2: B52F90B48846959EF56051CB6ED21588 - 3: 0811D2108413D9B64ADFA78B05EDF1C8 - 4: E06414189CCE13B61A2FC3CE9BC11938 - 5: 8BA02647A4914BF4248F6C799055ABA8 - 6: A3D5D44CBE30E23D20643E865F28B7CF - 7: 459DC8A812BBB840CA10A49E10F240E8 - 8: 26131CE4DEA7D66E5B3E6ECB1DDA4329 - 9: 5EB41B6A8F140E49BB4EBCB76EFAA0A4 - 10: C5E076890071C872B071E2D068EAD1E3 - 11: 476474365DEBAFE39DE7830A0BC3ADCE - 12: 3E9E0D4B41D740310572562E5F7F0CFF - 13: 9BA99B782F7B79C9C19D40EB27033941 - 14: 8E9931A75435B113C7E17E94E22D0B7C - 15: 1977BEFFFBF378633AD22D9E489FFB90 - 16: 9CA06536713225F3A5F67CB6510FB165 - 17: F46F54B012982621E33BA13A871F82F8 - 18: 73F925BD50E603A66B17D8D926CAD1FF - 19: AC74EC692DDBEF86570044E1B5F31EF2 - 20: 4F4F95BC7487A8F07B23C11F700F9C4A - 21: 02CE78131B27AB77474CFAE5EEA37055 - 22: 1D66BAD41487BA6C238BDAFC04E9963F - 23: 79058EE7D70C9D19058BE2E1D5383F39 - 24: 773EB9C677055286C84B39D2344C43FE - 25: 414A4816C124BB62DBA3BF65B6276208 - 26: 350DE5DF46801BAF8B12D4516E82EF43 - 27: F31C58CD73A3D8AC050BFFA5FDB6200C - 28: 5D7489AAD6537DB3DC27D43F698F6E79 - 29: EEF7FC37DCF2AB96328E62B8097203B6 - 30: 8FD428368B9B52F25C47E74C0327DA52 - 31: 923B6ECABD0337E39E6D068CC98F71A8 - 32: ECF2239FC767105FC69F46FDA5BA37CB - 33: EAEEFEDEC3B1E74A029683FC21F03B40 - 34: 9620C4913123F3A718D61C956673FB23 - 35: 59283EDEA3804ECD6471EA41EAF89A8E - 36: FB5B60685DC1DAF0C6557325DBBB32C4 - 37: DB71D12AA3B97C421FCBE45F8232F3E7 - 38: B0849EE5F1F9484514F5512BD928148C - 39: C73A777E20CC49AD33DBCBB16DC59A84 - 40: 600BF6FB779EA2F7108D1F7B8FE89F45 - 41: 0BD76F07D4C433E5BB9FC98B7FE49A2C - 42: 209E2124DAAAB3B5C6D2DD9A79A36E4F - 43: 907E4E2540A6794D6526A44FA08CAAC3 - 44: BA1BCEBA60F32ABD0EED0A1A56748248 - 45: 31F8527CCDD022CB9439F8B39ED70D11 - 46: 05F429D6AA9FBB1723D81AB268F95963 - 47: 7B91D5409357FF13F9B92ED2C6D63B66 - 48: 30AA88DDC6D49AEF0D4058616EEFD9D9 - 49: 16C0B4F46936AD501EEB5BEC8C699EB3 - 50: 782DDC3AA9B3E498767AA310D7C32CDB - 51: FABED92C454544588965E4CBBBDCDAC5 - 52: 7B04EC847F160BE26FB4A7C6B111EF91 - 53: C20AC6220BD352F8D53F0DEDBCA97862 - 54: 2EB8A89C854AD2412E5E2DB8638550C1 - 55: 390DC3D1C6EA4CD7A381BDD9F0B505A5 - 56: 1D86B9AAE5246182EF76456E9A8F2CC3 - 57: 1759BE8033CD082D771127CC81435696 - 58: 4F230D4174BBB11231ABD4AB58D6FB80 - 59: 9FA21699DE8CDE39FE4C9DF25271A87C - 60: 7658883C002D62D33EA21AC43E26C355 - 61: ED1CD4C63C40453677804FD66BE3E068 - 62: D715E8E09CF4C5A34793FCFF0A7EF0F9 - 63: 86C450794C4F920138A8CF2DD9221826 - 64: 2AE1A808F63CF7AFF39FE9595BE540EC - 65: C8E550F520B0662100FF767FC0FC38E4 - 66: 1A4CA5249BA8BF8E4AF50BD01B89C13C - 67: 25A3566CEE5E0921857048F4A54BF745 - 68: 4D76448CE2C08EBCF6C21FD304973DB1 - 69: 83BBC6D82633974D76A1B0994DD8891E - 70: 9F322885EB927B8C4F93AAC081C7F378 - 71: 7E0DFB22C9433A0A66A673ABB3E81B4A - 72: FD3DE62829CCF2AC389581D9932E1B94 - 73: CADF66BDE69903E9E3117DFE75EB1C6C - 74: 71DD9BF191A5A1A0311BA19BF0568727 - 75: EEC05781AEED255A8DA730399ABE8929 - 76: 07E7E6E57A239F659A6B17B695161878 - 77: 6E7DC67642EB72C295EC12C009902577 - 78: F6AD3BF571AEC27B2C99AAD4A22B9654 - 79: 0F38A5596BC9BFA1ABB7318A35E5841A - 80: 987BA29276694A84DF6F3448D2FA36B1 - 81: 3661D8F157DCBA761D1292FC2FB332C5 - 82: 81834820599DE6624EC116A651FFA2A4 - 83: 59E556C023829D31F76ECB5D2D5050FC - 84: 9389597634228E243808C1CCCC71627D - 85: FFD30A17850DB17BBDE7C3EBC8482A95 - 86: 0297895965B8C96F95A77E6A1BEB5FA5 - 87: 46185FBA371A282AD8251A8DA93E7A10 - 88: 34940377228A73C2CDA178635B8A4827 - 89: 0737C31BEFDE68780EB3A5504F295809 - 90: 3DEE2B38EAF96BC620785551C926E9AF - 91: 719B32410E625DC65AB4E422E24C8663 - 92: 5B9AEA802EFFE00D19E746E0684993CC - 93: EE96F9B8F8FFC084C0EF8C28ED0EEC4C - 94: C6575E5F4CDEE50C0C2F41ECC33BC9E0 - 95: 000DCE0FA82C1422ABF37EF1971B4B1F - 96: 83D1C6EBEF52D1B9DFA3F439BF8DCE25 - 97: 657AFE5CA6D54F9083F02C257CE7E3DB - 98: 9E65239503BEAB92716D5B504358352A - 99: D8375320E32FAE3BBABD4620B1231315 -100: CC8914472A9B5862287D695AD0A88BE6 -101: B0E0D8EDA1BDBEBCD0A78678AD7D6A64 -102: C8EBE9364129E651BD4FB491FE035433 -103: 2A6DF032E0D615DB3BE890B0B6D3349D -104: 975F0E184517902F1C239684EBC06314 -105: 5A86E403AD3D0B9EE5CF87C32482C6FA -106: D3E986B5231A204C88D7C2FD1ECA40C5 -107: 891ABD274D024F8B04143DE588A02AC7 -108: EA619405003DD17F13ED5BFB29587568 -109: EF5CD5EF1164A2E5BBC2D96360E55B87 -110: 07C74397955571A7E4025BB9EC555846 -111: B5F20FB0AC1C1DAA0DEF8EF78A9BDDB5 -112: 88D91C18A4AD272B4C1E2C76BE217BFA -113: AC548888F0E5E559777568ECE71E2007 -114: 816071E2B807CE6EF526E423BBA252D5 -115: 0585A675BADFDD749ECADE66BFFD0546 -116: 964CA97939664EE55B8B973D044D7695 -117: BB8FAACCE9D3238714C3934E6FEE2386 -118: 2BB26CD61B24CB5CB9E2C5FF40C51A00 -119: F5332DEBA64EB35CE3B5C7134C4C8495 -120: ADE7A5C99757D216D10E1F13E3A91F1F -121: AE98C3C4FD874CE0B8501FE4C428282A -122: 04D7625B67AC3F9D117AA45FEF6C6AC1 -123: A05D3C933DC8C8A1CF48290A5D52644E -124: 078F882264317B0C00383FBA7E079301 -125: 44023F3B109763A53FDEFF1822488855 -126: CA535702BAAB858D5FB5B79895E0E1E0 -127: FE1C2C02B7665895DBD2F4D2C22A7232 -128: 75A182DB4FD99599022F5A03F1427289 - -HMAC-rmd160 - 0: 33528FDB4FD0640B4C4363CEF1DE795719EBC7EE - 1: 514DF566C6204373EEE6020054AE7DDE2B0934DB - 2: CC8A5C8D2EBA02BF4474A4CC05CC2D863F1AA392 - 3: 27D731E218C369A32BE4B2BB29D2F1A0988BA583 - 4: 091245BFADF5C6635298702F233ECB3265E85460 - 5: BD2C07FA2197201DCA309063881F2EAC9D925A21 - 6: 480886856354E6FF34B3AFAF9E63FB794BAC4521 - 7: 258D58532BEB5EAD28E9BCA52AA4C0444CC2467A - 8: DB7513F824B42A9E1FFC1369F22F61054A3EB7F0 - 9: 3A4A258F23675EE02E1AC1F72197D1A11F32DE21 - 10: 9315ACAAAA8DC91A9AAF8DDD4CD000AE04F70E1D - 11: 57D60D77E1D78D23D3F184740D9DE392FC6C3C40 - 12: 950395C815A3D1A4A8BB25322333FECA15445BFB - 13: F8201A01C30F3B569B7497B5191AE16D1705085D - 14: 08DEA1A0CD4BD6C9031C84FD2005F15810FF088B - 15: CF41D88EB3921FA137F0203C2CB8BC5200FDE7BE - 16: A07100AAACF5253501A6643452D07C7DE2EA824E - 17: 19DE22082D1F4535A733F16262A135358D651737 - 18: D50BD92902AE0127AC8DD85E9A81ADB7EF3F1E64 - 19: 3FA34A3C02E06DE451794AB87C4FCE6877458CDA - 20: 5928329E4D830E8B2F7608A4ED46DCCFD5798425 - 21: 2825DBD7989A8978904A654E6AF125608B0BEBC1 - 22: 9C812424417D47ED7C78C7A049D4E6CB906DCF3C - 23: 9518A473A902DB6BB56F7A767ABA13C8DF306D37 - 24: 439C444C7AB4395C4DBA32E4F8CF4F76207E5BB4 - 25: 9021FCB087269457ABAA8105D4DAD8DF8904A2F6 - 26: 8B7B686199BC73A175940686BD57F45B2329D895 - 27: 0F50FB7AA9425975BFBB6AD65CF96284F768BB75 - 28: BAA1B7749A9CCAD7105E9ADEE499058A7BE4BA70 - 29: FBD3413CE89DFFE2F0A869036F5C4265D5B14743 - 30: 7CDB257E051ED0EFB761A5A044ECE5B0C1F12033 - 31: BB1E5D495074594534AD523987D8438CF1632425 - 32: CE6D7BEAD1496190F0F0E99B0B0C9BECFB7D9173 - 33: F8BE617A3256EB1C4BFC04CD386EB7FA46603926 - 34: D1A1F489434C458344239A75DA4241A3A94BEBA2 - 35: BEDD951DC98BD5C4138C1F8531D8288BA3C51B87 - 36: 9C2357E832CE87A227F6919B50A0A9D3A29B7CAF - 37: C9FCBB9A1AC48B71B2AA20AC992821531F1141EF - 38: 0B58D56923F9620BCD072703FBA71EC2172EEAD2 - 39: D97480E09FA6473AF9AAFA14FA9589AF65E62328 - 40: 4D5C56D0EB0BAD64FD0B0FB7F87D05EB551951CE - 41: B7EC2D13EDD3603D1BBC8CD29F32B43AEAF6EB4E - 42: 9BD5300B02C9432F686842E7900F3D2A085C5008 - 43: 7E8787C8780C64009216324802958E1D845332FB - 44: 1A3BC1AE95380D609571B01D8C3458B2566B74A5 - 45: 9672BD12EBBB12F398CEFA089BD3282A2D2892FB - 46: D5D3CAD705E2B0B6E0CBFBB0E8C22CD8EB1DC4C5 - 47: 408D84FE0B28A3B3CF16F60D6207A94B36219F81 - 48: 0B7E3D35C292D295797E3ED1F3D8BD5FD92A71BF - 49: 18AC1EA3406D69CD9E9C801F471AEA3A31C69D51 - 50: 98E40CE293ABE4ACFADE7D81371FA92AFA69248C - 51: D95E38F2D0C5ADB478A9BFF9F8E7B10064455C31 - 52: 6246C69FF502D453950BFEB5DBEF68CE76D70F12 - 53: 9D788F02EEE675F47AB4498B1337C6D83A37F64A - 54: 139387D749674D0E84F3C2BFBAFB3F0CDC4CA273 - 55: 09406CEDC1C37D275EBFE02CC707229244086CA2 - 56: BACA138E6EB6E5BEF150083CE0EFC64FB163EBF4 - 57: 87CF4CC4500A691934C2C6607F3296A0BEC980F6 - 58: F8E4DB4FE6879870E9F47BA29F0DA843342953CE - 59: 52DDF305014F1C68A34ED514B10FAE3B1B91F383 - 60: 0D568164C300BB14A4571A73493C02E4165383E4 - 61: E1DD806961D718F8C085CEA11A140900FE8064A4 - 62: 6470CBC7FE079B684D108550698B7C5D265736D4 - 63: DAF83273B2F16DCC69FD55DC84835931E75FF5D8 - 64: 47F4D7724BF49DE885D23D84D582EA3A00E1C2DE - 65: DBD6BD40F804E38963EBD2E81CE5196F6E69AC48 - 66: BD96E9391148957BE64FE6DA89CBDFF45233FBCE - 67: 20975680C2E31D61D7F303215A25CFAB4479F646 - 68: FFC321ED45ECC1A9FCDBC28ABAE0DA1FD27A628A - 69: 99F90008F139FA442C152706E522CEB349EABB00 - 70: 288C57DAD9D1174F4EBA92F7815B93C0916E8157 - 71: 8380FD083E742776CC32971B9E088B894A6A0071 - 72: B0F44C66552ECE94502597B6B100CC64561E6F1F - 73: AA0465458FA1F285F5A4530035F84F844D545A75 - 74: C90EE3BAC92FA4986C850DED11D728A78BE85543 - 75: 3E525BBEB158B246A3F4918B6D634CE8EBE4503A - 76: 7B42675AAE1D0DA5A84623E47C618744249384E5 - 77: F50AC31B43BC93D1BE2A4D9C40FC4D3593F2551C - 78: A31AE398E0D6668A52DAFE37D019F7571E0F681B - 79: BF10B29B4DC7C848C5192631E59E0EED32B8D81C - 80: 77B214EB3617C372C191D1D284FCED04F5AE17BF - 81: 1B17DC33F5966621F4BFA93961B1A8FFEE1AC820 - 82: 5A07D9861EDA6D8698E12FE5250CCAD882628B44 - 83: 176F46FF2202307828D7F62D39330444D688FDAD - 84: 59E94CFA3AC2BE8DC6098840E888306764308DE2 - 85: 679F243847C647FCC3F4589CF87972558350DC98 - 86: DB97F5EF492C7380472E16E3B055567DAB630153 - 87: 359CF9515F6B2192BF0E85EDBBC81D51232210B7 - 88: 30B59B3CBFFC08DA7D9514AE7627460BBBDED722 - 89: F31D5E2866D9726051B6E5AC9B846DB36EB705FD - 90: 860A58DDB6119261646907E251D60760099CAA07 - 91: 22EA0278EA053175C2F12BA4ED172FB0B518F3BA - 92: EC68297334F421AB3F2EF3518684E8E1B548BF56 - 93: 5C1405CC33D9025DA265FF4F25942853721489E2 - 94: 8AEA8E9EAFBF3BA597B65BBCCEE59013C8E6AC8B - 95: ABF7CCD01374D5DDAD6EFFB19412EE772E663DE2 - 96: F7F28E05FAB93A3D089BBFF56D4E462F0BEDA41A - 97: B6C4199D504E72793EEB49611E28A82DF5CD7905 - 98: 0B0916C89F1D9F1134E9106FEBAF4169DC49F752 - 99: 4F18AA0E88A01ED162D08F35300B1C3FCE1FE8B8 -100: 5D4F3C473D5859C16F70C1566F9800B3DBBBC643 -101: 02C1A5F34232B8900E6C7DF2BED957BCAE529784 -102: CDD46E434331D7869A27EA096CAEBF586D93CC2E -103: 492C04E69F0204F150B63022C7DBD28116458F97 -104: CDDAB90168E934E69E942B1F1EC0D0AD7BFB5B43 -105: F433642FA8091FB2517F3357DD30308B4A2AEF53 -106: 537B2118792B6A419C438E58CBB6C5BA887AE257 -107: 753728CB39813C27498033A07DEC03D1FA720FE9 -108: 119A6C5BF3EA8F7A78DA9ED2DE7ED9AE3942964A -109: A501EB611542A2A2CCC68AE754D2EAC17942BD8D -110: 158FB54E37C7DF54B29928B5DFA53A560DC09A5A -111: 15F5380252E23B5C37EE7E8D1F5963FBF8788577 -112: 735F2C3CF7680C63F33AE2D4F3569FA8EB45EB93 -113: 67AFC501C6582DF2A9DBD713F206041E5F3E1DEB -114: 7CAEFEC1C6E8232BCB90E3FE3523EE06496F36A3 -115: CC90ADFCF3F9AE777B30EAA6206A34EF54F74C02 -116: 974E0E85B47CCB870A511810DDEFE81CB85B28D3 -117: 516D6BA01E0186CB7D796FCD9DD169C45B63A93E -118: A1CE534BDD6591AF4EBF61ED75636C7BFF670658 -119: 1E4B241D6EADD77E046BDCCD25F70AAC969262D3 -120: 7F2F1B4B77C3170A9E015DF4E8C6EDFE736DFFC3 -121: 89A3BF181EF195464DBEF9576873CA2DF7D16268 -122: E1F96A7C9115E3DBF28E10D62F2D6EC89415B6D7 -123: D75C1081B3C2720D030EC5DE13093357A0EE6E51 -124: C11603CDAD8DF271093CACDFB5AA4E113A270EA5 -125: 39A9E659DFFDC2ABC88ADA2B6A7445090C7EFBF7 -126: 4132330C5E3344818AF5C054AD55309FF7B767A2 -127: B107A8B0C7B68581969A0F6DB95DB2F790098F1D -128: AD090CC9A6B381C0B3D87035274FBC056012A4E6 - -HMAC-rmd256 - 0: 59D94522E81F74D4C37E3C514CE2477617E7ED8CC7133305D285327765C89A0E - 1: 75980FB31DA5B955AB7EF6FAB481CED360AA322D71CDAA64179251A17CB0358E - 2: BFF0C3DA5DFBB29CC1313FAE9EE58C0E8FDD3E3A2EE3FB374CFFA9E498787CB5 - 3: E98081F243E53171F2C9562ADF1E53D1F322C8D76CC7086F90F9CE0AF9E319DA - 4: A60C1EF331862AAA1F47D6A6377696AAEF2828465D18019FC582B6110073FB0C - 5: 491B655A0FD121CD87F950AFCA83C3DED05DF39E747372E4B9C5271552D4DCA7 - 6: 7FA04715742FFE61A4ED085A21A1BA9A63E17D3E33E2D8006E6C4BF4D9BB9EC2 - 7: 6398A004C0F89F0A52D4180C49DD394B6BD37FBF3CB259DB5C450192DA639DBE - 8: 93BEBF56DAD2FF3ABF415541A809FF7DAC28040E4F656AC2B14298DC66ED04DF - 9: 676A915B47F3DB14B35F405940A11AC1CADE15CAE594A40F0F9A29E7C92AE9B5 - 10: 51C880C47FDE7D78D5523F950C2EE332C0CBE566C95A407222A3A01A982D13F5 - 11: 5593F9026A907782C798DFE13F7E573A2DB5DE41522A0475396CFC07DFC8EBD6 - 12: 38332F721A408B59D5B9A85637281A96FC0C7AE266393C09BAF5541955F47AAB - 13: 22BFC946B9671CEAD2C66C1C478067623119E300AAFD0E142D7DF0A259A617FE - 14: 24035649A8956EBA507AB486C1BBB1F1398D1D876EA2686ABA27BA547F7A4435 - 15: 5DDE881A48F95FB52D1FD5EE45ABF2B25B80891C4D036342DEF2122FC0746775 - 16: 6DD359B22FD77402923F8E92B1D2E9B119D8A894834CDC13DC966F45A906A0EF - 17: E2F50D31A720D286DEAA3E598051B205CFD623A80EBB4CB6042B8A610E9CCB5A - 18: C4E50900A180457BF1C6E75F414688480B634B52646527FAE04088883D7FFDD4 - 19: F1EFD15C461DBA0C4B417C7C09E4D56612917611684094BF5F61A945ECE5E0C0 - 20: 3CB5B196F02A9537BA5808FA7EB151596F0992741F637AFC28AA4B4AD2E52B7A - 21: 6BA6B2F421EA4192ABEB66C8A38354014431EA15D0BDD20F83DBC491E13539AC - 22: 922B2DF01EA6C2ACE9BA72E7FBE2AD77760F0DC33ACE013585D1FD5372BD0142 - 23: 04C6EA875E83A76BDE1A324C593CC17548B142051A8E266E55F6FFCB5D7B2ED9 - 24: 34CA6F4642FE68DEB9A3EB9A301F8CB401A486AAA5A0A1099664B60168DC805D - 25: 6176A9B45D37B3A4F919D4393CFAA20D289A011261D6B43A171D739248E6E4B8 - 26: 8A6DB176856A5F056CC519BCE162E0B64530BA97948FF91F364DF1F761372545 - 27: 8E3844CF5864EF0B8C417597EB761D5D9DEF6F1784AC88E6A52C4FFCC7A06DCB - 28: FBE4E41F7C1746FEADD678FD8C456116CC2FE7F41B24D8005E6699C99B8C95C6 - 29: 0FF3C4A9932270DC01A218B4D5EBE0EAC1189830CE0AAAC7FC1EF67C7E3725C1 - 30: 11B971796B7DCDD1F9E3D4641223B44F411C63288C1F85416D36632D0C25E792 - 31: 483736D5568DA459557B8384CC21C59FDAF4489F51E7A816F6E4ADC3D7331EA4 - 32: AA78DB7F399A3326F62A7AF0EC199A4CF1B6CE52B608FBBFC2584CABF8E46701 - 33: 15F3DCBDF7C97406C479D71FD2798C14C6892A1BA7B7C5EDD83D7CA52D14A4A3 - 34: 34E93739BCA8932A7CCB757C023ABE537F537449D278C8106746A737563CC4CA - 35: A9388CB84641DA774B18429786542D4DF82335832F942500260A51C2BB90D4EE - 36: 5E569935BAF5DB6C44092A5D4870DD9C69484510443683A5B590F7AD02D26F77 - 37: 3C55225603F73D1A135D2143286A239C38F94659D0E28A53DFB097E131298855 - 38: 4B7A827E471A17844360BD522CFD4455F47AF5CD63FE575DC1559E6E0C814D66 - 39: 00DA43B21187235560EE862252E2C7497E93192A51B430D2ED9F604D2905FE6D - 40: 509E9AA816CCB27C4754F90321A9E09F967BB93E8E4205616E7F972F7950FCBC - 41: 643DA409BAB43312B22B6A56D529B0C665DE4688565A3F01FE4157E060315645 - 42: 25FAA6FA3896C1BADEC9FDCA8FCCB33AFD9B9A8653CAC3C3F5135D5B5043FCC0 - 43: C6E25EE5372792571917815AA36D7FDE94DB57DBA3AB6876E1F887E33D298AFA - 44: AB3DDFD7E4EA3F200633AEE0B187AB99E8795B50077B589FE531D0CBCEBB33C6 - 45: 4B495DE93E9531F6EAD6BD4AE86BE1DCB0BE281297EC093D470FE0BE5EB26BF7 - 46: 3CF453F7D39D4AAF5B492117CCBAFE34226B377923A6E7634BCBE4DF9C0AEC38 - 47: 7C3DEF494B0BE7E4C5ACBC50AC970BD39757C0D4207767E89528BBA7F3CB69C4 - 48: A5976310EC943895C4A87C6EC1250F370470271A67980A9B604DD1FF6A7C4087 - 49: 21447E7DCF689F222AB2BC32D10791CFCA3A2F56FAD95270E68062F68DDB2864 - 50: 150B6DFF8E507BCF77057F8691AB415EABE640C3E3FDD1DD1E6C1E8C83ABC766 - 51: 1D39B1B97F6B39D084B0F0A6F6596D981BE9B6CAED9E0D49C288C99895953AAA - 52: 33343026C17653A14110FC9327CEE22BA1851D8DEDFEBA4DDECF776ABB275BB0 - 53: D1C7141769B2B1F5B822DA545AC3690E309E496C8DDAEB9263FC703F43A8CEC2 - 54: 296903ED4C460C34EF5AF4DC27BAFC3CE27E0B737DF3654ED1E2F55205AD54A5 - 55: DDEC62CCCAEC19389F4B06813E8079CBE26BDC17548D61EE6A3B066A929D3227 - 56: 2311552BEBC2A60BB449326AF743EEE659F4208459880E4070BBD9DB52C2DA27 - 57: 2CA872DC8158C404FB906F14082AD79F00B4C9344ABDDF214AE8819D3D66138A - 58: 9A722F58F6F78A51DACD98FD80E339CB31F80A2A52821F3BBE3EC99CD3DCB8D3 - 59: C37F6C6838DB764C27679C1A6F9CD95CB3A8527AEE7D7A92E7B5CEFF7F6AB0DD - 60: 553C9F658CBE292BDEC762F92E931F7B0E29EFEF2089A598B251BA9CACAA9DF0 - 61: EFC42E9A5DF177057708A364A996EA959211228B1E10C814960C5BAE25AC79CA - 62: 64B282D748E22535180011D1E18817073BF2735ABE2DB39DAE23DB1DF40F1900 - 63: 993222620F8ABE4B5285EE4B75F5F6970B9D1B5DCFE758A57650CAA413299D62 - 64: BA9A74F29B76CEA63D4535E5AF807B1D8A8FBD105B9A6D6ADD424193B0B033C2 - 65: 621EF37F2FCFE2AC7363224B28871D2F28431D1621353AB07E18DDE5EF482ED6 - 66: B2CF89D5896A1A754E2BFA2A313D2F2FEF4FA871D5424090108F5E2C92DCC489 - 67: F591B64DCE89C0E785EF9BC286D6D7C9D34EC413110DD6B7A7A55D6C9F11ABEE - 68: 5A5037CEE64C29FFCBE51C0F9A4F1A9B8F5BF3B96844F66FFC6E91EAC6ED4196 - 69: A5CD484B9FEB758550A2AD0606439A5497845A65D409EA6EB013581B7399B83C - 70: A467C992FE57B26E79B2797BBF1B8AF1B823967C78D34C4B87DC5B73635CFDB4 - 71: ACAFC2F7508FA9480740B82A1559EA9920C620E1F13885D7B20F4E0A07D24DA0 - 72: 542150A182052AD17AE6750A7F65A1CB30CC1CA0E2828B5AF578FC7D94176808 - 73: 2DBAEC413AD340511269F2E5D875AD94E416FE4F8E207E8CA9A9AF3A9B7CE37D - 74: A0A8C9BD72C37C79DDE4158812ECBE8C967A95DC24E90492C2F69311E93C224A - 75: 0A8A77A972DD2E6D4456478877E6B79C39EAB34D353C0CC61C28B2802B81767B - 76: B602FA82C2B8D5CD187CDB4F35979D2E5D62BA25F34ADEC877A647259C870DAF - 77: BD9C07ACEF9235F011E6A73B3A15778B3B94CCAC18D2656239588C666ACF9D49 - 78: 53BBC0CE653A0C9A1D0CC9050B04C7D9988E009BDE2A68DC7A4B463F09BBF7F6 - 79: 0AA89E39EE1F29F5AA38BED023DE510DDA2F647A166ABD42E4B457BB7C850A59 - 80: 66D14665A97D848892318A7353A931464731AABAF79BFABA31C7A376A377C259 - 81: BD5F75E35938B891C9E049DC8A24C8E20920AE8703C2D65541C67C469DB9CE31 - 82: DCD90C771CD1586F58A9C3B0CAE4031B1827CDBBF8F8BA1E6BF4428F60A8439B - 83: 3DA4EC80ED0DC078AA082332F9258638D80D806453ADE1E5065FFCCD929B5C0C - 84: B6601F93B52F406FEC2ABA78D67DBD464499D255DB3FAC26923E80916B633D33 - 85: E83A6830308DBB72FCBE0936409C6BF556937A3A19D45BDF1EA61F8E4FD88A28 - 86: C06C09A0C727566B81D8858A489F23386DB036E67383DAEDB4F07973779B8BF6 - 87: 973271C0A71C38D1059A2E67D8F01D88C3DA8857A130E8F8537CBA7FB123540E - 88: A394A56C69C8B02F18F62FE7B6D7771B14CDF962B871BBA164811519E11850DB - 89: 3EC44F2894C6170D0995AEBFC43D182F7C4F45A39EC9CE28FC8032DC3AAAA7C7 - 90: 186EAC056FABC2F88F2AD2152A30994DC3CAB6C90545CA662B7FF59F57E73EA8 - 91: 03B9DAA373AA3C9BEF969C64DD0A54A512AAE317385E956F8C14A078201F9C69 - 92: 46EEA803CD185BBFF9A621176EA362A89D9BA277B5845703FCA216A3D09F7CDA - 93: EA58A619E011F8FB240F7949B3BD72A4D74DDDDD39848A1F8721C7D7F72F77FE - 94: 3D21A5B4EE13A362D4191D7126D62290F516DDF8D5A0F10BD130BE19A0808F25 - 95: 4C7444891287880768F84925F262EA12A01C659B635ECFCA3FD91C6EE36E0838 - 96: 27EA80057F0101DEF3355C97864AC92449DECFCC49EB4082174106B91CFC027F - 97: 9268A7E69417810E40B589A92899FD38818C0A1C95C45FA211A3AF03F155C09A - 98: 1E48B801D8107593C2BF886EBDDD19EF03DA463C2C0BB3F517530B025115A710 - 99: DE025B408B848ABE14FEF508D2F9DA921B8E9168BADB3B09B104B2426BA2DD36 -100: 42854A2F179C5A23B8347210C027E87E2943438220A6EC50AED23848D5AB8B21 -101: 265527373FD4F600EA78CE9D7B4D11E5168B7A10D091D827495F0D58572D36D5 -102: 64DE6A36BBCB296C7D216F8D003E206B5A612AC919B4255DD2D63AE65EB7F024 -103: B3FBB1442BBE6178079BC275F7FA9805C52734B90901834EF98536F22F80926F -104: 92A8C765207FE0DCA22D251A7570642A28F0BD5502311352F6E9A9CA75BD2AC6 -105: EBB7E317B38BA41012B872342610FBC1EA6DB09409A46C64C61F3677A5B78F25 -106: B43AA7CDBD939977AB7C8FED49E40D9AAC21CEB98049F316CCC7DC04893B6199 -107: C07639CF7817F04B7728AF815E04BA0C331E79CDD7B292DE7C4AF1ADF90DC636 -108: 134AE721E2094F9E4FA953B53A680D61603CB9963C20930DA027D0AF0E4FAD9F -109: 128A649C96B60203F0EC2C3A996628702F776763CDB22877E7B0B907729AC848 -110: BBCE42FDCF9A8D8D04D1EF37CBE4F9042A5691F429FC6C39C2755D060009E2BE -111: 3AF2C22079E6E52FA0BDE3B80F57FB0D1550DEEB2AB369F5D02D8C432D8CCFFB -112: A84361A8796B82E8E2B30A2D933A45011090180C07D42BBCC9E72395EF7EB140 -113: 89C12CE213A67AD8661A720749A61550CB059B885D22CB4177663420624E4D71 -114: 2F22F53A1D44F6B867A7C6417525A914E05C50996F64542FFBF37D8AE4807E19 -115: DE5A4C424E20D3C318EDE55409E1C85464F8D7D003F9E35E5B7B5A768C79AE3D -116: 9E87ECD7C672F00B59FF568B8AA9FD56539E46EEDDE94436083AB6DEB83AA199 -117: E12433F1D81F60189C50FDCE7FD53D0C819DB533A5EADD0F1E1FD521E4BB3B42 -118: 4C7CDB3FB90E745D83FA08D726AA2F7E2E31B2A501C9E7BB47CA8163DA5FF74B -119: DAAE1C5FE8CAAC347D7B054D3D9F9EC7C4D454D5E119E014EB0298978385ABE8 -120: E4BCE53EB683B770AB162A3AD630E3A7A689DB1DD27AD3877C7994DE337FDD83 -121: 410EAEC6033749B341FDB60305174E7F462315AAC28FBE05EBEA2A2A03A34EA7 -122: 3AFF9691776D8C1CE721E03EB46A3DCDED894F3624CD992778DBB91F148E6E97 -123: E10A1376446F2906B28922CA87427246B6F04CF15F4700A13CF6C487E14875D7 -124: 72ED1CE89A1BC850EDB6CCFA7551B09CCD5707CB3C0DA787FEEC08DACF35EBF8 -125: 2F2BA57B7232266F6E673866EEDC6CA1D07BC00F20D0145D59D121508233ED90 -126: 051374EBC0F6BE3AC550E7B7EC8903972EA87762479A5C112D80BF0E3843AB9E -127: 75BEC020ABA76ECAB07C5B4A8BE94DA2A42958AAE79D3E2799CF1D748724AF3D -128: 774E9572A3D3C3F96BB90D2FB91941B34AEAEB5548AE9F6CE41A63EE8F0553B5 - -HMAC-rmd320 - 0: 6BB314BEC5001997F31DE90C60F79399239D990B45372225929B434D5B696EC48F6EC2C4735F372A - 1: 798E82821DBBFD7B34F53B8407C1330E7CA0CBB66C99CCD513E0DD5A08AA0D380D16A78ADB0271BF - 2: E4D7BC694B251914E631112D6CEA4B29271B83109D7E8DA8E03A92A49A9F055A017FD30EEE186FF4 - 3: 2D947F3147ED5A68480D0A565CCBFB1DA181B04B7FB3BFC8A74275D235BDD9A1BCB465CC54460D64 - 4: B79D315D272E933DB98666C192F860A20B8471D449A4745489EED72617163A1E8F727F56F876889A - 5: A417489F3F98D5D8A408B7789D2F8457110E0AB95358C27CD9C81D7774F31952F1B4BACB26F5374F - 6: 7BB776ED9A6022839A3037FB70741D9406B3C50ED0BA73F9E762561E398C67C6B45975B0DE85B5EC - 7: 7E375E18F2F29FE221B262D1E8A0726748CD1E199257186A896E0A7B1E0FFD75AE5357104A179088 - 8: 60BD273642B504D1F31E7C5C3A6D6ACA22C7ABAC992E51595588F116B87DB81331185195F34C99BB - 9: 4EDDD02A8CF75B93C07A1FA732AF3DE3027FEE6BDD8564A03222269AD2C2FA327FDF7D59D8AD5856 - 10: 1AE3C26098F28EC4D5A3440B35CA1A45A104606DF34B98D15E8BBF95A6BAEC4C9723292DE1EA5834 - 11: 589D63167C20AD3DEB5766F7EE04B164F23DDC49F7B4A2F1C9892CB50AABD7998F22A0002012B719 - 12: 8A465B4BA95E864304D58D9693156FCE2452FF5F51D13862FF73D021E42D49B86AAE2AAE4D767468 - 13: 93FDF311E9A19571F56C729C9927EB26426B2A5451F6992918A9D2089AD1F77E08140DAFB20A88BC - 14: 761DB9147A2B72C9EA422164DC50945CFBC32BF1A04901CA19FB5E2A5FA564CC3FAD559FC0E3FD03 - 15: F1DDE31A584036312AF2EDCC7D0D03D25884C4A2BF681D2CBEF82CE669F826DCA47DEBA37558B83C - 16: 39E5ECBA876455DAA4A3D40488F0AAF07AF70B17600E79070FF95E208CB4F951D33550461EB613F6 - 17: CA1A452109245FB116C6266FF690AC37DA25CD57CD0E2E75F1A8B5547781860FA7E73FFEF75DF136 - 18: 94A5EF723D68468030C880B61BDBC7255F69B507D0CDB6B2FB21BDEE95D6B7C0A957922875FBE848 - 19: E041DDB6B8AF59697C14AF917CDF6B58C22F056D09F975408714E279ED203533D027B3562FF038F5 - 20: DC76B8F8C10BC843BB72E2A81A13EC96B40AC4922B3E18EC6DA326D8B3B88D5363F14B8181296023 - 21: 81E86006B92EB73887118394828F35923E5BB8A56D78A90BA69A157B6C1CEFFDDB5D0AA37477520D - 22: 67F975C805364CC898C90A4B080D2A99CDBAB174E572900A1B16AE3B0D6371247C81A216F295803D - 23: 4B60A0A089776065C394553B0A656577E28C7C8A3B91CFBD8A77382FD6ED9878C1ACB44E8407DB1F - 24: D042070EEC507747301CC94F3946C20B06E2393E9E390B22A219618A916435F441010FA41DD928D7 - 25: 085C7DF0D8EF339C86362BA78D9E57BE4FDE0391075E4279271355E14E3001953D3A3514D551F269 - 26: FCC923DACCB76AEFB583A4DE84C494AF5116A39CC14ADC7355EC42AA4349928C906CD205F56DF3CB - 27: F544AA58C8216300BEFD81DD33B583082C10EB4E7C50DE319330359835BC0F25646CDB413D64A668 - 28: B90B4C339ED9C060BFDA64C34435E47B7C35F8DCB2F1B3330C40D7DFD10A01FF23E37DA2B995C7FE - 29: 085C91FE6DA876348A67857D87A28759262015BF4F5ABD44CF24FA1392F12D34DF61110317945D6A - 30: AB770E7FB347BAA164C66A2CE4D884554E23DDA0B51C75C7E1EB277AC0771757C7EA27EDC0D769F3 - 31: 2D0DA3F543CF787F01F52BCF02A534032E536444253F50B5553EC959D73E111B592E48628F9C255E - 32: 7FADB0E3D3053BDD762EDA1876471BC98E0E7CD50BB72F05FDFB5BE7D9703CE2909060159B4E48C2 - 33: 8BAAD87A1D5E786B57BC03B50F93ADD6C470BF113A4D6019E59AE9EC8CE0616F0D9C5145A3A2550E - 34: 885B843E252E320D55CCE929CA160DB74E5FE3221385CE6DAD3138648BBB2B593153468570675C2F - 35: 0D0592EADC5E67CCF74CC21C7277C1212DB2ACF02FB3A508C77E1A2DD58B77F195BDA70DC5E29DAB - 36: 4798AB6C9B0840B17B12E20F3212DC92655F365905A563B1027C6699A745D6E063491CB9D7F4A571 - 37: 20318E2FED8E7885005DAC59811AEECF1E1BDB2DBA9C14599903AA484C033C9E54EAFFE042E9C0FE - 38: B01B287BA0808277512D8FB2461AC19A9093C497543B58757946B0873C0C5FD2D144A3E70D9DA1D6 - 39: 267A806596127FD0175E96BF26704F07C220014AB64D430BB379B315B953CB46D5136D2E6D1F52E3 - 40: AB4230A4D10BDA68F3B66FD95B151367DD5D3CB2179FAD56B857BB16AFCAAE72FCAF0D5032A4656E - 41: 029490B3A1D5B12A9C500B30DFF6BE09A85F232681E9F90FAE22341FED751141D15427C428FF8B27 - 42: 1EED80F1774A580A4D5E3BED52FB8C0C8E5AD1E3EF242F0C4050AA10A269B010A4E48DD9CFE49099 - 43: F85C413166FAF8F0093DB7D3933A2292DE0F33BCFCD3A98EC32BD8E9DB53B0FC524603AAD42F0D64 - 44: 4A38A4345E6308ECB0151B09B53EC23E0759353AE0ACE5D64074F3C8230E712CDD2EE5DDCEC2BF6A - 45: 269621A01A6529C8907A8087D404A93511F41EA3B9FCC29B2009F2225F19A56345B54B2D75D534EB - 46: F1A6B2F6C73293AD7B96A34A9A05D0BB2A2B0CD00F35318AFA0CFCC0DEFEAA7991B250C153A8FA31 - 47: 7C70C8A59BE27854F6A10423DB923AEFB1ECAF1EC79C7A27DBE7D21D7A799B16E8518B457968F727 - 48: 78432BA93CE7919435DF8BBF67D38CA0B593958A78F9CC9D62251C21D7C887AF610D4F6C6CE184C0 - 49: 30879619A02379E089099887B60C62919A8466669B18669CA4C15DE6B2FCD86C26AC9AE81B46DD8F - 50: 79E029F4F43548FE2812B40EC820B8976BB4B8E28847B2BB6B4E7A8D2B1C88E3A8068071526C551B - 51: 171D1DB475617F58229CE6F1C47E3DA6089712EA53FCF083EC3FCBA5082CA4127FE5459311C791B4 - 52: 0BDE5B4882677F6A9FA7649FE011EBED390BBC3E97234A5584161D529388E624E7640F7CF58C9DC1 - 53: 06229FBC2766AF708181DE0EA6AFAED25FDFDC72569CB7B40A83FA7A762E24A4CC9A37CAD39A4BF3 - 54: 1D1ACA8D58D2AFA6AD8A255E8207318B72EDEF9A90CFB6AA6E26EB0265D3F26B6446DECA46BAFE1B - 55: 6D11997DBBBC11DE6911FAA890223D0E7A8C715405F39295A0E07E2E34327AF22950E20232DE1FC1 - 56: F8867E791006CEE84BDF1B8D2C2B697AA7065209D38B3F60011EA83A2F9C770F21EA57698059DF88 - 57: B06A67F93CB85A2D65FD549EECA5E13299B209E077CA5DBDA6E7D3027A4AC1DB58CE2EA131849C2C - 58: AB600BD8835C2F98C1AE73D52F2C188AA2F2BB33DAB1114843D414C202516287E7C3E023B7CC5CD9 - 59: E3117F1AF08AB8690D112D8C53A683CF8117D9ED594AEE69E54447D5DE852EFF0EF0D71C5BD22900 - 60: 424D992BAFDA125B094064336CE620F8F9C8154185580019A1B581E5187C1058B6A61A65F2FFDE92 - 61: 58BB0D6634024C18BFA08A45C5382E6151A26EECFC8D8B16A4440E32055E9249F5B2829D972A2C35 - 62: 219085E65E688663849B415B335BB7628B1EA4EB04AECEB41A9F09C59A5D1BB737BF1D899A9F7A7B - 63: 98D900253BB8EF2D886B5C71F5B2AE5229FB68818BF58FDFAF75191DD9942D15738EDDC975B4034A - 64: 7032D6661227095A6A7E6B5F1AC45675FB2F0347A8597A58B715C99CD2441E2857A32E1017C1C7D8 - 65: C6DE00BD52E2FE7DAEFAB1E3410556AAD23D5FB43C86105BD928C2FC68405EDC5AB2A74A17C9C32A - 66: C50B407AE3D9FABF9E185881B89F94638B067EFAECDDE349A5024217BF6A00B48AFFC85736CAC75C - 67: 9A4D2FEDC6F9BC6C322E2CDE21605CD9D8CCF1B87FE27B1361E1916EC443077B6DC751F2CF677682 - 68: 224A1604745BE2D9E451CF3A90831EBFC3167E8D581CBA8FFA37A3A65363FA8399D72974730EF213 - 69: 19E7D976BE38FE1A3A9842C0A453BCB79242A5E0CB7514BF23942606278993EA31C31D6EE422AD98 - 70: 8514F6461280FE7EBBE1ECCDF08CCC1238CF0A2F0D248987D52C9565FAB8DC359217DC27AAF33038 - 71: 73CAD4AC2B14B27F35F65876DEDDC68837743DE3D7DA16EE546D166EDFCAAF0CFAD4313A4ED3BE20 - 72: 4B394CA698A8BBA23C9058BE76E41B9EBBDC199B1F586A0C0D2823E954C1C0AD393B8175D1043987 - 73: A104492FAD9FEC60F46EC4CDB8A76548254F60EF8F527D642DF4C8FCD0657D593A2EA0D68B491929 - 74: 95DBD131492620169B931F3380CE81CA21B8B7A24FFDE14BEB138EF37E3E82682F7C43C28CE69FA8 - 75: 2118E9456D6FFB475BAB84A45A77E1146DCC29EAE15BE88D282A9FB6D8C0D276FB46145367F578C5 - 76: EF61D525B9F715071307E135259E5BA8E19ABF8BF7E7025BD2180B263E1BC9C805FDE5013BD04278 - 77: 98B374C8CB3EF9FAB79E5C1442B210AD11B294C7904E2A48CFC3B71065CE6124D8FAD2C6A59167B1 - 78: C4238927DFF50B42A232D5FCD5B6C3937F2DFB2172A5C8830CAED90F0F3F7A3E9AEC16BDF6250ABB - 79: 85116B15837AFF5C066124B962FDEE740271D5B78C13D7B26070920BBD6C6F86F8068F5751C376B5 - 80: 9C10D8274E4C24E39F755BD9A8932DA00FC07855ECA01A1443D915221C1ACCF669EF5B59030C32E0 - 81: 8DA2CC33EA181D2DC917AB2A83C91EF35748A8DFE4CC49813B79A57A1C3DB777E9FB544EE9A97F12 - 82: 3D97C075746C74D2EE5DFBDBBEFED73D5C0F45D533D41EA71014604D066F11543F3ADBBB0F5914BC - 83: 9CDDB4D0A43995EEEB7E3BE7C8F6B00F89CEBB82FD29684AC53588FF463DB62BB7B3364D43BC55A0 - 84: 8AD4FE46CFD443AC7CF50EE17B59EEB31356CC286E6FA58943884942B8C72A21F47DEF8DC6570B21 - 85: 7BF233C1100766FA2C2E4DFA60634720E48DF93D0A309CB91E2827EB375E2DE6714BBE6D5400B100 - 86: 6FC30072CE402DA07F48CBFB6666E4332CDE4E91A9D2703BEC137337E1BA573E3FD11C662F022A70 - 87: BBFB1B50F80FD8FF1F0AC361FC7D18F798D162B09538E8954EC5F976C2021757FC377534E83A96F3 - 88: 0CBA5096A62AFA90AABB8C96CE685E38A556BD3BA605E128B3A38CE4573F182B9C3687362EB9B624 - 89: E8899744EA6EBC9D4E7219CB44AFD8338773848129058DE95F0845C9A8A80B8B2FDC281B2415F492 - 90: 97CF03B2F452319AF31F703EAA3D35EC25C4AF324526ADCAAD9C2994B8EE53C710FF2526B34FA1E2 - 91: 3F471E6848B2D18A6BC714F18C28A306CB0AF5BD4CFE60CD02F59D9587F9127DB68170A11E1119D0 - 92: CB39FF820CBAE0A0B633FA81CC0D57E88AF717AC7C86D3908052E8BE9EDAA546661A88ED8DEB2EE7 - 93: B675B7B8E056F246FE9B8258CCB96C0BAFF1E6F4EEF43003EB6463FD027B9EBDB4875B56022ADB3A - 94: B94A823E0C2A1C4317F81239A5D8BD59BC995EF5D69AA1BF402BED31A7FDCA92F54C2F7BF43429E6 - 95: F066FFC74CFF306E79226BFE333B518745D93F770620BCFE0CDF901317810EDC70E112C7E88BD815 - 96: A9E94157D8D4761A70C5F6FD1D0455785A4A9A110F935765B8ACD2831177305B04556B17D12D01F3 - 97: EB5E300BE6D90DF92E0BC094202485AF4EB26CE0B8DB98D3044F76D47ED312454F20AE14FB68C12B - 98: F9C8B99A97F9987B64816CA6CC00203D186CAD4AC2C3661C114242BCDE403BB3F3E7A706515DFAB6 - 99: C9970011DFF67A72D5FF5E0F60218D2E98F35030DBE72D435FF1F9159C78C7544E07EFE655593854 -100: 17C3BA5BA65214182BBC95BB8D4E07D02EB7A37DF36DAE715EC6FB8D3D4690EC8BD02A7A57E8AB19 -101: A7227681F0D673E7126CD8253A7378002FA25E5392A9E24579F3767AB35D4C8831B9209142E6E776 -102: 8D28CF4BDF88665DD6BC35D7E9535341822298C1CC62E9733668B471CE5FF2ACFA19DB59D089AC43 -103: F8E1AAF0F8D39E35C8C84D89751D79296DBCCB7B3FCBA5CB56DB2392E9F10ABA6218BEE5A9F174FD -104: 4111B0C5067C81391C32E3E8BD91408A88C3C6C793B60688180ECAD3D7141C477BEE20D1E3D2EC90 -105: DBC4B2C5E17CA81888B674C7420955827A415C840FB23EE559A49667081555429C16FB5CCD86552F -106: EE4FC2FBC4F9C83E2C7E953B4A886EB5F8DEEBE999A9C2BACF2BDB06C667B9DD85AEBA24A6C8F0C4 -107: FE6E3C557695182C187DD32E72DCD9026E234C9DC4AD5839D586633B207F9D4B2C8547A48D93B929 -108: 51354C2EDB9BE21E6CC36740846D68E46E7E7C4F760A8F9AA05D5C4A949A87EF23D710E2BF3FA87A -109: 134A2795887A51348B9506790B97DC5670AAA2AD8F9A41AB6AB03CBE4C5BAEFFA4B643EDFD2E0181 -110: 6A31F6F9BEAEFEF32C5BDF790423699FCB7B2D819A24BE4FE3F54AD95F7A41F1FCB0B79AF0A5EBCA -111: 234236F8CD036E05CA2B6852350B819447E3F983F20879E94FFEF7AE6D28EFB984B67F6E0A4ED39E -112: F152513EA12A563C4076A2458F661A19945664852936C68FDC3385DD11141405581FF0C097C58023 -113: 7A81F710EA1DCAB08636B33CE8C8B960902F32CB278A142385D4BCAE50F636AEB24A83FE9DB13361 -114: DFC9843B0614466312DC05C5834A1A8EBA0C95A2525E780ABADFF7232BF283FB0B71DB29F6061E59 -115: 6C11CEA5DCD9CA78955B65F3382115922D0A43D4DE81BA38C3A57D652A7F94CD521E65585B19C147 -116: 58D2C0B7F570BB389C196895FB966B74CDBD52DA42F11D11003C2D37B44E188003A4EC5A43E53C1C -117: 46149B68DCC3BC2CCDF7793022EFDFA7AF4FDDC23EFC067201D04841E2A7B9B682B60C4E5884C706 -118: D41A6E7699735ECC2FC0024CE6B3A61B06451A8998238C7F9797BEA77D80C3A435D5F6F940DF08DB -119: 23E219B422EFF356426CD7B4D175F8FD3E52310C09949157F404FB62EB37A139CA1E074BE140ECBD -120: 490D9B7A0D2CA906A329559958538B1DBE8DA8BEF33F943F79C8F2ED79126918664268A7AD48B6E6 -121: 6AD73A16893954259ECA9913AC83B80DB1815B7037438C6D885321531B97C40AB6DACC25155FE05E -122: 2760B5EECD5D7E53366CF55E7F4A19BA06FE50BD2DD03B78D0160162C24916960615AC25918DC030 -123: C751EB15AFA4119BFE84FF425BD38108257DDCC50AAC93DBA73C4051D6243A50D02BE0F3B930422C -124: F6C5CDA89B7111614B439578B9650EA676DBC9C67AB5197998F195320AA6EAEA80C97DA35ACB79E4 -125: 9B63CC8479312BC44FBEF8B39A7B73B30E19303EC352488DB3ECED0EAE7A0E64D0E013DDEAB7D97F -126: 3C2FA4A747A64F5DE9461C04A30BF2C56145A90964C65B1F3B25AA6A360734291ACC10A4B20EC283 -127: 74519D4C3430C954CF68C916BE147CEF18B8AEB730BF6F9E01EC3E3254D20F37C01E8AA30A2242E1 -128: ED76E76F98E7BE04796DE0797E60C6E0659A274C7A9804358FE40804E2BC68D88E60ADC29D40592F - -HMAC-whirlpool - 0: 5C36BE24B458FD3713761955F28353E433B1B818C8EF90F5B7582E249ED0F8C7C518ECF713410885E3FA2B1987B5DEE0FBAC210A007DA0FE995717F8FEA98995 - 1: 30C66EA7CE95764F4CFCFBBE4C166E80A1F23E8C88D2DB7FAC118BCA9EE28299778610D94CD545C18C114A2A144F9E933CD80238E9F1AC737F7149BA232FB846 - 2: A61FAC4DAAADF3DB746DCDC24CACDD8C2B74429CA812D86091B5E7F8186753B34532047B3263D2E231074CCDFB18188747B657E0B685693901CBBEC524949244 - 3: AC3BBA8D998C234F9BCE9A96643E8EFC342F4772DF5606A812C1C6CFD644E8F2B8F9BD724CBC8D769B74C52669705BD3AD390CA61DBC7EBE4438726A91FB2455 - 4: 59AD4171B4C33E09312A01B97B3BC2B7DA43F8791561E32A9186C9B0C418BBC31DF54D6A9ACA00910C0F3DF5D7C2DD7CF5634B76506646B7D4EE5C60AA7C7950 - 5: EDFD9FB5B7BCB39811D87A890171096AD2237B78862C4921191F8B0B137DE5178BE8DA898B6A895FA6C4F401714D2AAC743F512F8989E39081F02A2A0F9F6137 - 6: 6BBE26824C7582213F89F773C520710AE400F01B99BCE126C5F3ABDE79C8B304139352427A3E25A313A5F753A94B55F1EE9D3A0300E8E987E98004F58707F73F - 7: EB89DDACA2BA68940C4616B3B1BDFC25D94A78B8C3A533F1231A259BAF6A6706E1B90CBC2F21A76210C0322C7E4286E393B167A2455DB24C6B52B0CEF3EB78A5 - 8: E8AF385440589959D67746FCD40E295026E942E44259169780B3954D20CBFE2586D2A8BBE408AC2D707B0FE539DB43B3E9B29A8D26D09A41FA6F191999A45186 - 9: F6B9CF6E0A337906517DB09EFA31E91D57D6B908ED5116C13B49B8F1F3C3A872EF42DED53F939CC4EA4122FD8580D528AD2DA72BE063251CC89FB52741E2AEB2 - 10: 274FEF3E5EF7AD7AFB1161A29492F0DF44BA9E1C30E1E88CD708A5D27F2B35C45085A200E9F42F340B0D9B3A1A354B1F5F6D0D1A754D51DFC39CB2EE213112DF - 11: E2EF7A0A64A3F384F95823201823BC95060707F273E395F46F3C0627E1CD2BCE97DB2984C0EE7A11B22E617F0CF64A3F44BE9FD6B38C3A07A504DDC1D33C73B4 - 12: 681D72B9BCA446200BA7578E038A8FC418225BE5F02D8DA3CF085182628B7BE587DCAD4851863CE1CE8653E4916047F8E92E91A6B0D7FFB065F316DA93C4F44A - 13: 2CC82F237ECC1B9B0B9FB76E6B9651C56AE57CAA072A0C20B968F2A74FCA6A9749FA264331F4F2612AE0DF32810B0CAE95E5861473F4675766459B7380F7B9A7 - 14: 1F3818CFB04AA3882442FDF1F5CB0DB2FA9604228D3CCA1F14DA16B35D9B2071B372996A176AF0592F00175EEA4C16A6E0162DE62DE30E8A80FA669FAE9A33CD - 15: BFE4BF868A8AFED289DED5F6E7B21E6856107EBEFAEAB5CD644FB5634181D52D8DEAA203C468ABD279E9BE73507A690C0B715869F6E722C4512E815FA4EF641C - 16: CCBA3834AC7BF06B16675376ECCD96A0F91E3E3C588C5BEE1711A00C107B35D603B20DA8E5CC5FBA6937A24DA53D8F55C907F3E53F0F255E080396426E7ADF9B - 17: B09F6898640E5CF77B6DD3D5A8A4452F4F1D25C90F7AA55A205EFF2C319EC0BE245CEB4190F11D85C2F7234BEB899BDA465C95A1C59568987C4C020B9A7AFC00 - 18: AA7FEEC56E16AD79990B003AD51626C87C9CCB90EBFD748DC268C0C8C1DEE1BDCA1C8064FE7570A5C624AA0CB6BEC163E63680377A16AD49D1AE166090DC0D80 - 19: F755304A4694DBBEB0E59B978943F3D4E429F8123B3D6CE27AB400D3C4BD81A13A8C3C0BA0FA7E5F13BCB0B48290933A05DCB49A5907C074039427F0EC9004FC - 20: CB8B5804EF0478645400B1655DC6E194C8DC26112EF76C57823A02F39C8ADB42F1225B130FF0D40F580DA8CA95D82C0441E3A82C206D9D8D6DBD63B4BB1BCCE2 - 21: 4EEA4AF294C458BDBA7F49AC0826BC295BAF5B16D16F40D379F6B7C3456EF4145B5EC7F7CFB85638F641CF4D07FE3904DA891E68288FC11C0C72F54430915024 - 22: EC52FC8CC0F849E633E3F7339031DCBCEAB69B6634D3E54E7C153CC63DF7D3D3F93B13C8E751E79290ED4845FAA3D5A79A7DE6B100F538E0FFF470A51CD630E4 - 23: D44419C0A36FBFD0FB441B596E8821D3F543D80FC7EB5A3389037BE0139921027571502B5C53BA30D31D4A053E830E610A394842229E08485A2376CB9766313D - 24: 3F4BDBC8A4C86B3F646CC445E2CD54B4C786BAEDEE9FD91A879640B4085D46FEBEECECC95E819ECF6AA9085C2309E79DE1A988C6B68930ABCB9BBAB90F1C2F85 - 25: E5EBC015269E0E61BBD1717618C15D44953AB6F854D962A04FE88865626DCDDEC5F094AAEDCB708D947A9547A985F0B287CA0FBBE3FF2ECCC4C0C4FEE4FE74CB - 26: 010C622DF84E677805108A2C5FB1E8BF5922D35CFAC2408F2AE174D353AF169A40169709C39BFE90E51B095C8C0D2886B4F10B37BEFF805D384E29CECE89C4C8 - 27: 3E9C7BE96E03C48DEA773204E1EC3721EE817ED2403E3C8F950A4C447949438037E2AF0A030CDB983D3FBE5B82226F510FD91CF8830F59212F8CF26C2B5E4DFE - 28: 8797C9C14CD2DE3CB1D29808DA9F23A5502A7BA579586DE9513B980FC06990DE0E29837ED06E24B15DD0000697666B8D3DDC556D818E87F84D125697D5E2F8FE - 29: 93DFA3DEB3258FC7C4F5362D36C2AE21AC0471AF8B895B5AD1C407E8D50DDCD0111AF76EC500D7BE035E6F9CE932190712A3F52FBA4BB0DFCE74400C82D1BD8F - 30: 5587EF7A31353C0E9C346C837EA645770BC5F5C541B72886844B4B0789FF1D95134F558B29385B35960AFDFEA7E3AA40562C12683CB7DD9A410873565CA10880 - 31: 052CB0FAABB263A49516E39525023E2A02DCDB2D5FC78948E042E59F89363FAAF1869D42EC9D7AFB0DADB7D4E99544BEDA92E3270544900A5641F059571B6238 - 32: 2FAEBF049CC4C9C2770E859739B1774EB6E6AC2EAF1AF7D3EB55774C03ADC4C865A65C82E795959CBC4BF00A64AFD2AE0CCA16D58AEB874E253FB9FB9A266790 - 33: 82FBFD2A46F2102AC27089B6889024FA9172FA691C1E3BA9B44A394D52EBF5A7A8BB2321708ED9AF2776D8BAEA13A5F2E9EA4AAF420A24B6F59E2F583D54A797 - 34: B306D18161C766DBDC734FCEB08D14248EBCC63FCBB5B9CC0AE9D690E20E7152D771B3D623D7ECA1CBD305A31EE10C220FCDDC2CE76B578E2F15DE4741E9C9AE - 35: F527D57F0A5F13D7FC6A30A84BF414712044B56FB8F6C1E1375A09783968A851DBD495D51C693590E7A8BB570A7F1C0C9ADAADB74EF8EC71A0093D8D1A4285EE - 36: 0D9F9DB43A0FB4BDF70487002943A6CD3BF200518500B6934BA518B3B0958095930EF59BAC48C84C1E1ADB815A6569FBBE7E61F039BFD8C2F727EF4636542A5D - 37: 614CFB257400128FBBB7B56550E86198155A5647FC11111FB4D36073BB57AE4D9C0A54BCF0DCDB8B54ADE4FF8AE5645821CF9C83F7FA9468FC2CCB552E30BEDF - 38: 7032724503FA5B0765D610D3FA4609F4537F6EAB75D7CC4E2A15D2B1421293D9411C9E8F38999F7D64D607EFE95224331E47FAD4F9BDB6AC19CD3ADE47C17E7D - 39: A8E4316126475B429E72432073CBF26E94DA450DB553D46667D597F0AACB99325C9EDDB94F8CE33551857827AF3935F2DFFE1EE69A20884D58E095390C04B925 - 40: E7E90B19E76017EE80E4979FE56A488AAEEA011DE9DC068DBE53AF06ED44DA4CA3BF662358F191FE2842B083BC5DF2D4183668F4E7FA9E2750869DECA7302202 - 41: 818D734A02A0AE76A0012D7BFE983B17CACE37D4890214C7C53A81CA9F42EF0A472101D609BE5D3DF4F0A55DAF154C20A1A97D53112E22D136C03004FE09149C - 42: 0B9F5B2D4BC3DF781F55ECEE149470F3BF68FC51D121D021DF0CB8D4A5EDA42EA6840DD735ADF8DED72B325662BCEECC6195AE831D169A891F6663F8D7C6E0D3 - 43: 7A5AE42C635B250598C536E531FDAA1746DE2EC7984DC1BE488DE4766D0CD544AB51AB1E62A8A170D120999A61CC6920DB96935F295817851A4CE285D2755112 - 44: 95093085CFE52D746C54DDF8D2FBE33EC00D71C39BE0865B896C331C7E5682FBC0DD84ED15B3F790166D537A9A68EEE5FEEC63FC761EB854018CEB68245CCB90 - 45: 8BA177C495E9832CA8EB55E67E5D7F34C59C4C59D56D50BF6982B36AC341CBFDFBF5A98BBEBC26A9509FBDFB239312DF3B3D5BCE70386EF0E593E17A621F41F5 - 46: 6DD39D94235D012C89FD030341392AE42BE7702C4D8E725C4229940BC273EBB8EDA7A6893B4FF86D1EF84DFA119058BC6C8CA47675492A0D37C859E6D9BD5471 - 47: 13A2FBE3DBAEFCAC5AB8BBAF91BAFDEF5FE38B7F2EBA8BFF0F44B4BBB236613B8BB122BECAD9852BF7638E48F0FC656F9C432D9A66C1188DF3FD1D2A88161139 - 48: 33B9B7EF63B302C1C79E0A43D77487C55D38C53F29C800B4CC287A99A440435121C7ED78BE7406349E65AAF991EA0EF19D06C1AFBB814FE4E0BD68613AF0C760 - 49: 720E1005ACE28903D9C2B6EDE02A52F89860788AFB35208B4B7C147E43BAB3D06445DA138606F334624C606DFF288B0C70B487679685D1DDD26F1DA0A5F6839F - 50: 2A742F1E8CE6CDB501E8AD9BD256786A42E7F1888D9803AA8D5750817B3EA101331D7266298962FA28AF2232BF956FAC7C1C0B1C3DE4C5B3FDDF8E63BEB02185 - 51: 05CF6361A4A238091A1FD011336F7F53B9ACF78BA1B96997EE49B99FE36F0F1163E04B446EEFC117B377593EE078B85BB9588918C76612E2A6F9515E0CA244B2 - 52: F510C877546FD2D022051364A09F2051523F8E7FDCD3E9D2AC5158205FB36CF25A9E0FC394ED2FACA7CB4F0639B33B706FD4D072D62F6EB229E4D7879DFB45CD - 53: 2664476D94776DB52BAAF3B2DE05A36D3E35EF44ABB6F09670F37EEE00C2C54B38F70D06359B20F7E40E22B42901863864EF89EA473A1F3C834D22176E87E617 - 54: 62620CBDA92EC8241DD3A6A0EFB28254B0CEBF3E2351B10CF93029244A6A3D1DCE10D9A895EB6E8A33108DDBAA897DFF2703757DA3706209A7871F4274901E3F - 55: 51282A90B63998F7AE7ADE4787D957992A81D3009D6AC5BF824DD1507B53F6918E9AB6AA1F36373D5E5D3EF8D01AF9D05FBC224781C62C1DCB4A2089BFF5496F - 56: FE1C4394AE26E4B85752045DB14E0AD378726BC1C985C8805222B614C62721E40B2A0D21983FF40AACE8E5F9CD57BA62C37C8F0968EE12FAE14267D6AE906A7A - 57: E570E1183CC6AD7A2C73D7D0E96D3AE0605039603B6F6467FA5CA62E4C1424BC14B17E9614F0ACACCAFC2B1B39D8C081B05DFE2B9796F32C0C742FB09DC7B8DD - 58: E690D667A94344E267A6EA7F3F7A6A5385C961BB6139800CD5257BFD6C4A672DB576B52335D22160A372987D652741EC3AA9439B35D8975AEA49698F8D5528E8 - 59: 59FE977EC1D9927FB09389E3D31272E625F089AA75401D1B541DDCE8C6983A363622CA4F2AA9741F0D1484195CA31D6D315DF6B66E74888D111FEFD249FA0174 - 60: 2CAA990D06814CA73ACEFE0D9A815589958398999707BD52C3773F61B2DC2F20EE7AB7F66D643BD9686C4C460AF45D58BE9F8DFC1B5CFE3A5C2DC2C93D9491A3 - 61: F198E9238E9592A97DDFE1B0B56DE5DC05D358940672D84F15E1CE71ECFD3854CDD38762DF11E1871EE615EB6080E329495B37B23710DCA9F4179F5F95F3E2A3 - 62: 3D7C45603510C6916226B192C81B90EC213D30C11AA21C8520437CA5639D00EAB529A4C443C9A39C5E40DFEEA0F685B3D0E1277BEBDDBF80C3D5F9C8326765D9 - 63: BA081CA12FFBE3CA8F1E2703C96587634F8EB3BA140F93D997B6D0FAD1C1915ECF7D77CC0421E639B083451EDA605571D68DE81E7A4BFC183D7A53A07122168E - 64: CEFE2203F6428D267CD2E284C3B8C31E1946558A56A33291508093DCBF64FD5FA4D33FB723ED49CBA02D97743312138FA77AE960EDF5910E3ADBD02B1203FD97 - 65: DE0379336B1C7421AB4A7F5708BAA3D4E15CE75CEEB8C7349265E71942A963216559FD628C52F71356134AC328D0315ACB63A06382D4251A28127380CCEB08FA - 66: 95FD3399270415A80C2F295957C0BD8E33E35C679C31B2118DFABD542EF02F6E2E432559ED4066954AFBF90C982F60D73DA8BCC94DD48BEDBB00A8E458CCB6B8 - 67: DE49AD8262EACF733B567D8F7752711ECB5D0FF5CB18E5A99C6C35442E652643149A51C820E6D4481AFE63F5B6955105F8173DA57DEFA392E43F7285799A32B9 - 68: BED41AF0733EED85BB26E8A06949AFA1CBCA9BA87C085BDE29FD38F94709F4AC20360F7C7958457D2C49BC5A38FBA06D6A6AF77ACC883783B357032FBA9F93CD - 69: CE72D475D983EB5E528C4D71EEE48EF337E1723DEFDF142598E4CEB3B2978B1B4E36A69EAB6CEE8F3DB2EB353CBD27BF7D41F73FB184CC8785DDCE8EC22E9741 - 70: 24A8A7C759F59CD3DE2E3BA953EA975B60079D9B331AEC4D1F4586FFAD190EF53C2EC6BAB566660EB5D652D7D54265B8584C6BBF986537F54F9D8E4068C01F67 - 71: A7CBE72C99EEEACB387D4532BDB651EB46B8D30A9D5DB8095C9B3422D9D5C9480AA820CFAFE4047AA0546C03DBF07424FCF7B812274B3CDFDC76B9FBBBF08190 - 72: 16D536D1D673F74D9E298B16AE65C65E467131FDE5B4356FE16E3FC36624E19FA7B55727240C51C20491F3122A1AB073B98E095A24F4B3260EBE5211EA2DCB0F - 73: 692189C1FF6DA5862657623BC862F5041D63A2A1EC8986139CCBCAB114427B1A2500B152CC611C5D5599E9792F014A640FBF7C6D944EDA811CD92374326B2C52 - 74: 273E18F4B94E624988C47CC45820E4552DCC53BB40A9A24F744A14E56FB1DADD3EA4087A785AEDB5400A65971709DA1AAB9C18EF534087EA73A1FC8FDC865170 - 75: 8F048230B202743FF1DEBAFEF8CC93244687A58A8E5E3E6F7D85237ADBC724641431783E63FC8EF2FBEF9DE9CD50C9FB294341654706DBEFE6B05CA8588E1A3C - 76: 7AEF7701439F9DB556AD3B166B0B25A51795638A83E0EE25E5244BBE9D2E8CB6A8242D81E78E4906AC9CA0AD4FECD1006D89C5A8582D1BF51C278EE7A357232D - 77: 55CE718F7686A0692B3727BB5C24B16FCB87D8E8EC943A80236CF3E9B37A4A20194243E461B453CF03AD846A0B3287A2005D6603D5E080D700ED2FA25F0FCA87 - 78: 3378B07E0563CA7BCB91F29C8ECA876AD748760748AD07DE0208BAC227E0EED4A4834B8879F3DFE51FFA27B70AAD1F3E9FE1586B1D6B2B9757D545D9CC5DFBB2 - 79: 040E1EC767CDD85FEED2AC6767F0B3C17CE4579FD9525213A682A9B49ED03979144CCE2B94026AAF7D401355B90B25259954163E0C9739CB9E756177ABA053CE - 80: D1CAE0E4FB245C1AC27659C2EE86BADCE26228CF8EA24AA62B69995FF02F9A59B1ACC1C959EF91A7B6EC90EA9D57F49CD0E7621D09E4016676953A3F9B9D40E9 - 81: B41EAC0850797959C62DA2750F2BCAECCDFBAB843D56C034E4E0DC15C961FA611C50F22BBC135E5D99DC4E4B7634A8DF4B0262829593A8A86EF6C265DB9AE907 - 82: 66BE82FD1582736D0DE7861D9DF74715658CF3CD2BCED12868EC4D92F4B015B7BACBB331ACA8D58386AE6B0642C3740BF5F3CB26E76551541AD57E1C303D4527 - 83: C38BC2639AFEC1964C89CB92DE5ECB78E0B2994EF37F839D0A61EA688CCEB068B1A590D6CCC929EFF1145F5A5925A17BF2FC0AD352801CB92651F08352A992D5 - 84: B699ADFC29C54F178B3EFFBF8FE8BFBCD722F2997AC30754A8FC5CC6D51352AFFF7F31D7F71FD9D136E78D1C1E040B05E25CCB75C7AEEF714018F51663C7AD91 - 85: FDC4207E97D12B7A8D05F5073D47EF32BA32961568599ED34CA160F2EDC87726C53087711A63F6BB7E840F305477B931D1CBC1939A8B80205565D453675FCFD7 - 86: 07E1DDE64790A279B69873C6887FBFCA69B87C97BC25B969E2B16040CDD2051BCF43637F490EF1B051CD882B64E22DA55C253A5E796528526EC62A305FB05621 - 87: 3ABE353A4291A3A0ECF204994D49443C1FCC60C80BF6096026551048533E02C475B905046C7708F4852645168C88125221504E174A8B7E67AE424C0077163E0D - 88: 33793697140180A04DA72C0F74E1F845139937CD6F05AF74E3F3C5031D1D2DE571BD72916CBE67859FE501C0E56354C1360E3EBC36EBC11D11C1EE08D158247C - 89: 9E5A386AA9C4C5A2419B902D239E49ED84E542A6F949895C88129DFC2844FC77FB132592C7C1474E619C55FC2835F0810F227799984777CE99D586C158C8F9ED - 90: 6E0D9841C04BB47DEE30F6AB430E53FA1637421E460BBBD7BC8EA167B9A341DDC5E933B6983A025226B1FB3CC663EDC3477F8F0C8FA109A8B97B4B17AF3C2774 - 91: AA0218FD54533314F62390B8C02219D26801C249D394E33981E3B853C5735E331826FA02697DF54C9268B891592DBD876E25C8D985DE8752ADAA0CBE55AE7FFB - 92: 23905B9273CA17D80D9C877DD78150B5382744896B073DC636618C540876B9BA51EC60F5E45DD53BE210B6076554238A3B5EA95DCE3481F0FCF2825B852BDE3E - 93: 1815D1AA4018626EAFF051AFBB92E91F6D6D136F58E8DB160C9E85BEC027B6CC92F0F0760DFD722BE12A97F7D29EEC341BD309F230B55B81D146B409EAEEB7D0 - 94: A2358789A04795BB20D2EDBF95D5DA28A1FBAB329F99DFD0B103304F868CE5AA2DC1F52FE98CC84EB095B9C5ACBD6DC05FD03CFBB3F1D26675D0A8F652D38236 - 95: 2C4DEF028098A0680DF15DEBFE6A7FA42C7A7D75CF410340ADD5257037F0B2F98FB5A068361DF33010FD48A4B41E0E40A2730FF2148C45FA568FAA182589A543 - 96: 360F3B6819EAFD9B3D6BC469F4272F9458C0791759EC1136FAD500F3FCB4FA0598204669E865D7D5F8C289043A2A1CCB47F55CEEFAEAD98C7FDEF38FB22D3A29 - 97: 1CB2E98EE8795761EDB7579583EF86E7223A2109267E5234663BCAAF9FBF28EAE35FE362AE9AD075023C1D36672002E08CB36189A603C174D73BB9489E13355F - 98: 9B3F2D2B2E3D0401229F11E6DED451A1289C631122684BB32B8C0450043ED2267AAEA20E950F52B44EA5941C507F38D23CA76E212593B65BAB347841179BED1D - 99: 2E27C53324017626F7EE7EE26BB0C88450B3D882C2D8823647ECA7650CADDFF3E4201D7DFA2A07A51B9372FCB04C1A79A264DCD3D260DE135D08DBABD2C5869A -100: 0B3D7FFC5DC1CB18B867D995E3D02FB2FBA0DE27BCC85E49A3B01C5581EB3B14C19254C87D92D2EEF952C98E4E6F51C9662CDB982BC95B88C11CB2EECF032576 -101: 85C0B9C8AB8C670C01E179F495DE26F818EE772AAF6FCE4ECBDB4FFADEB1CFD8EA86E42020B47894301920B86082DE52A7E7CDC6DB4904F8F0D383D9CDA312E7 -102: 0C6637D399CFE2734AF7B63F81B7493158B7842E3C5B72E6CEA4388A5C6DB7222D46727B92FB82D88551A227703B8BB6A1AAF47247661E074CF6AE4277D586DB -103: DC54B4ABBB7942C502BF3275E37570947FF7162B6831AA430566E69AA80658C6E792B78EA081611256C64552A9E15A66000632116AC83769B7C58B809FD96021 -104: 532372848D0F525884E5ACED9A727E96A8D92B484DC2D4089206B001CF9EC52902E49E6FD9FDE634941BDF5AA2B45B0787D0B183B895470BF1E79B57DC976EE0 -105: 4B6CEB5AA2174E6486ECB185044629BE6C280807F102CE52D2CE2DCCCFE96E5586A6888DF7500614896C9FE70CF7BC83FE755E88170B3D39EF9B218BE809E495 -106: 6D506B4BD3F079EF4818FCFDA519E7E2AB6A03293525711142C3CDC5236A7CD82A880D9CEDCBC089F7A3D5D3E48BD75DCCA7ADC53B13A2FC9CAC80C037F2CE5D -107: B8ABE308840CC901C6C5FD908E2680886AAA0BDF7085C1A6ABC257186AFC52C522528BD7BF4E82553D9E64CBEE09B9318995E13715AB1F7809EF185E8473D70E -108: 9790A198DA7616F4D8ACDE68DE19635A555874EAE77AD4ECFEF7207DC305D475FD250F308F466B189425AB6A9722D744AEF14541FEB83698943E87E8A39DF838 -109: 816678F1D7484660F4701CE77F4C5E13E5DFADEE6622411BE86DBA4EB71A110DD1087AF7D3F37B8ECB1B9C44A3BD5EA73901C21AAB51E569E61EFF25B5E955F9 -110: 51881FF4B150EDC3542CA12CE6554A40415AFFAA1197FE7CA4B8B065A4FB1DC3B924A444CA31776CED52514C525261269895EBD8584C29747F8D527213534E49 -111: 6D8902F285029EE683CE1803B2D9C6BF6E4B7B59C0ADBFBCED3346782A35652DE3F304ABBDE9F22E4960DF6049431139EC6AA023EE2B013A426DB9A816D92699 -112: 06E5847A060BBC4FCE1375DCC15AEAFBF514EE1ADCDF42AFF932AA277DC09EF614651255E35C499D6BA1BB875EA3E80F80AABF8B7710AA5696B058BE91B99B01 -113: CB1859580DCA13556FAB791572E523C2E888115C18C043B0E33F2268DD0056F9A60EDBB65DD9C8B552CE2299E847ED4617BEF3A453ED2AC3B5366B4D9A651B61 -114: 39778F80D346E53D1B0E60FF7B36A92639D9E7F11548C9326A59D9311D57BF09F33BFD6AC5352F2F041BD07A6D26A181419F5FCD1D5FF8AD38E485DA7DBD5419 -115: E508C9A77F53E36F76F0E477DFF076DE810F9F1599A16A3EFF1840332B26D6C7CC40E03CA8CC212FDA776F4DF968FCF92CE492AEBAABD65F069D1AEBECD11B7B -116: 4659D0E1F9E5318D7B92FCF7700C467429B63F27188C0BA168F0D5696DC764FBFE2C5EFFCF6DF11EA77A17B0565CADC04F95FFB0485CE6900161B82608B1647B -117: B3DB7FF2F08F57F0CBF2195BB9600E9AE5D86A15921EB164A98D25D559BAF5FD740D68430653DE73F3277425DD77CC3FB0CB44ACC5FDE693D59D5FA6DED84597 -118: CA4559843946A7583F944D51E31FDF32BBDBBFC049724454C090A6DB9C356739F2B7E254CF9746521D965593FBBCFB26092069FBFB0D17A1593416D69681B687 -119: 27CB8A2143D1073AC17009C31B28DB95DC195E20AD7D245D8AD880789898F043F0565FE41485EDC239C7129E4B7FB693D9044B2C3D34C5648E4FD8447E85FD71 -120: 99811490C7FC83A10AAD197E95D3618ABF5018E9AF7EA0AA2CC0C771FC11FCEF9FD6070A0962A563D260E8CCFDB77B48745C8C27018F9140870F146F124FF14B -121: A1537FDAD7E18F732181CD9EC9BFD3993FAF5F994A8809A106B59D13BB70FD8D7D4E6A4BEDFA806A9D434AAB0368DE840FD64395B4A9A874DB39405707AE3AE3 -122: FB0D6D962055B47D3A72371BDAF77BE7BF965EA7D53018CAE086E3536804AC748E706E89772DB60896EB8FE2ED8F580866BAF3108CA0C97938B69830FFBC14E3 -123: 3C947F4136D9E780A7572CA4D5D7998DD82D3890CC3F1BCB59A7FE230E31DE322DBA7CF7C1DACB33A3EB1F7E75297C056570D2846EDF756D36C1AE92F8DF6954 -124: BC1BDEFFC6AB779A7ACFE53A3F9DD588CD3C77C740F944C69E331C38F162607E0D4A0CA874AC3D1D74965468843133AA9F961FBFCBF59B58818577132B863181 -125: 51143DA8F5D6E68EC97CE22A4961EF43B3AB658711280587D9ACEE701CA65CAE90D34B66DB52D779A8E2BB6204FFCBCA945C6B98B2C17C8375551FAAFE4C8A44 -126: 2550FCF54872616ED31C60FB3FD97B9AEC7A27B3CEC07D774FCE694ED9D60C43A968251C5F3C5B50E6214426B00C55D7DB1DB31CFC4BC07F6ACEA222052AB796 -127: 1D8B2525E519A3FF8BDAAF31E80EE695F5914B78E7DAB801729B5D84C3A7A2B36A33803F5E0723981CF8A9586EC1BEABC58154EFD919AFF08935FBD756327AAB -128: 4AABF1C3F24C20FFAA61D6106E32EF1BB7CDEB607354BD4B6251893941730054244E198EECD4943C77082CC9B406A2E12271BCA455DF15D3613336615C36B22E - -HMAC-blake2s-128 - 0: D9A6509D3D2811A6EA00396B532E2B04 - 1: F79B6C460ADB138E9A3078D30CF1CF41 - 2: D03AF0A5D31238C70BF2FF9932178EC2 - 3: FF4505DB5B00CE433974EBFBFA9C61F3 - 4: 0D746A6E87F39DB33368405D4C725C01 - 5: 4E9971E0DD79E62594064E7B8555288C - 6: ECFE8163755587A22EE56B5282358D79 - 7: 530A343749AF55CE7C6E21AE417B0B0A - 8: 6692708FCBC74B441F9ADBE2724438AD - 9: F9938A73391B5BE81FAB9D08917D536E - 10: 2F9C62131AA9FCA8EE9E6958A07E9AE6 - 11: 0B995D0EEA8E157BE7282CE0CF4B1A7A - 12: EADA065A4846CD66DC33A43035F3E125 - 13: DEBD58E85794350D2D29E28A548E6796 - 14: 1CD3F6862568B0B734871C2E161020FB - 15: 93AD9B9E2E48D9D58DE3588479CF20C1 - 16: 54FCE32A581D99F8AFEB9F87078F3037 - 17: 45D33CE2809663503A2C064F34FCD6C5 - 18: 642129A619B3E550394E5A95B5711158 - 19: 866ED5891E4C7FFF22D3FB3E55CBAB5F - 20: 91DDB23B639D178D58DB3DF6E995CC3D - 21: B503D9288A68CECB4166CE7BAEC03CB9 - 22: A936BC69C1A57B4FBB1CF832824DF2B9 - 23: 9C5CB33108D044572C40BD0F1F4063FB - 24: 7842BAD82BA10245E8CE9DB4BA05AF2D - 25: F5E149656E3FAF650452B2F61DBDC4F1 - 26: FE874FFC33088BB88DB4C6672B86C0FE - 27: 2CD8160DCF17084BA9C4F25A6908CE61 - 28: 4BA2EA1C10D004AAAD91324C6D088ACB - 29: 5474FE93522CC4A91037E1EC2A79CB9E - 30: A32A423D018B336AD461D45A4E25E403 - 31: 8C15330F714B2FAC8326CAB9BCF5E8B2 - 32: 52C43169125A66E41A673741D8CA9890 - 33: F74AA0F375061D11DF081DE41523753F - 34: 155F2BCF9D479F09C1B60A0CAE587B54 - 35: DB082767BC6DA25719D60B1DA4D8C82B - 36: 7DBC0D6181091DAC48E055638B766502 - 37: ABBF20F9E6A9D6A834AF1636C043393B - 38: 987B018335999FDC01C4545E1894B89C - 39: 5C2DCEEA6A6EF1F382C2436CDA5DB39A - 40: 300FE9F65DC929990F54492F00F8DA6A - 41: CC93C2599F152E82422A272EEC7B5363 - 42: 08710B279972CEA381D34994983620DA - 43: 72CFDEC6CFD987A9B6F3E350344CE619 - 44: 67B8FF6BD7C7B216E5C69FE5D2B4A955 - 45: B97D8DB2B5FE62306D78C2ECBCAB5FFD - 46: 97D29FBBBC0480DD21E6DCD8F76E729A - 47: 5448B03820B7B8C6B8B8558D3905FE4E - 48: 2F9C61A414B7AB3BFBB59D5C98062404 - 49: ADFAAA1CED2D0AAF10663A9C92168FF8 - 50: F04A37FD9663CFC7AA3AD27E641B1C7F - 51: BE05676DD21A5B29C1898D7D8E30B508 - 52: 0EC95105B257D094E83630F4D51ED8F7 - 53: D64ADE612C45364F4125E7FAE80A1E8F - 54: 893155E369AB94CA09732ECC2349603C - 55: F96FF508E46787820E7035E13A55876D - 56: 3387E19C2F26DB6159431F3390FAC491 - 57: 09FCFD1E0F9A282B6BA3A32EFCBB838B - 58: 95849C47F985C3B23637654EE42A3B15 - 59: B137865CFCF7505E21926C5AF8886AD6 - 60: 776F6F212B550961E8581F761E9AAB95 - 61: 1A2B49AC03F4FACD72BEA5D042EFB0AF - 62: FDE5B32633BF9F8F46BCA20377FDCEC2 - 63: 7D889B6E843B5FC92168F8C0571E0F28 - 64: 4C9BFB112352331A367D43E47D1584CC - 65: 95057CE969E8FE681BC1CBCF3F785870 - 66: 098339C9520F932DDA9FE62879637041 - 67: 876F5E05C1DDBB7BE6FEC34B41B07206 - 68: D4B502B77B416602F8C272DCA6F41F5D - 69: 3C15591D5644C185C7AFEE486583ACB6 - 70: EFC75F9FEE23778758483FA86E72B9B3 - 71: 6A4A75DCB183D833492ED7030F6BF99D - 72: 3E48F7484C176C406E78D29C5D48CE7E - 73: 04E67CB957B943BC0C20FEFB7E931201 - 74: 20AD75B9967D16771F6F6758BD48AF67 - 75: 90441BB7795A9D2E35ECACD53DBE7AFF - 76: 4A9417219786E65BD1A486C80B8A71CB - 77: 347DBA5AC5EA0D6F47C8BF91F3B878E7 - 78: 1B82F56FBC1C864F32C81A8D8A5C0BD6 - 79: 133321AFFB4F5B842A9BF8934F63FF4F - 80: 61DEBABD5788061B94FC2462A952F8F4 - 81: 555B2DF9BEEEF2EE96B90F46CEEA662C - 82: 02C1172F35B9E0F2914AC0336069A109 - 83: EE51CE9BC05E37F0F60159DF809C33F9 - 84: F3FCA58EFAC56340BB44A9679E4BE8EC - 85: DF97300079E2E0BD4D4A2508B202B55E - 86: 070E813FD6E2B36A23F21C4394C5D875 - 87: A16CB8D0EEB5C505B629565FBB32FE9A - 88: 06AAAABA7537BD2C85E31D65610F100B - 89: 283DDB4E8911B66C62F68989FBEC6802 - 90: D7416094ADB17FC6C33D3CEBD898C352 - 91: EBDB4E928266BF1C61DCE73370076FEA - 92: FFE60DCE45DE101B5251C912BC1B39CC - 93: 2C969B49F0CEEA3E63DCC917A1D649ED - 94: 0450FA648005EB1BB0B2AA361346A154 - 95: BE1BEFCE99A2C1F550F2308BAC66D932 - 96: 341A60C4D0A71B673B01F3BF87C7960B - 97: 17E2AFDA05A94BDFF080488B1C2B9F9B - 98: 23A6551851E4D71EC261A7CA132CEF06 - 99: 8B10BBDDC7B02DB662FE5493C4546E43 -100: 361CEAD587523282C13AE8C39DA1FDD7 -101: 68F5509C807278A39397F1A5F18FC97B -102: 36F9D2AC6FA67FDF0628BB6BF89C8028 -103: 28C042DB70B923CF5B2CBEADED4DB367 -104: 60CA4E8EE11CD597ECC8C07C223D384D -105: D9BB79B4907142546BD52AEBE3E1049E -106: 29E0BFF2E1883595EE198D5DCBF525D1 -107: 149ABA37AE99875E152E1BF4FF412E2F -108: 02390B64373CF88D274E939C355E8B20 -109: 34DF13EADA0F3B2C71CAA3FCAF086AA3 -110: 34B6FF7256A3B56B839A77672D8BB8A5 -111: 9F0EB9BA6E35208F4BCC2A3343ACB884 -112: E2367A2625BA78A6398315D1FCB56FE9 -113: AEBCE64E2B7D9647A1247EFE8C824496 -114: DBEB7E590480AE646D874D1D1F8F7F43 -115: 23C64273CBDB4CFB849A37DC8F975E53 -116: FC5BA814D687219021C32A850F1C0324 -117: 54475DF428B168985B858BBA5A322BB1 -118: 8C1AC0F39B9333BD5A5E3B4E966E0F58 -119: A2038AB9D9E3AFFE495FC944ECEEA4A6 -120: 1B7E712D61E86B625F82A5E770B01FD7 -121: C012695ACFD62E23F28BB6558FDFAC95 -122: 5AB61590EE427A2AA7A2361E44710BCE -123: 0DF020970F09FE19C86CD889FCC7BE88 -124: AFFFADC4A74B8CB6B4316C8222C07BB9 -125: 9FD53F054EF4B5AF3CAC470A510CB267 -126: FD217F750FA45E0B7D5C9C73454CE1A2 -127: 6DF8FB94D774E2A294FC9D6D3EFB4C8B -128: 1F73E062BD976C36CEACD5BD777B4E62 - -HMAC-blake2s-160 - 0: 13F3871F0D9CB982359D9C6E977871688BC2B15E - 1: 45BD7321877A211224FFDF26FE226E4C6B4F04E1 - 2: 2D9D50A09858649136D611F612EC1554FE52EC75 - 3: 431A1116DD8B4E788E13B1D2D5431ED054537FFA - 4: 472C89AF44BB957CB4B6C66AFA43BDD35B7DA029 - 5: 5C5E9B4C1506CA3394023D745F187B1857C8B96E - 6: 0FD11DE5FD818743D86F3B2663A3DAC2204FAF82 - 7: 4313DA2BE7D104331786FDEF496ED257BA0C18D8 - 8: 1B759614B1C5018FD6515797503E73CCC0AFDBF6 - 9: D8A3FC6BCD0D2D92CBB60A8493EAE480EBB54D75 - 10: 17884E85D98766DA6F70A3274B5D3F91AF424716 - 11: B38DDB510E744D029715B14FBC50F90BBCF9163C - 12: 15CDF174E9278E8FBDB1281FE25A653E6E8DF9FB - 13: DE5D5E0589683457EC47D4D8EC0A7C70F255C53C - 14: 220432AAFC2A9CE96E79E248D2134C8F7ABA268A - 15: 7CDC604CC967D9A7D3146C2ECFC3038710A614C6 - 16: BA34F85698412D54A544285C4E1487BFEC35644B - 17: 6DBCE7E42E0B721A33C46CE1E5ED20A9CCB8496C - 18: F8BE2E683773F2DFDFB6B0DCDCD00A304854A13E - 19: 6DF711C49955C45E89FFD62FF0007854936B602F - 20: 03E8EED5288F7EBF15E016C2190EBE8893544798 - 21: 0299CA8ED87A763F94819898AD719366DBE71477 - 22: 3154F3E94D5DA8E8503DAFE32F117D0D202F9917 - 23: A184481D1081DF8B79F3474BCFD45D47300FC06B - 24: 610BDF5276E71C5D6B50DF19236E33D93BBD2D1C - 25: 8B541603B954683BD30421969E04FAD9F70F8334 - 26: 225FF6D4C37F8F8B2D006D764972B11D850DE20B - 27: 2A0341A49812AEBC18E22E8BC67053E90C0BFC92 - 28: 3E1A346BCFDEEB2B406D8952B43B19E42D693F5B - 29: 69A55CBF75DD84C628327A44B029E920BF73F5E4 - 30: 0E802994CA8E45C9FDC89EE21F78B89C3E6D2123 - 31: 6AA819DE26733AA35EC8C0F697ED8870A47C777B - 32: 2FCF9BDD9E9C46F3B4C34A315C22C7E4189CFE0F - 33: 353DDAFBD05691C0BCBF99260ED8604FE84DC6D7 - 34: 44DF49D9B9727BDBD4573FE184D8A5216B359D21 - 35: FCF21A74F868919F8AA7B0C72F17D5C159071C56 - 36: 12479686B6F46C277C6705070BD1D32F8DAB67BC - 37: AD8B56B9547CC7AE42770D37A349306FF8594D2A - 38: 8D3107FC59D43C818DEFFFBCA70AB1E17565BC30 - 39: 2458744B470CB3BB73EB0A966288462A87A75BD2 - 40: 6D94FFC6446FC1D2862A1AC089B010AB16AA9884 - 41: 198D66A09D7B4794FCE770CC622EE104FE237B3D - 42: B26EB75B76AAB6BD3C95ACE957EA77BB18A64DD9 - 43: 0E0761261FBA216C90F23425BB0297D577E1FEF8 - 44: 7CDF4EA63F6995EE7767BC4A643BEB80B21F3F81 - 45: F6C45B24451512BAD9B3A950A068BEA2F4085D09 - 46: 5793A84D61C180D4C4A8BB1505786EA7547379DF - 47: 10FD9FD1B2A2FA69B0BC48D22E80061BEB939392 - 48: A5EED67A0FB6645CD4F9E60E47EC4F32006FF294 - 49: BDB6F95279A63916B1D2F265544AA46E2582E87C - 50: F9ED46687EA2A5F314378835950865204AB97B83 - 51: 8309367D55BBDF584688B296AC823175B2DE00D3 - 52: D624E2F09BF9E49548BDCA56B6CD5AA36B4FD82D - 53: CAF70D309CDC3849BED6D2E1D0BE85D6F075CF9F - 54: C444C9241B3EC18464C9C120995B557FCE322CA3 - 55: 181A25606A0FEE681E5F8173F0BC11449CE2DD00 - 56: 55B5D5F5565D1CB029FB5E2071A523E106523D7E - 57: E67FFF4F7976FCC844AA52CFA8802F6DCFC8818C - 58: CB4E986F509B3BC5D771F0AE6CB2ABD3B9073FB1 - 59: 1D3419C2DF81BC6EF958E03786BE4C08A8945C09 - 60: CA787B50AE2CF4F7E1386D718B0F79E10C1455CE - 61: 5E1639DBF4EE1453D92C62339891AE53D54BFE70 - 62: A6BE68706BAEB0496C1D8F5455064DF3832EF7EC - 63: CF31170D3A3E21013FD2ECEBA82B95B8D6C68BF3 - 64: 32C0B83FD0ECC9F9DA771E03D18C36804943862D - 65: 2C5F427C54D2112430ABA277BB204FA74BF410A5 - 66: 32122F82FEA075A354DFD69A692053F4DCC53A3E - 67: 9F2D35F1A4CF26A9FD54EDF6E623DF9A2B01A276 - 68: 9D0DCCA8B4E85C6FCC5F70BFBB3F900B6A5145E8 - 69: B2F33A492AB22CFB7BA8B2A903569C432C1C3211 - 70: 96417071EE4AF48C70C8F8BFF466F573B0152A83 - 71: 24E31AD9DEBDE1F615A625C029F74A65B441B8F0 - 72: 66B01AC99DE64EF441048FF3F8FE6798EFC09420 - 73: 890E31D986B987495D535C186FC8AF5D9BAE5356 - 74: 1989FA5828C28150294C057F51DDF6C20985F6DF - 75: 95E1227E21BC69CE3EE9BBBD0CDD4C0BC5DCF853 - 76: 9050C21DCCFAB8E6107C2710A43E19B0243F14A6 - 77: 42ED194DFA1F029169FEDB5F6A39D297881F308D - 78: BDD8E2C229A618BACBB7EB00AB0B864382F9D013 - 79: 8D28748367A93D8B70F3CDF43605095114D0A6D1 - 80: 47404E643AC3A58615017B93A415FC888BC386E1 - 81: F547D5C21279FD77C477445A8C3BBF9111B124C4 - 82: 38E5AC1244F786D9A0537C0CA15C5D24F1162DA4 - 83: 27CB8F3CB3203D5494D97ACE99C3F9BEF1DB1461 - 84: 74E3ED28A84FA9832CC21E1C91C5D55F4FEB4763 - 85: 4CC6263C2374DD2A169A52A087C9465F32C93F42 - 86: EA7CFCC877A793D7298A0A37BBCC7EBD16830D48 - 87: D9283B0A1125042728347496AECF3AC57D5457F5 - 88: 00CFEB2968E55D43F9929D7BEF8F4B376351481A - 89: 8BF5DF0E161B65E7C820D6895245CF9777A0874E - 90: 617E10AEC765B114D315005EA0701A9EFFAC1D4E - 91: D2D3857C808897D2571C0DF9B49F533EE01A1F7A - 92: D98B3217C162160ADFAAD4C804EEA894C6C07A71 - 93: E01D6CF694DA97F9900738001949A5CA7009F74C - 94: 1926C8288F6EA0D5BA42E9D1BA35AED6EE53C1EA - 95: 66FD124F7BE58F3F423795EEC14BA840E4ADA226 - 96: DDD3BB5C542D29983AEFC9EB50EEA092E7F81D82 - 97: CDA58BBB569BC8D0DCC78DA3A94C23AED30925C1 - 98: FFE43B5314FAF5049A9316271F25CD4D559341F5 - 99: D752D4BA2CC1E5509D1A778D5C8B695A24F15242 -100: 3BD42DBB774E91983B59892CF9F1D8DB9CA49017 -101: 63040AFF4F6258E5B37A567DE56E0E900F9C1BA4 -102: E4E6A8CFB1FFBA2CC875C316FF31427108A22E53 -103: 6254A2D74CD029F6E0E5AA5420D979F979A0CBF0 -104: 326287DC568844E00CAF2E2443CA01C5A466B725 -105: 67D4982DE0B34D9E507E9BC3A89DEEFDDC06B676 -106: 5FD61FBB0AFF30DBD6DF1CAD3913DDDA7D040AED -107: 795CAFB0CCD44A0BAB188226CFCC9EF6FEC2BE4D -108: BE677F528276571CA00E82ED116ADD504BEB3CE0 -109: CBF1FBC02ED8FECA99D0D86F245F23B3F5A3AB45 -110: 2C5E356A47417DBECA2BEF23B17B05918711989C -111: 0D2D96A78A64740C4CFFEC632A018A270FCA88B2 -112: 77261CFDEA5AF0451F08C5096385FD425312B294 -113: 0C9D743B956F5711B156DE7936BC39460BE60F24 -114: 45B1444EF8899FF57C57874F0886E2D065144DE6 -115: 2E807E3D0F571F4A0D16E44DCBB3F916B78104E2 -116: EC9E3D0929AE03F116D3B328F1987E60A2A33487 -117: 924BF678E1586A719153E534821F91D301D4DCC0 -118: 5408020E4D0269543144B383C66EAF9AE542FB03 -119: 2C54AF352A4CDABD85E1317D2715D2DF1620D51F -120: 6DF7964DD06CC04AC27B92ED0C0359BBAAEDC203 -121: DF3D341855D2A06FF878A77F65D021FE425E3382 -122: A5022518C6145D5F749C09D869C46999302F6DBD -123: 0D94E7B2C49CE48C0E7DD92F3BCD98885D70E386 -124: 7E2CBB2929F1863B67C4EFCD92BD7772DF674812 -125: EA87DB318C7B965C6B5AF8D554A9138EBB06BE24 -126: 668530500F952A0FC14D6B01E174ECA3D1E02C23 -127: 83ACDD54FA0CEE4F748DF552F8B23D0ADE1C5A82 -128: BC6F09510B16CBD54F5BBE43368244806E1DBC7C - -HMAC-blake2s-224 - 0: E159B76803B9082D1EE0EA6076E364CAAB41416AE670CE4BD5DC2FD5 - 1: 20E48E9BE3B788B443CD264409A004216DAC3F993748798079A71801 - 2: D9517495324F2DDF138573659E1E90C72051D5F7D1F566D057F58B0E - 3: 2A74016D8C02B9D1A8832A28F33162379680642F976B1D4AFE21CC6A - 4: 3F97704DCE5C28B91532AD38E4E5D31C865B8DFF2593163784F32841 - 5: D89FDB81CF226C37347E934FF55F8D659DF5479E74504EAF70506C34 - 6: A033764DAEE71BDE3E1B0D8AB3CB02EB5B5F367F025B73A56CDDAFEE - 7: E33B119FD8A73153EB4F9307C77685BE4045EF648D7820A8AE5685FC - 8: 4A493F11945339BE6358C78C2D991824BD1236BA7B2F22E97DB42D09 - 9: 5868C49313029648169041FA48C3163CCB9CE1BE6F52A64982BB553C - 10: BA1935A2582D3872106A5CC405C9DACFED33B1491F99ED3CFA19ABC6 - 11: 7B63271FC7071598349967C0DB69F270A4C5432997BFA5D0E7FC0E5D - 12: C05D09455FBBCFDF863653624CCBDF0DCE8DCC778C0F8D1555493EA2 - 13: 037D0A46B07AE8B8432AB0FD1285D6D2F97C218C8FDF5E604362C351 - 14: 22C72A472AF33D2C085F6EC9C1D7298A51B58562F348ABBB3EC09002 - 15: F728FD2C29A3B6535BA745E8215342298413E182B513EF76FFFB1902 - 16: 6718028861CA19236FCD4527B23EE27E7F6F4DADCD310F054CD09E87 - 17: A7999E45B997697005521E2ED6F3FC0B99E4204077A3931BC3D65301 - 18: D73FEA06275E1C2FC5E51434CB26EB0482CDFF08707C2A845A1F800D - 19: 79ED0DED96891FF6392AACBD9AC93A7673825B34364DD4F554144EB5 - 20: 4B676CDA46340E50F289DE37DE0E7D52722FCD08262B20B825E1C04F - 21: 0703C8269084531A722F71F807BC0EA810B8E03E9A642934A0F789F8 - 22: D2F1F83BAFAA05D0CB82E5E7F09A0F048FF9718F90256E20B058E1FC - 23: 45E4DCCE998C78934ABF36B18E26F90072781AEF5B6DF4AECE64FFCC - 24: B6477AFE98E6894CC3724FCFDD1E63FF586F6E1C063086EA7C2D698D - 25: 383A90915A864B37FDC8F64EAC4707926E202910E00345C3DB842A00 - 26: 5D428CBC8BF57A747917A365D7A3B5A3D4BC338870B3D654DF53A30F - 27: 3CEDF4101DA588D887CCAA4FE82122A650DA8CD82CD1678864620E47 - 28: 7B89C1F194AF6C8454D9B25143116014330606ADE3A3FECE960339E8 - 29: A7F40B968707F814F5329BAD52245A833AE1A72AE941B84C814F982C - 30: 0EEBC427F65A41852A42A632EBA73CA53DFE8EA95371A190E75D25B1 - 31: C78B7F0EA77A00D174C7181036748EFF7361250D671FDBF77C9EA761 - 32: E80067ED5A5925884E5DC7D2B47AA38847530537761E953623A1F997 - 33: C8E7BE0F691DB2CD44189A20005A160CFA744825A54E6A528110E2D4 - 34: 9DDCE1AC38B64D911C0FCBFD4715BB77AF5225617A8CFFE9101E7B7B - 35: E984EAE61CFC72946D2F38B894C87B5AECF939387C64022EB06CFFB9 - 36: 9BDFCD633185BC5F58AAB28E200C5B3F58A9E5D3357113A61E5F0F38 - 37: 980D355164A35C4C7D863D9A81EA053DF327C83375FCF21B9B5E1108 - 38: 5F0E7CBEB83A12F0493491A444A29F0B7C74500D8E17E2000B852298 - 39: 2CF803E0BBDD31A55B1BB1C449C507A2B43F56E3950B0F72F909B666 - 40: 1531DD3C6B0320A16291EE79DD6DB42ACAEFA1D54AA1B0B5E011BE71 - 41: AEB0016B0C2A8DCCE0C74B8794C2FF578966139920700EB921A75315 - 42: 8F93BF8DBF1411D4EFD4C2489DB975D4604F1801A5AACCFD55FC26ED - 43: 085B7720050058BB86FBD6A301C3654993791AC8ADA2EA773DCF7A7E - 44: 8712014F67738E3B9D8E2417B793076BDBD418CF34C674244A84FA6D - 45: 357F78A327A2D207AF16A868A84C595B11B51D02FE604F9F32407362 - 46: 8EE37BDBD1703D8A5EF22562E0384A204B89CD81E80946DD483F276E - 47: B1DDF7E03D60D2DA4DC5BDA1607C6A112C88779DB84128B80DA34ACC - 48: D318FB0A0196A20B99B012CE1D5E5554D426178DF81087531A8CBC68 - 49: 6263D8968CB45E33D327929A29ED404C7ABBCD11D860AE9B57E44E24 - 50: 69D9C85B4F8BFD68D9823E0B0E862D09668B0F99204944A98BC2C8BF - 51: D43E655C0DACF1C8FF7A00C7C5FA26234BEF45F2BA2378757BB9FFD3 - 52: AC39886893C7433953682793127364FA8D0C65C6531C343B91915DFD - 53: 94E7B5DCC1EB3DB23776D20C894803A51E5DA837C29BBAFC2DB7F127 - 54: B98E665D9703C394E46725B3D557A59C7FFEA4098C8BEC9B9D98C0CB - 55: 414FAAF92795DCBE7B4537296FB891422952E3E1B14CE6E1A6D3C2E4 - 56: 8FE87554FEFEA050E6E49D50D13CBD18B37B1729326962BDCDBA2EE8 - 57: E9D2BB16779A81D445C97F38B64CA363DEE0858D285015E4282B5F8C - 58: 538283E0B06AE7EBAC01541BABF4AD1C8409647893C73312D5BB4133 - 59: 5727EA1EFEA020A7E9AAF26D0EA8B16FA71EA58732E16AE592E5B204 - 60: C62949534E0272DCDEAFE82001AF1D88CE8FDF8F85A6C47FC65F3B74 - 61: 8F6F09CD73B1791829413D6493749B7C83920DA0B58FD6D4043DB4D5 - 62: 4C7AF80CC670F8419C609FFFA8CF483E1245F248BC032CF63EF24DDB - 63: 66CC1E00C4E08B9E451EB5E2953C668746D5803604D7D3A7D8F33D4E - 64: D0DB0A43354F5690B543393347E5ED07CB92AD674E81A41F9D4986CF - 65: 15268F39426D908D8CBC137E635D9FA8520DB3B8C2198D81DC12248F - 66: 3F9451F5B86B5A92014579538A8C5D6FCD141D9E9D7E164816D86132 - 67: 9F5C754F844532FB8EBB7B2B42B18F8A8D42A2FC202539C8C0B07BC9 - 68: ED84024F1431C0638BF483A88E18018676F2A3026FF1B04532E0DF81 - 69: 0CBA1F3EEB60BCE64F68425914D95C596F53F98BFD0AC9922B486C79 - 70: 52E1226DE12E3CCF06A3DBFA4E4A73483425FE58D8A8FF0C219C670F - 71: F81CA60FA66A5141718FBE0655BEB8B6BAE82519462A700B8E89D313 - 72: 2363D70502A9AD10CA559E69616F36DCA94E3699681471DFD43937CB - 73: 066E85EE1FC687364B5CC8B06E1FCB1DFA081F15C832483C4E173195 - 74: 9F6A853D85ECF3798A7D7AB7CC7AA2C67DDCA2281041B58E2E19DB57 - 75: 00FB321AC5A37AB44010B11FC26008C4189D1DD628FEF47B4B91A059 - 76: 3E10854699C685F6CEADEB3FA00B811C72D9A354930487FCFBBCAD92 - 77: E9A1EA97563B106093C5E1FDF52535A0FEAFB5CC641D7F1820A7F07B - 78: EC08202707E6B2538FA9AD7A29CD473B90F3BA039E96957B5AFB5824 - 79: 34DEDB11038A874291CA6F5C5304BA957B3435DAC69641CFB7CC941C - 80: D5C33BD6B1E40891B50C6D68BFA531FA02AF781AC2E32B39C36804AB - 81: 107B1DD009BF49268C93EE41E755A4CC5F0D6C5154C806CF0FC7D2E2 - 82: 47C80D97FBF6980D189A19F2A2F5EA69BC3A83C35C625894E8A7256D - 83: 0A2278622C518159F0AEFF8EE396C7501CD7BD475FC2F5A36BFD8A30 - 84: 7783B6A5BE2F808D2B5305880F82B63E22F5A7D44D30ABF93AC5B69D - 85: 5E98037E7CA8E0734899B42FBE757BB678F5734F174DCDC89DF4C074 - 86: B50F43E0378667370FFC7B7399692FA3EDBE63B5857883D7605A6C58 - 87: 09F24F3343A161DC5CBFB97DFE6041437A96E0C6232BF6559019B4B7 - 88: 814DE5F235CB237F92DA4362FE5828A44CF5C6F6496432BD47D73C12 - 89: 7A67C5000C65582EDB7DB43C201EA60125FA4FE26A9C5B32DB180FA2 - 90: 9E4618777DAC670BE99DBFECC5FA2C8772935BC5AC85BC048D1E1157 - 91: 8136C3E222E66017ECC63F3A4CD02CC59BEF5D090BD7C15F9DD0A0DF - 92: 99E3D6F7F5F7A8A464B18B8C150CC0676BAAD90671C8385BDF565CB9 - 93: 88D1D864A9742D5EAB92941711412A846154B63A9F39398BE3579117 - 94: 1AC73C137447509A568F38418649CC4FDBE17DAB3C8EC211EE2EA66D - 95: 7C4732A0233A824C14C8824344C4D48BBE25DF760276E4297419E246 - 96: 3AD94BA3AE1687AC841994D7F256C5323F8472F866C73E3BA7996439 - 97: E2D1ED6A5CA2417953B93B4382053C8565CEE9587E225F981EA578B8 - 98: CFCFE1AF2BD7F04F71D8A3E693D99CD6A8AA6672E7219C43937571CD - 99: 0ED5F3CF3C8BB43A1092B88ED5DF2D6E6F205900C7A58D1DB12255E3 -100: 6874E421B75321F9557AD33321C953FB347752FAB4248948F6968FF5 -101: 89F6846EBFFF7ED93331EEF430CA76B8BA07B2C45A8800BC4FCE0CD8 -102: 26EDB14A61CF9CC8CB47B52132E8EBB9F6F74659B837D1CA2CDC69EF -103: AEF05C596B9DC0D5B4DE5EB1C5B4E0D1CA7F2AA7263A15ECBEB8F21B -104: 8F9C483F86B936DCC362F7D2355D1B9D7FC871A94D0AA600E1C0E7A0 -105: A6F87051E521EF4508A257D4F8A1234067C2793B81ED6B12C9A78E6C -106: 2F14EC6CE17DEF3303E4AF12402CB993DB6F744C98496C8DFD314739 -107: 47534461C68F5845ED81B321D01C3AF799B90685AF1CBEEE94FE21FB -108: 47E9F55B20DF65269B8518F2FF3E86A64F6218EB6D4B5D4E31286BE6 -109: 710A584F1F5C90F87476EACC55E5B3A69D98CFD99411DDDE9A920D93 -110: 04232108D28C257C3B7CBEBD89D0217A5B9493C6C55D98389B1B25E5 -111: 52C8204FE1858787F42C06A88366310DA1581E4EA8B37C6072C4453A -112: 9DBD83A2D053C9AA450C71BC1F6F14D5D19A43665269FE074FED27F8 -113: 31E2DFECB3A2898DF67AB5BCDA7882C6FEE1007B433139D2C8BFAFD5 -114: 72CE843B10640D421D75B68FC142BAF968B016BAA63469AE07358FD1 -115: AD5F0911A6B64C5474264A448F3F8FA38D368859A1BC130AF1E1FE69 -116: B0A85CF422723A819C7C79EA504AA9FC5EC181833CAB5F28CBFC1934 -117: C6B7143FC9463E927D2DFDC84EA04FEABCCBB687A9773C71C3D05BD4 -118: 1D2348211ACEF40B47418D01B56E4C2628D0C37A2ED12D449606E901 -119: 39595A28C162B245FCD5C67B4680FCFFF2A94328E226D1D94F338EF1 -120: 7D7F67564EC1E1C7CA7A700868B5E6924C7E0B2602616D98661D831A -121: 6BFD3795DDBEC718FB494F82EBDBDFABA96D03F95A6BD314D8BD6B83 -122: 2EB81E4366A2AB7D8A45B40F18B0379E9F88C40A921A26982D3EB005 -123: 33C2EB7848A12A83AA6E481B304B87C481A7C67C783A46E727DDFE51 -124: 0E2A18CE135A59AAEBC4A0005C297ED95AF8CB4D5A45CB24DC4E306A -125: 5538F4C2AB53987351F6B1368CE067E0DF71680D127C46EE5932B78F -126: E2072202C04D503488F8409C74BBE058766104CA8489C75555AE6B1C -127: 8E6149B225A64643FDCBD6E6D23836B422E7DED4998D38FC1FD199A3 -128: 1413ED73BEBF067429D7DA342B26E249BE9298E2A401FE18384C93D6 - -HMAC-blake2s-256 - 0: E2641D24DFA8DD89E8CB77F1CDC77D8C006E5BEBDFC4D6A3A3A6F8D5B7586FB0 - 1: 6FB4EF46D33615E0186611FE54E26F1AC9165C0BDD779CC9B607D5851B3436BC - 2: ADD5D8CA3B6722D6141B268F36E823D10B3528DEAF34037E59257D8375BA8D36 - 3: 0AFB3DD812202A50D5CAA79B11F4FABF00DF15A8804B1937D581CFE4B6B075DC - 4: C170A746498F559F9420328A9CDABE0BD3B642056763C221EA8B0F8DAA94E045 - 5: 27153E6F8BBF2F2993E0DDAB90A8E0C489718C7DD36478846BC91BCF7948B04A - 6: 72E6B7E7AC538D5B2300B6F4155E129F3B292CA6DAE759A31ED235D4B51F17DD - 7: 4893848EBA7D64F98FB7C0A3250B08EDB57F51CCC07BF535510CDC6C448C2545 - 8: 90D1E212F3441600D5D64CA71884C48638B0FF5320FF4222E47003CF672AB09A - 9: 7E6BCFFA924CA6E8EB2168A496EB34E9FC5657318730C0D0A401F25D8F583D97 - 10: C403DC0963B7756F4B654C5F1EAACF4847FE32CC08F5BA4AB9B2EF3AC81F703C - 11: E9EB6574BA8D9FAE0BE95982E08DCFB674D24B887F2BB431F13547C8F99B71E0 - 12: 8BB7CCF6920D1F2BAE01E36C3EE740C2FA7D2FB3AACD1C67C01F5047CC75A605 - 13: A2549706D003F66A03796CCDB0704D343C63F779DA4F1A96ACCC8E0FF5BF1AC6 - 14: C95281FA6BFAF36C5E93F4853F8C08E13A0CF6EA8CB046937907EAAACE5F7103 - 15: 6AF95F7C442BB215F8C9CC56A5854B26711D480AD1F5877452BE426FF288F057 - 16: 49B3E7D802276CC9CDD5336B83AFD6131759C320D2D37854ED18D186EE8DA474 - 17: C125D1A259314E1F3316BF743F80CE01ACF8F3A57898070BAC2A79518002B957 - 18: 877D8B722417933FF97402A1617F724681FAEF960FD412499CFF5968E5311B8E - 19: DD3290905622873CD48E0295CD9E0DF494D4FBC0ED16E7CFB518854B290F3410 - 20: FC08D9B1E2EBE42A97CDD89321980D1980BCD75026BD5856391E1CA5BA6068E6 - 21: B526A243275DF3351E0834A62FF7629612627537FF3873A5A955B61F74E87340 - 22: F0FC1B236E7995C28A411F3DC7E9482F68B18EBA5F45612113F1E8E5A0EB9590 - 23: 29BD2B1501B3AED43D54804DC04D8A4B6AAB5CFC49D0C8F8BFEACD9986525649 - 24: 0927998739FAEB8FFBB317D03B0D7C9EE9DB56AE1131FA087F45EE86288B9293 - 25: 244EC26D5D6E886B06533940F7DBB40FDB18BE3A615E1DDFEF499E4A45FBFCFF - 26: 725F88DD0D86103E3043A47047224A5C07DD793DBE7EFC9BBC42BC9D9E73D6E1 - 27: 4D4C4F0600D4496CCB896108B5142035E9F0278E969996625265F56A13D9F2A7 - 28: 384D9C0D90753BB78A6609A69EA6368ECB789B77AB752484640DFECC9517E179 - 29: 49BB5A53DC021574C8A30C9ABED461609AC27876E8214ECF2DE7BE51D46A8DE8 - 30: 11D4AF98A21E5BF150353E1DAE2FD86156D335A8287A658512B6458BAD4749DD - 31: A4524D264137A4969F966064914251D8CC3835FC777F60DB86AAA08BF27B88D5 - 32: 63A1CE651B924BF6D00E220970816A9F40329D91B66BC141F683C147FC39FB48 - 33: 79891957F958050595300C02ACD64C653683D4F93B68A329ABA0E2F943503767 - 34: CA3D41EB14C5DEA17011F5063C9E6088900BEA37774C180D85C364E323ABAF7B - 35: F98F40AE387C389542F162155A315D4BA964AEC0D4E3E6ECEE14E5298DF63CFF - 36: BAED2BB0CFA7704E960D4C682DBD64E0E4411C4818E0DB04BF3959B706B09449 - 37: A89B07949F8E2726EFCFE8784FE9D8C41B1F9EE0A586F01CD9214866082F5F1B - 38: 4C0AB34AB27CC7BA096E9B2EDF576C3097814A9348A5B9AE0B86CFD479635574 - 39: 7EF645A6E6353231580F84EF977B8574E2DA8D8306311FE84F0822CA722D0BA3 - 40: B2D5F87DEC52BD5AAB1134441CCFF3F4FDADD02EF13281E637713970B3790C5E - 41: FBBAB146A1AC28AC41BFA01409A44771E206FFE435B8884E5C358BC1A28CB92B - 42: 77F762764D910FEC8C41930D2194DF3C27A414F688E4DFC5D936FC5030BCBDE8 - 43: 55ADC8A400FF3BF1D40FCDB83A5D26FC4352450C91D208DE3FBB4B03480971C1 - 44: AFD9D6AC75C8AE98D16A15D61C7AFDC22EFE2728FE01EB1D5B9D6C8168047782 - 45: BED58BB8F8581B92E34E4B770A2824BDA96E2E623DDFA0C2556DB49E54FB1888 - 46: 865B7876492C12AC7996C79D913B541F29F986E1CAD8CB2FE40FF838FC20C3FF - 47: D539F39F77BF62F7ABF2E6765BD285ABA9256CCAC70F86661F997CA5FAD4270B - 48: 5C4839FE704DB64128920CAE3CA4016E4A7D31B1BBB508F06A72D4DD570B1914 - 49: 801F1994C3074B6A468206579B3B78A94F431EF2A48EEC405A03BF496BC0DE06 - 50: 551D30E7AEDED675AF8BD47B26A025698C3AE0C7D32855EE5FA83F41F303150A - 51: A70E7A90060B0E965114F336C28BF9153FF2AEE6563A5C45AB913927082CA371 - 52: 82F12D40A669DB72DACCF7DF9C2AB2AF10FE952D8CE3EEAB4B89AAE130F28143 - 53: 78CF324171569F7DEF4400ADAE179E985315F8CABFCBD84F1062694566B85BA2 - 54: 70BAF36BEE54DD98B3BB75806D2BD159DFA597B9673C9CEFAB5BA985046EECE2 - 55: 0242878D7169446373B64D121C1195593FE22DBB8872DBF85FB6227662C41C87 - 56: BC3BAA6ED2E3D2A0E6E053960D2F58A4DBDCCFB93BBD14BB39CB65B4288820A5 - 57: 2BA48F57028C00D3EB2A432815CE1F8194437BF82DB761BE4432613457C2013B - 58: D752B097DD421BF28C8AD861CD55D67F15C20B36071FDE187189D04804CD44FD - 59: 1722F41EA907AA96C0D7117CA66B479F1A38E6D3B55C3F58D9671761A5C3F46E - 60: DFFC2E28B130B95969CD2D13840DEDB7C2B7BBC4A1323BE5669661F62F25447C - 61: 5883F44E26496E9AC3821CF991832F9A6E9217CA2F095A63DE0DFA95AD42A054 - 62: 12973B879E2F1810ADD0FA069FA8DE24359003008CF6F0AE86CAC5DBC261378E - 63: 39CE700048B22E5861FD32D9802F585F5DB4140C6DB25E0E96E3B2D9063F116B - 64: EFB921010B511146BA22454CFFE9FE6A95B11458FDFEAB11B8DF90357E0C2338 - 65: 9E768E700187B04C9F04F2FD39EC4C31CE5D5D4510EB284C34021AD68303AFE2 - 66: 27C89697649C72BC616B9BCCA390DAC87BDA1724CA8905D981EB38861DAE2EEF - 67: 0F393204FE1943E4074CC20030AE4D1778DF745DCA0C85C16AE190929A223473 - 68: 8D2C439A7F8AC1503469D5B0A5615FA1EF76DABF46F4199E55BDD7CAF4299B8B - 69: F078B8EB782766E8910763A8B21794B788F9E76BE8DF491AA9E7D3CF4F5776BF - 70: FC593EA587568051450BB1E951D5481EFF200478798D9EC50B6B02E83252F9D2 - 71: 247E82E689C55077F0C1BF7E652E72C0B373C189C5867189B8B9E3DE3664B897 - 72: 119CB9A78C023F674AAED82BFE1E9028A6D550A39AC22CBA0F6FF6DB05D05F43 - 73: 5237847916449649C2B6CF12771755093359850BFC7FBA157ADE79E5E2822B40 - 74: BB80C4B2485C7DBA5E73035AAEEDFB973FFAF67FA2E691E300412A7712FA55C8 - 75: 34B23D5707123EE7513D08E03BC5121E45986DDF508E8616ECD1349D40B2D8E1 - 76: 3D91F3216ECD7D45714ADE20457AE23F6C92AC7BA301A54ACED35F8416868572 - 77: FFE85878BA61569DE803F1361FD7CCEED5939140CF71CFA371E11D6F4CE4F708 - 78: D8403D5015C025EF2F1273558AEC3927835FF2B4B2F52427C2FED2AA15AEB3EB - 79: 0161395718F3A2171699FAB377A82F9AB16B1C3BE9CED6D3EAD22C19F2EFC537 - 80: 27E55DE15A0AFE7018F6F09F3601F2957801DE3F2BEA807206B4E7CED2DB8199 - 81: C19756D0FD605D62322080E22C100A0B7101A3818A39568602E052855F4304FC - 82: E3F162CA1D5E431FB8CDEA00A8BB0ECAA555ADF4113EE837337434B2C43E7408 - 83: E4AE78BB9B42109273D433E5BC67D918CC8348B81D22F639C16FDFF6A0A9D748 - 84: 9D599C8AA519D1EBD121D8F826794D79B359C37D59215B4187A4A716126C0F07 - 85: 793081487DCF188411C0513FBE7C9F350147B3E09B285258ACC163C703232913 - 86: E68F8985FD2E56173E7A1CF65955738536C80858B30751F62B91B773DF0C1EE0 - 87: 01B7FEBF76A44BFAB141DBA09308E5D0BAF9510834D21C3C76D0ED30592877FC - 88: 0D17E976859100842621144A76DF72BB29F95A836A72B23C47BD1CAAE60A85F5 - 89: 340650F975C051A499E2C5DA305516129126F8AA3C73E8BE04BE4958CAE42F63 - 90: 1BCD66C88670AECFBF705F49ED86D2090A89ABA5FC0F078CA4C029FCDBC13DFE - 91: 9B3F9D66E901759F0798B8E6C99FE952DA0C9A18DBC02D3B811BC1A309FA0F6A - 92: EC2396E05B1151102C5825F6442D8B8E911C5E303FF783D5FFB26004C996892F - 93: C084E091A7ABF6927B63385CAEC91032B8594DC1AC394A512475E27F9099AA89 - 94: 786CCF4D13341FFDC5E17CD6A8A4A449BCD78FD884E4413F8B25BA2042AB5F9D - 95: CD7BDAA224DDF56470CA9B7D8ED3EE2EBD431522107397322B34A4326652B462 - 96: AA736484E1C2955D67FA1D320EDFBAAEAFB4D6C68743D1B4594735545E51F123 - 97: C0AD0BA65438149769DF2D1DCAAA50C05A5C40CFD4B60A7CD689825804A0D8AA - 98: 903717621993168AF13BE2B16F0008DA37885D8A36B748E263A9CA779767E2F9 - 99: 031C7059879885D6EDFC2E17475172469F560C90B1D9EF555446662B291DD394 -100: 65DEC0535DBBCBEE8D5F6343A42D00108E6F3F68BD46EC13AA0A6E0A42475A30 -101: F6530D19FC8CA5D78D60AF7B2B8C19CBF59DA0B71E7457A80DC031AA77ACE615 -102: 2D00D07CFC276203D8DEFF66D954AB1EE422B1689E7E23838213A26023F82EDB -103: 6796A084FF352743D41A750426E7AAFBE5412702D087C2CD9E560FBD5E8C33F1 -104: A9E8884926115E815C51CDD480D636DAA75C2D400DA2D659F2813E6161C13672 -105: 6E631CFE75CFC9C6939EAC7232B0B2862FFD471C53A40388A5CD7808DB78F1DC -106: 9DD2F27BCACFF12C3447D0CF5208B597FBEE4A967E910080AF2175CF5E2FE9F2 -107: 08B2333D3F833D7CB9F599400D194BD807460E6E8AB9783767BDEAA108AF7D38 -108: 6CCA37F73B7AA93D948A467E6866FA5C150484C32726E7B6D2F23685379692E3 -109: 5BB12131D1C2F7F668034817BC7EDC8D3F08A932BCE993B7E270983C98533063 -110: C4214BA35FCB5F77EDC916B5954772FD90A8746BBA61797E3CC196C73CE817CD -111: A286E879ADC84DE575A6B59645825E4D4F55246A7ECF169D8554A65F62BF2D87 -112: 4C0890D5BCFDE5F01909056FE49666D4ECFA7DD56DEBA11A84516DFF5B5F1E37 -113: 23D88A6441492B08F932430FFE8E92B39F2598B46BBF974C96761390388C0F1A -114: F03BD6F980D353F6A4BEE16EA6F95EADF814D82E64D47D5FF28F7CA3B11C61A6 -115: 12DD7EE2672C3A876694C05BD350D466647F0ED32A039F1917FD1109F007A473 -116: 582DD21F7CDF4DCB58BC8882D181C87B78A3AB0691C7ECE77C239137C0A5D85D -117: 8C8BB083C161A1EF9F161C6143159FFB1E993B568042D1DBC440ED363EE0843C -118: DA72596544E494A795420712FCDD1B5B184D80860285D449921E25E2AAC87F0F -119: B14227DFE83491CBF4096B66CD30F6D582FDF508658B5DB0DBA566E04459E443 -120: 5E2AC117C01471B83179F09D6569E733FB6012FE82EEBE6E0A284378EA98DC4A -121: 7964D042B2E63053D39983B25B91FC40D0A79F2C0A7AE9B17DAF958A746C2BF2 -122: 2F3B1982F6F036B3113A5EDB83C330DA70DCB7029C897C0F4C5957A38D3F47A9 -123: BB9531D4EDDBE2D9A1ECD3AB11AE50CBA7C9952E159F2985173CC0C5065B972F -124: 5366BAD10FEAFBFA174EAE88B6452D23EF2EDD40D581B7A3A650DD50E224F5B9 -125: 4E22C02BB28FA26FCB45018ADF49A89DEBE1845A97BE92466C0744FD3D7B08EB -126: 997E86FC2E5A561EA8BAFDD9BCE086D3E8E206B5C27AA497845AB62E0139CDCB -127: 46925B5311894DE6CC0A42F439B958EEE32537BF73A96D4B6886A83B1A373D5D -128: D04D93977FA94A57D95E476034103827AC21B65132AD34658844D06CA923FA3B - -HMAC-blake2b-160 - 0: 91B41F36F10A5F9A3BD170E02E517BFFE5331384 - 1: 5D5CFB715ED31E9137447075BD5B549C07B3FDDA - 2: 3CE156D7DEEA2048BF356E8F6C8B59F5AF04AFA6 - 3: 92F836EF5726EDD58DB9E4B4FDEBC597BEDBA589 - 4: 218C4DD898B801320678F6FFDDF87FE56FC786C0 - 5: D96E3A018BCF20C9FDDEF1930C06951AF345C818 - 6: 91FA0CCBEF27B754E2C64ECFE6844814F6BE8620 - 7: DDCFDC2D726A97FBA4CD317CD3F551FAD3331045 - 8: 45ED295E5338B2AE02FB952DA9BB61BFA6071CAA - 9: 61A9AD603F3695B8D29A2FD2A4C363CADC0A7BEF - 10: 1A773798A5925F28F93BD56FC7BBF50E1EF2D721 - 11: 0426696949AB75F41C73EFF0F30ED3E286F677A5 - 12: 5B83AA227BBCF05C6C4484FE244B16CAD49B839D - 13: 1777DEC2CA55AD6BE3E492135EAC2C4D56906707 - 14: 4870BF4800CCB03AB2421FA1FB391E7D60C2D97F - 15: 0C469D4F28620CF7F90B20078356989470243D49 - 16: 2287F572BFBB2ECD49A50F3EADB2A3B9E4B4876A - 17: 83432F240A8987F3FE97D81384A417977E5B01D7 - 18: D2D705511C9301F107C133898380F07EE64F4B46 - 19: B517EFF65145A0EA914F4D8A9A0C3BA99837C622 - 20: 07A27E7D51B28D64E9F4E86EC4BAC2B4CFEE4F71 - 21: E3001AFB1FB326FB56E9BC266995FCA21E585D1F - 22: 3F01F2A087489B17E266C046F96D770DAA75B32A - 23: A47CAAB757105BE824943485CD4E5A894DA4B2EE - 24: C79F3C3E44A2CA66E68D15490E708FC888C656DD - 25: 3811AD9174A05E89FA6985D1AA67CE719ECE86D2 - 26: 0EF02F1D60910E439A169D5CF2CF88ED49F977D9 - 27: D783EB1CACD38317F6DE37AC4B4BEDE6145EE0E5 - 28: 1416396D5439FE809A924B0048C37F7C49C581CA - 29: 810C7E4204C9C2D0F2C54C0532DC6CBEFAB89044 - 30: A436140726FCEC72AF39434914FE4D534329CC73 - 31: 8B86710154FA4CE04C0C748750B2FC86CA8CD5E1 - 32: 5367509112CA9EF7263E2C50FFB2605E7C870E48 - 33: 47D269F4DDC5DEDD79A055406065D28FFAEDBD8F - 34: E9C48F8AA577628AF49C4E21BC370C25EE632E94 - 35: 8409505C22BA85040F3FFF39A7B1CC7FA9D0602B - 36: 77B6482AF6217DFFCCD25A9934C9FD878AF5CD0A - 37: E9E6AC21B91805468E121293949689F7FC4C0294 - 38: 1B9C111D6604A97C246DD502A30C44E667AE20C5 - 39: 4EAC3E4BED6EBA2E7ADC66DFD32D06449E7D575B - 40: 951800DA1CCF5431D017DB2D6B4D8ACCE8D97841 - 41: DA506076CB4737E3EEB985DC7AA8CF3DCCD45EF1 - 42: E427D5314F4C672AF8C4DD932D1554FA66F9AF0A - 43: 95BB99ADA3CC66D2249FA70EC21A1DEBA8F33AA8 - 44: 791EED39EE89CAB25C590BC940C085374AC07E14 - 45: EC9BBDD1468C2E7BA180FFA1744FA55AC83CAADC - 46: D61BDBBE513ED4E97207109BCB457C2C4C6C1B1F - 47: 08829726D269A4DF0455746FDA30900EA89BF85F - 48: A5A730B7BC19A473271EF8103CBD702E2C690EB7 - 49: F889A18589FF7BD39C9240613CCEBFB8506C1888 - 50: 6A11150B2411A7EF49B6323150D57893713C4DE3 - 51: 3D21C0233D6A7BCA5D3840DBD3DE630BD11CFF0F - 52: 2B389884899C1CE9E38232F668B89AC19E11B371 - 53: 2476925F06549A759CB450DD30312A216EADA4C3 - 54: 15DAD84EED1986A004107068C9A0D4AF6C86EE5D - 55: D8B2B9A72EF637651249DC810E094BC398FB7E69 - 56: CD0E577D787A997EE2D45261182237C950027707 - 57: 517510E731D667B2565BAE6F53B8A5ECA13990D6 - 58: C2EB5066908336DAE8CC85F9264677F00B01C5E5 - 59: 697E197A467585A9235AE463BE3ED974DAA6B7AC - 60: F60DDCC3D5BFA9C09DFEB824D910F7798BBB9709 - 61: 381F8CDBF7B84B0D90B6AFA5A542058CD712FB23 - 62: 5FCBE74DD172AEF23454731AA292549159FD1C2D - 63: 1022AF30F8AE25F92257571AA901F641A1A0C161 - 64: C8E9A2E2804B45F4A1133CC35EEB686714FB06E1 - 65: 7827A6CB25970BA6E957D6B870C30548C08E1D13 - 66: 8CD063D29160B06519D94F269A7E63D10C9D083E - 67: 391032B2A264C4516C349DEBBB92FF457B0EBDE3 - 68: 47237083EF729524980E750D8DBA10940A31C87F - 69: EF3823E526FE0BFA96A59AA01202A1D9ADF5F6FE - 70: 39C00C41CC48A0C12FAA771910C140C979889DA3 - 71: 3CA776F737A36BF88ADD6F0873AA4CD79B7AC08B - 72: B5505CB70728B304E562F830D1B541330EC09641 - 73: 164B95A64F6AC4AB7778AE3271758E57D68BC0F0 - 74: F737117005CC32C9CF75149866FF62C666712302 - 75: 3325BA34AC267A2C070DBB6DE0AA14140D43B98C - 76: F7BE840F96EC0E7C1A563858E08DC4A8C05739FD - 77: 779DEB8903688378E81E7596C841EBA80C020D75 - 78: 24A55B6FF3A5982771ACCB01FDAC787C127DB872 - 79: C97B5306FA9B6D6F0F1F86B9BC82D80AEE710C06 - 80: 8D4C0AC8828FCBC9FEA4B8D389906F5447BD7841 - 81: A1DD2E5E8E9108D29E875346D7F5DC0A8BB88E21 - 82: FA80CDB34733FDA40CFF883185905E818FE99906 - 83: 53622AFDB64A6B314250D449533332CE50E54D44 - 84: 0B678F2320733983ABC2740A816FC3AF6320F6BA - 85: D8BE658D14F67C6ACC8C69328605C35B9D63ACA1 - 86: 0C0D0F9C1E1D83C652BDD74007E34636AB33669A - 87: E619A83C29304ACDD171CDA3AAE6F9DC872FF53C - 88: DE9725D99551CFF1377578BAD64A815F1070017B - 89: FF21E0F39C91DEE778A4F06FB02B92FC657C177D - 90: 5B1021479562EEC8B6D3BBFF04497029C97237E9 - 91: 0020D098252AA355C0F0F4CD8EB34DBC0B73DCBA - 92: F8F35EC61D590D228645336C1F815300289CD898 - 93: 60F638CD649A5EC518EEEA5A4B2D638DE2DDC7B1 - 94: 6C78A0C129AFEF245F7D66A6FE57FAFC3E28E10F - 95: 9013B5174394CE01ABC175F8F688E234A4FD16DD - 96: 34783C4C0F4F9321014CA6DF7DF766E54F5C96C3 - 97: 3636D4F6E5C61EEE4A86E14ECE023F5CDB15D46C - 98: 4E1F4AC9F841B95B2E594BF6AF760180DA1D03AF - 99: D6EB0C8996370720C5F9C220E9E68FDE34380E30 -100: 5F7A0112511E35F4273C4BF2F1F7E724D4522DD5 -101: E5FA55649943517931FCC903A4CE4CD4F491289A -102: 9F53F1332F91029DBD32BEBF5DAA6C0DEA537DC5 -103: 4B8715D7E8ADC51077A29D787E48B11557408204 -104: EBDDB13C99F58B6E5EF9DD448B1895CCEC019E69 -105: 027651A8CDA7E31B876B9D3F0510CE0E4AC7A63F -106: 8D38DBFB024629BD83D7E37CD81B4E194B18977E -107: 4D1ED53492885F6E071A66374A01C765A10A8630 -108: 3AF73ED62231B543A258BA74CC9E892434527D0C -109: 1F30A0AE1401CDD15E6D0D1464B14B0B25F9E8E2 -110: 57D86CA815F8CF4C0506ECA8453C4015FE252C74 -111: EAC5D0315CC5E63DAFD7E6AC42BFB6731FD5B90F -112: EC7F3E81D1C76792A984A590A447427D55B9BBFB -113: 46965A3E137CC0DA820228F24D2FE48A51EBA32E -114: C952D772005A7C5A51F421D97C4E8E13CA49F294 -115: 4F294AC35EC97A70D9F26A26451FE8777A15924C -116: 64763832C0EED10678DB46465E0542CF3D561CCC -117: F3D2E5FAC9EB7FB5F2A6D4815621F9CF4421C450 -118: 66BD63901F59268CC04A184919DB0002CFC86741 -119: 15A0694D1D2192BB38253058EA2087D5F18EA4D6 -120: 92F0CA14F48B5831C797BB11CEB01AB09DDDED30 -121: D2B881D1AAFCFD3EA7C345D98644EF9028988FB3 -122: 89CF09EB477226E70A192C6261252EE50FD2F262 -123: 23766C1705A6C84F9C09936BE5D89DFAD33C70B2 -124: E5AB4272EFC7E534987DF0D1DB00AFCE0B610BB5 -125: BA1533A83360E295A5B02916415F19A74BCCFDE4 -126: BCA0F491597C809528F51509295F86BD0E1AE5B1 -127: 96EDC04327A391951BB3B3B9912C40E11C7E20D7 -128: 9E34D0C76C1C208007C79FC2E9F537F717B6BBFE -129: 24F6D1D900DCD8F836828DFCDC40C861AB73B552 -130: 8CB4AED9E93F93FC018C854BF3AF63684FE2BAC2 -131: FFFD7638161CFAFE2CB4041D04DE867D9974F0D7 -132: 56B919EEC4B494D665D3DC49C10F30FF58A78626 -133: F85ECE077F8C8EBD4FF96A6E42093880EBA0B832 -134: 6D94794B606FD67A2760A6A9F7768B778DCC9F5A -135: 7025DC803EA0CE00F533D265753C0EC443393501 -136: BEC1349BD4E8B0D456B2E808D7E19FB38A938637 -137: 10D6EC94DCD27FB67DFB07595EEB8791C1C98DEA -138: D1D3BF08EBE9BC2C9543CADFFD6B31C235EAC392 -139: 4CF6B180C42BC7D00A56044A94594F22296C1FDA -140: 504427586B8AC7BB3B511CD0E7620281D88B9947 -141: 385A73AC9A075E3989234C60EF77C1B2600ACCA1 -142: 0D1696063C5BE42C71AD36F478B4CE0BF4F54D68 -143: B524145D384980E983B98D31DF80CE097B5BC235 -144: 500C8200FCD89A14A3D2AD625F57AD0B93007D4C -145: 860B11F1A6CB6B8598CC8428EAF7B1633FD8BF0B -146: 6C0FC9148016A8B1E6513B8338BD81FAC9B5F6FD -147: 7793209C2613B32D2B410507E0FA115A660BF47D -148: 849E1B1FDB5C6AA9E7CDFFBF7434DEA043C94B60 -149: 99784ACE6D1CC66E3EDD4460D223529B7C41C6AF -150: 2E7973AD078A82630CDA2D30B4C4B0F220CF04E2 -151: B6B46BE8A7ABC4F33D0EA4BA705C9AAFB3120DAB -152: 94F8DA30825AC75342B21C3AA461C2FA09124C68 -153: 8A9D1A8F07A517740E966687FFCFF37BE79032E2 -154: 6BDD89F93E8EB17A0C4C25C312D656F4EA73697A -155: 695D4B4361A4726EEE929064218CE25EA2993189 -156: 160F8EB2FE3C12D993DE2E0C8122157E42B64467 -157: 22D444366FED25B20132D00F531495E1250DF2FA -158: B73BF87C324BF91F55E6E82DE291385958505094 -159: 70555E62D15441B430845D2439287A46E44E65AD -160: 902CBC04D89F2CA95FFCDB28B3CF612D5AC60FD1 -161: 4DDBEC1B9CDFCDC316BB109C14B981FE3AA79005 -162: 35527A466446126080A7D5BC4EDBBF7263208FBC -163: EF9A850245574AC3BC03BC523D0BF11A946BB43C -164: 81A62BA66250C0E4FB6F3413608F953282028F71 -165: C77D5612686519CCFA2E9626D0E3B729858B128B -166: 02472059AF034DCE8F2DB835BF861E5B03E11F1C -167: BFF3366670E2A9B4CCEB3EFB73AAB6C6A9CF31EC -168: 6E124CC3C5E8E7048A1AE272B1A98756053F35F4 -169: 38F00373D0E0BB5C3B51FE9E83674E9E3DCBAA63 -170: D7ADFDB44F0B48F6DDE1BADD51E71CEC4A54F746 -171: 8369F354D0C03BDD25002FBAEB4097C82FC6FFF3 -172: 1CFBEB3357B96141ABE3174D3747531FA7CEEDDC -173: 2892004E23D054F5F201F5163E160E2B3F5F434F -174: FE5ACEF4E51944EF26556D31432536B583FF3718 -175: 430E9A5C642E858C83BED9845BCCB3BF597B4ACF -176: 026A695AEC601C04A68FC249775B3F658DB56522 -177: 73A8AE5A09963B90256F7000D745E4B405657BF8 -178: 39D7BC6FBE317218A3067520A93770348B7D06C2 -179: 9F6725C5C9824C2551BA41B7A1BE8E7CD3877C61 -180: 4FCF1A8A95223AC44316D1CE8D1CFF05A9094C4B -181: 55EC2376C84494232706401A5EE935506AB3593C -182: 53067496DF6FE64135343EC9CE7652F0AE17AA4C -183: 1E7E857E68CDECEEEE2F1D9F53E2A25DA86396FC -184: C1600FAB2CF3231E8A4820314F8BD1FE182B2F9D -185: 02CFD49DBC6492781E28C0E43D9ACE3B3EDD8D87 -186: DDCC26D3E8458B3269D4A39AB485207139A514D0 -187: DF1515CA3E20978147CF4E62224C88F9A78E6C05 -188: D05EBA45E23870CBD4C32556A5CFF731469B96C0 -189: 4DEB7F6DD512E7C3761C3B274C4DECFC0E4551C3 -190: 239D8D8F1B7B012ACF916F168A449721EBEA86D8 -191: 7ED39DF9F3C7EB62B3E70CEE8AD80D28EC52CF09 -192: CE70BD3603CFC7E1C55A7B775CB94D992E941AFB -193: FAB476B601B3C1E3A47A1FE1DA96A0AF71880A71 -194: 29DEFED7BDAF54DA7EBB500FA159CA55042B2A67 -195: 12E0903B289CEBCE694695A50A3BAF4ED3230FE2 -196: F41294C939F0ACC186401EC0E1C1B6B9324B9D4A -197: 0B3E7BA883D7909F78E5585D377C6140F31BDDD9 -198: 70495AF1F81FC652718FAD74EAE3D8842F8BB55D -199: 735B1966FFD58D5741EF34E52CCD960E548FE0E2 -200: D2A39D17077D2D973585B7118A60BED4418F9D2F -201: 4065C3B1AE063E44942F21F74456D31389CB375E -202: C3CACF4093FF3A77762EDCE18789631D5E9114BB -203: 87977AAF6F78987EE4A729F6B1069352C03B8259 -204: 17BCEB4E0C773A0EAD196D259AC15C81530A44DE -205: D50896BCCA9B69A14C8F96F3B7D514875FAE91AD -206: DD947612B02A2B3E9E1A2AABD4A7F4B630B18021 -207: 78797676313EDB42996D08982F1ECD3E1A9DDB85 -208: D3CF1E2A8166CFA5B2EF1A6935633956C46997D8 -209: 1DDE50AD80DCF35167B1ECC7A3A0AE07B7BCDA2F -210: D2E7085ABA3FF996D46D61407B9A1FCEC77E3591 -211: DA2FB91F8F2C30BF0BF419A297D230C7C2974A6A -212: 56E79F5620F97221F40770398AD56F3DB7326370 -213: 639FBE4B78BB4BAE556E4B5E39F7A09CED54ACC7 -214: E7A4E2EC2A58779FD15B7371FF2B8C9464DBC60C -215: FA0226413C1E39C40CA6924F88FDA62B3659929D -216: F3FBA413EFF99AD1AAA832A7E4E91A5DB92F0A60 -217: 3D1BC9D1E3936C5C8A56ABAC688A7931E74A5447 -218: 12332C438A1032D1E0310238AD8616CE90AE1076 -219: 0094AE3A0140D6F41183A3D71F513B7D37D7523E -220: E0501598D086F7A749489A1E94E58B39B20B0E41 -221: 0414FE449C5BBC58915C8134565E14145A9C6B22 -222: 27F2323EB75D2BF455AF1A4B8844809E4F6C7561 -223: 69124FC993FF512968D1DD2C66DE6995661C6A76 -224: 2E908ED58CB6F6715E43EC988826F811D74AF159 -225: 19F815F7E9ABEA2C4C8C781C13D4511E6C9B9C99 -226: B63DE59953555718DE5DAF2D35F096B7C6E9AB69 -227: D002F14EA3C14233C1AA1F990F14F377F2E50705 -228: 234D683CEF16842ADF236077E7BFAF59F1805852 -229: D8BDA8BCCF7850293F9F7F82C9866AAD9BA27BA6 -230: 57BB61352B23FA9B3CD11587CC83E9B7547065C9 -231: 81F3664801DEB387B8391D13A45D4E0576A5B8D9 -232: 89CF0B3DED84D683F6A8176F48A830491F83BB77 -233: ED66834EAA82BDAF54B13E00D1EE46D716A3C806 -234: FB52313807A161C4BF1FCB6201366A44E5BCC655 -235: 6D8B84A35B48E2F3DC16D4B7E73F74BAA16EEECA -236: A3319BD60DCDF72BF076CEFA347D2D4C5BB60CC0 -237: 17DB152295D410B56B70934C6279DBF897BE3CAB -238: 73F5C199C45D70A15DEDF9E5116BF5FDB29B5A5F -239: 26734C86594D1549A4E5C93F0567194F03159A08 -240: AB7B14F5D55B55B68C981B3FCFF47ED615709CA8 -241: DADC35B7D37732C14665089103AF7D83F55CC896 -242: 9C0E3FEA3FB98BF4BF56207F6205F6440BDD2559 -243: C1473E91A846DF6E6F5132E01DA171A3622AFAD6 -244: 9C83212F49441F0E7FFFBE594341CD1E7EC9D75B -245: 93EF7E3D20709433612485F96EA910F71097D329 -246: 7078DC3CA059352719F5592E3B5E89BF2F632296 -247: BBEDD4C77DE663C50757B3D5FC490D2B8B9DBCDE -248: 0461A77102B4EAAD2F5794F596DC71A564A8FA16 -249: 3E27194189DC0C843D41E325BD4BB4984EA7A09D -250: EB144A3DED47B5DF4CE7160918AF579AF44A6819 -251: B495B9C4225D1F2CCFDBD13439F9899E537C7DEF -252: 39C768C21766380111A8B44052AEC0CBFC5F0499 -253: 424F9A6A2A68FEF9FF958BD6F88FCD71563572E1 -254: B31B3AD109D63B575A3E4EA61CA899CCCCD1D520 -255: 85B745185F67197DB09114B5AF11261FC1BAD1B8 -256: A9E4967F95AB2566784755FE625366E7CE4AAA57 - -HMAC-blake2b-256 - 0: 652C4818A846DD289D18D38C934FF0A06B2A78C3A1A4548D8CCA2F2B38C35683 - 1: 965C0BD4B4C5B060859C6943860F11BC438FD1A7133876851B33C470225247CF - 2: 81B04471DA1B28D80043C6299986FDE0F227BBCF873EE065AD2B850C8D6FA7B3 - 3: 4363D8674B928239DF975199E42F65F249872183352BCB7B16B1D25CFE9227F1 - 4: 03BC4B9048EBBE83D915106D2A25E80FB50E24E2163C6BF50FC5D160FF680FC7 - 5: 6F3B2A87E4170B4366D591D29A6C4148C41D600294FBCEEE176325CB0BCB9048 - 6: E97E6318DCAD9B53B8FDF2D697D874488C3D8717DE35352AFDBC7B845783D091 - 7: 8522A943DAB9883F729094178EE0A70E8141EDD2831DC6098642CC55559D0F45 - 8: CCCF2B73708CE2C824A5C46A6450486FF56181883C7F1EC3B61320CE890EA8C7 - 9: E241F9C373DDE0A81E5A8EE770BB249646BE00DE0A0C387A173FDCC3518F8254 - 10: 7AD7D93BBA15644E3E6E0FCB3052C61A3B2CA4DCF522FBC38FAC897B9A2152E3 - 11: 91F4B49D5E9975D809A834EC74BCF60BF1728C33F331FE2EF7E1D36A4F957FEE - 12: CEDB595778F1A2305351FF5F844804D1D6A28CBC5E72459DB1361AEAEF0A7EFB - 13: DFB2B31F9C964BA9123D6D1226D76EC00BE21F3939838A8C404070CA8C0DDFB5 - 14: 4EECF16EB573FF2F6A86A0F982E6572A0FBF8FB81253BD33990190CFA90C9107 - 15: D4D71A7D58806AEBB87F5B04CFC8339B2AA9E2A850EE7A996EB99785482DA370 - 16: 6172B2551C40957D3D602323D73159E2A90212E9703E7CE2065C234ED4F1F319 - 17: 6B099A1383B3FCC7F4B81E98AF3398AA988A7EE729E7005A5DC56BD3F907263F - 18: 9A2C6C3C285BEB4576C6281D3B17D308CA97CAC24EF55760308E3C4A0A25433E - 19: C6F865EB1164450115BEFE90F73D03F2AF950D606E86F81396D0E23B2ABAD49F - 20: C99EBAAD53DC254027637332BB816E246A6CA2BD8719C77A36DF9AFE610E9603 - 21: 1B6027BF1495A715EE232A26B6856D398F38899FA7F81696D87046C1706A1D10 - 22: C5F87692C84132ED72D8C3F666B583496A17B427AA5A55C3727E706C0C74BE39 - 23: 1601E725B874792CB56AEFF94650F40398AAC1FE02F67B30C86CF247162B6749 - 24: A79ED034F708504C7C14916A918E214E9D2665C40FAC7E5A407953C4B73871FD - 25: 3F7E96EB8A8AF85A1D88E286948697B85070F60FF651A51673790E580810F984 - 26: 21A6A1BB4F45A11FFFF69300B23B00FA6B97E728BBF1EEC99F7ED49BAF1F9F16 - 27: DF2E45C35B53323DDD4C6990BE090658AB6148E84C91A1EFA41498F8A8863CA3 - 28: 1A276A6BF0917FFB7D731269C384AC1AD33C3F6B468A2DF5B2B09F89A3D30EFA - 29: 3A3415215764F985B347DF8195BA50B495CAE26D73D497968FDA48C8F6C20891 - 30: D3F0E1CB156DA0339BE0C438E440A01C36AE1C3D979006CCDD9B4C04DF45276C - 31: 29F96F3085637A80AE4DE432B4DA434A2C721E3ED1D88A14B16AEC9856CA7E80 - 32: 81B0EA26A21E8640549739AF8F8906CD31B51B69630386D63922C8F90CA67AFB - 33: CD8B95E8F45A448467A2A510D1189AE5004F92021F2D019411694BFC1A286B2A - 34: A514AF45CBE2947F23E9CC96AA4D65C227C56BF3A05B37A9B77F35BD6658BB77 - 35: A40A55D992DA46508EF9ABD209E14D290C640B36315EA99E82B7FFD3AA216805 - 36: 890D418DF1DB48670A9C911518D166B02A78478D8950BC238BC73BF55B9C6A99 - 37: 888E57FCCAAF5CE6D44B0DB22DF86022CCD297274CA327C050335B7E68A58E69 - 38: 9D309D8F7ED42B570E66C33C647CE19B99BA34930B5C19E53DB1984262FEB3A0 - 39: F63409B60932B087C4D8BF3B7ECD3594A78E6B16A4A51D9D304883D340DAD98C - 40: 770B12D90238C8FEB8940947BC9448BCC9D19DB4D4D3B62CC277354C1FD9C6A7 - 41: A3661CC87A5A2E959A426CC3C2EE15DE0DB7A5177F2BE4A340E79CD3CAFA3057 - 42: EC2F7AEA80A24DE936105B15DB6B0FCF63FA1802D00313540DBB4296781BF80E - 43: F506A21EE73C5289EDECF0C3916AA0D0A2803C64613129484C22A8877D2F766E - 44: 00327A62D4FF46E6BF985BE450673900B1F2C58EB1BBCB08D6FAE06A42B32A79 - 45: 680780C2B502E7347772F7B7156706221E081A20F04A8B4D59113D12BFF3C12A - 46: F1CDA40ABB756C358B9F8E08F38494AD7CE16D9E1DB10EB6F61A54B2742E1FC1 - 47: F4A5DDA9C79FFC2754C14AE60082BFC7736B70BD4C3A1A2A0780365F17708EDD - 48: 6DB26F90FD7459F3D50F6B53A420124FB679C200C28559CD9F73BEA9D1F3F6E7 - 49: 4CF34A6CDFF48275804B90C9D29842C741215150330FAC49A33BECF4FCB5694C - 50: 3E7A195C034BE44BF7645009EAA1F4A4549BE3E6AF239CAEC3083B88EA15E7A7 - 51: B83A639653CFEFE2960545BD00201B68FBFDBC230029816DEDACB2A339A65A4C - 52: E5B93DE67B8AF0E7B7877EF60725363F02353ECB7AA1B15719CF72618DB5722D - 53: 9259AE1B51CF93D13BDD0E66DABF52C353CB560FB78F4121A06F37E34BA60572 - 54: 7682B67AC15ACB47A74B6B252E0A07DB3267A5F30B25C76345024020641455A0 - 55: 873C71811DB064C74C952AE0210D035A10CE45066390C6E28880A4F3D113789B - 56: 8B3BFA589ACEB6EFB39D987E0B6C9E51B889B16B04C83CAFAED3473DBD028B8A - 57: 270334E92C8CB85A995F05B2B712F8CF76113CB609BB967400BF69A199BAA29A - 58: E310245DDCAEF03C50B6EEAE895A4D5CC3911B55C41684F8E3599C10A9AC5094 - 59: 23CB6BF0F634DE484960738B1E5C16B758C4DB6850D4ABA906E1B146F591065D - 60: E8ED01354FEF6718FFCDB083DA60547800735E2FC2EFE4B902C030C0B8FCFF1C - 61: B1F135BF0FA659A289A5910FDC993D727AFB90DC2D06B3CEC2A4E68F5606603D - 62: B363B808582E1ECD288BFE85D91EBB2E258509A2F4A0B8AECDDD5E6CE454CA5D - 63: 51093E531663A8C26967F6665177F5781BF62B292282966B56E0C3CF81885D58 - 64: 9538A7FBFC83E631773CBE148CFB43B064BA117D4F1686A1F1402DF7D806DC4B - 65: C7E03CFF242283FBAA23F20DB7E60CD70564967C2319A183EAD34E51DC8E3D6A - 66: A4C7A4560BAACB777F48D651C5FFEF55F44048313CEAE44A1869674C1873F9BC - 67: 9CAF35E553DADCB73A42FC606C66AE4A7C68EA4C8D6D0D5D70E03B514A9D89BD - 68: E9B66A6260F9EB9526AE6335A9D6AABD1C1C63980202338B3282CD9AAAC9A7A6 - 69: B684F469236F7421FC7211B57F6FFA6EBC29D1535FBBEBDF6964EB086E9513F8 - 70: E44168C8E6511E675CA471CC753418C2A04DAAEC60061EB4F687627CA3C1C460 - 71: F857E2E3E27E1B9481A3A4E261DFB06EC1A5A2FD39AA8D884A35B7DB84CBC25D - 72: 48EDBC181098C90101D479E9F577ADCEA5A26F0C4D202F2B84B91642439803E0 - 73: AFD5652C7E77CCE446B8FF5CA27DC18B41E35FAE1AE3865F55F1B7E2B4F26A36 - 74: 325B27B3F9EA7C643A46DE798E7189462EB82BBB4888CA4A78E9F21B9869D7E6 - 75: 15E6CFAF067D81AEA560D19D470C985C4DBB89F04C1FA801732BD0B3D9FEA70E - 76: 9EF6C16174701CA971DE17D8BD23231279CA95F70C3E3016A90F281FAF204564 - 77: 149F55663BDEEFBA13C6F3F48F578B6BF2EB8D1AF19E8C2B351ED46173A19C4E - 78: 474ABA1288EEDFA0138F8233AAE5F7ECD82BFA11A19C15B022B346BAC1217F50 - 79: 8FEE8749037FB69499BCB71B0B2EC679D739173B572C8F15A336D6C06602A69B - 80: 2FF471E60F81EB1D917E8056D338CF1EBC622B9EBD7B35C95F43182068F9D274 - 81: 23A766EDB11B74B7B9E879C298B025512798161279DF6ABF55443C6F099A30E8 - 82: F4B2E6671B1D071374C9A7E8C0AE53AF8058B238C0025CF465B8761138A37712 - 83: B280A33C87A019503BBB1846570105394EDFD76F6F8799AFAE95C345CDB12B5A - 84: 0F7F6389A99AE5BAB88B8D51E61DB4C8E77FEDFEE37803D603A3E9D35A060F9E - 85: 931FA282297E4F58BE0DF321F63BEADC7AD6AE0E982761AAF0286C6953660E8C - 86: A48F1FD5E913903FBF7FBB358882F038C192AEA188C310AF9D1ECFD5B4FB6CA6 - 87: CCA246F0CBE873C03EDA960459B8B6AF9F3BD10876D3331C0700FFA2C4CE6288 - 88: 0C568638D74B33CC25731A957CB731D30D1049C95392C8EDA7935109DF6AC3AB - 89: 0798E48F92A7FEF84D8CABDC310EDC38BF44D0081E384DF8E2DBA637ED274E04 - 90: 7338FA2AA1D8735969B5D8C778CBA17DC6234ED6F1D3EDCC797741E28EDAF411 - 91: AA02110433C8783CA4B6DB389835891D2AE48E82398EB61CEE785FFD342C28C6 - 92: 4C275EFF43C9B3018192AB748072E428D031DAA0AFB71C95157869D4CA6517E0 - 93: 4412EFFFEB9E5BE84A3708B33FF8FD3FC86C6B09F612D810E22DACABDFDB40EE - 94: C151D878B550D714EBC8146901A35AD9FA6928254125EE5857DE9454FF687A2F - 95: A8422D9D607364547B01965CF4603433F50D3F5CCD2C0AD73C19D9491C19B7DB - 96: E0585BAC140FF99A8C5FE7875959B4D9A27973BA1DF7770F3719FEF753DDC25D - 97: 4D3F23D5E360476F80FA716A11201C7E38E4F47FFB34B744D8C2E5FA82B39AA7 - 98: 8A485EBE048F00B75F71E8838DB18E885420D34B90040D3DA3E99DDE9F7DD31F - 99: F00EAE59CA91F43107640051BA7AABEA8D218290A5EEE59D541F4ED0C6F6F23F -100: 1D0872D72C7C958794A0A306139E5333F101AD9425B3A444AD599302CA1D38EB -101: B9F85AA3FEF079601570849E21BF0A008DFCF50C5F8C3D475C9A4FED80D6EA41 -102: C7675E7B2DAA88D6F56587CEA4ECCFBF0F73E6E2F485049D6F634139108F18A6 -103: 961D2FAF25AAE2C828C693013795942E649FB60A3F4AB99A4C726176DD9E6800 -104: 0D72573A496CBE9FCF413E5A94D66AC6283F58BE1B2A00DEEA84928369C7538F -105: 547500C06C4225C9D21C5EFCA39A4FFAF2BCA5B90981901D468F5D357BDBD439 -106: 3A06651F91CECC35704958C77C428223815DB5A646DD2B5C23EFA80B55C98A59 -107: 681859EBBA0ADF350D3264A0034D7ED9B1A4C7AB76490DC58A774523489C9913 -108: E718F2E0345000CEA3645C15F02870B6E665622E6E7D3E7850813878953ED58C -109: 6892D4FC7F2EA6E20F45C8C1595038D1CC6F07DD0211839A5FAE2941B241F258 -110: BAC5688E05FD132E95A16CF72FCCA6D72EB9D184ABA08B657A48670B54B99D28 -111: 7E6DB1B204A2B7957D8B19F1D730734CECC7D235F1F88F949CD58652F5474DC5 -112: 88360E8D857C28E27865BAEC5EB248119A82E5D1BFA76A48E4CEF9F35E0EAEFF -113: 686A6987DF516693A84ACE8B9BC45D8D6DAA07A6395136CB8BA8EA2E9C1988E2 -114: 9050DFAE4F11A9CCD86EB77A51284D5110BDD75A234D9A8D0A9D096D50BAB6BC -115: 535925FC039F5126DCDF8BA3D0763C8F6819DB907AD2F5699A678153D144C559 -116: 4D25BCBA0A075EF30A38164CDD958965C1F0D915DB18C9DA0307A27FE7BBAD52 -117: CE930CF1D4125932CF246E58E5F1D452BBF8ACF3FEF65380B1B06F78838E9AB2 -118: C61E02A0380806339FFB8F3626CB60F0EDB4686479920D701BF827A572E06943 -119: 93B85986C608575566151530611633159888D84FBD545F9438045F22FC76B28B -120: EF4E34C9ADD7233AA57BC0BC3E3D5AD9F3B62ECBBBEB55C683F137CA35188F31 -121: C2A2091063D6DBD7D84EFE71A0302D6FD8B7F705E3FA313B2B4A7CB9DB96FF43 -122: F473842DF6449B5CA01ECEF2141B2371825D0B36F8F2C5103D0C03324F1B5ED5 -123: A21664BD6737E38EA567960E8080388DC7125580E12E1FFC7566195A85B59F41 -124: A095FCF6E3CC2024BAF5E3FAA22264F6E3BBF020F64C7DD3702E5A441E28FD1F -125: 8526919DC55187817F283A25D35D259E7690BD7897C5A54602749CECA53A4B2E -126: 18049FA72D1ED3A5DA6FDBC611F7AB6EA448C62D27E6EA11786799E9284AD393 -127: 0C03D92F1C2D3A13E202E4CDE765E8E7144157D2791801CA5B4E3DE52AF86686 -128: 058B4C17D5D9CFF1B6B654C25986312A39FBFAF6FB3099CE616E1D46385EF20E -129: 6D55D957FA582356FCFCA8E88E8841C9AD6210625CCB59AEFC092730D11E3E31 -130: 95A4F42399987CA35F9D09B89C769DAAA65AC76041D468FC83E177A14A36210C -131: B8640187180F1EDFFC017A1D9F0ADCAC9833C4271E68AFE37D2D0428B7300C9D -132: 83052B99D772BF42E02E6BA292116EF9B8614F742A26D4890F4FE47258A7A53F -133: 5412A8E71968A250B28A110ADEF902222F2112DC481FB1F47E8AA523533AF3F1 -134: BA8B9104AF732E5A1C864D40C7637AA9CE4D690F63A80C2163504D3F8434EE01 -135: 4F0238902BBB09F15E51DE6C49638E8265AAD173A814ACC00F329536D483A57F -136: A3560CCBB7E20C5DB74AF7CF9D48D7A6334E3DDAA18BA3B90E666AC8D66F8BC0 -137: 032EBC519F073776FEF325B7076F210DC84B704769F067FB1BD1CBD7B2EE3892 -138: E2FF8A40F4C200ACC4D7FD2B3D1FC29BF6C9E4E196BFC86E2E7DB74D85334623 -139: F66A5B3538F21010BE15C44BE69E705043528E13B81F139A4C9B0262B25EA87B -140: 22F707EAEAA4400B321327CFAA6DEC5964CE05FEB0612207DA32315D5DA0DF8F -141: 9DD31599464A2670E87ED158D582125855D71C3E1F9E6B051E3E3C5FFF638636 -142: B4320C714FDA01F8AB0E5D223E54DBD666208E7DB4A34DE4C6B5CC45974FABE4 -143: FDBEAC0713D8D592F1B22DFCAA8D1BD7985827191BE54F1A854E69E0B0BAEBA7 -144: AFA02143102B6AD8CE430C51F206A2C554B0E82F23121C98D70CDFC6DAE882AC -145: A0559B660C738B0093517DA09B7D25A8025050E380A060B57A14FE64F1B534F4 -146: D0CE6A96815C6C929DAE41F04981AA424AD18709008D852E6A3E207306E52E94 -147: 9E10B97312AF7829D553890065C066F6845A13E1F6B9E2EC079BB25EC6E68CE6 -148: 9D78F59940A631AFDE274E928E79550F2123335B67DE99BCD8ACF8898EE5F4CC -149: 47726D6D2460187ABBC09A6819E36BA156B673A5F07921FBFA8AE589CD6A95B4 -150: 5F02C7A0B8B845A1C98FDD443F19A501AF4520A78B559F542CE61B19F8391A12 -151: 7F7941C5702C58B5340444434BEC2D2A1B5A3BB7D40DCE192E700FB88C836B0B -152: BC9AD4682A38F65B08F8A37488799EC2F8224C069C8694E42F2353C7B50AD0D1 -153: 785A82F878A742F02714DD2DC9DC32F4CEDBB873A0887552BFDC023261BB992D -154: D1E291366B74BB0CDD2E258CA27ED44028648536668A2B043C0A56DC1B88C707 -155: 15924860AABBAEAB0094A497A621B76377F809D58C550872443B573BB3A401B3 -156: FBCA0E151017C6F6E2151B754E97AE4A8B9BC347BDB30CA10A2228A6F1FA00E3 -157: F6E32E251EE0D95C0D08DD36E56D3637E4E4505770EBCDC30246A714D3945378 -158: CA659B2FD6F8EE865DF19619AE25CAD7945F6BDAB220926CCB89C945E1470632 -159: BAEEBE9BFC97BDD6D6834D8F1B392A64DAA8660311734E38B3D3A7AE51E45C51 -160: 3FDF504C0AC62302DFC8BAEA4FFA97820B57A77DB8FCFF05ED00B8AA7347A8F9 -161: 3C1DD10F7DCAE111DA82BC7306E230B632DD0F9E01DADF93CAE02DFE77A5279C -162: 3E0CB421A440B65404E647444BC5F953C17B625CD7A8697649B56DDD41039FE9 -163: D6BDA19BB5226B9CB27624E1A85B09282F254318DD3B53E385A0C5C1045708F5 -164: AF7C85956E56D7C835002A80F4C63E5D57E724A852DA3B8ECCD60B201FB8283C -165: CBF8BA797D8759F4F1027971325D7578E5B7C5372DB230892E5E99D931B7497A -166: 52614D2D03741BD372BE7595893166EEAC8D13B7507C821B6D5AFB9A1B233509 -167: A9369AFDF31C080D94F35E73FCB7B6835BAAD7888224E170FC3EAEF3B4026458 -168: 7C248161FF7B1A21EEE44D5A60A4237B4A9F3247FC0A519EBF4DFC165C67AEE0 -169: 9AD8BA1036DC3ED58658BCBA3C18061A7F027E26A8CD4C838E9084A045989CA2 -170: F48906B1852A988D6070A1B5CDFC2E1CBE295217B4FE1D94B1E9A65C4F2FAF19 -171: 0DD50FA788B20A9788E76D10342E398E7095AAEA11C759307CECB9BD846E91FE -172: F9F0ADD2CEDCD4D376741A07C530B6030A4A3610F2DD7ECDAB898118248E1F75 -173: 24DD0F41BD9636D959065DC0315E64DDCE95738CB4EB90CAA74BE03290CD3A40 -174: DC9ADC7C7D69617151F76AB75BF851CD54797DE4D90CCA0F67340425E1603E9E -175: 1401A7D314153215C2DBF25B41CA224A3A27CBC39A76374761319D1A7CAFB463 -176: E6A57EAD08E98D535761CDBB160EA13656F23B9760FD93F6095FED19E3648011 -177: FDFA142853F6E104E26872F40EE1AB57D5DA5DE9CE08F7326FD5C15AED5AD6B1 -178: E90A354AD2DB7D682F62ACD9A5B75917386F200EDAFD7C9F0DF6837C23144BE8 -179: CB25CC7B01D042A730794C0EE610059F469E999B9BC641FE8293555B89F3B015 -180: 5562C634F2E1C294069BBD12D44338DABB0518B21E62C8685994298B41E44D07 -181: AEBCBE009C5D6D639D7857DA88AD5F20A9B8CCFFF405D6C0F29BAF50BF00A206 -182: 503CBC282FF75F2A7DE92EAAE48396C8EC5DDBF48A21770F04A0A60B66C7CF09 -183: B87D972905E0604A5BA0DF448870F66015A30DF7C6DDE7682D6F79E8D313B83D -184: CF6B864A2E53E537BF87CC32061198272036723098F0891EF4E8AEE561E89069 -185: B9198B4C8025B49D8BDA72671B89392A8A4D8845CE79025EA3015CD539F2BFCF -186: AC27C2EE2D6C7C2D45B670050B33964149F14F9108D139E615D90B9261AFA8C9 -187: F4DB7AF3909D161DC6213140246D57590F23C86657E726CAD85C21B6FFF7AD09 -188: 38AA92E98FB4C6F98542496138A076320988932574FAEE2BF040FBCFDD60B693 -189: 070A3F8627A515FC1BEC92186D660D8CDB6F5778CECBF33506ECFBC1E5400A0E -190: D3780DD5C62EA78363037964AD68EDA5362E8AA3B7679D6C6C26C1F0ED4D5884 -191: E8AF6E7FEEAF5F1DE4B904F2D4C4499EF5249F704BE4CA9B540B3549BA007F5E -192: 5F34F18A4AAF3B9F4F646549CD96C154358A403865D497C85571A0A7077E03EB -193: 7E443D2AC1B19FE376BDA10C3D31FEB9039442B6872931F5073DC2981484CFA4 -194: 59A92EE3CEFC188B013412DA75A59951E0E945F3ACADFB4C6FD22F0933793F1C -195: 3876E1CC66B21B9250416D8A7CBE554B6FA61E02AC70A7392938D18FFF09E6EF -196: 44D7ADD7CA5152AF8D9CEBB58253DEF1C39951D1189C9947D02167DDFC922DF1 -197: C11EB21A420DCE67B467245B95AEC47B4C40EA2B5BFC35B5BEF07E8C80668B9F -198: B2A180A0F912A7923551DF1C4CE7B9C90CF87A4CCDB0AE4C210742B1A7ED3D7A -199: A11B004FE0A23CB1F54BA33996B3EED22DA616451F461F44C09EB01BA2BFEEE7 -200: 7EFA86E792DDAA6D10AF6C2C3A27FB4EDCDC605DB11F76D9779F42D485B94211 -201: 46EE4AF99A12FC546A85D9E58A6092E8F6E78FC7014FE20F2F39521E0D2D0AF4 -202: E0D145FD4AFACAE2ADD87D9522A3AB77FF37F0E66A888C3DADDE74DBCB412684 -203: 623DD2D7B396FAF9C283E6DED3B9AFFCC79D13DBAAACD82A71C19DA9B4537215 -204: 67BB86B0689AA3095811EF9EBA3671B3CEE163EE528FCA81EE1247A752F5B11A -205: 9424163ADC8543A5C6403F158AC85873480956DCA34858F40149C939396EE6A3 -206: 5282724162B1661F158DB6587E328DD04FF453538604FA5DE3A80B5C29CF6545 -207: B103FD9C2F5343634F5805BD42561A6133408D7A922852627F3306A2EC6D9106 -208: 32706E4DDF5A2B907F1480B9678542891969DD3B7B7936AAC47A240BC1A51B66 -209: B6653AA2B3B78F3BDC9E06EC471E39248F5D3B8BA9F52C1DFE6024C41AC71B95 -210: 5342C7BF84541ED96233EBB89C53E27AC14C29D89C6E5782D2161162EA50F9D6 -211: D388F59DD69ABA52BCD11007381C00F713917984D9A144612E13CC2C8CF115B2 -212: C0C16BB30E0D3D31DC0446915A76857D1C27D25D17D03AE9927AF918D07690B4 -213: 27E8AE37383AA1D694DA48A8DEFB40E2E42F7D31913019EAF789F7E6F9663C5B -214: A4E87F8DC999BFA61A0465C709A26424A7EB818E5FBB410906FC0C83D1FCC84F -215: 379CD9ACA503B76BDDBA948CAF3FB82C1592EE5D3C802217939C76199BEF3904 -216: F19DABCD220AA5E5E98AF1131F9EC102DDE4789DB4A38042928585321AD40C5C -217: 28B21329EC4B3CB8E0EA6746A5CEEA12791296CCAA3F97F53D9F6DE3E7BAC66D -218: 388CEC5E252477AE29B23EF8C4D5CFF1BB843F2C192E04C5014E92AB1D5017C5 -219: 5056F18069B17BFED7B61FD337086FB375A097256DF36C37D60E8A8F0E01C9AA -220: 54B9DEC9696893B55C43F470BE594B9AF87E141C859460F7DA90FF112C429D4B -221: F85C7DBCA458D5A3AA22E5E44027DECE7D75A70DF4AC39D86AA6320212045A07 -222: FC450EF487E482BCDA6B79B6F88D77A3066694DCFA89DA79A1F26076D73462A9 -223: A76C7C989685AA3E508EA2DEEC1235907F6821A358366522EDD003BD20C9C199 -224: 1E340C35C5C6EB2D6A62164DE4FD99842E92566F5CE4EF1F0384DE876FBB05DC -225: 0B1FCB640D1CBF4D9586E35F734F6259DF1EA2D372CDC3BEF62CCA5A52A8DD22 -226: 0F84DC8527810DAEB94D3BD1965FC6F77DD55675431432301C84FD80A61F9DF3 -227: 1F3DA5BBB4493E7790663A708CDBA1520166649C2F7CC96592EA32717B056994 -228: EEDCC857926971C6753D1D6285E05B528C93DF22BF2C34667E0758B2A280A023 -229: 7CEAF3F9A496F48C59B36CE8227BAF6D77F06D0221FDC1824508A6E22C420A09 -230: 1999B52C1BBE44FF1880482F5C1388B97C054446293D2CCEC1A7DBFB41A9D5A1 -231: D854312B1C7D31FA1B05361D9A6F1732EAAAF2D6489869AA5F1F007123D3064C -232: 205821682182D86398E9ED127B1566FBD15EC53DA9B0848C44BCA4D1A7E0C2D6 -233: 8A187B6F5296DF4474F76501BB153706EAD16437C07B93F8B402C9064A9F2C56 -234: 295F177719C762667615E2F0BD877AC8D335B972C73122C268BE3781EC73F877 -235: B755C081544DFFB214E159CA9EACF5B0F8D832D66600C8FCEDA81E7BF73BB3E9 -236: AAD1EB3F56EB324BD148D11C0D30E73E469E5795AC6E5CF316963FB6D9D56268 -237: 7F85ABC4476718C75AF6ACE5E23D81801F3BF1C5C1106EBF166F93929DF1F5FA -238: 4375AE509D1850EBA1816CE1B0F23D5A1C88FA91824265E7471C30C51C8387C7 -239: 0C42D27AA14279BF6144CF3017B436E5926C857CF692F12F0A163F7F1C1423D6 -240: F48221F68C29DB5A0FBEFDA5A1DC1449B7C7E8A31CB667225779541C5D0D0819 -241: C73BE1389C322116F57610ECF2EEEF4398FEC3691EF89828AAE53FF48F9B1880 -242: 53F24E53C474E330ACF2AD97CADD0008BEB454DFBE95D014ED02E56ADA24D354 -243: DF2DD00644AEE3AB992A8A035A6CA1E06104CBD8A25F9091400C7B3F6BB56051 -244: C9D71CCB24A1CBB0AA78C0EE036DEF475CCA27DB5556D46CE48A9F1B7AA23707 -245: 2FE92B5B626A9CF044B8F6B05A8D4863F4C330CF2D617A1DA393CA4DFC6EFA54 -246: 2F77323013D451A104E704D5FEE77ACE42264CC12B1211C51B56EEA583F251CF -247: 95CA18CDC55CB5D71D9B115225DA6EA45ECD52C40063A4021216394917D59486 -248: D701032302AC49213B359D36942AE08FC0A8214AFF5436E637F6FF2400F9A693 -249: DCF14089BF74ADCDFC21F9E7A077673442AC402B6BEEC534DA9D33BCB88F4240 -250: 29F98AB76037295069E290227B73D6AC616511D9E184B6DFD8011B19FB804B7E -251: BF68C07AC316F6995BB27EBCC5BAE4F3223F9E19B286C467CEF3A5C7AF82013C -252: 831507A1E5747CA5F7CF8FB3760A0934B8FE1A2697844BCDDC2D6BD5659A9D18 -253: 266353552C65FB658782EA5FAC93F3D849E8D9C08320A339F7ADBCDFE865D5FA -254: 1F5A45E4B8B2AA9D2F17686BFAF092ABA5A5611E02DB2D9322F04F6BB4D6D5BA -255: 37ABE39ACA0BCAB14D8F5D2CFC80B467260D2EBD8DA8F1496B4288F3ED807642 -256: 3A217E5A5BC1C3F7AD21B4441A9D1EADBA6E7907835C152A86319A96CB197160 - -HMAC-blake2b-384 - 0: E2EFD6339FB7959727D9394D3BFE5B2B8043C2517755C8ED4E8CE1C4AD4D9B6F594755BE8ED6332CD2D417CD60820EB9 - 1: FD62DC26DCFD3869F9845B7BC4977C831FF6F3E20CC9791BCAC252C6CDE33F6D993A24015AD1DEEA622D8F088987CB35 - 2: 0C2EC4D9B0CFCC5BB5E2137ADFCD2F4429E8945383BAB333F826302E129C446B8CF26FE463BF743B4311E439B0A8BED7 - 3: 951F25322784C0E17CC3A62CFD3E6B99007B054B388C652BB27A81FEFDC4630F38A4C32A06FDB5867F995D4B9B0150C6 - 4: 8F3DBEE1E20D7A77311B80EA60AD0D15D42CC54DD20843C796D924830D5E9962A017430A7C376DA09D9D83CC9C6621C1 - 5: CD1C60CD6578E8DD546E4D483784047D17579685EEE611C32117CC66549B8FB43840BBA4ACFA29F6DE67994DD27F2891 - 6: 14CB6315C646EA25FC3A8BF9D4691A556EDDA84550A25A1A816911247F324C36A5670F2BA6E59AD8CC4A1C30F80ED48D - 7: D0250AD3CDA040D2911A6838A0F35BD6C2D4D19BF39F2323CFB3FF59CC6FCC90218FE5EC06EE52D2C91DAA4C4810D479 - 8: D8B4DD44DA0D235B67834A9EF3AD533F0E38E7EFF4B1366D23217379430D84F6115EB5999E1EACCAB9822039078F6CDD - 9: 656F582FC042F2D574F26CBDBD813F0D8E775B6617A704310BB217195FE11CC8339447FEF682B5576EE09AA39F452114 - 10: F3A8E62D047926615BEA73DFABA6036AC1F5AACA8EDA40F7A30AC8E23429D32CCD6EC3B5E7AD488CB9AD75AA95C3DF86 - 11: 8E356BB747AC4AF327B979889B7FBF3D70EEAFA6FB4100F353CE42894DC97DD2A295D8128339B7742FDEEFED545532B4 - 12: D711E147489BF1418BE3637806E2421564F56DA8E8205F3E3707EDC79FB4EFC4B552A3DBCD498D556251D913E359783E - 13: 55183AFE384C4ADEC219E10448977E93A720F06A26583107AC624021A2C3BA3F0CE6C694D8D69FB4C357420666F299CB - 14: D5629C962AAD7BA82A2076A977B736462A4CAC3D5BCEBEE944DE43586A0CA688BBD3C6A7CBD8743A7E1CA06BAD45F2AE - 15: 60B6E1F3D563E2AC844F4F01807DD6B37BCE8E89920C34B3B24D3D30559C25ABC5C68E2A60B0A3CA6F4CB51C0DC0FDA6 - 16: 2E21AF74537A5CD07C9CB69E02CAB0EA59D600151F3E3F8CE8447FC0A8EBEB8A5CCE2E8383CE4DCA5CAF7F56971BCF8D - 17: FCE5B5B9391E25F7C71804426ADA428779EF3E67425B73981D04EE9B12AA2502BD0E70CCB126F7DD1AD762BBDC5D66BA - 18: 8295A41CFF43C778C0830AEC1518047B51421EB215669D0579EB49786C2421BC2E30ABE56F1207F2309064B21FEB106E - 19: 8774D065D3E5C1FDD7B9763F64D0976AF704A45AD75C9E647B85515997DA5DEB802598FC6A2B04E3F7EE1124107B64E4 - 20: 7358E8FBF71BC83F52544FA1B41F22BDD7D675C00FAA02C473B2CFF4DF582EF58C1E11D04DB173F821C429AA55DE7A67 - 21: 54ABD134B7DE8B9741C505C6E71FA0B10E9940D4A62E4D66F61FFB92A781DF0A3E63DFA99C8CC7EB151C006D25A128BD - 22: EC04EFFEF79926F1520B7D70002CF4ECCB5E8939CBD9F63D0085012D064AA4FEB5D9C67D9C188998B1125D85EB8CE6D9 - 23: 71DFB1FF9D2D3B675C36346CA16A65E0BD00A4F029FF717BEB993D08B1ADCB540E3D41ADF0DAECD16D978DD2E7CDC886 - 24: BD7F33F6E1E572DEE240B05987B3E6D5545B75E05A3E8281339A50B176AF9E89559FBF899F84C45C5F786312E25F0379 - 25: 3A68CCE9E521FD57507084FB92F35D077A56157FAA231822A355CA576EDCAEBC0F7A3410B06BDDE917077698AD38EEAB - 26: C53B66A6C2A6A951537DCB2220748C965C2A11A9AB2A99E15F2994BD0DAE3F31816FC66900D27C00D1FA643E565A8E7A - 27: EDF535F33B45509BBD1302681765E4EB60DFC2561C6372A407A30DAFFAF49636710AD6CC3962EC7AAB239A91B1B1FE5D - 28: 9501840F8943F6B671956D1FA8F1F0355AF41E5ADF88355925820A19A82CFD94D0C09A56F559E769A1249A3C26757258 - 29: F923B9B2F79FFC3006FD4772E22319EECAE52E5969160E8FCE672D4463BD7AC5CD6CDE6FB055A57E024B1DB1CB7A839D - 30: DC03F6713B343E5B3886A224214783085FF487471744C2077BB9D2C19512AFF81615D88DFAE47610B8F9E5C2E953F856 - 31: CBA5DD27F5ADB6896E182B8BA92EED8E8B52CD2809F2694E20EFEA37C09396B879AA0865F08FFFE79161381B8260C0F5 - 32: 631FA80DB857E519ADF0D1F71C120A577A861F8492220A33A884B3FCF56984A124ADA91EE45CC882AE6DBEA323116012 - 33: 8378A6764A26E8A12B9949C106900F02DCE3E492E3EEE8E5B04C82A2DF481C7EA56D7866965814CBCF26A9F793F84EA0 - 34: 4DE1AB2139C4718278990A935A27799E0E4EA9C8EA887D3697F7CB557B84A3B2EF546E96BA0827C103BD1476438F0EF3 - 35: 38EC7AF1950EC2AA8DD21239B1A47E3D6A12ADBD9A6EF4185ECB08BB91832B3DC8B1B8047E2806F312FF67C478FF8201 - 36: F319814A42B9EFDDFBD646820BA4D5839993B749A4C46D3DB4F3D7E60BEB7E865FF86E2F67698F507DF6586643F234FF - 37: 0EC1F4BC8E7CE1CFEC574C42F2321B86C99D0400B6EBB1C450AB6580DAB94FF55433C96874CBD42479127DFD901FB0B1 - 38: 79E1E5EE2E7C7AF254F5909D782424ABAB27C2950F88A9E4C43F9B6A9921B52836F9C8C81968E1C4777B34EF377B8F3F - 39: 441462C5CC0C88BB195C16FFB9EA98C0C11407CB4E8E6DF54417B6EC0348489B2C65CA9EF1A915DD8BE90EBCDE868286 - 40: FA3D1D50BAAF3D9D76C5A7A5E04DB89D87CFF66520B08FA494BECE2B9719E42512C2C486248679F29F1011DDB966EC7A - 41: B8BE44C7FEB0B1FB157C53EC1312EA39E946A4E18E8CC36B844CB56EA33414996B9B6EC75A32347A922A2C42DB97759F - 42: ECDD3FC94B8E383C630E10F898F5168EC45535296486898AC1DB918B216F21964EB8AAA22F7213E5DA541DD814EF5DD9 - 43: 3C8829344F9291A7820FB6028CE6902C1882B02F5E9CD953795CD475AF99424F26A46F191FEE305C91B3D19F9D0E5893 - 44: 1FB699939257BFE62AF561050E015C8A25F1517BE45FC7D09D8AB6F9E7BBBD731B6F8E3A37A7D0E9FC53F102E6B5AD8E - 45: 2924B05C3BD1D90F5EB35CC80294689BC24438C953133F0A2952E633A75C66A03032C5F7E58687A88F6DBBE28F8231CF - 46: A504DC744A59DAD43D39C4BAC7D82242A859DF9810A2E4332FD5B92E251990CD2A7211872A3F8251C225B6EF29810114 - 47: 6517D9EFC8D9913A9DE719B19956C233636502B227D40CC392CCF701B04AE380FAE6267F7FDE2DE9ECF52BC9FED82C92 - 48: 7BCC833628CBC705490F8F78D181F44922B87397262D5F733A8734BB2CAC417505B1298E66F91AC7EC528A51B171CC40 - 49: CFD45DD9FA9F81998DBCB5D4E8AD4919E72F5B45449772F4337B1196DB3B1EBD88F5F386771E130B442EB76E8102E59D - 50: EDF591D79A4B8FEEB4279A7BCBA1AB707807BE65F1C079E220889E02EFCBE50B875532DF7F2632F59DD84C67E67590FF - 51: DA6D781D7EAA9EF0AA2EE8B37CB3053720F1854CD3C52042241D2111DBCA50403897741F2758340033A4D5D9829F3873 - 52: CE9ED86F39D72B58572887E90AE9820536C19C83FDD6331E87E9D7F4EA8C30E3AA73634B37784A9105757A1DBDE3071A - 53: CFBE3DC40F9DFC95C182EAE98CE49112EE1B53039C8ED5CFA4CEA89EAD3C4704E1A0BF10DB265616D3AECCBC7E882376 - 54: 75641A027A75259077AA0C2A88CC3E2D3F080FE85A4BA57BA6E1380CF706AB7483A186E0C5D37A0DF1001DC019FB23C5 - 55: 0361A72AB610005DBF2A462CED61C373F2F974A198AA48E0201A10866263A37A2E7BC1F73F9CB9A01AAEECB87A5F2063 - 56: 79F4CB0E66F83D5E263402745A659D01CBAB5FA3445837DCA117DF8BFE5404BE3DD13991791C3D95282F74878DF48D79 - 57: 588E0535C5AD19DB03A6B372C961DFD92780AFCCC4EF735F171551403F5DF39B3864705AAC7EA328C0D64142AD74691C - 58: 37225AD3FE0A9D2D1990AB1D3BECE6C8F2C7A33340CE9ADBD07808118023FF0F586136D44F5ACC2866D5E4FC9B8AE697 - 59: 414514AE03092F33676BCB4AB8D28CDF2922550BBA91C817D84FC09A172EDEC6F0ED39917D0625C039CE6214F2DBE41F - 60: EA0B5F0ACD91D5B69E6BF1F63C68196F83098CBEFBBDAC5658058235C792D23AD36167B8F55DF80670B96EF12ACB29E5 - 61: 362E8BB7017240FAE5A2F99A5EF1331A725A9DC6BF56394328712018946EEC09283E883E784E9809F8A78F635D7EB6DD - 62: B4354FEB9077B24A3EF0B3B81E61E3E566638BF565E512975D5FEDF5E4799CB9B81FF63E50ADBBAFFAD2748C8F2639F9 - 63: 9AB65961D0469D4589FD4F9A48963380A8B17FF59DD43212F1A00D77FA2DEE2380357CF565E0529B97486EC3A2053DF7 - 64: 527C5B164C63EFDE3A2E939770E090FBE854ACE750CAF785FBEDB0372800A2D46A3F0350B9FF16F41C9FAA92531F01FA - 65: 035FC236D413F377297023DA1D546EDD411206DF534B84A92E6B9BD69F2E1F274A16B0DF4748415538922FCB7F79389C - 66: 8088A71692CAB6CD37E2A42F45FF42A3544BD46A6D15F7F5387F330BF319BB471C0D35F3B0A8D6432D3A8502E425C125 - 67: 7AF755B9F4A083A3CAA0FBEC99EEA92605A1068D7558A7F0FD9D6DE307373DA5914A2F9A0447477B53A5394C058192EC - 68: E6147AF3B75BC28BEA40801A1AA392727C2E5316B689497A1F4A1762A1C4B5FBCE6965447B8DAB64CCEA58E09FC0952F - 69: 9B6E4D670B58892239F008A36B5149AFDCC30BFE06DE660ED5A753601B24DCF454E9AAE4916FA01256F30DC6E3877640 - 70: 7C5F4C73736DB27312F808C82A2198B43B2383DC45C7CD2157A007347A71AC720B670DF8125DB55B483179207B2EFE14 - 71: DB313F2FA18EA1043352BC51BFDB34979EE7CCB2CC044FEE81AC6728CCE3F70A1BBF09B5266CDC3B7FFFDA5E4DE03639 - 72: 55B092DEA6591D4F86589EC88B141171D5FC0CC84CC228A97B7A6304A0883B12917FB8760AB9F60B94E62AC1A3DC103D - 73: AEBB75AF53EEE9308955252437EC885AEBBE0478438FF547872E467381D0BAC5F4BBE4137FA639DC50B24BAD50DAB32B - 74: E340E236ABBDDCFD0C0A1228142598FBE100C99A0589D0CEE53B5D40DE3517F9B906AAEBAC2937911F226691E211F751 - 75: 736F6C28068FFC1D44AFE915EF2B2E7080AE5D7AD12E14F6E1EBE9561898CF3B2539B5975B59D9BE7DC5838D9B914710 - 76: B05D067F50C57324684DB5496D4C562C4F924C183366E7AD758C860A96674231A85A2C5677DE42166EEB1FDD46B761F1 - 77: 5D452939CA0ACC60CFDEAD461341E5156B0AF6C60246A57ED74B58DD7F56FEADB3ACCBAF5E3F1CCED95117E6E863B4E1 - 78: DBD083E3803651EB26A8B3BA59CC305514C431C9B2E6A3E5A856AC1885743F4989B8ECA528050881F78318F8D0A729B2 - 79: 9161AE833EC63E004C746C22424BF948DAEBEAA4707AE86E280B8F862B0C24CE44E234238AC0908A249A2D1BFB5EC0EF - 80: 471482F5D21D9A9221A48B1DBEC3839886A6F5068A34B71703DD17B3C3D2DEF2B75EE6C4B4504111CFD5FB3DA053A0B0 - 81: 44A184362D8C177EA74FE67EB320739A0B925FF2801A18311AD66CFA278958AFAA33730332FF77EBE365ED25746C5321 - 82: 7927B2779A8D6ACACBE4358424CB3C64F2EA07A80E4DD285357CD419323A5881772478C2F02FEFD75ACAB12D08AE2DA9 - 83: F765DF552FB090EC0F8B09213956F33A06B431069D21482154697BB8B12610C33D49977EA17197B329605042CDAD0939 - 84: CEE62CE137FD4BEE1D2AEFD6960570381215A80F26F64B9CE8E5B14A856E709A73E4FE49992305D85D049990833E6DF1 - 85: D971969FC958394FF1EB2EAB642F150215B299771545F8D284A0EEDE5D682786342583E10D9915F1DD52392D856E3A68 - 86: 8299EB80F7BBDE6BEF9DF9C672BCC5D337159BDA98D31ED12E05D817FA13E845FC6DD35474C5160F6750FD588157E6D6 - 87: F0AE246C4B3F76F5521F436E520F643549172A6EAFBBC4936C9BC65C9BCB08811F49E4A846948E487222AA50BFCCF226 - 88: FC3F42840F420C1600A626B62EC755AA0D9132CDCA6DC813AE33760BFEE7F7A94AAE90A0D341E192BF76E3F9D0EC88D8 - 89: A180318386F38442BA5CB295DEE7B141E14AE9B1F92A4F9FF06ED05A7E79845B4A3150666E1503354E4EFD3C9570F3E4 - 90: E8D9F18BDB8E8352629B37EF7739A8BCFBBF6AB3A45F0C6CCE01DAC73C2E4C8D509496910765EA597D2EB30317B665F7 - 91: 6BBF88EA3C5F2FEF60C3EBE7FFF3785B408ECA7DB302DFD901FCFA2FA62A79BEC17CFE5D5C77AC8F38BEC89C93CA5CC0 - 92: 8C67839CDAFE394B0FCA9F451816897BD2DA79D6239AC6BA3EE2814200D397149139EB0AC9B40B463300F4DB17D60EE8 - 93: 8C1D27302D2E863724F2A43CA315E116875BD0EF5763BAAB6BEDFD4076A79BFFAAC92C58BD0113DF2A06305050A39D6F - 94: 680A61EE50A7EE05C3ED32978700EAF343681D1D5C4DB809D7A57F2CAE74DD2053C95BDC4B0ACFF8237F523C23B19F38 - 95: D529A04670F78BB2534AF1DB96DC30089E008C4288C5DA568E86DCF03691D3C3598CA8D120D62429B44FBC70BAE524F2 - 96: DD92A0E9F336F5DB5FA020AAE917DFF397DCC2202207FC740A9524FFBD8F526D5C263327935CE661631FB94D4501E2F9 - 97: 5913C2E17C0A96E6DF7A7E96FC9BF322BB9F7AF52A854561851DE0F1B3AD1BD34C00FC64CF1588084B06FAB7A7050892 - 98: B451025F6B29E5BD2706DB48C8650BA52C09FDDED4DD10354AA7B216DB0CE892ADDACE734369D06A70B5292F60E5BBCB - 99: C734F13F7F8A7CD01FF83C227AB3B7610D1A0C2E9916E1581FC742CD48DDA5939D054ED3D8A9246C2DCC50E65188FFEC -100: 9D5FFCB1CE848F3625A19CE0DB23CC503D4883080A01D7B66AA259FD5C35C72DE514E6606827C0C9533031E2C43EED1A -101: 8A573FFEA77CF501014B3B9221D6F99F8053CD21AC1AE88BA8B14F021AB746B3B8EC29B390A8118D3DA399F9EA03BFCE -102: 41EAAC7D7256DEEA1086BD42FB9F5A56B7DF5A72B421B6864C24E4D8A0FF3B4F0474B3F0D9DB8B9C6B4B6D214676C297 -103: BBB30E99F1AF1FFD99F379794F1E648A0BF31B0F0BF54BADA75AE5805F56A62D8DEEB540D836822D958803EEB7221BB1 -104: 701454FE6BB3D850425A69EE6F704066D8B2B0C46BFB751F8326BE50B79976DF6BE26D531CF0E2AC972AF7CD38A90075 -105: 3B740773341FD606188A15645D651BAA30B099D118CB3AE776A90DAF104AE909D2A600C2E3913E40151D7C181C94390B -106: F8745B6F95C5C1C6FB38A5200BD2A3764FE204D95042D450BE2D7FF736DB233277091873EA3C6D81E6DC0474C6E62D41 -107: 8CD48174E2AF8284AA1F9A9CB6A292D34B6033C131C7B515A76B031BCF6FD31D61E1A741565F249DD02BB8B261501364 -108: B36763DAD5203A088DA3D7FF5A0EB55395B2DF84F9EE9F80D026712509DCEC082658DA4F1EB56F73420445BFD7247360 -109: 24974EE4EF4FFEE37AF1468F0344510F06B3C70D144EB104C65F6114068CF0B0511AABB683F272831CF07E843FAA2675 -110: A4ED01EC7592E6D0098B94C6127DE2FCE4966A3F5DFE1B8BCAE3753AB2F35CDC5A5E106708ADFE841FBD05088634297B -111: DFEAA792C52A87331AE508DFBDB4F22BD78A4C8EA7E47432CFCBFB5D863C73967CA55BC08EB8A29B1740301D4C8C020B -112: 634C76310A58733639B2FE35B9415B44B48B7B9EAE420CF7A726D7F2A9F709B1656F8F2299462006DDCAF9310B642313 -113: C1A3D84BB1EA2E84D6F5E7D9F496175B03F4836ECEC2FC6E3FB3BD6AFF10869BD2DB83340CC0583D76DC6C39F8F2266D -114: 84866B02820563FD6FC8F0F7A207D0A0C1F2C9730B8EAD40538857BDFA430AF4F38CBCBA18820CCB9EF10CF280691EAE -115: 9027038D0229A8492D1860E324D355E0BB0213065267974E535E8B1C717B43A390849010A08F4E3BC17470E1F4B8DF2B -116: A11B02D14B6245A7078D014B3C1414D1AE525197562AC231BB65E657AA4C55D8B7E3207F05235625EC978F9E0F66AAC2 -117: DDC3FCE5EC879B40F357383EE8AF8C03E7D5D52D973AC5001C100F203EEBB50CC9079413F35527D7BEE94ABF9A84E111 -118: 1D82DA0FD448E244CB1D0613A427708A7112BE6439106D82C55BF43A9A042037A003BBFDC8FE3F0C441CBB86AA15BACC -119: A3FBD7034E0ECA79C7A700F8172C5EDF4B7744575EFF569D0BF30F3BCEE4FF7E840983314503134F0EB3195D84A77576 -120: C098DB022B3ACFAF41B8F7F80CB2B9342B92D5F29F0E7D4C94B3766DBE9199959EA26C918C9880624AE5BC397A517368 -121: 314BCA818DEA9348AA65C7763C2AAD9AE264EAB16D703558C02FC2AF51698264C931D7043EB3887607134939013512BE -122: 089ED8BB4FB29435D5335F69EFD141EDA4AEDE8915CFE9E977CA07BF4013522D033783BCDCA2383A78AD6A845454F39A -123: AE35563CAD3B5D3C89460738CC67CC5084C1156F4EDAAAA392528EAB775767BE3D170E9BC46727DCFA92D3C01020B8DA -124: 7C9DCB28F423EC18C5C20A5382C8A9156C66418D5561EFE536A075783CFB575451B3C8CFF49CA0227CE10B89D5E11832 -125: 727C87FBF18D07759FC2345521EDF2F2E6C2B6D6172384AA29AFF14B35DDE8C7FFD317C98067686F0E9D2E7E92DDD8E2 -126: 91834D962C8B21D76488C34C723D54A9BBD8B8221146F47B31E4258540728F13C562A7854AE441D815F9F65FBC3368D9 -127: 1EB88488E2E551B7982129358B58EAE0337CC576FBEAFF70CDB61B6D6AB3803EFD6BC54493625CBAD64C282DEE0E7858 -128: 19ED96EC83E9E28E9404EAA475970BAB64DBE0896EF0DB8D95EA616BE31A45CAC84DAFCC8BAA70755B04F6DC0D945021 -129: 2054B86EDB891F52780CD84FFA0EAC642260BD8CA09C918D1F71FE3C27956813DE031AB48366501D5D9E0CB65598A4AC -130: 4257868D9F21A3E2BAABCE4DBADB6DC3468300816EB50D6C58837B1FA4A304488AAA0F5D349B258F7078D11616B41789 -131: A755057935E507328C1BE2C725EB3EE67A4FB717FE606FDCC0DA64BE7C8838377980D86AA5E97E201C2F01215BF094BA -132: 42711D9C6AD4B94ECCC7C533EDDB55946535A448924CDFFAC10C0BCBAC306035BA1110128A189C03E50DA32979A97ABD -133: A821B802D1AEAFA0F18A357667D9A1DA42B4E6B2D282113948853EC920A00B0A72EA4C03565D2EC8DB1512B414A830FE -134: E2AED5057A1575F4585931DC8CCA533FB6968874677AE582341B36FFE048E827B6E56446172930A54C1E80BA7944B921 -135: 7E9DB44CF172ECB6098D18BF4B6C7AF30860CB188E007121772C025698869B44F4601EB19F4ACD729CC53020AE638F4A -136: F2070221325B3A7EF6C293D72A424434E7CA170D692698EB9B579709639AAAA6A7A7154336BB10A476E97FB4ED6C345F -137: 31F32411B9503FD8CD62EEC12B918983C54362B37C7D6F5ADF83A567EAA07063831AF2CADCBE9A111BFF5161AD51146B -138: A85AC180EBAC3E1A9618D1E0EEA6B0DA5B27C68D2D88E295E73AF0697CF2D3B885C1DD06AC5BFA70DC6B9E0F965BBDC3 -139: C42214804ED73A5F1FD4A338551407B6D8360434B361689BB52109A599786E9421E90DA2815117E541D472FDAB15C42A -140: E539B20117D2CF436BEA76DFC2188DB326F934199A80920E20AD586CB509590DFC9959CFFC19DBB37908810E4F2E9512 -141: B74FC4881EF4CE3E23B82DEC18234EBE8800F42346A817D981F89B8DF36BB9F0E1B487746D9167574B8540E6948CBD01 -142: A71ECF63F4070A97088CE45B133178B1F016AB4EB1E1492E9550ED1F70A9B6F93B7B465F06BBF56459D45B92C08D7DAC -143: CA3B2259775466D0D61600405AAC2016DE7F429DD0CC38A53033038EB3C0E5439D94CA05086E0788F1178130642D61C1 -144: 8FA70E0E92CD8ACA06E90A1ED458F855B6E34854864B00CDB3C8A4B5C0580F233DC0E3A0A937B3BCF73CEFF9F4CC0FB8 -145: CAC112F9253C329E563F39234C60D0884C7134151FCD223408FCB170F2EEFCA99DD44DBBB52EAC3EE0A6462607D715C7 -146: A24082FA7E582205C3D5FA5C7EBC59B4BCB8B186967A6D452CDF8054DB66E3F3886EC2201E481AEF11D52D5D3904F51A -147: 36FB3AB6EA1D963E78505810BA6DD59E6620C252E36C6F67923DBA86FFEA645B6F66E01D8DAED25E4770EFDED3A56D58 -148: DBDADEDAE3CCAFDA613FB76E3A226B6051DA4EF8E3573F8A58812263EEA08C5AC2A0EE9B0E688417AEB2E46932382E15 -149: 4E464DAEFAE2FE0BF15713A05BB2F1B029A30CB02FF310D38AF90061CEBD9B58990265AD11515D6E6582480CBDBB6BE0 -150: CA8FF99C97F003EE17D0186A0354E63021B6D27C93A30F1C4C7F3ABD3DCED4F909648B16D3D5635D80D6985A4631575D -151: 61477F9D04A7D6A3CFCCEFFD2460E62B5C60E938CBB67FE615578C0F0E4D410961AC4A9541C32F30BDAA431CFD85C53E -152: 6F7257CA336EB5E1E6BE568AE1536D1A289518242B8DCEEDC4F9A25F461608AEF58263F8233C7D3CEACF7B354D6BC75B -153: 9BCD41E8645B7C76100F06F9AC3069EB27F403D2B6F1E69FAB86806EC2B822C3D1673CC4E05FBF3FEE93903D6B3C0424 -154: 69664A375C8B9CBE6ECBEB7E74B3139E9A3A3A097BBBF3CAC1E13A4C4E48DE877363FCDF907A99C69A4F52FFEAF53547 -155: CBA3D3ECB94A89CAF7591086355C79BF4DD67AD3E472BDBB7C59C51760C195283EF45A1F9A8A4615C9514A46921358B4 -156: 4D9697E846D03F1AAF7A08A2C0A9B4A9F4CC546F3433CC0773568803E050A977FA14DC2BFDC3D2C04FF29629939D02CF -157: 1C67DD9FAACE24FB125657CAFA6AC6A77D20BB6B90E5EA6037D3909283F6C53EB23E8BB55C2E67B05C8FBB9ABFF27458 -158: 0366F13C0469677D6B2B26830D47B56F2BB01F4CF46650B68C378174AF0BB130F848EB8F5960C43F76A8793C4AF1FF28 -159: CD76F0332A14D4504DAFD5A61FD33FAE07F5EFB6EFDD2625922CD34C1E9544DF8B5E5DDD9642450484729BD56D6A2746 -160: 2DAC6B918E8DD8B0D132E13A6877EA03B3966CE8DE035F36E63EBD97B8A00939B8672225394405BD3D8B36FD33013AA1 -161: 97E443DBF8E9E7FCFD85BCFB168F8BAD57E54514671EC1558815AC2DFDF9E0D4DBAD3DBBEF59DC04151B1FCDE5C7F13C -162: E56C2FE55C0D1577D6B36A6F60A32EDA3E57D42A8252CCF96E974E0AB5CBC27F235E6746B53919228BB8F682D6D5EE7F -163: 2D6AD4813885ACF91F86C480A2DD8BBE880AAC61E7158296BDA71927A2E3998E999B71707156DA2B8230EB81DFB631B8 -164: 9FEA4C7D949C7F5F29EF07DED769A6C2572E9C66199D1E7F12FD00FF08D21EF0AAEE8A1BCADCD954D704EF18D030390E -165: 2CB43085FDA800D08F45795FE6C637A5F5FC7794C37FC5C3C04403C7D4B4070F7202A7573D5CA59E6771F38CCEE33036 -166: E320A25015B14E2E8D617F79BFB84A7196F3DB1499D55072878267E5ACC39D34AFC08C18613F5EF8DAF4090CF27FFCFE -167: 29D4FFC8F46DF51A64E3F791AD25C83B0B0D371DD1866B869B8D56C67EB13518D6A4AB3AC35E6A1C2852298B46D37E61 -168: A1D665304B97463D8F8A112268C1497492279DC444BCDAF027898849C1C18620DC153A97DDD414975034FCE74E3E4218 -169: D885891B5B53C7F5BDAF932AC9D7C1C1FB3A6B70C62D4F87DDDA96E275441076BC78BD973E62710C9DEB0DA086BB6D89 -170: 655D51B2657DA6BE1DC25480DE76891D272D46DA414C42CE71DFFC7B286E338E65139E408696B6CB85B1900329D9DBE0 -171: E51462E37921130A0F606FDCEE5BB3A249B585EC58A6682E5FED0F9923B3C9A32F22662A9598D98D385C5E102A75A5B7 -172: 2C5AF48686B5E76874216A75E476932320F9CB51E9531C8A2AC6E8CE9BDA572277BA622582AF47DFFC15BBCB38AB8E4D -173: FEE7759324DEBFA2396958EFDC3160BB13C64EBE55E508734C52088CF3232AC947F33BC008C0BD243F22950C047AEC4E -174: BEDFA50FAAC1F34D293A8D98E3A4405D72CD1872374730380FA3B698E3442920AD79EAAC275CD677019F0D1DDABC1294 -175: F56A79F5B5E92A2A5FC65A346998F295902A8A053A746F8510C4E69F2A35C3FAEFD5E3C67FDFB4707EBEA31F89317906 -176: EA5053634CE6D8DD0F7B79D8ED76D5F74E2A431F030D8D1316BFAB2C951CE16BECD0F64EB658F88BD79D516D0467AC65 -177: C8E5C1CADB69B1EE867FE5B04B45E9FA902DC1925A43485D85AD4A277443C00A8F944193D82B3C7CD58D7FEE76025E40 -178: BCDC2C7F802C5BD9EB938EBC2019523C4371F880FC7AF0554A4721EF239E5E2281152F778E83CAB0A8CD53ED7FC00A75 -179: CFA7A667D2698673845AB3A9C9DD75499F9EF73390B217E705915D020B162F8C27DBB9AB86373067E7C07A3936C237F9 -180: 63137A5EB0EF084FF9E5C9D0C74BA377CD451475C7AF9957505E740EB0A92FC9AA98E9D9C6A03DFD12B28EB7D33CD200 -181: C7CE724583E363C93849FE094E92396CC84DE4E4BD044C5F30B218B8ED94507F6150F288F0AAB05E1A30819CB246C72D -182: D5A720A6565CE2AEF83F526E3F170BED3FEBAD5F8B61FC7FE49EE530E00A4FC6F5ACE0A515543EC7CCCD3596F3451203 -183: F5734A0233687B2033247BE55A785ABC456F3F6A5A98A473CA2879CD7A6C4C662AA3B2C3C274102DC86534A4523E95D5 -184: 2131B69D8CB775BE7D6A2290088673736516690CFA274133134A75CE921BF44E3AA37DDFD1A25D9ED479349F29F31DC0 -185: 6BBB74C46FCECE23643A6B84E604697F6959975F7FC2B27D11143627C97429F0D25AA89975867E17F4F66B8F14856F9A -186: F15F4198C827AD8E11F960E7BF0A4FAD2A8E9B307DF2B0C2F25E2DA96A2659C19B89E41FF6BBFC5F5BB1518E5B3F829E -187: 3DADBAFC2AB64BBD16CF0AE08F4BAE514FB74DF35873F7E49A96FE2A84B43D926A485EBFD5581B061729700A6398F87F -188: CDDE4E482B559A0881F04D6DD84DA1E66FF1E81CDEAC1337C3FD413EA870F87A50A4345C85D624709116ED13DCEB0C63 -189: BBFF34A1A43ED451B4E9C68E4399E99C6620D2686541076BA3DE9279B12D973E6056C467F8A4C3446AE23A5C261A4B63 -190: 6D0A63CC63C5B4E5B517ED860BBE4723F4FFAE2934EEB7F59B2C943C9373FDE8DBCBD325218AB377CA19EBEB3D932BDC -191: CD2CACD736EAD27492B8C3D2BDFC78AD9C61A090FB78B6C4B9116336352B238BFD1DA6C0A5093ED726B4FAF8E974E034 -192: A0D37AB9D467FC6219B7FB93D9171D0AF03767535608FFBE0A575245B63E088D3C0DF387B0421B4FB7CE28BEC98D2761 -193: FCA0DDFAB1CE1E7C30EF3B7C6F9F248C0F19E926B4E5769EBCABCBEDA8A4D3A66F344E52024F51BBFB2C275492AA6DB2 -194: 74E588693CC883FD65993D6938DC75BD257D8E7CB4E6958B4FD9A0214F24D43F08CE55AE4BF4C819142DE23C617ADD3F -195: B6945DD17122105CB807F571900C1416C3AEF9CACB76142E99A8C689CC58065E80693E0314D327D1DE144608B913497D -196: 0C58F4426E2C98FF2770DFD52DDF155F842CAAAE70FC759F7D9304C7477400EB263F6A208F1DD9462516BC27C18A1AE9 -197: F47D69B24FC88DEBF4B4060F7C5702D57AA2C84F25CA128E0E99D7DB0ED45629EE90C5B998E64076EF7BA288CD69D815 -198: 82671175BFDD5105D1C71EFF4411C0C8FF39199004D23B0287F0044902398284D6CE8AEE33BCFF12376F54FB38FC64B5 -199: 10A389495C6C70DF373C08959C8561705AB0EDBB8F0277B43E7D0EC3B6039EDC6E64BC94E5967CA05A24FCEAF312C898 -200: 6D5EE1DA84548AE17ED5B8AE43D2CA3EB1FBEDFAD17867B32A4DC33B60C937C76D27209B4D17C940C512776537951A60 -201: EB4128D7F8D3558BA72C46D2DDBF9B1569DC86ACC44AB2BF7158D9F36C85434C3C7AEBFF63F0EB5A7EC46067903AF21B -202: 068852BDB5B1739D3AC05D827A1D04B8532C00AAF960850E38B86C80CF52B78D6AEAFAAC087CDC8F95E2953B917BC042 -203: ADB26C7180B8DDD5A18A1785B17AE145EA9490262472E59B7210E456C838B02B3FF85C37396C9DD4491999DF5714EB53 -204: 1F8BFFCFC5BC86711F30E890A28EE15D628805533EF977B0B7ECDB6458CF5AB670254571244D245F20A115AA72678850 -205: AF9E79C1B7C82583172AEBFBCF70CDBBBC5A34145287E48ADB0B0CDD1494E9223B2EAE0DC5E3544DA2907924A52C57D1 -206: 320E6240B59F41A42F2E402388137E70BDA609B7FED4805FC8DF568389C7F14A014ADF4B736E07DCE3A81F62A5936ECD -207: A01B5AD0EB7AEAEC76AA74ED3FC833D02CEFBAFBD9A684A743A05EF066B5169610FF25014CF4E3C9C09830872AF16061 -208: E3AD4F0E10B9C30E2AA3A092E4F7A30A89F3BA81E1B19E9FAE6C6A5A0177AC757D6698AD7FFC783A82D73236A73A056E -209: DC0FBEF72A7825E19F0860E60F0A930DAE3110D10FDB4CFE54C272F0C21D5EE1B1141318C689525E9850AFDE95FDFD7A -210: E40DEF10CBD64A69BD099D78599260636E8B4D5CF9CF03E44B878BD6FBC40AAF723E5D2C7030F05C44BDB513A294F008 -211: 56921133E67F37BA68B8E29199CF4A106FD7433572EDC0CB6440E9EF383C4D0963EF5739C3388B7ADD10D226786AC559 -212: 05111EE07C8CA9012300DC99E2225D4C5F392A04D4577C6238B2572B0F97BE66FA51D364234BA6DC39A8720B04C0BABC -213: 779B5A94AFFBA7EAF658EABF146CAFCB0F2C3F5C9213C11FF8C776A622C098C92B97655BE378042D2336084135832246 -214: A411430E3130F45F2860037C0E2B8D1983E90E766C75978886FAA3EF890383E382FDDC9B0D597BCD428048B3CF38ADBE -215: 9F0FA131949F9F24EE83F648F582F0ED55F684E23C9D71E726B53CFC74F83D6E5A7026D0728BE1139771B4FA04C7183A -216: 54BFE6A248940016B6596A18BDA3A5992AE03786AEECCE79B1B0D4B4E08985BD1D0C23DCCBFD1B2C89D5CB32849E93E9 -217: A7CAD24AEFB8133CC76199EEE5B8C789F7B37F3B43EF0B275C777735634A698305E4E975D0348564269CEDB846EA69B8 -218: 350D613190376D013DA493FCC24C51CA33285C7189E9AEFA9961B3F44F738ADCDF8B2586E9D89775FC920C2ADC4A89A5 -219: AD0A4640DE8ECFD31F506A6275094A677EC0CB6D9541079044B43B447573461B58EAE5CDF02D2F3AAC15D2D931EE9139 -220: BFF1485E7ED73F9F69BF067B11A7CC4DB314F4DE84E938A13DD38D8F67378D0419EC3C8BC8710851CA65841F3D938907 -221: F9FB1B3A553E5C5E8A00821765EC588A241AACF5CBC1CCFC53FB67E3F7E7B906CEDE21AEAAE6746B9D5CD12BD87B4198 -222: BEFE21A4D11E36CB1ED0261EA4509BBD6D28154B1379E20FECE905398EA671E8A3B856CCEEDED52818041D33D6505DD8 -223: 3DFC0D4F04F06E6EFBFAB1A5B4F9A363920E05B7CD6634DC9B8CFBA0B7AFE3A5C1CCC259C14B3E678A047FFFB1C42B56 -224: 5E64363560488187AA20814DB407E1A9A0E725DACBDB54FEB4E1102723961D01D3E9CB4A1023D1DF8FF131BF1E13E305 -225: BB35B77698B4819B0805AAD6363F65D597733DF0BC963B682082598E8D62BEA4BEE6952600B3A2E5B03993A5074777A7 -226: 4A8A2D66731901AAC2F900F9F94E21A661A63797AE5B51F8DA52C455EE498AC85C02CB5525F1266F43FDC67C6DA6163E -227: 707398E730674378D3242D5FD94DB93EFB0D93985F28159095AACB46503C3282AE93915379F9FA9DBC366AA8B4FA62CE -228: A59EB986281305BECD1703D1B4B00EB973B568106F04D6BED0A50CEFE312244EF5B3DACCFAC22B5890C3D6BB4D920848 -229: 7AE5FB1CDA1A4D7EC9A3A377A65F3A5F2F5BC800CDE0914CF18351952F197F130BD07AD53E16F613D9AB49B03B56DB8F -230: 8BF00DEB53F777780F77FCF14A524D53E2C3696F9C92EF54A5EC2777BCDAFAE1325EF562000250BA030ADFB27ABC0592 -231: E893ECF629A4C56CB45348FBF5FA126E95E3A60A0E590E75AC5FF7DF22BA609E72B7612996A84E8699F479DF8BB19442 -232: 88133645942997BBDC2CEF36E1742959869DE7494BD334CD7FEA8C7FC736FBB61E1DD952B43E4749381F440526201B70 -233: 8D6ED566DAB6634E1CE4F84C36A0112818218F4807FB7DC5ECE8F3C0055EBD5B325D496A52142519CCC3C769C3B65340 -234: BA2E0551EFC0A796AFEDCA3DC46010BF00D57CBF6B47ACDEC02DF67ADD7FF48EF4CC9B448C2E1014BED0133DF36237E5 -235: 3198B778718E3993EDDCEA855914FFF73DAC1BA04AB4B88461478D367EC4298BEE008F124B8AA142D314AE6188B0CCD6 -236: 532CF7749CA59217C79A83552A3DFDFB0A49C568D109BE4DD84462CE6508E7D64C0C2455D583A8FDE0D3A62289BCE552 -237: BBBD757D7887BBBABD88C247E748417C99F9AF1150E863F214264573C3905E3F85D1B715EC10899288BDAAF03060C329 -238: 7016FA50616A7EFB191520C1E1C4D2ADB5C5EFB295CE5CA387D5C786EE26E04BD71F5A3E0A3DBEEF6443E788DE35C5B0 -239: 9D41893CF2B96B4F488E4F693EFFB7F8DFADF78046EDD8595A457798ADFCB93F54525D5BEF065C66DB04084D855E2886 -240: B1770A7CEF9AF476931A16FF8C75F202CD9DD93C8A0BC7253B3DC72C7B44A9A9084BF393566526672F5AB383418C16B3 -241: 0A7285626ADF287631579108B09C4A8824D26882718FAD2EFC16C52DA6572760609DC05C683C31BDD88B63986750868A -242: 3CD0CFA89227FCCABE4069EBBC1F9124589CF5746BF5E2C34B7A0117D66E03CEE6F2874DDE05F02E3C33244567BAB346 -243: 9770ADFB0521D8E48134B11130B0A3F7729A24E44969AADF8A420737227E89E5EBD3DD4173F44781E2E0AA8DBAC2E7D4 -244: E15EDA14B3D4C927A427B0965BC1F3902D30E432457F74A303AA1B93DC81577800AA553EB5A94C474E62EAB1CE511055 -245: F2CC8075B56A3E5D4EDB69BD5F4091277A8470A2212A8E38053EE2F138B18BA815BFA57FA46943F47825E0E45F2EAFEB -246: B12C0FC3E3F3E03398979D0346022860091F94F15E452B58F3FB4748A84A5569ED15A66A0F0A553F60859E8F02A74C4A -247: 9968DBBF29BC7B469CFB8F7E3558AB75DE232876807E81F350D50A7B617D823E6A3E853AED696C1B2622892277080227 -248: 7DDAAAF3991EA439E6454FF0652F37F81722C4806C643B7AE8EB4E5EDA5B026BC0B7703D065A9DC12E2AE86B65873F7B -249: 093A0374C170E26EF7743289AC8915FBC5E5B07C0D5FF56D954DD256C78B4A926DAA64C110603391B545AF1AEDCAF707 -250: EEABCF9609F48CE7E2949C681EB97657C0879DBCEC1EADDCC8DD60DE1892BC7CEE2B49F53A7875D30E6A7036D5D7B3F4 -251: 4B1890B53340E5CF63CF9BF573E61A920DBB727FE7C6218BDE80E8941F47F0A107C24B84EB74762CF56CEDE7F047CC3D -252: 2F6F38086C248DA50D5D68209A45C1E1282ADFF048474AA3E6A7B85CD204645C93014A4AF2B7AE7BC8DFC9BCE7A8CCB3 -253: DAE7D19125E0D9B2FE039BDAE417AB942B0A66C98AF0A42070AED682BC8F173689EA99A1538729937B62F4E92D63134D -254: F5C90E2C857EEB7FEDDCC8C99885FF26AC095EB18FAAAE1602824FF7A83EEFECAA577018E104EEA421660CA1FCCF2C97 -255: 0C402634FCEE1DA322C680FE914FE9AE7A38C6E371B7B42B06DDB65424062BD6BD9497104C10BC5997C78775768F5DFE -256: D8B3B2F4C0679825244A53DDC8A39EC9A6AA800EC77086A834E040FC6A6AD42693B42E6D2BBAA78F0C0FCD24090EE430 - -HMAC-blake2b-512 - 0: EA1896AB7C8319A824482F757C038B70089765501B1F8BDB78153D195915BD330BDE7A8C0FB6DBF3DE09277662BA661FDE80017DC277309EEDFE05BDF5B27E18 - 1: 7682E08FF9DFA80E3C9883FEB9065452832084DD32C72FC4815D73906701C8DB39883BE4A3B7AFBBFF33597CA3A9D7EBD34916D2D3FAAD999EC2656A210EB76A - 2: 87E79C4A27B2094AFBFA6EE60FA1D083BAF46521E03EF7B2A487BDC5060BD3D0D86E28B5762AEB0A99B79733214137AB83C5FA7812E337051044B974C67D7E5C - 3: 649BEEB90C41F477487DB04BC6EF791065BFBBE78C916E0668C32A0D8A4805DDD1E415B33FA63F11D1463811757CCFA5317CBFCE2D4A0008D886EAB615A822B1 - 4: 23C6F2FD46B257655DD220650D4E04681BFA1B30AE76F38E15FA2B5E0D338ADE7D420A303CD8DFAD35BBB317079A55A90B958956960F8ABC43D5D20D9CF0B6FE - 5: D79F7E43E4C2C9654A1992354BBF0FE4800377FA600D6E065568B4E27DABC521A210EDB1ACE4EE5EE298F03BDAB769C2235D07C2A02191E1A7DA36D22863DBFF - 6: 71FEABE49DBA07EE415CFE4E490DF7234D5DFE275830F36ABD224AABC32D2AC3059BF23F784A38A3C9145441417D3042E0F95B74E9F831AF11CCC3AABBA977DB - 7: 0EA5FD2CB481CFD4A7B27AF1F89D139F881367A32CC76E7EA5DE5AD683A926BF3B5A5BC57C2D48F729DEE2AB9353228AC2FDB04DC31B0E4671B1503ACFED6315 - 8: 476969CF5B495F6278B815098A58C4E2BA4B50F6D7FE1DBDD67184713B37016E2DB6FE95D394215EA2C8363ACD4A98806FE788204BEC951FF8C4EFC0625508A6 - 9: 21169FCAC853B78E5FA01416A8E545C0C4EF610818A033889C3795B290D12E6FD024594860339459A730DCE43205E41B76C6A0CCF24CF331C77E9EEB657C4932 - 10: 6CDFD03A2D929FA3E174A576C2B26A89CA8EF57A9E40203E39AD660B16C3B70748B1D06FC40447F77E9D14F4A036E0204958AD0838D8359C724BF0DE536FDF96 - 11: E136FCD211EDC9C4A8E5D5088848101899328F2F7090888F78EE33CB10332E0D79658F6EA6A8080A858940F0E3335BEC44A5BD7B4AE0926F855CFEEE38AFDCF9 - 12: 591BAF602D92E369397BCF6AF04EB6E6CA5B36C16D93895614DF1F5EB3F784D1747DFE286A268280DA87D27C11CCFC67ACBC828DAFAB97ABAA16B748C0A87463 - 13: 472E91515238A4D76C71844A3C78A455BB3F6E017738E4EDBCF105AADEC7A636649F92AECFD2E36038DEBB9EA4298AF61A6EF8A9CD95BB2C0FC98C94D7DE4C60 - 14: 16C2FBB590F613F1D6C54548A86C242AA3AD5CBB842286EF3C5421647DD1CEE2D35FADEBF74BE8489A98403AD3BC74F1362262E355D9B63AA1B6CC5D8DE48B86 - 15: 6EDAB004AD8122442550F5827FFF5E37441F5389A19D8E2060B630B3B52F3514190C586FDD1F2B3BAAC228F479CCAD4A96E18D5FC2EB7AAA0BE642671DFA618D - 16: E7A23AD0444BCA20B5F660B83982F53AB231BF9EF7F0C8B7CDFEF389301CC9C9F16EFC95AB505592EA5CFB0F62873C7996443B70CA0B128EB99D830DA7D12BFB - 17: 0956D4C7D398CB4CE1A1513B676B4EDC958B4736E96275F0B26399EAA74069B8D907177F27DFFD0F3A103F12DEAF336DAE351203AD4E2F65FEC8B932EC804149 - 18: 5D8A510635022D7F4BE55D07023E279411FE3EBA43132BF4D0521BD23EE056BA04F3F01B5E1C395AFAFF32AC92F5AB507EE08CD7B122E03C98C75D295BA48F0A - 19: 1365357BC665858FBCCBE9C08722F870A010B501697927D07A57B6BCA6261CA4180CBDD77FF95B16390526DB966E23650A8F89968BA4CD768BCDDD27B206AA69 - 20: FA19E8206FB8FB96BE76D9996470CB9EB16E5E9B86F2A798F332FC82C540BCBB9C1FA09DAFA06B7CCD6FA50448A20BEE92FA7C74A06517A140942451D706FB27 - 21: 9366C4B12223645C6F39F63278CF87CC8455040ACFFEDA3ABA223BA76F350F0099991CC9703DB6D35FC5D91C88C0292A7483DB44FC3BD46CFA6F0E4E47F31279 - 22: 7B1E389354327EC217901DD0475267B709220FCC354EC2546A3B3EA3BAE0C3F3BAD55F032A18467EEDC7D798E107F4949C5DE6AB77A3825604FF2F8E36809C2F - 23: F07670D48E17914017DB563AD7216E682F6D5BCD1CE2FD9263F989F498B4E13178E2D6CACD6ACAF824D3001A89E0423AF0356832A855DA7D8EDA8043BA59BD00 - 24: 47EC9E45471621B338C0D508AC94A63656E24FD215DDD77E9E0B4E1510C5C1E8FB93F5090F2E0D86565A614E491CB5076C49E909254965D65774B6526A0E8323 - 25: E58B90B65E06FFAC887FEF9AE0F2C1357E020485A311C3E00F039A430D6151DEA79A25AF63827B0D055081335E350C6E41D2B66470B41712565C3877D185CA04 - 26: E9761CEFE922E0221700FB347AEDB4448FC65ED5A7C2502F290991EA22D18A0F4D788DF5D95B4ED2E00CDA37BBB6C28CA037B9D2A57C03851435B0E034156A78 - 27: 6368F5B7ED851155FD112A41A75E2E25E538F1775854B5AD73B9A7A27A754B044186EBEDA486AAB3487106E36FCBB07BA8EB2DE3B76D499609A89A7B8689BA78 - 28: 0DE1C2BFA7FDDFA1A463B0BBD79DD7342D3DD174CED3C707D8825F9DBABC336BA7CAED3F0C0C0FD39A4706FA03CF8991B44F0CE18FB8F797D12C7BEC44E91EE6 - 29: F1B7DD52C4EFF89AF0429DD389CA7B5FBB15B74564D92CF8BC8B531F9E9451B90745FA524BBC4AF716BE9E53390D290EF15408843768495CADD670D059FC669C - 30: E040E6CDF252A6A89F50758CF82B9B7A62A156EBFCA178A32A72E39F1285F5534860B9F8DF07D2A64DF110EFD11246CF9728FA76D0C9362ADAB3D95289832BA9 - 31: 58D724946DED80DCC21871147E9213FA4B16A4D3B0ACD90D827716D534A2B38DF9FEC3BE944637A60769203986F99E2967B80FDE5886A3139FC1697EFCDF051D - 32: 297F1658C7924E4D5B3F0D0F56E0C86116AF25068EAABF05D7F3F32CC4E388A59A34D4C3C42A661A062EF17C83F9731D42D75638FBF5F501566D3D2696585179 - 33: AFE015CD1034EF25D3ED02859A4AF0D1B0189996BCAFAA669D8AFBC5F49DF268090C43367A888C52398F6DE3E09C9C090F54228D791F6185B74EA081B8F0509F - 34: A52E1C2150929A7372A00C6319D2B4A990CCE3E9A2DABC6E04C137C49FE8554B0FA36E093803E9C0CCCCC86851FCCFA32C4012F3D39CD2D814FC266273A5BCA6 - 35: FEDF9EDABF14820FE5B9635C957AA059A48B65CAD0C54D6D3B67EEF3F1F3309D67F9976013F0337C7E454709B627EF8B7BA93DA5901C165BA82614A499A69845 - 36: 69AD3CC53F0831AD0DCB19EE1E35FFFCE4AA4F2ADFAA9FBD53F3B7EE8ABAB637B3BE7DAAE15D2FE9A710DEE69CC19D4508ECF82CF482337BDEC0A16190A0D9F2 - 37: 3A987894E507233D2C164C091AE4D111046C76226E618695C32A3A0879193B374F7216AB2B16DB0B495C9DED7EFAD242E06BCC4DB97344859BA1282898145AFC - 38: 1BF4443856163CD7A183FC55F365E2AED194B67C5FDAF12F3A0D088F5C0CE187509E6F384100982B7390CEA04D95E64B3BF6FE5A2FEBD462F381277333C06561 - 39: 9281DB83E58419D13ADDF1162A853C8C151518314904874E221B90CE60FEDFB407114889D5880CA912835D6B189CB0D01233EE3637992EB56A482C3061AD1967 - 40: 2A435825FE4D75D8AE4F8B79FD77CF54449005964DEBC4068BE8B837887AA985209FD2345E8379581013078AAAB3C02F4D462B4426D8C242FF6EF206CD128C81 - 41: E9A130DB46ACEF338D57FC079735BA36FA6BCA5068199BD26E915914548942245D0C77F4A62EF84F94FF60AF2404EB184DACA4A5A710C77311A52EDAF3E3A81E - 42: F4940C62561D58CF7433590476685E7561D9FD6C412EACF4E016C71E4717A62F4F4EC571099ABA6C61959044D49C73CC89617817B90D39610AEA94711760BBF9 - 43: A6BE0CC944D188AB2C90C998B19B9984BAC2BD1BBD6ECDAC02CB92911E3155BB8318A2651C353E1F711A2F41E8A920FCDC6A424CED5499FDA3BF97DAC1F394C0 - 44: 3B45666CA25E284F85562605F7D4061BF33C8E7A22EA7EB5646A720FFAD6D4B6517BF6A843C73A483892F943500624EF9A986E2DD3979866E50681E875CE3F55 - 45: C888CC593668B67B1CCA7F372A1C456711DE06EF694316FE4F890D67D3D8CE1064E4E5665EF49CF506FE1913A6498F5786014633A63AB547346DFA411050BB21 - 46: 46C223EB818C5E2E0B08C13C11FBC9E050910C266DFB1EB265BEDCC530B53157B8D1A17F889D69A29AEBFD41770471612213F8D218595EBBAE61A26301A38109 - 47: 58844F9F72070295F5D2E75B72089777551FD5C2AB782B552605DE096F30FD21A5D5D51EAD24E41084D6C52389F0E6D70370AA51225642A80D355E47DEA7A909 - 48: 6D507E4980327BDD63EA1148EACB9CAE281833F6849B681258FF26836197309729833D153AE18FB9A4DE8590E1D4673ABB7A3ECDD2AB88AD6ED3D7948412D3A7 - 49: 1DEE62031BF73CC3D028E1D5C0BD0484DB066EA7E1137767E7AE5E4BACEB52F43A516D1B4AA5D032900A27E447113E5823C99089D492D1B80C6F1787A296EFD9 - 50: 4D3A53873D325C506A5755D5A0AB9A1C1311C0930EC9CA627B612337407358D6568FD5D16B13954382FDAF42CD6506CA74E33D8F6C59D77D5CE108633D276502 - 51: 8C97A0BB3E2E34D4970F619C9902836A4BF36A2929093E605397B6FA4644CC48507E1B6DAC36D26046600C2A8535E7957C25B5B601AF9C7401A5E749D7CF83FB - 52: 4634F95A268F0D0BCD6DEC3A5E4908942E8C46C89227721BDB39763A7096695D1C0D9528801D6AA325FB2DE721C797B082E86BCC414FC7030C35CB332220F56A - 53: 35959C0AFF4C14AAEF9688E283C7E86215EA7D360C123843C4E644212642A669B82834B492BE2182A8699B4CE6D87618E07A2ADD6E356E2E1C6EDD5F2EBC51DD - 54: 8121AAD5122F9A3640FC0C902AEBC0F2C7F12FC4491518874D634D8157ADE473F91346E936C72A7CA512965417E850FC5E7DEC98CD29F2AE28556E3401AC910D - 55: 2C1885E35DB27B5C81E75B3605F2E488C431419B65305238E90046F963E0339B57EA10383F61B7167978B3CF25F8E51A419D464D11D5114AF37E1342630F1C9A - 56: 02632A6BECCF2E11456ACF45D7A8B63CDD5E8BEE24E6251D3B50E8112BA65AFDE80A10EF405AD311F999F6756BD12EAA8444FEF4D4B5C3981FDF1178308A6A65 - 57: 7DC7297BA07D74EA280C53A5F30C98366DD07F426B505D30A5F8C57A89B4729D3A5CAC997554EA6A06B5502F407786D3BB2E1BECA98C16FE1A7D67CB3F08E7DC - 58: A774D76D68FE1B3490E952750BD1F80824848FDDE6690FD797919FE1F5A7064B31CCEDFECB45F93592FC2AA0BCDF463674020CF667D754D7B3F730AE04BB7F73 - 59: 7A1A9BD45F66FC19828658070B1354132A192A492BC65023C9C4F32EEB14C2E6E81634C860D8A90188AD195F067E7A64DF8C4782647FDDEE50AF1349415428FC - 60: 07C0D5BE89A951224BC9957EF39BD383D584C8BD3A9D59913B52B92E3A889DC69957BC6B22E2F0C62D9841DB1D4938DE96A9434BD227CF3F5D550645E6066513 - 61: 9B319B6F1CE1A0A3905ECBC7034CFAA45EC0BF7615DBEA2396A435685C69C03C4BBC4A347D7CB153D7368C893DE3656C9E05BEA29656E61008AEC91DD3D748E8 - 62: DEE7DB214040C7DD6905943C7B9FAB2230B0EDA4955C22AC11ED0E3AD737348683498A835873CFD5F1623ABCD7354612F86B52D1C676D87B73BC4BA58A33B353 - 63: 0624D89083E73B452C33F62D48BF4EAF360E91CD9576EA7513230E2B3569B7A98AF9027C96FC5A4C7E2E3A0746593D126339355F368346217D0B92CF62B1B702 - 64: 12EF9F4F6B7A1D9B10193AF01C0B28E4408A64A54FEBFC449BEF4FD5D492D22ECF135EE37EF82BBE7F8F02B18776904FC1EECA6B8D2BEF3AA0C2F9EC542E607A - 65: AE31C0D73FE69FD9BD35CBC43EA97B75BB46A3E9ED6FD2D753E2C4D5B861733897FC9DF7B06BA818C9045AF7F88D39549116980E874D736F256514889A9648A6 - 66: C30F0ACFD60B1703ECF123AE381B9E18AE50B7AF7FC239F07B40852693AB70C09613B9092CF93789A94C7BF1E4184F9EAC9761D609B9138ECAC78301C08E7638 - 67: 3DE94D2F0A782A9793A077CBF8B4E597D9266DFB1BCB022E107EA00D9E975823F74981D506546D18D8EC3DC617D58F86E55599B5EC057070A0C7703355E9491F - 68: 1838A42C24B0D92DA5DFEDE6396794D5CE31B4AAED261CA2F54F8DB980AB71EBB7ED1F49C3D13A598028632C8E9B4FE4660B981779FA67CD40B8152860A2BEAB - 69: A032E7ECD1E85AA177E495E5364365F4402A302B24B0A38AEF3585653180CEE6D4AC442E5A9B3A8D84E95FA267689B4CD698F3865AA5787FEF95B765FBB975F2 - 70: BCC3B2AA991198658D7B12F9047A8E1D5FEB4AABAA3D16D1B1AE6CA3495AE8894658B531689F68CE8DB6F8E6F86532D0623B39CE904BBF8B1CF63B68773DA0E5 - 71: BC90C3EFD52CE813B53F3D11EA819C83519461D849E4DF91B0A0252429593964611D8235F720F5AE56329C3BF5DED84F3DF47DF673E4BE9181E2744B81C8C07B - 72: 0A7EFF404D4B50805C91562E78B87106C58D32CB5A21BAA42DAC5D74A86AC32EEB0F974BD7FE6537A184FD87067E3A40BD3A123B5E20BB564CF7AD00AA70AF0F - 73: 516C165F28DB4123CED152A365A39787AA38E970DB9E288AAF3714CDC43C5CD11F962CD55B6CA9D7170CA0F4386BC0C3984EB523F6EAF20AF194490732D4ECAD - 74: 02D68726E79914803D2EF3CC38E15257EFA876F2F5F66F2673DE7DFD43B06CBB646B7258E2C6EB048823D7B4B68E5C473128CAADD356D0B66FA557F22A856589 - 75: 6322C5416A2A4D7AB31FB298ABE6D080427339A78D99F61B3D417FCB8F45EEB21A4032C3E48F760C5CAEAACBE5324445A99E56E26E4970F8CDFA4264C5EB074C - 76: CDE1C7BB34341FD7D275607A64CCC4EC66BF9B1335012E2F496EA325C0CFCCEE91EF7A953C643A6C76FA2DE5F6E227B99E248147C03DE567BB72803ECDF076AC - 77: 6F1523C339675F50EDFEDABBA7A0EE24F921A6AA093E9400C03C48512B33B51619ED5471490F83A09195624E457C9AAFD4756ABD80D80D9E4BE1F4717356DDFF - 78: 409EDA0D7ED32186054C732CF126D66B09C5D393C0FA060936AC93CE08049BA6D95E5865B7CEE777482C24F0FBA9B3FFA993457BA007FD98526A91842A9B1909 - 79: C4A0A183DD67D4907C663556E40E4F77E44DFFDF3849F1A39EFC2847399FAE6BA9D7E39E529136C7B2898408AB96FC4BF985B8E172040A22F8D94AD8386AE2AD - 80: 307509EAC26FB8CC68EA06DC7F8EC70AB15A1EA764D23DE26D471524F1535D3A0F74BA977DC0C3C821C7763E81ECDFCEF23808B87116FB03C15A9C0091B76967 - 81: 8A4197EA831F582FE31EC5C5C7491BE844132F0F6939742E8D0022C8A989ACA28F34770D2AC60751E680ADC951865A5486497E3E15104F58B0003B9730E45431 - 82: 99303E9ABE4962EBB2688B533985C3F40F552B1394F20FC87443B4B0329BAB4C83548AEDBD430CDDB296F7AFB4F1DF7952CC6F8266D4CFC9A5D35DAD4DBA4EB4 - 83: B253B044D70E45480D3B985F0C3BAAF3E39546C5D349AC5863E154C90B2632A2F7D7A5C884DB438AF0C96EE5E316BC82C1E198FD367CE79BF51A5EC0BB87609D - 84: FD7664FB39C69DE4507D1FA4568B148357CB8694B33C92960058F68B2EE04CE8BDA2ADAF4DA3CC12C3AAE2C0A33917ACD5E61DFFF11B898C4FE81264D4EE84A0 - 85: 66157A9B96104FC2F77BF8DA20821C01FAEA348919FF9CAA1821FD953F1D5728B737713FC838C65F9D623743CDA79EC4CE0F32D8C9EF4CA4CA1A1D7ED6C3C34A - 86: B4B1D500113852ABB0768423620723D3076E740773E03ECDD60E205742B0E441ACB03D88E15D0B008BEF3D3FF5C737C7EB5889223F1DCA7095FDBAC534A1BD4D - 87: C3EFFDF2C3D14C674DD619B3025B8539BE53445BFE6276D0C6A67E903BD73D76E9A7C68C6033FB76970783802585160D0643A7C49A15A114CBA578D2CA3CB1E2 - 88: AAA4842E9A21214360F774AA1FA92E7E4A100D9711F0CCAB8A2A25FD62F6CE5733D840B16B90E6ECAC19853BEC9C4FF6F7C762790907EA9E4857344AF54AE664 - 89: D3F27867BE6334A88980473459A4F7345D3723D7B60D0B29B0CC254280437E7CF4BB0E8CB4905FA773B33954CBADBF37D6C92EB252D8A54DF1B240AECE2D7028 - 90: 43EA5969F02CC21F4460D1C48B44E18777A48DB1E43C4FD2315830DCDB90AFE45540405B2141A4C7724173869595AB50A3369B953CE758F6C54DAF8579DB1092 - 91: 839E018A7B3C2EEF20E23966A4E5896A5A76720BA5B96A7BF58594F792BF79F8D847EF0B6604313D4C2E3AA16CD529F48D5043E2A17E9C665707B9100C29D71D - 92: 70F131D422CB59B0E8AB2F2153FE84D2A78CF757B50073BB2DCC42850A10F495357E9D8304CB870F946E97C9DF2D9314F333847120ECFA8E2D39FA96A2F6E1F4 - 93: 947CC741E6BDB17121F3F8AE0E5C29D4C0D1655A5CB5690FCB0F162D123031CB170EABDD2CBD7299F682162D1CC30B51B7B168597EFEA695FF50813D1C5EB2F9 - 94: 757D4C28D2A4D195CD4D0D6763BBDE5F47B8E4B618A3B6288EB928CF848F881894EB277B8134CF049CB231658FCE8AB2CFE5D01A8D4E9AE1E25995AE98CCB901 - 95: 7A905DABBAD8A3686853F36B89A1F1CDED0C1D182D18C18FBCF07B96887DA95876E910EF1C2534A5E002756C22798B0E56BA187C114BBC57E780C1C9C6400482 - 96: D5EB414C1E39592C02E464607335720C3E5C2D1D657B636CC14DA3CEA517149FEA6B7E3CB77245860746702C347A0A1565EF4162670D1CFE054EC426B1B1EE1F - 97: BBA74C30CDF61CDB3B8EC5A0EEFA4D6488DF5014DEAC77792FFFBDA5B611976276D5EFE3472076DDCE1EC982869F6B56E283B5C3F3F07465CAA4C2240DEEC3B1 - 98: FF08B16224CBD0C07489063EA843B864667CAF3460B5FAC806577A0DE2BE45D451410C21457FDFB084B84796C9D1AEF0E8221DF0DBDE77E62CC36761C5A64C37 - 99: 4FEAF081BEC94D5064F3E2D5ACE753827DFF8A61648798587FA379C44BEE4F60F9103CC62282EA2D5C54CCC40BA70B5C9D109796915BFDC04603746541C164D5 -100: 207D9ED6ABBDBD1480A647CF1ED5EE377714B6B15064D243BBD88C8EF5453F1B13541480031258099D76445D9F0BE03E16D1F6B50160F07B37381F57C267DCDB -101: 4DB8B7C7A483C206EE70A5A2BD8CFE8C4EC02336BBEDED4EE1131BE5DBA426E04B26F965E675DA8F590F9066BC09FB0BF4DDF842F98F4C3F1FAB76B4A5E4BF32 -102: 80079A4F4BC288147E3871AF1BF4F284EA40E67E0FD8154E1E246A62520192F20F7DA3A27E6E691724F5BE4AFAFF0E0CEAB8D509EDA8CE96103493099B44DB7E -103: 901D93B51E0FBB6E56FDBE7EEE09C79AF5EC2EAEDA634D196D1DCD42DB54628EFF7D6F61554253667DD0F1FFD3B58834B831138243F3B494CC337881D41BD56A -104: 3CCCF5A353C25AE6035632DF94DED5577B75350883B20A682E74C800965F508DB3885BA3DF13022A5410593380430825ADB3AD2AAF85063A49DCD555AB001333 -105: A18FB80876F663B3896131769D062C9CD210EB6623F818DCEB026D5F9723ECD4804D7DC3284D0D877C655AFC95E9B29BF38787D84D72C22C1B8651BB8E2598BD -106: 7AAC6A8BBE683187AFB0B84E8B4DC454EE296656C42F04F6132DC1965909E4F728A2267D320E9D1815365773B5A44273A2B51B70FC1447E40162FB8D82530031 -107: 345B6D3EFE8E80496E56DAEBF4FB3993CA8793EE93EB62BFE3CC008A0D22FF7CA1CBEDF8041AB4AC09FC217965BB73C20517498B7B8DA880CF0AFFF9025F761E -108: 59BA98D091D97A1F8B3D5C307F433B90D46DC8BC14A00959171FBCA8A31C15E38461FF9AE9A0DB36B9E1E0E491F42B53632BE731F10650E5A150E6BC414C0F53 -109: DA8E2676F88A764BDCC8297AFAE841993BF432054D24F6B62C79112AE79E1D6A0689F14759BEDB338E58428DDA56AA161C9C568F93479EC9C0554DD97CAF824C -110: 9119108F59A0C428103E86A35460B81102F3513AB143FC3BD4B9854C86CDCB19A06D1841C52C1C0C1DC775A1BC65E9C8C7E3C3D1F18F7056AD2D001F4E5683F2 -111: 5D5344389FF8B760019D4DD8C850051E6899E97B3E1A0496FDC23B6172B4D944E628E6F4689EA75CCD72230DC44AFF3CF5BD780D83F91EDE28185E49A17376D4 -112: C3F6E19EB5B02555B59B089C2DC57892B325EFB3334A0567769CD09228609813E7E62137693507084AE4479297023B52BD5C303D06F8705543E86575BD814C4F -113: 5380EC375AD10AFC684153BA5368968B8680252C4C20DA44948C83D6EA7BFD4C3C06F421D041B2ADEC9B9C59D00A8BBB63B55721A5E33FB3A58D503AC6E4C435 -114: 8E71FE96B7435EA16B4964C00035F280B1A3E8CC3CE5D3B5A4786DC4070C83E5264426D54232DDA57C141F14DFE7439A30315341461226F1A5359576FE43F2EA -115: E313EA73FA31952BB64995BE1E3D4F820A5FDDD775FC86CC817AC168BC5D79B4C594E1802A56963D1D3DB3190B50B8E049CB4DC89FD1F81B7F32B10931A8C96E -116: E89C70262573BEF710E6CB9CA20A600DCE52752F5A9B50C440CE94F9B498C8B8D029DD768E98F0CC0D5A05C84FAF8043A4659A3F37229791D5518651CD062EA8 -117: D0C6B3FC6B59118E9122574115299D47698A42D73897F0638E3566BB498AC2461A7635AB4C1670B64406732197110C7FBE2E383548801BBB0152ABB1153F495A -118: 295F030512CE6D3361657401DBD1BE01FCEE58DBD83B1419D22795FC5AC0551509398A55B2373BA606144CE433C3045741096222DE1ACEDFCE027A4BF5BAB60C -119: 57419208636AB909E3C86BCB79CC971398F41310B25B7E7E07F502EC4DC2C328BC050B0BDDCFE1D8101A4D34EA0B4EC794B82BD2379AF2350AEE6611D272DE55 -120: 4092620F2AA9B337D09DA7D437F75210B9E8DD7B86916BD7E2F4F53AB14B01ACFBBD574B22D0F75DEBD7C2E24D9EB230FC7801D03B58B656218AE72E9A3D6074 -121: B8310583B8699BBAED86F734263A24F294CEBA0A4607CE6D2FB1DA125E5C29BB6D82C0D46AD13F4659EB9596BFFF85050BF318A912CFD0C7B0727363CD3BF945 -122: 43ECD72003EA43024B62420CA77B5D867FA3308321F26F3A67409542E7C14F7CD3062D6D0901BEC5E3A6FD2A2226D9CC8D321999F3824347720A28E681DD570E -123: A94F03F37206896D82135E491823EB24660E0AB97167D5760023176BF41961DB4B61BD7D3125066502A5BC16B8822D3CCE174D401FD154BA69A39C55A1DC2828 -124: 0A3602BD0205F614CE1ADFA35CE854DE914A46BD6186B14FC43F19FB00E34D81ADFA50CA512DA062DD98626DC05EFDFC3939082563F48678CA6694F0EF3F0BBB -125: FE6CF04D96D04778A27918451067083026D8EC299EB3AF1EC358C4471CD031656304F1C699A50AD3603454D9C840FE94A1CDB2A4E1E0AB7FA63997646CE12592 -126: CD5AA685BD788389284F7A66A7ECBEA1E91869C1F91CB2530AADF1C459C26B8C8C0138B122CEB0FFD6D20C1DDC4D6D83075B490C2BA36BE7409F3584A7A8AA04 -127: 65486D5C1BE12DEC14B560590A989065F635EE6F00497D892922FDB2A0D0BCAFDDC2650430CF0E06948A52FABAFE6BBB77C2B263FEB7A51D06D6BC6C4751D9BD -128: A44655F4B4680AB484AE8B0E4ACB42715D52A7DB30F1873BB17DAC82578B95E5A9408DD7F9B71B8C623DCBDCC39B3BC09E0F9392E5B00719494E28263B4956EB -129: 228E98C35B738C92E3B3702CE22CD54B0E5E906C7E0D973763BEEEFA1CF3F965743302C6A1CE1F64D89ACC61FCB18C61316B9F939969FF02512697ABA801767C -130: BEEC3A4379AA56B3DEE94B85DF95695AF84C30031C7F9DA21D55387C1450461FBA0B53B39AFDE37333631607F6A28D50DC181AF5A77A2007EE9BD7F14F3B00C6 -131: 6FABF195097F95D3B699B7095F0237E4528955BBD649841BEA404CDBDD86C72BCCC537DF5442DC6B6583980380B3D30F4296322B8C76DCCA1AED12261A4A2527 -132: 8989AA87A728EC695D684E330F14854C64EA9698087F56EC574B1ADA2857D5275F9B7C6FC44E3A26BB132011F434C8A440D2BB44995CC2A86BFB6B6E0C8A6747 -133: 207882DF2DA14E1C9603D4E18CE948C5E5476605FBBF035F44629DC2D19E249CB24D6C0027D9BDBCA761C3A8B281BF7850A628FC2C10DDA6983C53A6CFB0A7E4 -134: 287E99C768F3B717AD10843AC1F73804AF90A008ECFC877E44CFAC6D02D59A5A777A58209D88928DDBE4383666F0878914C79F08EC55C05D9F30B0CDDAE0B4F1 -135: F660DF06604C41189E61A26F1E7F8FD0DA6A41F59753100435CA46001673BF280400E6B7A7A3ED1CA0DC1E65D0365787BAFFC170C4836719DF1713B028C10D24 -136: 16BBBC5713F35D9DCC789F0FBE572C12DEE482B1A05FE49074F75A2C650A6394682F7DF2B4DC8EE4CA7E6FC62B42A1ED906C50CF0E6904DE68AFD678785FBF7B -137: D86ABA8BE95A657F33402E2ED70BE9FD707DCA2D9562A386FD0A783524D912B010883510C80708E8427BEE01D013AD935534316B331210E303376A9E16831E08 -138: 7813B00974EACFDBB8D768E2A9C178B0F5C4EA9233A9C442E30EFEE86CFBB0E2F6C36129492909457920FE9E6D6D540CC4B7FC2158167A56687E52C42B5DB35B -139: F075A524D625DDC0181569D34B4FF4FE290CBCF88134FF0325E11A843AEDD59DBA24E27A89615096610F153D9506E03B1BC680EBE00294E6051051D0B5C32B3C -140: 26FA214DCDF29754047B2FFFB587B64E8987FBE76DC600065F47A411868F9AE47585111460E39810D5E841AC47274EAFB305874411E086C1FF43EDD7B2A6A385 -141: 0022A06E328D2A2082DE5FC5EC69E52BE33242E2A47B6E6C405A82118CBA955F6B0E71305DF8D06F98F209529D0143638161663407E28794FCF9A78ECD8B359B -142: D29F32657442D25AE034A4DB00BB957A74725618E2609EC0DE9B6E6D49BE61AA2EDB5699E482C4ABEF7F173453C6AF96AE86B30AF271B2032926028234CEE8AD -143: 37D8BCF9AC9B658F38D6A64C47AC07EF5FA5B033B1CCD40CA0782E9676C4AFD58EB757B758333E5BC516D4706EAAAD8CE915E92B4B317541BECF5E1BB6EC8577 -144: 04ACBA5562C9038131AFE06CEF8CBD0D4DAC374ED4DF9DA6A47E5532A527CF8CA4A4EA4062E9F5CACA63594E0030253DDC2347954DC8517972C433D1A16EDE29 -145: 6117AF6A6F1F0C4D1790EADAA532DD4453337CA61B5E2D996188B3B4C1F6C9376C6066846360B1A6D3CDDDEFDE592AE251A81403EF54882FFDA0F0C380E7F55D -146: A5AE946658C6898922EE5C92268AC994CD2417E2F631A0396C8EF6CC67E4F2812F6B794D969C306994E01C759F1AA0EFF81F196C4C2488A0A3A638D88E2EFCD4 -147: 0422AF0A73064F54D423DFC8D2C93849B029B25C296101C894DEC4B702660C70D9ED585EBC81DF8CF64A689BB586E75943D57984FCCBB1D9761E64B22D22A912 -148: FA4ABD456CCEB8130E9D6B451DDAB71D6D683F22D97CEE91848B8A0D9A6C17BA721FD944B179ADD6A77939D624F2354821CC1BAE4879D2367A58C1F41A8EC4D7 -149: F1BDEDE21D8A9FEFB115AB33911D733C53320843D16E0090315EB31E1CDAFCFC896DE46EE638171B59E0552D0795E64863FA74C02CBA70FC76F0DA6EB836621A -150: D08D5BE3B9D15B365FA7031B8AA29041521619FD6993E9E2F828BAD1A29048A0251837216EFF5004C4C11D332098F0ACCC15E0E6F3B52931D3EC0B79D2BDC48D -151: 77161D3C18445679EF0F208E307275D979FCBA8B55FDCB06B60CF99A9BEA2E1D9A397C612F9CF24D90AAA1BBE821DB5FAB2E039611764547D3CEBE3B4D2571A1 -152: C6017E7F5EA1239BE480A5A730AF6E464045CEC024DB8A2D0B5B5D569F4C0F043F22FE56BF03CF3D0EB743A14236B4DFA4B3232FC2B841947ED166A526789924 -153: EDB10C3A3695FE4E4B791F953739FB16E4444F202AAD171B800D96CF85AFC69E728EF6D8A391C769F1ABDB8546AD8050D13D15A0883262DC947D8E842F1372D5 -154: 9E1BE52AACFE0D2D2B4C4C506ED23AD54C0525D07627F0C222C6AE49FA2D4476C4611D94753EA6C134F4ECDEC3C6F614D5FCA283D43BA65AB89388C1D20DBB73 -155: C0572A42CBF5636C35B1214F22D60268A1692C3DA29FC85FC48C454FE1685DFBAAACD693CEB7FF0F2DB4DCE66DA7FE14A404C30BEFAA03CF3638E1344DCA4220 -156: 1023B73A74252B510E1ABD3FBC1D317BC4F17109635FC8866A378EF02FC7999D2088E7DD1F994F41AD3D4D01B86FBFED6663AE5343BE28459BE9884A30199E38 -157: 79308924CFB5C1BB96B5B75FF0120BFE5AE9402FF4C983674885403152C47E0835E2A152D0F3C612A651A87B3F0AFBD5875695CF2CFAAA72DAA9B95432B37902 -158: B8F6EF849EE2F312FAF44876DDF2EEF4A37FAB8A7495E27C43EC3FB0B008E14D5DAFBBABF6CEFD09BAC89EE3980E8B761DBE35947D95F985B5E0A0B4FC42C872 -159: 91B5CDB070E4C6527305E0F73DF0177EC0DB352D0F5F39F7D46DD7B5BC59B64D7C830163FF344ECDB1F46E22B27A7C7AB3CEF9204D90B8751F4A347DF32EB262 -160: A95B6038C9F4D8AD16CF9726352030A0EFB957BA58162F8F21A63DD9BD3608B8BDA02F4F23EB05D16D51353AA84242C9A20296C2B72D3982CEFFCDF5E82F2EAA -161: 65DE94F2089A3F9D3CF6DD8388BB10640D8BD05B807D5BA08C9DF8B5D552448CAFD991867AB025D1E27F2E562624596D12D049B5BF2E5F897C465E42F04978F8 -162: 9BA6F31C3CCDA57A5470E2591E6E43C5D3C6E6E5D0822CADE1CBBB91D3A45E1F61576C427B80D77A57188ECDA04EBDD78162F574AAB92EB65E65C09E48FB5B5F -163: F123D3068AB2FFADABF06D98AF6B756B6ECF03AC85A98684E0964092BBFA53E56A2811E1A7802C17F838870D91EC0FBACE6AE5ED882D2B532AE5922A6849C9FE -164: C25AE90AE52FE770F4EAAE7DFCB798B7CC77FD9EDE79C12831239A966C012B1FA8DE50D4814AD415E5B94DEEDFAAC8DD86F28A40DBAB7535B941484534FCBF55 -165: D642150F3F76A9357F2DB6FE19055D522777FFFE137FE2277E5C7BD974E21FED05B76BA1DB0EC9CA0D438DAAA029E9F1DE1BFFAF17FC96B12099E94F31ECF304 -166: C90A604694CD5B694F271212E0356EA291961492AB836DF257646239131485C4606565BA17F73F1C36E23B35A31A35B34A6B9EE32E2403D061011967586BC771 -167: 05603DE1E9BA4B580437D9CDFA3E55691B46AD17EB7570A8D0C6B93A15FD3F18BBDA9E9157CE48D2531D20CB4BF429C41C201F4ADDAA5A5C9FEA23189C5529D7 -168: 772696481C283004B659C32927EBDCE11264DA372FA5C17CA59053310083D9DFA55A8F6E40DAD12FBFA27B9B6A0A0495CA86C61FEBBC5F0EC2009088717941B2 -169: C0AD90C7F6D748BC371C1EA022B76C0FAA83D81C3A2B29E951A00D4E92CD9D0AFD3B7A5F8DEB7541A7876774CC29F6EC8FA5C954A3069778FF1CA384CAE2F2E2 -170: 350277196BA7D1A3D60492A03323276CA437107BAE847A3A48032FA9E8399249C34D13B5A0356DDBBB91A6901B39F222F7C4389291E7B02C7FE49DF24B7CA44C -171: A600B600956764A530E609CDF5C9F863049B642C8467BFF33CD6DBE92F3413323FB0DA55CAAF9CA5F7FF8D437C985B292C3B17AED4FBB1312559C953F6E26F70 -172: 27E5B647D5DBF77FE8E56B7ADC2FD4A8CC724571012C5A1BE8F29DDF09CC37747852B18BEE585F2B2D640E9C2DDBBE33F00130E5C5C5C150F14306F41DF9AD60 -173: 438D1976A4217A18E0741EDF05B2B58FC67D2CCAF7DFDDED9310A5697960EC5BB8CBCCB649075454AD4AC11088E56118EF5E6ECAB4657A8152E886C901F95FED -174: BD10B1E5F03A2582BB83BD560B2F9245DC9CDBF709A03A4619E02ECBFA2D0EAC5AC9C1C08B7EC72F098A21AAA7BA9385866C4943561AD94E23EBDCF802D3CC87 -175: FAEA995E3E4C662F779D526062FCB3281B7EFC1F5564189D26196EB327EE99AE747479348616EAC982ADA9608DD7063B6F38327560B466694A4E6BF65A863193 -176: 40B841A26B90843175D4013784C2F1D3D3F9D1BFF4626431D2E7A54D2F07BBFE8E6558AE0AFD6502D75D2B0F24FB7F61D778DCAA9CB6A5BADB358564BBC3CCAB -177: A2143CAD931E75B65FFADC158E0D7C2D805472BF82ACF3E091C0E5322B50E156F3CEE474A8DDBD693135A08204AC4DBD3999EAD8A97B3EF2EBCE35CA5C158378 -178: AFBA7D6AA8DF58681666E911307A6870698D6F8C5B6A5D186CEF35867A65584AA0501E1478C3CD66D0FAE8137A994DF62425E2981F1C733E853F157CF304E46D -179: 9231A406995AE03B62C1CEF89853A3EC315725DCB40D927EC1413399F425402FD5628555A6F0351AF9E0B3C47F7F8450792001C876D1086767A89D180D1721BC -180: C56AD16C7BFEFDCA88CAC3BA609A43126953B2C450EBCA87CBF92397F7CAE12A20870FB3C81386C7E2A1F967559E5EB7A3E494704870308A5F5CE756BAB9CC6D -181: 10F5BBC7588661BA9D4B1350830863F3CF63A596026DBE72542DE7EB8C56CC79140E0DD99C3D3DC7093589BAC74F5E6572C58535ABF64C81FC6CD8859AED7CC0 -182: E487FCB67519A06F109D0C27235599B5BA09ED02B2518C923DEBF5F9CDFA5C9EB59A3D059AD5C4A7B42F36473217B370A3D71951CF38B36178ABF00CD39D2FC6 -183: 5DA067697E72B521373DE0BF8A6AEF324BC21347812986237988A092F75BB9813AEF6C7992E0CC325CF30EAF0D586231FC8FC2350FBC7644BB9A7FAC9DC3FACD -184: 0C1E455BC16F7A32211E463969646329B0EAA3B08E1136A63A7D0A91F8238FA0BF7D2AAA7DC19356DF8FB3B0EC2AE7F199A62856AE58D3913B5B53E66D2533E7 -185: 586086132A2BEAD42C017BF2AA833DF668B2A55338AC19F2A3BB0634A9EA95C64B7E751D74E07E7BCCF2BC959F1AC1947CD67B684A2090A456469D251864749D -186: 92F031794AB95444A7129125B18FE70DEC5A76215473E9FC155679E2B7CC7A31E3202F69478CF07AB8D206AC1B5EA905D12F2987175EBCB3DC7761EC3E7F32E2 -187: E03B50D3250913B4F1AD62662A9B83D557B2314A9373EA2F28F58940B2C91D96745F6A4A371B9929F023AE92857FFE814A2057F44E58724B57056FD33224842D -188: 55FF8EA6E624AE5E8A3AF14E389915AB792541D32D5797369E5A76699FC4C7CA188F44882579A9A436C4C0784A5A3A0FA99E5FD988A79EEB423D96CE194D411B -189: C1FCD5551181C3FCFB3CB866F9EC64340175047EDD2766440A0CC34E3EC6B90524DF1890E216A2A72849D39A94ECA1CB3B38A0DFC847798535A07BA7786B9B9A -190: 5A54D9F2A83C3D2883D3CC3BC7259387A6359F787F6CDDCC2D2209292FDCFBF2D97423B47A070A48616ABFBF12E2DA489C84BE0B82ADED5F55AFD19CB6601273 -191: 332C9B6DD8D96738302633674A4742BAE44C7BF814AB4901D24A2BFD9532668360FFEE81C3C419BF90215FD1C600B6FCA87B44C4ACA0591965C2F2E636945A83 -192: 7F58B35E7FC62D1B6DE9ED0073D65E80DD663F8E84C2456D36FE4F0F894C5C07464EDFBB0B9E9900333AE97864ECA28BA289E577928D12197F6C9E753F03A714 -193: 8D2DCC233B5CF142C3C1B9D18E0ED6D0FEBBB3AE85727C36D4E646C901394A60931D412FD0D501F7513AF14DA68B2EF89692E2265011A085C9D71BE48CF0B800 -194: A8599ACFD7915F199139764521DBC6E1298C4E1AE835A96C7A3DD3651FB47B469D24DA4FDF0089089612D14E0B4D5D874A26D560CE293F4F4C0F197E0F49DC18 -195: 95FB01F0837E2EAD37BED14FC8891962B462D2EE28792C32E11AF99EB423B37EB087EEA60D0121612BF0265ACA0B7D38AFCDD1B2AA1C0B32E1E6EBE85849C131 -196: 9957A95CC23B0B60A9C4D7BF3D18E435538A64E86F9550FE4003B987B103B4D81947D2FC312B228BE4D5400E4F7F4253F6D2729B64675B9F42F08B5ECE486690 -197: F4E171384ED49755AA2281D45C1D4969E9C16AD9667E12365AF248C32C4F5F81161C428EC566DE21F1765D46CF1527C42479DDB3BAC74478FCCF8ECFF0CB8F89 -198: 3148E6C8106E1B4D0AC1A60071BBC61D3E219AD2C385B4C584B00EEC4715DC6F470E0C385EACAA5DE172DEB86D03FE8521335417F993244162DF5477AB3673C6 -199: 834B39B087C0AD092F5D17034CF8C3907BDAE858E48637F43BD302CD64B764012408B86424795B4B60A1EB8B8AA41E1F6E280AE4CB550BC6B5E2B8FC969B420D -200: 7F6BC2F4FBD6508ABB9BC1BD358A660A174393C1C07C62FE76F50EA82A08902D38EFBB3975A9B4F29EC500F8AF40A2CB0A224235D6C56B9EA48A0568FEADA32B -201: E3A368B056D9D409D447C85A6F3050283DB26C916D8BC2BAD5BEC5B60FB91B93B9186CB165ECB0A63F49F8FB8E227C82250EE4D969C85780CC28FE1D255E2832 -202: 0161BE50DDF3E016FA68FBB642894E9F7B4782045022A2203FED43F3262DA985E4DCE2A4422777EDF22AD873209C8DAC0532D264E9874D50E33B54F9BA8CEF6C -203: FD9920E438B41AB3D1FD62CF89652FFBEA82E291038C0A16A18190E9AB27283894753CD42BCDDC60B554FA19881463DB049BF924631D85F7065E2ED40387178C -204: 3A97B803CFCDAC445DD9A8AF654B9A98B664E84FCEE56D9B097B6448625894BBCC7007061BE4D2DF8B874D60F977A0B9A36B782DFD4740109E858DDB13BB761D -205: 520AA1AA599358C3524CC24F86FCE8142E19C4FC4E6BA3C00BE80AF4AC9D0F84743FA30D9DB9410A5DDBB6C4A66D30335DD5CFC8FF09C128773F9412EC9A7D02 -206: DF64EB972A7E1C0C74414D0D71C327A6275977E2D5E0878A657B7D64FC82FDE26AC5D0FBABA412ECA47ED35F03218B009C816B85B4547978102F7CD2987088E6 -207: 46A3AB0D690B6F15F905C3E58D0C317B5437F115AB7EB81E88BECD1ED5715122B7A32250898528490E66B0D9B411DB00979FD2DEB44A06AB32E4DC91A1DC454A -208: CE9DEC64B3568EAFBEFD8CFC223289A5F6D783A54BAC6D6CBC52E276D3FA15437E0BDE4D872BF1C1E2378C97CBFD6B9523B46E8A66353C25AABF43336DA834D8 -209: 525FA87377436BA644C9E6ED794AB64C2B617869F87E1522D046693003AC67ABA395951273B0361AE6FB0BCE53B7A074F21430627D69C47DEA17E35980D053A3 -210: C312700BB7F49C6618D757B23BD0B0EC07AA21E7BCF2093E5CEC062CF4416F8C54C76DE9F50D4E436290669CD33223A74357AEAB6D9CE05233419556E5EC4E7D -211: 92DE52D6EC34E35E66FCFFA0EFAF0F683C7907CDCE69CF001266FA15E3B62D9037175F055E460F4A1A788F0D088531D914392CD1BE5FF11D8261E2C4C9865723 -212: 314EAFF5A5AB71A6825F8659B7020C24E891281E376D0F0FB7A5DFAA8C97E1D2AEB4293602B074B568F4F93EFD507C035EADF7E88479A02FD449B397D1B15718 -213: 0C3E9AD8E481E64CB0B55F30B817340BCC99A480BFEB6F870A94DDBE8971A0299A3915C3B68E05AA13907EF57D1F307E9FB1B8A8717C824B308F98828DD261DA -214: BF9EDD790DE164C4006B25A65835C69C9F92B7106D451FA251798DCA4362796E4C7AA2C1D8451A04D5BE2118E81F778663AE6F132D1178BC22A825FFA929F15A -215: C137755FD583558D753EA58F7036C6B7AC80A79935288B2E4317777FA129487B38A0A26D95E63B5372BDCB97775902A0238B75FC28BD19959CC7A43C87FFB438 -216: E57F8DC55B423E037948BE4F84D48D3F5822572638960FA751EAC23AA33783059341C6B52FC065E3C1889809432CA0BE2FC071BC817DCEBBD318B116AC057A24 -217: 95172BDACD164CCC6B584291EAA1E553269CD88DB3A5C588D149B67662AB709169EA6FB9C4432498223DF844A0FF94C9E21CDDE47247442498FCEDE16B5DBEEE -218: 225AAEE28945824A84E7D9DC34D96B4B364B5591E0027727D16475BC95D864E154B8144D6F24D646F45A0547FAB18D556B4F452E71FF68D1783CABE48EE5D454 -219: 4F60A23917E9C6D893EF478477CF915C96DB18FFD1026832F35AFC4BFDF88519A964907CA540BCA7C63B22D364F43FF2F2412ECDF8C902B1722A0EEF317986B4 -220: E06B2F54AA30F3DF6EAD09846B3306EC363D6C64F208B4B3E58FF9EFA8C20E712AF5794BDE5246173773555B0AD521D9BA2B11B5107C069D26ECF3E70FE0A5D8 -221: F6B508AEFC60906F372B0431DFB031921E3E375073173EACC520E5713CD321FE07160B3EACDD08BF0730CEEC700EEF0F0FCFAE2A75994015E4C88B9D68C34867 -222: 8FE24769308A276C5C4CC58FA0D685EC094D500E40D6A5EBE5F937A0957F78A08E252DD5D45419EFDBA4E8CCFDA17D2BC6A9F26001E28599AB38A93BD7872D22 -223: C4E02FE649BEBFE96E502375F750BA7A1CDB6E006CBD2656A79BD170E4AF4E36B7B0AD80D143AB19B779E9A244774007FCB6AA8C06A24AF16C9D570F9FF918A0 -224: 45F51AF830CA71C313056B03B393EF641AF65CA504C0DA4F6E427FC1786CF78E9ECC782E21CD3B4B3BD28D4E0A753A66D7A9264467030BA9980B7DD540B799F2 -225: AE255B5B24BC9B489F1023D39321B0BF9D84C1F441EDA7CB77CA0D53FDDD80D6F80D6120AF297FDD9175E6B338774815F7CF997BF994F1E87D4A79245080232C -226: 3ECF82334C27C67B668B97AC47520F93C481F4499A308862FD0D8191463C020E4E17BC7A67262D60C35468B03287A38511C54CBC9AF6B502A6EA7D29E3068A0B -227: DE7FF24EE533C3F936C919A909DDB9748F3ABE91FBE97F1968EBB703CBC7A016F606DDDCCEABAB8FDC0534016F5293452D49F21E1873EF5B8D0A639AC953DEA8 -228: E6F6DBB1DCA85478722B125454B7A93D61E3E5FF1ABA4093FBD051950B2F51E6F7A914F50504441350A636480AE8D78469C9B4F3F03DD205B7EB6327A35A1A9B -229: 0816F780830F24BDC1BDCE3E1437F26B92C945D7A5B5155E056901931D750C98FFE263075B35AAEB2EA570CCBC457C706853BCF8D5C8955AE6860CDCBF3D6604 -230: 82DABF1BE59AD176355DFF33E8BA2943A4D68FA4E8A9DCD9FD49AC11E9A10134F8D253729CF3D8D744A0C8780313B45D937BBBD8C5D71DD8BB3906EE1C2BFC62 -231: CFCC30863449DB6F79F2B72F14862AD9642CE246925DA581ED102BDE19ACE44BB037BCE6B64806C75028B3F6C0703AA8483B11B413BA24EE58837A0E5911AD8D -232: BB7D666E3CA3B2DE9BBAF96BB8AB462C3EF948284086FAE23C3EED6EFD1B8A94DB002221BB869642B6394199A9219AA993D193E7FFEDC2AEA46B70264F52BD33 -233: 5E8F1A1E011B0ECD7C3828F63EBF166B883BBFB4CBA4251CE5E8A50BFD83128A412E1DF68319BC57B6836ACDC0E87E6C9704E393650D2496C42CF01301E72528 -234: 014D86AE49429F6983350EC1D460DDE2ADDDD2A8A8CA9144205C7264A0C899A05DAA33A2960700CB85E13AADA0A2D04E6A04B7AA9A7BB8EC2E44728579781A16 -235: DB2C4EC897D0A8E5700FAC5BB4681DCB608E14DAB0DE8DCD62A390BE8C48D87B83F23CC2B2FC2F60763CD8951733623FA8D9C9074FD6B535E324CF489E993FC3 -236: F8A6627C3DE6B36D81F955FAC80648A83F05BEB9D00471BAE703D626D432D86064FEC8A926701202F4A86C33A6ECC7C5F283A956E5B7DABA71FB5E9DAB22FA00 -237: 5E93BB2C80B0612F6C5C5416272142CB0BFCD27766D8A9DFBB78CDD9131A752BA4BD1193EED1EDFF1344DB272B0CADAD051C2D641F0569B05BD9FBC22C48B06B -238: 3B53B57A749E41D62E5CE9FAACDD5F69A21F279D413C1EAAEF2A083B85BDCDE563D0442695DF09D40EE5CABE8B7C830FD01A2BEFFFAD4A7BF76B94E6B910B6BD -239: 1D8749F262A4B1FC9EEEB4F7F495BD8A7DAD04B96FD090C8841526AA8CEB2B7FDAAD4F179A9D3BBADDADAC7EFB54175AFCCA04B1FB4EA3DD740FBE0099ECA53E -240: 14D325D202F3EADCC84DBBAC419E5080E13A58FEAC139F664558EF9372145F18C2171605516DFE95446A2534F329C1665846909E3B94DB88BBD19AC364BB520D -241: B86D647CD938D94AC573F15D5B08FEB37FF87BF12E5BE2DDD2B817D1FAD8D4128D075FBE0FB6A51E308F414ABBD793BB6BBFB8242DDF8EBA7EA029CCEAD7FBF3 -242: 9B7016D41D186E2402F63A6B2FD42F60771FE635DB5F6158A2256A757C8F99780B73D8216DBDED6D1F3957505C7786A5885BE37C601AA8E5E9BA36885FE88B90 -243: 5A2CBBC693244B2BB4762765BFBDA28CBE960AA3B53FC1878CF06E490E452FB1674EF1E12E2C3C97B5103A7073C48D0AA3895085E6A0D74E47CA89BFB03EC9AA -244: 87C2A89F195633DF49AC8834D9B0013A3F83120C68F77A21D5AA37916762A6736D4CC4038B9C9FD3E99189236A684D2E574248499184BAF0A016607BCE7D01BF -245: A45B32D86A108F8DFACE9FDA5CE5EDCAC8A64AE5CB21D9F5E5648DD45385A8429E733D160B67BB3625D5B115AACDF2A56BA5584B12A2896A47C48D8181309C0B -246: 38425A1BACAEDEBB152D8F8D6C85DF75FFA0CCBCFCCABD8C1FE0985E25FD87C73DB913635B412BCBD4C5765A4C1E6F128F3471F31A382A62C14B8CE7B666004C -247: 02EA28A9BC3BE646B63272D9012FACC7C4A8CD4C97EDC3D9AF7BC06729860E3B97B1C9AC343C440C53CB0F2DA2B0413F058F7D6B77EA967C0113F6D2D91C4D34 -248: 5DDA7766393EBED0EBD886A3E0CEDC649C6462BF0D3FC3D80F4FC5F0E2DA8E501368A74008D3AF8A18764B3A610BFA73F8911F633E7DA9D6E389C11E8FCB273C -249: 4AE1B047CEE7896CED4280CC1C8A158C44A8261D17AF3025B27E4264ED412926E9639907851CB7380CDA60478049A153E2E8DE7EB8248944574B4C8CF5863BD0 -250: 3314E24E918A04DECD180AF7EEE35CBA18461CB618C183892B63284CEB569432F047CA4397EC3B31C435ED35A61276D0981A74A49FD7DBD7BB5D70016282EB21 -251: 848F85FBFBA1BF084CB7854B93600EFE343913ECE967B57D3FC46E02787F108A5D7966B0F16B3CF698523C3F6B38586E37AB92DF15987C5FAEFA759BD9B64288 -252: 94730C832C9B4B88BA9565C58DC451D1C93861342310ADCBCA66CF4C0AF2BB7D5A28EC6DD51399728190D6BF10EDA505D0A8EF7A3DA726106DAEB9377773094F -253: EFE6917B94F6C55127A1974D39148EF6F9B331F081659999E0EEFC15EBC198EC9568C328393216A7E5F30342A20DB76504D1A90FF0121840A7FD8C96C20E306C -254: 483F3DA2F6BF5794BC5A3BF856004E35D311EF70F392EE59BA5857A2FA1A777281CA22119668CB2F49F0253B6F661E5F099B15EE6704DD4BB44B9535B9D4612B -255: 2B72B3BAAA241F977917BDF8BB019DEBE7444559A1CD329274377154B00E0BEB78CCD9B13F8733388EA7B23245BF3233414754CF0AFB1932E0879DF415133A4A -256: C21D6454682743DAA662B443FF48FD57A493950E7D2F8CAD749E5FB398DAC7AB7D0D9EFC3E6ADC3B66DC45D59A95551AA0A928C676D0FF2E09FAB8C77954FD1E - -HMAC-chc_hash - 0: 0607F24D43AA98A86FCC45B53DA04F9D - 1: BE4FB5E0BC4BD8132DB14BCBD7E4CD10 - 2: A3246C609FE39D7C9F7CFCF16185FB48 - 3: 3C7EA951205937240F0756BC0F2F4D1B - 4: 7F69A5DD411DFE6BB99D1B8391B31272 - 5: DCB4D4D7F3B9AF6F51F30DCF733068CC - 6: 1363B27E6B28BCD8AE3DCD0F55B387D7 - 7: BB525342845B1253CFE98F00237A85F3 - 8: 89FB247A36A9926FDA10F2013119151B - 9: 54EB023EF9CE37EDC986373E23A9ED16 - 10: 2358D8884471CB1D9E233107C7A7A4A0 - 11: 94BAB092B00574C5FBEB1D7E54B684C4 - 12: DF1819707621B8A66D9709397E92DC2F - 13: 3044DFFC7947787FDB12F62141B9E4FB - 14: 9EA9943FC2635AD852D1C5699234915D - 15: 1CC75C985BE6EDD3AD5907ED72ECE05E - 16: 1A826C4817FF59E686A59B0B96C9A619 - 17: 44DB2A64264B125DE535A182CB7B2B2C - 18: 4741D46F73F2A860F95751E7E14CC244 - 19: 13FDD4463084FEEB24F713DD9858E7F4 - 20: D3308382E65E588D576D970A792BAC61 - 21: 38E04BD5885FEA9E140F065F37DD09FC - 22: 5C309499657F24C1812FD8B926A419E2 - 23: D1FDB9E8AC245737DA836D68FA507736 - 24: F6924085988770FCC3BC9EEA8F72604E - 25: C72B261A79411F74D707C6B6F45823BD - 26: 2ED2333EBAC77F291FC6E844F2A7E42D - 27: CE0D3EF674917CEA5171F1A52EA62AAE - 28: 55EDEAC9F935ABEAF2956C8E83F3E447 - 29: 820B799CB66DC9763FFD9AB634D971EC - 30: E14B18AB25025BF5DF2C1A73C235AD8B - 31: DE9F394575B9F525A734F302F0DB0A42 - 32: 625ED3B09144ADFF57B6659BB2044FBE - diff --git a/src/libtomcrypt/notes/lrw_tv.txt b/src/libtomcrypt/notes/lrw_tv.txt deleted file mode 100644 index 24532502a1..0000000000 --- a/src/libtomcrypt/notes/lrw_tv.txt +++ /dev/null @@ -1,126 +0,0 @@ -16:931b40b97cd1d1338d4a4abdf96d1f45 -16:000102030405060708090a0b0c0d0e0f -32:85e82fe5e8b426cf04bd96d9aed318fb5dae89a1dfb854a09f556b61c5ac918b -32:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f -48:dd7aad6c6d10176e25eb97e165ba612a2b6275d97667102f20af20ec2630c7ccb4f5772a3e009948f1ea91f3bbaf7e04 -48:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f -64:338509ed021eecd249cb15cdd440a84ff9d6704b99e8e52e9d057f152b742a5e3b9c314574026c76fc887fb404a12d669eea9460c1fa08e1867c2c0274408b9e -64:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f -80:8a9cbff36874de7da3e20e9a26691eef944ff78a72341515ae20c2199688ff92f039a19dc6d517e017ef36647834debee90bf80ba20a7caf24964bcb0bb3a621f8203ce5428461d3ee72ead7aeb201a9 -80:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f -96:06eb66a88b9667296b8644cda3464a27e3e2d8b6b3d0a9ffbebfd48f3967952ce161d8867900b0a7a44638a6e41b9a9dc53bf183a85a4ee33bb6f6c2d64b8cb54bfbb8625ff5cd3965aa08b460737b575da0b8f4123751cf8f0ae801c5856712 -96:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f -112:7af5a2b1381a8bc5aa2bdd4370b88d680c34ba9332d1d9f6e203c4d9fdbf5ece39fe5afb5871490a180c4b102665823dabe1079656f24969bf84267d3264f92cbbc610f26203536d387333938d1a52f4076df1aa0a114f3b0182da12c3a5d87bdc8eff54f80b0d56f7044ba372ee6366 -112:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f -128:814fe82674b98d54671869e3fd705f76e353761bf61cfc635fbb23037d8a0e0dfc13c6c0e34f8c79d4444ac314d4918773265b3fb5866a997e270d5ea8891f0217ec6749df281d790dfbbec8adc504404cc0a6f11e91d0ee6c19abdc67b0c22ea4d9fa218320a694dca53cf522c761e426e0cd57e49b73a5d765cb4bc571e888 -128:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f -144:9fab9584b0dd87df42f07513edad3b5e3a35b8871323eed63a48ded1efe4308a9883579f3a7ab830277bda59b1f1c2614a2cabe11cdd87689c0bae80ebad02b76d9300703d0268e0eb052d9956c5648912843b16be988134cfaf65fa87013ab960b190afea879897f1fdd00b360b6bfc6cc3531285682894b707af5914d2d1a136407f869ae6672e096ad7e95f380d53 -144:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f -160:95aa16e637f1449d9012237f5fd95a57c5a9e203ca0a9393975e5991cc568f7ad2af3266ab605915af277f4395aa312586fb28a18f22d1644963233e1121472980229a3941c2f24758a51c48aa22b61fa4310ed2e6175a71bd4058cdb070f2b8289a46a39636dbe259eeff3c87f96fc8d46961aac54d7a8491b5d713e6cc0d6551b9e90911947d9fd15051badf67420188c450f9916c2edae245f1f6a67e4f5c -160:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f -176:5cb782dd9e2391ab54378121d0766afe6d35ecef7a2cbd85ab04ea82b06b56ddabd311917093ff16bc1857480f84049d89ec6694414617b1cf3a11778c1ccbf22b81be5f07ed6f978df5089e54561fec53de95205ffa7d573092688fce92cae228f342f77c50df87404d502a9b274bbf3cfcaf4e94a1e8401630e18b79d048a5f3901abe82493d911d385890405bcaf4d5981def670955e95c546da8939aa68aefda56b37abd3bdcd466605f9bcc5931 -176:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf -192:e9a7781c750910f265e72edf0659d76a0db2dab863f43ca313b9e67e8f9f97a1ad8ced641c6d8d889ed2d38caa7887ec2eb9242093b39d4633702731b96e11da52b1a9a584d2367e6a0e759baf902eb908b4432ffecd367ff1fde454d4af844e9a10cb260ae222446c179dcc82b5f767b941f75196e8c4b210315d01b006fa6b5f1faf931549044b17b33f567b729ddea115c7b11c90982e1480101e98aab23da6533b40777971b4afc3815d063ef175419dd72bddcdc6bb187b3512c3bff56e -192:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf -208:8fd33ac16f8d9bd2ab24d1d26b267f67222b9309d697502bd001bb48b8c3206bd5c98cc1cff788633cda4edb5aaed2055435c2c092a7c655455d1d01a6d7a449df870dd559e9bae1e0fb0d6e5a98679402c288b87cbda569c3503b4aa9403f80c835c995e3b47e33c1c5b8321e8db1b72955ccbdf640c78aac376ec449396b163b8d16b51b0749fab6ba71d0b563fef6e94702f35ff2ed180f0de1f86679d8f2a26b2b9d8adffc7ad11c5944118e30025c9be26431f130aa2bc238e4b0104ddf9f82630ab7eea590bd7eabb2da745ffa -208:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf -224:ac2daa6b330224b6f146ad67edebacd98cd2269d0cb313fde49d85ad60f9b21c9926d411fd435be8bd073d294e905acfccea2708f98e05cc9ded3c77e684b671bdc59deff3b43fb931381b12133ce386a0314a939d6c4855bbb7765adf955f4e587bebaf6d3b8cf547b2feda60c326e3409833665f61d91a2451ca2693bad6779094e010a3804993d6078c1ac3c2d26d589a8b3376dd06241b3139d2ae603ae5c4829c297f09a5c535c37998f571b0e96855e7a708d7b2ac42659050547c7bd447bbebad92e98b203ce6e83bab8e94f232417152ac6bfe8f9982012c8f83c674 -224:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedf -240:5c4d34448cf5b5b385a8aa9e504d724e6e689a35ff36143c20fa16df16f74347df6b65ef354c094732fe1b31e454e319a7be20dc6df4b900dd6527feb5b7c81a7a40df73d513cd40a5e1acfda4ba9e4fed784bb26b2719899c60a54bd8c772f17c95e6100c6def216c9c612a10db62a576cf45392c68736466305f6cb86f218f57b033c3773d0cdd9827f822cd480b60f94d32b28f536e6f0464e63e84294f0c3ab088dbf0efcf95b020f4c2ddc72c5823c2182025cfda510e1a944ac9316f0ceaba7dbd116cef95e051ca9143eebd575ce53c26cab9aa897167d500fcbe229560a85c98e83385ca6befa90726e768b4 -240:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef -256:46d31a1a6fccbff0435e1811a4851746df2af5772dd0408fbca2b3603cc4f92f778dec8f14daaa6f081500de55d036b3680a8a9b6c50bc20eebf09e35036bdef9b3751167e807cd1aa70385ea9f4be42ef4de6211079eb0cd6c3810404a60f09dd4e98cccb09c356e6b4c4cc1da036bc82023b075011cad2d01bf95fc45829c7af484f92562c2579bd3b4dba3967d5c6bfdb3e2236c2b43655e6393cdce8a2cca0affb8e45e8545aaf04049c2789108ac5bc6bceba18bcb9d4944ed81a64ab43e28e28207268464b99dad7328db0059defa25a722cbfaf89e93a20768bbce91b64f395a379ba5580a2ca4ab2d978c6ed3aedc9f53896bdc28aa5f1300473a3df -256:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff -272:96a46190ac8c56cb272488d1db3a6153a4be7a298f200eecd42b0657e7110e879ddaf12a782d3f946a283f23fd5fd98ddce5874ea645e6581284d94c5437a4737921fd1504fded721d9a12c9bac8d8feda0b1a32a5a04e3602dd3befaebb161af6df1590d280ce09fd99e551ab39351dff8cd85dc084920a21f49e726bafdfc75e1cd2c42fc8789edf52adcb8b8f87b0b7c89c7e80fb8a14807c96912fa125395d71f631cc3181cccbf435da014e47c4dd25640cf7953787c3fa2e9de4a867d61cc398724a94b584ed336715ec92a562215bf36c193cf2356973e60b858d3f97a944d12a40173218f0bd2e565833581e51bee580e3b3430b3d41d6d6788b73ebb45a22a548456f393f24999c40136688 -272:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f -288:4ea9644990536525105792b735e1a9adaabf7542f8d30f41553f756b33fa90051352939fe2693be9e5e482f9a2fd0ea00ec85abb01a56780b61609ac1364b22b2a1f7b061317995c1d2a8bdd280a7735d1191aa6c546516713577093f17b5696c9f2a2b94b766b5a9d2551891a5c17530bf953aa1dbec6a9560054534163c26973399b128156af6a257e0c591b279ff376d0e2464b06a464bc5e5f3d4ca309ddb9fc96d8c59efe0027389e25aca9106b4a6c0e8e3726e26470f0aa59ecbb1022953312bf5a09db75728ce455f63bd328437622bc61dc5f703e7e0d49a27ccc1fa25439848a1349c7790d1920f465151318c3d27855bd953231981eb903bde19906667d26900e2c233330fa0b6c157db37d5b7c76fdfa7a7e1606045e9a18a0b9 -288:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f -304:53ef1d7350ca9c52f3d53b1f3097919a4e49bc48d2e63c571abac2f19f16084b16308dd8cf96f374fafbd1ac7b3f9cf3b9c62af25563ff09f419c94f0530d43ddda8396d99010c861c92d59b3d03bb8423eea55044053b06be07fdab392cff5f85be8119ce3e3783cd03923d28bd6cbecd5620fc2465a9f2b1a0850e4a6f35c1893819b689387e5bd2449aaf8b1497a598a48595030a00b92ce357509f259690823c0d1b710edb36cae8b7653afc183f54b1955a56db65929df6b29880e99eb68581f1e41141ee697c1fa565f0d674a2b9f1e88c3f370d1d5c564547370e73e2f475f52eda167bccbcc19405e1cdd24c13ac25bcfa3f7dd65e233e059b18fb420bdb52969816548bca83ae9d392b8ba1eece0faea2a4d965e46e38c3acdb00466892c1be69ed0e73ad80beee0cbe6d2b -304:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f -320:577d305d82d993adb3fbf1e91bbfcd6d9fd9b7872420dc418825ff0bc791b12dcc5fb56f0a4396131f989cebb7b07b67f6365bf120b15cdf7c856e4ffdecff571bc8b04a10328811401ced98c14b92d667d89ef0f413d2472d039931c33570bef3db3485b4f018bdc771ecad8cdca1ace0ec948591e98ce1e037d33ce00326452fddfc70a340c73b0886b43dd0e9203c11c025af0aa2ef3e3538893d6716574f242657cf1bfdf6d8ca3fabb982866d04554d74a9495f178b5bb68d2c2d026b82a1d65a2a63a5527710c305d6b54e830baa18f692dc0f29815b7eeb717c08d49b696af80db2c05481aa077e52420cbd1ec47c99aa82a0bb730a85bff1a8000c1735af09ac45ad3d0088eaf52f5d42ba1337dfe3ae956d6d7899ac949028ec0f5884ae58d949099505dc9576d204702d9b25a172f81a041fea4e8744605ff0dcb5 -320:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f -336:cf3c36fbf2b8d72b6e9e8e9ec871117b2d4dc814e3204a5aa223136f8fb8218245dcf03cd81de80a4d35fc5d0a4f8a31a2872d3c1acdab0846c89bbc8db6f31436741f6e3f21cc1f783bf4eeea9b29415eab9c1d6ed94dbd391a13ba98a851ee0646a378a8d1b25d56de83049fa5ffb33ed2c5f60c6588eaf8e6b374c43cf1aac153dd63951aab2ef10923889af3192bf2adf9eaad048eb8ee3f81916eb589974b5152226c5d1e6f516a82e8acfccbb46ab14d5b901a4b9ad23c3310b0a2d30f0d88d0852e67fd7391c64b9e57800d62d81695d9450e135c9d193fc0efcc8f774e0fab020dff5d0a28390dd4d629f5492a544fcf04811f2b0e3a64d33c5eabc43a22a97c698390d53789935aab90808b091211609a5834ee60da7af6cce5cfe9dcdb438b9e8bf60706696d0a95c5e6bfd25921dee98c47de5d7e4cf5101fc994b062fd2dd01a176358113bafa404bbc8 -336:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f -352:7dfc531b8d9b4f8a084ef0f6bca81ccedb88d13f899c64ddae54611d76a0f77ca27d3745860c79bc944eb854738a1c5a1d23491d19a20f7fef3ac6391798360eb210874cec1cedeef549726e533b223a3f3b14d4bdad059920910279ceb49e70c87a84f1901125327a9929f238f5361099425afa5d826c82253d94d83cd291947a7d54dde88aac734d1df8de1f125fa02b6b0983cd8674bf529c97929b56a5ba681c7279461575a7568c7b9518d95e6ea8faa6ab6b4dca7874dda2c8d2cc72577dd67744873da145bce25593511d0bc3d67bf5cb61f9ac53e04701a1a448e80d692fb46651e45b65dae90994c91b83ba4c1ec9f7945187b9e7c31e870401f5ec8322d0a686fc2f9559279de992171957719004de602a7da9ab63a902fad8313b60fd883781aeb1c8d5b99c73e417c821f75859bbaafad40ab85098dae356c996f4274b198536262b2d26b22216e79ff3fc707fd197e1f39bdfb9acb6214d9196 -352:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f -368:100e6e817ed865757039f75eb6d15c16c5478784eb9dc70f60e3b900f60fa925404e09e2cfc0450bc89bce115fef62de782a2d7725970e7fe8226122c1ff9ccf142275d4f37d011ca3aad5700e2e8a8d27c7553e59f8173c8117d813e4d237bf906e3499306fd5bee0fbae137a372807caae0619caee51039049a09066b62953fc5bf1213dac7da86b4418cf3bbfe046c1b9fedb6045ccbf25617ea52e2b6fe2cf9a52ed371f864197fbb3ccd27ff2d0e2e7285e29b21632111d2ebea0c8f1a216779aaef98346b84f54fafe46ee3128020434d0fb1291e07c53bdb236e3f476199647bd7366a72dcdb5484e2439257ddc5b2d77b3c033e068c32288d94a72f2c6562c7e1727e4f60fa41a75f5561c4c15d5997db99471ff68b085b39d5107003927dce0060b1926ed8e9144a6ba6d907ecf037f8006936ba536513fb8122b82214162b7735a16f72ffc4773c32c9d694827c3c2ecddf742766d2b742ffba674a04c3700ea52988f6e265925cdcf4ef5 -368:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f -384:0e2a132eca216076665bab6f3d1f222a9b502a4830e7a67be3330fb4a4cbc1f2ba2c3891ffd67cca8514739848cd90354e99e489235f380b3727e74467b5579ab2c3661054eac7f9413fe1f5f9b8b54f25b9eec5f693025d300bc70c607f074b640764d91230a6a9753bc403a17009e201cb96b57020b527d48943436e4fb717a5c5ab027e239cb508115244f1ba975861c0beebbfa6a7ff1e47ae135eb2cefdd8976c48ad71ff19549164d22df54044abb8cf86c7281035c00f471514762b6224b2c06cd496e149fe43262c554ba04735df40ae8946a59d87d7bfc4573e5a1cc4bee53a4d33d301503955e405c47cce974a8844ad1990c568dd07dcc1a240dd1dba5f4ce864321967870acf941535926e5d3b511a97924350c9019313a56816a1abc5c51aa96bbfdd2c7837a43320ba964d047fe5d2db2800471679663dbc8afd4fb8ca4d39c5735281b9a668b9dcc46c4f45881a2c9f841dc52f354d706cd32ef5dcb4a9f2cb5c1c7b4fc9e2b56e14fe10a8492f7137e580b6f117d1cae58c -384:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f -400:0195b4bd24e6a6295a3a6ea05ee7717ec07eb6eab50bbac751f66f6a79fc564f7aa1bce8b62b87dc25e7b45d52ff34f4f9d30afd0eb33eedac4eb19241fd80dc05ed8265974d1ed3df48c2e027b77866dbc235536b48ab50f628635a95c4430f8c237d647fd588e0318a5370ee6342eb802c6e584983ec6aace4f486aa05e4ae68da28307cd64f1b9572ba59c0c59ecd198dcae3d6d36e09c80d10c877a88b8779b934c6e39dfe0123c922be796a5d962586b54f6e9fbb467f72534be73c4374a7ec7c34cc1eb3e3934505d9edde91c210697b2e550569bf6a3e1adfc2db5d364336c19ac4dc17e3270601ac88f996a5efbcb2d241a1c7acc8ab4a354533f912c9e51ba898bd41f43486290fa32b36a760de5df0c25d5914f3d56004920c6dc2e1724a95eab88f61cfd154dd47fc8b62702e7780522938fb9c035b494a0ace5a21c09f0cd465a834a61c4c979b093a5d780141cca82324f3dde77f45efbe46d3772831cfa93869d144740bc4d0948bd60df373ea24e4be876b6dc8a338e1853cce36b9415ee9aa9077c4cf9b2d482f70 -400:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f -416:5c3985f375cf6cca081dfc118d4460208446d21d3f3d100e883222cabddda538115ccfc37f68739fb6a1649c55fd36412579ad1c66908b87f252cde8ab32386ef68c6205c8994bb7d0f9e0fa5e1e6d8aef7064b0432b1a03b3dd4fea645aea15216c03f58658df21ca8792fd2253a2a889d1b223efbd60e10890676291fedbdc91aff403cb98fcd96de1d1481bb8103f157780ca09ab5490c79fc9c60fe91d5325103441b986af5e9a0e323bdc98150e45a2e7cd20997c58a561c8698a64e7734ada60ad1669160f92c07e56360113adf699c25990d0172cf67fa8e0e4a3687ac23801badd498c7a1a411ffb1f96bdfa5de99d5a4d6faa8feff99f624c396029c5605927ae0b7315dda77d092d6e37ff885669e7e60a823fd06a457785be0a151786fb0a7a3a8b67a4cf47788ff8768e24b38df7338c87c2fe3919e74e923cc8a4a3ab7a21db18ff4672a25d3652be23b4ef02e958a77d7df0254d7d54f6ce0f3a4572ef675782d0a9083c6549304cb302a03b5692137a2fd65f0b5a21eeae19c6535836844445afbbe2a236ec3fe26b7d7615a4171a6900620376bf27db1479 -416:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f -432:de81559812d2938cba8075ee1cfb7313173305486f59e53abc00efa276653d6cf200828615a9f51a045ee94017723aa431e0d4252205f8b45afce15d3654fc638bc32744488e97f4f7b9958694d40403bec42a1ca97011cc166580737b6fdd71843b8e9e876793858d5b7a06da8cd7bcaad4ab2db8a5635f3643263c9881a9157e1ad82c2832e5894630dd36cb9c65dd7faf147b57e230b5b94417aa962a3f63bf1594a99adbbedb9c03bb9d1a728614032946ad9743c514948b3e01ba8099954dd5e3a0c157eee3e0038c8254fbedb10c685d89cb0555ea7d3f7bd5bce22431bb274ca8421af1fd9842cc9d8094f2289b6e0f4eaa183f316a203b1aa4e6f8008d8576b5936f715ccc584e4ccf1ae81ba5954ee4f5d78ed17135cb13af0484f3664a6f9639a7440ceffd5ea60cc5f391b7cd7201b0059e3391eab6cee0e9ae0ab7c4b7e6480ce7f315b84d8321ec4d1a33cce3ff8dfcf9b1299cbbfee9a5874ce5a1c1dd89710a3119c1d73bd9795d85ff3a01d88066a7b2377738a2247f3cc02072f0f3ea2e3adf463c157e9d662167422db3824df31c592891474fd4d0268e0c64ee9117f6fa02acbbec532d4f9801 -432:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf -448:957c2adc952b9187cc7da773714fcb6fe574a07684c3d5d1e2d633354cfe248406b95f0e9714f276f156d97014cfb35991c359e07464b55ebf67f745168b386bda72f0c2df5a7f830a5e4629303443181cd43cd8d30a415cbce0f503d10a0f63a34eaa3a7ae962111caff5fc33d012549eac997290ee78f4c9cf95c148138b60734cef0612983eb27a160bcf5434bb1e3e6a6c100dd55dff25b04d738bfcedb84ae2a168f3be9711bf74c0c61925b61b321f90bed4018f0798b6aeb99975d26244606e1b5632ad1c1019d0ed0f254273cb6a48494b92e516dd1c90b6e48b407179fb20426ee46a8a0771f1bd67b153bd7625e76ebe052d33137ed1cb8b0574eb7c93176d6ad88c5e4bc47c8c9ef4bd54a46fa8ff32ed284339982a1aafe3752648c55f01f5ea80c419aee39b0590de39f0e34f382e3463bad7b42aa17b5eeb2e5a4ca06e9dc3c254cceb5567acc56fd6848d5d6b259e79452423d1a541c6cbaff928039186f51bf1800d859ed932977df30fe28e00117c1e6e8e77a0bf7ca69e264fcc96c1f75ca677554e9aefd06ce97ce5f0edacd50ef8af9653ec3650dc78693a483cb9686015565ea96fd0c36c13d51af320fb8ca900802ae94fdbcd560e -448:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf -464:1b30a6f0f8275f186d7dc2686794411242cd55389a35c2a8f0d276138b9c1bbd2e12c152def0bcbdc323bd3e3b43fab29cbb67f5ffdf7450acbd8c4844e17b196d68f0ca6c0075bf06b1561432435687a998658d62d2f9945ab9d2a2b9cfd7d4f67bbf4c536ea589faa7a438e3cb0c006a2bbf2f90c139793c6cb41be18b4948841a2d31cff96b25ad0f1377563a4acb28f64efa006834c3335e604d94873e7b8eab583f87c5f4e096bb27f1c1af45eb906953acfd7558c978032624355fb2421a636ac6433e7459b61b0706dac2f4bbcaf18727dea1f6100d34eeed31d2ea2672f9dfc853e408736b1cc03a6485496b6cfccc6f3481b2cd05f5569bb36456970d0289aee8c0442cb85b0659efe9872d5e7eee0218d9da684ed0f11c489b49f5b974d1a397bb31e15a9556dc1447018a4cb40f1e13db643a8769e4be78e22f354390563a7a7334445adc5e70ad26623d248721a0e3b8354e526f573f8a292e7d568e63fa38b48e0a4ce7431e890ed19b3f824cedc84a050d4d2a7818ee26b8ea804700ac840eb4bd3a4c1cc9655380d13a86a69f03f642e7b2337d21116aa7510761704098bde0cd6136cf47858a26e4a11649920fc2cb21a51f2f9330095d9de06b5d72b93a67a59ae3fbaa4652b82c -464:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf -480:8140b529f455d70afc9ee6018a2e59a1ae060ccc18908f3b0ee9e8efcbd3f0124123252c5a62401b3c30ae2843f4565f19d6f4af186dc35ce11fc8d0d23bde67ac133dea138a5c27712381f148f1756228e0ae06a0795e8fa3e8437f87a6f34db3edd5a679d8b93442e9129ccb3bbd2e79d4e01d57caeeb085b5cf24200150bfa76047b850e96818faabd768ac5e2dfe210846008bd76d956352bcc5600fa77c044ec582c17b8bacbef9075e9f99a2f58fbf8f102825786b6785428f4ac15756c7190ba822ce5c0c571940bf77a22474f8eb6692469a3faf69694301d5c14d92d9995d20afe38b9e58aa6c0bb59dfabdb2aebb0e7b11bd2eba1cfa05ded46cf1dd1cb174dc76ff6784d06f6062fb58a7760284e051cc1ce1144643d902881f1a435130d3a5d7b2442fc03db9896d6d552afc14be38263c63b24659fff6e115b795aa1e1d6415e67637b0bc095de9dc4d464b9cc00dc47cbb55b3b73f3ac03a8ab933be81986e9739c79169e51bb90b1664320193df2368697afc9e02b9d9ca09d7e8710535f512c17ff24e3bfafec233f799999d8be0bc8f460fea79d8459ba17d4efef64cfd90624864fb5b220bc3b77d21a3db10fb626cd8539245398b008c93205254a60c73f9c19f0ed4f4152311ab1743762d859b29af7807fafa815fe9 -480:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedf -496:569e7fa1c3fb86f2f88b26de0fbbe7332900ef284696d3b04800b0d81d09eaffece090063c472a180f237b2d4e51b2be3f29c361fad95789ef5f1fbb07059133ed74c3cc544032021d98894be3202af6c77e43f55755afe31ac5b9e5d73d1aa8ad059a4efb9fa10f76d88ad0bd792c96f804254566d4c86949027fff96a5d05c673eecb52436737d329298922ebd45d77789104c6b0885e742e45c4d2fd283768377c09a9925b3984828d1a4fc9bc2bc256b28a2aff31a1ead319897441fccc4b8f3f2c82e5c64cd82111de146cdf7652a8147076d828f1c50b67e2d060deecb9bd2b84a8ba13f0a65fea79a0f47af74d3f03207a191e3a5c9087994846cf176063c196b77271c7e8560ab28084fd1e394d9c43b07deab40c48c05eecfc5ba42ec6d36724eb30ffa5e9904318c1242b0b113cf0c7a168da9197abc2a083f371c526b4afdfe1f1424b290fb2bccf48a426c8f321663c767e3708f37fda56968f0b5e787b67d366828a3cc16266268d92c8afdced356463dcaff0ef568c87653a308c12b69649235f7b2eb391f6c54df1e96451419bf412d2ca0f6d34ec92e04b7bc618ccbff4433e687dd147c5b3fdcf4705078adf5d7e370ee992e021329bed281d0c086930a3661541d67d4af188d882ddd020cdb7bd0c65743ff41b6fc7fd75237e02e7d6dd8083afb544080620c41 -496:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef -512:9821b3449869f2cb0ef0a24ecbff9b33a73b3cd54bde63d343c426a36c68d1d166c13d02ca4d65cf78e953361a4d2a4035fcade9f3d35d0ae1cff5b85f1fe5c9f3a9db9dab6c10b8ee7542944c84815ca990bf4bcd7062a8013bf852ff3b781f60e29eb9196f31b0e9cd566b7c906b8d930c4d4f410793c1fdf7c8c8ed913469c2506ccfa1c029f383a9eee5a95f18ffeb1f25084c62d6c9fab1d67213efc1ff08f2a33a20eabb520d6997803ffe382ec2f1879465c8b166b045e8ef6fc27c8182d8969419291fa5641afb45ba1600f512a612e7dfca4f71cd63c5fae50a53fb305650e3805428bfb6689813e342425ac6d5d13c9575b629b9430cbb21bfc41c026fa3f8fcd9677bf9bb7cc14c447706a455e2d5fc90a80ee635fbaa589e2f50d35d1a1d5ded77bd970a1fe32f92fccae831c8e540c5cfbad2162dd0683160f0d614fef933207b4ecb51465ec0063ab31243c9a23a07cf0952b81eb02e628b9e53ed0c27d720f65be8f38b960c0286b8dc58aa11905f3d3c694d364ac0997e6b2e3886a1a11b357ef0b75cadbf77acf015b4cf6bce508f4c27f01048d2f4d811e39ee8501d4fb6d69fbb6159a6ba56629e54e798e872be33c191750168af7a47dfefd989c65f6b2ef8064aef83e2e902f68aa9e10a7d6ac4a2680dd0913aad62b5dbbe2f51b46bf64c950caee3b66f6e7857a64d9ccd4518d955f24a23819615 -512:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff -528:f02604963d9dc47382d2b835494b8591deeee437c38d4d23e643ef3d3d3d3d87a6ac3475667a749ee84cac055aa47b531eb22d58cfdcdb395fccd9e34e88ec8dd6d4bdff940e321899b700572badb5e44675f7b425a9c1c1969df684a25ee0974c8a9d5e801b5cd70976a6c5af27937c784f4f8d1c86ae1c265c5cb38ea1ee18bca93ff6019f1927ebe203514bf20548c7efc13cd91fc292e2c9ab9fc014d8371d85a2efae108b2afb8bbafab75e7361c99925a19d83f3d7fa51c0274a7a9796aee7451e783976e679db97baadc4aecbc9d120e01719592e007195dcb7b42439c5403ccdde0ed0ad21a7c5a2798919abe81ff72a2baa033002fe25070e14f3417e7076847e90d21ca9a7fa82b45f62d2340bc2aa729616c83bbbf2a6505f860ceca837c479eead3b18f50f88a63f9582e517b4bf51703e42c3f473f901702d3eb4dc25097169a2fa95729f295200e13d05567e5132268b3939250b8bec170a90bf842c8f2b680fb7dd6bb63bcc1ade151944030c0a58b278d700e3460e9d9a7453f0698de6fe4b3104f048d0d3c2bfd6d71c86d8460b95568df8a493f6e77e1d64b158329bec6ec126a24a1d3cec3beb2749c0d2f2d1c9d03708d0f0a4faf81ab0cc31e31dadba6e7f453f35978d49bd026c145188b042da98795d884256fb7b25f5d6e8ef42c927bb39c921d1e634bc94539076986afc5973e98bbd0e466b2b7e4cfc7831fb0d4da70ab31dd9e1584d -528:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f -544:ab5530701149690a9f3157b9718fb392d2d2c38e57b588c652a9af8580750ef2da9ac7f28442a1a3acc2ddc06e0cca15a6ad8c5a253c0cbb307e7d89ecd6a9d5e72c76f2589e11706713bd0cc4bf524fb5ef3c410eb88e52ec0e52d822f6fe14d744a09ec110171af24ce27a8f116688092d7a7123c2ae144fef01f277876e85bf0bf774350c92c7bfee5977d71f52a0d395003adecddcd92ce6e3a6c73b07786db829396479b10b92938c7b788b897695f74b61bec738526c02865b15ddb8d6a927840fabac0fc2ccbca815ab58689eb73adfb08d6148d9a98e8a5388aa6502458ebf02592178527681a12afacb0e0e1b861347dca374eb38f31d86761b5d933f182cfb3aa48cdcf17f08cb9563ab8928e6472fdf43143454f66b626d4e69b1ea0698a4571387e99fd4ee16faf826c3a5c1110522236345948c594c20e3a61e530dee291b79b7cd0e2b0fe7d0180ba1162bc4b3b1b3280dca81fd5a9ca8a227f77cef89896e5c664a75b787f45e9693147776ca8ec8ed99ced39920b813ae9e1e93214d8cfe5c168ec5f07fca092f6368fd952d0d48a49600fc0b3905486140be1fdbf142d0cc8da446d2ed4b1b42f09f09d3cccb95b50ebbfeff60a1f5bc44a9161ec3bebb94504b70fef1c36035a89a866fb96b12f122d2e5ee5fe85b371223f95664b7737784c0cecea980fa711cc263446be48c07e6da223c4ec856004f99b0b195180187aa73ad3318b7b23c9002590d6b42fc57e9b0891e70406387ed -544:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f -560:dee4d7750f0870bcd16faff4d65a5593f5d86f32a6ad7a519d6b2333e522dccadfab7890d02a6499d6487302aeddf9c52c929486ffb44b9ea9409a940d4486a379b0ed04e00421f6e43e7393f75963e68422ebcb2b87eca211f671dd713d59a6034576a4feb356eff67f33081f7889c684f971a22be68adaceb35d24d1947d7f5a5c03f66f3152dc3bd70f59e172879f50da9038a115986ada1277014958b2b19d8a158c097c3212eab6c6c0e97948ae15f146a245bda2495a5a860da0dea32b7794f77aa4bc91268076649255fb138a4ed831e659a1ab9761e37bc13839d1f419d7cecbb12bfa67c53fde957ef5f5cdf43157517f8021e89eb46df4762cdb992a9285c36b6361561dc469c2e9b5bbf79fdc8779627971e6d6a74e40fb1961933f182a1b270910d7604a680d5bfc2e5f66b6e4098a0b13d4c9b923bb56713012bb63b7a5cd1f9f1a7b42a4e28278e5766a3e484da08a7538fb1b27a15f7eefdb5fe28cf6297d81ce7c464b6f7373783c7d344334beed713e325e1429bd7bfdd1610efa551f0c16a6eee5b787f973a0110754bb681de8d17830996e993a360e1585b12ea8720fdb3227f193a1963f0afa7d59e303c27c70d37392fcdaefd5b85d52c2bbb7f19b3146c2165e35bda3b6c23f16e469281e10bd351a533edc370388a07e63f02b07db8569b8760b7c091529907893133685aec1cabbb8e06752f90490ed49fe4cf5d580c0007ea7e902a71923029237fbcf965859abb2d14f6c89548017eeed6d0d5614d131b6512c74b407 -560:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f -576:a1d36653fed5f5d40d1dd0873a07b82e673c63f30f6d7c895ec6eec7fb1e9fce1f3ecc41032c94b3fefa4fe98f66baa353939c796be30cc1668d195eaf5c8556c1a00c4dc0d6ab65919a1d72950231c8969c5b02b7f22b70cc03fceaa39a5adca0c9ba1cfd9bfbbef5d4dbe74d3596659658cc5aa1709e4d60469600324514517e90d203aa7eb44612e58870e3acec3b8c969f47f90c2142128a2a47ac3d3247c67fcb051c82f3bcfc98dc5fdf5bef407e369d02f23d690f62cc5e41aeb2298bf2c971a66744bdaeb9832650edc25d09fbd1314a5d84477d7e552b81b3c5731b420eab4d679bb84e765ffc5bf9b4d19df96b22342ec09d808d509fe8c4d0d40c3ab9b1d40040b4443555d9ce9aa04e216567f05ee286c811c9daa6c1dab198bce81e03d171305f1423626132210f0143a514daa926edbfce9a234b3100590196c424fffe738d0137fba0532a7b9b4dc162b9b406fa06840e49b0b9cad3ef7d71aa767b8b2fbf9780f1369d6c5b34361f403a3516ceb2fa0a89bf1821574439dcf42fb1328415e363d9a306a3f720e23eb5041199edcfa10b865a9f5a32009906512202bb4ed532616b956d0308a0d713c6adf20dc03da7c9b29c9d409b2fbe3c7f30376bace8a3156fcb384a62b93c50561776fc6cf16ded8e968b27391af2b767ac890b57fdbb7d3a3fcdee5467badc7c0d8ce59a17129a3672c37259874b85202902b11a3261ce7a16b3f830d36a173a8dd3623db5f45c233c6456b8a2d0fdadb16356e5c37afeb7f473cb4a55f39b9ffb0e4fd96952b75edb5c7f4648250e -576:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f -592:4231efb1fe07daf9ef1a69137769cce0731aac9aef27cfae5b60094e8e8550cc5b83c31efee907f5aa9fc51fbffe785d7d70ed0b93e918b4d771c7b22dd72b3d78e7eedaba9689eafd5d440897a339a2fd814651166f74636518affd53d96ce9b6b2727cf3b87c1a7e5ad7cf839b244bb2561fb3955d848131efa937cc8f61fa8820496b779498ecb3a3ea1cb573d55c11bcfe1f21ca95110012be5f35ee2d224cc284062b27b5ef85abe933f8bc5f1acb40b2f42b24db4dddaaae33b67653145a2c20ec0b308cb7f2e1a4110033776cdca32115a2022b3427d73d1e3895c9b6f337c6ba7efffc63bfde50b2c43cb6741650a4ec6a742019c65581a6d45f8d62f62d3da161211e414eb6af9894383615b4df3d1ac5d5d878ba72087ae03530013b21d56130782acfe0a9605466085a8c8b8db96827ea4039a77b1d7b95aca25167d37e6d6ca8880da08588ec7c613f06d24f69c3e8bc1f0b9b8bf589b7010671a9737f57eb59e76523b9df0a94edbb85a5ad91a7bc58ac0df86e6fa68b36eac485b497a170bfdd798e1032376906d0b77dfe9335fe47ae4142dfe9da9b3d946af220715dfa7adcb0c7789e4566fb9acad513c054d859ef309cec2a196a5407902ae929aab826cdd056f70a8957e7e001a63522e579986f542297fe07226c946e832554cb4d8a0f579891abd54b7ed12247ed880574eb62f823b42cca3418fd03b9efbd6e490e92dcca2409c1e5530b9a02529fef02114f96bc0ee7739507b22e48510221e218c0bad525dec6a2da81b834134ebf0bbad4638d6e3d781db3335883256d1964bcfd37391e84d128c5c7fd -592:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f -608:7cff31eeaa23800d7147e8746ad4e2b2e041a68804786f51539d19c040c4529d2c8f3a9eb917505eaf9fa09c8ae6e0d8d8f5c341e4f35f0b0f9b4ad99d7996c140abe8adcb81b6c96459f62b7e24e580614f6320b9d9a2f791b7c2aa9de02f0450819411e80cd62d67ab56f207441f823e8a40bb89f41fbbe95e26359f738ec2c7e418acd5c054c18631d573aec346915979d8eda7ef287b96053e6b9ad1ea683624fd02b3ae6ecf0db342a7e5c46b4b39f5fb16a52237689977c1f2d310fa7e940b9a7c6e20beb9e7a8c0727f0c7461dcb6fee73b4444822776345d7db060c7ff761e2246250b2d7a48e4ebd1f084fae6906c3120f59b740ac6bfda70ac6e1168d4572ca2912f6891d33a128e439bda816691e519bef01660a80df5d6e7108b7789950ee523b9b2ac8d998dcd276ad09c479265fc9679008174cac18ab8ba38f0ea3384f3e623daf1fa7081d042203a4777e5a245540bfb1cda88445f056d4668256e719352a4cd9d02cc3f0a3bf24153aeca33ed0df4ba73d5453a40e79a4a1ff462b6c9b3f3a129be2d27f1ee31b5675ad4d9c1a4567c57d039badc19676a6a029881c6c30616a8d32b6af83c6a3fa412a6a383af1f6cd38366c1475670dc15a9406a22e33ca2e149bb7141b8e39f1e437a13cb0ea27a9f73f7f01a02ceb8ef6a70de8a33e68c6f5495058a0b5af933bbcda9451e93f6e8877938ec67728d48fce408e803351928ea05f2d0d53ead088eaa84c2ec158ac9c036ba602399d542b687e8e0c80f7ea642b09abb61798e54c54886c88eeca627a8012254bdecd763c906e4dc7c31249830278dc4ac6a08cb22eb2aca2cc1bd54da06376e741149 -608:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f -624:d49acd3a39ebf5002de6a7e435cddbc5df1ee700d41c4f8ae145882f005aa149edbb81506056755bc660208b79ce20927d17f8246689174e22c9e5dc225d86924de4ab1073d6f9762931ecf002c9149d05c715b05d7b56dd0c2d715aef361084073d55b126a9e34390f49cf66fa1deabe9c1191478659be5509462b2bf5c0c6490c4a97aa9343403b5056de209afe24ad277e68bfe19c11e4b99d70bd7f1f0abcdd80ec552392b4e5b385c25e9703c992a340927fe1271dcae11fc44a1060b77bbb42fe8fbe92cee73fb6231e0c66747c5dcd0e407958707745d7a969605c5308ca858641863c8546039bbf78e54178dc3445285f6c4cfa1264ec44e76946b16c7d1fb40370bb7681cc5bd08f1f325517c076b83a0fbc9dd82cc6b4a5fe145df1d206934333f04940bf403f6a0ae6bf2dacd9d240f73d20ae6aa24bf6b8ae918bdaff2615eb6fe2de197420e085ded829a2bcd194043d2c7f4da31acb04a84123ee75cdb611618667b6adcc3677f0c5203cfb9b18d6994e1a3b05b01f97471c374facd2a380c8770f1baeb09a0d9b45ab4e32ded8ae5292c307a8f83352757dbb797c8a7dbac6d2f2c54bf86055e08cc59db82c083d2a4ee16c57127d335dc07a895ceeccc8a8c268873cad5b3b3f9318e5e1b46f1e603596abed2332e79cc8d9835e0d67b9bc9c3192671a812bb80d3d09a95110dd4191bbf76c0eb6665326c753dfa9047dedfb91bf6258e575c0305a46b8f27847f74020fd5cb6306b32f526286d2f69d3c1f7c77071ce622b809ff9706eec156ac3c6b31dc3fc112c6fbfee7e40a86a1bb634dd2f62cf3e7b9885fe6a24db8204e1424bcb996f53ca5a5fb823263e564cc08d0194ef39500c81568 -624:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f -640:34aa7620dd642155a71ef5f64dbb6e226780c86774d9892d7cfc2f11876d05a4e51cf71d01479119ee35ba690debba287a0a8a2a5f984eacf6623db41cc5f8f8028cabbb1377d010effcb8cdfad1a9f583e2b8357760ebe68e4d8727844ff55277713d27e1c98290b4d83cdf71a577de138daec9dbe03fa7637e5a42c39fce6540f921c2248c28cea6787f23fc8046fb6efd9b3a1ffc3fc335f130bc0b4cca337dcd8ba050d8d87bc8da7c0e286503526e46385c85a6c8bd36ea803f3bff5d37dc29dd39429a84c6f35e83a3192db15a3bece1fa7648002ebf8feb5a158859831f10946c94a834ebe3922a71bb424e681a18fbd7feb27cbf889443f6ad1a94a0e48ef3ce6378f123acd41abf79621663a75e5f14dacd0e590fd9cb9f50daff9f9f109959474c9841d9fbfc538947dc98221df050732084f672daf8ae517fc9b59617c5667c946f3837a21a1c60707c8f086d27e856df624bd7972aa9149d2d588dcf4cdb66b78b257387d28985e9e518631aa1b4c9e272eec70ee9b2b58e98983aa14461bb6a468c6976620ff76855570ac7a7894199de1240ebabc8d5dd6aa261bfe09d8bf711f2175977d241e5a32bb99f4486a7e023e5c587eb952ae908bf48125a74ed8a675e801151bef8b226d10cd1cb0981697b67fda8064385b3867232071123128619c05f64fdab86fa6903c2651674fc225855317f7bc47a0018db70dad91b08164bef0a2de82e62d6592b42d8e303aea2974ddacec20efa9cebf99ed23a93582388bb75ea7bb93d2447079b8968644747ab32b3ac10f6445d585eb3011e1dc12fa65863e616c0e44fb36a978852a10e913aba4239ce369ea1358f32130aac17be13af5ccb31e404fbb916a2ca902b6c84c2b7b369747454db4844 -640:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f -656:f7ed0e6e0ef7d5fa1d23f895db539ad14e024902f30d899dd592a64a4a044b191f545c72734b2ecc70a1a752d7e55acb2f28503e3e9e06569faeb1bec2b6e7f4b9064aeaef41bcfa097ba3cc416505dee7e2840128cb1abef3e4106be9add513c3d22646211de6dd6fa7c7e2a40a2ac70b3724d1e5875c59ad004d82c2d3fda06d9f5dada4345d2f945f0a7c3036ba290b4dfed691688140b9af1b82274ba844a3d03b86556b67babd856e6c812a4c2521ce629596f28267e7d3cb7fe30bd1d693927b4c85fd50445a1c4753ecce75035996f38684685211e5b43ea5d32e54c5db286a70c573681d386480a499488502be1f51bf205ab3ffbc61a86765835d748e6e2a81410389ec98eeeb2bcb2c16cd9d3514e542021ed1bd9a41b3775cee0af410c6e3a29db39ab9a8913d7b72ceedee6f06bcd17178974d93a037ff303ac8a58b50787067ace9ed15d12417964230712cf154d881968ace0cec64721370864714739670441fc421185c2fa57a2a0bf9bc43a1e4cb78c0964ae06789af36cca8f7f85364c6d4be28fd7f275050b0e3b88b3a46739cb5ab2bd6d301c03dfae838b3137d085ff8bcdc593b8f790d6c3b56c8c4901ab23e5fe4f5fbe9b6cceb4beb06e8bdf1d6e8df98b6e4b3c96f2555431f1e634e8b7cd7919d489188c792b89b538e4fd8334fa28bd45bfcfa9dd9796ce0849f99b4c1c915f73ec0e0d59859f3100892f9c9f5793e5d0e908546eaaeb8bf4a8629386b1b28eb94d4b03dedff7b101a22f219a989285cd657fcfd3b5eeea8151e31ab11e38bad33bc40e519a8450b5929779aa90fb0c28ffd45df929c962faa2a342c5d6c7170af7213019e92d84758e41a4545dced705a21b6c857e4a2aa6176e21933626f363ac758b566278016e7088741cb3776ebe0530e26fda6 -656:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f -672:c324cc370a3ac69bcd8312a091b00dea07de0b5f3d4335ef68b596926fad005df403820803a80934f87d0ae02bc5ef9c25caf162d5b0638d0ce61b79bc0e0105d3c2df29015dee30fa123be4c5ca9e4ed4f9388bab22e2b7602a7a76206a311d5bb1f609ef60b777227326efe17a648f3b6febe3c64e8160070d5b8f5f81a5820af7b69486051e65779481e7edd4a0326b72d9292bfa5c553384f66c18ac573e848e1e69d9288cb52ab7bba98cadc6be8a71f5cb6ef23baafca64e91e0b451f2fb32479653a4f54e790dd7ba625713a2d3fc8d0c54d2dada99bd4e78e819ea0dab2586fad553dc4d87e8f45c85d1efb0f9d7a8da57184a2daaaad2d174c912e79997269f5e5a1a9c10f644e2280956f4836e8feea9b39557f7a928bbc6641fc61b613afefe04d35feb60fe33d03ed772fda778fa8c6fbc568a3ce516d1d7a731bb4cd3428caaeb2fb72fbd3e320b868dffc0794a0749c7ff42699c07dbc576d6e52105ceb16478683818e6207bbd02b268c45496e7841df2bb49faca2e45aa6cc5f50e8c845fe19faf6e4d79ca84d1437529be69ab32ee97c21e0002426098b9ab6c043f3fca03379d3d047701c43127ffc5d49543435c3c21fc9bcf798dde20b764040061f89293d9f2cf793e6e2afe443b423168a8fa9bc0484bdec7949e6a4be68a7f1afe8e6256b55a49827f18054a3c09dd3bc8c7676e86b1786e04d279ee61faa805d9e574e17d8a0d366f127784cad553fd038e237f6c5e8fb2c94817bb76cf954eb5195ede1ff597690239be6e0f6ceac8107ac4b5c843e4c2edadc7754a55ec64a59c7d88122a8a353bf8b75c56ed1aecb6d3454bc352088ce570bd066afd2402e8da33d4ec1d670a06030165fbd1f25407eee55b554848d0923f77b9a263af75f83b5bf702dc733686d9cdcd977da36d321844ec1e5fbd38c3db11 -672:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f -688:d4f095f98c6f6d5e536668ef67014b1cfaae8410377f67505c1fbac8f1d5a9b08e117348803c9dc1a06faa05527d6c9962611aa80a027ba9ab90f4bda65f4ca70dfc0008b18229b4c7e5b8970feac4f5f0b2012f7acde2dd835dcc94175ed97ca691f66ba1e86e86db2e1b546d24b44166061327e5e872829e1693671c42fead9921bfc9a10eb16dac02ab725ed48b34c153716c897ba91e1d55d53e6954bdcb2653f49a5bdd6f25b2ba109ee0f9ccffdde38e7bb5b6bb23ee4aa062e3148ff5e11fca8a484be29849aafc41dd8d23c6d051f58a998717a96c32aef897f80f5143a8d9140965544926540f6a9f33762a97ace2a127839c193aa643d9e7277854f362e4149b39688af16767f20cb3340df8a61a1c850d1c79d5408762985341fa62f2863ff650cbf1676f6e247987e317691dc8b77647db6d26e9ddd53923508343f1404e16e2e13da4dc1bf51c9c2ad2e604d6843f2a506ab32dc893c9f6e392917d04b4b3f18e7cd0e60d170987a2a479570bdfc4a933579a19daea628e3966df59285775da8ed1ef1c60888c7f65f8ccaa21fe4196d638ff5ab9e0948b2b7d6ecbe98f38a22bf9cfac14d5a277c16b6c4b43999c092d0fcd0b6f4d4bd0b7cbe05d03ddac0e2e8cc70d8627a97e2ffe0f7d7d5e82a1a59fa190bf798531de3c130a92cfe737f3d41ae67ff9040ea86bae64f0035765577326e595d08fa90b6490a8960cf636be26f21cf15f9628554e0c55132274a7acf6cb738ad535e872e591daa602b17c64f296950b2f6978f5edb11063d5d838418e6aa960fd09f713426ac4d522fc3ebe1a440c04de7398e9d787a5209d5720e17946543a0251921d1e61cd51a1b71d83cd40a4b190ff58668a90d264576ee675110e17aadb765d4e8bdea5d6f8bb87d558ceaec33f81facfe0b2cc78b37335b91aa6cb7f4d749302df73ee9e01a936c78b2b1a8a3d2e949b48 -688:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf -704:52aa88885c8189072ed6fba7972b92b32544c1ffae641cd7704987d5661338d5a86f45540abd8fa9b36df2a74ac0e7fde18a9b863e689ac6c50ec81cdea4ff74ebba9b4a5bf401479e3c7b4c444616f1b385e0b335c26b9ec89ef10fa2f5e6e7b13c7c4ef9b88bb9ba10a8715886d6b0e598dd5a2e8b5ab98f6f5a6855bda241beeb0fbf53869254a39c250395b75ee8c6cde6e911f9d110c19759ee93e90f741b4620b008c9c54cbaf10d9cd39855f6493a612e9fdaf8709552c4f36eae6831edba0bbdec5cde5193e0ca24c7afdcd66ec6d3d94ff2fb1d0a9b71da4f0d6638fa924f780b3cd6c271685d23d6018bd7e87a565ac9cfda02c5d0fda60b2c076ffae6aa94f73a58526c6b7e1c08384cb0aa660c6a8b939f7d7ac7ca57b7c18b9be7e496fa0b94771a8918a57a3fa5dc03ca5b3f47b8cd99ce97d9d01c27cd97050602238ec7fac872c1e9b280dd551ae59734ee935f4c1257e067f5de2b6f2ff532cb5f45e228a6a961d2107835874aa307d7d9e495eefc7cc1039745a478a61eff60083689828f225304bc3a22524a6ff3849ef260c84458884c9b011b5660988de0e8ef47ced9cb5ce31b684c22156ca0ec1c60c2b09d487e5672e5a7ba98a1a4c8d0390420190bf2a3d4d5191f164b248297bec98e656742770849e9abc22156a8a214c464ebcdcc0db0a6b77ad29987b6ffa23cf1281a5316c2db1e8a712ace87d6023f1252ccdda51722dbd47b758dd12c44c4c356cd005d42e1a7f1bbfa5b4b57a0fedbbdce6e0ce0fc69d92417aecb8e7d7c593a1d1e74e58273072da7e4bce4f4bd94a03f1dd87d3a7089079ae6caa80a835109d984b19aa30f3e50db4fc91ea93182418ab500a44f521f8ebf7e202388da49472e7442fa407bc6604b8c0954a40f9c543a55a436a2eac98dd454755137602021130a9e13cc5107a9f23fbf9d1d1448a60d09fbaeb7472ff3d227df70964cbbf9bb0a35780cf7917e54 -704:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf -720:17d8ac181eb03a99368dc6cb4a8e3b6ed3b8ebfa2ac6e0f988243b96066031261827c3964295c33a20e45ec4529509e8dfb754c69e5988e7b67a737365980184e935fc8fe51b8e5b9514e2b61283872320e75a43aaf92bb9ac44dc0774068d3be4a1497616d5867321e03ad9e440545b82a48bf5a185701f9683ce291757e398e9f4dec98182493d977dbf57529c88e6c88ba9c92cd6c5af668d9d37c99d85cd11e58dcd6b159dcd1c699c302df95fc9e60b651bed0e571ee6db8e711d0bc7c69e52706be5a181fe213b28c70d2ec92d45056e29ff2314367c1695737e73e75b7be408cb3287cdca8b592f83fb03870ea88343331c3b02f0d91552d673d41c2957be143bd9dae64eed6c71ac8d4a8f627112720b1c5b95c2555bcc4fe8727fdb650f3db80a9c18bb8fdf885efa2cfeb4b56a1f1e78bc670c44fbcf49f84daaa1b9b1c943de2068364674b51a389dced863c8b4950bbf1e706b9d5132319697da0f5714e0380d8d7411e650df78f2e875c2178105f86dd0b7ff49f98bc61115e6231f01954c3c73957d8f26469b9b12232aeec1a592fb1fee638e02c1ac8c795a986734e896e79ebb510d9956e6fdc2421dd304c7fa11db82dc05f053d7fb0b9b77c368379245c2ebc3ff9573548985eead364f65d7737c84444b020b6875b0c845caf9e521500143f732cf13dd493a7fcad33299cec6ef50a088a1ba6aa42b9fa1bcbae6068debf5a0751785ff646bf79454242f784b70b6b36f8c7fa12469faea65dcf2fb8ab7548893c725c139514c0a317dcc6aa76241cb76230e9daeba2853d3aeebd02901038c53c08769abf5d3738750c6f2854071713ea513838d4efdea23f13ce194ab3e3adcb5e66504714ca084198c4fac1ed59e0e112030142aae46f89772a2440555990d659bac5c05c4bd6f7be52de389cb581f7a381759749e103fc184ef880bf6d170beeb5c931ac02ecfa92321013da446d89d6ab564da6d7865cda50677ce5d352ca93bdf702736 -720:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf -736:7d25eb22236666c1574748f0fd631c8694d573df66e16bde87491efaba83b36d389ff10fedf3a8fe4689d57826f47c5e0eb47119f8f6e61c589602762a6c3a7c3be980b9a271f721483ada30887e5dd6d75d906511b6cf422d41aa7adf1d1254fe299aa5faa1be4b95e63f235e26fe10dcb60a189ae415016c5484989a7d32f51494d9ac28c81822eb2760ea734da2320f083d3c2a708b4a68569073b11e634977b2aaa053b08c4ef1c11bf92d4cd9dac7ecd913bdc4ce70a5c9f0d559cfd98cca12c43c8102a9c89349702c173defef8222b486c2fb63e2b0ea9b1a103550cad8719883f349c9b21c135df1cb84d3f5ece4f153dbb661abaed30574c53eb7922a72737a92d4baba008bdf983a56bd58789242f4176e3c65031dc2a418b32a7ff53f4557cda34583b70710c6feec420938087728f9692c21edf00c6a8cb6487d8f51dede758835cb716b383dbe90fdd90478687b1da45905f0ce5f0cc2765c0737da9810c7ebc698bd2f00d0e905fd86bdf9bac5ac7ce4af90cf87242356fdbf3ba0cf19e82daf21d2261363e8b30187edd9b1339f8f48afc8880f71c06bd59ff7906e2847c5129ac20d2e68622b34eb29657fe949ab4953232efac5eb83efc010aada059a5073d8dad10037fd586ac93dc5417c916073765d7e1eacb3dd076f22809d06dd6b0c90bd776015a8d769ee82e9963c6153030a845131c9ce8f8642dee4fc878c7d727ab3982c8c3394482124a32ff12684991fb2114f7256eb3421273129905abc87de9b27a34009440f8d4537c8e6df11209b7289b84ace6f5d63677fda318c8f55f6535c270bc0a39b9a1d05f459db316415021cd90a476e10a342499b88181c2e5985902f761654380c59cafa90c0ca056c058daada2de18fe6860a4a5bd860bb50b348418f668266d73551d38c771266edf1466dd52989f3551f45e3075d9bbb8c95d8c8bd0f062534bca370c0ddafeb08c51781126b785a176e9410b054f66b584c4da0777970a141598adb1826d6f5038da6f25f013fbfa7 -736:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedf -752:0c2ace6d4227b0314c8c9b39c2090541759f40f9d5d0523b25f081436b9982bd8b2fd7db50b6e6e8cf5ed828854f549c6d6f7b768372e73dbf7c834759b0f01d3a1ecfbb6d19b3ace85cb643e7d69a9af7d591608f266cb347298eb3756da5b92188c6d9e1dab31cee666b5dd06b3077a21bbd14479a35701bb5a21f80417a49cf36333b4da1a7a1871424cf6c3b90a0530c9746d75977b585d6a621d08161a3695e56b569184f8bc7b26519505422f220a4f2e20d5b5dafbe24a0811b675d0d5c85e2180ba194490f9ac758006f23886abce9e06d42b8b7519eb2c77f2a0545fd7b36ff0f15544b15ce100ac7a96ccda5b0a9d7b657f93407c86a9c58e08aa9ad13fec40601d9f7c79225ef8b8b4029f4d470d606b3e30acd463dcdb45c50a8b1dca6063d56fdbd05326a75e6a16e8b6fb41c3030b8b0e613694e8b877662a3361c95f0534599fbfc9a623fae8a119e98cb8068a911cca7c4edc105d65b5395d9ec3b75cf73fa4b371e3319f241f060b84c9760403395913abdd74bb75fbe4693232a853ace148248f218e5e0c175ba82196fd26f4c478014ec08e5bc47b599b6f42483668925d7e45eeb59026a2589d76dd2a6bdc23c292162355938f4f7440ff5eba65c946adb900f1dde05a85b0d82a84a2ae9585695cbcce85a88d99c5f4fff8e153d947b973766c9120b5d1fe2d6e3ea9fad4cd732e3aa869d0a721c188fdead76d98d37a4696bd968e23f069506c525f46362acd222e845cf4c0665e6369c4ca0822eb89d3711b070172485d8447d203f80cc82a174945c094f5e9659fc7e3069c8848efebef09dd3495b06d10a659abbb363b78a79bd8bc2de1beecee979d2b3b504a054c66a98393ab0549311337fc121f3728e6e8821be49820755ff578b3763643dd7f3b54b4ba694609017849c0bda642a49e4a85b8eed67cd9daff10c980869d8e1edf95476e79c5475110d16cad3c271b42d4809c658c2a0cbbc5394fc83dc416d255f814301b8711b91605e73b744db9edcb87fc6b14cca8ffe14d00719b00c4f8f53b4e825acd6b9 -752:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef -768:a96c69c3bf2a4bfe67bc553c6028bb5f42ee4178f87aee7535aada824b72716a40af3bb5bf039f6cee5e4524c424b15dccd1ae02981ab382a6070fc739d8fd5666e097ddf40b0142a9ffcf069445cf50db8c08087d5a78421f526922e7e79bc2a149e585075720c51be341d083e9dcd51aaa6aeb69fb08346e58269cd895ac0bc2fb3291f74a6d71155150b5bbcee52ada0d08fe6e4afd2d7e5bc7c4e18846edf2be939bc46815b68ced4532136bffdd890a83393f75653bd983f1ce52ab699b75d0b7c3293e398c38048e778f42aa988b51fba10b6aa379cc1abd12291eb11a910f927d13b7a74b725c27db8c9f4499f3d3b0d25f2d8738280b73ebb29790ada6e95ff7933a189e34532e3124027e9fccabf23ec6469b425c62ba4e0cd68177c555af0e49bc3d48f4b8c43328b57bdd47cc2c1a87df7764e25d49395c6f353a66b42f41e3bd1bc9f6ba84724990d1978b34d740e0bb84a8dd46edb245259cea37aa1f46cb8fe54802b65c98986fe9dc61a03aec493ecc2b263682d585cbf4162d6a9a7da7660fbe37a2e89cf1d4dac38211cf3cdc0554676e18c1a43e93e90c969da7c1e5265238d55c9cbb1563b07a77535ae14b895c5b020f3bdd7cbea272f79e5a42e23025cb25aef30a7e0cd43d01d93f6dae36c5ccc52d16e9abbbb65928e0eb97d83c184a8e181c9d8430f3d198dc024d757ebca4dd2f011863af893d4b25a434e304f6db5b5d46e193fd83404bd97216c314b9cdf59b68eb3272789472f0e0f077e98fcf53a9979fd08ae339598d57a0e59c0bfb7c6898c042634ee7e32f889eb07f5b17b568c007ba55d05cb33f554bec6f7dfdf165f49b659d3e3af859fcb3024f6610b5db6b176f250e838fe4ba8c21cc5ea2472851853702cba5ba99b17df0a47ae3fa0ecb36099c22df6782f8d45d910ebb2aa701c60af0d55da51659da3bd6054afe5413036532741aeb808932d10a4e5af32ee9b28b6c39a5c91371a58de8c4220f8c65b0458e764dea847b07be78c41610e02588f604733701255b26a5e9ca572c16f32bb92115c078bd76cf270aca1a56b283fb9a67f2f8 -768:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff -784:21278770ac93e98b0d7a4a5a2fc7014e8cebba97b575c45dc3beb9edd7e8a07448639bc285c9e7a98014d2b40c2cd33ac6f14d18ad1ffa5d12dae454527ca8d4a832e27e0c94d6b870f77e3c11cf54bcd8a8e49a2edc6ce8e19bea61c7bb5ef4f75342d3f2dc5e694df575ca778c0246da3669553eb58c7da006e4faa9f58d530da166a051cc4bb1ca70092bc58a07fc0cf668558e28471f6f83bb2667e6b131a4ec76c291a027b7a563dcb373ae1de152c17865e254699f5a88662621cbbfae892309cc2f06eca8c2a6275c7a65277b63266b36a8eaeb31a3b76e0cac01b155eb0e7998c30f3c7cb9556cdf1496108fbc6592c2ef7a3bd57a559ce9d9f8dd30e39e223a8090919c302a6d703600ec053f505178e83af97259a5eff1b222ceacc74ba6ac3e46097bb62cdf8ced6b027c68e60f76c222a6957284912ebcbbdb74585c03e8867bea69de6bdd68566873e743eae0857448b03b191890e791529e4e2149f88130ab912bbeba27ecd75ae44d6554e33bcca80e9161b285329694dd246d0b146d8a8918ef68ba5dd49aea22adea00b4dd0167b9a4a4b5f18fa684bec7c7f628ea7832ee6fea16b20ac303fec7a8df1bb39dd8448d192c19e686f90fbc7493898a801f0f231603592caa5fc5e562b737f82b89de49ee5f2cf7ec5be61ad8b145da0f9dd2fa0e6bc6a0dc17613c48f5e1ca260d35fb9c807e244dda3372d61f0f5988b4f2cdf703fe507cd932ea0d0833481d2bca2dfdbad4ab50efd08e2e63a29eaf1e4155d6bc80f1a665c4237cf40d331ac1d52f29667c9581d5a66b7b6c629956553aed47dde70ef3492be6b4a9728f57469db1d3e830a6719533d757f69b6f400c7f6636ee699f0dc06273d70b40335792aabdf8101952f9eaccd40ded5cb911bd3e55d698b7ae4937a619dbb67c7b02fdf67a97253d0e0e3ab0a9e24bde2046ba82a69b7e1bf32bab2fbbbc2b02680e1c2b08c1099b661f5bdb2ebc58fd39e82c5d4ba199efcd73f8a1843fea9c84c083aee456aa811c9d6072aac9868d61f3bccc40c7b1a3aa470296c4ee7525ff29854484a05485c327186394dcab0a9b6fea8a00bdfc5ad667b85c66 -784:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f -800:09a0113a78cf09a4a7e8ca519b63004d62f50d84c9570e7431e4a9dc1e7f9b2943374fc3a83961efd9b43c6967d9d3655dad2a1edc70b948c3ff10621aa60d6739da0bb75d434f46e251963be90121c802eb02b78560a0fa57eb0f8b7592caf2a91928c874573da9b859c85c3b82b93bd427a2e1a98ea8fd5337da73f456041a01f824bc3d1042f3dcf73f9c8809aedfabcc982087efa1953bc95d3b33a4627695839badb2ef5b70353e1ec2992b07089c747dd4614de1b1f273e8a22a5002b87d7dd2b92f7c9c5fa3b2c33e4e027e6bd93ca5072de8f918bd49ef3a8191030e83f104ddbdcc0e4f98783397c4e1d2c6fe009c4f2b0042e1c16dbdbb35f689dff9e793496ac33f6c96f70740a2bdb18688fd9b9b2865cbd4344c2a54ddc033a83ef3d134d5c8ee785f9697dbe28de6fa034caff78919b32af62e7cae90cb5b709e07a6ca844959fd5e015daed3d8cee560c1dc95dd5a4e1b30c03569fe3d9262078cbc48c294ac0603325bde7cbb9def6a4d828eaaf68059eaa27b50edfe83545fc7d2e008c046b912719fc7d72622fd73b0744ea4e023206f54797e7b36bee14a4f669226349d6cc2b5550f4543bbbe76e43b1746f52cec2cd735723538a34c9ab54db2edd22e6b163a4c5dbe7cea900b6f1cdb8be7ff25d3f18f2eec7929a4dd3d475d6e526c8644430106d02ffeb300d4dbb19f1f806c750f1838663ba70def27ed20f16515308ce942fa1ad2e8516f5df37751339f6a9a5835e8e848c257d25f806c5d5e0562ef2c96a541a8cda5950d107c23fbfd6947d68256fcba0098591b6b57418919c23d0ba37b2368669fe2701c4d58b629be2661b5f27d2b3de75fbd274c2d626350ee6da7861e5d033fd1905da0c1c72ddfebe92af2e6a6c7881f6a98c4b62057478d4173c6ac8d31a50ef01fed21177bea97cbf382bfd0ad1e5fb5b4a931f62dd2948c3a2b94ea5b4ff55e80187ad453c5b8c430494651f09acb764b8c44d47305ee22dc1289377481cdfd2a8664cc764b0982ac2923a485db4e8f7ad35cd08820f5bf854dc5089a077aa92a2f175c3f1771b14102c52bb2720619ffa98ebd94ff15ed62b8d24f9e02dd8b8f454e0d8c74f133df512cdbbae7 -800:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f -816:3563439e39e10a74a84b204c7e3aa88695514c2c2b4575058999b0b2acf7221ebc0efafca23fee6dfec9640a6711d1c5fc903c99df596f43c8ddb919116c3a301a8f526d87b94b41c674093527db68aeb63d1705015d4c5f14099e258791ceea5bbd1369ae632cfa42f5c6d85520a5b8e3bf9691ac41bbb7569d44ab7af84eff60f633fc2be1601778ddb4f8481f940ddd8432d1aa898d2841aeea92dd4ae3b83a2e736454a8e779ee7b27778fc80b35a2c23d87e4b9e3db21cd549fb46fd8d37a883d4d210cc4336dd2aba0501db3c7ec53c5fce208b67b236ce3a446c036872ffe4251d455a444c00c62672b100de3e40118115b82ad2c516c30e49ebf2c3e8b16e1ed575e1c6c200c95a1482d89f769f14a2ad11877cadb3cd8d8ac0e26de638295a4d19d900d0ec6f24d97035e61dc8f4a5026269e205ba1b3bde1c431d56de4dfe0dcb979018ebb0e075fc712bf0114e3788a7cdc7ba93ade53a0e08dee265ae8ed1d6345cc2d5fa931c53e14dfcf3bc61c4803b3e86b702cda53efe0f6f0c9c2e1dc6e754736a276dabd46217b98ba1063a7b041d8d2685d9b36fdb441d3a23c60af648ad504e8c00301eda5b65696cde206d549fcd9822745aab3079d116905652052993e28b89e01a53db7ad3ab4756b33a024930a2b8e4fd39dfff919e8a3ff69d1f09453e0e9662b9a86e9956b65cc1e0ad33ebfddf19d13cc9e2aaf8e6d2c416975ab56f6b2e38c3bc00b31643e9062dd18a39888ebacc284ae73b6b9aac6e6b41e4fc4aa2f0a3c8a5c89e40278ec0649187e8a27b6240f8b68b67c84dc085cbdeaaa0e98b18c97785e8924d6b15899496c1079368dfce78b4e1321cb5b223ebf963231dda79a9c3b2c6f4c84c8b8f6420f474eeac754eaddd8c2b403b5ec2ba9bf133da6319e2a9a33813b94db2d4dadce0c2843a32ea06f75fa9e73752c179d8014def50b102e2018f3e46d00373660a2beb7abbc1c73d352d8e163a0f6cfdbbbeb82634bea3992efc2bc402a8383df91f7fb2ff0b7e5b87ba90ae76f920c7028cbd77fbfbcb6feb1cbb8656e0271223034edcc711a37a5e3d0ea3fb4383a5c2654bac15ce4fd97caa0552673a7b7409ed209ea47e13995467573dd8da2245a5d53223cbf3a1645a0de -816:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f -832:5d06971e1b3999c61b8c2ad2f6c69cdc1c07f5dc736daa78838c68127564bc8925ba600e892c04045667448c9be6101dbcc99b28d8fd809d31c2c0f2a0ce9ee430754588703eb7ed65dfd24f316710267885dd6cbace7d6636d3ac7e4d654b7fba954f2b4dc5164f21e6ccc3cffb9f430e3b673a7c64088adc8e841ee3d1d83b475808992588660e8756f438065f9a93b3de2e3ee0a5229df17c830d4c1a1e3d72e829eb8d77fca6b4cabdf16d0dd00862a08d899062b9e201b38dc0f755f08658a85ad83cd5dcfb289cd2ed3e2c5e4f2fc1097d5748e6e5be88df37f58696d69673408b21b8ee1fabbc63332053c206e54209aeff02bf2c7aa39634791c5d44b9ef2fe117dc9835dd0fef1e18dddfb03ba8f1819983fc7bbd9176e663bfe291c0b655b64d6d520901806a44c670e16bdb551bde314212ea306f440cc3c1ae5fe18dff4d58c595fbcf2abee582344f334eaf7c0d06faa39c6ff9219677675c857254644060f3117cdc9e9574c4af13d2b91103f92fe8aa66874680be0e31f52f7df722523068e5120c6061b50a84599c29fa33403c1853e393b7f971cd94633b9808e9b2b487d2f818dab80399d74dc40d6a5a9f9f0ae86e6b3a404010755b6d91b283bf96eddaac4f6cd918d37e13813b1b9d5fc56d9f6c6b704e845e443f2c7ff15197bf3ad8780a53a45dfd434cec61d6fdb148d3001f6d4d1da11b2440cda7cfc4ecb8a4dda37647b638eed69d15292d4af489bc7207fc562627a2bc47f30a1723a19b956a6747bbe5fef13fb83980730599adf1c8c79f3eb8f8bd16f8872e3d011d24967d5b4df53058bf6d850ea352823cad19a0b1e60c0c2430b899530a593d02721b1015cd334356291ac48bb34b840c8eb2eaa8490e31f0fbb40c405cad0a4a7abb1969a4781d45b39ddf470719909cf853ce0854e4ea742bee2434c49c82cbec4f4ffd6d417751acf04c7aa3cf806a33dbfdbd4b622945eb65eaa698e2ed6e648e068bb6ee917d72f7e1f0c50a96b9f139925ecacf07d5823772f79ef5a0bbe3ea5030b48a6d45a96cce9112ca45632c58629dc7765402d180b7ad3b88e72e59398e0256ed406b5ae58fb91d7263064b78667e37f1bae38d4565d90005d29c2dda4d8421f46671a83e6d457f4843b1c3a40468fb92271f1b085629 -832:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f -848:7425c506e34c1f7f41351e6a836d712e308fee8e9b07b0ea43fe7c91aff8b9d2ff367a0e7427d06ca131e396ad7d8bee4d92849deb3fbed9d3b4c69553a85b537b10f671fb5bb18e2c0b81cf3d8c42511db6f70cf8339462d19e0f17872ba0264ebf4ca34e87ab2e633e63f88f8fc69be8bed9638f5e8a33b4ff4b50408c5b640505069e862d3f43ef3ed5fc691b9e2076c378c32a3d92668d169aa44be6ad4259601528fbcea5fa5d48fba49f830f6084481b920e9b9c60bfb1d36c92f8bfba1cd03f75d77c1e20af32457d64a148bd0509fc25b9e50739183346a1e7012d9dec8e9f7f83a48a745e483889c20fc88974cb2cfea5a271a3a48155e23d2f27ff0b9cf92df0bfe67af2e0948355206f2a28b6e984a211d6e2d9d4b4dc1dbecceb26cfb8d61bdd439fa7908c8377e75e3ef38caae86b49978d287463d139459da625f80e5f90b4b210095b29ef9eb54744f9c0e1b409d3105b5583c0774af8a1a496559527b0d6181fb539a1ea5799e5e7b36264024983803fa1c22d5f9fb69ddaabe3b86b67f1a1e28ac4f54bce5095c62c34cf44eb9b4c7dace34efbf79bc064fae5cac01a3f2ff0f175aa44b0207b29e4404f058b633f994d6fa2d87302b0454deed9305b9c6a5dca4413deed61b3d0c13c23b69c291a5197842dce0b787361440b9b8f687284cc923fd3c50c1be290927386b757f9aaeb318a878296c95a243affecf5387b6d2bcf7f68f407dcb2b775262acc0460e516d84f3a46fac4f3a2b6f413d57a9e865a01d9cfb1395742d05cd9932169de4ca1d242e6a1cf5c6b230031ceb0a1bfc09fd3520528f11109bed15ff9fb011b13d956b34c06e7ce5f28693f8a4ab93df6f11e6945b56d32bea6ab4754be8c951abf74833c91e362b50efd26a0787b09c5ccd9386d79c7c2c6eb2da20e873108c16a7658f8b765fcdb6480071a0b8624fb0ca5ee081bc2407586aa6bf5b285da6c10070a068e1daed4502fade3ee5aef733fff590d906cb0aee09061fc8033dfbb6f8e52d98223320c17ae6ac86e1ebfac3beb758b80d0818a02d335544c372f70fb7a602668ab163ec0b9ec5d00cf637ed1aa4e6d8e76668d7ca75a418a71f57c90679af483758cbf5940272a901eaf1ca9aa7335c6ccc1399c8d7f829eb7bc9011c9bc71920d5d80efbea91a2f8d94b3389478a81293e7193b -848:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f -864:764b92fd61e99249b6fb085b02c3b204dca2858aac1b419d9ae16dc7e927aa5ba4971a1a4ebbc54236a86f4372043162ddc4b9c35f4ee43a1cba3f090470e80f5dd1aaad578c518da3fa5fec78d464e74b2acde84e5641b1074868356cf1afed14271eaf705ebdb94234e4c9b00b4f88fcb409b2066ec82f954def23a153b95231d03bb4a1c8fde19187b997555026e19542427f757fd7283716bc0e8d0a4e78c8861e7f49733e89d28179508bb5bf1d03d8ccec34225fe5bf26803456f5210b4a009570d5683a83c0f8ff480b4a4f454edcc2cce8abc112fda27595eba8f3a101597dd2c2d53b073816aff654c35de769b6396429bb9a1b4395d08229968e57666832356f43d61b9132d752e9839659d286dd75667eb320e90b0e6352e0834fb7b18c658ca5472ac0909e018f7f4953affd3529154ad883d2e91d56c41ef85ab7a49a49aac116d0051d8e0f4e091ad6f5ac4273e5e56d8dcb3ee0e6e759eb2a7f54d71f20b7d0250056c6eb02b8a05d812f449cf47ed191196156b2e061098205a9eab3fe510c3691b439835dbb62705553f0edd6fe643fb54a273ab3b7bcb37b9a46a6d5b508f0a42679cf11ed4057c87928018d72222b14a38a1d1e1744eb79ba7d7271403b1fe3ee39d76d94665a313f5932795cf66fa08a5b0e61cd6b32648c628ec0ef0079ca74cb84ba96627e349892636f0783976d16e1aeaa21bd20b8b0c642fc73caa1e5d92fa1b412f94ed3e08e21755d608f5e62e38726785daf73306c082a5ac13690a82465babdf8f154f0096736780136856c86c5c63d95172dbac86476275387658e28f612acbf0ac9d44dbb015d339cc05517f5a0c0bc7c7e7748b91df87b6f8d48b8a8921a7d8737da324767390846b70ef4f5aa81a1df8e16c1effbfd8610fd5f815ae42aae521181b716f42a24e601ebb9b95358a77a80ed2e7da8b54ab9359f9f15c9628eec00b38cc2134a671f11ae7bc96da59da73ef278338716dd85a67bbb507b0600f26186dec8c6ab4e5a68b31c0d0501c69a4964644dc0e4f611b603b4accc295c7be7d6372871a5bcc5be78e6f53689c50a20f0cc1b4cade5c3c3f465337fe7ca320eab9f2e6b4fb81897f2fbdd79f2af5641c41f8efb1c6bd7829c2959946a7671ad4e62916378ee220c9356d54205d88d0f32f128bb80824f2f88506c590eb4faf8fcc9cf28afbd391ecce6bc538a5b66 -864:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f -880:29c2f3b2c6bdd1209c76fb6b483a0fea5b269ddce36ca90008cf2cc52cc1e3b382f3fe445523997c1318f50014ce000de365dbaab930c4a8ad0743ba4f8c9fb4540c5ba1296cff579a64b964efd3f62e481944a5c475af35c51394383c80fd5cf37eb969e97f53afcdb4a2914473523a61e8239fd8e441cbb028c23b9a837fd05824972fd9e2cf92876d2dc93641e3500f52be33ca5f646c8013c04a256a71bbb4ca3e4c8ffba6113e34ff2423ee5c623902b47f2a1d8f51bf5f0b33d3c8d948859c9a0787101e126dc8e5e2b5bab6f125605f7b1a3ed85e1484bb6380bb01b44d3b18db78d904fb9f239222926893314d85591c5970f2c287dc78827c3895385c306a6dfe05000f7f01bcabc0e7ea14edf019f20c01f3732e4bebef395834d069582f685157f93e7924fcb0fa4898662fd67144f5b5bd07f8ae60d820a4305151a29e9306762914b579a52ea1b8d6b06e50e039a6b2148dd063c3781db0ce2c0e46f054f41329b57c07e5f571356a29587905be947cea7cb38a1a190a2cdf443514e09fb429a5e8c56a8774ec2344edfebc4aa4088725e7083b9d0908f5b0fbb71876dfd8fa69a0c1ea5cac706c6063c7ec9a2ce986e8ebe5f3cfab9a7bc636666b627d5338d48bae45016c6c98748f852554fff47b0b46f4d2951df9422f839ada5b10aa5c471f359ae1e462a839bad79af26322893533ba119fe5fad16d2cabbbc07210d2cb6eab815a4a74e8aa60332da45a8eeb37916365cf4435aa5b5df3686b299c846bd33412b7f8535e470074a9440702d9f98bf9dfcbaec7c356d8c61077235dfdb66e3493724e93be78c5c114c9e7996733f1c6c618d960b779263c1473b7c0eb6831bdbccccae88a287ab9096f5003a28f9d9026366554177954ab34ac940e33d14e2c61c74628fd617dbb4bd037c5763edfc5243f1c7cd98bed9718e8560c1ede47c5b3201fc47a2ed5507697633fe34bfcb9e40827989378a85f3e4c476f2b1c210cd0940703637ab728614e98f603a46cf5e830ac644c848a5e233349c5d5178c67f51261d1d7ca4aa36e293ef771b61bb81303b4546f1d6c7b84d9e1d47121990c3a7b819d53195b7ece7bc6bb517948cc44778200a7a53b083b1de133e8fbf1e51da9cf49cfbd04773654149bdbd679ed72acab26f301d895b1bd8c045fec96768ba49021fe380ec68ad1d143f26b8d2e873fc8295bba799c953d8b9e0857df2fea790f0d753432 -880:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f -896:b3807844dbb30365e6f40f56e7b1f075d50762f12c64d7a7afdaa7da9b9eb80e90bd263a5977f9ce2fc761627fe447780f59fd6f452c0688f5ace451c9d583111523558b007e17db611961a6956e7d778c74384f427eb54ac2321041e1baa70119c81978a751392b4f49704f14c9fdd7f423b7c0c9b6f8e89c25999d7ef008f5397968e26a769bc172b50974f6988d6d92cf783634c79cf804d59c8e9225a17e7c6fe42179f52239ccb1b865c8d4ed5ec8bd7bd63f8cc1a05d6d652f26841937f794b2c0c8c4903e0b8935b1868363798da983541807debf9996bb6cd5f61974e06953c3b72ec70c6b5c69181e2745033b3d7aabf40d84845aa6a33bdedcd6383f7a19506e65ca18a38777768b1e229a13da5c054a585d1ed83d7a7839b780db663b634132d90fd1c3941f095282c760b21889438acb47ae02b9c2f3058f13186b16cf9c374545c804807ce2ddf590e038633619b50bf2b78a55f6c08483563d267ae84924f8b1b6a94572e782c4f86605446d0650556ec5ffcdcb92b33a9c983b2e4360f9887db8312ff2eface3fd92a2b8bf034bc720ec832252a5eb9d81732ca31a926955ba01e2f28699913a4961a26aceee382e3ca742f1b9fe3f53f71ff12f3bf12d9ee7e0f0de6ee089568da0511562813edaef60f429beb76626814d40854dc91fdf6c27831407113074c1661feed01c7a222c2c468c6f4207f625d0a09e5a4ad07f12388cfce72c4b05ba1d6c07c3c60c7c744509777b7e6feb085a33bad2df5538b4683976d3208be57c217eb5de4a5b5844e4ee877381ebf08f975b47ed1d17ba2c541146802658a14641376c13459764e018d7e6320f52c6cd2c7804d78d1b74e860e134b36628b423bc0ab8e45b7db1cd1f4609ab93878c05ea070cf2d5998cdbb8dbd87f1226b24029b53471f68439601e04b658f4269ffe58b070251b2864298adfc6be0a3df6d1c94ad25ac27aefa0cedd1473e9a3808877e1fa65f6411f82c67f42c94c655f3e2e9215ccb082d171feccc6ea0688d29051d6a80ebd36382131933d5d9f9538c35a489446fc8bb2748dfaf232d51bd4986c3dd5df2427696fde8761c695c12d0d291099e38c7abf0cf2e25fd9523f8dd0ef226d23cf69f23db15e46bbc30cc652ab7140f3ed4caf39d26df35d6628cd39bfd4493d535533a61bfe210dc929e8a6f50db5f0222355ed2ba3f6e945ec86c740648bcef4c9576c327f9cb3ca52612c5b72d8f4b152805e6cbf83593153ea0f0b -896:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f -912:b690948e6fbb6d5065e1f143bd8413a18f1762ae4301c9467f31bb75fc73cad9ef44a6f5d22d9813d068b555bb4949faa007568c86f63663a14df9d36c40e329435ac5baa656796e9b92ba26247a266a9d6cef4618ec1fafb730fdb5e417503a1bd061ccda2f93bcab6c8d0b1e11d9f29781c2ae361774b82b0b097be4a6c0494dfdee31d97591c22422a09418082d1c3689fd8b72828ea1730531665ca7264e75aed3b4f22845cb813bc525d877dfe616278e2041505c8bcc0b3d52bc8ef7335ef655733f263413f5493cd65d233c3f0e276881dcb13b27760b2694375502d9de447501dcbdb380e8fb3d554fa2cc771a38ef927cfd4cc3879e497e86006f4aa3b0e9ba3de6844cbdb0e63e04d83bb124ccbeb91aabb4c6df567ff4c4302a9e8ed13c5932e1c8ab03d3d0d6c6e4715a641e82d15f08de55a818b82c437ac039616499da2c3afc9c50e85e7af23801516961d2f4460ff425b10228c42594e78e05a68f238be3957d15e2ba3a227499ff30564f7c2a11ba00fe05505d0664462e301738f37b59bbb43bf44e3afc41e789211b97005898f8edb18231afc26ef98965df9e38a2306c14b82bd995184bcc1078b36cdcba476980a50252447a4f2a5925e311a2f21067b80b35031d677bf3560d5d5435c1131d0eb9863eedc06095c0ae8a4e6b13e9fefad3a9c9b35bd6adbc4db04ada77e3af55181cb17aff5aef861bd05d7ead1f42554a5bac36cd5b2b89cc10cf2b09072d13e517411235ff0a348894df3dc8d37a1828a5ff5dd31c9d04205ba0cb98a51394359e202dbdfda332185ccced81f451e7a7b79576be0bd5ab571c82c5763fca0ca66527dd9f524c85dd06f522d85de846c111ece570d1072dece75853d72d8d2b76677b53877b9586473795ce9d7b59e612023fd08a163d2897b35480b4f3e2d4daa092daf321031878e5432197133ae6a763e336e570f6e0428ea6a2501aee160b3b9ea2e0caa101927b93edc6dcf92cc38c4688989ede312fba3ae35ccb8056eef57668dd46f2f0ed9ba2d35ad450caa945baf34b8f254a3e0afbc3bdd37869f13745622f30c35f380d62990bb5c40a0dcbf6e13ec0cfb569c2581ee68e16d1cdcadf77a15d166c59b7f154aaaea4bd4287c31f2683013facb53bfc69998d5d35a58c4cd90a3aa3a049e06cc63a6d7181a2c38817be9c4721e346667557bd8d076c1224392d039ae243724dc495fe2ec3f2be06107bb91475f23bdd70b91f86c5f42711509222f29783ff066ea43cfb2933ff327ba83918 -912:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f -928:bc5df364add8c8b84b3cd442f0cc09d2ac092ab25a81c6c57a5a13f62d9fea43c0fbf314d71e05c4eb01158aea19309efb4a5f32de5f311db43f568b6ec9d54383738ce402eb66a16129c4ab14f01ba81bba99ceae83b1e126f89125dbca89be178c23a5a1a8cdb287369321b95986aeec02c74a63fc32d7364e2e49382d440156be2428a3082c14dd482374a8ede2b3756a49725ae7e3148e8cdff15e8f2c8287d3fd7933e88b1c2439c6b8a0147d14c4bcf39a718ce38f2d42108282fe6ff236957fe5396362eb0e0dfd53e25d7b38e14de45ff451f1b56ec05e5d1a74d3aef5f2c0acd4662b5010af266fd653f3d99ea6e0a538655f1709e221392a7c450cdda6adebbd0f13fd3eb85520a7b8b5ed07926a09b763c6075fe6343d2fda48805d9345a3bff442b607e7d1417ef044d82f32e4fc2f8370fc36eee84854c63d4b4869a5b14874f03bad28b1fd9228f2eb648ae562763582dfe198d1a817ba42e2d9e7785cd54cc934045ac9985c9ae3d5b54dc61ffe99646a7f041a5a424ef909d68b1d8c042952f70533d8ae85e677d20554566dff1097d70780da80f5e6061ca27cfed9365c51a2db775be2e145fef14b2cf9bf671110be653f0781ee8d2b77f40e7d52f6928aa6e3f6dbb4462b0707afb354b2d88f1f6e0a9a687c63e2b0275e9309930956e310e37935c8b142af786bfaef99ef4786b0347c2238d8c468a77724b963b9bd04b85766bf358b44835a765ef105a4f71352f00d53aead6b98799c36dba4f73f6ffff880ffeabbb4c7bc97b61d3c8cdb757459f70a800e68980f120c1c5e9c4fd87d6b8d797bf3474744e42d5075a903d7ec24841b6d317d0e266e96b7fe40c1c65e90b65ae6476fbf4db5afa20d930ea00a5ff117766f300497b64edff10fbfcdb2a5b389c6ad4f1a4dc7338b6aab66f3b1c914b64c980572fb858eeb2364001271f7b3d9230faef634455753123766f14bcd0567905a121009dfdd6648b37a4012c5c534fa097f9e5e043a4dc18e924131cba32cbe91beeee1dbe8be95a91e3dbcb3eacdac1c6ae914cf50df6913f8dec3b17b6536df1fcf276b241f8e3ca34ee37f9182ec7beb3965f809780226c19da869a42aeb0ca0f75d6c8e61cc5241b48d1d0896db21ff6dc242604ecb003d6dfd3d04ff9b3ef1262c5c8a39ee525e642577019d69c5c2d0be5872b85fdab68769bc55658a553d1448918124284ee1a32961f0c6e4ef97ad1c19a5f7e75e254f837560b3c25c31c774248d1e48a5f7effcf96abf9774dcec13e732bfbe0a812ce2a4a9b4a08bf80fc0 -928:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f -944:62e7a2ef1ec0ee486b1de8c2d10232ebc0615252f48dc33b7700b64c262849098660a89d87747d7970a029c15fbfc980dc2f780ccf1f3c35283ecdc690412debb3466da444dcc5658b025bbc34fdee1bdd6058064b42ae92fa228f576337e2cb01bd062e5f8a353b027881e5b95aa153128a3a3092a4dcaa6395c59cadfcfc44fcb368c1809cd8f18817c8920e02f18ca7bdd9bd441f4d7a5ba3e3801ca1ab16b16742a77d459055b7fc755e74e525e8d21a1bdc6105c726d5aec9595cbc3b2ec95643739c49678e177165c15a5f7252020e48225bd5b61c0a3021e4811ee6d14a5a3cba357f429d5593a55a58e6b13cb105c9434049b1e86432926efddecfca063e1502ecf33915e00e7e4a03dddfd64ddeec5aeb18a4c6dd054495fe05e0bf83d4d8fddbaf11799fff54fdafd5562d0f0abf1f3bfd67813425b9568c05cb70bae4c1bbd888d3d5d79322127deae89003f857b66d2e623eaa7ca28e75012c669d28a438f1b47d71dc03539f273969017f033cb4037bed293e227fc3d745b26727bffdb313713ad08de751bd9135e8f2e463a1d8b8b8b2ffdb023cc5af4497b0e8dfd19ecb29684a15e5167d9bbc0bcf674a0c9bb454c6e31c81605776af4b640ff35d7a011ed5658df6b7157acd8f87fa505195b5524f3283f4c4e8bffeb7af66cdc233f1af1d9b81c63601eb5863de6d2d7ca892207c20ae6078dd347f9c1464d92f39f55b7a62caa2913bea8e8893f76e92fc1408b4f76412ff5baf04d62766282c23588eae49908c856ed4eece4ede57dca9e745cf4838fd3c7aef6a857a9d9826db5b571928ca1d614467225deb510f4aa24955a00755c64e49d3183715a34f7ab2069e6fa864e5cefcc706633d4543d448ec7a18779cda8e6116bdd4120c0a1f653161adba4c1abca388ae6f40c96d853793e5aef469ca3c57f57f19c09f2eecad6ac0bb687fbb0c71a932fdd80483b85759ba661d3a9747c5131cdfcd7c1b46ab719a0fd2f0a7c1b41fa043177d5187f1cfe9f870a36d7e71f080a286aec0a2c6771e629944551f3692fe91beb59c3fff95470dc42ad077260f0f20912c394e2e04baac2363d3e056d589d763b5963642decd3ff5e345377574e24b87405ca7179e2d6a278089cf89dfe726a3639e4820ba48cf264717343dfa7e0b82a3928fcca98f3e1129837f2bfbd732664583354e71ac115009f3e8a9499694af02edef9d25c95291f206bd931a5d43227e1d0fa1de8ce06f88fc33e70ecbe1b17c5b43a716211f6a26b1fb28a431f3c2ed6b106ada51add23e4eb690a23a91d2db355c880c441390d06a9de6022e499c -944:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf -960:b8616d0a83c9aae9f1ac8ba538c43eae3f5861843787aec8b1189d7c32e072d79fe1f08fe0291740ef058d53e52c08f41cfca7b8d8eed4404a24dab6816003828c083f57152cbcefa411d213211e828efef1669cbec96fbff2f691ae78aebb5ddccf87684cf08d1c243ea7b3c6bac1b11ebe02ff7e1c342e825670ae7b88bcf31c3850f94dc540e6bb9be4ed8fd08113799c539eb97c1342a23448cea9d81a188974d47b6bca7c37dd19b413746f7feb2e49e1f7a61a3e6516b4bd49a2b02a73c27bbcd95b262e57986905eea78a7579b0a01a98269264a5fd2f1297cff5d109c4014c07bb3a98de6ba4490dbaf81ed8c62a6942d7295815f97fac618b3533e8c3d1ffb7f047004ad18cf0278d3d0cc046f67e64914eae29589381ab9b14781c4cf801579d01c5d5472816a6826982d5a626ca4d4404a10bb882b34083b4d2a1be756ded346c2300705c27d517cd2bb607a7e2c2f1b209a3c0ae4dffff1de98f7e64848ad865354919ec5efa517cab15b5f109d2264fe98b019b01665d5e4a73e98afa189699cece78b2ec97925ce99e2a2e195858f7487a199d55eb8ff9a69b11cf958b5d522a23c0bd30e6092e191ca4ae702d21ca3fb0823c57de653a93d7942c7731ae7a530c74fcc18f064f53fa507cc13608625d723ce39bf937a969c68f20c4b8aaba3869e12dfe4fe887d7cdec7d0c6efa9bfa11a949ceea5e16c353ea4f3c834161d3cf991a73d750e32ea75cbf15674a488028c4967569534cf17f587b5cde13d0e39614c46150d48572522fbd1dc4f4e7671b40b9a9c2bffa40084791211dd9e4fda25aa547ca27d6f68569e1cee1333b6fa3ebf7937aa6765a3421a3bfafbb605f95eb5bac77df9530a6a75f87c8463ef1733167316b4339ab8e41d3fd7dd518ae7c28c043fa802924b854ad01e6b2e7166e3f1966bd352943a794b6f4752beb8122103913a0f1a88d2f3cd8a210a54a81b991b3f566b912fc03d133c4fc55537bd0c9095678f7558b400500060f01c179bb9e998361a6c4c140be88070bdad79d40984579cf663db9e5de3d29274f1897d4d576ac3b593343e6d618e0747664429e7c087ce1eeac4e5aab827e24f21ec8a1bea9c0da9c41859ad2b09e9cfbdb88f426c66bb5dcfac33aae44976b8c567fecd0ec0549612d74f1932a571649198c736a602abf02bdf48bdd1fb7677e9aba0dab07b8afa973e1bd50eb9977f6d4779c24ae085ece616dcac3a0c8d6923aed9dc256e48a08dd33369e6bb9d619a3410ca5766b6cacb1cce1fe5dd2119beca4af02889721b0e28b3ce2c14a746a84155cd66408bcdc9d62fc7999eed86d1138aa4bdb5e8639ac2492 -960:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf -976:fe8a924f6b473e4252e8306238646b383cb6cc6adeb6c472314b1c21b0d651e2864e875d4f5c47b9c8b74493b153f6795fd0265e9022f93ed363e9e4439e233f4298d859620eb269663a3094ef87a65b8568e8f646bb7a94a9bfb666c416486492bc14783cc1d32a6def86aacd4fb3e808785f796cdb3c67333d14dc611b043ad8d5dbd9ebad1b18f3f243bc67d4578077872de81f660d01a9a0d289d24d224ee33852ba898da68b74612f7140d3151f6d1dcc4304b1677a46f623589d3a1ccf61434dfc23d0fc2e31cb118ba4d02550b0057a261e736d8cdfac1f33373d2ee932bb6c07d3420f5c1791faab4e61ae17f857d716b93ff583883a834e6d878db98fb9f2abd0b1641a8f3904406d536c480f1c6be78083b745f1d8cb103700911a4c8d5b9b8f5a1dc5dcf5cbb021ed9f035ffba62f2bb1ea524e4fd999aa226980633853ff20b4b7094f3e8fe5913b7bd36259bb531ec1a4a41336a855cd8d8712480b380af3e66f8eae13b964fca9b1e1593ecb904cd6b8e1daff2296c268954bb6baf1211e35280c3d0115374055e0dda8a48486f45d1236c04d3e3d24f4aed948bd5467df2468929840ba0af1487e96f8883846fb02a6a20cdb3ffdd280a534c0f4d88743694b8abd71b24ad4dcb7ca7563f01971815b785b4d29c91994776b8a4fac9da0f9fc76488d8016bcb77d927125bd86f2127b85dbae52b0712358908a75f545c83ef81ce34a5f931504ab75b0d1aa12814f176ecec759e9cc8e21b2e92a3e2e6fcca56f8e0c6423e1a93e4c856316d7a6a2cb9ac4400538cecaa9ac7868ce99de9a50dc7b5bb7707c959ab0291708e83395bd142225261ea222b9ef58614f5208848dee2c97baa86ab3e390658803e0483968d6f2a067fbaeba311983066b9032f99cdbfb4d767729bf7d9148345724462fb868297e6b325f289f00bc151110f89d5ea758e9484eb26ba3eaeab7156308740ac499414b5d75d07fdec78843ba261a8c58d03609668fbf55d4ad2eed5b0ea4eca805d633541bcd6e93020003c6ad2cf360b03c71c32673cb34130f7634f8eaa459fa8bcb56f4476738b49aa9c7569672f0a7e58874e8d2b78373150faea04648c08873afd27530b04f9882f9921306fddea77a186605390f40de81efe5cdb48d6a25efbac6f6badfe7e2a7eea7d204151febdad5687c228f22ca4fed8b456cd5a7eeadb750ff29cff75016d8e5a439b735aa9586244300f6f78164b10f27cf311e46ce86e4a387ccf72e277ec6eff71ea62e783bbdf20a4f234d54c0e3d8c24d1fc3c9f27bb5c160d92cfd4b5e789a0f54335f7b16b7226877ff142e7a396f087422c41ea1424c7b89f7b05ac5f16b15ebf37ae8718b511b72 -976:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf -992:af755a7fd216598bcfec0d1398921f87ad8f9a4aa4418a5bfccf00bc9a710a0669ea2cb17cae99ad9a87b731236847bd642a3598c7e590e0135d0aae144d288fa1426ab6c50bbe70a27b72c793dcfddd118373e22ae8f680b0e8b10a3cda8a334a0faa389f56b7807c05d6cefa9560b0467c1ad10d29f83a5c07d6c69e8917a4aa4520cf42c7156ccf114781ee80bf2f1558fd9efdc9f9ef369b219ca8106408d24b6bbf851816e8e0c989615fb2d4c0854072ab3758ffa22c69185d5ff6920cb62fbf786b054353940081a55fd81979b73f5808a9cd29b8d3e4c75a622561375e95d50c2ffd61bc967b1295c70d8c8163c80cea6d6982f9a72db09495414a99247b24bbb64511ddaddb8fae455816d7c12880442001e8d0588180ed69a9a84e975b93659389c986653e8bbee4332b748ee40d8e1b556d05da8a3aa1348972036fb2657f29d044ca0ed4d8ea4030a1b23d0e973958806d8dc806430deabb64d5bd75dbcf2641a6d2ce92f297a8598c7aab436c1485074f244b609aca470151e8f3d54102f0d4290ba5b7722758a363c873fbc88e43afb2437f79ebd38990f72238bb865261bd434f9da58c0a54048494f0746b9690a69510361a02d934b14ff0589353828d375741236f1b45497d8afc1b479779e4f724edae20e2609764fb9613305d370f16afe452be289f595941981b451b4180c7b4b65843c2d99a75e4332f1ab83f8ef22827f94c6ecff6b3ec136033d4839e3518e1f76d734910556bccc0394bf619e209d92275862ebcc19d8be4a68ba52b6ef05db9ce497853bdb31764a351d2d6b91e0f1680b84d154e7f3404b97a0e9643188e27268e73f0740e9ac3c4461c9be061970a7b4a77db5bab38450b4fd0af274fa8c4283b2e95776c63d023991c8b02da1aff122eb9e661bcb1239d67e516500ce626e2000ef9767e75843c5e90679beee9aac3328defc89dcc5da2b7dbb76ab1dd6d84ac22f7e05d9e515b827824482c115d7180cc1b9378fe0eafbe34b545fa52b3fb9a9bdce1e41a80b2f911747f6bdb279b140cf12507fd33ef9eadcafc7ea5dc107a3ff6745a30c12d8ded824580aaa274e49495f017435979940c3a0035be77f29e099f44e1ee82b00a13729b2b90addc549d6799c388630ce7c42691b888380ccdf5cf7a701ccdc3f3422a677dc7f7891140c7fbb5093626349066a7720a4c696ec590fb74a5ca7f6b6774811af33eed78198d5b8de2371a9aa768b789cc0ca1c381cf4b70104204fba70b140a87e6093f15b02625c7b90ac215c3b318c2efc85c5e9baa06b52e426e2d3207b638f28af2814d8bc6dd29204e1d45823e6bca114acc39bae9293bb4b292bdddc457502b6dca9a7a80ba45f528a2234a166924d62b09cbbab14f -992:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedf -1008:425b0a3543b047574d63f3513c2fc330437067ea9e14c24487e0fed0a5e5ca8c1e92d8c5015e4d25fb6bb9e7a16b6f0fd54782f84499ea944ef01b05053c004c730c5e229523bd7e017dabb49487f4aa6d93e580d7d5d6f05316f39a2f3fbaed95b615a83b39a4106dbf127e9d1a134cd65780cd9507723e876ff82a63d96c16a50ec0412f977b038e0efae2fcc1203da3ea4feb029a5be2bfd502e58d1f753fefd49bd3c67ed0d79d99618efbafadef0b47327803ea099247f8fb17f7ac8cc7ca37a32f5d1ee27f637db36d3c171af5549f554b4b9422f8bfad644ef9dbd47fc868ce4ba9342888ebc8c69728902565f1b520528fc73dc2bcd7d516d0a4ff9eee95069f487c810efc38bda54933f41ef69b3a39f28a19afaf758a5abf173f7544dea90596ac9eaf6194f26f444ad6f0feaf9c6cf1827a35eab9e4a44f7bcfa085dafd83f5a2ff66b73f58e7415d906312749427ac5625bc70f7b58dc78f2b0153c83f2d2503d670b9da82df1ae7ff567f80464f1a7a7ffc2e69ccbd507fdce91714691582800a07694969536d86f1acaa4bf4517fcfb631f08732a9234e17154ad807d0308aca397fdb648dc49164cfaec222f6a911c4deefa790738aaa7a5c94f1668441c20bfbf7e1a72f9f45b7e62e87214194c9b4e9a4e68702f91d797076c9268dff2fb1bd84b4bfab3af92bc7fbf21610be8819bdee42cb40515676c4d82561a41d930b34790a6f744d05c599256bbc94adeca9be462ee24fce633eac239ff0d1423a51c475f4a51ca51c570293988113c64b921b7496e5a9f0013578bb206819574ee4fc80067ce33df536a8a7fb6b54b16b719c547257cfabeed00c18eb120e019c09e7d275feae4076a1957035e05f9649dd93bec3e56a9aabdaebbe9bc53af637004f35f029e75b44a40989885c7913574fbe040ba059524044f00da3f29d0f6eab71b8508c5693a8401fd0bd0d4312d018b9b26cd2633ee477585affb5a2be73f156285bd93905a227f6794138e18ecc0fedc9814ba806c0bb2087653e02295aa13807908d968d6966c7ec21c936c877b8ba6a76f2dc367dd1b538c0045d211ea81d286a8afa147eabea42802fe01891012a1766551abcdbffdab8191b630c6a98ba91cd9dee647091838cf31454fa7c877418fb10b19ef905408c47ba1115394fbd5af5ce362b1f888124043a5fd3fc78a041fd7240396d61d2fe3fceea37488065b23d9b7745cc46b1769aad936ded16a4fb73b982d24959ea0ec38f6d0673b1e4272f0da01512cca7d2e14bf2481c5fcb37cbae35a95fa417b18b1173413a0d6ca1e548bcdc09b070656b98b0d6a05fac98c986ccad9c6bbd17881412adcef7d041550c753f26320a6e296ac0059ba1b91015bce4a73a7749a3dc02efab9668503d20f492d78be481 -1008:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef diff --git a/src/libtomcrypt/notes/ocb3_tv.txt b/src/libtomcrypt/notes/ocb3_tv.txt deleted file mode 100644 index 8a867e2ce4..0000000000 --- a/src/libtomcrypt/notes/ocb3_tv.txt +++ /dev/null @@ -1,284 +0,0 @@ -OCB3 Test Vectors. Uses the 00010203...NN-1 pattern for nonce/plaintext/key. The outputs -are of the form ciphertext,tag for a given NN. The key for step N>1 is the tag of the previous -step repeated sufficiently. The nonce is fixed throughout. AAD is fixed to 3 bytes (ASCII) 'AAD'. - -OCB3-aes (16 byte key) - 0: , B314B579B54365D9094A8A7544FECFA7 - 1: F9, 3E49FF310B88634BACA91D55DFBAA185 - 2: 04B6, E13FBD06086CAEF7AD042C93D7BB6FB0 - 3: 5E9389, 04216D3227A79ED90D60637AACA49318 - 4: AD4A090A, 71FF49510C87EE5FC004162F146D4C1E - 5: A3D8218932, 5AA9FE79861F6B5BC8F3E238D0221388 - 6: F8FADE0FFCCD, 04FB1C91F3B23E58F6B9614648B1A653 - 7: 92C4F8CC40044E, 232C049DA70A9AB4B6B3A03B286180C1 - 8: F93B1744D7C77AA0, 21FBF572E7FE551ECB5025BDE9ED5984 - 9: BA51E012FF90E40800, 117280C3D04F2376D4B2F020AA661146 - 10: 71CE4295BF396C6B2338, BE21F998166D7EB96285884217FA8086 - 11: E8BD27F4EE71D7C8B92B32, D6004359B714792C44B1EF5F9CA04F3D - 12: 44F561EA59DD0DC2A2FFF982, 6AAE8B19D5D6FE35A510E53C35C74AE8 - 13: 644B54237E20C68249B4FCE531, 806FA9F25EA420A8B4CAFA7620C7256A - 14: 2AC152EA88E036E58667960CAA99, 04351AF74BC428C37282EF2A85C85B08 - 15: DBB19579CA7E525544CA6893556BE0, 6847407644710A2DDDC128E4C7223FBF - 16: 457557479FDC7F70CCDFDDD53EC950CC, 8B9C8D93E60A881F625B82E200B021BD - 17: C07EAF5328D338CA4601560F513A2A4AC7, E882049660635CF0D13F6058773141DA - 18: BDEAE23389E05F719CCD723DC972F2C884D3, 0E40806F30CF1F788C3C6D10B89096A2 - 19: D5F334BC7A5196E460D52F89E129F33D2C9F91, 00C4EF195CB474CD880DF1B6915EA357 - 20: 74435B9ACFB72DF8D67DE0BBB2F18F34EF1C5962, B33A91F1AFEE65F56C781AD7047E55C4 - 21: 31618C38EEB4A77E0769131E91F4814C7DFB825409, 8307F47A53FD8CB7B82211E8121738DE - 22: 45ADEBF8F29313F13C3919A4246C96142485B58D074C, 268C4072B1FB58F0491EFF34756C1250 - 23: 2E11364612BE88875F506FD6603CBDCCA10188B3F6BD79, B782DB9E311FA0C3F1489DA839CF37CD - 24: 565DB17A001D87FF3B432D80CB6DCF84A389E306845D4BAB, FE514CA6EACFC08D6CA02D4F34CA223B - 25: 7819A4A63E4ECE3FB6DBC5208A5E0ECC5803E22F28C083C6B8, FA00969B7C91711E0E70027D13FF0407 - 26: 27186491315F2F00D125C1266C442FB3C7B6FC824DE4A30B3EAB, 084DA787A8AA2D108B95F3A5B69BFA52 - 27: 3545DE774BF9CFC3AF51602CCEAFDAD54302C8FC75C3FC1794C6CD, 68A18C2F767BDADD023D85B722BE8D6D - 28: 73AB104D83AE82A4D0AF53065D488EEA47C05E201A667581BB046E98, E65DAFCC4DD662232C895602DD8C7582 - 29: B7B26992F361B7D9CE2782304C6C62495E46216304075A787395948752, 38F99FA3C086CE6B2620302931DB0BC8 - 30: ADB1E4FC3217F82C2851122B8EEACCFB1C731565AFF856E201E8EEE702D1, 615A3A991F4BA240768FDCB4D9CF16DD - 31: F2CF0958F00F11E8564CFFD9AEC71451344E2A35DE7D82D1AAC14649BCD34C, 04E97E02B50CFCC86EC0B9A958057F66 - 32: 914755B90B12CF5720CC0176AED145ADEC862E51B237AFE862477CF91D729768, EEDA6BE8E7875AA7E1E3393DE81FBAF7 - -OCB3-rc6 (16 byte key) - 0: , E55863F7B850CEA28023BA8E2AB1F4FD - 1: E5, C1F5CEA421F84AECACF622BCE507BD21 - 2: 6443, FB3B7992E057AA4A0E31E8718093740B - 3: A1E36C, 0BE1B8CC538E60FDC36165AF5D273F41 - 4: 4891FC23, C6ADA69F1A613830CFF5E564F01FEA93 - 5: 6AAFA8549C, 6DDA8C3720633B9E83BBF2DB356EEBCA - 6: 254EBFFB3C60, F092EA5FE0DA6B90DD5F2FB75FF92960 - 7: 1DA9F258ACA84E, 762E38C6545C3ED4AF970B09C6747CFB - 8: 289067E54AF4FFC9, C04CFAAC0D919AD6027A7D923705443B - 9: 65E083C54F9CC7C228, D6A4A1AC4144217BC07329BCDDD6F27F - 10: F78CE1BEE4471E9830FE, A503FBBE2378505EFDD50AD4FEE587E4 - 11: 31874B00827B810588A635, 287CE2ECEF9247BCBF7537DA052E6A86 - 12: AC8CB1138A4BC5A19BA96DC3, F443C67A2CC51FE2DF38A8B6C0F08220 - 13: EFBFF1BCDF7B3F66A402A01459, 274A2DA9F33DB5203A1EBF90366E5064 - 14: 7A47F5FBA688594319CC14B33458, 9107C62E140339F3FAB445113331DE4C - 15: 69957805FC3C51C59F9149306CCED0, C887CB0B1D880BE0ACA16AC513019721 - 16: 6735D0D5D2ECFB68B718B8A95AFB8922, C97E9187ED00C6D9FAFC76511BE46AD5 - 17: 00F51550A1875A3517FDE2A3038E1CCDAB, CDA7AE39A8B8708E91A3EB7C94FA7BD6 - 18: 85184BEF9A31A8F4CBB5CAA56FF5C63845EE, 5BFA7FFF2072E7B4D9AFEA21D23755CE - 19: 025F6ACB1A85173A639D8FB24ED4B1E08339B8, BAB248C26F24FCAA94328C9BB0821E55 - 20: E18DA8E16897E888C73743E0BE165A6F8CC94A04, D759682D03ECE0888B07915D6E3F5FC6 - 21: 6B94BCF8DE2F326BC7D6BBE1FE7B744E25E717CDC3, A69D284CB8B279297A4FEA3B6561171A - 22: B9AEBFF5E08E82451A486BFFAAAAA2564F36BEB8B00D, B0F0B98B97DADF33B25AACE289D8BF9B - 23: 5F3C5797CC821B3A3B8559C5A5AF422F85B2803B7A4D9E, E01492AC89D7CB9F87FB8B23B6E55152 - 24: 2760B653AE34625A78ECC775BF4584DDE6B2D0A1063C7B8C, 2FDB63B68839C6250E0C5F16351C31BF - 25: A5CD59CCA78AA4A95B1C1CAFABF90230FBC9F6BE66E1AE7575, 0EE3390FF12980B9C3DBA27802FA7F01 - 26: 4E9D19900631CBBF3F2326C129C90AC6B5BC3889E1392A05E542, 3CE0EC540949EBF4D70E98B17BC37D58 - 27: 5448E01EF054DC8B4B6C148CB05D5A20F50EBDFA42E59FAE178058, BD64C93FDE56099E206AD57958A259C4 - 28: 9D62242B65C51F9BCF41177BE9E992AAB7721A6EB3584CCB25FE13C1, C93E44C0AF6559D8045D89B98CFF59D4 - 29: B72E80500D0ECA63727E82569B3BCE66F11DADBE374BD0672D0880645F, 8419544A26D030E30085ECF8F97896F1 - 30: 28F27958226709140EA0867D285376E1B14890F44A18A219E1CAB02FF62D, 77CA96AB5A1F36E7564B7010ED08E540 - 31: 80F7CA76B988519731D76C4D60DA0E5C77BEC17368C9B237AE60A910312334, 962C1F0C4E7C8137863A48E6E5BFA44B - 32: 1B43CDD2D0E13ECAE95F2DE4782760679CDCCE5E74A3C3E6614BAD86DFE073EE, B5A6A14CA26E60AAC3B5C9DB0723ACE5 - -OCB3-safer+ (16 byte key) - 0: , 8F56A79150DEFC6B2CBB3FB6E359FBD2 - 1: C9, 8E316BB1D0C29B6D7A5A87099B85B72A - 2: 2060, BC6DEBA562045204F685BD4AD1095614 - 3: 0CB79E, FF5C3DD5E0D3C587F73B79871E18D92D - 4: EB055446, 68712BEFD76001DEBEB0D49FB45753C9 - 5: E936796698, DACC5325D10076E3454EA244FDE2C446 - 6: E64E038A3E72, C790A04E48892CD267FC323EC8606BE6 - 7: 3530F74D417ACC, F0383D56F2FF810F37DFEC884A7F0189 - 8: 2B616C4A95A3C681, C2D5793720F925F74693C7A8E117860C - 9: CE0C99100C05C3BB31, B1F94A461CD2F81E31AABB949E2B2866 - 10: 2F4556261D59FB7104EF, F061D0F70B0984C57651ADC2C500FB90 - 11: B0DC48C26496AF66330E6C, 68276FCFD1C9AC88C54429CA7714662E - 12: 5F2ABA85E68BE0FBCB8127A4, C1FF0E5E54CFCB1109E8707E6EFC5548 - 13: 52560F88ABD9EF2BE8F5693CC9, FDC0F5DEE4C0739869C8D310EDE6D8CB - 14: 3FB7DFB38F9CB53B932C09BB4953, 156BFBDE08F2665A3F7C79F711042B40 - 15: 09031E49212D7F8706DB42929EE5FE, 8A0F8A6634EFA7E56471178F6F906CED - 16: CED816F12E02E14B312C6DD520BDD936, 4FE5C914D17C426A3BCF5799A4BE0FA8 - 17: 30180417B91D913762B8066964F01F7050, F9FF5A968C3B5D6F6F8ABD5BF23461F5 - 18: 9135A4CE4F8DC27758B9F158F515F89C8B9C, 7B3E446236E33F999D7B586205B55D33 - 19: FE2BC52A5AD051401471D2487803E2F70679E9, 902CB619F522AC61EE70C5407E23441C - 20: 7FD71CB30B9836C6CABAC78AC336BD5775EF3027, 7E6419511E3886BD3736D1BE13FB8599 - 21: A946EBC8A4F779A6FF805B2B4F9D166479A25C71BB, 850E57C9BD78774FC4CF5BB1A956BD4D - 22: 1F3101AB8B7FA06DC3194D66F3997C990C79DD69669F, AC4962DAACEC80D993E52A2170ACF145 - 23: F8BA79427B329475C7374CD1F48518C5064D3796683978, 39D4EE512DA456B0E6EBE7680766756B - 24: 52CD976F3DE59CCAA8E352161BD7867C026D39142FDFADC4, 7BF77402B6CDC953487A1A4C87AE4ED7 - 25: 1A1D64F1B73C52B698FFED8DCED76292807AB3676004B63064, 6E16BCC6F312A92E80FCB10DB8BC659C - 26: 171AF49F6816848A355D92E7DBFD769587EA2B988076BA5D5918, 9F821AC305325BDB9B12B44F82882C63 - 27: 025152E05F44E7F05C2B4BA3B0023544CFBBEC8F9A98C13E931E2D, C8E3228E2B74FCC935BE1802E092C346 - 28: 96B96648528B740D15504E299E619A6D0B129407DEFD04C1BF405AA6, D0721CC578C44EF15FAC882A8F49617B - 29: 9136905B84ED8A403CA83DC0DE081CAAA0F8E4F775FE0EA1E3E20BF223, EB474F78BFB6BAC8E1B1867ED405DC38 - 30: D65A403FB587A6839C071167ED096B46FB480468F7C1F702F1B2479CDA5C, 8E82A3BA76E1AFCD82E324FEAC9E3084 - 31: 017E3A54463EDC279879A07FD7BFF1225CEE307BD8741B6013FE4C9A454EB8, 10449A44C1F90C64CCCA5D808AC705A5 - 32: DB9C895FF4A59D407344B8254FCD416F0D5EDB2ECB639CF226DEAA76370FB79D, CFE8C49CF0E323F694FAB1805A85DC93 - -OCB3-twofish (16 byte key) - 0: , 924B3293251DA82CC6843F4616DAA68D - 1: 01, 4B07AF17FF5D6C2477E90B7843F19D1B - 2: 5CFF, 75BF06BF38FA2BEC8A3A546B9E29741E - 3: B31197, 0923C75169AAFCA604EDEFB93E7C5D83 - 4: 8AF83046, 29C744B4A6A1DB80CF625B490FD25A60 - 5: 0D0AF40357, 477754E1995FC70B3D4D7E6D6DDDA77F - 6: 9E6765559AED, 389733D5DCAD65971EDB674B2479F13E - 7: 113AD2738DB565, 366AE5F327EE4BDF2CA04A3B82FA3A3F - 8: F2235181D51EB014, 3418DCFFEB24E4D94DC72F7F3876A978 - 9: 303087A4458E3063AE, F3E6B83CAA0A07261BA9D384087D6D5A - 10: 98FF08F0E42331B68492, E532298F60E06BB72C57596957400E16 - 11: CD40F0F4D8000E5096262D, 8AF824C0EC17FF0F88371BF3E05AF7BD - 12: A7EE8BD81168FBDC359375E9, E20FD7E1914136C94223F6DF67386099 - 13: 8BFD44C8A327E7835A9D43A52B, 7AF41E1B25A7BF4D1F5868F0E047E2DF - 14: 8DAF93847C1B3D8220B7748A9823, 9787A3B32FD7EE08835DD7A9277F5A4F - 15: C602FD9F13259C4D3E3700F89CDDBF, 5711A41B4666248FC3FAE3FE8FB9E861 - 16: 972734035B0C78BF774279BA3DB7CB0A, 23E96A558B3A64D95FE1669923E10CC5 - 17: 9D8B4DD8259B51DAC20C4C64693E20AEC0, 66E07F2BF239C0541DF19254F53820CC - 18: 4F76EDFD8C101BF1A20B9D337724BE0019A7, E046081F3CBD112CFAD56D9A32FDC6F1 - 19: 59B667CDFCCC1634C9891DD0D3809A682EDA2C, A0F8E38B41BD82E8010F917F4629184B - 20: 0DBF3DD74E0D165C095468824E431B8B5650EB5F, DB7B71633206184ECD6157060DB2E443 - 21: F5A457AA7ED8C131ABE99EC2C1008DA022D27908F0, 794C3E20F41E7D32B70BF043DBD0D86E - 22: ACABF3932E154342873B1EB770A3E5E31C629090EE8B, 4D998537CAFD3453A5D748EF09C81B69 - 23: 850CA96B3B1287A8726E2B11B7B17EE321CF7D65481F73, D78C52190C81FCCAD299DDBCA72D95BF - 24: 5060CD915C916D082579B571FCF340E82224A9704398E033, 30EE449934C54F531D2702F8F1B9F510 - 25: 0C47F5CAA3F2E8ED47F016918B634474B004B357A35337F14B, 9D749132486F07B06D25428B592CD767 - 26: F01B95D67392793ED557D2C7289CF899C053ECC5E8BD28BA662B, 3760662B33EAFF659DEDD2AD6E7B32A5 - 27: BF8B0FB0B069978F0EEE2120F61B6437969C0BDBA700AE279B3239, EF2A1D664F26DAB4F9E8142730C2942F - 28: 64E68C83E76FECF44BE02B2E44F182C1F6A08B8DAF396BFA3B395A18, 55AEE32957B9B15AD35F172849308919 - 29: B594643A43A91DD34A75D30B259EEAFB75145C91D8A862F2526CF47A35, 0E60E4118213E89C28BB71A8003A94FC - 30: 5D2E20D31A1F6C48EBF52B63FAE1CC09C85F2307E509CBDD4E8771B65787, 11D347399697D4955028F7B08EE32B93 - 31: 8726247FAEB21D7F8927DC3E90267ECD744A8452C64B9EBE08D1A590BFA1F9, 8D75DAEC7E4438E7C701A392346EBBF6 - 32: 0DC0EE528456FEC203AFB12A55A4D3A901B9408958E5387EB42E75730D98B6A6, D7D682F57C1E1671BE459EE33BEA6B26 - -OCB3-noekeon (16 byte key) - 0: , B23A40302652E204B694EA78AF5A8FCC - 1: B1, 5245C8680A6F4520168B173A39661249 - 2: CE8C, 05763A489DF8B88DF01862007B2D6655 - 3: CB7D55, E14463F2230FD60AC779B5608F708A13 - 4: B4E9D036, 78A9A918D7CC6E742F22BBAB7781CC7F - 5: 0CB35CAD63, 1A010E65263EDB85039E81B8BF88B978 - 6: 7094335707F5, 8EC8C49EFBB77AEF2B443855760CF5D2 - 7: 734E7D94C8BD6C, 5E701C5886A72499A79B3DB6A6F865A7 - 8: 5375C12BD7B724F8, 3C12E52B9E0DB5967AA09C84DC4D48BA - 9: AE56D9F446D45EF168, 297EED4ED9671F7D9E6433E189C754AB - 10: 203F357C80E760BB0D47, AEB8CCB8AA3D0752266E9BFF4B501832 - 11: 12A9F075BF911C0691338A, 317824AEDC90F284C3702A651BA50488 - 12: A4F167C8D051DC582892E5B0, CCB64B2CD8CB62212003A4E0A4065B23 - 13: 42B2F2B5E43D407E2E2E047957, B81F80502CEE49C84BCE21A942BD6206 - 14: BA5562041E71339AA676E1BFBE07, 7C0920E33B1AD9257FC6FF8732EE4BBA - 15: 1D1DE906DDBB4C3FB367DD7FB59622, 10D4E97FF5495A4250B60A1238D21B3D - 16: A06A25AFEC795738D0ED17542EF1E691, 1D31E82501E1779FC62E8A2847D89631 - 17: F7BAFF86763A1BE37F6ABCAEB2E8A64411, 4F3E5E7009B8A09CE47ED7E67D9B6B0C - 18: 15A97D2BEA9DA105282144776C710A047F1C, 79406BCFE7C9E8283AA851ACE9D40AB6 - 19: 80FD02BBAD283477394A3DF93FD6323AB2718C, 30FB621D3A41DD01BF8F4E7EFFE93C22 - 20: E091A9D6C14A60627FF6BDC59DFE85E9528AF3A6, E8D5A085BC63B7AA48761FE4431A7966 - 21: 76FC712E7BE90A93015045E96DC102FFC2DAF113AD, D563F913F2A90D653C0764F276F8D0D8 - 22: D4A6E1FD6DC7504CE40F4A1A7B9342ECCC03CD3788F6, E6C45E97B3B2E00C2DD0C639EC056485 - 23: 7DB75AADBA75F026F430C7B9A59E4E0F228770990512B1, 09BAFFCA7F69156C6ABD5FA7A8F1F39C - 24: 18AF0400D1FCC74AFFD5D2FE4F8224A29BD17DB2294F89DC, BAB2E20E100E6292658A7BBE67F96E13 - 25: DE47E5BD43101F0688D7149811511E549C8846AB71B35A12F8, AFD0DF5FAF7821759DE3AD928B239570 - 26: 1826EEBA81A57174214F9953BA88F4324456127D7F7ADDCA8036, A03FF1F7B71611D8E9B41DA61E191A90 - 27: 73D79CFEC44F7274720BC73B7F2422BDB79A9DE6245B08B006F654, 00F66AADBB4110E77A7A788A1B0CB4B2 - 28: BA5F0C34A1DF413378C6F49E09BEDE1ED757935934C1FDCD978C2B3D, AC286CAE6E7C3DC2CEE3B6019F5A1662 - 29: 231AB287C2156BD0E590632E057D7EE92B6DD7976AFB75540FB04FC84C, 12420BEED7F377C4792A0940EA91C34D - 30: 7B06F611F07763C65EA542EAF679DDBCADDA4B61238F489331184FAF764D, 56FCBC05F1E3B57286B1AE881FF04BF4 - 31: 17C5B1127E3D08737590EFB2FEB17562E7FDB4B21A768595ADDD9697CF9B46, 6F4BC0A033BE040350FF4958866BDEA0 - 32: 4667525E9B39821CF08E6C7A7E37A5020CE23F81DEF05932113E9A6B5B3F9BCF, 5C0350C6F7299192947EB22ED415B05C - -OCB3-anubis (16 byte key) - 0: , BAF3C352341E4E8F5E1FE11C9CB3E151 - 1: 1E, 01BAEEA2431B9106129937F135D46215 - 2: B586, AC89B511AC5F80B2E6F9E6BC96DDCE15 - 3: F28FB1, EFF43DCF8C909D51ABD58CE44461C35F - 4: 2AE6B0DC, 36A21C9193BDB12FCACA73E756C6D75F - 5: 4A37080738, F90B5BBA5A103EAF4ED01FF845F7F6C3 - 6: 369B9FDCA431, 85C530F58C7DB80C6E8B1F3A9A593C69 - 7: DF0388D34583E9, 4EEF27EABC10A78488F82E8105C52C2C - 8: E63011F0E310F68A, 8AC5A7B20B6F4E160EEFA6D16DD868DA - 9: 93FBDAD02B07A03C8D, 2C968FA16435934EB40F27019AE00F87 - 10: 6D91E68224DEAD679298, 2AE270894D8618D4D92485B51B7B5658 - 11: 53B08EE1F8FFF2590B7CF5, FC9A33C9221C06ED7EBB1D3C33BB0FE9 - 12: AFE762CDB97A411E0F6D8422, A9A1028C6055FA627007E65CAFE5618C - 13: 781464F6A0739FB8EFD8C6130F, 1DBCCACDDC218B76FC27F444FC0CCDB8 - 14: 1F9AEFACB5D87693CCBB9D173529, EE13B9890D0E05EAF61E1BBE8B0ED0F9 - 15: 107248D8D565CDBD520E50A139531B, CD7220BB19B95C496FC901C831AB7CAE - 16: 1045F21485E1C4FB812D9428C4D29D7C, 08035EF80327E3D238D98A09E3B48542 - 17: 68E48C74D09B7D07F38BFD1722F6DAF18D, 9D94E4B7CC4F00F1716D830D953E1DC4 - 18: BF9D274E7DD49FA2ACEE1D65DEB0A5A74D2D, BB841A83356BED14D2A06B5D7F5F8556 - 19: 4586B730D46E9BEBE34EB52242DE954CD39B90, 40981229C0DC8D47C69AA261D2BC960A - 20: 11038CE2E4AB2D2F8258D4DEF25F102352468350, 1EC047D2BD87BDDF02068BFD5742688E - 21: 25E4D441758E4953D463D0BB63CAE2B8D5F78B7968, B548855DEC4C11C10F74983D6B426A41 - 22: 1711526E226559666D2439881650AEED6DA12EA01A72, EE6D4D29BDC8EC975ED90340910EF829 - 23: A70447A0317930D20C5EBB0841528802B948DA7E437EED, CCB551453425652D6535DAD0A5890431 - 24: 57D82A93F29B4B2C2CE4D2326D2E224836F0857EC8035972, 87E1F70A7D4140A58851A2C4F0E39F0F - 25: 5F065C6406B07A8CA35AE0F05D0D48C631C6FB3D7655D5F6BE, 2E3EE16DFA370D0F988615CA063DD62F - 26: 3DE835DAF81C17F45DE11431A6F8294FBDFC062F237A7DF30E1E, 401F8841A7D97F84438B905D2C03A416 - 27: ABDF9D5E996364C628D4DCF67ECC870117E8CC5A6C52E4663C26C4, 05996C80448BCB0C4B311E05AD0B4C5E - 28: 1C2401BB1DA2CEBA1BB56C69728FDAEE42FBFA374E57DE1C593494E6, 8491B62BBF372C671C311A97C173BBE3 - 29: E504321BA399FFB6E3187B645635273A92C63D014E337EC266334BEC7C, 026444BAAD6C4EF67C660180CCC6E7B4 - 30: A61D3FCC22988166F57F4585E936CB8CD714713355593780F54EED1681E7, 3507D5E0185318CC4577C5FECB3A348D - 31: 55AFBFA3A57B960AC0F8B3DAE6EA60165FF7D5A77731B05BCB7E8C647487AA, E25444D551A823650757DAAD8ED6B588 - 32: 5553F81F123EC0697C26B00BF20BE287C0A1E9C4035C8EB3036F6D58C8A3B83B, B7349CE03F264F816305A6D46C274980 - -OCB3-seed (16 byte key) - 0: , A7D37A371F0B3596ACF3856B5D18B45E - 1: 49, 3C671A1AFA5B253DD8FF67FFED9C33E4 - 2: B986, 2A069C4C6FF67FA6880D6EDA8490A3C6 - 3: F78307, AB6D00AB217E62E1C2863A63E7E805FF - 4: C43CDED4, 9332E6E78B574354B866EB49B951AD6E - 5: 47FBFDFF71, 14B3A25479FC36C71C837680871855C9 - 6: 4662362F3992, 28B8B162DDEAECC2AFD92C343C49D986 - 7: 64BE9B49D4E3F2, 6DD06663768ECDEBC64980E0FE11BA9C - 8: DC6F456F02349DDD, D4CBE9414C65BEA4F1340707410A8D6F - 9: E0C1166D7CA0A919B2, E7B742D40ACECC618A9012DA72C0DBB5 - 10: 1E9B38CA4B1D2E41173F, 6F87E9D8B7EA96249B533FFB626773BB - 11: 7598A106F4A42DC2EBCEAA, 8A1358443F492C6996ECA14D41FCD91A - 12: 79C43C511A13395E5F1D259B, 0955EC3B5D6999D1DACA88E4B4B0EE77 - 13: 39DD979B5CDC450D7E7D49136B, 78E5E86F6FE3EFC5827BF7F088EC8FF0 - 14: A1C18979318C625FA4FCB0D40FC0, 6F9508959B87F510F3E7B39FF3237B7E - 15: D3A55B637FAF068BC97C52265B7DFC, 8C940DFDC990CAD1A08179784E668012 - 16: DC120E50B38579CB4A45DC7D45C29AE6, 2E0939B538B26E0009B198D5C3E6DE17 - 17: 266CD82BBCA8FBC6D146CD10DB417685F9, 0AE1614717E23EEFD5F9BE7916494A71 - 18: 00741031BC893E10F6B86698B4B3787FA14A, C297ED582832F4B77C7AD820F5637EA7 - 19: FFCF3CF4B06AA83E05E5C049DA2A4F1AB4843A, F2FB3E63B88B56E9D680560F346C6144 - 20: 381DDB2637F17F8FFC619AF59A4DCAEA227E95A5, 82D692BD1F86AFD28EE140D021E69532 - 21: 6267EDEE16E3FD95356079CC4366BCAA0739C5831B, 9D4F17B8A5E85E5CDD18FE16D6BE29F7 - 22: 0B79A1E9B3EE98DD6EF57E4F23171D84D7250562B4C6, D76DB52F53F51553C604FF17E23253B4 - 23: 1DED7558063E2F8B18514B8F5A3446981D6CD648ED098B, 0B209EE39335BD6336309D1DE1EBC379 - 24: E3E3CF278C9FB18005A468674E1EC0CDB5DB5B42ED1CA4D3, 772C852C854303FED2DE41F8437E81C7 - 25: 8D0F93686527DD62C4101B213B88930E375167E48B04446B90, 11BA6E13F45B82FD916644F859689AE6 - 26: 1B45865FB91DB5E93D87569DDB8A1CC395381E875E5CA6EAC1F1, 8BCB49BD6D413542DC88156758EF8CBD - 27: 06C381B8028DAC54D785CABF55B47AD7BD2CFC6D66C4B538F287F4, DEBFCDB4E6C7A43B7D7E0983D4FC0C87 - 28: D71A0CE6A88F80CC922189EFCA5696FE5C8F6557AB744698E4A65222, 4DCB5B5B0F9794D776C4C63C3E00C78C - 29: 23099CF8578E878B58589D6FFCAC8E6A74B373074D90E0F38ACCFB6117, A5B2C145ECF768842A957E47A8511D2F - 30: EC19652D148810E8C714D184263FE7E961FECE4C9CFD30D6921C32D2D4A9, 74B900BA5F4AE547C19221081DDC1F91 - 31: 9DB58E1FEF922A4A1F99602710ABCA029E8A10383465C62967EB0A466F11AD, 08D4FF277C8DA53A2598201B255B7FD7 - 32: 1BD03BAB70BE842FDB12E49DEB04AE477335B0B3930E75A27C37EBB1594099E7, 3A6DEAE1C289763C4405DE86544DF401 - -OCB3-camellia (16 byte key) - 0: , DFF7EA9ECD4E2AD37B9838E85F9D36EB - 1: 1B, D5D37222F530EA2C282A4D8BC55A08EA - 2: B73C, 5163F4BD7CBC03DA1B31C7C1105B5511 - 3: 42B8CB, 997087C18C191D560E3FCF70E77A3C15 - 4: F533FD5E, 15275FBDDED6459BFD8FBB8FA08DDD3F - 5: CA7A675DD6, 11604097A97E10A4724799DC6A349F34 - 6: 00F4D4CAC81D, 9165C7B49928D47A8F3C17C0B029F44E - 7: 8751CBEEC4D29C, F541920B2E92DE956B6468EF83DFECB0 - 8: B851DACF29824BF3, C16660EB40CF830FFD263C52C1FA8C97 - 9: 8646C3D808426E03E8, DB30D0CE9F7DA93162D69D42F0B4C644 - 10: 0715BC4E51EAF610956D, 2475EAB0B92533BD574550F316C86746 - 11: 12F6C6BE1A4AAD391BCDB4, F1F387AB03A4E36965CF41C6842950C4 - 12: 4F85DAC1AB5B6D48CFA75266, 57B3ACD0FB6D2F8B672BF097E7C559A9 - 13: FCD56B0CAF30F6A29324AA3067, 437461CFA9DE7562A572085439CE5B5D - 14: 612BD3BDAA826CCCC76722699D51, 90863205C506D85FEE095B32F3E1DF93 - 15: 5C85AFD2B6A6FC85B282B57D48642E, C59DBD94D744A6F3745EBD9D4EBAE0F4 - 16: 64173080FB3CB43EA8FD41F23DB88587, D80103E4C578DD4B79A23372E34ED967 - 17: DBA50DDBF3B3F064F8E40967EB53769FB3, 4751B6EEAA9B2E49BF8B23A3BA13807D - 18: 04B8D0D351F3FA3B3B3F641A244EF7036825, 6BB18750DCEBD39DC25E42233475BE7E - 19: A15A0C3E91CE8AC01C8A5291D24FA0514453A8, 5DDC4FB9D6C7AAF7660B763EADAAD969 - 20: 6E223B742F768FA57651AD90B6BDFAA772E6AC04, C987C8A3A27605B6CE04B25777286875 - 21: 1FBFEA7AB374D972FBF76456048F77745D8E7B64C1, C301981D5C17473953B00818967E9230 - 22: D642F5D05092443C776E53D6FCF2B65F6D25E8E98F89, 5E87E6BFA1EBD436909126197B2CCAA5 - 23: A8270C56D2A0084670A0C5D8DA2B495A849D1BFC571912, C4D32192AC893C87C900EE2F80443789 - 24: 431ED5C50F16D509C8229156E9BF0A7E1998F48F0032D91C, 960F4467E129A002CAC3F75EACCC7D73 - 25: DB57EDEBCAA10C4B8E0194CEE7E778FDEFA88424883DC476DC, 069F456F5AF43492AEDC7FC24A0ED875 - 26: DC8AF80FE840605041638184A00F683FB0AB86C4067550B4DB49, 862057189AC987639992EA9F49C7158E - 27: 6A67318A81F95E33F741C95BCBCD8623CBF26D2D8801D0E745DFB6, 22DA5E8C63CEBC5A6957FB1A01AC7571 - 28: 70587F34F31CF711F2558C7DB1B04334DD58D850930ACDD5825EE131, D2436CA4FC757B16509CECA1272A2955 - 29: 736DF200A877930DA3EC2FD0AF53F08285E02EFB519A443F50B9E2F1F1, 22607EA2C6F1AE1B73785554F9440F2B - 30: 62248D90EA60163F9CBDFAEC498802AA816915273093D375B02BBE22241B, BFADB3689B3863AB997D101380F7156A - 31: 41C092516DC494E4E165EABAF939858EDAE3D3DAE488D14EFDB0E850675565, F45307A495AFE24E29E2AB744311F07C - 32: EFFEAF5A73C2A825AFEE12A2BE80406937C75D4264FD937A310FA57C7D5D01CB, 3B430C0DA47DAA069FCC5C92C5427396 - diff --git a/src/libtomcrypt/notes/ocb_tv.txt b/src/libtomcrypt/notes/ocb_tv.txt deleted file mode 100644 index 076885dbaf..0000000000 --- a/src/libtomcrypt/notes/ocb_tv.txt +++ /dev/null @@ -1,569 +0,0 @@ -OCB Test Vectors. Uses the 00010203...NN-1 pattern for nonce/plaintext/key. The outputs -are of the form ciphertext,tag for a given NN. The key for step N>1 is the tag of the previous -step repeated sufficiently. The nonce is fixed throughout. - -OCB-aes (16 byte key) - 0: , 04ADA45E947BC5B6E00F4C8B8053902D - 1: 07, 987354C062CD6251CAA6D93280EFE9BE - 2: 1CB7, B9F1620EA8374E1C2D05110878D93069 - 3: B98C59, 3793FB737C2DFB29E73DD1AD8B8F71C7 - 4: 8978F240, 5E25316ED13D3300F2EC12D718A0BA8E - 5: CB4D261594, EDA252A1A5C7D0A4AB4620F771446DD3 - 6: 30D6B6688D59, 684037DE07832C6FC38CA42BDF2A7D53 - 7: D0583F9741BFA4, 3DF53DFF73431C0245982F4EEEAD432F - 8: EE3B9596CBEFF520, D283D1B9D990739EA05F4BAE2E96BE4E - 9: 6570FC25E6103AC125, 90D3F1FA6595B775749FAE7B00A8E5B1 - 10: F56750C98C370DFDC4A0, 19389A6875FAB432B72D64BCDD6BD26C - 11: 3344AE6D9528603CC1E4E1, 87AB6FBC7F919125A7DB0D17D19056B8 - 12: F3D9D816A727D3E67330C779, 07AC0F3841DFCFEC58A5AAC22270538C - 13: 976651E63ABC3B276799BC1FE4, EE603A8C66099AD6FF8667B3F34ABF29 - 14: A48E3ABC31336C6B717A96170A9B, A9D1B973D84D3125F5F9D7923BA0A8FF - 15: F60E9B2A911FAFB0080FAA3ECDEE42, 4902F8AEB7685F7B255ECC45B5B7D3D4 - 16: 0855DE488940144AF18C65A9966DDB66, A66B3E7A75D394273AC196FFD062F9DD - 17: 172DC1740F75AB2A27B2B80895961A69AB, D6986BB95F7E4137430CAC67F773623B - 18: A414234DCCC61B65A79B7C618A6B91ACA410, 6CE32E55E158BC3E51E94116A615F3A2 - 19: 16A1B16BC0F63D63179901F1CBC772D612C102, 54007EF9822E0E4A4F953838577C76FA - 20: 539788EBF85C15B3A638017B4054D71315BFF25F, 9B2511322E16CECD53E3241F3D51EB97 - 21: 7E74595A3DCFE1EA2C91B67738765463D50A22924A, AC9C9B526251C16F112E769F9FBE74E4 - 22: A2B61792102B2E44F1DC0E48B40472CE883730504FEB, 76452A49C2524404C8A4B098D6390F98 - 23: F58174BC06A022AB7D81991E9346F5E4B0AEC535D93473, 47F96374BC094BB2C1A5D1D291806912 - 24: A3A7713895D178A85D9092EA6138323DC2FF9090D7F01AC5, 3814208FA7009A2934F9A172D029667D - 25: 385525DAF9949DCDEB22F7518AF96438E40F7D94933706A9F2, 1249F3DF50084A6D1A76AA350FD85B0B - 26: 6838E207D98A5BF8D8E41454CF51663D8F8B76FD26092D45D1D9, 301723D0F49BF8CF37828340B894689C - 27: 736413C025A549CB2550E93139DFD5DC3CE241C296C9FE641FF520, BE07259963F251743A85DF51EB1B47FB - 28: 7F2CD26367A885BD9E2B515D4E871272AC1BEA1C650B530E5616B2D3, EEB37E8451597E5A53CB49072EDA9346 - 29: 68F23DCDEF223B60B46E3D724A93BEEF8B110D4394C990AC3D0E34E1B6, 9A60344982F852EFE02CBE9CBBAB60F1 - 30: 66C5DE3EB27139983D48BED81D0E5FCE6BA1AB402C357062FE989D31C69C, BAFA0A7997A529039F0CE8528E670415 - 31: D3B9009C1A930EE288C61B0B15C7E92CB73484C345594DC5A3F377147981DB, 1EDAACF7F1F3AC7EA613F94DA4DEF930 - 32: F7818DF15FE6FBC42A28FDE1D55A2C07EC8D82AA0E7A680DBD3CF26C13448F9B, 67FEB344108008A88067E92B210766D5 - -OCB-blowfish (8 byte key) - 0: , 07B7752047F9E0AE - 1: CE, 7D69017C42B06204 - 2: 1D6F, 4DFD4BD58439062F - 3: 30A011, DB49D988798F8842 - 4: B71C8951, AA3261584B0C20FD - 5: 06F89957DA, 88BFA80D36427F64 - 6: 45BC4CE5FABD, 4CAF71136ED166A7 - 7: A7405F124D0296, 5D8993CE64FFF0E7 - 8: ECABEFD9E6574E4D, B69349673CF86E41 - 9: F7D26A7E82A34ACC71, AFFDEE843ABEA68A - 10: E225C5F0FA1D649F81A3, 03AC1D5DF1323EF8 - 11: 58722FBFB86C2697061217, CE731D80E6355710 - 12: E577EB8FA70225C5A18D31DC, 2F08B140F0D3A255 - 13: 92154A94CD7D42EBADB6CFEE14, DC949170E84D3CA2 - 14: 5A3C08744FD85CA262D51AC6CD25, E83CE45547403BAD - 15: 8B2E4980ABA10A20573A402D89AD12, E3D978611DD831D0 - 16: 3EDC4A0FA95BD8F944BCE4F252B6470C, 87B54BBEA86A5B5C - -OCB-xtea (16 byte key) - 0: , F996E5CC593FD6E9 - 1: 88, 64636E3C48940F8D - 2: 223D, 230D7718A8BCB965 - 3: 32531B, 37FEA4728FAE474D - 4: BDCF3E96, A9F30B4187CD174C - 5: 7B0CCDE546, E7328648817987FE - 6: 824BD771B724, 0BDF80C14EDB758B - 7: 8F0E73B1280717, 2DEDBF2C87180CC4 - 8: 6F7EFA44AF774B1F, 1A9C5509D54A7185 - 9: 9749BCF684F68755AC, E46941DBE948BDD5 - 10: DCD32D91FE2D5590355D, E17DFA54A5B60E07 - 11: 3CBBF6464D438AB95B3ACF, C207876D030362EC - 12: 1C804A611F6CE4CFD2657366, B957F48EA00C428C - 13: 5A2F6927951D8F60C754893790, EB3A27A9E5B8928F - 14: C710D28CD02726002596D9196021, C6C9EBF090A20C07 - 15: 298FFCE0CD42BC329697AEB5F53A56, BB2F0C415317928C - 16: 59F6395260ECEAB2E3511991EEEF9656, 278A218A720F8E05 - -OCB-rc5 (8 byte key) - 0: , E7462C3C0C95A73E - 1: C5, 83CB00E780937259 - 2: 1533, 022FF70566E0BA87 - 3: 57543B, AC4EF15FC83BDF2D - 4: 01E4474B, BD817C06AC2141E0 - 5: 4CD7E850EE, 7BB6B3BDA5373422 - 6: 489C0CD1502A, 23DD4406F87EB164 - 7: 0CBAAE08E07EFF, 92569C958B722413 - 8: 073612F283F8A6E4, 1DD978D01CE8D1DF - 9: CDE676B1A3AC98B00E, C033F099E2620668 - 10: AD3BC88EEEDA40A83685, 36DA44E13C0C8A4D - 11: CA60E8B918F73E99986021, 45634CA0E43E4B13 - 12: 3B3CF82157ECEACAD8658EF5, E681F57616146CC7 - 13: EBC1A7068346EC1B7EB815A7DC, 2C806D2A909CCAF1 - 14: 97CDB3EF8276F1E7D6B6677DA2DB, 53F00B9A2E43DE08 - 15: 44169B3EDAD9506C51A6DA055EF9C2, 5BB6DD996130896B - 16: 35EC29065B1FC640015B0F779E7A358A, 867EBD0E86823F09 - -OCB-rc6 (16 byte key) - 0: , 27B9E3F544B8F567EEBF98ED5FD55C76 - 1: 92, 219FD2D74D7E3F21AA6C2A507C0A546B - 2: BECF, 96A656A16FB3C4579E6955D592AECAE1 - 3: 4DDE09, 7D1882879B5D6FD8C151502BD8AB220A - 4: 0D6B4FCC, E01FBD1ECA2A6A8DC6697A06AB12BDB0 - 5: E5E19C973B, E5A86AADF2F333D5DEDCE410688CC6A4 - 6: 90BA7D2A6965, 80523A2CAB2A7BB2E90B121DE80F46A9 - 7: 6FE258148EC8D0, B7254B11276A77C5F99FE5EC91D81F57 - 8: D887080095DF8817, F3FB938068A01EF89DE0F1226C544362 - 9: D9823313289D597614, A547764EF20BD4B4B303882B64FAF2C5 - 10: FF68942112CF01701E86, 94F3860D4438428EE296CEACB3EB67F5 - 11: FFD390D3E0B64F64D3192F, 99D2E424C67EBACCD4E2EB9A0CDB8CDD - 12: 3162235748BDDECC84FC8C94, BDD400A58AF59100A731DD5B4386444E - 13: D2A0EC8B1F20672289F7236C56, B245CF42644BDAC5F077143AF2A57BA7 - 14: 830929B2850E22F6C1BA2027248C, B6B522F7D6BA3CFFA92D093B383542FE - 15: 2A5FCCCCF43F845AA77750D3BC6B1E, 53A0A0882C7844636900509921661FCA - 16: 8480234796F9EAC313140CE014B0265C, 0656CA8D851B53FD5C1AAC303B264E43 - 17: F011A67C22F16A42CEA5E493CB766964AA, 830B8158B7A96224A53FB7F3A08CD128 - 18: F76274A730A608C2AB37497A049C3699882E, 4DC4DD4DF39D0E68D6169F9DC7F4A6D5 - 19: 7B38DD237DE552A72E4369A81C30AFEA5E5063, 01A62CBD30153702A5B29FB2A1683899 - 20: 58EB866F1FCB060ACC821D776AAC4AD9E87C326A, 25AFB8FC48605E1396EA8471F55C1294 - 21: A25F2C0FAD66B3580627498EC66C994B49C5445911, 0182A951D9A3DA53675612DE8EED1FB9 - 22: 8813977F092F07F251A1497C898967F3F98F5CB878CB, 80BC353E310880A83DD4DE4FE96AB6F0 - 23: 52DC8B76F5A6F78D51FB7DB51048E2663563335EC876A5, DC3689AA079C04C19D83646B272F9DEC - 24: 965437D3FDF91784B63C73C8CD001BD9372167963DF36B89, 9FF84E2845E3C1E3E6711D1646B18F21 - 25: ADD40F674BD56FFC8F9B4047FAAD2471F0A48F4544C894F806, 9D684F74F9734F1C497E33D96A27E00C - 26: 7B049B688839BC62785082397DEC7AA94B837D094AECA4B14571, EE711DF1C15B5C9E36B6E38B6F7152D2 - 27: DD4681F9C498A3CF69A9AC876E02BD9CDC4FB1F6798F772013B62D, C5A50676EFAA2A56CBDBE55CFED3050D - 28: 471B5E89A1337E75E88AFBAACA1C011790F1657425483229E55C34EE, 20F73F2AC452FFEA423BE2EBDF33CFA1 - 29: 71812C83DE34DB329C8DCD98890AFB1F7719E890DAE5CEB7AC9668CAD0, 6FAA03E10C6FB67D425C683C6D85FD76 - 30: 4BC2DB33786CFD29B5CA5B804454169906138E90E29E7BE9197971027AF7, 75053C433EF5572A70C58EEC96F56C53 - 31: 5E3A0AB41264AB65365458ED3B7E6A25827E50075A9E347F1622ED0723E229, C8F1ECD19AD5FC970CF0D31BF46B0F2B - 32: 2E48DEE4B379CD59F5367D17DC397C1BFD53B8C4CE46A8202518614076174EB6, EFCE758ECCB6BE875D16B7E03A498D31 - -OCB-safer+ (16 byte key) - 0: , 88618DEF98FE588E23107E9A5D89C26B - 1: 39, 2B01B202E751F957E331ECD1CEDE3456 - 2: 13CB, 17071E5AFD5D8CE953A73F49412BE8C4 - 3: DC4428, 4B0B1881C2540FF92E7DE63C479A7750 - 4: 120382B0, 0BB11D57B5BD9D846CF31033CD4CCB92 - 5: 97F332F95B, 335E0424D0A820F60DBB968B8B5AA057 - 6: 3C7AAE72037B, C8034C2C76C1CCD7C1B3F36DD8907E1D - 7: 8A99E4A1B89B6D, 06A8165DFADF1EA5ABD89E574422DF7F - 8: 676587065F0342B8, 93ADE63994DF2189079234DC204BF92B - 9: 8EC394CBC6877B245A, 1A89F0AB0B44BC708EBD9DE489E2EEB8 - 10: 5FB5366E5CAE4DB72411, 5CA5881A5805D53ACA4904A5EEC01550 - 11: 72A1994028F09ED6A4E45C, 0FFC0052996CE45DF4A28F7A6E9CFEA6 - 12: 1D5EF20F52A9B72386D1A601, A697DF1179628DE1120D5E8D9F39DA6E - 13: 79BD002AA59D74F125AD9E32DE, 2F02CB6F70BF57BBA0DF100DE503F633 - 14: 442C6F9016DF4C090056258756A9, 58C6FD3180B9B74459D70B5684BE3F4C - 15: 4FC5543D9A892B44ED04EE8B25E232, B8B858B3D3EB4B26E867E429F88A56B4 - 16: F06E7503167C2210AB332259BAFD6AB4, 73CE2589D1DF34CA3DC2B14CC9FA6276 - 17: BCCC260BD4823B64090FB33E6816F9C330, 81ABBDC83B2544907840FEB5AF4479EC - 18: 450C1105B76F960D1A5F33D7F9D37DAE20C3, C41DDC8980E88E3986D9C84857BBE1E7 - 19: C9F36EF3A990E0554EDB59E6788F8E9BF1DBC7, 90DD543E148D9A0B79A8B376C5509E09 - 20: 3666FEEA98A4FC434EDB7517E7FCEE2320C69BCB, 99F11B360DDB3A15C42110831CCBF21C - 21: 126F39C19D1E0B87F1180F6589A75712B66209E2CE, B4D268FB8EF5C048CA9A35337D57828A - 22: C1B6D14EE8B6D0A653BFCC295D5F94E6BCA09E181D8A, 4B4883B614D5CC412B53ED4203EA93B7 - 23: D1F2A10F1A9DAB738C61CD0EF66FE5F6D1DA95DC671128, 3F1EFDA55EFEF1A0B24708E132BC4D25 - 24: 9D457216C584F43DBA1DD55C54822A8B6A86D22DBFFA14D4, 53402970B128E98A5F0D62476A38F959 - 25: 012828614B5D67C9A1EE24A1EBCD322FE9C8BE0C3F20A53714, 2BFF288D90DBDC638084F80F3F7AADF3 - 26: B1904AECF599F6C74557475E409E75E646271DEDEC7A830260DB, BF119BDBDA27773E038B7067D2B0EECD - 27: ED831771C4346FC19435354AE29F7A9436D6E8D4D42CFF26207DBD, C3F029FC8AE690E84FBD0EF806B801F3 - 28: E051B958601223FECEADF932A277BCF18C25025AE4DA791155B85035, EB75E56BE7856F1B5ED3D125C092D38A - 29: AB3449537C5E22125BC32D483F74C3A3DBDBD5232839A85D300F65B4FD, 851B0FBABD080F783BDE4F47ADCD6D76 - 30: 4E68550837130652795A8C9D68530717D2B0AA5A17F3AEF92FFB502E46AC, 10E222706527A64E757EDE4B9EFC09DD - 31: C2D7033DA7A1857D79497EA6C64779EB969046CCEE6C74E6592FEE6E7C94C4, 2015674ECA80AC9B67AE854E18A7D56E - 32: 2F3F0374DDC24AE21F02D4DA74D46C71F0CD2269A68F32F7FAA0BAB64AA8E9BC, 737C8BA1677A8CE97D42FBB07530EE99 - -OCB-twofish (16 byte key) - 0: , 2CD8EF22E5457C7FE4016B0FB82FD204 - 1: 64, EB7BB60E4932C0E97A7A5906BD044ACF - 2: 3A59, E3D2024241666369BB542ED096F20C71 - 3: 67C038, 7E6F1EB3F2088F6416BB675DCAC0D484 - 4: BB36BF02, BDEEEF07EBB7A50A5201C8A2D72C0036 - 5: 6F06C0E293, C63557681D84ACCFFBFEE87D82EF1D3C - 6: 2015F94CC5AA, EF1DEAD4134D2A1A47A20F26FAA3554D - 7: A5F8CDD07964B0, 672B74D88C8AA7567C6AC4A896E0F6D1 - 8: 5EFC9D8C3B9E7F3F, DB9160C53AD429D4C22BC0E2E6C509C5 - 9: B62CB80F75594BC54F, 20020A798FF59F0472E750C796B5CC94 - 10: 970983B0F889760EEEF0, 360AE43CEBCC27755548D4984CEEA10C - 11: 75C3A8CCB30A94CD57D1F8, 79820F3B1625E216B5BC1D1A22B198F9 - 12: 033DA41CCBFE3C6897230FCE, CFE3EDD11627270CD63916508B058B7A - 13: 15358032F30043A66F49D3F76A, 98B8056A7991D5EF498E7C09DAC7B25D - 14: 71FBA7D6C2C8DC4A0E2773766F26, 22BA0ECEF19532554335D8F1A1C7DEFC - 15: BD761CD92C6F9FB651B38555CDFDC7, 8E3C7E1D8C4702B85C6FCD04184739E4 - 16: EB6D310E2B7F84C24872EC48BFAA6BD7, 12DE548D982A122716CEDF5B5D2176D9 - 17: 8DDF6CE25A67B409D3FB42A25C3AA7A842, 3E9FA2C6C65341A8E1101C15E1BBD936 - 18: 5563DFC29B750FBC647E427C5480B65846DB, 90881C6820901BD41F7B3C2DF529B8A9 - 19: 93343C1E9624321C2A0A155BA8B4E66FD92BE2, 71A641DDCD49825E10880D54BEF30E91 - 20: C256BCA0CF0ACCEEC1AA4B9372AF27D2C3C65AFC, 91D45C4DA49BBAD1809A11F4041C7D09 - 21: 3DE69FDB72C93518A3E317F7B26C425EE3DD42DA7E, 85E37B3E8EC3AF476DB7819D739D07D5 - 22: 676AC7885C7C8FBE9862242FCCC46C181440EE49AE59, BCDB42B53AC4FDDF9C3BF8849AB96EEC - 23: D71B98B88F46CC47D90BB931564CDF0157F0ABCB5E6954, 289CD5799D9E49F36D70F67726A59610 - 24: 669C16DB9DC175200C08476832155DAA52F1F8969DF3B79A, 835B210EBBE5C9D34C2E052E1843C1F8 - 25: 2F39346E14A34BBED0491929CD9F1FB3CEC412C25AB703372A, DC4B42E8BA676BA100B87BEE328C5229 - 26: 1FD0F8BD0AC95E91881635EB0CF0E4FB099CBB214CE556422E2D, 898CEB3CA8FCA565CE5B01EF932FD391 - 27: 7FBD32B3D88B7E002BA6055585B5D0E1CC648315A81CFECA363CC8, 804820B1E3813D244164F778B9C2A8C8 - 28: 877A5F336A1D33AB94751A33E285C21666F0D8F103AC1187FC205372, AF9F0AC165EAFCEE8C2A831608F166B4 - 29: ECCA297705B0395E71B9E4263343D486B29207DA188C2F1BA626EDBF46, A05DC873406B236E4DDBC038DC4D2627 - 30: FF3BD8D4E1108E98FBAE2E28BC12819CD7956BC491C0B3A291FBEE739599, 68DFE58473BA2818A23095D1D6EC065C - 31: F175230606040ADACEBAFE4D58BBD140B2D45E8BF7E5C904510B58E4B53D3F, DAF579E1A12481D39F4DCFB7C28794B1 - 32: 261388D491EF1CB92C261FD9B91CAD5B95440DE0A747144EB8697699F600801D, 749056EBEAF4F20CD8746AA8C8846C47 - -OCB-safer-k64 (8 byte key) - 0: , 0EDD2A1AB692AA7A - 1: 3E, 306F814F3C2C109E - 2: 0593, 063D19B734C34715 - 3: CA72C6, DF6DAAFAD91BE697 - 4: 08924AEE, 15095FA49E789483 - 5: 359908A6CD, 16CB7F0741BA4091 - 6: 97F3BD820CF4, A59DB15B67B95EE8 - 7: 0A267201AC039E, B4FFC31DBCD8284A - 8: 9F6ACD9705C9ECC5, 6B41A938F0B1CAEB - 9: F355D5A937DD1582C2, 9D1F932E521CB955 - 10: ED39758CAF89E7932E48, 398EF517015F118F - 11: D8ACF19363A0E0ADC9321B, F98B2A30217766AA - 12: F8F54A8202B0F281ED610F33, 36EF7FA4A20E04B7 - 13: 0F8677DF64B5982DB6E2299140, 4DED2DA806834C81 - 14: 0C357A9DC321C93B3872881503B0, 7814D1C0C6A8900A - 15: 10B6B1A261C3015A18110AD200A7B6, 9A814D6D2BAD850C - 16: AA9EA9D1BA7818C0D2EBF23781A5467D, 236A24FC98826702 - -OCB-safer-sk64 (8 byte key) - 0: , 76F16BDCE55B3E23 - 1: 63, F34B0B471F6F8F75 - 2: 8651, D7EFE17943D35193 - 3: D45504, 263224E50E7E9E75 - 4: 57B414C3, A553D6CABCA0F285 - 5: 4976E3B303, AC5E9969F739EBD9 - 6: F10AB8EB94E0, 8301FFE68848D46D - 7: 6E954593AC427D, C1CF93BBC0F92644 - 8: F48F44441B898C0F, 698FFAED1A95E8E4 - 9: 1DC60156D62782E3D0, 6AFF0DCC65D4C933 - 10: 71920ADC8997CB8B3A72, 1C101C6A27CFBBBD - 11: 890ED7492ED914AC20391B, F66DCD6205D945C6 - 12: 1B9FAB84A8748BAC187C7393, B450757FCAFAAD52 - 13: B4C89E1BB280DBC265E43ACE15, AE6BB3D2E6A371FF - 14: 24B0C28944BDF22048E2E86644F5, 84E93E2191CEF17A - 15: 8F2D5694D55EE235168AAA735943AF, 514252AEF2F2A2D9 - 16: 568B7E31FFDA726718E40397CFC8DCC6, 3C80BA7FCA9E419E - -OCB-safer-k128 (16 byte key) - 0: , 4919F68F6BC44ABC - 1: 65, C6785F7BE4DE54D3 - 2: E1B0, C197C93B63F58355 - 3: BB7247, DFE092EF8184443B - 4: 38C2D022, 943FD999227C5596 - 5: D71E4FD0ED, 51040FE9A01EA901 - 6: C4B211EADC2A, 329429BE3366F22F - 7: 426DEB3FC3A4BC, CF1C976F6A19CE88 - 8: A6F813C09CE84800, 98D9FF427B3BD571 - 9: 4D1A9948FD157814B4, 5A389FAEEB85B8C6 - 10: EC3EA142C3F07F5A9EEB, 31E26E13F032A48F - 11: A75FB14365D1533CD3FBE7, 8EF01ACC568C0591 - 12: 891582B5853DD546FF3EA071, E013CFFE43219C21 - 13: 54CA848C49DCDEE076780F21F4, 298EFC7B4D6B6CFE - 14: EA7611C69A60F1A2EF71D6A7762D, 7D9AA51CFCEC8101 - 15: B2D1A211BC524B965A084BB4B21710, 7B2AC0EEB5216892 - 16: 5E81F1BFA270E804A488C9BFAB75811D, A67F627CE1E37851 - -OCB-safer-sk128 (16 byte key) - 0: , E523C6DBB3CA178D - 1: 5E, B1CB7EBE5780DF98 - 2: F4D8, 8036235F2BE7A817 - 3: 4FE268, 123320394EAC24F6 - 4: A5BA02B4, B8276B5E027D45DA - 5: 1571859CCC, 29406C5F2DF2CFC4 - 6: CA1E47447B95, 5D4FAF8FD5341791 - 7: 8710DB37022D96, E10040FEA9AEA9C2 - 8: 205990DC9A34DA3C, AE25CB49AA7A697B - 9: 757AFCB3191DC811C3, AA8CADA8638D6118 - 10: 6994F8C153522361BB92, 1BCEE09E928EB18B - 11: A86FA0CDD051BB60AF5AA8, 50A38F8E9889354D - 12: 8D3FD3EB7FF2269AACFD24BA, CB51CF84CEFC45F0 - 13: 03D2A313925D9490FC5547F95F, A1FF9D72E11C420B - 14: D77C0F0F600FE92F14F479FA457C, 1EBE1B4B9685EDFA - 15: 0CAF0A8BEB864E26058C7DF8EBA0EB, 1B153DDAE807561F - 16: 113D12716DFE0596A2F30C875EC6BA0E, C61F5AC0245154A6 - -OCB-rc2 (8 byte key) - 0: , 1A073F25FF5690BE - 1: F4, 3D3221E92E40F634 - 2: 2C76, C22C20B7231A0DB9 - 3: C647CB, 3E6348D996399629 - 4: 2021891A, 8EF76B24E9D55FDA - 5: 1966CBCBBF, 310D24024D573E8D - 6: 42C15AC9AAF0, 217E83C0CDE4F077 - 7: AB70F3F73DF0B6, 16AB2679D96A591B - 8: B7C7DD845D7E76DD, F33065EA531545CA - 9: 468CC16A37CF63EA73, 88879733F70AE3D3 - 10: 4F769E25A7346E22A932, 26E1A92FEDEE0597 - 11: 304A8B53B1CD24C6C27C17, 48B46E9F091B0B2E - 12: 4E3DF867FEFF0B8E06D5FA70, 53BB48BFB8AB4750 - 13: 2BAB3F0A8C38A3BD3C49DBBA5A, 52303CADCBB6D312 - 14: 3D04A29924589AAEF93A29003EE7, 120EF9364B83748F - 15: 486127A80E4EC599C461451CF1D79B, 2245D51599CAD629 - 16: AF8FB3FD2DB343F1AFF564FCBEA58785, 805BF441E660B0B0 - -OCB-des (8 byte key) - 0: , 8A65BD7DE54082AD - 1: A8, 3A83897CC8EC7CF6 - 2: 9256, DC66C39C7DD87D93 - 3: C145A0, 45967F3764F62F48 - 4: CD314BAB, EF38B0213259C3D4 - 5: 7074014741, 6748F4BAF06DD7BD - 6: 9A874CAE01F1, E382DB7235624104 - 7: DFA0D86DC4CA84, 627ABB432E50455E - 8: 685C2B2CBDD8D144, D166082E085063BA - 9: 53515DAAC7F7B8CE1D, 6680B6C26E1B0994 - 10: 2B3967812BF4155A8D36, AFED7F38AFEFC543 - 11: F4E5AC3CC5913B8A7F35FB, 6181DD3C46A6C24F - 12: F3EC89AD4235287D53715A81, 12CC354833FE5BD8 - 13: 66D554AC2CA85C079F051B8459, 097F31088CFBA239 - 14: 8746061C26D72771A7586949A3E4, 6CEF3565D0E45C6B - 15: FB3BCC650B29F418930A467EA4FB73, 64D12723E100F08B - 16: DE1C27E9B3C391AF5DF403291F2C084A, 6BADE4638AE46BE2 - -OCB-3des (24 byte key) - 0: , 9CB7074F93CD37DD - 1: 4D, 51541A838A154E0B - 2: 5C77, 60E86F2F1F4C6F96 - 3: B3D2F0, 7D74A9E6A061457D - 4: B3556075, EAF7A89A07453460 - 5: 1B61CE7230, F90D18620E1AB877 - 6: 3987FEC8D0D7, B5EF04DEE2E528F9 - 7: EBD0A7EBEEFF3B, A72CA24DD77A5DDA - 8: 429FB38DDABF76D4, D0578484C37227C8 - 9: F8DF28BF5C4CD28B1B, 5E7C4DC8E694E3B4 - 10: 2BF436BBE063F7E830C2, 8D919637C973C71B - 11: ED21656C8878319F1B7D29, 8813280C1277DF26 - 12: F45F90980D38EDF5D0FEC926, F9619341E273A31F - 13: 52F2D3CACC294B141B35D73BBF, 7BBC3F1A0D38F61F - 14: 2E6DA0FB55962F79B8E890E8DD8D, 8060799DCAB802E4 - 15: D6F9A6B2420174C499F9FE91178784, D3AAF969ED2F7215 - 16: 4F1CF285B8748C4F8F4D201C06B343CA, 203A2692C077F1B5 - -OCB-cast5 (8 byte key) - 0: , 77E8002236021687 - 1: 52, D57DF1037B6A799D - 2: 31C9, 7E781759B057D695 - 3: 5C8324, 56965D6CB2C97C0C - 4: 17D99099, 7C52B5D09475F5D3 - 5: 400082C475, 3CA5CDB9B4A0FAE9 - 6: 4DF0E4000C24, DCFEE2C3384F9731 - 7: 10004C3CE32255, 0A6832F985F61658 - 8: FFA6EA76B346893C, 6202693B153254D6 - 9: E96378C94D246AB51C, 5B259FEB715B9159 - 10: A9BED2D59A92D3D9418A, 1E7E066C098A023D - 11: 4EF144B7D4622BAD4DC840, 5DAB2C1D0DF56B08 - 12: 6DBCDF56E57CE47DD3D0CF44, 2A24F2A224368F55 - 13: 43241A0AD933635D7C8EAD47DC, 86B4B5AC22177F19 - 14: 920D6BDBE073F3C75052420C883D, 10943DBB23BD894D - 15: B2C75DF024269833B039CAB19EC865, 84B7DBB425E45855 - 16: 6A9424B6A873BB7155C01DC87E23EC52, 82C5047655952B01 - -OCB-noekeon (16 byte key) - 0: , C810FFEC70BB008FD7C314A732B226E6 - 1: D0, 3C48A2C7E0CE9B9099221EF2CEC56767 - 2: 5542, 518EDB8174B067CBF2568C6911378137 - 3: 65E8A4, 3E4EFF5F6FBC99EF3B71B11F566A20FB - 4: 3D0EF863, A366D5CE05F564B5E676EC78938CCC85 - 5: 89B17BA512, 0E83095D771F654CBD630AC114501A0F - 6: E9AF5FCFEFED, 3A283F7FF02274DD4B48C2CD7E36182D - 7: F7A001CEC51C30, 8392CC274521BB452134713153F36268 - 8: D796E3F23E31D4F2, 351C7B0304E127287A9A1DE38BB3167A - 9: C4E2BBF6B4827E1A84, 275907279D0764CF80D7E6626D81F994 - 10: 6C61226E61F70408A61A, 941AD1718D272BFCB8C5ACE08F90B2D1 - 11: 3C195850E7FD63EFC11F7C, 348A975B60908445230D4D56A0CAB008 - 12: EE5FF5362DA3744C9EAD274B, 875C2167BFAEB65F5601F2DB9035444C - 13: 7DB5392ED1933ED858EC0C52F5, BE6507D8AC743805A872658C680A4D06 - 14: FEDEAE2EC2059D22B960813B5E7D, A559933509C47854176CEEDEC12EB8B4 - 15: 64C81F2169F7CEFBF51E68D4186A36, FFE84A9B49F0E77A9799EDEC7D76B987 - 16: 66532B678D23130714E088FE874C4743, AF95ADA553A68319DBEBDA4172E18A22 - 17: 53E56845C091A1E2372F3FC772017C9804, 9A6AB7CEB632429F2B31FB91C141B6F0 - 18: DAF6832520591B886E2E962ACF5B9D0A38E9, 73FFEBA8997E0C55CB0B4ABE59C86BF6 - 19: 108F04FEFCB5EE68033E57346012CDEB348D14, E08E90976E0F7868994B017D7A007AB8 - 20: 101682160DEB9667FB073F96ED1D9C063ABCE668, FB79A4BEBCA9A7832C72116AD9B98D41 - 21: E10AB0D22A6C4C253D818AB6AF1A3FF5811C6CEF24, 174CD350B069A239F9EB80A7BCADE8B7 - 22: 9F62A79B25D4F5532D78228A50516F97ACB7A2C5DF13, DD25DD14174B5667B0AD70732323C8C4 - 23: 2A0AA96147E74A3B881D62BA692EE27927A9EAB351C6DB, 9CE03AACF9318770BF7E095F90B470DB - 24: 29E38605973D0218AA8BAF2FBAB7722DB242C4775E453372, 72D6038E8927EDDE469F98B84C74A8A3 - 25: 8DBF8C2B5477DBA6E07B269293713D60D60BE29E677CA35C33, 83100BBC1401C890B36890A3FD0CD4EE - 26: 13DE9776093827F254DBF500EEBE0C65DC602A5FDF6AEFFC34D9, D142F6CE9E43633CBE94A2BDCC9AC5A8 - 27: 4A25370043862CF7A12A00A5A278623F9BF8DE33212D35661591EC, 62064DD74F9F6D77682B43D9B44E26B8 - 28: 37C6C6C40DA0581BF041770E330A40185E90426A1A4AC9BCDBC5CA7D, E77EE99F62EB1A38CCD1E90CED6EB5C7 - 29: 6B9047158068957CBF77F35988E5C926C7B262A8EBA9D33638A15B1505, 913DC491D3B2AFF172053CC4D1271F46 - 30: 949E5F05396F60722877EDBAA5D7437DDB24B3E25651458C266992D0854E, 87D4396BBC24646659F10179823066B2 - 31: D48489C360F6EB2BF4155FFD7CCAFA4793B8870BFA4A95C9BEDD372F51C04E, 173EEB238E6186D5A93AC6072A22B772 - 32: ACB6F91E8BDB4CFFE1F2A5F6C712D16177EE06842E4CF27F61C8F68D44C842FF, A1E5F2560183B0AFE466243EF3921E4D - -OCB-skipjack (10 byte key) - 0: , 90EAAB5131AEB43B - 1: 2F, 6274B82063314006 - 2: DAF6, 6A6BCCE84FD4EF02 - 3: 5C2A88, C83D54C562A62852 - 4: B6E8FB5E, C44459EF41C8F296 - 5: 6C0888C119, 269DD7657BD0225F - 6: 1FD9AD7ECCC3, 3CA090F46B107839 - 7: 1EDBFF8AE458A3, 440380BF9745132B - 8: 04DBECC1F31F9F96, 2653620A4877B0E6 - 9: 908AE5648AF988A896, 00180FF33C1DD249 - 10: 53E63E0C297C1FC7859B, 36616209504C4230 - 11: 407BE16144187B4BEBD3A3, 4754B7DD4DB2927B - 12: 9961D87CFEDDF9CC22F2C806, 5947FC41E6B9CEC9 - 13: 9F5254962E4D210ED8AC301252, 97A392BEAF9B3B04 - 14: 379FDA76ECCFDAAC10F67FBF624C, 1D895ABD932BD5EC - 15: 1D5A7AD556FF3078284BB21A536DAA, 01FAE2F4936ED9D2 - 16: 4B8B71396924880CB33EA6EC6593F969, A0F4B1BE3B9B4CCE - -OCB-anubis (16 byte key) - 0: , D22ACF880B297DB0513DFAF0D2DF57D9 - 1: 59, 210A179469D6568AB9470C760415574E - 2: AFA5, 1223F9CD160ABE2F257164C6E5533C87 - 3: 969BEC, A57EC767543CA2ADBA4F5A7423ECA78A - 4: CF8B31F1, 13B5BF9CD87CE15CE696F3AF1B082650 - 5: 9B22DF3852, 4937FDDA0AFDDA04CCD53CCBB0A82745 - 6: E11719B2F0F8, 6847931DBF0223F5CEF66AE3F4DFCF9B - 7: 5A85E0F6DD2266, A1A0AF45A68A681CC396615FE1E1DFB5 - 8: 7F2DFCC65ED86976, 13614A3C6E0E08611D8DF8EE5B7D788F - 9: 1DAF10DFA3F1D53E50, 673632B6DD553BAE90E9E6CC8CDE0FA5 - 10: AF74FD9671F9C0A9879C, B8B4DD448FE967207227B84E42126D90 - 11: 49421CED1167A882E26297, 21C8951A1761E4BD13BC85CBD14D30BD - 12: BC0BC779B83F07D30CB340DA, FAABD25E14FFD8D468AD6616021F604C - 13: 843D7E00F94E61AE950B9AA191, 08933ED5FBDCAF72F788393CD5422D0F - 14: 296F15C383C511C36258F528E331, 8BFFADF5655C1864057D69A6706D1739 - 15: E31D2E80B2DBA4FBFAF52DB0513838, C4CD36821EC631CCBF1F258EE9931288 - 16: 87F319FE9A48E2D087EDF95563896EE5, 517960488E5A118D150A1573E76C290A - 17: 9632B7DC1740BBE0A7AEEFD0F535B5AE8A, 0C24D0950873621D319A928862D3A6AC - 18: 359431ED4B3AC537238CAC2F86126972D403, 4A0CED2F4BFA3355C17D6C5DF9FABFAA - 19: E15B50172EE8DA9C552D448A5A48BEEAA2F11D, 8166B2A2D3A0745D1055F9F503FD6C03 - 20: 75842DDC0D5E3BD80225E4BFBD1298421244D7EF, BB957BB2582B67B63978BCFD7A949EDD - 21: 3DD69162716D5F3E096E614991CAD7ED8E01F926B8, 40A954F31F5B0A2C5DD220ACED8D2B3E - 22: 8A49AC14F59593D5399A10F9346E2FD36F47F64ED419, 4324D408CE7F86370495AF14FBD1A859 - 23: 6AA8FA353BCAAB4262211D75F13D27BE173526B8BC3CFC, BA3A27D79EC8ECBC5A78CB9FD095B766 - 24: B918192BB72CFEF980298EEE570460356A4BA1755576FEAA, EB341ECE0A070E769F498600EE4EBF77 - 25: BEFAE0B77E42A2FD18958D9E43202E8A338562AFF8317461B0, 444C1D6BDC026A01012BB2CEEAD89C2C - 26: 07E86D49CFFE6FB08FDF44584033AF321447003D8AD3862C00C9, DA9355A79B224EF662DA65F19BE494A7 - 27: 911BB223AC6F6E54082FBFEDEC300D73FCAF715CCA35949212B372, 3496160A46A21DCDB5A4C179F159D860 - 28: ABB563FC803715F59AA35460E98470E2E94E4270455ACEBF4297641B, 899CFE1946A060DE620879B8A7464718 - 29: 47D98E83B5849CDE19B14ABCF9EA6CA9684AB49A3AB36BD14F328D808C, 6D76CD5EFF6D4AD3B67A56DF1EB42E05 - 30: C8BF0B71A95884FFB93D64C57E327A4754EC5A1EE26632CF8E0B6B26CBDE, 2B3BE785263B1A400E5893273AFD09AE - 31: 9804D668CF2D75CA58C9671F65630E33909269B9511AF9119BE88EBB35F00C, 3DDA028B1A2339CA817DC8D9371E0FF8 - 32: F6E038A82A09BCD20BAAC7926B2296B78F9CBA9DD12C497C47EA08DBCD8CEA3A, A203FC1E68E21A52E72224891AC10EE2 - -OCB-khazad (16 byte key) - 0: , BDEDFF7AA0070063 - 1: 00, 67E951582D66ED93 - 2: 5FED, 09DC8AEAD70673DE - 3: 26A7CC, CE1436CE1E37D4B0 - 4: 3D2BD063, 574C24395F31511A - 5: 597F1AFCB1, 6FBBE820C6F26CDB - 6: 202DAE442DF6, 58CA6E5706C9852D - 7: 7C20EDA18E9444, AABF0DA252A1BAAD - 8: DEC02BF76DFD5B77, A0A97446B80EACB6 - 9: 5D7A42F73843F9200E, A1DD603372D124CB - 10: 0D4710E454C19B68369E, CC78E9D7EAA6A39F - 11: 126694191BF09A29DCF40E, 76C9B84FA3E8913F - 12: A94EBB86BD325B4FA1942FA5, 613DE312DB1666F7 - 13: 4F9462386469EA0EFDC1BFAFE9, 5247244FD4BBAA6F - 14: 4EB794DFCF3823BDC38FA5EF3B23, 0C12017B5E058398 - 15: D870479780CC5B3B13A7A39029A56F, 003D3FCD31D497B5 - 16: A47BF1218AC86A60F6002CE004AF5E50, B4EC27091D5DCD58 - -OCB-seed (16 byte key) - 0: , D80D16D2D0FB2BD9EBA4912468B893D7 - 1: 12, 8776140CB818C1CBFD2CFCD8BDFC9FFA - 2: F8A1, 597381977898AC43194C302216113CEB - 3: B35B5E, BC327275E7A552C4E0AC0FCB8403A6C4 - 4: 19F57542, 4E49DE569547B619E4187239D9B755C2 - 5: EAD2D99E86, 53DCC5FAB4DE25541A22AF0309C9FE78 - 6: 4902A8FF9AF9, 950D9A28DFBDAECE5F14D47E6B7A8B8B - 7: 45FE502602EA4E, 69CD243A3CF17FE51ABBFA2CDE510BCC - 8: D54F2EDE48207CFB, 775EE6140AACF9D56787071F08F36F67 - 9: FEDBBFD9FAABC80186, B37B2C643D62A205BD009BB55D50B918 - 10: 3541A86C889AFEB783B7, FE41A36AC076F417B6A3870DB712CC1F - 11: 62EB71A2EAFDDE1A050AFC, A953ECF1F0B53438E869F0CFB84CB142 - 12: 77AFE377460D6A51208194DB, 5CC2A9D8499F1B25D78937DAFB1DED10 - 13: A34FCDD7CA45DFAA2178CDC7E8, A14A119115143EE2B4719282C9E2356C - 14: A61FA4E9550280C8AAC87EF7A204, A87DDD9631C87ED0792C067E8D7F1D9B - 15: EE82AF5C51896AED298B0C12E00ECF, 9051873090B013508F93677D3A080E96 - 16: 5D532646FAD510E984959C4E14F853D7, 275D8DF932818030F1269804DE06A73B - 17: 1D77F8916DF479DDCE3F49A1D9DEFA40FB, 99611A067F45F140AFDB6FB7E9C23DF2 - 18: 5857267B77E7B8D7732509AEAC0AA80BDB2C, 3159BF09910493977A33268C7F7DBC01 - 19: 1CF64E54D48811F02DAAE472846E65235DC8B7, 78F88A35E2D93A0746058D1B37762A27 - 20: 8CC20A5FEFE9AAE81742DE70453F62A961188DB7, EDA9E9208EC38152E53AFD62ABC77F0B - 21: 1D6CCEEEC72CC7369C33F5CD83ED0DCD6F5613D562, 9FEFD274F3F906B11DD87CC2C0F9D0A2 - 22: 20A9C1EAD88F005DB8F69C8BE005D8A010B261FF2EAD, A341F754932DCBC6DAFE4231918A9CF1 - 23: DCEC1BB28E8D77D69B5148FB02E02C281B68BA6E9768B0, 6AAB2EEB1D25D2DF7CEEFA6054E295DA - 24: 7C4F7165943DB1EFA5731F5C75931F4391F0C40D5731BC54, 3FBFF88733ACE5289D9FB9CD24C44C3F - 25: F5E2C8A9B3A02E0BB86F9E969B0EDA5F554B0C8902BB6F4643, DFB22569019686B2EE92ABA9EE6610B0 - 26: 42B7D0E9613AFAD6E8093E4F638BC96E22413F15A84202188C31, 002F0F602F596236A8F239E81CE47FC0 - 27: 88B89B7756BD3BE09467998FABD12BCE87E5FE994ADE9B30844AE6, 05E0E8AFA55C3B571A849CE4C9F1F477 - 28: 10452565D15D1D829FC54F61960C6A749AFB91086E388269CF6B588A, DD88B0C63E040DF8878B3C919AA95218 - 29: E68619409B86082C744496FC3F645CE1134E84192D2CBCE1CFEEB12612, 83258C337EF21302724CE051A03195D6 - 30: 840277319319EF1DDF6A57682B6695550157F5B76756BF81BFFB3394AFC0, 183FA85F8E91F8972DA23108FA066F20 - 31: C74A4B01328B809397C07F4FC16131FBEE6396293181C327ADB50EF39CC936, D6C5CF79D47995D7CDB5745F601D859F - 32: FF3FEE866339B01DD2C1EC0C0E569A458A77DD014AF0CC9C0A8DC52A52133940, BF1AF01F2CB34CBAF1EAB96FBCCB5404 - -OCB-kasumi (16 byte key) - 0: , 7B4CE3A5B7284F8B - 1: F8, 80584D787B7AE753 - 2: D37A, 7BD7B52BE65B995C - 3: 2D07BF, 6E6E16FDFE808D21 - 4: 9F1A8E7F, 810CDE98B80F2CF2 - 5: C6A7842512, CB6E9709AD7E8545 - 6: 056553F25EE5, 24A74A113D68E373 - 7: C3E0215DEABD43, 80B9F0ABDC207E04 - 8: 38DA7B24B04DDF91, AEEB273DCAE4F743 - 9: 34169FBF64966E0EB8, 1D10D18FC0DF5372 - 10: 5B3A510F1AE97BFCE1EA, 5B1342A77724DBF7 - 11: 39D1B5067E584E59BB6603, 38EDA20D46B2563D - 12: AC2DD02E2406D7D8175EB308, AE7DCB1AE6188975 - 13: B0623EDBC20FEBEDF9B4AB70E6, E218732D221A04A4 - 14: 82F57A435A92E28B56F4EF5E7EA8, CC5842752D089C26 - 15: F2D54E3B9022AB32F668AD5A20D050, D811DF3DE76089FF - 16: 1CAC13A538AFC64D9747226AC23F072C, 2DF49C64213B35B9 - -OCB-multi2 (40 byte key) - 0: , 70A2AD75028C8B3E - 1: 3E, 76BE76B249142049 - 2: 5C21, E31CDBD0ED6B864D - 3: 62BC9F, F1124FC4C9C82617 - 4: BB5AC85A, 97035E20D4FFEC81 - 5: 500D9D05E3, 86D5EC5AD1D55434 - 6: 5179B8442E46, 432EAB80B938A00E - 7: 361000D13C364B, 5ADB3F9FD65EC776 - 8: 5C5BD790B927CBE4, F6ED8E9D330FD37E - 9: 2020DD735C5D7B4739, F98DEFD6A8368E1F - 10: 008A8548790A3582C2AC, 041C4E2FA196390C - 11: E6409403D3E2E4385EE54E, 25AE9113A0E7A3EF - 12: E23E598908C755FCF9D51E39, 21BF8C9F319FB44F - 13: C1F13F46FF04717C7E54FFBDC7, E7D8CDF40A1D78A5 - 14: 27721EB66D4F6362308B96DD9895, A374C96FCA94C809 - 15: 1A393F94CB9ACD3BB93D8766C63569, 45A090303B71D35D - 16: BCC0498FB13CEE8A615FF6409EDF1707, 9589A4CBC481A455 - -OCB-camellia (16 byte key) - 0: , 6972CC27A9711EAE6654851AB8E0C53F - 1: A2, 208D783961FD532E14376B4EE904FE52 - 2: 1177, C7CC74015F7EDD9A72F7435494D8A050 - 3: 0F8502, F1A708AA0F485A554E2E76592CD9D7F4 - 4: 9986180B, D47186A8B539F890824DEBA223861ACD - 5: C0FF4519C3, 4430A9453016E4974CFB5380A1F3E95F - 6: 2AC54E3E6A0B, 6E320BE8DAF4BA0462A57BECC574740F - 7: 846053E1A37A6A, 5B91B680B92517781DC362C2F3E144E4 - 8: CCB09ECFF76EEE2C, F91E7E245F4C8A404F3ECC7DE49261C3 - 9: E049E2AA271388106E, 8C6981A160D831F4DC57FACE5ACCF006 - 10: 761782341D52BA8AD12F, 672DC4B06DBBCED80381CE4845757F0B - 11: 92AD781DEC4549940265C6, DB04CAABC54E71FE1A9C41DF1ED5C52E - 12: D507B77EEE9BE07EAD700143, B3EFCC0B27DC85166E04E7BC39E45C58 - 13: 5AA1AD6B9CAE3001D4C1CC4048, 424D8A22F7B9ADA30AAC0C1D3D4E77F9 - 14: C69E96F7A4B9A6F0F2C7EFA72C26, 678144F802AE9DD83D11877779B48972 - 15: E2596B3FE48EF6EC50D857C8B4E3F4, DDB3BD2B8AB2FA71C7F56C8E57AFF2C2 - 16: D81664A002E03A75E08CF16EE7670E97, B56A0B0955E15E62C557C6E66782AF4C - 17: A8F2696A972A87C784FDC775439470D822, 36E3AD03CB18002A17D49E466CE64814 - 18: C2B537D807BD1ACA734AA072D9C2B836F588, 449B05D145666D1E5A92E204FC3507D7 - 19: D5418F1288BFA7D39D23B3C6ECF797397D3D44, B0CFBA612544B8AB159E9D4AD1FFB3D4 - 20: 2F9522460182291C6F264308E0363B9FE312E517, 1EE4CB38075B67463FB9DE26DF9D581C - 21: DF2881568BECA504A66E4B15BEA58AE6E99D0270E6, 3283D46803FC33098BB262FC1D2B2157 - 22: 4B0083A4CF7E166C8466A5B991AD0CDF71F9DF010EE7, 7C91D9A5DF6C76CB02D83D8C7F3D8D07 - 23: AC0457474B4193647D62906BD08D8C8EB32BE151555B68, 0A448FF3C468D7CDC945724172CEB66F - 24: E6E7786EBECDC296F072CD66C89141C700DE2A8B5DBF6549, 68ACCB5FEC04717FB21FF3B46A34BC74 - 25: 860865770047A9798D90C9365E9C9F8210CB804D785D65E2C0, A58F22FFC4CBFE3BBA451BE4B3B95723 - 26: F157588B4F98D798E6850D8F04ABF9905C1BBB2D055ADE1EA424, D6960C1EA6DAF225366374333D38EBDB - 27: DE3431977821BC861CD88E4236BCAAAFFE3C894607498FB8D68746, A3D23729464BD38338F4AC5B4D9F5C81 - 28: 3F2F0AB546E118B76B937D539806DC02D02A5D42D64926A9E1101D66, 3C0D2D23F5DAF7D36DDC0F87B4163F42 - 29: 3F9FFAE1D7BC62BB80A2FA2728FC33FF02E26CB9F52EA8D03FFE95A49A, 96B45B3F946E629ED974EFA7B66F5DDF - 30: A398B66C8425CE9E8A6BF5AB900CEA1EAE811E06AC7BC0D69A53FB2015BB, F83411C72B7DB201B254565D1DD8D1BF - 31: 9C760ED6C10A80C52F092ED20AB1D03A52427B6235F3C7FE7541033AACDD74, 8AB98FCA89D1245B177E0AC06E083024 - 32: C38F260587B3BA9919601BD0A56909FB36ABCEB8968D08DD6B74F1EF5ED7065C, E357D0D56124276790DACA38D95792BB - diff --git a/src/libtomcrypt/notes/omac_tv.txt b/src/libtomcrypt/notes/omac_tv.txt deleted file mode 100644 index bffaaf68a2..0000000000 --- a/src/libtomcrypt/notes/omac_tv.txt +++ /dev/null @@ -1,569 +0,0 @@ -OMAC Tests. In these tests messages of N bytes long (00,01,02,...,NN-1) are OMAC'ed. The initial key is -of the same format (length specified per cipher). The OMAC key in step N+1 is the OMAC output of -step N (repeated as required to fill the array). - -OMAC-aes (16 byte key) - 0: 97DD6E5A882CBD564C39AE7D1C5A31AA - 1: F69346EEB9A76553172FC20E9DB18C63 - 2: 996B17202E2EDEBD63F414DD5E84F3AF - 3: D00D7DA967A2873589A7496503B3DBAB - 4: B43C24C0A82DAA12D328395C2ABD7CAE - 5: 9B902B6663B5FEDC6F9DCE74B35B91F2 - 6: 06A9678C65D7CE225E082ECA31788335 - 7: 7D67866CDB313DF65DED113DB02D6362 - 8: 259E28CF3E578AC47A21A77BA9EA8261 - 9: 32F23C8F93EA301C6D3FE0840CA8DB4B - 10: C2B06388AD6F8C43D19FE4F6A8ED21AE - 11: FA8622485DB2F62F84FF46E532A1A141 - 12: F312D9B2E6272578F406B66C79F30A0E - 13: 7A5DE06B2BFB75ADA665E96F680AC098 - 14: C3B00380F0BD8E2F5C9DD9945E0F36EE - 15: DDD87974A5FB2E7A4514241E94526B5B - 16: AD24FC47A0FEA84C54696DE997A94F4B - 17: 7538713D8AA2AE3726307EFF087BBF5E - 18: 7619A52B4C34A98440812F5F28F8DC4F - 19: 7E797B8846554888622CC5E400B2FA44 - 20: 61E8DD3E09145F5657DB4B8F7BD2D7D8 - 21: FDAE2A3FE60DDF1871C2613A293AB6F1 - 22: A186D6EFD10DFFD2C088480B0A784185 - 23: 3119D337865618CDA55C06FB992427CF - 24: 413E3EAD7E3F169A37C49F9CA92E235E - 25: 37A55AF22373B9A1E2F8368B2FB992CA - 26: 4941F604C40EEEE1A16CFE073C12D1FE - 27: 3E8F4A0876BF12A2DCA87157F15DC884 - 28: 5DFAE292D8EEB13D8FE5725E5D169742 - 29: 59160455E0C0B35D950BA67C77F9FB05 - 30: 5AC0D736A06A7DD146B137ADEE78EE06 - 31: 0CA1178F28B953045EE76E2E760036CA - 32: 025616215F870D1EF838AD1D2AE0C649 - -OMAC-blowfish (8 byte key) - 0: 2CFB5DE451FFE8CC - 1: A5AC339DB44D020C - 2: A3CE0CF62249444D - 3: 3076B7129CE3F6A1 - 4: 9E091A637DDF70E3 - 5: 275199AB20A5F09C - 6: CDEDA8D16A401E62 - 7: FC980516CF5C9E30 - 8: 659D0B31D21B622B - 9: 8306847B5E72E018 - 10: 7AD029BBF1D2919F - 11: 133181425C6808C9 - 12: FC5AC60E367F413A - 13: E0DF8BCCF0AD01D9 - 14: AC5015398FA64A85 - 15: 1F068F22AFFECEE1 - 16: 8E6831D5370678EF - -OMAC-xtea (16 byte key) - 0: A821403929958A1A - 1: 68C4A02D47C2E7C0 - 2: 7D37358141506DC1 - 3: 9BEA3AAE55B75F52 - 4: 884D053D05CC8DE4 - 5: E953747483FF4E0D - 6: B6E77E72C9738E4F - 7: 8AB67D2B24E3D512 - 8: 329C0B9D504A0D41 - 9: 50323DA8ACEF4164 - 10: FA3239C668C34DA3 - 11: B5A12FC81FC24084 - 12: 71A01A3ED3936934 - 13: F29B630CEB6AEDDB - 14: F8802F0D4504D55E - 15: F844B92162038F99 - 16: 99AECD7CA69F0465 - -OMAC-rc5 (8 byte key) - 0: E374E40562C3CB23 - 1: B46D83F69233E236 - 2: 7CB72B1D335F04B0 - 3: 94457CBC97B31328 - 4: 543D0EDFCDCD7C76 - 5: 5164EFA8412EAA5D - 6: 13CA0717EF95F9A7 - 7: 2AA49A7AA7719700 - 8: C9E7C56125C3D90F - 9: 2BE3E15FE58648AA - 10: 77D0B90372D6D0FD - 11: 17408F62ECD62F57 - 12: 7864EFFA59DC059B - 13: 3212E76E25E5DEA8 - 14: E2424C083CDE5A6A - 15: DE86FFDBDA65D138 - 16: 85482C24D61B8950 - -OMAC-rc6 (16 byte key) - 0: E103BD8BA47B7C1C010E1561712E6722 - 1: E51AEECFED3AF40443B3A1C011407736 - 2: FA6506C5ABE03381B045D28D1D828966 - 3: FAC4237FFE7772E2299D3D983BB130DD - 4: 3A7E24D41121A5D4F96FCECF0C2A4A10 - 5: AA44291E5500C1C8E1A14CB56E4F979A - 6: 4B8FDA6DA6B3266E39111F403C31754E - 7: 4DF5F1A1C8EBC7F56D0D12EEB63FF585 - 8: 46A6DDE419355EDE14D31045FCA1BA35 - 9: 71756D4D3DF59578B7F93FD4B5C08187 - 10: ADA292A19F8636A03A8BC58C26D65B0D - 11: 703190DAF17F8D08A67A11FDF0C2A622 - 12: D2B94CAD1AFC5CD012575964D1425BE6 - 13: 45FD0069FCA6F72E23E4DB41AA543091 - 14: 36F652600F5C9F226721400A7199E2BA - 15: E8CC6389ECF8EF1DBB90A0FD051B7570 - 16: 8125446B975DBDA742A903340D6B96C7 - 17: 00B55E4399EB930E592F507F896BF3DC - 18: 33E58F42A47C9543A851D6CA9324FEE0 - 19: 9F28FDEA3EC7F515128F5D0C0EB684C5 - 20: AC1DAF6C01AA28BCC0A819189FA949D7 - 21: D0532B5F54A179444D052A4D2AD6E4F9 - 22: 58B80A66549404C7B9F64D5AE3F798AB - 23: D0D6D586477F92311DDF667E0749D338 - 24: 0DFC0FAA67FF114398CE94D0688AE146 - 25: E163B8C00CF5CC9FA23ACACD62B53D64 - 26: ACE9270456AF9BD388BA72E98825CFE8 - 27: 4302EED9BAA19C7A296585E23A066A44 - 28: B3EEABEFAB25C7478419265564715387 - 29: 9F0630ADE9C74AB2981D63F3B69E85BF - 30: 1215A9446A275CCE2714F94F3C213BB7 - 31: AF43D7F748DE0E3458DB970BAC37E98D - 32: BF871AC9E892CE0DCD7C8C7ADDD854C6 - -OMAC-safer+ (16 byte key) - 0: A2C8C7FEA5529D01C3FF4E9359EF74F4 - 1: EAB87021118FF24FE79B69ABCCB14A8F - 2: 789566F467BAA68F4CC3C4B61901D6D4 - 3: 369F41EEAF7D628F9E0D77BE43BFC1D2 - 4: DC46A20E1F36F45006ED5B43BEC20DA6 - 5: 8F150CE34F57BBA2E6CE3431B78E4ACD - 6: 61CD154478BE20F33B26CD8FC58091A5 - 7: 4E6DAA575CF28F1F48B256262B7D558C - 8: D21FA4F1859571DB91E92767C5487AA2 - 9: E3D009DC7E71FBBB030B8FF0B544A2C9 - 10: 094C236EA48ABF7DBAE5A88AA3DE07D7 - 11: 00C401996F8224359566660AC1CEDAA1 - 12: D580EC60F712558D875F01643D96653F - 13: 8482298027C7B4D5969787A1DB1B1F2F - 14: AB726AE3DA95CB242E63EF876A4BC446 - 15: D668ED4919003F5E45590663FAED41DA - 16: E4CFFD7E0E7B176867C386001849FD6F - 17: 37B3C6DEFC5573879006D15F982A397C - 18: 0AB8847EE6A41A0E960080EF0D1BF1C5 - 19: 2C94FCA2A685F276A65ED286AE12FD9F - 20: 23383032032D7B5165A31ECA156DBD23 - 21: E1EECFB3D671DF694FFB05AE4305AD4C - 22: A0F6CA99B96CD1EDD04C52828C8A4D74 - 23: 12D6B7053417AF3E407EFD6EE1CC38FE - 24: A566D1C39AE7A1A0A77D5A1F56C5FAAB - 25: 81C9FAECEAEA326140AFCD569668F669 - 26: 6A00BF1D0DC893868378E4347CB4A1B9 - 27: 98842956DBE7AFB1BF49C46497BD54C7 - 28: 88EFCD5A1644B75BB0B3F5DD338849CE - 29: 77EC62C278C61163B1BEC595A11F047A - 30: 147424E817DC69413CC657E0CB292F7F - 31: A2946CBB910743EF62D8A3C7391B9B9B - 32: 00EEDA55520B8A5B88B76487E80EB6E1 - -OMAC-twofish (16 byte key) - 0: 0158EB365FCCFDD94EBA6BE42B6659C4 - 1: 17DA580917D147D10CB73DB6800B0E59 - 2: 3F185CC15EF3328D3E075665308C07C8 - 3: 5712A97ACC9D08FE9D2087D0CA16B0AD - 4: 90425A8CC1C026DDD896FC2131AF654B - 5: 30A43D4FEAE71F5396308C16DA081B4A - 6: 6839FEF605704D49F1A379A9E9595E6F - 7: 56A8F06DFEE543971B351B07430E2026 - 8: 36DD0E4B55C5314F9F2753D7EB6F0849 - 9: 8E319249A3CD456460F410F518F8CEDB - 10: 463978BE2A063C22E71DC71520723517 - 11: 1B735E45FD3DF636E0A6104D4A2E9CB8 - 12: 628A82213148AD9791153D5AAFBDDFDC - 13: 21AFDF08A36ADB6659B656C8EA0800E5 - 14: E5C3E58803DDBE174E0D4C2B8171AEF0 - 15: FC6981F2B4359BA05988D61822C0FA88 - 16: 7B03498FAFB04A6542248852225F9DAE - 17: 9B173E91E59A940186E57BB867B8307B - 18: 470BF2EE614C8423AA3FDF323F1C103E - 19: 6E664AFDFD8306547BBEDA036D267B79 - 20: F61AEC1144C3DD646169E16073700AC6 - 21: AE503B139707AFA494F7F2DE933EE81A - 22: A0A8BDD4ED0DCAE4A8E1DCEE56368FF0 - 23: 460B8207930DA434AE6AFECC305D9A26 - 24: 7F03F8C7BA5365CC65F7864A42693BC8 - 25: 31448849D6190484192F29A221700011 - 26: BDA941019C75551D858F70FB1362EB23 - 27: 2880CB3E62447AE8EACA76C17971BB18 - 28: FC8D710FA3990B56357E61C2A302EB84 - 29: 793CD15348D7DFF301C47BC6E6235E22 - 30: 6FB0CE69A15A3B6A933324A480077D35 - 31: C24FCA5DD4AE0DF2BFF17364D17D6743 - 32: DC6738080478AF9AF7CA833295031E06 - -OMAC-safer-k64 (8 byte key) - 0: 726FE2DD40A43924 - 1: 2A138B65EB352621 - 2: 9588A1B53E29616C - 3: C025DEFDE1A59850 - 4: 73D062F1B6D8E003 - 5: 944598A2FC8A2D76 - 6: B176C25D8CAFFC98 - 7: 14F05014DE6A090A - 8: A7B9847B2CE22D0F - 9: FCD71310CBAA3A62 - 10: BFF00CE5D4A20331 - 11: BEE12A2171333ED5 - 12: 333FD849BEB4A64A - 13: D048EC7E93B90435 - 14: F04960356689CFEF - 15: 9E63D9744BF1B61A - 16: 7C744982F32F8889 - -OMAC-safer-sk64 (8 byte key) - 0: E96711BA37D53743 - 1: 7DCFF26A03509FE1 - 2: 0A20EF19C8EE9BF2 - 3: FE2883748A6963CF - 4: 557060195B820A18 - 5: 771A7931FBBE5C0F - 6: 6BDBCE5F96CF91D8 - 7: F3B924CCE8724595 - 8: EC7191286D83C2C3 - 9: 94F55B19BB7A8AC1 - 10: 2189F4F2B06A8CA4 - 11: 99853DAEBCA33A46 - 12: 66EAC37A033802D7 - 13: 845D7AA866F8A8AD - 14: 33A874DFECAC22AC - 15: 63DD9F7A7F3683DF - 16: EAC277D951676C44 - -OMAC-safer-k128 (16 byte key) - 0: 8037B89AF193F129 - 1: FF2314E87BA6AFE1 - 2: C3243DF896B61D85 - 3: 0F61C715CE821AB8 - 4: EBFDC6A9CFD2F5A4 - 5: AB6497D7AF2C7FFF - 6: C920CEEB7C1819C2 - 7: 3E186951B545A7E5 - 8: 5EA36A93C94AF4AC - 9: 6A2C59FAE33709BE - 10: BF1BAFAF9FC39C19 - 11: 69EB6EF046677B7C - 12: CDDCEE6B20453094 - 13: A3833BD3FED6895C - 14: B6C05E51F01E049B - 15: 90A2D0EAB739D39B - 16: 07BF607A161D0A66 - -OMAC-safer-sk128 (16 byte key) - 0: 5E8B137A3946A557 - 1: 0228FA66B13F3C7E - 2: A6F9BBAFF050DCDD - 3: F75880F684A796CE - 4: E0AEFB8E32040EBD - 5: 9F65D658B86D310F - 6: 3FA52804FB46CCAA - 7: 2F6D12D199FCD2FB - 8: CB56AF60AFB4D2BB - 9: 8E6F0FF6FDD262FD - 10: 490245BE3CCCEDE2 - 11: EFD319AE46C73005 - 12: 43E00E545C848995 - 13: 10444B41ECA15EBE - 14: 521775C389D5BE71 - 15: 9B683EF8B097FEBA - 16: 3C5D746EED09530A - -OMAC-rc2 (8 byte key) - 0: F001FE9BBC3A97B0 - 1: 8F8DC9C952897FBD - 2: EC82EAD195AAC38C - 3: 53DD52269B19E9A4 - 4: 9B86F64BF72A0647 - 5: 664A88A29F2898C6 - 6: AFEC3F71C1415666 - 7: 9BA1F2C1A2E765F9 - 8: 402A12120908B436 - 9: 03ECCD4C6AF44144 - 10: E8CA3529B5D9D6FC - 11: 951EE10779CC585D - 12: B9083CA88E7E819B - 13: AFFB9E884DACC5B7 - 14: E942E8BC241343D6 - 15: 9B190489091344FB - 16: 9330A9E05554A15A - -OMAC-des (8 byte key) - 0: C9085E99D74DF01D - 1: FAC84F0EFBEF8630 - 2: C37C5FECE671CF16 - 3: 45B2CBEE8701A5B1 - 4: 53665E1F024EB001 - 5: 357123CEDFC9FF61 - 6: BD2CFD33FB1F832B - 7: 1AAA9D8C9120BDBF - 8: EB9F589AE9D4E78F - 9: C8F9D2ACE691922D - 10: 81ED6F3611DDC0FD - 11: 2965ABEAC46839EE - 12: 2208B1E095F7AE2E - 13: C0414FE41800113E - 14: 653A24119CF43D97 - 15: 7FB7CE0862958B37 - 16: 55097816B10C549B - -OMAC-3des (24 byte key) - 0: 7F07A9EA8ECEDF9E - 1: 4E2A652EB5FBF5F8 - 2: 4F84E3779ACCB9F5 - 3: 7134AB3463115DC6 - 4: 82327BE8EA2D7E0B - 5: 24950B9C14D87CD9 - 6: B25A097BB7E0E18A - 7: ED51BAE55ED925E7 - 8: 56B79E7644556975 - 9: A65BD98E4D4E31E2 - 10: 11145BB51514482D - 11: 397486787E676BA6 - 12: BD1F6DEBAF6D9AEF - 13: 5CC3921F7DB815CF - 14: B0C0E60DA5F727F3 - 15: F8637AEEFF10F470 - 16: 0EA19531D42706EA - -OMAC-cast5 (8 byte key) - 0: 7413DCDB9F0C3100 - 1: 423799EDF1472B79 - 2: 03856F0CB4F11606 - 3: F152AE6360813DE0 - 4: 853998BD980AD146 - 5: AE6C3D667DB8B414 - 6: B5A4986A34BDE20F - 7: E5ABE5B979798942 - 8: BEE8DFED4555F405 - 9: 6B5339E952AF61BE - 10: 5E867CF34D9C1149 - 11: F9C55CB3BC655E08 - 12: EA09A2929AC7D915 - 13: CE8EB0E4370E1933 - 14: 749A424B2AA91B98 - 15: 8DDA93C2B814D5D1 - 16: E8B0B219D4CB699B - -OMAC-noekeon (16 byte key) - 0: A9F50A6567FAD338AB5727B3B94DEB82 - 1: C9EC17EF3656C9056E64E692A449AD24 - 2: 7D1F6A3373BF20D4E65804B745D40855 - 3: FE3484F11C338721F3FCB4DCC608BD6E - 4: C45670D31D48CE9AD70BADE9F7A6A5B3 - 5: 6AF86480F1AE638DCAC40939B864D4DE - 6: CBBAFED3A5891A7BD8692055E4C59444 - 7: B23439FC6D1CF0E3B04BE5201CAF9283 - 8: 385D2C64F55B3FE976E660155FAC4C90 - 9: 239D4B8F663248076E64CF743AC14EC0 - 10: B942C5E06C6E68866440EB10747643B6 - 11: 9B591FA2FD9A20C367FB03366150D1E7 - 12: F90183F872D062AB4642DCDCED399970 - 13: 86003C2F260EAFC81BC45A0614F88381 - 14: C80F88A148FF906D42E6D75A50049468 - 15: 0A81478238ED815D7CB04C0DC5A4A4D5 - 16: DFE74730DB9CF4F994084C88923A8931 - 17: 91194DAAAB458B5B34E991EF534D4BD8 - 18: DAA1CCA0B644AB9F8B4D889D7F1268FB - 19: A93AE4F41DFB6CA311FAAA148A9D53D9 - 20: 6FFD47B80A991A6C09775060E4A4B13E - 21: 4BE3101511BCA3251559ED6D3BFCC304 - 22: 3C1AA3485241175A9A17F440A1F2FF5F - 23: 11D2C5E4FC75639CC61C8FE66C2F5135 - 24: 3EDBF9F32259650ABC2C835301FA6556 - 25: 56FA9AA43C01CA5BA798780D3BF40FA1 - 26: 40AE1F352003026C6D4C5F44430DD5ED - 27: 264E11C88266029588A1B8369F0C5B73 - 28: 60CE0E6D2C2C74D122DBDE57B3EA44AB - 29: 5E4078E7CEFA94886E9CF0D083C4B468 - 30: CEC169560600ECEED6E5C8F06C76E702 - 31: B4209736F08EAAE6D5B4923D83EB3EE2 - 32: 5DC8D45C9954B82864F1C2388858D97B - -OMAC-skipjack (10 byte key) - 0: 84EDFA769040603C - 1: 7DA58A4CBD642627 - 2: 118F60115CFC8229 - 3: A7F7346D34DB2F0E - 4: 35615CCD526CD57F - 5: DE471601A3660844 - 6: 15FCCE6D6D883D1F - 7: C6F694861233151B - 8: 3B762B397F16E807 - 9: 976C6AB59FB3AB12 - 10: 6810791F2C595961 - 11: 7FA3478286917F17 - 12: 73DEE44A51C6B610 - 13: 89EE8B253B1ACE81 - 14: CDF2586A56C8A0B5 - 15: ED91F98DA98F42C4 - 16: D8D0FA5CE96B08BF - -OMAC-anubis (16 byte key) - 0: E672617CAA1E641C0E7B4B4CC4787455 - 1: C0C16E8FD63907C08A8ABBB7B73376D3 - 2: 23F97CED54939361830396224A7BDD91 - 3: 7FD87DEA9F05E07212DDF61292D9E13D - 4: 929A11A4D0991A6446B1051926A6048D - 5: 4EB74F1CC0150D86126BC6FE1FC8253D - 6: 33C2C3C072D05BB6D54F87579C23B116 - 7: DE350181C9E90A79879813A609BE77E2 - 8: DB519EB9EF0E154D9D248734FD3D3724 - 9: 4F7F2E6D3FC72BA94FE24EC0ABBF4E66 - 10: D646389DBCEEDD59EBB6E8F09C422930 - 11: 8547658AE1CE6A8B8D010A1E1FEA7AF4 - 12: C9BE2B7F3630EFDFBD3AEA6A108C86EA - 13: 290417C57096B8B9A1BA3C20FD91285B - 14: 9AF60E99692C5F911CBF969A6E11DC14 - 15: CDA433BE58C98E49EBA8A7108E50DE2B - 16: 7430D0EE631A4659351B8A4489A78D46 - 17: DCC74C0FD0415768FE00225CA14B7DC2 - 18: 0CF2432B1B465F2A8C5FACAAF2FEF619 - 19: DA020680C64E93AE5FCA3D71466D01C1 - 20: B9C33A86E6ED9FCCDCD973382DD1B6A3 - 21: 6631236B9F2F810DD4D97E6046F41AF2 - 22: 0312C322F4D634CF4FBC0C2624E3E9F2 - 23: 111E3E9F8FBDC1E4364622723F1CB524 - 24: 6D2608D7AAF243D5219E14513895BFF6 - 25: 683BD01B43CBC0430A007ACBAB357DC9 - 26: 01B8FC65C56B0F1A5BFEBEDCCF6748D9 - 27: 4D6298D63A80D55491697A6DD8E3694C - 28: 6F0205E4E083CAB00747D723300510DF - 29: 5183BAEEF05E9402A935EB9AFF0AA2A9 - 30: 1E673BFAD4944643A740C59D96A5925C - 31: 940FB4000E34EEE78E8DB402E4A76502 - 32: 87B0C48F3D155AD85D0502D94A4572DE - -OMAC-khazad (16 byte key) - 0: 4EBEFA460499424F - 1: 97AEEAD51E541D16 - 2: 29A35212910C9595 - 3: ABD1577D622074EA - 4: 70A537DE14DD765C - 5: 240A19016DE99C51 - 6: 4D42C10A9F803177 - 7: F464BC3E0DB5A909 - 8: 1C65A01A7C08DAC7 - 9: E49A1428C230C209 - 10: 16DD0FEB7A6505B8 - 11: 2DDDB3E35A05C220 - 12: EC88910C799AC6CC - 13: B2A65C9EF39BEC8A - 14: F0D2366BA91DFFD5 - 15: BCAB623CAB7AAA23 - 16: 9BCEAB857596E478 - -OMAC-seed (16 byte key) - 0: F184C3569AE39C95609E878E8E69D276 - 1: 6B94C6CEB7347C7E478D33FD1892032B - 2: 9FA405B299D5887181C5F09A27AF9F76 - 3: 7457B824FA672F0D939B3CD161A3D229 - 4: EF164E3F30058EA7BA10B1D7ABD945F8 - 5: 22FAD3E42EB96A6E6A66FA73FC96A9E4 - 6: 9BE414C3CD92860A67AFB7C45D0E0EEE - 7: 40DA2A768F6593E45214CB7F054A9BAA - 8: 9AFBBEEC8EFAFA7A22752F3BEE055811 - 9: 45EBA2A3EE9276A90FE7FC705086F59B - 10: 9FE7E1DE176065440B45B1F8F012B8E7 - 11: 5D45CE9EFB14AE973C6567E804492D4A - 12: BB37B25C98998B0CBDF7AA2BF86FBF3B - 13: D68EA4AD5B7C3E243872F5BCF7F24EE2 - 14: E880AEA09E328C58ED99928C7BB97DEE - 15: 4A9EBD30EAB684544D79A066545B100A - 16: CEFD858C3179B39BADA7EA0F6D3AB150 - 17: BD3336CB8C5AC6D327B310C2093FD087 - 18: ACB4B352003B45FE5E872647ACD2C945 - 19: 74FF04F0ED7ACBDFC2B8EDB0193312BF - 20: 950B9587B448A73F0566B6E5D30BD85E - 21: A1CEB1E515BEE6C0C2253415CEDB7F54 - 22: 5E3B9B8F983B882D48853403152BBD09 - 23: E7BB12680BFDC81851D08870862F5F70 - 24: C89D50E7BC1692A3EE29585F4C2861DB - 25: 1ACBB14354F3A1E002BBD065930F56B8 - 26: AECF4E3972E26A862DC9A0D0F78F4A75 - 27: 4E8663B1FD460CC7B6CA7D6D880209C8 - 28: 0350DFE2A107BB68BAD09A9461EE5E64 - 29: 89B70BBAF6E7F4E7E37F40D122588B0A - 30: EB0B22BCD7D61272372502B7EADA68A7 - 31: CC4FB973D094008F4B90D687CD91B4C9 - 32: C7162431A53216C22D47FA511B0A619E - -OMAC-kasumi (16 byte key) - 0: AF4289889D9AD5A1 - 1: C58E7863B4E8CE54 - 2: 2927047C455329BD - 3: 62905068423B826C - 4: 0BC0C92B5162FA20 - 5: 03E6D71DE770BB3A - 6: 6D48AB1CE5EC49FB - 7: 338597E9545657E8 - 8: 418BAF4EFB83DD50 - 9: A47BA8181D187753 - 10: 76FAA6B0FF3B9D4D - 11: C540C8A06345FAAE - 12: 67E454776D871265 - 13: D4E0ABD317993766 - 14: BD328F89D3C1FEA5 - 15: 580E74CB054A9F7D - 16: 121002BF94F18D90 - -OMAC-multi2 (40 byte key) - 0: 3A06523F10C9F2C5 - 1: 310F665F3A12E82A - 2: 459FB6A9AC69FE27 - 3: DEB259E248440826 - 4: 6598F16BC1BFB8C8 - 5: B37DFDF8DD61D479 - 6: 0CE3BD7843FC83C4 - 7: 3BB7880A7E8D6C9E - 8: 74BAA5B4EEFCFDB5 - 9: B71CC55A72D4BB4F - 10: BEF0C7D0781B368B - 11: 0CA0D02961398164 - 12: CF3848FA94C45657 - 13: 57EA86B185A210D3 - 14: 05887EB7679F4B62 - 15: F6A007FF4A175F82 - 16: 57E61B59AC9F3240 - -OMAC-camellia (16 byte key) - 0: B5664C5148FFB45297703BCC46C19E4E - 1: 126EC31A554E8B3B635DE4617092ECE8 - 2: FD57148685F4AA85AF48017AFD72B410 - 3: 1427607464A408C1775B4036509E9659 - 4: D8F5A7112CC8A9DF28B331FE7184BF08 - 5: 0E29B0F09409DABECF645F05C4A5717C - 6: C4155442FDC29685028AF4AADEDCC266 - 7: 92356ACB98AE2EDAABE0D3ED0C90772B - 8: AA3C828618F72258D91BC391876776C3 - 9: 189458BA4D98E85802E7028E5C57A25F - 10: EE652D70328DA00D63B42A5E85D70E63 - 11: F9D1E5F8E1539F2D657A047755CD232E - 12: 56FF5979FD3DEAD90EAAAF79A9AF1DCD - 13: 7E8B39D459D5AB449A8C5917B0CD0C4E - 14: 822D9B9C434C6FF7F0E5A25281740A91 - 15: 654909D2836CCB06501CB359C717C1B9 - 16: E8996FC89D47C91543B7BA3DC1C34B73 - 17: DC29D51B2372DD7564CF56AF8702924F - 18: AD74D081197644DFE2723CABC991B1AC - 19: 26145C6DF074CA53125F6F386FBEA373 - 20: 72C6C760A70FE410FAD113D8BE711D75 - 21: 099D3B5802D7FB699B6B8F031BE10B3F - 22: A9D5DD3988A18AA7BC6F9C050BDBE8D2 - 23: F7E99E4C3C7D127FF04FF325F7B06997 - 24: E99A2F7547B5C6EDF3BC2EC2B8F05198 - 25: 46C42FF49FCCFC49FBC99FEB08FEF10A - 26: DC349D600A754F73ACE6A7D2D00D3551 - 27: FC2E5434ABBA44ABD9D724A9BB6CA2A6 - 28: BA923927BF0074AD73BA8A6914194297 - 29: 7DAB39F8D7E5CB93265568E6713C7CCD - 30: 9F60259B759B68E1C8F89CC36C7E170E - 31: 7D611F8BFEF0491CED8815C0E3D4CAFF - 32: 31E04DE5F9D1403C660E39891DE0D8DE - diff --git a/src/libtomcrypt/notes/pmac_tv.txt b/src/libtomcrypt/notes/pmac_tv.txt deleted file mode 100644 index 81df41a074..0000000000 --- a/src/libtomcrypt/notes/pmac_tv.txt +++ /dev/null @@ -1,569 +0,0 @@ -PMAC Tests. In these tests messages of N bytes long (00,01,02,...,NN-1) are PMAC'ed. The initial key is -of the same format (length specified per cipher). The PMAC key in step N+1 is the PMAC output of -step N (repeated as required to fill the array). - -PMAC-aes (16 byte key) - 0: 4399572CD6EA5341B8D35876A7098AF7 - 1: 580F7AA4AA45857C79BA2FB892228893 - 2: 24D2D1DBABDB25F9F2D391BB61F4204A - 3: 083BF95E310B42A89751BC8E65ABA8B5 - 4: 69BEB9268CD7FD3D7AB820BD7E226955 - 5: FD71B0E647ADB4BB3F587E82B8B3401A - 6: 07EA46271081840737CEB1AC9E5E22E3 - 7: FFA12AD9A9FDB5EE126084F82B381B10 - 8: 8A11AF301AAFEAC8A75984ED16BB3292 - 9: 368BDC3F4220E89B54C5F9D09FFB8F34 - 10: 8B6DBFF776FD526147D1C4655626374F - 11: C538C09FC10DF38217CD8E799D8D1DC9 - 12: FC1264A2051DEF73339432EA39443CFD - 13: 8AF37ED2FB2E8E30E9C4B75C1F1363E1 - 14: 4295541FC62F6774068B8194CC9D9A46 - 15: CFAF4D8EA09BB342F07131344DB0AA52 - 16: B6CBD6E95959B2A8E22DE07E38B64D8D - 17: 3124E42DE3273B0F4806FB72A50F3E54 - 18: 252D49403509B618AB3A6A1D99F9E9FA - 19: 9CDA75594CB696EB19C022DDA7324C10 - 20: 33BB8AE43B7BC179E85F157FA19607D0 - 21: 12FE91BCF2F2875379DC671C6F1B403E - 22: 416A3E519D1E406C92F8BB0DDBBBB6BF - 23: 6F98DCCD5A8D60DEAF612ACCEDD7E465 - 24: FFCE7604609B2C3C050921854C638B7E - 25: DD2BB10AA07A5EC8D326BB7BF8D407F4 - 26: 468BFE669FCDF354E4F9768FE1EAF8F6 - 27: 01724D2F2C61EB4F380852218212E892 - 28: 2D90EC658F57138505598C659C539A3E - 29: 6301EAA0E1500FFEB86752744EFFF23D - 30: 3CCB177486377616056D835F6F857F7C - 31: BFB3C7755C1F4543B516EB8610CB219F - 32: D5C505847D7CFFD8CED848F6CB613105 - -PMAC-blowfish (8 byte key) - 0: 3B7E4EFE92FA46AF - 1: 746840017C38C892 - 2: 3B6A92C731465B64 - 3: D89D3B05143B6704 - 4: 43F70D54B808B7CE - 5: 84E4063AB32F046C - 6: A7E78CD5CCD23805 - 7: A78FB083475FEF10 - 8: D4F6C26B5386BA25 - 9: 184768A079853C90 - 10: 0702E6C8140C5D3B - 11: 786D94565AA0DF4B - 12: F6D36D3A2F4FB2C1 - 13: 7BB3A0592E02B391 - 14: 5B575C77A470946B - 15: 686DAD633B5A8CC3 - 16: BDFE0C7F0254BAD5 - -PMAC-xtea (16 byte key) - 0: F5E28630DFDE34E0 - 1: FFCC52D905DA5198 - 2: 25198AB18B2B290D - 3: 18914E50791161E9 - 4: 200F832212AD6747 - 5: A9D09C41D734DDF7 - 6: 32D7CCA3F4BD8215 - 7: 91A1AA9389CD5D02 - 8: 35CB1F77D7C25E2F - 9: D91EEE6D0A3874F3 - 10: A42872686A8FF6F2 - 11: 7568908634A79CBD - 12: 5B91A633D919BC34 - 13: 32DCD17176896F1D - 14: 2BBBA64F30E672B6 - 15: AFEB07DBC636AEED - 16: 7A417347CA03C598 - -PMAC-rc5 (8 byte key) - 0: C6B48F8DEC631F7C - 1: F7AA62C39972C358 - 2: 0E26EC105D99F417 - 3: 7D3C942798F20B8C - 4: 415CDA53E1DE3888 - 5: A314BA5BCA9A67AC - 6: 02A5D00A3E371326 - 7: E210F0A597A639E5 - 8: D4A15EED872B78A2 - 9: AC5F99886123F7DC - 10: 69AEB2478B58FFDF - 11: 8AB167DFC9EF7854 - 12: 945786A136B98E07 - 13: F3822AB46627CAB5 - 14: 23833793C3A83DA9 - 15: 70E6AB9E6734E5A6 - 16: 0705C312A4BB6EDE - -PMAC-rc6 (16 byte key) - 0: C7715A17012401DE248DC944DEEBD551 - 1: 5B804C6CCDF97BB28811C9ED24FE6157 - 2: 7528378C052F4346253CB0DFA3D251C7 - 3: 6DA86EE0B28606861B1A954D7429A93C - 4: B4DFF84C25937FB50EE79D4037323160 - 5: A60FD9BE5E1FF67EC9734776C8781096 - 6: 81D3F8EDC0A197DD3739EAE648F38580 - 7: 8BAF47F02120E898916D678DBD0C1641 - 8: 7A9EEC96F10B7CF557B61EF35BB55B08 - 9: B88C11221014F8AE048E56C427DF4A46 - 10: 4BBA8EED89F357861A265006816D9B04 - 11: 8497C1D55010A65ED8C3688B75A7CABF - 12: 95E1720C06A373CAD1A22F432F26BCCA - 13: A175FB732692831E96AFB587BC49E18C - 14: 54EBC04FCFD90302907BF77C4D8AC77C - 15: EA9F13EE5548CDF771C354527CDDA09B - 16: 4EDBCFD0E2E6B321530EB31B3E8C2FE4 - 17: F412304C1A5B9005CC3B7900A597DFB5 - 18: 3B9247C12BB25DF048BF5541E91E1A78 - 19: 39626488635D0A6224CD23C13B25AE8E - 20: 40305F5C2FCEF34E764E33EF635A3DC5 - 21: F84499804086033E85633A1EF9908617 - 22: C4D263CDC7E0969B8AC6FA9AD9D65CB8 - 23: 6137DC840E61EA6A288D017EFB9646FC - 24: 8619960428EB29B1D5390F40173C152F - 25: F0464509D0FBDBECEC9DFC57A820016D - 26: 630EED23E87059051E564194831BAEF6 - 27: 4B792B412458DC9411F281D5DD3A8DF6 - 28: F2349FA4418BC89853706B35A9F887BA - 29: FEAC41D48AEAB0955745DC2BE1E024D5 - 30: A67A135B4E6043CB7C9CAFBFA25D1828 - 31: EC12C9574BDE5B0001EE3895B53716E2 - 32: 44903C5737EE6B08FD7D7A3937CC840D - -PMAC-safer+ (16 byte key) - 0: E8603C78F9324E9D294DA13C1C6E6E9B - 1: 3F1178DFC2A10567D4BCC817D35D1E16 - 2: 27FE01F90E09237B4B888746199908EE - 3: 4F5172E3D8A58CD775CD480D85E70835 - 4: 74BED75EFAAB3E8AA0027D6730318521 - 5: 54B003AB0BE29B7C69F7C7494E4E9623 - 6: 8A2DAD967747AEA24670141B52494E2F - 7: 69EB054A24EE814E1FB7E78395339781 - 8: E59C2D16B76B700DC62093F0A7F716CC - 9: AB227D6303007FD2001D0B6A9E2BFEB7 - 10: AE107117D9457A1166C6DFD27A819B44 - 11: F84DE551B480CED350458851BAE20541 - 12: B0EB5103E7559B967D06A081665421E0 - 13: CDB14F3AD1170CE8C6091947BE89DE7B - 14: 24FA2F476407094152D528FCF124E438 - 15: 440144B31EC09BD8791BFE02E24EA170 - 16: 697D268A46E8B33CEC0BAB8CAF43F52D - 17: 587CBDE7608449BD162184020FBFCC8D - 18: 3EA999C2169CC65735737F50FCD7956B - 19: C6D692698CD8BEEBF2387C6A35A261B0 - 20: 46DAB3AD3C4E2EF712FAC38F846C63E1 - 21: 7261E68B530D10DDC9AD4C9AB5D95693 - 22: 4D0BA5773E988C2B7B2302BBA0A9D368 - 23: 8617154626362736698613151D1FD03A - 24: 23CF25F68B281E21777DC409FE3B774A - 25: CA626956C97DC4207D968A8CC85940B8 - 26: 24C39BE160BDBB753513F949C238014E - 27: 83CD65C010FB69A77EEDEA022A650530 - 28: 1A72DC8438B927464125C0DFEACDE75D - 29: 546054936A2CB5BFBB5E25FFD07C9B51 - 30: 0EB81A268F1BB91997CB9809D7F9F2AD - 31: 7D08B4DE960CADC483D55745BB4B2C17 - 32: FD45061D378A31D0186598B088F6261B - -PMAC-twofish (16 byte key) - 0: D2D40F078CEDC1A330279CB71B0FF12B - 1: D1C1E80FD5F38212C3527DA3797DA71D - 2: 071118A5A87F637D627E27CB581AD58C - 3: C8CFA166A9B300F720590382CE503B94 - 4: 3965342C5A6AC5F7B0A40DC3B89ED4EB - 5: 6830AB8969796682C3705E368B2BDF74 - 6: FF4DCC4D16B71AFEEA405D0097AD6B89 - 7: ADB77760B079C010889F79AA02190D70 - 8: 5F2FCD6AA2A22CEECAA4671EE0403B88 - 9: 70DD6D396330904A0A03E19046F4C0BF - 10: 8A2C9D88FA0303123275C704445A7F47 - 11: BA0B2F6D029DCD72566821AB884A8427 - 12: C8DF45FF13D7A2E4CFE1546279172300 - 13: 512659AD40DC2B9D31D299A1B00B3DAD - 14: A8A0E99D2E231180949FC4DFB4B79ED4 - 15: CA161AFB2BC7D891AAE268D167897EF2 - 16: D6C19BBDFFC5822663B604B1F836D8BD - 17: 4BF115F409A41A26E89C8D758BBF5F68 - 18: 02E3196D888D5A8DE818DBCBAD6E6DC7 - 19: 995C9DD698EC711A73BD41CAAE8EB633 - 20: A031857FADC8C8AFEABF14EF663A712D - 21: 124695C9A8132618B10E9800A4EFACC5 - 22: 997E5E41798648B8CE0C398EF9135A2C - 23: 42C92154B71FB4E133F8F5B2A2007AB2 - 24: 945DC568188D036AC91051A11AC92BBF - 25: D5A860CC4C3087E9F4988B25D1F7FAAE - 26: 6CD6ABF8EDF3102659AFFBE476E2CBE8 - 27: 45ECD0C37091414E28153AA5AFA3E0B2 - 28: CBA6FE296DDE36FE689C65667F67A038 - 29: C4022281633F2FC438625540B2EE4EB8 - 30: 864E27045F9CC79B5377FDF80A6199CF - 31: 0D06F2FAEC5AA404A4087AAEBC4DBB36 - 32: 0F396FE9E3D9D74D17EB7A0BF603AB51 - -PMAC-safer-k64 (8 byte key) - 0: 2E49792C78C1DA52 - 1: 7A5136F4FE617C57 - 2: 6FC8575F6F3D78EC - 3: 7C0373CAEAAA640B - 4: 9D469E7FF6C35D31 - 5: 7755D62DD7D88112 - 6: ADD9E7855A958C9F - 7: 752D29BA8150F18E - 8: 0954649A99596104 - 9: 05D4D75A9FAE233D - 10: 1AADAFD7B4B250DA - 11: E7A8F31ED74DA32B - 12: 1A74DF61BDB9DF94 - 13: C38A67B1955C4E0D - 14: EBADAA44746ADF16 - 15: C0BFBB092CE81D8E - 16: 984975657F3FF2B0 - -PMAC-safer-sk64 (8 byte key) - 0: E8917E1629E7403E - 1: AE8061A5E412A647 - 2: C969771CE5A9B0C6 - 3: 78159C01D0A3A5CB - 4: 1DD4382A8FC81921 - 5: 4086880FD863C048 - 6: A520B45600A3FA1D - 7: 0F0AB5118D7506C4 - 8: 22E315F2DD03BCC6 - 9: 5ECB5561EE372016 - 10: 446A9B2BCB367AD6 - 11: B2107FE2EB411AE9 - 12: 5A539B62FB5893DF - 13: F44EE1EB3278C2BA - 14: 293FEA56D1F6EA81 - 15: F38F614D2B5F81C4 - 16: AB23F7F8F4C12A7E - -PMAC-safer-k128 (16 byte key) - 0: 7E0BDE11EC82FDE6 - 1: 8942FB017A135520 - 2: 0B073E6D0F037A02 - 3: DBF88439D671ED4F - 4: B89427ED1121069A - 5: AA8573DAC66D2315 - 6: 12DA3144BEF13FF2 - 7: EF80413CBA281B3A - 8: DFA7114D8505EEBD - 9: AE53607F3E6F4A54 - 10: 3F2C9395CFB9F78F - 11: 67EB7C5F02760AED - 12: 3EF4CBB4AB5B8D1F - 13: 83B63AFA78795A92 - 14: 5DE400951766992A - 15: AA8791A45237CF83 - 16: 7743B18704B037CF - -PMAC-safer-sk128 (16 byte key) - 0: 8F1597FFCF6FB7C1 - 1: AFF8BD8FF9F3888A - 2: 65F89D82869D8B42 - 3: CBE1F06476B2D5BD - 4: 4878D47FDFECE23E - 5: 4751A9E6D61AB2A2 - 6: 003AC162AED4DED8 - 7: 1F617A5555092C22 - 8: 088EE0C35B607153 - 9: F840B485086F9908 - 10: BA99E0FB5D7D0976 - 11: F04AF6DC4BAF6887 - 12: 5DBBE40AF2F67E4E - 13: 7F52A93E87E29C9D - 14: 7B26A14A4BD5B709 - 15: C34F26E08C64F26B - 16: 291A41D479EC1D2A - -PMAC-rc2 (8 byte key) - 0: E5AF80FAC4580444 - 1: 6A15D6211EB4FF99 - 2: DDB95E9486C4B034 - 3: 9764761DC2AAD5C0 - 4: 1B1CD2E799D44B4F - 5: 4F80FE32256CF2EC - 6: 7B70CF31C81CD384 - 7: 9BC10DD9332CF3BB - 8: 628189801879FDD8 - 9: 5FC17C555E2AE28B - 10: E20E68327ABEAC32 - 11: 5D375CA59E7E2A7C - 12: A9F4CFC684113161 - 13: 3A0E069940DDD13C - 14: EAC25B6351941674 - 15: CB8B5CF885D838CF - 16: DCBCDDFC06D3DB9A - -PMAC-des (8 byte key) - 0: 086A2A7CFC08E28E - 1: F66A1FB75AF18EC9 - 2: B58561DE2BEB96DF - 3: 9C50856F571B3167 - 4: 6CC645BF3FB00754 - 5: 0E4BEE62B2972C5A - 6: D2215E451649F11F - 7: E83DDC61D12F3995 - 8: 155B20BDA899D2CF - 9: 2567071973052B1D - 10: DB9C20237A2D8575 - 11: DAF4041E5674A48C - 12: 552DB7A627E8ECC4 - 13: 1E8B7F823488DEC0 - 14: 84AA15713793B25D - 15: FCE22E6CAD528B49 - 16: 993884FB9B3FB620 - -PMAC-3des (24 byte key) - 0: E42CCBC9C9457DF6 - 1: FE766F7930557708 - 2: B9011E8AF7CD1E16 - 3: 5AE38B037BEA850B - 4: A6B2C586E1875116 - 5: BF8BA4F1D53A4473 - 6: 3EB4A079E4E39AD5 - 7: 80293018AC36EDBF - 8: CC3F5F62C2CEE93C - 9: EE6AA24CE39BE821 - 10: 487A6EAF915966EA - 11: D94AD6393DF44F00 - 12: F4BFCCC818B4E20D - 13: 2BE9BC57412591AA - 14: 7F7CC8D87F2CDAB7 - 15: B13BFD07E7A202CB - 16: 58A6931335B4B2C2 - -PMAC-cast5 (8 byte key) - 0: 0654F2F4BC1F7470 - 1: 3F725B162A1C8E6B - 2: BCFBDC680A20F379 - 3: 027922705BCACDEE - 4: 44E2F4BE59774BA4 - 5: 3ABD1AFC8EE291F7 - 6: D96347E717921E96 - 7: 96257299FCE55BC6 - 8: C2C1DA176EE98170 - 9: FD415C122E604589 - 10: DCBCA228D45AEDA4 - 11: 7801FBCFAAB9DF75 - 12: D38CB38574474B7F - 13: F5C5A23FF3E80F37 - 14: 83FA4DAD55D092F5 - 15: BDC0A27EE0CB1657 - 16: 87D907CACA80A138 - -PMAC-noekeon (16 byte key) - 0: 276019CC8E43A1B3F300C47B55B7AA22 - 1: B93E353A2CC21CEAD81C91EC2FCD348E - 2: E8B9737CAD705C499F246744DCFE9641 - 3: EF36B0FFB5439FF8668F35FD1822D0EA - 4: B7F5AD89538FC3F03923E98ADF95D0CC - 5: 558FCA30F602B4BC6697F44053875204 - 6: 6B2D6D5A1CF670BE80E4BBB945CD3871 - 7: 9CFA28FCA22EA12A13AC1093EF5D5EB9 - 8: 04EDA6C71B9F1177F4A5368684FBBAFB - 9: 43C56B31D440EBECE4C74B90750A4653 - 10: 23D5FA9AFFB2DC3DD372F22690487BAC - 11: FD61731F27CF8E791535AAB579A018B4 - 12: 502D3A64FDED3CA2A2C8A5E986B27E03 - 13: 1EABBC65B0A08F6CB15218E7153A6003 - 14: B05DBC66CF92B045FC99395E9D405C4F - 15: EE841A0BF2C91C1E2078F06D022F2E6C - 16: EA749FBAC6BA9F672796C9D58A8C3294 - 17: BBEF3CDFB93E5F462773579986F08374 - 18: B17F7645F80BF5A2817C228987B43C03 - 19: C995A102DFBB38FA397A4E508B85093D - 20: 9011CA395AC3FCD8594C13E67C22E95B - 21: 364BF53974D68B8BCF53CAADC5469DEC - 22: 5BAD7041372F28DE28BAAAC1A89C10A8 - 23: 77874E908BFCE6F5E36888A484A754C0 - 24: 9BDA525416A3129C55886134B79BAEDE - 25: 84E3201FA7958223B302D1BC2AC57D55 - 26: 2B8FA1A95DADB4DC2F7A308D8E3D8C81 - 27: F74EBF0ACCC187569BDE549F5FC96C36 - 28: 7023D209F1965EC32253D11835CDFFA5 - 29: C3C6397D9B0A1D741335882ACDFAC20D - 30: 7BC92905F2AF6754256BE087CC4F54DB - 31: 0BBA0A507767530F26C3A465DAB11359 - 32: D2891C8EA1F574A6B2AB091057E0FB2C - -PMAC-skipjack (10 byte key) - 0: 9CD94B75BC43B647 - 1: B069ACB82B12BC7B - 2: 6DD40E71EB03E311 - 3: 74CBED61D77DBA7D - 4: DD1B7E0D181537FE - 5: ACB5B96FA0AD1786 - 6: B34E01EB2567D381 - 7: 9623DAADE57B9549 - 8: 8BA384BABB798344 - 9: B147AA9D5C5C67CF - 10: 0033C520F4C67523 - 11: 42DAC184BEABC3E5 - 12: 428029311004AEBB - 13: AC2BB1C0F0ED649B - 14: F7CAA9A3BF749C1A - 15: 2C5BD475AAC44C77 - 16: FEB892DA66D31A84 - -PMAC-anubis (16 byte key) - 0: DF33EE541FFEE6A97FE3A1F72F7A38FC - 1: 0AB28675AC3923C6DD9F5A8E1E2928D0 - 2: 2DABF75D6403E1E1CFAB3E6869FB1088 - 3: 95835D49E09740180B79E394FC2AA744 - 4: F364D6DC2C2078A519E5BAEFE858AFCA - 5: DA4C66A4805FC91FABAECC0D3AEAD850 - 6: 487660FADCAC7B326C492AA051A1DF49 - 7: BF07835AA1A548FA7312509AF35CE3F3 - 8: 3CE8A8B1F324A700923AC0B830D53D99 - 9: 3C54D99AACFAB26E34FC1B0B6BB9EB22 - 10: 0A559F9D107ED76FD19227FDD0752B8A - 11: BFD9E74ADC40B9C7446FDD09558FA584 - 12: F1130F663BC0FA3B1066129E0D1910E9 - 13: 535EAD786F0D211DE7AA78F3CB480803 - 14: CDF5855F00A4C310D95B26751B01A28B - 15: EF6686E999D5A9C35A96D25BB9DBBF57 - 16: E795733AA0AAF16D8F7AB1A8E9C55E54 - 17: E03CA85727D5CF06F56BB6465BB3E5C5 - 18: 6EDDDB6D2292EFF584E382E1BACD1A49 - 19: 7B7FE0D8821836C1AA95578071FF2FD2 - 20: 5F8CC568338400746B61A9286B7CF262 - 21: 32DEE5A11E9EDB04BDF911837CE0FA4D - 22: F1A99914F13B17ABF383F36157FEB170 - 23: 99F541647F382390043CAE5332E3114D - 24: 34C5EBB85693A1979F8CFDF8B431A5BB - 25: 1BA7266568F1E7B4A77A869D3021AC0F - 26: 0FC675C99C24E859F8CE714E86BF5289 - 27: CBFAB21F5ABC47356A43BED806D873C0 - 28: 9659AB1A4D334B622629721F98EECE3A - 29: 644C8BEE41F03BDE7652B03CAEA31E37 - 30: 5B3447AFAD934B4D1E4910A8DFD588E7 - 31: BFF403342E8D50D0447627AEA2F56B23 - 32: 19F468F0FB05184D00FABD40A18DB7B2 - -PMAC-khazad (16 byte key) - 0: F40CEF2E392BEAEB - 1: C6E086BD1CFA0992 - 2: 513F2851583AD69A - 3: 07279D57695D78FF - 4: 051E94FE4CC847B6 - 5: 5E9AAA5989D5C951 - 6: 310D5D740143369A - 7: 9BB1EA8ECD4AF34B - 8: CF886800AF0526C8 - 9: 0B03E2C94729E643 - 10: 42815B308A900EC7 - 11: 9A38A58C438D26DD - 12: 044BFF68FD2BFF76 - 13: 7F5ABBDC29852729 - 14: F81A7D6F7B788A5D - 15: 93098DA8A180AA35 - 16: BACE2F4DA8A89E32 - -PMAC-seed (16 byte key) - 0: 58844BC0C53AACF808587A7C35C37DE2 - 1: 481E3E0831DF5AED135C71BBBD075F4A - 2: 11355F9D42E7BAD967DF90E9088D45A7 - 3: 5E3F82EF0B3CA70DCB614C1016DDB052 - 4: 35E283B0E6C538ED5F2DF4E004324865 - 5: 56467B8BA87BDE89DF4A64DC9B9409CF - 6: 9315AAAE6CA0868FDCBC397B7DC2DF84 - 7: A265D861DCE6C9B80CCFF92463DB27D3 - 8: 196A0813E4EB49F47A1C3713950B194E - 9: 261372868D259E609BE5080F282B361A - 10: DFDC55CDF60A0CB6A33BC6F4B5E5A481 - 11: 0BD99E075BC93386CDB40C2AAF8E8918 - 12: CA1B80D0088D7267C9AFB037DCD8FA56 - 13: 8EDBC9F77D4DAB3DFABEAB0891622F1C - 14: D1A8F869C961739ABFE7F401FA41D6F6 - 15: 653041670E0BAD5D1FE77A19D9439CEE - 16: 440EF361908A528B2A3ED7C50C1A47AB - 17: DCE2613438A5DC42AC8F5CE753DDF01D - 18: F9E313156CA5345CECB1A5F963E9B201 - 19: 34D72FB89BA3C41E1D0597531849C6C9 - 20: 7ED20B28067BA27E37606387D641B75F - 21: 933A2E06DA91C208297305FFF4F7795B - 22: CC455E1FB196CF5B233921AA6A048B81 - 23: 613AC1EE5B8D0C3123A18BED9A352980 - 24: 00A2BBEEB98DB190A694B67EF85A65A4 - 25: 1A7D50E6051D85CA81D9DD7DE81BF02E - 26: A7F948B36D7AF08FB405A1B8C8C6AC6D - 27: 967DC3981E7C718B562A93E5292B872F - 28: 2674544D8D3E3F750590992C0AFB36AF - 29: 193A2CC794CB285B4CB87197EE3550ED - 30: 312AAC97C92279428FB1AA0882DB7088 - 31: 3B9CBA2FF7FF4113BB2DC0DF6BCADDD0 - 32: 45C5C71122C70F4337F5EC74BA6B446D - -PMAC-kasumi (16 byte key) - 0: 52DF2D9A9EB4816A - 1: 201C1024E6D2AF23 - 2: 04E7B341BFC96D1A - 3: CC11D07594C50F31 - 4: EE27EAEED00E2F97 - 5: 51DB73EC42ADB789 - 6: 097A5F01A90BFE7F - 7: 7FD121FD6B504A9D - 8: 8A09BC5C1E7FA48C - 9: B7A88328D7D84C9E - 10: 1D34173FA9F1DFCD - 11: 129AC84C0429E80E - 12: 81D236AC427123E4 - 13: 72D4EFEDD56F6253 - 14: ACFC8D6AF30F8B64 - 15: C7F75094394C1765 - 16: D95208BCB48FAA38 - -PMAC-multi2 (40 byte key) - 0: 4799ECD07D95FF68 - 1: 5B94DBFD53C531D7 - 2: DF09EDE792536619 - 3: 01FB72E4EE79DFEF - 4: 4159642D6ED0D4D8 - 5: B6909A449A0A85BB - 6: 20B167D3AA349DEA - 7: E550AAB246D99D92 - 8: 5E1042397C86B08C - 9: 3789D96B64C85AC0 - 10: 72C0921EF5B5DEDE - 11: 5923493300FA910E - 12: B589609B09B4D12F - 13: 5EA42FE501CD696D - 14: 4413763D2689108B - 15: 07207040BAFC8E6D - 16: 4E80F408AA6F1DD9 - -PMAC-camellia (16 byte key) - 0: 33C03F6AA205F3816A17DA92BEE0BAD2 - 1: AD1EC293DD032511579235B2F29CC909 - 2: E71363EAF5A311DCFB035C69BBCE5DC0 - 3: 22661D6CD3496FB5C9B3D89FC62E3981 - 4: B142A96AF9C481B61E55B7B5896847C4 - 5: A286C0769989120F8A31A8DAD7574F22 - 6: 09E711382FDB6B938C802D11A66EF657 - 7: DF9ABA4F5CF5B0647F045C3AA631BB62 - 8: 499A8F68DAEC7FE56E64DB59B0993741 - 9: AFFDA4F40A1BDF673EE9123CAE321F16 - 10: B6F2E39D0126AA85D9152C4457365235 - 11: 2922AAC2FF4F0B77DEE4B3E28EF5094F - 12: 369D18F985D18B5ADDFFFC1151DE6BBA - 13: 1B7641D1A38C4114EE829B7D25BF0EFF - 14: DEF9092BA185FD5238A25C6FCF410C52 - 15: D59FEE8047D64032329318DC7A2277B8 - 16: B4561A4A092E031F8FE998FAC87F9BFB - 17: F27EF7D0823B056F692BA369D1B2E7B4 - 18: F62C4F7B749CF31A6F5485BFDED7EEBD - 19: 22BD3AB334BE6E04C84D6197FF69CAE3 - 20: E617D108BED8E9ACBA55FAF60863F8C3 - 21: 0DB60AE0725D37855F3AF1DDF78E98EB - 22: C76DD5A075AB30AB66FC448BD19B6588 - 23: 60231366598BEB2D16D33A1A8019B9A1 - 24: 247E925C96064801490A1D062A0C1F18 - 25: 1C1081E20DE3BE26FF24BEC3DFBA9BF2 - 26: 3B16562B3CD862C00A03B7ADC99E46C5 - 27: C1E8BA560851254640D523A0CEE846AF - 28: C36E8CF324A0A4EBC6C76EA01CDFD158 - 29: EAED84E721777F5E30184E496DA2C0FA - 30: 6655CA0D8741440212AA0DB218E5C7FE - 31: D5C0143E1BA233BA5F862EE6E11A8F58 - 32: C8DAF08BD68F4AE401C6663393C257CB - diff --git a/src/libtomcrypt/notes/rsa-testvectors/makefile b/src/libtomcrypt/notes/rsa-testvectors/makefile deleted file mode 100644 index dd84f47279..0000000000 --- a/src/libtomcrypt/notes/rsa-testvectors/makefile +++ /dev/null @@ -1,11 +0,0 @@ -default: regen - -clean: - rm -f *.c - -regen: - python rt.py pss-vect.txt pss > pss-vect.c - python rt.py oaep-vect.txt oaep > oaep-vect.c - python rt.py pkcs1v15sign-vectors.txt emsa > pkcs1v15sign-vectors.c - python rt.py pkcs1v15crypt-vectors.txt eme > pkcs1v15crypt-vectors.c - diff --git a/src/libtomcrypt/notes/rsa-testvectors/oaep-int.txt b/src/libtomcrypt/notes/rsa-testvectors/oaep-int.txt deleted file mode 100644 index b76b5dd728..0000000000 --- a/src/libtomcrypt/notes/rsa-testvectors/oaep-int.txt +++ /dev/null @@ -1,369 +0,0 @@ -# ================================= -# WORKED-OUT EXAMPLE FOR RSAES-OAEP -# ================================= -# -# This file gives an example of the process of -# encrypting and decrypting a message with -# RSAES-OAEP as specified in PKCS #1 v2.1. -# -# The message is a bit string of length 128, -# while the size of the modulus in the public -# key is 1024 bits. The second representation -# of the private key is used, which means that -# CRT is applied in the decryption process. -# -# The underlying hash function is SHA-1; the -# mask generation function is MGF1 with SHA-1 -# as specified in PKCS #1 v2.1. -# -# This file also contains a demonstration of -# the RSADP decryption primitive with CRT. -# Finally, DER encodings of the RSA keys are -# given at the end of the file. -# -# -# Integers are represented by strings of octets -# with the leftmost octet being the most -# significant octet. For example, -# -# 9,202,000 = (0x)8c 69 50. -# -# ============================================= - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -bb f8 2f 09 06 82 ce 9c 23 38 ac 2b 9d a8 71 f7 -36 8d 07 ee d4 10 43 a4 40 d6 b6 f0 74 54 f5 1f -b8 df ba af 03 5c 02 ab 61 ea 48 ce eb 6f cd 48 -76 ed 52 0d 60 e1 ec 46 19 71 9d 8a 5b 8b 80 7f -af b8 e0 a3 df c7 37 72 3e e6 b4 b7 d9 3a 25 84 -ee 6a 64 9d 06 09 53 74 88 34 b2 45 45 98 39 4e -e0 aa b1 2d 7b 61 a5 1f 52 7a 9a 41 f6 c1 68 7f -e2 53 72 98 ca 2a 8f 59 46 f8 e5 fd 09 1d bd cb - -# RSA public exponent e: -(0x)11 - -# Prime p: -ee cf ae 81 b1 b9 b3 c9 08 81 0b 10 a1 b5 60 01 -99 eb 9f 44 ae f4 fd a4 93 b8 1a 9e 3d 84 f6 32 -12 4e f0 23 6e 5d 1e 3b 7e 28 fa e7 aa 04 0a 2d -5b 25 21 76 45 9d 1f 39 75 41 ba 2a 58 fb 65 99 - -# Prime q: -c9 7f b1 f0 27 f4 53 f6 34 12 33 ea aa d1 d9 35 -3f 6c 42 d0 88 66 b1 d0 5a 0f 20 35 02 8b 9d 86 -98 40 b4 16 66 b4 2e 92 ea 0d a3 b4 32 04 b5 cf -ce 33 52 52 4d 04 16 a5 a4 41 e7 00 af 46 15 03 - -# p's CRT exponent dP: -54 49 4c a6 3e ba 03 37 e4 e2 40 23 fc d6 9a 5a -eb 07 dd dc 01 83 a4 d0 ac 9b 54 b0 51 f2 b1 3e -d9 49 09 75 ea b7 74 14 ff 59 c1 f7 69 2e 9a 2e -20 2b 38 fc 91 0a 47 41 74 ad c9 3c 1f 67 c9 81 - -# q's CRT exponent dQ: -47 1e 02 90 ff 0a f0 75 03 51 b7 f8 78 86 4c a9 -61 ad bd 3a 8a 7e 99 1c 5c 05 56 a9 4c 31 46 a7 -f9 80 3f 8f 6f 8a e3 42 e9 31 fd 8a e4 7a 22 0d -1b 99 a4 95 84 98 07 fe 39 f9 24 5a 98 36 da 3d - -# CRT coefficient qInv: -b0 6c 4f da bb 63 01 19 8d 26 5b db ae 94 23 b3 -80 f2 71 f7 34 53 88 50 93 07 7f cd 39 e2 11 9f -c9 86 32 15 4f 58 83 b1 67 a9 67 bf 40 2b 4e 9e -2e 0f 96 56 e6 98 ea 36 66 ed fb 25 79 80 39 f7 - -# ---------------------------------- -# Step-by-step RSAES-OAEP Encryption -# ---------------------------------- - -# Message M to be encrypted: -d4 36 e9 95 69 fd 32 a7 c8 a0 5b bc 90 d3 2c 49 - -# Label L: -(the empty string) - -# lHash = Hash(L) -# DB = lHash || Padding || M -# seed = random string of octets -# dbMask = MGF(seed, length(DB)) -# maskedDB = DB xor dbMask -# seedMask = MGF(maskedDB, length(seed)) -# maskedSeed = seed xor seedMask -# EM = 0x00 || maskedSeed || maskedDB - -# lHash: -da 39 a3 ee 5e 6b 4b 0d 32 55 bf ef 95 60 18 90 -af d8 07 09 - -# DB: -da 39 a3 ee 5e 6b 4b 0d 32 55 bf ef 95 60 18 90 -af d8 07 09 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 01 d4 36 e9 95 69 -fd 32 a7 c8 a0 5b bc 90 d3 2c 49 - -# seed: -aa fd 12 f6 59 ca e6 34 89 b4 79 e5 07 6d de c2 -f0 6c b5 8f - -# dbMask: -06 e1 de b2 36 9a a5 a5 c7 07 d8 2c 8e 4e 93 24 -8a c7 83 de e0 b2 c0 46 26 f5 af f9 3e dc fb 25 -c9 c2 b3 ff 8a e1 0e 83 9a 2d db 4c dc fe 4f f4 -77 28 b4 a1 b7 c1 36 2b aa d2 9a b4 8d 28 69 d5 -02 41 21 43 58 11 59 1b e3 92 f9 82 fb 3e 87 d0 -95 ae b4 04 48 db 97 2f 3a c1 4e af f4 9c 8c 3b -7c fc 95 1a 51 ec d1 dd e6 12 64 - -# maskedDB: -dc d8 7d 5c 68 f1 ee a8 f5 52 67 c3 1b 2e 8b b4 -25 1f 84 d7 e0 b2 c0 46 26 f5 af f9 3e dc fb 25 -c9 c2 b3 ff 8a e1 0e 83 9a 2d db 4c dc fe 4f f4 -77 28 b4 a1 b7 c1 36 2b aa d2 9a b4 8d 28 69 d5 -02 41 21 43 58 11 59 1b e3 92 f9 82 fb 3e 87 d0 -95 ae b4 04 48 db 97 2f 3a c1 4f 7b c2 75 19 52 -81 ce 32 d2 f1 b7 6d 4d 35 3e 2d - -# seedMask: -41 87 0b 5a b0 29 e6 57 d9 57 50 b5 4c 28 3c 08 -72 5d be a9 - -# maskedSeed: -eb 7a 19 ac e9 e3 00 63 50 e3 29 50 4b 45 e2 ca -82 31 0b 26 - -# EM = 00 || maskedSeed || maskedDB: -00 eb 7a 19 ac e9 e3 00 63 50 e3 29 50 4b 45 e2 -ca 82 31 0b 26 dc d8 7d 5c 68 f1 ee a8 f5 52 67 -c3 1b 2e 8b b4 25 1f 84 d7 e0 b2 c0 46 26 f5 af -f9 3e dc fb 25 c9 c2 b3 ff 8a e1 0e 83 9a 2d db -4c dc fe 4f f4 77 28 b4 a1 b7 c1 36 2b aa d2 9a -b4 8d 28 69 d5 02 41 21 43 58 11 59 1b e3 92 f9 -82 fb 3e 87 d0 95 ae b4 04 48 db 97 2f 3a c1 4f -7b c2 75 19 52 81 ce 32 d2 f1 b7 6d 4d 35 3e 2d - -# Ciphertext, the RSA encryption of EM: -12 53 e0 4d c0 a5 39 7b b4 4a 7a b8 7e 9b f2 a0 -39 a3 3d 1e 99 6f c8 2a 94 cc d3 00 74 c9 5d f7 -63 72 20 17 06 9e 52 68 da 5d 1c 0b 4f 87 2c f6 -53 c1 1d f8 23 14 a6 79 68 df ea e2 8d ef 04 bb -6d 84 b1 c3 1d 65 4a 19 70 e5 78 3b d6 eb 96 a0 -24 c2 ca 2f 4a 90 fe 9f 2e f5 c9 c1 40 e5 bb 48 -da 95 36 ad 87 00 c8 4f c9 13 0a de a7 4e 55 8d -51 a7 4d df 85 d8 b5 0d e9 68 38 d6 06 3e 09 55 - -# -------------------------------------------- -# Step-by-step RSAES-OAEP Decryption Using CRT -# -------------------------------------------- - -# c = the integer value of C above -# m1 = c^dP mod p = (c mod p)^dP mod p -# m2 = c^dQ mod q = (c mod q)^dQ mod q -# h = (m1-m2)*qInv mod p -# m = m2 + q*h = the integer value of EM above - -# c mod p: -de 63 d4 72 35 66 fa a7 59 bf e4 08 82 1d d5 25 -72 ec 92 85 4d df 87 a2 b6 64 d4 4d aa 37 ca 34 -6a 05 20 3d 82 ff 2d e8 e3 6c ec 1d 34 f9 8e b6 -05 e2 a7 d2 6d e7 af 36 9c e4 ec ae 14 e3 56 33 - -# c mod q: -a2 d9 24 de d9 c3 6d 62 3e d9 a6 5b 5d 86 2c fb -ec 8b 19 9c 64 27 9c 54 14 e6 41 19 6e f1 c9 3c -50 7a 9b 52 13 88 1a ad 05 b4 cc fa 02 8a c1 ec -61 42 09 74 bf 16 25 83 6b 0b 7d 05 fb b7 53 36 - -# m1: -89 6c a2 6c d7 e4 87 1c 7f c9 68 a8 ed ea 11 e2 -71 82 4f 0e 03 65 52 17 94 f1 e9 e9 43 b4 a4 4b -57 c9 e3 95 a1 46 74 78 f5 26 49 6b 4b b9 1f 1c -ba ea 90 0f fc 60 2c f0 c6 63 6e ba 84 fc 9f f7 - -# m2: -4e bb 22 75 85 f0 c1 31 2d ca 19 e0 b5 41 db 14 -99 fb f1 4e 27 0e 69 8e 23 9a 8c 27 a9 6c da 9a -74 09 74 de 93 7b 5c 9c 93 ea d9 46 2c 65 75 02 -1a 23 d4 64 99 dc 9f 6b 35 89 75 59 60 8f 19 be - -# h: -01 2b 2b 24 15 0e 76 e1 59 bd 8d db 42 76 e0 7b -fa c1 88 e0 8d 60 47 cf 0e fb 8a e2 ae bd f2 51 -c4 0e bc 23 dc fd 4a 34 42 43 94 ad a9 2c fc be -1b 2e ff bb 60 fd fb 03 35 9a 95 36 8d 98 09 25 - -# m: -00 eb 7a 19 ac e9 e3 00 63 50 e3 29 50 4b 45 e2 -ca 82 31 0b 26 dc d8 7d 5c 68 f1 ee a8 f5 52 67 -c3 1b 2e 8b b4 25 1f 84 d7 e0 b2 c0 46 26 f5 af -f9 3e dc fb 25 c9 c2 b3 ff 8a e1 0e 83 9a 2d db -4c dc fe 4f f4 77 28 b4 a1 b7 c1 36 2b aa d2 9a -b4 8d 28 69 d5 02 41 21 43 58 11 59 1b e3 92 f9 -82 fb 3e 87 d0 95 ae b4 04 48 db 97 2f 3a c1 4f -7b c2 75 19 52 81 ce 32 d2 f1 b7 6d 4d 35 3e 2d - -# The intermediate values in the remaining -# decryption process are the same as during -# RSAES-OAEP encryption of M. - -# ============================================= - -# ======================== -# DER Encoding of RSA Keys -# ======================== - -# ------------ -# RSAPublicKey -# ------------ -30 81 87 -# modulus - 02 81 81 - 00 bb f8 2f 09 06 82 ce - 9c 23 38 ac 2b 9d a8 71 - f7 36 8d 07 ee d4 10 43 - a4 40 d6 b6 f0 74 54 f5 - 1f b8 df ba af 03 5c 02 - ab 61 ea 48 ce eb 6f cd - 48 76 ed 52 0d 60 e1 ec - 46 19 71 9d 8a 5b 8b 80 - 7f af b8 e0 a3 df c7 37 - 72 3e e6 b4 b7 d9 3a 25 - 84 ee 6a 64 9d 06 09 53 - 74 88 34 b2 45 45 98 39 - 4e e0 aa b1 2d 7b 61 a5 - 1f 52 7a 9a 41 f6 c1 68 - 7f e2 53 72 98 ca 2a 8f - 59 46 f8 e5 fd 09 1d bd - cb -# publicExponent - 02 01 - 11 - -# ------------- -# RSAPrivateKey -# ------------- -30 82 02 5b -# version - 02 01 - 00 -# modulus - 02 81 81 - 00 bb f8 2f 09 06 82 ce - 9c 23 38 ac 2b 9d a8 71 - f7 36 8d 07 ee d4 10 43 - a4 40 d6 b6 f0 74 54 f5 - 1f b8 df ba af 03 5c 02 - ab 61 ea 48 ce eb 6f cd - 48 76 ed 52 0d 60 e1 ec - 46 19 71 9d 8a 5b 8b 80 - 7f af b8 e0 a3 df c7 37 - 72 3e e6 b4 b7 d9 3a 25 - 84 ee 6a 64 9d 06 09 53 - 74 88 34 b2 45 45 98 39 - 4e e0 aa b1 2d 7b 61 a5 - 1f 52 7a 9a 41 f6 c1 68 - 7f e2 53 72 98 ca 2a 8f - 59 46 f8 e5 fd 09 1d bd - cb -# publicExponent - 02 01 - 11 -# privateExponent - 02 81 81 - 00 a5 da fc 53 41 fa f2 - 89 c4 b9 88 db 30 c1 cd - f8 3f 31 25 1e 06 68 b4 - 27 84 81 38 01 57 96 41 - b2 94 10 b3 c7 99 8d 6b - c4 65 74 5e 5c 39 26 69 - d6 87 0d a2 c0 82 a9 39 - e3 7f dc b8 2e c9 3e da - c9 7f f3 ad 59 50 ac cf - bc 11 1c 76 f1 a9 52 94 - 44 e5 6a af 68 c5 6c 09 - 2c d3 8d c3 be f5 d2 0a - 93 99 26 ed 4f 74 a1 3e - dd fb e1 a1 ce cc 48 94 - af 94 28 c2 b7 b8 88 3f - e4 46 3a 4b c8 5b 1c b3 - c1 -# prime1 - 02 41 - 00 ee cf ae 81 b1 b9 b3 - c9 08 81 0b 10 a1 b5 60 - 01 99 eb 9f 44 ae f4 fd - a4 93 b8 1a 9e 3d 84 f6 - 32 12 4e f0 23 6e 5d 1e - 3b 7e 28 fa e7 aa 04 0a - 2d 5b 25 21 76 45 9d 1f - 39 75 41 ba 2a 58 fb 65 - 99 -# prime2 - 02 41 - 00 c9 7f b1 f0 27 f4 53 - f6 34 12 33 ea aa d1 d9 - 35 3f 6c 42 d0 88 66 b1 - d0 5a 0f 20 35 02 8b 9d - 86 98 40 b4 16 66 b4 2e - 92 ea 0d a3 b4 32 04 b5 - cf ce 33 52 52 4d 04 16 - a5 a4 41 e7 00 af 46 15 - 03 -# exponent1 - 02 40 - 54 49 4c a6 3e ba 03 37 - e4 e2 40 23 fc d6 9a 5a - eb 07 dd dc 01 83 a4 d0 - ac 9b 54 b0 51 f2 b1 3e - d9 49 09 75 ea b7 74 14 - ff 59 c1 f7 69 2e 9a 2e - 20 2b 38 fc 91 0a 47 41 - 74 ad c9 3c 1f 67 c9 81 -# exponent2 - 02 40 - 47 1e 02 90 ff 0a f0 75 - 03 51 b7 f8 78 86 4c a9 - 61 ad bd 3a 8a 7e 99 1c - 5c 05 56 a9 4c 31 46 a7 - f9 80 3f 8f 6f 8a e3 42 - e9 31 fd 8a e4 7a 22 0d - 1b 99 a4 95 84 98 07 fe - 39 f9 24 5a 98 36 da 3d -# coefficient - 02 41 - 00 b0 6c 4f da bb 63 01 - 19 8d 26 5b db ae 94 23 - b3 80 f2 71 f7 34 53 88 - 50 93 07 7f cd 39 e2 11 - 9f c9 86 32 15 4f 58 83 - b1 67 a9 67 bf 40 2b 4e - 9e 2e 0f 96 56 e6 98 ea - 36 66 ed fb 25 79 80 39 - f7 - -# ------------------------ -# PrivateKeyInfo (PKCS #8) -# ------------------------ -30 82 02 75 -# version - 02 01 - 00 -# privateKeyAlgorithmIdentifier - 30 0d - 06 09 - 2a 86 48 86 f7 0d 01 01 01 -# parameters - 05 00 -# privateKey = RSAPrivateKey encoding - 04 82 02 5f -# DER encoding of RSAPrivateKey structure - 30 82 02 5b ... 79 80 39 f7 - -# ============================================= diff --git a/src/libtomcrypt/notes/rsa-testvectors/oaep-vect.c b/src/libtomcrypt/notes/rsa-testvectors/oaep-vect.c deleted file mode 100644 index dcbdbb00f3..0000000000 --- a/src/libtomcrypt/notes/rsa-testvectors/oaep-vect.c +++ /dev/null @@ -1,1418 +0,0 @@ -/* Generated from file: oaep-vect.txt - * with md5 hash: 9c79a5465c35222512ed3e7ac1ad3190 - */ - - -typedef struct rsaKey { - int n_l; - unsigned char n[256]; - int e_l; - unsigned char e[256]; - int d_l; - unsigned char d[256]; - int p_l; - unsigned char p[256]; - int q_l; - unsigned char q[256]; - int dP_l; - unsigned char dP[256]; - int dQ_l; - unsigned char dQ[256]; - int qInv_l; - unsigned char qInv[256]; -} rsaKey_t; - -typedef struct rsaData { - const char* name; - int o1_l; - unsigned char o1[256]; - int o2_l; - unsigned char o2[256]; - int o3_l; - unsigned char o3[256]; -} rsaData_t; - -typedef struct testcase { - const char* name; - rsaKey_t rsa; -#ifdef LTC_TEST_EXT - rsaData_t data[6]; -#else - rsaData_t data[1]; -#endif /* LTC_TEST_EXT */ -} testcase_t; - -testcase_t testcases_oaep[] = - { -{ - "Example 1: A 1024-bit RSA Key Pair", -{ - /* RSA modulus n */ - 128, - { 0xa8, 0xb3, 0xb2, 0x84, 0xaf, 0x8e, 0xb5, 0x0b, 0x38, 0x70, 0x34, 0xa8, 0x60, 0xf1, 0x46, 0xc4, 0x91, 0x9f, 0x31, 0x87, 0x63, 0xcd, 0x6c, 0x55, 0x98, 0xc8, 0xae, 0x48, 0x11, 0xa1, 0xe0, 0xab, 0xc4, 0xc7, 0xe0, 0xb0, 0x82, 0xd6, 0x93, 0xa5, 0xe7, 0xfc, 0xed, 0x67, 0x5c, 0xf4, 0x66, 0x85, 0x12, 0x77, 0x2c, 0x0c, 0xbc, 0x64, 0xa7, 0x42, 0xc6, 0xc6, 0x30, 0xf5, 0x33, 0xc8, 0xcc, 0x72, 0xf6, 0x2a, 0xe8, 0x33, 0xc4, 0x0b, 0xf2, 0x58, 0x42, 0xe9, 0x84, 0xbb, 0x78, 0xbd, 0xbf, 0x97, 0xc0, 0x10, 0x7d, 0x55, 0xbd, 0xb6, 0x62, 0xf5, 0xc4, 0xe0, 0xfa, 0xb9, 0x84, 0x5c, 0xb5, 0x14, 0x8e, 0xf7, 0x39, 0x2d, 0xd3, 0xaa, 0xff, 0x93, 0xae, 0x1e, 0x6b, 0x66, 0x7b, 0xb3, 0xd4, 0x24, 0x76, 0x16, 0xd4, 0xf5, 0xba, 0x10, 0xd4, 0xcf, 0xd2, 0x26, 0xde, 0x88, 0xd3, 0x9f, 0x16, 0xfb } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 128, - { 0x53, 0x33, 0x9c, 0xfd, 0xb7, 0x9f, 0xc8, 0x46, 0x6a, 0x65, 0x5c, 0x73, 0x16, 0xac, 0xa8, 0x5c, 0x55, 0xfd, 0x8f, 0x6d, 0xd8, 0x98, 0xfd, 0xaf, 0x11, 0x95, 0x17, 0xef, 0x4f, 0x52, 0xe8, 0xfd, 0x8e, 0x25, 0x8d, 0xf9, 0x3f, 0xee, 0x18, 0x0f, 0xa0, 0xe4, 0xab, 0x29, 0x69, 0x3c, 0xd8, 0x3b, 0x15, 0x2a, 0x55, 0x3d, 0x4a, 0xc4, 0xd1, 0x81, 0x2b, 0x8b, 0x9f, 0xa5, 0xaf, 0x0e, 0x7f, 0x55, 0xfe, 0x73, 0x04, 0xdf, 0x41, 0x57, 0x09, 0x26, 0xf3, 0x31, 0x1f, 0x15, 0xc4, 0xd6, 0x5a, 0x73, 0x2c, 0x48, 0x31, 0x16, 0xee, 0x3d, 0x3d, 0x2d, 0x0a, 0xf3, 0x54, 0x9a, 0xd9, 0xbf, 0x7c, 0xbf, 0xb7, 0x8a, 0xd8, 0x84, 0xf8, 0x4d, 0x5b, 0xeb, 0x04, 0x72, 0x4d, 0xc7, 0x36, 0x9b, 0x31, 0xde, 0xf3, 0x7d, 0x0c, 0xf5, 0x39, 0xe9, 0xcf, 0xcd, 0xd3, 0xde, 0x65, 0x37, 0x29, 0xea, 0xd5, 0xd1 } -, - /* Prime p */ - 64, - { 0xd3, 0x27, 0x37, 0xe7, 0x26, 0x7f, 0xfe, 0x13, 0x41, 0xb2, 0xd5, 0xc0, 0xd1, 0x50, 0xa8, 0x1b, 0x58, 0x6f, 0xb3, 0x13, 0x2b, 0xed, 0x2f, 0x8d, 0x52, 0x62, 0x86, 0x4a, 0x9c, 0xb9, 0xf3, 0x0a, 0xf3, 0x8b, 0xe4, 0x48, 0x59, 0x8d, 0x41, 0x3a, 0x17, 0x2e, 0xfb, 0x80, 0x2c, 0x21, 0xac, 0xf1, 0xc1, 0x1c, 0x52, 0x0c, 0x2f, 0x26, 0xa4, 0x71, 0xdc, 0xad, 0x21, 0x2e, 0xac, 0x7c, 0xa3, 0x9d } -, - /* Prime q */ - 64, - { 0xcc, 0x88, 0x53, 0xd1, 0xd5, 0x4d, 0xa6, 0x30, 0xfa, 0xc0, 0x04, 0xf4, 0x71, 0xf2, 0x81, 0xc7, 0xb8, 0x98, 0x2d, 0x82, 0x24, 0xa4, 0x90, 0xed, 0xbe, 0xb3, 0x3d, 0x3e, 0x3d, 0x5c, 0xc9, 0x3c, 0x47, 0x65, 0x70, 0x3d, 0x1d, 0xd7, 0x91, 0x64, 0x2f, 0x1f, 0x11, 0x6a, 0x0d, 0xd8, 0x52, 0xbe, 0x24, 0x19, 0xb2, 0xaf, 0x72, 0xbf, 0xe9, 0xa0, 0x30, 0xe8, 0x60, 0xb0, 0x28, 0x8b, 0x5d, 0x77 } -, - /* p's CRT exponent dP */ - 64, - { 0x0e, 0x12, 0xbf, 0x17, 0x18, 0xe9, 0xce, 0xf5, 0x59, 0x9b, 0xa1, 0xc3, 0x88, 0x2f, 0xe8, 0x04, 0x6a, 0x90, 0x87, 0x4e, 0xef, 0xce, 0x8f, 0x2c, 0xcc, 0x20, 0xe4, 0xf2, 0x74, 0x1f, 0xb0, 0xa3, 0x3a, 0x38, 0x48, 0xae, 0xc9, 0xc9, 0x30, 0x5f, 0xbe, 0xcb, 0xd2, 0xd7, 0x68, 0x19, 0x96, 0x7d, 0x46, 0x71, 0xac, 0xc6, 0x43, 0x1e, 0x40, 0x37, 0x96, 0x8d, 0xb3, 0x78, 0x78, 0xe6, 0x95, 0xc1 } -, - /* q's CRT exponent dQ */ - 64, - { 0x95, 0x29, 0x7b, 0x0f, 0x95, 0xa2, 0xfa, 0x67, 0xd0, 0x07, 0x07, 0xd6, 0x09, 0xdf, 0xd4, 0xfc, 0x05, 0xc8, 0x9d, 0xaf, 0xc2, 0xef, 0x6d, 0x6e, 0xa5, 0x5b, 0xec, 0x77, 0x1e, 0xa3, 0x33, 0x73, 0x4d, 0x92, 0x51, 0xe7, 0x90, 0x82, 0xec, 0xda, 0x86, 0x6e, 0xfe, 0xf1, 0x3c, 0x45, 0x9e, 0x1a, 0x63, 0x13, 0x86, 0xb7, 0xe3, 0x54, 0xc8, 0x99, 0xf5, 0xf1, 0x12, 0xca, 0x85, 0xd7, 0x15, 0x83 } -, - /* CRT coefficient qInv */ - 64, - { 0x4f, 0x45, 0x6c, 0x50, 0x24, 0x93, 0xbd, 0xc0, 0xed, 0x2a, 0xb7, 0x56, 0xa3, 0xa6, 0xed, 0x4d, 0x67, 0x35, 0x2a, 0x69, 0x7d, 0x42, 0x16, 0xe9, 0x32, 0x12, 0xb1, 0x27, 0xa6, 0x3d, 0x54, 0x11, 0xce, 0x6f, 0xa9, 0x8d, 0x5d, 0xbe, 0xfd, 0x73, 0x26, 0x3e, 0x37, 0x28, 0x14, 0x27, 0x43, 0x81, 0x81, 0x66, 0xed, 0x7d, 0xd6, 0x36, 0x87, 0xdd, 0x2a, 0x8c, 0xa1, 0xd2, 0xf4, 0xfb, 0xd8, 0xe1 } - -} -, -{{ - "RSAES-OAEP Encryption Example 1.1", - /* Message to be encrypted */ - 28, - { 0x66, 0x28, 0x19, 0x4e, 0x12, 0x07, 0x3d, 0xb0, 0x3b, 0xa9, 0x4c, 0xda, 0x9e, 0xf9, 0x53, 0x23, 0x97, 0xd5, 0x0d, 0xba, 0x79, 0xb9, 0x87, 0x00, 0x4a, 0xfe, 0xfe, 0x34 } -, - /* Seed */ - 20, - { 0x18, 0xb7, 0x76, 0xea, 0x21, 0x06, 0x9d, 0x69, 0x77, 0x6a, 0x33, 0xe9, 0x6b, 0xad, 0x48, 0xe1, 0xdd, 0xa0, 0xa5, 0xef } -, - /* Encryption */ - 128, - { 0x35, 0x4f, 0xe6, 0x7b, 0x4a, 0x12, 0x6d, 0x5d, 0x35, 0xfe, 0x36, 0xc7, 0x77, 0x79, 0x1a, 0x3f, 0x7b, 0xa1, 0x3d, 0xef, 0x48, 0x4e, 0x2d, 0x39, 0x08, 0xaf, 0xf7, 0x22, 0xfa, 0xd4, 0x68, 0xfb, 0x21, 0x69, 0x6d, 0xe9, 0x5d, 0x0b, 0xe9, 0x11, 0xc2, 0xd3, 0x17, 0x4f, 0x8a, 0xfc, 0xc2, 0x01, 0x03, 0x5f, 0x7b, 0x6d, 0x8e, 0x69, 0x40, 0x2d, 0xe5, 0x45, 0x16, 0x18, 0xc2, 0x1a, 0x53, 0x5f, 0xa9, 0xd7, 0xbf, 0xc5, 0xb8, 0xdd, 0x9f, 0xc2, 0x43, 0xf8, 0xcf, 0x92, 0x7d, 0xb3, 0x13, 0x22, 0xd6, 0xe8, 0x81, 0xea, 0xa9, 0x1a, 0x99, 0x61, 0x70, 0xe6, 0x57, 0xa0, 0x5a, 0x26, 0x64, 0x26, 0xd9, 0x8c, 0x88, 0x00, 0x3f, 0x84, 0x77, 0xc1, 0x22, 0x70, 0x94, 0xa0, 0xd9, 0xfa, 0x1e, 0x8c, 0x40, 0x24, 0x30, 0x9c, 0xe1, 0xec, 0xcc, 0xb5, 0x21, 0x00, 0x35, 0xd4, 0x7a, 0xc7, 0x2e, 0x8a } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSAES-OAEP Encryption Example 1.2", - /* Message to be encrypted */ - 28, - { 0x75, 0x0c, 0x40, 0x47, 0xf5, 0x47, 0xe8, 0xe4, 0x14, 0x11, 0x85, 0x65, 0x23, 0x29, 0x8a, 0xc9, 0xba, 0xe2, 0x45, 0xef, 0xaf, 0x13, 0x97, 0xfb, 0xe5, 0x6f, 0x9d, 0xd5 } -, - /* Seed */ - 20, - { 0x0c, 0xc7, 0x42, 0xce, 0x4a, 0x9b, 0x7f, 0x32, 0xf9, 0x51, 0xbc, 0xb2, 0x51, 0xef, 0xd9, 0x25, 0xfe, 0x4f, 0xe3, 0x5f } -, - /* Encryption */ - 128, - { 0x64, 0x0d, 0xb1, 0xac, 0xc5, 0x8e, 0x05, 0x68, 0xfe, 0x54, 0x07, 0xe5, 0xf9, 0xb7, 0x01, 0xdf, 0xf8, 0xc3, 0xc9, 0x1e, 0x71, 0x6c, 0x53, 0x6f, 0xc7, 0xfc, 0xec, 0x6c, 0xb5, 0xb7, 0x1c, 0x11, 0x65, 0x98, 0x8d, 0x4a, 0x27, 0x9e, 0x15, 0x77, 0xd7, 0x30, 0xfc, 0x7a, 0x29, 0x93, 0x2e, 0x3f, 0x00, 0xc8, 0x15, 0x15, 0x23, 0x6d, 0x8d, 0x8e, 0x31, 0x01, 0x7a, 0x7a, 0x09, 0xdf, 0x43, 0x52, 0xd9, 0x04, 0xcd, 0xeb, 0x79, 0xaa, 0x58, 0x3a, 0xdc, 0xc3, 0x1e, 0xa6, 0x98, 0xa4, 0xc0, 0x52, 0x83, 0xda, 0xba, 0x90, 0x89, 0xbe, 0x54, 0x91, 0xf6, 0x7c, 0x1a, 0x4e, 0xe4, 0x8d, 0xc7, 0x4b, 0xbb, 0xe6, 0x64, 0x3a, 0xef, 0x84, 0x66, 0x79, 0xb4, 0xcb, 0x39, 0x5a, 0x35, 0x2d, 0x5e, 0xd1, 0x15, 0x91, 0x2d, 0xf6, 0x96, 0xff, 0xe0, 0x70, 0x29, 0x32, 0x94, 0x6d, 0x71, 0x49, 0x2b, 0x44 } - -} -, -{ - "RSAES-OAEP Encryption Example 1.3", - /* Message to be encrypted */ - 55, - { 0xd9, 0x4a, 0xe0, 0x83, 0x2e, 0x64, 0x45, 0xce, 0x42, 0x33, 0x1c, 0xb0, 0x6d, 0x53, 0x1a, 0x82, 0xb1, 0xdb, 0x4b, 0xaa, 0xd3, 0x0f, 0x74, 0x6d, 0xc9, 0x16, 0xdf, 0x24, 0xd4, 0xe3, 0xc2, 0x45, 0x1f, 0xff, 0x59, 0xa6, 0x42, 0x3e, 0xb0, 0xe1, 0xd0, 0x2d, 0x4f, 0xe6, 0x46, 0xcf, 0x69, 0x9d, 0xfd, 0x81, 0x8c, 0x6e, 0x97, 0xb0, 0x51 } -, - /* Seed */ - 20, - { 0x25, 0x14, 0xdf, 0x46, 0x95, 0x75, 0x5a, 0x67, 0xb2, 0x88, 0xea, 0xf4, 0x90, 0x5c, 0x36, 0xee, 0xc6, 0x6f, 0xd2, 0xfd } -, - /* Encryption */ - 128, - { 0x42, 0x37, 0x36, 0xed, 0x03, 0x5f, 0x60, 0x26, 0xaf, 0x27, 0x6c, 0x35, 0xc0, 0xb3, 0x74, 0x1b, 0x36, 0x5e, 0x5f, 0x76, 0xca, 0x09, 0x1b, 0x4e, 0x8c, 0x29, 0xe2, 0xf0, 0xbe, 0xfe, 0xe6, 0x03, 0x59, 0x5a, 0xa8, 0x32, 0x2d, 0x60, 0x2d, 0x2e, 0x62, 0x5e, 0x95, 0xeb, 0x81, 0xb2, 0xf1, 0xc9, 0x72, 0x4e, 0x82, 0x2e, 0xca, 0x76, 0xdb, 0x86, 0x18, 0xcf, 0x09, 0xc5, 0x34, 0x35, 0x03, 0xa4, 0x36, 0x08, 0x35, 0xb5, 0x90, 0x3b, 0xc6, 0x37, 0xe3, 0x87, 0x9f, 0xb0, 0x5e, 0x0e, 0xf3, 0x26, 0x85, 0xd5, 0xae, 0xc5, 0x06, 0x7c, 0xd7, 0xcc, 0x96, 0xfe, 0x4b, 0x26, 0x70, 0xb6, 0xea, 0xc3, 0x06, 0x6b, 0x1f, 0xcf, 0x56, 0x86, 0xb6, 0x85, 0x89, 0xaa, 0xfb, 0x7d, 0x62, 0x9b, 0x02, 0xd8, 0xf8, 0x62, 0x5c, 0xa3, 0x83, 0x36, 0x24, 0xd4, 0x80, 0x0f, 0xb0, 0x81, 0xb1, 0xcf, 0x94, 0xeb } - -} -, -{ - "RSAES-OAEP Encryption Example 1.4", - /* Message to be encrypted */ - 26, - { 0x52, 0xe6, 0x50, 0xd9, 0x8e, 0x7f, 0x2a, 0x04, 0x8b, 0x4f, 0x86, 0x85, 0x21, 0x53, 0xb9, 0x7e, 0x01, 0xdd, 0x31, 0x6f, 0x34, 0x6a, 0x19, 0xf6, 0x7a, 0x85 } -, - /* Seed */ - 20, - { 0xc4, 0x43, 0x5a, 0x3e, 0x1a, 0x18, 0xa6, 0x8b, 0x68, 0x20, 0x43, 0x62, 0x90, 0xa3, 0x7c, 0xef, 0xb8, 0x5d, 0xb3, 0xfb } -, - /* Encryption */ - 128, - { 0x45, 0xea, 0xd4, 0xca, 0x55, 0x1e, 0x66, 0x2c, 0x98, 0x00, 0xf1, 0xac, 0xa8, 0x28, 0x3b, 0x05, 0x25, 0xe6, 0xab, 0xae, 0x30, 0xbe, 0x4b, 0x4a, 0xba, 0x76, 0x2f, 0xa4, 0x0f, 0xd3, 0xd3, 0x8e, 0x22, 0xab, 0xef, 0xc6, 0x97, 0x94, 0xf6, 0xeb, 0xbb, 0xc0, 0x5d, 0xdb, 0xb1, 0x12, 0x16, 0x24, 0x7d, 0x2f, 0x41, 0x2f, 0xd0, 0xfb, 0xa8, 0x7c, 0x6e, 0x3a, 0xcd, 0x88, 0x88, 0x13, 0x64, 0x6f, 0xd0, 0xe4, 0x8e, 0x78, 0x52, 0x04, 0xf9, 0xc3, 0xf7, 0x3d, 0x6d, 0x82, 0x39, 0x56, 0x27, 0x22, 0xdd, 0xdd, 0x87, 0x71, 0xfe, 0xc4, 0x8b, 0x83, 0xa3, 0x1e, 0xe6, 0xf5, 0x92, 0xc4, 0xcf, 0xd4, 0xbc, 0x88, 0x17, 0x4f, 0x3b, 0x13, 0xa1, 0x12, 0xaa, 0xe3, 0xb9, 0xf7, 0xb8, 0x0e, 0x0f, 0xc6, 0xf7, 0x25, 0x5b, 0xa8, 0x80, 0xdc, 0x7d, 0x80, 0x21, 0xe2, 0x2a, 0xd6, 0xa8, 0x5f, 0x07, 0x55 } - -} -, -{ - "RSAES-OAEP Encryption Example 1.5", - /* Message to be encrypted */ - 20, - { 0x8d, 0xa8, 0x9f, 0xd9, 0xe5, 0xf9, 0x74, 0xa2, 0x9f, 0xef, 0xfb, 0x46, 0x2b, 0x49, 0x18, 0x0f, 0x6c, 0xf9, 0xe8, 0x02 } -, - /* Seed */ - 20, - { 0xb3, 0x18, 0xc4, 0x2d, 0xf3, 0xbe, 0x0f, 0x83, 0xfe, 0xa8, 0x23, 0xf5, 0xa7, 0xb4, 0x7e, 0xd5, 0xe4, 0x25, 0xa3, 0xb5 } -, - /* Encryption */ - 128, - { 0x36, 0xf6, 0xe3, 0x4d, 0x94, 0xa8, 0xd3, 0x4d, 0xaa, 0xcb, 0xa3, 0x3a, 0x21, 0x39, 0xd0, 0x0a, 0xd8, 0x5a, 0x93, 0x45, 0xa8, 0x60, 0x51, 0xe7, 0x30, 0x71, 0x62, 0x00, 0x56, 0xb9, 0x20, 0xe2, 0x19, 0x00, 0x58, 0x55, 0xa2, 0x13, 0xa0, 0xf2, 0x38, 0x97, 0xcd, 0xcd, 0x73, 0x1b, 0x45, 0x25, 0x7c, 0x77, 0x7f, 0xe9, 0x08, 0x20, 0x2b, 0xef, 0xdd, 0x0b, 0x58, 0x38, 0x6b, 0x12, 0x44, 0xea, 0x0c, 0xf5, 0x39, 0xa0, 0x5d, 0x5d, 0x10, 0x32, 0x9d, 0xa4, 0x4e, 0x13, 0x03, 0x0f, 0xd7, 0x60, 0xdc, 0xd6, 0x44, 0xcf, 0xef, 0x20, 0x94, 0xd1, 0x91, 0x0d, 0x3f, 0x43, 0x3e, 0x1c, 0x7c, 0x6d, 0xd1, 0x8b, 0xc1, 0xf2, 0xdf, 0x7f, 0x64, 0x3d, 0x66, 0x2f, 0xb9, 0xdd, 0x37, 0xea, 0xd9, 0x05, 0x91, 0x90, 0xf4, 0xfa, 0x66, 0xca, 0x39, 0xe8, 0x69, 0xc4, 0xeb, 0x44, 0x9c, 0xbd, 0xc4, 0x39 } - -} -, -{ - "RSAES-OAEP Encryption Example 1.6", - /* Message to be encrypted */ - 7, - { 0x26, 0x52, 0x10, 0x50, 0x84, 0x42, 0x71 } -, - /* Seed */ - 20, - { 0xe4, 0xec, 0x09, 0x82, 0xc2, 0x33, 0x6f, 0x3a, 0x67, 0x7f, 0x6a, 0x35, 0x61, 0x74, 0xeb, 0x0c, 0xe8, 0x87, 0xab, 0xc2 } -, - /* Encryption */ - 128, - { 0x42, 0xce, 0xe2, 0x61, 0x7b, 0x1e, 0xce, 0xa4, 0xdb, 0x3f, 0x48, 0x29, 0x38, 0x6f, 0xbd, 0x61, 0xda, 0xfb, 0xf0, 0x38, 0xe1, 0x80, 0xd8, 0x37, 0xc9, 0x63, 0x66, 0xdf, 0x24, 0xc0, 0x97, 0xb4, 0xab, 0x0f, 0xac, 0x6b, 0xdf, 0x59, 0x0d, 0x82, 0x1c, 0x9f, 0x10, 0x64, 0x2e, 0x68, 0x1a, 0xd0, 0x5b, 0x8d, 0x78, 0xb3, 0x78, 0xc0, 0xf4, 0x6c, 0xe2, 0xfa, 0xd6, 0x3f, 0x74, 0xe0, 0xad, 0x3d, 0xf0, 0x6b, 0x07, 0x5d, 0x7e, 0xb5, 0xf5, 0x63, 0x6f, 0x8d, 0x40, 0x3b, 0x90, 0x59, 0xca, 0x76, 0x1b, 0x5c, 0x62, 0xbb, 0x52, 0xaa, 0x45, 0x00, 0x2e, 0xa7, 0x0b, 0xaa, 0xce, 0x08, 0xde, 0xd2, 0x43, 0xb9, 0xd8, 0xcb, 0xd6, 0x2a, 0x68, 0xad, 0xe2, 0x65, 0x83, 0x2b, 0x56, 0x56, 0x4e, 0x43, 0xa6, 0xfa, 0x42, 0xed, 0x19, 0x9a, 0x09, 0x97, 0x69, 0x74, 0x2d, 0xf1, 0x53, 0x9e, 0x82, 0x55 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 2: A 1025-bit RSA Key Pair", -{ - /* RSA modulus n */ - 129, - { 0x01, 0x94, 0x7c, 0x7f, 0xce, 0x90, 0x42, 0x5f, 0x47, 0x27, 0x9e, 0x70, 0x85, 0x1f, 0x25, 0xd5, 0xe6, 0x23, 0x16, 0xfe, 0x8a, 0x1d, 0xf1, 0x93, 0x71, 0xe3, 0xe6, 0x28, 0xe2, 0x60, 0x54, 0x3e, 0x49, 0x01, 0xef, 0x60, 0x81, 0xf6, 0x8c, 0x0b, 0x81, 0x41, 0x19, 0x0d, 0x2a, 0xe8, 0xda, 0xba, 0x7d, 0x12, 0x50, 0xec, 0x6d, 0xb6, 0x36, 0xe9, 0x44, 0xec, 0x37, 0x22, 0x87, 0x7c, 0x7c, 0x1d, 0x0a, 0x67, 0xf1, 0x4b, 0x16, 0x94, 0xc5, 0xf0, 0x37, 0x94, 0x51, 0xa4, 0x3e, 0x49, 0xa3, 0x2d, 0xde, 0x83, 0x67, 0x0b, 0x73, 0xda, 0x91, 0xa1, 0xc9, 0x9b, 0xc2, 0x3b, 0x43, 0x6a, 0x60, 0x05, 0x5c, 0x61, 0x0f, 0x0b, 0xaf, 0x99, 0xc1, 0xa0, 0x79, 0x56, 0x5b, 0x95, 0xa3, 0xf1, 0x52, 0x66, 0x32, 0xd1, 0xd4, 0xda, 0x60, 0xf2, 0x0e, 0xda, 0x25, 0xe6, 0x53, 0xc4, 0xf0, 0x02, 0x76, 0x6f, 0x45 } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 128, - { 0x08, 0x23, 0xf2, 0x0f, 0xad, 0xb5, 0xda, 0x89, 0x08, 0x8a, 0x9d, 0x00, 0x89, 0x3e, 0x21, 0xfa, 0x4a, 0x1b, 0x11, 0xfb, 0xc9, 0x3c, 0x64, 0xa3, 0xbe, 0x0b, 0xaa, 0xea, 0x97, 0xfb, 0x3b, 0x93, 0xc3, 0xff, 0x71, 0x37, 0x04, 0xc1, 0x9c, 0x96, 0x3c, 0x1d, 0x10, 0x7a, 0xae, 0x99, 0x05, 0x47, 0x39, 0xf7, 0x9e, 0x02, 0xe1, 0x86, 0xde, 0x86, 0xf8, 0x7a, 0x6d, 0xde, 0xfe, 0xa6, 0xd8, 0xcc, 0xd1, 0xd3, 0xc8, 0x1a, 0x47, 0xbf, 0xa7, 0x25, 0x5b, 0xe2, 0x06, 0x01, 0xa4, 0xa4, 0xb2, 0xf0, 0x8a, 0x16, 0x7b, 0x5e, 0x27, 0x9d, 0x71, 0x5b, 0x1b, 0x45, 0x5b, 0xdd, 0x7e, 0xab, 0x24, 0x59, 0x41, 0xd9, 0x76, 0x8b, 0x9a, 0xce, 0xfb, 0x3c, 0xcd, 0xa5, 0x95, 0x2d, 0xa3, 0xce, 0xe7, 0x25, 0x25, 0xb4, 0x50, 0x16, 0x63, 0xa8, 0xee, 0x15, 0xc9, 0xe9, 0x92, 0xd9, 0x24, 0x62, 0xfe, 0x39 } -, - /* Prime p */ - 65, - { 0x01, 0x59, 0xdb, 0xde, 0x04, 0xa3, 0x3e, 0xf0, 0x6f, 0xb6, 0x08, 0xb8, 0x0b, 0x19, 0x0f, 0x4d, 0x3e, 0x22, 0xbc, 0xc1, 0x3a, 0xc8, 0xe4, 0xa0, 0x81, 0x03, 0x3a, 0xbf, 0xa4, 0x16, 0xed, 0xb0, 0xb3, 0x38, 0xaa, 0x08, 0xb5, 0x73, 0x09, 0xea, 0x5a, 0x52, 0x40, 0xe7, 0xdc, 0x6e, 0x54, 0x37, 0x8c, 0x69, 0x41, 0x4c, 0x31, 0xd9, 0x7d, 0xdb, 0x1f, 0x40, 0x6d, 0xb3, 0x76, 0x9c, 0xc4, 0x1a, 0x43 } -, - /* Prime q */ - 65, - { 0x01, 0x2b, 0x65, 0x2f, 0x30, 0x40, 0x3b, 0x38, 0xb4, 0x09, 0x95, 0xfd, 0x6f, 0xf4, 0x1a, 0x1a, 0xcc, 0x8a, 0xda, 0x70, 0x37, 0x32, 0x36, 0xb7, 0x20, 0x2d, 0x39, 0xb2, 0xee, 0x30, 0xcf, 0xb4, 0x6d, 0xb0, 0x95, 0x11, 0xf6, 0xf3, 0x07, 0xcc, 0x61, 0xcc, 0x21, 0x60, 0x6c, 0x18, 0xa7, 0x5b, 0x8a, 0x62, 0xf8, 0x22, 0xdf, 0x03, 0x1b, 0xa0, 0xdf, 0x0d, 0xaf, 0xd5, 0x50, 0x6f, 0x56, 0x8b, 0xd7 } -, - /* p's CRT exponent dP */ - 64, - { 0x43, 0x6e, 0xf5, 0x08, 0xde, 0x73, 0x65, 0x19, 0xc2, 0xda, 0x4c, 0x58, 0x0d, 0x98, 0xc8, 0x2c, 0xb7, 0x45, 0x2a, 0x3f, 0xb5, 0xef, 0xad, 0xc3, 0xb9, 0xc7, 0x78, 0x9a, 0x1b, 0xc6, 0x58, 0x4f, 0x79, 0x5a, 0xdd, 0xbb, 0xd3, 0x24, 0x39, 0xc7, 0x46, 0x86, 0x55, 0x2e, 0xcb, 0x6c, 0x2c, 0x30, 0x7a, 0x4d, 0x3a, 0xf7, 0xf5, 0x39, 0xee, 0xc1, 0x57, 0x24, 0x8c, 0x7b, 0x31, 0xf1, 0xa2, 0x55 } -, - /* q's CRT exponent dQ */ - 65, - { 0x01, 0x2b, 0x15, 0xa8, 0x9f, 0x3d, 0xfb, 0x2b, 0x39, 0x07, 0x3e, 0x73, 0xf0, 0x2b, 0xdd, 0x0c, 0x1a, 0x7b, 0x37, 0x9d, 0xd4, 0x35, 0xf0, 0x5c, 0xdd, 0xe2, 0xef, 0xf9, 0xe4, 0x62, 0x94, 0x8b, 0x7c, 0xec, 0x62, 0xee, 0x90, 0x50, 0xd5, 0xe0, 0x81, 0x6e, 0x07, 0x85, 0xa8, 0x56, 0xb4, 0x91, 0x08, 0xdc, 0xb7, 0x5f, 0x36, 0x83, 0x87, 0x4d, 0x1c, 0xa6, 0x32, 0x9a, 0x19, 0x01, 0x30, 0x66, 0xff } -, - /* CRT coefficient qInv */ - 64, - { 0x02, 0x70, 0xdb, 0x17, 0xd5, 0x91, 0x4b, 0x01, 0x8d, 0x76, 0x11, 0x8b, 0x24, 0x38, 0x9a, 0x73, 0x50, 0xec, 0x83, 0x6b, 0x00, 0x63, 0xa2, 0x17, 0x21, 0x23, 0x6f, 0xd8, 0xed, 0xb6, 0xd8, 0x9b, 0x51, 0xe7, 0xee, 0xb8, 0x7b, 0x61, 0x1b, 0x71, 0x32, 0xcb, 0x7e, 0xa7, 0x35, 0x6c, 0x23, 0x15, 0x1c, 0x1e, 0x77, 0x51, 0x50, 0x7c, 0x78, 0x6d, 0x9e, 0xe1, 0x79, 0x41, 0x70, 0xa8, 0xc8, 0xe8 } - -} -, -{{ - "RSAES-OAEP Encryption Example 2.1", - /* Message to be encrypted */ - 27, - { 0x8f, 0xf0, 0x0c, 0xaa, 0x60, 0x5c, 0x70, 0x28, 0x30, 0x63, 0x4d, 0x9a, 0x6c, 0x3d, 0x42, 0xc6, 0x52, 0xb5, 0x8c, 0xf1, 0xd9, 0x2f, 0xec, 0x57, 0x0b, 0xee, 0xe7 } -, - /* Seed */ - 20, - { 0x8c, 0x40, 0x7b, 0x5e, 0xc2, 0x89, 0x9e, 0x50, 0x99, 0xc5, 0x3e, 0x8c, 0xe7, 0x93, 0xbf, 0x94, 0xe7, 0x1b, 0x17, 0x82 } -, - /* Encryption */ - 129, - { 0x01, 0x81, 0xaf, 0x89, 0x22, 0xb9, 0xfc, 0xb4, 0xd7, 0x9d, 0x92, 0xeb, 0xe1, 0x98, 0x15, 0x99, 0x2f, 0xc0, 0xc1, 0x43, 0x9d, 0x8b, 0xcd, 0x49, 0x13, 0x98, 0xa0, 0xf4, 0xad, 0x3a, 0x32, 0x9a, 0x5b, 0xd9, 0x38, 0x55, 0x60, 0xdb, 0x53, 0x26, 0x83, 0xc8, 0xb7, 0xda, 0x04, 0xe4, 0xb1, 0x2a, 0xed, 0x6a, 0xac, 0xdf, 0x47, 0x1c, 0x34, 0xc9, 0xcd, 0xa8, 0x91, 0xad, 0xdc, 0xc2, 0xdf, 0x34, 0x56, 0x65, 0x3a, 0xa6, 0x38, 0x2e, 0x9a, 0xe5, 0x9b, 0x54, 0x45, 0x52, 0x57, 0xeb, 0x09, 0x9d, 0x56, 0x2b, 0xbe, 0x10, 0x45, 0x3f, 0x2b, 0x6d, 0x13, 0xc5, 0x9c, 0x02, 0xe1, 0x0f, 0x1f, 0x8a, 0xbb, 0x5d, 0xa0, 0xd0, 0x57, 0x09, 0x32, 0xda, 0xcf, 0x2d, 0x09, 0x01, 0xdb, 0x72, 0x9d, 0x0f, 0xef, 0xcc, 0x05, 0x4e, 0x70, 0x96, 0x8e, 0xa5, 0x40, 0xc8, 0x1b, 0x04, 0xbc, 0xae, 0xfe, 0x72, 0x0e } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSAES-OAEP Encryption Example 2.2", - /* Message to be encrypted */ - 1, - { 0x2d } -, - /* Seed */ - 20, - { 0xb6, 0x00, 0xcf, 0x3c, 0x2e, 0x50, 0x6d, 0x7f, 0x16, 0x77, 0x8c, 0x91, 0x0d, 0x3a, 0x8b, 0x00, 0x3e, 0xee, 0x61, 0xd5 } -, - /* Encryption */ - 129, - { 0x01, 0x87, 0x59, 0xff, 0x1d, 0xf6, 0x3b, 0x27, 0x92, 0x41, 0x05, 0x62, 0x31, 0x44, 0x16, 0xa8, 0xae, 0xaf, 0x2a, 0xc6, 0x34, 0xb4, 0x6f, 0x94, 0x0a, 0xb8, 0x2d, 0x64, 0xdb, 0xf1, 0x65, 0xee, 0xe3, 0x30, 0x11, 0xda, 0x74, 0x9d, 0x4b, 0xab, 0x6e, 0x2f, 0xcd, 0x18, 0x12, 0x9c, 0x9e, 0x49, 0x27, 0x7d, 0x84, 0x53, 0x11, 0x2b, 0x42, 0x9a, 0x22, 0x2a, 0x84, 0x71, 0xb0, 0x70, 0x99, 0x39, 0x98, 0xe7, 0x58, 0x86, 0x1c, 0x4d, 0x3f, 0x6d, 0x74, 0x9d, 0x91, 0xc4, 0x29, 0x0d, 0x33, 0x2c, 0x7a, 0x4a, 0xb3, 0xf7, 0xea, 0x35, 0xff, 0x3a, 0x07, 0xd4, 0x97, 0xc9, 0x55, 0xff, 0x0f, 0xfc, 0x95, 0x00, 0x6b, 0x62, 0xc6, 0xd2, 0x96, 0x81, 0x0d, 0x9b, 0xfa, 0xb0, 0x24, 0x19, 0x6c, 0x79, 0x34, 0x01, 0x2c, 0x2d, 0xf9, 0x78, 0xef, 0x29, 0x9a, 0xba, 0x23, 0x99, 0x40, 0xcb, 0xa1, 0x02, 0x45 } - -} -, -{ - "RSAES-OAEP Encryption Example 2.3", - /* Message to be encrypted */ - 26, - { 0x74, 0xfc, 0x88, 0xc5, 0x1b, 0xc9, 0x0f, 0x77, 0xaf, 0x9d, 0x5e, 0x9a, 0x4a, 0x70, 0x13, 0x3d, 0x4b, 0x4e, 0x0b, 0x34, 0xda, 0x3c, 0x37, 0xc7, 0xef, 0x8e } -, - /* Seed */ - 20, - { 0xa7, 0x37, 0x68, 0xae, 0xea, 0xa9, 0x1f, 0x9d, 0x8c, 0x1e, 0xd6, 0xf9, 0xd2, 0xb6, 0x34, 0x67, 0xf0, 0x7c, 0xca, 0xe3 } -, - /* Encryption */ - 129, - { 0x01, 0x88, 0x02, 0xba, 0xb0, 0x4c, 0x60, 0x32, 0x5e, 0x81, 0xc4, 0x96, 0x23, 0x11, 0xf2, 0xbe, 0x7c, 0x2a, 0xdc, 0xe9, 0x30, 0x41, 0xa0, 0x07, 0x19, 0xc8, 0x8f, 0x95, 0x75, 0x75, 0xf2, 0xc7, 0x9f, 0x1b, 0x7b, 0xc8, 0xce, 0xd1, 0x15, 0xc7, 0x06, 0xb3, 0x11, 0xc0, 0x8a, 0x2d, 0x98, 0x6c, 0xa3, 0xb6, 0xa9, 0x33, 0x6b, 0x14, 0x7c, 0x29, 0xc6, 0xf2, 0x29, 0x40, 0x9d, 0xde, 0xc6, 0x51, 0xbd, 0x1f, 0xdd, 0x5a, 0x0b, 0x7f, 0x61, 0x0c, 0x99, 0x37, 0xfd, 0xb4, 0xa3, 0xa7, 0x62, 0x36, 0x4b, 0x8b, 0x32, 0x06, 0xb4, 0xea, 0x48, 0x5f, 0xd0, 0x98, 0xd0, 0x8f, 0x63, 0xd4, 0xaa, 0x8b, 0xb2, 0x69, 0x7d, 0x02, 0x7b, 0x75, 0x0c, 0x32, 0xd7, 0xf7, 0x4e, 0xaf, 0x51, 0x80, 0xd2, 0xe9, 0xb6, 0x6b, 0x17, 0xcb, 0x2f, 0xa5, 0x55, 0x23, 0xbc, 0x28, 0x0d, 0xa1, 0x0d, 0x14, 0xbe, 0x20, 0x53 } - -} -, -{ - "RSAES-OAEP Encryption Example 2.4", - /* Message to be encrypted */ - 53, - { 0xa7, 0xeb, 0x2a, 0x50, 0x36, 0x93, 0x1d, 0x27, 0xd4, 0xe8, 0x91, 0x32, 0x6d, 0x99, 0x69, 0x2f, 0xfa, 0xdd, 0xa9, 0xbf, 0x7e, 0xfd, 0x3e, 0x34, 0xe6, 0x22, 0xc4, 0xad, 0xc0, 0x85, 0xf7, 0x21, 0xdf, 0xe8, 0x85, 0x07, 0x2c, 0x78, 0xa2, 0x03, 0xb1, 0x51, 0x73, 0x9b, 0xe5, 0x40, 0xfa, 0x8c, 0x15, 0x3a, 0x10, 0xf0, 0x0a } -, - /* Seed */ - 20, - { 0x9a, 0x7b, 0x3b, 0x0e, 0x70, 0x8b, 0xd9, 0x6f, 0x81, 0x90, 0xec, 0xab, 0x4f, 0xb9, 0xb2, 0xb3, 0x80, 0x5a, 0x81, 0x56 } -, - /* Encryption */ - 129, - { 0x00, 0xa4, 0x57, 0x8c, 0xbc, 0x17, 0x63, 0x18, 0xa6, 0x38, 0xfb, 0xa7, 0xd0, 0x1d, 0xf1, 0x57, 0x46, 0xaf, 0x44, 0xd4, 0xf6, 0xcd, 0x96, 0xd7, 0xe7, 0xc4, 0x95, 0xcb, 0xf4, 0x25, 0xb0, 0x9c, 0x64, 0x9d, 0x32, 0xbf, 0x88, 0x6d, 0xa4, 0x8f, 0xba, 0xf9, 0x89, 0xa2, 0x11, 0x71, 0x87, 0xca, 0xfb, 0x1f, 0xb5, 0x80, 0x31, 0x76, 0x90, 0xe3, 0xcc, 0xd4, 0x46, 0x92, 0x0b, 0x7a, 0xf8, 0x2b, 0x31, 0xdb, 0x58, 0x04, 0xd8, 0x7d, 0x01, 0x51, 0x4a, 0xcb, 0xfa, 0x91, 0x56, 0xe7, 0x82, 0xf8, 0x67, 0xf6, 0xbe, 0xd9, 0x44, 0x9e, 0x0e, 0x9a, 0x2c, 0x09, 0xbc, 0xec, 0xc6, 0xaa, 0x08, 0x76, 0x36, 0x96, 0x5e, 0x34, 0xb3, 0xec, 0x76, 0x6f, 0x2f, 0xe2, 0xe4, 0x30, 0x18, 0xa2, 0xfd, 0xde, 0xb1, 0x40, 0x61, 0x6a, 0x0e, 0x9d, 0x82, 0xe5, 0x33, 0x10, 0x24, 0xee, 0x06, 0x52, 0xfc, 0x76, 0x41 } - -} -, -{ - "RSAES-OAEP Encryption Example 2.5", - /* Message to be encrypted */ - 19, - { 0x2e, 0xf2, 0xb0, 0x66, 0xf8, 0x54, 0xc3, 0x3f, 0x3b, 0xdc, 0xbb, 0x59, 0x94, 0xa4, 0x35, 0xe7, 0x3d, 0x6c, 0x6c } -, - /* Seed */ - 20, - { 0xeb, 0x3c, 0xeb, 0xbc, 0x4a, 0xdc, 0x16, 0xbb, 0x48, 0xe8, 0x8c, 0x8a, 0xec, 0x0e, 0x34, 0xaf, 0x7f, 0x42, 0x7f, 0xd3 } -, - /* Encryption */ - 129, - { 0x00, 0xeb, 0xc5, 0xf5, 0xfd, 0xa7, 0x7c, 0xfd, 0xad, 0x3c, 0x83, 0x64, 0x1a, 0x90, 0x25, 0xe7, 0x7d, 0x72, 0xd8, 0xa6, 0xfb, 0x33, 0xa8, 0x10, 0xf5, 0x95, 0x0f, 0x8d, 0x74, 0xc7, 0x3e, 0x8d, 0x93, 0x1e, 0x86, 0x34, 0xd8, 0x6a, 0xb1, 0x24, 0x62, 0x56, 0xae, 0x07, 0xb6, 0x00, 0x5b, 0x71, 0xb7, 0xf2, 0xfb, 0x98, 0x35, 0x12, 0x18, 0x33, 0x1c, 0xe6, 0x9b, 0x8f, 0xfb, 0xdc, 0x9d, 0xa0, 0x8b, 0xbc, 0x9c, 0x70, 0x4f, 0x87, 0x6d, 0xeb, 0x9d, 0xf9, 0xfc, 0x2e, 0xc0, 0x65, 0xca, 0xd8, 0x7f, 0x90, 0x90, 0xb0, 0x7a, 0xcc, 0x17, 0xaa, 0x7f, 0x99, 0x7b, 0x27, 0xac, 0xa4, 0x88, 0x06, 0xe8, 0x97, 0xf7, 0x71, 0xd9, 0x51, 0x41, 0xfe, 0x45, 0x26, 0xd8, 0xa5, 0x30, 0x1b, 0x67, 0x86, 0x27, 0xef, 0xab, 0x70, 0x7f, 0xd4, 0x0f, 0xbe, 0xbd, 0x6e, 0x79, 0x2a, 0x25, 0x61, 0x3e, 0x7a, 0xec } - -} -, -{ - "RSAES-OAEP Encryption Example 2.6", - /* Message to be encrypted */ - 22, - { 0x8a, 0x7f, 0xb3, 0x44, 0xc8, 0xb6, 0xcb, 0x2c, 0xf2, 0xef, 0x1f, 0x64, 0x3f, 0x9a, 0x32, 0x18, 0xf6, 0xe1, 0x9b, 0xba, 0x89, 0xc0 } -, - /* Seed */ - 20, - { 0x4c, 0x45, 0xcf, 0x4d, 0x57, 0xc9, 0x8e, 0x3d, 0x6d, 0x20, 0x95, 0xad, 0xc5, 0x1c, 0x48, 0x9e, 0xb5, 0x0d, 0xff, 0x84 } -, - /* Encryption */ - 129, - { 0x01, 0x08, 0x39, 0xec, 0x20, 0xc2, 0x7b, 0x90, 0x52, 0xe5, 0x5b, 0xef, 0xb9, 0xb7, 0x7e, 0x6f, 0xc2, 0x6e, 0x90, 0x75, 0xd7, 0xa5, 0x43, 0x78, 0xc6, 0x46, 0xab, 0xdf, 0x51, 0xe4, 0x45, 0xbd, 0x57, 0x15, 0xde, 0x81, 0x78, 0x9f, 0x56, 0xf1, 0x80, 0x3d, 0x91, 0x70, 0x76, 0x4a, 0x9e, 0x93, 0xcb, 0x78, 0x79, 0x86, 0x94, 0x02, 0x3e, 0xe7, 0x39, 0x3c, 0xe0, 0x4b, 0xc5, 0xd8, 0xf8, 0xc5, 0xa5, 0x2c, 0x17, 0x1d, 0x43, 0x83, 0x7e, 0x3a, 0xca, 0x62, 0xf6, 0x09, 0xeb, 0x0a, 0xa5, 0xff, 0xb0, 0x96, 0x0e, 0xf0, 0x41, 0x98, 0xdd, 0x75, 0x4f, 0x57, 0xf7, 0xfb, 0xe6, 0xab, 0xf7, 0x65, 0xcf, 0x11, 0x8b, 0x4c, 0xa4, 0x43, 0xb2, 0x3b, 0x5a, 0xab, 0x26, 0x6f, 0x95, 0x23, 0x26, 0xac, 0x45, 0x81, 0x10, 0x06, 0x44, 0x32, 0x5f, 0x8b, 0x72, 0x1a, 0xcd, 0x5d, 0x04, 0xff, 0x14, 0xef, 0x3a } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 3: A 1026-bit RSA Key Pair", -{ - /* RSA modulus n */ - 129, - { 0x02, 0xb5, 0x8f, 0xec, 0x03, 0x9a, 0x86, 0x07, 0x00, 0xa4, 0xd7, 0xb6, 0x46, 0x2f, 0x93, 0xe6, 0xcd, 0xd4, 0x91, 0x16, 0x1d, 0xdd, 0x74, 0xf4, 0xe8, 0x10, 0xb4, 0x0e, 0x3c, 0x16, 0x52, 0x00, 0x6a, 0x5c, 0x27, 0x7b, 0x27, 0x74, 0xc1, 0x13, 0x05, 0xa4, 0xcb, 0xab, 0x5a, 0x78, 0xef, 0xa5, 0x7e, 0x17, 0xa8, 0x6d, 0xf7, 0xa3, 0xfa, 0x36, 0xfc, 0x4b, 0x1d, 0x22, 0x49, 0xf2, 0x2e, 0xc7, 0xc2, 0xdd, 0x6a, 0x46, 0x32, 0x32, 0xac, 0xce, 0xa9, 0x06, 0xd6, 0x6e, 0xbe, 0x80, 0xb5, 0x70, 0x4b, 0x10, 0x72, 0x9d, 0xa6, 0xf8, 0x33, 0x23, 0x4a, 0xbb, 0x5e, 0xfd, 0xd4, 0xa2, 0x92, 0xcb, 0xfa, 0xd3, 0x3b, 0x4d, 0x33, 0xfa, 0x7a, 0x14, 0xb8, 0xc3, 0x97, 0xb5, 0x6e, 0x3a, 0xcd, 0x21, 0x20, 0x34, 0x28, 0xb7, 0x7c, 0xdf, 0xa3, 0x3a, 0x6d, 0xa7, 0x06, 0xb3, 0xd8, 0xb0, 0xfc, 0x43, 0xe9 } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 128, - { 0x15, 0xb4, 0x8a, 0x5b, 0x56, 0x83, 0xa9, 0x46, 0x70, 0xe2, 0x3b, 0x57, 0x18, 0xf8, 0x14, 0xfa, 0x0e, 0x13, 0xf8, 0x50, 0x38, 0xf5, 0x07, 0x11, 0x18, 0x2c, 0xba, 0x61, 0x51, 0x05, 0x81, 0xf3, 0xd2, 0x2c, 0x7e, 0x23, 0x2e, 0xf9, 0x37, 0xe2, 0x2e, 0x55, 0x1d, 0x68, 0xb8, 0x6e, 0x2f, 0x8c, 0xb1, 0xaa, 0xd8, 0xbe, 0x2e, 0x48, 0x8f, 0x5d, 0xf7, 0xef, 0xd2, 0x79, 0xe3, 0xf5, 0x68, 0xd4, 0xea, 0xf3, 0x6f, 0x80, 0xcf, 0x71, 0x41, 0xac, 0xe6, 0x0f, 0xcc, 0x91, 0x13, 0xfb, 0x6c, 0x4a, 0x84, 0x1f, 0xd5, 0x0b, 0xbc, 0x7c, 0x51, 0x2f, 0xfc, 0xbe, 0xff, 0x21, 0x48, 0x7a, 0xa8, 0x11, 0xeb, 0x3c, 0xa8, 0xc6, 0x20, 0x05, 0x34, 0x6a, 0x86, 0xde, 0x86, 0xbf, 0xa1, 0xd8, 0xa9, 0x48, 0xfd, 0x3f, 0x34, 0x8c, 0x22, 0xea, 0xad, 0xf3, 0x33, 0xc3, 0xce, 0x6c, 0xe1, 0x32, 0x08, 0xfd } -, - /* Prime p */ - 65, - { 0x01, 0xbf, 0x01, 0xd2, 0x16, 0xd7, 0x35, 0x95, 0xcf, 0x02, 0x70, 0xc2, 0xbe, 0xb7, 0x8d, 0x40, 0xa0, 0xd8, 0x44, 0x7d, 0x31, 0xda, 0x91, 0x9a, 0x98, 0x3f, 0x7e, 0xea, 0x78, 0x1b, 0x77, 0xd8, 0x5f, 0xe3, 0x71, 0xb3, 0xe9, 0x37, 0x3e, 0x7b, 0x69, 0x21, 0x7d, 0x31, 0x50, 0xa0, 0x2d, 0x89, 0x58, 0xde, 0x7f, 0xad, 0x9d, 0x55, 0x51, 0x60, 0x95, 0x8b, 0x44, 0x54, 0x12, 0x7e, 0x0e, 0x7e, 0xaf } -, - /* Prime q */ - 65, - { 0x01, 0x8d, 0x33, 0x99, 0x65, 0x81, 0x66, 0xdb, 0x38, 0x29, 0x81, 0x6d, 0x7b, 0x29, 0x54, 0x16, 0x75, 0x9e, 0x9c, 0x91, 0x98, 0x7f, 0x5b, 0x2d, 0x8a, 0xec, 0xd6, 0x3b, 0x04, 0xb4, 0x8b, 0xd7, 0xb2, 0xfc, 0xf2, 0x29, 0xbb, 0x7f, 0x8a, 0x6d, 0xc8, 0x8b, 0xa1, 0x3d, 0xd2, 0xe3, 0x9a, 0xd5, 0x5b, 0x6d, 0x1a, 0x06, 0x16, 0x07, 0x08, 0xf9, 0x70, 0x0b, 0xe8, 0x0b, 0x8f, 0xd3, 0x74, 0x4c, 0xe7 } -, - /* p's CRT exponent dP */ - 64, - { 0x06, 0xc0, 0xa2, 0x49, 0xd2, 0x0a, 0x6f, 0x2e, 0xe7, 0x5c, 0x88, 0xb4, 0x94, 0xd5, 0x3f, 0x6a, 0xae, 0x99, 0xaa, 0x42, 0x7c, 0x88, 0xc2, 0x8b, 0x16, 0x3a, 0x76, 0x94, 0x45, 0xe5, 0xf3, 0x90, 0xcf, 0x40, 0xc2, 0x74, 0xfd, 0x6e, 0xa6, 0x32, 0x9a, 0x5c, 0xe7, 0xc7, 0xce, 0x03, 0xa2, 0x15, 0x83, 0x96, 0xee, 0x2a, 0x78, 0x45, 0x78, 0x6e, 0x09, 0xe2, 0x88, 0x5a, 0x97, 0x28, 0xe4, 0xe5 } -, - /* q's CRT exponent dQ */ - 64, - { 0xd1, 0xd2, 0x7c, 0x29, 0xfe, 0xdd, 0x92, 0xd8, 0x6c, 0x34, 0x8e, 0xdd, 0x0c, 0xcb, 0xfa, 0xc1, 0x4f, 0x74, 0x6e, 0x05, 0x1c, 0xe1, 0xd1, 0x81, 0x1d, 0xf3, 0x5d, 0x61, 0xf2, 0xee, 0x1c, 0x97, 0xd4, 0xbf, 0x28, 0x04, 0x80, 0x2f, 0x64, 0x27, 0x18, 0x7b, 0xa8, 0xe9, 0x0a, 0x8a, 0xf4, 0x42, 0x43, 0xb4, 0x07, 0x9b, 0x03, 0x44, 0x5e, 0x60, 0x2e, 0x29, 0xfa, 0x51, 0x93, 0xe6, 0x4f, 0xe9 } -, - /* CRT coefficient qInv */ - 64, - { 0x8c, 0xb2, 0xf7, 0x56, 0xbd, 0x89, 0x41, 0xb1, 0xd3, 0xb7, 0x70, 0xe5, 0xad, 0x31, 0xee, 0x37, 0x3b, 0x28, 0xac, 0xda, 0x69, 0xff, 0x9b, 0x6f, 0x40, 0xfe, 0x57, 0x8b, 0x9f, 0x1a, 0xfb, 0x85, 0x83, 0x6f, 0x96, 0x27, 0xd3, 0x7a, 0xcf, 0xf7, 0x3c, 0x27, 0x79, 0xe6, 0x34, 0xbb, 0x26, 0x01, 0x1c, 0x2c, 0x8f, 0x7f, 0x33, 0x61, 0xae, 0x2a, 0x9e, 0xa6, 0x5e, 0xd6, 0x89, 0xe3, 0x63, 0x9a } - -} -, -{{ - "RSAES-OAEP Encryption Example 3.1", - /* Message to be encrypted */ - 8, - { 0x08, 0x78, 0x20, 0xb5, 0x69, 0xe8, 0xfa, 0x8d } -, - /* Seed */ - 20, - { 0x8c, 0xed, 0x6b, 0x19, 0x62, 0x90, 0x80, 0x57, 0x90, 0xe9, 0x09, 0x07, 0x40, 0x15, 0xe6, 0xa2, 0x0b, 0x0c, 0x48, 0x94 } -, - /* Encryption */ - 129, - { 0x02, 0x6a, 0x04, 0x85, 0xd9, 0x6a, 0xeb, 0xd9, 0x6b, 0x43, 0x82, 0x08, 0x50, 0x99, 0xb9, 0x62, 0xe6, 0xa2, 0xbd, 0xec, 0x3d, 0x90, 0xc8, 0xdb, 0x62, 0x5e, 0x14, 0x37, 0x2d, 0xe8, 0x5e, 0x2d, 0x5b, 0x7b, 0xaa, 0xb6, 0x5c, 0x8f, 0xaf, 0x91, 0xbb, 0x55, 0x04, 0xfb, 0x49, 0x5a, 0xfc, 0xe5, 0xc9, 0x88, 0xb3, 0xf6, 0xa5, 0x2e, 0x20, 0xe1, 0xd6, 0xcb, 0xd3, 0x56, 0x6c, 0x5c, 0xd1, 0xf2, 0xb8, 0x31, 0x8b, 0xb5, 0x42, 0xcc, 0x0e, 0xa2, 0x5c, 0x4a, 0xab, 0x99, 0x32, 0xaf, 0xa2, 0x07, 0x60, 0xea, 0xdd, 0xec, 0x78, 0x43, 0x96, 0xa0, 0x7e, 0xa0, 0xef, 0x24, 0xd4, 0xe6, 0xf4, 0xd3, 0x7e, 0x50, 0x52, 0xa7, 0xa3, 0x1e, 0x14, 0x6a, 0xa4, 0x80, 0xa1, 0x11, 0xbb, 0xe9, 0x26, 0x40, 0x13, 0x07, 0xe0, 0x0f, 0x41, 0x00, 0x33, 0x84, 0x2b, 0x6d, 0x82, 0xfe, 0x5c, 0xe4, 0xdf, 0xae, 0x80 } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSAES-OAEP Encryption Example 3.2", - /* Message to be encrypted */ - 28, - { 0x46, 0x53, 0xac, 0xaf, 0x17, 0x19, 0x60, 0xb0, 0x1f, 0x52, 0xa7, 0xbe, 0x63, 0xa3, 0xab, 0x21, 0xdc, 0x36, 0x8e, 0xc4, 0x3b, 0x50, 0xd8, 0x2e, 0xc3, 0x78, 0x1e, 0x04 } -, - /* Seed */ - 20, - { 0xb4, 0x29, 0x1d, 0x65, 0x67, 0x55, 0x08, 0x48, 0xcc, 0x15, 0x69, 0x67, 0xc8, 0x09, 0xba, 0xab, 0x6c, 0xa5, 0x07, 0xf0 } -, - /* Encryption */ - 129, - { 0x02, 0x4d, 0xb8, 0x9c, 0x78, 0x02, 0x98, 0x9b, 0xe0, 0x78, 0x38, 0x47, 0x86, 0x30, 0x84, 0x94, 0x1b, 0xf2, 0x09, 0xd7, 0x61, 0x98, 0x7e, 0x38, 0xf9, 0x7c, 0xb5, 0xf6, 0xf1, 0xbc, 0x88, 0xda, 0x72, 0xa5, 0x0b, 0x73, 0xeb, 0xaf, 0x11, 0xc8, 0x79, 0xc4, 0xf9, 0x5d, 0xf3, 0x7b, 0x85, 0x0b, 0x8f, 0x65, 0xd7, 0x62, 0x2e, 0x25, 0xb1, 0xb8, 0x89, 0xe8, 0x0f, 0xe8, 0x0b, 0xac, 0xa2, 0x06, 0x9d, 0x6e, 0x0e, 0x1d, 0x82, 0x99, 0x53, 0xfc, 0x45, 0x90, 0x69, 0xde, 0x98, 0xea, 0x97, 0x98, 0xb4, 0x51, 0xe5, 0x57, 0xe9, 0x9a, 0xbf, 0x8f, 0xe3, 0xd9, 0xcc, 0xf9, 0x09, 0x6e, 0xbb, 0xf3, 0xe5, 0x25, 0x5d, 0x3b, 0x4e, 0x1c, 0x6d, 0x2e, 0xca, 0xdf, 0x06, 0x7a, 0x35, 0x9e, 0xea, 0x86, 0x40, 0x5a, 0xcd, 0x47, 0xd5, 0xe1, 0x65, 0x51, 0x7c, 0xca, 0xfd, 0x47, 0xd6, 0xdb, 0xee, 0x4b, 0xf5 } - -} -, -{ - "RSAES-OAEP Encryption Example 3.3", - /* Message to be encrypted */ - 9, - { 0xd9, 0x4c, 0xd0, 0xe0, 0x8f, 0xa4, 0x04, 0xed, 0x89 } -, - /* Seed */ - 20, - { 0xce, 0x89, 0x28, 0xf6, 0x05, 0x95, 0x58, 0x25, 0x40, 0x08, 0xba, 0xdd, 0x97, 0x94, 0xfa, 0xdc, 0xd2, 0xfd, 0x1f, 0x65 } -, - /* Encryption */ - 129, - { 0x02, 0x39, 0xbc, 0xe6, 0x81, 0x03, 0x24, 0x41, 0x52, 0x88, 0x77, 0xd6, 0xd1, 0xc8, 0xbb, 0x28, 0xaa, 0x3b, 0xc9, 0x7f, 0x1d, 0xf5, 0x84, 0x56, 0x36, 0x18, 0x99, 0x57, 0x97, 0x68, 0x38, 0x44, 0xca, 0x86, 0x66, 0x47, 0x32, 0xf4, 0xbe, 0xd7, 0xa0, 0xaa, 0xb0, 0x83, 0xaa, 0xab, 0xfb, 0x72, 0x38, 0xf5, 0x82, 0xe3, 0x09, 0x58, 0xc2, 0x02, 0x4e, 0x44, 0xe5, 0x70, 0x43, 0xb9, 0x79, 0x50, 0xfd, 0x54, 0x3d, 0xa9, 0x77, 0xc9, 0x0c, 0xdd, 0xe5, 0x33, 0x7d, 0x61, 0x84, 0x42, 0xf9, 0x9e, 0x60, 0xd7, 0x78, 0x3a, 0xb5, 0x9c, 0xe6, 0xdd, 0x9d, 0x69, 0xc4, 0x7a, 0xd1, 0xe9, 0x62, 0xbe, 0xc2, 0x2d, 0x05, 0x89, 0x5c, 0xff, 0x8d, 0x3f, 0x64, 0xed, 0x52, 0x61, 0xd9, 0x2b, 0x26, 0x78, 0x51, 0x03, 0x93, 0x48, 0x49, 0x90, 0xba, 0x3f, 0x7f, 0x06, 0x81, 0x8a, 0xe6, 0xff, 0xce, 0x8a, 0x3a } - -} -, -{ - "RSAES-OAEP Encryption Example 3.4", - /* Message to be encrypted */ - 18, - { 0x6c, 0xc6, 0x41, 0xb6, 0xb6, 0x1e, 0x6f, 0x96, 0x39, 0x74, 0xda, 0xd2, 0x3a, 0x90, 0x13, 0x28, 0x4e, 0xf1 } -, - /* Seed */ - 20, - { 0x6e, 0x29, 0x79, 0xf5, 0x2d, 0x68, 0x14, 0xa5, 0x7d, 0x83, 0xb0, 0x90, 0x05, 0x48, 0x88, 0xf1, 0x19, 0xa5, 0xb9, 0xa3 } -, - /* Encryption */ - 129, - { 0x02, 0x99, 0x4c, 0x62, 0xaf, 0xd7, 0x6f, 0x49, 0x8b, 0xa1, 0xfd, 0x2c, 0xf6, 0x42, 0x85, 0x7f, 0xca, 0x81, 0xf4, 0x37, 0x3c, 0xb0, 0x8f, 0x1c, 0xba, 0xee, 0x6f, 0x02, 0x5c, 0x3b, 0x51, 0x2b, 0x42, 0xc3, 0xe8, 0x77, 0x91, 0x13, 0x47, 0x66, 0x48, 0x03, 0x9d, 0xbe, 0x04, 0x93, 0xf9, 0x24, 0x62, 0x92, 0xfa, 0xc2, 0x89, 0x50, 0x60, 0x0e, 0x7c, 0x0f, 0x32, 0xed, 0xf9, 0xc8, 0x1b, 0x9d, 0xec, 0x45, 0xc3, 0xbd, 0xe0, 0xcc, 0x8d, 0x88, 0x47, 0x59, 0x01, 0x69, 0x90, 0x7b, 0x7d, 0xc5, 0x99, 0x1c, 0xeb, 0x29, 0xbb, 0x07, 0x14, 0xd6, 0x13, 0xd9, 0x6d, 0xf0, 0xf1, 0x2e, 0xc5, 0xd8, 0xd3, 0x50, 0x7c, 0x8e, 0xe7, 0xae, 0x78, 0xdd, 0x83, 0xf2, 0x16, 0xfa, 0x61, 0xde, 0x10, 0x03, 0x63, 0xac, 0xa4, 0x8a, 0x7e, 0x91, 0x4a, 0xe9, 0xf4, 0x2d, 0xdf, 0xbe, 0x94, 0x3b, 0x09, 0xd9, 0xa0 } - -} -, -{ - "RSAES-OAEP Encryption Example 3.5", - /* Message to be encrypted */ - 46, - { 0xdf, 0x51, 0x51, 0x83, 0x2b, 0x61, 0xf4, 0xf2, 0x58, 0x91, 0xfb, 0x41, 0x72, 0xf3, 0x28, 0xd2, 0xed, 0xdf, 0x83, 0x71, 0xff, 0xcf, 0xdb, 0xe9, 0x97, 0x93, 0x92, 0x95, 0xf3, 0x0e, 0xca, 0x69, 0x18, 0x01, 0x7c, 0xfd, 0xa1, 0x15, 0x3b, 0xf7, 0xa6, 0xaf, 0x87, 0x59, 0x32, 0x23 } -, - /* Seed */ - 20, - { 0x2d, 0x76, 0x0b, 0xfe, 0x38, 0xc5, 0x9d, 0xe3, 0x4c, 0xdc, 0x8b, 0x8c, 0x78, 0xa3, 0x8e, 0x66, 0x28, 0x4a, 0x2d, 0x27 } -, - /* Encryption */ - 129, - { 0x01, 0x62, 0x04, 0x2f, 0xf6, 0x96, 0x95, 0x92, 0xa6, 0x16, 0x70, 0x31, 0x81, 0x1a, 0x23, 0x98, 0x34, 0xce, 0x63, 0x8a, 0xbf, 0x54, 0xfe, 0xc8, 0xb9, 0x94, 0x78, 0x12, 0x2a, 0xfe, 0x2e, 0xe6, 0x7f, 0x8c, 0x5b, 0x18, 0xb0, 0x33, 0x98, 0x05, 0xbf, 0xdb, 0xc5, 0xa4, 0xe6, 0x72, 0x0b, 0x37, 0xc5, 0x9c, 0xfb, 0xa9, 0x42, 0x46, 0x4c, 0x59, 0x7f, 0xf5, 0x32, 0xa1, 0x19, 0x82, 0x15, 0x45, 0xfd, 0x2e, 0x59, 0xb1, 0x14, 0xe6, 0x1d, 0xaf, 0x71, 0x82, 0x05, 0x29, 0xf5, 0x02, 0x9c, 0xf5, 0x24, 0x95, 0x43, 0x27, 0xc3, 0x4e, 0xc5, 0xe6, 0xf5, 0xba, 0x7e, 0xfc, 0xc4, 0xde, 0x94, 0x3a, 0xb8, 0xad, 0x4e, 0xd7, 0x87, 0xb1, 0x45, 0x43, 0x29, 0xf7, 0x0d, 0xb7, 0x98, 0xa3, 0xa8, 0xf4, 0xd9, 0x2f, 0x82, 0x74, 0xe2, 0xb2, 0x94, 0x8a, 0xde, 0x62, 0x7c, 0xe8, 0xee, 0x33, 0xe4, 0x3c, 0x60 } - -} -, -{ - "RSAES-OAEP Encryption Example 3.6", - /* Message to be encrypted */ - 56, - { 0x3c, 0x3b, 0xad, 0x89, 0x3c, 0x54, 0x4a, 0x6d, 0x52, 0x0a, 0xb0, 0x22, 0x31, 0x91, 0x88, 0xc8, 0xd5, 0x04, 0xb7, 0xa7, 0x88, 0xb8, 0x50, 0x90, 0x3b, 0x85, 0x97, 0x2e, 0xaa, 0x18, 0x55, 0x2e, 0x11, 0x34, 0xa7, 0xad, 0x60, 0x98, 0x82, 0x62, 0x54, 0xff, 0x7a, 0xb6, 0x72, 0xb3, 0xd8, 0xeb, 0x31, 0x58, 0xfa, 0xc6, 0xd4, 0xcb, 0xae, 0xf1 } -, - /* Seed */ - 20, - { 0xf1, 0x74, 0x77, 0x9c, 0x5f, 0xd3, 0xcf, 0xe0, 0x07, 0xba, 0xdc, 0xb7, 0xa3, 0x6c, 0x9b, 0x55, 0xbf, 0xcf, 0xbf, 0x0e } -, - /* Encryption */ - 129, - { 0x00, 0x11, 0x20, 0x51, 0xe7, 0x5d, 0x06, 0x49, 0x43, 0xbc, 0x44, 0x78, 0x07, 0x5e, 0x43, 0x48, 0x2f, 0xd5, 0x9c, 0xee, 0x06, 0x79, 0xde, 0x68, 0x93, 0xee, 0xc3, 0xa9, 0x43, 0xda, 0xa4, 0x90, 0xb9, 0x69, 0x1c, 0x93, 0xdf, 0xc0, 0x46, 0x4b, 0x66, 0x23, 0xb9, 0xf3, 0xdb, 0xd3, 0xe7, 0x00, 0x83, 0x26, 0x4f, 0x03, 0x4b, 0x37, 0x4f, 0x74, 0x16, 0x4e, 0x1a, 0x00, 0x76, 0x37, 0x25, 0xe5, 0x74, 0x74, 0x4b, 0xa0, 0xb9, 0xdb, 0x83, 0x43, 0x4f, 0x31, 0xdf, 0x96, 0xf6, 0xe2, 0xa2, 0x6f, 0x6d, 0x8e, 0xba, 0x34, 0x8b, 0xd4, 0x68, 0x6c, 0x22, 0x38, 0xac, 0x07, 0xc3, 0x7a, 0xac, 0x37, 0x85, 0xd1, 0xc7, 0xee, 0xa2, 0xf8, 0x19, 0xfd, 0x91, 0x49, 0x17, 0x98, 0xed, 0x8e, 0x9c, 0xef, 0x5e, 0x43, 0xb7, 0x81, 0xb0, 0xe0, 0x27, 0x6e, 0x37, 0xc4, 0x3f, 0xf9, 0x49, 0x2d, 0x00, 0x57, 0x30 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 4: A 1027-bit RSA Key Pair", -{ - /* RSA modulus n */ - 129, - { 0x05, 0x12, 0x40, 0xb6, 0xcc, 0x00, 0x04, 0xfa, 0x48, 0xd0, 0x13, 0x46, 0x71, 0xc0, 0x78, 0xc7, 0xc8, 0xde, 0xc3, 0xb3, 0xe2, 0xf2, 0x5b, 0xc2, 0x56, 0x44, 0x67, 0x33, 0x9d, 0xb3, 0x88, 0x53, 0xd0, 0x6b, 0x85, 0xee, 0xa5, 0xb2, 0xde, 0x35, 0x3b, 0xff, 0x42, 0xac, 0x2e, 0x46, 0xbc, 0x97, 0xfa, 0xe6, 0xac, 0x96, 0x18, 0xda, 0x95, 0x37, 0xa5, 0xc8, 0xf5, 0x53, 0xc1, 0xe3, 0x57, 0x62, 0x59, 0x91, 0xd6, 0x10, 0x8d, 0xcd, 0x78, 0x85, 0xfb, 0x3a, 0x25, 0x41, 0x3f, 0x53, 0xef, 0xca, 0xd9, 0x48, 0xcb, 0x35, 0xcd, 0x9b, 0x9a, 0xe9, 0xc1, 0xc6, 0x76, 0x26, 0xd1, 0x13, 0xd5, 0x7d, 0xde, 0x4c, 0x5b, 0xea, 0x76, 0xbb, 0x5b, 0xb7, 0xde, 0x96, 0xc0, 0x0d, 0x07, 0x37, 0x2e, 0x96, 0x85, 0xa6, 0xd7, 0x5c, 0xf9, 0xd2, 0x39, 0xfa, 0x14, 0x8d, 0x70, 0x93, 0x1b, 0x5f, 0x3f, 0xb0, 0x39 } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 128, - { 0x04, 0x11, 0xff, 0xca, 0x3b, 0x7c, 0xa5, 0xe9, 0xe9, 0xbe, 0x7f, 0xe3, 0x8a, 0x85, 0x10, 0x5e, 0x35, 0x38, 0x96, 0xdb, 0x05, 0xc5, 0x79, 0x6a, 0xec, 0xd2, 0xa7, 0x25, 0x16, 0x1e, 0xb3, 0x65, 0x1c, 0x86, 0x29, 0xa9, 0xb8, 0x62, 0xb9, 0x04, 0xd7, 0xb0, 0xc7, 0xb3, 0x7f, 0x8c, 0xb5, 0xa1, 0xc2, 0xb5, 0x40, 0x01, 0x01, 0x8a, 0x00, 0xa1, 0xeb, 0x2c, 0xaf, 0xe4, 0xee, 0x4e, 0x94, 0x92, 0xc3, 0x48, 0xbc, 0x2b, 0xed, 0xab, 0x4b, 0x9e, 0xbb, 0xf0, 0x64, 0xe8, 0xef, 0xf3, 0x22, 0xb9, 0x00, 0x9f, 0x8e, 0xec, 0x65, 0x39, 0x05, 0xf4, 0x0d, 0xf8, 0x8a, 0x3c, 0xdc, 0x49, 0xd4, 0x56, 0x7f, 0x75, 0x62, 0x7d, 0x41, 0xac, 0xa6, 0x24, 0x12, 0x9b, 0x46, 0xa0, 0xb7, 0xc6, 0x98, 0xe5, 0xe6, 0x5f, 0x2b, 0x7b, 0xa1, 0x02, 0xc7, 0x49, 0xa1, 0x01, 0x35, 0xb6, 0x54, 0x0d, 0x04, 0x01 } -, - /* Prime p */ - 65, - { 0x02, 0x74, 0x58, 0xc1, 0x9e, 0xc1, 0x63, 0x69, 0x19, 0xe7, 0x36, 0xc9, 0xaf, 0x25, 0xd6, 0x09, 0xa5, 0x1b, 0x8f, 0x56, 0x1d, 0x19, 0xc6, 0xbf, 0x69, 0x43, 0xdd, 0x1e, 0xe1, 0xab, 0x8a, 0x4a, 0x3f, 0x23, 0x21, 0x00, 0xbd, 0x40, 0xb8, 0x8d, 0xec, 0xc6, 0xba, 0x23, 0x55, 0x48, 0xb6, 0xef, 0x79, 0x2a, 0x11, 0xc9, 0xde, 0x82, 0x3d, 0x0a, 0x79, 0x22, 0xc7, 0x09, 0x5b, 0x6e, 0xba, 0x57, 0x01 } -, - /* Prime q */ - 65, - { 0x02, 0x10, 0xee, 0x9b, 0x33, 0xab, 0x61, 0x71, 0x6e, 0x27, 0xd2, 0x51, 0xbd, 0x46, 0x5f, 0x4b, 0x35, 0xa1, 0xa2, 0x32, 0xe2, 0xda, 0x00, 0x90, 0x1c, 0x29, 0x4b, 0xf2, 0x23, 0x50, 0xce, 0x49, 0x0d, 0x09, 0x9f, 0x64, 0x2b, 0x53, 0x75, 0x61, 0x2d, 0xb6, 0x3b, 0xa1, 0xf2, 0x03, 0x86, 0x49, 0x2b, 0xf0, 0x4d, 0x34, 0xb3, 0xc2, 0x2b, 0xce, 0xb9, 0x09, 0xd1, 0x34, 0x41, 0xb5, 0x3b, 0x51, 0x39 } -, - /* p's CRT exponent dP */ - 64, - { 0x39, 0xfa, 0x02, 0x8b, 0x82, 0x6e, 0x88, 0xc1, 0x12, 0x1b, 0x75, 0x0a, 0x8b, 0x24, 0x2f, 0xa9, 0xa3, 0x5c, 0x5b, 0x66, 0xbd, 0xfd, 0x1f, 0xa6, 0x37, 0xd3, 0xcc, 0x48, 0xa8, 0x4a, 0x4f, 0x45, 0x7a, 0x19, 0x4e, 0x77, 0x27, 0xe4, 0x9f, 0x7b, 0xcc, 0x6e, 0x5a, 0x5a, 0x41, 0x26, 0x57, 0xfc, 0x47, 0x0c, 0x73, 0x22, 0xeb, 0xc3, 0x74, 0x16, 0xef, 0x45, 0x8c, 0x30, 0x7a, 0x8c, 0x09, 0x01 } -, - /* q's CRT exponent dQ */ - 65, - { 0x01, 0x5d, 0x99, 0xa8, 0x41, 0x95, 0x94, 0x39, 0x79, 0xfa, 0x9e, 0x1b, 0xe2, 0xc3, 0xc1, 0xb6, 0x9f, 0x43, 0x2f, 0x46, 0xfd, 0x03, 0xe4, 0x7d, 0x5b, 0xef, 0xbb, 0xbf, 0xd6, 0xb1, 0xd1, 0x37, 0x1d, 0x83, 0xef, 0xb3, 0x30, 0xa3, 0xe0, 0x20, 0x94, 0x2b, 0x2f, 0xed, 0x11, 0x5e, 0x5d, 0x02, 0xbe, 0x24, 0xfd, 0x92, 0xc9, 0x01, 0x9d, 0x1c, 0xec, 0xd6, 0xdd, 0x4c, 0xf1, 0xe5, 0x4c, 0xc8, 0x99 } -, - /* CRT coefficient qInv */ - 65, - { 0x01, 0xf0, 0xb7, 0x01, 0x51, 0x70, 0xb3, 0xf5, 0xe4, 0x22, 0x23, 0xba, 0x30, 0x30, 0x1c, 0x41, 0xa6, 0xd8, 0x7c, 0xbb, 0x70, 0xe3, 0x0c, 0xb7, 0xd3, 0xc6, 0x7d, 0x25, 0x47, 0x3d, 0xb1, 0xf6, 0xcb, 0xf0, 0x3e, 0x3f, 0x91, 0x26, 0xe3, 0xe9, 0x79, 0x68, 0x27, 0x9a, 0x86, 0x5b, 0x2c, 0x2b, 0x42, 0x65, 0x24, 0xcf, 0xc5, 0x2a, 0x68, 0x3d, 0x31, 0xed, 0x30, 0xeb, 0x98, 0x4b, 0xe4, 0x12, 0xba } - -} -, -{{ - "RSAES-OAEP Encryption Example 4.1", - /* Message to be encrypted */ - 56, - { 0x4a, 0x86, 0x60, 0x95, 0x34, 0xee, 0x43, 0x4a, 0x6c, 0xbc, 0xa3, 0xf7, 0xe9, 0x62, 0xe7, 0x6d, 0x45, 0x5e, 0x32, 0x64, 0xc1, 0x9f, 0x60, 0x5f, 0x6e, 0x5f, 0xf6, 0x13, 0x7c, 0x65, 0xc5, 0x6d, 0x7f, 0xb3, 0x44, 0xcd, 0x52, 0xbc, 0x93, 0x37, 0x4f, 0x3d, 0x16, 0x6c, 0x9f, 0x0c, 0x6f, 0x9c, 0x50, 0x6b, 0xad, 0x19, 0x33, 0x09, 0x72, 0xd2 } -, - /* Seed */ - 20, - { 0x1c, 0xac, 0x19, 0xce, 0x99, 0x3d, 0xef, 0x55, 0xf9, 0x82, 0x03, 0xf6, 0x85, 0x28, 0x96, 0xc9, 0x5c, 0xcc, 0xa1, 0xf3 } -, - /* Encryption */ - 129, - { 0x04, 0xcc, 0xe1, 0x96, 0x14, 0x84, 0x5e, 0x09, 0x41, 0x52, 0xa3, 0xfe, 0x18, 0xe5, 0x4e, 0x33, 0x30, 0xc4, 0x4e, 0x5e, 0xfb, 0xc6, 0x4a, 0xe1, 0x68, 0x86, 0xcb, 0x18, 0x69, 0x01, 0x4c, 0xc5, 0x78, 0x1b, 0x1f, 0x8f, 0x9e, 0x04, 0x53, 0x84, 0xd0, 0x11, 0x2a, 0x13, 0x5c, 0xa0, 0xd1, 0x2e, 0x9c, 0x88, 0xa8, 0xe4, 0x06, 0x34, 0x16, 0xde, 0xaa, 0xe3, 0x84, 0x4f, 0x60, 0xd6, 0xe9, 0x6f, 0xe1, 0x55, 0x14, 0x5f, 0x45, 0x25, 0xb9, 0xa3, 0x44, 0x31, 0xca, 0x37, 0x66, 0x18, 0x0f, 0x70, 0xe1, 0x5a, 0x5e, 0x5d, 0x8e, 0x8b, 0x1a, 0x51, 0x6f, 0xf8, 0x70, 0x60, 0x9f, 0x13, 0xf8, 0x96, 0x93, 0x5c, 0xed, 0x18, 0x82, 0x79, 0xa5, 0x8e, 0xd1, 0x3d, 0x07, 0x11, 0x42, 0x77, 0xd7, 0x5c, 0x65, 0x68, 0x60, 0x7e, 0x0a, 0xb0, 0x92, 0xfd, 0x80, 0x3a, 0x22, 0x3e, 0x4a, 0x8e, 0xe0, 0xb1, 0xa8 } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSAES-OAEP Encryption Example 4.2", - /* Message to be encrypted */ - 64, - { 0xb0, 0xad, 0xc4, 0xf3, 0xfe, 0x11, 0xda, 0x59, 0xce, 0x99, 0x27, 0x73, 0xd9, 0x05, 0x99, 0x43, 0xc0, 0x30, 0x46, 0x49, 0x7e, 0xe9, 0xd9, 0xf9, 0xa0, 0x6d, 0xf1, 0x16, 0x6d, 0xb4, 0x6d, 0x98, 0xf5, 0x8d, 0x27, 0xec, 0x07, 0x4c, 0x02, 0xee, 0xe6, 0xcb, 0xe2, 0x44, 0x9c, 0x8b, 0x9f, 0xc5, 0x08, 0x0c, 0x5c, 0x3f, 0x44, 0x33, 0x09, 0x25, 0x12, 0xec, 0x46, 0xaa, 0x79, 0x37, 0x43, 0xc8 } -, - /* Seed */ - 20, - { 0xf5, 0x45, 0xd5, 0x89, 0x75, 0x85, 0xe3, 0xdb, 0x71, 0xaa, 0x0c, 0xb8, 0xda, 0x76, 0xc5, 0x1d, 0x03, 0x2a, 0xe9, 0x63 } -, - /* Encryption */ - 129, - { 0x00, 0x97, 0xb6, 0x98, 0xc6, 0x16, 0x56, 0x45, 0xb3, 0x03, 0x48, 0x6f, 0xbf, 0x5a, 0x2a, 0x44, 0x79, 0xc0, 0xee, 0x85, 0x88, 0x9b, 0x54, 0x1a, 0x6f, 0x0b, 0x85, 0x8d, 0x6b, 0x65, 0x97, 0xb1, 0x3b, 0x85, 0x4e, 0xb4, 0xf8, 0x39, 0xaf, 0x03, 0x39, 0x9a, 0x80, 0xd7, 0x9b, 0xda, 0x65, 0x78, 0xc8, 0x41, 0xf9, 0x0d, 0x64, 0x57, 0x15, 0xb2, 0x80, 0xd3, 0x71, 0x43, 0x99, 0x2d, 0xd1, 0x86, 0xc8, 0x0b, 0x94, 0x9b, 0x77, 0x5c, 0xae, 0x97, 0x37, 0x0e, 0x4e, 0xc9, 0x74, 0x43, 0x13, 0x6c, 0x6d, 0xa4, 0x84, 0xe9, 0x70, 0xff, 0xdb, 0x13, 0x23, 0xa2, 0x08, 0x47, 0x82, 0x1d, 0x3b, 0x18, 0x38, 0x1d, 0xe1, 0x3b, 0xb4, 0x9a, 0xae, 0xa6, 0x65, 0x30, 0xc4, 0xa4, 0xb8, 0x27, 0x1f, 0x3e, 0xae, 0x17, 0x2c, 0xd3, 0x66, 0xe0, 0x7e, 0x66, 0x36, 0xf1, 0x01, 0x9d, 0x2a, 0x28, 0xae, 0xd1, 0x5e } - -} -, -{ - "RSAES-OAEP Encryption Example 4.3", - /* Message to be encrypted */ - 62, - { 0xbf, 0x6d, 0x42, 0xe7, 0x01, 0x70, 0x7b, 0x1d, 0x02, 0x06, 0xb0, 0xc8, 0xb4, 0x5a, 0x1c, 0x72, 0x64, 0x1f, 0xf1, 0x28, 0x89, 0x21, 0x9a, 0x82, 0xbd, 0xea, 0x96, 0x5b, 0x5e, 0x79, 0xa9, 0x6b, 0x0d, 0x01, 0x63, 0xed, 0x9d, 0x57, 0x8e, 0xc9, 0xad, 0xa2, 0x0f, 0x2f, 0xbc, 0xf1, 0xea, 0x3c, 0x40, 0x89, 0xd8, 0x34, 0x19, 0xba, 0x81, 0xb0, 0xc6, 0x0f, 0x36, 0x06, 0xda, 0x99 } -, - /* Seed */ - 20, - { 0xad, 0x99, 0x7f, 0xee, 0xf7, 0x30, 0xd6, 0xea, 0x7b, 0xe6, 0x0d, 0x0d, 0xc5, 0x2e, 0x72, 0xea, 0xcb, 0xfd, 0xd2, 0x75 } -, - /* Encryption */ - 129, - { 0x03, 0x01, 0xf9, 0x35, 0xe9, 0xc4, 0x7a, 0xbc, 0xb4, 0x8a, 0xcb, 0xbe, 0x09, 0x89, 0x5d, 0x9f, 0x59, 0x71, 0xaf, 0x14, 0x83, 0x9d, 0xa4, 0xff, 0x95, 0x41, 0x7e, 0xe4, 0x53, 0xd1, 0xfd, 0x77, 0x31, 0x90, 0x72, 0xbb, 0x72, 0x97, 0xe1, 0xb5, 0x5d, 0x75, 0x61, 0xcd, 0x9d, 0x1b, 0xb2, 0x4c, 0x1a, 0x9a, 0x37, 0xc6, 0x19, 0x86, 0x43, 0x08, 0x24, 0x28, 0x04, 0x87, 0x9d, 0x86, 0xeb, 0xd0, 0x01, 0xdc, 0xe5, 0x18, 0x39, 0x75, 0xe1, 0x50, 0x69, 0x89, 0xb7, 0x0e, 0x5a, 0x83, 0x43, 0x41, 0x54, 0xd5, 0xcb, 0xfd, 0x6a, 0x24, 0x78, 0x7e, 0x60, 0xeb, 0x0c, 0x65, 0x8d, 0x2a, 0xc1, 0x93, 0x30, 0x2d, 0x11, 0x92, 0xc6, 0xe6, 0x22, 0xd4, 0xa1, 0x2a, 0xd4, 0xb5, 0x39, 0x23, 0xbc, 0xa2, 0x46, 0xdf, 0x31, 0xc6, 0x39, 0x5e, 0x37, 0x70, 0x2c, 0x6a, 0x78, 0xae, 0x08, 0x1f, 0xb9, 0xd0, 0x65 } - -} -, -{ - "RSAES-OAEP Encryption Example 4.4", - /* Message to be encrypted */ - 22, - { 0xfb, 0x2e, 0xf1, 0x12, 0xf5, 0xe7, 0x66, 0xeb, 0x94, 0x01, 0x92, 0x97, 0x93, 0x47, 0x94, 0xf7, 0xbe, 0x2f, 0x6f, 0xc1, 0xc5, 0x8e } -, - /* Seed */ - 20, - { 0x13, 0x64, 0x54, 0xdf, 0x57, 0x30, 0xf7, 0x3c, 0x80, 0x7a, 0x7e, 0x40, 0xd8, 0xc1, 0xa3, 0x12, 0xac, 0x5b, 0x9d, 0xd3 } -, - /* Encryption */ - 129, - { 0x02, 0xd1, 0x10, 0xad, 0x30, 0xaf, 0xb7, 0x27, 0xbe, 0xb6, 0x91, 0xdd, 0x0c, 0xf1, 0x7d, 0x0a, 0xf1, 0xa1, 0xe7, 0xfa, 0x0c, 0xc0, 0x40, 0xec, 0x1a, 0x4b, 0xa2, 0x6a, 0x42, 0xc5, 0x9d, 0x0a, 0x79, 0x6a, 0x2e, 0x22, 0xc8, 0xf3, 0x57, 0xcc, 0xc9, 0x8b, 0x65, 0x19, 0xac, 0xeb, 0x68, 0x2e, 0x94, 0x5e, 0x62, 0xcb, 0x73, 0x46, 0x14, 0xa5, 0x29, 0x40, 0x7c, 0xd4, 0x52, 0xbe, 0xe3, 0xe4, 0x4f, 0xec, 0xe8, 0x42, 0x3c, 0xc1, 0x9e, 0x55, 0x54, 0x8b, 0x8b, 0x99, 0x4b, 0x84, 0x9c, 0x7e, 0xcd, 0xe4, 0x93, 0x3e, 0x76, 0x03, 0x7e, 0x1d, 0x0c, 0xe4, 0x42, 0x75, 0xb0, 0x87, 0x10, 0xc6, 0x8e, 0x43, 0x01, 0x30, 0xb9, 0x29, 0x73, 0x0e, 0xd7, 0x7e, 0x09, 0xb0, 0x15, 0x64, 0x2c, 0x55, 0x93, 0xf0, 0x4e, 0x4f, 0xfb, 0x94, 0x10, 0x79, 0x81, 0x02, 0xa8, 0xe9, 0x6f, 0xfd, 0xfe, 0x11, 0xe4 } - -} -, -{ - "RSAES-OAEP Encryption Example 4.5", - /* Message to be encrypted */ - 34, - { 0x28, 0xcc, 0xd4, 0x47, 0xbb, 0x9e, 0x85, 0x16, 0x6d, 0xab, 0xb9, 0xe5, 0xb7, 0xd1, 0xad, 0xad, 0xc4, 0xb9, 0xd3, 0x9f, 0x20, 0x4e, 0x96, 0xd5, 0xe4, 0x40, 0xce, 0x9a, 0xd9, 0x28, 0xbc, 0x1c, 0x22, 0x84 } -, - /* Seed */ - 20, - { 0xbc, 0xa8, 0x05, 0x7f, 0x82, 0x4b, 0x2e, 0xa2, 0x57, 0xf2, 0x86, 0x14, 0x07, 0xee, 0xf6, 0x3d, 0x33, 0x20, 0x86, 0x81 } -, - /* Encryption */ - 129, - { 0x00, 0xdb, 0xb8, 0xa7, 0x43, 0x9d, 0x90, 0xef, 0xd9, 0x19, 0xa3, 0x77, 0xc5, 0x4f, 0xae, 0x8f, 0xe1, 0x1e, 0xc5, 0x8c, 0x3b, 0x85, 0x83, 0x62, 0xe2, 0x3a, 0xd1, 0xb8, 0xa4, 0x43, 0x10, 0x79, 0x90, 0x66, 0xb9, 0x93, 0x47, 0xaa, 0x52, 0x56, 0x91, 0xd2, 0xad, 0xc5, 0x8d, 0x9b, 0x06, 0xe3, 0x4f, 0x28, 0x8c, 0x17, 0x03, 0x90, 0xc5, 0xf0, 0xe1, 0x1c, 0x0a, 0xa3, 0x64, 0x59, 0x59, 0xf1, 0x8e, 0xe7, 0x9e, 0x8f, 0x2b, 0xe8, 0xd7, 0xac, 0x5c, 0x23, 0xd0, 0x61, 0xf1, 0x8d, 0xd7, 0x4b, 0x8c, 0x5f, 0x2a, 0x58, 0xfc, 0xb5, 0xeb, 0x0c, 0x54, 0xf9, 0x9f, 0x01, 0xa8, 0x32, 0x47, 0x56, 0x82, 0x92, 0x53, 0x65, 0x83, 0x34, 0x09, 0x48, 0xd7, 0xa8, 0xc9, 0x7c, 0x4a, 0xcd, 0x1e, 0x98, 0xd1, 0xe2, 0x9d, 0xc3, 0x20, 0xe9, 0x7a, 0x26, 0x05, 0x32, 0xa8, 0xaa, 0x7a, 0x75, 0x8a, 0x1e, 0xc2 } - -} -, -{ - "RSAES-OAEP Encryption Example 4.6", - /* Message to be encrypted */ - 7, - { 0xf2, 0x22, 0x42, 0x75, 0x1e, 0xc6, 0xb1 } -, - /* Seed */ - 20, - { 0x2e, 0x7e, 0x1e, 0x17, 0xf6, 0x47, 0xb5, 0xdd, 0xd0, 0x33, 0xe1, 0x54, 0x72, 0xf9, 0x0f, 0x68, 0x12, 0xf3, 0xac, 0x4e } -, - /* Encryption */ - 129, - { 0x00, 0xa5, 0xff, 0xa4, 0x76, 0x8c, 0x8b, 0xbe, 0xca, 0xee, 0x2d, 0xb7, 0x7e, 0x8f, 0x2e, 0xec, 0x99, 0x59, 0x59, 0x33, 0x54, 0x55, 0x20, 0x83, 0x5e, 0x5b, 0xa7, 0xdb, 0x94, 0x93, 0xd3, 0xe1, 0x7c, 0xdd, 0xef, 0xe6, 0xa5, 0xf5, 0x67, 0x62, 0x44, 0x71, 0x90, 0x8d, 0xb4, 0xe2, 0xd8, 0x3a, 0x0f, 0xbe, 0xe6, 0x06, 0x08, 0xfc, 0x84, 0x04, 0x95, 0x03, 0xb2, 0x23, 0x4a, 0x07, 0xdc, 0x83, 0xb2, 0x7b, 0x22, 0x84, 0x7a, 0xd8, 0x92, 0x0f, 0xf4, 0x2f, 0x67, 0x4e, 0xf7, 0x9b, 0x76, 0x28, 0x0b, 0x00, 0x23, 0x3d, 0x2b, 0x51, 0xb8, 0xcb, 0x27, 0x03, 0xa9, 0xd4, 0x2b, 0xfb, 0xc8, 0x25, 0x0c, 0x96, 0xec, 0x32, 0xc0, 0x51, 0xe5, 0x7f, 0x1b, 0x4b, 0xa5, 0x28, 0xdb, 0x89, 0xc3, 0x7e, 0x4c, 0x54, 0xe2, 0x7e, 0x6e, 0x64, 0xac, 0x69, 0x63, 0x5a, 0xe8, 0x87, 0xd9, 0x54, 0x16, 0x19, 0xa9 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 5: A 1028-bit RSA Key Pair", -{ - /* RSA modulus n */ - 129, - { 0x0a, 0xad, 0xf3, 0xf9, 0xc1, 0x25, 0xe5, 0xd8, 0x91, 0xf3, 0x1a, 0xc4, 0x48, 0xe9, 0x93, 0xde, 0xfe, 0x58, 0x0f, 0x80, 0x2b, 0x45, 0xf9, 0xd7, 0xf2, 0x2b, 0xa5, 0x02, 0x1e, 0x9c, 0x47, 0x57, 0x6b, 0x5a, 0x1e, 0x68, 0x03, 0x1b, 0xa9, 0xdb, 0x4e, 0x6d, 0xab, 0xe4, 0xd9, 0x6a, 0x1d, 0x6f, 0x3d, 0x26, 0x72, 0x68, 0xcf, 0xf4, 0x08, 0x00, 0x5f, 0x11, 0x8e, 0xfc, 0xad, 0xb9, 0x98, 0x88, 0xd1, 0xc2, 0x34, 0x46, 0x71, 0x66, 0xb2, 0xa2, 0xb8, 0x49, 0xa0, 0x5a, 0x88, 0x9c, 0x06, 0x0a, 0xc0, 0xda, 0x0c, 0x5f, 0xae, 0x8b, 0x55, 0xf3, 0x09, 0xba, 0x62, 0xe7, 0x03, 0x74, 0x2f, 0xa0, 0x32, 0x6f, 0x2d, 0x10, 0xb0, 0x11, 0x02, 0x14, 0x89, 0xff, 0x49, 0x77, 0x70, 0x19, 0x0d, 0x89, 0x5f, 0xd3, 0x9f, 0x52, 0x29, 0x3c, 0x39, 0xef, 0xd7, 0x3a, 0x69, 0x8b, 0xda, 0xb9, 0xf1, 0x0e, 0xd9 } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 129, - { 0x02, 0x56, 0xeb, 0x4c, 0xba, 0x70, 0x67, 0xf2, 0xd2, 0xbe, 0x54, 0x0d, 0xcd, 0xff, 0x45, 0x82, 0xa3, 0x6b, 0x7d, 0x31, 0xd1, 0xc9, 0x09, 0x9b, 0xb2, 0x14, 0xb7, 0x98, 0x48, 0x46, 0x6a, 0x26, 0x8f, 0x80, 0xf5, 0x8a, 0x49, 0xac, 0x04, 0xc0, 0xe3, 0x64, 0x89, 0x34, 0xa0, 0x20, 0x6c, 0x04, 0x53, 0x7c, 0x19, 0xb2, 0x36, 0x64, 0x3a, 0x60, 0x82, 0x73, 0x21, 0x44, 0xdf, 0x75, 0xfa, 0x21, 0x75, 0x88, 0xf7, 0x94, 0x68, 0x2b, 0xe8, 0x91, 0x68, 0x27, 0x6d, 0xc7, 0x26, 0xc5, 0xc0, 0xcb, 0xdb, 0x84, 0xd3, 0x1b, 0xbf, 0x26, 0xd0, 0xa4, 0x3a, 0xf4, 0x95, 0x71, 0x7f, 0x7d, 0x52, 0x8a, 0xcf, 0xee, 0x34, 0x15, 0x61, 0xf6, 0xff, 0x3c, 0xae, 0x05, 0xc5, 0x78, 0xf8, 0x47, 0x0d, 0x96, 0x82, 0xf9, 0xc0, 0xd0, 0x72, 0xf9, 0xf6, 0x06, 0x8b, 0x56, 0xd5, 0x88, 0x0f, 0x68, 0x2b, 0xe2, 0xc5 } -, - /* Prime p */ - 65, - { 0x03, 0xb0, 0xd3, 0x96, 0x2f, 0x6d, 0x17, 0x54, 0x9c, 0xbf, 0xca, 0x11, 0x29, 0x43, 0x48, 0xdc, 0xf0, 0xe7, 0xe3, 0x9f, 0x8c, 0x2b, 0xc6, 0x82, 0x4f, 0x21, 0x64, 0xb6, 0x06, 0xd6, 0x87, 0x86, 0x0d, 0xae, 0x1e, 0x63, 0x23, 0x93, 0xcf, 0xed, 0xf5, 0x13, 0x22, 0x82, 0x29, 0x06, 0x9e, 0x2f, 0x60, 0xe4, 0xac, 0xd7, 0xe6, 0x33, 0xa4, 0x36, 0x06, 0x3f, 0x82, 0x38, 0x5f, 0x48, 0x99, 0x37, 0x07 } -, - /* Prime q */ - 65, - { 0x02, 0xe4, 0xc3, 0x2e, 0x2f, 0x51, 0x72, 0x69, 0xb7, 0x07, 0x23, 0x09, 0xf0, 0x0c, 0x0e, 0x31, 0x36, 0x5f, 0x7c, 0xe2, 0x8b, 0x23, 0x6b, 0x82, 0x91, 0x2d, 0xf2, 0x39, 0xab, 0xf3, 0x95, 0x72, 0xcf, 0x0e, 0xd6, 0x04, 0xb0, 0x29, 0x82, 0xe5, 0x35, 0x64, 0xc5, 0x2d, 0x6a, 0x05, 0x39, 0x7d, 0xe5, 0xc0, 0x52, 0xa2, 0xfd, 0xdc, 0x14, 0x1e, 0xf7, 0x18, 0x98, 0x36, 0x34, 0x6a, 0xeb, 0x33, 0x1f } -, - /* p's CRT exponent dP */ - 65, - { 0x01, 0xe8, 0x4b, 0x11, 0x9d, 0x25, 0x16, 0x1f, 0xa6, 0x7b, 0x00, 0x25, 0x6a, 0x5b, 0xd9, 0xb6, 0x45, 0xd2, 0xb2, 0x32, 0xec, 0xb0, 0x5b, 0x01, 0x51, 0x80, 0x02, 0x9a, 0x88, 0x62, 0x2a, 0xdc, 0x3f, 0x09, 0xb3, 0xae, 0xac, 0xde, 0x61, 0x61, 0xab, 0x7c, 0xde, 0x22, 0xc2, 0xad, 0x26, 0xe7, 0x79, 0x7d, 0xf5, 0x4e, 0x07, 0x2c, 0xbd, 0x3b, 0x26, 0x73, 0x80, 0x0b, 0x3e, 0x43, 0x38, 0xdb, 0xd5 } -, - /* q's CRT exponent dQ */ - 64, - { 0xeb, 0x90, 0xaa, 0x1a, 0x40, 0x13, 0x5b, 0x4c, 0xea, 0x07, 0x19, 0x7c, 0xed, 0xc8, 0x81, 0x9b, 0xe1, 0xe7, 0xcb, 0xff, 0x25, 0x47, 0x66, 0x21, 0x16, 0xf4, 0x65, 0xa4, 0xa9, 0xf4, 0x87, 0xab, 0x12, 0xf3, 0xba, 0x4f, 0xef, 0x13, 0x82, 0x22, 0x65, 0xa6, 0x52, 0x97, 0xd9, 0x8b, 0x7b, 0xde, 0xd9, 0x37, 0x2e, 0x3f, 0xfe, 0x81, 0xa3, 0x8b, 0x3e, 0x96, 0x00, 0xfe, 0xd0, 0x55, 0x75, 0x4f } -, - /* CRT coefficient qInv */ - 65, - { 0x01, 0x2f, 0x7f, 0x81, 0x38, 0xf9, 0x40, 0x40, 0x62, 0xeb, 0x85, 0xa4, 0x29, 0x24, 0x52, 0x0b, 0x38, 0xf5, 0xbb, 0x88, 0x6a, 0x01, 0x96, 0xf4, 0x8b, 0xb8, 0xdc, 0xea, 0x60, 0xfd, 0x92, 0xcc, 0x02, 0x7f, 0x18, 0xe7, 0x81, 0x58, 0xa3, 0x4a, 0x5c, 0x5d, 0x5f, 0x86, 0x0a, 0x0f, 0x6c, 0x04, 0x07, 0x1a, 0x7d, 0x01, 0x31, 0x2c, 0x06, 0x50, 0x62, 0xf1, 0xeb, 0x48, 0xb7, 0x9d, 0x1c, 0x83, 0xcb } - -} -, -{{ - "RSAES-OAEP Encryption Example 5.1", - /* Message to be encrypted */ - 31, - { 0xaf, 0x71, 0xa9, 0x01, 0xe3, 0xa6, 0x1d, 0x31, 0x32, 0xf0, 0xfc, 0x1f, 0xdb, 0x47, 0x4f, 0x9e, 0xa6, 0x57, 0x92, 0x57, 0xff, 0xc2, 0x4d, 0x16, 0x41, 0x70, 0x14, 0x5b, 0x3d, 0xbd, 0xe8 } -, - /* Seed */ - 20, - { 0x44, 0xc9, 0x2e, 0x28, 0x3f, 0x77, 0xb9, 0x49, 0x9c, 0x60, 0x3d, 0x96, 0x36, 0x60, 0xc8, 0x7d, 0x2f, 0x93, 0x94, 0x61 } -, - /* Encryption */ - 129, - { 0x03, 0x60, 0x46, 0xa4, 0xa4, 0x7d, 0x9e, 0xd3, 0xba, 0x9a, 0x89, 0x13, 0x9c, 0x10, 0x50, 0x38, 0xeb, 0x74, 0x92, 0xb0, 0x5a, 0x5d, 0x68, 0xbf, 0xd5, 0x3a, 0xcc, 0xff, 0x45, 0x97, 0xf7, 0xa6, 0x86, 0x51, 0xb4, 0x7b, 0x4a, 0x46, 0x27, 0xd9, 0x27, 0xe4, 0x85, 0xee, 0xd7, 0xb4, 0x56, 0x64, 0x20, 0xe8, 0xb4, 0x09, 0x87, 0x9e, 0x5d, 0x60, 0x6e, 0xae, 0x25, 0x1d, 0x22, 0xa5, 0xdf, 0x79, 0x9f, 0x79, 0x20, 0xbf, 0xc1, 0x17, 0xb9, 0x92, 0x57, 0x2a, 0x53, 0xb1, 0x26, 0x31, 0x46, 0xbc, 0xea, 0x03, 0x38, 0x5c, 0xc5, 0xe8, 0x53, 0xc9, 0xa1, 0x01, 0xc8, 0xc3, 0xe1, 0xbd, 0xa3, 0x1a, 0x51, 0x98, 0x07, 0x49, 0x6c, 0x6c, 0xb5, 0xe5, 0xef, 0xb4, 0x08, 0x82, 0x3a, 0x35, 0x2b, 0x8f, 0xa0, 0x66, 0x1f, 0xb6, 0x64, 0xef, 0xad, 0xd5, 0x93, 0xde, 0xb9, 0x9f, 0xff, 0x5e, 0xd0, 0x00, 0xe5 } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSAES-OAEP Encryption Example 5.2", - /* Message to be encrypted */ - 44, - { 0xa3, 0xb8, 0x44, 0xa0, 0x82, 0x39, 0xa8, 0xac, 0x41, 0x60, 0x5a, 0xf1, 0x7a, 0x6c, 0xfd, 0xa4, 0xd3, 0x50, 0x13, 0x65, 0x85, 0x90, 0x3a, 0x41, 0x7a, 0x79, 0x26, 0x87, 0x60, 0x51, 0x9a, 0x4b, 0x4a, 0xc3, 0x30, 0x3e, 0xc7, 0x3f, 0x0f, 0x87, 0xcf, 0xb3, 0x23, 0x99 } -, - /* Seed */ - 20, - { 0xcb, 0x28, 0xf5, 0x86, 0x06, 0x59, 0xfc, 0xee, 0xe4, 0x9c, 0x3e, 0xea, 0xfc, 0xe6, 0x25, 0xa7, 0x08, 0x03, 0xbd, 0x32 } -, - /* Encryption */ - 129, - { 0x03, 0xd6, 0xeb, 0x65, 0x4e, 0xdc, 0xe6, 0x15, 0xbc, 0x59, 0xf4, 0x55, 0x26, 0x5e, 0xd4, 0xe5, 0xa1, 0x82, 0x23, 0xcb, 0xb9, 0xbe, 0x4e, 0x40, 0x69, 0xb4, 0x73, 0x80, 0x4d, 0x5d, 0xe9, 0x6f, 0x54, 0xdc, 0xaa, 0xa6, 0x03, 0xd0, 0x49, 0xc5, 0xd9, 0x4a, 0xa1, 0x47, 0x0d, 0xfc, 0xd2, 0x25, 0x40, 0x66, 0xb7, 0xc7, 0xb6, 0x1f, 0xf1, 0xf6, 0xf6, 0x77, 0x0e, 0x32, 0x15, 0xc5, 0x13, 0x99, 0xfd, 0x4e, 0x34, 0xec, 0x50, 0x82, 0xbc, 0x48, 0xf0, 0x89, 0x84, 0x0a, 0xd0, 0x43, 0x54, 0xae, 0x66, 0xdc, 0x0f, 0x1b, 0xd1, 0x8e, 0x46, 0x1a, 0x33, 0xcc, 0x12, 0x58, 0xb4, 0x43, 0xa2, 0x83, 0x7a, 0x6d, 0xf2, 0x67, 0x59, 0xaa, 0x23, 0x02, 0x33, 0x49, 0x86, 0xf8, 0x73, 0x80, 0xc9, 0xcc, 0x9d, 0x53, 0xbe, 0x9f, 0x99, 0x60, 0x5d, 0x2c, 0x9a, 0x97, 0xda, 0x7b, 0x09, 0x15, 0xa4, 0xa7, 0xad } - -} -, -{ - "RSAES-OAEP Encryption Example 5.3", - /* Message to be encrypted */ - 63, - { 0x30, 0x8b, 0x0e, 0xcb, 0xd2, 0xc7, 0x6c, 0xb7, 0x7f, 0xc6, 0xf7, 0x0c, 0x5e, 0xdd, 0x23, 0x3f, 0xd2, 0xf2, 0x09, 0x29, 0xd6, 0x29, 0xf0, 0x26, 0x95, 0x3b, 0xb6, 0x2a, 0x8f, 0x4a, 0x3a, 0x31, 0x4b, 0xde, 0x19, 0x5d, 0xe8, 0x5b, 0x5f, 0x81, 0x6d, 0xa2, 0xaa, 0xb0, 0x74, 0xd2, 0x6c, 0xb6, 0xac, 0xdd, 0xf3, 0x23, 0xae, 0x3b, 0x9c, 0x67, 0x8a, 0xc3, 0xcf, 0x12, 0xfb, 0xdd, 0xe7 } -, - /* Seed */ - 20, - { 0x22, 0x85, 0xf4, 0x0d, 0x77, 0x04, 0x82, 0xf9, 0xa9, 0xef, 0xa2, 0xc7, 0x2c, 0xb3, 0xac, 0x55, 0x71, 0x6d, 0xc0, 0xca } -, - /* Encryption */ - 129, - { 0x07, 0x70, 0x95, 0x21, 0x81, 0x64, 0x9f, 0x9f, 0x9f, 0x07, 0xff, 0x62, 0x6f, 0xf3, 0xa2, 0x2c, 0x35, 0xc4, 0x62, 0x44, 0x3d, 0x90, 0x5d, 0x45, 0x6a, 0x9f, 0xd0, 0xbf, 0xf4, 0x3c, 0xac, 0x2c, 0xa7, 0xa9, 0xf5, 0x54, 0xe9, 0x47, 0x8b, 0x9a, 0xcc, 0x3a, 0xc8, 0x38, 0xb0, 0x20, 0x40, 0xff, 0xd3, 0xe1, 0x84, 0x7d, 0xe2, 0xe4, 0x25, 0x39, 0x29, 0xf9, 0xdd, 0x9e, 0xe4, 0x04, 0x43, 0x25, 0xa9, 0xb0, 0x5c, 0xab, 0xb8, 0x08, 0xb2, 0xee, 0x84, 0x0d, 0x34, 0xe1, 0x5d, 0x10, 0x5a, 0x3f, 0x1f, 0x7b, 0x27, 0x69, 0x5a, 0x1a, 0x07, 0xa2, 0xd7, 0x3f, 0xe0, 0x8e, 0xca, 0xaa, 0x3c, 0x9c, 0x9d, 0x4d, 0x5a, 0x89, 0xff, 0x89, 0x0d, 0x54, 0x72, 0x7d, 0x7a, 0xe4, 0x0c, 0x0e, 0xc1, 0xa8, 0xdd, 0x86, 0x16, 0x5d, 0x8e, 0xe2, 0xc6, 0x36, 0x81, 0x41, 0x01, 0x6a, 0x48, 0xb5, 0x5b, 0x69, 0x67 } - -} -, -{ - "RSAES-OAEP Encryption Example 5.4", - /* Message to be encrypted */ - 6, - { 0x15, 0xc5, 0xb9, 0xee, 0x11, 0x85 } -, - /* Seed */ - 20, - { 0x49, 0xfa, 0x45, 0xd3, 0xa7, 0x8d, 0xd1, 0x0d, 0xfd, 0x57, 0x73, 0x99, 0xd1, 0xeb, 0x00, 0xaf, 0x7e, 0xed, 0x55, 0x13 } -, - /* Encryption */ - 129, - { 0x08, 0x12, 0xb7, 0x67, 0x68, 0xeb, 0xcb, 0x64, 0x2d, 0x04, 0x02, 0x58, 0xe5, 0xf4, 0x44, 0x1a, 0x01, 0x85, 0x21, 0xbd, 0x96, 0x68, 0x7e, 0x6c, 0x5e, 0x89, 0x9f, 0xcd, 0x6c, 0x17, 0x58, 0x8f, 0xf5, 0x9a, 0x82, 0xcc, 0x8a, 0xe0, 0x3a, 0x4b, 0x45, 0xb3, 0x12, 0x99, 0xaf, 0x17, 0x88, 0xc3, 0x29, 0xf7, 0xdc, 0xd2, 0x85, 0xf8, 0xcf, 0x4c, 0xed, 0x82, 0x60, 0x6b, 0x97, 0x61, 0x26, 0x71, 0xa4, 0x5b, 0xed, 0xca, 0x13, 0x34, 0x42, 0x14, 0x4d, 0x16, 0x17, 0xd1, 0x14, 0xf8, 0x02, 0x85, 0x7f, 0x0f, 0x9d, 0x73, 0x97, 0x51, 0xc5, 0x7a, 0x3f, 0x9e, 0xe4, 0x00, 0x91, 0x2c, 0x61, 0xe2, 0xe6, 0x99, 0x2b, 0xe0, 0x31, 0xa4, 0x3d, 0xd4, 0x8f, 0xa6, 0xba, 0x14, 0xee, 0xf7, 0xc4, 0x22, 0xb5, 0xed, 0xc4, 0xe7, 0xaf, 0xa0, 0x4f, 0xdd, 0x38, 0xf4, 0x02, 0xd1, 0xc8, 0xbb, 0x71, 0x9a, 0xbf } - -} -, -{ - "RSAES-OAEP Encryption Example 5.5", - /* Message to be encrypted */ - 45, - { 0x21, 0x02, 0x6e, 0x68, 0x00, 0xc7, 0xfa, 0x72, 0x8f, 0xca, 0xab, 0xa0, 0xd1, 0x96, 0xae, 0x28, 0xd7, 0xa2, 0xac, 0x4f, 0xfd, 0x8a, 0xbc, 0xe7, 0x94, 0xf0, 0x98, 0x5f, 0x60, 0xc8, 0xa6, 0x73, 0x72, 0x77, 0x36, 0x5d, 0x3f, 0xea, 0x11, 0xdb, 0x89, 0x23, 0xa2, 0x02, 0x9a } -, - /* Seed */ - 20, - { 0xf0, 0x28, 0x74, 0x13, 0x23, 0x4c, 0xc5, 0x03, 0x47, 0x24, 0xa0, 0x94, 0xc4, 0x58, 0x6b, 0x87, 0xaf, 0xf1, 0x33, 0xfc } -, - /* Encryption */ - 129, - { 0x07, 0xb6, 0x0e, 0x14, 0xec, 0x95, 0x4b, 0xfd, 0x29, 0xe6, 0x0d, 0x00, 0x47, 0xe7, 0x89, 0xf5, 0x1d, 0x57, 0x18, 0x6c, 0x63, 0x58, 0x99, 0x03, 0x30, 0x67, 0x93, 0xce, 0xd3, 0xf6, 0x82, 0x41, 0xc7, 0x43, 0x52, 0x9a, 0xba, 0x6a, 0x63, 0x74, 0xf9, 0x2e, 0x19, 0xe0, 0x16, 0x3e, 0xfa, 0x33, 0x69, 0x7e, 0x19, 0x6f, 0x76, 0x61, 0xdf, 0xaa, 0xa4, 0x7a, 0xac, 0x6b, 0xde, 0x5e, 0x51, 0xde, 0xb5, 0x07, 0xc7, 0x2c, 0x58, 0x9a, 0x2c, 0xa1, 0x69, 0x3d, 0x96, 0xb1, 0x46, 0x03, 0x81, 0x24, 0x9b, 0x2c, 0xdb, 0x9e, 0xac, 0x44, 0x76, 0x9f, 0x24, 0x89, 0xc5, 0xd3, 0xd2, 0xf9, 0x9f, 0x0e, 0xe3, 0xc7, 0xee, 0x5b, 0xf6, 0x4a, 0x5a, 0xc7, 0x9c, 0x42, 0xbd, 0x43, 0x3f, 0x14, 0x9b, 0xe8, 0xcb, 0x59, 0x54, 0x83, 0x61, 0x64, 0x05, 0x95, 0x51, 0x3c, 0x97, 0xaf, 0x7b, 0xc2, 0x50, 0x97, 0x23 } - -} -, -{ - "RSAES-OAEP Encryption Example 5.6", - /* Message to be encrypted */ - 11, - { 0x54, 0x1e, 0x37, 0xb6, 0x8b, 0x6c, 0x88, 0x72, 0xb8, 0x4c, 0x02 } -, - /* Seed */ - 20, - { 0xd9, 0xfb, 0xa4, 0x5c, 0x96, 0xf2, 0x1e, 0x6e, 0x26, 0xd2, 0x9e, 0xb2, 0xcd, 0xcb, 0x65, 0x85, 0xbe, 0x9c, 0xb3, 0x41 } -, - /* Encryption */ - 129, - { 0x08, 0xc3, 0x6d, 0x4d, 0xda, 0x33, 0x42, 0x3b, 0x2e, 0xd6, 0x83, 0x0d, 0x85, 0xf6, 0x41, 0x1b, 0xa1, 0xdc, 0xf4, 0x70, 0xa1, 0xfa, 0xe0, 0xeb, 0xef, 0xee, 0x7c, 0x08, 0x9f, 0x25, 0x6c, 0xef, 0x74, 0xcb, 0x96, 0xea, 0x69, 0xc3, 0x8f, 0x60, 0xf3, 0x9a, 0xbe, 0xe4, 0x41, 0x29, 0xbc, 0xb4, 0xc9, 0x2d, 0xe7, 0xf7, 0x97, 0x62, 0x3b, 0x20, 0x07, 0x4e, 0x3d, 0x9c, 0x28, 0x99, 0x70, 0x1e, 0xd9, 0x07, 0x1e, 0x1e, 0xfa, 0x0b, 0xdd, 0x84, 0xd4, 0xc3, 0xe5, 0x13, 0x03, 0x02, 0xd8, 0xf0, 0x24, 0x0b, 0xab, 0xa4, 0xb8, 0x4a, 0x71, 0xcc, 0x03, 0x2f, 0x22, 0x35, 0xa5, 0xff, 0x0f, 0xae, 0x27, 0x7c, 0x3e, 0x8f, 0x91, 0x12, 0xbe, 0xf4, 0x4c, 0x9a, 0xe2, 0x0d, 0x17, 0x5f, 0xc9, 0xa4, 0x05, 0x8b, 0xfc, 0x93, 0x0b, 0xa3, 0x1b, 0x02, 0xe2, 0xe4, 0xf4, 0x44, 0x48, 0x37, 0x10, 0xf2, 0x4a } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 6: A 1029-bit RSA Key Pair", -{ - /* RSA modulus n */ - 129, - { 0x12, 0xb1, 0x7f, 0x6d, 0xad, 0x2e, 0xcd, 0x19, 0xff, 0x46, 0xdc, 0x13, 0xf7, 0x86, 0x0f, 0x09, 0xe0, 0xe0, 0xcf, 0xb6, 0x77, 0xb3, 0x8a, 0x52, 0x59, 0x23, 0x05, 0xce, 0xaf, 0x02, 0x2c, 0x16, 0x6d, 0xb9, 0x0d, 0x04, 0xac, 0x29, 0xe3, 0x3f, 0x7d, 0xd1, 0x2d, 0x9f, 0xaf, 0x66, 0xe0, 0x81, 0x6b, 0xb6, 0x3e, 0xad, 0x26, 0x7c, 0xc7, 0xd4, 0x6c, 0x17, 0xc3, 0x7b, 0xe2, 0x14, 0xbc, 0xa2, 0xa2, 0x2d, 0x72, 0x3a, 0x64, 0xe4, 0x44, 0x07, 0x43, 0x6b, 0x6f, 0xc9, 0x65, 0x72, 0x9a, 0xef, 0xc2, 0x55, 0x4f, 0x37, 0x6c, 0xd5, 0xdc, 0xea, 0x68, 0x29, 0x37, 0x80, 0xa6, 0x2b, 0xf3, 0x9d, 0x00, 0x29, 0x48, 0x5a, 0x16, 0x0b, 0xbb, 0x9e, 0x5d, 0xc0, 0x97, 0x2d, 0x21, 0xa5, 0x04, 0xf5, 0x2e, 0x5e, 0xe0, 0x28, 0xaa, 0x41, 0x63, 0x32, 0xf5, 0x10, 0xb2, 0xe9, 0xcf, 0xf5, 0xf7, 0x22, 0xaf } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 129, - { 0x02, 0x95, 0xec, 0xa3, 0x56, 0x06, 0x18, 0x36, 0x95, 0x59, 0xce, 0xcd, 0x30, 0x3a, 0xa9, 0xcf, 0xda, 0xfc, 0x1d, 0x9f, 0x06, 0x95, 0x9d, 0xf7, 0x5f, 0xfe, 0xf9, 0x29, 0xaa, 0x89, 0x69, 0x61, 0xbc, 0xd1, 0x90, 0xdc, 0x69, 0x97, 0xed, 0xa7, 0xf5, 0x96, 0x3e, 0x72, 0x4d, 0x07, 0xb4, 0xdc, 0x11, 0xf3, 0x06, 0x5e, 0x5a, 0xe9, 0x7d, 0x96, 0x83, 0x51, 0x12, 0x28, 0x0b, 0x90, 0x84, 0xbb, 0x14, 0xf2, 0xa2, 0x1e, 0xbd, 0x4e, 0x88, 0x9d, 0x41, 0xb9, 0xc4, 0x13, 0x2e, 0xc1, 0x95, 0x6f, 0xca, 0xb8, 0xbb, 0x2f, 0xed, 0x05, 0x75, 0x88, 0x49, 0x36, 0x52, 0x2c, 0x5f, 0xf7, 0xd3, 0x32, 0x61, 0x90, 0x48, 0x24, 0xe7, 0xca, 0xde, 0xe4, 0xe0, 0xbb, 0x37, 0x2d, 0x24, 0x57, 0xcf, 0x78, 0xe2, 0xbd, 0x12, 0x86, 0x22, 0x8f, 0xf8, 0x3f, 0x10, 0x73, 0x1c, 0xe6, 0x3c, 0x90, 0xcf, 0xf3, 0xf9 } -, - /* Prime p */ - 65, - { 0x04, 0xa6, 0xce, 0x8b, 0x73, 0x58, 0xdf, 0xa6, 0x9b, 0xdc, 0xf7, 0x42, 0x61, 0x70, 0x05, 0xaf, 0xb5, 0x38, 0x5f, 0x5f, 0x3a, 0x58, 0xa2, 0x4e, 0xf7, 0x4a, 0x22, 0xa8, 0xc0, 0x5c, 0xb7, 0xcc, 0x38, 0xeb, 0xd4, 0xcc, 0x9d, 0x9a, 0x9d, 0x78, 0x9a, 0x62, 0xcd, 0x0f, 0x60, 0xf0, 0xcb, 0x94, 0x1d, 0x34, 0x23, 0xc9, 0x69, 0x2e, 0xfa, 0x4f, 0xe3, 0xad, 0xff, 0x29, 0x0c, 0x47, 0x49, 0xa3, 0x8b } -, - /* Prime q */ - 65, - { 0x04, 0x04, 0xc9, 0xa8, 0x03, 0x37, 0x1f, 0xed, 0xb4, 0xc5, 0xbe, 0x39, 0xf3, 0xc0, 0x0b, 0x00, 0x9e, 0x5e, 0x08, 0xa6, 0x3b, 0xe1, 0xe4, 0x00, 0x35, 0xcd, 0xac, 0xa5, 0x01, 0x1c, 0xc7, 0x01, 0xcf, 0x7e, 0xeb, 0xcb, 0x99, 0xf0, 0xff, 0xe1, 0x7c, 0xfd, 0x0a, 0x4b, 0xf7, 0xbe, 0xfd, 0x2d, 0xd5, 0x36, 0xac, 0x94, 0x6d, 0xb7, 0x97, 0xfd, 0xbc, 0x4a, 0xbe, 0x8f, 0x29, 0x34, 0x9b, 0x91, 0xed } -, - /* p's CRT exponent dP */ - 65, - { 0x03, 0x96, 0x1c, 0x8f, 0x76, 0x0a, 0xa2, 0xbd, 0x51, 0x54, 0xc7, 0xaa, 0xfd, 0x77, 0x22, 0x5b, 0x3b, 0xac, 0xd0, 0x13, 0x9a, 0xe7, 0xb5, 0x94, 0x8e, 0xa3, 0x31, 0x1f, 0xcc, 0xd8, 0x6f, 0xb9, 0x5c, 0x75, 0xaf, 0xa7, 0x67, 0x28, 0x4b, 0x9b, 0x2d, 0xe5, 0x59, 0x57, 0x2f, 0x15, 0xd8, 0xd0, 0x44, 0xc7, 0xeb, 0x83, 0xa1, 0xbe, 0x5f, 0xad, 0xf2, 0xcc, 0x37, 0x7c, 0x0d, 0x84, 0x75, 0x29, 0x4b } -, - /* q's CRT exponent dQ */ - 65, - { 0x02, 0x21, 0x97, 0xe0, 0x66, 0x74, 0x21, 0x96, 0xaa, 0xbc, 0x03, 0xfa, 0x2f, 0xee, 0xb4, 0xe7, 0x0b, 0x15, 0xcb, 0x78, 0x7d, 0x61, 0x7a, 0xcd, 0x31, 0xbb, 0x75, 0xc7, 0xbc, 0x23, 0x4a, 0xd7, 0x06, 0xf7, 0xc4, 0x8d, 0x21, 0x82, 0xd1, 0xf0, 0xff, 0x9c, 0x22, 0x8d, 0xcf, 0x41, 0x96, 0x7b, 0x6c, 0x0b, 0xa6, 0xd2, 0xc0, 0xad, 0x11, 0x0a, 0x1b, 0x85, 0x78, 0x31, 0xec, 0x24, 0x5e, 0x2c, 0xb1 } -, - /* CRT coefficient qInv */ - 65, - { 0x04, 0x01, 0xc4, 0xc0, 0xc5, 0x3d, 0x45, 0xdb, 0xdb, 0x5e, 0x9d, 0x96, 0xd0, 0xfe, 0xcf, 0x42, 0x75, 0xdf, 0x09, 0x74, 0xbc, 0x4a, 0x07, 0x36, 0xb4, 0xa7, 0x4c, 0x32, 0x69, 0x05, 0x3e, 0xfb, 0x68, 0x6a, 0xce, 0x24, 0x06, 0xe2, 0x2c, 0x9e, 0x05, 0x8d, 0xdb, 0x4a, 0xe5, 0x40, 0x62, 0x7a, 0xe2, 0xfd, 0xb0, 0x82, 0x61, 0xe8, 0xe7, 0xe4, 0xbc, 0xbc, 0x99, 0x4d, 0xaa, 0xfa, 0x30, 0x5c, 0x45 } - -} -, -{{ - "RSAES-OAEP Encryption Example 6.1", - /* Message to be encrypted */ - 22, - { 0x40, 0x46, 0xca, 0x8b, 0xaa, 0x33, 0x47, 0xca, 0x27, 0xf4, 0x9e, 0x0d, 0x81, 0xf9, 0xcc, 0x1d, 0x71, 0xbe, 0x9b, 0xa5, 0x17, 0xd4 } -, - /* Seed */ - 20, - { 0xdd, 0x0f, 0x6c, 0xfe, 0x41, 0x5e, 0x88, 0xe5, 0xa4, 0x69, 0xa5, 0x1f, 0xbb, 0xa6, 0xdf, 0xd4, 0x0a, 0xdb, 0x43, 0x84 } -, - /* Encryption */ - 129, - { 0x06, 0x30, 0xee, 0xbc, 0xd2, 0x85, 0x6c, 0x24, 0xf7, 0x98, 0x80, 0x6e, 0x41, 0xf9, 0xe6, 0x73, 0x45, 0xed, 0xa9, 0xce, 0xda, 0x38, 0x6a, 0xcc, 0x9f, 0xac, 0xae, 0xa1, 0xee, 0xed, 0x06, 0xac, 0xe5, 0x83, 0x70, 0x97, 0x18, 0xd9, 0xd1, 0x69, 0xfa, 0xdf, 0x41, 0x4d, 0x5c, 0x76, 0xf9, 0x29, 0x96, 0x83, 0x3e, 0xf3, 0x05, 0xb7, 0x5b, 0x1e, 0x4b, 0x95, 0xf6, 0x62, 0xa2, 0x0f, 0xae, 0xdc, 0x3b, 0xae, 0x0c, 0x48, 0x27, 0xa8, 0xbf, 0x8a, 0x88, 0xed, 0xbd, 0x57, 0xec, 0x20, 0x3a, 0x27, 0xa8, 0x41, 0xf0, 0x2e, 0x43, 0xa6, 0x15, 0xba, 0xb1, 0xa8, 0xca, 0xc0, 0x70, 0x1d, 0xe3, 0x4d, 0xeb, 0xde, 0xf6, 0x2a, 0x08, 0x80, 0x89, 0xb5, 0x5e, 0xc3, 0x6e, 0xa7, 0x52, 0x2f, 0xd3, 0xec, 0x8d, 0x06, 0xb6, 0xa0, 0x73, 0xe6, 0xdf, 0x83, 0x31, 0x53, 0xbc, 0x0a, 0xef, 0xd9, 0x3b, 0xd1, 0xa3 } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSAES-OAEP Encryption Example 6.2", - /* Message to be encrypted */ - 50, - { 0x5c, 0xc7, 0x2c, 0x60, 0x23, 0x1d, 0xf0, 0x3b, 0x3d, 0x40, 0xf9, 0xb5, 0x79, 0x31, 0xbc, 0x31, 0x10, 0x9f, 0x97, 0x25, 0x27, 0xf2, 0x8b, 0x19, 0xe7, 0x48, 0x0c, 0x72, 0x88, 0xcb, 0x3c, 0x92, 0xb2, 0x25, 0x12, 0x21, 0x4e, 0x4b, 0xe6, 0xc9, 0x14, 0x79, 0x2d, 0xda, 0xbd, 0xf5, 0x7f, 0xaa, 0x8a, 0xa7 } -, - /* Seed */ - 20, - { 0x8d, 0x14, 0xbd, 0x94, 0x6a, 0x13, 0x51, 0x14, 0x8f, 0x5c, 0xae, 0x2e, 0xd9, 0xa0, 0xc6, 0x53, 0xe8, 0x5e, 0xbd, 0x85 } -, - /* Encryption */ - 129, - { 0x0e, 0xbc, 0x37, 0x37, 0x61, 0x73, 0xa4, 0xfd, 0x2f, 0x89, 0xcc, 0x55, 0xc2, 0xca, 0x62, 0xb2, 0x6b, 0x11, 0xd5, 0x1c, 0x3c, 0x7c, 0xe4, 0x9e, 0x88, 0x45, 0xf7, 0x4e, 0x76, 0x07, 0x31, 0x7c, 0x43, 0x6b, 0xc8, 0xd2, 0x3b, 0x96, 0x67, 0xdf, 0xeb, 0x9d, 0x08, 0x72, 0x34, 0xb4, 0x7b, 0xc6, 0x83, 0x71, 0x75, 0xae, 0x5c, 0x05, 0x59, 0xf6, 0xb8, 0x1d, 0x7d, 0x22, 0x41, 0x6d, 0x3e, 0x50, 0xf4, 0xac, 0x53, 0x3d, 0x8f, 0x08, 0x12, 0xf2, 0xdb, 0x9e, 0x79, 0x1f, 0xe9, 0xc7, 0x75, 0xac, 0x8b, 0x6a, 0xd0, 0xf5, 0x35, 0xad, 0x9c, 0xeb, 0x23, 0xa4, 0xa0, 0x20, 0x14, 0xc5, 0x8a, 0xb3, 0xf8, 0xd3, 0x16, 0x14, 0x99, 0xa2, 0x60, 0xf3, 0x93, 0x48, 0xe7, 0x14, 0xae, 0x2a, 0x1d, 0x34, 0x43, 0x20, 0x8f, 0xd8, 0xb7, 0x22, 0xcc, 0xfd, 0xfb, 0x39, 0x3e, 0x98, 0x01, 0x1f, 0x99, 0xe6, 0x3f } - -} -, -{ - "RSAES-OAEP Encryption Example 6.3", - /* Message to be encrypted */ - 54, - { 0xb2, 0x0e, 0x65, 0x13, 0x03, 0x09, 0x2f, 0x4b, 0xcc, 0xb4, 0x30, 0x70, 0xc0, 0xf8, 0x6d, 0x23, 0x04, 0x93, 0x62, 0xed, 0x96, 0x64, 0x2f, 0xc5, 0x63, 0x2c, 0x27, 0xdb, 0x4a, 0x52, 0xe3, 0xd8, 0x31, 0xf2, 0xab, 0x06, 0x8b, 0x23, 0xb1, 0x49, 0x87, 0x9c, 0x00, 0x2f, 0x6b, 0xf3, 0xfe, 0xee, 0x97, 0x59, 0x11, 0x12, 0x56, 0x2c } -, - /* Seed */ - 20, - { 0x6c, 0x07, 0x5b, 0xc4, 0x55, 0x20, 0xf1, 0x65, 0xc0, 0xbf, 0x5e, 0xa4, 0xc5, 0xdf, 0x19, 0x1b, 0xc9, 0xef, 0x0e, 0x44 } -, - /* Encryption */ - 129, - { 0x0a, 0x98, 0xbf, 0x10, 0x93, 0x61, 0x93, 0x94, 0x43, 0x6c, 0xf6, 0x8d, 0x8f, 0x38, 0xe2, 0xf1, 0x58, 0xfd, 0xe8, 0xea, 0x54, 0xf3, 0x43, 0x5f, 0x23, 0x9b, 0x8d, 0x06, 0xb8, 0x32, 0x18, 0x44, 0x20, 0x24, 0x76, 0xae, 0xed, 0x96, 0x00, 0x94, 0x92, 0x48, 0x0c, 0xe3, 0xa8, 0xd7, 0x05, 0x49, 0x8c, 0x4c, 0x8c, 0x68, 0xf0, 0x15, 0x01, 0xdc, 0x81, 0xdb, 0x60, 0x8f, 0x60, 0x08, 0x73, 0x50, 0xc8, 0xc3, 0xb0, 0xbd, 0x2e, 0x9e, 0xf6, 0xa8, 0x14, 0x58, 0xb7, 0xc8, 0x01, 0xb8, 0x9f, 0x2e, 0x4f, 0xe9, 0x9d, 0x49, 0x00, 0xba, 0x6a, 0x4b, 0x5e, 0x5a, 0x96, 0xd8, 0x65, 0xdc, 0x67, 0x6c, 0x77, 0x55, 0x92, 0x87, 0x94, 0x13, 0x0d, 0x62, 0x80, 0xa8, 0x16, 0x0a, 0x19, 0x0f, 0x2d, 0xf3, 0xea, 0x7c, 0xf9, 0xaa, 0x02, 0x71, 0xd8, 0x8e, 0x9e, 0x69, 0x05, 0xec, 0xf1, 0xc5, 0x15, 0x2d, 0x65 } - -} -, -{ - "RSAES-OAEP Encryption Example 6.4", - /* Message to be encrypted */ - 8, - { 0x68, 0x4e, 0x30, 0x38, 0xc5, 0xc0, 0x41, 0xf7 } -, - /* Seed */ - 20, - { 0x3b, 0xbc, 0x3b, 0xd6, 0x63, 0x7d, 0xfe, 0x12, 0x84, 0x69, 0x01, 0x02, 0x9b, 0xf5, 0xb0, 0xc0, 0x71, 0x03, 0x43, 0x9c } -, - /* Encryption */ - 129, - { 0x00, 0x8e, 0x7a, 0x67, 0xca, 0xcf, 0xb5, 0xc4, 0xe2, 0x4b, 0xec, 0x7d, 0xee, 0x14, 0x91, 0x17, 0xf1, 0x95, 0x98, 0xce, 0x8c, 0x45, 0x80, 0x8f, 0xef, 0x88, 0xc6, 0x08, 0xff, 0x9c, 0xd6, 0xe6, 0x95, 0x26, 0x3b, 0x9a, 0x3c, 0x0a, 0xd4, 0xb8, 0xba, 0x4c, 0x95, 0x23, 0x8e, 0x96, 0xa8, 0x42, 0x2b, 0x85, 0x35, 0x62, 0x9c, 0x8d, 0x53, 0x82, 0x37, 0x44, 0x79, 0xad, 0x13, 0xfa, 0x39, 0x97, 0x4b, 0x24, 0x2f, 0x9a, 0x75, 0x9e, 0xea, 0xf9, 0xc8, 0x3a, 0xd5, 0xa8, 0xca, 0x18, 0x94, 0x0a, 0x01, 0x62, 0xba, 0x75, 0x58, 0x76, 0xdf, 0x26, 0x3f, 0x4b, 0xd5, 0x0c, 0x65, 0x25, 0xc5, 0x60, 0x90, 0x26, 0x7c, 0x1f, 0x0e, 0x09, 0xce, 0x08, 0x99, 0xa0, 0xcf, 0x35, 0x9e, 0x88, 0x12, 0x0a, 0xbd, 0x9b, 0xf8, 0x93, 0x44, 0x5b, 0x3c, 0xae, 0x77, 0xd3, 0x60, 0x73, 0x59, 0xae, 0x9a, 0x52, 0xf8 } - -} -, -{ - "RSAES-OAEP Encryption Example 6.5", - /* Message to be encrypted */ - 25, - { 0x32, 0x48, 0x8c, 0xb2, 0x62, 0xd0, 0x41, 0xd6, 0xe4, 0xdd, 0x35, 0xf9, 0x87, 0xbf, 0x3c, 0xa6, 0x96, 0xdb, 0x1f, 0x06, 0xac, 0x29, 0xa4, 0x46, 0x93 } -, - /* Seed */ - 20, - { 0xb4, 0x6b, 0x41, 0x89, 0x3e, 0x8b, 0xef, 0x32, 0x6f, 0x67, 0x59, 0x38, 0x3a, 0x83, 0x07, 0x1d, 0xae, 0x7f, 0xca, 0xbc } -, - /* Encryption */ - 129, - { 0x00, 0x00, 0x34, 0x74, 0x41, 0x6c, 0x7b, 0x68, 0xbd, 0xf9, 0x61, 0xc3, 0x85, 0x73, 0x79, 0x44, 0xd7, 0xf1, 0xf4, 0x0c, 0xb3, 0x95, 0x34, 0x3c, 0x69, 0x3c, 0xc0, 0xb4, 0xfe, 0x63, 0xb3, 0x1f, 0xed, 0xf1, 0xea, 0xee, 0xac, 0x9c, 0xcc, 0x06, 0x78, 0xb3, 0x1d, 0xc3, 0x2e, 0x09, 0x77, 0x48, 0x95, 0x14, 0xc4, 0xf0, 0x90, 0x85, 0xf6, 0x29, 0x8a, 0x96, 0x53, 0xf0, 0x1a, 0xea, 0x40, 0x45, 0xff, 0x58, 0x2e, 0xe8, 0x87, 0xbe, 0x26, 0xae, 0x57, 0x5b, 0x73, 0xee, 0xf7, 0xf3, 0x77, 0x49, 0x21, 0xe3, 0x75, 0xa3, 0xd1, 0x9a, 0xdd, 0xa0, 0xca, 0x31, 0xaa, 0x18, 0x49, 0x88, 0x7c, 0x1f, 0x42, 0xca, 0xc9, 0x67, 0x7f, 0x7a, 0x2f, 0x4e, 0x92, 0x3f, 0x6e, 0x5a, 0x86, 0x8b, 0x38, 0xc0, 0x84, 0xef, 0x18, 0x75, 0x94, 0xdc, 0x9f, 0x7f, 0x04, 0x8f, 0xea, 0x2e, 0x02, 0x95, 0x53, 0x84, 0xab } - -} -, -{ - "RSAES-OAEP Encryption Example 6.6", - /* Message to be encrypted */ - 12, - { 0x50, 0xba, 0x14, 0xbe, 0x84, 0x62, 0x72, 0x02, 0x79, 0xc3, 0x06, 0xba } -, - /* Seed */ - 20, - { 0x0a, 0x24, 0x03, 0x31, 0x2a, 0x41, 0xe3, 0xd5, 0x2f, 0x06, 0x0f, 0xbc, 0x13, 0xa6, 0x7d, 0xe5, 0xcf, 0x76, 0x09, 0xa7 } -, - /* Encryption */ - 129, - { 0x0a, 0x02, 0x6d, 0xda, 0x5f, 0xc8, 0x78, 0x5f, 0x7b, 0xd9, 0xbf, 0x75, 0x32, 0x7b, 0x63, 0xe8, 0x5e, 0x2c, 0x0f, 0xde, 0xe5, 0xda, 0xdb, 0x65, 0xeb, 0xdc, 0xac, 0x9a, 0xe1, 0xde, 0x95, 0xc9, 0x2c, 0x67, 0x2a, 0xb4, 0x33, 0xaa, 0x7a, 0x8e, 0x69, 0xce, 0x6a, 0x6d, 0x88, 0x97, 0xfa, 0xc4, 0xac, 0x4a, 0x54, 0xde, 0x84, 0x1a, 0xe5, 0xe5, 0xbb, 0xce, 0x76, 0x87, 0x87, 0x9d, 0x79, 0x63, 0x4c, 0xea, 0x7a, 0x30, 0x68, 0x40, 0x65, 0xc7, 0x14, 0xd5, 0x24, 0x09, 0xb9, 0x28, 0x25, 0x6b, 0xbf, 0x53, 0xea, 0xbc, 0xd5, 0x23, 0x1e, 0xb7, 0x25, 0x95, 0x04, 0x53, 0x73, 0x99, 0xbd, 0x29, 0x16, 0x4b, 0x72, 0x6d, 0x33, 0xa4, 0x6d, 0xa7, 0x01, 0x36, 0x0a, 0x41, 0x68, 0xa0, 0x91, 0xcc, 0xab, 0x72, 0xd4, 0x4a, 0x62, 0xfe, 0xd2, 0x46, 0xc0, 0xff, 0xea, 0x5b, 0x13, 0x48, 0xab, 0x54, 0x70 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 7: A 1030-bit RSA Key Pair", -{ - /* RSA modulus n */ - 129, - { 0x31, 0x11, 0x79, 0xf0, 0xbc, 0xfc, 0x9b, 0x9d, 0x3c, 0xa3, 0x15, 0xd0, 0x0e, 0xf3, 0x0d, 0x7b, 0xdd, 0x3a, 0x2c, 0xfa, 0xe9, 0x91, 0x1b, 0xfe, 0xdc, 0xb9, 0x48, 0xb3, 0xa4, 0x78, 0x2d, 0x07, 0x32, 0xb6, 0xab, 0x44, 0xaa, 0x4b, 0xf0, 0x37, 0x41, 0xa6, 0x44, 0xdc, 0x01, 0xbe, 0xc3, 0xe6, 0x9b, 0x01, 0xa0, 0x33, 0xe6, 0x75, 0xd8, 0xac, 0xd7, 0xc4, 0x92, 0x5c, 0x6b, 0x1a, 0xec, 0x31, 0x19, 0x05, 0x1d, 0xfd, 0x89, 0x76, 0x2d, 0x21, 0x5d, 0x45, 0x47, 0x5f, 0xfc, 0xb5, 0x9f, 0x90, 0x81, 0x48, 0x62, 0x3f, 0x37, 0x17, 0x71, 0x56, 0xf6, 0xae, 0x86, 0xdd, 0x7a, 0x7c, 0x5f, 0x43, 0xdc, 0x1e, 0x1f, 0x90, 0x82, 0x54, 0x05, 0x8a, 0x28, 0x4a, 0x5f, 0x06, 0xc0, 0x02, 0x17, 0x93, 0xa8, 0x7f, 0x1a, 0xc5, 0xfe, 0xff, 0x7d, 0xca, 0xee, 0x69, 0xc5, 0xe5, 0x1a, 0x37, 0x89, 0xe3, 0x73 } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 129, - { 0x07, 0x0c, 0xfc, 0xff, 0x2f, 0xeb, 0x82, 0x76, 0xe2, 0x74, 0x32, 0xc4, 0x5d, 0xfe, 0xe4, 0x8f, 0x49, 0xb7, 0x91, 0x7d, 0x65, 0x30, 0xe1, 0xf0, 0xca, 0x34, 0x60, 0xf3, 0x2e, 0x02, 0x76, 0x17, 0x44, 0x87, 0xc5, 0x6e, 0x22, 0xa4, 0x5d, 0x25, 0x00, 0xd7, 0x77, 0x54, 0x95, 0x21, 0x9d, 0x7d, 0x16, 0x5a, 0x9c, 0xf3, 0xbd, 0x92, 0xc3, 0x2a, 0xf9, 0xa9, 0x8d, 0x8d, 0xc9, 0xcc, 0x29, 0x68, 0x00, 0xad, 0xc9, 0x4a, 0x0a, 0x54, 0xfb, 0x40, 0xf3, 0x42, 0x91, 0xbf, 0x84, 0xee, 0x8e, 0xa1, 0x2b, 0x6f, 0x10, 0x93, 0x59, 0xc6, 0xd3, 0x54, 0x2a, 0x50, 0xf9, 0xc7, 0x67, 0xf5, 0xcf, 0xff, 0x05, 0xa6, 0x81, 0xc2, 0xe6, 0x56, 0xfb, 0x77, 0xca, 0xaa, 0xdb, 0x4b, 0xe9, 0x46, 0x8d, 0x8a, 0xbc, 0xd4, 0xdf, 0x98, 0xf5, 0x8e, 0x86, 0xd2, 0x05, 0x3f, 0xa1, 0x34, 0x9f, 0x74, 0x8e, 0x21, 0xb1 } -, - /* Prime p */ - 65, - { 0x07, 0x49, 0x26, 0x2c, 0x11, 0x1c, 0xd4, 0x70, 0xec, 0x25, 0x66, 0xe6, 0xb3, 0x73, 0x2f, 0xc0, 0x93, 0x29, 0x46, 0x9a, 0xa1, 0x90, 0x71, 0xd3, 0xb9, 0xc0, 0x19, 0x06, 0x51, 0x4c, 0x6f, 0x1d, 0x26, 0xba, 0xa1, 0x4b, 0xea, 0xb0, 0x97, 0x1c, 0x8b, 0x7e, 0x61, 0x1a, 0x4f, 0x79, 0x00, 0x9d, 0x6f, 0xea, 0x77, 0x69, 0x28, 0xca, 0x25, 0x28, 0x5b, 0x0d, 0xe3, 0x64, 0x3d, 0x1a, 0x3f, 0x8c, 0x71 } -, - /* Prime q */ - 65, - { 0x06, 0xbc, 0x1e, 0x50, 0xe9, 0x6c, 0x02, 0xbf, 0x63, 0x6e, 0x9e, 0xea, 0x8b, 0x89, 0x9b, 0xbe, 0xbf, 0x76, 0x51, 0xde, 0x77, 0xdd, 0x47, 0x4c, 0x3e, 0x9b, 0xc2, 0x3b, 0xad, 0x81, 0x82, 0xb6, 0x19, 0x04, 0xc7, 0xd9, 0x7d, 0xfb, 0xeb, 0xfb, 0x1e, 0x00, 0x10, 0x88, 0x78, 0xb6, 0xe6, 0x7e, 0x41, 0x53, 0x91, 0xd6, 0x79, 0x42, 0xc2, 0xb2, 0xbf, 0x9b, 0x44, 0x35, 0xf8, 0x8b, 0x0c, 0xb0, 0x23 } -, - /* p's CRT exponent dP */ - 65, - { 0x03, 0xbc, 0x7e, 0xa7, 0xf0, 0xaa, 0xb1, 0x43, 0xab, 0xc6, 0xce, 0x8b, 0x97, 0x11, 0x86, 0x36, 0xa3, 0x01, 0x72, 0xe4, 0xcf, 0xe0, 0x2c, 0x8f, 0xa0, 0xdd, 0xa3, 0xb7, 0xba, 0xaf, 0x90, 0xf8, 0x09, 0x29, 0x82, 0x98, 0x55, 0x25, 0xf4, 0x88, 0xbd, 0xfc, 0xb4, 0xbd, 0x72, 0x6e, 0x22, 0x63, 0x9a, 0xc6, 0x4a, 0x30, 0x92, 0xab, 0x7f, 0xfc, 0xbf, 0x1d, 0x53, 0x34, 0xcf, 0xa5, 0x0b, 0x5b, 0xf1 } -, - /* q's CRT exponent dQ */ - 65, - { 0x02, 0x62, 0xa6, 0xaa, 0x29, 0xc2, 0xa3, 0xc6, 0x7d, 0xc5, 0x34, 0x6c, 0x06, 0x38, 0x1a, 0xfd, 0x98, 0x7a, 0xa3, 0xcc, 0x93, 0xcf, 0xbf, 0xec, 0xf5, 0x4f, 0xdd, 0x9f, 0x9d, 0x78, 0x7d, 0x7f, 0x59, 0xa5, 0x23, 0xd3, 0x98, 0x97, 0x9d, 0xa1, 0x37, 0xa2, 0xf6, 0x38, 0x1f, 0xe9, 0x48, 0x01, 0xf7, 0xc9, 0x4d, 0xa2, 0x15, 0x18, 0xdc, 0x34, 0xcb, 0x40, 0x87, 0x0c, 0x46, 0x97, 0x99, 0x4a, 0xd9 } -, - /* CRT coefficient qInv */ - 64, - { 0x64, 0x9d, 0x4c, 0x17, 0xb6, 0xee, 0x17, 0x21, 0xe7, 0x72, 0xd0, 0x38, 0x9a, 0x55, 0x9c, 0x3d, 0x3c, 0xdf, 0x95, 0x50, 0xd4, 0x57, 0xc4, 0x6b, 0x03, 0x7b, 0x74, 0x64, 0x1b, 0x1d, 0x52, 0x16, 0x6a, 0xf8, 0xa2, 0x13, 0xc8, 0x39, 0x62, 0x06, 0xcd, 0xfb, 0xa4, 0x42, 0x2f, 0x18, 0xd6, 0xf6, 0x1d, 0xbc, 0xb5, 0xd2, 0x14, 0xc9, 0x71, 0xbf, 0x48, 0x2a, 0xeb, 0x97, 0x6a, 0x73, 0x70, 0xc2 } - -} -, -{{ - "RSAES-OAEP Encryption Example 7.1", - /* Message to be encrypted */ - 4, - { 0x47, 0xaa, 0xe9, 0x09 } -, - /* Seed */ - 20, - { 0x43, 0xdd, 0x09, 0xa0, 0x7f, 0xf4, 0xca, 0xc7, 0x1c, 0xaa, 0x46, 0x32, 0xee, 0x5e, 0x1c, 0x1d, 0xae, 0xe4, 0xcd, 0x8f } -, - /* Encryption */ - 129, - { 0x16, 0x88, 0xe4, 0xce, 0x77, 0x94, 0xbb, 0xa6, 0xcb, 0x70, 0x14, 0x16, 0x9e, 0xcd, 0x55, 0x9c, 0xed, 0xe2, 0xa3, 0x0b, 0x56, 0xa5, 0x2b, 0x68, 0xd9, 0xfe, 0x18, 0xcf, 0x19, 0x73, 0xef, 0x97, 0xb2, 0xa0, 0x31, 0x53, 0x95, 0x1c, 0x75, 0x5f, 0x62, 0x94, 0xaa, 0x49, 0xad, 0xbd, 0xb5, 0x58, 0x45, 0xab, 0x68, 0x75, 0xfb, 0x39, 0x86, 0xc9, 0x3e, 0xcf, 0x92, 0x79, 0x62, 0x84, 0x0d, 0x28, 0x2f, 0x9e, 0x54, 0xce, 0x8b, 0x69, 0x0f, 0x7c, 0x0c, 0xb8, 0xbb, 0xd7, 0x34, 0x40, 0xd9, 0x57, 0x1d, 0x1b, 0x16, 0xcd, 0x92, 0x60, 0xf9, 0xea, 0xb4, 0x78, 0x3c, 0xc4, 0x82, 0xe5, 0x22, 0x3d, 0xc6, 0x09, 0x73, 0x87, 0x17, 0x83, 0xec, 0x27, 0xb0, 0xae, 0x0f, 0xd4, 0x77, 0x32, 0xcb, 0xc2, 0x86, 0xa1, 0x73, 0xfc, 0x92, 0xb0, 0x0f, 0xb4, 0xba, 0x68, 0x24, 0x64, 0x7c, 0xd9, 0x3c, 0x85, 0xc1 } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSAES-OAEP Encryption Example 7.2", - /* Message to be encrypted */ - 31, - { 0x1d, 0x9b, 0x2e, 0x22, 0x23, 0xd9, 0xbc, 0x13, 0xbf, 0xb9, 0xf1, 0x62, 0xce, 0x73, 0x5d, 0xb4, 0x8b, 0xa7, 0xc6, 0x8f, 0x68, 0x22, 0xa0, 0xa1, 0xa7, 0xb6, 0xae, 0x16, 0x58, 0x34, 0xe7 } -, - /* Seed */ - 20, - { 0x3a, 0x9c, 0x3c, 0xec, 0x7b, 0x84, 0xf9, 0xbd, 0x3a, 0xde, 0xcb, 0xc6, 0x73, 0xec, 0x99, 0xd5, 0x4b, 0x22, 0xbc, 0x9b } -, - /* Encryption */ - 129, - { 0x10, 0x52, 0xed, 0x39, 0x7b, 0x2e, 0x01, 0xe1, 0xd0, 0xee, 0x1c, 0x50, 0xbf, 0x24, 0x36, 0x3f, 0x95, 0xe5, 0x04, 0xf4, 0xa0, 0x34, 0x34, 0xa0, 0x8f, 0xd8, 0x22, 0x57, 0x4e, 0xd6, 0xb9, 0x73, 0x6e, 0xdb, 0xb5, 0xf3, 0x90, 0xdb, 0x10, 0x32, 0x14, 0x79, 0xa8, 0xa1, 0x39, 0x35, 0x0e, 0x2b, 0xd4, 0x97, 0x7c, 0x37, 0x78, 0xef, 0x33, 0x1f, 0x3e, 0x78, 0xae, 0x11, 0x8b, 0x26, 0x84, 0x51, 0xf2, 0x0a, 0x2f, 0x01, 0xd4, 0x71, 0xf5, 0xd5, 0x3c, 0x56, 0x69, 0x37, 0x17, 0x1b, 0x2d, 0xbc, 0x2d, 0x4b, 0xde, 0x45, 0x9a, 0x57, 0x99, 0xf0, 0x37, 0x2d, 0x65, 0x74, 0x23, 0x9b, 0x23, 0x23, 0xd2, 0x45, 0xd0, 0xbb, 0x81, 0xc2, 0x86, 0xb6, 0x3c, 0x89, 0xa3, 0x61, 0x01, 0x73, 0x37, 0xe4, 0x90, 0x2f, 0x88, 0xa4, 0x67, 0xf4, 0xc7, 0xf2, 0x44, 0xbf, 0xd5, 0xab, 0x46, 0x43, 0x7f, 0xf3, 0xb6 } - -} -, -{ - "RSAES-OAEP Encryption Example 7.3", - /* Message to be encrypted */ - 3, - { 0xd9, 0x76, 0xfc } -, - /* Seed */ - 20, - { 0x76, 0xa7, 0x5e, 0x5b, 0x61, 0x57, 0xa5, 0x56, 0xcf, 0x88, 0x84, 0xbb, 0x2e, 0x45, 0xc2, 0x93, 0xdd, 0x54, 0x5c, 0xf5 } -, - /* Encryption */ - 129, - { 0x21, 0x55, 0xcd, 0x84, 0x3f, 0xf2, 0x4a, 0x4e, 0xe8, 0xba, 0xdb, 0x76, 0x94, 0x26, 0x00, 0x28, 0xa4, 0x90, 0x81, 0x3b, 0xa8, 0xb3, 0x69, 0xa4, 0xcb, 0xf1, 0x06, 0xec, 0x14, 0x8e, 0x52, 0x98, 0x70, 0x7f, 0x59, 0x65, 0xbe, 0x7d, 0x10, 0x1c, 0x10, 0x49, 0xea, 0x85, 0x84, 0xc2, 0x4c, 0xd6, 0x34, 0x55, 0xad, 0x9c, 0x10, 0x4d, 0x68, 0x62, 0x82, 0xd3, 0xfb, 0x80, 0x3a, 0x4c, 0x11, 0xc1, 0xc2, 0xe9, 0xb9, 0x1c, 0x71, 0x78, 0x80, 0x1d, 0x1b, 0x66, 0x40, 0xf0, 0x03, 0xf5, 0x72, 0x8d, 0xf0, 0x07, 0xb8, 0xa4, 0xcc, 0xc9, 0x2b, 0xce, 0x05, 0xe4, 0x1a, 0x27, 0x27, 0x8d, 0x7c, 0x85, 0x01, 0x8c, 0x52, 0x41, 0x43, 0x13, 0xa5, 0x07, 0x77, 0x89, 0x00, 0x1d, 0x4f, 0x01, 0x91, 0x0b, 0x72, 0xaa, 0xd0, 0x5d, 0x22, 0x0a, 0xa1, 0x4a, 0x58, 0x73, 0x3a, 0x74, 0x89, 0xbc, 0x54, 0x55, 0x6b } - -} -, -{ - "RSAES-OAEP Encryption Example 7.4", - /* Message to be encrypted */ - 62, - { 0xd4, 0x73, 0x86, 0x23, 0xdf, 0x22, 0x3a, 0xa4, 0x38, 0x43, 0xdf, 0x84, 0x67, 0x53, 0x4c, 0x41, 0xd0, 0x13, 0xe0, 0xc8, 0x03, 0xc6, 0x24, 0xe2, 0x63, 0x66, 0x6b, 0x23, 0x9b, 0xde, 0x40, 0xa5, 0xf2, 0x9a, 0xeb, 0x8d, 0xe7, 0x9e, 0x3d, 0xaa, 0x61, 0xdd, 0x03, 0x70, 0xf4, 0x9b, 0xd4, 0xb0, 0x13, 0x83, 0x4b, 0x98, 0x21, 0x2a, 0xef, 0x6b, 0x1c, 0x5e, 0xe3, 0x73, 0xb3, 0xcb } -, - /* Seed */ - 20, - { 0x78, 0x66, 0x31, 0x4a, 0x6a, 0xd6, 0xf2, 0xb2, 0x50, 0xa3, 0x59, 0x41, 0xdb, 0x28, 0xf5, 0x86, 0x4b, 0x58, 0x58, 0x59 } -, - /* Encryption */ - 129, - { 0x0a, 0xb1, 0x4c, 0x37, 0x3a, 0xeb, 0x7d, 0x43, 0x28, 0xd0, 0xaa, 0xad, 0x8c, 0x09, 0x4d, 0x88, 0xb9, 0xeb, 0x09, 0x8b, 0x95, 0xf2, 0x10, 0x54, 0xa2, 0x90, 0x82, 0x52, 0x2b, 0xe7, 0xc2, 0x7a, 0x31, 0x28, 0x78, 0xb6, 0x37, 0x91, 0x7e, 0x3d, 0x81, 0x9e, 0x6c, 0x3c, 0x56, 0x8d, 0xb5, 0xd8, 0x43, 0x80, 0x2b, 0x06, 0xd5, 0x1d, 0x9e, 0x98, 0xa2, 0xbe, 0x0b, 0xf4, 0x0c, 0x03, 0x14, 0x23, 0xb0, 0x0e, 0xdf, 0xbf, 0xf8, 0x32, 0x0e, 0xfb, 0x91, 0x71, 0xbd, 0x20, 0x44, 0x65, 0x3a, 0x4c, 0xb9, 0xc5, 0x12, 0x2f, 0x6c, 0x65, 0xe8, 0x3c, 0xda, 0x2e, 0xc3, 0xc1, 0x26, 0x02, 0x7a, 0x9c, 0x1a, 0x56, 0xba, 0x87, 0x4d, 0x0f, 0xea, 0x23, 0xf3, 0x80, 0xb8, 0x2c, 0xf2, 0x40, 0xb8, 0xcf, 0x54, 0x00, 0x04, 0x75, 0x8c, 0x4c, 0x77, 0xd9, 0x34, 0x15, 0x7a, 0x74, 0xf3, 0xfc, 0x12, 0xbf, 0xac } - -} -, -{ - "RSAES-OAEP Encryption Example 7.5", - /* Message to be encrypted */ - 16, - { 0xbb, 0x47, 0x23, 0x1c, 0xa5, 0xea, 0x1d, 0x3a, 0xd4, 0x6c, 0x99, 0x34, 0x5d, 0x9a, 0x8a, 0x61 } -, - /* Seed */ - 20, - { 0xb2, 0x16, 0x6e, 0xd4, 0x72, 0xd5, 0x8d, 0xb1, 0x0c, 0xab, 0x2c, 0x6b, 0x00, 0x0c, 0xcc, 0xf1, 0x0a, 0x7d, 0xc5, 0x09 } -, - /* Encryption */ - 129, - { 0x02, 0x83, 0x87, 0xa3, 0x18, 0x27, 0x74, 0x34, 0x79, 0x8b, 0x4d, 0x97, 0xf4, 0x60, 0x06, 0x8d, 0xf5, 0x29, 0x8f, 0xab, 0xa5, 0x04, 0x1b, 0xa1, 0x17, 0x61, 0xa1, 0xcb, 0x73, 0x16, 0xb2, 0x41, 0x84, 0x11, 0x4e, 0xc5, 0x00, 0x25, 0x7e, 0x25, 0x89, 0xed, 0x3b, 0x60, 0x7a, 0x1e, 0xbb, 0xe9, 0x7a, 0x6c, 0xc2, 0xe0, 0x2b, 0xf1, 0xb6, 0x81, 0xf4, 0x23, 0x12, 0xa3, 0x3b, 0x7a, 0x77, 0xd8, 0xe7, 0x85, 0x5c, 0x4a, 0x6d, 0xe0, 0x3e, 0x3c, 0x04, 0x64, 0x3f, 0x78, 0x6b, 0x91, 0xa2, 0x64, 0xa0, 0xd6, 0x80, 0x5e, 0x2c, 0xea, 0x91, 0xe6, 0x81, 0x77, 0xeb, 0x7a, 0x64, 0xd9, 0x25, 0x5e, 0x4f, 0x27, 0xe7, 0x13, 0xb7, 0xcc, 0xec, 0x00, 0xdc, 0x20, 0x0e, 0xbd, 0x21, 0xc2, 0xea, 0x2b, 0xb8, 0x90, 0xfe, 0xae, 0x49, 0x42, 0xdf, 0x94, 0x1d, 0xc3, 0xf9, 0x78, 0x90, 0xed, 0x34, 0x74, 0x78 } - -} -, -{ - "RSAES-OAEP Encryption Example 7.6", - /* Message to be encrypted */ - 18, - { 0x21, 0x84, 0x82, 0x70, 0x95, 0xd3, 0x5c, 0x3f, 0x86, 0xf6, 0x00, 0xe8, 0xe5, 0x97, 0x54, 0x01, 0x32, 0x96 } -, - /* Seed */ - 20, - { 0x52, 0x67, 0x3b, 0xde, 0x2c, 0xa1, 0x66, 0xc2, 0xaa, 0x46, 0x13, 0x1a, 0xc1, 0xdc, 0x80, 0x8d, 0x67, 0xd7, 0xd3, 0xb1 } -, - /* Encryption */ - 129, - { 0x14, 0xc6, 0x78, 0xa9, 0x4a, 0xd6, 0x05, 0x25, 0xef, 0x39, 0xe9, 0x59, 0xb2, 0xf3, 0xba, 0x5c, 0x09, 0x7a, 0x94, 0xff, 0x91, 0x2b, 0x67, 0xdb, 0xac, 0xe8, 0x05, 0x35, 0xc1, 0x87, 0xab, 0xd4, 0x7d, 0x07, 0x54, 0x20, 0xb1, 0x87, 0x21, 0x52, 0xbb, 0xa0, 0x8f, 0x7f, 0xc3, 0x1f, 0x31, 0x3b, 0xbf, 0x92, 0x73, 0xc9, 0x12, 0xfc, 0x4c, 0x01, 0x49, 0xa9, 0xb0, 0xcf, 0xb7, 0x98, 0x07, 0xe3, 0x46, 0xeb, 0x33, 0x20, 0x69, 0x61, 0x1b, 0xec, 0x0f, 0xf9, 0xbc, 0xd1, 0x68, 0xf1, 0xf7, 0xc3, 0x3e, 0x77, 0x31, 0x3c, 0xea, 0x45, 0x4b, 0x94, 0xe2, 0x54, 0x9e, 0xec, 0xf0, 0x02, 0xe2, 0xac, 0xf7, 0xf6, 0xf2, 0xd2, 0x84, 0x5d, 0x4f, 0xe0, 0xaa, 0xb2, 0xe5, 0xa9, 0x2d, 0xdf, 0x68, 0xc4, 0x80, 0xae, 0x11, 0x24, 0x79, 0x35, 0xd1, 0xf6, 0x25, 0x74, 0x84, 0x22, 0x16, 0xae, 0x67, 0x41, 0x15 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 8: A 1031-bit RSA Key Pair", -{ - /* RSA modulus n */ - 129, - { 0x5b, 0xdf, 0x0e, 0x30, 0xd3, 0x21, 0xdd, 0xa5, 0x14, 0x7f, 0x88, 0x24, 0x08, 0xfa, 0x69, 0x19, 0x54, 0x80, 0xdf, 0x8f, 0x80, 0xd3, 0xf6, 0xe8, 0xbf, 0x58, 0x18, 0x50, 0x4f, 0x36, 0x42, 0x7c, 0xa9, 0xb1, 0xf5, 0x54, 0x0b, 0x9c, 0x65, 0xa8, 0xf6, 0x97, 0x4c, 0xf8, 0x44, 0x7a, 0x24, 0x4d, 0x92, 0x80, 0x20, 0x1b, 0xb4, 0x9f, 0xcb, 0xbe, 0x63, 0x78, 0xd1, 0x94, 0x4c, 0xd2, 0x27, 0xe2, 0x30, 0xf9, 0x6e, 0x3d, 0x10, 0xf8, 0x19, 0xdc, 0xef, 0x27, 0x6c, 0x64, 0xa0, 0x0b, 0x2a, 0x4b, 0x67, 0x01, 0xe7, 0xd0, 0x1d, 0xe5, 0xfa, 0xbd, 0xe3, 0xb1, 0xe9, 0xa0, 0xdf, 0x82, 0xf4, 0x63, 0x13, 0x59, 0xcd, 0x22, 0x66, 0x96, 0x47, 0xfb, 0xb1, 0x71, 0x72, 0x46, 0x13, 0x4e, 0xd7, 0xb4, 0x97, 0xcf, 0xff, 0xbd, 0xc4, 0x2b, 0x59, 0xc7, 0x3a, 0x96, 0xed, 0x90, 0x16, 0x62, 0x12, 0xdf, 0xf7 } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 129, - { 0x0f, 0x7d, 0x1e, 0x9e, 0x5a, 0xaa, 0x25, 0xfd, 0x13, 0xe4, 0xa0, 0x66, 0x3a, 0xe1, 0x44, 0xe0, 0xd1, 0x5f, 0x5c, 0xd1, 0x8b, 0xcd, 0xb0, 0x9d, 0xf2, 0xcc, 0x7e, 0x64, 0xe3, 0xc5, 0xe9, 0x15, 0xad, 0x62, 0x64, 0x53, 0x04, 0x16, 0x1d, 0x09, 0x8c, 0x71, 0x5b, 0xb7, 0xab, 0x8b, 0xd0, 0x1d, 0x07, 0xea, 0xf3, 0xfe, 0xd7, 0xc7, 0xed, 0x08, 0xaf, 0x2a, 0x8a, 0x62, 0xef, 0x44, 0xab, 0x16, 0xb3, 0x20, 0xe1, 0x4a, 0xf7, 0x2a, 0x48, 0xf9, 0x6a, 0xfe, 0x26, 0x2a, 0x0a, 0xe4, 0xcf, 0x65, 0xe6, 0x35, 0xe9, 0x10, 0x79, 0x0c, 0xd4, 0xee, 0x5c, 0xea, 0x76, 0x8a, 0x4b, 0x26, 0x39, 0xf7, 0xe6, 0xf6, 0x77, 0xb3, 0xf0, 0xbb, 0x6b, 0xe3, 0x2b, 0x75, 0x74, 0x7d, 0x89, 0x09, 0x03, 0x6f, 0x02, 0x64, 0xf5, 0x8d, 0x40, 0x1c, 0xdb, 0xa1, 0x31, 0x71, 0x61, 0x57, 0xa7, 0x5e, 0xcf, 0x63, 0x31 } -, - /* Prime p */ - 65, - { 0x0a, 0x02, 0xef, 0x84, 0x48, 0xd9, 0xfa, 0xd8, 0xbb, 0xd0, 0xd0, 0x04, 0xc8, 0xc2, 0xaa, 0x97, 0x51, 0xef, 0x97, 0x21, 0xc1, 0xb0, 0xd0, 0x32, 0x36, 0xa5, 0x4b, 0x0d, 0xf9, 0x47, 0xcb, 0xae, 0xd5, 0xa2, 0x55, 0xee, 0x9e, 0x8e, 0x20, 0xd4, 0x91, 0xea, 0x17, 0x23, 0xfe, 0x09, 0x47, 0x04, 0xa9, 0x76, 0x2e, 0x88, 0xaf, 0xd1, 0x6e, 0xbb, 0x59, 0x94, 0x41, 0x2c, 0xa9, 0x66, 0xdc, 0x4f, 0x9f } -, - /* Prime q */ - 65, - { 0x09, 0x2d, 0x36, 0x2e, 0x7e, 0xd3, 0xa0, 0xbf, 0xd9, 0xe9, 0xfd, 0x0e, 0x6c, 0x03, 0x01, 0xb6, 0xdf, 0x29, 0x15, 0x9c, 0xf5, 0x0c, 0xc8, 0x3b, 0x9b, 0x0c, 0xf4, 0xd6, 0xee, 0xa7, 0x1a, 0x61, 0xe0, 0x02, 0xb4, 0x6e, 0x0a, 0xe9, 0xf2, 0xde, 0x62, 0xd2, 0x5b, 0x5d, 0x74, 0x52, 0xd4, 0x98, 0xb8, 0x1c, 0x9a, 0xc6, 0xfc, 0x58, 0x59, 0x3d, 0x4c, 0x3f, 0xb4, 0xf5, 0xd7, 0x2d, 0xfb, 0xb0, 0xa9 } -, - /* p's CRT exponent dP */ - 65, - { 0x07, 0xc7, 0x14, 0x10, 0xaf, 0x10, 0x39, 0x62, 0xdb, 0x36, 0x74, 0x04, 0xe3, 0x7a, 0xe8, 0x50, 0xba, 0xa4, 0xe9, 0xc2, 0x9d, 0xd9, 0x21, 0x45, 0x81, 0x52, 0x94, 0xa6, 0x7c, 0x7d, 0x1c, 0x6d, 0xed, 0x26, 0x3a, 0xa0, 0x30, 0xa9, 0xb6, 0x33, 0xae, 0x50, 0x30, 0x3e, 0x14, 0x03, 0x5d, 0x1a, 0xf0, 0x14, 0x12, 0x3e, 0xba, 0x68, 0x78, 0x20, 0x30, 0x8d, 0x8e, 0xbc, 0x85, 0xb6, 0x95, 0x7d, 0x7d } -, - /* q's CRT exponent dQ */ - 64, - { 0xae, 0x2c, 0x75, 0x38, 0x0c, 0x02, 0xc0, 0x16, 0xad, 0x05, 0x89, 0x1b, 0x33, 0x01, 0xde, 0x88, 0x1f, 0x28, 0xae, 0x11, 0x71, 0x18, 0x2b, 0x6b, 0x2c, 0x83, 0xbe, 0xa7, 0xc5, 0x15, 0xec, 0xa9, 0xca, 0x29, 0x8c, 0x7b, 0x1c, 0xab, 0x58, 0x17, 0xa5, 0x97, 0x06, 0x8f, 0xc8, 0x50, 0x60, 0xde, 0x4d, 0xa8, 0xa0, 0x16, 0x37, 0x8a, 0xae, 0x43, 0xc7, 0xf9, 0x67, 0xbc, 0xc3, 0x79, 0x04, 0xb9 } -, - /* CRT coefficient qInv */ - 65, - { 0x05, 0x98, 0xd1, 0x05, 0x9e, 0x3a, 0xda, 0x4f, 0x63, 0x20, 0x75, 0x2c, 0x09, 0xd8, 0x05, 0xff, 0x7d, 0x1f, 0x1a, 0xe0, 0xd0, 0x17, 0xae, 0xee, 0xe9, 0xce, 0xfa, 0x0d, 0x7d, 0xd7, 0xff, 0x77, 0x5e, 0x44, 0xb5, 0x78, 0x32, 0x2f, 0x64, 0x05, 0xd6, 0x21, 0x1d, 0xa1, 0x95, 0x19, 0x66, 0x6a, 0xa8, 0x7f, 0xdc, 0x4c, 0xd8, 0xc8, 0x8f, 0x6b, 0x6e, 0x3d, 0x67, 0xe9, 0x61, 0xdc, 0xbb, 0xa3, 0xd0 } - -} -, -{{ - "RSAES-OAEP Encryption Example 8.1", - /* Message to be encrypted */ - 54, - { 0x05, 0x0b, 0x75, 0x5e, 0x5e, 0x68, 0x80, 0xf7, 0xb9, 0xe9, 0xd6, 0x92, 0xa7, 0x4c, 0x37, 0xaa, 0xe4, 0x49, 0xb3, 0x1b, 0xfe, 0xa6, 0xde, 0xff, 0x83, 0x74, 0x7a, 0x89, 0x7f, 0x6c, 0x2c, 0x82, 0x5b, 0xb1, 0xad, 0xbf, 0x85, 0x0a, 0x3c, 0x96, 0x99, 0x4b, 0x5d, 0xe5, 0xb3, 0x3c, 0xbc, 0x7d, 0x4a, 0x17, 0x91, 0x3a, 0x79, 0x67 } -, - /* Seed */ - 20, - { 0x77, 0x06, 0xff, 0xca, 0x1e, 0xcf, 0xb1, 0xeb, 0xee, 0x2a, 0x55, 0xe5, 0xc6, 0xe2, 0x4c, 0xd2, 0x79, 0x7a, 0x41, 0x25 } -, - /* Encryption */ - 129, - { 0x09, 0xb3, 0x68, 0x3d, 0x8a, 0x2e, 0xb0, 0xfb, 0x29, 0x5b, 0x62, 0xed, 0x1f, 0xb9, 0x29, 0x0b, 0x71, 0x44, 0x57, 0xb7, 0x82, 0x53, 0x19, 0xf4, 0x64, 0x78, 0x72, 0xaf, 0x88, 0x9b, 0x30, 0x40, 0x94, 0x72, 0x02, 0x0a, 0xd1, 0x29, 0x12, 0xbf, 0x19, 0xb1, 0x1d, 0x48, 0x19, 0xf4, 0x96, 0x14, 0x82, 0x4f, 0xfd, 0x84, 0xd0, 0x9c, 0x0a, 0x17, 0xe7, 0xd1, 0x73, 0x09, 0xd1, 0x29, 0x19, 0x79, 0x04, 0x10, 0xaa, 0x29, 0x95, 0x69, 0x9f, 0x6a, 0x86, 0xdb, 0xe3, 0x24, 0x2b, 0x5a, 0xcc, 0x23, 0xaf, 0x45, 0x69, 0x10, 0x80, 0xd6, 0xb1, 0xae, 0x81, 0x0f, 0xb3, 0xe3, 0x05, 0x70, 0x87, 0xf0, 0x97, 0x00, 0x92, 0xce, 0x00, 0xbe, 0x95, 0x62, 0xff, 0x40, 0x53, 0xb6, 0x26, 0x2c, 0xe0, 0xca, 0xa9, 0x3e, 0x13, 0x72, 0x3d, 0x2e, 0x3a, 0x5b, 0xa0, 0x75, 0xd4, 0x5f, 0x0d, 0x61, 0xb5, 0x4b, 0x61 } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSAES-OAEP Encryption Example 8.2", - /* Message to be encrypted */ - 63, - { 0x4e, 0xb6, 0x8d, 0xcd, 0x93, 0xca, 0x9b, 0x19, 0xdf, 0x11, 0x1b, 0xd4, 0x36, 0x08, 0xf5, 0x57, 0x02, 0x6f, 0xe4, 0xaa, 0x1d, 0x5c, 0xfa, 0xc2, 0x27, 0xa3, 0xeb, 0x5a, 0xb9, 0x54, 0x8c, 0x18, 0xa0, 0x6d, 0xde, 0xd2, 0x3f, 0x81, 0x82, 0x59, 0x86, 0xb2, 0xfc, 0xd7, 0x11, 0x09, 0xec, 0xef, 0x7e, 0xff, 0x88, 0x87, 0x3f, 0x07, 0x5c, 0x2a, 0xa0, 0xc4, 0x69, 0xf6, 0x9c, 0x92, 0xbc } -, - /* Seed */ - 20, - { 0xa3, 0x71, 0x7d, 0xa1, 0x43, 0xb4, 0xdc, 0xff, 0xbc, 0x74, 0x26, 0x65, 0xa8, 0xfa, 0x95, 0x05, 0x85, 0x54, 0x83, 0x43 } -, - /* Encryption */ - 129, - { 0x2e, 0xcf, 0x15, 0xc9, 0x7c, 0x5a, 0x15, 0xb1, 0x47, 0x6a, 0xe9, 0x86, 0xb3, 0x71, 0xb5, 0x7a, 0x24, 0x28, 0x4f, 0x4a, 0x16, 0x2a, 0x8d, 0x0c, 0x81, 0x82, 0xe7, 0x90, 0x5e, 0x79, 0x22, 0x56, 0xf1, 0x81, 0x2b, 0xa5, 0xf8, 0x3f, 0x1f, 0x7a, 0x13, 0x0e, 0x42, 0xdc, 0xc0, 0x22, 0x32, 0x84, 0x4e, 0xdc, 0x14, 0xa3, 0x1a, 0x68, 0xee, 0x97, 0xae, 0x56, 0x4a, 0x38, 0x3a, 0x34, 0x11, 0x65, 0x64, 0x24, 0xc5, 0xf6, 0x2d, 0xdb, 0x64, 0x60, 0x93, 0xc3, 0x67, 0xbe, 0x1f, 0xcd, 0xa4, 0x26, 0xcf, 0x00, 0xa0, 0x6d, 0x8a, 0xcb, 0x7e, 0x57, 0x77, 0x6f, 0xbb, 0xd8, 0x55, 0xac, 0x3d, 0xf5, 0x06, 0xfc, 0x16, 0xb1, 0xd7, 0xc3, 0xf2, 0x11, 0x0f, 0x3d, 0x80, 0x68, 0xe9, 0x1e, 0x18, 0x63, 0x63, 0x83, 0x1c, 0x84, 0x09, 0x68, 0x0d, 0x8d, 0xa9, 0xec, 0xd8, 0xcf, 0x1f, 0xa2, 0x0e, 0xe3, 0x9d } - -} -, -{ - "RSAES-OAEP Encryption Example 8.3", - /* Message to be encrypted */ - 12, - { 0x86, 0x04, 0xac, 0x56, 0x32, 0x8c, 0x1a, 0xb5, 0xad, 0x91, 0x78, 0x61 } -, - /* Seed */ - 20, - { 0xee, 0x06, 0x20, 0x90, 0x73, 0xcc, 0xa0, 0x26, 0xbb, 0x26, 0x4e, 0x51, 0x85, 0xbf, 0x8c, 0x68, 0xb7, 0x73, 0x9f, 0x86 } -, - /* Encryption */ - 129, - { 0x4b, 0xc8, 0x91, 0x30, 0xa5, 0xb2, 0xda, 0xbb, 0x7c, 0x2f, 0xcf, 0x90, 0xeb, 0x5d, 0x0e, 0xaf, 0x9e, 0x68, 0x1b, 0x71, 0x46, 0xa3, 0x8f, 0x31, 0x73, 0xa3, 0xd9, 0xcf, 0xec, 0x52, 0xea, 0x9e, 0x0a, 0x41, 0x93, 0x2e, 0x64, 0x8a, 0x9d, 0x69, 0x34, 0x4c, 0x50, 0xda, 0x76, 0x3f, 0x51, 0xa0, 0x3c, 0x95, 0x76, 0x21, 0x31, 0xe8, 0x05, 0x22, 0x54, 0xdc, 0xd2, 0x24, 0x8c, 0xba, 0x40, 0xfd, 0x31, 0x66, 0x77, 0x86, 0xce, 0x05, 0xa2, 0xb7, 0xb5, 0x31, 0xac, 0x9d, 0xac, 0x9e, 0xd5, 0x84, 0xa5, 0x9b, 0x67, 0x7c, 0x1a, 0x8a, 0xed, 0x8c, 0x5d, 0x15, 0xd6, 0x8c, 0x05, 0x56, 0x9e, 0x2b, 0xe7, 0x80, 0xbf, 0x7d, 0xb6, 0x38, 0xfd, 0x2b, 0xfd, 0x2a, 0x85, 0xab, 0x27, 0x68, 0x60, 0xf3, 0x77, 0x73, 0x38, 0xfc, 0xa9, 0x89, 0xff, 0xd7, 0x43, 0xd1, 0x3e, 0xe0, 0x8e, 0x0c, 0xa9, 0x89, 0x3f } - -} -, -{ - "RSAES-OAEP Encryption Example 8.4", - /* Message to be encrypted */ - 34, - { 0xfd, 0xda, 0x5f, 0xbf, 0x6e, 0xc3, 0x61, 0xa9, 0xd9, 0xa4, 0xac, 0x68, 0xaf, 0x21, 0x6a, 0x06, 0x86, 0xf4, 0x38, 0xb1, 0xe0, 0xe5, 0xc3, 0x6b, 0x95, 0x5f, 0x74, 0xe1, 0x07, 0xf3, 0x9c, 0x0d, 0xdd, 0xcc } -, - /* Seed */ - 20, - { 0x99, 0x0a, 0xd5, 0x73, 0xdc, 0x48, 0xa9, 0x73, 0x23, 0x5b, 0x6d, 0x82, 0x54, 0x36, 0x18, 0xf2, 0xe9, 0x55, 0x10, 0x5d } -, - /* Encryption */ - 129, - { 0x2e, 0x45, 0x68, 0x47, 0xd8, 0xfc, 0x36, 0xff, 0x01, 0x47, 0xd6, 0x99, 0x35, 0x94, 0xb9, 0x39, 0x72, 0x27, 0xd5, 0x77, 0x75, 0x2c, 0x79, 0xd0, 0xf9, 0x04, 0xfc, 0xb0, 0x39, 0xd4, 0xd8, 0x12, 0xfe, 0xa6, 0x05, 0xa7, 0xb5, 0x74, 0xdd, 0x82, 0xca, 0x78, 0x6f, 0x93, 0x75, 0x23, 0x48, 0x43, 0x8e, 0xe9, 0xf5, 0xb5, 0x45, 0x49, 0x85, 0xd5, 0xf0, 0xe1, 0x69, 0x9e, 0x3e, 0x7a, 0xd1, 0x75, 0xa3, 0x2e, 0x15, 0xf0, 0x3d, 0xeb, 0x04, 0x2a, 0xb9, 0xfe, 0x1d, 0xd9, 0xdb, 0x1b, 0xb8, 0x6f, 0x8c, 0x08, 0x9c, 0xcb, 0x45, 0xe7, 0xef, 0x0c, 0x5e, 0xe7, 0xca, 0x9b, 0x72, 0x90, 0xca, 0x6b, 0x15, 0xbe, 0xd4, 0x70, 0x39, 0x78, 0x8a, 0x8a, 0x93, 0xff, 0x83, 0xe0, 0xe8, 0xd6, 0x24, 0x4c, 0x71, 0x00, 0x63, 0x62, 0xde, 0xef, 0x69, 0xb6, 0xf4, 0x16, 0xfb, 0x3c, 0x68, 0x43, 0x83, 0xfb, 0xd0 } - -} -, -{ - "RSAES-OAEP Encryption Example 8.5", - /* Message to be encrypted */ - 13, - { 0x4a, 0x5f, 0x49, 0x14, 0xbe, 0xe2, 0x5d, 0xe3, 0xc6, 0x93, 0x41, 0xde, 0x07 } -, - /* Seed */ - 20, - { 0xec, 0xc6, 0x3b, 0x28, 0xf0, 0x75, 0x6f, 0x22, 0xf5, 0x2a, 0xc8, 0xe6, 0xec, 0x12, 0x51, 0xa6, 0xec, 0x30, 0x47, 0x18 } -, - /* Encryption */ - 129, - { 0x1f, 0xb9, 0x35, 0x6f, 0xd5, 0xc4, 0xb1, 0x79, 0x6d, 0xb2, 0xeb, 0xf7, 0xd0, 0xd3, 0x93, 0xcc, 0x81, 0x0a, 0xdf, 0x61, 0x45, 0xde, 0xfc, 0x2f, 0xce, 0x71, 0x4f, 0x79, 0xd9, 0x38, 0x00, 0xd5, 0xe2, 0xac, 0x21, 0x1e, 0xa8, 0xbb, 0xec, 0xca, 0x4b, 0x65, 0x4b, 0x94, 0xc3, 0xb1, 0x8b, 0x30, 0xdd, 0x57, 0x6c, 0xe3, 0x4d, 0xc9, 0x54, 0x36, 0xef, 0x57, 0xa0, 0x94, 0x15, 0x64, 0x59, 0x23, 0x35, 0x9a, 0x5d, 0x7b, 0x41, 0x71, 0xef, 0x22, 0xc2, 0x46, 0x70, 0xf1, 0xb2, 0x29, 0xd3, 0x60, 0x3e, 0x91, 0xf7, 0x66, 0x71, 0xb7, 0xdf, 0x97, 0xe7, 0x31, 0x7c, 0x97, 0x73, 0x44, 0x76, 0xd5, 0xf3, 0xd1, 0x7d, 0x21, 0xcf, 0x82, 0xb5, 0xba, 0x9f, 0x83, 0xdf, 0x2e, 0x58, 0x8d, 0x36, 0x98, 0x4f, 0xd1, 0xb5, 0x84, 0x46, 0x8b, 0xd2, 0x3b, 0x2e, 0x87, 0x5f, 0x32, 0xf6, 0x89, 0x53, 0xf7, 0xb2 } - -} -, -{ - "RSAES-OAEP Encryption Example 8.6", - /* Message to be encrypted */ - 25, - { 0x8e, 0x07, 0xd6, 0x6f, 0x7b, 0x88, 0x0a, 0x72, 0x56, 0x3a, 0xbc, 0xd3, 0xf3, 0x50, 0x92, 0xbc, 0x33, 0x40, 0x9f, 0xb7, 0xf8, 0x8f, 0x24, 0x72, 0xbe } -, - /* Seed */ - 20, - { 0x39, 0x25, 0xc7, 0x1b, 0x36, 0x2d, 0x40, 0xa0, 0xa6, 0xde, 0x42, 0x14, 0x55, 0x79, 0xba, 0x1e, 0x7d, 0xd4, 0x59, 0xfc } -, - /* Encryption */ - 129, - { 0x3a, 0xfd, 0x9c, 0x66, 0x00, 0x14, 0x7b, 0x21, 0x79, 0x8d, 0x81, 0x8c, 0x65, 0x5a, 0x0f, 0x4c, 0x92, 0x12, 0xdb, 0x26, 0xd0, 0xb0, 0xdf, 0xdc, 0x2a, 0x75, 0x94, 0xcc, 0xb3, 0xd2, 0x2f, 0x5b, 0xf1, 0xd7, 0xc3, 0xe1, 0x12, 0xcd, 0x73, 0xfc, 0x7d, 0x50, 0x9c, 0x7a, 0x8b, 0xaf, 0xdd, 0x3c, 0x27, 0x4d, 0x13, 0x99, 0x00, 0x9f, 0x96, 0x09, 0xec, 0x4b, 0xe6, 0x47, 0x7e, 0x45, 0x3f, 0x07, 0x5a, 0xa3, 0x3d, 0xb3, 0x82, 0x87, 0x0c, 0x1c, 0x34, 0x09, 0xae, 0xf3, 0x92, 0xd7, 0x38, 0x6a, 0xe3, 0xa6, 0x96, 0xb9, 0x9a, 0x94, 0xb4, 0xda, 0x05, 0x89, 0x44, 0x7e, 0x95, 0x5d, 0x16, 0xc9, 0x8b, 0x17, 0x60, 0x2a, 0x59, 0xbd, 0x73, 0x62, 0x79, 0xfc, 0xd8, 0xfb, 0x28, 0x0c, 0x44, 0x62, 0xd5, 0x90, 0xbf, 0xa9, 0xbf, 0x13, 0xfe, 0xd5, 0x70, 0xea, 0xfd, 0xe9, 0x73, 0x30, 0xa2, 0xc2, 0x10 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 9: A 1536-bit RSA Key Pair", -{ - /* RSA modulus n */ - 192, - { 0xcf, 0x2c, 0xd4, 0x1e, 0x34, 0xca, 0x3a, 0x72, 0x8e, 0xa5, 0xcb, 0x8a, 0xff, 0x64, 0xc3, 0x6d, 0x27, 0xbd, 0xef, 0x53, 0x64, 0xe3, 0x36, 0xfd, 0x68, 0xd3, 0x12, 0x3c, 0x5a, 0x19, 0x6a, 0x8c, 0x28, 0x70, 0x13, 0xe8, 0x53, 0xd5, 0x15, 0x6d, 0x58, 0xd1, 0x51, 0x95, 0x45, 0x20, 0xfb, 0x4f, 0x6d, 0x7b, 0x17, 0xab, 0xb6, 0x81, 0x77, 0x65, 0x90, 0x9c, 0x57, 0x61, 0x19, 0x65, 0x9d, 0x90, 0x2b, 0x19, 0x06, 0xed, 0x8a, 0x2b, 0x10, 0xc1, 0x55, 0xc2, 0x4d, 0x12, 0x45, 0x28, 0xda, 0xb9, 0xee, 0xae, 0x37, 0x9b, 0xea, 0xc6, 0x6e, 0x4a, 0x41, 0x17, 0x86, 0xdc, 0xb8, 0xfd, 0x00, 0x62, 0xeb, 0xc0, 0x30, 0xde, 0x12, 0x19, 0xa0, 0x4c, 0x2a, 0x8c, 0x1b, 0x7d, 0xd3, 0x13, 0x1e, 0x4d, 0x6b, 0x6c, 0xae, 0xe2, 0xe3, 0x1a, 0x5e, 0xd4, 0x1a, 0xc1, 0x50, 0x9b, 0x2e, 0xf1, 0xee, 0x2a, 0xb1, 0x83, 0x64, 0xbe, 0x56, 0x8c, 0xa9, 0x41, 0xc2, 0x5e, 0xcc, 0x84, 0xff, 0x9d, 0x64, 0x3b, 0x5e, 0xc1, 0xaa, 0xae, 0x10, 0x2a, 0x20, 0xd7, 0x3f, 0x47, 0x9b, 0x78, 0x0f, 0xd6, 0xda, 0x91, 0x07, 0x52, 0x12, 0xd9, 0xea, 0xc0, 0x3a, 0x06, 0x74, 0xd8, 0x99, 0xeb, 0xa2, 0xe4, 0x31, 0xf4, 0xc4, 0x4b, 0x61, 0x5b, 0x6b, 0xa2, 0x23, 0x2b, 0xd4, 0xb3, 0x3b, 0xae, 0xd7, 0x3d, 0x62, 0x5d } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 192, - { 0x19, 0x8c, 0x14, 0x1e, 0x23, 0x71, 0x5a, 0x92, 0xbc, 0xcf, 0x6a, 0x11, 0x9a, 0x5b, 0xc1, 0x13, 0x89, 0x46, 0x8d, 0x28, 0x11, 0xf5, 0x48, 0xd7, 0x27, 0xe1, 0x7b, 0x4a, 0xb0, 0xeb, 0x98, 0x6d, 0x6f, 0x21, 0x1e, 0xfb, 0x53, 0xb7, 0x1f, 0x7c, 0xcb, 0xea, 0x87, 0xee, 0x69, 0xc7, 0x5e, 0xe6, 0x15, 0x00, 0x8c, 0x53, 0x32, 0xde, 0xb5, 0x2b, 0xf3, 0x90, 0xab, 0xdf, 0xbf, 0xe3, 0x7d, 0x72, 0x05, 0x36, 0x81, 0x59, 0xb2, 0x63, 0x8c, 0x1d, 0xe3, 0x26, 0xe2, 0x1d, 0x22, 0x25, 0x1f, 0x0f, 0xb5, 0x84, 0x8b, 0x3b, 0xf1, 0x50, 0x05, 0xd2, 0xa7, 0x43, 0x30, 0xf0, 0xaf, 0xe9, 0x16, 0xee, 0x62, 0xcc, 0xc1, 0x34, 0x4d, 0x1d, 0x83, 0xa7, 0x09, 0xe6, 0x06, 0x76, 0x27, 0x38, 0x40, 0xf7, 0xf3, 0x77, 0x42, 0x4a, 0x5e, 0x0a, 0x4d, 0xa7, 0x5f, 0x01, 0xb3, 0x1f, 0xf7, 0x68, 0x19, 0xcf, 0x9c, 0xbf, 0xdd, 0x21, 0x52, 0x43, 0xc3, 0x91, 0x7c, 0x03, 0xef, 0x38, 0x19, 0x93, 0x12, 0xe5, 0x67, 0xb3, 0xbf, 0x7a, 0xed, 0x3a, 0xb4, 0x57, 0xf3, 0x71, 0xef, 0x8a, 0x14, 0x23, 0xf4, 0x5b, 0x68, 0xc6, 0xe2, 0x82, 0xec, 0x11, 0x1b, 0xba, 0x28, 0x33, 0xb9, 0x87, 0xfd, 0x69, 0xfa, 0xd8, 0x3b, 0xc1, 0xb8, 0xc6, 0x13, 0xc5, 0xe1, 0xea, 0x16, 0xc1, 0x1e, 0xd1, 0x25, 0xea, 0x7e, 0xc1 } -, - /* Prime p */ - 96, - { 0xfc, 0x8d, 0x6c, 0x04, 0xbe, 0xc4, 0xeb, 0x9a, 0x81, 0x92, 0xca, 0x79, 0x00, 0xcb, 0xe5, 0x36, 0xe2, 0xe8, 0xb5, 0x19, 0xde, 0xcf, 0x33, 0xb2, 0x45, 0x97, 0x98, 0xc6, 0x90, 0x9d, 0xf4, 0xf1, 0x76, 0xdb, 0x7d, 0x23, 0x19, 0x0f, 0xc7, 0x2b, 0x88, 0x65, 0xa7, 0x18, 0xaf, 0x89, 0x5f, 0x1b, 0xcd, 0x91, 0x45, 0x29, 0x80, 0x27, 0x42, 0x3b, 0x60, 0x5e, 0x70, 0xa4, 0x7c, 0xf5, 0x83, 0x90, 0xa8, 0xc3, 0xe8, 0x8f, 0xc8, 0xc4, 0x8e, 0x8b, 0x32, 0xe3, 0xda, 0x21, 0x0d, 0xfb, 0xe3, 0xe8, 0x81, 0xea, 0x56, 0x74, 0xb6, 0xa3, 0x48, 0xc2, 0x1e, 0x93, 0xf9, 0xe5, 0x5e, 0xa6, 0x5e, 0xfd } -, - /* Prime q */ - 96, - { 0xd2, 0x00, 0xd4, 0x5e, 0x78, 0x8a, 0xac, 0xea, 0x60, 0x6a, 0x40, 0x1d, 0x04, 0x60, 0xf8, 0x7d, 0xd5, 0xc1, 0x02, 0x7e, 0x12, 0xdc, 0x1a, 0x0d, 0x75, 0x86, 0xe8, 0x93, 0x9d, 0x9c, 0xf7, 0x89, 0xb4, 0x0f, 0x51, 0xac, 0x04, 0x42, 0x96, 0x1d, 0xe7, 0xd2, 0x1c, 0xc2, 0x1e, 0x05, 0xc8, 0x31, 0x55, 0xc1, 0xf2, 0xaa, 0x91, 0x93, 0x38, 0x7c, 0xfd, 0xf9, 0x56, 0xcb, 0x48, 0xd1, 0x53, 0xba, 0x27, 0x04, 0x06, 0xf9, 0xbb, 0xba, 0x53, 0x7d, 0x49, 0x87, 0xd9, 0xe2, 0xf9, 0x94, 0x2d, 0x7a, 0x14, 0xcb, 0xff, 0xfe, 0xa7, 0x4f, 0xec, 0xdd, 0xa9, 0x28, 0xd2, 0x3e, 0x25, 0x9f, 0x5e, 0xe1 } -, - /* p's CRT exponent dP */ - 96, - { 0xdb, 0x16, 0x80, 0x2f, 0x79, 0xa2, 0xf0, 0xd4, 0x5f, 0x35, 0x8d, 0x69, 0xfd, 0x33, 0xe4, 0x4b, 0x81, 0xfa, 0xe8, 0x28, 0x62, 0x2e, 0x93, 0xa5, 0x42, 0x53, 0xe9, 0x97, 0xd0, 0x1b, 0x07, 0x43, 0x75, 0x9d, 0xa0, 0xe8, 0x12, 0xb4, 0xaa, 0x4e, 0x6c, 0x8b, 0xea, 0xb2, 0x32, 0x8d, 0x54, 0x31, 0x95, 0x5a, 0x41, 0x8a, 0x67, 0xff, 0x26, 0xa8, 0xc5, 0xc8, 0x07, 0xa5, 0xda, 0x35, 0x4e, 0x05, 0xef, 0x31, 0xcc, 0x8c, 0xf7, 0x58, 0xf4, 0x63, 0x73, 0x29, 0x50, 0xb0, 0x3e, 0x26, 0x57, 0x26, 0xfb, 0x94, 0xe3, 0x9d, 0x6a, 0x57, 0x2a, 0x26, 0x24, 0x4a, 0xb0, 0x8d, 0xb7, 0x57, 0x52, 0xad } -, - /* q's CRT exponent dQ */ - 96, - { 0xa0, 0xa3, 0x17, 0xcf, 0xe7, 0xdf, 0x14, 0x23, 0xf8, 0x7a, 0x6d, 0xee, 0x84, 0x51, 0xf4, 0xe2, 0xb4, 0xa6, 0x7e, 0x54, 0x97, 0xf2, 0x9b, 0x4f, 0x1e, 0x4e, 0x83, 0x0b, 0x9f, 0xad, 0xd9, 0x40, 0x11, 0x67, 0x02, 0x6f, 0x55, 0x96, 0xe5, 0xa3, 0x9c, 0x97, 0x81, 0x7e, 0x0f, 0x5f, 0x16, 0xe2, 0x7e, 0x19, 0xec, 0x99, 0x02, 0xe0, 0x1d, 0x7e, 0xa6, 0xfb, 0x9a, 0xa3, 0xc7, 0x60, 0xaf, 0xee, 0x1e, 0x38, 0x1b, 0x69, 0xde, 0x6a, 0xc9, 0xc0, 0x75, 0x85, 0xa0, 0x6a, 0xd9, 0xc4, 0xba, 0x00, 0xbf, 0x75, 0xc8, 0xad, 0x2f, 0xa8, 0x98, 0xa4, 0x79, 0xe8, 0x0a, 0xe2, 0x94, 0xfe, 0xd2, 0xa1 } -, - /* CRT coefficient qInv */ - 96, - { 0x0b, 0x21, 0xf3, 0x35, 0xc3, 0x53, 0x34, 0x2e, 0xb4, 0x4c, 0x3a, 0xa2, 0x44, 0x45, 0x78, 0x0c, 0x2d, 0x65, 0x5b, 0x94, 0x01, 0x74, 0xca, 0xe3, 0x8c, 0x7c, 0x8a, 0x4e, 0x64, 0x93, 0xc0, 0xba, 0x9f, 0xd3, 0x03, 0x74, 0x82, 0x67, 0xb0, 0x83, 0xb9, 0xa7, 0xa6, 0xcb, 0x61, 0xe4, 0x2d, 0xb3, 0x62, 0xb8, 0xc9, 0x89, 0x6d, 0xb7, 0x06, 0x4e, 0x02, 0xad, 0x5a, 0xe6, 0x15, 0x87, 0xda, 0x15, 0xb4, 0x64, 0x9c, 0x90, 0x59, 0x49, 0x09, 0xfe, 0xb3, 0x7d, 0xbc, 0xb6, 0x54, 0xbe, 0xb7, 0x26, 0x8e, 0xc8, 0x01, 0xe5, 0xa8, 0xb4, 0xaa, 0x39, 0x11, 0xbe, 0xbd, 0x88, 0x54, 0x2f, 0x05, 0xbe } - -} -, -{{ - "RSAES-OAEP Encryption Example 9.1", - /* Message to be encrypted */ - 61, - { 0xf7, 0x35, 0xfd, 0x55, 0xba, 0x92, 0x59, 0x2c, 0x3b, 0x52, 0xb8, 0xf9, 0xc4, 0xf6, 0x9a, 0xaa, 0x1c, 0xbe, 0xf8, 0xfe, 0x88, 0xad, 0xd0, 0x95, 0x59, 0x54, 0x12, 0x46, 0x7f, 0x9c, 0xf4, 0xec, 0x0b, 0x89, 0x6c, 0x59, 0xed, 0xa1, 0x62, 0x10, 0xe7, 0x54, 0x9c, 0x8a, 0xbb, 0x10, 0xcd, 0xbc, 0x21, 0xa1, 0x2e, 0xc9, 0xb6, 0xb5, 0xb8, 0xfd, 0x2f, 0x10, 0x39, 0x9e, 0xb6 } -, - /* Seed */ - 20, - { 0x8e, 0xc9, 0x65, 0xf1, 0x34, 0xa3, 0xec, 0x99, 0x31, 0xe9, 0x2a, 0x1c, 0xa0, 0xdc, 0x81, 0x69, 0xd5, 0xea, 0x70, 0x5c } -, - /* Encryption */ - 192, - { 0x26, 0x7b, 0xcd, 0x11, 0x8a, 0xca, 0xb1, 0xfc, 0x8b, 0xa8, 0x1c, 0x85, 0xd7, 0x30, 0x03, 0xcb, 0x86, 0x10, 0xfa, 0x55, 0xc1, 0xd9, 0x7d, 0xa8, 0xd4, 0x8a, 0x7c, 0x7f, 0x06, 0x89, 0x6a, 0x4d, 0xb7, 0x51, 0xaa, 0x28, 0x42, 0x55, 0xb9, 0xd3, 0x6a, 0xd6, 0x5f, 0x37, 0x65, 0x3d, 0x82, 0x9f, 0x1b, 0x37, 0xf9, 0x7b, 0x80, 0x01, 0x94, 0x25, 0x45, 0xb2, 0xfc, 0x2c, 0x55, 0xa7, 0x37, 0x6c, 0xa7, 0xa1, 0xbe, 0x4b, 0x17, 0x60, 0xc8, 0xe0, 0x5a, 0x33, 0xe5, 0xaa, 0x25, 0x26, 0xb8, 0xd9, 0x8e, 0x31, 0x70, 0x88, 0xe7, 0x83, 0x4c, 0x75, 0x5b, 0x2a, 0x59, 0xb1, 0x26, 0x31, 0xa1, 0x82, 0xc0, 0x5d, 0x5d, 0x43, 0xab, 0x17, 0x79, 0x26, 0x4f, 0x84, 0x56, 0xf5, 0x15, 0xce, 0x57, 0xdf, 0xdf, 0x51, 0x2d, 0x54, 0x93, 0xda, 0xb7, 0xb7, 0x33, 0x8d, 0xc4, 0xb7, 0xd7, 0x8d, 0xb9, 0xc0, 0x91, 0xac, 0x3b, 0xaf, 0x53, 0x7a, 0x69, 0xfc, 0x7f, 0x54, 0x9d, 0x97, 0x9f, 0x0e, 0xff, 0x9a, 0x94, 0xfd, 0xa4, 0x16, 0x9b, 0xd4, 0xd1, 0xd1, 0x9a, 0x69, 0xc9, 0x9e, 0x33, 0xc3, 0xb5, 0x54, 0x90, 0xd5, 0x01, 0xb3, 0x9b, 0x1e, 0xda, 0xe1, 0x18, 0xff, 0x67, 0x93, 0xa1, 0x53, 0x26, 0x15, 0x84, 0xd3, 0xa5, 0xf3, 0x9f, 0x6e, 0x68, 0x2e, 0x3d, 0x17, 0xc8, 0xcd, 0x12, 0x61, 0xfa, 0x72 } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSAES-OAEP Encryption Example 9.2", - /* Message to be encrypted */ - 39, - { 0x81, 0xb9, 0x06, 0x60, 0x50, 0x15, 0xa6, 0x3a, 0xab, 0xe4, 0x2d, 0xdf, 0x11, 0xe1, 0x97, 0x89, 0x12, 0xf5, 0x40, 0x4c, 0x74, 0x74, 0xb2, 0x6d, 0xce, 0x3e, 0xd4, 0x82, 0xbf, 0x96, 0x1e, 0xcc, 0x81, 0x8b, 0xf4, 0x20, 0xc5, 0x46, 0x59 } -, - /* Seed */ - 20, - { 0xec, 0xb1, 0xb8, 0xb2, 0x5f, 0xa5, 0x0c, 0xda, 0xb0, 0x8e, 0x56, 0x04, 0x28, 0x67, 0xf4, 0xaf, 0x58, 0x26, 0xd1, 0x6c } -, - /* Encryption */ - 192, - { 0x93, 0xac, 0x9f, 0x06, 0x71, 0xec, 0x29, 0xac, 0xbb, 0x44, 0x4e, 0xff, 0xc1, 0xa5, 0x74, 0x13, 0x51, 0xd6, 0x0f, 0xdb, 0x0e, 0x39, 0x3f, 0xbf, 0x75, 0x4a, 0xcf, 0x0d, 0xe4, 0x97, 0x61, 0xa1, 0x48, 0x41, 0xdf, 0x77, 0x72, 0xe9, 0xbc, 0x82, 0x77, 0x39, 0x66, 0xa1, 0x58, 0x4c, 0x4d, 0x72, 0xba, 0xea, 0x00, 0x11, 0x8f, 0x83, 0xf3, 0x5c, 0xca, 0x6e, 0x53, 0x7c, 0xbd, 0x4d, 0x81, 0x1f, 0x55, 0x83, 0xb2, 0x97, 0x83, 0xd8, 0xa6, 0xd9, 0x4c, 0xd3, 0x1b, 0xe7, 0x0d, 0x6f, 0x52, 0x6c, 0x10, 0xff, 0x09, 0xc6, 0xfa, 0x7c, 0xe0, 0x69, 0x79, 0x5a, 0x3f, 0xcd, 0x05, 0x11, 0xfd, 0x5f, 0xcb, 0x56, 0x4b, 0xcc, 0x80, 0xea, 0x9c, 0x78, 0xf3, 0x8b, 0x80, 0x01, 0x25, 0x39, 0xd8, 0xa4, 0xdd, 0xf6, 0xfe, 0x81, 0xe9, 0xcd, 0xdb, 0x7f, 0x50, 0xdb, 0xbb, 0xbc, 0xc7, 0xe5, 0xd8, 0x60, 0x97, 0xcc, 0xf4, 0xec, 0x49, 0x18, 0x9f, 0xb8, 0xbf, 0x31, 0x8b, 0xe6, 0xd5, 0xa0, 0x71, 0x5d, 0x51, 0x6b, 0x49, 0xaf, 0x19, 0x12, 0x58, 0xcd, 0x32, 0xdc, 0x83, 0x3c, 0xe6, 0xeb, 0x46, 0x73, 0xc0, 0x3a, 0x19, 0xbb, 0xac, 0xe8, 0x8c, 0xc5, 0x48, 0x95, 0xf6, 0x36, 0xcc, 0x0c, 0x1e, 0xc8, 0x90, 0x96, 0xd1, 0x1c, 0xe2, 0x35, 0xa2, 0x65, 0xca, 0x17, 0x64, 0x23, 0x2a, 0x68, 0x9a, 0xe8 } - -} -, -{ - "RSAES-OAEP Encryption Example 9.3", - /* Message to be encrypted */ - 17, - { 0xfd, 0x32, 0x64, 0x29, 0xdf, 0x9b, 0x89, 0x0e, 0x09, 0xb5, 0x4b, 0x18, 0xb8, 0xf3, 0x4f, 0x1e, 0x24 } -, - /* Seed */ - 20, - { 0xe8, 0x9b, 0xb0, 0x32, 0xc6, 0xce, 0x62, 0x2c, 0xbd, 0xb5, 0x3b, 0xc9, 0x46, 0x60, 0x14, 0xea, 0x77, 0xf7, 0x77, 0xc0 } -, - /* Encryption */ - 192, - { 0x81, 0xeb, 0xdd, 0x95, 0x05, 0x4b, 0x0c, 0x82, 0x2e, 0xf9, 0xad, 0x76, 0x93, 0xf5, 0xa8, 0x7a, 0xdf, 0xb4, 0xb4, 0xc4, 0xce, 0x70, 0xdf, 0x2d, 0xf8, 0x4e, 0xd4, 0x9c, 0x04, 0xda, 0x58, 0xba, 0x5f, 0xc2, 0x0a, 0x19, 0xe1, 0xa6, 0xe8, 0xb7, 0xa3, 0x90, 0x0b, 0x22, 0x79, 0x6d, 0xc4, 0xe8, 0x69, 0xee, 0x6b, 0x42, 0x79, 0x2d, 0x15, 0xa8, 0xec, 0xeb, 0x56, 0xc0, 0x9c, 0x69, 0x91, 0x4e, 0x81, 0x3c, 0xea, 0x8f, 0x69, 0x31, 0xe4, 0xb8, 0xed, 0x6f, 0x42, 0x1a, 0xf2, 0x98, 0xd5, 0x95, 0xc9, 0x7f, 0x47, 0x89, 0xc7, 0xca, 0xa6, 0x12, 0xc7, 0xef, 0x36, 0x09, 0x84, 0xc2, 0x1b, 0x93, 0xed, 0xc5, 0x40, 0x10, 0x68, 0xb5, 0xaf, 0x4c, 0x78, 0xa8, 0x77, 0x1b, 0x98, 0x4d, 0x53, 0xb8, 0xea, 0x8a, 0xdf, 0x2f, 0x6a, 0x7d, 0x4a, 0x0b, 0xa7, 0x6c, 0x75, 0xe1, 0xdd, 0x9f, 0x65, 0x8f, 0x20, 0xde, 0xd4, 0xa4, 0x60, 0x71, 0xd4, 0x6d, 0x77, 0x91, 0xb5, 0x68, 0x03, 0xd8, 0xfe, 0xa7, 0xf0, 0xb0, 0xf8, 0xe4, 0x1a, 0xe3, 0xf0, 0x93, 0x83, 0xa6, 0xf9, 0x58, 0x5f, 0xe7, 0x75, 0x3e, 0xaa, 0xff, 0xd2, 0xbf, 0x94, 0x56, 0x31, 0x08, 0xbe, 0xec, 0xc2, 0x07, 0xbb, 0xb5, 0x35, 0xf5, 0xfc, 0xc7, 0x05, 0xf0, 0xdd, 0xe9, 0xf7, 0x08, 0xc6, 0x2f, 0x49, 0xa9, 0xc9, 0x03, 0x71, 0xd3 } - -} -, -{ - "RSAES-OAEP Encryption Example 9.4", - /* Message to be encrypted */ - 62, - { 0xf1, 0x45, 0x9b, 0x5f, 0x0c, 0x92, 0xf0, 0x1a, 0x0f, 0x72, 0x3a, 0x2e, 0x56, 0x62, 0x48, 0x4d, 0x8f, 0x8c, 0x0a, 0x20, 0xfc, 0x29, 0xda, 0xd6, 0xac, 0xd4, 0x3b, 0xb5, 0xf3, 0xef, 0xfd, 0xf4, 0xe1, 0xb6, 0x3e, 0x07, 0xfd, 0xfe, 0x66, 0x28, 0xd0, 0xd7, 0x4c, 0xa1, 0x9b, 0xf2, 0xd6, 0x9e, 0x4a, 0x0a, 0xbf, 0x86, 0xd2, 0x93, 0x92, 0x5a, 0x79, 0x67, 0x72, 0xf8, 0x08, 0x8e } -, - /* Seed */ - 20, - { 0x60, 0x6f, 0x3b, 0x99, 0xc0, 0xb9, 0xcc, 0xd7, 0x71, 0xea, 0xa2, 0x9e, 0xa0, 0xe4, 0xc8, 0x84, 0xf3, 0x18, 0x9c, 0xcc } -, - /* Encryption */ - 192, - { 0xbc, 0xc3, 0x5f, 0x94, 0xcd, 0xe6, 0x6c, 0xb1, 0x13, 0x66, 0x25, 0xd6, 0x25, 0xb9, 0x44, 0x32, 0xa3, 0x5b, 0x22, 0xf3, 0xd2, 0xfa, 0x11, 0xa6, 0x13, 0xff, 0x0f, 0xca, 0x5b, 0xd5, 0x7f, 0x87, 0xb9, 0x02, 0xcc, 0xdc, 0x1c, 0xd0, 0xae, 0xbc, 0xb0, 0x71, 0x5e, 0xe8, 0x69, 0xd1, 0xd1, 0xfe, 0x39, 0x5f, 0x67, 0x93, 0x00, 0x3f, 0x5e, 0xca, 0x46, 0x50, 0x59, 0xc8, 0x86, 0x60, 0xd4, 0x46, 0xff, 0x5f, 0x08, 0x18, 0x55, 0x20, 0x22, 0x55, 0x7e, 0x38, 0xc0, 0x8a, 0x67, 0xea, 0xd9, 0x91, 0x26, 0x22, 0x54, 0xf1, 0x06, 0x82, 0x97, 0x5e, 0xc5, 0x63, 0x97, 0x76, 0x85, 0x37, 0xf4, 0x97, 0x7a, 0xf6, 0xd5, 0xf6, 0xaa, 0xce, 0xb7, 0xfb, 0x25, 0xde, 0xc5, 0x93, 0x72, 0x30, 0x23, 0x1f, 0xd8, 0x97, 0x8a, 0xf4, 0x91, 0x19, 0xa2, 0x9f, 0x29, 0xe4, 0x24, 0xab, 0x82, 0x72, 0xb4, 0x75, 0x62, 0x79, 0x2d, 0x5c, 0x94, 0xf7, 0x74, 0xb8, 0x82, 0x9d, 0x0b, 0x0d, 0x9f, 0x1a, 0x8c, 0x9e, 0xdd, 0xf3, 0x75, 0x74, 0xd5, 0xfa, 0x24, 0x8e, 0xef, 0xa9, 0xc5, 0x27, 0x1f, 0xc5, 0xec, 0x25, 0x79, 0xc8, 0x1b, 0xdd, 0x61, 0xb4, 0x10, 0xfa, 0x61, 0xfe, 0x36, 0xe4, 0x24, 0x22, 0x1c, 0x11, 0x3a, 0xdd, 0xb2, 0x75, 0x66, 0x4c, 0x80, 0x1d, 0x34, 0xca, 0x8c, 0x63, 0x51, 0xe4, 0xa8, 0x58 } - -} -, -{ - "RSAES-OAEP Encryption Example 9.5", - /* Message to be encrypted */ - 53, - { 0x53, 0xe6, 0xe8, 0xc7, 0x29, 0xd6, 0xf9, 0xc3, 0x19, 0xdd, 0x31, 0x7e, 0x74, 0xb0, 0xdb, 0x8e, 0x4c, 0xcc, 0xa2, 0x5f, 0x3c, 0x83, 0x05, 0x74, 0x6e, 0x13, 0x7a, 0xc6, 0x3a, 0x63, 0xef, 0x37, 0x39, 0xe7, 0xb5, 0x95, 0xab, 0xb9, 0x6e, 0x8d, 0x55, 0xe5, 0x4f, 0x7b, 0xd4, 0x1a, 0xb4, 0x33, 0x37, 0x8f, 0xfb, 0x91, 0x1d } -, - /* Seed */ - 20, - { 0xfc, 0xbc, 0x42, 0x14, 0x02, 0xe9, 0xec, 0xab, 0xc6, 0x08, 0x2a, 0xfa, 0x40, 0xba, 0x5f, 0x26, 0x52, 0x2c, 0x84, 0x0e } -, - /* Encryption */ - 192, - { 0x23, 0x2a, 0xfb, 0xc9, 0x27, 0xfa, 0x08, 0xc2, 0xf6, 0xa2, 0x7b, 0x87, 0xd4, 0xa5, 0xcb, 0x09, 0xc0, 0x7d, 0xc2, 0x6f, 0xae, 0x73, 0xd7, 0x3a, 0x90, 0x55, 0x88, 0x39, 0xf4, 0xfd, 0x66, 0xd2, 0x81, 0xb8, 0x7e, 0xc7, 0x34, 0xbc, 0xe2, 0x37, 0xba, 0x16, 0x66, 0x98, 0xed, 0x82, 0x91, 0x06, 0xa7, 0xde, 0x69, 0x42, 0xcd, 0x6c, 0xdc, 0xe7, 0x8f, 0xed, 0x8d, 0x2e, 0x4d, 0x81, 0x42, 0x8e, 0x66, 0x49, 0x0d, 0x03, 0x62, 0x64, 0xce, 0xf9, 0x2a, 0xf9, 0x41, 0xd3, 0xe3, 0x50, 0x55, 0xfe, 0x39, 0x81, 0xe1, 0x4d, 0x29, 0xcb, 0xb9, 0xa4, 0xf6, 0x74, 0x73, 0x06, 0x3b, 0xae, 0xc7, 0x9a, 0x11, 0x79, 0xf5, 0xa1, 0x7c, 0x9c, 0x18, 0x32, 0xf2, 0x83, 0x8f, 0xd7, 0xd5, 0xe5, 0x9b, 0xb9, 0x65, 0x9d, 0x56, 0xdc, 0xe8, 0xa0, 0x19, 0xed, 0xef, 0x1b, 0xb3, 0xac, 0xcc, 0x69, 0x7c, 0xc6, 0xcc, 0x7a, 0x77, 0x8f, 0x60, 0xa0, 0x64, 0xc7, 0xf6, 0xf5, 0xd5, 0x29, 0xc6, 0x21, 0x02, 0x62, 0xe0, 0x03, 0xde, 0x58, 0x3e, 0x81, 0xe3, 0x16, 0x7b, 0x89, 0x97, 0x1f, 0xb8, 0xc0, 0xe1, 0x5d, 0x44, 0xff, 0xfe, 0xf8, 0x9b, 0x53, 0xd8, 0xd6, 0x4d, 0xd7, 0x97, 0xd1, 0x59, 0xb5, 0x6d, 0x2b, 0x08, 0xea, 0x53, 0x07, 0xea, 0x12, 0xc2, 0x41, 0xbd, 0x58, 0xd4, 0xee, 0x27, 0x8a, 0x1f, 0x2e } - -} -, -{ - "RSAES-OAEP Encryption Example 9.6", - /* Message to be encrypted */ - 11, - { 0xb6, 0xb2, 0x8e, 0xa2, 0x19, 0x8d, 0x0c, 0x10, 0x08, 0xbc, 0x64 } -, - /* Seed */ - 20, - { 0x23, 0xaa, 0xde, 0x0e, 0x1e, 0x08, 0xbb, 0x9b, 0x9a, 0x78, 0xd2, 0x30, 0x2a, 0x52, 0xf9, 0xc2, 0x1b, 0x2e, 0x1b, 0xa2 } -, - /* Encryption */ - 192, - { 0x43, 0x8c, 0xc7, 0xdc, 0x08, 0xa6, 0x8d, 0xa2, 0x49, 0xe4, 0x25, 0x05, 0xf8, 0x57, 0x3b, 0xa6, 0x0e, 0x2c, 0x27, 0x73, 0xd5, 0xb2, 0x90, 0xf4, 0xcf, 0x9d, 0xff, 0x71, 0x8e, 0x84, 0x20, 0x81, 0xc3, 0x83, 0xe6, 0x70, 0x24, 0xa0, 0xf2, 0x95, 0x94, 0xea, 0x98, 0x7b, 0x9d, 0x25, 0xe4, 0xb7, 0x38, 0xf2, 0x85, 0x97, 0x0d, 0x19, 0x5a, 0xbb, 0x3a, 0x8c, 0x80, 0x54, 0xe3, 0xd7, 0x9d, 0x6b, 0x9c, 0x9a, 0x83, 0x27, 0xba, 0x59, 0x6f, 0x12, 0x59, 0xe2, 0x71, 0x26, 0x67, 0x47, 0x66, 0x90, 0x7d, 0x8d, 0x58, 0x2f, 0xf3, 0xa8, 0x47, 0x61, 0x54, 0x92, 0x9a, 0xdb, 0x1e, 0x6d, 0x12, 0x35, 0xb2, 0xcc, 0xb4, 0xec, 0x8f, 0x66, 0x3b, 0xa9, 0xcc, 0x67, 0x0a, 0x92, 0xbe, 0xbd, 0x85, 0x3c, 0x8d, 0xbf, 0x69, 0xc6, 0x43, 0x6d, 0x01, 0x6f, 0x61, 0xad, 0xd8, 0x36, 0xe9, 0x47, 0x32, 0x45, 0x04, 0x34, 0x20, 0x7f, 0x9f, 0xd4, 0xc4, 0x3d, 0xec, 0x2a, 0x12, 0xa9, 0x58, 0xef, 0xa0, 0x1e, 0xfe, 0x26, 0x69, 0x89, 0x9b, 0x5e, 0x60, 0x4c, 0x25, 0x5c, 0x55, 0xfb, 0x71, 0x66, 0xde, 0x55, 0x89, 0xe3, 0x69, 0x59, 0x7b, 0xb0, 0x91, 0x68, 0xc0, 0x6d, 0xd5, 0xdb, 0x17, 0x7e, 0x06, 0xa1, 0x74, 0x0e, 0xb2, 0xd5, 0xc8, 0x2f, 0xae, 0xca, 0x6d, 0x92, 0xfc, 0xee, 0x99, 0x31, 0xba, 0x9f } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 10: A 2048-bit RSA Key Pair", -{ - /* RSA modulus n */ - 256, - { 0xae, 0x45, 0xed, 0x56, 0x01, 0xce, 0xc6, 0xb8, 0xcc, 0x05, 0xf8, 0x03, 0x93, 0x5c, 0x67, 0x4d, 0xdb, 0xe0, 0xd7, 0x5c, 0x4c, 0x09, 0xfd, 0x79, 0x51, 0xfc, 0x6b, 0x0c, 0xae, 0xc3, 0x13, 0xa8, 0xdf, 0x39, 0x97, 0x0c, 0x51, 0x8b, 0xff, 0xba, 0x5e, 0xd6, 0x8f, 0x3f, 0x0d, 0x7f, 0x22, 0xa4, 0x02, 0x9d, 0x41, 0x3f, 0x1a, 0xe0, 0x7e, 0x4e, 0xbe, 0x9e, 0x41, 0x77, 0xce, 0x23, 0xe7, 0xf5, 0x40, 0x4b, 0x56, 0x9e, 0x4e, 0xe1, 0xbd, 0xcf, 0x3c, 0x1f, 0xb0, 0x3e, 0xf1, 0x13, 0x80, 0x2d, 0x4f, 0x85, 0x5e, 0xb9, 0xb5, 0x13, 0x4b, 0x5a, 0x7c, 0x80, 0x85, 0xad, 0xca, 0xe6, 0xfa, 0x2f, 0xa1, 0x41, 0x7e, 0xc3, 0x76, 0x3b, 0xe1, 0x71, 0xb0, 0xc6, 0x2b, 0x76, 0x0e, 0xde, 0x23, 0xc1, 0x2a, 0xd9, 0x2b, 0x98, 0x08, 0x84, 0xc6, 0x41, 0xf5, 0xa8, 0xfa, 0xc2, 0x6b, 0xda, 0xd4, 0xa0, 0x33, 0x81, 0xa2, 0x2f, 0xe1, 0xb7, 0x54, 0x88, 0x50, 0x94, 0xc8, 0x25, 0x06, 0xd4, 0x01, 0x9a, 0x53, 0x5a, 0x28, 0x6a, 0xfe, 0xb2, 0x71, 0xbb, 0x9b, 0xa5, 0x92, 0xde, 0x18, 0xdc, 0xf6, 0x00, 0xc2, 0xae, 0xea, 0xe5, 0x6e, 0x02, 0xf7, 0xcf, 0x79, 0xfc, 0x14, 0xcf, 0x3b, 0xdc, 0x7c, 0xd8, 0x4f, 0xeb, 0xbb, 0xf9, 0x50, 0xca, 0x90, 0x30, 0x4b, 0x22, 0x19, 0xa7, 0xaa, 0x06, 0x3a, 0xef, 0xa2, 0xc3, 0xc1, 0x98, 0x0e, 0x56, 0x0c, 0xd6, 0x4a, 0xfe, 0x77, 0x95, 0x85, 0xb6, 0x10, 0x76, 0x57, 0xb9, 0x57, 0x85, 0x7e, 0xfd, 0xe6, 0x01, 0x09, 0x88, 0xab, 0x7d, 0xe4, 0x17, 0xfc, 0x88, 0xd8, 0xf3, 0x84, 0xc4, 0xe6, 0xe7, 0x2c, 0x3f, 0x94, 0x3e, 0x0c, 0x31, 0xc0, 0xc4, 0xa5, 0xcc, 0x36, 0xf8, 0x79, 0xd8, 0xa3, 0xac, 0x9d, 0x7d, 0x59, 0x86, 0x0e, 0xaa, 0xda, 0x6b, 0x83, 0xbb } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 256, - { 0x05, 0x6b, 0x04, 0x21, 0x6f, 0xe5, 0xf3, 0x54, 0xac, 0x77, 0x25, 0x0a, 0x4b, 0x6b, 0x0c, 0x85, 0x25, 0xa8, 0x5c, 0x59, 0xb0, 0xbd, 0x80, 0xc5, 0x64, 0x50, 0xa2, 0x2d, 0x5f, 0x43, 0x8e, 0x59, 0x6a, 0x33, 0x3a, 0xa8, 0x75, 0xe2, 0x91, 0xdd, 0x43, 0xf4, 0x8c, 0xb8, 0x8b, 0x9d, 0x5f, 0xc0, 0xd4, 0x99, 0xf9, 0xfc, 0xd1, 0xc3, 0x97, 0xf9, 0xaf, 0xc0, 0x70, 0xcd, 0x9e, 0x39, 0x8c, 0x8d, 0x19, 0xe6, 0x1d, 0xb7, 0xc7, 0x41, 0x0a, 0x6b, 0x26, 0x75, 0xdf, 0xbf, 0x5d, 0x34, 0x5b, 0x80, 0x4d, 0x20, 0x1a, 0xdd, 0x50, 0x2d, 0x5c, 0xe2, 0xdf, 0xcb, 0x09, 0x1c, 0xe9, 0x99, 0x7b, 0xbe, 0xbe, 0x57, 0x30, 0x6f, 0x38, 0x3e, 0x4d, 0x58, 0x81, 0x03, 0xf0, 0x36, 0xf7, 0xe8, 0x5d, 0x19, 0x34, 0xd1, 0x52, 0xa3, 0x23, 0xe4, 0xa8, 0xdb, 0x45, 0x1d, 0x6f, 0x4a, 0x5b, 0x1b, 0x0f, 0x10, 0x2c, 0xc1, 0x50, 0xe0, 0x2f, 0xee, 0xe2, 0xb8, 0x8d, 0xea, 0x4a, 0xd4, 0xc1, 0xba, 0xcc, 0xb2, 0x4d, 0x84, 0x07, 0x2d, 0x14, 0xe1, 0xd2, 0x4a, 0x67, 0x71, 0xf7, 0x40, 0x8e, 0xe3, 0x05, 0x64, 0xfb, 0x86, 0xd4, 0x39, 0x3a, 0x34, 0xbc, 0xf0, 0xb7, 0x88, 0x50, 0x1d, 0x19, 0x33, 0x03, 0xf1, 0x3a, 0x22, 0x84, 0xb0, 0x01, 0xf0, 0xf6, 0x49, 0xea, 0xf7, 0x93, 0x28, 0xd4, 0xac, 0x5c, 0x43, 0x0a, 0xb4, 0x41, 0x49, 0x20, 0xa9, 0x46, 0x0e, 0xd1, 0xb7, 0xbc, 0x40, 0xec, 0x65, 0x3e, 0x87, 0x6d, 0x09, 0xab, 0xc5, 0x09, 0xae, 0x45, 0xb5, 0x25, 0x19, 0x01, 0x16, 0xa0, 0xc2, 0x61, 0x01, 0x84, 0x82, 0x98, 0x50, 0x9c, 0x1c, 0x3b, 0xf3, 0xa4, 0x83, 0xe7, 0x27, 0x40, 0x54, 0xe1, 0x5e, 0x97, 0x07, 0x50, 0x36, 0xe9, 0x89, 0xf6, 0x09, 0x32, 0x80, 0x7b, 0x52, 0x57, 0x75, 0x1e, 0x79 } -, - /* Prime p */ - 128, - { 0xec, 0xf5, 0xae, 0xcd, 0x1e, 0x55, 0x15, 0xff, 0xfa, 0xcb, 0xd7, 0x5a, 0x28, 0x16, 0xc6, 0xeb, 0xf4, 0x90, 0x18, 0xcd, 0xfb, 0x46, 0x38, 0xe1, 0x85, 0xd6, 0x6a, 0x73, 0x96, 0xb6, 0xf8, 0x09, 0x0f, 0x80, 0x18, 0xc7, 0xfd, 0x95, 0xcc, 0x34, 0xb8, 0x57, 0xdc, 0x17, 0xf0, 0xcc, 0x65, 0x16, 0xbb, 0x13, 0x46, 0xab, 0x4d, 0x58, 0x2c, 0xad, 0xad, 0x7b, 0x41, 0x03, 0x35, 0x23, 0x87, 0xb7, 0x03, 0x38, 0xd0, 0x84, 0x04, 0x7c, 0x9d, 0x95, 0x39, 0xb6, 0x49, 0x62, 0x04, 0xb3, 0xdd, 0x6e, 0xa4, 0x42, 0x49, 0x92, 0x07, 0xbe, 0xc0, 0x1f, 0x96, 0x42, 0x87, 0xff, 0x63, 0x36, 0xc3, 0x98, 0x46, 0x58, 0x33, 0x68, 0x46, 0xf5, 0x6e, 0x46, 0x86, 0x18, 0x81, 0xc1, 0x02, 0x33, 0xd2, 0x17, 0x6b, 0xf1, 0x5a, 0x5e, 0x96, 0xdd, 0xc7, 0x80, 0xbc, 0x86, 0x8a, 0xa7, 0x7d, 0x3c, 0xe7, 0x69 } -, - /* Prime q */ - 128, - { 0xbc, 0x46, 0xc4, 0x64, 0xfc, 0x6a, 0xc4, 0xca, 0x78, 0x3b, 0x0e, 0xb0, 0x8a, 0x3c, 0x84, 0x1b, 0x77, 0x2f, 0x7e, 0x9b, 0x2f, 0x28, 0xba, 0xbd, 0x58, 0x8a, 0xe8, 0x85, 0xe1, 0xa0, 0xc6, 0x1e, 0x48, 0x58, 0xa0, 0xfb, 0x25, 0xac, 0x29, 0x99, 0x90, 0xf3, 0x5b, 0xe8, 0x51, 0x64, 0xc2, 0x59, 0xba, 0x11, 0x75, 0xcd, 0xd7, 0x19, 0x27, 0x07, 0x13, 0x51, 0x84, 0x99, 0x2b, 0x6c, 0x29, 0xb7, 0x46, 0xdd, 0x0d, 0x2c, 0xab, 0xe1, 0x42, 0x83, 0x5f, 0x7d, 0x14, 0x8c, 0xc1, 0x61, 0x52, 0x4b, 0x4a, 0x09, 0x94, 0x6d, 0x48, 0xb8, 0x28, 0x47, 0x3f, 0x1c, 0xe7, 0x6b, 0x6c, 0xb6, 0x88, 0x6c, 0x34, 0x5c, 0x03, 0xe0, 0x5f, 0x41, 0xd5, 0x1b, 0x5c, 0x3a, 0x90, 0xa3, 0xf2, 0x40, 0x73, 0xc7, 0xd7, 0x4a, 0x4f, 0xe2, 0x5d, 0x9c, 0xf2, 0x1c, 0x75, 0x96, 0x0f, 0x3f, 0xc3, 0x86, 0x31, 0x83 } -, - /* p's CRT exponent dP */ - 128, - { 0xc7, 0x35, 0x64, 0x57, 0x1d, 0x00, 0xfb, 0x15, 0xd0, 0x8a, 0x3d, 0xe9, 0x95, 0x7a, 0x50, 0x91, 0x5d, 0x71, 0x26, 0xe9, 0x44, 0x2d, 0xac, 0xf4, 0x2b, 0xc8, 0x2e, 0x86, 0x2e, 0x56, 0x73, 0xff, 0x6a, 0x00, 0x8e, 0xd4, 0xd2, 0xe3, 0x74, 0x61, 0x7d, 0xf8, 0x9f, 0x17, 0xa1, 0x60, 0xb4, 0x3b, 0x7f, 0xda, 0x9c, 0xb6, 0xb6, 0xb7, 0x42, 0x18, 0x60, 0x98, 0x15, 0xf7, 0xd4, 0x5c, 0xa2, 0x63, 0xc1, 0x59, 0xaa, 0x32, 0xd2, 0x72, 0xd1, 0x27, 0xfa, 0xf4, 0xbc, 0x8c, 0xa2, 0xd7, 0x73, 0x78, 0xe8, 0xae, 0xb1, 0x9b, 0x0a, 0xd7, 0xda, 0x3c, 0xb3, 0xde, 0x0a, 0xe7, 0x31, 0x49, 0x80, 0xf6, 0x2b, 0x6d, 0x4b, 0x0a, 0x87, 0x5d, 0x1d, 0xf0, 0x3c, 0x1b, 0xae, 0x39, 0xcc, 0xd8, 0x33, 0xef, 0x6c, 0xd7, 0xe2, 0xd9, 0x52, 0x8b, 0xf0, 0x84, 0xd1, 0xf9, 0x69, 0xe7, 0x94, 0xe9, 0xf6, 0xc1 } -, - /* q's CRT exponent dQ */ - 128, - { 0x26, 0x58, 0xb3, 0x7f, 0x6d, 0xf9, 0xc1, 0x03, 0x0b, 0xe1, 0xdb, 0x68, 0x11, 0x7f, 0xa9, 0xd8, 0x7e, 0x39, 0xea, 0x2b, 0x69, 0x3b, 0x7e, 0x6d, 0x3a, 0x2f, 0x70, 0x94, 0x74, 0x13, 0xee, 0xc6, 0x14, 0x2e, 0x18, 0xfb, 0x8d, 0xfc, 0xb6, 0xac, 0x54, 0x5d, 0x7c, 0x86, 0xa0, 0xad, 0x48, 0xf8, 0x45, 0x71, 0x70, 0xf0, 0xef, 0xb2, 0x6b, 0xc4, 0x81, 0x26, 0xc5, 0x3e, 0xfd, 0x1d, 0x16, 0x92, 0x01, 0x98, 0xdc, 0x2a, 0x11, 0x07, 0xdc, 0x28, 0x2d, 0xb6, 0xa8, 0x0c, 0xd3, 0x06, 0x23, 0x60, 0xba, 0x3f, 0xa1, 0x3f, 0x70, 0xe4, 0x31, 0x2f, 0xf1, 0xa6, 0xcd, 0x6b, 0x8f, 0xc4, 0xcd, 0x9c, 0x5c, 0x3d, 0xb1, 0x7c, 0x6d, 0x6a, 0x57, 0x21, 0x2f, 0x73, 0xae, 0x29, 0xf6, 0x19, 0x32, 0x7b, 0xad, 0x59, 0xb1, 0x53, 0x85, 0x85, 0x85, 0xba, 0x4e, 0x28, 0xb6, 0x0a, 0x62, 0xa4, 0x5e, 0x49 } -, - /* CRT coefficient qInv */ - 128, - { 0x6f, 0x38, 0x52, 0x6b, 0x39, 0x25, 0x08, 0x55, 0x34, 0xef, 0x3e, 0x41, 0x5a, 0x83, 0x6e, 0xde, 0x8b, 0x86, 0x15, 0x8a, 0x2c, 0x7c, 0xbf, 0xec, 0xcb, 0x0b, 0xd8, 0x34, 0x30, 0x4f, 0xec, 0x68, 0x3b, 0xa8, 0xd4, 0xf4, 0x79, 0xc4, 0x33, 0xd4, 0x34, 0x16, 0xe6, 0x32, 0x69, 0x62, 0x3c, 0xea, 0x10, 0x07, 0x76, 0xd8, 0x5a, 0xff, 0x40, 0x1d, 0x3f, 0xff, 0x61, 0x0e, 0xe6, 0x54, 0x11, 0xce, 0x3b, 0x13, 0x63, 0xd6, 0x3a, 0x97, 0x09, 0xee, 0xde, 0x42, 0x64, 0x7c, 0xea, 0x56, 0x14, 0x93, 0xd5, 0x45, 0x70, 0xa8, 0x79, 0xc1, 0x86, 0x82, 0xcd, 0x97, 0x71, 0x0b, 0x96, 0x20, 0x5e, 0xc3, 0x11, 0x17, 0xd7, 0x3b, 0x5f, 0x36, 0x22, 0x3f, 0xad, 0xd6, 0xe8, 0xba, 0x90, 0xdd, 0x7c, 0x0e, 0xe6, 0x1d, 0x44, 0xe1, 0x63, 0x25, 0x1e, 0x20, 0xc7, 0xf6, 0x6e, 0xb3, 0x05, 0x11, 0x7c, 0xb8 } - -} -, -{{ - "RSAES-OAEP Encryption Example 10.1", - /* Message to be encrypted */ - 28, - { 0x8b, 0xba, 0x6b, 0xf8, 0x2a, 0x6c, 0x0f, 0x86, 0xd5, 0xf1, 0x75, 0x6e, 0x97, 0x95, 0x68, 0x70, 0xb0, 0x89, 0x53, 0xb0, 0x6b, 0x4e, 0xb2, 0x05, 0xbc, 0x16, 0x94, 0xee } -, - /* Seed */ - 20, - { 0x47, 0xe1, 0xab, 0x71, 0x19, 0xfe, 0xe5, 0x6c, 0x95, 0xee, 0x5e, 0xaa, 0xd8, 0x6f, 0x40, 0xd0, 0xaa, 0x63, 0xbd, 0x33 } -, - /* Encryption */ - 256, - { 0x53, 0xea, 0x5d, 0xc0, 0x8c, 0xd2, 0x60, 0xfb, 0x3b, 0x85, 0x85, 0x67, 0x28, 0x7f, 0xa9, 0x15, 0x52, 0xc3, 0x0b, 0x2f, 0xeb, 0xfb, 0xa2, 0x13, 0xf0, 0xae, 0x87, 0x70, 0x2d, 0x06, 0x8d, 0x19, 0xba, 0xb0, 0x7f, 0xe5, 0x74, 0x52, 0x3d, 0xfb, 0x42, 0x13, 0x9d, 0x68, 0xc3, 0xc5, 0xaf, 0xee, 0xe0, 0xbf, 0xe4, 0xcb, 0x79, 0x69, 0xcb, 0xf3, 0x82, 0xb8, 0x04, 0xd6, 0xe6, 0x13, 0x96, 0x14, 0x4e, 0x2d, 0x0e, 0x60, 0x74, 0x1f, 0x89, 0x93, 0xc3, 0x01, 0x4b, 0x58, 0xb9, 0xb1, 0x95, 0x7a, 0x8b, 0xab, 0xcd, 0x23, 0xaf, 0x85, 0x4f, 0x4c, 0x35, 0x6f, 0xb1, 0x66, 0x2a, 0xa7, 0x2b, 0xfc, 0xc7, 0xe5, 0x86, 0x55, 0x9d, 0xc4, 0x28, 0x0d, 0x16, 0x0c, 0x12, 0x67, 0x85, 0xa7, 0x23, 0xeb, 0xee, 0xbe, 0xff, 0x71, 0xf1, 0x15, 0x94, 0x44, 0x0a, 0xae, 0xf8, 0x7d, 0x10, 0x79, 0x3a, 0x87, 0x74, 0xa2, 0x39, 0xd4, 0xa0, 0x4c, 0x87, 0xfe, 0x14, 0x67, 0xb9, 0xda, 0xf8, 0x52, 0x08, 0xec, 0x6c, 0x72, 0x55, 0x79, 0x4a, 0x96, 0xcc, 0x29, 0x14, 0x2f, 0x9a, 0x8b, 0xd4, 0x18, 0xe3, 0xc1, 0xfd, 0x67, 0x34, 0x4b, 0x0c, 0xd0, 0x82, 0x9d, 0xf3, 0xb2, 0xbe, 0xc6, 0x02, 0x53, 0x19, 0x62, 0x93, 0xc6, 0xb3, 0x4d, 0x3f, 0x75, 0xd3, 0x2f, 0x21, 0x3d, 0xd4, 0x5c, 0x62, 0x73, 0xd5, 0x05, 0xad, 0xf4, 0xcc, 0xed, 0x10, 0x57, 0xcb, 0x75, 0x8f, 0xc2, 0x6a, 0xee, 0xfa, 0x44, 0x12, 0x55, 0xed, 0x4e, 0x64, 0xc1, 0x99, 0xee, 0x07, 0x5e, 0x7f, 0x16, 0x64, 0x61, 0x82, 0xfd, 0xb4, 0x64, 0x73, 0x9b, 0x68, 0xab, 0x5d, 0xaf, 0xf0, 0xe6, 0x3e, 0x95, 0x52, 0x01, 0x68, 0x24, 0xf0, 0x54, 0xbf, 0x4d, 0x3c, 0x8c, 0x90, 0xa9, 0x7b, 0xb6, 0xb6, 0x55, 0x32, 0x84, 0xeb, 0x42, 0x9f, 0xcc } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSAES-OAEP Encryption Example 10.2", - /* Message to be encrypted */ - 16, - { 0xe6, 0xad, 0x18, 0x1f, 0x05, 0x3b, 0x58, 0xa9, 0x04, 0xf2, 0x45, 0x75, 0x10, 0x37, 0x3e, 0x57 } -, - /* Seed */ - 20, - { 0x6d, 0x17, 0xf5, 0xb4, 0xc1, 0xff, 0xac, 0x35, 0x1d, 0x19, 0x5b, 0xf7, 0xb0, 0x9d, 0x09, 0xf0, 0x9a, 0x40, 0x79, 0xcf } -, - /* Encryption */ - 256, - { 0xa2, 0xb1, 0xa4, 0x30, 0xa9, 0xd6, 0x57, 0xe2, 0xfa, 0x1c, 0x2b, 0xb5, 0xed, 0x43, 0xff, 0xb2, 0x5c, 0x05, 0xa3, 0x08, 0xfe, 0x90, 0x93, 0xc0, 0x10, 0x31, 0x79, 0x5f, 0x58, 0x74, 0x40, 0x01, 0x10, 0x82, 0x8a, 0xe5, 0x8f, 0xb9, 0xb5, 0x81, 0xce, 0x9d, 0xdd, 0xd3, 0xe5, 0x49, 0xae, 0x04, 0xa0, 0x98, 0x54, 0x59, 0xbd, 0xe6, 0xc6, 0x26, 0x59, 0x4e, 0x7b, 0x05, 0xdc, 0x42, 0x78, 0xb2, 0xa1, 0x46, 0x5c, 0x13, 0x68, 0x40, 0x88, 0x23, 0xc8, 0x5e, 0x96, 0xdc, 0x66, 0xc3, 0xa3, 0x09, 0x83, 0xc6, 0x39, 0x66, 0x4f, 0xc4, 0x56, 0x9a, 0x37, 0xfe, 0x21, 0xe5, 0xa1, 0x95, 0xb5, 0x77, 0x6e, 0xed, 0x2d, 0xf8, 0xd8, 0xd3, 0x61, 0xaf, 0x68, 0x6e, 0x75, 0x02, 0x29, 0xbb, 0xd6, 0x63, 0xf1, 0x61, 0x86, 0x8a, 0x50, 0x61, 0x5e, 0x0c, 0x33, 0x7b, 0xec, 0x0c, 0xa3, 0x5f, 0xec, 0x0b, 0xb1, 0x9c, 0x36, 0xeb, 0x2e, 0x0b, 0xbc, 0xc0, 0x58, 0x2f, 0xa1, 0xd9, 0x3a, 0xac, 0xdb, 0x06, 0x10, 0x63, 0xf5, 0x9f, 0x2c, 0xe1, 0xee, 0x43, 0x60, 0x5e, 0x5d, 0x89, 0xec, 0xa1, 0x83, 0xd2, 0xac, 0xdf, 0xe9, 0xf8, 0x10, 0x11, 0x02, 0x2a, 0xd3, 0xb4, 0x3a, 0x3d, 0xd4, 0x17, 0xda, 0xc9, 0x4b, 0x4e, 0x11, 0xea, 0x81, 0xb1, 0x92, 0x96, 0x6e, 0x96, 0x6b, 0x18, 0x20, 0x82, 0xe7, 0x19, 0x64, 0x60, 0x7b, 0x4f, 0x80, 0x02, 0xf3, 0x62, 0x99, 0x84, 0x4a, 0x11, 0xf2, 0xae, 0x0f, 0xae, 0xac, 0x2e, 0xae, 0x70, 0xf8, 0xf4, 0xf9, 0x80, 0x88, 0xac, 0xdc, 0xd0, 0xac, 0x55, 0x6e, 0x9f, 0xcc, 0xc5, 0x11, 0x52, 0x19, 0x08, 0xfa, 0xd2, 0x6f, 0x04, 0xc6, 0x42, 0x01, 0x45, 0x03, 0x05, 0x77, 0x87, 0x58, 0xb0, 0x53, 0x8b, 0xf8, 0xb5, 0xbb, 0x14, 0x4a, 0x82, 0x8e, 0x62, 0x97, 0x95 } - -} -, -{ - "RSAES-OAEP Encryption Example 10.3", - /* Message to be encrypted */ - 26, - { 0x51, 0x0a, 0x2c, 0xf6, 0x0e, 0x86, 0x6f, 0xa2, 0x34, 0x05, 0x53, 0xc9, 0x4e, 0xa3, 0x9f, 0xbc, 0x25, 0x63, 0x11, 0xe8, 0x3e, 0x94, 0x45, 0x4b, 0x41, 0x24 } -, - /* Seed */ - 20, - { 0x38, 0x53, 0x87, 0x51, 0x4d, 0xec, 0xcc, 0x7c, 0x74, 0x0d, 0xd8, 0xcd, 0xf9, 0xda, 0xee, 0x49, 0xa1, 0xcb, 0xfd, 0x54 } -, - /* Encryption */ - 256, - { 0x98, 0x86, 0xc3, 0xe6, 0x76, 0x4a, 0x8b, 0x9a, 0x84, 0xe8, 0x41, 0x48, 0xeb, 0xd8, 0xc3, 0xb1, 0xaa, 0x80, 0x50, 0x38, 0x1a, 0x78, 0xf6, 0x68, 0x71, 0x4c, 0x16, 0xd9, 0xcf, 0xd2, 0xa6, 0xed, 0xc5, 0x69, 0x79, 0xc5, 0x35, 0xd9, 0xde, 0xe3, 0xb4, 0x4b, 0x85, 0xc1, 0x8b, 0xe8, 0x92, 0x89, 0x92, 0x37, 0x17, 0x11, 0x47, 0x22, 0x16, 0xd9, 0x5d, 0xda, 0x98, 0xd2, 0xee, 0x83, 0x47, 0xc9, 0xb1, 0x4d, 0xff, 0xdf, 0xf8, 0x4a, 0xa4, 0x8d, 0x25, 0xac, 0x06, 0xf7, 0xd7, 0xe6, 0x53, 0x98, 0xac, 0x96, 0x7b, 0x1c, 0xe9, 0x09, 0x25, 0xf6, 0x7d, 0xce, 0x04, 0x9b, 0x7f, 0x81, 0x2d, 0xb0, 0x74, 0x29, 0x97, 0xa7, 0x4d, 0x44, 0xfe, 0x81, 0xdb, 0xe0, 0xe7, 0xa3, 0xfe, 0xaf, 0x2e, 0x5c, 0x40, 0xaf, 0x88, 0x8d, 0x55, 0x0d, 0xdb, 0xbe, 0x3b, 0xc2, 0x06, 0x57, 0xa2, 0x95, 0x43, 0xf8, 0xfc, 0x29, 0x13, 0xb9, 0xbd, 0x1a, 0x61, 0xb2, 0xab, 0x22, 0x56, 0xec, 0x40, 0x9b, 0xbd, 0x7d, 0xc0, 0xd1, 0x77, 0x17, 0xea, 0x25, 0xc4, 0x3f, 0x42, 0xed, 0x27, 0xdf, 0x87, 0x38, 0xbf, 0x4a, 0xfc, 0x67, 0x66, 0xff, 0x7a, 0xff, 0x08, 0x59, 0x55, 0x5e, 0xe2, 0x83, 0x92, 0x0f, 0x4c, 0x8a, 0x63, 0xc4, 0xa7, 0x34, 0x0c, 0xba, 0xfd, 0xdc, 0x33, 0x9e, 0xcd, 0xb4, 0xb0, 0x51, 0x50, 0x02, 0xf9, 0x6c, 0x93, 0x2b, 0x5b, 0x79, 0x16, 0x7a, 0xf6, 0x99, 0xc0, 0xad, 0x3f, 0xcc, 0xfd, 0xf0, 0xf4, 0x4e, 0x85, 0xa7, 0x02, 0x62, 0xbf, 0x2e, 0x18, 0xfe, 0x34, 0xb8, 0x50, 0x58, 0x99, 0x75, 0xe8, 0x67, 0xff, 0x96, 0x9d, 0x48, 0xea, 0xbf, 0x21, 0x22, 0x71, 0x54, 0x6c, 0xdc, 0x05, 0xa6, 0x9e, 0xcb, 0x52, 0x6e, 0x52, 0x87, 0x0c, 0x83, 0x6f, 0x30, 0x7b, 0xd7, 0x98, 0x78, 0x0e, 0xde } - -} -, -{ - "RSAES-OAEP Encryption Example 10.4", - /* Message to be encrypted */ - 36, - { 0xbc, 0xdd, 0x19, 0x0d, 0xa3, 0xb7, 0xd3, 0x00, 0xdf, 0x9a, 0x06, 0xe2, 0x2c, 0xaa, 0xe2, 0xa7, 0x5f, 0x10, 0xc9, 0x1f, 0xf6, 0x67, 0xb7, 0xc1, 0x6b, 0xde, 0x8b, 0x53, 0x06, 0x4a, 0x26, 0x49, 0xa9, 0x40, 0x45, 0xc9 } -, - /* Seed */ - 20, - { 0x5c, 0xac, 0xa6, 0xa0, 0xf7, 0x64, 0x16, 0x1a, 0x96, 0x84, 0xf8, 0x5d, 0x92, 0xb6, 0xe0, 0xef, 0x37, 0xca, 0x8b, 0x65 } -, - /* Encryption */ - 256, - { 0x63, 0x18, 0xe9, 0xfb, 0x5c, 0x0d, 0x05, 0xe5, 0x30, 0x7e, 0x16, 0x83, 0x43, 0x6e, 0x90, 0x32, 0x93, 0xac, 0x46, 0x42, 0x35, 0x8a, 0xaa, 0x22, 0x3d, 0x71, 0x63, 0x01, 0x3a, 0xba, 0x87, 0xe2, 0xdf, 0xda, 0x8e, 0x60, 0xc6, 0x86, 0x0e, 0x29, 0xa1, 0xe9, 0x26, 0x86, 0x16, 0x3e, 0xa0, 0xb9, 0x17, 0x5f, 0x32, 0x9c, 0xa3, 0xb1, 0x31, 0xa1, 0xed, 0xd3, 0xa7, 0x77, 0x59, 0xa8, 0xb9, 0x7b, 0xad, 0x6a, 0x4f, 0x8f, 0x43, 0x96, 0xf2, 0x8c, 0xf6, 0xf3, 0x9c, 0xa5, 0x81, 0x12, 0xe4, 0x81, 0x60, 0xd6, 0xe2, 0x03, 0xda, 0xa5, 0x85, 0x6f, 0x3a, 0xca, 0x5f, 0xfe, 0xd5, 0x77, 0xaf, 0x49, 0x94, 0x08, 0xe3, 0xdf, 0xd2, 0x33, 0xe3, 0xe6, 0x04, 0xdb, 0xe3, 0x4a, 0x9c, 0x4c, 0x90, 0x82, 0xde, 0x65, 0x52, 0x7c, 0xac, 0x63, 0x31, 0xd2, 0x9d, 0xc8, 0x0e, 0x05, 0x08, 0xa0, 0xfa, 0x71, 0x22, 0xe7, 0xf3, 0x29, 0xf6, 0xcc, 0xa5, 0xcf, 0xa3, 0x4d, 0x4d, 0x1d, 0xa4, 0x17, 0x80, 0x54, 0x57, 0xe0, 0x08, 0xbe, 0xc5, 0x49, 0xe4, 0x78, 0xff, 0x9e, 0x12, 0xa7, 0x63, 0xc4, 0x77, 0xd1, 0x5b, 0xbb, 0x78, 0xf5, 0xb6, 0x9b, 0xd5, 0x78, 0x30, 0xfc, 0x2c, 0x4e, 0xd6, 0x86, 0xd7, 0x9b, 0xc7, 0x2a, 0x95, 0xd8, 0x5f, 0x88, 0x13, 0x4c, 0x6b, 0x0a, 0xfe, 0x56, 0xa8, 0xcc, 0xfb, 0xc8, 0x55, 0x82, 0x8b, 0xb3, 0x39, 0xbd, 0x17, 0x90, 0x9c, 0xf1, 0xd7, 0x0d, 0xe3, 0x33, 0x5a, 0xe0, 0x70, 0x39, 0x09, 0x3e, 0x60, 0x6d, 0x65, 0x53, 0x65, 0xde, 0x65, 0x50, 0xb8, 0x72, 0xcd, 0x6d, 0xe1, 0xd4, 0x40, 0xee, 0x03, 0x1b, 0x61, 0x94, 0x5f, 0x62, 0x9a, 0xd8, 0xa3, 0x53, 0xb0, 0xd4, 0x09, 0x39, 0xe9, 0x6a, 0x3c, 0x45, 0x0d, 0x2a, 0x8d, 0x5e, 0xee, 0x9f, 0x67, 0x80, 0x93, 0xc8 } - -} -, -{ - "RSAES-OAEP Encryption Example 10.5", - /* Message to be encrypted */ - 23, - { 0xa7, 0xdd, 0x6c, 0x7d, 0xc2, 0x4b, 0x46, 0xf9, 0xdd, 0x5f, 0x1e, 0x91, 0xad, 0xa4, 0xc3, 0xb3, 0xdf, 0x94, 0x7e, 0x87, 0x72, 0x32, 0xa9 } -, - /* Seed */ - 20, - { 0x95, 0xbc, 0xa9, 0xe3, 0x85, 0x98, 0x94, 0xb3, 0xdd, 0x86, 0x9f, 0xa7, 0xec, 0xd5, 0xbb, 0xc6, 0x40, 0x1b, 0xf3, 0xe4 } -, - /* Encryption */ - 256, - { 0x75, 0x29, 0x08, 0x72, 0xcc, 0xfd, 0x4a, 0x45, 0x05, 0x66, 0x0d, 0x65, 0x1f, 0x56, 0xda, 0x6d, 0xaa, 0x09, 0xca, 0x13, 0x01, 0xd8, 0x90, 0x63, 0x2f, 0x6a, 0x99, 0x2f, 0x3d, 0x56, 0x5c, 0xee, 0x46, 0x4a, 0xfd, 0xed, 0x40, 0xed, 0x3b, 0x5b, 0xe9, 0x35, 0x67, 0x14, 0xea, 0x5a, 0xa7, 0x65, 0x5f, 0x4a, 0x13, 0x66, 0xc2, 0xf1, 0x7c, 0x72, 0x8f, 0x6f, 0x2c, 0x5a, 0x5d, 0x1f, 0x8e, 0x28, 0x42, 0x9b, 0xc4, 0xe6, 0xf8, 0xf2, 0xcf, 0xf8, 0xda, 0x8d, 0xc0, 0xe0, 0xa9, 0x80, 0x8e, 0x45, 0xfd, 0x09, 0xea, 0x2f, 0xa4, 0x0c, 0xb2, 0xb6, 0xce, 0x6f, 0xff, 0xf5, 0xc0, 0xe1, 0x59, 0xd1, 0x1b, 0x68, 0xd9, 0x0a, 0x85, 0xf7, 0xb8, 0x4e, 0x10, 0x3b, 0x09, 0xe6, 0x82, 0x66, 0x64, 0x80, 0xc6, 0x57, 0x50, 0x5c, 0x09, 0x29, 0x25, 0x94, 0x68, 0xa3, 0x14, 0x78, 0x6d, 0x74, 0xea, 0xb1, 0x31, 0x57, 0x3c, 0xf2, 0x34, 0xbf, 0x57, 0xdb, 0x7d, 0x9e, 0x66, 0xcc, 0x67, 0x48, 0x19, 0x2e, 0x00, 0x2d, 0xc0, 0xde, 0xea, 0x93, 0x05, 0x85, 0xf0, 0x83, 0x1f, 0xdc, 0xd9, 0xbc, 0x33, 0xd5, 0x1f, 0x79, 0xed, 0x2f, 0xfc, 0x16, 0xbc, 0xf4, 0xd5, 0x98, 0x12, 0xfc, 0xeb, 0xca, 0xa3, 0xf9, 0x06, 0x9b, 0x0e, 0x44, 0x56, 0x86, 0xd6, 0x44, 0xc2, 0x5c, 0xcf, 0x63, 0xb4, 0x56, 0xee, 0x5f, 0xa6, 0xff, 0xe9, 0x6f, 0x19, 0xcd, 0xf7, 0x51, 0xfe, 0xd9, 0xea, 0xf3, 0x59, 0x57, 0x75, 0x4d, 0xbf, 0x4b, 0xfe, 0xa5, 0x21, 0x6a, 0xa1, 0x84, 0x4d, 0xc5, 0x07, 0xcb, 0x2d, 0x08, 0x0e, 0x72, 0x2e, 0xba, 0x15, 0x03, 0x08, 0xc2, 0xb5, 0xff, 0x11, 0x93, 0x62, 0x0f, 0x17, 0x66, 0xec, 0xf4, 0x48, 0x1b, 0xaf, 0xb9, 0x43, 0xbd, 0x29, 0x28, 0x77, 0xf2, 0x13, 0x6c, 0xa4, 0x94, 0xab, 0xa0 } - -} -, -{ - "RSAES-OAEP Encryption Example 10.6", - /* Message to be encrypted */ - 45, - { 0xea, 0xf1, 0xa7, 0x3a, 0x1b, 0x0c, 0x46, 0x09, 0x53, 0x7d, 0xe6, 0x9c, 0xd9, 0x22, 0x8b, 0xbc, 0xfb, 0x9a, 0x8c, 0xa8, 0xc6, 0xc3, 0xef, 0xaf, 0x05, 0x6f, 0xe4, 0xa7, 0xf4, 0x63, 0x4e, 0xd0, 0x0b, 0x7c, 0x39, 0xec, 0x69, 0x22, 0xd7, 0xb8, 0xea, 0x2c, 0x04, 0xeb, 0xac } -, - /* Seed */ - 20, - { 0x9f, 0x47, 0xdd, 0xf4, 0x2e, 0x97, 0xee, 0xa8, 0x56, 0xa9, 0xbd, 0xbc, 0x71, 0x4e, 0xb3, 0xac, 0x22, 0xf6, 0xeb, 0x32 } -, - /* Encryption */ - 256, - { 0x2d, 0x20, 0x7a, 0x73, 0x43, 0x2a, 0x8f, 0xb4, 0xc0, 0x30, 0x51, 0xb3, 0xf7, 0x3b, 0x28, 0xa6, 0x17, 0x64, 0x09, 0x8d, 0xfa, 0x34, 0xc4, 0x7a, 0x20, 0x99, 0x5f, 0x81, 0x15, 0xaa, 0x68, 0x16, 0x67, 0x9b, 0x55, 0x7e, 0x82, 0xdb, 0xee, 0x58, 0x49, 0x08, 0xc6, 0xe6, 0x97, 0x82, 0xd7, 0xde, 0xb3, 0x4d, 0xbd, 0x65, 0xaf, 0x06, 0x3d, 0x57, 0xfc, 0xa7, 0x6a, 0x5f, 0xd0, 0x69, 0x49, 0x2f, 0xd6, 0x06, 0x8d, 0x99, 0x84, 0xd2, 0x09, 0x35, 0x05, 0x65, 0xa6, 0x2e, 0x5c, 0x77, 0xf2, 0x30, 0x38, 0xc1, 0x2c, 0xb1, 0x0c, 0x66, 0x34, 0x70, 0x9b, 0x54, 0x7c, 0x46, 0xf6, 0xb4, 0xa7, 0x09, 0xbd, 0x85, 0xca, 0x12, 0x2d, 0x74, 0x46, 0x5e, 0xf9, 0x77, 0x62, 0xc2, 0x97, 0x63, 0xe0, 0x6d, 0xbc, 0x7a, 0x9e, 0x73, 0x8c, 0x78, 0xbf, 0xca, 0x01, 0x02, 0xdc, 0x5e, 0x79, 0xd6, 0x5b, 0x97, 0x3f, 0x28, 0x24, 0x0c, 0xaa, 0xb2, 0xe1, 0x61, 0xa7, 0x8b, 0x57, 0xd2, 0x62, 0x45, 0x7e, 0xd8, 0x19, 0x5d, 0x53, 0xe3, 0xc7, 0xae, 0x9d, 0xa0, 0x21, 0x88, 0x3c, 0x6d, 0xb7, 0xc2, 0x4a, 0xfd, 0xd2, 0x32, 0x2e, 0xac, 0x97, 0x2a, 0xd3, 0xc3, 0x54, 0xc5, 0xfc, 0xef, 0x1e, 0x14, 0x6c, 0x3a, 0x02, 0x90, 0xfb, 0x67, 0xad, 0xf0, 0x07, 0x06, 0x6e, 0x00, 0x42, 0x8d, 0x2c, 0xec, 0x18, 0xce, 0x58, 0xf9, 0x32, 0x86, 0x98, 0xde, 0xfe, 0xf4, 0xb2, 0xeb, 0x5e, 0xc7, 0x69, 0x18, 0xfd, 0xe1, 0xc1, 0x98, 0xcb, 0xb3, 0x8b, 0x7a, 0xfc, 0x67, 0x62, 0x6a, 0x9a, 0xef, 0xec, 0x43, 0x22, 0xbf, 0xd9, 0x0d, 0x25, 0x63, 0x48, 0x1c, 0x9a, 0x22, 0x1f, 0x78, 0xc8, 0x27, 0x2c, 0x82, 0xd1, 0xb6, 0x2a, 0xb9, 0x14, 0xe1, 0xc6, 0x9f, 0x6a, 0xf6, 0xef, 0x30, 0xca, 0x52, 0x60, 0xdb, 0x4a, 0x46 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -}; - diff --git a/src/libtomcrypt/notes/rsa-testvectors/oaep-vect.txt b/src/libtomcrypt/notes/rsa-testvectors/oaep-vect.txt deleted file mode 100644 index e92120ce53..0000000000 --- a/src/libtomcrypt/notes/rsa-testvectors/oaep-vect.txt +++ /dev/null @@ -1,2212 +0,0 @@ -========================= -TEST VECTORS FOR RSA-OAEP -========================= - -# This file contains test vectors for the -# RSAES-OAEP encryption scheme as defined in -# PKCS #1 v2.1. 10 RSA keys of different sizes -# have been generated. For each key, 6 random -# messages of length between 1 and 64 octets -# have been RSAES-OAEP encrypted via a random -# seed of length 20 octets. -# -# The underlying hash function is SHA-1; the -# mask generation function is MGF1 with SHA-1 -# as specified in PKCS #1 v2.1. -# -# Integers are represented by strings of octets -# with the leftmost octet being the most -# significant octet. For example, -# -# 9,202,000 = (0x)8c 69 50. -# -# Key lengths: -# -# Key 1: 1024 bits -# Key 2: 1025 bits -# Key 3: 1026 bits -# Key 4: 1027 bits -# Key 5: 1028 bits -# Key 6: 1029 bits -# Key 7: 1030 bits -# Key 8: 1031 bits -# Key 9: 1536 bits -# Key 10: 2048 bits -# ============================================= - -# ================================== -# Example 1: A 1024-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -a8 b3 b2 84 af 8e b5 0b 38 70 34 a8 60 f1 46 c4 -91 9f 31 87 63 cd 6c 55 98 c8 ae 48 11 a1 e0 ab -c4 c7 e0 b0 82 d6 93 a5 e7 fc ed 67 5c f4 66 85 -12 77 2c 0c bc 64 a7 42 c6 c6 30 f5 33 c8 cc 72 -f6 2a e8 33 c4 0b f2 58 42 e9 84 bb 78 bd bf 97 -c0 10 7d 55 bd b6 62 f5 c4 e0 fa b9 84 5c b5 14 -8e f7 39 2d d3 aa ff 93 ae 1e 6b 66 7b b3 d4 24 -76 16 d4 f5 ba 10 d4 cf d2 26 de 88 d3 9f 16 fb - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -53 33 9c fd b7 9f c8 46 6a 65 5c 73 16 ac a8 5c -55 fd 8f 6d d8 98 fd af 11 95 17 ef 4f 52 e8 fd -8e 25 8d f9 3f ee 18 0f a0 e4 ab 29 69 3c d8 3b -15 2a 55 3d 4a c4 d1 81 2b 8b 9f a5 af 0e 7f 55 -fe 73 04 df 41 57 09 26 f3 31 1f 15 c4 d6 5a 73 -2c 48 31 16 ee 3d 3d 2d 0a f3 54 9a d9 bf 7c bf -b7 8a d8 84 f8 4d 5b eb 04 72 4d c7 36 9b 31 de -f3 7d 0c f5 39 e9 cf cd d3 de 65 37 29 ea d5 d1 - -# Prime p: -d3 27 37 e7 26 7f fe 13 41 b2 d5 c0 d1 50 a8 1b -58 6f b3 13 2b ed 2f 8d 52 62 86 4a 9c b9 f3 0a -f3 8b e4 48 59 8d 41 3a 17 2e fb 80 2c 21 ac f1 -c1 1c 52 0c 2f 26 a4 71 dc ad 21 2e ac 7c a3 9d - -# Prime q: -cc 88 53 d1 d5 4d a6 30 fa c0 04 f4 71 f2 81 c7 -b8 98 2d 82 24 a4 90 ed be b3 3d 3e 3d 5c c9 3c -47 65 70 3d 1d d7 91 64 2f 1f 11 6a 0d d8 52 be -24 19 b2 af 72 bf e9 a0 30 e8 60 b0 28 8b 5d 77 - -# p's CRT exponent dP: -0e 12 bf 17 18 e9 ce f5 59 9b a1 c3 88 2f e8 04 -6a 90 87 4e ef ce 8f 2c cc 20 e4 f2 74 1f b0 a3 -3a 38 48 ae c9 c9 30 5f be cb d2 d7 68 19 96 7d -46 71 ac c6 43 1e 40 37 96 8d b3 78 78 e6 95 c1 - -# q's CRT exponent dQ: -95 29 7b 0f 95 a2 fa 67 d0 07 07 d6 09 df d4 fc -05 c8 9d af c2 ef 6d 6e a5 5b ec 77 1e a3 33 73 -4d 92 51 e7 90 82 ec da 86 6e fe f1 3c 45 9e 1a -63 13 86 b7 e3 54 c8 99 f5 f1 12 ca 85 d7 15 83 - -# CRT coefficient qInv: -4f 45 6c 50 24 93 bd c0 ed 2a b7 56 a3 a6 ed 4d -67 35 2a 69 7d 42 16 e9 32 12 b1 27 a6 3d 54 11 -ce 6f a9 8d 5d be fd 73 26 3e 37 28 14 27 43 81 -81 66 ed 7d d6 36 87 dd 2a 8c a1 d2 f4 fb d8 e1 - -# --------------------------------- -# RSAES-OAEP Encryption Example 1.1 -# --------------------------------- - -# Message to be encrypted: -66 28 19 4e 12 07 3d b0 3b a9 4c da 9e f9 53 23 -97 d5 0d ba 79 b9 87 00 4a fe fe 34 - -# Seed: -18 b7 76 ea 21 06 9d 69 77 6a 33 e9 6b ad 48 e1 -dd a0 a5 ef - -# Encryption: -35 4f e6 7b 4a 12 6d 5d 35 fe 36 c7 77 79 1a 3f -7b a1 3d ef 48 4e 2d 39 08 af f7 22 fa d4 68 fb -21 69 6d e9 5d 0b e9 11 c2 d3 17 4f 8a fc c2 01 -03 5f 7b 6d 8e 69 40 2d e5 45 16 18 c2 1a 53 5f -a9 d7 bf c5 b8 dd 9f c2 43 f8 cf 92 7d b3 13 22 -d6 e8 81 ea a9 1a 99 61 70 e6 57 a0 5a 26 64 26 -d9 8c 88 00 3f 84 77 c1 22 70 94 a0 d9 fa 1e 8c -40 24 30 9c e1 ec cc b5 21 00 35 d4 7a c7 2e 8a - -# --------------------------------- -# RSAES-OAEP Encryption Example 1.2 -# --------------------------------- - -# Message to be encrypted: -75 0c 40 47 f5 47 e8 e4 14 11 85 65 23 29 8a c9 -ba e2 45 ef af 13 97 fb e5 6f 9d d5 - -# Seed: -0c c7 42 ce 4a 9b 7f 32 f9 51 bc b2 51 ef d9 25 -fe 4f e3 5f - -# Encryption: -64 0d b1 ac c5 8e 05 68 fe 54 07 e5 f9 b7 01 df -f8 c3 c9 1e 71 6c 53 6f c7 fc ec 6c b5 b7 1c 11 -65 98 8d 4a 27 9e 15 77 d7 30 fc 7a 29 93 2e 3f -00 c8 15 15 23 6d 8d 8e 31 01 7a 7a 09 df 43 52 -d9 04 cd eb 79 aa 58 3a dc c3 1e a6 98 a4 c0 52 -83 da ba 90 89 be 54 91 f6 7c 1a 4e e4 8d c7 4b -bb e6 64 3a ef 84 66 79 b4 cb 39 5a 35 2d 5e d1 -15 91 2d f6 96 ff e0 70 29 32 94 6d 71 49 2b 44 - -# --------------------------------- -# RSAES-OAEP Encryption Example 1.3 -# --------------------------------- - -# Message to be encrypted: -d9 4a e0 83 2e 64 45 ce 42 33 1c b0 6d 53 1a 82 -b1 db 4b aa d3 0f 74 6d c9 16 df 24 d4 e3 c2 45 -1f ff 59 a6 42 3e b0 e1 d0 2d 4f e6 46 cf 69 9d -fd 81 8c 6e 97 b0 51 - -# Seed: -25 14 df 46 95 75 5a 67 b2 88 ea f4 90 5c 36 ee -c6 6f d2 fd - -# Encryption: -42 37 36 ed 03 5f 60 26 af 27 6c 35 c0 b3 74 1b -36 5e 5f 76 ca 09 1b 4e 8c 29 e2 f0 be fe e6 03 -59 5a a8 32 2d 60 2d 2e 62 5e 95 eb 81 b2 f1 c9 -72 4e 82 2e ca 76 db 86 18 cf 09 c5 34 35 03 a4 -36 08 35 b5 90 3b c6 37 e3 87 9f b0 5e 0e f3 26 -85 d5 ae c5 06 7c d7 cc 96 fe 4b 26 70 b6 ea c3 -06 6b 1f cf 56 86 b6 85 89 aa fb 7d 62 9b 02 d8 -f8 62 5c a3 83 36 24 d4 80 0f b0 81 b1 cf 94 eb - -# --------------------------------- -# RSAES-OAEP Encryption Example 1.4 -# --------------------------------- - -# Message to be encrypted: -52 e6 50 d9 8e 7f 2a 04 8b 4f 86 85 21 53 b9 7e -01 dd 31 6f 34 6a 19 f6 7a 85 - -# Seed: -c4 43 5a 3e 1a 18 a6 8b 68 20 43 62 90 a3 7c ef -b8 5d b3 fb - -# Encryption: -45 ea d4 ca 55 1e 66 2c 98 00 f1 ac a8 28 3b 05 -25 e6 ab ae 30 be 4b 4a ba 76 2f a4 0f d3 d3 8e -22 ab ef c6 97 94 f6 eb bb c0 5d db b1 12 16 24 -7d 2f 41 2f d0 fb a8 7c 6e 3a cd 88 88 13 64 6f -d0 e4 8e 78 52 04 f9 c3 f7 3d 6d 82 39 56 27 22 -dd dd 87 71 fe c4 8b 83 a3 1e e6 f5 92 c4 cf d4 -bc 88 17 4f 3b 13 a1 12 aa e3 b9 f7 b8 0e 0f c6 -f7 25 5b a8 80 dc 7d 80 21 e2 2a d6 a8 5f 07 55 - -# --------------------------------- -# RSAES-OAEP Encryption Example 1.5 -# --------------------------------- - -# Message to be encrypted: -8d a8 9f d9 e5 f9 74 a2 9f ef fb 46 2b 49 18 0f -6c f9 e8 02 - -# Seed: -b3 18 c4 2d f3 be 0f 83 fe a8 23 f5 a7 b4 7e d5 -e4 25 a3 b5 - -# Encryption: -36 f6 e3 4d 94 a8 d3 4d aa cb a3 3a 21 39 d0 0a -d8 5a 93 45 a8 60 51 e7 30 71 62 00 56 b9 20 e2 -19 00 58 55 a2 13 a0 f2 38 97 cd cd 73 1b 45 25 -7c 77 7f e9 08 20 2b ef dd 0b 58 38 6b 12 44 ea -0c f5 39 a0 5d 5d 10 32 9d a4 4e 13 03 0f d7 60 -dc d6 44 cf ef 20 94 d1 91 0d 3f 43 3e 1c 7c 6d -d1 8b c1 f2 df 7f 64 3d 66 2f b9 dd 37 ea d9 05 -91 90 f4 fa 66 ca 39 e8 69 c4 eb 44 9c bd c4 39 - -# --------------------------------- -# RSAES-OAEP Encryption Example 1.6 -# --------------------------------- - -# Message to be encrypted: -26 52 10 50 84 42 71 - -# Seed: -e4 ec 09 82 c2 33 6f 3a 67 7f 6a 35 61 74 eb 0c -e8 87 ab c2 - -# Encryption: -42 ce e2 61 7b 1e ce a4 db 3f 48 29 38 6f bd 61 -da fb f0 38 e1 80 d8 37 c9 63 66 df 24 c0 97 b4 -ab 0f ac 6b df 59 0d 82 1c 9f 10 64 2e 68 1a d0 -5b 8d 78 b3 78 c0 f4 6c e2 fa d6 3f 74 e0 ad 3d -f0 6b 07 5d 7e b5 f5 63 6f 8d 40 3b 90 59 ca 76 -1b 5c 62 bb 52 aa 45 00 2e a7 0b aa ce 08 de d2 -43 b9 d8 cb d6 2a 68 ad e2 65 83 2b 56 56 4e 43 -a6 fa 42 ed 19 9a 09 97 69 74 2d f1 53 9e 82 55 - -# ============================================= - -# ================================== -# Example 2: A 1025-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -01 94 7c 7f ce 90 42 5f 47 27 9e 70 85 1f 25 d5 -e6 23 16 fe 8a 1d f1 93 71 e3 e6 28 e2 60 54 3e -49 01 ef 60 81 f6 8c 0b 81 41 19 0d 2a e8 da ba -7d 12 50 ec 6d b6 36 e9 44 ec 37 22 87 7c 7c 1d -0a 67 f1 4b 16 94 c5 f0 37 94 51 a4 3e 49 a3 2d -de 83 67 0b 73 da 91 a1 c9 9b c2 3b 43 6a 60 05 -5c 61 0f 0b af 99 c1 a0 79 56 5b 95 a3 f1 52 66 -32 d1 d4 da 60 f2 0e da 25 e6 53 c4 f0 02 76 6f -45 - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -08 23 f2 0f ad b5 da 89 08 8a 9d 00 89 3e 21 fa -4a 1b 11 fb c9 3c 64 a3 be 0b aa ea 97 fb 3b 93 -c3 ff 71 37 04 c1 9c 96 3c 1d 10 7a ae 99 05 47 -39 f7 9e 02 e1 86 de 86 f8 7a 6d de fe a6 d8 cc -d1 d3 c8 1a 47 bf a7 25 5b e2 06 01 a4 a4 b2 f0 -8a 16 7b 5e 27 9d 71 5b 1b 45 5b dd 7e ab 24 59 -41 d9 76 8b 9a ce fb 3c cd a5 95 2d a3 ce e7 25 -25 b4 50 16 63 a8 ee 15 c9 e9 92 d9 24 62 fe 39 - -# Prime p: -01 59 db de 04 a3 3e f0 6f b6 08 b8 0b 19 0f 4d -3e 22 bc c1 3a c8 e4 a0 81 03 3a bf a4 16 ed b0 -b3 38 aa 08 b5 73 09 ea 5a 52 40 e7 dc 6e 54 37 -8c 69 41 4c 31 d9 7d db 1f 40 6d b3 76 9c c4 1a -43 - -# Prime q: -01 2b 65 2f 30 40 3b 38 b4 09 95 fd 6f f4 1a 1a -cc 8a da 70 37 32 36 b7 20 2d 39 b2 ee 30 cf b4 -6d b0 95 11 f6 f3 07 cc 61 cc 21 60 6c 18 a7 5b -8a 62 f8 22 df 03 1b a0 df 0d af d5 50 6f 56 8b -d7 - -# p's CRT exponent dP: -43 6e f5 08 de 73 65 19 c2 da 4c 58 0d 98 c8 2c -b7 45 2a 3f b5 ef ad c3 b9 c7 78 9a 1b c6 58 4f -79 5a dd bb d3 24 39 c7 46 86 55 2e cb 6c 2c 30 -7a 4d 3a f7 f5 39 ee c1 57 24 8c 7b 31 f1 a2 55 - -# q's CRT exponent dQ: -01 2b 15 a8 9f 3d fb 2b 39 07 3e 73 f0 2b dd 0c -1a 7b 37 9d d4 35 f0 5c dd e2 ef f9 e4 62 94 8b -7c ec 62 ee 90 50 d5 e0 81 6e 07 85 a8 56 b4 91 -08 dc b7 5f 36 83 87 4d 1c a6 32 9a 19 01 30 66 -ff - -# CRT coefficient qInv: -02 70 db 17 d5 91 4b 01 8d 76 11 8b 24 38 9a 73 -50 ec 83 6b 00 63 a2 17 21 23 6f d8 ed b6 d8 9b -51 e7 ee b8 7b 61 1b 71 32 cb 7e a7 35 6c 23 15 -1c 1e 77 51 50 7c 78 6d 9e e1 79 41 70 a8 c8 e8 - -# --------------------------------- -# RSAES-OAEP Encryption Example 2.1 -# --------------------------------- - -# Message to be encrypted: -8f f0 0c aa 60 5c 70 28 30 63 4d 9a 6c 3d 42 c6 -52 b5 8c f1 d9 2f ec 57 0b ee e7 - -# Seed: -8c 40 7b 5e c2 89 9e 50 99 c5 3e 8c e7 93 bf 94 -e7 1b 17 82 - -# Encryption: -01 81 af 89 22 b9 fc b4 d7 9d 92 eb e1 98 15 99 -2f c0 c1 43 9d 8b cd 49 13 98 a0 f4 ad 3a 32 9a -5b d9 38 55 60 db 53 26 83 c8 b7 da 04 e4 b1 2a -ed 6a ac df 47 1c 34 c9 cd a8 91 ad dc c2 df 34 -56 65 3a a6 38 2e 9a e5 9b 54 45 52 57 eb 09 9d -56 2b be 10 45 3f 2b 6d 13 c5 9c 02 e1 0f 1f 8a -bb 5d a0 d0 57 09 32 da cf 2d 09 01 db 72 9d 0f -ef cc 05 4e 70 96 8e a5 40 c8 1b 04 bc ae fe 72 -0e - -# --------------------------------- -# RSAES-OAEP Encryption Example 2.2 -# --------------------------------- - -# Message to be encrypted: -2d - -# Seed: -b6 00 cf 3c 2e 50 6d 7f 16 77 8c 91 0d 3a 8b 00 -3e ee 61 d5 - -# Encryption: -01 87 59 ff 1d f6 3b 27 92 41 05 62 31 44 16 a8 -ae af 2a c6 34 b4 6f 94 0a b8 2d 64 db f1 65 ee -e3 30 11 da 74 9d 4b ab 6e 2f cd 18 12 9c 9e 49 -27 7d 84 53 11 2b 42 9a 22 2a 84 71 b0 70 99 39 -98 e7 58 86 1c 4d 3f 6d 74 9d 91 c4 29 0d 33 2c -7a 4a b3 f7 ea 35 ff 3a 07 d4 97 c9 55 ff 0f fc -95 00 6b 62 c6 d2 96 81 0d 9b fa b0 24 19 6c 79 -34 01 2c 2d f9 78 ef 29 9a ba 23 99 40 cb a1 02 -45 - -# --------------------------------- -# RSAES-OAEP Encryption Example 2.3 -# --------------------------------- - -# Message to be encrypted: -74 fc 88 c5 1b c9 0f 77 af 9d 5e 9a 4a 70 13 3d -4b 4e 0b 34 da 3c 37 c7 ef 8e - -# Seed: -a7 37 68 ae ea a9 1f 9d 8c 1e d6 f9 d2 b6 34 67 -f0 7c ca e3 - -# Encryption: -01 88 02 ba b0 4c 60 32 5e 81 c4 96 23 11 f2 be -7c 2a dc e9 30 41 a0 07 19 c8 8f 95 75 75 f2 c7 -9f 1b 7b c8 ce d1 15 c7 06 b3 11 c0 8a 2d 98 6c -a3 b6 a9 33 6b 14 7c 29 c6 f2 29 40 9d de c6 51 -bd 1f dd 5a 0b 7f 61 0c 99 37 fd b4 a3 a7 62 36 -4b 8b 32 06 b4 ea 48 5f d0 98 d0 8f 63 d4 aa 8b -b2 69 7d 02 7b 75 0c 32 d7 f7 4e af 51 80 d2 e9 -b6 6b 17 cb 2f a5 55 23 bc 28 0d a1 0d 14 be 20 -53 - -# --------------------------------- -# RSAES-OAEP Encryption Example 2.4 -# --------------------------------- - -# Message to be encrypted: -a7 eb 2a 50 36 93 1d 27 d4 e8 91 32 6d 99 69 2f -fa dd a9 bf 7e fd 3e 34 e6 22 c4 ad c0 85 f7 21 -df e8 85 07 2c 78 a2 03 b1 51 73 9b e5 40 fa 8c -15 3a 10 f0 0a - -# Seed: -9a 7b 3b 0e 70 8b d9 6f 81 90 ec ab 4f b9 b2 b3 -80 5a 81 56 - -# Encryption: -00 a4 57 8c bc 17 63 18 a6 38 fb a7 d0 1d f1 57 -46 af 44 d4 f6 cd 96 d7 e7 c4 95 cb f4 25 b0 9c -64 9d 32 bf 88 6d a4 8f ba f9 89 a2 11 71 87 ca -fb 1f b5 80 31 76 90 e3 cc d4 46 92 0b 7a f8 2b -31 db 58 04 d8 7d 01 51 4a cb fa 91 56 e7 82 f8 -67 f6 be d9 44 9e 0e 9a 2c 09 bc ec c6 aa 08 76 -36 96 5e 34 b3 ec 76 6f 2f e2 e4 30 18 a2 fd de -b1 40 61 6a 0e 9d 82 e5 33 10 24 ee 06 52 fc 76 -41 - -# --------------------------------- -# RSAES-OAEP Encryption Example 2.5 -# --------------------------------- - -# Message to be encrypted: -2e f2 b0 66 f8 54 c3 3f 3b dc bb 59 94 a4 35 e7 -3d 6c 6c - -# Seed: -eb 3c eb bc 4a dc 16 bb 48 e8 8c 8a ec 0e 34 af -7f 42 7f d3 - -# Encryption: -00 eb c5 f5 fd a7 7c fd ad 3c 83 64 1a 90 25 e7 -7d 72 d8 a6 fb 33 a8 10 f5 95 0f 8d 74 c7 3e 8d -93 1e 86 34 d8 6a b1 24 62 56 ae 07 b6 00 5b 71 -b7 f2 fb 98 35 12 18 33 1c e6 9b 8f fb dc 9d a0 -8b bc 9c 70 4f 87 6d eb 9d f9 fc 2e c0 65 ca d8 -7f 90 90 b0 7a cc 17 aa 7f 99 7b 27 ac a4 88 06 -e8 97 f7 71 d9 51 41 fe 45 26 d8 a5 30 1b 67 86 -27 ef ab 70 7f d4 0f be bd 6e 79 2a 25 61 3e 7a -ec - -# --------------------------------- -# RSAES-OAEP Encryption Example 2.6 -# --------------------------------- - -# Message to be encrypted: -8a 7f b3 44 c8 b6 cb 2c f2 ef 1f 64 3f 9a 32 18 -f6 e1 9b ba 89 c0 - -# Seed: -4c 45 cf 4d 57 c9 8e 3d 6d 20 95 ad c5 1c 48 9e -b5 0d ff 84 - -# Encryption: -01 08 39 ec 20 c2 7b 90 52 e5 5b ef b9 b7 7e 6f -c2 6e 90 75 d7 a5 43 78 c6 46 ab df 51 e4 45 bd -57 15 de 81 78 9f 56 f1 80 3d 91 70 76 4a 9e 93 -cb 78 79 86 94 02 3e e7 39 3c e0 4b c5 d8 f8 c5 -a5 2c 17 1d 43 83 7e 3a ca 62 f6 09 eb 0a a5 ff -b0 96 0e f0 41 98 dd 75 4f 57 f7 fb e6 ab f7 65 -cf 11 8b 4c a4 43 b2 3b 5a ab 26 6f 95 23 26 ac -45 81 10 06 44 32 5f 8b 72 1a cd 5d 04 ff 14 ef -3a - -# ============================================= - -# ================================== -# Example 3: A 1026-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -02 b5 8f ec 03 9a 86 07 00 a4 d7 b6 46 2f 93 e6 -cd d4 91 16 1d dd 74 f4 e8 10 b4 0e 3c 16 52 00 -6a 5c 27 7b 27 74 c1 13 05 a4 cb ab 5a 78 ef a5 -7e 17 a8 6d f7 a3 fa 36 fc 4b 1d 22 49 f2 2e c7 -c2 dd 6a 46 32 32 ac ce a9 06 d6 6e be 80 b5 70 -4b 10 72 9d a6 f8 33 23 4a bb 5e fd d4 a2 92 cb -fa d3 3b 4d 33 fa 7a 14 b8 c3 97 b5 6e 3a cd 21 -20 34 28 b7 7c df a3 3a 6d a7 06 b3 d8 b0 fc 43 -e9 - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -15 b4 8a 5b 56 83 a9 46 70 e2 3b 57 18 f8 14 fa -0e 13 f8 50 38 f5 07 11 18 2c ba 61 51 05 81 f3 -d2 2c 7e 23 2e f9 37 e2 2e 55 1d 68 b8 6e 2f 8c -b1 aa d8 be 2e 48 8f 5d f7 ef d2 79 e3 f5 68 d4 -ea f3 6f 80 cf 71 41 ac e6 0f cc 91 13 fb 6c 4a -84 1f d5 0b bc 7c 51 2f fc be ff 21 48 7a a8 11 -eb 3c a8 c6 20 05 34 6a 86 de 86 bf a1 d8 a9 48 -fd 3f 34 8c 22 ea ad f3 33 c3 ce 6c e1 32 08 fd - -# Prime p: -01 bf 01 d2 16 d7 35 95 cf 02 70 c2 be b7 8d 40 -a0 d8 44 7d 31 da 91 9a 98 3f 7e ea 78 1b 77 d8 -5f e3 71 b3 e9 37 3e 7b 69 21 7d 31 50 a0 2d 89 -58 de 7f ad 9d 55 51 60 95 8b 44 54 12 7e 0e 7e -af - -# Prime q: -01 8d 33 99 65 81 66 db 38 29 81 6d 7b 29 54 16 -75 9e 9c 91 98 7f 5b 2d 8a ec d6 3b 04 b4 8b d7 -b2 fc f2 29 bb 7f 8a 6d c8 8b a1 3d d2 e3 9a d5 -5b 6d 1a 06 16 07 08 f9 70 0b e8 0b 8f d3 74 4c -e7 - -# p's CRT exponent dP: -06 c0 a2 49 d2 0a 6f 2e e7 5c 88 b4 94 d5 3f 6a -ae 99 aa 42 7c 88 c2 8b 16 3a 76 94 45 e5 f3 90 -cf 40 c2 74 fd 6e a6 32 9a 5c e7 c7 ce 03 a2 15 -83 96 ee 2a 78 45 78 6e 09 e2 88 5a 97 28 e4 e5 - -# q's CRT exponent dQ: -d1 d2 7c 29 fe dd 92 d8 6c 34 8e dd 0c cb fa c1 -4f 74 6e 05 1c e1 d1 81 1d f3 5d 61 f2 ee 1c 97 -d4 bf 28 04 80 2f 64 27 18 7b a8 e9 0a 8a f4 42 -43 b4 07 9b 03 44 5e 60 2e 29 fa 51 93 e6 4f e9 - -# CRT coefficient qInv: -8c b2 f7 56 bd 89 41 b1 d3 b7 70 e5 ad 31 ee 37 -3b 28 ac da 69 ff 9b 6f 40 fe 57 8b 9f 1a fb 85 -83 6f 96 27 d3 7a cf f7 3c 27 79 e6 34 bb 26 01 -1c 2c 8f 7f 33 61 ae 2a 9e a6 5e d6 89 e3 63 9a - -# --------------------------------- -# RSAES-OAEP Encryption Example 3.1 -# --------------------------------- - -# Message to be encrypted: -08 78 20 b5 69 e8 fa 8d - -# Seed: -8c ed 6b 19 62 90 80 57 90 e9 09 07 40 15 e6 a2 -0b 0c 48 94 - -# Encryption: -02 6a 04 85 d9 6a eb d9 6b 43 82 08 50 99 b9 62 -e6 a2 bd ec 3d 90 c8 db 62 5e 14 37 2d e8 5e 2d -5b 7b aa b6 5c 8f af 91 bb 55 04 fb 49 5a fc e5 -c9 88 b3 f6 a5 2e 20 e1 d6 cb d3 56 6c 5c d1 f2 -b8 31 8b b5 42 cc 0e a2 5c 4a ab 99 32 af a2 07 -60 ea dd ec 78 43 96 a0 7e a0 ef 24 d4 e6 f4 d3 -7e 50 52 a7 a3 1e 14 6a a4 80 a1 11 bb e9 26 40 -13 07 e0 0f 41 00 33 84 2b 6d 82 fe 5c e4 df ae -80 - -# --------------------------------- -# RSAES-OAEP Encryption Example 3.2 -# --------------------------------- - -# Message to be encrypted: -46 53 ac af 17 19 60 b0 1f 52 a7 be 63 a3 ab 21 -dc 36 8e c4 3b 50 d8 2e c3 78 1e 04 - -# Seed: -b4 29 1d 65 67 55 08 48 cc 15 69 67 c8 09 ba ab -6c a5 07 f0 - -# Encryption: -02 4d b8 9c 78 02 98 9b e0 78 38 47 86 30 84 94 -1b f2 09 d7 61 98 7e 38 f9 7c b5 f6 f1 bc 88 da -72 a5 0b 73 eb af 11 c8 79 c4 f9 5d f3 7b 85 0b -8f 65 d7 62 2e 25 b1 b8 89 e8 0f e8 0b ac a2 06 -9d 6e 0e 1d 82 99 53 fc 45 90 69 de 98 ea 97 98 -b4 51 e5 57 e9 9a bf 8f e3 d9 cc f9 09 6e bb f3 -e5 25 5d 3b 4e 1c 6d 2e ca df 06 7a 35 9e ea 86 -40 5a cd 47 d5 e1 65 51 7c ca fd 47 d6 db ee 4b -f5 - -# --------------------------------- -# RSAES-OAEP Encryption Example 3.3 -# --------------------------------- - -# Message to be encrypted: -d9 4c d0 e0 8f a4 04 ed 89 - -# Seed: -ce 89 28 f6 05 95 58 25 40 08 ba dd 97 94 fa dc -d2 fd 1f 65 - -# Encryption: -02 39 bc e6 81 03 24 41 52 88 77 d6 d1 c8 bb 28 -aa 3b c9 7f 1d f5 84 56 36 18 99 57 97 68 38 44 -ca 86 66 47 32 f4 be d7 a0 aa b0 83 aa ab fb 72 -38 f5 82 e3 09 58 c2 02 4e 44 e5 70 43 b9 79 50 -fd 54 3d a9 77 c9 0c dd e5 33 7d 61 84 42 f9 9e -60 d7 78 3a b5 9c e6 dd 9d 69 c4 7a d1 e9 62 be -c2 2d 05 89 5c ff 8d 3f 64 ed 52 61 d9 2b 26 78 -51 03 93 48 49 90 ba 3f 7f 06 81 8a e6 ff ce 8a -3a - -# --------------------------------- -# RSAES-OAEP Encryption Example 3.4 -# --------------------------------- - -# Message to be encrypted: -6c c6 41 b6 b6 1e 6f 96 39 74 da d2 3a 90 13 28 -4e f1 - -# Seed: -6e 29 79 f5 2d 68 14 a5 7d 83 b0 90 05 48 88 f1 -19 a5 b9 a3 - -# Encryption: -02 99 4c 62 af d7 6f 49 8b a1 fd 2c f6 42 85 7f -ca 81 f4 37 3c b0 8f 1c ba ee 6f 02 5c 3b 51 2b -42 c3 e8 77 91 13 47 66 48 03 9d be 04 93 f9 24 -62 92 fa c2 89 50 60 0e 7c 0f 32 ed f9 c8 1b 9d -ec 45 c3 bd e0 cc 8d 88 47 59 01 69 90 7b 7d c5 -99 1c eb 29 bb 07 14 d6 13 d9 6d f0 f1 2e c5 d8 -d3 50 7c 8e e7 ae 78 dd 83 f2 16 fa 61 de 10 03 -63 ac a4 8a 7e 91 4a e9 f4 2d df be 94 3b 09 d9 -a0 - -# --------------------------------- -# RSAES-OAEP Encryption Example 3.5 -# --------------------------------- - -# Message to be encrypted: -df 51 51 83 2b 61 f4 f2 58 91 fb 41 72 f3 28 d2 -ed df 83 71 ff cf db e9 97 93 92 95 f3 0e ca 69 -18 01 7c fd a1 15 3b f7 a6 af 87 59 32 23 - -# Seed: -2d 76 0b fe 38 c5 9d e3 4c dc 8b 8c 78 a3 8e 66 -28 4a 2d 27 - -# Encryption: -01 62 04 2f f6 96 95 92 a6 16 70 31 81 1a 23 98 -34 ce 63 8a bf 54 fe c8 b9 94 78 12 2a fe 2e e6 -7f 8c 5b 18 b0 33 98 05 bf db c5 a4 e6 72 0b 37 -c5 9c fb a9 42 46 4c 59 7f f5 32 a1 19 82 15 45 -fd 2e 59 b1 14 e6 1d af 71 82 05 29 f5 02 9c f5 -24 95 43 27 c3 4e c5 e6 f5 ba 7e fc c4 de 94 3a -b8 ad 4e d7 87 b1 45 43 29 f7 0d b7 98 a3 a8 f4 -d9 2f 82 74 e2 b2 94 8a de 62 7c e8 ee 33 e4 3c -60 - -# --------------------------------- -# RSAES-OAEP Encryption Example 3.6 -# --------------------------------- - -# Message to be encrypted: -3c 3b ad 89 3c 54 4a 6d 52 0a b0 22 31 91 88 c8 -d5 04 b7 a7 88 b8 50 90 3b 85 97 2e aa 18 55 2e -11 34 a7 ad 60 98 82 62 54 ff 7a b6 72 b3 d8 eb -31 58 fa c6 d4 cb ae f1 - -# Seed: -f1 74 77 9c 5f d3 cf e0 07 ba dc b7 a3 6c 9b 55 -bf cf bf 0e - -# Encryption: -00 11 20 51 e7 5d 06 49 43 bc 44 78 07 5e 43 48 -2f d5 9c ee 06 79 de 68 93 ee c3 a9 43 da a4 90 -b9 69 1c 93 df c0 46 4b 66 23 b9 f3 db d3 e7 00 -83 26 4f 03 4b 37 4f 74 16 4e 1a 00 76 37 25 e5 -74 74 4b a0 b9 db 83 43 4f 31 df 96 f6 e2 a2 6f -6d 8e ba 34 8b d4 68 6c 22 38 ac 07 c3 7a ac 37 -85 d1 c7 ee a2 f8 19 fd 91 49 17 98 ed 8e 9c ef -5e 43 b7 81 b0 e0 27 6e 37 c4 3f f9 49 2d 00 57 -30 - -# ============================================= - -# ================================== -# Example 4: A 1027-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -05 12 40 b6 cc 00 04 fa 48 d0 13 46 71 c0 78 c7 -c8 de c3 b3 e2 f2 5b c2 56 44 67 33 9d b3 88 53 -d0 6b 85 ee a5 b2 de 35 3b ff 42 ac 2e 46 bc 97 -fa e6 ac 96 18 da 95 37 a5 c8 f5 53 c1 e3 57 62 -59 91 d6 10 8d cd 78 85 fb 3a 25 41 3f 53 ef ca -d9 48 cb 35 cd 9b 9a e9 c1 c6 76 26 d1 13 d5 7d -de 4c 5b ea 76 bb 5b b7 de 96 c0 0d 07 37 2e 96 -85 a6 d7 5c f9 d2 39 fa 14 8d 70 93 1b 5f 3f b0 -39 - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -04 11 ff ca 3b 7c a5 e9 e9 be 7f e3 8a 85 10 5e -35 38 96 db 05 c5 79 6a ec d2 a7 25 16 1e b3 65 -1c 86 29 a9 b8 62 b9 04 d7 b0 c7 b3 7f 8c b5 a1 -c2 b5 40 01 01 8a 00 a1 eb 2c af e4 ee 4e 94 92 -c3 48 bc 2b ed ab 4b 9e bb f0 64 e8 ef f3 22 b9 -00 9f 8e ec 65 39 05 f4 0d f8 8a 3c dc 49 d4 56 -7f 75 62 7d 41 ac a6 24 12 9b 46 a0 b7 c6 98 e5 -e6 5f 2b 7b a1 02 c7 49 a1 01 35 b6 54 0d 04 01 - -# Prime p: -02 74 58 c1 9e c1 63 69 19 e7 36 c9 af 25 d6 09 -a5 1b 8f 56 1d 19 c6 bf 69 43 dd 1e e1 ab 8a 4a -3f 23 21 00 bd 40 b8 8d ec c6 ba 23 55 48 b6 ef -79 2a 11 c9 de 82 3d 0a 79 22 c7 09 5b 6e ba 57 -01 - -# Prime q: -02 10 ee 9b 33 ab 61 71 6e 27 d2 51 bd 46 5f 4b -35 a1 a2 32 e2 da 00 90 1c 29 4b f2 23 50 ce 49 -0d 09 9f 64 2b 53 75 61 2d b6 3b a1 f2 03 86 49 -2b f0 4d 34 b3 c2 2b ce b9 09 d1 34 41 b5 3b 51 -39 - -# p's CRT exponent dP: -39 fa 02 8b 82 6e 88 c1 12 1b 75 0a 8b 24 2f a9 -a3 5c 5b 66 bd fd 1f a6 37 d3 cc 48 a8 4a 4f 45 -7a 19 4e 77 27 e4 9f 7b cc 6e 5a 5a 41 26 57 fc -47 0c 73 22 eb c3 74 16 ef 45 8c 30 7a 8c 09 01 - -# q's CRT exponent dQ: -01 5d 99 a8 41 95 94 39 79 fa 9e 1b e2 c3 c1 b6 -9f 43 2f 46 fd 03 e4 7d 5b ef bb bf d6 b1 d1 37 -1d 83 ef b3 30 a3 e0 20 94 2b 2f ed 11 5e 5d 02 -be 24 fd 92 c9 01 9d 1c ec d6 dd 4c f1 e5 4c c8 -99 - -# CRT coefficient qInv: -01 f0 b7 01 51 70 b3 f5 e4 22 23 ba 30 30 1c 41 -a6 d8 7c bb 70 e3 0c b7 d3 c6 7d 25 47 3d b1 f6 -cb f0 3e 3f 91 26 e3 e9 79 68 27 9a 86 5b 2c 2b -42 65 24 cf c5 2a 68 3d 31 ed 30 eb 98 4b e4 12 -ba - -# --------------------------------- -# RSAES-OAEP Encryption Example 4.1 -# --------------------------------- - -# Message to be encrypted: -4a 86 60 95 34 ee 43 4a 6c bc a3 f7 e9 62 e7 6d -45 5e 32 64 c1 9f 60 5f 6e 5f f6 13 7c 65 c5 6d -7f b3 44 cd 52 bc 93 37 4f 3d 16 6c 9f 0c 6f 9c -50 6b ad 19 33 09 72 d2 - -# Seed: -1c ac 19 ce 99 3d ef 55 f9 82 03 f6 85 28 96 c9 -5c cc a1 f3 - -# Encryption: -04 cc e1 96 14 84 5e 09 41 52 a3 fe 18 e5 4e 33 -30 c4 4e 5e fb c6 4a e1 68 86 cb 18 69 01 4c c5 -78 1b 1f 8f 9e 04 53 84 d0 11 2a 13 5c a0 d1 2e -9c 88 a8 e4 06 34 16 de aa e3 84 4f 60 d6 e9 6f -e1 55 14 5f 45 25 b9 a3 44 31 ca 37 66 18 0f 70 -e1 5a 5e 5d 8e 8b 1a 51 6f f8 70 60 9f 13 f8 96 -93 5c ed 18 82 79 a5 8e d1 3d 07 11 42 77 d7 5c -65 68 60 7e 0a b0 92 fd 80 3a 22 3e 4a 8e e0 b1 -a8 - -# --------------------------------- -# RSAES-OAEP Encryption Example 4.2 -# --------------------------------- - -# Message to be encrypted: -b0 ad c4 f3 fe 11 da 59 ce 99 27 73 d9 05 99 43 -c0 30 46 49 7e e9 d9 f9 a0 6d f1 16 6d b4 6d 98 -f5 8d 27 ec 07 4c 02 ee e6 cb e2 44 9c 8b 9f c5 -08 0c 5c 3f 44 33 09 25 12 ec 46 aa 79 37 43 c8 - -# Seed: -f5 45 d5 89 75 85 e3 db 71 aa 0c b8 da 76 c5 1d -03 2a e9 63 - -# Encryption: -00 97 b6 98 c6 16 56 45 b3 03 48 6f bf 5a 2a 44 -79 c0 ee 85 88 9b 54 1a 6f 0b 85 8d 6b 65 97 b1 -3b 85 4e b4 f8 39 af 03 39 9a 80 d7 9b da 65 78 -c8 41 f9 0d 64 57 15 b2 80 d3 71 43 99 2d d1 86 -c8 0b 94 9b 77 5c ae 97 37 0e 4e c9 74 43 13 6c -6d a4 84 e9 70 ff db 13 23 a2 08 47 82 1d 3b 18 -38 1d e1 3b b4 9a ae a6 65 30 c4 a4 b8 27 1f 3e -ae 17 2c d3 66 e0 7e 66 36 f1 01 9d 2a 28 ae d1 -5e - -# --------------------------------- -# RSAES-OAEP Encryption Example 4.3 -# --------------------------------- - -# Message to be encrypted: -bf 6d 42 e7 01 70 7b 1d 02 06 b0 c8 b4 5a 1c 72 -64 1f f1 28 89 21 9a 82 bd ea 96 5b 5e 79 a9 6b -0d 01 63 ed 9d 57 8e c9 ad a2 0f 2f bc f1 ea 3c -40 89 d8 34 19 ba 81 b0 c6 0f 36 06 da 99 - -# Seed: -ad 99 7f ee f7 30 d6 ea 7b e6 0d 0d c5 2e 72 ea -cb fd d2 75 - -# Encryption: -03 01 f9 35 e9 c4 7a bc b4 8a cb be 09 89 5d 9f -59 71 af 14 83 9d a4 ff 95 41 7e e4 53 d1 fd 77 -31 90 72 bb 72 97 e1 b5 5d 75 61 cd 9d 1b b2 4c -1a 9a 37 c6 19 86 43 08 24 28 04 87 9d 86 eb d0 -01 dc e5 18 39 75 e1 50 69 89 b7 0e 5a 83 43 41 -54 d5 cb fd 6a 24 78 7e 60 eb 0c 65 8d 2a c1 93 -30 2d 11 92 c6 e6 22 d4 a1 2a d4 b5 39 23 bc a2 -46 df 31 c6 39 5e 37 70 2c 6a 78 ae 08 1f b9 d0 -65 - -# --------------------------------- -# RSAES-OAEP Encryption Example 4.4 -# --------------------------------- - -# Message to be encrypted: -fb 2e f1 12 f5 e7 66 eb 94 01 92 97 93 47 94 f7 -be 2f 6f c1 c5 8e - -# Seed: -13 64 54 df 57 30 f7 3c 80 7a 7e 40 d8 c1 a3 12 -ac 5b 9d d3 - -# Encryption: -02 d1 10 ad 30 af b7 27 be b6 91 dd 0c f1 7d 0a -f1 a1 e7 fa 0c c0 40 ec 1a 4b a2 6a 42 c5 9d 0a -79 6a 2e 22 c8 f3 57 cc c9 8b 65 19 ac eb 68 2e -94 5e 62 cb 73 46 14 a5 29 40 7c d4 52 be e3 e4 -4f ec e8 42 3c c1 9e 55 54 8b 8b 99 4b 84 9c 7e -cd e4 93 3e 76 03 7e 1d 0c e4 42 75 b0 87 10 c6 -8e 43 01 30 b9 29 73 0e d7 7e 09 b0 15 64 2c 55 -93 f0 4e 4f fb 94 10 79 81 02 a8 e9 6f fd fe 11 -e4 - -# --------------------------------- -# RSAES-OAEP Encryption Example 4.5 -# --------------------------------- - -# Message to be encrypted: -28 cc d4 47 bb 9e 85 16 6d ab b9 e5 b7 d1 ad ad -c4 b9 d3 9f 20 4e 96 d5 e4 40 ce 9a d9 28 bc 1c -22 84 - -# Seed: -bc a8 05 7f 82 4b 2e a2 57 f2 86 14 07 ee f6 3d -33 20 86 81 - -# Encryption: -00 db b8 a7 43 9d 90 ef d9 19 a3 77 c5 4f ae 8f -e1 1e c5 8c 3b 85 83 62 e2 3a d1 b8 a4 43 10 79 -90 66 b9 93 47 aa 52 56 91 d2 ad c5 8d 9b 06 e3 -4f 28 8c 17 03 90 c5 f0 e1 1c 0a a3 64 59 59 f1 -8e e7 9e 8f 2b e8 d7 ac 5c 23 d0 61 f1 8d d7 4b -8c 5f 2a 58 fc b5 eb 0c 54 f9 9f 01 a8 32 47 56 -82 92 53 65 83 34 09 48 d7 a8 c9 7c 4a cd 1e 98 -d1 e2 9d c3 20 e9 7a 26 05 32 a8 aa 7a 75 8a 1e -c2 - -# --------------------------------- -# RSAES-OAEP Encryption Example 4.6 -# --------------------------------- - -# Message to be encrypted: -f2 22 42 75 1e c6 b1 - -# Seed: -2e 7e 1e 17 f6 47 b5 dd d0 33 e1 54 72 f9 0f 68 -12 f3 ac 4e - -# Encryption: -00 a5 ff a4 76 8c 8b be ca ee 2d b7 7e 8f 2e ec -99 59 59 33 54 55 20 83 5e 5b a7 db 94 93 d3 e1 -7c dd ef e6 a5 f5 67 62 44 71 90 8d b4 e2 d8 3a -0f be e6 06 08 fc 84 04 95 03 b2 23 4a 07 dc 83 -b2 7b 22 84 7a d8 92 0f f4 2f 67 4e f7 9b 76 28 -0b 00 23 3d 2b 51 b8 cb 27 03 a9 d4 2b fb c8 25 -0c 96 ec 32 c0 51 e5 7f 1b 4b a5 28 db 89 c3 7e -4c 54 e2 7e 6e 64 ac 69 63 5a e8 87 d9 54 16 19 -a9 - -# ============================================= - -# ================================== -# Example 5: A 1028-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -0a ad f3 f9 c1 25 e5 d8 91 f3 1a c4 48 e9 93 de -fe 58 0f 80 2b 45 f9 d7 f2 2b a5 02 1e 9c 47 57 -6b 5a 1e 68 03 1b a9 db 4e 6d ab e4 d9 6a 1d 6f -3d 26 72 68 cf f4 08 00 5f 11 8e fc ad b9 98 88 -d1 c2 34 46 71 66 b2 a2 b8 49 a0 5a 88 9c 06 0a -c0 da 0c 5f ae 8b 55 f3 09 ba 62 e7 03 74 2f a0 -32 6f 2d 10 b0 11 02 14 89 ff 49 77 70 19 0d 89 -5f d3 9f 52 29 3c 39 ef d7 3a 69 8b da b9 f1 0e -d9 - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -02 56 eb 4c ba 70 67 f2 d2 be 54 0d cd ff 45 82 -a3 6b 7d 31 d1 c9 09 9b b2 14 b7 98 48 46 6a 26 -8f 80 f5 8a 49 ac 04 c0 e3 64 89 34 a0 20 6c 04 -53 7c 19 b2 36 64 3a 60 82 73 21 44 df 75 fa 21 -75 88 f7 94 68 2b e8 91 68 27 6d c7 26 c5 c0 cb -db 84 d3 1b bf 26 d0 a4 3a f4 95 71 7f 7d 52 8a -cf ee 34 15 61 f6 ff 3c ae 05 c5 78 f8 47 0d 96 -82 f9 c0 d0 72 f9 f6 06 8b 56 d5 88 0f 68 2b e2 -c5 - -# Prime p: -03 b0 d3 96 2f 6d 17 54 9c bf ca 11 29 43 48 dc -f0 e7 e3 9f 8c 2b c6 82 4f 21 64 b6 06 d6 87 86 -0d ae 1e 63 23 93 cf ed f5 13 22 82 29 06 9e 2f -60 e4 ac d7 e6 33 a4 36 06 3f 82 38 5f 48 99 37 -07 - -# Prime q: -02 e4 c3 2e 2f 51 72 69 b7 07 23 09 f0 0c 0e 31 -36 5f 7c e2 8b 23 6b 82 91 2d f2 39 ab f3 95 72 -cf 0e d6 04 b0 29 82 e5 35 64 c5 2d 6a 05 39 7d -e5 c0 52 a2 fd dc 14 1e f7 18 98 36 34 6a eb 33 -1f - -# p's CRT exponent dP: -01 e8 4b 11 9d 25 16 1f a6 7b 00 25 6a 5b d9 b6 -45 d2 b2 32 ec b0 5b 01 51 80 02 9a 88 62 2a dc -3f 09 b3 ae ac de 61 61 ab 7c de 22 c2 ad 26 e7 -79 7d f5 4e 07 2c bd 3b 26 73 80 0b 3e 43 38 db -d5 - -# q's CRT exponent dQ: -eb 90 aa 1a 40 13 5b 4c ea 07 19 7c ed c8 81 9b -e1 e7 cb ff 25 47 66 21 16 f4 65 a4 a9 f4 87 ab -12 f3 ba 4f ef 13 82 22 65 a6 52 97 d9 8b 7b de -d9 37 2e 3f fe 81 a3 8b 3e 96 00 fe d0 55 75 4f - -# CRT coefficient qInv: -01 2f 7f 81 38 f9 40 40 62 eb 85 a4 29 24 52 0b -38 f5 bb 88 6a 01 96 f4 8b b8 dc ea 60 fd 92 cc -02 7f 18 e7 81 58 a3 4a 5c 5d 5f 86 0a 0f 6c 04 -07 1a 7d 01 31 2c 06 50 62 f1 eb 48 b7 9d 1c 83 -cb - -# --------------------------------- -# RSAES-OAEP Encryption Example 5.1 -# --------------------------------- - -# Message to be encrypted: -af 71 a9 01 e3 a6 1d 31 32 f0 fc 1f db 47 4f 9e -a6 57 92 57 ff c2 4d 16 41 70 14 5b 3d bd e8 - -# Seed: -44 c9 2e 28 3f 77 b9 49 9c 60 3d 96 36 60 c8 7d -2f 93 94 61 - -# Encryption: -03 60 46 a4 a4 7d 9e d3 ba 9a 89 13 9c 10 50 38 -eb 74 92 b0 5a 5d 68 bf d5 3a cc ff 45 97 f7 a6 -86 51 b4 7b 4a 46 27 d9 27 e4 85 ee d7 b4 56 64 -20 e8 b4 09 87 9e 5d 60 6e ae 25 1d 22 a5 df 79 -9f 79 20 bf c1 17 b9 92 57 2a 53 b1 26 31 46 bc -ea 03 38 5c c5 e8 53 c9 a1 01 c8 c3 e1 bd a3 1a -51 98 07 49 6c 6c b5 e5 ef b4 08 82 3a 35 2b 8f -a0 66 1f b6 64 ef ad d5 93 de b9 9f ff 5e d0 00 -e5 - -# --------------------------------- -# RSAES-OAEP Encryption Example 5.2 -# --------------------------------- - -# Message to be encrypted: -a3 b8 44 a0 82 39 a8 ac 41 60 5a f1 7a 6c fd a4 -d3 50 13 65 85 90 3a 41 7a 79 26 87 60 51 9a 4b -4a c3 30 3e c7 3f 0f 87 cf b3 23 99 - -# Seed: -cb 28 f5 86 06 59 fc ee e4 9c 3e ea fc e6 25 a7 -08 03 bd 32 - -# Encryption: -03 d6 eb 65 4e dc e6 15 bc 59 f4 55 26 5e d4 e5 -a1 82 23 cb b9 be 4e 40 69 b4 73 80 4d 5d e9 6f -54 dc aa a6 03 d0 49 c5 d9 4a a1 47 0d fc d2 25 -40 66 b7 c7 b6 1f f1 f6 f6 77 0e 32 15 c5 13 99 -fd 4e 34 ec 50 82 bc 48 f0 89 84 0a d0 43 54 ae -66 dc 0f 1b d1 8e 46 1a 33 cc 12 58 b4 43 a2 83 -7a 6d f2 67 59 aa 23 02 33 49 86 f8 73 80 c9 cc -9d 53 be 9f 99 60 5d 2c 9a 97 da 7b 09 15 a4 a7 -ad - -# --------------------------------- -# RSAES-OAEP Encryption Example 5.3 -# --------------------------------- - -# Message to be encrypted: -30 8b 0e cb d2 c7 6c b7 7f c6 f7 0c 5e dd 23 3f -d2 f2 09 29 d6 29 f0 26 95 3b b6 2a 8f 4a 3a 31 -4b de 19 5d e8 5b 5f 81 6d a2 aa b0 74 d2 6c b6 -ac dd f3 23 ae 3b 9c 67 8a c3 cf 12 fb dd e7 - -# Seed: -22 85 f4 0d 77 04 82 f9 a9 ef a2 c7 2c b3 ac 55 -71 6d c0 ca - -# Encryption: -07 70 95 21 81 64 9f 9f 9f 07 ff 62 6f f3 a2 2c -35 c4 62 44 3d 90 5d 45 6a 9f d0 bf f4 3c ac 2c -a7 a9 f5 54 e9 47 8b 9a cc 3a c8 38 b0 20 40 ff -d3 e1 84 7d e2 e4 25 39 29 f9 dd 9e e4 04 43 25 -a9 b0 5c ab b8 08 b2 ee 84 0d 34 e1 5d 10 5a 3f -1f 7b 27 69 5a 1a 07 a2 d7 3f e0 8e ca aa 3c 9c -9d 4d 5a 89 ff 89 0d 54 72 7d 7a e4 0c 0e c1 a8 -dd 86 16 5d 8e e2 c6 36 81 41 01 6a 48 b5 5b 69 -67 - -# --------------------------------- -# RSAES-OAEP Encryption Example 5.4 -# --------------------------------- - -# Message to be encrypted: -15 c5 b9 ee 11 85 - -# Seed: -49 fa 45 d3 a7 8d d1 0d fd 57 73 99 d1 eb 00 af -7e ed 55 13 - -# Encryption: -08 12 b7 67 68 eb cb 64 2d 04 02 58 e5 f4 44 1a -01 85 21 bd 96 68 7e 6c 5e 89 9f cd 6c 17 58 8f -f5 9a 82 cc 8a e0 3a 4b 45 b3 12 99 af 17 88 c3 -29 f7 dc d2 85 f8 cf 4c ed 82 60 6b 97 61 26 71 -a4 5b ed ca 13 34 42 14 4d 16 17 d1 14 f8 02 85 -7f 0f 9d 73 97 51 c5 7a 3f 9e e4 00 91 2c 61 e2 -e6 99 2b e0 31 a4 3d d4 8f a6 ba 14 ee f7 c4 22 -b5 ed c4 e7 af a0 4f dd 38 f4 02 d1 c8 bb 71 9a -bf - -# --------------------------------- -# RSAES-OAEP Encryption Example 5.5 -# --------------------------------- - -# Message to be encrypted: -21 02 6e 68 00 c7 fa 72 8f ca ab a0 d1 96 ae 28 -d7 a2 ac 4f fd 8a bc e7 94 f0 98 5f 60 c8 a6 73 -72 77 36 5d 3f ea 11 db 89 23 a2 02 9a - -# Seed: -f0 28 74 13 23 4c c5 03 47 24 a0 94 c4 58 6b 87 -af f1 33 fc - -# Encryption: -07 b6 0e 14 ec 95 4b fd 29 e6 0d 00 47 e7 89 f5 -1d 57 18 6c 63 58 99 03 30 67 93 ce d3 f6 82 41 -c7 43 52 9a ba 6a 63 74 f9 2e 19 e0 16 3e fa 33 -69 7e 19 6f 76 61 df aa a4 7a ac 6b de 5e 51 de -b5 07 c7 2c 58 9a 2c a1 69 3d 96 b1 46 03 81 24 -9b 2c db 9e ac 44 76 9f 24 89 c5 d3 d2 f9 9f 0e -e3 c7 ee 5b f6 4a 5a c7 9c 42 bd 43 3f 14 9b e8 -cb 59 54 83 61 64 05 95 51 3c 97 af 7b c2 50 97 -23 - -# --------------------------------- -# RSAES-OAEP Encryption Example 5.6 -# --------------------------------- - -# Message to be encrypted: -54 1e 37 b6 8b 6c 88 72 b8 4c 02 - -# Seed: -d9 fb a4 5c 96 f2 1e 6e 26 d2 9e b2 cd cb 65 85 -be 9c b3 41 - -# Encryption: -08 c3 6d 4d da 33 42 3b 2e d6 83 0d 85 f6 41 1b -a1 dc f4 70 a1 fa e0 eb ef ee 7c 08 9f 25 6c ef -74 cb 96 ea 69 c3 8f 60 f3 9a be e4 41 29 bc b4 -c9 2d e7 f7 97 62 3b 20 07 4e 3d 9c 28 99 70 1e -d9 07 1e 1e fa 0b dd 84 d4 c3 e5 13 03 02 d8 f0 -24 0b ab a4 b8 4a 71 cc 03 2f 22 35 a5 ff 0f ae -27 7c 3e 8f 91 12 be f4 4c 9a e2 0d 17 5f c9 a4 -05 8b fc 93 0b a3 1b 02 e2 e4 f4 44 48 37 10 f2 -4a - -# ============================================= - -# ================================== -# Example 6: A 1029-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -12 b1 7f 6d ad 2e cd 19 ff 46 dc 13 f7 86 0f 09 -e0 e0 cf b6 77 b3 8a 52 59 23 05 ce af 02 2c 16 -6d b9 0d 04 ac 29 e3 3f 7d d1 2d 9f af 66 e0 81 -6b b6 3e ad 26 7c c7 d4 6c 17 c3 7b e2 14 bc a2 -a2 2d 72 3a 64 e4 44 07 43 6b 6f c9 65 72 9a ef -c2 55 4f 37 6c d5 dc ea 68 29 37 80 a6 2b f3 9d -00 29 48 5a 16 0b bb 9e 5d c0 97 2d 21 a5 04 f5 -2e 5e e0 28 aa 41 63 32 f5 10 b2 e9 cf f5 f7 22 -af - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -02 95 ec a3 56 06 18 36 95 59 ce cd 30 3a a9 cf -da fc 1d 9f 06 95 9d f7 5f fe f9 29 aa 89 69 61 -bc d1 90 dc 69 97 ed a7 f5 96 3e 72 4d 07 b4 dc -11 f3 06 5e 5a e9 7d 96 83 51 12 28 0b 90 84 bb -14 f2 a2 1e bd 4e 88 9d 41 b9 c4 13 2e c1 95 6f -ca b8 bb 2f ed 05 75 88 49 36 52 2c 5f f7 d3 32 -61 90 48 24 e7 ca de e4 e0 bb 37 2d 24 57 cf 78 -e2 bd 12 86 22 8f f8 3f 10 73 1c e6 3c 90 cf f3 -f9 - -# Prime p: -04 a6 ce 8b 73 58 df a6 9b dc f7 42 61 70 05 af -b5 38 5f 5f 3a 58 a2 4e f7 4a 22 a8 c0 5c b7 cc -38 eb d4 cc 9d 9a 9d 78 9a 62 cd 0f 60 f0 cb 94 -1d 34 23 c9 69 2e fa 4f e3 ad ff 29 0c 47 49 a3 -8b - -# Prime q: -04 04 c9 a8 03 37 1f ed b4 c5 be 39 f3 c0 0b 00 -9e 5e 08 a6 3b e1 e4 00 35 cd ac a5 01 1c c7 01 -cf 7e eb cb 99 f0 ff e1 7c fd 0a 4b f7 be fd 2d -d5 36 ac 94 6d b7 97 fd bc 4a be 8f 29 34 9b 91 -ed - -# p's CRT exponent dP: -03 96 1c 8f 76 0a a2 bd 51 54 c7 aa fd 77 22 5b -3b ac d0 13 9a e7 b5 94 8e a3 31 1f cc d8 6f b9 -5c 75 af a7 67 28 4b 9b 2d e5 59 57 2f 15 d8 d0 -44 c7 eb 83 a1 be 5f ad f2 cc 37 7c 0d 84 75 29 -4b - -# q's CRT exponent dQ: -02 21 97 e0 66 74 21 96 aa bc 03 fa 2f ee b4 e7 -0b 15 cb 78 7d 61 7a cd 31 bb 75 c7 bc 23 4a d7 -06 f7 c4 8d 21 82 d1 f0 ff 9c 22 8d cf 41 96 7b -6c 0b a6 d2 c0 ad 11 0a 1b 85 78 31 ec 24 5e 2c -b1 - -# CRT coefficient qInv: -04 01 c4 c0 c5 3d 45 db db 5e 9d 96 d0 fe cf 42 -75 df 09 74 bc 4a 07 36 b4 a7 4c 32 69 05 3e fb -68 6a ce 24 06 e2 2c 9e 05 8d db 4a e5 40 62 7a -e2 fd b0 82 61 e8 e7 e4 bc bc 99 4d aa fa 30 5c -45 - -# --------------------------------- -# RSAES-OAEP Encryption Example 6.1 -# --------------------------------- - -# Message to be encrypted: -40 46 ca 8b aa 33 47 ca 27 f4 9e 0d 81 f9 cc 1d -71 be 9b a5 17 d4 - -# Seed: -dd 0f 6c fe 41 5e 88 e5 a4 69 a5 1f bb a6 df d4 -0a db 43 84 - -# Encryption: -06 30 ee bc d2 85 6c 24 f7 98 80 6e 41 f9 e6 73 -45 ed a9 ce da 38 6a cc 9f ac ae a1 ee ed 06 ac -e5 83 70 97 18 d9 d1 69 fa df 41 4d 5c 76 f9 29 -96 83 3e f3 05 b7 5b 1e 4b 95 f6 62 a2 0f ae dc -3b ae 0c 48 27 a8 bf 8a 88 ed bd 57 ec 20 3a 27 -a8 41 f0 2e 43 a6 15 ba b1 a8 ca c0 70 1d e3 4d -eb de f6 2a 08 80 89 b5 5e c3 6e a7 52 2f d3 ec -8d 06 b6 a0 73 e6 df 83 31 53 bc 0a ef d9 3b d1 -a3 - -# --------------------------------- -# RSAES-OAEP Encryption Example 6.2 -# --------------------------------- - -# Message to be encrypted: -5c c7 2c 60 23 1d f0 3b 3d 40 f9 b5 79 31 bc 31 -10 9f 97 25 27 f2 8b 19 e7 48 0c 72 88 cb 3c 92 -b2 25 12 21 4e 4b e6 c9 14 79 2d da bd f5 7f aa -8a a7 - -# Seed: -8d 14 bd 94 6a 13 51 14 8f 5c ae 2e d9 a0 c6 53 -e8 5e bd 85 - -# Encryption: -0e bc 37 37 61 73 a4 fd 2f 89 cc 55 c2 ca 62 b2 -6b 11 d5 1c 3c 7c e4 9e 88 45 f7 4e 76 07 31 7c -43 6b c8 d2 3b 96 67 df eb 9d 08 72 34 b4 7b c6 -83 71 75 ae 5c 05 59 f6 b8 1d 7d 22 41 6d 3e 50 -f4 ac 53 3d 8f 08 12 f2 db 9e 79 1f e9 c7 75 ac -8b 6a d0 f5 35 ad 9c eb 23 a4 a0 20 14 c5 8a b3 -f8 d3 16 14 99 a2 60 f3 93 48 e7 14 ae 2a 1d 34 -43 20 8f d8 b7 22 cc fd fb 39 3e 98 01 1f 99 e6 -3f - -# --------------------------------- -# RSAES-OAEP Encryption Example 6.3 -# --------------------------------- - -# Message to be encrypted: -b2 0e 65 13 03 09 2f 4b cc b4 30 70 c0 f8 6d 23 -04 93 62 ed 96 64 2f c5 63 2c 27 db 4a 52 e3 d8 -31 f2 ab 06 8b 23 b1 49 87 9c 00 2f 6b f3 fe ee -97 59 11 12 56 2c - -# Seed: -6c 07 5b c4 55 20 f1 65 c0 bf 5e a4 c5 df 19 1b -c9 ef 0e 44 - -# Encryption: -0a 98 bf 10 93 61 93 94 43 6c f6 8d 8f 38 e2 f1 -58 fd e8 ea 54 f3 43 5f 23 9b 8d 06 b8 32 18 44 -20 24 76 ae ed 96 00 94 92 48 0c e3 a8 d7 05 49 -8c 4c 8c 68 f0 15 01 dc 81 db 60 8f 60 08 73 50 -c8 c3 b0 bd 2e 9e f6 a8 14 58 b7 c8 01 b8 9f 2e -4f e9 9d 49 00 ba 6a 4b 5e 5a 96 d8 65 dc 67 6c -77 55 92 87 94 13 0d 62 80 a8 16 0a 19 0f 2d f3 -ea 7c f9 aa 02 71 d8 8e 9e 69 05 ec f1 c5 15 2d -65 - -# --------------------------------- -# RSAES-OAEP Encryption Example 6.4 -# --------------------------------- - -# Message to be encrypted: -68 4e 30 38 c5 c0 41 f7 - -# Seed: -3b bc 3b d6 63 7d fe 12 84 69 01 02 9b f5 b0 c0 -71 03 43 9c - -# Encryption: -00 8e 7a 67 ca cf b5 c4 e2 4b ec 7d ee 14 91 17 -f1 95 98 ce 8c 45 80 8f ef 88 c6 08 ff 9c d6 e6 -95 26 3b 9a 3c 0a d4 b8 ba 4c 95 23 8e 96 a8 42 -2b 85 35 62 9c 8d 53 82 37 44 79 ad 13 fa 39 97 -4b 24 2f 9a 75 9e ea f9 c8 3a d5 a8 ca 18 94 0a -01 62 ba 75 58 76 df 26 3f 4b d5 0c 65 25 c5 60 -90 26 7c 1f 0e 09 ce 08 99 a0 cf 35 9e 88 12 0a -bd 9b f8 93 44 5b 3c ae 77 d3 60 73 59 ae 9a 52 -f8 - -# --------------------------------- -# RSAES-OAEP Encryption Example 6.5 -# --------------------------------- - -# Message to be encrypted: -32 48 8c b2 62 d0 41 d6 e4 dd 35 f9 87 bf 3c a6 -96 db 1f 06 ac 29 a4 46 93 - -# Seed: -b4 6b 41 89 3e 8b ef 32 6f 67 59 38 3a 83 07 1d -ae 7f ca bc - -# Encryption: -00 00 34 74 41 6c 7b 68 bd f9 61 c3 85 73 79 44 -d7 f1 f4 0c b3 95 34 3c 69 3c c0 b4 fe 63 b3 1f -ed f1 ea ee ac 9c cc 06 78 b3 1d c3 2e 09 77 48 -95 14 c4 f0 90 85 f6 29 8a 96 53 f0 1a ea 40 45 -ff 58 2e e8 87 be 26 ae 57 5b 73 ee f7 f3 77 49 -21 e3 75 a3 d1 9a dd a0 ca 31 aa 18 49 88 7c 1f -42 ca c9 67 7f 7a 2f 4e 92 3f 6e 5a 86 8b 38 c0 -84 ef 18 75 94 dc 9f 7f 04 8f ea 2e 02 95 53 84 -ab - -# --------------------------------- -# RSAES-OAEP Encryption Example 6.6 -# --------------------------------- - -# Message to be encrypted: -50 ba 14 be 84 62 72 02 79 c3 06 ba - -# Seed: -0a 24 03 31 2a 41 e3 d5 2f 06 0f bc 13 a6 7d e5 -cf 76 09 a7 - -# Encryption: -0a 02 6d da 5f c8 78 5f 7b d9 bf 75 32 7b 63 e8 -5e 2c 0f de e5 da db 65 eb dc ac 9a e1 de 95 c9 -2c 67 2a b4 33 aa 7a 8e 69 ce 6a 6d 88 97 fa c4 -ac 4a 54 de 84 1a e5 e5 bb ce 76 87 87 9d 79 63 -4c ea 7a 30 68 40 65 c7 14 d5 24 09 b9 28 25 6b -bf 53 ea bc d5 23 1e b7 25 95 04 53 73 99 bd 29 -16 4b 72 6d 33 a4 6d a7 01 36 0a 41 68 a0 91 cc -ab 72 d4 4a 62 fe d2 46 c0 ff ea 5b 13 48 ab 54 -70 - -# ============================================= - -# ================================== -# Example 7: A 1030-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -31 11 79 f0 bc fc 9b 9d 3c a3 15 d0 0e f3 0d 7b -dd 3a 2c fa e9 91 1b fe dc b9 48 b3 a4 78 2d 07 -32 b6 ab 44 aa 4b f0 37 41 a6 44 dc 01 be c3 e6 -9b 01 a0 33 e6 75 d8 ac d7 c4 92 5c 6b 1a ec 31 -19 05 1d fd 89 76 2d 21 5d 45 47 5f fc b5 9f 90 -81 48 62 3f 37 17 71 56 f6 ae 86 dd 7a 7c 5f 43 -dc 1e 1f 90 82 54 05 8a 28 4a 5f 06 c0 02 17 93 -a8 7f 1a c5 fe ff 7d ca ee 69 c5 e5 1a 37 89 e3 -73 - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -07 0c fc ff 2f eb 82 76 e2 74 32 c4 5d fe e4 8f -49 b7 91 7d 65 30 e1 f0 ca 34 60 f3 2e 02 76 17 -44 87 c5 6e 22 a4 5d 25 00 d7 77 54 95 21 9d 7d -16 5a 9c f3 bd 92 c3 2a f9 a9 8d 8d c9 cc 29 68 -00 ad c9 4a 0a 54 fb 40 f3 42 91 bf 84 ee 8e a1 -2b 6f 10 93 59 c6 d3 54 2a 50 f9 c7 67 f5 cf ff -05 a6 81 c2 e6 56 fb 77 ca aa db 4b e9 46 8d 8a -bc d4 df 98 f5 8e 86 d2 05 3f a1 34 9f 74 8e 21 -b1 - -# Prime p: -07 49 26 2c 11 1c d4 70 ec 25 66 e6 b3 73 2f c0 -93 29 46 9a a1 90 71 d3 b9 c0 19 06 51 4c 6f 1d -26 ba a1 4b ea b0 97 1c 8b 7e 61 1a 4f 79 00 9d -6f ea 77 69 28 ca 25 28 5b 0d e3 64 3d 1a 3f 8c -71 - -# Prime q: -06 bc 1e 50 e9 6c 02 bf 63 6e 9e ea 8b 89 9b be -bf 76 51 de 77 dd 47 4c 3e 9b c2 3b ad 81 82 b6 -19 04 c7 d9 7d fb eb fb 1e 00 10 88 78 b6 e6 7e -41 53 91 d6 79 42 c2 b2 bf 9b 44 35 f8 8b 0c b0 -23 - -# p's CRT exponent dP: -03 bc 7e a7 f0 aa b1 43 ab c6 ce 8b 97 11 86 36 -a3 01 72 e4 cf e0 2c 8f a0 dd a3 b7 ba af 90 f8 -09 29 82 98 55 25 f4 88 bd fc b4 bd 72 6e 22 63 -9a c6 4a 30 92 ab 7f fc bf 1d 53 34 cf a5 0b 5b -f1 - -# q's CRT exponent dQ: -02 62 a6 aa 29 c2 a3 c6 7d c5 34 6c 06 38 1a fd -98 7a a3 cc 93 cf bf ec f5 4f dd 9f 9d 78 7d 7f -59 a5 23 d3 98 97 9d a1 37 a2 f6 38 1f e9 48 01 -f7 c9 4d a2 15 18 dc 34 cb 40 87 0c 46 97 99 4a -d9 - -# CRT coefficient qInv: -64 9d 4c 17 b6 ee 17 21 e7 72 d0 38 9a 55 9c 3d -3c df 95 50 d4 57 c4 6b 03 7b 74 64 1b 1d 52 16 -6a f8 a2 13 c8 39 62 06 cd fb a4 42 2f 18 d6 f6 -1d bc b5 d2 14 c9 71 bf 48 2a eb 97 6a 73 70 c2 - -# --------------------------------- -# RSAES-OAEP Encryption Example 7.1 -# --------------------------------- - -# Message to be encrypted: -47 aa e9 09 - -# Seed: -43 dd 09 a0 7f f4 ca c7 1c aa 46 32 ee 5e 1c 1d -ae e4 cd 8f - -# Encryption: -16 88 e4 ce 77 94 bb a6 cb 70 14 16 9e cd 55 9c -ed e2 a3 0b 56 a5 2b 68 d9 fe 18 cf 19 73 ef 97 -b2 a0 31 53 95 1c 75 5f 62 94 aa 49 ad bd b5 58 -45 ab 68 75 fb 39 86 c9 3e cf 92 79 62 84 0d 28 -2f 9e 54 ce 8b 69 0f 7c 0c b8 bb d7 34 40 d9 57 -1d 1b 16 cd 92 60 f9 ea b4 78 3c c4 82 e5 22 3d -c6 09 73 87 17 83 ec 27 b0 ae 0f d4 77 32 cb c2 -86 a1 73 fc 92 b0 0f b4 ba 68 24 64 7c d9 3c 85 -c1 - -# --------------------------------- -# RSAES-OAEP Encryption Example 7.2 -# --------------------------------- - -# Message to be encrypted: -1d 9b 2e 22 23 d9 bc 13 bf b9 f1 62 ce 73 5d b4 -8b a7 c6 8f 68 22 a0 a1 a7 b6 ae 16 58 34 e7 - -# Seed: -3a 9c 3c ec 7b 84 f9 bd 3a de cb c6 73 ec 99 d5 -4b 22 bc 9b - -# Encryption: -10 52 ed 39 7b 2e 01 e1 d0 ee 1c 50 bf 24 36 3f -95 e5 04 f4 a0 34 34 a0 8f d8 22 57 4e d6 b9 73 -6e db b5 f3 90 db 10 32 14 79 a8 a1 39 35 0e 2b -d4 97 7c 37 78 ef 33 1f 3e 78 ae 11 8b 26 84 51 -f2 0a 2f 01 d4 71 f5 d5 3c 56 69 37 17 1b 2d bc -2d 4b de 45 9a 57 99 f0 37 2d 65 74 23 9b 23 23 -d2 45 d0 bb 81 c2 86 b6 3c 89 a3 61 01 73 37 e4 -90 2f 88 a4 67 f4 c7 f2 44 bf d5 ab 46 43 7f f3 -b6 - -# --------------------------------- -# RSAES-OAEP Encryption Example 7.3 -# --------------------------------- - -# Message to be encrypted: -d9 76 fc - -# Seed: -76 a7 5e 5b 61 57 a5 56 cf 88 84 bb 2e 45 c2 93 -dd 54 5c f5 - -# Encryption: -21 55 cd 84 3f f2 4a 4e e8 ba db 76 94 26 00 28 -a4 90 81 3b a8 b3 69 a4 cb f1 06 ec 14 8e 52 98 -70 7f 59 65 be 7d 10 1c 10 49 ea 85 84 c2 4c d6 -34 55 ad 9c 10 4d 68 62 82 d3 fb 80 3a 4c 11 c1 -c2 e9 b9 1c 71 78 80 1d 1b 66 40 f0 03 f5 72 8d -f0 07 b8 a4 cc c9 2b ce 05 e4 1a 27 27 8d 7c 85 -01 8c 52 41 43 13 a5 07 77 89 00 1d 4f 01 91 0b -72 aa d0 5d 22 0a a1 4a 58 73 3a 74 89 bc 54 55 -6b - -# --------------------------------- -# RSAES-OAEP Encryption Example 7.4 -# --------------------------------- - -# Message to be encrypted: -d4 73 86 23 df 22 3a a4 38 43 df 84 67 53 4c 41 -d0 13 e0 c8 03 c6 24 e2 63 66 6b 23 9b de 40 a5 -f2 9a eb 8d e7 9e 3d aa 61 dd 03 70 f4 9b d4 b0 -13 83 4b 98 21 2a ef 6b 1c 5e e3 73 b3 cb - -# Seed: -78 66 31 4a 6a d6 f2 b2 50 a3 59 41 db 28 f5 86 -4b 58 58 59 - -# Encryption: -0a b1 4c 37 3a eb 7d 43 28 d0 aa ad 8c 09 4d 88 -b9 eb 09 8b 95 f2 10 54 a2 90 82 52 2b e7 c2 7a -31 28 78 b6 37 91 7e 3d 81 9e 6c 3c 56 8d b5 d8 -43 80 2b 06 d5 1d 9e 98 a2 be 0b f4 0c 03 14 23 -b0 0e df bf f8 32 0e fb 91 71 bd 20 44 65 3a 4c -b9 c5 12 2f 6c 65 e8 3c da 2e c3 c1 26 02 7a 9c -1a 56 ba 87 4d 0f ea 23 f3 80 b8 2c f2 40 b8 cf -54 00 04 75 8c 4c 77 d9 34 15 7a 74 f3 fc 12 bf -ac - -# --------------------------------- -# RSAES-OAEP Encryption Example 7.5 -# --------------------------------- - -# Message to be encrypted: -bb 47 23 1c a5 ea 1d 3a d4 6c 99 34 5d 9a 8a 61 - -# Seed: -b2 16 6e d4 72 d5 8d b1 0c ab 2c 6b 00 0c cc f1 -0a 7d c5 09 - -# Encryption: -02 83 87 a3 18 27 74 34 79 8b 4d 97 f4 60 06 8d -f5 29 8f ab a5 04 1b a1 17 61 a1 cb 73 16 b2 41 -84 11 4e c5 00 25 7e 25 89 ed 3b 60 7a 1e bb e9 -7a 6c c2 e0 2b f1 b6 81 f4 23 12 a3 3b 7a 77 d8 -e7 85 5c 4a 6d e0 3e 3c 04 64 3f 78 6b 91 a2 64 -a0 d6 80 5e 2c ea 91 e6 81 77 eb 7a 64 d9 25 5e -4f 27 e7 13 b7 cc ec 00 dc 20 0e bd 21 c2 ea 2b -b8 90 fe ae 49 42 df 94 1d c3 f9 78 90 ed 34 74 -78 - -# --------------------------------- -# RSAES-OAEP Encryption Example 7.6 -# --------------------------------- - -# Message to be encrypted: -21 84 82 70 95 d3 5c 3f 86 f6 00 e8 e5 97 54 01 -32 96 - -# Seed: -52 67 3b de 2c a1 66 c2 aa 46 13 1a c1 dc 80 8d -67 d7 d3 b1 - -# Encryption: -14 c6 78 a9 4a d6 05 25 ef 39 e9 59 b2 f3 ba 5c -09 7a 94 ff 91 2b 67 db ac e8 05 35 c1 87 ab d4 -7d 07 54 20 b1 87 21 52 bb a0 8f 7f c3 1f 31 3b -bf 92 73 c9 12 fc 4c 01 49 a9 b0 cf b7 98 07 e3 -46 eb 33 20 69 61 1b ec 0f f9 bc d1 68 f1 f7 c3 -3e 77 31 3c ea 45 4b 94 e2 54 9e ec f0 02 e2 ac -f7 f6 f2 d2 84 5d 4f e0 aa b2 e5 a9 2d df 68 c4 -80 ae 11 24 79 35 d1 f6 25 74 84 22 16 ae 67 41 -15 - -# ============================================= - -# ================================== -# Example 8: A 1031-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -5b df 0e 30 d3 21 dd a5 14 7f 88 24 08 fa 69 19 -54 80 df 8f 80 d3 f6 e8 bf 58 18 50 4f 36 42 7c -a9 b1 f5 54 0b 9c 65 a8 f6 97 4c f8 44 7a 24 4d -92 80 20 1b b4 9f cb be 63 78 d1 94 4c d2 27 e2 -30 f9 6e 3d 10 f8 19 dc ef 27 6c 64 a0 0b 2a 4b -67 01 e7 d0 1d e5 fa bd e3 b1 e9 a0 df 82 f4 63 -13 59 cd 22 66 96 47 fb b1 71 72 46 13 4e d7 b4 -97 cf ff bd c4 2b 59 c7 3a 96 ed 90 16 62 12 df -f7 - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -0f 7d 1e 9e 5a aa 25 fd 13 e4 a0 66 3a e1 44 e0 -d1 5f 5c d1 8b cd b0 9d f2 cc 7e 64 e3 c5 e9 15 -ad 62 64 53 04 16 1d 09 8c 71 5b b7 ab 8b d0 1d -07 ea f3 fe d7 c7 ed 08 af 2a 8a 62 ef 44 ab 16 -b3 20 e1 4a f7 2a 48 f9 6a fe 26 2a 0a e4 cf 65 -e6 35 e9 10 79 0c d4 ee 5c ea 76 8a 4b 26 39 f7 -e6 f6 77 b3 f0 bb 6b e3 2b 75 74 7d 89 09 03 6f -02 64 f5 8d 40 1c db a1 31 71 61 57 a7 5e cf 63 -31 - -# Prime p: -0a 02 ef 84 48 d9 fa d8 bb d0 d0 04 c8 c2 aa 97 -51 ef 97 21 c1 b0 d0 32 36 a5 4b 0d f9 47 cb ae -d5 a2 55 ee 9e 8e 20 d4 91 ea 17 23 fe 09 47 04 -a9 76 2e 88 af d1 6e bb 59 94 41 2c a9 66 dc 4f -9f - -# Prime q: -09 2d 36 2e 7e d3 a0 bf d9 e9 fd 0e 6c 03 01 b6 -df 29 15 9c f5 0c c8 3b 9b 0c f4 d6 ee a7 1a 61 -e0 02 b4 6e 0a e9 f2 de 62 d2 5b 5d 74 52 d4 98 -b8 1c 9a c6 fc 58 59 3d 4c 3f b4 f5 d7 2d fb b0 -a9 - -# p's CRT exponent dP: -07 c7 14 10 af 10 39 62 db 36 74 04 e3 7a e8 50 -ba a4 e9 c2 9d d9 21 45 81 52 94 a6 7c 7d 1c 6d -ed 26 3a a0 30 a9 b6 33 ae 50 30 3e 14 03 5d 1a -f0 14 12 3e ba 68 78 20 30 8d 8e bc 85 b6 95 7d -7d - -# q's CRT exponent dQ: -ae 2c 75 38 0c 02 c0 16 ad 05 89 1b 33 01 de 88 -1f 28 ae 11 71 18 2b 6b 2c 83 be a7 c5 15 ec a9 -ca 29 8c 7b 1c ab 58 17 a5 97 06 8f c8 50 60 de -4d a8 a0 16 37 8a ae 43 c7 f9 67 bc c3 79 04 b9 - -# CRT coefficient qInv: -05 98 d1 05 9e 3a da 4f 63 20 75 2c 09 d8 05 ff -7d 1f 1a e0 d0 17 ae ee e9 ce fa 0d 7d d7 ff 77 -5e 44 b5 78 32 2f 64 05 d6 21 1d a1 95 19 66 6a -a8 7f dc 4c d8 c8 8f 6b 6e 3d 67 e9 61 dc bb a3 -d0 - -# --------------------------------- -# RSAES-OAEP Encryption Example 8.1 -# --------------------------------- - -# Message to be encrypted: -05 0b 75 5e 5e 68 80 f7 b9 e9 d6 92 a7 4c 37 aa -e4 49 b3 1b fe a6 de ff 83 74 7a 89 7f 6c 2c 82 -5b b1 ad bf 85 0a 3c 96 99 4b 5d e5 b3 3c bc 7d -4a 17 91 3a 79 67 - -# Seed: -77 06 ff ca 1e cf b1 eb ee 2a 55 e5 c6 e2 4c d2 -79 7a 41 25 - -# Encryption: -09 b3 68 3d 8a 2e b0 fb 29 5b 62 ed 1f b9 29 0b -71 44 57 b7 82 53 19 f4 64 78 72 af 88 9b 30 40 -94 72 02 0a d1 29 12 bf 19 b1 1d 48 19 f4 96 14 -82 4f fd 84 d0 9c 0a 17 e7 d1 73 09 d1 29 19 79 -04 10 aa 29 95 69 9f 6a 86 db e3 24 2b 5a cc 23 -af 45 69 10 80 d6 b1 ae 81 0f b3 e3 05 70 87 f0 -97 00 92 ce 00 be 95 62 ff 40 53 b6 26 2c e0 ca -a9 3e 13 72 3d 2e 3a 5b a0 75 d4 5f 0d 61 b5 4b -61 - -# --------------------------------- -# RSAES-OAEP Encryption Example 8.2 -# --------------------------------- - -# Message to be encrypted: -4e b6 8d cd 93 ca 9b 19 df 11 1b d4 36 08 f5 57 -02 6f e4 aa 1d 5c fa c2 27 a3 eb 5a b9 54 8c 18 -a0 6d de d2 3f 81 82 59 86 b2 fc d7 11 09 ec ef -7e ff 88 87 3f 07 5c 2a a0 c4 69 f6 9c 92 bc - -# Seed: -a3 71 7d a1 43 b4 dc ff bc 74 26 65 a8 fa 95 05 -85 54 83 43 - -# Encryption: -2e cf 15 c9 7c 5a 15 b1 47 6a e9 86 b3 71 b5 7a -24 28 4f 4a 16 2a 8d 0c 81 82 e7 90 5e 79 22 56 -f1 81 2b a5 f8 3f 1f 7a 13 0e 42 dc c0 22 32 84 -4e dc 14 a3 1a 68 ee 97 ae 56 4a 38 3a 34 11 65 -64 24 c5 f6 2d db 64 60 93 c3 67 be 1f cd a4 26 -cf 00 a0 6d 8a cb 7e 57 77 6f bb d8 55 ac 3d f5 -06 fc 16 b1 d7 c3 f2 11 0f 3d 80 68 e9 1e 18 63 -63 83 1c 84 09 68 0d 8d a9 ec d8 cf 1f a2 0e e3 -9d - -# --------------------------------- -# RSAES-OAEP Encryption Example 8.3 -# --------------------------------- - -# Message to be encrypted: -86 04 ac 56 32 8c 1a b5 ad 91 78 61 - -# Seed: -ee 06 20 90 73 cc a0 26 bb 26 4e 51 85 bf 8c 68 -b7 73 9f 86 - -# Encryption: -4b c8 91 30 a5 b2 da bb 7c 2f cf 90 eb 5d 0e af -9e 68 1b 71 46 a3 8f 31 73 a3 d9 cf ec 52 ea 9e -0a 41 93 2e 64 8a 9d 69 34 4c 50 da 76 3f 51 a0 -3c 95 76 21 31 e8 05 22 54 dc d2 24 8c ba 40 fd -31 66 77 86 ce 05 a2 b7 b5 31 ac 9d ac 9e d5 84 -a5 9b 67 7c 1a 8a ed 8c 5d 15 d6 8c 05 56 9e 2b -e7 80 bf 7d b6 38 fd 2b fd 2a 85 ab 27 68 60 f3 -77 73 38 fc a9 89 ff d7 43 d1 3e e0 8e 0c a9 89 -3f - -# --------------------------------- -# RSAES-OAEP Encryption Example 8.4 -# --------------------------------- - -# Message to be encrypted: -fd da 5f bf 6e c3 61 a9 d9 a4 ac 68 af 21 6a 06 -86 f4 38 b1 e0 e5 c3 6b 95 5f 74 e1 07 f3 9c 0d -dd cc - -# Seed: -99 0a d5 73 dc 48 a9 73 23 5b 6d 82 54 36 18 f2 -e9 55 10 5d - -# Encryption: -2e 45 68 47 d8 fc 36 ff 01 47 d6 99 35 94 b9 39 -72 27 d5 77 75 2c 79 d0 f9 04 fc b0 39 d4 d8 12 -fe a6 05 a7 b5 74 dd 82 ca 78 6f 93 75 23 48 43 -8e e9 f5 b5 45 49 85 d5 f0 e1 69 9e 3e 7a d1 75 -a3 2e 15 f0 3d eb 04 2a b9 fe 1d d9 db 1b b8 6f -8c 08 9c cb 45 e7 ef 0c 5e e7 ca 9b 72 90 ca 6b -15 be d4 70 39 78 8a 8a 93 ff 83 e0 e8 d6 24 4c -71 00 63 62 de ef 69 b6 f4 16 fb 3c 68 43 83 fb -d0 - -# --------------------------------- -# RSAES-OAEP Encryption Example 8.5 -# --------------------------------- - -# Message to be encrypted: -4a 5f 49 14 be e2 5d e3 c6 93 41 de 07 - -# Seed: -ec c6 3b 28 f0 75 6f 22 f5 2a c8 e6 ec 12 51 a6 -ec 30 47 18 - -# Encryption: -1f b9 35 6f d5 c4 b1 79 6d b2 eb f7 d0 d3 93 cc -81 0a df 61 45 de fc 2f ce 71 4f 79 d9 38 00 d5 -e2 ac 21 1e a8 bb ec ca 4b 65 4b 94 c3 b1 8b 30 -dd 57 6c e3 4d c9 54 36 ef 57 a0 94 15 64 59 23 -35 9a 5d 7b 41 71 ef 22 c2 46 70 f1 b2 29 d3 60 -3e 91 f7 66 71 b7 df 97 e7 31 7c 97 73 44 76 d5 -f3 d1 7d 21 cf 82 b5 ba 9f 83 df 2e 58 8d 36 98 -4f d1 b5 84 46 8b d2 3b 2e 87 5f 32 f6 89 53 f7 -b2 - -# --------------------------------- -# RSAES-OAEP Encryption Example 8.6 -# --------------------------------- - -# Message to be encrypted: -8e 07 d6 6f 7b 88 0a 72 56 3a bc d3 f3 50 92 bc -33 40 9f b7 f8 8f 24 72 be - -# Seed: -39 25 c7 1b 36 2d 40 a0 a6 de 42 14 55 79 ba 1e -7d d4 59 fc - -# Encryption: -3a fd 9c 66 00 14 7b 21 79 8d 81 8c 65 5a 0f 4c -92 12 db 26 d0 b0 df dc 2a 75 94 cc b3 d2 2f 5b -f1 d7 c3 e1 12 cd 73 fc 7d 50 9c 7a 8b af dd 3c -27 4d 13 99 00 9f 96 09 ec 4b e6 47 7e 45 3f 07 -5a a3 3d b3 82 87 0c 1c 34 09 ae f3 92 d7 38 6a -e3 a6 96 b9 9a 94 b4 da 05 89 44 7e 95 5d 16 c9 -8b 17 60 2a 59 bd 73 62 79 fc d8 fb 28 0c 44 62 -d5 90 bf a9 bf 13 fe d5 70 ea fd e9 73 30 a2 c2 -10 - -# ============================================= - -# ================================== -# Example 9: A 1536-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -cf 2c d4 1e 34 ca 3a 72 8e a5 cb 8a ff 64 c3 6d -27 bd ef 53 64 e3 36 fd 68 d3 12 3c 5a 19 6a 8c -28 70 13 e8 53 d5 15 6d 58 d1 51 95 45 20 fb 4f -6d 7b 17 ab b6 81 77 65 90 9c 57 61 19 65 9d 90 -2b 19 06 ed 8a 2b 10 c1 55 c2 4d 12 45 28 da b9 -ee ae 37 9b ea c6 6e 4a 41 17 86 dc b8 fd 00 62 -eb c0 30 de 12 19 a0 4c 2a 8c 1b 7d d3 13 1e 4d -6b 6c ae e2 e3 1a 5e d4 1a c1 50 9b 2e f1 ee 2a -b1 83 64 be 56 8c a9 41 c2 5e cc 84 ff 9d 64 3b -5e c1 aa ae 10 2a 20 d7 3f 47 9b 78 0f d6 da 91 -07 52 12 d9 ea c0 3a 06 74 d8 99 eb a2 e4 31 f4 -c4 4b 61 5b 6b a2 23 2b d4 b3 3b ae d7 3d 62 5d - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -19 8c 14 1e 23 71 5a 92 bc cf 6a 11 9a 5b c1 13 -89 46 8d 28 11 f5 48 d7 27 e1 7b 4a b0 eb 98 6d -6f 21 1e fb 53 b7 1f 7c cb ea 87 ee 69 c7 5e e6 -15 00 8c 53 32 de b5 2b f3 90 ab df bf e3 7d 72 -05 36 81 59 b2 63 8c 1d e3 26 e2 1d 22 25 1f 0f -b5 84 8b 3b f1 50 05 d2 a7 43 30 f0 af e9 16 ee -62 cc c1 34 4d 1d 83 a7 09 e6 06 76 27 38 40 f7 -f3 77 42 4a 5e 0a 4d a7 5f 01 b3 1f f7 68 19 cf -9c bf dd 21 52 43 c3 91 7c 03 ef 38 19 93 12 e5 -67 b3 bf 7a ed 3a b4 57 f3 71 ef 8a 14 23 f4 5b -68 c6 e2 82 ec 11 1b ba 28 33 b9 87 fd 69 fa d8 -3b c1 b8 c6 13 c5 e1 ea 16 c1 1e d1 25 ea 7e c1 - -# Prime p: -fc 8d 6c 04 be c4 eb 9a 81 92 ca 79 00 cb e5 36 -e2 e8 b5 19 de cf 33 b2 45 97 98 c6 90 9d f4 f1 -76 db 7d 23 19 0f c7 2b 88 65 a7 18 af 89 5f 1b -cd 91 45 29 80 27 42 3b 60 5e 70 a4 7c f5 83 90 -a8 c3 e8 8f c8 c4 8e 8b 32 e3 da 21 0d fb e3 e8 -81 ea 56 74 b6 a3 48 c2 1e 93 f9 e5 5e a6 5e fd - -# Prime q: -d2 00 d4 5e 78 8a ac ea 60 6a 40 1d 04 60 f8 7d -d5 c1 02 7e 12 dc 1a 0d 75 86 e8 93 9d 9c f7 89 -b4 0f 51 ac 04 42 96 1d e7 d2 1c c2 1e 05 c8 31 -55 c1 f2 aa 91 93 38 7c fd f9 56 cb 48 d1 53 ba -27 04 06 f9 bb ba 53 7d 49 87 d9 e2 f9 94 2d 7a -14 cb ff fe a7 4f ec dd a9 28 d2 3e 25 9f 5e e1 - -# p's CRT exponent dP: -db 16 80 2f 79 a2 f0 d4 5f 35 8d 69 fd 33 e4 4b -81 fa e8 28 62 2e 93 a5 42 53 e9 97 d0 1b 07 43 -75 9d a0 e8 12 b4 aa 4e 6c 8b ea b2 32 8d 54 31 -95 5a 41 8a 67 ff 26 a8 c5 c8 07 a5 da 35 4e 05 -ef 31 cc 8c f7 58 f4 63 73 29 50 b0 3e 26 57 26 -fb 94 e3 9d 6a 57 2a 26 24 4a b0 8d b7 57 52 ad - -# q's CRT exponent dQ: -a0 a3 17 cf e7 df 14 23 f8 7a 6d ee 84 51 f4 e2 -b4 a6 7e 54 97 f2 9b 4f 1e 4e 83 0b 9f ad d9 40 -11 67 02 6f 55 96 e5 a3 9c 97 81 7e 0f 5f 16 e2 -7e 19 ec 99 02 e0 1d 7e a6 fb 9a a3 c7 60 af ee -1e 38 1b 69 de 6a c9 c0 75 85 a0 6a d9 c4 ba 00 -bf 75 c8 ad 2f a8 98 a4 79 e8 0a e2 94 fe d2 a1 - -# CRT coefficient qInv: -0b 21 f3 35 c3 53 34 2e b4 4c 3a a2 44 45 78 0c -2d 65 5b 94 01 74 ca e3 8c 7c 8a 4e 64 93 c0 ba -9f d3 03 74 82 67 b0 83 b9 a7 a6 cb 61 e4 2d b3 -62 b8 c9 89 6d b7 06 4e 02 ad 5a e6 15 87 da 15 -b4 64 9c 90 59 49 09 fe b3 7d bc b6 54 be b7 26 -8e c8 01 e5 a8 b4 aa 39 11 be bd 88 54 2f 05 be - -# --------------------------------- -# RSAES-OAEP Encryption Example 9.1 -# --------------------------------- - -# Message to be encrypted: -f7 35 fd 55 ba 92 59 2c 3b 52 b8 f9 c4 f6 9a aa -1c be f8 fe 88 ad d0 95 59 54 12 46 7f 9c f4 ec -0b 89 6c 59 ed a1 62 10 e7 54 9c 8a bb 10 cd bc -21 a1 2e c9 b6 b5 b8 fd 2f 10 39 9e b6 - -# Seed: -8e c9 65 f1 34 a3 ec 99 31 e9 2a 1c a0 dc 81 69 -d5 ea 70 5c - -# Encryption: -26 7b cd 11 8a ca b1 fc 8b a8 1c 85 d7 30 03 cb -86 10 fa 55 c1 d9 7d a8 d4 8a 7c 7f 06 89 6a 4d -b7 51 aa 28 42 55 b9 d3 6a d6 5f 37 65 3d 82 9f -1b 37 f9 7b 80 01 94 25 45 b2 fc 2c 55 a7 37 6c -a7 a1 be 4b 17 60 c8 e0 5a 33 e5 aa 25 26 b8 d9 -8e 31 70 88 e7 83 4c 75 5b 2a 59 b1 26 31 a1 82 -c0 5d 5d 43 ab 17 79 26 4f 84 56 f5 15 ce 57 df -df 51 2d 54 93 da b7 b7 33 8d c4 b7 d7 8d b9 c0 -91 ac 3b af 53 7a 69 fc 7f 54 9d 97 9f 0e ff 9a -94 fd a4 16 9b d4 d1 d1 9a 69 c9 9e 33 c3 b5 54 -90 d5 01 b3 9b 1e da e1 18 ff 67 93 a1 53 26 15 -84 d3 a5 f3 9f 6e 68 2e 3d 17 c8 cd 12 61 fa 72 - -# --------------------------------- -# RSAES-OAEP Encryption Example 9.2 -# --------------------------------- - -# Message to be encrypted: -81 b9 06 60 50 15 a6 3a ab e4 2d df 11 e1 97 89 -12 f5 40 4c 74 74 b2 6d ce 3e d4 82 bf 96 1e cc -81 8b f4 20 c5 46 59 - -# Seed: -ec b1 b8 b2 5f a5 0c da b0 8e 56 04 28 67 f4 af -58 26 d1 6c - -# Encryption: -93 ac 9f 06 71 ec 29 ac bb 44 4e ff c1 a5 74 13 -51 d6 0f db 0e 39 3f bf 75 4a cf 0d e4 97 61 a1 -48 41 df 77 72 e9 bc 82 77 39 66 a1 58 4c 4d 72 -ba ea 00 11 8f 83 f3 5c ca 6e 53 7c bd 4d 81 1f -55 83 b2 97 83 d8 a6 d9 4c d3 1b e7 0d 6f 52 6c -10 ff 09 c6 fa 7c e0 69 79 5a 3f cd 05 11 fd 5f -cb 56 4b cc 80 ea 9c 78 f3 8b 80 01 25 39 d8 a4 -dd f6 fe 81 e9 cd db 7f 50 db bb bc c7 e5 d8 60 -97 cc f4 ec 49 18 9f b8 bf 31 8b e6 d5 a0 71 5d -51 6b 49 af 19 12 58 cd 32 dc 83 3c e6 eb 46 73 -c0 3a 19 bb ac e8 8c c5 48 95 f6 36 cc 0c 1e c8 -90 96 d1 1c e2 35 a2 65 ca 17 64 23 2a 68 9a e8 - -# --------------------------------- -# RSAES-OAEP Encryption Example 9.3 -# --------------------------------- - -# Message to be encrypted: -fd 32 64 29 df 9b 89 0e 09 b5 4b 18 b8 f3 4f 1e -24 - -# Seed: -e8 9b b0 32 c6 ce 62 2c bd b5 3b c9 46 60 14 ea -77 f7 77 c0 - -# Encryption: -81 eb dd 95 05 4b 0c 82 2e f9 ad 76 93 f5 a8 7a -df b4 b4 c4 ce 70 df 2d f8 4e d4 9c 04 da 58 ba -5f c2 0a 19 e1 a6 e8 b7 a3 90 0b 22 79 6d c4 e8 -69 ee 6b 42 79 2d 15 a8 ec eb 56 c0 9c 69 91 4e -81 3c ea 8f 69 31 e4 b8 ed 6f 42 1a f2 98 d5 95 -c9 7f 47 89 c7 ca a6 12 c7 ef 36 09 84 c2 1b 93 -ed c5 40 10 68 b5 af 4c 78 a8 77 1b 98 4d 53 b8 -ea 8a df 2f 6a 7d 4a 0b a7 6c 75 e1 dd 9f 65 8f -20 de d4 a4 60 71 d4 6d 77 91 b5 68 03 d8 fe a7 -f0 b0 f8 e4 1a e3 f0 93 83 a6 f9 58 5f e7 75 3e -aa ff d2 bf 94 56 31 08 be ec c2 07 bb b5 35 f5 -fc c7 05 f0 dd e9 f7 08 c6 2f 49 a9 c9 03 71 d3 - -# --------------------------------- -# RSAES-OAEP Encryption Example 9.4 -# --------------------------------- - -# Message to be encrypted: -f1 45 9b 5f 0c 92 f0 1a 0f 72 3a 2e 56 62 48 4d -8f 8c 0a 20 fc 29 da d6 ac d4 3b b5 f3 ef fd f4 -e1 b6 3e 07 fd fe 66 28 d0 d7 4c a1 9b f2 d6 9e -4a 0a bf 86 d2 93 92 5a 79 67 72 f8 08 8e - -# Seed: -60 6f 3b 99 c0 b9 cc d7 71 ea a2 9e a0 e4 c8 84 -f3 18 9c cc - -# Encryption: -bc c3 5f 94 cd e6 6c b1 13 66 25 d6 25 b9 44 32 -a3 5b 22 f3 d2 fa 11 a6 13 ff 0f ca 5b d5 7f 87 -b9 02 cc dc 1c d0 ae bc b0 71 5e e8 69 d1 d1 fe -39 5f 67 93 00 3f 5e ca 46 50 59 c8 86 60 d4 46 -ff 5f 08 18 55 20 22 55 7e 38 c0 8a 67 ea d9 91 -26 22 54 f1 06 82 97 5e c5 63 97 76 85 37 f4 97 -7a f6 d5 f6 aa ce b7 fb 25 de c5 93 72 30 23 1f -d8 97 8a f4 91 19 a2 9f 29 e4 24 ab 82 72 b4 75 -62 79 2d 5c 94 f7 74 b8 82 9d 0b 0d 9f 1a 8c 9e -dd f3 75 74 d5 fa 24 8e ef a9 c5 27 1f c5 ec 25 -79 c8 1b dd 61 b4 10 fa 61 fe 36 e4 24 22 1c 11 -3a dd b2 75 66 4c 80 1d 34 ca 8c 63 51 e4 a8 58 - -# --------------------------------- -# RSAES-OAEP Encryption Example 9.5 -# --------------------------------- - -# Message to be encrypted: -53 e6 e8 c7 29 d6 f9 c3 19 dd 31 7e 74 b0 db 8e -4c cc a2 5f 3c 83 05 74 6e 13 7a c6 3a 63 ef 37 -39 e7 b5 95 ab b9 6e 8d 55 e5 4f 7b d4 1a b4 33 -37 8f fb 91 1d - -# Seed: -fc bc 42 14 02 e9 ec ab c6 08 2a fa 40 ba 5f 26 -52 2c 84 0e - -# Encryption: -23 2a fb c9 27 fa 08 c2 f6 a2 7b 87 d4 a5 cb 09 -c0 7d c2 6f ae 73 d7 3a 90 55 88 39 f4 fd 66 d2 -81 b8 7e c7 34 bc e2 37 ba 16 66 98 ed 82 91 06 -a7 de 69 42 cd 6c dc e7 8f ed 8d 2e 4d 81 42 8e -66 49 0d 03 62 64 ce f9 2a f9 41 d3 e3 50 55 fe -39 81 e1 4d 29 cb b9 a4 f6 74 73 06 3b ae c7 9a -11 79 f5 a1 7c 9c 18 32 f2 83 8f d7 d5 e5 9b b9 -65 9d 56 dc e8 a0 19 ed ef 1b b3 ac cc 69 7c c6 -cc 7a 77 8f 60 a0 64 c7 f6 f5 d5 29 c6 21 02 62 -e0 03 de 58 3e 81 e3 16 7b 89 97 1f b8 c0 e1 5d -44 ff fe f8 9b 53 d8 d6 4d d7 97 d1 59 b5 6d 2b -08 ea 53 07 ea 12 c2 41 bd 58 d4 ee 27 8a 1f 2e - -# --------------------------------- -# RSAES-OAEP Encryption Example 9.6 -# --------------------------------- - -# Message to be encrypted: -b6 b2 8e a2 19 8d 0c 10 08 bc 64 - -# Seed: -23 aa de 0e 1e 08 bb 9b 9a 78 d2 30 2a 52 f9 c2 -1b 2e 1b a2 - -# Encryption: -43 8c c7 dc 08 a6 8d a2 49 e4 25 05 f8 57 3b a6 -0e 2c 27 73 d5 b2 90 f4 cf 9d ff 71 8e 84 20 81 -c3 83 e6 70 24 a0 f2 95 94 ea 98 7b 9d 25 e4 b7 -38 f2 85 97 0d 19 5a bb 3a 8c 80 54 e3 d7 9d 6b -9c 9a 83 27 ba 59 6f 12 59 e2 71 26 67 47 66 90 -7d 8d 58 2f f3 a8 47 61 54 92 9a db 1e 6d 12 35 -b2 cc b4 ec 8f 66 3b a9 cc 67 0a 92 be bd 85 3c -8d bf 69 c6 43 6d 01 6f 61 ad d8 36 e9 47 32 45 -04 34 20 7f 9f d4 c4 3d ec 2a 12 a9 58 ef a0 1e -fe 26 69 89 9b 5e 60 4c 25 5c 55 fb 71 66 de 55 -89 e3 69 59 7b b0 91 68 c0 6d d5 db 17 7e 06 a1 -74 0e b2 d5 c8 2f ae ca 6d 92 fc ee 99 31 ba 9f - -# ============================================= - -# =================================== -# Example 10: A 2048-bit RSA Key Pair -# =================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -ae 45 ed 56 01 ce c6 b8 cc 05 f8 03 93 5c 67 4d -db e0 d7 5c 4c 09 fd 79 51 fc 6b 0c ae c3 13 a8 -df 39 97 0c 51 8b ff ba 5e d6 8f 3f 0d 7f 22 a4 -02 9d 41 3f 1a e0 7e 4e be 9e 41 77 ce 23 e7 f5 -40 4b 56 9e 4e e1 bd cf 3c 1f b0 3e f1 13 80 2d -4f 85 5e b9 b5 13 4b 5a 7c 80 85 ad ca e6 fa 2f -a1 41 7e c3 76 3b e1 71 b0 c6 2b 76 0e de 23 c1 -2a d9 2b 98 08 84 c6 41 f5 a8 fa c2 6b da d4 a0 -33 81 a2 2f e1 b7 54 88 50 94 c8 25 06 d4 01 9a -53 5a 28 6a fe b2 71 bb 9b a5 92 de 18 dc f6 00 -c2 ae ea e5 6e 02 f7 cf 79 fc 14 cf 3b dc 7c d8 -4f eb bb f9 50 ca 90 30 4b 22 19 a7 aa 06 3a ef -a2 c3 c1 98 0e 56 0c d6 4a fe 77 95 85 b6 10 76 -57 b9 57 85 7e fd e6 01 09 88 ab 7d e4 17 fc 88 -d8 f3 84 c4 e6 e7 2c 3f 94 3e 0c 31 c0 c4 a5 cc -36 f8 79 d8 a3 ac 9d 7d 59 86 0e aa da 6b 83 bb - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -05 6b 04 21 6f e5 f3 54 ac 77 25 0a 4b 6b 0c 85 -25 a8 5c 59 b0 bd 80 c5 64 50 a2 2d 5f 43 8e 59 -6a 33 3a a8 75 e2 91 dd 43 f4 8c b8 8b 9d 5f c0 -d4 99 f9 fc d1 c3 97 f9 af c0 70 cd 9e 39 8c 8d -19 e6 1d b7 c7 41 0a 6b 26 75 df bf 5d 34 5b 80 -4d 20 1a dd 50 2d 5c e2 df cb 09 1c e9 99 7b be -be 57 30 6f 38 3e 4d 58 81 03 f0 36 f7 e8 5d 19 -34 d1 52 a3 23 e4 a8 db 45 1d 6f 4a 5b 1b 0f 10 -2c c1 50 e0 2f ee e2 b8 8d ea 4a d4 c1 ba cc b2 -4d 84 07 2d 14 e1 d2 4a 67 71 f7 40 8e e3 05 64 -fb 86 d4 39 3a 34 bc f0 b7 88 50 1d 19 33 03 f1 -3a 22 84 b0 01 f0 f6 49 ea f7 93 28 d4 ac 5c 43 -0a b4 41 49 20 a9 46 0e d1 b7 bc 40 ec 65 3e 87 -6d 09 ab c5 09 ae 45 b5 25 19 01 16 a0 c2 61 01 -84 82 98 50 9c 1c 3b f3 a4 83 e7 27 40 54 e1 5e -97 07 50 36 e9 89 f6 09 32 80 7b 52 57 75 1e 79 - -# Prime p: -ec f5 ae cd 1e 55 15 ff fa cb d7 5a 28 16 c6 eb -f4 90 18 cd fb 46 38 e1 85 d6 6a 73 96 b6 f8 09 -0f 80 18 c7 fd 95 cc 34 b8 57 dc 17 f0 cc 65 16 -bb 13 46 ab 4d 58 2c ad ad 7b 41 03 35 23 87 b7 -03 38 d0 84 04 7c 9d 95 39 b6 49 62 04 b3 dd 6e -a4 42 49 92 07 be c0 1f 96 42 87 ff 63 36 c3 98 -46 58 33 68 46 f5 6e 46 86 18 81 c1 02 33 d2 17 -6b f1 5a 5e 96 dd c7 80 bc 86 8a a7 7d 3c e7 69 - -# Prime q: -bc 46 c4 64 fc 6a c4 ca 78 3b 0e b0 8a 3c 84 1b -77 2f 7e 9b 2f 28 ba bd 58 8a e8 85 e1 a0 c6 1e -48 58 a0 fb 25 ac 29 99 90 f3 5b e8 51 64 c2 59 -ba 11 75 cd d7 19 27 07 13 51 84 99 2b 6c 29 b7 -46 dd 0d 2c ab e1 42 83 5f 7d 14 8c c1 61 52 4b -4a 09 94 6d 48 b8 28 47 3f 1c e7 6b 6c b6 88 6c -34 5c 03 e0 5f 41 d5 1b 5c 3a 90 a3 f2 40 73 c7 -d7 4a 4f e2 5d 9c f2 1c 75 96 0f 3f c3 86 31 83 - -# p's CRT exponent dP: -c7 35 64 57 1d 00 fb 15 d0 8a 3d e9 95 7a 50 91 -5d 71 26 e9 44 2d ac f4 2b c8 2e 86 2e 56 73 ff -6a 00 8e d4 d2 e3 74 61 7d f8 9f 17 a1 60 b4 3b -7f da 9c b6 b6 b7 42 18 60 98 15 f7 d4 5c a2 63 -c1 59 aa 32 d2 72 d1 27 fa f4 bc 8c a2 d7 73 78 -e8 ae b1 9b 0a d7 da 3c b3 de 0a e7 31 49 80 f6 -2b 6d 4b 0a 87 5d 1d f0 3c 1b ae 39 cc d8 33 ef -6c d7 e2 d9 52 8b f0 84 d1 f9 69 e7 94 e9 f6 c1 - -# q's CRT exponent dQ: -26 58 b3 7f 6d f9 c1 03 0b e1 db 68 11 7f a9 d8 -7e 39 ea 2b 69 3b 7e 6d 3a 2f 70 94 74 13 ee c6 -14 2e 18 fb 8d fc b6 ac 54 5d 7c 86 a0 ad 48 f8 -45 71 70 f0 ef b2 6b c4 81 26 c5 3e fd 1d 16 92 -01 98 dc 2a 11 07 dc 28 2d b6 a8 0c d3 06 23 60 -ba 3f a1 3f 70 e4 31 2f f1 a6 cd 6b 8f c4 cd 9c -5c 3d b1 7c 6d 6a 57 21 2f 73 ae 29 f6 19 32 7b -ad 59 b1 53 85 85 85 ba 4e 28 b6 0a 62 a4 5e 49 - -# CRT coefficient qInv: -6f 38 52 6b 39 25 08 55 34 ef 3e 41 5a 83 6e de -8b 86 15 8a 2c 7c bf ec cb 0b d8 34 30 4f ec 68 -3b a8 d4 f4 79 c4 33 d4 34 16 e6 32 69 62 3c ea -10 07 76 d8 5a ff 40 1d 3f ff 61 0e e6 54 11 ce -3b 13 63 d6 3a 97 09 ee de 42 64 7c ea 56 14 93 -d5 45 70 a8 79 c1 86 82 cd 97 71 0b 96 20 5e c3 -11 17 d7 3b 5f 36 22 3f ad d6 e8 ba 90 dd 7c 0e -e6 1d 44 e1 63 25 1e 20 c7 f6 6e b3 05 11 7c b8 - -# ---------------------------------- -# RSAES-OAEP Encryption Example 10.1 -# ---------------------------------- - -# Message to be encrypted: -8b ba 6b f8 2a 6c 0f 86 d5 f1 75 6e 97 95 68 70 -b0 89 53 b0 6b 4e b2 05 bc 16 94 ee - -# Seed: -47 e1 ab 71 19 fe e5 6c 95 ee 5e aa d8 6f 40 d0 -aa 63 bd 33 - -# Encryption: -53 ea 5d c0 8c d2 60 fb 3b 85 85 67 28 7f a9 15 -52 c3 0b 2f eb fb a2 13 f0 ae 87 70 2d 06 8d 19 -ba b0 7f e5 74 52 3d fb 42 13 9d 68 c3 c5 af ee -e0 bf e4 cb 79 69 cb f3 82 b8 04 d6 e6 13 96 14 -4e 2d 0e 60 74 1f 89 93 c3 01 4b 58 b9 b1 95 7a -8b ab cd 23 af 85 4f 4c 35 6f b1 66 2a a7 2b fc -c7 e5 86 55 9d c4 28 0d 16 0c 12 67 85 a7 23 eb -ee be ff 71 f1 15 94 44 0a ae f8 7d 10 79 3a 87 -74 a2 39 d4 a0 4c 87 fe 14 67 b9 da f8 52 08 ec -6c 72 55 79 4a 96 cc 29 14 2f 9a 8b d4 18 e3 c1 -fd 67 34 4b 0c d0 82 9d f3 b2 be c6 02 53 19 62 -93 c6 b3 4d 3f 75 d3 2f 21 3d d4 5c 62 73 d5 05 -ad f4 cc ed 10 57 cb 75 8f c2 6a ee fa 44 12 55 -ed 4e 64 c1 99 ee 07 5e 7f 16 64 61 82 fd b4 64 -73 9b 68 ab 5d af f0 e6 3e 95 52 01 68 24 f0 54 -bf 4d 3c 8c 90 a9 7b b6 b6 55 32 84 eb 42 9f cc - -# ---------------------------------- -# RSAES-OAEP Encryption Example 10.2 -# ---------------------------------- - -# Message to be encrypted: -e6 ad 18 1f 05 3b 58 a9 04 f2 45 75 10 37 3e 57 - -# Seed: -6d 17 f5 b4 c1 ff ac 35 1d 19 5b f7 b0 9d 09 f0 -9a 40 79 cf - -# Encryption: -a2 b1 a4 30 a9 d6 57 e2 fa 1c 2b b5 ed 43 ff b2 -5c 05 a3 08 fe 90 93 c0 10 31 79 5f 58 74 40 01 -10 82 8a e5 8f b9 b5 81 ce 9d dd d3 e5 49 ae 04 -a0 98 54 59 bd e6 c6 26 59 4e 7b 05 dc 42 78 b2 -a1 46 5c 13 68 40 88 23 c8 5e 96 dc 66 c3 a3 09 -83 c6 39 66 4f c4 56 9a 37 fe 21 e5 a1 95 b5 77 -6e ed 2d f8 d8 d3 61 af 68 6e 75 02 29 bb d6 63 -f1 61 86 8a 50 61 5e 0c 33 7b ec 0c a3 5f ec 0b -b1 9c 36 eb 2e 0b bc c0 58 2f a1 d9 3a ac db 06 -10 63 f5 9f 2c e1 ee 43 60 5e 5d 89 ec a1 83 d2 -ac df e9 f8 10 11 02 2a d3 b4 3a 3d d4 17 da c9 -4b 4e 11 ea 81 b1 92 96 6e 96 6b 18 20 82 e7 19 -64 60 7b 4f 80 02 f3 62 99 84 4a 11 f2 ae 0f ae -ac 2e ae 70 f8 f4 f9 80 88 ac dc d0 ac 55 6e 9f -cc c5 11 52 19 08 fa d2 6f 04 c6 42 01 45 03 05 -77 87 58 b0 53 8b f8 b5 bb 14 4a 82 8e 62 97 95 - -# ---------------------------------- -# RSAES-OAEP Encryption Example 10.3 -# ---------------------------------- - -# Message to be encrypted: -51 0a 2c f6 0e 86 6f a2 34 05 53 c9 4e a3 9f bc -25 63 11 e8 3e 94 45 4b 41 24 - -# Seed: -38 53 87 51 4d ec cc 7c 74 0d d8 cd f9 da ee 49 -a1 cb fd 54 - -# Encryption: -98 86 c3 e6 76 4a 8b 9a 84 e8 41 48 eb d8 c3 b1 -aa 80 50 38 1a 78 f6 68 71 4c 16 d9 cf d2 a6 ed -c5 69 79 c5 35 d9 de e3 b4 4b 85 c1 8b e8 92 89 -92 37 17 11 47 22 16 d9 5d da 98 d2 ee 83 47 c9 -b1 4d ff df f8 4a a4 8d 25 ac 06 f7 d7 e6 53 98 -ac 96 7b 1c e9 09 25 f6 7d ce 04 9b 7f 81 2d b0 -74 29 97 a7 4d 44 fe 81 db e0 e7 a3 fe af 2e 5c -40 af 88 8d 55 0d db be 3b c2 06 57 a2 95 43 f8 -fc 29 13 b9 bd 1a 61 b2 ab 22 56 ec 40 9b bd 7d -c0 d1 77 17 ea 25 c4 3f 42 ed 27 df 87 38 bf 4a -fc 67 66 ff 7a ff 08 59 55 5e e2 83 92 0f 4c 8a -63 c4 a7 34 0c ba fd dc 33 9e cd b4 b0 51 50 02 -f9 6c 93 2b 5b 79 16 7a f6 99 c0 ad 3f cc fd f0 -f4 4e 85 a7 02 62 bf 2e 18 fe 34 b8 50 58 99 75 -e8 67 ff 96 9d 48 ea bf 21 22 71 54 6c dc 05 a6 -9e cb 52 6e 52 87 0c 83 6f 30 7b d7 98 78 0e de - -# ---------------------------------- -# RSAES-OAEP Encryption Example 10.4 -# ---------------------------------- - -# Message to be encrypted: -bc dd 19 0d a3 b7 d3 00 df 9a 06 e2 2c aa e2 a7 -5f 10 c9 1f f6 67 b7 c1 6b de 8b 53 06 4a 26 49 -a9 40 45 c9 - -# Seed: -5c ac a6 a0 f7 64 16 1a 96 84 f8 5d 92 b6 e0 ef -37 ca 8b 65 - -# Encryption: -63 18 e9 fb 5c 0d 05 e5 30 7e 16 83 43 6e 90 32 -93 ac 46 42 35 8a aa 22 3d 71 63 01 3a ba 87 e2 -df da 8e 60 c6 86 0e 29 a1 e9 26 86 16 3e a0 b9 -17 5f 32 9c a3 b1 31 a1 ed d3 a7 77 59 a8 b9 7b -ad 6a 4f 8f 43 96 f2 8c f6 f3 9c a5 81 12 e4 81 -60 d6 e2 03 da a5 85 6f 3a ca 5f fe d5 77 af 49 -94 08 e3 df d2 33 e3 e6 04 db e3 4a 9c 4c 90 82 -de 65 52 7c ac 63 31 d2 9d c8 0e 05 08 a0 fa 71 -22 e7 f3 29 f6 cc a5 cf a3 4d 4d 1d a4 17 80 54 -57 e0 08 be c5 49 e4 78 ff 9e 12 a7 63 c4 77 d1 -5b bb 78 f5 b6 9b d5 78 30 fc 2c 4e d6 86 d7 9b -c7 2a 95 d8 5f 88 13 4c 6b 0a fe 56 a8 cc fb c8 -55 82 8b b3 39 bd 17 90 9c f1 d7 0d e3 33 5a e0 -70 39 09 3e 60 6d 65 53 65 de 65 50 b8 72 cd 6d -e1 d4 40 ee 03 1b 61 94 5f 62 9a d8 a3 53 b0 d4 -09 39 e9 6a 3c 45 0d 2a 8d 5e ee 9f 67 80 93 c8 - -# ---------------------------------- -# RSAES-OAEP Encryption Example 10.5 -# ---------------------------------- - -# Message to be encrypted: -a7 dd 6c 7d c2 4b 46 f9 dd 5f 1e 91 ad a4 c3 b3 -df 94 7e 87 72 32 a9 - -# Seed: -95 bc a9 e3 85 98 94 b3 dd 86 9f a7 ec d5 bb c6 -40 1b f3 e4 - -# Encryption: -75 29 08 72 cc fd 4a 45 05 66 0d 65 1f 56 da 6d -aa 09 ca 13 01 d8 90 63 2f 6a 99 2f 3d 56 5c ee -46 4a fd ed 40 ed 3b 5b e9 35 67 14 ea 5a a7 65 -5f 4a 13 66 c2 f1 7c 72 8f 6f 2c 5a 5d 1f 8e 28 -42 9b c4 e6 f8 f2 cf f8 da 8d c0 e0 a9 80 8e 45 -fd 09 ea 2f a4 0c b2 b6 ce 6f ff f5 c0 e1 59 d1 -1b 68 d9 0a 85 f7 b8 4e 10 3b 09 e6 82 66 64 80 -c6 57 50 5c 09 29 25 94 68 a3 14 78 6d 74 ea b1 -31 57 3c f2 34 bf 57 db 7d 9e 66 cc 67 48 19 2e -00 2d c0 de ea 93 05 85 f0 83 1f dc d9 bc 33 d5 -1f 79 ed 2f fc 16 bc f4 d5 98 12 fc eb ca a3 f9 -06 9b 0e 44 56 86 d6 44 c2 5c cf 63 b4 56 ee 5f -a6 ff e9 6f 19 cd f7 51 fe d9 ea f3 59 57 75 4d -bf 4b fe a5 21 6a a1 84 4d c5 07 cb 2d 08 0e 72 -2e ba 15 03 08 c2 b5 ff 11 93 62 0f 17 66 ec f4 -48 1b af b9 43 bd 29 28 77 f2 13 6c a4 94 ab a0 - -# ---------------------------------- -# RSAES-OAEP Encryption Example 10.6 -# ---------------------------------- - -# Message to be encrypted: -ea f1 a7 3a 1b 0c 46 09 53 7d e6 9c d9 22 8b bc -fb 9a 8c a8 c6 c3 ef af 05 6f e4 a7 f4 63 4e d0 -0b 7c 39 ec 69 22 d7 b8 ea 2c 04 eb ac - -# Seed: -9f 47 dd f4 2e 97 ee a8 56 a9 bd bc 71 4e b3 ac -22 f6 eb 32 - -# Encryption: -2d 20 7a 73 43 2a 8f b4 c0 30 51 b3 f7 3b 28 a6 -17 64 09 8d fa 34 c4 7a 20 99 5f 81 15 aa 68 16 -67 9b 55 7e 82 db ee 58 49 08 c6 e6 97 82 d7 de -b3 4d bd 65 af 06 3d 57 fc a7 6a 5f d0 69 49 2f -d6 06 8d 99 84 d2 09 35 05 65 a6 2e 5c 77 f2 30 -38 c1 2c b1 0c 66 34 70 9b 54 7c 46 f6 b4 a7 09 -bd 85 ca 12 2d 74 46 5e f9 77 62 c2 97 63 e0 6d -bc 7a 9e 73 8c 78 bf ca 01 02 dc 5e 79 d6 5b 97 -3f 28 24 0c aa b2 e1 61 a7 8b 57 d2 62 45 7e d8 -19 5d 53 e3 c7 ae 9d a0 21 88 3c 6d b7 c2 4a fd -d2 32 2e ac 97 2a d3 c3 54 c5 fc ef 1e 14 6c 3a -02 90 fb 67 ad f0 07 06 6e 00 42 8d 2c ec 18 ce -58 f9 32 86 98 de fe f4 b2 eb 5e c7 69 18 fd e1 -c1 98 cb b3 8b 7a fc 67 62 6a 9a ef ec 43 22 bf -d9 0d 25 63 48 1c 9a 22 1f 78 c8 27 2c 82 d1 b6 -2a b9 14 e1 c6 9f 6a f6 ef 30 ca 52 60 db 4a 46 - -# ============================================= diff --git a/src/libtomcrypt/notes/rsa-testvectors/pkcs1v15crypt-vectors.c b/src/libtomcrypt/notes/rsa-testvectors/pkcs1v15crypt-vectors.c deleted file mode 100644 index ce96cf28c2..0000000000 --- a/src/libtomcrypt/notes/rsa-testvectors/pkcs1v15crypt-vectors.c +++ /dev/null @@ -1,5463 +0,0 @@ -/* Generated from file: pkcs1v15crypt-vectors.txt - * with md5 hash: 120f611de26e7eb0f0e16da16639539c - */ - - -typedef struct rsaKey { - int n_l; - unsigned char n[256]; - int e_l; - unsigned char e[256]; - int d_l; - unsigned char d[256]; - int p_l; - unsigned char p[256]; - int q_l; - unsigned char q[256]; - int dP_l; - unsigned char dP[256]; - int dQ_l; - unsigned char dQ[256]; - int qInv_l; - unsigned char qInv[256]; -} rsaKey_t; - -typedef struct rsaData { - const char* name; - int o1_l; - unsigned char o1[256]; - int o2_l; - unsigned char o2[256]; - int o3_l; - unsigned char o3[256]; -} rsaData_t; - -typedef struct testcase { - const char* name; - rsaKey_t rsa; -#ifdef LTC_TEST_EXT - rsaData_t data[20]; -#else - rsaData_t data[1]; -#endif /* LTC_TEST_EXT */ -} testcase_t; - -testcase_t testcases_eme[] = - { -{ - "Example 1: A 1024-bit RSA key pair", -{ - /* Modulus */ - 128, - { 0xa8, 0xb3, 0xb2, 0x84, 0xaf, 0x8e, 0xb5, 0x0b, 0x38, 0x70, 0x34, 0xa8, 0x60, 0xf1, 0x46, 0xc4, 0x91, 0x9f, 0x31, 0x87, 0x63, 0xcd, 0x6c, 0x55, 0x98, 0xc8, 0xae, 0x48, 0x11, 0xa1, 0xe0, 0xab, 0xc4, 0xc7, 0xe0, 0xb0, 0x82, 0xd6, 0x93, 0xa5, 0xe7, 0xfc, 0xed, 0x67, 0x5c, 0xf4, 0x66, 0x85, 0x12, 0x77, 0x2c, 0x0c, 0xbc, 0x64, 0xa7, 0x42, 0xc6, 0xc6, 0x30, 0xf5, 0x33, 0xc8, 0xcc, 0x72, 0xf6, 0x2a, 0xe8, 0x33, 0xc4, 0x0b, 0xf2, 0x58, 0x42, 0xe9, 0x84, 0xbb, 0x78, 0xbd, 0xbf, 0x97, 0xc0, 0x10, 0x7d, 0x55, 0xbd, 0xb6, 0x62, 0xf5, 0xc4, 0xe0, 0xfa, 0xb9, 0x84, 0x5c, 0xb5, 0x14, 0x8e, 0xf7, 0x39, 0x2d, 0xd3, 0xaa, 0xff, 0x93, 0xae, 0x1e, 0x6b, 0x66, 0x7b, 0xb3, 0xd4, 0x24, 0x76, 0x16, 0xd4, 0xf5, 0xba, 0x10, 0xd4, 0xcf, 0xd2, 0x26, 0xde, 0x88, 0xd3, 0x9f, 0x16, 0xfb } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x53, 0x33, 0x9c, 0xfd, 0xb7, 0x9f, 0xc8, 0x46, 0x6a, 0x65, 0x5c, 0x73, 0x16, 0xac, 0xa8, 0x5c, 0x55, 0xfd, 0x8f, 0x6d, 0xd8, 0x98, 0xfd, 0xaf, 0x11, 0x95, 0x17, 0xef, 0x4f, 0x52, 0xe8, 0xfd, 0x8e, 0x25, 0x8d, 0xf9, 0x3f, 0xee, 0x18, 0x0f, 0xa0, 0xe4, 0xab, 0x29, 0x69, 0x3c, 0xd8, 0x3b, 0x15, 0x2a, 0x55, 0x3d, 0x4a, 0xc4, 0xd1, 0x81, 0x2b, 0x8b, 0x9f, 0xa5, 0xaf, 0x0e, 0x7f, 0x55, 0xfe, 0x73, 0x04, 0xdf, 0x41, 0x57, 0x09, 0x26, 0xf3, 0x31, 0x1f, 0x15, 0xc4, 0xd6, 0x5a, 0x73, 0x2c, 0x48, 0x31, 0x16, 0xee, 0x3d, 0x3d, 0x2d, 0x0a, 0xf3, 0x54, 0x9a, 0xd9, 0xbf, 0x7c, 0xbf, 0xb7, 0x8a, 0xd8, 0x84, 0xf8, 0x4d, 0x5b, 0xeb, 0x04, 0x72, 0x4d, 0xc7, 0x36, 0x9b, 0x31, 0xde, 0xf3, 0x7d, 0x0c, 0xf5, 0x39, 0xe9, 0xcf, 0xcd, 0xd3, 0xde, 0x65, 0x37, 0x29, 0xea, 0xd5, 0xd1 } -, - /* Prime 1 */ - 64, - { 0xd3, 0x27, 0x37, 0xe7, 0x26, 0x7f, 0xfe, 0x13, 0x41, 0xb2, 0xd5, 0xc0, 0xd1, 0x50, 0xa8, 0x1b, 0x58, 0x6f, 0xb3, 0x13, 0x2b, 0xed, 0x2f, 0x8d, 0x52, 0x62, 0x86, 0x4a, 0x9c, 0xb9, 0xf3, 0x0a, 0xf3, 0x8b, 0xe4, 0x48, 0x59, 0x8d, 0x41, 0x3a, 0x17, 0x2e, 0xfb, 0x80, 0x2c, 0x21, 0xac, 0xf1, 0xc1, 0x1c, 0x52, 0x0c, 0x2f, 0x26, 0xa4, 0x71, 0xdc, 0xad, 0x21, 0x2e, 0xac, 0x7c, 0xa3, 0x9d } -, - /* Prime 2 */ - 64, - { 0xcc, 0x88, 0x53, 0xd1, 0xd5, 0x4d, 0xa6, 0x30, 0xfa, 0xc0, 0x04, 0xf4, 0x71, 0xf2, 0x81, 0xc7, 0xb8, 0x98, 0x2d, 0x82, 0x24, 0xa4, 0x90, 0xed, 0xbe, 0xb3, 0x3d, 0x3e, 0x3d, 0x5c, 0xc9, 0x3c, 0x47, 0x65, 0x70, 0x3d, 0x1d, 0xd7, 0x91, 0x64, 0x2f, 0x1f, 0x11, 0x6a, 0x0d, 0xd8, 0x52, 0xbe, 0x24, 0x19, 0xb2, 0xaf, 0x72, 0xbf, 0xe9, 0xa0, 0x30, 0xe8, 0x60, 0xb0, 0x28, 0x8b, 0x5d, 0x77 } -, - /* Prime exponent 1 */ - 64, - { 0x0e, 0x12, 0xbf, 0x17, 0x18, 0xe9, 0xce, 0xf5, 0x59, 0x9b, 0xa1, 0xc3, 0x88, 0x2f, 0xe8, 0x04, 0x6a, 0x90, 0x87, 0x4e, 0xef, 0xce, 0x8f, 0x2c, 0xcc, 0x20, 0xe4, 0xf2, 0x74, 0x1f, 0xb0, 0xa3, 0x3a, 0x38, 0x48, 0xae, 0xc9, 0xc9, 0x30, 0x5f, 0xbe, 0xcb, 0xd2, 0xd7, 0x68, 0x19, 0x96, 0x7d, 0x46, 0x71, 0xac, 0xc6, 0x43, 0x1e, 0x40, 0x37, 0x96, 0x8d, 0xb3, 0x78, 0x78, 0xe6, 0x95, 0xc1 } -, - /* Prime exponent 2 */ - 64, - { 0x95, 0x29, 0x7b, 0x0f, 0x95, 0xa2, 0xfa, 0x67, 0xd0, 0x07, 0x07, 0xd6, 0x09, 0xdf, 0xd4, 0xfc, 0x05, 0xc8, 0x9d, 0xaf, 0xc2, 0xef, 0x6d, 0x6e, 0xa5, 0x5b, 0xec, 0x77, 0x1e, 0xa3, 0x33, 0x73, 0x4d, 0x92, 0x51, 0xe7, 0x90, 0x82, 0xec, 0xda, 0x86, 0x6e, 0xfe, 0xf1, 0x3c, 0x45, 0x9e, 0x1a, 0x63, 0x13, 0x86, 0xb7, 0xe3, 0x54, 0xc8, 0x99, 0xf5, 0xf1, 0x12, 0xca, 0x85, 0xd7, 0x15, 0x83 } -, - /* Coefficient */ - 64, - { 0x4f, 0x45, 0x6c, 0x50, 0x24, 0x93, 0xbd, 0xc0, 0xed, 0x2a, 0xb7, 0x56, 0xa3, 0xa6, 0xed, 0x4d, 0x67, 0x35, 0x2a, 0x69, 0x7d, 0x42, 0x16, 0xe9, 0x32, 0x12, 0xb1, 0x27, 0xa6, 0x3d, 0x54, 0x11, 0xce, 0x6f, 0xa9, 0x8d, 0x5d, 0xbe, 0xfd, 0x73, 0x26, 0x3e, 0x37, 0x28, 0x14, 0x27, 0x43, 0x81, 0x81, 0x66, 0xed, 0x7d, 0xd6, 0x36, 0x87, 0xdd, 0x2a, 0x8c, 0xa1, 0xd2, 0xf4, 0xfb, 0xd8, 0xe1 } - -} -, -{{ - "PKCS#1 v1.5 Encryption Example 1.1", - /* Message */ - 28, - { 0x66, 0x28, 0x19, 0x4e, 0x12, 0x07, 0x3d, 0xb0, 0x3b, 0xa9, 0x4c, 0xda, 0x9e, 0xf9, 0x53, 0x23, 0x97, 0xd5, 0x0d, 0xba, 0x79, 0xb9, 0x87, 0x00, 0x4a, 0xfe, 0xfe, 0x34 } -, - /* Seed */ - 97, - { 0x01, 0x73, 0x41, 0xae, 0x38, 0x75, 0xd5, 0xf8, 0x71, 0x01, 0xf8, 0xcc, 0x4f, 0xa9, 0xb9, 0xbc, 0x15, 0x6b, 0xb0, 0x46, 0x28, 0xfc, 0xcd, 0xb2, 0xf4, 0xf1, 0x1e, 0x90, 0x5b, 0xd3, 0xa1, 0x55, 0xd3, 0x76, 0xf5, 0x93, 0xbd, 0x73, 0x04, 0x21, 0x08, 0x74, 0xeb, 0xa0, 0x8a, 0x5e, 0x22, 0xbc, 0xcc, 0xb4, 0xc9, 0xd3, 0x88, 0x2a, 0x93, 0xa5, 0x4d, 0xb0, 0x22, 0xf5, 0x03, 0xd1, 0x63, 0x38, 0xb6, 0xb7, 0xce, 0x16, 0xdc, 0x7f, 0x4b, 0xbf, 0x9a, 0x96, 0xb5, 0x97, 0x72, 0xd6, 0x60, 0x6e, 0x97, 0x47, 0xc7, 0x64, 0x9b, 0xf9, 0xe0, 0x83, 0xdb, 0x98, 0x18, 0x84, 0xa9, 0x54, 0xab, 0x3c, 0x6f } -, - /* Encryption */ - 128, - { 0x50, 0xb4, 0xc1, 0x41, 0x36, 0xbd, 0x19, 0x8c, 0x2f, 0x3c, 0x3e, 0xd2, 0x43, 0xfc, 0xe0, 0x36, 0xe1, 0x68, 0xd5, 0x65, 0x17, 0x98, 0x4a, 0x26, 0x3c, 0xd6, 0x64, 0x92, 0xb8, 0x08, 0x04, 0xf1, 0x69, 0xd2, 0x10, 0xf2, 0xb9, 0xbd, 0xfb, 0x48, 0xb1, 0x2f, 0x9e, 0xa0, 0x50, 0x09, 0xc7, 0x7d, 0xa2, 0x57, 0xcc, 0x60, 0x0c, 0xce, 0xfe, 0x3a, 0x62, 0x83, 0x78, 0x9d, 0x8e, 0xa0, 0xe6, 0x07, 0xac, 0x58, 0xe2, 0x69, 0x0e, 0xc4, 0xeb, 0xc1, 0x01, 0x46, 0xe8, 0xcb, 0xaa, 0x5e, 0xd4, 0xd5, 0xcc, 0xe6, 0xfe, 0x7b, 0x0f, 0xf9, 0xef, 0xc1, 0xea, 0xbb, 0x56, 0x4d, 0xbf, 0x49, 0x82, 0x85, 0xf4, 0x49, 0xee, 0x61, 0xdd, 0x7b, 0x42, 0xee, 0x5b, 0x58, 0x92, 0xcb, 0x90, 0x60, 0x1f, 0x30, 0xcd, 0xa0, 0x7b, 0xf2, 0x64, 0x89, 0x31, 0x0b, 0xcd, 0x23, 0xb5, 0x28, 0xce, 0xab, 0x3c, 0x31 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Encryption Example 1.2", - /* Message */ - 28, - { 0x75, 0x0c, 0x40, 0x47, 0xf5, 0x47, 0xe8, 0xe4, 0x14, 0x11, 0x85, 0x65, 0x23, 0x29, 0x8a, 0xc9, 0xba, 0xe2, 0x45, 0xef, 0xaf, 0x13, 0x97, 0xfb, 0xe5, 0x6f, 0x9d, 0xd5 } -, - /* Seed */ - 97, - { 0xac, 0x47, 0x28, 0xa8, 0x42, 0x8c, 0x1e, 0x52, 0x24, 0x71, 0xa8, 0xdf, 0x73, 0x5a, 0x8e, 0x92, 0x92, 0xaf, 0x0d, 0x55, 0xbc, 0xb7, 0x3a, 0x12, 0xac, 0x32, 0xc2, 0x64, 0xf3, 0x88, 0x1c, 0x7c, 0x8a, 0x71, 0x0f, 0x70, 0xfe, 0xb1, 0x04, 0x85, 0xc8, 0x37, 0x0f, 0x78, 0x1f, 0xff, 0xd0, 0x21, 0x81, 0x6f, 0x05, 0x87, 0x39, 0x76, 0x6d, 0xa0, 0xa9, 0xc9, 0xdb, 0x0e, 0xae, 0x7e, 0x9a, 0x25, 0xb6, 0xc4, 0x33, 0x18, 0xd0, 0xca, 0xac, 0x23, 0x65, 0x22, 0xca, 0x31, 0x0f, 0x17, 0xfc, 0x52, 0xad, 0x42, 0x29, 0xc8, 0x3a, 0x24, 0xe9, 0xe5, 0x45, 0xeb, 0x35, 0xe9, 0x82, 0x6d, 0x55, 0x9f, 0x57 } -, - /* Encryption */ - 128, - { 0x68, 0x42, 0xe5, 0xe2, 0xcc, 0x00, 0x41, 0xd6, 0xb0, 0xc8, 0x1a, 0x56, 0x2c, 0x39, 0xa6, 0x17, 0x37, 0x9a, 0x51, 0x5c, 0xab, 0x74, 0xab, 0xcb, 0x26, 0x19, 0xc7, 0x74, 0x0a, 0x54, 0x1d, 0x95, 0x55, 0xdd, 0x91, 0x65, 0x97, 0x5b, 0xf8, 0xa3, 0xeb, 0xd0, 0xd0, 0x45, 0x66, 0x61, 0xdf, 0xb1, 0xa6, 0x86, 0x1b, 0xa2, 0x33, 0x22, 0x69, 0x93, 0x0e, 0x0d, 0xb5, 0x14, 0xfc, 0xa0, 0x73, 0x3e, 0xeb, 0x9c, 0x40, 0x57, 0x13, 0xeb, 0x1f, 0x9d, 0x76, 0x80, 0x33, 0xed, 0x29, 0x3e, 0x1e, 0x08, 0x1a, 0x12, 0x5f, 0x32, 0xdd, 0xb9, 0xea, 0x52, 0xed, 0xbe, 0x27, 0x5c, 0x4a, 0xf6, 0x0f, 0x8a, 0x7b, 0xf8, 0x32, 0xbd, 0x22, 0x75, 0x61, 0xc2, 0x08, 0xdc, 0x00, 0x31, 0xa8, 0x4b, 0x50, 0x12, 0xc9, 0xdd, 0x9f, 0x74, 0x45, 0x9d, 0xcb, 0x07, 0x0b, 0xdb, 0xe1, 0x3c, 0xfa, 0x8c, 0x2d, 0x50 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.3", - /* Message */ - 55, - { 0xd9, 0x4a, 0xe0, 0x83, 0x2e, 0x64, 0x45, 0xce, 0x42, 0x33, 0x1c, 0xb0, 0x6d, 0x53, 0x1a, 0x82, 0xb1, 0xdb, 0x4b, 0xaa, 0xd3, 0x0f, 0x74, 0x6d, 0xc9, 0x16, 0xdf, 0x24, 0xd4, 0xe3, 0xc2, 0x45, 0x1f, 0xff, 0x59, 0xa6, 0x42, 0x3e, 0xb0, 0xe1, 0xd0, 0x2d, 0x4f, 0xe6, 0x46, 0xcf, 0x69, 0x9d, 0xfd, 0x81, 0x8c, 0x6e, 0x97, 0xb0, 0x51 } -, - /* Seed */ - 70, - { 0xdd, 0x2d, 0x60, 0xa5, 0xe0, 0x08, 0xeb, 0xe1, 0xd0, 0xbe, 0x6f, 0x60, 0xdb, 0xc4, 0x3f, 0x29, 0x62, 0xef, 0x50, 0xbf, 0xde, 0x54, 0x2b, 0xbb, 0xe9, 0x8f, 0xed, 0xd1, 0xfe, 0xac, 0x05, 0x7e, 0x77, 0x1c, 0xf1, 0x5f, 0xc6, 0x32, 0xc8, 0xdb, 0x27, 0x2e, 0x28, 0xd2, 0x9b, 0x57, 0x93, 0xea, 0x6a, 0xb8, 0x06, 0x21, 0x8c, 0x53, 0x82, 0x39, 0xb9, 0x3a, 0x93, 0x5e, 0x65, 0xd2, 0x44, 0x16, 0xec, 0x6c, 0x6e, 0x99, 0xae, 0x04 } -, - /* Encryption */ - 128, - { 0x70, 0x9c, 0x7d, 0x2d, 0x45, 0x98, 0xc9, 0x60, 0x65, 0xb6, 0x58, 0x8d, 0xa2, 0xf8, 0x9f, 0xa8, 0x7f, 0x06, 0x2d, 0x72, 0x41, 0xef, 0x65, 0x95, 0x89, 0x8f, 0x63, 0x7a, 0xda, 0x57, 0xea, 0xe9, 0x01, 0x73, 0xf0, 0xfb, 0x4b, 0xf6, 0xa9, 0x1e, 0xbd, 0x96, 0x50, 0x69, 0x07, 0xc8, 0x53, 0xda, 0xcf, 0x20, 0x84, 0x94, 0xbe, 0x94, 0xd3, 0x13, 0xa0, 0x41, 0x85, 0xd4, 0x74, 0xa9, 0x07, 0x41, 0x2e, 0xff, 0xc3, 0xe0, 0x24, 0xd0, 0x7e, 0x4d, 0x09, 0xaa, 0x24, 0x5f, 0xbc, 0xb1, 0x30, 0x21, 0x9b, 0xfa, 0x5d, 0xe0, 0x2d, 0x4f, 0x7e, 0x2e, 0xc9, 0xe6, 0x2e, 0x8a, 0xd3, 0x2d, 0xee, 0x5f, 0xf4, 0xd8, 0xe4, 0xcf, 0xec, 0xbc, 0x50, 0x33, 0xa1, 0xc2, 0xc6, 0x1c, 0x52, 0x33, 0xae, 0x16, 0x19, 0x2a, 0x48, 0x1d, 0x00, 0x75, 0xbf, 0xc7, 0xce, 0x02, 0x82, 0x12, 0xcd, 0x27, 0xbe, 0xbe } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.4", - /* Message */ - 26, - { 0x52, 0xe6, 0x50, 0xd9, 0x8e, 0x7f, 0x2a, 0x04, 0x8b, 0x4f, 0x86, 0x85, 0x21, 0x53, 0xb9, 0x7e, 0x01, 0xdd, 0x31, 0x6f, 0x34, 0x6a, 0x19, 0xf6, 0x7a, 0x85 } -, - /* Seed */ - 99, - { 0x26, 0x29, 0xa7, 0xaa, 0xc0, 0xc3, 0x90, 0x5e, 0x83, 0x1e, 0xb6, 0x02, 0x38, 0x8c, 0x54, 0x5a, 0xf5, 0x54, 0xb9, 0x6b, 0x2a, 0xe5, 0x15, 0x32, 0xe9, 0xcc, 0xdb, 0x89, 0x72, 0xef, 0x30, 0xb6, 0x4a, 0x2f, 0x98, 0xc6, 0x95, 0x29, 0x7a, 0x01, 0xc5, 0x81, 0x2a, 0x2c, 0x40, 0x15, 0x82, 0xf3, 0x7b, 0x14, 0x4a, 0x3e, 0x90, 0xe5, 0x9d, 0x81, 0xb6, 0x90, 0x39, 0xc6, 0x4b, 0x84, 0x4b, 0x02, 0x8c, 0x10, 0x5c, 0x8e, 0x68, 0x36, 0x15, 0xaf, 0xb6, 0x58, 0xb6, 0xc4, 0xd9, 0xf3, 0x82, 0x38, 0xa7, 0x63, 0x01, 0xbb, 0x14, 0x44, 0x91, 0x13, 0xb6, 0x9d, 0xe1, 0x26, 0x04, 0x5e, 0x26, 0xf1, 0x3e, 0xe6, 0xd7 } -, - /* Encryption */ - 128, - { 0x54, 0xdd, 0xb7, 0x84, 0x26, 0x8e, 0xad, 0xb3, 0x95, 0x5b, 0xd9, 0xf9, 0x49, 0x88, 0x42, 0x59, 0x5a, 0xd2, 0x9f, 0xf8, 0xa6, 0x67, 0xfe, 0xb4, 0x1f, 0x6f, 0x53, 0x0c, 0xb6, 0x0b, 0xc9, 0x26, 0xac, 0x6c, 0x71, 0xc7, 0x72, 0xf8, 0x03, 0xd0, 0x22, 0xb4, 0x1c, 0xa5, 0x72, 0x04, 0x22, 0x3b, 0x27, 0xca, 0x79, 0xec, 0x5b, 0x72, 0x65, 0x2c, 0xa9, 0xaf, 0xbf, 0x40, 0xdc, 0x2f, 0x6a, 0x0e, 0x13, 0xbc, 0xd6, 0x0d, 0x37, 0xf7, 0x95, 0x04, 0xb0, 0xff, 0xcc, 0x01, 0xcf, 0x53, 0x42, 0xd6, 0xd3, 0x4a, 0xc6, 0xf1, 0xf2, 0xf9, 0xf2, 0xf4, 0x87, 0x46, 0x25, 0xb9, 0xfd, 0xbb, 0x7d, 0xda, 0x2e, 0xc8, 0x7d, 0xf0, 0xcf, 0x87, 0x25, 0x97, 0x98, 0xdf, 0x86, 0xa0, 0x6b, 0xd5, 0xae, 0xf7, 0x35, 0x4b, 0x8c, 0xb1, 0xcb, 0x13, 0x75, 0x75, 0xf4, 0xcf, 0xbc, 0x46, 0x28, 0x1b, 0xb3, 0x31 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.5", - /* Message */ - 20, - { 0x8d, 0xa8, 0x9f, 0xd9, 0xe5, 0xf9, 0x74, 0xa2, 0x9f, 0xef, 0xfb, 0x46, 0x2b, 0x49, 0x18, 0x0f, 0x6c, 0xf9, 0xe8, 0x02 } -, - /* Seed */ - 105, - { 0xc3, 0xca, 0x84, 0x60, 0x0f, 0x35, 0xc8, 0x65, 0x5f, 0xc7, 0xc6, 0x4c, 0x75, 0xc5, 0x87, 0x38, 0x53, 0xd3, 0xaa, 0x8a, 0x94, 0x26, 0xa5, 0x1b, 0x63, 0xd7, 0xe7, 0x5d, 0xcf, 0x6c, 0xae, 0x97, 0xa4, 0x25, 0x3f, 0xba, 0x87, 0x1d, 0x6f, 0x96, 0x89, 0x97, 0x19, 0x9b, 0xf0, 0x1b, 0x6a, 0x4d, 0x34, 0x28, 0xce, 0x4c, 0x96, 0xd1, 0xc4, 0x87, 0xb2, 0x83, 0x0c, 0xb9, 0xe3, 0x5d, 0x64, 0x05, 0x56, 0x23, 0x69, 0x9a, 0xb4, 0x97, 0x9a, 0x02, 0x58, 0x4b, 0x92, 0xe6, 0xba, 0x39, 0xe7, 0x57, 0x28, 0x40, 0x79, 0xab, 0xf1, 0x33, 0xa7, 0xda, 0x54, 0xe5, 0x42, 0x52, 0x17, 0xa2, 0x10, 0xf6, 0x7c, 0x18, 0x26, 0x9b, 0x51, 0x1f, 0x61, 0xf8, 0xc5 } -, - /* Encryption */ - 128, - { 0xa8, 0x55, 0x48, 0x01, 0x3b, 0xd0, 0xe2, 0x0e, 0xe0, 0xeb, 0xd3, 0x6f, 0xb7, 0x48, 0x97, 0x7f, 0x98, 0x58, 0x46, 0xd7, 0x61, 0x0e, 0xed, 0x24, 0xc3, 0x6c, 0xd8, 0x30, 0x33, 0xdd, 0x2a, 0xa4, 0x58, 0x0b, 0xd1, 0x53, 0x35, 0x20, 0x9d, 0xcf, 0x78, 0x2e, 0xe2, 0x6c, 0x48, 0xc3, 0x06, 0x44, 0xb0, 0xb5, 0xcc, 0x86, 0xc8, 0xcd, 0x16, 0x5a, 0xe2, 0x1e, 0xad, 0xf5, 0x78, 0x04, 0x18, 0x67, 0x76, 0x07, 0x03, 0x18, 0x75, 0xe2, 0x21, 0xec, 0xdf, 0x3b, 0x10, 0x57, 0x31, 0x6f, 0x3f, 0x12, 0xa4, 0x7d, 0x5d, 0xa4, 0x0c, 0x41, 0x53, 0x9b, 0x63, 0x64, 0x30, 0xda, 0x2e, 0x54, 0x21, 0x90, 0x11, 0x9e, 0x42, 0x9c, 0x53, 0xc2, 0x22, 0x6f, 0x95, 0x9b, 0x19, 0xcc, 0xf4, 0x8a, 0x3d, 0x24, 0x02, 0x17, 0xc4, 0xde, 0x70, 0xd7, 0x07, 0x2a, 0x7e, 0x0d, 0x95, 0xb6, 0x16, 0xd1, 0x15, 0xa8 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.6", - /* Message */ - 7, - { 0x26, 0x52, 0x10, 0x50, 0x84, 0x42, 0x71 } -, - /* Seed */ - 118, - { 0x3c, 0x6a, 0x04, 0x71, 0xda, 0xf0, 0x0b, 0x7c, 0x2e, 0xfc, 0x9e, 0xe8, 0x80, 0x41, 0x65, 0x4f, 0x87, 0x62, 0x90, 0x07, 0xc1, 0x24, 0x32, 0x22, 0x11, 0xa5, 0xf4, 0xea, 0x3c, 0x58, 0x23, 0x85, 0x7b, 0xc8, 0xfc, 0x7e, 0x21, 0xc9, 0x45, 0x48, 0xb0, 0xee, 0xbd, 0xcf, 0xf7, 0x91, 0x60, 0xe1, 0x12, 0x46, 0x1e, 0x40, 0x50, 0x91, 0x10, 0xcf, 0xdc, 0x4f, 0x0f, 0x13, 0xc7, 0xfb, 0x92, 0x1a, 0xba, 0xc8, 0xdf, 0xaa, 0xc2, 0x1a, 0xcb, 0x0f, 0x7b, 0x8a, 0x13, 0xa4, 0xb5, 0xcc, 0xa5, 0x23, 0xd5, 0xc7, 0xdd, 0xf7, 0x05, 0x23, 0xeb, 0x57, 0x0c, 0x59, 0xb6, 0xc7, 0xae, 0x97, 0x67, 0xe4, 0xec, 0x9a, 0x63, 0xd1, 0x13, 0x6d, 0x10, 0x23, 0x1b, 0x40, 0x1e, 0x20, 0xe7, 0x41, 0x02, 0x84, 0x83, 0x48, 0x01, 0x7a, 0x16, 0x16 } -, - /* Encryption */ - 128, - { 0x5e, 0x51, 0x43, 0x63, 0x28, 0x7d, 0xe9, 0xb3, 0x80, 0x04, 0x8c, 0xc4, 0x43, 0x5d, 0x53, 0x29, 0x4a, 0xd5, 0x94, 0x1c, 0x55, 0x1a, 0x97, 0xe1, 0x3c, 0x16, 0xdc, 0x13, 0x98, 0xde, 0x61, 0x0d, 0xc7, 0x33, 0x7b, 0xc6, 0xbd, 0xe5, 0x78, 0xe9, 0xe9, 0xf5, 0x6a, 0xf1, 0x44, 0x54, 0xf2, 0xe8, 0x31, 0xbe, 0xef, 0x32, 0x31, 0xa8, 0x50, 0x68, 0xe8, 0xfe, 0xf7, 0x2c, 0x89, 0xe1, 0xdf, 0x1c, 0x99, 0x43, 0x0a, 0x60, 0xf6, 0xd9, 0x42, 0x89, 0xcf, 0xba, 0x87, 0xb2, 0xb4, 0x32, 0xa4, 0x0b, 0x88, 0xdb, 0x61, 0xda, 0xe0, 0x88, 0xf9, 0xed, 0x4e, 0x28, 0x4a, 0x21, 0x63, 0xaf, 0x65, 0xbf, 0x2b, 0x43, 0x55, 0x9a, 0x5d, 0xa2, 0xae, 0xc5, 0xbb, 0x8f, 0x43, 0xf9, 0x2c, 0x1b, 0x04, 0xa5, 0x14, 0x6a, 0x65, 0xb6, 0xe0, 0x19, 0xb4, 0xcd, 0xd2, 0x94, 0x0c, 0x35, 0xd9, 0x64, 0x5b, 0x2d } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.7", - /* Message */ - 5, - { 0x8a, 0x84, 0x7d, 0xd9, 0xe2 } -, - /* Seed */ - 120, - { 0xa1, 0x3d, 0xff, 0x8a, 0x48, 0xe8, 0x04, 0x94, 0xae, 0x66, 0xe6, 0xba, 0x9f, 0x17, 0x9a, 0x01, 0x0d, 0x9e, 0x6d, 0x40, 0x31, 0x87, 0x96, 0x7f, 0x99, 0xfd, 0xd9, 0x0e, 0xf9, 0x0e, 0x0a, 0x94, 0x07, 0x3f, 0xf0, 0xe4, 0xd0, 0xe6, 0x66, 0x4f, 0xf3, 0x73, 0xb5, 0x09, 0x95, 0x3e, 0x04, 0xef, 0x77, 0x83, 0xbe, 0x0f, 0xb4, 0x6c, 0x8a, 0x9f, 0xc0, 0xed, 0x8c, 0x1f, 0x33, 0xcb, 0x4d, 0x0d, 0x2f, 0x1d, 0x0d, 0x5c, 0xdb, 0xa1, 0x4d, 0xca, 0x50, 0x8c, 0xa1, 0xd7, 0x3d, 0x20, 0x80, 0x18, 0x63, 0x9b, 0xc8, 0xe1, 0x65, 0x86, 0x23, 0xde, 0x1e, 0x5b, 0xa3, 0xf0, 0x5e, 0xd0, 0x91, 0x4d, 0x2f, 0x96, 0x90, 0x2f, 0x25, 0x20, 0x33, 0x2d, 0x84, 0x92, 0xd3, 0x73, 0x4a, 0xcd, 0xeb, 0xbd, 0xf4, 0x3e, 0x50, 0xa4, 0x3e, 0x7a, 0xa8, 0x72 } -, - /* Encryption */ - 128, - { 0x82, 0x7a, 0x67, 0xe8, 0x15, 0x78, 0x1c, 0x4d, 0x4e, 0x2b, 0x2e, 0x16, 0x9d, 0x80, 0xca, 0xe9, 0x36, 0x68, 0x72, 0xa7, 0x92, 0xaf, 0xbf, 0x3c, 0x0c, 0xd5, 0x1c, 0xe2, 0x8c, 0x70, 0xe8, 0x6d, 0x41, 0xeb, 0xb9, 0x75, 0x2f, 0x3f, 0x92, 0xdb, 0xa5, 0x1a, 0xdb, 0xb6, 0x85, 0x1b, 0x1f, 0x78, 0x45, 0x61, 0xa8, 0xf1, 0x97, 0x20, 0x8f, 0xde, 0x02, 0x97, 0x0b, 0x38, 0xf2, 0xa9, 0x74, 0x22, 0xec, 0x7f, 0x4f, 0xc8, 0xa1, 0x06, 0x75, 0xa9, 0xdb, 0xde, 0x10, 0x9e, 0xed, 0x0c, 0xe0, 0x65, 0x27, 0x70, 0x3e, 0xe0, 0x5b, 0x65, 0x7d, 0x34, 0x08, 0xf7, 0xfd, 0xdb, 0x1e, 0xec, 0xcf, 0xfa, 0xe1, 0x6b, 0x1d, 0xa1, 0x07, 0x30, 0x7a, 0x2c, 0xf2, 0x56, 0xfa, 0x60, 0xe8, 0x15, 0x21, 0x72, 0xde, 0x9f, 0x95, 0x27, 0xfe, 0x92, 0x0a, 0x90, 0x1d, 0x93, 0xc4, 0xf4, 0xd5, 0x7e, 0x54, 0x6e } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.8", - /* Message */ - 49, - { 0x37, 0x32, 0x36, 0xb7, 0x20, 0x2d, 0x39, 0xb2, 0xee, 0x30, 0xcf, 0xb4, 0x6d, 0xb0, 0x95, 0x11, 0xf6, 0xf3, 0x07, 0xcc, 0x61, 0xcc, 0x21, 0x60, 0x6c, 0x18, 0xa7, 0x5b, 0x8a, 0x62, 0xf8, 0x22, 0xdf, 0x03, 0x1b, 0xa0, 0xe0, 0xe8, 0x2d, 0xd2, 0xf3, 0xe5, 0xd3, 0x1e, 0x4e, 0xa2, 0x57, 0xb1, 0x5b } -, - /* Seed */ - 76, - { 0x21, 0x99, 0x74, 0xa0, 0x87, 0xf0, 0xa2, 0x81, 0x93, 0xe6, 0x49, 0xa0, 0x4a, 0xe9, 0xd8, 0x4c, 0xf2, 0xc8, 0xa9, 0xa4, 0x6c, 0xdf, 0xd8, 0xf1, 0xac, 0x62, 0xc7, 0xe0, 0xf2, 0x0f, 0x4e, 0x27, 0x03, 0x0c, 0x72, 0xb2, 0x0a, 0x5d, 0xb7, 0x25, 0xb4, 0xa8, 0x68, 0x3d, 0xf5, 0x55, 0x6e, 0xe7, 0x94, 0x7f, 0xa0, 0xa7, 0x66, 0x1b, 0x6d, 0x99, 0xdc, 0xb7, 0x9e, 0x49, 0x4f, 0x46, 0x73, 0xf0, 0x73, 0xa0, 0x41, 0xdd, 0x90, 0x7c, 0x87, 0x32, 0x4e, 0x86, 0x25, 0xdd } -, - /* Encryption */ - 128, - { 0x1a, 0x6d, 0xf5, 0x75, 0x99, 0x84, 0xf2, 0xc4, 0x11, 0x93, 0x55, 0xc5, 0xdb, 0x35, 0xc8, 0xa4, 0x78, 0x16, 0x4d, 0x5e, 0x5e, 0xe7, 0x7b, 0x49, 0x91, 0xf1, 0x04, 0xba, 0x91, 0xb9, 0x87, 0x0f, 0x15, 0x91, 0xbe, 0x1f, 0x19, 0xf5, 0x5a, 0x80, 0x51, 0xa6, 0x2c, 0x0e, 0x59, 0x49, 0x3d, 0xf6, 0xf0, 0x0f, 0xe5, 0x0e, 0xf7, 0x3a, 0x6c, 0xf0, 0xc4, 0x35, 0x41, 0xf5, 0x32, 0x0d, 0xab, 0x7b, 0x2f, 0xc6, 0x7c, 0x93, 0x22, 0x5c, 0xcc, 0xd6, 0xd5, 0x03, 0x47, 0xaa, 0x96, 0x9a, 0xd8, 0x7b, 0xd3, 0xd8, 0x20, 0x81, 0x45, 0x4f, 0xea, 0xd8, 0x10, 0xdc, 0x1a, 0xb8, 0xc2, 0x17, 0x81, 0xf7, 0x61, 0x2e, 0x64, 0x06, 0x72, 0x9b, 0x32, 0x2e, 0x04, 0xb1, 0x62, 0x4f, 0x85, 0x38, 0x98, 0x56, 0x59, 0xae, 0x34, 0xd9, 0x93, 0x1e, 0x01, 0x9f, 0x76, 0x2c, 0x79, 0x7d, 0x5c, 0xbf, 0xa3, 0x2d } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.9", - /* Message */ - 33, - { 0x97, 0xe0, 0xb6, 0x36, 0xbf, 0xdd, 0xb8, 0xe1, 0xc8, 0xa9, 0xcf, 0x5b, 0x30, 0x5c, 0xef, 0x3a, 0x8f, 0x47, 0xf9, 0xa8, 0xb3, 0x34, 0x4f, 0x13, 0x55, 0xfa, 0x3d, 0xba, 0xb6, 0x7b, 0xb9, 0x72, 0x10 } -, - /* Seed */ - 92, - { 0xc1, 0xf8, 0x9b, 0xcd, 0xc5, 0x60, 0x40, 0xd5, 0xe6, 0x63, 0xb7, 0x4b, 0xfd, 0xe2, 0x39, 0x7b, 0x58, 0x46, 0x08, 0xcd, 0xf3, 0x2d, 0x5a, 0x58, 0x44, 0x72, 0x4a, 0xc7, 0xe5, 0x98, 0xa8, 0x6e, 0xf7, 0x11, 0x4b, 0x1b, 0xe0, 0x87, 0x30, 0xcb, 0x10, 0xf6, 0x61, 0xfb, 0xfb, 0x86, 0x09, 0xf7, 0xc6, 0xc3, 0x74, 0x42, 0xa1, 0xb1, 0x1e, 0x04, 0xa6, 0x11, 0xff, 0x8c, 0xa5, 0xce, 0x9a, 0xfc, 0x1e, 0xb3, 0xaa, 0xa9, 0x2c, 0x9f, 0x28, 0xba, 0xe2, 0x20, 0x44, 0x05, 0x78, 0x99, 0x02, 0x26, 0x07, 0x83, 0x78, 0xc4, 0x93, 0x41, 0x13, 0x74, 0xc5, 0x3e, 0x3d, 0xdc } -, - /* Encryption */ - 128, - { 0x87, 0x3c, 0xc4, 0xdc, 0xa4, 0x27, 0x97, 0x2b, 0x63, 0xc6, 0xcc, 0x8a, 0xc1, 0x1c, 0xcc, 0x33, 0xc9, 0x59, 0xf7, 0xfc, 0xfe, 0x4b, 0x45, 0xbb, 0xd4, 0x7b, 0x29, 0xd9, 0xc9, 0x88, 0xc0, 0x1a, 0x96, 0xbc, 0x1e, 0xae, 0x0e, 0xf9, 0xb1, 0x94, 0x8d, 0xce, 0x2c, 0xc9, 0xf0, 0xaa, 0x91, 0x7e, 0x86, 0xa6, 0xc1, 0x1f, 0x8d, 0xa3, 0xda, 0x29, 0xdf, 0x90, 0x59, 0x01, 0xf1, 0x91, 0x8a, 0x76, 0x16, 0x8d, 0xe1, 0x17, 0x5e, 0x27, 0x35, 0x12, 0x8c, 0x09, 0x72, 0x99, 0xd6, 0x6e, 0xa5, 0xcc, 0xf9, 0xb9, 0x5b, 0x36, 0x92, 0xee, 0xbf, 0xc6, 0xea, 0x11, 0xbc, 0x37, 0x09, 0x1b, 0x79, 0x5f, 0x18, 0x80, 0x3d, 0x70, 0xe7, 0x95, 0x58, 0xe1, 0x25, 0x16, 0x23, 0x0f, 0xed, 0x55, 0x15, 0xe5, 0x1b, 0x45, 0xae, 0x86, 0xce, 0xfe, 0x47, 0xb9, 0x37, 0x90, 0xe4, 0x99, 0x4d, 0xc4, 0x1e, 0x05 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.10", - /* Message */ - 55, - { 0x82, 0xb5, 0x07, 0x5b, 0xfc, 0x88, 0xf4, 0x00, 0x65, 0x76, 0xaa, 0x80, 0xa0, 0x00, 0x7a, 0x74, 0x51, 0x18, 0x4d, 0x4f, 0x76, 0x0c, 0xf9, 0x24, 0x28, 0x04, 0x22, 0x2b, 0x0e, 0x07, 0x26, 0xf5, 0x55, 0x03, 0x0e, 0x4e, 0x6b, 0x01, 0xf7, 0x93, 0xb0, 0x97, 0x01, 0x81, 0x27, 0x82, 0x4a, 0x3e, 0x40, 0x24, 0x57, 0xd8, 0x49, 0x5f, 0xc0 } -, - /* Seed */ - 70, - { 0xd5, 0x5e, 0x3d, 0x48, 0x97, 0xe9, 0xd8, 0x65, 0x01, 0x4c, 0xb1, 0x5d, 0x3e, 0xe3, 0xf9, 0xfb, 0xd2, 0x9c, 0x92, 0xe5, 0xc2, 0x37, 0xdc, 0xae, 0x46, 0x67, 0x2a, 0x46, 0x3e, 0xaa, 0xa4, 0xf7, 0xdd, 0x09, 0x86, 0x1e, 0x94, 0x6a, 0xc6, 0x5b, 0x85, 0x62, 0x50, 0x63, 0x93, 0xb8, 0x51, 0x92, 0xad, 0x41, 0xfb, 0x0c, 0x48, 0xc8, 0xc0, 0x52, 0x98, 0x1b, 0xdd, 0xcd, 0x5f, 0x1f, 0xc8, 0xb1, 0x39, 0xcd, 0x47, 0xca, 0xcf, 0xfc } -, - /* Encryption */ - 128, - { 0x2e, 0x83, 0xc3, 0xd2, 0x88, 0x01, 0x5a, 0x5f, 0x50, 0x3d, 0x3e, 0x5d, 0xe7, 0xd2, 0xad, 0x91, 0x06, 0x54, 0x5e, 0xf9, 0x7d, 0x63, 0xe4, 0xd0, 0x6a, 0x5a, 0x0d, 0x9d, 0xbc, 0x29, 0xf6, 0xba, 0xfb, 0x93, 0xa5, 0x17, 0x3f, 0xa5, 0x06, 0x3a, 0x69, 0x39, 0xdb, 0xa6, 0xc7, 0xa4, 0x28, 0xc3, 0x5e, 0x7d, 0xbe, 0x6a, 0x95, 0x93, 0xfe, 0x5e, 0xc4, 0xc1, 0x98, 0x78, 0x89, 0x3f, 0x31, 0x37, 0x09, 0xc8, 0x76, 0x02, 0x72, 0x6c, 0xb3, 0x25, 0x5b, 0xe7, 0x5a, 0xdc, 0x7f, 0x2f, 0x27, 0xe6, 0xdb, 0x91, 0xc3, 0xa3, 0x43, 0xea, 0xff, 0x1c, 0x28, 0xd9, 0xd5, 0xf7, 0xcb, 0x65, 0x74, 0xe6, 0x31, 0x06, 0x90, 0x03, 0xcd, 0xcf, 0xa0, 0x77, 0x43, 0xa7, 0x34, 0x0d, 0x58, 0x83, 0x9e, 0x70, 0x8b, 0xf3, 0x6a, 0xf6, 0x34, 0x2d, 0xb8, 0xdf, 0xa4, 0x1f, 0xea, 0xda, 0xfc, 0x69, 0x53, 0xac } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.11", - /* Message */ - 34, - { 0x36, 0x48, 0xc3, 0x6f, 0x85, 0x1f, 0x52, 0xf2, 0x32, 0x87, 0x79, 0x09, 0x19, 0x85, 0xa3, 0xc8, 0x12, 0xe1, 0x8a, 0x70, 0x55, 0xd0, 0x90, 0xbb, 0xf0, 0x32, 0x4c, 0x13, 0x79, 0x3b, 0xb8, 0x22, 0x1a, 0x57 } -, - /* Seed */ - 91, - { 0xc1, 0x27, 0x71, 0x85, 0xc3, 0x59, 0x55, 0xca, 0xed, 0xfd, 0xf9, 0xde, 0x55, 0xd5, 0xd9, 0x5a, 0x39, 0x8d, 0x58, 0xf5, 0xf3, 0x33, 0x19, 0x1f, 0xc0, 0x29, 0x45, 0xef, 0xdf, 0xad, 0xfb, 0x6d, 0xb0, 0x5e, 0xe2, 0xa2, 0xd3, 0x41, 0x83, 0xed, 0xf8, 0x9a, 0x1a, 0x4d, 0xcc, 0xc4, 0x65, 0x91, 0xb3, 0x53, 0x2b, 0xa7, 0x03, 0x93, 0x62, 0xc7, 0x5d, 0xf1, 0x94, 0xec, 0x10, 0x64, 0x48, 0xaf, 0xb7, 0xf6, 0xbf, 0xb2, 0x80, 0x7e, 0x38, 0x3e, 0x15, 0x99, 0x54, 0x25, 0x5e, 0x82, 0x7c, 0xb9, 0xda, 0xdc, 0x8d, 0x9b, 0x7e, 0x68, 0xa1, 0xaa, 0x09, 0x76, 0x35 } -, - /* Encryption */ - 128, - { 0x88, 0x62, 0xf1, 0x97, 0x3f, 0xef, 0xe0, 0xaf, 0x02, 0xd9, 0x6c, 0xc4, 0x58, 0x33, 0x4d, 0xed, 0x6c, 0x02, 0xd8, 0xd7, 0xea, 0xf5, 0x93, 0x77, 0x9c, 0x5d, 0x38, 0x6c, 0x4e, 0x49, 0xf7, 0x68, 0xf1, 0x30, 0xb4, 0x87, 0xb3, 0xc9, 0x1e, 0x32, 0x3a, 0x47, 0x7e, 0x4c, 0x11, 0x0a, 0x33, 0x41, 0xff, 0x46, 0xee, 0xe3, 0x7c, 0x77, 0x3e, 0x5c, 0x0a, 0xc8, 0x39, 0xbc, 0x55, 0xcc, 0x0c, 0x07, 0x0c, 0xac, 0x01, 0xcd, 0x45, 0x18, 0x3c, 0xfe, 0xe6, 0xb8, 0x8b, 0xfb, 0x82, 0x36, 0x1d, 0x35, 0x60, 0x19, 0x7c, 0xde, 0xab, 0x42, 0xe5, 0xc7, 0x55, 0xd2, 0x37, 0x97, 0x1a, 0x88, 0xda, 0xf6, 0x10, 0xcb, 0x39, 0x52, 0x61, 0x4b, 0x36, 0x40, 0x56, 0xcd, 0x49, 0x14, 0x20, 0xef, 0xfe, 0x3a, 0x0b, 0x8c, 0xe3, 0x1f, 0x2e, 0x3e, 0x49, 0xca, 0xd6, 0xf3, 0xb0, 0x64, 0x0f, 0x44, 0x91, 0xde } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.12", - /* Message */ - 20, - { 0x94, 0xf7, 0x8c, 0xf4, 0x5c, 0x53, 0xfc, 0x46, 0xe7, 0xeb, 0x1b, 0x26, 0x61, 0x8a, 0x29, 0xe9, 0x48, 0x50, 0x12, 0xc1 } -, - /* Seed */ - 105, - { 0xe6, 0xde, 0x9e, 0x9b, 0x90, 0x22, 0xa5, 0x5f, 0x56, 0x12, 0x1d, 0x5a, 0xc0, 0x0a, 0xa6, 0xdf, 0x29, 0x9c, 0x8a, 0x36, 0x94, 0x22, 0xe7, 0x54, 0x29, 0x56, 0xb6, 0xda, 0x2e, 0x0d, 0xcd, 0xee, 0x96, 0x8d, 0xb0, 0x7d, 0x99, 0x5a, 0x7b, 0xb8, 0x76, 0xf7, 0xf8, 0xcd, 0x66, 0xb2, 0xf5, 0x42, 0xc0, 0x53, 0x08, 0xf7, 0x49, 0x83, 0xa3, 0xf8, 0x36, 0x0c, 0x6b, 0x89, 0x47, 0xf8, 0x7d, 0x60, 0x8b, 0x03, 0x1a, 0x2c, 0x68, 0xdd, 0xe1, 0x47, 0x1a, 0xe4, 0x96, 0xae, 0x9b, 0x16, 0xe2, 0xa8, 0x11, 0x81, 0xeb, 0x6f, 0xc2, 0xf6, 0x5b, 0xaa, 0xad, 0xda, 0x64, 0x22, 0xa9, 0x34, 0x31, 0xf6, 0xf3, 0xb0, 0x7b, 0x5b, 0x46, 0xa3, 0xcf, 0x89, 0x48 } -, - /* Encryption */ - 128, - { 0x3c, 0x6d, 0x3b, 0x43, 0xd2, 0x3a, 0xdb, 0x79, 0xd6, 0x97, 0x23, 0x38, 0x08, 0xb0, 0x74, 0x48, 0x76, 0x97, 0xf3, 0x35, 0xfd, 0x99, 0xcd, 0xe8, 0x65, 0x41, 0x1f, 0xb1, 0x82, 0x28, 0x92, 0x56, 0x1f, 0xdc, 0x24, 0xa8, 0xb8, 0xbb, 0x2c, 0x4f, 0x65, 0x3c, 0x4d, 0x15, 0x6c, 0x77, 0xa7, 0x5d, 0xe3, 0x16, 0x00, 0xb5, 0x70, 0x9e, 0x8d, 0x50, 0x6e, 0x98, 0xe1, 0xd3, 0x73, 0xcb, 0xda, 0x01, 0xf4, 0xd9, 0xfe, 0xb0, 0x29, 0x71, 0x98, 0xca, 0xd0, 0xca, 0x2a, 0x7e, 0x3b, 0x1e, 0x63, 0x90, 0x3b, 0x10, 0x43, 0xce, 0x79, 0x49, 0x4c, 0x57, 0x54, 0xf7, 0xf9, 0x0f, 0xc1, 0xf0, 0x73, 0xa6, 0x19, 0x92, 0x9e, 0xf1, 0x26, 0x39, 0x4b, 0x06, 0x24, 0xf3, 0xb8, 0xba, 0x6d, 0x56, 0x45, 0xe9, 0x90, 0xe7, 0xc0, 0x13, 0x2c, 0xe2, 0x12, 0x31, 0x46, 0xfd, 0x9c, 0xad, 0xf7, 0x45, 0xec, 0x61 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.13", - /* Message */ - 35, - { 0x77, 0x9d, 0x1e, 0xb8, 0x4f, 0xa2, 0x84, 0xc3, 0x7d, 0x29, 0xd5, 0xe1, 0x79, 0xd0, 0x03, 0x06, 0xb4, 0x13, 0xc4, 0x4a, 0x80, 0x0a, 0x07, 0x7e, 0x59, 0x85, 0x3f, 0x63, 0x05, 0xf9, 0x2e, 0x59, 0xfb, 0x7f, 0x81 } -, - /* Seed */ - 90, - { 0xc3, 0xe6, 0xd1, 0x8b, 0xda, 0x97, 0x78, 0x2c, 0xa7, 0x81, 0xfa, 0x76, 0xd9, 0x7a, 0x6c, 0x94, 0xd8, 0x54, 0xd1, 0x41, 0x99, 0xb4, 0xea, 0x7d, 0x82, 0xc5, 0xbc, 0xbb, 0xe6, 0xcd, 0xaa, 0xb5, 0x25, 0x57, 0x47, 0x44, 0x3c, 0x59, 0xbf, 0x8c, 0x77, 0xec, 0xda, 0xa6, 0x4a, 0xe7, 0xce, 0x61, 0xe2, 0xc7, 0x30, 0x01, 0x32, 0xb7, 0x54, 0xe9, 0x16, 0x2f, 0x7c, 0xde, 0x75, 0x8f, 0x48, 0x0a, 0xe5, 0x88, 0xcf, 0xd4, 0x4a, 0x94, 0x6d, 0x64, 0xe2, 0x72, 0x0a, 0x2d, 0x17, 0x52, 0x55, 0x45, 0x22, 0x04, 0x84, 0x83, 0x81, 0x18, 0xad, 0x6e, 0x6b, 0x54 } -, - /* Encryption */ - 128, - { 0x72, 0x2c, 0xa9, 0x25, 0x66, 0xc7, 0x3c, 0xc8, 0x5d, 0x19, 0xce, 0x3f, 0xaa, 0x14, 0xcb, 0x2e, 0x79, 0x84, 0x9f, 0x20, 0x50, 0x92, 0xd1, 0x58, 0x92, 0x82, 0x31, 0x3c, 0x04, 0x27, 0xf0, 0x67, 0x79, 0x8a, 0xfa, 0xe3, 0xe3, 0xf0, 0xa5, 0x61, 0xf3, 0x99, 0x34, 0x6e, 0x9d, 0x10, 0x7d, 0xa0, 0x4a, 0xf4, 0x4b, 0x0c, 0x6f, 0x04, 0x4a, 0xde, 0xfe, 0x09, 0x7a, 0x0c, 0xd1, 0x4a, 0x47, 0xa9, 0x9c, 0xd9, 0x81, 0x9a, 0x98, 0x41, 0x37, 0x06, 0x30, 0x7c, 0xbd, 0x0d, 0xa0, 0x16, 0x97, 0x46, 0x9e, 0xff, 0x71, 0xd3, 0x14, 0x41, 0x63, 0x94, 0x93, 0xfb, 0xed, 0x8e, 0xee, 0x1b, 0xa3, 0x9f, 0xdd, 0x07, 0xfc, 0x0e, 0xa0, 0x82, 0x30, 0x18, 0x61, 0x79, 0xf9, 0x0e, 0x7e, 0xf1, 0x3c, 0x61, 0xee, 0x56, 0xf1, 0x67, 0xfc, 0x2f, 0x6b, 0x15, 0x79, 0x3e, 0x1a, 0x32, 0x24, 0xff, 0xa2, 0x9e } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.14", - /* Message */ - 1, - { 0x88 } -, - /* Seed */ - 124, - { 0xc0, 0x16, 0x9d, 0x76, 0xe4, 0xea, 0x45, 0x45, 0x41, 0x0d, 0xdf, 0x66, 0x46, 0xc1, 0xba, 0x7d, 0xd2, 0x72, 0xd7, 0xc3, 0x49, 0x8b, 0xa6, 0xb0, 0x80, 0x4b, 0x42, 0x61, 0x30, 0xa8, 0x0f, 0xbf, 0xff, 0x4b, 0xb7, 0xb5, 0xf5, 0x59, 0xb0, 0xa9, 0x09, 0x0e, 0x4a, 0xd9, 0xb9, 0xf4, 0x16, 0xa6, 0xdf, 0xdc, 0x15, 0x01, 0xb1, 0xba, 0x46, 0x87, 0x7b, 0x1a, 0x96, 0xfa, 0x84, 0x91, 0xdc, 0xfd, 0xde, 0x50, 0xeb, 0xee, 0xd2, 0x4d, 0x3f, 0x98, 0x96, 0x24, 0x13, 0x34, 0x6e, 0xd4, 0xa3, 0x39, 0x3e, 0x23, 0x5b, 0x77, 0xbc, 0x1e, 0xd6, 0x74, 0x68, 0xec, 0xe2, 0x79, 0x2a, 0x2f, 0xd3, 0xa8, 0x34, 0x8f, 0xc5, 0x50, 0x9b, 0x59, 0x06, 0xf2, 0x88, 0x56, 0x15, 0xdf, 0x8c, 0x14, 0x61, 0x37, 0x7a, 0x74, 0x1d, 0x59, 0x52, 0xfb, 0x36, 0xea, 0xc0, 0x20, 0x1e, 0x27 } -, - /* Encryption */ - 128, - { 0x4e, 0xd7, 0xd1, 0x29, 0x1a, 0x03, 0x36, 0x65, 0x4d, 0x5c, 0xa2, 0xb1, 0xf9, 0xd2, 0x0c, 0xb2, 0xda, 0x72, 0x26, 0xf7, 0x11, 0x6b, 0x93, 0x09, 0x88, 0x43, 0x9b, 0x44, 0x63, 0x98, 0x11, 0x04, 0xbd, 0x63, 0xc2, 0xce, 0x2b, 0x77, 0xd6, 0x26, 0xb3, 0x10, 0x9c, 0x93, 0x14, 0x03, 0xac, 0x5b, 0x49, 0xb4, 0x24, 0x7c, 0x4f, 0x69, 0x67, 0xb8, 0xc0, 0xdb, 0x06, 0x3c, 0x99, 0x95, 0xaf, 0x9d, 0x36, 0x54, 0x06, 0x50, 0x93, 0x8b, 0x01, 0xf9, 0x39, 0x06, 0xf9, 0x83, 0x89, 0x07, 0xed, 0x59, 0x36, 0xab, 0xb3, 0x43, 0xb0, 0xe2, 0x55, 0x09, 0xa1, 0xd2, 0xd4, 0xc5, 0xc8, 0xb9, 0x58, 0x06, 0x50, 0xda, 0x2c, 0xe1, 0x1f, 0xa3, 0xcf, 0x3e, 0x64, 0x07, 0x23, 0xea, 0xcb, 0xee, 0x87, 0xfa, 0xd3, 0xee, 0x35, 0x95, 0x8b, 0x45, 0x07, 0x5d, 0xf7, 0x81, 0xc4, 0x13, 0x46, 0x6a, 0xf1, 0x39 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.15", - /* Message */ - 51, - { 0xa2, 0xdc, 0x08, 0x77, 0x78, 0xd5, 0x43, 0x40, 0x8e, 0x89, 0x73, 0xf1, 0x36, 0x31, 0x59, 0xed, 0xb8, 0xf0, 0x78, 0x3c, 0x45, 0x70, 0x89, 0x07, 0x2d, 0xce, 0x66, 0xd3, 0x10, 0x2b, 0xb4, 0xfa, 0xe6, 0x0a, 0xa6, 0x0e, 0x41, 0x93, 0x3c, 0x48, 0xa1, 0xbe, 0x39, 0x53, 0xec, 0x2f, 0x80, 0x4c, 0x0c, 0xc9, 0x6c } -, - /* Seed */ - 74, - { 0x18, 0x11, 0x20, 0x14, 0x06, 0x53, 0x29, 0xd0, 0x4b, 0xfb, 0x0c, 0xf5, 0x44, 0xdd, 0x38, 0xd7, 0xbe, 0xf1, 0x54, 0x9b, 0x4a, 0x49, 0xa1, 0x67, 0x76, 0xdd, 0xa7, 0x4d, 0x0a, 0x7e, 0xdc, 0x49, 0x67, 0xb4, 0x24, 0x0c, 0x37, 0x14, 0x2f, 0xa3, 0xf6, 0x63, 0x9c, 0x26, 0x96, 0xcd, 0x7d, 0x4b, 0x18, 0xa1, 0x1e, 0x2f, 0xb5, 0x40, 0x81, 0xf2, 0xde, 0x5b, 0xd7, 0xbd, 0x15, 0xcd, 0xda, 0x92, 0xc9, 0x4c, 0x3a, 0x47, 0x18, 0x7b, 0x5f, 0xf4, 0x3b, 0x53 } -, - /* Encryption */ - 128, - { 0x71, 0x15, 0x19, 0x0a, 0x21, 0x04, 0x88, 0xf0, 0x4f, 0xa0, 0xc0, 0x0c, 0x93, 0xa4, 0x68, 0xa8, 0x03, 0x0b, 0x7b, 0x9f, 0xc1, 0x00, 0x20, 0xd8, 0x31, 0x0b, 0xcb, 0x01, 0xa5, 0xc8, 0xdd, 0xa1, 0xd0, 0x6c, 0xe2, 0x41, 0xdc, 0x77, 0x5b, 0x43, 0xe6, 0xf1, 0x3b, 0x19, 0xab, 0xfc, 0xbf, 0x36, 0x16, 0xe8, 0x4f, 0x10, 0x7c, 0x9e, 0xd8, 0x0d, 0x1b, 0x86, 0xbf, 0x87, 0xc9, 0x8c, 0x2b, 0x62, 0x9f, 0xfa, 0xda, 0xa6, 0xec, 0x01, 0xf4, 0xe6, 0x75, 0x55, 0x8e, 0xf5, 0x26, 0x06, 0xea, 0xf1, 0x26, 0x06, 0x8f, 0xa7, 0x53, 0x4d, 0xd1, 0x3b, 0x92, 0x0d, 0x23, 0x81, 0x69, 0x5a, 0xd7, 0x75, 0xff, 0xf0, 0xbb, 0x7c, 0xec, 0x46, 0x90, 0x90, 0x1d, 0x6f, 0x1e, 0x17, 0x36, 0xb8, 0x2c, 0xfe, 0x3a, 0x0c, 0x22, 0x4d, 0x18, 0xf1, 0x29, 0x15, 0xfd, 0xc9, 0x5c, 0x18, 0x39, 0x7c, 0x35, 0x70 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.16", - /* Message */ - 36, - { 0x11, 0x0b, 0xf2, 0xb1, 0xd0, 0xdd, 0x81, 0x2f, 0x2a, 0x5a, 0x21, 0xf3, 0x40, 0x4f, 0xa2, 0xf2, 0xc4, 0x54, 0xc4, 0x43, 0x2f, 0xdf, 0xa7, 0x0f, 0x1b, 0x0f, 0x23, 0xec, 0x69, 0xc1, 0x02, 0x37, 0x73, 0xa7, 0x3a, 0xba } -, - /* Seed */ - 89, - { 0x17, 0xb8, 0x5f, 0x76, 0x53, 0xff, 0x0e, 0xf5, 0xde, 0x7f, 0x25, 0x69, 0x6c, 0xd4, 0x90, 0x23, 0xad, 0x8e, 0xac, 0x94, 0x8a, 0x83, 0xe2, 0x24, 0x58, 0xec, 0xd5, 0xd1, 0x0a, 0x43, 0x86, 0x6d, 0xc7, 0x91, 0x55, 0x5e, 0x64, 0xf0, 0x78, 0xc3, 0x8c, 0x75, 0x2b, 0x6e, 0x9c, 0x6e, 0xee, 0xb3, 0x39, 0xee, 0xc9, 0x10, 0x16, 0xd2, 0x58, 0x88, 0x6d, 0x01, 0x27, 0x75, 0xad, 0x64, 0x36, 0x02, 0xa0, 0xf0, 0xd1, 0x79, 0x34, 0x54, 0xa0, 0x60, 0x94, 0x71, 0x16, 0x22, 0x88, 0x22, 0x39, 0x50, 0x82, 0x6e, 0xd8, 0xe2, 0x02, 0x5d, 0xa9, 0xa4, 0xe9 } -, - /* Encryption */ - 128, - { 0x5d, 0x0f, 0x2f, 0xd8, 0x5e, 0x6f, 0x9d, 0x9e, 0x43, 0x2f, 0xad, 0x86, 0x0f, 0xdc, 0x49, 0x96, 0x96, 0x24, 0xff, 0x4f, 0xa0, 0x71, 0x5d, 0x36, 0x1e, 0x9f, 0x00, 0xb0, 0x5b, 0x3a, 0xa0, 0xba, 0x9e, 0xb2, 0x7b, 0xae, 0x61, 0x0e, 0xfd, 0xe1, 0x14, 0x3c, 0xbc, 0x93, 0x3b, 0x52, 0xde, 0xa7, 0x01, 0x87, 0x60, 0xbb, 0x25, 0x1b, 0xe0, 0xe1, 0xe3, 0x0c, 0xd1, 0xc5, 0x99, 0x1a, 0xef, 0x74, 0x4d, 0xb8, 0x2f, 0x16, 0x6b, 0x90, 0x63, 0xef, 0xb7, 0xe3, 0x38, 0x40, 0xa2, 0x56, 0x90, 0x05, 0x65, 0x4b, 0x14, 0x0e, 0x11, 0x5f, 0xa5, 0x6c, 0x30, 0x40, 0x6e, 0x45, 0x65, 0x6e, 0x81, 0x99, 0xaf, 0x39, 0x4f, 0x63, 0x86, 0x34, 0x6d, 0x5f, 0x1a, 0x30, 0x0b, 0x95, 0xba, 0x48, 0xfc, 0x08, 0x73, 0xd6, 0x18, 0xd6, 0x92, 0xbb, 0x02, 0x5b, 0xf1, 0x5e, 0x9d, 0x23, 0x2c, 0x64, 0x1a, 0xda } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.17", - /* Message */ - 60, - { 0xd9, 0xd9, 0x37, 0x13, 0x1f, 0xf1, 0x94, 0x0a, 0x86, 0xbf, 0x71, 0x39, 0xb4, 0x81, 0x14, 0x36, 0x41, 0x95, 0xb4, 0x00, 0x52, 0x22, 0xa8, 0xbb, 0xbc, 0x26, 0x1a, 0x7f, 0x2e, 0x21, 0x2b, 0x8d, 0xd0, 0x35, 0xe5, 0x3f, 0x91, 0x44, 0xf5, 0x61, 0x0b, 0x4c, 0xec, 0x32, 0xea, 0x01, 0xbd, 0xa9, 0xd3, 0xc8, 0x0c, 0xf2, 0x94, 0x64, 0xf8, 0x0f, 0x5f, 0x56, 0x56, 0xc8 } -, - /* Seed */ - 65, - { 0x33, 0x05, 0xe1, 0xda, 0x60, 0xe5, 0x86, 0x73, 0xfc, 0x46, 0xcd, 0x33, 0xbe, 0x2a, 0x66, 0xd3, 0xa1, 0x02, 0xc3, 0xdb, 0x16, 0x1e, 0xf4, 0x8c, 0x0d, 0x60, 0xef, 0x25, 0x03, 0x1b, 0x40, 0x14, 0x16, 0x78, 0x26, 0x24, 0x6a, 0xa5, 0x28, 0xa3, 0xa3, 0xe5, 0xb0, 0xab, 0x95, 0x07, 0x8d, 0x84, 0x01, 0xd9, 0x29, 0x03, 0x59, 0x5a, 0xfc, 0x1a, 0xa8, 0x54, 0xe6, 0x04, 0x4e, 0x5e, 0xb5, 0xf5, 0xbe } -, - /* Encryption */ - 128, - { 0x0e, 0x12, 0x16, 0x74, 0x89, 0xf0, 0xba, 0xef, 0xca, 0xd6, 0x39, 0x34, 0xbc, 0x15, 0x9f, 0x1b, 0xbd, 0x9e, 0x9b, 0x28, 0x7e, 0x50, 0x0f, 0x49, 0x09, 0x23, 0xc1, 0x6a, 0x85, 0x56, 0x4a, 0x1d, 0xa6, 0x36, 0x59, 0x37, 0x5f, 0x22, 0xaf, 0x7b, 0xa4, 0x97, 0x98, 0xe1, 0x57, 0x8c, 0xf3, 0x15, 0xfa, 0xe3, 0xe9, 0xed, 0x56, 0x99, 0xc6, 0x91, 0xe3, 0xc1, 0xd0, 0xbb, 0x46, 0xda, 0x49, 0x2d, 0x01, 0x34, 0x9e, 0x93, 0x29, 0x59, 0x3d, 0x43, 0x81, 0xd0, 0x74, 0xa0, 0xa5, 0x31, 0xdf, 0x92, 0x1b, 0x31, 0x31, 0x6f, 0x7e, 0x2b, 0x4f, 0xe9, 0x15, 0x34, 0x72, 0x83, 0x24, 0x23, 0x35, 0xf0, 0xb0, 0xb2, 0x31, 0x92, 0xc7, 0x21, 0x02, 0xf2, 0xc6, 0x36, 0x24, 0xb1, 0xe7, 0x89, 0x65, 0x45, 0x0e, 0x82, 0x30, 0xd4, 0x87, 0x7e, 0x46, 0x17, 0xb0, 0x3d, 0x44, 0x83, 0x13, 0x98, 0xdd, 0xbf } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.18", - /* Message */ - 8, - { 0x81, 0xb3, 0x4a, 0xeb, 0x8a, 0xfb, 0x8a, 0x3f } -, - /* Seed */ - 117, - { 0x02, 0xf7, 0x48, 0x34, 0x2d, 0x01, 0x0f, 0xb5, 0x6a, 0x6f, 0x69, 0xf2, 0x1f, 0x8c, 0x6a, 0x63, 0x16, 0x79, 0xc8, 0xc4, 0xb8, 0xf6, 0xfe, 0xb5, 0x25, 0xcf, 0x8e, 0x72, 0xfd, 0xa8, 0xef, 0x8d, 0xf6, 0x62, 0x31, 0x28, 0xc0, 0xfe, 0x74, 0xbc, 0x59, 0x0c, 0xaa, 0x34, 0xf1, 0xee, 0xd1, 0xad, 0x2d, 0x61, 0x42, 0xdc, 0xc5, 0xbc, 0xae, 0x84, 0xef, 0x31, 0x37, 0x62, 0xf2, 0xe4, 0xe7, 0x03, 0x03, 0xd2, 0x09, 0xc8, 0xd9, 0x57, 0x7a, 0x7c, 0x84, 0x3d, 0x2b, 0x91, 0x72, 0xed, 0x4e, 0xfe, 0x2a, 0xd6, 0x29, 0x61, 0x4b, 0x99, 0xa9, 0x1a, 0x4c, 0xc8, 0x32, 0x5b, 0xa3, 0x24, 0x11, 0x6e, 0xcf, 0x0c, 0x5e, 0x29, 0x09, 0x49, 0x38, 0xae, 0x49, 0x89, 0x84, 0xf4, 0xf4, 0xcb, 0xb1, 0x62, 0x38, 0x86, 0xe0, 0x39, 0x73 } -, - /* Encryption */ - 128, - { 0x43, 0xb2, 0x76, 0xc7, 0xd3, 0x68, 0xea, 0x21, 0xc6, 0x80, 0x71, 0x16, 0xcd, 0xe8, 0x60, 0x82, 0x98, 0xf2, 0x40, 0x02, 0x07, 0x2d, 0x77, 0x6e, 0x56, 0xe6, 0x2c, 0x35, 0x72, 0xbf, 0xb9, 0x9d, 0xa4, 0xc5, 0x6e, 0x93, 0x8a, 0x47, 0xdc, 0x07, 0x5f, 0xa1, 0xff, 0x7a, 0x61, 0x8f, 0xb5, 0xfa, 0xed, 0x3e, 0xe3, 0x7b, 0x91, 0xdf, 0xc3, 0x91, 0x53, 0x49, 0x5a, 0xeb, 0xa9, 0xdf, 0x6d, 0x45, 0xdf, 0x94, 0xb0, 0xe8, 0xa8, 0xad, 0x2d, 0xb3, 0x7a, 0x9f, 0xe4, 0x6d, 0x0f, 0xdf, 0x15, 0x42, 0x31, 0xfd, 0x6f, 0x32, 0x21, 0x47, 0x4e, 0x8f, 0x5c, 0x19, 0x1f, 0xdb, 0x85, 0x38, 0xe1, 0xa6, 0x03, 0xe5, 0x98, 0x97, 0xe1, 0x50, 0xfa, 0xf9, 0x5b, 0x65, 0xda, 0x14, 0x06, 0x67, 0xed, 0xb1, 0x98, 0x09, 0xeb, 0x4a, 0x16, 0xac, 0xd0, 0x1e, 0xcc, 0x60, 0x4b, 0xda, 0x57, 0xf2, 0x0e, 0xf2 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.19", - /* Message */ - 10, - { 0x7b, 0xf9, 0xfa, 0xd8, 0x89, 0xde, 0x73, 0xed, 0x87, 0x3d } -, - /* Seed */ - 115, - { 0xfa, 0x5d, 0xad, 0x45, 0xa4, 0xbb, 0x5e, 0x74, 0xc4, 0xcf, 0x2e, 0x21, 0x3e, 0xd4, 0x0a, 0xa9, 0x61, 0x75, 0x98, 0xd1, 0x1d, 0x49, 0xae, 0x1c, 0x32, 0xd7, 0x94, 0xe0, 0x9c, 0xd0, 0xe5, 0xc7, 0xaa, 0xae, 0x81, 0xb9, 0x55, 0x4d, 0xde, 0x31, 0x08, 0xd6, 0x0a, 0x9a, 0x82, 0xf4, 0x2c, 0xc6, 0xc2, 0xa6, 0x89, 0xf4, 0x60, 0xff, 0x1d, 0x53, 0xad, 0x85, 0xbf, 0x83, 0x83, 0x11, 0xe7, 0x58, 0x9e, 0x19, 0x67, 0x95, 0x7b, 0x51, 0x56, 0x7a, 0xa0, 0xd3, 0x3a, 0xfa, 0x37, 0x52, 0xcd, 0xe6, 0xc5, 0x66, 0x1d, 0x4f, 0x27, 0xae, 0xd3, 0xdf, 0x52, 0x90, 0x5f, 0x1c, 0xf2, 0x25, 0x33, 0x04, 0x61, 0x8e, 0x07, 0x86, 0x04, 0x1e, 0x70, 0xb4, 0xdc, 0xba, 0xc8, 0xc1, 0x08, 0xba, 0x34, 0xac, 0x39, 0x39, 0xf4 } -, - /* Encryption */ - 128, - { 0x61, 0xc2, 0x55, 0x0e, 0x0b, 0x36, 0xa6, 0x79, 0x7f, 0xf8, 0x64, 0x93, 0x80, 0x1b, 0x11, 0x46, 0xd8, 0x90, 0x59, 0x49, 0x83, 0x52, 0xe4, 0xc2, 0x62, 0x27, 0x5b, 0x14, 0x04, 0xb1, 0x33, 0x15, 0xe9, 0x56, 0xbb, 0x3d, 0x31, 0x21, 0x85, 0xb5, 0x21, 0xb3, 0xc7, 0x08, 0xe9, 0xd9, 0x54, 0x02, 0x17, 0x19, 0xa0, 0x59, 0xd9, 0x84, 0x72, 0x4c, 0x53, 0xc0, 0x4f, 0x5a, 0xd2, 0x74, 0xbe, 0xf9, 0xff, 0x0a, 0x79, 0x50, 0xb2, 0xfd, 0xec, 0xc5, 0x29, 0x0c, 0xd5, 0xf3, 0xbc, 0x26, 0x52, 0x4c, 0xd1, 0x34, 0x20, 0x48, 0x18, 0x4b, 0x0e, 0x2c, 0xdf, 0x94, 0x06, 0xa4, 0x53, 0xa2, 0xef, 0x9f, 0x3b, 0xb2, 0x3c, 0x4e, 0x7c, 0x1c, 0x8b, 0x29, 0x52, 0xa0, 0x20, 0x2b, 0xcc, 0x23, 0x82, 0x47, 0xea, 0x32, 0x7b, 0x8c, 0x07, 0x00, 0xc8, 0x00, 0x3f, 0xd6, 0x34, 0xec, 0x1e, 0xd9, 0xbf, 0x30 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 1.20", - /* Message */ - 31, - { 0xb6, 0xa3, 0x50, 0x9b, 0xb3, 0xb9, 0xb0, 0xb5, 0x7c, 0xd5, 0x8d, 0xe4, 0x09, 0xd9, 0x53, 0x20, 0x1a, 0x04, 0x2f, 0x94, 0x92, 0xdc, 0x1d, 0x7e, 0x34, 0xa7, 0xd0, 0x94, 0x1a, 0x1a, 0x1b } -, - /* Seed */ - 94, - { 0x3a, 0x9e, 0x15, 0x06, 0x57, 0x86, 0xb3, 0xe0, 0x1d, 0x82, 0x6b, 0x86, 0x2a, 0x8f, 0x70, 0x2b, 0x5c, 0xac, 0x8c, 0x16, 0x62, 0xee, 0x7d, 0x15, 0xff, 0x32, 0x3c, 0xdf, 0xe7, 0x1e, 0xbf, 0x4a, 0xd1, 0xb1, 0xf3, 0xa6, 0xbc, 0xbd, 0xd4, 0xb0, 0x01, 0x08, 0x77, 0xec, 0xac, 0x09, 0x1f, 0x61, 0x59, 0x08, 0xe2, 0xbe, 0x40, 0x0b, 0xb0, 0xc4, 0x98, 0xe3, 0x55, 0xd5, 0x71, 0xfd, 0x10, 0x89, 0x5b, 0x8e, 0xe9, 0xc3, 0xa9, 0xc3, 0x1e, 0x4b, 0x11, 0x03, 0x89, 0xc3, 0xd5, 0xc4, 0x6e, 0xbf, 0x76, 0xb3, 0xb3, 0x5a, 0xd1, 0xf4, 0x79, 0x1b, 0x6d, 0x20, 0x97, 0xf1, 0x09, 0xf2 } -, - /* Encryption */ - 128, - { 0x6b, 0x4b, 0x6d, 0x7b, 0xab, 0xfe, 0x4d, 0x64, 0x17, 0xac, 0xad, 0xfb, 0x78, 0x57, 0x2e, 0x7c, 0x87, 0xe3, 0xfe, 0x1b, 0xd5, 0x8e, 0xef, 0xb0, 0xd4, 0xb1, 0x27, 0x9c, 0x7b, 0x7c, 0x83, 0x26, 0xa6, 0x8b, 0xb2, 0x87, 0x95, 0xe0, 0x9f, 0x9b, 0x1c, 0xe2, 0xe2, 0x4a, 0x53, 0x9f, 0x4b, 0x0d, 0x93, 0xb2, 0x92, 0x74, 0xce, 0xcf, 0x7c, 0xd9, 0xf0, 0xb7, 0x32, 0xae, 0xbe, 0xda, 0x91, 0x11, 0xbd, 0xfe, 0x25, 0xe2, 0x68, 0xa8, 0x8e, 0x34, 0x22, 0xe2, 0x9b, 0x52, 0xbd, 0x4b, 0x7a, 0x05, 0x47, 0xdb, 0x8f, 0xe1, 0x2a, 0x6f, 0xcf, 0x1a, 0x3c, 0x06, 0xa0, 0x02, 0xbf, 0x87, 0x0a, 0x2f, 0xab, 0xb7, 0xc4, 0x57, 0xe4, 0xbb, 0xce, 0x3e, 0x31, 0x6f, 0x72, 0x32, 0x44, 0x9f, 0x87, 0xa9, 0xd7, 0x02, 0xb1, 0x2d, 0x19, 0xbd, 0xe7, 0xf9, 0x59, 0x0f, 0x94, 0x67, 0xb0, 0x6b, 0xd5, 0x8a } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 2: A 1024-bit RSA key pair", -{ - /* Modulus */ - 128, - { 0x98, 0xb7, 0x05, 0x82, 0xca, 0x80, 0x8f, 0xd1, 0xd3, 0x50, 0x95, 0x62, 0xa0, 0xef, 0x30, 0x5a, 0xf6, 0xd9, 0x87, 0x54, 0x43, 0xb3, 0x5b, 0xdf, 0x24, 0xd5, 0x36, 0x35, 0x3e, 0x3f, 0x12, 0x28, 0xdc, 0xd1, 0x2a, 0x78, 0x56, 0x83, 0x56, 0xc6, 0xff, 0x32, 0x3a, 0xbf, 0x72, 0xac, 0x1c, 0xdb, 0xfe, 0x71, 0x2f, 0xb4, 0x9f, 0xe5, 0x94, 0xa5, 0xa2, 0x17, 0x5d, 0x48, 0xb6, 0x73, 0x25, 0x38, 0xd8, 0xdf, 0x37, 0xcb, 0x97, 0x0b, 0xe4, 0xa5, 0xb5, 0x62, 0xc3, 0xf2, 0x98, 0xdb, 0x9d, 0xdf, 0x75, 0x60, 0x78, 0x77, 0x91, 0x8c, 0xce, 0xd1, 0xd0, 0xd1, 0xf3, 0x77, 0x33, 0x8c, 0x0d, 0x3d, 0x32, 0x07, 0x79, 0x7e, 0x86, 0x2c, 0x65, 0xd1, 0x14, 0x39, 0xe5, 0x88, 0x17, 0x75, 0x27, 0xa7, 0xde, 0xd9, 0x19, 0x71, 0xad, 0xcf, 0x91, 0xe2, 0xe8, 0x34, 0xe3, 0x7f, 0x05, 0xa7, 0x36, 0x55 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x06, 0x14, 0xa7, 0x86, 0x05, 0x2d, 0x28, 0x4c, 0xd9, 0x06, 0xa8, 0xe4, 0x13, 0xf7, 0x62, 0x2c, 0x05, 0x0f, 0x35, 0x49, 0xc0, 0x26, 0x58, 0x9e, 0xa2, 0x77, 0x50, 0xe0, 0xbe, 0xd9, 0x41, 0x0e, 0x5a, 0x78, 0x83, 0xa1, 0xe6, 0x03, 0xf5, 0xc5, 0x17, 0xad, 0x36, 0xd4, 0x9f, 0xaa, 0xc5, 0xbd, 0x66, 0xbc, 0xb8, 0x03, 0x0f, 0xa8, 0xd3, 0x09, 0xe3, 0x51, 0xdd, 0xd7, 0x82, 0xd8, 0x43, 0xdf, 0x97, 0x56, 0x80, 0xae, 0x73, 0xee, 0xa9, 0xaa, 0xb2, 0x89, 0xb7, 0x57, 0x20, 0x5d, 0xad, 0xb8, 0xfd, 0xfb, 0x98, 0x9e, 0xc8, 0xdb, 0x8e, 0x70, 0x95, 0xf5, 0x1f, 0x24, 0x52, 0x9f, 0x56, 0x37, 0xaa, 0x66, 0x93, 0x31, 0xe2, 0x56, 0x9f, 0x8b, 0x85, 0x4a, 0xbe, 0xce, 0xc9, 0x9a, 0xa2, 0x64, 0xc3, 0xda, 0x7c, 0xc6, 0x86, 0x6f, 0x0c, 0x0e, 0x1f, 0xb8, 0x46, 0x98, 0x48, 0x58, 0x1c, 0x73 } -, - /* Prime 1 */ - 64, - { 0xcb, 0x61, 0xa8, 0x8c, 0x8c, 0x30, 0x5a, 0xd9, 0xa8, 0xfb, 0xec, 0x2b, 0xa4, 0xc8, 0x6c, 0xcc, 0xc2, 0x02, 0x80, 0x24, 0xaa, 0x16, 0x90, 0xc2, 0x9b, 0xc8, 0x26, 0x4d, 0x2f, 0xeb, 0xe8, 0x7e, 0x4f, 0x86, 0xe9, 0x12, 0xef, 0x0f, 0x5c, 0x18, 0x53, 0xd7, 0x1c, 0xbc, 0x9b, 0x14, 0xba, 0xed, 0x3c, 0x37, 0xce, 0xf6, 0xc7, 0xa3, 0x59, 0x8b, 0x6f, 0xbe, 0x06, 0x48, 0x10, 0x90, 0x5b, 0x57 } -, - /* Prime 2 */ - 64, - { 0xc0, 0x39, 0x9f, 0x0b, 0x93, 0x80, 0xfa, 0xba, 0x38, 0xff, 0x80, 0xd2, 0xff, 0xf6, 0xed, 0xe7, 0x9c, 0xfd, 0xab, 0xf6, 0x58, 0x97, 0x20, 0x77, 0xa5, 0xe2, 0xb2, 0x95, 0x69, 0x3e, 0xa5, 0x10, 0x72, 0x26, 0x8b, 0x91, 0x74, 0x6e, 0xea, 0x9b, 0xe0, 0x4a, 0xd6, 0x61, 0x00, 0xeb, 0xed, 0x73, 0x3d, 0xb4, 0xcd, 0x01, 0x47, 0xa1, 0x8d, 0x6d, 0xe8, 0xc0, 0xcd, 0x8f, 0xbf, 0x24, 0x9c, 0x33 } -, - /* Prime exponent 1 */ - 64, - { 0x94, 0x4c, 0x3a, 0x65, 0x79, 0x57, 0x4c, 0xf7, 0x87, 0x33, 0x62, 0xab, 0x14, 0x35, 0x9c, 0xb7, 0xd5, 0x03, 0x93, 0xc2, 0xa8, 0x4f, 0x59, 0xf0, 0xbd, 0x3c, 0xbd, 0x48, 0xed, 0x17, 0x7c, 0x68, 0x95, 0xbe, 0x8e, 0xb6, 0xe2, 0x9f, 0xf5, 0x8c, 0x3b, 0x9e, 0x0f, 0xf3, 0x2a, 0xb5, 0x7b, 0xf3, 0xbe, 0x44, 0x07, 0x62, 0x84, 0x81, 0x84, 0xaa, 0x9a, 0xa9, 0x19, 0xd5, 0x74, 0x56, 0x7e, 0x73 } -, - /* Prime exponent 2 */ - 64, - { 0x45, 0xeb, 0xef, 0xd5, 0x87, 0x27, 0x30, 0x8c, 0xd2, 0xb4, 0xe6, 0x08, 0x5a, 0x81, 0x58, 0xd2, 0x9a, 0x41, 0x8f, 0xee, 0xc1, 0x14, 0xe0, 0x03, 0x85, 0xbc, 0xeb, 0x96, 0xfb, 0xbc, 0x84, 0xd0, 0x71, 0xa5, 0x61, 0xb9, 0x5c, 0x30, 0x08, 0x79, 0x00, 0xe2, 0x58, 0x0e, 0xdb, 0x05, 0xf6, 0xce, 0xa7, 0x90, 0x7f, 0xcd, 0xca, 0x5f, 0x92, 0x91, 0x7b, 0x4b, 0xbe, 0xba, 0x5e, 0x1e, 0x14, 0x0f } -, - /* Coefficient */ - 64, - { 0xc5, 0x24, 0x68, 0xc8, 0xfd, 0x15, 0xe5, 0xda, 0x2f, 0x6c, 0x8e, 0xba, 0x4e, 0x97, 0xba, 0xeb, 0xe9, 0x95, 0xb6, 0x7a, 0x1a, 0x7a, 0xd7, 0x19, 0xdd, 0x9f, 0xff, 0x36, 0x6b, 0x18, 0x4d, 0x5a, 0xb4, 0x55, 0x07, 0x59, 0x09, 0x29, 0x20, 0x44, 0xec, 0xb3, 0x45, 0xcf, 0x2c, 0xdd, 0x26, 0x22, 0x8e, 0x21, 0xf8, 0x51, 0x83, 0x25, 0x5f, 0x4a, 0x9e, 0x69, 0xf4, 0xc7, 0x15, 0x2e, 0xbb, 0x0f } - -} -, -{{ - "PKCS#1 v1.5 Encryption Example 2.1", - /* Message */ - 17, - { 0xe9, 0xa7, 0x71, 0xe0, 0xa6, 0x5f, 0x28, 0x70, 0x8e, 0x83, 0xd5, 0xe6, 0xcc, 0x89, 0x8a, 0x41, 0xd7 } -, - /* Seed */ - 108, - { 0x16, 0x8e, 0x3e, 0xb5, 0x80, 0x9b, 0x08, 0x70, 0xe1, 0xf2, 0x48, 0x7e, 0x1b, 0xe7, 0x7a, 0x17, 0x6b, 0x34, 0x71, 0x6d, 0xe1, 0x41, 0xba, 0x4c, 0x90, 0x59, 0xda, 0x90, 0xe5, 0xe5, 0x1a, 0x36, 0x94, 0xe8, 0x58, 0xfe, 0xd1, 0x0b, 0x92, 0x6c, 0x02, 0x52, 0x39, 0x80, 0xa8, 0x90, 0x9d, 0xa9, 0x96, 0xc6, 0x43, 0x33, 0xea, 0x67, 0x67, 0x87, 0xbc, 0xe6, 0x77, 0xf1, 0x1f, 0xda, 0x77, 0xdb, 0xb1, 0xa9, 0x51, 0x6e, 0xdd, 0xa9, 0xb1, 0x29, 0x4f, 0xc2, 0xe4, 0x50, 0x52, 0x22, 0x88, 0xe9, 0x30, 0xbe, 0x7f, 0xa7, 0x29, 0xb2, 0x50, 0xe3, 0xaa, 0xc5, 0x20, 0x51, 0x1e, 0x95, 0x16, 0xaa, 0x86, 0x3a, 0xf6, 0xbc, 0x07, 0x5c, 0xbd, 0xbf, 0xf4, 0x30, 0x46, 0x70 } -, - /* Encryption */ - 128, - { 0x71, 0xc2, 0xb8, 0xfb, 0x38, 0x19, 0xf1, 0x34, 0xc2, 0x24, 0x7c, 0x6b, 0xab, 0xb4, 0xcf, 0xbe, 0x17, 0xd7, 0xb2, 0x64, 0x3f, 0x87, 0xac, 0xe5, 0xc5, 0x71, 0x27, 0x7b, 0xe1, 0x90, 0x8e, 0xf3, 0xa5, 0x28, 0x8e, 0x34, 0x38, 0x4e, 0x46, 0x0a, 0x70, 0x38, 0x6e, 0x7e, 0xa1, 0xd1, 0x9d, 0x3d, 0xca, 0x1c, 0xe1, 0x5b, 0xa9, 0x32, 0x39, 0xa8, 0xcd, 0xda, 0x18, 0xe3, 0x17, 0xfe, 0x07, 0x96, 0x80, 0xce, 0x7e, 0x6a, 0xc6, 0xd9, 0xbd, 0xaf, 0x86, 0xcb, 0x9a, 0xeb, 0xf1, 0xcf, 0x46, 0xcd, 0x10, 0xef, 0x6a, 0x68, 0x8b, 0x0c, 0xb2, 0xce, 0x76, 0x5d, 0xd0, 0xb3, 0x25, 0x20, 0x42, 0x39, 0x66, 0xee, 0xe1, 0xaa, 0x05, 0xc6, 0xc2, 0x8c, 0x6f, 0x35, 0x24, 0xfb, 0x68, 0x6b, 0x5f, 0xb1, 0x58, 0x53, 0x65, 0x9e, 0x58, 0x3a, 0xc4, 0x37, 0x21, 0x9d, 0xef, 0x8e, 0xdc, 0x58, 0xbe, 0x2d } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Encryption Example 2.2", - /* Message */ - 47, - { 0x66, 0x4b, 0xf0, 0x5d, 0x61, 0x2b, 0xaf, 0x61, 0x52, 0x4c, 0x60, 0x8e, 0xda, 0x36, 0xfc, 0x6e, 0xa2, 0xc9, 0x3c, 0x14, 0x31, 0x53, 0x22, 0x1b, 0xcf, 0xd6, 0xba, 0x0c, 0xfb, 0xbd, 0x6b, 0x64, 0x14, 0x47, 0xe4, 0x78, 0x8b, 0x0a, 0x46, 0x2c, 0xb5, 0xb3, 0xf9, 0xfa, 0xfc, 0x9a, 0x75 } -, - /* Seed */ - 78, - { 0xe7, 0xf0, 0xa2, 0x79, 0x18, 0xca, 0xd9, 0x15, 0xda, 0x28, 0x11, 0x36, 0x59, 0xff, 0xb5, 0xdf, 0xa0, 0xb5, 0x1b, 0x24, 0xd5, 0xa7, 0x1c, 0x20, 0x27, 0xf8, 0xe4, 0xd9, 0x40, 0x9e, 0x8c, 0x64, 0x72, 0xf0, 0xc5, 0x4b, 0x5c, 0x08, 0x85, 0x8d, 0xa6, 0x3d, 0x4b, 0x81, 0x72, 0xb0, 0x7d, 0xcf, 0x8c, 0x5a, 0x7e, 0x8f, 0x9e, 0x90, 0xf0, 0x17, 0xc2, 0x4b, 0x44, 0xd1, 0x6b, 0x67, 0x0b, 0xdc, 0x96, 0x03, 0x0c, 0x83, 0x53, 0xa2, 0x83, 0x9b, 0xa4, 0xc0, 0x75, 0xd2, 0x4c, 0x20 } -, - /* Encryption */ - 128, - { 0x06, 0x86, 0x90, 0x18, 0x13, 0xdb, 0x05, 0x3a, 0xc7, 0x08, 0xe3, 0xfc, 0xec, 0x6b, 0xae, 0x03, 0x60, 0x08, 0x8f, 0xd3, 0x44, 0xe9, 0xd7, 0xea, 0x11, 0x8b, 0xb3, 0xf5, 0x37, 0x53, 0x14, 0x25, 0x1e, 0x60, 0x67, 0x37, 0xf5, 0x82, 0x4b, 0x36, 0x28, 0xf6, 0x65, 0x03, 0x48, 0xf6, 0xab, 0x55, 0x3b, 0x27, 0x7d, 0xa0, 0x15, 0x44, 0xd0, 0x56, 0x73, 0xba, 0xed, 0xf4, 0x55, 0xcc, 0x03, 0x32, 0xf6, 0x13, 0xf6, 0x54, 0x78, 0xfc, 0xfe, 0x06, 0x67, 0x34, 0xc4, 0x65, 0x58, 0xbc, 0x23, 0x3b, 0x4b, 0x6f, 0x52, 0x41, 0xe4, 0xf4, 0xac, 0x53, 0xfc, 0x18, 0xc5, 0x53, 0x84, 0xc8, 0xfd, 0x96, 0x18, 0x3f, 0x0b, 0xb5, 0x51, 0x5e, 0x89, 0x31, 0x14, 0xf9, 0xc6, 0x1c, 0xcc, 0x11, 0xfc, 0x19, 0x83, 0xde, 0x74, 0x46, 0x92, 0x64, 0xdb, 0xdb, 0xb0, 0xc7, 0x49, 0x17, 0x4e, 0xcd, 0xfb, 0xe3 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.3", - /* Message */ - 52, - { 0x5e, 0x76, 0xe6, 0x6e, 0xd5, 0x75, 0x41, 0xfc, 0x23, 0xd3, 0x59, 0xf4, 0xad, 0xbf, 0x3f, 0x56, 0x82, 0x01, 0xd3, 0xc6, 0xf0, 0xe0, 0x26, 0xaa, 0xa5, 0x67, 0x63, 0x56, 0xcc, 0x98, 0x66, 0xf1, 0x75, 0x5d, 0xe9, 0x8c, 0xb3, 0x9f, 0x23, 0x6d, 0xaf, 0xa9, 0xe6, 0xbc, 0x79, 0x4b, 0x74, 0x43, 0xb5, 0x3a, 0x2d, 0x85 } -, - /* Seed */ - 73, - { 0x5c, 0x65, 0x68, 0xb6, 0xe3, 0x3b, 0xc1, 0x3a, 0xd2, 0xdc, 0xd6, 0x01, 0x2d, 0x17, 0xda, 0x81, 0xb1, 0x3d, 0xbd, 0x62, 0xaa, 0xe4, 0x0a, 0x64, 0xaf, 0x97, 0xe2, 0x19, 0xe7, 0x5d, 0xc1, 0x81, 0x12, 0x60, 0x77, 0xd1, 0x20, 0xdd, 0xa1, 0x9d, 0x63, 0x12, 0xcf, 0x1e, 0x98, 0x71, 0xc1, 0x15, 0xf0, 0x86, 0x7f, 0xe6, 0x62, 0xd7, 0x8a, 0x40, 0x31, 0x97, 0x6b, 0xdd, 0xef, 0x68, 0xf5, 0x2b, 0x68, 0x99, 0x58, 0x67, 0xcd, 0x80, 0x95, 0x05, 0xdd } -, - /* Encryption */ - 128, - { 0x19, 0xe7, 0x99, 0x66, 0xff, 0x1f, 0xbc, 0x10, 0x07, 0x3d, 0xe7, 0x3d, 0xf3, 0xa5, 0x31, 0x63, 0x78, 0x74, 0xe4, 0x7d, 0xf6, 0x39, 0x25, 0x6c, 0x51, 0xd0, 0xbb, 0xa9, 0x35, 0x61, 0x0b, 0x46, 0x34, 0xf9, 0xe5, 0xb4, 0x68, 0x9b, 0xd9, 0x21, 0x73, 0x5b, 0x32, 0x23, 0x6e, 0xfc, 0xc6, 0xe7, 0xcc, 0x49, 0xa9, 0xe0, 0x6a, 0x25, 0xac, 0x96, 0x59, 0xb7, 0xfe, 0x82, 0x9c, 0xb3, 0xe8, 0xb0, 0x1f, 0x10, 0x31, 0x79, 0x42, 0x23, 0x65, 0x74, 0x1b, 0x76, 0xc8, 0x34, 0x21, 0x49, 0xce, 0xdc, 0x76, 0xeb, 0x0a, 0xd0, 0x18, 0xed, 0x42, 0x35, 0xfb, 0xd5, 0x24, 0xfd, 0x87, 0xc9, 0x54, 0x9a, 0xb3, 0x3f, 0xf2, 0x3e, 0xe4, 0xf8, 0x20, 0x0e, 0xfa, 0x33, 0x02, 0x7e, 0x9d, 0xee, 0xc6, 0x0f, 0xac, 0x01, 0x3d, 0x1e, 0x56, 0xe6, 0xe3, 0x33, 0xd4, 0x93, 0xa4, 0xa9, 0x46, 0x0f, 0xe5, 0x8a } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.4", - /* Message */ - 9, - { 0x5b, 0x19, 0x50, 0x48, 0xeb, 0x90, 0xeb, 0x47, 0x93 } -, - /* Seed */ - 116, - { 0xbb, 0xbd, 0x49, 0x55, 0x0e, 0xd1, 0xea, 0x1b, 0x6b, 0xc7, 0x20, 0x6c, 0xe0, 0xb0, 0x03, 0xa6, 0x32, 0xa5, 0x2b, 0x0b, 0xac, 0x5f, 0x32, 0x71, 0x0b, 0x39, 0xfa, 0x64, 0xb3, 0x55, 0x6a, 0xd6, 0xf6, 0xc8, 0x2b, 0xd9, 0xd5, 0x31, 0xb3, 0x07, 0x46, 0x9e, 0x86, 0x3f, 0x54, 0xb5, 0xfe, 0x21, 0x83, 0x05, 0x69, 0x54, 0xf2, 0xa9, 0x67, 0xe4, 0xdc, 0x2b, 0x32, 0x6e, 0x41, 0xdd, 0xdf, 0x74, 0x3a, 0x76, 0x4f, 0x7e, 0x82, 0x88, 0x68, 0x29, 0xa8, 0xfa, 0xb2, 0x77, 0x2a, 0x34, 0x97, 0x70, 0x6b, 0x95, 0x38, 0xa9, 0xf8, 0x42, 0x96, 0xc8, 0x2d, 0x9b, 0xaf, 0xc2, 0x9c, 0x39, 0xd4, 0x68, 0x4f, 0x75, 0xff, 0x6b, 0xb1, 0xc1, 0x2e, 0x39, 0xbb, 0x80, 0x56, 0xaf, 0x2d, 0x24, 0x34, 0x4b, 0x2c, 0xae, 0x46, 0x29 } -, - /* Encryption */ - 128, - { 0x42, 0xc9, 0xcb, 0x68, 0x21, 0xb5, 0x5d, 0xae, 0x30, 0xd9, 0x00, 0x25, 0x75, 0x31, 0x12, 0xe6, 0xee, 0x02, 0xf4, 0xad, 0x6f, 0x0f, 0x5b, 0x3c, 0xc4, 0x95, 0x2a, 0x12, 0x7c, 0x8a, 0x16, 0xf6, 0x64, 0x79, 0xb8, 0x14, 0x4f, 0x3c, 0xf2, 0x9d, 0x84, 0xe4, 0x3d, 0x67, 0xd6, 0x77, 0x12, 0xc7, 0xf5, 0xb7, 0x6d, 0xa2, 0xc6, 0x6b, 0xa0, 0xe9, 0x0c, 0xd4, 0xb1, 0xfc, 0x1c, 0x1b, 0x3f, 0x17, 0xa3, 0x92, 0xe7, 0x04, 0x08, 0x28, 0x8a, 0xf6, 0x9b, 0x50, 0xfe, 0x8a, 0x50, 0xb3, 0x29, 0x6a, 0x0d, 0xab, 0xd7, 0xc8, 0xdc, 0x39, 0x84, 0xa1, 0x94, 0x06, 0x88, 0xbe, 0x70, 0x98, 0x25, 0x16, 0x20, 0x25, 0x6c, 0xc2, 0x1b, 0x7c, 0x76, 0xed, 0x29, 0xd8, 0x6f, 0xf7, 0xc0, 0x1e, 0xc2, 0x87, 0xdf, 0x47, 0x38, 0xbe, 0x34, 0x69, 0xb3, 0x0a, 0x3f, 0x8f, 0xb7, 0xbe, 0x83, 0xd9, 0x36, 0x1a } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.5", - /* Message */ - 61, - { 0x66, 0x0b, 0xbd, 0x40, 0x06, 0x9c, 0xc6, 0x7b, 0xad, 0xe4, 0x1a, 0x09, 0xec, 0xf4, 0x3c, 0xc4, 0x51, 0x3f, 0x7c, 0x7c, 0xc0, 0x2d, 0xde, 0x97, 0x2d, 0x2b, 0x1f, 0x29, 0x29, 0x5e, 0x09, 0xb9, 0x91, 0x0c, 0x59, 0xed, 0xba, 0x0e, 0xd2, 0xdd, 0xf1, 0x1a, 0x6d, 0x41, 0x69, 0x35, 0x1f, 0x97, 0x24, 0x07, 0x33, 0x52, 0x8f, 0x91, 0xb2, 0x68, 0xfa, 0xa7, 0xaf, 0x90, 0x6e } -, - /* Seed */ - 64, - { 0x30, 0x7f, 0x61, 0xb1, 0x83, 0xa8, 0xdc, 0xf9, 0x15, 0x5a, 0xb2, 0x35, 0xe6, 0x1f, 0xb5, 0x6b, 0xa2, 0xb8, 0x79, 0x5d, 0xc4, 0x23, 0x53, 0x85, 0xe8, 0xac, 0xf3, 0x66, 0xd2, 0x52, 0x33, 0xb4, 0x70, 0xe0, 0x5d, 0x70, 0x11, 0xb6, 0xfc, 0x53, 0x2f, 0x0a, 0x65, 0x8a, 0xd1, 0x3a, 0xfd, 0x29, 0x0c, 0x6f, 0x30, 0xe2, 0x79, 0x5e, 0xe3, 0xd3, 0x9d, 0xbd, 0xc8, 0x0f, 0x56, 0x0e, 0xce, 0x2f } -, - /* Encryption */ - 128, - { 0x04, 0x9b, 0x26, 0x05, 0x0a, 0x3a, 0xbe, 0xf8, 0x3e, 0xc2, 0x77, 0x61, 0x11, 0xe3, 0xb7, 0x2f, 0xb9, 0xa2, 0xd6, 0xa8, 0x01, 0x05, 0x5d, 0x6b, 0x5e, 0x0d, 0xa4, 0xe9, 0x5c, 0xcf, 0x2e, 0xbd, 0x0a, 0x78, 0x6a, 0x97, 0x21, 0xaa, 0x79, 0x25, 0xbf, 0x15, 0xbe, 0xb6, 0x27, 0x13, 0xa3, 0x13, 0x87, 0x7d, 0xd8, 0x5d, 0x26, 0x58, 0xb2, 0x08, 0xe8, 0x8e, 0x64, 0x45, 0xfc, 0x35, 0x01, 0x9b, 0x0c, 0xad, 0x6b, 0xf4, 0xd0, 0x6e, 0x2c, 0xa5, 0xf1, 0x19, 0x49, 0xee, 0xee, 0x7e, 0xe4, 0x7f, 0x1d, 0x5b, 0x4c, 0x88, 0x24, 0x1f, 0x50, 0xe4, 0xd6, 0xed, 0xf0, 0x18, 0x3d, 0x4f, 0xa3, 0x5a, 0x37, 0x1f, 0xc4, 0x07, 0x36, 0x4f, 0x2d, 0xca, 0xa4, 0xcd, 0xae, 0xce, 0xfc, 0xea, 0x6d, 0xfa, 0xc1, 0xd5, 0x13, 0xf9, 0x05, 0xe7, 0x47, 0x94, 0x47, 0x44, 0xbb, 0x64, 0x57, 0x6b, 0xa1, 0xc8 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.6", - /* Message */ - 11, - { 0x81, 0xcb, 0x0a, 0x97, 0x69, 0x8f, 0x82, 0x3b, 0x56, 0xb4, 0x5f } -, - /* Seed */ - 114, - { 0x93, 0x8c, 0x8d, 0xfd, 0xa0, 0x8b, 0x89, 0x05, 0x5b, 0x68, 0xaf, 0x01, 0x1f, 0x24, 0x6c, 0xec, 0x1f, 0x93, 0xa2, 0x77, 0x1d, 0xa9, 0x7d, 0xba, 0x20, 0x95, 0x4c, 0x90, 0x09, 0x12, 0x28, 0x5e, 0x5d, 0xb1, 0x87, 0xb2, 0x9e, 0x32, 0x72, 0xe9, 0x9e, 0x69, 0x4e, 0x12, 0x14, 0x17, 0x25, 0x28, 0x45, 0x30, 0x84, 0x06, 0x4e, 0x5c, 0x60, 0xf0, 0x1e, 0x78, 0x6f, 0xc5, 0xd0, 0xd9, 0xaf, 0x06, 0x39, 0xa4, 0x98, 0xc5, 0x7a, 0xde, 0x93, 0x77, 0x60, 0xae, 0x51, 0x74, 0x84, 0xaf, 0xd7, 0x02, 0x5e, 0xa0, 0xd5, 0x5a, 0x62, 0xb1, 0x1f, 0x9a, 0xab, 0x7f, 0xa5, 0xdd, 0xd0, 0x93, 0xe5, 0xea, 0xba, 0xd6, 0x1b, 0x67, 0xa2, 0x95, 0xa7, 0x75, 0xbe, 0x96, 0xc6, 0xb7, 0x6e, 0xc3, 0xfe, 0x47, 0x29, 0x50 } -, - /* Encryption */ - 128, - { 0x7f, 0xb8, 0xf3, 0x35, 0xee, 0xdc, 0x4a, 0xf6, 0xaf, 0x44, 0x07, 0x3d, 0xa1, 0x96, 0x45, 0x7d, 0x04, 0x61, 0x45, 0x03, 0x01, 0x47, 0xf8, 0x42, 0x0f, 0xc7, 0x9b, 0xd5, 0x89, 0x77, 0x4a, 0x73, 0x0a, 0x6d, 0x94, 0xfb, 0x7e, 0xfa, 0xdc, 0x5a, 0xee, 0xa7, 0xc0, 0x70, 0xf1, 0x89, 0x24, 0x91, 0x25, 0xe1, 0x66, 0xc6, 0xd3, 0x01, 0x29, 0xec, 0xf2, 0xc4, 0x82, 0x2a, 0x50, 0x49, 0x6b, 0xc2, 0xf2, 0x1e, 0x79, 0xac, 0x57, 0xdb, 0xfb, 0xdd, 0x71, 0xa6, 0x8b, 0x58, 0xd9, 0x05, 0x1b, 0x48, 0x0b, 0xf4, 0x77, 0x48, 0xa1, 0x3d, 0xfb, 0x67, 0x3e, 0xae, 0xd7, 0x71, 0x0a, 0x46, 0x8f, 0xe7, 0x2f, 0x7d, 0x74, 0xe6, 0xf4, 0xa2, 0x89, 0x44, 0x04, 0x3a, 0x52, 0xd9, 0x30, 0xde, 0x68, 0xdb, 0xcb, 0x6e, 0xe7, 0xfb, 0x8b, 0x69, 0x64, 0x05, 0x41, 0xe3, 0xed, 0x5b, 0x75, 0x4e, 0x65, 0xfe } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.7", - /* Message */ - 45, - { 0x05, 0xf7, 0x83, 0x56, 0x23, 0xc8, 0xcf, 0xaa, 0xe4, 0x82, 0xa9, 0x10, 0x85, 0xb9, 0x7f, 0x6b, 0x95, 0x92, 0x8b, 0xb9, 0x74, 0xac, 0xad, 0x02, 0x36, 0x4a, 0xaf, 0x13, 0x17, 0xed, 0x53, 0xc9, 0xdb, 0x2f, 0xfb, 0xc8, 0xa3, 0xcb, 0x3a, 0x00, 0xf4, 0x4d, 0xac, 0xef, 0x78 } -, - /* Seed */ - 80, - { 0x80, 0xc8, 0x3d, 0x25, 0x47, 0xbe, 0x41, 0xba, 0xf2, 0x32, 0x1b, 0xd3, 0x0a, 0x9a, 0xb7, 0x74, 0x9c, 0x5e, 0xeb, 0xb5, 0xa1, 0xff, 0xf0, 0xb3, 0x1d, 0x6b, 0xdb, 0x0a, 0xd1, 0x6d, 0xd0, 0xc0, 0xfb, 0x3e, 0xc1, 0x57, 0xe7, 0x8b, 0x09, 0x86, 0x60, 0x20, 0x41, 0xcd, 0xe8, 0x89, 0x57, 0xa5, 0x53, 0x29, 0xe3, 0xe2, 0xcf, 0xe8, 0x5a, 0x59, 0x44, 0x74, 0x94, 0x5e, 0xfa, 0x33, 0x35, 0x85, 0xff, 0xfd, 0x41, 0xeb, 0xb8, 0xe7, 0xc5, 0x18, 0xc3, 0xc9, 0x25, 0x9a, 0xea, 0x8d, 0xe6, 0x35 } -, - /* Encryption */ - 128, - { 0x87, 0xf9, 0xce, 0x05, 0xf0, 0xac, 0x9c, 0x05, 0xe4, 0x5f, 0xb7, 0xbb, 0x55, 0x5a, 0x7a, 0x18, 0xa9, 0xcd, 0xc5, 0x5f, 0x54, 0x4a, 0x54, 0x21, 0x01, 0xe9, 0xa7, 0x1c, 0xd2, 0x03, 0x66, 0x82, 0x0e, 0x7f, 0xf6, 0xdc, 0xa3, 0x46, 0x75, 0x22, 0x9d, 0x86, 0xe4, 0xfb, 0x58, 0x71, 0xf9, 0x31, 0x0b, 0x12, 0xbb, 0x74, 0xe2, 0x86, 0x18, 0xd6, 0xd6, 0x58, 0x65, 0x87, 0xf6, 0x6a, 0xcc, 0x89, 0x68, 0xa8, 0x3c, 0xd8, 0x07, 0xf4, 0xd2, 0x12, 0x97, 0x73, 0x1d, 0x7c, 0x22, 0xc1, 0x45, 0x99, 0xe7, 0x57, 0x19, 0xfd, 0x23, 0x05, 0x2b, 0x8a, 0xa6, 0x5b, 0x7e, 0x9c, 0x5c, 0x02, 0x00, 0x38, 0x2d, 0x35, 0xd5, 0x60, 0xf2, 0xd3, 0x3d, 0xd0, 0x49, 0xe0, 0x6a, 0xc8, 0x27, 0xcb, 0xdd, 0x9a, 0xf5, 0x81, 0xa6, 0xb2, 0x6d, 0xb6, 0x1d, 0x43, 0xd7, 0x12, 0x4b, 0x34, 0x72, 0x1d, 0xf1, 0x42 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.8", - /* Message */ - 59, - { 0xe2, 0xe0, 0xf6, 0xb3, 0x28, 0xd9, 0xbb, 0xe9, 0xfd, 0x66, 0xcd, 0x87, 0x98, 0x7c, 0x11, 0x60, 0xed, 0x23, 0x7b, 0x1c, 0x7c, 0x65, 0x6a, 0x89, 0xfb, 0x1f, 0x21, 0xd7, 0x09, 0x40, 0x3b, 0x04, 0x10, 0xf8, 0xe4, 0xe1, 0x2e, 0xb9, 0x69, 0x0a, 0xeb, 0xeb, 0x38, 0x07, 0x31, 0x9a, 0x93, 0x65, 0x64, 0xf6, 0x67, 0x17, 0xa7, 0x1c, 0x48, 0x62, 0xcc, 0xc5, 0x6e } -, - /* Seed */ - 66, - { 0xcf, 0x18, 0xe6, 0x08, 0xb1, 0x56, 0x14, 0x5c, 0x44, 0xde, 0x31, 0x49, 0x66, 0xcb, 0xcc, 0x66, 0x74, 0xa4, 0x5a, 0xe0, 0xdf, 0x90, 0x04, 0x06, 0xe4, 0x0d, 0x3d, 0xfc, 0x32, 0x2f, 0x39, 0x40, 0x4c, 0xee, 0xb6, 0xdc, 0x58, 0xf8, 0x01, 0xbb, 0xf2, 0xac, 0x4f, 0x47, 0x84, 0x1a, 0xbd, 0x79, 0x61, 0x79, 0xd0, 0x82, 0x4f, 0x3b, 0xf5, 0x51, 0x8d, 0x78, 0xcc, 0x66, 0xad, 0x8d, 0xfb, 0xed, 0xb1, 0x17 } -, - /* Encryption */ - 128, - { 0x14, 0x01, 0xaa, 0x21, 0xec, 0x6e, 0xba, 0xa7, 0xe3, 0xa9, 0xf7, 0x13, 0xc8, 0x6b, 0x50, 0x8e, 0x37, 0x5f, 0x6c, 0x12, 0x5b, 0x29, 0x62, 0x6e, 0xbd, 0x34, 0x9f, 0x64, 0xe2, 0x0f, 0xa4, 0x8a, 0x1b, 0x06, 0x84, 0x79, 0xff, 0xf3, 0x30, 0x22, 0xf6, 0x6f, 0x86, 0xe9, 0x7d, 0x9c, 0x5e, 0xdd, 0x90, 0x26, 0xe3, 0x18, 0x3c, 0xe0, 0x86, 0x41, 0x57, 0x06, 0x59, 0x35, 0x2f, 0x87, 0xa6, 0x18, 0x91, 0xf3, 0xd8, 0x6a, 0x3d, 0x24, 0x5f, 0x02, 0x45, 0xe3, 0x9d, 0x99, 0x89, 0x2c, 0x67, 0xfa, 0x2b, 0xed, 0x8e, 0x37, 0x54, 0x8d, 0xe2, 0x3d, 0xef, 0xdd, 0x1e, 0x43, 0xd5, 0xd7, 0xe3, 0xd9, 0xa3, 0xc2, 0x2c, 0xe6, 0xa3, 0x68, 0xd8, 0x4c, 0x5a, 0xfa, 0x1c, 0xc5, 0xbf, 0x49, 0xb6, 0x8f, 0xe5, 0xc2, 0x5a, 0x32, 0x6b, 0x0e, 0xec, 0x5e, 0x44, 0xc5, 0xe2, 0xff, 0x5a, 0x35, 0x9d, 0xd1 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.9", - /* Message */ - 17, - { 0xc6, 0x95, 0x78, 0xea, 0x03, 0xe2, 0x69, 0xb1, 0xb9, 0x16, 0x33, 0xa7, 0x2f, 0x9f, 0xb4, 0xd1, 0x0c } -, - /* Seed */ - 108, - { 0xe0, 0xa1, 0xa9, 0xba, 0xe3, 0x0a, 0x7a, 0xc6, 0x6c, 0xab, 0x3d, 0x86, 0x43, 0x3c, 0x1c, 0xa5, 0xe8, 0xac, 0x2b, 0x74, 0xe4, 0x83, 0xca, 0x7f, 0x34, 0x59, 0x77, 0x16, 0xee, 0x16, 0x18, 0x90, 0x6c, 0x97, 0x77, 0x2f, 0x28, 0x86, 0xf4, 0x6d, 0x78, 0x31, 0x21, 0xb7, 0xfe, 0x1b, 0x8f, 0xa5, 0xfb, 0xec, 0x09, 0xc0, 0x68, 0xe5, 0x63, 0x5c, 0x89, 0xe6, 0xa0, 0xa9, 0xac, 0xcf, 0x2b, 0x12, 0xc6, 0x47, 0x06, 0xb6, 0xae, 0x9a, 0x5a, 0x74, 0xab, 0xb8, 0x3f, 0x64, 0xe1, 0x3a, 0x8c, 0x53, 0xf9, 0x26, 0x76, 0x04, 0x66, 0xb6, 0x45, 0xe2, 0x8e, 0x9a, 0xd6, 0x46, 0x1a, 0xe7, 0xb8, 0x9d, 0x5e, 0xfc, 0xcf, 0x7d, 0x89, 0x14, 0x9a, 0xa2, 0xe6, 0x9f, 0x0d, 0x25 } -, - /* Encryption */ - 128, - { 0x78, 0xf8, 0x7d, 0x6b, 0x06, 0x76, 0x1b, 0xd7, 0xe7, 0x17, 0xe0, 0xc5, 0xeb, 0x40, 0xe1, 0xfb, 0x80, 0x89, 0x9c, 0x7b, 0xe4, 0x01, 0x7c, 0x2e, 0xfb, 0x07, 0x59, 0x78, 0xee, 0x38, 0xd0, 0xf9, 0x5e, 0x98, 0x03, 0xdc, 0xd4, 0x0f, 0xee, 0x97, 0x92, 0xc6, 0x1d, 0x4a, 0x2d, 0x85, 0xda, 0xbd, 0xea, 0x96, 0xca, 0x29, 0xf3, 0xca, 0x1e, 0x8b, 0xcf, 0x81, 0x76, 0x55, 0xd0, 0xc0, 0x94, 0x74, 0xd9, 0x80, 0x94, 0xeb, 0x6a, 0x7e, 0xf0, 0x33, 0x3d, 0x69, 0x71, 0xc9, 0x38, 0x36, 0xfe, 0x02, 0x32, 0xf7, 0x18, 0x46, 0x3d, 0xc9, 0x54, 0x18, 0x53, 0x46, 0x3b, 0xc1, 0xcf, 0x03, 0x67, 0x7e, 0x78, 0x6e, 0xe5, 0x2e, 0x72, 0x71, 0xc3, 0xc1, 0x1a, 0xc0, 0x05, 0x53, 0xc6, 0x75, 0x27, 0x07, 0xe0, 0xdf, 0x92, 0x80, 0xc4, 0xf2, 0xb7, 0xd1, 0x9f, 0xd6, 0xf3, 0xd8, 0xbb, 0xcc, 0x7b, 0xe6 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.10", - /* Message */ - 20, - { 0x76, 0x72, 0xcf, 0xc2, 0x7a, 0x41, 0xd5, 0x01, 0xaa, 0x4c, 0x41, 0xba, 0xab, 0xf4, 0x52, 0x5a, 0x7c, 0x45, 0x5f, 0xc8 } -, - /* Seed */ - 105, - { 0x4c, 0xee, 0xa1, 0xa8, 0x94, 0x64, 0xa5, 0xd2, 0xf8, 0x9e, 0x07, 0x89, 0x53, 0xca, 0xf7, 0x76, 0x36, 0x58, 0x98, 0xa5, 0xbd, 0x5e, 0x8e, 0x44, 0x8c, 0x65, 0xda, 0x26, 0xff, 0x98, 0x90, 0x0c, 0xd0, 0x80, 0x61, 0xef, 0x44, 0x6c, 0x69, 0xb4, 0x8d, 0xc4, 0x60, 0x9e, 0xd8, 0x65, 0x4a, 0x64, 0x6d, 0x70, 0x82, 0x62, 0xcb, 0x84, 0x09, 0xac, 0x27, 0xc4, 0xa4, 0x9a, 0xdf, 0xed, 0x47, 0xa8, 0x5a, 0xd4, 0x29, 0xed, 0x75, 0x07, 0x75, 0x78, 0xe4, 0xc2, 0x73, 0xc6, 0x1e, 0x2c, 0x3b, 0x46, 0xbe, 0xb4, 0x72, 0xf0, 0xa3, 0x45, 0xa0, 0x5d, 0x61, 0xa7, 0xea, 0xaa, 0xd8, 0xa6, 0x3e, 0x0b, 0x3d, 0x49, 0x52, 0xf2, 0x7c, 0x40, 0x81, 0x32, 0x9e } -, - /* Encryption */ - 128, - { 0x25, 0x2b, 0x14, 0x13, 0x3f, 0x1d, 0xb2, 0x50, 0x13, 0x29, 0x35, 0x01, 0xe3, 0x56, 0x53, 0x4f, 0x26, 0xaf, 0xe3, 0x34, 0x68, 0x8e, 0x68, 0xd7, 0x91, 0x83, 0x3a, 0x0d, 0x82, 0x56, 0x05, 0x70, 0xbb, 0xb3, 0xce, 0x2b, 0x16, 0xd8, 0xb5, 0xf7, 0xf8, 0x9e, 0x7e, 0xbc, 0x7c, 0xf9, 0xc2, 0x94, 0xab, 0x34, 0x16, 0xb7, 0xc2, 0x11, 0x87, 0x70, 0x7f, 0xe5, 0xe7, 0x99, 0x2e, 0x72, 0x0f, 0xf9, 0x58, 0xda, 0xa4, 0x0f, 0x5a, 0xd4, 0x5b, 0xc7, 0x47, 0x47, 0x96, 0x39, 0xa5, 0x37, 0xfe, 0x0a, 0x4a, 0x75, 0xfc, 0xfb, 0x45, 0xa5, 0x3f, 0x01, 0x73, 0xaf, 0xc0, 0xf3, 0xcc, 0x91, 0x0b, 0x86, 0xae, 0x31, 0x37, 0x62, 0x8d, 0x90, 0xff, 0x67, 0x5a, 0xe1, 0xae, 0x31, 0xe1, 0x64, 0x05, 0x37, 0xea, 0x1a, 0x7c, 0xcc, 0xfb, 0x73, 0xf8, 0xbe, 0x5a, 0xec, 0xa0, 0x3b, 0xab, 0x19, 0x3b, 0xb0 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.11", - /* Message */ - 32, - { 0xa1, 0x6a, 0xd8, 0xf2, 0xe0, 0x93, 0x23, 0x42, 0xed, 0x21, 0xe1, 0x37, 0x77, 0xf4, 0x65, 0x2a, 0x35, 0x50, 0xdd, 0xb4, 0x36, 0x8b, 0x5e, 0xa7, 0x1c, 0x66, 0xdb, 0xc3, 0xbb, 0xfe, 0xb7, 0xdb } -, - /* Seed */ - 93, - { 0x55, 0x88, 0x4c, 0x83, 0x0d, 0x4a, 0x80, 0xb7, 0x9f, 0x08, 0x9d, 0xa7, 0x4d, 0xc2, 0x5a, 0xe0, 0xc4, 0x82, 0x46, 0x21, 0x45, 0xe1, 0xd0, 0x95, 0x23, 0xda, 0x3c, 0x93, 0x44, 0xbb, 0x97, 0xb0, 0x52, 0xfb, 0xdc, 0x15, 0x43, 0xdf, 0xb5, 0x3c, 0xf2, 0x37, 0x82, 0x59, 0x68, 0x7c, 0x7b, 0x1b, 0x35, 0xca, 0xf2, 0xf9, 0x19, 0x99, 0xed, 0x4a, 0xce, 0x39, 0xaf, 0x10, 0xd6, 0xbe, 0xd0, 0xfa, 0x22, 0x44, 0x4c, 0x12, 0x9d, 0x90, 0x74, 0x1c, 0xfc, 0xda, 0x90, 0x19, 0x8e, 0x27, 0x82, 0xfb, 0x03, 0xbd, 0xcc, 0x7c, 0xfa, 0xfd, 0x89, 0xdb, 0x6f, 0xb0, 0xfe, 0xd2, 0x24 } -, - /* Encryption */ - 128, - { 0x08, 0x32, 0x6a, 0xff, 0x6d, 0x03, 0xcc, 0x4e, 0x26, 0x10, 0xdd, 0x53, 0x6a, 0xf7, 0xf2, 0x1d, 0x76, 0x22, 0x7d, 0x82, 0x7d, 0x52, 0x80, 0xd8, 0xb8, 0x3a, 0xb9, 0xeb, 0x30, 0xe0, 0x76, 0x9c, 0xfa, 0x02, 0xb5, 0xc1, 0x35, 0x2b, 0xf4, 0xd1, 0x70, 0xce, 0xb6, 0x6f, 0x8b, 0xe6, 0x98, 0x78, 0x4e, 0x1a, 0x6c, 0x20, 0x3f, 0xa5, 0xab, 0x90, 0x07, 0xa6, 0xf7, 0xfc, 0x20, 0x65, 0x20, 0x4b, 0x98, 0x2f, 0xa5, 0x61, 0xfb, 0xb3, 0x61, 0xaf, 0x2b, 0x8e, 0xea, 0x42, 0xab, 0x3f, 0xec, 0x0e, 0xd0, 0x86, 0x22, 0xe5, 0xf2, 0x89, 0x80, 0x52, 0x75, 0x38, 0x0b, 0x69, 0x34, 0x2a, 0x96, 0xf7, 0x6a, 0x99, 0x04, 0x87, 0x68, 0x90, 0xd9, 0x2f, 0x24, 0x00, 0x20, 0x32, 0x35, 0x1d, 0x8a, 0x1c, 0xbc, 0x3d, 0x27, 0xb2, 0x46, 0x48, 0x21, 0xbb, 0xfb, 0xfb, 0xb9, 0xa6, 0x78, 0x51, 0x96, 0x10 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.12", - /* Message */ - 1, - { 0x4a } -, - /* Seed */ - 124, - { 0x8a, 0xa0, 0xce, 0xd1, 0x7f, 0x09, 0xad, 0xae, 0x61, 0x0a, 0x46, 0x03, 0x0d, 0xad, 0x40, 0x31, 0x1b, 0xf1, 0x46, 0x9c, 0x27, 0x37, 0x41, 0x1e, 0x40, 0xf9, 0x23, 0x96, 0x75, 0x1d, 0xd5, 0x66, 0x37, 0xc9, 0x58, 0xdb, 0xc5, 0x8a, 0x17, 0xfd, 0xbd, 0xdd, 0xdb, 0xbf, 0x79, 0x75, 0x18, 0x78, 0x98, 0xbe, 0x1a, 0xa6, 0x3c, 0x5e, 0xee, 0x5f, 0x9a, 0x19, 0x02, 0x98, 0x0f, 0x59, 0x51, 0x84, 0xb9, 0xb5, 0xb4, 0x65, 0xb9, 0x2e, 0x20, 0xf7, 0xae, 0x8b, 0x5a, 0x5c, 0xee, 0x7f, 0x3b, 0x57, 0xd9, 0x97, 0xa0, 0x6a, 0x70, 0x2d, 0x23, 0x83, 0x50, 0xa9, 0x26, 0x98, 0xef, 0x27, 0x5d, 0xff, 0x52, 0x77, 0xbd, 0x2c, 0x99, 0x96, 0x47, 0x40, 0x5a, 0xdb, 0xe4, 0xfb, 0x3f, 0x1b, 0xe7, 0x5e, 0x15, 0x9a, 0x4c, 0x43, 0x83, 0x13, 0xb7, 0xfd, 0x8a, 0xca, 0x9d, 0xea } -, - /* Encryption */ - 128, - { 0x4c, 0x4e, 0x5a, 0xb6, 0x2d, 0x0c, 0x96, 0x7a, 0xb8, 0x29, 0x21, 0x42, 0x9f, 0xfe, 0x50, 0xd2, 0x24, 0x0e, 0x7e, 0x0a, 0x18, 0x75, 0x48, 0x87, 0x55, 0xbb, 0x7f, 0xf6, 0x15, 0xa8, 0xc9, 0x9a, 0xbc, 0x37, 0xb2, 0xe4, 0x71, 0x47, 0xa9, 0x27, 0xd7, 0xb9, 0x8c, 0x30, 0xdb, 0x24, 0xda, 0x8c, 0xd3, 0x5e, 0x13, 0xd7, 0xb7, 0x14, 0x14, 0xd0, 0x32, 0xbd, 0x0c, 0x3c, 0xe3, 0x8b, 0x89, 0xb1, 0x1b, 0x2c, 0x3f, 0x9d, 0x83, 0x08, 0x16, 0x71, 0x6a, 0x2e, 0x8c, 0xcd, 0x8c, 0x79, 0xe9, 0xc7, 0x49, 0x31, 0xa7, 0xb8, 0xa8, 0xdb, 0x13, 0x12, 0x8c, 0xe4, 0x0b, 0x21, 0x59, 0xe4, 0x98, 0xda, 0x98, 0xf2, 0xaa, 0x35, 0x2f, 0x23, 0x85, 0x31, 0x06, 0xb6, 0x61, 0xd8, 0x8e, 0xd0, 0x6f, 0xf6, 0x6a, 0x56, 0xe7, 0x56, 0x59, 0x72, 0x20, 0xbd, 0x10, 0x15, 0x81, 0x53, 0xce, 0x5c, 0x02, 0x63 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.13", - /* Message */ - 11, - { 0xbf, 0xfc, 0x42, 0x08, 0x73, 0xf5, 0xaf, 0x5d, 0xd2, 0x3b, 0xb0 } -, - /* Seed */ - 114, - { 0xdd, 0x31, 0xcc, 0xd4, 0x7d, 0x4e, 0x31, 0x02, 0xdf, 0x0f, 0xc5, 0x9b, 0x1b, 0x84, 0x77, 0xaf, 0x3a, 0x78, 0xc2, 0xfa, 0x9c, 0x8e, 0xcb, 0x4f, 0x0b, 0x3b, 0xde, 0x23, 0x50, 0x04, 0x36, 0x55, 0x03, 0x64, 0x66, 0x5f, 0x81, 0xc0, 0x35, 0x6a, 0xbc, 0x0b, 0x78, 0xe9, 0x73, 0x19, 0x11, 0x14, 0x02, 0x75, 0xc8, 0x66, 0xf7, 0x5a, 0xd0, 0xcb, 0xbc, 0x88, 0xad, 0x6b, 0x5d, 0x4d, 0xa5, 0x2d, 0x08, 0xe2, 0x2e, 0xe5, 0x39, 0xb5, 0x8e, 0x92, 0xc6, 0x19, 0x63, 0x87, 0xe2, 0x21, 0xa0, 0x87, 0x39, 0x6c, 0xbe, 0x57, 0xec, 0x56, 0x03, 0xf6, 0x16, 0x26, 0x27, 0x98, 0x3e, 0xff, 0x82, 0xde, 0x04, 0x8b, 0xdc, 0x1b, 0x5e, 0xdb, 0xb5, 0xd4, 0xea, 0x84, 0xf5, 0x02, 0x24, 0xbd, 0x88, 0xa9, 0x05, 0xda } -, - /* Encryption */ - 128, - { 0x0d, 0xa2, 0xd6, 0xf7, 0xbc, 0xb5, 0x0a, 0x47, 0x2e, 0xda, 0x24, 0x60, 0x9d, 0xa6, 0x77, 0x28, 0xe5, 0x3c, 0x98, 0x80, 0xaa, 0x5f, 0xb6, 0xfb, 0xe6, 0x0d, 0x83, 0xc1, 0x1e, 0x6b, 0xb3, 0xcf, 0xdb, 0x17, 0xd1, 0x4d, 0xbc, 0xe8, 0xec, 0x55, 0xc7, 0x3a, 0xb0, 0x14, 0x3e, 0x9b, 0x27, 0x56, 0xbb, 0x69, 0x68, 0xe5, 0xaf, 0x1a, 0xed, 0xcf, 0x6a, 0x80, 0xc2, 0x6d, 0x49, 0x0e, 0x47, 0x18, 0x7e, 0xa5, 0xd8, 0xcd, 0x2f, 0xac, 0xb8, 0x1c, 0xe6, 0x4a, 0x72, 0x3c, 0x40, 0xf0, 0xba, 0x4c, 0x69, 0x3e, 0x1b, 0x11, 0x43, 0xdf, 0x15, 0xa4, 0x20, 0x91, 0x70, 0x9a, 0xb4, 0xc7, 0xcd, 0x9d, 0x47, 0x07, 0x9e, 0xcd, 0x68, 0xf6, 0xa1, 0x96, 0x44, 0x8a, 0x44, 0x67, 0x9a, 0x04, 0x14, 0x10, 0x41, 0x8f, 0x11, 0xa1, 0xe1, 0xbc, 0xe7, 0x8e, 0x77, 0x26, 0x04, 0xa2, 0xf2, 0x77, 0x81, 0x95 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.14", - /* Message */ - 40, - { 0x1a, 0x9b, 0x87, 0x29, 0x21, 0x0a, 0x84, 0x71, 0xfc, 0x5c, 0xd7, 0x09, 0xf2, 0xed, 0xd3, 0x24, 0x01, 0x50, 0x24, 0x4b, 0xec, 0x96, 0xa9, 0x2f, 0xf8, 0x07, 0xe3, 0xb3, 0x0d, 0x29, 0x5d, 0x3c, 0x34, 0x5c, 0x04, 0x4f, 0x2e, 0x95, 0x60, 0x37 } -, - /* Seed */ - 85, - { 0x58, 0x78, 0xc9, 0x1b, 0x16, 0x6e, 0x90, 0xc3, 0x4e, 0x6e, 0x66, 0x56, 0x8c, 0x15, 0x1f, 0x4d, 0x44, 0x43, 0x40, 0xb5, 0xf1, 0xd7, 0x30, 0x52, 0xcc, 0x56, 0x33, 0xea, 0x2e, 0x47, 0xac, 0xed, 0x7b, 0x17, 0x8a, 0x64, 0xfb, 0x09, 0xa5, 0xad, 0x08, 0x46, 0xae, 0xe4, 0x11, 0x6d, 0x67, 0x80, 0xee, 0x75, 0xeb, 0x20, 0x85, 0x16, 0x68, 0x82, 0x0c, 0xde, 0xc0, 0xf2, 0xc4, 0x96, 0xe4, 0xc2, 0x88, 0xd8, 0x27, 0x9c, 0x1c, 0x5d, 0x4e, 0xc0, 0x0d, 0x98, 0x0c, 0x27, 0x2e, 0x87, 0x05, 0x18, 0x48, 0x6d, 0xca, 0xea, 0x85 } -, - /* Encryption */ - 128, - { 0x37, 0x00, 0xac, 0x36, 0x2c, 0xf6, 0x0e, 0x16, 0x39, 0x47, 0xa1, 0x98, 0xd0, 0x0f, 0x3b, 0x3b, 0x26, 0xe0, 0x3e, 0xe2, 0xfb, 0x78, 0x2b, 0x42, 0x88, 0xb8, 0xc1, 0xde, 0x76, 0xe9, 0xe8, 0x99, 0x46, 0xc9, 0x80, 0x7c, 0x56, 0xe0, 0x9c, 0x7b, 0x52, 0xbe, 0x00, 0x78, 0xac, 0xf6, 0x92, 0x96, 0x4a, 0xcb, 0x97, 0xd1, 0xfa, 0x5c, 0xeb, 0x57, 0x76, 0xa1, 0xd5, 0x56, 0xb4, 0xbc, 0x9d, 0xb0, 0x0b, 0xda, 0x25, 0x23, 0x7a, 0x75, 0x1b, 0x7c, 0x22, 0x9b, 0x6b, 0x57, 0xf7, 0xff, 0x75, 0x1c, 0x12, 0xd1, 0xf2, 0x2a, 0x4f, 0xb0, 0xe9, 0x0b, 0x63, 0xd0, 0x42, 0xd9, 0x49, 0x9e, 0x0f, 0x7e, 0xfe, 0xad, 0xd3, 0xc5, 0x88, 0xf2, 0xc7, 0x43, 0xa1, 0x2c, 0x56, 0x7c, 0x81, 0x57, 0x8d, 0xbe, 0xeb, 0xfd, 0x37, 0x74, 0xda, 0x34, 0xad, 0x09, 0xee, 0xbe, 0x90, 0x17, 0x89, 0x02, 0x14, 0xb5 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.15", - /* Message */ - 64, - { 0xa6, 0xd0, 0xe8, 0xc1, 0xea, 0x4a, 0xb4, 0xec, 0xc8, 0x95, 0x7d, 0x62, 0x28, 0x15, 0x79, 0x67, 0x5a, 0x64, 0x8d, 0x62, 0xb7, 0xf2, 0x2b, 0x2b, 0x08, 0xd1, 0x31, 0x3f, 0x40, 0x6f, 0x13, 0x7e, 0x99, 0x42, 0x67, 0x35, 0xcd, 0xb9, 0x37, 0x2f, 0xec, 0xa1, 0xee, 0x78, 0x46, 0x3f, 0xa5, 0xde, 0x9c, 0xdd, 0x84, 0x75, 0x6c, 0x68, 0xbd, 0x1d, 0x92, 0xba, 0x96, 0x5f, 0x50, 0x64, 0x10, 0xb1 } -, - /* Seed */ - 61, - { 0x1c, 0x25, 0xc9, 0xb8, 0x32, 0x16, 0x9a, 0x1f, 0xdb, 0x6c, 0x14, 0x8e, 0x47, 0xe6, 0x6c, 0x3c, 0xc8, 0x21, 0x41, 0xe6, 0x11, 0xa6, 0xf3, 0x0c, 0xc9, 0x0c, 0x50, 0x49, 0xe8, 0xc5, 0x02, 0xb3, 0x1c, 0xad, 0xc7, 0x62, 0x39, 0xb7, 0xbd, 0xaf, 0x93, 0xfa, 0x97, 0x34, 0x3e, 0x7e, 0xe5, 0x51, 0xbc, 0x52, 0xfd, 0xb5, 0xec, 0x9e, 0x40, 0x0a, 0xf0, 0x5d, 0xbe, 0xac, 0xda } -, - /* Encryption */ - 128, - { 0x00, 0xe8, 0xb2, 0xfc, 0x76, 0xdf, 0xb4, 0xa6, 0xcc, 0x43, 0x64, 0xde, 0x8f, 0x68, 0x3c, 0x3f, 0xcd, 0x0a, 0x9e, 0xcf, 0xbd, 0x4a, 0x5a, 0x72, 0x24, 0xf4, 0x9a, 0xe9, 0xb4, 0xf3, 0xb5, 0xcd, 0xc7, 0x1c, 0xbb, 0x8c, 0x66, 0xfd, 0x35, 0xf3, 0xd1, 0x8e, 0xca, 0x98, 0x96, 0x7b, 0xd4, 0x00, 0x5d, 0xf7, 0x91, 0x52, 0x41, 0x6f, 0xd4, 0x7e, 0x56, 0x2c, 0x55, 0xed, 0xc6, 0xd6, 0x12, 0x12, 0x28, 0x6e, 0xf9, 0x75, 0xbc, 0xc8, 0x02, 0x69, 0x25, 0x92, 0x65, 0x39, 0x00, 0x97, 0x3c, 0x72, 0xe0, 0x1a, 0x69, 0x3b, 0x05, 0xfc, 0x2d, 0x58, 0x56, 0xea, 0xef, 0x7a, 0xc0, 0x8f, 0xf5, 0xec, 0xd5, 0x31, 0xe2, 0xc2, 0xce, 0x92, 0x77, 0x45, 0xa1, 0x16, 0x5a, 0x51, 0xaa, 0x66, 0x98, 0xa1, 0xff, 0xcb, 0x87, 0xf8, 0x1e, 0xf6, 0x51, 0x0b, 0xca, 0xf9, 0xcb, 0x76, 0x1e, 0x9e, 0x1f, 0x0f } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.16", - /* Message */ - 63, - { 0xf3, 0x40, 0x5b, 0x21, 0x8f, 0x3e, 0xc6, 0x03, 0xa9, 0x80, 0x69, 0x00, 0x99, 0xc2, 0xcf, 0x5c, 0xbe, 0x0b, 0x2b, 0x05, 0x96, 0x79, 0xc4, 0x6b, 0x7e, 0x48, 0xf6, 0xfd, 0xc4, 0xda, 0x40, 0x92, 0xd8, 0x31, 0xc8, 0xb5, 0x2b, 0x2c, 0xc7, 0x9b, 0xd2, 0xbb, 0xf6, 0xe9, 0xf5, 0x7b, 0x4e, 0x8c, 0xaa, 0x94, 0xb5, 0x81, 0xf9, 0xf2, 0x31, 0x26, 0x1f, 0x0e, 0x2b, 0xbb, 0xf5, 0x3d, 0xbb } -, - /* Seed */ - 62, - { 0xf4, 0x70, 0x7f, 0x58, 0x64, 0x2b, 0x54, 0xcb, 0xf8, 0x0a, 0x9b, 0x50, 0x48, 0xa6, 0xec, 0x0b, 0xd3, 0x5d, 0x09, 0x57, 0x16, 0xdb, 0x12, 0x06, 0x0c, 0xbf, 0x50, 0x58, 0x5f, 0xb9, 0x23, 0x79, 0x81, 0x05, 0x2f, 0x7b, 0xb1, 0x58, 0x3c, 0xd8, 0x7b, 0xc8, 0xbf, 0xb5, 0x5b, 0x73, 0x3e, 0x89, 0x0e, 0xb9, 0xc0, 0x8e, 0xf0, 0xe8, 0x80, 0xe9, 0xba, 0x0d, 0x50, 0xec, 0x95, 0x41 } -, - /* Encryption */ - 128, - { 0x6d, 0x9d, 0x39, 0x19, 0x8b, 0x5f, 0xcb, 0x13, 0x2d, 0x93, 0x15, 0x11, 0x49, 0xd7, 0x59, 0x91, 0x02, 0x4a, 0xc2, 0x2e, 0xb6, 0xeb, 0x2d, 0xc7, 0xc6, 0x05, 0x8f, 0x64, 0x87, 0x56, 0x45, 0x10, 0x2b, 0x95, 0x25, 0x4e, 0x25, 0xe9, 0xf0, 0xae, 0x45, 0x06, 0xd4, 0x3c, 0x60, 0x1c, 0x18, 0x8a, 0x31, 0x4f, 0x4b, 0xb4, 0xe0, 0x38, 0xc8, 0x15, 0x39, 0x41, 0x6e, 0x10, 0x5e, 0x80, 0x97, 0xfb, 0x69, 0x5a, 0xab, 0x36, 0xfe, 0xf5, 0x16, 0xe6, 0xa3, 0x3f, 0x36, 0xf7, 0xf9, 0x5a, 0xd1, 0xff, 0x15, 0x88, 0x90, 0x25, 0xb1, 0xb2, 0xe8, 0x1e, 0x1b, 0xf3, 0xb2, 0xde, 0x5b, 0xa9, 0x18, 0x7c, 0xa9, 0x6c, 0xeb, 0xa9, 0xfc, 0xec, 0xef, 0x9c, 0x53, 0xe4, 0x94, 0x34, 0x86, 0x18, 0x59, 0x67, 0xcf, 0x7a, 0x64, 0x77, 0xc3, 0x29, 0xf0, 0x0e, 0xa6, 0x95, 0x52, 0x5b, 0xca, 0x99, 0xf2, 0xc7 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.17", - /* Message */ - 52, - { 0x6a, 0xfa, 0xdb, 0xe3, 0xda, 0x68, 0xd9, 0x02, 0x85, 0xbb, 0x8f, 0x1e, 0x21, 0x29, 0xff, 0xeb, 0xb1, 0xc6, 0x5b, 0x95, 0x88, 0xd6, 0xc2, 0xc0, 0x40, 0x24, 0xc2, 0x38, 0xb2, 0x0c, 0x65, 0xd2, 0xac, 0xa5, 0xe3, 0x82, 0x76, 0x00, 0x0a, 0x0e, 0x6a, 0x0d, 0x05, 0x37, 0xef, 0xee, 0xf6, 0xd3, 0xe3, 0xd9, 0x4f, 0xb9 } -, - /* Seed */ - 73, - { 0xee, 0x17, 0x6e, 0xa3, 0xcf, 0xd4, 0x90, 0xb6, 0xc0, 0x49, 0xd2, 0xe7, 0x4c, 0x90, 0xc0, 0xee, 0x74, 0x68, 0x52, 0x03, 0x49, 0xb8, 0x51, 0x65, 0x3d, 0xb0, 0x58, 0xa1, 0xc3, 0xe9, 0x56, 0xe0, 0x88, 0x5f, 0x26, 0x1b, 0x6e, 0x71, 0xcf, 0x1e, 0x62, 0x3d, 0x3b, 0x9d, 0x1d, 0x56, 0xfa, 0x13, 0x67, 0xe4, 0x7f, 0xf3, 0x74, 0xad, 0x39, 0x30, 0x9f, 0xfa, 0x2e, 0x67, 0x11, 0x28, 0xd5, 0xab, 0xb4, 0xa6, 0x1a, 0x5b, 0x0d, 0xc2, 0xdb, 0x2c, 0x08 } -, - /* Encryption */ - 128, - { 0x67, 0x2f, 0xe9, 0x51, 0x59, 0xa9, 0x89, 0x3f, 0x34, 0x98, 0xb6, 0x16, 0xc1, 0x7b, 0x59, 0xda, 0x71, 0xda, 0x80, 0x2f, 0xeb, 0xf7, 0xcd, 0x38, 0x11, 0x06, 0x14, 0xa1, 0xb2, 0x5d, 0x96, 0xaa, 0x8a, 0x74, 0xaa, 0xaa, 0x2a, 0x0f, 0x00, 0x0e, 0xf8, 0xac, 0xa3, 0xb4, 0x1a, 0xd1, 0x61, 0xb6, 0x26, 0x33, 0xf2, 0x41, 0x31, 0x9c, 0x33, 0xe4, 0xec, 0xb7, 0x70, 0x6a, 0xb3, 0xad, 0xc6, 0xa3, 0xef, 0xea, 0x22, 0x43, 0x0f, 0x3f, 0x5c, 0x9c, 0x4c, 0xe5, 0x40, 0x4e, 0xb8, 0xe7, 0x5a, 0x10, 0x93, 0x69, 0xc0, 0xaa, 0x0b, 0x7d, 0xd7, 0x13, 0xbd, 0x8b, 0x77, 0xcc, 0xa5, 0xf7, 0x4b, 0xca, 0x5b, 0xc5, 0x55, 0x69, 0x6b, 0x68, 0xe1, 0x17, 0x2d, 0xb4, 0x02, 0x50, 0x1d, 0xcd, 0x26, 0x49, 0x68, 0x5d, 0xb0, 0xfd, 0x88, 0xc8, 0x83, 0x60, 0xda, 0xcc, 0x65, 0x09, 0xff, 0xa8, 0xdf, 0xc2 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.18", - /* Message */ - 48, - { 0x6d, 0x9f, 0x9b, 0x4b, 0xb1, 0x23, 0xba, 0x90, 0x95, 0x53, 0xa7, 0x57, 0x3a, 0x97, 0x1f, 0x64, 0xb7, 0x25, 0x24, 0xcf, 0xeb, 0x04, 0x2d, 0xe3, 0x92, 0x15, 0xf6, 0x50, 0xdb, 0x61, 0x2d, 0x66, 0xd7, 0xae, 0x86, 0x05, 0xd0, 0x44, 0x19, 0x54, 0x62, 0x5f, 0xa9, 0x81, 0x22, 0x33, 0x0e, 0x92 } -, - /* Seed */ - 77, - { 0x7f, 0xf8, 0x68, 0x5a, 0xec, 0xf3, 0x40, 0x26, 0x13, 0x90, 0xad, 0x07, 0x42, 0x73, 0x0c, 0xb6, 0x39, 0x28, 0x30, 0x14, 0xab, 0x37, 0x73, 0x55, 0x6c, 0x69, 0x7f, 0x97, 0xef, 0x62, 0x1a, 0x4d, 0xcb, 0xf8, 0xec, 0x6e, 0xde, 0xc5, 0x0d, 0x8e, 0xc9, 0x59, 0x0a, 0xdb, 0xaf, 0x23, 0x51, 0xdd, 0xfa, 0x0e, 0x52, 0xea, 0x6e, 0xd1, 0x8e, 0xb6, 0xc3, 0x78, 0xf3, 0x80, 0x85, 0xae, 0x5e, 0xe4, 0xcc, 0x48, 0xc1, 0x89, 0x1b, 0xa4, 0x7b, 0x20, 0x10, 0xd5, 0xd4, 0x35, 0x39 } -, - /* Encryption */ - 128, - { 0x8d, 0x30, 0x65, 0x5c, 0xf1, 0x5b, 0xf1, 0x0a, 0x46, 0x97, 0x87, 0xc6, 0xa1, 0x0e, 0x79, 0x25, 0x4f, 0xf0, 0xbd, 0x11, 0x93, 0x8b, 0xc6, 0x0a, 0x81, 0xa7, 0x58, 0xd9, 0x3c, 0xf2, 0xa0, 0x30, 0x24, 0x59, 0xfc, 0x2f, 0x0d, 0x77, 0x00, 0xb8, 0x6d, 0xd6, 0xed, 0x61, 0x83, 0x83, 0xb4, 0x4b, 0x45, 0x87, 0x04, 0xca, 0x11, 0x92, 0x8e, 0x50, 0x4f, 0x02, 0x8e, 0xfe, 0x50, 0x37, 0x17, 0x2c, 0x3e, 0x51, 0xb8, 0x37, 0xbe, 0x61, 0x56, 0xde, 0x6a, 0x09, 0xc5, 0x55, 0x97, 0xbe, 0x74, 0xc9, 0x7c, 0xaa, 0x1d, 0xeb, 0xf3, 0x14, 0xcd, 0x94, 0xb9, 0x1b, 0x9f, 0x94, 0xcb, 0xf7, 0x64, 0x0f, 0x86, 0xc2, 0x6d, 0x1d, 0x6a, 0x0b, 0x10, 0x46, 0x28, 0xb5, 0x87, 0x11, 0x4a, 0xa3, 0x1d, 0x99, 0xf6, 0x9c, 0xf9, 0x57, 0x37, 0x93, 0x2c, 0x0c, 0xb5, 0x33, 0x33, 0x74, 0xde, 0xa0, 0x7f, 0xac } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.19", - /* Message */ - 23, - { 0x33, 0xcc, 0xcb, 0x59, 0x7d, 0xe9, 0x5c, 0xed, 0xb8, 0xb6, 0x57, 0xfc, 0xd8, 0xf8, 0x88, 0x86, 0xda, 0x04, 0xc7, 0x57, 0x93, 0x53, 0x14 } -, - /* Seed */ - 102, - { 0x53, 0x42, 0xf4, 0x68, 0x43, 0x91, 0xcd, 0x74, 0xf5, 0x28, 0x2d, 0xb8, 0x31, 0x41, 0xff, 0xf6, 0x78, 0xf2, 0x3a, 0x3e, 0xa6, 0x52, 0xe0, 0xd4, 0x27, 0xfb, 0x6a, 0xd9, 0x76, 0xc5, 0xa7, 0x10, 0xa6, 0x37, 0x95, 0x77, 0x71, 0x89, 0x47, 0xac, 0x72, 0x7b, 0x4d, 0x58, 0xa0, 0xb0, 0xbd, 0x20, 0x7a, 0xe3, 0x73, 0xa8, 0xb9, 0x9a, 0xc8, 0xe2, 0x51, 0xeb, 0x02, 0x45, 0x8a, 0x9e, 0xdc, 0x39, 0x52, 0xfb, 0x28, 0x42, 0x6d, 0x18, 0xfd, 0xa1, 0x8a, 0x80, 0x2b, 0xbf, 0x0a, 0x0b, 0x8b, 0x2c, 0xf2, 0x5c, 0xa3, 0xa0, 0x22, 0xf7, 0x78, 0xc7, 0xf4, 0x7f, 0xc5, 0x30, 0xd0, 0xb7, 0xa5, 0xbc, 0x84, 0x6e, 0xea, 0x91, 0x80, 0xf2 } -, - /* Encryption */ - 128, - { 0x8c, 0x4a, 0x63, 0xd0, 0x73, 0x1e, 0x2e, 0x71, 0xeb, 0x46, 0x15, 0x18, 0x9a, 0x96, 0x8b, 0x3e, 0x4a, 0x24, 0x28, 0x56, 0xb2, 0x09, 0x02, 0x45, 0x23, 0x8b, 0x66, 0x45, 0x97, 0x8f, 0x1e, 0xe8, 0xd7, 0x98, 0x11, 0x06, 0x2e, 0xbd, 0x2d, 0x1f, 0x3d, 0x52, 0x3a, 0xe6, 0x00, 0xe0, 0xe5, 0xa6, 0xe4, 0x05, 0xc4, 0xe4, 0xb5, 0xa1, 0x6e, 0x8d, 0xfb, 0x49, 0x24, 0x30, 0x4b, 0x0d, 0x1f, 0xf4, 0xd6, 0x41, 0xbf, 0x98, 0x7f, 0xc6, 0xd4, 0x1d, 0x3e, 0xb7, 0xcd, 0xc5, 0x31, 0x34, 0xd0, 0x06, 0x9c, 0xdb, 0x5a, 0xfe, 0xf7, 0xf8, 0xf9, 0xca, 0xc0, 0xee, 0x52, 0x30, 0xb6, 0xf8, 0x86, 0x22, 0xa8, 0x4d, 0xe5, 0x2a, 0xd6, 0xf7, 0x50, 0x47, 0x84, 0x37, 0x06, 0xca, 0x96, 0x97, 0x42, 0xc5, 0x8d, 0xa7, 0x72, 0x62, 0xff, 0x1f, 0x12, 0x8a, 0x66, 0x4e, 0x51, 0xcd, 0x63, 0x5e, 0x71, 0x15 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 2.20", - /* Message */ - 2, - { 0x19, 0xd6 } -, - /* Seed */ - 123, - { 0xea, 0xac, 0xb5, 0x78, 0xae, 0xab, 0xf6, 0x9d, 0x4e, 0xae, 0xeb, 0x36, 0xd0, 0x4c, 0xd8, 0xa2, 0x2e, 0x8f, 0xd7, 0xa2, 0x5f, 0x04, 0x43, 0xa1, 0x1e, 0x4e, 0x08, 0xb3, 0xff, 0xac, 0x1e, 0x05, 0x42, 0x1a, 0x87, 0x6c, 0xca, 0x91, 0x31, 0x82, 0x50, 0xbe, 0xfa, 0xff, 0xef, 0x9b, 0x27, 0x49, 0xdc, 0x40, 0x2f, 0xad, 0x4f, 0xdb, 0x7c, 0x1b, 0x66, 0xaa, 0x5e, 0x08, 0x9f, 0xf9, 0x9f, 0x8b, 0x30, 0x0c, 0xdc, 0x46, 0xf4, 0x8f, 0x56, 0x48, 0xc9, 0x40, 0x8b, 0x5f, 0x8b, 0x3f, 0x5a, 0x12, 0xe6, 0x50, 0x50, 0xdc, 0xbc, 0x0d, 0x53, 0x43, 0xd6, 0x3d, 0x58, 0x08, 0x19, 0x21, 0x65, 0x2d, 0x5b, 0xc8, 0x2d, 0xd3, 0xd7, 0x0e, 0x07, 0x5d, 0x32, 0xd8, 0x02, 0xc2, 0x97, 0x64, 0x78, 0xfc, 0x9f, 0x09, 0x93, 0xdd, 0x08, 0x59, 0xc9, 0x0e, 0x22, 0x8e, 0x87 } -, - /* Encryption */ - 128, - { 0x61, 0x3b, 0xba, 0x5c, 0x19, 0x0a, 0xd7, 0x72, 0xe0, 0x8c, 0x29, 0x07, 0x6e, 0x2e, 0x9e, 0x5f, 0x12, 0xef, 0xc9, 0x29, 0x2e, 0x3b, 0x5c, 0xee, 0x52, 0xc2, 0x69, 0x7f, 0xb7, 0xb6, 0x07, 0xdc, 0x72, 0xe8, 0x25, 0x78, 0xe8, 0xb7, 0x53, 0xba, 0xca, 0xdf, 0x23, 0xb4, 0x77, 0x25, 0x21, 0x3d, 0xb8, 0x9f, 0x88, 0x73, 0xfa, 0x79, 0xb9, 0x14, 0xa4, 0xb5, 0x16, 0x1e, 0xfd, 0x9e, 0x15, 0xcf, 0xa8, 0xdd, 0x1e, 0xff, 0xe8, 0x9f, 0x89, 0x47, 0xa6, 0xf3, 0x82, 0x6d, 0xc6, 0xbf, 0x53, 0xbe, 0xca, 0x36, 0x5b, 0x93, 0x81, 0x18, 0x45, 0x62, 0xa7, 0x9e, 0x21, 0xca, 0x0e, 0x68, 0xeb, 0xf0, 0xab, 0x82, 0xae, 0x76, 0x2b, 0x28, 0xc1, 0x43, 0x65, 0x15, 0x2a, 0xe0, 0xf5, 0x4f, 0x2e, 0x9d, 0x14, 0x43, 0x9a, 0x84, 0x6b, 0x38, 0x3f, 0x5e, 0x2c, 0x55, 0xef, 0xa7, 0x00, 0x85, 0x97, 0xb5 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 3: A 1024-bit RSA key pair", -{ - /* Modulus */ - 128, - { 0xb9, 0x30, 0x96, 0xd0, 0x26, 0x1e, 0xfe, 0x00, 0x0b, 0x3d, 0x17, 0x04, 0xf5, 0x04, 0x31, 0x60, 0xab, 0xd3, 0xeb, 0x56, 0x6c, 0x61, 0xe5, 0x3c, 0x76, 0xc4, 0x01, 0xe2, 0xb6, 0x55, 0x21, 0xbc, 0x12, 0xd4, 0x81, 0x21, 0x51, 0x83, 0xe8, 0xf4, 0x6c, 0x2c, 0xa8, 0xd0, 0x0a, 0xda, 0x5d, 0xfd, 0x04, 0xdc, 0xf7, 0xcf, 0x36, 0xcc, 0x58, 0x11, 0x05, 0xd9, 0x9d, 0x2a, 0x7d, 0xd9, 0x4b, 0x56, 0x76, 0x0a, 0x65, 0x64, 0xfe, 0xe5, 0xe8, 0xaa, 0xeb, 0x06, 0x07, 0xe1, 0x45, 0x19, 0x62, 0x10, 0xa3, 0x1b, 0x7e, 0xd8, 0xdd, 0x2a, 0xf3, 0x2d, 0x29, 0xd2, 0xba, 0xd6, 0xf1, 0x5f, 0xfa, 0x5a, 0x11, 0xdc, 0x73, 0x5c, 0xc3, 0x62, 0x19, 0x02, 0x1e, 0xe8, 0xd1, 0xee, 0xed, 0x34, 0x63, 0x9b, 0x5a, 0x91, 0xac, 0x6a, 0x92, 0x67, 0x4e, 0x18, 0x39, 0x70, 0xc5, 0x9d, 0x5b, 0x19, 0x6d, 0x4b } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x01, 0x07, 0xea, 0x61, 0xad, 0xec, 0xa5, 0xe9, 0x00, 0x7c, 0x59, 0x13, 0x4a, 0x7d, 0x38, 0xfc, 0x7a, 0xf3, 0x10, 0x3a, 0xd2, 0xc4, 0xa2, 0xbe, 0xe3, 0x97, 0x08, 0xbe, 0xfc, 0x83, 0xdc, 0x79, 0xb7, 0x0d, 0xc9, 0x75, 0x92, 0xdb, 0x6d, 0xf7, 0x0f, 0xb3, 0xc4, 0x9c, 0x25, 0x35, 0xfc, 0xfd, 0x9f, 0xc2, 0xce, 0x7b, 0x05, 0x53, 0x92, 0xe3, 0xee, 0xb3, 0xe7, 0x97, 0x93, 0xcc, 0x1b, 0x60, 0x15, 0x3f, 0x4a, 0x0b, 0xff, 0x26, 0xbe, 0x66, 0x7b, 0xbc, 0xdb, 0xbf, 0x6e, 0x32, 0xaf, 0xa6, 0xfd, 0x14, 0x83, 0x7f, 0x3c, 0x79, 0xbe, 0x44, 0xcb, 0x1c, 0x63, 0x8f, 0xfa, 0x5c, 0x6b, 0x17, 0x70, 0x9a, 0x96, 0xe1, 0x27, 0x03, 0x0b, 0xb1, 0x11, 0x6d, 0xec, 0xfd, 0xe5, 0x2b, 0xb0, 0x40, 0x84, 0x2a, 0x94, 0xd2, 0xe6, 0x74, 0xf1, 0x17, 0x51, 0xec, 0xb9, 0x03, 0xee, 0x10, 0x48, 0x45 } -, - /* Prime 1 */ - 64, - { 0xe7, 0xfe, 0xc4, 0x74, 0xe0, 0xeb, 0x31, 0x2d, 0x1d, 0x76, 0xcb, 0xb2, 0x72, 0x2e, 0xfa, 0x42, 0x10, 0x68, 0xb1, 0x91, 0xe2, 0x33, 0xb6, 0x4e, 0x46, 0x08, 0x7f, 0xdd, 0x45, 0x76, 0xd3, 0x85, 0x55, 0x07, 0x19, 0x35, 0x2e, 0x10, 0x9f, 0xe4, 0x33, 0xac, 0x4e, 0x35, 0x8e, 0x7c, 0x28, 0x59, 0xeb, 0xa7, 0xe4, 0x3a, 0x04, 0xee, 0x85, 0x9a, 0x46, 0x35, 0x2c, 0x12, 0x43, 0xa1, 0xcc, 0x6f } -, - /* Prime 2 */ - 64, - { 0xcc, 0x5a, 0x02, 0xf9, 0x55, 0x7a, 0x63, 0x5c, 0xf5, 0xe6, 0x9b, 0x0f, 0x2b, 0x3f, 0x2e, 0x61, 0x2e, 0x1f, 0x0a, 0xbb, 0xd4, 0xbc, 0xf1, 0x69, 0xca, 0xc0, 0x84, 0xdc, 0xf4, 0xb9, 0xb4, 0x34, 0x43, 0xa7, 0x85, 0x23, 0x90, 0xf8, 0x19, 0x41, 0x9e, 0xc1, 0xa8, 0x38, 0x7e, 0xf0, 0x4d, 0xd2, 0xdb, 0x7d, 0x60, 0xb4, 0x0a, 0x21, 0xf9, 0x4f, 0x46, 0xd2, 0x27, 0x87, 0x4b, 0x3e, 0x52, 0xe5 } -, - /* Prime exponent 1 */ - 64, - { 0xab, 0x92, 0x8b, 0x10, 0x35, 0x57, 0x3b, 0x23, 0x36, 0x6b, 0x28, 0xf2, 0x6b, 0xe7, 0xba, 0x45, 0x29, 0x85, 0x83, 0xed, 0x73, 0xf0, 0xf2, 0x9e, 0xa8, 0xc4, 0x98, 0x6b, 0xb8, 0x77, 0xcc, 0xaf, 0x0a, 0xd7, 0x19, 0x19, 0x6f, 0x5b, 0xf4, 0x23, 0xfc, 0xe3, 0x2d, 0x64, 0x06, 0x60, 0x64, 0x27, 0x3c, 0x55, 0x0a, 0x40, 0xae, 0x6d, 0x08, 0x79, 0xb3, 0xfa, 0x97, 0x01, 0x5a, 0xeb, 0x4a, 0x19 } -, - /* Prime exponent 2 */ - 63, - { 0x8c, 0x7d, 0x55, 0x8e, 0x15, 0x36, 0x0f, 0x19, 0xd9, 0xf4, 0xb0, 0xa5, 0xbd, 0x15, 0xb2, 0xcd, 0x1c, 0xe8, 0x3a, 0x78, 0xe7, 0xc8, 0xfe, 0x2f, 0xbd, 0x34, 0x9e, 0x23, 0x4a, 0x1c, 0x61, 0xc7, 0x8c, 0xbb, 0x9e, 0xcc, 0xd4, 0xdd, 0xbc, 0x7f, 0x60, 0xa5, 0xc3, 0x01, 0x14, 0x44, 0x21, 0x3c, 0xd5, 0xa9, 0x5c, 0xd2, 0x6a, 0x24, 0xf1, 0x41, 0x8f, 0x6e, 0xeb, 0xbe, 0x17, 0xfc, 0xc1 } -, - /* Coefficient */ - 64, - { 0xb0, 0xb1, 0xb9, 0xcb, 0x23, 0xac, 0x2a, 0x8a, 0x56, 0x36, 0x66, 0x69, 0x9a, 0x52, 0x40, 0x54, 0xbe, 0xf3, 0x81, 0xaa, 0xbd, 0x75, 0x55, 0x31, 0xa1, 0xdf, 0xa8, 0x85, 0xdc, 0x8f, 0x98, 0x86, 0xa5, 0x5a, 0xf0, 0xe3, 0x68, 0x63, 0x91, 0xc7, 0x97, 0x68, 0x1a, 0x8f, 0xef, 0xcf, 0x24, 0xdb, 0xd8, 0x1e, 0x03, 0x13, 0x16, 0x99, 0x8f, 0x5d, 0x81, 0x8d, 0x24, 0x76, 0xda, 0xd0, 0x6d, 0xe8 } - -} -, -{{ - "PKCS#1 v1.5 Encryption Example 3.1", - /* Message */ - 17, - { 0x44, 0xe5, 0x6a, 0xa7, 0x7b, 0xd9, 0x35, 0xac, 0x59, 0xa9, 0xbd, 0x32, 0x37, 0x83, 0xe1, 0x27, 0x42 } -, - /* Seed */ - 108, - { 0x92, 0xee, 0xf6, 0x19, 0xf0, 0x4f, 0x52, 0x02, 0x8f, 0x4c, 0xc3, 0xe5, 0x24, 0x1f, 0x0a, 0xa0, 0x92, 0x1b, 0x4d, 0x18, 0x3c, 0x1f, 0x5b, 0xd6, 0x8d, 0x86, 0xfb, 0xe9, 0xe7, 0xb7, 0xd0, 0xbb, 0x10, 0x4e, 0xd1, 0xca, 0xe0, 0x7a, 0xc7, 0xd8, 0x0b, 0xfd, 0x9c, 0x1c, 0xef, 0xf8, 0xdc, 0xda, 0x1d, 0xcc, 0x69, 0x30, 0xf4, 0xc5, 0x51, 0x37, 0x34, 0x6b, 0xfd, 0x68, 0xc1, 0x9d, 0x87, 0x97, 0x2f, 0x7f, 0x34, 0xcb, 0xae, 0x56, 0x63, 0x26, 0x0f, 0xeb, 0x79, 0xf7, 0x60, 0x22, 0x1c, 0xd6, 0x7b, 0xe0, 0x66, 0xd5, 0xaf, 0x0f, 0x07, 0x3c, 0x0f, 0x2c, 0x43, 0x9e, 0x8b, 0xcb, 0x74, 0x63, 0xed, 0xe4, 0x4c, 0x8b, 0x15, 0x0e, 0xba, 0xf3, 0x29, 0x87, 0x26, 0xc3 } -, - /* Encryption */ - 128, - { 0x15, 0x91, 0xd1, 0xce, 0x0f, 0xad, 0x66, 0xd8, 0x6f, 0xd4, 0x2e, 0xfd, 0xb3, 0x1e, 0x9a, 0x02, 0x8a, 0x31, 0x57, 0xfb, 0x09, 0x14, 0xb2, 0x47, 0xeb, 0x3d, 0x22, 0xd7, 0x6f, 0x97, 0x69, 0xb0, 0xe1, 0x9f, 0x6c, 0x06, 0x4c, 0xa1, 0xb9, 0x89, 0x06, 0x39, 0xee, 0x6e, 0x37, 0xb7, 0x09, 0x22, 0x4d, 0x6b, 0x58, 0xeb, 0xb6, 0x55, 0xae, 0x4b, 0x69, 0xed, 0x4c, 0xd7, 0x5d, 0x81, 0x29, 0x21, 0x17, 0xc0, 0x69, 0x30, 0xd4, 0x2a, 0xc4, 0xd4, 0x2e, 0xa7, 0x35, 0x14, 0x21, 0x8f, 0x49, 0xea, 0x07, 0xca, 0x97, 0x43, 0x67, 0x09, 0x68, 0x3d, 0x67, 0xa8, 0xe9, 0xe8, 0x08, 0xda, 0x69, 0xa5, 0x0b, 0x73, 0x9c, 0x42, 0xeb, 0x0d, 0xeb, 0x94, 0xa3, 0x49, 0x8f, 0xc5, 0x45, 0x0e, 0xb6, 0x9a, 0xce, 0x23, 0x76, 0x76, 0x61, 0xfe, 0xdf, 0x34, 0x18, 0x3a, 0x1b, 0x6f, 0x42, 0x5d, 0xd6, 0xa0 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Encryption Example 3.2", - /* Message */ - 18, - { 0xa7, 0x57, 0x38, 0x29, 0x1f, 0xad, 0x54, 0x13, 0x95, 0x7f, 0xa3, 0xb9, 0xf3, 0xb2, 0xca, 0xac, 0x9f, 0x5a } -, - /* Seed */ - 107, - { 0x3a, 0x19, 0x1a, 0xaf, 0x45, 0xed, 0x4c, 0x25, 0x89, 0x20, 0x5d, 0x9c, 0xf6, 0xa3, 0x0f, 0x07, 0x70, 0x0e, 0x38, 0xbe, 0x06, 0x25, 0x62, 0x43, 0x01, 0x8d, 0x23, 0xc6, 0x84, 0xda, 0xec, 0xe7, 0xe8, 0x67, 0xe3, 0x9d, 0x76, 0xc6, 0xb6, 0xf0, 0x35, 0x43, 0xfc, 0x15, 0xaf, 0x81, 0xbf, 0x84, 0xf9, 0x64, 0xea, 0xf3, 0xa9, 0x5a, 0x4b, 0x80, 0x86, 0x28, 0xfd, 0x51, 0x55, 0x38, 0x99, 0xf8, 0x11, 0xc0, 0x8c, 0x62, 0x60, 0x9c, 0x51, 0x4c, 0xfa, 0x1d, 0xbb, 0x78, 0xd5, 0xa5, 0xb3, 0x3c, 0xc0, 0xb8, 0x57, 0xfc, 0xb1, 0xee, 0xcc, 0x53, 0x1b, 0x13, 0x26, 0x34, 0x43, 0x90, 0x59, 0xf5, 0x5a, 0x73, 0x3e, 0x14, 0x6e, 0x1c, 0xa1, 0xeb, 0x5a, 0x97, 0xf4 } -, - /* Encryption */ - 128, - { 0x70, 0xaa, 0xf7, 0x24, 0x39, 0x6c, 0x1a, 0xc5, 0x0e, 0xdb, 0xbf, 0xe8, 0x34, 0x1b, 0x08, 0x7b, 0xa0, 0xff, 0xe2, 0x87, 0x60, 0x5a, 0x8c, 0x3a, 0x8c, 0xcf, 0x85, 0xab, 0x2e, 0xd2, 0xfe, 0x22, 0x15, 0x9d, 0x62, 0xaa, 0x02, 0x74, 0x76, 0xeb, 0xbf, 0x07, 0x70, 0x02, 0x6d, 0x2d, 0x3b, 0x0c, 0x0d, 0x77, 0x34, 0xfa, 0xaa, 0xa8, 0xd1, 0x5e, 0x2c, 0xe5, 0x1c, 0x85, 0x53, 0x5c, 0x26, 0xb4, 0x15, 0x0a, 0xd6, 0x34, 0x6e, 0x3b, 0xfd, 0x38, 0xdb, 0x5d, 0xac, 0xf7, 0x52, 0xe7, 0x5d, 0x75, 0x31, 0x40, 0x54, 0xd1, 0x67, 0xa9, 0x6d, 0x81, 0x9f, 0x34, 0x38, 0xa7, 0xbe, 0xc4, 0x46, 0x7f, 0xc5, 0x60, 0xa6, 0x94, 0x46, 0x94, 0x85, 0xe8, 0xe7, 0x8e, 0x47, 0xe4, 0xe8, 0x27, 0x7c, 0xa7, 0xd3, 0xfd, 0x2a, 0xd9, 0x4a, 0x30, 0x46, 0x4c, 0x24, 0x57, 0x85, 0x47, 0x25, 0xc6, 0x16, 0x15 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.3", - /* Message */ - 14, - { 0x87, 0x31, 0x2f, 0x78, 0x7d, 0xe0, 0x65, 0x97, 0x50, 0xd6, 0x02, 0xac, 0x11, 0x02 } -, - /* Seed */ - 111, - { 0xa2, 0x29, 0xe3, 0xe8, 0xef, 0x1c, 0xaa, 0x66, 0xca, 0xf0, 0xd8, 0xac, 0xd8, 0xd6, 0x6b, 0x9e, 0x41, 0xcc, 0x77, 0x1f, 0x26, 0xe2, 0x0f, 0x12, 0xec, 0xc6, 0xe2, 0xaa, 0x38, 0x45, 0x51, 0x3d, 0xd1, 0x34, 0xf7, 0xc6, 0xe5, 0x74, 0xf4, 0x1b, 0x21, 0x5d, 0x1d, 0x11, 0x17, 0x56, 0xda, 0xf9, 0x71, 0xcc, 0xf3, 0x9c, 0xcd, 0xce, 0x78, 0x16, 0x19, 0xd7, 0x97, 0x20, 0xdf, 0x91, 0x8d, 0x33, 0x9c, 0x82, 0x6d, 0xc0, 0x49, 0xb3, 0x90, 0x91, 0x7c, 0x17, 0xba, 0x0f, 0xb1, 0x30, 0x2f, 0xff, 0x11, 0x0a, 0x14, 0xdd, 0x23, 0x84, 0x90, 0x27, 0x41, 0xf9, 0x12, 0xb2, 0x6a, 0x1a, 0xdb, 0xe0, 0xed, 0x1e, 0x8f, 0xd9, 0x89, 0x71, 0x0b, 0x40, 0x3d, 0x27, 0xc4, 0xe0, 0x18, 0xfb, 0x9b } -, - /* Encryption */ - 128, - { 0x03, 0x38, 0x46, 0xd7, 0x66, 0x4c, 0x8f, 0x92, 0x62, 0x57, 0xc7, 0xfd, 0x32, 0x64, 0x48, 0x47, 0x92, 0xac, 0x7f, 0x9b, 0xc8, 0x75, 0x8a, 0x7a, 0x16, 0xab, 0xb8, 0x9f, 0xa3, 0xcc, 0xc4, 0xd1, 0x3a, 0x1e, 0xed, 0x88, 0xaf, 0x73, 0x23, 0xbc, 0x3c, 0x74, 0xe2, 0x3f, 0xda, 0xb5, 0x03, 0x81, 0x89, 0x4c, 0x86, 0x26, 0xdf, 0xd0, 0xac, 0x85, 0x89, 0xd4, 0x62, 0x34, 0xd3, 0xc3, 0x5f, 0x18, 0x99, 0x81, 0x79, 0x44, 0x84, 0x31, 0xdc, 0x81, 0x6f, 0xb6, 0x3e, 0x55, 0xcf, 0x26, 0xd7, 0x4a, 0x9d, 0x2a, 0x09, 0x32, 0x67, 0x3c, 0xb4, 0xbe, 0xb8, 0x29, 0xcd, 0x7d, 0x49, 0x50, 0x88, 0x48, 0xc6, 0xd0, 0xc0, 0x0d, 0x5c, 0x70, 0xf7, 0xfb, 0x47, 0x67, 0x70, 0xe4, 0x03, 0x19, 0x23, 0x7c, 0x78, 0x6b, 0xf4, 0xe2, 0x6c, 0x48, 0xd2, 0xcf, 0xd9, 0x6e, 0xe3, 0x62, 0xbf, 0x29, 0x28, 0x25 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.4", - /* Message */ - 54, - { 0x9a, 0x2b, 0xca, 0x75, 0xe3, 0x26, 0x49, 0x77, 0x7b, 0x9f, 0x13, 0xec, 0x30, 0xfe, 0x16, 0xbb, 0x8a, 0xb4, 0x6d, 0x6d, 0x5e, 0x0c, 0x64, 0x63, 0xa7, 0x3d, 0x8c, 0x36, 0x63, 0xad, 0xab, 0xc7, 0x23, 0xbd, 0xe7, 0x2a, 0x50, 0x76, 0x5e, 0x7b, 0x30, 0x0e, 0xf6, 0xb5, 0x61, 0xde, 0xe8, 0x84, 0x84, 0x88, 0x0e, 0x4d, 0x61, 0x2c } -, - /* Seed */ - 71, - { 0x8b, 0xfa, 0xe9, 0x22, 0x2f, 0x75, 0xa0, 0x69, 0x98, 0xed, 0x6d, 0x9b, 0x14, 0x9e, 0x89, 0x05, 0xcf, 0xc8, 0xdb, 0x05, 0x5a, 0x0e, 0x32, 0xac, 0xed, 0xf8, 0x24, 0xd2, 0xf6, 0xb5, 0xb4, 0x2b, 0x3a, 0xea, 0xc6, 0xa7, 0x10, 0x4e, 0x14, 0x4d, 0x5e, 0x48, 0x34, 0x28, 0x0e, 0x36, 0x44, 0x5a, 0xb8, 0x50, 0xf3, 0xa6, 0xde, 0x16, 0x4c, 0x2c, 0x79, 0x0f, 0xe7, 0xd9, 0xd7, 0xbc, 0x7f, 0x9b, 0xdb, 0xe2, 0x52, 0x17, 0xda, 0x2d, 0xed } -, - /* Encryption */ - 128, - { 0x6e, 0xc5, 0xf5, 0x59, 0xc8, 0xa3, 0x20, 0xd9, 0x0d, 0x1e, 0xb5, 0xef, 0x09, 0x1c, 0x4d, 0x12, 0x55, 0xa2, 0x4a, 0x69, 0x19, 0x41, 0x0e, 0xb1, 0xdf, 0x65, 0xa9, 0x7b, 0x30, 0xcd, 0xd7, 0xfa, 0xe1, 0x8e, 0x65, 0x12, 0xa0, 0x27, 0xe9, 0x76, 0x70, 0x4b, 0x4f, 0xa0, 0x44, 0x37, 0x43, 0x93, 0xd5, 0x01, 0xe2, 0xba, 0x46, 0x18, 0x62, 0x00, 0xef, 0x0d, 0xdd, 0xf1, 0x9c, 0x75, 0x77, 0x58, 0xe4, 0x67, 0x94, 0x30, 0xbc, 0xd9, 0xfd, 0x11, 0x9e, 0xa2, 0x43, 0xb3, 0x49, 0xdc, 0xf8, 0x1c, 0x34, 0x32, 0xd3, 0x1f, 0xba, 0x91, 0x1e, 0xc6, 0xfc, 0x68, 0x6e, 0xaa, 0xdf, 0xf6, 0xb9, 0xfd, 0xf5, 0x3a, 0xa4, 0xc8, 0x5a, 0x49, 0xa2, 0x2a, 0x05, 0x1c, 0x5f, 0x18, 0x07, 0xf3, 0x08, 0x3b, 0x1b, 0x3e, 0x61, 0x17, 0xb4, 0xef, 0x12, 0x08, 0xde, 0x0a, 0x80, 0x01, 0xdc, 0x29, 0x1c, 0x4e } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.5", - /* Message */ - 48, - { 0xdf, 0xd6, 0x3e, 0x6e, 0xc6, 0x1e, 0x07, 0x27, 0x5b, 0x8e, 0x37, 0xcc, 0x63, 0x69, 0xe1, 0xf3, 0xec, 0x0b, 0xfc, 0x57, 0xa2, 0x98, 0xb9, 0x05, 0xae, 0x5d, 0x07, 0x74, 0xe0, 0xf5, 0x22, 0xe6, 0x75, 0x9c, 0x7d, 0x11, 0x6f, 0x8e, 0x8e, 0xfe, 0x69, 0x45, 0x0f, 0xa7, 0xa8, 0x38, 0x9f, 0x81 } -, - /* Seed */ - 77, - { 0xc4, 0x22, 0x37, 0x7b, 0x89, 0x86, 0x4b, 0x0d, 0xf3, 0x8b, 0x4f, 0x9c, 0x15, 0xf9, 0x8a, 0x05, 0x96, 0x55, 0xe1, 0xc9, 0xb0, 0xc7, 0x09, 0x63, 0x5c, 0xa6, 0x06, 0x49, 0xd8, 0xd2, 0x47, 0x5e, 0xe1, 0x6c, 0xb1, 0x27, 0xf6, 0x76, 0x39, 0x12, 0x96, 0x4e, 0x19, 0x84, 0xd6, 0xda, 0xad, 0x4d, 0x6a, 0xbd, 0x04, 0xb0, 0x46, 0x18, 0xb3, 0x2e, 0x53, 0x25, 0xba, 0x95, 0xeb, 0x5e, 0x76, 0xdb, 0xd4, 0x6d, 0x9f, 0xb5, 0x9d, 0xf0, 0x7a, 0x08, 0x1e, 0x95, 0x6c, 0xb0, 0x73 } -, - /* Encryption */ - 128, - { 0x9e, 0x06, 0xcd, 0x91, 0xa4, 0x4a, 0x9a, 0xde, 0xa6, 0xa7, 0x98, 0x03, 0xd3, 0xe6, 0xbb, 0xab, 0x17, 0xdb, 0x10, 0x62, 0xb6, 0x51, 0x0b, 0xed, 0x40, 0x07, 0x55, 0x66, 0x74, 0x95, 0x44, 0xc0, 0x3d, 0x7a, 0x78, 0xb1, 0x37, 0xb0, 0xdc, 0x1e, 0x66, 0x26, 0x32, 0x1f, 0xed, 0xaf, 0xc2, 0x0d, 0xcd, 0xbf, 0x70, 0x80, 0xf7, 0xf5, 0xbd, 0xd5, 0x67, 0x44, 0xce, 0x99, 0x9f, 0x76, 0x70, 0x5c, 0x4f, 0x5e, 0x6f, 0xa1, 0x5f, 0x46, 0xc5, 0xae, 0x50, 0x80, 0x90, 0xdb, 0xbc, 0x85, 0xfb, 0x86, 0x89, 0x9c, 0x95, 0x78, 0x60, 0x8d, 0xfd, 0x77, 0x8a, 0xa4, 0xa7, 0x9d, 0x3d, 0x73, 0x63, 0x54, 0xcc, 0xfb, 0xfa, 0x2c, 0x86, 0xf2, 0x9a, 0x7a, 0x58, 0x45, 0x3d, 0x75, 0x7f, 0xd5, 0x22, 0xf7, 0x84, 0x08, 0xd9, 0x91, 0x6b, 0x1b, 0xd0, 0x65, 0x4b, 0xff, 0xe6, 0xe0, 0x66, 0xba, 0xeb, 0x50 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.6", - /* Message */ - 35, - { 0x5d, 0x91, 0xfb, 0xc1, 0xa7, 0xba, 0x79, 0x93, 0x9b, 0x89, 0xa2, 0x40, 0x8c, 0xce, 0x8e, 0xd4, 0xbb, 0x26, 0x66, 0xdd, 0xfe, 0x09, 0xd9, 0x19, 0x21, 0xa0, 0xaa, 0x69, 0x09, 0x6a, 0x95, 0x69, 0x92, 0xc2, 0x1c } -, - /* Seed */ - 90, - { 0xaf, 0x07, 0xfe, 0xa3, 0x21, 0xea, 0xa2, 0x67, 0xaf, 0x7f, 0x09, 0x80, 0x6f, 0x9e, 0xa8, 0xb4, 0xcf, 0x13, 0x5e, 0xd6, 0xf1, 0x43, 0x2d, 0x51, 0xb2, 0x8f, 0x92, 0x44, 0x87, 0x09, 0xc2, 0xee, 0x8a, 0xed, 0x7f, 0x73, 0xb6, 0x28, 0x2c, 0xbf, 0xd3, 0x7f, 0x82, 0xdb, 0xa8, 0x72, 0x3e, 0x5e, 0x5e, 0x0a, 0x81, 0xf5, 0x90, 0xf8, 0x2e, 0x2f, 0xa8, 0x4c, 0x3b, 0xc0, 0x0c, 0x9b, 0x9f, 0x91, 0xaa, 0x55, 0x3b, 0x8b, 0x2c, 0x07, 0x4b, 0xfe, 0xca, 0xc2, 0xf5, 0x52, 0x37, 0xf4, 0xcb, 0x70, 0x54, 0x3a, 0xba, 0x49, 0x94, 0x68, 0xcf, 0x68, 0x44, 0xc3 } -, - /* Encryption */ - 128, - { 0x76, 0x05, 0x0e, 0x22, 0x64, 0x22, 0x0e, 0x10, 0x05, 0x2c, 0x49, 0xb9, 0x6c, 0xc8, 0x41, 0x1e, 0x39, 0x6a, 0x7a, 0x6e, 0x4a, 0xed, 0xb0, 0x6b, 0x48, 0xfd, 0xb0, 0x71, 0xde, 0x83, 0x9b, 0x40, 0x1c, 0xac, 0x0c, 0x46, 0x8d, 0xe8, 0xd1, 0xed, 0x0b, 0x56, 0x8c, 0xe6, 0x90, 0xe8, 0x03, 0x7a, 0xf5, 0xde, 0xf6, 0xb3, 0xd2, 0xdb, 0xc7, 0xb5, 0xf2, 0xfa, 0xde, 0x35, 0x6c, 0x26, 0xcf, 0xfc, 0xdd, 0x33, 0x40, 0x33, 0xea, 0x2c, 0x99, 0x77, 0x92, 0xd9, 0x30, 0xa7, 0x26, 0x46, 0x12, 0x5c, 0x0e, 0xe8, 0x6a, 0x4d, 0xd8, 0x43, 0xc8, 0x24, 0xc7, 0xa5, 0x2a, 0xc9, 0x88, 0xc9, 0x2e, 0x6c, 0x69, 0xb5, 0x80, 0x76, 0x1c, 0x49, 0x88, 0x1f, 0x29, 0xdd, 0x8a, 0x76, 0xda, 0x79, 0x3f, 0x43, 0x2e, 0x7d, 0x5d, 0xc7, 0x31, 0xa2, 0x5e, 0x5b, 0xb5, 0x02, 0x58, 0xd0, 0x27, 0x39, 0x5f, 0xbd } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.7", - /* Message */ - 8, - { 0x04, 0xed, 0xd8, 0x3c, 0x65, 0x65, 0x6a, 0x01 } -, - /* Seed */ - 117, - { 0x88, 0xf9, 0xa2, 0x71, 0x97, 0xf9, 0xf2, 0x57, 0xfa, 0x81, 0xc0, 0xe3, 0x05, 0x90, 0xb7, 0x3e, 0x9e, 0x11, 0xc7, 0x6b, 0xc8, 0x9e, 0x08, 0x53, 0x6b, 0x4b, 0x64, 0xa2, 0x50, 0x6a, 0xeb, 0x33, 0xb4, 0x50, 0x74, 0x73, 0x08, 0x09, 0xa0, 0x5c, 0x45, 0xb9, 0xbc, 0x95, 0x71, 0x73, 0x69, 0xcf, 0x92, 0xc1, 0xbf, 0x98, 0x6e, 0x53, 0xba, 0x11, 0x23, 0x83, 0x30, 0xfd, 0xc4, 0xe0, 0x5e, 0xa1, 0x07, 0x33, 0x4a, 0xb3, 0x11, 0x06, 0xae, 0xbd, 0x9c, 0x6c, 0x29, 0xe5, 0x01, 0xa5, 0x7d, 0x99, 0x7c, 0x01, 0xbb, 0xc1, 0x01, 0x0b, 0xd5, 0x2f, 0x05, 0x38, 0xb9, 0x51, 0x59, 0xf3, 0x91, 0x32, 0x0d, 0xe6, 0xdb, 0x23, 0xd8, 0x16, 0x2c, 0xf1, 0x46, 0x58, 0x4c, 0x6e, 0x07, 0x6c, 0x4e, 0xae, 0x86, 0x20, 0x72, 0xeb, 0x5b } -, - /* Encryption */ - 128, - { 0x79, 0x1b, 0x37, 0x91, 0x48, 0xa8, 0x3a, 0x03, 0x4d, 0x31, 0x2a, 0x82, 0xbb, 0xb3, 0x7b, 0x11, 0x1b, 0x40, 0xbc, 0xf6, 0xa3, 0x37, 0xfd, 0xe2, 0x89, 0xb0, 0x8e, 0x07, 0x2e, 0x44, 0x03, 0x19, 0x73, 0xff, 0x9d, 0x0c, 0x27, 0xf7, 0x0d, 0x64, 0xa8, 0xea, 0xfc, 0x6e, 0xb5, 0xf8, 0xeb, 0x4e, 0x52, 0xe2, 0xc4, 0x19, 0x7e, 0xcf, 0xa5, 0x45, 0xed, 0x63, 0xae, 0x9a, 0x12, 0x83, 0x79, 0xd3, 0xf5, 0x62, 0xa1, 0x8f, 0xe3, 0xad, 0x14, 0x05, 0x27, 0x67, 0xf0, 0x54, 0x1b, 0x90, 0x16, 0x81, 0x85, 0xcb, 0xb7, 0x8d, 0xb6, 0x03, 0x81, 0xc0, 0x92, 0xbc, 0x23, 0xe1, 0xaa, 0x05, 0xb4, 0x08, 0x92, 0xf9, 0xa1, 0x16, 0xe6, 0x25, 0xcb, 0x14, 0x8b, 0x56, 0x07, 0x42, 0xcc, 0x12, 0x78, 0xc4, 0xd2, 0x1a, 0x4a, 0x7d, 0x37, 0xf6, 0x98, 0x2a, 0xee, 0x27, 0xf2, 0xa4, 0xc0, 0xc5, 0x73, 0xd2 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.8", - /* Message */ - 25, - { 0x3f, 0x7e, 0xea, 0x78, 0x1b, 0x77, 0xd8, 0x5f, 0xe3, 0x71, 0xb3, 0xe9, 0x37, 0x3e, 0x7b, 0x69, 0x21, 0x7d, 0x31, 0x50, 0xa0, 0x2d, 0x89, 0x58, 0xde } -, - /* Seed */ - 100, - { 0x49, 0x99, 0xc6, 0x4c, 0xbf, 0xa3, 0x85, 0x24, 0xad, 0xca, 0xb6, 0x6f, 0x64, 0x45, 0x4d, 0x36, 0xfb, 0xfc, 0xb2, 0x98, 0x6e, 0x1f, 0xa4, 0x75, 0x3a, 0x0e, 0x03, 0x88, 0x9f, 0xf0, 0x6e, 0xe1, 0x60, 0x0e, 0xee, 0x23, 0xbe, 0x53, 0xa9, 0x74, 0x42, 0xb4, 0x2c, 0x69, 0x62, 0x18, 0x66, 0x63, 0x2e, 0x4a, 0x6b, 0x6a, 0x1c, 0x71, 0x05, 0x73, 0x26, 0x1d, 0x71, 0xf3, 0x8a, 0xbf, 0x9e, 0x52, 0x49, 0xdd, 0xc8, 0xe1, 0xb7, 0x7b, 0x3f, 0x12, 0x6b, 0xa0, 0x88, 0x15, 0xc4, 0xfe, 0x63, 0x31, 0x4f, 0x9b, 0x9e, 0x8e, 0x7a, 0x40, 0xc7, 0xfc, 0x72, 0x86, 0x25, 0x20, 0xed, 0x49, 0xd4, 0x12, 0x59, 0xab, 0x2e, 0x0c } -, - /* Encryption */ - 128, - { 0x74, 0xfd, 0x8b, 0x98, 0x56, 0xd7, 0x57, 0x6e, 0x0f, 0x12, 0x87, 0xe0, 0xe9, 0x08, 0x5a, 0x38, 0x01, 0xe6, 0xb6, 0x77, 0x4d, 0xb7, 0x33, 0x54, 0x1d, 0xeb, 0xd3, 0x9e, 0x72, 0xcf, 0xa8, 0x29, 0x1f, 0xec, 0x27, 0x01, 0x8c, 0x9f, 0x53, 0x05, 0xa4, 0x4c, 0xcb, 0x5a, 0x3c, 0xb5, 0x91, 0xfe, 0xd2, 0xe6, 0xa1, 0xd1, 0xd8, 0x5c, 0xaa, 0xa7, 0x4d, 0xc2, 0x37, 0x59, 0xd6, 0x66, 0x5a, 0x45, 0x70, 0xa6, 0x37, 0xf3, 0xab, 0x30, 0x4b, 0x76, 0x61, 0x31, 0x3b, 0x96, 0x71, 0x3c, 0x7b, 0x7e, 0x49, 0x77, 0x31, 0x33, 0xdd, 0x5d, 0x4e, 0xf9, 0xd2, 0x9a, 0x1a, 0xf7, 0x12, 0x00, 0x15, 0x02, 0x8d, 0xaa, 0xb3, 0xdf, 0x04, 0x2c, 0x56, 0x26, 0x20, 0xaa, 0x49, 0xd2, 0xc0, 0x14, 0x41, 0x4d, 0xfb, 0x15, 0x77, 0xd7, 0x19, 0xa9, 0x58, 0x82, 0x64, 0x71, 0x2d, 0xe3, 0xbf, 0x4a, 0x76, 0x79 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.9", - /* Message */ - 47, - { 0xa3, 0x85, 0x08, 0xd9, 0x46, 0x0c, 0x63, 0xf4, 0x15, 0x81, 0xa8, 0x86, 0x9a, 0x75, 0x82, 0x4b, 0x14, 0xf5, 0xc6, 0x50, 0x32, 0x29, 0x99, 0xdc, 0x41, 0x13, 0x50, 0xd0, 0xd4, 0xe8, 0x62, 0x4f, 0xf0, 0x9c, 0xeb, 0x00, 0xd3, 0xbe, 0xdc, 0x5d, 0x76, 0x2a, 0x40, 0xc9, 0x39, 0x80, 0x04 } -, - /* Seed */ - 78, - { 0x6a, 0x0a, 0x28, 0x8a, 0x1e, 0x67, 0x43, 0x0c, 0x66, 0x6a, 0xeb, 0xea, 0x44, 0xb5, 0x82, 0xa9, 0x09, 0x69, 0xcc, 0x01, 0xe9, 0x0a, 0xae, 0x10, 0x53, 0xce, 0x55, 0xee, 0xb9, 0x87, 0x9b, 0xcc, 0x62, 0x25, 0x39, 0x15, 0xe9, 0x22, 0xf1, 0x09, 0x66, 0x67, 0xbd, 0xa0, 0x2a, 0x14, 0xe7, 0x07, 0x47, 0xb3, 0x59, 0x35, 0x24, 0xc2, 0x84, 0x85, 0x47, 0xd2, 0x11, 0x4d, 0x1d, 0x0c, 0xdc, 0xb9, 0x7e, 0xb4, 0xdf, 0x45, 0x5b, 0xba, 0xc9, 0xb0, 0xcc, 0x29, 0x08, 0x39, 0xb7, 0x3a } -, - /* Encryption */ - 128, - { 0xa6, 0x77, 0x57, 0x80, 0x8f, 0x5a, 0xbd, 0xc8, 0x1e, 0xdb, 0x7f, 0x69, 0x2f, 0x9f, 0xb8, 0x52, 0xf1, 0xa1, 0x66, 0x1c, 0x4a, 0x00, 0x98, 0x05, 0xc4, 0x4b, 0x21, 0x6c, 0xd3, 0xb1, 0x32, 0x2b, 0xbb, 0x25, 0xd1, 0x45, 0x8e, 0x31, 0xb0, 0xf0, 0x7d, 0x65, 0x50, 0x57, 0x59, 0xc4, 0xb4, 0x14, 0x7f, 0x23, 0xcb, 0xee, 0x2a, 0xf4, 0xa1, 0xa5, 0x93, 0x8a, 0x06, 0x8c, 0xe9, 0xc5, 0x32, 0x3f, 0xf5, 0x3f, 0x4b, 0x39, 0x2e, 0x12, 0x50, 0xd0, 0x37, 0xb3, 0x1e, 0x62, 0x81, 0xdc, 0xdf, 0xb9, 0x6b, 0xf4, 0xbf, 0xea, 0xa1, 0x47, 0xf0, 0x96, 0xc7, 0x84, 0xc9, 0x2f, 0x4a, 0xc5, 0x70, 0x91, 0x12, 0x28, 0x02, 0x50, 0x29, 0xc3, 0xb5, 0x23, 0x30, 0x3f, 0xe8, 0x22, 0x7e, 0x8b, 0x2c, 0xc0, 0xef, 0x15, 0x70, 0x14, 0xcb, 0x67, 0x31, 0xaa, 0xc0, 0x9b, 0xfe, 0x6f, 0xfa, 0x18, 0xea, 0xf6 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.10", - /* Message */ - 28, - { 0xf7, 0x84, 0x05, 0x23, 0x6a, 0x9e, 0xb5, 0x57, 0xaa, 0xce, 0xc6, 0x00, 0x7d, 0xbc, 0x4c, 0x0e, 0xde, 0x78, 0xed, 0x12, 0xb0, 0x4c, 0x82, 0x88, 0x8a, 0x82, 0xc2, 0x13 } -, - /* Seed */ - 97, - { 0x86, 0xf0, 0x72, 0x3b, 0x31, 0x68, 0xe2, 0xae, 0xac, 0xe9, 0xec, 0x2e, 0x95, 0xfd, 0xa6, 0xe6, 0xd6, 0xfc, 0x8d, 0x62, 0x94, 0x55, 0x65, 0x66, 0x39, 0x9d, 0x73, 0x11, 0xe7, 0x99, 0xfa, 0xa9, 0xb1, 0xee, 0x1f, 0x03, 0x2a, 0xb2, 0xe5, 0x34, 0xa9, 0x1f, 0xbc, 0xd0, 0x7c, 0x8a, 0x7d, 0x04, 0xa9, 0xb4, 0x85, 0xf3, 0x1e, 0x07, 0x23, 0xfd, 0x29, 0xeb, 0x21, 0x88, 0x06, 0x9d, 0x9b, 0xbd, 0x76, 0x29, 0xdc, 0x6e, 0x3f, 0xc8, 0x9b, 0xe6, 0x04, 0xbc, 0xf0, 0x0c, 0x52, 0xfa, 0x8e, 0x1d, 0x6c, 0x62, 0x55, 0x5f, 0xd1, 0xf6, 0x0c, 0xec, 0x02, 0xd4, 0xd9, 0x61, 0xd8, 0x28, 0xda, 0xbc, 0x4a } -, - /* Encryption */ - 128, - { 0x6e, 0x8d, 0x2f, 0xb0, 0xb2, 0xee, 0xf8, 0x2f, 0xc1, 0x10, 0xce, 0xe0, 0xa9, 0xd3, 0x84, 0x2f, 0x2a, 0x05, 0x8a, 0x24, 0x40, 0x7f, 0xa1, 0x1b, 0xa9, 0x05, 0xd1, 0xaa, 0x50, 0xe8, 0xcc, 0x12, 0xde, 0xcc, 0x07, 0x3d, 0xbd, 0x08, 0xa8, 0xc7, 0x05, 0x18, 0xef, 0x25, 0xdb, 0x96, 0xfd, 0xa2, 0x41, 0x1c, 0xca, 0x08, 0x72, 0x87, 0x88, 0x95, 0x6f, 0x73, 0xdf, 0xa1, 0x20, 0xe0, 0xea, 0x60, 0x5b, 0xff, 0xc9, 0x3b, 0x43, 0xa4, 0x41, 0xa4, 0x3d, 0x0e, 0xaa, 0x3f, 0xf0, 0x73, 0xe6, 0x98, 0x2e, 0xef, 0x52, 0x96, 0x39, 0x06, 0x07, 0xe2, 0x5a, 0x58, 0x8a, 0x39, 0x82, 0x55, 0xba, 0x00, 0x5a, 0x48, 0x5e, 0x6e, 0x73, 0x2e, 0x3a, 0x19, 0x20, 0xcd, 0x43, 0xa3, 0x90, 0xfb, 0x66, 0xd5, 0x42, 0x8d, 0xfd, 0x62, 0x89, 0x74, 0xb8, 0xaf, 0xf2, 0xf0, 0x60, 0x2d, 0xa5, 0x78, 0xd6, 0x25 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.11", - /* Message */ - 40, - { 0x56, 0x1d, 0x27, 0xc1, 0xd3, 0xf6, 0xd5, 0xd1, 0xa6, 0x43, 0xaa, 0x47, 0xe5, 0x5d, 0x78, 0xeb, 0x00, 0xf3, 0x2d, 0x42, 0x89, 0x6a, 0x34, 0xe0, 0xc1, 0xd7, 0x1b, 0xc3, 0xa5, 0x45, 0x7c, 0x92, 0x05, 0xbe, 0xd1, 0x3b, 0x98, 0x4c, 0x52, 0x59 } -, - /* Seed */ - 85, - { 0x98, 0x17, 0x6e, 0x1d, 0x67, 0xa2, 0x46, 0x2f, 0x5d, 0xc1, 0xbf, 0xa6, 0xe0, 0x75, 0x95, 0x42, 0x10, 0x4a, 0xc1, 0x48, 0x11, 0xd3, 0x18, 0x79, 0x38, 0x25, 0x04, 0x55, 0xc6, 0x5e, 0x4a, 0xaa, 0x76, 0x32, 0xbd, 0x2d, 0x1d, 0x75, 0x2e, 0x1f, 0x34, 0xc5, 0x3c, 0xab, 0x26, 0x76, 0x76, 0xa7, 0x8c, 0x10, 0xc9, 0x98, 0xe7, 0x73, 0xfd, 0x8f, 0xfe, 0x35, 0xc8, 0x67, 0xc4, 0x43, 0xbe, 0xf7, 0x98, 0x65, 0xaa, 0x2d, 0xa2, 0x91, 0x5a, 0x85, 0xc7, 0x02, 0x63, 0x23, 0x69, 0x3e, 0x45, 0x4d, 0x8a, 0xb3, 0x2a, 0x77, 0x15 } -, - /* Encryption */ - 128, - { 0x0b, 0xc0, 0x47, 0x83, 0xc6, 0x92, 0x44, 0x7a, 0x3d, 0xe6, 0x1f, 0x53, 0xb7, 0x2f, 0x7a, 0xa4, 0x10, 0x31, 0x6d, 0xd5, 0x09, 0xa6, 0xf4, 0x9e, 0x3a, 0xba, 0x56, 0xad, 0x1f, 0xf8, 0x6e, 0xbe, 0x9e, 0x63, 0x66, 0xe1, 0x7e, 0x51, 0x45, 0x00, 0x76, 0xbe, 0xa3, 0x71, 0xd4, 0xc6, 0x89, 0xcd, 0x61, 0x49, 0x5c, 0xd8, 0xfa, 0x29, 0xc0, 0xe8, 0x7b, 0x6d, 0xbf, 0xa8, 0xe3, 0x86, 0xc2, 0xe8, 0x20, 0xe4, 0xc7, 0x42, 0xa4, 0x87, 0xe8, 0x9b, 0x27, 0x5a, 0x21, 0x86, 0xe2, 0x38, 0x40, 0xbe, 0x9c, 0x02, 0x52, 0x7b, 0xa7, 0x17, 0xe9, 0xe6, 0x0b, 0x5b, 0xf4, 0x17, 0x71, 0x1d, 0xf3, 0x4d, 0x7b, 0x8e, 0x2d, 0x12, 0xbc, 0xeb, 0x85, 0x93, 0x85, 0xfa, 0x00, 0x1d, 0x4b, 0x4b, 0xff, 0xbb, 0xc0, 0xed, 0xef, 0xbd, 0x40, 0x02, 0x41, 0x84, 0x68, 0xc5, 0x66, 0xfd, 0xf6, 0xb8, 0x35, 0x09 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.12", - /* Message */ - 45, - { 0xeb, 0x5f, 0x8c, 0x0d, 0xc9, 0xd9, 0x01, 0x06, 0x1b, 0x82, 0xae, 0xff, 0x8d, 0x67, 0xd8, 0xbf, 0xfc, 0x0c, 0x04, 0x7e, 0xcc, 0x4a, 0xa3, 0x46, 0xb2, 0x3b, 0xdb, 0xa6, 0x2a, 0x87, 0xe9, 0xdc, 0x77, 0x0b, 0x11, 0x69, 0x5f, 0xbf, 0x19, 0x02, 0xf2, 0x4b, 0x66, 0xce, 0xab } -, - /* Seed */ - 80, - { 0x74, 0x82, 0x77, 0x0f, 0x3c, 0xf5, 0x7e, 0xdb, 0x81, 0x40, 0xeb, 0xc3, 0x3a, 0x02, 0x82, 0x45, 0xee, 0x06, 0x48, 0x52, 0x06, 0x89, 0xa5, 0x0e, 0x33, 0xf5, 0xf4, 0x67, 0xf6, 0xd1, 0xe4, 0x32, 0x4e, 0x1c, 0x50, 0xc8, 0x99, 0xe5, 0xad, 0x2c, 0x46, 0xc9, 0x7f, 0x81, 0x20, 0xd1, 0xc7, 0x22, 0x39, 0xd6, 0xa8, 0x2d, 0x8f, 0x8e, 0xbc, 0x80, 0xb9, 0x73, 0xee, 0xa8, 0xc5, 0x45, 0x69, 0x29, 0x50, 0x45, 0x14, 0xb4, 0xb1, 0x56, 0x62, 0x84, 0x4f, 0x29, 0x50, 0x62, 0xf2, 0x1e, 0xbd, 0x92 } -, - /* Encryption */ - 128, - { 0xb8, 0x40, 0x43, 0x54, 0xa3, 0x81, 0xb7, 0xc2, 0xab, 0xe5, 0xf7, 0x28, 0x25, 0xf3, 0xd3, 0x15, 0xbd, 0xac, 0xe6, 0xc3, 0xcf, 0xbd, 0x88, 0xb8, 0x97, 0x68, 0x61, 0x20, 0x05, 0x19, 0x7c, 0x61, 0x66, 0x38, 0x83, 0xf2, 0xc2, 0x57, 0x4f, 0x99, 0x5e, 0xa6, 0xf9, 0x4e, 0xb3, 0x4f, 0x27, 0x68, 0x62, 0xb3, 0x3f, 0x58, 0xa8, 0x83, 0x92, 0x23, 0x70, 0x6b, 0xe1, 0xc1, 0xff, 0x47, 0x23, 0x05, 0xf1, 0x1b, 0xa9, 0x56, 0x2a, 0x0e, 0xb0, 0x12, 0xf1, 0xaa, 0xf8, 0x5c, 0x22, 0xe8, 0x8f, 0x2f, 0xdf, 0xea, 0xff, 0x86, 0x33, 0xd3, 0xcf, 0xeb, 0x5f, 0x76, 0x4f, 0x42, 0x28, 0x92, 0x0d, 0xe3, 0x0c, 0x6b, 0xde, 0x2c, 0xb4, 0xe8, 0xf0, 0x3d, 0x90, 0xed, 0x54, 0x8f, 0x64, 0x85, 0x00, 0x35, 0x1a, 0x5f, 0x41, 0xdf, 0x74, 0xad, 0x65, 0xe8, 0xc3, 0xbe, 0xe9, 0x50, 0x5a, 0x7d, 0x70, 0xe1 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.13", - /* Message */ - 48, - { 0x5a, 0x7f, 0x0e, 0xae, 0xba, 0xe4, 0x9c, 0xf5, 0x7c, 0x47, 0x5a, 0x6d, 0xa6, 0x79, 0x43, 0xa7, 0xd3, 0x04, 0x6e, 0x3f, 0x7c, 0x7d, 0x50, 0xb0, 0x9a, 0x80, 0x98, 0xb5, 0x44, 0x69, 0x39, 0x68, 0x93, 0xcf, 0xc0, 0xb2, 0xf0, 0x8f, 0x6c, 0x2b, 0xff, 0x23, 0x50, 0x51, 0x57, 0x5e, 0x6e, 0x56 } -, - /* Seed */ - 77, - { 0xfb, 0x08, 0x48, 0x86, 0xdb, 0x37, 0x98, 0xd2, 0xb5, 0xbb, 0x35, 0xa3, 0xb1, 0xd3, 0xaf, 0x4f, 0xdf, 0xc0, 0x45, 0x6c, 0xbc, 0x79, 0x7b, 0x96, 0x40, 0xd8, 0xc4, 0x4a, 0x0e, 0x03, 0x4e, 0x40, 0x37, 0x2b, 0x34, 0xfc, 0x7c, 0x1e, 0x8b, 0x66, 0x01, 0x1b, 0x4e, 0xcd, 0xfa, 0xec, 0x6e, 0xe4, 0xcd, 0xc8, 0x28, 0xcb, 0x1a, 0xb4, 0x91, 0x27, 0x4a, 0xc1, 0xe3, 0x9f, 0x67, 0x58, 0x7a, 0x55, 0x47, 0x67, 0x09, 0xb4, 0x02, 0x3f, 0xc5, 0x69, 0xcb, 0xe8, 0xb4, 0xfd, 0x4b } -, - /* Encryption */ - 128, - { 0x07, 0x78, 0x4e, 0xcb, 0x8c, 0xc5, 0xba, 0x02, 0xd2, 0x07, 0xba, 0xb0, 0x55, 0xc0, 0xe5, 0x5d, 0x10, 0xa9, 0xb9, 0x42, 0x70, 0xcc, 0xa2, 0x50, 0xee, 0x75, 0xfa, 0x1b, 0x5a, 0xe1, 0x90, 0xb3, 0x3b, 0x96, 0x96, 0xeb, 0x2e, 0xc9, 0x72, 0xb2, 0x6a, 0x0e, 0x94, 0x23, 0xaf, 0x16, 0xaa, 0x37, 0x89, 0x17, 0x62, 0x76, 0x06, 0x0a, 0x76, 0x40, 0x03, 0x21, 0x11, 0x74, 0x82, 0x96, 0x34, 0x03, 0x4f, 0x97, 0x12, 0xc9, 0x17, 0x10, 0x17, 0xf2, 0xfb, 0x21, 0x3f, 0x25, 0xc1, 0x46, 0xc2, 0x65, 0x1f, 0x89, 0x44, 0x0c, 0xa5, 0x36, 0xe5, 0x33, 0xe3, 0x05, 0xcc, 0x6b, 0x01, 0x13, 0x39, 0x8f, 0x61, 0xb4, 0x63, 0xb0, 0x73, 0xe1, 0xbe, 0x05, 0x07, 0x3e, 0x9d, 0x64, 0xbc, 0xae, 0xea, 0x54, 0x44, 0xb8, 0x20, 0xc6, 0xab, 0xf3, 0x46, 0x54, 0x30, 0xff, 0x4d, 0xe4, 0xa8, 0xbc, 0x0e, 0x75 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.14", - /* Message */ - 47, - { 0xf9, 0x1c, 0x71, 0xaf, 0x5a, 0xea, 0xca, 0xe1, 0x79, 0xe1, 0x6e, 0x87, 0xc9, 0x02, 0x3b, 0xa9, 0x4d, 0x84, 0xd7, 0x51, 0x6c, 0xec, 0x6c, 0x39, 0x89, 0x80, 0x1f, 0xb3, 0xe7, 0xad, 0xd0, 0x64, 0xbd, 0xdf, 0x92, 0x8b, 0x50, 0x00, 0x94, 0x0b, 0xbd, 0xe5, 0x39, 0xd6, 0x23, 0x37, 0x9c } -, - /* Seed */ - 78, - { 0xde, 0xb2, 0x60, 0x25, 0x8b, 0xe2, 0xc8, 0x53, 0x35, 0x21, 0x57, 0xb0, 0x65, 0x26, 0xb1, 0x43, 0xba, 0x13, 0x3c, 0x4f, 0x49, 0xbf, 0x3d, 0xf2, 0xc0, 0x50, 0xec, 0xb2, 0xc9, 0xca, 0x32, 0x53, 0x11, 0xb3, 0xc3, 0xe3, 0xd8, 0x8d, 0xf6, 0xc2, 0x4a, 0x89, 0x4e, 0xab, 0x63, 0x74, 0x5b, 0x62, 0x53, 0xe3, 0xc4, 0x6b, 0xca, 0x17, 0x1a, 0x26, 0xa4, 0xf2, 0xfc, 0x0a, 0xb6, 0x2b, 0x8a, 0x2e, 0x63, 0xa0, 0x18, 0xeb, 0x47, 0x01, 0x8c, 0xab, 0x95, 0x1f, 0x59, 0xf0, 0x20, 0x3a } -, - /* Encryption */ - 128, - { 0x0d, 0xff, 0xff, 0x51, 0x97, 0x10, 0xc9, 0xea, 0xdc, 0x53, 0x3b, 0x10, 0x8a, 0x4c, 0x29, 0x74, 0xfe, 0x53, 0x18, 0x91, 0xa3, 0x41, 0x07, 0xa6, 0x74, 0x27, 0x93, 0x5b, 0xa7, 0x20, 0xcd, 0xc6, 0xf6, 0xee, 0x02, 0x9a, 0x1b, 0x03, 0x68, 0x61, 0xdb, 0x14, 0x04, 0xc5, 0x86, 0x49, 0x90, 0x54, 0x1f, 0xa2, 0x42, 0x13, 0x01, 0xa7, 0xb2, 0x48, 0xcb, 0x11, 0xf3, 0x65, 0xb6, 0xa4, 0xaa, 0x94, 0x6f, 0x22, 0x31, 0xcb, 0xb1, 0x47, 0x32, 0xb0, 0x1a, 0xa4, 0xa6, 0x0b, 0xcb, 0xe5, 0x20, 0xec, 0x6c, 0x38, 0x53, 0xa6, 0x95, 0x8a, 0x93, 0xc5, 0xb6, 0x8b, 0x85, 0xd4, 0xbc, 0x3d, 0x84, 0x15, 0xef, 0x8b, 0x1d, 0x4f, 0x63, 0x03, 0x8f, 0x4d, 0x94, 0x2c, 0xa6, 0xbc, 0x7a, 0x38, 0x25, 0x1f, 0x15, 0xa4, 0xe3, 0x3b, 0x18, 0x9c, 0x25, 0x0b, 0xcf, 0xbc, 0x03, 0x15, 0x6e, 0x4f, 0x92, 0x11 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.15", - /* Message */ - 28, - { 0x07, 0x90, 0xc0, 0x81, 0xf3, 0x61, 0xc9, 0x5b, 0x59, 0xd5, 0x27, 0xd3, 0xcb, 0x50, 0x71, 0x0e, 0x66, 0xe2, 0x72, 0x59, 0x50, 0x10, 0x25, 0xed, 0x3f, 0x20, 0xf3, 0x0c } -, - /* Seed */ - 97, - { 0xfc, 0xfc, 0x2d, 0x56, 0xcb, 0x92, 0x6d, 0x90, 0x5d, 0xb3, 0x6e, 0x1e, 0x2e, 0xff, 0x1f, 0xbb, 0x75, 0xd6, 0x53, 0x51, 0x7f, 0x59, 0xe8, 0x6f, 0x71, 0xbc, 0x4b, 0xc5, 0x57, 0x26, 0xf0, 0x88, 0xb8, 0x21, 0x62, 0x44, 0x83, 0xb3, 0xe2, 0x9a, 0xc2, 0x1a, 0x49, 0xbd, 0x85, 0x91, 0x34, 0x90, 0x8e, 0x6c, 0x0e, 0xc1, 0xa0, 0xdc, 0x80, 0x79, 0x93, 0x01, 0x44, 0x12, 0x0d, 0x1f, 0x6b, 0xf9, 0x3b, 0xc6, 0x27, 0xb9, 0x99, 0x69, 0xb2, 0xaf, 0xe2, 0x1a, 0x7d, 0xe1, 0x0d, 0x96, 0xf6, 0xef, 0x43, 0xc5, 0x67, 0xb5, 0xe2, 0x38, 0x38, 0x5c, 0xc1, 0x1a, 0x5a, 0x2a, 0x13, 0xe1, 0x78, 0x55, 0x8b } -, - /* Encryption */ - 128, - { 0x7f, 0x0e, 0x6b, 0x34, 0x2d, 0x6a, 0x13, 0x54, 0x66, 0xbe, 0x41, 0x73, 0x38, 0x1a, 0xc0, 0x4a, 0xba, 0xab, 0x7e, 0x14, 0xfd, 0xcf, 0x51, 0x01, 0x89, 0x87, 0xe9, 0x69, 0x67, 0x16, 0x9a, 0xea, 0x97, 0x78, 0x03, 0xeb, 0xb3, 0x24, 0x2a, 0xe9, 0xad, 0xb4, 0x6f, 0xf5, 0x11, 0x20, 0x93, 0x4b, 0x39, 0x21, 0x46, 0x31, 0xb0, 0x3f, 0x5a, 0xf5, 0xbd, 0xea, 0x1c, 0xac, 0xd3, 0x28, 0xad, 0xdc, 0xd4, 0x0a, 0x3a, 0x29, 0x96, 0x6b, 0xf9, 0x8b, 0xd7, 0xc8, 0xc6, 0xfd, 0x0f, 0x4e, 0x8b, 0x97, 0x2e, 0x2d, 0xa1, 0x0c, 0x6c, 0xc5, 0x52, 0x05, 0x86, 0x7f, 0x39, 0x04, 0xed, 0x60, 0xf5, 0xb5, 0xbe, 0xdf, 0x7c, 0x3b, 0x3c, 0x7d, 0xd5, 0xf3, 0x87, 0x54, 0x8f, 0x40, 0x05, 0x67, 0x02, 0xea, 0x72, 0x01, 0x76, 0xdc, 0xe2, 0x06, 0xd4, 0x13, 0xd7, 0x42, 0x3f, 0x94, 0x3f, 0xcd, 0xf6, 0x39 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.16", - /* Message */ - 64, - { 0x93, 0xc4, 0x1a, 0x1a, 0xdd, 0xa8, 0xf6, 0x93, 0x60, 0xf4, 0x1a, 0x58, 0xec, 0xa0, 0xb5, 0x5e, 0xcb, 0x37, 0xa6, 0xa9, 0x00, 0xfb, 0xc7, 0xda, 0xcd, 0x9c, 0xa3, 0x99, 0xc2, 0x3d, 0x31, 0x72, 0x61, 0x53, 0x77, 0xac, 0x0c, 0xc6, 0xb0, 0xed, 0x43, 0xbf, 0x59, 0x7f, 0x21, 0xcd, 0x25, 0x9d, 0x8f, 0x80, 0x88, 0x7b, 0x15, 0x9d, 0x96, 0xd6, 0x61, 0x61, 0xd5, 0x58, 0x9b, 0x95, 0xf1, 0xfe } -, - /* Seed */ - 61, - { 0x99, 0x1a, 0x2a, 0x7c, 0x06, 0x1c, 0x23, 0xa8, 0xeb, 0xc9, 0x48, 0x9a, 0xbc, 0x1b, 0x4a, 0x64, 0xa5, 0xd4, 0xe8, 0x38, 0xd9, 0xfc, 0xba, 0x42, 0x88, 0xc0, 0x1f, 0xea, 0xd6, 0x6d, 0x59, 0xf4, 0x96, 0x36, 0xe4, 0xa8, 0xd7, 0x52, 0x4c, 0xb8, 0x9d, 0x7a, 0xdc, 0x7a, 0xf3, 0xf6, 0x1a, 0xe6, 0xb3, 0x9b, 0x58, 0x8f, 0xb7, 0x7e, 0xb7, 0x02, 0x23, 0x62, 0xff, 0xd2, 0x6b } -, - /* Encryption */ - 128, - { 0x7e, 0x54, 0xa4, 0x32, 0xf5, 0x25, 0xc5, 0x23, 0x33, 0xab, 0xe3, 0xbb, 0x45, 0x48, 0x7e, 0x03, 0x9a, 0xf9, 0x4d, 0xd3, 0xef, 0xc3, 0x58, 0x44, 0xdd, 0x8e, 0x83, 0x5e, 0xe1, 0x00, 0x61, 0x78, 0xe2, 0x4d, 0xcd, 0x19, 0xfc, 0x07, 0x66, 0x7b, 0x4a, 0x34, 0xf3, 0xbd, 0x77, 0x1d, 0x09, 0xa7, 0xe2, 0x9f, 0x8c, 0xa1, 0x7e, 0x88, 0xd0, 0x29, 0xb9, 0x0d, 0xdb, 0x5f, 0x28, 0x13, 0xbe, 0x99, 0x00, 0x0d, 0x59, 0xf5, 0x43, 0x2c, 0x46, 0x6a, 0x84, 0x28, 0x75, 0x77, 0x20, 0x4b, 0xf7, 0x65, 0x97, 0x39, 0x27, 0x69, 0x98, 0x30, 0x57, 0x47, 0x66, 0x7f, 0xaf, 0xd8, 0x02, 0x9c, 0xdc, 0xbb, 0x59, 0x18, 0x39, 0x3c, 0x2c, 0xfc, 0xe4, 0xd8, 0x4a, 0x92, 0x20, 0xea, 0x3e, 0x38, 0x19, 0x72, 0x53, 0x36, 0xf2, 0x5f, 0xee, 0x8e, 0x08, 0x5d, 0xeb, 0xed, 0x33, 0x32, 0xd5, 0xdd, 0xf1, 0xee } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.17", - /* Message */ - 60, - { 0x9e, 0x2a, 0x7b, 0x37, 0x74, 0xb1, 0x1e, 0x62, 0xb6, 0x49, 0x0b, 0x56, 0x51, 0xa0, 0xc1, 0x8e, 0x09, 0x2e, 0x9f, 0xab, 0x8b, 0x22, 0x84, 0xae, 0x46, 0x43, 0xbe, 0xc3, 0x6b, 0x26, 0x5e, 0x5b, 0xa3, 0xc5, 0x1a, 0xc3, 0x85, 0xb2, 0xc7, 0x3d, 0x22, 0x0b, 0x2d, 0xc2, 0xe1, 0x0b, 0x0d, 0x69, 0x0f, 0x67, 0x94, 0x5a, 0x0c, 0x42, 0xb3, 0xbd, 0x09, 0xd0, 0xa8, 0xa7 } -, - /* Seed */ - 65, - { 0xa1, 0x8b, 0xfb, 0x74, 0xf6, 0xde, 0xbc, 0xed, 0xcf, 0xb4, 0x7c, 0x7d, 0x5d, 0xbf, 0x10, 0x6e, 0x77, 0x4d, 0x7e, 0xf6, 0x63, 0x8e, 0xc3, 0x82, 0x18, 0x69, 0xcd, 0x2e, 0xd6, 0x2d, 0xd5, 0x32, 0x5f, 0x4e, 0x57, 0x33, 0xb8, 0xbf, 0xd5, 0xfa, 0xfc, 0x43, 0xe4, 0x16, 0x4e, 0x78, 0xd4, 0x38, 0x99, 0x4d, 0x85, 0x33, 0x7d, 0x7f, 0x0d, 0x38, 0xf0, 0xea, 0x3b, 0xa3, 0x7f, 0x4f, 0x41, 0xb6, 0xa7 } -, - /* Encryption */ - 128, - { 0x18, 0xc8, 0x8a, 0xee, 0x25, 0x36, 0xd9, 0x42, 0xf7, 0x62, 0x2a, 0x64, 0x4f, 0xad, 0x6f, 0xec, 0xd3, 0x32, 0x28, 0xc7, 0xae, 0xa0, 0xca, 0xda, 0x0e, 0x53, 0x1f, 0x4c, 0xcb, 0xf1, 0xc1, 0xf2, 0x69, 0xcc, 0x95, 0x86, 0x29, 0xa4, 0x3b, 0x97, 0x52, 0xfc, 0xaf, 0x2b, 0xf9, 0x53, 0xec, 0x9f, 0x7e, 0xf4, 0xbb, 0x0e, 0x62, 0xd1, 0x28, 0xe0, 0xcf, 0x4b, 0xab, 0xe9, 0x2c, 0x6d, 0x92, 0x84, 0x9e, 0x98, 0x38, 0xdd, 0x88, 0xe2, 0xb4, 0x68, 0xbd, 0xce, 0xfc, 0x04, 0xa9, 0xe4, 0xcb, 0x55, 0xe2, 0xa5, 0x18, 0xca, 0x25, 0x9f, 0x9e, 0x81, 0xa4, 0x9f, 0x28, 0xdf, 0x34, 0x76, 0x1f, 0x9d, 0xea, 0x2e, 0x70, 0x59, 0x56, 0x62, 0x62, 0x6c, 0xf9, 0x6a, 0xc0, 0x5a, 0x7c, 0x8b, 0x10, 0x33, 0x33, 0xe9, 0x06, 0xe1, 0x32, 0x63, 0x9b, 0x65, 0xa7, 0x66, 0xf4, 0x09, 0x2c, 0x8c, 0xa0, 0x78 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.18", - /* Message */ - 61, - { 0x0a, 0xc5, 0x2d, 0x40, 0x01, 0xf2, 0x5c, 0x2c, 0x9d, 0xb9, 0x1c, 0xe5, 0x0b, 0xdd, 0xf0, 0xd5, 0x91, 0x9e, 0x19, 0x96, 0x2e, 0x83, 0xb0, 0x7c, 0xb7, 0x9a, 0xdb, 0x00, 0x43, 0x6e, 0x13, 0x66, 0xb0, 0xaa, 0x8f, 0x3f, 0xd1, 0xee, 0x79, 0x6b, 0x23, 0xc8, 0xbc, 0x56, 0x0c, 0xcf, 0xa4, 0xbc, 0xbd, 0xb1, 0xf8, 0x40, 0x4d, 0xd6, 0xf7, 0x55, 0x15, 0x20, 0xd7, 0xd9, 0xe2 } -, - /* Seed */ - 64, - { 0x22, 0xff, 0xdc, 0xfe, 0xc6, 0xf0, 0x6b, 0x1b, 0xbd, 0x14, 0x53, 0x97, 0x70, 0x43, 0xa3, 0x4e, 0xdd, 0xf8, 0x59, 0x4d, 0xa0, 0x22, 0x13, 0x09, 0x14, 0x97, 0x55, 0x42, 0xf2, 0xf0, 0x0e, 0x98, 0xf3, 0x1e, 0x0d, 0xd0, 0xc4, 0x8f, 0x7e, 0xe5, 0xf0, 0x9d, 0x6a, 0x52, 0x71, 0x21, 0xad, 0x23, 0x37, 0x1c, 0x6c, 0xd0, 0xe0, 0x79, 0x0e, 0xb7, 0x30, 0x8b, 0xbb, 0x08, 0x96, 0xdd, 0x59, 0x0d } -, - /* Encryption */ - 128, - { 0xb2, 0x69, 0x57, 0xc5, 0x62, 0x29, 0x4d, 0xe1, 0xf3, 0x93, 0x24, 0xb1, 0xcd, 0x80, 0x3c, 0xfc, 0x39, 0xfc, 0xee, 0x2d, 0x3c, 0x9d, 0x13, 0x79, 0xf8, 0xa1, 0x12, 0x07, 0x9d, 0x69, 0x43, 0x68, 0xf5, 0x55, 0x03, 0xc2, 0x09, 0x4d, 0x98, 0x8a, 0x8a, 0x5b, 0x5a, 0xc5, 0x49, 0xbe, 0x1c, 0xf5, 0x53, 0x16, 0x04, 0x5d, 0xf5, 0xb6, 0xf6, 0x33, 0xa4, 0xef, 0x1e, 0x1f, 0x01, 0x9b, 0xa1, 0xb5, 0x42, 0xbf, 0x0a, 0x87, 0xfa, 0x3e, 0x5c, 0xa3, 0xf6, 0xb6, 0x1c, 0xc8, 0x56, 0x61, 0x28, 0xa0, 0xfa, 0x41, 0x8b, 0x08, 0x25, 0xc9, 0x0e, 0xc2, 0xf1, 0xec, 0x74, 0xe5, 0x87, 0xcd, 0x80, 0x57, 0xd9, 0x52, 0x96, 0x7a, 0xc4, 0x52, 0x1c, 0xcd, 0xbf, 0x63, 0x26, 0xf3, 0x50, 0x93, 0x00, 0x93, 0x82, 0x6d, 0x2e, 0xfa, 0x05, 0x8e, 0xd6, 0x44, 0x15, 0x37, 0x4d, 0xb3, 0x20, 0x48, 0x85, 0xca } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.19", - /* Message */ - 13, - { 0xa8, 0x00, 0x34, 0x62, 0xf8, 0x06, 0xb7, 0xf6, 0x61, 0xfb, 0x66, 0x46, 0x32 } -, - /* Seed */ - 112, - { 0xc7, 0x43, 0xf4, 0xa6, 0xda, 0x03, 0xab, 0x2d, 0xe5, 0xa7, 0x31, 0xcb, 0x88, 0xd8, 0xca, 0x9b, 0x61, 0xc7, 0x31, 0x9a, 0x5f, 0x8b, 0xf9, 0xd2, 0x37, 0x87, 0x7a, 0x05, 0xd0, 0xf3, 0x68, 0xc3, 0x60, 0x8a, 0x05, 0x2a, 0xc6, 0xce, 0x13, 0x73, 0x17, 0x95, 0x47, 0x55, 0x42, 0xea, 0x16, 0xa8, 0x62, 0x91, 0x3d, 0x04, 0x32, 0xf0, 0x8b, 0xd8, 0xc8, 0xb6, 0xff, 0x81, 0x95, 0x69, 0x1f, 0xee, 0x5e, 0xd1, 0x42, 0xfb, 0x9e, 0xca, 0x94, 0x67, 0x52, 0x4b, 0xd3, 0xb5, 0xfa, 0x5a, 0x4a, 0xc6, 0x14, 0x3b, 0x0d, 0x38, 0x25, 0x0a, 0xe6, 0x21, 0xd4, 0x39, 0x90, 0x9c, 0xbe, 0x3a, 0x6b, 0x5c, 0x01, 0xfb, 0xea, 0x2d, 0x7a, 0x3f, 0x1a, 0xe4, 0x1d, 0x61, 0xfd, 0xd6, 0x47, 0x64, 0x14, 0x9f } -, - /* Encryption */ - 128, - { 0xb7, 0x38, 0xe1, 0xc4, 0x29, 0xf8, 0xfc, 0x06, 0x82, 0xfa, 0xad, 0xc8, 0xca, 0x87, 0xed, 0x8f, 0x16, 0xdf, 0x93, 0x0f, 0xaf, 0x43, 0xb1, 0x99, 0x1a, 0xac, 0x71, 0xd8, 0x8f, 0x26, 0x4c, 0x0d, 0x82, 0x9a, 0xc0, 0x3d, 0x23, 0xc2, 0x5f, 0xc5, 0xf3, 0xe8, 0x5d, 0xd3, 0x02, 0xcb, 0x7b, 0x15, 0x33, 0xe6, 0x8c, 0x24, 0x16, 0xc5, 0x1a, 0x79, 0xbb, 0xcc, 0x7c, 0x29, 0xb0, 0x7e, 0x2e, 0x0e, 0x23, 0xc6, 0xf2, 0xdf, 0x0d, 0x07, 0x81, 0x91, 0x7e, 0xba, 0x1a, 0x57, 0x08, 0x62, 0x8e, 0xed, 0x8a, 0x15, 0xb3, 0xb1, 0x84, 0xaf, 0x70, 0x0d, 0x0d, 0xab, 0xb1, 0x4d, 0xf6, 0x0b, 0x09, 0xba, 0xd2, 0x12, 0x7d, 0xf1, 0x80, 0xf4, 0xd6, 0xf7, 0x29, 0x65, 0x87, 0x60, 0xd6, 0x33, 0xc7, 0x77, 0x5a, 0x7b, 0x59, 0x6d, 0x09, 0xd9, 0x03, 0x49, 0x1f, 0x21, 0x09, 0x6c, 0x34, 0xc3, 0x95, 0x3b } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 3.20", - /* Message */ - 2, - { 0xef, 0x32 } -, - /* Seed */ - 123, - { 0x43, 0x99, 0xcb, 0x04, 0x4a, 0x60, 0x07, 0x6d, 0x18, 0xcc, 0xb3, 0x4e, 0x8b, 0x07, 0x8c, 0x81, 0x8e, 0xa7, 0x7f, 0x63, 0xb0, 0xa4, 0x3a, 0xbd, 0xec, 0xc5, 0x77, 0x81, 0x93, 0xa8, 0xbb, 0xba, 0x5d, 0x56, 0xd0, 0xfc, 0x4e, 0x82, 0xa2, 0x11, 0x51, 0x6b, 0xbd, 0xef, 0x44, 0xe7, 0xf4, 0xe7, 0xfe, 0xbb, 0xe1, 0xe1, 0x92, 0x3c, 0x99, 0x9a, 0x7e, 0x96, 0x1c, 0xd6, 0xee, 0x1c, 0x41, 0x6a, 0x85, 0x96, 0xe2, 0x4b, 0x63, 0x83, 0xa4, 0x69, 0x93, 0x5f, 0x33, 0xd1, 0x56, 0xfd, 0x5b, 0xcf, 0xdb, 0xd4, 0x27, 0x46, 0x0d, 0x48, 0x66, 0x83, 0x06, 0x1e, 0x41, 0x05, 0xf3, 0x5b, 0x5e, 0x75, 0x23, 0x20, 0x15, 0x5c, 0x7f, 0x69, 0xad, 0x8e, 0xb4, 0x02, 0xcc, 0x11, 0x06, 0xe0, 0x28, 0x9a, 0x9b, 0x49, 0x65, 0x82, 0x3e, 0x7a, 0x51, 0xcf, 0xe4, 0xd2, 0x6d } -, - /* Encryption */ - 128, - { 0x13, 0x1b, 0x62, 0x5e, 0x86, 0xe6, 0xcd, 0x1e, 0x08, 0xac, 0xf1, 0x95, 0xd9, 0x3c, 0xd3, 0xa0, 0xdc, 0x8b, 0xa9, 0xe2, 0xdc, 0xd6, 0xfc, 0x99, 0x6b, 0xe2, 0x17, 0x24, 0xaf, 0x17, 0x90, 0xb6, 0x88, 0xd7, 0x9d, 0x3e, 0xa9, 0xa9, 0x50, 0x98, 0xca, 0xbb, 0xe8, 0xa5, 0xd4, 0x85, 0x92, 0xe4, 0x74, 0x6b, 0x0e, 0xd2, 0xaf, 0x7c, 0xaf, 0x89, 0xb7, 0xb6, 0x15, 0x2e, 0x38, 0x24, 0xd9, 0x15, 0x89, 0xee, 0xec, 0x33, 0x75, 0xc7, 0x1a, 0x89, 0x97, 0x48, 0x70, 0x3a, 0xcc, 0x1e, 0x8d, 0x1d, 0xe4, 0x71, 0xea, 0x75, 0x28, 0x04, 0x0b, 0x79, 0x5f, 0x29, 0x9e, 0x66, 0x8c, 0xec, 0x9f, 0x5a, 0xf3, 0xeb, 0x48, 0xf9, 0x8c, 0x0d, 0x85, 0x20, 0x67, 0x77, 0x3e, 0x10, 0x1f, 0xa2, 0x4a, 0xeb, 0x6b, 0x40, 0x4d, 0xaf, 0xb4, 0x2e, 0x7a, 0x63, 0xb0, 0x4a, 0x66, 0xbd, 0x0e, 0x9f, 0x9c, 0x94 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 4: A 1024-bit RSA key pair", -{ - /* Modulus */ - 128, - { 0xe9, 0xf2, 0x5e, 0x48, 0x14, 0x0b, 0x5d, 0xcf, 0x46, 0x99, 0xe3, 0x03, 0x7f, 0xa8, 0x34, 0xf0, 0xc7, 0x8b, 0x16, 0x73, 0x5f, 0xf7, 0x9f, 0x6b, 0x18, 0xae, 0x60, 0xb5, 0x18, 0x48, 0xd3, 0x06, 0x99, 0xec, 0x64, 0x6d, 0x85, 0x7f, 0x15, 0x77, 0x0e, 0x2c, 0x7a, 0x0c, 0x0c, 0x90, 0x0f, 0xb6, 0x04, 0x0b, 0x5f, 0x34, 0x48, 0x4e, 0x9c, 0xf5, 0xce, 0xda, 0x23, 0xd5, 0xb2, 0x50, 0xef, 0x93, 0x28, 0x6f, 0x01, 0x1e, 0x9a, 0x5b, 0xf9, 0xe5, 0x42, 0xe5, 0xc9, 0xf4, 0x42, 0xde, 0x54, 0x58, 0xe2, 0x3e, 0x41, 0xd1, 0xd9, 0xcd, 0x9f, 0x0c, 0xe1, 0xcf, 0x20, 0x08, 0xd3, 0xea, 0x4d, 0x80, 0x32, 0xe8, 0x54, 0xcf, 0xfc, 0xdf, 0x5f, 0x69, 0x8d, 0x13, 0x16, 0xe0, 0x29, 0xc4, 0x88, 0xfc, 0xbb, 0x2b, 0xe2, 0x9a, 0x4e, 0x7b, 0xfb, 0x8e, 0x6e, 0x81, 0xd3, 0x42, 0x12, 0x3e, 0xe7, 0x5b } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x45, 0x45, 0x88, 0x68, 0x44, 0x53, 0x27, 0x48, 0x60, 0x49, 0xe1, 0xbf, 0xdf, 0xf5, 0x61, 0x13, 0xa8, 0xaa, 0x45, 0x10, 0x0d, 0xab, 0x07, 0x4f, 0xd1, 0x63, 0x94, 0xec, 0x1a, 0x90, 0x39, 0xb8, 0x1b, 0x2c, 0xb5, 0x81, 0xfe, 0x84, 0xe6, 0x48, 0xb5, 0xf0, 0x32, 0x85, 0x4d, 0xd4, 0xfc, 0x69, 0xf3, 0x61, 0xa0, 0xa3, 0x9d, 0x03, 0x76, 0x13, 0x8c, 0xd7, 0xe7, 0xc3, 0x77, 0x84, 0xe2, 0xa2, 0xf9, 0xd4, 0xf2, 0x66, 0x84, 0xcc, 0x5c, 0xc9, 0xf5, 0x12, 0xba, 0x62, 0x15, 0xeb, 0xd2, 0x32, 0xf9, 0xaa, 0x3d, 0xa4, 0x69, 0xdb, 0x43, 0xda, 0x1c, 0x06, 0x46, 0xe7, 0x5b, 0x33, 0xaa, 0xc5, 0x70, 0x08, 0x1b, 0x5b, 0x2e, 0x96, 0xea, 0xb7, 0x54, 0x6a, 0xcf, 0x93, 0x17, 0x85, 0xaa, 0x2f, 0xd1, 0x82, 0x4c, 0xbe, 0x2c, 0x5f, 0x9b, 0xf5, 0x63, 0x34, 0xec, 0x15, 0x66, 0xd1, 0xcf, 0x45 } -, - /* Prime 1 */ - 64, - { 0xfc, 0xdf, 0x1c, 0x49, 0x35, 0x8a, 0x1a, 0xac, 0x93, 0x88, 0xc4, 0x6c, 0xaa, 0x04, 0x72, 0xfa, 0x35, 0xb2, 0x1b, 0xdf, 0x99, 0xa2, 0x7b, 0xc2, 0xac, 0x65, 0x46, 0x7b, 0x88, 0xd0, 0x16, 0x1f, 0xbc, 0x70, 0xf3, 0xf4, 0xfa, 0x13, 0xa5, 0xf3, 0xa9, 0x8b, 0x59, 0xc0, 0x67, 0xea, 0xbf, 0x19, 0x62, 0x16, 0xa1, 0xb8, 0x9e, 0x20, 0xaf, 0xb2, 0xe5, 0xe5, 0xed, 0xde, 0xae, 0x8e, 0xe1, 0xef } -, - /* Prime 2 */ - 64, - { 0xec, 0xd7, 0x51, 0xd3, 0xd3, 0xf3, 0xb2, 0x08, 0xbd, 0x71, 0x8a, 0xe4, 0x35, 0x5d, 0x23, 0xf9, 0x16, 0xfa, 0x8f, 0xf6, 0x7d, 0xf0, 0x36, 0x61, 0x6b, 0xfd, 0xa7, 0xcb, 0xc8, 0x7a, 0xeb, 0xef, 0xaa, 0x7e, 0xda, 0x69, 0x1f, 0xb9, 0x8f, 0xbb, 0x03, 0x8a, 0x02, 0x07, 0x22, 0x01, 0x3c, 0xa8, 0xee, 0x3d, 0x04, 0x8f, 0x97, 0xba, 0xd2, 0xa2, 0x93, 0x0b, 0xe4, 0xb9, 0x6f, 0xb7, 0x4d, 0x55 } -, - /* Prime exponent 1 */ - 64, - { 0x1d, 0x2f, 0x73, 0x08, 0x50, 0x11, 0x9c, 0x7a, 0x86, 0x9c, 0xa6, 0x6f, 0x14, 0x40, 0x67, 0x34, 0xd1, 0xb5, 0xb8, 0xd9, 0xd9, 0xd5, 0x93, 0x0b, 0x28, 0xf2, 0x97, 0x6b, 0xf2, 0xa2, 0x71, 0xab, 0x40, 0x08, 0x99, 0x5f, 0x90, 0xed, 0x6b, 0x9d, 0xef, 0xd7, 0x91, 0x88, 0x4f, 0x76, 0x1c, 0x90, 0x45, 0x6d, 0xef, 0x44, 0x6b, 0x9b, 0xc2, 0x2b, 0x97, 0xb5, 0x2d, 0xfb, 0x21, 0x92, 0x84, 0x29 } -, - /* Prime exponent 2 */ - 64, - { 0x4d, 0x50, 0x95, 0x03, 0xc3, 0x83, 0x20, 0x31, 0x3e, 0x36, 0x9c, 0x92, 0x96, 0xe1, 0x0a, 0xe7, 0x3b, 0x9b, 0x1b, 0xf7, 0xe9, 0x70, 0xcb, 0x2f, 0xce, 0x63, 0x05, 0xad, 0xbe, 0x8a, 0x72, 0x0e, 0xd0, 0xe7, 0x8c, 0x41, 0x18, 0xfc, 0x28, 0x71, 0x72, 0x5c, 0x51, 0x01, 0x27, 0x16, 0xa4, 0x48, 0xb9, 0x4c, 0xed, 0xfa, 0x3a, 0x1b, 0xe0, 0xba, 0xf5, 0xa9, 0xc2, 0x46, 0xce, 0xb3, 0x55, 0xe9 } -, - /* Coefficient */ - 64, - { 0xbc, 0x15, 0xf4, 0x7c, 0x0b, 0xb6, 0xde, 0x6a, 0x7a, 0x3a, 0x1f, 0xe9, 0x28, 0x89, 0x80, 0x9b, 0x4a, 0x3c, 0x0c, 0xfa, 0x65, 0x0c, 0x2f, 0xec, 0x36, 0xb8, 0x92, 0x85, 0x14, 0x65, 0x47, 0xa5, 0x7d, 0x2b, 0x15, 0x71, 0xac, 0xb9, 0xd3, 0x0a, 0xa7, 0x91, 0xec, 0x97, 0xfd, 0x51, 0xfd, 0xe1, 0xec, 0x26, 0xf5, 0x6b, 0x32, 0x63, 0xda, 0xec, 0x9e, 0x29, 0x2e, 0x9c, 0x17, 0x37, 0x36, 0x4b } - -} -, -{{ - "PKCS#1 v1.5 Encryption Example 4.1", - /* Message */ - 29, - { 0xca, 0x24, 0x72, 0x1c, 0x88, 0xe0, 0x47, 0x74, 0xf4, 0x15, 0xb4, 0xc4, 0x6c, 0xa0, 0xfc, 0x26, 0xd5, 0xbb, 0x53, 0xaa, 0xfb, 0x19, 0x92, 0xf6, 0xde, 0x78, 0x5c, 0x76, 0x3a } -, - /* Seed */ - 96, - { 0xfc, 0x7f, 0x85, 0xc1, 0x38, 0x6d, 0xc4, 0x3c, 0x3a, 0x28, 0x46, 0xe4, 0xda, 0xe4, 0xd9, 0x54, 0x80, 0x54, 0x45, 0x9d, 0xa2, 0x31, 0x82, 0xf9, 0x84, 0x07, 0x9b, 0x07, 0x1f, 0xdb, 0x5e, 0x6d, 0x9d, 0x0f, 0xa0, 0xb2, 0x2e, 0x3d, 0xe6, 0x36, 0xee, 0x5b, 0x25, 0x3a, 0x42, 0xf9, 0x5e, 0xed, 0x44, 0x22, 0x95, 0x6c, 0x70, 0xf4, 0x8d, 0xfe, 0xcf, 0x0e, 0x55, 0x5b, 0x05, 0x15, 0x7b, 0x15, 0x6a, 0x55, 0xc8, 0xbc, 0x65, 0x8c, 0xd3, 0xb5, 0x39, 0x7f, 0xab, 0x78, 0xd7, 0x11, 0x56, 0x4e, 0x89, 0xc7, 0xe6, 0x24, 0x8a, 0xa0, 0x6a, 0xd1, 0x05, 0xc4, 0x0c, 0x31, 0xc4, 0xb1, 0x99, 0x7d } -, - /* Encryption */ - 128, - { 0xe3, 0x95, 0xff, 0x1f, 0xa5, 0x52, 0xfc, 0x2e, 0x79, 0xc4, 0xa5, 0x35, 0x58, 0xdf, 0x14, 0x00, 0xf8, 0x70, 0x4e, 0xb3, 0x6c, 0xf7, 0xcb, 0x05, 0x1b, 0xab, 0x93, 0x15, 0x0a, 0xc6, 0x39, 0x6a, 0xdd, 0x63, 0x66, 0x9b, 0x04, 0x24, 0x8b, 0x9d, 0xb3, 0x6a, 0x9c, 0x94, 0xf5, 0x19, 0x8c, 0x6e, 0x5d, 0x9a, 0x17, 0xd4, 0x74, 0xed, 0xb2, 0x03, 0x45, 0xfd, 0x6a, 0x78, 0xb5, 0x1d, 0xe8, 0x16, 0x6e, 0x98, 0xca, 0xb5, 0xb6, 0xd1, 0x65, 0x68, 0xb4, 0x1a, 0x8e, 0x93, 0xe4, 0x83, 0x88, 0x65, 0xd4, 0xbd, 0x9c, 0x51, 0xcd, 0xe8, 0xdf, 0xbe, 0xee, 0xa5, 0x88, 0x2b, 0x09, 0xdc, 0x70, 0xbc, 0x9f, 0xe7, 0x49, 0xb5, 0xd2, 0x4b, 0xb7, 0xca, 0x51, 0x1d, 0xb2, 0xc2, 0xb8, 0x29, 0xa7, 0xc9, 0x14, 0x6c, 0x77, 0x4e, 0xb0, 0xbd, 0x7a, 0xaf, 0xdc, 0x5c, 0x38, 0xd3, 0xd7, 0xcd, 0x58, 0x27 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Encryption Example 4.2", - /* Message */ - 40, - { 0x25, 0xc7, 0xbc, 0x4c, 0xb2, 0x43, 0xac, 0x1f, 0x07, 0x40, 0x86, 0x9c, 0xd2, 0x6b, 0xa8, 0x26, 0xf3, 0x55, 0xd4, 0x77, 0xc4, 0xaa, 0x6c, 0xbe, 0x54, 0x3a, 0xdd, 0xea, 0x84, 0x44, 0x44, 0xf4, 0x1c, 0x35, 0x92, 0xbb, 0x3d, 0xa7, 0xd4, 0x21 } -, - /* Seed */ - 85, - { 0x27, 0x2b, 0xe3, 0xfb, 0xcc, 0x76, 0x14, 0x99, 0x6f, 0x1a, 0xc0, 0xe0, 0xa5, 0xe2, 0x69, 0x06, 0x23, 0xbb, 0x0b, 0x69, 0x70, 0xfc, 0xde, 0x0b, 0x6f, 0x45, 0x58, 0xee, 0x62, 0x34, 0x26, 0xfa, 0x60, 0xad, 0xd6, 0xc5, 0xa8, 0xa1, 0x0d, 0x4a, 0x37, 0x51, 0x50, 0x15, 0x36, 0xfe, 0x8a, 0x45, 0xc5, 0x42, 0xf6, 0x27, 0xf4, 0x22, 0x9f, 0xa1, 0x24, 0x57, 0xc1, 0x13, 0x31, 0x13, 0x72, 0x05, 0x55, 0x2b, 0x01, 0x4c, 0x91, 0xb1, 0xc4, 0xe0, 0x9e, 0x45, 0x96, 0x78, 0x34, 0x0a, 0x74, 0xc2, 0x85, 0xe2, 0x6a, 0xef, 0xb9 } -, - /* Encryption */ - 128, - { 0x76, 0x50, 0xd6, 0xf8, 0x1a, 0xef, 0x5c, 0x0e, 0x32, 0x0e, 0xc7, 0x7f, 0xc8, 0x9b, 0x7c, 0x3e, 0x61, 0x83, 0x85, 0x0d, 0x10, 0xc9, 0x8a, 0xd7, 0xe9, 0xfe, 0xea, 0x47, 0xe3, 0x8c, 0xfb, 0x37, 0xa0, 0x25, 0xdb, 0x42, 0x1f, 0xb6, 0xd0, 0x05, 0x80, 0x9e, 0x38, 0xbb, 0x3c, 0x51, 0x95, 0x1d, 0xa9, 0xd9, 0x43, 0x3b, 0xa7, 0xef, 0xb1, 0x7d, 0xe7, 0xd8, 0xfe, 0x3e, 0x9b, 0x9c, 0xe4, 0x55, 0x53, 0x74, 0xea, 0x66, 0x3a, 0x1b, 0x5d, 0xa4, 0xa0, 0x92, 0x29, 0x4c, 0xe9, 0x66, 0x98, 0x56, 0x55, 0xe2, 0xdd, 0xd2, 0x0d, 0x7d, 0xe3, 0xaa, 0x35, 0x37, 0x05, 0x8c, 0xfd, 0x7e, 0x7a, 0x7b, 0x97, 0xfc, 0xdd, 0x98, 0x53, 0x79, 0x2b, 0xa8, 0x3f, 0xcc, 0x89, 0x07, 0x4a, 0x8d, 0x0f, 0x3c, 0xef, 0xdf, 0x98, 0x5b, 0x9e, 0x78, 0xae, 0xbf, 0xb0, 0x59, 0x67, 0x36, 0x4f, 0x24, 0x11, 0xcd } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.3", - /* Message */ - 20, - { 0xcf, 0x00, 0x7e, 0xbd, 0x23, 0xda, 0x06, 0x97, 0x1a, 0xf7, 0x9a, 0xa6, 0x34, 0xd5, 0xd2, 0x55, 0x05, 0xbd, 0x52, 0x29 } -, - /* Seed */ - 105, - { 0x9c, 0xf7, 0x23, 0x7e, 0x28, 0xa8, 0x6e, 0x41, 0x8d, 0x66, 0x4f, 0xe3, 0xbe, 0x7a, 0xe3, 0x0e, 0xeb, 0x95, 0x5a, 0x3f, 0x71, 0x02, 0xb2, 0x7d, 0x5f, 0xa0, 0x96, 0x74, 0x9c, 0x7f, 0xc2, 0x06, 0x4c, 0x88, 0x0b, 0xf3, 0xd3, 0x0e, 0xaa, 0x98, 0x1f, 0xce, 0x39, 0x86, 0xa9, 0x10, 0xfe, 0xea, 0xe1, 0x84, 0xc0, 0x10, 0x25, 0x04, 0x8b, 0xa6, 0x79, 0x48, 0x96, 0xfc, 0xcf, 0xf7, 0x4a, 0x59, 0x42, 0xf9, 0x62, 0xf3, 0xe3, 0x63, 0x71, 0xf6, 0xb3, 0x55, 0x18, 0x29, 0x43, 0x4a, 0xd8, 0xd0, 0x0a, 0x2c, 0x59, 0x7c, 0xf6, 0xd4, 0x51, 0xea, 0xce, 0x88, 0x86, 0x85, 0x38, 0xa4, 0x80, 0xf6, 0x8c, 0xe6, 0x8f, 0xc6, 0x85, 0x6e, 0xbb, 0x57, 0xdc } -, - /* Encryption */ - 128, - { 0xb6, 0x32, 0x52, 0xaf, 0x2e, 0x8e, 0xa2, 0x71, 0xe7, 0x06, 0xfd, 0x68, 0x3d, 0x0f, 0x8c, 0x10, 0xb3, 0xf4, 0xa3, 0x45, 0xc4, 0xf5, 0xb6, 0x78, 0x5b, 0xa9, 0x32, 0x9f, 0x44, 0x62, 0x43, 0xc6, 0xf3, 0x69, 0xe3, 0x0e, 0xa8, 0xfb, 0x11, 0x08, 0x4d, 0xb9, 0x79, 0x88, 0xe9, 0xc3, 0x87, 0x4b, 0x34, 0xd6, 0xfd, 0x08, 0x71, 0x7d, 0x9e, 0x81, 0x0e, 0x9c, 0x22, 0x43, 0x60, 0x34, 0x6b, 0xec, 0xcd, 0x3e, 0x0e, 0x53, 0xd1, 0x0b, 0x1e, 0xd4, 0x58, 0xe6, 0x4f, 0x3f, 0xb0, 0x92, 0xf4, 0x8c, 0xb6, 0x6a, 0xe0, 0x3b, 0x64, 0xf6, 0xaa, 0x9c, 0x63, 0xbd, 0x27, 0x9f, 0xae, 0x4c, 0x33, 0xf4, 0x2a, 0x9d, 0x73, 0xbb, 0x39, 0x11, 0x8e, 0xb8, 0x7d, 0x25, 0x12, 0xb9, 0xd9, 0x36, 0xa2, 0x7e, 0xd2, 0xe4, 0x49, 0x60, 0x7d, 0xbf, 0x0e, 0x3e, 0x22, 0x3a, 0x53, 0x95, 0x26, 0x35, 0x59, 0x9c } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.4", - /* Message */ - 34, - { 0xef, 0xda, 0x79, 0xe9, 0xc3, 0x36, 0xc2, 0x34, 0xff, 0x37, 0xb4, 0xf5, 0x8f, 0xdb, 0xd3, 0x1a, 0xf3, 0x67, 0x5b, 0x3d, 0x2b, 0x10, 0x5e, 0xaf, 0xbe, 0xad, 0x4b, 0xbb, 0xff, 0xf5, 0x4e, 0x68, 0x6a, 0xb5 } -, - /* Seed */ - 91, - { 0x30, 0xc2, 0x09, 0x43, 0xf1, 0xbf, 0xc4, 0x23, 0x61, 0xd4, 0xd2, 0x2f, 0x51, 0xa8, 0xd7, 0x86, 0xcb, 0x2d, 0x0d, 0xd5, 0xff, 0x7d, 0x70, 0x5b, 0x30, 0x28, 0x60, 0x18, 0x11, 0x29, 0x3d, 0xbe, 0x5d, 0x72, 0xc3, 0x55, 0x97, 0x10, 0xce, 0x0a, 0xe9, 0x5d, 0x2f, 0x16, 0xb2, 0x39, 0xa4, 0xac, 0x84, 0x45, 0x53, 0x7d, 0x48, 0x8e, 0x3e, 0x6d, 0x2c, 0xf5, 0xb7, 0xa6, 0x4c, 0x06, 0xc3, 0x75, 0x6e, 0x11, 0x60, 0x67, 0x63, 0x63, 0x3e, 0xdb, 0xdd, 0xbf, 0x26, 0xbe, 0xe6, 0x51, 0x18, 0x42, 0xd2, 0x75, 0x2d, 0xcd, 0x88, 0x89, 0x6c, 0xb8, 0x55, 0x8a, 0x87 } -, - /* Encryption */ - 128, - { 0xbb, 0x91, 0xb2, 0xf6, 0xf4, 0x33, 0x1d, 0x64, 0xd0, 0x73, 0x6a, 0x2e, 0xa6, 0x03, 0x29, 0xaa, 0x16, 0xc2, 0xed, 0x7a, 0x4d, 0x5c, 0xa8, 0xd7, 0x84, 0xe6, 0x30, 0x4c, 0xe4, 0x84, 0x4c, 0x71, 0x58, 0xf8, 0x22, 0xd2, 0xaf, 0x29, 0xc8, 0x90, 0x97, 0x7d, 0x75, 0xa9, 0x35, 0xe4, 0x3d, 0x93, 0xb5, 0xbe, 0x10, 0xc1, 0xd4, 0x4f, 0xa0, 0x0c, 0xe2, 0x8e, 0x75, 0xf5, 0x27, 0xbd, 0x84, 0xa3, 0xbe, 0x5a, 0xf5, 0xbe, 0xe9, 0x45, 0x67, 0xc5, 0x5e, 0x15, 0xee, 0x3e, 0x93, 0x42, 0x6a, 0xd8, 0xd5, 0x0f, 0x06, 0x4c, 0x57, 0x93, 0xca, 0x38, 0xc4, 0x3a, 0x70, 0xc5, 0xf5, 0x60, 0x74, 0x0b, 0x16, 0xee, 0xa1, 0x6b, 0x7f, 0x13, 0x41, 0x5f, 0x75, 0x1b, 0x3f, 0xdb, 0x87, 0x7a, 0x88, 0x29, 0x33, 0x21, 0xf5, 0x0f, 0xff, 0xa6, 0xf1, 0x24, 0x94, 0x96, 0xc2, 0xb0, 0x27, 0xa2, 0x18, 0xed } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.5", - /* Message */ - 52, - { 0x4a, 0x01, 0xfc, 0x13, 0xc1, 0xd8, 0x6f, 0xe7, 0xb2, 0xfd, 0xc7, 0x92, 0xf5, 0x28, 0x0f, 0x87, 0x5a, 0xdc, 0x5a, 0xe9, 0x9f, 0xf9, 0x11, 0xd0, 0x2c, 0x8c, 0x00, 0x3d, 0x39, 0xbb, 0xee, 0x54, 0xb8, 0x51, 0xef, 0xa3, 0x4b, 0x41, 0x31, 0xbe, 0x52, 0x0d, 0x81, 0x00, 0xef, 0x62, 0xc2, 0x5a, 0x4b, 0x51, 0x7e, 0x9b } -, - /* Seed */ - 73, - { 0xbe, 0x6b, 0xa5, 0xd1, 0x1d, 0xf1, 0xbf, 0xcb, 0x2b, 0x84, 0x67, 0x71, 0xb6, 0xc9, 0xdf, 0xc9, 0x33, 0x4d, 0xa8, 0x6c, 0x4b, 0x7c, 0x25, 0x43, 0x93, 0x18, 0xe8, 0xba, 0x8e, 0x47, 0x49, 0x2b, 0xcd, 0x51, 0x1b, 0xd4, 0xca, 0xe1, 0x67, 0x7d, 0x31, 0x2c, 0xa2, 0x2a, 0x94, 0x57, 0xcc, 0x81, 0xd9, 0x0e, 0x4d, 0x52, 0x4b, 0xa2, 0x26, 0x5f, 0x0f, 0xbc, 0xa1, 0x8e, 0x3c, 0x3f, 0x48, 0x2d, 0xca, 0xa7, 0x88, 0x33, 0x22, 0x39, 0x34, 0x6d, 0x6f } -, - /* Encryption */ - 128, - { 0x16, 0xbf, 0xcf, 0xb4, 0x2d, 0x28, 0xb9, 0xd1, 0x62, 0x70, 0xcd, 0x13, 0x8d, 0xc3, 0xca, 0x64, 0x42, 0x95, 0x6a, 0x41, 0x82, 0x5e, 0xd0, 0x23, 0x0b, 0x71, 0x09, 0x16, 0x13, 0x33, 0x3a, 0x9e, 0x7c, 0x52, 0xce, 0x8c, 0xc4, 0xb0, 0xbf, 0x29, 0x10, 0x79, 0x41, 0xa0, 0xd7, 0x2c, 0xc3, 0x4a, 0xfd, 0x00, 0x48, 0xbb, 0xf4, 0xc7, 0x16, 0xc7, 0x3a, 0xa9, 0xb0, 0xc7, 0x8d, 0x37, 0xc1, 0x93, 0x71, 0x9e, 0xbe, 0x03, 0xa9, 0x31, 0x74, 0x53, 0xb5, 0x53, 0xd4, 0xf5, 0xb3, 0x85, 0xd1, 0x41, 0xfc, 0x3b, 0x0e, 0xd1, 0x9b, 0x96, 0xdc, 0x35, 0x0d, 0xfd, 0x4d, 0x12, 0xe3, 0xdd, 0x03, 0xff, 0x18, 0x39, 0xd4, 0x78, 0x2c, 0x6d, 0xfd, 0x5f, 0xdf, 0x59, 0x71, 0xf3, 0xdd, 0xb0, 0xe3, 0x12, 0xa9, 0x16, 0x06, 0xf3, 0x13, 0x73, 0x02, 0x0d, 0xb3, 0xa7, 0x6d, 0x04, 0xfd, 0x6d, 0x65, 0xd6 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.6", - /* Message */ - 7, - { 0x7a, 0xb0, 0x6e, 0x19, 0x69, 0x22, 0xc0 } -, - /* Seed */ - 118, - { 0xde, 0x0d, 0x60, 0x33, 0xc1, 0xe9, 0x6b, 0x5f, 0xd8, 0x31, 0x21, 0x4f, 0x30, 0xd8, 0x1b, 0x8f, 0xd9, 0xa2, 0x69, 0x3e, 0x5e, 0x8a, 0x36, 0xea, 0xff, 0xd0, 0x39, 0xe7, 0x47, 0x3c, 0x28, 0xee, 0x43, 0xa3, 0x91, 0x6c, 0x78, 0xc9, 0xa1, 0x12, 0x95, 0x8a, 0x94, 0xce, 0x67, 0x1c, 0xcc, 0x40, 0xd9, 0x7e, 0xd4, 0x18, 0x7a, 0x3f, 0xff, 0xa0, 0xdc, 0x12, 0x9d, 0x88, 0xa8, 0xb8, 0xc4, 0x96, 0x6e, 0xa3, 0x94, 0xa9, 0x10, 0x89, 0x61, 0x25, 0xf5, 0x4d, 0xaf, 0xbb, 0x3b, 0x17, 0xb9, 0xfa, 0x10, 0xc4, 0x82, 0x20, 0x09, 0x64, 0x90, 0xc6, 0xf7, 0x5b, 0xe2, 0x51, 0x83, 0xe9, 0x98, 0x4d, 0xf5, 0xe4, 0xd7, 0xeb, 0xf9, 0x47, 0x5d, 0x11, 0xea, 0x39, 0x33, 0x5a, 0xc7, 0x2f, 0x93, 0xd3, 0x33, 0xbd, 0x74, 0x22, 0x19, 0x42 } -, - /* Encryption */ - 128, - { 0x54, 0x18, 0x23, 0xf9, 0x05, 0x57, 0x6d, 0xa1, 0x42, 0xe2, 0x65, 0xd8, 0x90, 0x45, 0xab, 0x66, 0x20, 0xfd, 0x1a, 0x74, 0xc9, 0x53, 0x3a, 0xda, 0x4b, 0xc7, 0xb4, 0x3d, 0x95, 0x62, 0x9a, 0x31, 0x18, 0x6f, 0x4e, 0x89, 0x89, 0x20, 0x83, 0xd2, 0x54, 0x9b, 0x0e, 0x63, 0x8b, 0xdf, 0xc0, 0xd2, 0x7e, 0x14, 0xec, 0x18, 0xc4, 0x5c, 0xa3, 0x58, 0x61, 0xdf, 0xe6, 0x12, 0xa3, 0xa1, 0xed, 0xaa, 0xfc, 0x72, 0xfb, 0x46, 0x81, 0xa9, 0x9e, 0xa6, 0xe6, 0x48, 0xbe, 0x89, 0x62, 0xf1, 0x56, 0x1e, 0x75, 0x0d, 0x14, 0x49, 0xf2, 0x3f, 0x43, 0x0a, 0xf9, 0x30, 0x72, 0x25, 0x54, 0x4d, 0x8a, 0x8b, 0x89, 0x65, 0xaf, 0x5d, 0xd1, 0x8c, 0xb7, 0x89, 0x53, 0xce, 0x6d, 0x16, 0xd8, 0x5e, 0xb2, 0x11, 0xaf, 0x0c, 0x64, 0x68, 0xa2, 0xaf, 0x9f, 0x72, 0xe7, 0x86, 0x61, 0xb0, 0xfc, 0xaa, 0x48, 0x15 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.7", - /* Message */ - 7, - { 0x9a, 0xda, 0x9c, 0x10, 0xb8, 0xae, 0x22 } -, - /* Seed */ - 118, - { 0xcc, 0x23, 0x43, 0x72, 0x4a, 0xc5, 0x0e, 0xe5, 0x47, 0x08, 0xfc, 0x5f, 0xd0, 0x3f, 0x09, 0xa1, 0xcc, 0x12, 0x22, 0xa4, 0x4b, 0xcd, 0x44, 0x03, 0x87, 0x7c, 0x6b, 0xde, 0x86, 0xbf, 0x43, 0xe4, 0x2c, 0x10, 0x84, 0xf6, 0xef, 0xff, 0x20, 0xfa, 0xc0, 0xac, 0xc3, 0x1e, 0xca, 0x17, 0xc7, 0x38, 0xd4, 0x68, 0x68, 0x73, 0x65, 0x52, 0xfd, 0x2f, 0x7e, 0x93, 0xb8, 0x22, 0x25, 0x61, 0x05, 0x4e, 0x6d, 0xad, 0xc3, 0x15, 0x60, 0x4e, 0xaf, 0x8f, 0x77, 0xf0, 0x5d, 0xd8, 0x58, 0x3a, 0x93, 0xbf, 0x03, 0xcb, 0x9c, 0xc2, 0x13, 0x9b, 0xc4, 0x19, 0xbb, 0x10, 0xe9, 0xb2, 0x01, 0xb2, 0xa7, 0xe1, 0x8b, 0x03, 0x79, 0x0c, 0xc8, 0x3e, 0xd6, 0x05, 0xd6, 0xd5, 0x66, 0x33, 0x05, 0x34, 0x71, 0x39, 0xc7, 0x5e, 0x1a, 0xe2, 0xa5, 0x6a } -, - /* Encryption */ - 128, - { 0x9f, 0x54, 0xd0, 0xde, 0xa0, 0x5a, 0x5d, 0x00, 0x72, 0x23, 0x5b, 0xc4, 0x67, 0x93, 0xcf, 0xc4, 0x7b, 0x00, 0x6d, 0xaa, 0xac, 0x02, 0x41, 0xc7, 0xe6, 0x6d, 0x33, 0x3e, 0x23, 0xc3, 0xcf, 0x97, 0x63, 0xb6, 0x1d, 0x9e, 0xea, 0xdd, 0xd8, 0x3f, 0x5d, 0x7f, 0x0a, 0xa9, 0x7d, 0x16, 0xc7, 0x69, 0x92, 0x55, 0xcf, 0x7e, 0x48, 0x72, 0xb6, 0xa0, 0x07, 0x95, 0x62, 0xd2, 0x60, 0x7d, 0x64, 0x40, 0xd7, 0xed, 0x37, 0xc6, 0x71, 0x3c, 0xe9, 0x66, 0x43, 0xa4, 0x41, 0xf8, 0x39, 0x55, 0x64, 0xd2, 0x6a, 0xde, 0xa5, 0x82, 0x3a, 0x49, 0x42, 0xda, 0x4a, 0xb8, 0xe4, 0x7b, 0xed, 0x58, 0x81, 0xb9, 0xd1, 0x84, 0x05, 0x79, 0x57, 0xdf, 0x65, 0x39, 0xe4, 0x36, 0xda, 0x35, 0xe3, 0x0a, 0x25, 0x3a, 0xf1, 0x2d, 0x54, 0x1d, 0x4b, 0x0e, 0xf8, 0x3c, 0x5e, 0xf3, 0xc1, 0x35, 0xab, 0x95, 0x94, 0x9a } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.8", - /* Message */ - 19, - { 0xd8, 0x12, 0x6f, 0x4a, 0x88, 0x78, 0x97, 0x82, 0x93, 0x11, 0x76, 0x51, 0xb3, 0x0e, 0x79, 0x22, 0xd1, 0x4a, 0xcf } -, - /* Seed */ - 106, - { 0xad, 0xf9, 0xb0, 0xa9, 0x15, 0x2f, 0x0e, 0x6e, 0xc6, 0xf4, 0x39, 0x59, 0x71, 0xad, 0x40, 0x3f, 0x02, 0xe7, 0xfa, 0x98, 0xf8, 0x15, 0x56, 0x0a, 0xfa, 0xff, 0xa7, 0xca, 0xd5, 0xb4, 0x47, 0x4b, 0x6e, 0xce, 0x65, 0xed, 0xab, 0xe2, 0x7e, 0xc2, 0x4a, 0x0a, 0xa4, 0x73, 0xed, 0x75, 0xa6, 0x1f, 0x5c, 0x24, 0x90, 0xa5, 0x36, 0xb1, 0xa4, 0xdf, 0x7b, 0x03, 0x41, 0x77, 0x37, 0xc5, 0x34, 0xe1, 0xd4, 0x5b, 0xf7, 0x26, 0x94, 0x38, 0x6b, 0xee, 0x82, 0x0c, 0x48, 0xdb, 0xd1, 0x83, 0x17, 0xbd, 0x61, 0x7c, 0x04, 0xb6, 0xa4, 0x17, 0xe3, 0x0e, 0xed, 0x79, 0x58, 0x8d, 0xc2, 0x3f, 0xd4, 0xdb, 0xa1, 0x37, 0x44, 0xb4, 0xb2, 0xaa, 0x5a, 0xf8, 0x0a, 0x8a } -, - /* Encryption */ - 128, - { 0x3b, 0x2b, 0x85, 0xed, 0xfc, 0xd7, 0xc7, 0xc2, 0x7b, 0xde, 0xde, 0xe1, 0xc2, 0x8a, 0xb6, 0x18, 0x7a, 0xbf, 0x1c, 0x96, 0xd9, 0x45, 0x30, 0x07, 0x92, 0xcf, 0x8a, 0xf1, 0x97, 0xc2, 0xf9, 0xa3, 0x91, 0xb4, 0x8b, 0x83, 0x32, 0xcf, 0xde, 0x7e, 0x4c, 0x7d, 0xc3, 0x4c, 0x42, 0x30, 0x29, 0x56, 0x92, 0xce, 0xfd, 0xa5, 0xef, 0xb2, 0x57, 0x35, 0x49, 0x2b, 0x9f, 0xf7, 0x84, 0xc7, 0xba, 0xe7, 0x35, 0x11, 0xc6, 0x18, 0xe3, 0xaa, 0x7b, 0xc8, 0x7b, 0xc3, 0x13, 0xf2, 0x67, 0x09, 0xa8, 0xea, 0x4a, 0xd7, 0x3a, 0x34, 0x9a, 0xb9, 0xe5, 0xad, 0x82, 0x6c, 0x96, 0xad, 0x0e, 0xca, 0x97, 0xe3, 0x13, 0x28, 0x6b, 0xcc, 0xbf, 0x8e, 0x33, 0xc9, 0x1f, 0x03, 0x68, 0x39, 0xb9, 0x94, 0x8b, 0x4e, 0xb0, 0xc3, 0x8e, 0x21, 0x3e, 0xf4, 0x7f, 0x77, 0x66, 0x1a, 0x27, 0xf8, 0xcf, 0xe4, 0x99, 0x03 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.9", - /* Message */ - 58, - { 0xf5, 0xdf, 0x01, 0xaf, 0xe6, 0xa9, 0x22, 0x51, 0x8b, 0x3f, 0x4b, 0x80, 0xcd, 0x4f, 0xca, 0x73, 0xb9, 0x7b, 0xab, 0x61, 0x71, 0x6e, 0x27, 0xd2, 0x51, 0xbd, 0x46, 0x5f, 0x4b, 0x35, 0xa1, 0xa2, 0x32, 0xe2, 0xda, 0x00, 0x90, 0x1c, 0x29, 0x4b, 0xf2, 0x23, 0x50, 0xce, 0x49, 0x0d, 0x09, 0x9f, 0x64, 0x2b, 0x53, 0x75, 0x61, 0x2d, 0xb6, 0x3b, 0xa1, 0xf2 } -, - /* Seed */ - 67, - { 0x6b, 0xf2, 0x81, 0x0d, 0xb8, 0xfb, 0x26, 0x93, 0x98, 0x41, 0x2d, 0xbb, 0x88, 0x06, 0x02, 0x82, 0xd4, 0x5f, 0xbe, 0x96, 0x27, 0x33, 0x7e, 0x54, 0x34, 0x26, 0x1a, 0x5d, 0xbc, 0x19, 0x3a, 0xd6, 0x18, 0xc1, 0x1f, 0x7b, 0xde, 0xc1, 0xde, 0x25, 0x05, 0xf8, 0x60, 0x37, 0xfc, 0x18, 0x51, 0xbf, 0x6f, 0xb4, 0x9d, 0x23, 0x60, 0x62, 0x73, 0x47, 0x49, 0x9e, 0xfc, 0x98, 0xe2, 0x92, 0x05, 0xda, 0x90, 0x6d, 0x32 } -, - /* Encryption */ - 128, - { 0x40, 0x12, 0xfc, 0xc5, 0xcf, 0xb9, 0x78, 0xde, 0xf8, 0x8f, 0xb8, 0xf8, 0x17, 0x4a, 0xa5, 0xb4, 0xa3, 0x07, 0x75, 0xac, 0x45, 0x59, 0xf0, 0xb2, 0xf3, 0xd3, 0xb4, 0x38, 0x9b, 0x82, 0x8a, 0x79, 0xd1, 0x40, 0x25, 0x10, 0xc9, 0xa0, 0x33, 0x7d, 0x48, 0x9d, 0x11, 0x82, 0xab, 0x31, 0xc8, 0x38, 0xac, 0x7c, 0x80, 0xb7, 0x48, 0x60, 0x9a, 0x2a, 0xa5, 0x37, 0xda, 0x7a, 0xcc, 0x3a, 0x4a, 0x7a, 0x31, 0xd2, 0xad, 0x25, 0x2b, 0xfd, 0x59, 0x28, 0x0b, 0x3d, 0x18, 0x13, 0xa2, 0x6f, 0x93, 0xc5, 0x9e, 0xe8, 0xc5, 0xee, 0x68, 0x87, 0x18, 0xf4, 0x27, 0x83, 0x93, 0xfe, 0xce, 0x32, 0x3a, 0x9d, 0xff, 0x83, 0x37, 0x55, 0xe8, 0x9a, 0xc8, 0xee, 0x1f, 0xa2, 0x90, 0x4b, 0xf2, 0x4c, 0xdf, 0x4f, 0x01, 0xe6, 0xea, 0xed, 0xb6, 0xa8, 0xef, 0x01, 0xf4, 0x07, 0xbe, 0xf3, 0x30, 0x9f, 0x03, 0x39 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.10", - /* Message */ - 4, - { 0xa3, 0x82, 0x3f, 0xaf } -, - /* Seed */ - 121, - { 0x94, 0xf6, 0x70, 0xfd, 0x82, 0xf6, 0x91, 0x32, 0x75, 0xee, 0xa4, 0xc6, 0x71, 0x16, 0xca, 0xaa, 0xbd, 0x33, 0x57, 0x8c, 0xf8, 0x4d, 0x22, 0x63, 0x64, 0x38, 0xa6, 0xfd, 0x7e, 0xcf, 0xee, 0xfc, 0x0b, 0x18, 0x7d, 0xec, 0xf7, 0x93, 0x89, 0x1c, 0x6e, 0x4c, 0xfc, 0x52, 0xb5, 0x67, 0xd8, 0x72, 0xbf, 0xfb, 0xee, 0x0a, 0x67, 0x47, 0x2a, 0x1a, 0x48, 0xc0, 0xf1, 0xba, 0x59, 0x8a, 0xd8, 0x25, 0x89, 0x01, 0xc5, 0x6a, 0x55, 0x92, 0xf1, 0x41, 0x14, 0x7e, 0x81, 0x33, 0x9d, 0x74, 0x7e, 0x06, 0x32, 0xde, 0xf0, 0x0d, 0x3d, 0xbe, 0xe9, 0x5c, 0x4e, 0x43, 0x21, 0xcc, 0x25, 0xb5, 0x31, 0x14, 0x47, 0xa3, 0x02, 0xc5, 0x34, 0x92, 0x9c, 0xf7, 0xe5, 0x34, 0xf9, 0xae, 0x67, 0xf4, 0x1e, 0x01, 0xe2, 0x2a, 0x3d, 0x7c, 0xe4, 0x1b, 0x3b, 0x31, 0x35 } -, - /* Encryption */ - 128, - { 0x7b, 0x60, 0x25, 0x42, 0xb6, 0x4f, 0x0a, 0x1e, 0x0e, 0xc2, 0xaa, 0x01, 0xcb, 0xed, 0x37, 0x7e, 0x33, 0x1e, 0xa3, 0xff, 0x86, 0xf3, 0x56, 0xfb, 0x7a, 0x58, 0x83, 0x76, 0x4b, 0xe4, 0xcb, 0xf7, 0xd0, 0x75, 0x4c, 0x58, 0x29, 0x64, 0x31, 0x36, 0xf2, 0x57, 0x23, 0x36, 0xa2, 0x3f, 0x15, 0x41, 0x1d, 0x83, 0x85, 0x14, 0xa1, 0x43, 0x87, 0x24, 0xad, 0x74, 0x09, 0xe8, 0xec, 0x8f, 0xe2, 0x63, 0x41, 0xae, 0xea, 0x56, 0x68, 0x34, 0x5d, 0x0d, 0x82, 0x3f, 0xb5, 0xc2, 0x1d, 0xf4, 0x59, 0xe8, 0xbf, 0x7c, 0x15, 0xb8, 0x0b, 0x07, 0x2e, 0x5f, 0x8a, 0x84, 0x65, 0xa4, 0x4a, 0xa9, 0xd0, 0x9d, 0x82, 0x5c, 0x03, 0x15, 0xa0, 0xec, 0xd2, 0xd6, 0x49, 0x70, 0x2b, 0x10, 0x9b, 0xe8, 0xfe, 0x35, 0xeb, 0x22, 0x84, 0x3a, 0x20, 0xe7, 0xfd, 0x87, 0x4f, 0x1c, 0x6b, 0x46, 0xa8, 0x0b, 0x68, 0xdf } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.11", - /* Message */ - 62, - { 0x75, 0xb9, 0xa4, 0xa0, 0xbb, 0x2d, 0x46, 0x43, 0xe4, 0x78, 0xf6, 0x54, 0xf2, 0xcc, 0x1a, 0x8c, 0x1b, 0xb4, 0x67, 0x19, 0x76, 0x0d, 0x45, 0x41, 0xa8, 0xa7, 0x33, 0xf3, 0x3b, 0x71, 0x3d, 0x32, 0xc6, 0x0b, 0xfd, 0x35, 0xf1, 0x61, 0x74, 0x83, 0x48, 0x47, 0xe8, 0x81, 0x2c, 0xbd, 0x7f, 0x06, 0xce, 0x72, 0x89, 0xf3, 0x72, 0xc5, 0x82, 0x30, 0xf2, 0xb0, 0x01, 0x45, 0x9b, 0x5d } -, - /* Seed */ - 63, - { 0x49, 0xa7, 0x3d, 0xeb, 0x93, 0xe3, 0xf1, 0xbe, 0xaa, 0xad, 0x3a, 0x19, 0x9a, 0x70, 0x56, 0x9e, 0x09, 0x9a, 0xfa, 0xca, 0xf7, 0xa7, 0x5f, 0xc4, 0xce, 0x64, 0x8f, 0xa8, 0x2e, 0xaf, 0x2a, 0x0f, 0xe4, 0x11, 0xd2, 0x64, 0xfe, 0x45, 0xf7, 0x45, 0x25, 0xc9, 0x1f, 0x3c, 0x75, 0x10, 0x17, 0xf8, 0x0a, 0x02, 0xba, 0xbf, 0xf3, 0x57, 0x99, 0x62, 0x6f, 0x2b, 0x8d, 0xdb, 0x9f, 0x36, 0x91 } -, - /* Encryption */ - 128, - { 0xe5, 0xae, 0xe7, 0x0d, 0xe8, 0x62, 0x72, 0x3c, 0x51, 0x73, 0xdf, 0xfb, 0xf6, 0x92, 0x6c, 0x3d, 0x33, 0x16, 0xd5, 0x90, 0x9c, 0xf5, 0xa1, 0xd6, 0x63, 0xe6, 0x80, 0xab, 0x2b, 0xb5, 0x76, 0xe3, 0x5b, 0x93, 0xfd, 0x43, 0x27, 0x43, 0xa1, 0x8e, 0x8d, 0xb4, 0xfa, 0xa3, 0x32, 0xf4, 0x46, 0x68, 0xa3, 0xd1, 0x9e, 0x5e, 0x69, 0x57, 0x32, 0xf8, 0x4b, 0xbd, 0x86, 0xd0, 0xdd, 0xed, 0x76, 0x65, 0xb7, 0x0b, 0x97, 0x63, 0x2e, 0xab, 0xe2, 0x36, 0x4c, 0xaf, 0xef, 0x7b, 0x74, 0xdc, 0xd1, 0xbf, 0xbd, 0x62, 0x5e, 0x2b, 0xbb, 0xf6, 0x65, 0x4c, 0xc0, 0x26, 0x61, 0x81, 0xac, 0x0a, 0x75, 0x7c, 0x3f, 0xba, 0xbd, 0x43, 0x0a, 0xe8, 0x63, 0x71, 0xeb, 0x56, 0xaf, 0x61, 0x0f, 0x77, 0xcf, 0x2f, 0xff, 0x6e, 0x24, 0x8f, 0x8c, 0x57, 0x91, 0x60, 0xb9, 0x1d, 0xce, 0xcc, 0x0d, 0x20, 0x2b, 0x50 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.12", - /* Message */ - 52, - { 0x15, 0x06, 0xeb, 0x34, 0x91, 0x78, 0x5a, 0xa7, 0x21, 0x06, 0xbf, 0x6c, 0x85, 0xd0, 0x10, 0x02, 0x04, 0x6d, 0x1c, 0x16, 0xd4, 0x35, 0xdd, 0x4e, 0x7c, 0x4b, 0x7e, 0x8e, 0x90, 0xdd, 0xdf, 0x16, 0x33, 0x2f, 0x94, 0xf4, 0xb8, 0x35, 0xd0, 0xe4, 0xad, 0x55, 0xd8, 0x3a, 0x81, 0xb3, 0x5c, 0x54, 0xb6, 0x79, 0xd3, 0xcf } -, - /* Seed */ - 73, - { 0xf6, 0x6e, 0x6a, 0x84, 0x75, 0x84, 0x40, 0x86, 0xe2, 0x84, 0x77, 0x22, 0x97, 0x46, 0x80, 0x1d, 0x43, 0x50, 0xd9, 0xad, 0x07, 0x68, 0xf3, 0xc3, 0xd8, 0xfa, 0xa8, 0x10, 0x7d, 0x95, 0xfb, 0x20, 0x5e, 0x4b, 0xa8, 0xc6, 0x4b, 0x73, 0x8e, 0x54, 0xe5, 0xac, 0x0d, 0xfe, 0xab, 0x99, 0x6d, 0x61, 0x12, 0x5c, 0x26, 0x79, 0x80, 0x72, 0x59, 0xbc, 0x9e, 0x47, 0xd8, 0xbd, 0xd2, 0xc0, 0x40, 0x95, 0x05, 0x44, 0x8b, 0xbf, 0x87, 0x2b, 0xf6, 0x64, 0x7a } -, - /* Encryption */ - 128, - { 0xd1, 0xfa, 0x39, 0x52, 0xcc, 0x61, 0x45, 0xff, 0x77, 0x1b, 0x6c, 0x5a, 0x68, 0x27, 0x5b, 0xbc, 0x22, 0xd0, 0x03, 0x92, 0x03, 0x66, 0x17, 0x37, 0x5f, 0x0c, 0x2b, 0xec, 0x3e, 0x28, 0x85, 0x83, 0xec, 0xfd, 0xc6, 0xdf, 0x6a, 0x82, 0x8d, 0xe3, 0x7f, 0x77, 0xc5, 0x56, 0xa8, 0xcb, 0xc4, 0xd4, 0x43, 0x36, 0xe8, 0xd2, 0xe3, 0x05, 0x87, 0xe3, 0x31, 0x58, 0x73, 0x17, 0xe9, 0x7b, 0x05, 0xa3, 0xfd, 0x78, 0x02, 0x5b, 0x2d, 0x49, 0x6b, 0x3b, 0xbe, 0xeb, 0x6c, 0x72, 0x5d, 0x9e, 0xa5, 0x61, 0xa7, 0x32, 0x28, 0x82, 0x33, 0xd6, 0x8b, 0x79, 0x49, 0x7f, 0xb0, 0xb6, 0xfe, 0xe0, 0xa6, 0xb6, 0x8a, 0xc3, 0x13, 0x66, 0x1b, 0x4b, 0x65, 0x47, 0x39, 0xf9, 0x18, 0xf6, 0xfd, 0x3b, 0xff, 0xc1, 0x7c, 0x1d, 0xf4, 0x1f, 0x01, 0x44, 0x95, 0xd5, 0x5f, 0x95, 0x90, 0x14, 0x7b, 0x82, 0xd1, 0x5d } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.13", - /* Message */ - 2, - { 0x9e, 0x3e } -, - /* Seed */ - 123, - { 0x9b, 0x3d, 0xdf, 0x17, 0xcd, 0x74, 0xe7, 0x6c, 0x69, 0xb5, 0xca, 0x3a, 0x01, 0x0a, 0x0e, 0x0f, 0xbd, 0x17, 0x05, 0xd6, 0x9c, 0x30, 0x74, 0x35, 0x3b, 0xe7, 0xd3, 0xc0, 0xc2, 0x05, 0xf0, 0x99, 0xc7, 0xa8, 0x10, 0xb7, 0xa1, 0xad, 0xe0, 0x9f, 0x5a, 0x03, 0x6b, 0xb7, 0x69, 0xef, 0xf5, 0x3a, 0x53, 0xd4, 0xc6, 0xf8, 0x71, 0x52, 0x92, 0x2d, 0x9a, 0x7b, 0x86, 0xed, 0xeb, 0xa3, 0x72, 0x37, 0xd7, 0xf1, 0x73, 0x4d, 0x9d, 0x97, 0x39, 0x38, 0x3f, 0x48, 0x80, 0xaf, 0x3a, 0xd6, 0x88, 0x87, 0xe0, 0xfe, 0x7c, 0x87, 0xa1, 0x74, 0xfb, 0x32, 0x38, 0xb1, 0xe5, 0x1e, 0xad, 0x2a, 0x84, 0x34, 0x40, 0xc2, 0xb2, 0x7f, 0x22, 0xdd, 0xa4, 0x22, 0x8d, 0xce, 0x70, 0xf9, 0x1c, 0x98, 0xd4, 0x71, 0xa8, 0x74, 0x4d, 0x27, 0x65, 0x55, 0x79, 0x58, 0x81, 0x02, 0x44 } -, - /* Encryption */ - 128, - { 0x42, 0x12, 0x6b, 0x49, 0x2a, 0x1e, 0x7c, 0xc0, 0x33, 0x95, 0xb2, 0xac, 0x70, 0x33, 0xcf, 0x6a, 0x67, 0x36, 0xb1, 0x2e, 0x76, 0x82, 0x5a, 0x17, 0x3b, 0x9e, 0x01, 0x1a, 0xe8, 0xbf, 0xed, 0x44, 0xfe, 0xcb, 0x8d, 0x9f, 0x58, 0xcc, 0xe1, 0x99, 0x11, 0xfe, 0x42, 0xd4, 0x55, 0xe2, 0x49, 0x20, 0x09, 0x32, 0xa9, 0xb6, 0x8f, 0xe2, 0xe4, 0x19, 0xbc, 0x63, 0x9c, 0x11, 0x78, 0xd1, 0x1f, 0xfb, 0xdb, 0xd9, 0x95, 0x5d, 0x45, 0x9f, 0x5e, 0xcf, 0xe0, 0x90, 0x20, 0x09, 0x8e, 0x29, 0x7b, 0x8e, 0x91, 0x48, 0x5e, 0x94, 0xbf, 0x11, 0xe7, 0xbf, 0x77, 0xed, 0xf5, 0xa2, 0x70, 0x11, 0xc8, 0x2b, 0x92, 0x73, 0x65, 0xa1, 0x2c, 0x9c, 0x77, 0xc7, 0xe4, 0x9b, 0xb7, 0xfe, 0x2f, 0x61, 0x33, 0x39, 0xde, 0x3f, 0x51, 0x20, 0x87, 0x79, 0x53, 0x86, 0xca, 0x58, 0x5a, 0x70, 0x24, 0x78, 0x27, 0x90 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.14", - /* Message */ - 28, - { 0x70, 0xaa, 0x78, 0xa4, 0xd3, 0x7f, 0x74, 0xc1, 0x81, 0xaa, 0x27, 0x40, 0x7f, 0x2f, 0x9f, 0xe6, 0x63, 0xa9, 0x1b, 0x16, 0xbe, 0x9b, 0xea, 0x6f, 0xc6, 0x12, 0x88, 0x7f } -, - /* Seed */ - 97, - { 0xd0, 0xfd, 0x16, 0xc0, 0xf0, 0xd7, 0x90, 0x9a, 0x38, 0x86, 0x17, 0x08, 0x11, 0xe4, 0x4f, 0x24, 0xfa, 0xdf, 0x94, 0xff, 0x17, 0x03, 0x9a, 0x56, 0x84, 0xa0, 0x9b, 0x24, 0xe1, 0x93, 0x3f, 0xa0, 0xc4, 0x71, 0x51, 0x63, 0x5d, 0x75, 0x7b, 0x73, 0xc2, 0x3f, 0xf3, 0x91, 0x01, 0xcb, 0xe2, 0x52, 0x9a, 0x63, 0xa7, 0xf3, 0xa0, 0x19, 0x5b, 0x6e, 0x47, 0x51, 0x07, 0x11, 0xde, 0x17, 0x1a, 0x16, 0x56, 0xc9, 0xea, 0xb3, 0xcf, 0x82, 0xd1, 0xc6, 0x52, 0x26, 0xb5, 0x8f, 0xd0, 0xfe, 0x58, 0xec, 0x31, 0x96, 0x24, 0x7f, 0x34, 0xb1, 0xa0, 0x55, 0x27, 0x02, 0xdc, 0x03, 0x75, 0x12, 0xc6, 0x81, 0x04 } -, - /* Encryption */ - 128, - { 0x95, 0x36, 0xd4, 0x7e, 0x1d, 0x68, 0x7f, 0x1f, 0x24, 0x99, 0x6c, 0xb4, 0x6c, 0xe9, 0x46, 0xae, 0x54, 0xd4, 0xa1, 0x49, 0xb3, 0x4b, 0x5b, 0xc3, 0x44, 0x43, 0xa2, 0x01, 0x51, 0x83, 0x87, 0xf4, 0xb6, 0x38, 0x18, 0x37, 0xcb, 0x7e, 0x4b, 0x0a, 0x44, 0x75, 0x13, 0x70, 0x42, 0xf1, 0x44, 0x8c, 0x1e, 0xa4, 0x15, 0x15, 0xef, 0x31, 0xc2, 0xfc, 0xbf, 0x62, 0xe7, 0xe9, 0x58, 0x67, 0xb6, 0x74, 0xac, 0x23, 0x0a, 0xed, 0x9c, 0x7d, 0x8d, 0x61, 0xc5, 0x27, 0x52, 0xb2, 0xfc, 0x2a, 0x0b, 0xba, 0xfc, 0x77, 0xb3, 0x1c, 0x51, 0x49, 0x30, 0xde, 0x98, 0x23, 0xb4, 0x38, 0xb6, 0xfa, 0xaa, 0x40, 0xd2, 0x55, 0x31, 0x03, 0x3c, 0x66, 0x48, 0x3f, 0xa0, 0x02, 0x3a, 0xf2, 0x1d, 0xa6, 0x4f, 0xcc, 0x8b, 0xb8, 0xc5, 0xd5, 0x2d, 0x3f, 0x6c, 0x43, 0x80, 0xf1, 0xd6, 0x08, 0xd8, 0xc0, 0x11, 0x8f } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.15", - /* Message */ - 59, - { 0x01, 0x16, 0xa4, 0x61, 0x77, 0x73, 0xb6, 0xdd, 0xb2, 0x19, 0x16, 0x1c, 0x4f, 0xd0, 0x71, 0x93, 0x7b, 0xbb, 0x07, 0x15, 0xcc, 0x62, 0x7c, 0x17, 0xb8, 0xe7, 0x52, 0x80, 0xd9, 0x9c, 0xdd, 0x41, 0x6e, 0xa5, 0xcd, 0xfa, 0x09, 0x06, 0xb9, 0xaf, 0x0a, 0x20, 0xcd, 0x47, 0x7f, 0xdc, 0xad, 0x14, 0x15, 0xa1, 0x9a, 0x9d, 0x1b, 0x96, 0xfd, 0xc3, 0xc0, 0xed, 0xb9 } -, - /* Seed */ - 66, - { 0x86, 0xb1, 0x58, 0x60, 0x9b, 0xfa, 0x08, 0xa8, 0xed, 0xe4, 0xef, 0x3f, 0x23, 0xe1, 0x2e, 0xb5, 0x0d, 0x24, 0x55, 0x74, 0x26, 0x4d, 0x76, 0x4d, 0x87, 0x12, 0x67, 0xdb, 0x8a, 0x95, 0x24, 0xea, 0x3f, 0xa2, 0xe3, 0x84, 0x5f, 0xfc, 0x29, 0x1b, 0xda, 0x98, 0x99, 0x89, 0xbf, 0x71, 0x5a, 0xa2, 0xb0, 0x8c, 0x49, 0x79, 0x8a, 0x81, 0x9f, 0x68, 0x58, 0xd9, 0xfa, 0x35, 0xf9, 0x4d, 0xf3, 0xc7, 0xe0, 0x86 } -, - /* Encryption */ - 128, - { 0x74, 0xa3, 0xdf, 0x38, 0x5d, 0x20, 0x87, 0x7b, 0xca, 0x9d, 0xbc, 0xeb, 0xca, 0x2e, 0x53, 0x2c, 0x6a, 0xbe, 0x95, 0x62, 0xd6, 0x81, 0x7b, 0xe1, 0x6e, 0x11, 0x8a, 0x60, 0xf4, 0xab, 0x0a, 0x1a, 0xc0, 0xa8, 0x46, 0x66, 0x53, 0xa8, 0xf8, 0x17, 0x0e, 0x35, 0xfc, 0xe1, 0x4b, 0x44, 0x9c, 0xd5, 0x9f, 0x55, 0x8e, 0x02, 0x0a, 0x89, 0x88, 0x94, 0xbd, 0x2a, 0x71, 0x75, 0x58, 0xe6, 0x65, 0x0f, 0x3a, 0x12, 0x85, 0x70, 0xd8, 0xc1, 0x69, 0xa7, 0x74, 0x66, 0x63, 0xc1, 0xd7, 0xef, 0x62, 0x14, 0x5f, 0x4b, 0x75, 0xc5, 0xfe, 0xb6, 0x38, 0x6f, 0xdb, 0x85, 0x33, 0x94, 0xc6, 0x59, 0xa9, 0x1a, 0xa2, 0xaa, 0xe0, 0x3b, 0xef, 0x91, 0x13, 0xdd, 0x49, 0x28, 0xff, 0x28, 0xb3, 0x80, 0x92, 0x7a, 0xd1, 0xba, 0x4e, 0x8a, 0x37, 0xed, 0xd1, 0x72, 0xef, 0xe8, 0xe9, 0xea, 0xbb, 0x61, 0x4d, 0x83 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.16", - /* Message */ - 63, - { 0x15, 0xc5, 0xfc, 0xc7, 0x54, 0x7d, 0x63, 0x76, 0x1f, 0x6a, 0xf1, 0xf2, 0x6e, 0xed, 0x9b, 0xe8, 0x13, 0x4f, 0x9f, 0x92, 0x12, 0x7e, 0x76, 0xb0, 0x3a, 0x33, 0xa9, 0x7b, 0x9b, 0xe3, 0xf7, 0x8b, 0x2e, 0x22, 0xfc, 0x7c, 0x85, 0x06, 0x99, 0xa1, 0x5c, 0x0e, 0x0e, 0xce, 0xbe, 0x2a, 0x71, 0x80, 0x5f, 0x02, 0x4b, 0x93, 0x88, 0xa3, 0xbd, 0xb2, 0xb3, 0x60, 0xd6, 0x9c, 0x5c, 0x0c, 0x46 } -, - /* Seed */ - 62, - { 0x5b, 0x4f, 0x17, 0xa9, 0xde, 0x91, 0x73, 0x7a, 0x7f, 0xe8, 0x54, 0xe8, 0xa1, 0x76, 0xbe, 0x5a, 0x0a, 0x16, 0xfc, 0x10, 0x42, 0xcb, 0x87, 0x0c, 0xc0, 0x18, 0x92, 0xfc, 0xd3, 0x8e, 0xa7, 0x5b, 0x07, 0x3c, 0x0f, 0xfa, 0x01, 0x4f, 0x96, 0xa3, 0x58, 0xe3, 0xaa, 0x5e, 0x73, 0xea, 0xf8, 0xa9, 0x1f, 0xce, 0x75, 0x47, 0x0b, 0xde, 0x64, 0xe8, 0x7a, 0xb8, 0x91, 0xba, 0x3b, 0xf2 } -, - /* Encryption */ - 128, - { 0x73, 0x62, 0xd7, 0x39, 0x8d, 0x0c, 0x25, 0x1f, 0x83, 0x58, 0x17, 0xe4, 0x79, 0x37, 0xa9, 0x25, 0x58, 0x36, 0xca, 0x02, 0x30, 0x45, 0x7f, 0xf6, 0x08, 0xb0, 0x78, 0xd5, 0x09, 0x31, 0xa8, 0x80, 0x33, 0xea, 0x76, 0x50, 0x81, 0x12, 0x65, 0xf8, 0xe2, 0x68, 0xb5, 0x33, 0x15, 0xd8, 0x43, 0x8e, 0x52, 0xa6, 0xa4, 0xb1, 0xb3, 0x89, 0x5d, 0x30, 0xc3, 0xda, 0xe1, 0x1a, 0x3b, 0x8e, 0xa8, 0xc3, 0x0f, 0x05, 0xe9, 0xd7, 0x1d, 0xef, 0x46, 0xd4, 0x51, 0x11, 0x92, 0xa1, 0x0f, 0x54, 0x21, 0x8d, 0x39, 0x36, 0xcb, 0x17, 0x98, 0x3a, 0x1e, 0x7a, 0xff, 0x18, 0x18, 0x89, 0x39, 0xb9, 0x46, 0x92, 0x76, 0x49, 0xb0, 0xfc, 0x4f, 0x7b, 0xbf, 0xcb, 0xfc, 0x14, 0xe1, 0xc0, 0xec, 0xa0, 0x7d, 0x00, 0xc9, 0x03, 0xdb, 0x78, 0x16, 0x9c, 0x50, 0xef, 0x0a, 0x38, 0xf1, 0xda, 0x19, 0xae, 0x44, 0x59 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.17", - /* Message */ - 29, - { 0x7c, 0xad, 0x18, 0xf1, 0x75, 0x13, 0x87, 0x42, 0x28, 0x5e, 0x90, 0x35, 0xd1, 0x3a, 0xd4, 0x1f, 0xc3, 0xa8, 0x52, 0x10, 0xe1, 0x54, 0x4e, 0x24, 0xde, 0xa3, 0xfc, 0xfe, 0x66 } -, - /* Seed */ - 96, - { 0x9a, 0x06, 0xca, 0x10, 0xfc, 0xc6, 0x61, 0x0e, 0x77, 0xdf, 0xf9, 0x0d, 0xd1, 0x76, 0xf8, 0x2e, 0x3f, 0x96, 0xe4, 0xa9, 0xd7, 0xab, 0x87, 0x2c, 0x74, 0x8e, 0xd4, 0x22, 0xf3, 0x4b, 0x33, 0x48, 0x61, 0x94, 0x40, 0xf0, 0xaa, 0xa2, 0x2a, 0x66, 0x98, 0x51, 0xda, 0xc8, 0x89, 0x4a, 0x8e, 0xfa, 0x34, 0xea, 0x2c, 0x2d, 0xa5, 0xe9, 0x58, 0x69, 0xe0, 0xad, 0xc0, 0x05, 0xa4, 0x9b, 0xa4, 0x58, 0x18, 0xca, 0xa4, 0x74, 0x11, 0x5c, 0x34, 0x49, 0x96, 0x6a, 0x85, 0xc4, 0x18, 0xfc, 0xaa, 0x8f, 0x45, 0x63, 0x0e, 0xfe, 0x0b, 0x1b, 0x4d, 0x3d, 0x69, 0xbe, 0x1b, 0xc0, 0x06, 0x8a, 0xa7, 0x99 } -, - /* Encryption */ - 128, - { 0x1e, 0xfa, 0xd4, 0x14, 0x46, 0xb9, 0x1f, 0xda, 0xdd, 0x8b, 0x80, 0x61, 0x9f, 0x68, 0x27, 0x36, 0x68, 0xb7, 0x58, 0x5f, 0xd9, 0x1f, 0x34, 0x49, 0xec, 0x85, 0xc2, 0x42, 0xd0, 0x84, 0x9e, 0x4a, 0x53, 0xa5, 0x97, 0x7b, 0x61, 0xaa, 0x40, 0xd1, 0x2c, 0xc4, 0x85, 0xec, 0x7e, 0x4f, 0xf2, 0x0f, 0x98, 0x86, 0x91, 0xcb, 0x9d, 0x73, 0xaf, 0x46, 0xea, 0x37, 0x6a, 0xfc, 0x69, 0xba, 0x22, 0x33, 0x86, 0xe9, 0xf1, 0x5d, 0x03, 0x26, 0x97, 0xda, 0x75, 0xe2, 0xf9, 0x52, 0xbe, 0x2a, 0xf0, 0x62, 0xe8, 0x24, 0x6c, 0xf7, 0x49, 0xb8, 0x9c, 0x4c, 0xbc, 0xd6, 0x4e, 0x23, 0xf8, 0x82, 0xbb, 0x55, 0x3c, 0x3c, 0xe3, 0x05, 0x20, 0x36, 0x22, 0xb5, 0xa7, 0x39, 0x77, 0x35, 0xa6, 0x34, 0xaa, 0xb0, 0xd1, 0x7e, 0xf9, 0xb5, 0x55, 0x9d, 0xdd, 0x34, 0xf4, 0x87, 0x2b, 0x56, 0xe7, 0x98, 0x6e, 0xfc } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.18", - /* Message */ - 18, - { 0xfd, 0x98, 0xc3, 0x8b, 0xe3, 0x19, 0x30, 0x70, 0xb5, 0xc4, 0x33, 0x4b, 0x11, 0xc2, 0x5b, 0x33, 0x4a, 0x44 } -, - /* Seed */ - 107, - { 0xf3, 0x57, 0x91, 0x11, 0x03, 0xe9, 0x87, 0xd1, 0xa9, 0xf1, 0x5c, 0xc2, 0xe5, 0x2f, 0x42, 0x39, 0x0e, 0x0f, 0xaa, 0x50, 0x02, 0xc4, 0xf1, 0x7d, 0x40, 0xa4, 0xaf, 0x50, 0xf3, 0x1a, 0x23, 0x17, 0x50, 0xe7, 0xaf, 0x61, 0xd9, 0xaf, 0xdf, 0x9c, 0xaa, 0x38, 0x61, 0xa2, 0x0d, 0xc7, 0x21, 0x89, 0x58, 0x61, 0xfb, 0x11, 0x8e, 0x08, 0x8d, 0x32, 0x18, 0xe6, 0xfb, 0x35, 0x56, 0xb1, 0x62, 0xd6, 0xbd, 0x67, 0x91, 0x1d, 0xbc, 0x94, 0x21, 0x98, 0x42, 0x65, 0x82, 0x72, 0xa5, 0xd4, 0x9b, 0xf5, 0xab, 0xb4, 0xa0, 0x87, 0x94, 0x95, 0xc5, 0xe6, 0xe6, 0x86, 0x28, 0x59, 0x29, 0xa5, 0x5a, 0x36, 0x8f, 0x52, 0x4c, 0x14, 0xa4, 0x0b, 0x0c, 0x61, 0x38, 0x0d, 0x0e } -, - /* Encryption */ - 128, - { 0xde, 0xae, 0x18, 0x3b, 0x56, 0xc3, 0xfb, 0x38, 0x41, 0xea, 0x57, 0x42, 0x34, 0xac, 0xd3, 0x0a, 0xff, 0x00, 0xd0, 0x05, 0x1f, 0x57, 0x80, 0x37, 0x58, 0xa4, 0x71, 0x4a, 0xbc, 0xbe, 0xdc, 0xda, 0x8b, 0xd1, 0xa4, 0x8a, 0x98, 0x01, 0x53, 0xdf, 0x89, 0x6b, 0x13, 0x76, 0xaa, 0x4b, 0x45, 0x95, 0x80, 0x13, 0xd6, 0x19, 0xbe, 0x7e, 0xaf, 0xf6, 0xc1, 0xa6, 0x75, 0xe2, 0x92, 0xef, 0xc3, 0xf4, 0x39, 0x3d, 0xdb, 0xde, 0xab, 0x47, 0xe8, 0x90, 0xa7, 0x8c, 0xef, 0x69, 0x00, 0x24, 0x49, 0x57, 0x87, 0x48, 0x90, 0x6c, 0x10, 0x21, 0xb8, 0x91, 0xb9, 0x43, 0xd8, 0x18, 0xd3, 0xa6, 0x1e, 0x67, 0xa3, 0x15, 0x61, 0x2d, 0x4c, 0xb1, 0xcf, 0x19, 0x7c, 0xe5, 0xdf, 0xab, 0xef, 0xda, 0xeb, 0x59, 0x0b, 0x8e, 0x8c, 0x73, 0x68, 0x5e, 0x74, 0x7e, 0x59, 0xa3, 0x95, 0xc8, 0x45, 0xc5, 0xd0, 0xc3 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.19", - /* Message */ - 54, - { 0x96, 0x53, 0xd7, 0x94, 0x69, 0xf0, 0x5d, 0x40, 0x19, 0x65, 0xa9, 0x5c, 0xe8, 0x74, 0xfa, 0x22, 0x5e, 0xc4, 0x79, 0x74, 0xe8, 0xd0, 0x68, 0x41, 0xc1, 0x3b, 0x47, 0x85, 0xe0, 0x0d, 0x54, 0x7f, 0x9d, 0x31, 0x44, 0xc3, 0x87, 0x9e, 0x6c, 0xcd, 0xaf, 0x78, 0x7a, 0xef, 0xc2, 0xf8, 0x45, 0x2a, 0x4a, 0x3c, 0x88, 0x4e, 0x38, 0xee } -, - /* Seed */ - 71, - { 0x85, 0x5d, 0x6d, 0x15, 0x12, 0xe5, 0x43, 0xa4, 0x5d, 0x3a, 0x9a, 0xa9, 0x68, 0x5d, 0x5d, 0xfd, 0xa7, 0x04, 0x79, 0xba, 0x39, 0x52, 0x63, 0x64, 0x14, 0x1b, 0xb6, 0x36, 0x27, 0x45, 0x89, 0x85, 0x71, 0x20, 0x01, 0x22, 0xf4, 0xbc, 0x82, 0xc6, 0x22, 0x43, 0x45, 0xc6, 0x9d, 0x3e, 0xf5, 0x42, 0xf1, 0x23, 0xbd, 0xe3, 0x01, 0x5b, 0x60, 0xc4, 0xc0, 0xff, 0xb9, 0x8d, 0x63, 0x01, 0x31, 0xae, 0xe8, 0x1f, 0xe4, 0xa0, 0xb0, 0x15, 0x38 } -, - /* Encryption */ - 128, - { 0x69, 0xca, 0x62, 0xe2, 0x9a, 0x5b, 0xdb, 0x4b, 0x04, 0xe2, 0x40, 0x16, 0x21, 0x2c, 0x25, 0x91, 0x40, 0xa6, 0x0c, 0xfa, 0x81, 0xeb, 0x66, 0x93, 0xbf, 0xfa, 0xfc, 0x9f, 0x60, 0x0d, 0xce, 0x10, 0x82, 0x2a, 0x00, 0x7b, 0x6a, 0xde, 0x93, 0xfa, 0xcd, 0xa1, 0xb2, 0xb1, 0x65, 0xb5, 0x57, 0x76, 0x0f, 0x0a, 0x67, 0x5a, 0xc9, 0xbc, 0xb2, 0x06, 0xb9, 0x64, 0xfb, 0x90, 0xcf, 0x6a, 0x2c, 0xf9, 0x9f, 0x18, 0x6b, 0x36, 0xd2, 0xeb, 0x99, 0x1d, 0x82, 0x53, 0xa0, 0x75, 0x4f, 0x9c, 0xc2, 0xd7, 0x2d, 0xe5, 0x49, 0xab, 0xae, 0x90, 0x94, 0xf5, 0xa8, 0x6c, 0xe1, 0xdb, 0x49, 0x4d, 0xbb, 0x6e, 0x51, 0x62, 0x86, 0x71, 0x5b, 0x3d, 0xd4, 0x05, 0x59, 0xb3, 0x10, 0x7b, 0x95, 0x24, 0xb7, 0x29, 0xac, 0x65, 0x4c, 0xfb, 0x40, 0xf9, 0xab, 0x35, 0xd0, 0x34, 0xe0, 0x27, 0x19, 0x7c, 0xbc, 0x36 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 4.20", - /* Message */ - 41, - { 0x0b, 0xdf, 0x3f, 0xce, 0x8e, 0x48, 0x7d, 0xb2, 0x2d, 0x07, 0x60, 0xab, 0x71, 0x15, 0x86, 0xca, 0x8e, 0x45, 0x9c, 0x39, 0x4f, 0xf8, 0xb1, 0xa1, 0x86, 0x70, 0x67, 0xa9, 0x31, 0x51, 0x99, 0xa8, 0x01, 0x24, 0x74, 0xb0, 0xf9, 0x0d, 0xcc, 0x87, 0xcb } -, - /* Seed */ - 84, - { 0xc9, 0xb7, 0x8d, 0xce, 0x9d, 0xfd, 0x7f, 0x04, 0x04, 0xff, 0x98, 0x2e, 0x06, 0xb5, 0x96, 0x50, 0xba, 0xfe, 0x31, 0xea, 0x19, 0xbc, 0x1f, 0x2e, 0x1f, 0x39, 0x89, 0xf4, 0xce, 0xfc, 0xe4, 0x6f, 0xc6, 0x52, 0x42, 0x3d, 0xb3, 0xc9, 0x9d, 0x92, 0xa8, 0xfb, 0x58, 0xf3, 0xee, 0x39, 0x3d, 0x55, 0x5b, 0x76, 0x84, 0x88, 0x9a, 0x4b, 0xf8, 0x15, 0xa1, 0x3e, 0x3b, 0x9b, 0xf2, 0x43, 0x71, 0x40, 0x66, 0xb9, 0x07, 0x58, 0x90, 0x67, 0x50, 0x47, 0xf1, 0x7e, 0x93, 0x5b, 0xdc, 0xf0, 0xe6, 0x6f, 0xcf, 0xe3, 0x9b, 0xcf } -, - /* Encryption */ - 128, - { 0x43, 0xad, 0x3e, 0x62, 0x5f, 0xb1, 0x72, 0x15, 0x57, 0x8b, 0xef, 0x2f, 0x46, 0x5f, 0xaa, 0x72, 0xae, 0x69, 0x43, 0x83, 0x36, 0x9f, 0xf7, 0xaa, 0x15, 0x12, 0x01, 0xa3, 0xf2, 0x59, 0xc8, 0xd8, 0xce, 0x8c, 0x16, 0xbd, 0x25, 0x52, 0x21, 0x49, 0xf6, 0x66, 0xe8, 0xd6, 0x92, 0xa0, 0x79, 0x5e, 0xa7, 0x15, 0x69, 0xd2, 0x88, 0x1f, 0x97, 0x07, 0x08, 0x5d, 0x3f, 0x59, 0xbd, 0xfa, 0x28, 0x73, 0x66, 0xd7, 0xf5, 0xa3, 0xf7, 0x6e, 0xa5, 0xdc, 0x10, 0x9f, 0xcb, 0x03, 0x30, 0x2d, 0xa0, 0xb7, 0x86, 0x99, 0x71, 0x3e, 0x0d, 0x30, 0x09, 0x58, 0x4f, 0x97, 0x17, 0x6c, 0x1b, 0x9b, 0xa6, 0x3e, 0x80, 0xcf, 0xa8, 0xfd, 0x4c, 0x01, 0x3d, 0x74, 0xb5, 0xfa, 0xde, 0x84, 0x72, 0xd5, 0x2c, 0x11, 0xe2, 0xe9, 0x36, 0x81, 0xba, 0x19, 0xd3, 0x53, 0xd3, 0x1c, 0xe6, 0xfa, 0x3c, 0x0a, 0xb6, 0x0d } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 5: A 1024-bit RSA key pair", -{ - /* Modulus */ - 128, - { 0xab, 0x29, 0xd4, 0x9c, 0xdc, 0x92, 0x5c, 0x69, 0xca, 0xe7, 0x52, 0x92, 0xfc, 0x03, 0x62, 0x03, 0x73, 0xc6, 0xfb, 0x36, 0xd3, 0xc2, 0x49, 0xdd, 0x5b, 0xb5, 0x0f, 0x88, 0x1a, 0x4c, 0x93, 0x89, 0xaf, 0xe7, 0x3e, 0x8c, 0x56, 0xb8, 0xd6, 0x67, 0xa5, 0xea, 0xf2, 0xb5, 0x71, 0x4a, 0xda, 0xf4, 0xca, 0xa0, 0x06, 0xa4, 0x9a, 0xc4, 0xbd, 0x4b, 0x91, 0xd5, 0x45, 0xcf, 0x3c, 0x10, 0x00, 0x9d, 0x31, 0x8a, 0x9d, 0xe0, 0xf3, 0xbb, 0xd8, 0x38, 0x4e, 0x8c, 0x7e, 0x96, 0xca, 0x15, 0x95, 0xe3, 0x2a, 0x70, 0x41, 0xd1, 0x68, 0xca, 0xa7, 0x34, 0x43, 0xb8, 0x85, 0xbf, 0x7f, 0x61, 0x4a, 0xe1, 0x21, 0x2e, 0x3b, 0x5a, 0xdd, 0xa2, 0x9d, 0xfa, 0xd5, 0x01, 0xb8, 0xb1, 0xa8, 0x1c, 0x3f, 0x48, 0xa4, 0x56, 0xe1, 0x33, 0xad, 0x52, 0xda, 0x2a, 0xbc, 0xe5, 0xd6, 0xe7, 0x82, 0xf2, 0x75, 0xc9 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x07, 0x7b, 0xb2, 0x73, 0x32, 0x34, 0x86, 0xec, 0x4c, 0x25, 0xed, 0x67, 0x06, 0x34, 0x1a, 0xa8, 0xa6, 0x7a, 0xec, 0x58, 0x43, 0x0d, 0x53, 0x3f, 0xe5, 0x86, 0xc6, 0xb9, 0x4f, 0x57, 0x0a, 0x3b, 0x42, 0x90, 0xc4, 0x5c, 0x0b, 0xdd, 0x94, 0x68, 0x1f, 0x29, 0xa4, 0xb7, 0x58, 0x8e, 0xea, 0x80, 0x39, 0xcc, 0xa1, 0xc5, 0xb8, 0x0b, 0x82, 0x70, 0x27, 0x9d, 0xd0, 0xa9, 0xc5, 0x09, 0x39, 0x11, 0x93, 0xe3, 0xd5, 0xc2, 0x5c, 0x10, 0x75, 0xc4, 0xa1, 0xd3, 0xdc, 0x32, 0x74, 0x06, 0x6d, 0xab, 0x81, 0x7f, 0xb5, 0x1b, 0x16, 0xbc, 0x26, 0x7e, 0xd9, 0xa9, 0x98, 0x0f, 0xfb, 0xc0, 0x92, 0x85, 0xd9, 0x7f, 0x11, 0x2f, 0x15, 0x26, 0x95, 0xe6, 0xe0, 0x9c, 0xae, 0x72, 0xbb, 0x55, 0x06, 0x6c, 0xb9, 0xdb, 0xd0, 0x98, 0xa7, 0x5c, 0xeb, 0x47, 0xb4, 0x62, 0x72, 0x00, 0x5c, 0x6b, 0xd2, 0x15 } -, - /* Prime 1 */ - 64, - { 0xe9, 0x4e, 0xa6, 0xb6, 0x19, 0xbe, 0xc3, 0xe4, 0x78, 0x87, 0x8e, 0x87, 0x8c, 0xf1, 0x23, 0xb7, 0xa9, 0xf1, 0x2c, 0xab, 0xb1, 0x95, 0xe0, 0xaa, 0xe0, 0x22, 0xf3, 0x17, 0x73, 0x46, 0x69, 0x31, 0x38, 0xb1, 0x1a, 0x86, 0xfa, 0x5c, 0xb7, 0x55, 0x5a, 0x10, 0xb8, 0xe4, 0x62, 0x2c, 0xe9, 0x52, 0x0c, 0x57, 0x2b, 0xef, 0x29, 0x1d, 0xf7, 0x0a, 0x16, 0xd8, 0x85, 0xf5, 0x97, 0xe5, 0x90, 0x4d } -, - /* Prime 2 */ - 64, - { 0xbb, 0xcf, 0xcc, 0x5a, 0x60, 0x95, 0x34, 0xee, 0x43, 0x4a, 0x6c, 0xbc, 0xa3, 0xf7, 0xe9, 0x62, 0xe7, 0x6d, 0x45, 0x5e, 0x32, 0x64, 0xc1, 0x9f, 0x60, 0x5f, 0x6e, 0x5f, 0xf6, 0x13, 0x7c, 0x65, 0xc5, 0x6d, 0x7f, 0xb3, 0x44, 0xcd, 0x52, 0xbc, 0x93, 0x37, 0x4f, 0x3d, 0x16, 0x6c, 0x9f, 0x0c, 0x6f, 0x9c, 0x50, 0x6b, 0xad, 0x19, 0x33, 0x09, 0x72, 0xd2, 0x1c, 0xac, 0x19, 0xce, 0x99, 0x6d } -, - /* Prime exponent 1 */ - 64, - { 0xe8, 0xa6, 0x0d, 0x88, 0x39, 0x54, 0x09, 0x73, 0xa2, 0xdd, 0x4a, 0x3b, 0xd1, 0x48, 0x05, 0x1d, 0xf8, 0xd1, 0x0e, 0x82, 0x87, 0xab, 0xb5, 0x45, 0xb0, 0x0c, 0x29, 0xec, 0x90, 0x7e, 0xfe, 0x16, 0x9f, 0x39, 0xbc, 0x02, 0x2d, 0x56, 0x97, 0x5a, 0xfd, 0x5c, 0xff, 0x82, 0x7e, 0x83, 0xda, 0x86, 0x7e, 0xd7, 0xce, 0x6f, 0xc6, 0xc8, 0xa2, 0xb7, 0xe4, 0xe0, 0x35, 0x75, 0x19, 0xeb, 0x49, 0x61 } -, - /* Prime exponent 2 */ - 64, - { 0x8f, 0xf2, 0xe2, 0x27, 0x37, 0x35, 0xc5, 0x5f, 0x05, 0x56, 0x6a, 0xe7, 0x5f, 0x29, 0xa9, 0xc9, 0x33, 0xa6, 0x2d, 0xef, 0xd7, 0xe2, 0x20, 0x01, 0x7f, 0x05, 0x45, 0xfc, 0xe9, 0x07, 0xe0, 0x65, 0xc4, 0x9f, 0x7b, 0xac, 0x34, 0x84, 0xc6, 0xf0, 0x60, 0x49, 0x99, 0x43, 0x32, 0x07, 0xc9, 0x13, 0xe8, 0x0b, 0xc0, 0x1b, 0xf7, 0x8d, 0x83, 0xef, 0xaf, 0x00, 0xda, 0x17, 0x12, 0xa4, 0xa6, 0x35 } -, - /* Coefficient */ - 64, - { 0x5f, 0x1f, 0xf9, 0x6a, 0x8a, 0x90, 0x19, 0x78, 0x4f, 0x92, 0x26, 0xe2, 0x5c, 0x9b, 0xfe, 0x25, 0x08, 0x02, 0x39, 0x43, 0x73, 0x90, 0x25, 0xdd, 0x6b, 0xab, 0x03, 0x7f, 0xf4, 0x7d, 0xc6, 0x42, 0x49, 0x85, 0x15, 0xc2, 0xf9, 0xe6, 0xff, 0x60, 0x60, 0xc5, 0xb7, 0xd2, 0x34, 0x30, 0xd8, 0xd5, 0x0f, 0x1c, 0x0f, 0x6d, 0x50, 0xc1, 0x80, 0xb4, 0xae, 0xa8, 0xa4, 0xa8, 0x2f, 0xcd, 0x2b, 0x74 } - -} -, -{{ - "PKCS#1 v1.5 Encryption Example 5.1", - /* Message */ - 53, - { 0x5d, 0xc9, 0xf8, 0xb1, 0x2d, 0xc8, 0x12, 0xa0, 0x9a, 0xa4, 0xb0, 0x6d, 0xfc, 0xb5, 0x7e, 0x1d, 0x2e, 0x8d, 0x1c, 0x7d, 0x2c, 0x07, 0x6b, 0x25, 0xd5, 0xc1, 0x8e, 0xdb, 0xc0, 0x46, 0xbd, 0x63, 0xc7, 0xca, 0x4a, 0x59, 0x9f, 0x18, 0xde, 0x26, 0xf3, 0xbe, 0x73, 0x8c, 0xc2, 0x8d, 0x16, 0x67, 0x2c, 0x00, 0x6e, 0x4d, 0x9c } -, - /* Seed */ - 72, - { 0x43, 0xd6, 0x05, 0xa5, 0x74, 0x0a, 0x97, 0x0b, 0x32, 0x37, 0x27, 0xaf, 0x35, 0x2a, 0x1b, 0xd4, 0x8d, 0xe6, 0x9d, 0x95, 0x05, 0xe2, 0x2c, 0x2f, 0xad, 0x03, 0x0c, 0x3b, 0x84, 0xb6, 0xde, 0xa2, 0xd2, 0x2f, 0x91, 0x64, 0x06, 0xa7, 0x69, 0x3c, 0xf5, 0x06, 0xc2, 0xd2, 0x51, 0x88, 0x6f, 0x02, 0x20, 0x3e, 0x3f, 0x76, 0x55, 0xa3, 0x0a, 0x68, 0x37, 0xaf, 0x8a, 0x8c, 0xbe, 0xc7, 0xb5, 0xc9, 0x2f, 0xc0, 0x4c, 0x8c, 0x18, 0xdf, 0xe9, 0xd3 } -, - /* Encryption */ - 128, - { 0x21, 0x5a, 0x35, 0xf4, 0xc0, 0x43, 0x5b, 0x07, 0xed, 0x5d, 0x2c, 0x4b, 0x68, 0x65, 0xbc, 0x28, 0x1c, 0xea, 0x70, 0x50, 0xcf, 0xea, 0x7a, 0x7e, 0x86, 0xe0, 0x3f, 0x8a, 0xcb, 0x28, 0xb5, 0x8d, 0xbe, 0xe6, 0x54, 0x58, 0x91, 0x9c, 0xea, 0xa5, 0xa3, 0x3e, 0xdd, 0x98, 0x20, 0x1e, 0xa6, 0xe7, 0x63, 0x2d, 0x76, 0x22, 0xd5, 0xa5, 0x1d, 0x35, 0xa3, 0x5f, 0xed, 0xe8, 0x6e, 0xf2, 0x03, 0xee, 0xf6, 0xeb, 0x34, 0x75, 0xec, 0x8f, 0x19, 0xe6, 0x9c, 0x0e, 0xd5, 0x2c, 0x05, 0xdd, 0x7d, 0x59, 0xe3, 0x53, 0xf5, 0x2b, 0x67, 0x10, 0xaf, 0x40, 0x26, 0x65, 0x55, 0x04, 0x10, 0x7d, 0xdb, 0x86, 0xf9, 0x57, 0xe6, 0xc0, 0x6b, 0xa6, 0x7b, 0x1f, 0x4f, 0xc9, 0xf1, 0x21, 0xe1, 0x5f, 0x82, 0x73, 0x67, 0x09, 0xd2, 0xde, 0x8d, 0x77, 0x43, 0x2d, 0xf0, 0x8d, 0xcc, 0xd2, 0xa0, 0xcc, 0x77, 0x04 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Encryption Example 5.2", - /* Message */ - 16, - { 0xd7, 0x74, 0x07, 0xd8, 0xf6, 0x9f, 0x80, 0xdc, 0x08, 0xeb, 0xa5, 0xf4, 0x26, 0x28, 0x2d, 0xe7 } -, - /* Seed */ - 109, - { 0xb8, 0x29, 0xc7, 0x89, 0xbe, 0x38, 0x1c, 0xd5, 0x9d, 0xe2, 0x14, 0x89, 0xdb, 0xa1, 0x41, 0xe0, 0xbd, 0x1f, 0xa8, 0xa3, 0xc3, 0x82, 0x6d, 0x59, 0xc6, 0xd1, 0x10, 0xe7, 0xdf, 0x72, 0x42, 0xba, 0x98, 0xc4, 0x7a, 0x43, 0x92, 0xc7, 0xf2, 0xac, 0x1c, 0x6e, 0x9d, 0xae, 0x22, 0xb9, 0xeb, 0x74, 0xa7, 0x64, 0x36, 0x08, 0x8b, 0xd0, 0xba, 0x6e, 0x19, 0x91, 0xe1, 0x9e, 0x3a, 0xf7, 0x9c, 0xf3, 0xf7, 0xde, 0xfb, 0x6a, 0x11, 0x61, 0x80, 0x25, 0x34, 0xba, 0x0e, 0x7e, 0xd1, 0x65, 0x34, 0x93, 0x88, 0x72, 0xec, 0xa6, 0x77, 0x05, 0x8a, 0xc7, 0x34, 0x67, 0xd4, 0x9e, 0xd1, 0x12, 0x5b, 0x50, 0xdf, 0xe5, 0xd6, 0xd6, 0x5a, 0x5d, 0x24, 0x53, 0x99, 0xb6, 0xbf, 0x1b, 0xf1 } -, - /* Encryption */ - 128, - { 0x2d, 0x48, 0x06, 0xcf, 0xaf, 0xe4, 0xaf, 0x36, 0xbd, 0x02, 0xf6, 0x2d, 0x6a, 0x43, 0xb0, 0x0b, 0x41, 0x6f, 0x70, 0x8e, 0x96, 0x85, 0xb1, 0x7a, 0xc8, 0xe3, 0xa4, 0xd8, 0xc2, 0x91, 0x80, 0x93, 0x05, 0x76, 0x9d, 0x78, 0x98, 0xf6, 0xfc, 0x85, 0x91, 0x7b, 0xa2, 0xfd, 0x8e, 0x58, 0x9f, 0xf7, 0xa8, 0xbb, 0x84, 0xbb, 0x7c, 0x12, 0x20, 0x2e, 0xd2, 0x79, 0xe0, 0x64, 0x09, 0xa5, 0xc0, 0xa7, 0xd3, 0x24, 0xbc, 0x46, 0xae, 0x4f, 0x92, 0x82, 0xc9, 0x02, 0x3d, 0x3d, 0xfb, 0x3a, 0x79, 0x15, 0xde, 0xfc, 0x16, 0x4b, 0x3f, 0x08, 0x26, 0x6a, 0xcf, 0x12, 0x41, 0xf8, 0x26, 0x24, 0x98, 0x15, 0x07, 0x41, 0x4e, 0x56, 0x29, 0x78, 0x35, 0x1d, 0xc8, 0xb7, 0xa7, 0x9e, 0xf5, 0x31, 0x40, 0x21, 0x01, 0xa8, 0xd3, 0xd3, 0xea, 0xa3, 0x53, 0x9b, 0xbf, 0x62, 0xaa, 0xd9, 0x9a, 0x3b, 0xb1, 0x1e } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.3", - /* Message */ - 2, - { 0x23, 0x8a } -, - /* Seed */ - 123, - { 0xa5, 0x88, 0x1a, 0xcf, 0xf3, 0x52, 0x9f, 0x25, 0x1b, 0x1b, 0x9c, 0x61, 0x9c, 0xe9, 0xf9, 0xdf, 0x91, 0xe0, 0xa0, 0x3d, 0xd8, 0x89, 0x16, 0x36, 0x46, 0x87, 0x1a, 0x62, 0x72, 0x07, 0xee, 0xf1, 0x47, 0x68, 0x0c, 0x32, 0xf4, 0x50, 0xa7, 0x76, 0xe1, 0x9f, 0x54, 0xec, 0x05, 0x5d, 0xc6, 0x8b, 0x04, 0xbd, 0x4d, 0x89, 0x37, 0x6d, 0xf3, 0xea, 0xfa, 0x6f, 0xca, 0xf6, 0x0e, 0xb8, 0x31, 0x84, 0x39, 0x10, 0xb6, 0x25, 0xb6, 0x4f, 0x25, 0xd9, 0x29, 0x9a, 0xfc, 0x30, 0x6a, 0x23, 0x76, 0x53, 0x80, 0x45, 0x51, 0x94, 0xb7, 0x5d, 0xc0, 0x13, 0x5d, 0x27, 0xc3, 0xb7, 0xd7, 0x2d, 0xf9, 0x08, 0x77, 0x5c, 0x7e, 0x90, 0xbe, 0xfc, 0x0c, 0x5a, 0xdf, 0x74, 0xa1, 0x69, 0xed, 0x58, 0x68, 0xf3, 0xd6, 0x34, 0x32, 0x7a, 0x05, 0x78, 0x18, 0x92, 0x54, 0x45, 0x43 } -, - /* Encryption */ - 128, - { 0x77, 0x10, 0xee, 0xa8, 0x65, 0x7d, 0xfd, 0x15, 0x65, 0x16, 0x65, 0x62, 0xdf, 0x0e, 0x2e, 0x84, 0x0e, 0xc3, 0xe3, 0xde, 0xdc, 0x0b, 0x80, 0x2b, 0xb0, 0x21, 0x3e, 0x47, 0xa5, 0xce, 0x97, 0xf4, 0xb8, 0x5b, 0xa9, 0xba, 0x14, 0x19, 0x77, 0x36, 0x3d, 0x8f, 0x54, 0xb0, 0x6d, 0x57, 0x8d, 0x5b, 0x2a, 0x96, 0xe9, 0x69, 0xcf, 0xa9, 0x15, 0xdf, 0x21, 0x9f, 0x00, 0x2a, 0x85, 0xd0, 0x32, 0x57, 0x04, 0x7b, 0x31, 0x16, 0xa1, 0xc4, 0xdd, 0xaf, 0x79, 0x1d, 0x93, 0x98, 0x2d, 0x1b, 0x9f, 0xfa, 0x24, 0x31, 0x86, 0xe9, 0xe2, 0xb1, 0x9e, 0xf0, 0x74, 0x1c, 0xe9, 0x8d, 0xe2, 0xa4, 0xa1, 0x58, 0x6e, 0x50, 0x12, 0xc4, 0x81, 0xde, 0x23, 0xa0, 0xef, 0xf8, 0x82, 0xfd, 0x62, 0x38, 0x38, 0xd2, 0x01, 0x1f, 0x4f, 0x63, 0x73, 0x8a, 0xff, 0xd7, 0xef, 0xb8, 0xc5, 0x0f, 0x46, 0xa6, 0xc2, 0x0e } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.4", - /* Message */ - 33, - { 0x25, 0xa2, 0x7e, 0xb1, 0xb2, 0x1f, 0x10, 0xcf, 0x9d, 0x57, 0x1c, 0x33, 0x05, 0x61, 0x0b, 0x97, 0xf0, 0xda, 0xee, 0x39, 0x90, 0x5c, 0x65, 0x94, 0xbf, 0xbf, 0x45, 0x2a, 0x9a, 0x00, 0xd9, 0xe8, 0x2b } -, - /* Seed */ - 92, - { 0x25, 0x04, 0x61, 0x80, 0x11, 0xc6, 0x73, 0xdb, 0x3c, 0x41, 0x22, 0x79, 0xdc, 0x8a, 0xd1, 0x65, 0xab, 0x7b, 0x64, 0x73, 0xae, 0x19, 0x5e, 0x8d, 0x6d, 0x41, 0x21, 0x49, 0x18, 0x19, 0x8b, 0x34, 0x51, 0xa6, 0x50, 0x8d, 0x61, 0x38, 0xce, 0xdc, 0x51, 0x8d, 0x80, 0x12, 0xba, 0x0e, 0xc7, 0x9b, 0x38, 0x6a, 0xf8, 0xfa, 0x40, 0xb0, 0x34, 0x78, 0xbb, 0xf2, 0xba, 0x06, 0x5e, 0x58, 0x2d, 0x61, 0x95, 0xcc, 0xbe, 0x15, 0x8f, 0x11, 0x78, 0x1e, 0xae, 0xb1, 0xb1, 0x72, 0x0b, 0x72, 0xd9, 0xb5, 0x21, 0x27, 0xde, 0xb9, 0x55, 0x17, 0x11, 0xe8, 0x87, 0xdb, 0xd0, 0xb8 } -, - /* Encryption */ - 128, - { 0x35, 0x72, 0xbd, 0xea, 0x23, 0x05, 0xe1, 0x78, 0x5c, 0x75, 0x4d, 0xe7, 0x44, 0xc4, 0xfa, 0x3f, 0xa2, 0xcb, 0x75, 0x71, 0x60, 0xe5, 0xcb, 0x39, 0xa3, 0x14, 0x97, 0xe1, 0x48, 0x5b, 0xbd, 0x7c, 0x08, 0x99, 0xc5, 0x35, 0x85, 0xb2, 0xbb, 0xbb, 0xd9, 0x90, 0x81, 0xb4, 0x16, 0xef, 0xc6, 0x85, 0x78, 0xdb, 0x78, 0xe0, 0xec, 0xd0, 0x8d, 0xa7, 0xa3, 0x95, 0x3e, 0x38, 0x6b, 0xb2, 0x5c, 0x12, 0xbb, 0xb8, 0x7c, 0x78, 0x94, 0x42, 0x83, 0xa8, 0xc8, 0x01, 0x87, 0xb4, 0x50, 0x8d, 0xab, 0xbc, 0x76, 0x97, 0xf4, 0x3a, 0x8a, 0xe7, 0x8a, 0x33, 0xfe, 0xbb, 0x15, 0xf3, 0xcd, 0x58, 0x1c, 0x80, 0xd4, 0x9b, 0x97, 0x1b, 0xcb, 0xd4, 0x8e, 0x44, 0x14, 0x2f, 0x58, 0xc2, 0xc9, 0x1a, 0xdb, 0x1a, 0xe1, 0x45, 0xaa, 0x9a, 0x83, 0xb3, 0xc5, 0x81, 0x5a, 0xa1, 0xa8, 0xff, 0x8d, 0xd2, 0x31, 0xfe } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.5", - /* Message */ - 6, - { 0x59, 0xcf, 0x0b, 0x6b, 0x50, 0xea } -, - /* Seed */ - 119, - { 0x2b, 0xf1, 0x91, 0x60, 0xdf, 0x69, 0x88, 0x93, 0x5b, 0xd2, 0x46, 0x10, 0x6b, 0x89, 0x09, 0xdd, 0x7b, 0xb3, 0xe5, 0x16, 0x90, 0xdf, 0x84, 0xd7, 0x6e, 0x4d, 0x31, 0xac, 0x82, 0x10, 0x44, 0x56, 0x34, 0x6b, 0x4c, 0x3c, 0x9b, 0xa7, 0xb5, 0xe9, 0xe6, 0x8e, 0xe2, 0x08, 0x6c, 0x84, 0x73, 0xc6, 0x83, 0x02, 0xe2, 0x59, 0x9a, 0xbf, 0x6b, 0x31, 0xce, 0xb3, 0xf7, 0x81, 0xad, 0x6b, 0x56, 0x89, 0x86, 0xf2, 0x1c, 0xd6, 0xd7, 0x55, 0x32, 0x8f, 0xb8, 0x3a, 0xfd, 0x55, 0x48, 0x50, 0x1d, 0x07, 0x0a, 0xc2, 0xdd, 0x8f, 0x5c, 0xdf, 0xb6, 0x2c, 0xef, 0x54, 0x5e, 0x81, 0x5f, 0xe3, 0x82, 0xbc, 0x0c, 0x67, 0xb6, 0x76, 0xe5, 0x45, 0x6e, 0xbb, 0x9a, 0xb6, 0x7d, 0xf4, 0x77, 0x40, 0xc6, 0xa4, 0x3d, 0xe3, 0xf9, 0xa2, 0x47, 0x7a, 0x9b } -, - /* Encryption */ - 128, - { 0x2e, 0xd5, 0x91, 0xfd, 0x4b, 0x35, 0x7e, 0x94, 0xf4, 0x81, 0xba, 0x84, 0xff, 0x4e, 0xbe, 0x7a, 0xe4, 0x31, 0x05, 0x4e, 0x5c, 0xd9, 0x8a, 0x99, 0x58, 0x96, 0x48, 0xe6, 0x16, 0xcd, 0x68, 0xe0, 0xd4, 0x72, 0x4f, 0xa8, 0xa6, 0xc5, 0x99, 0x68, 0x6b, 0xfe, 0xe1, 0x74, 0x7a, 0xd0, 0x77, 0xdb, 0xed, 0xad, 0x45, 0xf1, 0x24, 0x4d, 0x7f, 0x8e, 0x00, 0xda, 0x3a, 0x3a, 0x06, 0xd2, 0x31, 0x32, 0xd3, 0x17, 0x1d, 0x74, 0x4e, 0xf1, 0x4e, 0x1e, 0x97, 0xcd, 0xda, 0x10, 0x9b, 0xd2, 0xe5, 0x56, 0xa5, 0xfc, 0x7b, 0xbc, 0x60, 0x9a, 0x7f, 0xf2, 0x4c, 0xfa, 0xbe, 0xf4, 0xb5, 0x6c, 0xbb, 0xb7, 0x0e, 0x05, 0x06, 0x53, 0xb6, 0x98, 0x48, 0xd7, 0x11, 0x30, 0x75, 0xa5, 0xde, 0xbe, 0x7a, 0x46, 0x82, 0x15, 0xf8, 0xdc, 0x08, 0xe7, 0xef, 0x84, 0xfd, 0x55, 0x77, 0x8c, 0xd5, 0xb5, 0x96, 0xe5 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.6", - /* Message */ - 57, - { 0xe9, 0x44, 0x52, 0xf5, 0x0a, 0x5e, 0xdb, 0xe6, 0x75, 0x73, 0xab, 0x22, 0x30, 0x9f, 0xa2, 0x1b, 0xab, 0xc6, 0xd2, 0x25, 0x20, 0xe6, 0xe8, 0x3b, 0xf7, 0x2e, 0x7a, 0xfa, 0x6d, 0x71, 0xe2, 0x02, 0x96, 0xda, 0xea, 0xf5, 0x4a, 0x60, 0xc8, 0x03, 0x63, 0x04, 0x87, 0x9a, 0x21, 0x31, 0xd1, 0x78, 0x78, 0x0e, 0x34, 0x8e, 0xe0, 0x12, 0x0b, 0x99, 0x7c } -, - /* Seed */ - 68, - { 0xc5, 0x30, 0x44, 0x3a, 0x16, 0xef, 0xd8, 0xd6, 0xd7, 0x2a, 0xb4, 0x44, 0x3f, 0x8d, 0xb2, 0x44, 0x91, 0xde, 0x99, 0xd5, 0xaa, 0xbe, 0x51, 0x88, 0xb3, 0xf6, 0x1d, 0xc0, 0x48, 0x3b, 0x7e, 0xe0, 0x0b, 0x1c, 0x13, 0x25, 0x9b, 0x8a, 0xe2, 0x40, 0x9f, 0x1a, 0xe6, 0x2d, 0x99, 0x30, 0xc1, 0x1a, 0x4d, 0xde, 0xf3, 0xe8, 0x35, 0x82, 0x93, 0x88, 0x93, 0xf9, 0xac, 0x66, 0x8f, 0x79, 0xc6, 0x4c, 0x7f, 0x5d, 0x79, 0x6d } -, - /* Encryption */ - 128, - { 0x0e, 0xee, 0x90, 0xc7, 0x08, 0x18, 0x22, 0x1a, 0xe2, 0x70, 0x4b, 0xbe, 0x38, 0xd6, 0x8f, 0x8e, 0x15, 0x4c, 0x6e, 0xe7, 0xad, 0xe5, 0x3e, 0x2a, 0x1f, 0x4d, 0x1d, 0xba, 0xac, 0x98, 0xc5, 0x75, 0x91, 0xeb, 0xb6, 0xc6, 0x38, 0xbc, 0xb6, 0x8e, 0x18, 0x14, 0x35, 0xb7, 0x00, 0x01, 0xba, 0xd1, 0x80, 0x19, 0x2b, 0xfd, 0xa0, 0x57, 0x32, 0xc0, 0x5e, 0x7f, 0xb5, 0xaf, 0x22, 0xaa, 0x89, 0xd2, 0xa8, 0xff, 0x80, 0xcf, 0x9f, 0x08, 0x62, 0xf0, 0x4c, 0x05, 0xca, 0xca, 0x3d, 0x2a, 0x3a, 0x5b, 0x07, 0x79, 0x94, 0x6c, 0x6d, 0xdf, 0xa0, 0x4c, 0xd7, 0x9f, 0xa1, 0x64, 0xd6, 0x02, 0xf1, 0xb7, 0xde, 0x5c, 0x95, 0xbe, 0x85, 0xe9, 0x60, 0x84, 0x67, 0xe2, 0x5c, 0x29, 0xd0, 0x35, 0xc4, 0x66, 0x09, 0x06, 0x26, 0x9f, 0x6d, 0xc0, 0x0a, 0x47, 0x2b, 0x04, 0x46, 0xea, 0x56, 0xe7, 0x2a, 0x59 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.7", - /* Message */ - 44, - { 0x1c, 0xbf, 0xa0, 0xe7, 0xb1, 0xa1, 0x0c, 0x13, 0xd7, 0x50, 0x77, 0xb1, 0xcb, 0xd8, 0x03, 0x10, 0xcd, 0x24, 0x10, 0x34, 0x0d, 0x5f, 0x53, 0x72, 0x93, 0x46, 0x4a, 0x67, 0x81, 0xa9, 0xcc, 0x30, 0x2c, 0xb5, 0x38, 0x0e, 0xd9, 0x26, 0x7b, 0x3e, 0xb2, 0x3c, 0xdb, 0x13 } -, - /* Seed */ - 81, - { 0xd3, 0x6b, 0x7e, 0x17, 0x99, 0x05, 0x9d, 0x1e, 0xd1, 0x34, 0x7b, 0x0b, 0xf8, 0x24, 0x7c, 0x6b, 0xe5, 0x18, 0x7d, 0x8f, 0x15, 0x21, 0x9e, 0x3c, 0xb6, 0x6e, 0xc6, 0x2e, 0x1a, 0xc4, 0x1f, 0xf7, 0xed, 0x35, 0x7e, 0xd7, 0xca, 0x03, 0x84, 0xe3, 0x1d, 0x39, 0x94, 0x85, 0x61, 0xfc, 0x16, 0xcb, 0xd9, 0x6b, 0x7e, 0x70, 0x42, 0x79, 0xe5, 0x72, 0xbf, 0x56, 0x4e, 0x06, 0xc3, 0xa3, 0x40, 0x1a, 0x27, 0x14, 0xdd, 0x51, 0xd7, 0x21, 0x5b, 0xeb, 0xa1, 0xc6, 0x61, 0x54, 0xf6, 0x0d, 0xd0, 0xcd, 0x4d } -, - /* Encryption */ - 128, - { 0x9c, 0x03, 0xdc, 0x01, 0x33, 0xa6, 0xe6, 0xaa, 0xba, 0x92, 0x05, 0x9b, 0xdf, 0x5a, 0x6c, 0xc1, 0xb1, 0x44, 0xb9, 0x0d, 0x2a, 0x94, 0xa4, 0x8e, 0x7b, 0x3c, 0xb9, 0x0b, 0x0b, 0xb6, 0xf6, 0x24, 0xc7, 0xb1, 0xd1, 0x72, 0x33, 0x1e, 0x43, 0x23, 0xd0, 0x8d, 0x2e, 0x8e, 0x09, 0x95, 0x32, 0xdc, 0xb3, 0xb2, 0xa8, 0x7c, 0xa4, 0x20, 0x74, 0x9f, 0xc6, 0x34, 0x5c, 0x0d, 0x86, 0xe9, 0xab, 0xca, 0x71, 0xaf, 0x09, 0xa0, 0x92, 0x9e, 0xde, 0xee, 0xde, 0x83, 0xe7, 0x22, 0x44, 0x20, 0x3b, 0x2b, 0xf4, 0x5c, 0xeb, 0x18, 0x7e, 0x9d, 0xb3, 0xc7, 0xd3, 0xad, 0x05, 0xb2, 0x3b, 0x59, 0x62, 0x4c, 0x24, 0x66, 0x96, 0xcf, 0xc7, 0x58, 0x06, 0x39, 0x14, 0x02, 0xe4, 0x44, 0xe3, 0x97, 0x49, 0x69, 0x88, 0xe1, 0xe1, 0xf4, 0x2c, 0x6a, 0xde, 0xd3, 0x0c, 0xdc, 0x93, 0x79, 0x37, 0xf3, 0x00, 0x54 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.8", - /* Message */ - 64, - { 0xe1, 0x72, 0xa6, 0xb8, 0xb4, 0x96, 0xf0, 0x77, 0x73, 0x8b, 0x74, 0xf6, 0xd8, 0xb2, 0x92, 0xdd, 0xa6, 0x07, 0xf2, 0xad, 0xbf, 0xb3, 0x72, 0xbe, 0x37, 0xee, 0x00, 0x08, 0x88, 0xbe, 0xa3, 0x1f, 0x99, 0xcb, 0xa1, 0xcf, 0x39, 0x32, 0xe4, 0xbe, 0x37, 0x17, 0xc9, 0xe1, 0x68, 0x90, 0x1a, 0x32, 0xd1, 0xb8, 0x20, 0xbe, 0x4f, 0xb0, 0x13, 0x75, 0x27, 0xa2, 0x48, 0x18, 0x77, 0xfe, 0x01, 0xee } -, - /* Seed */ - 61, - { 0x84, 0x0c, 0xe1, 0x3b, 0xbc, 0x96, 0x17, 0xdc, 0x9f, 0x3f, 0x26, 0xb1, 0x47, 0x30, 0x1a, 0x6f, 0x46, 0x30, 0x0d, 0x77, 0x81, 0xa5, 0xd9, 0x81, 0x16, 0x2f, 0x86, 0x92, 0x87, 0x37, 0x1f, 0x1d, 0x59, 0x58, 0x76, 0x4f, 0xb0, 0x0b, 0x05, 0x53, 0x70, 0xec, 0x71, 0x1b, 0xba, 0x52, 0x83, 0xfc, 0xb0, 0x0b, 0x83, 0xbc, 0x02, 0x17, 0x5e, 0xa1, 0x01, 0x7b, 0xcc, 0x83, 0x53 } -, - /* Encryption */ - 128, - { 0x99, 0x3e, 0x39, 0x6f, 0xb5, 0x7b, 0x2e, 0xa6, 0xa1, 0xa3, 0xfc, 0xed, 0x9a, 0x69, 0xd3, 0x61, 0xcb, 0xb6, 0x26, 0x5b, 0x26, 0x50, 0x3c, 0x17, 0x5f, 0x84, 0xc6, 0x1a, 0x41, 0xea, 0x3e, 0x1c, 0xe4, 0xfb, 0xb6, 0x2e, 0x01, 0xd6, 0x42, 0x0e, 0x22, 0xfe, 0xf1, 0xd9, 0xe2, 0x8a, 0x58, 0x83, 0xe2, 0xea, 0xc8, 0x2e, 0x05, 0xf3, 0x58, 0xea, 0x75, 0xf7, 0x7d, 0xa4, 0x89, 0x7b, 0x6b, 0x64, 0x9a, 0xa4, 0x74, 0x28, 0x39, 0x41, 0x93, 0xdd, 0xec, 0x64, 0x8c, 0x3a, 0x7f, 0xb8, 0x1c, 0xfc, 0xf4, 0xb5, 0x1c, 0xe3, 0xeb, 0xba, 0x78, 0xae, 0xdc, 0xa7, 0xbb, 0x91, 0x7b, 0x35, 0xb3, 0xe2, 0x2a, 0xeb, 0x20, 0x1c, 0xea, 0x96, 0x59, 0x2e, 0x50, 0xe0, 0xd2, 0x84, 0x1e, 0x7d, 0x2c, 0xe0, 0xd6, 0x9f, 0xf3, 0x03, 0x9d, 0xc0, 0x1e, 0x96, 0x4a, 0x97, 0x7a, 0x01, 0x76, 0x83, 0xb3, 0x87 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.9", - /* Message */ - 55, - { 0xc8, 0xf0, 0xea, 0x23, 0xe0, 0x66, 0x11, 0xe4, 0xfd, 0x27, 0xb6, 0x1d, 0xb7, 0x92, 0x0c, 0x55, 0xf3, 0xc0, 0xa2, 0x22, 0x12, 0x88, 0x38, 0xe4, 0xcd, 0xb0, 0x62, 0xe1, 0x76, 0xb2, 0x1f, 0xc2, 0x32, 0x53, 0x55, 0x8c, 0x5d, 0x40, 0xde, 0x2d, 0xfd, 0x62, 0x0f, 0xb7, 0xcd, 0xf1, 0x39, 0x9c, 0x2a, 0xf8, 0xfc, 0x77, 0xca, 0x33, 0x35 } -, - /* Seed */ - 70, - { 0x16, 0x4d, 0x77, 0xb5, 0xd2, 0x6a, 0xe6, 0xd7, 0xab, 0xe7, 0xca, 0xed, 0x62, 0x5d, 0x87, 0xc2, 0x11, 0xcc, 0x50, 0x9a, 0xd0, 0x17, 0x2c, 0x20, 0x83, 0x3d, 0x8f, 0x98, 0xca, 0xe3, 0x8a, 0x2c, 0x37, 0x0e, 0xf2, 0x1d, 0x40, 0x96, 0xda, 0x84, 0x1d, 0xbe, 0xee, 0x94, 0x8e, 0xc6, 0x34, 0x03, 0xca, 0xbd, 0x4a, 0x5f, 0x71, 0xac, 0xe4, 0x93, 0x64, 0xaa, 0x7d, 0xe2, 0x0f, 0x32, 0xc9, 0x88, 0x33, 0x7a, 0x11, 0x5f, 0x83, 0x46 } -, - /* Encryption */ - 128, - { 0x7a, 0x8f, 0x15, 0xee, 0xf5, 0x10, 0xad, 0xe8, 0xd5, 0xc3, 0x17, 0xf9, 0x06, 0x4a, 0xd7, 0xda, 0xe6, 0xc9, 0x3e, 0x7c, 0xf1, 0x56, 0xa7, 0x37, 0x22, 0x02, 0x32, 0x58, 0xf8, 0xb5, 0x74, 0x47, 0x34, 0x70, 0x00, 0x34, 0xa3, 0xde, 0x6f, 0x13, 0x7a, 0xf6, 0xe9, 0x00, 0x46, 0xd8, 0x6e, 0x9b, 0x90, 0x59, 0x0f, 0xa5, 0xa6, 0x50, 0xce, 0xf4, 0xfd, 0xb4, 0xd3, 0x36, 0x02, 0x33, 0xaf, 0x86, 0xf4, 0xa7, 0xa2, 0x3c, 0x24, 0x3d, 0x19, 0x51, 0xc6, 0x66, 0xb6, 0x73, 0xc3, 0x3c, 0x7d, 0xec, 0x4f, 0x51, 0xac, 0xe3, 0x4b, 0x80, 0x5c, 0x0a, 0x9e, 0x67, 0xe2, 0x09, 0xcc, 0x7f, 0x9e, 0xd6, 0x9b, 0x8f, 0x5e, 0xb5, 0xc5, 0x53, 0xe0, 0xf1, 0x5c, 0x10, 0x30, 0x4b, 0xf5, 0x6d, 0x7b, 0xe1, 0x71, 0xf3, 0x1c, 0xce, 0x88, 0xf3, 0x7d, 0x1f, 0xb4, 0xa2, 0xa0, 0x04, 0x18, 0x89, 0x75, 0x76 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.10", - /* Message */ - 49, - { 0x19, 0xdb, 0x24, 0x22, 0x05, 0xc0, 0x3d, 0x7f, 0xa9, 0x93, 0x5d, 0x9e, 0x04, 0xfa, 0x6e, 0xcf, 0x38, 0xa5, 0x1e, 0xa9, 0x98, 0xac, 0x8e, 0x4b, 0xac, 0xa6, 0xcd, 0xfd, 0x6a, 0x0a, 0xce, 0x1d, 0xf3, 0x67, 0xe7, 0x3d, 0x23, 0xc2, 0x40, 0xaf, 0x76, 0xb6, 0x2e, 0x9f, 0xe9, 0x21, 0x5f, 0xe9, 0x43 } -, - /* Seed */ - 76, - { 0xbe, 0x49, 0x52, 0x05, 0x55, 0x69, 0x56, 0xfa, 0xe2, 0xa2, 0x2e, 0xa7, 0x0c, 0xe1, 0x02, 0xde, 0x06, 0x6c, 0x9e, 0x58, 0x95, 0x96, 0x06, 0x21, 0x74, 0x84, 0xa5, 0xb1, 0x50, 0x36, 0xff, 0xa1, 0xd4, 0x61, 0x23, 0x9d, 0xd4, 0x7b, 0x4f, 0x38, 0x1c, 0xea, 0x71, 0x51, 0x6e, 0x2d, 0xb0, 0xfc, 0x36, 0x9d, 0x72, 0xb4, 0x40, 0x69, 0x65, 0x12, 0xa9, 0x72, 0x88, 0xf0, 0x6f, 0xc0, 0xbc, 0xeb, 0x96, 0x82, 0x86, 0xe9, 0x95, 0xe0, 0x2d, 0x21, 0x8d, 0x9c, 0x26, 0x62 } -, - /* Encryption */ - 128, - { 0x55, 0x12, 0xb3, 0x99, 0x9b, 0x30, 0xc9, 0xc1, 0x44, 0x0e, 0x59, 0x75, 0x93, 0x1d, 0x55, 0xf2, 0x1e, 0x9e, 0xb4, 0x22, 0xb6, 0x2d, 0xaf, 0xcd, 0xab, 0x5d, 0x50, 0x03, 0xa7, 0x5e, 0xb1, 0x24, 0x81, 0x99, 0x86, 0x36, 0x19, 0x13, 0x36, 0x1d, 0xfc, 0x46, 0xac, 0x29, 0xaa, 0xba, 0x8e, 0x1a, 0xa0, 0x2e, 0x1b, 0xa4, 0x44, 0x67, 0x16, 0x2d, 0x20, 0xf6, 0x3a, 0xd1, 0x70, 0xfe, 0x0d, 0x87, 0xa5, 0x3d, 0x93, 0xc6, 0x4e, 0x02, 0x6b, 0x12, 0xbe, 0x6b, 0xc2, 0xb8, 0xeb, 0x0e, 0x57, 0xc0, 0x39, 0xeb, 0x60, 0xf3, 0x2c, 0x4b, 0x52, 0x70, 0x35, 0xf7, 0x03, 0xa7, 0xa8, 0x37, 0x4b, 0xd7, 0xfa, 0xa7, 0xb5, 0x40, 0x4a, 0x3c, 0x5a, 0xad, 0xb7, 0x92, 0xe2, 0x5f, 0xf9, 0x28, 0x76, 0xb2, 0x3d, 0xd3, 0xa7, 0x42, 0x2c, 0x45, 0x26, 0x6c, 0x6d, 0x98, 0x6e, 0xec, 0x53, 0x34, 0xb9, 0xba } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.11", - /* Message */ - 35, - { 0x49, 0xa7, 0x61, 0xf8, 0xc1, 0x8e, 0xf9, 0x23, 0x62, 0xd6, 0xab, 0xb2, 0x4c, 0x07, 0xfc, 0x72, 0x82, 0x55, 0x84, 0x24, 0x53, 0x69, 0x4e, 0x17, 0x60, 0x58, 0x99, 0xf4, 0x37, 0xb3, 0x1a, 0xc9, 0x8d, 0xb5, 0x16 } -, - /* Seed */ - 90, - { 0xd8, 0xcd, 0x85, 0xed, 0xfa, 0x0a, 0x84, 0xd0, 0x76, 0xa9, 0xf8, 0xb2, 0xf9, 0x3d, 0xaa, 0xeb, 0xa9, 0xae, 0x37, 0x43, 0x81, 0xea, 0x4f, 0x8c, 0xea, 0xbc, 0x14, 0xf6, 0x2a, 0x4e, 0xd7, 0x63, 0x8c, 0x1e, 0x39, 0x67, 0x57, 0xde, 0x3a, 0xe2, 0xb7, 0xef, 0xa3, 0xa1, 0x7c, 0x9a, 0x55, 0x86, 0xda, 0x84, 0xa5, 0xe5, 0x0e, 0xcd, 0xed, 0x61, 0x08, 0x7f, 0xa6, 0xf0, 0xce, 0x93, 0x82, 0x87, 0x99, 0x8a, 0xc1, 0xb9, 0xbc, 0x33, 0x21, 0xa7, 0xed, 0x16, 0x0d, 0x28, 0x67, 0x04, 0xe0, 0x52, 0x6e, 0xce, 0x7b, 0x30, 0xb4, 0x68, 0x14, 0x64, 0x9f, 0xec } -, - /* Encryption */ - 128, - { 0x9b, 0x47, 0x82, 0x68, 0x40, 0x62, 0x12, 0xca, 0x05, 0x30, 0xf4, 0x31, 0xbd, 0xb2, 0x63, 0x72, 0x61, 0x50, 0x84, 0xca, 0x48, 0x8d, 0xa4, 0x34, 0x51, 0xd2, 0x5a, 0x22, 0xb3, 0x5a, 0xc6, 0xfc, 0x61, 0xe3, 0x70, 0x74, 0xa5, 0xc2, 0x2b, 0xc1, 0xc7, 0x01, 0xdb, 0x19, 0x32, 0xb8, 0xc5, 0x57, 0xb8, 0x48, 0x7c, 0xea, 0x56, 0x60, 0x50, 0xe4, 0x8a, 0xd6, 0xe0, 0x37, 0x6f, 0x8d, 0xb4, 0x19, 0x8c, 0x4d, 0x27, 0xdb, 0x2e, 0x6b, 0x28, 0xc2, 0x5a, 0xed, 0x83, 0x7e, 0xf4, 0x77, 0x42, 0xd5, 0xeb, 0x8e, 0xb1, 0xd8, 0xb4, 0x32, 0xc9, 0xd5, 0x73, 0xcd, 0x4b, 0x86, 0xfd, 0xf3, 0x2c, 0x52, 0xa3, 0xd0, 0xf6, 0xcf, 0x92, 0xcf, 0x3c, 0xd9, 0x51, 0x96, 0x77, 0xa5, 0x8b, 0x1d, 0x1d, 0x99, 0x4f, 0xc1, 0xc9, 0x05, 0x7a, 0xc1, 0x06, 0xe8, 0x16, 0x04, 0x59, 0x26, 0xb4, 0x5b, 0x00, 0xe5 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.12", - /* Message */ - 10, - { 0x84, 0xe8, 0x28, 0xf7, 0x15, 0xf2, 0x28, 0xa6, 0x02, 0x65 } -, - /* Seed */ - 115, - { 0xf7, 0xf2, 0x75, 0xa8, 0x53, 0xd4, 0xe1, 0x26, 0xd7, 0xd0, 0xc3, 0x8e, 0xf7, 0x03, 0xf3, 0xfb, 0xda, 0x7a, 0x95, 0x20, 0x78, 0x8d, 0x7a, 0x81, 0xa3, 0x1b, 0x05, 0x30, 0xd4, 0x3f, 0xe6, 0xc9, 0x4b, 0x1b, 0x1b, 0xb1, 0x08, 0x51, 0x20, 0x9d, 0xb2, 0x6a, 0xc4, 0xb8, 0x88, 0xae, 0xce, 0xea, 0x77, 0x13, 0x82, 0x4c, 0x29, 0x38, 0xb4, 0xc6, 0x43, 0x1b, 0x2b, 0x03, 0xc6, 0x93, 0xab, 0x7b, 0x54, 0x63, 0x15, 0x41, 0x54, 0x6a, 0xc4, 0x03, 0x94, 0x79, 0x85, 0x48, 0xfb, 0xba, 0x95, 0x88, 0x2d, 0x91, 0xa1, 0x7c, 0x27, 0xe7, 0xdd, 0x53, 0x02, 0x6c, 0x96, 0x79, 0x1e, 0xe5, 0x5f, 0x24, 0x7d, 0x7f, 0x89, 0x8f, 0xea, 0xb3, 0x70, 0x9a, 0x13, 0x2a, 0x78, 0x26, 0x66, 0xa1, 0x4d, 0x0d, 0xf1, 0xa8, 0x4e } -, - /* Encryption */ - 128, - { 0x4e, 0x3f, 0xe9, 0x6e, 0x8f, 0x96, 0xe5, 0xb3, 0xc6, 0x11, 0xca, 0xdb, 0x96, 0xed, 0x51, 0x04, 0x20, 0x98, 0xec, 0xc5, 0x47, 0xbe, 0x7b, 0x88, 0xf8, 0xde, 0xa7, 0x65, 0xae, 0x14, 0xe8, 0x35, 0x0c, 0xfe, 0x39, 0xdc, 0xb1, 0xc1, 0xd6, 0xe4, 0x17, 0x9c, 0xa4, 0x04, 0xd5, 0x38, 0x4d, 0x87, 0xb0, 0x66, 0x50, 0x75, 0xee, 0xd7, 0xda, 0x7a, 0xaf, 0x71, 0x00, 0x8e, 0x24, 0x67, 0xd7, 0x0b, 0xff, 0xf6, 0x23, 0xb4, 0x59, 0x4b, 0x6d, 0xff, 0xf9, 0x0e, 0x3d, 0x84, 0x85, 0xf9, 0x41, 0x89, 0x48, 0x6c, 0xa0, 0xca, 0x9e, 0x72, 0x2b, 0x2a, 0x77, 0x7e, 0x25, 0xb5, 0x82, 0xf7, 0xad, 0x4e, 0xc5, 0x10, 0x3a, 0xd7, 0x67, 0x85, 0x9a, 0xc5, 0x9a, 0x1b, 0x8c, 0x5c, 0x19, 0x71, 0x30, 0x17, 0x48, 0xfc, 0xc2, 0x64, 0xf6, 0xc9, 0x29, 0x36, 0x4a, 0x8d, 0x9a, 0xf4, 0x22, 0x55, 0xc0, 0xf6 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.13", - /* Message */ - 51, - { 0xc4, 0x79, 0x7e, 0x8a, 0x6f, 0x26, 0x9b, 0xf2, 0x5d, 0x4c, 0xb4, 0xec, 0x3f, 0xa4, 0x6f, 0x8f, 0x11, 0xe6, 0xb3, 0x69, 0xfb, 0xda, 0xec, 0x1e, 0x51, 0x97, 0x83, 0x58, 0xd4, 0x6f, 0x3c, 0xf3, 0xb8, 0x42, 0x91, 0x7d, 0x96, 0x7a, 0xa9, 0xd3, 0x0b, 0x18, 0x34, 0x53, 0x93, 0x7a, 0x68, 0x26, 0x56, 0xb2, 0x7b } -, - /* Seed */ - 74, - { 0x17, 0x77, 0x42, 0x19, 0x7f, 0x04, 0x11, 0x44, 0x3b, 0xd8, 0x7e, 0x28, 0xea, 0x88, 0xd5, 0x4b, 0x4f, 0x2c, 0x7a, 0xb1, 0xdc, 0xae, 0xd8, 0x1a, 0x56, 0xf8, 0xd7, 0x87, 0x91, 0x12, 0x44, 0x54, 0x02, 0x85, 0x04, 0xd3, 0x22, 0xe1, 0xde, 0x34, 0x60, 0x47, 0xa4, 0x93, 0x93, 0x3e, 0x87, 0x62, 0x8c, 0xe0, 0x8b, 0x06, 0xc0, 0x17, 0x08, 0x2d, 0xcc, 0xd3, 0x8b, 0x48, 0x94, 0x65, 0x14, 0xea, 0x37, 0x7c, 0x2d, 0xfc, 0x75, 0x2a, 0xdc, 0x24, 0xfb, 0x57 } -, - /* Encryption */ - 128, - { 0x79, 0x84, 0xc3, 0xba, 0xd8, 0x6a, 0x54, 0x79, 0x90, 0xe0, 0x47, 0x5a, 0x48, 0x4f, 0x8d, 0xba, 0x5d, 0x4d, 0xce, 0xb0, 0xd3, 0xe3, 0xfc, 0xe0, 0x71, 0xd6, 0xf8, 0x71, 0x76, 0xb7, 0xcb, 0xe6, 0xf8, 0x11, 0x2d, 0x81, 0xd7, 0xcd, 0xaa, 0xd7, 0x7e, 0xd0, 0xd5, 0x78, 0x8e, 0x65, 0xf8, 0xbf, 0x5f, 0x0c, 0x2a, 0xd0, 0xdf, 0x07, 0xcc, 0xdf, 0x54, 0xb2, 0xda, 0xce, 0xfc, 0x19, 0xba, 0x65, 0x20, 0x1c, 0xcf, 0xd3, 0x61, 0xd1, 0x86, 0xb7, 0xd9, 0xe2, 0x69, 0xaa, 0x1e, 0x6a, 0xd2, 0xc7, 0x2b, 0xd2, 0x3f, 0x58, 0x08, 0x4f, 0xdb, 0xc3, 0xbc, 0x60, 0xe1, 0x7a, 0x33, 0xe3, 0xc5, 0x5a, 0x95, 0xeb, 0x0c, 0x38, 0xa0, 0x81, 0xbc, 0x0d, 0x39, 0x81, 0xdb, 0x26, 0xa7, 0x21, 0x2d, 0x6f, 0x69, 0x1b, 0x33, 0x6d, 0xac, 0x46, 0xb6, 0x4a, 0xe2, 0x25, 0x38, 0xa7, 0xb0, 0x08, 0x7f, 0x25 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.14", - /* Message */ - 20, - { 0xa5, 0xe9, 0xde, 0xb1, 0xc2, 0x0f, 0x98, 0x2d, 0x5b, 0x7d, 0x4b, 0x87, 0xd7, 0x99, 0x46, 0x1f, 0x05, 0x3d, 0x91, 0x9e } -, - /* Seed */ - 105, - { 0x59, 0x75, 0x9c, 0xf5, 0xf8, 0x38, 0xd9, 0x52, 0x49, 0x3d, 0x0f, 0x42, 0x81, 0xe3, 0xea, 0x0f, 0xe2, 0x16, 0x97, 0x1c, 0x0a, 0x2e, 0x24, 0x54, 0xb9, 0x6c, 0x8a, 0x11, 0xb4, 0xc6, 0x91, 0x27, 0x15, 0x90, 0x24, 0xdb, 0x6e, 0xc5, 0xc3, 0x36, 0x40, 0xd1, 0x20, 0x29, 0x58, 0x99, 0xf6, 0x66, 0x6c, 0x94, 0x17, 0xb2, 0x02, 0xa8, 0x6c, 0x26, 0xef, 0xd7, 0xc6, 0x13, 0x4c, 0x92, 0xfd, 0x86, 0xb8, 0x32, 0x3d, 0x17, 0x4a, 0x62, 0x53, 0x48, 0x81, 0x38, 0x2d, 0x7c, 0x6c, 0x9e, 0x1b, 0x8c, 0x1e, 0x95, 0xda, 0xf2, 0x10, 0xc3, 0xe9, 0xba, 0x43, 0xe5, 0x88, 0x79, 0xf3, 0x4f, 0x2f, 0xa7, 0x1e, 0xf6, 0xae, 0x4b, 0x68, 0xd6, 0x41, 0x47, 0xbe } -, - /* Encryption */ - 128, - { 0x70, 0xac, 0x10, 0x2d, 0x07, 0x1e, 0x3d, 0x90, 0x22, 0x81, 0x83, 0x62, 0x16, 0xe0, 0x81, 0x29, 0x0b, 0xb5, 0xdf, 0xcd, 0x56, 0x68, 0xd1, 0x1d, 0xae, 0xfa, 0x0a, 0xb0, 0x64, 0x59, 0x9d, 0x0f, 0x91, 0x4b, 0x47, 0x29, 0x61, 0x37, 0x5b, 0xbf, 0x5f, 0x2a, 0x66, 0x6f, 0xae, 0x0f, 0x6a, 0x25, 0xba, 0xfd, 0x44, 0xf6, 0x65, 0xc1, 0x7c, 0x14, 0x4d, 0xc4, 0xd4, 0xcc, 0x0a, 0x5d, 0x5b, 0xa5, 0x5c, 0x47, 0xa4, 0xcd, 0xe9, 0x59, 0xb3, 0x2b, 0xaa, 0x52, 0x32, 0xa0, 0x7f, 0xbf, 0x93, 0x78, 0xc9, 0xc5, 0x3c, 0xa2, 0xb3, 0x77, 0x81, 0xc9, 0x3a, 0x1c, 0xc8, 0xd6, 0x52, 0x94, 0x78, 0xa1, 0xc6, 0x73, 0x03, 0x4d, 0xda, 0x7f, 0xf3, 0x35, 0x60, 0x78, 0x6a, 0x46, 0x4f, 0x5b, 0x4a, 0x55, 0x9c, 0x62, 0x6a, 0xe2, 0x95, 0xbc, 0x91, 0xd0, 0xee, 0xd9, 0x37, 0x5f, 0x49, 0xe3, 0xe4, 0xaa } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.15", - /* Message */ - 63, - { 0x73, 0x9f, 0xa7, 0x6d, 0xbd, 0x12, 0x73, 0x03, 0xb7, 0xab, 0xf9, 0x3e, 0x1d, 0x7b, 0xa7, 0x29, 0x75, 0x5d, 0x6c, 0x81, 0x1b, 0x5e, 0x93, 0x35, 0x5e, 0x0c, 0x01, 0x1f, 0x74, 0x46, 0x4c, 0x7d, 0xb4, 0x79, 0x19, 0x3c, 0x3f, 0xb7, 0x38, 0x0a, 0x62, 0xa0, 0xc0, 0x06, 0xa2, 0xd1, 0xdc, 0x49, 0xa7, 0x66, 0xaf, 0x63, 0xfb, 0xa4, 0x52, 0x7c, 0xd1, 0x57, 0x50, 0x6d, 0x62, 0xc2, 0x1a } -, - /* Seed */ - 62, - { 0xa0, 0xb4, 0xda, 0xff, 0x3e, 0x26, 0xce, 0xbb, 0x3e, 0x4e, 0x3a, 0x43, 0xdb, 0x36, 0xc4, 0x66, 0xfb, 0x8c, 0xe6, 0x05, 0xb2, 0x5a, 0xf4, 0xc9, 0xda, 0x74, 0x4b, 0x62, 0xd4, 0x1f, 0x9e, 0x62, 0xc2, 0x28, 0x5c, 0x39, 0x0d, 0x60, 0xd1, 0x8e, 0x3d, 0x7e, 0x67, 0x5b, 0x4a, 0xc3, 0x19, 0x67, 0x24, 0x45, 0x19, 0x46, 0xbc, 0x1c, 0xcf, 0x2a, 0x9b, 0x56, 0x2c, 0x45, 0x33, 0xc9 } -, - /* Encryption */ - 128, - { 0x2b, 0x79, 0x80, 0x91, 0xb3, 0xa3, 0x91, 0x53, 0x3d, 0x62, 0xdc, 0x0e, 0x41, 0x7b, 0xa6, 0xde, 0xda, 0x00, 0x5b, 0xfc, 0x30, 0xab, 0x7d, 0xc8, 0x2e, 0x8f, 0x9b, 0xcc, 0x74, 0x17, 0xbc, 0xb0, 0x04, 0x34, 0x8c, 0x6d, 0x00, 0xe5, 0x37, 0xd2, 0x72, 0x2b, 0x84, 0x38, 0x61, 0x48, 0x92, 0x45, 0xab, 0x0d, 0x51, 0xf2, 0x11, 0x44, 0x7d, 0xac, 0x33, 0xa3, 0xf9, 0xdd, 0x6f, 0x3c, 0xa6, 0x6b, 0xbf, 0xa0, 0xd1, 0xad, 0xf9, 0x8b, 0xc9, 0x09, 0x95, 0x15, 0x92, 0x69, 0x76, 0xb9, 0x25, 0x8a, 0xab, 0x63, 0x20, 0x4a, 0xd8, 0x91, 0x65, 0xc8, 0x7b, 0xbe, 0xfd, 0x8d, 0x98, 0x85, 0x34, 0xb3, 0x74, 0x07, 0xdf, 0x7d, 0x43, 0xad, 0x39, 0x1e, 0xed, 0x99, 0x82, 0x47, 0x28, 0xef, 0xc3, 0xa5, 0x33, 0xb7, 0x89, 0xb4, 0x7e, 0x8a, 0xa7, 0x12, 0x16, 0x17, 0x47, 0x4f, 0x33, 0x25, 0xc5, 0x1a } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.16", - /* Message */ - 21, - { 0x5a, 0x44, 0xb5, 0x47, 0xbd, 0xa1, 0x9e, 0xcc, 0xa1, 0xdc, 0x7b, 0xc0, 0x45, 0x50, 0x20, 0x5f, 0x66, 0xc5, 0xde, 0x0a, 0xcb } -, - /* Seed */ - 104, - { 0x2f, 0x54, 0x85, 0xd2, 0x5f, 0xe5, 0xce, 0x40, 0xae, 0x62, 0xa1, 0x12, 0x97, 0x6c, 0xb4, 0xa5, 0x39, 0xb7, 0x4d, 0x96, 0xef, 0x8b, 0xe8, 0x73, 0x32, 0x5e, 0x20, 0x4b, 0xb3, 0xf8, 0x66, 0x07, 0xa1, 0x6a, 0x2c, 0x2a, 0xb5, 0x0f, 0x69, 0x78, 0x09, 0xed, 0x03, 0x01, 0x72, 0x70, 0xef, 0x20, 0xa1, 0x02, 0xc4, 0x3a, 0x2c, 0x4c, 0x3b, 0xe6, 0xab, 0x7a, 0x8a, 0xe2, 0xdc, 0xb5, 0x69, 0x84, 0xd5, 0xe0, 0x65, 0x52, 0x45, 0x93, 0xeb, 0x70, 0x70, 0x83, 0x4c, 0xe5, 0x53, 0xf1, 0x75, 0x69, 0x20, 0xbb, 0xcb, 0xbe, 0x4f, 0xb2, 0x6d, 0x35, 0xd4, 0xad, 0xcb, 0x59, 0xdf, 0x52, 0x46, 0x35, 0x6f, 0xf1, 0x2e, 0x7a, 0xa9, 0xee, 0x6d, 0xef } -, - /* Encryption */ - 128, - { 0x62, 0xd1, 0x48, 0x9a, 0x40, 0x3a, 0x90, 0xfa, 0xac, 0x67, 0x7a, 0xbc, 0x17, 0x4a, 0xa7, 0x24, 0x3b, 0xc7, 0x51, 0xa9, 0x64, 0x69, 0x5f, 0x6c, 0x32, 0xb3, 0x9d, 0xe0, 0x18, 0xfe, 0x46, 0x43, 0x44, 0x20, 0xea, 0x76, 0x59, 0xbe, 0x2c, 0x41, 0x0b, 0xc5, 0x6c, 0x4e, 0x3e, 0x7a, 0x1b, 0x16, 0x77, 0xfd, 0xf4, 0xad, 0xfb, 0x23, 0x24, 0xf0, 0x41, 0xed, 0xd5, 0x79, 0x0c, 0x4c, 0xdf, 0xab, 0x36, 0x55, 0xe0, 0x7e, 0x41, 0xfe, 0x9d, 0x73, 0x29, 0x21, 0x51, 0xb0, 0xdd, 0x5b, 0x96, 0xfc, 0x84, 0xa6, 0xb2, 0x0f, 0x6f, 0x3b, 0xc0, 0xf6, 0x0e, 0xae, 0xa8, 0xd8, 0x29, 0x17, 0xb2, 0x10, 0x83, 0x05, 0x59, 0x40, 0xfc, 0x02, 0xee, 0x3e, 0x17, 0xc3, 0x78, 0xbd, 0x4d, 0x85, 0x06, 0xd0, 0x8e, 0xc4, 0x5f, 0x33, 0xde, 0x57, 0x80, 0xf0, 0x1b, 0xd3, 0x18, 0xa9, 0xa1, 0x67, 0x87, 0xad } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.17", - /* Message */ - 5, - { 0x16, 0x80, 0x2d, 0x80, 0x3c } -, - /* Seed */ - 120, - { 0x02, 0xf0, 0xe7, 0x62, 0xc3, 0x39, 0x17, 0xbf, 0x6a, 0x4d, 0xf1, 0x1f, 0xa2, 0x84, 0x73, 0x54, 0x7a, 0x5a, 0xb0, 0x76, 0x7d, 0xd3, 0xa6, 0x1a, 0x8d, 0x05, 0xcc, 0x1e, 0x6f, 0x98, 0x34, 0x5a, 0xf1, 0xa0, 0x0e, 0x42, 0xf6, 0x2b, 0xd8, 0xec, 0xca, 0xcb, 0xd3, 0x7f, 0x4c, 0xcb, 0x80, 0x9e, 0x9e, 0x05, 0x5f, 0x73, 0xd3, 0x37, 0x5a, 0x60, 0x41, 0xd9, 0x78, 0x2c, 0xcd, 0x85, 0xd5, 0x9d, 0x14, 0xf4, 0x3e, 0x5c, 0x94, 0x10, 0x25, 0x7b, 0x90, 0x6e, 0x41, 0xcc, 0x8b, 0x97, 0x35, 0x47, 0xd0, 0x62, 0x2b, 0xd2, 0x1d, 0xb2, 0x9a, 0x91, 0x38, 0xd3, 0xb1, 0xbe, 0xde, 0x38, 0xce, 0x5c, 0x94, 0xc4, 0xe1, 0xd2, 0xa0, 0xa8, 0x40, 0x0b, 0x45, 0xba, 0xcd, 0x42, 0x69, 0x79, 0x7c, 0x38, 0x5a, 0xa3, 0x06, 0x6e, 0x65, 0x80, 0x72, 0x99 } -, - /* Encryption */ - 128, - { 0x75, 0x3b, 0x9c, 0xee, 0x70, 0xd4, 0x18, 0x1f, 0x95, 0x63, 0x87, 0x80, 0xdb, 0x7a, 0x04, 0xf9, 0xb1, 0x2e, 0xa3, 0x8e, 0x5d, 0xae, 0xe4, 0xf2, 0x89, 0x4c, 0x02, 0x67, 0x3a, 0x53, 0xf4, 0x85, 0x30, 0x74, 0x6f, 0xf2, 0x85, 0x8b, 0x78, 0x7e, 0xfc, 0xb4, 0x2d, 0x45, 0xe5, 0x31, 0xbe, 0xa1, 0xc8, 0xda, 0xe9, 0x48, 0x77, 0x15, 0x3b, 0x95, 0x6a, 0xc7, 0xb2, 0x87, 0x46, 0xee, 0x21, 0xc6, 0x31, 0xbf, 0x9a, 0x3b, 0xa7, 0x9d, 0x2b, 0xa8, 0x13, 0x21, 0xb7, 0x96, 0x03, 0xb1, 0xd0, 0x1a, 0x4e, 0x90, 0x9e, 0xd5, 0xa2, 0x7c, 0xbf, 0x27, 0xc9, 0x57, 0x78, 0x3d, 0x3f, 0x79, 0x50, 0xe0, 0x1d, 0xd8, 0xf4, 0x47, 0xf1, 0x0e, 0xce, 0xd3, 0x6f, 0x2d, 0x19, 0x35, 0x86, 0xf5, 0xcc, 0x17, 0xfb, 0x62, 0x2a, 0x05, 0xfa, 0xa1, 0xfb, 0x5c, 0xd2, 0xaa, 0x06, 0x4c, 0x08, 0x67, 0xb1, 0xca } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.18", - /* Message */ - 48, - { 0xd6, 0xd0, 0xf6, 0x03, 0x85, 0x97, 0x9c, 0xa5, 0x06, 0xfc, 0x83, 0x34, 0x21, 0xbc, 0xd2, 0x2d, 0xa6, 0xa0, 0x6a, 0x8f, 0x37, 0x0a, 0x7f, 0x02, 0xfe, 0xf4, 0x7c, 0x1c, 0xb2, 0x19, 0x9f, 0x26, 0x45, 0xc7, 0x54, 0x90, 0xfb, 0xf7, 0x89, 0xad, 0x52, 0x47, 0x04, 0xda, 0x8a, 0x27, 0x66, 0xc6 } -, - /* Seed */ - 77, - { 0xa0, 0x3c, 0x05, 0x67, 0x2e, 0xfe, 0x23, 0xb4, 0x4b, 0x26, 0xc7, 0x93, 0xe7, 0x05, 0x3a, 0x77, 0x04, 0x8b, 0xa2, 0xdb, 0xb4, 0xb5, 0x3a, 0xe9, 0x75, 0x18, 0x54, 0xe7, 0xad, 0xd7, 0xd6, 0x7c, 0x12, 0xcb, 0xd1, 0x6c, 0x0b, 0x19, 0x34, 0xd2, 0xc2, 0x3e, 0x77, 0xcd, 0xcc, 0x89, 0xce, 0x1d, 0x45, 0xc7, 0x61, 0x15, 0x8a, 0xa8, 0x61, 0x31, 0x71, 0xa7, 0x39, 0x01, 0xac, 0x1f, 0x61, 0xc6, 0x57, 0x05, 0x53, 0x3d, 0x3e, 0x63, 0x9b, 0x57, 0xa2, 0x48, 0x92, 0x91, 0x79 } -, - /* Encryption */ - 128, - { 0x00, 0x78, 0xdc, 0x48, 0xa6, 0x61, 0x58, 0x99, 0x2a, 0xaa, 0x68, 0xfc, 0x3c, 0xcc, 0x62, 0x8f, 0x92, 0xa7, 0x08, 0xd0, 0xb1, 0xd4, 0x38, 0x37, 0x20, 0x8d, 0x53, 0x4b, 0xc3, 0xf9, 0xbe, 0x1c, 0x14, 0x12, 0xed, 0x0f, 0x9f, 0x7b, 0xef, 0x49, 0x43, 0x0d, 0xc9, 0xe9, 0x98, 0xf7, 0x52, 0xe0, 0x74, 0x77, 0x68, 0xb4, 0xae, 0x38, 0x14, 0x46, 0x96, 0xc0, 0x03, 0xd6, 0xd2, 0x5e, 0xa1, 0xa6, 0xca, 0x6a, 0xec, 0x92, 0x4a, 0x9f, 0x4d, 0x9b, 0x57, 0x5a, 0x8f, 0x13, 0x6b, 0xba, 0x29, 0xbf, 0x31, 0xc1, 0x3b, 0x70, 0x50, 0xbd, 0x55, 0xd1, 0x00, 0x0d, 0x43, 0x3d, 0xaa, 0x6c, 0xf1, 0x0b, 0x49, 0x11, 0x6c, 0x80, 0x63, 0x10, 0x7f, 0xd3, 0xa5, 0xbd, 0xf6, 0x15, 0x45, 0xc5, 0xd8, 0x63, 0xf6, 0xa7, 0x88, 0x81, 0x78, 0x6c, 0xc8, 0xdc, 0x37, 0x6d, 0x36, 0xc9, 0x11, 0x36, 0x82, 0x25 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.19", - /* Message */ - 34, - { 0xb0, 0x38, 0x1c, 0xac, 0x04, 0xf3, 0x10, 0x15, 0x04, 0x96, 0x8f, 0x26, 0xd6, 0x55, 0x47, 0x45, 0x38, 0x3b, 0xd1, 0x71, 0xd3, 0x61, 0x56, 0xdd, 0x36, 0x80, 0xb3, 0xdb, 0x6f, 0xad, 0x7f, 0x77, 0x1f, 0x7d } -, - /* Seed */ - 91, - { 0xcc, 0x54, 0x8a, 0x67, 0x77, 0xcd, 0xe9, 0x53, 0xc1, 0x5a, 0x71, 0xfc, 0x49, 0x7c, 0x0c, 0x36, 0x17, 0xb1, 0xbb, 0x05, 0x6b, 0x03, 0x28, 0x8d, 0x9a, 0x54, 0x8b, 0x69, 0x3b, 0xb4, 0x30, 0x8b, 0x67, 0xc1, 0xda, 0xc3, 0x8b, 0xb9, 0xb8, 0xc9, 0xcc, 0x89, 0x6a, 0xc2, 0x44, 0xa9, 0xe3, 0x0d, 0x13, 0x24, 0x30, 0xf4, 0xce, 0xae, 0x57, 0x90, 0x34, 0x3d, 0xbc, 0xe3, 0x8d, 0x05, 0x6f, 0x27, 0xb8, 0x6b, 0xdd, 0x9d, 0x32, 0xa8, 0x17, 0x1f, 0x3b, 0x3c, 0xc2, 0xfd, 0x14, 0x22, 0x65, 0xac, 0x9a, 0x68, 0xdc, 0x35, 0x36, 0x27, 0x33, 0x9c, 0xd8, 0x83, 0x03 } -, - /* Encryption */ - 128, - { 0x45, 0x6f, 0x7c, 0x3e, 0x3b, 0xe8, 0x5f, 0xf7, 0xbd, 0xd6, 0xb5, 0xb2, 0x50, 0xbf, 0xb8, 0x1c, 0xd6, 0xfb, 0xb1, 0x86, 0xd2, 0x5e, 0x0c, 0x1c, 0x52, 0x59, 0xd6, 0x78, 0x87, 0x93, 0xc5, 0x41, 0xed, 0xac, 0xb4, 0xec, 0xde, 0xdb, 0x8a, 0x89, 0x29, 0x01, 0x34, 0xa6, 0x06, 0xf4, 0x6a, 0x81, 0x99, 0x1c, 0x13, 0xb1, 0x20, 0xe3, 0x30, 0x56, 0xbc, 0x0f, 0xc7, 0xe9, 0x7b, 0x34, 0x2d, 0x0f, 0x20, 0x05, 0x18, 0x13, 0xdd, 0xe4, 0x5e, 0x0b, 0x59, 0x6a, 0x7d, 0xcd, 0x69, 0x04, 0x90, 0x3b, 0x8f, 0xc0, 0x76, 0xa6, 0xe2, 0x4b, 0x3a, 0xd8, 0x01, 0x34, 0x16, 0xd9, 0xfd, 0x18, 0x48, 0x30, 0x55, 0x4a, 0xd5, 0x4d, 0x55, 0x48, 0xbc, 0xad, 0xda, 0xf5, 0x92, 0x0a, 0x02, 0x49, 0x55, 0x88, 0x78, 0x25, 0xdd, 0x37, 0x1a, 0xe4, 0xef, 0x90, 0x06, 0x9a, 0x4f, 0x31, 0x1c, 0x5a, 0x17, 0x29 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 5.20", - /* Message */ - 1, - { 0xe5 } -, - /* Seed */ - 124, - { 0xfe, 0x0b, 0xc7, 0xac, 0xb5, 0x6c, 0xe1, 0x4b, 0x4e, 0x2f, 0x55, 0xfb, 0xa0, 0xe2, 0xb1, 0x71, 0x54, 0x90, 0x7b, 0xe9, 0x4c, 0xe4, 0x85, 0xc6, 0x98, 0x4d, 0x61, 0xf6, 0x7c, 0x04, 0xa7, 0x40, 0xa2, 0x8d, 0x60, 0x94, 0xae, 0xae, 0x33, 0xb3, 0xea, 0x0d, 0x58, 0x18, 0x3e, 0x1e, 0xc7, 0xf6, 0x01, 0xb2, 0xab, 0x82, 0x0f, 0xb8, 0xa7, 0xff, 0xac, 0x0b, 0x4f, 0x96, 0x0e, 0x1b, 0x4a, 0xcb, 0xe5, 0x7c, 0xdc, 0x35, 0xb2, 0x25, 0xc4, 0x97, 0xfc, 0xac, 0xa0, 0x30, 0x19, 0xa2, 0x95, 0xb3, 0xe6, 0x6d, 0xa9, 0x6f, 0x53, 0x79, 0xcc, 0xd1, 0xda, 0x44, 0x47, 0x9a, 0x4f, 0x21, 0x35, 0xe1, 0x06, 0x3d, 0x71, 0xa2, 0x82, 0xc1, 0xe6, 0x6f, 0xdb, 0xd5, 0xd9, 0x53, 0xf5, 0x71, 0x8c, 0x25, 0x39, 0xd0, 0x0c, 0xe4, 0x9b, 0x45, 0x18, 0x20, 0x45, 0x4d, 0x2d, 0x49 } -, - /* Encryption */ - 128, - { 0x5c, 0x53, 0x36, 0x77, 0xa1, 0xdc, 0xb3, 0x63, 0x95, 0xda, 0x9a, 0x6d, 0x34, 0x77, 0xbf, 0xbf, 0x71, 0x51, 0x2c, 0x6a, 0x93, 0x3d, 0x04, 0x1c, 0xa3, 0x13, 0x44, 0xe1, 0xcb, 0xe1, 0xe5, 0x55, 0x88, 0xa1, 0x14, 0x6e, 0x3d, 0xec, 0x46, 0x10, 0xef, 0xac, 0x41, 0xb5, 0xf8, 0x02, 0x66, 0x02, 0x66, 0x52, 0xb3, 0xd7, 0xaa, 0x59, 0x42, 0x74, 0xd9, 0xd9, 0x20, 0xd3, 0x3a, 0xa0, 0xad, 0x9b, 0x4e, 0xc5, 0x9a, 0xa8, 0x80, 0x71, 0x2a, 0x1d, 0x1c, 0x36, 0x8a, 0x45, 0x7f, 0x35, 0xc7, 0x43, 0x88, 0xb0, 0x42, 0xf2, 0x49, 0x8e, 0x9f, 0x4b, 0xd4, 0x5a, 0x26, 0xf3, 0x21, 0xdd, 0x9e, 0xb3, 0x33, 0xef, 0x80, 0xaf, 0xe3, 0xaf, 0x9f, 0x72, 0x9c, 0xa1, 0x8f, 0x42, 0xc8, 0x8a, 0x71, 0x73, 0x85, 0x8c, 0x54, 0x20, 0x66, 0xf8, 0xa2, 0x52, 0xcc, 0xf0, 0xfe, 0xaf, 0xe6, 0xb5, 0xa9, 0x24 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 6: A 1024-bit RSA key pair", -{ - /* Modulus */ - 128, - { 0xdd, 0xca, 0xd6, 0xa3, 0x8b, 0x37, 0x04, 0xcb, 0xe0, 0x6b, 0xb1, 0xb5, 0x1d, 0x11, 0x62, 0x58, 0x49, 0x78, 0xa4, 0x29, 0x1f, 0xb6, 0x73, 0xb4, 0xea, 0x30, 0xed, 0x8b, 0x51, 0xa4, 0xbf, 0x26, 0x1d, 0xc9, 0xf0, 0xf4, 0x69, 0xce, 0x99, 0x88, 0xa0, 0x89, 0xf0, 0x84, 0x36, 0x64, 0x64, 0xa1, 0x80, 0xcf, 0xd7, 0x17, 0x10, 0x69, 0xa6, 0xf6, 0x36, 0xd7, 0x5f, 0x23, 0x40, 0x1b, 0x30, 0xcf, 0x43, 0xad, 0xcf, 0x87, 0x0e, 0xcd, 0x24, 0x58, 0x2f, 0x4d, 0xa2, 0x95, 0x22, 0x91, 0x51, 0xdd, 0xcf, 0xc7, 0xc9, 0x91, 0x86, 0xb2, 0x45, 0x88, 0x5c, 0xb6, 0x31, 0x96, 0xc4, 0xa5, 0x72, 0x6f, 0x20, 0x7e, 0xe3, 0x60, 0xaf, 0x3a, 0xd8, 0xc4, 0x83, 0x85, 0xa4, 0xe0, 0x84, 0x1d, 0x7d, 0x85, 0x1d, 0x54, 0x54, 0x5d, 0xe7, 0x67, 0xd8, 0xf9, 0x99, 0xdc, 0x17, 0xeb, 0x0c, 0x57, 0x11, 0x89 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x5e, 0x48, 0xe0, 0x3d, 0xdd, 0xec, 0xa1, 0xa9, 0x59, 0xd9, 0xee, 0x4d, 0xa3, 0xf1, 0xc3, 0xf0, 0xec, 0x2a, 0xd0, 0xfe, 0x7a, 0x70, 0xc1, 0x77, 0x63, 0x27, 0x31, 0x94, 0x4c, 0x3c, 0xd0, 0xd5, 0x8f, 0x4c, 0x4d, 0x96, 0x59, 0x74, 0x6e, 0x68, 0x5a, 0x76, 0xc9, 0x3c, 0x2b, 0x33, 0x3a, 0x64, 0x3d, 0xb2, 0x1d, 0x29, 0xbc, 0xdc, 0x6d, 0x11, 0xb5, 0xf6, 0x90, 0x87, 0x17, 0xb5, 0x77, 0x65, 0x99, 0xff, 0x30, 0x88, 0xb2, 0x01, 0x4f, 0xfc, 0x51, 0xf1, 0x8d, 0x93, 0x22, 0x24, 0xf1, 0x05, 0x9b, 0x22, 0x39, 0xea, 0x56, 0x44, 0xe8, 0x06, 0x9a, 0x5c, 0xc4, 0x31, 0xae, 0xf6, 0x07, 0x38, 0x0a, 0xa9, 0x24, 0xc1, 0x58, 0xab, 0xcb, 0xdd, 0x97, 0x51, 0xf5, 0x4e, 0x67, 0x79, 0xc4, 0xec, 0x23, 0x21, 0x68, 0xb0, 0x01, 0x4f, 0x4c, 0x8b, 0x49, 0x7b, 0xe9, 0x49, 0xae, 0xe6, 0x57, 0x51 } -, - /* Prime 1 */ - 64, - { 0xf9, 0x47, 0x1f, 0x2d, 0x22, 0x13, 0xa9, 0x2c, 0xf0, 0xa7, 0xc3, 0x84, 0x04, 0xd4, 0x0e, 0x32, 0x2f, 0x14, 0xf4, 0x39, 0x61, 0xf0, 0x1e, 0x92, 0x33, 0x63, 0xcf, 0x66, 0x53, 0xe8, 0x98, 0x4f, 0xb6, 0xe6, 0x8d, 0x66, 0xe6, 0xf1, 0x59, 0x80, 0x3a, 0x44, 0xbc, 0xdd, 0x09, 0xe0, 0x56, 0x19, 0x6d, 0xa4, 0x00, 0x7a, 0xe2, 0xa3, 0x7f, 0x40, 0x57, 0xbf, 0x7e, 0x3b, 0x5e, 0x4a, 0x80, 0x23 } -, - /* Prime 2 */ - 64, - { 0xe3, 0xc5, 0xf8, 0xcb, 0xfd, 0x51, 0xc6, 0xc2, 0x66, 0xb1, 0xa3, 0x2f, 0xb2, 0xf6, 0xfa, 0x48, 0x9b, 0x97, 0x54, 0xb2, 0x27, 0xc7, 0x7f, 0x53, 0x59, 0xc5, 0x5d, 0xfa, 0x03, 0x80, 0xfe, 0x9a, 0x02, 0xb4, 0xd3, 0x95, 0x05, 0xf3, 0xab, 0x36, 0x95, 0x7c, 0xeb, 0xfa, 0xd5, 0x34, 0xd7, 0xf9, 0xa2, 0x67, 0xeb, 0xee, 0x19, 0xaf, 0xe5, 0xc6, 0x24, 0x04, 0x3e, 0x30, 0x19, 0xd0, 0xac, 0x63 } -, - /* Prime exponent 1 */ - 64, - { 0x2c, 0xf4, 0x79, 0x97, 0xdf, 0x1c, 0x62, 0x97, 0x1b, 0x33, 0x76, 0x1c, 0x19, 0xee, 0xd0, 0x3c, 0x96, 0xa7, 0x15, 0xc0, 0x3f, 0x7c, 0x59, 0x57, 0x0e, 0x73, 0x82, 0x94, 0xb6, 0xaf, 0x2c, 0xc0, 0xbb, 0x80, 0x6a, 0xa1, 0xd3, 0x26, 0x55, 0x78, 0xbd, 0x89, 0x65, 0xf2, 0x0a, 0xf4, 0xed, 0x32, 0x1a, 0xc6, 0xc7, 0xdb, 0x61, 0x82, 0x10, 0xd1, 0xde, 0xc1, 0x47, 0x17, 0x97, 0xd2, 0xa1, 0xb7 } -, - /* Prime exponent 2 */ - 64, - { 0xa6, 0xc0, 0x29, 0xbb, 0xd5, 0x91, 0xc7, 0xcc, 0x4c, 0x78, 0x61, 0xfa, 0xaa, 0xaf, 0x8b, 0x5e, 0x1a, 0xa2, 0x78, 0x7c, 0x11, 0x09, 0x49, 0x5a, 0xd1, 0x0e, 0xe0, 0x15, 0x07, 0xf9, 0xa8, 0xeb, 0x41, 0x6d, 0xf6, 0xb4, 0x53, 0xee, 0x26, 0xfb, 0x48, 0x07, 0x73, 0x8f, 0x68, 0x05, 0x4e, 0xd4, 0x50, 0x24, 0x7a, 0xa2, 0x0e, 0xa6, 0x2a, 0xb6, 0x9b, 0x69, 0x8b, 0xc9, 0x95, 0x2c, 0xa2, 0xf7 } -, - /* Coefficient */ - 64, - { 0xaa, 0xd0, 0x60, 0xde, 0x5e, 0xdb, 0x35, 0x81, 0x8b, 0xd6, 0x3e, 0x85, 0xd4, 0x2e, 0xee, 0x55, 0xe4, 0xcf, 0x8f, 0xa4, 0x2d, 0x4e, 0xa5, 0x92, 0x83, 0xce, 0xf9, 0x6a, 0xca, 0xad, 0x55, 0x5d, 0x47, 0x8d, 0x2f, 0xd7, 0xc3, 0x8f, 0xa9, 0x31, 0xfa, 0x1a, 0xeb, 0x6d, 0xe5, 0x66, 0x55, 0x3d, 0x08, 0xf1, 0xcb, 0xc0, 0x6a, 0x51, 0x0f, 0xc2, 0xe5, 0x69, 0xb5, 0xa8, 0x22, 0x67, 0xac, 0x91 } - -} -, -{{ - "PKCS#1 v1.5 Encryption Example 6.1", - /* Message */ - 19, - { 0xa3, 0xe1, 0x52, 0x75, 0xfb, 0x33, 0xae, 0xc3, 0x7b, 0xd3, 0xdd, 0x58, 0x2e, 0x19, 0xf5, 0xd3, 0x8b, 0x9d, 0x0d } -, - /* Seed */ - 106, - { 0x78, 0xda, 0xa6, 0x1c, 0x07, 0xf9, 0x41, 0xb4, 0xb4, 0x40, 0xe7, 0x38, 0x33, 0x8d, 0x06, 0xcc, 0x15, 0x7a, 0x01, 0x57, 0x4a, 0x72, 0xfa, 0x78, 0xd3, 0x63, 0xdc, 0xe9, 0x94, 0x09, 0x04, 0x22, 0x0a, 0x71, 0x32, 0x35, 0x69, 0x96, 0xf0, 0x7c, 0x01, 0xd5, 0x4e, 0xe5, 0x4f, 0xa3, 0x2c, 0x5f, 0xaa, 0x1b, 0x90, 0xd2, 0x43, 0x0c, 0x80, 0xa2, 0x32, 0x17, 0xe0, 0x6b, 0xb1, 0xc8, 0x04, 0x3d, 0x61, 0xff, 0xa1, 0x8a, 0xa1, 0xd1, 0x8e, 0x15, 0xe4, 0x30, 0xaa, 0x12, 0x1c, 0xdf, 0xf4, 0x3f, 0xab, 0x2b, 0xb0, 0xde, 0xbf, 0x73, 0xe3, 0xd5, 0xa7, 0x5b, 0x46, 0xf9, 0x0d, 0xf7, 0x3d, 0x65, 0x6b, 0xb0, 0x66, 0xac, 0x1c, 0x76, 0x8f, 0xa3, 0x83, 0xe4 } -, - /* Encryption */ - 128, - { 0x9b, 0xf1, 0xdc, 0xfc, 0x65, 0x4c, 0xa7, 0xa2, 0x3d, 0x80, 0xa1, 0x2c, 0x09, 0xc2, 0x59, 0xd0, 0x4b, 0xae, 0x07, 0xe8, 0x31, 0xf6, 0x09, 0xe9, 0xf0, 0x35, 0xd3, 0x56, 0x41, 0x4e, 0xd1, 0x06, 0xf9, 0xb4, 0x62, 0x35, 0xfa, 0x3d, 0xa9, 0x1a, 0x32, 0xb8, 0xfd, 0xc8, 0xfb, 0x88, 0x30, 0xc9, 0x65, 0x23, 0xdc, 0xaa, 0x9b, 0x25, 0x38, 0xfc, 0x01, 0x02, 0xdc, 0x0f, 0x7a, 0x5f, 0xae, 0x86, 0x35, 0xb3, 0xb1, 0x23, 0x14, 0xc3, 0x90, 0x55, 0xfa, 0xac, 0xfb, 0xe0, 0x0a, 0x15, 0x16, 0x34, 0x24, 0x14, 0x8c, 0xc9, 0xe0, 0xf0, 0xab, 0x42, 0xdf, 0x09, 0x02, 0x3c, 0x05, 0x2a, 0x46, 0xae, 0x3f, 0x86, 0xa1, 0x8d, 0xcc, 0x53, 0x80, 0xce, 0x39, 0x06, 0x2e, 0x36, 0x23, 0x75, 0xd3, 0xa5, 0xf9, 0xe3, 0xb3, 0x4a, 0x5d, 0xa2, 0x5c, 0xf0, 0xde, 0x9c, 0xc1, 0x9c, 0x4d, 0x04, 0xf6, 0x3f } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Encryption Example 6.2", - /* Message */ - 50, - { 0x44, 0x3a, 0xb0, 0x3c, 0x46, 0x04, 0xdb, 0xd8, 0xbf, 0x80, 0x06, 0xae, 0xcc, 0x2a, 0xa8, 0xde, 0x64, 0xa1, 0x55, 0xb4, 0xf9, 0x0c, 0xdb, 0x08, 0x59, 0x98, 0x6d, 0x5c, 0xa3, 0x60, 0x66, 0x03, 0x59, 0x80, 0x8c, 0x59, 0xbd, 0x9c, 0x2d, 0xe7, 0x75, 0xfc, 0x18, 0x52, 0x02, 0x24, 0xb6, 0x69, 0xc3, 0x25 } -, - /* Seed */ - 75, - { 0x3a, 0x6a, 0x60, 0x89, 0xf7, 0x27, 0xdd, 0x16, 0x92, 0x97, 0xa5, 0x79, 0xfc, 0xaf, 0x8e, 0xa7, 0xf8, 0xe1, 0x2d, 0x54, 0x27, 0xf1, 0xf7, 0x90, 0x1a, 0x90, 0x22, 0xa2, 0x1e, 0x2d, 0x82, 0xd2, 0xf0, 0x8e, 0x63, 0xba, 0xca, 0x26, 0x7b, 0x65, 0x3a, 0xaf, 0x89, 0xde, 0x23, 0x2b, 0xa3, 0xd3, 0x92, 0xd1, 0xcb, 0x49, 0xdd, 0x76, 0xb3, 0x88, 0xb2, 0xda, 0xdf, 0xb0, 0x09, 0x4f, 0xda, 0x97, 0x18, 0xf1, 0x78, 0x37, 0x38, 0xd1, 0x8f, 0xa7, 0xaa, 0xa6, 0x29 } -, - /* Encryption */ - 128, - { 0x5a, 0x0a, 0xe0, 0xde, 0x28, 0xfd, 0x33, 0xcc, 0x98, 0x01, 0xbf, 0x4d, 0xd3, 0x06, 0x71, 0x23, 0x74, 0x53, 0x63, 0xca, 0xce, 0x4d, 0xd8, 0xb7, 0xb8, 0xb8, 0x11, 0xd6, 0x48, 0x2f, 0x59, 0x12, 0x0c, 0x0d, 0x65, 0x3e, 0xee, 0x86, 0xa6, 0x1a, 0x01, 0x2a, 0x18, 0x0e, 0xc5, 0xd1, 0x7e, 0x99, 0x14, 0x6d, 0x0c, 0xca, 0x0a, 0x58, 0x7c, 0x85, 0xcf, 0x01, 0xdc, 0x7a, 0xdd, 0x84, 0x23, 0x0d, 0x91, 0x80, 0xbd, 0xdf, 0x5a, 0x77, 0x19, 0xf6, 0x9d, 0x1f, 0xc4, 0x81, 0xaf, 0x6f, 0x47, 0xdb, 0x8c, 0xbd, 0x4e, 0xe1, 0x87, 0x1a, 0x57, 0x3f, 0xc8, 0x76, 0x7c, 0xe8, 0xbe, 0xed, 0xb5, 0xc7, 0x3f, 0xa9, 0x3f, 0x0c, 0x53, 0x80, 0x4a, 0xfe, 0x2e, 0x76, 0xcc, 0xeb, 0xb8, 0x7c, 0xba, 0x00, 0xcd, 0xac, 0x94, 0xde, 0x40, 0xe2, 0xb0, 0xbe, 0xaa, 0x8e, 0x2e, 0x41, 0x58, 0xc7, 0x78, 0x50 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.3", - /* Message */ - 57, - { 0xd1, 0xba, 0x30, 0xe8, 0x8c, 0xdd, 0xa3, 0x3d, 0x2b, 0x41, 0x89, 0x6f, 0x43, 0xdf, 0x08, 0x1e, 0xef, 0x20, 0xca, 0xf7, 0x8d, 0x7c, 0x1b, 0x97, 0x0c, 0x6a, 0x61, 0x72, 0xe8, 0x38, 0x39, 0xdc, 0x43, 0xd4, 0xbe, 0x29, 0xf9, 0xa7, 0x72, 0xba, 0x41, 0x59, 0x73, 0x8b, 0xc6, 0x13, 0x29, 0x68, 0x61, 0x8d, 0xc7, 0x19, 0x7c, 0x0e, 0xdc, 0x57, 0xa1 } -, - /* Seed */ - 68, - { 0x9b, 0xb6, 0x2b, 0xf9, 0xa7, 0x51, 0xfe, 0x41, 0x81, 0x66, 0x43, 0x68, 0x98, 0xed, 0xe8, 0x35, 0xcf, 0xae, 0xe2, 0xf5, 0x0e, 0xfc, 0xad, 0x60, 0x94, 0x2f, 0x2f, 0xb2, 0xda, 0x1a, 0x20, 0x38, 0x03, 0xf0, 0xbe, 0x80, 0xbe, 0xb1, 0x7f, 0xfa, 0xd0, 0xda, 0xb2, 0x18, 0xb1, 0x28, 0x02, 0x7f, 0x34, 0x97, 0xa4, 0xf8, 0xd4, 0x1a, 0xb9, 0xa1, 0xbe, 0x26, 0x4e, 0x96, 0xb4, 0x45, 0x48, 0x76, 0x7b, 0xe8, 0xd4, 0xa7 } -, - /* Encryption */ - 128, - { 0x81, 0x19, 0x1c, 0x54, 0x75, 0x27, 0x3d, 0xe6, 0x6a, 0x41, 0xbf, 0x56, 0x04, 0xf3, 0x2b, 0x58, 0xb7, 0x59, 0xa1, 0x4e, 0x74, 0x26, 0xc7, 0x46, 0xde, 0x4b, 0x53, 0xba, 0xf7, 0x80, 0xbb, 0xa4, 0x2b, 0x42, 0xe9, 0x27, 0x8a, 0xa9, 0x45, 0x27, 0xf0, 0xee, 0xbf, 0x85, 0x5f, 0x46, 0x2d, 0x6f, 0xbb, 0x29, 0x78, 0xa4, 0x65, 0x30, 0x37, 0xd8, 0xb4, 0x48, 0xe1, 0xb8, 0x07, 0xa1, 0x83, 0x1d, 0xbc, 0x53, 0x22, 0xd0, 0x66, 0x98, 0x4e, 0xec, 0x28, 0x11, 0x4f, 0xb7, 0x20, 0x1c, 0x79, 0x6b, 0x57, 0x3a, 0xdc, 0xc5, 0xcc, 0x92, 0x7f, 0x3a, 0x58, 0x97, 0xb2, 0x00, 0x55, 0x64, 0xef, 0x1a, 0x2c, 0x01, 0x67, 0xf5, 0x43, 0x65, 0x51, 0x18, 0x34, 0xac, 0x6f, 0x49, 0x58, 0xb8, 0x31, 0x8d, 0x09, 0xe6, 0x78, 0x54, 0xd6, 0x31, 0xca, 0x52, 0x80, 0x76, 0x86, 0xab, 0x70, 0x5d, 0x71, 0xa3 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.4", - /* Message */ - 47, - { 0xa5, 0x4b, 0xc2, 0x27, 0x8b, 0x56, 0x76, 0x85, 0xc9, 0xb5, 0x68, 0x54, 0xe4, 0xc1, 0xc4, 0x06, 0xd9, 0x16, 0x17, 0x47, 0xc6, 0x81, 0x34, 0x80, 0x16, 0x3e, 0xe3, 0xaf, 0x23, 0xb2, 0x1e, 0xd1, 0x99, 0x83, 0xe0, 0xf4, 0x2b, 0xfc, 0x93, 0x25, 0xcb, 0x5c, 0x82, 0xe1, 0xa4, 0x7b, 0x8f } -, - /* Seed */ - 78, - { 0xcc, 0xba, 0x5f, 0xa5, 0xc9, 0x4e, 0x79, 0x83, 0x2a, 0xb0, 0x46, 0xc9, 0x77, 0x74, 0x95, 0xb1, 0x63, 0xbd, 0x3a, 0xf2, 0x17, 0x59, 0x0f, 0xec, 0x5a, 0xc4, 0x8c, 0x62, 0x78, 0x6a, 0x27, 0xf3, 0x70, 0xd2, 0x85, 0x99, 0x55, 0xe4, 0x5a, 0xfb, 0x2b, 0x79, 0xf1, 0x2d, 0xe4, 0x16, 0x11, 0x45, 0xbe, 0x62, 0xac, 0x13, 0xa0, 0x3b, 0xf4, 0x81, 0x95, 0xfb, 0x9e, 0x5a, 0x18, 0xb8, 0x2d, 0xeb, 0xbf, 0x3d, 0xdf, 0xc8, 0x08, 0x25, 0xd5, 0x93, 0xfc, 0xd4, 0x02, 0xe7, 0x4e, 0xef } -, - /* Encryption */ - 128, - { 0x3d, 0xe4, 0xc3, 0xe0, 0x59, 0x35, 0x7b, 0x8a, 0x54, 0x83, 0x7e, 0xa1, 0x59, 0x62, 0xcf, 0xe2, 0x00, 0x7c, 0x5e, 0xa8, 0x98, 0x5c, 0x93, 0x51, 0x91, 0x64, 0xa6, 0x89, 0xb7, 0x55, 0xb6, 0x1c, 0x8b, 0xd2, 0x73, 0x96, 0x9d, 0x33, 0x3c, 0x4b, 0xcd, 0x9b, 0x06, 0x03, 0x53, 0xc3, 0x7b, 0xaf, 0x13, 0xeb, 0x42, 0x2f, 0x1c, 0xb9, 0x77, 0x56, 0xe6, 0xb4, 0x94, 0x6a, 0xdf, 0xe1, 0xaf, 0x75, 0xe9, 0xfe, 0x2d, 0x95, 0xb4, 0xb1, 0x3d, 0xa1, 0x73, 0x2b, 0xd8, 0xb8, 0xbe, 0x11, 0x97, 0x02, 0x79, 0x19, 0x53, 0x0c, 0x34, 0x7f, 0x3d, 0xd1, 0x03, 0x9e, 0x34, 0x8a, 0x53, 0xb1, 0x16, 0xf9, 0xf8, 0xfe, 0x89, 0x36, 0xa8, 0x4a, 0xcc, 0x39, 0xf2, 0xe0, 0x69, 0x56, 0xb6, 0x78, 0xd2, 0x0f, 0xdf, 0x95, 0x17, 0x07, 0x2e, 0x02, 0xf5, 0x70, 0x78, 0xfd, 0xc0, 0x46, 0x59, 0x40, 0x0c, 0x5c } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.5", - /* Message */ - 58, - { 0xf3, 0xc0, 0x0b, 0x00, 0x9e, 0x5e, 0x08, 0xa6, 0x3b, 0xe1, 0xe4, 0x00, 0x35, 0xcd, 0xac, 0xa5, 0x01, 0x1c, 0xc7, 0x01, 0xcf, 0x7e, 0xeb, 0xcb, 0x99, 0xf0, 0xff, 0xe1, 0x7c, 0xfd, 0x0a, 0x4b, 0xf7, 0xbe, 0xfd, 0x2d, 0xd5, 0x36, 0xac, 0x94, 0x6d, 0xb7, 0x97, 0xfd, 0xbc, 0x67, 0x9c, 0xbe, 0x68, 0xf1, 0xa2, 0xf3, 0x62, 0x59, 0xc5, 0x58, 0xf0, 0x4d } -, - /* Seed */ - 67, - { 0xe2, 0x2d, 0x5e, 0x43, 0xb1, 0xeb, 0xa1, 0xac, 0x0c, 0xe6, 0x5c, 0x32, 0x70, 0x51, 0x0e, 0x0f, 0x13, 0xc9, 0x4e, 0x96, 0x24, 0xee, 0x52, 0x56, 0x59, 0xef, 0x4d, 0x57, 0x37, 0x88, 0x20, 0xc9, 0x35, 0x22, 0x9b, 0x30, 0x99, 0xaa, 0x2b, 0x23, 0x50, 0x61, 0x4f, 0x8c, 0xc4, 0x29, 0x58, 0x15, 0xa2, 0xc9, 0xed, 0xb2, 0xd9, 0xc5, 0x9c, 0x73, 0xd1, 0xaa, 0x90, 0x0c, 0x21, 0x34, 0xc0, 0xa7, 0xd0, 0x90, 0x9c } -, - /* Encryption */ - 128, - { 0x53, 0x3e, 0x67, 0xa2, 0xbc, 0x5b, 0x3f, 0x01, 0x34, 0x2d, 0x8c, 0xb8, 0xd9, 0x25, 0xd7, 0x3b, 0x4d, 0xb3, 0x4c, 0xb6, 0x75, 0xda, 0x90, 0x39, 0x22, 0x6a, 0x98, 0xe4, 0xd8, 0x13, 0xc6, 0x20, 0x11, 0x09, 0x90, 0xa8, 0xe6, 0xac, 0xba, 0x50, 0xfd, 0x04, 0xf3, 0x30, 0x7d, 0xeb, 0xaf, 0x20, 0xd4, 0xf3, 0x74, 0xcf, 0x6d, 0xe0, 0xd9, 0xb2, 0x1d, 0x86, 0xe2, 0x66, 0x07, 0x9c, 0xf2, 0xf1, 0x8b, 0x45, 0x03, 0x20, 0x8a, 0x21, 0x5d, 0xe2, 0xb1, 0x1c, 0xca, 0x9e, 0x34, 0x64, 0xfc, 0x5a, 0xc1, 0xdd, 0x7e, 0x96, 0xb2, 0xfc, 0x04, 0x09, 0xe4, 0x2f, 0x46, 0xa5, 0x06, 0x12, 0xa6, 0xb2, 0x06, 0x1e, 0xd1, 0x61, 0x9a, 0x7f, 0xe4, 0x67, 0x96, 0xed, 0x8f, 0x52, 0x06, 0x9a, 0x5b, 0xfc, 0x84, 0x08, 0xd5, 0x58, 0xf5, 0x2a, 0x03, 0x33, 0x2e, 0xe8, 0xed, 0xde, 0xf8, 0xf7, 0x45, 0xd9 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.6", - /* Message */ - 53, - { 0xaa, 0xfe, 0x5b, 0x27, 0x11, 0x11, 0xef, 0xb8, 0x79, 0x2f, 0x5a, 0xa9, 0x23, 0x83, 0x07, 0x29, 0x76, 0xb7, 0x2a, 0x0a, 0x27, 0x2f, 0x90, 0xc5, 0x24, 0x61, 0xf8, 0x8a, 0xfb, 0x1b, 0xb6, 0xb7, 0xec, 0x26, 0x38, 0x1c, 0x65, 0x76, 0xa4, 0x10, 0x87, 0xa0, 0x39, 0x80, 0x9d, 0x14, 0xf6, 0x11, 0x60, 0x67, 0x59, 0x4e, 0xbb } -, - /* Seed */ - 72, - { 0x75, 0x0e, 0xf0, 0x86, 0x9f, 0x8c, 0x75, 0x7e, 0xf4, 0x31, 0x57, 0x8b, 0x45, 0xa6, 0xe7, 0x41, 0xbd, 0x1d, 0x96, 0x0e, 0xfc, 0x37, 0x89, 0xb1, 0x0d, 0x2b, 0xde, 0x27, 0x38, 0x18, 0x07, 0x4e, 0xbf, 0xe5, 0xfa, 0xae, 0x10, 0xac, 0x24, 0x4f, 0x89, 0xf6, 0xc0, 0x2d, 0xe5, 0xd1, 0xad, 0xae, 0xfc, 0x7a, 0x8f, 0xd2, 0x4d, 0x7b, 0xc3, 0x76, 0xfd, 0x65, 0xd3, 0x5e, 0x39, 0x50, 0x8c, 0x42, 0x36, 0xac, 0xbe, 0x2d, 0x5c, 0xa7, 0x69, 0x4b } -, - /* Encryption */ - 128, - { 0x34, 0x4d, 0x43, 0x37, 0x61, 0x2b, 0x22, 0xdd, 0x40, 0x2b, 0xe3, 0x79, 0xe6, 0xb2, 0x65, 0x0b, 0x51, 0x9e, 0xf3, 0x7b, 0x7a, 0xb4, 0x85, 0x81, 0x94, 0x52, 0xd1, 0x67, 0xc1, 0xb2, 0x15, 0xdb, 0xd3, 0xfb, 0x24, 0xf9, 0xb2, 0xf9, 0x29, 0x86, 0x69, 0xcb, 0x1a, 0xee, 0x14, 0x1a, 0x7d, 0x89, 0x01, 0x64, 0x20, 0x43, 0x11, 0x1f, 0xc3, 0x8b, 0x3f, 0x40, 0xef, 0x0b, 0x7f, 0xfd, 0x7d, 0xf7, 0x6c, 0x2d, 0x92, 0xe3, 0x29, 0x41, 0x1c, 0x75, 0xe0, 0xf1, 0x72, 0x85, 0xbb, 0x6b, 0xb8, 0x26, 0x88, 0x12, 0x8e, 0xd9, 0xbb, 0x95, 0x1c, 0xae, 0xdd, 0x7d, 0x06, 0x7e, 0xdd, 0x0b, 0x13, 0xe8, 0x27, 0x5a, 0xc8, 0x86, 0x25, 0xd9, 0x7c, 0xe8, 0xd2, 0x0b, 0x69, 0xb3, 0x57, 0x38, 0xb2, 0xf4, 0x72, 0x6e, 0x29, 0x84, 0xb8, 0xdf, 0xa8, 0x66, 0x95, 0xaa, 0xe8, 0x8d, 0x9e, 0x17, 0x6d, 0xf6 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.7", - /* Message */ - 37, - { 0xa1, 0x22, 0x4d, 0xf9, 0xaa, 0xb6, 0x58, 0x78, 0x45, 0xb2, 0xa3, 0x93, 0xa5, 0xa8, 0x76, 0xc1, 0x7d, 0x95, 0x9d, 0x53, 0x5b, 0x54, 0x19, 0xd4, 0x12, 0xa9, 0xa5, 0x31, 0xbb, 0x43, 0x7e, 0x1d, 0xac, 0x1b, 0x54, 0x6d, 0x62 } -, - /* Seed */ - 88, - { 0x76, 0x1d, 0xc4, 0xf5, 0x1b, 0xc8, 0x51, 0x8d, 0x62, 0x7c, 0x45, 0xb3, 0xe9, 0x81, 0x8b, 0x85, 0x42, 0xa0, 0x6f, 0xfe, 0x17, 0x2b, 0xe3, 0xaf, 0x5c, 0xe7, 0xa9, 0x05, 0x3f, 0xe5, 0x4e, 0x69, 0x70, 0x12, 0x49, 0x73, 0x37, 0x4d, 0xfc, 0xc1, 0xf4, 0x9f, 0xcf, 0xfe, 0x95, 0x7a, 0xae, 0x8c, 0x9c, 0x3b, 0x13, 0x0f, 0x46, 0x05, 0xd2, 0xc3, 0xef, 0xa2, 0x93, 0x2a, 0xd0, 0x83, 0xde, 0xc5, 0x8e, 0x70, 0xd4, 0xf6, 0x92, 0x6c, 0x80, 0xb5, 0xd4, 0x89, 0x1a, 0x1a, 0x55, 0x9e, 0xdb, 0x0c, 0xaf, 0xfa, 0xca, 0xd7, 0x5e, 0xb2, 0x64, 0x83 } -, - /* Encryption */ - 128, - { 0x78, 0x5f, 0x6a, 0xaa, 0xb4, 0xd2, 0xf3, 0x18, 0xd4, 0xaf, 0x37, 0xb6, 0xe0, 0x07, 0x4e, 0xd5, 0xa4, 0x19, 0x4f, 0xa6, 0x05, 0xa7, 0xec, 0x87, 0xd0, 0x5a, 0x07, 0xf3, 0x34, 0x9b, 0x5b, 0x92, 0xf5, 0xfc, 0x47, 0x90, 0xea, 0xb1, 0x37, 0x86, 0xcb, 0xf0, 0x35, 0xc7, 0x8f, 0xfc, 0xf1, 0x34, 0x4d, 0x1f, 0x3e, 0xcd, 0xaa, 0xe0, 0x16, 0x72, 0x22, 0x2e, 0x6d, 0x4a, 0x96, 0x55, 0x59, 0xe2, 0xc0, 0x82, 0x91, 0xcb, 0x1d, 0x4c, 0x2d, 0x4e, 0x68, 0xff, 0x8e, 0xe7, 0x15, 0x23, 0xf6, 0xdd, 0xae, 0xc5, 0x0a, 0x4a, 0xb2, 0x2e, 0xdc, 0xa2, 0x47, 0x36, 0x4c, 0x92, 0xd8, 0x73, 0x99, 0xe8, 0xa7, 0x1d, 0xf7, 0x43, 0x6b, 0x62, 0xd8, 0xba, 0x8a, 0xd2, 0x02, 0x94, 0xcb, 0xc6, 0x0d, 0xca, 0xe0, 0x30, 0x5c, 0x79, 0x73, 0xf7, 0xfc, 0xb4, 0xa5, 0xcb, 0xed, 0x15, 0x71, 0x3a, 0x7a, 0x16 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.8", - /* Message */ - 48, - { 0x1e, 0x0e, 0x3f, 0x65, 0x0c, 0x32, 0xdb, 0xb2, 0xf6, 0x91, 0x6f, 0x36, 0xf1, 0x35, 0xbc, 0xae, 0x88, 0x1d, 0x54, 0x55, 0x07, 0x40, 0x2d, 0x6a, 0xfd, 0x3d, 0x5b, 0x3b, 0xd8, 0x38, 0x5a, 0x50, 0xb4, 0xfa, 0xd6, 0xf7, 0x89, 0x49, 0xfd, 0xe6, 0x21, 0x64, 0xed, 0x76, 0x89, 0xe5, 0xf9, 0xa4 } -, - /* Seed */ - 77, - { 0xee, 0xa9, 0x0a, 0x54, 0xd0, 0x16, 0xda, 0x7e, 0x8f, 0x08, 0x76, 0xa7, 0x33, 0xb0, 0xf2, 0xa0, 0x6f, 0x90, 0xa7, 0x3c, 0x1a, 0x3c, 0xd6, 0x39, 0xb6, 0xcf, 0xa9, 0x06, 0xce, 0x08, 0xef, 0x78, 0x8b, 0xb6, 0xfe, 0xa7, 0x4f, 0x22, 0xeb, 0x91, 0xa6, 0xab, 0x32, 0x84, 0xcd, 0xfc, 0x1e, 0x72, 0xe6, 0x3e, 0x78, 0xd1, 0x8a, 0x64, 0xd6, 0x7f, 0x9d, 0x1a, 0x29, 0x19, 0x49, 0xed, 0x2e, 0x32, 0x3e, 0x91, 0xdc, 0x03, 0x38, 0x76, 0xee, 0xeb, 0x09, 0xff, 0xa7, 0x1f, 0x59 } -, - /* Encryption */ - 128, - { 0x6b, 0xbd, 0xae, 0x20, 0xf9, 0x89, 0xbf, 0xaa, 0x5d, 0x65, 0xda, 0xdc, 0xd6, 0x1a, 0x86, 0xb6, 0x63, 0x07, 0xa0, 0x60, 0x2f, 0xb5, 0x51, 0xa7, 0x38, 0x06, 0x12, 0x2d, 0xb1, 0x88, 0xec, 0x1d, 0x41, 0xe8, 0x4d, 0xaa, 0x2c, 0xc7, 0xd6, 0xbe, 0x54, 0x1e, 0x12, 0x28, 0x88, 0x09, 0xa1, 0x7e, 0x08, 0x5f, 0x2c, 0xaf, 0xa8, 0xae, 0x13, 0x67, 0x0e, 0x0f, 0x33, 0x65, 0xa1, 0x47, 0x1c, 0xb3, 0x15, 0x7c, 0x06, 0xe0, 0xf6, 0x3b, 0x82, 0x00, 0xf3, 0x16, 0x0c, 0x16, 0x3f, 0xde, 0x7c, 0x90, 0x1e, 0xf3, 0x26, 0xe5, 0x70, 0x0c, 0x9f, 0x5e, 0x07, 0xfe, 0x01, 0x98, 0x81, 0x0f, 0xa8, 0x0c, 0x8c, 0x5d, 0xc5, 0x3a, 0x50, 0xbc, 0xe2, 0x54, 0xf7, 0xd1, 0x99, 0x01, 0xcf, 0x6c, 0xbb, 0x60, 0x34, 0x13, 0xe4, 0x1f, 0x90, 0x30, 0xe7, 0x39, 0xc8, 0xba, 0x96, 0x49, 0x97, 0x84, 0x74, 0x99 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.9", - /* Message */ - 32, - { 0x73, 0xdd, 0xf0, 0xa1, 0x4d, 0x57, 0xba, 0x65, 0xb4, 0xf6, 0x93, 0xac, 0x76, 0x1e, 0x20, 0x2b, 0x1e, 0x5b, 0x85, 0x7c, 0x8b, 0x34, 0x04, 0xe1, 0x41, 0x85, 0xdf, 0xa8, 0xaa, 0xf0, 0x49, 0x89 } -, - /* Seed */ - 93, - { 0xfd, 0x43, 0x3d, 0x7b, 0x01, 0x76, 0xb7, 0x31, 0xd7, 0x80, 0xdd, 0x6c, 0x58, 0x51, 0xb8, 0x2f, 0x17, 0x6d, 0x62, 0xb8, 0x0d, 0x96, 0xae, 0xb6, 0x31, 0xd7, 0xfb, 0x8a, 0xc5, 0xbe, 0x55, 0xac, 0x21, 0x7f, 0x4e, 0x08, 0xbc, 0x7e, 0xcf, 0x81, 0xf8, 0xe3, 0xf5, 0xdd, 0xaa, 0xcd, 0xc6, 0xc2, 0x17, 0x8d, 0xf7, 0x81, 0x88, 0x23, 0x97, 0x53, 0x3a, 0x63, 0x8e, 0x62, 0xf0, 0x74, 0xac, 0x48, 0x8f, 0x4c, 0x12, 0xaa, 0x57, 0xbe, 0x2e, 0xce, 0x5b, 0xb6, 0xe9, 0x09, 0x6c, 0xd9, 0x22, 0x59, 0xa4, 0x5b, 0x0b, 0x03, 0x2f, 0x10, 0x14, 0x31, 0xa2, 0x8b, 0x86, 0x40, 0xfb } -, - /* Encryption */ - 128, - { 0xae, 0x97, 0xff, 0x43, 0x4e, 0x9a, 0x5e, 0xe4, 0x87, 0x76, 0x1d, 0xb3, 0x56, 0x90, 0x0b, 0x06, 0x37, 0x37, 0x46, 0x5b, 0xe5, 0x05, 0x8d, 0xc0, 0x3a, 0x28, 0xa3, 0x22, 0xe5, 0xc0, 0xe0, 0x91, 0xb7, 0x99, 0xbf, 0x65, 0x94, 0x55, 0xcf, 0xbe, 0x05, 0x42, 0x7a, 0xc4, 0xd0, 0x44, 0x05, 0xe5, 0x6e, 0xe0, 0x4e, 0x06, 0x3a, 0x23, 0x73, 0xdb, 0xcb, 0x9b, 0x4f, 0xa1, 0x6e, 0x43, 0x07, 0x94, 0x6a, 0x49, 0xb3, 0x56, 0x34, 0x52, 0x0d, 0x41, 0x6f, 0x65, 0xc3, 0xc3, 0x22, 0xed, 0xc5, 0x46, 0x71, 0x56, 0x91, 0x28, 0xa2, 0xa1, 0x52, 0xa7, 0x6f, 0xe4, 0x44, 0xc4, 0x30, 0xaa, 0x6f, 0x03, 0xc4, 0x12, 0x9c, 0x6e, 0x21, 0x31, 0x75, 0x5d, 0x76, 0x4c, 0xec, 0x4a, 0x14, 0x86, 0xa8, 0x1b, 0xa8, 0xa3, 0x16, 0x8d, 0x16, 0xe7, 0x4d, 0xca, 0x8e, 0x77, 0xbb, 0xfd, 0x67, 0xea, 0x37, 0x2b } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.10", - /* Message */ - 29, - { 0xef, 0x3e, 0x76, 0x98, 0xe7, 0xd9, 0xcc, 0x86, 0x3b, 0x46, 0x6b, 0xb2, 0x88, 0x55, 0x6e, 0x4a, 0xc2, 0x52, 0x82, 0xe0, 0x94, 0xfb, 0x5b, 0x57, 0xc1, 0x76, 0x17, 0xbb, 0x98 } -, - /* Seed */ - 96, - { 0xdb, 0x90, 0xa7, 0x58, 0x0d, 0x8d, 0x42, 0x9e, 0x22, 0xbd, 0x7e, 0xa5, 0xc7, 0xb4, 0xcd, 0x0c, 0x65, 0xad, 0x0e, 0x2e, 0x27, 0xf5, 0x33, 0x41, 0xbc, 0x23, 0xa8, 0xb1, 0x35, 0x8a, 0x76, 0xa0, 0xb5, 0xe9, 0x4f, 0xc5, 0xb4, 0x2a, 0x9f, 0x75, 0x6c, 0xc6, 0x3b, 0x9d, 0x62, 0x3f, 0x55, 0x17, 0x67, 0xfb, 0xc6, 0xf7, 0x11, 0x4e, 0x40, 0xba, 0x73, 0x61, 0xfd, 0x32, 0xd6, 0xf8, 0xd7, 0x72, 0x34, 0x37, 0x43, 0x6d, 0xf7, 0x24, 0xb1, 0x32, 0x7a, 0xae, 0xf7, 0xb9, 0x57, 0x56, 0x27, 0x68, 0xf8, 0xfa, 0xdd, 0x57, 0x86, 0x2b, 0xa0, 0xb3, 0x14, 0x09, 0x6a, 0x3b, 0x38, 0x77, 0x0e, 0x31 } -, - /* Encryption */ - 128, - { 0x43, 0xf8, 0xcc, 0xce, 0xa8, 0x12, 0xd3, 0x38, 0x5f, 0x43, 0xfa, 0x83, 0x7c, 0xb5, 0xe6, 0xfa, 0x59, 0x0f, 0x1a, 0xff, 0xb8, 0x62, 0xd2, 0xca, 0xcc, 0xc6, 0xd8, 0xe8, 0xbb, 0x5d, 0x5c, 0x0d, 0x50, 0xff, 0xb9, 0xf8, 0xf8, 0x09, 0x89, 0x00, 0xc1, 0x2e, 0x77, 0x2a, 0x84, 0x7b, 0x37, 0x81, 0x57, 0x78, 0x2b, 0x0a, 0x90, 0x40, 0xf7, 0xa6, 0x16, 0xc2, 0xeb, 0x05, 0x8e, 0x44, 0xd4, 0xa7, 0xe2, 0x0b, 0x48, 0x5a, 0xc2, 0x9f, 0x40, 0xd6, 0x8e, 0x03, 0xc3, 0x9d, 0xdc, 0x8d, 0xae, 0x7e, 0x7e, 0x09, 0xe2, 0x8f, 0x9d, 0xd2, 0x19, 0x0f, 0x3a, 0x9f, 0x35, 0x74, 0xb2, 0xf6, 0x34, 0x00, 0x15, 0x44, 0x36, 0x3c, 0x86, 0x1f, 0xe2, 0x7f, 0x7a, 0x39, 0x23, 0x66, 0x92, 0xfe, 0x35, 0x82, 0x14, 0x0b, 0x21, 0x72, 0xce, 0x64, 0x7e, 0xed, 0x41, 0x76, 0x85, 0xc6, 0xe1, 0xdb, 0x85, 0x6c } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.11", - /* Message */ - 31, - { 0xf8, 0x69, 0x18, 0x47, 0x4f, 0x88, 0x16, 0x97, 0x11, 0x1b, 0xdd, 0xdc, 0x1f, 0x00, 0x61, 0x3e, 0xb2, 0xc3, 0xd9, 0xc1, 0x78, 0x76, 0x68, 0x35, 0x3e, 0xbb, 0x02, 0xb3, 0x20, 0xa3, 0x26 } -, - /* Seed */ - 94, - { 0xcb, 0x7d, 0x99, 0xda, 0x9b, 0x11, 0xea, 0x57, 0xf6, 0x40, 0x55, 0x43, 0x44, 0x7d, 0xd1, 0x5f, 0xb5, 0xcc, 0xa0, 0xa1, 0x0f, 0x3b, 0x69, 0xb4, 0xd2, 0x33, 0x09, 0xef, 0xf2, 0x75, 0x0c, 0x48, 0x6c, 0xa6, 0x55, 0x32, 0x5b, 0x55, 0xa3, 0x27, 0xff, 0xe8, 0xbd, 0x6d, 0xca, 0x99, 0xbc, 0x8e, 0xfb, 0x5b, 0xc2, 0x94, 0x2e, 0xc0, 0x39, 0xe2, 0x84, 0x25, 0xe4, 0xa5, 0x6a, 0x07, 0xd3, 0x80, 0x12, 0xf1, 0x0d, 0x21, 0x5a, 0x22, 0xd6, 0x37, 0x68, 0x59, 0x43, 0xd3, 0x64, 0x72, 0x53, 0x01, 0xdd, 0x40, 0xe2, 0x17, 0x22, 0x8a, 0xb7, 0x91, 0x59, 0x89, 0x98, 0x83, 0x6b, 0xbf } -, - /* Encryption */ - 128, - { 0x2a, 0x40, 0x87, 0x80, 0xad, 0x51, 0x4e, 0x56, 0x71, 0xfe, 0x1d, 0xfc, 0x36, 0x7d, 0x7a, 0xa4, 0x65, 0xfc, 0x34, 0x69, 0xf1, 0xc1, 0x52, 0xae, 0xe1, 0x81, 0x45, 0xe0, 0xf5, 0xf0, 0x75, 0x9f, 0x44, 0x69, 0xb4, 0x3d, 0x55, 0x12, 0x3f, 0x5d, 0xc9, 0xff, 0xc6, 0x17, 0xf2, 0x3f, 0xa4, 0x9b, 0x78, 0x96, 0x02, 0x19, 0x66, 0x0e, 0xc6, 0x22, 0x74, 0xd6, 0xc5, 0x9b, 0xa3, 0x14, 0x60, 0xbd, 0x10, 0x94, 0x1e, 0xbb, 0x5e, 0x05, 0x69, 0x41, 0x51, 0xc5, 0x7b, 0x5b, 0x95, 0x88, 0xca, 0xf0, 0x9f, 0x45, 0x50, 0x20, 0xa5, 0x4e, 0x97, 0x7c, 0x3c, 0xc0, 0x27, 0xda, 0xe3, 0x1f, 0x2c, 0xe4, 0x42, 0x17, 0x02, 0x3e, 0x10, 0xad, 0xb6, 0xf2, 0xd8, 0xaa, 0x0f, 0x80, 0x84, 0xfc, 0x45, 0x86, 0x05, 0x80, 0x3f, 0xd4, 0x4b, 0x21, 0xab, 0xc2, 0x7b, 0xdb, 0x8d, 0x4c, 0x56, 0x17, 0x84, 0xcf } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.12", - /* Message */ - 22, - { 0x6a, 0x40, 0xbb, 0x60, 0x70, 0x8c, 0x5a, 0x99, 0x2e, 0xcf, 0xdc, 0x7e, 0xe5, 0x3f, 0x54, 0x08, 0x4d, 0x19, 0xaf, 0xfd, 0x4d, 0x21 } -, - /* Seed */ - 103, - { 0xc3, 0xf4, 0xfa, 0xca, 0x56, 0xc1, 0xff, 0x07, 0xd1, 0xad, 0x10, 0x37, 0x07, 0xd1, 0xb6, 0x68, 0x20, 0x47, 0xb4, 0xd9, 0xd6, 0x24, 0x6c, 0x2e, 0x5c, 0x4b, 0x0c, 0xe6, 0x55, 0x3d, 0x55, 0x31, 0x3f, 0x8f, 0x38, 0xae, 0xe5, 0xe4, 0xd8, 0x07, 0x3a, 0x55, 0xd2, 0x4a, 0xd7, 0x96, 0xc4, 0xb7, 0x61, 0x26, 0xc8, 0xaa, 0x61, 0xc4, 0x6a, 0x4e, 0xe8, 0x5f, 0xa9, 0x05, 0x7a, 0x52, 0x6c, 0xd0, 0xaa, 0x24, 0x5e, 0x58, 0x28, 0xf2, 0x18, 0x1b, 0x4a, 0x64, 0x79, 0x86, 0x87, 0x48, 0xe7, 0x47, 0x9f, 0x40, 0x34, 0x53, 0x3c, 0x0f, 0x3e, 0x1e, 0xb4, 0x35, 0xfa, 0x47, 0xd5, 0x3b, 0x58, 0xe4, 0x2c, 0x96, 0x17, 0xbf, 0x7e, 0x77, 0x7e } -, - /* Encryption */ - 128, - { 0xc4, 0x64, 0x11, 0xc7, 0x11, 0x6f, 0xe6, 0xf4, 0x6f, 0x1c, 0xa0, 0xf7, 0x4c, 0x60, 0x81, 0xa5, 0x5d, 0xf4, 0x1d, 0x2c, 0x0b, 0x8f, 0xc5, 0xd3, 0x8f, 0xaa, 0x34, 0x0b, 0x5e, 0xcf, 0x71, 0x83, 0xf8, 0x5f, 0x88, 0xc4, 0xfb, 0x28, 0xac, 0x5f, 0xb1, 0xf1, 0x8a, 0xeb, 0xfc, 0xfc, 0x10, 0xbf, 0xdd, 0x3a, 0x19, 0x00, 0x2c, 0x6b, 0x52, 0x24, 0x14, 0x92, 0x70, 0x4b, 0x6f, 0xe6, 0x3d, 0x61, 0xa7, 0x30, 0x10, 0xc1, 0x49, 0xff, 0x63, 0x03, 0x28, 0x3e, 0x99, 0x78, 0xcd, 0x84, 0x54, 0x04, 0xfa, 0x06, 0xb8, 0xc6, 0x98, 0xaa, 0xea, 0x8f, 0x86, 0x13, 0x61, 0xd8, 0x86, 0xb2, 0xc0, 0xf0, 0x1b, 0x47, 0xa1, 0xa9, 0xa3, 0xdd, 0x90, 0x3f, 0x8a, 0x58, 0xae, 0xd6, 0x6a, 0xfc, 0x85, 0xe9, 0xb7, 0x1e, 0xfc, 0x3f, 0x55, 0xa1, 0x21, 0x66, 0x74, 0x16, 0xa3, 0x00, 0x00, 0x13, 0x13, 0xe8 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.13", - /* Message */ - 13, - { 0x32, 0x52, 0xfe, 0x99, 0x62, 0x09, 0x74, 0xe0, 0x77, 0xd6, 0xeb, 0x55, 0x75 } -, - /* Seed */ - 112, - { 0xbf, 0x06, 0x9b, 0x4b, 0xcf, 0x15, 0x44, 0x8b, 0xc3, 0x9e, 0x45, 0xf4, 0x42, 0x6a, 0xad, 0x0d, 0x5d, 0x82, 0xb7, 0x4e, 0x93, 0xae, 0x1c, 0xdd, 0x71, 0xf7, 0x1b, 0xb9, 0xbe, 0xb9, 0xb2, 0x3d, 0x59, 0x73, 0x2f, 0x9c, 0x8b, 0xc6, 0x34, 0x3d, 0x13, 0x02, 0x31, 0xde, 0x18, 0xf7, 0xc8, 0x9f, 0xc2, 0xf4, 0x22, 0x18, 0x9c, 0xd9, 0x27, 0xe5, 0x09, 0xb1, 0x31, 0x97, 0xaa, 0x56, 0xd8, 0x1a, 0x73, 0x76, 0xf8, 0x33, 0x3e, 0x47, 0x42, 0x44, 0x8c, 0xc8, 0x92, 0xde, 0x40, 0x44, 0x97, 0x2c, 0x7f, 0x67, 0xdc, 0xbe, 0x85, 0x44, 0xa9, 0x0e, 0xec, 0x59, 0xe7, 0x95, 0xae, 0x59, 0x64, 0x08, 0x39, 0x2a, 0xf5, 0x77, 0x6d, 0xa0, 0xd6, 0xcb, 0x29, 0xc7, 0xe0, 0xa7, 0x86, 0x81, 0x30, 0xa7 } -, - /* Encryption */ - 128, - { 0x76, 0x53, 0xcb, 0xff, 0x58, 0x68, 0x92, 0xcd, 0xd2, 0x58, 0xbf, 0xe6, 0xba, 0xeb, 0xd9, 0x91, 0x45, 0xeb, 0x1b, 0x22, 0x89, 0x4e, 0x1a, 0x76, 0x4d, 0x02, 0xb2, 0xba, 0x99, 0x59, 0x52, 0xa0, 0x12, 0x58, 0x20, 0x8d, 0xe1, 0xa0, 0x1d, 0x8e, 0x8c, 0xbb, 0x5c, 0xda, 0xf0, 0xd6, 0x03, 0x69, 0x4f, 0x88, 0x25, 0x5e, 0x80, 0x90, 0x97, 0xb7, 0x0e, 0x9d, 0x79, 0xe6, 0x2b, 0xd5, 0xc0, 0xd8, 0x36, 0xdc, 0xc2, 0x9d, 0xd1, 0x9b, 0x05, 0xa1, 0x60, 0x26, 0x90, 0x42, 0x05, 0xb6, 0x0c, 0x45, 0x03, 0xd4, 0xfb, 0xe9, 0x93, 0x38, 0x55, 0xe8, 0x68, 0x02, 0xc7, 0x54, 0x28, 0xd9, 0xa6, 0x34, 0x73, 0x03, 0x16, 0x76, 0x32, 0xd3, 0x3c, 0x5d, 0x9e, 0xcc, 0x8a, 0xe2, 0x49, 0x3b, 0x58, 0xc3, 0x6b, 0x2a, 0x65, 0x53, 0xa7, 0xb9, 0xe2, 0xb1, 0x35, 0x8a, 0xe2, 0x8d, 0xad, 0x50, 0x28, 0x0d } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.14", - /* Message */ - 2, - { 0xdc, 0x94 } -, - /* Seed */ - 123, - { 0x05, 0xe8, 0x05, 0xbf, 0xfb, 0xd1, 0xb7, 0x4d, 0x1a, 0x5a, 0x83, 0x8d, 0x85, 0x71, 0x67, 0xb4, 0xc7, 0xd4, 0x0a, 0x6c, 0xd3, 0xe6, 0x8f, 0x31, 0xbe, 0x46, 0x93, 0xb9, 0x8c, 0xec, 0x6d, 0x75, 0x89, 0x49, 0x19, 0xab, 0x18, 0x57, 0x2c, 0x75, 0x82, 0x2e, 0x75, 0xe9, 0xde, 0xd7, 0x2d, 0xa0, 0x67, 0x97, 0x83, 0xa7, 0x72, 0x18, 0x14, 0xe1, 0x99, 0x16, 0x0b, 0x75, 0x07, 0xf6, 0x7f, 0x4e, 0xde, 0x58, 0x7c, 0x88, 0xbe, 0x76, 0x81, 0x5c, 0x50, 0xb2, 0x61, 0xdf, 0x30, 0x8b, 0x31, 0x43, 0x23, 0x73, 0x0c, 0x1e, 0x07, 0x3a, 0xa7, 0x29, 0x98, 0xcc, 0x2f, 0x8e, 0x0a, 0x8a, 0x5b, 0xd6, 0x5b, 0xf9, 0x34, 0xac, 0xa8, 0xa6, 0x48, 0x59, 0xe2, 0x5f, 0x02, 0xc5, 0xa2, 0x71, 0x39, 0x41, 0xc8, 0xc8, 0xe6, 0x27, 0x20, 0x84, 0x6d, 0xfb, 0x51, 0xc2, 0xff } -, - /* Encryption */ - 128, - { 0x6a, 0xdd, 0xe2, 0x44, 0xf0, 0x63, 0x8c, 0x5a, 0xb7, 0x45, 0xff, 0xba, 0xb5, 0xab, 0xe1, 0xfe, 0x80, 0x0b, 0x0e, 0xee, 0x15, 0x35, 0x50, 0xc4, 0x8c, 0x36, 0xf4, 0x24, 0x9f, 0x9d, 0x5d, 0x36, 0xb4, 0x7b, 0x28, 0xcc, 0xda, 0x71, 0xa7, 0xdd, 0x83, 0x2e, 0x64, 0x35, 0xad, 0x0e, 0xb8, 0x5e, 0xf7, 0x55, 0x6b, 0xb8, 0x4b, 0xf9, 0x5a, 0x59, 0xcc, 0xc9, 0xc2, 0x07, 0x51, 0xed, 0x3e, 0x1a, 0xd0, 0xde, 0x10, 0x29, 0x94, 0xa7, 0x12, 0xc5, 0x14, 0x01, 0x46, 0x92, 0xa6, 0x7f, 0x1d, 0x87, 0xca, 0x2e, 0x4f, 0xef, 0x29, 0xec, 0x83, 0xe0, 0x1e, 0x29, 0xad, 0x0c, 0x97, 0x8a, 0xcc, 0xa4, 0xd5, 0xc5, 0x02, 0x74, 0x5a, 0x6c, 0x50, 0x0d, 0xf2, 0x00, 0x04, 0xbc, 0x9b, 0xf1, 0x6f, 0x5f, 0xcc, 0x69, 0xbf, 0x52, 0x70, 0x9e, 0x31, 0xcf, 0x6a, 0x2b, 0x9f, 0xe6, 0x24, 0xd9, 0xa3, 0x64 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.15", - /* Message */ - 8, - { 0x4f, 0xae, 0x6c, 0xf3, 0x7e, 0x9d, 0x5f, 0x59 } -, - /* Seed */ - 117, - { 0xe7, 0xf9, 0xed, 0x4a, 0x0c, 0x3a, 0x64, 0x66, 0x69, 0x03, 0x9b, 0xd0, 0x1f, 0x24, 0x9f, 0x32, 0xbe, 0xa1, 0xe6, 0x57, 0x6c, 0x21, 0xd4, 0x51, 0x89, 0xd0, 0xf8, 0x91, 0xcf, 0x4a, 0xfd, 0x62, 0x32, 0x08, 0x3a, 0x32, 0x1e, 0xd2, 0xd3, 0x4d, 0x07, 0x09, 0x84, 0xf5, 0xe9, 0x45, 0x78, 0x39, 0xb2, 0xeb, 0xc1, 0xe0, 0x3a, 0x2c, 0x0d, 0x8d, 0xd7, 0x09, 0x73, 0x1e, 0x95, 0xb2, 0xe6, 0x94, 0x1c, 0xa0, 0x90, 0x71, 0x87, 0xaf, 0xfd, 0xcf, 0x5a, 0x87, 0xf5, 0xcb, 0xea, 0xd2, 0xf9, 0x05, 0x2c, 0x38, 0xd0, 0xee, 0x54, 0xe1, 0xf1, 0x28, 0xff, 0xc3, 0x37, 0xde, 0x45, 0x66, 0xa5, 0x92, 0x5e, 0x1e, 0x94, 0x7a, 0xef, 0x50, 0x88, 0x1c, 0xbd, 0xae, 0xd9, 0x9b, 0x1b, 0xbc, 0x1a, 0xf5, 0x13, 0x23, 0x2c, 0x0f, 0xf4 } -, - /* Encryption */ - 128, - { 0x46, 0xe6, 0x70, 0x5e, 0xb1, 0x25, 0x2d, 0xeb, 0xf8, 0xec, 0x67, 0x2c, 0x4f, 0xde, 0xaf, 0x69, 0x88, 0x26, 0x84, 0x59, 0xf9, 0x95, 0x89, 0xbb, 0xd3, 0x05, 0x41, 0x33, 0xd4, 0x83, 0xab, 0xe1, 0xe2, 0x7c, 0xaa, 0xb0, 0xa7, 0xf0, 0x22, 0x1b, 0x1b, 0x67, 0xa1, 0x4e, 0xbf, 0x45, 0x12, 0x6e, 0x60, 0x13, 0x48, 0xb0, 0x43, 0x44, 0x06, 0xda, 0x3a, 0x8c, 0x76, 0xd4, 0xf1, 0xe3, 0xf1, 0xa0, 0xe0, 0x6d, 0x0d, 0xb8, 0x23, 0xda, 0x51, 0x17, 0xb9, 0x2a, 0x40, 0xb6, 0xf3, 0x9f, 0x57, 0xe4, 0x83, 0xa7, 0xda, 0x36, 0xe9, 0x9b, 0x67, 0x7b, 0xb3, 0xf7, 0x6e, 0x6c, 0x5d, 0xb0, 0x3f, 0x3c, 0xe4, 0x45, 0x04, 0xeb, 0xd4, 0x5e, 0x9f, 0x14, 0xfe, 0x0f, 0x61, 0x3a, 0x2e, 0xb7, 0x95, 0x47, 0xab, 0x57, 0x8c, 0x58, 0x6d, 0x3b, 0x65, 0x4a, 0x06, 0xfe, 0x1e, 0xf3, 0x7a, 0x22, 0x10, 0x66 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.16", - /* Message */ - 14, - { 0xcd, 0xfd, 0xfd, 0xaa, 0xbc, 0xa3, 0x76, 0x7e, 0x70, 0xbb, 0xc5, 0xe9, 0xab, 0xf6 } -, - /* Seed */ - 111, - { 0xac, 0x77, 0x7f, 0x67, 0x29, 0x9d, 0xe4, 0xc1, 0xc4, 0xc5, 0x74, 0xf3, 0x1f, 0x67, 0x4f, 0x6f, 0xaa, 0xbd, 0xe0, 0x31, 0xf8, 0xec, 0x33, 0xe8, 0x26, 0x76, 0xeb, 0x32, 0xa9, 0x3f, 0x65, 0x79, 0xaa, 0xc3, 0xe9, 0x59, 0x35, 0x9f, 0xc5, 0x73, 0xee, 0x5c, 0x0e, 0x3e, 0x07, 0x76, 0x53, 0xef, 0xf9, 0xd5, 0xf8, 0xdb, 0x4b, 0x1e, 0x7a, 0xca, 0xdb, 0x05, 0x99, 0x71, 0x53, 0x1f, 0x49, 0xb0, 0x7c, 0x93, 0xeb, 0x9f, 0xde, 0xdc, 0xf0, 0x90, 0x3a, 0x7d, 0x50, 0xb4, 0x79, 0x67, 0x6f, 0xcd, 0xe8, 0x74, 0x0a, 0xfb, 0xd7, 0xd3, 0x7c, 0x3a, 0x21, 0x02, 0x41, 0x2b, 0xde, 0x1d, 0x3a, 0x82, 0x44, 0x15, 0x6a, 0xd8, 0x08, 0x9d, 0x45, 0xdf, 0xdc, 0x91, 0xcd, 0xe6, 0xc3, 0xa1, 0x59 } -, - /* Encryption */ - 128, - { 0x51, 0x3c, 0x76, 0x1e, 0xb1, 0x92, 0x9a, 0xff, 0x79, 0x77, 0xa9, 0xff, 0x0e, 0x61, 0xb7, 0xa1, 0xd5, 0x11, 0xc8, 0xcb, 0x25, 0x39, 0x24, 0x33, 0x24, 0x25, 0x56, 0x9a, 0x07, 0xe2, 0x29, 0xcb, 0x39, 0x01, 0x71, 0x53, 0x90, 0xf7, 0xde, 0x37, 0xbd, 0x36, 0x2c, 0x96, 0xfc, 0x0b, 0x0d, 0x79, 0x81, 0x0c, 0x1e, 0x8b, 0x15, 0xe1, 0x3b, 0x00, 0x32, 0x73, 0x47, 0x78, 0xcf, 0x96, 0x4e, 0x6f, 0x6d, 0x17, 0xfc, 0x41, 0xc7, 0x86, 0x76, 0x72, 0xb2, 0x54, 0x0f, 0x56, 0x9d, 0x0a, 0x46, 0x0a, 0x80, 0xfa, 0xd5, 0x6b, 0x5f, 0x05, 0x4a, 0xb8, 0xe4, 0x9e, 0x40, 0x9e, 0x9e, 0x0b, 0x86, 0x13, 0xcb, 0x3d, 0xa2, 0x0c, 0x35, 0xc3, 0xe1, 0xbb, 0x99, 0xb7, 0xec, 0xab, 0x7a, 0x00, 0xfc, 0x1f, 0xc2, 0x37, 0x0f, 0x9c, 0x80, 0x85, 0x67, 0xdf, 0x89, 0xbe, 0x2e, 0xdd, 0xbd, 0xb6, 0xb1, 0x10 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.17", - /* Message */ - 18, - { 0xb8, 0x20, 0xc3, 0x2e, 0x73, 0x7d, 0xaa, 0x23, 0x4f, 0x29, 0xba, 0x90, 0x64, 0x7f, 0xc3, 0xbf, 0x0a, 0x8e } -, - /* Seed */ - 107, - { 0xf5, 0xca, 0xf8, 0xfe, 0xb4, 0x2d, 0xf7, 0xb6, 0xb3, 0x89, 0xf5, 0x05, 0x99, 0xa4, 0xec, 0x20, 0xe6, 0x19, 0xca, 0x22, 0xd2, 0xbf, 0xc9, 0x1b, 0xc7, 0xf1, 0x4a, 0xe9, 0xf1, 0x22, 0x9e, 0x07, 0xc8, 0x88, 0xed, 0x57, 0xaa, 0x6a, 0xd3, 0xc1, 0x04, 0x10, 0x44, 0xc5, 0x1a, 0xfb, 0x55, 0x21, 0x7b, 0x0c, 0xaa, 0x23, 0x34, 0xad, 0x79, 0xf4, 0x7a, 0xbb, 0xf9, 0xb4, 0x20, 0x83, 0x33, 0xb7, 0x2b, 0x4b, 0xa4, 0xbb, 0x5f, 0xd0, 0x37, 0x98, 0x1d, 0xd8, 0x01, 0x70, 0xc8, 0x03, 0x60, 0xc1, 0x4d, 0x5a, 0xf5, 0x1e, 0x5f, 0x82, 0xab, 0xf5, 0x1f, 0xd3, 0x6f, 0x02, 0x18, 0x67, 0xa6, 0xec, 0x09, 0x7b, 0xc3, 0x39, 0x22, 0xac, 0xea, 0xd9, 0xe3, 0x35, 0x58 } -, - /* Encryption */ - 128, - { 0x3e, 0x23, 0x25, 0x18, 0x41, 0xdb, 0x2e, 0x20, 0x7a, 0x27, 0x10, 0x1f, 0x13, 0x29, 0x19, 0x1a, 0xb7, 0xfa, 0x6a, 0x70, 0x1a, 0x52, 0x62, 0x61, 0x48, 0x23, 0x53, 0xa1, 0xa2, 0x21, 0xef, 0xa9, 0xd3, 0xa9, 0xd4, 0x59, 0xcd, 0x2a, 0x2d, 0x86, 0x68, 0x90, 0x8b, 0x78, 0x3b, 0xb0, 0x9c, 0x87, 0x9a, 0x21, 0x7f, 0x1e, 0x40, 0x0f, 0x95, 0xb2, 0x17, 0xb0, 0x40, 0xa5, 0x3e, 0x34, 0x1c, 0x17, 0xb9, 0x3d, 0x3c, 0x3d, 0x65, 0x46, 0x0c, 0x5c, 0x7f, 0x2b, 0x4d, 0x79, 0xa3, 0x4b, 0x5a, 0x96, 0x11, 0x7a, 0xa3, 0x67, 0x51, 0xd9, 0xea, 0xf2, 0x33, 0xb0, 0x3f, 0x68, 0xdb, 0xa6, 0xa4, 0x57, 0x1b, 0x90, 0x71, 0x77, 0xf8, 0x28, 0x33, 0x6e, 0x82, 0x5a, 0x92, 0x26, 0x1b, 0x62, 0x36, 0x39, 0xbe, 0xc9, 0x8d, 0x3a, 0x09, 0xf8, 0x72, 0xc2, 0xec, 0x59, 0x1b, 0x4c, 0x38, 0x3a, 0x69, 0xc7 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.18", - /* Message */ - 43, - { 0x60, 0x6b, 0xbd, 0x61, 0x37, 0x15, 0xdd, 0xcd, 0x92, 0xc7, 0xb6, 0xdf, 0x04, 0xb3, 0x60, 0x72, 0xf0, 0x11, 0x62, 0xd0, 0x08, 0x76, 0x63, 0x12, 0xca, 0x69, 0x77, 0xdd, 0x3a, 0x06, 0xeb, 0x95, 0xe1, 0xba, 0xc7, 0xbc, 0x1b, 0xc6, 0x60, 0x2c, 0x9e, 0xe6, 0x44 } -, - /* Seed */ - 82, - { 0x51, 0x3a, 0x5c, 0x95, 0x68, 0xe8, 0x9b, 0x9a, 0x53, 0xd5, 0xaf, 0x71, 0x6e, 0x55, 0xfb, 0x34, 0x0f, 0x8a, 0x39, 0x23, 0x70, 0xe8, 0x88, 0xa8, 0x0c, 0xae, 0xda, 0x50, 0x2e, 0x7f, 0x9d, 0xfc, 0x17, 0x51, 0x95, 0xa5, 0x0e, 0x47, 0x07, 0x13, 0x96, 0xd6, 0xec, 0x55, 0x4e, 0xb7, 0x2f, 0x18, 0x3b, 0xe1, 0x8f, 0x3b, 0xf4, 0xec, 0x73, 0xb3, 0x05, 0x92, 0xfa, 0xef, 0x2f, 0xb5, 0x14, 0xde, 0xbe, 0xfc, 0xc6, 0x5c, 0x8d, 0x23, 0xc4, 0xad, 0x25, 0x94, 0x56, 0xc1, 0xe8, 0x0b, 0x36, 0x0a, 0xd4, 0x59 } -, - /* Encryption */ - 128, - { 0x47, 0x21, 0xa2, 0x39, 0x40, 0x18, 0x87, 0x30, 0xf5, 0xde, 0xac, 0x85, 0x00, 0x2e, 0x38, 0x31, 0xb1, 0x49, 0xae, 0x57, 0xaf, 0xc6, 0x97, 0x35, 0xa0, 0x45, 0xee, 0x3f, 0xc3, 0x53, 0x64, 0x72, 0xfc, 0x83, 0x3c, 0x27, 0xc8, 0x7e, 0xab, 0x6f, 0xc9, 0x05, 0xe3, 0x67, 0x96, 0x1b, 0x31, 0x24, 0x98, 0x63, 0x6b, 0xe6, 0xc7, 0x7a, 0xa8, 0x0b, 0x8d, 0xa2, 0xf5, 0xd9, 0x48, 0xaa, 0xa7, 0x7b, 0x5f, 0xab, 0x72, 0x4b, 0xbf, 0x64, 0xee, 0x89, 0xd2, 0x81, 0xee, 0xd4, 0x7b, 0x21, 0x2c, 0x32, 0x95, 0x26, 0x65, 0x77, 0xf4, 0xfd, 0x93, 0xa2, 0x22, 0x39, 0xde, 0xe5, 0x40, 0xc9, 0x40, 0x0f, 0xe5, 0x6d, 0x7a, 0xef, 0x51, 0xdf, 0x36, 0xa8, 0x9a, 0xe9, 0x2f, 0x92, 0x6f, 0x55, 0x83, 0x31, 0xe4, 0x1b, 0xfd, 0xfe, 0xfe, 0x35, 0x75, 0x8b, 0x93, 0xce, 0x11, 0x40, 0xac, 0x9b, 0x6a, 0x54 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.19", - /* Message */ - 36, - { 0x1d, 0x82, 0xde, 0xf8, 0xc5, 0x92, 0x87, 0x50, 0x08, 0xa5, 0xf8, 0x9e, 0x7e, 0xb6, 0x4e, 0x25, 0x2e, 0xdd, 0xe9, 0xdd, 0xb8, 0x81, 0xd3, 0x73, 0x62, 0x31, 0x7f, 0x6e, 0x6e, 0x6e, 0x99, 0x3c, 0x60, 0x23, 0x3b, 0x0f } -, - /* Seed */ - 89, - { 0x87, 0x5e, 0x07, 0x5e, 0xf1, 0xb0, 0x54, 0xb5, 0x84, 0x1e, 0x08, 0x45, 0x0d, 0x78, 0xeb, 0x54, 0xa5, 0x5c, 0x88, 0xb6, 0xd0, 0x18, 0x13, 0xc1, 0x07, 0xa0, 0x9b, 0x74, 0x54, 0x3b, 0x3f, 0x9f, 0xe1, 0xb7, 0xc9, 0x02, 0x11, 0xc6, 0x2e, 0xa7, 0x33, 0x81, 0x20, 0xd4, 0xae, 0x0f, 0x73, 0xba, 0x82, 0xc0, 0x1d, 0x28, 0xf8, 0x19, 0x4b, 0x3a, 0x39, 0x6b, 0xdf, 0x50, 0xf9, 0x41, 0x3a, 0x7f, 0xb0, 0x3b, 0xe2, 0x25, 0xfe, 0x05, 0x45, 0xdb, 0x80, 0xcd, 0xf0, 0xf6, 0x10, 0xa9, 0x5f, 0xd9, 0x03, 0x76, 0xe0, 0x39, 0xe3, 0x83, 0x1f, 0xf9, 0x9e } -, - /* Encryption */ - 128, - { 0x8f, 0xb5, 0x46, 0x26, 0x3c, 0x1d, 0x18, 0x75, 0xc7, 0x43, 0xf5, 0x2f, 0x02, 0x67, 0xb2, 0xf2, 0xfe, 0x68, 0x8d, 0x25, 0x42, 0x02, 0x10, 0x49, 0xf5, 0x34, 0x89, 0xce, 0x7c, 0x35, 0x91, 0x30, 0xf8, 0xe1, 0x1e, 0x3c, 0x46, 0x1c, 0x5e, 0x86, 0x3e, 0x4d, 0xc1, 0x9f, 0x07, 0xa1, 0x3a, 0x4c, 0x1a, 0x88, 0x22, 0x4b, 0x26, 0xc5, 0xc0, 0xcb, 0xe2, 0x02, 0x02, 0x45, 0xd9, 0x1e, 0x1b, 0x83, 0x42, 0x42, 0x52, 0x52, 0xf5, 0x3f, 0xc4, 0x0e, 0x4b, 0x14, 0xfa, 0x02, 0xbb, 0xd7, 0x47, 0x37, 0xd4, 0x02, 0x2c, 0xc5, 0x4f, 0xe3, 0x8f, 0x0d, 0x27, 0xd8, 0xfe, 0xa5, 0x0f, 0x2f, 0xdd, 0x84, 0x65, 0xd4, 0xf3, 0x2f, 0x8a, 0xc0, 0x3e, 0xe0, 0x06, 0xbe, 0x62, 0x33, 0xe4, 0xd1, 0xa3, 0xc1, 0x6e, 0xb1, 0x44, 0xb5, 0xd8, 0xbe, 0x72, 0x9a, 0xd3, 0x04, 0xf8, 0x23, 0x61, 0xe0, 0x7c, 0xfb } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 6.20", - /* Message */ - 28, - { 0x8a, 0x8a, 0x3e, 0xab, 0xdc, 0xa7, 0xca, 0xb0, 0xcc, 0x29, 0x6a, 0x29, 0x1e, 0xa8, 0xa9, 0x3d, 0xa4, 0xd2, 0xd2, 0xa1, 0x96, 0xff, 0x2f, 0x8d, 0x18, 0x1f, 0xee, 0x1f } -, - /* Seed */ - 97, - { 0x2e, 0x47, 0x36, 0xe4, 0x29, 0x6a, 0xb4, 0x66, 0x18, 0xb1, 0xef, 0x34, 0xda, 0x26, 0x77, 0x6e, 0x92, 0xef, 0x66, 0xf7, 0xcd, 0x17, 0x4e, 0xf9, 0x47, 0x69, 0x72, 0x42, 0x23, 0xa7, 0x65, 0xb4, 0xeb, 0xef, 0x08, 0xa8, 0x8f, 0xed, 0xbe, 0x27, 0x05, 0x60, 0xe5, 0xf6, 0x74, 0x37, 0xcf, 0x49, 0xd5, 0x7e, 0xa6, 0x62, 0x0a, 0xca, 0x59, 0x89, 0x8a, 0xfd, 0x52, 0xcd, 0xef, 0x30, 0xa8, 0xb0, 0xd9, 0x85, 0x5e, 0x5d, 0xfb, 0xe3, 0x47, 0xde, 0x77, 0xc4, 0xc0, 0x28, 0x0b, 0x0f, 0x1f, 0xd4, 0x4d, 0x4f, 0xe6, 0x89, 0x06, 0xbe, 0x8a, 0x4f, 0x12, 0xc5, 0x33, 0x08, 0x7b, 0xf5, 0xbc, 0xea, 0xfb } -, - /* Encryption */ - 128, - { 0x03, 0xf3, 0xe4, 0xba, 0x03, 0x48, 0x31, 0xa0, 0xe3, 0x0a, 0x4a, 0x33, 0x44, 0xce, 0xad, 0x61, 0xb2, 0x8b, 0x43, 0xbe, 0x31, 0x53, 0x2c, 0x2d, 0x76, 0x37, 0x53, 0x9b, 0x90, 0x13, 0x83, 0x7e, 0xdc, 0xb1, 0xf2, 0x16, 0xd3, 0x2f, 0xdf, 0xae, 0x73, 0x32, 0x36, 0x74, 0xa2, 0x81, 0x45, 0x65, 0xdb, 0xf2, 0x9e, 0x71, 0x2d, 0x18, 0xc4, 0x37, 0x39, 0x64, 0xdf, 0x60, 0xc9, 0x39, 0x9f, 0xda, 0x54, 0x14, 0xa0, 0xeb, 0x45, 0xbd, 0xe8, 0x66, 0x1a, 0x89, 0x09, 0x12, 0x95, 0xa1, 0xef, 0x71, 0x61, 0x6a, 0x3c, 0xd1, 0x45, 0xe9, 0xb3, 0x18, 0xb6, 0x51, 0xaf, 0x17, 0x5d, 0x4e, 0xc3, 0x50, 0x1d, 0x5e, 0xb7, 0x63, 0xe8, 0xd3, 0x5a, 0x2b, 0x72, 0x74, 0x6e, 0x02, 0x0b, 0x4b, 0xa5, 0x99, 0x73, 0x83, 0x4b, 0x21, 0x50, 0x02, 0x6b, 0x43, 0x2b, 0x17, 0x9a, 0x9a, 0xe8, 0x17, 0x2b, 0x7b } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 7: A 1025-bit RSA key pair", -{ - /* Modulus */ - 129, - { 0x01, 0x70, 0x93, 0x41, 0xd2, 0xec, 0x08, 0x04, 0xa7, 0x40, 0x34, 0xe8, 0xfa, 0x72, 0x86, 0x42, 0x98, 0x3d, 0x16, 0x50, 0xd7, 0x46, 0xe4, 0x49, 0xc9, 0xee, 0x40, 0x79, 0xaa, 0x15, 0xe5, 0x1f, 0x1f, 0xc1, 0x34, 0x24, 0x2e, 0x52, 0x4b, 0x0d, 0x3d, 0x0d, 0xbf, 0x5a, 0x51, 0x21, 0x93, 0x9b, 0x12, 0x5f, 0xcc, 0x86, 0x3e, 0x51, 0x41, 0x60, 0xb6, 0x34, 0xe3, 0x7a, 0xa6, 0x98, 0x94, 0x77, 0x6c, 0x7d, 0x33, 0xe1, 0xe7, 0xc6, 0x19, 0x52, 0x1d, 0xe4, 0x82, 0xa0, 0xae, 0xa4, 0x5c, 0x3c, 0x6a, 0xbc, 0x3f, 0x33, 0xe2, 0x5d, 0x86, 0xff, 0xa1, 0x39, 0x33, 0x25, 0x65, 0x9b, 0xf2, 0xd4, 0x09, 0x8d, 0xf1, 0x69, 0xb4, 0x07, 0x21, 0x87, 0x66, 0x0e, 0x27, 0x77, 0x00, 0x19, 0x9b, 0x7a, 0x3e, 0x34, 0x84, 0xb3, 0x84, 0x5f, 0x6f, 0xbf, 0x31, 0x98, 0x65, 0x7d, 0xf8, 0xcb, 0xf3, 0xa8, 0x1b } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x6f, 0xeb, 0xf7, 0x98, 0x12, 0x1e, 0x99, 0x33, 0x24, 0x97, 0x2c, 0x8c, 0x28, 0xcc, 0xc6, 0x5a, 0x2e, 0x6a, 0xa1, 0x5f, 0xcd, 0xe2, 0x32, 0xda, 0x03, 0xe4, 0x46, 0x4d, 0xb4, 0xda, 0x5f, 0xaa, 0x27, 0xe4, 0x2a, 0x7c, 0x7a, 0x76, 0xd9, 0xed, 0x49, 0x48, 0x6b, 0x27, 0xa9, 0xd7, 0x85, 0xc6, 0x7d, 0x9a, 0xc0, 0xc5, 0x19, 0xad, 0x8d, 0xad, 0xa6, 0xbf, 0xd1, 0x15, 0xd7, 0xcd, 0x75, 0xb9, 0x9c, 0x4b, 0x59, 0xc7, 0x69, 0x83, 0xa7, 0x01, 0x5b, 0x0d, 0xa6, 0x97, 0x3c, 0x69, 0xfa, 0x95, 0x08, 0x10, 0xae, 0x27, 0x68, 0xd9, 0x75, 0x88, 0x90, 0x05, 0x62, 0xe8, 0x6a, 0x6d, 0xf7, 0xc7, 0x14, 0xb8, 0x44, 0xb1, 0xe0, 0x46, 0x68, 0x6a, 0x5a, 0xfc, 0x66, 0x7b, 0x13, 0x57, 0x3a, 0x55, 0xbe, 0x9b, 0x5b, 0x38, 0xb9, 0x9b, 0xd3, 0xcf, 0x54, 0xe4, 0x34, 0x4a, 0x2f, 0x2d, 0x0e, 0x21 } -, - /* Prime 1 */ - 65, - { 0x01, 0x40, 0xef, 0x5b, 0x50, 0x70, 0x54, 0xd5, 0xa6, 0x94, 0x46, 0x4e, 0xf4, 0x7e, 0x49, 0x86, 0x8c, 0xb3, 0x3c, 0x97, 0xe0, 0xe3, 0xed, 0xd7, 0x7b, 0xf4, 0x5a, 0x52, 0x5e, 0x60, 0x8d, 0x7e, 0x21, 0x5f, 0x91, 0x33, 0x48, 0xa9, 0xb8, 0x27, 0xc8, 0x39, 0x73, 0x7a, 0x42, 0xb6, 0xad, 0xfb, 0xb2, 0xbb, 0x49, 0x7e, 0x14, 0x78, 0x92, 0x2f, 0x71, 0x88, 0x97, 0xd9, 0xfe, 0xed, 0x27, 0x7a, 0x6b } -, - /* Prime 2 */ - 65, - { 0x01, 0x26, 0x00, 0x4b, 0xbe, 0x2d, 0xf7, 0x6b, 0x6f, 0x38, 0xae, 0xa1, 0x64, 0xb1, 0xfd, 0x0f, 0x97, 0x61, 0x2b, 0x2d, 0xb9, 0x6c, 0xed, 0xe2, 0x8a, 0x3a, 0x91, 0xce, 0x0d, 0x74, 0x25, 0x3b, 0xb3, 0xf9, 0x55, 0x9b, 0x89, 0xf4, 0x81, 0x33, 0x75, 0x65, 0x2a, 0x50, 0x70, 0x06, 0xce, 0x99, 0x95, 0xa9, 0x8f, 0x0e, 0x6e, 0xf3, 0xbc, 0x22, 0xe5, 0x51, 0x9b, 0x61, 0x3b, 0xfb, 0xcd, 0x55, 0x11 } -, - /* Prime exponent 1 */ - 64, - { 0x98, 0x14, 0xd4, 0xe0, 0xb9, 0x5a, 0x7a, 0x24, 0x05, 0xff, 0x8b, 0x4a, 0xb0, 0xcd, 0x86, 0xc5, 0x05, 0xea, 0xa0, 0xce, 0x21, 0x34, 0x83, 0xf8, 0x69, 0x42, 0xa3, 0xe5, 0xb5, 0x3b, 0x57, 0x99, 0xd8, 0xff, 0xa5, 0x9d, 0xb9, 0x4f, 0x5b, 0x0a, 0xb6, 0xae, 0xd2, 0x30, 0xeb, 0x00, 0x67, 0x55, 0xbb, 0x0a, 0x88, 0x84, 0x8a, 0xde, 0x3b, 0x3d, 0x41, 0xcd, 0x33, 0xb0, 0x6a, 0x11, 0x5b, 0x21 } -, - /* Prime exponent 2 */ - 64, - { 0x1c, 0x4b, 0x1c, 0xfe, 0xf1, 0x67, 0x85, 0x34, 0x4f, 0xed, 0x26, 0x65, 0x0d, 0x68, 0x00, 0x2f, 0x1e, 0x4f, 0xcc, 0x77, 0xb2, 0xce, 0xf5, 0xe5, 0x3d, 0x9b, 0xb8, 0x8b, 0xbc, 0xe8, 0xb4, 0x65, 0x2e, 0x92, 0x99, 0x84, 0x5e, 0x3e, 0x6c, 0xd8, 0x58, 0x63, 0x09, 0x18, 0xae, 0xdf, 0x05, 0x12, 0xcd, 0x1d, 0x92, 0x53, 0x05, 0x2b, 0xce, 0xe3, 0xe8, 0xc5, 0x9e, 0x46, 0xea, 0x85, 0xa9, 0x31 } -, - /* Coefficient */ - 64, - { 0xfd, 0xc5, 0x10, 0xc4, 0xd9, 0x79, 0x07, 0x30, 0xb0, 0xfd, 0x47, 0xd3, 0x13, 0xab, 0xd4, 0x08, 0x58, 0xc7, 0xdf, 0xd5, 0x8f, 0x4b, 0x37, 0x91, 0x5f, 0x7a, 0x4b, 0x1d, 0xb3, 0xd7, 0xd8, 0xab, 0xd0, 0x6d, 0x3d, 0xa0, 0x02, 0xde, 0x98, 0x4a, 0x76, 0x09, 0xcc, 0x18, 0xa9, 0x44, 0x86, 0x46, 0x0a, 0x61, 0x74, 0x6c, 0x7e, 0xa6, 0x31, 0x17, 0xa6, 0x8a, 0xa2, 0x82, 0x59, 0x74, 0x4f, 0x49 } - -} -, -{{ - "PKCS#1 v1.5 Encryption Example 7.1", - /* Message */ - 58, - { 0xda, 0x50, 0x9d, 0xce, 0x45, 0xe2, 0x47, 0x00, 0x37, 0x9b, 0xfe, 0x5a, 0xa1, 0xa8, 0x1c, 0x24, 0x70, 0x6c, 0x18, 0x42, 0xd9, 0xb1, 0x3e, 0x7a, 0x2e, 0x0a, 0x15, 0xd3, 0xa4, 0xaf, 0x8e, 0x6d, 0x08, 0x61, 0x2d, 0xca, 0xa1, 0x5d, 0x46, 0x0e, 0xce, 0x87, 0x29, 0x88, 0xe3, 0xe9, 0x0f, 0xb2, 0x7e, 0x5c, 0xa5, 0xc1, 0x0f, 0xa1, 0xfa, 0xcd, 0xcb, 0x0e } -, - /* Seed */ - 68, - { 0x80, 0x8c, 0x20, 0x46, 0xfb, 0x50, 0x5c, 0x37, 0x69, 0x5c, 0x8d, 0xc3, 0x5c, 0x38, 0xf9, 0xf9, 0x90, 0x5a, 0xb4, 0x8a, 0x2b, 0x8a, 0x14, 0x6e, 0x8e, 0x8e, 0xda, 0x33, 0x85, 0xce, 0xd9, 0x5a, 0x31, 0x3b, 0x2d, 0xc6, 0xeb, 0x41, 0x83, 0x67, 0xfe, 0xef, 0xf7, 0x9a, 0x02, 0xad, 0x74, 0x64, 0x6d, 0xf7, 0xa5, 0xd8, 0x70, 0x54, 0xac, 0xdd, 0xaf, 0x34, 0xea, 0xfd, 0x5c, 0x1d, 0xb5, 0x8e, 0x5d, 0xec, 0x04, 0x81 } -, - /* Encryption */ - 129, - { 0x00, 0xfc, 0x3d, 0x0a, 0xaa, 0xf2, 0x6c, 0xdf, 0x25, 0xa1, 0xa8, 0xdf, 0xcb, 0x71, 0x70, 0x0f, 0xb6, 0x5e, 0x2a, 0xb5, 0x55, 0x1a, 0xe5, 0xf4, 0x19, 0xb2, 0xd2, 0xf9, 0x4c, 0xef, 0x01, 0x73, 0x02, 0xb0, 0x0a, 0xbd, 0x9e, 0x6c, 0x6e, 0xfa, 0xe9, 0x44, 0x74, 0xd1, 0x8e, 0x68, 0xda, 0x0a, 0x7c, 0x17, 0xef, 0x2c, 0x5f, 0xcc, 0x89, 0x07, 0x1d, 0x3b, 0x07, 0x12, 0x1b, 0x9c, 0x01, 0xe3, 0x0f, 0xf0, 0x53, 0x66, 0x3f, 0x61, 0xf8, 0x9f, 0xdb, 0xc4, 0x9b, 0xdc, 0xf8, 0xe6, 0x71, 0x66, 0x94, 0x43, 0x91, 0x9d, 0x41, 0x34, 0x28, 0x45, 0xe3, 0xe9, 0x9e, 0x46, 0xa8, 0xa3, 0xb4, 0x8e, 0x23, 0x98, 0xa8, 0x8e, 0x5b, 0x45, 0xd9, 0x9a, 0x17, 0xdd, 0x1f, 0x21, 0x2e, 0xda, 0xbc, 0xbc, 0xd3, 0x00, 0xa8, 0x4d, 0x39, 0x8e, 0xf5, 0x79, 0x35, 0xbd, 0xae, 0x95, 0x9e, 0x60, 0x54, 0xe7, 0x3a } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Encryption Example 7.2", - /* Message */ - 12, - { 0xce, 0x0a, 0x79, 0x47, 0x49, 0x87, 0x41, 0x60, 0xe5, 0xd2, 0xe4, 0xff } -, - /* Seed */ - 114, - { 0xf4, 0xb2, 0xc9, 0xf3, 0x11, 0xc1, 0xfd, 0x41, 0xd4, 0x79, 0x44, 0xb5, 0x0e, 0x17, 0x55, 0xd4, 0xea, 0xc5, 0xee, 0x65, 0x08, 0x7c, 0x9f, 0xc6, 0xd2, 0xf0, 0x75, 0xb7, 0x38, 0xc6, 0x49, 0x26, 0xea, 0xf7, 0xd4, 0x31, 0x6b, 0xcd, 0xb6, 0x36, 0x54, 0xd5, 0x42, 0x0d, 0xa6, 0x1e, 0x02, 0x45, 0xf1, 0x95, 0xb9, 0xe8, 0x24, 0xaa, 0x0b, 0x06, 0xc8, 0x87, 0x99, 0xb1, 0x27, 0xfe, 0x9b, 0x03, 0x6d, 0xf3, 0x61, 0x75, 0xc0, 0xa6, 0xbd, 0x80, 0xe4, 0xe0, 0xaf, 0x6e, 0xbc, 0x2f, 0x42, 0x70, 0xb0, 0x4c, 0xe3, 0x0b, 0x9f, 0xa2, 0x7f, 0x04, 0x35, 0x86, 0x0f, 0xcc, 0xf4, 0x0b, 0x3d, 0xc7, 0xea, 0xef, 0xfd, 0xba, 0xb9, 0xe1, 0x76, 0x66, 0x19, 0xbb, 0x01, 0x6c, 0x17, 0x90, 0x26, 0x63, 0xcb, 0x24 } -, - /* Encryption */ - 129, - { 0x01, 0x0c, 0xf7, 0x4b, 0xeb, 0xc2, 0x63, 0x6d, 0x2c, 0x49, 0xd9, 0xc6, 0x22, 0xbd, 0x76, 0xcc, 0x0b, 0x1d, 0x02, 0xeb, 0xb5, 0x2f, 0xdf, 0xae, 0xc0, 0x1c, 0x4a, 0xc1, 0xe7, 0x56, 0x07, 0x1a, 0x8e, 0xf7, 0x6e, 0x12, 0x2a, 0x4c, 0x62, 0xc6, 0xba, 0x32, 0x65, 0xfa, 0x4c, 0x90, 0x56, 0x26, 0xd1, 0x13, 0xd5, 0x9d, 0xb7, 0x9a, 0xd6, 0x5f, 0x86, 0x40, 0xb3, 0xc4, 0x34, 0x4d, 0x73, 0x40, 0xc1, 0x6e, 0x38, 0xde, 0xb1, 0x89, 0xe3, 0xa1, 0xb1, 0x1e, 0xaa, 0xb0, 0xb2, 0x60, 0x6a, 0x7f, 0x82, 0xf5, 0x94, 0x6d, 0x41, 0x9a, 0xce, 0xbb, 0xbb, 0x3a, 0x93, 0x7d, 0x41, 0xe2, 0x9b, 0x33, 0xed, 0xd3, 0xad, 0x15, 0xf1, 0xe7, 0x77, 0x0f, 0xcf, 0xc3, 0x0a, 0xe0, 0x6a, 0xa0, 0x1b, 0xcd, 0x03, 0xd5, 0xdf, 0xb1, 0x62, 0xf8, 0x7a, 0x18, 0x39, 0x67, 0x55, 0x3c, 0x25, 0x02, 0xcb, 0x5f, 0xfe } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.3", - /* Message */ - 2, - { 0x41, 0xd6 } -, - /* Seed */ - 124, - { 0x55, 0x6e, 0x59, 0xb2, 0xc1, 0x89, 0x58, 0x75, 0x08, 0xe2, 0x08, 0x92, 0xfa, 0x56, 0x02, 0xd2, 0x49, 0xfb, 0xfb, 0x71, 0xa1, 0x09, 0x05, 0xed, 0x5a, 0xf7, 0xb7, 0x9b, 0xe8, 0x71, 0x11, 0xa0, 0xc6, 0x9a, 0xdd, 0xb1, 0x9e, 0xef, 0x31, 0x6d, 0x7c, 0x0b, 0x21, 0x81, 0x79, 0x90, 0xdc, 0x3e, 0xd8, 0xc7, 0x6c, 0xb2, 0x3e, 0x83, 0x0e, 0x17, 0xc0, 0xf4, 0x38, 0x73, 0x15, 0x9f, 0xab, 0x7c, 0x5c, 0x4a, 0x6c, 0xf2, 0x19, 0xcb, 0x1d, 0xc5, 0xc5, 0xda, 0x45, 0x53, 0xa3, 0xe0, 0xbf, 0x18, 0x3b, 0x8e, 0x11, 0x2b, 0x61, 0xf6, 0x92, 0xa7, 0xdd, 0xf0, 0x04, 0xbd, 0xbf, 0xdc, 0xc8, 0xd6, 0x65, 0x9c, 0x3d, 0xd8, 0x0c, 0xb2, 0x3a, 0xab, 0xe8, 0xc6, 0xfd, 0xf2, 0x67, 0x5d, 0x07, 0x3b, 0x66, 0x23, 0x12, 0xe4, 0xac, 0xcd, 0xe9, 0x1c, 0x12, 0x25, 0xe6, 0xd1 } -, - /* Encryption */ - 129, - { 0x00, 0x2a, 0x10, 0x04, 0x95, 0x59, 0x66, 0x55, 0x30, 0x4b, 0xdd, 0xf9, 0x09, 0x7f, 0x78, 0xd9, 0xdd, 0xb5, 0xeb, 0x42, 0x9b, 0x66, 0x63, 0x5a, 0x58, 0xa2, 0x98, 0xf1, 0x92, 0x8e, 0xed, 0x61, 0x53, 0x4f, 0x80, 0xb4, 0xea, 0x05, 0xee, 0x39, 0xb0, 0x2a, 0x64, 0x56, 0x6f, 0x6c, 0x45, 0x6e, 0x3b, 0x58, 0x6e, 0x7c, 0xb4, 0x3a, 0x88, 0x94, 0x0e, 0xe1, 0x29, 0x34, 0x0f, 0x57, 0x8e, 0x56, 0xe7, 0x2d, 0x8b, 0x27, 0x83, 0x36, 0x10, 0x06, 0xd9, 0x71, 0x29, 0xab, 0xef, 0x02, 0xcf, 0x1c, 0x19, 0x12, 0xe1, 0x7f, 0x0c, 0xd1, 0xd7, 0x1c, 0x0b, 0x32, 0x8d, 0x0b, 0x48, 0xa4, 0xac, 0x7a, 0xec, 0xe3, 0xc0, 0x05, 0xa6, 0x19, 0x0e, 0xac, 0x22, 0xc1, 0x99, 0x10, 0x41, 0x15, 0x9a, 0x2a, 0xd1, 0xdb, 0x08, 0x96, 0x01, 0x5c, 0x4f, 0xf1, 0xd7, 0xb3, 0x54, 0x47, 0xcf, 0xc1, 0x0a, 0x24, 0xbe } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.4", - /* Message */ - 62, - { 0x0b, 0xb4, 0xab, 0xc7, 0xdc, 0x6c, 0xa4, 0x23, 0x5c, 0x29, 0xed, 0x0a, 0x2c, 0xb6, 0x3f, 0xd1, 0x41, 0x34, 0x1e, 0x2c, 0x4c, 0x90, 0x1e, 0x6d, 0xc9, 0x5d, 0xa9, 0xf0, 0x01, 0x0f, 0xa2, 0xe0, 0x22, 0xcc, 0xfe, 0x8a, 0xdf, 0xdb, 0x6e, 0xcf, 0x4d, 0x89, 0xf5, 0x79, 0xa1, 0x0a, 0x51, 0x70, 0xbe, 0x18, 0xc4, 0x6a, 0x24, 0x1c, 0xa7, 0xee, 0xd1, 0x07, 0xca, 0xfe, 0x4a, 0x9d } -, - /* Seed */ - 64, - { 0xbb, 0x80, 0xbe, 0x78, 0x02, 0xdd, 0x8b, 0xf5, 0xfb, 0x5b, 0x1b, 0x86, 0x39, 0x66, 0x54, 0xf4, 0x73, 0x9f, 0x5d, 0x43, 0x51, 0xf1, 0x9c, 0xe3, 0x1b, 0x72, 0xc2, 0x10, 0xae, 0xa1, 0xa2, 0xed, 0x21, 0x42, 0xd8, 0xd6, 0xf7, 0xae, 0x37, 0x4f, 0x06, 0x13, 0x3a, 0x31, 0x5c, 0x62, 0x64, 0xda, 0x65, 0xce, 0xf2, 0x33, 0xed, 0x3d, 0xcc, 0x81, 0x59, 0xd7, 0x6c, 0x3a, 0x17, 0xf3, 0x6d, 0x0c } -, - /* Encryption */ - 129, - { 0x00, 0x6f, 0x1b, 0x6c, 0x1f, 0xb3, 0x7a, 0xe5, 0xc8, 0xc0, 0x24, 0x44, 0x9a, 0xbc, 0x38, 0x40, 0xe8, 0xe5, 0x09, 0x71, 0x43, 0xee, 0xd1, 0x6b, 0xea, 0xf6, 0x7b, 0x6c, 0x7a, 0x48, 0x24, 0xac, 0x38, 0xb6, 0xf8, 0xc3, 0x53, 0xb6, 0x45, 0xc8, 0xce, 0xa4, 0xfa, 0xb0, 0x9c, 0x02, 0xfa, 0x6c, 0x32, 0x5a, 0x50, 0x74, 0x38, 0xb9, 0x64, 0x5e, 0xc8, 0x23, 0x00, 0x86, 0xb3, 0x15, 0xe3, 0x4e, 0x7a, 0x56, 0xad, 0xb0, 0xec, 0xd8, 0x9f, 0xd0, 0x7b, 0x98, 0x73, 0x9c, 0x24, 0xdb, 0x6f, 0xe1, 0x1f, 0xf2, 0xe5, 0xad, 0x38, 0x31, 0x8e, 0xc3, 0x1d, 0xf2, 0xed, 0x25, 0x08, 0xde, 0xbc, 0xa7, 0xa6, 0x7e, 0x24, 0x01, 0x96, 0xaa, 0x9a, 0xcd, 0x80, 0x32, 0x9f, 0x4c, 0x43, 0x43, 0xc1, 0x0b, 0x72, 0x69, 0x9f, 0x9d, 0x6b, 0x5b, 0xc2, 0x43, 0x99, 0x5b, 0x09, 0xc4, 0x6d, 0xd3, 0xd8, 0x03, 0xce } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.5", - /* Message */ - 15, - { 0xed, 0x26, 0xec, 0x20, 0x2d, 0x5e, 0x69, 0x74, 0x0d, 0xa3, 0x48, 0x84, 0x06, 0xbb, 0xbd } -, - /* Seed */ - 111, - { 0xf2, 0xfd, 0x08, 0xcc, 0x0d, 0xb9, 0xa5, 0x5a, 0xbf, 0xeb, 0xd9, 0x2e, 0x2a, 0x9d, 0x75, 0x87, 0x2a, 0xb7, 0xdf, 0xfb, 0x0b, 0x4d, 0xa1, 0x36, 0x06, 0xe1, 0x52, 0x75, 0x9f, 0x86, 0x6f, 0x22, 0xeb, 0x87, 0x29, 0xfb, 0x8c, 0x9a, 0x5c, 0x45, 0xba, 0x2f, 0x4a, 0xca, 0xe4, 0x31, 0x59, 0xa7, 0xad, 0x3c, 0xf7, 0x8e, 0x81, 0xfd, 0x09, 0x54, 0x90, 0x9b, 0x1f, 0x0e, 0x70, 0x89, 0xca, 0x86, 0xa4, 0x58, 0x8d, 0x8c, 0x87, 0xa1, 0xa6, 0x1f, 0x1a, 0x48, 0x39, 0x82, 0x36, 0xde, 0xf9, 0xb4, 0x97, 0x5e, 0x25, 0x49, 0x57, 0x3f, 0x60, 0xad, 0xb5, 0xe8, 0x61, 0xb7, 0xc3, 0xb2, 0xdf, 0xeb, 0x81, 0x0d, 0x13, 0xe2, 0x97, 0xa6, 0xcd, 0x3f, 0x2a, 0xfe, 0xcb, 0x0e, 0x4f, 0x14, 0x7c } -, - /* Encryption */ - 129, - { 0x00, 0x93, 0x3c, 0x58, 0xa5, 0x0c, 0x70, 0x15, 0x0d, 0xa0, 0x82, 0x3a, 0x7c, 0x1e, 0x36, 0x7d, 0x36, 0xe5, 0x21, 0x3f, 0x66, 0xa3, 0x00, 0x50, 0xfd, 0xed, 0x72, 0xd5, 0x75, 0x5b, 0x5f, 0x9c, 0x24, 0x05, 0x0b, 0x41, 0x14, 0xf5, 0x35, 0x09, 0x98, 0x8b, 0x62, 0x54, 0x20, 0xcf, 0xd0, 0x0a, 0xc1, 0xc8, 0xcd, 0x84, 0x48, 0x9c, 0xa2, 0x6b, 0x74, 0x3f, 0xb4, 0x7d, 0x1b, 0x64, 0xd0, 0xa8, 0x80, 0x8e, 0xe3, 0x21, 0x27, 0xc7, 0x71, 0x22, 0x4a, 0x0d, 0xd5, 0xa5, 0x64, 0xe6, 0x36, 0xad, 0xd7, 0x3b, 0xcf, 0xf7, 0xb4, 0x73, 0xe9, 0xa1, 0x2b, 0x7d, 0x46, 0x4d, 0x7d, 0xd4, 0xa7, 0x52, 0x04, 0x86, 0x61, 0xa8, 0xb0, 0x74, 0xb9, 0xfa, 0x15, 0x06, 0xfe, 0xf6, 0x03, 0xdd, 0x96, 0xd1, 0x19, 0x96, 0xa7, 0xd9, 0xe7, 0x48, 0x79, 0xf9, 0x9b, 0xb2, 0xd9, 0x1c, 0x37, 0xaa, 0xb1, 0x35, 0x72 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.6", - /* Message */ - 33, - { 0xdc, 0x28, 0x5a, 0x26, 0x39, 0x59, 0x39, 0xe7, 0x99, 0x72, 0x04, 0xc7, 0x1a, 0x93, 0x2f, 0x79, 0x5b, 0x4d, 0xe4, 0x01, 0xe9, 0x6f, 0x34, 0xe1, 0x89, 0x36, 0x32, 0x37, 0xe9, 0xcf, 0xda, 0xdc, 0x61 } -, - /* Seed */ - 93, - { 0xd8, 0x0b, 0xfc, 0xc2, 0x91, 0xce, 0x51, 0x8c, 0xe0, 0xbb, 0x6a, 0xe9, 0x34, 0xdf, 0xd8, 0x56, 0x58, 0xb2, 0x39, 0xfb, 0x45, 0x39, 0xcb, 0xe0, 0x5d, 0xa1, 0x26, 0xa8, 0x98, 0xb7, 0xf3, 0x64, 0x88, 0x7c, 0x0d, 0xdf, 0xb1, 0xea, 0xea, 0x1d, 0x5a, 0x90, 0xde, 0x76, 0x95, 0x66, 0x5c, 0x55, 0x82, 0x2a, 0x11, 0x72, 0xcb, 0x5b, 0xe8, 0xa1, 0x12, 0xd2, 0x8c, 0x86, 0x02, 0xc5, 0x13, 0xbe, 0x48, 0xc2, 0x92, 0xf0, 0x59, 0x72, 0xe6, 0x71, 0x1a, 0x44, 0xcb, 0xc7, 0x28, 0x17, 0x15, 0x09, 0x4b, 0x49, 0x0f, 0xde, 0x29, 0x16, 0x5a, 0x6b, 0x6b, 0x7d, 0x99, 0xdb, 0xed } -, - /* Encryption */ - 129, - { 0x01, 0x57, 0xe7, 0xb5, 0x4a, 0x34, 0x1b, 0x8d, 0xf8, 0xbd, 0x9b, 0x99, 0xfc, 0x2e, 0x6c, 0x58, 0xd8, 0x86, 0xfc, 0x79, 0xe7, 0x44, 0x2a, 0x9e, 0x76, 0xd0, 0xd6, 0x7e, 0x48, 0x58, 0xc4, 0xab, 0xf0, 0xed, 0x25, 0xc3, 0x3d, 0xf6, 0x2e, 0x2a, 0xad, 0xa3, 0x99, 0xdf, 0xea, 0xdc, 0x7f, 0xf6, 0x89, 0x28, 0xe6, 0xb9, 0x00, 0x71, 0x02, 0xdd, 0xf8, 0x09, 0xf5, 0x90, 0x8e, 0xef, 0xc1, 0x0f, 0x2a, 0x73, 0x71, 0x06, 0x09, 0x23, 0x1f, 0x5d, 0x45, 0xe0, 0x0a, 0xdd, 0xa1, 0x34, 0xb6, 0x02, 0xdd, 0x0e, 0xee, 0x0f, 0x67, 0x22, 0x49, 0x4b, 0x7e, 0x4f, 0x7b, 0x40, 0x57, 0x72, 0xc8, 0x31, 0xb6, 0x37, 0x29, 0xbe, 0x0f, 0x1c, 0x4b, 0x6d, 0x2a, 0x54, 0x2c, 0x15, 0x65, 0xc7, 0xdf, 0x23, 0x1d, 0x9e, 0x89, 0x2e, 0x58, 0x6a, 0x18, 0xec, 0x54, 0x37, 0x73, 0x76, 0xdb, 0x77, 0xf8, 0x13, 0x84 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.7", - /* Message */ - 55, - { 0x46, 0x47, 0xd8, 0x41, 0xc5, 0xa0, 0xb9, 0x97, 0x3a, 0x91, 0x45, 0x4d, 0xd1, 0xa0, 0x5e, 0xc0, 0xe5, 0x75, 0x03, 0xed, 0x99, 0x67, 0x2a, 0xc0, 0x02, 0xdf, 0xee, 0x77, 0x7f, 0x7f, 0xa5, 0x06, 0xfb, 0x41, 0xb2, 0xec, 0x8b, 0x8d, 0x2c, 0xdb, 0x9b, 0xef, 0x01, 0x33, 0xbd, 0x5e, 0x3a, 0x7d, 0x0c, 0x43, 0x44, 0xb2, 0x8f, 0xa8, 0xdb } -, - /* Seed */ - 71, - { 0xf5, 0x27, 0xa1, 0x4e, 0x2e, 0x06, 0xe7, 0x3f, 0x1c, 0x24, 0x5d, 0x19, 0x0d, 0x02, 0xcc, 0xed, 0x01, 0x1e, 0x46, 0x84, 0x87, 0xac, 0xfa, 0x5e, 0x0b, 0xce, 0x39, 0x78, 0x6b, 0x46, 0xa9, 0xa8, 0xc7, 0x51, 0xa8, 0xb4, 0x40, 0x6c, 0xcf, 0xa1, 0xfc, 0x5b, 0x7a, 0xb9, 0xba, 0xda, 0x7b, 0x4a, 0xd4, 0x52, 0x46, 0x7e, 0x50, 0xb7, 0xfc, 0x41, 0x31, 0x8e, 0xdc, 0x73, 0xdc, 0x2d, 0x84, 0xa2, 0x8a, 0x08, 0x1f, 0xa1, 0x79, 0x05, 0xbc } -, - /* Encryption */ - 129, - { 0x00, 0x4e, 0x03, 0xca, 0xa9, 0x48, 0x1d, 0x7f, 0x96, 0x78, 0x20, 0x7c, 0x17, 0xb6, 0x82, 0x2a, 0x5f, 0x69, 0x17, 0xed, 0x01, 0xeb, 0x40, 0x2e, 0x7f, 0x23, 0x01, 0x35, 0xa1, 0x23, 0xcd, 0x9b, 0x6d, 0xe3, 0xbe, 0xc3, 0xb9, 0xbf, 0x33, 0x8a, 0xde, 0xf8, 0x07, 0x6f, 0xb7, 0x65, 0x2f, 0xc7, 0xe3, 0xa3, 0x73, 0xfc, 0x16, 0x22, 0xf1, 0xdc, 0x67, 0x9d, 0x41, 0x5c, 0x32, 0x00, 0x02, 0x6d, 0x8a, 0x8a, 0x50, 0xf8, 0xdb, 0x6a, 0x58, 0x3f, 0x66, 0x69, 0x29, 0xd0, 0x31, 0x8e, 0xbf, 0x91, 0xd9, 0x59, 0x12, 0xfc, 0x06, 0x10, 0x2d, 0x9b, 0xe8, 0x75, 0x25, 0xa7, 0x36, 0xb5, 0xaf, 0x21, 0xe1, 0x6d, 0xe3, 0xef, 0xaa, 0x66, 0xe9, 0xcf, 0x41, 0xca, 0x73, 0x48, 0x23, 0x23, 0xdd, 0xe8, 0x0e, 0xec, 0x30, 0x85, 0x81, 0xa4, 0x4c, 0xa3, 0xaa, 0xbf, 0x76, 0xdd, 0x48, 0x1d, 0xe6, 0x52, 0x9a } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.8", - /* Message */ - 8, - { 0xba, 0x10, 0xd4, 0x7a, 0x9f, 0x62, 0x42, 0x81 } -, - /* Seed */ - 118, - { 0x37, 0x9f, 0xdc, 0xfa, 0x5d, 0x8c, 0x61, 0x37, 0xc3, 0x6b, 0xad, 0x14, 0x3f, 0xd9, 0xb1, 0xf7, 0xe8, 0x94, 0xfa, 0x0e, 0x9a, 0xc0, 0xfb, 0x9c, 0xec, 0x60, 0xe8, 0x6c, 0x82, 0x53, 0x97, 0x5d, 0x8e, 0x78, 0x74, 0x21, 0x08, 0x49, 0x5e, 0x59, 0x4a, 0xd0, 0x89, 0x8f, 0xd0, 0x4c, 0x91, 0xe4, 0x01, 0xe7, 0xc8, 0x80, 0x89, 0xa8, 0x7b, 0x4a, 0x4a, 0x82, 0xe8, 0x34, 0xcd, 0x37, 0x77, 0xa7, 0xd3, 0xf8, 0x0e, 0x64, 0x86, 0x81, 0x2d, 0x4a, 0xb0, 0xd3, 0x37, 0x23, 0x16, 0x2b, 0xcb, 0xc7, 0xe0, 0x81, 0xa9, 0x9d, 0x3f, 0x9b, 0x5c, 0x3b, 0xa4, 0x4b, 0x19, 0xbd, 0xf8, 0x84, 0xa4, 0x62, 0x6f, 0xd7, 0xde, 0xf7, 0x67, 0x40, 0x57, 0xbe, 0xa0, 0x82, 0xe0, 0x0d, 0xb4, 0xb7, 0x61, 0xad, 0x75, 0x3a, 0xb5, 0x98, 0x5a, 0x94 } -, - /* Encryption */ - 129, - { 0x00, 0xc4, 0x96, 0x5e, 0x29, 0x63, 0xd7, 0xbc, 0x5b, 0x10, 0x44, 0xd8, 0xfc, 0x75, 0xeb, 0x33, 0x82, 0xce, 0xdd, 0x99, 0x07, 0x41, 0x97, 0x92, 0xef, 0xc8, 0x8c, 0x92, 0xb1, 0xd5, 0xc3, 0x90, 0xfa, 0xb1, 0x90, 0x01, 0x1c, 0x51, 0x8a, 0xc9, 0xce, 0x45, 0xc1, 0xb8, 0xe7, 0x27, 0x6b, 0xff, 0xc7, 0xc7, 0xe0, 0x5c, 0x25, 0x37, 0x08, 0x91, 0x37, 0xa9, 0x8d, 0xf6, 0xe0, 0xc6, 0x92, 0x02, 0x0e, 0xd6, 0x54, 0xaf, 0x83, 0x33, 0x9b, 0xab, 0x11, 0x92, 0x71, 0x77, 0xf2, 0xf5, 0x23, 0x22, 0x6b, 0x4f, 0xe6, 0x4b, 0x99, 0xc1, 0x72, 0x9f, 0x6c, 0x92, 0x29, 0x06, 0xbc, 0x16, 0xd3, 0x1f, 0x0c, 0x94, 0xdc, 0x2e, 0xa4, 0x13, 0x81, 0x0d, 0x55, 0x94, 0x0c, 0x97, 0xaf, 0xdd, 0x48, 0x29, 0xfb, 0xf1, 0x61, 0x8a, 0x8c, 0x9d, 0xe8, 0x9d, 0xc2, 0x40, 0x06, 0xe7, 0xe4, 0x21, 0xa5, 0x8d, 0x38 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.9", - /* Message */ - 38, - { 0xef, 0xc7, 0x48, 0x9f, 0xec, 0x77, 0x9e, 0x05, 0x2e, 0x37, 0x9c, 0x1a, 0xd9, 0x04, 0x59, 0x03, 0xb6, 0x84, 0x2a, 0x9c, 0xa4, 0x1b, 0x48, 0xbd, 0xdc, 0xe5, 0x80, 0x80, 0xa5, 0xed, 0xec, 0x63, 0xf3, 0x6e, 0xe1, 0x15, 0x60, 0xfd } -, - /* Seed */ - 88, - { 0xc8, 0xec, 0xba, 0x62, 0x72, 0x14, 0xc4, 0x14, 0xd7, 0xc3, 0xfd, 0xd3, 0x16, 0xc2, 0xd8, 0x2a, 0x98, 0x53, 0x57, 0x28, 0xb9, 0xa9, 0x37, 0x6f, 0x69, 0xa9, 0x53, 0xd7, 0xcd, 0x1c, 0xea, 0xd7, 0x10, 0x53, 0xdb, 0xe0, 0x14, 0x0c, 0x7f, 0x02, 0xbd, 0x71, 0xe0, 0x13, 0x7f, 0xea, 0x29, 0xcd, 0x4c, 0x21, 0xa5, 0x8b, 0xde, 0xc6, 0x66, 0x40, 0x99, 0x0d, 0x28, 0xc1, 0x0b, 0x70, 0x17, 0x59, 0x3c, 0x1d, 0x11, 0xfe, 0x9a, 0xbe, 0xbd, 0x71, 0x24, 0xe1, 0xd9, 0x85, 0x63, 0x1e, 0x94, 0xe9, 0xe5, 0x12, 0x41, 0x26, 0x0f, 0x9e, 0xf1, 0xf1 } -, - /* Encryption */ - 129, - { 0x00, 0x32, 0x18, 0x4e, 0xf2, 0x88, 0xfa, 0x0a, 0xaa, 0x0c, 0x2c, 0x1a, 0x19, 0xe7, 0xc2, 0x9f, 0x81, 0xc7, 0x01, 0x2f, 0x45, 0x29, 0xeb, 0x9e, 0xeb, 0x53, 0x68, 0x1f, 0x62, 0x47, 0xf8, 0xd4, 0x35, 0x69, 0x13, 0x45, 0xa5, 0x14, 0x8a, 0x2c, 0x87, 0x7b, 0x2b, 0x18, 0x92, 0x6b, 0xae, 0x9d, 0xe5, 0xb3, 0x17, 0xba, 0xc0, 0xe9, 0x02, 0xc9, 0x60, 0x25, 0xee, 0xc2, 0xf9, 0xea, 0xbd, 0x0f, 0x9e, 0x88, 0x86, 0xef, 0x95, 0x19, 0xc8, 0x24, 0x9f, 0xeb, 0x83, 0x46, 0x65, 0xc1, 0x01, 0x0d, 0xb7, 0x62, 0x4f, 0x48, 0x7e, 0x16, 0x1f, 0x89, 0xf6, 0xae, 0x00, 0x18, 0xc1, 0xf4, 0xe0, 0xab, 0x54, 0x72, 0xf7, 0xf0, 0x99, 0x35, 0x61, 0xcd, 0x59, 0x85, 0xf3, 0x83, 0xd0, 0x49, 0xdd, 0x83, 0x2b, 0x82, 0xc8, 0x37, 0x48, 0xb2, 0x28, 0x1b, 0xfb, 0x99, 0xd9, 0xd5, 0x00, 0x8d, 0xc8, 0x07, 0xde } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.10", - /* Message */ - 19, - { 0x5b, 0x26, 0x4f, 0xf8, 0x8d, 0xef, 0xd3, 0xc2, 0x99, 0x99, 0x3d, 0x81, 0x12, 0x9a, 0x6e, 0x5d, 0xd2, 0xb5, 0x7b } -, - /* Seed */ - 107, - { 0x0b, 0xe7, 0xab, 0x5b, 0x29, 0x70, 0x48, 0x43, 0xc1, 0xc0, 0xd7, 0xe4, 0xef, 0x5e, 0x93, 0xf3, 0xba, 0x71, 0x7d, 0xb7, 0x81, 0x5a, 0xf5, 0x72, 0xe3, 0xa9, 0xab, 0x3f, 0x99, 0xb1, 0xac, 0x9a, 0x22, 0xb9, 0x2d, 0x9b, 0x43, 0xda, 0x2b, 0x99, 0x65, 0xc7, 0x97, 0x70, 0x57, 0x17, 0x3c, 0x03, 0x57, 0x3f, 0x32, 0x48, 0x0a, 0x92, 0x70, 0x19, 0xaf, 0xff, 0x0e, 0x0e, 0x34, 0xe4, 0x09, 0x5e, 0x4a, 0x4d, 0x39, 0x2d, 0xcd, 0x1b, 0xd9, 0xf2, 0x7d, 0x32, 0xfd, 0xe7, 0x15, 0x9f, 0x02, 0x3c, 0x83, 0x08, 0x9e, 0x88, 0xa7, 0x1f, 0x24, 0x33, 0x64, 0x8e, 0xf8, 0xc8, 0x40, 0x45, 0xb9, 0xc3, 0x6d, 0x8e, 0x5f, 0x6e, 0xff, 0x03, 0x4b, 0x91, 0xb7, 0x02, 0x34 } -, - /* Encryption */ - 129, - { 0x00, 0x4c, 0x65, 0x29, 0x35, 0x56, 0xf2, 0xfd, 0x15, 0xab, 0x90, 0xeb, 0x22, 0xe0, 0x75, 0x33, 0xb3, 0xdc, 0x17, 0x33, 0x4f, 0x5e, 0xed, 0x27, 0xa3, 0x99, 0x31, 0x80, 0xc5, 0x6c, 0x8e, 0x3d, 0x8f, 0x51, 0xee, 0xb2, 0x75, 0x95, 0xf8, 0x78, 0xd2, 0x36, 0x65, 0xba, 0x3a, 0xb0, 0xe7, 0x28, 0xa5, 0xae, 0xf7, 0x23, 0x4f, 0x60, 0x36, 0xb0, 0x23, 0xf8, 0x71, 0xc2, 0xd6, 0x55, 0x2a, 0x18, 0xad, 0x5a, 0x25, 0xbe, 0xc5, 0x5b, 0xc7, 0x6b, 0xee, 0x63, 0x83, 0x46, 0x12, 0x81, 0xd3, 0x9a, 0x30, 0xf6, 0xd6, 0x60, 0x92, 0xe0, 0xcf, 0xf6, 0x92, 0x32, 0x68, 0xfc, 0x04, 0x3c, 0xdf, 0x74, 0x7e, 0x8d, 0x54, 0x89, 0x50, 0x4e, 0x7d, 0xb3, 0x0a, 0x7b, 0xd9, 0x1a, 0x2b, 0xfc, 0x6c, 0x1b, 0x34, 0x14, 0x40, 0x57, 0x01, 0x75, 0x3d, 0x5b, 0x85, 0xff, 0x73, 0x52, 0x01, 0x2d, 0x55, 0xe9, 0x23 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.11", - /* Message */ - 37, - { 0x72, 0xe2, 0x09, 0x00, 0xe5, 0xbc, 0xc2, 0x3c, 0xf8, 0x79, 0xed, 0x35, 0x31, 0x88, 0x9a, 0x1e, 0xd5, 0xaa, 0x3d, 0x5c, 0x79, 0x2e, 0x34, 0xe3, 0xb1, 0x26, 0x90, 0xd9, 0xac, 0x24, 0x03, 0xd0, 0xf6, 0xf7, 0x8f, 0x59, 0x23 } -, - /* Seed */ - 89, - { 0x11, 0x62, 0x75, 0xe9, 0xbe, 0x1b, 0xd4, 0xe6, 0xf2, 0x03, 0xff, 0xe4, 0xf0, 0xab, 0x9a, 0x32, 0x73, 0x84, 0x10, 0xe9, 0x23, 0xe8, 0x39, 0x71, 0xee, 0x9a, 0x6b, 0x99, 0x2c, 0x65, 0x0a, 0x03, 0x1f, 0x94, 0x0f, 0x6e, 0xf3, 0x3d, 0x61, 0x50, 0xdf, 0xf8, 0xb3, 0x9d, 0xcf, 0x22, 0x50, 0xd5, 0x66, 0x5c, 0x04, 0x27, 0x3b, 0x2b, 0xe2, 0xde, 0xc9, 0x97, 0x12, 0xbb, 0xc0, 0x12, 0xf7, 0x5a, 0x31, 0xb3, 0x0b, 0xa0, 0x6f, 0xf9, 0xeb, 0xe3, 0xb8, 0x9f, 0x58, 0xa6, 0x8f, 0x26, 0x85, 0xe3, 0x38, 0xff, 0x6c, 0xb8, 0xd4, 0x18, 0x1a, 0x8a, 0x14 } -, - /* Encryption */ - 129, - { 0x00, 0x21, 0x4a, 0x83, 0xbe, 0x45, 0x3a, 0x75, 0xbc, 0xda, 0x94, 0x33, 0xa7, 0xb9, 0x51, 0x43, 0x34, 0x39, 0x98, 0x30, 0x72, 0x07, 0x1c, 0xc8, 0x21, 0x12, 0xb7, 0x77, 0x42, 0xbe, 0x0c, 0x38, 0x22, 0x6c, 0xa3, 0xc6, 0xf3, 0x8d, 0x55, 0xb9, 0xca, 0x3f, 0x08, 0xc8, 0x79, 0x37, 0x89, 0x79, 0x6e, 0x6c, 0xde, 0x67, 0x37, 0x6d, 0x67, 0x3f, 0x5e, 0xc5, 0x7d, 0xac, 0xc3, 0x74, 0xc4, 0xc3, 0x17, 0x34, 0x44, 0xdd, 0x8a, 0x63, 0x76, 0xde, 0x8f, 0x9d, 0xdc, 0x31, 0xa4, 0xc0, 0x60, 0xd7, 0x72, 0xf0, 0x2e, 0xb7, 0x49, 0x51, 0x2d, 0xcd, 0x04, 0x02, 0x31, 0x17, 0x5d, 0x0b, 0x69, 0x42, 0xa9, 0x47, 0xb2, 0xc8, 0x2f, 0x7c, 0x19, 0xe2, 0xce, 0x87, 0x50, 0x00, 0xaf, 0x84, 0x27, 0x4c, 0xbe, 0x2a, 0xdb, 0xf2, 0xfb, 0xfb, 0x53, 0x7c, 0xcb, 0xe2, 0xfb, 0xd0, 0x72, 0x87, 0x13, 0x78, 0x75 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.12", - /* Message */ - 21, - { 0x16, 0xb1, 0x10, 0xe2, 0x90, 0x9b, 0x11, 0xb0, 0xcf, 0x36, 0xb0, 0x52, 0xc6, 0xf3, 0x93, 0x6a, 0x2c, 0xa1, 0x3f, 0xc3, 0xa5 } -, - /* Seed */ - 105, - { 0xc2, 0xbf, 0x9e, 0x4f, 0xb1, 0xed, 0x70, 0xca, 0x21, 0x2d, 0x15, 0xee, 0x8e, 0xb3, 0xcd, 0x66, 0x0e, 0xb6, 0x5c, 0x52, 0x78, 0xe0, 0x3a, 0x3b, 0x10, 0xeb, 0x12, 0xb2, 0x53, 0x34, 0xa4, 0x72, 0x8b, 0x94, 0x99, 0x20, 0x12, 0x2f, 0xb9, 0x92, 0xbf, 0x2c, 0xe4, 0x30, 0x10, 0x3d, 0x74, 0xab, 0x74, 0xe6, 0xd6, 0xe7, 0x62, 0xb8, 0x5d, 0x6e, 0xf9, 0xbe, 0xb7, 0xd7, 0x25, 0x98, 0xf2, 0x93, 0xa4, 0x35, 0x62, 0xe9, 0x06, 0x89, 0x54, 0x11, 0x11, 0x51, 0x1d, 0x31, 0x4a, 0x9c, 0x46, 0x02, 0x23, 0x76, 0xad, 0x05, 0x5d, 0x54, 0xce, 0xd6, 0xac, 0x1f, 0x36, 0xe9, 0x8c, 0x2b, 0x25, 0xa0, 0xac, 0xde, 0x64, 0xdc, 0xf6, 0x52, 0x2c, 0x3d, 0x22 } -, - /* Encryption */ - 129, - { 0x01, 0x6a, 0xa9, 0x5a, 0x08, 0x23, 0x82, 0xc1, 0x0c, 0x04, 0x53, 0x10, 0xfe, 0xfe, 0xcc, 0x8d, 0x17, 0xdb, 0xf2, 0x16, 0xd8, 0xed, 0xc0, 0x4b, 0xda, 0xcd, 0x4f, 0x52, 0x4d, 0xe4, 0x85, 0xb7, 0xfe, 0x8a, 0x26, 0xf1, 0x4c, 0xab, 0xd2, 0x97, 0xe7, 0xf0, 0x3b, 0x3c, 0x85, 0x08, 0x6a, 0x16, 0x14, 0x7d, 0x5f, 0x61, 0x93, 0x91, 0x9b, 0xb9, 0x5a, 0x53, 0xc1, 0x46, 0xc7, 0x84, 0xc0, 0x0b, 0x53, 0x32, 0xe0, 0x18, 0xf6, 0x43, 0xcf, 0x95, 0x87, 0x24, 0xcd, 0x08, 0x07, 0x5e, 0xb6, 0x4c, 0xa5, 0x68, 0x0c, 0x27, 0xc7, 0x05, 0xd4, 0x0d, 0x88, 0xb9, 0xd7, 0xf4, 0x26, 0xb7, 0x36, 0xe3, 0xc5, 0xf6, 0x39, 0x4e, 0xa6, 0x83, 0xb6, 0x5c, 0x23, 0x73, 0xa6, 0xfc, 0xeb, 0x14, 0xf2, 0xea, 0x85, 0x1c, 0xa8, 0xe0, 0x00, 0xe2, 0x4d, 0xc8, 0xf7, 0xe7, 0xc8, 0x1b, 0x1d, 0x4e, 0x72, 0x0c, 0x36 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.13", - /* Message */ - 17, - { 0x3c, 0x86, 0x0a, 0x28, 0xfa, 0xe8, 0xda, 0x2a, 0xc0, 0xd9, 0xa3, 0x39, 0x89, 0x97, 0x7f, 0xfa, 0x04 } -, - /* Seed */ - 109, - { 0x7c, 0x96, 0x99, 0x90, 0x6c, 0x9f, 0x16, 0x65, 0x12, 0x5c, 0x0b, 0x10, 0x67, 0x3f, 0x3d, 0xad, 0x98, 0xc9, 0x1a, 0x4f, 0xf0, 0xfa, 0xaa, 0x64, 0x7d, 0xb5, 0x54, 0xfd, 0x62, 0x27, 0xef, 0x50, 0x90, 0x9c, 0x97, 0xb7, 0x06, 0x09, 0x2b, 0xe2, 0x10, 0xdb, 0x2c, 0x24, 0xba, 0x9e, 0x8e, 0x6a, 0x87, 0xf9, 0xdd, 0xd9, 0xf3, 0xf4, 0x91, 0x29, 0x10, 0x29, 0xac, 0x6e, 0xe4, 0x6e, 0x08, 0xd0, 0xd7, 0xa5, 0x3c, 0x46, 0x2d, 0xb4, 0xf0, 0xfd, 0x1c, 0xc2, 0x3e, 0xc8, 0xf5, 0x5e, 0xda, 0x07, 0xf4, 0xca, 0x0d, 0x3e, 0x3c, 0xd3, 0x76, 0x22, 0x85, 0x5b, 0x4d, 0xb0, 0x8f, 0x64, 0xbe, 0x3e, 0x26, 0xc3, 0xe9, 0x78, 0x75, 0x17, 0x12, 0x94, 0xea, 0xdf, 0x86, 0xfc, 0xd6 } -, - /* Encryption */ - 129, - { 0x01, 0x0c, 0x1e, 0x04, 0xa8, 0x58, 0xc6, 0x15, 0xee, 0x96, 0x95, 0xf6, 0x4a, 0xb2, 0xdb, 0x99, 0x80, 0x6d, 0xa4, 0x82, 0xd2, 0xb4, 0x60, 0x29, 0x3c, 0x46, 0xdc, 0x7b, 0x71, 0x7a, 0x59, 0x76, 0xa3, 0xc7, 0xe3, 0x6d, 0x8d, 0x47, 0xa8, 0x4a, 0x34, 0xd6, 0x3c, 0xdf, 0xca, 0x2c, 0x1e, 0x38, 0x45, 0x25, 0x73, 0xed, 0x44, 0xc3, 0xa0, 0x40, 0x40, 0x5e, 0xcf, 0x3f, 0xbf, 0x36, 0x83, 0x41, 0xc4, 0xa1, 0xfc, 0x90, 0x83, 0xa8, 0xf5, 0x52, 0x93, 0x67, 0xb9, 0x9c, 0xb8, 0x9f, 0xc5, 0xa0, 0x8b, 0x8f, 0x34, 0x75, 0xa0, 0xd5, 0x5e, 0x3e, 0x42, 0xcc, 0xcb, 0xeb, 0x20, 0xd0, 0x4a, 0x19, 0x97, 0xee, 0xda, 0x4e, 0x3c, 0xc9, 0xe9, 0x92, 0xd2, 0x37, 0xec, 0x7d, 0x32, 0xfe, 0x25, 0x84, 0x5a, 0xb0, 0x24, 0xd5, 0x88, 0x28, 0x05, 0xed, 0x52, 0xf1, 0x0e, 0xd7, 0xd2, 0x5d, 0x62, 0xd0, 0xaf } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.14", - /* Message */ - 30, - { 0x4e, 0xdf, 0x4a, 0xd3, 0x44, 0x0f, 0x17, 0xb1, 0x0d, 0x26, 0xaf, 0xcd, 0xf4, 0xe4, 0x44, 0xd2, 0xaa, 0x61, 0xa1, 0x97, 0x55, 0xa6, 0x21, 0x07, 0x98, 0x3f, 0x01, 0x22, 0xfb, 0x2a } -, - /* Seed */ - 96, - { 0xe0, 0x20, 0x09, 0x39, 0x39, 0xb4, 0x18, 0x9e, 0x93, 0x4c, 0xb6, 0x2d, 0x27, 0xca, 0x5e, 0x97, 0x19, 0x65, 0x2c, 0x13, 0x7f, 0xc4, 0x9e, 0x72, 0x1c, 0x4a, 0xb9, 0xe9, 0xf3, 0x98, 0xb0, 0xa6, 0x12, 0xde, 0x8a, 0x8a, 0x89, 0x99, 0xaf, 0x0d, 0xbc, 0x1c, 0xea, 0x0b, 0x61, 0x63, 0xda, 0x42, 0x61, 0x23, 0x28, 0x14, 0xed, 0x92, 0xeb, 0x21, 0x60, 0xcf, 0x4b, 0x26, 0xd0, 0x55, 0x1b, 0x1b, 0xdd, 0x91, 0x9d, 0x49, 0x47, 0x93, 0x78, 0x6e, 0x1b, 0x86, 0xf7, 0x9d, 0x64, 0x16, 0x61, 0x2a, 0x28, 0x22, 0x61, 0x36, 0x3d, 0x6c, 0x9b, 0x7a, 0x0d, 0x92, 0xad, 0x17, 0x58, 0xea, 0xad, 0x51 } -, - /* Encryption */ - 129, - { 0x00, 0x8c, 0xf9, 0xb3, 0xf3, 0xe7, 0x60, 0x90, 0xd1, 0x01, 0x17, 0x4e, 0xcd, 0x97, 0xd1, 0x0b, 0xff, 0x6d, 0xe4, 0xd4, 0x64, 0x40, 0x00, 0x3f, 0xc0, 0xd4, 0x28, 0xf1, 0x9b, 0x85, 0x58, 0xf3, 0x13, 0x74, 0xa5, 0xfa, 0x28, 0x3d, 0x03, 0xd4, 0xdd, 0x43, 0xf9, 0x3a, 0x4d, 0x9f, 0x14, 0xca, 0x00, 0x68, 0xdc, 0x2c, 0xf3, 0xe2, 0x54, 0x37, 0xb0, 0x5a, 0xb1, 0xd4, 0x06, 0x21, 0xee, 0xbd, 0x84, 0x16, 0xf5, 0x82, 0x8a, 0xe7, 0xc6, 0xcf, 0xd2, 0x97, 0xb4, 0x51, 0x8f, 0x79, 0x94, 0x2b, 0x91, 0x43, 0x23, 0x28, 0x4e, 0x29, 0x76, 0xa5, 0x4d, 0x3c, 0xd9, 0x11, 0x63, 0x3a, 0x30, 0x7e, 0xda, 0xf1, 0xed, 0xb6, 0x74, 0x98, 0x46, 0x6b, 0x3e, 0x98, 0x91, 0x6f, 0x99, 0x04, 0xf4, 0xa0, 0xea, 0x9b, 0x87, 0xa9, 0x83, 0x44, 0xf0, 0x73, 0x83, 0x3e, 0xdf, 0x9b, 0x2b, 0x53, 0x94, 0xcf, 0xd7 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.15", - /* Message */ - 22, - { 0x8a, 0x6d, 0x53, 0xb0, 0xad, 0xa1, 0x85, 0x4e, 0x23, 0x13, 0x69, 0x1a, 0xab, 0x23, 0x06, 0x3d, 0xe1, 0x31, 0xbc, 0x36, 0xc7, 0x64 } -, - /* Seed */ - 104, - { 0x26, 0x85, 0x45, 0x8a, 0xeb, 0xfb, 0xd6, 0x07, 0x4e, 0xbe, 0xb0, 0xfc, 0x0c, 0xc4, 0x92, 0x1c, 0x27, 0x3e, 0x8c, 0x0a, 0x88, 0x15, 0x51, 0x50, 0x2e, 0x4c, 0x29, 0x9f, 0x33, 0x4d, 0xd5, 0x67, 0xf5, 0x16, 0x75, 0xb0, 0xff, 0x30, 0xf2, 0xc4, 0x82, 0x63, 0x20, 0x03, 0x64, 0x99, 0x66, 0x99, 0xf9, 0xb1, 0x72, 0xaf, 0xfe, 0xc0, 0xe7, 0x9e, 0x5c, 0x52, 0x3d, 0x1e, 0x77, 0x9e, 0xc0, 0x6d, 0xec, 0xd4, 0x76, 0xa5, 0x74, 0x30, 0x78, 0x1e, 0x2d, 0xc8, 0x1f, 0x25, 0xd6, 0x0d, 0x3a, 0x73, 0x97, 0x65, 0x79, 0xa2, 0xf0, 0x1f, 0x07, 0x58, 0x4c, 0xf8, 0xe5, 0xfb, 0x3e, 0xbd, 0x8d, 0x5a, 0x93, 0x2d, 0x57, 0xaa, 0x8a, 0x18, 0x0a, 0xaa } -, - /* Encryption */ - 129, - { 0x01, 0x3a, 0x3d, 0x32, 0xee, 0xc7, 0x35, 0xeb, 0xda, 0x13, 0xf8, 0xbe, 0x76, 0x02, 0xa0, 0x47, 0x5c, 0xf3, 0xcf, 0x28, 0x5b, 0x42, 0x86, 0xad, 0x93, 0xd6, 0x12, 0xc3, 0xad, 0x91, 0x72, 0x48, 0x80, 0x9d, 0x1c, 0x4c, 0x18, 0x0b, 0x36, 0x70, 0x15, 0xcc, 0x66, 0xc4, 0xd8, 0xe7, 0x86, 0x73, 0x84, 0x16, 0x8c, 0xf4, 0xcb, 0x71, 0x9b, 0xd5, 0x93, 0x35, 0x53, 0x55, 0xcd, 0xd7, 0xd7, 0x53, 0x0c, 0x80, 0xc8, 0x67, 0x74, 0x5f, 0x96, 0x61, 0xc6, 0xc3, 0x3b, 0xcb, 0x97, 0xf2, 0xcf, 0x75, 0xa4, 0xc2, 0x7c, 0x3c, 0xbb, 0xdb, 0xbe, 0x7e, 0xaf, 0x4f, 0x82, 0x34, 0xf2, 0x12, 0xe3, 0x05, 0x82, 0x56, 0xd4, 0x43, 0x9a, 0x9f, 0x97, 0x81, 0xdf, 0x48, 0xef, 0xdb, 0x02, 0x35, 0x68, 0xf9, 0x4a, 0xe4, 0x59, 0x46, 0x54, 0xa0, 0xf9, 0xba, 0xf6, 0xea, 0x30, 0xb7, 0xd8, 0xd9, 0x48, 0x0a, 0xd3 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.16", - /* Message */ - 17, - { 0x20, 0xf0, 0x20, 0x44, 0xe6, 0x3a, 0xc9, 0x2e, 0xb9, 0xfa, 0xf1, 0xa0, 0xce, 0x35, 0xba, 0x72, 0x09 } -, - /* Seed */ - 109, - { 0x2d, 0xe1, 0xfc, 0xc1, 0x17, 0xf8, 0x21, 0xf1, 0xde, 0xa7, 0x94, 0xb5, 0xee, 0xb3, 0x13, 0xf4, 0x29, 0xe0, 0x0b, 0x97, 0x6b, 0x53, 0x41, 0x9d, 0x3d, 0x03, 0xec, 0xaa, 0x1b, 0x50, 0x76, 0x88, 0x77, 0xe8, 0xb7, 0xfb, 0xd6, 0xc3, 0x63, 0x04, 0x7e, 0x15, 0xc2, 0x55, 0x79, 0x3b, 0x3c, 0xbe, 0x0f, 0x58, 0x84, 0xf0, 0xa5, 0x11, 0x25, 0x4d, 0x31, 0xbf, 0xb2, 0x37, 0x41, 0x02, 0x3c, 0x1f, 0x88, 0x1f, 0xe0, 0x16, 0xa1, 0x2e, 0xef, 0x1b, 0x8a, 0xf2, 0x2b, 0x93, 0x68, 0x20, 0x7e, 0x7b, 0x16, 0x39, 0xf7, 0x27, 0x1d, 0xeb, 0xe3, 0xc8, 0xdf, 0x52, 0x93, 0xee, 0xc3, 0xa0, 0x32, 0xf1, 0xce, 0x55, 0x9c, 0x0a, 0x04, 0x77, 0x1b, 0xbf, 0x88, 0x98, 0x94, 0x7c, 0xa4 } -, - /* Encryption */ - 129, - { 0x01, 0x70, 0x06, 0xe8, 0x6f, 0x6c, 0x58, 0x58, 0xfe, 0x5a, 0xde, 0x0d, 0xcb, 0xfa, 0x9c, 0xcd, 0x11, 0xc0, 0x2d, 0x4e, 0x7d, 0x0d, 0xe6, 0xc1, 0x58, 0xad, 0xf9, 0xee, 0xf1, 0x01, 0x07, 0xe7, 0xa4, 0xc3, 0x6b, 0xd3, 0xd9, 0x29, 0xea, 0x6a, 0x47, 0x6e, 0xcf, 0xa0, 0xb6, 0xec, 0xd0, 0x51, 0x49, 0xb5, 0x12, 0x15, 0x95, 0x48, 0x93, 0xa1, 0xab, 0x26, 0x69, 0xc0, 0x42, 0xda, 0x83, 0xe8, 0xc8, 0x18, 0xb0, 0x0a, 0xe7, 0x34, 0xde, 0x5f, 0x9e, 0x0b, 0x97, 0xba, 0x1f, 0xe3, 0xe9, 0xc4, 0x6a, 0xe9, 0x81, 0x6b, 0x63, 0xb1, 0x5c, 0x2d, 0xcc, 0x61, 0xcb, 0x3b, 0x8b, 0x2c, 0x23, 0xdd, 0xb9, 0x9f, 0xcd, 0x54, 0xe9, 0x55, 0x60, 0x91, 0x8b, 0x9a, 0x0f, 0xa3, 0xc4, 0xb6, 0x27, 0x3d, 0x1b, 0x28, 0xa2, 0x13, 0xe1, 0x20, 0xb4, 0xf2, 0x42, 0x86, 0x96, 0x5e, 0xbe, 0xe9, 0x4f, 0xf8, 0x96 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.17", - /* Message */ - 3, - { 0xd3, 0x88, 0x3b } -, - /* Seed */ - 123, - { 0x5c, 0xa3, 0xbb, 0xf9, 0x92, 0xd7, 0xae, 0x35, 0x94, 0xc6, 0x05, 0xc3, 0x9c, 0x3e, 0x97, 0x90, 0x25, 0xcc, 0xb0, 0xa3, 0x5c, 0x6e, 0xf0, 0xfa, 0x57, 0x4a, 0x98, 0xbe, 0x05, 0xef, 0x7c, 0x32, 0x8a, 0x19, 0xa2, 0x77, 0x5b, 0xa0, 0x6f, 0x2d, 0xd1, 0xe0, 0xff, 0x6f, 0x0f, 0x1f, 0x6a, 0x3b, 0x20, 0xfb, 0xda, 0x21, 0x62, 0xd0, 0x92, 0x4f, 0xf5, 0x5b, 0x70, 0xeb, 0xfe, 0x2b, 0x16, 0xd4, 0xff, 0x6a, 0xef, 0x8d, 0x47, 0xeb, 0xe5, 0x96, 0x38, 0xe5, 0x81, 0x0f, 0xfd, 0xb5, 0x8d, 0xb0, 0x5f, 0x4d, 0x9b, 0x4a, 0x3a, 0x42, 0x3f, 0x96, 0x7f, 0xe5, 0x79, 0xf8, 0x73, 0x78, 0x36, 0x9d, 0x5c, 0x5c, 0x07, 0xe5, 0xe3, 0xcb, 0x5d, 0xdd, 0xf3, 0x89, 0x62, 0x11, 0x80, 0x27, 0x0a, 0x21, 0xe0, 0x10, 0x78, 0xc8, 0x9a, 0xfb, 0xab, 0x18, 0x9e, 0x87, 0xf7 } -, - /* Encryption */ - 129, - { 0x01, 0x6f, 0x55, 0x05, 0xf7, 0x4f, 0xf1, 0x10, 0x4d, 0xa1, 0xf8, 0xa5, 0x2e, 0x50, 0xbf, 0xe2, 0x9c, 0x99, 0x87, 0x10, 0xc5, 0x7d, 0xe4, 0x40, 0x98, 0xa9, 0x57, 0x9e, 0x7a, 0x33, 0x13, 0xb6, 0x29, 0x60, 0x31, 0x02, 0xf0, 0x8d, 0x2d, 0x91, 0x1f, 0x91, 0x7a, 0x9c, 0x96, 0x62, 0x60, 0x8c, 0x97, 0xa1, 0xea, 0x37, 0x17, 0x34, 0xf6, 0x7c, 0xbf, 0x70, 0x03, 0xd9, 0x3c, 0x4c, 0x31, 0x4c, 0x3a, 0x0e, 0x77, 0xf3, 0x65, 0x8f, 0xa4, 0xd0, 0x72, 0x25, 0x62, 0xc4, 0xe1, 0x3e, 0x85, 0xa7, 0xc8, 0xd0, 0xd9, 0xd4, 0xfb, 0xf7, 0x12, 0x58, 0x84, 0xba, 0x62, 0xad, 0x28, 0x59, 0xb4, 0xd9, 0x61, 0x36, 0xf7, 0xa2, 0x45, 0x54, 0x69, 0xce, 0xb6, 0x0b, 0x63, 0xba, 0x84, 0x74, 0xe6, 0x16, 0x0c, 0x83, 0x17, 0x92, 0x1a, 0x07, 0xb4, 0xb6, 0x43, 0x6f, 0x37, 0x6c, 0x5f, 0x98, 0x25, 0x7b, 0x17 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.18", - /* Message */ - 11, - { 0x06, 0xa2, 0xae, 0x82, 0xa4, 0x85, 0x32, 0x07, 0xc9, 0xf9, 0x75 } -, - /* Seed */ - 115, - { 0xe2, 0xc3, 0x36, 0x33, 0xd5, 0x47, 0x54, 0xad, 0xdd, 0x24, 0xc8, 0x5c, 0x32, 0xd2, 0x8a, 0xd8, 0x70, 0xf1, 0x60, 0x3d, 0x44, 0x44, 0x60, 0xa0, 0x3a, 0xac, 0xad, 0x7d, 0xcb, 0x80, 0x96, 0x01, 0x56, 0xbb, 0xb2, 0x59, 0xca, 0xd3, 0x46, 0xbe, 0x90, 0xc0, 0xd4, 0xf3, 0xfb, 0x18, 0xac, 0x6e, 0x9d, 0x5a, 0x9a, 0xe2, 0xa5, 0xab, 0x98, 0xa1, 0xf8, 0x4b, 0x8e, 0x70, 0xc7, 0x1d, 0x0c, 0xcc, 0x0a, 0x1a, 0x2a, 0xa3, 0x99, 0x70, 0xd9, 0xc8, 0x3b, 0x4b, 0x0c, 0x25, 0xae, 0xa4, 0x3a, 0x5a, 0x5d, 0xea, 0xdf, 0x9d, 0xc6, 0x11, 0xb9, 0x6d, 0x11, 0x33, 0x4e, 0xf9, 0x43, 0x09, 0x03, 0x89, 0xa8, 0xd3, 0xc6, 0x6c, 0xf3, 0x18, 0x77, 0xaa, 0x2c, 0xdf, 0xf1, 0x11, 0x99, 0x43, 0x27, 0x8a, 0xdd, 0xff, 0x5e } -, - /* Encryption */ - 129, - { 0x01, 0x22, 0x41, 0x0e, 0x76, 0x5b, 0x2c, 0x9e, 0x90, 0xbd, 0xac, 0xbc, 0xff, 0x1b, 0xca, 0x8a, 0xe6, 0x4b, 0xe9, 0x9c, 0xf0, 0x13, 0x29, 0x74, 0x85, 0x72, 0x17, 0x68, 0x37, 0x0c, 0x36, 0xf8, 0xc0, 0xd9, 0xdb, 0x8d, 0x79, 0x37, 0x62, 0x54, 0xb9, 0xc6, 0x91, 0x52, 0x72, 0x0e, 0x05, 0xca, 0xef, 0xd4, 0xce, 0x7e, 0xae, 0x08, 0xb3, 0xdf, 0xe3, 0xea, 0xa9, 0x1c, 0x46, 0x02, 0xef, 0xf3, 0x8e, 0x4d, 0x81, 0xbc, 0xd3, 0x78, 0x7a, 0x14, 0xd6, 0x22, 0xdb, 0xb7, 0x9c, 0xe8, 0x64, 0x4c, 0x4f, 0xd1, 0xd2, 0xe4, 0x1f, 0x7c, 0x1c, 0x97, 0x27, 0x96, 0x11, 0x74, 0x0f, 0xc5, 0x00, 0x00, 0x31, 0x78, 0xb3, 0x7b, 0xbd, 0x81, 0xc5, 0xa5, 0x82, 0x9b, 0x5c, 0x14, 0xbf, 0x45, 0x9c, 0x42, 0x38, 0xb0, 0x3b, 0xee, 0xf7, 0x3e, 0x49, 0x8f, 0x86, 0x5f, 0x6c, 0xa7, 0x9a, 0x9e, 0xd6, 0x0f, 0x65 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.19", - /* Message */ - 6, - { 0xad, 0x8b, 0x11, 0xa9, 0x27, 0xde } -, - /* Seed */ - 120, - { 0x5e, 0xca, 0xcf, 0xf6, 0x3a, 0x79, 0x38, 0xe9, 0x98, 0x06, 0x8a, 0x2f, 0x4b, 0xa6, 0xbc, 0xc1, 0x02, 0x0e, 0x1f, 0x28, 0xc7, 0x34, 0xe4, 0x34, 0xe8, 0x86, 0x3c, 0x48, 0xe6, 0xdf, 0xfa, 0xe2, 0x8d, 0x18, 0x52, 0x72, 0x7f, 0xfa, 0x7f, 0x2e, 0xfa, 0x3d, 0xe7, 0x01, 0x3b, 0x81, 0x2a, 0x02, 0xb2, 0x17, 0x1a, 0x0f, 0x94, 0x0b, 0x36, 0xd9, 0x28, 0xdb, 0xdb, 0x96, 0x0a, 0x6b, 0x22, 0x03, 0x0c, 0x89, 0x37, 0x89, 0xcb, 0xfd, 0xea, 0x97, 0x35, 0xe9, 0xad, 0x10, 0x94, 0xa6, 0x84, 0x61, 0xc2, 0xeb, 0x6f, 0x71, 0x8b, 0xe4, 0x74, 0xd9, 0x3a, 0x51, 0x93, 0x0e, 0x3c, 0xda, 0x02, 0xc2, 0x1f, 0x63, 0x63, 0x91, 0x4e, 0x7e, 0xda, 0x54, 0x84, 0x03, 0x7a, 0x76, 0xad, 0xc5, 0x33, 0x12, 0xeb, 0x9d, 0xbb, 0xe4, 0x5e, 0x23, 0xa1, 0x4b } -, - /* Encryption */ - 129, - { 0x01, 0x1f, 0xa4, 0x3f, 0x5f, 0x4f, 0xbb, 0x98, 0x30, 0x11, 0x81, 0x4d, 0x4a, 0xf5, 0x45, 0x52, 0x1d, 0xf0, 0xb5, 0x9e, 0x9b, 0x6f, 0xfd, 0x71, 0x33, 0x3b, 0x8f, 0x9b, 0xba, 0xaa, 0x0f, 0xcd, 0xc1, 0x42, 0x1c, 0xe4, 0xbf, 0x31, 0xbf, 0x99, 0x59, 0xfd, 0xc6, 0xb0, 0x9b, 0x4f, 0x42, 0x51, 0xdd, 0xee, 0xe8, 0x21, 0x0f, 0xc3, 0xa5, 0x2f, 0xe7, 0xc7, 0x1a, 0x87, 0x6e, 0x6d, 0xde, 0x1d, 0xfb, 0x59, 0xa4, 0xda, 0xb2, 0x7d, 0x34, 0xfd, 0xce, 0x5b, 0xbf, 0xc6, 0xed, 0x62, 0x3e, 0x89, 0x96, 0x7f, 0xb6, 0xfe, 0x73, 0x16, 0x20, 0x15, 0x28, 0x2c, 0x5f, 0x45, 0x01, 0x38, 0xf2, 0x50, 0x4a, 0xb6, 0x1c, 0x1f, 0x12, 0xd2, 0x64, 0x9d, 0x81, 0x5d, 0x6e, 0x81, 0x38, 0x43, 0x8f, 0x8a, 0x80, 0x46, 0xc4, 0xe8, 0x40, 0xcb, 0x71, 0x85, 0x98, 0xe1, 0xe4, 0xa9, 0xfc, 0x25, 0xa9, 0x45, 0x64 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 7.20", - /* Message */ - 44, - { 0xbe, 0xe2, 0x94, 0x36, 0xc2, 0xa0, 0xde, 0x16, 0xf6, 0x60, 0x42, 0x91, 0x70, 0x07, 0xfb, 0x51, 0x30, 0xf3, 0xc1, 0xaa, 0x7d, 0xf2, 0xc7, 0xc3, 0xbd, 0x99, 0xfb, 0xc1, 0xb4, 0x13, 0xaf, 0x4f, 0x96, 0xa6, 0x5b, 0x0e, 0x54, 0x3e, 0xc6, 0xa5, 0x0b, 0xe8, 0x3a, 0x9f } -, - /* Seed */ - 82, - { 0x23, 0x91, 0xa6, 0x84, 0x25, 0xdd, 0x8f, 0x0b, 0x83, 0xc9, 0xb3, 0x61, 0x24, 0x67, 0xa7, 0x79, 0xcf, 0x92, 0xf5, 0xff, 0x96, 0x11, 0xc0, 0x14, 0x93, 0xbc, 0xbe, 0xf8, 0x65, 0xe1, 0x5b, 0xba, 0x5e, 0x8f, 0xcf, 0x74, 0xbe, 0xb9, 0xea, 0x25, 0x73, 0xa9, 0xfc, 0xe5, 0x41, 0x64, 0xd0, 0x6b, 0xaa, 0x8b, 0x6d, 0xf3, 0x67, 0xcc, 0x4c, 0x6a, 0x11, 0x4a, 0xa0, 0x34, 0x6c, 0x45, 0x4a, 0x2a, 0x9e, 0x60, 0x53, 0x59, 0x18, 0xd3, 0x66, 0x0c, 0x66, 0x48, 0x4e, 0xd9, 0x53, 0x72, 0x7a, 0x9c, 0x9a, 0x25 } -, - /* Encryption */ - 129, - { 0x00, 0x98, 0x9d, 0xdb, 0xd2, 0x8d, 0x60, 0x95, 0xad, 0xa6, 0x88, 0x1e, 0x28, 0x34, 0x1c, 0xe7, 0xa0, 0xa1, 0xca, 0x6b, 0xf7, 0xf3, 0x1f, 0x77, 0x2f, 0x91, 0x04, 0x93, 0xaf, 0xdb, 0xa2, 0xd6, 0x35, 0x9d, 0x50, 0xb9, 0x83, 0x3f, 0x83, 0xd0, 0xab, 0x87, 0x13, 0xab, 0xe8, 0xe2, 0x10, 0x2a, 0x27, 0xab, 0x2a, 0x60, 0x1f, 0xb7, 0x7b, 0x9a, 0x25, 0xd6, 0xa0, 0xaf, 0xf4, 0x0c, 0xfd, 0xcf, 0x9e, 0x12, 0xc4, 0x28, 0x43, 0xeb, 0xad, 0x32, 0x83, 0x24, 0xa7, 0x19, 0xf2, 0x9e, 0x8d, 0x79, 0xea, 0x9e, 0x5d, 0x0d, 0x98, 0x86, 0x95, 0x73, 0x60, 0x34, 0xdb, 0x5f, 0xea, 0x73, 0xdd, 0x36, 0x00, 0x13, 0x6f, 0x57, 0xa3, 0x98, 0xfe, 0x35, 0x2b, 0x27, 0x8c, 0x60, 0xcb, 0x74, 0xec, 0x98, 0xad, 0x57, 0xa3, 0xe1, 0xd8, 0xc4, 0x47, 0x8c, 0xa6, 0x17, 0x9f, 0x4d, 0x04, 0x26, 0xf0, 0xf4, 0x20 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 8: A 1026-bit RSA key pair", -{ - /* Modulus */ - 129, - { 0x02, 0x52, 0xe9, 0x5b, 0xb1, 0x1b, 0xa1, 0xe1, 0xc7, 0xc9, 0x5b, 0x68, 0x53, 0xf8, 0xde, 0x0b, 0xfe, 0x2b, 0x64, 0x03, 0xac, 0x1b, 0xde, 0x81, 0x9d, 0x91, 0x89, 0x07, 0x74, 0x7b, 0x01, 0x99, 0xfa, 0xdb, 0x80, 0x59, 0xc2, 0x5a, 0xaf, 0x1a, 0xc5, 0x65, 0xa7, 0x49, 0x29, 0xd0, 0x15, 0xa2, 0x01, 0xf8, 0x97, 0xa9, 0xba, 0xfe, 0x75, 0x41, 0x68, 0x95, 0x5b, 0x35, 0x5b, 0xb0, 0x09, 0xce, 0x16, 0x14, 0x93, 0x12, 0x28, 0x3c, 0x39, 0xce, 0xe2, 0x20, 0xd0, 0xf0, 0x85, 0x8b, 0x13, 0x81, 0x2e, 0x86, 0xa7, 0xd4, 0xe5, 0x38, 0x8b, 0x7e, 0xae, 0x5a, 0xca, 0x7c, 0x88, 0x6a, 0x76, 0xd3, 0xb1, 0xe6, 0xdd, 0x67, 0x92, 0x68, 0xa8, 0x23, 0x11, 0xe2, 0x82, 0x03, 0x18, 0xcb, 0x8f, 0x0f, 0x7e, 0x85, 0xf0, 0xe6, 0x69, 0x2e, 0xb0, 0xde, 0xdf, 0x30, 0x88, 0x1c, 0xaf, 0x73, 0x15, 0xd2, 0x7d } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 129, - { 0x01, 0x04, 0xc8, 0x5f, 0xd5, 0xd8, 0xd7, 0x93, 0x2a, 0x29, 0x85, 0xc4, 0xcb, 0x7e, 0x9e, 0x13, 0xa2, 0xc4, 0xf1, 0x90, 0x3c, 0x8b, 0x70, 0xf3, 0xdf, 0x97, 0x12, 0xfa, 0xee, 0x20, 0x17, 0xb9, 0x20, 0x82, 0xc5, 0x16, 0x53, 0xc0, 0xbd, 0xde, 0x9d, 0xe6, 0x6c, 0x39, 0x01, 0xb7, 0xc2, 0x2b, 0xe4, 0xf2, 0x4c, 0xc5, 0x6d, 0xff, 0xaa, 0x75, 0xd4, 0x3b, 0x18, 0xa2, 0xe0, 0xc0, 0xdf, 0xe3, 0x72, 0x6b, 0x19, 0x8c, 0xaa, 0x0c, 0x96, 0x65, 0x26, 0x3a, 0x93, 0x79, 0x6a, 0x27, 0xd3, 0x29, 0x84, 0x46, 0x5f, 0x4b, 0x4a, 0xff, 0xca, 0x0d, 0x92, 0xf4, 0xe5, 0x1a, 0x37, 0xe4, 0x1a, 0xb1, 0x55, 0x07, 0x66, 0xd5, 0xca, 0x7e, 0x90, 0xd4, 0xde, 0x90, 0x9b, 0xbd, 0x79, 0x4e, 0x8b, 0xc5, 0x2b, 0x74, 0x99, 0xa7, 0x3e, 0x46, 0x8a, 0xb4, 0x42, 0x13, 0xcb, 0x3a, 0x3b, 0x54, 0x52, 0xd2, 0xff } -, - /* Prime 1 */ - 65, - { 0x01, 0x93, 0x3f, 0x8f, 0x85, 0x82, 0xb8, 0xff, 0xf3, 0xe6, 0xbd, 0x30, 0x42, 0x81, 0x97, 0xf0, 0xac, 0xec, 0x63, 0xe6, 0x91, 0xf7, 0x9b, 0x91, 0xfb, 0xd4, 0xd4, 0xc4, 0x94, 0x2b, 0x8a, 0xe9, 0x13, 0xa4, 0x01, 0xf0, 0xe1, 0x7b, 0xa7, 0x66, 0xd0, 0xa8, 0xee, 0xec, 0x4c, 0xb0, 0xe3, 0xda, 0x17, 0xb6, 0xd9, 0x1f, 0x1a, 0x74, 0x24, 0x88, 0x09, 0x20, 0x1e, 0x37, 0x30, 0x15, 0x18, 0x61, 0x8f } -, - /* Prime 2 */ - 65, - { 0x01, 0x79, 0xad, 0x28, 0x3c, 0xac, 0x68, 0xaf, 0x21, 0x6a, 0x06, 0x86, 0xf4, 0x38, 0xb1, 0xe0, 0xe5, 0xc3, 0x6b, 0x95, 0x5f, 0x74, 0xe1, 0x07, 0xf3, 0x9c, 0x0d, 0xdd, 0xcc, 0x99, 0x0a, 0xd5, 0x73, 0xdc, 0x48, 0xa9, 0x73, 0x23, 0x5b, 0x6d, 0x82, 0x54, 0x36, 0x18, 0xf2, 0xe9, 0x55, 0x10, 0x5d, 0x8c, 0x4a, 0x5f, 0x49, 0x14, 0xbe, 0xe2, 0x5d, 0xe3, 0xc6, 0x93, 0x41, 0xde, 0x07, 0xed, 0x33 } -, - /* Prime exponent 1 */ - 65, - { 0x01, 0x6e, 0xf5, 0x3d, 0x6f, 0x3a, 0xd9, 0x8d, 0x9a, 0x6f, 0xd4, 0xa4, 0x71, 0x31, 0x2b, 0x8a, 0x8a, 0x62, 0x88, 0x3a, 0xcf, 0x84, 0x6b, 0x5e, 0xfa, 0xb3, 0xe0, 0x77, 0x8f, 0x7a, 0xdc, 0x6b, 0x64, 0x43, 0x30, 0xbc, 0xfb, 0x04, 0xa2, 0xff, 0x0e, 0x4d, 0x5d, 0x37, 0x4e, 0x46, 0xfe, 0xe2, 0x7e, 0x08, 0x18, 0x27, 0x94, 0xd4, 0x32, 0x56, 0x55, 0x2f, 0x94, 0x2f, 0x96, 0xa2, 0xeb, 0xd0, 0x03 } -, - /* Prime exponent 2 */ - 64, - { 0xe6, 0xc6, 0xe6, 0x25, 0x5c, 0xfc, 0x82, 0xb7, 0x1a, 0x40, 0x6e, 0xca, 0x60, 0xb2, 0x60, 0xc8, 0x45, 0x07, 0x42, 0x39, 0x18, 0x04, 0x41, 0x85, 0x9c, 0x3f, 0xe4, 0xde, 0x16, 0x4e, 0x46, 0x6c, 0x0b, 0x98, 0xe2, 0xe2, 0x16, 0x22, 0xd1, 0xe1, 0xa7, 0x6f, 0x7f, 0x03, 0x3f, 0x8c, 0xd8, 0xf9, 0x30, 0xb6, 0x69, 0x4f, 0x10, 0xbc, 0x2b, 0x3a, 0x4f, 0xea, 0x91, 0x24, 0xd8, 0x75, 0x63, 0x7d } -, - /* Coefficient */ - 64, - { 0x35, 0x42, 0x45, 0x2e, 0x83, 0x2c, 0x16, 0xac, 0xf9, 0xc3, 0xf4, 0x13, 0x49, 0x23, 0x5e, 0xdd, 0xd2, 0x75, 0xc7, 0x05, 0x3c, 0x55, 0x3b, 0xf8, 0x9e, 0x1a, 0x84, 0x57, 0x12, 0x48, 0x33, 0x3a, 0xad, 0x52, 0x0e, 0x3a, 0x34, 0x46, 0xc4, 0xc5, 0xe3, 0xfd, 0xd9, 0xba, 0xec, 0xd9, 0x29, 0x48, 0x0e, 0xb5, 0xb8, 0xfb, 0xef, 0x8e, 0x03, 0xad, 0xe9, 0xe3, 0x9a, 0x28, 0xfd, 0x8e, 0x75, 0x6c } - -} -, -{{ - "PKCS#1 v1.5 Encryption Example 8.1", - /* Message */ - 34, - { 0xf7, 0x26, 0x37, 0xae, 0xc2, 0x8d, 0x2b, 0x6e, 0xbf, 0x8f, 0x73, 0xd7, 0x48, 0x75, 0xdf, 0x01, 0xcd, 0x12, 0x24, 0x8f, 0x00, 0x20, 0x60, 0x8e, 0x61, 0xc7, 0x3d, 0x1a, 0x01, 0xf9, 0x72, 0xf7, 0x4d, 0xee } -, - /* Seed */ - 92, - { 0xcc, 0x20, 0x77, 0xa2, 0x40, 0x01, 0xf3, 0xe3, 0x86, 0x96, 0x94, 0xe4, 0xfe, 0x27, 0x72, 0xbf, 0x93, 0x8f, 0x76, 0x27, 0x66, 0x7b, 0x62, 0xd5, 0x90, 0xf9, 0xee, 0x4f, 0xcf, 0xff, 0xbb, 0xb4, 0x7a, 0xfd, 0x5f, 0xed, 0x6a, 0x18, 0x08, 0x44, 0xa9, 0x12, 0x1a, 0x32, 0xed, 0x7c, 0xbc, 0x56, 0xcd, 0x28, 0x70, 0xa2, 0xd6, 0x96, 0xb9, 0x43, 0xd6, 0xfd, 0xe9, 0x76, 0x7c, 0x1b, 0x96, 0x48, 0x61, 0x6c, 0x32, 0xed, 0x6c, 0x40, 0x0d, 0x42, 0x3d, 0xd4, 0xab, 0x72, 0x16, 0xaf, 0xad, 0xa0, 0x28, 0x40, 0x2e, 0xb2, 0xa1, 0xc3, 0xeb, 0xcc, 0x24, 0x5a, 0xfc, 0x7f } -, - /* Encryption */ - 129, - { 0x00, 0x72, 0x57, 0x5d, 0x3b, 0x11, 0xc5, 0xff, 0xd6, 0xae, 0x24, 0xf3, 0x53, 0xff, 0x74, 0x99, 0x27, 0xb4, 0xae, 0x5d, 0xf4, 0x63, 0xf7, 0x0c, 0x5f, 0x3e, 0xf5, 0x49, 0x6b, 0x0d, 0x14, 0x5e, 0xb2, 0xb8, 0xa5, 0x3c, 0x28, 0xd5, 0x3e, 0xfe, 0x8b, 0xf9, 0xf2, 0x7b, 0x2e, 0xf4, 0xce, 0xea, 0x48, 0x31, 0x05, 0x77, 0xc3, 0xd2, 0xb4, 0xb9, 0x49, 0xa1, 0x2e, 0x3d, 0xf3, 0xf5, 0x67, 0x76, 0x82, 0x88, 0x18, 0x45, 0x2d, 0x81, 0xbd, 0x45, 0xaf, 0x15, 0x8c, 0x87, 0xbb, 0x57, 0x74, 0x5b, 0x8a, 0x10, 0xfc, 0x1a, 0x92, 0xa0, 0xea, 0x55, 0xc8, 0x51, 0x39, 0xf8, 0x42, 0xf7, 0x3f, 0x1d, 0x61, 0x3b, 0x9a, 0x96, 0x4a, 0xf8, 0xed, 0x72, 0x0d, 0x0e, 0x08, 0x47, 0xf7, 0xae, 0x5b, 0x30, 0x5c, 0x05, 0xf1, 0x2c, 0xbc, 0x4c, 0x9c, 0x16, 0x84, 0xac, 0xf9, 0x02, 0x97, 0x0d, 0x82, 0x09, 0x49 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Encryption Example 8.2", - /* Message */ - 60, - { 0x2a, 0x8e, 0x3e, 0xe7, 0xea, 0xc6, 0xb2, 0x2e, 0xc6, 0x58, 0xad, 0x44, 0xd6, 0x66, 0xc8, 0xcd, 0x3f, 0x57, 0xec, 0xea, 0x29, 0x9b, 0x5c, 0xb7, 0xbf, 0x9a, 0x37, 0x3d, 0xfa, 0x66, 0x97, 0x2f, 0x13, 0xe5, 0xf3, 0xa3, 0x00, 0xe8, 0x0e, 0x6d, 0xbf, 0x74, 0x15, 0x68, 0x0d, 0x0d, 0x24, 0x90, 0x1a, 0xd6, 0xb1, 0x40, 0xb0, 0x00, 0xaa, 0xb8, 0x53, 0x51, 0xf9, 0x2f } -, - /* Seed */ - 66, - { 0xfb, 0x19, 0x20, 0x9d, 0x8a, 0x29, 0xaf, 0xaf, 0xbc, 0x05, 0x3a, 0xc1, 0xf3, 0x20, 0xba, 0x60, 0xfc, 0x1f, 0xe1, 0x04, 0xaa, 0x78, 0x39, 0xc8, 0x4c, 0x9b, 0x3e, 0xaa, 0x18, 0xa8, 0xf9, 0x43, 0xbb, 0x21, 0x9f, 0x59, 0xcc, 0x16, 0x7a, 0x38, 0x4b, 0xac, 0x7b, 0xd3, 0x65, 0x82, 0x4e, 0x10, 0x36, 0x31, 0xb9, 0x7b, 0xb9, 0xa6, 0xd1, 0x18, 0xf4, 0xf0, 0xa9, 0x51, 0xfa, 0x47, 0x8a, 0x05, 0xea, 0x09 } -, - /* Encryption */ - 129, - { 0x02, 0x1b, 0x54, 0x64, 0x65, 0x71, 0xa9, 0xa9, 0x3f, 0x0b, 0x0a, 0x03, 0x82, 0xe5, 0x40, 0xa8, 0xc3, 0x97, 0x4c, 0xb3, 0x1c, 0x87, 0xeb, 0xf1, 0x7b, 0x3b, 0xa6, 0x2a, 0x1c, 0x95, 0x21, 0xc5, 0x0d, 0x7f, 0x90, 0x70, 0x2e, 0x13, 0xae, 0x0e, 0x22, 0x26, 0x38, 0x34, 0xe7, 0x64, 0x60, 0x35, 0x15, 0x94, 0x45, 0xa0, 0x87, 0x7d, 0x9a, 0x4f, 0x5b, 0x16, 0x17, 0x7f, 0x7f, 0xe0, 0x52, 0xbb, 0xd0, 0x23, 0xd0, 0x81, 0x89, 0x4f, 0x2d, 0x97, 0xca, 0xc2, 0x45, 0x20, 0x76, 0xca, 0x11, 0x91, 0xa1, 0x71, 0xa4, 0x8f, 0xa1, 0xcb, 0xbb, 0xc3, 0xf0, 0xf6, 0xf3, 0xbc, 0x1a, 0x44, 0x78, 0x40, 0x3a, 0x5a, 0x48, 0x8f, 0xeb, 0xb3, 0xa4, 0x13, 0x80, 0x16, 0x3d, 0x94, 0x2c, 0x97, 0x7b, 0xb8, 0xec, 0xd2, 0x86, 0x6c, 0x5f, 0x5d, 0x91, 0x9e, 0xd2, 0x0c, 0x0d, 0xb3, 0xee, 0x31, 0xef, 0x2f, 0x51 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.3", - /* Message */ - 24, - { 0xd9, 0x9b, 0x4f, 0x10, 0xd9, 0xf3, 0x2e, 0x12, 0xec, 0xfa, 0xe2, 0x63, 0x0b, 0x22, 0xac, 0x02, 0x6a, 0xf9, 0x64, 0xb9, 0xc7, 0x15, 0xd2, 0x07 } -, - /* Seed */ - 102, - { 0xe0, 0xaf, 0x8b, 0x7e, 0xab, 0x36, 0xa6, 0xee, 0x31, 0x6d, 0x78, 0x13, 0x67, 0xf0, 0x9e, 0xa1, 0x1e, 0x31, 0xfd, 0xc1, 0xef, 0x2c, 0xf9, 0xc9, 0x7c, 0x37, 0x9e, 0xaa, 0xcf, 0x68, 0x72, 0xa8, 0x21, 0x3c, 0xbe, 0x4c, 0xe2, 0xe2, 0x9c, 0x77, 0x8b, 0x35, 0x95, 0x40, 0x10, 0x06, 0x3f, 0x17, 0x76, 0xab, 0x5b, 0x17, 0x2d, 0xa6, 0x24, 0xb4, 0x06, 0xa1, 0xc5, 0x8e, 0x0b, 0x57, 0x4a, 0x03, 0xb1, 0xb1, 0xb2, 0xcd, 0x7d, 0x3a, 0x9e, 0x50, 0x35, 0xa9, 0xa9, 0x73, 0x05, 0x8f, 0x04, 0x97, 0x65, 0x2d, 0x2f, 0x73, 0xb1, 0xdc, 0x8f, 0x48, 0x7c, 0x09, 0xcf, 0xe7, 0x1d, 0x8f, 0xf8, 0xf1, 0x45, 0x8c, 0x79, 0x0e, 0xe0, 0xc5 } -, - /* Encryption */ - 129, - { 0x01, 0x02, 0x3b, 0xbe, 0x85, 0x57, 0xc2, 0x63, 0x0a, 0x26, 0x22, 0x46, 0xdb, 0x7a, 0xbc, 0x54, 0x03, 0x43, 0x88, 0x70, 0x38, 0xf6, 0x4c, 0x64, 0x1f, 0xd7, 0x4e, 0xe8, 0x74, 0xae, 0x96, 0x70, 0xfb, 0x28, 0x62, 0xd4, 0x24, 0x70, 0x3d, 0xa2, 0x0b, 0xe4, 0xf4, 0x8b, 0x23, 0x9c, 0xd0, 0x60, 0x43, 0x81, 0x9d, 0x8f, 0x61, 0x51, 0x44, 0xe2, 0xb1, 0xf0, 0x0c, 0x8f, 0x88, 0x49, 0x2e, 0x62, 0xf6, 0xe0, 0x73, 0x16, 0xf8, 0x49, 0x05, 0x35, 0x3b, 0x0b, 0x18, 0x80, 0xed, 0x77, 0xda, 0x2b, 0x62, 0xd3, 0xa9, 0x3b, 0xb7, 0x0f, 0xf6, 0xa5, 0x00, 0x79, 0x38, 0xb9, 0x73, 0xb4, 0xcd, 0x5a, 0xbf, 0xee, 0x0c, 0xf1, 0x3f, 0x5d, 0x4a, 0xb2, 0x16, 0x01, 0x02, 0x68, 0x5c, 0xac, 0x80, 0x81, 0x83, 0x4f, 0x95, 0x55, 0x80, 0x6b, 0xb3, 0x22, 0xd0, 0xdc, 0x5b, 0x8a, 0x2b, 0xf1, 0x28, 0x45, 0x62 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.4", - /* Message */ - 25, - { 0xca, 0xec, 0xa8, 0xe5, 0x9b, 0x81, 0x0c, 0xf7, 0x51, 0x12, 0xf7, 0xed, 0x04, 0x7a, 0x46, 0x69, 0x2c, 0xa0, 0xb7, 0xa8, 0x6e, 0x18, 0x41, 0xd7, 0x19 } -, - /* Seed */ - 101, - { 0x76, 0x1f, 0x68, 0x64, 0xdc, 0xeb, 0xc9, 0x5a, 0x77, 0x9b, 0xc0, 0xb1, 0x6a, 0x95, 0x86, 0x6c, 0x33, 0xdc, 0x8d, 0xca, 0xce, 0x61, 0xcd, 0x7b, 0xf9, 0x01, 0x72, 0xd9, 0x9a, 0xa4, 0x57, 0xdb, 0x6d, 0x90, 0x88, 0x7d, 0x84, 0xc4, 0x73, 0x8d, 0x25, 0xcd, 0xf0, 0xe8, 0x95, 0x69, 0xae, 0x47, 0xd3, 0x07, 0x3e, 0xc4, 0x46, 0xee, 0xed, 0xd5, 0x2d, 0x57, 0x20, 0x8b, 0xdb, 0x69, 0x45, 0x57, 0x03, 0x46, 0x57, 0xa7, 0x03, 0x78, 0x49, 0x37, 0xba, 0x69, 0x4d, 0x42, 0x51, 0x21, 0x38, 0x53, 0x2b, 0x8a, 0xd1, 0xd9, 0x86, 0xfe, 0x47, 0x31, 0x8b, 0x28, 0x23, 0xde, 0x82, 0xce, 0x27, 0x6f, 0xa6, 0xf0, 0xd3, 0xc8, 0xef } -, - /* Encryption */ - 129, - { 0x01, 0x1c, 0x0c, 0x03, 0xf7, 0xb6, 0xe1, 0xc1, 0xa8, 0x41, 0x17, 0x40, 0xa6, 0xe5, 0xb4, 0x73, 0xc2, 0x8d, 0x62, 0x21, 0x17, 0x6c, 0x9d, 0x4f, 0x68, 0x02, 0x4c, 0xa5, 0x7c, 0xda, 0x27, 0x3a, 0xf5, 0x54, 0x74, 0x03, 0x60, 0x99, 0x0a, 0x1b, 0x74, 0xde, 0x34, 0xbc, 0xea, 0x10, 0x3c, 0x2d, 0x0c, 0x36, 0x57, 0x60, 0x02, 0x08, 0x0b, 0x30, 0xbd, 0x28, 0xf0, 0x76, 0xfb, 0x75, 0xfc, 0x9b, 0xeb, 0x9e, 0x05, 0xd1, 0x98, 0x9a, 0x31, 0x1d, 0x12, 0xc1, 0xf2, 0x8f, 0xd6, 0x93, 0x92, 0xad, 0x4b, 0xe5, 0x2c, 0xe3, 0x89, 0xde, 0xc1, 0x1e, 0xba, 0x94, 0x6b, 0xe0, 0x59, 0x91, 0xda, 0x7f, 0xd8, 0x87, 0xa8, 0xd8, 0x76, 0x8d, 0xe7, 0x36, 0xb9, 0x05, 0xbf, 0x4b, 0xdb, 0xe8, 0x8b, 0x85, 0xdf, 0xc3, 0xb2, 0x5a, 0xea, 0x30, 0xfe, 0x90, 0xdf, 0x1d, 0x22, 0xd8, 0xa8, 0xd6, 0x15, 0x65, 0x1c } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.5", - /* Message */ - 39, - { 0x10, 0x12, 0x12, 0x85, 0x6e, 0x60, 0xcd, 0x27, 0x2f, 0xb1, 0x69, 0xcf, 0x62, 0xcf, 0x47, 0xf1, 0xbc, 0x50, 0xef, 0x9f, 0x1f, 0xcf, 0xd2, 0x14, 0x81, 0x6c, 0x80, 0x7f, 0x18, 0x4a, 0x90, 0x3f, 0x16, 0xf0, 0xe8, 0x09, 0xac, 0xf5, 0xe0 } -, - /* Seed */ - 87, - { 0x60, 0x43, 0xc8, 0xdf, 0x6a, 0x7f, 0x4a, 0xb8, 0x3e, 0x31, 0x97, 0xe8, 0xcd, 0x02, 0x25, 0xdc, 0x38, 0x66, 0xb5, 0xd8, 0xe6, 0x99, 0x3c, 0x2c, 0xc5, 0xb8, 0x76, 0x35, 0x1e, 0xe3, 0x3c, 0x71, 0xc1, 0xa4, 0xcc, 0xdc, 0xe4, 0x5f, 0x3e, 0x9d, 0xc7, 0xb7, 0xe5, 0x1b, 0x52, 0xee, 0xbe, 0x0e, 0x27, 0x0e, 0x71, 0x62, 0x07, 0xca, 0x14, 0x03, 0xe1, 0x3e, 0x72, 0x3c, 0xe7, 0x3f, 0x10, 0x45, 0x5e, 0xdb, 0xde, 0x85, 0xb0, 0x82, 0x90, 0x52, 0xed, 0xaf, 0xe5, 0x6e, 0x9a, 0x22, 0x02, 0x4d, 0x40, 0x68, 0x37, 0x1d, 0x36, 0xc9, 0x1f } -, - /* Encryption */ - 129, - { 0x00, 0x05, 0xc5, 0xcf, 0xf8, 0x9b, 0x93, 0x3d, 0x8b, 0x65, 0x23, 0xb3, 0x59, 0x06, 0xbb, 0x3a, 0x71, 0x1a, 0x0f, 0x7f, 0x50, 0x3f, 0x92, 0x14, 0x74, 0x66, 0x59, 0x85, 0x03, 0x91, 0x27, 0x30, 0x3b, 0x00, 0x11, 0xe7, 0xa4, 0x2b, 0x41, 0xc3, 0x3b, 0xd2, 0x0d, 0xb3, 0x1b, 0x15, 0x60, 0xc9, 0xb5, 0x22, 0x20, 0x89, 0xcd, 0xcf, 0x53, 0xb8, 0x2c, 0x95, 0xf8, 0xc1, 0xad, 0xcd, 0x8b, 0x78, 0x3f, 0xd4, 0xb4, 0x8a, 0x45, 0x40, 0x20, 0x66, 0x8e, 0x0b, 0x62, 0x52, 0x0e, 0x52, 0x58, 0x52, 0x09, 0xdb, 0x52, 0x9f, 0x38, 0x70, 0x86, 0x49, 0xd8, 0xe0, 0x64, 0x89, 0x0b, 0x22, 0x8f, 0xb3, 0xc1, 0x98, 0x1b, 0x2a, 0xef, 0x3a, 0x54, 0x65, 0xce, 0xb1, 0x30, 0x21, 0xeb, 0xe0, 0x8d, 0x02, 0xe3, 0x3a, 0xa2, 0xdc, 0x3c, 0x39, 0x28, 0x4e, 0xf7, 0xa8, 0x58, 0xdc, 0xce, 0xb2, 0x8f, 0xfa, 0x28 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.6", - /* Message */ - 17, - { 0x6f, 0x03, 0xb5, 0x72, 0x52, 0x30, 0xde, 0x7f, 0x99, 0x63, 0x69, 0x8e, 0xdb, 0x79, 0x75, 0xec, 0xe8 } -, - /* Seed */ - 109, - { 0xa3, 0x0e, 0xe5, 0xae, 0xab, 0x59, 0x31, 0x03, 0x3e, 0xfb, 0x70, 0xaf, 0xbc, 0x2d, 0x3d, 0x11, 0xa6, 0x33, 0x84, 0xcb, 0x8c, 0xb3, 0x3a, 0x8f, 0xca, 0xe6, 0x14, 0x66, 0x84, 0xe6, 0x3f, 0x0c, 0xc3, 0x2e, 0x89, 0xa7, 0xe4, 0xea, 0x43, 0x32, 0x7b, 0xf0, 0x35, 0x66, 0x95, 0x43, 0x19, 0x28, 0x86, 0xde, 0xc3, 0xfb, 0x4e, 0x2d, 0x08, 0x11, 0xef, 0xa9, 0xae, 0xc5, 0x10, 0x9e, 0x31, 0xb6, 0xa0, 0x56, 0xe5, 0x3e, 0x31, 0x7f, 0x6a, 0x90, 0x4b, 0x13, 0xa7, 0x35, 0x6f, 0x5e, 0x7a, 0xe6, 0x0b, 0x97, 0x21, 0x5e, 0xd1, 0x48, 0x17, 0xd2, 0x8f, 0x74, 0xb1, 0x64, 0x0b, 0x1f, 0x2e, 0x42, 0xef, 0x0d, 0x38, 0xca, 0x35, 0xa3, 0x54, 0xa0, 0xaf, 0xef, 0xa8, 0x03, 0xa4 } -, - /* Encryption */ - 129, - { 0x00, 0x10, 0xbd, 0x2b, 0x35, 0x6f, 0x9e, 0xab, 0xc2, 0x2f, 0x7e, 0x68, 0xf7, 0x2f, 0x61, 0x75, 0xf9, 0xab, 0x9d, 0xed, 0xa9, 0x64, 0x23, 0xb7, 0x4b, 0x11, 0xde, 0x82, 0xc6, 0x07, 0xa1, 0x38, 0x86, 0x3e, 0x17, 0x96, 0x6c, 0x07, 0xf5, 0x6c, 0xde, 0x9e, 0xd6, 0xbc, 0x42, 0x2e, 0xd9, 0xfe, 0xaa, 0x1f, 0x65, 0x36, 0x7c, 0xcf, 0x91, 0xcd, 0x4c, 0x91, 0x58, 0xa7, 0x49, 0x57, 0x1a, 0x0e, 0x9f, 0x96, 0x07, 0xcb, 0x48, 0xcd, 0x00, 0xa4, 0x48, 0xde, 0x03, 0x64, 0x91, 0x06, 0xce, 0x0c, 0x24, 0x06, 0xaa, 0x50, 0xaa, 0x12, 0x17, 0x17, 0x8c, 0xdb, 0x06, 0x80, 0x1c, 0x70, 0xa8, 0x9a, 0x7a, 0x1a, 0x83, 0x06, 0x8e, 0x68, 0xdb, 0x95, 0xd2, 0x4c, 0xa3, 0xdb, 0x33, 0xa7, 0xe5, 0xe4, 0x3a, 0x68, 0x15, 0x22, 0x74, 0xbb, 0xbf, 0x40, 0x06, 0xd9, 0xfb, 0x69, 0xf0, 0x51, 0x4c, 0xc9, 0xe2 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.7", - /* Message */ - 9, - { 0x87, 0x99, 0x13, 0x04, 0x54, 0x61, 0xbc, 0x0e, 0xac } -, - /* Seed */ - 117, - { 0xc3, 0xc6, 0xa2, 0x4a, 0xc3, 0x40, 0xa4, 0xa3, 0xff, 0x3b, 0x2c, 0x30, 0x2b, 0x56, 0xeb, 0x83, 0x91, 0xbb, 0xd9, 0x5f, 0xaf, 0xb6, 0x64, 0x78, 0x38, 0x44, 0x38, 0xab, 0xd8, 0xb4, 0x5d, 0x13, 0x2b, 0x26, 0x99, 0x09, 0xb1, 0x87, 0x84, 0x0a, 0x68, 0x44, 0xad, 0x39, 0x9f, 0xa8, 0x13, 0x72, 0x05, 0xe0, 0x2c, 0xca, 0xe7, 0x77, 0x5c, 0xe6, 0x66, 0x21, 0x20, 0xe1, 0x54, 0xb7, 0xbf, 0xd3, 0x0e, 0x8e, 0xa4, 0xd3, 0x4a, 0x7d, 0xb6, 0xa2, 0x34, 0x88, 0xa5, 0xda, 0xea, 0x38, 0x08, 0x5b, 0xed, 0x56, 0x78, 0x0c, 0xff, 0x87, 0x27, 0x12, 0x5f, 0x1a, 0xd5, 0xf9, 0xd5, 0xa0, 0xbc, 0x3b, 0xe5, 0x80, 0xbc, 0x4f, 0xa0, 0x68, 0x26, 0x7b, 0x27, 0xde, 0x38, 0x3c, 0x55, 0xc7, 0xfc, 0x17, 0x64, 0xc8, 0x6a, 0xc2, 0x1a } -, - /* Encryption */ - 129, - { 0x01, 0xd2, 0x1e, 0xce, 0x33, 0xf4, 0x40, 0xc7, 0x2a, 0x11, 0x1d, 0x62, 0xef, 0x48, 0x6c, 0x77, 0xc6, 0xc8, 0x90, 0xcd, 0x81, 0xa4, 0xeb, 0x05, 0x32, 0xad, 0x2c, 0x0e, 0xc7, 0x68, 0xdd, 0x1d, 0xe5, 0xb2, 0x11, 0x2f, 0xdf, 0x04, 0xe2, 0x87, 0xa9, 0x5b, 0x95, 0x0b, 0x1f, 0xca, 0x5a, 0xe6, 0x93, 0xcf, 0x0e, 0x8a, 0xcc, 0x93, 0x6f, 0x37, 0x47, 0x14, 0xde, 0x74, 0x95, 0x90, 0x8c, 0x29, 0x15, 0xa7, 0x07, 0x21, 0x3a, 0xc3, 0xdb, 0xda, 0xba, 0xd8, 0x1b, 0x4b, 0xa1, 0xcb, 0x50, 0xb9, 0x5f, 0x93, 0x14, 0x53, 0x1f, 0xec, 0x83, 0x3f, 0x08, 0x21, 0xc0, 0x4b, 0x57, 0x40, 0xd7, 0x3b, 0x8c, 0xf1, 0xf9, 0xe3, 0xd7, 0xab, 0xc9, 0x74, 0x49, 0x26, 0x13, 0x8f, 0xb0, 0x15, 0xc0, 0xf0, 0x56, 0xcc, 0x4b, 0xa2, 0xf3, 0x16, 0x37, 0x34, 0xdb, 0x44, 0x3e, 0xbd, 0x68, 0x85, 0x8c, 0x4f, 0xa6 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.8", - /* Message */ - 1, - { 0x5b } -, - /* Seed */ - 125, - { 0x42, 0xb9, 0x99, 0xfb, 0x16, 0x3a, 0x6f, 0xfa, 0x67, 0xa9, 0xbc, 0x4e, 0x6b, 0xa1, 0x2f, 0x81, 0xb1, 0xd5, 0x6e, 0x54, 0xbf, 0x08, 0x66, 0x39, 0x7f, 0xd3, 0x14, 0xeb, 0x0c, 0xf9, 0x7f, 0x13, 0xb7, 0x80, 0x4f, 0x76, 0x8f, 0xba, 0x54, 0x06, 0x21, 0xf0, 0x5c, 0xd3, 0x72, 0x64, 0xd8, 0xe8, 0xf5, 0x82, 0x28, 0xfb, 0x6a, 0xb3, 0x0e, 0xf5, 0x4e, 0x30, 0xfa, 0x8c, 0xfc, 0xb5, 0xa8, 0x7e, 0x14, 0x8f, 0xba, 0xbf, 0x85, 0x88, 0x6a, 0xb1, 0xf0, 0xd5, 0x25, 0x49, 0x2f, 0x56, 0xc6, 0x47, 0xf7, 0x22, 0x9b, 0x2b, 0xf3, 0x94, 0xa0, 0xce, 0xab, 0xbd, 0x37, 0xc9, 0x3e, 0x6d, 0xa8, 0x09, 0x7e, 0x82, 0x72, 0x7b, 0x3d, 0x53, 0xe8, 0xc2, 0xad, 0x1f, 0x77, 0x13, 0xe3, 0x4e, 0xd1, 0x3b, 0xa5, 0x9e, 0x0a, 0x91, 0x4d, 0xb0, 0x6f, 0xaa, 0xe4, 0x9c, 0xb3, 0x79, 0x96 } -, - /* Encryption */ - 129, - { 0x00, 0x90, 0xe5, 0x35, 0x59, 0x47, 0x90, 0x2b, 0xc3, 0xfb, 0x58, 0x0a, 0x84, 0x77, 0x09, 0x03, 0xa3, 0x95, 0x5b, 0x3d, 0xd7, 0x19, 0x1c, 0x92, 0x8f, 0x74, 0x07, 0xba, 0x74, 0x72, 0x65, 0xdc, 0x8c, 0xbc, 0x1d, 0x22, 0xf9, 0x37, 0x72, 0x72, 0xb1, 0xa8, 0xc3, 0x5c, 0x23, 0x8f, 0x04, 0xa1, 0x19, 0x37, 0xd1, 0xb4, 0x35, 0x4f, 0x64, 0x37, 0x95, 0xe9, 0x86, 0xde, 0xe2, 0xe4, 0x0a, 0x40, 0x67, 0x41, 0xb0, 0x21, 0xfd, 0xf0, 0x5c, 0x4b, 0xa1, 0x15, 0x62, 0xe8, 0x3e, 0x9f, 0x28, 0x59, 0x2e, 0x0a, 0x79, 0x14, 0xfe, 0x88, 0xb2, 0xc0, 0xfe, 0x7a, 0x5e, 0xea, 0xf5, 0x00, 0xf7, 0xe9, 0x8a, 0x5b, 0xa9, 0x54, 0xf7, 0x50, 0x77, 0xbc, 0x8f, 0x65, 0x9f, 0x21, 0xbb, 0x22, 0x03, 0x31, 0x4b, 0xe0, 0xd6, 0xd2, 0x1e, 0x63, 0x20, 0xc0, 0x5e, 0x6e, 0x2d, 0x55, 0x79, 0x79, 0x22, 0x6b, 0x80 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.9", - /* Message */ - 50, - { 0xf6, 0x35, 0x29, 0x90, 0x13, 0x24, 0xa2, 0x0f, 0xe5, 0xe9, 0x25, 0x8a, 0xda, 0x2f, 0x95, 0x37, 0xb0, 0x1f, 0x58, 0x39, 0xb4, 0x45, 0x97, 0xe3, 0x29, 0x3a, 0x12, 0x25, 0xca, 0x3a, 0x2a, 0xdf, 0x68, 0x4a, 0x72, 0xa7, 0x93, 0xc6, 0x9c, 0x56, 0xaf, 0x2d, 0x34, 0x98, 0xd3, 0x2a, 0x09, 0x2e, 0x91, 0x4b } -, - /* Seed */ - 76, - { 0x7b, 0xfa, 0x85, 0x97, 0xa4, 0x34, 0xcd, 0xad, 0xfe, 0x15, 0x63, 0x14, 0x44, 0x95, 0x13, 0xd7, 0x6c, 0x10, 0x5d, 0xf1, 0xbf, 0xc4, 0x8c, 0x4d, 0x07, 0x6a, 0xbf, 0xc0, 0x5b, 0x5d, 0xda, 0x72, 0xe0, 0xdd, 0x15, 0xf9, 0xfe, 0x82, 0xa9, 0x95, 0x5b, 0xd5, 0x6d, 0x33, 0x43, 0xe7, 0xc6, 0xf2, 0x5a, 0x60, 0x74, 0x12, 0x07, 0xe7, 0x3a, 0x2d, 0x10, 0xbb, 0x95, 0xd1, 0xd7, 0x29, 0xa2, 0x27, 0x93, 0xe6, 0xc4, 0x55, 0xe9, 0x16, 0x23, 0x5a, 0x81, 0x16, 0x94, 0xdb } -, - /* Encryption */ - 129, - { 0x00, 0xad, 0xf4, 0x78, 0x74, 0x67, 0xea, 0xc2, 0xea, 0x61, 0xfe, 0x7e, 0xf8, 0x2f, 0xd8, 0x7c, 0x2d, 0xa5, 0x89, 0x9f, 0x30, 0x30, 0x2b, 0xbc, 0x11, 0x27, 0x86, 0xd2, 0xfb, 0x11, 0xc1, 0x42, 0xf3, 0xf1, 0xd8, 0xcf, 0x37, 0x16, 0x0d, 0x2e, 0x4a, 0x43, 0x98, 0x3f, 0xfb, 0xd3, 0x93, 0xa4, 0x1b, 0x59, 0x9e, 0xe6, 0xa2, 0x7e, 0x24, 0x64, 0x25, 0x50, 0x2d, 0x46, 0x90, 0x20, 0x2f, 0xe5, 0xf8, 0xee, 0x1b, 0xc6, 0xc1, 0xd5, 0xd1, 0x6b, 0xe2, 0x3b, 0x97, 0x3a, 0xed, 0xf7, 0xf9, 0x11, 0x1b, 0xd8, 0xb1, 0x42, 0x84, 0x42, 0x65, 0xfd, 0x93, 0x57, 0x7a, 0x43, 0xc3, 0xac, 0xc6, 0xe2, 0xaf, 0x20, 0x89, 0xd9, 0xd2, 0xf3, 0xf3, 0x1a, 0x5c, 0x24, 0x7a, 0x7b, 0x68, 0x31, 0x5b, 0xae, 0x25, 0xd5, 0xae, 0x81, 0x40, 0xa5, 0x1f, 0xfc, 0x00, 0x97, 0x10, 0x7e, 0xc1, 0x62, 0x0a, 0xb3, 0xb5 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.10", - /* Message */ - 32, - { 0xc6, 0xd1, 0x4b, 0x04, 0x71, 0x45, 0xf3, 0x17, 0x78, 0x1d, 0xd7, 0x38, 0x2d, 0xc0, 0xa9, 0x72, 0x57, 0xd5, 0x54, 0xbb, 0x53, 0x53, 0x9e, 0xe9, 0xa2, 0x92, 0xe7, 0xda, 0x5c, 0xb6, 0x42, 0x6f } -, - /* Seed */ - 94, - { 0x01, 0xff, 0x38, 0xd5, 0xde, 0xd6, 0xc4, 0x3d, 0xc1, 0xdc, 0x5c, 0x27, 0xa7, 0xe4, 0x81, 0x3f, 0x44, 0x8f, 0x45, 0xc9, 0x6e, 0xdf, 0x4b, 0xd9, 0x3e, 0x96, 0xfa, 0xda, 0x9b, 0xc8, 0xec, 0x5b, 0x43, 0x4f, 0x06, 0x19, 0xa3, 0x8e, 0x04, 0x35, 0x6e, 0x06, 0x27, 0x85, 0x51, 0x40, 0x7b, 0x7f, 0x37, 0xe4, 0x2d, 0x91, 0x45, 0x62, 0x0a, 0x81, 0x98, 0x18, 0x50, 0xa4, 0x9e, 0x28, 0x51, 0x17, 0x2d, 0x23, 0x0b, 0x37, 0x82, 0x41, 0x10, 0xf8, 0xff, 0xdb, 0x84, 0x77, 0x94, 0x63, 0x9d, 0x26, 0x50, 0xcb, 0xed, 0x36, 0x26, 0x01, 0x05, 0xf1, 0xf1, 0x29, 0x6e, 0x52, 0xa7, 0xd4 } -, - /* Encryption */ - 129, - { 0x00, 0x5e, 0xdc, 0x93, 0x97, 0x89, 0xcf, 0xbf, 0xaa, 0xff, 0x28, 0x2b, 0xaf, 0x97, 0x01, 0xd6, 0x1f, 0x9d, 0xbe, 0xe6, 0xf2, 0xd2, 0x06, 0xcf, 0xab, 0x77, 0x57, 0x61, 0xf4, 0x2c, 0xb2, 0x74, 0xec, 0xba, 0x31, 0xc7, 0xcd, 0x2f, 0xe6, 0x03, 0x1a, 0xba, 0x0b, 0x84, 0xd4, 0x62, 0x7d, 0x30, 0x37, 0xe3, 0x1c, 0xe7, 0xe1, 0x56, 0x23, 0xba, 0x7c, 0xb7, 0x69, 0x02, 0x51, 0xc0, 0x63, 0x27, 0xa4, 0x31, 0x37, 0x12, 0x98, 0xdf, 0x29, 0x21, 0x95, 0xb6, 0x45, 0x11, 0x62, 0xd2, 0xda, 0x92, 0xa7, 0x07, 0x8e, 0x2d, 0x07, 0xc9, 0xf5, 0x6a, 0x07, 0x06, 0x8a, 0x9a, 0x3e, 0x17, 0x3e, 0x4a, 0xae, 0x25, 0xa5, 0xd1, 0xc6, 0x8e, 0x68, 0x20, 0x8c, 0xb5, 0x25, 0x3a, 0x0a, 0x53, 0xaa, 0x6e, 0x2e, 0xf6, 0xc2, 0x95, 0xd1, 0x51, 0x65, 0x69, 0xb8, 0x62, 0xcb, 0x92, 0xca, 0x82, 0x3c, 0xcb, 0xab } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.11", - /* Message */ - 63, - { 0xc1, 0x16, 0x53, 0xe8, 0x10, 0xb5, 0x3e, 0x65, 0x11, 0xf1, 0x33, 0x23, 0xfe, 0x52, 0x26, 0xa1, 0x70, 0xc2, 0x1f, 0x6d, 0xaa, 0x44, 0x29, 0xd9, 0x68, 0xef, 0xda, 0x05, 0x29, 0xd7, 0xb6, 0xe1, 0x0d, 0xce, 0xd8, 0x0c, 0x6b, 0x63, 0x01, 0xde, 0xd2, 0x2f, 0x52, 0x91, 0x1c, 0x0f, 0x7f, 0xf4, 0x53, 0x5b, 0xd5, 0xe2, 0x0f, 0xf5, 0x35, 0x88, 0xcd, 0x3d, 0xe6, 0x64, 0x8a, 0xc0, 0x2d } -, - /* Seed */ - 63, - { 0x85, 0xfa, 0x7c, 0x6c, 0xe9, 0x6d, 0x0a, 0x8a, 0x1f, 0xba, 0x75, 0x04, 0x71, 0x7c, 0xcb, 0xe1, 0x37, 0x13, 0x80, 0x93, 0x95, 0x6e, 0xff, 0x06, 0x3f, 0xc2, 0xef, 0xd4, 0xa4, 0x6d, 0x7d, 0xc7, 0x4e, 0x90, 0xf1, 0xda, 0x9e, 0x43, 0xdb, 0xa9, 0x12, 0x9f, 0x14, 0xec, 0x55, 0x9a, 0x4d, 0x2d, 0x6c, 0x5a, 0x19, 0xcb, 0xf3, 0xa6, 0x8c, 0x62, 0xd0, 0x98, 0x34, 0x52, 0xa9, 0xee, 0x0c } -, - /* Encryption */ - 129, - { 0x01, 0xb0, 0x8d, 0x49, 0x83, 0x13, 0xa7, 0xd7, 0x4a, 0x05, 0x53, 0x14, 0xeb, 0x43, 0x15, 0xba, 0x02, 0x87, 0x60, 0xda, 0xd4, 0x11, 0x14, 0xd5, 0x94, 0x2d, 0x63, 0xbf, 0x8d, 0x27, 0xbe, 0x3f, 0x49, 0xcc, 0xd9, 0x4a, 0xcf, 0x9d, 0x3a, 0xa2, 0x2d, 0x09, 0xb9, 0x9b, 0xf9, 0x74, 0x09, 0xbc, 0xf3, 0x32, 0x13, 0xc0, 0x99, 0x67, 0x07, 0x86, 0x82, 0x03, 0xa9, 0xab, 0x27, 0x70, 0x8d, 0x3f, 0xff, 0x69, 0xb8, 0x9d, 0x02, 0xe3, 0x6e, 0x01, 0x21, 0xa1, 0x19, 0xb8, 0xd4, 0xd9, 0xbf, 0xd4, 0xfe, 0x8b, 0x16, 0x8f, 0xd7, 0xc1, 0x2a, 0x24, 0x3f, 0x7a, 0x00, 0x0b, 0x39, 0xbf, 0x8d, 0x56, 0x48, 0x17, 0x24, 0x20, 0x80, 0x23, 0xbb, 0x60, 0x7b, 0x30, 0x50, 0x5d, 0xd1, 0x74, 0x2f, 0x87, 0x9f, 0x16, 0xc1, 0x0c, 0xe4, 0x90, 0xd3, 0x4a, 0x68, 0x0d, 0x27, 0xac, 0x39, 0x60, 0x7d, 0xa2, 0x4e } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.12", - /* Message */ - 50, - { 0x09, 0x5b, 0x77, 0xc9, 0x4d, 0xc1, 0xb1, 0x87, 0x88, 0xe4, 0x00, 0xe6, 0x91, 0x6a, 0x4b, 0x4c, 0xfd, 0x73, 0xac, 0xe0, 0xdf, 0x9a, 0x3a, 0xc1, 0x31, 0xbd, 0xf9, 0xad, 0x0a, 0x12, 0xdb, 0x76, 0x6d, 0xeb, 0x22, 0x53, 0x59, 0xd9, 0x01, 0xcd, 0x56, 0xed, 0x88, 0xcd, 0xa3, 0xd3, 0x28, 0x56, 0x54, 0x02 } -, - /* Seed */ - 76, - { 0xa3, 0x4a, 0x68, 0x05, 0x55, 0x71, 0x09, 0xc2, 0x61, 0xdd, 0xdf, 0x5f, 0x85, 0xd3, 0x71, 0xae, 0x65, 0x20, 0xf4, 0x5a, 0xdf, 0x46, 0x96, 0x01, 0xb5, 0xc3, 0x59, 0xfe, 0xc7, 0x44, 0xcb, 0x2a, 0xae, 0x80, 0x98, 0x3c, 0x73, 0x2d, 0xb6, 0xc5, 0x45, 0xdf, 0x55, 0xe0, 0x20, 0x8a, 0xcf, 0xbb, 0xf1, 0xc2, 0xc5, 0xe7, 0x99, 0x88, 0xf3, 0x4e, 0xcd, 0x6e, 0x5b, 0xb4, 0xb5, 0x25, 0xc1, 0xb8, 0xbc, 0xb0, 0x70, 0xd0, 0xd8, 0x42, 0x48, 0xb1, 0xf8, 0xe7, 0x48, 0x0e } -, - /* Encryption */ - 129, - { 0x00, 0x39, 0x56, 0x36, 0xa8, 0x26, 0x67, 0xdc, 0xf0, 0x0d, 0x5d, 0xbd, 0xd8, 0x54, 0x12, 0x06, 0x94, 0x8d, 0x49, 0x36, 0x89, 0x17, 0xec, 0x0e, 0x00, 0xfd, 0x7a, 0xc5, 0xca, 0x8b, 0xf4, 0x4e, 0xc5, 0x83, 0x78, 0x38, 0x6e, 0x59, 0x4b, 0xc0, 0x65, 0xa9, 0xa6, 0x3c, 0xf2, 0xa3, 0x55, 0xa6, 0x08, 0xb6, 0xf0, 0xba, 0xcb, 0xa5, 0x60, 0x08, 0xbb, 0xa4, 0x72, 0x2a, 0x7c, 0x47, 0x05, 0x45, 0xa2, 0x0f, 0x38, 0x78, 0x53, 0xd4, 0x60, 0x31, 0x3b, 0x2e, 0x86, 0x4e, 0x17, 0xb2, 0x33, 0xe5, 0x96, 0x35, 0x41, 0x32, 0xaf, 0x17, 0x3b, 0x4d, 0x04, 0x49, 0x26, 0x47, 0x79, 0x02, 0x62, 0xd3, 0xa4, 0x3f, 0x84, 0x27, 0x37, 0x88, 0x37, 0x46, 0x6b, 0x06, 0x73, 0xa8, 0x15, 0x27, 0xe6, 0xbe, 0x10, 0x45, 0x80, 0x32, 0x6f, 0xec, 0x84, 0xba, 0x37, 0x1e, 0xa6, 0x10, 0x91, 0xfa, 0x40, 0x33, 0xa4 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.13", - /* Message */ - 1, - { 0x38 } -, - /* Seed */ - 125, - { 0x54, 0x7c, 0x91, 0x75, 0x19, 0x05, 0xd5, 0xa2, 0x84, 0xac, 0x3f, 0xe4, 0x32, 0xcb, 0xe0, 0x30, 0x55, 0xb2, 0x85, 0x06, 0x58, 0x96, 0x11, 0x0e, 0xa3, 0x6d, 0x05, 0xa1, 0x40, 0x08, 0x3c, 0xe3, 0x95, 0x5f, 0xa8, 0x28, 0x41, 0xea, 0xf6, 0xdb, 0x4a, 0x50, 0xd1, 0x2c, 0x07, 0x4f, 0x45, 0xa6, 0x88, 0xb5, 0x57, 0x6d, 0x6e, 0x61, 0x68, 0x07, 0x54, 0x0a, 0xc1, 0x17, 0x58, 0x5c, 0x5b, 0xc3, 0xbe, 0x52, 0x60, 0x72, 0x7c, 0xdf, 0x12, 0x3c, 0x77, 0x4d, 0xb4, 0x0c, 0xff, 0x29, 0x70, 0x88, 0x62, 0x48, 0x53, 0xe4, 0x69, 0x51, 0x36, 0xb9, 0x31, 0x16, 0x15, 0x17, 0xa7, 0xb9, 0xb5, 0xdd, 0xcd, 0x9d, 0x32, 0xde, 0x3d, 0xfe, 0x3e, 0xe2, 0xea, 0x68, 0x8c, 0xf7, 0xbf, 0x88, 0x2c, 0xcf, 0x7b, 0x9c, 0x48, 0xd5, 0xe1, 0x9e, 0xff, 0xa6, 0x50, 0x4a, 0x42, 0x62, 0x0b } -, - /* Encryption */ - 129, - { 0x00, 0x89, 0xe3, 0x9d, 0xcf, 0xdf, 0x91, 0x69, 0x3d, 0xef, 0xe3, 0x9d, 0x12, 0xbb, 0x25, 0xf8, 0x0a, 0x76, 0x8d, 0x44, 0x1b, 0x48, 0x1d, 0x6a, 0x75, 0x48, 0x69, 0x50, 0x42, 0x48, 0x0c, 0xd4, 0xa0, 0xba, 0x97, 0x83, 0xd5, 0xc5, 0xbd, 0x38, 0x89, 0x6d, 0xce, 0x06, 0xac, 0xb1, 0x77, 0xa4, 0xac, 0x59, 0x68, 0xe6, 0x55, 0xa7, 0xaa, 0xf5, 0x0d, 0x69, 0x4a, 0x64, 0x97, 0x13, 0xb7, 0xa4, 0xbd, 0xd1, 0x4c, 0x81, 0x9f, 0x83, 0xb2, 0x04, 0x7d, 0xe2, 0x19, 0x5f, 0x73, 0x03, 0x66, 0x54, 0x53, 0xa8, 0xa1, 0x11, 0x5e, 0x5b, 0x48, 0xac, 0x0e, 0x9a, 0x65, 0xed, 0xdb, 0x31, 0x89, 0x51, 0x7b, 0x04, 0x6f, 0xcb, 0xc2, 0xd1, 0x43, 0x81, 0x77, 0x6a, 0x77, 0xfb, 0x46, 0x8e, 0x11, 0x29, 0x3c, 0x78, 0xc8, 0x37, 0x4c, 0x8f, 0x46, 0x60, 0x35, 0x1a, 0xc2, 0xb2, 0xc7, 0x84, 0x5a, 0x25, 0xfe } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.14", - /* Message */ - 42, - { 0x80, 0x64, 0x6b, 0x3c, 0x4d, 0xf0, 0xeb, 0x79, 0x1b, 0xda, 0x0c, 0xcc, 0x4d, 0x97, 0xd8, 0x1e, 0xa8, 0xf6, 0xf7, 0x4e, 0xb2, 0x45, 0xe2, 0xc7, 0xc3, 0x48, 0xfd, 0x7f, 0xb9, 0x90, 0x16, 0xa9, 0xd4, 0x0a, 0x60, 0x5a, 0xc7, 0x42, 0xb2, 0x7a, 0xd2, 0x48 } -, - /* Seed */ - 84, - { 0x11, 0xb8, 0xe7, 0x98, 0xd7, 0xa1, 0x42, 0xd0, 0x82, 0xe0, 0x59, 0x8a, 0x8c, 0xb4, 0xf8, 0xc2, 0xaa, 0x87, 0x5d, 0x5b, 0x65, 0x17, 0x8c, 0x4e, 0xe6, 0x7a, 0x5c, 0xb8, 0x41, 0xd1, 0xcd, 0xa3, 0x04, 0x31, 0xd0, 0x20, 0xdf, 0x28, 0x80, 0xd7, 0x93, 0x58, 0x15, 0xd5, 0x9d, 0x91, 0xb9, 0x99, 0x3e, 0x53, 0xac, 0x34, 0x1c, 0x97, 0x28, 0x61, 0xea, 0xa2, 0x66, 0x97, 0xcf, 0x10, 0xca, 0x8b, 0x27, 0x94, 0xb4, 0x53, 0x03, 0xbe, 0x03, 0x48, 0x9e, 0xbe, 0x07, 0x4d, 0x8f, 0x23, 0x98, 0x54, 0xc3, 0xa6, 0x06, 0xfb } -, - /* Encryption */ - 129, - { 0x01, 0xf1, 0xe5, 0xa3, 0xdb, 0xd8, 0x24, 0x75, 0x2d, 0x2f, 0xba, 0x3c, 0x32, 0x42, 0xe9, 0xd9, 0x96, 0xe6, 0x27, 0x43, 0x0d, 0x49, 0x3e, 0x1b, 0x44, 0x6a, 0x2d, 0xbc, 0xd8, 0x6a, 0x48, 0x09, 0x3e, 0x37, 0xa2, 0xe1, 0x28, 0xb2, 0x8c, 0x49, 0xd2, 0xd1, 0x72, 0xbf, 0x5a, 0x97, 0x7c, 0x36, 0x9b, 0xaa, 0x9f, 0xfb, 0x83, 0x9b, 0xd2, 0xfd, 0xf0, 0x0b, 0xd3, 0x0f, 0xf5, 0x22, 0x8b, 0x57, 0x6b, 0x94, 0xe6, 0xd8, 0xec, 0xf9, 0x44, 0x24, 0x7a, 0xda, 0xd0, 0x19, 0xf2, 0x1d, 0x06, 0xfb, 0xe4, 0x18, 0xd3, 0xa6, 0xd5, 0x4c, 0xdf, 0x11, 0x3e, 0x8d, 0x14, 0xf6, 0xea, 0x06, 0xd8, 0xdb, 0x79, 0x64, 0x93, 0xbc, 0xb1, 0x89, 0x6f, 0xc4, 0xf3, 0xf3, 0x03, 0x86, 0xc5, 0xc8, 0xba, 0xb7, 0x03, 0x7c, 0x87, 0x9a, 0xfe, 0xa4, 0x7c, 0x8f, 0xb7, 0xa3, 0xc5, 0xb5, 0x0b, 0x29, 0x18, 0x66, 0xb9 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.15", - /* Message */ - 9, - { 0x6b, 0x63, 0x1c, 0x7c, 0x35, 0xea, 0x75, 0xa1, 0xb0 } -, - /* Seed */ - 117, - { 0x3e, 0x42, 0x40, 0xc3, 0xe0, 0x9e, 0xa7, 0x83, 0x55, 0x35, 0x8c, 0xda, 0x61, 0x29, 0x53, 0x47, 0x30, 0xf4, 0x8a, 0x9c, 0x9a, 0x1a, 0x52, 0x13, 0x28, 0x4b, 0xfd, 0x07, 0x71, 0x21, 0x6a, 0xd4, 0xca, 0x23, 0x3d, 0x99, 0x3e, 0xe6, 0x35, 0x7f, 0x4b, 0x1b, 0x12, 0xa6, 0xba, 0xa1, 0x77, 0x43, 0x13, 0x4a, 0x85, 0x7f, 0xd7, 0x69, 0xa8, 0xbc, 0x78, 0xd6, 0x1f, 0xb1, 0x4f, 0xea, 0x05, 0x22, 0x1d, 0xcf, 0x5a, 0xeb, 0x1a, 0xff, 0xd4, 0x0d, 0x8b, 0xc6, 0x94, 0x5c, 0x30, 0x10, 0x45, 0xb6, 0x86, 0xc6, 0x11, 0xfa, 0x43, 0x7e, 0x30, 0xca, 0x0f, 0xab, 0x5a, 0x4c, 0xde, 0xf5, 0x20, 0x5b, 0xaf, 0x99, 0x26, 0xc6, 0x07, 0xbe, 0x96, 0x37, 0xb1, 0x50, 0x7f, 0x50, 0x83, 0xe9, 0x40, 0xcc, 0xfa, 0x2f, 0xb3, 0x86, 0x19 } -, - /* Encryption */ - 129, - { 0x00, 0x47, 0xcb, 0x9a, 0x91, 0x98, 0xd9, 0x83, 0xb3, 0x22, 0x24, 0xcf, 0x27, 0xfc, 0x72, 0x99, 0xbb, 0xd4, 0xae, 0x07, 0x78, 0xa8, 0x3f, 0xc5, 0x9c, 0x47, 0x45, 0xfa, 0x99, 0xe9, 0x17, 0xbb, 0x74, 0xf8, 0xbd, 0x4e, 0xf1, 0x3f, 0x14, 0x0c, 0xa9, 0xb7, 0x2e, 0x2a, 0xa1, 0x74, 0xce, 0xea, 0x26, 0x48, 0x94, 0xe2, 0x15, 0xf4, 0x1c, 0x36, 0xd4, 0xe6, 0xf3, 0x46, 0xf6, 0x9b, 0x4f, 0x85, 0x50, 0x5c, 0x54, 0xcd, 0x46, 0x25, 0x9c, 0x71, 0x2e, 0x30, 0xc4, 0x92, 0x94, 0xba, 0xdb, 0x1c, 0x47, 0x16, 0x85, 0x1f, 0x2b, 0x75, 0xe3, 0x96, 0x12, 0xcd, 0x54, 0x66, 0xba, 0x56, 0xe3, 0xf3, 0x15, 0x99, 0xc2, 0xdc, 0xe2, 0x3d, 0x04, 0xc9, 0x3a, 0x64, 0x40, 0x22, 0x27, 0xdf, 0x40, 0xb5, 0x14, 0xc7, 0x4d, 0x0a, 0xa3, 0x6e, 0x1e, 0x86, 0x58, 0xe2, 0x92, 0x77, 0xb3, 0x05, 0xaf, 0x35, 0x15 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.16", - /* Message */ - 53, - { 0x40, 0x08, 0x55, 0xda, 0x54, 0xa6, 0xd1, 0xfe, 0x5f, 0xb5, 0x8a, 0x73, 0xd2, 0xa5, 0xe5, 0x58, 0x38, 0x70, 0xfb, 0xd5, 0x25, 0xd2, 0xf5, 0x72, 0xad, 0xb5, 0x96, 0x30, 0x06, 0xd0, 0xa1, 0x33, 0x9b, 0xea, 0x88, 0x9d, 0x6d, 0x46, 0xa4, 0x37, 0x62, 0xf5, 0x13, 0xbb, 0x7c, 0xc0, 0x36, 0x22, 0xbf, 0x85, 0x92, 0x44, 0xd6 } -, - /* Seed */ - 73, - { 0x49, 0x6e, 0x50, 0xba, 0xb5, 0xef, 0x18, 0xf2, 0x2c, 0x3f, 0x62, 0xb9, 0x21, 0x14, 0x8d, 0x36, 0xc1, 0x01, 0xad, 0x0a, 0x9a, 0x20, 0x38, 0x67, 0x58, 0x08, 0xce, 0x8b, 0x62, 0xf8, 0xa6, 0xa0, 0xba, 0x8d, 0x91, 0x05, 0xf9, 0x2e, 0xd8, 0xa0, 0x2b, 0x31, 0x2f, 0x32, 0x4f, 0x3f, 0xd3, 0x91, 0x92, 0xbd, 0x41, 0x53, 0x78, 0x4f, 0xb5, 0x59, 0x05, 0xc3, 0xb6, 0x69, 0x30, 0x7b, 0xad, 0xa8, 0x27, 0xaf, 0xa1, 0xb5, 0xcb, 0x3d, 0xc1, 0x1d, 0xc4 } -, - /* Encryption */ - 129, - { 0x00, 0xd3, 0xa8, 0x5d, 0xec, 0x97, 0xd3, 0x44, 0x88, 0xee, 0x33, 0xc6, 0x58, 0xba, 0x18, 0x8e, 0x64, 0xcb, 0x57, 0x83, 0x7d, 0x2e, 0xdd, 0xbc, 0xba, 0x8e, 0xe5, 0x2f, 0x13, 0xf1, 0xe4, 0xfe, 0x9b, 0xec, 0x2f, 0x92, 0xe7, 0x21, 0x09, 0x87, 0xe1, 0xc3, 0xfe, 0x34, 0x5d, 0x40, 0x19, 0x77, 0x0b, 0x07, 0x74, 0x94, 0x51, 0xb0, 0x4d, 0x67, 0x30, 0xd5, 0x3a, 0x91, 0x01, 0x5b, 0x25, 0x7e, 0x81, 0x0d, 0xae, 0x0a, 0x0c, 0x11, 0x6a, 0x4f, 0x22, 0x45, 0x14, 0xed, 0xbd, 0x39, 0xb2, 0xc6, 0x5e, 0x15, 0x2d, 0x3b, 0x97, 0x89, 0xdd, 0xa4, 0xf0, 0xd4, 0x5b, 0xf9, 0x83, 0x2d, 0x27, 0x9d, 0x34, 0x31, 0x06, 0x2b, 0x4d, 0xe1, 0xb0, 0x67, 0x7e, 0xf5, 0x9c, 0x6c, 0x33, 0x27, 0x68, 0xec, 0xda, 0x3a, 0xa6, 0xbc, 0xd1, 0x0f, 0x70, 0xbd, 0x06, 0x03, 0x0a, 0x76, 0x65, 0xed, 0x3f, 0x20, 0x79 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.17", - /* Message */ - 48, - { 0xb8, 0x7e, 0xdb, 0x45, 0x5a, 0x7e, 0x85, 0x53, 0x9f, 0x92, 0x8e, 0xda, 0xe9, 0x09, 0xfb, 0xf8, 0xf7, 0xa1, 0x99, 0xc0, 0x3a, 0x94, 0xa9, 0xa4, 0x5a, 0xca, 0xb2, 0x5e, 0xfa, 0xee, 0xcc, 0x26, 0x29, 0x74, 0xca, 0xe0, 0xbb, 0x72, 0x24, 0x3a, 0x99, 0xc6, 0x47, 0x20, 0x79, 0xf1, 0x97, 0x38 } -, - /* Seed */ - 78, - { 0x03, 0x5e, 0x31, 0x59, 0x4a, 0x56, 0x65, 0x60, 0x5b, 0x84, 0xfe, 0xc9, 0x3a, 0xdf, 0x92, 0x58, 0x50, 0x85, 0x1d, 0xf7, 0xb3, 0x94, 0xe9, 0xbb, 0xec, 0xbe, 0x4d, 0x72, 0xc9, 0x2f, 0x27, 0x03, 0xb6, 0xd6, 0x08, 0x96, 0xe0, 0x05, 0x4c, 0x59, 0xca, 0xfa, 0x5e, 0x0d, 0x28, 0x6c, 0x81, 0x2b, 0x23, 0xe5, 0x37, 0x88, 0x5e, 0x4c, 0x34, 0x38, 0xa7, 0x72, 0xa1, 0x61, 0x0a, 0xe9, 0xfa, 0xe9, 0x18, 0xe3, 0x4d, 0x49, 0x92, 0xc7, 0xf2, 0x63, 0xf3, 0xe8, 0xe2, 0xf9, 0x80, 0xb8 } -, - /* Encryption */ - 129, - { 0x02, 0x1c, 0x8c, 0x95, 0x9a, 0xec, 0x47, 0x29, 0x68, 0x87, 0x68, 0x93, 0x0d, 0x67, 0xe2, 0x02, 0x99, 0xdd, 0x47, 0x90, 0x2d, 0xb0, 0x79, 0xf2, 0x39, 0xb8, 0xc2, 0x88, 0xb0, 0xa7, 0x04, 0x47, 0xc7, 0x19, 0x6b, 0x84, 0x91, 0x2e, 0xaa, 0x5b, 0xc3, 0xaf, 0xf6, 0xba, 0x63, 0x0c, 0x2e, 0xaa, 0x3f, 0xcb, 0xb2, 0x4b, 0xe4, 0x63, 0x83, 0x65, 0x31, 0x25, 0x0b, 0xd4, 0xc4, 0xf2, 0xa1, 0xda, 0x68, 0xc8, 0xbf, 0x4f, 0x40, 0xcf, 0x5c, 0x98, 0xb6, 0x85, 0xeb, 0xec, 0xa4, 0xd0, 0x3e, 0x76, 0xb3, 0x34, 0xaf, 0x0b, 0x1b, 0x34, 0x48, 0x8b, 0x58, 0x2e, 0x29, 0x35, 0x25, 0x35, 0x72, 0xf7, 0xfc, 0xfa, 0xa8, 0x35, 0x44, 0xe7, 0xfd, 0x52, 0xef, 0x45, 0x8a, 0xcc, 0xcb, 0x19, 0x30, 0x1a, 0x4d, 0xdd, 0x50, 0x51, 0x6f, 0x16, 0xa5, 0xfb, 0x78, 0xf3, 0x95, 0x99, 0x00, 0xdb, 0xcc, 0xa1, 0xf2 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.18", - /* Message */ - 38, - { 0x30, 0x2a, 0xc8, 0x0e, 0x30, 0xc6, 0x55, 0x3e, 0x93, 0x59, 0xdf, 0x85, 0xb1, 0xe2, 0x4a, 0x16, 0xc8, 0x62, 0xa2, 0x0f, 0xf4, 0xfd, 0x9d, 0x5f, 0x14, 0x6b, 0xe2, 0x81, 0xdc, 0x30, 0x66, 0xae, 0xb8, 0xfa, 0x00, 0xb5, 0x2a, 0x99 } -, - /* Seed */ - 88, - { 0x32, 0x6c, 0x99, 0x35, 0x8c, 0x4e, 0x5f, 0xa4, 0xd2, 0xc0, 0x43, 0xf0, 0x2f, 0x92, 0x70, 0x5f, 0x79, 0x1c, 0xf7, 0x12, 0xbc, 0x01, 0x04, 0x5b, 0x4c, 0xf3, 0x49, 0xb4, 0x2a, 0xe5, 0xac, 0xfa, 0xc3, 0x78, 0x38, 0x11, 0xbb, 0xf0, 0x7f, 0x34, 0xbd, 0x6c, 0x85, 0x19, 0x55, 0xcb, 0xa4, 0xa8, 0xb2, 0xa7, 0xd1, 0x39, 0xa7, 0x8b, 0xc4, 0xd8, 0x8e, 0x3a, 0x88, 0xe6, 0xc4, 0xcf, 0x49, 0x4e, 0x6a, 0x4a, 0x52, 0x35, 0x41, 0x45, 0xe1, 0x18, 0x83, 0xcb, 0x5c, 0x78, 0xb5, 0x72, 0xf3, 0x0a, 0x51, 0xed, 0x23, 0xf2, 0x56, 0x4b, 0x69, 0x60 } -, - /* Encryption */ - 129, - { 0x02, 0x03, 0x29, 0x87, 0xcc, 0xf7, 0x5a, 0x63, 0x86, 0x24, 0x17, 0x80, 0x64, 0xdb, 0xa4, 0xb7, 0x2b, 0xe5, 0x39, 0xe0, 0x7e, 0xcd, 0xf5, 0x30, 0x03, 0x56, 0xcc, 0x43, 0xd7, 0x29, 0xfe, 0x34, 0xfb, 0x35, 0xbb, 0xbf, 0x5a, 0x32, 0x17, 0x2c, 0xe3, 0x9e, 0xa1, 0xfb, 0x47, 0xd3, 0x8e, 0x49, 0x7a, 0x03, 0xb6, 0x01, 0xee, 0xaf, 0xda, 0xaf, 0x99, 0xa3, 0x4f, 0xd7, 0x21, 0x18, 0x4a, 0xf2, 0xe1, 0x8e, 0x83, 0xd0, 0x50, 0xa4, 0x10, 0x8b, 0x15, 0xe5, 0xe3, 0xa2, 0x7e, 0x0e, 0x63, 0x6d, 0xf8, 0xd9, 0x4f, 0x98, 0x16, 0x58, 0xeb, 0xde, 0xcd, 0xab, 0x0d, 0xef, 0xcc, 0x0d, 0xaf, 0x3a, 0xc9, 0xa2, 0x7b, 0x3f, 0x22, 0xa0, 0x54, 0x1d, 0x35, 0x00, 0x27, 0x52, 0xe9, 0xcc, 0x4f, 0xb2, 0x58, 0x2f, 0xae, 0x25, 0x11, 0xa1, 0x32, 0xec, 0x5c, 0x22, 0x8a, 0x88, 0x72, 0xbd, 0xba, 0xd6, 0x87 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.19", - /* Message */ - 43, - { 0x00, 0xb3, 0x82, 0x01, 0x74, 0x6d, 0xca, 0xf4, 0x03, 0x48, 0xaf, 0x57, 0xba, 0xd7, 0x25, 0x70, 0xca, 0xf5, 0xa2, 0x85, 0x5f, 0xec, 0x6c, 0x42, 0xee, 0x22, 0xdc, 0xfe, 0x64, 0xc9, 0x97, 0xec, 0x62, 0xa5, 0xc9, 0x75, 0x62, 0x4b, 0xbd, 0x1f, 0x8e, 0xc9, 0x16 } -, - /* Seed */ - 83, - { 0x93, 0x91, 0x05, 0xc0, 0x04, 0xc0, 0x1a, 0xa9, 0xf4, 0x74, 0x46, 0xd3, 0xcc, 0xf5, 0x30, 0xe9, 0xb2, 0x17, 0x4c, 0x50, 0xae, 0xbc, 0xa0, 0xa9, 0x5c, 0xb7, 0xa4, 0xd8, 0x39, 0x54, 0xef, 0xb8, 0x03, 0x9e, 0x59, 0x1c, 0x19, 0x71, 0xd7, 0x76, 0xce, 0xc7, 0x61, 0x12, 0x92, 0x06, 0xdb, 0x7a, 0xd3, 0xdd, 0x87, 0x16, 0x68, 0x25, 0x5a, 0x55, 0x50, 0xac, 0x4e, 0x94, 0x8b, 0xe0, 0x5c, 0x16, 0x22, 0x20, 0xdc, 0xef, 0xec, 0x13, 0xff, 0x1f, 0xd8, 0xa5, 0xa7, 0xf7, 0x8b, 0xf7, 0x15, 0xb4, 0x9d, 0x03, 0xba } -, - /* Encryption */ - 129, - { 0x01, 0x2b, 0xa8, 0x7d, 0xc0, 0x3a, 0x1a, 0x38, 0xbf, 0xed, 0xf1, 0x21, 0xed, 0x87, 0x22, 0x82, 0x7b, 0xd9, 0x7d, 0xd6, 0x3f, 0xdd, 0xfd, 0xd5, 0x90, 0x50, 0xc5, 0x3c, 0x5e, 0x7b, 0x49, 0xfb, 0x7a, 0xe6, 0x03, 0x84, 0x87, 0x82, 0x0e, 0xfd, 0x5f, 0xb9, 0x71, 0x43, 0x81, 0xce, 0x8d, 0xae, 0xb5, 0x6d, 0x13, 0x50, 0xbf, 0xc6, 0x7d, 0xf0, 0x91, 0xbe, 0xa2, 0xac, 0xdf, 0xfd, 0xe9, 0x29, 0x2a, 0xb1, 0x29, 0x1c, 0xc9, 0x75, 0x1d, 0x9e, 0x39, 0xa8, 0x26, 0xf0, 0x54, 0xad, 0x1f, 0x33, 0xa2, 0xb7, 0x94, 0xda, 0x50, 0xef, 0x80, 0x67, 0x29, 0x17, 0xe0, 0xb3, 0x81, 0x40, 0x45, 0xd2, 0x3d, 0xf4, 0x5d, 0xba, 0x3f, 0xdc, 0x6f, 0x09, 0xab, 0x0a, 0x01, 0x8b, 0x06, 0x0a, 0xa9, 0xfa, 0xfc, 0x3a, 0x5d, 0x19, 0xd5, 0xeb, 0x64, 0x31, 0x0b, 0xd6, 0x02, 0xa9, 0x91, 0x1d, 0xcb, 0x7f, 0x24 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 8.20", - /* Message */ - 26, - { 0xba, 0x28, 0x33, 0x66, 0x04, 0x76, 0xd8, 0x73, 0x15, 0x07, 0x66, 0x9f, 0x50, 0x29, 0x8c, 0x2c, 0x68, 0xd4, 0x4c, 0x53, 0xe3, 0xd0, 0xa8, 0x03, 0x78, 0x6e } -, - /* Seed */ - 100, - { 0x86, 0xce, 0x8e, 0x92, 0xad, 0x88, 0xb1, 0x46, 0x2a, 0x17, 0x1a, 0xf2, 0x8b, 0x4e, 0x99, 0x08, 0x8c, 0x04, 0x98, 0xa2, 0x9b, 0x4c, 0xa5, 0xe6, 0x6f, 0x64, 0xf8, 0x6a, 0xde, 0xc7, 0xf9, 0x64, 0xe8, 0xeb, 0x82, 0x57, 0xc5, 0xc0, 0x1c, 0xda, 0x16, 0x5e, 0x0f, 0x75, 0x11, 0xdb, 0x14, 0x7c, 0x10, 0xbc, 0x07, 0x51, 0x5f, 0x04, 0xf0, 0x5f, 0x52, 0xd2, 0xbc, 0x89, 0x22, 0x83, 0x57, 0xc6, 0x61, 0xb4, 0x3f, 0x43, 0xd5, 0x42, 0xdb, 0xe7, 0x78, 0x34, 0x09, 0x1c, 0x7c, 0xe7, 0x0b, 0x18, 0x2e, 0x19, 0xbc, 0x93, 0x6c, 0x30, 0x68, 0x4a, 0x83, 0x1e, 0x2c, 0x3b, 0x8a, 0x4a, 0x74, 0x46, 0x3f, 0x0c, 0x9f, 0x1b } -, - /* Encryption */ - 129, - { 0x01, 0x12, 0xac, 0x28, 0x98, 0xa2, 0x5c, 0x13, 0x28, 0x79, 0x1f, 0xc9, 0x6a, 0x82, 0xb7, 0x29, 0x18, 0xb5, 0x1a, 0x66, 0x8c, 0x54, 0x0b, 0xcf, 0xfc, 0x8e, 0x0b, 0x3a, 0xaf, 0xe2, 0x05, 0xee, 0x87, 0x1f, 0x5e, 0xb7, 0x6a, 0xd1, 0x16, 0xd3, 0x04, 0xcc, 0x04, 0x42, 0xbd, 0xb1, 0xaf, 0x5b, 0x9a, 0x63, 0x45, 0x82, 0x7e, 0x67, 0x8e, 0x40, 0xe3, 0x3f, 0xc8, 0x58, 0xef, 0x6c, 0x45, 0x6b, 0xe4, 0x36, 0x52, 0xbb, 0x2e, 0xbc, 0x39, 0x64, 0xb4, 0xbf, 0x4a, 0x93, 0xa8, 0xee, 0xef, 0x84, 0x04, 0xae, 0xf1, 0xa0, 0x44, 0x41, 0x5a, 0x15, 0x6f, 0x7c, 0xfd, 0x79, 0x95, 0xac, 0x25, 0xe7, 0xb0, 0x30, 0x26, 0x69, 0x8e, 0x14, 0x48, 0x9e, 0xfc, 0xc1, 0xae, 0x92, 0x96, 0x58, 0xbb, 0x66, 0x3d, 0xe0, 0xac, 0x44, 0xa7, 0xa5, 0x5c, 0xaa, 0x0b, 0x0b, 0x20, 0x34, 0xc2, 0xaa, 0xec, 0x13, 0x4e } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 9: A 1027-bit RSA key pair", -{ - /* Modulus */ - 129, - { 0x06, 0x8e, 0xf0, 0xb2, 0x74, 0x15, 0x7d, 0x7b, 0x5e, 0xc7, 0x29, 0x03, 0x86, 0x59, 0x56, 0x18, 0x3e, 0x0e, 0x34, 0x62, 0xec, 0xd2, 0x21, 0x14, 0xca, 0xd4, 0xc7, 0xba, 0xac, 0x94, 0xc7, 0xc2, 0xc5, 0xe6, 0xcb, 0xdf, 0xa2, 0xab, 0xfe, 0xaf, 0x8d, 0x23, 0x18, 0x2e, 0x9c, 0x08, 0x81, 0x5d, 0x10, 0x0d, 0x8e, 0x8f, 0x62, 0x1d, 0x3c, 0xd4, 0xaf, 0xbb, 0x99, 0x85, 0x96, 0x6f, 0xd6, 0xa4, 0x18, 0x2b, 0x59, 0x90, 0x88, 0xa3, 0x5d, 0x77, 0xfe, 0x01, 0x78, 0xac, 0xf7, 0x53, 0x1c, 0x70, 0xd8, 0x96, 0xff, 0x78, 0x8e, 0xdc, 0x82, 0x06, 0x05, 0x40, 0xef, 0xef, 0xd9, 0xf3, 0xc2, 0x4d, 0x5b, 0xe6, 0x9a, 0xf7, 0xf2, 0xf4, 0x44, 0x85, 0xb1, 0x91, 0x18, 0xa4, 0x68, 0x81, 0x4f, 0xc5, 0x13, 0xe3, 0xa1, 0xce, 0xd6, 0x77, 0x91, 0xf9, 0x03, 0x6e, 0xee, 0x56, 0xfa, 0x9e, 0x20, 0x60, 0x2b } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x71, 0x94, 0x0b, 0xe6, 0x79, 0x7b, 0xb3, 0x28, 0x5e, 0xbd, 0xc2, 0x0c, 0xc9, 0x27, 0x5f, 0x5d, 0x77, 0x55, 0x88, 0xe9, 0xaf, 0x6f, 0x68, 0x7a, 0x2e, 0x39, 0xd2, 0xc1, 0x91, 0x11, 0x10, 0x76, 0x95, 0xdd, 0xed, 0xe3, 0x91, 0xd2, 0x19, 0x6b, 0x29, 0x58, 0x1d, 0xf3, 0x15, 0x4a, 0x37, 0x12, 0xfa, 0x6f, 0xcd, 0xf8, 0x5b, 0xb4, 0xfd, 0x48, 0x64, 0x1f, 0x07, 0x1f, 0xfd, 0xb1, 0xde, 0x08, 0xa1, 0xd5, 0x92, 0x1c, 0xa1, 0x0e, 0x68, 0xdc, 0x04, 0x13, 0x13, 0xc9, 0xbb, 0xcb, 0x80, 0x81, 0xbd, 0xb5, 0xd4, 0x60, 0x42, 0x27, 0xcb, 0xe5, 0x78, 0x07, 0x41, 0x65, 0x74, 0xd1, 0xa3, 0x8d, 0xa0, 0xb2, 0x34, 0x4b, 0xb2, 0x15, 0xb4, 0x18, 0x2b, 0x10, 0x6b, 0x2b, 0x53, 0x4a, 0x8d, 0x32, 0x06, 0xf2, 0xd7, 0xd3, 0x03, 0xb8, 0xdd, 0x5b, 0xce, 0x29, 0x2a, 0xbf, 0x75, 0xcd, 0x76, 0x49 } -, - /* Prime 1 */ - 65, - { 0x02, 0x95, 0x10, 0xb9, 0x33, 0xb7, 0xc8, 0x4e, 0x41, 0xff, 0xcc, 0x72, 0x2e, 0x32, 0x38, 0x60, 0xc9, 0xb2, 0xd0, 0x88, 0x3c, 0x68, 0x33, 0x62, 0x4b, 0xa5, 0xbb, 0xb8, 0x97, 0x53, 0xd7, 0x60, 0x3a, 0x7d, 0xcf, 0x26, 0x6c, 0xc8, 0xf4, 0xbb, 0x07, 0x48, 0x48, 0x26, 0x0f, 0x68, 0xdd, 0x82, 0x6b, 0x63, 0x8a, 0x8d, 0xd2, 0xef, 0xaf, 0x68, 0xaa, 0xee, 0x26, 0x5a, 0xe8, 0x98, 0x39, 0xb1, 0x63 } -, - /* Prime 2 */ - 65, - { 0x02, 0x8a, 0x2d, 0x03, 0x34, 0x49, 0x44, 0x62, 0xf6, 0x11, 0xf3, 0x60, 0x3e, 0x0d, 0x37, 0x4f, 0x3e, 0x32, 0xd2, 0xfa, 0xb5, 0xe9, 0xd6, 0x97, 0x2d, 0xfd, 0x70, 0x79, 0x64, 0x46, 0xa4, 0x8b, 0xc3, 0x03, 0xee, 0x25, 0x8b, 0x75, 0xa1, 0xb7, 0xac, 0xe7, 0x0d, 0x48, 0x58, 0x51, 0x79, 0x4e, 0x42, 0x84, 0xf2, 0xdc, 0x51, 0xd3, 0x97, 0x8d, 0x55, 0x53, 0x7b, 0xea, 0x22, 0x55, 0x11, 0xf4, 0x99 } -, - /* Prime exponent 1 */ - 65, - { 0x01, 0xb9, 0x55, 0x0d, 0xdf, 0xda, 0x3d, 0x6f, 0x09, 0x9e, 0xe5, 0xf6, 0x00, 0xa3, 0x64, 0x82, 0x31, 0x86, 0x20, 0xb4, 0x23, 0x68, 0x09, 0x8e, 0x01, 0x24, 0xe7, 0x5b, 0x88, 0x23, 0xe0, 0x31, 0x0d, 0x3b, 0xba, 0xd5, 0x53, 0x61, 0x22, 0x09, 0xcf, 0x05, 0xd1, 0xad, 0x1f, 0x32, 0x8a, 0x57, 0xac, 0xac, 0x2a, 0xef, 0x1e, 0x39, 0x08, 0x69, 0x1f, 0x5c, 0x98, 0xdc, 0xae, 0x56, 0x1a, 0x86, 0x33 } -, - /* Prime exponent 2 */ - 64, - { 0xe8, 0xff, 0xa4, 0x8c, 0x52, 0x4d, 0x5d, 0xa1, 0x8d, 0x61, 0x48, 0x76, 0x34, 0x4a, 0x43, 0xed, 0xa8, 0x4d, 0x0f, 0x67, 0xad, 0xbb, 0x27, 0x46, 0x65, 0xf2, 0xae, 0xae, 0x0e, 0xda, 0xdc, 0xf3, 0x30, 0x2f, 0x61, 0xe9, 0x0e, 0x68, 0xbb, 0xe8, 0x0c, 0x8d, 0x28, 0x05, 0xee, 0x7c, 0xa8, 0x5d, 0x12, 0x43, 0xee, 0x4c, 0xac, 0xa5, 0x3d, 0x12, 0xfc, 0xee, 0x05, 0x43, 0xf4, 0x74, 0x90, 0xd1 } -, - /* Coefficient */ - 65, - { 0x01, 0x98, 0x4a, 0x81, 0x5c, 0xdb, 0x46, 0xad, 0x81, 0xcd, 0x82, 0x10, 0xaa, 0x07, 0x22, 0x70, 0x0c, 0x59, 0x90, 0x9d, 0xdc, 0x9c, 0x4a, 0x49, 0xf1, 0x9b, 0xe1, 0x5d, 0xa6, 0x04, 0x47, 0x8c, 0x21, 0x88, 0x81, 0xd5, 0x43, 0xa7, 0x54, 0x6b, 0xf7, 0x75, 0x69, 0x4c, 0x2b, 0xd1, 0x3d, 0xda, 0x69, 0x2c, 0xd0, 0xbc, 0x24, 0x39, 0xef, 0x22, 0xef, 0xb6, 0x7f, 0xfc, 0x5d, 0x46, 0x95, 0x21, 0xb2 } - -} -, -{{ - "PKCS#1 v1.5 Encryption Example 9.1", - /* Message */ - 61, - { 0x96, 0xad, 0x3b, 0xa4, 0xd2, 0x9b, 0xdd, 0x35, 0x25, 0xbb, 0xc5, 0xd0, 0x2e, 0x88, 0xc0, 0x13, 0x3f, 0xfd, 0xea, 0x40, 0x94, 0x74, 0xdb, 0x34, 0xdf, 0x73, 0x3c, 0xa5, 0x9c, 0x3a, 0x23, 0x2f, 0x6a, 0x64, 0xc2, 0x14, 0x3c, 0xa1, 0x31, 0xa7, 0xf1, 0x8d, 0x00, 0x5b, 0xb3, 0xaa, 0x6c, 0xa1, 0xea, 0xbe, 0xaa, 0x13, 0x6b, 0xec, 0x37, 0xdb, 0x11, 0x1d, 0x4d, 0x8f, 0x61 } -, - /* Seed */ - 65, - { 0x10, 0xe9, 0xf5, 0x09, 0x3c, 0xec, 0x87, 0x2e, 0xdb, 0x16, 0x16, 0x2b, 0x6b, 0xbd, 0x52, 0x12, 0xf6, 0x10, 0x1a, 0x71, 0xd5, 0x1d, 0xc1, 0x42, 0x0c, 0xad, 0xd1, 0xd5, 0x50, 0xfa, 0xf9, 0xaf, 0x40, 0xf5, 0x73, 0xd3, 0xe3, 0xab, 0x68, 0x91, 0xd8, 0xa8, 0x82, 0xef, 0x06, 0x56, 0xbc, 0x30, 0x06, 0x2a, 0x05, 0xb1, 0xcc, 0x27, 0x7a, 0x11, 0xc9, 0xba, 0x2e, 0xfd, 0x51, 0x03, 0xc5, 0x6e, 0x23 } -, - /* Encryption */ - 129, - { 0x04, 0xde, 0xc0, 0x1b, 0xbf, 0x8e, 0x0c, 0x22, 0x96, 0xd9, 0xf5, 0xbc, 0x2d, 0x2b, 0xa8, 0x95, 0x34, 0x3e, 0xc3, 0x0e, 0xc5, 0x44, 0x13, 0x57, 0x6d, 0x80, 0x84, 0xb9, 0x31, 0x43, 0xcf, 0xa2, 0xd2, 0x03, 0x3b, 0xf4, 0xc2, 0xc2, 0xe0, 0x3f, 0x5b, 0x02, 0x59, 0xed, 0xf1, 0x4a, 0x8f, 0x3e, 0x11, 0x69, 0x85, 0x77, 0x65, 0x2a, 0x2a, 0xb9, 0xf5, 0x1a, 0xb0, 0x18, 0x7c, 0xc7, 0x51, 0x75, 0xc8, 0x6d, 0xfc, 0x9a, 0x45, 0xb1, 0xe4, 0xeb, 0x8b, 0x54, 0x47, 0xa9, 0x4a, 0xb9, 0xb5, 0x17, 0x7a, 0x04, 0x04, 0xba, 0x49, 0xe5, 0x7f, 0x83, 0xc9, 0x3f, 0x7f, 0xe2, 0xde, 0x24, 0x18, 0x45, 0xf5, 0x81, 0xf6, 0x42, 0x12, 0x43, 0x7e, 0x0c, 0x04, 0xff, 0x34, 0xea, 0x1d, 0xee, 0x6d, 0xd2, 0x8f, 0x6f, 0xf3, 0x36, 0x72, 0x35, 0x44, 0x13, 0x74, 0xf0, 0xf2, 0xef, 0x71, 0xa9, 0xcd, 0xae, 0x9e } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Encryption Example 9.2", - /* Message */ - 37, - { 0x7f, 0x92, 0xab, 0xb6, 0xe5, 0x2e, 0xd5, 0xd4, 0x20, 0x84, 0x9e, 0xd6, 0xcc, 0xab, 0x36, 0xc3, 0xd0, 0x84, 0x92, 0x55, 0x43, 0x1e, 0x19, 0x3d, 0x67, 0xbd, 0x94, 0x4b, 0x6c, 0x0f, 0xce, 0xfb, 0x77, 0x29, 0xcf, 0x5a, 0x31 } -, - /* Seed */ - 89, - { 0xce, 0xa9, 0x68, 0xbe, 0x78, 0xab, 0x5f, 0xaa, 0xc2, 0x27, 0xdc, 0x3c, 0x6f, 0xc9, 0xce, 0xd4, 0x9f, 0x85, 0x1e, 0xd5, 0x8b, 0x08, 0xd5, 0xca, 0x37, 0x54, 0x28, 0x48, 0x9a, 0xfb, 0xef, 0x3b, 0xf5, 0xed, 0x83, 0x74, 0x6d, 0x95, 0x9a, 0x0a, 0x56, 0xe9, 0xac, 0x66, 0xff, 0x2e, 0x7c, 0x8b, 0x8c, 0x3a, 0xda, 0x97, 0xfa, 0x15, 0xdd, 0x7f, 0x99, 0x13, 0x41, 0x74, 0x70, 0x70, 0xcc, 0xad, 0x65, 0x42, 0xbd, 0x7f, 0x4b, 0x33, 0xf5, 0x56, 0x04, 0x45, 0x8b, 0x91, 0x03, 0xae, 0x13, 0xdc, 0x89, 0xb4, 0xe6, 0x2c, 0xcb, 0xf8, 0x4f, 0xf7, 0x3b } -, - /* Encryption */ - 129, - { 0x02, 0x5a, 0x1e, 0x65, 0xeb, 0x37, 0xf4, 0xb3, 0x28, 0xcc, 0x31, 0xb0, 0x17, 0x24, 0xf8, 0x3c, 0x26, 0xed, 0x8d, 0x18, 0xa6, 0x51, 0x65, 0x21, 0x3b, 0xa0, 0xef, 0xf7, 0xae, 0x76, 0x7e, 0xe6, 0x0b, 0x99, 0x27, 0x76, 0x1a, 0x06, 0x94, 0xb5, 0xc3, 0xbb, 0x64, 0xb7, 0xe0, 0x39, 0x96, 0xa3, 0x56, 0x8d, 0x6f, 0xd1, 0xac, 0x6b, 0x7a, 0x8b, 0x71, 0x97, 0x5b, 0xb0, 0x71, 0x6d, 0x94, 0x5c, 0x02, 0xd4, 0x73, 0x68, 0x96, 0x6f, 0xff, 0xb1, 0xd4, 0x49, 0xfc, 0x6e, 0xd7, 0x3e, 0x2d, 0x19, 0x83, 0x1b, 0x86, 0xd1, 0x87, 0x67, 0x51, 0x29, 0x36, 0x69, 0xe7, 0x7d, 0x6e, 0x12, 0xa0, 0xf0, 0xc9, 0x62, 0xdf, 0xcd, 0x40, 0x0f, 0xb8, 0x3c, 0xe8, 0x26, 0x07, 0x16, 0x31, 0x7a, 0xd5, 0xfd, 0xe2, 0x18, 0x49, 0xaa, 0x6f, 0x68, 0xe7, 0x0c, 0xe0, 0xb5, 0xb3, 0x11, 0x42, 0x89, 0x8a, 0xd1, 0xa2 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.3", - /* Message */ - 61, - { 0xf5, 0xb5, 0x35, 0xb6, 0x3d, 0x53, 0x5e, 0x21, 0x37, 0x73, 0x2c, 0x30, 0x13, 0x37, 0xc9, 0x53, 0xea, 0x2e, 0xdd, 0x58, 0xa7, 0x8c, 0x20, 0x25, 0x83, 0x2d, 0xca, 0x9d, 0x6b, 0xcd, 0xad, 0x87, 0xc9, 0x97, 0xc9, 0x06, 0x83, 0x6b, 0x2b, 0xf9, 0x5c, 0x83, 0xf0, 0x3f, 0x7a, 0xfa, 0x29, 0x01, 0x34, 0x6d, 0x67, 0x4a, 0xa6, 0x9a, 0x1b, 0x47, 0xf6, 0xb9, 0x16, 0xfd, 0x4b } -, - /* Seed */ - 65, - { 0xc8, 0x9e, 0xfd, 0xb2, 0x34, 0xe0, 0x1a, 0x2f, 0x07, 0x76, 0x29, 0x57, 0xe8, 0xc0, 0xa4, 0xf9, 0x1a, 0xba, 0xe6, 0xd4, 0xf3, 0x60, 0xe8, 0x9a, 0x7c, 0x48, 0x6c, 0x55, 0x49, 0xf3, 0xd0, 0xad, 0x75, 0x77, 0x7f, 0x0c, 0xcd, 0x97, 0xa0, 0x97, 0x5e, 0x98, 0x44, 0xd9, 0x86, 0x87, 0x02, 0x76, 0xc9, 0x82, 0x5f, 0x5d, 0x1e, 0xef, 0x3d, 0x1b, 0x48, 0x7a, 0xbc, 0xd1, 0x9b, 0x51, 0x2d, 0x08, 0xbe } -, - /* Encryption */ - 129, - { 0x03, 0x9a, 0x1c, 0xe8, 0xc0, 0x91, 0x62, 0x51, 0xa0, 0x1e, 0x5f, 0xb6, 0x61, 0x5d, 0x2e, 0x11, 0x98, 0x2f, 0x4f, 0xae, 0x7d, 0x46, 0xdf, 0x21, 0xda, 0xa2, 0x98, 0xf2, 0xc7, 0x46, 0x11, 0xb5, 0x58, 0x16, 0xcc, 0x27, 0xfa, 0x37, 0x27, 0x9a, 0xaf, 0x59, 0x02, 0xec, 0xb6, 0xc8, 0x39, 0xfa, 0x90, 0x0c, 0xf3, 0xaf, 0x86, 0xff, 0x40, 0xa4, 0x47, 0xdc, 0x40, 0x22, 0x35, 0xf9, 0x06, 0x67, 0x91, 0x23, 0xf3, 0xcd, 0x38, 0x19, 0x04, 0xf3, 0x3e, 0xee, 0x35, 0x3a, 0xc9, 0x0d, 0x5f, 0x7f, 0x20, 0x3a, 0x6e, 0xa8, 0x91, 0x35, 0x1a, 0xdb, 0x11, 0x60, 0x1b, 0xd9, 0xd6, 0xb0, 0xa0, 0x24, 0x33, 0x3a, 0x24, 0x55, 0xbe, 0x1c, 0xa6, 0x2e, 0xd8, 0x2c, 0xf3, 0x7c, 0xf8, 0xde, 0x4e, 0x23, 0x92, 0xdd, 0x54, 0xe7, 0x75, 0x03, 0x3c, 0x56, 0x99, 0x0b, 0xae, 0x5c, 0x43, 0x91, 0xb6, 0x65, 0x3a } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.4", - /* Message */ - 47, - { 0xa7, 0xcf, 0x29, 0x82, 0x03, 0x47, 0xa5, 0x2a, 0xb9, 0xcc, 0x42, 0x04, 0xbb, 0x6a, 0xc1, 0xbd, 0x7f, 0xd9, 0x0a, 0x75, 0x8a, 0x15, 0x6d, 0xfa, 0x9c, 0xe7, 0x19, 0x27, 0xe7, 0x4e, 0xe2, 0x15, 0x98, 0x70, 0x8c, 0xf6, 0x9c, 0xfd, 0x79, 0x85, 0x74, 0x2f, 0x50, 0x27, 0xff, 0xa7, 0x10 } -, - /* Seed */ - 79, - { 0x10, 0x9f, 0x0d, 0x6c, 0xa0, 0xe1, 0x3f, 0x50, 0x4c, 0x07, 0xd8, 0x4a, 0x5b, 0xbe, 0x43, 0xed, 0x6a, 0x94, 0xac, 0xba, 0xfa, 0xb0, 0x48, 0x89, 0x36, 0x05, 0xd3, 0x41, 0xc5, 0xd2, 0x8d, 0x85, 0x44, 0xc3, 0xfd, 0x28, 0x43, 0x50, 0xf2, 0xc2, 0x2d, 0x1f, 0x36, 0x7d, 0xfb, 0x9b, 0x6a, 0x67, 0x51, 0xd0, 0x6a, 0xae, 0xb1, 0x7c, 0x3c, 0x0a, 0x10, 0x11, 0xae, 0x38, 0xfb, 0xa4, 0xe4, 0x6d, 0x4e, 0x44, 0xc4, 0x82, 0x87, 0x9e, 0xba, 0x06, 0x44, 0x37, 0x48, 0x71, 0xb5, 0xc5, 0x3b } -, - /* Encryption */ - 129, - { 0x04, 0x48, 0xc3, 0x9c, 0xc4, 0x57, 0xd6, 0xcc, 0xc3, 0x0b, 0x0d, 0x76, 0xff, 0x5a, 0x13, 0x2e, 0x00, 0xc7, 0x5d, 0x53, 0x36, 0x46, 0xb8, 0x44, 0x0b, 0x13, 0xce, 0x73, 0x0e, 0x1b, 0x7a, 0xd8, 0x3b, 0xb2, 0xba, 0x4a, 0x08, 0x2b, 0xb5, 0xa3, 0x3c, 0xf4, 0x14, 0x66, 0xe0, 0x67, 0xfc, 0xf1, 0x6c, 0x6a, 0x29, 0xf1, 0x87, 0x9f, 0x77, 0xe9, 0xb0, 0xdb, 0xf3, 0xec, 0x08, 0x05, 0x75, 0xbe, 0xba, 0xc0, 0xc5, 0x67, 0x6b, 0xae, 0xe0, 0x02, 0xd5, 0x73, 0xd1, 0xbc, 0xc8, 0xa7, 0x0f, 0xed, 0x2a, 0xb6, 0x79, 0x43, 0xef, 0xc9, 0xbc, 0x13, 0x13, 0x9e, 0x5d, 0x8d, 0xde, 0x2c, 0xb3, 0x0e, 0x1b, 0x93, 0x4f, 0x50, 0xcf, 0x6c, 0x45, 0x73, 0x92, 0x3f, 0x73, 0x98, 0xde, 0x66, 0x70, 0xcc, 0x26, 0x34, 0x1f, 0x3e, 0x35, 0xa4, 0x19, 0x36, 0x1e, 0x59, 0xf6, 0x08, 0x98, 0xf2, 0x69, 0x2b, 0x94 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.5", - /* Message */ - 10, - { 0xb8, 0x03, 0xc7, 0xef, 0x5f, 0x9a, 0x9b, 0xd5, 0x84, 0x01 } -, - /* Seed */ - 116, - { 0x8e, 0x77, 0x58, 0xed, 0x4d, 0x1b, 0xa4, 0xdc, 0xe0, 0x88, 0x92, 0x6c, 0x10, 0xb2, 0xf3, 0xd4, 0xc1, 0xe2, 0x67, 0x1a, 0xe7, 0x2e, 0x65, 0x9f, 0x72, 0x1f, 0xf7, 0xbe, 0x6f, 0xc0, 0x35, 0xe3, 0x85, 0xd5, 0x12, 0xd0, 0x7a, 0x38, 0xdc, 0xca, 0x1e, 0xb8, 0x31, 0xfe, 0xf9, 0x06, 0x10, 0x04, 0x44, 0xee, 0x99, 0x5c, 0xb0, 0x7b, 0xc2, 0x6a, 0x5d, 0xc9, 0x2b, 0x27, 0x2a, 0x74, 0xa9, 0x2d, 0x21, 0x49, 0x73, 0x25, 0x22, 0xd5, 0x39, 0x43, 0x4f, 0xa4, 0xd0, 0x3b, 0x07, 0xcf, 0x96, 0x99, 0x95, 0x8c, 0x19, 0x89, 0x1d, 0x1d, 0x59, 0x06, 0xaa, 0x36, 0xd0, 0xa8, 0xd0, 0x6c, 0x6f, 0xc8, 0x7a, 0x45, 0x51, 0xbf, 0x18, 0x58, 0xbd, 0xfe, 0xd5, 0xf8, 0x86, 0xcc, 0x8d, 0x31, 0xee, 0x4c, 0x16, 0x4e, 0x98, 0x1d } -, - /* Encryption */ - 129, - { 0x04, 0xb6, 0x2d, 0x4d, 0x4b, 0x9c, 0x1c, 0x3e, 0x05, 0x13, 0x09, 0x79, 0x5c, 0x69, 0x24, 0x8a, 0xed, 0x38, 0x9d, 0xe2, 0x4a, 0x6c, 0x79, 0x53, 0x8a, 0x2d, 0x51, 0xd5, 0xd0, 0x37, 0x19, 0xa8, 0xa5, 0x28, 0x75, 0x0d, 0x5d, 0x25, 0x4a, 0x1b, 0x91, 0x40, 0x96, 0xdb, 0x96, 0xd8, 0x3d, 0x2d, 0x9a, 0xaa, 0x2a, 0x16, 0x5b, 0xb1, 0x34, 0x6e, 0x44, 0xc3, 0x57, 0x27, 0x56, 0xc3, 0x8d, 0x52, 0xf8, 0xd3, 0x07, 0xc0, 0x4e, 0x1e, 0xfe, 0xe5, 0x84, 0x78, 0x22, 0x31, 0x7a, 0xb4, 0x69, 0x34, 0x5b, 0x86, 0xc7, 0xb8, 0x5b, 0x54, 0x15, 0x41, 0xc9, 0x92, 0xab, 0xea, 0x98, 0xd1, 0x08, 0xa7, 0xdf, 0xc7, 0x09, 0x1c, 0x30, 0xc6, 0x68, 0x5a, 0xf0, 0xe3, 0x3d, 0x04, 0x66, 0xac, 0xe4, 0xcc, 0xcc, 0xb3, 0x4e, 0x5b, 0x26, 0x6d, 0x3d, 0x6b, 0x94, 0x7b, 0xc7, 0xc0, 0xae, 0x34, 0xd5, 0xe2, 0x64 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.6", - /* Message */ - 49, - { 0x61, 0x7e, 0xa9, 0xe4, 0xa5, 0x6c, 0x4e, 0xc1, 0xd3, 0xd7, 0xfd, 0x7f, 0x32, 0x81, 0xae, 0x7f, 0xa9, 0x32, 0xb2, 0xa0, 0xa6, 0xcf, 0x55, 0xeb, 0x60, 0x48, 0x14, 0x56, 0x81, 0xb3, 0x58, 0x8e, 0xdf, 0x70, 0x12, 0x69, 0xf8, 0x9f, 0xe6, 0x4a, 0xa1, 0x4a, 0xd8, 0xdf, 0x0d, 0x46, 0x79, 0x61, 0x31 } -, - /* Seed */ - 77, - { 0x64, 0xd7, 0xeb, 0xd0, 0x48, 0x50, 0xeb, 0x6f, 0x7a, 0xe1, 0xaf, 0x48, 0x12, 0x0a, 0x80, 0x13, 0x0f, 0x32, 0xed, 0xb5, 0x03, 0x69, 0x64, 0x0b, 0x22, 0x2b, 0x8d, 0x63, 0xef, 0xf6, 0x57, 0x12, 0x70, 0xdc, 0xab, 0x31, 0x76, 0xd0, 0x24, 0x72, 0x28, 0xdc, 0xd1, 0xc3, 0xf3, 0xcf, 0xd5, 0x13, 0x31, 0xb7, 0x56, 0xa8, 0x65, 0x2a, 0x14, 0xdd, 0xaa, 0xb9, 0x93, 0x96, 0xb9, 0x19, 0x9a, 0x73, 0x87, 0x50, 0xd6, 0x9e, 0xfc, 0xd3, 0x77, 0xf1, 0x84, 0xae, 0x19, 0xb5, 0xa9 } -, - /* Encryption */ - 129, - { 0x02, 0xdf, 0xe7, 0x29, 0x58, 0x59, 0x58, 0x81, 0xd8, 0x07, 0x56, 0x6d, 0x3e, 0x36, 0x07, 0xc0, 0x22, 0xe4, 0x61, 0xfe, 0x1d, 0xbe, 0xd3, 0xcc, 0x6d, 0x63, 0xde, 0xdc, 0xb7, 0x19, 0x0f, 0x06, 0xc7, 0xd2, 0x4b, 0x4f, 0x03, 0x26, 0x4c, 0xaf, 0xbb, 0x74, 0x82, 0xec, 0x28, 0xb9, 0xba, 0x48, 0x9d, 0x03, 0x11, 0x5a, 0xf5, 0x8f, 0xde, 0x47, 0x5e, 0xda, 0x58, 0xbf, 0x01, 0x55, 0xcd, 0xf1, 0xaf, 0x16, 0xdf, 0x20, 0x6b, 0xcd, 0x12, 0x57, 0x04, 0xc3, 0xe3, 0x15, 0xad, 0x3d, 0x95, 0x44, 0xb9, 0xe2, 0xc2, 0xfe, 0xa8, 0x10, 0xce, 0x48, 0x45, 0x56, 0xd2, 0x9e, 0x07, 0xad, 0xbf, 0x0f, 0xf4, 0x61, 0xcc, 0xbc, 0xf6, 0x62, 0xbd, 0x74, 0x95, 0x9a, 0x43, 0x7d, 0x4c, 0x80, 0x11, 0xce, 0xad, 0xa5, 0x50, 0x2a, 0xf7, 0x67, 0x6d, 0x9a, 0x15, 0x21, 0xe3, 0x18, 0x9d, 0xaf, 0xde, 0x00, 0xdd } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.7", - /* Message */ - 60, - { 0xc9, 0x1f, 0x2c, 0x98, 0xc7, 0x5b, 0x2f, 0xd4, 0xcd, 0x8d, 0x5c, 0x7f, 0xf2, 0xe7, 0x69, 0xb1, 0x2f, 0x28, 0xf3, 0x13, 0xfb, 0xac, 0xb5, 0x1b, 0x5e, 0x50, 0x14, 0xdf, 0xce, 0x9d, 0x63, 0x5e, 0x7c, 0x6b, 0x2d, 0x88, 0xaf, 0x5e, 0xac, 0x30, 0xd1, 0x62, 0xb8, 0xdd, 0xc2, 0x2e, 0xd8, 0xbc, 0x7b, 0xee, 0x50, 0x6b, 0xfb, 0xf3, 0x1e, 0x51, 0xba, 0x48, 0xf4, 0x26 } -, - /* Seed */ - 66, - { 0x6c, 0x44, 0x59, 0x61, 0xf8, 0x6f, 0xa2, 0x98, 0xd7, 0x64, 0x7c, 0x22, 0x24, 0xd9, 0x5b, 0xc1, 0x27, 0xda, 0xfc, 0xbd, 0x5b, 0x90, 0x21, 0xec, 0x7e, 0x9e, 0xbd, 0xe9, 0x6f, 0x5d, 0x7a, 0x76, 0xf4, 0xee, 0xd0, 0xac, 0x92, 0x2a, 0x6e, 0x93, 0xeb, 0x3b, 0x4c, 0x3c, 0x43, 0xf8, 0xa5, 0x7e, 0x18, 0x29, 0x4e, 0x1a, 0x51, 0x73, 0xb0, 0xf7, 0xe2, 0xdd, 0x2c, 0x4e, 0x57, 0x7a, 0x4b, 0xec, 0xe7, 0x14 } -, - /* Encryption */ - 129, - { 0x03, 0xa8, 0x85, 0xaa, 0xf7, 0xb7, 0xd9, 0x4f, 0xda, 0xe3, 0x4b, 0x41, 0xc3, 0x74, 0x17, 0x66, 0xa4, 0x09, 0xc1, 0xee, 0x02, 0x32, 0xb1, 0xc5, 0x3e, 0x5f, 0x6c, 0x5a, 0xa5, 0x4a, 0xc1, 0xef, 0x0e, 0x5b, 0xf9, 0x9b, 0x9f, 0x7d, 0xf3, 0xe9, 0xb0, 0x0c, 0xed, 0x94, 0x76, 0xee, 0x1a, 0xdb, 0x8f, 0xc5, 0x71, 0x68, 0x91, 0xf5, 0x4d, 0x45, 0xce, 0xda, 0x70, 0xb9, 0xdb, 0x3b, 0x8f, 0xad, 0x25, 0xe7, 0x77, 0x95, 0xaf, 0x14, 0x81, 0xec, 0x49, 0x21, 0x84, 0xc4, 0x9e, 0x9d, 0xf8, 0x23, 0xee, 0x64, 0x66, 0x41, 0x0f, 0x65, 0x01, 0x3c, 0xe3, 0xc5, 0x79, 0x16, 0x63, 0x5d, 0xa8, 0x30, 0x67, 0x7f, 0x93, 0x2b, 0xda, 0xba, 0xb5, 0xc0, 0xa2, 0x08, 0xd7, 0xf4, 0x36, 0x7a, 0x7e, 0xab, 0xa7, 0x5b, 0x04, 0x5d, 0x25, 0xac, 0xfd, 0xb4, 0x15, 0xfe, 0xe0, 0x52, 0x19, 0xa5, 0x84, 0x23, 0x7a } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.8", - /* Message */ - 51, - { 0x7b, 0x1c, 0x31, 0x51, 0xa3, 0x8d, 0x32, 0xec, 0x7b, 0x82, 0xc4, 0x8c, 0x00, 0x0a, 0xa4, 0x81, 0xde, 0x41, 0x8e, 0x80, 0x3b, 0x67, 0x3d, 0x2e, 0x9a, 0x0f, 0xc3, 0xd5, 0xe9, 0x74, 0xad, 0xcd, 0xce, 0xbd, 0x3c, 0x2a, 0x8f, 0x41, 0x14, 0x21, 0x18, 0xa5, 0x5e, 0x87, 0xd0, 0x4b, 0xba, 0xd5, 0xb3, 0x64, 0x25 } -, - /* Seed */ - 75, - { 0xb0, 0xf5, 0xbe, 0x9b, 0x3f, 0x23, 0x7c, 0xc5, 0xaf, 0xca, 0x5a, 0x99, 0xfc, 0xcb, 0x77, 0xb6, 0xef, 0xd8, 0x68, 0x94, 0x7f, 0x98, 0x55, 0x4f, 0xbe, 0xce, 0xac, 0xfa, 0x88, 0x4c, 0x15, 0x15, 0x39, 0xd7, 0xcf, 0x42, 0x3e, 0x72, 0x60, 0x31, 0xbf, 0xeb, 0x8d, 0xd2, 0xd4, 0xf3, 0x01, 0xda, 0x6b, 0xdf, 0xca, 0xd6, 0xe5, 0x81, 0x65, 0x82, 0xad, 0xdc, 0xe1, 0x0d, 0x85, 0xd5, 0xee, 0x1d, 0x04, 0x46, 0xf3, 0x73, 0xb9, 0x5e, 0xe1, 0x60, 0xbc, 0xf0, 0x35 } -, - /* Encryption */ - 129, - { 0x06, 0x6c, 0x30, 0x09, 0xdc, 0x6c, 0xba, 0xc7, 0xb8, 0xbd, 0x51, 0x41, 0xc5, 0x5c, 0xf8, 0x6a, 0x3d, 0x79, 0x69, 0xd5, 0x85, 0x45, 0x2e, 0x3a, 0x66, 0x54, 0x0f, 0x94, 0x02, 0xdb, 0xa2, 0x15, 0xe3, 0xfb, 0x3a, 0x27, 0x7f, 0x0d, 0x33, 0x96, 0xc8, 0xc0, 0x08, 0xaf, 0x19, 0x91, 0x3e, 0x3d, 0x91, 0xe4, 0x0f, 0x86, 0x76, 0x06, 0xb5, 0xbf, 0x54, 0x30, 0x4c, 0x04, 0x71, 0xda, 0xdd, 0x64, 0x04, 0xb6, 0x7a, 0x48, 0x57, 0xbf, 0x52, 0x24, 0x6c, 0x0d, 0x60, 0x18, 0x23, 0xdd, 0x03, 0x80, 0xc6, 0x60, 0x9d, 0xac, 0xb9, 0x2d, 0xb6, 0x02, 0xe5, 0x57, 0x64, 0xae, 0x46, 0x50, 0xdf, 0x1a, 0xdb, 0xb4, 0xb9, 0x5f, 0xa5, 0xaf, 0x4b, 0xcd, 0x11, 0x21, 0xf1, 0x3c, 0x0a, 0x73, 0x23, 0xad, 0xa8, 0xc6, 0x0d, 0xe3, 0xd0, 0x81, 0x72, 0x9d, 0x19, 0x7f, 0x9c, 0xf8, 0xe2, 0x7c, 0xde, 0x80, 0xb1 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.9", - /* Message */ - 58, - { 0xb2, 0x93, 0xc6, 0xf6, 0xd0, 0x5d, 0x1f, 0x38, 0xb5, 0x61, 0xea, 0x3d, 0x0d, 0x0a, 0xd6, 0xa2, 0xaf, 0x83, 0x09, 0xbb, 0x9a, 0xde, 0xfa, 0x77, 0x8f, 0xd6, 0xbb, 0x9f, 0xff, 0x3e, 0x01, 0x0c, 0x40, 0x4c, 0x53, 0x39, 0x97, 0xcc, 0xfe, 0xd7, 0xe1, 0x91, 0x7a, 0x66, 0x92, 0x61, 0xcf, 0xcc, 0xa4, 0xe3, 0x70, 0x29, 0x99, 0x1d, 0x2d, 0xe9, 0xb2, 0x99 } -, - /* Seed */ - 68, - { 0x87, 0xbd, 0x2f, 0x6b, 0xb4, 0x82, 0x45, 0x59, 0x1d, 0x65, 0xf0, 0x23, 0xa6, 0x5b, 0x63, 0xbb, 0xba, 0x84, 0x19, 0x79, 0x2c, 0x01, 0x41, 0x09, 0x2b, 0x1d, 0xb1, 0xbe, 0x53, 0xe8, 0xc9, 0xb4, 0xdf, 0x95, 0xf0, 0xad, 0x55, 0xb9, 0x6e, 0x5e, 0x57, 0x61, 0x5d, 0x21, 0x4b, 0x49, 0x77, 0x87, 0x0a, 0x27, 0x2f, 0x72, 0x31, 0x66, 0xc6, 0x20, 0x45, 0x76, 0x5e, 0x6b, 0x4a, 0x73, 0xa7, 0xc9, 0xeb, 0xe1, 0x1d, 0x24 } -, - /* Encryption */ - 129, - { 0x03, 0x10, 0x4e, 0xc6, 0xc4, 0xab, 0x9d, 0xac, 0xae, 0x42, 0x7f, 0xb1, 0x06, 0x99, 0xbc, 0xae, 0x00, 0x3d, 0xa5, 0x6f, 0x6d, 0x07, 0x50, 0x95, 0x87, 0x14, 0x5b, 0x73, 0x3e, 0xdb, 0x53, 0x23, 0x9a, 0x6f, 0x42, 0x22, 0x86, 0x83, 0x9c, 0xac, 0x06, 0x4a, 0xdf, 0xee, 0xe5, 0xdc, 0x89, 0x78, 0x0c, 0xdd, 0xad, 0xcc, 0x80, 0x72, 0x19, 0xd6, 0xa9, 0x7b, 0x85, 0xc1, 0x3f, 0x27, 0x93, 0x7d, 0x70, 0x32, 0x7f, 0x82, 0xcc, 0x36, 0xa5, 0xda, 0x8e, 0x45, 0x63, 0x77, 0xfc, 0xa2, 0x3a, 0xee, 0x51, 0x4e, 0x04, 0x4a, 0xbf, 0x1f, 0x66, 0xc3, 0xe7, 0xbd, 0xeb, 0xc2, 0xcf, 0xf6, 0x28, 0xbd, 0x52, 0x4a, 0x09, 0x66, 0xe2, 0x63, 0x8d, 0x28, 0x33, 0xbf, 0xa3, 0x43, 0xeb, 0xc7, 0x41, 0xf7, 0x6b, 0x5b, 0x70, 0xa1, 0x13, 0x6f, 0x4a, 0xbc, 0x60, 0x28, 0x64, 0xa2, 0xad, 0x43, 0xa7, 0x91, 0xbd } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.10", - /* Message */ - 5, - { 0x08, 0x38, 0xf4, 0xa5, 0x92 } -, - /* Seed */ - 121, - { 0x89, 0xc5, 0x89, 0x8c, 0x6c, 0x3d, 0xc6, 0xcb, 0xdb, 0x1a, 0xcb, 0x28, 0x05, 0xdf, 0x53, 0x98, 0xf0, 0xb3, 0x35, 0x8a, 0x18, 0xe5, 0xe6, 0x3c, 0x14, 0xd2, 0x0c, 0x98, 0xd2, 0x1d, 0x9f, 0xd8, 0xb2, 0xec, 0xc9, 0xa0, 0xe8, 0x3d, 0xaf, 0x0c, 0x06, 0x92, 0x68, 0xbb, 0xe8, 0x6f, 0xee, 0xa5, 0x1c, 0x93, 0x79, 0x1b, 0x68, 0xe5, 0xd9, 0x3b, 0x74, 0x5f, 0xea, 0xf6, 0xad, 0xc4, 0x2b, 0x83, 0xc3, 0x09, 0xc9, 0xcd, 0x3d, 0xfe, 0x1c, 0x06, 0x15, 0x3a, 0xb8, 0x80, 0x85, 0x56, 0x18, 0x98, 0x90, 0xbe, 0x05, 0x3a, 0x92, 0x54, 0x88, 0xd0, 0x29, 0xfe, 0x50, 0x40, 0xe3, 0xe7, 0xd5, 0xd5, 0x31, 0xb3, 0x2e, 0xb9, 0xd2, 0xf4, 0xee, 0xa2, 0x21, 0x11, 0xb3, 0x8a, 0x65, 0x53, 0xf0, 0x0e, 0xdd, 0x23, 0x65, 0x57, 0x5b, 0xb9, 0x49, 0xf3, 0x63 } -, - /* Encryption */ - 129, - { 0x01, 0x4f, 0x27, 0x97, 0xdd, 0xe8, 0xd4, 0x60, 0x18, 0xff, 0x23, 0xd8, 0x9b, 0xe2, 0xe3, 0xae, 0x04, 0x6e, 0xed, 0x31, 0x97, 0xc8, 0x79, 0xc6, 0x0e, 0x26, 0xf3, 0xd2, 0x40, 0x08, 0x66, 0xeb, 0x50, 0xd7, 0xb4, 0x5f, 0x6b, 0x01, 0xae, 0x9c, 0xa0, 0x06, 0x84, 0x7e, 0xfb, 0xe9, 0xab, 0xcc, 0x9b, 0xc3, 0xe3, 0x56, 0x90, 0x07, 0x2b, 0x68, 0xdb, 0x9e, 0xcd, 0x92, 0x6d, 0x94, 0x5f, 0x78, 0x7b, 0x27, 0xc3, 0x75, 0x3b, 0xf9, 0x6b, 0x2d, 0x49, 0x98, 0x30, 0x84, 0x14, 0x2c, 0x42, 0xa1, 0x26, 0x1a, 0xff, 0x7b, 0x17, 0xff, 0x4b, 0x20, 0xde, 0x9b, 0xff, 0xa5, 0x86, 0x24, 0xab, 0x37, 0x1d, 0x4c, 0xe2, 0xf9, 0x64, 0x69, 0xa8, 0xe1, 0x03, 0x8d, 0x57, 0x20, 0xb8, 0x1c, 0xf0, 0x42, 0xdc, 0x78, 0xbf, 0xda, 0x9a, 0x3c, 0xcb, 0x61, 0x60, 0x81, 0x2d, 0xde, 0xa1, 0x58, 0xbd, 0x2f, 0x5c } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.11", - /* Message */ - 60, - { 0x12, 0x38, 0x0c, 0x5e, 0x80, 0xbb, 0x95, 0xbb, 0xc8, 0x85, 0x73, 0x57, 0xfe, 0xfd, 0x17, 0xbf, 0x9e, 0x50, 0x96, 0x27, 0xd2, 0x8c, 0xdf, 0xcd, 0x12, 0xbb, 0x13, 0x16, 0x61, 0xb3, 0x42, 0xdf, 0xa6, 0xca, 0x67, 0x2e, 0x13, 0xa8, 0x85, 0x1f, 0xce, 0x19, 0xb1, 0xa8, 0xca, 0xf0, 0xe3, 0x3c, 0xd6, 0xef, 0x53, 0x8a, 0x05, 0xfa, 0x54, 0x26, 0x9a, 0x13, 0x78, 0xe7 } -, - /* Seed */ - 66, - { 0x88, 0x03, 0x31, 0xeb, 0xe9, 0x1a, 0xb6, 0xce, 0x16, 0x84, 0xd9, 0xaf, 0x5d, 0x97, 0x7e, 0xb4, 0x26, 0xca, 0x71, 0x56, 0xe0, 0xb6, 0xf4, 0x33, 0x6c, 0x6e, 0x09, 0x33, 0xd6, 0xfa, 0x48, 0x78, 0x2c, 0x0a, 0xc9, 0x69, 0xf3, 0xdd, 0xe6, 0x1d, 0x8f, 0xd7, 0x4c, 0x47, 0xfe, 0x9e, 0x30, 0x61, 0x71, 0x0d, 0x24, 0x5b, 0x1d, 0x38, 0x11, 0x04, 0x28, 0x60, 0xc1, 0xf4, 0x8d, 0x2b, 0x8f, 0xfd, 0x80, 0x9e } -, - /* Encryption */ - 129, - { 0x04, 0x6c, 0x54, 0x5f, 0xf4, 0x96, 0xc2, 0x1f, 0x69, 0x01, 0x27, 0x24, 0x54, 0x18, 0xcc, 0x5f, 0xb1, 0x8f, 0x09, 0x10, 0x2e, 0x7a, 0xca, 0x87, 0xe2, 0x6e, 0x20, 0x82, 0xfc, 0x16, 0xf6, 0x2f, 0xe9, 0xf4, 0x2a, 0x72, 0x22, 0x71, 0xa7, 0x9e, 0xae, 0xe9, 0x62, 0x5a, 0x7e, 0x63, 0x2c, 0x19, 0x36, 0x40, 0x4c, 0xec, 0x62, 0x11, 0xd8, 0x23, 0x86, 0x3b, 0xa0, 0x2c, 0x6b, 0x0a, 0x83, 0x19, 0x58, 0xb4, 0xed, 0x8f, 0xc6, 0x25, 0xa2, 0xe5, 0x2a, 0x05, 0x4f, 0x8f, 0x18, 0x1f, 0x13, 0x0f, 0x8b, 0xc4, 0xb1, 0xdf, 0xbd, 0x44, 0xb7, 0x0a, 0x35, 0xb3, 0x5e, 0x9c, 0x7f, 0x4a, 0xc5, 0x5e, 0xe5, 0xe2, 0xcb, 0x06, 0x8b, 0x75, 0x86, 0x39, 0xb2, 0xcd, 0x64, 0x3d, 0xbf, 0xa8, 0x2e, 0x2d, 0x97, 0x20, 0xe4, 0x89, 0xf5, 0xc8, 0x21, 0xd8, 0xeb, 0xdc, 0x13, 0x68, 0xa9, 0xd3, 0x46, 0x8a, 0x37 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.12", - /* Message */ - 40, - { 0xee, 0xe1, 0xe4, 0x5d, 0x18, 0xb1, 0x47, 0xc2, 0x69, 0xa6, 0x0a, 0x9c, 0x64, 0x20, 0x18, 0xed, 0x6c, 0xd1, 0x15, 0x7c, 0xd0, 0xce, 0x2b, 0x29, 0x68, 0xdf, 0xa4, 0xb4, 0x97, 0xfc, 0x40, 0xb2, 0x24, 0xbd, 0x86, 0x1e, 0x25, 0x35, 0x12, 0x2b } -, - /* Seed */ - 86, - { 0x5c, 0x51, 0x3e, 0x51, 0x44, 0x52, 0xb1, 0x4a, 0xee, 0x33, 0xb6, 0x17, 0x60, 0xb8, 0x58, 0xc5, 0x35, 0x7c, 0x7d, 0x7f, 0x20, 0xe4, 0xa3, 0x7c, 0x7e, 0xef, 0xe4, 0x19, 0xca, 0xe3, 0xfd, 0x16, 0xf9, 0xd8, 0x3e, 0x5e, 0xcd, 0xe1, 0x9e, 0xe6, 0x32, 0x85, 0xdd, 0xce, 0x66, 0x80, 0xee, 0x94, 0x64, 0xfe, 0x83, 0x75, 0x6e, 0x90, 0x31, 0xd6, 0x37, 0x9e, 0x6a, 0x6b, 0x38, 0x4c, 0xe2, 0x77, 0xbc, 0x64, 0x2c, 0xed, 0x83, 0xb2, 0x9c, 0xf7, 0x4b, 0x72, 0xce, 0xff, 0xf5, 0x30, 0x71, 0x04, 0xe1, 0x83, 0xde, 0x2c, 0xe6, 0xa1 } -, - /* Encryption */ - 129, - { 0x03, 0xa8, 0x64, 0x83, 0xcb, 0xb7, 0x2c, 0x15, 0xf5, 0xa6, 0x93, 0x2b, 0x01, 0x2f, 0x40, 0xc4, 0xb1, 0x73, 0x33, 0x3b, 0x26, 0x86, 0xf4, 0x98, 0x4b, 0xa6, 0x6e, 0x24, 0xc7, 0xcf, 0x44, 0x41, 0x23, 0xba, 0x2e, 0xa6, 0x66, 0xa1, 0x75, 0x5d, 0x09, 0x35, 0x7b, 0xee, 0xa4, 0x37, 0x9c, 0xe3, 0xcd, 0xb0, 0xa7, 0x7a, 0x6e, 0xe3, 0xb7, 0xca, 0x60, 0xdb, 0x68, 0x24, 0x17, 0xf7, 0x16, 0x3d, 0x7d, 0x3a, 0xc7, 0x35, 0x28, 0x11, 0xbb, 0x94, 0xc5, 0xb7, 0x71, 0xf3, 0xd3, 0xfd, 0xa7, 0x73, 0xe5, 0xce, 0xbc, 0x8b, 0xc6, 0x60, 0x11, 0x55, 0xb3, 0xf4, 0xe4, 0xb4, 0xca, 0x85, 0xd9, 0xba, 0xb8, 0xec, 0x25, 0x8c, 0xec, 0xff, 0x44, 0x33, 0xc9, 0x2e, 0x8f, 0x86, 0x3d, 0x96, 0xfc, 0xc7, 0x94, 0x29, 0x49, 0x8a, 0x9e, 0x17, 0x90, 0x33, 0x0b, 0xc4, 0x87, 0xc0, 0x10, 0xd7, 0x99, 0x24, 0x5d } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.13", - /* Message */ - 28, - { 0x55, 0x09, 0xa5, 0xc1, 0xac, 0x54, 0x89, 0xdc, 0xb7, 0x65, 0xf3, 0x7c, 0xeb, 0xbe, 0x7d, 0x81, 0xcf, 0x02, 0x76, 0xb1, 0xf2, 0xcf, 0xf9, 0x5d, 0x27, 0x4b, 0xbd, 0x04 } -, - /* Seed */ - 98, - { 0x76, 0xe8, 0x1a, 0x51, 0x37, 0x1f, 0xb5, 0x07, 0x41, 0x14, 0x1d, 0xcb, 0x31, 0xd5, 0x1d, 0x1c, 0x46, 0x1f, 0xcc, 0x02, 0x6a, 0xea, 0x85, 0x20, 0x15, 0xd4, 0x68, 0x74, 0x0b, 0x45, 0x23, 0x40, 0x5f, 0x95, 0xba, 0x87, 0x9b, 0x08, 0x69, 0xbf, 0x03, 0x1a, 0x60, 0x65, 0x4f, 0xc4, 0xe5, 0x68, 0xc1, 0x95, 0x7c, 0xe4, 0xe4, 0x2a, 0x35, 0x0a, 0x95, 0xbf, 0x8c, 0xb2, 0xa8, 0xb5, 0xfd, 0xe6, 0xdc, 0xfd, 0x25, 0x05, 0xc0, 0x37, 0xa2, 0x9e, 0xde, 0x68, 0x9c, 0x53, 0xd8, 0x32, 0x19, 0xe7, 0x3e, 0x64, 0x08, 0x17, 0xbf, 0x8a, 0xfc, 0x9a, 0xb0, 0x04, 0xec, 0xae, 0xc8, 0x43, 0xe4, 0xfe, 0x4e, 0x38 } -, - /* Encryption */ - 129, - { 0x02, 0x55, 0xde, 0x28, 0x0b, 0x71, 0xaf, 0xef, 0xaf, 0xa2, 0x0f, 0x24, 0x1e, 0x08, 0x1b, 0x7e, 0xc6, 0xc1, 0x62, 0xdd, 0xda, 0x18, 0x84, 0xfa, 0x9f, 0x82, 0x5c, 0x4c, 0xe7, 0x63, 0x6e, 0xfb, 0xc1, 0x1b, 0x84, 0xa6, 0xeb, 0xea, 0x35, 0x89, 0x25, 0x71, 0xac, 0x9e, 0x6b, 0x1a, 0xd8, 0x47, 0x3f, 0xa5, 0x73, 0xc8, 0x83, 0xc9, 0xf2, 0x15, 0xa1, 0x95, 0x80, 0xc3, 0xea, 0x30, 0x2f, 0x88, 0xf4, 0x4f, 0x48, 0xe4, 0xd9, 0x5c, 0x34, 0x40, 0xd4, 0x93, 0x1f, 0x17, 0x66, 0xa1, 0xfe, 0x7e, 0x79, 0x0e, 0x5d, 0x38, 0xe8, 0x5d, 0x1f, 0x63, 0x85, 0x0a, 0x3c, 0x70, 0x7a, 0xd8, 0x97, 0x7b, 0x88, 0xc3, 0x8c, 0xb9, 0xed, 0x98, 0x34, 0x5c, 0xd3, 0x50, 0xc3, 0xdd, 0x45, 0x30, 0x9f, 0xc8, 0x1c, 0xb4, 0x62, 0x76, 0xe4, 0xad, 0x64, 0x7f, 0xa8, 0x4c, 0x14, 0x12, 0x5e, 0xfd, 0x67, 0xd8, 0xba } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.14", - /* Message */ - 58, - { 0x02, 0x53, 0x81, 0xa5, 0x5c, 0x8e, 0x48, 0x7d, 0x7f, 0x4f, 0xf7, 0xc3, 0x6c, 0xfb, 0x37, 0x50, 0x07, 0xd1, 0x9f, 0x93, 0x71, 0x13, 0x6e, 0x2b, 0x3d, 0xf4, 0x42, 0x5e, 0xee, 0xee, 0x5d, 0x79, 0xc3, 0x52, 0x61, 0xfb, 0xb4, 0xea, 0x68, 0xbd, 0x91, 0xe8, 0xed, 0xab, 0xa2, 0x32, 0x9e, 0x29, 0x31, 0x53, 0x06, 0xc7, 0xd7, 0x18, 0x33, 0x15, 0x5b, 0x88 } -, - /* Seed */ - 68, - { 0xaa, 0x31, 0x0f, 0x62, 0xda, 0x90, 0xda, 0x4a, 0x20, 0x28, 0xb3, 0x81, 0x39, 0x9c, 0xb7, 0xe0, 0xed, 0x3b, 0xb5, 0x10, 0x57, 0x5c, 0x9b, 0xd0, 0xf6, 0x38, 0x21, 0x5b, 0xaf, 0x78, 0x08, 0xe3, 0x24, 0x5e, 0xaf, 0x38, 0xb7, 0x6e, 0x26, 0x52, 0x29, 0x0b, 0x7c, 0xc6, 0x20, 0x90, 0x7c, 0xda, 0x0c, 0xb7, 0xaf, 0x07, 0x3c, 0x12, 0x2f, 0xf8, 0x3d, 0xaa, 0xe1, 0x98, 0x6b, 0x43, 0xec, 0x1a, 0x14, 0x82, 0xdb, 0xa6 } -, - /* Encryption */ - 129, - { 0x04, 0x9b, 0xfa, 0xc6, 0x41, 0x0b, 0x77, 0x80, 0x39, 0x7a, 0x49, 0xfb, 0x88, 0x93, 0xb2, 0x4d, 0x90, 0x3b, 0x36, 0x00, 0xf3, 0x3c, 0x78, 0x2c, 0x14, 0x75, 0xb5, 0xd2, 0x4b, 0x4f, 0x4e, 0x88, 0xfd, 0x11, 0x24, 0xef, 0x06, 0x45, 0xf3, 0xd3, 0x91, 0xed, 0x31, 0x00, 0x6d, 0xd1, 0xb7, 0xc2, 0x64, 0x12, 0x8d, 0x0d, 0xb9, 0xaa, 0x0d, 0x65, 0xa0, 0x9f, 0xfb, 0xe2, 0x9a, 0x94, 0xcc, 0xa3, 0x58, 0xda, 0x64, 0xbd, 0x1b, 0x72, 0xff, 0x55, 0x88, 0x88, 0x08, 0x10, 0x5b, 0xe0, 0x91, 0xae, 0x23, 0xea, 0x3f, 0x34, 0x75, 0x05, 0x17, 0x9e, 0xcc, 0xb2, 0x41, 0x0d, 0x89, 0xde, 0xcb, 0x62, 0x33, 0x0f, 0x36, 0xc7, 0x44, 0x26, 0x2e, 0xb2, 0xb0, 0x78, 0xb4, 0x25, 0x4b, 0xcd, 0xce, 0xce, 0x21, 0x1c, 0xf0, 0x57, 0x4a, 0x24, 0x68, 0xe2, 0xa1, 0xe0, 0x18, 0xbc, 0x31, 0xf5, 0x02, 0x22, 0x35 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.15", - /* Message */ - 38, - { 0x07, 0x3c, 0x43, 0x67, 0xba, 0xfd, 0x48, 0x10, 0xd7, 0x70, 0x44, 0x60, 0xc7, 0x83, 0xd3, 0x50, 0xf7, 0xcc, 0xd0, 0x99, 0x47, 0x2f, 0x79, 0xf7, 0xfd, 0xf2, 0x3e, 0xf0, 0xcf, 0xaa, 0xcc, 0xab, 0x95, 0x71, 0xdf, 0x53, 0xfd, 0xe4 } -, - /* Seed */ - 88, - { 0xf9, 0x5a, 0x39, 0x96, 0xde, 0xf1, 0xca, 0xfc, 0x1a, 0x4a, 0x0b, 0x34, 0x14, 0x6b, 0x73, 0xde, 0x6b, 0x5a, 0x92, 0xcb, 0x81, 0x2e, 0x20, 0xb2, 0x0c, 0x12, 0x2a, 0x25, 0x1e, 0x6b, 0x22, 0xe0, 0x46, 0x9c, 0x98, 0xdb, 0x12, 0x8d, 0x43, 0xce, 0xfc, 0xdd, 0x80, 0xc7, 0xff, 0x36, 0x99, 0x80, 0x16, 0xa8, 0x92, 0xa8, 0xb6, 0x34, 0xb3, 0x6b, 0x9b, 0x0c, 0xe8, 0x7e, 0xa8, 0x0b, 0x5d, 0xd9, 0xfd, 0x7a, 0x08, 0x29, 0x14, 0xe7, 0x3b, 0x83, 0xa3, 0x84, 0x1d, 0xe5, 0x1b, 0x71, 0xb1, 0xa6, 0xb7, 0xef, 0x7d, 0xe4, 0xe4, 0xb8, 0x8e, 0xdc } -, - /* Encryption */ - 129, - { 0x02, 0xde, 0xe4, 0x8b, 0x0f, 0x99, 0x53, 0xee, 0x12, 0xc7, 0x18, 0xb3, 0x03, 0xb0, 0xc8, 0x9d, 0x61, 0x50, 0xeb, 0xbe, 0x83, 0xad, 0x62, 0x4e, 0x11, 0x7e, 0x3f, 0x27, 0x04, 0xa0, 0xb1, 0x7a, 0x2e, 0xbe, 0xe8, 0x38, 0x52, 0x56, 0xf0, 0xe6, 0x42, 0x80, 0xfb, 0x06, 0xc3, 0xb1, 0x46, 0xc0, 0x99, 0xaf, 0x23, 0xa9, 0xf2, 0x47, 0x93, 0x39, 0x37, 0x81, 0xa5, 0x55, 0xac, 0x4e, 0xa2, 0xd8, 0x8d, 0x78, 0x5d, 0x8c, 0xdb, 0x6e, 0x7a, 0x2f, 0x89, 0x52, 0xd2, 0x50, 0x3c, 0xcf, 0x90, 0x1f, 0x12, 0x39, 0xf6, 0xf7, 0xb1, 0xac, 0xd4, 0x41, 0x21, 0xc3, 0x65, 0xfd, 0xae, 0x37, 0x07, 0x46, 0xde, 0x45, 0x26, 0xe7, 0xc6, 0x56, 0x0f, 0x87, 0x54, 0x6e, 0xd5, 0x77, 0xcf, 0x97, 0x98, 0xbe, 0xf4, 0x7e, 0x49, 0x20, 0x65, 0x50, 0x9c, 0x49, 0x21, 0x2d, 0x37, 0x0d, 0xea, 0x05, 0x22, 0xd7, 0x94 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.16", - /* Message */ - 42, - { 0xba, 0xb2, 0x0b, 0x9a, 0x6a, 0x53, 0x2e, 0x6f, 0x8a, 0xf0, 0x78, 0xb3, 0xa1, 0x85, 0xe0, 0xaa, 0x86, 0xe6, 0x16, 0x81, 0xbd, 0x1b, 0xd7, 0x75, 0x04, 0x4a, 0x2c, 0x95, 0x8d, 0x61, 0xed, 0xc2, 0x51, 0x60, 0x7c, 0xd9, 0xf3, 0x11, 0x48, 0xf5, 0xa9, 0x11 } -, - /* Seed */ - 84, - { 0x37, 0x6c, 0xf0, 0x18, 0x14, 0x3b, 0x0c, 0xe6, 0x70, 0x21, 0x68, 0x4c, 0xbb, 0x36, 0xe4, 0xaf, 0xe2, 0xff, 0x9d, 0xe1, 0x8b, 0xc7, 0xf0, 0x2b, 0xed, 0x86, 0x3b, 0xf1, 0xbc, 0x34, 0x66, 0x31, 0x9e, 0x72, 0x0f, 0xee, 0xf1, 0x9d, 0x38, 0xe2, 0x6b, 0xca, 0x7e, 0x99, 0xd4, 0x09, 0x6a, 0x9e, 0xed, 0x8d, 0xe5, 0xbf, 0x20, 0x3f, 0xc7, 0xdd, 0x9c, 0x84, 0x85, 0xdf, 0xa5, 0xb6, 0x90, 0x75, 0xef, 0x0c, 0xc0, 0x37, 0xfc, 0xdf, 0xb5, 0x5a, 0x0c, 0x92, 0x8c, 0xda, 0xc0, 0xcb, 0xa0, 0x49, 0x7e, 0xb6, 0x0e, 0x3f } -, - /* Encryption */ - 129, - { 0x04, 0x8d, 0xd7, 0x50, 0x99, 0x18, 0x43, 0x0e, 0xda, 0xbc, 0x01, 0x46, 0x8d, 0xb7, 0xe2, 0x87, 0xa7, 0x38, 0x1e, 0x42, 0x8b, 0x5f, 0xc9, 0x3c, 0xe8, 0xde, 0xfd, 0x7f, 0x49, 0xd5, 0xe9, 0x34, 0x15, 0x30, 0x43, 0xd1, 0x37, 0xac, 0xa9, 0xf7, 0xb9, 0x75, 0x77, 0xb7, 0x0d, 0xc0, 0x16, 0x80, 0xf2, 0xdb, 0xa9, 0x1e, 0x93, 0x2b, 0x53, 0xac, 0xf2, 0xa7, 0xf3, 0x34, 0x8f, 0x56, 0x54, 0xb2, 0xcf, 0xcf, 0xe7, 0x5d, 0x48, 0xf0, 0xfa, 0x45, 0x00, 0xd1, 0xba, 0x5d, 0x29, 0x24, 0x7f, 0xf1, 0x42, 0xd6, 0xb9, 0x80, 0xe1, 0x1b, 0x9d, 0xba, 0x68, 0x83, 0xf7, 0x3b, 0xb8, 0x55, 0xa2, 0x4c, 0xc4, 0xeb, 0x90, 0x68, 0x23, 0x6d, 0xaa, 0x0f, 0x2f, 0x93, 0x45, 0x8d, 0x72, 0x72, 0x6c, 0x2d, 0x8e, 0x31, 0x25, 0x9a, 0xcd, 0x3a, 0x7f, 0xde, 0xb6, 0xfe, 0xb5, 0xc6, 0xd2, 0xed, 0x17, 0x8d, 0xdb } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.17", - /* Message */ - 63, - { 0x19, 0xb1, 0xf4, 0xcd, 0x3d, 0xbd, 0xf0, 0x5b, 0x3d, 0x5f, 0x16, 0x80, 0x85, 0x6c, 0x5a, 0x74, 0x4f, 0x51, 0x62, 0xb5, 0x20, 0xbf, 0xcd, 0xfc, 0x98, 0x87, 0xdd, 0x92, 0xbe, 0x9d, 0x8c, 0xb6, 0x25, 0xc7, 0x25, 0xad, 0x75, 0xf4, 0xf2, 0xca, 0xa5, 0xef, 0x51, 0xfa, 0xca, 0x71, 0xb5, 0xe6, 0x6f, 0x84, 0xf2, 0xfc, 0x6f, 0x67, 0x8a, 0xce, 0x80, 0x9d, 0x76, 0xb8, 0x42, 0xea, 0xfe } -, - /* Seed */ - 63, - { 0x78, 0xa7, 0x18, 0x82, 0x85, 0x3d, 0x85, 0xaf, 0x16, 0x5c, 0xc0, 0xb2, 0x2f, 0xfd, 0xc8, 0x87, 0x3d, 0xf4, 0x9e, 0x2d, 0x6c, 0xc0, 0xad, 0x0b, 0x0a, 0x99, 0x5b, 0x4a, 0x25, 0x9c, 0x86, 0x7d, 0xc1, 0xaa, 0xb6, 0x42, 0x8a, 0x5b, 0x8e, 0x9f, 0x3b, 0xe8, 0x7d, 0x87, 0xf9, 0xe6, 0xea, 0xc5, 0x50, 0xf4, 0xdf, 0x11, 0x36, 0x8e, 0x7f, 0x6c, 0xfd, 0x7d, 0x0e, 0x47, 0x6a, 0x45, 0x9b } -, - /* Encryption */ - 129, - { 0x06, 0x2a, 0x78, 0xdb, 0x5c, 0xa6, 0x9a, 0x30, 0x48, 0x10, 0x78, 0x94, 0x93, 0xdb, 0x8c, 0xd6, 0x44, 0xfb, 0x29, 0x4e, 0x17, 0xfd, 0x36, 0x45, 0x32, 0xb8, 0xec, 0x17, 0xce, 0x3f, 0xda, 0x70, 0x47, 0x64, 0x65, 0x62, 0x4a, 0x60, 0xa6, 0xec, 0xdb, 0xd5, 0xd9, 0x72, 0x40, 0xc8, 0xd8, 0x9d, 0xea, 0xc1, 0x1d, 0xc3, 0x0d, 0x7b, 0x85, 0x14, 0x41, 0x40, 0x8e, 0xdd, 0x64, 0x28, 0x81, 0xa0, 0x11, 0x2b, 0x62, 0xf8, 0xcf, 0xde, 0x34, 0xd9, 0xc1, 0x13, 0x85, 0xc2, 0x91, 0x89, 0xbf, 0x38, 0x93, 0xa6, 0xab, 0xac, 0xe0, 0x4a, 0x10, 0xaa, 0x68, 0x0c, 0xd3, 0xa6, 0xee, 0x00, 0x2c, 0x30, 0x70, 0x35, 0xd2, 0x39, 0x9a, 0x2a, 0x60, 0xb5, 0xa7, 0xf1, 0xca, 0xaf, 0x05, 0x84, 0xd1, 0x0f, 0xd0, 0x6d, 0x6e, 0xfd, 0x56, 0x11, 0x4c, 0x05, 0xe4, 0x3d, 0x42, 0xd8, 0x34, 0xf0, 0x3e, 0x3f, 0xe9 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.18", - /* Message */ - 32, - { 0x8c, 0xb7, 0x3b, 0xc4, 0x78, 0x50, 0xc1, 0x7f, 0xeb, 0xd3, 0x4f, 0xf4, 0xb7, 0x32, 0x3b, 0x50, 0x53, 0x03, 0x0b, 0x96, 0x22, 0x14, 0x03, 0xcd, 0xef, 0x45, 0xde, 0xc6, 0x5b, 0xa6, 0x0e, 0xa3 } -, - /* Seed */ - 94, - { 0xed, 0x64, 0x78, 0x61, 0x48, 0x81, 0xeb, 0xe3, 0xfd, 0xd6, 0xd9, 0xee, 0x05, 0xf2, 0x76, 0x5f, 0xc8, 0xa3, 0xea, 0xa5, 0x80, 0x31, 0x23, 0x5a, 0xf9, 0x6f, 0x86, 0xe7, 0xf2, 0xc8, 0x13, 0xec, 0x04, 0x80, 0x66, 0x1d, 0x1c, 0x2b, 0x4d, 0xef, 0x74, 0x2b, 0x2e, 0x41, 0x41, 0x9d, 0xf2, 0x88, 0x3e, 0xd5, 0x86, 0x79, 0xcb, 0x9a, 0xda, 0xe4, 0xde, 0xc4, 0xcf, 0x77, 0xf8, 0xbc, 0x29, 0x41, 0xd0, 0x33, 0xf8, 0x87, 0x7a, 0x90, 0x6d, 0xdc, 0x88, 0xd6, 0xdd, 0x3c, 0x53, 0x96, 0xad, 0xaa, 0xc0, 0x3e, 0xb2, 0xa7, 0x09, 0x4c, 0x0f, 0xdf, 0x0a, 0x44, 0xa6, 0xb9, 0x23, 0xab } -, - /* Encryption */ - 129, - { 0x03, 0x97, 0x8d, 0x4e, 0xff, 0xc6, 0xd6, 0x2f, 0x23, 0x2b, 0xf4, 0x6b, 0x42, 0x90, 0xc5, 0x01, 0x1d, 0x73, 0x28, 0x0a, 0xb0, 0xe8, 0x0a, 0xb9, 0xd6, 0x05, 0x0a, 0x85, 0x2a, 0x66, 0x79, 0xe0, 0x17, 0xe1, 0x70, 0xd9, 0xe7, 0x15, 0x6c, 0x8d, 0xcb, 0xd4, 0x6c, 0xde, 0xda, 0x70, 0xff, 0x9a, 0x55, 0x16, 0x8b, 0x9f, 0xdc, 0x03, 0x65, 0xb8, 0xaa, 0xbb, 0x90, 0x9a, 0xad, 0x40, 0xd5, 0x95, 0xc9, 0x0b, 0x9f, 0x00, 0xc1, 0xe0, 0x0a, 0xd6, 0xf0, 0x1d, 0x54, 0x43, 0x07, 0xb2, 0x54, 0xea, 0xf4, 0x25, 0x5d, 0xe6, 0x2b, 0xfd, 0x8a, 0x5f, 0x7e, 0x79, 0xdc, 0xfc, 0x74, 0x45, 0xce, 0xc6, 0x3d, 0xf0, 0xc2, 0xbd, 0x0a, 0xd9, 0x6c, 0xb7, 0x02, 0x42, 0xb3, 0x0b, 0x32, 0x42, 0x07, 0x88, 0x16, 0xb5, 0x8b, 0x0a, 0x9f, 0xfa, 0x16, 0xf1, 0xd8, 0x63, 0x15, 0xf8, 0xa1, 0xcb, 0x2f, 0x8f, 0x6b } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.19", - /* Message */ - 56, - { 0x8e, 0xa5, 0x56, 0x43, 0xdf, 0xe7, 0xcb, 0xe0, 0x75, 0xc1, 0x7b, 0x93, 0xc6, 0xba, 0x6b, 0x5a, 0x74, 0xea, 0x8d, 0x1a, 0xba, 0xb9, 0xc7, 0x28, 0xae, 0x5b, 0x00, 0x86, 0x6c, 0x62, 0x88, 0x0d, 0x3c, 0x00, 0x05, 0x20, 0x37, 0xcf, 0x80, 0x2d, 0x2c, 0xf2, 0xa8, 0xe1, 0xbe, 0xa5, 0x8c, 0x7b, 0xa6, 0x04, 0x77, 0x4d, 0x4f, 0x80, 0xbc, 0x04 } -, - /* Seed */ - 70, - { 0xaf, 0x9d, 0x9d, 0x31, 0x2e, 0x22, 0x57, 0x0f, 0xbc, 0x4b, 0xc8, 0x5a, 0x44, 0x5e, 0xd8, 0xd8, 0x99, 0x66, 0x0e, 0xd2, 0x4c, 0xf0, 0x30, 0x15, 0x33, 0x94, 0x6e, 0x5c, 0xb9, 0x47, 0x1a, 0x27, 0xc5, 0x10, 0xcd, 0x17, 0x55, 0x91, 0xd2, 0x3d, 0x36, 0x3d, 0xc4, 0xe3, 0xe6, 0x9c, 0x7b, 0xb4, 0x65, 0x51, 0x7a, 0x4c, 0xd1, 0xd1, 0xce, 0x41, 0x3e, 0x10, 0x16, 0xae, 0xaf, 0xd5, 0x5d, 0x2c, 0xb9, 0xde, 0xbc, 0xfe, 0x4b, 0x1d } -, - /* Encryption */ - 129, - { 0x05, 0x87, 0x11, 0x19, 0x16, 0xbb, 0x42, 0xf8, 0x47, 0x57, 0x69, 0x1e, 0xfe, 0xde, 0x7e, 0xb7, 0x79, 0x6a, 0x5c, 0xf8, 0x87, 0xc3, 0x7c, 0xa9, 0xf6, 0x1b, 0x45, 0x1f, 0xb1, 0xba, 0xde, 0x38, 0x9c, 0xfc, 0x5f, 0xdc, 0x21, 0x98, 0x41, 0xbb, 0x41, 0xda, 0x82, 0x74, 0x52, 0x72, 0x5f, 0xc8, 0x2b, 0x4d, 0x1a, 0xde, 0x56, 0x9c, 0xee, 0xc8, 0x05, 0x79, 0xed, 0xb1, 0xb4, 0xb1, 0x5b, 0x46, 0xad, 0x7d, 0x45, 0xb2, 0x45, 0x98, 0x80, 0x23, 0xea, 0x0d, 0xfc, 0xb3, 0x74, 0x4a, 0x69, 0x2e, 0xb9, 0xac, 0xa8, 0x5f, 0x21, 0x10, 0x10, 0xaf, 0xb1, 0xe9, 0x89, 0x4f, 0x85, 0x4a, 0x5e, 0x34, 0xfe, 0x89, 0xaa, 0x05, 0x19, 0x68, 0xa3, 0xb2, 0x36, 0x2c, 0x15, 0x0c, 0x6d, 0x97, 0x0e, 0xdd, 0x82, 0xb9, 0xe2, 0xd1, 0x3b, 0x38, 0xc3, 0xc2, 0x95, 0x6d, 0x91, 0x50, 0x08, 0x86, 0x41, 0xd5, 0x30 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 9.20", - /* Message */ - 4, - { 0x52, 0x5c, 0xff, 0xa3 } -, - /* Seed */ - 122, - { 0x0c, 0x99, 0x30, 0x4c, 0xc6, 0x26, 0x3d, 0x1e, 0xe2, 0x44, 0x6e, 0x24, 0x8c, 0x27, 0x11, 0x2c, 0x8f, 0x96, 0xda, 0x82, 0x51, 0x5f, 0x06, 0xf8, 0x12, 0x39, 0x8a, 0x88, 0x81, 0x1f, 0x39, 0xfb, 0x05, 0x62, 0x05, 0xc4, 0x4d, 0x6b, 0xd4, 0x85, 0x5a, 0x62, 0xc2, 0x1c, 0x60, 0x1b, 0x88, 0xf8, 0x02, 0x34, 0xe2, 0x32, 0x41, 0xf7, 0x16, 0x32, 0x2d, 0x80, 0x54, 0xa8, 0x4a, 0x1f, 0xc3, 0xc8, 0x46, 0xde, 0xfb, 0x61, 0x76, 0x7c, 0xc4, 0xd8, 0x16, 0xfa, 0x7b, 0x37, 0x47, 0xf8, 0x72, 0x9b, 0xf3, 0x37, 0x2a, 0xc2, 0xc2, 0x29, 0xd0, 0x52, 0xf4, 0x5b, 0xc4, 0x2f, 0xc3, 0x80, 0x50, 0xdc, 0xa3, 0xf2, 0x63, 0x2e, 0x60, 0x07, 0xb6, 0x08, 0x53, 0xb7, 0xe0, 0xcc, 0xb3, 0xda, 0xa4, 0x94, 0xe5, 0x53, 0x35, 0xfd, 0x04, 0xf1, 0x3d, 0x5f, 0xad, 0xa7 } -, - /* Encryption */ - 129, - { 0x06, 0x3e, 0x45, 0x08, 0xe5, 0x31, 0x2b, 0x5c, 0x38, 0x69, 0x4d, 0xe8, 0x2a, 0x71, 0xed, 0xa3, 0x12, 0xe9, 0xae, 0xd0, 0x5b, 0xc1, 0x43, 0xd3, 0x38, 0xf7, 0xf2, 0x28, 0x12, 0xd9, 0x3c, 0x28, 0x65, 0x12, 0x6a, 0x9b, 0x3a, 0x42, 0xc3, 0xca, 0x19, 0xed, 0xb3, 0x46, 0x01, 0xc0, 0xb2, 0x8a, 0x75, 0x66, 0x3b, 0x18, 0xf2, 0x39, 0xf5, 0xad, 0xca, 0xa4, 0xe9, 0xfa, 0x9f, 0x61, 0x18, 0x04, 0x72, 0x6f, 0xa1, 0x29, 0x62, 0xbb, 0xa3, 0x23, 0x0c, 0xb8, 0x86, 0xd6, 0x67, 0x82, 0xa4, 0x7e, 0xa9, 0x50, 0x2a, 0x83, 0x71, 0xe7, 0x57, 0x3b, 0xb6, 0xb0, 0x26, 0x6c, 0x33, 0x64, 0x6b, 0xdf, 0x53, 0xf8, 0xde, 0x36, 0x8e, 0xf2, 0x05, 0xb1, 0x1a, 0x85, 0xba, 0xf2, 0x1d, 0xaf, 0x3c, 0xe7, 0xa2, 0x59, 0x9f, 0x00, 0x8b, 0x99, 0x45, 0xee, 0xb1, 0x86, 0xec, 0x19, 0x2c, 0x54, 0x0a, 0xc2, 0x3c } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 10: A 1028-bit RSA key pair", -{ - /* Modulus */ - 129, - { 0x0b, 0x52, 0xcb, 0x6b, 0x5c, 0x3b, 0x9e, 0xc5, 0xaa, 0xad, 0x89, 0x4e, 0x51, 0x77, 0xf7, 0xf4, 0x5b, 0x8d, 0x33, 0xdc, 0xbb, 0xe9, 0x6a, 0x5b, 0x26, 0xf3, 0x00, 0x72, 0xbf, 0x15, 0x73, 0xa6, 0xc4, 0x1f, 0xb0, 0xa9, 0x7a, 0xe1, 0xe5, 0x2e, 0xd8, 0xc2, 0x5c, 0x62, 0xb9, 0x8b, 0xf5, 0x9d, 0xe7, 0xb6, 0x8a, 0xb9, 0x8c, 0x2d, 0x8b, 0x93, 0xc4, 0x94, 0x27, 0x23, 0xcc, 0x4b, 0xae, 0xd2, 0xb3, 0x93, 0xc0, 0x7b, 0x2b, 0x11, 0x90, 0x9c, 0x73, 0x2d, 0xf7, 0xc1, 0xdc, 0xbb, 0x43, 0x3a, 0x83, 0x9d, 0x46, 0xf4, 0x28, 0xe9, 0xdd, 0xc8, 0xd3, 0x5f, 0xd3, 0x3e, 0xed, 0x29, 0x81, 0x80, 0xf7, 0x5f, 0x2d, 0x5c, 0x9f, 0xe8, 0x53, 0x4f, 0x03, 0x47, 0xf8, 0x68, 0x5c, 0x28, 0xc4, 0x37, 0xea, 0x5b, 0x81, 0x1a, 0x28, 0x6e, 0x81, 0x0c, 0x69, 0x7a, 0x88, 0xcd, 0x7e, 0x45, 0x36, 0x4c, 0x1f } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x45, 0xcc, 0x14, 0x17, 0xb2, 0x6f, 0xce, 0x3e, 0x9f, 0xd3, 0x10, 0x89, 0xb1, 0xa3, 0xcc, 0xc4, 0x6f, 0x8f, 0xf2, 0x1e, 0xac, 0x2e, 0x1d, 0x67, 0xc0, 0xae, 0x20, 0x15, 0x2d, 0xc5, 0x0d, 0x1c, 0xe7, 0xce, 0x6f, 0x26, 0x40, 0x4e, 0x2e, 0x64, 0x95, 0xb9, 0x77, 0xbf, 0x13, 0xf9, 0xa4, 0x05, 0xb2, 0x45, 0x80, 0xd6, 0x39, 0x3a, 0x85, 0x22, 0x54, 0x96, 0xe4, 0xab, 0xc4, 0x9e, 0xbe, 0xff, 0xde, 0x70, 0xcf, 0x26, 0x76, 0x68, 0x66, 0xf2, 0x76, 0xe1, 0x5b, 0x49, 0x2a, 0xf8, 0x03, 0x3f, 0x1b, 0xac, 0x7f, 0x66, 0xb7, 0x1a, 0x3b, 0xaf, 0x57, 0x1f, 0xfc, 0xcc, 0x03, 0x8a, 0x48, 0x86, 0x93, 0x94, 0xcc, 0xa3, 0xfa, 0x00, 0x49, 0x85, 0xb4, 0x34, 0xa5, 0x15, 0x17, 0x87, 0x7e, 0xae, 0x97, 0xa3, 0x84, 0x94, 0x7f, 0x01, 0xa7, 0x2c, 0xf4, 0xb2, 0x01, 0x93, 0xdd, 0x27, 0x64, 0x81 } -, - /* Prime 1 */ - 65, - { 0x03, 0x5f, 0xed, 0xee, 0x7e, 0x64, 0xfd, 0x68, 0x65, 0x79, 0x31, 0xa9, 0xdf, 0x9d, 0x55, 0x62, 0x28, 0xdf, 0xc6, 0x33, 0xa7, 0x50, 0x02, 0x76, 0x8f, 0x65, 0xd7, 0x15, 0xf0, 0x44, 0xf2, 0x3b, 0x3f, 0xe7, 0x88, 0xbb, 0x17, 0x86, 0x4d, 0x61, 0xdf, 0x57, 0x9e, 0x68, 0xdf, 0x80, 0xde, 0xa3, 0xa6, 0x31, 0x90, 0x62, 0x9d, 0xac, 0x7d, 0xe6, 0x29, 0xef, 0x9a, 0xb8, 0xf4, 0xdf, 0x0b, 0x27, 0x7f } -, - /* Prime 2 */ - 65, - { 0x03, 0x5a, 0xf8, 0xe6, 0xfe, 0x2f, 0x84, 0x61, 0xfc, 0x89, 0xa6, 0x45, 0x00, 0xf8, 0x19, 0x9c, 0xcb, 0xd3, 0xf4, 0x69, 0x07, 0x85, 0x96, 0x15, 0x56, 0x03, 0xd3, 0xf0, 0x88, 0x08, 0x33, 0xc3, 0x77, 0xdb, 0x07, 0x8e, 0x43, 0x7e, 0x35, 0x60, 0x00, 0x4a, 0xd1, 0xd6, 0xf8, 0xd3, 0x47, 0x88, 0x3f, 0x3e, 0xb0, 0x1d, 0x18, 0x9d, 0x52, 0xef, 0xf6, 0xe2, 0x60, 0xe5, 0x2f, 0xba, 0xa6, 0x2b, 0x61 } -, - /* Prime exponent 1 */ - 64, - { 0xb2, 0x43, 0xb3, 0x49, 0x8b, 0x67, 0x2a, 0xaa, 0x7d, 0x96, 0x7c, 0xd9, 0xf2, 0x6a, 0x12, 0xe6, 0x22, 0x3e, 0x90, 0x9b, 0xfe, 0x8b, 0x73, 0x91, 0x65, 0x4f, 0x3b, 0x6c, 0xa7, 0x9d, 0x60, 0x12, 0x70, 0xa1, 0x2b, 0x11, 0xd0, 0x99, 0x99, 0x0f, 0x6f, 0xd1, 0xf5, 0x0b, 0xe1, 0x58, 0x8f, 0x66, 0x14, 0xa6, 0x19, 0x63, 0x35, 0x9b, 0x88, 0xe9, 0xb0, 0x52, 0x39, 0xc5, 0xf5, 0x5c, 0x24, 0xdb } -, - /* Prime exponent 2 */ - 65, - { 0x01, 0x35, 0x25, 0xad, 0xe5, 0x3f, 0xee, 0xd2, 0x61, 0x54, 0x9d, 0x3d, 0xea, 0x8a, 0x60, 0x95, 0x79, 0x1a, 0x90, 0xb5, 0x98, 0x5a, 0x70, 0xd8, 0xbe, 0xfb, 0x63, 0xb5, 0x07, 0x10, 0x84, 0xa8, 0xce, 0x23, 0x4b, 0x85, 0xdd, 0x2e, 0xb8, 0x41, 0x13, 0xf9, 0xd9, 0xaa, 0x18, 0x25, 0xda, 0x71, 0xe3, 0xe9, 0x48, 0xf3, 0x3f, 0xdf, 0xa7, 0x70, 0xec, 0x17, 0x2f, 0xae, 0x6c, 0xce, 0x2d, 0x6e, 0x21 } -, - /* Coefficient */ - 64, - { 0x1c, 0x52, 0x92, 0x93, 0x3c, 0x58, 0xd0, 0x22, 0x59, 0x2f, 0xc0, 0x03, 0x38, 0xbf, 0x22, 0xed, 0xfc, 0xba, 0x33, 0x16, 0x16, 0xb7, 0x9f, 0x8d, 0x2e, 0xfd, 0x1f, 0xa2, 0x4c, 0x64, 0xf5, 0xdc, 0xfa, 0xd9, 0xaa, 0x52, 0xba, 0xa4, 0x6e, 0x86, 0x59, 0xdd, 0xa9, 0xea, 0xb3, 0xa7, 0x86, 0x3e, 0x61, 0x37, 0x4a, 0xc0, 0xda, 0xe0, 0x18, 0x5f, 0xb5, 0x8e, 0xcb, 0x0b, 0x74, 0x65, 0xee, 0x07 } - -} -, -{{ - "PKCS#1 v1.5 Encryption Example 10.1", - /* Message */ - 46, - { 0x59, 0x22, 0xd0, 0x9f, 0xdf, 0x65, 0x22, 0x80, 0x2f, 0xbc, 0xf7, 0xa2, 0x8e, 0xc3, 0xd9, 0xfa, 0xdf, 0x60, 0x72, 0x03, 0xa3, 0x1b, 0xd0, 0xda, 0x96, 0x3a, 0xa0, 0x31, 0x5f, 0x35, 0xe1, 0xa0, 0xa3, 0x74, 0xd4, 0x87, 0xdd, 0x08, 0x62, 0xa6, 0xf6, 0xbe, 0xc9, 0x32, 0xb7, 0xdb } -, - /* Seed */ - 80, - { 0x61, 0x39, 0x5a, 0x0f, 0xa1, 0x2e, 0x1e, 0xc2, 0xff, 0xea, 0x2a, 0x88, 0x90, 0x65, 0x3e, 0x8f, 0x37, 0x8d, 0xc4, 0x6c, 0xe2, 0xb8, 0xaa, 0x4a, 0x0a, 0x1c, 0x56, 0x7b, 0x30, 0xe5, 0x9c, 0x3a, 0x33, 0xa6, 0x68, 0x98, 0x97, 0x14, 0xfc, 0x3d, 0x45, 0xac, 0x88, 0x63, 0x27, 0xe3, 0x6c, 0x34, 0x5d, 0xa8, 0x58, 0xf9, 0x03, 0xd1, 0xe6, 0x06, 0x74, 0x03, 0x14, 0xcb, 0x80, 0x8d, 0x86, 0xab, 0xc3, 0x1b, 0x49, 0xb3, 0x5b, 0x3f, 0x20, 0xe3, 0x79, 0x29, 0xdc, 0xc8, 0x59, 0xd5, 0x91, 0x41 } -, - /* Encryption */ - 129, - { 0x04, 0x39, 0xe7, 0xdd, 0x09, 0xaf, 0x61, 0xc0, 0xee, 0x25, 0xf3, 0xe5, 0xc2, 0x95, 0x1d, 0xa4, 0x9d, 0x3f, 0xd7, 0x08, 0xb2, 0x97, 0xa3, 0x05, 0x5f, 0xf9, 0x98, 0x3a, 0x9e, 0xa5, 0x38, 0xb8, 0x3d, 0x59, 0xda, 0xbd, 0xb8, 0x5d, 0xaf, 0x82, 0xae, 0x7b, 0xb1, 0x97, 0x8e, 0x7d, 0xa2, 0xa6, 0xdc, 0x05, 0x87, 0xef, 0x9c, 0x73, 0x2e, 0xe6, 0x88, 0x37, 0x3f, 0xbc, 0xbf, 0xa2, 0xda, 0xcf, 0xf9, 0xb3, 0xc1, 0x2f, 0x70, 0x4e, 0xe1, 0x4f, 0x83, 0x24, 0xbd, 0x4c, 0xc6, 0xbf, 0x9d, 0xcd, 0x3f, 0x05, 0x33, 0xc3, 0xb1, 0x1a, 0x0d, 0x38, 0xdb, 0xcc, 0x7b, 0xb7, 0xef, 0x9a, 0x72, 0x29, 0x6b, 0x6c, 0x13, 0xdc, 0x42, 0xd7, 0xec, 0x17, 0xf8, 0x51, 0xa5, 0x16, 0x12, 0xc7, 0x49, 0x4c, 0x63, 0x68, 0xa7, 0xfb, 0xec, 0x93, 0xd2, 0x2e, 0x8f, 0x9b, 0x72, 0xbd, 0xc0, 0x44, 0x9f, 0xb4, 0x30 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Encryption Example 10.2", - /* Message */ - 62, - { 0x5f, 0xba, 0xd4, 0x3a, 0x91, 0x0a, 0x29, 0x0e, 0x50, 0x55, 0xd5, 0x14, 0xe7, 0x1c, 0x8e, 0xab, 0xf1, 0xf9, 0x33, 0x20, 0xeb, 0xd0, 0xda, 0x8f, 0x90, 0xd1, 0x46, 0xa8, 0xf3, 0xdd, 0x5c, 0x1a, 0x2c, 0x72, 0x0b, 0x93, 0x21, 0x1e, 0x48, 0x29, 0x34, 0x14, 0x9f, 0x1d, 0x21, 0xb9, 0x78, 0xf4, 0x8a, 0x0b, 0xb8, 0xe4, 0xcc, 0xa3, 0xf5, 0xd4, 0x5d, 0x3f, 0x3e, 0x3b, 0xa8, 0xe1 } -, - /* Seed */ - 64, - { 0x21, 0x04, 0x52, 0x61, 0x80, 0x4b, 0xf7, 0x54, 0xbc, 0xb8, 0xbf, 0x34, 0x98, 0xb1, 0xad, 0x10, 0xaf, 0xf3, 0x3d, 0xa1, 0xf2, 0x25, 0xed, 0xa5, 0x64, 0x65, 0x90, 0x45, 0x8b, 0x20, 0x70, 0x9f, 0xc8, 0xd0, 0xb4, 0x98, 0x90, 0x7a, 0x83, 0x64, 0xce, 0x1c, 0x43, 0x6b, 0x6b, 0x1e, 0x73, 0x18, 0x1c, 0x86, 0xc6, 0x77, 0xaf, 0x45, 0xc1, 0x7f, 0x9e, 0x4a, 0xf3, 0x75, 0x9c, 0xad, 0x24, 0x87 } -, - /* Encryption */ - 129, - { 0x02, 0x9f, 0x64, 0xac, 0x33, 0x01, 0x34, 0x00, 0x7f, 0x77, 0xf7, 0x2c, 0x37, 0xf4, 0x17, 0x7c, 0x24, 0xd6, 0x60, 0xbe, 0x4e, 0xba, 0xc1, 0x86, 0x8a, 0xd1, 0x1f, 0x9e, 0x30, 0x51, 0xb8, 0xcd, 0x77, 0xc4, 0x69, 0x11, 0x99, 0xac, 0x49, 0x19, 0xdb, 0x2e, 0xd3, 0x63, 0x74, 0x0d, 0x2d, 0xde, 0x32, 0x91, 0xf1, 0x0d, 0x92, 0x68, 0xe7, 0xc7, 0xde, 0x37, 0xea, 0x42, 0x1e, 0xbb, 0x1f, 0xad, 0x65, 0x29, 0xf2, 0x92, 0x19, 0x2a, 0x96, 0x80, 0xba, 0x96, 0x3e, 0xda, 0x93, 0x74, 0x03, 0x7a, 0xb9, 0x52, 0x9a, 0x48, 0x6f, 0x35, 0xcb, 0xd2, 0x9e, 0x09, 0xea, 0x98, 0xa5, 0x04, 0x5d, 0x9e, 0x16, 0xbb, 0x87, 0x70, 0x15, 0x5d, 0x70, 0xaf, 0xd2, 0x17, 0xa1, 0x46, 0x86, 0x27, 0x49, 0xec, 0x1a, 0xd1, 0x59, 0xcf, 0x6e, 0x6a, 0x63, 0xdf, 0x14, 0x2b, 0x82, 0x46, 0xd8, 0x44, 0xa7, 0x37, 0x2d } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.3", - /* Message */ - 62, - { 0x22, 0xbb, 0xc6, 0x16, 0xec, 0x6e, 0xf3, 0x57, 0x31, 0x56, 0xb4, 0x17, 0x61, 0xac, 0x3b, 0xdb, 0x57, 0xbd, 0x9b, 0x70, 0x36, 0xed, 0xc9, 0xa6, 0x97, 0x88, 0x75, 0xe2, 0xa6, 0x14, 0xcd, 0xe3, 0xef, 0xed, 0xaf, 0xd3, 0x88, 0x9a, 0x5d, 0xbd, 0xcc, 0x5f, 0xad, 0x9e, 0x9b, 0xec, 0xf8, 0xa8, 0xbb, 0x80, 0x33, 0xff, 0x91, 0xdf, 0xed, 0x60, 0x4b, 0xf8, 0xc6, 0xe9, 0xbb, 0xc7 } -, - /* Seed */ - 64, - { 0x3b, 0x47, 0xd2, 0xca, 0x95, 0x54, 0xb3, 0x4f, 0x94, 0x29, 0x57, 0x8d, 0x4f, 0xde, 0xc5, 0xd9, 0x6e, 0xca, 0x89, 0xb6, 0x81, 0x72, 0xd1, 0xdb, 0x13, 0x56, 0xb3, 0xda, 0x7a, 0x69, 0xf1, 0x58, 0x4d, 0x4c, 0x84, 0x6b, 0x18, 0x43, 0x2f, 0x02, 0xf2, 0x59, 0xca, 0xdc, 0x24, 0xe1, 0x54, 0xff, 0x15, 0xf8, 0x06, 0xf2, 0x53, 0x43, 0x50, 0x0e, 0x13, 0xb5, 0xbe, 0x43, 0xc7, 0xb5, 0xae, 0x7e } -, - /* Encryption */ - 129, - { 0x00, 0xc4, 0xe6, 0xc1, 0x0c, 0x25, 0x5e, 0x4b, 0xeb, 0x2b, 0x31, 0xc1, 0x65, 0x68, 0x46, 0xb9, 0x7c, 0xa2, 0x3a, 0x3b, 0xa3, 0x2a, 0xb1, 0x9c, 0x64, 0x85, 0x20, 0x11, 0x3d, 0x70, 0x34, 0xdf, 0xa4, 0x6b, 0x0c, 0xd2, 0x3d, 0x73, 0x99, 0xa9, 0x3c, 0xb0, 0x2f, 0x1e, 0xba, 0x94, 0x83, 0x18, 0xe3, 0x79, 0x1c, 0x30, 0x6a, 0x2e, 0xb9, 0xc0, 0xc5, 0x6d, 0x8f, 0x7e, 0x83, 0x25, 0x0f, 0x83, 0xad, 0x49, 0x2f, 0xad, 0xf7, 0x83, 0x17, 0x69, 0xf0, 0x2e, 0x18, 0x24, 0x34, 0x74, 0x45, 0xd0, 0x41, 0x9b, 0x98, 0xb8, 0xe7, 0x95, 0x45, 0x65, 0x32, 0x30, 0x0b, 0x92, 0xd6, 0xe4, 0x55, 0xb5, 0xa4, 0xeb, 0xa8, 0x53, 0xd6, 0xf7, 0x45, 0x92, 0x90, 0xab, 0x02, 0x31, 0x99, 0x48, 0x53, 0xa8, 0xc0, 0x7e, 0x54, 0xf5, 0x9c, 0x62, 0x45, 0x37, 0x08, 0x02, 0x89, 0xf9, 0x31, 0x43, 0xeb, 0xc6, 0x61 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.4", - /* Message */ - 50, - { 0x31, 0x6c, 0xc4, 0x45, 0x0a, 0x53, 0x70, 0x3c, 0x05, 0x8c, 0x90, 0x1f, 0x50, 0x7d, 0x7a, 0xd0, 0xcb, 0x63, 0x96, 0xc5, 0x51, 0xd4, 0xf0, 0x61, 0x82, 0xab, 0xd3, 0xa4, 0x3a, 0xac, 0xba, 0xbb, 0x31, 0x59, 0xc0, 0x26, 0xb3, 0xe7, 0xdb, 0xc1, 0x60, 0xf4, 0x19, 0x53, 0x31, 0x7e, 0x0f, 0x20, 0x80, 0x8c } -, - /* Seed */ - 76, - { 0xc1, 0xec, 0xb1, 0x16, 0x4b, 0x3e, 0x66, 0x23, 0xf0, 0xd9, 0xb9, 0xc5, 0xeb, 0xf9, 0x9e, 0x78, 0x8b, 0x7b, 0xd9, 0x4e, 0xb7, 0x43, 0x74, 0xf6, 0x1e, 0xd3, 0x14, 0x30, 0x4c, 0xaf, 0x46, 0xf8, 0x4a, 0x3f, 0xea, 0x1b, 0xa0, 0xe4, 0x7f, 0xc8, 0xbe, 0x41, 0x97, 0xd1, 0xd2, 0xcd, 0x41, 0x41, 0xcb, 0x9a, 0x61, 0x5d, 0x89, 0xc4, 0xbd, 0x91, 0x10, 0xca, 0x6a, 0xc9, 0xa5, 0x60, 0xf0, 0x76, 0xeb, 0xe6, 0x9b, 0x74, 0xa1, 0x0f, 0xe9, 0xcc, 0xdb, 0x76, 0xda, 0xbd } -, - /* Encryption */ - 129, - { 0x06, 0x16, 0xb8, 0xbc, 0x77, 0x2c, 0x55, 0x64, 0xd4, 0x51, 0xb1, 0x28, 0xd9, 0xb1, 0x36, 0x4c, 0x9e, 0x33, 0xb6, 0xe5, 0x58, 0xec, 0x67, 0xf2, 0x10, 0x5c, 0x98, 0x00, 0x11, 0x7d, 0x0b, 0x73, 0xcc, 0xab, 0x9d, 0xb5, 0x1d, 0x96, 0x7a, 0x9d, 0x66, 0x32, 0x2c, 0xbc, 0x5a, 0x01, 0x74, 0x6e, 0x47, 0x31, 0xdd, 0x7d, 0x04, 0xe6, 0x36, 0xe6, 0x4d, 0x35, 0xf2, 0xc8, 0x6c, 0xa3, 0x9d, 0x26, 0x14, 0x92, 0x17, 0x6b, 0x8d, 0xab, 0xdb, 0x13, 0x4b, 0xe9, 0x4b, 0xe5, 0x1b, 0x6c, 0x02, 0x3a, 0x0d, 0x55, 0xfc, 0xc1, 0xf0, 0x4c, 0x94, 0xc8, 0x6d, 0x47, 0x7d, 0xb4, 0x03, 0xb0, 0x4f, 0xb6, 0xc0, 0x28, 0x50, 0x57, 0x24, 0x79, 0x38, 0x40, 0xcb, 0xf4, 0x68, 0xaa, 0xaa, 0x91, 0xbc, 0x54, 0xe0, 0xd6, 0x47, 0x7c, 0xe6, 0x48, 0xce, 0xdd, 0x12, 0x76, 0xf2, 0xad, 0x2d, 0x4d, 0x42, 0x3b, 0x6c } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.5", - /* Message */ - 51, - { 0xd5, 0x4e, 0xa3, 0x7c, 0xbf, 0xbd, 0xb8, 0x18, 0x3b, 0x3b, 0x54, 0x7f, 0x6d, 0xf2, 0xd5, 0xd6, 0x3c, 0x41, 0x5b, 0x1c, 0x44, 0xed, 0x63, 0x93, 0xc6, 0x97, 0xb4, 0xd9, 0x3a, 0x97, 0xfa, 0x0d, 0x2f, 0x4d, 0x30, 0x0a, 0x68, 0xe9, 0x8f, 0x7f, 0xd0, 0x46, 0x07, 0x01, 0xd1, 0x57, 0x9d, 0x96, 0x83, 0x61, 0x2b } -, - /* Seed */ - 75, - { 0xd1, 0xce, 0xb0, 0xc0, 0x72, 0xd6, 0x88, 0x8f, 0xa9, 0x1a, 0x75, 0x7c, 0xbf, 0x50, 0xd6, 0x69, 0x76, 0xbb, 0xb7, 0x2e, 0x61, 0x94, 0x62, 0x61, 0x4d, 0x5d, 0xec, 0x0f, 0xc0, 0xbb, 0xca, 0xbb, 0x07, 0x07, 0x89, 0xc2, 0xb0, 0x89, 0x50, 0x91, 0xb8, 0xfa, 0x9c, 0x7e, 0x75, 0xab, 0x20, 0xb8, 0x97, 0x58, 0xf9, 0x7f, 0xd0, 0x47, 0xbc, 0x44, 0xa5, 0x68, 0xa2, 0x61, 0x2d, 0x0d, 0x50, 0x1d, 0x15, 0xd4, 0xfb, 0x82, 0xe7, 0x75, 0x28, 0x79, 0x69, 0x49, 0xf3 } -, - /* Encryption */ - 129, - { 0x03, 0xc1, 0x38, 0xc7, 0x91, 0x99, 0xb0, 0xb1, 0x70, 0x0b, 0xab, 0x2e, 0x63, 0xe1, 0xd2, 0xa0, 0x03, 0x1e, 0xf6, 0x02, 0xf7, 0xdd, 0xf1, 0xed, 0x3a, 0x16, 0x1a, 0x5e, 0x70, 0xf1, 0x64, 0x51, 0xda, 0xa1, 0x01, 0xf7, 0x4c, 0xdd, 0x65, 0x47, 0xa7, 0xc6, 0x52, 0xc7, 0x32, 0x9b, 0xb1, 0x73, 0x7f, 0xb1, 0x4c, 0x1c, 0xc0, 0xc0, 0xc3, 0xe7, 0x61, 0x2a, 0xe2, 0x0e, 0xe0, 0x21, 0xab, 0x21, 0xd7, 0x0b, 0xf9, 0x51, 0x7b, 0x4d, 0x33, 0xa9, 0xd8, 0x09, 0x61, 0x2e, 0x7f, 0x42, 0x68, 0x85, 0xb7, 0x9b, 0x31, 0x2e, 0x26, 0x6e, 0x42, 0xb2, 0x02, 0xb5, 0x71, 0xc6, 0x6f, 0x9a, 0x10, 0x7b, 0x8f, 0xd7, 0xc5, 0x6c, 0x05, 0x0a, 0x8e, 0x1e, 0xb1, 0x89, 0x56, 0xdb, 0x06, 0xa0, 0x20, 0x9d, 0xd1, 0x6e, 0xf2, 0xd9, 0x05, 0x24, 0xdb, 0x87, 0x91, 0x7f, 0x34, 0x00, 0x6b, 0xe6, 0xb1, 0x5a, 0x13 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.6", - /* Message */ - 9, - { 0xf6, 0x4b, 0x25, 0x11, 0xcb, 0xe3, 0xcc, 0x65, 0x81 } -, - /* Seed */ - 117, - { 0xda, 0xca, 0x19, 0x63, 0xcb, 0x3d, 0xe5, 0x24, 0x57, 0x79, 0xe9, 0x64, 0x77, 0xff, 0xda, 0x27, 0x7f, 0x4b, 0x92, 0x3f, 0xa9, 0xa8, 0xd9, 0x38, 0x5d, 0x52, 0x31, 0x69, 0x23, 0x3f, 0x58, 0x79, 0xa3, 0xc9, 0xfc, 0x7a, 0x38, 0xe1, 0xb2, 0x08, 0xc3, 0x2d, 0xe4, 0x0b, 0xbe, 0x1d, 0xa0, 0x77, 0x47, 0x1e, 0x61, 0xc8, 0xb9, 0xb7, 0x09, 0x3c, 0x41, 0xb0, 0xa6, 0x5c, 0x99, 0x64, 0x32, 0xd6, 0x45, 0x52, 0x11, 0x84, 0xa6, 0x6a, 0xfc, 0xb9, 0x6f, 0x07, 0xa8, 0xf8, 0xee, 0xbb, 0x6e, 0xf8, 0x17, 0xe0, 0x27, 0xee, 0x2f, 0x37, 0x95, 0x45, 0x23, 0x9e, 0xf6, 0xf9, 0xc1, 0xd0, 0xd8, 0x60, 0xe8, 0x21, 0x44, 0xec, 0x71, 0x59, 0x7f, 0x24, 0x6a, 0x83, 0xcc, 0xf6, 0x60, 0xea, 0x4c, 0x70, 0xee, 0x1d, 0xf0, 0x14, 0xef } -, - /* Encryption */ - 129, - { 0x05, 0x08, 0xed, 0x84, 0x5c, 0x96, 0x23, 0x8e, 0x3a, 0x07, 0xe8, 0xec, 0x02, 0x7f, 0x7b, 0x09, 0x8a, 0x83, 0xf0, 0x3e, 0xac, 0x1f, 0xec, 0x42, 0x6f, 0x4d, 0x60, 0x05, 0xb6, 0x0d, 0x07, 0x35, 0xdb, 0x05, 0x37, 0x08, 0x2f, 0x23, 0xb7, 0x50, 0xf6, 0xdb, 0x54, 0x88, 0x21, 0x41, 0x81, 0xe1, 0x14, 0xcf, 0x1f, 0x72, 0x07, 0x41, 0x9c, 0xa2, 0x93, 0x75, 0x0a, 0xa7, 0x66, 0xfa, 0x7a, 0x5b, 0x9b, 0xe0, 0x0e, 0x37, 0x29, 0x2c, 0x23, 0x23, 0x1c, 0x6a, 0xb3, 0xbe, 0x2d, 0xed, 0xee, 0xd3, 0x21, 0xb0, 0xf9, 0xcd, 0x83, 0x2c, 0x5e, 0xdb, 0x41, 0x67, 0x7c, 0x1a, 0xb9, 0x83, 0xe7, 0xe3, 0xeb, 0xc8, 0xb5, 0x19, 0x93, 0x82, 0x1d, 0x76, 0xdf, 0x2a, 0xc2, 0x29, 0x8d, 0x8b, 0x80, 0xab, 0x17, 0xc3, 0x8b, 0x38, 0x53, 0xf1, 0x8f, 0xe3, 0x09, 0xcc, 0x7b, 0xf7, 0xc4, 0xa2, 0xc2, 0x7d, 0x63 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.7", - /* Message */ - 16, - { 0x85, 0x26, 0x49, 0x01, 0x52, 0x06, 0xe2, 0xa4, 0x09, 0x78, 0x76, 0xf8, 0xab, 0xb9, 0xb8, 0x46 } -, - /* Seed */ - 110, - { 0x03, 0x4f, 0xe3, 0x4e, 0x20, 0xe6, 0x06, 0xa8, 0xdc, 0x7c, 0xbc, 0xd0, 0xd6, 0xab, 0x3e, 0x07, 0x97, 0xc5, 0xdc, 0x4e, 0xd7, 0x86, 0x8e, 0xdc, 0x79, 0x59, 0x89, 0x3e, 0x58, 0x13, 0x7d, 0x26, 0x32, 0xb2, 0xc5, 0xa2, 0x9a, 0x81, 0x35, 0xc2, 0x4a, 0xf6, 0x99, 0xb5, 0x9d, 0x68, 0x10, 0x3a, 0x1f, 0x42, 0x33, 0x93, 0xe3, 0x88, 0x6e, 0x3f, 0xa8, 0x54, 0xe3, 0x97, 0x21, 0x50, 0x19, 0x41, 0x3a, 0xf0, 0xb0, 0xd4, 0xfb, 0x1b, 0xd6, 0x9b, 0xd4, 0x93, 0x4d, 0x4d, 0x1e, 0x2e, 0x9f, 0x3b, 0x9e, 0x7c, 0x46, 0xd4, 0x98, 0x4f, 0xe9, 0xe7, 0xa3, 0x7a, 0xb2, 0xf1, 0xc7, 0x8b, 0x0b, 0x8d, 0x9c, 0xd8, 0xfa, 0xbb, 0x3d, 0x18, 0xd4, 0xc5, 0x06, 0xe2, 0xfd, 0x3f, 0x85, 0xae } -, - /* Encryption */ - 129, - { 0x01, 0x6f, 0xbf, 0x2a, 0x7d, 0x36, 0x80, 0x71, 0xcc, 0x7b, 0xe5, 0x94, 0x49, 0x35, 0x4b, 0x9d, 0xe0, 0x5a, 0x85, 0xe1, 0xbb, 0x97, 0xb2, 0x51, 0x4b, 0x52, 0xb8, 0xd1, 0xf3, 0xe2, 0x69, 0x94, 0xe1, 0x2c, 0xfe, 0xda, 0x59, 0xe0, 0x58, 0xa2, 0xf3, 0xc8, 0x79, 0x23, 0x50, 0xc0, 0x68, 0x41, 0x7f, 0x99, 0x44, 0x1b, 0xfe, 0x74, 0x17, 0xe0, 0xb5, 0x31, 0x6e, 0x16, 0x3b, 0xa8, 0xd1, 0xf9, 0xe3, 0x2c, 0x59, 0xa4, 0x44, 0x98, 0x82, 0xf4, 0x7a, 0xd9, 0xb2, 0x4f, 0x68, 0x76, 0xd4, 0x78, 0xd3, 0xf5, 0xb7, 0xd2, 0x75, 0x35, 0x73, 0xe3, 0xf6, 0x97, 0xbf, 0x64, 0xc7, 0xb3, 0xac, 0x22, 0x28, 0xce, 0x69, 0xe7, 0x5e, 0x8e, 0x14, 0xab, 0x93, 0xf2, 0x19, 0x78, 0x05, 0x9a, 0x14, 0x3b, 0x87, 0x7c, 0x6d, 0xd4, 0x21, 0xb6, 0xe2, 0x0b, 0x07, 0x35, 0xa5, 0x36, 0x05, 0x55, 0x2a, 0xb0, 0xa8 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.8", - /* Message */ - 58, - { 0xf4, 0xfb, 0x50, 0xbe, 0xab, 0xec, 0xba, 0x77, 0xe7, 0x1d, 0xd8, 0xd1, 0x6c, 0x97, 0x5a, 0x86, 0xf6, 0x19, 0xea, 0x7d, 0xbf, 0x41, 0x96, 0x9a, 0x24, 0xba, 0xe2, 0xb8, 0x42, 0xc2, 0x69, 0xe0, 0xb4, 0xd6, 0xa2, 0x9e, 0x82, 0x9d, 0xbe, 0x2e, 0x49, 0x79, 0x9c, 0x9e, 0xd9, 0x71, 0xa3, 0x03, 0x35, 0xe6, 0xed, 0x9b, 0xf3, 0x9d, 0x12, 0x4b, 0xe0, 0xf8 } -, - /* Seed */ - 68, - { 0x9d, 0xbd, 0x92, 0xda, 0xee, 0xb8, 0x2b, 0xde, 0x81, 0x6c, 0x59, 0x3f, 0x70, 0x6b, 0x15, 0x92, 0x56, 0x85, 0x22, 0xbc, 0xa0, 0x79, 0x7f, 0x9e, 0x81, 0x1d, 0xd9, 0xdc, 0x0e, 0x89, 0x6e, 0x98, 0x4a, 0x4a, 0x9a, 0xce, 0x77, 0xde, 0xf5, 0xa9, 0x25, 0x0d, 0xb7, 0x95, 0x81, 0xaf, 0x33, 0xfb, 0x6d, 0xe2, 0x42, 0x7d, 0x1a, 0xf6, 0xa5, 0xf6, 0x92, 0x9f, 0xa8, 0xb6, 0x7b, 0xad, 0x02, 0x3f, 0x04, 0xb3, 0xff, 0xd2 } -, - /* Encryption */ - 129, - { 0x02, 0x92, 0xed, 0xfb, 0xac, 0x38, 0xe2, 0x22, 0x45, 0x45, 0xaf, 0x82, 0x86, 0x23, 0x27, 0x63, 0xbc, 0xb1, 0x8b, 0xae, 0x13, 0x70, 0x97, 0x99, 0xe3, 0x50, 0x77, 0x58, 0xd0, 0x14, 0x1a, 0xc2, 0x97, 0x6f, 0x30, 0xb8, 0x54, 0x67, 0xd7, 0x83, 0xab, 0xf6, 0xfc, 0x71, 0xdf, 0x61, 0x9e, 0x1a, 0x59, 0xe6, 0x23, 0x4f, 0x27, 0xb6, 0x32, 0xfe, 0xaa, 0xbf, 0xd9, 0x85, 0x33, 0x77, 0x35, 0x4d, 0x93, 0x3e, 0xf4, 0xec, 0x59, 0x94, 0xc0, 0xd5, 0x0d, 0x95, 0x2e, 0x0e, 0xce, 0x0b, 0xe1, 0xbe, 0x4d, 0x38, 0xf1, 0x1f, 0x66, 0xe7, 0xc3, 0xda, 0x88, 0xc8, 0x3b, 0x4b, 0xed, 0xcc, 0x06, 0x2e, 0x09, 0xf9, 0xaf, 0x95, 0xea, 0xca, 0xc0, 0x09, 0x9c, 0x52, 0x5f, 0x24, 0x1e, 0xa7, 0xd5, 0x65, 0xe1, 0xb7, 0x68, 0xcb, 0x97, 0x08, 0xf3, 0xbc, 0xd5, 0x91, 0x77, 0xb6, 0x76, 0x6a, 0x37, 0x34, 0x88 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.9", - /* Message */ - 56, - { 0x76, 0x91, 0x3e, 0x84, 0x8f, 0xb7, 0xb9, 0xfa, 0xca, 0x91, 0xba, 0xf4, 0xf4, 0x42, 0x01, 0x06, 0xa9, 0x4d, 0x6c, 0xe2, 0x5d, 0x14, 0x97, 0xfc, 0x4e, 0x7f, 0x85, 0x96, 0x54, 0x79, 0x5d, 0x7f, 0x24, 0x39, 0x9f, 0x3a, 0x12, 0x08, 0xaf, 0x02, 0x8e, 0x61, 0x67, 0x8a, 0x6d, 0x19, 0xa1, 0x86, 0x40, 0xb4, 0xd5, 0x0f, 0x75, 0x55, 0x86, 0x00 } -, - /* Seed */ - 70, - { 0x9c, 0xee, 0xaa, 0x26, 0x09, 0xba, 0x90, 0xeb, 0x61, 0xe4, 0xf7, 0x49, 0xc4, 0xcd, 0xa0, 0x1a, 0xea, 0x23, 0x68, 0x81, 0x76, 0x2d, 0xfc, 0x15, 0x0d, 0x97, 0xc1, 0x1e, 0xb6, 0x44, 0x0c, 0xb0, 0x57, 0xe5, 0x3c, 0x3f, 0xd9, 0xb3, 0x9e, 0x56, 0x0a, 0x46, 0xe9, 0xd3, 0xfa, 0x3a, 0xf3, 0xfe, 0xe5, 0xee, 0x2d, 0x02, 0xfa, 0x42, 0x49, 0xaf, 0x99, 0x98, 0xf5, 0x3e, 0xd0, 0x4d, 0xb0, 0x10, 0xe9, 0x6d, 0x8a, 0x01, 0xff, 0x6b } -, - /* Encryption */ - 129, - { 0x01, 0x96, 0x30, 0x89, 0xc3, 0x43, 0xed, 0x88, 0xb5, 0x6d, 0x6a, 0xcf, 0xef, 0xbc, 0x65, 0x5a, 0x37, 0xcc, 0xfd, 0x96, 0x20, 0x3f, 0x21, 0x87, 0x64, 0x69, 0x5a, 0xd3, 0x10, 0xc0, 0xb2, 0x66, 0x65, 0xee, 0x74, 0x5e, 0xb0, 0x10, 0xfc, 0x83, 0xbe, 0x8c, 0x20, 0x64, 0x5c, 0x43, 0x47, 0xdc, 0xd9, 0x44, 0x65, 0x5d, 0x9f, 0xe6, 0xcd, 0x98, 0x77, 0xdc, 0x70, 0xe5, 0xc1, 0x88, 0xcf, 0xc9, 0xa6, 0x6e, 0x71, 0xda, 0x74, 0x5c, 0xd3, 0xe1, 0xa7, 0xb7, 0xf5, 0xa1, 0xb2, 0x5b, 0x4f, 0xc1, 0x47, 0x0a, 0xdf, 0xbf, 0x7d, 0x8e, 0x45, 0xfb, 0x10, 0x7c, 0x5a, 0xeb, 0x50, 0xea, 0x8b, 0x56, 0xe0, 0x4c, 0xa5, 0x5b, 0x9b, 0x65, 0x2a, 0xd8, 0x34, 0xd9, 0xc9, 0x65, 0x77, 0xb6, 0x42, 0xef, 0x33, 0xf1, 0x64, 0xd4, 0x93, 0x1f, 0xb8, 0x9e, 0x0c, 0x8c, 0x6b, 0xf9, 0x17, 0x08, 0xfd, 0xa6, 0xdb } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.10", - /* Message */ - 44, - { 0xc3, 0x39, 0xf8, 0x57, 0xe4, 0xd0, 0x23, 0x1f, 0xa3, 0x7c, 0x06, 0xf0, 0x95, 0x6b, 0x4d, 0x53, 0xa6, 0xc5, 0x8e, 0x06, 0x10, 0xd8, 0xda, 0x43, 0x17, 0xdc, 0x84, 0x11, 0xd3, 0xa0, 0xf8, 0x98, 0x49, 0xb9, 0x4e, 0x8d, 0x7c, 0xcd, 0xb0, 0xc7, 0xd5, 0x33, 0x0c, 0x25 } -, - /* Seed */ - 82, - { 0x24, 0x90, 0x81, 0x6a, 0xc9, 0x69, 0x76, 0xca, 0x72, 0x5e, 0xb4, 0x98, 0xe2, 0xff, 0x04, 0x0a, 0xfe, 0x3d, 0x64, 0x17, 0xd3, 0x2e, 0x4f, 0xfb, 0xd9, 0xfc, 0x9e, 0x3f, 0xa6, 0x8c, 0xe8, 0x49, 0xc8, 0x81, 0xbe, 0x37, 0x9f, 0x17, 0x50, 0x4b, 0x97, 0xe1, 0xe0, 0xd2, 0x2d, 0x32, 0xff, 0x8d, 0xfe, 0x76, 0xbb, 0x45, 0x49, 0xf7, 0x13, 0xb5, 0xb8, 0xd8, 0x70, 0xed, 0x36, 0x59, 0xdd, 0xd3, 0x98, 0x4b, 0x6f, 0xb3, 0x9f, 0x6e, 0xbd, 0xdc, 0x11, 0x77, 0xad, 0x69, 0x8d, 0x90, 0x44, 0x39, 0x68, 0xab } -, - /* Encryption */ - 129, - { 0x00, 0xb5, 0xfb, 0x7b, 0x1e, 0x9d, 0x71, 0xdf, 0x8b, 0x16, 0xc6, 0x3a, 0x1a, 0x49, 0x6e, 0x6f, 0x7b, 0xf7, 0x72, 0x86, 0x4c, 0xb4, 0x11, 0x55, 0x2b, 0x50, 0xe0, 0xb7, 0xf1, 0x5e, 0x45, 0x97, 0x16, 0xf5, 0x64, 0x62, 0x43, 0x68, 0x76, 0x33, 0xa9, 0x10, 0x6c, 0x34, 0x6c, 0x8c, 0x6b, 0x7c, 0xfa, 0xc7, 0x50, 0xb4, 0x56, 0x6b, 0x1b, 0x88, 0xaa, 0xc0, 0xac, 0xb9, 0x16, 0xc0, 0x7a, 0x78, 0x0b, 0xe0, 0x6d, 0xf7, 0x97, 0x5c, 0xcd, 0x8b, 0x72, 0x60, 0x78, 0x68, 0x7a, 0x8e, 0xa5, 0xd3, 0x90, 0x3e, 0x04, 0xab, 0x1d, 0x23, 0xdc, 0x9b, 0x1e, 0xd3, 0x60, 0x00, 0xc9, 0xbb, 0xc3, 0xdc, 0x81, 0x61, 0xe9, 0x48, 0x3a, 0x18, 0xab, 0xb8, 0x64, 0x1e, 0xbb, 0x1f, 0xdd, 0x02, 0x66, 0xc0, 0x84, 0xbf, 0x0b, 0xd0, 0x9c, 0xc9, 0x4e, 0xeb, 0xb9, 0x28, 0x3c, 0x5a, 0x5f, 0x74, 0xe3, 0x60, 0x13 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.11", - /* Message */ - 30, - { 0x47, 0x58, 0x65, 0xa5, 0x7b, 0xdb, 0x91, 0xad, 0xdf, 0x77, 0x7c, 0xc9, 0xd0, 0xa1, 0x7a, 0x71, 0xa9, 0xf9, 0x71, 0x0a, 0x93, 0x1b, 0xd0, 0xc3, 0x14, 0x9b, 0x23, 0x91, 0xa3, 0x53 } -, - /* Seed */ - 96, - { 0x56, 0x2f, 0x79, 0x70, 0x94, 0x6a, 0xc4, 0xcf, 0x05, 0xed, 0xfb, 0x26, 0x34, 0x16, 0x7e, 0x14, 0xd6, 0x65, 0x8d, 0x24, 0xcd, 0xae, 0xf7, 0x5b, 0x40, 0x7c, 0x90, 0x04, 0x81, 0x8e, 0xfa, 0x75, 0xd1, 0x64, 0x5e, 0x81, 0x52, 0xd1, 0xfc, 0x80, 0xd6, 0x99, 0xdf, 0xe9, 0x9a, 0x27, 0xa7, 0xdf, 0x99, 0x7a, 0x8a, 0x66, 0x47, 0x5a, 0xaf, 0xce, 0x41, 0x95, 0x98, 0xe2, 0xa1, 0x91, 0x99, 0xfc, 0x20, 0x53, 0xe3, 0xac, 0xdd, 0x07, 0xfe, 0xc8, 0xba, 0x61, 0xf2, 0xb0, 0x3e, 0xfc, 0x7d, 0xee, 0xd8, 0x15, 0xcd, 0xa8, 0x95, 0x2e, 0x21, 0xe3, 0xc0, 0xb9, 0xa9, 0x35, 0x2a, 0xb3, 0x6f, 0x5e } -, - /* Encryption */ - 129, - { 0x03, 0xe2, 0x68, 0xd7, 0xd1, 0x80, 0xd0, 0x3c, 0x7c, 0xbc, 0x85, 0x07, 0xed, 0x1f, 0x83, 0x0e, 0xd3, 0x7a, 0x79, 0x95, 0x71, 0x2d, 0x7d, 0x91, 0x57, 0x32, 0x24, 0x3d, 0xe6, 0x85, 0xd5, 0xbd, 0x99, 0xa1, 0x4a, 0x8e, 0x86, 0xa6, 0x7c, 0xdd, 0x60, 0xdc, 0xd9, 0x0c, 0x33, 0x92, 0x10, 0x83, 0x5a, 0x46, 0xce, 0xac, 0x19, 0x36, 0xab, 0x3a, 0xa9, 0xc3, 0x81, 0x88, 0x2d, 0x76, 0x94, 0xa8, 0x38, 0x3d, 0x68, 0x98, 0xe2, 0x73, 0x44, 0xbd, 0x15, 0x6f, 0xe9, 0x28, 0x2c, 0x71, 0x32, 0x26, 0x25, 0xd6, 0x8d, 0x30, 0x70, 0xef, 0xf0, 0x1a, 0xc8, 0xd5, 0x95, 0xf6, 0x48, 0x6d, 0x79, 0xb7, 0x88, 0xe3, 0x69, 0x12, 0xfd, 0x3c, 0xcf, 0x28, 0x4e, 0xdd, 0x5f, 0xce, 0xe2, 0x40, 0x9d, 0xca, 0x7d, 0x4f, 0x29, 0xcc, 0x18, 0x2a, 0x78, 0x47, 0x8b, 0xd3, 0xea, 0x23, 0x62, 0x11, 0x25, 0x10, 0xa5 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.12", - /* Message */ - 26, - { 0x9e, 0x1e, 0x53, 0xf9, 0x86, 0x59, 0x9d, 0xa8, 0x98, 0xd5, 0x6d, 0xc1, 0xc7, 0x55, 0x6f, 0xef, 0xca, 0xa3, 0x39, 0x5d, 0x84, 0x50, 0xd5, 0x2b, 0x3b, 0xa7 } -, - /* Seed */ - 100, - { 0x0b, 0x17, 0x63, 0xcc, 0x34, 0x0e, 0x6e, 0x39, 0x78, 0x62, 0x6a, 0x06, 0xd6, 0xef, 0xc4, 0x0d, 0xed, 0x73, 0xdb, 0x53, 0x5a, 0x82, 0x2e, 0xc0, 0x4c, 0x99, 0x24, 0xd9, 0xec, 0x40, 0xd3, 0x85, 0x20, 0x15, 0xd7, 0xe1, 0x02, 0x9c, 0x13, 0x93, 0xad, 0xcf, 0x01, 0x50, 0x30, 0x8a, 0xcb, 0x27, 0x3c, 0x36, 0x35, 0x68, 0x28, 0xa4, 0x77, 0xfc, 0xf9, 0xa2, 0x9a, 0xca, 0xb9, 0x09, 0x35, 0x70, 0x42, 0x50, 0x26, 0xda, 0xc1, 0x4d, 0xa6, 0xcd, 0x30, 0x4c, 0xda, 0xa5, 0x4c, 0x9a, 0x4c, 0x5a, 0x99, 0x4e, 0xd6, 0x8a, 0x5c, 0xea, 0xc7, 0xe0, 0x81, 0xde, 0xc4, 0x64, 0x6e, 0x23, 0x7e, 0x47, 0x1e, 0x52, 0x5e, 0xf8 } -, - /* Encryption */ - 129, - { 0x06, 0xd5, 0x19, 0xa7, 0x30, 0xea, 0x5f, 0x54, 0x9f, 0xe1, 0x9e, 0x30, 0x1b, 0xa5, 0x15, 0x2d, 0x10, 0x3a, 0x3e, 0xad, 0x3f, 0x89, 0xab, 0x35, 0x16, 0xff, 0x7b, 0x34, 0x4c, 0x4f, 0x72, 0xa1, 0xc2, 0x6a, 0xa9, 0x0d, 0x5a, 0x01, 0xa2, 0xa6, 0x51, 0x93, 0xd3, 0xcf, 0x63, 0x41, 0xe5, 0x9a, 0x31, 0xfd, 0x2d, 0x7d, 0xfe, 0x43, 0x5c, 0x09, 0x84, 0xd1, 0xbb, 0xe8, 0x11, 0x32, 0x01, 0x0f, 0x43, 0x58, 0xee, 0xbf, 0xe8, 0x3f, 0xaf, 0x24, 0x1e, 0x7f, 0x35, 0xaf, 0x98, 0xb7, 0xc7, 0xab, 0x91, 0xe4, 0xf0, 0xe8, 0xa3, 0x2a, 0x2f, 0x57, 0xf0, 0x7f, 0x49, 0xd5, 0xc2, 0x1f, 0x1e, 0x13, 0x80, 0xba, 0x0e, 0x17, 0x9a, 0x38, 0xd3, 0xa2, 0xca, 0x46, 0x4f, 0xc1, 0x4d, 0x2b, 0x74, 0xa0, 0x3a, 0x88, 0x84, 0xaa, 0x85, 0x7b, 0x66, 0x01, 0x47, 0x02, 0xb1, 0xbc, 0x4e, 0x7c, 0xc5, 0xe1, 0xeb } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.13", - /* Message */ - 25, - { 0x1a, 0xe3, 0x1e, 0x0c, 0xbe, 0x44, 0x97, 0xba, 0x43, 0xc5, 0xd1, 0x5f, 0x53, 0x5f, 0xe0, 0x18, 0x84, 0x1c, 0x73, 0x14, 0x57, 0x67, 0xa6, 0xa4, 0xc8 } -, - /* Seed */ - 101, - { 0x8f, 0xf0, 0xfa, 0xa7, 0xa2, 0xb4, 0xff, 0x55, 0x3c, 0xcb, 0xb2, 0x0f, 0xf3, 0x10, 0xac, 0x5e, 0x0e, 0xa9, 0x28, 0x18, 0x56, 0x2e, 0xc9, 0xa0, 0x60, 0x64, 0xf5, 0xde, 0x79, 0x86, 0xb4, 0xf6, 0xc9, 0xae, 0xa2, 0xb9, 0xf0, 0x11, 0x42, 0x38, 0xe5, 0xa4, 0x99, 0xa8, 0xae, 0x20, 0xea, 0xe4, 0x02, 0x1f, 0xcd, 0xd8, 0xf0, 0x60, 0xc9, 0x93, 0xa9, 0xbf, 0x64, 0x2d, 0xa0, 0x25, 0x67, 0x39, 0x33, 0x48, 0x08, 0xe3, 0x88, 0xe1, 0xda, 0x82, 0x37, 0x27, 0x8b, 0xf4, 0xf4, 0x7e, 0x05, 0x01, 0x5a, 0x8b, 0x88, 0xc5, 0x42, 0x0c, 0xeb, 0xc8, 0xbb, 0x37, 0xee, 0x43, 0x52, 0x83, 0x7a, 0xf7, 0x64, 0x70, 0x18, 0x41, 0x97 } -, - /* Encryption */ - 129, - { 0x04, 0xa2, 0x10, 0xf7, 0x6c, 0x0f, 0x84, 0x93, 0x99, 0x09, 0x53, 0x58, 0x98, 0x86, 0xf6, 0x2c, 0x1c, 0x48, 0x25, 0x01, 0x2a, 0xf4, 0x4b, 0xdc, 0xf2, 0xc9, 0x9b, 0x32, 0xa7, 0x0a, 0x17, 0xf7, 0x64, 0xa3, 0xa9, 0x7b, 0x2b, 0x04, 0x7e, 0x39, 0xd8, 0x0c, 0xde, 0x15, 0x4e, 0xbe, 0xd5, 0xd2, 0x81, 0x3e, 0xe8, 0x4a, 0xc9, 0xc8, 0xd6, 0xec, 0x6a, 0x96, 0xf4, 0x02, 0xdb, 0xb3, 0x26, 0xd5, 0xa6, 0xe9, 0xc0, 0xf7, 0x87, 0xc1, 0x5e, 0x98, 0x23, 0xc5, 0x08, 0xb3, 0x23, 0x5f, 0x3a, 0x00, 0x8d, 0xdd, 0xcd, 0xdb, 0x07, 0x9e, 0x80, 0xff, 0x50, 0xfe, 0x37, 0x25, 0x4a, 0x0c, 0xc4, 0x68, 0x29, 0x7e, 0xe3, 0x32, 0x53, 0xa7, 0x4c, 0x1e, 0x03, 0x70, 0x26, 0x05, 0x69, 0x58, 0xad, 0x07, 0x78, 0xe0, 0xaa, 0x12, 0x50, 0xdf, 0x1c, 0x14, 0x85, 0x7c, 0xb0, 0xd7, 0x1a, 0xa6, 0x93, 0x7e, 0x31 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.14", - /* Message */ - 17, - { 0xa6, 0xe3, 0xd1, 0x07, 0x03, 0x21, 0xd8, 0xff, 0x76, 0xb8, 0x5c, 0x70, 0x93, 0xfa, 0xa0, 0x42, 0x83 } -, - /* Seed */ - 109, - { 0xd1, 0x60, 0xb1, 0x2c, 0x76, 0x62, 0x2c, 0x3d, 0x34, 0xd8, 0x55, 0x87, 0xe6, 0xe8, 0x1c, 0xf0, 0x54, 0x61, 0x8a, 0x34, 0x6b, 0x67, 0x52, 0xd5, 0x36, 0x9a, 0x71, 0xc4, 0x92, 0x35, 0x7a, 0x13, 0x4b, 0x7f, 0x67, 0xf3, 0x34, 0xa4, 0xf3, 0xb3, 0x28, 0xba, 0xa9, 0xf0, 0x07, 0x18, 0x47, 0xd0, 0xda, 0xfd, 0xac, 0x22, 0x5d, 0x7b, 0x7f, 0x07, 0x16, 0x18, 0xea, 0x86, 0x81, 0xfc, 0xd2, 0xd2, 0x30, 0x5c, 0x2f, 0x64, 0x63, 0x1e, 0x62, 0x31, 0x85, 0xfc, 0x09, 0x96, 0xe6, 0x1c, 0x84, 0xf4, 0x18, 0x0c, 0x63, 0x7b, 0xf6, 0xea, 0x2d, 0x06, 0x03, 0x75, 0xf1, 0x6a, 0x65, 0xe5, 0xb1, 0xe2, 0xb8, 0x65, 0x28, 0x5d, 0xa3, 0xd8, 0xfb, 0x1b, 0x6a, 0x60, 0xea, 0x36, 0xe1 } -, - /* Encryption */ - 129, - { 0x0a, 0x70, 0x03, 0xb5, 0x86, 0x1a, 0x85, 0xa8, 0xf7, 0x2f, 0x19, 0x9d, 0xc6, 0x5c, 0x17, 0xfc, 0x58, 0xa9, 0x24, 0xbc, 0xc4, 0x08, 0x19, 0xe2, 0x8c, 0x95, 0x83, 0xe8, 0x21, 0x03, 0x8c, 0x00, 0x05, 0x36, 0x5e, 0x90, 0x9e, 0xee, 0x4f, 0x32, 0x66, 0xf5, 0x9a, 0x84, 0xe3, 0x25, 0xb1, 0xbe, 0xa9, 0xd2, 0x81, 0xb4, 0x82, 0x3f, 0x2f, 0xce, 0x44, 0x15, 0x3f, 0x03, 0x17, 0x0f, 0xad, 0xcb, 0x16, 0xa2, 0x79, 0xb2, 0xc9, 0x58, 0x7f, 0x6b, 0x79, 0xef, 0xfc, 0x55, 0xa3, 0xc4, 0x34, 0xe0, 0xbc, 0x5d, 0xaf, 0xe9, 0xd4, 0x03, 0x26, 0x48, 0xaa, 0xe7, 0xe4, 0xed, 0x1d, 0x7f, 0x14, 0x1b, 0xfe, 0x72, 0x26, 0x83, 0xfa, 0x32, 0xc8, 0x9d, 0xdd, 0x67, 0x3c, 0x3f, 0x0c, 0x03, 0xc8, 0x54, 0x59, 0x89, 0x0a, 0xb7, 0xfb, 0xc1, 0xd9, 0xa8, 0x14, 0xbf, 0xe9, 0xb0, 0xd1, 0x2a, 0xb1, 0x7f, 0x51 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.15", - /* Message */ - 40, - { 0xd0, 0xbc, 0x89, 0x03, 0x9b, 0xa1, 0x9e, 0xe5, 0x0a, 0x73, 0x82, 0x98, 0x4e, 0x42, 0x8a, 0xed, 0x88, 0x61, 0x4f, 0x78, 0x98, 0x13, 0x01, 0x89, 0x16, 0xe2, 0xe7, 0xeb, 0x0d, 0xb8, 0x3d, 0xa2, 0x8e, 0xc2, 0x3c, 0x04, 0xa0, 0xc2, 0xf7, 0x6a } -, - /* Seed */ - 86, - { 0xc6, 0x4d, 0x10, 0xa4, 0xb5, 0x2f, 0x49, 0x0a, 0xb6, 0x2a, 0x60, 0x38, 0xb3, 0x2b, 0x23, 0xc6, 0x3a, 0x1c, 0x85, 0x97, 0x0d, 0x93, 0x45, 0x14, 0x83, 0x94, 0xcd, 0x35, 0xcf, 0xd6, 0xf6, 0xb1, 0x59, 0x0f, 0xce, 0x8c, 0x67, 0x5b, 0xee, 0xf8, 0x7c, 0xd0, 0x34, 0x5e, 0x5c, 0xad, 0xe8, 0x95, 0x09, 0x45, 0x56, 0x54, 0x26, 0xb6, 0xb2, 0x83, 0x03, 0xb0, 0xb0, 0x39, 0x32, 0x98, 0xcd, 0xd9, 0x5c, 0x88, 0x1f, 0xa0, 0x65, 0x33, 0xca, 0x9d, 0x2d, 0x27, 0x14, 0xd0, 0xf1, 0x37, 0x85, 0xa6, 0x1b, 0x3a, 0x17, 0xa7, 0x81, 0x40 } -, - /* Encryption */ - 129, - { 0x00, 0x8b, 0x19, 0x75, 0x58, 0xca, 0x4c, 0xe5, 0x90, 0x14, 0x58, 0xab, 0xd8, 0xe8, 0xfd, 0x52, 0xd9, 0x89, 0x96, 0x0f, 0x01, 0xc2, 0x16, 0xef, 0xb5, 0x81, 0xf8, 0x61, 0x14, 0x8d, 0x1a, 0x2b, 0x44, 0xeb, 0x0b, 0x7c, 0x15, 0xdd, 0xc3, 0x45, 0xdc, 0x83, 0xf9, 0x03, 0x7d, 0xdb, 0x8f, 0xe2, 0xea, 0xa2, 0xcb, 0xed, 0x9b, 0x1c, 0x1e, 0xee, 0xae, 0xb8, 0x65, 0xbd, 0x29, 0xf4, 0x4e, 0xe1, 0x47, 0x8c, 0x95, 0xe9, 0xfb, 0xf4, 0x44, 0x82, 0x8e, 0xed, 0xcb, 0xc0, 0x17, 0x02, 0x00, 0xde, 0x35, 0x49, 0xb2, 0x2c, 0x11, 0xe4, 0xb4, 0x33, 0x79, 0x8b, 0x9d, 0x63, 0xbb, 0x49, 0xf0, 0xb0, 0x2d, 0xaf, 0x56, 0x58, 0xce, 0xed, 0xea, 0xa9, 0x3c, 0x0f, 0xae, 0xb9, 0x44, 0x65, 0x38, 0xba, 0x92, 0xeb, 0x17, 0xc8, 0x5d, 0xb5, 0xee, 0xa2, 0x04, 0xba, 0x2f, 0x49, 0xc3, 0xce, 0x65, 0xbf, 0x13 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.16", - /* Message */ - 43, - { 0xce, 0x0a, 0x4a, 0x59, 0x39, 0xf6, 0xaa, 0x26, 0x3b, 0xbf, 0x8e, 0x1e, 0x5e, 0x94, 0x31, 0x03, 0x56, 0xab, 0xa5, 0x75, 0x59, 0xc4, 0x1b, 0x39, 0x44, 0x27, 0x70, 0xb6, 0x1f, 0x6b, 0x3c, 0x9b, 0x5f, 0xe7, 0x27, 0xf3, 0x19, 0x52, 0x28, 0x08, 0xd5, 0x80, 0x19 } -, - /* Seed */ - 83, - { 0x27, 0xcc, 0xe2, 0xd4, 0x3c, 0x71, 0x31, 0x8e, 0xd4, 0xfc, 0x8c, 0x0b, 0xdb, 0x9b, 0x79, 0x13, 0x53, 0x19, 0x9f, 0x3d, 0x89, 0xfc, 0x12, 0xac, 0x47, 0xfd, 0xb6, 0xd8, 0x8b, 0x44, 0xc6, 0x54, 0x5e, 0x9e, 0xee, 0xd9, 0xf4, 0xc6, 0x85, 0x15, 0xd4, 0xf5, 0x30, 0xb8, 0x13, 0x7d, 0x77, 0x45, 0x71, 0x3b, 0xad, 0x0e, 0xbb, 0x70, 0x52, 0x23, 0x1f, 0x6b, 0x4c, 0xed, 0x18, 0x7a, 0xec, 0xd1, 0xe7, 0xa1, 0x69, 0xd8, 0x6c, 0xbd, 0x13, 0xd5, 0x0b, 0x78, 0xbe, 0x27, 0xc6, 0x54, 0x5d, 0x81, 0x92, 0xe0, 0xec } -, - /* Encryption */ - 129, - { 0x0a, 0xd3, 0xae, 0x7e, 0x5a, 0x98, 0x65, 0x2c, 0x1b, 0xf3, 0x45, 0xc4, 0x91, 0x90, 0x3f, 0x55, 0x17, 0xc6, 0x11, 0xac, 0x31, 0x00, 0x05, 0x87, 0x7f, 0xa9, 0x1a, 0xbc, 0xee, 0x64, 0x85, 0xf2, 0x77, 0x8a, 0xbf, 0x0a, 0x6c, 0x73, 0x87, 0x87, 0x37, 0x63, 0x9b, 0x26, 0x72, 0xfd, 0xd0, 0x0a, 0x39, 0x65, 0xd7, 0xd3, 0xd8, 0xd7, 0x68, 0x8e, 0x77, 0xb5, 0x45, 0x9e, 0x14, 0x5e, 0xce, 0x64, 0xa9, 0xa5, 0x2c, 0x37, 0x97, 0xf3, 0x61, 0x07, 0xc9, 0x36, 0x8b, 0xdf, 0x79, 0x90, 0xf3, 0xfb, 0x6c, 0x5c, 0xff, 0x59, 0xf4, 0xf8, 0xa3, 0xd4, 0x90, 0x93, 0xdf, 0xfe, 0x74, 0x06, 0xc9, 0x10, 0xaa, 0x57, 0x23, 0x22, 0x8d, 0xae, 0x5a, 0x9b, 0x29, 0xa4, 0xcc, 0x47, 0x69, 0xaf, 0x8b, 0xd5, 0xfd, 0x6e, 0xce, 0x88, 0x58, 0xa2, 0x9d, 0xb1, 0xb1, 0x9c, 0x08, 0x1b, 0xf0, 0xd6, 0xb0, 0xdc, 0x78 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.17", - /* Message */ - 40, - { 0x03, 0xbf, 0xb2, 0x59, 0xbd, 0x92, 0x46, 0xde, 0x3f, 0x71, 0xc3, 0x13, 0x9c, 0x72, 0x85, 0x74, 0xb4, 0x4d, 0x97, 0xad, 0x57, 0xbb, 0xdd, 0x67, 0x01, 0x94, 0x95, 0xc2, 0xa2, 0x00, 0x41, 0x39, 0x26, 0x34, 0xe3, 0x1a, 0xad, 0x63, 0xf6, 0x3b } -, - /* Seed */ - 86, - { 0x5f, 0xa4, 0xbb, 0xb7, 0x0e, 0x1f, 0x9e, 0xcb, 0x5e, 0xb2, 0x14, 0x7b, 0xf4, 0x59, 0xd1, 0xd0, 0x64, 0x43, 0xf0, 0x25, 0xc0, 0x8e, 0x36, 0x4c, 0xcc, 0x1b, 0x16, 0x0c, 0x16, 0x41, 0x6f, 0xb1, 0x74, 0xb4, 0x4b, 0x95, 0x36, 0x38, 0xa9, 0x68, 0x8c, 0x5e, 0xa2, 0xd0, 0x60, 0x17, 0x1f, 0x30, 0x54, 0xf3, 0xca, 0x3f, 0xe0, 0x13, 0xb9, 0xe3, 0x18, 0x8e, 0xe3, 0x9d, 0xa9, 0x1f, 0x80, 0x16, 0xd4, 0xb7, 0x33, 0x18, 0x79, 0x35, 0x1f, 0x32, 0x2a, 0xe5, 0x29, 0x86, 0x4d, 0x90, 0x74, 0x09, 0x8a, 0xa2, 0x51, 0x6b, 0x44, 0xca } -, - /* Encryption */ - 129, - { 0x01, 0x78, 0xe3, 0xa0, 0x17, 0xed, 0x2f, 0xc1, 0x18, 0xbb, 0x2e, 0x03, 0x28, 0xbe, 0xb2, 0x8a, 0x98, 0xc8, 0x53, 0xb9, 0xe5, 0xa5, 0xf8, 0x30, 0x80, 0xc0, 0xf1, 0x01, 0x7f, 0xdc, 0xa8, 0x37, 0x92, 0x07, 0x72, 0x2c, 0x25, 0x73, 0x7a, 0x89, 0x15, 0xe0, 0xeb, 0x72, 0xc5, 0x22, 0x85, 0xe8, 0x8f, 0x61, 0x30, 0xa1, 0xcf, 0x56, 0xad, 0x1d, 0x96, 0xca, 0x2c, 0xe4, 0xb7, 0x1e, 0xc3, 0x68, 0x94, 0x7b, 0xd0, 0x71, 0xf8, 0x36, 0x59, 0x10, 0xc7, 0x92, 0x57, 0x5b, 0x8c, 0xd6, 0xfd, 0x27, 0xe5, 0x23, 0xe8, 0x59, 0x65, 0xdd, 0xa9, 0x22, 0x82, 0xd5, 0xdf, 0xd1, 0xc0, 0x64, 0xea, 0xab, 0x6a, 0xbe, 0xac, 0x65, 0xe1, 0x6a, 0xe0, 0x4f, 0x0d, 0x40, 0xb3, 0xbb, 0x68, 0x41, 0x0b, 0x92, 0x74, 0xdf, 0xee, 0xa3, 0x2a, 0x43, 0xf9, 0x40, 0x83, 0xc1, 0x07, 0x80, 0x35, 0x3f, 0x43, 0xe4, 0x3c } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.18", - /* Message */ - 37, - { 0x16, 0x2c, 0xca, 0x9e, 0xd4, 0x70, 0x8d, 0xd1, 0x03, 0x40, 0xe1, 0x94, 0xc3, 0x5c, 0x0a, 0x5f, 0xa4, 0x9a, 0x5c, 0x3b, 0x5b, 0x24, 0x71, 0x71, 0x20, 0x3c, 0xa4, 0x8a, 0x79, 0xe5, 0x2d, 0xff, 0x40, 0xf2, 0xbc, 0xa9, 0x9a } -, - /* Seed */ - 89, - { 0x4d, 0x73, 0xff, 0xcd, 0xc2, 0x69, 0x43, 0xa8, 0x70, 0x78, 0x23, 0x47, 0x8d, 0xa3, 0x1a, 0xac, 0x01, 0x27, 0x4b, 0x17, 0x17, 0xc5, 0x0c, 0x6a, 0xd0, 0xc6, 0x2e, 0xe2, 0xbc, 0xd5, 0x57, 0x95, 0x2e, 0xf1, 0x3f, 0x15, 0xff, 0xaf, 0x66, 0xbb, 0x4f, 0x45, 0x39, 0x99, 0x11, 0xc6, 0xd6, 0x5a, 0xd1, 0x87, 0x57, 0x2b, 0xc1, 0xeb, 0xa0, 0xd2, 0x86, 0xcc, 0x45, 0xaa, 0x49, 0x32, 0xe7, 0x3e, 0x47, 0x0c, 0x5d, 0xc8, 0x29, 0x39, 0x04, 0x02, 0x5c, 0x86, 0x3f, 0xbc, 0x96, 0x22, 0x37, 0x04, 0x90, 0xc9, 0x1c, 0x87, 0x40, 0xb0, 0x94, 0xd8, 0xf0 } -, - /* Encryption */ - 129, - { 0x04, 0x2b, 0xce, 0x0d, 0xfc, 0xec, 0xa9, 0xff, 0x05, 0xa6, 0xe3, 0xf7, 0x4a, 0x6a, 0x70, 0xcd, 0xcb, 0xe0, 0xde, 0xc8, 0x1e, 0xdd, 0xc8, 0x8e, 0x46, 0x7f, 0x47, 0xbb, 0x76, 0x0d, 0xa4, 0x4c, 0x79, 0x4d, 0x3c, 0xdc, 0xab, 0x93, 0x92, 0x49, 0xf8, 0x49, 0xd1, 0xd4, 0x39, 0x56, 0x64, 0x1b, 0x0b, 0x79, 0xc6, 0x86, 0x1c, 0x5f, 0x71, 0x5b, 0x9d, 0x8d, 0x8b, 0xe9, 0xf0, 0x76, 0x6a, 0xdb, 0x3f, 0x18, 0xaf, 0x7d, 0xb3, 0x6a, 0xd9, 0x5f, 0xfc, 0xd7, 0xe0, 0xfa, 0xc1, 0x62, 0x85, 0x23, 0xe8, 0xf6, 0x9a, 0xde, 0xb7, 0xff, 0x50, 0x94, 0xa2, 0xb5, 0xbf, 0x92, 0xb9, 0xd0, 0xef, 0xb1, 0x11, 0x8b, 0x85, 0x39, 0x26, 0x25, 0xfd, 0x56, 0xf8, 0x8f, 0xaa, 0x0a, 0x16, 0xd5, 0x47, 0x30, 0xfb, 0xc5, 0xca, 0xf1, 0x66, 0x82, 0xe9, 0xe4, 0x1b, 0x7e, 0x79, 0xd2, 0x02, 0x2f, 0x7c, 0xcf, 0x96 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.19", - /* Message */ - 58, - { 0x8e, 0x1b, 0x52, 0xcb, 0x4e, 0x00, 0x77, 0x27, 0xc4, 0xb5, 0xf6, 0x5d, 0x78, 0x47, 0xf3, 0x49, 0x16, 0x89, 0x1e, 0xf9, 0xc7, 0x3a, 0xd1, 0x8c, 0xf2, 0x71, 0xf8, 0x9f, 0x18, 0x2c, 0x69, 0x3e, 0x52, 0x89, 0xdc, 0x31, 0xda, 0xbc, 0x34, 0xcf, 0x7f, 0x44, 0xfb, 0xde, 0x57, 0x9e, 0x64, 0x51, 0x69, 0xec, 0xba, 0x6e, 0x4e, 0x87, 0x7f, 0x7d, 0xef, 0x44 } -, - /* Seed */ - 68, - { 0xba, 0x14, 0x74, 0x8e, 0x6d, 0xa7, 0xb6, 0xac, 0x18, 0x33, 0x32, 0x32, 0x95, 0xad, 0xb5, 0x42, 0x2d, 0xbd, 0x19, 0xe2, 0xec, 0x72, 0xdf, 0xd0, 0xaa, 0xfd, 0x7b, 0xd0, 0x7b, 0xfb, 0x97, 0xe7, 0xdb, 0x10, 0x8a, 0x3e, 0xaa, 0xdc, 0xff, 0x67, 0xb6, 0x7e, 0xc7, 0xe4, 0xc6, 0x70, 0x04, 0xc1, 0x78, 0x34, 0x6a, 0x12, 0x5d, 0xd3, 0xb6, 0xca, 0x55, 0x23, 0x70, 0x59, 0x4f, 0x7f, 0x42, 0xcb, 0x33, 0x4b, 0x44, 0x85 } -, - /* Encryption */ - 129, - { 0x09, 0x4b, 0x40, 0x30, 0xe3, 0x0c, 0x8b, 0x46, 0x2e, 0xca, 0x00, 0xf1, 0x6b, 0xb1, 0x70, 0x19, 0xd1, 0xea, 0x31, 0x25, 0xf1, 0xc6, 0x4c, 0x67, 0x1c, 0xb0, 0x0d, 0x46, 0xe3, 0xad, 0x87, 0x84, 0x28, 0x52, 0xb2, 0x01, 0x49, 0x6e, 0xe2, 0xb3, 0xd5, 0x42, 0x28, 0x93, 0xa8, 0x0c, 0x66, 0xa3, 0x0d, 0xa2, 0xc9, 0xf1, 0xa3, 0x2a, 0xd4, 0xd4, 0xe7, 0x73, 0x77, 0x43, 0xca, 0x1b, 0x78, 0xef, 0x7d, 0x4a, 0x63, 0xc5, 0xe1, 0xe0, 0xbe, 0x7e, 0x51, 0x88, 0xcc, 0xe9, 0x42, 0x95, 0x69, 0x74, 0xff, 0xd4, 0x81, 0xe6, 0x47, 0x83, 0x44, 0x23, 0x0c, 0x37, 0xda, 0x5b, 0x25, 0xf6, 0xb5, 0x99, 0xa5, 0x9a, 0x05, 0x80, 0xf1, 0xa0, 0x00, 0xc2, 0x59, 0x54, 0xf3, 0xa4, 0x63, 0xf2, 0x89, 0x5f, 0x32, 0xb0, 0x5c, 0xc0, 0x88, 0x21, 0xb1, 0xa0, 0x23, 0x60, 0x9f, 0x18, 0xca, 0x7d, 0x44, 0x9c, 0xb4 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 10.20", - /* Message */ - 12, - { 0x82, 0xff, 0x62, 0xaf, 0xfa, 0xd8, 0x00, 0x30, 0x94, 0xcc, 0x65, 0x35 } -, - /* Seed */ - 114, - { 0x1c, 0x7f, 0x21, 0xfd, 0x02, 0x09, 0x79, 0x07, 0x40, 0x5e, 0xaa, 0x77, 0xae, 0x72, 0x88, 0x65, 0x72, 0x1d, 0x93, 0x86, 0xf5, 0xaa, 0xbc, 0x2e, 0x0a, 0x95, 0xf3, 0xed, 0xb0, 0x5d, 0x46, 0xe2, 0x33, 0x79, 0x3b, 0xa1, 0xa3, 0x88, 0xe4, 0xb0, 0xdd, 0xa0, 0x0c, 0xc3, 0x2b, 0x94, 0x8a, 0xc2, 0x65, 0xae, 0x6a, 0x2b, 0xf2, 0xc3, 0x90, 0xa4, 0xdc, 0xce, 0x11, 0x0d, 0x5e, 0x86, 0x64, 0x47, 0x28, 0xf5, 0x37, 0x81, 0x36, 0x47, 0x6c, 0xf7, 0x1d, 0xc7, 0xba, 0xac, 0x50, 0xcc, 0x41, 0xc2, 0x01, 0x48, 0xdd, 0x37, 0xd5, 0xf7, 0x0a, 0x81, 0x2a, 0x29, 0x4e, 0x24, 0x2d, 0xe8, 0x03, 0xb4, 0x8b, 0x63, 0x40, 0xf4, 0x28, 0xd3, 0xc9, 0xbc, 0xa9, 0x6f, 0x76, 0x6f, 0xc4, 0xf4, 0x41, 0x67, 0xe0, 0x4a } -, - /* Encryption */ - 129, - { 0x00, 0x30, 0x3c, 0x35, 0x2e, 0x1f, 0xdd, 0x2a, 0xf8, 0xa8, 0xe3, 0xa1, 0x69, 0xb5, 0xda, 0xc5, 0x43, 0x45, 0xca, 0xa3, 0x35, 0xa7, 0x1a, 0x37, 0xe9, 0x38, 0xbf, 0x98, 0x47, 0x08, 0x86, 0x56, 0x84, 0x18, 0xae, 0x98, 0xd0, 0xaa, 0xdf, 0xe7, 0x9d, 0x0c, 0x65, 0x1b, 0x3f, 0x51, 0x6e, 0x70, 0xf1, 0x01, 0x74, 0xfe, 0x63, 0x22, 0xcd, 0x37, 0x6d, 0xa0, 0x2f, 0x22, 0x6d, 0x15, 0xb3, 0x6a, 0xbf, 0x6d, 0x1c, 0xbd, 0xab, 0x6d, 0xd5, 0x65, 0x4d, 0x99, 0x25, 0xf7, 0x25, 0x3c, 0xe9, 0x91, 0x51, 0x2a, 0x44, 0xe9, 0xfa, 0x15, 0x27, 0x12, 0xd7, 0xb8, 0xdb, 0x7f, 0x18, 0x33, 0x75, 0x80, 0xfe, 0x51, 0xdc, 0x32, 0xa0, 0x58, 0x2c, 0xe2, 0x60, 0x53, 0xf1, 0xb9, 0x49, 0x28, 0x69, 0xb9, 0xc4, 0x7d, 0xf9, 0x28, 0x39, 0xc0, 0x50, 0x2f, 0x2d, 0xb4, 0xcc, 0x4d, 0x0b, 0x20, 0x4f, 0x6f, 0xd1 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 11: A 1029-bit RSA key pair", -{ - /* Modulus */ - 129, - { 0x11, 0x65, 0x47, 0x94, 0xf4, 0x64, 0x9a, 0x97, 0xac, 0x87, 0xef, 0x67, 0x94, 0xf6, 0xa6, 0xff, 0xb5, 0xcd, 0xab, 0x87, 0x02, 0xc2, 0x32, 0x54, 0xfd, 0xe0, 0x34, 0xf3, 0x12, 0x9a, 0xad, 0x82, 0x5c, 0xf3, 0xc0, 0xcc, 0x38, 0x80, 0xa9, 0x6f, 0xb6, 0x4e, 0x48, 0xd7, 0x59, 0x5e, 0xde, 0x06, 0xc3, 0x1d, 0x0a, 0xcb, 0xd1, 0xf8, 0xef, 0x9c, 0xd1, 0xf9, 0xf6, 0xf0, 0x0b, 0x24, 0xba, 0x53, 0x45, 0xab, 0xa1, 0x46, 0xd4, 0x1c, 0x56, 0x3b, 0xae, 0xce, 0x3b, 0x25, 0x23, 0xdf, 0x6a, 0x9f, 0x43, 0x01, 0x8a, 0x5f, 0x08, 0x69, 0xb6, 0xec, 0x99, 0x34, 0x69, 0x88, 0x6b, 0x5d, 0x23, 0x17, 0xd5, 0x9c, 0xff, 0xd4, 0xed, 0xe9, 0x46, 0x6a, 0x03, 0xf6, 0xdf, 0xec, 0x17, 0x5c, 0xad, 0x5a, 0x85, 0x44, 0x30, 0x95, 0xc7, 0x30, 0xb9, 0x8b, 0xbf, 0xa0, 0x48, 0x9b, 0x91, 0xbb, 0x27, 0x39, 0x9d } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x1d, 0x4c, 0x4c, 0x6e, 0x13, 0xda, 0xb2, 0x84, 0x6c, 0xe6, 0x85, 0xd0, 0xc4, 0x93, 0x52, 0x5b, 0xb0, 0xad, 0x35, 0x62, 0x59, 0x6d, 0xb9, 0xad, 0x16, 0x94, 0x5d, 0x44, 0x5c, 0xe6, 0x7c, 0x54, 0xe9, 0x38, 0xf6, 0x54, 0x54, 0x2b, 0x09, 0x34, 0x48, 0x02, 0x91, 0xac, 0x21, 0xae, 0xd0, 0x98, 0xe8, 0x5a, 0xd6, 0xfe, 0xc6, 0xd0, 0xfe, 0x15, 0x4c, 0x3c, 0x34, 0x2b, 0x16, 0x99, 0x9a, 0x8c, 0xec, 0xe7, 0xfa, 0xf9, 0x90, 0xb7, 0xc8, 0xce, 0x87, 0xb6, 0x6f, 0xe3, 0x27, 0xfb, 0x35, 0x2e, 0xd0, 0x11, 0x32, 0x3d, 0x2b, 0x81, 0x9a, 0x36, 0xca, 0xbe, 0xcc, 0x5a, 0xae, 0x72, 0x30, 0xd3, 0xf8, 0xe0, 0x02, 0x45, 0xaf, 0x35, 0xaf, 0x80, 0x88, 0x62, 0xe5, 0x4d, 0x92, 0x56, 0x07, 0xee, 0x8b, 0x58, 0xe6, 0xa9, 0xf3, 0xad, 0x8f, 0xa7, 0x28, 0xfc, 0xe2, 0x68, 0x56, 0xc3, 0x67, 0xb1 } -, - /* Prime 1 */ - 65, - { 0x04, 0x41, 0x0a, 0xb5, 0x54, 0x60, 0x2d, 0x7e, 0xfb, 0x0c, 0xce, 0x92, 0x71, 0xa5, 0x22, 0x20, 0xf2, 0x52, 0x50, 0x02, 0x34, 0xb3, 0x82, 0x02, 0xfa, 0xfc, 0x94, 0xaa, 0x26, 0xb4, 0xfb, 0x04, 0xe5, 0xf5, 0x08, 0x74, 0x9a, 0x44, 0xef, 0xb8, 0x9b, 0x75, 0x78, 0xdb, 0x00, 0x7e, 0x03, 0x06, 0x23, 0x89, 0x48, 0x69, 0x12, 0x80, 0xf7, 0x3c, 0x12, 0x7a, 0x49, 0x30, 0xb4, 0x63, 0x39, 0xba, 0xd9 } -, - /* Prime 2 */ - 65, - { 0x04, 0x16, 0xd3, 0xfd, 0xed, 0x8f, 0x9e, 0x7b, 0x01, 0x9f, 0x67, 0x12, 0x32, 0x0e, 0xec, 0x11, 0xd8, 0xcc, 0x83, 0x81, 0xea, 0x86, 0x26, 0x6e, 0xe0, 0x3f, 0x00, 0x72, 0xe9, 0xa2, 0xfc, 0xdd, 0x80, 0x81, 0xae, 0x74, 0xfe, 0x27, 0x88, 0x70, 0xf4, 0xfd, 0xa2, 0xa0, 0x00, 0x6c, 0x4f, 0x54, 0x23, 0x9e, 0x24, 0xa1, 0x5d, 0x1a, 0xeb, 0xc6, 0x7d, 0x90, 0xd8, 0x18, 0x4d, 0x29, 0x5f, 0x52, 0x65 } -, - /* Prime exponent 1 */ - 65, - { 0x04, 0x06, 0x7b, 0x98, 0x7b, 0x5f, 0x8a, 0x8d, 0x56, 0x06, 0x97, 0x4d, 0x11, 0x06, 0x1d, 0x96, 0x29, 0x55, 0x63, 0xe9, 0xc2, 0x6e, 0x7d, 0x3e, 0x4e, 0xba, 0x43, 0xfe, 0x01, 0x24, 0x4d, 0x46, 0x24, 0x46, 0x49, 0x1a, 0xf4, 0x82, 0xf8, 0x86, 0xa9, 0x6b, 0x6d, 0xd1, 0x64, 0xd4, 0xd8, 0x0d, 0xae, 0x00, 0x90, 0x29, 0x04, 0x5e, 0x4e, 0x13, 0x64, 0xb4, 0x9b, 0x9e, 0xdf, 0x81, 0xe8, 0xb5, 0x79 } -, - /* Prime exponent 2 */ - 64, - { 0xe1, 0x38, 0x72, 0xe5, 0x6d, 0x84, 0xd7, 0x4a, 0x1e, 0x15, 0x7a, 0xe0, 0xb2, 0x3d, 0x30, 0x09, 0xc8, 0xd6, 0x72, 0x59, 0x16, 0xcb, 0xa6, 0x07, 0x31, 0x06, 0xd3, 0xb2, 0x58, 0x92, 0xb6, 0xc5, 0x33, 0x21, 0x69, 0xa2, 0x54, 0xb7, 0x12, 0x36, 0x63, 0x6b, 0x5d, 0xa9, 0x39, 0xa4, 0x47, 0xa1, 0xf2, 0x20, 0x47, 0x67, 0x54, 0xa7, 0x6d, 0x69, 0x0e, 0x84, 0xaf, 0x95, 0xca, 0x54, 0xeb, 0xd1 } -, - /* Coefficient */ - 65, - { 0x02, 0x51, 0x37, 0xae, 0x5d, 0x25, 0xfe, 0x1d, 0xaf, 0x9b, 0x38, 0x32, 0xf8, 0x07, 0x56, 0xb8, 0x6d, 0xb5, 0xca, 0x0e, 0x37, 0x2e, 0x51, 0x63, 0x03, 0x4e, 0xa3, 0x39, 0x1f, 0x5e, 0x54, 0x58, 0x2a, 0x1d, 0xd0, 0x47, 0x58, 0xb9, 0x92, 0xa5, 0xa8, 0xe4, 0x6e, 0xe1, 0x6f, 0x8a, 0xd3, 0x8c, 0xa6, 0x52, 0x27, 0x45, 0xaa, 0x7d, 0xf5, 0x1d, 0xf8, 0x9f, 0xc2, 0x21, 0x08, 0x01, 0x0e, 0x00, 0x4e } - -} -, -{{ - "PKCS#1 v1.5 Encryption Example 11.1", - /* Message */ - 15, - { 0x4e, 0xa8, 0xdf, 0xda, 0x3a, 0x9c, 0x26, 0x70, 0xca, 0x9b, 0x80, 0xfa, 0x89, 0x71, 0x0a } -, - /* Seed */ - 111, - { 0x96, 0x06, 0x42, 0x1b, 0x97, 0x3a, 0xb4, 0xba, 0x2a, 0xe2, 0x2f, 0xf5, 0x38, 0x70, 0x7d, 0x7d, 0x4e, 0x56, 0x3e, 0x8f, 0x05, 0xf2, 0x0b, 0xc3, 0x38, 0x1f, 0xf4, 0x5b, 0x0c, 0x29, 0x19, 0xa1, 0xb3, 0x46, 0xb0, 0x76, 0x03, 0x5a, 0xe7, 0x74, 0xb3, 0x2a, 0xf8, 0xee, 0x56, 0x6c, 0x73, 0xe2, 0x09, 0x49, 0x68, 0x4e, 0x44, 0x74, 0x80, 0xdf, 0xa3, 0x4d, 0xbb, 0x0c, 0x22, 0x66, 0x61, 0x50, 0x90, 0x9a, 0x59, 0xe1, 0xbb, 0x22, 0xd0, 0x95, 0xab, 0xe5, 0x02, 0x5a, 0x76, 0xd6, 0x0e, 0xc1, 0x01, 0xc7, 0x80, 0xe8, 0x3a, 0x0f, 0xf1, 0x59, 0x46, 0x5c, 0x3e, 0x7a, 0xc0, 0x21, 0x2b, 0xb3, 0x8b, 0x2f, 0x1e, 0x0e, 0x6e, 0x0b, 0x54, 0xd3, 0x5f, 0x4c, 0x76, 0x04, 0xc2, 0xd0, 0x93 } -, - /* Encryption */ - 129, - { 0x09, 0xbb, 0xcd, 0x8b, 0x63, 0xb2, 0x9c, 0xe9, 0x52, 0x26, 0xec, 0x1d, 0x51, 0x91, 0x2a, 0xf3, 0x97, 0x89, 0xfc, 0xe5, 0xe7, 0x7e, 0x7b, 0xe6, 0x78, 0x96, 0xc2, 0xc4, 0xe4, 0xc4, 0x37, 0x6f, 0xa4, 0x28, 0xec, 0x5d, 0x8a, 0x49, 0x7a, 0xcc, 0xa9, 0xe0, 0x82, 0x1e, 0x1f, 0x6d, 0xe1, 0x06, 0x78, 0x19, 0xc4, 0x8a, 0x51, 0x6f, 0x06, 0x91, 0xcb, 0xea, 0xcb, 0xb1, 0x9d, 0x1b, 0xa5, 0x09, 0xf0, 0x4f, 0xc0, 0x13, 0x36, 0xd9, 0x0f, 0x73, 0x96, 0xb4, 0x3a, 0xa2, 0xf2, 0xb5, 0x15, 0x0c, 0x28, 0xa4, 0x5f, 0x35, 0xa9, 0xde, 0x1a, 0x29, 0x73, 0xea, 0x10, 0x28, 0x67, 0x94, 0x94, 0x0a, 0xb7, 0x9f, 0x12, 0x9e, 0x31, 0x8c, 0xf9, 0x7a, 0x5f, 0xd7, 0x2b, 0x04, 0x5b, 0x46, 0x6d, 0x66, 0x6e, 0x5d, 0xe0, 0xb7, 0x14, 0xf2, 0x12, 0xa0, 0xb9, 0x05, 0x2a, 0x0c, 0x91, 0x44, 0x8e, 0x52, 0x0d } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Encryption Example 11.2", - /* Message */ - 27, - { 0xc6, 0xe2, 0x57, 0xf3, 0xa1, 0xb3, 0x5b, 0xbd, 0xc5, 0xcf, 0x42, 0x0b, 0xd7, 0x65, 0x4c, 0x52, 0xb2, 0x52, 0xdf, 0x32, 0xc5, 0x70, 0xd4, 0x28, 0xe6, 0x3e, 0xa2 } -, - /* Seed */ - 99, - { 0x77, 0xbb, 0xd7, 0x2b, 0x7b, 0x8f, 0xd2, 0x85, 0x02, 0xec, 0xf7, 0x9f, 0xd1, 0xc8, 0xaf, 0x8e, 0xbf, 0xe2, 0x44, 0x32, 0x70, 0x93, 0xb8, 0x24, 0x79, 0x5e, 0x95, 0xc0, 0xb4, 0x36, 0xeb, 0x41, 0xe5, 0xf0, 0xf2, 0xae, 0xc4, 0x33, 0x63, 0xaa, 0x2c, 0x08, 0xfc, 0x33, 0xf2, 0x87, 0xe6, 0x53, 0x80, 0x40, 0xe4, 0x28, 0x0d, 0xba, 0x47, 0x23, 0xe5, 0x32, 0x92, 0xe0, 0xa6, 0x7b, 0x21, 0xef, 0x77, 0x70, 0x79, 0x85, 0xb7, 0x2b, 0x2e, 0xca, 0xde, 0x28, 0x0a, 0x61, 0xfa, 0x73, 0xd7, 0x3d, 0xbb, 0x2f, 0xdb, 0x17, 0xf7, 0x75, 0xf4, 0x5f, 0xa1, 0x75, 0xb7, 0x7c, 0xb1, 0x06, 0x7d, 0x6f, 0x93, 0xa4, 0x37 } -, - /* Encryption */ - 129, - { 0x0d, 0x21, 0x49, 0x5c, 0x49, 0x28, 0xc2, 0x6a, 0x92, 0xc1, 0x6a, 0x90, 0x7f, 0x08, 0x33, 0x35, 0xad, 0xe8, 0xeb, 0x0c, 0x20, 0xb0, 0xb4, 0x5f, 0xe0, 0xe0, 0x8e, 0xf3, 0x9a, 0xe2, 0x4e, 0xc0, 0xb5, 0x05, 0x7e, 0x60, 0x78, 0xdd, 0x7a, 0x1b, 0x9d, 0x10, 0x2c, 0x24, 0x81, 0x85, 0x57, 0xe9, 0x0b, 0x83, 0xff, 0xda, 0x14, 0xf3, 0xcc, 0x37, 0x3c, 0x84, 0xc1, 0x05, 0xce, 0xee, 0x71, 0xbc, 0x73, 0x1a, 0x7f, 0x35, 0x71, 0xbd, 0x7b, 0xbb, 0xa1, 0xd4, 0xf2, 0x3f, 0xf4, 0xdf, 0x0a, 0x84, 0xf3, 0x12, 0x99, 0x0f, 0xf7, 0x71, 0xff, 0x11, 0x8f, 0x05, 0xbc, 0xfa, 0x22, 0x2f, 0x11, 0xc1, 0xea, 0x01, 0xf6, 0xa4, 0x68, 0xca, 0x5a, 0x87, 0x50, 0x80, 0x40, 0x98, 0xf8, 0x46, 0xa8, 0x64, 0x30, 0xea, 0x23, 0xe9, 0xf0, 0x7e, 0x23, 0x48, 0x46, 0x1e, 0xf0, 0x0b, 0xa6, 0x25, 0x34, 0xfc, 0xe7 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.3", - /* Message */ - 41, - { 0x2d, 0x30, 0x7f, 0x44, 0xdd, 0xff, 0x9c, 0x45, 0x35, 0xa0, 0x6e, 0xda, 0x01, 0x4a, 0x19, 0x13, 0x04, 0xfb, 0x3f, 0xa8, 0xe3, 0xa2, 0xbe, 0x88, 0xbb, 0x3b, 0x7b, 0xe9, 0x9f, 0x94, 0xd1, 0x33, 0x9c, 0x21, 0x9a, 0x51, 0xff, 0x5c, 0xad, 0xda, 0x93 } -, - /* Seed */ - 85, - { 0x5f, 0xab, 0x24, 0x2d, 0xd9, 0xf2, 0x92, 0x4b, 0x20, 0xd3, 0x78, 0xa8, 0x87, 0xb5, 0xde, 0x21, 0xd1, 0x95, 0x76, 0x9c, 0x3b, 0x53, 0x71, 0xc0, 0x0f, 0x4c, 0x3f, 0x1b, 0x63, 0x26, 0x8b, 0x01, 0x0c, 0x31, 0xf3, 0x2b, 0xb8, 0x7c, 0x9a, 0x52, 0x29, 0xe0, 0xd9, 0x30, 0x5f, 0x5f, 0xc8, 0x3b, 0x89, 0x34, 0xb9, 0x98, 0xd8, 0xce, 0xdf, 0x91, 0x6f, 0x7a, 0x4d, 0x72, 0x68, 0xfe, 0x3b, 0xe5, 0x12, 0x35, 0xf8, 0xbe, 0xac, 0x80, 0x0d, 0x4f, 0xff, 0xca, 0x6f, 0xfd, 0xdb, 0x29, 0xda, 0x4f, 0xa1, 0xc7, 0x76, 0x9d, 0x51 } -, - /* Encryption */ - 129, - { 0x0f, 0xaf, 0xb6, 0x1c, 0x37, 0x16, 0xc7, 0x96, 0x69, 0xfc, 0xd1, 0x64, 0x52, 0x46, 0xa0, 0xd3, 0xb0, 0x75, 0xb2, 0x8b, 0x73, 0x82, 0x20, 0x15, 0xa8, 0xca, 0xdc, 0x88, 0xa2, 0x2b, 0x7d, 0xa5, 0x39, 0x43, 0xe2, 0x54, 0x4d, 0xe3, 0x96, 0xbe, 0xee, 0xd3, 0xb0, 0xa9, 0x89, 0xad, 0x20, 0xa7, 0x3d, 0xdc, 0xd1, 0x91, 0xe8, 0xaa, 0x5c, 0xae, 0xb6, 0xe9, 0x08, 0x8a, 0x4a, 0x3a, 0xe8, 0x40, 0x67, 0xf9, 0x19, 0x8e, 0x92, 0x4a, 0x9c, 0xfe, 0x14, 0x50, 0xb0, 0x18, 0xa6, 0xb6, 0x9d, 0xd2, 0x37, 0x58, 0xe9, 0x25, 0x1c, 0x76, 0xcc, 0xea, 0xe8, 0x40, 0xda, 0x2c, 0xc6, 0x25, 0x17, 0x39, 0xe2, 0x3b, 0x9a, 0x42, 0xb6, 0x34, 0x46, 0xec, 0xa0, 0xd6, 0x15, 0x99, 0xa1, 0x46, 0xb7, 0x41, 0xfd, 0x43, 0x51, 0x1c, 0x73, 0x66, 0x3a, 0x92, 0x3e, 0x37, 0x57, 0xf1, 0x8a, 0x17, 0x1c, 0x3b, 0x12 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.4", - /* Message */ - 10, - { 0x1f, 0x03, 0x33, 0x88, 0x55, 0x4b, 0xeb, 0xfa, 0xa0, 0x1c } -, - /* Seed */ - 116, - { 0x9d, 0x81, 0x57, 0x56, 0x74, 0x66, 0x3b, 0x3d, 0x87, 0x7d, 0x4b, 0x0a, 0xa4, 0xfd, 0xc6, 0x05, 0x47, 0x0a, 0xbc, 0x55, 0x0b, 0x53, 0x52, 0x72, 0xc8, 0x23, 0x70, 0x18, 0x86, 0x7c, 0x50, 0x22, 0xca, 0xfe, 0x6a, 0x4a, 0xc8, 0x37, 0x37, 0xe9, 0x9c, 0x6e, 0xba, 0xfe, 0x69, 0xca, 0xa7, 0xfd, 0xca, 0x70, 0x27, 0xc8, 0xfb, 0xc4, 0x37, 0xec, 0x52, 0x32, 0xce, 0x2e, 0x25, 0x29, 0xa0, 0xf7, 0x03, 0xe2, 0x01, 0xf7, 0xe5, 0x10, 0x32, 0x35, 0xba, 0x65, 0xa6, 0x47, 0x94, 0xf1, 0x90, 0xef, 0x42, 0x54, 0x93, 0xb6, 0x48, 0xed, 0x24, 0xa2, 0x19, 0x7d, 0x0a, 0xb0, 0x4d, 0x81, 0xc7, 0xb3, 0x35, 0xa2, 0xda, 0xfd, 0x6b, 0x59, 0xc9, 0x43, 0xa0, 0x9b, 0x48, 0xea, 0xc3, 0x5e, 0x35, 0x59, 0x62, 0x91, 0xf5, 0xf7 } -, - /* Encryption */ - 129, - { 0x00, 0x1b, 0xdf, 0x33, 0x93, 0x34, 0x2c, 0x38, 0x13, 0xee, 0x3b, 0x87, 0x07, 0xea, 0xf5, 0x46, 0x47, 0xba, 0xde, 0x4c, 0x71, 0x8a, 0x4b, 0x64, 0x54, 0x78, 0x12, 0xe0, 0x10, 0xc2, 0xb7, 0x46, 0xc8, 0x8c, 0xda, 0xfd, 0xc3, 0x16, 0xf0, 0x36, 0x9a, 0x6c, 0x43, 0x0a, 0xe7, 0xe6, 0xc5, 0x0f, 0x05, 0xd5, 0x45, 0xc3, 0xf7, 0x98, 0xde, 0xb1, 0xd9, 0xa5, 0xbb, 0x69, 0xc5, 0x91, 0x39, 0x33, 0xc2, 0xd7, 0x79, 0x2f, 0xae, 0x9d, 0x42, 0xad, 0x76, 0x49, 0x4d, 0xc9, 0xa3, 0xe2, 0x7c, 0x21, 0x1d, 0xb4, 0xef, 0x19, 0x85, 0x18, 0x7a, 0x6c, 0x4d, 0x28, 0x1c, 0x47, 0x72, 0x17, 0x74, 0xa7, 0xa1, 0x1c, 0x12, 0x18, 0xd4, 0xdd, 0x26, 0x7b, 0x57, 0x48, 0x58, 0x77, 0xaa, 0x75, 0x1f, 0x6c, 0x28, 0x19, 0xf8, 0x1b, 0x50, 0x54, 0xa2, 0x8a, 0x26, 0xa5, 0x3d, 0xf3, 0xea, 0x34, 0x82, 0xb3, 0x40 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.5", - /* Message */ - 43, - { 0xf7, 0x1b, 0xc7, 0x37, 0x4b, 0xd5, 0x9c, 0x37, 0x77, 0x59, 0x76, 0xf3, 0x35, 0x24, 0x4a, 0x36, 0x84, 0x3c, 0x59, 0xe7, 0x48, 0x9a, 0xd2, 0x8b, 0x1a, 0x82, 0x2d, 0x2d, 0x7d, 0x0b, 0x9a, 0x6f, 0xe9, 0xac, 0x5b, 0xf4, 0x36, 0x82, 0xd6, 0x3d, 0x63, 0x6e, 0xf6 } -, - /* Seed */ - 83, - { 0xa1, 0xff, 0x98, 0x44, 0xa7, 0x3e, 0xc4, 0xb3, 0xbe, 0xfb, 0x1a, 0x86, 0x03, 0x52, 0xcf, 0x9b, 0x75, 0xfc, 0x66, 0xff, 0x47, 0x9a, 0x2d, 0xed, 0x59, 0x98, 0x84, 0x5a, 0x79, 0x77, 0x3a, 0x8c, 0x62, 0x06, 0xa3, 0x64, 0x36, 0xc8, 0x80, 0xa5, 0x5e, 0x18, 0x71, 0x18, 0x35, 0x45, 0x6d, 0x91, 0x45, 0x4b, 0x5b, 0xa1, 0x32, 0x07, 0x8f, 0x20, 0x37, 0xfb, 0xda, 0x72, 0x86, 0x25, 0x1b, 0xad, 0xd1, 0x2d, 0x0a, 0x97, 0x81, 0xaf, 0x3f, 0x58, 0x97, 0xcd, 0x94, 0x7b, 0x1e, 0x14, 0x25, 0xf9, 0x70, 0x55, 0x09 } -, - /* Encryption */ - 129, - { 0x09, 0x3f, 0xb6, 0x85, 0x26, 0xce, 0xad, 0x01, 0x0a, 0x54, 0xd1, 0x16, 0xcd, 0x7d, 0x60, 0x35, 0x09, 0x9b, 0xf1, 0xab, 0xff, 0xe9, 0x33, 0x1d, 0xe3, 0x64, 0x86, 0xf0, 0x53, 0xa8, 0x02, 0x98, 0xe4, 0xab, 0xfa, 0xb4, 0x0d, 0x3b, 0x03, 0xa3, 0xe7, 0xe9, 0x25, 0x59, 0x73, 0x38, 0xf1, 0x70, 0x3b, 0x04, 0x53, 0x5a, 0x9c, 0x87, 0xc6, 0x58, 0x36, 0xf1, 0x61, 0x11, 0xaa, 0xe8, 0x89, 0xe6, 0xc8, 0xd9, 0x0a, 0x24, 0x07, 0xd4, 0x41, 0xa1, 0xc2, 0xa3, 0x11, 0xcb, 0xd9, 0x46, 0x11, 0xa4, 0x2e, 0x93, 0xc7, 0x3a, 0x3d, 0x21, 0x48, 0x3f, 0xad, 0xb8, 0xf4, 0xe2, 0x46, 0xd0, 0x89, 0xf1, 0xcf, 0xd7, 0x08, 0x52, 0xb4, 0xdc, 0x77, 0x8a, 0x60, 0xd1, 0x52, 0xd3, 0xfc, 0xa7, 0x5f, 0xd6, 0x06, 0x67, 0x04, 0xe9, 0x33, 0xbf, 0x99, 0xf5, 0xbb, 0x77, 0xaf, 0xc9, 0xa9, 0xcb, 0x3b, 0x8c, 0xb5 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.6", - /* Message */ - 25, - { 0x46, 0x87, 0x83, 0xd4, 0xea, 0xc8, 0x81, 0x34, 0x32, 0x04, 0x85, 0x47, 0xce, 0x24, 0x1f, 0x72, 0xdb, 0x1c, 0x85, 0xce, 0x4a, 0xdb, 0xe3, 0xee, 0x2c } -, - /* Seed */ - 101, - { 0xc6, 0xe3, 0x26, 0x30, 0xed, 0x90, 0xd0, 0xaf, 0xb1, 0x68, 0xc0, 0x8b, 0x75, 0x22, 0x59, 0xef, 0x4b, 0x9e, 0x81, 0x17, 0x62, 0xf7, 0xcf, 0x4c, 0x53, 0x5c, 0xb4, 0xa0, 0xa0, 0x4b, 0x1d, 0x43, 0x65, 0x4e, 0xd4, 0xfa, 0xdf, 0xc7, 0xdd, 0xbc, 0x3a, 0xad, 0x03, 0x14, 0x07, 0x8b, 0x22, 0x6c, 0x4f, 0x3e, 0x97, 0x84, 0x45, 0x7c, 0x91, 0xc7, 0x76, 0x8c, 0x5c, 0x37, 0xb7, 0x60, 0x08, 0x93, 0x2e, 0x8d, 0x04, 0x57, 0x85, 0x05, 0x73, 0xce, 0x6b, 0x41, 0xa4, 0x3c, 0xdd, 0xa9, 0x70, 0x03, 0x18, 0x36, 0x84, 0x0e, 0x4e, 0x60, 0xa3, 0x48, 0x7b, 0x47, 0xa1, 0x85, 0xc8, 0x6f, 0x8a, 0x16, 0xf6, 0xf2, 0x21, 0xd0, 0xa0 } -, - /* Encryption */ - 129, - { 0x01, 0x71, 0xa1, 0x2b, 0x00, 0xcf, 0xd1, 0x09, 0x67, 0x4e, 0x5b, 0xf7, 0xf8, 0x43, 0x47, 0xfd, 0xa3, 0xfe, 0x4a, 0x8e, 0xa2, 0xf4, 0x8e, 0x0d, 0x6b, 0x6d, 0x94, 0xb4, 0x9f, 0xd7, 0xbd, 0xfb, 0x26, 0xe3, 0x24, 0x00, 0xa7, 0x12, 0x51, 0xab, 0x84, 0x22, 0x06, 0x92, 0x1d, 0x83, 0x72, 0x3a, 0x89, 0xea, 0x09, 0x93, 0x00, 0x25, 0x92, 0x0e, 0x3e, 0xf8, 0xa8, 0x87, 0xd2, 0xbc, 0x24, 0x15, 0xa7, 0xf1, 0xed, 0x37, 0xba, 0x8a, 0x5d, 0x03, 0xef, 0x92, 0x6a, 0xce, 0xf6, 0x11, 0x90, 0x00, 0x1c, 0x5e, 0xa0, 0xf8, 0xcd, 0x92, 0x02, 0x0c, 0xd8, 0x96, 0x67, 0xe9, 0xea, 0x5f, 0x7f, 0x2b, 0x15, 0x37, 0x8a, 0x21, 0x0b, 0x8a, 0xe9, 0x14, 0x81, 0x90, 0x98, 0xda, 0x1c, 0xbe, 0xc9, 0xc5, 0x43, 0xa2, 0x63, 0x30, 0x0f, 0x99, 0x4f, 0xb0, 0xb4, 0x92, 0x85, 0x71, 0x40, 0x1c, 0x20, 0x2b, 0xd6 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.7", - /* Message */ - 26, - { 0xaf, 0x63, 0x1d, 0x76, 0xc9, 0x7f, 0xd9, 0x95, 0xe4, 0x94, 0xaa, 0x9b, 0x4b, 0xd7, 0x58, 0xc5, 0xc6, 0x72, 0xc5, 0xe4, 0x15, 0x8f, 0x3a, 0xaf, 0x87, 0x4b } -, - /* Seed */ - 100, - { 0x40, 0x6e, 0x1e, 0x23, 0xf9, 0x92, 0xbb, 0x07, 0x62, 0x12, 0x5c, 0xa4, 0x63, 0xbd, 0x0f, 0x2e, 0xfd, 0xf1, 0xbf, 0xcb, 0x08, 0x2a, 0x8d, 0xf5, 0x06, 0xaf, 0x5f, 0x72, 0x70, 0xc3, 0x9f, 0xde, 0x01, 0xd9, 0xee, 0xd3, 0x22, 0x66, 0x61, 0xdb, 0x22, 0xa9, 0xc4, 0x04, 0xb7, 0xd7, 0x65, 0xfa, 0x38, 0x4f, 0x9a, 0xd4, 0xf5, 0x1b, 0x93, 0x69, 0xd7, 0x4b, 0x0e, 0x37, 0x70, 0x66, 0x31, 0xbc, 0x65, 0x36, 0xf6, 0x55, 0x5e, 0xc7, 0xfd, 0xeb, 0xd3, 0x48, 0xef, 0x3c, 0xf5, 0xf8, 0xa8, 0x77, 0xf6, 0x06, 0x43, 0x7c, 0x27, 0x8c, 0xb8, 0x16, 0x3a, 0xd3, 0x49, 0x38, 0x4b, 0xaa, 0xe3, 0x2f, 0x31, 0xb6, 0x86, 0xe0 } -, - /* Encryption */ - 129, - { 0x01, 0xff, 0x8f, 0xe7, 0x9a, 0xf3, 0x18, 0xd7, 0x56, 0xf2, 0x84, 0x08, 0x3b, 0x51, 0xb4, 0x3b, 0x66, 0xaa, 0xe8, 0x3c, 0x6a, 0xa9, 0x1a, 0x99, 0x93, 0x4b, 0x4d, 0xe8, 0x4b, 0xd5, 0xfd, 0x24, 0xfa, 0x8d, 0x07, 0xc7, 0x55, 0x14, 0x74, 0x66, 0x5e, 0x62, 0x36, 0x0a, 0x65, 0x98, 0x4e, 0x67, 0xa4, 0x85, 0x6c, 0x3d, 0xbd, 0x2c, 0x75, 0xf2, 0x46, 0xe2, 0x22, 0x22, 0xe9, 0xf4, 0xb9, 0x69, 0x51, 0x67, 0x26, 0xed, 0x28, 0x7f, 0x42, 0x3a, 0x67, 0x47, 0x82, 0x1f, 0xbb, 0xb7, 0xfa, 0x17, 0x62, 0x35, 0xc8, 0x50, 0xa8, 0x61, 0xf2, 0x99, 0xf7, 0x39, 0x4c, 0x2c, 0x43, 0x07, 0xb1, 0x02, 0x59, 0x09, 0x40, 0xfe, 0xd1, 0x20, 0x6a, 0xd5, 0x9b, 0x9d, 0xd6, 0x44, 0x4e, 0x1e, 0x19, 0x6e, 0x94, 0x73, 0x25, 0x22, 0x4f, 0xfa, 0xca, 0x06, 0x9e, 0x9c, 0xdf, 0x8c, 0x62, 0x02, 0x69, 0x07, 0x7d } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.8", - /* Message */ - 56, - { 0x73, 0xcb, 0x53, 0x90, 0x82, 0xfb, 0x06, 0xdc, 0xae, 0x3c, 0x20, 0x68, 0xe9, 0x89, 0xe7, 0xc0, 0xd8, 0xff, 0xf0, 0xfb, 0x34, 0x0b, 0x6d, 0xe8, 0x0d, 0x0b, 0xa5, 0xd1, 0xe0, 0x06, 0x4f, 0x22, 0x13, 0x92, 0x8a, 0x4b, 0xaf, 0x20, 0xa8, 0x03, 0x48, 0xaf, 0x3c, 0xde, 0x9d, 0xe6, 0x3f, 0x88, 0x6d, 0x63, 0xe5, 0x6a, 0x3e, 0x32, 0xcd, 0x8e } -, - /* Seed */ - 70, - { 0x28, 0xe2, 0xa9, 0x7c, 0x7e, 0x9e, 0x03, 0x3b, 0x49, 0xaa, 0xdc, 0xee, 0x8f, 0xdc, 0x07, 0xed, 0xfd, 0xfd, 0xb9, 0x50, 0x35, 0x4b, 0x70, 0x8c, 0xe5, 0xdf, 0x84, 0x8d, 0x1b, 0x51, 0xaa, 0x2f, 0x4a, 0xff, 0x99, 0x74, 0x16, 0x01, 0x81, 0x42, 0x29, 0x47, 0xb1, 0x33, 0x76, 0x4c, 0x5a, 0x40, 0x06, 0x57, 0x04, 0x6a, 0x49, 0x36, 0x3f, 0xfd, 0xf1, 0xf9, 0x3c, 0xa4, 0x8b, 0x3e, 0x52, 0x93, 0x7e, 0x1f, 0x38, 0xfb, 0x50, 0xfb } -, - /* Encryption */ - 129, - { 0x0c, 0x72, 0xe6, 0x95, 0x48, 0xc3, 0x4e, 0xca, 0xf2, 0x48, 0xb2, 0xdc, 0x6b, 0xb6, 0x43, 0x87, 0xf4, 0xf3, 0x35, 0x0f, 0x66, 0x8e, 0x59, 0x01, 0x35, 0x60, 0x80, 0x8c, 0x41, 0x3f, 0xa8, 0x35, 0xfd, 0x36, 0x0e, 0x04, 0xe4, 0x74, 0x7a, 0x00, 0x31, 0xc8, 0xa6, 0x4a, 0x9d, 0x7a, 0x07, 0xb3, 0x63, 0xfa, 0xd2, 0x93, 0xb7, 0x03, 0xa7, 0xdc, 0x99, 0x0f, 0x80, 0x6f, 0xb9, 0x0e, 0x39, 0x12, 0x21, 0xa1, 0x16, 0xdf, 0x10, 0x8f, 0x54, 0x6e, 0xae, 0x51, 0x71, 0x6b, 0xa0, 0x45, 0x01, 0xab, 0x77, 0x7b, 0x0c, 0x2a, 0x17, 0x71, 0x2f, 0x71, 0xe4, 0x06, 0x27, 0x5f, 0x01, 0x73, 0x77, 0xcf, 0x24, 0x88, 0xc4, 0x35, 0xef, 0x6c, 0x6e, 0x7c, 0x45, 0xcd, 0xb9, 0x8f, 0x24, 0x47, 0x7c, 0xed, 0x18, 0x0e, 0xb3, 0xef, 0xc8, 0x70, 0x3e, 0x96, 0x38, 0x26, 0xbf, 0xb3, 0x44, 0xf1, 0x6e, 0xb4, 0xa1 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.9", - /* Message */ - 38, - { 0xf2, 0xf9, 0x85, 0xb8, 0x03, 0x12, 0x73, 0xcb, 0x5f, 0xc8, 0x9a, 0x31, 0xdd, 0xeb, 0x4c, 0x67, 0xa4, 0xe4, 0xf3, 0x8c, 0x09, 0xd3, 0x02, 0x87, 0x42, 0x09, 0xb3, 0x9c, 0x69, 0xb7, 0x1f, 0x84, 0x95, 0x88, 0x86, 0x8f, 0xa5, 0xf8 } -, - /* Seed */ - 88, - { 0xc1, 0x20, 0x44, 0x6f, 0x5b, 0xdd, 0xa0, 0x6c, 0x63, 0x73, 0x8f, 0x18, 0x15, 0x55, 0x95, 0xf6, 0x2b, 0xc2, 0x65, 0x67, 0x28, 0x4c, 0x35, 0x03, 0x65, 0x91, 0xcd, 0x5d, 0x75, 0x3e, 0x4e, 0xf7, 0x90, 0x0d, 0xff, 0x33, 0xbf, 0xdd, 0x3b, 0x10, 0x8c, 0x10, 0x2d, 0x08, 0x98, 0x80, 0xc7, 0xb6, 0x9d, 0x86, 0xe9, 0xce, 0x3d, 0x68, 0x8c, 0xda, 0x15, 0x6f, 0xd6, 0xa9, 0x92, 0x31, 0x05, 0x8c, 0xc3, 0x18, 0x33, 0x96, 0x38, 0x09, 0x46, 0xe8, 0xa9, 0x69, 0xa7, 0xfc, 0xbe, 0x9e, 0xdc, 0x95, 0x9a, 0x0e, 0x50, 0x45, 0x32, 0xba, 0xb8, 0xea } -, - /* Encryption */ - 129, - { 0x10, 0xe0, 0xbc, 0x14, 0xba, 0x16, 0x01, 0x26, 0x98, 0xcc, 0x76, 0xcb, 0x82, 0x04, 0x5e, 0x2b, 0xfd, 0xbc, 0xb2, 0xb1, 0x18, 0xf1, 0x83, 0x06, 0x79, 0x59, 0xd7, 0x13, 0x7f, 0xd5, 0x0f, 0xa8, 0x8f, 0xe4, 0xf9, 0xce, 0xcf, 0x66, 0x31, 0xa9, 0x9c, 0xcc, 0xab, 0x76, 0xcd, 0xb7, 0x74, 0x4b, 0xab, 0xd0, 0x6b, 0x2b, 0xed, 0xfb, 0xca, 0x77, 0x24, 0xda, 0xfd, 0x91, 0xe6, 0xdf, 0xa8, 0x8b, 0xea, 0x2b, 0x44, 0xa8, 0xcb, 0xb0, 0x62, 0x19, 0xb1, 0x5c, 0x2a, 0xe7, 0x68, 0x72, 0xfa, 0xd2, 0x88, 0xe8, 0x43, 0x8a, 0xcd, 0x39, 0x5c, 0xe5, 0xcb, 0xe2, 0x8a, 0x71, 0x2b, 0x67, 0xf5, 0x61, 0xa1, 0x78, 0x6d, 0x75, 0x34, 0x3e, 0xd9, 0xad, 0x0d, 0x0a, 0x5e, 0xb6, 0xfa, 0xed, 0x07, 0xb0, 0x6a, 0xef, 0x03, 0x31, 0x8f, 0xf1, 0xaf, 0xe4, 0x72, 0xdb, 0x4e, 0xe3, 0xe2, 0x1e, 0xc1, 0x29, 0x33 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.10", - /* Message */ - 36, - { 0x39, 0x87, 0x2c, 0xfd, 0x6c, 0xf7, 0x4b, 0x4c, 0xcc, 0x1a, 0x70, 0xd9, 0x73, 0xb3, 0x18, 0x99, 0xa6, 0x7a, 0xee, 0xde, 0xe5, 0xd6, 0x71, 0xe0, 0x5b, 0xd6, 0x01, 0x12, 0xe6, 0x45, 0x12, 0xbb, 0xe4, 0x3b, 0xb8, 0x40 } -, - /* Seed */ - 90, - { 0x68, 0xac, 0x3f, 0x96, 0x97, 0xb7, 0x50, 0x75, 0x4f, 0xa7, 0x53, 0x2e, 0x41, 0x61, 0xc1, 0x20, 0x18, 0xe0, 0x33, 0xa6, 0x02, 0x51, 0xc8, 0xdc, 0xa8, 0x38, 0x78, 0x16, 0xf4, 0x23, 0x79, 0xab, 0x97, 0x8e, 0x15, 0x57, 0x8a, 0xe2, 0xe9, 0x4c, 0x17, 0x76, 0x48, 0x8b, 0x0c, 0xfd, 0xff, 0x18, 0x6f, 0xa6, 0xd7, 0x98, 0x88, 0xf8, 0x16, 0x9e, 0xe4, 0x49, 0xea, 0xdd, 0xc8, 0xe7, 0xf5, 0xa6, 0x58, 0xd0, 0x99, 0x7a, 0x93, 0x4f, 0x58, 0x6e, 0x31, 0xf7, 0x47, 0x30, 0xbe, 0x60, 0x3f, 0x1e, 0xe6, 0x2f, 0xa6, 0xc0, 0x8b, 0x0b, 0xff, 0xae, 0x6b, 0x88 } -, - /* Encryption */ - 129, - { 0x09, 0xb7, 0x70, 0x07, 0xf1, 0x5d, 0x65, 0x9e, 0xfc, 0xca, 0xca, 0x66, 0xc1, 0xe7, 0xd9, 0x62, 0xe0, 0x47, 0xa1, 0xe1, 0x49, 0xe5, 0x2d, 0xcc, 0x0e, 0x1a, 0xdc, 0x9e, 0x18, 0x3b, 0xf7, 0x3b, 0x5f, 0x23, 0x48, 0xd3, 0x43, 0x28, 0x24, 0x1b, 0x40, 0x7f, 0x61, 0x82, 0x2f, 0x6d, 0x57, 0xe1, 0xab, 0xb3, 0x22, 0xd3, 0x02, 0xf4, 0x53, 0x0d, 0x2c, 0xb9, 0xa4, 0x1a, 0x27, 0x70, 0x23, 0x8a, 0x1b, 0xdf, 0x87, 0x5e, 0xdd, 0x79, 0x78, 0x10, 0xd9, 0x04, 0xe9, 0x7a, 0x4d, 0x7c, 0x51, 0x51, 0x32, 0xd6, 0xab, 0xbf, 0x3a, 0x4a, 0x40, 0x74, 0x86, 0xdd, 0x00, 0x4e, 0xa3, 0x8a, 0xff, 0x8d, 0x4e, 0xd3, 0x82, 0x5f, 0xe1, 0x31, 0x42, 0xf1, 0x36, 0xfd, 0x1d, 0x71, 0x3e, 0x80, 0xe0, 0xcf, 0x22, 0x57, 0x69, 0xb4, 0x19, 0xcc, 0xa5, 0x4c, 0x15, 0x6e, 0x54, 0x66, 0x8b, 0x30, 0x6b, 0x5f, 0x2a } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.11", - /* Message */ - 14, - { 0x74, 0xd5, 0x6b, 0xf8, 0xd9, 0xc1, 0x80, 0xdc, 0x09, 0x93, 0x71, 0xa5, 0xaf, 0x72 } -, - /* Seed */ - 112, - { 0x33, 0x78, 0x70, 0xf0, 0x47, 0x9c, 0xf1, 0x28, 0x3a, 0x0c, 0x87, 0xc9, 0xc4, 0xaf, 0x54, 0xba, 0x8f, 0x85, 0x06, 0x44, 0xd5, 0x9a, 0x20, 0x25, 0x26, 0x3d, 0x2b, 0xdc, 0x49, 0xbf, 0xa6, 0x63, 0x6e, 0x75, 0x18, 0xf9, 0x4b, 0x6a, 0xb1, 0x8f, 0x85, 0xb1, 0x93, 0x21, 0x20, 0x9b, 0x76, 0x9f, 0x0c, 0x19, 0x75, 0xd1, 0xd5, 0xad, 0xa0, 0x6f, 0xd2, 0xa7, 0x6c, 0x82, 0x45, 0x0e, 0x4e, 0x09, 0xcd, 0xad, 0xb7, 0x83, 0x2f, 0xfb, 0x8a, 0xe7, 0xdc, 0xb4, 0x74, 0x10, 0xb2, 0x87, 0x80, 0x4d, 0xdd, 0xc7, 0x49, 0x3d, 0x61, 0x0a, 0x81, 0x39, 0x9b, 0x6d, 0xf6, 0xdf, 0x5e, 0xf1, 0x52, 0x09, 0x29, 0x84, 0xfe, 0x27, 0x76, 0xa4, 0xf9, 0x30, 0x54, 0x6b, 0xe1, 0xdc, 0x18, 0x31, 0x3c, 0x14 } -, - /* Encryption */ - 129, - { 0x07, 0x61, 0xeb, 0xaa, 0xd8, 0xff, 0x1c, 0x3d, 0xbe, 0x71, 0x0f, 0x60, 0xe3, 0xbe, 0x9f, 0x28, 0x9f, 0xb2, 0x7a, 0x6b, 0x53, 0x77, 0x75, 0x5b, 0x71, 0xfb, 0x38, 0x4c, 0x5f, 0xac, 0xb1, 0x60, 0x3c, 0x95, 0x3e, 0x1e, 0x2c, 0xa1, 0x1e, 0x78, 0x43, 0x25, 0xae, 0x42, 0xf3, 0x21, 0xae, 0x5c, 0x58, 0x64, 0x8c, 0x84, 0xf5, 0x24, 0xdf, 0x9d, 0xe9, 0xf9, 0x3f, 0xb4, 0xb0, 0xc2, 0xe0, 0x97, 0x97, 0xff, 0x2d, 0x11, 0x40, 0x70, 0x73, 0xb9, 0x5a, 0x78, 0x6d, 0xf5, 0x1a, 0x43, 0xf7, 0x99, 0x82, 0xd8, 0x6c, 0x49, 0xfb, 0x9e, 0x50, 0x14, 0xb1, 0xb7, 0x68, 0x76, 0x0a, 0x51, 0x30, 0x26, 0x6d, 0x06, 0x99, 0x30, 0x6a, 0x90, 0x4e, 0xd2, 0xdf, 0xe2, 0x01, 0x38, 0xd5, 0x31, 0xc5, 0xdc, 0x4b, 0xbf, 0x4d, 0xcc, 0xf1, 0x02, 0x49, 0xa6, 0xe2, 0xb3, 0x55, 0xf7, 0xcc, 0xb3, 0x26, 0xa4, 0x8a } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.12", - /* Message */ - 35, - { 0x61, 0x10, 0x63, 0xb5, 0xda, 0x12, 0x3c, 0xe2, 0x12, 0x96, 0x17, 0xdf, 0x38, 0x59, 0x95, 0x57, 0xb9, 0x5d, 0x1b, 0x05, 0xe6, 0xb6, 0x6b, 0xcd, 0x49, 0xaf, 0xe9, 0x83, 0x1a, 0x04, 0x21, 0xa5, 0xbe, 0x4e, 0x48 } -, - /* Seed */ - 91, - { 0x10, 0xf9, 0xdf, 0x30, 0xec, 0x97, 0x77, 0xfc, 0xab, 0x5a, 0x92, 0x4d, 0xed, 0x36, 0xfd, 0xfd, 0x6e, 0x1f, 0x38, 0x14, 0x49, 0xad, 0x99, 0xd2, 0x0a, 0xea, 0x0e, 0x39, 0x72, 0xea, 0x60, 0x4e, 0xa2, 0x27, 0x50, 0xd0, 0x60, 0x1d, 0x10, 0xa3, 0x77, 0xda, 0xd1, 0xa9, 0x4f, 0x9b, 0x02, 0x73, 0x40, 0x94, 0x81, 0x23, 0x82, 0x73, 0x98, 0xbb, 0x22, 0xb1, 0x44, 0x5f, 0x71, 0xc5, 0x05, 0xc6, 0x23, 0xaa, 0xf5, 0x16, 0xcd, 0x9f, 0xb3, 0xe9, 0x77, 0xf7, 0x78, 0xcf, 0xdd, 0x3a, 0x5d, 0x28, 0xc2, 0x29, 0x9e, 0x4b, 0x2a, 0xbd, 0x9f, 0x98, 0xc4, 0x35, 0x5a } -, - /* Encryption */ - 129, - { 0x07, 0xf2, 0xd5, 0x8b, 0xc4, 0x16, 0x39, 0x94, 0xd7, 0x6f, 0x49, 0x1e, 0xdd, 0x69, 0x74, 0x3c, 0x45, 0xdd, 0xa0, 0xc3, 0x8c, 0xcb, 0x07, 0x69, 0xde, 0x9c, 0xf9, 0xf4, 0xfd, 0x00, 0x55, 0xd3, 0x0a, 0x0c, 0xf0, 0x02, 0x80, 0x0d, 0x76, 0xed, 0x8c, 0x12, 0xcb, 0xd3, 0x6a, 0xf0, 0x51, 0xa9, 0xd7, 0x33, 0x7b, 0x29, 0xbc, 0x77, 0x4d, 0xc3, 0xc4, 0x01, 0x2b, 0xf5, 0xc2, 0x8a, 0xea, 0xd8, 0xc3, 0xe0, 0x36, 0xaa, 0x41, 0x39, 0x8a, 0x8b, 0x0f, 0xe9, 0x91, 0xc0, 0xbf, 0x66, 0xb5, 0x34, 0x1c, 0x99, 0xd9, 0x37, 0x7d, 0x94, 0x70, 0x4a, 0xd4, 0x90, 0xa9, 0xf8, 0x74, 0x6f, 0xc5, 0xce, 0xf7, 0x26, 0xe1, 0x96, 0xf3, 0x41, 0xf9, 0x3a, 0x1f, 0x1e, 0xae, 0x2c, 0x13, 0xe0, 0x0c, 0xfd, 0x22, 0x06, 0x2f, 0x8e, 0xb3, 0xda, 0x9d, 0xaf, 0xb9, 0x5a, 0x1e, 0x7b, 0x81, 0xb1, 0xfd, 0xb6, 0x56 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.13", - /* Message */ - 36, - { 0x80, 0x76, 0x4f, 0x78, 0x5f, 0xd4, 0x17, 0x6e, 0x16, 0x41, 0xe1, 0x29, 0xa3, 0x5a, 0x9b, 0x31, 0xb3, 0xa8, 0x9a, 0x75, 0x67, 0xad, 0x6c, 0x1f, 0x0d, 0x65, 0xec, 0x8a, 0xf9, 0x5f, 0xc1, 0x6e, 0x15, 0x28, 0x14, 0x09 } -, - /* Seed */ - 90, - { 0x20, 0x36, 0xd0, 0x98, 0xa6, 0xe9, 0x35, 0xf9, 0xa4, 0x11, 0x20, 0x1d, 0x2b, 0xcb, 0x62, 0x9f, 0x79, 0x0a, 0x94, 0xdb, 0x2e, 0xc6, 0x98, 0x67, 0x43, 0x3b, 0x17, 0x61, 0xd7, 0xc6, 0x95, 0x4b, 0xe9, 0x1a, 0x9f, 0xc7, 0x19, 0x19, 0x0e, 0x10, 0x86, 0x13, 0xcd, 0x58, 0x4c, 0xbb, 0x97, 0x76, 0x87, 0x04, 0x69, 0x24, 0xbc, 0xa6, 0xb2, 0xfe, 0x1a, 0x54, 0xbf, 0x76, 0xac, 0xf7, 0x7b, 0x36, 0x8c, 0x39, 0x65, 0x0f, 0x6d, 0x0a, 0x49, 0x8d, 0xbd, 0xed, 0xae, 0x3f, 0x4c, 0x21, 0x04, 0x0a, 0x8a, 0xed, 0x63, 0x4d, 0xe4, 0xed, 0x8a, 0xf1, 0x34, 0x6e } -, - /* Encryption */ - 129, - { 0x04, 0x9c, 0x61, 0x44, 0x4e, 0x92, 0x47, 0x72, 0xf9, 0x4a, 0x79, 0x5c, 0xcd, 0x99, 0xeb, 0x2f, 0xe4, 0x30, 0x99, 0x7b, 0x91, 0xb4, 0x2d, 0xe6, 0x16, 0x36, 0x29, 0xab, 0x98, 0xd2, 0x5a, 0x71, 0xe7, 0xf9, 0x68, 0x86, 0xa5, 0x7e, 0x97, 0x9d, 0x9c, 0x94, 0xc9, 0x62, 0x20, 0x9c, 0x1f, 0x71, 0x2c, 0x70, 0x57, 0x1a, 0x81, 0xf3, 0x77, 0xea, 0xf7, 0x4e, 0x80, 0xe7, 0x07, 0x22, 0xe1, 0xbe, 0x3d, 0x13, 0x37, 0xc5, 0x04, 0x5f, 0x79, 0x7b, 0xd5, 0x7d, 0xf2, 0xf5, 0xae, 0x5e, 0xf3, 0x3a, 0xe5, 0x79, 0xe9, 0x3b, 0x38, 0xfb, 0x25, 0x0d, 0xf0, 0xc2, 0xbc, 0x59, 0xb3, 0x3a, 0x74, 0x86, 0x7b, 0x8f, 0x3d, 0xfe, 0x5b, 0xa7, 0x85, 0xd7, 0x28, 0xb8, 0x9d, 0x96, 0xb3, 0x00, 0x2b, 0xc0, 0x05, 0x4d, 0xb5, 0xbb, 0x0d, 0x84, 0xfd, 0xa4, 0x5d, 0xb4, 0xa1, 0xf2, 0x62, 0x8a, 0xb1, 0x12, 0x30 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.14", - /* Message */ - 18, - { 0x0a, 0xbc, 0x2b, 0xc5, 0xfc, 0xd0, 0x40, 0x18, 0x9f, 0x84, 0x22, 0xf1, 0xca, 0x04, 0x50, 0x21, 0xda, 0x95 } -, - /* Seed */ - 108, - { 0xe4, 0x73, 0x2e, 0x49, 0x90, 0x69, 0x9f, 0xd7, 0x47, 0x40, 0xc8, 0x52, 0xae, 0x8d, 0x4d, 0x70, 0x7f, 0xbd, 0x79, 0x46, 0x0f, 0x88, 0x74, 0x09, 0x84, 0xae, 0x53, 0xff, 0xb9, 0xfc, 0x39, 0x62, 0x68, 0x3e, 0xad, 0x0d, 0x14, 0x04, 0xf5, 0x31, 0x51, 0xd1, 0xae, 0xe8, 0x0f, 0xcd, 0x6a, 0x1f, 0xf6, 0x5f, 0xc8, 0x8e, 0xf0, 0x8f, 0xd7, 0x6d, 0x9f, 0xdc, 0xa8, 0xf9, 0xe3, 0xac, 0x7d, 0x8d, 0x82, 0xb8, 0x2e, 0xce, 0x78, 0x9c, 0x66, 0xc5, 0x40, 0x22, 0x80, 0xb3, 0xe5, 0x68, 0x10, 0x1c, 0xe2, 0xa2, 0xa7, 0xb2, 0xb2, 0xf1, 0xe9, 0x65, 0x19, 0xcf, 0xb4, 0x1e, 0x60, 0x49, 0x3d, 0x76, 0x8e, 0xb5, 0xb9, 0x6c, 0xcc, 0x49, 0xbb, 0x0f, 0x6e, 0xc7, 0x11, 0xfd } -, - /* Encryption */ - 129, - { 0x03, 0xd8, 0xae, 0x60, 0x4f, 0x92, 0x95, 0x31, 0x73, 0xc7, 0x7a, 0x01, 0xff, 0xa0, 0x90, 0xaa, 0x0e, 0x37, 0xa3, 0x8a, 0x47, 0xc9, 0x72, 0x19, 0xc0, 0xb9, 0xf8, 0x64, 0xd3, 0x48, 0x74, 0x6a, 0xf7, 0xf4, 0xa6, 0x32, 0x11, 0x29, 0xc6, 0x04, 0x6a, 0x99, 0x4c, 0xed, 0x1c, 0xcf, 0x33, 0x24, 0xda, 0x93, 0x71, 0x53, 0x88, 0x8d, 0xd6, 0xc6, 0x70, 0x19, 0xa7, 0xca, 0xa7, 0x65, 0x5a, 0x36, 0x42, 0x83, 0x8e, 0xdf, 0xa0, 0xe2, 0xed, 0x8d, 0xc2, 0x5c, 0x14, 0xbf, 0xf8, 0xbf, 0xf5, 0x65, 0xc7, 0x18, 0xf8, 0xb6, 0xc9, 0x20, 0x56, 0xc9, 0xbb, 0xe8, 0xd9, 0x30, 0x83, 0x70, 0xc7, 0xcd, 0x75, 0xa0, 0x4e, 0x11, 0xb6, 0xe2, 0x5a, 0xa6, 0xc3, 0xc2, 0xcd, 0xdd, 0x17, 0x2a, 0x4b, 0x6a, 0xee, 0xf0, 0x4f, 0xb8, 0x35, 0xb6, 0x86, 0x37, 0xcf, 0x0c, 0xa0, 0xb9, 0xa9, 0x11, 0xb8, 0xb8, 0x74 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.15", - /* Message */ - 24, - { 0x8f, 0x98, 0x35, 0xef, 0xb6, 0x9c, 0xca, 0x8c, 0x07, 0xbf, 0xef, 0x4d, 0x8f, 0x53, 0x5d, 0x0c, 0xbd, 0xa5, 0x36, 0x7b, 0xbd, 0x41, 0x08, 0x0a } -, - /* Seed */ - 102, - { 0x32, 0xd4, 0xbe, 0x07, 0xe6, 0xc7, 0xfb, 0x81, 0xd5, 0x20, 0x8c, 0x25, 0x01, 0xc5, 0xdf, 0x7c, 0x56, 0xd1, 0x98, 0x6d, 0xc6, 0xd6, 0x31, 0x10, 0xad, 0x21, 0xd8, 0x1e, 0x57, 0xce, 0x11, 0x3f, 0x3d, 0xbb, 0xfe, 0xbe, 0x0f, 0x80, 0xc0, 0x16, 0xb7, 0x19, 0xe9, 0xd5, 0xc3, 0xd9, 0xa3, 0xbb, 0xbb, 0x2f, 0x35, 0xbe, 0x95, 0xd4, 0x56, 0x22, 0x2b, 0x51, 0xc3, 0xd6, 0x5b, 0x38, 0x8e, 0x7a, 0xda, 0xf6, 0xb9, 0xce, 0xae, 0x1f, 0xd4, 0x6a, 0x6e, 0x05, 0xca, 0x1b, 0xb1, 0x99, 0xc2, 0x7b, 0xac, 0xdc, 0x8b, 0x5f, 0xd1, 0x4f, 0x03, 0x51, 0xae, 0xb3, 0xfd, 0xd6, 0xdc, 0x1d, 0x93, 0xf3, 0xb5, 0x31, 0x56, 0xef, 0xa3, 0xc6 } -, - /* Encryption */ - 129, - { 0x0e, 0x47, 0xad, 0x4d, 0x92, 0xd1, 0x9a, 0x1e, 0xbc, 0xac, 0xbf, 0x87, 0x5d, 0x80, 0x19, 0x27, 0xd4, 0xfe, 0x5a, 0xfa, 0xf6, 0x6e, 0xd8, 0x01, 0x5c, 0x55, 0x9b, 0x56, 0x6a, 0x9f, 0x3c, 0xbf, 0x0a, 0xbe, 0x8a, 0x76, 0xfe, 0x73, 0x24, 0xf6, 0x28, 0xc2, 0xe4, 0xf3, 0x45, 0x84, 0xa5, 0x0f, 0xf7, 0x7e, 0x82, 0x2a, 0x54, 0x11, 0x8e, 0xfa, 0x9b, 0xae, 0x9d, 0x0f, 0xa5, 0x02, 0x94, 0xc6, 0x18, 0x0b, 0xaf, 0x3a, 0x8b, 0x0c, 0x7e, 0x45, 0x3a, 0x74, 0x37, 0xab, 0x1a, 0x19, 0xcc, 0x00, 0x30, 0x7a, 0x8c, 0x6a, 0xed, 0x95, 0xc3, 0x15, 0xb2, 0x4b, 0x47, 0x90, 0x07, 0x24, 0x56, 0xc9, 0x44, 0x60, 0x99, 0x5d, 0xbb, 0x1f, 0xe5, 0xa1, 0x2b, 0x4c, 0xf4, 0x45, 0x42, 0x96, 0xf7, 0x40, 0x02, 0x83, 0xce, 0xfd, 0xce, 0x6b, 0x00, 0xcc, 0x80, 0x49, 0xdd, 0x5d, 0xd8, 0xcb, 0x2a, 0xf3, 0x6f } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.16", - /* Message */ - 47, - { 0x6d, 0xfb, 0xd9, 0x3b, 0x00, 0x78, 0xd4, 0x9a, 0xe4, 0xfe, 0x1e, 0x24, 0xcc, 0xa9, 0x7d, 0x0a, 0x9a, 0xff, 0xd7, 0xbe, 0xe0, 0x62, 0xae, 0xd2, 0x9d, 0xef, 0x0b, 0x1c, 0x0b, 0x3a, 0xef, 0xad, 0x81, 0x1d, 0x6e, 0x7a, 0xce, 0x8b, 0x49, 0xd7, 0x24, 0x2a, 0x9f, 0xe6, 0xe2, 0x3c, 0x22 } -, - /* Seed */ - 79, - { 0x31, 0x9f, 0x9c, 0xda, 0x2c, 0x93, 0x38, 0x8e, 0xbe, 0x1a, 0x50, 0xe7, 0x6c, 0x93, 0x97, 0x55, 0x9d, 0xca, 0xf1, 0x4f, 0xe1, 0x03, 0x52, 0xaa, 0x51, 0x1d, 0xc5, 0xba, 0xa6, 0x4d, 0xc1, 0x52, 0xfc, 0xc7, 0x9c, 0xbb, 0x23, 0xd4, 0xe6, 0x9b, 0x12, 0xb9, 0xf2, 0x7a, 0x79, 0x09, 0x15, 0x98, 0x87, 0xbb, 0x04, 0x12, 0x9a, 0xd6, 0x35, 0x16, 0x81, 0x33, 0x86, 0x37, 0x4f, 0x31, 0x89, 0x2d, 0x4c, 0xdc, 0x4f, 0xe6, 0x39, 0x69, 0xb5, 0xbf, 0xdd, 0xc6, 0x67, 0xf9, 0x46, 0x89, 0x7d } -, - /* Encryption */ - 129, - { 0x01, 0xc5, 0xce, 0x83, 0x6b, 0xe2, 0x20, 0x8a, 0x3d, 0x81, 0x4e, 0x7e, 0x60, 0xc2, 0x76, 0x74, 0xac, 0xb7, 0xcd, 0x3e, 0x31, 0xc0, 0x24, 0xd9, 0xd3, 0x8f, 0xc2, 0x29, 0x53, 0xaa, 0xfe, 0x73, 0xaf, 0x52, 0x40, 0x43, 0x4d, 0xcf, 0x54, 0xa3, 0x88, 0x99, 0x2e, 0xac, 0x36, 0xec, 0x84, 0x64, 0xd9, 0xa0, 0x42, 0xac, 0x58, 0xd1, 0x8a, 0x70, 0x39, 0x8b, 0x8a, 0x77, 0x3e, 0x66, 0x69, 0xbb, 0x3d, 0x76, 0xee, 0xac, 0xdf, 0x1f, 0xd1, 0x52, 0x47, 0x40, 0x99, 0xbf, 0xa6, 0x62, 0xa4, 0x81, 0xdb, 0xab, 0x4c, 0xa4, 0x67, 0x14, 0x95, 0x87, 0x45, 0xe2, 0xb7, 0x83, 0x2a, 0x59, 0xcc, 0xb0, 0x05, 0x36, 0x49, 0xb7, 0xe0, 0x95, 0x07, 0x43, 0x33, 0x3f, 0x5f, 0xcd, 0x6f, 0x65, 0x19, 0x7d, 0xdc, 0xb4, 0xe1, 0xbc, 0x12, 0xa6, 0x6e, 0x8e, 0x92, 0xa8, 0x65, 0x9f, 0xae, 0xe5, 0x71, 0x31, 0xe2 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.17", - /* Message */ - 31, - { 0xe5, 0x87, 0x9f, 0xfc, 0xe0, 0xb6, 0x29, 0xb8, 0x85, 0x7c, 0x19, 0x5c, 0xf5, 0xd0, 0x9f, 0x7b, 0x93, 0xbf, 0xf1, 0xf7, 0xa9, 0xf2, 0xd8, 0xa4, 0x5a, 0x56, 0x3b, 0xbb, 0xe9, 0xe6, 0x2d } -, - /* Seed */ - 95, - { 0xba, 0xce, 0x2c, 0xea, 0x0b, 0xfe, 0xc2, 0x5a, 0x2d, 0x34, 0xd7, 0x29, 0x92, 0xc2, 0xb8, 0xea, 0x0a, 0xea, 0x17, 0xb7, 0xa3, 0xa8, 0xbe, 0xd6, 0x0d, 0x1b, 0xb5, 0x10, 0x13, 0x34, 0x7b, 0x2d, 0x03, 0x6a, 0x75, 0xa4, 0xec, 0x3e, 0xb2, 0xc1, 0x78, 0x8d, 0x44, 0xa9, 0xe1, 0xc5, 0xc8, 0x8d, 0x04, 0x1e, 0x82, 0xaf, 0x87, 0x81, 0x55, 0xdd, 0xc7, 0xd8, 0x1b, 0x3e, 0x27, 0xcd, 0xdd, 0x20, 0x40, 0x9d, 0xbd, 0xda, 0x4a, 0x64, 0xbf, 0x83, 0x11, 0xa7, 0xb7, 0xeb, 0x77, 0x29, 0x93, 0x12, 0x66, 0x1a, 0x6e, 0x37, 0xdf, 0x35, 0x02, 0xf8, 0x6a, 0x22, 0x49, 0x2b, 0xef, 0xac, 0xf4 } -, - /* Encryption */ - 129, - { 0x01, 0xe4, 0xfa, 0xeb, 0xca, 0xb8, 0x9d, 0x7b, 0xaa, 0x3e, 0x03, 0x93, 0xf7, 0x16, 0x84, 0xb0, 0xae, 0x53, 0xdf, 0x8e, 0xb9, 0x87, 0x3e, 0x65, 0xa7, 0x16, 0xec, 0x2f, 0x41, 0x74, 0x1f, 0x8b, 0x78, 0x16, 0xd2, 0xe1, 0x97, 0xd9, 0x76, 0xfd, 0x53, 0xa8, 0xee, 0x7f, 0x92, 0x4b, 0xf4, 0xbf, 0xd4, 0x10, 0x42, 0xe1, 0x64, 0x45, 0xe9, 0x06, 0x0b, 0x55, 0xa0, 0xb6, 0xdc, 0x16, 0xaa, 0xf3, 0x06, 0x44, 0x91, 0xd1, 0x89, 0x28, 0x22, 0x39, 0x50, 0x39, 0x33, 0x28, 0xc1, 0x47, 0xdb, 0xd0, 0x35, 0x31, 0xec, 0x01, 0x2d, 0x8c, 0x52, 0x75, 0x02, 0xe7, 0xeb, 0x3d, 0xca, 0x50, 0x9b, 0x7d, 0xe1, 0x69, 0x95, 0x92, 0x46, 0x07, 0xc8, 0xb2, 0x8a, 0x2b, 0xda, 0x9b, 0xcb, 0x2c, 0x77, 0x81, 0x46, 0x1c, 0x76, 0x66, 0x3b, 0x88, 0x7b, 0x96, 0x43, 0xe2, 0x31, 0x7f, 0x0e, 0xa1, 0xd1, 0xbb, 0x14 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.18", - /* Message */ - 62, - { 0x0a, 0x2e, 0x24, 0x13, 0x0e, 0x8a, 0x9d, 0x28, 0xdf, 0xcb, 0x9d, 0xf9, 0x76, 0x5f, 0x46, 0x83, 0xe9, 0xda, 0x78, 0x42, 0x5a, 0x28, 0x19, 0x98, 0x06, 0xa9, 0x3b, 0x32, 0x2e, 0xfa, 0x88, 0x49, 0x3a, 0xc3, 0x72, 0x52, 0xc2, 0x9a, 0x26, 0x4f, 0x3e, 0x85, 0xae, 0x56, 0x53, 0x8e, 0x80, 0x8d, 0xc5, 0x56, 0x42, 0xa4, 0x88, 0x5f, 0x05, 0x46, 0x40, 0xf6, 0x9c, 0x89, 0x81, 0xfe } -, - /* Seed */ - 64, - { 0x20, 0x43, 0x1e, 0xf3, 0x1f, 0xce, 0x19, 0x93, 0x9d, 0xa5, 0x45, 0xa0, 0x85, 0x30, 0x11, 0x2d, 0xb0, 0xfa, 0x07, 0x13, 0x8d, 0xd8, 0x6d, 0xb1, 0xcc, 0x65, 0xe2, 0xb0, 0x3f, 0xc2, 0xbe, 0x60, 0x7c, 0x3e, 0x60, 0x38, 0xeb, 0xb7, 0x89, 0x17, 0x55, 0xb2, 0x31, 0x29, 0xfb, 0x96, 0x9a, 0x7f, 0xe1, 0x06, 0x10, 0xf2, 0xeb, 0xc3, 0xf0, 0x77, 0xb2, 0xc8, 0xf4, 0x60, 0x1e, 0x09, 0xab, 0x4c } -, - /* Encryption */ - 129, - { 0x0c, 0x14, 0xb7, 0xd3, 0x2d, 0x3d, 0x4c, 0xe2, 0xb0, 0x8e, 0xe4, 0x4f, 0x51, 0x6a, 0xee, 0x29, 0x90, 0xb6, 0x30, 0x52, 0x40, 0xb2, 0x5d, 0x23, 0x34, 0xaa, 0x31, 0x75, 0x2a, 0xef, 0x28, 0x02, 0x16, 0x39, 0xf7, 0x6a, 0x4c, 0x47, 0x19, 0x56, 0x9b, 0x30, 0x05, 0x2d, 0x4b, 0xd0, 0x8b, 0x3a, 0x07, 0xf2, 0x3b, 0xe6, 0x86, 0x23, 0x7e, 0x48, 0x1e, 0x67, 0xbf, 0x3f, 0x5a, 0x01, 0xad, 0xd7, 0x56, 0xda, 0x77, 0x2c, 0x7d, 0xc1, 0x3d, 0x32, 0x29, 0x8b, 0x9b, 0xbc, 0x3d, 0x33, 0xe6, 0xdf, 0x82, 0xd8, 0x5c, 0x08, 0x9d, 0x34, 0x76, 0x00, 0x49, 0x7a, 0x8b, 0x8e, 0xa4, 0xde, 0x68, 0xab, 0xb9, 0x0e, 0x5c, 0x6a, 0xeb, 0x26, 0x9a, 0x97, 0xbe, 0x42, 0x6c, 0xef, 0xac, 0xde, 0xbb, 0xcc, 0x0c, 0x1f, 0x2c, 0x40, 0x9b, 0xbc, 0x7c, 0x72, 0xd9, 0x0b, 0xdb, 0x42, 0x6b, 0x13, 0xcc, 0xc1, 0x9a } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.19", - /* Message */ - 63, - { 0x7e, 0xfc, 0x62, 0x7b, 0xa5, 0xfa, 0x28, 0x25, 0xaa, 0xe0, 0xca, 0x94, 0x03, 0x0e, 0x70, 0x47, 0x08, 0xd3, 0x5f, 0x92, 0x23, 0x98, 0x26, 0xb4, 0x2e, 0x2d, 0x4d, 0xbb, 0xe4, 0x02, 0xab, 0x7d, 0x19, 0x6a, 0x7f, 0x54, 0x88, 0x0c, 0xf2, 0xc5, 0xa4, 0xd0, 0xfc, 0xe5, 0x3a, 0x20, 0xa3, 0x2b, 0x68, 0x30, 0xe6, 0x2d, 0xcd, 0x00, 0xdb, 0xcb, 0xf3, 0x3b, 0x5c, 0x0c, 0x70, 0x44, 0x01 } -, - /* Seed */ - 63, - { 0xf0, 0x49, 0x79, 0x19, 0xc1, 0x42, 0xf3, 0xa9, 0x8e, 0xf5, 0x5b, 0xcd, 0x59, 0x88, 0x23, 0x4f, 0xdc, 0x8a, 0xeb, 0xf7, 0x36, 0xd4, 0x7a, 0xf9, 0x70, 0x90, 0xa7, 0xa9, 0xdd, 0xe0, 0xa7, 0x35, 0x09, 0xf9, 0xcd, 0x41, 0x36, 0x26, 0xbb, 0x8b, 0xa7, 0x67, 0xc9, 0xd6, 0x38, 0x49, 0x1c, 0x28, 0x6e, 0x67, 0xbf, 0x22, 0xd6, 0x70, 0xd5, 0x6b, 0x24, 0xc1, 0x5b, 0xad, 0x70, 0x35, 0x1e } -, - /* Encryption */ - 129, - { 0x01, 0xdb, 0xce, 0x3b, 0x3f, 0x84, 0xb2, 0xda, 0x06, 0xb1, 0x67, 0xe2, 0x06, 0x64, 0x9d, 0x42, 0x4a, 0x42, 0xb8, 0xe9, 0xea, 0x54, 0x53, 0xa1, 0x6b, 0x5f, 0xc6, 0xc2, 0xe9, 0xcb, 0x17, 0xed, 0xa1, 0xef, 0xfe, 0x4e, 0x78, 0x36, 0xa5, 0xe5, 0x8f, 0x99, 0xe5, 0x31, 0x53, 0x0b, 0x40, 0x17, 0x1e, 0x4b, 0x51, 0xfc, 0x0b, 0x92, 0xde, 0x30, 0x31, 0x30, 0x09, 0x36, 0xd2, 0x59, 0x5e, 0x39, 0x10, 0x09, 0xe2, 0xe5, 0x3c, 0x32, 0xf7, 0x59, 0x60, 0x4a, 0x6d, 0xba, 0xd9, 0xc9, 0x70, 0x90, 0x0f, 0xa6, 0xe4, 0x1a, 0x35, 0x08, 0x3f, 0x78, 0x7b, 0x9b, 0xf3, 0xbe, 0xbc, 0xea, 0xa1, 0xa7, 0x71, 0x84, 0x1b, 0x5e, 0x6e, 0x4c, 0x8b, 0x50, 0x96, 0x29, 0x00, 0x7b, 0x46, 0x7e, 0x3c, 0xec, 0x8a, 0x1d, 0x03, 0x23, 0xc3, 0xc5, 0xdb, 0xc3, 0x4d, 0x8d, 0x41, 0x25, 0xa3, 0x98, 0xc9, 0xd5, 0x3d } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 11.20", - /* Message */ - 15, - { 0x59, 0x3d, 0x3f, 0xcd, 0x05, 0xac, 0xee, 0x30, 0x29, 0x81, 0x5e, 0x1e, 0x76, 0xa8, 0x90 } -, - /* Seed */ - 111, - { 0x12, 0x35, 0xee, 0x3e, 0x7a, 0x9d, 0xf5, 0x96, 0x7f, 0xe9, 0x8d, 0x97, 0x10, 0xff, 0xdd, 0x5f, 0x7e, 0xb2, 0x2d, 0xc0, 0x71, 0x47, 0xaf, 0x43, 0x6f, 0xe2, 0x0a, 0xa5, 0x26, 0xbf, 0x0b, 0x94, 0x19, 0x0c, 0xab, 0xb5, 0x21, 0x3d, 0xe9, 0x8a, 0x23, 0xf5, 0xef, 0x27, 0x50, 0x22, 0xa2, 0xf7, 0x3e, 0x60, 0xe9, 0xef, 0xe2, 0xc0, 0x34, 0xc5, 0x5c, 0xeb, 0x26, 0xaa, 0x80, 0x6c, 0xde, 0xd6, 0x73, 0x9d, 0xdb, 0x2c, 0xbd, 0x3e, 0xc3, 0xb5, 0x55, 0x20, 0x4a, 0x79, 0x84, 0x65, 0xc3, 0x7c, 0x67, 0x57, 0x19, 0x56, 0x86, 0xa3, 0xea, 0x3c, 0x56, 0x57, 0xc3, 0x60, 0xa0, 0x15, 0x8d, 0x99, 0x2d, 0x4f, 0xeb, 0xfa, 0x04, 0x29, 0xee, 0xb7, 0xc9, 0x2a, 0x46, 0x84, 0x34, 0xc5, 0xb7 } -, - /* Encryption */ - 129, - { 0x0f, 0x69, 0x98, 0x81, 0xa1, 0x52, 0x46, 0x18, 0xbc, 0x25, 0xd4, 0xe5, 0x14, 0xe2, 0x07, 0x30, 0x68, 0xea, 0x7d, 0x35, 0x38, 0x4b, 0xaf, 0xd4, 0x6f, 0xc2, 0x82, 0xe1, 0xd8, 0x55, 0x11, 0x9e, 0xe9, 0x69, 0xf2, 0x11, 0xc7, 0x18, 0x4a, 0x07, 0x03, 0x06, 0x47, 0xfc, 0x40, 0x99, 0x0e, 0xcf, 0x2e, 0xa4, 0x05, 0x22, 0x86, 0x5d, 0x91, 0x77, 0x8a, 0x62, 0x7e, 0xca, 0x8e, 0x50, 0xc2, 0xbb, 0x97, 0x60, 0xb0, 0x45, 0xda, 0xaf, 0x12, 0x77, 0xa4, 0xfa, 0x98, 0x35, 0x76, 0xca, 0x8c, 0xfa, 0xd7, 0x60, 0x83, 0x29, 0xc1, 0x88, 0x15, 0x88, 0x01, 0x7d, 0x63, 0x72, 0x2b, 0x70, 0xe9, 0x8b, 0xe5, 0x24, 0xe0, 0x03, 0x39, 0x95, 0x98, 0x25, 0x73, 0xd3, 0x38, 0x70, 0x78, 0xc8, 0xb7, 0xc1, 0xc5, 0xf9, 0xae, 0xf2, 0x64, 0xa0, 0x48, 0x46, 0x84, 0xb3, 0x42, 0x66, 0x43, 0x73, 0x7d, 0x34, 0xbb } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 12: A 1030-bit RSA key pair", -{ - /* Modulus */ - 129, - { 0x26, 0x1f, 0xe0, 0x28, 0x44, 0x59, 0xc2, 0xfa, 0x6f, 0x05, 0x54, 0x6b, 0xed, 0x58, 0x5e, 0x1e, 0xe0, 0xa1, 0x30, 0xb7, 0x1c, 0x2b, 0x8a, 0x6f, 0xbb, 0x3b, 0xdc, 0x75, 0x78, 0x7b, 0x26, 0x55, 0xd0, 0xed, 0x4e, 0x32, 0x5b, 0x54, 0xc7, 0xb3, 0x71, 0xa6, 0xfc, 0xf2, 0xb6, 0x78, 0x82, 0x77, 0xa5, 0x0d, 0x47, 0x05, 0xba, 0x23, 0xc5, 0x96, 0x28, 0x5d, 0xa7, 0xe3, 0xc9, 0x30, 0x4a, 0x41, 0xe7, 0xcc, 0x48, 0x8b, 0x44, 0x92, 0x2f, 0x7b, 0xe2, 0xb4, 0x7c, 0x16, 0x31, 0x9e, 0x33, 0x74, 0x51, 0x17, 0x3d, 0x40, 0xb1, 0xea, 0x48, 0x1d, 0x1a, 0x9c, 0x11, 0x29, 0xb1, 0xfe, 0xb7, 0xd0, 0x9f, 0x67, 0x49, 0x7a, 0xeb, 0x98, 0x94, 0x8f, 0x1a, 0xbf, 0x3b, 0x77, 0x86, 0xbd, 0x3b, 0x87, 0x04, 0x71, 0x87, 0xc8, 0xf3, 0x70, 0x15, 0x68, 0x2b, 0x3f, 0x2d, 0xe5, 0x0e, 0x07, 0x8e, 0x8d, 0x0f } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 129, - { 0x05, 0xdf, 0x76, 0x83, 0x72, 0xcc, 0x0a, 0x64, 0xd3, 0xc2, 0x14, 0x18, 0x30, 0x24, 0x23, 0x13, 0x9f, 0x47, 0x95, 0x73, 0xe5, 0x0b, 0x5c, 0x09, 0xb6, 0xe3, 0xbe, 0x23, 0xfb, 0xc9, 0xaa, 0x1a, 0x76, 0xd3, 0x27, 0x99, 0xa0, 0x47, 0x76, 0x1f, 0xfc, 0x21, 0x07, 0x94, 0x48, 0x17, 0x01, 0x04, 0xcc, 0xa5, 0xe2, 0xa1, 0x4c, 0xe4, 0x57, 0xd0, 0x0d, 0x80, 0x7d, 0x42, 0xc7, 0x6a, 0x55, 0xf6, 0x16, 0x87, 0x4b, 0xa7, 0xf7, 0xea, 0xa1, 0xce, 0x63, 0xcb, 0xf1, 0x32, 0xde, 0xb0, 0x81, 0xaa, 0xd2, 0xfd, 0x80, 0xd1, 0x24, 0xc4, 0xda, 0x86, 0xec, 0x6c, 0x02, 0x0e, 0x8c, 0xa8, 0x2d, 0xcd, 0xcd, 0x35, 0x54, 0xe6, 0x9b, 0xb1, 0x98, 0x72, 0x26, 0x2a, 0x50, 0x31, 0xab, 0x5d, 0xb7, 0xcc, 0x8c, 0x92, 0x59, 0xa1, 0x46, 0xd5, 0x8b, 0x1d, 0xb9, 0x4c, 0xc7, 0xe7, 0x56, 0x25, 0x3d, 0x5a, 0xa1 } -, - /* Prime 1 */ - 65, - { 0x06, 0x77, 0x25, 0xab, 0x55, 0x34, 0x18, 0xe1, 0xeb, 0x8a, 0x41, 0xf4, 0xfd, 0x92, 0xd2, 0x80, 0xb6, 0x9f, 0x85, 0xb0, 0x8c, 0xb4, 0x02, 0xf0, 0x1a, 0xa4, 0x96, 0x92, 0xc7, 0x20, 0x9b, 0x36, 0x42, 0x98, 0xee, 0xf4, 0xe3, 0x3d, 0xc4, 0x22, 0xbb, 0xa3, 0x35, 0x03, 0xd1, 0x1a, 0x12, 0x7d, 0xd2, 0x86, 0x43, 0xf7, 0xe7, 0x75, 0x58, 0x97, 0xe2, 0xeb, 0x96, 0xc4, 0xdd, 0xbb, 0x91, 0x12, 0xf1 } -, - /* Prime 2 */ - 65, - { 0x05, 0xe5, 0x8c, 0xeb, 0xd4, 0x7d, 0x87, 0xb1, 0xe7, 0x8d, 0xa2, 0xfe, 0xee, 0x6d, 0xc5, 0xf9, 0xbf, 0xa2, 0x20, 0xc3, 0x55, 0xe8, 0x20, 0xc8, 0xfb, 0xaa, 0x88, 0x46, 0xdf, 0x11, 0x00, 0x36, 0x2c, 0xd1, 0x69, 0x1f, 0x5c, 0xbf, 0x5c, 0x78, 0x68, 0xc4, 0x72, 0xd0, 0x28, 0x2a, 0xbe, 0x01, 0x03, 0x16, 0x1f, 0x4d, 0x8c, 0x62, 0xaf, 0xf3, 0x5b, 0xb1, 0xfb, 0x7c, 0xc6, 0x99, 0xd9, 0x9f, 0xff } -, - /* Prime exponent 1 */ - 65, - { 0x01, 0x6c, 0xc9, 0x14, 0x95, 0xd6, 0xc1, 0x95, 0x29, 0x40, 0x73, 0x80, 0xf7, 0x52, 0x20, 0xaa, 0xd5, 0x95, 0x1a, 0xf5, 0xea, 0x4c, 0xd2, 0x48, 0xf0, 0xd6, 0x4d, 0x89, 0x53, 0xf1, 0xcf, 0xc3, 0x89, 0xb2, 0x03, 0x18, 0x5d, 0xed, 0x03, 0x09, 0x54, 0xa9, 0x87, 0xc9, 0xab, 0x90, 0x3f, 0x7b, 0x13, 0xa7, 0x1b, 0xdb, 0xcb, 0x5b, 0x85, 0x87, 0x14, 0x30, 0x30, 0x2e, 0x7b, 0x60, 0x17, 0x7d, 0x41 } -, - /* Prime exponent 2 */ - 64, - { 0xf9, 0xcc, 0x89, 0x15, 0xff, 0xb3, 0xdd, 0xc7, 0xc0, 0x93, 0x71, 0x76, 0x49, 0x2a, 0x12, 0xbb, 0x18, 0x7c, 0x2d, 0x76, 0xe0, 0xd3, 0xd4, 0x0e, 0x79, 0x58, 0xd5, 0xc9, 0x82, 0x09, 0xb3, 0xed, 0x54, 0xb5, 0xfd, 0x9f, 0x9e, 0x77, 0x11, 0xe1, 0xdc, 0x68, 0x57, 0x73, 0xde, 0x26, 0xd5, 0x0a, 0x0a, 0xb6, 0x21, 0x62, 0x12, 0xce, 0xa5, 0x09, 0xce, 0x79, 0x1c, 0x5b, 0xcd, 0x07, 0xcb, 0x47 } -, - /* Coefficient */ - 65, - { 0x05, 0xfe, 0x93, 0x3b, 0x87, 0x3f, 0x1d, 0x68, 0xf6, 0xbe, 0x2d, 0x4d, 0x5a, 0xa2, 0x2d, 0x96, 0x8f, 0x2b, 0x7a, 0xf5, 0x41, 0xa2, 0xdc, 0xd6, 0x4e, 0x09, 0xc0, 0x30, 0xb1, 0x50, 0x35, 0x8a, 0x98, 0x02, 0xae, 0x86, 0x59, 0x95, 0xd7, 0x6a, 0x50, 0x03, 0x7d, 0x19, 0x8d, 0x7e, 0x70, 0x4d, 0x26, 0x84, 0x7a, 0xda, 0x8a, 0xe3, 0xd3, 0x85, 0xc2, 0x96, 0x5f, 0xb1, 0x7f, 0xcf, 0x15, 0x2f, 0x77 } - -} -, -{{ - "PKCS#1 v1.5 Encryption Example 12.1", - /* Message */ - 20, - { 0x7d, 0xe6, 0x9c, 0xd9, 0x22, 0x8b, 0xbc, 0xfb, 0x9a, 0x8c, 0xa8, 0xc6, 0xc3, 0xef, 0xaf, 0x05, 0x6f, 0xe4, 0xa7, 0xf4 } -, - /* Seed */ - 106, - { 0x33, 0xd6, 0x2c, 0xd6, 0x67, 0x82, 0x3f, 0xbf, 0x13, 0xd5, 0x92, 0xae, 0x4d, 0x02, 0xa2, 0x37, 0x0d, 0x1d, 0x99, 0xdb, 0x06, 0xc7, 0x25, 0x42, 0x5e, 0x0d, 0x12, 0xfc, 0xb4, 0x83, 0x4e, 0xf9, 0xe5, 0x49, 0x9d, 0x60, 0x7e, 0x8a, 0xae, 0xfe, 0xba, 0x81, 0x96, 0x49, 0xfb, 0x3d, 0x61, 0xc7, 0x05, 0xf5, 0xe9, 0xa3, 0xa2, 0xf8, 0x96, 0x27, 0x61, 0x89, 0xa3, 0x20, 0x0d, 0x2f, 0xaf, 0xf7, 0x76, 0x79, 0xe0, 0x56, 0x34, 0x9a, 0x5b, 0x9b, 0x7b, 0x44, 0x49, 0xb6, 0x75, 0xcd, 0x48, 0xb6, 0x98, 0x09, 0x32, 0xc2, 0xcf, 0xc4, 0x6b, 0xf8, 0x9a, 0x77, 0x34, 0xf6, 0x8d, 0xd9, 0xf4, 0xfe, 0x77, 0xe1, 0xd9, 0xcf, 0x1f, 0x31, 0xb2, 0x1c, 0x4c, 0x61 } -, - /* Encryption */ - 129, - { 0x04, 0xca, 0xef, 0xfc, 0xd5, 0x1c, 0x3f, 0xc9, 0x23, 0x63, 0x46, 0x77, 0x4d, 0xa0, 0xcf, 0xa7, 0x7e, 0x9e, 0x64, 0x65, 0xf6, 0x43, 0x7f, 0xf4, 0x6d, 0x9f, 0xa4, 0x58, 0xb3, 0x62, 0x34, 0x12, 0xc3, 0x10, 0x30, 0x09, 0xfb, 0xfe, 0x20, 0x31, 0x96, 0xdf, 0x72, 0x96, 0x26, 0xe0, 0xee, 0x3a, 0xfb, 0x6b, 0x10, 0xa5, 0xac, 0xd7, 0x2e, 0x84, 0x28, 0x1d, 0x9d, 0x9b, 0xcb, 0xa3, 0xe0, 0xef, 0x77, 0xdd, 0x84, 0xf3, 0xdb, 0x19, 0x2d, 0x31, 0xb5, 0xb6, 0x66, 0xf7, 0x6c, 0x93, 0x81, 0x06, 0x81, 0x37, 0x3b, 0xaa, 0x58, 0xe6, 0xda, 0xdb, 0x01, 0xfa, 0x5c, 0x65, 0xec, 0x89, 0xfa, 0x51, 0xcc, 0x24, 0x74, 0x61, 0x1b, 0x9a, 0x7c, 0xb0, 0x0e, 0x86, 0x2f, 0xd3, 0xd4, 0x9b, 0x1c, 0xd3, 0x1a, 0xfc, 0x2d, 0xb4, 0x49, 0xe0, 0x9d, 0xae, 0x2d, 0x0a, 0x7d, 0x4d, 0xf0, 0xbc, 0x32, 0x0b, 0x5a } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Encryption Example 12.2", - /* Message */ - 47, - { 0x97, 0xee, 0xa8, 0x56, 0xa9, 0xbd, 0xbc, 0x71, 0x4e, 0xb3, 0xac, 0x22, 0xf6, 0xeb, 0x32, 0x71, 0x96, 0x69, 0xc4, 0x2f, 0x94, 0x30, 0xc5, 0x89, 0x50, 0xc6, 0x4c, 0x0d, 0xab, 0xff, 0x3a, 0x9e, 0x20, 0x43, 0x41, 0x6c, 0x67, 0xca, 0xaa, 0xab, 0x7c, 0x68, 0xcc, 0xb3, 0xca, 0x99, 0xa3 } -, - /* Seed */ - 79, - { 0x9f, 0x14, 0x12, 0x61, 0xce, 0xc4, 0xf2, 0xc5, 0x2f, 0x96, 0x91, 0x25, 0xa3, 0x6f, 0x14, 0x10, 0x27, 0x08, 0x82, 0x50, 0xd3, 0x6b, 0x17, 0x42, 0x1c, 0xd0, 0x96, 0x14, 0x76, 0x19, 0x06, 0x46, 0x8a, 0xfa, 0xb7, 0x62, 0x2c, 0x0d, 0x02, 0x19, 0x36, 0x91, 0x74, 0x47, 0x91, 0xe0, 0xd3, 0x5b, 0x6b, 0xc9, 0xf3, 0x37, 0x7e, 0x10, 0xb2, 0x85, 0x6c, 0x8e, 0xd9, 0x19, 0x9c, 0x89, 0xf4, 0xa4, 0x16, 0x13, 0xd3, 0xc4, 0x0c, 0xca, 0x37, 0x3a, 0x7c, 0xc6, 0x3c, 0x52, 0x60, 0xfe, 0x5a } -, - /* Encryption */ - 129, - { 0x0d, 0x26, 0xa0, 0x5d, 0xe9, 0x3b, 0x70, 0x7b, 0x85, 0x40, 0xfd, 0xc1, 0x98, 0x89, 0xd2, 0xd1, 0xe7, 0x93, 0x71, 0x57, 0xd3, 0x2d, 0x30, 0x3c, 0x52, 0x8d, 0xe3, 0x5e, 0x55, 0x3f, 0x94, 0x20, 0x28, 0x74, 0x4a, 0xf6, 0xa0, 0x40, 0x2e, 0xca, 0x0f, 0xcf, 0x5a, 0x85, 0x26, 0x1a, 0xd4, 0x75, 0xd8, 0x71, 0x0c, 0xc9, 0xf8, 0xb1, 0x1b, 0xa2, 0xc6, 0xda, 0xf1, 0xd6, 0x72, 0x69, 0x0c, 0x68, 0xed, 0x11, 0xe0, 0x35, 0xe9, 0xc6, 0x60, 0xec, 0xe1, 0xd8, 0x0c, 0xda, 0xb8, 0x00, 0xea, 0xd3, 0xc6, 0xe0, 0x78, 0x61, 0x7a, 0x1b, 0x0d, 0x27, 0x3d, 0xed, 0xd8, 0xd6, 0x57, 0x49, 0x16, 0x6b, 0xd0, 0x77, 0x74, 0xfb, 0x4c, 0x14, 0x86, 0xaa, 0x8a, 0x0a, 0xdf, 0x59, 0x5d, 0xbc, 0x3d, 0x10, 0xff, 0xae, 0xf1, 0x83, 0x84, 0x98, 0xa6, 0x75, 0x55, 0xc7, 0x7b, 0x6e, 0xd9, 0x83, 0xd5, 0xb9, 0xde } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.3", - /* Message */ - 5, - { 0x8e, 0x3e, 0x77, 0x2f, 0x39 } -, - /* Seed */ - 121, - { 0x9e, 0xb7, 0x31, 0xfa, 0x6d, 0x8d, 0x5b, 0x75, 0x81, 0xf8, 0xfa, 0xd2, 0xc8, 0x22, 0x5b, 0xc9, 0x68, 0x34, 0xaf, 0x61, 0xdb, 0x3d, 0x40, 0x9d, 0xd5, 0x63, 0x04, 0xae, 0x23, 0xea, 0x62, 0x69, 0x63, 0xa4, 0xd8, 0x04, 0x40, 0xc2, 0x4e, 0x43, 0x1e, 0x41, 0x97, 0x60, 0x90, 0x3a, 0xc4, 0x4b, 0xfe, 0x41, 0xa7, 0x50, 0x81, 0xa5, 0x46, 0x2b, 0xae, 0x65, 0x47, 0xc0, 0xe7, 0xa0, 0x6e, 0x91, 0x60, 0xdf, 0x9c, 0x01, 0xfa, 0x6c, 0x53, 0x54, 0xc8, 0x33, 0x18, 0xdb, 0x65, 0x6d, 0xee, 0x0a, 0x43, 0x77, 0x87, 0xfa, 0x46, 0x39, 0x4e, 0x55, 0x2e, 0xa5, 0x33, 0x15, 0x59, 0xb4, 0x01, 0x7b, 0xb6, 0xa0, 0xe1, 0xd6, 0xfc, 0x8a, 0x65, 0xb4, 0x5d, 0xa0, 0xc4, 0x5d, 0x88, 0x95, 0x48, 0x61, 0xcd, 0x6e, 0x7a, 0x41, 0x7e, 0x03, 0x7b, 0x1b, 0x05 } -, - /* Encryption */ - 129, - { 0x24, 0x4a, 0x86, 0x34, 0x51, 0x9a, 0xf4, 0x9f, 0x56, 0x9b, 0x69, 0x86, 0xab, 0x47, 0x79, 0x64, 0xa6, 0xb2, 0x92, 0x0d, 0x84, 0x3a, 0x1d, 0x97, 0xef, 0xd7, 0xfe, 0xf8, 0x3e, 0x81, 0xba, 0xda, 0x4c, 0x4b, 0x56, 0x29, 0x61, 0xef, 0x4e, 0x1f, 0xc3, 0x33, 0x46, 0x4b, 0x92, 0x6b, 0xd7, 0x4b, 0x07, 0xad, 0x50, 0xc6, 0x5b, 0x68, 0x16, 0x83, 0xd3, 0x89, 0xfe, 0x41, 0xd6, 0xd2, 0x13, 0xb6, 0x46, 0x9f, 0x18, 0x2b, 0x14, 0xb4, 0x62, 0xd7, 0x2c, 0x1c, 0xe3, 0x92, 0x8c, 0xa8, 0x06, 0xd9, 0x66, 0xb5, 0x2d, 0x42, 0xd0, 0xbf, 0xd6, 0x0c, 0x9d, 0x04, 0x91, 0x4d, 0x50, 0x83, 0x7c, 0xda, 0xe0, 0x9b, 0x33, 0x0e, 0x37, 0x27, 0x44, 0xdc, 0xe1, 0x7f, 0x18, 0xe9, 0x4d, 0x71, 0x1c, 0x8b, 0x58, 0xea, 0x44, 0x9f, 0x14, 0x49, 0xd3, 0x69, 0xfa, 0xef, 0x51, 0x46, 0x83, 0xd3, 0x01, 0x60, 0x79 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.4", - /* Message */ - 20, - { 0xdc, 0xfa, 0xe7, 0x71, 0x8c, 0x24, 0x7c, 0x40, 0xf9, 0xa2, 0xa3, 0xc3, 0x53, 0x5c, 0x50, 0x92, 0x80, 0xc8, 0x73, 0xc3 } -, - /* Seed */ - 106, - { 0xb9, 0x3b, 0xbe, 0xa6, 0xc1, 0x85, 0x3f, 0x15, 0x3b, 0x5e, 0x01, 0xe7, 0xe4, 0xe5, 0xd0, 0xc6, 0x3d, 0x9d, 0xfb, 0x24, 0x5f, 0xc6, 0xcf, 0x64, 0x04, 0x3d, 0x7a, 0x92, 0x20, 0xb0, 0xb8, 0x1a, 0xc2, 0xaf, 0x65, 0x6b, 0x99, 0x71, 0x4b, 0xa4, 0x30, 0xe0, 0xa3, 0x96, 0x95, 0xd2, 0x5f, 0xf2, 0x69, 0xb0, 0xb9, 0xb8, 0x65, 0xfc, 0x4d, 0x4e, 0xee, 0x5e, 0x07, 0xa5, 0xb5, 0xbe, 0x35, 0x43, 0x82, 0xaa, 0xa4, 0x14, 0xbc, 0x62, 0x08, 0x54, 0x5c, 0x86, 0xce, 0x02, 0x38, 0x8c, 0x07, 0xb3, 0x76, 0xfb, 0x02, 0x98, 0xc3, 0x7d, 0x1a, 0xc3, 0x9e, 0xa1, 0x89, 0xb0, 0xad, 0xf7, 0x80, 0xf6, 0xe8, 0x30, 0xbc, 0xe9, 0x17, 0xb5, 0x0a, 0xdb, 0x7a, 0x31 } -, - /* Encryption */ - 129, - { 0x0c, 0x41, 0x20, 0x52, 0xd4, 0xef, 0x4a, 0xb5, 0x1b, 0x2f, 0x62, 0x37, 0x05, 0xf0, 0x7f, 0x41, 0xfa, 0xd6, 0x4d, 0xaf, 0xfd, 0xba, 0x62, 0x44, 0xef, 0xd4, 0x7f, 0x51, 0x9d, 0xe2, 0xe7, 0x1a, 0x01, 0xa6, 0xc5, 0x7d, 0x1f, 0x28, 0xb6, 0xbf, 0x7b, 0x5c, 0x8d, 0xbb, 0x9f, 0xe7, 0xb1, 0x49, 0xb0, 0xeb, 0xaa, 0x53, 0x59, 0x61, 0x99, 0x37, 0x6d, 0xf4, 0x90, 0x32, 0x3d, 0x25, 0xc2, 0x17, 0xbc, 0x71, 0xbe, 0x37, 0xf1, 0x81, 0x03, 0x5c, 0xf4, 0x57, 0xeb, 0x5c, 0x06, 0xd6, 0xa3, 0xde, 0xd3, 0xd6, 0x6d, 0x5b, 0x35, 0xf0, 0x61, 0x81, 0xbf, 0x94, 0xd0, 0xec, 0x13, 0xec, 0x44, 0x7c, 0x70, 0x82, 0x33, 0x49, 0x1c, 0x55, 0x4f, 0x9e, 0x99, 0x1f, 0x6b, 0xcb, 0x8b, 0x78, 0xd3, 0x3c, 0x9c, 0x36, 0x95, 0x5b, 0x8d, 0xce, 0x51, 0x79, 0xff, 0x8b, 0xc5, 0x92, 0x44, 0xf6, 0x67, 0x90, 0x87 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.5", - /* Message */ - 42, - { 0xd7, 0x1d, 0xd8, 0x7a, 0x13, 0x99, 0x1a, 0x0d, 0xa2, 0xc7, 0x4a, 0x58, 0xb0, 0x48, 0x56, 0x34, 0xb3, 0xe0, 0x4f, 0xec, 0x9e, 0x3f, 0x1c, 0xf2, 0x60, 0x4a, 0x93, 0xbe, 0xd7, 0x96, 0x96, 0xfa, 0x63, 0x78, 0xeb, 0x1b, 0xa0, 0xe5, 0xd2, 0x04, 0x70, 0xa4 } -, - /* Seed */ - 84, - { 0x09, 0x90, 0x59, 0x92, 0x58, 0xe9, 0x7a, 0x2e, 0xbf, 0xbe, 0x10, 0x97, 0x72, 0x25, 0xc4, 0x16, 0x76, 0x2e, 0x95, 0xd2, 0x55, 0x3a, 0x80, 0x1f, 0x72, 0x6c, 0xc2, 0x49, 0xbc, 0xdf, 0x32, 0x21, 0x32, 0x58, 0x57, 0x19, 0xfc, 0x12, 0x39, 0x9a, 0xcd, 0x72, 0x54, 0xae, 0x77, 0xda, 0x34, 0x3f, 0xe2, 0xa9, 0xa3, 0xac, 0xb1, 0x1c, 0x14, 0xe2, 0x14, 0xe2, 0xd8, 0x5a, 0x76, 0x70, 0x8c, 0x3e, 0x72, 0x17, 0x3d, 0xa5, 0xd9, 0x90, 0x58, 0xe0, 0xc8, 0x70, 0x9e, 0xdf, 0x28, 0xc3, 0x69, 0x38, 0x76, 0x9f, 0x1f, 0x22 } -, - /* Encryption */ - 129, - { 0x0f, 0xf9, 0xcc, 0xe7, 0xb6, 0x9d, 0x7f, 0xca, 0x48, 0xd7, 0xc4, 0xf6, 0xcc, 0xff, 0x24, 0x8c, 0x3d, 0xb8, 0x8b, 0xf1, 0xb7, 0x85, 0x2c, 0xd9, 0xd8, 0x52, 0x5c, 0x3b, 0x41, 0xe4, 0x4a, 0x9b, 0x54, 0x0f, 0x20, 0x8f, 0xfb, 0xb8, 0xc8, 0x5b, 0xfa, 0x89, 0x0a, 0xc0, 0x2e, 0x99, 0x49, 0x59, 0xd6, 0xb0, 0x7f, 0x64, 0x81, 0x40, 0x78, 0x55, 0x6f, 0x8e, 0xc6, 0x0d, 0xb3, 0x57, 0xac, 0xea, 0xf8, 0x39, 0x11, 0x5f, 0xad, 0x41, 0xf8, 0x91, 0x8d, 0x69, 0xc2, 0x1a, 0x3a, 0xff, 0xef, 0x6e, 0xb1, 0x4a, 0x5d, 0x2c, 0xd0, 0x64, 0x5c, 0xd7, 0x06, 0xb5, 0x81, 0x43, 0x39, 0x4a, 0x27, 0x35, 0x36, 0x82, 0xe3, 0xba, 0xa1, 0x98, 0x00, 0x2e, 0x16, 0x80, 0xf2, 0x8f, 0x34, 0xbe, 0x08, 0x9a, 0x57, 0x84, 0xac, 0xe5, 0xca, 0x6b, 0x11, 0x08, 0x99, 0xdf, 0xb9, 0x58, 0x2f, 0x2e, 0x4b, 0x2a, 0x40 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.6", - /* Message */ - 58, - { 0x5e, 0x4b, 0x15, 0x8f, 0x8d, 0xcb, 0xcd, 0xd7, 0xe3, 0x08, 0x38, 0x5b, 0x40, 0x19, 0x0f, 0x5d, 0xef, 0x8c, 0xf3, 0x30, 0x5f, 0xc4, 0x9d, 0xe6, 0x3c, 0x9e, 0x35, 0xb4, 0x02, 0x36, 0xae, 0xe1, 0xf4, 0x56, 0x20, 0x5a, 0x52, 0x67, 0xa2, 0xaa, 0x7d, 0x88, 0xcb, 0x2c, 0x11, 0xaf, 0x7f, 0x28, 0x99, 0xd0, 0x1d, 0xa1, 0xb2, 0xc7, 0x46, 0x6f, 0xfe, 0xf7 } -, - /* Seed */ - 68, - { 0xa5, 0x22, 0xf9, 0x80, 0x8d, 0x9c, 0x01, 0xd8, 0xff, 0x79, 0x77, 0x5f, 0x7b, 0x22, 0x09, 0x8f, 0xc5, 0xfe, 0x32, 0x54, 0xe1, 0xb0, 0x4e, 0xb1, 0xcb, 0x85, 0x0e, 0x10, 0xe2, 0xc5, 0x06, 0x5e, 0x23, 0x27, 0x4d, 0xc0, 0xa0, 0x55, 0x87, 0x43, 0x6d, 0xa3, 0x75, 0x59, 0x33, 0x5f, 0xe7, 0x09, 0x3f, 0xa5, 0xe7, 0xa2, 0xa9, 0xc9, 0xa4, 0xdc, 0xaf, 0x23, 0x51, 0x79, 0xd0, 0xe9, 0x8f, 0xa3, 0x3e, 0x34, 0xb6, 0x16 } -, - /* Encryption */ - 129, - { 0x1c, 0x0e, 0x86, 0xa6, 0x36, 0x6b, 0xeb, 0x1e, 0x12, 0xd6, 0xbc, 0xfa, 0x6a, 0xd4, 0x94, 0x06, 0xc8, 0xb7, 0xe4, 0x8d, 0x1d, 0x5b, 0xe4, 0x5c, 0xbd, 0x83, 0x19, 0x49, 0x87, 0x49, 0x6f, 0xaa, 0x3e, 0x21, 0x92, 0x7e, 0xc6, 0x62, 0xf5, 0x02, 0xac, 0x3f, 0x91, 0xa4, 0xb4, 0xb9, 0x1d, 0x16, 0x0c, 0x19, 0x86, 0xa5, 0xed, 0x09, 0x27, 0x66, 0x88, 0x3b, 0x85, 0x55, 0xe3, 0xc9, 0x31, 0x4b, 0x44, 0xba, 0x33, 0x83, 0xdb, 0x28, 0x74, 0x23, 0xaf, 0x91, 0xb4, 0x13, 0x91, 0x8c, 0x08, 0x02, 0xc7, 0x77, 0x8e, 0x46, 0xc2, 0x96, 0xdc, 0x9f, 0x04, 0xcd, 0xb8, 0xb0, 0x6a, 0xdc, 0x7c, 0x53, 0xd8, 0x59, 0xf4, 0x42, 0xcc, 0xbd, 0x5f, 0xfa, 0xb5, 0xaf, 0x75, 0x2b, 0x97, 0x9b, 0xf5, 0x23, 0xa4, 0x0a, 0x1d, 0x08, 0xd7, 0x60, 0x63, 0xff, 0xb3, 0xd5, 0xcf, 0xc8, 0x2f, 0x15, 0xeb, 0xd6, 0xd4 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.7", - /* Message */ - 58, - { 0x35, 0x9b, 0xa5, 0x07, 0x56, 0xa8, 0x03, 0x30, 0x40, 0x9d, 0x3f, 0x23, 0x6a, 0x34, 0x0b, 0x90, 0xf4, 0x2f, 0x73, 0x2a, 0x87, 0x71, 0x1f, 0xe2, 0x23, 0x52, 0xd4, 0xc8, 0x25, 0x0d, 0x45, 0x47, 0x5e, 0x32, 0xb9, 0x58, 0x83, 0xe1, 0x60, 0x97, 0x55, 0xa1, 0x3c, 0xdf, 0xc1, 0xbf, 0x39, 0x4c, 0x5c, 0x67, 0x36, 0x9e, 0xca, 0x1f, 0x9a, 0x33, 0xe8, 0xba } -, - /* Seed */ - 68, - { 0xf9, 0xeb, 0xdd, 0xac, 0x9d, 0xe1, 0x70, 0x9a, 0x06, 0xbf, 0x6b, 0xbd, 0xdf, 0x58, 0x94, 0xe2, 0x3b, 0x96, 0x2b, 0xa0, 0xc0, 0x64, 0xbf, 0xcd, 0x7c, 0xc5, 0x76, 0x60, 0x3b, 0x0a, 0x1a, 0x1f, 0xf3, 0x5d, 0x64, 0x5e, 0xe8, 0x7a, 0xc6, 0xf8, 0x21, 0xa6, 0xa1, 0x51, 0xe6, 0xbb, 0xb0, 0x5b, 0xf3, 0xe0, 0x5c, 0xd9, 0xa6, 0xe2, 0xcd, 0x9c, 0x6c, 0xf5, 0x53, 0xbf, 0xb0, 0x7b, 0xd2, 0xfd, 0xa0, 0x40, 0xdf, 0xb6 } -, - /* Encryption */ - 129, - { 0x08, 0x33, 0x60, 0xe6, 0x49, 0x05, 0x9d, 0x00, 0x65, 0x8d, 0xba, 0x21, 0xf2, 0xdf, 0x28, 0xa2, 0x76, 0x4c, 0x45, 0x89, 0xf7, 0xa7, 0x7d, 0x5a, 0xf9, 0x95, 0x79, 0xa8, 0xab, 0x44, 0x80, 0xc8, 0x26, 0xa7, 0x7c, 0x2f, 0xb7, 0x95, 0x4f, 0x4f, 0x31, 0xfe, 0x1d, 0x9e, 0xb1, 0xbf, 0x40, 0xe8, 0x09, 0x57, 0x7f, 0x39, 0x30, 0x1a, 0xd3, 0xab, 0x95, 0xb3, 0x81, 0x6c, 0x90, 0xec, 0x3f, 0x1c, 0xd6, 0x29, 0xc4, 0x39, 0x61, 0x74, 0xbe, 0xd9, 0xfe, 0x1e, 0x0f, 0x47, 0x68, 0x23, 0xe5, 0x3b, 0x41, 0xd1, 0x35, 0xb4, 0x9a, 0x02, 0xb0, 0x0e, 0xff, 0xc7, 0x61, 0xec, 0x90, 0x94, 0x23, 0xaf, 0x15, 0x85, 0x52, 0x37, 0xb7, 0x7e, 0xe0, 0x7d, 0xf2, 0x5a, 0xb4, 0xe8, 0x58, 0x46, 0x7d, 0x4c, 0xcf, 0xe8, 0x08, 0x43, 0x24, 0x1b, 0xbf, 0x88, 0xeb, 0x4f, 0x85, 0x3e, 0xf4, 0xb4, 0x3b, 0xa3, 0xac } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.8", - /* Message */ - 25, - { 0xa9, 0xf3, 0x9f, 0x8b, 0xa0, 0x64, 0x66, 0x25, 0x0c, 0x26, 0x5d, 0xf0, 0xca, 0x46, 0x57, 0x0a, 0x16, 0x01, 0x12, 0xcf, 0x38, 0xfd, 0x74, 0x59, 0x99 } -, - /* Seed */ - 101, - { 0x88, 0xb3, 0xc2, 0x8b, 0xd3, 0x99, 0x9a, 0x86, 0x0b, 0x8d, 0xe7, 0x75, 0x93, 0x5b, 0x8e, 0xd7, 0x8f, 0xa2, 0xf2, 0x7c, 0x26, 0x8b, 0x24, 0x3a, 0x02, 0x45, 0xaf, 0x86, 0x72, 0x25, 0x47, 0x19, 0xf2, 0x3a, 0x4b, 0x7f, 0xed, 0xc0, 0x0d, 0x54, 0xe1, 0x2e, 0x9d, 0x70, 0x1f, 0x64, 0x69, 0x94, 0x24, 0xb6, 0xb8, 0x7d, 0x14, 0xd9, 0x67, 0x6e, 0xfa, 0x95, 0x9b, 0xe2, 0x1a, 0x04, 0xb6, 0x43, 0x5d, 0x25, 0x10, 0x03, 0xdd, 0x15, 0x3d, 0x7d, 0x08, 0xff, 0x28, 0xd9, 0x3a, 0x93, 0x20, 0xdc, 0x1b, 0xbc, 0x3d, 0xb3, 0x97, 0xa5, 0x48, 0x94, 0xf2, 0x05, 0x79, 0xf9, 0x3e, 0x4e, 0xad, 0x65, 0xc3, 0x1a, 0x40, 0x7e, 0xb4 } -, - /* Encryption */ - 129, - { 0x19, 0x83, 0x96, 0x50, 0xb9, 0x25, 0xf1, 0xf9, 0x6d, 0x61, 0x1e, 0x4d, 0xbb, 0x91, 0x49, 0x93, 0x54, 0x5c, 0x67, 0x39, 0x0c, 0x32, 0x93, 0x5f, 0xbf, 0x82, 0x25, 0x9d, 0xad, 0x10, 0xf2, 0x37, 0x30, 0xeb, 0x48, 0xf3, 0x42, 0x00, 0x46, 0x5a, 0x20, 0x38, 0x72, 0x77, 0xe2, 0xb9, 0x61, 0xe0, 0x83, 0x18, 0xd2, 0x07, 0x74, 0x47, 0xc9, 0x10, 0x92, 0x71, 0xe4, 0xde, 0xd8, 0xff, 0x3d, 0xc4, 0xf3, 0x79, 0xee, 0xe4, 0x55, 0xae, 0x96, 0x08, 0x1a, 0x1a, 0xe2, 0x4b, 0x96, 0xca, 0x73, 0x0a, 0x62, 0xf7, 0xac, 0xc5, 0xa5, 0xea, 0x52, 0x28, 0xe3, 0xa4, 0x8e, 0xa6, 0x74, 0x1c, 0xb3, 0x0e, 0x82, 0x9d, 0x55, 0x09, 0xcc, 0xc6, 0xc2, 0x87, 0xc7, 0x29, 0x1f, 0x3a, 0x1d, 0x89, 0xd6, 0x26, 0xbc, 0x98, 0x15, 0x77, 0xde, 0x52, 0xa1, 0x1f, 0x12, 0xae, 0x21, 0x43, 0xd3, 0xb0, 0xb5, 0x2f, 0x86 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.9", - /* Message */ - 1, - { 0x68 } -, - /* Seed */ - 125, - { 0x53, 0x8b, 0x09, 0x5e, 0x4f, 0x2a, 0xd6, 0x77, 0x30, 0x68, 0x74, 0x21, 0x91, 0x52, 0x42, 0x25, 0x1d, 0x07, 0xf6, 0x61, 0xed, 0xac, 0x7f, 0xe7, 0x9e, 0x31, 0xd6, 0xc3, 0x45, 0xaf, 0xf5, 0x9d, 0xf3, 0x88, 0xc7, 0x18, 0x2f, 0xff, 0x0c, 0x04, 0x27, 0xb5, 0x99, 0x35, 0xc6, 0x91, 0xda, 0xb8, 0xbc, 0x42, 0xbe, 0x47, 0xd7, 0x69, 0x11, 0x88, 0x0d, 0x91, 0x7b, 0x86, 0x27, 0x18, 0xb4, 0xc1, 0xc1, 0x88, 0x8d, 0x42, 0x20, 0xb9, 0xf8, 0x23, 0x1a, 0xcd, 0xf1, 0x2d, 0x9b, 0x85, 0x18, 0x6b, 0xe0, 0x95, 0x0c, 0x1a, 0xff, 0x84, 0xcd, 0x0f, 0xe3, 0x65, 0x86, 0xa5, 0x0e, 0x7e, 0x04, 0xb1, 0x72, 0xca, 0x9c, 0x85, 0x9e, 0x2d, 0xed, 0x6b, 0x8e, 0xa5, 0x79, 0xdd, 0x5e, 0x6e, 0xee, 0x77, 0x2c, 0xca, 0xa6, 0xb4, 0xa5, 0xd8, 0xab, 0x17, 0x31, 0xa8, 0x35, 0xd6, 0xa8 } -, - /* Encryption */ - 129, - { 0x1e, 0x86, 0x8a, 0xdb, 0x0e, 0x65, 0x32, 0x80, 0x60, 0x4e, 0x8d, 0x3b, 0xc4, 0xd9, 0x69, 0x84, 0xa2, 0x0a, 0xa0, 0x9d, 0x48, 0x0b, 0x4d, 0xff, 0xac, 0x62, 0xba, 0x78, 0xcb, 0xb7, 0xee, 0xd0, 0x64, 0x5a, 0x6d, 0x94, 0xd9, 0xd2, 0xf2, 0xd1, 0xe9, 0x17, 0xc1, 0x46, 0xb4, 0x1f, 0xaa, 0x3d, 0x1d, 0x2c, 0x19, 0x01, 0x05, 0x36, 0x8f, 0xb4, 0x84, 0x06, 0xa1, 0xd2, 0x42, 0x6a, 0xf3, 0xdc, 0xc8, 0x5b, 0xd0, 0x2d, 0x5c, 0x26, 0xc8, 0x97, 0xcc, 0xb2, 0x2e, 0x57, 0x59, 0x12, 0x64, 0x1a, 0x18, 0x8e, 0xf4, 0xac, 0x47, 0xa0, 0xa9, 0xfe, 0x9a, 0xa2, 0x70, 0x6d, 0x8e, 0x10, 0x61, 0xf5, 0xd9, 0x30, 0x63, 0xf4, 0x90, 0x17, 0x00, 0x3b, 0x23, 0x09, 0xca, 0x7d, 0x8d, 0x36, 0x70, 0x3b, 0xfd, 0xda, 0x3f, 0x7f, 0x43, 0xdf, 0x15, 0x8a, 0x15, 0xbb, 0x22, 0x13, 0x9a, 0xae, 0x15, 0x10, 0x77 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.10", - /* Message */ - 23, - { 0x35, 0x65, 0x87, 0xe6, 0xc6, 0xc0, 0xb4, 0x6c, 0x24, 0x45, 0xe0, 0x18, 0x63, 0x52, 0x76, 0xab, 0x84, 0x5f, 0xd1, 0x07, 0x6d, 0x10, 0x7f } -, - /* Seed */ - 103, - { 0xe5, 0xd3, 0x3e, 0x4d, 0x93, 0xc7, 0x08, 0x44, 0xee, 0x4a, 0x01, 0x65, 0x56, 0x24, 0x2d, 0x08, 0xe8, 0xe6, 0x2f, 0x1a, 0x7f, 0x79, 0x47, 0x79, 0xe2, 0x23, 0xee, 0x9d, 0xfb, 0x23, 0x1c, 0x3a, 0x52, 0x0f, 0x29, 0x7e, 0x50, 0x73, 0xe4, 0xf9, 0x2f, 0x53, 0x5c, 0xf1, 0x44, 0x55, 0x7f, 0x94, 0xee, 0x1e, 0x1e, 0x5c, 0xc6, 0xbf, 0x4c, 0x0c, 0x0c, 0x8e, 0x5e, 0xd4, 0x0d, 0x06, 0x63, 0x56, 0x06, 0xf7, 0x54, 0xcc, 0x2d, 0xd8, 0x3f, 0xe0, 0x2c, 0x57, 0x6c, 0xcd, 0x2b, 0x83, 0x5f, 0xd0, 0xf5, 0x3a, 0x99, 0x08, 0x3f, 0x4d, 0x15, 0xbf, 0xe9, 0x26, 0x88, 0x99, 0xef, 0x09, 0xff, 0x5f, 0x2f, 0x3c, 0xec, 0x9f, 0x9b, 0x8a, 0x7e } -, - /* Encryption */ - 129, - { 0x15, 0xd3, 0x64, 0xa4, 0x49, 0x9b, 0x30, 0xa5, 0xf7, 0x8b, 0x6d, 0x7d, 0x4f, 0x66, 0x7a, 0x1f, 0x76, 0xd7, 0x15, 0x15, 0x8f, 0x28, 0x01, 0x19, 0xb0, 0x55, 0xe1, 0xf2, 0x66, 0x3f, 0xc7, 0x96, 0xe3, 0x3c, 0x0e, 0xb6, 0x4e, 0x34, 0xa8, 0xda, 0xda, 0x5c, 0x81, 0x75, 0x42, 0x57, 0xa8, 0xbd, 0xf0, 0xed, 0x81, 0x15, 0xf6, 0x07, 0xb7, 0xc9, 0xcc, 0xa4, 0x81, 0xf7, 0x45, 0x20, 0xb6, 0xd9, 0xac, 0x98, 0xf5, 0xe7, 0x2c, 0x2b, 0xaf, 0x3c, 0xbb, 0x6b, 0xd9, 0xba, 0xea, 0x5d, 0x75, 0x86, 0x0c, 0xbd, 0xae, 0x34, 0x03, 0xfd, 0x5c, 0x37, 0x96, 0x4a, 0xae, 0x64, 0x36, 0x6a, 0xb0, 0x9b, 0xc9, 0xc6, 0x72, 0x76, 0x95, 0x14, 0x48, 0x19, 0x3b, 0xb4, 0xb1, 0xaf, 0xa2, 0x70, 0x79, 0xc3, 0x41, 0x70, 0xa2, 0x69, 0x56, 0x51, 0x0d, 0x44, 0x27, 0x64, 0x22, 0x99, 0x08, 0x42, 0x0f, 0xe8, 0x0a } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.11", - /* Message */ - 64, - { 0xe1, 0x53, 0x27, 0x6a, 0x68, 0x79, 0x67, 0x8f, 0xee, 0x19, 0x89, 0x48, 0x28, 0xd6, 0x26, 0x2e, 0xa3, 0x9a, 0xd0, 0x54, 0xc8, 0x9e, 0xdc, 0xb2, 0x3f, 0x72, 0xdc, 0xda, 0x1b, 0x00, 0x73, 0xc2, 0x87, 0x62, 0x02, 0x18, 0xd9, 0x2d, 0x0e, 0xb3, 0x0c, 0x62, 0xaf, 0xbf, 0x2b, 0x45, 0xdf, 0x62, 0xd0, 0x66, 0x65, 0xf8, 0x05, 0x25, 0xb6, 0x72, 0x7f, 0x95, 0xe3, 0x42, 0x29, 0xe6, 0x82, 0xa8 } -, - /* Seed */ - 62, - { 0x2a, 0xd7, 0x14, 0x2f, 0xcf, 0xa3, 0xbd, 0xbe, 0xb7, 0x55, 0xb2, 0xc5, 0xb5, 0xcf, 0x13, 0xe6, 0x96, 0x9e, 0xb7, 0x3b, 0x7a, 0x06, 0xbc, 0x29, 0xbc, 0xad, 0x7e, 0x75, 0x30, 0xa5, 0x90, 0x23, 0x0f, 0x6a, 0x43, 0xfc, 0x03, 0xd6, 0xc3, 0xa9, 0xc6, 0x41, 0xe5, 0x3a, 0x41, 0x77, 0xd5, 0x75, 0x02, 0x91, 0xec, 0x6d, 0x4b, 0x33, 0xf8, 0x71, 0x66, 0x8a, 0xd8, 0x56, 0x90, 0x77 } -, - /* Encryption */ - 129, - { 0x17, 0x8e, 0x49, 0x77, 0x0a, 0x4c, 0x8f, 0xfb, 0x7f, 0x65, 0xf3, 0x82, 0xcd, 0xb5, 0x76, 0xe6, 0x08, 0xe9, 0x75, 0xc4, 0x37, 0x13, 0x39, 0x10, 0x2b, 0x95, 0x2a, 0x1e, 0x71, 0xcb, 0xcb, 0x91, 0xfd, 0xcd, 0x0c, 0x0e, 0xd5, 0xa8, 0x5f, 0xbd, 0x26, 0x3d, 0xa6, 0xa7, 0x4e, 0x49, 0x1f, 0xb0, 0x4b, 0x60, 0xa5, 0x96, 0x1d, 0x8e, 0x6a, 0xc7, 0x24, 0xec, 0x8a, 0x81, 0x61, 0xc2, 0x2a, 0xe3, 0x10, 0x40, 0x7f, 0x59, 0xf7, 0xe6, 0x02, 0xda, 0x48, 0xaa, 0x2d, 0xad, 0x68, 0x3e, 0x88, 0xdb, 0x1d, 0x84, 0x29, 0x5e, 0x0f, 0xba, 0x5f, 0xf2, 0xf6, 0x73, 0xdf, 0x32, 0x85, 0x4d, 0x01, 0xb7, 0x1a, 0x89, 0x46, 0x0f, 0xf0, 0xe6, 0xe1, 0xbe, 0x98, 0xae, 0xbf, 0xa2, 0x27, 0xe3, 0x97, 0xea, 0xcc, 0x8b, 0x23, 0x17, 0x41, 0x47, 0xc4, 0x4e, 0x16, 0x20, 0x1e, 0xc6, 0xba, 0xbd, 0x16, 0x5b, 0xa4 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.12", - /* Message */ - 15, - { 0xfa, 0x4e, 0xb9, 0x31, 0xa7, 0xe2, 0x09, 0x0f, 0x31, 0xed, 0xb1, 0xff, 0x7d, 0x83, 0x61 } -, - /* Seed */ - 111, - { 0x43, 0x7f, 0xa1, 0x51, 0xf4, 0x34, 0x05, 0xdb, 0x22, 0x42, 0x2c, 0xb3, 0x5d, 0x1c, 0x57, 0x61, 0x16, 0x1c, 0xb9, 0xa7, 0x8a, 0xbc, 0xb6, 0xf0, 0x6d, 0xc4, 0xe7, 0xa8, 0x69, 0x48, 0x1f, 0x40, 0xb2, 0x1a, 0xe1, 0xd3, 0x3e, 0x07, 0x5c, 0x48, 0x5c, 0xd8, 0x50, 0x1a, 0x3c, 0xaa, 0x60, 0x18, 0x32, 0x5b, 0x7f, 0x85, 0x0d, 0x4d, 0x8f, 0x6d, 0xcf, 0xd2, 0xaf, 0xfe, 0x19, 0xd3, 0xe6, 0xc7, 0x08, 0x74, 0xe7, 0x10, 0x11, 0x14, 0xf0, 0xfb, 0xb9, 0x82, 0x25, 0x81, 0xba, 0xe6, 0xba, 0x2b, 0xa1, 0xe7, 0x49, 0x88, 0x81, 0xa5, 0xdc, 0x5b, 0xb8, 0x85, 0x27, 0x38, 0xa8, 0x2f, 0xb0, 0x6d, 0x15, 0x27, 0xb4, 0x33, 0x44, 0x87, 0xb3, 0x24, 0x01, 0x3e, 0x32, 0xbc, 0xf1, 0x7b, 0xab } -, - /* Encryption */ - 129, - { 0x22, 0x6d, 0x77, 0x67, 0x00, 0xc5, 0xe1, 0xdd, 0xb9, 0x99, 0x4b, 0x32, 0x91, 0xf1, 0xd3, 0x34, 0xb6, 0x9d, 0xd8, 0x63, 0x06, 0x5f, 0xa8, 0x34, 0x21, 0xe0, 0x1d, 0x52, 0x06, 0xec, 0x2c, 0xdb, 0x89, 0x90, 0xcf, 0x78, 0x97, 0x31, 0x09, 0xdc, 0x9f, 0x12, 0x6b, 0x60, 0x33, 0xd6, 0xd5, 0xd6, 0x91, 0x8e, 0xc8, 0x50, 0xd6, 0x9c, 0x71, 0x3c, 0xb5, 0xbb, 0xe3, 0x2e, 0xe5, 0x9e, 0x44, 0x5b, 0xcb, 0x4e, 0x50, 0xc6, 0xf1, 0x64, 0x43, 0x4d, 0x2a, 0x6c, 0xa6, 0x39, 0x69, 0xa2, 0x9b, 0x25, 0x03, 0x64, 0x15, 0xb0, 0xf7, 0xcb, 0x21, 0xb4, 0xf8, 0xb3, 0x4a, 0x8d, 0x9b, 0x74, 0x65, 0x3f, 0xff, 0x4f, 0x5d, 0xb9, 0xd1, 0xa6, 0xb5, 0x15, 0x2a, 0x64, 0x48, 0x36, 0xb6, 0x8b, 0x8e, 0xde, 0x9d, 0xc5, 0xa1, 0x69, 0xdc, 0x60, 0xdc, 0x5f, 0xac, 0x46, 0x8f, 0x24, 0x27, 0x84, 0x58, 0x10, 0x62 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.13", - /* Message */ - 49, - { 0x58, 0x81, 0x15, 0xe5, 0x37, 0x09, 0xeb, 0x15, 0xa3, 0x37, 0x4c, 0x25, 0x32, 0x9e, 0x88, 0x38, 0x26, 0xe3, 0x21, 0x3f, 0x37, 0xa1, 0xb7, 0xa6, 0x5d, 0xe1, 0x2d, 0xf2, 0x31, 0x72, 0xf1, 0x7f, 0xa4, 0x96, 0xff, 0x49, 0x2b, 0x09, 0x17, 0x3b, 0xa0, 0xc6, 0xf5, 0x8c, 0x29, 0x3d, 0x47, 0xf1, 0x48 } -, - /* Seed */ - 77, - { 0x07, 0x81, 0x85, 0xe0, 0x83, 0xcb, 0xb0, 0x6f, 0xe1, 0xa7, 0x49, 0x74, 0x35, 0x15, 0xf3, 0xa0, 0xb4, 0xb2, 0x6f, 0x85, 0x3b, 0x10, 0xe5, 0x68, 0xe8, 0x70, 0x82, 0xce, 0x44, 0x41, 0x2c, 0xa6, 0x7e, 0x59, 0x88, 0x8c, 0xcc, 0x0f, 0x50, 0x31, 0x01, 0x52, 0x1a, 0xca, 0xbf, 0xd9, 0x8f, 0xb7, 0xb5, 0xc1, 0x1d, 0x8a, 0x94, 0x1b, 0xa0, 0x3c, 0x49, 0x5a, 0xa0, 0x3e, 0x13, 0x52, 0x2f, 0x48, 0x7f, 0x6e, 0x16, 0x16, 0xbe, 0xc2, 0x07, 0x2b, 0x39, 0x96, 0xfa, 0xee, 0x29 } -, - /* Encryption */ - 129, - { 0x0e, 0x7e, 0x50, 0xa7, 0xb2, 0x47, 0xb0, 0x29, 0x7d, 0xec, 0x65, 0xc9, 0x52, 0x3f, 0x67, 0xca, 0xb6, 0xb5, 0x2a, 0x02, 0x5f, 0x53, 0x32, 0x0e, 0x94, 0x86, 0xcd, 0x20, 0x74, 0x10, 0xca, 0xdc, 0x74, 0xe4, 0xb0, 0x3f, 0xc0, 0x6b, 0xbe, 0xd5, 0x98, 0xb0, 0x22, 0xb6, 0x3b, 0x37, 0x76, 0x2a, 0x65, 0xfd, 0x35, 0x1c, 0xb2, 0x72, 0x7f, 0x3d, 0x80, 0x35, 0xa4, 0xcd, 0xba, 0x9c, 0x6a, 0x31, 0xe4, 0xed, 0x6b, 0xeb, 0x4f, 0xed, 0x31, 0x34, 0xeb, 0x63, 0xdf, 0xce, 0xab, 0x4f, 0x5f, 0x24, 0x59, 0xe5, 0x9f, 0xca, 0x01, 0x74, 0x75, 0x8a, 0xab, 0x37, 0x53, 0xb5, 0xc1, 0x93, 0xc8, 0x1e, 0x11, 0x49, 0x0f, 0x97, 0xb6, 0x22, 0xb7, 0x3f, 0xa7, 0x3f, 0x8e, 0xae, 0x7d, 0xa8, 0x39, 0x34, 0x84, 0xb8, 0x29, 0x79, 0x71, 0xa3, 0xe9, 0x23, 0x12, 0x9c, 0xe4, 0x35, 0x7b, 0x64, 0x5c, 0xc6, 0x38 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.14", - /* Message */ - 11, - { 0x20, 0xf1, 0xcf, 0xaa, 0x63, 0x67, 0xc7, 0xc3, 0x9b, 0x54, 0xa0 } -, - /* Seed */ - 115, - { 0x4a, 0x1c, 0x7b, 0x70, 0xf7, 0x83, 0xba, 0x0d, 0x5a, 0x26, 0xd4, 0x64, 0x5c, 0xf0, 0x5f, 0xa6, 0x10, 0xf5, 0xbe, 0x01, 0x77, 0xfd, 0xde, 0x9f, 0x2c, 0x34, 0x50, 0x57, 0xdb, 0x42, 0x44, 0x57, 0xfa, 0xa4, 0x30, 0xc9, 0x42, 0x4a, 0x54, 0xf7, 0xe5, 0x5f, 0xcf, 0xee, 0x6f, 0xae, 0xa4, 0x24, 0x4c, 0x03, 0x97, 0x74, 0x81, 0xed, 0xfc, 0xbb, 0x28, 0x88, 0x37, 0xc6, 0xa4, 0x8d, 0xbd, 0x72, 0x96, 0x67, 0x7a, 0x24, 0xe0, 0x6c, 0xc9, 0xd8, 0x5e, 0x68, 0x8c, 0x14, 0x09, 0x0f, 0xa2, 0x83, 0x0f, 0xf4, 0x96, 0x79, 0x33, 0xea, 0xf0, 0xdb, 0x69, 0x4b, 0x6a, 0xe4, 0x02, 0xca, 0xf9, 0xc2, 0xbe, 0xff, 0x04, 0xa5, 0x2a, 0x2f, 0x84, 0x7f, 0xe4, 0x0f, 0x4f, 0xfb, 0xdf, 0x3d, 0x58, 0xb7, 0xc4, 0xfd, 0xa8 } -, - /* Encryption */ - 129, - { 0x1e, 0x52, 0x84, 0x20, 0xbc, 0xbb, 0xa7, 0xd5, 0x9c, 0x6c, 0x40, 0xd4, 0x46, 0xd1, 0xaa, 0x95, 0x6a, 0xff, 0x03, 0x05, 0x36, 0x5b, 0x4d, 0x7c, 0xe9, 0x81, 0x0f, 0x22, 0xc3, 0x4f, 0x09, 0xa5, 0x55, 0xe5, 0xff, 0xbe, 0x51, 0x75, 0x03, 0x7f, 0x90, 0x3e, 0xaa, 0x6c, 0x40, 0x56, 0x36, 0x36, 0xd3, 0x81, 0xf4, 0x53, 0x25, 0xb5, 0xe6, 0x1a, 0x2c, 0x70, 0x51, 0x12, 0x55, 0x64, 0x02, 0xa7, 0xdc, 0xbe, 0x86, 0xcf, 0xa5, 0x4a, 0x6e, 0x6a, 0x50, 0x37, 0x8d, 0x05, 0xe2, 0x1c, 0x95, 0xcc, 0x6c, 0x45, 0xff, 0xdd, 0x05, 0x17, 0xf7, 0x7a, 0x36, 0xb2, 0x24, 0xd1, 0x70, 0x0a, 0x1f, 0x3e, 0xbb, 0x81, 0xd3, 0x67, 0x8a, 0x66, 0xe1, 0x45, 0x34, 0xa8, 0x0a, 0x59, 0x8b, 0xd7, 0x17, 0x26, 0xfe, 0x32, 0x2e, 0x73, 0x9c, 0x17, 0xeb, 0xa5, 0x08, 0xda, 0x8a, 0x03, 0x1a, 0x27, 0xf6, 0xbb, 0x28 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.15", - /* Message */ - 33, - { 0x73, 0x60, 0xcd, 0xb6, 0xc1, 0x59, 0x96, 0xb0, 0x60, 0x33, 0x1e, 0x9f, 0x2a, 0x36, 0x89, 0x95, 0xc0, 0x64, 0xad, 0xda, 0x56, 0x55, 0x95, 0x27, 0x78, 0x2c, 0x17, 0x0c, 0x69, 0x1b, 0xb3, 0xbd, 0x3b } -, - /* Seed */ - 93, - { 0x58, 0xdd, 0x80, 0xf4, 0xfd, 0xc5, 0xc9, 0x5d, 0xd9, 0xeb, 0x56, 0xac, 0x80, 0xa0, 0x2d, 0x53, 0xe8, 0xcc, 0x2e, 0xfb, 0x3c, 0xba, 0xc6, 0x72, 0x7d, 0x75, 0xb1, 0xe7, 0xb3, 0x5e, 0x05, 0x42, 0x19, 0x43, 0x3a, 0xf5, 0xaa, 0xe1, 0x98, 0xfd, 0x62, 0xf2, 0xec, 0xd2, 0xab, 0x8e, 0x26, 0x38, 0x77, 0xb5, 0xc9, 0x1e, 0xd5, 0x13, 0xe2, 0x35, 0x49, 0x7a, 0x63, 0x19, 0x2d, 0xb9, 0xa9, 0xbc, 0xb3, 0xbc, 0xa9, 0x7a, 0xe9, 0xbf, 0xce, 0xdf, 0x93, 0x56, 0x44, 0xb2, 0xd3, 0xbc, 0x20, 0xe0, 0x2a, 0xe5, 0xe7, 0x42, 0x4e, 0x81, 0x2a, 0x29, 0x49, 0x61, 0x6b, 0x82, 0x01 } -, - /* Encryption */ - 129, - { 0x20, 0x3b, 0xcd, 0xe1, 0xb4, 0x12, 0xe3, 0xce, 0xa2, 0x5b, 0x86, 0x30, 0xb2, 0x08, 0xf9, 0x78, 0xab, 0x22, 0xc1, 0xda, 0x81, 0x25, 0x07, 0x6e, 0x10, 0xff, 0x91, 0xd7, 0xbc, 0xfa, 0xef, 0xd7, 0xdc, 0xd8, 0x39, 0x16, 0x55, 0xc8, 0x86, 0xe8, 0xa9, 0x45, 0xa7, 0xf5, 0x7a, 0x74, 0xce, 0x2d, 0xc0, 0xe8, 0xec, 0x7f, 0xdb, 0x17, 0xcf, 0x19, 0x57, 0x80, 0xd3, 0xce, 0x80, 0xe0, 0xdd, 0xe7, 0x63, 0x9c, 0x67, 0x72, 0x05, 0xb8, 0xf9, 0xec, 0xea, 0x11, 0x54, 0x68, 0x97, 0x7b, 0xde, 0xa3, 0x50, 0x0b, 0x23, 0x9f, 0xce, 0x0d, 0x7a, 0x94, 0xbe, 0x6d, 0xe3, 0x33, 0xea, 0x7e, 0xcc, 0x22, 0xc0, 0x7e, 0x65, 0xd0, 0xeb, 0xd6, 0x5a, 0x39, 0x0a, 0x18, 0x5f, 0x18, 0x17, 0x89, 0xe7, 0xca, 0x8c, 0x1a, 0xc2, 0xfc, 0xa8, 0x28, 0xbb, 0x8d, 0x28, 0x22, 0x7e, 0x38, 0xc9, 0x88, 0x9c, 0xe0, 0x08 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.16", - /* Message */ - 29, - { 0x31, 0x9b, 0x82, 0x94, 0xbd, 0xf0, 0x7c, 0xd4, 0x06, 0x85, 0xe8, 0x80, 0x09, 0xfa, 0x7b, 0x3f, 0x12, 0x90, 0x16, 0x0e, 0xf3, 0x30, 0x67, 0xad, 0xd5, 0xef, 0x4d, 0x80, 0xfd } -, - /* Seed */ - 97, - { 0x4e, 0x07, 0xd7, 0xf9, 0x63, 0xbe, 0x24, 0xee, 0x6d, 0x8b, 0xd4, 0xdd, 0x95, 0xe9, 0xe3, 0x33, 0x49, 0x30, 0xe0, 0x3e, 0x65, 0x8d, 0x29, 0x6b, 0xb7, 0x95, 0x48, 0x6d, 0x72, 0x4e, 0x07, 0x41, 0xdd, 0x50, 0x73, 0x47, 0xa5, 0xb5, 0x7b, 0x79, 0xc9, 0x0d, 0x3c, 0x90, 0xc1, 0xae, 0xa7, 0x16, 0x19, 0x09, 0x1a, 0xcc, 0x81, 0x98, 0xb5, 0x51, 0x22, 0xda, 0x50, 0x99, 0x58, 0x2e, 0x0d, 0xb7, 0xda, 0x3c, 0xbd, 0x3c, 0xfd, 0x85, 0x29, 0x8f, 0x31, 0x55, 0x4e, 0x29, 0xcb, 0xcb, 0xa1, 0x19, 0x9c, 0xe4, 0x70, 0x16, 0x3c, 0xa0, 0x33, 0x7c, 0xc4, 0x14, 0xad, 0x32, 0x76, 0x70, 0x81, 0x11, 0xd6 } -, - /* Encryption */ - 129, - { 0x04, 0xfc, 0x7b, 0xb6, 0xfb, 0x64, 0x19, 0x61, 0x2b, 0x6e, 0xf5, 0x4b, 0x3c, 0xa0, 0x0a, 0x87, 0x46, 0x51, 0x95, 0xc3, 0x7f, 0x7f, 0x94, 0x0c, 0x23, 0x3e, 0xcb, 0x1d, 0x4a, 0x50, 0x5d, 0x3c, 0x56, 0xed, 0x23, 0xe0, 0x9e, 0x03, 0xf1, 0x45, 0x4f, 0x04, 0xb5, 0x6f, 0x6d, 0xa2, 0x5d, 0x0a, 0x6f, 0xca, 0xb0, 0xc4, 0x00, 0x87, 0x4a, 0xe9, 0x80, 0x6e, 0xe1, 0x87, 0x80, 0xb7, 0x5c, 0x6c, 0xa5, 0x66, 0x29, 0xe5, 0x77, 0xe8, 0xe7, 0xb5, 0xd2, 0xfc, 0x2c, 0x44, 0x0b, 0x98, 0x00, 0x19, 0x5b, 0x58, 0x51, 0x1b, 0xc3, 0xa7, 0x95, 0x44, 0x12, 0xc8, 0xf2, 0x73, 0xcc, 0x0e, 0x9d, 0x97, 0x1a, 0xbb, 0xdd, 0xd7, 0x02, 0x8e, 0x6f, 0x84, 0x87, 0x6a, 0x30, 0x58, 0xa4, 0x54, 0xfe, 0x2f, 0x33, 0xc7, 0x5e, 0x3d, 0xd0, 0x62, 0xf1, 0x19, 0xcd, 0x3e, 0xca, 0x81, 0x06, 0xb6, 0xbf, 0xbe, 0xa4 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.17", - /* Message */ - 26, - { 0x79, 0xc6, 0x82, 0xa2, 0xb9, 0x79, 0xfe, 0x5c, 0x96, 0x32, 0xaf, 0x18, 0x31, 0xc2, 0xaa, 0xcf, 0x0c, 0x6b, 0xf5, 0x66, 0x88, 0x5b, 0xf5, 0x25, 0x62, 0x50 } -, - /* Seed */ - 100, - { 0x5c, 0x2a, 0x95, 0x6d, 0x4b, 0x5f, 0x06, 0xf7, 0x50, 0x83, 0x5a, 0xb8, 0xb2, 0x9c, 0xf7, 0xc6, 0x41, 0xd7, 0x93, 0xc5, 0x56, 0xe1, 0x2a, 0xab, 0xa9, 0x56, 0xdf, 0xde, 0x46, 0x32, 0xd5, 0xe5, 0x02, 0xd5, 0x90, 0x41, 0x78, 0x3a, 0xfd, 0x1d, 0xa7, 0xb2, 0xe2, 0xd2, 0x4e, 0x22, 0xd6, 0x44, 0x78, 0x35, 0xbf, 0x6d, 0x77, 0xc6, 0xee, 0xbc, 0x0d, 0x2d, 0x64, 0xe7, 0xed, 0x2c, 0x14, 0x17, 0x18, 0xad, 0x86, 0x87, 0xc5, 0x97, 0xb7, 0x71, 0x8f, 0x38, 0xbf, 0x1a, 0x33, 0x16, 0xed, 0xef, 0xf6, 0xb7, 0x2e, 0x28, 0x51, 0x82, 0x88, 0x07, 0xbc, 0xff, 0xa9, 0xb8, 0xe1, 0xa8, 0x52, 0xf3, 0xfa, 0xa8, 0x07, 0xf6 } -, - /* Encryption */ - 129, - { 0x25, 0x1d, 0x48, 0x56, 0xb7, 0xa7, 0x58, 0x0d, 0x53, 0x88, 0x01, 0x62, 0x28, 0x1b, 0xb4, 0xe4, 0x1b, 0xde, 0xb2, 0xa8, 0x7d, 0xdb, 0xd5, 0xae, 0x1b, 0x30, 0x7d, 0x44, 0x48, 0xbe, 0x1f, 0x11, 0x69, 0x5f, 0xf7, 0x22, 0xc4, 0x32, 0x41, 0x5d, 0x0c, 0x74, 0xba, 0xa3, 0xfc, 0x0d, 0xd5, 0x11, 0x66, 0xac, 0x86, 0x5b, 0x31, 0x0c, 0x4f, 0x5c, 0x87, 0x07, 0x98, 0x62, 0x54, 0xc8, 0x96, 0x04, 0xcc, 0xda, 0xbc, 0xe6, 0xc6, 0x92, 0x44, 0x66, 0x21, 0x89, 0x8b, 0x4f, 0x5a, 0x08, 0xbc, 0xdf, 0x64, 0x62, 0xe5, 0x18, 0xee, 0x3a, 0xeb, 0x75, 0xe2, 0x6d, 0x8f, 0x63, 0xa0, 0x6f, 0xcb, 0xb3, 0xdf, 0x09, 0x8c, 0xee, 0xbb, 0x0f, 0xd2, 0xf6, 0x37, 0xe3, 0xa7, 0x93, 0x7f, 0x4d, 0x19, 0xe3, 0xa1, 0x92, 0x4c, 0x16, 0x08, 0x2e, 0xdc, 0x33, 0x3c, 0xb6, 0xde, 0x37, 0x63, 0x72, 0x46, 0xe4, 0x98 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.18", - /* Message */ - 63, - { 0x1e, 0x0d, 0x18, 0x07, 0xa2, 0xbd, 0x49, 0x6b, 0xb0, 0xcb, 0xa8, 0x41, 0xc7, 0x71, 0x58, 0xbf, 0xa5, 0xf8, 0xaa, 0x77, 0xd0, 0x56, 0x75, 0xc6, 0x4a, 0x5e, 0xb1, 0x85, 0x65, 0x91, 0xd3, 0x48, 0x54, 0xf8, 0x65, 0x92, 0x5b, 0x37, 0x1b, 0x68, 0x6a, 0xaa, 0xb4, 0x45, 0x98, 0xb4, 0xa1, 0x6a, 0xb6, 0xb7, 0x93, 0x44, 0xd3, 0xc2, 0x3f, 0x7d, 0x5b, 0xf1, 0x73, 0xb8, 0x42, 0xd7, 0x8c } -, - /* Seed */ - 63, - { 0xdb, 0xaf, 0xa5, 0x33, 0x2f, 0x0b, 0x55, 0x27, 0x96, 0x63, 0x6d, 0x8a, 0x09, 0x28, 0xb7, 0xd8, 0x7d, 0x9c, 0xee, 0x3d, 0x4b, 0xe6, 0xa3, 0x1c, 0x77, 0xe1, 0x4e, 0x0e, 0x5d, 0xfd, 0xd4, 0x03, 0xef, 0xb9, 0x8f, 0xa3, 0x38, 0x81, 0x6e, 0x12, 0x62, 0xc0, 0x64, 0x96, 0xfd, 0xe9, 0xd5, 0x57, 0xc0, 0x0c, 0xc0, 0xdd, 0x35, 0xfc, 0x33, 0xac, 0xcd, 0x79, 0xa3, 0x15, 0x06, 0x90, 0xeb } -, - /* Encryption */ - 129, - { 0x1b, 0x2e, 0xce, 0xa5, 0xfa, 0x90, 0x03, 0xfa, 0xb6, 0x55, 0x98, 0x57, 0xc6, 0xd9, 0x4f, 0x95, 0x70, 0x03, 0xf4, 0xe4, 0x1c, 0x09, 0x45, 0x64, 0x80, 0x4f, 0xe6, 0x96, 0x39, 0xe5, 0x40, 0xb6, 0x8f, 0x26, 0x3f, 0xaa, 0xec, 0xa1, 0x99, 0x69, 0x7a, 0x48, 0x85, 0x8b, 0x8a, 0x0f, 0xce, 0xa4, 0x91, 0x05, 0x7d, 0xf2, 0xfb, 0x8b, 0x35, 0xd0, 0x93, 0xd8, 0x94, 0xae, 0xc1, 0x7c, 0x5c, 0xde, 0x5d, 0xfd, 0x8f, 0x33, 0x51, 0x2b, 0xcc, 0x66, 0xcd, 0xe7, 0x6d, 0xa0, 0x73, 0x36, 0x98, 0x5a, 0x97, 0x43, 0x5b, 0x6e, 0xfe, 0xe4, 0xee, 0x09, 0xd3, 0xa2, 0x8a, 0xff, 0x34, 0xce, 0x6a, 0xe8, 0x75, 0x0d, 0xa4, 0x1e, 0x16, 0xca, 0x47, 0xe9, 0x38, 0x81, 0x8e, 0x44, 0xa9, 0xb4, 0x1f, 0xe9, 0x1a, 0x6a, 0x80, 0x1d, 0x35, 0x5e, 0xe8, 0xd6, 0x60, 0xe2, 0x7e, 0x4f, 0xe2, 0xce, 0x7f, 0x32, 0x5b } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.19", - /* Message */ - 15, - { 0x1c, 0x10, 0x5d, 0x5e, 0xbe, 0xa3, 0x66, 0x46, 0xa9, 0x72, 0x84, 0xc1, 0x7a, 0x86, 0xc4 } -, - /* Seed */ - 111, - { 0xc6, 0xf8, 0x03, 0x40, 0xa6, 0x55, 0x7e, 0x07, 0x53, 0xa9, 0x57, 0x3f, 0xe4, 0xf5, 0x21, 0x49, 0x77, 0xef, 0xdb, 0x08, 0x2a, 0x50, 0xeb, 0x5d, 0x5c, 0x51, 0x7d, 0x46, 0x72, 0x9f, 0xd2, 0xa3, 0x4a, 0xf7, 0xce, 0xe1, 0xaa, 0x46, 0xb7, 0x9d, 0x47, 0xe2, 0x5d, 0x83, 0x09, 0x0a, 0xeb, 0x4f, 0x50, 0x22, 0x98, 0xc0, 0x31, 0x37, 0x24, 0xfa, 0xb5, 0x4e, 0x54, 0xbe, 0xbb, 0x48, 0xd6, 0xcd, 0x9b, 0xeb, 0xdd, 0xcb, 0xee, 0x0f, 0x07, 0x53, 0x77, 0x27, 0xd6, 0x5c, 0x50, 0xe7, 0xd4, 0xcc, 0x0c, 0x6d, 0x19, 0xfc, 0x48, 0x0b, 0xa5, 0x78, 0x67, 0x26, 0x2c, 0xf2, 0xee, 0xdd, 0x9c, 0xfa, 0xba, 0x60, 0x7d, 0x65, 0x82, 0x87, 0xeb, 0xa4, 0x2b, 0x46, 0x99, 0x44, 0xcc, 0xb6, 0x12 } -, - /* Encryption */ - 129, - { 0x05, 0xb2, 0x3d, 0xc0, 0xc6, 0x2d, 0x90, 0xc1, 0x77, 0x1e, 0xba, 0x37, 0x8e, 0x43, 0x17, 0x9d, 0x7c, 0xa6, 0xaf, 0x51, 0x5e, 0x26, 0x19, 0xae, 0x4d, 0x7c, 0x8f, 0xc8, 0xbd, 0xa3, 0x78, 0xcb, 0xf7, 0xa1, 0xdb, 0xba, 0x1a, 0x14, 0xf4, 0x94, 0xc4, 0xe0, 0xd7, 0x13, 0x38, 0x79, 0x7c, 0x7e, 0xe0, 0x6e, 0x1a, 0x79, 0xe9, 0xff, 0x28, 0x56, 0xfb, 0xf7, 0x4f, 0xe6, 0xf1, 0xa7, 0xca, 0x6e, 0x5b, 0x9c, 0xa2, 0x83, 0xc4, 0xc9, 0x7e, 0x61, 0xcf, 0x9f, 0x40, 0x73, 0xe0, 0x32, 0xca, 0x27, 0xd6, 0x9b, 0x1b, 0x4e, 0xeb, 0xea, 0x77, 0xcc, 0x95, 0xa9, 0x28, 0x1f, 0x26, 0xb6, 0x4a, 0x05, 0xa9, 0x39, 0x44, 0xc8, 0x2c, 0x5a, 0x13, 0x42, 0x8e, 0xce, 0x21, 0xfb, 0x44, 0x01, 0xad, 0x42, 0x6e, 0x7a, 0xc1, 0xf0, 0x5b, 0xff, 0x84, 0xb3, 0x47, 0xcd, 0xc4, 0xdb, 0xe5, 0x2e, 0x67, 0x8a, 0xed } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 12.20", - /* Message */ - 12, - { 0xf1, 0x04, 0x02, 0xf0, 0x02, 0x05, 0xc5, 0x27, 0x57, 0xed, 0x6e, 0x9d } -, - /* Seed */ - 114, - { 0xe2, 0xae, 0xe7, 0xfc, 0xf4, 0x3c, 0xed, 0xe0, 0x75, 0x52, 0xa2, 0xdf, 0xe5, 0xb5, 0xa9, 0xef, 0x80, 0x82, 0x76, 0xd8, 0xf1, 0x0e, 0xb3, 0xf9, 0xbc, 0x50, 0xf1, 0xbd, 0x94, 0x0a, 0xaa, 0xe6, 0x34, 0xc9, 0xd8, 0xa0, 0x78, 0x8d, 0x44, 0xd4, 0x1e, 0x8a, 0x5c, 0x60, 0x36, 0x49, 0xef, 0xea, 0x83, 0x03, 0x32, 0x31, 0x51, 0x6c, 0x69, 0xd3, 0x3e, 0x12, 0xf1, 0xf5, 0xd3, 0xf0, 0xac, 0x1f, 0xc2, 0x3a, 0x9b, 0x3f, 0x5d, 0xa4, 0xe0, 0xef, 0x6e, 0x45, 0x50, 0xcb, 0x43, 0xfd, 0xff, 0x02, 0xb2, 0x5d, 0xac, 0x86, 0x27, 0x2d, 0x66, 0xdb, 0x59, 0xcd, 0xd6, 0x35, 0xf9, 0xc0, 0xdd, 0x0d, 0xaa, 0x08, 0x57, 0x91, 0x0c, 0x15, 0x88, 0x1b, 0x16, 0x0d, 0x70, 0xea, 0x53, 0x40, 0x5a, 0xa9, 0x59, 0xf4 } -, - /* Encryption */ - 129, - { 0x0b, 0x96, 0x56, 0x31, 0x78, 0x32, 0xa9, 0x40, 0xc7, 0x95, 0xbb, 0xa5, 0x8d, 0xaa, 0x15, 0x9a, 0x4f, 0x73, 0x3e, 0x82, 0x6c, 0xe5, 0x5a, 0x4e, 0xc5, 0x64, 0x33, 0xc5, 0x16, 0x84, 0x44, 0x4c, 0x78, 0xe2, 0xe2, 0xfc, 0xb3, 0x7f, 0x85, 0xad, 0x87, 0x79, 0x16, 0x52, 0x2d, 0x8a, 0x35, 0xa4, 0x3f, 0x53, 0xc5, 0x95, 0x17, 0xa8, 0x18, 0xe5, 0x21, 0xe1, 0x98, 0x2a, 0x50, 0x91, 0xbf, 0x2c, 0x68, 0xb0, 0x0e, 0xe4, 0x9a, 0xbd, 0x90, 0xdd, 0x77, 0x6c, 0x02, 0xf6, 0x4f, 0x34, 0xf6, 0x80, 0xa8, 0x8e, 0xee, 0x05, 0xec, 0x08, 0x88, 0x92, 0xbc, 0x0a, 0x95, 0x55, 0xb3, 0xf2, 0x0c, 0x8b, 0xee, 0x57, 0x9c, 0x0d, 0xdd, 0xe1, 0x51, 0x1a, 0x18, 0xaf, 0x98, 0xbc, 0x1d, 0x9c, 0xf9, 0x0b, 0x81, 0xbf, 0x13, 0x2a, 0xbd, 0x58, 0x97, 0x0b, 0x3e, 0x84, 0xd8, 0x14, 0xe2, 0x7d, 0x02, 0x5b, 0x73 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 13: A 1031-bit RSA key pair", -{ - /* Modulus */ - 129, - { 0x55, 0x5d, 0xc2, 0xba, 0xf0, 0x41, 0xb7, 0xf0, 0x9a, 0x04, 0x78, 0x42, 0x3a, 0xeb, 0xcb, 0x5f, 0x49, 0xb9, 0x5d, 0xbe, 0x15, 0x70, 0xe9, 0xa5, 0x42, 0x12, 0x8d, 0x33, 0x22, 0x87, 0x86, 0x6a, 0xc4, 0xcc, 0x63, 0xe7, 0x6f, 0x8e, 0x3a, 0xef, 0x22, 0xc9, 0x75, 0x3a, 0x54, 0x51, 0x99, 0x94, 0x24, 0x52, 0x41, 0x8a, 0x67, 0xd1, 0xa2, 0x23, 0x0d, 0xdb, 0x6f, 0x42, 0x22, 0xc6, 0x63, 0xd3, 0x8e, 0x80, 0x05, 0x0e, 0xeb, 0x67, 0x95, 0x6e, 0xc5, 0xf5, 0x49, 0x94, 0xa0, 0xbe, 0xa6, 0x95, 0xfa, 0x59, 0xfa, 0xdf, 0x2d, 0xcf, 0xe7, 0xac, 0xb5, 0x4e, 0xd9, 0xda, 0x3d, 0x0b, 0xeb, 0x12, 0x2c, 0x8a, 0x69, 0x1b, 0x0b, 0xb5, 0x1a, 0xe6, 0x5a, 0x77, 0x4d, 0x75, 0xb1, 0xb3, 0x49, 0xcb, 0x68, 0xc5, 0x17, 0xcb, 0xd3, 0x86, 0xae, 0x48, 0x2f, 0x05, 0xee, 0x46, 0x03, 0xec, 0xf2, 0x95, 0x5d } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 129, - { 0x05, 0x97, 0x87, 0xbb, 0x01, 0x23, 0xfc, 0xed, 0x98, 0xd9, 0x34, 0x1b, 0x7a, 0x8a, 0x99, 0x9e, 0xdb, 0x50, 0x76, 0x30, 0x8e, 0x6d, 0x00, 0x11, 0x20, 0x3b, 0xe0, 0xdd, 0xf9, 0xa4, 0x11, 0x0d, 0x0b, 0x69, 0x2c, 0x1e, 0x2b, 0xf3, 0x90, 0x2e, 0xbc, 0x03, 0xa0, 0x57, 0x3a, 0xd0, 0xc1, 0x93, 0xaf, 0xb1, 0x67, 0xb3, 0xae, 0x4b, 0x50, 0x28, 0xa5, 0xae, 0xbb, 0x22, 0x04, 0xef, 0x23, 0xf8, 0xe5, 0x83, 0x60, 0xbe, 0x94, 0x84, 0x95, 0x1e, 0x34, 0x71, 0x11, 0x76, 0x06, 0x2e, 0x53, 0xe3, 0xf6, 0x38, 0x74, 0xfc, 0x9e, 0x35, 0x91, 0xa9, 0xd9, 0x06, 0x8a, 0xa5, 0xe6, 0xc8, 0xc7, 0xa9, 0xab, 0x08, 0xe9, 0x79, 0x24, 0x70, 0x06, 0x6d, 0x71, 0xa0, 0x7c, 0x34, 0x33, 0xdd, 0x70, 0x3a, 0x42, 0xa6, 0xb3, 0xa9, 0xb1, 0xbf, 0xfb, 0x31, 0x49, 0x49, 0x8d, 0xcf, 0xf8, 0xb3, 0x57, 0x56, 0xed } -, - /* Prime 1 */ - 65, - { 0x0a, 0x7d, 0xbd, 0x7e, 0xe6, 0xde, 0xf3, 0x87, 0x5b, 0x4c, 0x55, 0x9f, 0x56, 0x69, 0x30, 0x7d, 0x17, 0x6b, 0xc1, 0x25, 0xb0, 0x9f, 0x5e, 0xb8, 0x26, 0x01, 0xb8, 0x13, 0x48, 0x57, 0x6c, 0x1c, 0xa7, 0xdc, 0xf4, 0xc2, 0xbd, 0x7f, 0x2b, 0x42, 0xa2, 0xc5, 0x46, 0x00, 0x02, 0xfc, 0xe0, 0xa9, 0xa2, 0x1d, 0xac, 0x5a, 0x97, 0x97, 0xdb, 0x23, 0x3d, 0x9d, 0x4a, 0x92, 0x93, 0xad, 0xd3, 0xdf, 0x73 } -, - /* Prime 2 */ - 65, - { 0x08, 0x23, 0x0f, 0xcf, 0x26, 0xfd, 0xc5, 0x75, 0x11, 0x9c, 0xf9, 0x05, 0x78, 0xd3, 0x66, 0x56, 0x4c, 0xfd, 0xa8, 0x65, 0xa2, 0x82, 0x0f, 0x38, 0xbc, 0xd6, 0x3e, 0xca, 0xa0, 0x95, 0x57, 0x65, 0x77, 0x2a, 0x88, 0x32, 0xfb, 0x31, 0x69, 0x7f, 0xd0, 0xdd, 0x45, 0xbb, 0xec, 0xc0, 0x4d, 0xd6, 0xa5, 0x9e, 0xc1, 0x1c, 0x1d, 0x5c, 0x6e, 0x87, 0x7c, 0x6b, 0x9d, 0x77, 0xc6, 0xa2, 0x76, 0xe3, 0xef } -, - /* Prime exponent 1 */ - 65, - { 0x08, 0xd1, 0xc7, 0xd9, 0xc4, 0xd0, 0x2c, 0xbd, 0xdf, 0x7c, 0x7e, 0x86, 0x62, 0xa8, 0x2f, 0x41, 0x19, 0xcd, 0x56, 0x24, 0x0f, 0x25, 0x0b, 0x05, 0x97, 0xbd, 0xde, 0x37, 0x27, 0x9b, 0x86, 0xa1, 0x58, 0x64, 0xa1, 0xc6, 0x8c, 0x73, 0x39, 0xb4, 0xdd, 0x0d, 0x26, 0x59, 0xa0, 0x29, 0x61, 0xdc, 0x79, 0x12, 0xa4, 0xef, 0xcb, 0x7c, 0xb7, 0x96, 0x1a, 0x97, 0xfe, 0x36, 0xd6, 0xbb, 0x4c, 0xe0, 0x0d } -, - /* Prime exponent 2 */ - 65, - { 0x01, 0xd4, 0x91, 0x3b, 0xd1, 0xd3, 0x87, 0xd5, 0x3b, 0xaf, 0x09, 0xbd, 0x17, 0x5e, 0xc6, 0x48, 0x67, 0x6d, 0x2f, 0xb2, 0x1d, 0x0a, 0x10, 0x8e, 0x7c, 0xbb, 0xdc, 0xc8, 0x0b, 0xb3, 0x4c, 0x43, 0x80, 0xb8, 0xca, 0x86, 0x5d, 0x46, 0xd2, 0x2a, 0x74, 0x3b, 0x31, 0xf2, 0x81, 0xe1, 0x08, 0x21, 0x5e, 0x84, 0x05, 0x80, 0x63, 0x82, 0x65, 0x42, 0x88, 0xd4, 0x54, 0x49, 0x9b, 0x1e, 0xf4, 0x8b, 0x75 } -, - /* Coefficient */ - 65, - { 0x08, 0x7b, 0x2e, 0xf2, 0x11, 0x44, 0x8e, 0x5c, 0x96, 0x1c, 0x9f, 0x6d, 0xfe, 0xe6, 0xaa, 0x26, 0x8e, 0xe8, 0x97, 0x7e, 0x31, 0x1c, 0x07, 0xcc, 0x8d, 0xb4, 0x72, 0xda, 0x6c, 0x49, 0x86, 0x3f, 0xaa, 0xf3, 0x3b, 0xf5, 0x05, 0xdc, 0xfd, 0x81, 0xf5, 0x3a, 0x53, 0xbe, 0x12, 0x1e, 0x44, 0x5e, 0x89, 0xd7, 0xe0, 0x38, 0xef, 0x27, 0xf3, 0x72, 0x7b, 0x51, 0x2a, 0x2b, 0x80, 0x94, 0x41, 0x20, 0xea } - -} -, -{{ - "PKCS#1 v1.5 Encryption Example 13.1", - /* Message */ - 7, - { 0x7b, 0xc8, 0x1d, 0x81, 0x46, 0xe3, 0x59 } -, - /* Seed */ - 119, - { 0x76, 0x65, 0x5e, 0x4a, 0xd8, 0xfb, 0x99, 0x34, 0xd1, 0x84, 0x7c, 0xc9, 0x0c, 0x02, 0x47, 0x3c, 0x57, 0x2b, 0x5f, 0xdf, 0xd1, 0x64, 0xa9, 0x70, 0xa3, 0xcd, 0x96, 0xbc, 0x8c, 0xd7, 0x96, 0xac, 0x80, 0x2c, 0x50, 0x28, 0x22, 0x90, 0xea, 0xd4, 0xc7, 0x7a, 0xa5, 0xcc, 0x2a, 0x7e, 0x34, 0x34, 0x18, 0xc9, 0xdf, 0x47, 0xef, 0xb8, 0x87, 0x86, 0xaf, 0x4c, 0xc8, 0xd1, 0x82, 0x1c, 0x50, 0x07, 0x39, 0x09, 0xe8, 0x4f, 0x7b, 0x45, 0x1a, 0xf4, 0xa3, 0x2a, 0xee, 0x6c, 0x7c, 0xc8, 0x97, 0xee, 0xf7, 0x66, 0x0e, 0x1c, 0x4c, 0x53, 0x5d, 0x10, 0x03, 0x9d, 0x3a, 0xa2, 0x03, 0x5c, 0x98, 0x51, 0x01, 0x25, 0xec, 0x5f, 0x2a, 0x2e, 0x9d, 0xac, 0x63, 0x95, 0x89, 0xff, 0x8b, 0xb3, 0x9f, 0x07, 0x43, 0x8d, 0xef, 0xb7, 0xd1, 0x33, 0x77 } -, - /* Encryption */ - 129, - { 0x14, 0x6d, 0x65, 0x12, 0xdf, 0xdf, 0xfb, 0xc0, 0x2d, 0x5d, 0x54, 0xbf, 0xf3, 0xe0, 0x36, 0xa3, 0x5b, 0x4c, 0x2a, 0xa9, 0x44, 0xd6, 0xf6, 0x72, 0x47, 0x93, 0x30, 0x65, 0x37, 0x08, 0x1b, 0xd1, 0x1e, 0xe5, 0x68, 0xa4, 0xe9, 0x71, 0x9f, 0x1e, 0x31, 0xf2, 0xd1, 0x4e, 0x18, 0xc2, 0xda, 0x62, 0x44, 0x70, 0xc5, 0xb0, 0xff, 0xab, 0x39, 0x7f, 0x92, 0x31, 0xb6, 0xef, 0x46, 0x34, 0xf6, 0x3a, 0x18, 0x28, 0x5d, 0xf3, 0x41, 0x45, 0x17, 0xa5, 0x1f, 0x93, 0x58, 0x6d, 0x66, 0xb0, 0x3c, 0xab, 0x1e, 0x78, 0xa4, 0xeb, 0x94, 0x1b, 0x9d, 0x3d, 0x7f, 0x92, 0x03, 0xb5, 0x9e, 0x1c, 0xb3, 0xbb, 0x48, 0x64, 0xb6, 0x46, 0xdc, 0x17, 0xa0, 0x64, 0x11, 0xeb, 0xd5, 0xff, 0x03, 0x37, 0x20, 0x58, 0x88, 0x1b, 0x4a, 0x24, 0xb2, 0x4f, 0x4c, 0x2d, 0xcd, 0x5c, 0xb4, 0x4c, 0x2e, 0xea, 0xbe, 0x6f, 0x72 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Encryption Example 13.2", - /* Message */ - 52, - { 0x68, 0x6a, 0x81, 0x0a, 0x03, 0x1d, 0x80, 0x61, 0xe4, 0x1a, 0x77, 0x6a, 0x7d, 0xfb, 0xdb, 0x3a, 0xf6, 0x26, 0xfe, 0x97, 0x69, 0xde, 0xee, 0xa4, 0x60, 0xba, 0x28, 0x67, 0xac, 0xf0, 0x3d, 0x9f, 0x92, 0x4d, 0x32, 0x1e, 0x8a, 0x8f, 0x42, 0x5c, 0x28, 0x51, 0x92, 0x98, 0x67, 0xa3, 0x26, 0xae, 0x27, 0x5b, 0x49, 0xd2 } -, - /* Seed */ - 74, - { 0xf7, 0x9b, 0x49, 0xf6, 0xa6, 0xbe, 0x3e, 0x68, 0x88, 0x4c, 0x80, 0xdf, 0xe1, 0xe8, 0x50, 0x1e, 0x54, 0x4c, 0xa7, 0x82, 0x23, 0x88, 0x43, 0xd4, 0x19, 0x76, 0x41, 0x12, 0x25, 0x0e, 0xdc, 0x1b, 0x69, 0xc7, 0xd1, 0xc3, 0x58, 0x7f, 0xdc, 0x75, 0x98, 0x7c, 0x62, 0xcb, 0x4c, 0x33, 0xbb, 0x81, 0x20, 0x2f, 0x72, 0xdb, 0xa7, 0xee, 0xe2, 0x4b, 0xfc, 0xf8, 0x9d, 0x4d, 0xae, 0x15, 0x0c, 0x07, 0x27, 0x24, 0x58, 0xfb, 0x01, 0xb6, 0xcd, 0x27, 0x09, 0x25 } -, - /* Encryption */ - 129, - { 0x08, 0x8a, 0x47, 0xf1, 0x1c, 0xb1, 0x34, 0xde, 0xc4, 0xb5, 0x08, 0x77, 0x25, 0xe8, 0xa5, 0xbd, 0x04, 0xf7, 0xfe, 0x58, 0x2a, 0x69, 0x91, 0x4f, 0x68, 0x3e, 0xe6, 0xde, 0x7c, 0x32, 0x4f, 0xed, 0x7e, 0x07, 0xf5, 0x70, 0x05, 0xc0, 0xe0, 0xdf, 0x75, 0x00, 0xe3, 0x70, 0xa4, 0x2e, 0xfd, 0x6f, 0xe5, 0xb2, 0x90, 0x19, 0x95, 0x19, 0xb1, 0x98, 0x06, 0xb6, 0xe6, 0x91, 0x69, 0x8a, 0xfd, 0x95, 0x17, 0xd7, 0x80, 0xda, 0x0b, 0xeb, 0xf7, 0x0a, 0x26, 0xd6, 0x5c, 0x5b, 0x64, 0xe3, 0x40, 0xa6, 0x40, 0x5e, 0x88, 0x95, 0x55, 0xdf, 0xa0, 0xa9, 0x2c, 0x42, 0x9a, 0xe9, 0xc3, 0xec, 0x88, 0xe8, 0x88, 0xee, 0xda, 0x04, 0x5e, 0x41, 0x0e, 0x3a, 0x9e, 0x61, 0x99, 0xab, 0x39, 0xeb, 0x1a, 0xc8, 0x64, 0xe2, 0x28, 0xc2, 0xcc, 0x1b, 0x64, 0xe3, 0x36, 0x16, 0x95, 0xb5, 0xaa, 0x11, 0x3d, 0xc5, 0xa7 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.3", - /* Message */ - 9, - { 0x18, 0x54, 0x4a, 0xad, 0x24, 0xab, 0x07, 0x5d, 0x3a } -, - /* Seed */ - 117, - { 0x23, 0x20, 0x4b, 0x8a, 0xd9, 0x45, 0x75, 0xf6, 0xe2, 0xf4, 0x6c, 0x79, 0x7b, 0xb8, 0x73, 0xaa, 0x3f, 0x46, 0x1a, 0xcd, 0x05, 0xe7, 0xdb, 0x78, 0x46, 0xa2, 0x31, 0x57, 0x59, 0x2d, 0x52, 0xe9, 0xa9, 0xa7, 0x04, 0x38, 0x19, 0xc4, 0x88, 0x96, 0x27, 0x5e, 0xd9, 0xdf, 0x0b, 0x1e, 0x54, 0x04, 0x93, 0xc0, 0x77, 0xea, 0x15, 0x41, 0x9a, 0xfa, 0x87, 0xdc, 0x35, 0xf9, 0xfd, 0xf7, 0xab, 0x8a, 0xaf, 0x47, 0xee, 0xe1, 0xd3, 0x3e, 0xcc, 0x28, 0x95, 0x06, 0x45, 0xf1, 0xb6, 0x91, 0x38, 0x2d, 0x87, 0x54, 0x1e, 0xd0, 0x64, 0x06, 0x93, 0x0c, 0x7e, 0xe1, 0x10, 0x9a, 0xa5, 0xca, 0x75, 0xa4, 0x90, 0x93, 0x4e, 0xa8, 0xd3, 0xb2, 0xa0, 0x4b, 0xa1, 0x52, 0x1b, 0xe0, 0x92, 0xc8, 0x68, 0xf7, 0xea, 0x5b, 0xe3, 0x78, 0xea } -, - /* Encryption */ - 129, - { 0x34, 0xd6, 0xe5, 0x46, 0xd6, 0x9e, 0x27, 0x06, 0xcd, 0xfc, 0x6d, 0x9e, 0x74, 0x18, 0xf8, 0xbe, 0x03, 0xe4, 0x57, 0x56, 0xa8, 0xb1, 0x9b, 0x60, 0xc2, 0x1d, 0x27, 0x34, 0x20, 0xaa, 0x7d, 0x5e, 0xbb, 0xbf, 0x46, 0x0e, 0xf4, 0xc8, 0x4f, 0x6d, 0x47, 0x77, 0xe6, 0xbf, 0x20, 0x3f, 0xf9, 0x18, 0x5f, 0xd5, 0x7d, 0xc7, 0x23, 0xb5, 0x8f, 0x35, 0xc1, 0xe9, 0xb5, 0xff, 0xf4, 0x7c, 0xf9, 0x5a, 0xe5, 0x69, 0xa5, 0xcb, 0x64, 0xdd, 0x9c, 0xb8, 0xd6, 0x40, 0x7c, 0x0b, 0xa5, 0xef, 0xd1, 0x48, 0xf1, 0x8b, 0x56, 0x96, 0xb0, 0x47, 0xda, 0xaa, 0xa2, 0x77, 0xed, 0x8d, 0x45, 0x28, 0x61, 0x4e, 0xe3, 0xda, 0x52, 0x38, 0x71, 0x32, 0xb7, 0xa9, 0xcc, 0xfe, 0x07, 0x3b, 0xe5, 0x03, 0x32, 0xc9, 0xe2, 0x83, 0x73, 0x53, 0xc6, 0x7d, 0xaa, 0x0f, 0xdf, 0xef, 0xc3, 0xb6, 0x52, 0xcf, 0x7d, 0x79, 0xfd } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.4", - /* Message */ - 4, - { 0xd9, 0x0f, 0xa3, 0x8f } -, - /* Seed */ - 122, - { 0x3e, 0x09, 0xf6, 0x50, 0x6f, 0x7f, 0x71, 0x91, 0x47, 0xae, 0x21, 0xe3, 0x94, 0x53, 0xae, 0x0b, 0x41, 0x60, 0x98, 0xda, 0x10, 0x3a, 0xf8, 0x4c, 0x0f, 0x7c, 0xef, 0xae, 0x50, 0x01, 0x99, 0xc9, 0x85, 0x59, 0x67, 0xa8, 0x30, 0x0a, 0x1a, 0x7f, 0x8d, 0x2c, 0xc1, 0x3b, 0x91, 0x72, 0x7e, 0xeb, 0xd9, 0x3c, 0xf7, 0x7d, 0x3f, 0xac, 0xb1, 0x9e, 0x83, 0xa8, 0x40, 0xeb, 0x58, 0x3b, 0xce, 0xa6, 0xc6, 0x11, 0x3a, 0x9c, 0x6f, 0x6f, 0x1f, 0xb5, 0xa0, 0xb3, 0x32, 0x55, 0x9a, 0x6b, 0x43, 0x15, 0x47, 0x45, 0x7c, 0xda, 0x1d, 0x3d, 0xce, 0xe3, 0x41, 0xd1, 0x71, 0xc6, 0x2e, 0x95, 0xe7, 0xea, 0xae, 0x16, 0xae, 0x0e, 0xaf, 0x1c, 0x1f, 0xe8, 0x10, 0xfb, 0xb0, 0xb7, 0x13, 0x8c, 0xfa, 0x3d, 0x66, 0xc6, 0x38, 0x50, 0xf3, 0x81, 0xe4, 0x9a, 0x2d, 0xad } -, - /* Encryption */ - 129, - { 0x27, 0x13, 0x3f, 0x43, 0x79, 0x1b, 0x39, 0x22, 0x7c, 0x8e, 0x95, 0x4e, 0x1c, 0xaa, 0x83, 0x0f, 0xa6, 0x59, 0x95, 0xf8, 0xa9, 0xf8, 0x8e, 0x0d, 0x1f, 0x75, 0x67, 0x85, 0xed, 0x5c, 0x8c, 0x78, 0x54, 0xfb, 0x1a, 0x9d, 0xc4, 0xa9, 0x5f, 0xa4, 0x4d, 0xbd, 0xf0, 0xf2, 0x85, 0x99, 0xc4, 0x72, 0x84, 0x93, 0x79, 0x75, 0x0a, 0x6a, 0x1b, 0xcb, 0x42, 0xca, 0xfb, 0x5b, 0xbf, 0xe0, 0x8c, 0x65, 0x10, 0x6d, 0xc8, 0x40, 0xcb, 0xec, 0x8e, 0xe2, 0xcb, 0x5a, 0x20, 0x6c, 0x81, 0x18, 0xaa, 0x06, 0x1d, 0xa4, 0xd2, 0x1d, 0x1b, 0x5c, 0x46, 0x11, 0x7f, 0x77, 0xc8, 0x96, 0xbc, 0x71, 0xce, 0xe2, 0xf8, 0x75, 0x7a, 0xff, 0x5c, 0xb2, 0xb3, 0xc3, 0x47, 0x74, 0x55, 0x8e, 0x8b, 0x82, 0xed, 0xb4, 0xef, 0x9b, 0xf2, 0xd4, 0xf2, 0xca, 0x4f, 0xc5, 0x97, 0xfa, 0xb4, 0x0a, 0x2d, 0x74, 0xe5, 0x23, 0x3a } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.5", - /* Message */ - 47, - { 0xfc, 0xbd, 0xd0, 0x24, 0x8d, 0xf8, 0x57, 0xaf, 0x17, 0x5b, 0x43, 0x96, 0x87, 0x5c, 0x00, 0x6d, 0x51, 0x14, 0xcc, 0x11, 0x16, 0x42, 0x80, 0x04, 0x38, 0x08, 0xaa, 0x79, 0x88, 0x6c, 0x4c, 0xaa, 0x29, 0x11, 0x7b, 0xf3, 0xce, 0x45, 0xa9, 0xbe, 0x55, 0x07, 0xc6, 0xb8, 0xbf, 0x0d, 0x30 } -, - /* Seed */ - 79, - { 0x2c, 0x9d, 0x14, 0x57, 0xba, 0x44, 0x50, 0xdf, 0x40, 0x21, 0xe4, 0xe5, 0x11, 0x83, 0xf7, 0x95, 0xd0, 0x91, 0xc0, 0x7f, 0x6a, 0xe0, 0xdd, 0x96, 0x2d, 0x57, 0x28, 0xc5, 0x4b, 0x7f, 0xc3, 0xc7, 0x72, 0xd7, 0x9d, 0x7b, 0xec, 0xe1, 0xbb, 0x0c, 0x99, 0x6c, 0x9a, 0xc0, 0x7f, 0x99, 0x54, 0xdd, 0xa7, 0x68, 0x7b, 0xec, 0x86, 0xbc, 0xdb, 0x31, 0x40, 0xb2, 0x45, 0xbb, 0x5e, 0x01, 0x27, 0x5b, 0x38, 0xd1, 0xf2, 0x52, 0x33, 0x5e, 0x36, 0xc6, 0x8c, 0x0e, 0x58, 0xf4, 0xce, 0x11, 0x7e } -, - /* Encryption */ - 129, - { 0x2c, 0xed, 0xde, 0xf2, 0x02, 0x69, 0x1a, 0xae, 0x42, 0x71, 0x85, 0x2a, 0x89, 0x83, 0xde, 0x7c, 0x21, 0x4c, 0xee, 0x00, 0xdb, 0xe1, 0xa1, 0x58, 0x84, 0xf4, 0xc3, 0xc1, 0xde, 0x7a, 0x3e, 0xa0, 0x1e, 0xcc, 0xf4, 0x7a, 0xe8, 0x6c, 0x26, 0x93, 0x24, 0xae, 0x52, 0x37, 0x73, 0x37, 0xb6, 0xca, 0x82, 0xe8, 0x5d, 0x55, 0x3f, 0xbb, 0x2e, 0xe5, 0xf9, 0x77, 0xdc, 0x66, 0x4e, 0x14, 0x2f, 0x1b, 0x54, 0x53, 0x8f, 0xaf, 0x85, 0xca, 0xc2, 0x7c, 0x29, 0xf2, 0xed, 0x0c, 0x40, 0x42, 0x67, 0x33, 0x5d, 0x48, 0xea, 0x40, 0xe8, 0xa3, 0xdd, 0xd8, 0x96, 0xbb, 0xb3, 0xe0, 0xed, 0xf0, 0xe1, 0x6f, 0x9e, 0x89, 0x44, 0x68, 0x3b, 0x8c, 0xfb, 0xaa, 0xb5, 0xea, 0xf2, 0x25, 0x30, 0xf1, 0x58, 0xc4, 0x88, 0x0b, 0xc3, 0xe4, 0x60, 0xc0, 0x6a, 0x24, 0x03, 0x42, 0x21, 0x0a, 0xa8, 0x7b, 0x79, 0x09, 0x68 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.6", - /* Message */ - 34, - { 0x25, 0xf2, 0xa3, 0x06, 0xea, 0xbe, 0x6e, 0x3a, 0x18, 0x30, 0xdc, 0x93, 0x6b, 0xfa, 0x41, 0xcd, 0xeb, 0xb8, 0x80, 0x05, 0x17, 0x5d, 0xf4, 0xa3, 0xc9, 0xc4, 0x64, 0x23, 0x01, 0x45, 0x61, 0x11, 0x5a, 0xa8 } -, - /* Seed */ - 92, - { 0xcb, 0x8e, 0x0f, 0xf4, 0x1b, 0xab, 0x01, 0xa1, 0x42, 0xf9, 0x6e, 0x7d, 0x7c, 0xd3, 0x92, 0x82, 0x0a, 0x82, 0xa1, 0x73, 0x66, 0x74, 0xb9, 0x21, 0x35, 0xef, 0x33, 0x08, 0x96, 0x88, 0xdd, 0x30, 0xb2, 0xc2, 0xf7, 0xba, 0x11, 0x1a, 0xf7, 0x8d, 0x3f, 0x76, 0xa3, 0x7f, 0x66, 0x7d, 0xb3, 0x97, 0x5f, 0xce, 0x64, 0xec, 0x9a, 0xfb, 0x09, 0x68, 0x50, 0x7f, 0x7b, 0x31, 0x09, 0x7e, 0xaa, 0xe4, 0x88, 0x1b, 0x36, 0x24, 0x06, 0x56, 0x16, 0xca, 0x09, 0x0c, 0x20, 0x4c, 0x1f, 0xa4, 0xbe, 0x13, 0x48, 0x50, 0xea, 0x5e, 0x90, 0xfe, 0xcd, 0xc8, 0x45, 0xb9, 0xd8, 0x39 } -, - /* Encryption */ - 129, - { 0x4c, 0x7a, 0xc8, 0x12, 0x45, 0xe7, 0xd4, 0xde, 0x3c, 0x4d, 0xbf, 0xb3, 0x15, 0xc4, 0x68, 0x34, 0x1c, 0xbf, 0x22, 0x87, 0x57, 0x35, 0xc5, 0xf8, 0x05, 0x90, 0x50, 0x58, 0x53, 0x06, 0x8d, 0x6b, 0xe7, 0x03, 0x9b, 0x1c, 0xee, 0x6d, 0x07, 0xec, 0xb7, 0x66, 0x9c, 0x42, 0xf6, 0xb9, 0x2f, 0x2a, 0x71, 0xf6, 0x45, 0xf7, 0x2c, 0xba, 0xff, 0x76, 0x34, 0x16, 0x37, 0xd2, 0xf1, 0xd6, 0xb1, 0xfe, 0xce, 0xb0, 0x7f, 0x21, 0xe1, 0x4c, 0x70, 0xfb, 0x77, 0xbc, 0x7f, 0x87, 0xb0, 0x31, 0xc2, 0xc8, 0xf2, 0xad, 0xa4, 0xec, 0x43, 0xe9, 0x12, 0x68, 0x2c, 0x2f, 0x49, 0x63, 0x9e, 0x75, 0x71, 0x57, 0x18, 0x77, 0xfc, 0x48, 0x1c, 0xbf, 0x26, 0x98, 0xb3, 0x73, 0x15, 0xbd, 0x4b, 0x93, 0x07, 0x83, 0xf4, 0x79, 0x45, 0x64, 0x2b, 0x7d, 0x81, 0x5e, 0x04, 0x32, 0xd4, 0x5d, 0xd1, 0xd0, 0xd3, 0xb2, 0xa5 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.7", - /* Message */ - 51, - { 0xa0, 0xda, 0xab, 0x4f, 0x9f, 0xe0, 0x4a, 0x2a, 0x51, 0xbf, 0x08, 0x32, 0x70, 0x11, 0x5d, 0x0d, 0x06, 0xdc, 0x29, 0x21, 0xcf, 0x8d, 0xd1, 0x3f, 0x5c, 0xff, 0x26, 0x04, 0xbc, 0x55, 0x1e, 0xfd, 0x98, 0x3d, 0x9b, 0x25, 0xb7, 0x27, 0x4f, 0x3c, 0xcb, 0x0a, 0xdc, 0xc1, 0x1b, 0x1a, 0x39, 0x54, 0xab, 0x9d, 0xb4 } -, - /* Seed */ - 75, - { 0xc8, 0x1d, 0x1c, 0x02, 0xf0, 0x6e, 0x7f, 0xfd, 0x6e, 0x03, 0xb8, 0x1b, 0x71, 0x93, 0xaa, 0xbd, 0xac, 0x56, 0x63, 0xab, 0x14, 0x25, 0xa6, 0x7d, 0x1a, 0x29, 0x50, 0x88, 0x5f, 0x5d, 0x1c, 0x4b, 0x72, 0x5e, 0x20, 0x9d, 0xcb, 0xce, 0x9f, 0x7b, 0xf2, 0x96, 0x75, 0x23, 0x42, 0xf1, 0x84, 0xfe, 0xa0, 0x6a, 0x7d, 0x6c, 0xb2, 0xbd, 0x39, 0xb2, 0xa3, 0x18, 0x07, 0x51, 0x64, 0xa2, 0xe7, 0x61, 0xb7, 0x02, 0x70, 0x2b, 0x01, 0x92, 0x46, 0xc1, 0xe5, 0x0e, 0x6e } -, - /* Encryption */ - 129, - { 0x06, 0xc0, 0x6c, 0x97, 0x5f, 0xc6, 0xb9, 0xc2, 0x60, 0xd3, 0xd8, 0x81, 0x3b, 0x57, 0x14, 0x24, 0x8b, 0xeb, 0x39, 0x9b, 0x7d, 0x68, 0xfc, 0xac, 0x25, 0x03, 0x38, 0xca, 0xc5, 0x4c, 0x40, 0x72, 0x95, 0x9f, 0x62, 0x03, 0x84, 0x44, 0xe9, 0xe6, 0x66, 0xba, 0xb5, 0xf9, 0x36, 0x06, 0x70, 0x47, 0xbc, 0xaf, 0x4b, 0xa4, 0xed, 0x68, 0xc6, 0xc8, 0x18, 0x57, 0x46, 0x29, 0x32, 0x56, 0xe7, 0xc7, 0x24, 0x16, 0x65, 0x81, 0x54, 0xde, 0xc0, 0x67, 0xf4, 0x25, 0x0d, 0xc6, 0xb2, 0x9b, 0xba, 0xc1, 0x8e, 0x82, 0x1e, 0x49, 0xa4, 0xc9, 0xb1, 0x63, 0x83, 0x1f, 0x7b, 0xb3, 0x83, 0x92, 0x32, 0x6c, 0x6b, 0x46, 0x85, 0x46, 0x4f, 0xe4, 0xf0, 0x26, 0xc9, 0xae, 0x4d, 0xbc, 0x58, 0x49, 0x47, 0x7b, 0x4c, 0x26, 0x0a, 0xa4, 0xac, 0x02, 0xd2, 0x1a, 0x26, 0x40, 0x20, 0xf1, 0x0c, 0xa1, 0x1b, 0x4b, 0x0e } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.8", - /* Message */ - 51, - { 0x74, 0x3c, 0xdd, 0xb3, 0x61, 0xc0, 0xbb, 0x32, 0x47, 0x64, 0x95, 0xad, 0x5d, 0xc6, 0x3a, 0x2b, 0xce, 0x5f, 0xba, 0xc1, 0xc8, 0xc2, 0x03, 0x93, 0x69, 0x32, 0x67, 0xd8, 0x43, 0xf2, 0x8b, 0x8c, 0xf3, 0xea, 0x13, 0xe3, 0x74, 0xe0, 0x9d, 0x0a, 0xa3, 0xf7, 0xae, 0x5d, 0x8f, 0x72, 0xd8, 0xe6, 0xcb, 0x9d, 0xbd } -, - /* Seed */ - 75, - { 0xf7, 0x2e, 0xd2, 0xd0, 0x69, 0xb8, 0xae, 0x50, 0x27, 0x04, 0x6e, 0x03, 0x27, 0xb9, 0x87, 0x84, 0x58, 0x09, 0xb4, 0xe8, 0x16, 0xc8, 0x86, 0x58, 0x24, 0xfc, 0x4a, 0x23, 0x01, 0xb4, 0x56, 0x80, 0x2b, 0x18, 0x9c, 0xbb, 0x43, 0xf0, 0x48, 0x32, 0xac, 0x25, 0xc8, 0x48, 0xd7, 0x4f, 0xbe, 0x1d, 0x62, 0x5a, 0xa9, 0x8a, 0xe0, 0x5e, 0xb6, 0x25, 0x47, 0x76, 0x1c, 0x78, 0xb8, 0x17, 0x61, 0xc3, 0x03, 0xf9, 0x3d, 0xf3, 0xfc, 0x0f, 0xea, 0x3c, 0x5a, 0x7b, 0xb1 } -, - /* Encryption */ - 129, - { 0x38, 0x3e, 0xbb, 0xf1, 0x59, 0xe1, 0xd0, 0xa2, 0x1c, 0x74, 0xeb, 0x61, 0xe3, 0x64, 0x3c, 0xb6, 0x31, 0xbe, 0x18, 0xc7, 0xa2, 0xa5, 0x4e, 0x24, 0x89, 0x33, 0x58, 0x7d, 0x34, 0x5e, 0x99, 0x52, 0x72, 0x46, 0x6d, 0xc1, 0xbd, 0x61, 0x3a, 0xdd, 0xb4, 0xcd, 0x7b, 0xa5, 0x01, 0x92, 0xfc, 0x2d, 0x89, 0x4d, 0x7f, 0xda, 0xf7, 0x83, 0x63, 0xb0, 0x79, 0xd9, 0x98, 0x01, 0x9f, 0x16, 0x42, 0x31, 0xcc, 0x2d, 0x75, 0x2d, 0xb7, 0x6a, 0x9f, 0x9d, 0x0c, 0x52, 0x04, 0xbf, 0xb0, 0xf9, 0x93, 0x05, 0x53, 0x09, 0x6b, 0x5b, 0x76, 0x80, 0xb0, 0x89, 0x4f, 0xb9, 0x9c, 0x11, 0x42, 0x5c, 0x67, 0xd6, 0x5d, 0x96, 0x5e, 0x35, 0x12, 0x8e, 0x15, 0x47, 0x46, 0xb3, 0xfe, 0xd8, 0xd0, 0x16, 0x99, 0x30, 0x70, 0xa7, 0x0e, 0x07, 0xeb, 0xeb, 0xe0, 0x6f, 0x2f, 0x4e, 0x97, 0x6c, 0x9a, 0x63, 0xfb, 0xe3, 0x20 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.9", - /* Message */ - 58, - { 0xe5, 0x31, 0x92, 0xfe, 0xbc, 0xd3, 0x69, 0x58, 0xbd, 0x08, 0x03, 0xf2, 0xea, 0x0a, 0xfd, 0xbf, 0xdf, 0x99, 0x3b, 0x58, 0xa9, 0xe4, 0xee, 0x70, 0xdf, 0x95, 0xb0, 0x6d, 0x4e, 0x7d, 0x74, 0xb6, 0x74, 0x5b, 0x87, 0xf5, 0x81, 0xf3, 0x42, 0xf8, 0xae, 0xf9, 0xae, 0x4c, 0x31, 0x82, 0xc4, 0x19, 0x9b, 0x65, 0x51, 0xfe, 0x18, 0xf8, 0xd3, 0xb9, 0xff, 0xe4 } -, - /* Seed */ - 68, - { 0xad, 0x98, 0x2f, 0xa7, 0x29, 0xf2, 0x7f, 0xce, 0x8a, 0x67, 0x49, 0x03, 0xec, 0xac, 0x69, 0x4d, 0xd3, 0x34, 0x13, 0xc7, 0x8e, 0x34, 0x28, 0xae, 0xed, 0x46, 0x9f, 0x84, 0xd9, 0x57, 0x5c, 0x6d, 0xa2, 0x75, 0x29, 0xf2, 0xc1, 0x4b, 0x53, 0xb7, 0x58, 0xd2, 0x0f, 0xb6, 0xb2, 0x47, 0xc8, 0x29, 0xc5, 0xfb, 0x1a, 0x16, 0xaf, 0x55, 0x07, 0x9a, 0x70, 0x73, 0xcc, 0xa0, 0x56, 0x25, 0x96, 0x2b, 0x6d, 0x1a, 0x6b, 0xef } -, - /* Encryption */ - 129, - { 0x22, 0x1d, 0x88, 0xa8, 0x6c, 0x9e, 0xd3, 0x7a, 0xa0, 0x9c, 0xf5, 0x72, 0x54, 0x97, 0x82, 0xe5, 0x8c, 0xa8, 0xd4, 0x85, 0x1f, 0x01, 0x6a, 0xcf, 0x28, 0x9e, 0xe8, 0xbf, 0x23, 0x79, 0x0b, 0x1a, 0x8f, 0x14, 0x8c, 0x16, 0x55, 0x08, 0xbc, 0x3f, 0xdb, 0x1e, 0xf9, 0xc9, 0x01, 0x16, 0x27, 0x42, 0x7c, 0x5f, 0x32, 0xe5, 0xca, 0xb8, 0x50, 0xcb, 0x6b, 0xc0, 0xbc, 0x04, 0xa1, 0x1d, 0xa2, 0xf0, 0x18, 0x13, 0xf3, 0x41, 0x41, 0x7b, 0x3e, 0x63, 0x2b, 0xca, 0xe0, 0x02, 0x97, 0x7d, 0x64, 0xff, 0xc9, 0x62, 0xc7, 0xfa, 0x75, 0x72, 0xf5, 0x6d, 0x26, 0x17, 0xe2, 0xa5, 0x2d, 0x3e, 0xf9, 0x17, 0xc4, 0x4a, 0x33, 0xb7, 0x15, 0x82, 0xaf, 0xf1, 0x39, 0x0b, 0x7c, 0x77, 0x4d, 0x60, 0x7c, 0x8d, 0x57, 0x8f, 0x7b, 0xc9, 0x0b, 0x35, 0x80, 0xd7, 0x7b, 0x03, 0x73, 0x19, 0x14, 0x77, 0xbc, 0x14, 0x26 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.10", - /* Message */ - 25, - { 0xd0, 0xeb, 0x48, 0x0e, 0x27, 0x45, 0x77, 0x9c, 0x8a, 0x30, 0xfe, 0x82, 0x0a, 0xef, 0x56, 0xd4, 0xce, 0x39, 0xef, 0x84, 0xea, 0x40, 0xc7, 0xdf, 0x0c } -, - /* Seed */ - 101, - { 0x46, 0x5f, 0x91, 0xe3, 0xf0, 0x7c, 0xb7, 0x22, 0x83, 0xbc, 0x2b, 0xbe, 0x52, 0x8b, 0x9a, 0xb3, 0x68, 0x16, 0x54, 0xfe, 0x20, 0xb6, 0x1a, 0x33, 0xf1, 0x23, 0xad, 0xe5, 0x2e, 0x83, 0x2f, 0xfa, 0x8a, 0x1b, 0x74, 0xa4, 0x44, 0x3c, 0xc8, 0x92, 0x95, 0xa2, 0x1a, 0x2a, 0xac, 0x98, 0x74, 0xda, 0x0a, 0x56, 0x79, 0xd1, 0x8c, 0xb5, 0xc4, 0xcd, 0x69, 0x0b, 0xd0, 0xa2, 0x0c, 0xbd, 0x9e, 0x9a, 0xa0, 0x72, 0xaa, 0x87, 0x13, 0x44, 0x8f, 0x95, 0xe5, 0xd6, 0xa6, 0xe6, 0x24, 0xd5, 0xb9, 0x08, 0x5c, 0xfc, 0xec, 0xb7, 0x99, 0x2f, 0x10, 0xea, 0x2d, 0xa6, 0xd6, 0x26, 0xeb, 0xe5, 0x43, 0xd8, 0x70, 0x22, 0x36, 0xee, 0x6c } -, - /* Encryption */ - 129, - { 0x06, 0xf3, 0xf8, 0xc7, 0x0d, 0x0f, 0xc4, 0xe7, 0x44, 0x73, 0xe6, 0x8f, 0xd2, 0x3c, 0xc9, 0xdf, 0x1e, 0xdd, 0x42, 0x35, 0xb4, 0x28, 0xb7, 0x72, 0xa0, 0x83, 0xb4, 0x1c, 0x34, 0x51, 0x62, 0x5a, 0x6f, 0x15, 0xde, 0xa4, 0xbf, 0x31, 0x3b, 0xf4, 0xf0, 0x3f, 0xdc, 0x4f, 0xe9, 0xf6, 0xa2, 0x07, 0x1a, 0xc6, 0x9a, 0xa3, 0xf0, 0xfc, 0x41, 0x57, 0xef, 0xc6, 0x21, 0xf9, 0x59, 0x40, 0x61, 0xf6, 0xc1, 0x98, 0x06, 0xbd, 0x5d, 0x75, 0x9a, 0xd0, 0x23, 0xca, 0xd1, 0x48, 0xe4, 0x47, 0xd2, 0x59, 0xb6, 0x2b, 0xf7, 0x34, 0x25, 0x91, 0xbe, 0x83, 0xba, 0xec, 0x77, 0x71, 0x4c, 0xfe, 0x2b, 0x90, 0x1f, 0x36, 0x9a, 0xea, 0x68, 0x02, 0x48, 0xba, 0xbf, 0x06, 0x87, 0x10, 0xcb, 0xb9, 0x70, 0x48, 0x4f, 0x32, 0x4a, 0x23, 0x52, 0x53, 0xa3, 0x1e, 0x02, 0x25, 0x34, 0xab, 0xec, 0x7b, 0x39, 0x96, 0x06 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.11", - /* Message */ - 27, - { 0x1c, 0x42, 0x97, 0xf6, 0xdf, 0xc0, 0x7f, 0xfe, 0x57, 0x59, 0xaa, 0x1e, 0xaa, 0x5b, 0x79, 0x37, 0x8a, 0xfc, 0xdd, 0x1a, 0x9a, 0x33, 0xa2, 0x13, 0x3a, 0x39, 0xac } -, - /* Seed */ - 99, - { 0xa7, 0xaf, 0x2a, 0x86, 0x01, 0xe4, 0x08, 0xc3, 0x18, 0xfd, 0x1e, 0x0f, 0x82, 0x44, 0x5b, 0x50, 0x95, 0x44, 0xd5, 0xec, 0x97, 0xa7, 0x95, 0x8f, 0x59, 0x4b, 0x20, 0x54, 0xc5, 0x09, 0xf7, 0xef, 0xfd, 0xd4, 0x16, 0x30, 0x6b, 0x2b, 0x2c, 0x91, 0xb5, 0xa6, 0x37, 0xa1, 0x56, 0x82, 0x0d, 0x60, 0x1a, 0x23, 0xff, 0xdb, 0x31, 0xfb, 0x35, 0xd3, 0x05, 0xaa, 0x93, 0x74, 0x57, 0x8e, 0xef, 0xb8, 0x10, 0x2e, 0x8b, 0x72, 0x44, 0x19, 0x1f, 0x4e, 0xc7, 0x4a, 0xa2, 0x6a, 0x0b, 0x7d, 0xb3, 0x6c, 0xab, 0x44, 0x99, 0x9c, 0x81, 0xb3, 0x61, 0x57, 0x01, 0x6b, 0x55, 0x89, 0x06, 0xe5, 0xd7, 0x08, 0x8d, 0x51, 0x32 } -, - /* Encryption */ - 129, - { 0x3c, 0xdf, 0x2d, 0xc6, 0x7a, 0x4a, 0xa5, 0x31, 0xcf, 0xa1, 0x42, 0x80, 0x08, 0xbd, 0x05, 0x44, 0xab, 0xbd, 0x03, 0x29, 0x22, 0xdc, 0xc2, 0x43, 0x6d, 0xa0, 0xb5, 0xd7, 0xef, 0x9a, 0x70, 0x17, 0xe6, 0x19, 0x3a, 0x8b, 0xaf, 0x38, 0xc5, 0x8e, 0x91, 0x96, 0x2d, 0x65, 0xa3, 0x75, 0xf0, 0x8c, 0x1d, 0x55, 0x57, 0x9c, 0xf9, 0x4a, 0x79, 0x5c, 0x9c, 0x70, 0xb6, 0xe4, 0x2e, 0x16, 0x43, 0xce, 0xf5, 0x40, 0xdc, 0xe1, 0xe9, 0x86, 0xdd, 0x99, 0x88, 0x87, 0xb6, 0x95, 0x52, 0x44, 0x4b, 0x6d, 0xe9, 0x3b, 0xa7, 0xd5, 0xf7, 0x64, 0x83, 0x54, 0xbf, 0xcb, 0x70, 0x21, 0x39, 0xed, 0x39, 0x54, 0x94, 0x7d, 0x7b, 0x18, 0x0b, 0x6c, 0x02, 0xbc, 0xad, 0x82, 0x43, 0xa0, 0xab, 0x27, 0xca, 0x66, 0x52, 0x76, 0x29, 0x1b, 0x46, 0xcc, 0x31, 0x8d, 0xa9, 0xb5, 0xf6, 0x0a, 0x04, 0xaf, 0xfe, 0xbc, 0xb0 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.12", - /* Message */ - 16, - { 0x00, 0x92, 0x7f, 0xca, 0x7f, 0x5e, 0xc7, 0x6f, 0x54, 0x8d, 0xd4, 0x82, 0x63, 0xe3, 0x39, 0xbe } -, - /* Seed */ - 110, - { 0xde, 0xbc, 0x2c, 0x1f, 0x22, 0xd9, 0x32, 0xff, 0xcb, 0x89, 0x7c, 0xf1, 0x0a, 0xe6, 0x2c, 0x3e, 0x05, 0x1e, 0x3f, 0x78, 0x46, 0x3a, 0xe6, 0x7d, 0x95, 0x61, 0xcf, 0x1a, 0x73, 0xd5, 0x5c, 0x4b, 0x14, 0xac, 0xa6, 0xc2, 0x1d, 0x83, 0xba, 0xf9, 0x76, 0xcd, 0x8b, 0xf2, 0x46, 0xc2, 0x29, 0x78, 0x61, 0xa6, 0xb1, 0xe9, 0xc9, 0xef, 0x30, 0x81, 0xc5, 0x1c, 0x4b, 0x68, 0x7c, 0x67, 0xb5, 0xdd, 0x0f, 0xe0, 0xf7, 0x55, 0x3f, 0x73, 0x8c, 0x2c, 0x8a, 0x5f, 0x81, 0xd1, 0x26, 0x8a, 0x0c, 0x2d, 0x4a, 0x46, 0x1d, 0x63, 0x5b, 0x0e, 0x59, 0xd2, 0x3b, 0xa4, 0x17, 0xab, 0xb8, 0x04, 0x5e, 0x9c, 0x10, 0xd6, 0x6b, 0x0e, 0xc8, 0x92, 0xf9, 0x53, 0xc6, 0xf2, 0x11, 0xf0, 0x2f, 0xf0 } -, - /* Encryption */ - 129, - { 0x49, 0xb9, 0x20, 0x89, 0xb5, 0x2a, 0xb7, 0x8c, 0x33, 0xb5, 0xbb, 0x30, 0x32, 0xcf, 0x70, 0x24, 0x94, 0x4a, 0xc6, 0x8e, 0x13, 0x9d, 0x2d, 0x56, 0x06, 0x8c, 0x7a, 0x26, 0x2a, 0x53, 0xe7, 0x80, 0x9f, 0xb5, 0xb0, 0x15, 0x65, 0xcc, 0x65, 0x61, 0xd7, 0x13, 0x30, 0x46, 0x87, 0x52, 0x30, 0xac, 0x21, 0x75, 0x64, 0x72, 0x96, 0xcf, 0x2b, 0x48, 0x47, 0xe1, 0x2b, 0x73, 0x63, 0x19, 0x72, 0x53, 0x21, 0xbe, 0xa2, 0x64, 0x75, 0x7d, 0xe0, 0xeb, 0x49, 0x88, 0x72, 0xd8, 0x9a, 0x4d, 0x7c, 0xe4, 0xa1, 0xbd, 0xb7, 0x33, 0x5d, 0xae, 0xa7, 0x8b, 0xa1, 0x96, 0xfd, 0x50, 0xd9, 0x03, 0x82, 0xe6, 0xd6, 0x2f, 0x8d, 0xf7, 0xae, 0x68, 0x5a, 0x1d, 0xfc, 0x84, 0x9e, 0x11, 0x99, 0x7d, 0xee, 0x88, 0x60, 0xd1, 0x0f, 0x70, 0x7b, 0x0d, 0x35, 0x36, 0x5a, 0x81, 0x24, 0x30, 0x73, 0x1e, 0x7a, 0x50, 0x8d } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.13", - /* Message */ - 26, - { 0x8b, 0x6d, 0xf2, 0xd6, 0xda, 0x63, 0x1a, 0xc8, 0xd5, 0x55, 0x6a, 0x26, 0x97, 0x54, 0x28, 0xfc, 0x4d, 0x20, 0xef, 0x5b, 0x4a, 0x1f, 0x06, 0x8e, 0xd2, 0xe5 } -, - /* Seed */ - 100, - { 0xff, 0x2c, 0x06, 0x98, 0x85, 0x2d, 0x1b, 0x0a, 0xe3, 0xc5, 0xc5, 0xc9, 0xbe, 0x26, 0xe8, 0x3c, 0x90, 0x44, 0x84, 0x2c, 0x16, 0x07, 0xf5, 0xf4, 0x08, 0x6a, 0x6d, 0x6c, 0xf1, 0x08, 0xad, 0xca, 0x61, 0xea, 0xf6, 0x65, 0x40, 0x0d, 0x7c, 0xff, 0x2a, 0x3a, 0xda, 0xdf, 0xaf, 0xd8, 0x0c, 0x64, 0x95, 0x6d, 0xa2, 0xd7, 0xd7, 0xc1, 0x35, 0xab, 0xf5, 0xa0, 0xd1, 0x76, 0x06, 0x25, 0x56, 0xeb, 0x4d, 0x8b, 0x75, 0xb9, 0x5c, 0xd1, 0x1e, 0xa9, 0xc0, 0x44, 0x2f, 0x84, 0x6f, 0x03, 0x7d, 0xa8, 0x77, 0x29, 0x02, 0xbf, 0xfc, 0xde, 0x65, 0x59, 0xe1, 0xb5, 0x9e, 0x60, 0xc6, 0xd0, 0xf9, 0x89, 0x6b, 0xa5, 0xc3, 0xc4 } -, - /* Encryption */ - 129, - { 0x41, 0x52, 0x76, 0x69, 0x80, 0x33, 0x39, 0xeb, 0xd8, 0xf2, 0xd1, 0xcc, 0x18, 0x6c, 0x7e, 0x8e, 0xbb, 0x80, 0xcf, 0x4b, 0x94, 0x9d, 0x8a, 0x28, 0x43, 0x65, 0x32, 0x9f, 0x3c, 0xe4, 0x6e, 0xbd, 0xac, 0x0a, 0x96, 0x9f, 0x67, 0x61, 0x90, 0x0c, 0xfe, 0x34, 0x2b, 0xc8, 0x4c, 0x7d, 0x69, 0x51, 0xac, 0xcf, 0x45, 0x28, 0x0b, 0xaf, 0x24, 0xa0, 0xcb, 0xb2, 0x42, 0xa9, 0x42, 0x18, 0xef, 0x9f, 0xd3, 0x71, 0xb1, 0xe0, 0x08, 0x24, 0x62, 0x62, 0x07, 0x0b, 0xf5, 0x54, 0xed, 0x57, 0x00, 0x7b, 0x97, 0x39, 0x79, 0x16, 0x35, 0x86, 0x1d, 0x86, 0xc6, 0x5b, 0x1a, 0x82, 0x56, 0xf4, 0x25, 0xf9, 0xf3, 0xae, 0x51, 0x9e, 0x1b, 0x1b, 0xdc, 0x58, 0x75, 0xb8, 0x78, 0xdd, 0xcf, 0xc1, 0x47, 0x0f, 0xee, 0xf2, 0xae, 0xeb, 0x01, 0x4b, 0x7e, 0x33, 0xef, 0xb9, 0xf4, 0xdd, 0x07, 0x83, 0xd1, 0x71, 0x23 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.14", - /* Message */ - 44, - { 0xea, 0x03, 0x96, 0x69, 0xbc, 0xd7, 0xa8, 0xcd, 0xce, 0xab, 0x58, 0x55, 0x91, 0xb5, 0x63, 0x61, 0xe9, 0x0b, 0xda, 0x0e, 0xa4, 0x40, 0x10, 0x49, 0x64, 0xe8, 0x89, 0xec, 0xe1, 0x8a, 0xeb, 0x04, 0xce, 0x0a, 0xb5, 0xb1, 0xcc, 0xb2, 0x30, 0xae, 0x03, 0x25, 0x5a, 0x39 } -, - /* Seed */ - 82, - { 0x20, 0x4f, 0xae, 0xb3, 0x13, 0x96, 0x5c, 0xc1, 0xa1, 0x8f, 0xaf, 0x10, 0x39, 0xfd, 0xde, 0x68, 0x1b, 0xc4, 0x3b, 0x22, 0x3e, 0x28, 0xbc, 0x47, 0x1c, 0x50, 0x42, 0x3d, 0xa0, 0xbd, 0x79, 0x7d, 0x6a, 0x8c, 0x73, 0x8c, 0x54, 0x03, 0x3c, 0x8e, 0x55, 0x9e, 0xa2, 0xd1, 0x0c, 0x3b, 0x79, 0xb8, 0x0e, 0x2e, 0xfd, 0xec, 0xfe, 0x89, 0x1c, 0xea, 0x2e, 0xcb, 0x34, 0x51, 0xa1, 0xa8, 0xe2, 0xec, 0x2f, 0x44, 0x7b, 0x79, 0x8d, 0x7d, 0xe5, 0x64, 0x1b, 0xda, 0x4a, 0xa9, 0x90, 0xb3, 0x01, 0xe1, 0xdd, 0xe7 } -, - /* Encryption */ - 129, - { 0x4c, 0xa1, 0xc8, 0x5c, 0xe3, 0xc6, 0x20, 0xd4, 0x29, 0x91, 0xcf, 0x41, 0x73, 0x3e, 0xad, 0x26, 0xa0, 0x93, 0x11, 0x18, 0x5f, 0xff, 0xe5, 0x8f, 0x41, 0x28, 0x8f, 0x6d, 0x0b, 0xb6, 0x84, 0x5b, 0x2d, 0x5a, 0xcf, 0x1a, 0xa0, 0x6c, 0x78, 0xd7, 0x1f, 0x76, 0x93, 0x96, 0xa9, 0x43, 0x42, 0x03, 0xe3, 0x8b, 0xb0, 0x1f, 0xd8, 0x8e, 0xb2, 0x3e, 0x6b, 0xc5, 0x1b, 0xa0, 0xc5, 0xf3, 0xee, 0xb3, 0x27, 0x13, 0xca, 0xd4, 0xd0, 0x87, 0x80, 0x50, 0x61, 0xab, 0x47, 0x3a, 0x15, 0x67, 0xe7, 0x9b, 0xbf, 0x4e, 0xae, 0x49, 0x36, 0xf1, 0x8d, 0x02, 0x05, 0xb3, 0x74, 0x6a, 0x17, 0xe0, 0x64, 0x8c, 0x52, 0x22, 0x3d, 0xd9, 0xf9, 0x99, 0x72, 0x81, 0xb5, 0x35, 0xab, 0x2f, 0xb3, 0xcf, 0xf0, 0x3c, 0xa8, 0x90, 0xf7, 0x10, 0xaa, 0x88, 0xfd, 0x2d, 0x0f, 0x39, 0x2f, 0xf4, 0xa8, 0x8d, 0x31, 0x1a, 0xa1 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.15", - /* Message */ - 5, - { 0x0f, 0x46, 0x2b, 0xeb, 0xc6 } -, - /* Seed */ - 121, - { 0x4e, 0xae, 0x5d, 0x54, 0x92, 0xd9, 0x44, 0xff, 0xdb, 0x04, 0x2a, 0xd9, 0x50, 0x16, 0x81, 0xad, 0xb3, 0xeb, 0x6a, 0xb5, 0x28, 0xb6, 0xe8, 0x13, 0x53, 0x55, 0xb6, 0x23, 0xab, 0x55, 0xa7, 0x40, 0x87, 0xb1, 0x9f, 0xc5, 0x9b, 0x85, 0x34, 0xda, 0x9a, 0x88, 0xda, 0x29, 0xf6, 0x6f, 0x71, 0xf9, 0x45, 0x2a, 0xed, 0xe0, 0xe3, 0xe9, 0x39, 0x07, 0x70, 0x9c, 0x34, 0x49, 0x56, 0x72, 0x85, 0x74, 0xb6, 0x6f, 0xb9, 0xa6, 0xf3, 0x38, 0x3d, 0x58, 0xa0, 0x13, 0x6f, 0x94, 0xc4, 0xed, 0x86, 0xca, 0x9d, 0xd3, 0x8b, 0xff, 0x07, 0x0f, 0xcc, 0x2d, 0xef, 0x29, 0xbd, 0xd6, 0xfc, 0x98, 0x59, 0x70, 0x96, 0x7f, 0x02, 0xfd, 0x6f, 0x93, 0x01, 0xcd, 0x56, 0xd0, 0x48, 0xa4, 0x42, 0xd7, 0x02, 0x40, 0x9a, 0x98, 0xa1, 0x32, 0xab, 0x6b, 0xed, 0xd4, 0xfe } -, - /* Encryption */ - 129, - { 0x29, 0x36, 0x9e, 0xb0, 0x0a, 0x3f, 0x87, 0x84, 0x38, 0xc9, 0x38, 0xf9, 0xd7, 0xbd, 0xa3, 0x85, 0x6c, 0x45, 0xa6, 0xd7, 0x7c, 0x17, 0x88, 0x51, 0x1b, 0x98, 0x2c, 0x58, 0xf6, 0x3d, 0xbe, 0xa3, 0x3e, 0x63, 0xae, 0x1d, 0x45, 0xc2, 0xdf, 0x6b, 0xa8, 0x0f, 0x0d, 0xe9, 0x97, 0x59, 0x2e, 0x1f, 0x8a, 0x3b, 0x3a, 0x09, 0xed, 0x76, 0x06, 0x51, 0x45, 0x3e, 0x10, 0x99, 0x78, 0xcf, 0xde, 0x3a, 0x60, 0x0a, 0x74, 0xfa, 0xa8, 0xa9, 0x1b, 0x7c, 0x72, 0x4f, 0x97, 0x3c, 0xb8, 0x0b, 0x96, 0x83, 0x5f, 0x05, 0x0b, 0x7d, 0xc0, 0x9d, 0x2f, 0x15, 0x74, 0x76, 0xc5, 0xb7, 0x05, 0x1f, 0x94, 0xd9, 0xc0, 0xf3, 0x17, 0xe1, 0xf1, 0x88, 0xe3, 0x09, 0x80, 0x79, 0x5b, 0x09, 0x6c, 0xf9, 0xbb, 0xce, 0xb5, 0x63, 0x6b, 0x3d, 0xb9, 0x87, 0x05, 0x4a, 0x56, 0x08, 0x75, 0x22, 0x75, 0x96, 0x29, 0x97, 0xe7 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.16", - /* Message */ - 45, - { 0x51, 0x4d, 0x3b, 0x38, 0x00, 0x22, 0xb3, 0x78, 0x2e, 0x8a, 0x77, 0xd7, 0x7b, 0xf2, 0x4a, 0xfd, 0xf9, 0x2f, 0x33, 0x97, 0x47, 0x4d, 0xae, 0x0d, 0x4b, 0xd6, 0xe4, 0xfa, 0x31, 0xca, 0x60, 0x83, 0xdf, 0x49, 0x6b, 0x36, 0x62, 0x6e, 0x7f, 0x8e, 0x1c, 0x91, 0x9f, 0x9f, 0x2e } -, - /* Seed */ - 81, - { 0xd4, 0xd3, 0xa9, 0xe8, 0xfb, 0xeb, 0x1d, 0xc6, 0x07, 0xb4, 0xdd, 0x78, 0x87, 0xba, 0x25, 0xc3, 0xd0, 0xbd, 0x81, 0x34, 0x84, 0xbd, 0x53, 0x76, 0xdc, 0x83, 0xef, 0xb5, 0x8e, 0xc5, 0xb2, 0x56, 0x2c, 0xb4, 0x4f, 0x98, 0x5e, 0x59, 0xf5, 0x0b, 0x9a, 0xde, 0x3c, 0x66, 0x71, 0x6c, 0xc6, 0xf4, 0x2e, 0x51, 0xc6, 0x0a, 0x2f, 0x4d, 0x8d, 0x75, 0xbf, 0xb9, 0xb8, 0x24, 0x10, 0x5d, 0x1e, 0xe1, 0x58, 0x35, 0xf5, 0xf5, 0xf2, 0x54, 0xfc, 0x6f, 0x68, 0x0e, 0xee, 0x0b, 0x85, 0xaf, 0x54, 0x7c, 0x17 } -, - /* Encryption */ - 129, - { 0x19, 0xfb, 0x39, 0x1a, 0x31, 0x00, 0x87, 0xbc, 0x3d, 0x08, 0x79, 0x1f, 0xd5, 0x99, 0x94, 0xbe, 0x80, 0x12, 0xdf, 0xfd, 0x76, 0xa0, 0x2a, 0xdb, 0xd4, 0x79, 0xcc, 0x0c, 0x15, 0x56, 0x60, 0x5d, 0x4d, 0xa2, 0xa3, 0x46, 0x1c, 0x7c, 0x71, 0xa8, 0x5e, 0xd8, 0xcf, 0x85, 0xe0, 0x8f, 0x45, 0xda, 0xde, 0x51, 0x8c, 0x00, 0xaf, 0x09, 0xf4, 0x93, 0xee, 0x8a, 0x55, 0x46, 0xff, 0xbe, 0xfb, 0x05, 0x3c, 0xca, 0x2e, 0xef, 0x06, 0x84, 0x76, 0x3c, 0xf7, 0x80, 0xf2, 0xe0, 0x97, 0xbd, 0x8e, 0x5c, 0x2e, 0xa8, 0x4c, 0xb1, 0xa8, 0xb8, 0xf8, 0x49, 0x6c, 0xc9, 0x18, 0x16, 0x7f, 0x65, 0x6c, 0xdc, 0x9e, 0x1d, 0x3b, 0x2a, 0x23, 0x38, 0xb6, 0x4c, 0x61, 0xe9, 0x0e, 0xcc, 0x27, 0x4a, 0x12, 0x10, 0xe3, 0xdb, 0x57, 0x83, 0xae, 0x3c, 0x00, 0xab, 0xd3, 0x74, 0x8a, 0x81, 0x0f, 0xd9, 0x14, 0x91, 0x14 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.17", - /* Message */ - 55, - { 0xfb, 0xa1, 0x63, 0x17, 0xb0, 0x93, 0x08, 0x3e, 0x37, 0x20, 0xaa, 0x06, 0x48, 0x17, 0xe7, 0x4c, 0xa7, 0x51, 0xa5, 0x17, 0x87, 0x4b, 0x69, 0x26, 0x50, 0xc4, 0x14, 0x7f, 0x11, 0x9f, 0x68, 0x90, 0x70, 0x2c, 0xf8, 0xb1, 0x4f, 0x0c, 0x18, 0x82, 0x21, 0x2d, 0x72, 0x40, 0x6c, 0x3a, 0x45, 0xd7, 0xd9, 0xff, 0xa4, 0x31, 0x24, 0x10, 0xa6 } -, - /* Seed */ - 71, - { 0x9c, 0xc9, 0xa4, 0xbf, 0x8c, 0xc2, 0x75, 0xa6, 0xb9, 0xb1, 0x35, 0x10, 0x31, 0x91, 0x10, 0x91, 0x7a, 0xd8, 0x53, 0x24, 0xc5, 0xa4, 0x34, 0x5e, 0x58, 0xf1, 0xfa, 0x47, 0x27, 0x5e, 0xe5, 0x92, 0x15, 0x69, 0xdc, 0xbc, 0xbd, 0x72, 0x36, 0x70, 0xcf, 0x4a, 0x24, 0xeb, 0xcd, 0x57, 0xf5, 0x7e, 0x99, 0x8c, 0x4b, 0xbd, 0x4a, 0x95, 0x67, 0x9d, 0x60, 0xba, 0xa0, 0xab, 0xe8, 0x79, 0x66, 0x8a, 0x2c, 0xb6, 0xed, 0x0f, 0xb9, 0x4e, 0x4a } -, - /* Encryption */ - 129, - { 0x4c, 0x41, 0xb9, 0xcb, 0xcc, 0x6f, 0xa8, 0x7f, 0x23, 0xf1, 0x7a, 0x36, 0xd0, 0x51, 0xe7, 0x78, 0x0a, 0x07, 0x06, 0x56, 0xca, 0xe7, 0xbe, 0xba, 0x14, 0xfa, 0x91, 0xc5, 0x55, 0xb8, 0x58, 0x8e, 0x88, 0x09, 0xe7, 0xd3, 0x35, 0x4e, 0x7e, 0xf5, 0xe0, 0xfa, 0xef, 0xe1, 0xcf, 0x39, 0x2e, 0x6f, 0xda, 0xd4, 0x04, 0x4a, 0xef, 0x08, 0xe3, 0x3e, 0x6f, 0xc2, 0x01, 0xc5, 0x47, 0xfd, 0xbd, 0xf7, 0xc7, 0x3d, 0x3b, 0xe0, 0x96, 0xed, 0x25, 0x3f, 0x9d, 0xf4, 0xaf, 0x52, 0xe1, 0x3b, 0x9a, 0x19, 0x25, 0xaa, 0x73, 0x93, 0xa6, 0x42, 0x95, 0x30, 0x20, 0x92, 0x01, 0xe5, 0x5b, 0x20, 0xe5, 0x1d, 0x50, 0x05, 0xd0, 0x6b, 0x58, 0x35, 0x3b, 0xfa, 0xfc, 0xee, 0xc3, 0x7d, 0x60, 0xe1, 0xca, 0x0d, 0x9d, 0xdd, 0xd8, 0x68, 0x0b, 0xd0, 0xa5, 0xd6, 0x92, 0xe7, 0x4f, 0x2d, 0xbd, 0xfc, 0xe2, 0x66, 0x02 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.18", - /* Message */ - 53, - { 0x5f, 0xfe, 0x82, 0xe0, 0x33, 0x54, 0x42, 0x45, 0xb8, 0x49, 0x62, 0xd3, 0x92, 0x7c, 0x2f, 0xa5, 0x99, 0x72, 0xef, 0x59, 0xc2, 0x37, 0xa3, 0x86, 0xa5, 0x1b, 0xd0, 0xba, 0x1f, 0x2c, 0x1f, 0x8e, 0x45, 0xb4, 0x6a, 0x05, 0xad, 0x97, 0xdb, 0x49, 0xd3, 0xac, 0xc6, 0x34, 0x4f, 0x1e, 0xda, 0xdf, 0x65, 0x64, 0xc2, 0x8c, 0xe1 } -, - /* Seed */ - 73, - { 0xcc, 0x23, 0x59, 0xbf, 0xd0, 0xd5, 0x7b, 0xce, 0xbf, 0x07, 0x5b, 0x87, 0xa5, 0x85, 0xa9, 0xbd, 0xe6, 0x59, 0x3e, 0xb2, 0x49, 0x61, 0xef, 0xf1, 0x98, 0x7e, 0x73, 0x56, 0x05, 0xd4, 0xe3, 0x0e, 0x97, 0x19, 0x37, 0xf6, 0xf3, 0xf5, 0xbe, 0x52, 0x78, 0xfd, 0x47, 0x6d, 0xc6, 0x60, 0xee, 0x07, 0x30, 0xcd, 0x07, 0xe5, 0xd1, 0xf4, 0x20, 0x09, 0xa3, 0x33, 0x31, 0x2d, 0x93, 0x28, 0xf3, 0xb0, 0x08, 0x5c, 0x40, 0x75, 0xbc, 0x70, 0x9a, 0x10, 0xf1 } -, - /* Encryption */ - 129, - { 0x05, 0x8b, 0x50, 0xe0, 0xbc, 0xa6, 0xb9, 0x34, 0xc0, 0x1b, 0xf7, 0xc3, 0x3b, 0xb6, 0x15, 0xb7, 0x22, 0xea, 0x41, 0x80, 0x7a, 0x7d, 0x2c, 0x7c, 0xb3, 0xd4, 0x38, 0xe2, 0x8d, 0xbe, 0x33, 0x3e, 0xd6, 0xd8, 0x37, 0x47, 0x7a, 0xf8, 0x4b, 0xb0, 0x06, 0xbb, 0xb1, 0x0b, 0x36, 0x94, 0x4f, 0x15, 0xd4, 0xf6, 0xd2, 0x8b, 0x5e, 0xd2, 0x49, 0xd5, 0x69, 0x0c, 0x08, 0x37, 0xa1, 0x6e, 0x15, 0x7b, 0xa8, 0x80, 0x22, 0x74, 0x10, 0x1c, 0xd4, 0x4e, 0x7f, 0xed, 0x72, 0xa7, 0x59, 0x81, 0xc9, 0x75, 0x66, 0xbc, 0x70, 0xe5, 0x55, 0x97, 0x02, 0xbf, 0x5b, 0x62, 0xfb, 0x09, 0xb2, 0x13, 0x60, 0x56, 0x73, 0xaa, 0xeb, 0xb7, 0xfe, 0x9b, 0x1a, 0xe6, 0xd8, 0x04, 0x03, 0xa2, 0x01, 0x33, 0x80, 0x3e, 0x1e, 0xd2, 0x35, 0x0b, 0x8e, 0x15, 0xff, 0x01, 0x9a, 0x70, 0x0f, 0x2a, 0xbe, 0x87, 0xd6, 0xe7, 0x33 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.19", - /* Message */ - 49, - { 0x22, 0x63, 0x3c, 0xc3, 0xfe, 0x7a, 0x7b, 0x4f, 0x00, 0xfa, 0x99, 0x9c, 0x4f, 0xe0, 0xd8, 0x82, 0xc3, 0x1b, 0xdc, 0x0d, 0x67, 0x0c, 0x0c, 0xc3, 0xd2, 0x88, 0x96, 0x1f, 0xbe, 0x63, 0x72, 0xe0, 0xe5, 0x32, 0x46, 0x42, 0xc7, 0xb1, 0xfa, 0x85, 0x2e, 0x1b, 0x4f, 0x69, 0x6f, 0x12, 0xf5, 0x58, 0x66 } -, - /* Seed */ - 77, - { 0x3e, 0xdf, 0xca, 0xf4, 0x88, 0x71, 0xd2, 0x91, 0xd5, 0xb7, 0xf7, 0x72, 0x3d, 0x92, 0xd9, 0x51, 0x51, 0x52, 0xb6, 0xbf, 0x52, 0xb8, 0x23, 0x69, 0x9c, 0x58, 0x8f, 0x75, 0xf3, 0x4e, 0x37, 0x95, 0x55, 0x0d, 0x07, 0x81, 0x18, 0xe2, 0x86, 0xc9, 0x6e, 0x90, 0x07, 0xae, 0xe1, 0x54, 0xf5, 0x7c, 0xe7, 0xf1, 0xd4, 0x60, 0x39, 0x47, 0x3a, 0x4a, 0x37, 0xa9, 0xb5, 0x90, 0xa3, 0x7e, 0xea, 0x59, 0x94, 0x7f, 0xe8, 0x58, 0x7c, 0x95, 0x69, 0x88, 0xbc, 0xb1, 0x74, 0xe9, 0x7c } -, - /* Encryption */ - 129, - { 0x3d, 0xeb, 0xbc, 0x6c, 0xfb, 0x0e, 0xed, 0x87, 0x16, 0x6b, 0xcc, 0xd5, 0x4c, 0x75, 0x97, 0xad, 0x36, 0xca, 0x0a, 0xc9, 0x6c, 0xf1, 0x66, 0x76, 0xe1, 0x87, 0x4b, 0xf5, 0xf1, 0x0a, 0x0e, 0xc6, 0x9c, 0x3b, 0xe2, 0x25, 0x96, 0x78, 0xee, 0xa6, 0x3a, 0x18, 0x08, 0xd9, 0x06, 0x65, 0xff, 0xce, 0x9a, 0xf0, 0x82, 0x7e, 0xe6, 0x29, 0xed, 0xd6, 0x59, 0x43, 0x43, 0x7f, 0x8c, 0xa0, 0xa6, 0x71, 0x17, 0x2c, 0x52, 0x1c, 0xc0, 0xd1, 0xdd, 0x01, 0xe2, 0x2f, 0x20, 0xa6, 0xc7, 0x9c, 0x42, 0x7a, 0xda, 0x88, 0x56, 0x00, 0x0c, 0x4e, 0x03, 0x5d, 0x9c, 0x5e, 0xf2, 0xe1, 0x05, 0xf2, 0xc9, 0xf6, 0x45, 0x7d, 0x9e, 0xe9, 0x5b, 0x43, 0xbc, 0x4b, 0xe3, 0x29, 0x4a, 0x0e, 0xe1, 0xd5, 0xc8, 0x33, 0xae, 0x91, 0x07, 0x8a, 0xed, 0x09, 0xe7, 0x92, 0xbb, 0x42, 0xc2, 0x5e, 0x00, 0xb0, 0x87, 0xe5, 0x61 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 13.20", - /* Message */ - 63, - { 0x55, 0x2b, 0x38, 0x4c, 0x5e, 0x51, 0x74, 0xf5, 0x1f, 0x38, 0x0d, 0x8b, 0x53, 0xe3, 0xc8, 0x97, 0xb4, 0x8c, 0x66, 0x9a, 0x9c, 0x2d, 0x11, 0x98, 0x5b, 0x86, 0x54, 0xde, 0x7f, 0x76, 0xd9, 0x62, 0x39, 0x6a, 0x37, 0xb9, 0x53, 0x41, 0xf9, 0x9d, 0xec, 0xe4, 0xaf, 0xd7, 0x1d, 0x3c, 0x84, 0xe1, 0x28, 0x7b, 0x0f, 0x0f, 0x86, 0xee, 0xff, 0xcf, 0xd9, 0x7b, 0xa1, 0x88, 0xe3, 0x79, 0x9e } -, - /* Seed */ - 63, - { 0x2e, 0x2f, 0x3e, 0x3f, 0x46, 0xd4, 0x74, 0x0c, 0xb2, 0x6c, 0xbc, 0x65, 0xaa, 0xe2, 0xaf, 0xe4, 0x9d, 0x0b, 0xe6, 0x66, 0x39, 0xd0, 0xdb, 0x10, 0xdf, 0xd6, 0xaf, 0x60, 0x64, 0x46, 0xf3, 0xb7, 0xde, 0x98, 0x21, 0x2f, 0x86, 0x17, 0x4b, 0xdf, 0xa5, 0xb2, 0xe2, 0x35, 0x85, 0x07, 0x45, 0x3c, 0x20, 0xad, 0xa6, 0x9a, 0x4f, 0xfe, 0x0a, 0x35, 0xe1, 0x2e, 0xfb, 0xab, 0x3b, 0xb4, 0x4c } -, - /* Encryption */ - 129, - { 0x14, 0x92, 0x91, 0xee, 0xb5, 0x36, 0xfc, 0x07, 0x03, 0xf7, 0xbd, 0xf1, 0xf0, 0x31, 0xa4, 0x30, 0xcc, 0x83, 0xad, 0xc4, 0x3e, 0x09, 0x68, 0x64, 0x91, 0x26, 0x69, 0x34, 0xef, 0x37, 0xea, 0xea, 0xb1, 0x1b, 0xc7, 0xf3, 0x91, 0x49, 0xab, 0x33, 0x43, 0x66, 0x94, 0x59, 0x36, 0x73, 0xcc, 0xc6, 0x39, 0x0b, 0x52, 0x9e, 0x64, 0xd3, 0x42, 0xe9, 0xf2, 0x1d, 0x17, 0x6d, 0xa2, 0x1f, 0xa6, 0x5a, 0xbd, 0x57, 0xee, 0xc6, 0x0d, 0xde, 0xc7, 0xd1, 0xa0, 0x93, 0xdb, 0xa3, 0x76, 0x44, 0x5f, 0x1b, 0xcf, 0xe5, 0xa6, 0xaa, 0xce, 0x9f, 0x13, 0x42, 0xaf, 0x39, 0xdb, 0x8a, 0xd4, 0x85, 0xba, 0x22, 0x2d, 0x39, 0x12, 0x62, 0x28, 0xfa, 0xee, 0xb4, 0x9b, 0xb3, 0xb2, 0x71, 0xfd, 0x38, 0xe1, 0x15, 0x25, 0xd8, 0x03, 0x15, 0x4e, 0x74, 0x08, 0x4b, 0x75, 0xc3, 0xdb, 0xcd, 0xff, 0x2e, 0x3d, 0x10, 0x42 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 14: A 1536-bit RSA key pair", -{ - /* Modulus */ - 192, - { 0xbe, 0x0c, 0xa0, 0x1f, 0x9c, 0x17, 0x21, 0x66, 0xf9, 0x12, 0x39, 0x1e, 0x5d, 0x58, 0xdd, 0xc3, 0x0d, 0x5d, 0xd0, 0x27, 0x9a, 0x49, 0xbb, 0x31, 0x2a, 0x31, 0xe4, 0xc8, 0xa6, 0x6a, 0x52, 0xfb, 0x4e, 0x8b, 0x67, 0x42, 0xfa, 0xac, 0xb2, 0x24, 0xc3, 0x03, 0x9f, 0x1e, 0x19, 0x8f, 0x33, 0x23, 0xb8, 0x88, 0xba, 0x0e, 0x35, 0xbb, 0x94, 0xc5, 0x11, 0xbd, 0x22, 0xb8, 0x86, 0x40, 0x5a, 0x71, 0x5e, 0x40, 0x9d, 0xe3, 0xbc, 0xeb, 0x4f, 0xc9, 0x91, 0x1b, 0x0e, 0x9c, 0x3b, 0x1e, 0x42, 0xe2, 0x57, 0xd5, 0xbb, 0xea, 0x07, 0x22, 0xb5, 0xd5, 0xdd, 0x35, 0x37, 0x56, 0x9d, 0xc7, 0x56, 0x06, 0x46, 0xa7, 0x50, 0xb8, 0x7e, 0xaa, 0x6f, 0x3a, 0x40, 0x5a, 0x94, 0xbf, 0x2a, 0xda, 0x72, 0xb5, 0x0a, 0x4b, 0x01, 0x87, 0xbb, 0x9d, 0x00, 0xec, 0x45, 0x1d, 0x50, 0xa6, 0xa9, 0x1a, 0x1e, 0x2a, 0x91, 0x19, 0x2a, 0x7f, 0xd7, 0x56, 0xb9, 0x00, 0x14, 0x1f, 0xe8, 0x8f, 0x96, 0xe2, 0x08, 0x0d, 0xfd, 0xd8, 0x01, 0x66, 0xa7, 0xbf, 0x67, 0xe3, 0x71, 0x44, 0xd0, 0x9e, 0x3a, 0xf8, 0x99, 0x74, 0xe5, 0x7c, 0x72, 0xb0, 0x3a, 0x2b, 0x88, 0xfd, 0x29, 0x95, 0x25, 0x2a, 0xce, 0x4f, 0x30, 0xe2, 0xe4, 0x7c, 0x28, 0x18, 0x05, 0x72, 0x40, 0x53, 0x6b, 0x58, 0xdb, 0x42, 0x07, 0x50, 0x9e, 0x59 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 191, - { 0xf3, 0x7d, 0x28, 0xd6, 0x1f, 0x28, 0x99, 0xa5, 0xc0, 0xe0, 0xa0, 0x74, 0x9d, 0x13, 0x89, 0x38, 0x7c, 0x64, 0xc8, 0xc3, 0x58, 0xa9, 0x71, 0xda, 0xd1, 0x3c, 0xff, 0x85, 0xc5, 0x9a, 0x62, 0xdd, 0xa7, 0xbb, 0xc0, 0xf7, 0xe5, 0xbd, 0xc6, 0x5d, 0xff, 0x9d, 0xe9, 0xc7, 0x45, 0x40, 0x46, 0x31, 0x75, 0x81, 0x48, 0x16, 0x8d, 0xfe, 0x6a, 0xc0, 0xa2, 0x87, 0x6a, 0x56, 0x05, 0x3b, 0xab, 0x2a, 0x2a, 0x9f, 0xf2, 0x72, 0x79, 0x4d, 0xd5, 0xd8, 0x13, 0x9e, 0xed, 0x10, 0xbc, 0xfb, 0x4d, 0xf3, 0x30, 0x20, 0xd5, 0x9e, 0x30, 0x48, 0xfd, 0x2f, 0x0c, 0x43, 0x14, 0x26, 0x14, 0x5e, 0x36, 0xa1, 0xd0, 0xa6, 0xbf, 0xce, 0x44, 0x43, 0xef, 0x3c, 0x7e, 0x31, 0xd4, 0xa9, 0x2f, 0xb8, 0x51, 0x7a, 0x49, 0xf7, 0x88, 0xc3, 0xb4, 0xe1, 0x37, 0x39, 0x5a, 0x4b, 0xee, 0xea, 0x63, 0xe0, 0xe0, 0xad, 0xc3, 0x22, 0x4f, 0x98, 0x09, 0x25, 0x03, 0x7d, 0xf6, 0xf5, 0xb2, 0x6c, 0x00, 0x72, 0x39, 0xb4, 0xf0, 0x1f, 0x8a, 0x9a, 0x61, 0xea, 0x0b, 0x51, 0x19, 0xbc, 0x9d, 0x54, 0x96, 0xa9, 0x5b, 0x60, 0xea, 0x76, 0x6c, 0xcb, 0xad, 0xe0, 0x37, 0xe3, 0x40, 0x32, 0x4f, 0x25, 0xf0, 0x2e, 0x72, 0x45, 0xc2, 0x36, 0xea, 0xe4, 0x36, 0x7a, 0x64, 0x68, 0xa7, 0xa0, 0x93, 0x8d, 0x85, 0xc0, 0xa1 } -, - /* Prime 1 */ - 96, - { 0xdf, 0xcc, 0x92, 0x74, 0x2c, 0x48, 0xd3, 0x34, 0xc6, 0x6f, 0xca, 0xa6, 0xd8, 0xa7, 0xe4, 0x22, 0x54, 0x43, 0x0f, 0x80, 0xa8, 0x35, 0x9e, 0xa2, 0x3b, 0x9a, 0x83, 0xb2, 0x41, 0xe4, 0x7f, 0x39, 0x9b, 0x3f, 0xfe, 0x3d, 0xab, 0x3f, 0x15, 0xbe, 0x8f, 0xa5, 0xc9, 0xe6, 0x46, 0xdf, 0xf9, 0x7c, 0xcf, 0x9b, 0x43, 0x17, 0x61, 0x07, 0x80, 0xad, 0x44, 0xcb, 0x1f, 0xbc, 0xef, 0xbd, 0x6e, 0xba, 0x05, 0x5d, 0x96, 0x94, 0x3c, 0x02, 0x47, 0xe0, 0xc8, 0x76, 0x78, 0xeb, 0x0b, 0xf7, 0x6c, 0x88, 0x76, 0xc3, 0xab, 0xb9, 0xef, 0x72, 0xcf, 0x01, 0x8f, 0x58, 0x11, 0xa6, 0xbe, 0xe0, 0x4f, 0x09 } -, - /* Prime 2 */ - 96, - { 0xd9, 0x64, 0xe9, 0x6e, 0xa6, 0xfa, 0x43, 0x70, 0xb5, 0x91, 0xee, 0x79, 0xe7, 0xe7, 0x2e, 0xcc, 0x21, 0x81, 0x53, 0x78, 0x7a, 0x60, 0xe2, 0xf7, 0xae, 0x94, 0xfa, 0x95, 0xb9, 0xbd, 0x68, 0x69, 0xd2, 0x81, 0xac, 0x3c, 0xcf, 0xb6, 0x57, 0x24, 0x7c, 0x58, 0x3e, 0xaf, 0xdc, 0x13, 0xd4, 0xd7, 0xa7, 0xd7, 0x76, 0x5e, 0x44, 0x67, 0xdf, 0x76, 0xb5, 0x28, 0xbf, 0x94, 0xbd, 0x03, 0xa3, 0xea, 0x73, 0xb8, 0x1b, 0xe2, 0x6c, 0xca, 0xd9, 0x89, 0xb9, 0xf0, 0x77, 0x28, 0xda, 0xd5, 0x3b, 0x38, 0xef, 0x7f, 0xe9, 0xeb, 0xe9, 0x11, 0x40, 0xcb, 0xad, 0x17, 0xdc, 0x7e, 0xcb, 0x1d, 0x58, 0xd1 } -, - /* Prime exponent 1 */ - 96, - { 0x9e, 0x79, 0xf6, 0x9b, 0x5d, 0x60, 0x94, 0x6f, 0x22, 0xb5, 0xb7, 0x03, 0x3f, 0x18, 0x64, 0x6c, 0x0a, 0xcf, 0x12, 0x03, 0x41, 0x19, 0xf7, 0x23, 0x5a, 0xa1, 0xa7, 0xf0, 0x6a, 0xc8, 0xab, 0x6e, 0xd7, 0x89, 0x11, 0x38, 0x0a, 0x33, 0xb9, 0xea, 0x1f, 0x3e, 0x7f, 0x22, 0x19, 0xbe, 0x30, 0xa5, 0x39, 0x3d, 0xf0, 0xdc, 0x75, 0x51, 0x22, 0xc5, 0x8f, 0x99, 0x66, 0xf8, 0x1b, 0xac, 0x40, 0xe4, 0x69, 0x38, 0x44, 0x90, 0xe3, 0x8d, 0x99, 0xe8, 0x8b, 0x0b, 0x99, 0xc4, 0x97, 0xcc, 0xb5, 0x86, 0x4c, 0xd3, 0x72, 0x9f, 0x4f, 0xf8, 0x34, 0xae, 0x1e, 0x1b, 0x77, 0x24, 0x64, 0xb5, 0xe2, 0x41 } -, - /* Prime exponent 2 */ - 96, - { 0x3a, 0x05, 0xe9, 0x18, 0x13, 0x91, 0x30, 0x76, 0xe0, 0xbf, 0x76, 0x7b, 0x2b, 0x1e, 0x55, 0x2b, 0x3e, 0xb6, 0x19, 0xe5, 0x4a, 0x24, 0x99, 0xef, 0xa9, 0xb5, 0x31, 0xbc, 0xcc, 0xba, 0x75, 0x27, 0xe9, 0x7b, 0x9a, 0xd1, 0x10, 0x4f, 0x86, 0xaa, 0xc2, 0x55, 0x7b, 0x45, 0xcc, 0xe3, 0xae, 0x27, 0x71, 0x30, 0xdc, 0xf3, 0x04, 0x27, 0x05, 0x49, 0xd5, 0xc8, 0x6e, 0x79, 0xf0, 0x89, 0x0c, 0x33, 0x03, 0x77, 0xdc, 0x59, 0x6e, 0xd8, 0x25, 0x7f, 0xd1, 0x15, 0x11, 0x78, 0xe2, 0x0f, 0x8f, 0xa2, 0xfe, 0xa9, 0x91, 0x71, 0xd9, 0xdf, 0x35, 0x00, 0x27, 0xce, 0xfa, 0x97, 0x0c, 0xf7, 0x64, 0x41 } -, - /* Coefficient */ - 96, - { 0x18, 0xb1, 0x0d, 0xd7, 0x3b, 0x14, 0x7d, 0x86, 0xb6, 0x0c, 0xf7, 0xfe, 0xbf, 0x46, 0x35, 0x93, 0xc0, 0xbd, 0xd6, 0xbc, 0x83, 0xa8, 0x39, 0x57, 0x3b, 0x4b, 0x3f, 0xe6, 0x5c, 0x0b, 0x13, 0xe7, 0xb6, 0x94, 0xb8, 0x1a, 0x56, 0x57, 0x21, 0x0b, 0xe9, 0x47, 0x01, 0x1d, 0x8d, 0x49, 0x29, 0xc1, 0x27, 0xfd, 0x2f, 0x3e, 0x31, 0x06, 0xc2, 0x53, 0x38, 0x3b, 0xe6, 0x35, 0x41, 0xd1, 0x23, 0x5b, 0xd7, 0x9c, 0x57, 0x2e, 0x92, 0xe2, 0x36, 0x34, 0x28, 0x20, 0x98, 0xbe, 0xe9, 0x4d, 0x48, 0xbd, 0x62, 0x8a, 0x0e, 0xb2, 0x1e, 0xd2, 0x61, 0xcf, 0xa3, 0x5b, 0x69, 0xb9, 0x77, 0x70, 0xe2, 0x93 } - -} -, -{{ - "PKCS#1 v1.5 Encryption Example 14.1", - /* Message */ - 9, - { 0x2b, 0xd6, 0xe3, 0xc1, 0xde, 0xfd, 0xdd, 0x5a, 0x43 } -, - /* Seed */ - 180, - { 0xe7, 0x84, 0xd5, 0x25, 0x03, 0xe6, 0x29, 0x1f, 0x25, 0x8e, 0x44, 0x2d, 0xb5, 0x77, 0xf9, 0x91, 0x63, 0x82, 0xa0, 0xd1, 0x4c, 0x7b, 0x9d, 0xcc, 0xbd, 0xb6, 0x07, 0xaf, 0x01, 0xf0, 0x25, 0x8f, 0xdc, 0x97, 0x23, 0x97, 0xda, 0x12, 0x39, 0xd4, 0x44, 0x9a, 0x58, 0x28, 0x6e, 0xce, 0x20, 0x08, 0xf7, 0x18, 0xf6, 0x90, 0xce, 0xe7, 0x3a, 0x02, 0x7f, 0xab, 0xf8, 0x4b, 0xdf, 0x7a, 0xce, 0x45, 0xf7, 0xed, 0x2d, 0x77, 0x32, 0x4c, 0xbe, 0xe9, 0x0e, 0xcc, 0x6f, 0x1e, 0x7b, 0x86, 0xcc, 0x29, 0x35, 0xa4, 0x7b, 0xa1, 0x56, 0x65, 0x0b, 0x42, 0xfc, 0x71, 0xaa, 0xd0, 0x70, 0x99, 0xa2, 0x7e, 0x97, 0xfe, 0x5a, 0x3f, 0x25, 0xfe, 0x13, 0x48, 0xe4, 0x42, 0x39, 0x12, 0x12, 0xa5, 0xcf, 0x1b, 0x44, 0x5a, 0x1e, 0x70, 0x19, 0x1f, 0xfa, 0x8f, 0xca, 0xde, 0x63, 0x5d, 0x2e, 0x44, 0x65, 0xf5, 0xf9, 0x13, 0xc5, 0x3e, 0x33, 0xb5, 0x91, 0x52, 0xcd, 0x8a, 0x14, 0x97, 0x84, 0xf2, 0x7d, 0x83, 0x18, 0x28, 0xaf, 0x2d, 0x66, 0x6a, 0x5c, 0x30, 0x9b, 0x56, 0xd0, 0x71, 0x9c, 0xfd, 0x80, 0x73, 0x40, 0x69, 0xa2, 0x3e, 0x09, 0x2d, 0x83, 0x15, 0x39, 0x9f, 0x95, 0xc4, 0x0a, 0xd7, 0xfd, 0x0b, 0xb5, 0xf9, 0x43, 0x77 } -, - /* Encryption */ - 192, - { 0x85, 0xef, 0x3e, 0x47, 0x76, 0x77, 0xbf, 0x76, 0x07, 0x1a, 0x27, 0xbb, 0xc7, 0x39, 0x57, 0x15, 0xcb, 0x35, 0x07, 0x96, 0xe4, 0x4f, 0x1b, 0x52, 0xa0, 0x8e, 0x90, 0x5e, 0x08, 0xff, 0x12, 0x56, 0x70, 0x5a, 0x9b, 0xf0, 0x15, 0x2e, 0x87, 0x2b, 0xdc, 0x74, 0xbb, 0x1f, 0x2f, 0xc8, 0x63, 0x1e, 0xf8, 0x81, 0x2d, 0x16, 0x94, 0x6a, 0x30, 0xb5, 0x8f, 0x44, 0x64, 0xd6, 0xe7, 0xb2, 0x45, 0x0b, 0xe4, 0x5b, 0x48, 0xcc, 0xff, 0x5d, 0x8e, 0xcf, 0x7a, 0x00, 0xb1, 0xb7, 0x8f, 0xc8, 0xfa, 0x54, 0x71, 0x3d, 0xd6, 0x96, 0xa1, 0x4a, 0xcb, 0x68, 0x00, 0xc0, 0xd3, 0xb6, 0x9a, 0x0b, 0x44, 0x43, 0x77, 0xfa, 0x30, 0x3a, 0x7d, 0x66, 0xdb, 0x49, 0x27, 0x91, 0x8a, 0x4b, 0xfb, 0x0f, 0xd4, 0x93, 0xbf, 0xaa, 0x01, 0x6a, 0xeb, 0xff, 0x99, 0x53, 0x30, 0xa6, 0xdc, 0xb6, 0x21, 0x5d, 0xd3, 0xbd, 0xb3, 0x5d, 0x7c, 0xd6, 0x1c, 0xcf, 0x0e, 0x9c, 0xcc, 0xbf, 0x51, 0xe9, 0xea, 0x65, 0x8e, 0xa3, 0x1d, 0x12, 0x43, 0x44, 0x4c, 0x4b, 0x72, 0xff, 0xf0, 0x1a, 0xc9, 0x3f, 0x28, 0xeb, 0x7f, 0x67, 0xc1, 0x83, 0x2e, 0x56, 0x8e, 0xd7, 0x2f, 0xd9, 0x57, 0xd5, 0xb4, 0xfd, 0x2f, 0x00, 0xb6, 0x02, 0x31, 0x71, 0xb8, 0x5a, 0xb0, 0xca, 0xa1, 0x03, 0x0e, 0xd3, 0xe3, 0xed, 0xc9, 0x50, 0x31, 0x45 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Encryption Example 14.2", - /* Message */ - 43, - { 0x10, 0x47, 0x35, 0xd9, 0xad, 0x72, 0x60, 0x46, 0x47, 0x3d, 0xf4, 0xb1, 0x3b, 0x2f, 0x5f, 0xa2, 0x85, 0xc3, 0xd2, 0x33, 0xec, 0xd4, 0x61, 0x70, 0x58, 0x2d, 0xd2, 0x28, 0xcd, 0xee, 0x46, 0x4d, 0xa5, 0x09, 0x5e, 0x20, 0x8c, 0xf8, 0xfb, 0xca, 0x05, 0x38, 0x8b } -, - /* Seed */ - 146, - { 0xdc, 0x6a, 0x63, 0x1e, 0x29, 0x75, 0x45, 0xd2, 0xf6, 0xfe, 0x9c, 0x69, 0xa5, 0xd3, 0x06, 0xa1, 0x09, 0x16, 0xd7, 0xe7, 0xef, 0x0d, 0xc9, 0x53, 0xf2, 0x1b, 0x6a, 0x04, 0x14, 0x31, 0xec, 0x8b, 0xa5, 0xce, 0x1c, 0x13, 0x87, 0x43, 0xfa, 0xac, 0x54, 0x97, 0xd6, 0x99, 0xf2, 0xff, 0x1d, 0x4a, 0x44, 0xa3, 0xe0, 0x63, 0x7c, 0xc5, 0xe5, 0xe6, 0x38, 0xcd, 0x73, 0x67, 0x7d, 0x09, 0xaf, 0xee, 0x3e, 0xc9, 0xfe, 0x80, 0x52, 0x94, 0x7a, 0x73, 0x33, 0x4c, 0x32, 0x70, 0x47, 0x28, 0x56, 0xf3, 0x07, 0x24, 0x3a, 0xc5, 0x8b, 0xf8, 0x63, 0x80, 0x74, 0x66, 0x7d, 0x7f, 0x7c, 0x18, 0xe3, 0xab, 0x32, 0x7e, 0xa3, 0xfc, 0x78, 0x91, 0xf1, 0xc5, 0x8a, 0xb4, 0x7e, 0x4f, 0xfa, 0x6e, 0x7d, 0x90, 0x11, 0xa3, 0x3d, 0x9b, 0x40, 0xa2, 0xd7, 0x89, 0xee, 0x42, 0x21, 0x25, 0x62, 0x30, 0xca, 0x8a, 0x61, 0x81, 0x1b, 0x09, 0x72, 0xcf, 0xd9, 0x86, 0x01, 0x75, 0x26, 0x18, 0x1d, 0x24, 0xee, 0xbb, 0x32, 0xcc } -, - /* Encryption */ - 192, - { 0x92, 0x1d, 0x2b, 0x02, 0x6d, 0x6b, 0x7e, 0x22, 0x20, 0x1d, 0xe7, 0x7f, 0xbf, 0x67, 0x99, 0x90, 0xf9, 0xaf, 0xf4, 0xea, 0x7f, 0xe7, 0xce, 0x45, 0x02, 0x21, 0x5f, 0x9e, 0x7a, 0xa4, 0x18, 0xb8, 0x5f, 0x72, 0xea, 0xdb, 0x6b, 0x69, 0x42, 0xbb, 0x08, 0xa0, 0x8b, 0xe7, 0xda, 0x66, 0x19, 0xaa, 0x5f, 0x1d, 0x2f, 0xf9, 0x61, 0xc9, 0xdc, 0x2c, 0x34, 0x1a, 0xe3, 0x2a, 0x25, 0x4f, 0xde, 0xab, 0xa2, 0xf6, 0x45, 0x0a, 0xc4, 0x47, 0x4b, 0x62, 0x74, 0xf0, 0xc3, 0x46, 0xf2, 0x6d, 0xa4, 0xed, 0x55, 0x5a, 0x8c, 0x95, 0x11, 0x89, 0xdc, 0x83, 0x69, 0xf3, 0x4d, 0x76, 0xd8, 0x37, 0xd6, 0xf3, 0x8a, 0x95, 0x18, 0xa6, 0x27, 0x1c, 0x5b, 0x56, 0x34, 0x62, 0x25, 0xa5, 0xab, 0x8d, 0xa6, 0x03, 0x2a, 0x59, 0x30, 0xfd, 0x5b, 0x77, 0x72, 0x9d, 0xe6, 0x32, 0xe1, 0x75, 0x2f, 0xc7, 0x2a, 0x0c, 0x34, 0xae, 0xce, 0x25, 0x65, 0x7b, 0x28, 0x1b, 0xe8, 0x93, 0x2c, 0x56, 0x50, 0xc9, 0x82, 0xfa, 0x14, 0x5f, 0xde, 0x0b, 0xcd, 0xd4, 0x8a, 0x73, 0xaa, 0x02, 0x88, 0xb4, 0xde, 0x46, 0x11, 0x33, 0xf2, 0x7d, 0x51, 0xe3, 0x86, 0x01, 0x6a, 0x72, 0x72, 0x6a, 0x9e, 0xde, 0x1d, 0x32, 0xdf, 0xc7, 0xe6, 0xf9, 0x78, 0x0c, 0x04, 0xeb, 0x70, 0xff, 0xff, 0xc2, 0x68, 0x82, 0x95, 0x66, 0x73, 0x33 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.3", - /* Message */ - 25, - { 0x31, 0x7e, 0x6f, 0x5e, 0x17, 0x50, 0x0f, 0xe9, 0x4f, 0xdf, 0xf2, 0x84, 0xbb, 0xe5, 0x03, 0x01, 0x04, 0x4d, 0x14, 0x22, 0xd3, 0xca, 0x70, 0x05, 0x98 } -, - /* Seed */ - 164, - { 0x46, 0x6d, 0x53, 0xc8, 0xd0, 0xbb, 0x9e, 0xd4, 0x60, 0xca, 0xa6, 0x3d, 0x79, 0xbf, 0xb8, 0x77, 0xbc, 0x4e, 0xa3, 0x45, 0xca, 0xb4, 0x35, 0x7e, 0x63, 0x9a, 0x95, 0xdc, 0xae, 0x37, 0x9d, 0xdc, 0xea, 0x5d, 0x64, 0xfe, 0xe9, 0x9f, 0xb6, 0xf7, 0x5f, 0xf2, 0x4e, 0xb7, 0x4d, 0x44, 0x03, 0x44, 0xd1, 0x47, 0xe4, 0x33, 0x14, 0xa0, 0xf8, 0x9f, 0x8b, 0x96, 0x14, 0x82, 0x15, 0x36, 0x8e, 0xb8, 0x65, 0x1f, 0x6d, 0x3c, 0xa0, 0xd0, 0x8d, 0x0b, 0x4c, 0x73, 0xe6, 0xd1, 0xa7, 0x68, 0x40, 0x98, 0x26, 0xd4, 0x3c, 0x2f, 0x81, 0xf3, 0x08, 0x40, 0x60, 0x5c, 0x43, 0xd0, 0xfe, 0x67, 0x1d, 0x3f, 0x02, 0x4c, 0x70, 0xd0, 0xb8, 0x99, 0x23, 0xcf, 0x90, 0x4e, 0x39, 0x97, 0x99, 0x62, 0xcd, 0x51, 0x5c, 0x16, 0x74, 0x29, 0x2a, 0xa3, 0x0d, 0xac, 0x70, 0x0d, 0xb4, 0xeb, 0x7e, 0x63, 0xd5, 0x6f, 0xdf, 0x08, 0xc2, 0x24, 0x70, 0xf2, 0x43, 0x86, 0x19, 0x45, 0xd0, 0x0f, 0xa4, 0xe2, 0x79, 0x90, 0x21, 0x2c, 0xfe, 0xd4, 0x28, 0x5d, 0xf1, 0xed, 0xda, 0x4b, 0x0a, 0xec, 0x91, 0x35, 0x59, 0xf5, 0x9d, 0x12, 0x55, 0x90 } -, - /* Encryption */ - 192, - { 0x14, 0x1f, 0xca, 0x68, 0xdd, 0x2e, 0x4d, 0x1d, 0xe5, 0x08, 0x6d, 0xbb, 0x78, 0x5f, 0xf4, 0x7d, 0x81, 0xe3, 0x9c, 0x31, 0x1d, 0x91, 0x7a, 0x99, 0x39, 0xa6, 0xff, 0x5b, 0x13, 0x43, 0x9c, 0xa9, 0x56, 0xc9, 0x74, 0x2b, 0xcf, 0xe4, 0x50, 0xb5, 0xbd, 0x03, 0x5b, 0x54, 0x1f, 0xab, 0x30, 0x7f, 0x24, 0xfb, 0xfb, 0x3f, 0x8b, 0x90, 0x21, 0x5b, 0x56, 0x04, 0x67, 0x6e, 0x56, 0x96, 0xf3, 0xba, 0x95, 0xfd, 0xb8, 0xd0, 0x90, 0xa6, 0xc2, 0x4a, 0x29, 0xd9, 0x90, 0xfb, 0xff, 0x1d, 0xa2, 0x02, 0x81, 0x42, 0x55, 0x8f, 0x0a, 0xd7, 0x53, 0x43, 0xc7, 0x2f, 0x38, 0x82, 0x3d, 0xb7, 0x66, 0x7b, 0x05, 0xe1, 0x6b, 0x51, 0x92, 0xb9, 0x33, 0x60, 0x07, 0xf7, 0x58, 0x10, 0x6c, 0x32, 0x8b, 0xd4, 0x76, 0x11, 0x8d, 0xf8, 0x2a, 0xd0, 0x75, 0x48, 0xa7, 0x26, 0x92, 0x1f, 0xb2, 0xe1, 0x92, 0xb4, 0x3c, 0x8c, 0x30, 0xcc, 0x9b, 0x84, 0x34, 0x63, 0x0e, 0x27, 0xfd, 0x8b, 0x23, 0xef, 0x8d, 0x8f, 0x22, 0xbe, 0x7f, 0x73, 0xae, 0xcd, 0xcb, 0x2b, 0x1e, 0xc5, 0x53, 0x9d, 0x5f, 0xbb, 0x2c, 0xff, 0x9e, 0xd5, 0xe7, 0xf1, 0x9b, 0x49, 0x18, 0x3d, 0x22, 0x1d, 0xfd, 0x53, 0x7d, 0x4f, 0x37, 0x03, 0x2e, 0xf3, 0x2f, 0x63, 0xb6, 0xff, 0x74, 0xee, 0x24, 0xa0, 0x96, 0xcf, 0x45, 0x59, 0x27, 0x09 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.4", - /* Message */ - 29, - { 0x90, 0x96, 0x3d, 0xda, 0xb3, 0x78, 0x91, 0xe7, 0x28, 0x8b, 0x53, 0xbe, 0x5d, 0x9d, 0xc5, 0x67, 0xb1, 0xa0, 0x7a, 0x15, 0x66, 0xc2, 0xaf, 0xdd, 0xd7, 0x72, 0x73, 0x24, 0xba } -, - /* Seed */ - 160, - { 0xa4, 0x9f, 0x12, 0x15, 0x17, 0x5b, 0xa0, 0x4c, 0x27, 0x4a, 0xbc, 0x05, 0x1f, 0x0c, 0x17, 0xa0, 0x8a, 0x63, 0x64, 0x89, 0x43, 0xdb, 0x2e, 0x8c, 0x76, 0x22, 0xbc, 0xbb, 0x1d, 0xcc, 0x56, 0x7e, 0xbe, 0x6a, 0xdd, 0x8c, 0x44, 0x48, 0x16, 0xc9, 0xd4, 0x36, 0xee, 0x93, 0xce, 0xfe, 0x23, 0xec, 0x41, 0xdd, 0xfc, 0xb0, 0xa4, 0x03, 0xbb, 0x6d, 0xbf, 0xf0, 0xae, 0x5d, 0x6f, 0xcd, 0xd7, 0x64, 0xda, 0xc1, 0xa7, 0x2a, 0x48, 0x4f, 0x36, 0x47, 0x1f, 0x4f, 0x3b, 0xd7, 0x25, 0xb2, 0xdb, 0x5a, 0xfa, 0x6a, 0xcf, 0x53, 0x0e, 0x4e, 0x4e, 0x86, 0xb4, 0xfd, 0xa8, 0x78, 0x20, 0x47, 0x87, 0x1c, 0xb0, 0x55, 0xad, 0x68, 0xc8, 0x41, 0xde, 0x54, 0x5a, 0x55, 0x40, 0xc8, 0xcc, 0x12, 0xe7, 0xe3, 0xf1, 0x58, 0x14, 0xa0, 0x03, 0x9a, 0x81, 0x03, 0x4b, 0xde, 0x9c, 0x68, 0xae, 0x22, 0x85, 0xe6, 0x16, 0xb7, 0xb5, 0x55, 0x5f, 0x98, 0xc6, 0x13, 0xce, 0x2e, 0xf6, 0x66, 0xa0, 0x22, 0x46, 0x5c, 0x63, 0x67, 0xd0, 0xbd, 0xa4, 0x0c, 0x12, 0xe9, 0x41, 0xf6, 0x99, 0x8a, 0x14, 0xa2, 0xb5, 0xe3 } -, - /* Encryption */ - 192, - { 0x8a, 0xd5, 0xbf, 0x78, 0x23, 0x2a, 0xa3, 0x6f, 0xb7, 0x83, 0x58, 0x3e, 0x71, 0xbc, 0x13, 0x93, 0x03, 0x7d, 0x13, 0xe7, 0x74, 0x54, 0xa9, 0xdc, 0x11, 0x11, 0x43, 0x4e, 0x75, 0xdd, 0x80, 0x20, 0x46, 0xba, 0xb4, 0x20, 0x25, 0x42, 0x0c, 0x63, 0x96, 0x1e, 0xa0, 0x06, 0x26, 0x57, 0xca, 0x50, 0x65, 0xde, 0xb6, 0x53, 0xac, 0x78, 0xeb, 0x64, 0x98, 0xcf, 0x14, 0xd1, 0x70, 0x4c, 0xec, 0x59, 0x11, 0x69, 0x60, 0x8d, 0xb0, 0x1f, 0xc9, 0x3d, 0x0d, 0x68, 0xe6, 0x28, 0x01, 0xb4, 0x65, 0xa3, 0x87, 0xa9, 0xc7, 0x2f, 0x7e, 0xb3, 0x5b, 0x0b, 0xa5, 0x3a, 0x5e, 0xfa, 0x98, 0xc9, 0xf0, 0xcb, 0x7c, 0x7c, 0xba, 0x18, 0x04, 0xcd, 0x70, 0x1d, 0x02, 0x97, 0xb6, 0x60, 0x05, 0xae, 0x25, 0xec, 0x3b, 0x6c, 0xd4, 0xcf, 0x31, 0x94, 0xa3, 0xfa, 0x65, 0xd9, 0x8c, 0x4b, 0x95, 0x33, 0x30, 0x79, 0x0e, 0xfd, 0xe7, 0x4f, 0xa2, 0x75, 0xd2, 0xa7, 0x9d, 0x33, 0x10, 0xa5, 0xbc, 0xc2, 0xc8, 0x1c, 0x91, 0xfc, 0x25, 0x56, 0x2c, 0xa9, 0x39, 0xf8, 0xd9, 0xc1, 0x75, 0xed, 0xf4, 0xb0, 0x76, 0x73, 0xd5, 0x39, 0x24, 0xe2, 0x7b, 0x15, 0x52, 0x88, 0x1c, 0x10, 0x83, 0x19, 0x23, 0x71, 0x5d, 0x14, 0x9f, 0x1f, 0x31, 0x9e, 0x38, 0xe9, 0x1d, 0xfa, 0x56, 0x6c, 0x54, 0x53, 0xba, 0xcc, 0x14, 0x8b } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.5", - /* Message */ - 11, - { 0x3d, 0x81, 0x02, 0x1f, 0xf6, 0x47, 0x33, 0x37, 0xe0, 0x4b, 0x92 } -, - /* Seed */ - 178, - { 0x9b, 0x70, 0x29, 0x73, 0x13, 0x77, 0xe8, 0x26, 0x97, 0xfa, 0x56, 0xb0, 0x86, 0xce, 0x49, 0xd3, 0xc4, 0xb1, 0x54, 0x9d, 0xe8, 0x1e, 0x3e, 0x99, 0xe1, 0x6c, 0xd9, 0x72, 0x29, 0x7a, 0x56, 0x0f, 0xf4, 0x83, 0xf2, 0xef, 0x5b, 0x71, 0xb0, 0x0f, 0xc6, 0x84, 0x74, 0x4f, 0x22, 0x4e, 0x85, 0x7e, 0x6d, 0x72, 0x39, 0xf1, 0x56, 0xd7, 0xb6, 0x10, 0x2f, 0x23, 0x04, 0xf8, 0xa5, 0x50, 0x50, 0xb3, 0x75, 0x6c, 0x54, 0x8f, 0x6e, 0xa2, 0x6e, 0xa6, 0xf7, 0x39, 0x4d, 0x2b, 0xb3, 0x79, 0x33, 0x35, 0x84, 0xe3, 0xb4, 0x81, 0xd0, 0x73, 0xc0, 0xa5, 0x8a, 0x0a, 0xd7, 0x87, 0xad, 0xb4, 0x80, 0xe1, 0xf2, 0x0a, 0x1a, 0x59, 0x0e, 0x03, 0x1e, 0x6b, 0x2b, 0xb7, 0xf3, 0x6a, 0x93, 0x61, 0x0d, 0xdf, 0x70, 0x83, 0xa5, 0x07, 0x68, 0xc9, 0x98, 0x62, 0x3f, 0x6e, 0x64, 0x37, 0x6a, 0x29, 0xb4, 0xa4, 0x18, 0x03, 0x2d, 0x27, 0x39, 0xbd, 0x4e, 0x74, 0x7d, 0xdf, 0xc7, 0x7f, 0xe3, 0xcf, 0x27, 0x93, 0xa2, 0x9b, 0xc7, 0x67, 0xbf, 0xac, 0xc7, 0x13, 0xe5, 0xf1, 0x0e, 0x53, 0x1b, 0x4c, 0x71, 0x89, 0x97, 0xb9, 0xbb, 0x6b, 0x65, 0x15, 0xe0, 0x71, 0x13, 0x28, 0x89, 0x74, 0x7e, 0x54, 0x6b, 0x13, 0x46, 0x8d } -, - /* Encryption */ - 192, - { 0x1b, 0x88, 0x4b, 0x06, 0x7d, 0x0b, 0xb1, 0x59, 0x7f, 0x5f, 0xab, 0x93, 0x30, 0x95, 0x75, 0x5a, 0x53, 0x0d, 0x9d, 0x04, 0xe2, 0x75, 0x4a, 0x57, 0x97, 0xff, 0xff, 0x5e, 0xf9, 0xce, 0xf1, 0x89, 0x54, 0x99, 0x98, 0x23, 0x00, 0x50, 0x3b, 0x3f, 0xeb, 0xcb, 0xaa, 0x09, 0xd3, 0x6b, 0x7d, 0xac, 0xc3, 0x0d, 0xf3, 0xc8, 0x68, 0xf0, 0x1a, 0x5f, 0x17, 0xed, 0x4a, 0x72, 0xa8, 0x5b, 0x6a, 0xdc, 0x80, 0xa2, 0x6a, 0x1b, 0x81, 0x97, 0x6b, 0x39, 0x3c, 0xba, 0x9b, 0x0c, 0x82, 0xcb, 0x1e, 0x2c, 0x58, 0x3a, 0xb6, 0xf3, 0x14, 0xed, 0xa2, 0x9a, 0x43, 0x32, 0x21, 0xb6, 0xe3, 0xed, 0x53, 0x51, 0x53, 0x74, 0xbb, 0xcd, 0x2b, 0x96, 0xf5, 0xcb, 0x5b, 0xd5, 0x81, 0x5d, 0x1a, 0x5d, 0xcb, 0xf0, 0x80, 0xd2, 0xd3, 0x7c, 0xb9, 0x6c, 0x4d, 0x96, 0x1d, 0xc4, 0x7e, 0x13, 0x0d, 0xb7, 0xb8, 0xd0, 0x18, 0x2e, 0x33, 0x69, 0xde, 0xf4, 0xc0, 0xf6, 0xc4, 0x2c, 0x6c, 0x20, 0x53, 0x1a, 0xf1, 0xa1, 0x90, 0x36, 0xde, 0xf0, 0x8d, 0x4b, 0xac, 0xa7, 0x1b, 0x99, 0xaf, 0x3c, 0x4e, 0x1e, 0xd5, 0x27, 0xd5, 0x1f, 0x37, 0xd0, 0xee, 0x1e, 0xa2, 0xc8, 0xb8, 0xeb, 0xf4, 0xfd, 0x52, 0x79, 0x85, 0x1d, 0xc3, 0x20, 0xe7, 0x42, 0x00, 0x8e, 0x04, 0x04, 0x4d, 0x0d, 0xa0, 0x64, 0x36, 0x61, 0x3d, 0x1b } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.6", - /* Message */ - 20, - { 0x5c, 0x74, 0x5d, 0xd4, 0xa8, 0xc5, 0x92, 0x93, 0x4e, 0xd1, 0x5e, 0x22, 0xfa, 0x9d, 0xec, 0x4a, 0x4d, 0xc2, 0x0a, 0x9f } -, - /* Seed */ - 169, - { 0x0e, 0x6a, 0xbb, 0x82, 0x9a, 0x3b, 0x16, 0xd0, 0x8b, 0x0b, 0xd4, 0x3e, 0xb9, 0x5c, 0x79, 0x1a, 0xf2, 0xa3, 0x39, 0x12, 0xea, 0x83, 0x3e, 0xe6, 0x89, 0x3e, 0xd5, 0xad, 0x3e, 0xe7, 0x44, 0xc8, 0xb2, 0xdd, 0x28, 0xfc, 0xee, 0x80, 0x8d, 0x3f, 0x01, 0x49, 0x58, 0x25, 0xbe, 0x0f, 0xe6, 0x37, 0x32, 0x07, 0xa8, 0x78, 0xd4, 0xa5, 0x25, 0xea, 0x72, 0xcf, 0xb0, 0xbb, 0x58, 0xa2, 0x67, 0x76, 0xfb, 0x39, 0xee, 0xbd, 0x33, 0x5f, 0x04, 0xcf, 0x71, 0x86, 0xbe, 0x61, 0xc5, 0x63, 0x5d, 0x95, 0xe5, 0x60, 0xed, 0xdf, 0xd4, 0x5d, 0xd8, 0x6a, 0x4e, 0x67, 0x0d, 0x33, 0x56, 0x8d, 0x83, 0xd2, 0xca, 0x20, 0x3e, 0xd2, 0x8d, 0x90, 0xe4, 0x8b, 0x06, 0x4d, 0x09, 0xa7, 0x5f, 0x82, 0x8d, 0xea, 0xcd, 0x5b, 0x37, 0xef, 0xcf, 0x78, 0x4f, 0xb1, 0x1b, 0x17, 0xd6, 0xd9, 0xf2, 0x31, 0x52, 0x24, 0xf8, 0xe7, 0x63, 0x79, 0x1b, 0xac, 0x6c, 0xf4, 0x6e, 0x1c, 0x23, 0xb0, 0xb0, 0x25, 0x2c, 0x19, 0xed, 0xf0, 0x40, 0xd3, 0x5f, 0x59, 0x25, 0x53, 0x26, 0x5b, 0x88, 0x6b, 0x29, 0xca, 0x56, 0xeb, 0xc5, 0x38, 0x63, 0x71, 0x41, 0x4d, 0x82, 0xa3, 0x40 } -, - /* Encryption */ - 192, - { 0x2b, 0x0a, 0x43, 0xb3, 0xcd, 0xc9, 0x9d, 0x6c, 0xfc, 0x74, 0xda, 0x2a, 0x86, 0xec, 0xd7, 0xd5, 0x76, 0x24, 0x75, 0xd1, 0x43, 0xe5, 0x48, 0x6f, 0xa9, 0xcb, 0xeb, 0xbf, 0x27, 0xd8, 0xe4, 0x14, 0x1e, 0xf7, 0x2b, 0x6d, 0x4f, 0x13, 0xf6, 0x64, 0xb3, 0xd2, 0xe9, 0xec, 0x32, 0x22, 0x7c, 0x1a, 0xd5, 0xb7, 0x6c, 0x0d, 0x1b, 0xef, 0xbd, 0x65, 0x89, 0x68, 0xc7, 0xdb, 0x14, 0x95, 0x23, 0x82, 0x49, 0xbc, 0xd9, 0x5e, 0x75, 0x40, 0x25, 0x4e, 0x65, 0x74, 0x98, 0x23, 0xb8, 0xa3, 0x4b, 0xf6, 0xa1, 0x41, 0x07, 0x21, 0xdf, 0x34, 0xf3, 0xc8, 0xd5, 0x79, 0xf3, 0x6a, 0xed, 0x9e, 0x0b, 0xac, 0x23, 0x1e, 0x54, 0xc2, 0x7f, 0x76, 0x73, 0x19, 0x7d, 0x19, 0xf5, 0x1c, 0xe6, 0xac, 0xbb, 0xcb, 0x7b, 0x1a, 0x55, 0xe3, 0x8e, 0xde, 0xbe, 0xed, 0x34, 0x61, 0x07, 0x3e, 0x80, 0xc7, 0x9a, 0x4f, 0xc3, 0x09, 0x31, 0x30, 0x69, 0x6b, 0xff, 0xf2, 0xbb, 0xcb, 0x74, 0x90, 0x5f, 0x2d, 0x34, 0x44, 0x33, 0x80, 0x57, 0xfd, 0xfa, 0xcb, 0xc4, 0xdb, 0x81, 0x93, 0x5b, 0x29, 0xe9, 0x9e, 0x55, 0xcc, 0xc1, 0xd4, 0x8d, 0x89, 0xe9, 0xdc, 0x4a, 0x63, 0xa0, 0x11, 0xa6, 0x23, 0x32, 0xcf, 0x57, 0x02, 0x62, 0xa0, 0x63, 0x59, 0xcc, 0x36, 0xc0, 0x5a, 0x6f, 0xe1, 0x8a, 0xfb, 0x78, 0x32, 0xb3, 0x2e } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.7", - /* Message */ - 45, - { 0xb0, 0xe7, 0x7f, 0x42, 0xc1, 0xa1, 0xe3, 0xf4, 0x15, 0x57, 0x23, 0xa9, 0x0d, 0xb8, 0x8e, 0xb1, 0x53, 0xcb, 0x3d, 0x3a, 0x28, 0xed, 0xdf, 0x25, 0x9c, 0x47, 0x05, 0x6a, 0x47, 0x0c, 0x91, 0x5e, 0xc9, 0x55, 0xf8, 0x31, 0x89, 0xf7, 0x1a, 0xea, 0xcd, 0xd5, 0x5c, 0x33, 0x5f } -, - /* Seed */ - 144, - { 0xfb, 0x36, 0x01, 0x10, 0x5c, 0xaa, 0x9a, 0x2f, 0xdd, 0x6d, 0xd6, 0xc5, 0x74, 0x6f, 0x4f, 0xca, 0xfe, 0xf4, 0x41, 0xbc, 0xb0, 0xfb, 0x8a, 0x2c, 0xc0, 0x3d, 0x0b, 0x57, 0x34, 0x9f, 0x93, 0x21, 0xaf, 0x9d, 0x99, 0x84, 0xe6, 0x4e, 0x2e, 0xc4, 0x85, 0xc9, 0xad, 0x75, 0x5f, 0x14, 0x0c, 0x0b, 0x66, 0xdb, 0x1c, 0xfc, 0x26, 0x69, 0x1c, 0x26, 0x77, 0x31, 0xd1, 0xa3, 0xaf, 0xe6, 0x87, 0x20, 0x2a, 0x96, 0x77, 0xe4, 0x2e, 0x84, 0x4d, 0x47, 0x7b, 0x75, 0xbc, 0xbb, 0x8c, 0x97, 0xd9, 0x9f, 0xcf, 0x72, 0xb3, 0xfb, 0x6d, 0x34, 0x9f, 0xa9, 0xc4, 0x76, 0x61, 0x91, 0x47, 0x21, 0x7a, 0x04, 0xdc, 0x06, 0xaa, 0x3c, 0x3c, 0x17, 0x64, 0x95, 0x38, 0x0c, 0xb9, 0x2c, 0x0a, 0x7e, 0x09, 0x7b, 0x4b, 0x4c, 0x5f, 0xfe, 0x04, 0x63, 0x1a, 0xb1, 0xd1, 0xbf, 0xea, 0x03, 0x67, 0x86, 0x50, 0xc8, 0x5c, 0x17, 0x0f, 0xa4, 0xa1, 0xd6, 0x4a, 0x4c, 0x13, 0x5e, 0x61, 0x48, 0x14, 0x90, 0xb6, 0x2b } -, - /* Encryption */ - 192, - { 0xa4, 0xbd, 0xd4, 0x92, 0xfe, 0xc7, 0x9c, 0x3a, 0x79, 0x09, 0x3a, 0x44, 0x33, 0x42, 0x72, 0xd9, 0xd1, 0x7f, 0x54, 0x3d, 0x02, 0x02, 0xc3, 0x9e, 0x40, 0x8b, 0xfb, 0x39, 0x36, 0x6b, 0xe2, 0xde, 0x61, 0xdf, 0x50, 0xac, 0x45, 0x8c, 0xae, 0xdd, 0xef, 0xfb, 0x69, 0xe2, 0x13, 0xca, 0x92, 0xb7, 0x49, 0x53, 0x66, 0x34, 0x7e, 0xde, 0x73, 0x3f, 0xf3, 0x99, 0xae, 0xc7, 0x96, 0xc3, 0xc3, 0xb1, 0xdf, 0x34, 0x9f, 0x01, 0x1d, 0xa0, 0x1f, 0xee, 0x7d, 0x21, 0xc1, 0xc2, 0x61, 0x84, 0x3d, 0xe8, 0x82, 0x08, 0x56, 0x0c, 0x0e, 0x89, 0x84, 0xb9, 0x52, 0x23, 0xea, 0x37, 0x31, 0xdb, 0x91, 0xc5, 0x93, 0x7a, 0x79, 0xb0, 0xdb, 0x93, 0x87, 0x59, 0x1c, 0xe3, 0x2e, 0xc7, 0xf5, 0x83, 0xe6, 0x00, 0xf5, 0x24, 0x44, 0xdf, 0xa7, 0x67, 0x1c, 0xe8, 0x27, 0x38, 0x98, 0xfb, 0xbc, 0xa3, 0xa4, 0xaa, 0x68, 0x32, 0xcb, 0xb3, 0x54, 0x3a, 0xbe, 0x96, 0x47, 0xe5, 0xf8, 0xc1, 0x37, 0x72, 0x82, 0x52, 0xce, 0x54, 0x40, 0xfc, 0xe1, 0x0e, 0x4d, 0x4e, 0xf7, 0x5d, 0x56, 0xb8, 0x14, 0xd5, 0x19, 0x64, 0x44, 0x41, 0x41, 0x1c, 0x10, 0xa2, 0xa1, 0x4c, 0x35, 0x04, 0x72, 0x82, 0x7c, 0x99, 0xea, 0x3e, 0xe5, 0xfd, 0xa3, 0x88, 0x0f, 0x34, 0x1d, 0xca, 0x8d, 0x3d, 0x3a, 0x4e, 0x5e, 0x05, 0xba, 0x42 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.8", - /* Message */ - 44, - { 0xb8, 0x7f, 0x04, 0xb3, 0x35, 0x0e, 0x12, 0x63, 0xda, 0xa3, 0xf9, 0x40, 0x5e, 0x6f, 0xd3, 0xd2, 0x5d, 0x8e, 0xfa, 0x13, 0x25, 0x56, 0xa4, 0x95, 0x71, 0xf5, 0x70, 0x8a, 0x42, 0x52, 0x7a, 0xf3, 0x1d, 0xb0, 0x1e, 0xdf, 0x79, 0x82, 0x0f, 0x93, 0x26, 0x64, 0x5f, 0xb1 } -, - /* Seed */ - 145, - { 0xec, 0x8d, 0x01, 0x4d, 0x6e, 0xb8, 0xd0, 0x23, 0x9a, 0x97, 0x73, 0xbd, 0xd3, 0x20, 0xbf, 0xb3, 0xf2, 0xee, 0x8f, 0xc2, 0x7d, 0x5f, 0xdd, 0x91, 0xf3, 0xf3, 0x90, 0x5d, 0xc8, 0xa4, 0xc5, 0xff, 0x13, 0x52, 0x9a, 0xee, 0xe4, 0x61, 0x85, 0x4c, 0xcc, 0xd4, 0xe0, 0x9b, 0x62, 0x4a, 0xfa, 0x64, 0x7a, 0x7c, 0x04, 0x81, 0x4e, 0xb1, 0xe5, 0x7b, 0xa1, 0x4d, 0xf4, 0xc7, 0x95, 0xb4, 0x2e, 0x84, 0xc4, 0xd0, 0x86, 0x29, 0x24, 0x5d, 0xac, 0xbb, 0xed, 0x27, 0x39, 0x9a, 0x72, 0x5a, 0x94, 0x8f, 0x3b, 0xa2, 0xf8, 0xb6, 0x4d, 0x26, 0x02, 0xdd, 0x0d, 0x5f, 0x55, 0xcb, 0x23, 0xea, 0xaf, 0xfb, 0x3a, 0x66, 0x50, 0x8e, 0x4a, 0x68, 0x9a, 0xd9, 0xee, 0xe6, 0x44, 0xe6, 0xa2, 0x6d, 0x43, 0x8f, 0x36, 0x63, 0xfe, 0xa9, 0xbd, 0x03, 0x12, 0xbb, 0x0e, 0x7e, 0x5a, 0x6d, 0xee, 0x04, 0xbb, 0xe8, 0xa0, 0x74, 0x5a, 0x73, 0xd5, 0xac, 0x89, 0xfa, 0xa0, 0x96, 0xa5, 0x2e, 0xd3, 0x04, 0x6d, 0x77, 0xde } -, - /* Encryption */ - 192, - { 0x77, 0x5d, 0xc3, 0x24, 0xfe, 0x9d, 0x5e, 0x05, 0xad, 0x01, 0x50, 0x13, 0xd6, 0x5f, 0x0e, 0xba, 0x0d, 0xcd, 0x52, 0xff, 0x9d, 0xfc, 0x17, 0x95, 0xea, 0x93, 0xd0, 0xf4, 0x33, 0x57, 0x98, 0x96, 0x86, 0xfe, 0x3f, 0x8b, 0x04, 0x62, 0x23, 0xbb, 0xa5, 0xc7, 0x84, 0x9a, 0xca, 0xc3, 0x12, 0x35, 0x43, 0x43, 0x26, 0x16, 0xc3, 0x10, 0x3a, 0xc2, 0xba, 0x8d, 0xb0, 0xa1, 0xd2, 0x99, 0x40, 0xbb, 0xa2, 0x62, 0x47, 0x0e, 0x5e, 0x53, 0xbe, 0x60, 0xe0, 0xeb, 0x72, 0x4d, 0x07, 0xcd, 0x91, 0x2a, 0xef, 0xbb, 0x87, 0xfb, 0x51, 0x98, 0x0e, 0x9e, 0x1a, 0xc1, 0x94, 0xda, 0x31, 0x92, 0x95, 0x41, 0xca, 0x43, 0x22, 0x4b, 0x15, 0x2b, 0xe6, 0xf2, 0xdf, 0x6c, 0x5f, 0x04, 0x42, 0xb4, 0xf4, 0xd2, 0xcc, 0x2f, 0xb0, 0x27, 0x39, 0xd4, 0x85, 0xa0, 0x11, 0x62, 0xbc, 0x8d, 0xbb, 0xad, 0x14, 0x76, 0xeb, 0x06, 0xe2, 0x45, 0xab, 0x36, 0xc4, 0xc7, 0x2d, 0x3f, 0x36, 0x07, 0xd0, 0x50, 0x84, 0xa0, 0xf6, 0xb7, 0x2d, 0xc8, 0xba, 0xc3, 0x46, 0xbd, 0x19, 0x09, 0x1b, 0x02, 0xf5, 0x98, 0x2c, 0x91, 0x45, 0x7c, 0x7b, 0x10, 0xf4, 0x47, 0x2b, 0x57, 0x18, 0x45, 0x24, 0x21, 0x4b, 0x23, 0x82, 0x5b, 0x59, 0xf4, 0x34, 0xcc, 0x48, 0xa2, 0xb8, 0x54, 0xca, 0xb5, 0x0f, 0xf7, 0x9e, 0x59, 0x09, 0x1c } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.9", - /* Message */ - 33, - { 0xe1, 0x95, 0xa0, 0x36, 0xa5, 0x30, 0xe1, 0xc2, 0xa9, 0xd7, 0xa1, 0x03, 0x35, 0x8d, 0xc2, 0xbd, 0x25, 0xb1, 0x01, 0xbf, 0x70, 0x44, 0x50, 0xab, 0x8e, 0x50, 0x62, 0xcb, 0x63, 0xdf, 0x56, 0x10, 0x35 } -, - /* Seed */ - 156, - { 0x0e, 0xf8, 0x81, 0xde, 0xfc, 0x45, 0xad, 0x3f, 0x3e, 0x58, 0xb1, 0x10, 0x5e, 0x49, 0xb4, 0x23, 0xab, 0x89, 0x12, 0x4a, 0x65, 0xb5, 0x2c, 0xfd, 0x81, 0xcf, 0xd5, 0x42, 0xb9, 0x1e, 0x7c, 0x4c, 0x1a, 0x60, 0x71, 0xa2, 0xcf, 0x12, 0xb4, 0x82, 0x7e, 0xd5, 0xd1, 0x9c, 0xba, 0xf8, 0xfe, 0xea, 0x54, 0xbb, 0x3d, 0x73, 0x85, 0x7e, 0xe8, 0x7c, 0x71, 0x5c, 0x71, 0xb9, 0xed, 0x1c, 0x07, 0xc3, 0xaf, 0xd9, 0x0f, 0xce, 0x40, 0x44, 0x8b, 0xb5, 0x7e, 0x35, 0x24, 0xd0, 0x38, 0x80, 0x98, 0x39, 0xe3, 0x6a, 0x4f, 0x55, 0x44, 0xc3, 0xe1, 0x81, 0xe8, 0xc2, 0xe2, 0x93, 0xcd, 0x57, 0x54, 0xc8, 0x65, 0x74, 0xad, 0xe6, 0xdf, 0xce, 0x0a, 0xb3, 0x4a, 0x80, 0xb4, 0xd4, 0x8a, 0x9d, 0x42, 0xe7, 0x11, 0x5d, 0x8c, 0xbc, 0xb1, 0xfa, 0x28, 0xc8, 0xa2, 0x65, 0x01, 0xdb, 0x7d, 0x0b, 0xb4, 0x96, 0xd0, 0x1d, 0xd6, 0x92, 0x65, 0xa0, 0x26, 0xe1, 0xa9, 0x7e, 0x9d, 0x3a, 0x1a, 0x65, 0xa8, 0xaa, 0x8e, 0xc2, 0xdf, 0x06, 0x34, 0xe6, 0xf2, 0x65, 0x1e, 0xf4, 0x35, 0x40 } -, - /* Encryption */ - 192, - { 0x1a, 0xd7, 0x7a, 0x00, 0x7c, 0xa4, 0x37, 0xab, 0xd0, 0x15, 0x9e, 0xd4, 0xb0, 0xb6, 0x81, 0x54, 0x16, 0xf9, 0xf0, 0x9d, 0x1b, 0x12, 0x15, 0xfb, 0x7c, 0xff, 0x11, 0x52, 0x97, 0x60, 0x1a, 0x88, 0x30, 0xf2, 0x09, 0x17, 0x86, 0x35, 0x63, 0x85, 0x3e, 0xd7, 0x8e, 0x9c, 0x3d, 0x7b, 0xa4, 0xc9, 0x7a, 0x05, 0xcf, 0x19, 0xdd, 0x32, 0x92, 0x48, 0x47, 0x1a, 0x47, 0x03, 0xa4, 0x65, 0x17, 0x8b, 0x85, 0xd4, 0xec, 0xd5, 0x42, 0x24, 0x12, 0x98, 0xc2, 0xfe, 0xcd, 0x41, 0x3e, 0x23, 0xa7, 0x0c, 0x8a, 0x5d, 0x47, 0xc2, 0x0e, 0x31, 0xc2, 0xda, 0xbe, 0x3c, 0x82, 0xa9, 0x54, 0x50, 0x27, 0x27, 0x49, 0xae, 0x2e, 0xbb, 0x89, 0x98, 0x5d, 0x00, 0xb6, 0x3d, 0xed, 0xd9, 0x59, 0x6d, 0x05, 0x16, 0xd1, 0x2a, 0x78, 0xc3, 0x74, 0xb7, 0xed, 0xdc, 0x7d, 0xce, 0xe8, 0xe4, 0xfd, 0xd1, 0x6c, 0x1d, 0xfa, 0xbf, 0xf7, 0xff, 0xd4, 0xc1, 0xfd, 0x61, 0xce, 0x04, 0xbe, 0x8e, 0x49, 0x75, 0xc5, 0xcd, 0x71, 0xe2, 0xcb, 0x0e, 0x54, 0x1b, 0x84, 0x61, 0xbb, 0x81, 0xfb, 0x28, 0xcc, 0xe7, 0x73, 0x65, 0x3e, 0x8b, 0x16, 0xb2, 0x8a, 0x8c, 0x20, 0x74, 0x28, 0x89, 0x5f, 0x28, 0x53, 0x55, 0x87, 0xa5, 0xc9, 0x9d, 0x46, 0xba, 0x4d, 0xf9, 0xae, 0x08, 0x50, 0x18, 0x51, 0x3d, 0x69, 0xab, 0xa3, 0xf6 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.10", - /* Message */ - 25, - { 0x04, 0x2a, 0x39, 0x22, 0xaa, 0x87, 0x1e, 0xea, 0x0d, 0x78, 0x42, 0x2c, 0xe7, 0x85, 0x66, 0xab, 0xbb, 0x5b, 0x08, 0xc2, 0xdd, 0xf1, 0xee, 0x30, 0xcf } -, - /* Seed */ - 164, - { 0x5a, 0xe8, 0x51, 0x14, 0xb0, 0x02, 0x7a, 0x23, 0xc7, 0x2b, 0xdb, 0x46, 0xae, 0x7b, 0xb8, 0x87, 0xbe, 0xc5, 0xba, 0xd7, 0xa9, 0x88, 0x4e, 0x93, 0xf6, 0xf4, 0xfd, 0x0b, 0xc9, 0x38, 0xbc, 0x72, 0x41, 0x0c, 0xce, 0x96, 0xa1, 0x4f, 0x4d, 0xe1, 0x99, 0x19, 0x77, 0x35, 0x05, 0x1e, 0xfc, 0xdc, 0xc1, 0x96, 0xf3, 0xad, 0xbf, 0xaa, 0x06, 0x3c, 0xb3, 0xf7, 0xa2, 0x34, 0xc6, 0xcf, 0x99, 0xd7, 0x0f, 0xbb, 0x7e, 0x35, 0xb6, 0xae, 0xc6, 0x64, 0x14, 0x66, 0x93, 0x91, 0xe3, 0xcb, 0xe7, 0x21, 0xec, 0x99, 0x1a, 0x1e, 0x5d, 0xfb, 0xb0, 0x38, 0xf2, 0x70, 0x36, 0x85, 0x93, 0x74, 0x9b, 0x20, 0x8d, 0x08, 0x9a, 0xae, 0xe2, 0xef, 0x35, 0xc3, 0xda, 0xf6, 0x23, 0x8b, 0x5f, 0xe4, 0x2d, 0x13, 0xdd, 0xe4, 0x07, 0xdf, 0x14, 0xf2, 0xd6, 0x18, 0xc9, 0x79, 0xc9, 0x7d, 0x2d, 0xe0, 0x29, 0x33, 0xb5, 0x7f, 0xe8, 0x81, 0x22, 0x04, 0x86, 0x2b, 0x2f, 0x1d, 0xee, 0x98, 0x3f, 0x24, 0xc2, 0xc5, 0x96, 0xea, 0x66, 0x8e, 0x63, 0x7d, 0x0a, 0x6a, 0xe6, 0xdc, 0x52, 0x65, 0x27, 0x69, 0x94, 0xe7, 0xe4, 0xf0, 0x2b, 0x6e } -, - /* Encryption */ - 192, - { 0x12, 0x44, 0xde, 0x88, 0x0e, 0x0f, 0x78, 0x52, 0xe9, 0x96, 0x95, 0x9d, 0x76, 0x2f, 0xca, 0xd9, 0x15, 0x65, 0xa4, 0xd0, 0xad, 0x3b, 0xc5, 0x27, 0x50, 0xd4, 0xa0, 0x44, 0x0f, 0x0b, 0x5c, 0x65, 0x1a, 0xa0, 0xe6, 0xf4, 0x92, 0x06, 0x1b, 0x2c, 0x86, 0x24, 0xc5, 0x2e, 0xde, 0x68, 0x58, 0xfa, 0x25, 0x18, 0xae, 0x8e, 0x8b, 0x11, 0x65, 0x58, 0xb2, 0xc8, 0x07, 0x6c, 0x17, 0xae, 0x78, 0x3d, 0x8d, 0xb2, 0x5f, 0x0d, 0x8f, 0xb1, 0xf2, 0x75, 0x8a, 0x82, 0xab, 0x97, 0x1f, 0xa7, 0x28, 0x3e, 0xf0, 0x74, 0x9a, 0x37, 0xbe, 0x28, 0x93, 0xf8, 0x94, 0x37, 0xfb, 0x8e, 0xa9, 0x00, 0x72, 0xb5, 0x85, 0x5a, 0x26, 0x08, 0xfc, 0x54, 0x2f, 0x5d, 0x2e, 0x0c, 0xb5, 0x43, 0xf4, 0xfa, 0xc5, 0x28, 0xf9, 0x43, 0x52, 0xd0, 0x16, 0x40, 0xfc, 0x2c, 0x53, 0x1b, 0x79, 0x81, 0x0c, 0x00, 0x77, 0x7b, 0xc9, 0xe1, 0x0d, 0xd9, 0xea, 0x99, 0x96, 0xe7, 0x40, 0x87, 0xfa, 0xdc, 0xb7, 0x1a, 0xa1, 0x43, 0x00, 0x67, 0x65, 0x71, 0x61, 0x48, 0x82, 0x94, 0x3f, 0x4a, 0x56, 0x14, 0x12, 0xc0, 0x54, 0x67, 0xdc, 0xa6, 0x6c, 0xa4, 0x9f, 0x82, 0x29, 0x35, 0x18, 0x23, 0xdb, 0x8a, 0x6b, 0x9f, 0x80, 0x3d, 0x70, 0x9c, 0x11, 0x87, 0xed, 0x74, 0x10, 0xcf, 0x91, 0x00, 0x15, 0x59, 0x5c, 0xea, 0xb6, 0x3e } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.11", - /* Message */ - 52, - { 0xf3, 0x1d, 0x3d, 0x0c, 0x30, 0xfd, 0x65, 0xd7, 0xb9, 0x8b, 0x70, 0x99, 0x44, 0x78, 0x2e, 0x20, 0x52, 0x5c, 0xa7, 0xc1, 0xf4, 0x2d, 0x5d, 0x03, 0xa0, 0xf6, 0xd2, 0x75, 0x9d, 0xf1, 0x91, 0x9e, 0xea, 0x82, 0xf8, 0x0f, 0x10, 0x00, 0xfd, 0x5c, 0xf8, 0x59, 0xdf, 0x59, 0x87, 0x1b, 0xac, 0x82, 0xdd, 0x90, 0x76, 0xcf } -, - /* Seed */ - 137, - { 0x04, 0x4b, 0xc3, 0x77, 0xe8, 0x58, 0x9f, 0xa5, 0xaf, 0x1c, 0x17, 0x34, 0x7d, 0x50, 0xe0, 0xcb, 0xbf, 0x90, 0x15, 0x76, 0xf2, 0x41, 0xde, 0x69, 0x0c, 0x88, 0x16, 0xc1, 0x29, 0xcd, 0x9f, 0x2f, 0xb0, 0x83, 0x1a, 0x01, 0x7b, 0xec, 0x30, 0xb8, 0x2b, 0x68, 0xf6, 0x98, 0x31, 0x1a, 0xf6, 0xe0, 0x77, 0x72, 0xbc, 0xd8, 0x98, 0xfa, 0x0c, 0x27, 0xf6, 0x2a, 0xfd, 0xe8, 0x95, 0x89, 0x77, 0x84, 0x46, 0x25, 0x55, 0x2d, 0x9b, 0xcb, 0x5a, 0x81, 0xaa, 0x3d, 0x74, 0x15, 0xb2, 0x42, 0xa0, 0x3b, 0x12, 0xfc, 0x1d, 0x3f, 0xe2, 0xd2, 0xce, 0x6e, 0x5f, 0x71, 0xc4, 0xa4, 0xa4, 0xc7, 0xca, 0x83, 0xe0, 0x65, 0x6f, 0x50, 0x02, 0xac, 0x36, 0xd8, 0xd0, 0x2b, 0x69, 0xae, 0x65, 0x73, 0x44, 0x98, 0xf1, 0x31, 0x95, 0x2c, 0xea, 0x48, 0x1f, 0xa2, 0xc2, 0x96, 0x5b, 0x6e, 0xf0, 0x51, 0x7e, 0xde, 0x50, 0xdd, 0xb0, 0x9b, 0x3e, 0xa7, 0x02, 0x6d, 0x06 } -, - /* Encryption */ - 192, - { 0x86, 0xf6, 0x6f, 0x0c, 0x25, 0x05, 0x85, 0x06, 0x59, 0x43, 0xde, 0x2f, 0x71, 0x1f, 0xae, 0x4f, 0xf2, 0x62, 0x70, 0x0e, 0x0d, 0x33, 0x06, 0xa2, 0x4c, 0x94, 0x30, 0xf8, 0x7c, 0xfd, 0x93, 0xde, 0xf4, 0xc3, 0x44, 0x7c, 0xc7, 0x21, 0x0f, 0xd9, 0x4a, 0x14, 0x33, 0x62, 0xf4, 0xf9, 0x45, 0xc6, 0xdb, 0xe2, 0x80, 0xbd, 0xef, 0x5d, 0x14, 0xf7, 0x5e, 0xb7, 0xbb, 0x31, 0x32, 0x0b, 0xcb, 0xd0, 0xd8, 0x8f, 0x0c, 0xcf, 0x2c, 0x95, 0xa7, 0x4c, 0xb4, 0x58, 0xc6, 0x27, 0x2b, 0x58, 0xbf, 0x74, 0x30, 0x93, 0xc4, 0xbb, 0xa2, 0xd7, 0xbe, 0xe9, 0xea, 0x2d, 0xd3, 0x0c, 0xf7, 0x2f, 0xe2, 0x93, 0xc9, 0x0c, 0x97, 0x43, 0x0a, 0x04, 0x7b, 0x17, 0x26, 0x63, 0x91, 0xc5, 0x1f, 0x5c, 0x39, 0x8b, 0xa3, 0xdf, 0x8c, 0xb7, 0x4b, 0xa3, 0xe3, 0x72, 0xf9, 0x55, 0x5c, 0xcc, 0x97, 0xd6, 0xdb, 0x76, 0x14, 0xea, 0x06, 0xd5, 0xc4, 0x8c, 0x1c, 0x60, 0x06, 0x13, 0x3d, 0x0e, 0x9d, 0x69, 0x95, 0x79, 0x93, 0x85, 0x92, 0x0a, 0xd8, 0xaf, 0xc3, 0xde, 0xad, 0xf6, 0x31, 0xce, 0xcc, 0x55, 0x9c, 0xaf, 0xf4, 0x95, 0xb0, 0x8d, 0x68, 0x3f, 0xb2, 0x2a, 0xa6, 0x97, 0xd7, 0x1c, 0x69, 0x6e, 0x46, 0xb1, 0xbf, 0x4f, 0xd7, 0x6b, 0x8d, 0x0b, 0x39, 0xf1, 0x79, 0xbf, 0x66, 0x84, 0x1b, 0xbb, 0x97, 0x07 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.12", - /* Message */ - 29, - { 0x6a, 0x35, 0x55, 0x57, 0x9d, 0xad, 0x03, 0x94, 0x35, 0x43, 0xff, 0x74, 0xe1, 0x74, 0x7c, 0x25, 0x7a, 0x83, 0xd3, 0x52, 0x94, 0xc2, 0x53, 0x93, 0x83, 0xe2, 0x35, 0xde, 0x69 } -, - /* Seed */ - 160, - { 0x5d, 0x92, 0x43, 0x4e, 0xdb, 0xd4, 0xf5, 0xbd, 0x27, 0x19, 0x71, 0x71, 0xf8, 0x53, 0xce, 0xb7, 0x26, 0x30, 0x30, 0x83, 0xad, 0x45, 0x67, 0xa1, 0xd7, 0xc6, 0x10, 0x4d, 0x19, 0x2b, 0x9b, 0xcc, 0xdf, 0xd0, 0xda, 0xed, 0xa2, 0x74, 0xe5, 0xcd, 0xfb, 0x3d, 0x0c, 0x5d, 0x19, 0xc9, 0x68, 0x25, 0x81, 0xec, 0x7a, 0xdc, 0x1a, 0x87, 0xe0, 0x81, 0x51, 0x41, 0x5d, 0x5a, 0x9a, 0xdc, 0x1a, 0xf4, 0x50, 0xb1, 0xba, 0x88, 0xd0, 0xef, 0x32, 0xac, 0x2d, 0x1f, 0x8a, 0xe3, 0x45, 0x95, 0x28, 0x14, 0x75, 0x3a, 0xf3, 0x8e, 0x12, 0x63, 0x5c, 0xff, 0x8c, 0x09, 0x21, 0x59, 0xb4, 0xe7, 0x5d, 0xee, 0xa1, 0x98, 0x3e, 0xd3, 0xd2, 0xd9, 0xec, 0x2f, 0xe7, 0xb9, 0xa2, 0xe1, 0x6a, 0x14, 0x1e, 0x81, 0x8b, 0x84, 0xcd, 0x9b, 0x71, 0xc1, 0x29, 0xa8, 0xb3, 0xc6, 0xdb, 0x62, 0x02, 0x32, 0xdc, 0x03, 0xa2, 0x40, 0x1f, 0x73, 0x1f, 0xf8, 0xa6, 0x3d, 0xa4, 0x58, 0xa7, 0xd8, 0x78, 0x90, 0x56, 0x25, 0xae, 0xe1, 0xfc, 0x09, 0x4d, 0xfb, 0x07, 0xb4, 0x57, 0x5a, 0x7f, 0x0a, 0xad, 0x23, 0x3e, 0x82 } -, - /* Encryption */ - 192, - { 0x93, 0x10, 0x27, 0x2d, 0x12, 0x4b, 0xc5, 0xcd, 0xb7, 0x21, 0x88, 0x98, 0x40, 0xaa, 0x77, 0x15, 0xe7, 0x67, 0x32, 0x17, 0x00, 0xcb, 0x39, 0xb2, 0xb8, 0xa5, 0xa8, 0x2a, 0xe3, 0xf0, 0x2e, 0xb9, 0x67, 0xe8, 0xdb, 0x46, 0x84, 0x3b, 0xc1, 0xbf, 0x62, 0xed, 0x8b, 0xd2, 0xab, 0xe8, 0x14, 0x34, 0x49, 0x7f, 0x99, 0x00, 0x64, 0x02, 0x53, 0x98, 0x2d, 0x37, 0x2b, 0x2b, 0xf7, 0xc1, 0xb0, 0x9b, 0xd5, 0x01, 0x96, 0x74, 0xa8, 0x34, 0xfb, 0xbd, 0xff, 0x35, 0x68, 0xa2, 0x82, 0x4a, 0xed, 0x4a, 0x80, 0x48, 0xd2, 0xb8, 0x61, 0x36, 0x27, 0x75, 0xbd, 0x5f, 0x0d, 0x63, 0xb3, 0x48, 0x36, 0x3d, 0x13, 0x78, 0x69, 0x1f, 0x5d, 0xd1, 0xd7, 0x96, 0x10, 0x74, 0xed, 0x95, 0xfc, 0x90, 0x07, 0xbd, 0x5f, 0x5c, 0x29, 0x23, 0xc1, 0x7c, 0x42, 0x90, 0x4e, 0x2b, 0xf9, 0xd2, 0x48, 0x77, 0x9f, 0xdf, 0xb2, 0x03, 0x97, 0x38, 0x41, 0xa1, 0x12, 0x90, 0xc7, 0xe9, 0xe9, 0x35, 0x6d, 0x4e, 0xab, 0x17, 0x0e, 0x43, 0x1b, 0xfe, 0x45, 0x4a, 0x88, 0x01, 0x0d, 0x9a, 0xff, 0x33, 0x70, 0x0c, 0xee, 0x55, 0xc7, 0x04, 0xc8, 0x2a, 0x7f, 0xfb, 0x15, 0xe2, 0x53, 0xef, 0x84, 0xf4, 0x01, 0x9e, 0x12, 0x43, 0x8f, 0x7c, 0x73, 0x86, 0xdc, 0x53, 0x5b, 0x19, 0xca, 0x86, 0xaf, 0x71, 0xd4, 0x77, 0x60, 0x8e } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.13", - /* Message */ - 47, - { 0xcb, 0x79, 0xaf, 0x5a, 0xea, 0xfd, 0xf2, 0xba, 0xd2, 0x1d, 0xfe, 0x62, 0x92, 0x66, 0x42, 0xcb, 0xa8, 0x04, 0xec, 0x7f, 0xd0, 0xea, 0x5d, 0x54, 0x08, 0xac, 0xe9, 0xed, 0xff, 0x28, 0xe7, 0xe8, 0xdf, 0xff, 0x6d, 0xf3, 0x83, 0xaf, 0x14, 0x40, 0x21, 0x46, 0x04, 0x76, 0xc0, 0xc8, 0x2c } -, - /* Seed */ - 142, - { 0x5f, 0xce, 0xa2, 0x57, 0xcf, 0xa9, 0x2c, 0x84, 0xf0, 0xb8, 0x93, 0x7d, 0x17, 0x3f, 0xae, 0xcf, 0x75, 0x03, 0xab, 0x16, 0x2e, 0x0b, 0xae, 0xef, 0x7e, 0x4c, 0x51, 0x1f, 0x3e, 0x32, 0xa3, 0x24, 0xed, 0x40, 0xe2, 0x42, 0xa8, 0x52, 0xba, 0x57, 0x89, 0x5b, 0x7c, 0xfe, 0x4d, 0x61, 0x79, 0x61, 0xe0, 0x36, 0xf6, 0x63, 0xe0, 0x22, 0x8a, 0x29, 0xcd, 0x1a, 0x95, 0xac, 0xac, 0x08, 0xa2, 0x55, 0x26, 0xd1, 0xeb, 0xff, 0x0a, 0xb3, 0xf0, 0x33, 0xed, 0xbf, 0x1a, 0xe2, 0x76, 0xa8, 0xd2, 0x36, 0x73, 0x6c, 0xc7, 0xaf, 0x51, 0xb5, 0xd2, 0xbd, 0xc8, 0x3d, 0xcc, 0x7d, 0x7d, 0x3b, 0xf5, 0xb8, 0x22, 0xaf, 0x2e, 0xff, 0xed, 0x7e, 0xfc, 0xb6, 0x17, 0xe0, 0x83, 0xe5, 0x1b, 0xe9, 0x94, 0xae, 0xd6, 0x56, 0x9b, 0x23, 0x83, 0xb9, 0x41, 0xae, 0xe5, 0x94, 0xc7, 0xb0, 0x12, 0xe6, 0x75, 0x1c, 0x37, 0xb7, 0xa5, 0x4e, 0x2a, 0x19, 0x18, 0x24, 0xa1, 0x30, 0xd5, 0x5c, 0xf8, 0x45 } -, - /* Encryption */ - 192, - { 0x11, 0xfa, 0x81, 0x9d, 0x3a, 0x63, 0x88, 0x04, 0xee, 0xf1, 0xd9, 0x56, 0x0a, 0x11, 0xf5, 0x23, 0x0a, 0x0b, 0xad, 0xfd, 0x66, 0xeb, 0x68, 0x4e, 0x7d, 0x69, 0xdf, 0xa2, 0x89, 0x8c, 0x8e, 0x0b, 0x6e, 0x04, 0xaf, 0x8e, 0xfc, 0x70, 0x61, 0x08, 0x1e, 0xc5, 0x9e, 0x45, 0x85, 0x76, 0x42, 0xe8, 0xb2, 0x00, 0x41, 0xaf, 0x50, 0x8d, 0x9d, 0x4e, 0x28, 0x82, 0x20, 0xf9, 0xfd, 0x38, 0x9d, 0xe8, 0xb2, 0x91, 0x24, 0xce, 0x74, 0x7e, 0xb6, 0x8e, 0x2e, 0xaa, 0x8c, 0x8f, 0x6f, 0xb4, 0x93, 0xf6, 0x11, 0xac, 0x09, 0xb7, 0x23, 0x09, 0x5d, 0x07, 0xee, 0xd9, 0x24, 0xf6, 0xab, 0x8e, 0x09, 0xff, 0x93, 0xc5, 0x51, 0x6d, 0x1f, 0x0e, 0xbf, 0x62, 0xc5, 0xf0, 0x22, 0xf5, 0xbb, 0x4f, 0x4c, 0xb5, 0xb8, 0xf5, 0xd4, 0x87, 0xa1, 0x7d, 0xf7, 0xd0, 0x12, 0xd7, 0x04, 0x35, 0x7a, 0xbf, 0x17, 0x48, 0x67, 0xce, 0x40, 0xcd, 0xc5, 0x50, 0x11, 0xb0, 0x71, 0x39, 0xbe, 0xa4, 0x5c, 0xa0, 0xe5, 0x81, 0x78, 0x0d, 0xe6, 0x54, 0x17, 0xcc, 0x83, 0x5f, 0xf2, 0x69, 0x84, 0xfd, 0x0f, 0xeb, 0xa1, 0x87, 0x69, 0xc3, 0x94, 0xa2, 0xe4, 0x85, 0x02, 0x3e, 0x31, 0xd3, 0xb0, 0xa8, 0x88, 0xa7, 0xb1, 0x4c, 0x78, 0x1d, 0xd8, 0x5b, 0xab, 0x40, 0x86, 0x74, 0xf5, 0xf5, 0x7e, 0x4b, 0x76, 0x3d, 0x84, 0x35 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.14", - /* Message */ - 19, - { 0xd1, 0x62, 0x33, 0xfc, 0x77, 0x5c, 0x31, 0x9f, 0x15, 0x7a, 0xa2, 0x00, 0x47, 0x6c, 0xd6, 0xed, 0x64, 0xa1, 0xea } -, - /* Seed */ - 170, - { 0xbb, 0x33, 0xb2, 0x2b, 0x5f, 0x46, 0x79, 0x4b, 0xe8, 0x3e, 0x6a, 0xff, 0x34, 0xa0, 0xe4, 0x11, 0xd1, 0xf3, 0xf4, 0xb8, 0xda, 0xf9, 0xb5, 0x85, 0x87, 0x24, 0xef, 0xfd, 0xb9, 0x69, 0xc9, 0x55, 0x25, 0xc6, 0x2d, 0xc4, 0x4b, 0xb2, 0xb0, 0x83, 0x38, 0x60, 0x03, 0x05, 0x4b, 0xbd, 0x36, 0x66, 0xb7, 0x82, 0x82, 0x60, 0x6f, 0xe6, 0xea, 0x17, 0x27, 0x31, 0xbe, 0xe1, 0x16, 0x72, 0xd6, 0x01, 0xde, 0x32, 0x42, 0x3d, 0x83, 0xf4, 0x63, 0xcc, 0x29, 0x30, 0xf5, 0xfb, 0x79, 0xda, 0x15, 0x34, 0xc4, 0x15, 0xc9, 0x65, 0x82, 0x75, 0x65, 0x94, 0xa9, 0x99, 0xb2, 0x26, 0x35, 0x42, 0x48, 0xa0, 0x9f, 0x14, 0x1c, 0xae, 0xcf, 0x88, 0x83, 0x90, 0x78, 0xf7, 0x7f, 0x40, 0xbd, 0x48, 0x51, 0x34, 0x9c, 0x1f, 0xc7, 0x5e, 0x1e, 0xce, 0x6f, 0xd6, 0x96, 0x6b, 0xc9, 0xc9, 0xd5, 0xec, 0x12, 0x09, 0x6e, 0xd5, 0x04, 0x35, 0x46, 0x85, 0x9e, 0x4f, 0x95, 0x7d, 0x31, 0x88, 0xe1, 0xd9, 0x06, 0x0b, 0x59, 0xc1, 0xf7, 0xf6, 0x2e, 0xfb, 0xfe, 0x82, 0x5d, 0xda, 0x45, 0x35, 0x3e, 0x6f, 0xd4, 0xfa, 0xba, 0xc9, 0x83, 0xf9, 0x44, 0xf4, 0xc2, 0xc7, 0x9c, 0xbb } -, - /* Encryption */ - 192, - { 0x10, 0xc2, 0x0c, 0x0c, 0x71, 0xb1, 0x1b, 0xbe, 0xce, 0x14, 0xc8, 0x14, 0x83, 0xdc, 0xfa, 0x73, 0x0c, 0x23, 0xd4, 0xdd, 0x61, 0xb8, 0x75, 0x5b, 0x39, 0x94, 0x9d, 0xfd, 0x4a, 0x3c, 0x50, 0x33, 0x21, 0x60, 0xee, 0xc6, 0xf7, 0x71, 0x0e, 0x09, 0xc7, 0xa9, 0x7a, 0xf9, 0x3f, 0x70, 0x44, 0xb9, 0x2f, 0x41, 0xd0, 0x9f, 0xa3, 0xe6, 0xc6, 0xce, 0x1f, 0x64, 0x11, 0x48, 0x4e, 0xd4, 0x75, 0x40, 0xa1, 0xb5, 0x9e, 0x23, 0xc1, 0x93, 0x34, 0xb6, 0x6d, 0x68, 0x20, 0xc2, 0xd4, 0x4d, 0xb0, 0xf6, 0xaa, 0xf8, 0x5a, 0xa2, 0x7f, 0x53, 0xa4, 0x1f, 0x85, 0x6b, 0xf6, 0xa5, 0x91, 0x36, 0x59, 0x86, 0x9b, 0xa4, 0xab, 0xdd, 0xec, 0xbe, 0x87, 0x41, 0x3a, 0xc9, 0x5b, 0xe6, 0x40, 0x09, 0x59, 0x3b, 0x5c, 0xa2, 0xd0, 0x78, 0x3a, 0x16, 0xf6, 0x08, 0x66, 0x57, 0x55, 0x24, 0x53, 0x93, 0xfc, 0x14, 0x4f, 0xe3, 0xea, 0x5e, 0x9a, 0xac, 0x9f, 0x1f, 0x99, 0x1a, 0x92, 0x85, 0x38, 0xb4, 0x69, 0x97, 0xd3, 0x06, 0x3c, 0xc1, 0xa6, 0x9a, 0xdc, 0x19, 0x2a, 0x40, 0xc7, 0x6f, 0x92, 0xd4, 0x7a, 0x05, 0x80, 0xe3, 0xc0, 0x21, 0x20, 0x02, 0x3e, 0xce, 0x70, 0x32, 0x80, 0x7b, 0x7c, 0x09, 0x13, 0x43, 0xaa, 0x87, 0x3f, 0x6a, 0x4d, 0xdd, 0xe4, 0x3f, 0xb2, 0xdc, 0xc3, 0x79, 0xae, 0xee, 0xf6, 0x54 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.15", - /* Message */ - 17, - { 0xd2, 0xf3, 0xc2, 0xe6, 0xf4, 0x3b, 0x0f, 0xc9, 0xfc, 0x22, 0x93, 0xb8, 0x45, 0x88, 0xe6, 0x61, 0x15 } -, - /* Seed */ - 172, - { 0xb9, 0x81, 0x64, 0x89, 0x52, 0x5c, 0xd0, 0x26, 0x15, 0x6f, 0xb4, 0xe8, 0xa4, 0xa8, 0xf3, 0x4a, 0xea, 0x8a, 0x3a, 0xa1, 0xa6, 0x34, 0xcc, 0xcb, 0x32, 0x58, 0x91, 0x8f, 0xe8, 0x5c, 0xb8, 0xd4, 0xaa, 0x02, 0xa5, 0x28, 0x52, 0xa8, 0x94, 0x1d, 0x3e, 0xa6, 0xc0, 0x48, 0xb5, 0x8c, 0xc6, 0xc7, 0x56, 0x85, 0x67, 0x56, 0x25, 0xe5, 0xe4, 0xdd, 0x7d, 0xf9, 0x3b, 0x8a, 0xce, 0xc0, 0x79, 0x67, 0x0b, 0x49, 0xf3, 0xdc, 0x6e, 0x07, 0x63, 0xed, 0x4c, 0x8e, 0x2d, 0x0e, 0xe9, 0xb5, 0xca, 0x5b, 0xb6, 0x2d, 0xe0, 0x06, 0x91, 0x98, 0x38, 0xe4, 0xb6, 0x9b, 0xa1, 0x05, 0xd4, 0xc5, 0xa4, 0xcc, 0x6d, 0xca, 0x67, 0xb1, 0x21, 0x93, 0xa0, 0x32, 0xb6, 0x92, 0x73, 0x96, 0x44, 0xcc, 0xcf, 0x72, 0x3f, 0x9f, 0x69, 0xe4, 0x8b, 0x94, 0xc0, 0xbd, 0xce, 0x5a, 0xa3, 0x5f, 0x75, 0xdc, 0x53, 0x92, 0x7b, 0x81, 0xe3, 0x42, 0xce, 0x72, 0xc6, 0xb6, 0x5c, 0xf7, 0x5e, 0xae, 0xca, 0xc5, 0xfe, 0x0d, 0xea, 0x93, 0x88, 0x5b, 0xa4, 0x20, 0xaf, 0x99, 0x32, 0xd8, 0x4c, 0xa4, 0xb5, 0x0e, 0x07, 0xe3, 0x28, 0xec, 0x5f, 0x81, 0x6d, 0x2d, 0x86, 0x96, 0xb2, 0x0d, 0xf7, 0x5f } -, - /* Encryption */ - 192, - { 0x80, 0xf1, 0xdf, 0x25, 0xf3, 0x6f, 0x31, 0x4b, 0x98, 0x2c, 0x9c, 0x8a, 0xaf, 0xc0, 0xb8, 0xa1, 0xa2, 0xf1, 0x74, 0xab, 0xb2, 0x98, 0x08, 0x69, 0xc2, 0x9d, 0x19, 0xbe, 0x1d, 0x2d, 0x93, 0xb4, 0xfb, 0x42, 0x99, 0x90, 0x6c, 0x35, 0x7f, 0xdd, 0x40, 0xe8, 0x9a, 0x19, 0x54, 0x92, 0xa9, 0x79, 0x76, 0x61, 0xf0, 0x5d, 0x38, 0x71, 0xd1, 0xbd, 0x0a, 0x5c, 0x45, 0xd8, 0xf9, 0xb0, 0xfe, 0xe5, 0x65, 0xb0, 0x00, 0x4f, 0xf5, 0xaf, 0xc5, 0xa6, 0xf8, 0x9a, 0xd6, 0x03, 0xe8, 0x22, 0x83, 0x57, 0x0b, 0xdb, 0x4c, 0x6e, 0x0c, 0xfc, 0x31, 0x3e, 0x4e, 0x66, 0x5a, 0x94, 0x34, 0xb3, 0x2f, 0xcc, 0x77, 0x3d, 0x6e, 0xda, 0xbc, 0xe8, 0x5f, 0xe7, 0xc8, 0x0f, 0x03, 0x30, 0x2a, 0x84, 0xe2, 0x08, 0xb5, 0xbd, 0x0a, 0xad, 0x91, 0xce, 0x62, 0xfb, 0x8c, 0x2b, 0xf5, 0x4b, 0xa6, 0x6f, 0x7e, 0x8d, 0x00, 0x21, 0x92, 0x16, 0x29, 0x20, 0xa4, 0x6e, 0x36, 0xde, 0xa5, 0x66, 0x1f, 0xdd, 0x75, 0x81, 0x53, 0x56, 0x40, 0x74, 0xb8, 0x55, 0x9f, 0x88, 0x93, 0x62, 0x42, 0xfc, 0x09, 0x98, 0x14, 0x8f, 0x19, 0xeb, 0x50, 0xfc, 0x11, 0xfb, 0x24, 0xa7, 0xed, 0x8c, 0x83, 0x49, 0x65, 0x8f, 0xe9, 0xd3, 0x1e, 0x62, 0x74, 0xd4, 0x5d, 0x6f, 0x2b, 0x60, 0x9b, 0xb5, 0xcc, 0xd1, 0x7e, 0x28, 0x4c, 0x99 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.16", - /* Message */ - 50, - { 0x21, 0xee, 0x58, 0x12, 0xe3, 0x24, 0x6d, 0xab, 0x9c, 0x3c, 0x25, 0x9b, 0x21, 0x37, 0xd6, 0x5f, 0x98, 0xa0, 0x5e, 0x57, 0x40, 0x46, 0x5c, 0xa2, 0x2c, 0x69, 0x34, 0x97, 0x00, 0xa4, 0x2c, 0xbe, 0x4f, 0xfb, 0x39, 0x3f, 0xe2, 0x81, 0x99, 0x33, 0x9c, 0x51, 0x03, 0x1c, 0xd3, 0xb2, 0x2f, 0x2f, 0x0a, 0x83 } -, - /* Seed */ - 139, - { 0xe9, 0xde, 0x5b, 0xd3, 0x55, 0xe6, 0xaf, 0xf1, 0x9f, 0xa1, 0x1a, 0x2d, 0x0d, 0x3e, 0xdc, 0x3f, 0x64, 0x69, 0xbd, 0x3c, 0x75, 0x72, 0x06, 0xd6, 0x6b, 0x3f, 0x09, 0x90, 0x8f, 0xf6, 0x18, 0xaf, 0x48, 0x01, 0xac, 0x77, 0xb5, 0x2c, 0xde, 0x03, 0xd4, 0xae, 0x74, 0x9d, 0x02, 0x15, 0x5e, 0x5c, 0x70, 0xfc, 0x99, 0x5f, 0x48, 0x76, 0x72, 0xd2, 0x80, 0x63, 0x58, 0x55, 0xdb, 0x4b, 0x64, 0xa2, 0x26, 0x09, 0xb0, 0xc1, 0x60, 0x67, 0x16, 0x3c, 0x51, 0x90, 0x42, 0x05, 0x7c, 0xb3, 0x67, 0x12, 0xc7, 0xc2, 0xfe, 0xfe, 0xd1, 0x1f, 0x73, 0xc2, 0x8b, 0xdb, 0x9d, 0x25, 0xf0, 0x63, 0x6a, 0x4c, 0xaa, 0x11, 0x26, 0x9e, 0x5f, 0xe6, 0x5a, 0x2b, 0x17, 0x56, 0x86, 0xa1, 0x5f, 0x1e, 0x48, 0xd2, 0x8d, 0x34, 0x5d, 0xd9, 0xa1, 0xb2, 0x90, 0x0a, 0x24, 0xf9, 0xdd, 0xda, 0x3d, 0xf3, 0xa6, 0x9f, 0xfb, 0x9c, 0xf5, 0x04, 0x5a, 0xc4, 0xa1, 0x93, 0xae, 0x90, 0x2f } -, - /* Encryption */ - 192, - { 0x7d, 0x8c, 0x53, 0x1d, 0x4d, 0x35, 0x49, 0xe0, 0xbd, 0x2e, 0xe1, 0x62, 0xb6, 0x82, 0x53, 0x9d, 0xa6, 0x17, 0x22, 0xb8, 0x8e, 0xcf, 0x8c, 0x7d, 0xf6, 0xd6, 0xb8, 0x1f, 0xef, 0x50, 0x18, 0xbc, 0x4e, 0xa1, 0x0a, 0x7e, 0x1a, 0x4e, 0xaa, 0x02, 0x15, 0xd9, 0xb3, 0xcd, 0xf4, 0x13, 0x47, 0x92, 0x9e, 0xac, 0x27, 0x48, 0xeb, 0xd7, 0x79, 0x94, 0x5c, 0x9b, 0xc4, 0x61, 0xdc, 0x51, 0xf4, 0x8d, 0xf6, 0x52, 0x75, 0x53, 0xf0, 0x70, 0x37, 0xe5, 0x33, 0xce, 0xb1, 0x34, 0x8a, 0x46, 0xa7, 0xea, 0x79, 0x7d, 0x85, 0xa2, 0x6a, 0x9f, 0x44, 0xc5, 0x88, 0x69, 0x99, 0x6e, 0xf1, 0x14, 0x69, 0xbc, 0xc1, 0x0b, 0x75, 0x6c, 0x02, 0xd5, 0xc0, 0xe6, 0x18, 0x83, 0x68, 0x5c, 0xc3, 0x7d, 0x75, 0x8d, 0xfd, 0xe4, 0xc9, 0xb7, 0x35, 0x4e, 0x3b, 0x4f, 0x31, 0x6c, 0xa7, 0xf7, 0xfd, 0xe6, 0x59, 0xc3, 0xfd, 0x5e, 0x33, 0x2e, 0x1b, 0x63, 0x92, 0xa2, 0x92, 0x9e, 0x13, 0x17, 0x66, 0xce, 0x9b, 0xa1, 0xd9, 0x71, 0xad, 0x24, 0x6f, 0x3d, 0xf0, 0x22, 0x43, 0x38, 0x63, 0x8b, 0xb6, 0x53, 0x45, 0x8c, 0xd4, 0xb5, 0x26, 0xd9, 0x61, 0x74, 0x4d, 0xaf, 0xec, 0xd5, 0x99, 0x8a, 0xd7, 0x2a, 0xed, 0x3c, 0x34, 0x59, 0x9f, 0x7a, 0x40, 0x98, 0xe3, 0xd2, 0xdf, 0x9d, 0x13, 0xa2, 0x1c, 0xe2, 0x37, 0x0c } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.17", - /* Message */ - 56, - { 0xa0, 0x34, 0xa6, 0xc1, 0x66, 0xcf, 0x0b, 0x25, 0xd2, 0xdd, 0xe5, 0x3a, 0xf4, 0xb8, 0x33, 0xb4, 0x78, 0xc6, 0xb0, 0xd2, 0xfb, 0x0c, 0xef, 0x13, 0x7f, 0xbf, 0x5c, 0x27, 0x12, 0x70, 0x64, 0x91, 0x23, 0x7f, 0x7b, 0x28, 0x6d, 0x12, 0x11, 0xd5, 0x73, 0x10, 0xf8, 0xa7, 0x62, 0xb1, 0xb3, 0xbf, 0xe1, 0x9c, 0x9a, 0x4b, 0x16, 0xd3, 0xe0, 0xa8 } -, - /* Seed */ - 133, - { 0xd8, 0x44, 0x17, 0x97, 0x22, 0x87, 0x13, 0x0a, 0x24, 0xa6, 0x06, 0xf5, 0x83, 0x29, 0x7a, 0xc9, 0x11, 0x52, 0x8a, 0xdc, 0xdb, 0xbd, 0x7d, 0xe1, 0x4a, 0x5b, 0x48, 0x9b, 0x67, 0x86, 0xf9, 0xf6, 0xf7, 0xe0, 0xb7, 0x3b, 0xab, 0x53, 0x8e, 0xb6, 0xc4, 0x5f, 0xf3, 0x4b, 0xd5, 0xdc, 0x43, 0xea, 0xe8, 0xd8, 0xc4, 0x3f, 0x71, 0x65, 0x16, 0xa6, 0x0d, 0xa2, 0x47, 0x53, 0x6f, 0x63, 0x4b, 0xe0, 0x65, 0xd9, 0x4e, 0x7f, 0x92, 0xad, 0xf5, 0x2a, 0x96, 0x7e, 0xe0, 0x5f, 0xd9, 0xaf, 0xd7, 0x32, 0x33, 0x3f, 0x99, 0xad, 0x05, 0x82, 0x97, 0xb2, 0x8f, 0x8e, 0xc6, 0xfe, 0xff, 0x80, 0x28, 0x44, 0xa0, 0x09, 0x7d, 0xf9, 0x1a, 0x97, 0x70, 0x2c, 0x48, 0x3a, 0xa1, 0xc7, 0x89, 0x2c, 0x7d, 0x43, 0xb6, 0xb9, 0x1c, 0xd4, 0xd8, 0x5d, 0x3e, 0xd2, 0xf1, 0xe9, 0x55, 0x39, 0x57, 0x06, 0xc3, 0xb3, 0x39, 0xba, 0xf2, 0xa0, 0xe0 } -, - /* Encryption */ - 192, - { 0x90, 0x4e, 0x04, 0x07, 0x23, 0xab, 0x97, 0x88, 0xa5, 0xed, 0x03, 0x52, 0xeb, 0x96, 0xc7, 0xf3, 0xd7, 0x07, 0xcf, 0x0d, 0xbc, 0x25, 0x8c, 0x51, 0xdc, 0xf6, 0x24, 0x34, 0x06, 0xf0, 0xc7, 0x42, 0xc6, 0xcd, 0xf2, 0x07, 0x67, 0x13, 0x2c, 0x09, 0x5e, 0x6c, 0x82, 0xa5, 0x02, 0x5b, 0xe7, 0xb4, 0x13, 0x4d, 0x8f, 0xa4, 0xde, 0x18, 0x7f, 0x8e, 0xcf, 0x12, 0xfd, 0xd3, 0xbe, 0xab, 0xdb, 0x06, 0x15, 0x8a, 0xef, 0x46, 0xc3, 0xfe, 0xd2, 0xd1, 0x83, 0x34, 0x06, 0xec, 0xa7, 0xa6, 0x9e, 0xb2, 0xd2, 0x08, 0xa2, 0xf6, 0xf4, 0x40, 0xd5, 0x4f, 0x6b, 0xe5, 0xdd, 0x56, 0x47, 0x09, 0xed, 0xa8, 0x12, 0xac, 0x06, 0x29, 0xa9, 0x4c, 0x7f, 0x8a, 0xee, 0x78, 0xbe, 0xaf, 0x9e, 0x93, 0x78, 0xc8, 0xdd, 0x9c, 0x62, 0x03, 0x74, 0xbb, 0xac, 0xa3, 0x94, 0x18, 0x59, 0xdd, 0x70, 0x2f, 0x6f, 0x7b, 0x25, 0xa2, 0x38, 0x45, 0x9e, 0xe8, 0x97, 0x59, 0xde, 0x94, 0x22, 0xb5, 0xbb, 0x6d, 0x28, 0x57, 0x16, 0x6c, 0xa2, 0x12, 0x0e, 0x63, 0x47, 0x74, 0xa0, 0xd1, 0xd4, 0x2e, 0xb8, 0xd9, 0x48, 0x15, 0xa1, 0x04, 0x4b, 0xea, 0x8b, 0xfb, 0x02, 0xda, 0x58, 0x62, 0xcd, 0x9a, 0x74, 0x5f, 0x15, 0x92, 0x47, 0x8c, 0x6f, 0x57, 0xbf, 0xd1, 0x3a, 0x5f, 0xdf, 0x4b, 0x8f, 0xaa, 0xe8, 0xa4, 0xbf, 0xc4 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.18", - /* Message */ - 35, - { 0x8f, 0xc6, 0x39, 0x4c, 0xd6, 0xe1, 0x75, 0x33, 0xd1, 0xff, 0x8e, 0xbb, 0xf3, 0xe1, 0xae, 0xae, 0xa3, 0x30, 0xed, 0x9f, 0x5a, 0x6e, 0x1e, 0xfb, 0x83, 0x45, 0x42, 0x94, 0xc6, 0xce, 0x24, 0xf6, 0x90, 0x4a, 0x0e } -, - /* Seed */ - 154, - { 0xbe, 0x1c, 0x18, 0x02, 0xdb, 0x44, 0x68, 0x2e, 0x58, 0xc6, 0x1f, 0xe3, 0x87, 0x57, 0xea, 0x0e, 0x38, 0x4e, 0xba, 0xdd, 0x79, 0x59, 0x48, 0x4b, 0x38, 0xbb, 0x23, 0x57, 0x55, 0xc4, 0x61, 0x77, 0xe6, 0x71, 0x76, 0x9f, 0x36, 0x57, 0x3d, 0x7c, 0xb0, 0xee, 0x7e, 0x82, 0x08, 0x7b, 0x58, 0x4b, 0x58, 0xbb, 0x30, 0x05, 0x30, 0x33, 0x68, 0xc6, 0x59, 0x0a, 0xd9, 0xf2, 0x88, 0x2c, 0xfa, 0x74, 0x0d, 0x51, 0xdc, 0x55, 0xeb, 0x0c, 0x79, 0x0f, 0x5b, 0xb6, 0xb6, 0xa3, 0xbd, 0x71, 0xf8, 0xb2, 0x14, 0x6b, 0xb9, 0xe8, 0x03, 0x4c, 0x35, 0xb7, 0xca, 0xbc, 0xbe, 0x10, 0x93, 0x6f, 0xfc, 0x5f, 0x0a, 0x8d, 0x7b, 0x30, 0x47, 0x6a, 0xb9, 0x16, 0x85, 0xae, 0xd8, 0xfa, 0x95, 0x8e, 0x73, 0xc1, 0xee, 0xa3, 0x04, 0x4c, 0x56, 0xb4, 0xb8, 0x70, 0xda, 0x89, 0x37, 0x1a, 0x93, 0xb8, 0x96, 0x52, 0x79, 0xb5, 0x5b, 0xb9, 0x2c, 0xc3, 0x16, 0xc2, 0x3e, 0xf0, 0x97, 0x53, 0x51, 0xc7, 0x49, 0x81, 0x7d, 0xb5, 0xdc, 0xd8, 0x6b, 0x94, 0xad, 0xf6, 0x03, 0xbd } -, - /* Encryption */ - 192, - { 0xb8, 0x3c, 0x71, 0x8c, 0xe5, 0xc6, 0xab, 0x1e, 0x40, 0xff, 0xa5, 0x67, 0x0a, 0xc1, 0x66, 0x66, 0x4d, 0x3a, 0x68, 0x33, 0xcb, 0x3b, 0xde, 0xf4, 0x62, 0x79, 0x4a, 0x25, 0xd5, 0x3e, 0x17, 0x04, 0x60, 0x06, 0x85, 0x8e, 0x63, 0xf8, 0x8a, 0xb9, 0x5d, 0x04, 0xf4, 0xfb, 0x67, 0x74, 0xf7, 0x00, 0x5d, 0xbb, 0x2e, 0x22, 0xd5, 0x19, 0x36, 0x0d, 0x5e, 0x13, 0x38, 0xad, 0x15, 0x30, 0x8f, 0x6c, 0x64, 0x12, 0x54, 0x95, 0x67, 0x00, 0x7e, 0x02, 0x1c, 0xb2, 0x37, 0xed, 0x4a, 0xf5, 0xee, 0xf3, 0xbc, 0xf9, 0xb7, 0x31, 0x59, 0x9f, 0x72, 0x53, 0xce, 0xba, 0x83, 0x04, 0xf4, 0xee, 0x8c, 0x34, 0x33, 0x39, 0xd0, 0xa0, 0x64, 0xeb, 0x77, 0xf1, 0xe9, 0x3f, 0xd1, 0xcc, 0x7b, 0xa5, 0xfc, 0x3b, 0xb8, 0x18, 0x4c, 0xed, 0x0e, 0x86, 0x97, 0xac, 0x47, 0xb7, 0x46, 0x20, 0xc4, 0x94, 0xea, 0xb5, 0x86, 0xed, 0x9f, 0xe7, 0x6e, 0x07, 0xe4, 0xbd, 0x2a, 0x2d, 0x1b, 0x95, 0x59, 0x5b, 0x69, 0xc6, 0x46, 0x77, 0xa8, 0x83, 0x5d, 0x56, 0xac, 0x63, 0x9d, 0xf8, 0xf6, 0x43, 0x24, 0x1b, 0x3e, 0x2c, 0x46, 0x88, 0xd2, 0xad, 0xf2, 0x28, 0xde, 0x2d, 0xa9, 0xbb, 0x0a, 0x36, 0x34, 0x38, 0xe7, 0x51, 0xb5, 0x25, 0x0d, 0xea, 0xe3, 0x05, 0xa3, 0x90, 0x5e, 0x7e, 0x07, 0x7a, 0x4e, 0x8c, 0x74, 0x66 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.19", - /* Message */ - 33, - { 0x89, 0xa1, 0x2d, 0x22, 0xbf, 0x87, 0x7d, 0x44, 0x0a, 0x2e, 0x03, 0xae, 0xa9, 0x32, 0xeb, 0x51, 0x83, 0x37, 0x9b, 0x3c, 0x8b, 0x90, 0xbe, 0xe8, 0xfe, 0xd6, 0xfc, 0x6d, 0xaf, 0xb0, 0xcf, 0x05, 0x27 } -, - /* Seed */ - 156, - { 0x60, 0x72, 0x89, 0x5e, 0x47, 0x80, 0xc8, 0xf7, 0x7e, 0x0b, 0x19, 0x5f, 0xc9, 0xf5, 0xdb, 0x78, 0x33, 0xf7, 0xb6, 0xf5, 0xc8, 0x1c, 0x1d, 0x30, 0xcb, 0xe9, 0xe8, 0x0c, 0xcb, 0x38, 0x66, 0x06, 0x9f, 0x8d, 0xb6, 0x96, 0x3a, 0xd4, 0x6d, 0x52, 0x94, 0x2a, 0x5a, 0x73, 0xf6, 0xa3, 0x27, 0xa9, 0x4e, 0xd1, 0x19, 0xdf, 0xce, 0x4c, 0x37, 0x65, 0x84, 0x37, 0x13, 0xb6, 0x19, 0xf9, 0xc4, 0x38, 0x32, 0x03, 0xd5, 0x5e, 0x2a, 0xb6, 0x1d, 0xa8, 0x96, 0x1a, 0x81, 0x03, 0x7f, 0x11, 0x18, 0xa7, 0x82, 0x97, 0xeb, 0x36, 0x6a, 0x1c, 0x51, 0xd9, 0xf9, 0x46, 0x6b, 0x71, 0x5b, 0xb6, 0x29, 0x99, 0xe0, 0xa9, 0xd6, 0xe0, 0x25, 0x01, 0xd4, 0x7f, 0x97, 0xdb, 0x40, 0x9e, 0x38, 0x86, 0xe1, 0x36, 0x6c, 0x3e, 0xff, 0x2b, 0xa7, 0x90, 0xe2, 0x62, 0x43, 0x22, 0x7a, 0xa1, 0x58, 0x80, 0x82, 0xbc, 0xe6, 0xd5, 0xcd, 0xe3, 0xea, 0x7e, 0xfb, 0xf1, 0x5c, 0x6c, 0x7d, 0xfa, 0x54, 0x54, 0x72, 0xfa, 0x9e, 0x93, 0x95, 0x6a, 0x45, 0x51, 0xd5, 0xa7, 0x7c, 0xa0, 0x0e, 0x26 } -, - /* Encryption */ - 192, - { 0xb7, 0xac, 0xbb, 0xcf, 0xf0, 0xfa, 0x9f, 0xca, 0x6f, 0x0b, 0xbd, 0xe5, 0xa2, 0xf0, 0xa1, 0xe6, 0xa0, 0xab, 0xad, 0xb3, 0x2c, 0x89, 0xe3, 0x17, 0x25, 0x5b, 0xd1, 0x8d, 0x12, 0xe1, 0xa6, 0x0b, 0x3e, 0x00, 0x2c, 0x1d, 0x69, 0x35, 0x64, 0x48, 0x32, 0x9a, 0x49, 0xb5, 0xbd, 0x24, 0x19, 0x10, 0xfa, 0x0c, 0xe0, 0x3b, 0x3e, 0x68, 0xa5, 0x90, 0x50, 0x75, 0x99, 0x39, 0x1e, 0xd1, 0x53, 0x97, 0x92, 0x29, 0x3f, 0xef, 0x13, 0x17, 0x4d, 0xac, 0xea, 0x6d, 0x2a, 0x05, 0xb3, 0x9f, 0x68, 0x48, 0x28, 0xa5, 0xd6, 0xd2, 0x17, 0xf8, 0x4b, 0x78, 0x2c, 0x8f, 0xc9, 0x84, 0x3c, 0xaf, 0x6a, 0xeb, 0x17, 0x8f, 0x0e, 0x2c, 0x6b, 0xd2, 0xa0, 0xe6, 0xf7, 0xb8, 0x09, 0x29, 0x61, 0x17, 0xcc, 0x8a, 0x6b, 0xf7, 0x37, 0x35, 0x84, 0x64, 0x24, 0xad, 0xeb, 0xa1, 0xab, 0x31, 0x14, 0x5f, 0xca, 0x3b, 0x8a, 0xf7, 0x68, 0xc9, 0xd0, 0xa2, 0x8e, 0x09, 0xd5, 0x8a, 0xd4, 0x96, 0x42, 0x31, 0x08, 0xf0, 0x8c, 0xaa, 0xc1, 0x74, 0xac, 0xd1, 0xf3, 0xac, 0x43, 0x48, 0x69, 0x61, 0xc5, 0xc9, 0x0e, 0x1e, 0xfb, 0x89, 0xbd, 0xdb, 0x7b, 0xb3, 0x9f, 0x4c, 0xa3, 0xaf, 0x57, 0x12, 0xf5, 0x53, 0xaf, 0x59, 0x4c, 0xd5, 0xd3, 0x64, 0x13, 0x29, 0x14, 0x26, 0x10, 0x07, 0xaa, 0x1d, 0x5f, 0x21, 0x6b, 0x8e } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 14.20", - /* Message */ - 54, - { 0x09, 0xd6, 0x94, 0x8c, 0xe1, 0xc1, 0xf2, 0x4c, 0x6d, 0x52, 0x9c, 0xbc, 0x5d, 0x6d, 0x6c, 0x1b, 0xea, 0xab, 0x56, 0x95, 0xb3, 0x0c, 0xaa, 0xb7, 0x44, 0x96, 0x9b, 0xf7, 0xf9, 0xdb, 0xd2, 0x83, 0x33, 0x5e, 0x98, 0xa9, 0xbc, 0xd6, 0x5d, 0xad, 0x2b, 0x4f, 0x0e, 0x3c, 0xec, 0x89, 0x0b, 0x05, 0xe6, 0x7f, 0xe9, 0x78, 0x23, 0xd4 } -, - /* Seed */ - 135, - { 0xed, 0xed, 0x62, 0xa6, 0x50, 0xf7, 0xde, 0x3b, 0x12, 0x80, 0x22, 0x9d, 0x5f, 0xb1, 0xc4, 0x40, 0x8e, 0x82, 0xdf, 0xe0, 0x31, 0x7e, 0x64, 0x30, 0xfc, 0xf4, 0x71, 0xb1, 0xe2, 0x8d, 0xa8, 0xcf, 0x6b, 0x4b, 0xf4, 0xc5, 0xd0, 0x31, 0xe3, 0xee, 0x68, 0x8b, 0x64, 0x07, 0x72, 0xaa, 0x50, 0x08, 0xe5, 0x86, 0x3c, 0x70, 0x7a, 0x40, 0x22, 0xc3, 0x29, 0xa6, 0x66, 0x4e, 0x71, 0x10, 0x12, 0x06, 0xb5, 0x4d, 0xb5, 0x40, 0x6e, 0x7f, 0xa9, 0xc8, 0x22, 0x6f, 0x42, 0x93, 0x11, 0x19, 0x62, 0x0c, 0xa3, 0x0d, 0xe7, 0xd0, 0x3b, 0xe1, 0x43, 0x94, 0x0c, 0xbb, 0x4d, 0x1a, 0x9c, 0x86, 0xe9, 0x86, 0x3c, 0x98, 0x7b, 0xff, 0x07, 0x02, 0x3d, 0xe1, 0x98, 0x64, 0xf7, 0x33, 0xda, 0x0c, 0x89, 0xbd, 0x03, 0x9f, 0x19, 0xf4, 0xd8, 0xed, 0x61, 0x6f, 0x7c, 0x6e, 0x94, 0x94, 0x18, 0x5b, 0x60, 0x4a, 0x1a, 0x7b, 0xf7, 0x49, 0x0f, 0xd0, 0xd8 } -, - /* Encryption */ - 192, - { 0x7a, 0xdd, 0xb0, 0x5c, 0xbf, 0x0b, 0x17, 0xaa, 0x50, 0x8a, 0x0b, 0x17, 0x0c, 0x4c, 0x5a, 0xee, 0x84, 0xce, 0x06, 0x65, 0x0d, 0x08, 0xc9, 0x96, 0x6d, 0x95, 0xd3, 0x07, 0x1a, 0x9a, 0x8f, 0x3a, 0x93, 0xf9, 0x6a, 0x87, 0x53, 0x99, 0xb4, 0x78, 0xc2, 0x56, 0xd0, 0x41, 0x5e, 0x74, 0x84, 0x95, 0x98, 0x21, 0x1f, 0x9f, 0x9d, 0x0b, 0x89, 0x36, 0x7b, 0xaa, 0xaf, 0x17, 0x4b, 0x7f, 0x13, 0xd8, 0x49, 0x0b, 0xaa, 0xa7, 0x40, 0x96, 0x1f, 0x52, 0xd7, 0xe3, 0x53, 0xc5, 0x04, 0x81, 0x8a, 0x00, 0x0b, 0x03, 0x67, 0x4d, 0x9c, 0xe4, 0x93, 0xdc, 0x3a, 0x4e, 0xe9, 0x16, 0x13, 0x01, 0xf6, 0x1d, 0xe5, 0x21, 0xae, 0xf3, 0xf6, 0xd4, 0x1d, 0x82, 0xe1, 0xc5, 0xdc, 0xe0, 0x2e, 0x63, 0x6e, 0x77, 0x40, 0xa1, 0x83, 0xf8, 0x02, 0x3a, 0xd2, 0x61, 0x49, 0x41, 0xd9, 0xb1, 0x61, 0xcd, 0xbd, 0xf4, 0x8f, 0x8a, 0x56, 0x2c, 0x8f, 0xfe, 0x44, 0xf5, 0x7a, 0x74, 0x6f, 0x26, 0x39, 0xe5, 0xe8, 0x3b, 0xcf, 0xd3, 0x92, 0xd2, 0x3e, 0x1f, 0xb4, 0xa8, 0xd8, 0x5e, 0x3b, 0xa5, 0xe1, 0xcb, 0x9c, 0x0e, 0x53, 0xf0, 0xd9, 0x1b, 0x01, 0xce, 0xc0, 0xf0, 0xef, 0x9d, 0xfe, 0x3f, 0x2b, 0x30, 0x65, 0xbd, 0x55, 0xb7, 0x2f, 0xb1, 0x70, 0x60, 0xab, 0xe8, 0x83, 0x0a, 0xca, 0x00, 0x44, 0x64, 0xfe, 0x7d } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 15: A 2048-bit RSA key pair", -{ - /* Modulus */ - 256, - { 0xdc, 0xfa, 0x10, 0xff, 0xa7, 0x46, 0x65, 0xae, 0xef, 0x87, 0x09, 0x74, 0xea, 0x99, 0xb2, 0xce, 0x54, 0x54, 0x7c, 0x67, 0xf4, 0x2a, 0xaa, 0x6d, 0xd0, 0x1a, 0x2e, 0xd3, 0x1f, 0xd2, 0xc2, 0x42, 0xaf, 0x5d, 0x96, 0x0b, 0x1f, 0x89, 0x6e, 0xfb, 0xa3, 0x54, 0x3d, 0x65, 0x54, 0xb7, 0xb1, 0x26, 0x87, 0xa5, 0xc6, 0x88, 0x56, 0x8f, 0x32, 0xe0, 0x26, 0xc5, 0x32, 0xd2, 0x59, 0x93, 0xb9, 0x7a, 0x7c, 0x28, 0x42, 0xec, 0x2b, 0x8e, 0x12, 0x35, 0xee, 0xe2, 0x41, 0x4d, 0x25, 0x80, 0x6c, 0x6f, 0xba, 0xe4, 0x38, 0x95, 0x4e, 0xba, 0x9d, 0x27, 0x55, 0xdf, 0xfe, 0xeb, 0x1b, 0x47, 0x70, 0x09, 0x57, 0x81, 0x5a, 0x8a, 0x23, 0x3f, 0x97, 0xb1, 0xa2, 0xc7, 0x14, 0xb3, 0xe2, 0xbe, 0x2e, 0x42, 0xd8, 0xbe, 0x30, 0xb1, 0x96, 0x15, 0x82, 0xea, 0x99, 0x48, 0x91, 0x0e, 0x0c, 0x79, 0x7c, 0x50, 0xfc, 0x4b, 0xb4, 0x55, 0xf0, 0xfc, 0x45, 0xe5, 0xe3, 0x4e, 0x63, 0x96, 0xac, 0x5b, 0x2d, 0x46, 0x23, 0x93, 0x65, 0xc7, 0xf3, 0xda, 0xaf, 0x09, 0x09, 0x40, 0x0d, 0x61, 0xcf, 0x9e, 0x0c, 0xa8, 0x08, 0x3e, 0xaf, 0x33, 0x5a, 0x6f, 0xce, 0xb6, 0x86, 0x3c, 0x1c, 0xc0, 0xcf, 0x5a, 0x17, 0x1a, 0xff, 0x35, 0xd9, 0x7e, 0xcb, 0x60, 0xef, 0x25, 0x1c, 0x7e, 0xc2, 0xc8, 0xa5, 0x88, 0x36, 0x1d, 0xc4, 0x12, 0x66, 0xa4, 0xb7, 0xed, 0x38, 0xb0, 0x26, 0xce, 0x0d, 0x53, 0x78, 0x64, 0x49, 0xdb, 0xb1, 0x1a, 0x06, 0xea, 0x33, 0xcc, 0xf1, 0xec, 0xa5, 0x75, 0x20, 0x1e, 0xd1, 0xaa, 0x47, 0x3e, 0xd1, 0x18, 0x7e, 0xc1, 0xd8, 0xa7, 0x44, 0xea, 0x34, 0x5b, 0xed, 0x7e, 0xa0, 0x0e, 0xe4, 0xe8, 0x1b, 0xba, 0x46, 0x48, 0x60, 0x1d, 0xd5, 0x37, 0xdc, 0x91, 0x01, 0x5d, 0x31, 0xf0, 0xc2, 0xc1 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 256, - { 0x21, 0x95, 0x08, 0x51, 0xcd, 0xf2, 0x53, 0x20, 0x31, 0x8b, 0x30, 0x5a, 0xfa, 0x0f, 0x37, 0x1f, 0x07, 0xae, 0x5a, 0x44, 0xb3, 0x14, 0xeb, 0xd7, 0x29, 0xf5, 0xdc, 0xb1, 0x5d, 0xa7, 0xfa, 0x39, 0x47, 0xac, 0xdd, 0x91, 0x5d, 0xae, 0xd5, 0x74, 0xbd, 0x16, 0xdf, 0x88, 0xbf, 0x85, 0xf6, 0x10, 0x60, 0xb3, 0x87, 0x17, 0x2f, 0xae, 0x6e, 0x01, 0x26, 0x2b, 0x38, 0x64, 0xc2, 0xd3, 0xc2, 0x2f, 0x94, 0xe0, 0x4a, 0x81, 0x59, 0x42, 0x2b, 0x4e, 0xd2, 0x79, 0xc4, 0x8a, 0x4c, 0x9d, 0x76, 0x7d, 0x49, 0x66, 0x07, 0x1a, 0x5b, 0xbf, 0x5d, 0x04, 0x3e, 0x16, 0xff, 0x46, 0xec, 0x1b, 0xa0, 0x71, 0x6f, 0x00, 0xbb, 0xc9, 0x7b, 0xff, 0x5d, 0x56, 0x93, 0xe2, 0x14, 0xe9, 0x9c, 0x97, 0x21, 0xf1, 0x2b, 0x3e, 0xc6, 0x28, 0x2a, 0xe2, 0xa4, 0x85, 0x72, 0x1b, 0x96, 0xdd, 0xcf, 0x74, 0x03, 0xfa, 0x03, 0x7d, 0x0c, 0x57, 0xab, 0x46, 0x3c, 0x44, 0x8d, 0xe5, 0xcc, 0x12, 0x26, 0x5a, 0xdd, 0x88, 0x6d, 0x31, 0x1e, 0xa8, 0xd8, 0xa5, 0x90, 0x3f, 0xa5, 0x6c, 0x5f, 0x1c, 0x9c, 0xf2, 0xeb, 0x11, 0xcb, 0x65, 0x7a, 0x1a, 0x7d, 0x3e, 0x41, 0x35, 0x2d, 0xc3, 0xe6, 0x86, 0x89, 0x8c, 0x4c, 0xe4, 0x30, 0x5e, 0x8b, 0x63, 0x8e, 0x1b, 0x08, 0xa2, 0xa8, 0x6c, 0xc9, 0xeb, 0x98, 0x66, 0xf3, 0x49, 0x9a, 0xc7, 0x7b, 0x61, 0x36, 0xb8, 0x1c, 0xb2, 0x76, 0xd6, 0x14, 0xcf, 0xeb, 0x7b, 0x6e, 0xd3, 0xf3, 0xbc, 0x77, 0x5e, 0x46, 0xc0, 0x00, 0x66, 0xeb, 0xee, 0xe2, 0xcf, 0xf7, 0x16, 0x6b, 0x57, 0x52, 0x05, 0x98, 0x94, 0x7f, 0xf6, 0x21, 0x03, 0x20, 0xb2, 0x88, 0xfb, 0x4f, 0x2c, 0x3f, 0x8f, 0xe9, 0x7b, 0x27, 0x94, 0x14, 0xeb, 0xf7, 0x20, 0x30, 0x00, 0xa1, 0x9f, 0xc0, 0x42, 0x48, 0x75 } -, - /* Prime 1 */ - 128, - { 0xf1, 0x23, 0xbf, 0xe5, 0x3d, 0xe9, 0x7a, 0x56, 0x9d, 0x91, 0xad, 0xcf, 0x55, 0x6f, 0xa6, 0x25, 0xad, 0x30, 0xf3, 0xfd, 0x3d, 0x81, 0x1f, 0x9e, 0x91, 0xe6, 0xaf, 0x44, 0xb6, 0xe7, 0x80, 0xcb, 0x0f, 0x32, 0x78, 0x29, 0xfb, 0x21, 0x19, 0x0a, 0xe2, 0x80, 0x66, 0x46, 0xd7, 0x28, 0xcd, 0x9b, 0x65, 0x31, 0x13, 0x2b, 0x1e, 0xbf, 0xef, 0x12, 0x72, 0x99, 0x30, 0x60, 0xf1, 0xce, 0x70, 0xb1, 0x24, 0x39, 0x30, 0x91, 0xee, 0x85, 0x93, 0xb7, 0x27, 0x36, 0x7e, 0xdb, 0xba, 0x00, 0x9e, 0xc5, 0xbe, 0x17, 0xc4, 0xac, 0xee, 0x12, 0x0c, 0x84, 0x12, 0x67, 0xd4, 0x76, 0x31, 0xa1, 0x6c, 0x36, 0xa6, 0xd1, 0xc9, 0x99, 0x73, 0xc1, 0xb0, 0xb5, 0xa8, 0x35, 0xbf, 0x39, 0xfe, 0xaf, 0xe8, 0xf6, 0x42, 0x1f, 0xd9, 0xc2, 0xa9, 0x0b, 0xc2, 0x79, 0x76, 0x65, 0x9e, 0x67, 0xbc, 0x83, 0x12, 0x4d } -, - /* Prime 2 */ - 128, - { 0xea, 0x98, 0x39, 0xb7, 0xe3, 0x7e, 0xa8, 0x9b, 0xbd, 0xa2, 0x7e, 0x4c, 0x93, 0x47, 0x1c, 0xb4, 0xfd, 0x92, 0x18, 0x9a, 0x0a, 0x96, 0xbc, 0xb4, 0xd7, 0x56, 0x93, 0xf1, 0x8a, 0x5c, 0x2f, 0x74, 0x2a, 0xf9, 0xe3, 0x6f, 0xde, 0x67, 0x9f, 0xbd, 0x9e, 0xae, 0x34, 0x5f, 0xa2, 0x69, 0x52, 0x7b, 0x69, 0x65, 0x02, 0x1c, 0x4b, 0xdf, 0x54, 0xd6, 0x85, 0xbf, 0x08, 0x96, 0x0c, 0xc9, 0x76, 0xf6, 0x8d, 0xca, 0x21, 0xce, 0xbf, 0x44, 0xf2, 0x68, 0xa5, 0x9d, 0xab, 0x8d, 0x1a, 0x25, 0xe5, 0x19, 0xf5, 0x14, 0x7e, 0x1f, 0x45, 0xfe, 0x28, 0x7d, 0x74, 0xcf, 0x72, 0x5b, 0xec, 0x13, 0x26, 0xd3, 0x42, 0x12, 0xc5, 0x6c, 0xf4, 0xff, 0xfa, 0x20, 0x2f, 0x57, 0xb6, 0x8e, 0xe8, 0xcc, 0xa9, 0x43, 0xf3, 0xc1, 0x38, 0xc4, 0xcd, 0xe3, 0x3b, 0xdf, 0x2c, 0x94, 0x40, 0xdf, 0x65, 0x32, 0x24, 0x45 } -, - /* Prime exponent 1 */ - 128, - { 0xca, 0x0c, 0x9b, 0x60, 0xb8, 0xe4, 0xa6, 0x06, 0x67, 0x56, 0xc6, 0x5d, 0x20, 0x88, 0x41, 0x9d, 0xf6, 0x25, 0x3b, 0x7b, 0x68, 0x8a, 0x85, 0xf4, 0xf6, 0xe9, 0x64, 0xd8, 0x5d, 0xad, 0x52, 0xa4, 0x52, 0x62, 0x86, 0x7f, 0x1e, 0x96, 0x18, 0x06, 0x9f, 0xcc, 0xd8, 0x65, 0xe9, 0x28, 0x9e, 0x46, 0xe3, 0x9e, 0x20, 0x22, 0x94, 0x4c, 0x5c, 0x44, 0x87, 0xd3, 0x45, 0xcf, 0x25, 0x2d, 0x46, 0x0d, 0x97, 0x7d, 0x77, 0xed, 0xfe, 0xfe, 0xdb, 0xcb, 0xae, 0x46, 0xa2, 0x3a, 0xf7, 0xfa, 0x47, 0x0f, 0x07, 0x7d, 0xa0, 0xe5, 0x09, 0x42, 0x04, 0x4c, 0xb1, 0xa3, 0x60, 0x49, 0x7c, 0xc2, 0x76, 0x0a, 0xc0, 0xf2, 0xad, 0x4a, 0x2f, 0xcd, 0x0e, 0x84, 0xd7, 0xa1, 0xd9, 0x4d, 0xfd, 0xd2, 0x65, 0x8f, 0xd9, 0xce, 0x18, 0x47, 0x5c, 0x1f, 0xa7, 0x5e, 0xe0, 0xce, 0xba, 0xd0, 0xcf, 0x0a, 0xc0, 0x4d } -, - /* Prime exponent 2 */ - 128, - { 0x52, 0x81, 0x71, 0x23, 0x3c, 0x4e, 0x4a, 0x6c, 0x63, 0xb8, 0x67, 0x64, 0xf5, 0x13, 0x38, 0x84, 0x6a, 0xfd, 0xdb, 0xcb, 0x29, 0x58, 0x34, 0x4c, 0x01, 0xc4, 0x00, 0x4a, 0x1d, 0xd8, 0x28, 0x14, 0x5a, 0x1d, 0x02, 0xa1, 0x50, 0x7d, 0xef, 0x4f, 0x58, 0x24, 0x7a, 0x64, 0xfc, 0x10, 0xc0, 0xa2, 0x88, 0xc1, 0xae, 0x89, 0x57, 0x21, 0xd7, 0x8b, 0x8f, 0x04, 0x4d, 0xb7, 0xc0, 0x0d, 0x86, 0xda, 0x55, 0xa9, 0xb6, 0x54, 0x29, 0x2e, 0xcd, 0x76, 0x82, 0x70, 0xbe, 0x69, 0xe4, 0xbd, 0x59, 0x22, 0xd4, 0xef, 0xfd, 0x1f, 0x70, 0x95, 0x5f, 0x96, 0x27, 0xe3, 0xe1, 0x9b, 0x74, 0x9e, 0x93, 0xb4, 0x0e, 0xf3, 0xdd, 0x1d, 0x61, 0xd9, 0x39, 0x15, 0xe2, 0xb0, 0x9d, 0x93, 0x0b, 0x4b, 0x17, 0x68, 0xbf, 0xac, 0xc0, 0x13, 0x6f, 0x39, 0xb0, 0xcf, 0xdf, 0xb4, 0xd0, 0x50, 0x01, 0x1e, 0x2e, 0x65 } -, - /* Coefficient */ - 128, - { 0xdf, 0x2e, 0xb2, 0x32, 0x2c, 0xc2, 0xda, 0xab, 0xf4, 0xd1, 0x46, 0x55, 0x08, 0xf4, 0x15, 0x21, 0xcd, 0xa7, 0xce, 0xff, 0x23, 0xeb, 0xe6, 0x1d, 0x00, 0xd4, 0x41, 0xee, 0x72, 0x8d, 0xda, 0x5d, 0x16, 0xc7, 0xbf, 0x92, 0x0c, 0xd9, 0x5f, 0x34, 0xbe, 0xb4, 0xfe, 0x32, 0xee, 0x81, 0x7e, 0xf3, 0x36, 0x2e, 0x0b, 0xcd, 0x1d, 0x12, 0x45, 0xf7, 0xb0, 0x77, 0x93, 0xea, 0xa1, 0x90, 0xdc, 0x5a, 0x37, 0xfd, 0xaf, 0x4c, 0x68, 0xe2, 0xca, 0x13, 0x97, 0x2d, 0x7f, 0x51, 0x48, 0xb7, 0x96, 0xb6, 0xfb, 0x6d, 0x7a, 0xdd, 0xa0, 0x7b, 0xd2, 0xcd, 0x13, 0xbe, 0x98, 0xce, 0xbe, 0xd1, 0xed, 0xc6, 0xca, 0x41, 0x2e, 0x39, 0x53, 0x50, 0xc5, 0x9a, 0x1d, 0x84, 0x2b, 0xc4, 0xaa, 0x2f, 0x3c, 0x0b, 0x24, 0x3f, 0xde, 0x7d, 0xfd, 0x95, 0x35, 0x6f, 0x24, 0x39, 0x25, 0x1a, 0x11, 0x72, 0xc4, 0x5e } - -} -, -{{ - "PKCS#1 v1.5 Encryption Example 15.1", - /* Message */ - 19, - { 0x2a, 0xac, 0xec, 0x86, 0xf4, 0x23, 0xdd, 0x92, 0x5e, 0xc1, 0x58, 0x82, 0x2a, 0x74, 0x8c, 0xbe, 0x6c, 0x31, 0xa0 } -, - /* Seed */ - 234, - { 0xcc, 0x4b, 0x87, 0xf6, 0x74, 0x49, 0x7b, 0xb0, 0xe3, 0x3d, 0x9e, 0x2a, 0x4a, 0x80, 0x70, 0xb7, 0xd7, 0x8b, 0x5f, 0xd2, 0xc4, 0xb4, 0xf6, 0xeb, 0xac, 0xcd, 0x4e, 0xe5, 0x05, 0xb7, 0x1f, 0xca, 0xfe, 0x21, 0x56, 0x33, 0x7d, 0xdf, 0x27, 0xb4, 0x75, 0xaf, 0x33, 0xf6, 0xc3, 0x40, 0x5b, 0x8e, 0x3c, 0x0c, 0x20, 0x6e, 0xc2, 0x81, 0x29, 0x22, 0xfc, 0xd8, 0xa3, 0x66, 0x1b, 0x86, 0x19, 0xbb, 0xc1, 0x82, 0xf8, 0x07, 0xf3, 0xa1, 0x07, 0x2e, 0x62, 0xca, 0x2b, 0xf1, 0xfa, 0x8b, 0x94, 0x4e, 0x58, 0xa0, 0xe2, 0x03, 0xdb, 0xb7, 0x53, 0xf9, 0xf1, 0xb6, 0xef, 0x62, 0x7e, 0xbe, 0xe5, 0x98, 0x96, 0x7b, 0x38, 0x7a, 0x5f, 0x96, 0x36, 0xd8, 0xb6, 0x41, 0xb3, 0x89, 0x84, 0xb1, 0xca, 0x03, 0x7e, 0x3a, 0xae, 0xaa, 0x17, 0x10, 0xf5, 0x16, 0x25, 0xea, 0x85, 0xf8, 0xfb, 0x9a, 0x6e, 0x02, 0x9e, 0x64, 0x57, 0x58, 0x14, 0xd5, 0x30, 0xfc, 0x14, 0x6b, 0x34, 0x45, 0xac, 0x42, 0x01, 0xb4, 0xe4, 0x08, 0xad, 0xf6, 0x55, 0xf6, 0x78, 0x43, 0xd8, 0x87, 0x1c, 0xac, 0xe5, 0xd9, 0x06, 0xd7, 0xfc, 0x03, 0x8f, 0xea, 0x88, 0x5b, 0x96, 0xfb, 0x8e, 0xb1, 0xa7, 0x21, 0xc6, 0xc1, 0x4a, 0xbb, 0xeb, 0x78, 0xfb, 0x4c, 0x79, 0x8a, 0x19, 0x58, 0x99, 0x59, 0x89, 0x84, 0x55, 0xa3, 0x16, 0x84, 0x3c, 0x6c, 0xd9, 0x9e, 0xf5, 0x8c, 0x2b, 0x0b, 0x49, 0xb8, 0xab, 0x41, 0x91, 0xb4, 0x02, 0xa5, 0x4c, 0x92, 0x97, 0x31, 0x0c, 0xd2, 0x24, 0xb1, 0x7f, 0x21, 0x41, 0x67, 0x72, 0x5c, 0x48, 0xfc, 0xc6, 0x1b, 0xc4, 0x7c, 0xfa, 0xcc, 0xf1, 0x5e, 0xb3, 0xb0 } -, - /* Encryption */ - 256, - { 0x60, 0x42, 0xe7, 0x45, 0x58, 0x9a, 0xf0, 0x3a, 0xf8, 0x75, 0x20, 0xf9, 0x3c, 0x45, 0xd8, 0xc3, 0x59, 0x85, 0xad, 0xa1, 0x16, 0x1a, 0x37, 0xd8, 0x22, 0xe9, 0xf9, 0x46, 0x0f, 0xc7, 0x5f, 0xcf, 0x01, 0x79, 0xd8, 0x49, 0x1b, 0x8f, 0x5d, 0x1e, 0x4d, 0xe8, 0xce, 0xb3, 0x1e, 0x07, 0xc4, 0x86, 0x5c, 0x5a, 0x3e, 0xfd, 0xbb, 0xb6, 0x9a, 0x88, 0x03, 0xb8, 0x9e, 0xe6, 0x5a, 0x43, 0x0a, 0x58, 0x09, 0xc7, 0x07, 0x56, 0x91, 0x50, 0xb5, 0x80, 0xbb, 0x68, 0x6a, 0x94, 0xc5, 0x54, 0x1c, 0x46, 0xad, 0xcd, 0x82, 0x79, 0x60, 0xce, 0x24, 0x4f, 0xf6, 0x88, 0x38, 0x7d, 0x16, 0x16, 0xe8, 0x5b, 0x4d, 0x17, 0x80, 0xc6, 0x48, 0x36, 0x06, 0xcf, 0x92, 0x4b, 0x54, 0xf0, 0x80, 0xcf, 0x41, 0x54, 0xe6, 0x68, 0x29, 0xbf, 0x6e, 0x53, 0x24, 0x81, 0x04, 0x8e, 0xc4, 0x1f, 0xad, 0xc0, 0x7d, 0x75, 0x5b, 0xb3, 0x4b, 0xb2, 0x81, 0x45, 0x21, 0x9c, 0xb3, 0x0d, 0x47, 0xd0, 0xd6, 0x18, 0x70, 0x91, 0x80, 0xe9, 0x03, 0x03, 0xff, 0x9e, 0xf0, 0x90, 0x18, 0xbe, 0xd3, 0xda, 0x75, 0x76, 0x1d, 0xa7, 0x94, 0x81, 0x1f, 0x96, 0xbc, 0x9e, 0x8d, 0x7c, 0x4b, 0xa1, 0xb5, 0x94, 0x6b, 0xda, 0x0b, 0xd3, 0x13, 0xfa, 0xec, 0x4c, 0x99, 0x3e, 0xd2, 0x74, 0x8e, 0xed, 0x8c, 0xce, 0x4b, 0xdb, 0x52, 0x0b, 0xa7, 0xdb, 0x16, 0x5f, 0x9f, 0xe5, 0x6a, 0xa8, 0x45, 0x4d, 0x6f, 0xf3, 0x38, 0x74, 0xfe, 0xee, 0xbf, 0x29, 0xde, 0x2d, 0xf5, 0xb7, 0xf0, 0x0a, 0xa1, 0xd9, 0xfb, 0x07, 0x3f, 0xc4, 0x06, 0x7b, 0x58, 0xdc, 0x50, 0x62, 0x4e, 0x12, 0x7f, 0x71, 0x1d, 0xde, 0x2c, 0xc2, 0xcf, 0xda, 0xb4, 0x91, 0x9c, 0xcf, 0x28, 0xc8, 0x36, 0x60, 0xdf, 0xc2, 0x27, 0xb0, 0xf5, 0x00, 0xec, 0x1f, 0x90, 0x4f } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Encryption Example 15.2", - /* Message */ - 21, - { 0x5c, 0x8b, 0xf2, 0xac, 0xab, 0x08, 0xbf, 0xfe, 0xfa, 0x64, 0x80, 0x95, 0x2b, 0x24, 0xda, 0xa5, 0x01, 0x9d, 0x12, 0x5f, 0xee } -, - /* Seed */ - 232, - { 0x5e, 0x16, 0x30, 0x70, 0xef, 0xdd, 0xb7, 0x9f, 0x47, 0x64, 0xf8, 0xa8, 0x1d, 0x44, 0x46, 0x0b, 0x5c, 0x40, 0x0b, 0xec, 0x70, 0x37, 0x52, 0x29, 0x20, 0xf7, 0x72, 0x95, 0x9f, 0xd4, 0xcf, 0x3a, 0xef, 0x2f, 0x14, 0x45, 0x4d, 0xcd, 0x9e, 0x86, 0x25, 0x12, 0xca, 0x69, 0xdb, 0x83, 0x68, 0xa4, 0xcd, 0x8d, 0x1a, 0x44, 0xda, 0x59, 0x5d, 0x6b, 0x43, 0x93, 0x91, 0xc9, 0x31, 0x46, 0xb1, 0x23, 0xf1, 0x86, 0x08, 0x3c, 0x4b, 0x64, 0x47, 0xbf, 0x7e, 0x20, 0x81, 0x51, 0x46, 0xac, 0x75, 0x49, 0xef, 0xb6, 0x74, 0x60, 0xe8, 0xff, 0x1b, 0x2b, 0xba, 0x5c, 0x95, 0xa5, 0x1e, 0xf8, 0x13, 0xd5, 0xdc, 0x4e, 0x6c, 0x38, 0x92, 0xbc, 0x4f, 0x43, 0x9c, 0x99, 0x11, 0x7e, 0xd0, 0x6c, 0x14, 0xa6, 0xc5, 0x40, 0xfd, 0x4c, 0x65, 0xd1, 0x95, 0xd8, 0xc6, 0x1e, 0xa7, 0x79, 0x68, 0x38, 0xe5, 0xa5, 0xdf, 0xaf, 0x11, 0xd0, 0x71, 0x3c, 0x19, 0x1e, 0x8a, 0x0b, 0x80, 0x80, 0xf7, 0xa7, 0x7e, 0x70, 0x3a, 0xb3, 0x66, 0x22, 0xf1, 0xc6, 0x48, 0xb7, 0x65, 0x43, 0x5b, 0x90, 0x27, 0x97, 0x18, 0x11, 0xb1, 0x15, 0x2d, 0x97, 0x2f, 0xb7, 0x6a, 0xa8, 0x92, 0x05, 0x03, 0x3d, 0x95, 0x78, 0x18, 0x7a, 0xe6, 0x34, 0x88, 0xfd, 0xa3, 0xc8, 0x6b, 0x2f, 0x28, 0xe7, 0x79, 0xac, 0x4c, 0x89, 0xcd, 0x25, 0x20, 0x17, 0xd1, 0xa9, 0x95, 0x8a, 0x52, 0xc5, 0xb8, 0x7e, 0xc1, 0xbf, 0x9c, 0xbd, 0xf7, 0xde, 0x0e, 0x97, 0xc5, 0x8b, 0xa1, 0x1b, 0xa3, 0xa3, 0x37, 0x05, 0xf3, 0xf4, 0x99, 0x58, 0x9a, 0x3a, 0x72, 0xe2, 0xc0, 0xfc, 0x5b, 0x16, 0xfc, 0xa2 } -, - /* Encryption */ - 256, - { 0x44, 0xe6, 0x71, 0xe0, 0x3b, 0xb6, 0x67, 0x80, 0xec, 0x05, 0x86, 0xd5, 0x6f, 0x8f, 0x6a, 0x49, 0x41, 0x5a, 0xd4, 0xbb, 0xce, 0x22, 0x6d, 0x75, 0xd7, 0x0f, 0x06, 0xce, 0x29, 0xde, 0xea, 0x7d, 0xa1, 0xaf, 0xa8, 0x28, 0x7e, 0x44, 0x36, 0x3c, 0x51, 0x0f, 0x34, 0xeb, 0x8b, 0xf3, 0x1c, 0xa2, 0x47, 0x29, 0x59, 0x26, 0x9c, 0x18, 0xdf, 0x09, 0x36, 0xff, 0x12, 0xc6, 0x16, 0x6f, 0x4f, 0x45, 0x96, 0xcb, 0x1c, 0xae, 0xc4, 0x1d, 0xed, 0xa8, 0xc5, 0x09, 0x99, 0xbf, 0x4c, 0x94, 0x4d, 0x21, 0x37, 0x5b, 0x36, 0x75, 0x31, 0x91, 0xb4, 0xcb, 0x7c, 0xaa, 0x1b, 0x43, 0xe9, 0x11, 0x6c, 0xbf, 0x1d, 0xa8, 0xb2, 0x01, 0xd2, 0x97, 0xa4, 0xd0, 0x8b, 0xb0, 0xe5, 0xbd, 0xc8, 0x95, 0x32, 0x70, 0xf7, 0xc2, 0x80, 0x96, 0x78, 0xc4, 0x4b, 0xea, 0x75, 0xe8, 0x1f, 0xac, 0x22, 0xd2, 0x71, 0x06, 0x30, 0x2b, 0xb6, 0x9d, 0xa0, 0x74, 0xb6, 0xef, 0xa6, 0x68, 0x8c, 0xf8, 0x35, 0xc8, 0x0b, 0xf5, 0xe4, 0x55, 0x35, 0x28, 0xec, 0xe0, 0xb7, 0xc1, 0xb7, 0x7b, 0x66, 0x6e, 0xa3, 0x45, 0x23, 0xec, 0x1f, 0xcb, 0x3e, 0x25, 0x05, 0x4e, 0x0b, 0xb8, 0xe4, 0xba, 0x02, 0x7e, 0x5c, 0x21, 0xbf, 0x7a, 0x51, 0x43, 0xbf, 0x04, 0x1c, 0xe9, 0xcc, 0xbc, 0xfa, 0xfa, 0x87, 0x80, 0x82, 0xfe, 0x41, 0xf7, 0x8c, 0x70, 0xbf, 0x4e, 0x53, 0xcf, 0x48, 0x7c, 0x1a, 0xad, 0xb0, 0x19, 0x15, 0xce, 0xdd, 0xe8, 0xcd, 0x9f, 0xb8, 0x4e, 0xfd, 0x98, 0x1a, 0xc9, 0x8c, 0xd5, 0x7a, 0x82, 0x56, 0xd4, 0xe9, 0xe2, 0xd0, 0x86, 0x2d, 0xab, 0x04, 0x54, 0xd3, 0xff, 0x4f, 0xb9, 0x85, 0x26, 0x4a, 0x46, 0x99, 0x5a, 0xb0, 0x68, 0xa7, 0x4e, 0xdc, 0x7e, 0xd8, 0xae, 0xff, 0x5f, 0xa3, 0x0f, 0x3a, 0x7d, 0x75, 0x94 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.3", - /* Message */ - 13, - { 0xe2, 0x00, 0x4b, 0x31, 0x07, 0x39, 0x98, 0x2c, 0xfa, 0x9e, 0x95, 0x45, 0x3a } -, - /* Seed */ - 240, - { 0xe9, 0x3e, 0x64, 0x12, 0x33, 0x7a, 0xb7, 0xb0, 0xf1, 0xb5, 0x69, 0x80, 0x1a, 0x3c, 0x16, 0x4a, 0x6f, 0x23, 0xe3, 0xc2, 0x7c, 0x7c, 0x55, 0xa8, 0xc5, 0xac, 0x9e, 0xaf, 0x31, 0x88, 0x55, 0xf8, 0x32, 0x8b, 0x5d, 0x7a, 0xb4, 0xcb, 0x86, 0x19, 0xa0, 0x0e, 0x99, 0x41, 0xcc, 0xaa, 0x94, 0x85, 0x70, 0x52, 0x71, 0x82, 0x61, 0x74, 0x43, 0xc1, 0xd2, 0x1e, 0x4a, 0x6e, 0x21, 0xb3, 0xf6, 0xd4, 0xf6, 0x98, 0xa6, 0x1a, 0xe0, 0x29, 0x17, 0x2c, 0xf4, 0xda, 0x03, 0x9d, 0x91, 0x58, 0x5a, 0x87, 0xda, 0xd1, 0x28, 0xc2, 0xfa, 0xc5, 0x53, 0x1b, 0x2f, 0x45, 0xdc, 0xef, 0x9b, 0x9f, 0xc3, 0x31, 0xc8, 0x04, 0x48, 0x85, 0x28, 0x84, 0x7c, 0x90, 0x87, 0x5d, 0x19, 0x07, 0x5f, 0xff, 0xb0, 0x05, 0x76, 0x3d, 0x88, 0xe0, 0x81, 0x47, 0x66, 0x92, 0x28, 0xa9, 0xaa, 0xd0, 0x16, 0x25, 0xbc, 0x61, 0x11, 0x2c, 0xc7, 0xb7, 0x72, 0xf3, 0x21, 0xd4, 0x33, 0xd4, 0xf2, 0x69, 0x78, 0x20, 0x9d, 0x0e, 0x79, 0x67, 0x6a, 0xf3, 0xb8, 0xa7, 0x4b, 0x97, 0x3f, 0x52, 0xab, 0x91, 0x90, 0x85, 0xf3, 0x52, 0x35, 0x5f, 0x85, 0x6a, 0xa4, 0x0f, 0xfa, 0xbc, 0xe5, 0x43, 0xd4, 0xe7, 0x6d, 0x45, 0x48, 0x92, 0x98, 0x9c, 0xb3, 0x83, 0xf3, 0xe6, 0x6b, 0xbb, 0x0e, 0x8f, 0xee, 0xbf, 0xf7, 0xc6, 0xa5, 0x4e, 0xf2, 0x62, 0x5f, 0xc4, 0x05, 0x0e, 0x6f, 0x87, 0xa3, 0x23, 0x13, 0x2a, 0x4e, 0x67, 0x12, 0x68, 0xfb, 0x83, 0xcf, 0xf2, 0xd8, 0x22, 0x51, 0xb7, 0x9c, 0xbe, 0x32, 0xda, 0xa8, 0xe5, 0x53, 0x20, 0x2f, 0xe8, 0x87, 0x22, 0x61, 0xf6, 0x0d, 0x5b, 0xb5, 0x11, 0xf2, 0xfa, 0x2f, 0x14, 0x21, 0xa3 } -, - /* Encryption */ - 256, - { 0x2b, 0xbf, 0x6b, 0x0c, 0x5c, 0xf2, 0x0e, 0xf2, 0xf6, 0xc5, 0xa0, 0xaa, 0x48, 0x45, 0x4f, 0x85, 0x0a, 0xa5, 0xf6, 0xbb, 0xeb, 0x03, 0x0d, 0xb4, 0xe2, 0xbe, 0xc1, 0x1f, 0xb2, 0x00, 0xf0, 0x1e, 0x4e, 0xae, 0xf0, 0x44, 0xd8, 0x14, 0x33, 0x33, 0x33, 0x8e, 0x5e, 0x66, 0x38, 0x00, 0x87, 0x66, 0x0e, 0xd0, 0x17, 0x3a, 0x76, 0x82, 0x12, 0x85, 0x67, 0x7e, 0x37, 0x1f, 0x28, 0xec, 0x45, 0x00, 0xf4, 0xd5, 0x9f, 0xab, 0xab, 0x20, 0x73, 0xe7, 0x34, 0x36, 0x5f, 0xc6, 0xb0, 0x94, 0xee, 0x0a, 0xdb, 0xce, 0xac, 0xcf, 0xe2, 0x49, 0x88, 0xce, 0x61, 0x5d, 0x60, 0x5f, 0xc3, 0x40, 0x8c, 0x03, 0xbe, 0x22, 0x1c, 0x99, 0x3f, 0x61, 0xaa, 0x72, 0x4f, 0xc8, 0x71, 0x4a, 0x8a, 0x4a, 0x18, 0x15, 0xf9, 0xe9, 0xa9, 0x98, 0x82, 0xaa, 0x46, 0x88, 0x3e, 0x70, 0x47, 0x4e, 0x33, 0x29, 0xb9, 0x91, 0xe6, 0xd5, 0x3d, 0xc6, 0xb5, 0x00, 0x86, 0x19, 0x92, 0x34, 0x3a, 0x6d, 0xa8, 0x9a, 0x8b, 0xd6, 0xf3, 0x7f, 0x34, 0xe5, 0xde, 0xee, 0xf8, 0x0e, 0x7d, 0x56, 0xb9, 0x3a, 0x45, 0x17, 0x60, 0x66, 0x36, 0x50, 0xfa, 0x45, 0x5d, 0x55, 0x41, 0x89, 0x9a, 0x76, 0xaa, 0xd1, 0xc6, 0x27, 0x5e, 0xc8, 0x2c, 0x46, 0x07, 0x12, 0x26, 0x59, 0xb5, 0x08, 0xcb, 0x5d, 0xc0, 0x26, 0xac, 0xf9, 0x3f, 0xa0, 0x1a, 0x5f, 0xca, 0x3d, 0x81, 0xc1, 0xbb, 0x20, 0xa5, 0xa5, 0xcf, 0x35, 0x7a, 0x23, 0xc9, 0x56, 0x88, 0xea, 0x42, 0xeb, 0x1e, 0xf2, 0xc9, 0xd4, 0x6a, 0xe3, 0x7f, 0x8c, 0xbe, 0x61, 0x5c, 0x20, 0x84, 0xd9, 0x89, 0xb8, 0x92, 0xf0, 0x16, 0x7b, 0x23, 0xbe, 0x33, 0x62, 0xfa, 0xce, 0x80, 0x8d, 0x6a, 0x5e, 0xb8, 0x96, 0x19, 0x44, 0x08, 0xdb, 0x7c, 0x01, 0x63, 0x9c, 0x58, 0x62, 0x30, 0x4c } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.4", - /* Message */ - 53, - { 0xdb, 0x6a, 0xf1, 0x29, 0x23, 0x05, 0x27, 0x8c, 0x5b, 0x33, 0x83, 0xf8, 0xa4, 0x1d, 0x6c, 0x83, 0x52, 0x21, 0x14, 0xc9, 0x88, 0x85, 0x50, 0x74, 0x06, 0x5b, 0x23, 0xf9, 0xfe, 0xae, 0x8e, 0xa4, 0x31, 0xfd, 0x5d, 0xa3, 0x6f, 0x9b, 0xab, 0xf9, 0xdc, 0x61, 0xdf, 0x2e, 0x39, 0x23, 0x47, 0x83, 0x04, 0x73, 0x38, 0xec, 0x4f } -, - /* Seed */ - 200, - { 0xcb, 0x85, 0x1f, 0xb2, 0x76, 0xa7, 0x49, 0x1c, 0xd3, 0xef, 0xe4, 0xd3, 0x39, 0x50, 0x16, 0xc1, 0xec, 0x2b, 0x15, 0x09, 0x4a, 0x1e, 0xc6, 0xd9, 0x30, 0xd4, 0xca, 0x21, 0xb4, 0x20, 0xf8, 0x47, 0xff, 0x68, 0x68, 0xf0, 0x14, 0xd2, 0x09, 0xff, 0x80, 0x7e, 0x8b, 0x1f, 0x71, 0x67, 0x0b, 0x32, 0x50, 0x94, 0xc0, 0xf6, 0xe3, 0x2f, 0x84, 0xf7, 0x68, 0x22, 0x22, 0x02, 0xb2, 0x1b, 0xe3, 0x6a, 0x28, 0x6b, 0x30, 0xe0, 0x82, 0xef, 0x3b, 0xba, 0x64, 0x7c, 0xeb, 0xee, 0xaf, 0xe3, 0x10, 0x69, 0x44, 0x18, 0xd7, 0x0a, 0x67, 0x9e, 0xb2, 0x01, 0x07, 0x80, 0xdd, 0x0e, 0x96, 0x55, 0x3c, 0x43, 0xcb, 0xc6, 0xd0, 0x0e, 0xac, 0x22, 0xaa, 0x71, 0xf2, 0x48, 0x21, 0xc4, 0xd6, 0xc1, 0x77, 0x8e, 0x78, 0x6c, 0xd8, 0xc7, 0xbf, 0x2c, 0xbb, 0xf2, 0x14, 0xe2, 0x03, 0xe2, 0xef, 0x2f, 0x33, 0x35, 0x78, 0xcf, 0x1a, 0x94, 0x7e, 0x27, 0xe5, 0x99, 0x96, 0x29, 0x0c, 0xbc, 0xd6, 0xca, 0x3f, 0x8f, 0x96, 0xba, 0x67, 0xe0, 0xe3, 0x41, 0x30, 0xcf, 0xdf, 0x86, 0xef, 0x48, 0xe6, 0x7c, 0x90, 0xb8, 0xb7, 0x2e, 0x6f, 0x42, 0x55, 0x01, 0x7d, 0xa2, 0xd1, 0xf3, 0xae, 0xdd, 0x7f, 0xb1, 0xd9, 0xde, 0x42, 0xef, 0xc0, 0x37, 0xab, 0xe6, 0x61, 0x6e, 0xbd, 0xa8, 0xd0, 0xb4, 0x0b, 0xd7, 0x80, 0xcb, 0xdb, 0x68, 0xce, 0x54, 0x31, 0x8f, 0xda, 0xfd } -, - /* Encryption */ - 256, - { 0xc9, 0x9a, 0x9a, 0xb6, 0x7c, 0xad, 0x0c, 0x41, 0xec, 0x84, 0x7b, 0xc2, 0x74, 0x67, 0xfd, 0xf5, 0xbf, 0x61, 0xed, 0x6d, 0x04, 0xc6, 0x5f, 0x7d, 0x9d, 0xd8, 0xbb, 0x70, 0x07, 0xa8, 0xa9, 0xb8, 0x3a, 0x3c, 0x38, 0xa9, 0xcb, 0x92, 0x5e, 0x3e, 0x7b, 0x3c, 0x40, 0x7d, 0x64, 0x66, 0x93, 0x15, 0xb3, 0x54, 0x49, 0xe7, 0x54, 0x28, 0xae, 0x96, 0x19, 0x14, 0xb0, 0xb9, 0x10, 0x23, 0xe7, 0x83, 0x19, 0x1f, 0x95, 0x41, 0xb6, 0x78, 0x65, 0x97, 0x1c, 0x95, 0xb0, 0xbe, 0x18, 0x93, 0x1e, 0xb1, 0xc8, 0x47, 0xc2, 0x6a, 0x29, 0x83, 0xc0, 0x58, 0x4e, 0xb2, 0x17, 0xc9, 0x9c, 0x70, 0x5f, 0x5a, 0xd8, 0xcb, 0xb0, 0x9f, 0x99, 0xb0, 0x6b, 0xdf, 0x7b, 0xd1, 0x26, 0x28, 0xae, 0x36, 0x67, 0xc1, 0x2c, 0x72, 0x27, 0xd9, 0x6f, 0xf9, 0xc1, 0x08, 0xdc, 0xe3, 0x22, 0x51, 0x06, 0xf6, 0x2f, 0x9a, 0x4a, 0x3a, 0x81, 0x17, 0xa9, 0x92, 0xf2, 0x88, 0xc3, 0xb5, 0x97, 0x91, 0x09, 0x87, 0x8f, 0xcd, 0x59, 0xc6, 0x79, 0x6b, 0x19, 0x98, 0x48, 0x2e, 0xa8, 0x2f, 0x30, 0x1c, 0x93, 0x91, 0x83, 0xb2, 0xdd, 0x47, 0x88, 0x04, 0x48, 0x67, 0x8a, 0xcb, 0xa1, 0x2d, 0x7b, 0xc8, 0xa5, 0x52, 0xeb, 0x32, 0x76, 0x34, 0xe9, 0x2d, 0x0c, 0xdc, 0xf7, 0x1e, 0xff, 0xb6, 0x66, 0xad, 0x90, 0x2d, 0x9e, 0x26, 0xad, 0x18, 0x60, 0xe2, 0x92, 0x81, 0xd0, 0x2f, 0xb0, 0xc5, 0x49, 0x3b, 0xf7, 0x4a, 0xc0, 0x2c, 0x94, 0x40, 0x43, 0x6e, 0x0d, 0x75, 0x32, 0x28, 0x92, 0x77, 0x7d, 0x32, 0x5e, 0xc8, 0x45, 0x2d, 0xe7, 0x58, 0xcc, 0x6a, 0x5c, 0xbb, 0x02, 0xd3, 0x41, 0xf4, 0x5c, 0x9a, 0xc8, 0xed, 0xf1, 0x50, 0xda, 0xd7, 0x15, 0x82, 0xdc, 0x77, 0x95, 0x8a, 0x85, 0x44, 0xb0, 0xb5, 0x58, 0xee, 0x2a, 0x0b } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.5", - /* Message */ - 11, - { 0xe7, 0x99, 0xe4, 0xeb, 0xc8, 0x69, 0x31, 0x9e, 0xe2, 0x25, 0x80 } -, - /* Seed */ - 242, - { 0x3a, 0x07, 0x57, 0xcb, 0x49, 0xa3, 0xfe, 0x6a, 0xe8, 0x0d, 0x37, 0x42, 0x06, 0x8b, 0x5c, 0x80, 0x68, 0xb8, 0xc5, 0x88, 0x54, 0x20, 0x01, 0x10, 0x93, 0xc2, 0x20, 0x99, 0xed, 0xaa, 0xdb, 0x49, 0x1f, 0x22, 0x6f, 0x85, 0x60, 0x66, 0x16, 0x3a, 0xb5, 0x10, 0x5e, 0x78, 0x79, 0xc7, 0x49, 0x1c, 0x18, 0x35, 0x98, 0x5d, 0xc4, 0x94, 0x21, 0x0e, 0xf7, 0x8b, 0xad, 0x48, 0x16, 0xd9, 0xb6, 0x94, 0xc9, 0xc8, 0xbe, 0x46, 0x6a, 0x4d, 0x17, 0x8a, 0x7d, 0xde, 0xcb, 0xce, 0x53, 0x65, 0x40, 0x0d, 0x68, 0x21, 0xb6, 0xe9, 0xae, 0x0e, 0x03, 0xbb, 0x69, 0xad, 0xc4, 0xec, 0x73, 0x4a, 0xfd, 0xcd, 0xea, 0x6d, 0xc0, 0xc4, 0x85, 0x96, 0xc4, 0x8b, 0x27, 0x35, 0xef, 0x70, 0xf3, 0x73, 0x4c, 0x18, 0x6d, 0x03, 0x18, 0x37, 0x8d, 0x2b, 0xf8, 0x09, 0x96, 0x88, 0x67, 0x2f, 0xa3, 0x85, 0x91, 0xda, 0x4a, 0xe6, 0xfc, 0x11, 0x2b, 0x72, 0x7e, 0xc8, 0x19, 0x84, 0xdf, 0x7b, 0x56, 0xc9, 0x84, 0x4e, 0x25, 0xb0, 0xfc, 0xd8, 0x1d, 0x2b, 0xe7, 0xd1, 0x8d, 0x01, 0x64, 0x6a, 0x6d, 0x9f, 0xe2, 0x25, 0xd3, 0x69, 0x7c, 0x34, 0xed, 0x2e, 0x33, 0x6c, 0xc0, 0x37, 0x3d, 0xaa, 0x28, 0xd8, 0x82, 0xe4, 0x97, 0x75, 0x7b, 0x0a, 0x65, 0x10, 0x86, 0x2e, 0xac, 0x10, 0xd3, 0xb2, 0x4a, 0xdb, 0x25, 0x2f, 0x30, 0xd4, 0x34, 0xe3, 0x0a, 0x63, 0x76, 0x46, 0x9d, 0x80, 0xb9, 0x57, 0x11, 0x16, 0x17, 0x78, 0xdf, 0x35, 0x88, 0x9b, 0x3a, 0xcf, 0xb1, 0xf6, 0x53, 0xea, 0x63, 0x07, 0x2f, 0x35, 0xa3, 0xc8, 0x9f, 0x6b, 0xa5, 0x2a, 0xfb, 0xbd, 0xc2, 0x8f, 0x23, 0xd3, 0x8f, 0x4d, 0x4e, 0x79, 0xfc, 0x39, 0x7c, 0x10 } -, - /* Encryption */ - 256, - { 0x3a, 0x3e, 0x72, 0x5c, 0x6e, 0x4b, 0xb0, 0x06, 0x12, 0x69, 0x61, 0x8c, 0xbb, 0x8a, 0x62, 0x67, 0xd9, 0x55, 0x83, 0xab, 0xaa, 0x03, 0xd8, 0xdf, 0x85, 0xa4, 0xf6, 0xa5, 0xcc, 0x35, 0x9b, 0xf1, 0x15, 0x26, 0x0d, 0xdb, 0x70, 0xae, 0x7c, 0x66, 0xbb, 0x8d, 0x87, 0xd6, 0x33, 0x1f, 0xf1, 0xb0, 0xb5, 0x4b, 0xe5, 0x64, 0x8e, 0x83, 0xe8, 0x3a, 0x91, 0xc5, 0x4c, 0xf3, 0x71, 0x49, 0x6e, 0xe5, 0xca, 0x02, 0x73, 0xb1, 0x9f, 0x70, 0x03, 0x70, 0xc2, 0xc8, 0xcd, 0xf4, 0x28, 0x13, 0x38, 0xa6, 0xe7, 0x2f, 0x66, 0x32, 0x41, 0x68, 0xea, 0x8c, 0xdb, 0xc6, 0x4c, 0x60, 0x9b, 0xa9, 0x67, 0x91, 0xc7, 0x91, 0xb5, 0xac, 0x84, 0x00, 0x99, 0x2a, 0x8c, 0x66, 0xfb, 0x09, 0xf4, 0xe3, 0x13, 0x07, 0x49, 0x12, 0xaf, 0x0c, 0xb7, 0x41, 0x5f, 0xb2, 0x15, 0xeb, 0x97, 0xfa, 0xeb, 0xbe, 0xf1, 0xa4, 0x47, 0x23, 0x9a, 0x91, 0xdb, 0x4a, 0x34, 0xfc, 0xa4, 0xd8, 0x43, 0x46, 0x25, 0x9e, 0xe0, 0xa1, 0xda, 0xdd, 0x10, 0xb7, 0xf0, 0x1f, 0xc8, 0xc5, 0x3e, 0x42, 0x0f, 0x88, 0xcd, 0xfa, 0x0c, 0xbc, 0xf6, 0x2b, 0xe4, 0x4b, 0x8a, 0x79, 0x40, 0x86, 0x4f, 0xf8, 0x13, 0x7e, 0xdb, 0x12, 0x2a, 0xc2, 0xda, 0xe5, 0x41, 0x0a, 0x47, 0xcf, 0x07, 0x62, 0xe2, 0x0f, 0x20, 0x86, 0xcb, 0xf6, 0x6f, 0xf4, 0xd1, 0xa9, 0xf7, 0x27, 0x0f, 0x00, 0x9c, 0xb2, 0xe0, 0x7d, 0x90, 0x20, 0xb4, 0x8a, 0x76, 0xd2, 0x41, 0x08, 0xe9, 0x98, 0x9b, 0xf9, 0x04, 0xe4, 0xa7, 0x1d, 0xdb, 0x91, 0x74, 0x0a, 0xd7, 0xe5, 0xd1, 0xb6, 0x8e, 0xc6, 0x4e, 0x3e, 0x66, 0xcd, 0x0e, 0x89, 0x7d, 0xcc, 0x66, 0x57, 0x39, 0xeb, 0xac, 0x45, 0x19, 0x93, 0xf0, 0x2c, 0xc5, 0xbf, 0xc6, 0x3a, 0x60, 0x2f, 0x55, 0x83, 0x81, 0xda } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.6", - /* Message */ - 55, - { 0x09, 0x97, 0x12, 0xb8, 0x26, 0xba, 0x67, 0xcf, 0x92, 0x92, 0x25, 0xbd, 0x61, 0x2e, 0xc0, 0x65, 0xd4, 0x51, 0xed, 0xe2, 0x31, 0xc8, 0xd5, 0xc2, 0x04, 0x04, 0xd4, 0x70, 0xe7, 0x9a, 0x7a, 0x1f, 0x24, 0x6e, 0x3e, 0xec, 0xdc, 0xc7, 0x5f, 0x08, 0x53, 0x29, 0xf8, 0xf1, 0x7b, 0x81, 0xd1, 0x30, 0x30, 0x0f, 0xc3, 0xb9, 0xf0, 0x93, 0xa2 } -, - /* Seed */ - 198, - { 0x81, 0xcd, 0x64, 0xc8, 0x4d, 0x77, 0x65, 0xfc, 0x60, 0xe4, 0xde, 0x3b, 0xa9, 0xb4, 0xdd, 0x21, 0xdd, 0xfb, 0x74, 0xfe, 0x2d, 0xfb, 0x7c, 0xf6, 0x19, 0xdb, 0xa4, 0xcb, 0xcc, 0x17, 0x6e, 0xd9, 0x4e, 0x6f, 0x37, 0xed, 0x1a, 0x97, 0xe3, 0xbf, 0xd3, 0x63, 0x65, 0xd2, 0x64, 0x4d, 0x3b, 0x6e, 0xe6, 0xc7, 0x71, 0x09, 0xfa, 0x18, 0x41, 0x2e, 0xe7, 0xcd, 0xdd, 0x3b, 0xe8, 0xd4, 0xbd, 0xee, 0x94, 0xc0, 0x96, 0xf0, 0x72, 0xca, 0xb6, 0xf1, 0x88, 0x6e, 0x3a, 0x84, 0xa7, 0xfd, 0xb5, 0xaf, 0xf3, 0xdd, 0x83, 0xf7, 0xe5, 0xc5, 0xb4, 0x9b, 0xb1, 0xb3, 0x8f, 0x8f, 0xaa, 0x75, 0x25, 0x31, 0xd8, 0x9c, 0x88, 0x39, 0x3e, 0x9e, 0xb8, 0xf5, 0x7e, 0xdc, 0x5b, 0x9f, 0xe6, 0xed, 0x2b, 0xc9, 0x5d, 0x27, 0x2c, 0xa9, 0x95, 0xf7, 0xe2, 0x59, 0xb0, 0x08, 0x32, 0xd9, 0x8b, 0x87, 0x23, 0x12, 0xcb, 0xef, 0x8a, 0x04, 0x8f, 0x6e, 0xb7, 0x91, 0x97, 0x84, 0xae, 0xd3, 0xd3, 0x1e, 0xb4, 0xb1, 0x2f, 0xd8, 0x07, 0x60, 0xa1, 0x34, 0xc9, 0xd6, 0xc3, 0x34, 0xc2, 0xdd, 0x3d, 0xfd, 0xf4, 0x97, 0x5c, 0xf1, 0xb5, 0x1e, 0x87, 0x12, 0x2b, 0x97, 0x33, 0x33, 0x44, 0x96, 0x08, 0xff, 0xbb, 0x2c, 0xf3, 0x0a, 0x02, 0xbc, 0x46, 0xea, 0x24, 0x7b, 0x45, 0x39, 0xb1, 0x86, 0x07, 0xbd, 0x47, 0xd3, 0xcd, 0xf0, 0x87, 0x72, 0x14, 0xba } -, - /* Encryption */ - 256, - { 0x78, 0x6b, 0x3f, 0x59, 0x9d, 0x1b, 0x74, 0x3e, 0x23, 0x58, 0x26, 0x24, 0xfa, 0x2c, 0x94, 0xa3, 0x6f, 0xb6, 0xbd, 0x33, 0xfd, 0xdd, 0x57, 0x64, 0x08, 0xcc, 0x85, 0x4a, 0xd7, 0xcf, 0x66, 0x7f, 0x17, 0x38, 0x0a, 0xf2, 0x0b, 0x0b, 0x73, 0x0c, 0x6b, 0xe9, 0x8c, 0x01, 0x80, 0x76, 0xb9, 0xb5, 0x04, 0x1d, 0xaf, 0x2e, 0xeb, 0x02, 0x54, 0x69, 0x30, 0x0a, 0xa4, 0x36, 0x43, 0x35, 0xbe, 0x26, 0x7d, 0x33, 0xb0, 0x6b, 0x4a, 0x7a, 0x79, 0x7a, 0x3c, 0x0a, 0xa5, 0xfd, 0x3f, 0x91, 0x6a, 0x55, 0xdc, 0x27, 0x4c, 0x0a, 0x24, 0x87, 0xf1, 0x25, 0xf9, 0xda, 0x82, 0x59, 0x6f, 0x43, 0x4c, 0x7f, 0xba, 0xc7, 0xec, 0xe2, 0xef, 0x6c, 0x83, 0xe0, 0x34, 0x8b, 0xf4, 0xf2, 0xc0, 0x83, 0x05, 0x07, 0x55, 0xb5, 0x6a, 0x9c, 0x63, 0x47, 0xf3, 0x9c, 0x76, 0xb0, 0xe0, 0xee, 0xdc, 0x61, 0x54, 0x10, 0x25, 0xc2, 0x3a, 0xa1, 0x85, 0x5c, 0x0b, 0x22, 0xb4, 0x46, 0xfe, 0x1e, 0xc5, 0xf1, 0x11, 0x2c, 0x5a, 0x7f, 0xc2, 0x85, 0xef, 0xdc, 0x84, 0x20, 0xec, 0x01, 0xa3, 0xa7, 0xc3, 0x3f, 0x73, 0x5b, 0x45, 0x55, 0x09, 0x2a, 0x9e, 0x8d, 0xe1, 0x6f, 0x3f, 0x7d, 0x46, 0x9f, 0x88, 0xcd, 0x75, 0xc0, 0x1c, 0x7f, 0x2e, 0x7d, 0x54, 0x6a, 0x1b, 0x9e, 0x7f, 0x49, 0x84, 0xfa, 0x29, 0xa2, 0xcc, 0x80, 0xd3, 0x10, 0xf9, 0xd7, 0x81, 0x8d, 0xf6, 0xd9, 0xad, 0x6c, 0xc2, 0x05, 0x37, 0x4d, 0x52, 0xe8, 0xe1, 0x73, 0x90, 0xbd, 0xe7, 0x2f, 0x25, 0xb7, 0x12, 0xa4, 0x26, 0x9f, 0x23, 0xae, 0xb2, 0x41, 0xa6, 0x66, 0xe9, 0x64, 0x96, 0xcd, 0x84, 0xb8, 0x33, 0xfb, 0x53, 0xd0, 0x57, 0x1f, 0x7a, 0xc2, 0xd1, 0x96, 0x4b, 0x8f, 0x2a, 0x7e, 0x13, 0x33, 0x6d, 0x9a, 0x7e, 0x03, 0x04, 0x1d, 0xcf, 0xcb } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.7", - /* Message */ - 41, - { 0x5f, 0x2a, 0x5c, 0x7f, 0x93, 0xe7, 0x14, 0xee, 0xca, 0xb3, 0xa5, 0x5a, 0x69, 0xc7, 0x9a, 0x3c, 0xbc, 0x15, 0xbd, 0x19, 0xdf, 0x27, 0x98, 0x9a, 0x9b, 0xab, 0x59, 0xfb, 0xbe, 0xa9, 0xff, 0xcc, 0x66, 0x3b, 0xf8, 0xe1, 0xe7, 0x40, 0x7d, 0xc2, 0x73 } -, - /* Seed */ - 212, - { 0xe0, 0x19, 0x60, 0x82, 0x6d, 0x1a, 0x69, 0xf6, 0x84, 0xc9, 0xc0, 0xb8, 0x5d, 0x84, 0xdc, 0xa5, 0x81, 0x1c, 0x89, 0xa2, 0xc0, 0x74, 0x2f, 0x33, 0xa2, 0xad, 0x19, 0x9f, 0xb6, 0x57, 0xa1, 0xaa, 0x98, 0x13, 0x60, 0x1d, 0x29, 0x93, 0x6a, 0x43, 0xd9, 0xb9, 0xeb, 0x4d, 0x32, 0x89, 0xcd, 0x7d, 0x37, 0x06, 0xab, 0x86, 0xb4, 0xd6, 0x6a, 0xda, 0xa7, 0xe0, 0xa1, 0x34, 0x51, 0xb2, 0xed, 0xb2, 0xbc, 0x77, 0x10, 0x91, 0x11, 0x0c, 0xda, 0xdd, 0x7e, 0xe2, 0xe6, 0xaa, 0xea, 0x2b, 0x35, 0xcf, 0xae, 0x4c, 0xe3, 0xb1, 0xda, 0x18, 0x16, 0x68, 0x4c, 0x89, 0xc0, 0xb3, 0xfb, 0x2f, 0x87, 0x79, 0xb2, 0x5c, 0xe0, 0xc1, 0x2d, 0x42, 0xb1, 0xd3, 0xd3, 0x0b, 0x8f, 0x20, 0xbe, 0xb8, 0x99, 0x91, 0x6e, 0x4f, 0xd0, 0xa1, 0x58, 0x86, 0x37, 0x19, 0x2e, 0x05, 0x28, 0xce, 0x6e, 0xa5, 0x4c, 0x8e, 0xb7, 0x54, 0xfd, 0x7f, 0xf0, 0x03, 0x25, 0x81, 0xa9, 0x50, 0x59, 0x98, 0xe6, 0x9e, 0x14, 0xf0, 0x72, 0xbf, 0x95, 0xdf, 0xef, 0xf0, 0x14, 0xdf, 0x99, 0xed, 0x78, 0x53, 0xb9, 0x82, 0xe8, 0x89, 0x41, 0x29, 0xa1, 0xd2, 0x7c, 0x53, 0xea, 0xaa, 0x23, 0x4c, 0x8d, 0x14, 0xa7, 0xff, 0xc5, 0xf5, 0xe2, 0x18, 0x7c, 0xef, 0x79, 0xeb, 0xf5, 0x2b, 0x3d, 0x6c, 0x06, 0x65, 0x89, 0x5b, 0xfb, 0x87, 0xe4, 0xbd, 0x61, 0x0e, 0x35, 0x8f, 0x35, 0x26, 0xda, 0x05, 0x92, 0xc9, 0xe5, 0x02, 0xb7, 0x2b, 0x76, 0xe4, 0x65, 0x66 } -, - /* Encryption */ - 256, - { 0x77, 0xd9, 0x07, 0x18, 0x1c, 0xc3, 0xb1, 0xbb, 0x19, 0x81, 0xe8, 0xcb, 0x22, 0xf7, 0xad, 0x75, 0xf8, 0x82, 0xe2, 0x6a, 0xfd, 0x28, 0x1b, 0x64, 0xdb, 0x70, 0xc8, 0x4c, 0x6a, 0x50, 0xfe, 0x74, 0x24, 0x9e, 0x22, 0xfb, 0xee, 0x90, 0xe3, 0x0d, 0x0b, 0x70, 0xae, 0x2f, 0x7e, 0x12, 0xac, 0xdd, 0xf6, 0x78, 0xf0, 0x0d, 0x22, 0x7e, 0x53, 0x61, 0x54, 0x26, 0x62, 0x43, 0x02, 0x69, 0xfe, 0xea, 0x34, 0x12, 0x47, 0x92, 0xaf, 0xb3, 0xf8, 0x7b, 0x30, 0xf9, 0x50, 0xf4, 0xed, 0xf2, 0x2c, 0x44, 0x04, 0xc9, 0x68, 0x8d, 0xec, 0x38, 0xea, 0x0b, 0x99, 0xcb, 0x3d, 0xc3, 0x84, 0xbd, 0x88, 0xfa, 0x31, 0x83, 0xd7, 0xe0, 0x7a, 0x20, 0x54, 0xd7, 0x3e, 0xa5, 0x1d, 0x42, 0x86, 0xbb, 0x39, 0xda, 0xe3, 0xae, 0x6d, 0x0b, 0x96, 0x51, 0xf1, 0xea, 0x48, 0x8f, 0x80, 0x5f, 0x2a, 0x21, 0x6e, 0xa2, 0x1a, 0x56, 0x76, 0xb9, 0x7d, 0x1b, 0x11, 0xd3, 0xb4, 0x03, 0x6c, 0xe1, 0x67, 0xfe, 0xf6, 0x4e, 0x0e, 0xba, 0x41, 0x9a, 0xf6, 0x73, 0x98, 0x3f, 0xc6, 0xee, 0x01, 0xc6, 0x37, 0xb1, 0x64, 0xe5, 0xaa, 0xac, 0xc9, 0x9a, 0xde, 0xe9, 0xf4, 0x7d, 0x21, 0x92, 0x54, 0x69, 0x6c, 0x8f, 0xce, 0xec, 0x6c, 0x74, 0xac, 0x4e, 0x39, 0x05, 0x1e, 0x15, 0x26, 0x94, 0x01, 0x73, 0x82, 0x64, 0xf0, 0xca, 0x5b, 0xf1, 0x22, 0xc5, 0x5c, 0x9e, 0x5d, 0xd8, 0x47, 0xb1, 0xd5, 0x77, 0x4e, 0x74, 0x08, 0xc3, 0x68, 0x4a, 0xa9, 0x74, 0xb0, 0xba, 0xaf, 0x40, 0xed, 0xc2, 0x2a, 0x03, 0x57, 0xaf, 0x72, 0xc8, 0x16, 0xcf, 0x73, 0x1f, 0xcb, 0x63, 0x96, 0x53, 0x60, 0x69, 0x9f, 0x26, 0x99, 0x97, 0xb8, 0x48, 0x0f, 0x30, 0xa6, 0xb5, 0xd5, 0x7e, 0x12, 0xa5, 0xcc, 0x54, 0xec, 0x0c, 0x80, 0x5f, 0xdc, 0xf6 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.8", - /* Message */ - 9, - { 0x55, 0x61, 0x39, 0x59, 0x3e, 0xee, 0x8b, 0x6e, 0x87 } -, - /* Seed */ - 244, - { 0x2d, 0xe2, 0xa5, 0x72, 0x24, 0xf5, 0xf5, 0xb1, 0x2e, 0x22, 0x3e, 0xb5, 0xf8, 0x2b, 0x9f, 0x47, 0x24, 0x9d, 0x25, 0x55, 0x93, 0x79, 0x13, 0x6e, 0xaf, 0x18, 0xe2, 0xf6, 0xc8, 0x33, 0xe3, 0xf0, 0x1b, 0xde, 0xea, 0x9c, 0x30, 0x3b, 0xd9, 0x67, 0x7c, 0x2a, 0x85, 0x71, 0x7d, 0x59, 0x3a, 0x28, 0x02, 0xae, 0xcb, 0xc6, 0xb3, 0xb7, 0x1f, 0x2c, 0x79, 0x03, 0xff, 0x69, 0x0e, 0x3f, 0x3c, 0x49, 0x57, 0xdd, 0x74, 0xcc, 0x9c, 0x2a, 0x68, 0xdc, 0x1d, 0x31, 0x9c, 0x1e, 0x17, 0x87, 0xbb, 0xb7, 0xf0, 0xe6, 0xe5, 0x1e, 0x39, 0xa5, 0xba, 0xdb, 0xba, 0x9f, 0xd4, 0x67, 0x66, 0x19, 0x74, 0x31, 0x2b, 0x55, 0x7a, 0xf1, 0x89, 0x52, 0x54, 0x9f, 0x6e, 0xba, 0x9d, 0xf4, 0x9f, 0x70, 0xea, 0xb3, 0x68, 0x9f, 0x9f, 0xa8, 0xfb, 0xea, 0x1c, 0x97, 0xe1, 0xbb, 0x2f, 0x09, 0x3e, 0x6a, 0xca, 0x9c, 0x38, 0x0e, 0xdc, 0x54, 0x6a, 0x19, 0xc4, 0x4f, 0x91, 0xf6, 0xdc, 0xaa, 0x28, 0x9b, 0xd1, 0x14, 0xfe, 0xa1, 0xb0, 0x36, 0xf9, 0x9b, 0x1a, 0x57, 0xf8, 0x61, 0x43, 0xd8, 0x67, 0x5b, 0xd0, 0x7d, 0x4d, 0xea, 0xbc, 0x9d, 0x51, 0x0c, 0x61, 0x70, 0x99, 0x44, 0x9c, 0xcc, 0xed, 0x5c, 0x45, 0x07, 0xb7, 0x9e, 0x85, 0x1e, 0xfe, 0xb1, 0x8d, 0x06, 0xb1, 0x99, 0x81, 0x0b, 0xb6, 0xb3, 0xcb, 0xe4, 0x12, 0x73, 0xba, 0xa7, 0x35, 0x16, 0x02, 0xe5, 0xf9, 0x52, 0x13, 0xf9, 0x69, 0x55, 0xad, 0x5f, 0xdd, 0x3a, 0x20, 0x52, 0xdb, 0xc7, 0x5f, 0xcf, 0x60, 0xaa, 0x22, 0x47, 0xf2, 0xd4, 0xe6, 0x03, 0xda, 0x45, 0x37, 0x0d, 0xe1, 0xc1, 0xda, 0x68, 0x7e, 0x26, 0x8e, 0xe4, 0x46, 0x67, 0xf9, 0x4d, 0xad, 0x13, 0xbc, 0x9b } -, - /* Encryption */ - 256, - { 0x4a, 0xce, 0x54, 0xa7, 0x52, 0xf5, 0x56, 0xe3, 0x6e, 0xab, 0xb1, 0x19, 0x48, 0x95, 0x84, 0x12, 0x14, 0x0c, 0x80, 0xc3, 0x1b, 0x61, 0xdc, 0x40, 0xf8, 0x1a, 0x6b, 0x12, 0x17, 0xa0, 0x1c, 0xe0, 0x67, 0xab, 0x37, 0xf5, 0x3d, 0xf4, 0xc7, 0x7d, 0x9e, 0xa9, 0xc2, 0xd7, 0x95, 0x0c, 0x8c, 0xd4, 0x97, 0x00, 0xb8, 0xcd, 0x24, 0xd4, 0xe7, 0x8f, 0x7f, 0xa3, 0x46, 0x29, 0x62, 0xcb, 0xfd, 0xe6, 0xd0, 0x2f, 0xb0, 0xe5, 0x03, 0x65, 0x64, 0x93, 0x25, 0x05, 0xae, 0x1c, 0x85, 0x1a, 0xa6, 0xd1, 0xd8, 0x4e, 0xfd, 0x04, 0xd5, 0x78, 0xad, 0x68, 0x27, 0x3a, 0x36, 0xa8, 0xae, 0x23, 0xd1, 0x45, 0x2f, 0x94, 0xa9, 0x37, 0x88, 0x17, 0x71, 0x3e, 0x76, 0x4a, 0x09, 0x17, 0x45, 0x26, 0x29, 0xb5, 0xdc, 0x75, 0xb5, 0x7b, 0x0d, 0x5e, 0x6a, 0x72, 0x8c, 0x83, 0x69, 0x11, 0x72, 0xd2, 0xcd, 0x95, 0xf8, 0xba, 0xd0, 0x7d, 0xb4, 0x68, 0xeb, 0xf5, 0x45, 0xb7, 0xf3, 0xf2, 0xc8, 0x63, 0xb6, 0xe2, 0x0c, 0x67, 0xc4, 0x76, 0x9d, 0xed, 0x03, 0x91, 0xa3, 0x36, 0xf3, 0xa5, 0xd8, 0x7e, 0x24, 0xfc, 0xf9, 0x1a, 0xaf, 0x77, 0x4b, 0xee, 0x77, 0xa7, 0x89, 0xa5, 0x90, 0x80, 0x09, 0xc7, 0xa5, 0x5e, 0xac, 0x92, 0xaf, 0x4c, 0x3d, 0x46, 0x1e, 0x7b, 0x40, 0x61, 0x6c, 0xe8, 0x06, 0x19, 0x4b, 0xfc, 0x20, 0x74, 0xc3, 0xf4, 0xf1, 0x35, 0x59, 0x70, 0x0b, 0x27, 0x08, 0xa0, 0xb7, 0x55, 0x78, 0x96, 0x70, 0xa3, 0x62, 0x6a, 0x14, 0x63, 0x88, 0x11, 0xbb, 0x18, 0xe1, 0x5b, 0x10, 0x25, 0xc3, 0xb9, 0xbe, 0xf1, 0x11, 0x17, 0x6b, 0xc1, 0xf2, 0x46, 0x9e, 0xa9, 0x9a, 0xad, 0x20, 0x86, 0x05, 0x73, 0xd6, 0xc6, 0xa1, 0xfe, 0x40, 0xdb, 0x51, 0xe3, 0x6f, 0xe3, 0x38, 0x00, 0x10, 0x1b, 0xda, 0x20 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.9", - /* Message */ - 49, - { 0x9a, 0x13, 0x96, 0x62, 0x2d, 0x06, 0x6c, 0x10, 0x56, 0x08, 0x58, 0xc2, 0xc4, 0xcd, 0x5c, 0x04, 0x44, 0x9e, 0x2b, 0x95, 0x50, 0xc5, 0xbc, 0x92, 0x93, 0x76, 0x1a, 0x91, 0x04, 0x41, 0x1d, 0xa1, 0x8a, 0x57, 0xd9, 0xb6, 0xa9, 0x97, 0x33, 0x3c, 0xdb, 0xce, 0x77, 0xe9, 0xfd, 0xbe, 0x6b, 0xb8, 0x31 } -, - /* Seed */ - 204, - { 0xf1, 0x78, 0x61, 0xac, 0xff, 0xb2, 0x4c, 0xac, 0xed, 0x90, 0xba, 0x38, 0xaa, 0x7e, 0xa0, 0xf2, 0xe5, 0x4e, 0xea, 0xa6, 0x2a, 0xe6, 0x64, 0x98, 0xf3, 0xc2, 0x8f, 0x99, 0x6b, 0xce, 0xe2, 0x53, 0xbe, 0xe8, 0x19, 0x9e, 0x3e, 0xb8, 0x0d, 0x62, 0x7f, 0xee, 0xb6, 0xe0, 0xb3, 0x94, 0x90, 0xed, 0xf7, 0x6d, 0x16, 0xa2, 0xa0, 0xbc, 0x20, 0x09, 0x32, 0x52, 0xa9, 0xd7, 0xf1, 0xf9, 0x38, 0x8b, 0x06, 0x19, 0x44, 0x85, 0x2a, 0xfb, 0xe7, 0x3c, 0xe4, 0x13, 0xa3, 0xfc, 0xa5, 0x21, 0xb9, 0x47, 0x4e, 0x67, 0x81, 0x29, 0x46, 0x4d, 0x91, 0xb8, 0x2b, 0xca, 0xa5, 0x9f, 0x56, 0xec, 0xfb, 0x12, 0x4f, 0x61, 0xf5, 0x04, 0x67, 0x13, 0x01, 0x05, 0xb2, 0xcb, 0xc6, 0x94, 0x3b, 0x95, 0x36, 0x95, 0xcf, 0xcd, 0x20, 0xc9, 0xb6, 0xef, 0x53, 0xf3, 0xf2, 0x10, 0x33, 0x1d, 0x39, 0x32, 0xdc, 0x01, 0x0c, 0x73, 0x59, 0x29, 0x09, 0x6b, 0x2e, 0x68, 0xff, 0x16, 0x66, 0x4b, 0x0b, 0x90, 0xa0, 0xfa, 0x1b, 0xe4, 0x60, 0x57, 0x85, 0x92, 0xb0, 0xcb, 0x4d, 0x6c, 0xa4, 0x5e, 0xa0, 0x6b, 0xde, 0x3e, 0x8a, 0x1e, 0xbf, 0xef, 0x70, 0xd8, 0x3e, 0xf7, 0x9b, 0x3a, 0x74, 0xdb, 0x06, 0x0f, 0xc0, 0x20, 0x3b, 0x74, 0x80, 0x7f, 0x40, 0x70, 0x01, 0xf4, 0xb4, 0xd9, 0x9e, 0xc5, 0x15, 0x8e, 0x8e, 0x7e, 0x4b, 0x10, 0x2a, 0x51, 0x5d, 0xe9, 0x5d, 0x2b, 0x70, 0xfe, 0x1f, 0xb4 } -, - /* Encryption */ - 256, - { 0x10, 0x0e, 0xce, 0x63, 0x45, 0x25, 0xd4, 0x67, 0xf6, 0xd4, 0xa6, 0xb6, 0x6e, 0xde, 0x1c, 0xc2, 0x37, 0xf6, 0x1f, 0xb2, 0xb6, 0x70, 0x23, 0xa8, 0x3d, 0xc4, 0x56, 0xb9, 0x2c, 0xda, 0x18, 0x3e, 0xd6, 0x62, 0x0f, 0xe5, 0x7d, 0x5a, 0x67, 0x33, 0x2c, 0x77, 0x23, 0x3a, 0xc1, 0xe8, 0x72, 0x5b, 0x36, 0xf8, 0xe1, 0xb1, 0x08, 0x41, 0x2c, 0xa6, 0xfb, 0x35, 0xdc, 0xd4, 0xd8, 0x16, 0x77, 0xa2, 0xb3, 0x0d, 0x5e, 0xaf, 0x25, 0xe0, 0xb9, 0x19, 0x1b, 0x38, 0xf7, 0xee, 0xf8, 0x3f, 0x91, 0x21, 0xa8, 0x08, 0x43, 0x8c, 0x92, 0xab, 0x03, 0xf5, 0x20, 0x80, 0x7b, 0xc9, 0xa8, 0x94, 0x70, 0x5e, 0xaf, 0x4e, 0xed, 0x06, 0x68, 0x23, 0xa6, 0x7a, 0xa2, 0xa5, 0x59, 0x9c, 0xd9, 0x5e, 0x58, 0xda, 0x7c, 0x09, 0x48, 0x36, 0xd2, 0xaf, 0xeb, 0xa3, 0x9d, 0xd0, 0x09, 0xa6, 0x4a, 0xde, 0x03, 0x05, 0x33, 0x76, 0xf0, 0x29, 0x36, 0xcf, 0x3f, 0x56, 0xbf, 0x64, 0xc1, 0xf3, 0xbd, 0xc0, 0x7c, 0x45, 0xa9, 0x5b, 0x9f, 0xcd, 0x93, 0x96, 0xcd, 0x9a, 0x8d, 0x41, 0xbc, 0xc5, 0x64, 0x24, 0x93, 0x7a, 0x13, 0x71, 0xb3, 0x84, 0x7c, 0x90, 0x5b, 0x9a, 0xb5, 0x84, 0x02, 0x39, 0x3d, 0x40, 0x46, 0xe4, 0xa0, 0x15, 0xc1, 0x47, 0x08, 0xf7, 0x4c, 0xe7, 0x79, 0x0e, 0xba, 0x8a, 0xf7, 0x92, 0x07, 0x24, 0x40, 0xbc, 0xaf, 0xb1, 0x4c, 0x0f, 0x81, 0x08, 0x97, 0x11, 0x87, 0xc8, 0x0f, 0x46, 0x3a, 0x1f, 0xff, 0x25, 0x86, 0x46, 0xea, 0x16, 0xe5, 0x1c, 0x6e, 0xe3, 0x61, 0xb6, 0x61, 0xa1, 0x4f, 0x07, 0xcd, 0x4f, 0x5a, 0x82, 0xc7, 0x09, 0xf4, 0x94, 0xf1, 0xdf, 0x0f, 0x80, 0x3b, 0x6f, 0x64, 0xa7, 0x2f, 0xb9, 0xc4, 0x50, 0xff, 0xe2, 0x68, 0xfc, 0xab, 0x48, 0x7d, 0x4d, 0x63, 0x01, 0x3e, 0x41 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.10", - /* Message */ - 53, - { 0xb3, 0x82, 0x4f, 0xb5, 0x45, 0xa8, 0x3f, 0x82, 0xef, 0x82, 0x23, 0x11, 0x82, 0x84, 0xc5, 0x45, 0x6b, 0xab, 0x60, 0x0a, 0xdf, 0x79, 0xf5, 0x07, 0x33, 0xb6, 0x66, 0x8f, 0xbc, 0x51, 0x5d, 0xa5, 0x96, 0x31, 0x62, 0xa6, 0xd7, 0xd7, 0xe9, 0x6f, 0xf9, 0x1a, 0xff, 0x12, 0xeb, 0x3e, 0x93, 0x11, 0xe2, 0x21, 0xe7, 0x0b, 0xc0 } -, - /* Seed */ - 200, - { 0xb8, 0x26, 0x8e, 0x4b, 0xce, 0x7e, 0x53, 0xf2, 0xe8, 0xbe, 0x98, 0xb1, 0x92, 0xd6, 0x3a, 0xd0, 0x65, 0x44, 0xa8, 0x0d, 0x6e, 0x62, 0xd6, 0x32, 0x48, 0x6e, 0x15, 0xe5, 0x75, 0xba, 0x70, 0x6e, 0x3e, 0x76, 0x89, 0x30, 0xdc, 0x8e, 0x41, 0x1f, 0x8e, 0xeb, 0x0b, 0x6e, 0x8f, 0x06, 0x06, 0x29, 0xda, 0x8a, 0x24, 0x23, 0x68, 0xe4, 0x79, 0xcc, 0xb3, 0x31, 0x69, 0x70, 0x70, 0xb4, 0xb3, 0x52, 0x4e, 0x69, 0x16, 0x92, 0x76, 0xba, 0xb0, 0xa9, 0x45, 0x14, 0xcc, 0xd6, 0x60, 0x70, 0x25, 0x28, 0xed, 0x20, 0xb5, 0xd1, 0xdf, 0x07, 0x77, 0x9a, 0x62, 0xc6, 0x56, 0x86, 0xe7, 0xd6, 0x68, 0x46, 0x6f, 0xfc, 0x74, 0x8e, 0xb3, 0x43, 0x44, 0xca, 0x6f, 0x30, 0x5c, 0xda, 0x3d, 0xc3, 0xe8, 0xf0, 0x1c, 0x43, 0xea, 0x91, 0x79, 0xda, 0x46, 0x21, 0x47, 0xf4, 0xd3, 0xec, 0x92, 0xf8, 0x88, 0xb7, 0xee, 0xaa, 0x41, 0x0e, 0x12, 0xc8, 0x6d, 0x89, 0x42, 0xc7, 0xd0, 0x12, 0xf4, 0x5c, 0x61, 0xff, 0xa6, 0xe2, 0xb7, 0x8f, 0x84, 0x3e, 0x9a, 0x75, 0xd9, 0x67, 0x32, 0x14, 0xd5, 0x58, 0xca, 0xf0, 0x1b, 0x45, 0xf9, 0x36, 0x86, 0xee, 0xda, 0x54, 0x79, 0xdb, 0x80, 0x52, 0x79, 0x25, 0x59, 0xcc, 0x23, 0x6a, 0x4a, 0x1e, 0xe6, 0x5d, 0x3c, 0xa6, 0x0e, 0x09, 0xa3, 0xc1, 0x84, 0xd4, 0xb3, 0x95, 0xd7, 0x0b, 0x8e, 0xf8, 0x8d, 0x78, 0x09, 0x1a } -, - /* Encryption */ - 256, - { 0xc0, 0xe9, 0x8d, 0x50, 0x89, 0x4a, 0xda, 0x84, 0x9f, 0xce, 0x89, 0x83, 0xf6, 0xf8, 0x95, 0x74, 0x03, 0x4d, 0x6c, 0xf3, 0xb8, 0x35, 0x2b, 0xfc, 0x50, 0x72, 0x4a, 0x70, 0x3d, 0xd4, 0xf4, 0x2f, 0x40, 0x06, 0xae, 0x00, 0x8a, 0xd9, 0x72, 0x33, 0xce, 0xf6, 0xf1, 0x6c, 0xe1, 0xb4, 0x23, 0xf5, 0x2c, 0x6b, 0x67, 0x7e, 0xf0, 0x05, 0x13, 0x1b, 0xa9, 0x87, 0xf9, 0x8c, 0x72, 0x2f, 0xaa, 0x49, 0x42, 0xec, 0xce, 0x2c, 0x99, 0x66, 0x37, 0x40, 0xa1, 0xa1, 0xe9, 0x81, 0x20, 0xfa, 0xed, 0x97, 0xfd, 0x03, 0xff, 0x36, 0xfe, 0x73, 0x75, 0x8e, 0x70, 0xdf, 0x17, 0xf3, 0x1f, 0x1f, 0x39, 0x41, 0x81, 0x2d, 0x34, 0xca, 0xe6, 0xc3, 0x9d, 0xe7, 0x87, 0xef, 0x57, 0x04, 0xbc, 0x39, 0xc9, 0x20, 0xea, 0x5b, 0x0e, 0xb1, 0x83, 0x3e, 0x83, 0xb4, 0x57, 0x94, 0xfd, 0xe0, 0xff, 0x00, 0x05, 0xc6, 0x27, 0x33, 0xc7, 0x0a, 0x29, 0x6c, 0xa0, 0xbd, 0x47, 0xf0, 0x65, 0x50, 0x3d, 0xdc, 0xe2, 0xd6, 0x49, 0xde, 0x1c, 0x32, 0x8d, 0xdf, 0x60, 0x32, 0xa3, 0x3f, 0xad, 0x46, 0xba, 0x04, 0x1d, 0xc0, 0xa9, 0x94, 0xbf, 0x0f, 0x56, 0xa4, 0x65, 0xf1, 0x62, 0x5f, 0xcb, 0x81, 0xce, 0x01, 0xfa, 0x29, 0x9f, 0xc2, 0xb3, 0xc8, 0x09, 0x39, 0xeb, 0xe6, 0xa6, 0x73, 0x82, 0x6e, 0x2b, 0x2f, 0x12, 0xec, 0xdd, 0xa5, 0x03, 0x5c, 0x95, 0x09, 0x31, 0x2d, 0xd1, 0x9f, 0x10, 0xc3, 0x5c, 0x8a, 0x8b, 0x0d, 0xa6, 0x3c, 0x08, 0x51, 0x97, 0x00, 0x6a, 0x9b, 0xe2, 0x36, 0x10, 0x8e, 0xb9, 0x87, 0x91, 0xb2, 0x6e, 0x28, 0x08, 0xb5, 0xcc, 0xd5, 0xac, 0xec, 0x73, 0x8b, 0xca, 0x02, 0x5b, 0x24, 0x18, 0x2e, 0xf4, 0xab, 0x9c, 0xcc, 0xb1, 0x71, 0xa6, 0x9f, 0xb4, 0x23, 0xa4, 0x6e, 0x03, 0x7a, 0x4d, 0x0a } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.11", - /* Message */ - 43, - { 0xa3, 0xa7, 0xda, 0x1b, 0xed, 0xb2, 0xca, 0x99, 0xfc, 0xde, 0xb7, 0xa4, 0x6d, 0x63, 0x3e, 0xca, 0x35, 0x06, 0x2d, 0xf2, 0x89, 0x6b, 0x69, 0x59, 0x07, 0xa7, 0xf9, 0x71, 0xd2, 0xcc, 0x50, 0xb6, 0xe3, 0xd2, 0xa3, 0x67, 0xd1, 0x6e, 0x72, 0x7f, 0x56, 0x97, 0xc0 } -, - /* Seed */ - 210, - { 0xf0, 0x18, 0xa9, 0xb1, 0x3f, 0xbe, 0x56, 0x0b, 0xfe, 0x95, 0x52, 0xed, 0x8a, 0x86, 0x06, 0xbe, 0xea, 0x90, 0x05, 0x5e, 0xd3, 0xf6, 0x2b, 0xb2, 0xaf, 0x07, 0xf6, 0x92, 0xcb, 0x60, 0xac, 0xfb, 0x6d, 0x59, 0x07, 0xd6, 0x0e, 0x0a, 0x59, 0x7a, 0x54, 0xca, 0xea, 0xf8, 0x44, 0x91, 0x1c, 0xdc, 0x87, 0x4f, 0xaf, 0x95, 0x69, 0x53, 0xa2, 0x7d, 0x30, 0x0e, 0x9b, 0x71, 0x5b, 0x10, 0x4d, 0xf3, 0xc2, 0x32, 0xc3, 0xc9, 0x63, 0x82, 0xcf, 0x5b, 0x5f, 0x3d, 0x07, 0xb2, 0x30, 0xb5, 0x25, 0xbb, 0x33, 0x0e, 0x31, 0x9d, 0x1a, 0x7c, 0x82, 0xd1, 0x53, 0xaf, 0x81, 0x7e, 0xf1, 0x1c, 0xf7, 0x2e, 0x76, 0xdd, 0x50, 0xb0, 0xd7, 0xe5, 0x56, 0x22, 0x65, 0xc8, 0x34, 0x5d, 0xa8, 0x29, 0xf5, 0x60, 0xd6, 0xa5, 0x4e, 0x6f, 0x1e, 0x28, 0x8a, 0x3d, 0xc2, 0x17, 0x6d, 0x19, 0xa6, 0x8a, 0x0b, 0x1c, 0x5c, 0x92, 0xb1, 0x6b, 0x8b, 0xb2, 0x9e, 0x4d, 0x01, 0xdf, 0xbd, 0x0b, 0x18, 0x07, 0x9b, 0xd4, 0x0c, 0xfc, 0xd5, 0x23, 0x35, 0xb3, 0xa1, 0x8b, 0xc4, 0xee, 0x92, 0x44, 0x76, 0x0e, 0xb4, 0x94, 0xf5, 0xbe, 0x5b, 0x19, 0x71, 0x88, 0x6c, 0xa2, 0xbe, 0xec, 0xe0, 0xa3, 0x94, 0x4f, 0xff, 0x8b, 0xe6, 0xb4, 0x2d, 0x96, 0xe1, 0xc2, 0xc7, 0x2e, 0x4e, 0x90, 0xf8, 0x7e, 0xd1, 0x36, 0x15, 0x46, 0x7c, 0xfc, 0x91, 0xc2, 0x6e, 0xb3, 0x8a, 0x7a, 0xf9, 0xf5, 0x66, 0x86, 0x93, 0x1a, 0x47, 0x26, 0xda, 0x04 } -, - /* Encryption */ - 256, - { 0x25, 0x17, 0x7b, 0xfe, 0x12, 0x61, 0x9b, 0x44, 0xf4, 0xa4, 0xfe, 0x7c, 0xb7, 0x6d, 0xe9, 0x3d, 0x4e, 0xd4, 0xa0, 0x5a, 0x31, 0xe5, 0xbe, 0x8c, 0xc4, 0xe5, 0x60, 0x66, 0x1d, 0xe9, 0xa3, 0x4a, 0xe3, 0x17, 0xcc, 0x02, 0xff, 0x63, 0x10, 0x67, 0x08, 0x32, 0x8b, 0xd3, 0xf7, 0x87, 0x63, 0xab, 0x3e, 0x57, 0x65, 0x2c, 0x63, 0xf1, 0x05, 0xf7, 0x97, 0x1d, 0x2d, 0x8d, 0x70, 0x1e, 0x62, 0x97, 0xa7, 0x9c, 0x78, 0x7b, 0x7c, 0xcd, 0x62, 0xa5, 0x3b, 0x39, 0xd9, 0xc0, 0x39, 0x46, 0xe6, 0x6f, 0x48, 0x8a, 0x92, 0xe8, 0xe1, 0x7d, 0xc6, 0xec, 0xb0, 0xf6, 0x5b, 0xf0, 0x1e, 0x3a, 0xff, 0xee, 0x99, 0x76, 0x87, 0x31, 0x1b, 0xe0, 0xe9, 0x45, 0xad, 0xd6, 0x3f, 0xa3, 0xf4, 0x00, 0x38, 0x2c, 0xb8, 0xff, 0xd8, 0x91, 0x57, 0x54, 0x01, 0x8c, 0xc7, 0x5e, 0x82, 0x82, 0x26, 0xb5, 0x03, 0x9c, 0xd9, 0xc5, 0x7f, 0xc6, 0xd9, 0x9c, 0xbe, 0x8e, 0xa4, 0xa3, 0xd2, 0x9c, 0xbd, 0x09, 0xd5, 0x4d, 0x95, 0xcc, 0x07, 0x34, 0xc2, 0x35, 0x44, 0xf8, 0xe1, 0xfb, 0xc7, 0x49, 0x3e, 0x06, 0xd1, 0x6c, 0x0a, 0x0a, 0xc1, 0x53, 0x0d, 0x21, 0xf0, 0x33, 0x7e, 0x26, 0x2f, 0xd9, 0xd2, 0x7f, 0xcc, 0x4a, 0xfe, 0xb5, 0x74, 0xd6, 0x68, 0x66, 0xd4, 0xca, 0x84, 0xcf, 0xd6, 0xe0, 0xaf, 0x2b, 0xb9, 0x77, 0xa5, 0xd9, 0x9a, 0x5b, 0x0b, 0x37, 0x44, 0x04, 0x2d, 0x33, 0x2b, 0x93, 0x6b, 0xbd, 0xd8, 0x69, 0xe5, 0xf2, 0xc8, 0x83, 0xb4, 0x00, 0xac, 0x8b, 0xc0, 0x68, 0x3e, 0x67, 0x90, 0x63, 0x42, 0x9d, 0x98, 0xd4, 0x94, 0xf3, 0x18, 0x04, 0xd6, 0x5b, 0xb3, 0xc9, 0x74, 0xaa, 0x72, 0xe6, 0x65, 0x7d, 0x4c, 0x16, 0x38, 0xc6, 0x79, 0xc8, 0x1a, 0x16, 0x45, 0x3f, 0x6b, 0x0b, 0xaa, 0x3f, 0x05, 0x17 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.12", - /* Message */ - 28, - { 0x49, 0xf6, 0xf8, 0xa4, 0xa8, 0x6a, 0x8a, 0xa0, 0x97, 0x63, 0xaa, 0xc8, 0x55, 0x72, 0xb0, 0xe7, 0xee, 0x77, 0x6a, 0xef, 0xf8, 0xa8, 0x29, 0x00, 0x07, 0x76, 0xff, 0xa6 } -, - /* Seed */ - 225, - { 0x6d, 0xb6, 0xa8, 0x27, 0xac, 0x2a, 0x5e, 0x06, 0x16, 0xc0, 0xf4, 0x43, 0xb2, 0x34, 0x58, 0xe1, 0x75, 0xac, 0xf9, 0xa3, 0xb2, 0x55, 0xf5, 0xc8, 0x52, 0x5e, 0x72, 0x53, 0x42, 0x4f, 0xaa, 0x91, 0x38, 0x05, 0x4c, 0x3d, 0xba, 0xa4, 0x71, 0xf2, 0x7f, 0xe8, 0x55, 0xc1, 0xc0, 0xce, 0xc3, 0x62, 0x59, 0x7a, 0x1a, 0x1e, 0x6e, 0xb4, 0xf2, 0x98, 0xac, 0x3e, 0xb7, 0x34, 0xd3, 0x1f, 0xf0, 0xef, 0x10, 0x08, 0xc0, 0xe0, 0x2b, 0x9b, 0x06, 0xe2, 0x93, 0x15, 0xfc, 0x09, 0x4a, 0x7e, 0xd2, 0x6b, 0x11, 0xea, 0x55, 0x27, 0x0a, 0x3d, 0xcb, 0x67, 0x06, 0xf4, 0x6a, 0x94, 0x50, 0xbf, 0x83, 0x12, 0x88, 0x10, 0x65, 0x13, 0x02, 0x48, 0xd2, 0x64, 0x47, 0x66, 0xa7, 0x99, 0x66, 0xef, 0xda, 0xdb, 0xaa, 0xf5, 0x75, 0xef, 0x4d, 0xd3, 0x5a, 0x93, 0x7f, 0xf0, 0xbf, 0xbf, 0x3d, 0x95, 0x61, 0xc7, 0x54, 0x40, 0x9b, 0xe7, 0xb8, 0x84, 0x7a, 0x60, 0x8d, 0x79, 0x1f, 0xb9, 0x87, 0xee, 0xd4, 0x6a, 0xfe, 0xb0, 0xdb, 0x1c, 0xa9, 0x75, 0xc0, 0x5f, 0x61, 0x57, 0x0d, 0xd0, 0x70, 0x98, 0x5f, 0x13, 0xe4, 0xe0, 0xed, 0x7a, 0x8c, 0xb3, 0x91, 0xce, 0x4d, 0x42, 0x08, 0x32, 0xb4, 0x5a, 0x8b, 0x7e, 0x9f, 0x90, 0x88, 0x4e, 0x61, 0x18, 0x98, 0xf4, 0x72, 0xa0, 0xac, 0x46, 0xc5, 0x7a, 0xa7, 0xf8, 0x46, 0x8a, 0xa1, 0x9d, 0x9c, 0x7b, 0x31, 0x2f, 0x13, 0x43, 0x22, 0x99, 0x03, 0x93, 0x88, 0x1d, 0x32, 0xaa, 0x14, 0x68, 0xf6, 0xe5, 0xf8, 0xeb, 0x85, 0xa2, 0xc3, 0xc2, 0xda, 0xed, 0x92, 0xb9, 0x3c } -, - /* Encryption */ - 256, - { 0x0f, 0xf9, 0x5f, 0x4a, 0x2a, 0x07, 0x18, 0xd6, 0x73, 0xf9, 0x20, 0x2c, 0x80, 0x9f, 0x10, 0x45, 0x10, 0x1f, 0x52, 0xb9, 0xdb, 0xa7, 0x72, 0x88, 0xfe, 0x28, 0x8c, 0xb2, 0x77, 0xc4, 0xdb, 0xaa, 0x35, 0xdb, 0x93, 0x27, 0xec, 0xee, 0xc3, 0x76, 0x5a, 0xe0, 0x33, 0xe0, 0xb6, 0xb7, 0x77, 0xb2, 0x2c, 0xa6, 0xbe, 0x66, 0x20, 0x03, 0xea, 0xfa, 0x2b, 0xfb, 0xda, 0x60, 0x6f, 0xd8, 0xce, 0xe7, 0xee, 0xe0, 0x6c, 0x6a, 0x00, 0xc9, 0x45, 0xa6, 0x55, 0x6c, 0x60, 0xb0, 0x08, 0x69, 0xf9, 0x99, 0x97, 0x1a, 0x8c, 0x57, 0xaf, 0xe1, 0xdd, 0xee, 0x7a, 0x75, 0x77, 0x04, 0x7a, 0x0d, 0xb9, 0x0f, 0x62, 0xcd, 0x24, 0x7a, 0x88, 0x7f, 0x32, 0x27, 0xef, 0x6d, 0xa9, 0x07, 0xa7, 0x5b, 0xcf, 0xf1, 0x9a, 0xa3, 0x0c, 0x90, 0x8f, 0x58, 0x35, 0xef, 0x10, 0x10, 0x0a, 0xdc, 0x7f, 0x6a, 0xd6, 0xfb, 0x31, 0x99, 0x79, 0x0b, 0x3f, 0x4d, 0x6a, 0xd1, 0x9a, 0x0d, 0xf5, 0x02, 0x7f, 0xdb, 0x8f, 0x84, 0x66, 0x04, 0xe0, 0x2d, 0xaf, 0x33, 0x55, 0xd9, 0x56, 0x40, 0x77, 0x79, 0xaf, 0x15, 0x5a, 0xcf, 0xa5, 0xa3, 0x2e, 0x6d, 0x61, 0x74, 0xdc, 0x90, 0x13, 0x1d, 0xbd, 0x7a, 0xbe, 0x58, 0x5d, 0xd7, 0x59, 0xfa, 0x3c, 0xb7, 0xe9, 0xf7, 0x21, 0x45, 0x3f, 0x3e, 0x35, 0x4f, 0xe7, 0xbe, 0x0b, 0x11, 0x8e, 0xf5, 0xb8, 0x79, 0x42, 0xb5, 0xfe, 0xd4, 0xc3, 0x0d, 0x7a, 0x08, 0xfe, 0x24, 0x64, 0xeb, 0x79, 0xa3, 0xde, 0xba, 0xb3, 0x7b, 0x6d, 0x3a, 0x0a, 0xb3, 0x15, 0x77, 0xde, 0x7e, 0x93, 0x22, 0x9b, 0x49, 0xd1, 0xe8, 0xfd, 0x56, 0x32, 0xd0, 0x26, 0xd8, 0x3e, 0xe0, 0x6a, 0xa7, 0x85, 0x34, 0xce, 0xe3, 0x08, 0x1b, 0x22, 0x2e, 0xc4, 0xcd, 0x94, 0x88, 0xcc, 0xde, 0x4e, 0x15, 0x29, 0x05 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.13", - /* Message */ - 5, - { 0x12, 0x97, 0x5d, 0xb7, 0x3d } -, - /* Seed */ - 248, - { 0x6a, 0x4b, 0x4f, 0xb8, 0x05, 0x80, 0x72, 0x72, 0x96, 0x5b, 0xff, 0x2f, 0x4c, 0x80, 0x0f, 0x96, 0x4f, 0xa3, 0xae, 0xb9, 0xfb, 0x43, 0x3b, 0x40, 0xc8, 0xac, 0xc5, 0x98, 0xb4, 0x84, 0x02, 0x98, 0x93, 0xa2, 0x19, 0xc9, 0x53, 0x21, 0x34, 0xc0, 0x6a, 0xc8, 0x42, 0x5c, 0x28, 0xa5, 0xf0, 0x63, 0xc2, 0x84, 0x20, 0x0a, 0x04, 0x56, 0x43, 0x48, 0x97, 0x16, 0x51, 0x6a, 0x98, 0x7b, 0xf8, 0x1b, 0xa1, 0x86, 0xf4, 0xce, 0xb8, 0xd8, 0xd9, 0xdc, 0x1d, 0x73, 0xf2, 0x26, 0x7f, 0xd1, 0x98, 0x8d, 0x6a, 0x2f, 0xfd, 0x68, 0xcd, 0x36, 0x69, 0xde, 0x2b, 0x04, 0x70, 0x09, 0x43, 0xd0, 0xd4, 0x44, 0xae, 0x3d, 0xa8, 0xf0, 0x59, 0x4e, 0x62, 0x61, 0xe5, 0xff, 0xf6, 0x07, 0xf0, 0x4d, 0xf3, 0x1e, 0x3d, 0x9c, 0x91, 0x22, 0xd7, 0x6f, 0xb9, 0x0f, 0x3f, 0x82, 0xc3, 0x93, 0x25, 0x3b, 0x75, 0x20, 0x16, 0x5b, 0xd1, 0xf3, 0x19, 0xab, 0x3b, 0x87, 0x5e, 0xcc, 0x6a, 0xb3, 0xed, 0x02, 0x47, 0xd0, 0x37, 0x70, 0xf8, 0xd6, 0x47, 0x1d, 0x69, 0xcd, 0x13, 0xee, 0x25, 0x7c, 0x1f, 0xc8, 0xb3, 0x0f, 0x19, 0xb9, 0x3f, 0xe4, 0xf2, 0xfc, 0x9c, 0x21, 0x49, 0x28, 0x13, 0xd1, 0xfc, 0x85, 0x2a, 0xf7, 0x0c, 0xdc, 0x63, 0x84, 0xd2, 0xae, 0x55, 0xb9, 0x1e, 0x39, 0xae, 0x6c, 0x3b, 0x19, 0xfd, 0x1a, 0x7d, 0xea, 0xf7, 0x18, 0xc0, 0x5d, 0x57, 0x80, 0x95, 0x96, 0xa2, 0x88, 0xfc, 0x9a, 0xef, 0xb8, 0x15, 0xae, 0xa2, 0x9f, 0xaf, 0x67, 0x83, 0xc0, 0x05, 0x35, 0xfd, 0x71, 0xd6, 0x25, 0x49, 0x40, 0xb7, 0x62, 0xf5, 0x07, 0x26, 0x1f, 0x20, 0x9b, 0xc8, 0xba, 0x94, 0x79, 0xbb, 0x3f, 0x5d, 0x64, 0x64, 0x23, 0x19, 0xcc, 0x31, 0x86, 0x85, 0x9c } -, - /* Encryption */ - 256, - { 0x27, 0x15, 0xd6, 0xeb, 0x53, 0xae, 0xe6, 0xd4, 0xbd, 0xdd, 0x3b, 0xe9, 0xb6, 0x63, 0x14, 0x4a, 0x41, 0x0d, 0x03, 0x81, 0x77, 0x9f, 0x79, 0x9d, 0xca, 0x88, 0x07, 0x92, 0xab, 0x43, 0x1a, 0xf9, 0x98, 0x9d, 0xeb, 0x17, 0x36, 0x9d, 0xc6, 0x74, 0x38, 0xad, 0xd8, 0x2b, 0xdf, 0x0a, 0x59, 0xdd, 0x3b, 0xc2, 0x78, 0x01, 0x02, 0x58, 0xc7, 0xdf, 0x87, 0x69, 0x84, 0xff, 0x52, 0x76, 0x78, 0xbf, 0x9b, 0x34, 0xc0, 0x77, 0x43, 0xb5, 0xd2, 0x2f, 0x4f, 0x30, 0xcb, 0x5d, 0x7d, 0x8a, 0x6c, 0xfd, 0x50, 0x58, 0x24, 0xf2, 0xe0, 0x94, 0x02, 0x4f, 0xb0, 0x43, 0x30, 0xf6, 0x6d, 0xa7, 0xcb, 0xc0, 0x1d, 0x5e, 0xcc, 0x8d, 0xfc, 0xa1, 0xca, 0x9e, 0x50, 0x91, 0xb9, 0xd9, 0xc8, 0xe3, 0x8d, 0x0a, 0xc3, 0x93, 0x1d, 0xe5, 0xd1, 0xfd, 0xc8, 0x33, 0x73, 0x84, 0x82, 0xa7, 0xfd, 0x15, 0x2c, 0x1d, 0x24, 0xe6, 0x9e, 0xa0, 0x1d, 0xd3, 0xe1, 0xfa, 0x77, 0x23, 0x54, 0xa6, 0x07, 0xd6, 0x2c, 0x60, 0xb5, 0x61, 0xdc, 0x5c, 0xcb, 0x01, 0x2b, 0x71, 0x2f, 0x5c, 0x2d, 0xa1, 0x89, 0x2c, 0x31, 0x20, 0xef, 0x99, 0x0d, 0x74, 0x61, 0x1d, 0xdd, 0x35, 0x66, 0xaf, 0x1a, 0xcd, 0x8b, 0x48, 0x50, 0x06, 0x1c, 0x91, 0x28, 0xf8, 0x2a, 0xd1, 0x12, 0xda, 0x9f, 0x68, 0xac, 0x88, 0x39, 0x3f, 0x9a, 0x5c, 0x2c, 0x10, 0x20, 0xaa, 0x77, 0xe9, 0xb6, 0x2e, 0x2d, 0x1e, 0x98, 0x5f, 0xef, 0x86, 0x4c, 0xc1, 0xae, 0xb4, 0x51, 0xac, 0x83, 0x9c, 0x72, 0x0c, 0xb9, 0x73, 0xe7, 0xb5, 0xdf, 0x24, 0xa9, 0x8c, 0xcb, 0x6e, 0x67, 0x72, 0x66, 0x29, 0xa3, 0x66, 0xfe, 0xa3, 0xf9, 0xa9, 0x52, 0x1d, 0xaa, 0x19, 0xb0, 0x44, 0x30, 0xe8, 0x10, 0xf2, 0xc4, 0x5a, 0x57, 0xd4, 0x25, 0x3b, 0xed, 0xb9, 0x1d, 0xa0 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.14", - /* Message */ - 46, - { 0x8d, 0xe0, 0xf5, 0xa4, 0x13, 0xa7, 0xf7, 0x86, 0x39, 0x6f, 0x09, 0xa4, 0x5e, 0x5e, 0x77, 0x4f, 0x3c, 0x60, 0x9c, 0xe6, 0xf1, 0xb4, 0x90, 0xdd, 0xe2, 0x22, 0xb3, 0x22, 0xd5, 0x34, 0x0e, 0x9b, 0x10, 0x55, 0x81, 0xf4, 0xc5, 0xbe, 0x44, 0xea, 0xbb, 0x3d, 0x1b, 0x23, 0xf8, 0x45 } -, - /* Seed */ - 207, - { 0xf8, 0x71, 0xa8, 0x97, 0xae, 0xe8, 0x45, 0xc3, 0xbb, 0x82, 0x69, 0x90, 0xb7, 0x31, 0xd2, 0x77, 0x7c, 0xf4, 0x76, 0xb5, 0xcf, 0xc5, 0x59, 0x6d, 0xf3, 0xa5, 0x23, 0xba, 0x69, 0x79, 0xc7, 0xa4, 0x51, 0x79, 0xda, 0x5f, 0xd6, 0x0f, 0x81, 0x0b, 0xf4, 0x14, 0xc5, 0x4e, 0x18, 0x2f, 0x26, 0x01, 0x72, 0x0f, 0xfe, 0x8a, 0x50, 0xd7, 0xd9, 0xd1, 0x1e, 0x56, 0x43, 0x18, 0xe9, 0x02, 0x6f, 0x07, 0xc5, 0xaa, 0xa1, 0x3e, 0xf8, 0x91, 0x28, 0x3a, 0x96, 0x63, 0xc1, 0xe3, 0xd2, 0x7b, 0x93, 0x81, 0x7d, 0x01, 0xa5, 0x6f, 0xce, 0x33, 0xd5, 0x16, 0x9b, 0xfe, 0xa6, 0x2a, 0x8e, 0xe6, 0xc3, 0x70, 0xa3, 0xaa, 0x8c, 0x71, 0x94, 0xd9, 0xd3, 0x53, 0xd0, 0x98, 0x16, 0x61, 0xfe, 0x85, 0x81, 0x62, 0x50, 0xe0, 0x32, 0x4e, 0xae, 0x1b, 0x84, 0x7f, 0xc7, 0x32, 0x91, 0x91, 0x60, 0xd0, 0x1e, 0x11, 0x92, 0xac, 0x16, 0xbe, 0x0e, 0xb8, 0xe9, 0x95, 0xe4, 0x86, 0x40, 0x27, 0x6a, 0x2d, 0xb7, 0xb8, 0x7f, 0x84, 0xb3, 0xfa, 0xc0, 0x4c, 0xe8, 0x62, 0xf0, 0x22, 0x38, 0x62, 0x3f, 0x62, 0xb9, 0x2a, 0x2e, 0x32, 0x7b, 0x01, 0xb8, 0xc7, 0xb9, 0xe5, 0xec, 0x87, 0x05, 0x5c, 0x6c, 0xb7, 0xb5, 0x56, 0x51, 0xab, 0x5a, 0xc9, 0x89, 0x83, 0x3b, 0x03, 0x4f, 0x8b, 0xe0, 0x11, 0x6f, 0x28, 0xb1, 0xe8, 0x86, 0xa2, 0xce, 0xd1, 0x23, 0x29, 0x8e, 0xb0, 0x04, 0x07, 0x5a, 0x6b, 0x5b, 0x71, 0xb1 } -, - /* Encryption */ - 256, - { 0xd3, 0x67, 0xac, 0xa8, 0xd4, 0xf1, 0x74, 0x14, 0xe9, 0xbf, 0x09, 0xad, 0x81, 0x1d, 0x78, 0xdb, 0x0e, 0x85, 0x0c, 0x45, 0xc8, 0xf9, 0xd7, 0x02, 0x44, 0x75, 0xd3, 0xe5, 0x6e, 0x3c, 0xbf, 0xbe, 0x6e, 0xe8, 0xab, 0xbf, 0xd7, 0x74, 0x58, 0x26, 0x41, 0x7c, 0xc8, 0xed, 0x52, 0xf5, 0x4e, 0x00, 0xa9, 0x2f, 0x81, 0x7e, 0xf9, 0x83, 0xe9, 0x8d, 0x10, 0x0a, 0x1f, 0x99, 0x0d, 0xb1, 0xe2, 0x90, 0xa8, 0x51, 0x6d, 0x60, 0x9b, 0xb3, 0x2e, 0x50, 0x2a, 0x77, 0xe1, 0x1f, 0x76, 0x20, 0x0b, 0x00, 0x25, 0x76, 0x5e, 0x9b, 0xd2, 0x85, 0x9b, 0xa9, 0x4a, 0x69, 0x63, 0x33, 0xa5, 0xeb, 0xe2, 0xeb, 0x25, 0xba, 0x9d, 0x19, 0x00, 0x7f, 0x64, 0x36, 0x0c, 0xc0, 0x75, 0xca, 0xd7, 0xf0, 0x99, 0x50, 0xe4, 0xb7, 0xaf, 0xcb, 0xac, 0x36, 0xe6, 0xec, 0xb0, 0x17, 0xcf, 0x4a, 0x1f, 0x25, 0xa4, 0xd2, 0xb9, 0x51, 0xbb, 0x85, 0xe8, 0x1c, 0xb2, 0xb4, 0xeb, 0x6f, 0x45, 0xcd, 0xd4, 0x00, 0xd2, 0xac, 0x4e, 0x21, 0x69, 0x89, 0x6d, 0x94, 0x15, 0x82, 0x44, 0x9c, 0xe3, 0x0f, 0x69, 0xc1, 0x7c, 0xb4, 0x49, 0x32, 0x1f, 0x65, 0xe4, 0x4d, 0xf3, 0x03, 0x87, 0x86, 0x27, 0x62, 0x13, 0x51, 0xf5, 0x2e, 0x5a, 0x07, 0x52, 0xe3, 0xb5, 0xeb, 0x12, 0x63, 0x61, 0x69, 0x7f, 0x53, 0xcf, 0x24, 0x66, 0x16, 0x5c, 0x3f, 0xbd, 0x66, 0x2b, 0x83, 0x75, 0x80, 0xb7, 0x6d, 0x45, 0x9f, 0xf0, 0x44, 0x97, 0xe5, 0xfe, 0x1b, 0x3c, 0xd1, 0x8c, 0x4d, 0x58, 0xff, 0xed, 0xab, 0xdd, 0x04, 0xa8, 0xc1, 0x08, 0xd8, 0x59, 0xb6, 0x52, 0x98, 0x63, 0x9c, 0x3a, 0xf8, 0x0c, 0xd9, 0x4e, 0x23, 0x87, 0xa8, 0x69, 0x44, 0x09, 0xef, 0x9e, 0x0b, 0x78, 0xb6, 0xf4, 0x67, 0x39, 0x0b, 0xe1, 0x08, 0x57, 0x9c, 0x9b, 0x2c } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.15", - /* Message */ - 32, - { 0x9e, 0x78, 0xc8, 0x2b, 0xfd, 0x0f, 0x23, 0xd3, 0x91, 0xe7, 0x60, 0x01, 0x64, 0x01, 0x9a, 0xad, 0x28, 0xf5, 0x9b, 0x14, 0x15, 0x44, 0x04, 0xd9, 0xe9, 0x66, 0x13, 0x3c, 0x10, 0x3f, 0xc3, 0x7c } -, - /* Seed */ - 221, - { 0xbb, 0x42, 0x24, 0x7d, 0xb2, 0x40, 0xba, 0xca, 0xcb, 0xcb, 0xe8, 0xc6, 0x8c, 0xb0, 0xf7, 0x0e, 0x46, 0x0a, 0x49, 0x73, 0xda, 0xe6, 0x56, 0x99, 0x35, 0x8f, 0xef, 0x82, 0x70, 0xd6, 0x5c, 0x3d, 0x0c, 0x45, 0x5a, 0x37, 0x9c, 0x56, 0x3c, 0x59, 0x7b, 0x28, 0xf4, 0xff, 0xa0, 0x70, 0xe0, 0xec, 0x1e, 0xbb, 0x9e, 0xd4, 0x27, 0xfe, 0x89, 0xab, 0xcd, 0x47, 0x93, 0xc4, 0x22, 0xc3, 0x38, 0x87, 0x8c, 0x8b, 0x14, 0x5b, 0x46, 0xc4, 0xf7, 0x13, 0x78, 0xa0, 0xfd, 0x7d, 0x50, 0x53, 0xb8, 0x67, 0x98, 0xbc, 0x02, 0xd9, 0x32, 0x93, 0xfe, 0xd8, 0x47, 0xf1, 0x8f, 0xe0, 0x61, 0x59, 0x07, 0x4a, 0xc1, 0x89, 0xd9, 0x56, 0x23, 0x20, 0x74, 0xdb, 0x6d, 0xdc, 0xf9, 0x94, 0x1a, 0x70, 0xf2, 0x8b, 0x60, 0xe4, 0x83, 0x39, 0x5a, 0x2d, 0x21, 0x01, 0x54, 0xb6, 0x2a, 0xba, 0xb8, 0x75, 0x0f, 0x5a, 0xeb, 0xf1, 0xac, 0xef, 0xe2, 0x05, 0x6f, 0x5a, 0xbd, 0x2f, 0x0e, 0x0e, 0xc4, 0x94, 0xaf, 0xa8, 0x2f, 0xc5, 0x9b, 0xb3, 0x57, 0xf1, 0x16, 0xa9, 0x4e, 0xc1, 0xcd, 0x06, 0x03, 0xb5, 0x2f, 0xe5, 0x6d, 0x31, 0xa4, 0x3b, 0x87, 0xaa, 0x63, 0x77, 0x88, 0xc7, 0x24, 0xcb, 0x6f, 0x88, 0x37, 0x3c, 0x92, 0xf6, 0x07, 0x11, 0xbf, 0x3f, 0x35, 0x94, 0xe2, 0x3d, 0xee, 0x2f, 0xec, 0xed, 0xfe, 0x6f, 0x5f, 0xc8, 0x86, 0xe9, 0x6a, 0xee, 0x7c, 0x74, 0x68, 0x22, 0xe5, 0x6c, 0xba, 0x7e, 0xbd, 0xaa, 0x2a, 0x92, 0x10, 0xea, 0x81, 0x98, 0xe4, 0xc2, 0x2d, 0xe9, 0x29, 0x89, 0x45 } -, - /* Encryption */ - 256, - { 0x81, 0x8d, 0xcb, 0xba, 0x98, 0xc3, 0x46, 0x79, 0x3c, 0x79, 0xd4, 0xbb, 0x78, 0x5a, 0xa6, 0x40, 0x19, 0x1b, 0x05, 0xf8, 0x83, 0x5f, 0xf7, 0x39, 0x74, 0x44, 0x3b, 0xce, 0x35, 0x7a, 0x26, 0x9d, 0x44, 0x64, 0x6e, 0x8c, 0x79, 0x10, 0x2d, 0xce, 0x22, 0x92, 0x39, 0x78, 0xa3, 0x94, 0x1e, 0xbc, 0xb9, 0x90, 0x4f, 0xc1, 0xbb, 0x1f, 0xb4, 0x3f, 0x11, 0x27, 0x5e, 0x71, 0xeb, 0x7a, 0x84, 0xd2, 0x74, 0xbe, 0x10, 0x4b, 0x00, 0xaf, 0x92, 0x25, 0xe2, 0xa4, 0xf7, 0xf5, 0xa0, 0x48, 0xab, 0xb6, 0x6c, 0xba, 0xb6, 0x52, 0x5d, 0x1b, 0x11, 0x5d, 0xa8, 0xc0, 0xbb, 0x08, 0xde, 0xea, 0xec, 0x7f, 0x80, 0xeb, 0x6c, 0x39, 0x50, 0x4d, 0xc4, 0xeb, 0x38, 0x15, 0x4c, 0xe4, 0xb6, 0x91, 0xb4, 0x06, 0x93, 0x19, 0xb2, 0x93, 0xc2, 0x5d, 0xc3, 0x0b, 0x8f, 0xb3, 0x8b, 0xca, 0x15, 0x3e, 0x2f, 0xa6, 0x1b, 0x33, 0x76, 0xdd, 0xc3, 0xc5, 0x3a, 0x57, 0x93, 0x21, 0xd9, 0x10, 0xa1, 0x71, 0xfc, 0x42, 0xaa, 0xf1, 0x70, 0x50, 0xed, 0x6d, 0x31, 0x1a, 0x7d, 0xf5, 0xb9, 0xa5, 0xcf, 0x3a, 0x98, 0xfd, 0x69, 0xaa, 0x85, 0xac, 0x23, 0x46, 0xc1, 0x6f, 0xa0, 0x3b, 0x1e, 0x53, 0xd1, 0x03, 0xd6, 0xf5, 0xa0, 0x4b, 0x0d, 0x9d, 0x3f, 0x18, 0x83, 0x53, 0x1e, 0x2f, 0x63, 0x41, 0xfd, 0x91, 0xbd, 0x63, 0xa5, 0xaa, 0x99, 0x3b, 0x6e, 0xdb, 0x99, 0x92, 0xe5, 0xdb, 0x17, 0xa7, 0xbe, 0x55, 0x5e, 0xaf, 0xa3, 0xbb, 0xab, 0x32, 0x08, 0x6e, 0x92, 0xb8, 0xb7, 0x91, 0x06, 0x69, 0x68, 0xe0, 0x0f, 0x8a, 0x17, 0x71, 0x61, 0x44, 0x0c, 0xe5, 0x38, 0x57, 0x97, 0x89, 0xc2, 0x91, 0x2e, 0xbd, 0x7a, 0xd0, 0x19, 0xbe, 0x29, 0x37, 0x6c, 0xad, 0xee, 0xc2, 0x99, 0x21, 0x07, 0xc9, 0xdb, 0x07, 0x60, 0x49 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.16", - /* Message */ - 47, - { 0x6d, 0x72, 0x08, 0xb2, 0xff, 0xb0, 0x1a, 0xd2, 0x36, 0x0c, 0x46, 0x09, 0xf3, 0xba, 0xd3, 0x15, 0x79, 0xc8, 0xd4, 0x00, 0x5c, 0xc9, 0x60, 0x14, 0x2e, 0x2b, 0x69, 0x6b, 0x26, 0xe9, 0x4f, 0x2d, 0x99, 0x98, 0x0b, 0xad, 0x38, 0x41, 0x05, 0xb1, 0x89, 0x95, 0x57, 0xaf, 0x89, 0x05, 0x25 } -, - /* Seed */ - 206, - { 0x72, 0xae, 0x49, 0x97, 0x18, 0x28, 0xba, 0x54, 0x23, 0xab, 0x96, 0x3c, 0xdb, 0x18, 0xf4, 0xbd, 0xfd, 0xbc, 0x74, 0x73, 0xcf, 0x70, 0xfb, 0x77, 0x21, 0x34, 0x41, 0xf1, 0xd4, 0x46, 0xae, 0x48, 0x10, 0x93, 0x03, 0xa2, 0x60, 0xc0, 0x91, 0xab, 0x51, 0x99, 0xd9, 0x64, 0xe6, 0x21, 0x63, 0xc2, 0x46, 0x57, 0x24, 0x71, 0x73, 0xcb, 0x05, 0x11, 0xb9, 0xcb, 0xb1, 0x63, 0x45, 0x9c, 0x95, 0x6f, 0x9c, 0x0b, 0x18, 0x83, 0xb6, 0x91, 0xb5, 0xe4, 0xea, 0xe0, 0x4f, 0x0a, 0xf2, 0x4e, 0xa3, 0x28, 0xc6, 0xde, 0x88, 0x2c, 0xeb, 0xc4, 0xf8, 0x9a, 0x56, 0x37, 0x32, 0x82, 0xd6, 0x0a, 0xf2, 0xba, 0x96, 0x7e, 0x25, 0x7a, 0xc4, 0x01, 0xa3, 0x7f, 0x94, 0x41, 0xc1, 0x1f, 0x2e, 0x0e, 0x42, 0x1b, 0x2d, 0x15, 0x1e, 0xb2, 0x43, 0xa9, 0x7e, 0xae, 0x5a, 0xaa, 0x86, 0xcd, 0x38, 0xdf, 0x43, 0xc2, 0x6a, 0x1d, 0x6e, 0x3b, 0x12, 0xc1, 0x3f, 0xa3, 0x59, 0x7b, 0x85, 0xbb, 0xaa, 0x13, 0x09, 0x45, 0x2c, 0x7e, 0x9b, 0x32, 0x5d, 0x8c, 0x73, 0xfa, 0x79, 0x9c, 0x57, 0x56, 0x52, 0x73, 0x7b, 0x92, 0xa2, 0x47, 0xd2, 0x3c, 0x4c, 0x70, 0x12, 0x40, 0xc5, 0x3d, 0xcf, 0xe2, 0xea, 0x69, 0x7a, 0xf6, 0x1c, 0x07, 0x2f, 0xa7, 0x6b, 0xdb, 0x05, 0x2a, 0x58, 0xc9, 0x19, 0xe6, 0x9e, 0xc5, 0x7b, 0x39, 0xa2, 0xa6, 0xc4, 0x7d, 0x77, 0x0e, 0xde, 0x67, 0x10, 0xfc, 0x7b, 0xdd, 0xe6, 0x01 } -, - /* Encryption */ - 256, - { 0x4b, 0x56, 0xdc, 0xd3, 0x04, 0xbd, 0xc7, 0xf0, 0xcc, 0xb7, 0x0d, 0x2c, 0x58, 0x6f, 0x52, 0x74, 0x60, 0x1e, 0xe6, 0x05, 0x36, 0xbb, 0x21, 0x80, 0x61, 0x67, 0x13, 0x50, 0xd6, 0xd3, 0xae, 0x2e, 0x28, 0x4f, 0x07, 0xb5, 0xed, 0x63, 0x01, 0x79, 0x26, 0x94, 0x13, 0x12, 0x2b, 0x98, 0x37, 0x60, 0x90, 0xf7, 0xa4, 0xa4, 0xf6, 0x43, 0x4a, 0xf7, 0x3a, 0xc4, 0x0c, 0x7a, 0xf4, 0xb6, 0xd7, 0xa3, 0xe3, 0x14, 0x70, 0x2a, 0xb9, 0xb8, 0x5e, 0x08, 0x73, 0x1d, 0xa0, 0xd1, 0x2e, 0xd3, 0xf0, 0x07, 0x0b, 0x0d, 0x20, 0x95, 0x05, 0x3b, 0x3f, 0x0d, 0x09, 0xd6, 0xc2, 0xcd, 0x8f, 0x98, 0xba, 0xde, 0xd9, 0x11, 0x48, 0xc3, 0x5b, 0x7b, 0x33, 0xc5, 0x43, 0x65, 0x3c, 0xcc, 0x32, 0xd8, 0x36, 0xf5, 0xf7, 0xf2, 0xee, 0x39, 0xca, 0xbd, 0x0b, 0xd8, 0x9d, 0xd9, 0xa4, 0xa9, 0x4e, 0x91, 0x2b, 0x4c, 0xa9, 0x7f, 0x18, 0x51, 0xd0, 0x17, 0x45, 0x1f, 0x60, 0x96, 0xac, 0xbf, 0x20, 0xa6, 0x5e, 0xc5, 0xa2, 0x9f, 0x08, 0xf8, 0x13, 0x5c, 0x73, 0x18, 0xa2, 0x21, 0x6d, 0x1b, 0x7d, 0x10, 0x37, 0x95, 0xc7, 0xec, 0x8e, 0xe5, 0x7a, 0x79, 0x28, 0x0f, 0x9a, 0x84, 0x4b, 0xd6, 0xab, 0x71, 0x28, 0x82, 0x0e, 0x1f, 0xb5, 0xe8, 0x25, 0x54, 0xfe, 0xc0, 0x2a, 0x78, 0xaa, 0x8d, 0x3f, 0xd6, 0xa1, 0x3e, 0x0f, 0xad, 0x0e, 0xce, 0xe7, 0xab, 0x61, 0x1d, 0xe4, 0xb0, 0xa0, 0x48, 0x1f, 0x42, 0xb8, 0xd0, 0xb5, 0x5c, 0xb8, 0x81, 0x3d, 0x1c, 0xa6, 0xe2, 0x61, 0x5c, 0xf5, 0xae, 0x8a, 0xe8, 0x6d, 0x0b, 0x5d, 0x46, 0x95, 0x50, 0x75, 0x49, 0xf7, 0xa3, 0x73, 0x66, 0xa4, 0x45, 0xfb, 0x55, 0xb7, 0xc4, 0xb6, 0xb5, 0x8e, 0xa6, 0x99, 0xdb, 0xe5, 0xdd, 0xc8, 0x19, 0x3e, 0x2b, 0xf3, 0xd5, 0xb8, 0x40 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.17", - /* Message */ - 15, - { 0x7d, 0xeb, 0x6d, 0x40, 0x41, 0x48, 0x23, 0x2c, 0x48, 0x21, 0x63, 0x4d, 0x3d, 0xf9, 0xbc } -, - /* Seed */ - 238, - { 0xe6, 0xf8, 0x3c, 0x8c, 0x99, 0x3e, 0x60, 0x15, 0xaf, 0x43, 0x04, 0x09, 0x68, 0x4e, 0x62, 0x7f, 0x3d, 0x9b, 0x84, 0xad, 0x05, 0x55, 0xc6, 0xa6, 0xc0, 0x91, 0x13, 0xa7, 0x12, 0x47, 0x2a, 0xbb, 0x36, 0xf6, 0x11, 0x92, 0x32, 0x6c, 0xf8, 0x40, 0x82, 0xaa, 0xbd, 0x1e, 0xc9, 0x5f, 0x4d, 0x1a, 0x92, 0xd9, 0x10, 0x7e, 0x30, 0x61, 0x0c, 0x8d, 0x27, 0x59, 0x55, 0x6d, 0x5d, 0x61, 0x47, 0x5c, 0xa3, 0xf3, 0xcb, 0xd9, 0x49, 0xfa, 0xc2, 0x20, 0x3c, 0x42, 0x3d, 0x56, 0xc2, 0x75, 0x58, 0xe6, 0x11, 0x8f, 0xaa, 0x0f, 0x6f, 0x68, 0x4a, 0xda, 0x13, 0xc3, 0x15, 0x3f, 0x6d, 0x25, 0x53, 0x38, 0xbf, 0xf7, 0x34, 0xe9, 0x5f, 0x60, 0xad, 0x29, 0x19, 0xab, 0xf2, 0x88, 0x15, 0xd3, 0xcc, 0x0b, 0x1e, 0xfd, 0x38, 0x5d, 0x0d, 0x45, 0x81, 0xb0, 0xee, 0x84, 0x94, 0xf2, 0xbb, 0xe2, 0x99, 0x59, 0x91, 0xac, 0x1e, 0xa8, 0x15, 0x40, 0xcb, 0x7e, 0x88, 0x56, 0x68, 0xe5, 0xa5, 0x2e, 0xca, 0x90, 0x57, 0xed, 0x9a, 0x1f, 0xb2, 0x3f, 0xdf, 0x83, 0xb5, 0x75, 0x51, 0x35, 0x8c, 0x23, 0xcd, 0x43, 0xce, 0x0e, 0x7a, 0x33, 0xc7, 0x25, 0x66, 0xb8, 0x8f, 0xe5, 0x93, 0x43, 0xf1, 0x87, 0x24, 0x46, 0xd3, 0x2c, 0x44, 0xb3, 0x99, 0x0a, 0xa4, 0xdb, 0x3e, 0xe5, 0x93, 0x42, 0x4c, 0x8e, 0x09, 0x46, 0xd2, 0x61, 0xe3, 0x27, 0x0e, 0xf4, 0x07, 0x6b, 0xb3, 0x5d, 0xf3, 0xc3, 0xc6, 0xda, 0x4b, 0xbe, 0x42, 0x3f, 0x59, 0x1b, 0x5c, 0x93, 0xba, 0x56, 0xc5, 0xcf, 0x01, 0xd4, 0xf0, 0xa9, 0x40, 0x96, 0x71, 0x09, 0xd3, 0x9b, 0x93, 0x9d, 0xf2, 0x82, 0x53, 0x2e, 0x54, 0x83, 0x10, 0x8b } -, - /* Encryption */ - 256, - { 0xaa, 0x6e, 0x6e, 0x4a, 0xf6, 0x89, 0x26, 0x4d, 0x61, 0xbf, 0xa8, 0xf5, 0x08, 0x6d, 0x82, 0x79, 0xdd, 0xc2, 0x28, 0x9c, 0x55, 0x41, 0xaf, 0x45, 0x35, 0x19, 0xc4, 0x4b, 0x95, 0xea, 0xe6, 0xa1, 0x5e, 0x7e, 0x7b, 0xd1, 0x5f, 0xd3, 0x1a, 0x4f, 0xad, 0x5f, 0x7c, 0x85, 0x90, 0x5e, 0xfc, 0xa2, 0x26, 0x93, 0x0d, 0x67, 0xda, 0xf5, 0x58, 0xb7, 0x15, 0xb2, 0x1f, 0x36, 0x28, 0xf6, 0x1a, 0x3b, 0x04, 0x2c, 0x1a, 0x38, 0xf9, 0xaf, 0x3a, 0xda, 0x82, 0xec, 0x44, 0x88, 0xc8, 0xad, 0xe5, 0xf1, 0xda, 0x81, 0xe1, 0xa8, 0xab, 0x90, 0xe1, 0xb3, 0x12, 0xdc, 0xda, 0x83, 0x5f, 0x9e, 0x92, 0x5f, 0x2e, 0x72, 0x46, 0x3f, 0xa8, 0x33, 0xa0, 0x8b, 0x93, 0x25, 0x3f, 0xdf, 0xe8, 0xcf, 0x4e, 0x5f, 0x3c, 0xfa, 0x91, 0x10, 0x77, 0x19, 0xa6, 0xa9, 0x46, 0x9a, 0xcd, 0x71, 0x25, 0xae, 0x67, 0xb2, 0xbd, 0x75, 0x85, 0x7c, 0x59, 0xbe, 0x0a, 0xbe, 0x98, 0x40, 0x74, 0xe2, 0x95, 0x47, 0x8a, 0xf2, 0x74, 0x0e, 0x25, 0x89, 0x4e, 0x56, 0xa6, 0x25, 0x0e, 0xf7, 0x36, 0x21, 0x94, 0x13, 0x81, 0x03, 0x74, 0x3c, 0xa9, 0x54, 0x47, 0x33, 0xd2, 0x50, 0x55, 0x71, 0xbe, 0xe0, 0x0f, 0x17, 0x8a, 0x2c, 0xfa, 0x38, 0xe1, 0xf8, 0xf2, 0x2f, 0xb2, 0x39, 0x30, 0xd6, 0xa7, 0x5d, 0xd1, 0x7c, 0x68, 0x9a, 0x47, 0x6d, 0x87, 0x15, 0x31, 0x85, 0x95, 0x10, 0x8f, 0xcc, 0xe8, 0x95, 0xe3, 0x44, 0x9e, 0xca, 0x97, 0xa7, 0xdd, 0xba, 0xe3, 0xe6, 0xd6, 0xf0, 0xe3, 0x5e, 0x66, 0x6d, 0x6f, 0xbd, 0x78, 0x78, 0x48, 0xf8, 0x68, 0x13, 0x37, 0xb1, 0xd4, 0xc5, 0x23, 0x8b, 0x1c, 0x24, 0xde, 0x77, 0xa7, 0xe6, 0x75, 0xe7, 0xae, 0xd8, 0xdc, 0x13, 0xdd, 0x9e, 0xb1, 0x06, 0x87, 0x98, 0x51, 0x7c, 0x0b, 0x6e } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.18", - /* Message */ - 30, - { 0x03, 0x1f, 0xc3, 0xa3, 0xea, 0xa4, 0x2b, 0x0d, 0x9f, 0x6d, 0x7d, 0xd5, 0x99, 0x3d, 0x61, 0x89, 0xcb, 0xb2, 0xe0, 0xe9, 0x6f, 0xaa, 0x33, 0xd6, 0x1f, 0x31, 0x7b, 0x6b, 0x3c, 0x00 } -, - /* Seed */ - 223, - { 0x16, 0xab, 0x64, 0x85, 0xca, 0xc0, 0x39, 0x71, 0x14, 0x88, 0x0e, 0x6f, 0x72, 0xbc, 0x1f, 0x1e, 0xf3, 0x4b, 0xa2, 0x7d, 0x1c, 0x43, 0x3d, 0x77, 0xf3, 0x37, 0x2b, 0x1f, 0xd5, 0xb2, 0x1b, 0xa5, 0x7a, 0x50, 0x5c, 0xd8, 0xf3, 0x5b, 0x75, 0x24, 0x2c, 0xf1, 0xb7, 0x6d, 0x38, 0x1c, 0x68, 0x34, 0x24, 0x01, 0xee, 0xef, 0xc8, 0x42, 0x53, 0xa2, 0xde, 0x1a, 0x19, 0x13, 0xe4, 0x38, 0x77, 0x3b, 0x7b, 0xcb, 0x31, 0xcb, 0xab, 0x25, 0x8f, 0x72, 0x6a, 0xc9, 0x34, 0xa8, 0x71, 0x26, 0x96, 0x9a, 0xdb, 0x7f, 0x76, 0x8c, 0x1b, 0xab, 0x87, 0x54, 0xa1, 0x3a, 0x3c, 0xcb, 0xba, 0x6f, 0x3d, 0xd8, 0xd0, 0xec, 0x6a, 0x7c, 0x6d, 0x68, 0x7d, 0x04, 0x95, 0xb6, 0xe2, 0x2c, 0x9a, 0xe7, 0x67, 0xaf, 0xc9, 0xd9, 0x4f, 0x2e, 0x45, 0xa1, 0x06, 0x13, 0x3c, 0x42, 0xc7, 0x9b, 0x52, 0xc2, 0x6a, 0xd4, 0xb6, 0x7b, 0xd8, 0xec, 0xe5, 0x5e, 0x84, 0x32, 0x5c, 0xa6, 0xf4, 0x9c, 0x8e, 0x95, 0x31, 0xf5, 0xf6, 0xb9, 0xca, 0xc3, 0x5c, 0x93, 0x3e, 0xeb, 0xe3, 0xb9, 0xa1, 0x1b, 0x9b, 0xb1, 0xc9, 0xea, 0x8c, 0xe6, 0xd2, 0x28, 0x5d, 0xa9, 0x08, 0xe5, 0x91, 0x97, 0x82, 0xb5, 0xb3, 0x08, 0xfe, 0x47, 0x8d, 0x98, 0xe4, 0x9a, 0xea, 0x54, 0x3b, 0xf8, 0xca, 0x1b, 0x22, 0xed, 0xf4, 0x3f, 0xdb, 0xf6, 0xaf, 0x31, 0xcc, 0x8c, 0xd4, 0xfb, 0x7d, 0xe2, 0xd8, 0x19, 0xaf, 0xa5, 0x48, 0x3e, 0xac, 0xdd, 0x56, 0xd7, 0x78, 0x7b, 0xc8, 0xbb, 0x16, 0x22, 0x38, 0x40, 0x49, 0xbc, 0x30, 0x9a, 0x66 } -, - /* Encryption */ - 256, - { 0x61, 0xc7, 0x54, 0x76, 0x30, 0x43, 0xb5, 0x84, 0xe4, 0xa8, 0x54, 0x6b, 0x79, 0xf0, 0xa3, 0xe2, 0xe0, 0xf3, 0xb3, 0xe2, 0xdb, 0x6c, 0x94, 0xad, 0x81, 0x7e, 0x92, 0x81, 0xf4, 0x85, 0xc0, 0x82, 0x08, 0xfe, 0xd4, 0xf4, 0xd7, 0xd0, 0xa7, 0x8c, 0x6c, 0x31, 0x1a, 0x07, 0xc7, 0x5b, 0x9b, 0xbe, 0x85, 0x04, 0xf4, 0xb7, 0xa6, 0x92, 0x99, 0x02, 0x16, 0xde, 0x12, 0x58, 0x5c, 0x00, 0x9a, 0xe5, 0x8c, 0x26, 0xf0, 0x85, 0x07, 0x1f, 0x39, 0x5e, 0x5a, 0xf8, 0x92, 0x5f, 0x39, 0x33, 0xf6, 0xd9, 0xf4, 0x12, 0xd4, 0x25, 0x54, 0x64, 0x54, 0xe8, 0x00, 0xb7, 0xe3, 0xaa, 0xc7, 0x8b, 0x7a, 0x08, 0xb9, 0x2e, 0x79, 0x8b, 0xb8, 0x34, 0xeb, 0xea, 0xdc, 0x4b, 0x4a, 0x63, 0x56, 0xaf, 0x1c, 0xa0, 0x9b, 0xf5, 0x86, 0x74, 0x5f, 0x61, 0x6d, 0x51, 0x74, 0x8c, 0xc7, 0xa3, 0x7b, 0x48, 0xcb, 0x10, 0x97, 0x7e, 0x30, 0x3b, 0xbe, 0x10, 0xbf, 0x27, 0xc6, 0x9b, 0xdf, 0xf0, 0xba, 0x5c, 0xab, 0x8f, 0x62, 0xd0, 0x58, 0x7a, 0x09, 0xd6, 0xe0, 0x22, 0x82, 0x32, 0x33, 0xc8, 0xc7, 0xaa, 0x41, 0x87, 0x22, 0x23, 0xed, 0x15, 0xa7, 0x4a, 0xcc, 0xb0, 0xf1, 0xf8, 0x22, 0xf2, 0x4d, 0x75, 0x94, 0xed, 0x99, 0x25, 0xa1, 0xc6, 0xc0, 0xc0, 0xf9, 0xad, 0x0e, 0x07, 0x1e, 0xb6, 0xb5, 0xeb, 0xe1, 0xba, 0xb6, 0xba, 0x3b, 0x6d, 0x99, 0xa3, 0x16, 0x52, 0x04, 0x7f, 0x46, 0x92, 0x60, 0xbe, 0xe8, 0x71, 0x0e, 0x37, 0x0f, 0x04, 0xed, 0x70, 0x75, 0x93, 0x93, 0x7a, 0x08, 0xdd, 0x82, 0x26, 0x49, 0x92, 0x31, 0x1f, 0x4a, 0xf9, 0x88, 0x4c, 0xf8, 0xad, 0x34, 0xaf, 0xb9, 0xf6, 0x75, 0x99, 0x3c, 0x8a, 0xbf, 0x41, 0x51, 0x98, 0x39, 0xf7, 0x6f, 0xa1, 0xe9, 0x31, 0xbd, 0xae, 0x1d, 0x08, 0xa6, 0x34 } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.19", - /* Message */ - 43, - { 0xc9, 0xc9, 0x3a, 0xfe, 0xa9, 0x97, 0xb1, 0xee, 0x36, 0xfa, 0x72, 0x72, 0x03, 0x54, 0xc7, 0x04, 0x64, 0x9b, 0xc6, 0xef, 0x44, 0xf5, 0x18, 0x7c, 0x6c, 0x28, 0x54, 0x2b, 0x9a, 0xe9, 0x55, 0xa7, 0x19, 0x3f, 0xff, 0xec, 0x86, 0x7b, 0xb6, 0x2e, 0x21, 0x9e, 0x68 } -, - /* Seed */ - 210, - { 0x52, 0xd4, 0xc3, 0xbf, 0x0c, 0x77, 0x2c, 0x02, 0xd3, 0xbb, 0x71, 0x1d, 0x7f, 0x14, 0x6d, 0x8c, 0x49, 0x76, 0xf8, 0x30, 0x81, 0xbe, 0x49, 0x53, 0xd4, 0xaf, 0xeb, 0x07, 0x8e, 0x54, 0x12, 0xa3, 0x2c, 0x3d, 0xc7, 0x37, 0xb5, 0x9b, 0xc4, 0x54, 0xc3, 0xde, 0x93, 0xa1, 0xae, 0xd0, 0x7c, 0x1b, 0xa6, 0x4d, 0x1d, 0xe4, 0x36, 0x80, 0x14, 0xd0, 0x4f, 0x64, 0x40, 0x55, 0x6a, 0x4a, 0x16, 0x97, 0x9d, 0x08, 0x03, 0xcc, 0x29, 0x22, 0xda, 0x97, 0xed, 0x67, 0x61, 0x90, 0x12, 0xf8, 0xf7, 0xd3, 0xb1, 0xa4, 0x55, 0x84, 0xb0, 0x94, 0x6a, 0xf6, 0xdb, 0xd4, 0xa0, 0x85, 0x7d, 0x4c, 0x2d, 0xb9, 0x9a, 0x17, 0xbb, 0xd2, 0x7a, 0xcd, 0x9a, 0x62, 0xe6, 0x7f, 0x88, 0x79, 0xdb, 0xef, 0x27, 0xf1, 0x04, 0x6a, 0x86, 0x7e, 0x69, 0x95, 0x16, 0x2b, 0x2a, 0x1a, 0x1c, 0xcc, 0xdc, 0xea, 0xf4, 0x5b, 0xe1, 0x33, 0x7e, 0x5f, 0xa8, 0xf8, 0x5e, 0xda, 0xad, 0xf7, 0x50, 0x8d, 0x58, 0xf3, 0x26, 0xaa, 0x7c, 0xf3, 0x01, 0xf4, 0x41, 0xba, 0x55, 0x8b, 0x60, 0xe0, 0xfa, 0xc6, 0xe0, 0xd1, 0x99, 0x20, 0x61, 0xa0, 0xa4, 0x69, 0xbe, 0x02, 0x16, 0x26, 0x89, 0x0e, 0xe8, 0x7e, 0x68, 0x13, 0x9b, 0xd5, 0x19, 0xae, 0x77, 0x3e, 0x3e, 0xc4, 0x81, 0xb7, 0xf2, 0xb3, 0x77, 0x33, 0x1f, 0x52, 0xf2, 0xe3, 0x86, 0x88, 0x4f, 0x76, 0x57, 0x23, 0xe2, 0x6c, 0xd4, 0xa8, 0xd9, 0x68, 0x61, 0x4c, 0x9c, 0x33, 0xdc, 0xdb } -, - /* Encryption */ - 256, - { 0xd0, 0x68, 0x67, 0x02, 0x2a, 0x0f, 0xaf, 0x57, 0x3d, 0x62, 0xcc, 0x24, 0xa6, 0xe0, 0x6a, 0x44, 0xcd, 0x3d, 0x83, 0xea, 0xc5, 0xd0, 0x80, 0x9e, 0xbf, 0x91, 0x30, 0x45, 0x68, 0xcb, 0x1b, 0x27, 0x56, 0x1b, 0xb2, 0x92, 0xe8, 0x77, 0x6e, 0x21, 0x6d, 0x1d, 0x02, 0x3e, 0x75, 0x3c, 0x12, 0x4b, 0x51, 0x86, 0x7b, 0x94, 0xdc, 0x60, 0x89, 0x4d, 0x62, 0xc7, 0xda, 0xe5, 0xfa, 0x1a, 0x9f, 0xaf, 0x03, 0x76, 0xe1, 0x75, 0x8c, 0xb6, 0xad, 0xc7, 0x14, 0x17, 0xe8, 0x31, 0x02, 0x52, 0x8f, 0x23, 0xf4, 0xc5, 0xe5, 0xb5, 0x03, 0x62, 0xa3, 0x9e, 0x2a, 0xa9, 0x76, 0x8b, 0x10, 0x62, 0x08, 0x6f, 0xa8, 0xc5, 0x3f, 0xf1, 0xc3, 0x9a, 0x0e, 0xe0, 0x3d, 0x38, 0x3d, 0x24, 0xbf, 0x49, 0x07, 0x22, 0xb7, 0x86, 0xda, 0xec, 0x90, 0x8c, 0xd7, 0x15, 0x1e, 0x18, 0x5d, 0xdd, 0x17, 0x88, 0x26, 0x78, 0x02, 0x7e, 0x36, 0x8b, 0x05, 0x12, 0xcf, 0x98, 0x41, 0x3f, 0x3e, 0x59, 0x6f, 0xa3, 0xdb, 0x4e, 0xc1, 0x96, 0xae, 0x5f, 0xf5, 0x24, 0xa8, 0x26, 0x6d, 0x76, 0x0e, 0x00, 0x51, 0x43, 0x3d, 0x18, 0x98, 0xff, 0xc2, 0x30, 0xe9, 0x6a, 0x2f, 0x0b, 0xfd, 0xf2, 0xb2, 0x44, 0x29, 0xad, 0xfa, 0x91, 0x8a, 0xba, 0x1a, 0x45, 0x0f, 0x76, 0x78, 0x34, 0x72, 0x30, 0x12, 0x93, 0x84, 0x8b, 0xd8, 0x2d, 0x5a, 0x33, 0x84, 0x31, 0xd6, 0xcb, 0x1c, 0x10, 0x6d, 0xc7, 0x41, 0xd2, 0x34, 0xbf, 0x5a, 0x80, 0xdb, 0xd3, 0x25, 0xda, 0x64, 0xa3, 0x94, 0xa0, 0x06, 0x5f, 0x22, 0x02, 0x8d, 0x0f, 0xdc, 0x5a, 0xdf, 0x0d, 0x0d, 0xe2, 0x9f, 0x22, 0xfb, 0x8c, 0x2a, 0x41, 0x33, 0x1f, 0xe1, 0xfc, 0xb6, 0x15, 0x89, 0xe0, 0xec, 0x75, 0x00, 0xed, 0x84, 0x42, 0xd6, 0x18, 0x46, 0xdf, 0x6c, 0xca, 0x46, 0xcc } - -} -, -{ - "PKCS#1 v1.5 Encryption Example 15.20", - /* Message */ - 22, - { 0x69, 0xb7, 0x64, 0x48, 0x55, 0xf9, 0x1d, 0x1c, 0x61, 0xc8, 0x49, 0x8e, 0x4b, 0xa1, 0xba, 0x4d, 0x84, 0x5b, 0xa8, 0x82, 0xb1, 0x73 } -, - /* Seed */ - 231, - { 0xb2, 0x2f, 0xc7, 0xde, 0x85, 0xc5, 0xf7, 0x5a, 0x2f, 0x32, 0xaf, 0x1b, 0xfb, 0xcd, 0x57, 0x89, 0x71, 0x56, 0x87, 0xde, 0x06, 0xe6, 0x6d, 0x06, 0x4a, 0xe3, 0xeb, 0x8d, 0xfb, 0x07, 0xa2, 0x57, 0x5b, 0xe0, 0xe9, 0xe6, 0xf2, 0x9f, 0x50, 0xd7, 0x39, 0x6d, 0x07, 0x8b, 0x36, 0xef, 0x80, 0x2f, 0x75, 0x1a, 0x77, 0xcc, 0x92, 0xd7, 0x61, 0x4c, 0x91, 0xdd, 0x27, 0x99, 0x31, 0xfc, 0xe0, 0x07, 0xeb, 0xf9, 0x15, 0xa0, 0xf1, 0x4e, 0x31, 0x2c, 0xe9, 0x1f, 0xe5, 0xaa, 0x6f, 0xb3, 0x74, 0x51, 0x61, 0x4f, 0xe3, 0x7c, 0x73, 0xfc, 0x6f, 0x6d, 0x6f, 0x8e, 0x52, 0x78, 0x9b, 0x5d, 0x88, 0xe8, 0x6b, 0xeb, 0x16, 0x33, 0xf5, 0xdd, 0xd5, 0xc0, 0x70, 0xf1, 0x4f, 0xd3, 0xcf, 0xee, 0x97, 0xdd, 0x4a, 0x64, 0x3d, 0x35, 0xd4, 0x5d, 0xd9, 0xbf, 0x34, 0xdf, 0x8c, 0x31, 0x0b, 0x48, 0x59, 0x2e, 0x94, 0x68, 0x31, 0xb3, 0x4e, 0xf3, 0xc0, 0xb9, 0x16, 0xf1, 0x7c, 0xb0, 0xac, 0xb2, 0xcf, 0xc1, 0xc2, 0x5d, 0x03, 0x09, 0xac, 0xc1, 0x12, 0x4f, 0x26, 0x5c, 0x1a, 0x83, 0xed, 0x88, 0x5c, 0x87, 0xfa, 0x82, 0x6f, 0xda, 0x57, 0x10, 0xb5, 0x4e, 0x16, 0xec, 0x0f, 0x44, 0x8c, 0xdb, 0x7e, 0xe0, 0x58, 0x0f, 0xf7, 0x38, 0x65, 0x30, 0xea, 0x46, 0x1e, 0x04, 0x2a, 0x0b, 0x77, 0x42, 0xc4, 0x61, 0x97, 0x6b, 0xb5, 0xa3, 0x80, 0xad, 0xbc, 0xb0, 0x01, 0x06, 0xf2, 0x67, 0x1b, 0x6c, 0xce, 0x4f, 0x72, 0x67, 0x75, 0x2f, 0x80, 0x66, 0x80, 0x42, 0x78, 0x35, 0x0b, 0x01, 0x75, 0x3e, 0x31, 0xb3, 0x8e, 0xcc, 0xfb, 0xe9, 0x05, 0x69, 0xf6 } -, - /* Encryption */ - 256, - { 0xab, 0x42, 0x67, 0x97, 0x2c, 0x77, 0x96, 0x83, 0x93, 0x88, 0xd4, 0xad, 0x87, 0xde, 0xd7, 0x4b, 0xb6, 0x53, 0xe9, 0xa7, 0x05, 0x0e, 0x28, 0x2e, 0x82, 0x19, 0x28, 0x75, 0x68, 0x9f, 0x70, 0xee, 0x1d, 0xa1, 0x8a, 0x1f, 0x73, 0x22, 0x09, 0x2c, 0xd2, 0x9f, 0xd0, 0x01, 0x19, 0x92, 0x2a, 0x6d, 0xe1, 0x26, 0x01, 0x98, 0x0a, 0xa9, 0xfa, 0x6e, 0x61, 0x9e, 0x27, 0x75, 0xe8, 0x7a, 0xda, 0xe3, 0x16, 0x95, 0xc1, 0x30, 0x4e, 0x77, 0xf5, 0x2c, 0xce, 0x01, 0x66, 0x65, 0xf2, 0x26, 0x7c, 0x20, 0x76, 0x26, 0x43, 0xc6, 0x00, 0x3c, 0x01, 0x6d, 0x84, 0x80, 0x44, 0x3c, 0x70, 0x1d, 0xf6, 0xc1, 0xd8, 0xd6, 0x55, 0x54, 0x96, 0x00, 0xee, 0x45, 0x5b, 0x70, 0xe4, 0x73, 0x31, 0x9b, 0x0d, 0x44, 0x45, 0xe0, 0xb7, 0x55, 0x2a, 0x1f, 0x80, 0x8e, 0x88, 0xf3, 0x26, 0x48, 0x42, 0x73, 0x5a, 0xe6, 0x1d, 0xf0, 0x32, 0x5e, 0xd0, 0x36, 0x90, 0xd6, 0xd5, 0xd6, 0x93, 0xad, 0x1f, 0xed, 0x22, 0x66, 0x84, 0x50, 0x37, 0x9d, 0xb5, 0x32, 0x3d, 0xc0, 0x1c, 0x89, 0xaf, 0xfa, 0xe3, 0x69, 0xb9, 0xc3, 0x01, 0xc3, 0x19, 0xc3, 0x7d, 0xdf, 0x51, 0xed, 0xf4, 0x6e, 0x09, 0xb2, 0x1e, 0x5d, 0xe9, 0x14, 0x83, 0xe8, 0xe3, 0xcb, 0x21, 0xee, 0xb7, 0x05, 0x7b, 0xc2, 0xeb, 0xdc, 0x3a, 0xaa, 0x3d, 0x65, 0x00, 0xc9, 0x2f, 0x99, 0xb1, 0x7b, 0x31, 0x80, 0xbb, 0xa0, 0x47, 0xd7, 0x60, 0x73, 0x77, 0x63, 0x36, 0xb1, 0x5d, 0x05, 0x4d, 0x79, 0xa4, 0x40, 0xcc, 0x5e, 0x98, 0x5e, 0xa5, 0x43, 0xfc, 0xaa, 0x25, 0xdb, 0x1d, 0xd8, 0x92, 0xb7, 0x1b, 0xb7, 0x4a, 0x5c, 0xf6, 0x82, 0x63, 0xd8, 0xfd, 0x58, 0xf1, 0xa4, 0x8e, 0x6c, 0x2f, 0xcb, 0x8c, 0x0b, 0x71, 0xa2, 0x51, 0xcf, 0xc1, 0xa2, 0x01, 0x57 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -}; - diff --git a/src/libtomcrypt/notes/rsa-testvectors/pkcs1v15crypt-vectors.txt b/src/libtomcrypt/notes/rsa-testvectors/pkcs1v15crypt-vectors.txt deleted file mode 100644 index 515e6e96bb..0000000000 --- a/src/libtomcrypt/notes/rsa-testvectors/pkcs1v15crypt-vectors.txt +++ /dev/null @@ -1,9709 +0,0 @@ -Test vectors for RSA PKCS#1 v1.5 Encryption -=========================================== - -This file contains test vectors for the PKCS#1 v1.5 -encryption scheme. 15 RSA keys of different sizes have -been generated. For each key, 20 random messages of length -between 1 and 64 octets have been PKCS#1 v1.5 encrypted. -As specified in PKCS#1, the block type for this operation is 2. -The seed value of each example provides the pseudo random bytes -to be used for padding. This makes the result predictable. -Note that each example can be used to test encryption and -decryption. - -Key lengths: - -Key 1: 1024 bits -Key 2: 1024 bits -Key 3: 1024 bits -Key 4: 1024 bits -Key 5: 1024 bits -Key 6: 1024 bits -Key 7: 1025 bits -Key 8: 1026 bits -Key 9: 1027 bits -Key 10: 1028 bits -Key 11: 1029 bits -Key 12: 1030 bits -Key 13: 1031 bits -Key 14: 1536 bits -Key 15: 2048 bits - -These test vectors have been derived from the OAEP test vectors. -============================================================================ -# Thirteen RSA keys with bit sizes between 1024 and 1031, one 1536-bit key, -# and one 2048-bit key are generated. - -# For each key, 20 random messages are PKCS#1 v1.5 encrypted with random seeds. - -# Example 1: A 1024-bit RSA key pair -# --------------------------------------------------- - - -# Public key -# ---------- - -# Modulus: -a8 b3 b2 84 af 8e b5 0b 38 70 34 a8 60 f1 46 c4 -91 9f 31 87 63 cd 6c 55 98 c8 ae 48 11 a1 e0 ab -c4 c7 e0 b0 82 d6 93 a5 e7 fc ed 67 5c f4 66 85 -12 77 2c 0c bc 64 a7 42 c6 c6 30 f5 33 c8 cc 72 -f6 2a e8 33 c4 0b f2 58 42 e9 84 bb 78 bd bf 97 -c0 10 7d 55 bd b6 62 f5 c4 e0 fa b9 84 5c b5 14 -8e f7 39 2d d3 aa ff 93 ae 1e 6b 66 7b b3 d4 24 -76 16 d4 f5 ba 10 d4 cf d2 26 de 88 d3 9f 16 fb - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -a8 b3 b2 84 af 8e b5 0b 38 70 34 a8 60 f1 46 c4 -91 9f 31 87 63 cd 6c 55 98 c8 ae 48 11 a1 e0 ab -c4 c7 e0 b0 82 d6 93 a5 e7 fc ed 67 5c f4 66 85 -12 77 2c 0c bc 64 a7 42 c6 c6 30 f5 33 c8 cc 72 -f6 2a e8 33 c4 0b f2 58 42 e9 84 bb 78 bd bf 97 -c0 10 7d 55 bd b6 62 f5 c4 e0 fa b9 84 5c b5 14 -8e f7 39 2d d3 aa ff 93 ae 1e 6b 66 7b b3 d4 24 -76 16 d4 f5 ba 10 d4 cf d2 26 de 88 d3 9f 16 fb - -# Public exponent: -01 00 01 - -# Exponent: -53 33 9c fd b7 9f c8 46 6a 65 5c 73 16 ac a8 5c -55 fd 8f 6d d8 98 fd af 11 95 17 ef 4f 52 e8 fd -8e 25 8d f9 3f ee 18 0f a0 e4 ab 29 69 3c d8 3b -15 2a 55 3d 4a c4 d1 81 2b 8b 9f a5 af 0e 7f 55 -fe 73 04 df 41 57 09 26 f3 31 1f 15 c4 d6 5a 73 -2c 48 31 16 ee 3d 3d 2d 0a f3 54 9a d9 bf 7c bf -b7 8a d8 84 f8 4d 5b eb 04 72 4d c7 36 9b 31 de -f3 7d 0c f5 39 e9 cf cd d3 de 65 37 29 ea d5 d1 - -# Prime 1: -d3 27 37 e7 26 7f fe 13 41 b2 d5 c0 d1 50 a8 1b -58 6f b3 13 2b ed 2f 8d 52 62 86 4a 9c b9 f3 0a -f3 8b e4 48 59 8d 41 3a 17 2e fb 80 2c 21 ac f1 -c1 1c 52 0c 2f 26 a4 71 dc ad 21 2e ac 7c a3 9d - -# Prime 2: -cc 88 53 d1 d5 4d a6 30 fa c0 04 f4 71 f2 81 c7 -b8 98 2d 82 24 a4 90 ed be b3 3d 3e 3d 5c c9 3c -47 65 70 3d 1d d7 91 64 2f 1f 11 6a 0d d8 52 be -24 19 b2 af 72 bf e9 a0 30 e8 60 b0 28 8b 5d 77 - -# Prime exponent 1: -0e 12 bf 17 18 e9 ce f5 59 9b a1 c3 88 2f e8 04 -6a 90 87 4e ef ce 8f 2c cc 20 e4 f2 74 1f b0 a3 -3a 38 48 ae c9 c9 30 5f be cb d2 d7 68 19 96 7d -46 71 ac c6 43 1e 40 37 96 8d b3 78 78 e6 95 c1 - -# Prime exponent 2: -95 29 7b 0f 95 a2 fa 67 d0 07 07 d6 09 df d4 fc -05 c8 9d af c2 ef 6d 6e a5 5b ec 77 1e a3 33 73 -4d 92 51 e7 90 82 ec da 86 6e fe f1 3c 45 9e 1a -63 13 86 b7 e3 54 c8 99 f5 f1 12 ca 85 d7 15 83 - -# Coefficient: -4f 45 6c 50 24 93 bd c0 ed 2a b7 56 a3 a6 ed 4d -67 35 2a 69 7d 42 16 e9 32 12 b1 27 a6 3d 54 11 -ce 6f a9 8d 5d be fd 73 26 3e 37 28 14 27 43 81 -81 66 ed 7d d6 36 87 dd 2a 8c a1 d2 f4 fb d8 e1 - -# PKCS#1 v1.5 encryption of 20 random messages with random seeds -# --------------------------------------------------------------------------- - -# PKCS#1 v1.5 Encryption Example 1.1 -# ---------------------------------- - -# Message: -66 28 19 4e 12 07 3d b0 3b a9 4c da 9e f9 53 23 -97 d5 0d ba 79 b9 87 00 4a fe fe 34 - -# Seed: -01 73 41 ae 38 75 d5 f8 71 01 f8 cc 4f a9 b9 bc -15 6b b0 46 28 fc cd b2 f4 f1 1e 90 5b d3 a1 55 -d3 76 f5 93 bd 73 04 21 08 74 eb a0 8a 5e 22 bc -cc b4 c9 d3 88 2a 93 a5 4d b0 22 f5 03 d1 63 38 -b6 b7 ce 16 dc 7f 4b bf 9a 96 b5 97 72 d6 60 6e -97 47 c7 64 9b f9 e0 83 db 98 18 84 a9 54 ab 3c -6f - -# Encryption: -50 b4 c1 41 36 bd 19 8c 2f 3c 3e d2 43 fc e0 36 -e1 68 d5 65 17 98 4a 26 3c d6 64 92 b8 08 04 f1 -69 d2 10 f2 b9 bd fb 48 b1 2f 9e a0 50 09 c7 7d -a2 57 cc 60 0c ce fe 3a 62 83 78 9d 8e a0 e6 07 -ac 58 e2 69 0e c4 eb c1 01 46 e8 cb aa 5e d4 d5 -cc e6 fe 7b 0f f9 ef c1 ea bb 56 4d bf 49 82 85 -f4 49 ee 61 dd 7b 42 ee 5b 58 92 cb 90 60 1f 30 -cd a0 7b f2 64 89 31 0b cd 23 b5 28 ce ab 3c 31 - -# PKCS#1 v1.5 Encryption Example 1.2 -# ---------------------------------- - -# Message: -75 0c 40 47 f5 47 e8 e4 14 11 85 65 23 29 8a c9 -ba e2 45 ef af 13 97 fb e5 6f 9d d5 - -# Seed: -ac 47 28 a8 42 8c 1e 52 24 71 a8 df 73 5a 8e 92 -92 af 0d 55 bc b7 3a 12 ac 32 c2 64 f3 88 1c 7c -8a 71 0f 70 fe b1 04 85 c8 37 0f 78 1f ff d0 21 -81 6f 05 87 39 76 6d a0 a9 c9 db 0e ae 7e 9a 25 -b6 c4 33 18 d0 ca ac 23 65 22 ca 31 0f 17 fc 52 -ad 42 29 c8 3a 24 e9 e5 45 eb 35 e9 82 6d 55 9f -57 - -# Encryption: -68 42 e5 e2 cc 00 41 d6 b0 c8 1a 56 2c 39 a6 17 -37 9a 51 5c ab 74 ab cb 26 19 c7 74 0a 54 1d 95 -55 dd 91 65 97 5b f8 a3 eb d0 d0 45 66 61 df b1 -a6 86 1b a2 33 22 69 93 0e 0d b5 14 fc a0 73 3e -eb 9c 40 57 13 eb 1f 9d 76 80 33 ed 29 3e 1e 08 -1a 12 5f 32 dd b9 ea 52 ed be 27 5c 4a f6 0f 8a -7b f8 32 bd 22 75 61 c2 08 dc 00 31 a8 4b 50 12 -c9 dd 9f 74 45 9d cb 07 0b db e1 3c fa 8c 2d 50 - -# PKCS#1 v1.5 Encryption Example 1.3 -# ---------------------------------- - -# Message: -d9 4a e0 83 2e 64 45 ce 42 33 1c b0 6d 53 1a 82 -b1 db 4b aa d3 0f 74 6d c9 16 df 24 d4 e3 c2 45 -1f ff 59 a6 42 3e b0 e1 d0 2d 4f e6 46 cf 69 9d -fd 81 8c 6e 97 b0 51 - -# Seed: -dd 2d 60 a5 e0 08 eb e1 d0 be 6f 60 db c4 3f 29 -62 ef 50 bf de 54 2b bb e9 8f ed d1 fe ac 05 7e -77 1c f1 5f c6 32 c8 db 27 2e 28 d2 9b 57 93 ea -6a b8 06 21 8c 53 82 39 b9 3a 93 5e 65 d2 44 16 -ec 6c 6e 99 ae 04 - -# Encryption: -70 9c 7d 2d 45 98 c9 60 65 b6 58 8d a2 f8 9f a8 -7f 06 2d 72 41 ef 65 95 89 8f 63 7a da 57 ea e9 -01 73 f0 fb 4b f6 a9 1e bd 96 50 69 07 c8 53 da -cf 20 84 94 be 94 d3 13 a0 41 85 d4 74 a9 07 41 -2e ff c3 e0 24 d0 7e 4d 09 aa 24 5f bc b1 30 21 -9b fa 5d e0 2d 4f 7e 2e c9 e6 2e 8a d3 2d ee 5f -f4 d8 e4 cf ec bc 50 33 a1 c2 c6 1c 52 33 ae 16 -19 2a 48 1d 00 75 bf c7 ce 02 82 12 cd 27 be be - -# PKCS#1 v1.5 Encryption Example 1.4 -# ---------------------------------- - -# Message: -52 e6 50 d9 8e 7f 2a 04 8b 4f 86 85 21 53 b9 7e -01 dd 31 6f 34 6a 19 f6 7a 85 - -# Seed: -26 29 a7 aa c0 c3 90 5e 83 1e b6 02 38 8c 54 5a -f5 54 b9 6b 2a e5 15 32 e9 cc db 89 72 ef 30 b6 -4a 2f 98 c6 95 29 7a 01 c5 81 2a 2c 40 15 82 f3 -7b 14 4a 3e 90 e5 9d 81 b6 90 39 c6 4b 84 4b 02 -8c 10 5c 8e 68 36 15 af b6 58 b6 c4 d9 f3 82 38 -a7 63 01 bb 14 44 91 13 b6 9d e1 26 04 5e 26 f1 -3e e6 d7 - -# Encryption: -54 dd b7 84 26 8e ad b3 95 5b d9 f9 49 88 42 59 -5a d2 9f f8 a6 67 fe b4 1f 6f 53 0c b6 0b c9 26 -ac 6c 71 c7 72 f8 03 d0 22 b4 1c a5 72 04 22 3b -27 ca 79 ec 5b 72 65 2c a9 af bf 40 dc 2f 6a 0e -13 bc d6 0d 37 f7 95 04 b0 ff cc 01 cf 53 42 d6 -d3 4a c6 f1 f2 f9 f2 f4 87 46 25 b9 fd bb 7d da -2e c8 7d f0 cf 87 25 97 98 df 86 a0 6b d5 ae f7 -35 4b 8c b1 cb 13 75 75 f4 cf bc 46 28 1b b3 31 - -# PKCS#1 v1.5 Encryption Example 1.5 -# ---------------------------------- - -# Message: -8d a8 9f d9 e5 f9 74 a2 9f ef fb 46 2b 49 18 0f -6c f9 e8 02 - -# Seed: -c3 ca 84 60 0f 35 c8 65 5f c7 c6 4c 75 c5 87 38 -53 d3 aa 8a 94 26 a5 1b 63 d7 e7 5d cf 6c ae 97 -a4 25 3f ba 87 1d 6f 96 89 97 19 9b f0 1b 6a 4d -34 28 ce 4c 96 d1 c4 87 b2 83 0c b9 e3 5d 64 05 -56 23 69 9a b4 97 9a 02 58 4b 92 e6 ba 39 e7 57 -28 40 79 ab f1 33 a7 da 54 e5 42 52 17 a2 10 f6 -7c 18 26 9b 51 1f 61 f8 c5 - -# Encryption: -a8 55 48 01 3b d0 e2 0e e0 eb d3 6f b7 48 97 7f -98 58 46 d7 61 0e ed 24 c3 6c d8 30 33 dd 2a a4 -58 0b d1 53 35 20 9d cf 78 2e e2 6c 48 c3 06 44 -b0 b5 cc 86 c8 cd 16 5a e2 1e ad f5 78 04 18 67 -76 07 03 18 75 e2 21 ec df 3b 10 57 31 6f 3f 12 -a4 7d 5d a4 0c 41 53 9b 63 64 30 da 2e 54 21 90 -11 9e 42 9c 53 c2 22 6f 95 9b 19 cc f4 8a 3d 24 -02 17 c4 de 70 d7 07 2a 7e 0d 95 b6 16 d1 15 a8 - -# PKCS#1 v1.5 Encryption Example 1.6 -# ---------------------------------- - -# Message: -26 52 10 50 84 42 71 - -# Seed: -3c 6a 04 71 da f0 0b 7c 2e fc 9e e8 80 41 65 4f -87 62 90 07 c1 24 32 22 11 a5 f4 ea 3c 58 23 85 -7b c8 fc 7e 21 c9 45 48 b0 ee bd cf f7 91 60 e1 -12 46 1e 40 50 91 10 cf dc 4f 0f 13 c7 fb 92 1a -ba c8 df aa c2 1a cb 0f 7b 8a 13 a4 b5 cc a5 23 -d5 c7 dd f7 05 23 eb 57 0c 59 b6 c7 ae 97 67 e4 -ec 9a 63 d1 13 6d 10 23 1b 40 1e 20 e7 41 02 84 -83 48 01 7a 16 16 - -# Encryption: -5e 51 43 63 28 7d e9 b3 80 04 8c c4 43 5d 53 29 -4a d5 94 1c 55 1a 97 e1 3c 16 dc 13 98 de 61 0d -c7 33 7b c6 bd e5 78 e9 e9 f5 6a f1 44 54 f2 e8 -31 be ef 32 31 a8 50 68 e8 fe f7 2c 89 e1 df 1c -99 43 0a 60 f6 d9 42 89 cf ba 87 b2 b4 32 a4 0b -88 db 61 da e0 88 f9 ed 4e 28 4a 21 63 af 65 bf -2b 43 55 9a 5d a2 ae c5 bb 8f 43 f9 2c 1b 04 a5 -14 6a 65 b6 e0 19 b4 cd d2 94 0c 35 d9 64 5b 2d - -# PKCS#1 v1.5 Encryption Example 1.7 -# ---------------------------------- - -# Message: -8a 84 7d d9 e2 - -# Seed: -a1 3d ff 8a 48 e8 04 94 ae 66 e6 ba 9f 17 9a 01 -0d 9e 6d 40 31 87 96 7f 99 fd d9 0e f9 0e 0a 94 -07 3f f0 e4 d0 e6 66 4f f3 73 b5 09 95 3e 04 ef -77 83 be 0f b4 6c 8a 9f c0 ed 8c 1f 33 cb 4d 0d -2f 1d 0d 5c db a1 4d ca 50 8c a1 d7 3d 20 80 18 -63 9b c8 e1 65 86 23 de 1e 5b a3 f0 5e d0 91 4d -2f 96 90 2f 25 20 33 2d 84 92 d3 73 4a cd eb bd -f4 3e 50 a4 3e 7a a8 72 - -# Encryption: -82 7a 67 e8 15 78 1c 4d 4e 2b 2e 16 9d 80 ca e9 -36 68 72 a7 92 af bf 3c 0c d5 1c e2 8c 70 e8 6d -41 eb b9 75 2f 3f 92 db a5 1a db b6 85 1b 1f 78 -45 61 a8 f1 97 20 8f de 02 97 0b 38 f2 a9 74 22 -ec 7f 4f c8 a1 06 75 a9 db de 10 9e ed 0c e0 65 -27 70 3e e0 5b 65 7d 34 08 f7 fd db 1e ec cf fa -e1 6b 1d a1 07 30 7a 2c f2 56 fa 60 e8 15 21 72 -de 9f 95 27 fe 92 0a 90 1d 93 c4 f4 d5 7e 54 6e - -# PKCS#1 v1.5 Encryption Example 1.8 -# ---------------------------------- - -# Message: -37 32 36 b7 20 2d 39 b2 ee 30 cf b4 6d b0 95 11 -f6 f3 07 cc 61 cc 21 60 6c 18 a7 5b 8a 62 f8 22 -df 03 1b a0 e0 e8 2d d2 f3 e5 d3 1e 4e a2 57 b1 -5b - -# Seed: -21 99 74 a0 87 f0 a2 81 93 e6 49 a0 4a e9 d8 4c -f2 c8 a9 a4 6c df d8 f1 ac 62 c7 e0 f2 0f 4e 27 -03 0c 72 b2 0a 5d b7 25 b4 a8 68 3d f5 55 6e e7 -94 7f a0 a7 66 1b 6d 99 dc b7 9e 49 4f 46 73 f0 -73 a0 41 dd 90 7c 87 32 4e 86 25 dd - -# Encryption: -1a 6d f5 75 99 84 f2 c4 11 93 55 c5 db 35 c8 a4 -78 16 4d 5e 5e e7 7b 49 91 f1 04 ba 91 b9 87 0f -15 91 be 1f 19 f5 5a 80 51 a6 2c 0e 59 49 3d f6 -f0 0f e5 0e f7 3a 6c f0 c4 35 41 f5 32 0d ab 7b -2f c6 7c 93 22 5c cc d6 d5 03 47 aa 96 9a d8 7b -d3 d8 20 81 45 4f ea d8 10 dc 1a b8 c2 17 81 f7 -61 2e 64 06 72 9b 32 2e 04 b1 62 4f 85 38 98 56 -59 ae 34 d9 93 1e 01 9f 76 2c 79 7d 5c bf a3 2d - -# PKCS#1 v1.5 Encryption Example 1.9 -# ---------------------------------- - -# Message: -97 e0 b6 36 bf dd b8 e1 c8 a9 cf 5b 30 5c ef 3a -8f 47 f9 a8 b3 34 4f 13 55 fa 3d ba b6 7b b9 72 -10 - -# Seed: -c1 f8 9b cd c5 60 40 d5 e6 63 b7 4b fd e2 39 7b -58 46 08 cd f3 2d 5a 58 44 72 4a c7 e5 98 a8 6e -f7 11 4b 1b e0 87 30 cb 10 f6 61 fb fb 86 09 f7 -c6 c3 74 42 a1 b1 1e 04 a6 11 ff 8c a5 ce 9a fc -1e b3 aa a9 2c 9f 28 ba e2 20 44 05 78 99 02 26 -07 83 78 c4 93 41 13 74 c5 3e 3d dc - -# Encryption: -87 3c c4 dc a4 27 97 2b 63 c6 cc 8a c1 1c cc 33 -c9 59 f7 fc fe 4b 45 bb d4 7b 29 d9 c9 88 c0 1a -96 bc 1e ae 0e f9 b1 94 8d ce 2c c9 f0 aa 91 7e -86 a6 c1 1f 8d a3 da 29 df 90 59 01 f1 91 8a 76 -16 8d e1 17 5e 27 35 12 8c 09 72 99 d6 6e a5 cc -f9 b9 5b 36 92 ee bf c6 ea 11 bc 37 09 1b 79 5f -18 80 3d 70 e7 95 58 e1 25 16 23 0f ed 55 15 e5 -1b 45 ae 86 ce fe 47 b9 37 90 e4 99 4d c4 1e 05 - -# PKCS#1 v1.5 Encryption Example 1.10 -# ---------------------------------- - -# Message: -82 b5 07 5b fc 88 f4 00 65 76 aa 80 a0 00 7a 74 -51 18 4d 4f 76 0c f9 24 28 04 22 2b 0e 07 26 f5 -55 03 0e 4e 6b 01 f7 93 b0 97 01 81 27 82 4a 3e -40 24 57 d8 49 5f c0 - -# Seed: -d5 5e 3d 48 97 e9 d8 65 01 4c b1 5d 3e e3 f9 fb -d2 9c 92 e5 c2 37 dc ae 46 67 2a 46 3e aa a4 f7 -dd 09 86 1e 94 6a c6 5b 85 62 50 63 93 b8 51 92 -ad 41 fb 0c 48 c8 c0 52 98 1b dd cd 5f 1f c8 b1 -39 cd 47 ca cf fc - -# Encryption: -2e 83 c3 d2 88 01 5a 5f 50 3d 3e 5d e7 d2 ad 91 -06 54 5e f9 7d 63 e4 d0 6a 5a 0d 9d bc 29 f6 ba -fb 93 a5 17 3f a5 06 3a 69 39 db a6 c7 a4 28 c3 -5e 7d be 6a 95 93 fe 5e c4 c1 98 78 89 3f 31 37 -09 c8 76 02 72 6c b3 25 5b e7 5a dc 7f 2f 27 e6 -db 91 c3 a3 43 ea ff 1c 28 d9 d5 f7 cb 65 74 e6 -31 06 90 03 cd cf a0 77 43 a7 34 0d 58 83 9e 70 -8b f3 6a f6 34 2d b8 df a4 1f ea da fc 69 53 ac - -# PKCS#1 v1.5 Encryption Example 1.11 -# ---------------------------------- - -# Message: -36 48 c3 6f 85 1f 52 f2 32 87 79 09 19 85 a3 c8 -12 e1 8a 70 55 d0 90 bb f0 32 4c 13 79 3b b8 22 -1a 57 - -# Seed: -c1 27 71 85 c3 59 55 ca ed fd f9 de 55 d5 d9 5a -39 8d 58 f5 f3 33 19 1f c0 29 45 ef df ad fb 6d -b0 5e e2 a2 d3 41 83 ed f8 9a 1a 4d cc c4 65 91 -b3 53 2b a7 03 93 62 c7 5d f1 94 ec 10 64 48 af -b7 f6 bf b2 80 7e 38 3e 15 99 54 25 5e 82 7c b9 -da dc 8d 9b 7e 68 a1 aa 09 76 35 - -# Encryption: -88 62 f1 97 3f ef e0 af 02 d9 6c c4 58 33 4d ed -6c 02 d8 d7 ea f5 93 77 9c 5d 38 6c 4e 49 f7 68 -f1 30 b4 87 b3 c9 1e 32 3a 47 7e 4c 11 0a 33 41 -ff 46 ee e3 7c 77 3e 5c 0a c8 39 bc 55 cc 0c 07 -0c ac 01 cd 45 18 3c fe e6 b8 8b fb 82 36 1d 35 -60 19 7c de ab 42 e5 c7 55 d2 37 97 1a 88 da f6 -10 cb 39 52 61 4b 36 40 56 cd 49 14 20 ef fe 3a -0b 8c e3 1f 2e 3e 49 ca d6 f3 b0 64 0f 44 91 de - -# PKCS#1 v1.5 Encryption Example 1.12 -# ---------------------------------- - -# Message: -94 f7 8c f4 5c 53 fc 46 e7 eb 1b 26 61 8a 29 e9 -48 50 12 c1 - -# Seed: -e6 de 9e 9b 90 22 a5 5f 56 12 1d 5a c0 0a a6 df -29 9c 8a 36 94 22 e7 54 29 56 b6 da 2e 0d cd ee -96 8d b0 7d 99 5a 7b b8 76 f7 f8 cd 66 b2 f5 42 -c0 53 08 f7 49 83 a3 f8 36 0c 6b 89 47 f8 7d 60 -8b 03 1a 2c 68 dd e1 47 1a e4 96 ae 9b 16 e2 a8 -11 81 eb 6f c2 f6 5b aa ad da 64 22 a9 34 31 f6 -f3 b0 7b 5b 46 a3 cf 89 48 - -# Encryption: -3c 6d 3b 43 d2 3a db 79 d6 97 23 38 08 b0 74 48 -76 97 f3 35 fd 99 cd e8 65 41 1f b1 82 28 92 56 -1f dc 24 a8 b8 bb 2c 4f 65 3c 4d 15 6c 77 a7 5d -e3 16 00 b5 70 9e 8d 50 6e 98 e1 d3 73 cb da 01 -f4 d9 fe b0 29 71 98 ca d0 ca 2a 7e 3b 1e 63 90 -3b 10 43 ce 79 49 4c 57 54 f7 f9 0f c1 f0 73 a6 -19 92 9e f1 26 39 4b 06 24 f3 b8 ba 6d 56 45 e9 -90 e7 c0 13 2c e2 12 31 46 fd 9c ad f7 45 ec 61 - -# PKCS#1 v1.5 Encryption Example 1.13 -# ---------------------------------- - -# Message: -77 9d 1e b8 4f a2 84 c3 7d 29 d5 e1 79 d0 03 06 -b4 13 c4 4a 80 0a 07 7e 59 85 3f 63 05 f9 2e 59 -fb 7f 81 - -# Seed: -c3 e6 d1 8b da 97 78 2c a7 81 fa 76 d9 7a 6c 94 -d8 54 d1 41 99 b4 ea 7d 82 c5 bc bb e6 cd aa b5 -25 57 47 44 3c 59 bf 8c 77 ec da a6 4a e7 ce 61 -e2 c7 30 01 32 b7 54 e9 16 2f 7c de 75 8f 48 0a -e5 88 cf d4 4a 94 6d 64 e2 72 0a 2d 17 52 55 45 -22 04 84 83 81 18 ad 6e 6b 54 - -# Encryption: -72 2c a9 25 66 c7 3c c8 5d 19 ce 3f aa 14 cb 2e -79 84 9f 20 50 92 d1 58 92 82 31 3c 04 27 f0 67 -79 8a fa e3 e3 f0 a5 61 f3 99 34 6e 9d 10 7d a0 -4a f4 4b 0c 6f 04 4a de fe 09 7a 0c d1 4a 47 a9 -9c d9 81 9a 98 41 37 06 30 7c bd 0d a0 16 97 46 -9e ff 71 d3 14 41 63 94 93 fb ed 8e ee 1b a3 9f -dd 07 fc 0e a0 82 30 18 61 79 f9 0e 7e f1 3c 61 -ee 56 f1 67 fc 2f 6b 15 79 3e 1a 32 24 ff a2 9e - -# PKCS#1 v1.5 Encryption Example 1.14 -# ---------------------------------- - -# Message: -88 - -# Seed: -c0 16 9d 76 e4 ea 45 45 41 0d df 66 46 c1 ba 7d -d2 72 d7 c3 49 8b a6 b0 80 4b 42 61 30 a8 0f bf -ff 4b b7 b5 f5 59 b0 a9 09 0e 4a d9 b9 f4 16 a6 -df dc 15 01 b1 ba 46 87 7b 1a 96 fa 84 91 dc fd -de 50 eb ee d2 4d 3f 98 96 24 13 34 6e d4 a3 39 -3e 23 5b 77 bc 1e d6 74 68 ec e2 79 2a 2f d3 a8 -34 8f c5 50 9b 59 06 f2 88 56 15 df 8c 14 61 37 -7a 74 1d 59 52 fb 36 ea c0 20 1e 27 - -# Encryption: -4e d7 d1 29 1a 03 36 65 4d 5c a2 b1 f9 d2 0c b2 -da 72 26 f7 11 6b 93 09 88 43 9b 44 63 98 11 04 -bd 63 c2 ce 2b 77 d6 26 b3 10 9c 93 14 03 ac 5b -49 b4 24 7c 4f 69 67 b8 c0 db 06 3c 99 95 af 9d -36 54 06 50 93 8b 01 f9 39 06 f9 83 89 07 ed 59 -36 ab b3 43 b0 e2 55 09 a1 d2 d4 c5 c8 b9 58 06 -50 da 2c e1 1f a3 cf 3e 64 07 23 ea cb ee 87 fa -d3 ee 35 95 8b 45 07 5d f7 81 c4 13 46 6a f1 39 - -# PKCS#1 v1.5 Encryption Example 1.15 -# ---------------------------------- - -# Message: -a2 dc 08 77 78 d5 43 40 8e 89 73 f1 36 31 59 ed -b8 f0 78 3c 45 70 89 07 2d ce 66 d3 10 2b b4 fa -e6 0a a6 0e 41 93 3c 48 a1 be 39 53 ec 2f 80 4c -0c c9 6c - -# Seed: -18 11 20 14 06 53 29 d0 4b fb 0c f5 44 dd 38 d7 -be f1 54 9b 4a 49 a1 67 76 dd a7 4d 0a 7e dc 49 -67 b4 24 0c 37 14 2f a3 f6 63 9c 26 96 cd 7d 4b -18 a1 1e 2f b5 40 81 f2 de 5b d7 bd 15 cd da 92 -c9 4c 3a 47 18 7b 5f f4 3b 53 - -# Encryption: -71 15 19 0a 21 04 88 f0 4f a0 c0 0c 93 a4 68 a8 -03 0b 7b 9f c1 00 20 d8 31 0b cb 01 a5 c8 dd a1 -d0 6c e2 41 dc 77 5b 43 e6 f1 3b 19 ab fc bf 36 -16 e8 4f 10 7c 9e d8 0d 1b 86 bf 87 c9 8c 2b 62 -9f fa da a6 ec 01 f4 e6 75 55 8e f5 26 06 ea f1 -26 06 8f a7 53 4d d1 3b 92 0d 23 81 69 5a d7 75 -ff f0 bb 7c ec 46 90 90 1d 6f 1e 17 36 b8 2c fe -3a 0c 22 4d 18 f1 29 15 fd c9 5c 18 39 7c 35 70 - -# PKCS#1 v1.5 Encryption Example 1.16 -# ---------------------------------- - -# Message: -11 0b f2 b1 d0 dd 81 2f 2a 5a 21 f3 40 4f a2 f2 -c4 54 c4 43 2f df a7 0f 1b 0f 23 ec 69 c1 02 37 -73 a7 3a ba - -# Seed: -17 b8 5f 76 53 ff 0e f5 de 7f 25 69 6c d4 90 23 -ad 8e ac 94 8a 83 e2 24 58 ec d5 d1 0a 43 86 6d -c7 91 55 5e 64 f0 78 c3 8c 75 2b 6e 9c 6e ee b3 -39 ee c9 10 16 d2 58 88 6d 01 27 75 ad 64 36 02 -a0 f0 d1 79 34 54 a0 60 94 71 16 22 88 22 39 50 -82 6e d8 e2 02 5d a9 a4 e9 - -# Encryption: -5d 0f 2f d8 5e 6f 9d 9e 43 2f ad 86 0f dc 49 96 -96 24 ff 4f a0 71 5d 36 1e 9f 00 b0 5b 3a a0 ba -9e b2 7b ae 61 0e fd e1 14 3c bc 93 3b 52 de a7 -01 87 60 bb 25 1b e0 e1 e3 0c d1 c5 99 1a ef 74 -4d b8 2f 16 6b 90 63 ef b7 e3 38 40 a2 56 90 05 -65 4b 14 0e 11 5f a5 6c 30 40 6e 45 65 6e 81 99 -af 39 4f 63 86 34 6d 5f 1a 30 0b 95 ba 48 fc 08 -73 d6 18 d6 92 bb 02 5b f1 5e 9d 23 2c 64 1a da - -# PKCS#1 v1.5 Encryption Example 1.17 -# ---------------------------------- - -# Message: -d9 d9 37 13 1f f1 94 0a 86 bf 71 39 b4 81 14 36 -41 95 b4 00 52 22 a8 bb bc 26 1a 7f 2e 21 2b 8d -d0 35 e5 3f 91 44 f5 61 0b 4c ec 32 ea 01 bd a9 -d3 c8 0c f2 94 64 f8 0f 5f 56 56 c8 - -# Seed: -33 05 e1 da 60 e5 86 73 fc 46 cd 33 be 2a 66 d3 -a1 02 c3 db 16 1e f4 8c 0d 60 ef 25 03 1b 40 14 -16 78 26 24 6a a5 28 a3 a3 e5 b0 ab 95 07 8d 84 -01 d9 29 03 59 5a fc 1a a8 54 e6 04 4e 5e b5 f5 -be - -# Encryption: -0e 12 16 74 89 f0 ba ef ca d6 39 34 bc 15 9f 1b -bd 9e 9b 28 7e 50 0f 49 09 23 c1 6a 85 56 4a 1d -a6 36 59 37 5f 22 af 7b a4 97 98 e1 57 8c f3 15 -fa e3 e9 ed 56 99 c6 91 e3 c1 d0 bb 46 da 49 2d -01 34 9e 93 29 59 3d 43 81 d0 74 a0 a5 31 df 92 -1b 31 31 6f 7e 2b 4f e9 15 34 72 83 24 23 35 f0 -b0 b2 31 92 c7 21 02 f2 c6 36 24 b1 e7 89 65 45 -0e 82 30 d4 87 7e 46 17 b0 3d 44 83 13 98 dd bf - -# PKCS#1 v1.5 Encryption Example 1.18 -# ---------------------------------- - -# Message: -81 b3 4a eb 8a fb 8a 3f - -# Seed: -02 f7 48 34 2d 01 0f b5 6a 6f 69 f2 1f 8c 6a 63 -16 79 c8 c4 b8 f6 fe b5 25 cf 8e 72 fd a8 ef 8d -f6 62 31 28 c0 fe 74 bc 59 0c aa 34 f1 ee d1 ad -2d 61 42 dc c5 bc ae 84 ef 31 37 62 f2 e4 e7 03 -03 d2 09 c8 d9 57 7a 7c 84 3d 2b 91 72 ed 4e fe -2a d6 29 61 4b 99 a9 1a 4c c8 32 5b a3 24 11 6e -cf 0c 5e 29 09 49 38 ae 49 89 84 f4 f4 cb b1 62 -38 86 e0 39 73 - -# Encryption: -43 b2 76 c7 d3 68 ea 21 c6 80 71 16 cd e8 60 82 -98 f2 40 02 07 2d 77 6e 56 e6 2c 35 72 bf b9 9d -a4 c5 6e 93 8a 47 dc 07 5f a1 ff 7a 61 8f b5 fa -ed 3e e3 7b 91 df c3 91 53 49 5a eb a9 df 6d 45 -df 94 b0 e8 a8 ad 2d b3 7a 9f e4 6d 0f df 15 42 -31 fd 6f 32 21 47 4e 8f 5c 19 1f db 85 38 e1 a6 -03 e5 98 97 e1 50 fa f9 5b 65 da 14 06 67 ed b1 -98 09 eb 4a 16 ac d0 1e cc 60 4b da 57 f2 0e f2 - -# PKCS#1 v1.5 Encryption Example 1.19 -# ---------------------------------- - -# Message: -7b f9 fa d8 89 de 73 ed 87 3d - -# Seed: -fa 5d ad 45 a4 bb 5e 74 c4 cf 2e 21 3e d4 0a a9 -61 75 98 d1 1d 49 ae 1c 32 d7 94 e0 9c d0 e5 c7 -aa ae 81 b9 55 4d de 31 08 d6 0a 9a 82 f4 2c c6 -c2 a6 89 f4 60 ff 1d 53 ad 85 bf 83 83 11 e7 58 -9e 19 67 95 7b 51 56 7a a0 d3 3a fa 37 52 cd e6 -c5 66 1d 4f 27 ae d3 df 52 90 5f 1c f2 25 33 04 -61 8e 07 86 04 1e 70 b4 dc ba c8 c1 08 ba 34 ac -39 39 f4 - -# Encryption: -61 c2 55 0e 0b 36 a6 79 7f f8 64 93 80 1b 11 46 -d8 90 59 49 83 52 e4 c2 62 27 5b 14 04 b1 33 15 -e9 56 bb 3d 31 21 85 b5 21 b3 c7 08 e9 d9 54 02 -17 19 a0 59 d9 84 72 4c 53 c0 4f 5a d2 74 be f9 -ff 0a 79 50 b2 fd ec c5 29 0c d5 f3 bc 26 52 4c -d1 34 20 48 18 4b 0e 2c df 94 06 a4 53 a2 ef 9f -3b b2 3c 4e 7c 1c 8b 29 52 a0 20 2b cc 23 82 47 -ea 32 7b 8c 07 00 c8 00 3f d6 34 ec 1e d9 bf 30 - -# PKCS#1 v1.5 Encryption Example 1.20 -# ---------------------------------- - -# Message: -b6 a3 50 9b b3 b9 b0 b5 7c d5 8d e4 09 d9 53 20 -1a 04 2f 94 92 dc 1d 7e 34 a7 d0 94 1a 1a 1b - -# Seed: -3a 9e 15 06 57 86 b3 e0 1d 82 6b 86 2a 8f 70 2b -5c ac 8c 16 62 ee 7d 15 ff 32 3c df e7 1e bf 4a -d1 b1 f3 a6 bc bd d4 b0 01 08 77 ec ac 09 1f 61 -59 08 e2 be 40 0b b0 c4 98 e3 55 d5 71 fd 10 89 -5b 8e e9 c3 a9 c3 1e 4b 11 03 89 c3 d5 c4 6e bf -76 b3 b3 5a d1 f4 79 1b 6d 20 97 f1 09 f2 - -# Encryption: -6b 4b 6d 7b ab fe 4d 64 17 ac ad fb 78 57 2e 7c -87 e3 fe 1b d5 8e ef b0 d4 b1 27 9c 7b 7c 83 26 -a6 8b b2 87 95 e0 9f 9b 1c e2 e2 4a 53 9f 4b 0d -93 b2 92 74 ce cf 7c d9 f0 b7 32 ae be da 91 11 -bd fe 25 e2 68 a8 8e 34 22 e2 9b 52 bd 4b 7a 05 -47 db 8f e1 2a 6f cf 1a 3c 06 a0 02 bf 87 0a 2f -ab b7 c4 57 e4 bb ce 3e 31 6f 72 32 44 9f 87 a9 -d7 02 b1 2d 19 bd e7 f9 59 0f 94 67 b0 6b d5 8a - -# ============================================= - -# Example 2: A 1024-bit RSA key pair -# --------------------------------------------------- - - -# Public key -# ---------- - -# Modulus: -98 b7 05 82 ca 80 8f d1 d3 50 95 62 a0 ef 30 5a -f6 d9 87 54 43 b3 5b df 24 d5 36 35 3e 3f 12 28 -dc d1 2a 78 56 83 56 c6 ff 32 3a bf 72 ac 1c db -fe 71 2f b4 9f e5 94 a5 a2 17 5d 48 b6 73 25 38 -d8 df 37 cb 97 0b e4 a5 b5 62 c3 f2 98 db 9d df -75 60 78 77 91 8c ce d1 d0 d1 f3 77 33 8c 0d 3d -32 07 79 7e 86 2c 65 d1 14 39 e5 88 17 75 27 a7 -de d9 19 71 ad cf 91 e2 e8 34 e3 7f 05 a7 36 55 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -98 b7 05 82 ca 80 8f d1 d3 50 95 62 a0 ef 30 5a -f6 d9 87 54 43 b3 5b df 24 d5 36 35 3e 3f 12 28 -dc d1 2a 78 56 83 56 c6 ff 32 3a bf 72 ac 1c db -fe 71 2f b4 9f e5 94 a5 a2 17 5d 48 b6 73 25 38 -d8 df 37 cb 97 0b e4 a5 b5 62 c3 f2 98 db 9d df -75 60 78 77 91 8c ce d1 d0 d1 f3 77 33 8c 0d 3d -32 07 79 7e 86 2c 65 d1 14 39 e5 88 17 75 27 a7 -de d9 19 71 ad cf 91 e2 e8 34 e3 7f 05 a7 36 55 - -# Public exponent: -01 00 01 - -# Exponent: -06 14 a7 86 05 2d 28 4c d9 06 a8 e4 13 f7 62 2c -05 0f 35 49 c0 26 58 9e a2 77 50 e0 be d9 41 0e -5a 78 83 a1 e6 03 f5 c5 17 ad 36 d4 9f aa c5 bd -66 bc b8 03 0f a8 d3 09 e3 51 dd d7 82 d8 43 df -97 56 80 ae 73 ee a9 aa b2 89 b7 57 20 5d ad b8 -fd fb 98 9e c8 db 8e 70 95 f5 1f 24 52 9f 56 37 -aa 66 93 31 e2 56 9f 8b 85 4a be ce c9 9a a2 64 -c3 da 7c c6 86 6f 0c 0e 1f b8 46 98 48 58 1c 73 - -# Prime 1: -cb 61 a8 8c 8c 30 5a d9 a8 fb ec 2b a4 c8 6c cc -c2 02 80 24 aa 16 90 c2 9b c8 26 4d 2f eb e8 7e -4f 86 e9 12 ef 0f 5c 18 53 d7 1c bc 9b 14 ba ed -3c 37 ce f6 c7 a3 59 8b 6f be 06 48 10 90 5b 57 - -# Prime 2: -c0 39 9f 0b 93 80 fa ba 38 ff 80 d2 ff f6 ed e7 -9c fd ab f6 58 97 20 77 a5 e2 b2 95 69 3e a5 10 -72 26 8b 91 74 6e ea 9b e0 4a d6 61 00 eb ed 73 -3d b4 cd 01 47 a1 8d 6d e8 c0 cd 8f bf 24 9c 33 - -# Prime exponent 1: -94 4c 3a 65 79 57 4c f7 87 33 62 ab 14 35 9c b7 -d5 03 93 c2 a8 4f 59 f0 bd 3c bd 48 ed 17 7c 68 -95 be 8e b6 e2 9f f5 8c 3b 9e 0f f3 2a b5 7b f3 -be 44 07 62 84 81 84 aa 9a a9 19 d5 74 56 7e 73 - -# Prime exponent 2: -45 eb ef d5 87 27 30 8c d2 b4 e6 08 5a 81 58 d2 -9a 41 8f ee c1 14 e0 03 85 bc eb 96 fb bc 84 d0 -71 a5 61 b9 5c 30 08 79 00 e2 58 0e db 05 f6 ce -a7 90 7f cd ca 5f 92 91 7b 4b be ba 5e 1e 14 0f - -# Coefficient: -c5 24 68 c8 fd 15 e5 da 2f 6c 8e ba 4e 97 ba eb -e9 95 b6 7a 1a 7a d7 19 dd 9f ff 36 6b 18 4d 5a -b4 55 07 59 09 29 20 44 ec b3 45 cf 2c dd 26 22 -8e 21 f8 51 83 25 5f 4a 9e 69 f4 c7 15 2e bb 0f - -# PKCS#1 v1.5 encryption of 20 random messages with random seeds -# --------------------------------------------------------------------------- - -# PKCS#1 v1.5 Encryption Example 2.1 -# ---------------------------------- - -# Message: -e9 a7 71 e0 a6 5f 28 70 8e 83 d5 e6 cc 89 8a 41 -d7 - -# Seed: -16 8e 3e b5 80 9b 08 70 e1 f2 48 7e 1b e7 7a 17 -6b 34 71 6d e1 41 ba 4c 90 59 da 90 e5 e5 1a 36 -94 e8 58 fe d1 0b 92 6c 02 52 39 80 a8 90 9d a9 -96 c6 43 33 ea 67 67 87 bc e6 77 f1 1f da 77 db -b1 a9 51 6e dd a9 b1 29 4f c2 e4 50 52 22 88 e9 -30 be 7f a7 29 b2 50 e3 aa c5 20 51 1e 95 16 aa -86 3a f6 bc 07 5c bd bf f4 30 46 70 - -# Encryption: -71 c2 b8 fb 38 19 f1 34 c2 24 7c 6b ab b4 cf be -17 d7 b2 64 3f 87 ac e5 c5 71 27 7b e1 90 8e f3 -a5 28 8e 34 38 4e 46 0a 70 38 6e 7e a1 d1 9d 3d -ca 1c e1 5b a9 32 39 a8 cd da 18 e3 17 fe 07 96 -80 ce 7e 6a c6 d9 bd af 86 cb 9a eb f1 cf 46 cd -10 ef 6a 68 8b 0c b2 ce 76 5d d0 b3 25 20 42 39 -66 ee e1 aa 05 c6 c2 8c 6f 35 24 fb 68 6b 5f b1 -58 53 65 9e 58 3a c4 37 21 9d ef 8e dc 58 be 2d - -# PKCS#1 v1.5 Encryption Example 2.2 -# ---------------------------------- - -# Message: -66 4b f0 5d 61 2b af 61 52 4c 60 8e da 36 fc 6e -a2 c9 3c 14 31 53 22 1b cf d6 ba 0c fb bd 6b 64 -14 47 e4 78 8b 0a 46 2c b5 b3 f9 fa fc 9a 75 - -# Seed: -e7 f0 a2 79 18 ca d9 15 da 28 11 36 59 ff b5 df -a0 b5 1b 24 d5 a7 1c 20 27 f8 e4 d9 40 9e 8c 64 -72 f0 c5 4b 5c 08 85 8d a6 3d 4b 81 72 b0 7d cf -8c 5a 7e 8f 9e 90 f0 17 c2 4b 44 d1 6b 67 0b dc -96 03 0c 83 53 a2 83 9b a4 c0 75 d2 4c 20 - -# Encryption: -06 86 90 18 13 db 05 3a c7 08 e3 fc ec 6b ae 03 -60 08 8f d3 44 e9 d7 ea 11 8b b3 f5 37 53 14 25 -1e 60 67 37 f5 82 4b 36 28 f6 65 03 48 f6 ab 55 -3b 27 7d a0 15 44 d0 56 73 ba ed f4 55 cc 03 32 -f6 13 f6 54 78 fc fe 06 67 34 c4 65 58 bc 23 3b -4b 6f 52 41 e4 f4 ac 53 fc 18 c5 53 84 c8 fd 96 -18 3f 0b b5 51 5e 89 31 14 f9 c6 1c cc 11 fc 19 -83 de 74 46 92 64 db db b0 c7 49 17 4e cd fb e3 - -# PKCS#1 v1.5 Encryption Example 2.3 -# ---------------------------------- - -# Message: -5e 76 e6 6e d5 75 41 fc 23 d3 59 f4 ad bf 3f 56 -82 01 d3 c6 f0 e0 26 aa a5 67 63 56 cc 98 66 f1 -75 5d e9 8c b3 9f 23 6d af a9 e6 bc 79 4b 74 43 -b5 3a 2d 85 - -# Seed: -5c 65 68 b6 e3 3b c1 3a d2 dc d6 01 2d 17 da 81 -b1 3d bd 62 aa e4 0a 64 af 97 e2 19 e7 5d c1 81 -12 60 77 d1 20 dd a1 9d 63 12 cf 1e 98 71 c1 15 -f0 86 7f e6 62 d7 8a 40 31 97 6b dd ef 68 f5 2b -68 99 58 67 cd 80 95 05 dd - -# Encryption: -19 e7 99 66 ff 1f bc 10 07 3d e7 3d f3 a5 31 63 -78 74 e4 7d f6 39 25 6c 51 d0 bb a9 35 61 0b 46 -34 f9 e5 b4 68 9b d9 21 73 5b 32 23 6e fc c6 e7 -cc 49 a9 e0 6a 25 ac 96 59 b7 fe 82 9c b3 e8 b0 -1f 10 31 79 42 23 65 74 1b 76 c8 34 21 49 ce dc -76 eb 0a d0 18 ed 42 35 fb d5 24 fd 87 c9 54 9a -b3 3f f2 3e e4 f8 20 0e fa 33 02 7e 9d ee c6 0f -ac 01 3d 1e 56 e6 e3 33 d4 93 a4 a9 46 0f e5 8a - -# PKCS#1 v1.5 Encryption Example 2.4 -# ---------------------------------- - -# Message: -5b 19 50 48 eb 90 eb 47 93 - -# Seed: -bb bd 49 55 0e d1 ea 1b 6b c7 20 6c e0 b0 03 a6 -32 a5 2b 0b ac 5f 32 71 0b 39 fa 64 b3 55 6a d6 -f6 c8 2b d9 d5 31 b3 07 46 9e 86 3f 54 b5 fe 21 -83 05 69 54 f2 a9 67 e4 dc 2b 32 6e 41 dd df 74 -3a 76 4f 7e 82 88 68 29 a8 fa b2 77 2a 34 97 70 -6b 95 38 a9 f8 42 96 c8 2d 9b af c2 9c 39 d4 68 -4f 75 ff 6b b1 c1 2e 39 bb 80 56 af 2d 24 34 4b -2c ae 46 29 - -# Encryption: -42 c9 cb 68 21 b5 5d ae 30 d9 00 25 75 31 12 e6 -ee 02 f4 ad 6f 0f 5b 3c c4 95 2a 12 7c 8a 16 f6 -64 79 b8 14 4f 3c f2 9d 84 e4 3d 67 d6 77 12 c7 -f5 b7 6d a2 c6 6b a0 e9 0c d4 b1 fc 1c 1b 3f 17 -a3 92 e7 04 08 28 8a f6 9b 50 fe 8a 50 b3 29 6a -0d ab d7 c8 dc 39 84 a1 94 06 88 be 70 98 25 16 -20 25 6c c2 1b 7c 76 ed 29 d8 6f f7 c0 1e c2 87 -df 47 38 be 34 69 b3 0a 3f 8f b7 be 83 d9 36 1a - -# PKCS#1 v1.5 Encryption Example 2.5 -# ---------------------------------- - -# Message: -66 0b bd 40 06 9c c6 7b ad e4 1a 09 ec f4 3c c4 -51 3f 7c 7c c0 2d de 97 2d 2b 1f 29 29 5e 09 b9 -91 0c 59 ed ba 0e d2 dd f1 1a 6d 41 69 35 1f 97 -24 07 33 52 8f 91 b2 68 fa a7 af 90 6e - -# Seed: -30 7f 61 b1 83 a8 dc f9 15 5a b2 35 e6 1f b5 6b -a2 b8 79 5d c4 23 53 85 e8 ac f3 66 d2 52 33 b4 -70 e0 5d 70 11 b6 fc 53 2f 0a 65 8a d1 3a fd 29 -0c 6f 30 e2 79 5e e3 d3 9d bd c8 0f 56 0e ce 2f - -# Encryption: -04 9b 26 05 0a 3a be f8 3e c2 77 61 11 e3 b7 2f -b9 a2 d6 a8 01 05 5d 6b 5e 0d a4 e9 5c cf 2e bd -0a 78 6a 97 21 aa 79 25 bf 15 be b6 27 13 a3 13 -87 7d d8 5d 26 58 b2 08 e8 8e 64 45 fc 35 01 9b -0c ad 6b f4 d0 6e 2c a5 f1 19 49 ee ee 7e e4 7f -1d 5b 4c 88 24 1f 50 e4 d6 ed f0 18 3d 4f a3 5a -37 1f c4 07 36 4f 2d ca a4 cd ae ce fc ea 6d fa -c1 d5 13 f9 05 e7 47 94 47 44 bb 64 57 6b a1 c8 - -# PKCS#1 v1.5 Encryption Example 2.6 -# ---------------------------------- - -# Message: -81 cb 0a 97 69 8f 82 3b 56 b4 5f - -# Seed: -93 8c 8d fd a0 8b 89 05 5b 68 af 01 1f 24 6c ec -1f 93 a2 77 1d a9 7d ba 20 95 4c 90 09 12 28 5e -5d b1 87 b2 9e 32 72 e9 9e 69 4e 12 14 17 25 28 -45 30 84 06 4e 5c 60 f0 1e 78 6f c5 d0 d9 af 06 -39 a4 98 c5 7a de 93 77 60 ae 51 74 84 af d7 02 -5e a0 d5 5a 62 b1 1f 9a ab 7f a5 dd d0 93 e5 ea -ba d6 1b 67 a2 95 a7 75 be 96 c6 b7 6e c3 fe 47 -29 50 - -# Encryption: -7f b8 f3 35 ee dc 4a f6 af 44 07 3d a1 96 45 7d -04 61 45 03 01 47 f8 42 0f c7 9b d5 89 77 4a 73 -0a 6d 94 fb 7e fa dc 5a ee a7 c0 70 f1 89 24 91 -25 e1 66 c6 d3 01 29 ec f2 c4 82 2a 50 49 6b c2 -f2 1e 79 ac 57 db fb dd 71 a6 8b 58 d9 05 1b 48 -0b f4 77 48 a1 3d fb 67 3e ae d7 71 0a 46 8f e7 -2f 7d 74 e6 f4 a2 89 44 04 3a 52 d9 30 de 68 db -cb 6e e7 fb 8b 69 64 05 41 e3 ed 5b 75 4e 65 fe - -# PKCS#1 v1.5 Encryption Example 2.7 -# ---------------------------------- - -# Message: -05 f7 83 56 23 c8 cf aa e4 82 a9 10 85 b9 7f 6b -95 92 8b b9 74 ac ad 02 36 4a af 13 17 ed 53 c9 -db 2f fb c8 a3 cb 3a 00 f4 4d ac ef 78 - -# Seed: -80 c8 3d 25 47 be 41 ba f2 32 1b d3 0a 9a b7 74 -9c 5e eb b5 a1 ff f0 b3 1d 6b db 0a d1 6d d0 c0 -fb 3e c1 57 e7 8b 09 86 60 20 41 cd e8 89 57 a5 -53 29 e3 e2 cf e8 5a 59 44 74 94 5e fa 33 35 85 -ff fd 41 eb b8 e7 c5 18 c3 c9 25 9a ea 8d e6 35 - -# Encryption: -87 f9 ce 05 f0 ac 9c 05 e4 5f b7 bb 55 5a 7a 18 -a9 cd c5 5f 54 4a 54 21 01 e9 a7 1c d2 03 66 82 -0e 7f f6 dc a3 46 75 22 9d 86 e4 fb 58 71 f9 31 -0b 12 bb 74 e2 86 18 d6 d6 58 65 87 f6 6a cc 89 -68 a8 3c d8 07 f4 d2 12 97 73 1d 7c 22 c1 45 99 -e7 57 19 fd 23 05 2b 8a a6 5b 7e 9c 5c 02 00 38 -2d 35 d5 60 f2 d3 3d d0 49 e0 6a c8 27 cb dd 9a -f5 81 a6 b2 6d b6 1d 43 d7 12 4b 34 72 1d f1 42 - -# PKCS#1 v1.5 Encryption Example 2.8 -# ---------------------------------- - -# Message: -e2 e0 f6 b3 28 d9 bb e9 fd 66 cd 87 98 7c 11 60 -ed 23 7b 1c 7c 65 6a 89 fb 1f 21 d7 09 40 3b 04 -10 f8 e4 e1 2e b9 69 0a eb eb 38 07 31 9a 93 65 -64 f6 67 17 a7 1c 48 62 cc c5 6e - -# Seed: -cf 18 e6 08 b1 56 14 5c 44 de 31 49 66 cb cc 66 -74 a4 5a e0 df 90 04 06 e4 0d 3d fc 32 2f 39 40 -4c ee b6 dc 58 f8 01 bb f2 ac 4f 47 84 1a bd 79 -61 79 d0 82 4f 3b f5 51 8d 78 cc 66 ad 8d fb ed -b1 17 - -# Encryption: -14 01 aa 21 ec 6e ba a7 e3 a9 f7 13 c8 6b 50 8e -37 5f 6c 12 5b 29 62 6e bd 34 9f 64 e2 0f a4 8a -1b 06 84 79 ff f3 30 22 f6 6f 86 e9 7d 9c 5e dd -90 26 e3 18 3c e0 86 41 57 06 59 35 2f 87 a6 18 -91 f3 d8 6a 3d 24 5f 02 45 e3 9d 99 89 2c 67 fa -2b ed 8e 37 54 8d e2 3d ef dd 1e 43 d5 d7 e3 d9 -a3 c2 2c e6 a3 68 d8 4c 5a fa 1c c5 bf 49 b6 8f -e5 c2 5a 32 6b 0e ec 5e 44 c5 e2 ff 5a 35 9d d1 - -# PKCS#1 v1.5 Encryption Example 2.9 -# ---------------------------------- - -# Message: -c6 95 78 ea 03 e2 69 b1 b9 16 33 a7 2f 9f b4 d1 -0c - -# Seed: -e0 a1 a9 ba e3 0a 7a c6 6c ab 3d 86 43 3c 1c a5 -e8 ac 2b 74 e4 83 ca 7f 34 59 77 16 ee 16 18 90 -6c 97 77 2f 28 86 f4 6d 78 31 21 b7 fe 1b 8f a5 -fb ec 09 c0 68 e5 63 5c 89 e6 a0 a9 ac cf 2b 12 -c6 47 06 b6 ae 9a 5a 74 ab b8 3f 64 e1 3a 8c 53 -f9 26 76 04 66 b6 45 e2 8e 9a d6 46 1a e7 b8 9d -5e fc cf 7d 89 14 9a a2 e6 9f 0d 25 - -# Encryption: -78 f8 7d 6b 06 76 1b d7 e7 17 e0 c5 eb 40 e1 fb -80 89 9c 7b e4 01 7c 2e fb 07 59 78 ee 38 d0 f9 -5e 98 03 dc d4 0f ee 97 92 c6 1d 4a 2d 85 da bd -ea 96 ca 29 f3 ca 1e 8b cf 81 76 55 d0 c0 94 74 -d9 80 94 eb 6a 7e f0 33 3d 69 71 c9 38 36 fe 02 -32 f7 18 46 3d c9 54 18 53 46 3b c1 cf 03 67 7e -78 6e e5 2e 72 71 c3 c1 1a c0 05 53 c6 75 27 07 -e0 df 92 80 c4 f2 b7 d1 9f d6 f3 d8 bb cc 7b e6 - -# PKCS#1 v1.5 Encryption Example 2.10 -# ---------------------------------- - -# Message: -76 72 cf c2 7a 41 d5 01 aa 4c 41 ba ab f4 52 5a -7c 45 5f c8 - -# Seed: -4c ee a1 a8 94 64 a5 d2 f8 9e 07 89 53 ca f7 76 -36 58 98 a5 bd 5e 8e 44 8c 65 da 26 ff 98 90 0c -d0 80 61 ef 44 6c 69 b4 8d c4 60 9e d8 65 4a 64 -6d 70 82 62 cb 84 09 ac 27 c4 a4 9a df ed 47 a8 -5a d4 29 ed 75 07 75 78 e4 c2 73 c6 1e 2c 3b 46 -be b4 72 f0 a3 45 a0 5d 61 a7 ea aa d8 a6 3e 0b -3d 49 52 f2 7c 40 81 32 9e - -# Encryption: -25 2b 14 13 3f 1d b2 50 13 29 35 01 e3 56 53 4f -26 af e3 34 68 8e 68 d7 91 83 3a 0d 82 56 05 70 -bb b3 ce 2b 16 d8 b5 f7 f8 9e 7e bc 7c f9 c2 94 -ab 34 16 b7 c2 11 87 70 7f e5 e7 99 2e 72 0f f9 -58 da a4 0f 5a d4 5b c7 47 47 96 39 a5 37 fe 0a -4a 75 fc fb 45 a5 3f 01 73 af c0 f3 cc 91 0b 86 -ae 31 37 62 8d 90 ff 67 5a e1 ae 31 e1 64 05 37 -ea 1a 7c cc fb 73 f8 be 5a ec a0 3b ab 19 3b b0 - -# PKCS#1 v1.5 Encryption Example 2.11 -# ---------------------------------- - -# Message: -a1 6a d8 f2 e0 93 23 42 ed 21 e1 37 77 f4 65 2a -35 50 dd b4 36 8b 5e a7 1c 66 db c3 bb fe b7 db - -# Seed: -55 88 4c 83 0d 4a 80 b7 9f 08 9d a7 4d c2 5a e0 -c4 82 46 21 45 e1 d0 95 23 da 3c 93 44 bb 97 b0 -52 fb dc 15 43 df b5 3c f2 37 82 59 68 7c 7b 1b -35 ca f2 f9 19 99 ed 4a ce 39 af 10 d6 be d0 fa -22 44 4c 12 9d 90 74 1c fc da 90 19 8e 27 82 fb -03 bd cc 7c fa fd 89 db 6f b0 fe d2 24 - -# Encryption: -08 32 6a ff 6d 03 cc 4e 26 10 dd 53 6a f7 f2 1d -76 22 7d 82 7d 52 80 d8 b8 3a b9 eb 30 e0 76 9c -fa 02 b5 c1 35 2b f4 d1 70 ce b6 6f 8b e6 98 78 -4e 1a 6c 20 3f a5 ab 90 07 a6 f7 fc 20 65 20 4b -98 2f a5 61 fb b3 61 af 2b 8e ea 42 ab 3f ec 0e -d0 86 22 e5 f2 89 80 52 75 38 0b 69 34 2a 96 f7 -6a 99 04 87 68 90 d9 2f 24 00 20 32 35 1d 8a 1c -bc 3d 27 b2 46 48 21 bb fb fb b9 a6 78 51 96 10 - -# PKCS#1 v1.5 Encryption Example 2.12 -# ---------------------------------- - -# Message: -4a - -# Seed: -8a a0 ce d1 7f 09 ad ae 61 0a 46 03 0d ad 40 31 -1b f1 46 9c 27 37 41 1e 40 f9 23 96 75 1d d5 66 -37 c9 58 db c5 8a 17 fd bd dd db bf 79 75 18 78 -98 be 1a a6 3c 5e ee 5f 9a 19 02 98 0f 59 51 84 -b9 b5 b4 65 b9 2e 20 f7 ae 8b 5a 5c ee 7f 3b 57 -d9 97 a0 6a 70 2d 23 83 50 a9 26 98 ef 27 5d ff -52 77 bd 2c 99 96 47 40 5a db e4 fb 3f 1b e7 5e -15 9a 4c 43 83 13 b7 fd 8a ca 9d ea - -# Encryption: -4c 4e 5a b6 2d 0c 96 7a b8 29 21 42 9f fe 50 d2 -24 0e 7e 0a 18 75 48 87 55 bb 7f f6 15 a8 c9 9a -bc 37 b2 e4 71 47 a9 27 d7 b9 8c 30 db 24 da 8c -d3 5e 13 d7 b7 14 14 d0 32 bd 0c 3c e3 8b 89 b1 -1b 2c 3f 9d 83 08 16 71 6a 2e 8c cd 8c 79 e9 c7 -49 31 a7 b8 a8 db 13 12 8c e4 0b 21 59 e4 98 da -98 f2 aa 35 2f 23 85 31 06 b6 61 d8 8e d0 6f f6 -6a 56 e7 56 59 72 20 bd 10 15 81 53 ce 5c 02 63 - -# PKCS#1 v1.5 Encryption Example 2.13 -# ---------------------------------- - -# Message: -bf fc 42 08 73 f5 af 5d d2 3b b0 - -# Seed: -dd 31 cc d4 7d 4e 31 02 df 0f c5 9b 1b 84 77 af -3a 78 c2 fa 9c 8e cb 4f 0b 3b de 23 50 04 36 55 -03 64 66 5f 81 c0 35 6a bc 0b 78 e9 73 19 11 14 -02 75 c8 66 f7 5a d0 cb bc 88 ad 6b 5d 4d a5 2d -08 e2 2e e5 39 b5 8e 92 c6 19 63 87 e2 21 a0 87 -39 6c be 57 ec 56 03 f6 16 26 27 98 3e ff 82 de -04 8b dc 1b 5e db b5 d4 ea 84 f5 02 24 bd 88 a9 -05 da - -# Encryption: -0d a2 d6 f7 bc b5 0a 47 2e da 24 60 9d a6 77 28 -e5 3c 98 80 aa 5f b6 fb e6 0d 83 c1 1e 6b b3 cf -db 17 d1 4d bc e8 ec 55 c7 3a b0 14 3e 9b 27 56 -bb 69 68 e5 af 1a ed cf 6a 80 c2 6d 49 0e 47 18 -7e a5 d8 cd 2f ac b8 1c e6 4a 72 3c 40 f0 ba 4c -69 3e 1b 11 43 df 15 a4 20 91 70 9a b4 c7 cd 9d -47 07 9e cd 68 f6 a1 96 44 8a 44 67 9a 04 14 10 -41 8f 11 a1 e1 bc e7 8e 77 26 04 a2 f2 77 81 95 - -# PKCS#1 v1.5 Encryption Example 2.14 -# ---------------------------------- - -# Message: -1a 9b 87 29 21 0a 84 71 fc 5c d7 09 f2 ed d3 24 -01 50 24 4b ec 96 a9 2f f8 07 e3 b3 0d 29 5d 3c -34 5c 04 4f 2e 95 60 37 - -# Seed: -58 78 c9 1b 16 6e 90 c3 4e 6e 66 56 8c 15 1f 4d -44 43 40 b5 f1 d7 30 52 cc 56 33 ea 2e 47 ac ed -7b 17 8a 64 fb 09 a5 ad 08 46 ae e4 11 6d 67 80 -ee 75 eb 20 85 16 68 82 0c de c0 f2 c4 96 e4 c2 -88 d8 27 9c 1c 5d 4e c0 0d 98 0c 27 2e 87 05 18 -48 6d ca ea 85 - -# Encryption: -37 00 ac 36 2c f6 0e 16 39 47 a1 98 d0 0f 3b 3b -26 e0 3e e2 fb 78 2b 42 88 b8 c1 de 76 e9 e8 99 -46 c9 80 7c 56 e0 9c 7b 52 be 00 78 ac f6 92 96 -4a cb 97 d1 fa 5c eb 57 76 a1 d5 56 b4 bc 9d b0 -0b da 25 23 7a 75 1b 7c 22 9b 6b 57 f7 ff 75 1c -12 d1 f2 2a 4f b0 e9 0b 63 d0 42 d9 49 9e 0f 7e -fe ad d3 c5 88 f2 c7 43 a1 2c 56 7c 81 57 8d be -eb fd 37 74 da 34 ad 09 ee be 90 17 89 02 14 b5 - -# PKCS#1 v1.5 Encryption Example 2.15 -# ---------------------------------- - -# Message: -a6 d0 e8 c1 ea 4a b4 ec c8 95 7d 62 28 15 79 67 -5a 64 8d 62 b7 f2 2b 2b 08 d1 31 3f 40 6f 13 7e -99 42 67 35 cd b9 37 2f ec a1 ee 78 46 3f a5 de -9c dd 84 75 6c 68 bd 1d 92 ba 96 5f 50 64 10 b1 - -# Seed: -1c 25 c9 b8 32 16 9a 1f db 6c 14 8e 47 e6 6c 3c -c8 21 41 e6 11 a6 f3 0c c9 0c 50 49 e8 c5 02 b3 -1c ad c7 62 39 b7 bd af 93 fa 97 34 3e 7e e5 51 -bc 52 fd b5 ec 9e 40 0a f0 5d be ac da - -# Encryption: -00 e8 b2 fc 76 df b4 a6 cc 43 64 de 8f 68 3c 3f -cd 0a 9e cf bd 4a 5a 72 24 f4 9a e9 b4 f3 b5 cd -c7 1c bb 8c 66 fd 35 f3 d1 8e ca 98 96 7b d4 00 -5d f7 91 52 41 6f d4 7e 56 2c 55 ed c6 d6 12 12 -28 6e f9 75 bc c8 02 69 25 92 65 39 00 97 3c 72 -e0 1a 69 3b 05 fc 2d 58 56 ea ef 7a c0 8f f5 ec -d5 31 e2 c2 ce 92 77 45 a1 16 5a 51 aa 66 98 a1 -ff cb 87 f8 1e f6 51 0b ca f9 cb 76 1e 9e 1f 0f - -# PKCS#1 v1.5 Encryption Example 2.16 -# ---------------------------------- - -# Message: -f3 40 5b 21 8f 3e c6 03 a9 80 69 00 99 c2 cf 5c -be 0b 2b 05 96 79 c4 6b 7e 48 f6 fd c4 da 40 92 -d8 31 c8 b5 2b 2c c7 9b d2 bb f6 e9 f5 7b 4e 8c -aa 94 b5 81 f9 f2 31 26 1f 0e 2b bb f5 3d bb - -# Seed: -f4 70 7f 58 64 2b 54 cb f8 0a 9b 50 48 a6 ec 0b -d3 5d 09 57 16 db 12 06 0c bf 50 58 5f b9 23 79 -81 05 2f 7b b1 58 3c d8 7b c8 bf b5 5b 73 3e 89 -0e b9 c0 8e f0 e8 80 e9 ba 0d 50 ec 95 41 - -# Encryption: -6d 9d 39 19 8b 5f cb 13 2d 93 15 11 49 d7 59 91 -02 4a c2 2e b6 eb 2d c7 c6 05 8f 64 87 56 45 10 -2b 95 25 4e 25 e9 f0 ae 45 06 d4 3c 60 1c 18 8a -31 4f 4b b4 e0 38 c8 15 39 41 6e 10 5e 80 97 fb -69 5a ab 36 fe f5 16 e6 a3 3f 36 f7 f9 5a d1 ff -15 88 90 25 b1 b2 e8 1e 1b f3 b2 de 5b a9 18 7c -a9 6c eb a9 fc ec ef 9c 53 e4 94 34 86 18 59 67 -cf 7a 64 77 c3 29 f0 0e a6 95 52 5b ca 99 f2 c7 - -# PKCS#1 v1.5 Encryption Example 2.17 -# ---------------------------------- - -# Message: -6a fa db e3 da 68 d9 02 85 bb 8f 1e 21 29 ff eb -b1 c6 5b 95 88 d6 c2 c0 40 24 c2 38 b2 0c 65 d2 -ac a5 e3 82 76 00 0a 0e 6a 0d 05 37 ef ee f6 d3 -e3 d9 4f b9 - -# Seed: -ee 17 6e a3 cf d4 90 b6 c0 49 d2 e7 4c 90 c0 ee -74 68 52 03 49 b8 51 65 3d b0 58 a1 c3 e9 56 e0 -88 5f 26 1b 6e 71 cf 1e 62 3d 3b 9d 1d 56 fa 13 -67 e4 7f f3 74 ad 39 30 9f fa 2e 67 11 28 d5 ab -b4 a6 1a 5b 0d c2 db 2c 08 - -# Encryption: -67 2f e9 51 59 a9 89 3f 34 98 b6 16 c1 7b 59 da -71 da 80 2f eb f7 cd 38 11 06 14 a1 b2 5d 96 aa -8a 74 aa aa 2a 0f 00 0e f8 ac a3 b4 1a d1 61 b6 -26 33 f2 41 31 9c 33 e4 ec b7 70 6a b3 ad c6 a3 -ef ea 22 43 0f 3f 5c 9c 4c e5 40 4e b8 e7 5a 10 -93 69 c0 aa 0b 7d d7 13 bd 8b 77 cc a5 f7 4b ca -5b c5 55 69 6b 68 e1 17 2d b4 02 50 1d cd 26 49 -68 5d b0 fd 88 c8 83 60 da cc 65 09 ff a8 df c2 - -# PKCS#1 v1.5 Encryption Example 2.18 -# ---------------------------------- - -# Message: -6d 9f 9b 4b b1 23 ba 90 95 53 a7 57 3a 97 1f 64 -b7 25 24 cf eb 04 2d e3 92 15 f6 50 db 61 2d 66 -d7 ae 86 05 d0 44 19 54 62 5f a9 81 22 33 0e 92 - -# Seed: -7f f8 68 5a ec f3 40 26 13 90 ad 07 42 73 0c b6 -39 28 30 14 ab 37 73 55 6c 69 7f 97 ef 62 1a 4d -cb f8 ec 6e de c5 0d 8e c9 59 0a db af 23 51 dd -fa 0e 52 ea 6e d1 8e b6 c3 78 f3 80 85 ae 5e e4 -cc 48 c1 89 1b a4 7b 20 10 d5 d4 35 39 - -# Encryption: -8d 30 65 5c f1 5b f1 0a 46 97 87 c6 a1 0e 79 25 -4f f0 bd 11 93 8b c6 0a 81 a7 58 d9 3c f2 a0 30 -24 59 fc 2f 0d 77 00 b8 6d d6 ed 61 83 83 b4 4b -45 87 04 ca 11 92 8e 50 4f 02 8e fe 50 37 17 2c -3e 51 b8 37 be 61 56 de 6a 09 c5 55 97 be 74 c9 -7c aa 1d eb f3 14 cd 94 b9 1b 9f 94 cb f7 64 0f -86 c2 6d 1d 6a 0b 10 46 28 b5 87 11 4a a3 1d 99 -f6 9c f9 57 37 93 2c 0c b5 33 33 74 de a0 7f ac - -# PKCS#1 v1.5 Encryption Example 2.19 -# ---------------------------------- - -# Message: -33 cc cb 59 7d e9 5c ed b8 b6 57 fc d8 f8 88 86 -da 04 c7 57 93 53 14 - -# Seed: -53 42 f4 68 43 91 cd 74 f5 28 2d b8 31 41 ff f6 -78 f2 3a 3e a6 52 e0 d4 27 fb 6a d9 76 c5 a7 10 -a6 37 95 77 71 89 47 ac 72 7b 4d 58 a0 b0 bd 20 -7a e3 73 a8 b9 9a c8 e2 51 eb 02 45 8a 9e dc 39 -52 fb 28 42 6d 18 fd a1 8a 80 2b bf 0a 0b 8b 2c -f2 5c a3 a0 22 f7 78 c7 f4 7f c5 30 d0 b7 a5 bc -84 6e ea 91 80 f2 - -# Encryption: -8c 4a 63 d0 73 1e 2e 71 eb 46 15 18 9a 96 8b 3e -4a 24 28 56 b2 09 02 45 23 8b 66 45 97 8f 1e e8 -d7 98 11 06 2e bd 2d 1f 3d 52 3a e6 00 e0 e5 a6 -e4 05 c4 e4 b5 a1 6e 8d fb 49 24 30 4b 0d 1f f4 -d6 41 bf 98 7f c6 d4 1d 3e b7 cd c5 31 34 d0 06 -9c db 5a fe f7 f8 f9 ca c0 ee 52 30 b6 f8 86 22 -a8 4d e5 2a d6 f7 50 47 84 37 06 ca 96 97 42 c5 -8d a7 72 62 ff 1f 12 8a 66 4e 51 cd 63 5e 71 15 - -# PKCS#1 v1.5 Encryption Example 2.20 -# ---------------------------------- - -# Message: -19 d6 - -# Seed: -ea ac b5 78 ae ab f6 9d 4e ae eb 36 d0 4c d8 a2 -2e 8f d7 a2 5f 04 43 a1 1e 4e 08 b3 ff ac 1e 05 -42 1a 87 6c ca 91 31 82 50 be fa ff ef 9b 27 49 -dc 40 2f ad 4f db 7c 1b 66 aa 5e 08 9f f9 9f 8b -30 0c dc 46 f4 8f 56 48 c9 40 8b 5f 8b 3f 5a 12 -e6 50 50 dc bc 0d 53 43 d6 3d 58 08 19 21 65 2d -5b c8 2d d3 d7 0e 07 5d 32 d8 02 c2 97 64 78 fc -9f 09 93 dd 08 59 c9 0e 22 8e 87 - -# Encryption: -61 3b ba 5c 19 0a d7 72 e0 8c 29 07 6e 2e 9e 5f -12 ef c9 29 2e 3b 5c ee 52 c2 69 7f b7 b6 07 dc -72 e8 25 78 e8 b7 53 ba ca df 23 b4 77 25 21 3d -b8 9f 88 73 fa 79 b9 14 a4 b5 16 1e fd 9e 15 cf -a8 dd 1e ff e8 9f 89 47 a6 f3 82 6d c6 bf 53 be -ca 36 5b 93 81 18 45 62 a7 9e 21 ca 0e 68 eb f0 -ab 82 ae 76 2b 28 c1 43 65 15 2a e0 f5 4f 2e 9d -14 43 9a 84 6b 38 3f 5e 2c 55 ef a7 00 85 97 b5 - -# ============================================= - -# Example 3: A 1024-bit RSA key pair -# --------------------------------------------------- - - -# Public key -# ---------- - -# Modulus: -b9 30 96 d0 26 1e fe 00 0b 3d 17 04 f5 04 31 60 -ab d3 eb 56 6c 61 e5 3c 76 c4 01 e2 b6 55 21 bc -12 d4 81 21 51 83 e8 f4 6c 2c a8 d0 0a da 5d fd -04 dc f7 cf 36 cc 58 11 05 d9 9d 2a 7d d9 4b 56 -76 0a 65 64 fe e5 e8 aa eb 06 07 e1 45 19 62 10 -a3 1b 7e d8 dd 2a f3 2d 29 d2 ba d6 f1 5f fa 5a -11 dc 73 5c c3 62 19 02 1e e8 d1 ee ed 34 63 9b -5a 91 ac 6a 92 67 4e 18 39 70 c5 9d 5b 19 6d 4b - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -b9 30 96 d0 26 1e fe 00 0b 3d 17 04 f5 04 31 60 -ab d3 eb 56 6c 61 e5 3c 76 c4 01 e2 b6 55 21 bc -12 d4 81 21 51 83 e8 f4 6c 2c a8 d0 0a da 5d fd -04 dc f7 cf 36 cc 58 11 05 d9 9d 2a 7d d9 4b 56 -76 0a 65 64 fe e5 e8 aa eb 06 07 e1 45 19 62 10 -a3 1b 7e d8 dd 2a f3 2d 29 d2 ba d6 f1 5f fa 5a -11 dc 73 5c c3 62 19 02 1e e8 d1 ee ed 34 63 9b -5a 91 ac 6a 92 67 4e 18 39 70 c5 9d 5b 19 6d 4b - -# Public exponent: -01 00 01 - -# Exponent: -01 07 ea 61 ad ec a5 e9 00 7c 59 13 4a 7d 38 fc -7a f3 10 3a d2 c4 a2 be e3 97 08 be fc 83 dc 79 -b7 0d c9 75 92 db 6d f7 0f b3 c4 9c 25 35 fc fd -9f c2 ce 7b 05 53 92 e3 ee b3 e7 97 93 cc 1b 60 -15 3f 4a 0b ff 26 be 66 7b bc db bf 6e 32 af a6 -fd 14 83 7f 3c 79 be 44 cb 1c 63 8f fa 5c 6b 17 -70 9a 96 e1 27 03 0b b1 11 6d ec fd e5 2b b0 40 -84 2a 94 d2 e6 74 f1 17 51 ec b9 03 ee 10 48 45 - -# Prime 1: -e7 fe c4 74 e0 eb 31 2d 1d 76 cb b2 72 2e fa 42 -10 68 b1 91 e2 33 b6 4e 46 08 7f dd 45 76 d3 85 -55 07 19 35 2e 10 9f e4 33 ac 4e 35 8e 7c 28 59 -eb a7 e4 3a 04 ee 85 9a 46 35 2c 12 43 a1 cc 6f - -# Prime 2: -cc 5a 02 f9 55 7a 63 5c f5 e6 9b 0f 2b 3f 2e 61 -2e 1f 0a bb d4 bc f1 69 ca c0 84 dc f4 b9 b4 34 -43 a7 85 23 90 f8 19 41 9e c1 a8 38 7e f0 4d d2 -db 7d 60 b4 0a 21 f9 4f 46 d2 27 87 4b 3e 52 e5 - -# Prime exponent 1: -ab 92 8b 10 35 57 3b 23 36 6b 28 f2 6b e7 ba 45 -29 85 83 ed 73 f0 f2 9e a8 c4 98 6b b8 77 cc af -0a d7 19 19 6f 5b f4 23 fc e3 2d 64 06 60 64 27 -3c 55 0a 40 ae 6d 08 79 b3 fa 97 01 5a eb 4a 19 - -# Prime exponent 2: -8c 7d 55 8e 15 36 0f 19 d9 f4 b0 a5 bd 15 b2 cd -1c e8 3a 78 e7 c8 fe 2f bd 34 9e 23 4a 1c 61 c7 -8c bb 9e cc d4 dd bc 7f 60 a5 c3 01 14 44 21 3c -d5 a9 5c d2 6a 24 f1 41 8f 6e eb be 17 fc c1 - -# Coefficient: -b0 b1 b9 cb 23 ac 2a 8a 56 36 66 69 9a 52 40 54 -be f3 81 aa bd 75 55 31 a1 df a8 85 dc 8f 98 86 -a5 5a f0 e3 68 63 91 c7 97 68 1a 8f ef cf 24 db -d8 1e 03 13 16 99 8f 5d 81 8d 24 76 da d0 6d e8 - -# PKCS#1 v1.5 encryption of 20 random messages with random seeds -# --------------------------------------------------------------------------- - -# PKCS#1 v1.5 Encryption Example 3.1 -# ---------------------------------- - -# Message: -44 e5 6a a7 7b d9 35 ac 59 a9 bd 32 37 83 e1 27 -42 - -# Seed: -92 ee f6 19 f0 4f 52 02 8f 4c c3 e5 24 1f 0a a0 -92 1b 4d 18 3c 1f 5b d6 8d 86 fb e9 e7 b7 d0 bb -10 4e d1 ca e0 7a c7 d8 0b fd 9c 1c ef f8 dc da -1d cc 69 30 f4 c5 51 37 34 6b fd 68 c1 9d 87 97 -2f 7f 34 cb ae 56 63 26 0f eb 79 f7 60 22 1c d6 -7b e0 66 d5 af 0f 07 3c 0f 2c 43 9e 8b cb 74 63 -ed e4 4c 8b 15 0e ba f3 29 87 26 c3 - -# Encryption: -15 91 d1 ce 0f ad 66 d8 6f d4 2e fd b3 1e 9a 02 -8a 31 57 fb 09 14 b2 47 eb 3d 22 d7 6f 97 69 b0 -e1 9f 6c 06 4c a1 b9 89 06 39 ee 6e 37 b7 09 22 -4d 6b 58 eb b6 55 ae 4b 69 ed 4c d7 5d 81 29 21 -17 c0 69 30 d4 2a c4 d4 2e a7 35 14 21 8f 49 ea -07 ca 97 43 67 09 68 3d 67 a8 e9 e8 08 da 69 a5 -0b 73 9c 42 eb 0d eb 94 a3 49 8f c5 45 0e b6 9a -ce 23 76 76 61 fe df 34 18 3a 1b 6f 42 5d d6 a0 - -# PKCS#1 v1.5 Encryption Example 3.2 -# ---------------------------------- - -# Message: -a7 57 38 29 1f ad 54 13 95 7f a3 b9 f3 b2 ca ac -9f 5a - -# Seed: -3a 19 1a af 45 ed 4c 25 89 20 5d 9c f6 a3 0f 07 -70 0e 38 be 06 25 62 43 01 8d 23 c6 84 da ec e7 -e8 67 e3 9d 76 c6 b6 f0 35 43 fc 15 af 81 bf 84 -f9 64 ea f3 a9 5a 4b 80 86 28 fd 51 55 38 99 f8 -11 c0 8c 62 60 9c 51 4c fa 1d bb 78 d5 a5 b3 3c -c0 b8 57 fc b1 ee cc 53 1b 13 26 34 43 90 59 f5 -5a 73 3e 14 6e 1c a1 eb 5a 97 f4 - -# Encryption: -70 aa f7 24 39 6c 1a c5 0e db bf e8 34 1b 08 7b -a0 ff e2 87 60 5a 8c 3a 8c cf 85 ab 2e d2 fe 22 -15 9d 62 aa 02 74 76 eb bf 07 70 02 6d 2d 3b 0c -0d 77 34 fa aa a8 d1 5e 2c e5 1c 85 53 5c 26 b4 -15 0a d6 34 6e 3b fd 38 db 5d ac f7 52 e7 5d 75 -31 40 54 d1 67 a9 6d 81 9f 34 38 a7 be c4 46 7f -c5 60 a6 94 46 94 85 e8 e7 8e 47 e4 e8 27 7c a7 -d3 fd 2a d9 4a 30 46 4c 24 57 85 47 25 c6 16 15 - -# PKCS#1 v1.5 Encryption Example 3.3 -# ---------------------------------- - -# Message: -87 31 2f 78 7d e0 65 97 50 d6 02 ac 11 02 - -# Seed: -a2 29 e3 e8 ef 1c aa 66 ca f0 d8 ac d8 d6 6b 9e -41 cc 77 1f 26 e2 0f 12 ec c6 e2 aa 38 45 51 3d -d1 34 f7 c6 e5 74 f4 1b 21 5d 1d 11 17 56 da f9 -71 cc f3 9c cd ce 78 16 19 d7 97 20 df 91 8d 33 -9c 82 6d c0 49 b3 90 91 7c 17 ba 0f b1 30 2f ff -11 0a 14 dd 23 84 90 27 41 f9 12 b2 6a 1a db e0 -ed 1e 8f d9 89 71 0b 40 3d 27 c4 e0 18 fb 9b - -# Encryption: -03 38 46 d7 66 4c 8f 92 62 57 c7 fd 32 64 48 47 -92 ac 7f 9b c8 75 8a 7a 16 ab b8 9f a3 cc c4 d1 -3a 1e ed 88 af 73 23 bc 3c 74 e2 3f da b5 03 81 -89 4c 86 26 df d0 ac 85 89 d4 62 34 d3 c3 5f 18 -99 81 79 44 84 31 dc 81 6f b6 3e 55 cf 26 d7 4a -9d 2a 09 32 67 3c b4 be b8 29 cd 7d 49 50 88 48 -c6 d0 c0 0d 5c 70 f7 fb 47 67 70 e4 03 19 23 7c -78 6b f4 e2 6c 48 d2 cf d9 6e e3 62 bf 29 28 25 - -# PKCS#1 v1.5 Encryption Example 3.4 -# ---------------------------------- - -# Message: -9a 2b ca 75 e3 26 49 77 7b 9f 13 ec 30 fe 16 bb -8a b4 6d 6d 5e 0c 64 63 a7 3d 8c 36 63 ad ab c7 -23 bd e7 2a 50 76 5e 7b 30 0e f6 b5 61 de e8 84 -84 88 0e 4d 61 2c - -# Seed: -8b fa e9 22 2f 75 a0 69 98 ed 6d 9b 14 9e 89 05 -cf c8 db 05 5a 0e 32 ac ed f8 24 d2 f6 b5 b4 2b -3a ea c6 a7 10 4e 14 4d 5e 48 34 28 0e 36 44 5a -b8 50 f3 a6 de 16 4c 2c 79 0f e7 d9 d7 bc 7f 9b -db e2 52 17 da 2d ed - -# Encryption: -6e c5 f5 59 c8 a3 20 d9 0d 1e b5 ef 09 1c 4d 12 -55 a2 4a 69 19 41 0e b1 df 65 a9 7b 30 cd d7 fa -e1 8e 65 12 a0 27 e9 76 70 4b 4f a0 44 37 43 93 -d5 01 e2 ba 46 18 62 00 ef 0d dd f1 9c 75 77 58 -e4 67 94 30 bc d9 fd 11 9e a2 43 b3 49 dc f8 1c -34 32 d3 1f ba 91 1e c6 fc 68 6e aa df f6 b9 fd -f5 3a a4 c8 5a 49 a2 2a 05 1c 5f 18 07 f3 08 3b -1b 3e 61 17 b4 ef 12 08 de 0a 80 01 dc 29 1c 4e - -# PKCS#1 v1.5 Encryption Example 3.5 -# ---------------------------------- - -# Message: -df d6 3e 6e c6 1e 07 27 5b 8e 37 cc 63 69 e1 f3 -ec 0b fc 57 a2 98 b9 05 ae 5d 07 74 e0 f5 22 e6 -75 9c 7d 11 6f 8e 8e fe 69 45 0f a7 a8 38 9f 81 - -# Seed: -c4 22 37 7b 89 86 4b 0d f3 8b 4f 9c 15 f9 8a 05 -96 55 e1 c9 b0 c7 09 63 5c a6 06 49 d8 d2 47 5e -e1 6c b1 27 f6 76 39 12 96 4e 19 84 d6 da ad 4d -6a bd 04 b0 46 18 b3 2e 53 25 ba 95 eb 5e 76 db -d4 6d 9f b5 9d f0 7a 08 1e 95 6c b0 73 - -# Encryption: -9e 06 cd 91 a4 4a 9a de a6 a7 98 03 d3 e6 bb ab -17 db 10 62 b6 51 0b ed 40 07 55 66 74 95 44 c0 -3d 7a 78 b1 37 b0 dc 1e 66 26 32 1f ed af c2 0d -cd bf 70 80 f7 f5 bd d5 67 44 ce 99 9f 76 70 5c -4f 5e 6f a1 5f 46 c5 ae 50 80 90 db bc 85 fb 86 -89 9c 95 78 60 8d fd 77 8a a4 a7 9d 3d 73 63 54 -cc fb fa 2c 86 f2 9a 7a 58 45 3d 75 7f d5 22 f7 -84 08 d9 91 6b 1b d0 65 4b ff e6 e0 66 ba eb 50 - -# PKCS#1 v1.5 Encryption Example 3.6 -# ---------------------------------- - -# Message: -5d 91 fb c1 a7 ba 79 93 9b 89 a2 40 8c ce 8e d4 -bb 26 66 dd fe 09 d9 19 21 a0 aa 69 09 6a 95 69 -92 c2 1c - -# Seed: -af 07 fe a3 21 ea a2 67 af 7f 09 80 6f 9e a8 b4 -cf 13 5e d6 f1 43 2d 51 b2 8f 92 44 87 09 c2 ee -8a ed 7f 73 b6 28 2c bf d3 7f 82 db a8 72 3e 5e -5e 0a 81 f5 90 f8 2e 2f a8 4c 3b c0 0c 9b 9f 91 -aa 55 3b 8b 2c 07 4b fe ca c2 f5 52 37 f4 cb 70 -54 3a ba 49 94 68 cf 68 44 c3 - -# Encryption: -76 05 0e 22 64 22 0e 10 05 2c 49 b9 6c c8 41 1e -39 6a 7a 6e 4a ed b0 6b 48 fd b0 71 de 83 9b 40 -1c ac 0c 46 8d e8 d1 ed 0b 56 8c e6 90 e8 03 7a -f5 de f6 b3 d2 db c7 b5 f2 fa de 35 6c 26 cf fc -dd 33 40 33 ea 2c 99 77 92 d9 30 a7 26 46 12 5c -0e e8 6a 4d d8 43 c8 24 c7 a5 2a c9 88 c9 2e 6c -69 b5 80 76 1c 49 88 1f 29 dd 8a 76 da 79 3f 43 -2e 7d 5d c7 31 a2 5e 5b b5 02 58 d0 27 39 5f bd - -# PKCS#1 v1.5 Encryption Example 3.7 -# ---------------------------------- - -# Message: -04 ed d8 3c 65 65 6a 01 - -# Seed: -88 f9 a2 71 97 f9 f2 57 fa 81 c0 e3 05 90 b7 3e -9e 11 c7 6b c8 9e 08 53 6b 4b 64 a2 50 6a eb 33 -b4 50 74 73 08 09 a0 5c 45 b9 bc 95 71 73 69 cf -92 c1 bf 98 6e 53 ba 11 23 83 30 fd c4 e0 5e a1 -07 33 4a b3 11 06 ae bd 9c 6c 29 e5 01 a5 7d 99 -7c 01 bb c1 01 0b d5 2f 05 38 b9 51 59 f3 91 32 -0d e6 db 23 d8 16 2c f1 46 58 4c 6e 07 6c 4e ae -86 20 72 eb 5b - -# Encryption: -79 1b 37 91 48 a8 3a 03 4d 31 2a 82 bb b3 7b 11 -1b 40 bc f6 a3 37 fd e2 89 b0 8e 07 2e 44 03 19 -73 ff 9d 0c 27 f7 0d 64 a8 ea fc 6e b5 f8 eb 4e -52 e2 c4 19 7e cf a5 45 ed 63 ae 9a 12 83 79 d3 -f5 62 a1 8f e3 ad 14 05 27 67 f0 54 1b 90 16 81 -85 cb b7 8d b6 03 81 c0 92 bc 23 e1 aa 05 b4 08 -92 f9 a1 16 e6 25 cb 14 8b 56 07 42 cc 12 78 c4 -d2 1a 4a 7d 37 f6 98 2a ee 27 f2 a4 c0 c5 73 d2 - -# PKCS#1 v1.5 Encryption Example 3.8 -# ---------------------------------- - -# Message: -3f 7e ea 78 1b 77 d8 5f e3 71 b3 e9 37 3e 7b 69 -21 7d 31 50 a0 2d 89 58 de - -# Seed: -49 99 c6 4c bf a3 85 24 ad ca b6 6f 64 45 4d 36 -fb fc b2 98 6e 1f a4 75 3a 0e 03 88 9f f0 6e e1 -60 0e ee 23 be 53 a9 74 42 b4 2c 69 62 18 66 63 -2e 4a 6b 6a 1c 71 05 73 26 1d 71 f3 8a bf 9e 52 -49 dd c8 e1 b7 7b 3f 12 6b a0 88 15 c4 fe 63 31 -4f 9b 9e 8e 7a 40 c7 fc 72 86 25 20 ed 49 d4 12 -59 ab 2e 0c - -# Encryption: -74 fd 8b 98 56 d7 57 6e 0f 12 87 e0 e9 08 5a 38 -01 e6 b6 77 4d b7 33 54 1d eb d3 9e 72 cf a8 29 -1f ec 27 01 8c 9f 53 05 a4 4c cb 5a 3c b5 91 fe -d2 e6 a1 d1 d8 5c aa a7 4d c2 37 59 d6 66 5a 45 -70 a6 37 f3 ab 30 4b 76 61 31 3b 96 71 3c 7b 7e -49 77 31 33 dd 5d 4e f9 d2 9a 1a f7 12 00 15 02 -8d aa b3 df 04 2c 56 26 20 aa 49 d2 c0 14 41 4d -fb 15 77 d7 19 a9 58 82 64 71 2d e3 bf 4a 76 79 - -# PKCS#1 v1.5 Encryption Example 3.9 -# ---------------------------------- - -# Message: -a3 85 08 d9 46 0c 63 f4 15 81 a8 86 9a 75 82 4b -14 f5 c6 50 32 29 99 dc 41 13 50 d0 d4 e8 62 4f -f0 9c eb 00 d3 be dc 5d 76 2a 40 c9 39 80 04 - -# Seed: -6a 0a 28 8a 1e 67 43 0c 66 6a eb ea 44 b5 82 a9 -09 69 cc 01 e9 0a ae 10 53 ce 55 ee b9 87 9b cc -62 25 39 15 e9 22 f1 09 66 67 bd a0 2a 14 e7 07 -47 b3 59 35 24 c2 84 85 47 d2 11 4d 1d 0c dc b9 -7e b4 df 45 5b ba c9 b0 cc 29 08 39 b7 3a - -# Encryption: -a6 77 57 80 8f 5a bd c8 1e db 7f 69 2f 9f b8 52 -f1 a1 66 1c 4a 00 98 05 c4 4b 21 6c d3 b1 32 2b -bb 25 d1 45 8e 31 b0 f0 7d 65 50 57 59 c4 b4 14 -7f 23 cb ee 2a f4 a1 a5 93 8a 06 8c e9 c5 32 3f -f5 3f 4b 39 2e 12 50 d0 37 b3 1e 62 81 dc df b9 -6b f4 bf ea a1 47 f0 96 c7 84 c9 2f 4a c5 70 91 -12 28 02 50 29 c3 b5 23 30 3f e8 22 7e 8b 2c c0 -ef 15 70 14 cb 67 31 aa c0 9b fe 6f fa 18 ea f6 - -# PKCS#1 v1.5 Encryption Example 3.10 -# ---------------------------------- - -# Message: -f7 84 05 23 6a 9e b5 57 aa ce c6 00 7d bc 4c 0e -de 78 ed 12 b0 4c 82 88 8a 82 c2 13 - -# Seed: -86 f0 72 3b 31 68 e2 ae ac e9 ec 2e 95 fd a6 e6 -d6 fc 8d 62 94 55 65 66 39 9d 73 11 e7 99 fa a9 -b1 ee 1f 03 2a b2 e5 34 a9 1f bc d0 7c 8a 7d 04 -a9 b4 85 f3 1e 07 23 fd 29 eb 21 88 06 9d 9b bd -76 29 dc 6e 3f c8 9b e6 04 bc f0 0c 52 fa 8e 1d -6c 62 55 5f d1 f6 0c ec 02 d4 d9 61 d8 28 da bc -4a - -# Encryption: -6e 8d 2f b0 b2 ee f8 2f c1 10 ce e0 a9 d3 84 2f -2a 05 8a 24 40 7f a1 1b a9 05 d1 aa 50 e8 cc 12 -de cc 07 3d bd 08 a8 c7 05 18 ef 25 db 96 fd a2 -41 1c ca 08 72 87 88 95 6f 73 df a1 20 e0 ea 60 -5b ff c9 3b 43 a4 41 a4 3d 0e aa 3f f0 73 e6 98 -2e ef 52 96 39 06 07 e2 5a 58 8a 39 82 55 ba 00 -5a 48 5e 6e 73 2e 3a 19 20 cd 43 a3 90 fb 66 d5 -42 8d fd 62 89 74 b8 af f2 f0 60 2d a5 78 d6 25 - -# PKCS#1 v1.5 Encryption Example 3.11 -# ---------------------------------- - -# Message: -56 1d 27 c1 d3 f6 d5 d1 a6 43 aa 47 e5 5d 78 eb -00 f3 2d 42 89 6a 34 e0 c1 d7 1b c3 a5 45 7c 92 -05 be d1 3b 98 4c 52 59 - -# Seed: -98 17 6e 1d 67 a2 46 2f 5d c1 bf a6 e0 75 95 42 -10 4a c1 48 11 d3 18 79 38 25 04 55 c6 5e 4a aa -76 32 bd 2d 1d 75 2e 1f 34 c5 3c ab 26 76 76 a7 -8c 10 c9 98 e7 73 fd 8f fe 35 c8 67 c4 43 be f7 -98 65 aa 2d a2 91 5a 85 c7 02 63 23 69 3e 45 4d -8a b3 2a 77 15 - -# Encryption: -0b c0 47 83 c6 92 44 7a 3d e6 1f 53 b7 2f 7a a4 -10 31 6d d5 09 a6 f4 9e 3a ba 56 ad 1f f8 6e be -9e 63 66 e1 7e 51 45 00 76 be a3 71 d4 c6 89 cd -61 49 5c d8 fa 29 c0 e8 7b 6d bf a8 e3 86 c2 e8 -20 e4 c7 42 a4 87 e8 9b 27 5a 21 86 e2 38 40 be -9c 02 52 7b a7 17 e9 e6 0b 5b f4 17 71 1d f3 4d -7b 8e 2d 12 bc eb 85 93 85 fa 00 1d 4b 4b ff bb -c0 ed ef bd 40 02 41 84 68 c5 66 fd f6 b8 35 09 - -# PKCS#1 v1.5 Encryption Example 3.12 -# ---------------------------------- - -# Message: -eb 5f 8c 0d c9 d9 01 06 1b 82 ae ff 8d 67 d8 bf -fc 0c 04 7e cc 4a a3 46 b2 3b db a6 2a 87 e9 dc -77 0b 11 69 5f bf 19 02 f2 4b 66 ce ab - -# Seed: -74 82 77 0f 3c f5 7e db 81 40 eb c3 3a 02 82 45 -ee 06 48 52 06 89 a5 0e 33 f5 f4 67 f6 d1 e4 32 -4e 1c 50 c8 99 e5 ad 2c 46 c9 7f 81 20 d1 c7 22 -39 d6 a8 2d 8f 8e bc 80 b9 73 ee a8 c5 45 69 29 -50 45 14 b4 b1 56 62 84 4f 29 50 62 f2 1e bd 92 - -# Encryption: -b8 40 43 54 a3 81 b7 c2 ab e5 f7 28 25 f3 d3 15 -bd ac e6 c3 cf bd 88 b8 97 68 61 20 05 19 7c 61 -66 38 83 f2 c2 57 4f 99 5e a6 f9 4e b3 4f 27 68 -62 b3 3f 58 a8 83 92 23 70 6b e1 c1 ff 47 23 05 -f1 1b a9 56 2a 0e b0 12 f1 aa f8 5c 22 e8 8f 2f -df ea ff 86 33 d3 cf eb 5f 76 4f 42 28 92 0d e3 -0c 6b de 2c b4 e8 f0 3d 90 ed 54 8f 64 85 00 35 -1a 5f 41 df 74 ad 65 e8 c3 be e9 50 5a 7d 70 e1 - -# PKCS#1 v1.5 Encryption Example 3.13 -# ---------------------------------- - -# Message: -5a 7f 0e ae ba e4 9c f5 7c 47 5a 6d a6 79 43 a7 -d3 04 6e 3f 7c 7d 50 b0 9a 80 98 b5 44 69 39 68 -93 cf c0 b2 f0 8f 6c 2b ff 23 50 51 57 5e 6e 56 - -# Seed: -fb 08 48 86 db 37 98 d2 b5 bb 35 a3 b1 d3 af 4f -df c0 45 6c bc 79 7b 96 40 d8 c4 4a 0e 03 4e 40 -37 2b 34 fc 7c 1e 8b 66 01 1b 4e cd fa ec 6e e4 -cd c8 28 cb 1a b4 91 27 4a c1 e3 9f 67 58 7a 55 -47 67 09 b4 02 3f c5 69 cb e8 b4 fd 4b - -# Encryption: -07 78 4e cb 8c c5 ba 02 d2 07 ba b0 55 c0 e5 5d -10 a9 b9 42 70 cc a2 50 ee 75 fa 1b 5a e1 90 b3 -3b 96 96 eb 2e c9 72 b2 6a 0e 94 23 af 16 aa 37 -89 17 62 76 06 0a 76 40 03 21 11 74 82 96 34 03 -4f 97 12 c9 17 10 17 f2 fb 21 3f 25 c1 46 c2 65 -1f 89 44 0c a5 36 e5 33 e3 05 cc 6b 01 13 39 8f -61 b4 63 b0 73 e1 be 05 07 3e 9d 64 bc ae ea 54 -44 b8 20 c6 ab f3 46 54 30 ff 4d e4 a8 bc 0e 75 - -# PKCS#1 v1.5 Encryption Example 3.14 -# ---------------------------------- - -# Message: -f9 1c 71 af 5a ea ca e1 79 e1 6e 87 c9 02 3b a9 -4d 84 d7 51 6c ec 6c 39 89 80 1f b3 e7 ad d0 64 -bd df 92 8b 50 00 94 0b bd e5 39 d6 23 37 9c - -# Seed: -de b2 60 25 8b e2 c8 53 35 21 57 b0 65 26 b1 43 -ba 13 3c 4f 49 bf 3d f2 c0 50 ec b2 c9 ca 32 53 -11 b3 c3 e3 d8 8d f6 c2 4a 89 4e ab 63 74 5b 62 -53 e3 c4 6b ca 17 1a 26 a4 f2 fc 0a b6 2b 8a 2e -63 a0 18 eb 47 01 8c ab 95 1f 59 f0 20 3a - -# Encryption: -0d ff ff 51 97 10 c9 ea dc 53 3b 10 8a 4c 29 74 -fe 53 18 91 a3 41 07 a6 74 27 93 5b a7 20 cd c6 -f6 ee 02 9a 1b 03 68 61 db 14 04 c5 86 49 90 54 -1f a2 42 13 01 a7 b2 48 cb 11 f3 65 b6 a4 aa 94 -6f 22 31 cb b1 47 32 b0 1a a4 a6 0b cb e5 20 ec -6c 38 53 a6 95 8a 93 c5 b6 8b 85 d4 bc 3d 84 15 -ef 8b 1d 4f 63 03 8f 4d 94 2c a6 bc 7a 38 25 1f -15 a4 e3 3b 18 9c 25 0b cf bc 03 15 6e 4f 92 11 - -# PKCS#1 v1.5 Encryption Example 3.15 -# ---------------------------------- - -# Message: -07 90 c0 81 f3 61 c9 5b 59 d5 27 d3 cb 50 71 0e -66 e2 72 59 50 10 25 ed 3f 20 f3 0c - -# Seed: -fc fc 2d 56 cb 92 6d 90 5d b3 6e 1e 2e ff 1f bb -75 d6 53 51 7f 59 e8 6f 71 bc 4b c5 57 26 f0 88 -b8 21 62 44 83 b3 e2 9a c2 1a 49 bd 85 91 34 90 -8e 6c 0e c1 a0 dc 80 79 93 01 44 12 0d 1f 6b f9 -3b c6 27 b9 99 69 b2 af e2 1a 7d e1 0d 96 f6 ef -43 c5 67 b5 e2 38 38 5c c1 1a 5a 2a 13 e1 78 55 -8b - -# Encryption: -7f 0e 6b 34 2d 6a 13 54 66 be 41 73 38 1a c0 4a -ba ab 7e 14 fd cf 51 01 89 87 e9 69 67 16 9a ea -97 78 03 eb b3 24 2a e9 ad b4 6f f5 11 20 93 4b -39 21 46 31 b0 3f 5a f5 bd ea 1c ac d3 28 ad dc -d4 0a 3a 29 96 6b f9 8b d7 c8 c6 fd 0f 4e 8b 97 -2e 2d a1 0c 6c c5 52 05 86 7f 39 04 ed 60 f5 b5 -be df 7c 3b 3c 7d d5 f3 87 54 8f 40 05 67 02 ea -72 01 76 dc e2 06 d4 13 d7 42 3f 94 3f cd f6 39 - -# PKCS#1 v1.5 Encryption Example 3.16 -# ---------------------------------- - -# Message: -93 c4 1a 1a dd a8 f6 93 60 f4 1a 58 ec a0 b5 5e -cb 37 a6 a9 00 fb c7 da cd 9c a3 99 c2 3d 31 72 -61 53 77 ac 0c c6 b0 ed 43 bf 59 7f 21 cd 25 9d -8f 80 88 7b 15 9d 96 d6 61 61 d5 58 9b 95 f1 fe - -# Seed: -99 1a 2a 7c 06 1c 23 a8 eb c9 48 9a bc 1b 4a 64 -a5 d4 e8 38 d9 fc ba 42 88 c0 1f ea d6 6d 59 f4 -96 36 e4 a8 d7 52 4c b8 9d 7a dc 7a f3 f6 1a e6 -b3 9b 58 8f b7 7e b7 02 23 62 ff d2 6b - -# Encryption: -7e 54 a4 32 f5 25 c5 23 33 ab e3 bb 45 48 7e 03 -9a f9 4d d3 ef c3 58 44 dd 8e 83 5e e1 00 61 78 -e2 4d cd 19 fc 07 66 7b 4a 34 f3 bd 77 1d 09 a7 -e2 9f 8c a1 7e 88 d0 29 b9 0d db 5f 28 13 be 99 -00 0d 59 f5 43 2c 46 6a 84 28 75 77 20 4b f7 65 -97 39 27 69 98 30 57 47 66 7f af d8 02 9c dc bb -59 18 39 3c 2c fc e4 d8 4a 92 20 ea 3e 38 19 72 -53 36 f2 5f ee 8e 08 5d eb ed 33 32 d5 dd f1 ee - -# PKCS#1 v1.5 Encryption Example 3.17 -# ---------------------------------- - -# Message: -9e 2a 7b 37 74 b1 1e 62 b6 49 0b 56 51 a0 c1 8e -09 2e 9f ab 8b 22 84 ae 46 43 be c3 6b 26 5e 5b -a3 c5 1a c3 85 b2 c7 3d 22 0b 2d c2 e1 0b 0d 69 -0f 67 94 5a 0c 42 b3 bd 09 d0 a8 a7 - -# Seed: -a1 8b fb 74 f6 de bc ed cf b4 7c 7d 5d bf 10 6e -77 4d 7e f6 63 8e c3 82 18 69 cd 2e d6 2d d5 32 -5f 4e 57 33 b8 bf d5 fa fc 43 e4 16 4e 78 d4 38 -99 4d 85 33 7d 7f 0d 38 f0 ea 3b a3 7f 4f 41 b6 -a7 - -# Encryption: -18 c8 8a ee 25 36 d9 42 f7 62 2a 64 4f ad 6f ec -d3 32 28 c7 ae a0 ca da 0e 53 1f 4c cb f1 c1 f2 -69 cc 95 86 29 a4 3b 97 52 fc af 2b f9 53 ec 9f -7e f4 bb 0e 62 d1 28 e0 cf 4b ab e9 2c 6d 92 84 -9e 98 38 dd 88 e2 b4 68 bd ce fc 04 a9 e4 cb 55 -e2 a5 18 ca 25 9f 9e 81 a4 9f 28 df 34 76 1f 9d -ea 2e 70 59 56 62 62 6c f9 6a c0 5a 7c 8b 10 33 -33 e9 06 e1 32 63 9b 65 a7 66 f4 09 2c 8c a0 78 - -# PKCS#1 v1.5 Encryption Example 3.18 -# ---------------------------------- - -# Message: -0a c5 2d 40 01 f2 5c 2c 9d b9 1c e5 0b dd f0 d5 -91 9e 19 96 2e 83 b0 7c b7 9a db 00 43 6e 13 66 -b0 aa 8f 3f d1 ee 79 6b 23 c8 bc 56 0c cf a4 bc -bd b1 f8 40 4d d6 f7 55 15 20 d7 d9 e2 - -# Seed: -22 ff dc fe c6 f0 6b 1b bd 14 53 97 70 43 a3 4e -dd f8 59 4d a0 22 13 09 14 97 55 42 f2 f0 0e 98 -f3 1e 0d d0 c4 8f 7e e5 f0 9d 6a 52 71 21 ad 23 -37 1c 6c d0 e0 79 0e b7 30 8b bb 08 96 dd 59 0d - -# Encryption: -b2 69 57 c5 62 29 4d e1 f3 93 24 b1 cd 80 3c fc -39 fc ee 2d 3c 9d 13 79 f8 a1 12 07 9d 69 43 68 -f5 55 03 c2 09 4d 98 8a 8a 5b 5a c5 49 be 1c f5 -53 16 04 5d f5 b6 f6 33 a4 ef 1e 1f 01 9b a1 b5 -42 bf 0a 87 fa 3e 5c a3 f6 b6 1c c8 56 61 28 a0 -fa 41 8b 08 25 c9 0e c2 f1 ec 74 e5 87 cd 80 57 -d9 52 96 7a c4 52 1c cd bf 63 26 f3 50 93 00 93 -82 6d 2e fa 05 8e d6 44 15 37 4d b3 20 48 85 ca - -# PKCS#1 v1.5 Encryption Example 3.19 -# ---------------------------------- - -# Message: -a8 00 34 62 f8 06 b7 f6 61 fb 66 46 32 - -# Seed: -c7 43 f4 a6 da 03 ab 2d e5 a7 31 cb 88 d8 ca 9b -61 c7 31 9a 5f 8b f9 d2 37 87 7a 05 d0 f3 68 c3 -60 8a 05 2a c6 ce 13 73 17 95 47 55 42 ea 16 a8 -62 91 3d 04 32 f0 8b d8 c8 b6 ff 81 95 69 1f ee -5e d1 42 fb 9e ca 94 67 52 4b d3 b5 fa 5a 4a c6 -14 3b 0d 38 25 0a e6 21 d4 39 90 9c be 3a 6b 5c -01 fb ea 2d 7a 3f 1a e4 1d 61 fd d6 47 64 14 9f - -# Encryption: -b7 38 e1 c4 29 f8 fc 06 82 fa ad c8 ca 87 ed 8f -16 df 93 0f af 43 b1 99 1a ac 71 d8 8f 26 4c 0d -82 9a c0 3d 23 c2 5f c5 f3 e8 5d d3 02 cb 7b 15 -33 e6 8c 24 16 c5 1a 79 bb cc 7c 29 b0 7e 2e 0e -23 c6 f2 df 0d 07 81 91 7e ba 1a 57 08 62 8e ed -8a 15 b3 b1 84 af 70 0d 0d ab b1 4d f6 0b 09 ba -d2 12 7d f1 80 f4 d6 f7 29 65 87 60 d6 33 c7 77 -5a 7b 59 6d 09 d9 03 49 1f 21 09 6c 34 c3 95 3b - -# PKCS#1 v1.5 Encryption Example 3.20 -# ---------------------------------- - -# Message: -ef 32 - -# Seed: -43 99 cb 04 4a 60 07 6d 18 cc b3 4e 8b 07 8c 81 -8e a7 7f 63 b0 a4 3a bd ec c5 77 81 93 a8 bb ba -5d 56 d0 fc 4e 82 a2 11 51 6b bd ef 44 e7 f4 e7 -fe bb e1 e1 92 3c 99 9a 7e 96 1c d6 ee 1c 41 6a -85 96 e2 4b 63 83 a4 69 93 5f 33 d1 56 fd 5b cf -db d4 27 46 0d 48 66 83 06 1e 41 05 f3 5b 5e 75 -23 20 15 5c 7f 69 ad 8e b4 02 cc 11 06 e0 28 9a -9b 49 65 82 3e 7a 51 cf e4 d2 6d - -# Encryption: -13 1b 62 5e 86 e6 cd 1e 08 ac f1 95 d9 3c d3 a0 -dc 8b a9 e2 dc d6 fc 99 6b e2 17 24 af 17 90 b6 -88 d7 9d 3e a9 a9 50 98 ca bb e8 a5 d4 85 92 e4 -74 6b 0e d2 af 7c af 89 b7 b6 15 2e 38 24 d9 15 -89 ee ec 33 75 c7 1a 89 97 48 70 3a cc 1e 8d 1d -e4 71 ea 75 28 04 0b 79 5f 29 9e 66 8c ec 9f 5a -f3 eb 48 f9 8c 0d 85 20 67 77 3e 10 1f a2 4a eb -6b 40 4d af b4 2e 7a 63 b0 4a 66 bd 0e 9f 9c 94 - -# ============================================= - -# Example 4: A 1024-bit RSA key pair -# --------------------------------------------------- - - -# Public key -# ---------- - -# Modulus: -e9 f2 5e 48 14 0b 5d cf 46 99 e3 03 7f a8 34 f0 -c7 8b 16 73 5f f7 9f 6b 18 ae 60 b5 18 48 d3 06 -99 ec 64 6d 85 7f 15 77 0e 2c 7a 0c 0c 90 0f b6 -04 0b 5f 34 48 4e 9c f5 ce da 23 d5 b2 50 ef 93 -28 6f 01 1e 9a 5b f9 e5 42 e5 c9 f4 42 de 54 58 -e2 3e 41 d1 d9 cd 9f 0c e1 cf 20 08 d3 ea 4d 80 -32 e8 54 cf fc df 5f 69 8d 13 16 e0 29 c4 88 fc -bb 2b e2 9a 4e 7b fb 8e 6e 81 d3 42 12 3e e7 5b - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -e9 f2 5e 48 14 0b 5d cf 46 99 e3 03 7f a8 34 f0 -c7 8b 16 73 5f f7 9f 6b 18 ae 60 b5 18 48 d3 06 -99 ec 64 6d 85 7f 15 77 0e 2c 7a 0c 0c 90 0f b6 -04 0b 5f 34 48 4e 9c f5 ce da 23 d5 b2 50 ef 93 -28 6f 01 1e 9a 5b f9 e5 42 e5 c9 f4 42 de 54 58 -e2 3e 41 d1 d9 cd 9f 0c e1 cf 20 08 d3 ea 4d 80 -32 e8 54 cf fc df 5f 69 8d 13 16 e0 29 c4 88 fc -bb 2b e2 9a 4e 7b fb 8e 6e 81 d3 42 12 3e e7 5b - -# Public exponent: -01 00 01 - -# Exponent: -45 45 88 68 44 53 27 48 60 49 e1 bf df f5 61 13 -a8 aa 45 10 0d ab 07 4f d1 63 94 ec 1a 90 39 b8 -1b 2c b5 81 fe 84 e6 48 b5 f0 32 85 4d d4 fc 69 -f3 61 a0 a3 9d 03 76 13 8c d7 e7 c3 77 84 e2 a2 -f9 d4 f2 66 84 cc 5c c9 f5 12 ba 62 15 eb d2 32 -f9 aa 3d a4 69 db 43 da 1c 06 46 e7 5b 33 aa c5 -70 08 1b 5b 2e 96 ea b7 54 6a cf 93 17 85 aa 2f -d1 82 4c be 2c 5f 9b f5 63 34 ec 15 66 d1 cf 45 - -# Prime 1: -fc df 1c 49 35 8a 1a ac 93 88 c4 6c aa 04 72 fa -35 b2 1b df 99 a2 7b c2 ac 65 46 7b 88 d0 16 1f -bc 70 f3 f4 fa 13 a5 f3 a9 8b 59 c0 67 ea bf 19 -62 16 a1 b8 9e 20 af b2 e5 e5 ed de ae 8e e1 ef - -# Prime 2: -ec d7 51 d3 d3 f3 b2 08 bd 71 8a e4 35 5d 23 f9 -16 fa 8f f6 7d f0 36 61 6b fd a7 cb c8 7a eb ef -aa 7e da 69 1f b9 8f bb 03 8a 02 07 22 01 3c a8 -ee 3d 04 8f 97 ba d2 a2 93 0b e4 b9 6f b7 4d 55 - -# Prime exponent 1: -1d 2f 73 08 50 11 9c 7a 86 9c a6 6f 14 40 67 34 -d1 b5 b8 d9 d9 d5 93 0b 28 f2 97 6b f2 a2 71 ab -40 08 99 5f 90 ed 6b 9d ef d7 91 88 4f 76 1c 90 -45 6d ef 44 6b 9b c2 2b 97 b5 2d fb 21 92 84 29 - -# Prime exponent 2: -4d 50 95 03 c3 83 20 31 3e 36 9c 92 96 e1 0a e7 -3b 9b 1b f7 e9 70 cb 2f ce 63 05 ad be 8a 72 0e -d0 e7 8c 41 18 fc 28 71 72 5c 51 01 27 16 a4 48 -b9 4c ed fa 3a 1b e0 ba f5 a9 c2 46 ce b3 55 e9 - -# Coefficient: -bc 15 f4 7c 0b b6 de 6a 7a 3a 1f e9 28 89 80 9b -4a 3c 0c fa 65 0c 2f ec 36 b8 92 85 14 65 47 a5 -7d 2b 15 71 ac b9 d3 0a a7 91 ec 97 fd 51 fd e1 -ec 26 f5 6b 32 63 da ec 9e 29 2e 9c 17 37 36 4b - -# PKCS#1 v1.5 encryption of 20 random messages with random seeds -# --------------------------------------------------------------------------- - -# PKCS#1 v1.5 Encryption Example 4.1 -# ---------------------------------- - -# Message: -ca 24 72 1c 88 e0 47 74 f4 15 b4 c4 6c a0 fc 26 -d5 bb 53 aa fb 19 92 f6 de 78 5c 76 3a - -# Seed: -fc 7f 85 c1 38 6d c4 3c 3a 28 46 e4 da e4 d9 54 -80 54 45 9d a2 31 82 f9 84 07 9b 07 1f db 5e 6d -9d 0f a0 b2 2e 3d e6 36 ee 5b 25 3a 42 f9 5e ed -44 22 95 6c 70 f4 8d fe cf 0e 55 5b 05 15 7b 15 -6a 55 c8 bc 65 8c d3 b5 39 7f ab 78 d7 11 56 4e -89 c7 e6 24 8a a0 6a d1 05 c4 0c 31 c4 b1 99 7d - -# Encryption: -e3 95 ff 1f a5 52 fc 2e 79 c4 a5 35 58 df 14 00 -f8 70 4e b3 6c f7 cb 05 1b ab 93 15 0a c6 39 6a -dd 63 66 9b 04 24 8b 9d b3 6a 9c 94 f5 19 8c 6e -5d 9a 17 d4 74 ed b2 03 45 fd 6a 78 b5 1d e8 16 -6e 98 ca b5 b6 d1 65 68 b4 1a 8e 93 e4 83 88 65 -d4 bd 9c 51 cd e8 df be ee a5 88 2b 09 dc 70 bc -9f e7 49 b5 d2 4b b7 ca 51 1d b2 c2 b8 29 a7 c9 -14 6c 77 4e b0 bd 7a af dc 5c 38 d3 d7 cd 58 27 - -# PKCS#1 v1.5 Encryption Example 4.2 -# ---------------------------------- - -# Message: -25 c7 bc 4c b2 43 ac 1f 07 40 86 9c d2 6b a8 26 -f3 55 d4 77 c4 aa 6c be 54 3a dd ea 84 44 44 f4 -1c 35 92 bb 3d a7 d4 21 - -# Seed: -27 2b e3 fb cc 76 14 99 6f 1a c0 e0 a5 e2 69 06 -23 bb 0b 69 70 fc de 0b 6f 45 58 ee 62 34 26 fa -60 ad d6 c5 a8 a1 0d 4a 37 51 50 15 36 fe 8a 45 -c5 42 f6 27 f4 22 9f a1 24 57 c1 13 31 13 72 05 -55 2b 01 4c 91 b1 c4 e0 9e 45 96 78 34 0a 74 c2 -85 e2 6a ef b9 - -# Encryption: -76 50 d6 f8 1a ef 5c 0e 32 0e c7 7f c8 9b 7c 3e -61 83 85 0d 10 c9 8a d7 e9 fe ea 47 e3 8c fb 37 -a0 25 db 42 1f b6 d0 05 80 9e 38 bb 3c 51 95 1d -a9 d9 43 3b a7 ef b1 7d e7 d8 fe 3e 9b 9c e4 55 -53 74 ea 66 3a 1b 5d a4 a0 92 29 4c e9 66 98 56 -55 e2 dd d2 0d 7d e3 aa 35 37 05 8c fd 7e 7a 7b -97 fc dd 98 53 79 2b a8 3f cc 89 07 4a 8d 0f 3c -ef df 98 5b 9e 78 ae bf b0 59 67 36 4f 24 11 cd - -# PKCS#1 v1.5 Encryption Example 4.3 -# ---------------------------------- - -# Message: -cf 00 7e bd 23 da 06 97 1a f7 9a a6 34 d5 d2 55 -05 bd 52 29 - -# Seed: -9c f7 23 7e 28 a8 6e 41 8d 66 4f e3 be 7a e3 0e -eb 95 5a 3f 71 02 b2 7d 5f a0 96 74 9c 7f c2 06 -4c 88 0b f3 d3 0e aa 98 1f ce 39 86 a9 10 fe ea -e1 84 c0 10 25 04 8b a6 79 48 96 fc cf f7 4a 59 -42 f9 62 f3 e3 63 71 f6 b3 55 18 29 43 4a d8 d0 -0a 2c 59 7c f6 d4 51 ea ce 88 86 85 38 a4 80 f6 -8c e6 8f c6 85 6e bb 57 dc - -# Encryption: -b6 32 52 af 2e 8e a2 71 e7 06 fd 68 3d 0f 8c 10 -b3 f4 a3 45 c4 f5 b6 78 5b a9 32 9f 44 62 43 c6 -f3 69 e3 0e a8 fb 11 08 4d b9 79 88 e9 c3 87 4b -34 d6 fd 08 71 7d 9e 81 0e 9c 22 43 60 34 6b ec -cd 3e 0e 53 d1 0b 1e d4 58 e6 4f 3f b0 92 f4 8c -b6 6a e0 3b 64 f6 aa 9c 63 bd 27 9f ae 4c 33 f4 -2a 9d 73 bb 39 11 8e b8 7d 25 12 b9 d9 36 a2 7e -d2 e4 49 60 7d bf 0e 3e 22 3a 53 95 26 35 59 9c - -# PKCS#1 v1.5 Encryption Example 4.4 -# ---------------------------------- - -# Message: -ef da 79 e9 c3 36 c2 34 ff 37 b4 f5 8f db d3 1a -f3 67 5b 3d 2b 10 5e af be ad 4b bb ff f5 4e 68 -6a b5 - -# Seed: -30 c2 09 43 f1 bf c4 23 61 d4 d2 2f 51 a8 d7 86 -cb 2d 0d d5 ff 7d 70 5b 30 28 60 18 11 29 3d be -5d 72 c3 55 97 10 ce 0a e9 5d 2f 16 b2 39 a4 ac -84 45 53 7d 48 8e 3e 6d 2c f5 b7 a6 4c 06 c3 75 -6e 11 60 67 63 63 3e db dd bf 26 be e6 51 18 42 -d2 75 2d cd 88 89 6c b8 55 8a 87 - -# Encryption: -bb 91 b2 f6 f4 33 1d 64 d0 73 6a 2e a6 03 29 aa -16 c2 ed 7a 4d 5c a8 d7 84 e6 30 4c e4 84 4c 71 -58 f8 22 d2 af 29 c8 90 97 7d 75 a9 35 e4 3d 93 -b5 be 10 c1 d4 4f a0 0c e2 8e 75 f5 27 bd 84 a3 -be 5a f5 be e9 45 67 c5 5e 15 ee 3e 93 42 6a d8 -d5 0f 06 4c 57 93 ca 38 c4 3a 70 c5 f5 60 74 0b -16 ee a1 6b 7f 13 41 5f 75 1b 3f db 87 7a 88 29 -33 21 f5 0f ff a6 f1 24 94 96 c2 b0 27 a2 18 ed - -# PKCS#1 v1.5 Encryption Example 4.5 -# ---------------------------------- - -# Message: -4a 01 fc 13 c1 d8 6f e7 b2 fd c7 92 f5 28 0f 87 -5a dc 5a e9 9f f9 11 d0 2c 8c 00 3d 39 bb ee 54 -b8 51 ef a3 4b 41 31 be 52 0d 81 00 ef 62 c2 5a -4b 51 7e 9b - -# Seed: -be 6b a5 d1 1d f1 bf cb 2b 84 67 71 b6 c9 df c9 -33 4d a8 6c 4b 7c 25 43 93 18 e8 ba 8e 47 49 2b -cd 51 1b d4 ca e1 67 7d 31 2c a2 2a 94 57 cc 81 -d9 0e 4d 52 4b a2 26 5f 0f bc a1 8e 3c 3f 48 2d -ca a7 88 33 22 39 34 6d 6f - -# Encryption: -16 bf cf b4 2d 28 b9 d1 62 70 cd 13 8d c3 ca 64 -42 95 6a 41 82 5e d0 23 0b 71 09 16 13 33 3a 9e -7c 52 ce 8c c4 b0 bf 29 10 79 41 a0 d7 2c c3 4a -fd 00 48 bb f4 c7 16 c7 3a a9 b0 c7 8d 37 c1 93 -71 9e be 03 a9 31 74 53 b5 53 d4 f5 b3 85 d1 41 -fc 3b 0e d1 9b 96 dc 35 0d fd 4d 12 e3 dd 03 ff -18 39 d4 78 2c 6d fd 5f df 59 71 f3 dd b0 e3 12 -a9 16 06 f3 13 73 02 0d b3 a7 6d 04 fd 6d 65 d6 - -# PKCS#1 v1.5 Encryption Example 4.6 -# ---------------------------------- - -# Message: -7a b0 6e 19 69 22 c0 - -# Seed: -de 0d 60 33 c1 e9 6b 5f d8 31 21 4f 30 d8 1b 8f -d9 a2 69 3e 5e 8a 36 ea ff d0 39 e7 47 3c 28 ee -43 a3 91 6c 78 c9 a1 12 95 8a 94 ce 67 1c cc 40 -d9 7e d4 18 7a 3f ff a0 dc 12 9d 88 a8 b8 c4 96 -6e a3 94 a9 10 89 61 25 f5 4d af bb 3b 17 b9 fa -10 c4 82 20 09 64 90 c6 f7 5b e2 51 83 e9 98 4d -f5 e4 d7 eb f9 47 5d 11 ea 39 33 5a c7 2f 93 d3 -33 bd 74 22 19 42 - -# Encryption: -54 18 23 f9 05 57 6d a1 42 e2 65 d8 90 45 ab 66 -20 fd 1a 74 c9 53 3a da 4b c7 b4 3d 95 62 9a 31 -18 6f 4e 89 89 20 83 d2 54 9b 0e 63 8b df c0 d2 -7e 14 ec 18 c4 5c a3 58 61 df e6 12 a3 a1 ed aa -fc 72 fb 46 81 a9 9e a6 e6 48 be 89 62 f1 56 1e -75 0d 14 49 f2 3f 43 0a f9 30 72 25 54 4d 8a 8b -89 65 af 5d d1 8c b7 89 53 ce 6d 16 d8 5e b2 11 -af 0c 64 68 a2 af 9f 72 e7 86 61 b0 fc aa 48 15 - -# PKCS#1 v1.5 Encryption Example 4.7 -# ---------------------------------- - -# Message: -9a da 9c 10 b8 ae 22 - -# Seed: -cc 23 43 72 4a c5 0e e5 47 08 fc 5f d0 3f 09 a1 -cc 12 22 a4 4b cd 44 03 87 7c 6b de 86 bf 43 e4 -2c 10 84 f6 ef ff 20 fa c0 ac c3 1e ca 17 c7 38 -d4 68 68 73 65 52 fd 2f 7e 93 b8 22 25 61 05 4e -6d ad c3 15 60 4e af 8f 77 f0 5d d8 58 3a 93 bf -03 cb 9c c2 13 9b c4 19 bb 10 e9 b2 01 b2 a7 e1 -8b 03 79 0c c8 3e d6 05 d6 d5 66 33 05 34 71 39 -c7 5e 1a e2 a5 6a - -# Encryption: -9f 54 d0 de a0 5a 5d 00 72 23 5b c4 67 93 cf c4 -7b 00 6d aa ac 02 41 c7 e6 6d 33 3e 23 c3 cf 97 -63 b6 1d 9e ea dd d8 3f 5d 7f 0a a9 7d 16 c7 69 -92 55 cf 7e 48 72 b6 a0 07 95 62 d2 60 7d 64 40 -d7 ed 37 c6 71 3c e9 66 43 a4 41 f8 39 55 64 d2 -6a de a5 82 3a 49 42 da 4a b8 e4 7b ed 58 81 b9 -d1 84 05 79 57 df 65 39 e4 36 da 35 e3 0a 25 3a -f1 2d 54 1d 4b 0e f8 3c 5e f3 c1 35 ab 95 94 9a - -# PKCS#1 v1.5 Encryption Example 4.8 -# ---------------------------------- - -# Message: -d8 12 6f 4a 88 78 97 82 93 11 76 51 b3 0e 79 22 -d1 4a cf - -# Seed: -ad f9 b0 a9 15 2f 0e 6e c6 f4 39 59 71 ad 40 3f -02 e7 fa 98 f8 15 56 0a fa ff a7 ca d5 b4 47 4b -6e ce 65 ed ab e2 7e c2 4a 0a a4 73 ed 75 a6 1f -5c 24 90 a5 36 b1 a4 df 7b 03 41 77 37 c5 34 e1 -d4 5b f7 26 94 38 6b ee 82 0c 48 db d1 83 17 bd -61 7c 04 b6 a4 17 e3 0e ed 79 58 8d c2 3f d4 db -a1 37 44 b4 b2 aa 5a f8 0a 8a - -# Encryption: -3b 2b 85 ed fc d7 c7 c2 7b de de e1 c2 8a b6 18 -7a bf 1c 96 d9 45 30 07 92 cf 8a f1 97 c2 f9 a3 -91 b4 8b 83 32 cf de 7e 4c 7d c3 4c 42 30 29 56 -92 ce fd a5 ef b2 57 35 49 2b 9f f7 84 c7 ba e7 -35 11 c6 18 e3 aa 7b c8 7b c3 13 f2 67 09 a8 ea -4a d7 3a 34 9a b9 e5 ad 82 6c 96 ad 0e ca 97 e3 -13 28 6b cc bf 8e 33 c9 1f 03 68 39 b9 94 8b 4e -b0 c3 8e 21 3e f4 7f 77 66 1a 27 f8 cf e4 99 03 - -# PKCS#1 v1.5 Encryption Example 4.9 -# ---------------------------------- - -# Message: -f5 df 01 af e6 a9 22 51 8b 3f 4b 80 cd 4f ca 73 -b9 7b ab 61 71 6e 27 d2 51 bd 46 5f 4b 35 a1 a2 -32 e2 da 00 90 1c 29 4b f2 23 50 ce 49 0d 09 9f -64 2b 53 75 61 2d b6 3b a1 f2 - -# Seed: -6b f2 81 0d b8 fb 26 93 98 41 2d bb 88 06 02 82 -d4 5f be 96 27 33 7e 54 34 26 1a 5d bc 19 3a d6 -18 c1 1f 7b de c1 de 25 05 f8 60 37 fc 18 51 bf -6f b4 9d 23 60 62 73 47 49 9e fc 98 e2 92 05 da -90 6d 32 - -# Encryption: -40 12 fc c5 cf b9 78 de f8 8f b8 f8 17 4a a5 b4 -a3 07 75 ac 45 59 f0 b2 f3 d3 b4 38 9b 82 8a 79 -d1 40 25 10 c9 a0 33 7d 48 9d 11 82 ab 31 c8 38 -ac 7c 80 b7 48 60 9a 2a a5 37 da 7a cc 3a 4a 7a -31 d2 ad 25 2b fd 59 28 0b 3d 18 13 a2 6f 93 c5 -9e e8 c5 ee 68 87 18 f4 27 83 93 fe ce 32 3a 9d -ff 83 37 55 e8 9a c8 ee 1f a2 90 4b f2 4c df 4f -01 e6 ea ed b6 a8 ef 01 f4 07 be f3 30 9f 03 39 - -# PKCS#1 v1.5 Encryption Example 4.10 -# ---------------------------------- - -# Message: -a3 82 3f af - -# Seed: -94 f6 70 fd 82 f6 91 32 75 ee a4 c6 71 16 ca aa -bd 33 57 8c f8 4d 22 63 64 38 a6 fd 7e cf ee fc -0b 18 7d ec f7 93 89 1c 6e 4c fc 52 b5 67 d8 72 -bf fb ee 0a 67 47 2a 1a 48 c0 f1 ba 59 8a d8 25 -89 01 c5 6a 55 92 f1 41 14 7e 81 33 9d 74 7e 06 -32 de f0 0d 3d be e9 5c 4e 43 21 cc 25 b5 31 14 -47 a3 02 c5 34 92 9c f7 e5 34 f9 ae 67 f4 1e 01 -e2 2a 3d 7c e4 1b 3b 31 35 - -# Encryption: -7b 60 25 42 b6 4f 0a 1e 0e c2 aa 01 cb ed 37 7e -33 1e a3 ff 86 f3 56 fb 7a 58 83 76 4b e4 cb f7 -d0 75 4c 58 29 64 31 36 f2 57 23 36 a2 3f 15 41 -1d 83 85 14 a1 43 87 24 ad 74 09 e8 ec 8f e2 63 -41 ae ea 56 68 34 5d 0d 82 3f b5 c2 1d f4 59 e8 -bf 7c 15 b8 0b 07 2e 5f 8a 84 65 a4 4a a9 d0 9d -82 5c 03 15 a0 ec d2 d6 49 70 2b 10 9b e8 fe 35 -eb 22 84 3a 20 e7 fd 87 4f 1c 6b 46 a8 0b 68 df - -# PKCS#1 v1.5 Encryption Example 4.11 -# ---------------------------------- - -# Message: -75 b9 a4 a0 bb 2d 46 43 e4 78 f6 54 f2 cc 1a 8c -1b b4 67 19 76 0d 45 41 a8 a7 33 f3 3b 71 3d 32 -c6 0b fd 35 f1 61 74 83 48 47 e8 81 2c bd 7f 06 -ce 72 89 f3 72 c5 82 30 f2 b0 01 45 9b 5d - -# Seed: -49 a7 3d eb 93 e3 f1 be aa ad 3a 19 9a 70 56 9e -09 9a fa ca f7 a7 5f c4 ce 64 8f a8 2e af 2a 0f -e4 11 d2 64 fe 45 f7 45 25 c9 1f 3c 75 10 17 f8 -0a 02 ba bf f3 57 99 62 6f 2b 8d db 9f 36 91 - -# Encryption: -e5 ae e7 0d e8 62 72 3c 51 73 df fb f6 92 6c 3d -33 16 d5 90 9c f5 a1 d6 63 e6 80 ab 2b b5 76 e3 -5b 93 fd 43 27 43 a1 8e 8d b4 fa a3 32 f4 46 68 -a3 d1 9e 5e 69 57 32 f8 4b bd 86 d0 dd ed 76 65 -b7 0b 97 63 2e ab e2 36 4c af ef 7b 74 dc d1 bf -bd 62 5e 2b bb f6 65 4c c0 26 61 81 ac 0a 75 7c -3f ba bd 43 0a e8 63 71 eb 56 af 61 0f 77 cf 2f -ff 6e 24 8f 8c 57 91 60 b9 1d ce cc 0d 20 2b 50 - -# PKCS#1 v1.5 Encryption Example 4.12 -# ---------------------------------- - -# Message: -15 06 eb 34 91 78 5a a7 21 06 bf 6c 85 d0 10 02 -04 6d 1c 16 d4 35 dd 4e 7c 4b 7e 8e 90 dd df 16 -33 2f 94 f4 b8 35 d0 e4 ad 55 d8 3a 81 b3 5c 54 -b6 79 d3 cf - -# Seed: -f6 6e 6a 84 75 84 40 86 e2 84 77 22 97 46 80 1d -43 50 d9 ad 07 68 f3 c3 d8 fa a8 10 7d 95 fb 20 -5e 4b a8 c6 4b 73 8e 54 e5 ac 0d fe ab 99 6d 61 -12 5c 26 79 80 72 59 bc 9e 47 d8 bd d2 c0 40 95 -05 44 8b bf 87 2b f6 64 7a - -# Encryption: -d1 fa 39 52 cc 61 45 ff 77 1b 6c 5a 68 27 5b bc -22 d0 03 92 03 66 17 37 5f 0c 2b ec 3e 28 85 83 -ec fd c6 df 6a 82 8d e3 7f 77 c5 56 a8 cb c4 d4 -43 36 e8 d2 e3 05 87 e3 31 58 73 17 e9 7b 05 a3 -fd 78 02 5b 2d 49 6b 3b be eb 6c 72 5d 9e a5 61 -a7 32 28 82 33 d6 8b 79 49 7f b0 b6 fe e0 a6 b6 -8a c3 13 66 1b 4b 65 47 39 f9 18 f6 fd 3b ff c1 -7c 1d f4 1f 01 44 95 d5 5f 95 90 14 7b 82 d1 5d - -# PKCS#1 v1.5 Encryption Example 4.13 -# ---------------------------------- - -# Message: -9e 3e - -# Seed: -9b 3d df 17 cd 74 e7 6c 69 b5 ca 3a 01 0a 0e 0f -bd 17 05 d6 9c 30 74 35 3b e7 d3 c0 c2 05 f0 99 -c7 a8 10 b7 a1 ad e0 9f 5a 03 6b b7 69 ef f5 3a -53 d4 c6 f8 71 52 92 2d 9a 7b 86 ed eb a3 72 37 -d7 f1 73 4d 9d 97 39 38 3f 48 80 af 3a d6 88 87 -e0 fe 7c 87 a1 74 fb 32 38 b1 e5 1e ad 2a 84 34 -40 c2 b2 7f 22 dd a4 22 8d ce 70 f9 1c 98 d4 71 -a8 74 4d 27 65 55 79 58 81 02 44 - -# Encryption: -42 12 6b 49 2a 1e 7c c0 33 95 b2 ac 70 33 cf 6a -67 36 b1 2e 76 82 5a 17 3b 9e 01 1a e8 bf ed 44 -fe cb 8d 9f 58 cc e1 99 11 fe 42 d4 55 e2 49 20 -09 32 a9 b6 8f e2 e4 19 bc 63 9c 11 78 d1 1f fb -db d9 95 5d 45 9f 5e cf e0 90 20 09 8e 29 7b 8e -91 48 5e 94 bf 11 e7 bf 77 ed f5 a2 70 11 c8 2b -92 73 65 a1 2c 9c 77 c7 e4 9b b7 fe 2f 61 33 39 -de 3f 51 20 87 79 53 86 ca 58 5a 70 24 78 27 90 - -# PKCS#1 v1.5 Encryption Example 4.14 -# ---------------------------------- - -# Message: -70 aa 78 a4 d3 7f 74 c1 81 aa 27 40 7f 2f 9f e6 -63 a9 1b 16 be 9b ea 6f c6 12 88 7f - -# Seed: -d0 fd 16 c0 f0 d7 90 9a 38 86 17 08 11 e4 4f 24 -fa df 94 ff 17 03 9a 56 84 a0 9b 24 e1 93 3f a0 -c4 71 51 63 5d 75 7b 73 c2 3f f3 91 01 cb e2 52 -9a 63 a7 f3 a0 19 5b 6e 47 51 07 11 de 17 1a 16 -56 c9 ea b3 cf 82 d1 c6 52 26 b5 8f d0 fe 58 ec -31 96 24 7f 34 b1 a0 55 27 02 dc 03 75 12 c6 81 -04 - -# Encryption: -95 36 d4 7e 1d 68 7f 1f 24 99 6c b4 6c e9 46 ae -54 d4 a1 49 b3 4b 5b c3 44 43 a2 01 51 83 87 f4 -b6 38 18 37 cb 7e 4b 0a 44 75 13 70 42 f1 44 8c -1e a4 15 15 ef 31 c2 fc bf 62 e7 e9 58 67 b6 74 -ac 23 0a ed 9c 7d 8d 61 c5 27 52 b2 fc 2a 0b ba -fc 77 b3 1c 51 49 30 de 98 23 b4 38 b6 fa aa 40 -d2 55 31 03 3c 66 48 3f a0 02 3a f2 1d a6 4f cc -8b b8 c5 d5 2d 3f 6c 43 80 f1 d6 08 d8 c0 11 8f - -# PKCS#1 v1.5 Encryption Example 4.15 -# ---------------------------------- - -# Message: -01 16 a4 61 77 73 b6 dd b2 19 16 1c 4f d0 71 93 -7b bb 07 15 cc 62 7c 17 b8 e7 52 80 d9 9c dd 41 -6e a5 cd fa 09 06 b9 af 0a 20 cd 47 7f dc ad 14 -15 a1 9a 9d 1b 96 fd c3 c0 ed b9 - -# Seed: -86 b1 58 60 9b fa 08 a8 ed e4 ef 3f 23 e1 2e b5 -0d 24 55 74 26 4d 76 4d 87 12 67 db 8a 95 24 ea -3f a2 e3 84 5f fc 29 1b da 98 99 89 bf 71 5a a2 -b0 8c 49 79 8a 81 9f 68 58 d9 fa 35 f9 4d f3 c7 -e0 86 - -# Encryption: -74 a3 df 38 5d 20 87 7b ca 9d bc eb ca 2e 53 2c -6a be 95 62 d6 81 7b e1 6e 11 8a 60 f4 ab 0a 1a -c0 a8 46 66 53 a8 f8 17 0e 35 fc e1 4b 44 9c d5 -9f 55 8e 02 0a 89 88 94 bd 2a 71 75 58 e6 65 0f -3a 12 85 70 d8 c1 69 a7 74 66 63 c1 d7 ef 62 14 -5f 4b 75 c5 fe b6 38 6f db 85 33 94 c6 59 a9 1a -a2 aa e0 3b ef 91 13 dd 49 28 ff 28 b3 80 92 7a -d1 ba 4e 8a 37 ed d1 72 ef e8 e9 ea bb 61 4d 83 - -# PKCS#1 v1.5 Encryption Example 4.16 -# ---------------------------------- - -# Message: -15 c5 fc c7 54 7d 63 76 1f 6a f1 f2 6e ed 9b e8 -13 4f 9f 92 12 7e 76 b0 3a 33 a9 7b 9b e3 f7 8b -2e 22 fc 7c 85 06 99 a1 5c 0e 0e ce be 2a 71 80 -5f 02 4b 93 88 a3 bd b2 b3 60 d6 9c 5c 0c 46 - -# Seed: -5b 4f 17 a9 de 91 73 7a 7f e8 54 e8 a1 76 be 5a -0a 16 fc 10 42 cb 87 0c c0 18 92 fc d3 8e a7 5b -07 3c 0f fa 01 4f 96 a3 58 e3 aa 5e 73 ea f8 a9 -1f ce 75 47 0b de 64 e8 7a b8 91 ba 3b f2 - -# Encryption: -73 62 d7 39 8d 0c 25 1f 83 58 17 e4 79 37 a9 25 -58 36 ca 02 30 45 7f f6 08 b0 78 d5 09 31 a8 80 -33 ea 76 50 81 12 65 f8 e2 68 b5 33 15 d8 43 8e -52 a6 a4 b1 b3 89 5d 30 c3 da e1 1a 3b 8e a8 c3 -0f 05 e9 d7 1d ef 46 d4 51 11 92 a1 0f 54 21 8d -39 36 cb 17 98 3a 1e 7a ff 18 18 89 39 b9 46 92 -76 49 b0 fc 4f 7b bf cb fc 14 e1 c0 ec a0 7d 00 -c9 03 db 78 16 9c 50 ef 0a 38 f1 da 19 ae 44 59 - -# PKCS#1 v1.5 Encryption Example 4.17 -# ---------------------------------- - -# Message: -7c ad 18 f1 75 13 87 42 28 5e 90 35 d1 3a d4 1f -c3 a8 52 10 e1 54 4e 24 de a3 fc fe 66 - -# Seed: -9a 06 ca 10 fc c6 61 0e 77 df f9 0d d1 76 f8 2e -3f 96 e4 a9 d7 ab 87 2c 74 8e d4 22 f3 4b 33 48 -61 94 40 f0 aa a2 2a 66 98 51 da c8 89 4a 8e fa -34 ea 2c 2d a5 e9 58 69 e0 ad c0 05 a4 9b a4 58 -18 ca a4 74 11 5c 34 49 96 6a 85 c4 18 fc aa 8f -45 63 0e fe 0b 1b 4d 3d 69 be 1b c0 06 8a a7 99 - -# Encryption: -1e fa d4 14 46 b9 1f da dd 8b 80 61 9f 68 27 36 -68 b7 58 5f d9 1f 34 49 ec 85 c2 42 d0 84 9e 4a -53 a5 97 7b 61 aa 40 d1 2c c4 85 ec 7e 4f f2 0f -98 86 91 cb 9d 73 af 46 ea 37 6a fc 69 ba 22 33 -86 e9 f1 5d 03 26 97 da 75 e2 f9 52 be 2a f0 62 -e8 24 6c f7 49 b8 9c 4c bc d6 4e 23 f8 82 bb 55 -3c 3c e3 05 20 36 22 b5 a7 39 77 35 a6 34 aa b0 -d1 7e f9 b5 55 9d dd 34 f4 87 2b 56 e7 98 6e fc - -# PKCS#1 v1.5 Encryption Example 4.18 -# ---------------------------------- - -# Message: -fd 98 c3 8b e3 19 30 70 b5 c4 33 4b 11 c2 5b 33 -4a 44 - -# Seed: -f3 57 91 11 03 e9 87 d1 a9 f1 5c c2 e5 2f 42 39 -0e 0f aa 50 02 c4 f1 7d 40 a4 af 50 f3 1a 23 17 -50 e7 af 61 d9 af df 9c aa 38 61 a2 0d c7 21 89 -58 61 fb 11 8e 08 8d 32 18 e6 fb 35 56 b1 62 d6 -bd 67 91 1d bc 94 21 98 42 65 82 72 a5 d4 9b f5 -ab b4 a0 87 94 95 c5 e6 e6 86 28 59 29 a5 5a 36 -8f 52 4c 14 a4 0b 0c 61 38 0d 0e - -# Encryption: -de ae 18 3b 56 c3 fb 38 41 ea 57 42 34 ac d3 0a -ff 00 d0 05 1f 57 80 37 58 a4 71 4a bc be dc da -8b d1 a4 8a 98 01 53 df 89 6b 13 76 aa 4b 45 95 -80 13 d6 19 be 7e af f6 c1 a6 75 e2 92 ef c3 f4 -39 3d db de ab 47 e8 90 a7 8c ef 69 00 24 49 57 -87 48 90 6c 10 21 b8 91 b9 43 d8 18 d3 a6 1e 67 -a3 15 61 2d 4c b1 cf 19 7c e5 df ab ef da eb 59 -0b 8e 8c 73 68 5e 74 7e 59 a3 95 c8 45 c5 d0 c3 - -# PKCS#1 v1.5 Encryption Example 4.19 -# ---------------------------------- - -# Message: -96 53 d7 94 69 f0 5d 40 19 65 a9 5c e8 74 fa 22 -5e c4 79 74 e8 d0 68 41 c1 3b 47 85 e0 0d 54 7f -9d 31 44 c3 87 9e 6c cd af 78 7a ef c2 f8 45 2a -4a 3c 88 4e 38 ee - -# Seed: -85 5d 6d 15 12 e5 43 a4 5d 3a 9a a9 68 5d 5d fd -a7 04 79 ba 39 52 63 64 14 1b b6 36 27 45 89 85 -71 20 01 22 f4 bc 82 c6 22 43 45 c6 9d 3e f5 42 -f1 23 bd e3 01 5b 60 c4 c0 ff b9 8d 63 01 31 ae -e8 1f e4 a0 b0 15 38 - -# Encryption: -69 ca 62 e2 9a 5b db 4b 04 e2 40 16 21 2c 25 91 -40 a6 0c fa 81 eb 66 93 bf fa fc 9f 60 0d ce 10 -82 2a 00 7b 6a de 93 fa cd a1 b2 b1 65 b5 57 76 -0f 0a 67 5a c9 bc b2 06 b9 64 fb 90 cf 6a 2c f9 -9f 18 6b 36 d2 eb 99 1d 82 53 a0 75 4f 9c c2 d7 -2d e5 49 ab ae 90 94 f5 a8 6c e1 db 49 4d bb 6e -51 62 86 71 5b 3d d4 05 59 b3 10 7b 95 24 b7 29 -ac 65 4c fb 40 f9 ab 35 d0 34 e0 27 19 7c bc 36 - -# PKCS#1 v1.5 Encryption Example 4.20 -# ---------------------------------- - -# Message: -0b df 3f ce 8e 48 7d b2 2d 07 60 ab 71 15 86 ca -8e 45 9c 39 4f f8 b1 a1 86 70 67 a9 31 51 99 a8 -01 24 74 b0 f9 0d cc 87 cb - -# Seed: -c9 b7 8d ce 9d fd 7f 04 04 ff 98 2e 06 b5 96 50 -ba fe 31 ea 19 bc 1f 2e 1f 39 89 f4 ce fc e4 6f -c6 52 42 3d b3 c9 9d 92 a8 fb 58 f3 ee 39 3d 55 -5b 76 84 88 9a 4b f8 15 a1 3e 3b 9b f2 43 71 40 -66 b9 07 58 90 67 50 47 f1 7e 93 5b dc f0 e6 6f -cf e3 9b cf - -# Encryption: -43 ad 3e 62 5f b1 72 15 57 8b ef 2f 46 5f aa 72 -ae 69 43 83 36 9f f7 aa 15 12 01 a3 f2 59 c8 d8 -ce 8c 16 bd 25 52 21 49 f6 66 e8 d6 92 a0 79 5e -a7 15 69 d2 88 1f 97 07 08 5d 3f 59 bd fa 28 73 -66 d7 f5 a3 f7 6e a5 dc 10 9f cb 03 30 2d a0 b7 -86 99 71 3e 0d 30 09 58 4f 97 17 6c 1b 9b a6 3e -80 cf a8 fd 4c 01 3d 74 b5 fa de 84 72 d5 2c 11 -e2 e9 36 81 ba 19 d3 53 d3 1c e6 fa 3c 0a b6 0d - -# ============================================= - -# Example 5: A 1024-bit RSA key pair -# --------------------------------------------------- - - -# Public key -# ---------- - -# Modulus: -ab 29 d4 9c dc 92 5c 69 ca e7 52 92 fc 03 62 03 -73 c6 fb 36 d3 c2 49 dd 5b b5 0f 88 1a 4c 93 89 -af e7 3e 8c 56 b8 d6 67 a5 ea f2 b5 71 4a da f4 -ca a0 06 a4 9a c4 bd 4b 91 d5 45 cf 3c 10 00 9d -31 8a 9d e0 f3 bb d8 38 4e 8c 7e 96 ca 15 95 e3 -2a 70 41 d1 68 ca a7 34 43 b8 85 bf 7f 61 4a e1 -21 2e 3b 5a dd a2 9d fa d5 01 b8 b1 a8 1c 3f 48 -a4 56 e1 33 ad 52 da 2a bc e5 d6 e7 82 f2 75 c9 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -ab 29 d4 9c dc 92 5c 69 ca e7 52 92 fc 03 62 03 -73 c6 fb 36 d3 c2 49 dd 5b b5 0f 88 1a 4c 93 89 -af e7 3e 8c 56 b8 d6 67 a5 ea f2 b5 71 4a da f4 -ca a0 06 a4 9a c4 bd 4b 91 d5 45 cf 3c 10 00 9d -31 8a 9d e0 f3 bb d8 38 4e 8c 7e 96 ca 15 95 e3 -2a 70 41 d1 68 ca a7 34 43 b8 85 bf 7f 61 4a e1 -21 2e 3b 5a dd a2 9d fa d5 01 b8 b1 a8 1c 3f 48 -a4 56 e1 33 ad 52 da 2a bc e5 d6 e7 82 f2 75 c9 - -# Public exponent: -01 00 01 - -# Exponent: -07 7b b2 73 32 34 86 ec 4c 25 ed 67 06 34 1a a8 -a6 7a ec 58 43 0d 53 3f e5 86 c6 b9 4f 57 0a 3b -42 90 c4 5c 0b dd 94 68 1f 29 a4 b7 58 8e ea 80 -39 cc a1 c5 b8 0b 82 70 27 9d d0 a9 c5 09 39 11 -93 e3 d5 c2 5c 10 75 c4 a1 d3 dc 32 74 06 6d ab -81 7f b5 1b 16 bc 26 7e d9 a9 98 0f fb c0 92 85 -d9 7f 11 2f 15 26 95 e6 e0 9c ae 72 bb 55 06 6c -b9 db d0 98 a7 5c eb 47 b4 62 72 00 5c 6b d2 15 - -# Prime 1: -e9 4e a6 b6 19 be c3 e4 78 87 8e 87 8c f1 23 b7 -a9 f1 2c ab b1 95 e0 aa e0 22 f3 17 73 46 69 31 -38 b1 1a 86 fa 5c b7 55 5a 10 b8 e4 62 2c e9 52 -0c 57 2b ef 29 1d f7 0a 16 d8 85 f5 97 e5 90 4d - -# Prime 2: -bb cf cc 5a 60 95 34 ee 43 4a 6c bc a3 f7 e9 62 -e7 6d 45 5e 32 64 c1 9f 60 5f 6e 5f f6 13 7c 65 -c5 6d 7f b3 44 cd 52 bc 93 37 4f 3d 16 6c 9f 0c -6f 9c 50 6b ad 19 33 09 72 d2 1c ac 19 ce 99 6d - -# Prime exponent 1: -e8 a6 0d 88 39 54 09 73 a2 dd 4a 3b d1 48 05 1d -f8 d1 0e 82 87 ab b5 45 b0 0c 29 ec 90 7e fe 16 -9f 39 bc 02 2d 56 97 5a fd 5c ff 82 7e 83 da 86 -7e d7 ce 6f c6 c8 a2 b7 e4 e0 35 75 19 eb 49 61 - -# Prime exponent 2: -8f f2 e2 27 37 35 c5 5f 05 56 6a e7 5f 29 a9 c9 -33 a6 2d ef d7 e2 20 01 7f 05 45 fc e9 07 e0 65 -c4 9f 7b ac 34 84 c6 f0 60 49 99 43 32 07 c9 13 -e8 0b c0 1b f7 8d 83 ef af 00 da 17 12 a4 a6 35 - -# Coefficient: -5f 1f f9 6a 8a 90 19 78 4f 92 26 e2 5c 9b fe 25 -08 02 39 43 73 90 25 dd 6b ab 03 7f f4 7d c6 42 -49 85 15 c2 f9 e6 ff 60 60 c5 b7 d2 34 30 d8 d5 -0f 1c 0f 6d 50 c1 80 b4 ae a8 a4 a8 2f cd 2b 74 - -# PKCS#1 v1.5 encryption of 20 random messages with random seeds -# --------------------------------------------------------------------------- - -# PKCS#1 v1.5 Encryption Example 5.1 -# ---------------------------------- - -# Message: -5d c9 f8 b1 2d c8 12 a0 9a a4 b0 6d fc b5 7e 1d -2e 8d 1c 7d 2c 07 6b 25 d5 c1 8e db c0 46 bd 63 -c7 ca 4a 59 9f 18 de 26 f3 be 73 8c c2 8d 16 67 -2c 00 6e 4d 9c - -# Seed: -43 d6 05 a5 74 0a 97 0b 32 37 27 af 35 2a 1b d4 -8d e6 9d 95 05 e2 2c 2f ad 03 0c 3b 84 b6 de a2 -d2 2f 91 64 06 a7 69 3c f5 06 c2 d2 51 88 6f 02 -20 3e 3f 76 55 a3 0a 68 37 af 8a 8c be c7 b5 c9 -2f c0 4c 8c 18 df e9 d3 - -# Encryption: -21 5a 35 f4 c0 43 5b 07 ed 5d 2c 4b 68 65 bc 28 -1c ea 70 50 cf ea 7a 7e 86 e0 3f 8a cb 28 b5 8d -be e6 54 58 91 9c ea a5 a3 3e dd 98 20 1e a6 e7 -63 2d 76 22 d5 a5 1d 35 a3 5f ed e8 6e f2 03 ee -f6 eb 34 75 ec 8f 19 e6 9c 0e d5 2c 05 dd 7d 59 -e3 53 f5 2b 67 10 af 40 26 65 55 04 10 7d db 86 -f9 57 e6 c0 6b a6 7b 1f 4f c9 f1 21 e1 5f 82 73 -67 09 d2 de 8d 77 43 2d f0 8d cc d2 a0 cc 77 04 - -# PKCS#1 v1.5 Encryption Example 5.2 -# ---------------------------------- - -# Message: -d7 74 07 d8 f6 9f 80 dc 08 eb a5 f4 26 28 2d e7 - -# Seed: -b8 29 c7 89 be 38 1c d5 9d e2 14 89 db a1 41 e0 -bd 1f a8 a3 c3 82 6d 59 c6 d1 10 e7 df 72 42 ba -98 c4 7a 43 92 c7 f2 ac 1c 6e 9d ae 22 b9 eb 74 -a7 64 36 08 8b d0 ba 6e 19 91 e1 9e 3a f7 9c f3 -f7 de fb 6a 11 61 80 25 34 ba 0e 7e d1 65 34 93 -88 72 ec a6 77 05 8a c7 34 67 d4 9e d1 12 5b 50 -df e5 d6 d6 5a 5d 24 53 99 b6 bf 1b f1 - -# Encryption: -2d 48 06 cf af e4 af 36 bd 02 f6 2d 6a 43 b0 0b -41 6f 70 8e 96 85 b1 7a c8 e3 a4 d8 c2 91 80 93 -05 76 9d 78 98 f6 fc 85 91 7b a2 fd 8e 58 9f f7 -a8 bb 84 bb 7c 12 20 2e d2 79 e0 64 09 a5 c0 a7 -d3 24 bc 46 ae 4f 92 82 c9 02 3d 3d fb 3a 79 15 -de fc 16 4b 3f 08 26 6a cf 12 41 f8 26 24 98 15 -07 41 4e 56 29 78 35 1d c8 b7 a7 9e f5 31 40 21 -01 a8 d3 d3 ea a3 53 9b bf 62 aa d9 9a 3b b1 1e - -# PKCS#1 v1.5 Encryption Example 5.3 -# ---------------------------------- - -# Message: -23 8a - -# Seed: -a5 88 1a cf f3 52 9f 25 1b 1b 9c 61 9c e9 f9 df -91 e0 a0 3d d8 89 16 36 46 87 1a 62 72 07 ee f1 -47 68 0c 32 f4 50 a7 76 e1 9f 54 ec 05 5d c6 8b -04 bd 4d 89 37 6d f3 ea fa 6f ca f6 0e b8 31 84 -39 10 b6 25 b6 4f 25 d9 29 9a fc 30 6a 23 76 53 -80 45 51 94 b7 5d c0 13 5d 27 c3 b7 d7 2d f9 08 -77 5c 7e 90 be fc 0c 5a df 74 a1 69 ed 58 68 f3 -d6 34 32 7a 05 78 18 92 54 45 43 - -# Encryption: -77 10 ee a8 65 7d fd 15 65 16 65 62 df 0e 2e 84 -0e c3 e3 de dc 0b 80 2b b0 21 3e 47 a5 ce 97 f4 -b8 5b a9 ba 14 19 77 36 3d 8f 54 b0 6d 57 8d 5b -2a 96 e9 69 cf a9 15 df 21 9f 00 2a 85 d0 32 57 -04 7b 31 16 a1 c4 dd af 79 1d 93 98 2d 1b 9f fa -24 31 86 e9 e2 b1 9e f0 74 1c e9 8d e2 a4 a1 58 -6e 50 12 c4 81 de 23 a0 ef f8 82 fd 62 38 38 d2 -01 1f 4f 63 73 8a ff d7 ef b8 c5 0f 46 a6 c2 0e - -# PKCS#1 v1.5 Encryption Example 5.4 -# ---------------------------------- - -# Message: -25 a2 7e b1 b2 1f 10 cf 9d 57 1c 33 05 61 0b 97 -f0 da ee 39 90 5c 65 94 bf bf 45 2a 9a 00 d9 e8 -2b - -# Seed: -25 04 61 80 11 c6 73 db 3c 41 22 79 dc 8a d1 65 -ab 7b 64 73 ae 19 5e 8d 6d 41 21 49 18 19 8b 34 -51 a6 50 8d 61 38 ce dc 51 8d 80 12 ba 0e c7 9b -38 6a f8 fa 40 b0 34 78 bb f2 ba 06 5e 58 2d 61 -95 cc be 15 8f 11 78 1e ae b1 b1 72 0b 72 d9 b5 -21 27 de b9 55 17 11 e8 87 db d0 b8 - -# Encryption: -35 72 bd ea 23 05 e1 78 5c 75 4d e7 44 c4 fa 3f -a2 cb 75 71 60 e5 cb 39 a3 14 97 e1 48 5b bd 7c -08 99 c5 35 85 b2 bb bb d9 90 81 b4 16 ef c6 85 -78 db 78 e0 ec d0 8d a7 a3 95 3e 38 6b b2 5c 12 -bb b8 7c 78 94 42 83 a8 c8 01 87 b4 50 8d ab bc -76 97 f4 3a 8a e7 8a 33 fe bb 15 f3 cd 58 1c 80 -d4 9b 97 1b cb d4 8e 44 14 2f 58 c2 c9 1a db 1a -e1 45 aa 9a 83 b3 c5 81 5a a1 a8 ff 8d d2 31 fe - -# PKCS#1 v1.5 Encryption Example 5.5 -# ---------------------------------- - -# Message: -59 cf 0b 6b 50 ea - -# Seed: -2b f1 91 60 df 69 88 93 5b d2 46 10 6b 89 09 dd -7b b3 e5 16 90 df 84 d7 6e 4d 31 ac 82 10 44 56 -34 6b 4c 3c 9b a7 b5 e9 e6 8e e2 08 6c 84 73 c6 -83 02 e2 59 9a bf 6b 31 ce b3 f7 81 ad 6b 56 89 -86 f2 1c d6 d7 55 32 8f b8 3a fd 55 48 50 1d 07 -0a c2 dd 8f 5c df b6 2c ef 54 5e 81 5f e3 82 bc -0c 67 b6 76 e5 45 6e bb 9a b6 7d f4 77 40 c6 a4 -3d e3 f9 a2 47 7a 9b - -# Encryption: -2e d5 91 fd 4b 35 7e 94 f4 81 ba 84 ff 4e be 7a -e4 31 05 4e 5c d9 8a 99 58 96 48 e6 16 cd 68 e0 -d4 72 4f a8 a6 c5 99 68 6b fe e1 74 7a d0 77 db -ed ad 45 f1 24 4d 7f 8e 00 da 3a 3a 06 d2 31 32 -d3 17 1d 74 4e f1 4e 1e 97 cd da 10 9b d2 e5 56 -a5 fc 7b bc 60 9a 7f f2 4c fa be f4 b5 6c bb b7 -0e 05 06 53 b6 98 48 d7 11 30 75 a5 de be 7a 46 -82 15 f8 dc 08 e7 ef 84 fd 55 77 8c d5 b5 96 e5 - -# PKCS#1 v1.5 Encryption Example 5.6 -# ---------------------------------- - -# Message: -e9 44 52 f5 0a 5e db e6 75 73 ab 22 30 9f a2 1b -ab c6 d2 25 20 e6 e8 3b f7 2e 7a fa 6d 71 e2 02 -96 da ea f5 4a 60 c8 03 63 04 87 9a 21 31 d1 78 -78 0e 34 8e e0 12 0b 99 7c - -# Seed: -c5 30 44 3a 16 ef d8 d6 d7 2a b4 44 3f 8d b2 44 -91 de 99 d5 aa be 51 88 b3 f6 1d c0 48 3b 7e e0 -0b 1c 13 25 9b 8a e2 40 9f 1a e6 2d 99 30 c1 1a -4d de f3 e8 35 82 93 88 93 f9 ac 66 8f 79 c6 4c -7f 5d 79 6d - -# Encryption: -0e ee 90 c7 08 18 22 1a e2 70 4b be 38 d6 8f 8e -15 4c 6e e7 ad e5 3e 2a 1f 4d 1d ba ac 98 c5 75 -91 eb b6 c6 38 bc b6 8e 18 14 35 b7 00 01 ba d1 -80 19 2b fd a0 57 32 c0 5e 7f b5 af 22 aa 89 d2 -a8 ff 80 cf 9f 08 62 f0 4c 05 ca ca 3d 2a 3a 5b -07 79 94 6c 6d df a0 4c d7 9f a1 64 d6 02 f1 b7 -de 5c 95 be 85 e9 60 84 67 e2 5c 29 d0 35 c4 66 -09 06 26 9f 6d c0 0a 47 2b 04 46 ea 56 e7 2a 59 - -# PKCS#1 v1.5 Encryption Example 5.7 -# ---------------------------------- - -# Message: -1c bf a0 e7 b1 a1 0c 13 d7 50 77 b1 cb d8 03 10 -cd 24 10 34 0d 5f 53 72 93 46 4a 67 81 a9 cc 30 -2c b5 38 0e d9 26 7b 3e b2 3c db 13 - -# Seed: -d3 6b 7e 17 99 05 9d 1e d1 34 7b 0b f8 24 7c 6b -e5 18 7d 8f 15 21 9e 3c b6 6e c6 2e 1a c4 1f f7 -ed 35 7e d7 ca 03 84 e3 1d 39 94 85 61 fc 16 cb -d9 6b 7e 70 42 79 e5 72 bf 56 4e 06 c3 a3 40 1a -27 14 dd 51 d7 21 5b eb a1 c6 61 54 f6 0d d0 cd -4d - -# Encryption: -9c 03 dc 01 33 a6 e6 aa ba 92 05 9b df 5a 6c c1 -b1 44 b9 0d 2a 94 a4 8e 7b 3c b9 0b 0b b6 f6 24 -c7 b1 d1 72 33 1e 43 23 d0 8d 2e 8e 09 95 32 dc -b3 b2 a8 7c a4 20 74 9f c6 34 5c 0d 86 e9 ab ca -71 af 09 a0 92 9e de ee de 83 e7 22 44 20 3b 2b -f4 5c eb 18 7e 9d b3 c7 d3 ad 05 b2 3b 59 62 4c -24 66 96 cf c7 58 06 39 14 02 e4 44 e3 97 49 69 -88 e1 e1 f4 2c 6a de d3 0c dc 93 79 37 f3 00 54 - -# PKCS#1 v1.5 Encryption Example 5.8 -# ---------------------------------- - -# Message: -e1 72 a6 b8 b4 96 f0 77 73 8b 74 f6 d8 b2 92 dd -a6 07 f2 ad bf b3 72 be 37 ee 00 08 88 be a3 1f -99 cb a1 cf 39 32 e4 be 37 17 c9 e1 68 90 1a 32 -d1 b8 20 be 4f b0 13 75 27 a2 48 18 77 fe 01 ee - -# Seed: -84 0c e1 3b bc 96 17 dc 9f 3f 26 b1 47 30 1a 6f -46 30 0d 77 81 a5 d9 81 16 2f 86 92 87 37 1f 1d -59 58 76 4f b0 0b 05 53 70 ec 71 1b ba 52 83 fc -b0 0b 83 bc 02 17 5e a1 01 7b cc 83 53 - -# Encryption: -99 3e 39 6f b5 7b 2e a6 a1 a3 fc ed 9a 69 d3 61 -cb b6 26 5b 26 50 3c 17 5f 84 c6 1a 41 ea 3e 1c -e4 fb b6 2e 01 d6 42 0e 22 fe f1 d9 e2 8a 58 83 -e2 ea c8 2e 05 f3 58 ea 75 f7 7d a4 89 7b 6b 64 -9a a4 74 28 39 41 93 dd ec 64 8c 3a 7f b8 1c fc -f4 b5 1c e3 eb ba 78 ae dc a7 bb 91 7b 35 b3 e2 -2a eb 20 1c ea 96 59 2e 50 e0 d2 84 1e 7d 2c e0 -d6 9f f3 03 9d c0 1e 96 4a 97 7a 01 76 83 b3 87 - -# PKCS#1 v1.5 Encryption Example 5.9 -# ---------------------------------- - -# Message: -c8 f0 ea 23 e0 66 11 e4 fd 27 b6 1d b7 92 0c 55 -f3 c0 a2 22 12 88 38 e4 cd b0 62 e1 76 b2 1f c2 -32 53 55 8c 5d 40 de 2d fd 62 0f b7 cd f1 39 9c -2a f8 fc 77 ca 33 35 - -# Seed: -16 4d 77 b5 d2 6a e6 d7 ab e7 ca ed 62 5d 87 c2 -11 cc 50 9a d0 17 2c 20 83 3d 8f 98 ca e3 8a 2c -37 0e f2 1d 40 96 da 84 1d be ee 94 8e c6 34 03 -ca bd 4a 5f 71 ac e4 93 64 aa 7d e2 0f 32 c9 88 -33 7a 11 5f 83 46 - -# Encryption: -7a 8f 15 ee f5 10 ad e8 d5 c3 17 f9 06 4a d7 da -e6 c9 3e 7c f1 56 a7 37 22 02 32 58 f8 b5 74 47 -34 70 00 34 a3 de 6f 13 7a f6 e9 00 46 d8 6e 9b -90 59 0f a5 a6 50 ce f4 fd b4 d3 36 02 33 af 86 -f4 a7 a2 3c 24 3d 19 51 c6 66 b6 73 c3 3c 7d ec -4f 51 ac e3 4b 80 5c 0a 9e 67 e2 09 cc 7f 9e d6 -9b 8f 5e b5 c5 53 e0 f1 5c 10 30 4b f5 6d 7b e1 -71 f3 1c ce 88 f3 7d 1f b4 a2 a0 04 18 89 75 76 - -# PKCS#1 v1.5 Encryption Example 5.10 -# ---------------------------------- - -# Message: -19 db 24 22 05 c0 3d 7f a9 93 5d 9e 04 fa 6e cf -38 a5 1e a9 98 ac 8e 4b ac a6 cd fd 6a 0a ce 1d -f3 67 e7 3d 23 c2 40 af 76 b6 2e 9f e9 21 5f e9 -43 - -# Seed: -be 49 52 05 55 69 56 fa e2 a2 2e a7 0c e1 02 de -06 6c 9e 58 95 96 06 21 74 84 a5 b1 50 36 ff a1 -d4 61 23 9d d4 7b 4f 38 1c ea 71 51 6e 2d b0 fc -36 9d 72 b4 40 69 65 12 a9 72 88 f0 6f c0 bc eb -96 82 86 e9 95 e0 2d 21 8d 9c 26 62 - -# Encryption: -55 12 b3 99 9b 30 c9 c1 44 0e 59 75 93 1d 55 f2 -1e 9e b4 22 b6 2d af cd ab 5d 50 03 a7 5e b1 24 -81 99 86 36 19 13 36 1d fc 46 ac 29 aa ba 8e 1a -a0 2e 1b a4 44 67 16 2d 20 f6 3a d1 70 fe 0d 87 -a5 3d 93 c6 4e 02 6b 12 be 6b c2 b8 eb 0e 57 c0 -39 eb 60 f3 2c 4b 52 70 35 f7 03 a7 a8 37 4b d7 -fa a7 b5 40 4a 3c 5a ad b7 92 e2 5f f9 28 76 b2 -3d d3 a7 42 2c 45 26 6c 6d 98 6e ec 53 34 b9 ba - -# PKCS#1 v1.5 Encryption Example 5.11 -# ---------------------------------- - -# Message: -49 a7 61 f8 c1 8e f9 23 62 d6 ab b2 4c 07 fc 72 -82 55 84 24 53 69 4e 17 60 58 99 f4 37 b3 1a c9 -8d b5 16 - -# Seed: -d8 cd 85 ed fa 0a 84 d0 76 a9 f8 b2 f9 3d aa eb -a9 ae 37 43 81 ea 4f 8c ea bc 14 f6 2a 4e d7 63 -8c 1e 39 67 57 de 3a e2 b7 ef a3 a1 7c 9a 55 86 -da 84 a5 e5 0e cd ed 61 08 7f a6 f0 ce 93 82 87 -99 8a c1 b9 bc 33 21 a7 ed 16 0d 28 67 04 e0 52 -6e ce 7b 30 b4 68 14 64 9f ec - -# Encryption: -9b 47 82 68 40 62 12 ca 05 30 f4 31 bd b2 63 72 -61 50 84 ca 48 8d a4 34 51 d2 5a 22 b3 5a c6 fc -61 e3 70 74 a5 c2 2b c1 c7 01 db 19 32 b8 c5 57 -b8 48 7c ea 56 60 50 e4 8a d6 e0 37 6f 8d b4 19 -8c 4d 27 db 2e 6b 28 c2 5a ed 83 7e f4 77 42 d5 -eb 8e b1 d8 b4 32 c9 d5 73 cd 4b 86 fd f3 2c 52 -a3 d0 f6 cf 92 cf 3c d9 51 96 77 a5 8b 1d 1d 99 -4f c1 c9 05 7a c1 06 e8 16 04 59 26 b4 5b 00 e5 - -# PKCS#1 v1.5 Encryption Example 5.12 -# ---------------------------------- - -# Message: -84 e8 28 f7 15 f2 28 a6 02 65 - -# Seed: -f7 f2 75 a8 53 d4 e1 26 d7 d0 c3 8e f7 03 f3 fb -da 7a 95 20 78 8d 7a 81 a3 1b 05 30 d4 3f e6 c9 -4b 1b 1b b1 08 51 20 9d b2 6a c4 b8 88 ae ce ea -77 13 82 4c 29 38 b4 c6 43 1b 2b 03 c6 93 ab 7b -54 63 15 41 54 6a c4 03 94 79 85 48 fb ba 95 88 -2d 91 a1 7c 27 e7 dd 53 02 6c 96 79 1e e5 5f 24 -7d 7f 89 8f ea b3 70 9a 13 2a 78 26 66 a1 4d 0d -f1 a8 4e - -# Encryption: -4e 3f e9 6e 8f 96 e5 b3 c6 11 ca db 96 ed 51 04 -20 98 ec c5 47 be 7b 88 f8 de a7 65 ae 14 e8 35 -0c fe 39 dc b1 c1 d6 e4 17 9c a4 04 d5 38 4d 87 -b0 66 50 75 ee d7 da 7a af 71 00 8e 24 67 d7 0b -ff f6 23 b4 59 4b 6d ff f9 0e 3d 84 85 f9 41 89 -48 6c a0 ca 9e 72 2b 2a 77 7e 25 b5 82 f7 ad 4e -c5 10 3a d7 67 85 9a c5 9a 1b 8c 5c 19 71 30 17 -48 fc c2 64 f6 c9 29 36 4a 8d 9a f4 22 55 c0 f6 - -# PKCS#1 v1.5 Encryption Example 5.13 -# ---------------------------------- - -# Message: -c4 79 7e 8a 6f 26 9b f2 5d 4c b4 ec 3f a4 6f 8f -11 e6 b3 69 fb da ec 1e 51 97 83 58 d4 6f 3c f3 -b8 42 91 7d 96 7a a9 d3 0b 18 34 53 93 7a 68 26 -56 b2 7b - -# Seed: -17 77 42 19 7f 04 11 44 3b d8 7e 28 ea 88 d5 4b -4f 2c 7a b1 dc ae d8 1a 56 f8 d7 87 91 12 44 54 -02 85 04 d3 22 e1 de 34 60 47 a4 93 93 3e 87 62 -8c e0 8b 06 c0 17 08 2d cc d3 8b 48 94 65 14 ea -37 7c 2d fc 75 2a dc 24 fb 57 - -# Encryption: -79 84 c3 ba d8 6a 54 79 90 e0 47 5a 48 4f 8d ba -5d 4d ce b0 d3 e3 fc e0 71 d6 f8 71 76 b7 cb e6 -f8 11 2d 81 d7 cd aa d7 7e d0 d5 78 8e 65 f8 bf -5f 0c 2a d0 df 07 cc df 54 b2 da ce fc 19 ba 65 -20 1c cf d3 61 d1 86 b7 d9 e2 69 aa 1e 6a d2 c7 -2b d2 3f 58 08 4f db c3 bc 60 e1 7a 33 e3 c5 5a -95 eb 0c 38 a0 81 bc 0d 39 81 db 26 a7 21 2d 6f -69 1b 33 6d ac 46 b6 4a e2 25 38 a7 b0 08 7f 25 - -# PKCS#1 v1.5 Encryption Example 5.14 -# ---------------------------------- - -# Message: -a5 e9 de b1 c2 0f 98 2d 5b 7d 4b 87 d7 99 46 1f -05 3d 91 9e - -# Seed: -59 75 9c f5 f8 38 d9 52 49 3d 0f 42 81 e3 ea 0f -e2 16 97 1c 0a 2e 24 54 b9 6c 8a 11 b4 c6 91 27 -15 90 24 db 6e c5 c3 36 40 d1 20 29 58 99 f6 66 -6c 94 17 b2 02 a8 6c 26 ef d7 c6 13 4c 92 fd 86 -b8 32 3d 17 4a 62 53 48 81 38 2d 7c 6c 9e 1b 8c -1e 95 da f2 10 c3 e9 ba 43 e5 88 79 f3 4f 2f a7 -1e f6 ae 4b 68 d6 41 47 be - -# Encryption: -70 ac 10 2d 07 1e 3d 90 22 81 83 62 16 e0 81 29 -0b b5 df cd 56 68 d1 1d ae fa 0a b0 64 59 9d 0f -91 4b 47 29 61 37 5b bf 5f 2a 66 6f ae 0f 6a 25 -ba fd 44 f6 65 c1 7c 14 4d c4 d4 cc 0a 5d 5b a5 -5c 47 a4 cd e9 59 b3 2b aa 52 32 a0 7f bf 93 78 -c9 c5 3c a2 b3 77 81 c9 3a 1c c8 d6 52 94 78 a1 -c6 73 03 4d da 7f f3 35 60 78 6a 46 4f 5b 4a 55 -9c 62 6a e2 95 bc 91 d0 ee d9 37 5f 49 e3 e4 aa - -# PKCS#1 v1.5 Encryption Example 5.15 -# ---------------------------------- - -# Message: -73 9f a7 6d bd 12 73 03 b7 ab f9 3e 1d 7b a7 29 -75 5d 6c 81 1b 5e 93 35 5e 0c 01 1f 74 46 4c 7d -b4 79 19 3c 3f b7 38 0a 62 a0 c0 06 a2 d1 dc 49 -a7 66 af 63 fb a4 52 7c d1 57 50 6d 62 c2 1a - -# Seed: -a0 b4 da ff 3e 26 ce bb 3e 4e 3a 43 db 36 c4 66 -fb 8c e6 05 b2 5a f4 c9 da 74 4b 62 d4 1f 9e 62 -c2 28 5c 39 0d 60 d1 8e 3d 7e 67 5b 4a c3 19 67 -24 45 19 46 bc 1c cf 2a 9b 56 2c 45 33 c9 - -# Encryption: -2b 79 80 91 b3 a3 91 53 3d 62 dc 0e 41 7b a6 de -da 00 5b fc 30 ab 7d c8 2e 8f 9b cc 74 17 bc b0 -04 34 8c 6d 00 e5 37 d2 72 2b 84 38 61 48 92 45 -ab 0d 51 f2 11 44 7d ac 33 a3 f9 dd 6f 3c a6 6b -bf a0 d1 ad f9 8b c9 09 95 15 92 69 76 b9 25 8a -ab 63 20 4a d8 91 65 c8 7b be fd 8d 98 85 34 b3 -74 07 df 7d 43 ad 39 1e ed 99 82 47 28 ef c3 a5 -33 b7 89 b4 7e 8a a7 12 16 17 47 4f 33 25 c5 1a - -# PKCS#1 v1.5 Encryption Example 5.16 -# ---------------------------------- - -# Message: -5a 44 b5 47 bd a1 9e cc a1 dc 7b c0 45 50 20 5f -66 c5 de 0a cb - -# Seed: -2f 54 85 d2 5f e5 ce 40 ae 62 a1 12 97 6c b4 a5 -39 b7 4d 96 ef 8b e8 73 32 5e 20 4b b3 f8 66 07 -a1 6a 2c 2a b5 0f 69 78 09 ed 03 01 72 70 ef 20 -a1 02 c4 3a 2c 4c 3b e6 ab 7a 8a e2 dc b5 69 84 -d5 e0 65 52 45 93 eb 70 70 83 4c e5 53 f1 75 69 -20 bb cb be 4f b2 6d 35 d4 ad cb 59 df 52 46 35 -6f f1 2e 7a a9 ee 6d ef - -# Encryption: -62 d1 48 9a 40 3a 90 fa ac 67 7a bc 17 4a a7 24 -3b c7 51 a9 64 69 5f 6c 32 b3 9d e0 18 fe 46 43 -44 20 ea 76 59 be 2c 41 0b c5 6c 4e 3e 7a 1b 16 -77 fd f4 ad fb 23 24 f0 41 ed d5 79 0c 4c df ab -36 55 e0 7e 41 fe 9d 73 29 21 51 b0 dd 5b 96 fc -84 a6 b2 0f 6f 3b c0 f6 0e ae a8 d8 29 17 b2 10 -83 05 59 40 fc 02 ee 3e 17 c3 78 bd 4d 85 06 d0 -8e c4 5f 33 de 57 80 f0 1b d3 18 a9 a1 67 87 ad - -# PKCS#1 v1.5 Encryption Example 5.17 -# ---------------------------------- - -# Message: -16 80 2d 80 3c - -# Seed: -02 f0 e7 62 c3 39 17 bf 6a 4d f1 1f a2 84 73 54 -7a 5a b0 76 7d d3 a6 1a 8d 05 cc 1e 6f 98 34 5a -f1 a0 0e 42 f6 2b d8 ec ca cb d3 7f 4c cb 80 9e -9e 05 5f 73 d3 37 5a 60 41 d9 78 2c cd 85 d5 9d -14 f4 3e 5c 94 10 25 7b 90 6e 41 cc 8b 97 35 47 -d0 62 2b d2 1d b2 9a 91 38 d3 b1 be de 38 ce 5c -94 c4 e1 d2 a0 a8 40 0b 45 ba cd 42 69 79 7c 38 -5a a3 06 6e 65 80 72 99 - -# Encryption: -75 3b 9c ee 70 d4 18 1f 95 63 87 80 db 7a 04 f9 -b1 2e a3 8e 5d ae e4 f2 89 4c 02 67 3a 53 f4 85 -30 74 6f f2 85 8b 78 7e fc b4 2d 45 e5 31 be a1 -c8 da e9 48 77 15 3b 95 6a c7 b2 87 46 ee 21 c6 -31 bf 9a 3b a7 9d 2b a8 13 21 b7 96 03 b1 d0 1a -4e 90 9e d5 a2 7c bf 27 c9 57 78 3d 3f 79 50 e0 -1d d8 f4 47 f1 0e ce d3 6f 2d 19 35 86 f5 cc 17 -fb 62 2a 05 fa a1 fb 5c d2 aa 06 4c 08 67 b1 ca - -# PKCS#1 v1.5 Encryption Example 5.18 -# ---------------------------------- - -# Message: -d6 d0 f6 03 85 97 9c a5 06 fc 83 34 21 bc d2 2d -a6 a0 6a 8f 37 0a 7f 02 fe f4 7c 1c b2 19 9f 26 -45 c7 54 90 fb f7 89 ad 52 47 04 da 8a 27 66 c6 - -# Seed: -a0 3c 05 67 2e fe 23 b4 4b 26 c7 93 e7 05 3a 77 -04 8b a2 db b4 b5 3a e9 75 18 54 e7 ad d7 d6 7c -12 cb d1 6c 0b 19 34 d2 c2 3e 77 cd cc 89 ce 1d -45 c7 61 15 8a a8 61 31 71 a7 39 01 ac 1f 61 c6 -57 05 53 3d 3e 63 9b 57 a2 48 92 91 79 - -# Encryption: -00 78 dc 48 a6 61 58 99 2a aa 68 fc 3c cc 62 8f -92 a7 08 d0 b1 d4 38 37 20 8d 53 4b c3 f9 be 1c -14 12 ed 0f 9f 7b ef 49 43 0d c9 e9 98 f7 52 e0 -74 77 68 b4 ae 38 14 46 96 c0 03 d6 d2 5e a1 a6 -ca 6a ec 92 4a 9f 4d 9b 57 5a 8f 13 6b ba 29 bf -31 c1 3b 70 50 bd 55 d1 00 0d 43 3d aa 6c f1 0b -49 11 6c 80 63 10 7f d3 a5 bd f6 15 45 c5 d8 63 -f6 a7 88 81 78 6c c8 dc 37 6d 36 c9 11 36 82 25 - -# PKCS#1 v1.5 Encryption Example 5.19 -# ---------------------------------- - -# Message: -b0 38 1c ac 04 f3 10 15 04 96 8f 26 d6 55 47 45 -38 3b d1 71 d3 61 56 dd 36 80 b3 db 6f ad 7f 77 -1f 7d - -# Seed: -cc 54 8a 67 77 cd e9 53 c1 5a 71 fc 49 7c 0c 36 -17 b1 bb 05 6b 03 28 8d 9a 54 8b 69 3b b4 30 8b -67 c1 da c3 8b b9 b8 c9 cc 89 6a c2 44 a9 e3 0d -13 24 30 f4 ce ae 57 90 34 3d bc e3 8d 05 6f 27 -b8 6b dd 9d 32 a8 17 1f 3b 3c c2 fd 14 22 65 ac -9a 68 dc 35 36 27 33 9c d8 83 03 - -# Encryption: -45 6f 7c 3e 3b e8 5f f7 bd d6 b5 b2 50 bf b8 1c -d6 fb b1 86 d2 5e 0c 1c 52 59 d6 78 87 93 c5 41 -ed ac b4 ec de db 8a 89 29 01 34 a6 06 f4 6a 81 -99 1c 13 b1 20 e3 30 56 bc 0f c7 e9 7b 34 2d 0f -20 05 18 13 dd e4 5e 0b 59 6a 7d cd 69 04 90 3b -8f c0 76 a6 e2 4b 3a d8 01 34 16 d9 fd 18 48 30 -55 4a d5 4d 55 48 bc ad da f5 92 0a 02 49 55 88 -78 25 dd 37 1a e4 ef 90 06 9a 4f 31 1c 5a 17 29 - -# PKCS#1 v1.5 Encryption Example 5.20 -# ---------------------------------- - -# Message: -e5 - -# Seed: -fe 0b c7 ac b5 6c e1 4b 4e 2f 55 fb a0 e2 b1 71 -54 90 7b e9 4c e4 85 c6 98 4d 61 f6 7c 04 a7 40 -a2 8d 60 94 ae ae 33 b3 ea 0d 58 18 3e 1e c7 f6 -01 b2 ab 82 0f b8 a7 ff ac 0b 4f 96 0e 1b 4a cb -e5 7c dc 35 b2 25 c4 97 fc ac a0 30 19 a2 95 b3 -e6 6d a9 6f 53 79 cc d1 da 44 47 9a 4f 21 35 e1 -06 3d 71 a2 82 c1 e6 6f db d5 d9 53 f5 71 8c 25 -39 d0 0c e4 9b 45 18 20 45 4d 2d 49 - -# Encryption: -5c 53 36 77 a1 dc b3 63 95 da 9a 6d 34 77 bf bf -71 51 2c 6a 93 3d 04 1c a3 13 44 e1 cb e1 e5 55 -88 a1 14 6e 3d ec 46 10 ef ac 41 b5 f8 02 66 02 -66 52 b3 d7 aa 59 42 74 d9 d9 20 d3 3a a0 ad 9b -4e c5 9a a8 80 71 2a 1d 1c 36 8a 45 7f 35 c7 43 -88 b0 42 f2 49 8e 9f 4b d4 5a 26 f3 21 dd 9e b3 -33 ef 80 af e3 af 9f 72 9c a1 8f 42 c8 8a 71 73 -85 8c 54 20 66 f8 a2 52 cc f0 fe af e6 b5 a9 24 - -# ============================================= - -# Example 6: A 1024-bit RSA key pair -# --------------------------------------------------- - - -# Public key -# ---------- - -# Modulus: -dd ca d6 a3 8b 37 04 cb e0 6b b1 b5 1d 11 62 58 -49 78 a4 29 1f b6 73 b4 ea 30 ed 8b 51 a4 bf 26 -1d c9 f0 f4 69 ce 99 88 a0 89 f0 84 36 64 64 a1 -80 cf d7 17 10 69 a6 f6 36 d7 5f 23 40 1b 30 cf -43 ad cf 87 0e cd 24 58 2f 4d a2 95 22 91 51 dd -cf c7 c9 91 86 b2 45 88 5c b6 31 96 c4 a5 72 6f -20 7e e3 60 af 3a d8 c4 83 85 a4 e0 84 1d 7d 85 -1d 54 54 5d e7 67 d8 f9 99 dc 17 eb 0c 57 11 89 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -dd ca d6 a3 8b 37 04 cb e0 6b b1 b5 1d 11 62 58 -49 78 a4 29 1f b6 73 b4 ea 30 ed 8b 51 a4 bf 26 -1d c9 f0 f4 69 ce 99 88 a0 89 f0 84 36 64 64 a1 -80 cf d7 17 10 69 a6 f6 36 d7 5f 23 40 1b 30 cf -43 ad cf 87 0e cd 24 58 2f 4d a2 95 22 91 51 dd -cf c7 c9 91 86 b2 45 88 5c b6 31 96 c4 a5 72 6f -20 7e e3 60 af 3a d8 c4 83 85 a4 e0 84 1d 7d 85 -1d 54 54 5d e7 67 d8 f9 99 dc 17 eb 0c 57 11 89 - -# Public exponent: -01 00 01 - -# Exponent: -5e 48 e0 3d dd ec a1 a9 59 d9 ee 4d a3 f1 c3 f0 -ec 2a d0 fe 7a 70 c1 77 63 27 31 94 4c 3c d0 d5 -8f 4c 4d 96 59 74 6e 68 5a 76 c9 3c 2b 33 3a 64 -3d b2 1d 29 bc dc 6d 11 b5 f6 90 87 17 b5 77 65 -99 ff 30 88 b2 01 4f fc 51 f1 8d 93 22 24 f1 05 -9b 22 39 ea 56 44 e8 06 9a 5c c4 31 ae f6 07 38 -0a a9 24 c1 58 ab cb dd 97 51 f5 4e 67 79 c4 ec -23 21 68 b0 01 4f 4c 8b 49 7b e9 49 ae e6 57 51 - -# Prime 1: -f9 47 1f 2d 22 13 a9 2c f0 a7 c3 84 04 d4 0e 32 -2f 14 f4 39 61 f0 1e 92 33 63 cf 66 53 e8 98 4f -b6 e6 8d 66 e6 f1 59 80 3a 44 bc dd 09 e0 56 19 -6d a4 00 7a e2 a3 7f 40 57 bf 7e 3b 5e 4a 80 23 - -# Prime 2: -e3 c5 f8 cb fd 51 c6 c2 66 b1 a3 2f b2 f6 fa 48 -9b 97 54 b2 27 c7 7f 53 59 c5 5d fa 03 80 fe 9a -02 b4 d3 95 05 f3 ab 36 95 7c eb fa d5 34 d7 f9 -a2 67 eb ee 19 af e5 c6 24 04 3e 30 19 d0 ac 63 - -# Prime exponent 1: -2c f4 79 97 df 1c 62 97 1b 33 76 1c 19 ee d0 3c -96 a7 15 c0 3f 7c 59 57 0e 73 82 94 b6 af 2c c0 -bb 80 6a a1 d3 26 55 78 bd 89 65 f2 0a f4 ed 32 -1a c6 c7 db 61 82 10 d1 de c1 47 17 97 d2 a1 b7 - -# Prime exponent 2: -a6 c0 29 bb d5 91 c7 cc 4c 78 61 fa aa af 8b 5e -1a a2 78 7c 11 09 49 5a d1 0e e0 15 07 f9 a8 eb -41 6d f6 b4 53 ee 26 fb 48 07 73 8f 68 05 4e d4 -50 24 7a a2 0e a6 2a b6 9b 69 8b c9 95 2c a2 f7 - -# Coefficient: -aa d0 60 de 5e db 35 81 8b d6 3e 85 d4 2e ee 55 -e4 cf 8f a4 2d 4e a5 92 83 ce f9 6a ca ad 55 5d -47 8d 2f d7 c3 8f a9 31 fa 1a eb 6d e5 66 55 3d -08 f1 cb c0 6a 51 0f c2 e5 69 b5 a8 22 67 ac 91 - -# PKCS#1 v1.5 encryption of 20 random messages with random seeds -# --------------------------------------------------------------------------- - -# PKCS#1 v1.5 Encryption Example 6.1 -# ---------------------------------- - -# Message: -a3 e1 52 75 fb 33 ae c3 7b d3 dd 58 2e 19 f5 d3 -8b 9d 0d - -# Seed: -78 da a6 1c 07 f9 41 b4 b4 40 e7 38 33 8d 06 cc -15 7a 01 57 4a 72 fa 78 d3 63 dc e9 94 09 04 22 -0a 71 32 35 69 96 f0 7c 01 d5 4e e5 4f a3 2c 5f -aa 1b 90 d2 43 0c 80 a2 32 17 e0 6b b1 c8 04 3d -61 ff a1 8a a1 d1 8e 15 e4 30 aa 12 1c df f4 3f -ab 2b b0 de bf 73 e3 d5 a7 5b 46 f9 0d f7 3d 65 -6b b0 66 ac 1c 76 8f a3 83 e4 - -# Encryption: -9b f1 dc fc 65 4c a7 a2 3d 80 a1 2c 09 c2 59 d0 -4b ae 07 e8 31 f6 09 e9 f0 35 d3 56 41 4e d1 06 -f9 b4 62 35 fa 3d a9 1a 32 b8 fd c8 fb 88 30 c9 -65 23 dc aa 9b 25 38 fc 01 02 dc 0f 7a 5f ae 86 -35 b3 b1 23 14 c3 90 55 fa ac fb e0 0a 15 16 34 -24 14 8c c9 e0 f0 ab 42 df 09 02 3c 05 2a 46 ae -3f 86 a1 8d cc 53 80 ce 39 06 2e 36 23 75 d3 a5 -f9 e3 b3 4a 5d a2 5c f0 de 9c c1 9c 4d 04 f6 3f - -# PKCS#1 v1.5 Encryption Example 6.2 -# ---------------------------------- - -# Message: -44 3a b0 3c 46 04 db d8 bf 80 06 ae cc 2a a8 de -64 a1 55 b4 f9 0c db 08 59 98 6d 5c a3 60 66 03 -59 80 8c 59 bd 9c 2d e7 75 fc 18 52 02 24 b6 69 -c3 25 - -# Seed: -3a 6a 60 89 f7 27 dd 16 92 97 a5 79 fc af 8e a7 -f8 e1 2d 54 27 f1 f7 90 1a 90 22 a2 1e 2d 82 d2 -f0 8e 63 ba ca 26 7b 65 3a af 89 de 23 2b a3 d3 -92 d1 cb 49 dd 76 b3 88 b2 da df b0 09 4f da 97 -18 f1 78 37 38 d1 8f a7 aa a6 29 - -# Encryption: -5a 0a e0 de 28 fd 33 cc 98 01 bf 4d d3 06 71 23 -74 53 63 ca ce 4d d8 b7 b8 b8 11 d6 48 2f 59 12 -0c 0d 65 3e ee 86 a6 1a 01 2a 18 0e c5 d1 7e 99 -14 6d 0c ca 0a 58 7c 85 cf 01 dc 7a dd 84 23 0d -91 80 bd df 5a 77 19 f6 9d 1f c4 81 af 6f 47 db -8c bd 4e e1 87 1a 57 3f c8 76 7c e8 be ed b5 c7 -3f a9 3f 0c 53 80 4a fe 2e 76 cc eb b8 7c ba 00 -cd ac 94 de 40 e2 b0 be aa 8e 2e 41 58 c7 78 50 - -# PKCS#1 v1.5 Encryption Example 6.3 -# ---------------------------------- - -# Message: -d1 ba 30 e8 8c dd a3 3d 2b 41 89 6f 43 df 08 1e -ef 20 ca f7 8d 7c 1b 97 0c 6a 61 72 e8 38 39 dc -43 d4 be 29 f9 a7 72 ba 41 59 73 8b c6 13 29 68 -61 8d c7 19 7c 0e dc 57 a1 - -# Seed: -9b b6 2b f9 a7 51 fe 41 81 66 43 68 98 ed e8 35 -cf ae e2 f5 0e fc ad 60 94 2f 2f b2 da 1a 20 38 -03 f0 be 80 be b1 7f fa d0 da b2 18 b1 28 02 7f -34 97 a4 f8 d4 1a b9 a1 be 26 4e 96 b4 45 48 76 -7b e8 d4 a7 - -# Encryption: -81 19 1c 54 75 27 3d e6 6a 41 bf 56 04 f3 2b 58 -b7 59 a1 4e 74 26 c7 46 de 4b 53 ba f7 80 bb a4 -2b 42 e9 27 8a a9 45 27 f0 ee bf 85 5f 46 2d 6f -bb 29 78 a4 65 30 37 d8 b4 48 e1 b8 07 a1 83 1d -bc 53 22 d0 66 98 4e ec 28 11 4f b7 20 1c 79 6b -57 3a dc c5 cc 92 7f 3a 58 97 b2 00 55 64 ef 1a -2c 01 67 f5 43 65 51 18 34 ac 6f 49 58 b8 31 8d -09 e6 78 54 d6 31 ca 52 80 76 86 ab 70 5d 71 a3 - -# PKCS#1 v1.5 Encryption Example 6.4 -# ---------------------------------- - -# Message: -a5 4b c2 27 8b 56 76 85 c9 b5 68 54 e4 c1 c4 06 -d9 16 17 47 c6 81 34 80 16 3e e3 af 23 b2 1e d1 -99 83 e0 f4 2b fc 93 25 cb 5c 82 e1 a4 7b 8f - -# Seed: -cc ba 5f a5 c9 4e 79 83 2a b0 46 c9 77 74 95 b1 -63 bd 3a f2 17 59 0f ec 5a c4 8c 62 78 6a 27 f3 -70 d2 85 99 55 e4 5a fb 2b 79 f1 2d e4 16 11 45 -be 62 ac 13 a0 3b f4 81 95 fb 9e 5a 18 b8 2d eb -bf 3d df c8 08 25 d5 93 fc d4 02 e7 4e ef - -# Encryption: -3d e4 c3 e0 59 35 7b 8a 54 83 7e a1 59 62 cf e2 -00 7c 5e a8 98 5c 93 51 91 64 a6 89 b7 55 b6 1c -8b d2 73 96 9d 33 3c 4b cd 9b 06 03 53 c3 7b af -13 eb 42 2f 1c b9 77 56 e6 b4 94 6a df e1 af 75 -e9 fe 2d 95 b4 b1 3d a1 73 2b d8 b8 be 11 97 02 -79 19 53 0c 34 7f 3d d1 03 9e 34 8a 53 b1 16 f9 -f8 fe 89 36 a8 4a cc 39 f2 e0 69 56 b6 78 d2 0f -df 95 17 07 2e 02 f5 70 78 fd c0 46 59 40 0c 5c - -# PKCS#1 v1.5 Encryption Example 6.5 -# ---------------------------------- - -# Message: -f3 c0 0b 00 9e 5e 08 a6 3b e1 e4 00 35 cd ac a5 -01 1c c7 01 cf 7e eb cb 99 f0 ff e1 7c fd 0a 4b -f7 be fd 2d d5 36 ac 94 6d b7 97 fd bc 67 9c be -68 f1 a2 f3 62 59 c5 58 f0 4d - -# Seed: -e2 2d 5e 43 b1 eb a1 ac 0c e6 5c 32 70 51 0e 0f -13 c9 4e 96 24 ee 52 56 59 ef 4d 57 37 88 20 c9 -35 22 9b 30 99 aa 2b 23 50 61 4f 8c c4 29 58 15 -a2 c9 ed b2 d9 c5 9c 73 d1 aa 90 0c 21 34 c0 a7 -d0 90 9c - -# Encryption: -53 3e 67 a2 bc 5b 3f 01 34 2d 8c b8 d9 25 d7 3b -4d b3 4c b6 75 da 90 39 22 6a 98 e4 d8 13 c6 20 -11 09 90 a8 e6 ac ba 50 fd 04 f3 30 7d eb af 20 -d4 f3 74 cf 6d e0 d9 b2 1d 86 e2 66 07 9c f2 f1 -8b 45 03 20 8a 21 5d e2 b1 1c ca 9e 34 64 fc 5a -c1 dd 7e 96 b2 fc 04 09 e4 2f 46 a5 06 12 a6 b2 -06 1e d1 61 9a 7f e4 67 96 ed 8f 52 06 9a 5b fc -84 08 d5 58 f5 2a 03 33 2e e8 ed de f8 f7 45 d9 - -# PKCS#1 v1.5 Encryption Example 6.6 -# ---------------------------------- - -# Message: -aa fe 5b 27 11 11 ef b8 79 2f 5a a9 23 83 07 29 -76 b7 2a 0a 27 2f 90 c5 24 61 f8 8a fb 1b b6 b7 -ec 26 38 1c 65 76 a4 10 87 a0 39 80 9d 14 f6 11 -60 67 59 4e bb - -# Seed: -75 0e f0 86 9f 8c 75 7e f4 31 57 8b 45 a6 e7 41 -bd 1d 96 0e fc 37 89 b1 0d 2b de 27 38 18 07 4e -bf e5 fa ae 10 ac 24 4f 89 f6 c0 2d e5 d1 ad ae -fc 7a 8f d2 4d 7b c3 76 fd 65 d3 5e 39 50 8c 42 -36 ac be 2d 5c a7 69 4b - -# Encryption: -34 4d 43 37 61 2b 22 dd 40 2b e3 79 e6 b2 65 0b -51 9e f3 7b 7a b4 85 81 94 52 d1 67 c1 b2 15 db -d3 fb 24 f9 b2 f9 29 86 69 cb 1a ee 14 1a 7d 89 -01 64 20 43 11 1f c3 8b 3f 40 ef 0b 7f fd 7d f7 -6c 2d 92 e3 29 41 1c 75 e0 f1 72 85 bb 6b b8 26 -88 12 8e d9 bb 95 1c ae dd 7d 06 7e dd 0b 13 e8 -27 5a c8 86 25 d9 7c e8 d2 0b 69 b3 57 38 b2 f4 -72 6e 29 84 b8 df a8 66 95 aa e8 8d 9e 17 6d f6 - -# PKCS#1 v1.5 Encryption Example 6.7 -# ---------------------------------- - -# Message: -a1 22 4d f9 aa b6 58 78 45 b2 a3 93 a5 a8 76 c1 -7d 95 9d 53 5b 54 19 d4 12 a9 a5 31 bb 43 7e 1d -ac 1b 54 6d 62 - -# Seed: -76 1d c4 f5 1b c8 51 8d 62 7c 45 b3 e9 81 8b 85 -42 a0 6f fe 17 2b e3 af 5c e7 a9 05 3f e5 4e 69 -70 12 49 73 37 4d fc c1 f4 9f cf fe 95 7a ae 8c -9c 3b 13 0f 46 05 d2 c3 ef a2 93 2a d0 83 de c5 -8e 70 d4 f6 92 6c 80 b5 d4 89 1a 1a 55 9e db 0c -af fa ca d7 5e b2 64 83 - -# Encryption: -78 5f 6a aa b4 d2 f3 18 d4 af 37 b6 e0 07 4e d5 -a4 19 4f a6 05 a7 ec 87 d0 5a 07 f3 34 9b 5b 92 -f5 fc 47 90 ea b1 37 86 cb f0 35 c7 8f fc f1 34 -4d 1f 3e cd aa e0 16 72 22 2e 6d 4a 96 55 59 e2 -c0 82 91 cb 1d 4c 2d 4e 68 ff 8e e7 15 23 f6 dd -ae c5 0a 4a b2 2e dc a2 47 36 4c 92 d8 73 99 e8 -a7 1d f7 43 6b 62 d8 ba 8a d2 02 94 cb c6 0d ca -e0 30 5c 79 73 f7 fc b4 a5 cb ed 15 71 3a 7a 16 - -# PKCS#1 v1.5 Encryption Example 6.8 -# ---------------------------------- - -# Message: -1e 0e 3f 65 0c 32 db b2 f6 91 6f 36 f1 35 bc ae -88 1d 54 55 07 40 2d 6a fd 3d 5b 3b d8 38 5a 50 -b4 fa d6 f7 89 49 fd e6 21 64 ed 76 89 e5 f9 a4 - -# Seed: -ee a9 0a 54 d0 16 da 7e 8f 08 76 a7 33 b0 f2 a0 -6f 90 a7 3c 1a 3c d6 39 b6 cf a9 06 ce 08 ef 78 -8b b6 fe a7 4f 22 eb 91 a6 ab 32 84 cd fc 1e 72 -e6 3e 78 d1 8a 64 d6 7f 9d 1a 29 19 49 ed 2e 32 -3e 91 dc 03 38 76 ee eb 09 ff a7 1f 59 - -# Encryption: -6b bd ae 20 f9 89 bf aa 5d 65 da dc d6 1a 86 b6 -63 07 a0 60 2f b5 51 a7 38 06 12 2d b1 88 ec 1d -41 e8 4d aa 2c c7 d6 be 54 1e 12 28 88 09 a1 7e -08 5f 2c af a8 ae 13 67 0e 0f 33 65 a1 47 1c b3 -15 7c 06 e0 f6 3b 82 00 f3 16 0c 16 3f de 7c 90 -1e f3 26 e5 70 0c 9f 5e 07 fe 01 98 81 0f a8 0c -8c 5d c5 3a 50 bc e2 54 f7 d1 99 01 cf 6c bb 60 -34 13 e4 1f 90 30 e7 39 c8 ba 96 49 97 84 74 99 - -# PKCS#1 v1.5 Encryption Example 6.9 -# ---------------------------------- - -# Message: -73 dd f0 a1 4d 57 ba 65 b4 f6 93 ac 76 1e 20 2b -1e 5b 85 7c 8b 34 04 e1 41 85 df a8 aa f0 49 89 - -# Seed: -fd 43 3d 7b 01 76 b7 31 d7 80 dd 6c 58 51 b8 2f -17 6d 62 b8 0d 96 ae b6 31 d7 fb 8a c5 be 55 ac -21 7f 4e 08 bc 7e cf 81 f8 e3 f5 dd aa cd c6 c2 -17 8d f7 81 88 23 97 53 3a 63 8e 62 f0 74 ac 48 -8f 4c 12 aa 57 be 2e ce 5b b6 e9 09 6c d9 22 59 -a4 5b 0b 03 2f 10 14 31 a2 8b 86 40 fb - -# Encryption: -ae 97 ff 43 4e 9a 5e e4 87 76 1d b3 56 90 0b 06 -37 37 46 5b e5 05 8d c0 3a 28 a3 22 e5 c0 e0 91 -b7 99 bf 65 94 55 cf be 05 42 7a c4 d0 44 05 e5 -6e e0 4e 06 3a 23 73 db cb 9b 4f a1 6e 43 07 94 -6a 49 b3 56 34 52 0d 41 6f 65 c3 c3 22 ed c5 46 -71 56 91 28 a2 a1 52 a7 6f e4 44 c4 30 aa 6f 03 -c4 12 9c 6e 21 31 75 5d 76 4c ec 4a 14 86 a8 1b -a8 a3 16 8d 16 e7 4d ca 8e 77 bb fd 67 ea 37 2b - -# PKCS#1 v1.5 Encryption Example 6.10 -# ---------------------------------- - -# Message: -ef 3e 76 98 e7 d9 cc 86 3b 46 6b b2 88 55 6e 4a -c2 52 82 e0 94 fb 5b 57 c1 76 17 bb 98 - -# Seed: -db 90 a7 58 0d 8d 42 9e 22 bd 7e a5 c7 b4 cd 0c -65 ad 0e 2e 27 f5 33 41 bc 23 a8 b1 35 8a 76 a0 -b5 e9 4f c5 b4 2a 9f 75 6c c6 3b 9d 62 3f 55 17 -67 fb c6 f7 11 4e 40 ba 73 61 fd 32 d6 f8 d7 72 -34 37 43 6d f7 24 b1 32 7a ae f7 b9 57 56 27 68 -f8 fa dd 57 86 2b a0 b3 14 09 6a 3b 38 77 0e 31 - -# Encryption: -43 f8 cc ce a8 12 d3 38 5f 43 fa 83 7c b5 e6 fa -59 0f 1a ff b8 62 d2 ca cc c6 d8 e8 bb 5d 5c 0d -50 ff b9 f8 f8 09 89 00 c1 2e 77 2a 84 7b 37 81 -57 78 2b 0a 90 40 f7 a6 16 c2 eb 05 8e 44 d4 a7 -e2 0b 48 5a c2 9f 40 d6 8e 03 c3 9d dc 8d ae 7e -7e 09 e2 8f 9d d2 19 0f 3a 9f 35 74 b2 f6 34 00 -15 44 36 3c 86 1f e2 7f 7a 39 23 66 92 fe 35 82 -14 0b 21 72 ce 64 7e ed 41 76 85 c6 e1 db 85 6c - -# PKCS#1 v1.5 Encryption Example 6.11 -# ---------------------------------- - -# Message: -f8 69 18 47 4f 88 16 97 11 1b dd dc 1f 00 61 3e -b2 c3 d9 c1 78 76 68 35 3e bb 02 b3 20 a3 26 - -# Seed: -cb 7d 99 da 9b 11 ea 57 f6 40 55 43 44 7d d1 5f -b5 cc a0 a1 0f 3b 69 b4 d2 33 09 ef f2 75 0c 48 -6c a6 55 32 5b 55 a3 27 ff e8 bd 6d ca 99 bc 8e -fb 5b c2 94 2e c0 39 e2 84 25 e4 a5 6a 07 d3 80 -12 f1 0d 21 5a 22 d6 37 68 59 43 d3 64 72 53 01 -dd 40 e2 17 22 8a b7 91 59 89 98 83 6b bf - -# Encryption: -2a 40 87 80 ad 51 4e 56 71 fe 1d fc 36 7d 7a a4 -65 fc 34 69 f1 c1 52 ae e1 81 45 e0 f5 f0 75 9f -44 69 b4 3d 55 12 3f 5d c9 ff c6 17 f2 3f a4 9b -78 96 02 19 66 0e c6 22 74 d6 c5 9b a3 14 60 bd -10 94 1e bb 5e 05 69 41 51 c5 7b 5b 95 88 ca f0 -9f 45 50 20 a5 4e 97 7c 3c c0 27 da e3 1f 2c e4 -42 17 02 3e 10 ad b6 f2 d8 aa 0f 80 84 fc 45 86 -05 80 3f d4 4b 21 ab c2 7b db 8d 4c 56 17 84 cf - -# PKCS#1 v1.5 Encryption Example 6.12 -# ---------------------------------- - -# Message: -6a 40 bb 60 70 8c 5a 99 2e cf dc 7e e5 3f 54 08 -4d 19 af fd 4d 21 - -# Seed: -c3 f4 fa ca 56 c1 ff 07 d1 ad 10 37 07 d1 b6 68 -20 47 b4 d9 d6 24 6c 2e 5c 4b 0c e6 55 3d 55 31 -3f 8f 38 ae e5 e4 d8 07 3a 55 d2 4a d7 96 c4 b7 -61 26 c8 aa 61 c4 6a 4e e8 5f a9 05 7a 52 6c d0 -aa 24 5e 58 28 f2 18 1b 4a 64 79 86 87 48 e7 47 -9f 40 34 53 3c 0f 3e 1e b4 35 fa 47 d5 3b 58 e4 -2c 96 17 bf 7e 77 7e - -# Encryption: -c4 64 11 c7 11 6f e6 f4 6f 1c a0 f7 4c 60 81 a5 -5d f4 1d 2c 0b 8f c5 d3 8f aa 34 0b 5e cf 71 83 -f8 5f 88 c4 fb 28 ac 5f b1 f1 8a eb fc fc 10 bf -dd 3a 19 00 2c 6b 52 24 14 92 70 4b 6f e6 3d 61 -a7 30 10 c1 49 ff 63 03 28 3e 99 78 cd 84 54 04 -fa 06 b8 c6 98 aa ea 8f 86 13 61 d8 86 b2 c0 f0 -1b 47 a1 a9 a3 dd 90 3f 8a 58 ae d6 6a fc 85 e9 -b7 1e fc 3f 55 a1 21 66 74 16 a3 00 00 13 13 e8 - -# PKCS#1 v1.5 Encryption Example 6.13 -# ---------------------------------- - -# Message: -32 52 fe 99 62 09 74 e0 77 d6 eb 55 75 - -# Seed: -bf 06 9b 4b cf 15 44 8b c3 9e 45 f4 42 6a ad 0d -5d 82 b7 4e 93 ae 1c dd 71 f7 1b b9 be b9 b2 3d -59 73 2f 9c 8b c6 34 3d 13 02 31 de 18 f7 c8 9f -c2 f4 22 18 9c d9 27 e5 09 b1 31 97 aa 56 d8 1a -73 76 f8 33 3e 47 42 44 8c c8 92 de 40 44 97 2c -7f 67 dc be 85 44 a9 0e ec 59 e7 95 ae 59 64 08 -39 2a f5 77 6d a0 d6 cb 29 c7 e0 a7 86 81 30 a7 - -# Encryption: -76 53 cb ff 58 68 92 cd d2 58 bf e6 ba eb d9 91 -45 eb 1b 22 89 4e 1a 76 4d 02 b2 ba 99 59 52 a0 -12 58 20 8d e1 a0 1d 8e 8c bb 5c da f0 d6 03 69 -4f 88 25 5e 80 90 97 b7 0e 9d 79 e6 2b d5 c0 d8 -36 dc c2 9d d1 9b 05 a1 60 26 90 42 05 b6 0c 45 -03 d4 fb e9 93 38 55 e8 68 02 c7 54 28 d9 a6 34 -73 03 16 76 32 d3 3c 5d 9e cc 8a e2 49 3b 58 c3 -6b 2a 65 53 a7 b9 e2 b1 35 8a e2 8d ad 50 28 0d - -# PKCS#1 v1.5 Encryption Example 6.14 -# ---------------------------------- - -# Message: -dc 94 - -# Seed: -05 e8 05 bf fb d1 b7 4d 1a 5a 83 8d 85 71 67 b4 -c7 d4 0a 6c d3 e6 8f 31 be 46 93 b9 8c ec 6d 75 -89 49 19 ab 18 57 2c 75 82 2e 75 e9 de d7 2d a0 -67 97 83 a7 72 18 14 e1 99 16 0b 75 07 f6 7f 4e -de 58 7c 88 be 76 81 5c 50 b2 61 df 30 8b 31 43 -23 73 0c 1e 07 3a a7 29 98 cc 2f 8e 0a 8a 5b d6 -5b f9 34 ac a8 a6 48 59 e2 5f 02 c5 a2 71 39 41 -c8 c8 e6 27 20 84 6d fb 51 c2 ff - -# Encryption: -6a dd e2 44 f0 63 8c 5a b7 45 ff ba b5 ab e1 fe -80 0b 0e ee 15 35 50 c4 8c 36 f4 24 9f 9d 5d 36 -b4 7b 28 cc da 71 a7 dd 83 2e 64 35 ad 0e b8 5e -f7 55 6b b8 4b f9 5a 59 cc c9 c2 07 51 ed 3e 1a -d0 de 10 29 94 a7 12 c5 14 01 46 92 a6 7f 1d 87 -ca 2e 4f ef 29 ec 83 e0 1e 29 ad 0c 97 8a cc a4 -d5 c5 02 74 5a 6c 50 0d f2 00 04 bc 9b f1 6f 5f -cc 69 bf 52 70 9e 31 cf 6a 2b 9f e6 24 d9 a3 64 - -# PKCS#1 v1.5 Encryption Example 6.15 -# ---------------------------------- - -# Message: -4f ae 6c f3 7e 9d 5f 59 - -# Seed: -e7 f9 ed 4a 0c 3a 64 66 69 03 9b d0 1f 24 9f 32 -be a1 e6 57 6c 21 d4 51 89 d0 f8 91 cf 4a fd 62 -32 08 3a 32 1e d2 d3 4d 07 09 84 f5 e9 45 78 39 -b2 eb c1 e0 3a 2c 0d 8d d7 09 73 1e 95 b2 e6 94 -1c a0 90 71 87 af fd cf 5a 87 f5 cb ea d2 f9 05 -2c 38 d0 ee 54 e1 f1 28 ff c3 37 de 45 66 a5 92 -5e 1e 94 7a ef 50 88 1c bd ae d9 9b 1b bc 1a f5 -13 23 2c 0f f4 - -# Encryption: -46 e6 70 5e b1 25 2d eb f8 ec 67 2c 4f de af 69 -88 26 84 59 f9 95 89 bb d3 05 41 33 d4 83 ab e1 -e2 7c aa b0 a7 f0 22 1b 1b 67 a1 4e bf 45 12 6e -60 13 48 b0 43 44 06 da 3a 8c 76 d4 f1 e3 f1 a0 -e0 6d 0d b8 23 da 51 17 b9 2a 40 b6 f3 9f 57 e4 -83 a7 da 36 e9 9b 67 7b b3 f7 6e 6c 5d b0 3f 3c -e4 45 04 eb d4 5e 9f 14 fe 0f 61 3a 2e b7 95 47 -ab 57 8c 58 6d 3b 65 4a 06 fe 1e f3 7a 22 10 66 - -# PKCS#1 v1.5 Encryption Example 6.16 -# ---------------------------------- - -# Message: -cd fd fd aa bc a3 76 7e 70 bb c5 e9 ab f6 - -# Seed: -ac 77 7f 67 29 9d e4 c1 c4 c5 74 f3 1f 67 4f 6f -aa bd e0 31 f8 ec 33 e8 26 76 eb 32 a9 3f 65 79 -aa c3 e9 59 35 9f c5 73 ee 5c 0e 3e 07 76 53 ef -f9 d5 f8 db 4b 1e 7a ca db 05 99 71 53 1f 49 b0 -7c 93 eb 9f de dc f0 90 3a 7d 50 b4 79 67 6f cd -e8 74 0a fb d7 d3 7c 3a 21 02 41 2b de 1d 3a 82 -44 15 6a d8 08 9d 45 df dc 91 cd e6 c3 a1 59 - -# Encryption: -51 3c 76 1e b1 92 9a ff 79 77 a9 ff 0e 61 b7 a1 -d5 11 c8 cb 25 39 24 33 24 25 56 9a 07 e2 29 cb -39 01 71 53 90 f7 de 37 bd 36 2c 96 fc 0b 0d 79 -81 0c 1e 8b 15 e1 3b 00 32 73 47 78 cf 96 4e 6f -6d 17 fc 41 c7 86 76 72 b2 54 0f 56 9d 0a 46 0a -80 fa d5 6b 5f 05 4a b8 e4 9e 40 9e 9e 0b 86 13 -cb 3d a2 0c 35 c3 e1 bb 99 b7 ec ab 7a 00 fc 1f -c2 37 0f 9c 80 85 67 df 89 be 2e dd bd b6 b1 10 - -# PKCS#1 v1.5 Encryption Example 6.17 -# ---------------------------------- - -# Message: -b8 20 c3 2e 73 7d aa 23 4f 29 ba 90 64 7f c3 bf -0a 8e - -# Seed: -f5 ca f8 fe b4 2d f7 b6 b3 89 f5 05 99 a4 ec 20 -e6 19 ca 22 d2 bf c9 1b c7 f1 4a e9 f1 22 9e 07 -c8 88 ed 57 aa 6a d3 c1 04 10 44 c5 1a fb 55 21 -7b 0c aa 23 34 ad 79 f4 7a bb f9 b4 20 83 33 b7 -2b 4b a4 bb 5f d0 37 98 1d d8 01 70 c8 03 60 c1 -4d 5a f5 1e 5f 82 ab f5 1f d3 6f 02 18 67 a6 ec -09 7b c3 39 22 ac ea d9 e3 35 58 - -# Encryption: -3e 23 25 18 41 db 2e 20 7a 27 10 1f 13 29 19 1a -b7 fa 6a 70 1a 52 62 61 48 23 53 a1 a2 21 ef a9 -d3 a9 d4 59 cd 2a 2d 86 68 90 8b 78 3b b0 9c 87 -9a 21 7f 1e 40 0f 95 b2 17 b0 40 a5 3e 34 1c 17 -b9 3d 3c 3d 65 46 0c 5c 7f 2b 4d 79 a3 4b 5a 96 -11 7a a3 67 51 d9 ea f2 33 b0 3f 68 db a6 a4 57 -1b 90 71 77 f8 28 33 6e 82 5a 92 26 1b 62 36 39 -be c9 8d 3a 09 f8 72 c2 ec 59 1b 4c 38 3a 69 c7 - -# PKCS#1 v1.5 Encryption Example 6.18 -# ---------------------------------- - -# Message: -60 6b bd 61 37 15 dd cd 92 c7 b6 df 04 b3 60 72 -f0 11 62 d0 08 76 63 12 ca 69 77 dd 3a 06 eb 95 -e1 ba c7 bc 1b c6 60 2c 9e e6 44 - -# Seed: -51 3a 5c 95 68 e8 9b 9a 53 d5 af 71 6e 55 fb 34 -0f 8a 39 23 70 e8 88 a8 0c ae da 50 2e 7f 9d fc -17 51 95 a5 0e 47 07 13 96 d6 ec 55 4e b7 2f 18 -3b e1 8f 3b f4 ec 73 b3 05 92 fa ef 2f b5 14 de -be fc c6 5c 8d 23 c4 ad 25 94 56 c1 e8 0b 36 0a -d4 59 - -# Encryption: -47 21 a2 39 40 18 87 30 f5 de ac 85 00 2e 38 31 -b1 49 ae 57 af c6 97 35 a0 45 ee 3f c3 53 64 72 -fc 83 3c 27 c8 7e ab 6f c9 05 e3 67 96 1b 31 24 -98 63 6b e6 c7 7a a8 0b 8d a2 f5 d9 48 aa a7 7b -5f ab 72 4b bf 64 ee 89 d2 81 ee d4 7b 21 2c 32 -95 26 65 77 f4 fd 93 a2 22 39 de e5 40 c9 40 0f -e5 6d 7a ef 51 df 36 a8 9a e9 2f 92 6f 55 83 31 -e4 1b fd fe fe 35 75 8b 93 ce 11 40 ac 9b 6a 54 - -# PKCS#1 v1.5 Encryption Example 6.19 -# ---------------------------------- - -# Message: -1d 82 de f8 c5 92 87 50 08 a5 f8 9e 7e b6 4e 25 -2e dd e9 dd b8 81 d3 73 62 31 7f 6e 6e 6e 99 3c -60 23 3b 0f - -# Seed: -87 5e 07 5e f1 b0 54 b5 84 1e 08 45 0d 78 eb 54 -a5 5c 88 b6 d0 18 13 c1 07 a0 9b 74 54 3b 3f 9f -e1 b7 c9 02 11 c6 2e a7 33 81 20 d4 ae 0f 73 ba -82 c0 1d 28 f8 19 4b 3a 39 6b df 50 f9 41 3a 7f -b0 3b e2 25 fe 05 45 db 80 cd f0 f6 10 a9 5f d9 -03 76 e0 39 e3 83 1f f9 9e - -# Encryption: -8f b5 46 26 3c 1d 18 75 c7 43 f5 2f 02 67 b2 f2 -fe 68 8d 25 42 02 10 49 f5 34 89 ce 7c 35 91 30 -f8 e1 1e 3c 46 1c 5e 86 3e 4d c1 9f 07 a1 3a 4c -1a 88 22 4b 26 c5 c0 cb e2 02 02 45 d9 1e 1b 83 -42 42 52 52 f5 3f c4 0e 4b 14 fa 02 bb d7 47 37 -d4 02 2c c5 4f e3 8f 0d 27 d8 fe a5 0f 2f dd 84 -65 d4 f3 2f 8a c0 3e e0 06 be 62 33 e4 d1 a3 c1 -6e b1 44 b5 d8 be 72 9a d3 04 f8 23 61 e0 7c fb - -# PKCS#1 v1.5 Encryption Example 6.20 -# ---------------------------------- - -# Message: -8a 8a 3e ab dc a7 ca b0 cc 29 6a 29 1e a8 a9 3d -a4 d2 d2 a1 96 ff 2f 8d 18 1f ee 1f - -# Seed: -2e 47 36 e4 29 6a b4 66 18 b1 ef 34 da 26 77 6e -92 ef 66 f7 cd 17 4e f9 47 69 72 42 23 a7 65 b4 -eb ef 08 a8 8f ed be 27 05 60 e5 f6 74 37 cf 49 -d5 7e a6 62 0a ca 59 89 8a fd 52 cd ef 30 a8 b0 -d9 85 5e 5d fb e3 47 de 77 c4 c0 28 0b 0f 1f d4 -4d 4f e6 89 06 be 8a 4f 12 c5 33 08 7b f5 bc ea -fb - -# Encryption: -03 f3 e4 ba 03 48 31 a0 e3 0a 4a 33 44 ce ad 61 -b2 8b 43 be 31 53 2c 2d 76 37 53 9b 90 13 83 7e -dc b1 f2 16 d3 2f df ae 73 32 36 74 a2 81 45 65 -db f2 9e 71 2d 18 c4 37 39 64 df 60 c9 39 9f da -54 14 a0 eb 45 bd e8 66 1a 89 09 12 95 a1 ef 71 -61 6a 3c d1 45 e9 b3 18 b6 51 af 17 5d 4e c3 50 -1d 5e b7 63 e8 d3 5a 2b 72 74 6e 02 0b 4b a5 99 -73 83 4b 21 50 02 6b 43 2b 17 9a 9a e8 17 2b 7b - -# ============================================= - -# Example 7: A 1025-bit RSA key pair -# --------------------------------------------------- - - -# Public key -# ---------- - -# Modulus: -01 70 93 41 d2 ec 08 04 a7 40 34 e8 fa 72 86 42 -98 3d 16 50 d7 46 e4 49 c9 ee 40 79 aa 15 e5 1f -1f c1 34 24 2e 52 4b 0d 3d 0d bf 5a 51 21 93 9b -12 5f cc 86 3e 51 41 60 b6 34 e3 7a a6 98 94 77 -6c 7d 33 e1 e7 c6 19 52 1d e4 82 a0 ae a4 5c 3c -6a bc 3f 33 e2 5d 86 ff a1 39 33 25 65 9b f2 d4 -09 8d f1 69 b4 07 21 87 66 0e 27 77 00 19 9b 7a -3e 34 84 b3 84 5f 6f bf 31 98 65 7d f8 cb f3 a8 -1b - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -01 70 93 41 d2 ec 08 04 a7 40 34 e8 fa 72 86 42 -98 3d 16 50 d7 46 e4 49 c9 ee 40 79 aa 15 e5 1f -1f c1 34 24 2e 52 4b 0d 3d 0d bf 5a 51 21 93 9b -12 5f cc 86 3e 51 41 60 b6 34 e3 7a a6 98 94 77 -6c 7d 33 e1 e7 c6 19 52 1d e4 82 a0 ae a4 5c 3c -6a bc 3f 33 e2 5d 86 ff a1 39 33 25 65 9b f2 d4 -09 8d f1 69 b4 07 21 87 66 0e 27 77 00 19 9b 7a -3e 34 84 b3 84 5f 6f bf 31 98 65 7d f8 cb f3 a8 -1b - -# Public exponent: -01 00 01 - -# Exponent: -6f eb f7 98 12 1e 99 33 24 97 2c 8c 28 cc c6 5a -2e 6a a1 5f cd e2 32 da 03 e4 46 4d b4 da 5f aa -27 e4 2a 7c 7a 76 d9 ed 49 48 6b 27 a9 d7 85 c6 -7d 9a c0 c5 19 ad 8d ad a6 bf d1 15 d7 cd 75 b9 -9c 4b 59 c7 69 83 a7 01 5b 0d a6 97 3c 69 fa 95 -08 10 ae 27 68 d9 75 88 90 05 62 e8 6a 6d f7 c7 -14 b8 44 b1 e0 46 68 6a 5a fc 66 7b 13 57 3a 55 -be 9b 5b 38 b9 9b d3 cf 54 e4 34 4a 2f 2d 0e 21 - -# Prime 1: -01 40 ef 5b 50 70 54 d5 a6 94 46 4e f4 7e 49 86 -8c b3 3c 97 e0 e3 ed d7 7b f4 5a 52 5e 60 8d 7e -21 5f 91 33 48 a9 b8 27 c8 39 73 7a 42 b6 ad fb -b2 bb 49 7e 14 78 92 2f 71 88 97 d9 fe ed 27 7a -6b - -# Prime 2: -01 26 00 4b be 2d f7 6b 6f 38 ae a1 64 b1 fd 0f -97 61 2b 2d b9 6c ed e2 8a 3a 91 ce 0d 74 25 3b -b3 f9 55 9b 89 f4 81 33 75 65 2a 50 70 06 ce 99 -95 a9 8f 0e 6e f3 bc 22 e5 51 9b 61 3b fb cd 55 -11 - -# Prime exponent 1: -98 14 d4 e0 b9 5a 7a 24 05 ff 8b 4a b0 cd 86 c5 -05 ea a0 ce 21 34 83 f8 69 42 a3 e5 b5 3b 57 99 -d8 ff a5 9d b9 4f 5b 0a b6 ae d2 30 eb 00 67 55 -bb 0a 88 84 8a de 3b 3d 41 cd 33 b0 6a 11 5b 21 - -# Prime exponent 2: -1c 4b 1c fe f1 67 85 34 4f ed 26 65 0d 68 00 2f -1e 4f cc 77 b2 ce f5 e5 3d 9b b8 8b bc e8 b4 65 -2e 92 99 84 5e 3e 6c d8 58 63 09 18 ae df 05 12 -cd 1d 92 53 05 2b ce e3 e8 c5 9e 46 ea 85 a9 31 - -# Coefficient: -fd c5 10 c4 d9 79 07 30 b0 fd 47 d3 13 ab d4 08 -58 c7 df d5 8f 4b 37 91 5f 7a 4b 1d b3 d7 d8 ab -d0 6d 3d a0 02 de 98 4a 76 09 cc 18 a9 44 86 46 -0a 61 74 6c 7e a6 31 17 a6 8a a2 82 59 74 4f 49 - -# PKCS#1 v1.5 encryption of 20 random messages with random seeds -# --------------------------------------------------------------------------- - -# PKCS#1 v1.5 Encryption Example 7.1 -# ---------------------------------- - -# Message: -da 50 9d ce 45 e2 47 00 37 9b fe 5a a1 a8 1c 24 -70 6c 18 42 d9 b1 3e 7a 2e 0a 15 d3 a4 af 8e 6d -08 61 2d ca a1 5d 46 0e ce 87 29 88 e3 e9 0f b2 -7e 5c a5 c1 0f a1 fa cd cb 0e - -# Seed: -80 8c 20 46 fb 50 5c 37 69 5c 8d c3 5c 38 f9 f9 -90 5a b4 8a 2b 8a 14 6e 8e 8e da 33 85 ce d9 5a -31 3b 2d c6 eb 41 83 67 fe ef f7 9a 02 ad 74 64 -6d f7 a5 d8 70 54 ac dd af 34 ea fd 5c 1d b5 8e -5d ec 04 81 - -# Encryption: -00 fc 3d 0a aa f2 6c df 25 a1 a8 df cb 71 70 0f -b6 5e 2a b5 55 1a e5 f4 19 b2 d2 f9 4c ef 01 73 -02 b0 0a bd 9e 6c 6e fa e9 44 74 d1 8e 68 da 0a -7c 17 ef 2c 5f cc 89 07 1d 3b 07 12 1b 9c 01 e3 -0f f0 53 66 3f 61 f8 9f db c4 9b dc f8 e6 71 66 -94 43 91 9d 41 34 28 45 e3 e9 9e 46 a8 a3 b4 8e -23 98 a8 8e 5b 45 d9 9a 17 dd 1f 21 2e da bc bc -d3 00 a8 4d 39 8e f5 79 35 bd ae 95 9e 60 54 e7 -3a - -# PKCS#1 v1.5 Encryption Example 7.2 -# ---------------------------------- - -# Message: -ce 0a 79 47 49 87 41 60 e5 d2 e4 ff - -# Seed: -f4 b2 c9 f3 11 c1 fd 41 d4 79 44 b5 0e 17 55 d4 -ea c5 ee 65 08 7c 9f c6 d2 f0 75 b7 38 c6 49 26 -ea f7 d4 31 6b cd b6 36 54 d5 42 0d a6 1e 02 45 -f1 95 b9 e8 24 aa 0b 06 c8 87 99 b1 27 fe 9b 03 -6d f3 61 75 c0 a6 bd 80 e4 e0 af 6e bc 2f 42 70 -b0 4c e3 0b 9f a2 7f 04 35 86 0f cc f4 0b 3d c7 -ea ef fd ba b9 e1 76 66 19 bb 01 6c 17 90 26 63 -cb 24 - -# Encryption: -01 0c f7 4b eb c2 63 6d 2c 49 d9 c6 22 bd 76 cc -0b 1d 02 eb b5 2f df ae c0 1c 4a c1 e7 56 07 1a -8e f7 6e 12 2a 4c 62 c6 ba 32 65 fa 4c 90 56 26 -d1 13 d5 9d b7 9a d6 5f 86 40 b3 c4 34 4d 73 40 -c1 6e 38 de b1 89 e3 a1 b1 1e aa b0 b2 60 6a 7f -82 f5 94 6d 41 9a ce bb bb 3a 93 7d 41 e2 9b 33 -ed d3 ad 15 f1 e7 77 0f cf c3 0a e0 6a a0 1b cd -03 d5 df b1 62 f8 7a 18 39 67 55 3c 25 02 cb 5f -fe - -# PKCS#1 v1.5 Encryption Example 7.3 -# ---------------------------------- - -# Message: -41 d6 - -# Seed: -55 6e 59 b2 c1 89 58 75 08 e2 08 92 fa 56 02 d2 -49 fb fb 71 a1 09 05 ed 5a f7 b7 9b e8 71 11 a0 -c6 9a dd b1 9e ef 31 6d 7c 0b 21 81 79 90 dc 3e -d8 c7 6c b2 3e 83 0e 17 c0 f4 38 73 15 9f ab 7c -5c 4a 6c f2 19 cb 1d c5 c5 da 45 53 a3 e0 bf 18 -3b 8e 11 2b 61 f6 92 a7 dd f0 04 bd bf dc c8 d6 -65 9c 3d d8 0c b2 3a ab e8 c6 fd f2 67 5d 07 3b -66 23 12 e4 ac cd e9 1c 12 25 e6 d1 - -# Encryption: -00 2a 10 04 95 59 66 55 30 4b dd f9 09 7f 78 d9 -dd b5 eb 42 9b 66 63 5a 58 a2 98 f1 92 8e ed 61 -53 4f 80 b4 ea 05 ee 39 b0 2a 64 56 6f 6c 45 6e -3b 58 6e 7c b4 3a 88 94 0e e1 29 34 0f 57 8e 56 -e7 2d 8b 27 83 36 10 06 d9 71 29 ab ef 02 cf 1c -19 12 e1 7f 0c d1 d7 1c 0b 32 8d 0b 48 a4 ac 7a -ec e3 c0 05 a6 19 0e ac 22 c1 99 10 41 15 9a 2a -d1 db 08 96 01 5c 4f f1 d7 b3 54 47 cf c1 0a 24 -be - -# PKCS#1 v1.5 Encryption Example 7.4 -# ---------------------------------- - -# Message: -0b b4 ab c7 dc 6c a4 23 5c 29 ed 0a 2c b6 3f d1 -41 34 1e 2c 4c 90 1e 6d c9 5d a9 f0 01 0f a2 e0 -22 cc fe 8a df db 6e cf 4d 89 f5 79 a1 0a 51 70 -be 18 c4 6a 24 1c a7 ee d1 07 ca fe 4a 9d - -# Seed: -bb 80 be 78 02 dd 8b f5 fb 5b 1b 86 39 66 54 f4 -73 9f 5d 43 51 f1 9c e3 1b 72 c2 10 ae a1 a2 ed -21 42 d8 d6 f7 ae 37 4f 06 13 3a 31 5c 62 64 da -65 ce f2 33 ed 3d cc 81 59 d7 6c 3a 17 f3 6d 0c - -# Encryption: -00 6f 1b 6c 1f b3 7a e5 c8 c0 24 44 9a bc 38 40 -e8 e5 09 71 43 ee d1 6b ea f6 7b 6c 7a 48 24 ac -38 b6 f8 c3 53 b6 45 c8 ce a4 fa b0 9c 02 fa 6c -32 5a 50 74 38 b9 64 5e c8 23 00 86 b3 15 e3 4e -7a 56 ad b0 ec d8 9f d0 7b 98 73 9c 24 db 6f e1 -1f f2 e5 ad 38 31 8e c3 1d f2 ed 25 08 de bc a7 -a6 7e 24 01 96 aa 9a cd 80 32 9f 4c 43 43 c1 0b -72 69 9f 9d 6b 5b c2 43 99 5b 09 c4 6d d3 d8 03 -ce - -# PKCS#1 v1.5 Encryption Example 7.5 -# ---------------------------------- - -# Message: -ed 26 ec 20 2d 5e 69 74 0d a3 48 84 06 bb bd - -# Seed: -f2 fd 08 cc 0d b9 a5 5a bf eb d9 2e 2a 9d 75 87 -2a b7 df fb 0b 4d a1 36 06 e1 52 75 9f 86 6f 22 -eb 87 29 fb 8c 9a 5c 45 ba 2f 4a ca e4 31 59 a7 -ad 3c f7 8e 81 fd 09 54 90 9b 1f 0e 70 89 ca 86 -a4 58 8d 8c 87 a1 a6 1f 1a 48 39 82 36 de f9 b4 -97 5e 25 49 57 3f 60 ad b5 e8 61 b7 c3 b2 df eb -81 0d 13 e2 97 a6 cd 3f 2a fe cb 0e 4f 14 7c - -# Encryption: -00 93 3c 58 a5 0c 70 15 0d a0 82 3a 7c 1e 36 7d -36 e5 21 3f 66 a3 00 50 fd ed 72 d5 75 5b 5f 9c -24 05 0b 41 14 f5 35 09 98 8b 62 54 20 cf d0 0a -c1 c8 cd 84 48 9c a2 6b 74 3f b4 7d 1b 64 d0 a8 -80 8e e3 21 27 c7 71 22 4a 0d d5 a5 64 e6 36 ad -d7 3b cf f7 b4 73 e9 a1 2b 7d 46 4d 7d d4 a7 52 -04 86 61 a8 b0 74 b9 fa 15 06 fe f6 03 dd 96 d1 -19 96 a7 d9 e7 48 79 f9 9b b2 d9 1c 37 aa b1 35 -72 - -# PKCS#1 v1.5 Encryption Example 7.6 -# ---------------------------------- - -# Message: -dc 28 5a 26 39 59 39 e7 99 72 04 c7 1a 93 2f 79 -5b 4d e4 01 e9 6f 34 e1 89 36 32 37 e9 cf da dc -61 - -# Seed: -d8 0b fc c2 91 ce 51 8c e0 bb 6a e9 34 df d8 56 -58 b2 39 fb 45 39 cb e0 5d a1 26 a8 98 b7 f3 64 -88 7c 0d df b1 ea ea 1d 5a 90 de 76 95 66 5c 55 -82 2a 11 72 cb 5b e8 a1 12 d2 8c 86 02 c5 13 be -48 c2 92 f0 59 72 e6 71 1a 44 cb c7 28 17 15 09 -4b 49 0f de 29 16 5a 6b 6b 7d 99 db ed - -# Encryption: -01 57 e7 b5 4a 34 1b 8d f8 bd 9b 99 fc 2e 6c 58 -d8 86 fc 79 e7 44 2a 9e 76 d0 d6 7e 48 58 c4 ab -f0 ed 25 c3 3d f6 2e 2a ad a3 99 df ea dc 7f f6 -89 28 e6 b9 00 71 02 dd f8 09 f5 90 8e ef c1 0f -2a 73 71 06 09 23 1f 5d 45 e0 0a dd a1 34 b6 02 -dd 0e ee 0f 67 22 49 4b 7e 4f 7b 40 57 72 c8 31 -b6 37 29 be 0f 1c 4b 6d 2a 54 2c 15 65 c7 df 23 -1d 9e 89 2e 58 6a 18 ec 54 37 73 76 db 77 f8 13 -84 - -# PKCS#1 v1.5 Encryption Example 7.7 -# ---------------------------------- - -# Message: -46 47 d8 41 c5 a0 b9 97 3a 91 45 4d d1 a0 5e c0 -e5 75 03 ed 99 67 2a c0 02 df ee 77 7f 7f a5 06 -fb 41 b2 ec 8b 8d 2c db 9b ef 01 33 bd 5e 3a 7d -0c 43 44 b2 8f a8 db - -# Seed: -f5 27 a1 4e 2e 06 e7 3f 1c 24 5d 19 0d 02 cc ed -01 1e 46 84 87 ac fa 5e 0b ce 39 78 6b 46 a9 a8 -c7 51 a8 b4 40 6c cf a1 fc 5b 7a b9 ba da 7b 4a -d4 52 46 7e 50 b7 fc 41 31 8e dc 73 dc 2d 84 a2 -8a 08 1f a1 79 05 bc - -# Encryption: -00 4e 03 ca a9 48 1d 7f 96 78 20 7c 17 b6 82 2a -5f 69 17 ed 01 eb 40 2e 7f 23 01 35 a1 23 cd 9b -6d e3 be c3 b9 bf 33 8a de f8 07 6f b7 65 2f c7 -e3 a3 73 fc 16 22 f1 dc 67 9d 41 5c 32 00 02 6d -8a 8a 50 f8 db 6a 58 3f 66 69 29 d0 31 8e bf 91 -d9 59 12 fc 06 10 2d 9b e8 75 25 a7 36 b5 af 21 -e1 6d e3 ef aa 66 e9 cf 41 ca 73 48 23 23 dd e8 -0e ec 30 85 81 a4 4c a3 aa bf 76 dd 48 1d e6 52 -9a - -# PKCS#1 v1.5 Encryption Example 7.8 -# ---------------------------------- - -# Message: -ba 10 d4 7a 9f 62 42 81 - -# Seed: -37 9f dc fa 5d 8c 61 37 c3 6b ad 14 3f d9 b1 f7 -e8 94 fa 0e 9a c0 fb 9c ec 60 e8 6c 82 53 97 5d -8e 78 74 21 08 49 5e 59 4a d0 89 8f d0 4c 91 e4 -01 e7 c8 80 89 a8 7b 4a 4a 82 e8 34 cd 37 77 a7 -d3 f8 0e 64 86 81 2d 4a b0 d3 37 23 16 2b cb c7 -e0 81 a9 9d 3f 9b 5c 3b a4 4b 19 bd f8 84 a4 62 -6f d7 de f7 67 40 57 be a0 82 e0 0d b4 b7 61 ad -75 3a b5 98 5a 94 - -# Encryption: -00 c4 96 5e 29 63 d7 bc 5b 10 44 d8 fc 75 eb 33 -82 ce dd 99 07 41 97 92 ef c8 8c 92 b1 d5 c3 90 -fa b1 90 01 1c 51 8a c9 ce 45 c1 b8 e7 27 6b ff -c7 c7 e0 5c 25 37 08 91 37 a9 8d f6 e0 c6 92 02 -0e d6 54 af 83 33 9b ab 11 92 71 77 f2 f5 23 22 -6b 4f e6 4b 99 c1 72 9f 6c 92 29 06 bc 16 d3 1f -0c 94 dc 2e a4 13 81 0d 55 94 0c 97 af dd 48 29 -fb f1 61 8a 8c 9d e8 9d c2 40 06 e7 e4 21 a5 8d -38 - -# PKCS#1 v1.5 Encryption Example 7.9 -# ---------------------------------- - -# Message: -ef c7 48 9f ec 77 9e 05 2e 37 9c 1a d9 04 59 03 -b6 84 2a 9c a4 1b 48 bd dc e5 80 80 a5 ed ec 63 -f3 6e e1 15 60 fd - -# Seed: -c8 ec ba 62 72 14 c4 14 d7 c3 fd d3 16 c2 d8 2a -98 53 57 28 b9 a9 37 6f 69 a9 53 d7 cd 1c ea d7 -10 53 db e0 14 0c 7f 02 bd 71 e0 13 7f ea 29 cd -4c 21 a5 8b de c6 66 40 99 0d 28 c1 0b 70 17 59 -3c 1d 11 fe 9a be bd 71 24 e1 d9 85 63 1e 94 e9 -e5 12 41 26 0f 9e f1 f1 - -# Encryption: -00 32 18 4e f2 88 fa 0a aa 0c 2c 1a 19 e7 c2 9f -81 c7 01 2f 45 29 eb 9e eb 53 68 1f 62 47 f8 d4 -35 69 13 45 a5 14 8a 2c 87 7b 2b 18 92 6b ae 9d -e5 b3 17 ba c0 e9 02 c9 60 25 ee c2 f9 ea bd 0f -9e 88 86 ef 95 19 c8 24 9f eb 83 46 65 c1 01 0d -b7 62 4f 48 7e 16 1f 89 f6 ae 00 18 c1 f4 e0 ab -54 72 f7 f0 99 35 61 cd 59 85 f3 83 d0 49 dd 83 -2b 82 c8 37 48 b2 28 1b fb 99 d9 d5 00 8d c8 07 -de - -# PKCS#1 v1.5 Encryption Example 7.10 -# ---------------------------------- - -# Message: -5b 26 4f f8 8d ef d3 c2 99 99 3d 81 12 9a 6e 5d -d2 b5 7b - -# Seed: -0b e7 ab 5b 29 70 48 43 c1 c0 d7 e4 ef 5e 93 f3 -ba 71 7d b7 81 5a f5 72 e3 a9 ab 3f 99 b1 ac 9a -22 b9 2d 9b 43 da 2b 99 65 c7 97 70 57 17 3c 03 -57 3f 32 48 0a 92 70 19 af ff 0e 0e 34 e4 09 5e -4a 4d 39 2d cd 1b d9 f2 7d 32 fd e7 15 9f 02 3c -83 08 9e 88 a7 1f 24 33 64 8e f8 c8 40 45 b9 c3 -6d 8e 5f 6e ff 03 4b 91 b7 02 34 - -# Encryption: -00 4c 65 29 35 56 f2 fd 15 ab 90 eb 22 e0 75 33 -b3 dc 17 33 4f 5e ed 27 a3 99 31 80 c5 6c 8e 3d -8f 51 ee b2 75 95 f8 78 d2 36 65 ba 3a b0 e7 28 -a5 ae f7 23 4f 60 36 b0 23 f8 71 c2 d6 55 2a 18 -ad 5a 25 be c5 5b c7 6b ee 63 83 46 12 81 d3 9a -30 f6 d6 60 92 e0 cf f6 92 32 68 fc 04 3c df 74 -7e 8d 54 89 50 4e 7d b3 0a 7b d9 1a 2b fc 6c 1b -34 14 40 57 01 75 3d 5b 85 ff 73 52 01 2d 55 e9 -23 - -# PKCS#1 v1.5 Encryption Example 7.11 -# ---------------------------------- - -# Message: -72 e2 09 00 e5 bc c2 3c f8 79 ed 35 31 88 9a 1e -d5 aa 3d 5c 79 2e 34 e3 b1 26 90 d9 ac 24 03 d0 -f6 f7 8f 59 23 - -# Seed: -11 62 75 e9 be 1b d4 e6 f2 03 ff e4 f0 ab 9a 32 -73 84 10 e9 23 e8 39 71 ee 9a 6b 99 2c 65 0a 03 -1f 94 0f 6e f3 3d 61 50 df f8 b3 9d cf 22 50 d5 -66 5c 04 27 3b 2b e2 de c9 97 12 bb c0 12 f7 5a -31 b3 0b a0 6f f9 eb e3 b8 9f 58 a6 8f 26 85 e3 -38 ff 6c b8 d4 18 1a 8a 14 - -# Encryption: -00 21 4a 83 be 45 3a 75 bc da 94 33 a7 b9 51 43 -34 39 98 30 72 07 1c c8 21 12 b7 77 42 be 0c 38 -22 6c a3 c6 f3 8d 55 b9 ca 3f 08 c8 79 37 89 79 -6e 6c de 67 37 6d 67 3f 5e c5 7d ac c3 74 c4 c3 -17 34 44 dd 8a 63 76 de 8f 9d dc 31 a4 c0 60 d7 -72 f0 2e b7 49 51 2d cd 04 02 31 17 5d 0b 69 42 -a9 47 b2 c8 2f 7c 19 e2 ce 87 50 00 af 84 27 4c -be 2a db f2 fb fb 53 7c cb e2 fb d0 72 87 13 78 -75 - -# PKCS#1 v1.5 Encryption Example 7.12 -# ---------------------------------- - -# Message: -16 b1 10 e2 90 9b 11 b0 cf 36 b0 52 c6 f3 93 6a -2c a1 3f c3 a5 - -# Seed: -c2 bf 9e 4f b1 ed 70 ca 21 2d 15 ee 8e b3 cd 66 -0e b6 5c 52 78 e0 3a 3b 10 eb 12 b2 53 34 a4 72 -8b 94 99 20 12 2f b9 92 bf 2c e4 30 10 3d 74 ab -74 e6 d6 e7 62 b8 5d 6e f9 be b7 d7 25 98 f2 93 -a4 35 62 e9 06 89 54 11 11 51 1d 31 4a 9c 46 02 -23 76 ad 05 5d 54 ce d6 ac 1f 36 e9 8c 2b 25 a0 -ac de 64 dc f6 52 2c 3d 22 - -# Encryption: -01 6a a9 5a 08 23 82 c1 0c 04 53 10 fe fe cc 8d -17 db f2 16 d8 ed c0 4b da cd 4f 52 4d e4 85 b7 -fe 8a 26 f1 4c ab d2 97 e7 f0 3b 3c 85 08 6a 16 -14 7d 5f 61 93 91 9b b9 5a 53 c1 46 c7 84 c0 0b -53 32 e0 18 f6 43 cf 95 87 24 cd 08 07 5e b6 4c -a5 68 0c 27 c7 05 d4 0d 88 b9 d7 f4 26 b7 36 e3 -c5 f6 39 4e a6 83 b6 5c 23 73 a6 fc eb 14 f2 ea -85 1c a8 e0 00 e2 4d c8 f7 e7 c8 1b 1d 4e 72 0c -36 - -# PKCS#1 v1.5 Encryption Example 7.13 -# ---------------------------------- - -# Message: -3c 86 0a 28 fa e8 da 2a c0 d9 a3 39 89 97 7f fa -04 - -# Seed: -7c 96 99 90 6c 9f 16 65 12 5c 0b 10 67 3f 3d ad -98 c9 1a 4f f0 fa aa 64 7d b5 54 fd 62 27 ef 50 -90 9c 97 b7 06 09 2b e2 10 db 2c 24 ba 9e 8e 6a -87 f9 dd d9 f3 f4 91 29 10 29 ac 6e e4 6e 08 d0 -d7 a5 3c 46 2d b4 f0 fd 1c c2 3e c8 f5 5e da 07 -f4 ca 0d 3e 3c d3 76 22 85 5b 4d b0 8f 64 be 3e -26 c3 e9 78 75 17 12 94 ea df 86 fc d6 - -# Encryption: -01 0c 1e 04 a8 58 c6 15 ee 96 95 f6 4a b2 db 99 -80 6d a4 82 d2 b4 60 29 3c 46 dc 7b 71 7a 59 76 -a3 c7 e3 6d 8d 47 a8 4a 34 d6 3c df ca 2c 1e 38 -45 25 73 ed 44 c3 a0 40 40 5e cf 3f bf 36 83 41 -c4 a1 fc 90 83 a8 f5 52 93 67 b9 9c b8 9f c5 a0 -8b 8f 34 75 a0 d5 5e 3e 42 cc cb eb 20 d0 4a 19 -97 ee da 4e 3c c9 e9 92 d2 37 ec 7d 32 fe 25 84 -5a b0 24 d5 88 28 05 ed 52 f1 0e d7 d2 5d 62 d0 -af - -# PKCS#1 v1.5 Encryption Example 7.14 -# ---------------------------------- - -# Message: -4e df 4a d3 44 0f 17 b1 0d 26 af cd f4 e4 44 d2 -aa 61 a1 97 55 a6 21 07 98 3f 01 22 fb 2a - -# Seed: -e0 20 09 39 39 b4 18 9e 93 4c b6 2d 27 ca 5e 97 -19 65 2c 13 7f c4 9e 72 1c 4a b9 e9 f3 98 b0 a6 -12 de 8a 8a 89 99 af 0d bc 1c ea 0b 61 63 da 42 -61 23 28 14 ed 92 eb 21 60 cf 4b 26 d0 55 1b 1b -dd 91 9d 49 47 93 78 6e 1b 86 f7 9d 64 16 61 2a -28 22 61 36 3d 6c 9b 7a 0d 92 ad 17 58 ea ad 51 - -# Encryption: -00 8c f9 b3 f3 e7 60 90 d1 01 17 4e cd 97 d1 0b -ff 6d e4 d4 64 40 00 3f c0 d4 28 f1 9b 85 58 f3 -13 74 a5 fa 28 3d 03 d4 dd 43 f9 3a 4d 9f 14 ca -00 68 dc 2c f3 e2 54 37 b0 5a b1 d4 06 21 ee bd -84 16 f5 82 8a e7 c6 cf d2 97 b4 51 8f 79 94 2b -91 43 23 28 4e 29 76 a5 4d 3c d9 11 63 3a 30 7e -da f1 ed b6 74 98 46 6b 3e 98 91 6f 99 04 f4 a0 -ea 9b 87 a9 83 44 f0 73 83 3e df 9b 2b 53 94 cf -d7 - -# PKCS#1 v1.5 Encryption Example 7.15 -# ---------------------------------- - -# Message: -8a 6d 53 b0 ad a1 85 4e 23 13 69 1a ab 23 06 3d -e1 31 bc 36 c7 64 - -# Seed: -26 85 45 8a eb fb d6 07 4e be b0 fc 0c c4 92 1c -27 3e 8c 0a 88 15 51 50 2e 4c 29 9f 33 4d d5 67 -f5 16 75 b0 ff 30 f2 c4 82 63 20 03 64 99 66 99 -f9 b1 72 af fe c0 e7 9e 5c 52 3d 1e 77 9e c0 6d -ec d4 76 a5 74 30 78 1e 2d c8 1f 25 d6 0d 3a 73 -97 65 79 a2 f0 1f 07 58 4c f8 e5 fb 3e bd 8d 5a -93 2d 57 aa 8a 18 0a aa - -# Encryption: -01 3a 3d 32 ee c7 35 eb da 13 f8 be 76 02 a0 47 -5c f3 cf 28 5b 42 86 ad 93 d6 12 c3 ad 91 72 48 -80 9d 1c 4c 18 0b 36 70 15 cc 66 c4 d8 e7 86 73 -84 16 8c f4 cb 71 9b d5 93 35 53 55 cd d7 d7 53 -0c 80 c8 67 74 5f 96 61 c6 c3 3b cb 97 f2 cf 75 -a4 c2 7c 3c bb db be 7e af 4f 82 34 f2 12 e3 05 -82 56 d4 43 9a 9f 97 81 df 48 ef db 02 35 68 f9 -4a e4 59 46 54 a0 f9 ba f6 ea 30 b7 d8 d9 48 0a -d3 - -# PKCS#1 v1.5 Encryption Example 7.16 -# ---------------------------------- - -# Message: -20 f0 20 44 e6 3a c9 2e b9 fa f1 a0 ce 35 ba 72 -09 - -# Seed: -2d e1 fc c1 17 f8 21 f1 de a7 94 b5 ee b3 13 f4 -29 e0 0b 97 6b 53 41 9d 3d 03 ec aa 1b 50 76 88 -77 e8 b7 fb d6 c3 63 04 7e 15 c2 55 79 3b 3c be -0f 58 84 f0 a5 11 25 4d 31 bf b2 37 41 02 3c 1f -88 1f e0 16 a1 2e ef 1b 8a f2 2b 93 68 20 7e 7b -16 39 f7 27 1d eb e3 c8 df 52 93 ee c3 a0 32 f1 -ce 55 9c 0a 04 77 1b bf 88 98 94 7c a4 - -# Encryption: -01 70 06 e8 6f 6c 58 58 fe 5a de 0d cb fa 9c cd -11 c0 2d 4e 7d 0d e6 c1 58 ad f9 ee f1 01 07 e7 -a4 c3 6b d3 d9 29 ea 6a 47 6e cf a0 b6 ec d0 51 -49 b5 12 15 95 48 93 a1 ab 26 69 c0 42 da 83 e8 -c8 18 b0 0a e7 34 de 5f 9e 0b 97 ba 1f e3 e9 c4 -6a e9 81 6b 63 b1 5c 2d cc 61 cb 3b 8b 2c 23 dd -b9 9f cd 54 e9 55 60 91 8b 9a 0f a3 c4 b6 27 3d -1b 28 a2 13 e1 20 b4 f2 42 86 96 5e be e9 4f f8 -96 - -# PKCS#1 v1.5 Encryption Example 7.17 -# ---------------------------------- - -# Message: -d3 88 3b - -# Seed: -5c a3 bb f9 92 d7 ae 35 94 c6 05 c3 9c 3e 97 90 -25 cc b0 a3 5c 6e f0 fa 57 4a 98 be 05 ef 7c 32 -8a 19 a2 77 5b a0 6f 2d d1 e0 ff 6f 0f 1f 6a 3b -20 fb da 21 62 d0 92 4f f5 5b 70 eb fe 2b 16 d4 -ff 6a ef 8d 47 eb e5 96 38 e5 81 0f fd b5 8d b0 -5f 4d 9b 4a 3a 42 3f 96 7f e5 79 f8 73 78 36 9d -5c 5c 07 e5 e3 cb 5d dd f3 89 62 11 80 27 0a 21 -e0 10 78 c8 9a fb ab 18 9e 87 f7 - -# Encryption: -01 6f 55 05 f7 4f f1 10 4d a1 f8 a5 2e 50 bf e2 -9c 99 87 10 c5 7d e4 40 98 a9 57 9e 7a 33 13 b6 -29 60 31 02 f0 8d 2d 91 1f 91 7a 9c 96 62 60 8c -97 a1 ea 37 17 34 f6 7c bf 70 03 d9 3c 4c 31 4c -3a 0e 77 f3 65 8f a4 d0 72 25 62 c4 e1 3e 85 a7 -c8 d0 d9 d4 fb f7 12 58 84 ba 62 ad 28 59 b4 d9 -61 36 f7 a2 45 54 69 ce b6 0b 63 ba 84 74 e6 16 -0c 83 17 92 1a 07 b4 b6 43 6f 37 6c 5f 98 25 7b -17 - -# PKCS#1 v1.5 Encryption Example 7.18 -# ---------------------------------- - -# Message: -06 a2 ae 82 a4 85 32 07 c9 f9 75 - -# Seed: -e2 c3 36 33 d5 47 54 ad dd 24 c8 5c 32 d2 8a d8 -70 f1 60 3d 44 44 60 a0 3a ac ad 7d cb 80 96 01 -56 bb b2 59 ca d3 46 be 90 c0 d4 f3 fb 18 ac 6e -9d 5a 9a e2 a5 ab 98 a1 f8 4b 8e 70 c7 1d 0c cc -0a 1a 2a a3 99 70 d9 c8 3b 4b 0c 25 ae a4 3a 5a -5d ea df 9d c6 11 b9 6d 11 33 4e f9 43 09 03 89 -a8 d3 c6 6c f3 18 77 aa 2c df f1 11 99 43 27 8a -dd ff 5e - -# Encryption: -01 22 41 0e 76 5b 2c 9e 90 bd ac bc ff 1b ca 8a -e6 4b e9 9c f0 13 29 74 85 72 17 68 37 0c 36 f8 -c0 d9 db 8d 79 37 62 54 b9 c6 91 52 72 0e 05 ca -ef d4 ce 7e ae 08 b3 df e3 ea a9 1c 46 02 ef f3 -8e 4d 81 bc d3 78 7a 14 d6 22 db b7 9c e8 64 4c -4f d1 d2 e4 1f 7c 1c 97 27 96 11 74 0f c5 00 00 -31 78 b3 7b bd 81 c5 a5 82 9b 5c 14 bf 45 9c 42 -38 b0 3b ee f7 3e 49 8f 86 5f 6c a7 9a 9e d6 0f -65 - -# PKCS#1 v1.5 Encryption Example 7.19 -# ---------------------------------- - -# Message: -ad 8b 11 a9 27 de - -# Seed: -5e ca cf f6 3a 79 38 e9 98 06 8a 2f 4b a6 bc c1 -02 0e 1f 28 c7 34 e4 34 e8 86 3c 48 e6 df fa e2 -8d 18 52 72 7f fa 7f 2e fa 3d e7 01 3b 81 2a 02 -b2 17 1a 0f 94 0b 36 d9 28 db db 96 0a 6b 22 03 -0c 89 37 89 cb fd ea 97 35 e9 ad 10 94 a6 84 61 -c2 eb 6f 71 8b e4 74 d9 3a 51 93 0e 3c da 02 c2 -1f 63 63 91 4e 7e da 54 84 03 7a 76 ad c5 33 12 -eb 9d bb e4 5e 23 a1 4b - -# Encryption: -01 1f a4 3f 5f 4f bb 98 30 11 81 4d 4a f5 45 52 -1d f0 b5 9e 9b 6f fd 71 33 3b 8f 9b ba aa 0f cd -c1 42 1c e4 bf 31 bf 99 59 fd c6 b0 9b 4f 42 51 -dd ee e8 21 0f c3 a5 2f e7 c7 1a 87 6e 6d de 1d -fb 59 a4 da b2 7d 34 fd ce 5b bf c6 ed 62 3e 89 -96 7f b6 fe 73 16 20 15 28 2c 5f 45 01 38 f2 50 -4a b6 1c 1f 12 d2 64 9d 81 5d 6e 81 38 43 8f 8a -80 46 c4 e8 40 cb 71 85 98 e1 e4 a9 fc 25 a9 45 -64 - -# PKCS#1 v1.5 Encryption Example 7.20 -# ---------------------------------- - -# Message: -be e2 94 36 c2 a0 de 16 f6 60 42 91 70 07 fb 51 -30 f3 c1 aa 7d f2 c7 c3 bd 99 fb c1 b4 13 af 4f -96 a6 5b 0e 54 3e c6 a5 0b e8 3a 9f - -# Seed: -23 91 a6 84 25 dd 8f 0b 83 c9 b3 61 24 67 a7 79 -cf 92 f5 ff 96 11 c0 14 93 bc be f8 65 e1 5b ba -5e 8f cf 74 be b9 ea 25 73 a9 fc e5 41 64 d0 6b -aa 8b 6d f3 67 cc 4c 6a 11 4a a0 34 6c 45 4a 2a -9e 60 53 59 18 d3 66 0c 66 48 4e d9 53 72 7a 9c -9a 25 - -# Encryption: -00 98 9d db d2 8d 60 95 ad a6 88 1e 28 34 1c e7 -a0 a1 ca 6b f7 f3 1f 77 2f 91 04 93 af db a2 d6 -35 9d 50 b9 83 3f 83 d0 ab 87 13 ab e8 e2 10 2a -27 ab 2a 60 1f b7 7b 9a 25 d6 a0 af f4 0c fd cf -9e 12 c4 28 43 eb ad 32 83 24 a7 19 f2 9e 8d 79 -ea 9e 5d 0d 98 86 95 73 60 34 db 5f ea 73 dd 36 -00 13 6f 57 a3 98 fe 35 2b 27 8c 60 cb 74 ec 98 -ad 57 a3 e1 d8 c4 47 8c a6 17 9f 4d 04 26 f0 f4 -20 - -# ============================================= - -# Example 8: A 1026-bit RSA key pair -# --------------------------------------------------- - - -# Public key -# ---------- - -# Modulus: -02 52 e9 5b b1 1b a1 e1 c7 c9 5b 68 53 f8 de 0b -fe 2b 64 03 ac 1b de 81 9d 91 89 07 74 7b 01 99 -fa db 80 59 c2 5a af 1a c5 65 a7 49 29 d0 15 a2 -01 f8 97 a9 ba fe 75 41 68 95 5b 35 5b b0 09 ce -16 14 93 12 28 3c 39 ce e2 20 d0 f0 85 8b 13 81 -2e 86 a7 d4 e5 38 8b 7e ae 5a ca 7c 88 6a 76 d3 -b1 e6 dd 67 92 68 a8 23 11 e2 82 03 18 cb 8f 0f -7e 85 f0 e6 69 2e b0 de df 30 88 1c af 73 15 d2 -7d - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -02 52 e9 5b b1 1b a1 e1 c7 c9 5b 68 53 f8 de 0b -fe 2b 64 03 ac 1b de 81 9d 91 89 07 74 7b 01 99 -fa db 80 59 c2 5a af 1a c5 65 a7 49 29 d0 15 a2 -01 f8 97 a9 ba fe 75 41 68 95 5b 35 5b b0 09 ce -16 14 93 12 28 3c 39 ce e2 20 d0 f0 85 8b 13 81 -2e 86 a7 d4 e5 38 8b 7e ae 5a ca 7c 88 6a 76 d3 -b1 e6 dd 67 92 68 a8 23 11 e2 82 03 18 cb 8f 0f -7e 85 f0 e6 69 2e b0 de df 30 88 1c af 73 15 d2 -7d - -# Public exponent: -01 00 01 - -# Exponent: -01 04 c8 5f d5 d8 d7 93 2a 29 85 c4 cb 7e 9e 13 -a2 c4 f1 90 3c 8b 70 f3 df 97 12 fa ee 20 17 b9 -20 82 c5 16 53 c0 bd de 9d e6 6c 39 01 b7 c2 2b -e4 f2 4c c5 6d ff aa 75 d4 3b 18 a2 e0 c0 df e3 -72 6b 19 8c aa 0c 96 65 26 3a 93 79 6a 27 d3 29 -84 46 5f 4b 4a ff ca 0d 92 f4 e5 1a 37 e4 1a b1 -55 07 66 d5 ca 7e 90 d4 de 90 9b bd 79 4e 8b c5 -2b 74 99 a7 3e 46 8a b4 42 13 cb 3a 3b 54 52 d2 -ff - -# Prime 1: -01 93 3f 8f 85 82 b8 ff f3 e6 bd 30 42 81 97 f0 -ac ec 63 e6 91 f7 9b 91 fb d4 d4 c4 94 2b 8a e9 -13 a4 01 f0 e1 7b a7 66 d0 a8 ee ec 4c b0 e3 da -17 b6 d9 1f 1a 74 24 88 09 20 1e 37 30 15 18 61 -8f - -# Prime 2: -01 79 ad 28 3c ac 68 af 21 6a 06 86 f4 38 b1 e0 -e5 c3 6b 95 5f 74 e1 07 f3 9c 0d dd cc 99 0a d5 -73 dc 48 a9 73 23 5b 6d 82 54 36 18 f2 e9 55 10 -5d 8c 4a 5f 49 14 be e2 5d e3 c6 93 41 de 07 ed -33 - -# Prime exponent 1: -01 6e f5 3d 6f 3a d9 8d 9a 6f d4 a4 71 31 2b 8a -8a 62 88 3a cf 84 6b 5e fa b3 e0 77 8f 7a dc 6b -64 43 30 bc fb 04 a2 ff 0e 4d 5d 37 4e 46 fe e2 -7e 08 18 27 94 d4 32 56 55 2f 94 2f 96 a2 eb d0 -03 - -# Prime exponent 2: -e6 c6 e6 25 5c fc 82 b7 1a 40 6e ca 60 b2 60 c8 -45 07 42 39 18 04 41 85 9c 3f e4 de 16 4e 46 6c -0b 98 e2 e2 16 22 d1 e1 a7 6f 7f 03 3f 8c d8 f9 -30 b6 69 4f 10 bc 2b 3a 4f ea 91 24 d8 75 63 7d - -# Coefficient: -35 42 45 2e 83 2c 16 ac f9 c3 f4 13 49 23 5e dd -d2 75 c7 05 3c 55 3b f8 9e 1a 84 57 12 48 33 3a -ad 52 0e 3a 34 46 c4 c5 e3 fd d9 ba ec d9 29 48 -0e b5 b8 fb ef 8e 03 ad e9 e3 9a 28 fd 8e 75 6c - -# PKCS#1 v1.5 encryption of 20 random messages with random seeds -# --------------------------------------------------------------------------- - -# PKCS#1 v1.5 Encryption Example 8.1 -# ---------------------------------- - -# Message: -f7 26 37 ae c2 8d 2b 6e bf 8f 73 d7 48 75 df 01 -cd 12 24 8f 00 20 60 8e 61 c7 3d 1a 01 f9 72 f7 -4d ee - -# Seed: -cc 20 77 a2 40 01 f3 e3 86 96 94 e4 fe 27 72 bf -93 8f 76 27 66 7b 62 d5 90 f9 ee 4f cf ff bb b4 -7a fd 5f ed 6a 18 08 44 a9 12 1a 32 ed 7c bc 56 -cd 28 70 a2 d6 96 b9 43 d6 fd e9 76 7c 1b 96 48 -61 6c 32 ed 6c 40 0d 42 3d d4 ab 72 16 af ad a0 -28 40 2e b2 a1 c3 eb cc 24 5a fc 7f - -# Encryption: -00 72 57 5d 3b 11 c5 ff d6 ae 24 f3 53 ff 74 99 -27 b4 ae 5d f4 63 f7 0c 5f 3e f5 49 6b 0d 14 5e -b2 b8 a5 3c 28 d5 3e fe 8b f9 f2 7b 2e f4 ce ea -48 31 05 77 c3 d2 b4 b9 49 a1 2e 3d f3 f5 67 76 -82 88 18 45 2d 81 bd 45 af 15 8c 87 bb 57 74 5b -8a 10 fc 1a 92 a0 ea 55 c8 51 39 f8 42 f7 3f 1d -61 3b 9a 96 4a f8 ed 72 0d 0e 08 47 f7 ae 5b 30 -5c 05 f1 2c bc 4c 9c 16 84 ac f9 02 97 0d 82 09 -49 - -# PKCS#1 v1.5 Encryption Example 8.2 -# ---------------------------------- - -# Message: -2a 8e 3e e7 ea c6 b2 2e c6 58 ad 44 d6 66 c8 cd -3f 57 ec ea 29 9b 5c b7 bf 9a 37 3d fa 66 97 2f -13 e5 f3 a3 00 e8 0e 6d bf 74 15 68 0d 0d 24 90 -1a d6 b1 40 b0 00 aa b8 53 51 f9 2f - -# Seed: -fb 19 20 9d 8a 29 af af bc 05 3a c1 f3 20 ba 60 -fc 1f e1 04 aa 78 39 c8 4c 9b 3e aa 18 a8 f9 43 -bb 21 9f 59 cc 16 7a 38 4b ac 7b d3 65 82 4e 10 -36 31 b9 7b b9 a6 d1 18 f4 f0 a9 51 fa 47 8a 05 -ea 09 - -# Encryption: -02 1b 54 64 65 71 a9 a9 3f 0b 0a 03 82 e5 40 a8 -c3 97 4c b3 1c 87 eb f1 7b 3b a6 2a 1c 95 21 c5 -0d 7f 90 70 2e 13 ae 0e 22 26 38 34 e7 64 60 35 -15 94 45 a0 87 7d 9a 4f 5b 16 17 7f 7f e0 52 bb -d0 23 d0 81 89 4f 2d 97 ca c2 45 20 76 ca 11 91 -a1 71 a4 8f a1 cb bb c3 f0 f6 f3 bc 1a 44 78 40 -3a 5a 48 8f eb b3 a4 13 80 16 3d 94 2c 97 7b b8 -ec d2 86 6c 5f 5d 91 9e d2 0c 0d b3 ee 31 ef 2f -51 - -# PKCS#1 v1.5 Encryption Example 8.3 -# ---------------------------------- - -# Message: -d9 9b 4f 10 d9 f3 2e 12 ec fa e2 63 0b 22 ac 02 -6a f9 64 b9 c7 15 d2 07 - -# Seed: -e0 af 8b 7e ab 36 a6 ee 31 6d 78 13 67 f0 9e a1 -1e 31 fd c1 ef 2c f9 c9 7c 37 9e aa cf 68 72 a8 -21 3c be 4c e2 e2 9c 77 8b 35 95 40 10 06 3f 17 -76 ab 5b 17 2d a6 24 b4 06 a1 c5 8e 0b 57 4a 03 -b1 b1 b2 cd 7d 3a 9e 50 35 a9 a9 73 05 8f 04 97 -65 2d 2f 73 b1 dc 8f 48 7c 09 cf e7 1d 8f f8 f1 -45 8c 79 0e e0 c5 - -# Encryption: -01 02 3b be 85 57 c2 63 0a 26 22 46 db 7a bc 54 -03 43 88 70 38 f6 4c 64 1f d7 4e e8 74 ae 96 70 -fb 28 62 d4 24 70 3d a2 0b e4 f4 8b 23 9c d0 60 -43 81 9d 8f 61 51 44 e2 b1 f0 0c 8f 88 49 2e 62 -f6 e0 73 16 f8 49 05 35 3b 0b 18 80 ed 77 da 2b -62 d3 a9 3b b7 0f f6 a5 00 79 38 b9 73 b4 cd 5a -bf ee 0c f1 3f 5d 4a b2 16 01 02 68 5c ac 80 81 -83 4f 95 55 80 6b b3 22 d0 dc 5b 8a 2b f1 28 45 -62 - -# PKCS#1 v1.5 Encryption Example 8.4 -# ---------------------------------- - -# Message: -ca ec a8 e5 9b 81 0c f7 51 12 f7 ed 04 7a 46 69 -2c a0 b7 a8 6e 18 41 d7 19 - -# Seed: -76 1f 68 64 dc eb c9 5a 77 9b c0 b1 6a 95 86 6c -33 dc 8d ca ce 61 cd 7b f9 01 72 d9 9a a4 57 db -6d 90 88 7d 84 c4 73 8d 25 cd f0 e8 95 69 ae 47 -d3 07 3e c4 46 ee ed d5 2d 57 20 8b db 69 45 57 -03 46 57 a7 03 78 49 37 ba 69 4d 42 51 21 38 53 -2b 8a d1 d9 86 fe 47 31 8b 28 23 de 82 ce 27 6f -a6 f0 d3 c8 ef - -# Encryption: -01 1c 0c 03 f7 b6 e1 c1 a8 41 17 40 a6 e5 b4 73 -c2 8d 62 21 17 6c 9d 4f 68 02 4c a5 7c da 27 3a -f5 54 74 03 60 99 0a 1b 74 de 34 bc ea 10 3c 2d -0c 36 57 60 02 08 0b 30 bd 28 f0 76 fb 75 fc 9b -eb 9e 05 d1 98 9a 31 1d 12 c1 f2 8f d6 93 92 ad -4b e5 2c e3 89 de c1 1e ba 94 6b e0 59 91 da 7f -d8 87 a8 d8 76 8d e7 36 b9 05 bf 4b db e8 8b 85 -df c3 b2 5a ea 30 fe 90 df 1d 22 d8 a8 d6 15 65 -1c - -# PKCS#1 v1.5 Encryption Example 8.5 -# ---------------------------------- - -# Message: -10 12 12 85 6e 60 cd 27 2f b1 69 cf 62 cf 47 f1 -bc 50 ef 9f 1f cf d2 14 81 6c 80 7f 18 4a 90 3f -16 f0 e8 09 ac f5 e0 - -# Seed: -60 43 c8 df 6a 7f 4a b8 3e 31 97 e8 cd 02 25 dc -38 66 b5 d8 e6 99 3c 2c c5 b8 76 35 1e e3 3c 71 -c1 a4 cc dc e4 5f 3e 9d c7 b7 e5 1b 52 ee be 0e -27 0e 71 62 07 ca 14 03 e1 3e 72 3c e7 3f 10 45 -5e db de 85 b0 82 90 52 ed af e5 6e 9a 22 02 4d -40 68 37 1d 36 c9 1f - -# Encryption: -00 05 c5 cf f8 9b 93 3d 8b 65 23 b3 59 06 bb 3a -71 1a 0f 7f 50 3f 92 14 74 66 59 85 03 91 27 30 -3b 00 11 e7 a4 2b 41 c3 3b d2 0d b3 1b 15 60 c9 -b5 22 20 89 cd cf 53 b8 2c 95 f8 c1 ad cd 8b 78 -3f d4 b4 8a 45 40 20 66 8e 0b 62 52 0e 52 58 52 -09 db 52 9f 38 70 86 49 d8 e0 64 89 0b 22 8f b3 -c1 98 1b 2a ef 3a 54 65 ce b1 30 21 eb e0 8d 02 -e3 3a a2 dc 3c 39 28 4e f7 a8 58 dc ce b2 8f fa -28 - -# PKCS#1 v1.5 Encryption Example 8.6 -# ---------------------------------- - -# Message: -6f 03 b5 72 52 30 de 7f 99 63 69 8e db 79 75 ec -e8 - -# Seed: -a3 0e e5 ae ab 59 31 03 3e fb 70 af bc 2d 3d 11 -a6 33 84 cb 8c b3 3a 8f ca e6 14 66 84 e6 3f 0c -c3 2e 89 a7 e4 ea 43 32 7b f0 35 66 95 43 19 28 -86 de c3 fb 4e 2d 08 11 ef a9 ae c5 10 9e 31 b6 -a0 56 e5 3e 31 7f 6a 90 4b 13 a7 35 6f 5e 7a e6 -0b 97 21 5e d1 48 17 d2 8f 74 b1 64 0b 1f 2e 42 -ef 0d 38 ca 35 a3 54 a0 af ef a8 03 a4 - -# Encryption: -00 10 bd 2b 35 6f 9e ab c2 2f 7e 68 f7 2f 61 75 -f9 ab 9d ed a9 64 23 b7 4b 11 de 82 c6 07 a1 38 -86 3e 17 96 6c 07 f5 6c de 9e d6 bc 42 2e d9 fe -aa 1f 65 36 7c cf 91 cd 4c 91 58 a7 49 57 1a 0e -9f 96 07 cb 48 cd 00 a4 48 de 03 64 91 06 ce 0c -24 06 aa 50 aa 12 17 17 8c db 06 80 1c 70 a8 9a -7a 1a 83 06 8e 68 db 95 d2 4c a3 db 33 a7 e5 e4 -3a 68 15 22 74 bb bf 40 06 d9 fb 69 f0 51 4c c9 -e2 - -# PKCS#1 v1.5 Encryption Example 8.7 -# ---------------------------------- - -# Message: -87 99 13 04 54 61 bc 0e ac - -# Seed: -c3 c6 a2 4a c3 40 a4 a3 ff 3b 2c 30 2b 56 eb 83 -91 bb d9 5f af b6 64 78 38 44 38 ab d8 b4 5d 13 -2b 26 99 09 b1 87 84 0a 68 44 ad 39 9f a8 13 72 -05 e0 2c ca e7 77 5c e6 66 21 20 e1 54 b7 bf d3 -0e 8e a4 d3 4a 7d b6 a2 34 88 a5 da ea 38 08 5b -ed 56 78 0c ff 87 27 12 5f 1a d5 f9 d5 a0 bc 3b -e5 80 bc 4f a0 68 26 7b 27 de 38 3c 55 c7 fc 17 -64 c8 6a c2 1a - -# Encryption: -01 d2 1e ce 33 f4 40 c7 2a 11 1d 62 ef 48 6c 77 -c6 c8 90 cd 81 a4 eb 05 32 ad 2c 0e c7 68 dd 1d -e5 b2 11 2f df 04 e2 87 a9 5b 95 0b 1f ca 5a e6 -93 cf 0e 8a cc 93 6f 37 47 14 de 74 95 90 8c 29 -15 a7 07 21 3a c3 db da ba d8 1b 4b a1 cb 50 b9 -5f 93 14 53 1f ec 83 3f 08 21 c0 4b 57 40 d7 3b -8c f1 f9 e3 d7 ab c9 74 49 26 13 8f b0 15 c0 f0 -56 cc 4b a2 f3 16 37 34 db 44 3e bd 68 85 8c 4f -a6 - -# PKCS#1 v1.5 Encryption Example 8.8 -# ---------------------------------- - -# Message: -5b - -# Seed: -42 b9 99 fb 16 3a 6f fa 67 a9 bc 4e 6b a1 2f 81 -b1 d5 6e 54 bf 08 66 39 7f d3 14 eb 0c f9 7f 13 -b7 80 4f 76 8f ba 54 06 21 f0 5c d3 72 64 d8 e8 -f5 82 28 fb 6a b3 0e f5 4e 30 fa 8c fc b5 a8 7e -14 8f ba bf 85 88 6a b1 f0 d5 25 49 2f 56 c6 47 -f7 22 9b 2b f3 94 a0 ce ab bd 37 c9 3e 6d a8 09 -7e 82 72 7b 3d 53 e8 c2 ad 1f 77 13 e3 4e d1 3b -a5 9e 0a 91 4d b0 6f aa e4 9c b3 79 96 - -# Encryption: -00 90 e5 35 59 47 90 2b c3 fb 58 0a 84 77 09 03 -a3 95 5b 3d d7 19 1c 92 8f 74 07 ba 74 72 65 dc -8c bc 1d 22 f9 37 72 72 b1 a8 c3 5c 23 8f 04 a1 -19 37 d1 b4 35 4f 64 37 95 e9 86 de e2 e4 0a 40 -67 41 b0 21 fd f0 5c 4b a1 15 62 e8 3e 9f 28 59 -2e 0a 79 14 fe 88 b2 c0 fe 7a 5e ea f5 00 f7 e9 -8a 5b a9 54 f7 50 77 bc 8f 65 9f 21 bb 22 03 31 -4b e0 d6 d2 1e 63 20 c0 5e 6e 2d 55 79 79 22 6b -80 - -# PKCS#1 v1.5 Encryption Example 8.9 -# ---------------------------------- - -# Message: -f6 35 29 90 13 24 a2 0f e5 e9 25 8a da 2f 95 37 -b0 1f 58 39 b4 45 97 e3 29 3a 12 25 ca 3a 2a df -68 4a 72 a7 93 c6 9c 56 af 2d 34 98 d3 2a 09 2e -91 4b - -# Seed: -7b fa 85 97 a4 34 cd ad fe 15 63 14 44 95 13 d7 -6c 10 5d f1 bf c4 8c 4d 07 6a bf c0 5b 5d da 72 -e0 dd 15 f9 fe 82 a9 95 5b d5 6d 33 43 e7 c6 f2 -5a 60 74 12 07 e7 3a 2d 10 bb 95 d1 d7 29 a2 27 -93 e6 c4 55 e9 16 23 5a 81 16 94 db - -# Encryption: -00 ad f4 78 74 67 ea c2 ea 61 fe 7e f8 2f d8 7c -2d a5 89 9f 30 30 2b bc 11 27 86 d2 fb 11 c1 42 -f3 f1 d8 cf 37 16 0d 2e 4a 43 98 3f fb d3 93 a4 -1b 59 9e e6 a2 7e 24 64 25 50 2d 46 90 20 2f e5 -f8 ee 1b c6 c1 d5 d1 6b e2 3b 97 3a ed f7 f9 11 -1b d8 b1 42 84 42 65 fd 93 57 7a 43 c3 ac c6 e2 -af 20 89 d9 d2 f3 f3 1a 5c 24 7a 7b 68 31 5b ae -25 d5 ae 81 40 a5 1f fc 00 97 10 7e c1 62 0a b3 -b5 - -# PKCS#1 v1.5 Encryption Example 8.10 -# ---------------------------------- - -# Message: -c6 d1 4b 04 71 45 f3 17 78 1d d7 38 2d c0 a9 72 -57 d5 54 bb 53 53 9e e9 a2 92 e7 da 5c b6 42 6f - -# Seed: -01 ff 38 d5 de d6 c4 3d c1 dc 5c 27 a7 e4 81 3f -44 8f 45 c9 6e df 4b d9 3e 96 fa da 9b c8 ec 5b -43 4f 06 19 a3 8e 04 35 6e 06 27 85 51 40 7b 7f -37 e4 2d 91 45 62 0a 81 98 18 50 a4 9e 28 51 17 -2d 23 0b 37 82 41 10 f8 ff db 84 77 94 63 9d 26 -50 cb ed 36 26 01 05 f1 f1 29 6e 52 a7 d4 - -# Encryption: -00 5e dc 93 97 89 cf bf aa ff 28 2b af 97 01 d6 -1f 9d be e6 f2 d2 06 cf ab 77 57 61 f4 2c b2 74 -ec ba 31 c7 cd 2f e6 03 1a ba 0b 84 d4 62 7d 30 -37 e3 1c e7 e1 56 23 ba 7c b7 69 02 51 c0 63 27 -a4 31 37 12 98 df 29 21 95 b6 45 11 62 d2 da 92 -a7 07 8e 2d 07 c9 f5 6a 07 06 8a 9a 3e 17 3e 4a -ae 25 a5 d1 c6 8e 68 20 8c b5 25 3a 0a 53 aa 6e -2e f6 c2 95 d1 51 65 69 b8 62 cb 92 ca 82 3c cb -ab - -# PKCS#1 v1.5 Encryption Example 8.11 -# ---------------------------------- - -# Message: -c1 16 53 e8 10 b5 3e 65 11 f1 33 23 fe 52 26 a1 -70 c2 1f 6d aa 44 29 d9 68 ef da 05 29 d7 b6 e1 -0d ce d8 0c 6b 63 01 de d2 2f 52 91 1c 0f 7f f4 -53 5b d5 e2 0f f5 35 88 cd 3d e6 64 8a c0 2d - -# Seed: -85 fa 7c 6c e9 6d 0a 8a 1f ba 75 04 71 7c cb e1 -37 13 80 93 95 6e ff 06 3f c2 ef d4 a4 6d 7d c7 -4e 90 f1 da 9e 43 db a9 12 9f 14 ec 55 9a 4d 2d -6c 5a 19 cb f3 a6 8c 62 d0 98 34 52 a9 ee 0c - -# Encryption: -01 b0 8d 49 83 13 a7 d7 4a 05 53 14 eb 43 15 ba -02 87 60 da d4 11 14 d5 94 2d 63 bf 8d 27 be 3f -49 cc d9 4a cf 9d 3a a2 2d 09 b9 9b f9 74 09 bc -f3 32 13 c0 99 67 07 86 82 03 a9 ab 27 70 8d 3f -ff 69 b8 9d 02 e3 6e 01 21 a1 19 b8 d4 d9 bf d4 -fe 8b 16 8f d7 c1 2a 24 3f 7a 00 0b 39 bf 8d 56 -48 17 24 20 80 23 bb 60 7b 30 50 5d d1 74 2f 87 -9f 16 c1 0c e4 90 d3 4a 68 0d 27 ac 39 60 7d a2 -4e - -# PKCS#1 v1.5 Encryption Example 8.12 -# ---------------------------------- - -# Message: -09 5b 77 c9 4d c1 b1 87 88 e4 00 e6 91 6a 4b 4c -fd 73 ac e0 df 9a 3a c1 31 bd f9 ad 0a 12 db 76 -6d eb 22 53 59 d9 01 cd 56 ed 88 cd a3 d3 28 56 -54 02 - -# Seed: -a3 4a 68 05 55 71 09 c2 61 dd df 5f 85 d3 71 ae -65 20 f4 5a df 46 96 01 b5 c3 59 fe c7 44 cb 2a -ae 80 98 3c 73 2d b6 c5 45 df 55 e0 20 8a cf bb -f1 c2 c5 e7 99 88 f3 4e cd 6e 5b b4 b5 25 c1 b8 -bc b0 70 d0 d8 42 48 b1 f8 e7 48 0e - -# Encryption: -00 39 56 36 a8 26 67 dc f0 0d 5d bd d8 54 12 06 -94 8d 49 36 89 17 ec 0e 00 fd 7a c5 ca 8b f4 4e -c5 83 78 38 6e 59 4b c0 65 a9 a6 3c f2 a3 55 a6 -08 b6 f0 ba cb a5 60 08 bb a4 72 2a 7c 47 05 45 -a2 0f 38 78 53 d4 60 31 3b 2e 86 4e 17 b2 33 e5 -96 35 41 32 af 17 3b 4d 04 49 26 47 79 02 62 d3 -a4 3f 84 27 37 88 37 46 6b 06 73 a8 15 27 e6 be -10 45 80 32 6f ec 84 ba 37 1e a6 10 91 fa 40 33 -a4 - -# PKCS#1 v1.5 Encryption Example 8.13 -# ---------------------------------- - -# Message: -38 - -# Seed: -54 7c 91 75 19 05 d5 a2 84 ac 3f e4 32 cb e0 30 -55 b2 85 06 58 96 11 0e a3 6d 05 a1 40 08 3c e3 -95 5f a8 28 41 ea f6 db 4a 50 d1 2c 07 4f 45 a6 -88 b5 57 6d 6e 61 68 07 54 0a c1 17 58 5c 5b c3 -be 52 60 72 7c df 12 3c 77 4d b4 0c ff 29 70 88 -62 48 53 e4 69 51 36 b9 31 16 15 17 a7 b9 b5 dd -cd 9d 32 de 3d fe 3e e2 ea 68 8c f7 bf 88 2c cf -7b 9c 48 d5 e1 9e ff a6 50 4a 42 62 0b - -# Encryption: -00 89 e3 9d cf df 91 69 3d ef e3 9d 12 bb 25 f8 -0a 76 8d 44 1b 48 1d 6a 75 48 69 50 42 48 0c d4 -a0 ba 97 83 d5 c5 bd 38 89 6d ce 06 ac b1 77 a4 -ac 59 68 e6 55 a7 aa f5 0d 69 4a 64 97 13 b7 a4 -bd d1 4c 81 9f 83 b2 04 7d e2 19 5f 73 03 66 54 -53 a8 a1 11 5e 5b 48 ac 0e 9a 65 ed db 31 89 51 -7b 04 6f cb c2 d1 43 81 77 6a 77 fb 46 8e 11 29 -3c 78 c8 37 4c 8f 46 60 35 1a c2 b2 c7 84 5a 25 -fe - -# PKCS#1 v1.5 Encryption Example 8.14 -# ---------------------------------- - -# Message: -80 64 6b 3c 4d f0 eb 79 1b da 0c cc 4d 97 d8 1e -a8 f6 f7 4e b2 45 e2 c7 c3 48 fd 7f b9 90 16 a9 -d4 0a 60 5a c7 42 b2 7a d2 48 - -# Seed: -11 b8 e7 98 d7 a1 42 d0 82 e0 59 8a 8c b4 f8 c2 -aa 87 5d 5b 65 17 8c 4e e6 7a 5c b8 41 d1 cd a3 -04 31 d0 20 df 28 80 d7 93 58 15 d5 9d 91 b9 99 -3e 53 ac 34 1c 97 28 61 ea a2 66 97 cf 10 ca 8b -27 94 b4 53 03 be 03 48 9e be 07 4d 8f 23 98 54 -c3 a6 06 fb - -# Encryption: -01 f1 e5 a3 db d8 24 75 2d 2f ba 3c 32 42 e9 d9 -96 e6 27 43 0d 49 3e 1b 44 6a 2d bc d8 6a 48 09 -3e 37 a2 e1 28 b2 8c 49 d2 d1 72 bf 5a 97 7c 36 -9b aa 9f fb 83 9b d2 fd f0 0b d3 0f f5 22 8b 57 -6b 94 e6 d8 ec f9 44 24 7a da d0 19 f2 1d 06 fb -e4 18 d3 a6 d5 4c df 11 3e 8d 14 f6 ea 06 d8 db -79 64 93 bc b1 89 6f c4 f3 f3 03 86 c5 c8 ba b7 -03 7c 87 9a fe a4 7c 8f b7 a3 c5 b5 0b 29 18 66 -b9 - -# PKCS#1 v1.5 Encryption Example 8.15 -# ---------------------------------- - -# Message: -6b 63 1c 7c 35 ea 75 a1 b0 - -# Seed: -3e 42 40 c3 e0 9e a7 83 55 35 8c da 61 29 53 47 -30 f4 8a 9c 9a 1a 52 13 28 4b fd 07 71 21 6a d4 -ca 23 3d 99 3e e6 35 7f 4b 1b 12 a6 ba a1 77 43 -13 4a 85 7f d7 69 a8 bc 78 d6 1f b1 4f ea 05 22 -1d cf 5a eb 1a ff d4 0d 8b c6 94 5c 30 10 45 b6 -86 c6 11 fa 43 7e 30 ca 0f ab 5a 4c de f5 20 5b -af 99 26 c6 07 be 96 37 b1 50 7f 50 83 e9 40 cc -fa 2f b3 86 19 - -# Encryption: -00 47 cb 9a 91 98 d9 83 b3 22 24 cf 27 fc 72 99 -bb d4 ae 07 78 a8 3f c5 9c 47 45 fa 99 e9 17 bb -74 f8 bd 4e f1 3f 14 0c a9 b7 2e 2a a1 74 ce ea -26 48 94 e2 15 f4 1c 36 d4 e6 f3 46 f6 9b 4f 85 -50 5c 54 cd 46 25 9c 71 2e 30 c4 92 94 ba db 1c -47 16 85 1f 2b 75 e3 96 12 cd 54 66 ba 56 e3 f3 -15 99 c2 dc e2 3d 04 c9 3a 64 40 22 27 df 40 b5 -14 c7 4d 0a a3 6e 1e 86 58 e2 92 77 b3 05 af 35 -15 - -# PKCS#1 v1.5 Encryption Example 8.16 -# ---------------------------------- - -# Message: -40 08 55 da 54 a6 d1 fe 5f b5 8a 73 d2 a5 e5 58 -38 70 fb d5 25 d2 f5 72 ad b5 96 30 06 d0 a1 33 -9b ea 88 9d 6d 46 a4 37 62 f5 13 bb 7c c0 36 22 -bf 85 92 44 d6 - -# Seed: -49 6e 50 ba b5 ef 18 f2 2c 3f 62 b9 21 14 8d 36 -c1 01 ad 0a 9a 20 38 67 58 08 ce 8b 62 f8 a6 a0 -ba 8d 91 05 f9 2e d8 a0 2b 31 2f 32 4f 3f d3 91 -92 bd 41 53 78 4f b5 59 05 c3 b6 69 30 7b ad a8 -27 af a1 b5 cb 3d c1 1d c4 - -# Encryption: -00 d3 a8 5d ec 97 d3 44 88 ee 33 c6 58 ba 18 8e -64 cb 57 83 7d 2e dd bc ba 8e e5 2f 13 f1 e4 fe -9b ec 2f 92 e7 21 09 87 e1 c3 fe 34 5d 40 19 77 -0b 07 74 94 51 b0 4d 67 30 d5 3a 91 01 5b 25 7e -81 0d ae 0a 0c 11 6a 4f 22 45 14 ed bd 39 b2 c6 -5e 15 2d 3b 97 89 dd a4 f0 d4 5b f9 83 2d 27 9d -34 31 06 2b 4d e1 b0 67 7e f5 9c 6c 33 27 68 ec -da 3a a6 bc d1 0f 70 bd 06 03 0a 76 65 ed 3f 20 -79 - -# PKCS#1 v1.5 Encryption Example 8.17 -# ---------------------------------- - -# Message: -b8 7e db 45 5a 7e 85 53 9f 92 8e da e9 09 fb f8 -f7 a1 99 c0 3a 94 a9 a4 5a ca b2 5e fa ee cc 26 -29 74 ca e0 bb 72 24 3a 99 c6 47 20 79 f1 97 38 - -# Seed: -03 5e 31 59 4a 56 65 60 5b 84 fe c9 3a df 92 58 -50 85 1d f7 b3 94 e9 bb ec be 4d 72 c9 2f 27 03 -b6 d6 08 96 e0 05 4c 59 ca fa 5e 0d 28 6c 81 2b -23 e5 37 88 5e 4c 34 38 a7 72 a1 61 0a e9 fa e9 -18 e3 4d 49 92 c7 f2 63 f3 e8 e2 f9 80 b8 - -# Encryption: -02 1c 8c 95 9a ec 47 29 68 87 68 93 0d 67 e2 02 -99 dd 47 90 2d b0 79 f2 39 b8 c2 88 b0 a7 04 47 -c7 19 6b 84 91 2e aa 5b c3 af f6 ba 63 0c 2e aa -3f cb b2 4b e4 63 83 65 31 25 0b d4 c4 f2 a1 da -68 c8 bf 4f 40 cf 5c 98 b6 85 eb ec a4 d0 3e 76 -b3 34 af 0b 1b 34 48 8b 58 2e 29 35 25 35 72 f7 -fc fa a8 35 44 e7 fd 52 ef 45 8a cc cb 19 30 1a -4d dd 50 51 6f 16 a5 fb 78 f3 95 99 00 db cc a1 -f2 - -# PKCS#1 v1.5 Encryption Example 8.18 -# ---------------------------------- - -# Message: -30 2a c8 0e 30 c6 55 3e 93 59 df 85 b1 e2 4a 16 -c8 62 a2 0f f4 fd 9d 5f 14 6b e2 81 dc 30 66 ae -b8 fa 00 b5 2a 99 - -# Seed: -32 6c 99 35 8c 4e 5f a4 d2 c0 43 f0 2f 92 70 5f -79 1c f7 12 bc 01 04 5b 4c f3 49 b4 2a e5 ac fa -c3 78 38 11 bb f0 7f 34 bd 6c 85 19 55 cb a4 a8 -b2 a7 d1 39 a7 8b c4 d8 8e 3a 88 e6 c4 cf 49 4e -6a 4a 52 35 41 45 e1 18 83 cb 5c 78 b5 72 f3 0a -51 ed 23 f2 56 4b 69 60 - -# Encryption: -02 03 29 87 cc f7 5a 63 86 24 17 80 64 db a4 b7 -2b e5 39 e0 7e cd f5 30 03 56 cc 43 d7 29 fe 34 -fb 35 bb bf 5a 32 17 2c e3 9e a1 fb 47 d3 8e 49 -7a 03 b6 01 ee af da af 99 a3 4f d7 21 18 4a f2 -e1 8e 83 d0 50 a4 10 8b 15 e5 e3 a2 7e 0e 63 6d -f8 d9 4f 98 16 58 eb de cd ab 0d ef cc 0d af 3a -c9 a2 7b 3f 22 a0 54 1d 35 00 27 52 e9 cc 4f b2 -58 2f ae 25 11 a1 32 ec 5c 22 8a 88 72 bd ba d6 -87 - -# PKCS#1 v1.5 Encryption Example 8.19 -# ---------------------------------- - -# Message: -00 b3 82 01 74 6d ca f4 03 48 af 57 ba d7 25 70 -ca f5 a2 85 5f ec 6c 42 ee 22 dc fe 64 c9 97 ec -62 a5 c9 75 62 4b bd 1f 8e c9 16 - -# Seed: -93 91 05 c0 04 c0 1a a9 f4 74 46 d3 cc f5 30 e9 -b2 17 4c 50 ae bc a0 a9 5c b7 a4 d8 39 54 ef b8 -03 9e 59 1c 19 71 d7 76 ce c7 61 12 92 06 db 7a -d3 dd 87 16 68 25 5a 55 50 ac 4e 94 8b e0 5c 16 -22 20 dc ef ec 13 ff 1f d8 a5 a7 f7 8b f7 15 b4 -9d 03 ba - -# Encryption: -01 2b a8 7d c0 3a 1a 38 bf ed f1 21 ed 87 22 82 -7b d9 7d d6 3f dd fd d5 90 50 c5 3c 5e 7b 49 fb -7a e6 03 84 87 82 0e fd 5f b9 71 43 81 ce 8d ae -b5 6d 13 50 bf c6 7d f0 91 be a2 ac df fd e9 29 -2a b1 29 1c c9 75 1d 9e 39 a8 26 f0 54 ad 1f 33 -a2 b7 94 da 50 ef 80 67 29 17 e0 b3 81 40 45 d2 -3d f4 5d ba 3f dc 6f 09 ab 0a 01 8b 06 0a a9 fa -fc 3a 5d 19 d5 eb 64 31 0b d6 02 a9 91 1d cb 7f -24 - -# PKCS#1 v1.5 Encryption Example 8.20 -# ---------------------------------- - -# Message: -ba 28 33 66 04 76 d8 73 15 07 66 9f 50 29 8c 2c -68 d4 4c 53 e3 d0 a8 03 78 6e - -# Seed: -86 ce 8e 92 ad 88 b1 46 2a 17 1a f2 8b 4e 99 08 -8c 04 98 a2 9b 4c a5 e6 6f 64 f8 6a de c7 f9 64 -e8 eb 82 57 c5 c0 1c da 16 5e 0f 75 11 db 14 7c -10 bc 07 51 5f 04 f0 5f 52 d2 bc 89 22 83 57 c6 -61 b4 3f 43 d5 42 db e7 78 34 09 1c 7c e7 0b 18 -2e 19 bc 93 6c 30 68 4a 83 1e 2c 3b 8a 4a 74 46 -3f 0c 9f 1b - -# Encryption: -01 12 ac 28 98 a2 5c 13 28 79 1f c9 6a 82 b7 29 -18 b5 1a 66 8c 54 0b cf fc 8e 0b 3a af e2 05 ee -87 1f 5e b7 6a d1 16 d3 04 cc 04 42 bd b1 af 5b -9a 63 45 82 7e 67 8e 40 e3 3f c8 58 ef 6c 45 6b -e4 36 52 bb 2e bc 39 64 b4 bf 4a 93 a8 ee ef 84 -04 ae f1 a0 44 41 5a 15 6f 7c fd 79 95 ac 25 e7 -b0 30 26 69 8e 14 48 9e fc c1 ae 92 96 58 bb 66 -3d e0 ac 44 a7 a5 5c aa 0b 0b 20 34 c2 aa ec 13 -4e - -# ============================================= - -# Example 9: A 1027-bit RSA key pair -# --------------------------------------------------- - - -# Public key -# ---------- - -# Modulus: -06 8e f0 b2 74 15 7d 7b 5e c7 29 03 86 59 56 18 -3e 0e 34 62 ec d2 21 14 ca d4 c7 ba ac 94 c7 c2 -c5 e6 cb df a2 ab fe af 8d 23 18 2e 9c 08 81 5d -10 0d 8e 8f 62 1d 3c d4 af bb 99 85 96 6f d6 a4 -18 2b 59 90 88 a3 5d 77 fe 01 78 ac f7 53 1c 70 -d8 96 ff 78 8e dc 82 06 05 40 ef ef d9 f3 c2 4d -5b e6 9a f7 f2 f4 44 85 b1 91 18 a4 68 81 4f c5 -13 e3 a1 ce d6 77 91 f9 03 6e ee 56 fa 9e 20 60 -2b - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -06 8e f0 b2 74 15 7d 7b 5e c7 29 03 86 59 56 18 -3e 0e 34 62 ec d2 21 14 ca d4 c7 ba ac 94 c7 c2 -c5 e6 cb df a2 ab fe af 8d 23 18 2e 9c 08 81 5d -10 0d 8e 8f 62 1d 3c d4 af bb 99 85 96 6f d6 a4 -18 2b 59 90 88 a3 5d 77 fe 01 78 ac f7 53 1c 70 -d8 96 ff 78 8e dc 82 06 05 40 ef ef d9 f3 c2 4d -5b e6 9a f7 f2 f4 44 85 b1 91 18 a4 68 81 4f c5 -13 e3 a1 ce d6 77 91 f9 03 6e ee 56 fa 9e 20 60 -2b - -# Public exponent: -01 00 01 - -# Exponent: -71 94 0b e6 79 7b b3 28 5e bd c2 0c c9 27 5f 5d -77 55 88 e9 af 6f 68 7a 2e 39 d2 c1 91 11 10 76 -95 dd ed e3 91 d2 19 6b 29 58 1d f3 15 4a 37 12 -fa 6f cd f8 5b b4 fd 48 64 1f 07 1f fd b1 de 08 -a1 d5 92 1c a1 0e 68 dc 04 13 13 c9 bb cb 80 81 -bd b5 d4 60 42 27 cb e5 78 07 41 65 74 d1 a3 8d -a0 b2 34 4b b2 15 b4 18 2b 10 6b 2b 53 4a 8d 32 -06 f2 d7 d3 03 b8 dd 5b ce 29 2a bf 75 cd 76 49 - -# Prime 1: -02 95 10 b9 33 b7 c8 4e 41 ff cc 72 2e 32 38 60 -c9 b2 d0 88 3c 68 33 62 4b a5 bb b8 97 53 d7 60 -3a 7d cf 26 6c c8 f4 bb 07 48 48 26 0f 68 dd 82 -6b 63 8a 8d d2 ef af 68 aa ee 26 5a e8 98 39 b1 -63 - -# Prime 2: -02 8a 2d 03 34 49 44 62 f6 11 f3 60 3e 0d 37 4f -3e 32 d2 fa b5 e9 d6 97 2d fd 70 79 64 46 a4 8b -c3 03 ee 25 8b 75 a1 b7 ac e7 0d 48 58 51 79 4e -42 84 f2 dc 51 d3 97 8d 55 53 7b ea 22 55 11 f4 -99 - -# Prime exponent 1: -01 b9 55 0d df da 3d 6f 09 9e e5 f6 00 a3 64 82 -31 86 20 b4 23 68 09 8e 01 24 e7 5b 88 23 e0 31 -0d 3b ba d5 53 61 22 09 cf 05 d1 ad 1f 32 8a 57 -ac ac 2a ef 1e 39 08 69 1f 5c 98 dc ae 56 1a 86 -33 - -# Prime exponent 2: -e8 ff a4 8c 52 4d 5d a1 8d 61 48 76 34 4a 43 ed -a8 4d 0f 67 ad bb 27 46 65 f2 ae ae 0e da dc f3 -30 2f 61 e9 0e 68 bb e8 0c 8d 28 05 ee 7c a8 5d -12 43 ee 4c ac a5 3d 12 fc ee 05 43 f4 74 90 d1 - -# Coefficient: -01 98 4a 81 5c db 46 ad 81 cd 82 10 aa 07 22 70 -0c 59 90 9d dc 9c 4a 49 f1 9b e1 5d a6 04 47 8c -21 88 81 d5 43 a7 54 6b f7 75 69 4c 2b d1 3d da -69 2c d0 bc 24 39 ef 22 ef b6 7f fc 5d 46 95 21 -b2 - -# PKCS#1 v1.5 encryption of 20 random messages with random seeds -# --------------------------------------------------------------------------- - -# PKCS#1 v1.5 Encryption Example 9.1 -# ---------------------------------- - -# Message: -96 ad 3b a4 d2 9b dd 35 25 bb c5 d0 2e 88 c0 13 -3f fd ea 40 94 74 db 34 df 73 3c a5 9c 3a 23 2f -6a 64 c2 14 3c a1 31 a7 f1 8d 00 5b b3 aa 6c a1 -ea be aa 13 6b ec 37 db 11 1d 4d 8f 61 - -# Seed: -10 e9 f5 09 3c ec 87 2e db 16 16 2b 6b bd 52 12 -f6 10 1a 71 d5 1d c1 42 0c ad d1 d5 50 fa f9 af -40 f5 73 d3 e3 ab 68 91 d8 a8 82 ef 06 56 bc 30 -06 2a 05 b1 cc 27 7a 11 c9 ba 2e fd 51 03 c5 6e -23 - -# Encryption: -04 de c0 1b bf 8e 0c 22 96 d9 f5 bc 2d 2b a8 95 -34 3e c3 0e c5 44 13 57 6d 80 84 b9 31 43 cf a2 -d2 03 3b f4 c2 c2 e0 3f 5b 02 59 ed f1 4a 8f 3e -11 69 85 77 65 2a 2a b9 f5 1a b0 18 7c c7 51 75 -c8 6d fc 9a 45 b1 e4 eb 8b 54 47 a9 4a b9 b5 17 -7a 04 04 ba 49 e5 7f 83 c9 3f 7f e2 de 24 18 45 -f5 81 f6 42 12 43 7e 0c 04 ff 34 ea 1d ee 6d d2 -8f 6f f3 36 72 35 44 13 74 f0 f2 ef 71 a9 cd ae -9e - -# PKCS#1 v1.5 Encryption Example 9.2 -# ---------------------------------- - -# Message: -7f 92 ab b6 e5 2e d5 d4 20 84 9e d6 cc ab 36 c3 -d0 84 92 55 43 1e 19 3d 67 bd 94 4b 6c 0f ce fb -77 29 cf 5a 31 - -# Seed: -ce a9 68 be 78 ab 5f aa c2 27 dc 3c 6f c9 ce d4 -9f 85 1e d5 8b 08 d5 ca 37 54 28 48 9a fb ef 3b -f5 ed 83 74 6d 95 9a 0a 56 e9 ac 66 ff 2e 7c 8b -8c 3a da 97 fa 15 dd 7f 99 13 41 74 70 70 cc ad -65 42 bd 7f 4b 33 f5 56 04 45 8b 91 03 ae 13 dc -89 b4 e6 2c cb f8 4f f7 3b - -# Encryption: -02 5a 1e 65 eb 37 f4 b3 28 cc 31 b0 17 24 f8 3c -26 ed 8d 18 a6 51 65 21 3b a0 ef f7 ae 76 7e e6 -0b 99 27 76 1a 06 94 b5 c3 bb 64 b7 e0 39 96 a3 -56 8d 6f d1 ac 6b 7a 8b 71 97 5b b0 71 6d 94 5c -02 d4 73 68 96 6f ff b1 d4 49 fc 6e d7 3e 2d 19 -83 1b 86 d1 87 67 51 29 36 69 e7 7d 6e 12 a0 f0 -c9 62 df cd 40 0f b8 3c e8 26 07 16 31 7a d5 fd -e2 18 49 aa 6f 68 e7 0c e0 b5 b3 11 42 89 8a d1 -a2 - -# PKCS#1 v1.5 Encryption Example 9.3 -# ---------------------------------- - -# Message: -f5 b5 35 b6 3d 53 5e 21 37 73 2c 30 13 37 c9 53 -ea 2e dd 58 a7 8c 20 25 83 2d ca 9d 6b cd ad 87 -c9 97 c9 06 83 6b 2b f9 5c 83 f0 3f 7a fa 29 01 -34 6d 67 4a a6 9a 1b 47 f6 b9 16 fd 4b - -# Seed: -c8 9e fd b2 34 e0 1a 2f 07 76 29 57 e8 c0 a4 f9 -1a ba e6 d4 f3 60 e8 9a 7c 48 6c 55 49 f3 d0 ad -75 77 7f 0c cd 97 a0 97 5e 98 44 d9 86 87 02 76 -c9 82 5f 5d 1e ef 3d 1b 48 7a bc d1 9b 51 2d 08 -be - -# Encryption: -03 9a 1c e8 c0 91 62 51 a0 1e 5f b6 61 5d 2e 11 -98 2f 4f ae 7d 46 df 21 da a2 98 f2 c7 46 11 b5 -58 16 cc 27 fa 37 27 9a af 59 02 ec b6 c8 39 fa -90 0c f3 af 86 ff 40 a4 47 dc 40 22 35 f9 06 67 -91 23 f3 cd 38 19 04 f3 3e ee 35 3a c9 0d 5f 7f -20 3a 6e a8 91 35 1a db 11 60 1b d9 d6 b0 a0 24 -33 3a 24 55 be 1c a6 2e d8 2c f3 7c f8 de 4e 23 -92 dd 54 e7 75 03 3c 56 99 0b ae 5c 43 91 b6 65 -3a - -# PKCS#1 v1.5 Encryption Example 9.4 -# ---------------------------------- - -# Message: -a7 cf 29 82 03 47 a5 2a b9 cc 42 04 bb 6a c1 bd -7f d9 0a 75 8a 15 6d fa 9c e7 19 27 e7 4e e2 15 -98 70 8c f6 9c fd 79 85 74 2f 50 27 ff a7 10 - -# Seed: -10 9f 0d 6c a0 e1 3f 50 4c 07 d8 4a 5b be 43 ed -6a 94 ac ba fa b0 48 89 36 05 d3 41 c5 d2 8d 85 -44 c3 fd 28 43 50 f2 c2 2d 1f 36 7d fb 9b 6a 67 -51 d0 6a ae b1 7c 3c 0a 10 11 ae 38 fb a4 e4 6d -4e 44 c4 82 87 9e ba 06 44 37 48 71 b5 c5 3b - -# Encryption: -04 48 c3 9c c4 57 d6 cc c3 0b 0d 76 ff 5a 13 2e -00 c7 5d 53 36 46 b8 44 0b 13 ce 73 0e 1b 7a d8 -3b b2 ba 4a 08 2b b5 a3 3c f4 14 66 e0 67 fc f1 -6c 6a 29 f1 87 9f 77 e9 b0 db f3 ec 08 05 75 be -ba c0 c5 67 6b ae e0 02 d5 73 d1 bc c8 a7 0f ed -2a b6 79 43 ef c9 bc 13 13 9e 5d 8d de 2c b3 0e -1b 93 4f 50 cf 6c 45 73 92 3f 73 98 de 66 70 cc -26 34 1f 3e 35 a4 19 36 1e 59 f6 08 98 f2 69 2b -94 - -# PKCS#1 v1.5 Encryption Example 9.5 -# ---------------------------------- - -# Message: -b8 03 c7 ef 5f 9a 9b d5 84 01 - -# Seed: -8e 77 58 ed 4d 1b a4 dc e0 88 92 6c 10 b2 f3 d4 -c1 e2 67 1a e7 2e 65 9f 72 1f f7 be 6f c0 35 e3 -85 d5 12 d0 7a 38 dc ca 1e b8 31 fe f9 06 10 04 -44 ee 99 5c b0 7b c2 6a 5d c9 2b 27 2a 74 a9 2d -21 49 73 25 22 d5 39 43 4f a4 d0 3b 07 cf 96 99 -95 8c 19 89 1d 1d 59 06 aa 36 d0 a8 d0 6c 6f c8 -7a 45 51 bf 18 58 bd fe d5 f8 86 cc 8d 31 ee 4c -16 4e 98 1d - -# Encryption: -04 b6 2d 4d 4b 9c 1c 3e 05 13 09 79 5c 69 24 8a -ed 38 9d e2 4a 6c 79 53 8a 2d 51 d5 d0 37 19 a8 -a5 28 75 0d 5d 25 4a 1b 91 40 96 db 96 d8 3d 2d -9a aa 2a 16 5b b1 34 6e 44 c3 57 27 56 c3 8d 52 -f8 d3 07 c0 4e 1e fe e5 84 78 22 31 7a b4 69 34 -5b 86 c7 b8 5b 54 15 41 c9 92 ab ea 98 d1 08 a7 -df c7 09 1c 30 c6 68 5a f0 e3 3d 04 66 ac e4 cc -cc b3 4e 5b 26 6d 3d 6b 94 7b c7 c0 ae 34 d5 e2 -64 - -# PKCS#1 v1.5 Encryption Example 9.6 -# ---------------------------------- - -# Message: -61 7e a9 e4 a5 6c 4e c1 d3 d7 fd 7f 32 81 ae 7f -a9 32 b2 a0 a6 cf 55 eb 60 48 14 56 81 b3 58 8e -df 70 12 69 f8 9f e6 4a a1 4a d8 df 0d 46 79 61 -31 - -# Seed: -64 d7 eb d0 48 50 eb 6f 7a e1 af 48 12 0a 80 13 -0f 32 ed b5 03 69 64 0b 22 2b 8d 63 ef f6 57 12 -70 dc ab 31 76 d0 24 72 28 dc d1 c3 f3 cf d5 13 -31 b7 56 a8 65 2a 14 dd aa b9 93 96 b9 19 9a 73 -87 50 d6 9e fc d3 77 f1 84 ae 19 b5 a9 - -# Encryption: -02 df e7 29 58 59 58 81 d8 07 56 6d 3e 36 07 c0 -22 e4 61 fe 1d be d3 cc 6d 63 de dc b7 19 0f 06 -c7 d2 4b 4f 03 26 4c af bb 74 82 ec 28 b9 ba 48 -9d 03 11 5a f5 8f de 47 5e da 58 bf 01 55 cd f1 -af 16 df 20 6b cd 12 57 04 c3 e3 15 ad 3d 95 44 -b9 e2 c2 fe a8 10 ce 48 45 56 d2 9e 07 ad bf 0f -f4 61 cc bc f6 62 bd 74 95 9a 43 7d 4c 80 11 ce -ad a5 50 2a f7 67 6d 9a 15 21 e3 18 9d af de 00 -dd - -# PKCS#1 v1.5 Encryption Example 9.7 -# ---------------------------------- - -# Message: -c9 1f 2c 98 c7 5b 2f d4 cd 8d 5c 7f f2 e7 69 b1 -2f 28 f3 13 fb ac b5 1b 5e 50 14 df ce 9d 63 5e -7c 6b 2d 88 af 5e ac 30 d1 62 b8 dd c2 2e d8 bc -7b ee 50 6b fb f3 1e 51 ba 48 f4 26 - -# Seed: -6c 44 59 61 f8 6f a2 98 d7 64 7c 22 24 d9 5b c1 -27 da fc bd 5b 90 21 ec 7e 9e bd e9 6f 5d 7a 76 -f4 ee d0 ac 92 2a 6e 93 eb 3b 4c 3c 43 f8 a5 7e -18 29 4e 1a 51 73 b0 f7 e2 dd 2c 4e 57 7a 4b ec -e7 14 - -# Encryption: -03 a8 85 aa f7 b7 d9 4f da e3 4b 41 c3 74 17 66 -a4 09 c1 ee 02 32 b1 c5 3e 5f 6c 5a a5 4a c1 ef -0e 5b f9 9b 9f 7d f3 e9 b0 0c ed 94 76 ee 1a db -8f c5 71 68 91 f5 4d 45 ce da 70 b9 db 3b 8f ad -25 e7 77 95 af 14 81 ec 49 21 84 c4 9e 9d f8 23 -ee 64 66 41 0f 65 01 3c e3 c5 79 16 63 5d a8 30 -67 7f 93 2b da ba b5 c0 a2 08 d7 f4 36 7a 7e ab -a7 5b 04 5d 25 ac fd b4 15 fe e0 52 19 a5 84 23 -7a - -# PKCS#1 v1.5 Encryption Example 9.8 -# ---------------------------------- - -# Message: -7b 1c 31 51 a3 8d 32 ec 7b 82 c4 8c 00 0a a4 81 -de 41 8e 80 3b 67 3d 2e 9a 0f c3 d5 e9 74 ad cd -ce bd 3c 2a 8f 41 14 21 18 a5 5e 87 d0 4b ba d5 -b3 64 25 - -# Seed: -b0 f5 be 9b 3f 23 7c c5 af ca 5a 99 fc cb 77 b6 -ef d8 68 94 7f 98 55 4f be ce ac fa 88 4c 15 15 -39 d7 cf 42 3e 72 60 31 bf eb 8d d2 d4 f3 01 da -6b df ca d6 e5 81 65 82 ad dc e1 0d 85 d5 ee 1d -04 46 f3 73 b9 5e e1 60 bc f0 35 - -# Encryption: -06 6c 30 09 dc 6c ba c7 b8 bd 51 41 c5 5c f8 6a -3d 79 69 d5 85 45 2e 3a 66 54 0f 94 02 db a2 15 -e3 fb 3a 27 7f 0d 33 96 c8 c0 08 af 19 91 3e 3d -91 e4 0f 86 76 06 b5 bf 54 30 4c 04 71 da dd 64 -04 b6 7a 48 57 bf 52 24 6c 0d 60 18 23 dd 03 80 -c6 60 9d ac b9 2d b6 02 e5 57 64 ae 46 50 df 1a -db b4 b9 5f a5 af 4b cd 11 21 f1 3c 0a 73 23 ad -a8 c6 0d e3 d0 81 72 9d 19 7f 9c f8 e2 7c de 80 -b1 - -# PKCS#1 v1.5 Encryption Example 9.9 -# ---------------------------------- - -# Message: -b2 93 c6 f6 d0 5d 1f 38 b5 61 ea 3d 0d 0a d6 a2 -af 83 09 bb 9a de fa 77 8f d6 bb 9f ff 3e 01 0c -40 4c 53 39 97 cc fe d7 e1 91 7a 66 92 61 cf cc -a4 e3 70 29 99 1d 2d e9 b2 99 - -# Seed: -87 bd 2f 6b b4 82 45 59 1d 65 f0 23 a6 5b 63 bb -ba 84 19 79 2c 01 41 09 2b 1d b1 be 53 e8 c9 b4 -df 95 f0 ad 55 b9 6e 5e 57 61 5d 21 4b 49 77 87 -0a 27 2f 72 31 66 c6 20 45 76 5e 6b 4a 73 a7 c9 -eb e1 1d 24 - -# Encryption: -03 10 4e c6 c4 ab 9d ac ae 42 7f b1 06 99 bc ae -00 3d a5 6f 6d 07 50 95 87 14 5b 73 3e db 53 23 -9a 6f 42 22 86 83 9c ac 06 4a df ee e5 dc 89 78 -0c dd ad cc 80 72 19 d6 a9 7b 85 c1 3f 27 93 7d -70 32 7f 82 cc 36 a5 da 8e 45 63 77 fc a2 3a ee -51 4e 04 4a bf 1f 66 c3 e7 bd eb c2 cf f6 28 bd -52 4a 09 66 e2 63 8d 28 33 bf a3 43 eb c7 41 f7 -6b 5b 70 a1 13 6f 4a bc 60 28 64 a2 ad 43 a7 91 -bd - -# PKCS#1 v1.5 Encryption Example 9.10 -# ---------------------------------- - -# Message: -08 38 f4 a5 92 - -# Seed: -89 c5 89 8c 6c 3d c6 cb db 1a cb 28 05 df 53 98 -f0 b3 35 8a 18 e5 e6 3c 14 d2 0c 98 d2 1d 9f d8 -b2 ec c9 a0 e8 3d af 0c 06 92 68 bb e8 6f ee a5 -1c 93 79 1b 68 e5 d9 3b 74 5f ea f6 ad c4 2b 83 -c3 09 c9 cd 3d fe 1c 06 15 3a b8 80 85 56 18 98 -90 be 05 3a 92 54 88 d0 29 fe 50 40 e3 e7 d5 d5 -31 b3 2e b9 d2 f4 ee a2 21 11 b3 8a 65 53 f0 0e -dd 23 65 57 5b b9 49 f3 63 - -# Encryption: -01 4f 27 97 dd e8 d4 60 18 ff 23 d8 9b e2 e3 ae -04 6e ed 31 97 c8 79 c6 0e 26 f3 d2 40 08 66 eb -50 d7 b4 5f 6b 01 ae 9c a0 06 84 7e fb e9 ab cc -9b c3 e3 56 90 07 2b 68 db 9e cd 92 6d 94 5f 78 -7b 27 c3 75 3b f9 6b 2d 49 98 30 84 14 2c 42 a1 -26 1a ff 7b 17 ff 4b 20 de 9b ff a5 86 24 ab 37 -1d 4c e2 f9 64 69 a8 e1 03 8d 57 20 b8 1c f0 42 -dc 78 bf da 9a 3c cb 61 60 81 2d de a1 58 bd 2f -5c - -# PKCS#1 v1.5 Encryption Example 9.11 -# ---------------------------------- - -# Message: -12 38 0c 5e 80 bb 95 bb c8 85 73 57 fe fd 17 bf -9e 50 96 27 d2 8c df cd 12 bb 13 16 61 b3 42 df -a6 ca 67 2e 13 a8 85 1f ce 19 b1 a8 ca f0 e3 3c -d6 ef 53 8a 05 fa 54 26 9a 13 78 e7 - -# Seed: -88 03 31 eb e9 1a b6 ce 16 84 d9 af 5d 97 7e b4 -26 ca 71 56 e0 b6 f4 33 6c 6e 09 33 d6 fa 48 78 -2c 0a c9 69 f3 dd e6 1d 8f d7 4c 47 fe 9e 30 61 -71 0d 24 5b 1d 38 11 04 28 60 c1 f4 8d 2b 8f fd -80 9e - -# Encryption: -04 6c 54 5f f4 96 c2 1f 69 01 27 24 54 18 cc 5f -b1 8f 09 10 2e 7a ca 87 e2 6e 20 82 fc 16 f6 2f -e9 f4 2a 72 22 71 a7 9e ae e9 62 5a 7e 63 2c 19 -36 40 4c ec 62 11 d8 23 86 3b a0 2c 6b 0a 83 19 -58 b4 ed 8f c6 25 a2 e5 2a 05 4f 8f 18 1f 13 0f -8b c4 b1 df bd 44 b7 0a 35 b3 5e 9c 7f 4a c5 5e -e5 e2 cb 06 8b 75 86 39 b2 cd 64 3d bf a8 2e 2d -97 20 e4 89 f5 c8 21 d8 eb dc 13 68 a9 d3 46 8a -37 - -# PKCS#1 v1.5 Encryption Example 9.12 -# ---------------------------------- - -# Message: -ee e1 e4 5d 18 b1 47 c2 69 a6 0a 9c 64 20 18 ed -6c d1 15 7c d0 ce 2b 29 68 df a4 b4 97 fc 40 b2 -24 bd 86 1e 25 35 12 2b - -# Seed: -5c 51 3e 51 44 52 b1 4a ee 33 b6 17 60 b8 58 c5 -35 7c 7d 7f 20 e4 a3 7c 7e ef e4 19 ca e3 fd 16 -f9 d8 3e 5e cd e1 9e e6 32 85 dd ce 66 80 ee 94 -64 fe 83 75 6e 90 31 d6 37 9e 6a 6b 38 4c e2 77 -bc 64 2c ed 83 b2 9c f7 4b 72 ce ff f5 30 71 04 -e1 83 de 2c e6 a1 - -# Encryption: -03 a8 64 83 cb b7 2c 15 f5 a6 93 2b 01 2f 40 c4 -b1 73 33 3b 26 86 f4 98 4b a6 6e 24 c7 cf 44 41 -23 ba 2e a6 66 a1 75 5d 09 35 7b ee a4 37 9c e3 -cd b0 a7 7a 6e e3 b7 ca 60 db 68 24 17 f7 16 3d -7d 3a c7 35 28 11 bb 94 c5 b7 71 f3 d3 fd a7 73 -e5 ce bc 8b c6 60 11 55 b3 f4 e4 b4 ca 85 d9 ba -b8 ec 25 8c ec ff 44 33 c9 2e 8f 86 3d 96 fc c7 -94 29 49 8a 9e 17 90 33 0b c4 87 c0 10 d7 99 24 -5d - -# PKCS#1 v1.5 Encryption Example 9.13 -# ---------------------------------- - -# Message: -55 09 a5 c1 ac 54 89 dc b7 65 f3 7c eb be 7d 81 -cf 02 76 b1 f2 cf f9 5d 27 4b bd 04 - -# Seed: -76 e8 1a 51 37 1f b5 07 41 14 1d cb 31 d5 1d 1c -46 1f cc 02 6a ea 85 20 15 d4 68 74 0b 45 23 40 -5f 95 ba 87 9b 08 69 bf 03 1a 60 65 4f c4 e5 68 -c1 95 7c e4 e4 2a 35 0a 95 bf 8c b2 a8 b5 fd e6 -dc fd 25 05 c0 37 a2 9e de 68 9c 53 d8 32 19 e7 -3e 64 08 17 bf 8a fc 9a b0 04 ec ae c8 43 e4 fe -4e 38 - -# Encryption: -02 55 de 28 0b 71 af ef af a2 0f 24 1e 08 1b 7e -c6 c1 62 dd da 18 84 fa 9f 82 5c 4c e7 63 6e fb -c1 1b 84 a6 eb ea 35 89 25 71 ac 9e 6b 1a d8 47 -3f a5 73 c8 83 c9 f2 15 a1 95 80 c3 ea 30 2f 88 -f4 4f 48 e4 d9 5c 34 40 d4 93 1f 17 66 a1 fe 7e -79 0e 5d 38 e8 5d 1f 63 85 0a 3c 70 7a d8 97 7b -88 c3 8c b9 ed 98 34 5c d3 50 c3 dd 45 30 9f c8 -1c b4 62 76 e4 ad 64 7f a8 4c 14 12 5e fd 67 d8 -ba - -# PKCS#1 v1.5 Encryption Example 9.14 -# ---------------------------------- - -# Message: -02 53 81 a5 5c 8e 48 7d 7f 4f f7 c3 6c fb 37 50 -07 d1 9f 93 71 13 6e 2b 3d f4 42 5e ee ee 5d 79 -c3 52 61 fb b4 ea 68 bd 91 e8 ed ab a2 32 9e 29 -31 53 06 c7 d7 18 33 15 5b 88 - -# Seed: -aa 31 0f 62 da 90 da 4a 20 28 b3 81 39 9c b7 e0 -ed 3b b5 10 57 5c 9b d0 f6 38 21 5b af 78 08 e3 -24 5e af 38 b7 6e 26 52 29 0b 7c c6 20 90 7c da -0c b7 af 07 3c 12 2f f8 3d aa e1 98 6b 43 ec 1a -14 82 db a6 - -# Encryption: -04 9b fa c6 41 0b 77 80 39 7a 49 fb 88 93 b2 4d -90 3b 36 00 f3 3c 78 2c 14 75 b5 d2 4b 4f 4e 88 -fd 11 24 ef 06 45 f3 d3 91 ed 31 00 6d d1 b7 c2 -64 12 8d 0d b9 aa 0d 65 a0 9f fb e2 9a 94 cc a3 -58 da 64 bd 1b 72 ff 55 88 88 08 10 5b e0 91 ae -23 ea 3f 34 75 05 17 9e cc b2 41 0d 89 de cb 62 -33 0f 36 c7 44 26 2e b2 b0 78 b4 25 4b cd ce ce -21 1c f0 57 4a 24 68 e2 a1 e0 18 bc 31 f5 02 22 -35 - -# PKCS#1 v1.5 Encryption Example 9.15 -# ---------------------------------- - -# Message: -07 3c 43 67 ba fd 48 10 d7 70 44 60 c7 83 d3 50 -f7 cc d0 99 47 2f 79 f7 fd f2 3e f0 cf aa cc ab -95 71 df 53 fd e4 - -# Seed: -f9 5a 39 96 de f1 ca fc 1a 4a 0b 34 14 6b 73 de -6b 5a 92 cb 81 2e 20 b2 0c 12 2a 25 1e 6b 22 e0 -46 9c 98 db 12 8d 43 ce fc dd 80 c7 ff 36 99 80 -16 a8 92 a8 b6 34 b3 6b 9b 0c e8 7e a8 0b 5d d9 -fd 7a 08 29 14 e7 3b 83 a3 84 1d e5 1b 71 b1 a6 -b7 ef 7d e4 e4 b8 8e dc - -# Encryption: -02 de e4 8b 0f 99 53 ee 12 c7 18 b3 03 b0 c8 9d -61 50 eb be 83 ad 62 4e 11 7e 3f 27 04 a0 b1 7a -2e be e8 38 52 56 f0 e6 42 80 fb 06 c3 b1 46 c0 -99 af 23 a9 f2 47 93 39 37 81 a5 55 ac 4e a2 d8 -8d 78 5d 8c db 6e 7a 2f 89 52 d2 50 3c cf 90 1f -12 39 f6 f7 b1 ac d4 41 21 c3 65 fd ae 37 07 46 -de 45 26 e7 c6 56 0f 87 54 6e d5 77 cf 97 98 be -f4 7e 49 20 65 50 9c 49 21 2d 37 0d ea 05 22 d7 -94 - -# PKCS#1 v1.5 Encryption Example 9.16 -# ---------------------------------- - -# Message: -ba b2 0b 9a 6a 53 2e 6f 8a f0 78 b3 a1 85 e0 aa -86 e6 16 81 bd 1b d7 75 04 4a 2c 95 8d 61 ed c2 -51 60 7c d9 f3 11 48 f5 a9 11 - -# Seed: -37 6c f0 18 14 3b 0c e6 70 21 68 4c bb 36 e4 af -e2 ff 9d e1 8b c7 f0 2b ed 86 3b f1 bc 34 66 31 -9e 72 0f ee f1 9d 38 e2 6b ca 7e 99 d4 09 6a 9e -ed 8d e5 bf 20 3f c7 dd 9c 84 85 df a5 b6 90 75 -ef 0c c0 37 fc df b5 5a 0c 92 8c da c0 cb a0 49 -7e b6 0e 3f - -# Encryption: -04 8d d7 50 99 18 43 0e da bc 01 46 8d b7 e2 87 -a7 38 1e 42 8b 5f c9 3c e8 de fd 7f 49 d5 e9 34 -15 30 43 d1 37 ac a9 f7 b9 75 77 b7 0d c0 16 80 -f2 db a9 1e 93 2b 53 ac f2 a7 f3 34 8f 56 54 b2 -cf cf e7 5d 48 f0 fa 45 00 d1 ba 5d 29 24 7f f1 -42 d6 b9 80 e1 1b 9d ba 68 83 f7 3b b8 55 a2 4c -c4 eb 90 68 23 6d aa 0f 2f 93 45 8d 72 72 6c 2d -8e 31 25 9a cd 3a 7f de b6 fe b5 c6 d2 ed 17 8d -db - -# PKCS#1 v1.5 Encryption Example 9.17 -# ---------------------------------- - -# Message: -19 b1 f4 cd 3d bd f0 5b 3d 5f 16 80 85 6c 5a 74 -4f 51 62 b5 20 bf cd fc 98 87 dd 92 be 9d 8c b6 -25 c7 25 ad 75 f4 f2 ca a5 ef 51 fa ca 71 b5 e6 -6f 84 f2 fc 6f 67 8a ce 80 9d 76 b8 42 ea fe - -# Seed: -78 a7 18 82 85 3d 85 af 16 5c c0 b2 2f fd c8 87 -3d f4 9e 2d 6c c0 ad 0b 0a 99 5b 4a 25 9c 86 7d -c1 aa b6 42 8a 5b 8e 9f 3b e8 7d 87 f9 e6 ea c5 -50 f4 df 11 36 8e 7f 6c fd 7d 0e 47 6a 45 9b - -# Encryption: -06 2a 78 db 5c a6 9a 30 48 10 78 94 93 db 8c d6 -44 fb 29 4e 17 fd 36 45 32 b8 ec 17 ce 3f da 70 -47 64 65 62 4a 60 a6 ec db d5 d9 72 40 c8 d8 9d -ea c1 1d c3 0d 7b 85 14 41 40 8e dd 64 28 81 a0 -11 2b 62 f8 cf de 34 d9 c1 13 85 c2 91 89 bf 38 -93 a6 ab ac e0 4a 10 aa 68 0c d3 a6 ee 00 2c 30 -70 35 d2 39 9a 2a 60 b5 a7 f1 ca af 05 84 d1 0f -d0 6d 6e fd 56 11 4c 05 e4 3d 42 d8 34 f0 3e 3f -e9 - -# PKCS#1 v1.5 Encryption Example 9.18 -# ---------------------------------- - -# Message: -8c b7 3b c4 78 50 c1 7f eb d3 4f f4 b7 32 3b 50 -53 03 0b 96 22 14 03 cd ef 45 de c6 5b a6 0e a3 - -# Seed: -ed 64 78 61 48 81 eb e3 fd d6 d9 ee 05 f2 76 5f -c8 a3 ea a5 80 31 23 5a f9 6f 86 e7 f2 c8 13 ec -04 80 66 1d 1c 2b 4d ef 74 2b 2e 41 41 9d f2 88 -3e d5 86 79 cb 9a da e4 de c4 cf 77 f8 bc 29 41 -d0 33 f8 87 7a 90 6d dc 88 d6 dd 3c 53 96 ad aa -c0 3e b2 a7 09 4c 0f df 0a 44 a6 b9 23 ab - -# Encryption: -03 97 8d 4e ff c6 d6 2f 23 2b f4 6b 42 90 c5 01 -1d 73 28 0a b0 e8 0a b9 d6 05 0a 85 2a 66 79 e0 -17 e1 70 d9 e7 15 6c 8d cb d4 6c de da 70 ff 9a -55 16 8b 9f dc 03 65 b8 aa bb 90 9a ad 40 d5 95 -c9 0b 9f 00 c1 e0 0a d6 f0 1d 54 43 07 b2 54 ea -f4 25 5d e6 2b fd 8a 5f 7e 79 dc fc 74 45 ce c6 -3d f0 c2 bd 0a d9 6c b7 02 42 b3 0b 32 42 07 88 -16 b5 8b 0a 9f fa 16 f1 d8 63 15 f8 a1 cb 2f 8f -6b - -# PKCS#1 v1.5 Encryption Example 9.19 -# ---------------------------------- - -# Message: -8e a5 56 43 df e7 cb e0 75 c1 7b 93 c6 ba 6b 5a -74 ea 8d 1a ba b9 c7 28 ae 5b 00 86 6c 62 88 0d -3c 00 05 20 37 cf 80 2d 2c f2 a8 e1 be a5 8c 7b -a6 04 77 4d 4f 80 bc 04 - -# Seed: -af 9d 9d 31 2e 22 57 0f bc 4b c8 5a 44 5e d8 d8 -99 66 0e d2 4c f0 30 15 33 94 6e 5c b9 47 1a 27 -c5 10 cd 17 55 91 d2 3d 36 3d c4 e3 e6 9c 7b b4 -65 51 7a 4c d1 d1 ce 41 3e 10 16 ae af d5 5d 2c -b9 de bc fe 4b 1d - -# Encryption: -05 87 11 19 16 bb 42 f8 47 57 69 1e fe de 7e b7 -79 6a 5c f8 87 c3 7c a9 f6 1b 45 1f b1 ba de 38 -9c fc 5f dc 21 98 41 bb 41 da 82 74 52 72 5f c8 -2b 4d 1a de 56 9c ee c8 05 79 ed b1 b4 b1 5b 46 -ad 7d 45 b2 45 98 80 23 ea 0d fc b3 74 4a 69 2e -b9 ac a8 5f 21 10 10 af b1 e9 89 4f 85 4a 5e 34 -fe 89 aa 05 19 68 a3 b2 36 2c 15 0c 6d 97 0e dd -82 b9 e2 d1 3b 38 c3 c2 95 6d 91 50 08 86 41 d5 -30 - -# PKCS#1 v1.5 Encryption Example 9.20 -# ---------------------------------- - -# Message: -52 5c ff a3 - -# Seed: -0c 99 30 4c c6 26 3d 1e e2 44 6e 24 8c 27 11 2c -8f 96 da 82 51 5f 06 f8 12 39 8a 88 81 1f 39 fb -05 62 05 c4 4d 6b d4 85 5a 62 c2 1c 60 1b 88 f8 -02 34 e2 32 41 f7 16 32 2d 80 54 a8 4a 1f c3 c8 -46 de fb 61 76 7c c4 d8 16 fa 7b 37 47 f8 72 9b -f3 37 2a c2 c2 29 d0 52 f4 5b c4 2f c3 80 50 dc -a3 f2 63 2e 60 07 b6 08 53 b7 e0 cc b3 da a4 94 -e5 53 35 fd 04 f1 3d 5f ad a7 - -# Encryption: -06 3e 45 08 e5 31 2b 5c 38 69 4d e8 2a 71 ed a3 -12 e9 ae d0 5b c1 43 d3 38 f7 f2 28 12 d9 3c 28 -65 12 6a 9b 3a 42 c3 ca 19 ed b3 46 01 c0 b2 8a -75 66 3b 18 f2 39 f5 ad ca a4 e9 fa 9f 61 18 04 -72 6f a1 29 62 bb a3 23 0c b8 86 d6 67 82 a4 7e -a9 50 2a 83 71 e7 57 3b b6 b0 26 6c 33 64 6b df -53 f8 de 36 8e f2 05 b1 1a 85 ba f2 1d af 3c e7 -a2 59 9f 00 8b 99 45 ee b1 86 ec 19 2c 54 0a c2 -3c - -# ============================================= - -# Example 10: A 1028-bit RSA key pair -# --------------------------------------------------- - - -# Public key -# ---------- - -# Modulus: -0b 52 cb 6b 5c 3b 9e c5 aa ad 89 4e 51 77 f7 f4 -5b 8d 33 dc bb e9 6a 5b 26 f3 00 72 bf 15 73 a6 -c4 1f b0 a9 7a e1 e5 2e d8 c2 5c 62 b9 8b f5 9d -e7 b6 8a b9 8c 2d 8b 93 c4 94 27 23 cc 4b ae d2 -b3 93 c0 7b 2b 11 90 9c 73 2d f7 c1 dc bb 43 3a -83 9d 46 f4 28 e9 dd c8 d3 5f d3 3e ed 29 81 80 -f7 5f 2d 5c 9f e8 53 4f 03 47 f8 68 5c 28 c4 37 -ea 5b 81 1a 28 6e 81 0c 69 7a 88 cd 7e 45 36 4c -1f - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -0b 52 cb 6b 5c 3b 9e c5 aa ad 89 4e 51 77 f7 f4 -5b 8d 33 dc bb e9 6a 5b 26 f3 00 72 bf 15 73 a6 -c4 1f b0 a9 7a e1 e5 2e d8 c2 5c 62 b9 8b f5 9d -e7 b6 8a b9 8c 2d 8b 93 c4 94 27 23 cc 4b ae d2 -b3 93 c0 7b 2b 11 90 9c 73 2d f7 c1 dc bb 43 3a -83 9d 46 f4 28 e9 dd c8 d3 5f d3 3e ed 29 81 80 -f7 5f 2d 5c 9f e8 53 4f 03 47 f8 68 5c 28 c4 37 -ea 5b 81 1a 28 6e 81 0c 69 7a 88 cd 7e 45 36 4c -1f - -# Public exponent: -01 00 01 - -# Exponent: -45 cc 14 17 b2 6f ce 3e 9f d3 10 89 b1 a3 cc c4 -6f 8f f2 1e ac 2e 1d 67 c0 ae 20 15 2d c5 0d 1c -e7 ce 6f 26 40 4e 2e 64 95 b9 77 bf 13 f9 a4 05 -b2 45 80 d6 39 3a 85 22 54 96 e4 ab c4 9e be ff -de 70 cf 26 76 68 66 f2 76 e1 5b 49 2a f8 03 3f -1b ac 7f 66 b7 1a 3b af 57 1f fc cc 03 8a 48 86 -93 94 cc a3 fa 00 49 85 b4 34 a5 15 17 87 7e ae -97 a3 84 94 7f 01 a7 2c f4 b2 01 93 dd 27 64 81 - -# Prime 1: -03 5f ed ee 7e 64 fd 68 65 79 31 a9 df 9d 55 62 -28 df c6 33 a7 50 02 76 8f 65 d7 15 f0 44 f2 3b -3f e7 88 bb 17 86 4d 61 df 57 9e 68 df 80 de a3 -a6 31 90 62 9d ac 7d e6 29 ef 9a b8 f4 df 0b 27 -7f - -# Prime 2: -03 5a f8 e6 fe 2f 84 61 fc 89 a6 45 00 f8 19 9c -cb d3 f4 69 07 85 96 15 56 03 d3 f0 88 08 33 c3 -77 db 07 8e 43 7e 35 60 00 4a d1 d6 f8 d3 47 88 -3f 3e b0 1d 18 9d 52 ef f6 e2 60 e5 2f ba a6 2b -61 - -# Prime exponent 1: -b2 43 b3 49 8b 67 2a aa 7d 96 7c d9 f2 6a 12 e6 -22 3e 90 9b fe 8b 73 91 65 4f 3b 6c a7 9d 60 12 -70 a1 2b 11 d0 99 99 0f 6f d1 f5 0b e1 58 8f 66 -14 a6 19 63 35 9b 88 e9 b0 52 39 c5 f5 5c 24 db - -# Prime exponent 2: -01 35 25 ad e5 3f ee d2 61 54 9d 3d ea 8a 60 95 -79 1a 90 b5 98 5a 70 d8 be fb 63 b5 07 10 84 a8 -ce 23 4b 85 dd 2e b8 41 13 f9 d9 aa 18 25 da 71 -e3 e9 48 f3 3f df a7 70 ec 17 2f ae 6c ce 2d 6e -21 - -# Coefficient: -1c 52 92 93 3c 58 d0 22 59 2f c0 03 38 bf 22 ed -fc ba 33 16 16 b7 9f 8d 2e fd 1f a2 4c 64 f5 dc -fa d9 aa 52 ba a4 6e 86 59 dd a9 ea b3 a7 86 3e -61 37 4a c0 da e0 18 5f b5 8e cb 0b 74 65 ee 07 - -# PKCS#1 v1.5 encryption of 20 random messages with random seeds -# --------------------------------------------------------------------------- - -# PKCS#1 v1.5 Encryption Example 10.1 -# ---------------------------------- - -# Message: -59 22 d0 9f df 65 22 80 2f bc f7 a2 8e c3 d9 fa -df 60 72 03 a3 1b d0 da 96 3a a0 31 5f 35 e1 a0 -a3 74 d4 87 dd 08 62 a6 f6 be c9 32 b7 db - -# Seed: -61 39 5a 0f a1 2e 1e c2 ff ea 2a 88 90 65 3e 8f -37 8d c4 6c e2 b8 aa 4a 0a 1c 56 7b 30 e5 9c 3a -33 a6 68 98 97 14 fc 3d 45 ac 88 63 27 e3 6c 34 -5d a8 58 f9 03 d1 e6 06 74 03 14 cb 80 8d 86 ab -c3 1b 49 b3 5b 3f 20 e3 79 29 dc c8 59 d5 91 41 - -# Encryption: -04 39 e7 dd 09 af 61 c0 ee 25 f3 e5 c2 95 1d a4 -9d 3f d7 08 b2 97 a3 05 5f f9 98 3a 9e a5 38 b8 -3d 59 da bd b8 5d af 82 ae 7b b1 97 8e 7d a2 a6 -dc 05 87 ef 9c 73 2e e6 88 37 3f bc bf a2 da cf -f9 b3 c1 2f 70 4e e1 4f 83 24 bd 4c c6 bf 9d cd -3f 05 33 c3 b1 1a 0d 38 db cc 7b b7 ef 9a 72 29 -6b 6c 13 dc 42 d7 ec 17 f8 51 a5 16 12 c7 49 4c -63 68 a7 fb ec 93 d2 2e 8f 9b 72 bd c0 44 9f b4 -30 - -# PKCS#1 v1.5 Encryption Example 10.2 -# ---------------------------------- - -# Message: -5f ba d4 3a 91 0a 29 0e 50 55 d5 14 e7 1c 8e ab -f1 f9 33 20 eb d0 da 8f 90 d1 46 a8 f3 dd 5c 1a -2c 72 0b 93 21 1e 48 29 34 14 9f 1d 21 b9 78 f4 -8a 0b b8 e4 cc a3 f5 d4 5d 3f 3e 3b a8 e1 - -# Seed: -21 04 52 61 80 4b f7 54 bc b8 bf 34 98 b1 ad 10 -af f3 3d a1 f2 25 ed a5 64 65 90 45 8b 20 70 9f -c8 d0 b4 98 90 7a 83 64 ce 1c 43 6b 6b 1e 73 18 -1c 86 c6 77 af 45 c1 7f 9e 4a f3 75 9c ad 24 87 - -# Encryption: -02 9f 64 ac 33 01 34 00 7f 77 f7 2c 37 f4 17 7c -24 d6 60 be 4e ba c1 86 8a d1 1f 9e 30 51 b8 cd -77 c4 69 11 99 ac 49 19 db 2e d3 63 74 0d 2d de -32 91 f1 0d 92 68 e7 c7 de 37 ea 42 1e bb 1f ad -65 29 f2 92 19 2a 96 80 ba 96 3e da 93 74 03 7a -b9 52 9a 48 6f 35 cb d2 9e 09 ea 98 a5 04 5d 9e -16 bb 87 70 15 5d 70 af d2 17 a1 46 86 27 49 ec -1a d1 59 cf 6e 6a 63 df 14 2b 82 46 d8 44 a7 37 -2d - -# PKCS#1 v1.5 Encryption Example 10.3 -# ---------------------------------- - -# Message: -22 bb c6 16 ec 6e f3 57 31 56 b4 17 61 ac 3b db -57 bd 9b 70 36 ed c9 a6 97 88 75 e2 a6 14 cd e3 -ef ed af d3 88 9a 5d bd cc 5f ad 9e 9b ec f8 a8 -bb 80 33 ff 91 df ed 60 4b f8 c6 e9 bb c7 - -# Seed: -3b 47 d2 ca 95 54 b3 4f 94 29 57 8d 4f de c5 d9 -6e ca 89 b6 81 72 d1 db 13 56 b3 da 7a 69 f1 58 -4d 4c 84 6b 18 43 2f 02 f2 59 ca dc 24 e1 54 ff -15 f8 06 f2 53 43 50 0e 13 b5 be 43 c7 b5 ae 7e - -# Encryption: -00 c4 e6 c1 0c 25 5e 4b eb 2b 31 c1 65 68 46 b9 -7c a2 3a 3b a3 2a b1 9c 64 85 20 11 3d 70 34 df -a4 6b 0c d2 3d 73 99 a9 3c b0 2f 1e ba 94 83 18 -e3 79 1c 30 6a 2e b9 c0 c5 6d 8f 7e 83 25 0f 83 -ad 49 2f ad f7 83 17 69 f0 2e 18 24 34 74 45 d0 -41 9b 98 b8 e7 95 45 65 32 30 0b 92 d6 e4 55 b5 -a4 eb a8 53 d6 f7 45 92 90 ab 02 31 99 48 53 a8 -c0 7e 54 f5 9c 62 45 37 08 02 89 f9 31 43 eb c6 -61 - -# PKCS#1 v1.5 Encryption Example 10.4 -# ---------------------------------- - -# Message: -31 6c c4 45 0a 53 70 3c 05 8c 90 1f 50 7d 7a d0 -cb 63 96 c5 51 d4 f0 61 82 ab d3 a4 3a ac ba bb -31 59 c0 26 b3 e7 db c1 60 f4 19 53 31 7e 0f 20 -80 8c - -# Seed: -c1 ec b1 16 4b 3e 66 23 f0 d9 b9 c5 eb f9 9e 78 -8b 7b d9 4e b7 43 74 f6 1e d3 14 30 4c af 46 f8 -4a 3f ea 1b a0 e4 7f c8 be 41 97 d1 d2 cd 41 41 -cb 9a 61 5d 89 c4 bd 91 10 ca 6a c9 a5 60 f0 76 -eb e6 9b 74 a1 0f e9 cc db 76 da bd - -# Encryption: -06 16 b8 bc 77 2c 55 64 d4 51 b1 28 d9 b1 36 4c -9e 33 b6 e5 58 ec 67 f2 10 5c 98 00 11 7d 0b 73 -cc ab 9d b5 1d 96 7a 9d 66 32 2c bc 5a 01 74 6e -47 31 dd 7d 04 e6 36 e6 4d 35 f2 c8 6c a3 9d 26 -14 92 17 6b 8d ab db 13 4b e9 4b e5 1b 6c 02 3a -0d 55 fc c1 f0 4c 94 c8 6d 47 7d b4 03 b0 4f b6 -c0 28 50 57 24 79 38 40 cb f4 68 aa aa 91 bc 54 -e0 d6 47 7c e6 48 ce dd 12 76 f2 ad 2d 4d 42 3b -6c - -# PKCS#1 v1.5 Encryption Example 10.5 -# ---------------------------------- - -# Message: -d5 4e a3 7c bf bd b8 18 3b 3b 54 7f 6d f2 d5 d6 -3c 41 5b 1c 44 ed 63 93 c6 97 b4 d9 3a 97 fa 0d -2f 4d 30 0a 68 e9 8f 7f d0 46 07 01 d1 57 9d 96 -83 61 2b - -# Seed: -d1 ce b0 c0 72 d6 88 8f a9 1a 75 7c bf 50 d6 69 -76 bb b7 2e 61 94 62 61 4d 5d ec 0f c0 bb ca bb -07 07 89 c2 b0 89 50 91 b8 fa 9c 7e 75 ab 20 b8 -97 58 f9 7f d0 47 bc 44 a5 68 a2 61 2d 0d 50 1d -15 d4 fb 82 e7 75 28 79 69 49 f3 - -# Encryption: -03 c1 38 c7 91 99 b0 b1 70 0b ab 2e 63 e1 d2 a0 -03 1e f6 02 f7 dd f1 ed 3a 16 1a 5e 70 f1 64 51 -da a1 01 f7 4c dd 65 47 a7 c6 52 c7 32 9b b1 73 -7f b1 4c 1c c0 c0 c3 e7 61 2a e2 0e e0 21 ab 21 -d7 0b f9 51 7b 4d 33 a9 d8 09 61 2e 7f 42 68 85 -b7 9b 31 2e 26 6e 42 b2 02 b5 71 c6 6f 9a 10 7b -8f d7 c5 6c 05 0a 8e 1e b1 89 56 db 06 a0 20 9d -d1 6e f2 d9 05 24 db 87 91 7f 34 00 6b e6 b1 5a -13 - -# PKCS#1 v1.5 Encryption Example 10.6 -# ---------------------------------- - -# Message: -f6 4b 25 11 cb e3 cc 65 81 - -# Seed: -da ca 19 63 cb 3d e5 24 57 79 e9 64 77 ff da 27 -7f 4b 92 3f a9 a8 d9 38 5d 52 31 69 23 3f 58 79 -a3 c9 fc 7a 38 e1 b2 08 c3 2d e4 0b be 1d a0 77 -47 1e 61 c8 b9 b7 09 3c 41 b0 a6 5c 99 64 32 d6 -45 52 11 84 a6 6a fc b9 6f 07 a8 f8 ee bb 6e f8 -17 e0 27 ee 2f 37 95 45 23 9e f6 f9 c1 d0 d8 60 -e8 21 44 ec 71 59 7f 24 6a 83 cc f6 60 ea 4c 70 -ee 1d f0 14 ef - -# Encryption: -05 08 ed 84 5c 96 23 8e 3a 07 e8 ec 02 7f 7b 09 -8a 83 f0 3e ac 1f ec 42 6f 4d 60 05 b6 0d 07 35 -db 05 37 08 2f 23 b7 50 f6 db 54 88 21 41 81 e1 -14 cf 1f 72 07 41 9c a2 93 75 0a a7 66 fa 7a 5b -9b e0 0e 37 29 2c 23 23 1c 6a b3 be 2d ed ee d3 -21 b0 f9 cd 83 2c 5e db 41 67 7c 1a b9 83 e7 e3 -eb c8 b5 19 93 82 1d 76 df 2a c2 29 8d 8b 80 ab -17 c3 8b 38 53 f1 8f e3 09 cc 7b f7 c4 a2 c2 7d -63 - -# PKCS#1 v1.5 Encryption Example 10.7 -# ---------------------------------- - -# Message: -85 26 49 01 52 06 e2 a4 09 78 76 f8 ab b9 b8 46 - -# Seed: -03 4f e3 4e 20 e6 06 a8 dc 7c bc d0 d6 ab 3e 07 -97 c5 dc 4e d7 86 8e dc 79 59 89 3e 58 13 7d 26 -32 b2 c5 a2 9a 81 35 c2 4a f6 99 b5 9d 68 10 3a -1f 42 33 93 e3 88 6e 3f a8 54 e3 97 21 50 19 41 -3a f0 b0 d4 fb 1b d6 9b d4 93 4d 4d 1e 2e 9f 3b -9e 7c 46 d4 98 4f e9 e7 a3 7a b2 f1 c7 8b 0b 8d -9c d8 fa bb 3d 18 d4 c5 06 e2 fd 3f 85 ae - -# Encryption: -01 6f bf 2a 7d 36 80 71 cc 7b e5 94 49 35 4b 9d -e0 5a 85 e1 bb 97 b2 51 4b 52 b8 d1 f3 e2 69 94 -e1 2c fe da 59 e0 58 a2 f3 c8 79 23 50 c0 68 41 -7f 99 44 1b fe 74 17 e0 b5 31 6e 16 3b a8 d1 f9 -e3 2c 59 a4 44 98 82 f4 7a d9 b2 4f 68 76 d4 78 -d3 f5 b7 d2 75 35 73 e3 f6 97 bf 64 c7 b3 ac 22 -28 ce 69 e7 5e 8e 14 ab 93 f2 19 78 05 9a 14 3b -87 7c 6d d4 21 b6 e2 0b 07 35 a5 36 05 55 2a b0 -a8 - -# PKCS#1 v1.5 Encryption Example 10.8 -# ---------------------------------- - -# Message: -f4 fb 50 be ab ec ba 77 e7 1d d8 d1 6c 97 5a 86 -f6 19 ea 7d bf 41 96 9a 24 ba e2 b8 42 c2 69 e0 -b4 d6 a2 9e 82 9d be 2e 49 79 9c 9e d9 71 a3 03 -35 e6 ed 9b f3 9d 12 4b e0 f8 - -# Seed: -9d bd 92 da ee b8 2b de 81 6c 59 3f 70 6b 15 92 -56 85 22 bc a0 79 7f 9e 81 1d d9 dc 0e 89 6e 98 -4a 4a 9a ce 77 de f5 a9 25 0d b7 95 81 af 33 fb -6d e2 42 7d 1a f6 a5 f6 92 9f a8 b6 7b ad 02 3f -04 b3 ff d2 - -# Encryption: -02 92 ed fb ac 38 e2 22 45 45 af 82 86 23 27 63 -bc b1 8b ae 13 70 97 99 e3 50 77 58 d0 14 1a c2 -97 6f 30 b8 54 67 d7 83 ab f6 fc 71 df 61 9e 1a -59 e6 23 4f 27 b6 32 fe aa bf d9 85 33 77 35 4d -93 3e f4 ec 59 94 c0 d5 0d 95 2e 0e ce 0b e1 be -4d 38 f1 1f 66 e7 c3 da 88 c8 3b 4b ed cc 06 2e -09 f9 af 95 ea ca c0 09 9c 52 5f 24 1e a7 d5 65 -e1 b7 68 cb 97 08 f3 bc d5 91 77 b6 76 6a 37 34 -88 - -# PKCS#1 v1.5 Encryption Example 10.9 -# ---------------------------------- - -# Message: -76 91 3e 84 8f b7 b9 fa ca 91 ba f4 f4 42 01 06 -a9 4d 6c e2 5d 14 97 fc 4e 7f 85 96 54 79 5d 7f -24 39 9f 3a 12 08 af 02 8e 61 67 8a 6d 19 a1 86 -40 b4 d5 0f 75 55 86 00 - -# Seed: -9c ee aa 26 09 ba 90 eb 61 e4 f7 49 c4 cd a0 1a -ea 23 68 81 76 2d fc 15 0d 97 c1 1e b6 44 0c b0 -57 e5 3c 3f d9 b3 9e 56 0a 46 e9 d3 fa 3a f3 fe -e5 ee 2d 02 fa 42 49 af 99 98 f5 3e d0 4d b0 10 -e9 6d 8a 01 ff 6b - -# Encryption: -01 96 30 89 c3 43 ed 88 b5 6d 6a cf ef bc 65 5a -37 cc fd 96 20 3f 21 87 64 69 5a d3 10 c0 b2 66 -65 ee 74 5e b0 10 fc 83 be 8c 20 64 5c 43 47 dc -d9 44 65 5d 9f e6 cd 98 77 dc 70 e5 c1 88 cf c9 -a6 6e 71 da 74 5c d3 e1 a7 b7 f5 a1 b2 5b 4f c1 -47 0a df bf 7d 8e 45 fb 10 7c 5a eb 50 ea 8b 56 -e0 4c a5 5b 9b 65 2a d8 34 d9 c9 65 77 b6 42 ef -33 f1 64 d4 93 1f b8 9e 0c 8c 6b f9 17 08 fd a6 -db - -# PKCS#1 v1.5 Encryption Example 10.10 -# ---------------------------------- - -# Message: -c3 39 f8 57 e4 d0 23 1f a3 7c 06 f0 95 6b 4d 53 -a6 c5 8e 06 10 d8 da 43 17 dc 84 11 d3 a0 f8 98 -49 b9 4e 8d 7c cd b0 c7 d5 33 0c 25 - -# Seed: -24 90 81 6a c9 69 76 ca 72 5e b4 98 e2 ff 04 0a -fe 3d 64 17 d3 2e 4f fb d9 fc 9e 3f a6 8c e8 49 -c8 81 be 37 9f 17 50 4b 97 e1 e0 d2 2d 32 ff 8d -fe 76 bb 45 49 f7 13 b5 b8 d8 70 ed 36 59 dd d3 -98 4b 6f b3 9f 6e bd dc 11 77 ad 69 8d 90 44 39 -68 ab - -# Encryption: -00 b5 fb 7b 1e 9d 71 df 8b 16 c6 3a 1a 49 6e 6f -7b f7 72 86 4c b4 11 55 2b 50 e0 b7 f1 5e 45 97 -16 f5 64 62 43 68 76 33 a9 10 6c 34 6c 8c 6b 7c -fa c7 50 b4 56 6b 1b 88 aa c0 ac b9 16 c0 7a 78 -0b e0 6d f7 97 5c cd 8b 72 60 78 68 7a 8e a5 d3 -90 3e 04 ab 1d 23 dc 9b 1e d3 60 00 c9 bb c3 dc -81 61 e9 48 3a 18 ab b8 64 1e bb 1f dd 02 66 c0 -84 bf 0b d0 9c c9 4e eb b9 28 3c 5a 5f 74 e3 60 -13 - -# PKCS#1 v1.5 Encryption Example 10.11 -# ---------------------------------- - -# Message: -47 58 65 a5 7b db 91 ad df 77 7c c9 d0 a1 7a 71 -a9 f9 71 0a 93 1b d0 c3 14 9b 23 91 a3 53 - -# Seed: -56 2f 79 70 94 6a c4 cf 05 ed fb 26 34 16 7e 14 -d6 65 8d 24 cd ae f7 5b 40 7c 90 04 81 8e fa 75 -d1 64 5e 81 52 d1 fc 80 d6 99 df e9 9a 27 a7 df -99 7a 8a 66 47 5a af ce 41 95 98 e2 a1 91 99 fc -20 53 e3 ac dd 07 fe c8 ba 61 f2 b0 3e fc 7d ee -d8 15 cd a8 95 2e 21 e3 c0 b9 a9 35 2a b3 6f 5e - -# Encryption: -03 e2 68 d7 d1 80 d0 3c 7c bc 85 07 ed 1f 83 0e -d3 7a 79 95 71 2d 7d 91 57 32 24 3d e6 85 d5 bd -99 a1 4a 8e 86 a6 7c dd 60 dc d9 0c 33 92 10 83 -5a 46 ce ac 19 36 ab 3a a9 c3 81 88 2d 76 94 a8 -38 3d 68 98 e2 73 44 bd 15 6f e9 28 2c 71 32 26 -25 d6 8d 30 70 ef f0 1a c8 d5 95 f6 48 6d 79 b7 -88 e3 69 12 fd 3c cf 28 4e dd 5f ce e2 40 9d ca -7d 4f 29 cc 18 2a 78 47 8b d3 ea 23 62 11 25 10 -a5 - -# PKCS#1 v1.5 Encryption Example 10.12 -# ---------------------------------- - -# Message: -9e 1e 53 f9 86 59 9d a8 98 d5 6d c1 c7 55 6f ef -ca a3 39 5d 84 50 d5 2b 3b a7 - -# Seed: -0b 17 63 cc 34 0e 6e 39 78 62 6a 06 d6 ef c4 0d -ed 73 db 53 5a 82 2e c0 4c 99 24 d9 ec 40 d3 85 -20 15 d7 e1 02 9c 13 93 ad cf 01 50 30 8a cb 27 -3c 36 35 68 28 a4 77 fc f9 a2 9a ca b9 09 35 70 -42 50 26 da c1 4d a6 cd 30 4c da a5 4c 9a 4c 5a -99 4e d6 8a 5c ea c7 e0 81 de c4 64 6e 23 7e 47 -1e 52 5e f8 - -# Encryption: -06 d5 19 a7 30 ea 5f 54 9f e1 9e 30 1b a5 15 2d -10 3a 3e ad 3f 89 ab 35 16 ff 7b 34 4c 4f 72 a1 -c2 6a a9 0d 5a 01 a2 a6 51 93 d3 cf 63 41 e5 9a -31 fd 2d 7d fe 43 5c 09 84 d1 bb e8 11 32 01 0f -43 58 ee bf e8 3f af 24 1e 7f 35 af 98 b7 c7 ab -91 e4 f0 e8 a3 2a 2f 57 f0 7f 49 d5 c2 1f 1e 13 -80 ba 0e 17 9a 38 d3 a2 ca 46 4f c1 4d 2b 74 a0 -3a 88 84 aa 85 7b 66 01 47 02 b1 bc 4e 7c c5 e1 -eb - -# PKCS#1 v1.5 Encryption Example 10.13 -# ---------------------------------- - -# Message: -1a e3 1e 0c be 44 97 ba 43 c5 d1 5f 53 5f e0 18 -84 1c 73 14 57 67 a6 a4 c8 - -# Seed: -8f f0 fa a7 a2 b4 ff 55 3c cb b2 0f f3 10 ac 5e -0e a9 28 18 56 2e c9 a0 60 64 f5 de 79 86 b4 f6 -c9 ae a2 b9 f0 11 42 38 e5 a4 99 a8 ae 20 ea e4 -02 1f cd d8 f0 60 c9 93 a9 bf 64 2d a0 25 67 39 -33 48 08 e3 88 e1 da 82 37 27 8b f4 f4 7e 05 01 -5a 8b 88 c5 42 0c eb c8 bb 37 ee 43 52 83 7a f7 -64 70 18 41 97 - -# Encryption: -04 a2 10 f7 6c 0f 84 93 99 09 53 58 98 86 f6 2c -1c 48 25 01 2a f4 4b dc f2 c9 9b 32 a7 0a 17 f7 -64 a3 a9 7b 2b 04 7e 39 d8 0c de 15 4e be d5 d2 -81 3e e8 4a c9 c8 d6 ec 6a 96 f4 02 db b3 26 d5 -a6 e9 c0 f7 87 c1 5e 98 23 c5 08 b3 23 5f 3a 00 -8d dd cd db 07 9e 80 ff 50 fe 37 25 4a 0c c4 68 -29 7e e3 32 53 a7 4c 1e 03 70 26 05 69 58 ad 07 -78 e0 aa 12 50 df 1c 14 85 7c b0 d7 1a a6 93 7e -31 - -# PKCS#1 v1.5 Encryption Example 10.14 -# ---------------------------------- - -# Message: -a6 e3 d1 07 03 21 d8 ff 76 b8 5c 70 93 fa a0 42 -83 - -# Seed: -d1 60 b1 2c 76 62 2c 3d 34 d8 55 87 e6 e8 1c f0 -54 61 8a 34 6b 67 52 d5 36 9a 71 c4 92 35 7a 13 -4b 7f 67 f3 34 a4 f3 b3 28 ba a9 f0 07 18 47 d0 -da fd ac 22 5d 7b 7f 07 16 18 ea 86 81 fc d2 d2 -30 5c 2f 64 63 1e 62 31 85 fc 09 96 e6 1c 84 f4 -18 0c 63 7b f6 ea 2d 06 03 75 f1 6a 65 e5 b1 e2 -b8 65 28 5d a3 d8 fb 1b 6a 60 ea 36 e1 - -# Encryption: -0a 70 03 b5 86 1a 85 a8 f7 2f 19 9d c6 5c 17 fc -58 a9 24 bc c4 08 19 e2 8c 95 83 e8 21 03 8c 00 -05 36 5e 90 9e ee 4f 32 66 f5 9a 84 e3 25 b1 be -a9 d2 81 b4 82 3f 2f ce 44 15 3f 03 17 0f ad cb -16 a2 79 b2 c9 58 7f 6b 79 ef fc 55 a3 c4 34 e0 -bc 5d af e9 d4 03 26 48 aa e7 e4 ed 1d 7f 14 1b -fe 72 26 83 fa 32 c8 9d dd 67 3c 3f 0c 03 c8 54 -59 89 0a b7 fb c1 d9 a8 14 bf e9 b0 d1 2a b1 7f -51 - -# PKCS#1 v1.5 Encryption Example 10.15 -# ---------------------------------- - -# Message: -d0 bc 89 03 9b a1 9e e5 0a 73 82 98 4e 42 8a ed -88 61 4f 78 98 13 01 89 16 e2 e7 eb 0d b8 3d a2 -8e c2 3c 04 a0 c2 f7 6a - -# Seed: -c6 4d 10 a4 b5 2f 49 0a b6 2a 60 38 b3 2b 23 c6 -3a 1c 85 97 0d 93 45 14 83 94 cd 35 cf d6 f6 b1 -59 0f ce 8c 67 5b ee f8 7c d0 34 5e 5c ad e8 95 -09 45 56 54 26 b6 b2 83 03 b0 b0 39 32 98 cd d9 -5c 88 1f a0 65 33 ca 9d 2d 27 14 d0 f1 37 85 a6 -1b 3a 17 a7 81 40 - -# Encryption: -00 8b 19 75 58 ca 4c e5 90 14 58 ab d8 e8 fd 52 -d9 89 96 0f 01 c2 16 ef b5 81 f8 61 14 8d 1a 2b -44 eb 0b 7c 15 dd c3 45 dc 83 f9 03 7d db 8f e2 -ea a2 cb ed 9b 1c 1e ee ae b8 65 bd 29 f4 4e e1 -47 8c 95 e9 fb f4 44 82 8e ed cb c0 17 02 00 de -35 49 b2 2c 11 e4 b4 33 79 8b 9d 63 bb 49 f0 b0 -2d af 56 58 ce ed ea a9 3c 0f ae b9 44 65 38 ba -92 eb 17 c8 5d b5 ee a2 04 ba 2f 49 c3 ce 65 bf -13 - -# PKCS#1 v1.5 Encryption Example 10.16 -# ---------------------------------- - -# Message: -ce 0a 4a 59 39 f6 aa 26 3b bf 8e 1e 5e 94 31 03 -56 ab a5 75 59 c4 1b 39 44 27 70 b6 1f 6b 3c 9b -5f e7 27 f3 19 52 28 08 d5 80 19 - -# Seed: -27 cc e2 d4 3c 71 31 8e d4 fc 8c 0b db 9b 79 13 -53 19 9f 3d 89 fc 12 ac 47 fd b6 d8 8b 44 c6 54 -5e 9e ee d9 f4 c6 85 15 d4 f5 30 b8 13 7d 77 45 -71 3b ad 0e bb 70 52 23 1f 6b 4c ed 18 7a ec d1 -e7 a1 69 d8 6c bd 13 d5 0b 78 be 27 c6 54 5d 81 -92 e0 ec - -# Encryption: -0a d3 ae 7e 5a 98 65 2c 1b f3 45 c4 91 90 3f 55 -17 c6 11 ac 31 00 05 87 7f a9 1a bc ee 64 85 f2 -77 8a bf 0a 6c 73 87 87 37 63 9b 26 72 fd d0 0a -39 65 d7 d3 d8 d7 68 8e 77 b5 45 9e 14 5e ce 64 -a9 a5 2c 37 97 f3 61 07 c9 36 8b df 79 90 f3 fb -6c 5c ff 59 f4 f8 a3 d4 90 93 df fe 74 06 c9 10 -aa 57 23 22 8d ae 5a 9b 29 a4 cc 47 69 af 8b d5 -fd 6e ce 88 58 a2 9d b1 b1 9c 08 1b f0 d6 b0 dc -78 - -# PKCS#1 v1.5 Encryption Example 10.17 -# ---------------------------------- - -# Message: -03 bf b2 59 bd 92 46 de 3f 71 c3 13 9c 72 85 74 -b4 4d 97 ad 57 bb dd 67 01 94 95 c2 a2 00 41 39 -26 34 e3 1a ad 63 f6 3b - -# Seed: -5f a4 bb b7 0e 1f 9e cb 5e b2 14 7b f4 59 d1 d0 -64 43 f0 25 c0 8e 36 4c cc 1b 16 0c 16 41 6f b1 -74 b4 4b 95 36 38 a9 68 8c 5e a2 d0 60 17 1f 30 -54 f3 ca 3f e0 13 b9 e3 18 8e e3 9d a9 1f 80 16 -d4 b7 33 18 79 35 1f 32 2a e5 29 86 4d 90 74 09 -8a a2 51 6b 44 ca - -# Encryption: -01 78 e3 a0 17 ed 2f c1 18 bb 2e 03 28 be b2 8a -98 c8 53 b9 e5 a5 f8 30 80 c0 f1 01 7f dc a8 37 -92 07 72 2c 25 73 7a 89 15 e0 eb 72 c5 22 85 e8 -8f 61 30 a1 cf 56 ad 1d 96 ca 2c e4 b7 1e c3 68 -94 7b d0 71 f8 36 59 10 c7 92 57 5b 8c d6 fd 27 -e5 23 e8 59 65 dd a9 22 82 d5 df d1 c0 64 ea ab -6a be ac 65 e1 6a e0 4f 0d 40 b3 bb 68 41 0b 92 -74 df ee a3 2a 43 f9 40 83 c1 07 80 35 3f 43 e4 -3c - -# PKCS#1 v1.5 Encryption Example 10.18 -# ---------------------------------- - -# Message: -16 2c ca 9e d4 70 8d d1 03 40 e1 94 c3 5c 0a 5f -a4 9a 5c 3b 5b 24 71 71 20 3c a4 8a 79 e5 2d ff -40 f2 bc a9 9a - -# Seed: -4d 73 ff cd c2 69 43 a8 70 78 23 47 8d a3 1a ac -01 27 4b 17 17 c5 0c 6a d0 c6 2e e2 bc d5 57 95 -2e f1 3f 15 ff af 66 bb 4f 45 39 99 11 c6 d6 5a -d1 87 57 2b c1 eb a0 d2 86 cc 45 aa 49 32 e7 3e -47 0c 5d c8 29 39 04 02 5c 86 3f bc 96 22 37 04 -90 c9 1c 87 40 b0 94 d8 f0 - -# Encryption: -04 2b ce 0d fc ec a9 ff 05 a6 e3 f7 4a 6a 70 cd -cb e0 de c8 1e dd c8 8e 46 7f 47 bb 76 0d a4 4c -79 4d 3c dc ab 93 92 49 f8 49 d1 d4 39 56 64 1b -0b 79 c6 86 1c 5f 71 5b 9d 8d 8b e9 f0 76 6a db -3f 18 af 7d b3 6a d9 5f fc d7 e0 fa c1 62 85 23 -e8 f6 9a de b7 ff 50 94 a2 b5 bf 92 b9 d0 ef b1 -11 8b 85 39 26 25 fd 56 f8 8f aa 0a 16 d5 47 30 -fb c5 ca f1 66 82 e9 e4 1b 7e 79 d2 02 2f 7c cf -96 - -# PKCS#1 v1.5 Encryption Example 10.19 -# ---------------------------------- - -# Message: -8e 1b 52 cb 4e 00 77 27 c4 b5 f6 5d 78 47 f3 49 -16 89 1e f9 c7 3a d1 8c f2 71 f8 9f 18 2c 69 3e -52 89 dc 31 da bc 34 cf 7f 44 fb de 57 9e 64 51 -69 ec ba 6e 4e 87 7f 7d ef 44 - -# Seed: -ba 14 74 8e 6d a7 b6 ac 18 33 32 32 95 ad b5 42 -2d bd 19 e2 ec 72 df d0 aa fd 7b d0 7b fb 97 e7 -db 10 8a 3e aa dc ff 67 b6 7e c7 e4 c6 70 04 c1 -78 34 6a 12 5d d3 b6 ca 55 23 70 59 4f 7f 42 cb -33 4b 44 85 - -# Encryption: -09 4b 40 30 e3 0c 8b 46 2e ca 00 f1 6b b1 70 19 -d1 ea 31 25 f1 c6 4c 67 1c b0 0d 46 e3 ad 87 84 -28 52 b2 01 49 6e e2 b3 d5 42 28 93 a8 0c 66 a3 -0d a2 c9 f1 a3 2a d4 d4 e7 73 77 43 ca 1b 78 ef -7d 4a 63 c5 e1 e0 be 7e 51 88 cc e9 42 95 69 74 -ff d4 81 e6 47 83 44 23 0c 37 da 5b 25 f6 b5 99 -a5 9a 05 80 f1 a0 00 c2 59 54 f3 a4 63 f2 89 5f -32 b0 5c c0 88 21 b1 a0 23 60 9f 18 ca 7d 44 9c -b4 - -# PKCS#1 v1.5 Encryption Example 10.20 -# ---------------------------------- - -# Message: -82 ff 62 af fa d8 00 30 94 cc 65 35 - -# Seed: -1c 7f 21 fd 02 09 79 07 40 5e aa 77 ae 72 88 65 -72 1d 93 86 f5 aa bc 2e 0a 95 f3 ed b0 5d 46 e2 -33 79 3b a1 a3 88 e4 b0 dd a0 0c c3 2b 94 8a c2 -65 ae 6a 2b f2 c3 90 a4 dc ce 11 0d 5e 86 64 47 -28 f5 37 81 36 47 6c f7 1d c7 ba ac 50 cc 41 c2 -01 48 dd 37 d5 f7 0a 81 2a 29 4e 24 2d e8 03 b4 -8b 63 40 f4 28 d3 c9 bc a9 6f 76 6f c4 f4 41 67 -e0 4a - -# Encryption: -00 30 3c 35 2e 1f dd 2a f8 a8 e3 a1 69 b5 da c5 -43 45 ca a3 35 a7 1a 37 e9 38 bf 98 47 08 86 56 -84 18 ae 98 d0 aa df e7 9d 0c 65 1b 3f 51 6e 70 -f1 01 74 fe 63 22 cd 37 6d a0 2f 22 6d 15 b3 6a -bf 6d 1c bd ab 6d d5 65 4d 99 25 f7 25 3c e9 91 -51 2a 44 e9 fa 15 27 12 d7 b8 db 7f 18 33 75 80 -fe 51 dc 32 a0 58 2c e2 60 53 f1 b9 49 28 69 b9 -c4 7d f9 28 39 c0 50 2f 2d b4 cc 4d 0b 20 4f 6f -d1 - -# ============================================= - -# Example 11: A 1029-bit RSA key pair -# --------------------------------------------------- - - -# Public key -# ---------- - -# Modulus: -11 65 47 94 f4 64 9a 97 ac 87 ef 67 94 f6 a6 ff -b5 cd ab 87 02 c2 32 54 fd e0 34 f3 12 9a ad 82 -5c f3 c0 cc 38 80 a9 6f b6 4e 48 d7 59 5e de 06 -c3 1d 0a cb d1 f8 ef 9c d1 f9 f6 f0 0b 24 ba 53 -45 ab a1 46 d4 1c 56 3b ae ce 3b 25 23 df 6a 9f -43 01 8a 5f 08 69 b6 ec 99 34 69 88 6b 5d 23 17 -d5 9c ff d4 ed e9 46 6a 03 f6 df ec 17 5c ad 5a -85 44 30 95 c7 30 b9 8b bf a0 48 9b 91 bb 27 39 -9d - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -11 65 47 94 f4 64 9a 97 ac 87 ef 67 94 f6 a6 ff -b5 cd ab 87 02 c2 32 54 fd e0 34 f3 12 9a ad 82 -5c f3 c0 cc 38 80 a9 6f b6 4e 48 d7 59 5e de 06 -c3 1d 0a cb d1 f8 ef 9c d1 f9 f6 f0 0b 24 ba 53 -45 ab a1 46 d4 1c 56 3b ae ce 3b 25 23 df 6a 9f -43 01 8a 5f 08 69 b6 ec 99 34 69 88 6b 5d 23 17 -d5 9c ff d4 ed e9 46 6a 03 f6 df ec 17 5c ad 5a -85 44 30 95 c7 30 b9 8b bf a0 48 9b 91 bb 27 39 -9d - -# Public exponent: -01 00 01 - -# Exponent: -1d 4c 4c 6e 13 da b2 84 6c e6 85 d0 c4 93 52 5b -b0 ad 35 62 59 6d b9 ad 16 94 5d 44 5c e6 7c 54 -e9 38 f6 54 54 2b 09 34 48 02 91 ac 21 ae d0 98 -e8 5a d6 fe c6 d0 fe 15 4c 3c 34 2b 16 99 9a 8c -ec e7 fa f9 90 b7 c8 ce 87 b6 6f e3 27 fb 35 2e -d0 11 32 3d 2b 81 9a 36 ca be cc 5a ae 72 30 d3 -f8 e0 02 45 af 35 af 80 88 62 e5 4d 92 56 07 ee -8b 58 e6 a9 f3 ad 8f a7 28 fc e2 68 56 c3 67 b1 - -# Prime 1: -04 41 0a b5 54 60 2d 7e fb 0c ce 92 71 a5 22 20 -f2 52 50 02 34 b3 82 02 fa fc 94 aa 26 b4 fb 04 -e5 f5 08 74 9a 44 ef b8 9b 75 78 db 00 7e 03 06 -23 89 48 69 12 80 f7 3c 12 7a 49 30 b4 63 39 ba -d9 - -# Prime 2: -04 16 d3 fd ed 8f 9e 7b 01 9f 67 12 32 0e ec 11 -d8 cc 83 81 ea 86 26 6e e0 3f 00 72 e9 a2 fc dd -80 81 ae 74 fe 27 88 70 f4 fd a2 a0 00 6c 4f 54 -23 9e 24 a1 5d 1a eb c6 7d 90 d8 18 4d 29 5f 52 -65 - -# Prime exponent 1: -04 06 7b 98 7b 5f 8a 8d 56 06 97 4d 11 06 1d 96 -29 55 63 e9 c2 6e 7d 3e 4e ba 43 fe 01 24 4d 46 -24 46 49 1a f4 82 f8 86 a9 6b 6d d1 64 d4 d8 0d -ae 00 90 29 04 5e 4e 13 64 b4 9b 9e df 81 e8 b5 -79 - -# Prime exponent 2: -e1 38 72 e5 6d 84 d7 4a 1e 15 7a e0 b2 3d 30 09 -c8 d6 72 59 16 cb a6 07 31 06 d3 b2 58 92 b6 c5 -33 21 69 a2 54 b7 12 36 63 6b 5d a9 39 a4 47 a1 -f2 20 47 67 54 a7 6d 69 0e 84 af 95 ca 54 eb d1 - -# Coefficient: -02 51 37 ae 5d 25 fe 1d af 9b 38 32 f8 07 56 b8 -6d b5 ca 0e 37 2e 51 63 03 4e a3 39 1f 5e 54 58 -2a 1d d0 47 58 b9 92 a5 a8 e4 6e e1 6f 8a d3 8c -a6 52 27 45 aa 7d f5 1d f8 9f c2 21 08 01 0e 00 -4e - -# PKCS#1 v1.5 encryption of 20 random messages with random seeds -# --------------------------------------------------------------------------- - -# PKCS#1 v1.5 Encryption Example 11.1 -# ---------------------------------- - -# Message: -4e a8 df da 3a 9c 26 70 ca 9b 80 fa 89 71 0a - -# Seed: -96 06 42 1b 97 3a b4 ba 2a e2 2f f5 38 70 7d 7d -4e 56 3e 8f 05 f2 0b c3 38 1f f4 5b 0c 29 19 a1 -b3 46 b0 76 03 5a e7 74 b3 2a f8 ee 56 6c 73 e2 -09 49 68 4e 44 74 80 df a3 4d bb 0c 22 66 61 50 -90 9a 59 e1 bb 22 d0 95 ab e5 02 5a 76 d6 0e c1 -01 c7 80 e8 3a 0f f1 59 46 5c 3e 7a c0 21 2b b3 -8b 2f 1e 0e 6e 0b 54 d3 5f 4c 76 04 c2 d0 93 - -# Encryption: -09 bb cd 8b 63 b2 9c e9 52 26 ec 1d 51 91 2a f3 -97 89 fc e5 e7 7e 7b e6 78 96 c2 c4 e4 c4 37 6f -a4 28 ec 5d 8a 49 7a cc a9 e0 82 1e 1f 6d e1 06 -78 19 c4 8a 51 6f 06 91 cb ea cb b1 9d 1b a5 09 -f0 4f c0 13 36 d9 0f 73 96 b4 3a a2 f2 b5 15 0c -28 a4 5f 35 a9 de 1a 29 73 ea 10 28 67 94 94 0a -b7 9f 12 9e 31 8c f9 7a 5f d7 2b 04 5b 46 6d 66 -6e 5d e0 b7 14 f2 12 a0 b9 05 2a 0c 91 44 8e 52 -0d - -# PKCS#1 v1.5 Encryption Example 11.2 -# ---------------------------------- - -# Message: -c6 e2 57 f3 a1 b3 5b bd c5 cf 42 0b d7 65 4c 52 -b2 52 df 32 c5 70 d4 28 e6 3e a2 - -# Seed: -77 bb d7 2b 7b 8f d2 85 02 ec f7 9f d1 c8 af 8e -bf e2 44 32 70 93 b8 24 79 5e 95 c0 b4 36 eb 41 -e5 f0 f2 ae c4 33 63 aa 2c 08 fc 33 f2 87 e6 53 -80 40 e4 28 0d ba 47 23 e5 32 92 e0 a6 7b 21 ef -77 70 79 85 b7 2b 2e ca de 28 0a 61 fa 73 d7 3d -bb 2f db 17 f7 75 f4 5f a1 75 b7 7c b1 06 7d 6f -93 a4 37 - -# Encryption: -0d 21 49 5c 49 28 c2 6a 92 c1 6a 90 7f 08 33 35 -ad e8 eb 0c 20 b0 b4 5f e0 e0 8e f3 9a e2 4e c0 -b5 05 7e 60 78 dd 7a 1b 9d 10 2c 24 81 85 57 e9 -0b 83 ff da 14 f3 cc 37 3c 84 c1 05 ce ee 71 bc -73 1a 7f 35 71 bd 7b bb a1 d4 f2 3f f4 df 0a 84 -f3 12 99 0f f7 71 ff 11 8f 05 bc fa 22 2f 11 c1 -ea 01 f6 a4 68 ca 5a 87 50 80 40 98 f8 46 a8 64 -30 ea 23 e9 f0 7e 23 48 46 1e f0 0b a6 25 34 fc -e7 - -# PKCS#1 v1.5 Encryption Example 11.3 -# ---------------------------------- - -# Message: -2d 30 7f 44 dd ff 9c 45 35 a0 6e da 01 4a 19 13 -04 fb 3f a8 e3 a2 be 88 bb 3b 7b e9 9f 94 d1 33 -9c 21 9a 51 ff 5c ad da 93 - -# Seed: -5f ab 24 2d d9 f2 92 4b 20 d3 78 a8 87 b5 de 21 -d1 95 76 9c 3b 53 71 c0 0f 4c 3f 1b 63 26 8b 01 -0c 31 f3 2b b8 7c 9a 52 29 e0 d9 30 5f 5f c8 3b -89 34 b9 98 d8 ce df 91 6f 7a 4d 72 68 fe 3b e5 -12 35 f8 be ac 80 0d 4f ff ca 6f fd db 29 da 4f -a1 c7 76 9d 51 - -# Encryption: -0f af b6 1c 37 16 c7 96 69 fc d1 64 52 46 a0 d3 -b0 75 b2 8b 73 82 20 15 a8 ca dc 88 a2 2b 7d a5 -39 43 e2 54 4d e3 96 be ee d3 b0 a9 89 ad 20 a7 -3d dc d1 91 e8 aa 5c ae b6 e9 08 8a 4a 3a e8 40 -67 f9 19 8e 92 4a 9c fe 14 50 b0 18 a6 b6 9d d2 -37 58 e9 25 1c 76 cc ea e8 40 da 2c c6 25 17 39 -e2 3b 9a 42 b6 34 46 ec a0 d6 15 99 a1 46 b7 41 -fd 43 51 1c 73 66 3a 92 3e 37 57 f1 8a 17 1c 3b -12 - -# PKCS#1 v1.5 Encryption Example 11.4 -# ---------------------------------- - -# Message: -1f 03 33 88 55 4b eb fa a0 1c - -# Seed: -9d 81 57 56 74 66 3b 3d 87 7d 4b 0a a4 fd c6 05 -47 0a bc 55 0b 53 52 72 c8 23 70 18 86 7c 50 22 -ca fe 6a 4a c8 37 37 e9 9c 6e ba fe 69 ca a7 fd -ca 70 27 c8 fb c4 37 ec 52 32 ce 2e 25 29 a0 f7 -03 e2 01 f7 e5 10 32 35 ba 65 a6 47 94 f1 90 ef -42 54 93 b6 48 ed 24 a2 19 7d 0a b0 4d 81 c7 b3 -35 a2 da fd 6b 59 c9 43 a0 9b 48 ea c3 5e 35 59 -62 91 f5 f7 - -# Encryption: -00 1b df 33 93 34 2c 38 13 ee 3b 87 07 ea f5 46 -47 ba de 4c 71 8a 4b 64 54 78 12 e0 10 c2 b7 46 -c8 8c da fd c3 16 f0 36 9a 6c 43 0a e7 e6 c5 0f -05 d5 45 c3 f7 98 de b1 d9 a5 bb 69 c5 91 39 33 -c2 d7 79 2f ae 9d 42 ad 76 49 4d c9 a3 e2 7c 21 -1d b4 ef 19 85 18 7a 6c 4d 28 1c 47 72 17 74 a7 -a1 1c 12 18 d4 dd 26 7b 57 48 58 77 aa 75 1f 6c -28 19 f8 1b 50 54 a2 8a 26 a5 3d f3 ea 34 82 b3 -40 - -# PKCS#1 v1.5 Encryption Example 11.5 -# ---------------------------------- - -# Message: -f7 1b c7 37 4b d5 9c 37 77 59 76 f3 35 24 4a 36 -84 3c 59 e7 48 9a d2 8b 1a 82 2d 2d 7d 0b 9a 6f -e9 ac 5b f4 36 82 d6 3d 63 6e f6 - -# Seed: -a1 ff 98 44 a7 3e c4 b3 be fb 1a 86 03 52 cf 9b -75 fc 66 ff 47 9a 2d ed 59 98 84 5a 79 77 3a 8c -62 06 a3 64 36 c8 80 a5 5e 18 71 18 35 45 6d 91 -45 4b 5b a1 32 07 8f 20 37 fb da 72 86 25 1b ad -d1 2d 0a 97 81 af 3f 58 97 cd 94 7b 1e 14 25 f9 -70 55 09 - -# Encryption: -09 3f b6 85 26 ce ad 01 0a 54 d1 16 cd 7d 60 35 -09 9b f1 ab ff e9 33 1d e3 64 86 f0 53 a8 02 98 -e4 ab fa b4 0d 3b 03 a3 e7 e9 25 59 73 38 f1 70 -3b 04 53 5a 9c 87 c6 58 36 f1 61 11 aa e8 89 e6 -c8 d9 0a 24 07 d4 41 a1 c2 a3 11 cb d9 46 11 a4 -2e 93 c7 3a 3d 21 48 3f ad b8 f4 e2 46 d0 89 f1 -cf d7 08 52 b4 dc 77 8a 60 d1 52 d3 fc a7 5f d6 -06 67 04 e9 33 bf 99 f5 bb 77 af c9 a9 cb 3b 8c -b5 - -# PKCS#1 v1.5 Encryption Example 11.6 -# ---------------------------------- - -# Message: -46 87 83 d4 ea c8 81 34 32 04 85 47 ce 24 1f 72 -db 1c 85 ce 4a db e3 ee 2c - -# Seed: -c6 e3 26 30 ed 90 d0 af b1 68 c0 8b 75 22 59 ef -4b 9e 81 17 62 f7 cf 4c 53 5c b4 a0 a0 4b 1d 43 -65 4e d4 fa df c7 dd bc 3a ad 03 14 07 8b 22 6c -4f 3e 97 84 45 7c 91 c7 76 8c 5c 37 b7 60 08 93 -2e 8d 04 57 85 05 73 ce 6b 41 a4 3c dd a9 70 03 -18 36 84 0e 4e 60 a3 48 7b 47 a1 85 c8 6f 8a 16 -f6 f2 21 d0 a0 - -# Encryption: -01 71 a1 2b 00 cf d1 09 67 4e 5b f7 f8 43 47 fd -a3 fe 4a 8e a2 f4 8e 0d 6b 6d 94 b4 9f d7 bd fb -26 e3 24 00 a7 12 51 ab 84 22 06 92 1d 83 72 3a -89 ea 09 93 00 25 92 0e 3e f8 a8 87 d2 bc 24 15 -a7 f1 ed 37 ba 8a 5d 03 ef 92 6a ce f6 11 90 00 -1c 5e a0 f8 cd 92 02 0c d8 96 67 e9 ea 5f 7f 2b -15 37 8a 21 0b 8a e9 14 81 90 98 da 1c be c9 c5 -43 a2 63 30 0f 99 4f b0 b4 92 85 71 40 1c 20 2b -d6 - -# PKCS#1 v1.5 Encryption Example 11.7 -# ---------------------------------- - -# Message: -af 63 1d 76 c9 7f d9 95 e4 94 aa 9b 4b d7 58 c5 -c6 72 c5 e4 15 8f 3a af 87 4b - -# Seed: -40 6e 1e 23 f9 92 bb 07 62 12 5c a4 63 bd 0f 2e -fd f1 bf cb 08 2a 8d f5 06 af 5f 72 70 c3 9f de -01 d9 ee d3 22 66 61 db 22 a9 c4 04 b7 d7 65 fa -38 4f 9a d4 f5 1b 93 69 d7 4b 0e 37 70 66 31 bc -65 36 f6 55 5e c7 fd eb d3 48 ef 3c f5 f8 a8 77 -f6 06 43 7c 27 8c b8 16 3a d3 49 38 4b aa e3 2f -31 b6 86 e0 - -# Encryption: -01 ff 8f e7 9a f3 18 d7 56 f2 84 08 3b 51 b4 3b -66 aa e8 3c 6a a9 1a 99 93 4b 4d e8 4b d5 fd 24 -fa 8d 07 c7 55 14 74 66 5e 62 36 0a 65 98 4e 67 -a4 85 6c 3d bd 2c 75 f2 46 e2 22 22 e9 f4 b9 69 -51 67 26 ed 28 7f 42 3a 67 47 82 1f bb b7 fa 17 -62 35 c8 50 a8 61 f2 99 f7 39 4c 2c 43 07 b1 02 -59 09 40 fe d1 20 6a d5 9b 9d d6 44 4e 1e 19 6e -94 73 25 22 4f fa ca 06 9e 9c df 8c 62 02 69 07 -7d - -# PKCS#1 v1.5 Encryption Example 11.8 -# ---------------------------------- - -# Message: -73 cb 53 90 82 fb 06 dc ae 3c 20 68 e9 89 e7 c0 -d8 ff f0 fb 34 0b 6d e8 0d 0b a5 d1 e0 06 4f 22 -13 92 8a 4b af 20 a8 03 48 af 3c de 9d e6 3f 88 -6d 63 e5 6a 3e 32 cd 8e - -# Seed: -28 e2 a9 7c 7e 9e 03 3b 49 aa dc ee 8f dc 07 ed -fd fd b9 50 35 4b 70 8c e5 df 84 8d 1b 51 aa 2f -4a ff 99 74 16 01 81 42 29 47 b1 33 76 4c 5a 40 -06 57 04 6a 49 36 3f fd f1 f9 3c a4 8b 3e 52 93 -7e 1f 38 fb 50 fb - -# Encryption: -0c 72 e6 95 48 c3 4e ca f2 48 b2 dc 6b b6 43 87 -f4 f3 35 0f 66 8e 59 01 35 60 80 8c 41 3f a8 35 -fd 36 0e 04 e4 74 7a 00 31 c8 a6 4a 9d 7a 07 b3 -63 fa d2 93 b7 03 a7 dc 99 0f 80 6f b9 0e 39 12 -21 a1 16 df 10 8f 54 6e ae 51 71 6b a0 45 01 ab -77 7b 0c 2a 17 71 2f 71 e4 06 27 5f 01 73 77 cf -24 88 c4 35 ef 6c 6e 7c 45 cd b9 8f 24 47 7c ed -18 0e b3 ef c8 70 3e 96 38 26 bf b3 44 f1 6e b4 -a1 - -# PKCS#1 v1.5 Encryption Example 11.9 -# ---------------------------------- - -# Message: -f2 f9 85 b8 03 12 73 cb 5f c8 9a 31 dd eb 4c 67 -a4 e4 f3 8c 09 d3 02 87 42 09 b3 9c 69 b7 1f 84 -95 88 86 8f a5 f8 - -# Seed: -c1 20 44 6f 5b dd a0 6c 63 73 8f 18 15 55 95 f6 -2b c2 65 67 28 4c 35 03 65 91 cd 5d 75 3e 4e f7 -90 0d ff 33 bf dd 3b 10 8c 10 2d 08 98 80 c7 b6 -9d 86 e9 ce 3d 68 8c da 15 6f d6 a9 92 31 05 8c -c3 18 33 96 38 09 46 e8 a9 69 a7 fc be 9e dc 95 -9a 0e 50 45 32 ba b8 ea - -# Encryption: -10 e0 bc 14 ba 16 01 26 98 cc 76 cb 82 04 5e 2b -fd bc b2 b1 18 f1 83 06 79 59 d7 13 7f d5 0f a8 -8f e4 f9 ce cf 66 31 a9 9c cc ab 76 cd b7 74 4b -ab d0 6b 2b ed fb ca 77 24 da fd 91 e6 df a8 8b -ea 2b 44 a8 cb b0 62 19 b1 5c 2a e7 68 72 fa d2 -88 e8 43 8a cd 39 5c e5 cb e2 8a 71 2b 67 f5 61 -a1 78 6d 75 34 3e d9 ad 0d 0a 5e b6 fa ed 07 b0 -6a ef 03 31 8f f1 af e4 72 db 4e e3 e2 1e c1 29 -33 - -# PKCS#1 v1.5 Encryption Example 11.10 -# ---------------------------------- - -# Message: -39 87 2c fd 6c f7 4b 4c cc 1a 70 d9 73 b3 18 99 -a6 7a ee de e5 d6 71 e0 5b d6 01 12 e6 45 12 bb -e4 3b b8 40 - -# Seed: -68 ac 3f 96 97 b7 50 75 4f a7 53 2e 41 61 c1 20 -18 e0 33 a6 02 51 c8 dc a8 38 78 16 f4 23 79 ab -97 8e 15 57 8a e2 e9 4c 17 76 48 8b 0c fd ff 18 -6f a6 d7 98 88 f8 16 9e e4 49 ea dd c8 e7 f5 a6 -58 d0 99 7a 93 4f 58 6e 31 f7 47 30 be 60 3f 1e -e6 2f a6 c0 8b 0b ff ae 6b 88 - -# Encryption: -09 b7 70 07 f1 5d 65 9e fc ca ca 66 c1 e7 d9 62 -e0 47 a1 e1 49 e5 2d cc 0e 1a dc 9e 18 3b f7 3b -5f 23 48 d3 43 28 24 1b 40 7f 61 82 2f 6d 57 e1 -ab b3 22 d3 02 f4 53 0d 2c b9 a4 1a 27 70 23 8a -1b df 87 5e dd 79 78 10 d9 04 e9 7a 4d 7c 51 51 -32 d6 ab bf 3a 4a 40 74 86 dd 00 4e a3 8a ff 8d -4e d3 82 5f e1 31 42 f1 36 fd 1d 71 3e 80 e0 cf -22 57 69 b4 19 cc a5 4c 15 6e 54 66 8b 30 6b 5f -2a - -# PKCS#1 v1.5 Encryption Example 11.11 -# ---------------------------------- - -# Message: -74 d5 6b f8 d9 c1 80 dc 09 93 71 a5 af 72 - -# Seed: -33 78 70 f0 47 9c f1 28 3a 0c 87 c9 c4 af 54 ba -8f 85 06 44 d5 9a 20 25 26 3d 2b dc 49 bf a6 63 -6e 75 18 f9 4b 6a b1 8f 85 b1 93 21 20 9b 76 9f -0c 19 75 d1 d5 ad a0 6f d2 a7 6c 82 45 0e 4e 09 -cd ad b7 83 2f fb 8a e7 dc b4 74 10 b2 87 80 4d -dd c7 49 3d 61 0a 81 39 9b 6d f6 df 5e f1 52 09 -29 84 fe 27 76 a4 f9 30 54 6b e1 dc 18 31 3c 14 - -# Encryption: -07 61 eb aa d8 ff 1c 3d be 71 0f 60 e3 be 9f 28 -9f b2 7a 6b 53 77 75 5b 71 fb 38 4c 5f ac b1 60 -3c 95 3e 1e 2c a1 1e 78 43 25 ae 42 f3 21 ae 5c -58 64 8c 84 f5 24 df 9d e9 f9 3f b4 b0 c2 e0 97 -97 ff 2d 11 40 70 73 b9 5a 78 6d f5 1a 43 f7 99 -82 d8 6c 49 fb 9e 50 14 b1 b7 68 76 0a 51 30 26 -6d 06 99 30 6a 90 4e d2 df e2 01 38 d5 31 c5 dc -4b bf 4d cc f1 02 49 a6 e2 b3 55 f7 cc b3 26 a4 -8a - -# PKCS#1 v1.5 Encryption Example 11.12 -# ---------------------------------- - -# Message: -61 10 63 b5 da 12 3c e2 12 96 17 df 38 59 95 57 -b9 5d 1b 05 e6 b6 6b cd 49 af e9 83 1a 04 21 a5 -be 4e 48 - -# Seed: -10 f9 df 30 ec 97 77 fc ab 5a 92 4d ed 36 fd fd -6e 1f 38 14 49 ad 99 d2 0a ea 0e 39 72 ea 60 4e -a2 27 50 d0 60 1d 10 a3 77 da d1 a9 4f 9b 02 73 -40 94 81 23 82 73 98 bb 22 b1 44 5f 71 c5 05 c6 -23 aa f5 16 cd 9f b3 e9 77 f7 78 cf dd 3a 5d 28 -c2 29 9e 4b 2a bd 9f 98 c4 35 5a - -# Encryption: -07 f2 d5 8b c4 16 39 94 d7 6f 49 1e dd 69 74 3c -45 dd a0 c3 8c cb 07 69 de 9c f9 f4 fd 00 55 d3 -0a 0c f0 02 80 0d 76 ed 8c 12 cb d3 6a f0 51 a9 -d7 33 7b 29 bc 77 4d c3 c4 01 2b f5 c2 8a ea d8 -c3 e0 36 aa 41 39 8a 8b 0f e9 91 c0 bf 66 b5 34 -1c 99 d9 37 7d 94 70 4a d4 90 a9 f8 74 6f c5 ce -f7 26 e1 96 f3 41 f9 3a 1f 1e ae 2c 13 e0 0c fd -22 06 2f 8e b3 da 9d af b9 5a 1e 7b 81 b1 fd b6 -56 - -# PKCS#1 v1.5 Encryption Example 11.13 -# ---------------------------------- - -# Message: -80 76 4f 78 5f d4 17 6e 16 41 e1 29 a3 5a 9b 31 -b3 a8 9a 75 67 ad 6c 1f 0d 65 ec 8a f9 5f c1 6e -15 28 14 09 - -# Seed: -20 36 d0 98 a6 e9 35 f9 a4 11 20 1d 2b cb 62 9f -79 0a 94 db 2e c6 98 67 43 3b 17 61 d7 c6 95 4b -e9 1a 9f c7 19 19 0e 10 86 13 cd 58 4c bb 97 76 -87 04 69 24 bc a6 b2 fe 1a 54 bf 76 ac f7 7b 36 -8c 39 65 0f 6d 0a 49 8d bd ed ae 3f 4c 21 04 0a -8a ed 63 4d e4 ed 8a f1 34 6e - -# Encryption: -04 9c 61 44 4e 92 47 72 f9 4a 79 5c cd 99 eb 2f -e4 30 99 7b 91 b4 2d e6 16 36 29 ab 98 d2 5a 71 -e7 f9 68 86 a5 7e 97 9d 9c 94 c9 62 20 9c 1f 71 -2c 70 57 1a 81 f3 77 ea f7 4e 80 e7 07 22 e1 be -3d 13 37 c5 04 5f 79 7b d5 7d f2 f5 ae 5e f3 3a -e5 79 e9 3b 38 fb 25 0d f0 c2 bc 59 b3 3a 74 86 -7b 8f 3d fe 5b a7 85 d7 28 b8 9d 96 b3 00 2b c0 -05 4d b5 bb 0d 84 fd a4 5d b4 a1 f2 62 8a b1 12 -30 - -# PKCS#1 v1.5 Encryption Example 11.14 -# ---------------------------------- - -# Message: -0a bc 2b c5 fc d0 40 18 9f 84 22 f1 ca 04 50 21 -da 95 - -# Seed: -e4 73 2e 49 90 69 9f d7 47 40 c8 52 ae 8d 4d 70 -7f bd 79 46 0f 88 74 09 84 ae 53 ff b9 fc 39 62 -68 3e ad 0d 14 04 f5 31 51 d1 ae e8 0f cd 6a 1f -f6 5f c8 8e f0 8f d7 6d 9f dc a8 f9 e3 ac 7d 8d -82 b8 2e ce 78 9c 66 c5 40 22 80 b3 e5 68 10 1c -e2 a2 a7 b2 b2 f1 e9 65 19 cf b4 1e 60 49 3d 76 -8e b5 b9 6c cc 49 bb 0f 6e c7 11 fd - -# Encryption: -03 d8 ae 60 4f 92 95 31 73 c7 7a 01 ff a0 90 aa -0e 37 a3 8a 47 c9 72 19 c0 b9 f8 64 d3 48 74 6a -f7 f4 a6 32 11 29 c6 04 6a 99 4c ed 1c cf 33 24 -da 93 71 53 88 8d d6 c6 70 19 a7 ca a7 65 5a 36 -42 83 8e df a0 e2 ed 8d c2 5c 14 bf f8 bf f5 65 -c7 18 f8 b6 c9 20 56 c9 bb e8 d9 30 83 70 c7 cd -75 a0 4e 11 b6 e2 5a a6 c3 c2 cd dd 17 2a 4b 6a -ee f0 4f b8 35 b6 86 37 cf 0c a0 b9 a9 11 b8 b8 -74 - -# PKCS#1 v1.5 Encryption Example 11.15 -# ---------------------------------- - -# Message: -8f 98 35 ef b6 9c ca 8c 07 bf ef 4d 8f 53 5d 0c -bd a5 36 7b bd 41 08 0a - -# Seed: -32 d4 be 07 e6 c7 fb 81 d5 20 8c 25 01 c5 df 7c -56 d1 98 6d c6 d6 31 10 ad 21 d8 1e 57 ce 11 3f -3d bb fe be 0f 80 c0 16 b7 19 e9 d5 c3 d9 a3 bb -bb 2f 35 be 95 d4 56 22 2b 51 c3 d6 5b 38 8e 7a -da f6 b9 ce ae 1f d4 6a 6e 05 ca 1b b1 99 c2 7b -ac dc 8b 5f d1 4f 03 51 ae b3 fd d6 dc 1d 93 f3 -b5 31 56 ef a3 c6 - -# Encryption: -0e 47 ad 4d 92 d1 9a 1e bc ac bf 87 5d 80 19 27 -d4 fe 5a fa f6 6e d8 01 5c 55 9b 56 6a 9f 3c bf -0a be 8a 76 fe 73 24 f6 28 c2 e4 f3 45 84 a5 0f -f7 7e 82 2a 54 11 8e fa 9b ae 9d 0f a5 02 94 c6 -18 0b af 3a 8b 0c 7e 45 3a 74 37 ab 1a 19 cc 00 -30 7a 8c 6a ed 95 c3 15 b2 4b 47 90 07 24 56 c9 -44 60 99 5d bb 1f e5 a1 2b 4c f4 45 42 96 f7 40 -02 83 ce fd ce 6b 00 cc 80 49 dd 5d d8 cb 2a f3 -6f - -# PKCS#1 v1.5 Encryption Example 11.16 -# ---------------------------------- - -# Message: -6d fb d9 3b 00 78 d4 9a e4 fe 1e 24 cc a9 7d 0a -9a ff d7 be e0 62 ae d2 9d ef 0b 1c 0b 3a ef ad -81 1d 6e 7a ce 8b 49 d7 24 2a 9f e6 e2 3c 22 - -# Seed: -31 9f 9c da 2c 93 38 8e be 1a 50 e7 6c 93 97 55 -9d ca f1 4f e1 03 52 aa 51 1d c5 ba a6 4d c1 52 -fc c7 9c bb 23 d4 e6 9b 12 b9 f2 7a 79 09 15 98 -87 bb 04 12 9a d6 35 16 81 33 86 37 4f 31 89 2d -4c dc 4f e6 39 69 b5 bf dd c6 67 f9 46 89 7d - -# Encryption: -01 c5 ce 83 6b e2 20 8a 3d 81 4e 7e 60 c2 76 74 -ac b7 cd 3e 31 c0 24 d9 d3 8f c2 29 53 aa fe 73 -af 52 40 43 4d cf 54 a3 88 99 2e ac 36 ec 84 64 -d9 a0 42 ac 58 d1 8a 70 39 8b 8a 77 3e 66 69 bb -3d 76 ee ac df 1f d1 52 47 40 99 bf a6 62 a4 81 -db ab 4c a4 67 14 95 87 45 e2 b7 83 2a 59 cc b0 -05 36 49 b7 e0 95 07 43 33 3f 5f cd 6f 65 19 7d -dc b4 e1 bc 12 a6 6e 8e 92 a8 65 9f ae e5 71 31 -e2 - -# PKCS#1 v1.5 Encryption Example 11.17 -# ---------------------------------- - -# Message: -e5 87 9f fc e0 b6 29 b8 85 7c 19 5c f5 d0 9f 7b -93 bf f1 f7 a9 f2 d8 a4 5a 56 3b bb e9 e6 2d - -# Seed: -ba ce 2c ea 0b fe c2 5a 2d 34 d7 29 92 c2 b8 ea -0a ea 17 b7 a3 a8 be d6 0d 1b b5 10 13 34 7b 2d -03 6a 75 a4 ec 3e b2 c1 78 8d 44 a9 e1 c5 c8 8d -04 1e 82 af 87 81 55 dd c7 d8 1b 3e 27 cd dd 20 -40 9d bd da 4a 64 bf 83 11 a7 b7 eb 77 29 93 12 -66 1a 6e 37 df 35 02 f8 6a 22 49 2b ef ac f4 - -# Encryption: -01 e4 fa eb ca b8 9d 7b aa 3e 03 93 f7 16 84 b0 -ae 53 df 8e b9 87 3e 65 a7 16 ec 2f 41 74 1f 8b -78 16 d2 e1 97 d9 76 fd 53 a8 ee 7f 92 4b f4 bf -d4 10 42 e1 64 45 e9 06 0b 55 a0 b6 dc 16 aa f3 -06 44 91 d1 89 28 22 39 50 39 33 28 c1 47 db d0 -35 31 ec 01 2d 8c 52 75 02 e7 eb 3d ca 50 9b 7d -e1 69 95 92 46 07 c8 b2 8a 2b da 9b cb 2c 77 81 -46 1c 76 66 3b 88 7b 96 43 e2 31 7f 0e a1 d1 bb -14 - -# PKCS#1 v1.5 Encryption Example 11.18 -# ---------------------------------- - -# Message: -0a 2e 24 13 0e 8a 9d 28 df cb 9d f9 76 5f 46 83 -e9 da 78 42 5a 28 19 98 06 a9 3b 32 2e fa 88 49 -3a c3 72 52 c2 9a 26 4f 3e 85 ae 56 53 8e 80 8d -c5 56 42 a4 88 5f 05 46 40 f6 9c 89 81 fe - -# Seed: -20 43 1e f3 1f ce 19 93 9d a5 45 a0 85 30 11 2d -b0 fa 07 13 8d d8 6d b1 cc 65 e2 b0 3f c2 be 60 -7c 3e 60 38 eb b7 89 17 55 b2 31 29 fb 96 9a 7f -e1 06 10 f2 eb c3 f0 77 b2 c8 f4 60 1e 09 ab 4c - -# Encryption: -0c 14 b7 d3 2d 3d 4c e2 b0 8e e4 4f 51 6a ee 29 -90 b6 30 52 40 b2 5d 23 34 aa 31 75 2a ef 28 02 -16 39 f7 6a 4c 47 19 56 9b 30 05 2d 4b d0 8b 3a -07 f2 3b e6 86 23 7e 48 1e 67 bf 3f 5a 01 ad d7 -56 da 77 2c 7d c1 3d 32 29 8b 9b bc 3d 33 e6 df -82 d8 5c 08 9d 34 76 00 49 7a 8b 8e a4 de 68 ab -b9 0e 5c 6a eb 26 9a 97 be 42 6c ef ac de bb cc -0c 1f 2c 40 9b bc 7c 72 d9 0b db 42 6b 13 cc c1 -9a - -# PKCS#1 v1.5 Encryption Example 11.19 -# ---------------------------------- - -# Message: -7e fc 62 7b a5 fa 28 25 aa e0 ca 94 03 0e 70 47 -08 d3 5f 92 23 98 26 b4 2e 2d 4d bb e4 02 ab 7d -19 6a 7f 54 88 0c f2 c5 a4 d0 fc e5 3a 20 a3 2b -68 30 e6 2d cd 00 db cb f3 3b 5c 0c 70 44 01 - -# Seed: -f0 49 79 19 c1 42 f3 a9 8e f5 5b cd 59 88 23 4f -dc 8a eb f7 36 d4 7a f9 70 90 a7 a9 dd e0 a7 35 -09 f9 cd 41 36 26 bb 8b a7 67 c9 d6 38 49 1c 28 -6e 67 bf 22 d6 70 d5 6b 24 c1 5b ad 70 35 1e - -# Encryption: -01 db ce 3b 3f 84 b2 da 06 b1 67 e2 06 64 9d 42 -4a 42 b8 e9 ea 54 53 a1 6b 5f c6 c2 e9 cb 17 ed -a1 ef fe 4e 78 36 a5 e5 8f 99 e5 31 53 0b 40 17 -1e 4b 51 fc 0b 92 de 30 31 30 09 36 d2 59 5e 39 -10 09 e2 e5 3c 32 f7 59 60 4a 6d ba d9 c9 70 90 -0f a6 e4 1a 35 08 3f 78 7b 9b f3 be bc ea a1 a7 -71 84 1b 5e 6e 4c 8b 50 96 29 00 7b 46 7e 3c ec -8a 1d 03 23 c3 c5 db c3 4d 8d 41 25 a3 98 c9 d5 -3d - -# PKCS#1 v1.5 Encryption Example 11.20 -# ---------------------------------- - -# Message: -59 3d 3f cd 05 ac ee 30 29 81 5e 1e 76 a8 90 - -# Seed: -12 35 ee 3e 7a 9d f5 96 7f e9 8d 97 10 ff dd 5f -7e b2 2d c0 71 47 af 43 6f e2 0a a5 26 bf 0b 94 -19 0c ab b5 21 3d e9 8a 23 f5 ef 27 50 22 a2 f7 -3e 60 e9 ef e2 c0 34 c5 5c eb 26 aa 80 6c de d6 -73 9d db 2c bd 3e c3 b5 55 20 4a 79 84 65 c3 7c -67 57 19 56 86 a3 ea 3c 56 57 c3 60 a0 15 8d 99 -2d 4f eb fa 04 29 ee b7 c9 2a 46 84 34 c5 b7 - -# Encryption: -0f 69 98 81 a1 52 46 18 bc 25 d4 e5 14 e2 07 30 -68 ea 7d 35 38 4b af d4 6f c2 82 e1 d8 55 11 9e -e9 69 f2 11 c7 18 4a 07 03 06 47 fc 40 99 0e cf -2e a4 05 22 86 5d 91 77 8a 62 7e ca 8e 50 c2 bb -97 60 b0 45 da af 12 77 a4 fa 98 35 76 ca 8c fa -d7 60 83 29 c1 88 15 88 01 7d 63 72 2b 70 e9 8b -e5 24 e0 03 39 95 98 25 73 d3 38 70 78 c8 b7 c1 -c5 f9 ae f2 64 a0 48 46 84 b3 42 66 43 73 7d 34 -bb - -# ============================================= - -# Example 12: A 1030-bit RSA key pair -# --------------------------------------------------- - - -# Public key -# ---------- - -# Modulus: -26 1f e0 28 44 59 c2 fa 6f 05 54 6b ed 58 5e 1e -e0 a1 30 b7 1c 2b 8a 6f bb 3b dc 75 78 7b 26 55 -d0 ed 4e 32 5b 54 c7 b3 71 a6 fc f2 b6 78 82 77 -a5 0d 47 05 ba 23 c5 96 28 5d a7 e3 c9 30 4a 41 -e7 cc 48 8b 44 92 2f 7b e2 b4 7c 16 31 9e 33 74 -51 17 3d 40 b1 ea 48 1d 1a 9c 11 29 b1 fe b7 d0 -9f 67 49 7a eb 98 94 8f 1a bf 3b 77 86 bd 3b 87 -04 71 87 c8 f3 70 15 68 2b 3f 2d e5 0e 07 8e 8d -0f - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -26 1f e0 28 44 59 c2 fa 6f 05 54 6b ed 58 5e 1e -e0 a1 30 b7 1c 2b 8a 6f bb 3b dc 75 78 7b 26 55 -d0 ed 4e 32 5b 54 c7 b3 71 a6 fc f2 b6 78 82 77 -a5 0d 47 05 ba 23 c5 96 28 5d a7 e3 c9 30 4a 41 -e7 cc 48 8b 44 92 2f 7b e2 b4 7c 16 31 9e 33 74 -51 17 3d 40 b1 ea 48 1d 1a 9c 11 29 b1 fe b7 d0 -9f 67 49 7a eb 98 94 8f 1a bf 3b 77 86 bd 3b 87 -04 71 87 c8 f3 70 15 68 2b 3f 2d e5 0e 07 8e 8d -0f - -# Public exponent: -01 00 01 - -# Exponent: -05 df 76 83 72 cc 0a 64 d3 c2 14 18 30 24 23 13 -9f 47 95 73 e5 0b 5c 09 b6 e3 be 23 fb c9 aa 1a -76 d3 27 99 a0 47 76 1f fc 21 07 94 48 17 01 04 -cc a5 e2 a1 4c e4 57 d0 0d 80 7d 42 c7 6a 55 f6 -16 87 4b a7 f7 ea a1 ce 63 cb f1 32 de b0 81 aa -d2 fd 80 d1 24 c4 da 86 ec 6c 02 0e 8c a8 2d cd -cd 35 54 e6 9b b1 98 72 26 2a 50 31 ab 5d b7 cc -8c 92 59 a1 46 d5 8b 1d b9 4c c7 e7 56 25 3d 5a -a1 - -# Prime 1: -06 77 25 ab 55 34 18 e1 eb 8a 41 f4 fd 92 d2 80 -b6 9f 85 b0 8c b4 02 f0 1a a4 96 92 c7 20 9b 36 -42 98 ee f4 e3 3d c4 22 bb a3 35 03 d1 1a 12 7d -d2 86 43 f7 e7 75 58 97 e2 eb 96 c4 dd bb 91 12 -f1 - -# Prime 2: -05 e5 8c eb d4 7d 87 b1 e7 8d a2 fe ee 6d c5 f9 -bf a2 20 c3 55 e8 20 c8 fb aa 88 46 df 11 00 36 -2c d1 69 1f 5c bf 5c 78 68 c4 72 d0 28 2a be 01 -03 16 1f 4d 8c 62 af f3 5b b1 fb 7c c6 99 d9 9f -ff - -# Prime exponent 1: -01 6c c9 14 95 d6 c1 95 29 40 73 80 f7 52 20 aa -d5 95 1a f5 ea 4c d2 48 f0 d6 4d 89 53 f1 cf c3 -89 b2 03 18 5d ed 03 09 54 a9 87 c9 ab 90 3f 7b -13 a7 1b db cb 5b 85 87 14 30 30 2e 7b 60 17 7d -41 - -# Prime exponent 2: -f9 cc 89 15 ff b3 dd c7 c0 93 71 76 49 2a 12 bb -18 7c 2d 76 e0 d3 d4 0e 79 58 d5 c9 82 09 b3 ed -54 b5 fd 9f 9e 77 11 e1 dc 68 57 73 de 26 d5 0a -0a b6 21 62 12 ce a5 09 ce 79 1c 5b cd 07 cb 47 - -# Coefficient: -05 fe 93 3b 87 3f 1d 68 f6 be 2d 4d 5a a2 2d 96 -8f 2b 7a f5 41 a2 dc d6 4e 09 c0 30 b1 50 35 8a -98 02 ae 86 59 95 d7 6a 50 03 7d 19 8d 7e 70 4d -26 84 7a da 8a e3 d3 85 c2 96 5f b1 7f cf 15 2f -77 - -# PKCS#1 v1.5 encryption of 20 random messages with random seeds -# --------------------------------------------------------------------------- - -# ---------------------------------- - -# PKCS#1 v1.5 Encryption Example 12.1 -# Message: -7d e6 9c d9 22 8b bc fb 9a 8c a8 c6 c3 ef af 05 -6f e4 a7 f4 - -# Seed: -33 d6 2c d6 67 82 3f bf 13 d5 92 ae 4d 02 a2 37 -0d 1d 99 db 06 c7 25 42 5e 0d 12 fc b4 83 4e f9 -e5 49 9d 60 7e 8a ae fe ba 81 96 49 fb 3d 61 c7 -05 f5 e9 a3 a2 f8 96 27 61 89 a3 20 0d 2f af f7 -76 79 e0 56 34 9a 5b 9b 7b 44 49 b6 75 cd 48 b6 -98 09 32 c2 cf c4 6b f8 9a 77 34 f6 8d d9 f4 fe -77 e1 d9 cf 1f 31 b2 1c 4c 61 - -# Encryption: -04 ca ef fc d5 1c 3f c9 23 63 46 77 4d a0 cf a7 -7e 9e 64 65 f6 43 7f f4 6d 9f a4 58 b3 62 34 12 -c3 10 30 09 fb fe 20 31 96 df 72 96 26 e0 ee 3a -fb 6b 10 a5 ac d7 2e 84 28 1d 9d 9b cb a3 e0 ef -77 dd 84 f3 db 19 2d 31 b5 b6 66 f7 6c 93 81 06 -81 37 3b aa 58 e6 da db 01 fa 5c 65 ec 89 fa 51 -cc 24 74 61 1b 9a 7c b0 0e 86 2f d3 d4 9b 1c d3 -1a fc 2d b4 49 e0 9d ae 2d 0a 7d 4d f0 bc 32 0b -5a - -# PKCS#1 v1.5 Encryption Example 12.2 -# ---------------------------------- - -# Message: -97 ee a8 56 a9 bd bc 71 4e b3 ac 22 f6 eb 32 71 -96 69 c4 2f 94 30 c5 89 50 c6 4c 0d ab ff 3a 9e -20 43 41 6c 67 ca aa ab 7c 68 cc b3 ca 99 a3 - -# Seed: -9f 14 12 61 ce c4 f2 c5 2f 96 91 25 a3 6f 14 10 -27 08 82 50 d3 6b 17 42 1c d0 96 14 76 19 06 46 -8a fa b7 62 2c 0d 02 19 36 91 74 47 91 e0 d3 5b -6b c9 f3 37 7e 10 b2 85 6c 8e d9 19 9c 89 f4 a4 -16 13 d3 c4 0c ca 37 3a 7c c6 3c 52 60 fe 5a - -# Encryption: -0d 26 a0 5d e9 3b 70 7b 85 40 fd c1 98 89 d2 d1 -e7 93 71 57 d3 2d 30 3c 52 8d e3 5e 55 3f 94 20 -28 74 4a f6 a0 40 2e ca 0f cf 5a 85 26 1a d4 75 -d8 71 0c c9 f8 b1 1b a2 c6 da f1 d6 72 69 0c 68 -ed 11 e0 35 e9 c6 60 ec e1 d8 0c da b8 00 ea d3 -c6 e0 78 61 7a 1b 0d 27 3d ed d8 d6 57 49 16 6b -d0 77 74 fb 4c 14 86 aa 8a 0a df 59 5d bc 3d 10 -ff ae f1 83 84 98 a6 75 55 c7 7b 6e d9 83 d5 b9 -de - -# PKCS#1 v1.5 Encryption Example 12.3 -# ---------------------------------- - -# Message: -8e 3e 77 2f 39 - -# Seed: -9e b7 31 fa 6d 8d 5b 75 81 f8 fa d2 c8 22 5b c9 -68 34 af 61 db 3d 40 9d d5 63 04 ae 23 ea 62 69 -63 a4 d8 04 40 c2 4e 43 1e 41 97 60 90 3a c4 4b -fe 41 a7 50 81 a5 46 2b ae 65 47 c0 e7 a0 6e 91 -60 df 9c 01 fa 6c 53 54 c8 33 18 db 65 6d ee 0a -43 77 87 fa 46 39 4e 55 2e a5 33 15 59 b4 01 7b -b6 a0 e1 d6 fc 8a 65 b4 5d a0 c4 5d 88 95 48 61 -cd 6e 7a 41 7e 03 7b 1b 05 - -# Encryption: -24 4a 86 34 51 9a f4 9f 56 9b 69 86 ab 47 79 64 -a6 b2 92 0d 84 3a 1d 97 ef d7 fe f8 3e 81 ba da -4c 4b 56 29 61 ef 4e 1f c3 33 46 4b 92 6b d7 4b -07 ad 50 c6 5b 68 16 83 d3 89 fe 41 d6 d2 13 b6 -46 9f 18 2b 14 b4 62 d7 2c 1c e3 92 8c a8 06 d9 -66 b5 2d 42 d0 bf d6 0c 9d 04 91 4d 50 83 7c da -e0 9b 33 0e 37 27 44 dc e1 7f 18 e9 4d 71 1c 8b -58 ea 44 9f 14 49 d3 69 fa ef 51 46 83 d3 01 60 -79 - -# PKCS#1 v1.5 Encryption Example 12.4 -# ---------------------------------- - -# Message: -dc fa e7 71 8c 24 7c 40 f9 a2 a3 c3 53 5c 50 92 -80 c8 73 c3 - -# Seed: -b9 3b be a6 c1 85 3f 15 3b 5e 01 e7 e4 e5 d0 c6 -3d 9d fb 24 5f c6 cf 64 04 3d 7a 92 20 b0 b8 1a -c2 af 65 6b 99 71 4b a4 30 e0 a3 96 95 d2 5f f2 -69 b0 b9 b8 65 fc 4d 4e ee 5e 07 a5 b5 be 35 43 -82 aa a4 14 bc 62 08 54 5c 86 ce 02 38 8c 07 b3 -76 fb 02 98 c3 7d 1a c3 9e a1 89 b0 ad f7 80 f6 -e8 30 bc e9 17 b5 0a db 7a 31 - -# Encryption: -0c 41 20 52 d4 ef 4a b5 1b 2f 62 37 05 f0 7f 41 -fa d6 4d af fd ba 62 44 ef d4 7f 51 9d e2 e7 1a -01 a6 c5 7d 1f 28 b6 bf 7b 5c 8d bb 9f e7 b1 49 -b0 eb aa 53 59 61 99 37 6d f4 90 32 3d 25 c2 17 -bc 71 be 37 f1 81 03 5c f4 57 eb 5c 06 d6 a3 de -d3 d6 6d 5b 35 f0 61 81 bf 94 d0 ec 13 ec 44 7c -70 82 33 49 1c 55 4f 9e 99 1f 6b cb 8b 78 d3 3c -9c 36 95 5b 8d ce 51 79 ff 8b c5 92 44 f6 67 90 -87 - -# PKCS#1 v1.5 Encryption Example 12.5 -# ---------------------------------- - -# Message: -d7 1d d8 7a 13 99 1a 0d a2 c7 4a 58 b0 48 56 34 -b3 e0 4f ec 9e 3f 1c f2 60 4a 93 be d7 96 96 fa -63 78 eb 1b a0 e5 d2 04 70 a4 - -# Seed: -09 90 59 92 58 e9 7a 2e bf be 10 97 72 25 c4 16 -76 2e 95 d2 55 3a 80 1f 72 6c c2 49 bc df 32 21 -32 58 57 19 fc 12 39 9a cd 72 54 ae 77 da 34 3f -e2 a9 a3 ac b1 1c 14 e2 14 e2 d8 5a 76 70 8c 3e -72 17 3d a5 d9 90 58 e0 c8 70 9e df 28 c3 69 38 -76 9f 1f 22 - -# Encryption: -0f f9 cc e7 b6 9d 7f ca 48 d7 c4 f6 cc ff 24 8c -3d b8 8b f1 b7 85 2c d9 d8 52 5c 3b 41 e4 4a 9b -54 0f 20 8f fb b8 c8 5b fa 89 0a c0 2e 99 49 59 -d6 b0 7f 64 81 40 78 55 6f 8e c6 0d b3 57 ac ea -f8 39 11 5f ad 41 f8 91 8d 69 c2 1a 3a ff ef 6e -b1 4a 5d 2c d0 64 5c d7 06 b5 81 43 39 4a 27 35 -36 82 e3 ba a1 98 00 2e 16 80 f2 8f 34 be 08 9a -57 84 ac e5 ca 6b 11 08 99 df b9 58 2f 2e 4b 2a -40 - -# PKCS#1 v1.5 Encryption Example 12.6 -# ---------------------------------- - -# Message: -5e 4b 15 8f 8d cb cd d7 e3 08 38 5b 40 19 0f 5d -ef 8c f3 30 5f c4 9d e6 3c 9e 35 b4 02 36 ae e1 -f4 56 20 5a 52 67 a2 aa 7d 88 cb 2c 11 af 7f 28 -99 d0 1d a1 b2 c7 46 6f fe f7 - -# Seed: -a5 22 f9 80 8d 9c 01 d8 ff 79 77 5f 7b 22 09 8f -c5 fe 32 54 e1 b0 4e b1 cb 85 0e 10 e2 c5 06 5e -23 27 4d c0 a0 55 87 43 6d a3 75 59 33 5f e7 09 -3f a5 e7 a2 a9 c9 a4 dc af 23 51 79 d0 e9 8f a3 -3e 34 b6 16 - -# Encryption: -1c 0e 86 a6 36 6b eb 1e 12 d6 bc fa 6a d4 94 06 -c8 b7 e4 8d 1d 5b e4 5c bd 83 19 49 87 49 6f aa -3e 21 92 7e c6 62 f5 02 ac 3f 91 a4 b4 b9 1d 16 -0c 19 86 a5 ed 09 27 66 88 3b 85 55 e3 c9 31 4b -44 ba 33 83 db 28 74 23 af 91 b4 13 91 8c 08 02 -c7 77 8e 46 c2 96 dc 9f 04 cd b8 b0 6a dc 7c 53 -d8 59 f4 42 cc bd 5f fa b5 af 75 2b 97 9b f5 23 -a4 0a 1d 08 d7 60 63 ff b3 d5 cf c8 2f 15 eb d6 -d4 - -# PKCS#1 v1.5 Encryption Example 12.7 -# ---------------------------------- - -# Message: -35 9b a5 07 56 a8 03 30 40 9d 3f 23 6a 34 0b 90 -f4 2f 73 2a 87 71 1f e2 23 52 d4 c8 25 0d 45 47 -5e 32 b9 58 83 e1 60 97 55 a1 3c df c1 bf 39 4c -5c 67 36 9e ca 1f 9a 33 e8 ba - -# Seed: -f9 eb dd ac 9d e1 70 9a 06 bf 6b bd df 58 94 e2 -3b 96 2b a0 c0 64 bf cd 7c c5 76 60 3b 0a 1a 1f -f3 5d 64 5e e8 7a c6 f8 21 a6 a1 51 e6 bb b0 5b -f3 e0 5c d9 a6 e2 cd 9c 6c f5 53 bf b0 7b d2 fd -a0 40 df b6 - -# Encryption: -08 33 60 e6 49 05 9d 00 65 8d ba 21 f2 df 28 a2 -76 4c 45 89 f7 a7 7d 5a f9 95 79 a8 ab 44 80 c8 -26 a7 7c 2f b7 95 4f 4f 31 fe 1d 9e b1 bf 40 e8 -09 57 7f 39 30 1a d3 ab 95 b3 81 6c 90 ec 3f 1c -d6 29 c4 39 61 74 be d9 fe 1e 0f 47 68 23 e5 3b -41 d1 35 b4 9a 02 b0 0e ff c7 61 ec 90 94 23 af -15 85 52 37 b7 7e e0 7d f2 5a b4 e8 58 46 7d 4c -cf e8 08 43 24 1b bf 88 eb 4f 85 3e f4 b4 3b a3 -ac - -# PKCS#1 v1.5 Encryption Example 12.8 -# ---------------------------------- - -# Message: -a9 f3 9f 8b a0 64 66 25 0c 26 5d f0 ca 46 57 0a -16 01 12 cf 38 fd 74 59 99 - -# Seed: -88 b3 c2 8b d3 99 9a 86 0b 8d e7 75 93 5b 8e d7 -8f a2 f2 7c 26 8b 24 3a 02 45 af 86 72 25 47 19 -f2 3a 4b 7f ed c0 0d 54 e1 2e 9d 70 1f 64 69 94 -24 b6 b8 7d 14 d9 67 6e fa 95 9b e2 1a 04 b6 43 -5d 25 10 03 dd 15 3d 7d 08 ff 28 d9 3a 93 20 dc -1b bc 3d b3 97 a5 48 94 f2 05 79 f9 3e 4e ad 65 -c3 1a 40 7e b4 - -# Encryption: -19 83 96 50 b9 25 f1 f9 6d 61 1e 4d bb 91 49 93 -54 5c 67 39 0c 32 93 5f bf 82 25 9d ad 10 f2 37 -30 eb 48 f3 42 00 46 5a 20 38 72 77 e2 b9 61 e0 -83 18 d2 07 74 47 c9 10 92 71 e4 de d8 ff 3d c4 -f3 79 ee e4 55 ae 96 08 1a 1a e2 4b 96 ca 73 0a -62 f7 ac c5 a5 ea 52 28 e3 a4 8e a6 74 1c b3 0e -82 9d 55 09 cc c6 c2 87 c7 29 1f 3a 1d 89 d6 26 -bc 98 15 77 de 52 a1 1f 12 ae 21 43 d3 b0 b5 2f -86 - -# PKCS#1 v1.5 Encryption Example 12.9 -# ---------------------------------- - -# Message: -68 - -# Seed: -53 8b 09 5e 4f 2a d6 77 30 68 74 21 91 52 42 25 -1d 07 f6 61 ed ac 7f e7 9e 31 d6 c3 45 af f5 9d -f3 88 c7 18 2f ff 0c 04 27 b5 99 35 c6 91 da b8 -bc 42 be 47 d7 69 11 88 0d 91 7b 86 27 18 b4 c1 -c1 88 8d 42 20 b9 f8 23 1a cd f1 2d 9b 85 18 6b -e0 95 0c 1a ff 84 cd 0f e3 65 86 a5 0e 7e 04 b1 -72 ca 9c 85 9e 2d ed 6b 8e a5 79 dd 5e 6e ee 77 -2c ca a6 b4 a5 d8 ab 17 31 a8 35 d6 a8 - -# Encryption: -1e 86 8a db 0e 65 32 80 60 4e 8d 3b c4 d9 69 84 -a2 0a a0 9d 48 0b 4d ff ac 62 ba 78 cb b7 ee d0 -64 5a 6d 94 d9 d2 f2 d1 e9 17 c1 46 b4 1f aa 3d -1d 2c 19 01 05 36 8f b4 84 06 a1 d2 42 6a f3 dc -c8 5b d0 2d 5c 26 c8 97 cc b2 2e 57 59 12 64 1a -18 8e f4 ac 47 a0 a9 fe 9a a2 70 6d 8e 10 61 f5 -d9 30 63 f4 90 17 00 3b 23 09 ca 7d 8d 36 70 3b -fd da 3f 7f 43 df 15 8a 15 bb 22 13 9a ae 15 10 -77 - -# PKCS#1 v1.5 Encryption Example 12.10 -# ---------------------------------- - -# Message: -35 65 87 e6 c6 c0 b4 6c 24 45 e0 18 63 52 76 ab -84 5f d1 07 6d 10 7f - -# Seed: -e5 d3 3e 4d 93 c7 08 44 ee 4a 01 65 56 24 2d 08 -e8 e6 2f 1a 7f 79 47 79 e2 23 ee 9d fb 23 1c 3a -52 0f 29 7e 50 73 e4 f9 2f 53 5c f1 44 55 7f 94 -ee 1e 1e 5c c6 bf 4c 0c 0c 8e 5e d4 0d 06 63 56 -06 f7 54 cc 2d d8 3f e0 2c 57 6c cd 2b 83 5f d0 -f5 3a 99 08 3f 4d 15 bf e9 26 88 99 ef 09 ff 5f -2f 3c ec 9f 9b 8a 7e - -# Encryption: -15 d3 64 a4 49 9b 30 a5 f7 8b 6d 7d 4f 66 7a 1f -76 d7 15 15 8f 28 01 19 b0 55 e1 f2 66 3f c7 96 -e3 3c 0e b6 4e 34 a8 da da 5c 81 75 42 57 a8 bd -f0 ed 81 15 f6 07 b7 c9 cc a4 81 f7 45 20 b6 d9 -ac 98 f5 e7 2c 2b af 3c bb 6b d9 ba ea 5d 75 86 -0c bd ae 34 03 fd 5c 37 96 4a ae 64 36 6a b0 9b -c9 c6 72 76 95 14 48 19 3b b4 b1 af a2 70 79 c3 -41 70 a2 69 56 51 0d 44 27 64 22 99 08 42 0f e8 -0a - -# PKCS#1 v1.5 Encryption Example 12.11 -# ---------------------------------- - -# Message: -e1 53 27 6a 68 79 67 8f ee 19 89 48 28 d6 26 2e -a3 9a d0 54 c8 9e dc b2 3f 72 dc da 1b 00 73 c2 -87 62 02 18 d9 2d 0e b3 0c 62 af bf 2b 45 df 62 -d0 66 65 f8 05 25 b6 72 7f 95 e3 42 29 e6 82 a8 - -# Seed: -2a d7 14 2f cf a3 bd be b7 55 b2 c5 b5 cf 13 e6 -96 9e b7 3b 7a 06 bc 29 bc ad 7e 75 30 a5 90 23 -0f 6a 43 fc 03 d6 c3 a9 c6 41 e5 3a 41 77 d5 75 -02 91 ec 6d 4b 33 f8 71 66 8a d8 56 90 77 - -# Encryption: -17 8e 49 77 0a 4c 8f fb 7f 65 f3 82 cd b5 76 e6 -08 e9 75 c4 37 13 39 10 2b 95 2a 1e 71 cb cb 91 -fd cd 0c 0e d5 a8 5f bd 26 3d a6 a7 4e 49 1f b0 -4b 60 a5 96 1d 8e 6a c7 24 ec 8a 81 61 c2 2a e3 -10 40 7f 59 f7 e6 02 da 48 aa 2d ad 68 3e 88 db -1d 84 29 5e 0f ba 5f f2 f6 73 df 32 85 4d 01 b7 -1a 89 46 0f f0 e6 e1 be 98 ae bf a2 27 e3 97 ea -cc 8b 23 17 41 47 c4 4e 16 20 1e c6 ba bd 16 5b -a4 - -# PKCS#1 v1.5 Encryption Example 12.12 -# ---------------------------------- - -# Message: -fa 4e b9 31 a7 e2 09 0f 31 ed b1 ff 7d 83 61 - -# Seed: -43 7f a1 51 f4 34 05 db 22 42 2c b3 5d 1c 57 61 -16 1c b9 a7 8a bc b6 f0 6d c4 e7 a8 69 48 1f 40 -b2 1a e1 d3 3e 07 5c 48 5c d8 50 1a 3c aa 60 18 -32 5b 7f 85 0d 4d 8f 6d cf d2 af fe 19 d3 e6 c7 -08 74 e7 10 11 14 f0 fb b9 82 25 81 ba e6 ba 2b -a1 e7 49 88 81 a5 dc 5b b8 85 27 38 a8 2f b0 6d -15 27 b4 33 44 87 b3 24 01 3e 32 bc f1 7b ab - -# Encryption: -22 6d 77 67 00 c5 e1 dd b9 99 4b 32 91 f1 d3 34 -b6 9d d8 63 06 5f a8 34 21 e0 1d 52 06 ec 2c db -89 90 cf 78 97 31 09 dc 9f 12 6b 60 33 d6 d5 d6 -91 8e c8 50 d6 9c 71 3c b5 bb e3 2e e5 9e 44 5b -cb 4e 50 c6 f1 64 43 4d 2a 6c a6 39 69 a2 9b 25 -03 64 15 b0 f7 cb 21 b4 f8 b3 4a 8d 9b 74 65 3f -ff 4f 5d b9 d1 a6 b5 15 2a 64 48 36 b6 8b 8e de -9d c5 a1 69 dc 60 dc 5f ac 46 8f 24 27 84 58 10 -62 - -# PKCS#1 v1.5 Encryption Example 12.13 -# ---------------------------------- - -# Message: -58 81 15 e5 37 09 eb 15 a3 37 4c 25 32 9e 88 38 -26 e3 21 3f 37 a1 b7 a6 5d e1 2d f2 31 72 f1 7f -a4 96 ff 49 2b 09 17 3b a0 c6 f5 8c 29 3d 47 f1 -48 - -# Seed: -07 81 85 e0 83 cb b0 6f e1 a7 49 74 35 15 f3 a0 -b4 b2 6f 85 3b 10 e5 68 e8 70 82 ce 44 41 2c a6 -7e 59 88 8c cc 0f 50 31 01 52 1a ca bf d9 8f b7 -b5 c1 1d 8a 94 1b a0 3c 49 5a a0 3e 13 52 2f 48 -7f 6e 16 16 be c2 07 2b 39 96 fa ee 29 - -# Encryption: -0e 7e 50 a7 b2 47 b0 29 7d ec 65 c9 52 3f 67 ca -b6 b5 2a 02 5f 53 32 0e 94 86 cd 20 74 10 ca dc -74 e4 b0 3f c0 6b be d5 98 b0 22 b6 3b 37 76 2a -65 fd 35 1c b2 72 7f 3d 80 35 a4 cd ba 9c 6a 31 -e4 ed 6b eb 4f ed 31 34 eb 63 df ce ab 4f 5f 24 -59 e5 9f ca 01 74 75 8a ab 37 53 b5 c1 93 c8 1e -11 49 0f 97 b6 22 b7 3f a7 3f 8e ae 7d a8 39 34 -84 b8 29 79 71 a3 e9 23 12 9c e4 35 7b 64 5c c6 -38 - -# PKCS#1 v1.5 Encryption Example 12.14 -# ---------------------------------- - -# Message: -20 f1 cf aa 63 67 c7 c3 9b 54 a0 - -# Seed: -4a 1c 7b 70 f7 83 ba 0d 5a 26 d4 64 5c f0 5f a6 -10 f5 be 01 77 fd de 9f 2c 34 50 57 db 42 44 57 -fa a4 30 c9 42 4a 54 f7 e5 5f cf ee 6f ae a4 24 -4c 03 97 74 81 ed fc bb 28 88 37 c6 a4 8d bd 72 -96 67 7a 24 e0 6c c9 d8 5e 68 8c 14 09 0f a2 83 -0f f4 96 79 33 ea f0 db 69 4b 6a e4 02 ca f9 c2 -be ff 04 a5 2a 2f 84 7f e4 0f 4f fb df 3d 58 b7 -c4 fd a8 - -# Encryption: -1e 52 84 20 bc bb a7 d5 9c 6c 40 d4 46 d1 aa 95 -6a ff 03 05 36 5b 4d 7c e9 81 0f 22 c3 4f 09 a5 -55 e5 ff be 51 75 03 7f 90 3e aa 6c 40 56 36 36 -d3 81 f4 53 25 b5 e6 1a 2c 70 51 12 55 64 02 a7 -dc be 86 cf a5 4a 6e 6a 50 37 8d 05 e2 1c 95 cc -6c 45 ff dd 05 17 f7 7a 36 b2 24 d1 70 0a 1f 3e -bb 81 d3 67 8a 66 e1 45 34 a8 0a 59 8b d7 17 26 -fe 32 2e 73 9c 17 eb a5 08 da 8a 03 1a 27 f6 bb -28 - -# PKCS#1 v1.5 Encryption Example 12.15 -# ---------------------------------- - -# Message: -73 60 cd b6 c1 59 96 b0 60 33 1e 9f 2a 36 89 95 -c0 64 ad da 56 55 95 27 78 2c 17 0c 69 1b b3 bd -3b - -# Seed: -58 dd 80 f4 fd c5 c9 5d d9 eb 56 ac 80 a0 2d 53 -e8 cc 2e fb 3c ba c6 72 7d 75 b1 e7 b3 5e 05 42 -19 43 3a f5 aa e1 98 fd 62 f2 ec d2 ab 8e 26 38 -77 b5 c9 1e d5 13 e2 35 49 7a 63 19 2d b9 a9 bc -b3 bc a9 7a e9 bf ce df 93 56 44 b2 d3 bc 20 e0 -2a e5 e7 42 4e 81 2a 29 49 61 6b 82 01 - -# Encryption: -20 3b cd e1 b4 12 e3 ce a2 5b 86 30 b2 08 f9 78 -ab 22 c1 da 81 25 07 6e 10 ff 91 d7 bc fa ef d7 -dc d8 39 16 55 c8 86 e8 a9 45 a7 f5 7a 74 ce 2d -c0 e8 ec 7f db 17 cf 19 57 80 d3 ce 80 e0 dd e7 -63 9c 67 72 05 b8 f9 ec ea 11 54 68 97 7b de a3 -50 0b 23 9f ce 0d 7a 94 be 6d e3 33 ea 7e cc 22 -c0 7e 65 d0 eb d6 5a 39 0a 18 5f 18 17 89 e7 ca -8c 1a c2 fc a8 28 bb 8d 28 22 7e 38 c9 88 9c e0 -08 - -# PKCS#1 v1.5 Encryption Example 12.16 -# ---------------------------------- - -# Message: -31 9b 82 94 bd f0 7c d4 06 85 e8 80 09 fa 7b 3f -12 90 16 0e f3 30 67 ad d5 ef 4d 80 fd - -# Seed: -4e 07 d7 f9 63 be 24 ee 6d 8b d4 dd 95 e9 e3 33 -49 30 e0 3e 65 8d 29 6b b7 95 48 6d 72 4e 07 41 -dd 50 73 47 a5 b5 7b 79 c9 0d 3c 90 c1 ae a7 16 -19 09 1a cc 81 98 b5 51 22 da 50 99 58 2e 0d b7 -da 3c bd 3c fd 85 29 8f 31 55 4e 29 cb cb a1 19 -9c e4 70 16 3c a0 33 7c c4 14 ad 32 76 70 81 11 -d6 - -# Encryption: -04 fc 7b b6 fb 64 19 61 2b 6e f5 4b 3c a0 0a 87 -46 51 95 c3 7f 7f 94 0c 23 3e cb 1d 4a 50 5d 3c -56 ed 23 e0 9e 03 f1 45 4f 04 b5 6f 6d a2 5d 0a -6f ca b0 c4 00 87 4a e9 80 6e e1 87 80 b7 5c 6c -a5 66 29 e5 77 e8 e7 b5 d2 fc 2c 44 0b 98 00 19 -5b 58 51 1b c3 a7 95 44 12 c8 f2 73 cc 0e 9d 97 -1a bb dd d7 02 8e 6f 84 87 6a 30 58 a4 54 fe 2f -33 c7 5e 3d d0 62 f1 19 cd 3e ca 81 06 b6 bf be -a4 - -# PKCS#1 v1.5 Encryption Example 12.17 -# ---------------------------------- - -# Message: -79 c6 82 a2 b9 79 fe 5c 96 32 af 18 31 c2 aa cf -0c 6b f5 66 88 5b f5 25 62 50 - -# Seed: -5c 2a 95 6d 4b 5f 06 f7 50 83 5a b8 b2 9c f7 c6 -41 d7 93 c5 56 e1 2a ab a9 56 df de 46 32 d5 e5 -02 d5 90 41 78 3a fd 1d a7 b2 e2 d2 4e 22 d6 44 -78 35 bf 6d 77 c6 ee bc 0d 2d 64 e7 ed 2c 14 17 -18 ad 86 87 c5 97 b7 71 8f 38 bf 1a 33 16 ed ef -f6 b7 2e 28 51 82 88 07 bc ff a9 b8 e1 a8 52 f3 -fa a8 07 f6 - -# Encryption: -25 1d 48 56 b7 a7 58 0d 53 88 01 62 28 1b b4 e4 -1b de b2 a8 7d db d5 ae 1b 30 7d 44 48 be 1f 11 -69 5f f7 22 c4 32 41 5d 0c 74 ba a3 fc 0d d5 11 -66 ac 86 5b 31 0c 4f 5c 87 07 98 62 54 c8 96 04 -cc da bc e6 c6 92 44 66 21 89 8b 4f 5a 08 bc df -64 62 e5 18 ee 3a eb 75 e2 6d 8f 63 a0 6f cb b3 -df 09 8c ee bb 0f d2 f6 37 e3 a7 93 7f 4d 19 e3 -a1 92 4c 16 08 2e dc 33 3c b6 de 37 63 72 46 e4 -98 - -# PKCS#1 v1.5 Encryption Example 12.18 -# ---------------------------------- - -# Message: -1e 0d 18 07 a2 bd 49 6b b0 cb a8 41 c7 71 58 bf -a5 f8 aa 77 d0 56 75 c6 4a 5e b1 85 65 91 d3 48 -54 f8 65 92 5b 37 1b 68 6a aa b4 45 98 b4 a1 6a -b6 b7 93 44 d3 c2 3f 7d 5b f1 73 b8 42 d7 8c - -# Seed: -db af a5 33 2f 0b 55 27 96 63 6d 8a 09 28 b7 d8 -7d 9c ee 3d 4b e6 a3 1c 77 e1 4e 0e 5d fd d4 03 -ef b9 8f a3 38 81 6e 12 62 c0 64 96 fd e9 d5 57 -c0 0c c0 dd 35 fc 33 ac cd 79 a3 15 06 90 eb - -# Encryption: -1b 2e ce a5 fa 90 03 fa b6 55 98 57 c6 d9 4f 95 -70 03 f4 e4 1c 09 45 64 80 4f e6 96 39 e5 40 b6 -8f 26 3f aa ec a1 99 69 7a 48 85 8b 8a 0f ce a4 -91 05 7d f2 fb 8b 35 d0 93 d8 94 ae c1 7c 5c de -5d fd 8f 33 51 2b cc 66 cd e7 6d a0 73 36 98 5a -97 43 5b 6e fe e4 ee 09 d3 a2 8a ff 34 ce 6a e8 -75 0d a4 1e 16 ca 47 e9 38 81 8e 44 a9 b4 1f e9 -1a 6a 80 1d 35 5e e8 d6 60 e2 7e 4f e2 ce 7f 32 -5b - -# PKCS#1 v1.5 Encryption Example 12.19 -# ---------------------------------- - -# Message: -1c 10 5d 5e be a3 66 46 a9 72 84 c1 7a 86 c4 - -# Seed: -c6 f8 03 40 a6 55 7e 07 53 a9 57 3f e4 f5 21 49 -77 ef db 08 2a 50 eb 5d 5c 51 7d 46 72 9f d2 a3 -4a f7 ce e1 aa 46 b7 9d 47 e2 5d 83 09 0a eb 4f -50 22 98 c0 31 37 24 fa b5 4e 54 be bb 48 d6 cd -9b eb dd cb ee 0f 07 53 77 27 d6 5c 50 e7 d4 cc -0c 6d 19 fc 48 0b a5 78 67 26 2c f2 ee dd 9c fa -ba 60 7d 65 82 87 eb a4 2b 46 99 44 cc b6 12 - -# Encryption: -05 b2 3d c0 c6 2d 90 c1 77 1e ba 37 8e 43 17 9d -7c a6 af 51 5e 26 19 ae 4d 7c 8f c8 bd a3 78 cb -f7 a1 db ba 1a 14 f4 94 c4 e0 d7 13 38 79 7c 7e -e0 6e 1a 79 e9 ff 28 56 fb f7 4f e6 f1 a7 ca 6e -5b 9c a2 83 c4 c9 7e 61 cf 9f 40 73 e0 32 ca 27 -d6 9b 1b 4e eb ea 77 cc 95 a9 28 1f 26 b6 4a 05 -a9 39 44 c8 2c 5a 13 42 8e ce 21 fb 44 01 ad 42 -6e 7a c1 f0 5b ff 84 b3 47 cd c4 db e5 2e 67 8a -ed - -# PKCS#1 v1.5 Encryption Example 12.20 -# ---------------------------------- - -# Message: -f1 04 02 f0 02 05 c5 27 57 ed 6e 9d - -# Seed: -e2 ae e7 fc f4 3c ed e0 75 52 a2 df e5 b5 a9 ef -80 82 76 d8 f1 0e b3 f9 bc 50 f1 bd 94 0a aa e6 -34 c9 d8 a0 78 8d 44 d4 1e 8a 5c 60 36 49 ef ea -83 03 32 31 51 6c 69 d3 3e 12 f1 f5 d3 f0 ac 1f -c2 3a 9b 3f 5d a4 e0 ef 6e 45 50 cb 43 fd ff 02 -b2 5d ac 86 27 2d 66 db 59 cd d6 35 f9 c0 dd 0d -aa 08 57 91 0c 15 88 1b 16 0d 70 ea 53 40 5a a9 -59 f4 - -# Encryption: -0b 96 56 31 78 32 a9 40 c7 95 bb a5 8d aa 15 9a -4f 73 3e 82 6c e5 5a 4e c5 64 33 c5 16 84 44 4c -78 e2 e2 fc b3 7f 85 ad 87 79 16 52 2d 8a 35 a4 -3f 53 c5 95 17 a8 18 e5 21 e1 98 2a 50 91 bf 2c -68 b0 0e e4 9a bd 90 dd 77 6c 02 f6 4f 34 f6 80 -a8 8e ee 05 ec 08 88 92 bc 0a 95 55 b3 f2 0c 8b -ee 57 9c 0d dd e1 51 1a 18 af 98 bc 1d 9c f9 0b -81 bf 13 2a bd 58 97 0b 3e 84 d8 14 e2 7d 02 5b -73 - -# ============================================= - -# Example 13: A 1031-bit RSA key pair -# --------------------------------------------------- - - -# Public key -# ---------- - -# Modulus: -55 5d c2 ba f0 41 b7 f0 9a 04 78 42 3a eb cb 5f -49 b9 5d be 15 70 e9 a5 42 12 8d 33 22 87 86 6a -c4 cc 63 e7 6f 8e 3a ef 22 c9 75 3a 54 51 99 94 -24 52 41 8a 67 d1 a2 23 0d db 6f 42 22 c6 63 d3 -8e 80 05 0e eb 67 95 6e c5 f5 49 94 a0 be a6 95 -fa 59 fa df 2d cf e7 ac b5 4e d9 da 3d 0b eb 12 -2c 8a 69 1b 0b b5 1a e6 5a 77 4d 75 b1 b3 49 cb -68 c5 17 cb d3 86 ae 48 2f 05 ee 46 03 ec f2 95 -5d - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -55 5d c2 ba f0 41 b7 f0 9a 04 78 42 3a eb cb 5f -49 b9 5d be 15 70 e9 a5 42 12 8d 33 22 87 86 6a -c4 cc 63 e7 6f 8e 3a ef 22 c9 75 3a 54 51 99 94 -24 52 41 8a 67 d1 a2 23 0d db 6f 42 22 c6 63 d3 -8e 80 05 0e eb 67 95 6e c5 f5 49 94 a0 be a6 95 -fa 59 fa df 2d cf e7 ac b5 4e d9 da 3d 0b eb 12 -2c 8a 69 1b 0b b5 1a e6 5a 77 4d 75 b1 b3 49 cb -68 c5 17 cb d3 86 ae 48 2f 05 ee 46 03 ec f2 95 -5d - -# Public exponent: -01 00 01 - -# Exponent: -05 97 87 bb 01 23 fc ed 98 d9 34 1b 7a 8a 99 9e -db 50 76 30 8e 6d 00 11 20 3b e0 dd f9 a4 11 0d -0b 69 2c 1e 2b f3 90 2e bc 03 a0 57 3a d0 c1 93 -af b1 67 b3 ae 4b 50 28 a5 ae bb 22 04 ef 23 f8 -e5 83 60 be 94 84 95 1e 34 71 11 76 06 2e 53 e3 -f6 38 74 fc 9e 35 91 a9 d9 06 8a a5 e6 c8 c7 a9 -ab 08 e9 79 24 70 06 6d 71 a0 7c 34 33 dd 70 3a -42 a6 b3 a9 b1 bf fb 31 49 49 8d cf f8 b3 57 56 -ed - -# Prime 1: -0a 7d bd 7e e6 de f3 87 5b 4c 55 9f 56 69 30 7d -17 6b c1 25 b0 9f 5e b8 26 01 b8 13 48 57 6c 1c -a7 dc f4 c2 bd 7f 2b 42 a2 c5 46 00 02 fc e0 a9 -a2 1d ac 5a 97 97 db 23 3d 9d 4a 92 93 ad d3 df -73 - -# Prime 2: -08 23 0f cf 26 fd c5 75 11 9c f9 05 78 d3 66 56 -4c fd a8 65 a2 82 0f 38 bc d6 3e ca a0 95 57 65 -77 2a 88 32 fb 31 69 7f d0 dd 45 bb ec c0 4d d6 -a5 9e c1 1c 1d 5c 6e 87 7c 6b 9d 77 c6 a2 76 e3 -ef - -# Prime exponent 1: -08 d1 c7 d9 c4 d0 2c bd df 7c 7e 86 62 a8 2f 41 -19 cd 56 24 0f 25 0b 05 97 bd de 37 27 9b 86 a1 -58 64 a1 c6 8c 73 39 b4 dd 0d 26 59 a0 29 61 dc -79 12 a4 ef cb 7c b7 96 1a 97 fe 36 d6 bb 4c e0 -0d - -# Prime exponent 2: -01 d4 91 3b d1 d3 87 d5 3b af 09 bd 17 5e c6 48 -67 6d 2f b2 1d 0a 10 8e 7c bb dc c8 0b b3 4c 43 -80 b8 ca 86 5d 46 d2 2a 74 3b 31 f2 81 e1 08 21 -5e 84 05 80 63 82 65 42 88 d4 54 49 9b 1e f4 8b -75 - -# Coefficient: -08 7b 2e f2 11 44 8e 5c 96 1c 9f 6d fe e6 aa 26 -8e e8 97 7e 31 1c 07 cc 8d b4 72 da 6c 49 86 3f -aa f3 3b f5 05 dc fd 81 f5 3a 53 be 12 1e 44 5e -89 d7 e0 38 ef 27 f3 72 7b 51 2a 2b 80 94 41 20 -ea - -# PKCS#1 v1.5 encryption of 20 random messages with random seeds -# --------------------------------------------------------------------------- - -# PKCS#1 v1.5 Encryption Example 13.1 -# ---------------------------------- - -# Message: -7b c8 1d 81 46 e3 59 - -# Seed: -76 65 5e 4a d8 fb 99 34 d1 84 7c c9 0c 02 47 3c -57 2b 5f df d1 64 a9 70 a3 cd 96 bc 8c d7 96 ac -80 2c 50 28 22 90 ea d4 c7 7a a5 cc 2a 7e 34 34 -18 c9 df 47 ef b8 87 86 af 4c c8 d1 82 1c 50 07 -39 09 e8 4f 7b 45 1a f4 a3 2a ee 6c 7c c8 97 ee -f7 66 0e 1c 4c 53 5d 10 03 9d 3a a2 03 5c 98 51 -01 25 ec 5f 2a 2e 9d ac 63 95 89 ff 8b b3 9f 07 -43 8d ef b7 d1 33 77 - -# Encryption: -14 6d 65 12 df df fb c0 2d 5d 54 bf f3 e0 36 a3 -5b 4c 2a a9 44 d6 f6 72 47 93 30 65 37 08 1b d1 -1e e5 68 a4 e9 71 9f 1e 31 f2 d1 4e 18 c2 da 62 -44 70 c5 b0 ff ab 39 7f 92 31 b6 ef 46 34 f6 3a -18 28 5d f3 41 45 17 a5 1f 93 58 6d 66 b0 3c ab -1e 78 a4 eb 94 1b 9d 3d 7f 92 03 b5 9e 1c b3 bb -48 64 b6 46 dc 17 a0 64 11 eb d5 ff 03 37 20 58 -88 1b 4a 24 b2 4f 4c 2d cd 5c b4 4c 2e ea be 6f -72 - -# PKCS#1 v1.5 Encryption Example 13.2 -# ---------------------------------- - -# Message: -68 6a 81 0a 03 1d 80 61 e4 1a 77 6a 7d fb db 3a -f6 26 fe 97 69 de ee a4 60 ba 28 67 ac f0 3d 9f -92 4d 32 1e 8a 8f 42 5c 28 51 92 98 67 a3 26 ae -27 5b 49 d2 - -# Seed: -f7 9b 49 f6 a6 be 3e 68 88 4c 80 df e1 e8 50 1e -54 4c a7 82 23 88 43 d4 19 76 41 12 25 0e dc 1b -69 c7 d1 c3 58 7f dc 75 98 7c 62 cb 4c 33 bb 81 -20 2f 72 db a7 ee e2 4b fc f8 9d 4d ae 15 0c 07 -27 24 58 fb 01 b6 cd 27 09 25 - -# Encryption: -08 8a 47 f1 1c b1 34 de c4 b5 08 77 25 e8 a5 bd -04 f7 fe 58 2a 69 91 4f 68 3e e6 de 7c 32 4f ed -7e 07 f5 70 05 c0 e0 df 75 00 e3 70 a4 2e fd 6f -e5 b2 90 19 95 19 b1 98 06 b6 e6 91 69 8a fd 95 -17 d7 80 da 0b eb f7 0a 26 d6 5c 5b 64 e3 40 a6 -40 5e 88 95 55 df a0 a9 2c 42 9a e9 c3 ec 88 e8 -88 ee da 04 5e 41 0e 3a 9e 61 99 ab 39 eb 1a c8 -64 e2 28 c2 cc 1b 64 e3 36 16 95 b5 aa 11 3d c5 -a7 - -# PKCS#1 v1.5 Encryption Example 13.3 -# ---------------------------------- - -# Message: -18 54 4a ad 24 ab 07 5d 3a - -# Seed: -23 20 4b 8a d9 45 75 f6 e2 f4 6c 79 7b b8 73 aa -3f 46 1a cd 05 e7 db 78 46 a2 31 57 59 2d 52 e9 -a9 a7 04 38 19 c4 88 96 27 5e d9 df 0b 1e 54 04 -93 c0 77 ea 15 41 9a fa 87 dc 35 f9 fd f7 ab 8a -af 47 ee e1 d3 3e cc 28 95 06 45 f1 b6 91 38 2d -87 54 1e d0 64 06 93 0c 7e e1 10 9a a5 ca 75 a4 -90 93 4e a8 d3 b2 a0 4b a1 52 1b e0 92 c8 68 f7 -ea 5b e3 78 ea - -# Encryption: -34 d6 e5 46 d6 9e 27 06 cd fc 6d 9e 74 18 f8 be -03 e4 57 56 a8 b1 9b 60 c2 1d 27 34 20 aa 7d 5e -bb bf 46 0e f4 c8 4f 6d 47 77 e6 bf 20 3f f9 18 -5f d5 7d c7 23 b5 8f 35 c1 e9 b5 ff f4 7c f9 5a -e5 69 a5 cb 64 dd 9c b8 d6 40 7c 0b a5 ef d1 48 -f1 8b 56 96 b0 47 da aa a2 77 ed 8d 45 28 61 4e -e3 da 52 38 71 32 b7 a9 cc fe 07 3b e5 03 32 c9 -e2 83 73 53 c6 7d aa 0f df ef c3 b6 52 cf 7d 79 -fd - -# PKCS#1 v1.5 Encryption Example 13.4 -# ---------------------------------- - -# Message: -d9 0f a3 8f - -# Seed: -3e 09 f6 50 6f 7f 71 91 47 ae 21 e3 94 53 ae 0b -41 60 98 da 10 3a f8 4c 0f 7c ef ae 50 01 99 c9 -85 59 67 a8 30 0a 1a 7f 8d 2c c1 3b 91 72 7e eb -d9 3c f7 7d 3f ac b1 9e 83 a8 40 eb 58 3b ce a6 -c6 11 3a 9c 6f 6f 1f b5 a0 b3 32 55 9a 6b 43 15 -47 45 7c da 1d 3d ce e3 41 d1 71 c6 2e 95 e7 ea -ae 16 ae 0e af 1c 1f e8 10 fb b0 b7 13 8c fa 3d -66 c6 38 50 f3 81 e4 9a 2d ad - -# Encryption: -27 13 3f 43 79 1b 39 22 7c 8e 95 4e 1c aa 83 0f -a6 59 95 f8 a9 f8 8e 0d 1f 75 67 85 ed 5c 8c 78 -54 fb 1a 9d c4 a9 5f a4 4d bd f0 f2 85 99 c4 72 -84 93 79 75 0a 6a 1b cb 42 ca fb 5b bf e0 8c 65 -10 6d c8 40 cb ec 8e e2 cb 5a 20 6c 81 18 aa 06 -1d a4 d2 1d 1b 5c 46 11 7f 77 c8 96 bc 71 ce e2 -f8 75 7a ff 5c b2 b3 c3 47 74 55 8e 8b 82 ed b4 -ef 9b f2 d4 f2 ca 4f c5 97 fa b4 0a 2d 74 e5 23 -3a - -# PKCS#1 v1.5 Encryption Example 13.5 -# ---------------------------------- - -# Message: -fc bd d0 24 8d f8 57 af 17 5b 43 96 87 5c 00 6d -51 14 cc 11 16 42 80 04 38 08 aa 79 88 6c 4c aa -29 11 7b f3 ce 45 a9 be 55 07 c6 b8 bf 0d 30 - -# Seed: -2c 9d 14 57 ba 44 50 df 40 21 e4 e5 11 83 f7 95 -d0 91 c0 7f 6a e0 dd 96 2d 57 28 c5 4b 7f c3 c7 -72 d7 9d 7b ec e1 bb 0c 99 6c 9a c0 7f 99 54 dd -a7 68 7b ec 86 bc db 31 40 b2 45 bb 5e 01 27 5b -38 d1 f2 52 33 5e 36 c6 8c 0e 58 f4 ce 11 7e - -# Encryption: -2c ed de f2 02 69 1a ae 42 71 85 2a 89 83 de 7c -21 4c ee 00 db e1 a1 58 84 f4 c3 c1 de 7a 3e a0 -1e cc f4 7a e8 6c 26 93 24 ae 52 37 73 37 b6 ca -82 e8 5d 55 3f bb 2e e5 f9 77 dc 66 4e 14 2f 1b -54 53 8f af 85 ca c2 7c 29 f2 ed 0c 40 42 67 33 -5d 48 ea 40 e8 a3 dd d8 96 bb b3 e0 ed f0 e1 6f -9e 89 44 68 3b 8c fb aa b5 ea f2 25 30 f1 58 c4 -88 0b c3 e4 60 c0 6a 24 03 42 21 0a a8 7b 79 09 -68 - -# PKCS#1 v1.5 Encryption Example 13.6 -# ---------------------------------- - -# Message: -25 f2 a3 06 ea be 6e 3a 18 30 dc 93 6b fa 41 cd -eb b8 80 05 17 5d f4 a3 c9 c4 64 23 01 45 61 11 -5a a8 - -# Seed: -cb 8e 0f f4 1b ab 01 a1 42 f9 6e 7d 7c d3 92 82 -0a 82 a1 73 66 74 b9 21 35 ef 33 08 96 88 dd 30 -b2 c2 f7 ba 11 1a f7 8d 3f 76 a3 7f 66 7d b3 97 -5f ce 64 ec 9a fb 09 68 50 7f 7b 31 09 7e aa e4 -88 1b 36 24 06 56 16 ca 09 0c 20 4c 1f a4 be 13 -48 50 ea 5e 90 fe cd c8 45 b9 d8 39 - -# Encryption: -4c 7a c8 12 45 e7 d4 de 3c 4d bf b3 15 c4 68 34 -1c bf 22 87 57 35 c5 f8 05 90 50 58 53 06 8d 6b -e7 03 9b 1c ee 6d 07 ec b7 66 9c 42 f6 b9 2f 2a -71 f6 45 f7 2c ba ff 76 34 16 37 d2 f1 d6 b1 fe -ce b0 7f 21 e1 4c 70 fb 77 bc 7f 87 b0 31 c2 c8 -f2 ad a4 ec 43 e9 12 68 2c 2f 49 63 9e 75 71 57 -18 77 fc 48 1c bf 26 98 b3 73 15 bd 4b 93 07 83 -f4 79 45 64 2b 7d 81 5e 04 32 d4 5d d1 d0 d3 b2 -a5 - -# PKCS#1 v1.5 Encryption Example 13.7 -# ---------------------------------- - -# Message: -a0 da ab 4f 9f e0 4a 2a 51 bf 08 32 70 11 5d 0d -06 dc 29 21 cf 8d d1 3f 5c ff 26 04 bc 55 1e fd -98 3d 9b 25 b7 27 4f 3c cb 0a dc c1 1b 1a 39 54 -ab 9d b4 - -# Seed: -c8 1d 1c 02 f0 6e 7f fd 6e 03 b8 1b 71 93 aa bd -ac 56 63 ab 14 25 a6 7d 1a 29 50 88 5f 5d 1c 4b -72 5e 20 9d cb ce 9f 7b f2 96 75 23 42 f1 84 fe -a0 6a 7d 6c b2 bd 39 b2 a3 18 07 51 64 a2 e7 61 -b7 02 70 2b 01 92 46 c1 e5 0e 6e - -# Encryption: -06 c0 6c 97 5f c6 b9 c2 60 d3 d8 81 3b 57 14 24 -8b eb 39 9b 7d 68 fc ac 25 03 38 ca c5 4c 40 72 -95 9f 62 03 84 44 e9 e6 66 ba b5 f9 36 06 70 47 -bc af 4b a4 ed 68 c6 c8 18 57 46 29 32 56 e7 c7 -24 16 65 81 54 de c0 67 f4 25 0d c6 b2 9b ba c1 -8e 82 1e 49 a4 c9 b1 63 83 1f 7b b3 83 92 32 6c -6b 46 85 46 4f e4 f0 26 c9 ae 4d bc 58 49 47 7b -4c 26 0a a4 ac 02 d2 1a 26 40 20 f1 0c a1 1b 4b -0e - -# PKCS#1 v1.5 Encryption Example 13.8 -# ---------------------------------- - -# Message: -74 3c dd b3 61 c0 bb 32 47 64 95 ad 5d c6 3a 2b -ce 5f ba c1 c8 c2 03 93 69 32 67 d8 43 f2 8b 8c -f3 ea 13 e3 74 e0 9d 0a a3 f7 ae 5d 8f 72 d8 e6 -cb 9d bd - -# Seed: -f7 2e d2 d0 69 b8 ae 50 27 04 6e 03 27 b9 87 84 -58 09 b4 e8 16 c8 86 58 24 fc 4a 23 01 b4 56 80 -2b 18 9c bb 43 f0 48 32 ac 25 c8 48 d7 4f be 1d -62 5a a9 8a e0 5e b6 25 47 76 1c 78 b8 17 61 c3 -03 f9 3d f3 fc 0f ea 3c 5a 7b b1 - -# Encryption: -38 3e bb f1 59 e1 d0 a2 1c 74 eb 61 e3 64 3c b6 -31 be 18 c7 a2 a5 4e 24 89 33 58 7d 34 5e 99 52 -72 46 6d c1 bd 61 3a dd b4 cd 7b a5 01 92 fc 2d -89 4d 7f da f7 83 63 b0 79 d9 98 01 9f 16 42 31 -cc 2d 75 2d b7 6a 9f 9d 0c 52 04 bf b0 f9 93 05 -53 09 6b 5b 76 80 b0 89 4f b9 9c 11 42 5c 67 d6 -5d 96 5e 35 12 8e 15 47 46 b3 fe d8 d0 16 99 30 -70 a7 0e 07 eb eb e0 6f 2f 4e 97 6c 9a 63 fb e3 -20 - -# PKCS#1 v1.5 Encryption Example 13.9 -# ---------------------------------- - -# Message: -e5 31 92 fe bc d3 69 58 bd 08 03 f2 ea 0a fd bf -df 99 3b 58 a9 e4 ee 70 df 95 b0 6d 4e 7d 74 b6 -74 5b 87 f5 81 f3 42 f8 ae f9 ae 4c 31 82 c4 19 -9b 65 51 fe 18 f8 d3 b9 ff e4 - -# Seed: -ad 98 2f a7 29 f2 7f ce 8a 67 49 03 ec ac 69 4d -d3 34 13 c7 8e 34 28 ae ed 46 9f 84 d9 57 5c 6d -a2 75 29 f2 c1 4b 53 b7 58 d2 0f b6 b2 47 c8 29 -c5 fb 1a 16 af 55 07 9a 70 73 cc a0 56 25 96 2b -6d 1a 6b ef - -# Encryption: -22 1d 88 a8 6c 9e d3 7a a0 9c f5 72 54 97 82 e5 -8c a8 d4 85 1f 01 6a cf 28 9e e8 bf 23 79 0b 1a -8f 14 8c 16 55 08 bc 3f db 1e f9 c9 01 16 27 42 -7c 5f 32 e5 ca b8 50 cb 6b c0 bc 04 a1 1d a2 f0 -18 13 f3 41 41 7b 3e 63 2b ca e0 02 97 7d 64 ff -c9 62 c7 fa 75 72 f5 6d 26 17 e2 a5 2d 3e f9 17 -c4 4a 33 b7 15 82 af f1 39 0b 7c 77 4d 60 7c 8d -57 8f 7b c9 0b 35 80 d7 7b 03 73 19 14 77 bc 14 -26 - -# PKCS#1 v1.5 Encryption Example 13.10 -# ---------------------------------- - -# Message: -d0 eb 48 0e 27 45 77 9c 8a 30 fe 82 0a ef 56 d4 -ce 39 ef 84 ea 40 c7 df 0c - -# Seed: -46 5f 91 e3 f0 7c b7 22 83 bc 2b be 52 8b 9a b3 -68 16 54 fe 20 b6 1a 33 f1 23 ad e5 2e 83 2f fa -8a 1b 74 a4 44 3c c8 92 95 a2 1a 2a ac 98 74 da -0a 56 79 d1 8c b5 c4 cd 69 0b d0 a2 0c bd 9e 9a -a0 72 aa 87 13 44 8f 95 e5 d6 a6 e6 24 d5 b9 08 -5c fc ec b7 99 2f 10 ea 2d a6 d6 26 eb e5 43 d8 -70 22 36 ee 6c - -# Encryption: -06 f3 f8 c7 0d 0f c4 e7 44 73 e6 8f d2 3c c9 df -1e dd 42 35 b4 28 b7 72 a0 83 b4 1c 34 51 62 5a -6f 15 de a4 bf 31 3b f4 f0 3f dc 4f e9 f6 a2 07 -1a c6 9a a3 f0 fc 41 57 ef c6 21 f9 59 40 61 f6 -c1 98 06 bd 5d 75 9a d0 23 ca d1 48 e4 47 d2 59 -b6 2b f7 34 25 91 be 83 ba ec 77 71 4c fe 2b 90 -1f 36 9a ea 68 02 48 ba bf 06 87 10 cb b9 70 48 -4f 32 4a 23 52 53 a3 1e 02 25 34 ab ec 7b 39 96 -06 - -# PKCS#1 v1.5 Encryption Example 13.11 -# ---------------------------------- - -# Message: -1c 42 97 f6 df c0 7f fe 57 59 aa 1e aa 5b 79 37 -8a fc dd 1a 9a 33 a2 13 3a 39 ac - -# Seed: -a7 af 2a 86 01 e4 08 c3 18 fd 1e 0f 82 44 5b 50 -95 44 d5 ec 97 a7 95 8f 59 4b 20 54 c5 09 f7 ef -fd d4 16 30 6b 2b 2c 91 b5 a6 37 a1 56 82 0d 60 -1a 23 ff db 31 fb 35 d3 05 aa 93 74 57 8e ef b8 -10 2e 8b 72 44 19 1f 4e c7 4a a2 6a 0b 7d b3 6c -ab 44 99 9c 81 b3 61 57 01 6b 55 89 06 e5 d7 08 -8d 51 32 - -# Encryption: -3c df 2d c6 7a 4a a5 31 cf a1 42 80 08 bd 05 44 -ab bd 03 29 22 dc c2 43 6d a0 b5 d7 ef 9a 70 17 -e6 19 3a 8b af 38 c5 8e 91 96 2d 65 a3 75 f0 8c -1d 55 57 9c f9 4a 79 5c 9c 70 b6 e4 2e 16 43 ce -f5 40 dc e1 e9 86 dd 99 88 87 b6 95 52 44 4b 6d -e9 3b a7 d5 f7 64 83 54 bf cb 70 21 39 ed 39 54 -94 7d 7b 18 0b 6c 02 bc ad 82 43 a0 ab 27 ca 66 -52 76 29 1b 46 cc 31 8d a9 b5 f6 0a 04 af fe bc -b0 - -# PKCS#1 v1.5 Encryption Example 13.12 -# ---------------------------------- - -# Message: -00 92 7f ca 7f 5e c7 6f 54 8d d4 82 63 e3 39 be - -# Seed: -de bc 2c 1f 22 d9 32 ff cb 89 7c f1 0a e6 2c 3e -05 1e 3f 78 46 3a e6 7d 95 61 cf 1a 73 d5 5c 4b -14 ac a6 c2 1d 83 ba f9 76 cd 8b f2 46 c2 29 78 -61 a6 b1 e9 c9 ef 30 81 c5 1c 4b 68 7c 67 b5 dd -0f e0 f7 55 3f 73 8c 2c 8a 5f 81 d1 26 8a 0c 2d -4a 46 1d 63 5b 0e 59 d2 3b a4 17 ab b8 04 5e 9c -10 d6 6b 0e c8 92 f9 53 c6 f2 11 f0 2f f0 - -# Encryption: -49 b9 20 89 b5 2a b7 8c 33 b5 bb 30 32 cf 70 24 -94 4a c6 8e 13 9d 2d 56 06 8c 7a 26 2a 53 e7 80 -9f b5 b0 15 65 cc 65 61 d7 13 30 46 87 52 30 ac -21 75 64 72 96 cf 2b 48 47 e1 2b 73 63 19 72 53 -21 be a2 64 75 7d e0 eb 49 88 72 d8 9a 4d 7c e4 -a1 bd b7 33 5d ae a7 8b a1 96 fd 50 d9 03 82 e6 -d6 2f 8d f7 ae 68 5a 1d fc 84 9e 11 99 7d ee 88 -60 d1 0f 70 7b 0d 35 36 5a 81 24 30 73 1e 7a 50 -8d - -# PKCS#1 v1.5 Encryption Example 13.13 -# ---------------------------------- - -# Message: -8b 6d f2 d6 da 63 1a c8 d5 55 6a 26 97 54 28 fc -4d 20 ef 5b 4a 1f 06 8e d2 e5 - -# Seed: -ff 2c 06 98 85 2d 1b 0a e3 c5 c5 c9 be 26 e8 3c -90 44 84 2c 16 07 f5 f4 08 6a 6d 6c f1 08 ad ca -61 ea f6 65 40 0d 7c ff 2a 3a da df af d8 0c 64 -95 6d a2 d7 d7 c1 35 ab f5 a0 d1 76 06 25 56 eb -4d 8b 75 b9 5c d1 1e a9 c0 44 2f 84 6f 03 7d a8 -77 29 02 bf fc de 65 59 e1 b5 9e 60 c6 d0 f9 89 -6b a5 c3 c4 - -# Encryption: -41 52 76 69 80 33 39 eb d8 f2 d1 cc 18 6c 7e 8e -bb 80 cf 4b 94 9d 8a 28 43 65 32 9f 3c e4 6e bd -ac 0a 96 9f 67 61 90 0c fe 34 2b c8 4c 7d 69 51 -ac cf 45 28 0b af 24 a0 cb b2 42 a9 42 18 ef 9f -d3 71 b1 e0 08 24 62 62 07 0b f5 54 ed 57 00 7b -97 39 79 16 35 86 1d 86 c6 5b 1a 82 56 f4 25 f9 -f3 ae 51 9e 1b 1b dc 58 75 b8 78 dd cf c1 47 0f -ee f2 ae eb 01 4b 7e 33 ef b9 f4 dd 07 83 d1 71 -23 - -# PKCS#1 v1.5 Encryption Example 13.14 -# ---------------------------------- - -# Message: -ea 03 96 69 bc d7 a8 cd ce ab 58 55 91 b5 63 61 -e9 0b da 0e a4 40 10 49 64 e8 89 ec e1 8a eb 04 -ce 0a b5 b1 cc b2 30 ae 03 25 5a 39 - -# Seed: -20 4f ae b3 13 96 5c c1 a1 8f af 10 39 fd de 68 -1b c4 3b 22 3e 28 bc 47 1c 50 42 3d a0 bd 79 7d -6a 8c 73 8c 54 03 3c 8e 55 9e a2 d1 0c 3b 79 b8 -0e 2e fd ec fe 89 1c ea 2e cb 34 51 a1 a8 e2 ec -2f 44 7b 79 8d 7d e5 64 1b da 4a a9 90 b3 01 e1 -dd e7 - -# Encryption: -4c a1 c8 5c e3 c6 20 d4 29 91 cf 41 73 3e ad 26 -a0 93 11 18 5f ff e5 8f 41 28 8f 6d 0b b6 84 5b -2d 5a cf 1a a0 6c 78 d7 1f 76 93 96 a9 43 42 03 -e3 8b b0 1f d8 8e b2 3e 6b c5 1b a0 c5 f3 ee b3 -27 13 ca d4 d0 87 80 50 61 ab 47 3a 15 67 e7 9b -bf 4e ae 49 36 f1 8d 02 05 b3 74 6a 17 e0 64 8c -52 22 3d d9 f9 99 72 81 b5 35 ab 2f b3 cf f0 3c -a8 90 f7 10 aa 88 fd 2d 0f 39 2f f4 a8 8d 31 1a -a1 - -# PKCS#1 v1.5 Encryption Example 13.15 -# ---------------------------------- - -# Message: -0f 46 2b eb c6 - -# Seed: -4e ae 5d 54 92 d9 44 ff db 04 2a d9 50 16 81 ad -b3 eb 6a b5 28 b6 e8 13 53 55 b6 23 ab 55 a7 40 -87 b1 9f c5 9b 85 34 da 9a 88 da 29 f6 6f 71 f9 -45 2a ed e0 e3 e9 39 07 70 9c 34 49 56 72 85 74 -b6 6f b9 a6 f3 38 3d 58 a0 13 6f 94 c4 ed 86 ca -9d d3 8b ff 07 0f cc 2d ef 29 bd d6 fc 98 59 70 -96 7f 02 fd 6f 93 01 cd 56 d0 48 a4 42 d7 02 40 -9a 98 a1 32 ab 6b ed d4 fe - -# Encryption: -29 36 9e b0 0a 3f 87 84 38 c9 38 f9 d7 bd a3 85 -6c 45 a6 d7 7c 17 88 51 1b 98 2c 58 f6 3d be a3 -3e 63 ae 1d 45 c2 df 6b a8 0f 0d e9 97 59 2e 1f -8a 3b 3a 09 ed 76 06 51 45 3e 10 99 78 cf de 3a -60 0a 74 fa a8 a9 1b 7c 72 4f 97 3c b8 0b 96 83 -5f 05 0b 7d c0 9d 2f 15 74 76 c5 b7 05 1f 94 d9 -c0 f3 17 e1 f1 88 e3 09 80 79 5b 09 6c f9 bb ce -b5 63 6b 3d b9 87 05 4a 56 08 75 22 75 96 29 97 -e7 - -# PKCS#1 v1.5 Encryption Example 13.16 -# ---------------------------------- - -# Message: -51 4d 3b 38 00 22 b3 78 2e 8a 77 d7 7b f2 4a fd -f9 2f 33 97 47 4d ae 0d 4b d6 e4 fa 31 ca 60 83 -df 49 6b 36 62 6e 7f 8e 1c 91 9f 9f 2e - -# Seed: -d4 d3 a9 e8 fb eb 1d c6 07 b4 dd 78 87 ba 25 c3 -d0 bd 81 34 84 bd 53 76 dc 83 ef b5 8e c5 b2 56 -2c b4 4f 98 5e 59 f5 0b 9a de 3c 66 71 6c c6 f4 -2e 51 c6 0a 2f 4d 8d 75 bf b9 b8 24 10 5d 1e e1 -58 35 f5 f5 f2 54 fc 6f 68 0e ee 0b 85 af 54 7c -17 - -# Encryption: -19 fb 39 1a 31 00 87 bc 3d 08 79 1f d5 99 94 be -80 12 df fd 76 a0 2a db d4 79 cc 0c 15 56 60 5d -4d a2 a3 46 1c 7c 71 a8 5e d8 cf 85 e0 8f 45 da -de 51 8c 00 af 09 f4 93 ee 8a 55 46 ff be fb 05 -3c ca 2e ef 06 84 76 3c f7 80 f2 e0 97 bd 8e 5c -2e a8 4c b1 a8 b8 f8 49 6c c9 18 16 7f 65 6c dc -9e 1d 3b 2a 23 38 b6 4c 61 e9 0e cc 27 4a 12 10 -e3 db 57 83 ae 3c 00 ab d3 74 8a 81 0f d9 14 91 -14 - -# PKCS#1 v1.5 Encryption Example 13.17 -# ---------------------------------- - -# Message: -fb a1 63 17 b0 93 08 3e 37 20 aa 06 48 17 e7 4c -a7 51 a5 17 87 4b 69 26 50 c4 14 7f 11 9f 68 90 -70 2c f8 b1 4f 0c 18 82 21 2d 72 40 6c 3a 45 d7 -d9 ff a4 31 24 10 a6 - -# Seed: -9c c9 a4 bf 8c c2 75 a6 b9 b1 35 10 31 91 10 91 -7a d8 53 24 c5 a4 34 5e 58 f1 fa 47 27 5e e5 92 -15 69 dc bc bd 72 36 70 cf 4a 24 eb cd 57 f5 7e -99 8c 4b bd 4a 95 67 9d 60 ba a0 ab e8 79 66 8a -2c b6 ed 0f b9 4e 4a - -# Encryption: -4c 41 b9 cb cc 6f a8 7f 23 f1 7a 36 d0 51 e7 78 -0a 07 06 56 ca e7 be ba 14 fa 91 c5 55 b8 58 8e -88 09 e7 d3 35 4e 7e f5 e0 fa ef e1 cf 39 2e 6f -da d4 04 4a ef 08 e3 3e 6f c2 01 c5 47 fd bd f7 -c7 3d 3b e0 96 ed 25 3f 9d f4 af 52 e1 3b 9a 19 -25 aa 73 93 a6 42 95 30 20 92 01 e5 5b 20 e5 1d -50 05 d0 6b 58 35 3b fa fc ee c3 7d 60 e1 ca 0d -9d dd d8 68 0b d0 a5 d6 92 e7 4f 2d bd fc e2 66 -02 - -# PKCS#1 v1.5 Encryption Example 13.18 -# ---------------------------------- - -# Message: -5f fe 82 e0 33 54 42 45 b8 49 62 d3 92 7c 2f a5 -99 72 ef 59 c2 37 a3 86 a5 1b d0 ba 1f 2c 1f 8e -45 b4 6a 05 ad 97 db 49 d3 ac c6 34 4f 1e da df -65 64 c2 8c e1 - -# Seed: -cc 23 59 bf d0 d5 7b ce bf 07 5b 87 a5 85 a9 bd -e6 59 3e b2 49 61 ef f1 98 7e 73 56 05 d4 e3 0e -97 19 37 f6 f3 f5 be 52 78 fd 47 6d c6 60 ee 07 -30 cd 07 e5 d1 f4 20 09 a3 33 31 2d 93 28 f3 b0 -08 5c 40 75 bc 70 9a 10 f1 - -# Encryption: -05 8b 50 e0 bc a6 b9 34 c0 1b f7 c3 3b b6 15 b7 -22 ea 41 80 7a 7d 2c 7c b3 d4 38 e2 8d be 33 3e -d6 d8 37 47 7a f8 4b b0 06 bb b1 0b 36 94 4f 15 -d4 f6 d2 8b 5e d2 49 d5 69 0c 08 37 a1 6e 15 7b -a8 80 22 74 10 1c d4 4e 7f ed 72 a7 59 81 c9 75 -66 bc 70 e5 55 97 02 bf 5b 62 fb 09 b2 13 60 56 -73 aa eb b7 fe 9b 1a e6 d8 04 03 a2 01 33 80 3e -1e d2 35 0b 8e 15 ff 01 9a 70 0f 2a be 87 d6 e7 -33 - -# PKCS#1 v1.5 Encryption Example 13.19 -# ---------------------------------- - -# Message: -22 63 3c c3 fe 7a 7b 4f 00 fa 99 9c 4f e0 d8 82 -c3 1b dc 0d 67 0c 0c c3 d2 88 96 1f be 63 72 e0 -e5 32 46 42 c7 b1 fa 85 2e 1b 4f 69 6f 12 f5 58 -66 - -# Seed: -3e df ca f4 88 71 d2 91 d5 b7 f7 72 3d 92 d9 51 -51 52 b6 bf 52 b8 23 69 9c 58 8f 75 f3 4e 37 95 -55 0d 07 81 18 e2 86 c9 6e 90 07 ae e1 54 f5 7c -e7 f1 d4 60 39 47 3a 4a 37 a9 b5 90 a3 7e ea 59 -94 7f e8 58 7c 95 69 88 bc b1 74 e9 7c - -# Encryption: -3d eb bc 6c fb 0e ed 87 16 6b cc d5 4c 75 97 ad -36 ca 0a c9 6c f1 66 76 e1 87 4b f5 f1 0a 0e c6 -9c 3b e2 25 96 78 ee a6 3a 18 08 d9 06 65 ff ce -9a f0 82 7e e6 29 ed d6 59 43 43 7f 8c a0 a6 71 -17 2c 52 1c c0 d1 dd 01 e2 2f 20 a6 c7 9c 42 7a -da 88 56 00 0c 4e 03 5d 9c 5e f2 e1 05 f2 c9 f6 -45 7d 9e e9 5b 43 bc 4b e3 29 4a 0e e1 d5 c8 33 -ae 91 07 8a ed 09 e7 92 bb 42 c2 5e 00 b0 87 e5 -61 - -# PKCS#1 v1.5 Encryption Example 13.20 -# ---------------------------------- - -# Message: -55 2b 38 4c 5e 51 74 f5 1f 38 0d 8b 53 e3 c8 97 -b4 8c 66 9a 9c 2d 11 98 5b 86 54 de 7f 76 d9 62 -39 6a 37 b9 53 41 f9 9d ec e4 af d7 1d 3c 84 e1 -28 7b 0f 0f 86 ee ff cf d9 7b a1 88 e3 79 9e - -# Seed: -2e 2f 3e 3f 46 d4 74 0c b2 6c bc 65 aa e2 af e4 -9d 0b e6 66 39 d0 db 10 df d6 af 60 64 46 f3 b7 -de 98 21 2f 86 17 4b df a5 b2 e2 35 85 07 45 3c -20 ad a6 9a 4f fe 0a 35 e1 2e fb ab 3b b4 4c - -# Encryption: -14 92 91 ee b5 36 fc 07 03 f7 bd f1 f0 31 a4 30 -cc 83 ad c4 3e 09 68 64 91 26 69 34 ef 37 ea ea -b1 1b c7 f3 91 49 ab 33 43 66 94 59 36 73 cc c6 -39 0b 52 9e 64 d3 42 e9 f2 1d 17 6d a2 1f a6 5a -bd 57 ee c6 0d de c7 d1 a0 93 db a3 76 44 5f 1b -cf e5 a6 aa ce 9f 13 42 af 39 db 8a d4 85 ba 22 -2d 39 12 62 28 fa ee b4 9b b3 b2 71 fd 38 e1 15 -25 d8 03 15 4e 74 08 4b 75 c3 db cd ff 2e 3d 10 -42 - -# ============================================= - -# Example 14: A 1536-bit RSA key pair -# --------------------------------------------------- - - -# Public key -# ---------- - -# Modulus: -be 0c a0 1f 9c 17 21 66 f9 12 39 1e 5d 58 dd c3 -0d 5d d0 27 9a 49 bb 31 2a 31 e4 c8 a6 6a 52 fb -4e 8b 67 42 fa ac b2 24 c3 03 9f 1e 19 8f 33 23 -b8 88 ba 0e 35 bb 94 c5 11 bd 22 b8 86 40 5a 71 -5e 40 9d e3 bc eb 4f c9 91 1b 0e 9c 3b 1e 42 e2 -57 d5 bb ea 07 22 b5 d5 dd 35 37 56 9d c7 56 06 -46 a7 50 b8 7e aa 6f 3a 40 5a 94 bf 2a da 72 b5 -0a 4b 01 87 bb 9d 00 ec 45 1d 50 a6 a9 1a 1e 2a -91 19 2a 7f d7 56 b9 00 14 1f e8 8f 96 e2 08 0d -fd d8 01 66 a7 bf 67 e3 71 44 d0 9e 3a f8 99 74 -e5 7c 72 b0 3a 2b 88 fd 29 95 25 2a ce 4f 30 e2 -e4 7c 28 18 05 72 40 53 6b 58 db 42 07 50 9e 59 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -be 0c a0 1f 9c 17 21 66 f9 12 39 1e 5d 58 dd c3 -0d 5d d0 27 9a 49 bb 31 2a 31 e4 c8 a6 6a 52 fb -4e 8b 67 42 fa ac b2 24 c3 03 9f 1e 19 8f 33 23 -b8 88 ba 0e 35 bb 94 c5 11 bd 22 b8 86 40 5a 71 -5e 40 9d e3 bc eb 4f c9 91 1b 0e 9c 3b 1e 42 e2 -57 d5 bb ea 07 22 b5 d5 dd 35 37 56 9d c7 56 06 -46 a7 50 b8 7e aa 6f 3a 40 5a 94 bf 2a da 72 b5 -0a 4b 01 87 bb 9d 00 ec 45 1d 50 a6 a9 1a 1e 2a -91 19 2a 7f d7 56 b9 00 14 1f e8 8f 96 e2 08 0d -fd d8 01 66 a7 bf 67 e3 71 44 d0 9e 3a f8 99 74 -e5 7c 72 b0 3a 2b 88 fd 29 95 25 2a ce 4f 30 e2 -e4 7c 28 18 05 72 40 53 6b 58 db 42 07 50 9e 59 - -# Public exponent: -01 00 01 - -# Exponent: -f3 7d 28 d6 1f 28 99 a5 c0 e0 a0 74 9d 13 89 38 -7c 64 c8 c3 58 a9 71 da d1 3c ff 85 c5 9a 62 dd -a7 bb c0 f7 e5 bd c6 5d ff 9d e9 c7 45 40 46 31 -75 81 48 16 8d fe 6a c0 a2 87 6a 56 05 3b ab 2a -2a 9f f2 72 79 4d d5 d8 13 9e ed 10 bc fb 4d f3 -30 20 d5 9e 30 48 fd 2f 0c 43 14 26 14 5e 36 a1 -d0 a6 bf ce 44 43 ef 3c 7e 31 d4 a9 2f b8 51 7a -49 f7 88 c3 b4 e1 37 39 5a 4b ee ea 63 e0 e0 ad -c3 22 4f 98 09 25 03 7d f6 f5 b2 6c 00 72 39 b4 -f0 1f 8a 9a 61 ea 0b 51 19 bc 9d 54 96 a9 5b 60 -ea 76 6c cb ad e0 37 e3 40 32 4f 25 f0 2e 72 45 -c2 36 ea e4 36 7a 64 68 a7 a0 93 8d 85 c0 a1 - -# Prime 1: -df cc 92 74 2c 48 d3 34 c6 6f ca a6 d8 a7 e4 22 -54 43 0f 80 a8 35 9e a2 3b 9a 83 b2 41 e4 7f 39 -9b 3f fe 3d ab 3f 15 be 8f a5 c9 e6 46 df f9 7c -cf 9b 43 17 61 07 80 ad 44 cb 1f bc ef bd 6e ba -05 5d 96 94 3c 02 47 e0 c8 76 78 eb 0b f7 6c 88 -76 c3 ab b9 ef 72 cf 01 8f 58 11 a6 be e0 4f 09 - -# Prime 2: -d9 64 e9 6e a6 fa 43 70 b5 91 ee 79 e7 e7 2e cc -21 81 53 78 7a 60 e2 f7 ae 94 fa 95 b9 bd 68 69 -d2 81 ac 3c cf b6 57 24 7c 58 3e af dc 13 d4 d7 -a7 d7 76 5e 44 67 df 76 b5 28 bf 94 bd 03 a3 ea -73 b8 1b e2 6c ca d9 89 b9 f0 77 28 da d5 3b 38 -ef 7f e9 eb e9 11 40 cb ad 17 dc 7e cb 1d 58 d1 - -# Prime exponent 1: -9e 79 f6 9b 5d 60 94 6f 22 b5 b7 03 3f 18 64 6c -0a cf 12 03 41 19 f7 23 5a a1 a7 f0 6a c8 ab 6e -d7 89 11 38 0a 33 b9 ea 1f 3e 7f 22 19 be 30 a5 -39 3d f0 dc 75 51 22 c5 8f 99 66 f8 1b ac 40 e4 -69 38 44 90 e3 8d 99 e8 8b 0b 99 c4 97 cc b5 86 -4c d3 72 9f 4f f8 34 ae 1e 1b 77 24 64 b5 e2 41 - -# Prime exponent 2: -3a 05 e9 18 13 91 30 76 e0 bf 76 7b 2b 1e 55 2b -3e b6 19 e5 4a 24 99 ef a9 b5 31 bc cc ba 75 27 -e9 7b 9a d1 10 4f 86 aa c2 55 7b 45 cc e3 ae 27 -71 30 dc f3 04 27 05 49 d5 c8 6e 79 f0 89 0c 33 -03 77 dc 59 6e d8 25 7f d1 15 11 78 e2 0f 8f a2 -fe a9 91 71 d9 df 35 00 27 ce fa 97 0c f7 64 41 - -# Coefficient: -18 b1 0d d7 3b 14 7d 86 b6 0c f7 fe bf 46 35 93 -c0 bd d6 bc 83 a8 39 57 3b 4b 3f e6 5c 0b 13 e7 -b6 94 b8 1a 56 57 21 0b e9 47 01 1d 8d 49 29 c1 -27 fd 2f 3e 31 06 c2 53 38 3b e6 35 41 d1 23 5b -d7 9c 57 2e 92 e2 36 34 28 20 98 be e9 4d 48 bd -62 8a 0e b2 1e d2 61 cf a3 5b 69 b9 77 70 e2 93 - -# PKCS#1 v1.5 encryption of 20 random messages with random seeds -# --------------------------------------------------------------------------- - -# PKCS#1 v1.5 Encryption Example 14.1 -# ---------------------------------- - -# Message: -2b d6 e3 c1 de fd dd 5a 43 - -# Seed: -e7 84 d5 25 03 e6 29 1f 25 8e 44 2d b5 77 f9 91 -63 82 a0 d1 4c 7b 9d cc bd b6 07 af 01 f0 25 8f -dc 97 23 97 da 12 39 d4 44 9a 58 28 6e ce 20 08 -f7 18 f6 90 ce e7 3a 02 7f ab f8 4b df 7a ce 45 -f7 ed 2d 77 32 4c be e9 0e cc 6f 1e 7b 86 cc 29 -35 a4 7b a1 56 65 0b 42 fc 71 aa d0 70 99 a2 7e -97 fe 5a 3f 25 fe 13 48 e4 42 39 12 12 a5 cf 1b -44 5a 1e 70 19 1f fa 8f ca de 63 5d 2e 44 65 f5 -f9 13 c5 3e 33 b5 91 52 cd 8a 14 97 84 f2 7d 83 -18 28 af 2d 66 6a 5c 30 9b 56 d0 71 9c fd 80 73 -40 69 a2 3e 09 2d 83 15 39 9f 95 c4 0a d7 fd 0b -b5 f9 43 77 - -# Encryption: -85 ef 3e 47 76 77 bf 76 07 1a 27 bb c7 39 57 15 -cb 35 07 96 e4 4f 1b 52 a0 8e 90 5e 08 ff 12 56 -70 5a 9b f0 15 2e 87 2b dc 74 bb 1f 2f c8 63 1e -f8 81 2d 16 94 6a 30 b5 8f 44 64 d6 e7 b2 45 0b -e4 5b 48 cc ff 5d 8e cf 7a 00 b1 b7 8f c8 fa 54 -71 3d d6 96 a1 4a cb 68 00 c0 d3 b6 9a 0b 44 43 -77 fa 30 3a 7d 66 db 49 27 91 8a 4b fb 0f d4 93 -bf aa 01 6a eb ff 99 53 30 a6 dc b6 21 5d d3 bd -b3 5d 7c d6 1c cf 0e 9c cc bf 51 e9 ea 65 8e a3 -1d 12 43 44 4c 4b 72 ff f0 1a c9 3f 28 eb 7f 67 -c1 83 2e 56 8e d7 2f d9 57 d5 b4 fd 2f 00 b6 02 -31 71 b8 5a b0 ca a1 03 0e d3 e3 ed c9 50 31 45 - -# PKCS#1 v1.5 Encryption Example 14.2 -# ---------------------------------- - -# Message: -10 47 35 d9 ad 72 60 46 47 3d f4 b1 3b 2f 5f a2 -85 c3 d2 33 ec d4 61 70 58 2d d2 28 cd ee 46 4d -a5 09 5e 20 8c f8 fb ca 05 38 8b - -# Seed: -dc 6a 63 1e 29 75 45 d2 f6 fe 9c 69 a5 d3 06 a1 -09 16 d7 e7 ef 0d c9 53 f2 1b 6a 04 14 31 ec 8b -a5 ce 1c 13 87 43 fa ac 54 97 d6 99 f2 ff 1d 4a -44 a3 e0 63 7c c5 e5 e6 38 cd 73 67 7d 09 af ee -3e c9 fe 80 52 94 7a 73 33 4c 32 70 47 28 56 f3 -07 24 3a c5 8b f8 63 80 74 66 7d 7f 7c 18 e3 ab -32 7e a3 fc 78 91 f1 c5 8a b4 7e 4f fa 6e 7d 90 -11 a3 3d 9b 40 a2 d7 89 ee 42 21 25 62 30 ca 8a -61 81 1b 09 72 cf d9 86 01 75 26 18 1d 24 ee bb -32 cc - -# Encryption: -92 1d 2b 02 6d 6b 7e 22 20 1d e7 7f bf 67 99 90 -f9 af f4 ea 7f e7 ce 45 02 21 5f 9e 7a a4 18 b8 -5f 72 ea db 6b 69 42 bb 08 a0 8b e7 da 66 19 aa -5f 1d 2f f9 61 c9 dc 2c 34 1a e3 2a 25 4f de ab -a2 f6 45 0a c4 47 4b 62 74 f0 c3 46 f2 6d a4 ed -55 5a 8c 95 11 89 dc 83 69 f3 4d 76 d8 37 d6 f3 -8a 95 18 a6 27 1c 5b 56 34 62 25 a5 ab 8d a6 03 -2a 59 30 fd 5b 77 72 9d e6 32 e1 75 2f c7 2a 0c -34 ae ce 25 65 7b 28 1b e8 93 2c 56 50 c9 82 fa -14 5f de 0b cd d4 8a 73 aa 02 88 b4 de 46 11 33 -f2 7d 51 e3 86 01 6a 72 72 6a 9e de 1d 32 df c7 -e6 f9 78 0c 04 eb 70 ff ff c2 68 82 95 66 73 33 - -# PKCS#1 v1.5 Encryption Example 14.3 -# ---------------------------------- - -# Message: -31 7e 6f 5e 17 50 0f e9 4f df f2 84 bb e5 03 01 -04 4d 14 22 d3 ca 70 05 98 - -# Seed: -46 6d 53 c8 d0 bb 9e d4 60 ca a6 3d 79 bf b8 77 -bc 4e a3 45 ca b4 35 7e 63 9a 95 dc ae 37 9d dc -ea 5d 64 fe e9 9f b6 f7 5f f2 4e b7 4d 44 03 44 -d1 47 e4 33 14 a0 f8 9f 8b 96 14 82 15 36 8e b8 -65 1f 6d 3c a0 d0 8d 0b 4c 73 e6 d1 a7 68 40 98 -26 d4 3c 2f 81 f3 08 40 60 5c 43 d0 fe 67 1d 3f -02 4c 70 d0 b8 99 23 cf 90 4e 39 97 99 62 cd 51 -5c 16 74 29 2a a3 0d ac 70 0d b4 eb 7e 63 d5 6f -df 08 c2 24 70 f2 43 86 19 45 d0 0f a4 e2 79 90 -21 2c fe d4 28 5d f1 ed da 4b 0a ec 91 35 59 f5 -9d 12 55 90 - -# Encryption: -14 1f ca 68 dd 2e 4d 1d e5 08 6d bb 78 5f f4 7d -81 e3 9c 31 1d 91 7a 99 39 a6 ff 5b 13 43 9c a9 -56 c9 74 2b cf e4 50 b5 bd 03 5b 54 1f ab 30 7f -24 fb fb 3f 8b 90 21 5b 56 04 67 6e 56 96 f3 ba -95 fd b8 d0 90 a6 c2 4a 29 d9 90 fb ff 1d a2 02 -81 42 55 8f 0a d7 53 43 c7 2f 38 82 3d b7 66 7b -05 e1 6b 51 92 b9 33 60 07 f7 58 10 6c 32 8b d4 -76 11 8d f8 2a d0 75 48 a7 26 92 1f b2 e1 92 b4 -3c 8c 30 cc 9b 84 34 63 0e 27 fd 8b 23 ef 8d 8f -22 be 7f 73 ae cd cb 2b 1e c5 53 9d 5f bb 2c ff -9e d5 e7 f1 9b 49 18 3d 22 1d fd 53 7d 4f 37 03 -2e f3 2f 63 b6 ff 74 ee 24 a0 96 cf 45 59 27 09 - -# PKCS#1 v1.5 Encryption Example 14.4 -# ---------------------------------- - -# Message: -90 96 3d da b3 78 91 e7 28 8b 53 be 5d 9d c5 67 -b1 a0 7a 15 66 c2 af dd d7 72 73 24 ba - -# Seed: -a4 9f 12 15 17 5b a0 4c 27 4a bc 05 1f 0c 17 a0 -8a 63 64 89 43 db 2e 8c 76 22 bc bb 1d cc 56 7e -be 6a dd 8c 44 48 16 c9 d4 36 ee 93 ce fe 23 ec -41 dd fc b0 a4 03 bb 6d bf f0 ae 5d 6f cd d7 64 -da c1 a7 2a 48 4f 36 47 1f 4f 3b d7 25 b2 db 5a -fa 6a cf 53 0e 4e 4e 86 b4 fd a8 78 20 47 87 1c -b0 55 ad 68 c8 41 de 54 5a 55 40 c8 cc 12 e7 e3 -f1 58 14 a0 03 9a 81 03 4b de 9c 68 ae 22 85 e6 -16 b7 b5 55 5f 98 c6 13 ce 2e f6 66 a0 22 46 5c -63 67 d0 bd a4 0c 12 e9 41 f6 99 8a 14 a2 b5 e3 - -# Encryption: -8a d5 bf 78 23 2a a3 6f b7 83 58 3e 71 bc 13 93 -03 7d 13 e7 74 54 a9 dc 11 11 43 4e 75 dd 80 20 -46 ba b4 20 25 42 0c 63 96 1e a0 06 26 57 ca 50 -65 de b6 53 ac 78 eb 64 98 cf 14 d1 70 4c ec 59 -11 69 60 8d b0 1f c9 3d 0d 68 e6 28 01 b4 65 a3 -87 a9 c7 2f 7e b3 5b 0b a5 3a 5e fa 98 c9 f0 cb -7c 7c ba 18 04 cd 70 1d 02 97 b6 60 05 ae 25 ec -3b 6c d4 cf 31 94 a3 fa 65 d9 8c 4b 95 33 30 79 -0e fd e7 4f a2 75 d2 a7 9d 33 10 a5 bc c2 c8 1c -91 fc 25 56 2c a9 39 f8 d9 c1 75 ed f4 b0 76 73 -d5 39 24 e2 7b 15 52 88 1c 10 83 19 23 71 5d 14 -9f 1f 31 9e 38 e9 1d fa 56 6c 54 53 ba cc 14 8b - -# PKCS#1 v1.5 Encryption Example 14.5 -# ---------------------------------- - -# Message: -3d 81 02 1f f6 47 33 37 e0 4b 92 - -# Seed: -9b 70 29 73 13 77 e8 26 97 fa 56 b0 86 ce 49 d3 -c4 b1 54 9d e8 1e 3e 99 e1 6c d9 72 29 7a 56 0f -f4 83 f2 ef 5b 71 b0 0f c6 84 74 4f 22 4e 85 7e -6d 72 39 f1 56 d7 b6 10 2f 23 04 f8 a5 50 50 b3 -75 6c 54 8f 6e a2 6e a6 f7 39 4d 2b b3 79 33 35 -84 e3 b4 81 d0 73 c0 a5 8a 0a d7 87 ad b4 80 e1 -f2 0a 1a 59 0e 03 1e 6b 2b b7 f3 6a 93 61 0d df -70 83 a5 07 68 c9 98 62 3f 6e 64 37 6a 29 b4 a4 -18 03 2d 27 39 bd 4e 74 7d df c7 7f e3 cf 27 93 -a2 9b c7 67 bf ac c7 13 e5 f1 0e 53 1b 4c 71 89 -97 b9 bb 6b 65 15 e0 71 13 28 89 74 7e 54 6b 13 -46 8d - -# Encryption: -1b 88 4b 06 7d 0b b1 59 7f 5f ab 93 30 95 75 5a -53 0d 9d 04 e2 75 4a 57 97 ff ff 5e f9 ce f1 89 -54 99 98 23 00 50 3b 3f eb cb aa 09 d3 6b 7d ac -c3 0d f3 c8 68 f0 1a 5f 17 ed 4a 72 a8 5b 6a dc -80 a2 6a 1b 81 97 6b 39 3c ba 9b 0c 82 cb 1e 2c -58 3a b6 f3 14 ed a2 9a 43 32 21 b6 e3 ed 53 51 -53 74 bb cd 2b 96 f5 cb 5b d5 81 5d 1a 5d cb f0 -80 d2 d3 7c b9 6c 4d 96 1d c4 7e 13 0d b7 b8 d0 -18 2e 33 69 de f4 c0 f6 c4 2c 6c 20 53 1a f1 a1 -90 36 de f0 8d 4b ac a7 1b 99 af 3c 4e 1e d5 27 -d5 1f 37 d0 ee 1e a2 c8 b8 eb f4 fd 52 79 85 1d -c3 20 e7 42 00 8e 04 04 4d 0d a0 64 36 61 3d 1b - -# PKCS#1 v1.5 Encryption Example 14.6 -# ---------------------------------- - -# Message: -5c 74 5d d4 a8 c5 92 93 4e d1 5e 22 fa 9d ec 4a -4d c2 0a 9f - -# Seed: -0e 6a bb 82 9a 3b 16 d0 8b 0b d4 3e b9 5c 79 1a -f2 a3 39 12 ea 83 3e e6 89 3e d5 ad 3e e7 44 c8 -b2 dd 28 fc ee 80 8d 3f 01 49 58 25 be 0f e6 37 -32 07 a8 78 d4 a5 25 ea 72 cf b0 bb 58 a2 67 76 -fb 39 ee bd 33 5f 04 cf 71 86 be 61 c5 63 5d 95 -e5 60 ed df d4 5d d8 6a 4e 67 0d 33 56 8d 83 d2 -ca 20 3e d2 8d 90 e4 8b 06 4d 09 a7 5f 82 8d ea -cd 5b 37 ef cf 78 4f b1 1b 17 d6 d9 f2 31 52 24 -f8 e7 63 79 1b ac 6c f4 6e 1c 23 b0 b0 25 2c 19 -ed f0 40 d3 5f 59 25 53 26 5b 88 6b 29 ca 56 eb -c5 38 63 71 41 4d 82 a3 40 - -# Encryption: -2b 0a 43 b3 cd c9 9d 6c fc 74 da 2a 86 ec d7 d5 -76 24 75 d1 43 e5 48 6f a9 cb eb bf 27 d8 e4 14 -1e f7 2b 6d 4f 13 f6 64 b3 d2 e9 ec 32 22 7c 1a -d5 b7 6c 0d 1b ef bd 65 89 68 c7 db 14 95 23 82 -49 bc d9 5e 75 40 25 4e 65 74 98 23 b8 a3 4b f6 -a1 41 07 21 df 34 f3 c8 d5 79 f3 6a ed 9e 0b ac -23 1e 54 c2 7f 76 73 19 7d 19 f5 1c e6 ac bb cb -7b 1a 55 e3 8e de be ed 34 61 07 3e 80 c7 9a 4f -c3 09 31 30 69 6b ff f2 bb cb 74 90 5f 2d 34 44 -33 80 57 fd fa cb c4 db 81 93 5b 29 e9 9e 55 cc -c1 d4 8d 89 e9 dc 4a 63 a0 11 a6 23 32 cf 57 02 -62 a0 63 59 cc 36 c0 5a 6f e1 8a fb 78 32 b3 2e - -# PKCS#1 v1.5 Encryption Example 14.7 -# ---------------------------------- - -# Message: -b0 e7 7f 42 c1 a1 e3 f4 15 57 23 a9 0d b8 8e b1 -53 cb 3d 3a 28 ed df 25 9c 47 05 6a 47 0c 91 5e -c9 55 f8 31 89 f7 1a ea cd d5 5c 33 5f - -# Seed: -fb 36 01 10 5c aa 9a 2f dd 6d d6 c5 74 6f 4f ca -fe f4 41 bc b0 fb 8a 2c c0 3d 0b 57 34 9f 93 21 -af 9d 99 84 e6 4e 2e c4 85 c9 ad 75 5f 14 0c 0b -66 db 1c fc 26 69 1c 26 77 31 d1 a3 af e6 87 20 -2a 96 77 e4 2e 84 4d 47 7b 75 bc bb 8c 97 d9 9f -cf 72 b3 fb 6d 34 9f a9 c4 76 61 91 47 21 7a 04 -dc 06 aa 3c 3c 17 64 95 38 0c b9 2c 0a 7e 09 7b -4b 4c 5f fe 04 63 1a b1 d1 bf ea 03 67 86 50 c8 -5c 17 0f a4 a1 d6 4a 4c 13 5e 61 48 14 90 b6 2b - -# Encryption: -a4 bd d4 92 fe c7 9c 3a 79 09 3a 44 33 42 72 d9 -d1 7f 54 3d 02 02 c3 9e 40 8b fb 39 36 6b e2 de -61 df 50 ac 45 8c ae dd ef fb 69 e2 13 ca 92 b7 -49 53 66 34 7e de 73 3f f3 99 ae c7 96 c3 c3 b1 -df 34 9f 01 1d a0 1f ee 7d 21 c1 c2 61 84 3d e8 -82 08 56 0c 0e 89 84 b9 52 23 ea 37 31 db 91 c5 -93 7a 79 b0 db 93 87 59 1c e3 2e c7 f5 83 e6 00 -f5 24 44 df a7 67 1c e8 27 38 98 fb bc a3 a4 aa -68 32 cb b3 54 3a be 96 47 e5 f8 c1 37 72 82 52 -ce 54 40 fc e1 0e 4d 4e f7 5d 56 b8 14 d5 19 64 -44 41 41 1c 10 a2 a1 4c 35 04 72 82 7c 99 ea 3e -e5 fd a3 88 0f 34 1d ca 8d 3d 3a 4e 5e 05 ba 42 - -# PKCS#1 v1.5 Encryption Example 14.8 -# ---------------------------------- - -# Message: -b8 7f 04 b3 35 0e 12 63 da a3 f9 40 5e 6f d3 d2 -5d 8e fa 13 25 56 a4 95 71 f5 70 8a 42 52 7a f3 -1d b0 1e df 79 82 0f 93 26 64 5f b1 - -# Seed: -ec 8d 01 4d 6e b8 d0 23 9a 97 73 bd d3 20 bf b3 -f2 ee 8f c2 7d 5f dd 91 f3 f3 90 5d c8 a4 c5 ff -13 52 9a ee e4 61 85 4c cc d4 e0 9b 62 4a fa 64 -7a 7c 04 81 4e b1 e5 7b a1 4d f4 c7 95 b4 2e 84 -c4 d0 86 29 24 5d ac bb ed 27 39 9a 72 5a 94 8f -3b a2 f8 b6 4d 26 02 dd 0d 5f 55 cb 23 ea af fb -3a 66 50 8e 4a 68 9a d9 ee e6 44 e6 a2 6d 43 8f -36 63 fe a9 bd 03 12 bb 0e 7e 5a 6d ee 04 bb e8 -a0 74 5a 73 d5 ac 89 fa a0 96 a5 2e d3 04 6d 77 -de - -# Encryption: -77 5d c3 24 fe 9d 5e 05 ad 01 50 13 d6 5f 0e ba -0d cd 52 ff 9d fc 17 95 ea 93 d0 f4 33 57 98 96 -86 fe 3f 8b 04 62 23 bb a5 c7 84 9a ca c3 12 35 -43 43 26 16 c3 10 3a c2 ba 8d b0 a1 d2 99 40 bb -a2 62 47 0e 5e 53 be 60 e0 eb 72 4d 07 cd 91 2a -ef bb 87 fb 51 98 0e 9e 1a c1 94 da 31 92 95 41 -ca 43 22 4b 15 2b e6 f2 df 6c 5f 04 42 b4 f4 d2 -cc 2f b0 27 39 d4 85 a0 11 62 bc 8d bb ad 14 76 -eb 06 e2 45 ab 36 c4 c7 2d 3f 36 07 d0 50 84 a0 -f6 b7 2d c8 ba c3 46 bd 19 09 1b 02 f5 98 2c 91 -45 7c 7b 10 f4 47 2b 57 18 45 24 21 4b 23 82 5b -59 f4 34 cc 48 a2 b8 54 ca b5 0f f7 9e 59 09 1c - -# PKCS#1 v1.5 Encryption Example 14.9 -# ---------------------------------- - -# Message: -e1 95 a0 36 a5 30 e1 c2 a9 d7 a1 03 35 8d c2 bd -25 b1 01 bf 70 44 50 ab 8e 50 62 cb 63 df 56 10 -35 - -# Seed: -0e f8 81 de fc 45 ad 3f 3e 58 b1 10 5e 49 b4 23 -ab 89 12 4a 65 b5 2c fd 81 cf d5 42 b9 1e 7c 4c -1a 60 71 a2 cf 12 b4 82 7e d5 d1 9c ba f8 fe ea -54 bb 3d 73 85 7e e8 7c 71 5c 71 b9 ed 1c 07 c3 -af d9 0f ce 40 44 8b b5 7e 35 24 d0 38 80 98 39 -e3 6a 4f 55 44 c3 e1 81 e8 c2 e2 93 cd 57 54 c8 -65 74 ad e6 df ce 0a b3 4a 80 b4 d4 8a 9d 42 e7 -11 5d 8c bc b1 fa 28 c8 a2 65 01 db 7d 0b b4 96 -d0 1d d6 92 65 a0 26 e1 a9 7e 9d 3a 1a 65 a8 aa -8e c2 df 06 34 e6 f2 65 1e f4 35 40 - -# Encryption: -1a d7 7a 00 7c a4 37 ab d0 15 9e d4 b0 b6 81 54 -16 f9 f0 9d 1b 12 15 fb 7c ff 11 52 97 60 1a 88 -30 f2 09 17 86 35 63 85 3e d7 8e 9c 3d 7b a4 c9 -7a 05 cf 19 dd 32 92 48 47 1a 47 03 a4 65 17 8b -85 d4 ec d5 42 24 12 98 c2 fe cd 41 3e 23 a7 0c -8a 5d 47 c2 0e 31 c2 da be 3c 82 a9 54 50 27 27 -49 ae 2e bb 89 98 5d 00 b6 3d ed d9 59 6d 05 16 -d1 2a 78 c3 74 b7 ed dc 7d ce e8 e4 fd d1 6c 1d -fa bf f7 ff d4 c1 fd 61 ce 04 be 8e 49 75 c5 cd -71 e2 cb 0e 54 1b 84 61 bb 81 fb 28 cc e7 73 65 -3e 8b 16 b2 8a 8c 20 74 28 89 5f 28 53 55 87 a5 -c9 9d 46 ba 4d f9 ae 08 50 18 51 3d 69 ab a3 f6 - -# PKCS#1 v1.5 Encryption Example 14.10 -# ---------------------------------- - -# Message: -04 2a 39 22 aa 87 1e ea 0d 78 42 2c e7 85 66 ab -bb 5b 08 c2 dd f1 ee 30 cf - -# Seed: -5a e8 51 14 b0 02 7a 23 c7 2b db 46 ae 7b b8 87 -be c5 ba d7 a9 88 4e 93 f6 f4 fd 0b c9 38 bc 72 -41 0c ce 96 a1 4f 4d e1 99 19 77 35 05 1e fc dc -c1 96 f3 ad bf aa 06 3c b3 f7 a2 34 c6 cf 99 d7 -0f bb 7e 35 b6 ae c6 64 14 66 93 91 e3 cb e7 21 -ec 99 1a 1e 5d fb b0 38 f2 70 36 85 93 74 9b 20 -8d 08 9a ae e2 ef 35 c3 da f6 23 8b 5f e4 2d 13 -dd e4 07 df 14 f2 d6 18 c9 79 c9 7d 2d e0 29 33 -b5 7f e8 81 22 04 86 2b 2f 1d ee 98 3f 24 c2 c5 -96 ea 66 8e 63 7d 0a 6a e6 dc 52 65 27 69 94 e7 -e4 f0 2b 6e - -# Encryption: -12 44 de 88 0e 0f 78 52 e9 96 95 9d 76 2f ca d9 -15 65 a4 d0 ad 3b c5 27 50 d4 a0 44 0f 0b 5c 65 -1a a0 e6 f4 92 06 1b 2c 86 24 c5 2e de 68 58 fa -25 18 ae 8e 8b 11 65 58 b2 c8 07 6c 17 ae 78 3d -8d b2 5f 0d 8f b1 f2 75 8a 82 ab 97 1f a7 28 3e -f0 74 9a 37 be 28 93 f8 94 37 fb 8e a9 00 72 b5 -85 5a 26 08 fc 54 2f 5d 2e 0c b5 43 f4 fa c5 28 -f9 43 52 d0 16 40 fc 2c 53 1b 79 81 0c 00 77 7b -c9 e1 0d d9 ea 99 96 e7 40 87 fa dc b7 1a a1 43 -00 67 65 71 61 48 82 94 3f 4a 56 14 12 c0 54 67 -dc a6 6c a4 9f 82 29 35 18 23 db 8a 6b 9f 80 3d -70 9c 11 87 ed 74 10 cf 91 00 15 59 5c ea b6 3e - -# PKCS#1 v1.5 Encryption Example 14.11 -# ---------------------------------- - -# Message: -f3 1d 3d 0c 30 fd 65 d7 b9 8b 70 99 44 78 2e 20 -52 5c a7 c1 f4 2d 5d 03 a0 f6 d2 75 9d f1 91 9e -ea 82 f8 0f 10 00 fd 5c f8 59 df 59 87 1b ac 82 -dd 90 76 cf - -# Seed: -04 4b c3 77 e8 58 9f a5 af 1c 17 34 7d 50 e0 cb -bf 90 15 76 f2 41 de 69 0c 88 16 c1 29 cd 9f 2f -b0 83 1a 01 7b ec 30 b8 2b 68 f6 98 31 1a f6 e0 -77 72 bc d8 98 fa 0c 27 f6 2a fd e8 95 89 77 84 -46 25 55 2d 9b cb 5a 81 aa 3d 74 15 b2 42 a0 3b -12 fc 1d 3f e2 d2 ce 6e 5f 71 c4 a4 a4 c7 ca 83 -e0 65 6f 50 02 ac 36 d8 d0 2b 69 ae 65 73 44 98 -f1 31 95 2c ea 48 1f a2 c2 96 5b 6e f0 51 7e de -50 dd b0 9b 3e a7 02 6d 06 - -# Encryption: -86 f6 6f 0c 25 05 85 06 59 43 de 2f 71 1f ae 4f -f2 62 70 0e 0d 33 06 a2 4c 94 30 f8 7c fd 93 de -f4 c3 44 7c c7 21 0f d9 4a 14 33 62 f4 f9 45 c6 -db e2 80 bd ef 5d 14 f7 5e b7 bb 31 32 0b cb d0 -d8 8f 0c cf 2c 95 a7 4c b4 58 c6 27 2b 58 bf 74 -30 93 c4 bb a2 d7 be e9 ea 2d d3 0c f7 2f e2 93 -c9 0c 97 43 0a 04 7b 17 26 63 91 c5 1f 5c 39 8b -a3 df 8c b7 4b a3 e3 72 f9 55 5c cc 97 d6 db 76 -14 ea 06 d5 c4 8c 1c 60 06 13 3d 0e 9d 69 95 79 -93 85 92 0a d8 af c3 de ad f6 31 ce cc 55 9c af -f4 95 b0 8d 68 3f b2 2a a6 97 d7 1c 69 6e 46 b1 -bf 4f d7 6b 8d 0b 39 f1 79 bf 66 84 1b bb 97 07 - -# PKCS#1 v1.5 Encryption Example 14.12 -# ---------------------------------- - -# Message: -6a 35 55 57 9d ad 03 94 35 43 ff 74 e1 74 7c 25 -7a 83 d3 52 94 c2 53 93 83 e2 35 de 69 - -# Seed: -5d 92 43 4e db d4 f5 bd 27 19 71 71 f8 53 ce b7 -26 30 30 83 ad 45 67 a1 d7 c6 10 4d 19 2b 9b cc -df d0 da ed a2 74 e5 cd fb 3d 0c 5d 19 c9 68 25 -81 ec 7a dc 1a 87 e0 81 51 41 5d 5a 9a dc 1a f4 -50 b1 ba 88 d0 ef 32 ac 2d 1f 8a e3 45 95 28 14 -75 3a f3 8e 12 63 5c ff 8c 09 21 59 b4 e7 5d ee -a1 98 3e d3 d2 d9 ec 2f e7 b9 a2 e1 6a 14 1e 81 -8b 84 cd 9b 71 c1 29 a8 b3 c6 db 62 02 32 dc 03 -a2 40 1f 73 1f f8 a6 3d a4 58 a7 d8 78 90 56 25 -ae e1 fc 09 4d fb 07 b4 57 5a 7f 0a ad 23 3e 82 - -# Encryption: -93 10 27 2d 12 4b c5 cd b7 21 88 98 40 aa 77 15 -e7 67 32 17 00 cb 39 b2 b8 a5 a8 2a e3 f0 2e b9 -67 e8 db 46 84 3b c1 bf 62 ed 8b d2 ab e8 14 34 -49 7f 99 00 64 02 53 98 2d 37 2b 2b f7 c1 b0 9b -d5 01 96 74 a8 34 fb bd ff 35 68 a2 82 4a ed 4a -80 48 d2 b8 61 36 27 75 bd 5f 0d 63 b3 48 36 3d -13 78 69 1f 5d d1 d7 96 10 74 ed 95 fc 90 07 bd -5f 5c 29 23 c1 7c 42 90 4e 2b f9 d2 48 77 9f df -b2 03 97 38 41 a1 12 90 c7 e9 e9 35 6d 4e ab 17 -0e 43 1b fe 45 4a 88 01 0d 9a ff 33 70 0c ee 55 -c7 04 c8 2a 7f fb 15 e2 53 ef 84 f4 01 9e 12 43 -8f 7c 73 86 dc 53 5b 19 ca 86 af 71 d4 77 60 8e - -# PKCS#1 v1.5 Encryption Example 14.13 -# ---------------------------------- - -# Message: -cb 79 af 5a ea fd f2 ba d2 1d fe 62 92 66 42 cb -a8 04 ec 7f d0 ea 5d 54 08 ac e9 ed ff 28 e7 e8 -df ff 6d f3 83 af 14 40 21 46 04 76 c0 c8 2c - -# Seed: -5f ce a2 57 cf a9 2c 84 f0 b8 93 7d 17 3f ae cf -75 03 ab 16 2e 0b ae ef 7e 4c 51 1f 3e 32 a3 24 -ed 40 e2 42 a8 52 ba 57 89 5b 7c fe 4d 61 79 61 -e0 36 f6 63 e0 22 8a 29 cd 1a 95 ac ac 08 a2 55 -26 d1 eb ff 0a b3 f0 33 ed bf 1a e2 76 a8 d2 36 -73 6c c7 af 51 b5 d2 bd c8 3d cc 7d 7d 3b f5 b8 -22 af 2e ff ed 7e fc b6 17 e0 83 e5 1b e9 94 ae -d6 56 9b 23 83 b9 41 ae e5 94 c7 b0 12 e6 75 1c -37 b7 a5 4e 2a 19 18 24 a1 30 d5 5c f8 45 - -# Encryption: -11 fa 81 9d 3a 63 88 04 ee f1 d9 56 0a 11 f5 23 -0a 0b ad fd 66 eb 68 4e 7d 69 df a2 89 8c 8e 0b -6e 04 af 8e fc 70 61 08 1e c5 9e 45 85 76 42 e8 -b2 00 41 af 50 8d 9d 4e 28 82 20 f9 fd 38 9d e8 -b2 91 24 ce 74 7e b6 8e 2e aa 8c 8f 6f b4 93 f6 -11 ac 09 b7 23 09 5d 07 ee d9 24 f6 ab 8e 09 ff -93 c5 51 6d 1f 0e bf 62 c5 f0 22 f5 bb 4f 4c b5 -b8 f5 d4 87 a1 7d f7 d0 12 d7 04 35 7a bf 17 48 -67 ce 40 cd c5 50 11 b0 71 39 be a4 5c a0 e5 81 -78 0d e6 54 17 cc 83 5f f2 69 84 fd 0f eb a1 87 -69 c3 94 a2 e4 85 02 3e 31 d3 b0 a8 88 a7 b1 4c -78 1d d8 5b ab 40 86 74 f5 f5 7e 4b 76 3d 84 35 - -# PKCS#1 v1.5 Encryption Example 14.14 -# ---------------------------------- - -# Message: -d1 62 33 fc 77 5c 31 9f 15 7a a2 00 47 6c d6 ed -64 a1 ea - -# Seed: -bb 33 b2 2b 5f 46 79 4b e8 3e 6a ff 34 a0 e4 11 -d1 f3 f4 b8 da f9 b5 85 87 24 ef fd b9 69 c9 55 -25 c6 2d c4 4b b2 b0 83 38 60 03 05 4b bd 36 66 -b7 82 82 60 6f e6 ea 17 27 31 be e1 16 72 d6 01 -de 32 42 3d 83 f4 63 cc 29 30 f5 fb 79 da 15 34 -c4 15 c9 65 82 75 65 94 a9 99 b2 26 35 42 48 a0 -9f 14 1c ae cf 88 83 90 78 f7 7f 40 bd 48 51 34 -9c 1f c7 5e 1e ce 6f d6 96 6b c9 c9 d5 ec 12 09 -6e d5 04 35 46 85 9e 4f 95 7d 31 88 e1 d9 06 0b -59 c1 f7 f6 2e fb fe 82 5d da 45 35 3e 6f d4 fa -ba c9 83 f9 44 f4 c2 c7 9c bb - -# Encryption: -10 c2 0c 0c 71 b1 1b be ce 14 c8 14 83 dc fa 73 -0c 23 d4 dd 61 b8 75 5b 39 94 9d fd 4a 3c 50 33 -21 60 ee c6 f7 71 0e 09 c7 a9 7a f9 3f 70 44 b9 -2f 41 d0 9f a3 e6 c6 ce 1f 64 11 48 4e d4 75 40 -a1 b5 9e 23 c1 93 34 b6 6d 68 20 c2 d4 4d b0 f6 -aa f8 5a a2 7f 53 a4 1f 85 6b f6 a5 91 36 59 86 -9b a4 ab dd ec be 87 41 3a c9 5b e6 40 09 59 3b -5c a2 d0 78 3a 16 f6 08 66 57 55 24 53 93 fc 14 -4f e3 ea 5e 9a ac 9f 1f 99 1a 92 85 38 b4 69 97 -d3 06 3c c1 a6 9a dc 19 2a 40 c7 6f 92 d4 7a 05 -80 e3 c0 21 20 02 3e ce 70 32 80 7b 7c 09 13 43 -aa 87 3f 6a 4d dd e4 3f b2 dc c3 79 ae ee f6 54 - -# PKCS#1 v1.5 Encryption Example 14.15 -# ---------------------------------- - -# Message: -d2 f3 c2 e6 f4 3b 0f c9 fc 22 93 b8 45 88 e6 61 -15 - -# Seed: -b9 81 64 89 52 5c d0 26 15 6f b4 e8 a4 a8 f3 4a -ea 8a 3a a1 a6 34 cc cb 32 58 91 8f e8 5c b8 d4 -aa 02 a5 28 52 a8 94 1d 3e a6 c0 48 b5 8c c6 c7 -56 85 67 56 25 e5 e4 dd 7d f9 3b 8a ce c0 79 67 -0b 49 f3 dc 6e 07 63 ed 4c 8e 2d 0e e9 b5 ca 5b -b6 2d e0 06 91 98 38 e4 b6 9b a1 05 d4 c5 a4 cc -6d ca 67 b1 21 93 a0 32 b6 92 73 96 44 cc cf 72 -3f 9f 69 e4 8b 94 c0 bd ce 5a a3 5f 75 dc 53 92 -7b 81 e3 42 ce 72 c6 b6 5c f7 5e ae ca c5 fe 0d -ea 93 88 5b a4 20 af 99 32 d8 4c a4 b5 0e 07 e3 -28 ec 5f 81 6d 2d 86 96 b2 0d f7 5f - -# Encryption: -80 f1 df 25 f3 6f 31 4b 98 2c 9c 8a af c0 b8 a1 -a2 f1 74 ab b2 98 08 69 c2 9d 19 be 1d 2d 93 b4 -fb 42 99 90 6c 35 7f dd 40 e8 9a 19 54 92 a9 79 -76 61 f0 5d 38 71 d1 bd 0a 5c 45 d8 f9 b0 fe e5 -65 b0 00 4f f5 af c5 a6 f8 9a d6 03 e8 22 83 57 -0b db 4c 6e 0c fc 31 3e 4e 66 5a 94 34 b3 2f cc -77 3d 6e da bc e8 5f e7 c8 0f 03 30 2a 84 e2 08 -b5 bd 0a ad 91 ce 62 fb 8c 2b f5 4b a6 6f 7e 8d -00 21 92 16 29 20 a4 6e 36 de a5 66 1f dd 75 81 -53 56 40 74 b8 55 9f 88 93 62 42 fc 09 98 14 8f -19 eb 50 fc 11 fb 24 a7 ed 8c 83 49 65 8f e9 d3 -1e 62 74 d4 5d 6f 2b 60 9b b5 cc d1 7e 28 4c 99 - -# PKCS#1 v1.5 Encryption Example 14.16 -# ---------------------------------- - -# Message: -21 ee 58 12 e3 24 6d ab 9c 3c 25 9b 21 37 d6 5f -98 a0 5e 57 40 46 5c a2 2c 69 34 97 00 a4 2c be -4f fb 39 3f e2 81 99 33 9c 51 03 1c d3 b2 2f 2f -0a 83 - -# Seed: -e9 de 5b d3 55 e6 af f1 9f a1 1a 2d 0d 3e dc 3f -64 69 bd 3c 75 72 06 d6 6b 3f 09 90 8f f6 18 af -48 01 ac 77 b5 2c de 03 d4 ae 74 9d 02 15 5e 5c -70 fc 99 5f 48 76 72 d2 80 63 58 55 db 4b 64 a2 -26 09 b0 c1 60 67 16 3c 51 90 42 05 7c b3 67 12 -c7 c2 fe fe d1 1f 73 c2 8b db 9d 25 f0 63 6a 4c -aa 11 26 9e 5f e6 5a 2b 17 56 86 a1 5f 1e 48 d2 -8d 34 5d d9 a1 b2 90 0a 24 f9 dd da 3d f3 a6 9f -fb 9c f5 04 5a c4 a1 93 ae 90 2f - -# Encryption: -7d 8c 53 1d 4d 35 49 e0 bd 2e e1 62 b6 82 53 9d -a6 17 22 b8 8e cf 8c 7d f6 d6 b8 1f ef 50 18 bc -4e a1 0a 7e 1a 4e aa 02 15 d9 b3 cd f4 13 47 92 -9e ac 27 48 eb d7 79 94 5c 9b c4 61 dc 51 f4 8d -f6 52 75 53 f0 70 37 e5 33 ce b1 34 8a 46 a7 ea -79 7d 85 a2 6a 9f 44 c5 88 69 99 6e f1 14 69 bc -c1 0b 75 6c 02 d5 c0 e6 18 83 68 5c c3 7d 75 8d -fd e4 c9 b7 35 4e 3b 4f 31 6c a7 f7 fd e6 59 c3 -fd 5e 33 2e 1b 63 92 a2 92 9e 13 17 66 ce 9b a1 -d9 71 ad 24 6f 3d f0 22 43 38 63 8b b6 53 45 8c -d4 b5 26 d9 61 74 4d af ec d5 99 8a d7 2a ed 3c -34 59 9f 7a 40 98 e3 d2 df 9d 13 a2 1c e2 37 0c - -# PKCS#1 v1.5 Encryption Example 14.17 -# ---------------------------------- - -# Message: -a0 34 a6 c1 66 cf 0b 25 d2 dd e5 3a f4 b8 33 b4 -78 c6 b0 d2 fb 0c ef 13 7f bf 5c 27 12 70 64 91 -23 7f 7b 28 6d 12 11 d5 73 10 f8 a7 62 b1 b3 bf -e1 9c 9a 4b 16 d3 e0 a8 - -# Seed: -d8 44 17 97 22 87 13 0a 24 a6 06 f5 83 29 7a c9 -11 52 8a dc db bd 7d e1 4a 5b 48 9b 67 86 f9 f6 -f7 e0 b7 3b ab 53 8e b6 c4 5f f3 4b d5 dc 43 ea -e8 d8 c4 3f 71 65 16 a6 0d a2 47 53 6f 63 4b e0 -65 d9 4e 7f 92 ad f5 2a 96 7e e0 5f d9 af d7 32 -33 3f 99 ad 05 82 97 b2 8f 8e c6 fe ff 80 28 44 -a0 09 7d f9 1a 97 70 2c 48 3a a1 c7 89 2c 7d 43 -b6 b9 1c d4 d8 5d 3e d2 f1 e9 55 39 57 06 c3 b3 -39 ba f2 a0 e0 - -# Encryption: -90 4e 04 07 23 ab 97 88 a5 ed 03 52 eb 96 c7 f3 -d7 07 cf 0d bc 25 8c 51 dc f6 24 34 06 f0 c7 42 -c6 cd f2 07 67 13 2c 09 5e 6c 82 a5 02 5b e7 b4 -13 4d 8f a4 de 18 7f 8e cf 12 fd d3 be ab db 06 -15 8a ef 46 c3 fe d2 d1 83 34 06 ec a7 a6 9e b2 -d2 08 a2 f6 f4 40 d5 4f 6b e5 dd 56 47 09 ed a8 -12 ac 06 29 a9 4c 7f 8a ee 78 be af 9e 93 78 c8 -dd 9c 62 03 74 bb ac a3 94 18 59 dd 70 2f 6f 7b -25 a2 38 45 9e e8 97 59 de 94 22 b5 bb 6d 28 57 -16 6c a2 12 0e 63 47 74 a0 d1 d4 2e b8 d9 48 15 -a1 04 4b ea 8b fb 02 da 58 62 cd 9a 74 5f 15 92 -47 8c 6f 57 bf d1 3a 5f df 4b 8f aa e8 a4 bf c4 - -# PKCS#1 v1.5 Encryption Example 14.18 -# ---------------------------------- - -# Message: -8f c6 39 4c d6 e1 75 33 d1 ff 8e bb f3 e1 ae ae -a3 30 ed 9f 5a 6e 1e fb 83 45 42 94 c6 ce 24 f6 -90 4a 0e - -# Seed: -be 1c 18 02 db 44 68 2e 58 c6 1f e3 87 57 ea 0e -38 4e ba dd 79 59 48 4b 38 bb 23 57 55 c4 61 77 -e6 71 76 9f 36 57 3d 7c b0 ee 7e 82 08 7b 58 4b -58 bb 30 05 30 33 68 c6 59 0a d9 f2 88 2c fa 74 -0d 51 dc 55 eb 0c 79 0f 5b b6 b6 a3 bd 71 f8 b2 -14 6b b9 e8 03 4c 35 b7 ca bc be 10 93 6f fc 5f -0a 8d 7b 30 47 6a b9 16 85 ae d8 fa 95 8e 73 c1 -ee a3 04 4c 56 b4 b8 70 da 89 37 1a 93 b8 96 52 -79 b5 5b b9 2c c3 16 c2 3e f0 97 53 51 c7 49 81 -7d b5 dc d8 6b 94 ad f6 03 bd - -# Encryption: -b8 3c 71 8c e5 c6 ab 1e 40 ff a5 67 0a c1 66 66 -4d 3a 68 33 cb 3b de f4 62 79 4a 25 d5 3e 17 04 -60 06 85 8e 63 f8 8a b9 5d 04 f4 fb 67 74 f7 00 -5d bb 2e 22 d5 19 36 0d 5e 13 38 ad 15 30 8f 6c -64 12 54 95 67 00 7e 02 1c b2 37 ed 4a f5 ee f3 -bc f9 b7 31 59 9f 72 53 ce ba 83 04 f4 ee 8c 34 -33 39 d0 a0 64 eb 77 f1 e9 3f d1 cc 7b a5 fc 3b -b8 18 4c ed 0e 86 97 ac 47 b7 46 20 c4 94 ea b5 -86 ed 9f e7 6e 07 e4 bd 2a 2d 1b 95 59 5b 69 c6 -46 77 a8 83 5d 56 ac 63 9d f8 f6 43 24 1b 3e 2c -46 88 d2 ad f2 28 de 2d a9 bb 0a 36 34 38 e7 51 -b5 25 0d ea e3 05 a3 90 5e 7e 07 7a 4e 8c 74 66 - -# PKCS#1 v1.5 Encryption Example 14.19 -# ---------------------------------- - -# Message: -89 a1 2d 22 bf 87 7d 44 0a 2e 03 ae a9 32 eb 51 -83 37 9b 3c 8b 90 be e8 fe d6 fc 6d af b0 cf 05 -27 - -# Seed: -60 72 89 5e 47 80 c8 f7 7e 0b 19 5f c9 f5 db 78 -33 f7 b6 f5 c8 1c 1d 30 cb e9 e8 0c cb 38 66 06 -9f 8d b6 96 3a d4 6d 52 94 2a 5a 73 f6 a3 27 a9 -4e d1 19 df ce 4c 37 65 84 37 13 b6 19 f9 c4 38 -32 03 d5 5e 2a b6 1d a8 96 1a 81 03 7f 11 18 a7 -82 97 eb 36 6a 1c 51 d9 f9 46 6b 71 5b b6 29 99 -e0 a9 d6 e0 25 01 d4 7f 97 db 40 9e 38 86 e1 36 -6c 3e ff 2b a7 90 e2 62 43 22 7a a1 58 80 82 bc -e6 d5 cd e3 ea 7e fb f1 5c 6c 7d fa 54 54 72 fa -9e 93 95 6a 45 51 d5 a7 7c a0 0e 26 - -# Encryption: -b7 ac bb cf f0 fa 9f ca 6f 0b bd e5 a2 f0 a1 e6 -a0 ab ad b3 2c 89 e3 17 25 5b d1 8d 12 e1 a6 0b -3e 00 2c 1d 69 35 64 48 32 9a 49 b5 bd 24 19 10 -fa 0c e0 3b 3e 68 a5 90 50 75 99 39 1e d1 53 97 -92 29 3f ef 13 17 4d ac ea 6d 2a 05 b3 9f 68 48 -28 a5 d6 d2 17 f8 4b 78 2c 8f c9 84 3c af 6a eb -17 8f 0e 2c 6b d2 a0 e6 f7 b8 09 29 61 17 cc 8a -6b f7 37 35 84 64 24 ad eb a1 ab 31 14 5f ca 3b -8a f7 68 c9 d0 a2 8e 09 d5 8a d4 96 42 31 08 f0 -8c aa c1 74 ac d1 f3 ac 43 48 69 61 c5 c9 0e 1e -fb 89 bd db 7b b3 9f 4c a3 af 57 12 f5 53 af 59 -4c d5 d3 64 13 29 14 26 10 07 aa 1d 5f 21 6b 8e - -# PKCS#1 v1.5 Encryption Example 14.20 -# ---------------------------------- - -# Message: -09 d6 94 8c e1 c1 f2 4c 6d 52 9c bc 5d 6d 6c 1b -ea ab 56 95 b3 0c aa b7 44 96 9b f7 f9 db d2 83 -33 5e 98 a9 bc d6 5d ad 2b 4f 0e 3c ec 89 0b 05 -e6 7f e9 78 23 d4 - -# Seed: -ed ed 62 a6 50 f7 de 3b 12 80 22 9d 5f b1 c4 40 -8e 82 df e0 31 7e 64 30 fc f4 71 b1 e2 8d a8 cf -6b 4b f4 c5 d0 31 e3 ee 68 8b 64 07 72 aa 50 08 -e5 86 3c 70 7a 40 22 c3 29 a6 66 4e 71 10 12 06 -b5 4d b5 40 6e 7f a9 c8 22 6f 42 93 11 19 62 0c -a3 0d e7 d0 3b e1 43 94 0c bb 4d 1a 9c 86 e9 86 -3c 98 7b ff 07 02 3d e1 98 64 f7 33 da 0c 89 bd -03 9f 19 f4 d8 ed 61 6f 7c 6e 94 94 18 5b 60 4a -1a 7b f7 49 0f d0 d8 - -# Encryption: -7a dd b0 5c bf 0b 17 aa 50 8a 0b 17 0c 4c 5a ee -84 ce 06 65 0d 08 c9 96 6d 95 d3 07 1a 9a 8f 3a -93 f9 6a 87 53 99 b4 78 c2 56 d0 41 5e 74 84 95 -98 21 1f 9f 9d 0b 89 36 7b aa af 17 4b 7f 13 d8 -49 0b aa a7 40 96 1f 52 d7 e3 53 c5 04 81 8a 00 -0b 03 67 4d 9c e4 93 dc 3a 4e e9 16 13 01 f6 1d -e5 21 ae f3 f6 d4 1d 82 e1 c5 dc e0 2e 63 6e 77 -40 a1 83 f8 02 3a d2 61 49 41 d9 b1 61 cd bd f4 -8f 8a 56 2c 8f fe 44 f5 7a 74 6f 26 39 e5 e8 3b -cf d3 92 d2 3e 1f b4 a8 d8 5e 3b a5 e1 cb 9c 0e -53 f0 d9 1b 01 ce c0 f0 ef 9d fe 3f 2b 30 65 bd -55 b7 2f b1 70 60 ab e8 83 0a ca 00 44 64 fe 7d - -# ============================================= - -# Example 15: A 2048-bit RSA key pair -# --------------------------------------------------- - - -# Public key -# ---------- - -# Modulus: -dc fa 10 ff a7 46 65 ae ef 87 09 74 ea 99 b2 ce -54 54 7c 67 f4 2a aa 6d d0 1a 2e d3 1f d2 c2 42 -af 5d 96 0b 1f 89 6e fb a3 54 3d 65 54 b7 b1 26 -87 a5 c6 88 56 8f 32 e0 26 c5 32 d2 59 93 b9 7a -7c 28 42 ec 2b 8e 12 35 ee e2 41 4d 25 80 6c 6f -ba e4 38 95 4e ba 9d 27 55 df fe eb 1b 47 70 09 -57 81 5a 8a 23 3f 97 b1 a2 c7 14 b3 e2 be 2e 42 -d8 be 30 b1 96 15 82 ea 99 48 91 0e 0c 79 7c 50 -fc 4b b4 55 f0 fc 45 e5 e3 4e 63 96 ac 5b 2d 46 -23 93 65 c7 f3 da af 09 09 40 0d 61 cf 9e 0c a8 -08 3e af 33 5a 6f ce b6 86 3c 1c c0 cf 5a 17 1a -ff 35 d9 7e cb 60 ef 25 1c 7e c2 c8 a5 88 36 1d -c4 12 66 a4 b7 ed 38 b0 26 ce 0d 53 78 64 49 db -b1 1a 06 ea 33 cc f1 ec a5 75 20 1e d1 aa 47 3e -d1 18 7e c1 d8 a7 44 ea 34 5b ed 7e a0 0e e4 e8 -1b ba 46 48 60 1d d5 37 dc 91 01 5d 31 f0 c2 c1 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -dc fa 10 ff a7 46 65 ae ef 87 09 74 ea 99 b2 ce -54 54 7c 67 f4 2a aa 6d d0 1a 2e d3 1f d2 c2 42 -af 5d 96 0b 1f 89 6e fb a3 54 3d 65 54 b7 b1 26 -87 a5 c6 88 56 8f 32 e0 26 c5 32 d2 59 93 b9 7a -7c 28 42 ec 2b 8e 12 35 ee e2 41 4d 25 80 6c 6f -ba e4 38 95 4e ba 9d 27 55 df fe eb 1b 47 70 09 -57 81 5a 8a 23 3f 97 b1 a2 c7 14 b3 e2 be 2e 42 -d8 be 30 b1 96 15 82 ea 99 48 91 0e 0c 79 7c 50 -fc 4b b4 55 f0 fc 45 e5 e3 4e 63 96 ac 5b 2d 46 -23 93 65 c7 f3 da af 09 09 40 0d 61 cf 9e 0c a8 -08 3e af 33 5a 6f ce b6 86 3c 1c c0 cf 5a 17 1a -ff 35 d9 7e cb 60 ef 25 1c 7e c2 c8 a5 88 36 1d -c4 12 66 a4 b7 ed 38 b0 26 ce 0d 53 78 64 49 db -b1 1a 06 ea 33 cc f1 ec a5 75 20 1e d1 aa 47 3e -d1 18 7e c1 d8 a7 44 ea 34 5b ed 7e a0 0e e4 e8 -1b ba 46 48 60 1d d5 37 dc 91 01 5d 31 f0 c2 c1 - -# Public exponent: -01 00 01 - -# Exponent: -21 95 08 51 cd f2 53 20 31 8b 30 5a fa 0f 37 1f -07 ae 5a 44 b3 14 eb d7 29 f5 dc b1 5d a7 fa 39 -47 ac dd 91 5d ae d5 74 bd 16 df 88 bf 85 f6 10 -60 b3 87 17 2f ae 6e 01 26 2b 38 64 c2 d3 c2 2f -94 e0 4a 81 59 42 2b 4e d2 79 c4 8a 4c 9d 76 7d -49 66 07 1a 5b bf 5d 04 3e 16 ff 46 ec 1b a0 71 -6f 00 bb c9 7b ff 5d 56 93 e2 14 e9 9c 97 21 f1 -2b 3e c6 28 2a e2 a4 85 72 1b 96 dd cf 74 03 fa -03 7d 0c 57 ab 46 3c 44 8d e5 cc 12 26 5a dd 88 -6d 31 1e a8 d8 a5 90 3f a5 6c 5f 1c 9c f2 eb 11 -cb 65 7a 1a 7d 3e 41 35 2d c3 e6 86 89 8c 4c e4 -30 5e 8b 63 8e 1b 08 a2 a8 6c c9 eb 98 66 f3 49 -9a c7 7b 61 36 b8 1c b2 76 d6 14 cf eb 7b 6e d3 -f3 bc 77 5e 46 c0 00 66 eb ee e2 cf f7 16 6b 57 -52 05 98 94 7f f6 21 03 20 b2 88 fb 4f 2c 3f 8f -e9 7b 27 94 14 eb f7 20 30 00 a1 9f c0 42 48 75 - -# Prime 1: -f1 23 bf e5 3d e9 7a 56 9d 91 ad cf 55 6f a6 25 -ad 30 f3 fd 3d 81 1f 9e 91 e6 af 44 b6 e7 80 cb -0f 32 78 29 fb 21 19 0a e2 80 66 46 d7 28 cd 9b -65 31 13 2b 1e bf ef 12 72 99 30 60 f1 ce 70 b1 -24 39 30 91 ee 85 93 b7 27 36 7e db ba 00 9e c5 -be 17 c4 ac ee 12 0c 84 12 67 d4 76 31 a1 6c 36 -a6 d1 c9 99 73 c1 b0 b5 a8 35 bf 39 fe af e8 f6 -42 1f d9 c2 a9 0b c2 79 76 65 9e 67 bc 83 12 4d - -# Prime 2: -ea 98 39 b7 e3 7e a8 9b bd a2 7e 4c 93 47 1c b4 -fd 92 18 9a 0a 96 bc b4 d7 56 93 f1 8a 5c 2f 74 -2a f9 e3 6f de 67 9f bd 9e ae 34 5f a2 69 52 7b -69 65 02 1c 4b df 54 d6 85 bf 08 96 0c c9 76 f6 -8d ca 21 ce bf 44 f2 68 a5 9d ab 8d 1a 25 e5 19 -f5 14 7e 1f 45 fe 28 7d 74 cf 72 5b ec 13 26 d3 -42 12 c5 6c f4 ff fa 20 2f 57 b6 8e e8 cc a9 43 -f3 c1 38 c4 cd e3 3b df 2c 94 40 df 65 32 24 45 - -# Prime exponent 1: -ca 0c 9b 60 b8 e4 a6 06 67 56 c6 5d 20 88 41 9d -f6 25 3b 7b 68 8a 85 f4 f6 e9 64 d8 5d ad 52 a4 -52 62 86 7f 1e 96 18 06 9f cc d8 65 e9 28 9e 46 -e3 9e 20 22 94 4c 5c 44 87 d3 45 cf 25 2d 46 0d -97 7d 77 ed fe fe db cb ae 46 a2 3a f7 fa 47 0f -07 7d a0 e5 09 42 04 4c b1 a3 60 49 7c c2 76 0a -c0 f2 ad 4a 2f cd 0e 84 d7 a1 d9 4d fd d2 65 8f -d9 ce 18 47 5c 1f a7 5e e0 ce ba d0 cf 0a c0 4d - -# Prime exponent 2: -52 81 71 23 3c 4e 4a 6c 63 b8 67 64 f5 13 38 84 -6a fd db cb 29 58 34 4c 01 c4 00 4a 1d d8 28 14 -5a 1d 02 a1 50 7d ef 4f 58 24 7a 64 fc 10 c0 a2 -88 c1 ae 89 57 21 d7 8b 8f 04 4d b7 c0 0d 86 da -55 a9 b6 54 29 2e cd 76 82 70 be 69 e4 bd 59 22 -d4 ef fd 1f 70 95 5f 96 27 e3 e1 9b 74 9e 93 b4 -0e f3 dd 1d 61 d9 39 15 e2 b0 9d 93 0b 4b 17 68 -bf ac c0 13 6f 39 b0 cf df b4 d0 50 01 1e 2e 65 - -# Coefficient: -df 2e b2 32 2c c2 da ab f4 d1 46 55 08 f4 15 21 -cd a7 ce ff 23 eb e6 1d 00 d4 41 ee 72 8d da 5d -16 c7 bf 92 0c d9 5f 34 be b4 fe 32 ee 81 7e f3 -36 2e 0b cd 1d 12 45 f7 b0 77 93 ea a1 90 dc 5a -37 fd af 4c 68 e2 ca 13 97 2d 7f 51 48 b7 96 b6 -fb 6d 7a dd a0 7b d2 cd 13 be 98 ce be d1 ed c6 -ca 41 2e 39 53 50 c5 9a 1d 84 2b c4 aa 2f 3c 0b -24 3f de 7d fd 95 35 6f 24 39 25 1a 11 72 c4 5e - -# PKCS#1 v1.5 encryption of 20 random messages with random seeds -# --------------------------------------------------------------------------- - -# PKCS#1 v1.5 Encryption Example 15.1 -# ---------------------------------- - -# Message: -2a ac ec 86 f4 23 dd 92 5e c1 58 82 2a 74 8c be -6c 31 a0 - -# Seed: -cc 4b 87 f6 74 49 7b b0 e3 3d 9e 2a 4a 80 70 b7 -d7 8b 5f d2 c4 b4 f6 eb ac cd 4e e5 05 b7 1f ca -fe 21 56 33 7d df 27 b4 75 af 33 f6 c3 40 5b 8e -3c 0c 20 6e c2 81 29 22 fc d8 a3 66 1b 86 19 bb -c1 82 f8 07 f3 a1 07 2e 62 ca 2b f1 fa 8b 94 4e -58 a0 e2 03 db b7 53 f9 f1 b6 ef 62 7e be e5 98 -96 7b 38 7a 5f 96 36 d8 b6 41 b3 89 84 b1 ca 03 -7e 3a ae aa 17 10 f5 16 25 ea 85 f8 fb 9a 6e 02 -9e 64 57 58 14 d5 30 fc 14 6b 34 45 ac 42 01 b4 -e4 08 ad f6 55 f6 78 43 d8 87 1c ac e5 d9 06 d7 -fc 03 8f ea 88 5b 96 fb 8e b1 a7 21 c6 c1 4a bb -eb 78 fb 4c 79 8a 19 58 99 59 89 84 55 a3 16 84 -3c 6c d9 9e f5 8c 2b 0b 49 b8 ab 41 91 b4 02 a5 -4c 92 97 31 0c d2 24 b1 7f 21 41 67 72 5c 48 fc -c6 1b c4 7c fa cc f1 5e b3 b0 - -# Encryption: -60 42 e7 45 58 9a f0 3a f8 75 20 f9 3c 45 d8 c3 -59 85 ad a1 16 1a 37 d8 22 e9 f9 46 0f c7 5f cf -01 79 d8 49 1b 8f 5d 1e 4d e8 ce b3 1e 07 c4 86 -5c 5a 3e fd bb b6 9a 88 03 b8 9e e6 5a 43 0a 58 -09 c7 07 56 91 50 b5 80 bb 68 6a 94 c5 54 1c 46 -ad cd 82 79 60 ce 24 4f f6 88 38 7d 16 16 e8 5b -4d 17 80 c6 48 36 06 cf 92 4b 54 f0 80 cf 41 54 -e6 68 29 bf 6e 53 24 81 04 8e c4 1f ad c0 7d 75 -5b b3 4b b2 81 45 21 9c b3 0d 47 d0 d6 18 70 91 -80 e9 03 03 ff 9e f0 90 18 be d3 da 75 76 1d a7 -94 81 1f 96 bc 9e 8d 7c 4b a1 b5 94 6b da 0b d3 -13 fa ec 4c 99 3e d2 74 8e ed 8c ce 4b db 52 0b -a7 db 16 5f 9f e5 6a a8 45 4d 6f f3 38 74 fe ee -bf 29 de 2d f5 b7 f0 0a a1 d9 fb 07 3f c4 06 7b -58 dc 50 62 4e 12 7f 71 1d de 2c c2 cf da b4 91 -9c cf 28 c8 36 60 df c2 27 b0 f5 00 ec 1f 90 4f - -# PKCS#1 v1.5 Encryption Example 15.2 -# ---------------------------------- - -# Message: -5c 8b f2 ac ab 08 bf fe fa 64 80 95 2b 24 da a5 -01 9d 12 5f ee - -# Seed: -5e 16 30 70 ef dd b7 9f 47 64 f8 a8 1d 44 46 0b -5c 40 0b ec 70 37 52 29 20 f7 72 95 9f d4 cf 3a -ef 2f 14 45 4d cd 9e 86 25 12 ca 69 db 83 68 a4 -cd 8d 1a 44 da 59 5d 6b 43 93 91 c9 31 46 b1 23 -f1 86 08 3c 4b 64 47 bf 7e 20 81 51 46 ac 75 49 -ef b6 74 60 e8 ff 1b 2b ba 5c 95 a5 1e f8 13 d5 -dc 4e 6c 38 92 bc 4f 43 9c 99 11 7e d0 6c 14 a6 -c5 40 fd 4c 65 d1 95 d8 c6 1e a7 79 68 38 e5 a5 -df af 11 d0 71 3c 19 1e 8a 0b 80 80 f7 a7 7e 70 -3a b3 66 22 f1 c6 48 b7 65 43 5b 90 27 97 18 11 -b1 15 2d 97 2f b7 6a a8 92 05 03 3d 95 78 18 7a -e6 34 88 fd a3 c8 6b 2f 28 e7 79 ac 4c 89 cd 25 -20 17 d1 a9 95 8a 52 c5 b8 7e c1 bf 9c bd f7 de -0e 97 c5 8b a1 1b a3 a3 37 05 f3 f4 99 58 9a 3a -72 e2 c0 fc 5b 16 fc a2 - -# Encryption: -44 e6 71 e0 3b b6 67 80 ec 05 86 d5 6f 8f 6a 49 -41 5a d4 bb ce 22 6d 75 d7 0f 06 ce 29 de ea 7d -a1 af a8 28 7e 44 36 3c 51 0f 34 eb 8b f3 1c a2 -47 29 59 26 9c 18 df 09 36 ff 12 c6 16 6f 4f 45 -96 cb 1c ae c4 1d ed a8 c5 09 99 bf 4c 94 4d 21 -37 5b 36 75 31 91 b4 cb 7c aa 1b 43 e9 11 6c bf -1d a8 b2 01 d2 97 a4 d0 8b b0 e5 bd c8 95 32 70 -f7 c2 80 96 78 c4 4b ea 75 e8 1f ac 22 d2 71 06 -30 2b b6 9d a0 74 b6 ef a6 68 8c f8 35 c8 0b f5 -e4 55 35 28 ec e0 b7 c1 b7 7b 66 6e a3 45 23 ec -1f cb 3e 25 05 4e 0b b8 e4 ba 02 7e 5c 21 bf 7a -51 43 bf 04 1c e9 cc bc fa fa 87 80 82 fe 41 f7 -8c 70 bf 4e 53 cf 48 7c 1a ad b0 19 15 ce dd e8 -cd 9f b8 4e fd 98 1a c9 8c d5 7a 82 56 d4 e9 e2 -d0 86 2d ab 04 54 d3 ff 4f b9 85 26 4a 46 99 5a -b0 68 a7 4e dc 7e d8 ae ff 5f a3 0f 3a 7d 75 94 - -# PKCS#1 v1.5 Encryption Example 15.3 -# ---------------------------------- - -# Message: -e2 00 4b 31 07 39 98 2c fa 9e 95 45 3a - -# Seed: -e9 3e 64 12 33 7a b7 b0 f1 b5 69 80 1a 3c 16 4a -6f 23 e3 c2 7c 7c 55 a8 c5 ac 9e af 31 88 55 f8 -32 8b 5d 7a b4 cb 86 19 a0 0e 99 41 cc aa 94 85 -70 52 71 82 61 74 43 c1 d2 1e 4a 6e 21 b3 f6 d4 -f6 98 a6 1a e0 29 17 2c f4 da 03 9d 91 58 5a 87 -da d1 28 c2 fa c5 53 1b 2f 45 dc ef 9b 9f c3 31 -c8 04 48 85 28 84 7c 90 87 5d 19 07 5f ff b0 05 -76 3d 88 e0 81 47 66 92 28 a9 aa d0 16 25 bc 61 -11 2c c7 b7 72 f3 21 d4 33 d4 f2 69 78 20 9d 0e -79 67 6a f3 b8 a7 4b 97 3f 52 ab 91 90 85 f3 52 -35 5f 85 6a a4 0f fa bc e5 43 d4 e7 6d 45 48 92 -98 9c b3 83 f3 e6 6b bb 0e 8f ee bf f7 c6 a5 4e -f2 62 5f c4 05 0e 6f 87 a3 23 13 2a 4e 67 12 68 -fb 83 cf f2 d8 22 51 b7 9c be 32 da a8 e5 53 20 -2f e8 87 22 61 f6 0d 5b b5 11 f2 fa 2f 14 21 a3 - -# Encryption: -2b bf 6b 0c 5c f2 0e f2 f6 c5 a0 aa 48 45 4f 85 -0a a5 f6 bb eb 03 0d b4 e2 be c1 1f b2 00 f0 1e -4e ae f0 44 d8 14 33 33 33 8e 5e 66 38 00 87 66 -0e d0 17 3a 76 82 12 85 67 7e 37 1f 28 ec 45 00 -f4 d5 9f ab ab 20 73 e7 34 36 5f c6 b0 94 ee 0a -db ce ac cf e2 49 88 ce 61 5d 60 5f c3 40 8c 03 -be 22 1c 99 3f 61 aa 72 4f c8 71 4a 8a 4a 18 15 -f9 e9 a9 98 82 aa 46 88 3e 70 47 4e 33 29 b9 91 -e6 d5 3d c6 b5 00 86 19 92 34 3a 6d a8 9a 8b d6 -f3 7f 34 e5 de ee f8 0e 7d 56 b9 3a 45 17 60 66 -36 50 fa 45 5d 55 41 89 9a 76 aa d1 c6 27 5e c8 -2c 46 07 12 26 59 b5 08 cb 5d c0 26 ac f9 3f a0 -1a 5f ca 3d 81 c1 bb 20 a5 a5 cf 35 7a 23 c9 56 -88 ea 42 eb 1e f2 c9 d4 6a e3 7f 8c be 61 5c 20 -84 d9 89 b8 92 f0 16 7b 23 be 33 62 fa ce 80 8d -6a 5e b8 96 19 44 08 db 7c 01 63 9c 58 62 30 4c - -# PKCS#1 v1.5 Encryption Example 15.4 -# ---------------------------------- - -# Message: -db 6a f1 29 23 05 27 8c 5b 33 83 f8 a4 1d 6c 83 -52 21 14 c9 88 85 50 74 06 5b 23 f9 fe ae 8e a4 -31 fd 5d a3 6f 9b ab f9 dc 61 df 2e 39 23 47 83 -04 73 38 ec 4f - -# Seed: -cb 85 1f b2 76 a7 49 1c d3 ef e4 d3 39 50 16 c1 -ec 2b 15 09 4a 1e c6 d9 30 d4 ca 21 b4 20 f8 47 -ff 68 68 f0 14 d2 09 ff 80 7e 8b 1f 71 67 0b 32 -50 94 c0 f6 e3 2f 84 f7 68 22 22 02 b2 1b e3 6a -28 6b 30 e0 82 ef 3b ba 64 7c eb ee af e3 10 69 -44 18 d7 0a 67 9e b2 01 07 80 dd 0e 96 55 3c 43 -cb c6 d0 0e ac 22 aa 71 f2 48 21 c4 d6 c1 77 8e -78 6c d8 c7 bf 2c bb f2 14 e2 03 e2 ef 2f 33 35 -78 cf 1a 94 7e 27 e5 99 96 29 0c bc d6 ca 3f 8f -96 ba 67 e0 e3 41 30 cf df 86 ef 48 e6 7c 90 b8 -b7 2e 6f 42 55 01 7d a2 d1 f3 ae dd 7f b1 d9 de -42 ef c0 37 ab e6 61 6e bd a8 d0 b4 0b d7 80 cb -db 68 ce 54 31 8f da fd - -# Encryption: -c9 9a 9a b6 7c ad 0c 41 ec 84 7b c2 74 67 fd f5 -bf 61 ed 6d 04 c6 5f 7d 9d d8 bb 70 07 a8 a9 b8 -3a 3c 38 a9 cb 92 5e 3e 7b 3c 40 7d 64 66 93 15 -b3 54 49 e7 54 28 ae 96 19 14 b0 b9 10 23 e7 83 -19 1f 95 41 b6 78 65 97 1c 95 b0 be 18 93 1e b1 -c8 47 c2 6a 29 83 c0 58 4e b2 17 c9 9c 70 5f 5a -d8 cb b0 9f 99 b0 6b df 7b d1 26 28 ae 36 67 c1 -2c 72 27 d9 6f f9 c1 08 dc e3 22 51 06 f6 2f 9a -4a 3a 81 17 a9 92 f2 88 c3 b5 97 91 09 87 8f cd -59 c6 79 6b 19 98 48 2e a8 2f 30 1c 93 91 83 b2 -dd 47 88 04 48 67 8a cb a1 2d 7b c8 a5 52 eb 32 -76 34 e9 2d 0c dc f7 1e ff b6 66 ad 90 2d 9e 26 -ad 18 60 e2 92 81 d0 2f b0 c5 49 3b f7 4a c0 2c -94 40 43 6e 0d 75 32 28 92 77 7d 32 5e c8 45 2d -e7 58 cc 6a 5c bb 02 d3 41 f4 5c 9a c8 ed f1 50 -da d7 15 82 dc 77 95 8a 85 44 b0 b5 58 ee 2a 0b - -# PKCS#1 v1.5 Encryption Example 15.5 -# ---------------------------------- - -# Message: -e7 99 e4 eb c8 69 31 9e e2 25 80 - -# Seed: -3a 07 57 cb 49 a3 fe 6a e8 0d 37 42 06 8b 5c 80 -68 b8 c5 88 54 20 01 10 93 c2 20 99 ed aa db 49 -1f 22 6f 85 60 66 16 3a b5 10 5e 78 79 c7 49 1c -18 35 98 5d c4 94 21 0e f7 8b ad 48 16 d9 b6 94 -c9 c8 be 46 6a 4d 17 8a 7d de cb ce 53 65 40 0d -68 21 b6 e9 ae 0e 03 bb 69 ad c4 ec 73 4a fd cd -ea 6d c0 c4 85 96 c4 8b 27 35 ef 70 f3 73 4c 18 -6d 03 18 37 8d 2b f8 09 96 88 67 2f a3 85 91 da -4a e6 fc 11 2b 72 7e c8 19 84 df 7b 56 c9 84 4e -25 b0 fc d8 1d 2b e7 d1 8d 01 64 6a 6d 9f e2 25 -d3 69 7c 34 ed 2e 33 6c c0 37 3d aa 28 d8 82 e4 -97 75 7b 0a 65 10 86 2e ac 10 d3 b2 4a db 25 2f -30 d4 34 e3 0a 63 76 46 9d 80 b9 57 11 16 17 78 -df 35 88 9b 3a cf b1 f6 53 ea 63 07 2f 35 a3 c8 -9f 6b a5 2a fb bd c2 8f 23 d3 8f 4d 4e 79 fc 39 -7c 10 - -# Encryption: -3a 3e 72 5c 6e 4b b0 06 12 69 61 8c bb 8a 62 67 -d9 55 83 ab aa 03 d8 df 85 a4 f6 a5 cc 35 9b f1 -15 26 0d db 70 ae 7c 66 bb 8d 87 d6 33 1f f1 b0 -b5 4b e5 64 8e 83 e8 3a 91 c5 4c f3 71 49 6e e5 -ca 02 73 b1 9f 70 03 70 c2 c8 cd f4 28 13 38 a6 -e7 2f 66 32 41 68 ea 8c db c6 4c 60 9b a9 67 91 -c7 91 b5 ac 84 00 99 2a 8c 66 fb 09 f4 e3 13 07 -49 12 af 0c b7 41 5f b2 15 eb 97 fa eb be f1 a4 -47 23 9a 91 db 4a 34 fc a4 d8 43 46 25 9e e0 a1 -da dd 10 b7 f0 1f c8 c5 3e 42 0f 88 cd fa 0c bc -f6 2b e4 4b 8a 79 40 86 4f f8 13 7e db 12 2a c2 -da e5 41 0a 47 cf 07 62 e2 0f 20 86 cb f6 6f f4 -d1 a9 f7 27 0f 00 9c b2 e0 7d 90 20 b4 8a 76 d2 -41 08 e9 98 9b f9 04 e4 a7 1d db 91 74 0a d7 e5 -d1 b6 8e c6 4e 3e 66 cd 0e 89 7d cc 66 57 39 eb -ac 45 19 93 f0 2c c5 bf c6 3a 60 2f 55 83 81 da - -# PKCS#1 v1.5 Encryption Example 15.6 -# ---------------------------------- - -# Message: -09 97 12 b8 26 ba 67 cf 92 92 25 bd 61 2e c0 65 -d4 51 ed e2 31 c8 d5 c2 04 04 d4 70 e7 9a 7a 1f -24 6e 3e ec dc c7 5f 08 53 29 f8 f1 7b 81 d1 30 -30 0f c3 b9 f0 93 a2 - -# Seed: -81 cd 64 c8 4d 77 65 fc 60 e4 de 3b a9 b4 dd 21 -dd fb 74 fe 2d fb 7c f6 19 db a4 cb cc 17 6e d9 -4e 6f 37 ed 1a 97 e3 bf d3 63 65 d2 64 4d 3b 6e -e6 c7 71 09 fa 18 41 2e e7 cd dd 3b e8 d4 bd ee -94 c0 96 f0 72 ca b6 f1 88 6e 3a 84 a7 fd b5 af -f3 dd 83 f7 e5 c5 b4 9b b1 b3 8f 8f aa 75 25 31 -d8 9c 88 39 3e 9e b8 f5 7e dc 5b 9f e6 ed 2b c9 -5d 27 2c a9 95 f7 e2 59 b0 08 32 d9 8b 87 23 12 -cb ef 8a 04 8f 6e b7 91 97 84 ae d3 d3 1e b4 b1 -2f d8 07 60 a1 34 c9 d6 c3 34 c2 dd 3d fd f4 97 -5c f1 b5 1e 87 12 2b 97 33 33 44 96 08 ff bb 2c -f3 0a 02 bc 46 ea 24 7b 45 39 b1 86 07 bd 47 d3 -cd f0 87 72 14 ba - -# Encryption: -78 6b 3f 59 9d 1b 74 3e 23 58 26 24 fa 2c 94 a3 -6f b6 bd 33 fd dd 57 64 08 cc 85 4a d7 cf 66 7f -17 38 0a f2 0b 0b 73 0c 6b e9 8c 01 80 76 b9 b5 -04 1d af 2e eb 02 54 69 30 0a a4 36 43 35 be 26 -7d 33 b0 6b 4a 7a 79 7a 3c 0a a5 fd 3f 91 6a 55 -dc 27 4c 0a 24 87 f1 25 f9 da 82 59 6f 43 4c 7f -ba c7 ec e2 ef 6c 83 e0 34 8b f4 f2 c0 83 05 07 -55 b5 6a 9c 63 47 f3 9c 76 b0 e0 ee dc 61 54 10 -25 c2 3a a1 85 5c 0b 22 b4 46 fe 1e c5 f1 11 2c -5a 7f c2 85 ef dc 84 20 ec 01 a3 a7 c3 3f 73 5b -45 55 09 2a 9e 8d e1 6f 3f 7d 46 9f 88 cd 75 c0 -1c 7f 2e 7d 54 6a 1b 9e 7f 49 84 fa 29 a2 cc 80 -d3 10 f9 d7 81 8d f6 d9 ad 6c c2 05 37 4d 52 e8 -e1 73 90 bd e7 2f 25 b7 12 a4 26 9f 23 ae b2 41 -a6 66 e9 64 96 cd 84 b8 33 fb 53 d0 57 1f 7a c2 -d1 96 4b 8f 2a 7e 13 33 6d 9a 7e 03 04 1d cf cb - -# PKCS#1 v1.5 Encryption Example 15.7 -# ---------------------------------- - -# Message: -5f 2a 5c 7f 93 e7 14 ee ca b3 a5 5a 69 c7 9a 3c -bc 15 bd 19 df 27 98 9a 9b ab 59 fb be a9 ff cc -66 3b f8 e1 e7 40 7d c2 73 - -# Seed: -e0 19 60 82 6d 1a 69 f6 84 c9 c0 b8 5d 84 dc a5 -81 1c 89 a2 c0 74 2f 33 a2 ad 19 9f b6 57 a1 aa -98 13 60 1d 29 93 6a 43 d9 b9 eb 4d 32 89 cd 7d -37 06 ab 86 b4 d6 6a da a7 e0 a1 34 51 b2 ed b2 -bc 77 10 91 11 0c da dd 7e e2 e6 aa ea 2b 35 cf -ae 4c e3 b1 da 18 16 68 4c 89 c0 b3 fb 2f 87 79 -b2 5c e0 c1 2d 42 b1 d3 d3 0b 8f 20 be b8 99 91 -6e 4f d0 a1 58 86 37 19 2e 05 28 ce 6e a5 4c 8e -b7 54 fd 7f f0 03 25 81 a9 50 59 98 e6 9e 14 f0 -72 bf 95 df ef f0 14 df 99 ed 78 53 b9 82 e8 89 -41 29 a1 d2 7c 53 ea aa 23 4c 8d 14 a7 ff c5 f5 -e2 18 7c ef 79 eb f5 2b 3d 6c 06 65 89 5b fb 87 -e4 bd 61 0e 35 8f 35 26 da 05 92 c9 e5 02 b7 2b -76 e4 65 66 - -# Encryption: -77 d9 07 18 1c c3 b1 bb 19 81 e8 cb 22 f7 ad 75 -f8 82 e2 6a fd 28 1b 64 db 70 c8 4c 6a 50 fe 74 -24 9e 22 fb ee 90 e3 0d 0b 70 ae 2f 7e 12 ac dd -f6 78 f0 0d 22 7e 53 61 54 26 62 43 02 69 fe ea -34 12 47 92 af b3 f8 7b 30 f9 50 f4 ed f2 2c 44 -04 c9 68 8d ec 38 ea 0b 99 cb 3d c3 84 bd 88 fa -31 83 d7 e0 7a 20 54 d7 3e a5 1d 42 86 bb 39 da -e3 ae 6d 0b 96 51 f1 ea 48 8f 80 5f 2a 21 6e a2 -1a 56 76 b9 7d 1b 11 d3 b4 03 6c e1 67 fe f6 4e -0e ba 41 9a f6 73 98 3f c6 ee 01 c6 37 b1 64 e5 -aa ac c9 9a de e9 f4 7d 21 92 54 69 6c 8f ce ec -6c 74 ac 4e 39 05 1e 15 26 94 01 73 82 64 f0 ca -5b f1 22 c5 5c 9e 5d d8 47 b1 d5 77 4e 74 08 c3 -68 4a a9 74 b0 ba af 40 ed c2 2a 03 57 af 72 c8 -16 cf 73 1f cb 63 96 53 60 69 9f 26 99 97 b8 48 -0f 30 a6 b5 d5 7e 12 a5 cc 54 ec 0c 80 5f dc f6 - -# PKCS#1 v1.5 Encryption Example 15.8 -# ---------------------------------- - -# Message: -55 61 39 59 3e ee 8b 6e 87 - -# Seed: -2d e2 a5 72 24 f5 f5 b1 2e 22 3e b5 f8 2b 9f 47 -24 9d 25 55 93 79 13 6e af 18 e2 f6 c8 33 e3 f0 -1b de ea 9c 30 3b d9 67 7c 2a 85 71 7d 59 3a 28 -02 ae cb c6 b3 b7 1f 2c 79 03 ff 69 0e 3f 3c 49 -57 dd 74 cc 9c 2a 68 dc 1d 31 9c 1e 17 87 bb b7 -f0 e6 e5 1e 39 a5 ba db ba 9f d4 67 66 19 74 31 -2b 55 7a f1 89 52 54 9f 6e ba 9d f4 9f 70 ea b3 -68 9f 9f a8 fb ea 1c 97 e1 bb 2f 09 3e 6a ca 9c -38 0e dc 54 6a 19 c4 4f 91 f6 dc aa 28 9b d1 14 -fe a1 b0 36 f9 9b 1a 57 f8 61 43 d8 67 5b d0 7d -4d ea bc 9d 51 0c 61 70 99 44 9c cc ed 5c 45 07 -b7 9e 85 1e fe b1 8d 06 b1 99 81 0b b6 b3 cb e4 -12 73 ba a7 35 16 02 e5 f9 52 13 f9 69 55 ad 5f -dd 3a 20 52 db c7 5f cf 60 aa 22 47 f2 d4 e6 03 -da 45 37 0d e1 c1 da 68 7e 26 8e e4 46 67 f9 4d -ad 13 bc 9b - -# Encryption: -4a ce 54 a7 52 f5 56 e3 6e ab b1 19 48 95 84 12 -14 0c 80 c3 1b 61 dc 40 f8 1a 6b 12 17 a0 1c e0 -67 ab 37 f5 3d f4 c7 7d 9e a9 c2 d7 95 0c 8c d4 -97 00 b8 cd 24 d4 e7 8f 7f a3 46 29 62 cb fd e6 -d0 2f b0 e5 03 65 64 93 25 05 ae 1c 85 1a a6 d1 -d8 4e fd 04 d5 78 ad 68 27 3a 36 a8 ae 23 d1 45 -2f 94 a9 37 88 17 71 3e 76 4a 09 17 45 26 29 b5 -dc 75 b5 7b 0d 5e 6a 72 8c 83 69 11 72 d2 cd 95 -f8 ba d0 7d b4 68 eb f5 45 b7 f3 f2 c8 63 b6 e2 -0c 67 c4 76 9d ed 03 91 a3 36 f3 a5 d8 7e 24 fc -f9 1a af 77 4b ee 77 a7 89 a5 90 80 09 c7 a5 5e -ac 92 af 4c 3d 46 1e 7b 40 61 6c e8 06 19 4b fc -20 74 c3 f4 f1 35 59 70 0b 27 08 a0 b7 55 78 96 -70 a3 62 6a 14 63 88 11 bb 18 e1 5b 10 25 c3 b9 -be f1 11 17 6b c1 f2 46 9e a9 9a ad 20 86 05 73 -d6 c6 a1 fe 40 db 51 e3 6f e3 38 00 10 1b da 20 - -# PKCS#1 v1.5 Encryption Example 15.9 -# ---------------------------------- - -# Message: -9a 13 96 62 2d 06 6c 10 56 08 58 c2 c4 cd 5c 04 -44 9e 2b 95 50 c5 bc 92 93 76 1a 91 04 41 1d a1 -8a 57 d9 b6 a9 97 33 3c db ce 77 e9 fd be 6b b8 -31 - -# Seed: -f1 78 61 ac ff b2 4c ac ed 90 ba 38 aa 7e a0 f2 -e5 4e ea a6 2a e6 64 98 f3 c2 8f 99 6b ce e2 53 -be e8 19 9e 3e b8 0d 62 7f ee b6 e0 b3 94 90 ed -f7 6d 16 a2 a0 bc 20 09 32 52 a9 d7 f1 f9 38 8b -06 19 44 85 2a fb e7 3c e4 13 a3 fc a5 21 b9 47 -4e 67 81 29 46 4d 91 b8 2b ca a5 9f 56 ec fb 12 -4f 61 f5 04 67 13 01 05 b2 cb c6 94 3b 95 36 95 -cf cd 20 c9 b6 ef 53 f3 f2 10 33 1d 39 32 dc 01 -0c 73 59 29 09 6b 2e 68 ff 16 66 4b 0b 90 a0 fa -1b e4 60 57 85 92 b0 cb 4d 6c a4 5e a0 6b de 3e -8a 1e bf ef 70 d8 3e f7 9b 3a 74 db 06 0f c0 20 -3b 74 80 7f 40 70 01 f4 b4 d9 9e c5 15 8e 8e 7e -4b 10 2a 51 5d e9 5d 2b 70 fe 1f b4 - -# Encryption: -10 0e ce 63 45 25 d4 67 f6 d4 a6 b6 6e de 1c c2 -37 f6 1f b2 b6 70 23 a8 3d c4 56 b9 2c da 18 3e -d6 62 0f e5 7d 5a 67 33 2c 77 23 3a c1 e8 72 5b -36 f8 e1 b1 08 41 2c a6 fb 35 dc d4 d8 16 77 a2 -b3 0d 5e af 25 e0 b9 19 1b 38 f7 ee f8 3f 91 21 -a8 08 43 8c 92 ab 03 f5 20 80 7b c9 a8 94 70 5e -af 4e ed 06 68 23 a6 7a a2 a5 59 9c d9 5e 58 da -7c 09 48 36 d2 af eb a3 9d d0 09 a6 4a de 03 05 -33 76 f0 29 36 cf 3f 56 bf 64 c1 f3 bd c0 7c 45 -a9 5b 9f cd 93 96 cd 9a 8d 41 bc c5 64 24 93 7a -13 71 b3 84 7c 90 5b 9a b5 84 02 39 3d 40 46 e4 -a0 15 c1 47 08 f7 4c e7 79 0e ba 8a f7 92 07 24 -40 bc af b1 4c 0f 81 08 97 11 87 c8 0f 46 3a 1f -ff 25 86 46 ea 16 e5 1c 6e e3 61 b6 61 a1 4f 07 -cd 4f 5a 82 c7 09 f4 94 f1 df 0f 80 3b 6f 64 a7 -2f b9 c4 50 ff e2 68 fc ab 48 7d 4d 63 01 3e 41 - -# PKCS#1 v1.5 Encryption Example 15.10 -# ---------------------------------- - -# Message: -b3 82 4f b5 45 a8 3f 82 ef 82 23 11 82 84 c5 45 -6b ab 60 0a df 79 f5 07 33 b6 66 8f bc 51 5d a5 -96 31 62 a6 d7 d7 e9 6f f9 1a ff 12 eb 3e 93 11 -e2 21 e7 0b c0 - -# Seed: -b8 26 8e 4b ce 7e 53 f2 e8 be 98 b1 92 d6 3a d0 -65 44 a8 0d 6e 62 d6 32 48 6e 15 e5 75 ba 70 6e -3e 76 89 30 dc 8e 41 1f 8e eb 0b 6e 8f 06 06 29 -da 8a 24 23 68 e4 79 cc b3 31 69 70 70 b4 b3 52 -4e 69 16 92 76 ba b0 a9 45 14 cc d6 60 70 25 28 -ed 20 b5 d1 df 07 77 9a 62 c6 56 86 e7 d6 68 46 -6f fc 74 8e b3 43 44 ca 6f 30 5c da 3d c3 e8 f0 -1c 43 ea 91 79 da 46 21 47 f4 d3 ec 92 f8 88 b7 -ee aa 41 0e 12 c8 6d 89 42 c7 d0 12 f4 5c 61 ff -a6 e2 b7 8f 84 3e 9a 75 d9 67 32 14 d5 58 ca f0 -1b 45 f9 36 86 ee da 54 79 db 80 52 79 25 59 cc -23 6a 4a 1e e6 5d 3c a6 0e 09 a3 c1 84 d4 b3 95 -d7 0b 8e f8 8d 78 09 1a - -# Encryption: -c0 e9 8d 50 89 4a da 84 9f ce 89 83 f6 f8 95 74 -03 4d 6c f3 b8 35 2b fc 50 72 4a 70 3d d4 f4 2f -40 06 ae 00 8a d9 72 33 ce f6 f1 6c e1 b4 23 f5 -2c 6b 67 7e f0 05 13 1b a9 87 f9 8c 72 2f aa 49 -42 ec ce 2c 99 66 37 40 a1 a1 e9 81 20 fa ed 97 -fd 03 ff 36 fe 73 75 8e 70 df 17 f3 1f 1f 39 41 -81 2d 34 ca e6 c3 9d e7 87 ef 57 04 bc 39 c9 20 -ea 5b 0e b1 83 3e 83 b4 57 94 fd e0 ff 00 05 c6 -27 33 c7 0a 29 6c a0 bd 47 f0 65 50 3d dc e2 d6 -49 de 1c 32 8d df 60 32 a3 3f ad 46 ba 04 1d c0 -a9 94 bf 0f 56 a4 65 f1 62 5f cb 81 ce 01 fa 29 -9f c2 b3 c8 09 39 eb e6 a6 73 82 6e 2b 2f 12 ec -dd a5 03 5c 95 09 31 2d d1 9f 10 c3 5c 8a 8b 0d -a6 3c 08 51 97 00 6a 9b e2 36 10 8e b9 87 91 b2 -6e 28 08 b5 cc d5 ac ec 73 8b ca 02 5b 24 18 2e -f4 ab 9c cc b1 71 a6 9f b4 23 a4 6e 03 7a 4d 0a - -# PKCS#1 v1.5 Encryption Example 15.11 -# ---------------------------------- - -# Message: -a3 a7 da 1b ed b2 ca 99 fc de b7 a4 6d 63 3e ca -35 06 2d f2 89 6b 69 59 07 a7 f9 71 d2 cc 50 b6 -e3 d2 a3 67 d1 6e 72 7f 56 97 c0 - -# Seed: -f0 18 a9 b1 3f be 56 0b fe 95 52 ed 8a 86 06 be -ea 90 05 5e d3 f6 2b b2 af 07 f6 92 cb 60 ac fb -6d 59 07 d6 0e 0a 59 7a 54 ca ea f8 44 91 1c dc -87 4f af 95 69 53 a2 7d 30 0e 9b 71 5b 10 4d f3 -c2 32 c3 c9 63 82 cf 5b 5f 3d 07 b2 30 b5 25 bb -33 0e 31 9d 1a 7c 82 d1 53 af 81 7e f1 1c f7 2e -76 dd 50 b0 d7 e5 56 22 65 c8 34 5d a8 29 f5 60 -d6 a5 4e 6f 1e 28 8a 3d c2 17 6d 19 a6 8a 0b 1c -5c 92 b1 6b 8b b2 9e 4d 01 df bd 0b 18 07 9b d4 -0c fc d5 23 35 b3 a1 8b c4 ee 92 44 76 0e b4 94 -f5 be 5b 19 71 88 6c a2 be ec e0 a3 94 4f ff 8b -e6 b4 2d 96 e1 c2 c7 2e 4e 90 f8 7e d1 36 15 46 -7c fc 91 c2 6e b3 8a 7a f9 f5 66 86 93 1a 47 26 -da 04 - -# Encryption: -25 17 7b fe 12 61 9b 44 f4 a4 fe 7c b7 6d e9 3d -4e d4 a0 5a 31 e5 be 8c c4 e5 60 66 1d e9 a3 4a -e3 17 cc 02 ff 63 10 67 08 32 8b d3 f7 87 63 ab -3e 57 65 2c 63 f1 05 f7 97 1d 2d 8d 70 1e 62 97 -a7 9c 78 7b 7c cd 62 a5 3b 39 d9 c0 39 46 e6 6f -48 8a 92 e8 e1 7d c6 ec b0 f6 5b f0 1e 3a ff ee -99 76 87 31 1b e0 e9 45 ad d6 3f a3 f4 00 38 2c -b8 ff d8 91 57 54 01 8c c7 5e 82 82 26 b5 03 9c -d9 c5 7f c6 d9 9c be 8e a4 a3 d2 9c bd 09 d5 4d -95 cc 07 34 c2 35 44 f8 e1 fb c7 49 3e 06 d1 6c -0a 0a c1 53 0d 21 f0 33 7e 26 2f d9 d2 7f cc 4a -fe b5 74 d6 68 66 d4 ca 84 cf d6 e0 af 2b b9 77 -a5 d9 9a 5b 0b 37 44 04 2d 33 2b 93 6b bd d8 69 -e5 f2 c8 83 b4 00 ac 8b c0 68 3e 67 90 63 42 9d -98 d4 94 f3 18 04 d6 5b b3 c9 74 aa 72 e6 65 7d -4c 16 38 c6 79 c8 1a 16 45 3f 6b 0b aa 3f 05 17 - -# PKCS#1 v1.5 Encryption Example 15.12 -# ---------------------------------- - -# Message: -49 f6 f8 a4 a8 6a 8a a0 97 63 aa c8 55 72 b0 e7 -ee 77 6a ef f8 a8 29 00 07 76 ff a6 - -# Seed: -6d b6 a8 27 ac 2a 5e 06 16 c0 f4 43 b2 34 58 e1 -75 ac f9 a3 b2 55 f5 c8 52 5e 72 53 42 4f aa 91 -38 05 4c 3d ba a4 71 f2 7f e8 55 c1 c0 ce c3 62 -59 7a 1a 1e 6e b4 f2 98 ac 3e b7 34 d3 1f f0 ef -10 08 c0 e0 2b 9b 06 e2 93 15 fc 09 4a 7e d2 6b -11 ea 55 27 0a 3d cb 67 06 f4 6a 94 50 bf 83 12 -88 10 65 13 02 48 d2 64 47 66 a7 99 66 ef da db -aa f5 75 ef 4d d3 5a 93 7f f0 bf bf 3d 95 61 c7 -54 40 9b e7 b8 84 7a 60 8d 79 1f b9 87 ee d4 6a -fe b0 db 1c a9 75 c0 5f 61 57 0d d0 70 98 5f 13 -e4 e0 ed 7a 8c b3 91 ce 4d 42 08 32 b4 5a 8b 7e -9f 90 88 4e 61 18 98 f4 72 a0 ac 46 c5 7a a7 f8 -46 8a a1 9d 9c 7b 31 2f 13 43 22 99 03 93 88 1d -32 aa 14 68 f6 e5 f8 eb 85 a2 c3 c2 da ed 92 b9 -3c - -# Encryption: -0f f9 5f 4a 2a 07 18 d6 73 f9 20 2c 80 9f 10 45 -10 1f 52 b9 db a7 72 88 fe 28 8c b2 77 c4 db aa -35 db 93 27 ec ee c3 76 5a e0 33 e0 b6 b7 77 b2 -2c a6 be 66 20 03 ea fa 2b fb da 60 6f d8 ce e7 -ee e0 6c 6a 00 c9 45 a6 55 6c 60 b0 08 69 f9 99 -97 1a 8c 57 af e1 dd ee 7a 75 77 04 7a 0d b9 0f -62 cd 24 7a 88 7f 32 27 ef 6d a9 07 a7 5b cf f1 -9a a3 0c 90 8f 58 35 ef 10 10 0a dc 7f 6a d6 fb -31 99 79 0b 3f 4d 6a d1 9a 0d f5 02 7f db 8f 84 -66 04 e0 2d af 33 55 d9 56 40 77 79 af 15 5a cf -a5 a3 2e 6d 61 74 dc 90 13 1d bd 7a be 58 5d d7 -59 fa 3c b7 e9 f7 21 45 3f 3e 35 4f e7 be 0b 11 -8e f5 b8 79 42 b5 fe d4 c3 0d 7a 08 fe 24 64 eb -79 a3 de ba b3 7b 6d 3a 0a b3 15 77 de 7e 93 22 -9b 49 d1 e8 fd 56 32 d0 26 d8 3e e0 6a a7 85 34 -ce e3 08 1b 22 2e c4 cd 94 88 cc de 4e 15 29 05 - -# PKCS#1 v1.5 Encryption Example 15.13 -# ---------------------------------- - -# Message: -12 97 5d b7 3d - -# Seed: -6a 4b 4f b8 05 80 72 72 96 5b ff 2f 4c 80 0f 96 -4f a3 ae b9 fb 43 3b 40 c8 ac c5 98 b4 84 02 98 -93 a2 19 c9 53 21 34 c0 6a c8 42 5c 28 a5 f0 63 -c2 84 20 0a 04 56 43 48 97 16 51 6a 98 7b f8 1b -a1 86 f4 ce b8 d8 d9 dc 1d 73 f2 26 7f d1 98 8d -6a 2f fd 68 cd 36 69 de 2b 04 70 09 43 d0 d4 44 -ae 3d a8 f0 59 4e 62 61 e5 ff f6 07 f0 4d f3 1e -3d 9c 91 22 d7 6f b9 0f 3f 82 c3 93 25 3b 75 20 -16 5b d1 f3 19 ab 3b 87 5e cc 6a b3 ed 02 47 d0 -37 70 f8 d6 47 1d 69 cd 13 ee 25 7c 1f c8 b3 0f -19 b9 3f e4 f2 fc 9c 21 49 28 13 d1 fc 85 2a f7 -0c dc 63 84 d2 ae 55 b9 1e 39 ae 6c 3b 19 fd 1a -7d ea f7 18 c0 5d 57 80 95 96 a2 88 fc 9a ef b8 -15 ae a2 9f af 67 83 c0 05 35 fd 71 d6 25 49 40 -b7 62 f5 07 26 1f 20 9b c8 ba 94 79 bb 3f 5d 64 -64 23 19 cc 31 86 85 9c - -# Encryption: -27 15 d6 eb 53 ae e6 d4 bd dd 3b e9 b6 63 14 4a -41 0d 03 81 77 9f 79 9d ca 88 07 92 ab 43 1a f9 -98 9d eb 17 36 9d c6 74 38 ad d8 2b df 0a 59 dd -3b c2 78 01 02 58 c7 df 87 69 84 ff 52 76 78 bf -9b 34 c0 77 43 b5 d2 2f 4f 30 cb 5d 7d 8a 6c fd -50 58 24 f2 e0 94 02 4f b0 43 30 f6 6d a7 cb c0 -1d 5e cc 8d fc a1 ca 9e 50 91 b9 d9 c8 e3 8d 0a -c3 93 1d e5 d1 fd c8 33 73 84 82 a7 fd 15 2c 1d -24 e6 9e a0 1d d3 e1 fa 77 23 54 a6 07 d6 2c 60 -b5 61 dc 5c cb 01 2b 71 2f 5c 2d a1 89 2c 31 20 -ef 99 0d 74 61 1d dd 35 66 af 1a cd 8b 48 50 06 -1c 91 28 f8 2a d1 12 da 9f 68 ac 88 39 3f 9a 5c -2c 10 20 aa 77 e9 b6 2e 2d 1e 98 5f ef 86 4c c1 -ae b4 51 ac 83 9c 72 0c b9 73 e7 b5 df 24 a9 8c -cb 6e 67 72 66 29 a3 66 fe a3 f9 a9 52 1d aa 19 -b0 44 30 e8 10 f2 c4 5a 57 d4 25 3b ed b9 1d a0 - -# PKCS#1 v1.5 Encryption Example 15.14 -# ---------------------------------- - -# Message: -8d e0 f5 a4 13 a7 f7 86 39 6f 09 a4 5e 5e 77 4f -3c 60 9c e6 f1 b4 90 dd e2 22 b3 22 d5 34 0e 9b -10 55 81 f4 c5 be 44 ea bb 3d 1b 23 f8 45 - -# Seed: -f8 71 a8 97 ae e8 45 c3 bb 82 69 90 b7 31 d2 77 -7c f4 76 b5 cf c5 59 6d f3 a5 23 ba 69 79 c7 a4 -51 79 da 5f d6 0f 81 0b f4 14 c5 4e 18 2f 26 01 -72 0f fe 8a 50 d7 d9 d1 1e 56 43 18 e9 02 6f 07 -c5 aa a1 3e f8 91 28 3a 96 63 c1 e3 d2 7b 93 81 -7d 01 a5 6f ce 33 d5 16 9b fe a6 2a 8e e6 c3 70 -a3 aa 8c 71 94 d9 d3 53 d0 98 16 61 fe 85 81 62 -50 e0 32 4e ae 1b 84 7f c7 32 91 91 60 d0 1e 11 -92 ac 16 be 0e b8 e9 95 e4 86 40 27 6a 2d b7 b8 -7f 84 b3 fa c0 4c e8 62 f0 22 38 62 3f 62 b9 2a -2e 32 7b 01 b8 c7 b9 e5 ec 87 05 5c 6c b7 b5 56 -51 ab 5a c9 89 83 3b 03 4f 8b e0 11 6f 28 b1 e8 -86 a2 ce d1 23 29 8e b0 04 07 5a 6b 5b 71 b1 - -# Encryption: -d3 67 ac a8 d4 f1 74 14 e9 bf 09 ad 81 1d 78 db -0e 85 0c 45 c8 f9 d7 02 44 75 d3 e5 6e 3c bf be -6e e8 ab bf d7 74 58 26 41 7c c8 ed 52 f5 4e 00 -a9 2f 81 7e f9 83 e9 8d 10 0a 1f 99 0d b1 e2 90 -a8 51 6d 60 9b b3 2e 50 2a 77 e1 1f 76 20 0b 00 -25 76 5e 9b d2 85 9b a9 4a 69 63 33 a5 eb e2 eb -25 ba 9d 19 00 7f 64 36 0c c0 75 ca d7 f0 99 50 -e4 b7 af cb ac 36 e6 ec b0 17 cf 4a 1f 25 a4 d2 -b9 51 bb 85 e8 1c b2 b4 eb 6f 45 cd d4 00 d2 ac -4e 21 69 89 6d 94 15 82 44 9c e3 0f 69 c1 7c b4 -49 32 1f 65 e4 4d f3 03 87 86 27 62 13 51 f5 2e -5a 07 52 e3 b5 eb 12 63 61 69 7f 53 cf 24 66 16 -5c 3f bd 66 2b 83 75 80 b7 6d 45 9f f0 44 97 e5 -fe 1b 3c d1 8c 4d 58 ff ed ab dd 04 a8 c1 08 d8 -59 b6 52 98 63 9c 3a f8 0c d9 4e 23 87 a8 69 44 -09 ef 9e 0b 78 b6 f4 67 39 0b e1 08 57 9c 9b 2c - -# PKCS#1 v1.5 Encryption Example 15.15 -# ---------------------------------- - -# Message: -9e 78 c8 2b fd 0f 23 d3 91 e7 60 01 64 01 9a ad -28 f5 9b 14 15 44 04 d9 e9 66 13 3c 10 3f c3 7c - -# Seed: -bb 42 24 7d b2 40 ba ca cb cb e8 c6 8c b0 f7 0e -46 0a 49 73 da e6 56 99 35 8f ef 82 70 d6 5c 3d -0c 45 5a 37 9c 56 3c 59 7b 28 f4 ff a0 70 e0 ec -1e bb 9e d4 27 fe 89 ab cd 47 93 c4 22 c3 38 87 -8c 8b 14 5b 46 c4 f7 13 78 a0 fd 7d 50 53 b8 67 -98 bc 02 d9 32 93 fe d8 47 f1 8f e0 61 59 07 4a -c1 89 d9 56 23 20 74 db 6d dc f9 94 1a 70 f2 8b -60 e4 83 39 5a 2d 21 01 54 b6 2a ba b8 75 0f 5a -eb f1 ac ef e2 05 6f 5a bd 2f 0e 0e c4 94 af a8 -2f c5 9b b3 57 f1 16 a9 4e c1 cd 06 03 b5 2f e5 -6d 31 a4 3b 87 aa 63 77 88 c7 24 cb 6f 88 37 3c -92 f6 07 11 bf 3f 35 94 e2 3d ee 2f ec ed fe 6f -5f c8 86 e9 6a ee 7c 74 68 22 e5 6c ba 7e bd aa -2a 92 10 ea 81 98 e4 c2 2d e9 29 89 45 - -# Encryption: -81 8d cb ba 98 c3 46 79 3c 79 d4 bb 78 5a a6 40 -19 1b 05 f8 83 5f f7 39 74 44 3b ce 35 7a 26 9d -44 64 6e 8c 79 10 2d ce 22 92 39 78 a3 94 1e bc -b9 90 4f c1 bb 1f b4 3f 11 27 5e 71 eb 7a 84 d2 -74 be 10 4b 00 af 92 25 e2 a4 f7 f5 a0 48 ab b6 -6c ba b6 52 5d 1b 11 5d a8 c0 bb 08 de ea ec 7f -80 eb 6c 39 50 4d c4 eb 38 15 4c e4 b6 91 b4 06 -93 19 b2 93 c2 5d c3 0b 8f b3 8b ca 15 3e 2f a6 -1b 33 76 dd c3 c5 3a 57 93 21 d9 10 a1 71 fc 42 -aa f1 70 50 ed 6d 31 1a 7d f5 b9 a5 cf 3a 98 fd -69 aa 85 ac 23 46 c1 6f a0 3b 1e 53 d1 03 d6 f5 -a0 4b 0d 9d 3f 18 83 53 1e 2f 63 41 fd 91 bd 63 -a5 aa 99 3b 6e db 99 92 e5 db 17 a7 be 55 5e af -a3 bb ab 32 08 6e 92 b8 b7 91 06 69 68 e0 0f 8a -17 71 61 44 0c e5 38 57 97 89 c2 91 2e bd 7a d0 -19 be 29 37 6c ad ee c2 99 21 07 c9 db 07 60 49 - -# PKCS#1 v1.5 Encryption Example 15.16 -# ---------------------------------- - -# Message: -6d 72 08 b2 ff b0 1a d2 36 0c 46 09 f3 ba d3 15 -79 c8 d4 00 5c c9 60 14 2e 2b 69 6b 26 e9 4f 2d -99 98 0b ad 38 41 05 b1 89 95 57 af 89 05 25 - -# Seed: -72 ae 49 97 18 28 ba 54 23 ab 96 3c db 18 f4 bd -fd bc 74 73 cf 70 fb 77 21 34 41 f1 d4 46 ae 48 -10 93 03 a2 60 c0 91 ab 51 99 d9 64 e6 21 63 c2 -46 57 24 71 73 cb 05 11 b9 cb b1 63 45 9c 95 6f -9c 0b 18 83 b6 91 b5 e4 ea e0 4f 0a f2 4e a3 28 -c6 de 88 2c eb c4 f8 9a 56 37 32 82 d6 0a f2 ba -96 7e 25 7a c4 01 a3 7f 94 41 c1 1f 2e 0e 42 1b -2d 15 1e b2 43 a9 7e ae 5a aa 86 cd 38 df 43 c2 -6a 1d 6e 3b 12 c1 3f a3 59 7b 85 bb aa 13 09 45 -2c 7e 9b 32 5d 8c 73 fa 79 9c 57 56 52 73 7b 92 -a2 47 d2 3c 4c 70 12 40 c5 3d cf e2 ea 69 7a f6 -1c 07 2f a7 6b db 05 2a 58 c9 19 e6 9e c5 7b 39 -a2 a6 c4 7d 77 0e de 67 10 fc 7b dd e6 01 - -# Encryption: -4b 56 dc d3 04 bd c7 f0 cc b7 0d 2c 58 6f 52 74 -60 1e e6 05 36 bb 21 80 61 67 13 50 d6 d3 ae 2e -28 4f 07 b5 ed 63 01 79 26 94 13 12 2b 98 37 60 -90 f7 a4 a4 f6 43 4a f7 3a c4 0c 7a f4 b6 d7 a3 -e3 14 70 2a b9 b8 5e 08 73 1d a0 d1 2e d3 f0 07 -0b 0d 20 95 05 3b 3f 0d 09 d6 c2 cd 8f 98 ba de -d9 11 48 c3 5b 7b 33 c5 43 65 3c cc 32 d8 36 f5 -f7 f2 ee 39 ca bd 0b d8 9d d9 a4 a9 4e 91 2b 4c -a9 7f 18 51 d0 17 45 1f 60 96 ac bf 20 a6 5e c5 -a2 9f 08 f8 13 5c 73 18 a2 21 6d 1b 7d 10 37 95 -c7 ec 8e e5 7a 79 28 0f 9a 84 4b d6 ab 71 28 82 -0e 1f b5 e8 25 54 fe c0 2a 78 aa 8d 3f d6 a1 3e -0f ad 0e ce e7 ab 61 1d e4 b0 a0 48 1f 42 b8 d0 -b5 5c b8 81 3d 1c a6 e2 61 5c f5 ae 8a e8 6d 0b -5d 46 95 50 75 49 f7 a3 73 66 a4 45 fb 55 b7 c4 -b6 b5 8e a6 99 db e5 dd c8 19 3e 2b f3 d5 b8 40 - -# PKCS#1 v1.5 Encryption Example 15.17 -# ---------------------------------- - -# Message: -7d eb 6d 40 41 48 23 2c 48 21 63 4d 3d f9 bc - -# Seed: -e6 f8 3c 8c 99 3e 60 15 af 43 04 09 68 4e 62 7f -3d 9b 84 ad 05 55 c6 a6 c0 91 13 a7 12 47 2a bb -36 f6 11 92 32 6c f8 40 82 aa bd 1e c9 5f 4d 1a -92 d9 10 7e 30 61 0c 8d 27 59 55 6d 5d 61 47 5c -a3 f3 cb d9 49 fa c2 20 3c 42 3d 56 c2 75 58 e6 -11 8f aa 0f 6f 68 4a da 13 c3 15 3f 6d 25 53 38 -bf f7 34 e9 5f 60 ad 29 19 ab f2 88 15 d3 cc 0b -1e fd 38 5d 0d 45 81 b0 ee 84 94 f2 bb e2 99 59 -91 ac 1e a8 15 40 cb 7e 88 56 68 e5 a5 2e ca 90 -57 ed 9a 1f b2 3f df 83 b5 75 51 35 8c 23 cd 43 -ce 0e 7a 33 c7 25 66 b8 8f e5 93 43 f1 87 24 46 -d3 2c 44 b3 99 0a a4 db 3e e5 93 42 4c 8e 09 46 -d2 61 e3 27 0e f4 07 6b b3 5d f3 c3 c6 da 4b be -42 3f 59 1b 5c 93 ba 56 c5 cf 01 d4 f0 a9 40 96 -71 09 d3 9b 93 9d f2 82 53 2e 54 83 10 8b - -# Encryption: -aa 6e 6e 4a f6 89 26 4d 61 bf a8 f5 08 6d 82 79 -dd c2 28 9c 55 41 af 45 35 19 c4 4b 95 ea e6 a1 -5e 7e 7b d1 5f d3 1a 4f ad 5f 7c 85 90 5e fc a2 -26 93 0d 67 da f5 58 b7 15 b2 1f 36 28 f6 1a 3b -04 2c 1a 38 f9 af 3a da 82 ec 44 88 c8 ad e5 f1 -da 81 e1 a8 ab 90 e1 b3 12 dc da 83 5f 9e 92 5f -2e 72 46 3f a8 33 a0 8b 93 25 3f df e8 cf 4e 5f -3c fa 91 10 77 19 a6 a9 46 9a cd 71 25 ae 67 b2 -bd 75 85 7c 59 be 0a be 98 40 74 e2 95 47 8a f2 -74 0e 25 89 4e 56 a6 25 0e f7 36 21 94 13 81 03 -74 3c a9 54 47 33 d2 50 55 71 be e0 0f 17 8a 2c -fa 38 e1 f8 f2 2f b2 39 30 d6 a7 5d d1 7c 68 9a -47 6d 87 15 31 85 95 10 8f cc e8 95 e3 44 9e ca -97 a7 dd ba e3 e6 d6 f0 e3 5e 66 6d 6f bd 78 78 -48 f8 68 13 37 b1 d4 c5 23 8b 1c 24 de 77 a7 e6 -75 e7 ae d8 dc 13 dd 9e b1 06 87 98 51 7c 0b 6e - -# PKCS#1 v1.5 Encryption Example 15.18 -# ---------------------------------- - -# Message: -03 1f c3 a3 ea a4 2b 0d 9f 6d 7d d5 99 3d 61 89 -cb b2 e0 e9 6f aa 33 d6 1f 31 7b 6b 3c 00 - -# Seed: -16 ab 64 85 ca c0 39 71 14 88 0e 6f 72 bc 1f 1e -f3 4b a2 7d 1c 43 3d 77 f3 37 2b 1f d5 b2 1b a5 -7a 50 5c d8 f3 5b 75 24 2c f1 b7 6d 38 1c 68 34 -24 01 ee ef c8 42 53 a2 de 1a 19 13 e4 38 77 3b -7b cb 31 cb ab 25 8f 72 6a c9 34 a8 71 26 96 9a -db 7f 76 8c 1b ab 87 54 a1 3a 3c cb ba 6f 3d d8 -d0 ec 6a 7c 6d 68 7d 04 95 b6 e2 2c 9a e7 67 af -c9 d9 4f 2e 45 a1 06 13 3c 42 c7 9b 52 c2 6a d4 -b6 7b d8 ec e5 5e 84 32 5c a6 f4 9c 8e 95 31 f5 -f6 b9 ca c3 5c 93 3e eb e3 b9 a1 1b 9b b1 c9 ea -8c e6 d2 28 5d a9 08 e5 91 97 82 b5 b3 08 fe 47 -8d 98 e4 9a ea 54 3b f8 ca 1b 22 ed f4 3f db f6 -af 31 cc 8c d4 fb 7d e2 d8 19 af a5 48 3e ac dd -56 d7 78 7b c8 bb 16 22 38 40 49 bc 30 9a 66 - -# Encryption: -61 c7 54 76 30 43 b5 84 e4 a8 54 6b 79 f0 a3 e2 -e0 f3 b3 e2 db 6c 94 ad 81 7e 92 81 f4 85 c0 82 -08 fe d4 f4 d7 d0 a7 8c 6c 31 1a 07 c7 5b 9b be -85 04 f4 b7 a6 92 99 02 16 de 12 58 5c 00 9a e5 -8c 26 f0 85 07 1f 39 5e 5a f8 92 5f 39 33 f6 d9 -f4 12 d4 25 54 64 54 e8 00 b7 e3 aa c7 8b 7a 08 -b9 2e 79 8b b8 34 eb ea dc 4b 4a 63 56 af 1c a0 -9b f5 86 74 5f 61 6d 51 74 8c c7 a3 7b 48 cb 10 -97 7e 30 3b be 10 bf 27 c6 9b df f0 ba 5c ab 8f -62 d0 58 7a 09 d6 e0 22 82 32 33 c8 c7 aa 41 87 -22 23 ed 15 a7 4a cc b0 f1 f8 22 f2 4d 75 94 ed -99 25 a1 c6 c0 c0 f9 ad 0e 07 1e b6 b5 eb e1 ba -b6 ba 3b 6d 99 a3 16 52 04 7f 46 92 60 be e8 71 -0e 37 0f 04 ed 70 75 93 93 7a 08 dd 82 26 49 92 -31 1f 4a f9 88 4c f8 ad 34 af b9 f6 75 99 3c 8a -bf 41 51 98 39 f7 6f a1 e9 31 bd ae 1d 08 a6 34 - -# PKCS#1 v1.5 Encryption Example 15.19 -# ---------------------------------- - -# Message: -c9 c9 3a fe a9 97 b1 ee 36 fa 72 72 03 54 c7 04 -64 9b c6 ef 44 f5 18 7c 6c 28 54 2b 9a e9 55 a7 -19 3f ff ec 86 7b b6 2e 21 9e 68 - -# Seed: -52 d4 c3 bf 0c 77 2c 02 d3 bb 71 1d 7f 14 6d 8c -49 76 f8 30 81 be 49 53 d4 af eb 07 8e 54 12 a3 -2c 3d c7 37 b5 9b c4 54 c3 de 93 a1 ae d0 7c 1b -a6 4d 1d e4 36 80 14 d0 4f 64 40 55 6a 4a 16 97 -9d 08 03 cc 29 22 da 97 ed 67 61 90 12 f8 f7 d3 -b1 a4 55 84 b0 94 6a f6 db d4 a0 85 7d 4c 2d b9 -9a 17 bb d2 7a cd 9a 62 e6 7f 88 79 db ef 27 f1 -04 6a 86 7e 69 95 16 2b 2a 1a 1c cc dc ea f4 5b -e1 33 7e 5f a8 f8 5e da ad f7 50 8d 58 f3 26 aa -7c f3 01 f4 41 ba 55 8b 60 e0 fa c6 e0 d1 99 20 -61 a0 a4 69 be 02 16 26 89 0e e8 7e 68 13 9b d5 -19 ae 77 3e 3e c4 81 b7 f2 b3 77 33 1f 52 f2 e3 -86 88 4f 76 57 23 e2 6c d4 a8 d9 68 61 4c 9c 33 -dc db - -# Encryption: -d0 68 67 02 2a 0f af 57 3d 62 cc 24 a6 e0 6a 44 -cd 3d 83 ea c5 d0 80 9e bf 91 30 45 68 cb 1b 27 -56 1b b2 92 e8 77 6e 21 6d 1d 02 3e 75 3c 12 4b -51 86 7b 94 dc 60 89 4d 62 c7 da e5 fa 1a 9f af -03 76 e1 75 8c b6 ad c7 14 17 e8 31 02 52 8f 23 -f4 c5 e5 b5 03 62 a3 9e 2a a9 76 8b 10 62 08 6f -a8 c5 3f f1 c3 9a 0e e0 3d 38 3d 24 bf 49 07 22 -b7 86 da ec 90 8c d7 15 1e 18 5d dd 17 88 26 78 -02 7e 36 8b 05 12 cf 98 41 3f 3e 59 6f a3 db 4e -c1 96 ae 5f f5 24 a8 26 6d 76 0e 00 51 43 3d 18 -98 ff c2 30 e9 6a 2f 0b fd f2 b2 44 29 ad fa 91 -8a ba 1a 45 0f 76 78 34 72 30 12 93 84 8b d8 2d -5a 33 84 31 d6 cb 1c 10 6d c7 41 d2 34 bf 5a 80 -db d3 25 da 64 a3 94 a0 06 5f 22 02 8d 0f dc 5a -df 0d 0d e2 9f 22 fb 8c 2a 41 33 1f e1 fc b6 15 -89 e0 ec 75 00 ed 84 42 d6 18 46 df 6c ca 46 cc - -# PKCS#1 v1.5 Encryption Example 15.20 -# ---------------------------------- - -# Message: -69 b7 64 48 55 f9 1d 1c 61 c8 49 8e 4b a1 ba 4d -84 5b a8 82 b1 73 - -# Seed: -b2 2f c7 de 85 c5 f7 5a 2f 32 af 1b fb cd 57 89 -71 56 87 de 06 e6 6d 06 4a e3 eb 8d fb 07 a2 57 -5b e0 e9 e6 f2 9f 50 d7 39 6d 07 8b 36 ef 80 2f -75 1a 77 cc 92 d7 61 4c 91 dd 27 99 31 fc e0 07 -eb f9 15 a0 f1 4e 31 2c e9 1f e5 aa 6f b3 74 51 -61 4f e3 7c 73 fc 6f 6d 6f 8e 52 78 9b 5d 88 e8 -6b eb 16 33 f5 dd d5 c0 70 f1 4f d3 cf ee 97 dd -4a 64 3d 35 d4 5d d9 bf 34 df 8c 31 0b 48 59 2e -94 68 31 b3 4e f3 c0 b9 16 f1 7c b0 ac b2 cf c1 -c2 5d 03 09 ac c1 12 4f 26 5c 1a 83 ed 88 5c 87 -fa 82 6f da 57 10 b5 4e 16 ec 0f 44 8c db 7e e0 -58 0f f7 38 65 30 ea 46 1e 04 2a 0b 77 42 c4 61 -97 6b b5 a3 80 ad bc b0 01 06 f2 67 1b 6c ce 4f -72 67 75 2f 80 66 80 42 78 35 0b 01 75 3e 31 b3 -8e cc fb e9 05 69 f6 - -# Encryption: -ab 42 67 97 2c 77 96 83 93 88 d4 ad 87 de d7 4b -b6 53 e9 a7 05 0e 28 2e 82 19 28 75 68 9f 70 ee -1d a1 8a 1f 73 22 09 2c d2 9f d0 01 19 92 2a 6d -e1 26 01 98 0a a9 fa 6e 61 9e 27 75 e8 7a da e3 -16 95 c1 30 4e 77 f5 2c ce 01 66 65 f2 26 7c 20 -76 26 43 c6 00 3c 01 6d 84 80 44 3c 70 1d f6 c1 -d8 d6 55 54 96 00 ee 45 5b 70 e4 73 31 9b 0d 44 -45 e0 b7 55 2a 1f 80 8e 88 f3 26 48 42 73 5a e6 -1d f0 32 5e d0 36 90 d6 d5 d6 93 ad 1f ed 22 66 -84 50 37 9d b5 32 3d c0 1c 89 af fa e3 69 b9 c3 -01 c3 19 c3 7d df 51 ed f4 6e 09 b2 1e 5d e9 14 -83 e8 e3 cb 21 ee b7 05 7b c2 eb dc 3a aa 3d 65 -00 c9 2f 99 b1 7b 31 80 bb a0 47 d7 60 73 77 63 -36 b1 5d 05 4d 79 a4 40 cc 5e 98 5e a5 43 fc aa -25 db 1d d8 92 b7 1b b7 4a 5c f6 82 63 d8 fd 58 -f1 a4 8e 6c 2f cb 8c 0b 71 a2 51 cf c1 a2 01 57 - -# ============================================= diff --git a/src/libtomcrypt/notes/rsa-testvectors/pkcs1v15sign-vectors.c b/src/libtomcrypt/notes/rsa-testvectors/pkcs1v15sign-vectors.c deleted file mode 100644 index 0483c87ac0..0000000000 --- a/src/libtomcrypt/notes/rsa-testvectors/pkcs1v15sign-vectors.c +++ /dev/null @@ -1,4261 +0,0 @@ -/* Generated from file: pkcs1v15sign-vectors.txt - * with md5 hash: d799f020ab2fc966cae369de7ff62641 - */ - - -typedef struct rsaKey { - int n_l; - unsigned char n[256]; - int e_l; - unsigned char e[256]; - int d_l; - unsigned char d[256]; - int p_l; - unsigned char p[256]; - int q_l; - unsigned char q[256]; - int dP_l; - unsigned char dP[256]; - int dQ_l; - unsigned char dQ[256]; - int qInv_l; - unsigned char qInv[256]; -} rsaKey_t; - -typedef struct rsaData { - const char* name; - int o1_l; - unsigned char o1[256]; - int o2_l; - unsigned char o2[256]; -} rsaData_t; - -typedef struct testcase { - const char* name; - rsaKey_t rsa; -#ifdef LTC_TEST_EXT - rsaData_t data[20]; -#else - rsaData_t data[1]; -#endif /* LTC_TEST_EXT */ -} testcase_t; - -testcase_t testcases_emsa[] = - { -{ - "Example 1: A 1024-bit RSA key pair", -{ - /* Modulus */ - 128, - { 0xa5, 0x6e, 0x4a, 0x0e, 0x70, 0x10, 0x17, 0x58, 0x9a, 0x51, 0x87, 0xdc, 0x7e, 0xa8, 0x41, 0xd1, 0x56, 0xf2, 0xec, 0x0e, 0x36, 0xad, 0x52, 0xa4, 0x4d, 0xfe, 0xb1, 0xe6, 0x1f, 0x7a, 0xd9, 0x91, 0xd8, 0xc5, 0x10, 0x56, 0xff, 0xed, 0xb1, 0x62, 0xb4, 0xc0, 0xf2, 0x83, 0xa1, 0x2a, 0x88, 0xa3, 0x94, 0xdf, 0xf5, 0x26, 0xab, 0x72, 0x91, 0xcb, 0xb3, 0x07, 0xce, 0xab, 0xfc, 0xe0, 0xb1, 0xdf, 0xd5, 0xcd, 0x95, 0x08, 0x09, 0x6d, 0x5b, 0x2b, 0x8b, 0x6d, 0xf5, 0xd6, 0x71, 0xef, 0x63, 0x77, 0xc0, 0x92, 0x1c, 0xb2, 0x3c, 0x27, 0x0a, 0x70, 0xe2, 0x59, 0x8e, 0x6f, 0xf8, 0x9d, 0x19, 0xf1, 0x05, 0xac, 0xc2, 0xd3, 0xf0, 0xcb, 0x35, 0xf2, 0x92, 0x80, 0xe1, 0x38, 0x6b, 0x6f, 0x64, 0xc4, 0xef, 0x22, 0xe1, 0xe1, 0xf2, 0x0d, 0x0c, 0xe8, 0xcf, 0xfb, 0x22, 0x49, 0xbd, 0x9a, 0x21, 0x37 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x33, 0xa5, 0x04, 0x2a, 0x90, 0xb2, 0x7d, 0x4f, 0x54, 0x51, 0xca, 0x9b, 0xbb, 0xd0, 0xb4, 0x47, 0x71, 0xa1, 0x01, 0xaf, 0x88, 0x43, 0x40, 0xae, 0xf9, 0x88, 0x5f, 0x2a, 0x4b, 0xbe, 0x92, 0xe8, 0x94, 0xa7, 0x24, 0xac, 0x3c, 0x56, 0x8c, 0x8f, 0x97, 0x85, 0x3a, 0xd0, 0x7c, 0x02, 0x66, 0xc8, 0xc6, 0xa3, 0xca, 0x09, 0x29, 0xf1, 0xe8, 0xf1, 0x12, 0x31, 0x88, 0x44, 0x29, 0xfc, 0x4d, 0x9a, 0xe5, 0x5f, 0xee, 0x89, 0x6a, 0x10, 0xce, 0x70, 0x7c, 0x3e, 0xd7, 0xe7, 0x34, 0xe4, 0x47, 0x27, 0xa3, 0x95, 0x74, 0x50, 0x1a, 0x53, 0x26, 0x83, 0x10, 0x9c, 0x2a, 0xba, 0xca, 0xba, 0x28, 0x3c, 0x31, 0xb4, 0xbd, 0x2f, 0x53, 0xc3, 0xee, 0x37, 0xe3, 0x52, 0xce, 0xe3, 0x4f, 0x9e, 0x50, 0x3b, 0xd8, 0x0c, 0x06, 0x22, 0xad, 0x79, 0xc6, 0xdc, 0xee, 0x88, 0x35, 0x47, 0xc6, 0xa3, 0xb3, 0x25 } -, - /* Prime 1 */ - 64, - { 0xe7, 0xe8, 0x94, 0x27, 0x20, 0xa8, 0x77, 0x51, 0x72, 0x73, 0xa3, 0x56, 0x05, 0x3e, 0xa2, 0xa1, 0xbc, 0x0c, 0x94, 0xaa, 0x72, 0xd5, 0x5c, 0x6e, 0x86, 0x29, 0x6b, 0x2d, 0xfc, 0x96, 0x79, 0x48, 0xc0, 0xa7, 0x2c, 0xbc, 0xcc, 0xa7, 0xea, 0xcb, 0x35, 0x70, 0x6e, 0x09, 0xa1, 0xdf, 0x55, 0xa1, 0x53, 0x5b, 0xd9, 0xb3, 0xcc, 0x34, 0x16, 0x0b, 0x3b, 0x6d, 0xcd, 0x3e, 0xda, 0x8e, 0x64, 0x43 } -, - /* Prime 2 */ - 64, - { 0xb6, 0x9d, 0xca, 0x1c, 0xf7, 0xd4, 0xd7, 0xec, 0x81, 0xe7, 0x5b, 0x90, 0xfc, 0xca, 0x87, 0x4a, 0xbc, 0xde, 0x12, 0x3f, 0xd2, 0x70, 0x01, 0x80, 0xaa, 0x90, 0x47, 0x9b, 0x6e, 0x48, 0xde, 0x8d, 0x67, 0xed, 0x24, 0xf9, 0xf1, 0x9d, 0x85, 0xba, 0x27, 0x58, 0x74, 0xf5, 0x42, 0xcd, 0x20, 0xdc, 0x72, 0x3e, 0x69, 0x63, 0x36, 0x4a, 0x1f, 0x94, 0x25, 0x45, 0x2b, 0x26, 0x9a, 0x67, 0x99, 0xfd } -, - /* Prime exponent 1 */ - 64, - { 0x28, 0xfa, 0x13, 0x93, 0x86, 0x55, 0xbe, 0x1f, 0x8a, 0x15, 0x9c, 0xba, 0xca, 0x5a, 0x72, 0xea, 0x19, 0x0c, 0x30, 0x08, 0x9e, 0x19, 0xcd, 0x27, 0x4a, 0x55, 0x6f, 0x36, 0xc4, 0xf6, 0xe1, 0x9f, 0x55, 0x4b, 0x34, 0xc0, 0x77, 0x79, 0x04, 0x27, 0xbb, 0xdd, 0x8d, 0xd3, 0xed, 0xe2, 0x44, 0x83, 0x28, 0xf3, 0x85, 0xd8, 0x1b, 0x30, 0xe8, 0xe4, 0x3b, 0x2f, 0xff, 0xa0, 0x27, 0x86, 0x19, 0x79 } -, - /* Prime exponent 2 */ - 64, - { 0x1a, 0x8b, 0x38, 0xf3, 0x98, 0xfa, 0x71, 0x20, 0x49, 0x89, 0x8d, 0x7f, 0xb7, 0x9e, 0xe0, 0xa7, 0x76, 0x68, 0x79, 0x12, 0x99, 0xcd, 0xfa, 0x09, 0xef, 0xc0, 0xe5, 0x07, 0xac, 0xb2, 0x1e, 0xd7, 0x43, 0x01, 0xef, 0x5b, 0xfd, 0x48, 0xbe, 0x45, 0x5e, 0xae, 0xb6, 0xe1, 0x67, 0x82, 0x55, 0x82, 0x75, 0x80, 0xa8, 0xe4, 0xe8, 0xe1, 0x41, 0x51, 0xd1, 0x51, 0x0a, 0x82, 0xa3, 0xf2, 0xe7, 0x29 } -, - /* Coefficient */ - 64, - { 0x27, 0x15, 0x6a, 0xba, 0x41, 0x26, 0xd2, 0x4a, 0x81, 0xf3, 0xa5, 0x28, 0xcb, 0xfb, 0x27, 0xf5, 0x68, 0x86, 0xf8, 0x40, 0xa9, 0xf6, 0xe8, 0x6e, 0x17, 0xa4, 0x4b, 0x94, 0xfe, 0x93, 0x19, 0x58, 0x4b, 0x8e, 0x22, 0xfd, 0xde, 0x1e, 0x5a, 0x2e, 0x3b, 0xd8, 0xaa, 0x5b, 0xa8, 0xd8, 0x58, 0x41, 0x94, 0xeb, 0x21, 0x90, 0xac, 0xf8, 0x32, 0xb8, 0x47, 0xf1, 0x3a, 0x3d, 0x24, 0xa7, 0x9f, 0x4d } - -} -, -{{ - "PKCS#1 v1.5 Signature Example 1.1", - /* Message to be signed */ - 217, - { 0xcd, 0xc8, 0x7d, 0xa2, 0x23, 0xd7, 0x86, 0xdf, 0x3b, 0x45, 0xe0, 0xbb, 0xbc, 0x72, 0x13, 0x26, 0xd1, 0xee, 0x2a, 0xf8, 0x06, 0xcc, 0x31, 0x54, 0x75, 0xcc, 0x6f, 0x0d, 0x9c, 0x66, 0xe1, 0xb6, 0x23, 0x71, 0xd4, 0x5c, 0xe2, 0x39, 0x2e, 0x1a, 0xc9, 0x28, 0x44, 0xc3, 0x10, 0x10, 0x2f, 0x15, 0x6a, 0x0d, 0x8d, 0x52, 0xc1, 0xf4, 0xc4, 0x0b, 0xa3, 0xaa, 0x65, 0x09, 0x57, 0x86, 0xcb, 0x76, 0x97, 0x57, 0xa6, 0x56, 0x3b, 0xa9, 0x58, 0xfe, 0xd0, 0xbc, 0xc9, 0x84, 0xe8, 0xb5, 0x17, 0xa3, 0xd5, 0xf5, 0x15, 0xb2, 0x3b, 0x8a, 0x41, 0xe7, 0x4a, 0xa8, 0x67, 0x69, 0x3f, 0x90, 0xdf, 0xb0, 0x61, 0xa6, 0xe8, 0x6d, 0xfa, 0xae, 0xe6, 0x44, 0x72, 0xc0, 0x0e, 0x5f, 0x20, 0x94, 0x57, 0x29, 0xcb, 0xeb, 0xe7, 0x7f, 0x06, 0xce, 0x78, 0xe0, 0x8f, 0x40, 0x98, 0xfb, 0xa4, 0x1f, 0x9d, 0x61, 0x93, 0xc0, 0x31, 0x7e, 0x8b, 0x60, 0xd4, 0xb6, 0x08, 0x4a, 0xcb, 0x42, 0xd2, 0x9e, 0x38, 0x08, 0xa3, 0xbc, 0x37, 0x2d, 0x85, 0xe3, 0x31, 0x17, 0x0f, 0xcb, 0xf7, 0xcc, 0x72, 0xd0, 0xb7, 0x1c, 0x29, 0x66, 0x48, 0xb3, 0xa4, 0xd1, 0x0f, 0x41, 0x62, 0x95, 0xd0, 0x80, 0x7a, 0xa6, 0x25, 0xca, 0xb2, 0x74, 0x4f, 0xd9, 0xea, 0x8f, 0xd2, 0x23, 0xc4, 0x25, 0x37, 0x02, 0x98, 0x28, 0xbd, 0x16, 0xbe, 0x02, 0x54, 0x6f, 0x13, 0x0f, 0xd2, 0xe3, 0x3b, 0x93, 0x6d, 0x26, 0x76, 0xe0, 0x8a, 0xed, 0x1b, 0x73, 0x31, 0x8b, 0x75, 0x0a, 0x01, 0x67, 0xd0 } -, - /* Signature */ - 128, - { 0x6b, 0xc3, 0xa0, 0x66, 0x56, 0x84, 0x29, 0x30, 0xa2, 0x47, 0xe3, 0x0d, 0x58, 0x64, 0xb4, 0xd8, 0x19, 0x23, 0x6b, 0xa7, 0xc6, 0x89, 0x65, 0x86, 0x2a, 0xd7, 0xdb, 0xc4, 0xe2, 0x4a, 0xf2, 0x8e, 0x86, 0xbb, 0x53, 0x1f, 0x03, 0x35, 0x8b, 0xe5, 0xfb, 0x74, 0x77, 0x7c, 0x60, 0x86, 0xf8, 0x50, 0xca, 0xef, 0x89, 0x3f, 0x0d, 0x6f, 0xcc, 0x2d, 0x0c, 0x91, 0xec, 0x01, 0x36, 0x93, 0xb4, 0xea, 0x00, 0xb8, 0x0c, 0xd4, 0x9a, 0xac, 0x4e, 0xcb, 0x5f, 0x89, 0x11, 0xaf, 0xe5, 0x39, 0xad, 0xa4, 0xa8, 0xf3, 0x82, 0x3d, 0x1d, 0x13, 0xe4, 0x72, 0xd1, 0x49, 0x05, 0x47, 0xc6, 0x59, 0xc7, 0x61, 0x7f, 0x3d, 0x24, 0x08, 0x7d, 0xdb, 0x6f, 0x2b, 0x72, 0x09, 0x61, 0x67, 0xfc, 0x09, 0x7c, 0xab, 0x18, 0xe9, 0xa4, 0x58, 0xfc, 0xb6, 0x34, 0xcd, 0xce, 0x8e, 0xe3, 0x58, 0x94, 0xc4, 0x84, 0xd7 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Signature Example 1.2", - /* Message to be signed */ - 51, - { 0x85, 0x13, 0x84, 0xcd, 0xfe, 0x81, 0x9c, 0x22, 0xed, 0x6c, 0x4c, 0xcb, 0x30, 0xda, 0xeb, 0x5c, 0xf0, 0x59, 0xbc, 0x8e, 0x11, 0x66, 0xb7, 0xe3, 0x53, 0x0c, 0x4c, 0x23, 0x3e, 0x2b, 0x5f, 0x8f, 0x71, 0xa1, 0xcc, 0xa5, 0x82, 0xd4, 0x3e, 0xcc, 0x72, 0xb1, 0xbc, 0xa1, 0x6d, 0xfc, 0x70, 0x13, 0x22, 0x6b, 0x9e } -, - /* Signature */ - 128, - { 0x84, 0xfd, 0x2c, 0xe7, 0x34, 0xec, 0x1d, 0xa8, 0x28, 0xd0, 0xf1, 0x5b, 0xf4, 0x9a, 0x87, 0x07, 0xc1, 0x5d, 0x05, 0x94, 0x81, 0x36, 0xde, 0x53, 0x7a, 0x3d, 0xb4, 0x21, 0x38, 0x41, 0x67, 0xc8, 0x6f, 0xae, 0x02, 0x25, 0x87, 0xee, 0x9e, 0x13, 0x7d, 0xae, 0xe7, 0x54, 0x73, 0x82, 0x62, 0x93, 0x2d, 0x27, 0x1c, 0x74, 0x4c, 0x6d, 0x3a, 0x18, 0x9a, 0xd4, 0x31, 0x1b, 0xdb, 0x02, 0x04, 0x92, 0xe3, 0x22, 0xfb, 0xdd, 0xc4, 0x04, 0x06, 0xea, 0x86, 0x0d, 0x4e, 0x8e, 0xa2, 0xa4, 0x08, 0x4a, 0xa9, 0x8b, 0x96, 0x22, 0xa4, 0x46, 0x75, 0x6f, 0xdb, 0x74, 0x0d, 0xdb, 0x3d, 0x91, 0xdb, 0x76, 0x70, 0xe2, 0x11, 0x66, 0x1b, 0xbf, 0x87, 0x09, 0xb1, 0x1c, 0x08, 0xa7, 0x07, 0x71, 0x42, 0x2d, 0x1a, 0x12, 0xde, 0xf2, 0x9f, 0x06, 0x88, 0xa1, 0x92, 0xae, 0xbd, 0x89, 0xe0, 0xf8, 0x96, 0xf8 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.3", - /* Message to be signed */ - 228, - { 0xa4, 0xb1, 0x59, 0x94, 0x17, 0x61, 0xc4, 0x0c, 0x6a, 0x82, 0xf2, 0xb8, 0x0d, 0x1b, 0x94, 0xf5, 0xaa, 0x26, 0x54, 0xfd, 0x17, 0xe1, 0x2d, 0x58, 0x88, 0x64, 0x67, 0x9b, 0x54, 0xcd, 0x04, 0xef, 0x8b, 0xd0, 0x30, 0x12, 0xbe, 0x8d, 0xc3, 0x7f, 0x4b, 0x83, 0xaf, 0x79, 0x63, 0xfa, 0xff, 0x0d, 0xfa, 0x22, 0x54, 0x77, 0x43, 0x7c, 0x48, 0x01, 0x7f, 0xf2, 0xbe, 0x81, 0x91, 0xcf, 0x39, 0x55, 0xfc, 0x07, 0x35, 0x6e, 0xab, 0x3f, 0x32, 0x2f, 0x7f, 0x62, 0x0e, 0x21, 0xd2, 0x54, 0xe5, 0xdb, 0x43, 0x24, 0x27, 0x9f, 0xe0, 0x67, 0xe0, 0x91, 0x0e, 0x2e, 0x81, 0xca, 0x2c, 0xab, 0x31, 0xc7, 0x45, 0xe6, 0x7a, 0x54, 0x05, 0x8e, 0xb5, 0x0d, 0x99, 0x3c, 0xdb, 0x9e, 0xd0, 0xb4, 0xd0, 0x29, 0xc0, 0x6d, 0x21, 0xa9, 0x4c, 0xa6, 0x61, 0xc3, 0xce, 0x27, 0xfa, 0xe1, 0xd6, 0xcb, 0x20, 0xf4, 0x56, 0x4d, 0x66, 0xce, 0x47, 0x67, 0x58, 0x3d, 0x0e, 0x5f, 0x06, 0x02, 0x15, 0xb5, 0x90, 0x17, 0xbe, 0x85, 0xea, 0x84, 0x89, 0x39, 0x12, 0x7b, 0xd8, 0xc9, 0xc4, 0xd4, 0x7b, 0x51, 0x05, 0x6c, 0x03, 0x1c, 0xf3, 0x36, 0xf1, 0x7c, 0x99, 0x80, 0xf3, 0xb8, 0xf5, 0xb9, 0xb6, 0x87, 0x8e, 0x8b, 0x79, 0x7a, 0xa4, 0x3b, 0x88, 0x26, 0x84, 0x33, 0x3e, 0x17, 0x89, 0x3f, 0xe9, 0xca, 0xa6, 0xaa, 0x29, 0x9f, 0x7e, 0xd1, 0xa1, 0x8e, 0xe2, 0xc5, 0x48, 0x64, 0xb7, 0xb2, 0xb9, 0x9b, 0x72, 0x61, 0x8f, 0xb0, 0x25, 0x74, 0xd1, 0x39, 0xef, 0x50, 0xf0, 0x19, 0xc9, 0xee, 0xf4, 0x16, 0x97, 0x13, 0x38, 0xe7, 0xd4, 0x70 } -, - /* Signature */ - 128, - { 0x0b, 0x1f, 0x2e, 0x51, 0x80, 0xe5, 0xc7, 0xb4, 0xb5, 0xe6, 0x72, 0x92, 0x9f, 0x66, 0x4c, 0x48, 0x96, 0xe5, 0x0c, 0x35, 0x13, 0x4b, 0x6d, 0xe4, 0xd5, 0xa9, 0x34, 0x25, 0x2a, 0x3a, 0x24, 0x5f, 0xf4, 0x83, 0x40, 0x92, 0x0e, 0x10, 0x34, 0xb7, 0xd5, 0xa5, 0xb5, 0x24, 0xeb, 0x0e, 0x1c, 0xf1, 0x2b, 0xef, 0xef, 0x49, 0xb2, 0x7b, 0x73, 0x2d, 0x2c, 0x19, 0xe1, 0xc4, 0x32, 0x17, 0xd6, 0xe1, 0x41, 0x73, 0x81, 0x11, 0x1a, 0x1d, 0x36, 0xde, 0x63, 0x75, 0xcf, 0x45, 0x5b, 0x3c, 0x98, 0x12, 0x63, 0x9d, 0xbc, 0x27, 0x60, 0x0c, 0x75, 0x19, 0x94, 0xfb, 0x61, 0x79, 0x9e, 0xcf, 0x7d, 0xa6, 0xbc, 0xf5, 0x15, 0x40, 0xaf, 0xd0, 0x17, 0x4d, 0xb4, 0x03, 0x31, 0x88, 0x55, 0x66, 0x75, 0xb1, 0xd7, 0x63, 0x36, 0x0a, 0xf4, 0x6f, 0xee, 0xca, 0x5b, 0x60, 0xf8, 0x82, 0x82, 0x9e, 0xe7, 0xb2 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.4", - /* Message to be signed */ - 9, - { 0xbc, 0x65, 0x67, 0x47, 0xfa, 0x9e, 0xaf, 0xb3, 0xf0 } -, - /* Signature */ - 128, - { 0x45, 0x60, 0x7a, 0xd6, 0x11, 0xcf, 0x57, 0x47, 0xa4, 0x1a, 0xc9, 0x4d, 0x0f, 0xfe, 0xc8, 0x78, 0xbd, 0xaf, 0x63, 0xf6, 0xb5, 0x7a, 0x4b, 0x08, 0x8b, 0xf3, 0x6e, 0x34, 0xe1, 0x09, 0xf8, 0x40, 0xf2, 0x4b, 0x74, 0x2a, 0xda, 0x16, 0x10, 0x2d, 0xab, 0xf9, 0x51, 0xcb, 0xc4, 0x4f, 0x89, 0x82, 0xe9, 0x4e, 0xd4, 0xcd, 0x09, 0x44, 0x8d, 0x20, 0xec, 0x0e, 0xfa, 0x73, 0x54, 0x5f, 0x80, 0xb6, 0x54, 0x06, 0xbe, 0xd6, 0x19, 0x4a, 0x61, 0xc3, 0x40, 0xb4, 0xad, 0x15, 0x68, 0xcb, 0xb7, 0x58, 0x51, 0x04, 0x9f, 0x11, 0xaf, 0x17, 0x34, 0x96, 0x40, 0x76, 0xe0, 0x20, 0x29, 0xae, 0xe2, 0x00, 0xe4, 0x0e, 0x80, 0xbe, 0x0f, 0x43, 0x61, 0xf6, 0x98, 0x41, 0xc4, 0xf9, 0x2a, 0x44, 0x50, 0xa2, 0x28, 0x6d, 0x43, 0x28, 0x9b, 0x40, 0x55, 0x54, 0xc5, 0x4d, 0x25, 0xc6, 0xec, 0xb5, 0x84, 0xf4 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.5", - /* Message to be signed */ - 149, - { 0xb4, 0x55, 0x81, 0x54, 0x7e, 0x54, 0x27, 0x77, 0x0c, 0x76, 0x8e, 0x8b, 0x82, 0xb7, 0x55, 0x64, 0xe0, 0xea, 0x4e, 0x9c, 0x32, 0x59, 0x4d, 0x6b, 0xff, 0x70, 0x65, 0x44, 0xde, 0x0a, 0x87, 0x76, 0xc7, 0xa8, 0x0b, 0x45, 0x76, 0x55, 0x0e, 0xee, 0x1b, 0x2a, 0xca, 0xbc, 0x7e, 0x8b, 0x7d, 0x3e, 0xf7, 0xbb, 0x5b, 0x03, 0xe4, 0x62, 0xc1, 0x10, 0x47, 0xea, 0xdd, 0x00, 0x62, 0x9a, 0xe5, 0x75, 0x48, 0x0a, 0xc1, 0x47, 0x0f, 0xe0, 0x46, 0xf1, 0x3a, 0x2b, 0xf5, 0xaf, 0x17, 0x92, 0x1d, 0xc4, 0xb0, 0xaa, 0x8b, 0x02, 0xbe, 0xe6, 0x33, 0x49, 0x11, 0x65, 0x1d, 0x7f, 0x85, 0x25, 0xd1, 0x0f, 0x32, 0xb5, 0x1d, 0x33, 0xbe, 0x52, 0x0d, 0x3d, 0xdf, 0x5a, 0x70, 0x99, 0x55, 0xa3, 0xdf, 0xe7, 0x82, 0x83, 0xb9, 0xe0, 0xab, 0x54, 0x04, 0x6d, 0x15, 0x0c, 0x17, 0x7f, 0x03, 0x7f, 0xdc, 0xcc, 0x5b, 0xe4, 0xea, 0x5f, 0x68, 0xb5, 0xe5, 0xa3, 0x8c, 0x9d, 0x7e, 0xdc, 0xcc, 0xc4, 0x97, 0x5f, 0x45, 0x5a, 0x69, 0x09, 0xb4 } -, - /* Signature */ - 128, - { 0x54, 0xbe, 0x9d, 0x90, 0x87, 0x75, 0x15, 0xf4, 0x50, 0x27, 0x9c, 0x15, 0xb5, 0xf6, 0x1a, 0xd6, 0xf1, 0x5e, 0xcc, 0x95, 0xf1, 0x8c, 0xbe, 0xd8, 0x2b, 0x65, 0xb1, 0x66, 0x7a, 0x57, 0x58, 0x09, 0x58, 0x79, 0x94, 0x66, 0x80, 0x44, 0xf3, 0xbc, 0x2a, 0xe7, 0xf8, 0x84, 0x50, 0x1f, 0x64, 0xf0, 0xb4, 0x3f, 0x58, 0x8c, 0xfa, 0x20, 0x5a, 0x6a, 0xb7, 0x04, 0x32, 0x8c, 0x2d, 0x4a, 0xb9, 0x2a, 0x7a, 0xe1, 0x34, 0x40, 0x61, 0x4d, 0x3e, 0x08, 0x5f, 0x40, 0x1d, 0xa9, 0xad, 0x28, 0xe2, 0x10, 0x5e, 0x4a, 0x0e, 0xdb, 0x68, 0x1a, 0x64, 0x24, 0xdf, 0x04, 0x73, 0x88, 0xce, 0x05, 0x1e, 0xe9, 0xdf, 0x7b, 0xc2, 0x16, 0x3f, 0xe3, 0x47, 0x52, 0x0a, 0xd5, 0x1c, 0xcd, 0x51, 0x80, 0x64, 0x38, 0x3e, 0x74, 0x1a, 0xca, 0xd3, 0xcb, 0xdc, 0x2c, 0xb5, 0xa7, 0xc6, 0x8e, 0x86, 0x84, 0x64, 0xc2 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.6", - /* Message to be signed */ - 233, - { 0x10, 0xaa, 0xe9, 0xa0, 0xab, 0x0b, 0x59, 0x5d, 0x08, 0x41, 0x20, 0x7b, 0x70, 0x0d, 0x48, 0xd7, 0x5f, 0xae, 0xdd, 0xe3, 0xb7, 0x75, 0xcd, 0x6b, 0x4c, 0xc8, 0x8a, 0xe0, 0x6e, 0x46, 0x94, 0xec, 0x74, 0xba, 0x18, 0xf8, 0x52, 0x0d, 0x4f, 0x5e, 0xa6, 0x9c, 0xbb, 0xe7, 0xcc, 0x2b, 0xeb, 0xa4, 0x3e, 0xfd, 0xc1, 0x02, 0x15, 0xac, 0x4e, 0xb3, 0x2d, 0xc3, 0x02, 0xa1, 0xf5, 0x3d, 0xc6, 0xc4, 0x35, 0x22, 0x67, 0xe7, 0x93, 0x6c, 0xfe, 0xbf, 0x7c, 0x8d, 0x67, 0x03, 0x57, 0x84, 0xa3, 0x90, 0x9f, 0xa8, 0x59, 0xc7, 0xb7, 0xb5, 0x9b, 0x8e, 0x39, 0xc5, 0xc2, 0x34, 0x9f, 0x18, 0x86, 0xb7, 0x05, 0xa3, 0x02, 0x67, 0xd4, 0x02, 0xf7, 0x48, 0x6a, 0xb4, 0xf5, 0x8c, 0xad, 0x5d, 0x69, 0xad, 0xb1, 0x7a, 0xb8, 0xcd, 0x0c, 0xe1, 0xca, 0xf5, 0x02, 0x5a, 0xf4, 0xae, 0x24, 0xb1, 0xfb, 0x87, 0x94, 0xc6, 0x07, 0x0c, 0xc0, 0x9a, 0x51, 0xe2, 0xf9, 0x91, 0x13, 0x11, 0xe3, 0x87, 0x7d, 0x00, 0x44, 0xc7, 0x1c, 0x57, 0xa9, 0x93, 0x39, 0x50, 0x08, 0x80, 0x6b, 0x72, 0x3a, 0xc3, 0x83, 0x73, 0xd3, 0x95, 0x48, 0x18, 0x18, 0x52, 0x8c, 0x1e, 0x70, 0x53, 0x73, 0x92, 0x82, 0x05, 0x35, 0x29, 0x51, 0x0e, 0x93, 0x5c, 0xd0, 0xfa, 0x77, 0xb8, 0xfa, 0x53, 0xcc, 0x2d, 0x47, 0x4b, 0xd4, 0xfb, 0x3c, 0xc5, 0xc6, 0x72, 0xd6, 0xff, 0xdc, 0x90, 0xa0, 0x0f, 0x98, 0x48, 0x71, 0x2c, 0x4b, 0xcf, 0xe4, 0x6c, 0x60, 0x57, 0x36, 0x59, 0xb1, 0x1e, 0x64, 0x57, 0xe8, 0x61, 0xf0, 0xf6, 0x04, 0xb6, 0x13, 0x8d, 0x14, 0x4f, 0x8c, 0xe4, 0xe2, 0xda, 0x73 } -, - /* Signature */ - 128, - { 0x0e, 0x6f, 0xf6, 0x3a, 0x85, 0x6b, 0x9c, 0xbd, 0x5d, 0xbe, 0x42, 0x31, 0x83, 0x12, 0x20, 0x47, 0xdd, 0x39, 0xd6, 0xf7, 0x6d, 0x1b, 0x23, 0x10, 0xe5, 0x46, 0xfe, 0x9e, 0xe7, 0x3b, 0x33, 0xef, 0xa7, 0xc7, 0x8f, 0x94, 0x74, 0x45, 0x5c, 0x9e, 0x5b, 0x88, 0xcb, 0x38, 0x3a, 0xaf, 0xc3, 0x69, 0x86, 0x68, 0xe7, 0xb7, 0xa5, 0x9a, 0x9c, 0xbb, 0x5b, 0x08, 0x97, 0xb6, 0xc5, 0xaf, 0xb7, 0xf8, 0xba, 0xc4, 0xb9, 0x24, 0xe9, 0x8d, 0x76, 0x0a, 0x15, 0xfc, 0x43, 0xd2, 0x81, 0x4a, 0xb2, 0xd5, 0x18, 0x7f, 0x79, 0xbe, 0xd9, 0x91, 0x5a, 0x93, 0x39, 0x7e, 0xbc, 0x22, 0xa7, 0x67, 0x75, 0x06, 0xa0, 0x2e, 0x07, 0x6d, 0x3f, 0xfd, 0xc0, 0x44, 0x1d, 0xbd, 0x4d, 0xb0, 0x04, 0x53, 0xdc, 0x28, 0xd8, 0x30, 0xe0, 0x57, 0x3f, 0x77, 0xb8, 0x17, 0xb5, 0x05, 0xc3, 0x8b, 0x4a, 0x4b, 0xb5, 0xd0 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.7", - /* Message to be signed */ - 127, - { 0xef, 0xb5, 0xda, 0x1b, 0x4d, 0x1e, 0x6d, 0x9a, 0x5d, 0xff, 0x92, 0xd0, 0x18, 0x4d, 0xa7, 0xe3, 0x1f, 0x87, 0x7d, 0x12, 0x81, 0xdd, 0xda, 0x62, 0x56, 0x64, 0x86, 0x9e, 0x83, 0x79, 0xe6, 0x7a, 0xd3, 0xb7, 0x5e, 0xae, 0x74, 0xa5, 0x80, 0xe9, 0x82, 0x7a, 0xbd, 0x6e, 0xb7, 0xa0, 0x02, 0xcb, 0x54, 0x11, 0xf5, 0x26, 0x67, 0x97, 0x76, 0x8f, 0xb8, 0xe9, 0x5a, 0xe4, 0x0e, 0x3e, 0x8b, 0x34, 0x66, 0xf5, 0xab, 0x15, 0xd6, 0x95, 0x53, 0x95, 0x29, 0x39, 0xec, 0x23, 0xe6, 0x1d, 0x58, 0x49, 0x7f, 0xac, 0x76, 0xaa, 0x1c, 0x0b, 0xb5, 0xa3, 0xcb, 0x4a, 0x54, 0x38, 0x35, 0x87, 0xc7, 0xbb, 0x78, 0xd1, 0x3e, 0xef, 0xda, 0x20, 0x54, 0x43, 0xe6, 0xce, 0x43, 0x65, 0x80, 0x2d, 0xf5, 0x5c, 0x64, 0x71, 0x34, 0x97, 0x98, 0x4e, 0x7c, 0xa9, 0x67, 0x22, 0xb3, 0xed, 0xf8, 0x4d, 0x56 } -, - /* Signature */ - 128, - { 0x83, 0x85, 0xd5, 0x85, 0x33, 0xa9, 0x95, 0xf7, 0x2d, 0xf2, 0x62, 0xb7, 0x0f, 0x40, 0xb3, 0x91, 0xdd, 0xf5, 0x15, 0xf4, 0x64, 0xb9, 0xd2, 0xcc, 0x2d, 0x66, 0x39, 0x8f, 0xc0, 0x56, 0x89, 0xd8, 0x11, 0x63, 0x29, 0x46, 0xd6, 0x2e, 0xab, 0xdc, 0xa7, 0xa3, 0x1f, 0xcf, 0x6c, 0xd6, 0xc9, 0x81, 0xd2, 0x8b, 0xbc, 0x29, 0x08, 0x3e, 0x4a, 0x6d, 0x5b, 0x2b, 0x37, 0x8c, 0xa4, 0xe5, 0x40, 0xf0, 0x60, 0xb9, 0x6d, 0x53, 0xad, 0x26, 0x93, 0xf8, 0x21, 0x78, 0xb9, 0x4e, 0x2e, 0x2f, 0x86, 0xb9, 0xac, 0xcf, 0xa0, 0x20, 0x25, 0x10, 0x7e, 0x06, 0x2a, 0xb7, 0x08, 0x01, 0x75, 0x68, 0x45, 0x01, 0x02, 0x8f, 0x67, 0x64, 0x61, 0xd8, 0x1c, 0x00, 0x8f, 0xe4, 0x75, 0x06, 0x71, 0x64, 0x99, 0x70, 0x87, 0x8f, 0xc1, 0x75, 0xcf, 0x98, 0xe9, 0x6b, 0x2e, 0xcb, 0xf6, 0x87, 0x4d, 0x77, 0xda, 0xcb } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.8", - /* Message to be signed */ - 232, - { 0x53, 0xbb, 0x58, 0xce, 0x42, 0xf1, 0x98, 0x49, 0x40, 0x55, 0x26, 0x57, 0x23, 0x3b, 0x14, 0x96, 0x9a, 0xf3, 0x65, 0xc0, 0xa5, 0x61, 0xa4, 0x13, 0x2a, 0xf1, 0x8a, 0xf3, 0x94, 0x32, 0x28, 0x0e, 0x3e, 0x43, 0x70, 0x82, 0x43, 0x4b, 0x19, 0x23, 0x18, 0x37, 0x18, 0x4f, 0x02, 0xcf, 0x2b, 0x2e, 0x72, 0x6b, 0xeb, 0xf7, 0x4d, 0x7a, 0xe3, 0x25, 0x6d, 0x8b, 0x72, 0xf3, 0xea, 0xfd, 0xb1, 0x34, 0xd3, 0x3d, 0xe0, 0x6f, 0x29, 0x91, 0xd2, 0x99, 0xd5, 0x9f, 0x54, 0x68, 0xd4, 0x3b, 0x99, 0x58, 0xd6, 0xa9, 0x68, 0xf5, 0x96, 0x9e, 0xdb, 0xbc, 0x6e, 0x71, 0x85, 0xcb, 0xc7, 0x16, 0xc7, 0xc9, 0x45, 0xda, 0xfa, 0x9c, 0xc7, 0x1d, 0xdf, 0xaa, 0xa0, 0x10, 0x94, 0xa4, 0x52, 0xdd, 0xf5, 0xe2, 0x40, 0x73, 0x20, 0x40, 0x0b, 0xf0, 0x5e, 0xa9, 0x72, 0x9c, 0xaf, 0xbf, 0x06, 0x00, 0xe7, 0x88, 0x07, 0xef, 0x94, 0x62, 0xe3, 0xfd, 0xe3, 0x2e, 0xd7, 0xd9, 0x81, 0xa5, 0x6f, 0x47, 0x51, 0xef, 0x64, 0xfb, 0x45, 0x49, 0x91, 0x0e, 0xcc, 0x91, 0x1d, 0x72, 0x80, 0x53, 0xb3, 0x99, 0x43, 0x00, 0x47, 0x40, 0xe6, 0xf5, 0x82, 0x1f, 0xe8, 0xd7, 0x5c, 0x06, 0x17, 0xbf, 0x2c, 0x6b, 0x24, 0xbb, 0xfc, 0x34, 0x01, 0x3f, 0xc9, 0x5f, 0x0d, 0xed, 0xf5, 0xba, 0x29, 0x7f, 0x50, 0x4f, 0xb8, 0x33, 0xda, 0x2a, 0x43, 0x6d, 0x1d, 0x8f, 0xf1, 0xcc, 0x51, 0x93, 0xe2, 0xa6, 0x43, 0x89, 0xfc, 0xed, 0x91, 0x8e, 0x7f, 0xeb, 0x67, 0x16, 0x33, 0x0f, 0x66, 0x80, 0x1d, 0xb9, 0x49, 0x75, 0x49, 0xcf, 0x1d, 0x3b, 0xd9, 0x7c, 0xf1, 0xbc, 0x62, 0x55 } -, - /* Signature */ - 128, - { 0x8e, 0x1f, 0x3d, 0x26, 0xec, 0x7c, 0x6b, 0xbb, 0x8c, 0x54, 0xc5, 0xd2, 0x5f, 0x31, 0x20, 0x58, 0x78, 0x03, 0xaf, 0x6d, 0x3c, 0x2b, 0x99, 0xa3, 0x7c, 0xed, 0x6a, 0x36, 0x57, 0xd4, 0xae, 0x54, 0x26, 0x6f, 0x63, 0xff, 0xfd, 0xe6, 0x60, 0xc8, 0x66, 0xd6, 0x5d, 0x0a, 0xb0, 0x58, 0x9e, 0x1d, 0x12, 0xd9, 0xce, 0x60, 0x54, 0xb0, 0x5c, 0x86, 0x68, 0xae, 0x12, 0x71, 0x71, 0xcc, 0xaa, 0xe7, 0xf1, 0xcd, 0x40, 0x96, 0x77, 0xf5, 0x21, 0x57, 0xb6, 0x12, 0x3a, 0xb2, 0x27, 0xf2, 0x7a, 0x00, 0x96, 0x6d, 0x14, 0x39, 0xb4, 0x2a, 0x32, 0x16, 0x9d, 0x10, 0x70, 0x39, 0x40, 0x26, 0xfc, 0x8b, 0xc9, 0x35, 0x45, 0xb1, 0xac, 0x25, 0x2d, 0x0f, 0x7d, 0xa7, 0x51, 0xc0, 0x2e, 0x33, 0xa4, 0x78, 0x31, 0xfb, 0xd7, 0x15, 0x14, 0xc2, 0xbb, 0xbd, 0x3a, 0xdb, 0x67, 0x40, 0xc0, 0xfd, 0x68, 0xad } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.9", - /* Message to be signed */ - 42, - { 0x27, 0xca, 0xdc, 0x69, 0x84, 0x50, 0x94, 0x5f, 0x20, 0x4e, 0xc3, 0xcf, 0x8c, 0x6c, 0xbd, 0x8c, 0xeb, 0x4c, 0xc0, 0xcb, 0xe3, 0x12, 0x27, 0x4f, 0xa9, 0x6b, 0x04, 0xde, 0xac, 0x85, 0x51, 0x60, 0xc0, 0xe0, 0x4e, 0x4a, 0xc5, 0xd3, 0x82, 0x10, 0xc2, 0x7c } -, - /* Signature */ - 128, - { 0x7b, 0x63, 0xf9, 0x22, 0x33, 0x56, 0xf3, 0x5f, 0x61, 0x17, 0xf6, 0x8c, 0x8f, 0x82, 0x20, 0x03, 0x4f, 0xc2, 0x38, 0x4a, 0xb5, 0xdc, 0x69, 0x04, 0x14, 0x1f, 0x13, 0x93, 0x14, 0xd6, 0xee, 0x89, 0xf5, 0x4e, 0xc6, 0xff, 0xd1, 0x8c, 0x41, 0x3a, 0x23, 0xc5, 0x93, 0x1c, 0x7f, 0xbb, 0x13, 0xc5, 0x55, 0xcc, 0xfd, 0x59, 0x0e, 0x0e, 0xaa, 0x85, 0x3c, 0x8c, 0x94, 0xd2, 0x52, 0x0c, 0xd4, 0x25, 0x0d, 0x9a, 0x05, 0xa1, 0x93, 0xb6, 0x5d, 0xc7, 0x49, 0xb8, 0x24, 0x78, 0xaf, 0x01, 0x56, 0xee, 0x1d, 0xe5, 0x5d, 0xda, 0xd3, 0x3e, 0xc1, 0xf0, 0x09, 0x9c, 0xad, 0x6c, 0x89, 0x1a, 0x36, 0x17, 0xc7, 0x39, 0x3d, 0x05, 0xfb, 0xfb, 0xbb, 0x00, 0x52, 0x8a, 0x00, 0x1d, 0xf0, 0xb2, 0x04, 0xeb, 0xdf, 0x1a, 0x34, 0x10, 0x90, 0xde, 0xa8, 0x9f, 0x87, 0x0a, 0x87, 0x74, 0x58, 0x42, 0x7f, 0x7b } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.10", - /* Message to be signed */ - 19, - { 0x71, 0x64, 0x07, 0xe9, 0x01, 0xb9, 0xef, 0x92, 0xd7, 0x61, 0xb0, 0x13, 0xfd, 0x13, 0xeb, 0x7a, 0xd7, 0x2a, 0xed } -, - /* Signature */ - 128, - { 0x2a, 0x22, 0xdb, 0xe3, 0x77, 0x4d, 0x5b, 0x29, 0x72, 0x01, 0xb5, 0x5a, 0x0f, 0x17, 0xf4, 0x2d, 0xce, 0x63, 0xb7, 0x84, 0x5c, 0xb3, 0x25, 0xcf, 0xe9, 0x51, 0xd0, 0xba, 0xdb, 0x5c, 0x5a, 0x14, 0x47, 0x21, 0x43, 0xd8, 0x96, 0xc8, 0x6c, 0xc3, 0x39, 0xf8, 0x36, 0x71, 0x16, 0x42, 0x15, 0xab, 0xc9, 0x78, 0x62, 0xf2, 0x15, 0x16, 0x54, 0xe7, 0x5a, 0x3b, 0x35, 0x7c, 0x37, 0x31, 0x1b, 0x3d, 0x72, 0x68, 0xca, 0xb5, 0x40, 0x20, 0x2e, 0x23, 0xbe, 0xe5, 0x27, 0x36, 0xf2, 0xcd, 0x86, 0xcc, 0xe0, 0xc7, 0xdb, 0xde, 0x95, 0xe1, 0xc6, 0x00, 0xa4, 0x73, 0x95, 0xdc, 0x5e, 0xb0, 0xa4, 0x72, 0x15, 0x3f, 0xbc, 0x4f, 0xb2, 0x1b, 0x64, 0x3e, 0x0c, 0x04, 0xae, 0x14, 0xdd, 0x37, 0xe9, 0x7e, 0x61, 0x7a, 0x75, 0x67, 0xc8, 0x96, 0x52, 0x21, 0x97, 0x81, 0x00, 0x1b, 0xa6, 0xf8, 0x32, 0x98 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.11", - /* Message to be signed */ - 206, - { 0x46, 0xc2, 0x4e, 0x41, 0x03, 0x00, 0x16, 0x29, 0xc7, 0x12, 0xdd, 0x4c, 0xe8, 0xd7, 0x47, 0xee, 0x59, 0x5d, 0x6c, 0x74, 0x4c, 0xcc, 0x4f, 0x71, 0x34, 0x7d, 0x9b, 0x8a, 0xbf, 0x49, 0xd1, 0xb8, 0xfb, 0x2e, 0xf9, 0x1b, 0x95, 0xdc, 0x89, 0x9d, 0x4c, 0x0e, 0x3d, 0x29, 0x97, 0xe6, 0x38, 0xf4, 0xcf, 0x3f, 0x68, 0xe0, 0x49, 0x8d, 0xe5, 0xaa, 0xbd, 0x13, 0xf0, 0xdf, 0xe0, 0x2f, 0xf2, 0x6b, 0xa4, 0x37, 0x91, 0x04, 0xe7, 0x8f, 0xfa, 0x95, 0xff, 0xbd, 0x15, 0x06, 0x7e, 0xf8, 0xcb, 0xd7, 0xeb, 0x78, 0x60, 0xfe, 0xcc, 0x71, 0xab, 0xe1, 0x3d, 0x5c, 0x72, 0x0a, 0x66, 0x85, 0x1f, 0x2d, 0xef, 0xd4, 0xe7, 0x95, 0x05, 0x4d, 0x7b, 0xec, 0x02, 0x4b, 0xb4, 0x22, 0xa4, 0x6a, 0x73, 0x68, 0xb5, 0x6d, 0x95, 0xb4, 0x7a, 0xeb, 0xaf, 0xbe, 0xad, 0xd6, 0x12, 0x81, 0x25, 0x93, 0xa7, 0x0d, 0xb9, 0xf9, 0x6d, 0x45, 0x1e, 0xe1, 0x5e, 0xdb, 0x29, 0x93, 0x08, 0xd7, 0x77, 0xf4, 0xbb, 0x68, 0xed, 0x33, 0x77, 0xc3, 0x21, 0x56, 0xb4, 0x1b, 0x7a, 0x9c, 0x92, 0xa1, 0x4c, 0x8b, 0x81, 0x14, 0x43, 0x99, 0xc5, 0x6a, 0x5a, 0x43, 0x2f, 0x4f, 0x77, 0x0a, 0xa9, 0x7d, 0xa8, 0x41, 0x5d, 0x0b, 0xda, 0x2e, 0x81, 0x32, 0x06, 0x03, 0x1e, 0x70, 0x62, 0x00, 0x31, 0xc8, 0x81, 0xd6, 0x16, 0xbf, 0xfd, 0x5f, 0x03, 0xbf, 0x14, 0x7c, 0x1e, 0x73, 0x76, 0x6c, 0x26, 0x24, 0x62, 0x08 } -, - /* Signature */ - 128, - { 0x12, 0x23, 0x5b, 0x0b, 0x40, 0x61, 0x26, 0xd9, 0xd2, 0x60, 0xd4, 0x47, 0xe9, 0x23, 0xa1, 0x10, 0x51, 0xfb, 0x24, 0x30, 0x79, 0xf4, 0x46, 0xfd, 0x73, 0xa7, 0x01, 0x81, 0xd5, 0x36, 0x34, 0xd7, 0xa0, 0x96, 0x8e, 0x4e, 0xe2, 0x77, 0x77, 0xed, 0xa6, 0x3f, 0x6e, 0x4a, 0x3a, 0x91, 0xad, 0x59, 0x85, 0x99, 0x8a, 0x48, 0x48, 0xda, 0x59, 0xce, 0x69, 0x7b, 0x24, 0xbb, 0x33, 0x2f, 0xa2, 0xad, 0x9c, 0xe4, 0x62, 0xca, 0x4a, 0xff, 0xdc, 0x21, 0xda, 0xb9, 0x08, 0xe8, 0xce, 0x15, 0xaf, 0x6e, 0xb9, 0x10, 0x5b, 0x1a, 0xbc, 0xf3, 0x91, 0x42, 0xaa, 0x17, 0xb3, 0x4c, 0x4c, 0x09, 0x23, 0x86, 0xa7, 0xab, 0xbf, 0xe0, 0x28, 0xaf, 0xdb, 0xeb, 0xc1, 0x4f, 0x2c, 0xe2, 0x6f, 0xbe, 0xe5, 0xed, 0xec, 0xa1, 0x15, 0x02, 0xd3, 0x9a, 0x6b, 0x74, 0x03, 0x15, 0x48, 0x43, 0xd9, 0x8a, 0x62, 0xa7 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.12", - /* Message to be signed */ - 107, - { 0xbc, 0x99, 0xa9, 0x32, 0xaa, 0x16, 0xd6, 0x22, 0xbf, 0xff, 0x79, 0xc5, 0x0b, 0x4c, 0x42, 0x35, 0x86, 0x73, 0x26, 0x11, 0x29, 0xe2, 0x8d, 0x6a, 0x91, 0x8f, 0xf1, 0xb0, 0xf1, 0xc4, 0xf4, 0x6a, 0xd8, 0xaf, 0xa9, 0x8b, 0x0c, 0xa0, 0xf5, 0x6f, 0x96, 0x79, 0x75, 0xb0, 0xa2, 0x9b, 0xe8, 0x82, 0xe9, 0x3b, 0x6c, 0xd3, 0xfc, 0x33, 0xe1, 0xfa, 0xef, 0x72, 0xe5, 0x2b, 0x2a, 0xe0, 0xa3, 0xf1, 0x20, 0x24, 0x50, 0x6e, 0x25, 0x69, 0x0e, 0x90, 0x2e, 0x78, 0x29, 0x82, 0x14, 0x55, 0x56, 0x53, 0x22, 0x84, 0xcf, 0x50, 0x57, 0x89, 0x73, 0x8f, 0x4d, 0xa3, 0x1f, 0xa1, 0x33, 0x3d, 0x3a, 0xf8, 0x62, 0xb2, 0xba, 0x6b, 0x6c, 0xe7, 0xab, 0x4c, 0xce, 0x6a, 0xba } -, - /* Signature */ - 128, - { 0x87, 0x2e, 0xc5, 0xad, 0x4f, 0x18, 0x46, 0x25, 0x6f, 0x17, 0xe9, 0x93, 0x6a, 0xc5, 0x0e, 0x43, 0xe9, 0x96, 0x3e, 0xa8, 0xc1, 0xe7, 0x6f, 0x15, 0x87, 0x9b, 0x78, 0x74, 0xd7, 0x7d, 0x12, 0x2a, 0x60, 0x9d, 0xc8, 0xc5, 0x61, 0x14, 0x5b, 0x94, 0xbf, 0x4f, 0xfd, 0xff, 0xde, 0xb1, 0x7e, 0x6e, 0x76, 0xff, 0xc6, 0xc1, 0x0c, 0x07, 0x47, 0xf5, 0xe3, 0x7a, 0x9f, 0x43, 0x4f, 0x56, 0x09, 0xe7, 0x9d, 0xa5, 0x25, 0x02, 0x15, 0xa4, 0x57, 0xaf, 0xdf, 0x12, 0xc6, 0x50, 0x7c, 0xc1, 0x55, 0x1f, 0x54, 0xa2, 0x80, 0x10, 0x59, 0x58, 0x26, 0xa2, 0xc9, 0xb9, 0x7f, 0xa0, 0xaa, 0x85, 0x1c, 0xc6, 0x8b, 0x70, 0x5d, 0x7a, 0x06, 0xd7, 0x20, 0xba, 0x02, 0x7e, 0x4a, 0x1c, 0x0b, 0x01, 0x95, 0x00, 0xfb, 0x63, 0xb7, 0x80, 0x71, 0x68, 0x4d, 0xcf, 0xa9, 0x77, 0x27, 0x00, 0xb9, 0x82, 0xdc, 0x66 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.13", - /* Message to be signed */ - 128, - { 0x73, 0x1e, 0x17, 0x2a, 0xc0, 0x63, 0x99, 0x2c, 0x5b, 0x11, 0xba, 0x17, 0x0d, 0xfb, 0x23, 0xbb, 0x00, 0x0d, 0x47, 0xba, 0x19, 0x53, 0x29, 0xcf, 0x27, 0x80, 0x61, 0x03, 0x73, 0x81, 0x51, 0x4c, 0x14, 0x60, 0x64, 0xc5, 0x28, 0x5d, 0xb1, 0x30, 0xdd, 0x5b, 0xae, 0x98, 0xb7, 0x72, 0x22, 0x59, 0x50, 0xea, 0xb0, 0x5d, 0x3e, 0xa9, 0x96, 0xf6, 0xff, 0xfb, 0x9a, 0x8c, 0x86, 0x22, 0x91, 0x3f, 0x27, 0x99, 0x14, 0xc8, 0x9a, 0xda, 0x4f, 0x3d, 0xd7, 0x76, 0x66, 0xa8, 0x68, 0xbf, 0xcb, 0xff, 0x2b, 0x95, 0xb7, 0xda, 0xf4, 0x53, 0xd4, 0xe2, 0xc9, 0xd7, 0x5b, 0xee, 0xe7, 0xf8, 0xe7, 0x09, 0x05, 0xe4, 0x06, 0x6a, 0x4f, 0x73, 0xae, 0xcc, 0x67, 0xf9, 0x56, 0xaa, 0x5a, 0x32, 0x92, 0xb8, 0x48, 0x8c, 0x91, 0x7d, 0x31, 0x7c, 0xfd, 0xc8, 0x62, 0x53, 0xe6, 0x90, 0x38, 0x1e, 0x15, 0xab } -, - /* Signature */ - 128, - { 0x76, 0x20, 0x4e, 0xac, 0xc1, 0xd6, 0x3e, 0xc1, 0xd6, 0xad, 0x5b, 0xd0, 0x69, 0x2e, 0x1a, 0x2f, 0x68, 0x6d, 0xf6, 0xe6, 0x4c, 0xa9, 0x45, 0xc7, 0x7a, 0x82, 0x4d, 0xe2, 0x12, 0xef, 0xa6, 0xd9, 0x78, 0x2d, 0x81, 0xb4, 0x59, 0x14, 0x03, 0xff, 0x40, 0x20, 0x62, 0x02, 0x98, 0xc0, 0x7e, 0xbd, 0x3a, 0x8a, 0x61, 0xc5, 0xbf, 0x4d, 0xad, 0x62, 0xcb, 0xfc, 0x4a, 0xe6, 0xa0, 0x39, 0x37, 0xbe, 0x4b, 0x49, 0xa2, 0x16, 0xd5, 0x70, 0xfc, 0x6e, 0x81, 0x87, 0x29, 0x37, 0x87, 0x6e, 0x27, 0xbd, 0x19, 0xcf, 0x60, 0x1e, 0xff, 0xc3, 0x0d, 0xdc, 0xa5, 0x73, 0xc9, 0xd5, 0x6c, 0xd4, 0x56, 0x9b, 0xdb, 0x48, 0x51, 0xc4, 0x50, 0xc4, 0x2c, 0xb2, 0x1e, 0x73, 0x8c, 0xdd, 0x61, 0x02, 0x7b, 0x8b, 0xe5, 0xe9, 0xb4, 0x10, 0xfc, 0x46, 0xaa, 0x3f, 0x29, 0xe4, 0xbe, 0x9e, 0x64, 0x45, 0x13, 0x46 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.14", - /* Message to be signed */ - 217, - { 0x02, 0x11, 0x38, 0x26, 0x83, 0xa7, 0x4d, 0x8d, 0x2a, 0x2c, 0xb6, 0xa0, 0x65, 0x50, 0x56, 0x3b, 0xe1, 0xc2, 0x6c, 0xa6, 0x28, 0x21, 0xe4, 0xff, 0x16, 0x3b, 0x72, 0x04, 0x64, 0xfc, 0x3a, 0x28, 0xd9, 0x1b, 0xed, 0xdd, 0xc6, 0x27, 0x49, 0xa5, 0x53, 0x8e, 0xaf, 0x41, 0xfb, 0xe0, 0xc8, 0x2a, 0x77, 0xe0, 0x6a, 0xd9, 0x93, 0x83, 0xc9, 0xe9, 0x85, 0xff, 0xb8, 0xa9, 0x3f, 0xd4, 0xd7, 0xc5, 0x8d, 0xb5, 0x1a, 0xd9, 0x1b, 0xa4, 0x61, 0xd6, 0x9a, 0x8f, 0xd7, 0xdd, 0xab, 0xe2, 0x49, 0x67, 0x57, 0xa0, 0xc4, 0x91, 0x22, 0xc1, 0xa7, 0x9a, 0x85, 0xcc, 0x05, 0x53, 0xe8, 0x21, 0x4d, 0x03, 0x6d, 0xfe, 0x01, 0x85, 0xef, 0xa0, 0xd0, 0x58, 0x60, 0xc6, 0x12, 0xfa, 0x08, 0x82, 0xc8, 0x2d, 0x24, 0x6e, 0x58, 0x30, 0xa6, 0x73, 0x55, 0xdf, 0xf1, 0x8a, 0x2c, 0x36, 0xb7, 0x32, 0xf9, 0x88, 0xcf, 0xed, 0xc5, 0x62, 0x26, 0x4c, 0x62, 0x54, 0xb4, 0x0f, 0xca, 0xbb, 0x97, 0xb7, 0x60, 0x94, 0x75, 0x68, 0xdc, 0xd6, 0xa1, 0x7c, 0xda, 0x6e, 0xe8, 0x85, 0x5b, 0xdd, 0xba, 0xb9, 0x37, 0x02, 0x47, 0x1a, 0xa0, 0xcf, 0xb1, 0xbe, 0xd2, 0xe1, 0x31, 0x18, 0xeb, 0xa1, 0x17, 0x5b, 0x73, 0xc9, 0x62, 0x53, 0xc1, 0x08, 0xd0, 0xb2, 0xab, 0xa0, 0x5a, 0xb8, 0xe1, 0x7e, 0x84, 0x39, 0x2e, 0x20, 0x08, 0x5f, 0x47, 0x40, 0x4d, 0x83, 0x65, 0x52, 0x7d, 0xc3, 0xfb, 0x8f, 0x2b, 0xb4, 0x8a, 0x50, 0x03, 0x8e, 0x71, 0x36, 0x1c, 0xcf, 0x97, 0x34, 0x07 } -, - /* Signature */ - 128, - { 0x52, 0x55, 0x00, 0x91, 0x83, 0x31, 0xf1, 0x04, 0x2e, 0xae, 0x0c, 0x5c, 0x20, 0x54, 0xaa, 0x7f, 0x92, 0xde, 0xb2, 0x69, 0x91, 0xb5, 0x79, 0x66, 0x34, 0xf2, 0x29, 0xda, 0xf9, 0xb4, 0x9e, 0xb2, 0x05, 0x4d, 0x87, 0x31, 0x9f, 0x3c, 0xfa, 0x9b, 0x46, 0x6b, 0xd0, 0x75, 0xef, 0x66, 0x99, 0xae, 0xa4, 0xbd, 0x4a, 0x19, 0x5a, 0x1c, 0x52, 0x96, 0x8b, 0x5e, 0x2b, 0x75, 0xe0, 0x92, 0xd8, 0x46, 0xea, 0x1b, 0x5c, 0xc2, 0x79, 0x05, 0xa8, 0xe1, 0xd5, 0xe5, 0xde, 0x0e, 0xdf, 0xdb, 0x21, 0x39, 0x1e, 0xbb, 0x95, 0x18, 0x64, 0xeb, 0xd9, 0xf0, 0xb0, 0xec, 0x35, 0xb6, 0x54, 0x28, 0x71, 0x36, 0x0a, 0x31, 0x7b, 0x7e, 0xf1, 0x3a, 0xe0, 0x6a, 0xf6, 0x84, 0xe3, 0x8e, 0x21, 0xb1, 0xe1, 0x9b, 0xc7, 0x29, 0x8e, 0x5d, 0x6f, 0xe0, 0x01, 0x3a, 0x16, 0x4b, 0xfa, 0x25, 0xd3, 0xe7, 0x31, 0x3d } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.15", - /* Message to be signed */ - 66, - { 0xfc, 0x6b, 0x70, 0x0d, 0x22, 0x58, 0x33, 0x88, 0xab, 0x2f, 0x8d, 0xaf, 0xca, 0xf1, 0xa0, 0x56, 0x20, 0x69, 0x80, 0x20, 0xda, 0x4b, 0xae, 0x44, 0xda, 0xfb, 0xd0, 0x87, 0x7b, 0x50, 0x12, 0x50, 0x6d, 0xc3, 0x18, 0x1d, 0x5c, 0x66, 0xbf, 0x02, 0x3f, 0x34, 0x8b, 0x41, 0xfd, 0x9f, 0x94, 0x79, 0x5a, 0xb9, 0x64, 0x52, 0xa4, 0x21, 0x9f, 0x2d, 0x39, 0xd7, 0x2a, 0xf3, 0x59, 0xcf, 0x19, 0x56, 0x51, 0xc7 } -, - /* Signature */ - 128, - { 0x44, 0x52, 0xa6, 0xcc, 0x26, 0x26, 0xb0, 0x1e, 0x95, 0xab, 0x30, 0x6d, 0xf0, 0xd0, 0xcc, 0x74, 0x84, 0xfb, 0xab, 0x3c, 0x22, 0xe9, 0x70, 0x32, 0x83, 0x56, 0x7f, 0x66, 0xea, 0xdc, 0x24, 0x8d, 0xbd, 0xa5, 0x8f, 0xce, 0x7d, 0xd0, 0xc7, 0x0c, 0xce, 0x3f, 0x15, 0x0f, 0xca, 0x4b, 0x36, 0x9d, 0xff, 0x3b, 0x62, 0x37, 0xe2, 0xb1, 0x62, 0x81, 0xab, 0x55, 0xb5, 0x3f, 0xb1, 0x30, 0x89, 0xc8, 0x5c, 0xd2, 0x65, 0x05, 0x6b, 0x3d, 0x62, 0xa8, 0x8b, 0xfc, 0x21, 0x35, 0xb1, 0x67, 0x91, 0xf7, 0xfb, 0xca, 0xb9, 0xfd, 0x2d, 0xc3, 0x3b, 0xec, 0xb6, 0x17, 0xbe, 0x41, 0x9d, 0x2c, 0x04, 0x61, 0x42, 0xa4, 0xd4, 0x7b, 0x33, 0x83, 0x14, 0x55, 0x2e, 0xdd, 0x4b, 0x6f, 0xe9, 0xce, 0x11, 0x04, 0xec, 0xec, 0x4a, 0x99, 0x58, 0xd7, 0x33, 0x1e, 0x93, 0x0f, 0xc0, 0x9b, 0xf0, 0x8a, 0x6e, 0x64 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.16", - /* Message to be signed */ - 169, - { 0x13, 0xba, 0x08, 0x6d, 0x70, 0x9c, 0xfa, 0x5f, 0xed, 0xaa, 0x55, 0x7a, 0x89, 0x18, 0x1a, 0x61, 0x40, 0xf2, 0x30, 0x0e, 0xd6, 0xd7, 0xc3, 0xfe, 0xbb, 0x6c, 0xf6, 0x8a, 0xbe, 0xbc, 0xbc, 0x67, 0x8f, 0x2b, 0xca, 0x3d, 0xc2, 0x33, 0x02, 0x95, 0xee, 0xc4, 0x5b, 0xb1, 0xc4, 0x07, 0x5f, 0x3a, 0xda, 0x98, 0x7e, 0xae, 0x88, 0xb3, 0x9c, 0x51, 0x60, 0x6c, 0xb8, 0x04, 0x29, 0xe6, 0x49, 0xd9, 0x8a, 0xcc, 0x84, 0x41, 0xb1, 0xf8, 0x89, 0x7d, 0xb8, 0x6c, 0x5a, 0x4c, 0xe0, 0xab, 0xf2, 0x8b, 0x1b, 0x81, 0xdc, 0xa3, 0x66, 0x76, 0x97, 0xb8, 0x50, 0x69, 0x6b, 0x74, 0xa5, 0xeb, 0xd8, 0x5d, 0xec, 0x56, 0xc9, 0x0f, 0x8a, 0xbe, 0x51, 0x3e, 0xfa, 0x85, 0x78, 0x53, 0x72, 0x0b, 0xe3, 0x19, 0x60, 0x79, 0x21, 0xbc, 0xa9, 0x47, 0x52, 0x2c, 0xd8, 0xfa, 0xc8, 0xca, 0xce, 0x5b, 0x82, 0x7c, 0x3e, 0x5a, 0x12, 0x9e, 0x7e, 0xe5, 0x7f, 0x6b, 0x84, 0x93, 0x2f, 0x14, 0x14, 0x1a, 0xc4, 0x27, 0x4e, 0x8c, 0xbb, 0x46, 0xe6, 0x91, 0x2b, 0x0d, 0x3e, 0x21, 0x77, 0xd4, 0x99, 0xd1, 0x84, 0x0c, 0xd4, 0x7d, 0x4d, 0x7a, 0xe0, 0xb4, 0xcd, 0xc4, 0xd3 } -, - /* Signature */ - 128, - { 0x1f, 0x3b, 0x5a, 0x87, 0xdb, 0x72, 0xa2, 0xc9, 0x7b, 0xb3, 0xef, 0xf2, 0xa6, 0x5a, 0x30, 0x12, 0x68, 0xea, 0xcd, 0x89, 0xf4, 0x2a, 0xbc, 0x10, 0x98, 0xc1, 0xf2, 0xde, 0x77, 0xb0, 0x83, 0x2a, 0x65, 0xd7, 0x81, 0x5f, 0xeb, 0x35, 0x07, 0x00, 0x63, 0xf2, 0x21, 0xbb, 0x34, 0x53, 0xbd, 0x43, 0x43, 0x86, 0xc9, 0xa3, 0xfd, 0xe1, 0x8e, 0x3c, 0xa1, 0x68, 0x7f, 0xb6, 0x49, 0xe8, 0x6c, 0x51, 0xd6, 0x58, 0x61, 0x9d, 0xde, 0x5d, 0xeb, 0xb8, 0x6f, 0xe1, 0x54, 0x91, 0xff, 0x77, 0xab, 0x74, 0x83, 0x73, 0xf1, 0xbe, 0x50, 0x88, 0x80, 0xd6, 0x6e, 0xa8, 0x1e, 0x87, 0x0e, 0x91, 0xcd, 0xf1, 0x70, 0x48, 0x75, 0xc1, 0x7f, 0x0b, 0x10, 0x10, 0x31, 0x88, 0xbc, 0x64, 0xee, 0xf5, 0xa3, 0x55, 0x1b, 0x41, 0x4c, 0x73, 0x36, 0x70, 0x21, 0x5b, 0x1a, 0x22, 0x70, 0x25, 0x62, 0x58, 0x1a, 0xb1 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.17", - /* Message to be signed */ - 4, - { 0xeb, 0x1e, 0x59, 0x35 } -, - /* Signature */ - 128, - { 0x37, 0x0c, 0xb9, 0x83, 0x9a, 0xe6, 0x07, 0x4f, 0x84, 0xb2, 0xac, 0xd6, 0xe6, 0xf6, 0xb7, 0x92, 0x1b, 0x4b, 0x52, 0x34, 0x63, 0x75, 0x7f, 0x64, 0x46, 0x71, 0x61, 0x40, 0xc4, 0xe6, 0xc0, 0xe7, 0x5b, 0xec, 0x6a, 0xd0, 0x19, 0x7e, 0xbf, 0xa8, 0x6b, 0xf4, 0x6d, 0x09, 0x4f, 0x5f, 0x6c, 0xd3, 0x6d, 0xca, 0x3a, 0x5c, 0xc7, 0x3c, 0x8b, 0xbb, 0x70, 0xe2, 0xc7, 0xc9, 0xab, 0x5d, 0x96, 0x4e, 0xc8, 0xe3, 0xdf, 0xde, 0x48, 0x1b, 0x4a, 0x1b, 0xef, 0xfd, 0x01, 0xb4, 0xad, 0x15, 0xb3, 0x1a, 0xe7, 0xae, 0xbb, 0x9b, 0x70, 0x34, 0x4a, 0x94, 0x11, 0x08, 0x31, 0x65, 0xfd, 0xf9, 0xc3, 0x75, 0x4b, 0xbb, 0x8b, 0x94, 0xdd, 0x34, 0xbd, 0x48, 0x13, 0xdf, 0xad, 0xa1, 0xf6, 0x93, 0x7d, 0xe4, 0x26, 0x7d, 0x55, 0x97, 0xca, 0x09, 0xa3, 0x1e, 0x83, 0xd7, 0xf1, 0xa7, 0x9d, 0xd1, 0x9b, 0x5e } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.18", - /* Message to be signed */ - 28, - { 0x63, 0x46, 0xb1, 0x53, 0xe8, 0x89, 0xc8, 0x22, 0x82, 0x09, 0x63, 0x00, 0x71, 0xc8, 0xa5, 0x77, 0x83, 0xf3, 0x68, 0x76, 0x0b, 0x8e, 0xb9, 0x08, 0xcf, 0xc2, 0xb2, 0x76 } -, - /* Signature */ - 128, - { 0x24, 0x79, 0xc9, 0x75, 0xc5, 0xb1, 0xae, 0x4c, 0x4e, 0x94, 0x0f, 0x47, 0x3a, 0x90, 0x45, 0xb8, 0xbf, 0x5b, 0x0b, 0xfc, 0xa7, 0x8e, 0xc2, 0x9a, 0x38, 0xdf, 0xbe, 0xdc, 0x8a, 0x74, 0x9b, 0x7a, 0x26, 0x92, 0xf7, 0xc5, 0x2d, 0x5b, 0xc7, 0xc8, 0x31, 0xc7, 0x23, 0x23, 0x72, 0xa0, 0x0f, 0xed, 0x3b, 0x6b, 0x49, 0xe7, 0x60, 0xec, 0x99, 0xe0, 0x74, 0xff, 0x2e, 0xea, 0xd5, 0x13, 0x4e, 0x83, 0x05, 0x72, 0x5d, 0xfa, 0x39, 0x21, 0x2b, 0x84, 0xbd, 0x4b, 0x8d, 0x80, 0xbc, 0x8b, 0xc1, 0x7a, 0x51, 0x28, 0x23, 0xa3, 0xbe, 0xb1, 0x8f, 0xc0, 0x8e, 0x45, 0xed, 0x19, 0xc2, 0x6c, 0x81, 0x77, 0x07, 0xd6, 0x7f, 0xb0, 0x58, 0x32, 0xef, 0x1f, 0x12, 0xa3, 0x3e, 0x90, 0xcd, 0x93, 0xb8, 0xa7, 0x80, 0x31, 0x9e, 0x29, 0x63, 0xca, 0x25, 0xa2, 0xaf, 0x7b, 0x09, 0xad, 0x8f, 0x59, 0x5c, 0x21 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.19", - /* Message to be signed */ - 50, - { 0x64, 0x70, 0x2d, 0xb9, 0xf8, 0x25, 0xa0, 0xf3, 0xab, 0xc3, 0x61, 0x97, 0x46, 0x59, 0xf5, 0xe9, 0xd3, 0x0c, 0x3a, 0xa4, 0xf5, 0x6f, 0xea, 0xc6, 0x90, 0x50, 0xc7, 0x29, 0x05, 0xe7, 0x7f, 0xe0, 0xc2, 0x2f, 0x88, 0xa3, 0x78, 0xc2, 0x1f, 0xcf, 0x45, 0xfe, 0x8a, 0x5c, 0x71, 0x73, 0x02, 0x09, 0x39, 0x29 } -, - /* Signature */ - 128, - { 0x15, 0x2f, 0x34, 0x51, 0xc8, 0x58, 0xd6, 0x95, 0x94, 0xe6, 0x56, 0x7d, 0xfb, 0x31, 0x29, 0x1c, 0x1e, 0xe7, 0x86, 0x0b, 0x9d, 0x15, 0xeb, 0xd5, 0xa5, 0xed, 0xd2, 0x76, 0xac, 0x3e, 0x6f, 0x7a, 0x8d, 0x14, 0x80, 0xe4, 0x2b, 0x33, 0x81, 0xd2, 0xbe, 0x02, 0x3a, 0xcf, 0x7e, 0xbb, 0xdb, 0x28, 0xde, 0x3d, 0x21, 0x63, 0xae, 0x44, 0x25, 0x9c, 0x6d, 0xf9, 0x8c, 0x33, 0x5d, 0x04, 0x5b, 0x61, 0xda, 0xc9, 0xdb, 0xa9, 0xdb, 0xbb, 0x4e, 0x6a, 0xb4, 0xa0, 0x83, 0xcd, 0x76, 0xb5, 0x80, 0xcb, 0xe4, 0x72, 0x20, 0x6a, 0x1a, 0x9f, 0xd6, 0x06, 0x80, 0xce, 0xea, 0x1a, 0x57, 0x0a, 0x29, 0xb0, 0x88, 0x1c, 0x77, 0x5e, 0xae, 0xf5, 0x52, 0x5d, 0x6d, 0x2f, 0x34, 0x4c, 0x28, 0x83, 0x7d, 0x0a, 0xca, 0x42, 0x2b, 0xbb, 0x0f, 0x1a, 0xba, 0x8f, 0x68, 0x61, 0xae, 0x18, 0xbd, 0x73, 0xfe, 0x44 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 1.20", - /* Message to be signed */ - 43, - { 0x94, 0x19, 0x21, 0xde, 0x4a, 0x1c, 0x9c, 0x16, 0x18, 0xd6, 0xf3, 0xca, 0x3c, 0x17, 0x9f, 0x6e, 0x29, 0xba, 0xe6, 0xdd, 0xf9, 0xa6, 0xa5, 0x64, 0xf9, 0x29, 0xe3, 0xce, 0x82, 0xcf, 0x32, 0x65, 0xd7, 0x83, 0x7d, 0x5e, 0x69, 0x2b, 0xe8, 0xdc, 0xc9, 0xe8, 0x6c } -, - /* Signature */ - 128, - { 0x70, 0x76, 0xc2, 0x87, 0xfc, 0x6f, 0xff, 0x2b, 0x20, 0x53, 0x74, 0x35, 0xe5, 0xa3, 0x10, 0x7c, 0xe4, 0xda, 0x10, 0x71, 0x61, 0x86, 0xd0, 0x15, 0x39, 0x41, 0x3e, 0x60, 0x9d, 0x27, 0xd1, 0xda, 0x6f, 0xd9, 0x52, 0xc6, 0x1f, 0x4b, 0xab, 0x91, 0xc0, 0x45, 0xfa, 0x4f, 0x86, 0x83, 0xec, 0xc4, 0xf8, 0xdd, 0xe7, 0x42, 0x27, 0xf7, 0x73, 0xcf, 0xf3, 0xd9, 0x6d, 0xb8, 0x47, 0x18, 0xc4, 0x94, 0x4b, 0x06, 0xaf, 0xfe, 0xba, 0x94, 0xb7, 0x25, 0xf1, 0xb0, 0x7d, 0x39, 0x28, 0xb2, 0x49, 0x0a, 0x85, 0xc2, 0xf1, 0xab, 0xf4, 0x92, 0xa9, 0x17, 0x7a, 0x7c, 0xd2, 0xea, 0x0c, 0x96, 0x68, 0x75, 0x6f, 0x82, 0x5b, 0xbe, 0xc9, 0x00, 0xfa, 0x8a, 0xc3, 0x82, 0x4e, 0x11, 0x43, 0x87, 0xef, 0x57, 0x37, 0x80, 0xca, 0x33, 0x48, 0x82, 0x38, 0x7b, 0x94, 0xe5, 0xaa, 0xd7, 0xa2, 0x7a, 0x28, 0xdc } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 2: A 1024-bit RSA key pair", -{ - /* Modulus */ - 128, - { 0xac, 0x13, 0xd9, 0xfd, 0xae, 0x7b, 0x73, 0x35, 0xb6, 0x9c, 0xd9, 0x85, 0x67, 0xe9, 0x64, 0x7d, 0x99, 0xbf, 0x37, 0x3a, 0x9e, 0x05, 0xce, 0x34, 0x35, 0xd6, 0x64, 0x65, 0xf3, 0x28, 0xb7, 0xf7, 0x33, 0x4b, 0x79, 0x2a, 0xee, 0x7e, 0xfa, 0x04, 0x4e, 0xbc, 0x4c, 0x7a, 0x30, 0xb2, 0x1a, 0x5d, 0x7a, 0x89, 0xcd, 0xb3, 0xa3, 0x0d, 0xfc, 0xd9, 0xfe, 0xe9, 0x99, 0x5e, 0x09, 0x41, 0x5e, 0xdc, 0x0b, 0xf9, 0xe5, 0xb4, 0xc3, 0xf7, 0x4f, 0xf5, 0x3f, 0xb4, 0xd2, 0x94, 0x41, 0xbf, 0x1b, 0x7e, 0xd6, 0xcb, 0xdd, 0x4a, 0x47, 0xf9, 0x25, 0x22, 0x69, 0xe1, 0x64, 0x6f, 0x6c, 0x1a, 0xee, 0x05, 0x14, 0xe9, 0x3f, 0x6c, 0xb9, 0xdf, 0x71, 0xd0, 0x6c, 0x06, 0x0a, 0x21, 0x04, 0xb4, 0x7b, 0x72, 0x60, 0xac, 0x37, 0xc1, 0x06, 0x86, 0x1d, 0xc7, 0x8c, 0xa5, 0xa2, 0x5f, 0xaa, 0x9c, 0xb2, 0xe3 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x04, 0x84, 0xcc, 0xef, 0xad, 0x7a, 0x4e, 0x6f, 0x35, 0xa9, 0x6e, 0xc8, 0xe3, 0x0e, 0xac, 0xf5, 0xe3, 0x68, 0xb3, 0x11, 0x95, 0xfe, 0xbf, 0x08, 0x7d, 0xf5, 0x70, 0x53, 0x81, 0x0c, 0x2b, 0xb0, 0x91, 0x27, 0x45, 0x3a, 0x4c, 0x63, 0x07, 0x3b, 0xbf, 0xb9, 0x90, 0x24, 0x91, 0x4c, 0xcc, 0x06, 0x72, 0x66, 0x56, 0x01, 0x86, 0xa1, 0xa2, 0x67, 0x33, 0x1b, 0x7d, 0x4c, 0x8b, 0xdf, 0xac, 0x96, 0xfd, 0xa9, 0xf3, 0xf7, 0x0b, 0xec, 0x4e, 0xea, 0xbc, 0xe7, 0xcd, 0x52, 0x19, 0x34, 0x3c, 0x2e, 0x49, 0x1c, 0xce, 0x82, 0x7e, 0x44, 0xee, 0x23, 0x0e, 0x4f, 0x69, 0x58, 0x9e, 0x57, 0x5a, 0xe9, 0x06, 0x30, 0x30, 0x44, 0x2a, 0x31, 0xc8, 0x2c, 0xde, 0x30, 0xdc, 0x9c, 0x79, 0xcf, 0x64, 0xe7, 0xa0, 0x97, 0x5e, 0x75, 0xe1, 0x6e, 0xa4, 0x58, 0x15, 0x48, 0x8b, 0x45, 0x52, 0x56, 0xee, 0xb1 } -, - /* Prime 1 */ - 64, - { 0xdf, 0x85, 0xf4, 0xa0, 0xb4, 0x33, 0xbd, 0x37, 0x43, 0x3c, 0xd7, 0x97, 0x8c, 0x9b, 0x37, 0xf9, 0xe4, 0x17, 0x29, 0xd8, 0x3a, 0x26, 0x2b, 0x98, 0x46, 0x53, 0x8e, 0x50, 0x39, 0xe6, 0x59, 0x68, 0xb5, 0x95, 0xa4, 0x62, 0x72, 0xbd, 0x5f, 0x4a, 0x2c, 0x3a, 0xbf, 0x89, 0x0a, 0x35, 0x50, 0x8a, 0x5b, 0xcb, 0x4c, 0x29, 0xef, 0xbd, 0x91, 0x02, 0x85, 0x03, 0x83, 0x4c, 0xfa, 0xb2, 0xc0, 0xf9 } -, - /* Prime 2 */ - 64, - { 0xc5, 0x14, 0x59, 0xa6, 0x72, 0xed, 0x8b, 0x72, 0x4c, 0x6a, 0x8f, 0x28, 0x5c, 0xbb, 0x8e, 0xa7, 0x6a, 0x23, 0x93, 0x91, 0x79, 0x28, 0xbe, 0x56, 0xc0, 0xdc, 0xdf, 0xc9, 0x43, 0xc3, 0x0b, 0xda, 0x3c, 0xee, 0xfb, 0x86, 0xdc, 0xc8, 0xc4, 0x55, 0x67, 0x8c, 0xfe, 0x88, 0x25, 0xf3, 0x88, 0x77, 0xa3, 0x72, 0x8a, 0x1f, 0x10, 0x29, 0x1f, 0x54, 0x7b, 0x1e, 0x8b, 0x16, 0x04, 0x83, 0xe5, 0xbb } -, - /* Prime exponent 1 */ - 64, - { 0xb6, 0xba, 0x83, 0xa9, 0x7c, 0xa7, 0x6f, 0x5f, 0xe6, 0x0f, 0xaf, 0x0f, 0xad, 0x5a, 0x97, 0x00, 0x2a, 0x7e, 0xe5, 0x2e, 0x67, 0x1b, 0x1d, 0x38, 0x77, 0x05, 0x87, 0xa9, 0xfe, 0x2b, 0x59, 0x9c, 0x48, 0x15, 0xf5, 0x34, 0xa6, 0x28, 0x39, 0xe6, 0x21, 0x12, 0x45, 0xd2, 0x7a, 0x0d, 0xeb, 0xb1, 0xb0, 0x29, 0x1a, 0x32, 0x8e, 0x52, 0xa2, 0x61, 0x34, 0xec, 0x12, 0x42, 0xb4, 0x0f, 0xbd, 0xc1 } -, - /* Prime exponent 2 */ - 64, - { 0xb9, 0xb1, 0xc6, 0x13, 0x2e, 0xe1, 0x22, 0x6e, 0x6d, 0x10, 0x4e, 0x99, 0x72, 0x5f, 0x0b, 0x38, 0x35, 0xab, 0x15, 0xe5, 0x91, 0x6a, 0xd1, 0x85, 0xbe, 0xad, 0x9f, 0x72, 0xed, 0x95, 0x3f, 0x7a, 0xbf, 0xc5, 0x52, 0x5c, 0xad, 0x75, 0xc2, 0x80, 0xd2, 0x54, 0x28, 0x94, 0xb2, 0x65, 0xb8, 0x65, 0x3a, 0x2d, 0xb7, 0x75, 0x33, 0x6d, 0xfb, 0xe6, 0x47, 0x27, 0xed, 0x57, 0xae, 0xa3, 0x74, 0xf7 } -, - /* Coefficient */ - 64, - { 0x7b, 0x8d, 0x15, 0xa5, 0xdd, 0x28, 0x90, 0xa6, 0x7d, 0x1b, 0x54, 0x9c, 0x93, 0x5f, 0x58, 0x5a, 0x38, 0xda, 0x56, 0xf7, 0xc8, 0x15, 0x5a, 0x51, 0x9d, 0xc8, 0xf1, 0xf6, 0xad, 0xe5, 0x53, 0xd6, 0x37, 0x93, 0xc7, 0x8a, 0x0e, 0xce, 0x8d, 0x53, 0x72, 0x4e, 0x62, 0xae, 0x50, 0x3a, 0xd5, 0x25, 0xbf, 0xaf, 0x10, 0xcf, 0x61, 0x6a, 0x47, 0x73, 0xce, 0x7c, 0xcd, 0x5c, 0x1b, 0x31, 0x51, 0xbd } - -} -, -{{ - "PKCS#1 v1.5 Signature Example 2.1", - /* Message to be signed */ - 158, - { 0xe1, 0xc0, 0xf9, 0x8d, 0x53, 0xf8, 0xf8, 0xb1, 0x41, 0x90, 0x57, 0xd5, 0xb9, 0xb1, 0x0b, 0x07, 0xfe, 0xea, 0xec, 0x32, 0xc0, 0x46, 0x3a, 0x4d, 0x68, 0x38, 0x2f, 0x53, 0x1b, 0xa1, 0xd6, 0xcf, 0xe4, 0xed, 0x38, 0xa2, 0x69, 0x4a, 0x34, 0xb9, 0xc8, 0x05, 0xad, 0xf0, 0x72, 0xff, 0xbc, 0xeb, 0xe2, 0x1d, 0x8d, 0x4b, 0x5c, 0x0e, 0x8c, 0x33, 0x45, 0x2d, 0xd8, 0xf9, 0xc9, 0xbf, 0x45, 0xd1, 0xe6, 0x33, 0x75, 0x11, 0x33, 0x58, 0x82, 0x29, 0xd2, 0x93, 0xc6, 0x49, 0x6b, 0x7c, 0x98, 0x3c, 0x2c, 0x72, 0xbd, 0x21, 0xd3, 0x39, 0x27, 0x2d, 0x78, 0x28, 0xb0, 0xd0, 0x9d, 0x01, 0x0b, 0xba, 0xd3, 0x18, 0xd9, 0x98, 0xf7, 0x04, 0x79, 0x67, 0x33, 0x8a, 0xce, 0xfd, 0x01, 0xe8, 0x74, 0xac, 0xe5, 0xf8, 0x6d, 0x2a, 0x60, 0xf3, 0xb3, 0xca, 0xe1, 0x3f, 0xc5, 0xc6, 0x65, 0x08, 0xcf, 0xb7, 0x23, 0x78, 0xfd, 0xd6, 0xc8, 0xde, 0x24, 0x97, 0x65, 0x10, 0x3c, 0xe8, 0xfe, 0x7c, 0xd3, 0x3a, 0xd0, 0xef, 0x16, 0x86, 0xfe, 0xb2, 0x5e, 0x6a, 0x35, 0xfb, 0x64, 0xe0, 0x96, 0xa4 } -, - /* Signature */ - 128, - { 0x64, 0xac, 0x09, 0x39, 0x71, 0xf8, 0xf0, 0x96, 0xa4, 0xc1, 0xd4, 0xa5, 0x43, 0x66, 0x2a, 0x2e, 0x5a, 0x12, 0x81, 0xc9, 0x50, 0x98, 0x7d, 0xe8, 0x98, 0x70, 0x7f, 0x02, 0x9c, 0x15, 0x9b, 0xd8, 0x32, 0xca, 0xc5, 0x5d, 0x91, 0x36, 0xe0, 0xe9, 0xb4, 0xa8, 0x0b, 0xf6, 0xf2, 0x1b, 0x68, 0xcf, 0x97, 0x70, 0xa6, 0x34, 0x9a, 0xe5, 0x1e, 0x7f, 0x09, 0xdb, 0xda, 0x9d, 0x59, 0xc4, 0x58, 0x37, 0x37, 0x47, 0x2d, 0x4d, 0x65, 0x32, 0xc7, 0x17, 0x7e, 0xe9, 0x81, 0x08, 0xd2, 0xcf, 0x42, 0xcd, 0x08, 0x5a, 0xbb, 0x49, 0x22, 0xeb, 0x29, 0xd9, 0x6f, 0x3d, 0x0f, 0x6b, 0x1d, 0x0d, 0x43, 0xc7, 0x39, 0xcc, 0xf1, 0xba, 0x65, 0x16, 0x75, 0xe1, 0x96, 0x8b, 0x50, 0x7d, 0x51, 0x90, 0x2f, 0x38, 0xcd, 0xec, 0x0b, 0x61, 0x32, 0x72, 0x90, 0x45, 0x32, 0x5f, 0xc1, 0xfb, 0x8f, 0xd5, 0x58, 0xe8 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Signature Example 2.2", - /* Message to be signed */ - 177, - { 0xc1, 0x11, 0x46, 0x4e, 0x00, 0x2e, 0x4e, 0xc6, 0x18, 0xa8, 0xe2, 0x63, 0xdb, 0xcc, 0xa9, 0x1f, 0xb1, 0x8a, 0x00, 0xa1, 0x8b, 0x44, 0x0c, 0x4b, 0x55, 0x97, 0xbe, 0xe7, 0xdb, 0x2a, 0xed, 0xa8, 0x31, 0xe6, 0x21, 0xfc, 0xac, 0x8d, 0xd8, 0x1c, 0xee, 0x35, 0x03, 0x24, 0x2b, 0x33, 0xb0, 0xda, 0xa9, 0x87, 0xfe, 0x2f, 0x54, 0x93, 0xad, 0x2d, 0x06, 0xa1, 0x50, 0x07, 0x59, 0x00, 0x40, 0xce, 0x3c, 0x22, 0x77, 0x64, 0x2f, 0xd2, 0x7f, 0x3f, 0x25, 0x5e, 0x3d, 0x98, 0xd8, 0x9d, 0xfa, 0xeb, 0x86, 0xbe, 0x34, 0xe0, 0xb8, 0xfb, 0xb9, 0x35, 0xfb, 0x92, 0x85, 0x60, 0xfa, 0x29, 0x2d, 0x26, 0x34, 0x62, 0x5a, 0x50, 0x7d, 0xd5, 0x80, 0xa8, 0x91, 0x24, 0xb9, 0x21, 0x29, 0x3e, 0x8d, 0xfe, 0xdd, 0xc2, 0x81, 0xd7, 0x9e, 0xb3, 0xa5, 0x69, 0xd5, 0x9e, 0x0d, 0xb8, 0x01, 0x3e, 0x53, 0xf7, 0xd4, 0xc2, 0xf9, 0x6e, 0x5f, 0x2e, 0xc2, 0x7f, 0xd8, 0xdd, 0xb0, 0x18, 0x25, 0xd1, 0x7f, 0xca, 0x40, 0x6d, 0xaa, 0x62, 0x24, 0xc7, 0x60, 0x6d, 0x2c, 0x91, 0x52, 0x82, 0x09, 0x6a, 0x78, 0x05, 0x5a, 0x49, 0x62, 0x15, 0x37, 0xb4, 0xf0, 0x25, 0xa6, 0xe5, 0xb2, 0x12, 0x9b, 0xc8, 0xc1, 0xa4, 0x07 } -, - /* Signature */ - 128, - { 0x6e, 0x7e, 0xaa, 0xd8, 0x04, 0x94, 0x5e, 0xb0, 0x46, 0x70, 0xdd, 0x86, 0x76, 0xb7, 0x05, 0x7d, 0x03, 0xac, 0x3e, 0x22, 0x64, 0x65, 0xb1, 0xfb, 0x84, 0x03, 0xe6, 0xae, 0x79, 0x83, 0xe0, 0xa4, 0x6a, 0x89, 0xa4, 0xeb, 0x32, 0xbd, 0xc8, 0xe7, 0xae, 0x5a, 0x53, 0xd4, 0x8a, 0xa6, 0x4b, 0xc9, 0xc3, 0xdb, 0xc8, 0xcf, 0x9c, 0xd6, 0xdc, 0x6a, 0x68, 0xfc, 0xea, 0xe9, 0xe2, 0x9f, 0x47, 0x45, 0xfa, 0x49, 0xe1, 0x8d, 0x18, 0x4d, 0xc5, 0xd2, 0x6c, 0x4f, 0xeb, 0x35, 0x1f, 0xb4, 0xb2, 0x28, 0xc4, 0xc1, 0x8c, 0xab, 0xdb, 0xde, 0x86, 0x01, 0x72, 0x4a, 0xe3, 0x80, 0x3d, 0xb3, 0x05, 0xf2, 0xa0, 0x76, 0xfa, 0x8a, 0x57, 0xf4, 0x61, 0x0b, 0x8a, 0x6e, 0x0e, 0xd4, 0x35, 0x75, 0xbe, 0x5d, 0x5b, 0xfc, 0x16, 0x30, 0x47, 0x9d, 0xf3, 0xbc, 0xbc, 0x51, 0x51, 0x77, 0xaf, 0xe4, 0x99, 0x4a } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.3", - /* Message to be signed */ - 65, - { 0x29, 0xb8, 0x5b, 0x14, 0xb2, 0xda, 0x94, 0x7a, 0x4c, 0x3a, 0xd1, 0xe5, 0x93, 0x7d, 0xa1, 0x92, 0xc6, 0x05, 0x08, 0x65, 0xaf, 0x95, 0x04, 0xa5, 0x44, 0x53, 0x70, 0xe4, 0x3d, 0x3a, 0x8d, 0xa5, 0xd3, 0x55, 0xfd, 0x58, 0x76, 0x6b, 0x25, 0x43, 0xac, 0x6f, 0x93, 0x10, 0x87, 0x83, 0xc1, 0x3f, 0xf2, 0x8b, 0x2b, 0xe5, 0x60, 0x83, 0xf0, 0x29, 0x82, 0x39, 0xe0, 0xee, 0x96, 0x81, 0xee, 0x47, 0xc6 } -, - /* Signature */ - 128, - { 0x80, 0xb3, 0x8c, 0xe7, 0x35, 0x12, 0x6c, 0x85, 0x45, 0xd9, 0x1d, 0x18, 0xec, 0x90, 0x37, 0x65, 0x4d, 0x46, 0xe4, 0xf3, 0xc5, 0x1a, 0x6b, 0x86, 0x18, 0xe1, 0x5f, 0x72, 0xcd, 0x20, 0x75, 0x00, 0xa4, 0x70, 0x01, 0x75, 0x77, 0xd0, 0xa8, 0xc5, 0x5a, 0x2b, 0xa3, 0x34, 0x38, 0x3f, 0x1f, 0x8d, 0x99, 0xfc, 0xe2, 0x46, 0x0b, 0x32, 0x97, 0xbc, 0x03, 0x7e, 0xf6, 0x4a, 0xc4, 0xa3, 0x09, 0x8c, 0x6a, 0xaa, 0x24, 0xa4, 0xd0, 0x14, 0x4a, 0xf1, 0x02, 0xd0, 0xdd, 0xa1, 0x7e, 0x07, 0xdc, 0x69, 0x59, 0x23, 0x93, 0x2e, 0x56, 0x8a, 0xda, 0x00, 0xdc, 0x4f, 0x7d, 0xbf, 0xbc, 0xde, 0xc4, 0x3c, 0xc9, 0x08, 0x38, 0x80, 0x17, 0xd2, 0xee, 0xf0, 0x4e, 0x60, 0xdf, 0xe4, 0xd5, 0x73, 0x40, 0xfa, 0xb9, 0x16, 0xe2, 0xb8, 0x11, 0x24, 0x4c, 0xb1, 0xe4, 0xa5, 0x52, 0x38, 0x6f, 0xe3, 0xed, 0x4c } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.4", - /* Message to be signed */ - 93, - { 0xd3, 0xb7, 0xaa, 0xd3, 0x7a, 0x48, 0x90, 0xe0, 0x36, 0x5b, 0x86, 0xc7, 0xda, 0x94, 0x91, 0xe7, 0x3c, 0xdf, 0x55, 0x5d, 0x1b, 0x02, 0xb4, 0x51, 0x81, 0x6d, 0xc5, 0x2f, 0x96, 0x30, 0xd5, 0x90, 0xde, 0x83, 0xa5, 0xc9, 0x39, 0x61, 0x01, 0x25, 0x22, 0xdf, 0xf6, 0xdb, 0xbb, 0x9c, 0xdb, 0x0e, 0x71, 0xae, 0x51, 0x40, 0x19, 0x64, 0xaf, 0x18, 0x90, 0xe8, 0x93, 0x25, 0xdb, 0xd6, 0x26, 0xf2, 0xda, 0x01, 0x34, 0x58, 0xe3, 0x9e, 0xec, 0xa5, 0x83, 0xe8, 0x9e, 0x4c, 0x08, 0xe5, 0xd4, 0x12, 0xbe, 0x49, 0x84, 0x95, 0x88, 0x6e, 0x05, 0x51, 0xcf, 0xe7, 0x42, 0xb8, 0xb5 } -, - /* Signature */ - 128, - { 0x9d, 0x8a, 0x88, 0x89, 0xa3, 0x11, 0xb4, 0x86, 0xcb, 0xe2, 0x22, 0x57, 0x03, 0xf5, 0xd4, 0xae, 0x2a, 0x54, 0xc2, 0xbc, 0xaa, 0xad, 0x06, 0xfe, 0x76, 0x48, 0xb9, 0xe2, 0xd8, 0x5e, 0xdd, 0xa1, 0xa0, 0x7d, 0x85, 0x6d, 0x6a, 0xe9, 0xbd, 0x5c, 0xc1, 0xe5, 0x15, 0x32, 0x66, 0xec, 0x7f, 0x1e, 0x1d, 0xf3, 0xd9, 0x29, 0xcc, 0x44, 0x70, 0x0f, 0xac, 0x92, 0x64, 0x58, 0x41, 0x4c, 0x28, 0x41, 0xda, 0x83, 0x32, 0x8e, 0x81, 0xe0, 0xb9, 0xd6, 0xc3, 0x88, 0x5e, 0x76, 0x73, 0x70, 0xad, 0x5c, 0xf1, 0xf5, 0x76, 0xd9, 0xdc, 0xe3, 0x48, 0xca, 0xec, 0x5e, 0x64, 0x43, 0xe0, 0xae, 0xb7, 0xc3, 0xf7, 0x2b, 0x7d, 0xd2, 0x53, 0x66, 0x70, 0x23, 0xb9, 0xa4, 0x77, 0xab, 0x34, 0xdf, 0x8f, 0x20, 0x67, 0xe2, 0x25, 0xad, 0xcb, 0x73, 0xee, 0x11, 0xe1, 0x59, 0xeb, 0x64, 0x91, 0x47, 0xd6, 0x02 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.5", - /* Message to be signed */ - 82, - { 0xf6, 0x58, 0x18, 0x8c, 0x8f, 0x9d, 0xe6, 0x0b, 0x5e, 0x99, 0xa2, 0x9f, 0x52, 0xd3, 0xb8, 0x89, 0x20, 0x1b, 0x30, 0xd4, 0x64, 0xc3, 0xb7, 0x27, 0x92, 0xa3, 0x02, 0x09, 0x5d, 0xc1, 0xe7, 0x7d, 0x45, 0xe9, 0x4f, 0x5d, 0xab, 0x73, 0xdb, 0xb3, 0x13, 0x54, 0x38, 0x57, 0xff, 0x91, 0xdb, 0xf4, 0x73, 0xdf, 0xc1, 0x45, 0xd7, 0x3b, 0xd5, 0x06, 0x20, 0x75, 0xd1, 0x92, 0xa3, 0xfb, 0xf4, 0xa1, 0x33, 0xe7, 0xe5, 0x68, 0xdf, 0x20, 0xb8, 0xcf, 0xf7, 0x7b, 0x3a, 0xf6, 0x87, 0xaa, 0x22, 0x55, 0x9e, 0xc1 } -, - /* Signature */ - 128, - { 0x0a, 0x95, 0xa4, 0x4f, 0x62, 0x74, 0xe7, 0x4c, 0xec, 0x45, 0x17, 0x96, 0xaf, 0x56, 0x88, 0xd4, 0xbe, 0x01, 0x08, 0x93, 0xfa, 0xae, 0x27, 0xd4, 0x90, 0xf4, 0x77, 0x1b, 0x00, 0x3f, 0x70, 0x46, 0xcc, 0xcd, 0x41, 0x9f, 0xc8, 0x19, 0xd7, 0x33, 0x19, 0x55, 0xf4, 0x1e, 0xac, 0x93, 0x39, 0xf5, 0x46, 0xc5, 0x84, 0xa8, 0xb4, 0x2a, 0x5a, 0xc6, 0x32, 0x90, 0x58, 0x3f, 0xf3, 0xeb, 0x6b, 0x29, 0xca, 0xdc, 0x75, 0x4a, 0xe5, 0x8d, 0x5a, 0x56, 0x37, 0xb6, 0x60, 0x97, 0x96, 0xe8, 0x05, 0x51, 0x73, 0xff, 0x20, 0xa9, 0xcc, 0xe4, 0x92, 0xfd, 0x78, 0x37, 0x46, 0x86, 0x15, 0xe8, 0x41, 0x08, 0x87, 0xf0, 0xb4, 0xa5, 0x9f, 0xf2, 0x52, 0xa8, 0x25, 0x97, 0x76, 0xc8, 0xff, 0xda, 0xa6, 0x7c, 0x87, 0xdf, 0xf8, 0x98, 0x3a, 0xe6, 0x79, 0xd1, 0xde, 0x22, 0xea, 0x15, 0x8d, 0x48, 0xf6, 0x8b } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.6", - /* Message to be signed */ - 128, - { 0x31, 0xae, 0x5f, 0x83, 0xa0, 0xfb, 0x3a, 0xc9, 0x25, 0x5f, 0xfa, 0x43, 0x5f, 0x70, 0xe2, 0xab, 0x65, 0x55, 0x66, 0xe5, 0xfb, 0x8b, 0x78, 0xb8, 0x02, 0xc1, 0x87, 0xcf, 0xf1, 0xc5, 0xe4, 0x0f, 0xed, 0x06, 0x97, 0x8c, 0x5d, 0x59, 0x76, 0xeb, 0x4c, 0xa7, 0x75, 0x80, 0x63, 0x99, 0xa6, 0xfc, 0x4d, 0xb5, 0x0c, 0x1f, 0x88, 0x66, 0x1b, 0xa6, 0x8a, 0xbc, 0x21, 0xfb, 0x2c, 0xcd, 0x53, 0x7f, 0x50, 0x18, 0xf3, 0x6e, 0xd1, 0xf7, 0xd4, 0x53, 0x83, 0xfd, 0x46, 0x9e, 0x77, 0xba, 0xb3, 0xe8, 0xa9, 0x5d, 0xfa, 0x1b, 0x94, 0x1e, 0x43, 0x0d, 0xde, 0xc5, 0x52, 0xdc, 0xd8, 0x2f, 0x5d, 0x10, 0xd2, 0x9c, 0xd1, 0x0a, 0x22, 0xd1, 0x7c, 0xe2, 0x42, 0x59, 0x28, 0xff, 0x5d, 0x07, 0x10, 0xdc, 0xe7, 0xd9, 0xf8, 0x3b, 0x12, 0xe0, 0x4c, 0x1a, 0x01, 0x59, 0xc2, 0x71, 0x76, 0xe0, 0x4a, 0xcc } -, - /* Signature */ - 128, - { 0x3f, 0x11, 0xea, 0x73, 0x9f, 0x32, 0x9c, 0x9d, 0x40, 0x04, 0x60, 0x34, 0xb6, 0xc0, 0xcf, 0xce, 0xb4, 0x9b, 0xc3, 0x20, 0x1a, 0x5f, 0x25, 0xea, 0xf5, 0x01, 0x5a, 0xed, 0xed, 0x02, 0x18, 0x9c, 0xe0, 0xb0, 0xcf, 0xde, 0x19, 0x12, 0x5b, 0xd2, 0x88, 0xb7, 0xd0, 0xc0, 0x62, 0x32, 0x1a, 0x5b, 0xdc, 0x2c, 0xfa, 0x42, 0x26, 0xf5, 0x10, 0x4a, 0x1f, 0xba, 0xeb, 0xbe, 0x7f, 0x72, 0xf5, 0xf7, 0x92, 0x7e, 0x1e, 0xae, 0x26, 0xfd, 0xc5, 0xba, 0x92, 0xf2, 0xd3, 0xf8, 0x69, 0xeb, 0xc3, 0x2d, 0x90, 0x18, 0xdd, 0x04, 0xed, 0xe8, 0x6d, 0xe5, 0xc4, 0x54, 0xf1, 0xf7, 0xa1, 0xb2, 0xe2, 0xd1, 0x94, 0x0a, 0xac, 0xae, 0x27, 0x79, 0x63, 0x55, 0xfe, 0x18, 0xac, 0x80, 0x97, 0x53, 0x53, 0x92, 0x9a, 0xc6, 0xa8, 0x38, 0x45, 0x8b, 0x5d, 0x9d, 0xc7, 0x57, 0x6e, 0x38, 0x87, 0xee, 0x7b, 0xca } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.7", - /* Message to be signed */ - 256, - { 0x96, 0xff, 0x99, 0xf1, 0x50, 0x60, 0xc9, 0x73, 0xa6, 0x5b, 0x69, 0xa8, 0xb5, 0xb6, 0x3a, 0xdb, 0x33, 0x25, 0x32, 0x0d, 0xa9, 0x37, 0x29, 0x75, 0x84, 0xad, 0x4f, 0xad, 0x5c, 0x3c, 0x74, 0x69, 0x01, 0x9e, 0x9c, 0xf7, 0x2a, 0xcb, 0x31, 0x5f, 0x1e, 0x49, 0x19, 0x27, 0xbb, 0xa1, 0x94, 0x87, 0x55, 0x82, 0x3e, 0xb0, 0x7e, 0x3f, 0x20, 0xac, 0xdf, 0x78, 0x65, 0x3c, 0xae, 0x45, 0x0e, 0x47, 0xbc, 0x54, 0xba, 0xf8, 0xca, 0x11, 0x67, 0xa5, 0x05, 0x08, 0x44, 0xe0, 0x22, 0x22, 0x0e, 0xe6, 0x65, 0x8a, 0x8d, 0xdd, 0x95, 0x63, 0x2e, 0x9a, 0xdc, 0x1a, 0x6c, 0x14, 0x37, 0x9c, 0x1c, 0x5a, 0xe5, 0xa0, 0xce, 0x5d, 0xc4, 0x02, 0x08, 0x09, 0x62, 0x2a, 0xfd, 0xec, 0xf8, 0x1f, 0x18, 0xa5, 0x1e, 0x28, 0x66, 0x6d, 0x02, 0xb1, 0xdc, 0xda, 0x0a, 0x27, 0xb8, 0xc3, 0xd2, 0xc2, 0x7b, 0x2c, 0x07, 0xb3, 0x80, 0x22, 0x00, 0x01, 0x7a, 0x7c, 0x12, 0x4a, 0x43, 0x37, 0xcc, 0x4b, 0x6e, 0xa2, 0xae, 0xa7, 0x5c, 0x68, 0xb4, 0x40, 0xe3, 0x79, 0x47, 0xe3, 0x61, 0x9b, 0xcf, 0xee, 0x05, 0x5b, 0xb2, 0xed, 0xab, 0xc4, 0x24, 0x49, 0x07, 0xe0, 0x48, 0x3d, 0xd3, 0xa1, 0x7d, 0x8e, 0xdf, 0xf3, 0xa6, 0x50, 0x29, 0x3f, 0xd4, 0xab, 0xf5, 0xc4, 0x5d, 0x1a, 0x5b, 0x6c, 0x54, 0x02, 0xba, 0x2b, 0x81, 0xb7, 0xb0, 0xe0, 0xc9, 0x5e, 0xe9, 0x49, 0xb2, 0xa2, 0x38, 0xc1, 0x99, 0x56, 0x20, 0x6c, 0x12, 0x4e, 0x0c, 0xd9, 0xc2, 0x46, 0x20, 0xb3, 0x6a, 0x83, 0xbf, 0x93, 0xb9, 0x6e, 0xf2, 0x04, 0xbd, 0xe5, 0x31, 0x6c, 0x1f, 0x53, 0x27, 0xc0, 0xa6, 0x21, 0xec, 0xce, 0x20, 0x93, 0xc0, 0x65, 0x2d, 0xdf, 0x32, 0x17, 0x68, 0xd7, 0x45, 0x02, 0xf1, 0x90, 0x85, 0x29, 0x62, 0x9b, 0xab, 0x68 } -, - /* Signature */ - 128, - { 0x18, 0x3f, 0x85, 0x3d, 0x0d, 0x03, 0x62, 0x18, 0x70, 0xe3, 0xba, 0x58, 0x68, 0x50, 0xc5, 0xea, 0x59, 0xfc, 0x4e, 0x9a, 0xcf, 0x37, 0x94, 0xb9, 0xad, 0x59, 0xa1, 0xbb, 0x80, 0x18, 0x1e, 0x77, 0xb1, 0x11, 0xd6, 0x64, 0x86, 0x47, 0xe1, 0x39, 0xa3, 0x9e, 0xc0, 0x4f, 0x86, 0x18, 0x74, 0x91, 0xe7, 0x7b, 0x4d, 0x75, 0xc0, 0x60, 0x79, 0x5b, 0xf7, 0x27, 0x08, 0x46, 0xd3, 0x96, 0xe0, 0xbf, 0xea, 0x83, 0x15, 0x79, 0x5e, 0x79, 0xd7, 0x6a, 0x91, 0x9e, 0xa7, 0x6b, 0x06, 0xee, 0xc1, 0x3b, 0xaf, 0x4c, 0xe8, 0xaf, 0xe1, 0xe3, 0x4b, 0xc2, 0x24, 0x57, 0xd7, 0xb7, 0x99, 0x2e, 0x08, 0x42, 0xef, 0xad, 0xe1, 0x79, 0xb0, 0xae, 0xda, 0xcc, 0xfb, 0xe2, 0xd2, 0x3d, 0x3e, 0xb3, 0x14, 0xe1, 0xde, 0x91, 0xc8, 0x71, 0xb9, 0xdb, 0x5a, 0xbf, 0xfb, 0x17, 0x47, 0x7f, 0xba, 0x23, 0x3a, 0x06 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.8", - /* Message to be signed */ - 179, - { 0x3a, 0x17, 0x6c, 0x79, 0x3a, 0x54, 0x6e, 0x2d, 0x27, 0x6f, 0xb8, 0xff, 0xc3, 0x28, 0x16, 0x3b, 0x49, 0x49, 0x97, 0xa5, 0x30, 0x2a, 0xae, 0x2e, 0x50, 0x45, 0xa2, 0xa2, 0x06, 0x87, 0xea, 0x6d, 0x1f, 0x18, 0x1c, 0x6a, 0xbf, 0xe6, 0x09, 0x0c, 0x8d, 0xc4, 0x02, 0x56, 0xdb, 0x3d, 0xe0, 0x83, 0x22, 0x64, 0x7f, 0xb7, 0x95, 0xbb, 0xa1, 0x71, 0x3f, 0xb5, 0x7e, 0x33, 0xd5, 0x3e, 0x0e, 0x13, 0xbe, 0xda, 0xc6, 0xa6, 0x58, 0xad, 0x4a, 0xb4, 0x91, 0x22, 0x38, 0x81, 0x19, 0x8d, 0xf2, 0x93, 0x67, 0xfa, 0xad, 0xe8, 0xbe, 0x9f, 0xca, 0xa4, 0xe4, 0x83, 0xf7, 0xb7, 0xf3, 0xdc, 0x7c, 0xbb, 0xf9, 0x7a, 0x17, 0xaa, 0xd8, 0x8c, 0x26, 0xcf, 0xc6, 0x41, 0x0f, 0x94, 0x5b, 0x54, 0xfc, 0x53, 0xdb, 0x55, 0xac, 0x80, 0x3d, 0x8b, 0x73, 0x69, 0x1b, 0x14, 0x84, 0x84, 0x7d, 0x7f, 0x3b, 0x7e, 0x93, 0x94, 0xe5, 0x5f, 0x0a, 0x51, 0xfe, 0x61, 0xae, 0x84, 0x52, 0x3c, 0x94, 0xb2, 0x2e, 0x82, 0x39, 0x6d, 0xb6, 0xcf, 0xac, 0xb7, 0x2e, 0x0e, 0xe4, 0x94, 0xaa, 0x0f, 0x1f, 0xa5, 0x93, 0x12, 0x54, 0x43, 0xae, 0x15, 0x55, 0xa6, 0xa9, 0x33, 0xfa, 0xce, 0x00, 0x74, 0x79, 0x1d, 0xc2, 0xc2, 0x92, 0x42, 0xeb } -, - /* Signature */ - 128, - { 0x41, 0x3c, 0x92, 0x23, 0xa2, 0xe9, 0xb1, 0x22, 0xcd, 0x87, 0x25, 0x77, 0xe5, 0x2f, 0x31, 0x3d, 0x41, 0xda, 0xc7, 0x9a, 0x26, 0xcb, 0x10, 0x33, 0xda, 0x0b, 0x6f, 0xcc, 0x4b, 0x48, 0x21, 0x07, 0x74, 0x4b, 0xf4, 0x90, 0xfa, 0x79, 0x8d, 0xcc, 0xd0, 0xcb, 0xd1, 0x18, 0xef, 0x39, 0xc0, 0xf5, 0x59, 0xd8, 0x7b, 0x89, 0x33, 0x5d, 0xb0, 0x9b, 0xe7, 0x70, 0x0f, 0xb0, 0x9f, 0xdb, 0xd3, 0x40, 0x40, 0xa0, 0x0b, 0xe5, 0xca, 0x42, 0x88, 0x34, 0x77, 0xb0, 0x6e, 0x4e, 0x10, 0xa7, 0xcb, 0x11, 0x76, 0x8f, 0xcb, 0x02, 0xc3, 0x4f, 0xb1, 0x06, 0xe5, 0x22, 0x86, 0x0d, 0x10, 0x69, 0x39, 0x06, 0x26, 0x0f, 0x43, 0xd9, 0x06, 0x12, 0x99, 0x03, 0x93, 0xa8, 0xff, 0xac, 0x9f, 0xd7, 0x0c, 0xa3, 0x78, 0x29, 0x11, 0x1e, 0xeb, 0xa6, 0xf3, 0xde, 0xe5, 0x4e, 0xf1, 0xc1, 0x62, 0x68, 0xb3, 0x3e } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.9", - /* Message to be signed */ - 197, - { 0x06, 0x8a, 0x99, 0x1b, 0x32, 0xb6, 0x76, 0xc6, 0x4b, 0x89, 0x8c, 0x67, 0xe1, 0x13, 0x72, 0x82, 0xb4, 0x37, 0x11, 0xb0, 0xd0, 0x67, 0x1c, 0x24, 0x7d, 0x9f, 0x7c, 0x48, 0xf5, 0x04, 0x3e, 0x4f, 0xc2, 0x06, 0xdc, 0x65, 0xaf, 0x89, 0x06, 0xf2, 0x52, 0xf0, 0x24, 0x52, 0x05, 0xea, 0x08, 0x43, 0x23, 0xd4, 0x27, 0x6b, 0xe5, 0xaa, 0x0f, 0xc5, 0xaf, 0x9c, 0x3f, 0x34, 0xb2, 0xfd, 0x66, 0x34, 0xdf, 0x57, 0x2f, 0xc3, 0x13, 0xd2, 0x73, 0xb5, 0x3e, 0x9e, 0x36, 0xb9, 0x46, 0xe7, 0xe6, 0x72, 0xf9, 0x8d, 0x85, 0x7d, 0x7e, 0xdd, 0xd3, 0xdd, 0x04, 0x39, 0x31, 0x32, 0xf4, 0x61, 0xf2, 0x2c, 0x99, 0x00, 0x26, 0x16, 0x6f, 0x38, 0x5b, 0xe1, 0x59, 0x5c, 0x7f, 0x23, 0xf8, 0x9f, 0xf5, 0x7e, 0x05, 0xa7, 0xbe, 0x28, 0x5d, 0x10, 0x56, 0x15, 0x48, 0x5f, 0x35, 0x6a, 0xba, 0xb1, 0xff, 0x2a, 0xb9, 0x27, 0xd6, 0x09, 0x95, 0x2a, 0x62, 0x7e, 0x46, 0x8c, 0xa7, 0x59, 0x0a, 0xcb, 0x52, 0x13, 0xf4, 0x31, 0x39, 0xf8, 0xe2, 0xc9, 0xd4, 0xd1, 0x7c, 0x6b, 0xd7, 0x91, 0x4e, 0x53, 0xf0, 0x2f, 0xd1, 0x9a, 0x13, 0x1f, 0xf4, 0x9c, 0xd2, 0x5e, 0xde, 0x8f, 0x41, 0x8a, 0x88, 0x53, 0x0a, 0x82, 0x39, 0x88, 0x7f, 0x0f, 0xc7, 0x97, 0xed, 0xb5, 0x04, 0x64, 0x79, 0x64, 0xbf, 0x31, 0xca, 0xaf, 0x08, 0x0d, 0x58, 0x17, 0xa0 } -, - /* Signature */ - 128, - { 0x57, 0x5d, 0xa9, 0xe9, 0xbe, 0xfc, 0xa1, 0x82, 0x95, 0x46, 0xe8, 0x29, 0x38, 0x15, 0x00, 0x11, 0x32, 0x03, 0x0e, 0x74, 0x9c, 0xa5, 0x10, 0x88, 0xf1, 0x68, 0xbd, 0x15, 0x0b, 0x13, 0x94, 0xc7, 0xac, 0xd5, 0x97, 0x8b, 0xca, 0x03, 0xf7, 0xb9, 0xd9, 0x2a, 0x29, 0xb8, 0xe2, 0x85, 0x6b, 0x0d, 0xa0, 0x7f, 0x0b, 0xb1, 0x5c, 0x0b, 0x33, 0xe0, 0x54, 0x87, 0x99, 0x1a, 0xd9, 0x7a, 0x81, 0x2d, 0xc9, 0x04, 0xaa, 0xf0, 0xfd, 0x1e, 0x38, 0x7e, 0xf1, 0xc2, 0x70, 0xc6, 0x86, 0x8d, 0x3e, 0xe1, 0xc6, 0x11, 0x57, 0x7b, 0xc4, 0xd0, 0x7f, 0xf4, 0x56, 0xb2, 0x43, 0x98, 0x32, 0x90, 0x8a, 0x3d, 0xcc, 0x4f, 0xc0, 0x99, 0x04, 0x72, 0xfd, 0xa3, 0xcc, 0x61, 0x11, 0x93, 0x0b, 0x99, 0x79, 0x5d, 0x60, 0xc0, 0xe3, 0x78, 0x88, 0xe8, 0x7c, 0xe0, 0x0b, 0xbf, 0x3c, 0x1c, 0xf3, 0x07, 0xf9, 0xe1 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.10", - /* Message to be signed */ - 88, - { 0xd6, 0x83, 0x9e, 0xe6, 0xd0, 0x74, 0x50, 0x32, 0x7e, 0x09, 0xa0, 0x3e, 0x1e, 0xc2, 0x80, 0xe1, 0xc8, 0xd1, 0x15, 0x00, 0xdc, 0x39, 0x0a, 0x49, 0xa9, 0xc9, 0x82, 0x87, 0x49, 0xc3, 0xe9, 0xa4, 0xbe, 0xe2, 0xba, 0x57, 0x6f, 0x6d, 0x12, 0x17, 0xa8, 0xe7, 0x85, 0x4a, 0x90, 0x7e, 0xeb, 0x93, 0xdf, 0xff, 0x92, 0x30, 0x8a, 0xd0, 0xd9, 0x4e, 0x2b, 0x38, 0x1f, 0x92, 0xb0, 0xe8, 0x4a, 0x47, 0x1b, 0xf1, 0xf3, 0x7a, 0x68, 0xe9, 0x65, 0xf6, 0x58, 0x59, 0xd1, 0xfd, 0xfd, 0x6f, 0xea, 0x84, 0x40, 0x79, 0xc4, 0x03, 0x70, 0xdc, 0xea, 0xe2 } -, - /* Signature */ - 128, - { 0xa7, 0xc5, 0xf6, 0xd0, 0xde, 0x9c, 0xf8, 0xf4, 0x17, 0x37, 0xf2, 0x3a, 0xe3, 0xe8, 0xcf, 0x60, 0x9a, 0xeb, 0xcf, 0x22, 0xd5, 0xde, 0x12, 0x13, 0xd9, 0x57, 0x3c, 0xb9, 0x44, 0x03, 0xf8, 0x9c, 0x0f, 0x70, 0x88, 0xff, 0xfc, 0x61, 0x10, 0x6f, 0xa6, 0x09, 0xc7, 0x37, 0x1a, 0x8d, 0x7e, 0x1b, 0xcd, 0x22, 0x1b, 0xc1, 0xad, 0x94, 0x91, 0x2f, 0xab, 0xf2, 0xff, 0xc0, 0x2f, 0x84, 0x84, 0x56, 0x4c, 0x22, 0x5c, 0x06, 0x9b, 0xfc, 0x6d, 0xa9, 0xf3, 0xf9, 0xf4, 0x97, 0x4e, 0x08, 0xe1, 0xfe, 0x56, 0xf7, 0x48, 0xff, 0x79, 0x05, 0x97, 0x90, 0x6a, 0x95, 0x4e, 0x38, 0x37, 0x43, 0xa3, 0x7e, 0x57, 0x5f, 0xef, 0x07, 0x4f, 0x06, 0x0f, 0x3d, 0xd1, 0x5b, 0x5e, 0xe0, 0xf9, 0x4d, 0xba, 0x69, 0xd8, 0x6c, 0x99, 0x22, 0x3f, 0xa9, 0xc3, 0xa6, 0x1a, 0x8c, 0xb2, 0xaf, 0x2f, 0xab, 0x1e, 0x04 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.11", - /* Message to be signed */ - 33, - { 0x33, 0x84, 0x9c, 0x67, 0xdf, 0x9a, 0x6f, 0xfa, 0xc3, 0xda, 0x90, 0xa8, 0xcd, 0x31, 0x73, 0x1a, 0x02, 0x97, 0xb9, 0xd6, 0x01, 0x0a, 0x03, 0x32, 0x0f, 0x88, 0x45, 0x03, 0x5f, 0xc3, 0x43, 0x09, 0xad } -, - /* Signature */ - 128, - { 0x1b, 0x87, 0x05, 0x1f, 0x15, 0x91, 0xc8, 0xae, 0x7e, 0xe3, 0xcb, 0x24, 0x26, 0x70, 0x39, 0xa7, 0x28, 0x40, 0x5d, 0xbf, 0x23, 0x1c, 0xaf, 0x21, 0xf3, 0x24, 0x7f, 0x05, 0x85, 0x8b, 0x2a, 0x51, 0x65, 0x0b, 0x81, 0xbc, 0x53, 0x77, 0x86, 0x5e, 0x4c, 0x1e, 0x8f, 0xd0, 0x36, 0x41, 0x52, 0xa1, 0x6b, 0xc5, 0x8f, 0x7d, 0x2a, 0xc0, 0x1c, 0xa6, 0x79, 0xcc, 0x49, 0xdd, 0x04, 0x89, 0x03, 0xd5, 0x5a, 0xd0, 0x5f, 0x10, 0x2c, 0x74, 0xb3, 0x60, 0x1f, 0x25, 0xad, 0x30, 0x62, 0x40, 0x25, 0xc3, 0x0b, 0x6f, 0x0f, 0x79, 0x11, 0xfc, 0x22, 0x45, 0x8e, 0x5d, 0x43, 0x5f, 0x38, 0x8e, 0x3f, 0xbc, 0x49, 0x5f, 0xa0, 0xc6, 0x10, 0xc1, 0x29, 0x8f, 0x82, 0x1d, 0xa5, 0x38, 0x40, 0x3a, 0x93, 0x36, 0x4d, 0x2e, 0xab, 0xf1, 0xe3, 0xb3, 0x2f, 0x81, 0x10, 0xa7, 0xe0, 0x3e, 0x37, 0x2e, 0xcb, 0xc5 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.12", - /* Message to be signed */ - 77, - { 0xb3, 0xda, 0xba, 0xca, 0x20, 0x59, 0xa7, 0x0e, 0x25, 0xcb, 0xdd, 0xf4, 0xaa, 0x59, 0x25, 0x99, 0x57, 0x54, 0xac, 0xe4, 0x3c, 0x5d, 0x60, 0x36, 0x40, 0x48, 0x9a, 0xf4, 0x8f, 0xea, 0x6e, 0xdc, 0x4e, 0x19, 0xcb, 0xee, 0xa2, 0xc0, 0xdb, 0x62, 0xae, 0x0a, 0x10, 0x4c, 0x72, 0xe4, 0xcd, 0x56, 0xcb, 0x53, 0x2f, 0x4f, 0xe5, 0x77, 0xb3, 0x6a, 0x81, 0x98, 0xb4, 0x87, 0x9d, 0x7f, 0xf8, 0x04, 0x26, 0x90, 0xf6, 0x62, 0x77, 0x3f, 0x3d, 0x63, 0x93, 0xf2, 0x58, 0x98, 0xd2 } -, - /* Signature */ - 128, - { 0x26, 0xf1, 0x37, 0x70, 0x26, 0x3f, 0xc5, 0xbd, 0xbe, 0xad, 0xf8, 0x8f, 0xb4, 0xdd, 0x30, 0x7a, 0x38, 0x95, 0x9b, 0x16, 0xf3, 0xdf, 0x94, 0x6a, 0xde, 0x86, 0x4b, 0x1e, 0x7e, 0x91, 0x4d, 0x36, 0x4e, 0xbf, 0x9a, 0xdf, 0xd8, 0x6a, 0x70, 0x02, 0x2d, 0xc6, 0x1b, 0x43, 0xfb, 0x1f, 0xdf, 0x86, 0x96, 0x97, 0x8e, 0x2d, 0x1f, 0x6a, 0x2d, 0xef, 0xee, 0x75, 0xad, 0xaa, 0x69, 0xa3, 0x95, 0x32, 0x07, 0x40, 0x50, 0xbe, 0x70, 0x8e, 0xaf, 0x03, 0x1d, 0x5f, 0xae, 0x0f, 0xfe, 0x24, 0x5b, 0xa4, 0xff, 0x3c, 0x5e, 0x34, 0x0a, 0xf5, 0xdf, 0xec, 0x6a, 0x4c, 0xce, 0x0e, 0x18, 0x87, 0x6c, 0xfc, 0x13, 0x66, 0xee, 0xed, 0xdf, 0xce, 0x0f, 0x83, 0x5b, 0x38, 0xe8, 0x18, 0x81, 0xb1, 0xfc, 0x58, 0x32, 0x93, 0x0f, 0xc7, 0x9b, 0x08, 0xf1, 0xfb, 0x34, 0xfb, 0x22, 0x42, 0x33, 0xf4, 0xc4, 0x68 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.13", - /* Message to be signed */ - 94, - { 0x09, 0x91, 0x12, 0xfa, 0xe7, 0x40, 0x88, 0x8c, 0xea, 0xac, 0x70, 0x54, 0xd5, 0x97, 0x35, 0x1d, 0x79, 0xe1, 0x59, 0xa9, 0x58, 0xd8, 0x12, 0x15, 0x78, 0xe5, 0x2c, 0x83, 0x7d, 0xb3, 0x54, 0x3c, 0xfa, 0x6f, 0x8e, 0x7f, 0x1d, 0xbd, 0x2a, 0x61, 0x97, 0x86, 0x45, 0xa4, 0xd3, 0x85, 0xb9, 0xbb, 0x1c, 0x60, 0xbf, 0xb1, 0x1b, 0xb3, 0xc8, 0x75, 0x2a, 0xe3, 0x1f, 0x99, 0x6d, 0xbb, 0x52, 0x62, 0x8f, 0x93, 0xd5, 0x26, 0x94, 0xf1, 0x82, 0xe6, 0x90, 0x35, 0xa5, 0xe5, 0x57, 0xec, 0x71, 0x82, 0x62, 0xf4, 0x03, 0xdf, 0x52, 0x11, 0xf7, 0x3c, 0x6d, 0xe0, 0xd5, 0x5a, 0x0b, 0xa7 } -, - /* Signature */ - 128, - { 0x8d, 0x8c, 0x8f, 0x3a, 0x86, 0xf4, 0x9e, 0xdb, 0xd1, 0x25, 0xc8, 0x3e, 0xbf, 0x6d, 0x52, 0xe7, 0x65, 0x16, 0x15, 0x01, 0x48, 0x21, 0x54, 0x59, 0x8c, 0x28, 0x3a, 0xbe, 0x94, 0x02, 0x77, 0x87, 0x2b, 0x00, 0xd0, 0x77, 0x7c, 0x2e, 0x69, 0x7b, 0x78, 0x83, 0xcc, 0x32, 0x1e, 0x15, 0x1c, 0x80, 0x11, 0x6f, 0x9f, 0xcd, 0x17, 0x7a, 0xc4, 0xc7, 0xde, 0xdd, 0xf0, 0x3c, 0xa1, 0xb2, 0xc5, 0x93, 0x31, 0xdc, 0x1c, 0x8e, 0x94, 0x7f, 0x1e, 0xb2, 0xaa, 0xee, 0x8c, 0xc9, 0x41, 0xdd, 0xc5, 0xf3, 0x74, 0xa6, 0x3d, 0x6c, 0x99, 0x38, 0xec, 0xd8, 0xe8, 0x8c, 0xbc, 0xec, 0x58, 0x92, 0x9c, 0xff, 0xdd, 0xef, 0x0b, 0xa2, 0x17, 0x58, 0x85, 0xa8, 0x0d, 0xc4, 0xcd, 0x92, 0xd6, 0xb7, 0x9d, 0x9c, 0x6a, 0x81, 0x69, 0x6e, 0x16, 0xf9, 0xa8, 0x3a, 0x10, 0xca, 0x8e, 0xfa, 0xf1, 0x97, 0x5f, 0x55 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.14", - /* Message to be signed */ - 194, - { 0xaa, 0x17, 0xe6, 0xbb, 0xd6, 0xdb, 0x19, 0xe5, 0x4b, 0xee, 0x1a, 0x7f, 0x0e, 0xdc, 0xca, 0xce, 0xab, 0x63, 0x5d, 0x76, 0x28, 0xfc, 0xaa, 0x18, 0xec, 0xfa, 0xfc, 0x40, 0x1c, 0xb3, 0xfe, 0xb5, 0x1f, 0x9a, 0x37, 0x31, 0xf3, 0x80, 0x2c, 0xbe, 0xa8, 0x1c, 0x73, 0x30, 0x28, 0xc9, 0x58, 0x4b, 0x6b, 0x78, 0xe2, 0x05, 0x59, 0x54, 0xcf, 0x91, 0x04, 0xda, 0xa6, 0x77, 0xaa, 0x40, 0xbe, 0x9b, 0x7c, 0x65, 0xb0, 0x7a, 0xc4, 0xa8, 0xbf, 0x25, 0xc1, 0x14, 0x9e, 0x05, 0x47, 0x35, 0xcf, 0x3c, 0xe3, 0x32, 0xd4, 0x29, 0xbc, 0x73, 0x80, 0x24, 0x45, 0xdf, 0xb3, 0x68, 0x8b, 0xb8, 0x19, 0x48, 0xb5, 0x7e, 0x27, 0x6a, 0xf3, 0x24, 0x62, 0xf7, 0xad, 0x80, 0x4d, 0x50, 0xc9, 0x3b, 0xc7, 0xe9, 0xef, 0x75, 0x37, 0x69, 0x5a, 0x27, 0x1a, 0xf7, 0x2e, 0x4b, 0xd4, 0x7c, 0xe5, 0xfa, 0x9d, 0x62, 0xf2, 0xda, 0xc0, 0x33, 0x36, 0x23, 0xf4, 0x9e, 0xb9, 0xd6, 0xd7, 0x80, 0x34, 0xed, 0x1d, 0xf6, 0xe1, 0x2b, 0xfd, 0x04, 0x26, 0x1b, 0xbe, 0x5c, 0xe0, 0x40, 0xe0, 0x3e, 0xbe, 0x25, 0x8d, 0x2d, 0x05, 0x2a, 0x12, 0xad, 0x4e, 0x3b, 0xf2, 0x53, 0x04, 0x23, 0x01, 0xc7, 0x64, 0x58, 0xed, 0x91, 0x0c, 0x5f, 0xfa, 0x70, 0x5c, 0x74, 0x7a, 0xd8, 0xca, 0x0c, 0x1c, 0x62, 0x28, 0xda, 0x2c, 0x97, 0xe1, 0x38 } -, - /* Signature */ - 128, - { 0x64, 0x4e, 0xa0, 0x76, 0x21, 0x4d, 0xbd, 0xdd, 0x30, 0x05, 0x5d, 0x7c, 0x56, 0x18, 0x92, 0x27, 0x9b, 0x46, 0xba, 0xb1, 0xe1, 0x22, 0x53, 0x42, 0x4c, 0x28, 0xf4, 0x49, 0xe1, 0x72, 0x64, 0x6a, 0xf3, 0x49, 0x8c, 0x7a, 0xfc, 0xbf, 0xf7, 0x68, 0xe0, 0x46, 0xa7, 0xc2, 0xe3, 0xd9, 0xc0, 0xe7, 0x12, 0x8f, 0x87, 0x7b, 0x92, 0x19, 0x5a, 0xa2, 0xbb, 0x9f, 0x1c, 0xfb, 0xdf, 0xd1, 0x5b, 0xb6, 0x5f, 0xbd, 0x23, 0xef, 0xb2, 0x94, 0xfb, 0xb1, 0x1a, 0x3c, 0x66, 0x05, 0x6d, 0x60, 0x63, 0x85, 0x3b, 0xb2, 0x3c, 0x27, 0x46, 0x65, 0xa1, 0x3e, 0xf4, 0xf3, 0xc1, 0x2f, 0x59, 0x21, 0xa4, 0x19, 0xe9, 0x49, 0xb3, 0x0c, 0x0b, 0xc0, 0xd7, 0x7d, 0x6b, 0x28, 0x69, 0x1d, 0x23, 0x64, 0xd9, 0x5b, 0xf6, 0x8b, 0xe8, 0xd5, 0x97, 0x8e, 0xf1, 0xbc, 0x98, 0x52, 0xa4, 0xf0, 0x66, 0x04, 0x47, 0x4a } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.15", - /* Message to be signed */ - 141, - { 0x28, 0x24, 0x9c, 0x38, 0x7a, 0x06, 0x14, 0x40, 0xe9, 0x86, 0x38, 0xe1, 0xed, 0x78, 0xa4, 0x86, 0x51, 0x30, 0xe5, 0x75, 0x33, 0xd7, 0x89, 0x10, 0x8c, 0x63, 0xe1, 0x5f, 0xd8, 0x01, 0x9b, 0xad, 0x2c, 0xd1, 0xa7, 0x55, 0x2b, 0xd8, 0xaf, 0xd2, 0x06, 0xd9, 0x78, 0xeb, 0x1f, 0x2c, 0xf3, 0xf2, 0x3a, 0xfc, 0x4b, 0x34, 0xe6, 0xdd, 0x7f, 0x69, 0xc1, 0xfd, 0xf4, 0xfe, 0xc2, 0x52, 0x68, 0xd1, 0x86, 0x55, 0x51, 0x94, 0x49, 0x22, 0x90, 0x6d, 0xce, 0x6d, 0xc4, 0x41, 0xf9, 0x4a, 0x46, 0x6b, 0xf8, 0x39, 0x1a, 0xd8, 0x2b, 0xf5, 0x94, 0x0e, 0x44, 0x71, 0x10, 0xf1, 0xd1, 0x5d, 0xe1, 0x29, 0x31, 0x29, 0xfb, 0x44, 0x24, 0xa1, 0x71, 0x75, 0x19, 0xd6, 0xd4, 0x28, 0xd6, 0x6b, 0x7a, 0x10, 0x91, 0x42, 0xac, 0xc9, 0x15, 0xf1, 0xea, 0xc9, 0x6d, 0xef, 0x2c, 0x32, 0x90, 0xb0, 0x1d, 0x05, 0x99, 0x0b, 0xf8, 0x02, 0x3a, 0x6a, 0x64, 0x71, 0x2f, 0x63, 0x13, 0x7a, 0x8e } -, - /* Signature */ - 128, - { 0x57, 0x02, 0x06, 0x06, 0x69, 0xed, 0x47, 0xbb, 0xca, 0x11, 0xb9, 0x16, 0x68, 0x28, 0x9e, 0xa3, 0xf5, 0xe7, 0x46, 0xad, 0x2e, 0x38, 0x6d, 0xd1, 0xbc, 0x2a, 0x8b, 0xab, 0x17, 0x46, 0xba, 0x2a, 0x64, 0xbf, 0x15, 0xb3, 0xfc, 0x2e, 0xc8, 0xb0, 0xcc, 0x99, 0xd8, 0x54, 0xfa, 0x32, 0x11, 0xc9, 0x55, 0xc4, 0x55, 0xd7, 0xff, 0x2e, 0x1e, 0xe2, 0x39, 0xf5, 0x4f, 0x38, 0x6a, 0x42, 0xbb, 0x25, 0x40, 0xa8, 0x75, 0x8f, 0x32, 0x97, 0xe5, 0x52, 0xde, 0x1e, 0xbe, 0x8e, 0xac, 0x70, 0xf3, 0x54, 0x87, 0x94, 0x2b, 0xba, 0xda, 0xd5, 0xbd, 0x95, 0x73, 0x90, 0xff, 0x17, 0x93, 0xaf, 0x3d, 0x30, 0xd9, 0x36, 0xb6, 0xf7, 0x9b, 0x44, 0xa9, 0xb6, 0x3c, 0xee, 0x62, 0xd5, 0x58, 0x4d, 0xa3, 0xa1, 0xfc, 0xff, 0xa5, 0xb6, 0xfe, 0xee, 0xc1, 0x1c, 0xd6, 0x3b, 0x18, 0x0f, 0x0b, 0xfc, 0x5b, 0x6b } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.16", - /* Message to be signed */ - 135, - { 0xe4, 0x91, 0xa1, 0x56, 0xfd, 0xba, 0x31, 0x6a, 0x2a, 0x20, 0xa1, 0x2e, 0xea, 0x50, 0xbe, 0x77, 0x4e, 0xc9, 0xaa, 0xbe, 0xb1, 0xc3, 0x98, 0xe9, 0x08, 0xbe, 0xa3, 0x29, 0x68, 0x21, 0x7e, 0xa4, 0x1e, 0x96, 0x6d, 0xb7, 0x27, 0x2f, 0x0e, 0xfa, 0x37, 0xc9, 0x0a, 0xe4, 0xe9, 0xf3, 0x86, 0x21, 0xa6, 0x27, 0xa9, 0xd1, 0x2c, 0x8b, 0x4e, 0x80, 0x60, 0xc5, 0x45, 0xc5, 0x60, 0x59, 0xe9, 0xe4, 0x8a, 0x7f, 0x16, 0x81, 0x36, 0x72, 0x47, 0x33, 0x58, 0x19, 0xba, 0x12, 0x7e, 0x65, 0x93, 0x1e, 0x1d, 0x9f, 0xb7, 0x0d, 0xfd, 0xdf, 0x4c, 0x99, 0x56, 0xa5, 0xb0, 0x4c, 0x52, 0xbc, 0xf8, 0xcb, 0xdf, 0xcd, 0xf2, 0x29, 0x19, 0x64, 0xda, 0xfa, 0xca, 0x7e, 0xe7, 0x0e, 0x80, 0xa2, 0x75, 0x9c, 0xec, 0x73, 0x5d, 0x01, 0xac, 0xa8, 0xff, 0x89, 0x4b, 0x68, 0x9b, 0x93, 0x78, 0x3d, 0xa8, 0x93, 0x9c, 0x62, 0x09, 0xdd, 0x68, 0x3c, 0x60 } -, - /* Signature */ - 128, - { 0x9f, 0x20, 0x5b, 0xa9, 0x0d, 0xf2, 0xd4, 0x01, 0x49, 0x26, 0x48, 0x1f, 0x9b, 0x3f, 0x45, 0xa8, 0x9d, 0x23, 0xec, 0xd8, 0x4f, 0x5f, 0x16, 0xe6, 0x73, 0x34, 0xc4, 0xca, 0xf3, 0xf3, 0xb9, 0xc2, 0x01, 0xa7, 0x98, 0xd4, 0xee, 0xc5, 0x62, 0x76, 0x59, 0x88, 0x23, 0x18, 0x0e, 0x07, 0x8d, 0x0a, 0xef, 0x4f, 0x8f, 0xba, 0x0b, 0x25, 0xc1, 0xfd, 0xa3, 0xe3, 0x36, 0x54, 0xc4, 0x74, 0xa9, 0xc1, 0x1a, 0x23, 0xb0, 0x87, 0x10, 0x91, 0x3d, 0xff, 0x76, 0x56, 0xf0, 0xe7, 0xee, 0x22, 0xcc, 0x44, 0xc9, 0x99, 0xc0, 0x95, 0xa6, 0x51, 0x4a, 0x9d, 0x2f, 0xc0, 0xca, 0x4e, 0xf2, 0x08, 0xde, 0x0d, 0x92, 0x93, 0xb0, 0xc5, 0x60, 0x8b, 0xae, 0xd1, 0x07, 0x4a, 0x0c, 0xfd, 0x57, 0xb9, 0x9e, 0xf8, 0xce, 0xab, 0xfd, 0x34, 0x72, 0xb7, 0xdb, 0x3a, 0xb9, 0x60, 0x6d, 0x13, 0xf9, 0xbb, 0x43, 0x9a } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.17", - /* Message to be signed */ - 62, - { 0x06, 0xad, 0xd7, 0x5a, 0xb6, 0x89, 0xde, 0x06, 0x77, 0x44, 0xe6, 0x9a, 0x2e, 0xbd, 0x4b, 0x90, 0xfa, 0x93, 0x83, 0x00, 0x3c, 0xd0, 0x5f, 0xf5, 0x36, 0xcb, 0xf2, 0x94, 0xcd, 0x21, 0x5f, 0x09, 0x23, 0xb7, 0xfc, 0x90, 0x04, 0xf0, 0xaa, 0x18, 0x52, 0x71, 0xa1, 0xd0, 0x06, 0x1f, 0xd0, 0xe9, 0x77, 0x7a, 0xd1, 0xec, 0x0c, 0x71, 0x59, 0x1f, 0x57, 0x8b, 0xf7, 0xb8, 0xe5, 0xa1 } -, - /* Signature */ - 128, - { 0x45, 0x14, 0x21, 0x0e, 0x54, 0x1d, 0x5b, 0xad, 0x7d, 0xd6, 0x0a, 0xe5, 0x49, 0xb9, 0x43, 0xac, 0xc4, 0x4f, 0x21, 0x39, 0x0d, 0xf5, 0xb6, 0x13, 0x18, 0x45, 0x5a, 0x17, 0x61, 0x0d, 0xf5, 0xb7, 0x4d, 0x84, 0xae, 0xd2, 0x32, 0xf1, 0x7e, 0x59, 0xd9, 0x1d, 0xd2, 0x65, 0x99, 0x22, 0xf8, 0x12, 0xdb, 0xd4, 0x96, 0x81, 0x69, 0x03, 0x84, 0xb9, 0x54, 0xe9, 0xad, 0xfb, 0x9b, 0x1a, 0x96, 0x8c, 0x0c, 0xbf, 0xf7, 0x63, 0xec, 0xee, 0xd6, 0x27, 0x50, 0xc5, 0x91, 0x64, 0xb5, 0xe0, 0x80, 0xa8, 0xfe, 0xf3, 0xd5, 0x5b, 0xfe, 0x2a, 0xcf, 0xad, 0x27, 0x52, 0xa6, 0xa8, 0x45, 0x9f, 0xa1, 0xfa, 0xb4, 0x9a, 0xd3, 0x78, 0xc6, 0x96, 0x4b, 0x23, 0xee, 0x97, 0xfd, 0x10, 0x34, 0x61, 0x0c, 0x5c, 0xc1, 0x4c, 0x61, 0xe0, 0xeb, 0xfb, 0x17, 0x11, 0xf8, 0xad, 0xe9, 0x6f, 0xe6, 0x55, 0x7b, 0x38 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.18", - /* Message to be signed */ - 78, - { 0x31, 0x1c, 0x88, 0x80, 0x05, 0x35, 0xd1, 0xb4, 0xe9, 0xbc, 0x78, 0x65, 0x18, 0x31, 0xa3, 0xe9, 0x67, 0xe7, 0x4b, 0x58, 0x28, 0xe0, 0x14, 0x11, 0x5f, 0xbe, 0x5f, 0x60, 0x9c, 0xe8, 0x65, 0xfe, 0xd2, 0x41, 0x97, 0x0f, 0x87, 0x2e, 0xc8, 0xf2, 0x3d, 0xc2, 0xbf, 0x61, 0x6b, 0x80, 0x20, 0xe4, 0x45, 0x64, 0xf9, 0x34, 0xdc, 0xbf, 0x72, 0x38, 0x61, 0x70, 0x07, 0x4d, 0x92, 0x0b, 0xa8, 0x95, 0xd3, 0x3d, 0xdf, 0x27, 0x93, 0x69, 0xf2, 0x36, 0xa1, 0x9a, 0xcd, 0x4f, 0xeb, 0x2b } -, - /* Signature */ - 128, - { 0x89, 0x46, 0x63, 0xe6, 0x3e, 0xc1, 0x9f, 0x56, 0x20, 0x3f, 0x4a, 0x44, 0x6b, 0x5e, 0x2b, 0x51, 0x74, 0xc8, 0x14, 0xa5, 0x4c, 0xbe, 0xa2, 0xc8, 0xe2, 0x98, 0xf9, 0x9b, 0x34, 0xc4, 0xbb, 0xc2, 0xc8, 0xb1, 0x77, 0xba, 0x98, 0x57, 0xd8, 0x1c, 0x85, 0x44, 0x36, 0xbd, 0x99, 0xaf, 0x58, 0xc0, 0x9d, 0xde, 0x5a, 0xca, 0xd2, 0xd6, 0x41, 0x50, 0x43, 0xfb, 0x40, 0xe7, 0x84, 0x75, 0xef, 0x74, 0x01, 0x2e, 0x4d, 0x4f, 0x75, 0xb2, 0xe9, 0x58, 0x85, 0xc8, 0x51, 0xa2, 0x3b, 0x4a, 0x25, 0x54, 0x93, 0xf3, 0x0c, 0x17, 0x2e, 0xae, 0x01, 0xd4, 0x79, 0x10, 0xfa, 0xbd, 0x26, 0x9f, 0x57, 0x94, 0x0b, 0xa4, 0x43, 0x50, 0x6c, 0x05, 0x22, 0xbf, 0x72, 0x8a, 0x25, 0x7a, 0xc1, 0x07, 0x3b, 0xdf, 0x99, 0xb4, 0x29, 0x56, 0xdb, 0x00, 0x2a, 0x30, 0xa5, 0x4d, 0xbd, 0xaf, 0x28, 0x4d, 0x8f, 0x69 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.19", - /* Message to be signed */ - 28, - { 0xb2, 0x65, 0xa9, 0x77, 0x7f, 0xaa, 0xf1, 0x58, 0xa8, 0x08, 0xaa, 0xe7, 0x08, 0x5a, 0x83, 0xe7, 0x07, 0x9c, 0xef, 0x80, 0xd5, 0xfc, 0x9d, 0x7c, 0xdc, 0x96, 0x3e, 0xc9 } -, - /* Signature */ - 128, - { 0x28, 0x1e, 0x88, 0xce, 0x19, 0x0e, 0x98, 0x62, 0x90, 0x34, 0x36, 0xa8, 0x6b, 0xa4, 0x37, 0x27, 0x16, 0x44, 0x9c, 0xc0, 0xce, 0x8d, 0x55, 0x4f, 0x70, 0x2d, 0x72, 0x52, 0xa0, 0x67, 0x60, 0xaf, 0x42, 0x12, 0x1d, 0xd0, 0x9b, 0xf6, 0xea, 0x13, 0xf0, 0xeb, 0x25, 0x2e, 0xcc, 0x76, 0x42, 0x10, 0x61, 0xf5, 0x74, 0x4b, 0xd8, 0xe3, 0x2c, 0x5a, 0x8c, 0x4f, 0xc1, 0xf9, 0x52, 0x1b, 0x3f, 0x5c, 0x29, 0x14, 0x6d, 0xd0, 0x59, 0x12, 0x91, 0xac, 0xbd, 0xc5, 0xb6, 0x3b, 0x55, 0x1d, 0x22, 0x8a, 0xe5, 0x38, 0x95, 0xb1, 0x97, 0xe6, 0xe2, 0x7a, 0x70, 0x68, 0xaa, 0x31, 0x03, 0xb7, 0x0c, 0xfb, 0x30, 0xf4, 0x15, 0x84, 0x5c, 0x7e, 0x52, 0x87, 0xf1, 0x11, 0x4e, 0x4c, 0xdf, 0xb4, 0x01, 0xed, 0x51, 0x98, 0x64, 0xcf, 0x61, 0xbc, 0x46, 0x9c, 0x66, 0x69, 0x9b, 0x29, 0x60, 0xa0, 0xaf, 0xf2 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 2.20", - /* Message to be signed */ - 102, - { 0x7c, 0x43, 0x9e, 0x7a, 0xb9, 0x90, 0xcd, 0xef, 0x95, 0x6c, 0x42, 0x39, 0x47, 0x9b, 0x49, 0xda, 0x84, 0x2f, 0x8b, 0x76, 0x76, 0x5a, 0x7a, 0xd4, 0x89, 0x7b, 0xc1, 0x6c, 0x61, 0xed, 0x3d, 0x09, 0x80, 0x5d, 0x76, 0xe8, 0xa5, 0xbe, 0x8b, 0x57, 0x8b, 0x95, 0x1f, 0x45, 0x45, 0xdf, 0x92, 0xa8, 0xa5, 0x37, 0xba, 0x3e, 0x2c, 0x13, 0xdc, 0xe0, 0xa0, 0x03, 0xe7, 0xb6, 0x24, 0x9e, 0x32, 0xbe, 0x94, 0x1f, 0x21, 0xcd, 0xa7, 0x25, 0xb8, 0x04, 0x07, 0xbe, 0x1e, 0x28, 0xbb, 0x9e, 0x39, 0x37, 0x38, 0x32, 0x53, 0x56, 0xec, 0x21, 0x74, 0x1d, 0x5c, 0x86, 0xf3, 0xc2, 0xb4, 0xf7, 0xb9, 0x47, 0xaf, 0xd5, 0x6b, 0x2d, 0x3a, 0xec } -, - /* Signature */ - 128, - { 0x6a, 0xfa, 0xd7, 0x7a, 0x05, 0x6d, 0x07, 0x29, 0x05, 0x86, 0xe9, 0x13, 0x80, 0x9a, 0x04, 0x37, 0xd3, 0x9a, 0xb3, 0x07, 0x32, 0x45, 0x12, 0xb2, 0xf5, 0xbc, 0x2b, 0xaf, 0x58, 0x0b, 0xf4, 0x55, 0x43, 0xeb, 0x04, 0xff, 0x83, 0xe9, 0x63, 0xa6, 0xd7, 0xf3, 0x3e, 0x9d, 0xff, 0xc1, 0xfc, 0xf4, 0x24, 0x48, 0xc5, 0xfc, 0xfa, 0x47, 0x27, 0x19, 0xc6, 0x51, 0xf8, 0x1f, 0x3c, 0x62, 0x22, 0x98, 0x3d, 0x38, 0x91, 0x7e, 0x29, 0xb4, 0x84, 0x85, 0x87, 0x9c, 0xeb, 0xb0, 0xa6, 0x1d, 0x38, 0x9e, 0x23, 0x8c, 0x9c, 0x71, 0xc3, 0x68, 0xed, 0xe4, 0x08, 0x3a, 0x94, 0x62, 0x97, 0xf7, 0x19, 0x0b, 0x4c, 0xef, 0x86, 0x7e, 0x9c, 0xcd, 0xa8, 0xf9, 0xff, 0xc6, 0x19, 0x84, 0xfc, 0xf0, 0x5d, 0x4f, 0xba, 0xfe, 0x10, 0x7d, 0xac, 0xf5, 0xb1, 0xdc, 0x8e, 0x2b, 0x14, 0x95, 0xb2, 0x44, 0xf8, 0xe7 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 3: A 1024-bit RSA key pair", -{ - /* Modulus */ - 128, - { 0xb5, 0xd7, 0x07, 0xb7, 0x92, 0xe0, 0x56, 0xf7, 0x2f, 0xd7, 0x6d, 0x8d, 0xa8, 0x89, 0xa5, 0x3c, 0xe4, 0xd8, 0xeb, 0xaa, 0x08, 0x2a, 0xee, 0xb2, 0x30, 0x32, 0xe3, 0xc5, 0xd8, 0xeb, 0xc4, 0xc1, 0x55, 0x61, 0x31, 0x9b, 0xe8, 0xdf, 0xe1, 0x88, 0x99, 0x1a, 0x89, 0x51, 0xd4, 0xb2, 0x3a, 0x51, 0xe8, 0xa9, 0x38, 0x2c, 0x80, 0x5e, 0x4c, 0xfd, 0x49, 0x0e, 0xbb, 0xce, 0xaa, 0x20, 0x80, 0x2a, 0xd6, 0x83, 0xb0, 0x5a, 0x10, 0x0f, 0x29, 0x98, 0x5f, 0x01, 0x1c, 0x3c, 0x8a, 0x44, 0x26, 0x25, 0x52, 0xd8, 0x3d, 0x9a, 0x1b, 0x7c, 0x27, 0x31, 0x5e, 0x14, 0x4a, 0xd8, 0xdf, 0x5c, 0xbe, 0x8b, 0xc6, 0x40, 0x0f, 0xd9, 0xcb, 0xe7, 0x6b, 0x74, 0x21, 0xd7, 0x08, 0xaa, 0x64, 0xf0, 0x40, 0xba, 0xe0, 0x7b, 0x7b, 0xd6, 0xf9, 0x22, 0x18, 0xf9, 0xa7, 0x29, 0x28, 0x4c, 0xc5, 0x98, 0xcd, 0xd1 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x45, 0x17, 0x92, 0xb5, 0x94, 0x47, 0xcc, 0x93, 0x78, 0xa8, 0xa4, 0xd6, 0x45, 0xfb, 0x22, 0xff, 0x4b, 0xbf, 0x06, 0x70, 0x61, 0x51, 0x1a, 0xc8, 0x36, 0xdb, 0x27, 0x43, 0xa6, 0x24, 0x13, 0x6b, 0x18, 0x6b, 0x69, 0x43, 0xa1, 0xcc, 0xeb, 0x6f, 0x91, 0x29, 0x0d, 0x93, 0x3b, 0xbb, 0x8a, 0xc0, 0x53, 0xa4, 0x74, 0x95, 0x28, 0x23, 0x6c, 0xa2, 0x72, 0xcf, 0x77, 0xd9, 0xd3, 0x37, 0xad, 0x2a, 0xb3, 0x6a, 0x87, 0xa9, 0x15, 0x3c, 0x5e, 0x16, 0x71, 0x6e, 0x09, 0xba, 0x0b, 0xea, 0xa6, 0x4b, 0x31, 0x25, 0x26, 0xd4, 0xa8, 0xc2, 0xdc, 0x68, 0xfe, 0x09, 0xe3, 0x7e, 0x50, 0x74, 0xa0, 0x90, 0x9d, 0x3f, 0x04, 0xab, 0x73, 0x90, 0x8a, 0x98, 0x0d, 0xec, 0x1d, 0xa7, 0xeb, 0x45, 0x05, 0xa4, 0x8b, 0xca, 0xd3, 0xb6, 0x0d, 0x01, 0x60, 0x84, 0x58, 0x64, 0xa6, 0x51, 0x1f, 0xf5, 0x59, 0xa7 } -, - /* Prime 1 */ - 64, - { 0xff, 0xa9, 0xf8, 0xe8, 0xb0, 0x82, 0x17, 0x0b, 0x63, 0x73, 0xf0, 0x0d, 0x73, 0xc4, 0x23, 0x86, 0xd4, 0x02, 0xf2, 0x80, 0x8b, 0x39, 0x3b, 0x32, 0xf7, 0x8f, 0x86, 0xea, 0xf6, 0x4b, 0x21, 0xbf, 0xdd, 0x33, 0x4f, 0xb9, 0xaa, 0xd1, 0x6b, 0xa6, 0xd9, 0xda, 0xdb, 0xc8, 0x94, 0x3a, 0x29, 0xe6, 0x63, 0xc8, 0xb3, 0x9c, 0x09, 0x59, 0x69, 0x02, 0x5b, 0xb9, 0xb2, 0xd9, 0xd6, 0xfe, 0x67, 0xb7 } -, - /* Prime 2 */ - 64, - { 0xb6, 0x14, 0x37, 0x8d, 0x5e, 0x3d, 0xa5, 0xa8, 0x0a, 0x6d, 0x73, 0x52, 0xfc, 0x66, 0xa5, 0x64, 0x59, 0x7b, 0x06, 0x8f, 0xc9, 0xd3, 0xaf, 0x5d, 0xb0, 0xe4, 0xe7, 0x35, 0xbe, 0xf8, 0x81, 0xdd, 0x40, 0x17, 0xee, 0x70, 0x82, 0x96, 0x19, 0x0b, 0x6f, 0xdc, 0x84, 0x04, 0xf0, 0x7b, 0xd9, 0xdc, 0x5c, 0xd5, 0xd2, 0xbe, 0x48, 0x86, 0xa7, 0xcb, 0xbc, 0xb2, 0x1d, 0x8c, 0x3d, 0x64, 0xa6, 0xb7 } -, - /* Prime exponent 1 */ - 64, - { 0x51, 0x0e, 0x68, 0x96, 0x0d, 0x70, 0x11, 0x32, 0x51, 0x23, 0xae, 0xd5, 0xf5, 0x00, 0x18, 0x6b, 0x64, 0xc8, 0x52, 0x6e, 0x22, 0xb5, 0xd0, 0x69, 0x06, 0x48, 0x00, 0xf4, 0x79, 0x85, 0xb4, 0x7b, 0x89, 0xfb, 0xfc, 0xa8, 0xd6, 0xd9, 0x72, 0x92, 0x01, 0xbb, 0xfb, 0xb6, 0x8a, 0x18, 0x2e, 0xb4, 0x96, 0xaa, 0x49, 0x17, 0x8d, 0x77, 0x45, 0x6d, 0xb3, 0xfb, 0x1a, 0x13, 0x2a, 0xb0, 0x99, 0xdd } -, - /* Prime exponent 2 */ - 64, - { 0x57, 0xeb, 0xbf, 0x3f, 0x76, 0x48, 0x52, 0x5b, 0xa8, 0x5d, 0x5d, 0x98, 0xae, 0xe4, 0x69, 0xec, 0xe1, 0x00, 0x75, 0x14, 0xad, 0xa2, 0x98, 0x45, 0xa7, 0x8b, 0x80, 0xd2, 0x05, 0x1b, 0x3e, 0xaa, 0x35, 0xae, 0xd8, 0xa6, 0x5f, 0x88, 0x57, 0x23, 0x9c, 0xaa, 0x60, 0xdd, 0x79, 0xba, 0x74, 0x62, 0xe2, 0x39, 0x26, 0x00, 0x58, 0x49, 0x1d, 0x71, 0x55, 0xf6, 0xb4, 0x29, 0xe9, 0xe3, 0x56, 0x55 } -, - /* Coefficient */ - 64, - { 0xee, 0x10, 0x7d, 0xc7, 0xef, 0xec, 0xe9, 0xa6, 0x5c, 0x0e, 0x87, 0x78, 0x9a, 0xf5, 0x59, 0x0c, 0x93, 0x83, 0x9d, 0xfe, 0x82, 0x85, 0x20, 0xda, 0x17, 0x74, 0xff, 0x80, 0xf7, 0xe5, 0x14, 0x55, 0x7f, 0xff, 0x10, 0xbd, 0x8c, 0xae, 0x18, 0x46, 0xef, 0xee, 0x7c, 0x10, 0xd7, 0xa1, 0x2c, 0x4a, 0x05, 0x5c, 0xc1, 0x36, 0xe4, 0xa4, 0xef, 0x25, 0xfd, 0x3e, 0xd9, 0xd0, 0xcd, 0xdf, 0x74, 0xf9 } - -} -, -{{ - "PKCS#1 v1.5 Signature Example 3.1", - /* Message to be signed */ - 82, - { 0x98, 0x6e, 0x7c, 0x43, 0xdb, 0xb6, 0x71, 0xbd, 0x41, 0xb9, 0xa7, 0xf4, 0xb6, 0xaf, 0xc8, 0x0e, 0x80, 0x5f, 0x24, 0x23, 0x48, 0x8f, 0xb4, 0x31, 0xf5, 0xee, 0x79, 0x2b, 0x6c, 0x2a, 0xc7, 0xdb, 0x53, 0xcc, 0x42, 0x86, 0x55, 0xae, 0xb3, 0x2d, 0x03, 0xf4, 0xe8, 0x89, 0xc5, 0xc2, 0x5d, 0xe6, 0x83, 0xc4, 0x61, 0xb5, 0x3a, 0xcf, 0x89, 0xf9, 0xf8, 0xd3, 0xaa, 0xbd, 0xf6, 0xb9, 0xf0, 0xc2, 0xa1, 0xde, 0x12, 0xe1, 0x5b, 0x49, 0xed, 0xb3, 0x91, 0x9a, 0x65, 0x2f, 0xe9, 0x49, 0x1c, 0x25, 0xa7, 0xfc } -, - /* Signature */ - 128, - { 0x62, 0x75, 0xe8, 0x73, 0x97, 0xe3, 0x09, 0x2a, 0xab, 0x36, 0x98, 0xbb, 0x1b, 0x5c, 0xf2, 0x4b, 0x8c, 0xd7, 0x71, 0x2b, 0xec, 0xac, 0x35, 0xe3, 0x22, 0x03, 0xd5, 0x43, 0x14, 0xe5, 0x47, 0x0e, 0xa9, 0xaa, 0xbc, 0x86, 0x57, 0xf5, 0x64, 0x34, 0xe5, 0xaf, 0x9f, 0xae, 0x77, 0x8f, 0xf6, 0x04, 0x5c, 0x20, 0xe2, 0xe1, 0xef, 0x7c, 0xbd, 0xf8, 0x8f, 0x00, 0x75, 0xf3, 0x3e, 0xa9, 0x92, 0x77, 0x7c, 0xb7, 0xe9, 0x2f, 0x7d, 0xa1, 0x8a, 0x0f, 0xfd, 0x00, 0xaa, 0x46, 0x71, 0xed, 0x63, 0x91, 0x1f, 0xe9, 0xe9, 0x2f, 0xb4, 0xa7, 0x6e, 0x77, 0xdc, 0x6e, 0x0a, 0x91, 0x65, 0x76, 0x71, 0x6c, 0x15, 0xea, 0xef, 0x08, 0x9a, 0x71, 0xa0, 0xae, 0xa3, 0x5b, 0xed, 0x94, 0x47, 0xa6, 0xc1, 0x7f, 0x2a, 0xad, 0xb7, 0x27, 0xfd, 0x42, 0xf0, 0xac, 0xc8, 0x24, 0x62, 0x38, 0x1d, 0x9f, 0xa2, 0xef } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Signature Example 3.2", - /* Message to be signed */ - 11, - { 0x4c, 0x7b, 0x98, 0x12, 0x0c, 0x87, 0x50, 0x90, 0x87, 0xc4, 0x78 } -, - /* Signature */ - 128, - { 0x59, 0xe5, 0xcb, 0xe7, 0x33, 0x1b, 0x92, 0xe0, 0xcb, 0x8f, 0x68, 0x9e, 0xae, 0xbb, 0x30, 0xf2, 0xb3, 0x34, 0xa7, 0x46, 0xa6, 0x57, 0x05, 0x59, 0x12, 0xff, 0x1c, 0x92, 0x76, 0x0b, 0x0b, 0x85, 0xbc, 0x42, 0x82, 0xf3, 0x18, 0x4b, 0x9a, 0x81, 0x4f, 0x44, 0x37, 0xf8, 0x25, 0xae, 0x07, 0xd3, 0x56, 0xba, 0xc6, 0x9e, 0x54, 0x0c, 0x90, 0x94, 0x2c, 0x7f, 0x7e, 0x6f, 0xf4, 0x4f, 0xe5, 0x74, 0xf1, 0x21, 0x25, 0x0a, 0xd2, 0x30, 0xf4, 0xb5, 0x0c, 0x78, 0x31, 0x1e, 0x4f, 0xd3, 0xc9, 0xe2, 0x65, 0xf5, 0x17, 0xce, 0x32, 0x97, 0xc3, 0xe1, 0xdd, 0xdb, 0x5c, 0x86, 0x9c, 0x69, 0x8f, 0x44, 0xaf, 0x52, 0x5e, 0x73, 0x64, 0x01, 0xa8, 0x1b, 0x45, 0x9f, 0x19, 0x8a, 0xd1, 0x80, 0x8c, 0xcd, 0x92, 0x9d, 0x49, 0x04, 0x74, 0xca, 0xf7, 0x00, 0x5f, 0x91, 0x0d, 0xac, 0xde, 0x21, 0xb0, 0x77 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.3", - /* Message to be signed */ - 233, - { 0x66, 0xf7, 0x07, 0x54, 0x22, 0xc8, 0xec, 0x42, 0x16, 0xa9, 0xc4, 0xff, 0x49, 0x42, 0x7d, 0x48, 0x3c, 0xae, 0x10, 0xc8, 0x53, 0x4a, 0x41, 0xb2, 0xfd, 0x15, 0xfe, 0xe0, 0x69, 0x60, 0xec, 0x6f, 0xb3, 0xf7, 0xa7, 0xe9, 0x4a, 0x2f, 0x8a, 0x2e, 0x3e, 0x43, 0xdc, 0x4a, 0x40, 0x57, 0x6c, 0x30, 0x97, 0xac, 0x95, 0x3b, 0x1d, 0xe8, 0x6f, 0x0b, 0x4e, 0xd3, 0x6d, 0x64, 0x4f, 0x23, 0xae, 0x14, 0x42, 0x55, 0x29, 0x62, 0x24, 0x64, 0xca, 0x0c, 0xbf, 0x0b, 0x17, 0x41, 0x34, 0x72, 0x38, 0x15, 0x7f, 0xab, 0x59, 0xe4, 0xde, 0x55, 0x24, 0x09, 0x6d, 0x62, 0xba, 0xec, 0x63, 0xac, 0x64, 0x50, 0x32, 0x7e, 0xfe, 0xc6, 0x29, 0x2f, 0x98, 0x01, 0x9f, 0xc6, 0x7a, 0x2a, 0x66, 0x38, 0x56, 0x3e, 0x9b, 0x6e, 0x2d, 0x15, 0xef, 0xd2, 0x37, 0xbb, 0x09, 0x8a, 0x44, 0x3a, 0xee, 0xb2, 0xbf, 0x6c, 0x3f, 0x8c, 0x81, 0xb8, 0xc0, 0x1b, 0x7f, 0xcb, 0x3f, 0xeb, 0xb0, 0xde, 0x3f, 0xc2, 0x5b, 0x65, 0xf5, 0xaf, 0x96, 0xb1, 0xd5, 0xcc, 0x3b, 0x27, 0xd0, 0xc6, 0x05, 0x30, 0x87, 0xb3, 0x96, 0x80, 0xe4, 0x92, 0xa4, 0xab, 0x23, 0x67, 0x47, 0x11, 0x69, 0xe5, 0x28, 0x38, 0x94, 0x5d, 0xba, 0x9d, 0xd7, 0x72, 0x3f, 0x4e, 0x62, 0x4a, 0x05, 0xf7, 0x37, 0x5b, 0x92, 0x7a, 0x87, 0xab, 0xe6, 0xa8, 0x93, 0xa1, 0x65, 0x8f, 0xd4, 0x9f, 0x47, 0xf6, 0xc7, 0xb0, 0xfa, 0x59, 0x6c, 0x65, 0xfa, 0x68, 0xa2, 0x3f, 0x0a, 0xb4, 0x32, 0x96, 0x2d, 0x18, 0xd4, 0x34, 0x3b, 0xd6, 0xfd, 0x67, 0xd0, 0x0b, 0x25, 0xb8, 0x1b, 0x09, 0xb5, 0x62, 0x03, 0x85, 0x64 } -, - /* Signature */ - 128, - { 0x59, 0x9e, 0x69, 0xc1, 0x54, 0xe4, 0xfe, 0x66, 0xb3, 0x6a, 0x69, 0x04, 0x92, 0xfa, 0xeb, 0xb2, 0xbb, 0xe7, 0x34, 0xe0, 0x41, 0x5d, 0x9f, 0x3c, 0xf7, 0xe3, 0x78, 0x28, 0xf5, 0x3e, 0x61, 0x13, 0x04, 0x49, 0x17, 0x3a, 0x33, 0x46, 0x0c, 0x6b, 0x4c, 0x8d, 0xc7, 0xd6, 0x81, 0xca, 0x6f, 0x4d, 0xaf, 0x1c, 0xb8, 0x16, 0xd4, 0x0a, 0xa9, 0x08, 0x2e, 0xe1, 0x93, 0x7b, 0xe4, 0xbc, 0x6a, 0x09, 0xc6, 0xde, 0x79, 0x8c, 0x82, 0x86, 0xfc, 0xd2, 0xa2, 0xb2, 0x19, 0x6c, 0x59, 0x99, 0x4c, 0x93, 0x7f, 0x37, 0x13, 0x07, 0x52, 0x61, 0x2c, 0x6b, 0xff, 0x6d, 0xbb, 0x53, 0xe0, 0x64, 0x7f, 0x88, 0x58, 0xbc, 0x38, 0x38, 0x64, 0x02, 0x1e, 0x6d, 0x56, 0x68, 0x19, 0x20, 0x24, 0x92, 0x97, 0x82, 0x22, 0x46, 0xa0, 0xf5, 0x28, 0xaa, 0xb3, 0xed, 0x18, 0x5e, 0xeb, 0xce, 0x91, 0x9c, 0xf8, 0x3e } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.4", - /* Message to be signed */ - 148, - { 0xd9, 0x34, 0x44, 0x28, 0xfa, 0x8a, 0x58, 0xf8, 0xfa, 0x7b, 0x44, 0x3e, 0x51, 0xfc, 0x9b, 0x51, 0xe3, 0x7a, 0x70, 0x21, 0x0d, 0xb8, 0xbd, 0x1d, 0xe7, 0xf8, 0x67, 0x5d, 0x84, 0x79, 0xff, 0x65, 0x7c, 0xa7, 0x29, 0x55, 0xb2, 0x3c, 0x6f, 0x4a, 0x09, 0x16, 0x37, 0x9a, 0x4e, 0xde, 0xe1, 0xf2, 0x6c, 0x85, 0xe0, 0x52, 0x90, 0x21, 0x1e, 0xeb, 0x25, 0x83, 0x2b, 0x09, 0xcb, 0xe5, 0xea, 0xed, 0x3e, 0x39, 0x65, 0xb0, 0x5a, 0x52, 0xfb, 0x5b, 0x16, 0x49, 0x11, 0x82, 0xc5, 0x91, 0x3c, 0xb1, 0x82, 0x57, 0x48, 0xe8, 0x1a, 0xd0, 0x14, 0xf1, 0x3d, 0x29, 0x6d, 0xc1, 0x69, 0x57, 0x08, 0x2b, 0x1b, 0x83, 0xb4, 0xbe, 0x50, 0xa0, 0xf9, 0x59, 0xc9, 0xe7, 0xf3, 0xaa, 0x80, 0x77, 0x97, 0x2e, 0x2b, 0x93, 0xc2, 0xef, 0xfd, 0x9f, 0x30, 0x86, 0x25, 0xb8, 0xca, 0x7f, 0x54, 0xd7, 0xb6, 0x96, 0x48, 0x79, 0x04, 0x47, 0xac, 0x91, 0xf7, 0x98, 0x5e, 0x51, 0x0d, 0xf7, 0x0d, 0x6e, 0xbc, 0x35, 0x72, 0xc2, 0x05, 0xe6 } -, - /* Signature */ - 128, - { 0x2c, 0x06, 0x01, 0x65, 0xfc, 0xc5, 0x65, 0x5c, 0x06, 0x57, 0xc8, 0xfe, 0x08, 0xe0, 0x5b, 0xdc, 0x8c, 0xd7, 0x7c, 0x1f, 0xec, 0xb6, 0xd1, 0x8b, 0x89, 0x38, 0x11, 0xc9, 0x9d, 0xd0, 0x91, 0xe0, 0xd8, 0x50, 0x6d, 0xcc, 0xb4, 0x9e, 0x33, 0xda, 0xaf, 0xf6, 0xda, 0x96, 0x7b, 0x99, 0xe3, 0x44, 0xcb, 0x17, 0xfa, 0x3c, 0x96, 0x31, 0x29, 0x9b, 0x35, 0x89, 0x81, 0x8b, 0x37, 0xed, 0x9d, 0x5d, 0x78, 0x94, 0xe4, 0xa6, 0x9d, 0xdb, 0x24, 0x83, 0x2e, 0x1a, 0x88, 0x60, 0x01, 0x4e, 0xe5, 0xe5, 0xeb, 0x95, 0x3e, 0x8b, 0x35, 0x48, 0x4b, 0xa4, 0xfe, 0xc9, 0xc3, 0x03, 0x3a, 0xe2, 0xe1, 0x18, 0x9a, 0xf7, 0x94, 0xa7, 0x2e, 0x42, 0x67, 0x21, 0x5b, 0xfe, 0x45, 0x8f, 0x0f, 0xce, 0x6b, 0x37, 0xa5, 0x54, 0x9e, 0xf8, 0x05, 0x43, 0xd0, 0xd4, 0x1a, 0x87, 0xb2, 0xc6, 0xe4, 0xd8, 0x4c, 0xb5 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.5", - /* Message to be signed */ - 201, - { 0x8c, 0x67, 0x02, 0xda, 0xaf, 0x58, 0xf6, 0xa4, 0x75, 0xfa, 0xd2, 0xc7, 0xa4, 0xbb, 0x15, 0x6a, 0x57, 0x06, 0x42, 0x55, 0x77, 0xd5, 0xe3, 0x0c, 0x6a, 0x6b, 0xd3, 0x66, 0x9f, 0xd0, 0x30, 0xaf, 0xd7, 0x89, 0xfa, 0xa3, 0xd0, 0x10, 0x18, 0xd4, 0x5d, 0xb2, 0xa0, 0x47, 0xf5, 0x2c, 0xb4, 0xf6, 0x3d, 0xea, 0x36, 0x09, 0x42, 0xaf, 0xe4, 0x76, 0x26, 0x42, 0x06, 0xd9, 0x83, 0xad, 0x38, 0x36, 0xe1, 0x55, 0xc5, 0x6b, 0x2e, 0xcc, 0x08, 0x76, 0x3a, 0xfb, 0x9f, 0xd5, 0x1d, 0x19, 0x99, 0x0e, 0xfc, 0x33, 0x63, 0xf6, 0x57, 0xe2, 0x85, 0xe0, 0x35, 0x21, 0xe8, 0xca, 0xd0, 0x1d, 0x2c, 0x93, 0x5a, 0x18, 0x3a, 0xe2, 0x3f, 0x0e, 0xe8, 0x71, 0x00, 0x86, 0xa8, 0x5b, 0x9f, 0xad, 0x4e, 0x7f, 0x2b, 0x09, 0x45, 0x2e, 0xbc, 0x40, 0x3c, 0xe0, 0xc0, 0xe5, 0x75, 0x5a, 0x7b, 0x2f, 0x33, 0xf4, 0xde, 0xf0, 0xdb, 0x71, 0xc9, 0x79, 0x31, 0xff, 0x90, 0x4a, 0x81, 0x31, 0x99, 0x84, 0xbd, 0xc5, 0x16, 0x6f, 0x6b, 0x92, 0x0c, 0x97, 0xee, 0x74, 0xfb, 0x7e, 0x89, 0x0f, 0x49, 0x0c, 0x90, 0xde, 0x30, 0xca, 0xc9, 0x76, 0xb7, 0x17, 0x23, 0xe2, 0xf8, 0x6e, 0x9d, 0xe1, 0xd5, 0x03, 0xa4, 0x1b, 0xc8, 0x1d, 0x53, 0xcc, 0xbe, 0xf8, 0xac, 0x40, 0x53, 0x57, 0xd9, 0xdf, 0xdf, 0x30, 0x64, 0x66, 0xb4, 0x26, 0x95, 0x80, 0x21, 0x2e, 0x9d, 0x71, 0x32 } -, - /* Signature */ - 128, - { 0x0d, 0x89, 0xfc, 0xf8, 0x44, 0xa9, 0xdc, 0x22, 0x3d, 0x5f, 0x63, 0x8d, 0xcc, 0x3a, 0x59, 0x78, 0x71, 0x6f, 0x26, 0x28, 0xb8, 0xa8, 0x3a, 0xb3, 0x3e, 0x6e, 0x25, 0x5f, 0xf8, 0xaa, 0x01, 0x57, 0x8c, 0x14, 0xe3, 0x89, 0x7d, 0xa4, 0x5a, 0xef, 0xd6, 0x3f, 0xa8, 0x7c, 0xf3, 0x5e, 0x24, 0x4b, 0xf4, 0x82, 0x8e, 0xcd, 0x21, 0x95, 0x0f, 0x30, 0x85, 0xa3, 0x66, 0x21, 0xc9, 0xda, 0x1b, 0xbe, 0x7e, 0xa6, 0x27, 0x31, 0xc6, 0x8d, 0x4d, 0xe0, 0xa3, 0x76, 0xe2, 0x2d, 0xac, 0x2f, 0x54, 0x8c, 0xd4, 0xba, 0x4a, 0x54, 0x2e, 0x71, 0x0f, 0x55, 0xce, 0x85, 0xa9, 0xc1, 0x95, 0x93, 0xc0, 0x8c, 0x87, 0xd2, 0x96, 0xd6, 0x35, 0x87, 0xb3, 0xfe, 0x2c, 0x5d, 0x11, 0x65, 0xee, 0x27, 0x74, 0x4c, 0x75, 0xd8, 0xf4, 0xf1, 0x43, 0x71, 0x63, 0x7c, 0x0c, 0x0a, 0x44, 0x62, 0x76, 0x28, 0x95, 0x83 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.6", - /* Message to be signed */ - 225, - { 0x56, 0xf4, 0xff, 0xd1, 0x27, 0x9d, 0xcf, 0xe5, 0x62, 0xa9, 0xdd, 0xd4, 0x1e, 0xcd, 0xf6, 0x0a, 0x3f, 0xf5, 0x82, 0x46, 0xbf, 0xaf, 0x95, 0x65, 0xcf, 0x67, 0x4b, 0x0b, 0x90, 0x75, 0xf4, 0x0e, 0xea, 0xc0, 0x8f, 0x0b, 0x89, 0x66, 0x61, 0x8a, 0x19, 0x6b, 0x12, 0x28, 0xeb, 0xce, 0x93, 0xfc, 0x9d, 0xd7, 0x9b, 0xd4, 0x63, 0xea, 0x7d, 0x2c, 0x97, 0x4d, 0x2c, 0x2f, 0x53, 0x9e, 0xaf, 0xb1, 0xb2, 0xbc, 0x1e, 0xa3, 0x4d, 0x74, 0xf7, 0x20, 0xe1, 0x19, 0x34, 0x2f, 0xf7, 0x13, 0x12, 0x25, 0xaa, 0x9a, 0xda, 0x89, 0x4b, 0x76, 0xb2, 0xec, 0xb1, 0x2f, 0x2f, 0x40, 0x28, 0x44, 0xb4, 0x42, 0x5c, 0xf8, 0xf1, 0xa3, 0x9b, 0x0a, 0x9c, 0x83, 0xb4, 0x5b, 0x03, 0xcf, 0xc0, 0xd1, 0x5f, 0xd3, 0x14, 0xd6, 0xab, 0xf5, 0x32, 0xb8, 0xed, 0xfc, 0xf2, 0x36, 0x51, 0x4b, 0x2e, 0x45, 0x86, 0x97, 0x86, 0xfe, 0xfe, 0x27, 0xf5, 0x4d, 0x66, 0x6e, 0xe5, 0x24, 0xe4, 0xb9, 0xc0, 0x53, 0xbe, 0x39, 0x75, 0x01, 0x58, 0x29, 0x91, 0xfa, 0x2d, 0x80, 0x2c, 0x7d, 0x1b, 0x17, 0x8b, 0x23, 0xe9, 0xb6, 0xec, 0xe6, 0xfd, 0x2e, 0xf0, 0x13, 0x2c, 0x06, 0x01, 0xa8, 0x6f, 0x07, 0x68, 0xba, 0xdc, 0x59, 0xc5, 0xcc, 0x33, 0xf2, 0x4d, 0xed, 0x55, 0x4a, 0xe5, 0x1a, 0xe3, 0xec, 0x23, 0xf9, 0xdd, 0x08, 0x9e, 0x32, 0x4a, 0x68, 0x21, 0xf6, 0x15, 0x7f, 0x12, 0x84, 0x42, 0xac, 0x58, 0x07, 0x65, 0x8a, 0xd3, 0x40, 0x26, 0xb8, 0xfc, 0xfd, 0xa6, 0xdc, 0x7f, 0x02, 0xa9, 0x3c, 0x16, 0x6e, 0xc9, 0x45, 0xee } -, - /* Signature */ - 128, - { 0x0d, 0xeb, 0x39, 0x7b, 0xf2, 0xcf, 0xf9, 0x79, 0xd4, 0x71, 0x9c, 0x64, 0x8b, 0x0a, 0x35, 0x25, 0x35, 0x1f, 0x5e, 0x08, 0x40, 0x5c, 0xa2, 0x61, 0x4a, 0x83, 0xe5, 0x6a, 0xce, 0x86, 0xf5, 0x52, 0xe4, 0x1b, 0xb9, 0x28, 0xde, 0x50, 0xf0, 0xbc, 0x0f, 0xe3, 0x1a, 0x2e, 0xf2, 0xad, 0x79, 0x9f, 0xd3, 0xcf, 0x47, 0x42, 0xb1, 0x13, 0x1a, 0x37, 0xbd, 0x08, 0xf2, 0xa1, 0x3c, 0xac, 0xda, 0x67, 0xf4, 0x95, 0xc9, 0xf1, 0xa9, 0xef, 0x64, 0x85, 0x70, 0x72, 0x32, 0x9f, 0x00, 0xcc, 0x4c, 0x01, 0x22, 0x35, 0x59, 0x9a, 0x83, 0xfc, 0x45, 0x94, 0xfe, 0xd9, 0x23, 0x03, 0x49, 0x01, 0xed, 0xc2, 0x7d, 0x5f, 0x05, 0x79, 0x98, 0x34, 0x93, 0x5c, 0xab, 0xe2, 0x64, 0xff, 0xc1, 0x96, 0x63, 0x71, 0x4d, 0x8c, 0x3d, 0xe8, 0xe9, 0x61, 0x9f, 0xd2, 0x84, 0x2d, 0x22, 0x98, 0xf7, 0xa7, 0x2c, 0x99 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.7", - /* Message to be signed */ - 179, - { 0x0e, 0x79, 0xac, 0x9c, 0x9c, 0x03, 0x96, 0xd9, 0x69, 0xfb, 0x3f, 0x7c, 0xc9, 0x94, 0x7b, 0x07, 0x8b, 0xac, 0x49, 0x3b, 0x03, 0x52, 0xc8, 0xe0, 0xcd, 0xe5, 0x46, 0x3e, 0xa5, 0xc1, 0x18, 0x4f, 0xd5, 0x2a, 0x1f, 0xb7, 0x48, 0x19, 0x3c, 0x14, 0x7a, 0x74, 0x80, 0x0d, 0x24, 0xf7, 0x51, 0xba, 0x93, 0x5e, 0x19, 0xc9, 0x11, 0x5e, 0xdf, 0x07, 0x22, 0x88, 0x33, 0x0b, 0xf3, 0x83, 0xf4, 0x95, 0x29, 0x6b, 0xe1, 0xaa, 0x4a, 0x50, 0x95, 0xb9, 0x57, 0x3b, 0xcb, 0xdb, 0x22, 0x8a, 0x43, 0x13, 0x12, 0x37, 0x86, 0x5d, 0x26, 0xdf, 0xbf, 0xcf, 0xef, 0x07, 0x8f, 0x35, 0x9f, 0x9a, 0x95, 0x62, 0xe2, 0x5b, 0x69, 0x63, 0x85, 0xe1, 0x28, 0x13, 0xff, 0xfb, 0xc8, 0xd5, 0x29, 0x81, 0x9a, 0x91, 0x45, 0x1d, 0x33, 0xa5, 0x07, 0x26, 0x39, 0x2e, 0x4f, 0xef, 0x29, 0x41, 0x8c, 0xca, 0x2c, 0x73, 0xa0, 0x68, 0xe6, 0x0e, 0xae, 0x31, 0x84, 0x70, 0x33, 0x1a, 0x0f, 0x1d, 0xb4, 0xbb, 0xb6, 0x37, 0x17, 0x3b, 0xe8, 0x0f, 0xea, 0x03, 0xc8, 0x2c, 0x15, 0xd0, 0x01, 0x93, 0x36, 0x2d, 0x3a, 0x18, 0xad, 0x9e, 0x2f, 0x68, 0x05, 0x00, 0xd7, 0x26, 0x5b, 0x15, 0x57, 0x03, 0x3a, 0x52, 0x09, 0x77, 0xd8, 0x10, 0xfc } -, - /* Signature */ - 128, - { 0x73, 0x3b, 0x7f, 0xea, 0x12, 0x0c, 0xa5, 0xf0, 0x35, 0x9a, 0x89, 0x05, 0x75, 0x0c, 0x49, 0xc3, 0x63, 0xd8, 0x84, 0xf5, 0x6c, 0x2b, 0x7a, 0x72, 0x9f, 0xad, 0x7b, 0xff, 0x44, 0x5a, 0x1e, 0x54, 0x79, 0x89, 0x41, 0x74, 0x53, 0x93, 0xe1, 0x76, 0x77, 0x12, 0xac, 0x4b, 0x9d, 0xd2, 0x68, 0x38, 0x88, 0xd9, 0xe6, 0x8b, 0x90, 0x5d, 0xba, 0xb8, 0x79, 0x21, 0x85, 0x18, 0x48, 0x72, 0x73, 0x86, 0x02, 0xea, 0xf4, 0xa8, 0x0f, 0x45, 0x95, 0xf7, 0x8f, 0xd4, 0xa4, 0x61, 0x0b, 0xf8, 0x22, 0x0b, 0x86, 0xa2, 0x88, 0x5f, 0xda, 0x24, 0xe1, 0x99, 0x64, 0x28, 0xcc, 0xd1, 0x5f, 0x20, 0x08, 0xe0, 0x68, 0x51, 0xb2, 0xee, 0xad, 0xc3, 0xdc, 0x8e, 0x03, 0x01, 0x2f, 0x9b, 0xdb, 0x3c, 0xe0, 0x57, 0x5d, 0xdc, 0x3a, 0xdc, 0x7c, 0x59, 0x08, 0x49, 0x8b, 0x69, 0xa7, 0x97, 0xba, 0x58, 0x29, 0xc7 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.8", - /* Message to be signed */ - 29, - { 0x22, 0xeb, 0x7d, 0xba, 0x73, 0x30, 0x7c, 0x7c, 0x52, 0xa0, 0x7c, 0xed, 0x89, 0xdb, 0x8b, 0xc5, 0x39, 0x4a, 0xed, 0x22, 0x72, 0xf7, 0xe8, 0x1a, 0x74, 0xf4, 0xc0, 0x2d, 0x14 } -, - /* Signature */ - 128, - { 0x9e, 0xa4, 0x60, 0x0a, 0x1a, 0x65, 0x49, 0xfd, 0x39, 0x75, 0xf6, 0x49, 0x8a, 0x04, 0xd6, 0x9f, 0x96, 0xfa, 0xd0, 0xe8, 0xe6, 0xfe, 0xbc, 0xfb, 0xe0, 0x1c, 0x2f, 0x83, 0x17, 0x0b, 0xc7, 0x4e, 0xb9, 0x1f, 0x2e, 0x33, 0x53, 0x38, 0xd5, 0x83, 0xe8, 0x85, 0xaa, 0xc6, 0x14, 0x24, 0xc9, 0xb2, 0x66, 0xc3, 0xd2, 0xd9, 0x8e, 0x79, 0x77, 0xff, 0xe4, 0x95, 0xf9, 0xc1, 0xa6, 0xee, 0x5e, 0xf4, 0x1a, 0x4c, 0xc7, 0x47, 0x8c, 0x24, 0xb3, 0x16, 0xc7, 0xd9, 0xf6, 0xdb, 0xaa, 0x65, 0xa4, 0xca, 0xde, 0xf1, 0x81, 0xca, 0x94, 0x6f, 0x9b, 0x92, 0x18, 0x4f, 0xae, 0xca, 0x8a, 0x13, 0x16, 0xae, 0xab, 0x5c, 0xd3, 0x87, 0x8c, 0x6d, 0xf0, 0x74, 0xf9, 0x06, 0x0b, 0x9d, 0xb6, 0x6d, 0xec, 0xe9, 0xa9, 0x36, 0x7d, 0x75, 0x49, 0x03, 0x5a, 0xc6, 0xbf, 0x19, 0x62, 0x36, 0x5e, 0x1f, 0xd3, 0xfc } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.9", - /* Message to be signed */ - 2, - { 0xf6, 0x80 } -, - /* Signature */ - 128, - { 0x51, 0x63, 0x90, 0x61, 0xfa, 0x7b, 0x7c, 0xd5, 0xdf, 0x64, 0xb3, 0x0a, 0x39, 0x4c, 0xcf, 0x7e, 0x24, 0x26, 0x97, 0x2a, 0xa1, 0xdc, 0xf5, 0xd4, 0x5e, 0xb8, 0xec, 0x2c, 0xd9, 0x0b, 0x9b, 0x19, 0x68, 0x92, 0xbe, 0x5f, 0xa0, 0x3c, 0x43, 0xf3, 0xc3, 0x72, 0x3a, 0xe3, 0x13, 0x0d, 0x61, 0x51, 0xb3, 0x3a, 0x63, 0x7c, 0xfc, 0x50, 0xba, 0x35, 0x26, 0xa7, 0x39, 0x6c, 0xf8, 0x47, 0x9c, 0x50, 0x8c, 0x18, 0x11, 0x81, 0x0d, 0x68, 0xb3, 0x88, 0x0a, 0xf6, 0xe6, 0x4b, 0x16, 0xbd, 0x70, 0x79, 0xbe, 0x9c, 0x00, 0x39, 0x29, 0x51, 0x22, 0x61, 0x89, 0x8f, 0xa5, 0x7c, 0x06, 0xff, 0x7e, 0x1d, 0x80, 0x39, 0xfa, 0x99, 0x3f, 0xd2, 0x05, 0x6a, 0xc7, 0x01, 0x9b, 0x8d, 0xbc, 0xf2, 0x53, 0x0d, 0x53, 0x80, 0xe6, 0x01, 0xa4, 0xa1, 0x87, 0x1b, 0x86, 0xc2, 0x0b, 0xc1, 0xc4, 0x89, 0xc5, 0xf3 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.10", - /* Message to be signed */ - 104, - { 0x65, 0x0e, 0x64, 0xed, 0x1d, 0xa8, 0x8b, 0xcf, 0x8a, 0xe2, 0x75, 0x22, 0xbe, 0x1d, 0x5c, 0x99, 0x19, 0xf2, 0x09, 0x9d, 0xd6, 0x32, 0x45, 0x5f, 0x66, 0xd9, 0xaf, 0xe8, 0xba, 0xf4, 0x6c, 0xc8, 0xa1, 0x98, 0x40, 0x9b, 0x09, 0x28, 0xdd, 0x87, 0x22, 0x62, 0x84, 0xd6, 0x69, 0xbf, 0x01, 0xbc, 0xec, 0x44, 0x37, 0x6c, 0xb0, 0xe9, 0xbd, 0xc6, 0x86, 0xac, 0xaa, 0x8b, 0x46, 0x34, 0x86, 0x08, 0x59, 0x94, 0xca, 0xfb, 0x5a, 0x8c, 0xfc, 0x33, 0xd4, 0x9c, 0xee, 0xf4, 0x79, 0xfc, 0x6e, 0x04, 0xf8, 0xee, 0xf6, 0x37, 0xeb, 0x68, 0xcb, 0x57, 0x81, 0x8d, 0x5f, 0x97, 0x70, 0xac, 0x52, 0x3e, 0xd5, 0xb0, 0x16, 0x38, 0x36, 0x7f, 0xf4, 0x7f } -, - /* Signature */ - 128, - { 0x50, 0x3e, 0x05, 0x66, 0x1d, 0x68, 0x1e, 0xca, 0x57, 0x4e, 0x02, 0x30, 0xaf, 0x2d, 0xaa, 0x87, 0x7b, 0x90, 0x51, 0x6e, 0x5e, 0x19, 0x72, 0x8c, 0x91, 0x76, 0x8d, 0x6e, 0xef, 0xee, 0x00, 0x1b, 0x35, 0x41, 0x9c, 0x5f, 0xcb, 0x56, 0x11, 0xd6, 0x0e, 0x7e, 0xcb, 0xe3, 0xc9, 0x5e, 0x5c, 0x88, 0xba, 0x93, 0x46, 0x07, 0x04, 0xf1, 0x69, 0x4a, 0xe8, 0x04, 0x44, 0xeb, 0x97, 0x18, 0xa0, 0x8b, 0x66, 0x86, 0xfa, 0xd8, 0x6e, 0x52, 0x59, 0x90, 0xc3, 0xc1, 0xa6, 0x6c, 0x8c, 0x53, 0xaa, 0x31, 0xae, 0xd8, 0xcb, 0xc4, 0x0f, 0xd5, 0x4f, 0x5f, 0xf8, 0xa1, 0x34, 0x74, 0x9d, 0x79, 0xd3, 0x8f, 0xbb, 0x0d, 0x58, 0x44, 0x26, 0x78, 0xff, 0x2f, 0x70, 0xc6, 0xc5, 0x0f, 0x25, 0x47, 0x2a, 0x72, 0xd6, 0x32, 0x05, 0xe7, 0x82, 0x42, 0x3d, 0xf4, 0x0b, 0x6c, 0x43, 0xde, 0x03, 0xa1, 0x8f, 0x8b } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.11", - /* Message to be signed */ - 50, - { 0x57, 0xf8, 0xac, 0x6a, 0x9e, 0x46, 0x8b, 0x7f, 0x1f, 0x74, 0x5d, 0xff, 0xe3, 0x9e, 0x9c, 0xbf, 0x90, 0x24, 0xa0, 0xff, 0x36, 0xe0, 0x22, 0x83, 0x92, 0xbe, 0x6b, 0x29, 0x94, 0x29, 0x17, 0x76, 0xb8, 0x9c, 0x0a, 0x4b, 0x1f, 0xa8, 0x6b, 0x2e, 0xc8, 0xbb, 0x7c, 0x3e, 0x64, 0xf5, 0x58, 0x5a, 0xfa, 0x77 } -, - /* Signature */ - 128, - { 0x90, 0xbe, 0x16, 0xb4, 0x08, 0xb3, 0x85, 0x73, 0x95, 0x39, 0xb3, 0xb9, 0xa2, 0x9b, 0x94, 0xc7, 0x29, 0x38, 0x5f, 0x79, 0xdd, 0x4a, 0x79, 0x81, 0x1e, 0x6f, 0x67, 0xc8, 0x0e, 0xd3, 0x59, 0xe5, 0xf4, 0xb2, 0xa1, 0x9c, 0x22, 0x2a, 0x82, 0xb3, 0xd6, 0xd6, 0x2a, 0x90, 0x3f, 0xb1, 0x80, 0xc1, 0xf4, 0x3c, 0xb3, 0xfe, 0x06, 0xa2, 0x50, 0xbc, 0xb0, 0xe7, 0xc6, 0x88, 0x66, 0x5c, 0x83, 0x68, 0xa1, 0x1a, 0xb1, 0x16, 0x0a, 0xdb, 0x74, 0x02, 0x91, 0x35, 0x2b, 0x38, 0x38, 0xb6, 0x92, 0x3a, 0x4a, 0x37, 0xad, 0x06, 0x04, 0x0a, 0x53, 0x59, 0x20, 0xdc, 0x0f, 0x10, 0x57, 0x9e, 0xcf, 0x48, 0x1c, 0xd4, 0x41, 0x37, 0x17, 0xd7, 0xd4, 0xd9, 0x60, 0xaa, 0x75, 0x1a, 0x74, 0x3e, 0x2f, 0x7c, 0x61, 0x6e, 0x54, 0x2e, 0xe6, 0x5f, 0xbb, 0xfe, 0x24, 0x66, 0x0e, 0x10, 0x1d, 0xaa, 0x2b, 0xdd } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.12", - /* Message to be signed */ - 77, - { 0x80, 0xef, 0x01, 0xaa, 0xcc, 0x5b, 0xfb, 0x0d, 0xb4, 0x8c, 0x6d, 0xe3, 0xd8, 0x14, 0x95, 0xb9, 0xc2, 0x31, 0x1a, 0x38, 0x93, 0x89, 0xf2, 0x3b, 0x70, 0xc0, 0x24, 0xda, 0x44, 0x78, 0xbf, 0xab, 0x2b, 0xfe, 0x4e, 0x54, 0x6f, 0x13, 0xff, 0xfd, 0xb9, 0x63, 0x89, 0x4e, 0xc6, 0xda, 0xdb, 0x3d, 0x2b, 0x0e, 0xe3, 0x37, 0xf1, 0x16, 0x31, 0x05, 0x8e, 0xac, 0x86, 0x09, 0xe5, 0xa1, 0x55, 0x4a, 0xf7, 0x97, 0xa9, 0xf9, 0xab, 0x47, 0x8c, 0x2d, 0x5b, 0x91, 0x88, 0xc8, 0x25 } -, - /* Signature */ - 128, - { 0x44, 0xc3, 0xf5, 0x1d, 0xcc, 0x6f, 0xb2, 0xb4, 0xe7, 0x0f, 0x53, 0x7f, 0x54, 0x64, 0xc6, 0x32, 0x0a, 0xd4, 0x2e, 0x21, 0x28, 0xfa, 0xdf, 0xd9, 0xa7, 0xe9, 0x37, 0xcd, 0x65, 0xdc, 0xbf, 0x35, 0xac, 0x66, 0xcf, 0xfa, 0xfd, 0x39, 0x28, 0x39, 0x66, 0xf2, 0xf1, 0x5d, 0xe5, 0x27, 0x72, 0x35, 0x50, 0x71, 0x5a, 0x31, 0x04, 0x29, 0x45, 0xe2, 0x00, 0xcc, 0x5c, 0x86, 0xfa, 0xba, 0x5e, 0xc8, 0xab, 0xaf, 0x50, 0x9c, 0x0c, 0xcd, 0x64, 0xd9, 0x9d, 0xed, 0xc7, 0x6e, 0x3c, 0xea, 0xa8, 0xc4, 0x47, 0x17, 0x93, 0x37, 0xf4, 0xa0, 0x77, 0x7b, 0x11, 0x52, 0x6e, 0x47, 0x2a, 0xcd, 0x41, 0x3b, 0x4a, 0xc7, 0xc3, 0x03, 0xcd, 0xcd, 0x84, 0xca, 0xfc, 0x02, 0x52, 0x43, 0xef, 0x00, 0x6f, 0x79, 0xdd, 0xaf, 0x55, 0xc1, 0x5c, 0xc4, 0xa8, 0xf1, 0x5e, 0xa2, 0xc8, 0x7f, 0x05, 0x77, 0x38, 0x14 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.13", - /* Message to be signed */ - 184, - { 0xac, 0x17, 0x95, 0x91, 0x55, 0x28, 0x3b, 0x0c, 0x7c, 0xff, 0x51, 0x5c, 0x33, 0x15, 0xd8, 0x9b, 0xdf, 0xe9, 0x58, 0x7c, 0xc0, 0x01, 0x20, 0xd3, 0xab, 0x31, 0xbb, 0x76, 0x07, 0xbd, 0xb3, 0x01, 0xca, 0xea, 0xf5, 0xe1, 0x5f, 0x5a, 0x6f, 0x58, 0xc9, 0xc5, 0x68, 0xff, 0xb3, 0xd2, 0x34, 0x02, 0x51, 0x6f, 0xfe, 0x23, 0x0c, 0x69, 0x81, 0xa8, 0x1c, 0x17, 0x8a, 0x8a, 0x18, 0xca, 0x33, 0x0b, 0xb8, 0xec, 0xaf, 0xb4, 0x81, 0xb2, 0x49, 0xb4, 0x66, 0xa8, 0xcf, 0x78, 0xb7, 0x0d, 0x9e, 0x78, 0xa1, 0x39, 0xa8, 0x8f, 0x48, 0x4c, 0xce, 0x7c, 0x20, 0x35, 0xb2, 0xe8, 0x9d, 0x49, 0x3b, 0xde, 0x88, 0x5e, 0x1c, 0xde, 0x42, 0xcb, 0x1a, 0x94, 0x49, 0xff, 0x57, 0x0d, 0xcf, 0x9e, 0x33, 0xc5, 0xcc, 0x77, 0xb2, 0x59, 0xbe, 0xe2, 0x83, 0x05, 0x39, 0x68, 0x02, 0xed, 0xc1, 0x6f, 0xc5, 0xa8, 0xe1, 0x0b, 0x56, 0xda, 0x2d, 0xa7, 0x86, 0xb5, 0xfb, 0x6c, 0x81, 0x2b, 0x2e, 0x17, 0x5b, 0x69, 0x6b, 0x1a, 0x9a, 0x96, 0xfc, 0x72, 0x2a, 0x43, 0x21, 0x46, 0x45, 0x0f, 0x07, 0xa6, 0x48, 0xef, 0x3c, 0xcf, 0x99, 0x6e, 0xf3, 0x08, 0x1f, 0xa5, 0xbb, 0x42, 0x21, 0xc9, 0x13, 0xba, 0x22, 0x28, 0x97, 0x0c, 0x9b, 0x0e, 0xa5, 0x26, 0x6b, 0xff } -, - /* Signature */ - 128, - { 0x48, 0x45, 0x8c, 0x72, 0xf0, 0x67, 0xdd, 0x9a, 0xb7, 0x20, 0xef, 0x16, 0x0c, 0xf3, 0x18, 0x4b, 0xb9, 0x80, 0x1e, 0x26, 0xd6, 0x14, 0xa8, 0x89, 0xa8, 0x35, 0x84, 0x41, 0x07, 0xac, 0x01, 0x65, 0x0b, 0x11, 0x84, 0xa0, 0x0b, 0xca, 0xa7, 0xaf, 0x1f, 0xf7, 0xde, 0x3a, 0x2e, 0xf2, 0xe7, 0xce, 0xb5, 0xb2, 0x5c, 0x3b, 0x5d, 0x5b, 0xcb, 0x29, 0x86, 0x59, 0x34, 0x32, 0x47, 0x48, 0xc6, 0x8f, 0x07, 0xde, 0x17, 0x4e, 0x17, 0x80, 0xa7, 0x0f, 0xa2, 0x4d, 0x6a, 0x3a, 0x9f, 0x7a, 0x41, 0xb8, 0x19, 0x37, 0xc4, 0x98, 0x4b, 0x2c, 0xbe, 0x06, 0xb3, 0xd7, 0xb4, 0x4c, 0xda, 0xe9, 0xcb, 0xd4, 0x16, 0x32, 0xd0, 0x09, 0x43, 0xc3, 0xb5, 0x73, 0xb1, 0xaa, 0x29, 0x12, 0x75, 0x0a, 0x9a, 0xeb, 0x07, 0xf1, 0x10, 0x13, 0x0b, 0xa3, 0x61, 0xdc, 0xf8, 0xf5, 0x36, 0x79, 0x0d, 0x60, 0x78, 0x47 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.14", - /* Message to be signed */ - 232, - { 0x99, 0x09, 0x8f, 0x77, 0xf6, 0xed, 0x35, 0xc0, 0x8f, 0xab, 0x3f, 0xa9, 0x78, 0x86, 0x93, 0x67, 0x1a, 0x58, 0x00, 0xdc, 0x30, 0x3c, 0x9c, 0xce, 0x42, 0x46, 0x16, 0xfa, 0x0c, 0x7e, 0xe8, 0x88, 0x86, 0x87, 0x67, 0x4c, 0xa8, 0x8a, 0xb2, 0x2a, 0x5f, 0xf2, 0xd1, 0x2e, 0x2b, 0x38, 0x8b, 0x09, 0x4f, 0xfd, 0x7d, 0xbf, 0x9a, 0x09, 0x27, 0xa9, 0x62, 0x17, 0x17, 0x15, 0x1e, 0x08, 0xec, 0xb8, 0xad, 0xe1, 0x55, 0x9f, 0x4b, 0x48, 0xe2, 0x3d, 0x31, 0xcf, 0x57, 0xcd, 0x38, 0x84, 0xdf, 0xe2, 0xb3, 0xe4, 0xb2, 0x60, 0xe8, 0x96, 0x02, 0x94, 0x07, 0x96, 0x94, 0x96, 0x02, 0x6c, 0x74, 0xa2, 0x18, 0x90, 0xd9, 0xa9, 0xaf, 0xd2, 0xcb, 0xb8, 0xf2, 0x83, 0x0a, 0x56, 0x6a, 0xed, 0x24, 0xf0, 0x16, 0x19, 0x74, 0x01, 0xa8, 0xcd, 0x22, 0xc8, 0x2f, 0xb8, 0xb2, 0x28, 0x91, 0x84, 0x58, 0x24, 0x0a, 0x23, 0xd1, 0x01, 0x85, 0xeb, 0xe7, 0x72, 0xdc, 0x19, 0xbc, 0xfe, 0x3e, 0x44, 0x92, 0x2f, 0xe7, 0x32, 0x09, 0xc1, 0xee, 0x00, 0x40, 0x07, 0x9f, 0xb0, 0x3b, 0x82, 0x7c, 0x82, 0x17, 0xd9, 0xed, 0x7c, 0x98, 0xc9, 0x5f, 0x30, 0x97, 0x4f, 0xbe, 0x4f, 0xbd, 0xdc, 0xf0, 0xf2, 0x8d, 0x60, 0x21, 0xc0, 0xe9, 0x1d, 0xa6, 0x0c, 0xa2, 0xad, 0x77, 0x79, 0x7e, 0xce, 0x86, 0xde, 0x5b, 0xf7, 0x68, 0x75, 0x0d, 0xdb, 0x5e, 0xd6, 0xa3, 0x11, 0x6a, 0xd9, 0x9b, 0xbd, 0x17, 0xed, 0xf7, 0xf7, 0x82, 0xf0, 0xdb, 0x1c, 0xd0, 0x5b, 0x0f, 0x67, 0x74, 0x68, 0xc5, 0xea, 0x42, 0x0d, 0xc1, 0x16, 0xb1, 0x0e, 0x80, 0xd1, 0x10, 0xde, 0x2b, 0x04 } -, - /* Signature */ - 128, - { 0xb4, 0x6a, 0xe8, 0x66, 0x13, 0x91, 0x89, 0xb6, 0xb1, 0x71, 0xa7, 0x62, 0x05, 0xfb, 0x9c, 0xe0, 0x41, 0xb4, 0x02, 0x98, 0xe5, 0xba, 0x92, 0xc2, 0xe9, 0xcc, 0x0b, 0xbf, 0xbb, 0x4a, 0x76, 0x42, 0x5d, 0xe6, 0xce, 0x13, 0x02, 0x1a, 0xe1, 0xa4, 0xa9, 0x42, 0x29, 0x9f, 0x98, 0xff, 0x89, 0xf5, 0x52, 0xf4, 0x3a, 0x90, 0x73, 0xde, 0x64, 0xf4, 0x9c, 0x2c, 0xa3, 0x62, 0x0d, 0x09, 0xd7, 0xe6, 0xe3, 0xfe, 0x28, 0x22, 0x1e, 0x93, 0x68, 0x98, 0x7e, 0x11, 0x0c, 0xd6, 0x06, 0x71, 0x06, 0xc4, 0xdb, 0x31, 0xa0, 0x38, 0x90, 0x23, 0x67, 0x96, 0xc8, 0x42, 0x52, 0xf5, 0x6c, 0x95, 0x03, 0x4a, 0x01, 0xc5, 0xfe, 0x98, 0x1e, 0x81, 0xb6, 0x54, 0x85, 0x5a, 0xaf, 0x27, 0x47, 0x50, 0x11, 0x55, 0x72, 0x0c, 0x21, 0x93, 0xf3, 0xa1, 0xd1, 0x0f, 0x49, 0xfe, 0xe9, 0x0c, 0x52, 0xfe, 0xe9, 0xe4 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.15", - /* Message to be signed */ - 33, - { 0xff, 0x79, 0x06, 0x42, 0x30, 0x5b, 0xf3, 0x02, 0x00, 0x38, 0x92, 0xe5, 0x4d, 0xf9, 0xf6, 0x67, 0x50, 0x9d, 0xc5, 0x39, 0x20, 0xdf, 0x58, 0x3f, 0x50, 0xa3, 0xdd, 0x61, 0xab, 0xb6, 0xfa, 0xb7, 0x5d } -, - /* Signature */ - 128, - { 0x07, 0x56, 0x32, 0x47, 0x73, 0x4f, 0x3c, 0x3d, 0x7a, 0x31, 0x02, 0xbc, 0xb4, 0x5b, 0xb5, 0x68, 0x15, 0x68, 0xed, 0x10, 0xf2, 0xec, 0x45, 0x9e, 0x46, 0x9e, 0x1a, 0x9e, 0x34, 0x09, 0xa1, 0x39, 0xfb, 0x15, 0x1b, 0x98, 0xd3, 0xf3, 0xb6, 0x2d, 0xaa, 0xac, 0x8b, 0x8f, 0x89, 0x16, 0xdf, 0x85, 0xd6, 0xdf, 0xa9, 0xab, 0x76, 0x0d, 0xf1, 0xe1, 0x5a, 0xc8, 0x90, 0x44, 0xe5, 0x79, 0xcf, 0x47, 0xa1, 0xaf, 0x6c, 0xd6, 0xec, 0x70, 0x4c, 0xed, 0x9b, 0x03, 0x4c, 0x6a, 0xaa, 0x90, 0xd0, 0xe7, 0x0e, 0x08, 0x52, 0x14, 0x0e, 0x75, 0x41, 0xf2, 0xef, 0xbe, 0x2c, 0xf1, 0x90, 0xb9, 0x58, 0x94, 0x1e, 0xc8, 0xb5, 0x97, 0x4f, 0x9c, 0x44, 0x4d, 0x26, 0xc3, 0x43, 0x16, 0xc9, 0x21, 0x6b, 0x65, 0x95, 0xe6, 0x56, 0xbc, 0x6c, 0x78, 0x44, 0xfa, 0xc1, 0x6c, 0x51, 0x52, 0x60, 0x92, 0x8e, 0x78 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.16", - /* Message to be signed */ - 91, - { 0xe9, 0x9f, 0xcb, 0xf8, 0x59, 0x2d, 0xbe, 0x2d, 0x7e, 0x27, 0x45, 0x3c, 0xb4, 0x4d, 0xe0, 0x71, 0x00, 0xeb, 0xb1, 0xa2, 0xa1, 0x98, 0x11, 0xa4, 0x78, 0xad, 0xbe, 0xab, 0x27, 0x0f, 0x94, 0xe8, 0xfe, 0x36, 0x9d, 0x90, 0xb3, 0xca, 0x61, 0x2f, 0x9f, 0x22, 0xd7, 0x1d, 0x54, 0x36, 0x3a, 0x42, 0x17, 0xaa, 0x55, 0x11, 0x3f, 0x05, 0x9b, 0x33, 0x84, 0xe3, 0xe5, 0x7e, 0x44, 0x52, 0x28, 0x80, 0x62, 0xaf, 0xc0, 0x8f, 0xcd, 0xb7, 0xc5, 0xf8, 0x65, 0x0b, 0x29, 0x83, 0x73, 0x00, 0x46, 0x1d, 0xd5, 0x67, 0x6c, 0x17, 0xa2, 0x0a, 0x3c, 0x8f, 0xb5, 0x14, 0x89 } -, - /* Signature */ - 128, - { 0x22, 0x74, 0x64, 0x36, 0x16, 0x4e, 0x63, 0x93, 0x78, 0x71, 0xc1, 0xd4, 0x7d, 0x8e, 0x3e, 0x70, 0xc9, 0xe5, 0x2d, 0x11, 0x17, 0x31, 0x6b, 0xb1, 0x54, 0xcd, 0x55, 0x2e, 0x83, 0x6f, 0x2a, 0x3f, 0xbe, 0x6d, 0x89, 0xd6, 0x07, 0x4b, 0x51, 0xb0, 0x15, 0x9c, 0x26, 0xc2, 0x8d, 0xf7, 0x5e, 0x3d, 0x7c, 0xfb, 0x7c, 0xf0, 0x02, 0xf6, 0x5d, 0x1e, 0xe5, 0x21, 0xed, 0xc2, 0xc3, 0xa6, 0x5c, 0x52, 0x6c, 0x98, 0xc7, 0xc0, 0x25, 0xfa, 0x8b, 0xb6, 0x31, 0x47, 0x09, 0x16, 0xd3, 0x01, 0xb8, 0xf7, 0x80, 0x9d, 0xdd, 0x91, 0x9d, 0xed, 0x31, 0xa0, 0xd4, 0x66, 0x83, 0xec, 0x5b, 0xb4, 0x41, 0x70, 0x61, 0x6e, 0xab, 0xcd, 0x97, 0x02, 0x05, 0xed, 0x76, 0x02, 0x02, 0xd0, 0xd8, 0x7a, 0x65, 0x79, 0x59, 0x08, 0xb2, 0x8d, 0x32, 0x6f, 0x93, 0x62, 0x13, 0xf2, 0x9f, 0xeb, 0x59, 0x77, 0x34, 0x91 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.17", - /* Message to be signed */ - 224, - { 0x6a, 0x6a, 0x0c, 0x9b, 0x5b, 0x15, 0xbc, 0xda, 0x19, 0x6a, 0x9d, 0x0c, 0x76, 0xb1, 0x19, 0xd5, 0x34, 0xd8, 0x5a, 0xbd, 0x12, 0x39, 0x62, 0xd5, 0x83, 0xb7, 0x6c, 0xe9, 0xd1, 0x80, 0xbc, 0xe1, 0xca, 0x4a, 0xf8, 0x70, 0xfb, 0xc6, 0x51, 0x60, 0x12, 0xca, 0x91, 0x6c, 0x70, 0xba, 0x86, 0x2a, 0xc7, 0xe8, 0x24, 0x36, 0x17, 0x30, 0x6f, 0x4f, 0x9a, 0xb9, 0x50, 0x11, 0x99, 0xce, 0xf5, 0x5c, 0x6c, 0xf4, 0x08, 0xfe, 0x7b, 0x36, 0xc5, 0x57, 0xc4, 0x9d, 0x42, 0x0a, 0x47, 0x63, 0xd2, 0x46, 0x3c, 0x8a, 0xd4, 0x4b, 0x3c, 0xfc, 0x5b, 0xe2, 0x74, 0x2c, 0x0e, 0x7d, 0x9b, 0x0f, 0x66, 0x08, 0xf0, 0x8c, 0x7f, 0x47, 0xb6, 0x93, 0xee, 0x40, 0xd2, 0xe1, 0x80, 0xfa, 0xe1, 0xea, 0xc4, 0x39, 0xc1, 0x90, 0xb5, 0x6c, 0x2c, 0x0e, 0x14, 0xdd, 0xf9, 0xa2, 0x26, 0xba, 0xe1, 0x7d, 0x20, 0x38, 0x5d, 0x50, 0x19, 0x55, 0x82, 0x3c, 0x3f, 0x66, 0x62, 0x54, 0xc1, 0xd3, 0xdd, 0x36, 0xad, 0x51, 0x68, 0xb8, 0xf1, 0x8d, 0x28, 0x6f, 0xdc, 0xf6, 0x7a, 0x7d, 0xad, 0x94, 0x09, 0x70, 0x85, 0xfa, 0xb7, 0xed, 0x86, 0xfe, 0x21, 0x42, 0xa2, 0x87, 0x71, 0x71, 0x79, 0x97, 0xef, 0x1a, 0x7a, 0x08, 0x88, 0x4e, 0xfc, 0x39, 0x35, 0x6d, 0x76, 0x07, 0x7a, 0xaf, 0x82, 0x45, 0x9a, 0x7f, 0xad, 0x45, 0x84, 0x88, 0x75, 0xf2, 0x81, 0x9b, 0x09, 0x89, 0x37, 0xfe, 0x92, 0x3b, 0xcc, 0x9d, 0xc4, 0x42, 0xd7, 0x2d, 0x75, 0x4d, 0x81, 0x20, 0x25, 0x09, 0x0c, 0x9b, 0xc0, 0x3d, 0xb3, 0x08, 0x0c, 0x13 } -, - /* Signature */ - 128, - { 0x41, 0x93, 0x22, 0xfa, 0xca, 0xce, 0x76, 0xf2, 0xd5, 0xe2, 0xfb, 0xc1, 0x9a, 0xab, 0x86, 0xc7, 0x18, 0xa2, 0x80, 0x64, 0xf1, 0xd7, 0xb4, 0xc6, 0x62, 0xf0, 0x47, 0x4a, 0x87, 0x77, 0xa9, 0x59, 0xbd, 0x65, 0x69, 0x53, 0x8c, 0x16, 0x08, 0x1c, 0x0f, 0x52, 0x69, 0x8b, 0x2f, 0x00, 0x17, 0x30, 0xc0, 0x3b, 0x9a, 0x3d, 0x26, 0x94, 0x73, 0x74, 0xc9, 0x61, 0xfd, 0xed, 0xa1, 0x15, 0xb6, 0xb7, 0xda, 0xf6, 0x65, 0x18, 0xf1, 0xfe, 0x82, 0x0f, 0x67, 0xc3, 0xff, 0x12, 0xf0, 0xbc, 0x3f, 0x11, 0x01, 0xe3, 0x91, 0x1c, 0x43, 0x90, 0x6b, 0x0a, 0x12, 0x7e, 0x50, 0xbe, 0x01, 0x40, 0xc5, 0xef, 0xc4, 0x35, 0xe2, 0x95, 0x7b, 0x44, 0x2e, 0x60, 0xad, 0x52, 0x5a, 0xd7, 0x0a, 0xc9, 0xef, 0x61, 0xc3, 0xd6, 0x4f, 0x0e, 0x56, 0x6c, 0xbc, 0x1f, 0x9d, 0x51, 0xba, 0xe1, 0xd4, 0x72, 0x71, 0xda } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.18", - /* Message to be signed */ - 56, - { 0x3b, 0x93, 0xef, 0x4a, 0x55, 0x50, 0x96, 0x69, 0x19, 0x15, 0xdc, 0x23, 0xc0, 0x0e, 0x95, 0x4c, 0xde, 0xb2, 0x0a, 0x47, 0xcd, 0x55, 0xd1, 0x6c, 0x3d, 0x86, 0x81, 0xd4, 0x6e, 0xd7, 0xf2, 0xed, 0x5e, 0xa4, 0x27, 0x95, 0xbe, 0x17, 0xba, 0xed, 0x25, 0xf0, 0xf4, 0xd1, 0x13, 0xb3, 0x63, 0x6a, 0xdd, 0xd5, 0x85, 0xf1, 0x6a, 0x8b, 0x5a, 0xec } -, - /* Signature */ - 128, - { 0xae, 0x21, 0x1f, 0x4f, 0x77, 0xda, 0x1b, 0xe6, 0xaf, 0x9c, 0x9e, 0xa7, 0x04, 0xdb, 0xac, 0x4b, 0x3f, 0x3e, 0x27, 0x0d, 0x2f, 0xac, 0xf3, 0x65, 0x1d, 0x78, 0x7d, 0x0e, 0xbf, 0x59, 0xa7, 0x9a, 0x39, 0x61, 0x2d, 0xa1, 0x2d, 0x57, 0xc4, 0xac, 0x8a, 0xbc, 0x72, 0x8e, 0x1d, 0xa3, 0xf0, 0x1a, 0x15, 0x20, 0xfc, 0x9b, 0x32, 0xcb, 0x0f, 0xfe, 0x00, 0x8c, 0x80, 0x69, 0x92, 0x8f, 0x83, 0xe1, 0x35, 0x90, 0xa7, 0x8b, 0x81, 0x7e, 0x81, 0x9f, 0xbf, 0x2f, 0xd0, 0x58, 0x93, 0xec, 0xe5, 0xb1, 0x41, 0x86, 0xd9, 0x01, 0xc7, 0x68, 0xe3, 0x42, 0xdc, 0x54, 0x72, 0x23, 0x45, 0xae, 0x8a, 0xa8, 0x73, 0x8d, 0x4d, 0x59, 0x70, 0xc5, 0x08, 0x54, 0x72, 0xbd, 0x98, 0x99, 0xfa, 0x00, 0x42, 0xcf, 0x14, 0xbc, 0xed, 0xff, 0xdb, 0xc0, 0xef, 0x50, 0x81, 0x90, 0x75, 0x84, 0x2f, 0xc3, 0x6b, 0xb8 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.19", - /* Message to be signed */ - 62, - { 0x49, 0xff, 0xd5, 0x6b, 0xf7, 0xef, 0xc1, 0x13, 0x04, 0xa5, 0xaf, 0xbc, 0x19, 0xd4, 0x79, 0x24, 0x90, 0x18, 0xfd, 0xf4, 0xe0, 0x9f, 0x61, 0x87, 0x26, 0x44, 0x04, 0x95, 0xde, 0x11, 0xdd, 0xee, 0xe3, 0x88, 0x72, 0xd7, 0x75, 0xfc, 0xea, 0x74, 0xa2, 0x38, 0x96, 0xb5, 0x34, 0x3c, 0x9c, 0x38, 0xd4, 0x6a, 0xf0, 0xdb, 0xa2, 0x24, 0xd0, 0x47, 0x58, 0x0c, 0xc6, 0x0a, 0x65, 0xe9 } -, - /* Signature */ - 128, - { 0x68, 0xfb, 0x0b, 0xd5, 0x19, 0xbf, 0x6f, 0x96, 0xe0, 0x76, 0xaf, 0x29, 0x01, 0x2f, 0x3c, 0x3a, 0x11, 0x37, 0xc0, 0x98, 0x8d, 0xe7, 0xb6, 0xfc, 0xed, 0xf4, 0xf5, 0x1b, 0xdf, 0xee, 0x64, 0x5b, 0x89, 0x7f, 0x17, 0x70, 0x9e, 0x05, 0xca, 0xa0, 0xb1, 0x13, 0x50, 0x0d, 0x90, 0x4d, 0xc0, 0x60, 0x0d, 0x17, 0xa9, 0xff, 0x8e, 0xb0, 0x2e, 0x1e, 0xfc, 0x9c, 0x46, 0x7a, 0x24, 0x00, 0x3e, 0xf8, 0x1e, 0x72, 0x74, 0x67, 0xc4, 0x7d, 0xd6, 0x56, 0x35, 0x6d, 0x70, 0x37, 0x2a, 0x15, 0xea, 0x88, 0x41, 0x21, 0x63, 0x4b, 0x01, 0x5d, 0x29, 0x51, 0x1f, 0x28, 0x95, 0x55, 0x77, 0x99, 0x07, 0x9d, 0x03, 0xc6, 0xd4, 0xde, 0x25, 0x9b, 0x3b, 0x36, 0x2b, 0x80, 0x49, 0x2d, 0x81, 0xbc, 0x9f, 0xe8, 0x54, 0x44, 0x63, 0xec, 0x03, 0x0b, 0xb5, 0xc9, 0xc7, 0x3c, 0x32, 0x74, 0xe3, 0xed, 0x12, 0x22 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 3.20", - /* Message to be signed */ - 136, - { 0xbc, 0x25, 0x5a, 0xf8, 0x9a, 0x6a, 0x19, 0x9b, 0xca, 0x4a, 0x39, 0x1e, 0xad, 0xbc, 0x3a, 0x24, 0x90, 0x3c, 0x0b, 0xd6, 0x67, 0x36, 0x8f, 0x6b, 0xe7, 0x8e, 0x3f, 0xea, 0xbf, 0xb4, 0xff, 0xd4, 0x63, 0x12, 0x27, 0x63, 0x74, 0x0f, 0xfb, 0xbe, 0xfe, 0xab, 0x9a, 0x25, 0x56, 0x4b, 0xc5, 0xd1, 0xc2, 0x4c, 0x93, 0xe4, 0x22, 0xf7, 0x50, 0x73, 0xe2, 0xad, 0x72, 0xbf, 0x45, 0xb1, 0x0d, 0xf0, 0x0b, 0x52, 0xa1, 0x47, 0x12, 0x8e, 0x73, 0xfe, 0xe3, 0x3f, 0xa3, 0xf0, 0x57, 0x7d, 0x77, 0xf8, 0x0f, 0xbc, 0x2d, 0xf1, 0xbe, 0xd3, 0x13, 0x29, 0x0c, 0x12, 0x77, 0x7f, 0x50, 0xa3, 0x34, 0xdb, 0x6f, 0xae, 0xbf, 0x11, 0x08, 0x1a, 0x04, 0xf8, 0x7c, 0x2d, 0x62, 0x1c, 0xde, 0xc7, 0x93, 0x0b, 0x9b, 0x18, 0x3a, 0x99, 0x04, 0x75, 0xdc, 0xbb, 0x9c, 0xc7, 0xf3, 0x45, 0xa3, 0xb5, 0x58, 0x03, 0x03, 0x0c, 0xf0, 0x36, 0x1a, 0x5d, 0x80, 0x81 } -, - /* Signature */ - 128, - { 0x41, 0xf6, 0x52, 0xdf, 0x79, 0xfd, 0xd2, 0x6d, 0xe9, 0x5c, 0x7a, 0x98, 0xfa, 0x85, 0x87, 0x13, 0xfb, 0x56, 0x6d, 0x8b, 0x39, 0x92, 0x8e, 0x71, 0x76, 0x4b, 0x2b, 0xeb, 0x19, 0x84, 0x03, 0xe0, 0x3b, 0x7e, 0x06, 0xdc, 0x96, 0x0c, 0x50, 0x51, 0x57, 0xbd, 0xf4, 0x05, 0x92, 0xc4, 0xd7, 0x75, 0x03, 0xfb, 0x72, 0xa4, 0xe0, 0x05, 0x5f, 0x97, 0x4f, 0xe9, 0x39, 0x44, 0x8d, 0xa3, 0x68, 0xf5, 0x3b, 0xd2, 0xef, 0xe2, 0x6e, 0x6f, 0x9a, 0x25, 0x4b, 0x3e, 0x87, 0x32, 0xaa, 0xd8, 0x16, 0x87, 0xb3, 0x61, 0xe2, 0x1a, 0x40, 0xcf, 0x3e, 0x5e, 0x92, 0x38, 0x9a, 0x2b, 0x48, 0x9c, 0x05, 0xc5, 0x97, 0xf0, 0xe1, 0x64, 0xe2, 0x67, 0x70, 0x93, 0x72, 0x00, 0x43, 0x27, 0x16, 0x35, 0x62, 0xdd, 0x8a, 0x0a, 0xdb, 0xbd, 0xfe, 0x3b, 0xc6, 0x16, 0xbd, 0x08, 0x42, 0x96, 0x84, 0xc2, 0x0c, 0x69 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 4: A 1024-bit RSA key pair", -{ - /* Modulus */ - 128, - { 0xd1, 0x31, 0xe0, 0x92, 0x43, 0x37, 0x0d, 0xd2, 0xcd, 0x54, 0x25, 0xc8, 0xd0, 0x30, 0xf9, 0x9a, 0xdb, 0x10, 0x5b, 0x14, 0x7b, 0x8a, 0x3d, 0x00, 0x67, 0xc6, 0x16, 0x44, 0x3b, 0x7d, 0x4b, 0x96, 0x82, 0x38, 0xe0, 0x6d, 0xbb, 0x5f, 0x20, 0x28, 0xe8, 0x53, 0x57, 0x4b, 0x7c, 0x14, 0xbe, 0x10, 0x83, 0xc1, 0xe5, 0x7e, 0x13, 0x2c, 0x1d, 0xf4, 0xa3, 0xa2, 0x71, 0x32, 0x63, 0xfa, 0xde, 0x12, 0xf7, 0x11, 0x4f, 0x43, 0x69, 0xbb, 0xf0, 0x56, 0x20, 0x55, 0x48, 0x41, 0x33, 0x1e, 0xd8, 0x11, 0x00, 0x50, 0x52, 0x19, 0x25, 0x72, 0xce, 0xb4, 0x8d, 0x66, 0x24, 0x07, 0xfd, 0x30, 0x81, 0xcf, 0xab, 0x8b, 0x48, 0xc7, 0xe9, 0x2d, 0x3c, 0x4a, 0x26, 0xa9, 0x64, 0x5a, 0x38, 0xe6, 0xde, 0xe8, 0x8b, 0xb0, 0x07, 0x59, 0x75, 0xa4, 0xda, 0xd9, 0x64, 0x6b, 0x21, 0x60, 0x38, 0x40, 0xaf, 0x5f } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x56, 0xb5, 0x31, 0xbb, 0xee, 0x18, 0x37, 0xa6, 0x94, 0x6c, 0xb8, 0x6c, 0x8f, 0xbe, 0x7c, 0xf6, 0xee, 0xad, 0xcc, 0xd2, 0xa4, 0x92, 0x1b, 0xce, 0xbb, 0x34, 0xa3, 0xae, 0x0c, 0x6a, 0x56, 0x96, 0x3f, 0xcb, 0x8b, 0x5a, 0x70, 0x3b, 0x71, 0x7d, 0x03, 0x2e, 0xe8, 0x13, 0xe5, 0x8e, 0x43, 0x69, 0x5c, 0xf3, 0x55, 0x47, 0xf8, 0x72, 0x64, 0xc8, 0x2d, 0xba, 0xfa, 0xe8, 0x44, 0x00, 0x8b, 0x62, 0xd9, 0x12, 0x2e, 0x9d, 0xe8, 0x95, 0x85, 0x60, 0xc8, 0xdb, 0xb0, 0x07, 0x72, 0x7e, 0x71, 0x39, 0xe0, 0xa9, 0x82, 0xe0, 0x75, 0x88, 0x14, 0x11, 0x3d, 0xe5, 0x4b, 0xa0, 0xa4, 0x55, 0x17, 0x51, 0xfc, 0xa0, 0xfc, 0xb1, 0x2d, 0x8d, 0xe3, 0x0d, 0x78, 0xb8, 0xb1, 0x12, 0x98, 0xa7, 0xf7, 0x8f, 0x0b, 0x08, 0x8f, 0x16, 0x87, 0x05, 0x3c, 0x84, 0xa5, 0x76, 0x2f, 0x62, 0xa4, 0xbd, 0x05, 0xc1 } -, - /* Prime 1 */ - 64, - { 0xee, 0x22, 0xa4, 0x24, 0x62, 0xf7, 0x71, 0x8d, 0xfe, 0xcf, 0x02, 0x4b, 0x17, 0xc9, 0x26, 0x76, 0x78, 0x05, 0x91, 0x71, 0x33, 0x9c, 0xc0, 0x07, 0x06, 0x52, 0x60, 0xd3, 0x04, 0x7e, 0x5f, 0x89, 0xfe, 0xd9, 0x10, 0x34, 0x28, 0x43, 0x37, 0x8c, 0x22, 0x68, 0x5d, 0x53, 0x2e, 0x84, 0xd2, 0x59, 0x3a, 0x7c, 0x8c, 0x02, 0x6a, 0x87, 0x66, 0xc5, 0xa2, 0xb2, 0xed, 0x55, 0x8e, 0x88, 0x23, 0x19 } -, - /* Prime 2 */ - 64, - { 0xe0, 0xe3, 0x70, 0x0c, 0x99, 0xa3, 0xe8, 0x15, 0xd7, 0x4b, 0x75, 0x2a, 0x84, 0xfb, 0x42, 0xec, 0x20, 0xe5, 0x20, 0x3c, 0xa7, 0xc1, 0xaf, 0x97, 0xfb, 0xf3, 0x97, 0xb9, 0x5d, 0x11, 0x05, 0x37, 0x6c, 0xf5, 0xd6, 0x3e, 0x3c, 0x57, 0xbf, 0xa6, 0x58, 0x55, 0xe5, 0x08, 0x14, 0x6c, 0x86, 0xdb, 0xaa, 0xb2, 0x89, 0xc9, 0x5b, 0xc0, 0x45, 0x5a, 0x58, 0x2d, 0xd8, 0xf5, 0x3f, 0xfb, 0xed, 0x37 } -, - /* Prime exponent 1 */ - 64, - { 0xd1, 0xf1, 0x34, 0x68, 0xe7, 0xdf, 0x62, 0xfb, 0x5e, 0xb3, 0xbe, 0x3f, 0xd9, 0xde, 0x7a, 0xcc, 0x63, 0x0f, 0xf5, 0xa3, 0xa9, 0x6e, 0xfe, 0x54, 0xb3, 0x1c, 0x19, 0x44, 0xb0, 0x67, 0x81, 0x6f, 0x35, 0x80, 0xc4, 0xaa, 0x56, 0xfc, 0xbb, 0x92, 0x0e, 0x1b, 0x98, 0x7b, 0x67, 0x3d, 0xad, 0xfd, 0x00, 0x75, 0x21, 0x32, 0x58, 0x1c, 0xbb, 0x5c, 0x6e, 0x0d, 0xf4, 0xf3, 0x42, 0xcf, 0x7e, 0xb1 } -, - /* Prime exponent 2 */ - 64, - { 0xac, 0xd0, 0xda, 0x38, 0x34, 0x90, 0xea, 0x36, 0x6e, 0x7d, 0xc4, 0x09, 0xea, 0xab, 0x13, 0x20, 0x55, 0x9e, 0xfd, 0x88, 0xde, 0xf9, 0x4e, 0x30, 0xa3, 0x22, 0xec, 0x03, 0x3b, 0xeb, 0x6a, 0x70, 0xcf, 0x40, 0x93, 0x64, 0xbc, 0x06, 0x4a, 0x76, 0x50, 0x07, 0xa1, 0xba, 0xf5, 0xc6, 0xf8, 0x53, 0x31, 0xf7, 0x85, 0x3e, 0xc1, 0x4d, 0x1d, 0x7e, 0x71, 0xa8, 0xb9, 0xc2, 0xad, 0x6a, 0xb1, 0x3d } -, - /* Coefficient */ - 64, - { 0x1e, 0xda, 0x83, 0xd4, 0xa6, 0xd0, 0x99, 0xb6, 0x0b, 0x2b, 0x2b, 0x84, 0xc6, 0xae, 0x41, 0x65, 0xc7, 0x22, 0x50, 0x3e, 0xbd, 0x37, 0x3c, 0x83, 0x6f, 0x97, 0x35, 0xca, 0x3b, 0x20, 0xa3, 0xeb, 0x08, 0x1b, 0x31, 0xe7, 0x83, 0x04, 0x13, 0x20, 0xdf, 0xc6, 0xdd, 0xf9, 0x05, 0x14, 0xca, 0xb6, 0xec, 0x4b, 0x80, 0xae, 0x0c, 0x05, 0x2d, 0xd1, 0xe7, 0xce, 0x34, 0x18, 0xae, 0xee, 0x24, 0xa4 } - -} -, -{{ - "PKCS#1 v1.5 Signature Example 4.1", - /* Message to be signed */ - 174, - { 0x2c, 0x93, 0x6b, 0xf6, 0x13, 0x3a, 0x96, 0x93, 0xf1, 0x46, 0xee, 0x5a, 0x1a, 0x91, 0xc2, 0xf1, 0x69, 0xb2, 0xe6, 0x44, 0xa5, 0x18, 0xe8, 0x5a, 0x75, 0xf6, 0xe4, 0x3b, 0x56, 0x0d, 0x4a, 0x72, 0xf3, 0x8c, 0x64, 0xf8, 0x4c, 0x05, 0x24, 0x0e, 0x8b, 0x4e, 0x55, 0x78, 0x61, 0x63, 0xe7, 0x27, 0x62, 0x65, 0xba, 0x21, 0x3b, 0xa9, 0x3d, 0xee, 0x1b, 0x2e, 0x10, 0x21, 0x35, 0xa9, 0x89, 0xb6, 0x24, 0x8e, 0x88, 0x32, 0x7e, 0x30, 0x03, 0x61, 0xa7, 0x4f, 0x2e, 0x9b, 0xc4, 0x1f, 0x2a, 0x37, 0x68, 0x3f, 0x1a, 0x1a, 0x15, 0xf9, 0xdd, 0x47, 0x2e, 0x11, 0x8e, 0x1c, 0x4b, 0x3e, 0xde, 0x58, 0xdd, 0x70, 0xf3, 0xba, 0xcc, 0x25, 0x2e, 0x0c, 0x65, 0x4b, 0x0f, 0x7a, 0x6e, 0x41, 0xa9, 0x28, 0x75, 0x10, 0xef, 0xa0, 0x3b, 0xc9, 0x2e, 0x80, 0x5e, 0x5b, 0x2c, 0x91, 0x3f, 0x51, 0xe2, 0x5c, 0x7f, 0x85, 0x86, 0x40, 0xca, 0xfa, 0xc9, 0xd3, 0xc9, 0x17, 0x68, 0x65, 0x07, 0xfa, 0x94, 0xf8, 0x86, 0x6f, 0x86, 0x9a, 0x4e, 0x5a, 0x6a, 0x3d, 0x4f, 0x9d, 0x97, 0xed, 0x81, 0x37, 0xf4, 0x14, 0xd1, 0x44, 0x7a, 0x86, 0xee, 0xf9, 0xe1, 0x49, 0x69, 0x94, 0xad, 0x2d, 0xa5, 0x97 } -, - /* Signature */ - 128, - { 0x9e, 0x93, 0xf7, 0xac, 0xc5, 0x0f, 0xb3, 0xa0, 0xb1, 0x24, 0x3d, 0xc3, 0x38, 0xc8, 0xcc, 0xb1, 0x2b, 0xca, 0xb4, 0xaa, 0x45, 0x04, 0x40, 0xb6, 0x30, 0x6c, 0x81, 0xb5, 0x0b, 0x8f, 0x95, 0xa9, 0x36, 0xdd, 0x16, 0x63, 0x30, 0xc6, 0x99, 0xb2, 0x85, 0x80, 0xda, 0x1b, 0xe2, 0x75, 0x61, 0x64, 0x02, 0xda, 0x85, 0xbf, 0xd8, 0xee, 0xfc, 0xd6, 0x99, 0x35, 0x87, 0xe6, 0x09, 0x28, 0x65, 0xd8, 0x25, 0x3b, 0x04, 0x08, 0x1d, 0x57, 0x2f, 0x26, 0x27, 0x59, 0xf5, 0x56, 0xdf, 0xb9, 0x11, 0xe8, 0xd9, 0x4e, 0x92, 0xe5, 0x5a, 0xf6, 0xd5, 0x89, 0x80, 0x18, 0xff, 0x33, 0xe5, 0xf6, 0xb1, 0xf9, 0x90, 0x19, 0x96, 0xe9, 0x2f, 0xaf, 0x33, 0x6e, 0x2d, 0xcc, 0xe3, 0xab, 0x0a, 0x93, 0xdb, 0x93, 0x2e, 0x94, 0x2c, 0xc6, 0x47, 0x8d, 0x6c, 0xc2, 0xfb, 0x66, 0x08, 0x11, 0x91, 0x0c, 0xcd, 0x17 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Signature Example 4.2", - /* Message to be signed */ - 154, - { 0x94, 0x32, 0x3f, 0x7c, 0x38, 0xb9, 0x95, 0xcc, 0x6b, 0xd8, 0x5d, 0x47, 0x9f, 0x8d, 0xe2, 0xde, 0xc1, 0xef, 0x2e, 0x84, 0xb1, 0xfe, 0xef, 0xec, 0xf3, 0x91, 0x50, 0xb5, 0xd9, 0xf2, 0xcb, 0x15, 0x85, 0xac, 0x0d, 0x71, 0x9a, 0xb3, 0x48, 0xbd, 0xc9, 0x75, 0x0d, 0xdb, 0x8e, 0x32, 0x76, 0xdb, 0x89, 0x81, 0x87, 0x35, 0xbd, 0x62, 0x31, 0x41, 0x3c, 0xbc, 0xa2, 0xde, 0x94, 0x1b, 0x55, 0xe8, 0xcf, 0xa1, 0xab, 0x13, 0x2c, 0xc7, 0x8a, 0xa4, 0xf2, 0xb5, 0x1f, 0xd6, 0x57, 0x8e, 0xe2, 0xe0, 0x32, 0xe9, 0x0e, 0x34, 0x08, 0x0f, 0x0f, 0x8e, 0x3d, 0xb1, 0x4d, 0x1b, 0x56, 0xf3, 0xd0, 0x77, 0xf2, 0x9d, 0xbc, 0x02, 0x16, 0xa4, 0x13, 0x44, 0x99, 0x8c, 0x0f, 0xe1, 0xab, 0x41, 0x22, 0x47, 0xdf, 0x21, 0xe7, 0x4e, 0xc2, 0x2f, 0x5d, 0xb0, 0x14, 0x8e, 0xca, 0xf4, 0x73, 0xee, 0xec, 0xcc, 0x14, 0xff, 0x9e, 0x45, 0xd5, 0x8c, 0x2e, 0x62, 0xb5, 0xfe, 0x6a, 0x50, 0x1a, 0xb9, 0x6f, 0xd7, 0xc5, 0xed, 0xde, 0xf1, 0x4a, 0xa8, 0x92, 0x66, 0x69, 0x2e } -, - /* Signature */ - 128, - { 0x09, 0x40, 0x2a, 0x43, 0x56, 0xbe, 0x73, 0x44, 0x9b, 0x46, 0x9e, 0x36, 0x31, 0xe1, 0xb0, 0x23, 0x07, 0xc5, 0xca, 0xc2, 0xce, 0x15, 0x28, 0xd7, 0x84, 0xfa, 0xb9, 0x26, 0xdf, 0xf5, 0x1f, 0x86, 0x24, 0x1b, 0x9d, 0x66, 0xf7, 0x9d, 0x6d, 0x8e, 0xee, 0xeb, 0x24, 0x9d, 0x76, 0xfa, 0x9f, 0x16, 0x6f, 0xf9, 0xa8, 0xc6, 0xa3, 0x9e, 0x83, 0x2d, 0x5d, 0x14, 0xb9, 0xd7, 0xec, 0x5a, 0x3d, 0xc2, 0x8f, 0x01, 0xeb, 0xb0, 0x6e, 0x39, 0xd5, 0x9e, 0x84, 0x61, 0xb9, 0x55, 0xb2, 0xa7, 0xf5, 0xb1, 0xf2, 0x04, 0xb0, 0x4c, 0xc6, 0xcc, 0x62, 0x64, 0x61, 0x61, 0xac, 0x1c, 0x2b, 0xf5, 0xba, 0xb5, 0x0f, 0x06, 0x8c, 0x90, 0x8d, 0x28, 0xde, 0x5e, 0xae, 0xf7, 0xe8, 0xeb, 0xfc, 0xab, 0xb0, 0x9b, 0x7d, 0x75, 0xd8, 0x35, 0x40, 0xdd, 0x4b, 0x35, 0x4d, 0x13, 0x1d, 0x86, 0xf0, 0x77, 0x07, 0x17 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.3", - /* Message to be signed */ - 154, - { 0x0e, 0x23, 0x3b, 0x25, 0x49, 0xbd, 0xd2, 0x1b, 0xa5, 0x14, 0x80, 0xda, 0x8e, 0x3d, 0xce, 0xf4, 0xdb, 0x20, 0xe0, 0xdc, 0xc0, 0x5e, 0xe2, 0x37, 0x35, 0x1e, 0xdb, 0xc9, 0xa5, 0x3c, 0x52, 0xf6, 0x74, 0xd1, 0x05, 0xfe, 0xc0, 0x93, 0x9d, 0x36, 0x99, 0x64, 0x7e, 0xfc, 0x1e, 0x25, 0xcb, 0x4e, 0x9b, 0x1a, 0xb7, 0x52, 0xab, 0x6f, 0xe2, 0x88, 0x69, 0xff, 0x73, 0xf2, 0x3e, 0x01, 0xee, 0xf8, 0x67, 0x4c, 0x53, 0x5c, 0x4c, 0x93, 0x35, 0xf7, 0x98, 0xf1, 0xde, 0xec, 0xd4, 0x89, 0xd0, 0x6d, 0xc8, 0x8f, 0xd6, 0xbc, 0x1d, 0x49, 0x96, 0xef, 0xf7, 0x2b, 0x43, 0x9e, 0x3c, 0x01, 0x4d, 0xd1, 0x4c, 0xbf, 0x17, 0x71, 0x5c, 0x15, 0x89, 0x43, 0xde, 0x2e, 0x6f, 0x97, 0x1c, 0x34, 0x99, 0x87, 0xa1, 0xb3, 0x95, 0xd6, 0x82, 0xc3, 0xb0, 0xc1, 0x7b, 0x66, 0xcd, 0x3c, 0xa4, 0x10, 0x60, 0xb5, 0x71, 0x11, 0xe2, 0x28, 0x31, 0x4b, 0x2d, 0x34, 0xb5, 0xe4, 0x4e, 0x55, 0xf1, 0xc1, 0x1c, 0x31, 0xa6, 0xeb, 0x80, 0xb5, 0xf8, 0x2d, 0x96, 0xbd, 0x4a, 0x17 } -, - /* Signature */ - 128, - { 0xd0, 0x75, 0xbe, 0x06, 0xcb, 0xd6, 0x22, 0x3e, 0x87, 0x1b, 0x0f, 0x33, 0x62, 0xa7, 0x97, 0xde, 0x28, 0x2d, 0xa5, 0xc4, 0x03, 0x23, 0xf3, 0x7c, 0x2c, 0xc3, 0x74, 0x65, 0xa1, 0xa8, 0x63, 0x68, 0xdd, 0xcf, 0xa6, 0xda, 0xa1, 0x35, 0x86, 0x6c, 0x32, 0x03, 0xd0, 0x47, 0x22, 0x60, 0xb2, 0x9c, 0x3c, 0x9b, 0x1b, 0x88, 0x94, 0x08, 0x5d, 0x54, 0x7c, 0x5e, 0xb9, 0x31, 0x42, 0x4f, 0x24, 0x14, 0x0a, 0x5c, 0xba, 0x15, 0x3b, 0xde, 0xd4, 0xb9, 0xce, 0x7d, 0xae, 0xdc, 0x64, 0x5d, 0x39, 0x80, 0xc5, 0xf5, 0x83, 0xf7, 0x67, 0x11, 0xc6, 0x7b, 0x19, 0x3a, 0x52, 0x12, 0xf2, 0xa9, 0x35, 0x4a, 0x67, 0x96, 0xaf, 0x09, 0x08, 0x20, 0x91, 0x31, 0x34, 0xec, 0xf3, 0x05, 0xbe, 0xfb, 0x65, 0x32, 0xcd, 0x48, 0xd4, 0x11, 0x3a, 0x0e, 0xc4, 0x86, 0x9a, 0x0a, 0x56, 0x55, 0xdb, 0xdc, 0x72, 0x59 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.4", - /* Message to be signed */ - 103, - { 0xd4, 0x7c, 0x0f, 0x5c, 0x92, 0x2e, 0x4f, 0x80, 0x9e, 0x9c, 0xee, 0xd2, 0x07, 0xf1, 0x24, 0xa5, 0xac, 0xde, 0x37, 0xfa, 0x14, 0x63, 0x8e, 0x8f, 0xbd, 0x0a, 0x72, 0xfe, 0x45, 0x26, 0x21, 0x95, 0x8e, 0x37, 0x68, 0x2c, 0x6f, 0xf2, 0x83, 0xf3, 0xd5, 0x1d, 0xa1, 0x52, 0xaa, 0x1f, 0x63, 0x74, 0xcd, 0x27, 0xd2, 0xa4, 0xa5, 0x33, 0x05, 0x39, 0x16, 0xdf, 0xf1, 0xc0, 0x7b, 0xa9, 0x36, 0x31, 0x74, 0x81, 0x69, 0x63, 0x60, 0x69, 0x04, 0x58, 0xd8, 0xd1, 0xe5, 0xd6, 0x6c, 0x35, 0xf9, 0xc9, 0x9a, 0x50, 0x55, 0xd9, 0xf7, 0xcf, 0xe7, 0x60, 0x5c, 0xca, 0x57, 0xea, 0xc3, 0x35, 0xad, 0xe2, 0xef, 0xf6, 0xb5, 0xaa, 0x62, 0x7d, 0x5b } -, - /* Signature */ - 128, - { 0x11, 0x86, 0x0b, 0xf4, 0xd7, 0x45, 0x19, 0xff, 0x8c, 0xfc, 0xce, 0x3d, 0x33, 0xe3, 0xaa, 0xbd, 0xf7, 0x71, 0x40, 0xa1, 0x56, 0x36, 0xb2, 0x67, 0x8d, 0xf9, 0x67, 0x31, 0x44, 0xc2, 0x41, 0xb0, 0xa9, 0x9a, 0x0a, 0x37, 0xf2, 0x92, 0xca, 0xd5, 0x1d, 0xf0, 0xb6, 0x3b, 0x14, 0xf8, 0xab, 0x17, 0xe3, 0xfa, 0x15, 0x58, 0x77, 0x90, 0xfb, 0x06, 0x2b, 0x5f, 0x26, 0x6c, 0x16, 0x6b, 0x2c, 0xa7, 0x51, 0x57, 0xa0, 0xf9, 0xe1, 0xa5, 0xc8, 0xec, 0x26, 0xb9, 0x19, 0x9d, 0x07, 0x18, 0x77, 0x99, 0x80, 0x6a, 0x1d, 0xe9, 0x87, 0x15, 0xfb, 0xe5, 0x27, 0x57, 0xa7, 0x03, 0x77, 0x3c, 0x91, 0x8a, 0x00, 0x0c, 0x21, 0x1a, 0x78, 0x22, 0x85, 0x25, 0xcb, 0x52, 0xeb, 0x44, 0x1b, 0x26, 0x9b, 0x3f, 0x33, 0x05, 0x0e, 0xd1, 0x93, 0x5a, 0xc0, 0xe8, 0x59, 0x63, 0x19, 0xae, 0x80, 0xc7, 0x5b, 0x84 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.5", - /* Message to be signed */ - 107, - { 0xbe, 0xbd, 0x9d, 0xde, 0xa3, 0xab, 0xf9, 0xf8, 0xeb, 0x58, 0x55, 0x97, 0x66, 0xf8, 0xb3, 0xab, 0x83, 0x53, 0x52, 0x38, 0xc4, 0x3d, 0xcd, 0x81, 0xa2, 0x94, 0x93, 0x03, 0xa9, 0x5f, 0x05, 0x5a, 0x83, 0x40, 0xce, 0xee, 0x16, 0x15, 0xe5, 0x8d, 0xf1, 0xe0, 0x14, 0xc7, 0x55, 0x2d, 0x76, 0x9f, 0x88, 0x41, 0xba, 0x09, 0x97, 0x5c, 0xef, 0xe7, 0xe4, 0x8d, 0xfc, 0x6a, 0x26, 0x49, 0xe8, 0x20, 0x03, 0xe7, 0xbf, 0x42, 0x0e, 0x70, 0x10, 0x1b, 0x32, 0x7d, 0x91, 0x70, 0xf7, 0x3e, 0x8d, 0x88, 0x7c, 0xd2, 0x98, 0xf5, 0x3d, 0xc1, 0xbf, 0xc8, 0x82, 0xcf, 0x0e, 0xfc, 0xfa, 0xd6, 0xe8, 0x6a, 0x0e, 0x7f, 0x90, 0x94, 0xc4, 0xf2, 0x6c, 0x46, 0x92, 0x1e, 0x09 } -, - /* Signature */ - 128, - { 0x84, 0xa2, 0x6f, 0xbe, 0x67, 0x01, 0x0a, 0xa1, 0xef, 0x2d, 0x6c, 0x79, 0x26, 0x32, 0x39, 0xb9, 0x78, 0xf4, 0xe8, 0x93, 0xdd, 0x1e, 0xc6, 0xf0, 0x7d, 0x23, 0x17, 0xf1, 0x51, 0xa2, 0xa1, 0xb3, 0x23, 0xe5, 0x05, 0xf9, 0x45, 0x0c, 0x37, 0xdf, 0x6b, 0x1b, 0xf3, 0xe2, 0x4f, 0x38, 0xb6, 0x36, 0xbf, 0x77, 0x4e, 0x96, 0x74, 0x1f, 0xfa, 0xa7, 0x69, 0xcf, 0xd7, 0xa8, 0xa6, 0xb3, 0xa5, 0xef, 0xab, 0xa2, 0x3a, 0xab, 0x3a, 0x43, 0x7a, 0x22, 0x5b, 0xd9, 0x41, 0x86, 0xe9, 0x1d, 0x39, 0x2b, 0xed, 0x2e, 0xad, 0x8a, 0x78, 0xf3, 0x81, 0xf4, 0x09, 0x49, 0xcf, 0x1f, 0x3d, 0x27, 0x24, 0x58, 0x1f, 0x25, 0x70, 0x4b, 0xdf, 0x66, 0x08, 0xdd, 0x11, 0x9e, 0x36, 0xd8, 0x7d, 0x03, 0x55, 0xe6, 0x70, 0x6c, 0x8a, 0x52, 0x59, 0xfd, 0x60, 0xc8, 0xdf, 0x13, 0xbc, 0x62, 0xaa, 0x9f, 0xd5, 0x7a } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.6", - /* Message to be signed */ - 247, - { 0x9d, 0x19, 0x8e, 0x2c, 0x6e, 0x12, 0xf7, 0x4a, 0x9a, 0x08, 0x1b, 0xcf, 0x70, 0xfc, 0x04, 0x16, 0x8a, 0x49, 0xe0, 0x9c, 0x5f, 0xaa, 0xa0, 0x11, 0xe9, 0xa0, 0x9e, 0x2c, 0x43, 0xee, 0x2c, 0xd3, 0x9b, 0xb2, 0xf7, 0xe5, 0x68, 0x2d, 0xea, 0xb1, 0xfa, 0x11, 0x1e, 0x41, 0xa3, 0x19, 0x4a, 0x20, 0xa8, 0x6d, 0xa5, 0x51, 0x01, 0x82, 0x4d, 0x3d, 0x78, 0xa7, 0xe3, 0x2d, 0xb2, 0xb6, 0x0a, 0xa7, 0x73, 0x77, 0x0b, 0x57, 0x39, 0x07, 0xb4, 0x09, 0xa2, 0x59, 0x2c, 0x83, 0xf3, 0x47, 0xfe, 0xbb, 0x2d, 0x5c, 0x85, 0xe9, 0x25, 0x5d, 0x6d, 0xc1, 0x2a, 0xaa, 0x33, 0x5a, 0xdf, 0xbb, 0x5d, 0xc8, 0x62, 0xd7, 0x86, 0x19, 0x53, 0xe2, 0x68, 0x7d, 0x53, 0x03, 0xb6, 0x86, 0xff, 0xf9, 0x63, 0x4e, 0xe4, 0xd1, 0x5c, 0xbc, 0xc2, 0x9f, 0x7a, 0x35, 0x05, 0xa7, 0x3d, 0xeb, 0x6f, 0x9e, 0x38, 0x8e, 0x96, 0x85, 0xff, 0xf4, 0xd5, 0x45, 0x0f, 0x1e, 0x32, 0x75, 0x35, 0x9a, 0x2b, 0x99, 0x44, 0x0c, 0x67, 0x39, 0xf5, 0xb9, 0x1e, 0xbd, 0x14, 0xef, 0x78, 0xae, 0x73, 0xc1, 0xa6, 0x19, 0x11, 0xf5, 0xae, 0x3a, 0x2b, 0x91, 0x49, 0x67, 0x49, 0x17, 0x27, 0x81, 0x80, 0x65, 0xee, 0x01, 0x0d, 0xf4, 0x9d, 0x5a, 0x16, 0xed, 0x8d, 0xce, 0xe8, 0x48, 0xae, 0x09, 0x48, 0xa2, 0x52, 0x4e, 0xac, 0x7c, 0x4f, 0xf9, 0x09, 0x6c, 0xed, 0x61, 0x35, 0x76, 0x42, 0xc5, 0xe0, 0xf8, 0x06, 0x80, 0xaf, 0xff, 0xce, 0x0b, 0xa7, 0xeb, 0x59, 0x58, 0x99, 0x49, 0x52, 0x6f, 0xf5, 0x12, 0x35, 0xcd, 0xc7, 0x2d, 0x47, 0xa2, 0x7b, 0x39, 0xb8, 0xd4, 0xac, 0x84, 0x9c, 0x3b, 0xc0, 0x4f, 0xa8, 0x36, 0xcf, 0x18, 0x4b, 0xae, 0x0c, 0x83, 0x41, 0x59, 0x56 } -, - /* Signature */ - 128, - { 0x38, 0xef, 0x24, 0x5b, 0x94, 0x0d, 0x93, 0x97, 0x0a, 0x50, 0x3b, 0xf4, 0x3e, 0x28, 0xe1, 0x7b, 0x8a, 0xff, 0x08, 0x3c, 0xcb, 0xe1, 0xe9, 0xc4, 0x8e, 0x4d, 0x80, 0xf5, 0x16, 0xc2, 0x7d, 0x08, 0x5c, 0xa2, 0xa4, 0xe5, 0x73, 0x23, 0x6a, 0x24, 0x94, 0xd9, 0xb9, 0x97, 0xf8, 0x12, 0x48, 0x48, 0x12, 0xf6, 0x65, 0x25, 0xd0, 0x6c, 0x0a, 0x0b, 0xb2, 0x13, 0x0c, 0x15, 0xd6, 0xce, 0x18, 0xb2, 0x2f, 0x3c, 0xee, 0x57, 0x09, 0x7f, 0xc0, 0xd5, 0x58, 0xaf, 0xd9, 0xaf, 0x27, 0xf1, 0x51, 0xf8, 0x43, 0x6f, 0xbc, 0x87, 0xd6, 0xbe, 0x61, 0x42, 0x64, 0x7a, 0x17, 0xe0, 0x4d, 0xf6, 0xde, 0xc7, 0x0a, 0x95, 0xc7, 0xda, 0xa8, 0x4e, 0xde, 0x94, 0xcc, 0xb4, 0x3e, 0x1d, 0x2c, 0x37, 0xb9, 0x45, 0x81, 0x73, 0x10, 0xd1, 0x4a, 0x22, 0xb5, 0xb9, 0xae, 0x61, 0x14, 0x48, 0xee, 0x41, 0xbc, 0x70 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.7", - /* Message to be signed */ - 47, - { 0x8e, 0x8b, 0xa8, 0x43, 0x6f, 0xe3, 0x10, 0x4b, 0x7c, 0xe2, 0xa4, 0xef, 0xc3, 0x6c, 0x85, 0x7d, 0x49, 0xe8, 0x49, 0xc0, 0x08, 0x5f, 0xc6, 0x57, 0xba, 0xa0, 0x33, 0x17, 0x93, 0xb3, 0xf3, 0x6c, 0x7c, 0xe7, 0x38, 0xb6, 0x13, 0x0b, 0xfa, 0xc7, 0x5e, 0x50, 0x11, 0xf3, 0x2a, 0xa3, 0xd1 } -, - /* Signature */ - 128, - { 0x78, 0x44, 0x69, 0x9f, 0x1c, 0x4f, 0x29, 0x6e, 0x50, 0x26, 0x1f, 0x15, 0x26, 0xe0, 0xdd, 0x84, 0xf0, 0x1c, 0x82, 0xcb, 0x85, 0xfa, 0x24, 0x60, 0x9e, 0xb0, 0x33, 0x58, 0x75, 0x2c, 0x6c, 0xf5, 0x99, 0x94, 0xd8, 0x4e, 0x12, 0xf4, 0x6a, 0x72, 0x00, 0xcf, 0x5a, 0xd9, 0x7c, 0x08, 0xdd, 0x4f, 0xfc, 0x44, 0x65, 0x7d, 0xb5, 0x72, 0x14, 0xcd, 0x1f, 0x4e, 0xed, 0x6b, 0x77, 0xd2, 0x39, 0xfb, 0x58, 0x21, 0x69, 0x88, 0xc5, 0xe5, 0xbc, 0x73, 0x5a, 0x4f, 0xdf, 0xf4, 0x08, 0xeb, 0x9f, 0x12, 0x79, 0xd6, 0x5b, 0xba, 0xf6, 0xa6, 0x81, 0x92, 0x44, 0x18, 0x34, 0x9e, 0x62, 0xff, 0x5e, 0x58, 0x15, 0xea, 0xea, 0x59, 0x2d, 0x90, 0xd1, 0xee, 0xf5, 0x56, 0xfc, 0xd4, 0xd5, 0xb4, 0xb8, 0x9c, 0x6c, 0x70, 0x73, 0x9d, 0x6f, 0x0d, 0x3d, 0x0b, 0xd1, 0x6a, 0x50, 0xf1, 0xe0, 0x02, 0x4e, 0x98 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.8", - /* Message to be signed */ - 185, - { 0x58, 0x5f, 0xa6, 0xa7, 0xf7, 0x7a, 0x4b, 0x6e, 0xba, 0x56, 0x90, 0xe7, 0x3e, 0x71, 0x28, 0xb7, 0x2e, 0x67, 0x7c, 0xdb, 0x3a, 0xaa, 0x86, 0x29, 0xed, 0x61, 0xf2, 0xee, 0x63, 0xaf, 0x1a, 0x71, 0xba, 0x87, 0x13, 0x6a, 0x52, 0xdb, 0x1a, 0x33, 0x21, 0xfc, 0xfe, 0xb2, 0x48, 0xbf, 0x2e, 0x5c, 0xf5, 0xc6, 0x39, 0x57, 0x1d, 0x58, 0x95, 0xad, 0xf1, 0xfb, 0x06, 0x17, 0xed, 0x14, 0x0a, 0x2a, 0x0d, 0x98, 0x37, 0xc3, 0xc1, 0xd8, 0x45, 0x0c, 0x28, 0x9d, 0x33, 0xbc, 0x96, 0x23, 0x79, 0xd7, 0x3e, 0x30, 0x87, 0xf2, 0xb7, 0xee, 0x6e, 0xad, 0xd6, 0x65, 0x01, 0x48, 0xc0, 0x42, 0xb6, 0xff, 0x04, 0x48, 0x21, 0x96, 0xc7, 0x18, 0xfd, 0xc0, 0xce, 0x57, 0x9c, 0xeb, 0x62, 0xa8, 0x1e, 0x58, 0x43, 0x73, 0xeb, 0x93, 0x75, 0x40, 0xc4, 0x26, 0xb5, 0x56, 0x6a, 0x9f, 0x40, 0x7c, 0xfc, 0xcf, 0xbc, 0x4b, 0x75, 0x36, 0x94, 0xaf, 0x0d, 0xf4, 0xcd, 0x6a, 0xa9, 0xf1, 0x65, 0x46, 0xa6, 0x33, 0x94, 0xa0, 0xf6, 0x57, 0x73, 0x71, 0x34, 0x3f, 0xfd, 0xdb, 0x65, 0x1a, 0x62, 0xa3, 0xa5, 0x8e, 0xdd, 0xec, 0x67, 0xa2, 0x9c, 0xca, 0xe8, 0x96, 0x56, 0x3c, 0x63, 0xe3, 0xc9, 0x0d, 0x54, 0xd9, 0x13, 0x58, 0xad, 0xf1, 0x94, 0xe6, 0xaa, 0xb1, 0xf9 } -, - /* Signature */ - 128, - { 0x68, 0x93, 0x35, 0x1c, 0x73, 0x91, 0x5f, 0xac, 0x47, 0xc9, 0x62, 0xcc, 0x60, 0x17, 0xca, 0x74, 0xa5, 0xb5, 0xee, 0x4c, 0xb1, 0xbb, 0x5a, 0x10, 0xad, 0xa2, 0xa4, 0x31, 0x58, 0xa2, 0x26, 0x1e, 0xb2, 0x7b, 0x86, 0x6d, 0xb3, 0x9d, 0x35, 0x90, 0xb4, 0xf8, 0xd2, 0x0e, 0xe6, 0x7c, 0xb1, 0xa5, 0x78, 0x94, 0x63, 0x15, 0x0d, 0x83, 0x93, 0x43, 0x23, 0x25, 0x43, 0xc8, 0x26, 0x50, 0x51, 0x01, 0xe1, 0xd2, 0x57, 0x04, 0x26, 0xab, 0x9f, 0xef, 0xd6, 0x5b, 0xa8, 0x4f, 0xaa, 0xec, 0x73, 0x1f, 0x27, 0x37, 0x4a, 0xb1, 0x01, 0x91, 0xc9, 0x60, 0x83, 0x16, 0x93, 0xf2, 0x9a, 0x85, 0x4c, 0x38, 0x12, 0x85, 0x99, 0xf7, 0x28, 0x77, 0x49, 0xb0, 0xb4, 0x8b, 0xf7, 0xe9, 0xdf, 0xda, 0xed, 0xc8, 0x4e, 0xec, 0xe0, 0x71, 0x40, 0x45, 0x84, 0x73, 0x0c, 0xec, 0xce, 0x0d, 0x5c, 0xf0, 0x05, 0xcc } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.9", - /* Message to be signed */ - 5, - { 0x78, 0x3c, 0x18, 0xb1, 0x1f } -, - /* Signature */ - 128, - { 0x13, 0x2f, 0xdf, 0xb8, 0x41, 0x93, 0xdf, 0xb7, 0x9f, 0xdf, 0xe6, 0xba, 0xbc, 0x2e, 0xfd, 0x39, 0xb2, 0x6a, 0xa2, 0x09, 0x68, 0xa0, 0x7c, 0x0e, 0x41, 0x56, 0x0e, 0xe4, 0xdf, 0xcd, 0x4f, 0xca, 0x79, 0x17, 0x49, 0x0f, 0x24, 0xe8, 0xdf, 0x84, 0xf4, 0xe0, 0x11, 0x5a, 0x3e, 0x63, 0x27, 0x3e, 0x7a, 0x3b, 0x12, 0x8a, 0xbb, 0xbd, 0x17, 0xb8, 0xaa, 0x5a, 0x06, 0xba, 0x15, 0x5e, 0xcb, 0x23, 0x0f, 0xe7, 0x97, 0x26, 0x04, 0x79, 0x95, 0x70, 0x10, 0xe4, 0x4b, 0xa5, 0x75, 0x29, 0x2e, 0xc3, 0xf1, 0x51, 0xab, 0xf4, 0x8e, 0x91, 0x03, 0xe5, 0x51, 0x42, 0xec, 0x67, 0xa4, 0x13, 0x4d, 0xd8, 0xf3, 0x8e, 0xc6, 0x59, 0xf9, 0xa7, 0x89, 0xfd, 0x03, 0x41, 0xce, 0xf2, 0xbb, 0xcf, 0x9f, 0x52, 0x9b, 0x93, 0x21, 0x8f, 0xc3, 0xe4, 0x3a, 0x76, 0x69, 0x69, 0xd1, 0xbf, 0x87, 0x88, 0x48, 0x07 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.10", - /* Message to be signed */ - 85, - { 0x96, 0xdc, 0x98, 0xb0, 0xeb, 0x84, 0xf5, 0x59, 0x48, 0x30, 0x7a, 0xdd, 0xec, 0xcb, 0xe7, 0x64, 0x39, 0xca, 0x36, 0x58, 0xbc, 0x36, 0x35, 0x96, 0x24, 0xc8, 0xfe, 0x2f, 0xa0, 0x9c, 0x52, 0xe4, 0x7a, 0xcd, 0xc3, 0x2a, 0x15, 0x6d, 0x90, 0x76, 0x82, 0x41, 0x0a, 0x85, 0x67, 0xab, 0xca, 0xfd, 0xc6, 0xd8, 0xbb, 0x53, 0x25, 0x35, 0x9e, 0xc7, 0x5f, 0xfd, 0xb7, 0x3e, 0xe0, 0xa9, 0x51, 0x5a, 0x4d, 0xdf, 0x9a, 0x31, 0xe5, 0xd5, 0x19, 0x46, 0x03, 0x74, 0x28, 0x0a, 0xda, 0x30, 0xde, 0x7d, 0xd5, 0x34, 0xde, 0xaa, 0x57 } -, - /* Signature */ - 128, - { 0x8f, 0xb4, 0x3d, 0xc8, 0xf0, 0x6f, 0x2b, 0xa4, 0x8f, 0x19, 0xbe, 0x5b, 0x1a, 0x09, 0x31, 0x21, 0x3a, 0x99, 0x0a, 0xed, 0x9c, 0x9f, 0xed, 0x1d, 0xe5, 0xd6, 0xf3, 0x5a, 0x2a, 0x78, 0x2f, 0x0a, 0x19, 0x8f, 0xf6, 0x38, 0x8d, 0x96, 0xe9, 0xd5, 0x9b, 0x88, 0xe9, 0x78, 0x22, 0xf3, 0x49, 0xff, 0x41, 0x64, 0xee, 0xa5, 0x0a, 0x62, 0x93, 0x5c, 0x61, 0xcb, 0xc7, 0x6e, 0x3d, 0xf7, 0x5f, 0x68, 0x4d, 0x96, 0x24, 0x75, 0xe5, 0x63, 0x59, 0x64, 0x96, 0xc9, 0x88, 0x0a, 0x48, 0xed, 0x97, 0x8a, 0x63, 0x15, 0xa3, 0x45, 0x57, 0x17, 0x91, 0xcb, 0x2d, 0xdc, 0x88, 0xda, 0xbe, 0x41, 0x87, 0x98, 0xa6, 0xa4, 0x41, 0xc4, 0x7a, 0xfb, 0xb1, 0xcd, 0x15, 0x21, 0x3e, 0xca, 0x3b, 0x11, 0x15, 0xec, 0x8f, 0x58, 0xf8, 0x77, 0xbe, 0x8f, 0xbd, 0x38, 0xf4, 0xfd, 0xae, 0xf9, 0x39, 0xf5, 0x26, 0x40 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.11", - /* Message to be signed */ - 115, - { 0x37, 0x20, 0x01, 0x59, 0x9d, 0x99, 0x30, 0xc7, 0xd5, 0x57, 0x45, 0x8b, 0x43, 0x6d, 0xec, 0xfd, 0xc1, 0x4d, 0x06, 0xcb, 0x7b, 0x96, 0xb0, 0x67, 0x18, 0xc4, 0x8d, 0x7d, 0xe5, 0x74, 0x82, 0xa8, 0x68, 0xae, 0x7f, 0x06, 0x58, 0x70, 0xa6, 0x21, 0x65, 0x06, 0xd1, 0x1b, 0x77, 0x93, 0x23, 0xdf, 0xdf, 0x04, 0x6c, 0xf5, 0x77, 0x51, 0x29, 0x13, 0x4b, 0x4d, 0x56, 0x89, 0xe4, 0xd9, 0xc0, 0xce, 0x1e, 0x12, 0xd7, 0xd4, 0xb0, 0x6c, 0xb5, 0xfc, 0x58, 0x20, 0xde, 0xcf, 0xa4, 0x1b, 0xaf, 0x59, 0xbf, 0x25, 0x7b, 0x32, 0xf0, 0x25, 0xb7, 0x67, 0x9b, 0x44, 0x5b, 0x94, 0x99, 0xc9, 0x25, 0x55, 0x14, 0x58, 0x85, 0x99, 0x2f, 0x1b, 0x76, 0xf8, 0x48, 0x91, 0xee, 0x4d, 0x3b, 0xe0, 0xf5, 0x15, 0x0f, 0xd5, 0x90 } -, - /* Signature */ - 128, - { 0xa8, 0x97, 0xc7, 0xf9, 0x72, 0xe1, 0x17, 0x49, 0xe1, 0xe7, 0xc1, 0x55, 0xce, 0x94, 0x62, 0xaa, 0x7e, 0x1c, 0xc0, 0xa9, 0x79, 0xc1, 0x27, 0x29, 0x79, 0x51, 0x26, 0xcb, 0x8c, 0x0e, 0xa5, 0x02, 0x21, 0xc4, 0x26, 0xf1, 0xbb, 0x06, 0xc1, 0xca, 0xf7, 0xc5, 0x1a, 0xc2, 0xfb, 0xd9, 0x4d, 0x68, 0x8d, 0xa6, 0x7d, 0xdf, 0x3e, 0xf6, 0x66, 0x06, 0xe9, 0x89, 0xa1, 0x6d, 0xe1, 0xf9, 0x2b, 0x17, 0x70, 0x6f, 0x88, 0xe8, 0x7d, 0x9f, 0x14, 0x69, 0xa0, 0x05, 0xc9, 0xfd, 0x76, 0x78, 0x8e, 0xe8, 0xc4, 0xa7, 0xf0, 0x12, 0x09, 0xe2, 0x8b, 0x86, 0xf6, 0x74, 0x88, 0x1a, 0xf5, 0x7d, 0xb6, 0xc3, 0x42, 0x9b, 0x6f, 0xb4, 0x56, 0x98, 0xbf, 0x5d, 0x30, 0x07, 0xf6, 0x1c, 0x7d, 0x44, 0x11, 0x78, 0xad, 0x12, 0x43, 0xa4, 0x9b, 0x2a, 0xa6, 0x02, 0x9b, 0xfe, 0x90, 0x2d, 0x26, 0xe4, 0x23, 0x75 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.12", - /* Message to be signed */ - 35, - { 0xbf, 0xbf, 0xd0, 0x73, 0x21, 0xf0, 0xf1, 0xd5, 0xfa, 0x9f, 0xdf, 0x00, 0x14, 0xc2, 0xfc, 0xb0, 0x35, 0x8a, 0xad, 0x0e, 0x35, 0x4b, 0x0d, 0x29, 0x08, 0x1b, 0x23, 0x3b, 0x43, 0x56, 0x77, 0x50, 0xbd, 0x6e, 0x78 } -, - /* Signature */ - 128, - { 0xc2, 0x4d, 0x31, 0x04, 0x94, 0x09, 0xaa, 0x16, 0xd3, 0xf9, 0x72, 0xef, 0x8b, 0x75, 0x95, 0xea, 0xa0, 0x07, 0x83, 0x3e, 0x2b, 0xcd, 0xc7, 0x50, 0x48, 0x52, 0xf2, 0x50, 0x5f, 0xba, 0x1f, 0xc1, 0x5f, 0x19, 0xa0, 0xea, 0xdd, 0xe8, 0x33, 0x5c, 0x73, 0x06, 0xfc, 0x3f, 0x51, 0x66, 0x1d, 0xa5, 0x20, 0xec, 0xc8, 0xdb, 0x7f, 0x47, 0x38, 0x85, 0xca, 0xbd, 0xe9, 0x3f, 0x0c, 0xeb, 0xf1, 0xdf, 0x9e, 0x8a, 0x82, 0x37, 0x0b, 0x00, 0xa0, 0x43, 0xad, 0x63, 0x2c, 0xdc, 0xc7, 0x8f, 0x3f, 0xac, 0x1d, 0x8a, 0x37, 0x57, 0xfc, 0x8e, 0x52, 0x41, 0xbf, 0xed, 0x55, 0xc4, 0x96, 0x04, 0xac, 0x19, 0xab, 0xda, 0xc0, 0xc9, 0xc4, 0x0d, 0xa3, 0x73, 0xc1, 0x5f, 0x3c, 0x1b, 0xcc, 0x97, 0x3f, 0xfb, 0x4f, 0x8b, 0x7b, 0x5b, 0x55, 0x3a, 0xe0, 0x75, 0xe1, 0xb1, 0xbd, 0xdd, 0xd2, 0x3d, 0x7d, 0x2a } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.13", - /* Message to be signed */ - 107, - { 0xc6, 0x97, 0x39, 0xd2, 0x2a, 0xc8, 0x96, 0x6b, 0xf1, 0x1c, 0x11, 0x6f, 0x61, 0x4b, 0x16, 0x67, 0x40, 0xe9, 0x6b, 0x90, 0x65, 0x3e, 0x57, 0x50, 0x94, 0x5f, 0xcf, 0x77, 0x21, 0x86, 0xc0, 0x37, 0x90, 0xa0, 0x7f, 0xda, 0x32, 0x3e, 0x1a, 0x61, 0x91, 0x6b, 0x06, 0xee, 0x21, 0x57, 0xdb, 0x3d, 0xff, 0x80, 0xd6, 0x7d, 0x5e, 0x39, 0xa5, 0x3a, 0xe2, 0x68, 0xc8, 0xf0, 0x9e, 0xd9, 0x9a, 0x73, 0x20, 0x05, 0xb0, 0xbc, 0x6a, 0x04, 0xaf, 0x4e, 0x08, 0xd5, 0x7a, 0x00, 0xe7, 0x20, 0x1b, 0x30, 0x60, 0xef, 0xaa, 0xdb, 0x73, 0x11, 0x3b, 0xfc, 0x08, 0x7f, 0xd8, 0x37, 0x09, 0x3a, 0xa2, 0x52, 0x35, 0xb8, 0xc1, 0x49, 0xf5, 0x62, 0x15, 0xf0, 0x31, 0xc2, 0x4a } -, - /* Signature */ - 128, - { 0xd0, 0x6d, 0x32, 0x26, 0x0d, 0xa2, 0xdb, 0x48, 0x10, 0x4f, 0xbd, 0xc2, 0x4e, 0x16, 0xa6, 0x5b, 0x48, 0x73, 0x7d, 0x43, 0xce, 0x24, 0x37, 0x04, 0x04, 0x2a, 0xad, 0x6c, 0x03, 0xfd, 0xe5, 0xa3, 0xdc, 0x0f, 0x2c, 0xc6, 0xe3, 0xad, 0x68, 0xc3, 0xc6, 0x2e, 0xab, 0xfa, 0x1f, 0x7b, 0x1c, 0xab, 0x00, 0x9d, 0x11, 0x75, 0xaf, 0xf7, 0x7b, 0xe5, 0x8f, 0xb1, 0x2a, 0x4e, 0x58, 0x12, 0x7f, 0xed, 0x63, 0xea, 0x3d, 0xf4, 0x41, 0x81, 0xbd, 0xa3, 0x8c, 0x77, 0x3c, 0x83, 0xb9, 0xe8, 0x04, 0xbb, 0x3d, 0xb7, 0x96, 0x32, 0x63, 0xdf, 0x30, 0xe9, 0x2c, 0x4c, 0x27, 0x19, 0x56, 0xe7, 0xe8, 0x10, 0x45, 0x2c, 0x15, 0xe0, 0x6e, 0x93, 0x96, 0x66, 0xdf, 0x0c, 0x83, 0x34, 0x03, 0x30, 0x96, 0xc0, 0x7d, 0xea, 0x05, 0xb4, 0x4e, 0xbb, 0x14, 0x24, 0x92, 0xe7, 0x66, 0x91, 0x31, 0xeb, 0xcf, 0x2c } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.14", - /* Message to be signed */ - 16, - { 0x73, 0x30, 0x47, 0xf3, 0x36, 0xf9, 0x15, 0x47, 0x38, 0x67, 0x45, 0x47, 0xdb, 0x02, 0xa9, 0xf4 } -, - /* Signature */ - 128, - { 0xc1, 0x13, 0xc0, 0x46, 0x5c, 0x84, 0xcb, 0xfb, 0x0f, 0xa1, 0xbd, 0xbc, 0x54, 0xc3, 0xe1, 0x06, 0x8c, 0xa2, 0x3e, 0x69, 0xb8, 0x39, 0x19, 0x09, 0xc3, 0x90, 0x0f, 0xe5, 0xb4, 0xe7, 0xe3, 0xf0, 0x34, 0xc9, 0xa9, 0x88, 0xa3, 0xdd, 0xc3, 0xc3, 0x81, 0x75, 0x6a, 0x1e, 0x1a, 0x27, 0xc1, 0xec, 0xfb, 0x3a, 0x70, 0xe1, 0xee, 0x0e, 0x92, 0x04, 0x18, 0xac, 0x4a, 0xb6, 0xd9, 0x53, 0x2b, 0x8d, 0x09, 0x59, 0xa6, 0x53, 0xb4, 0xc5, 0x08, 0x67, 0x06, 0x63, 0x46, 0x2b, 0x2e, 0x13, 0x58, 0x16, 0xb6, 0x94, 0xa6, 0xb9, 0xb4, 0x68, 0xa2, 0x9f, 0x38, 0xde, 0x53, 0xbf, 0xcd, 0xdf, 0x97, 0xe0, 0x3d, 0x8d, 0xd2, 0x4f, 0x97, 0x26, 0x33, 0xa4, 0x9c, 0xf3, 0xea, 0xae, 0x1d, 0x69, 0x62, 0x94, 0x38, 0x60, 0xdd, 0x25, 0x43, 0x40, 0x08, 0x6b, 0x10, 0x35, 0x7b, 0x80, 0xc1, 0xcf, 0xbf, 0x31 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.15", - /* Message to be signed */ - 119, - { 0xa9, 0x74, 0x0b, 0x9a, 0xa0, 0xd3, 0x40, 0x58, 0xfd, 0x3b, 0x90, 0x6e, 0x4f, 0x78, 0x59, 0xdf, 0xb0, 0x7d, 0x71, 0x73, 0xe5, 0xe6, 0xf6, 0x35, 0x0a, 0xda, 0xc2, 0x1f, 0x27, 0xb2, 0x30, 0x74, 0x69, 0xbd, 0x0c, 0xe1, 0x95, 0x49, 0xd0, 0x70, 0x01, 0x20, 0xcb, 0xe5, 0x10, 0x77, 0xdb, 0xbb, 0xb0, 0x0a, 0x8d, 0x8b, 0x09, 0xde, 0x8d, 0x83, 0x96, 0xe3, 0x65, 0x07, 0xfe, 0x1e, 0xf6, 0xa1, 0x90, 0x17, 0x54, 0x8e, 0x0c, 0x71, 0x66, 0x74, 0xc2, 0xfe, 0xc2, 0x33, 0xad, 0xb2, 0xf7, 0x75, 0x66, 0x5e, 0xc4, 0x1f, 0x2b, 0xd0, 0xba, 0x39, 0x6b, 0x06, 0x1a, 0x9d, 0xaa, 0x7e, 0x86, 0x6f, 0x7c, 0x23, 0xfd, 0x35, 0x31, 0x95, 0x43, 0x00, 0xa3, 0x42, 0xf9, 0x24, 0x53, 0x5e, 0xa1, 0x49, 0x8c, 0x48, 0xf6, 0xc8, 0x79, 0x93, 0x28 } -, - /* Signature */ - 128, - { 0x4f, 0xbd, 0x4f, 0xb2, 0x37, 0x04, 0xf4, 0x14, 0x9a, 0xda, 0x32, 0x7f, 0xa5, 0x33, 0x88, 0x52, 0x6a, 0x07, 0xdd, 0x43, 0xd9, 0x15, 0xfc, 0xbd, 0xa9, 0xa1, 0x3b, 0xb2, 0xa3, 0x73, 0x8f, 0x4a, 0xdb, 0x1c, 0x3d, 0xb2, 0x6a, 0xb6, 0x90, 0x48, 0x80, 0x5a, 0x80, 0xc8, 0x16, 0x05, 0xc9, 0x6d, 0x68, 0xf8, 0x41, 0x80, 0x2f, 0x5a, 0xbb, 0x02, 0x05, 0x7b, 0x61, 0x1f, 0xe2, 0xf3, 0x94, 0x71, 0x62, 0x65, 0xe5, 0x45, 0x25, 0x2c, 0x23, 0x0c, 0xe4, 0x74, 0xaf, 0xf0, 0xbb, 0xd4, 0xff, 0x1f, 0x38, 0x08, 0x49, 0x60, 0x36, 0xa4, 0x94, 0x8c, 0xa7, 0xa1, 0x10, 0xff, 0x26, 0xc6, 0x38, 0xc5, 0x0f, 0x32, 0x15, 0xb2, 0x8a, 0x09, 0xf2, 0x3a, 0xf6, 0xf8, 0x4c, 0xdc, 0x89, 0x78, 0x98, 0xd0, 0xfd, 0x22, 0x3b, 0x13, 0x48, 0x1f, 0xe8, 0x92, 0xb1, 0xa5, 0x8b, 0xa2, 0xe4, 0xb3, 0x68, 0x5b } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.16", - /* Message to be signed */ - 51, - { 0xaf, 0x8f, 0x08, 0x87, 0xc2, 0x19, 0x00, 0x4d, 0x2a, 0xbd, 0x89, 0x4e, 0xa9, 0x25, 0x59, 0xee, 0x31, 0x98, 0xaf, 0x3a, 0x73, 0x4f, 0xe9, 0xb9, 0x63, 0x8c, 0x26, 0x3a, 0x72, 0x8a, 0xd9, 0x5a, 0x5a, 0xe8, 0xce, 0x3e, 0xb1, 0x58, 0x39, 0xf3, 0xaa, 0x78, 0x52, 0xbb, 0x39, 0x07, 0x06, 0xe7, 0x76, 0x0e, 0x43 } -, - /* Signature */ - 128, - { 0x32, 0x7e, 0xc9, 0xd0, 0xbe, 0x7a, 0xab, 0x7b, 0xc9, 0x59, 0xd4, 0x02, 0x27, 0xe1, 0xd0, 0x04, 0x81, 0xfc, 0x04, 0x01, 0x1f, 0xe0, 0x8f, 0xd5, 0x44, 0x9b, 0x90, 0xc0, 0xf0, 0x54, 0xe0, 0xd6, 0x59, 0xb9, 0x26, 0xcc, 0x81, 0x29, 0x21, 0xc2, 0x0a, 0x56, 0x3c, 0x4a, 0xbe, 0x4f, 0x82, 0x5d, 0x6b, 0x5e, 0xef, 0x57, 0xb3, 0xe2, 0xd6, 0x5d, 0x20, 0xa8, 0x01, 0x3a, 0x50, 0xdd, 0x5c, 0x93, 0x23, 0x8c, 0xf0, 0x49, 0xf2, 0xff, 0x0c, 0x7e, 0xbe, 0xb8, 0xe8, 0xca, 0xf7, 0x2e, 0x46, 0xe7, 0xcf, 0x8a, 0x0c, 0x3f, 0x49, 0x25, 0x61, 0x6b, 0x1b, 0xc1, 0x82, 0x6f, 0xfc, 0xb0, 0xbd, 0xa6, 0x0b, 0xbe, 0xbe, 0xdf, 0xd4, 0xc6, 0x0f, 0x27, 0x88, 0xd1, 0x66, 0x6f, 0xb8, 0x45, 0x11, 0x85, 0x36, 0x46, 0xc2, 0xdd, 0x46, 0x68, 0x51, 0xfa, 0xc8, 0x5b, 0xe0, 0xed, 0x5a, 0xce, 0x5f, 0xe2 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.17", - /* Message to be signed */ - 115, - { 0x38, 0xdf, 0x86, 0x55, 0x7f, 0x37, 0x5d, 0x09, 0xcc, 0xd8, 0xbd, 0x15, 0xd8, 0xcc, 0xf6, 0x1f, 0x5d, 0x78, 0xca, 0x5c, 0x7f, 0x5c, 0xde, 0x78, 0x2e, 0x6b, 0xf5, 0xd0, 0x05, 0x70, 0x56, 0xd4, 0xba, 0xd9, 0x8b, 0x3d, 0x2f, 0x95, 0x75, 0xe8, 0x24, 0xab, 0x7a, 0x33, 0xff, 0x57, 0xb0, 0xac, 0x10, 0x0a, 0xb0, 0xd6, 0xea, 0xd7, 0xaa, 0x0b, 0x50, 0xf6, 0xe4, 0xd3, 0xe5, 0xec, 0x0b, 0x96, 0x6b, 0x81, 0x57, 0x79, 0xa9, 0x1b, 0x3a, 0x8b, 0xd0, 0x49, 0xbf, 0x2a, 0xeb, 0x92, 0x01, 0x42, 0x77, 0x22, 0x22, 0xc9, 0xca, 0x0c, 0x32, 0x8c, 0x65, 0x9e, 0x0a, 0x64, 0x37, 0x43, 0x3c, 0xce, 0xb7, 0x3c, 0x14, 0x9a, 0xec, 0x4a, 0x74, 0x80, 0xd5, 0xbb, 0xc4, 0x29, 0x20, 0xd7, 0xca, 0x23, 0x5d, 0xb6, 0x74 } -, - /* Signature */ - 128, - { 0x30, 0x46, 0x05, 0x5c, 0x2b, 0x8e, 0xf7, 0xfa, 0x92, 0xc8, 0xa9, 0xe3, 0x95, 0x98, 0x5b, 0xd4, 0x60, 0xfb, 0x6b, 0x47, 0x98, 0x65, 0x53, 0x94, 0x4d, 0x21, 0x04, 0x51, 0x19, 0xf7, 0xe7, 0x61, 0x7e, 0x03, 0xfe, 0x80, 0x87, 0x0a, 0xc6, 0xaa, 0xbf, 0x63, 0xb0, 0x96, 0xca, 0xd5, 0xcc, 0xe7, 0xf5, 0x06, 0x95, 0x3a, 0x7f, 0x69, 0x3f, 0xe1, 0x37, 0xad, 0xfb, 0x97, 0xcd, 0x45, 0x81, 0x28, 0xae, 0x95, 0xc4, 0x7c, 0xa9, 0x48, 0xda, 0xcf, 0x24, 0x03, 0x6a, 0xde, 0xaa, 0x48, 0xf2, 0x9a, 0x46, 0x9f, 0xb5, 0x13, 0x19, 0x1e, 0x05, 0xac, 0xf7, 0x9e, 0x67, 0xa7, 0x93, 0xa3, 0xaf, 0x5e, 0x4f, 0x9c, 0x6d, 0x0d, 0x01, 0xfd, 0xd0, 0xe0, 0xcd, 0x42, 0x96, 0xad, 0x3d, 0xa2, 0xca, 0x89, 0xa5, 0x0e, 0xed, 0xcd, 0x9f, 0x7b, 0x87, 0x7d, 0x2a, 0xe1, 0xd5, 0x8d, 0x98, 0xdc, 0xd7, 0x8f } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.18", - /* Message to be signed */ - 12, - { 0xcb, 0x34, 0xed, 0xd5, 0xab, 0x65, 0x40, 0x41, 0xb6, 0x14, 0x30, 0x56 } -, - /* Signature */ - 128, - { 0x1d, 0xdf, 0x48, 0xba, 0x53, 0x51, 0xbe, 0xd0, 0x79, 0x5f, 0x55, 0xb3, 0x06, 0xaa, 0x1c, 0x6e, 0xd8, 0x36, 0xf5, 0x92, 0xba, 0x93, 0xcf, 0x0c, 0x46, 0xb7, 0xc2, 0x73, 0x70, 0x9d, 0x36, 0xb8, 0xdf, 0xf0, 0x2a, 0xbd, 0xb1, 0xa7, 0x68, 0xd1, 0xc7, 0x11, 0x4a, 0x86, 0xa4, 0x57, 0x49, 0x6d, 0xa5, 0x79, 0xe4, 0xd8, 0x19, 0xf7, 0x2a, 0x19, 0x2e, 0x29, 0x8b, 0xe2, 0x15, 0x2f, 0x7c, 0xf3, 0x9d, 0x1e, 0x30, 0x82, 0x7d, 0x02, 0x82, 0xcc, 0xf3, 0x4d, 0xc8, 0x88, 0x9f, 0x1c, 0x2f, 0x59, 0x70, 0x93, 0x0d, 0x97, 0x35, 0x04, 0x2f, 0x8a, 0x5a, 0x71, 0x22, 0x63, 0x16, 0x5d, 0x6e, 0x6c, 0x50, 0x35, 0xe2, 0xe4, 0xa5, 0x0e, 0x86, 0x3c, 0x06, 0x79, 0x9e, 0x3c, 0x89, 0xcc, 0xb5, 0xcb, 0x0e, 0x70, 0xb3, 0xc9, 0x9c, 0x08, 0x40, 0x30, 0x67, 0x7a, 0x7c, 0x97, 0x90, 0x7a, 0x17, 0x24 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.19", - /* Message to be signed */ - 181, - { 0x5b, 0x09, 0xec, 0x88, 0xb1, 0x52, 0x71, 0x78, 0xfa, 0x04, 0x32, 0x63, 0xf3, 0x06, 0x7d, 0x9f, 0xfe, 0x97, 0x30, 0x32, 0xa9, 0x9f, 0x4c, 0xb0, 0x8a, 0xd2, 0xc7, 0xe0, 0xa2, 0x45, 0x6c, 0xdd, 0x57, 0xa7, 0xdf, 0x56, 0xfe, 0x60, 0x53, 0x52, 0x7a, 0x5a, 0xeb, 0x67, 0xd7, 0xe5, 0x52, 0x06, 0x3c, 0x1c, 0xa9, 0x7b, 0x1b, 0xef, 0xfa, 0x7b, 0x39, 0xe9, 0x97, 0xca, 0xf2, 0x78, 0x78, 0xea, 0x0f, 0x62, 0xcb, 0xeb, 0xc8, 0xc2, 0x1d, 0xf4, 0xc8, 0x89, 0xa2, 0x02, 0x85, 0x1e, 0x94, 0x90, 0x88, 0x49, 0x0c, 0x24, 0x9b, 0x6e, 0x9a, 0xcf, 0x1d, 0x80, 0x63, 0xf5, 0xbe, 0x23, 0x43, 0x98, 0x9b, 0xf9, 0x5c, 0x4d, 0xa0, 0x1a, 0x2b, 0xe7, 0x8b, 0x4a, 0xb6, 0xb3, 0x78, 0x01, 0x5b, 0xc3, 0x79, 0x57, 0xf7, 0x69, 0x48, 0xb5, 0xe5, 0x8e, 0x44, 0x0c, 0x28, 0x45, 0x3d, 0x40, 0xd7, 0xcf, 0xd5, 0x7e, 0x7d, 0x69, 0x06, 0x00, 0x47, 0x4a, 0xb5, 0xe7, 0x59, 0x73, 0xb1, 0xea, 0x0c, 0x5f, 0x1e, 0x45, 0xd1, 0x41, 0x90, 0xaf, 0xe2, 0xf4, 0xeb, 0x6d, 0x3b, 0xdf, 0x71, 0xf1, 0xd2, 0xf8, 0xbb, 0x15, 0x6a, 0x1c, 0x29, 0x5d, 0x04, 0xaa, 0xeb, 0x9d, 0x68, 0x9d, 0xce, 0x79, 0xed, 0x62, 0xbc, 0x44, 0x3e, 0xe2, 0x0c } -, - /* Signature */ - 128, - { 0xaf, 0x56, 0xfc, 0x32, 0x97, 0x39, 0xe2, 0xf7, 0x75, 0x4b, 0x6c, 0xa2, 0x51, 0x64, 0xa6, 0xfa, 0x58, 0xf6, 0x85, 0xdd, 0xb7, 0x42, 0xb4, 0x84, 0x1d, 0x73, 0xa5, 0xe2, 0xc4, 0xc4, 0x53, 0x43, 0xb7, 0x4d, 0xfd, 0x2f, 0x0d, 0x37, 0x0e, 0xdd, 0xdd, 0x36, 0xa0, 0x17, 0x56, 0x4a, 0x8d, 0x3a, 0xd4, 0x02, 0xe2, 0xa3, 0x41, 0xc9, 0x72, 0x06, 0x2c, 0x23, 0x81, 0x4a, 0x00, 0x13, 0x1e, 0x17, 0xb1, 0xde, 0xc7, 0xb4, 0xc5, 0x7c, 0x5b, 0xf1, 0xd4, 0xfa, 0x79, 0x22, 0x29, 0x37, 0xa4, 0xdc, 0x5c, 0x00, 0x23, 0x5f, 0x85, 0x3d, 0xd2, 0x3d, 0xc9, 0x75, 0x7f, 0x33, 0x5c, 0x85, 0xc2, 0x07, 0xeb, 0x07, 0x4d, 0x4b, 0xcc, 0x24, 0x3e, 0xda, 0xa7, 0x83, 0x1b, 0x83, 0x13, 0x56, 0x55, 0xe2, 0x27, 0x7e, 0xf2, 0x9e, 0x7a, 0xeb, 0xf3, 0x4a, 0x0f, 0x7b, 0x23, 0x4a, 0x28, 0x65, 0x0a, 0x30 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 4.20", - /* Message to be signed */ - 17, - { 0x3c, 0x33, 0x0c, 0x1e, 0xf7, 0x18, 0xc1, 0x41, 0xe4, 0x7b, 0x8f, 0xa8, 0x59, 0xbe, 0x4d, 0x5b, 0x96 } -, - /* Signature */ - 128, - { 0x0b, 0x10, 0x22, 0xdc, 0x38, 0xe2, 0x17, 0xfd, 0x3b, 0x0e, 0x7e, 0xf1, 0x9d, 0xfc, 0xb4, 0xb4, 0x56, 0x36, 0x62, 0x40, 0x98, 0x30, 0x95, 0xf6, 0xdb, 0x96, 0x58, 0x31, 0xa7, 0x0f, 0x0f, 0x8e, 0x20, 0xe2, 0xdd, 0x2a, 0xc2, 0x31, 0xcc, 0x37, 0x90, 0x45, 0xc2, 0x73, 0x65, 0xe7, 0x3a, 0x53, 0x71, 0x9b, 0xb6, 0xf0, 0x11, 0xc3, 0xf8, 0x63, 0x6b, 0x64, 0x99, 0x4c, 0xa4, 0x80, 0x60, 0x2f, 0xb3, 0xb4, 0xf0, 0xe2, 0x27, 0x4b, 0x58, 0xb3, 0x63, 0xe0, 0xd3, 0x08, 0xb5, 0x28, 0xe1, 0x58, 0x59, 0xa9, 0x1d, 0xcf, 0x99, 0xbf, 0xfe, 0xfb, 0xc8, 0x05, 0x22, 0x41, 0xb9, 0x74, 0x19, 0x2e, 0x63, 0x62, 0x18, 0xf3, 0x98, 0x33, 0x2d, 0xaf, 0xe8, 0x25, 0x9c, 0xa5, 0xf5, 0xcc, 0xfa, 0x54, 0xc9, 0xb3, 0x2b, 0x27, 0x35, 0xaf, 0x07, 0x24, 0xf4, 0x0b, 0x5a, 0x5d, 0x61, 0x21, 0xa4, 0x0d } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 5: A 1024-bit RSA key pair", -{ - /* Modulus */ - 128, - { 0xc5, 0x5f, 0xfb, 0xdd, 0x6a, 0x27, 0x53, 0xbc, 0x02, 0xaf, 0x20, 0xae, 0x18, 0xea, 0x0d, 0xaf, 0x23, 0x0b, 0xb6, 0xf8, 0x79, 0x5d, 0x05, 0xef, 0xec, 0xc8, 0x15, 0xba, 0xec, 0xe2, 0x2b, 0x38, 0x79, 0x99, 0x5f, 0x6d, 0x97, 0x64, 0xc1, 0xdf, 0x8f, 0x97, 0x85, 0x13, 0x81, 0x68, 0x62, 0x66, 0xb8, 0x09, 0x2f, 0xb6, 0x01, 0x18, 0x98, 0xa7, 0x67, 0x07, 0xa4, 0xd1, 0xd5, 0xbd, 0xa0, 0x8d, 0x24, 0x6c, 0x68, 0x7a, 0x8b, 0xba, 0xfa, 0x63, 0x98, 0xac, 0x9e, 0xa2, 0x72, 0x68, 0x23, 0x71, 0x4a, 0x0c, 0x39, 0x34, 0xca, 0x6e, 0x5f, 0x8c, 0xe3, 0x39, 0x87, 0xb5, 0x34, 0x85, 0x7e, 0xa9, 0xf8, 0x5c, 0xc4, 0xe1, 0x9a, 0x1d, 0x21, 0x83, 0xe0, 0xe4, 0xc8, 0xaa, 0x55, 0xcb, 0x22, 0x7b, 0x0e, 0x56, 0xce, 0xb2, 0xb6, 0x2b, 0x30, 0xef, 0xc7, 0x88, 0x64, 0xb2, 0xf9, 0xfb, 0x92, 0x49 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x07, 0xe3, 0xfa, 0x71, 0xb3, 0x98, 0xb6, 0xe4, 0x41, 0x47, 0x37, 0x0b, 0x3e, 0xbb, 0xbc, 0xa8, 0x4f, 0xc2, 0x5c, 0x22, 0x3a, 0xd7, 0xd9, 0x30, 0xea, 0x4a, 0x65, 0x73, 0xff, 0x9c, 0x5b, 0x15, 0xfa, 0xe6, 0x82, 0xc6, 0x22, 0xd3, 0x48, 0x5c, 0xe3, 0xa4, 0xaf, 0x11, 0x44, 0x8f, 0x23, 0xbf, 0xef, 0x83, 0x8e, 0x80, 0xbc, 0x32, 0x7b, 0x87, 0xd5, 0xba, 0x9c, 0x80, 0x37, 0x07, 0x49, 0xaf, 0xc8, 0xc1, 0xc0, 0x17, 0x54, 0x6f, 0xc6, 0xb6, 0x59, 0x31, 0xb7, 0x59, 0xca, 0x43, 0x41, 0xfa, 0x5e, 0x5e, 0x10, 0xb2, 0x40, 0x87, 0xe6, 0xe2, 0xc0, 0xf4, 0xdb, 0xb7, 0x90, 0x69, 0x52, 0x99, 0x9c, 0xbd, 0x90, 0xd2, 0x43, 0x5f, 0xca, 0xcc, 0x9c, 0x82, 0xe4, 0x8f, 0xdf, 0x24, 0xe4, 0x95, 0xcf, 0xf3, 0x0a, 0xd4, 0x19, 0xe7, 0x12, 0x3e, 0x3a, 0xc9, 0x42, 0x27, 0x2e, 0x1a, 0xba, 0xb1 } -, - /* Prime 1 */ - 64, - { 0xf7, 0xf7, 0xc0, 0x02, 0xf0, 0x19, 0x6e, 0xcd, 0xd7, 0x1b, 0xa5, 0xad, 0x74, 0x2b, 0x69, 0x48, 0x27, 0xd2, 0x88, 0xaf, 0x1b, 0x1b, 0xb6, 0x9c, 0x5e, 0xd7, 0xfb, 0x22, 0x9d, 0xee, 0x4b, 0x7a, 0x32, 0xf2, 0xf7, 0x56, 0x8a, 0x6f, 0xca, 0xf3, 0x83, 0xd8, 0x9a, 0xda, 0x9f, 0xc1, 0x4a, 0x7b, 0xa5, 0xd0, 0xa4, 0xa4, 0x6c, 0x2c, 0x54, 0x3e, 0xec, 0x17, 0x75, 0x49, 0xc8, 0xa0, 0x48, 0xb7 } -, - /* Prime 2 */ - 64, - { 0xcb, 0xc4, 0xb2, 0x86, 0x04, 0x76, 0xa2, 0xd3, 0xe8, 0xa4, 0xda, 0x21, 0x00, 0x16, 0xca, 0xce, 0xd0, 0xe3, 0x67, 0xcb, 0x86, 0x77, 0x10, 0xa4, 0xb5, 0xaa, 0x2d, 0xf2, 0xb8, 0xe5, 0xda, 0xf5, 0xfd, 0xc6, 0x47, 0x80, 0x7d, 0x4d, 0x5e, 0xbb, 0x6c, 0x56, 0xb9, 0x76, 0x3c, 0xcd, 0xae, 0x4d, 0xea, 0x33, 0x08, 0xeb, 0x0a, 0xc2, 0xa8, 0x95, 0x01, 0xcb, 0x20, 0x9d, 0x26, 0x39, 0xfc, 0xff } -, - /* Prime exponent 1 */ - 64, - { 0x6c, 0x76, 0x27, 0xbc, 0xa1, 0x3c, 0xde, 0xa4, 0x96, 0xa4, 0x77, 0x31, 0x89, 0x90, 0xbb, 0x7a, 0x5e, 0x40, 0xce, 0x9c, 0x99, 0x24, 0xe4, 0x19, 0x3d, 0xbb, 0x07, 0x14, 0x3b, 0x34, 0x52, 0x3b, 0x5f, 0x31, 0xbb, 0x52, 0x55, 0x37, 0x54, 0xf4, 0x73, 0x05, 0x39, 0xa6, 0xcb, 0x1e, 0x06, 0xf0, 0x52, 0xb5, 0x12, 0x6f, 0x01, 0x09, 0xda, 0xc7, 0xb3, 0x09, 0x07, 0xba, 0x80, 0x50, 0xeb, 0xbd } -, - /* Prime exponent 2 */ - 64, - { 0x40, 0x92, 0x74, 0x80, 0x43, 0xa9, 0xd4, 0xaf, 0x92, 0x69, 0xab, 0x36, 0x09, 0xf1, 0x2f, 0x13, 0x9a, 0xde, 0x75, 0x65, 0xe9, 0x96, 0x91, 0x8f, 0xa0, 0x81, 0xed, 0x4d, 0x9d, 0x8a, 0x39, 0x78, 0xfa, 0x92, 0x7a, 0xd6, 0x1c, 0xdf, 0x07, 0xc6, 0x1c, 0xee, 0xde, 0x96, 0xb9, 0x6d, 0xf4, 0x6e, 0x7c, 0x68, 0xef, 0xca, 0x8b, 0xfe, 0x63, 0xad, 0xd4, 0x83, 0xaa, 0x32, 0x22, 0x8a, 0xfd, 0xc1 } -, - /* Coefficient */ - 64, - { 0x2a, 0x61, 0x94, 0xca, 0x29, 0x70, 0x72, 0x38, 0x45, 0xff, 0xf3, 0x8c, 0xa1, 0xa9, 0xa3, 0xb5, 0x66, 0xb4, 0x24, 0x5d, 0xe2, 0xf9, 0x01, 0x34, 0xb8, 0xe6, 0xae, 0xc8, 0xae, 0x07, 0xf3, 0xbb, 0x7c, 0x5e, 0x5a, 0xe6, 0xe1, 0x83, 0x34, 0x85, 0xe5, 0x5d, 0x8c, 0xa6, 0x0c, 0xe1, 0x64, 0x2f, 0x72, 0x75, 0x96, 0x8e, 0x66, 0x12, 0x38, 0x35, 0x52, 0x11, 0xc6, 0x38, 0x48, 0x94, 0x0f, 0x3c } - -} -, -{{ - "PKCS#1 v1.5 Signature Example 5.1", - /* Message to be signed */ - 187, - { 0xea, 0xe9, 0xa4, 0x0b, 0xff, 0x18, 0x3f, 0x41, 0x14, 0x73, 0x2e, 0x7b, 0x3b, 0xa5, 0x56, 0xf4, 0xce, 0x28, 0x8d, 0xaa, 0x83, 0xe3, 0xff, 0x23, 0x61, 0x12, 0x44, 0xa7, 0xa0, 0x90, 0x1f, 0x11, 0x7d, 0x86, 0xc0, 0x9c, 0x33, 0xa5, 0x23, 0x2b, 0xd3, 0x20, 0xfa, 0x37, 0xa2, 0x38, 0xa8, 0xaa, 0x62, 0xdd, 0x21, 0xab, 0xbf, 0xac, 0xdb, 0x93, 0xfa, 0x1c, 0x44, 0xcc, 0x55, 0xac, 0x61, 0xbe, 0xa2, 0x4a, 0x6a, 0x34, 0xcc, 0x64, 0x76, 0x75, 0x38, 0x37, 0xe1, 0x6f, 0xac, 0xd8, 0x2e, 0xb4, 0x9e, 0x1c, 0x57, 0xc9, 0x58, 0xfb, 0xbf, 0xf5, 0x68, 0x88, 0x7c, 0xf8, 0x2e, 0xeb, 0xe9, 0x61, 0xe5, 0x80, 0xe0, 0x64, 0xdb, 0x9c, 0xbe, 0xc3, 0xb5, 0x3d, 0xf1, 0xf2, 0x71, 0x99, 0xe4, 0x9a, 0x04, 0xcb, 0xe5, 0x9c, 0x69, 0xa2, 0x65, 0xcf, 0xac, 0x8c, 0xe4, 0xf9, 0x1c, 0xa9, 0x5d, 0x52, 0xb1, 0x14, 0x5c, 0x8b, 0x9f, 0x44, 0x40, 0xb3, 0x9c, 0x18, 0x50, 0x94, 0xbe, 0x18, 0x48, 0x74, 0xda, 0x59, 0x71, 0xd7, 0xd7, 0x63, 0xfe, 0x07, 0xce, 0x16, 0xe5, 0x7f, 0x1e, 0x50, 0xd2, 0x28, 0x65, 0x04, 0xb4, 0x81, 0xe2, 0xc6, 0x85, 0xbc, 0x9d, 0x9c, 0x01, 0x49, 0x3f, 0xd3, 0xa6, 0xd8, 0xbb, 0x9b, 0x2e, 0x96, 0xbf, 0xde, 0xb6, 0xc9, 0x29, 0x14, 0xca } -, - /* Signature */ - 128, - { 0x44, 0xce, 0xb4, 0x42, 0x24, 0x2b, 0xae, 0x08, 0x59, 0x94, 0xea, 0xd0, 0x7b, 0x70, 0x95, 0x43, 0xea, 0x23, 0x95, 0xa6, 0xe8, 0xd4, 0x64, 0x73, 0xd7, 0x0d, 0xf3, 0x4a, 0x95, 0x55, 0xaa, 0x56, 0x7f, 0x4d, 0xa1, 0x38, 0xe9, 0x63, 0xfe, 0x92, 0x86, 0xa8, 0x4f, 0xb7, 0xc5, 0xcf, 0x82, 0x00, 0x03, 0x59, 0x04, 0xb5, 0x0c, 0x32, 0x40, 0x3c, 0xae, 0x51, 0x7b, 0xfa, 0x7f, 0xca, 0x8a, 0x66, 0xfc, 0xfd, 0x63, 0x2a, 0xf7, 0x47, 0xc4, 0x9c, 0xdf, 0xb0, 0xb9, 0xae, 0xe3, 0x52, 0x28, 0xb7, 0xdc, 0x4c, 0x21, 0x00, 0x39, 0x69, 0xb0, 0xa0, 0x13, 0xed, 0xe1, 0x29, 0x2b, 0x65, 0xd1, 0x0a, 0x50, 0xc9, 0x02, 0x63, 0xfb, 0x0b, 0xf4, 0xf4, 0xb8, 0x37, 0x66, 0x41, 0xb0, 0x3e, 0x1f, 0xaf, 0xb8, 0x83, 0xf0, 0x38, 0xf4, 0x32, 0x3d, 0xfe, 0x5b, 0xea, 0xc4, 0x68, 0xde, 0xea, 0x99, 0xc3 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Signature Example 5.2", - /* Message to be signed */ - 92, - { 0x9d, 0xe5, 0xca, 0x46, 0x74, 0x85, 0x61, 0xa0, 0xb9, 0x28, 0xb2, 0x60, 0xa9, 0x5a, 0x3e, 0xd9, 0x20, 0xad, 0xc8, 0xd5, 0xee, 0xb9, 0x27, 0x1d, 0xc7, 0x1b, 0xc1, 0x4f, 0x69, 0xcc, 0xd6, 0x31, 0x1d, 0x18, 0x6a, 0x77, 0x9f, 0x5e, 0xb8, 0xdb, 0x17, 0xc6, 0x90, 0xd6, 0x86, 0x7c, 0xf3, 0x36, 0x9b, 0xbf, 0xf1, 0x5f, 0xab, 0xb3, 0xcd, 0x2c, 0xfd, 0xd6, 0xf7, 0xd7, 0x52, 0x86, 0xff, 0x2d, 0x24, 0x99, 0xc5, 0xab, 0xb4, 0x8e, 0xd5, 0x4f, 0xd4, 0xd8, 0x49, 0xa9, 0x18, 0x0e, 0x11, 0x0e, 0x0a, 0x53, 0xa7, 0x21, 0x39, 0x82, 0x92, 0x11, 0x0f, 0xe8, 0xbe, 0x26 } -, - /* Signature */ - 128, - { 0x44, 0x5f, 0xf5, 0xb6, 0x87, 0x9f, 0x8c, 0xe7, 0x53, 0x95, 0x01, 0x6f, 0x04, 0x95, 0xf1, 0x31, 0x35, 0xb1, 0x79, 0xe7, 0x3a, 0x3c, 0xae, 0xb3, 0x30, 0xe3, 0xcd, 0xa7, 0xf3, 0x1f, 0x1d, 0xcb, 0xa7, 0xaa, 0x82, 0xe2, 0x68, 0xc9, 0x35, 0xe9, 0xd7, 0x01, 0x4e, 0x0b, 0x0d, 0xce, 0xa6, 0x9c, 0x7b, 0x96, 0x8a, 0xdb, 0x17, 0x42, 0x4a, 0x64, 0xdf, 0xd1, 0xe2, 0xbc, 0x57, 0x07, 0xf9, 0x20, 0xfc, 0x0c, 0x83, 0xcc, 0x63, 0xdf, 0xc7, 0x4b, 0x96, 0x3e, 0x68, 0x2b, 0x46, 0xa2, 0x2a, 0xc2, 0x56, 0xac, 0x6b, 0xe5, 0x70, 0x9c, 0x07, 0xcf, 0xcc, 0x3d, 0x4e, 0xba, 0x3a, 0x1d, 0x61, 0xab, 0x15, 0xf1, 0xba, 0xdb, 0x0a, 0x49, 0xfb, 0x5c, 0xf0, 0x9a, 0x1f, 0x74, 0x81, 0xa3, 0xaa, 0xea, 0xf7, 0xc2, 0x57, 0x54, 0x03, 0x77, 0xae, 0xa7, 0xb5, 0x44, 0x17, 0xa6, 0x09, 0xc7, 0x6f, 0x4c } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.3", - /* Message to be signed */ - 232, - { 0x18, 0x3b, 0xa1, 0xa3, 0x81, 0x1d, 0x62, 0x5c, 0xa9, 0xda, 0x1b, 0xba, 0xae, 0xdc, 0x76, 0x19, 0x20, 0x12, 0xfc, 0xb6, 0x74, 0xbb, 0x9e, 0x77, 0xd8, 0xf3, 0x77, 0x08, 0xd2, 0x40, 0xd3, 0x49, 0xe0, 0x57, 0x97, 0x41, 0x6f, 0xeb, 0x24, 0xe3, 0x01, 0x8c, 0x7a, 0x20, 0x5d, 0x05, 0x9d, 0xe8, 0xe0, 0xae, 0x05, 0xa8, 0xd7, 0xe0, 0x9e, 0xaf, 0xee, 0xb9, 0xf0, 0x6d, 0xe5, 0xd4, 0x28, 0x7a, 0xbb, 0xef, 0x05, 0x9b, 0xc5, 0x86, 0xb2, 0x1c, 0x82, 0xd6, 0x4a, 0xec, 0xe8, 0xd7, 0x42, 0x8a, 0xfc, 0xd7, 0xb2, 0x2f, 0xc5, 0xd1, 0x68, 0xbc, 0x07, 0x6b, 0x61, 0x5f, 0x02, 0x73, 0x3c, 0xb6, 0x31, 0x25, 0xc8, 0xf3, 0x6d, 0x5c, 0xb8, 0x09, 0xce, 0x80, 0x65, 0x08, 0x23, 0x98, 0xb3, 0x88, 0x5a, 0x89, 0x19, 0x57, 0x0c, 0x47, 0x8a, 0x07, 0x2f, 0x59, 0x66, 0x15, 0xd7, 0x8f, 0x01, 0x36, 0xd1, 0x1b, 0xe3, 0x2b, 0x3f, 0xe0, 0xf4, 0xfb, 0xe3, 0xc7, 0xda, 0x5d, 0x81, 0x34, 0x19, 0x10, 0x17, 0x7e, 0x48, 0xb1, 0xbb, 0xac, 0x27, 0x6c, 0x12, 0xee, 0x81, 0x54, 0x65, 0xdc, 0x67, 0xd4, 0x53, 0x24, 0xf9, 0x05, 0xaa, 0xca, 0x48, 0x38, 0xd8, 0x1f, 0x74, 0x31, 0x46, 0x3e, 0x89, 0xeb, 0x8b, 0x95, 0x36, 0x58, 0x69, 0x36, 0xaf, 0xb4, 0x2c, 0xb4, 0x7b, 0xd8, 0xc3, 0x18, 0x29, 0xd3, 0x1e, 0xc1, 0xee, 0x29, 0xf9, 0x1c, 0xcc, 0x6d, 0xf9, 0xcd, 0x1b, 0x0b, 0x9b, 0x86, 0x46, 0xb6, 0x02, 0x67, 0xfd, 0x7e, 0xce, 0xae, 0x92, 0xc0, 0xae, 0x9e, 0x0c, 0xe5, 0xff, 0x6f, 0x7e, 0x0b, 0xf7, 0x56, 0xa9, 0xb8, 0xff, 0xc9, 0xc6, 0x16 } -, - /* Signature */ - 128, - { 0xab, 0x4b, 0x78, 0x96, 0x4c, 0x2a, 0x35, 0xd3, 0x28, 0x55, 0xe0, 0xef, 0xce, 0xd3, 0x4b, 0xf8, 0x02, 0x19, 0xb5, 0x8c, 0x48, 0x8e, 0xa3, 0x75, 0xb1, 0xf3, 0x27, 0x16, 0x6a, 0x51, 0x35, 0xe5, 0xda, 0x99, 0x45, 0xc2, 0x87, 0x29, 0x7a, 0x3d, 0x93, 0x2e, 0x57, 0x27, 0x46, 0xf0, 0x22, 0x74, 0x8b, 0x85, 0x58, 0x5a, 0x0a, 0xbd, 0x91, 0x86, 0xf4, 0xac, 0x35, 0xed, 0xc8, 0x50, 0xd2, 0xfd, 0x88, 0x05, 0xb9, 0xe9, 0xf5, 0x1a, 0x5a, 0xdc, 0xb9, 0x5e, 0x1a, 0xc1, 0x72, 0x9e, 0x57, 0xb8, 0x53, 0x31, 0xc1, 0xed, 0x15, 0xc3, 0xd0, 0xcf, 0xae, 0x33, 0xf6, 0x1c, 0x11, 0x9b, 0x55, 0xc9, 0x5e, 0x34, 0x4b, 0x72, 0xf2, 0xb4, 0xf8, 0xe7, 0xe8, 0xfa, 0xc7, 0xa3, 0x3e, 0x5b, 0x8b, 0x27, 0x6a, 0x60, 0x88, 0xa7, 0xfa, 0xbf, 0x4f, 0xa1, 0x72, 0x35, 0x7f, 0xb6, 0xe3, 0xf4, 0x4a, 0x94 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.4", - /* Message to be signed */ - 215, - { 0x87, 0x07, 0xdc, 0xdb, 0x49, 0xd2, 0x83, 0xa2, 0x3a, 0x9b, 0xd6, 0xff, 0x87, 0xaf, 0xf8, 0x34, 0xf0, 0x6f, 0xf7, 0xf4, 0x7b, 0x0e, 0x5f, 0x57, 0xff, 0x1a, 0x0d, 0x99, 0x5b, 0xba, 0x9c, 0xdd, 0x5e, 0xa0, 0x1b, 0x42, 0xb2, 0x5d, 0x6f, 0xf1, 0x7a, 0x0d, 0xc1, 0x06, 0x05, 0xcf, 0x45, 0x2a, 0xca, 0x73, 0xbe, 0x54, 0xed, 0x5e, 0x0c, 0xe2, 0x15, 0x66, 0xaf, 0xcc, 0x17, 0x91, 0x2a, 0xbe, 0x18, 0xdf, 0xac, 0xd1, 0xbc, 0x03, 0xe3, 0xe2, 0x88, 0x2a, 0x4b, 0xb3, 0xa4, 0xf3, 0x9e, 0xea, 0xf9, 0x63, 0xd7, 0xc3, 0x5e, 0x6b, 0xa8, 0x58, 0xb1, 0x37, 0x6a, 0x07, 0x51, 0x60, 0xc6, 0xcf, 0xae, 0xd5, 0xe8, 0xc5, 0x2e, 0x45, 0x11, 0x32, 0x34, 0x72, 0x19, 0xbd, 0x88, 0x89, 0x3e, 0xeb, 0xe3, 0x56, 0x59, 0xa0, 0xee, 0x4d, 0x94, 0xf9, 0x4d, 0x03, 0x5b, 0x7a, 0x86, 0x86, 0xff, 0xb4, 0x16, 0xeb, 0x99, 0xfb, 0x2a, 0xaa, 0x81, 0x23, 0x6b, 0x05, 0xac, 0x46, 0x45, 0x92, 0x5f, 0x2c, 0x2b, 0xc1, 0x9e, 0xbe, 0x89, 0xa6, 0x3f, 0x2f, 0x45, 0x1d, 0x0b, 0x13, 0xb2, 0xfe, 0xf0, 0x61, 0xe5, 0x30, 0xa3, 0x49, 0xba, 0xf3, 0xb2, 0x35, 0x64, 0x22, 0xb0, 0x95, 0xfd, 0x9f, 0x19, 0x29, 0x93, 0xab, 0x99, 0xc9, 0xf9, 0x22, 0x6e, 0xf9, 0xa7, 0xb3, 0xcf, 0xb3, 0x65, 0x82, 0x08, 0x59, 0x29, 0xc8, 0x76, 0xb5, 0xe9, 0xd7, 0xc6, 0xac, 0xac, 0x7b, 0xb0, 0x27, 0x52, 0x34, 0xe4, 0x1e, 0xd3, 0x51, 0xc8, 0x38, 0xb7, 0xa3, 0x1a } -, - /* Signature */ - 128, - { 0x17, 0x53, 0x98, 0x8b, 0x39, 0xdc, 0x74, 0x5d, 0xf9, 0x69, 0x1a, 0xf9, 0xee, 0x69, 0xca, 0xda, 0x73, 0xa9, 0x87, 0x7c, 0xca, 0x12, 0xf6, 0xd4, 0x06, 0x27, 0xdc, 0xed, 0x76, 0x22, 0x14, 0x7e, 0xc9, 0x01, 0xa5, 0xb4, 0x63, 0xe7, 0xef, 0x9b, 0x37, 0xfb, 0xd6, 0x92, 0x78, 0x5a, 0xa2, 0x2a, 0x46, 0x5d, 0xf4, 0x03, 0xaf, 0x92, 0xa2, 0x9f, 0x79, 0x5d, 0x40, 0xa8, 0x3f, 0xa9, 0x64, 0xb8, 0x5a, 0x7e, 0xc0, 0x5a, 0x3c, 0xda, 0xe3, 0xf8, 0xbc, 0x8a, 0x61, 0xa7, 0x9d, 0xc8, 0x42, 0xe1, 0xd3, 0x77, 0xbc, 0x5e, 0x1d, 0x46, 0xad, 0xaa, 0xa8, 0x66, 0xbe, 0x28, 0x2c, 0x6e, 0x23, 0x88, 0x17, 0x36, 0x44, 0xf4, 0x06, 0x27, 0xbc, 0xf8, 0xa0, 0x97, 0x4a, 0x4b, 0xe8, 0xfc, 0xc4, 0x8a, 0xee, 0x7e, 0x82, 0x59, 0xf8, 0x68, 0xa2, 0xbd, 0x78, 0x9a, 0x90, 0x89, 0x92, 0x05, 0x6e, 0x55 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.5", - /* Message to be signed */ - 246, - { 0xac, 0x9f, 0xa3, 0xf6, 0x3d, 0xf0, 0x68, 0xe9, 0x0d, 0x69, 0x2e, 0xcc, 0xfa, 0x7d, 0x87, 0x96, 0x49, 0x1a, 0xca, 0x79, 0x5b, 0x98, 0x58, 0xa4, 0x55, 0x18, 0x62, 0x32, 0x29, 0xaf, 0x28, 0xb1, 0x3a, 0x50, 0x2d, 0x8c, 0xb3, 0xb9, 0x50, 0x92, 0x50, 0x58, 0x82, 0xeb, 0x99, 0x4d, 0xe7, 0x46, 0x59, 0x62, 0x56, 0x98, 0xa0, 0x05, 0x04, 0x17, 0x94, 0x0d, 0x8b, 0xfa, 0x28, 0xa3, 0xf9, 0x3d, 0x14, 0x9f, 0xf8, 0xb0, 0xbb, 0x39, 0x26, 0xf6, 0x18, 0xef, 0x91, 0x96, 0x6f, 0x4d, 0x39, 0xbd, 0xba, 0x5a, 0x05, 0x17, 0xdd, 0xeb, 0xb1, 0x6d, 0x2b, 0xc4, 0xb4, 0xe3, 0x3a, 0x7d, 0x61, 0x9c, 0x95, 0xa3, 0x3c, 0xf5, 0xf5, 0x72, 0xdb, 0xe0, 0x7f, 0xab, 0x4a, 0xa6, 0x7f, 0xb3, 0xf3, 0x9a, 0xa2, 0x98, 0x1a, 0x3d, 0xc0, 0xca, 0xee, 0x64, 0x75, 0x8e, 0xa8, 0x98, 0xeb, 0xce, 0x10, 0xbf, 0x3a, 0xa4, 0xfc, 0x84, 0x49, 0xe8, 0xe0, 0xcf, 0x7e, 0x88, 0xb1, 0x88, 0x23, 0x8c, 0x20, 0x68, 0xef, 0xac, 0xeb, 0xfe, 0xef, 0x40, 0x73, 0xa6, 0x54, 0xa5, 0x8a, 0x30, 0x99, 0xd0, 0x36, 0xae, 0xee, 0x2d, 0x81, 0x82, 0x98, 0xd4, 0xab, 0x39, 0x23, 0x8e, 0xdc, 0x45, 0x9a, 0x9f, 0xd3, 0x57, 0x7e, 0x9f, 0x5b, 0xfc, 0x03, 0x68, 0xaa, 0x65, 0x7a, 0xee, 0xda, 0x1e, 0xeb, 0x8a, 0xe7, 0xf5, 0xac, 0x1e, 0xaf, 0x3b, 0x1c, 0x95, 0x81, 0x7d, 0xde, 0x2e, 0xc1, 0xa5, 0x9f, 0xcb, 0x5e, 0xf2, 0x7c, 0xc3, 0x4f, 0xb7, 0x53, 0x31, 0xda, 0x7a, 0x49, 0x96, 0x92, 0x5a, 0xc3, 0xad, 0x17, 0xbb, 0xc3, 0xda, 0xfe, 0x6a, 0x9c, 0x64, 0x4e, 0x30, 0x98, 0xef, 0xfe, 0xf8, 0xfe, 0xa5, 0xcc, 0x0d, 0x5f, 0x0c, 0x04, 0x8e, 0x10, 0x88 } -, - /* Signature */ - 128, - { 0x11, 0xe1, 0xa8, 0x28, 0xf0, 0x0a, 0x98, 0x7e, 0x03, 0xd6, 0x2e, 0x2a, 0x53, 0x6c, 0x29, 0x7d, 0xda, 0xc0, 0x22, 0xe0, 0x63, 0xee, 0x0d, 0xe4, 0xe4, 0x69, 0x5d, 0xed, 0x1f, 0xdb, 0x22, 0x09, 0x00, 0xa3, 0xac, 0x3f, 0x87, 0xd1, 0xbe, 0x75, 0xf9, 0x59, 0xc2, 0x8b, 0x57, 0x8a, 0x43, 0xb2, 0x56, 0x64, 0x3c, 0xdf, 0xff, 0x92, 0x15, 0x95, 0xfd, 0xfb, 0xea, 0xf4, 0x10, 0xc2, 0xae, 0xd9, 0xe5, 0xe4, 0x7e, 0x1d, 0x15, 0x1a, 0xe2, 0x8c, 0x76, 0x99, 0xae, 0xe2, 0x25, 0xa6, 0x45, 0xbc, 0x42, 0xb3, 0xbe, 0xb5, 0x2f, 0x08, 0x38, 0x7e, 0xc5, 0x54, 0xd0, 0x20, 0x4d, 0x28, 0x3c, 0x3b, 0xcc, 0xbc, 0xca, 0x21, 0x6e, 0xda, 0xd9, 0x4e, 0xc6, 0x4f, 0x9c, 0x20, 0xb3, 0x40, 0x6a, 0xb7, 0x8a, 0x6c, 0x4a, 0x4d, 0xae, 0x3f, 0xa6, 0x17, 0xa0, 0x0c, 0x6a, 0xb2, 0xf8, 0xe2, 0x47, 0x62 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.6", - /* Message to be signed */ - 16, - { 0x15, 0x74, 0x69, 0x73, 0x44, 0xe9, 0x86, 0x85, 0xcd, 0x6e, 0x65, 0xe4, 0x67, 0x83, 0xf0, 0xb5 } -, - /* Signature */ - 128, - { 0x3b, 0x7d, 0x67, 0xd1, 0x3c, 0xd3, 0xc0, 0xfd, 0x30, 0x5a, 0xd4, 0x04, 0xd8, 0xa3, 0xdc, 0xde, 0x4a, 0x45, 0x17, 0x9c, 0x2d, 0x0b, 0x87, 0x11, 0x5d, 0x6d, 0x06, 0x0c, 0x24, 0x9b, 0x87, 0xf3, 0x9e, 0x46, 0x3b, 0x76, 0x4b, 0x42, 0x07, 0xc4, 0x8a, 0x74, 0xcf, 0xce, 0x25, 0x31, 0xe8, 0x18, 0x3d, 0x3d, 0x01, 0x25, 0x85, 0xce, 0x57, 0x39, 0xd1, 0x62, 0xc4, 0xea, 0x22, 0x32, 0x44, 0x02, 0xea, 0x2e, 0x6e, 0xaf, 0xb8, 0xa5, 0x73, 0xfc, 0xff, 0x40, 0x15, 0xc9, 0x5c, 0x45, 0xe4, 0xca, 0x7a, 0xc5, 0x1a, 0xe3, 0xa0, 0x6f, 0x42, 0x1e, 0x60, 0x6d, 0x68, 0x3f, 0x5e, 0x12, 0x2b, 0x55, 0x79, 0x14, 0x8a, 0x9c, 0x46, 0x6a, 0xde, 0xb0, 0x24, 0x28, 0xf4, 0x89, 0x6a, 0x86, 0xdf, 0x63, 0xbe, 0x58, 0x7d, 0xdd, 0x7a, 0x6a, 0x8d, 0xe7, 0x17, 0x6b, 0xe4, 0xe7, 0xff, 0x4a, 0xaa, 0x99 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.7", - /* Message to be signed */ - 150, - { 0xbe, 0x46, 0xbe, 0x8b, 0xdd, 0x85, 0x43, 0xd3, 0x70, 0xbb, 0xb7, 0xac, 0x83, 0x9f, 0x5e, 0x64, 0x53, 0xf3, 0x0c, 0xd8, 0x75, 0x2a, 0x4b, 0x92, 0x67, 0x32, 0xc5, 0x9e, 0x61, 0x09, 0x04, 0x4b, 0xe3, 0xa0, 0x75, 0x6c, 0x70, 0x25, 0xa2, 0x32, 0x80, 0xdf, 0x2e, 0xd7, 0x66, 0xba, 0x39, 0xab, 0xb2, 0x0b, 0x94, 0x4c, 0x06, 0x5f, 0xe1, 0x48, 0x7d, 0xea, 0x31, 0xb4, 0x70, 0x8a, 0x68, 0x9a, 0x50, 0xb2, 0x8d, 0x54, 0x29, 0x94, 0xcb, 0xbb, 0x3a, 0x5b, 0xb9, 0x46, 0x0e, 0xe7, 0xa9, 0xc1, 0x53, 0x8b, 0xda, 0x75, 0x1a, 0x52, 0x8b, 0x76, 0x70, 0xf9, 0x15, 0x78, 0xd6, 0x67, 0x3e, 0x08, 0xab, 0xcc, 0xdf, 0x5f, 0x4d, 0x8c, 0x1e, 0xbe, 0xcf, 0xca, 0xc7, 0x5c, 0xc4, 0x2d, 0xbb, 0xb8, 0xcd, 0xe3, 0xc1, 0xb4, 0x74, 0xb5, 0x56, 0xb3, 0x2b, 0xb8, 0x48, 0xfc, 0x32, 0x7b, 0xa6, 0xe3, 0xcf, 0x5f, 0x77, 0xb1, 0xeb, 0xc0, 0x4a, 0x19, 0xf3, 0xc8, 0xc3, 0x9b, 0x6b, 0x84, 0x77, 0x84, 0xea, 0xa3, 0x25, 0xa2, 0xb6, 0xf3 } -, - /* Signature */ - 128, - { 0x91, 0xde, 0x2f, 0x90, 0x32, 0x47, 0xb2, 0xd1, 0x3a, 0xbe, 0x93, 0xdd, 0xd9, 0x6d, 0xfa, 0xef, 0x1b, 0x4d, 0x17, 0x2b, 0x09, 0x09, 0x58, 0xf0, 0xcc, 0x34, 0xfa, 0x92, 0x83, 0x5a, 0xd6, 0x0c, 0x44, 0xb4, 0x27, 0xfe, 0x03, 0x1c, 0xad, 0xbf, 0x92, 0xff, 0x1c, 0xd0, 0x38, 0x41, 0x44, 0xc9, 0xb5, 0xf2, 0x8f, 0x64, 0x5c, 0x63, 0xe8, 0xd7, 0x16, 0xbc, 0xec, 0x2e, 0x04, 0x3b, 0xc3, 0x96, 0x56, 0x64, 0x17, 0x85, 0xc2, 0x6b, 0xa3, 0x6b, 0xa2, 0xa1, 0x09, 0xe3, 0x64, 0x4e, 0xbf, 0xd9, 0x62, 0xd7, 0xa3, 0x16, 0x91, 0x6b, 0x3f, 0x13, 0x66, 0x20, 0x13, 0xcc, 0x0f, 0x37, 0xad, 0x8f, 0x9e, 0x0d, 0x9e, 0xc8, 0xb4, 0xc8, 0xad, 0x5c, 0x75, 0x32, 0xcf, 0xa0, 0x44, 0xae, 0xdc, 0x73, 0x78, 0x77, 0x94, 0xc2, 0x98, 0x79, 0x7c, 0x8a, 0x7e, 0x14, 0x49, 0xea, 0xd6, 0x15, 0x0d, 0xed } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.8", - /* Message to be signed */ - 167, - { 0x0b, 0x7e, 0x06, 0x63, 0xe7, 0x15, 0xea, 0x38, 0xbc, 0x93, 0x0e, 0xc9, 0xd8, 0xe2, 0xa0, 0x29, 0xaa, 0x1a, 0x4c, 0x95, 0xe7, 0xb2, 0x00, 0x47, 0xae, 0x15, 0x44, 0xd5, 0xb2, 0xd8, 0x47, 0x6f, 0xc8, 0x05, 0x53, 0x9f, 0xb0, 0xef, 0xab, 0x7d, 0x5f, 0xf1, 0x2c, 0x36, 0xd7, 0x6a, 0x79, 0x7b, 0x75, 0xc0, 0xb5, 0x3f, 0xa9, 0x26, 0x54, 0x73, 0xda, 0xb6, 0x80, 0xc2, 0x55, 0xd5, 0x7e, 0x99, 0xb6, 0xd9, 0xfe, 0x08, 0xcf, 0x1a, 0x57, 0x34, 0x91, 0xe2, 0x19, 0x78, 0xfa, 0xe9, 0x53, 0x9c, 0xc0, 0x58, 0x84, 0x63, 0x3a, 0x1d, 0xd5, 0xcb, 0x21, 0x53, 0x6f, 0xd4, 0x2d, 0xdd, 0x73, 0x1c, 0xa7, 0x6c, 0x34, 0x57, 0x81, 0x3c, 0xe1, 0xbb, 0x59, 0xc2, 0x1d, 0xd3, 0x1b, 0xf2, 0xae, 0x3b, 0xfd, 0x7d, 0x20, 0xc6, 0xc7, 0x12, 0xa9, 0xdd, 0x43, 0x95, 0x1f, 0x1b, 0x19, 0x8d, 0xea, 0xf7, 0x41, 0x08, 0xea, 0xd2, 0x29, 0x26, 0xd2, 0xb0, 0x19, 0x1e, 0x59, 0xd5, 0xf6, 0x79, 0xad, 0x97, 0xc7, 0x1e, 0xdc, 0x69, 0xde, 0x97, 0x98, 0x7e, 0x54, 0x3e, 0x87, 0xa9, 0x6a, 0x9f, 0xee, 0x77, 0xe3, 0xf0, 0xea, 0x95, 0x7b, 0xd4, 0x6a } -, - /* Signature */ - 128, - { 0x48, 0x51, 0x09, 0x8a, 0x85, 0xe7, 0x0d, 0xa3, 0x33, 0x92, 0xa9, 0xe9, 0x0b, 0x34, 0x76, 0xa4, 0x8b, 0xa0, 0xe3, 0x2c, 0xd6, 0xad, 0x3d, 0xc1, 0xdd, 0x91, 0xda, 0x57, 0xe8, 0x8d, 0xfb, 0xc7, 0xb6, 0x57, 0x4b, 0x08, 0xe8, 0x71, 0x60, 0x80, 0xe1, 0x5d, 0xf4, 0x05, 0x79, 0xc5, 0x70, 0x5d, 0x5b, 0xef, 0x58, 0x4b, 0x08, 0xb2, 0x63, 0xdb, 0xc4, 0xf0, 0xd1, 0x59, 0x56, 0xff, 0x11, 0x25, 0xc4, 0x8f, 0x89, 0x59, 0x1e, 0xbc, 0x94, 0x1d, 0x9f, 0xe8, 0xf9, 0xa7, 0x80, 0xc8, 0x2e, 0xa3, 0x2b, 0xf3, 0xef, 0xa1, 0x6c, 0xab, 0xbe, 0xe5, 0x80, 0xfd, 0x6b, 0x95, 0x74, 0x08, 0x0f, 0x69, 0x07, 0xfe, 0xaf, 0xf8, 0x1d, 0x48, 0xc4, 0x9a, 0x6d, 0xe2, 0x24, 0x84, 0x80, 0xf1, 0xd8, 0x52, 0x39, 0xe9, 0xa4, 0x18, 0xdd, 0x53, 0x10, 0xde, 0xf7, 0x76, 0xe0, 0x8f, 0x50, 0x9a, 0x14, 0x78 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.9", - /* Message to be signed */ - 226, - { 0x13, 0x42, 0x33, 0xba, 0xcf, 0xa1, 0x6d, 0xc8, 0x4d, 0x8f, 0xa4, 0xbd, 0xbb, 0x47, 0x93, 0xd1, 0xda, 0xc0, 0x7d, 0x60, 0x54, 0xbd, 0x08, 0x39, 0x61, 0xda, 0x68, 0x67, 0x9c, 0xa3, 0x75, 0x33, 0x4f, 0x09, 0x20, 0xb9, 0xdf, 0xb8, 0xa6, 0x8e, 0xd7, 0x7f, 0x27, 0xfd, 0x92, 0x19, 0x28, 0x13, 0x61, 0xe0, 0x9f, 0xa6, 0x08, 0x4f, 0x96, 0xe6, 0x98, 0x85, 0xb4, 0x7e, 0xa7, 0x75, 0xaf, 0x06, 0x77, 0x2d, 0x66, 0x12, 0xd4, 0xd1, 0x6f, 0x4a, 0x5c, 0xc4, 0xcd, 0x0d, 0x1e, 0xb2, 0x3b, 0x7a, 0x1f, 0x09, 0x56, 0x4b, 0x84, 0x2e, 0xa0, 0x7c, 0xbd, 0xde, 0x60, 0x45, 0x3a, 0x2a, 0xa4, 0xab, 0x69, 0xdd, 0xfe, 0xb5, 0xb1, 0x3e, 0x9f, 0x08, 0xcd, 0x07, 0x2e, 0x5b, 0x71, 0xce, 0xd3, 0x34, 0xea, 0x70, 0x4c, 0x74, 0x9f, 0xf4, 0x72, 0x7e, 0xbe, 0x12, 0xc0, 0x29, 0x0e, 0x00, 0xa8, 0x41, 0xd7, 0x4b, 0x06, 0x55, 0xcf, 0xd8, 0x06, 0x5d, 0x28, 0x20, 0xfd, 0xf8, 0xfd, 0xc1, 0xbd, 0x45, 0x58, 0x81, 0x80, 0x8b, 0xff, 0x0e, 0xc7, 0x27, 0x60, 0x74, 0x75, 0xbf, 0x0b, 0x2b, 0xc8, 0x93, 0x59, 0x58, 0x32, 0x9b, 0x77, 0x8e, 0xfc, 0xe5, 0x60, 0xfc, 0x26, 0xc3, 0xbb, 0x6e, 0x2d, 0xc9, 0xae, 0xf1, 0x8f, 0x96, 0x9f, 0xba, 0x64, 0x74, 0x5e, 0xd4, 0xd8, 0x5b, 0x14, 0x75, 0x7b, 0xb8, 0x33, 0xea, 0xdb, 0x9c, 0x5c, 0xb0, 0xea, 0xed, 0x08, 0xd3, 0x0b, 0x95, 0x15, 0x00, 0x5a, 0x3e, 0x88, 0x09, 0x1f, 0xc5, 0xcd, 0x2f, 0x36, 0xad, 0x95, 0x5b, 0x7c, 0x6f, 0x2b, 0x19, 0xbb, 0xa3, 0x74, 0xfd } -, - /* Signature */ - 128, - { 0x3e, 0x37, 0xb4, 0x2d, 0xbe, 0xc1, 0x29, 0xdb, 0x81, 0xc5, 0xe2, 0xa2, 0x22, 0xf3, 0x1e, 0x81, 0xb9, 0x37, 0xff, 0x02, 0x24, 0x95, 0x18, 0x18, 0x37, 0x30, 0x37, 0x8b, 0x4c, 0x09, 0x2a, 0xa7, 0xf3, 0xb2, 0x34, 0x59, 0x61, 0x1a, 0x82, 0x4f, 0xc5, 0x27, 0x54, 0x42, 0x1a, 0x27, 0xcc, 0xe9, 0x18, 0xb6, 0x2a, 0xa7, 0xb4, 0x46, 0x38, 0xa0, 0xc0, 0x82, 0x79, 0x80, 0x52, 0xa5, 0x88, 0x46, 0x68, 0x82, 0x51, 0x06, 0x90, 0xac, 0x77, 0x30, 0x23, 0x28, 0x02, 0x46, 0xc8, 0x90, 0xff, 0x1f, 0x62, 0x27, 0x04, 0x9e, 0x66, 0x8b, 0xc9, 0xd6, 0xe4, 0x89, 0xb6, 0x94, 0x4a, 0x34, 0xe8, 0xf9, 0x30, 0x02, 0xbb, 0xb0, 0x0d, 0x75, 0x2b, 0x57, 0x7c, 0xe3, 0x52, 0x53, 0x00, 0x82, 0xbe, 0xcd, 0x30, 0x9b, 0x0d, 0xac, 0xcd, 0x1d, 0x68, 0xd0, 0x6e, 0x1d, 0xf7, 0x12, 0x21, 0xc6, 0x22, 0x69 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.10", - /* Message to be signed */ - 111, - { 0x35, 0xda, 0x3d, 0x02, 0x34, 0xbd, 0x74, 0xfc, 0xd7, 0x6e, 0x8e, 0x69, 0x52, 0x8f, 0x65, 0x1b, 0x88, 0x27, 0x1c, 0xbf, 0x16, 0x28, 0x69, 0x38, 0xc2, 0xc4, 0xa3, 0x7d, 0x41, 0x1d, 0xe8, 0xf6, 0x75, 0x78, 0xeb, 0x8b, 0x3d, 0x20, 0xa8, 0xfd, 0x7d, 0xcd, 0xe7, 0xb6, 0x56, 0xfe, 0x96, 0xa6, 0x80, 0x87, 0x32, 0x28, 0xed, 0x0f, 0x9a, 0x62, 0x0f, 0x15, 0x05, 0x44, 0x23, 0x72, 0xf9, 0xb2, 0xb4, 0x16, 0x84, 0x98, 0x72, 0x34, 0x90, 0xf8, 0x11, 0xf3, 0x11, 0x1f, 0x5f, 0x77, 0x38, 0x63, 0x47, 0xb4, 0x82, 0x2e, 0xd9, 0xd6, 0xb5, 0x53, 0x83, 0x92, 0x21, 0x5c, 0xb6, 0xc4, 0x86, 0x5b, 0xb7, 0xb5, 0xb7, 0xe2, 0x84, 0x2e, 0xea, 0x0e, 0x90, 0x01, 0xca, 0x0c, 0xdf, 0x5d, 0x6b } -, - /* Signature */ - 128, - { 0x12, 0xff, 0x2a, 0xb5, 0xfc, 0x83, 0xd6, 0x49, 0x59, 0x7c, 0x47, 0xbf, 0xf3, 0x29, 0xb7, 0xf4, 0x61, 0xdb, 0xbb, 0xda, 0x01, 0xfb, 0x6b, 0xad, 0x26, 0x54, 0x3e, 0x4d, 0xbc, 0xd6, 0x0c, 0x5e, 0x2c, 0xde, 0xbf, 0xb1, 0x12, 0x78, 0x4a, 0x96, 0x4e, 0x27, 0xf2, 0xa2, 0xe7, 0xfd, 0x07, 0xec, 0x39, 0x0a, 0xab, 0x14, 0x94, 0x37, 0x03, 0x58, 0xa7, 0x5b, 0x5e, 0x1f, 0xa4, 0xf1, 0xad, 0x52, 0x02, 0xe6, 0xd5, 0x46, 0xc0, 0xf3, 0x15, 0xe8, 0x6f, 0xaf, 0xf1, 0xd2, 0x5b, 0x94, 0x72, 0x82, 0xda, 0x32, 0xea, 0xb5, 0x6c, 0x22, 0xf0, 0x6c, 0x8a, 0x9d, 0x32, 0xae, 0xf2, 0x81, 0xd6, 0xf0, 0xaa, 0x55, 0xd7, 0xad, 0x3b, 0xcd, 0xfd, 0xb2, 0x09, 0xa1, 0x6e, 0xf4, 0x5c, 0xc6, 0xf9, 0x68, 0x2e, 0xae, 0x96, 0x3c, 0xbb, 0x21, 0x3a, 0xdb, 0x7f, 0xad, 0x1b, 0xef, 0x49, 0xc0, 0x70, 0x4f } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.11", - /* Message to be signed */ - 50, - { 0x75, 0xfd, 0xb0, 0x72, 0x73, 0xf7, 0x54, 0xd1, 0x11, 0x6f, 0x99, 0x7a, 0xf2, 0xd1, 0x1a, 0x51, 0x2b, 0x94, 0xe9, 0xe0, 0x48, 0x01, 0xb3, 0xfc, 0x73, 0x91, 0x30, 0xb7, 0x47, 0xb4, 0xbe, 0x87, 0x44, 0xd7, 0xe7, 0xf8, 0xa2, 0x97, 0xa0, 0x89, 0xd9, 0x05, 0x0c, 0x5f, 0x54, 0xf8, 0xa3, 0x9a, 0xa3, 0xf2 } -, - /* Signature */ - 128, - { 0x07, 0xff, 0xc1, 0xb7, 0xa1, 0x0d, 0xda, 0xba, 0x96, 0x05, 0xf0, 0xa3, 0xd9, 0x3c, 0x8a, 0x5e, 0x4c, 0x0b, 0x77, 0x58, 0x61, 0x39, 0x05, 0x07, 0x31, 0xd9, 0xcc, 0x9b, 0x3c, 0x83, 0xd2, 0xb7, 0x3f, 0xaf, 0x9a, 0x4e, 0x24, 0xd1, 0xc8, 0xbb, 0x0d, 0x62, 0x3d, 0xf1, 0x0f, 0xc8, 0x40, 0x7d, 0x15, 0x14, 0x48, 0xfa, 0x43, 0xee, 0x65, 0x81, 0xe7, 0xb0, 0xac, 0x80, 0xd1, 0x4a, 0xdf, 0xa4, 0xf6, 0xd2, 0x7a, 0x76, 0x67, 0x50, 0xb2, 0x31, 0xcb, 0xc1, 0xc5, 0xcf, 0xd6, 0x2d, 0xf1, 0xb9, 0x72, 0x7d, 0x8b, 0x87, 0x41, 0x46, 0x9f, 0x68, 0xe5, 0x0a, 0x9b, 0x3b, 0xc7, 0xad, 0xe1, 0x37, 0xdb, 0x06, 0x74, 0x76, 0x03, 0x74, 0x28, 0x56, 0xd5, 0xe7, 0xdd, 0xb4, 0xe1, 0x6a, 0x5b, 0x49, 0xd7, 0x36, 0x5d, 0xb2, 0x76, 0x3b, 0xf5, 0xfd, 0xea, 0x08, 0x3d, 0x81, 0xfa, 0xc9, 0x2d, 0x87 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.12", - /* Message to be signed */ - 245, - { 0x96, 0xc9, 0xfa, 0xce, 0xfb, 0xa2, 0xed, 0x33, 0xed, 0x8b, 0x7b, 0x3d, 0x8b, 0x6d, 0xf2, 0x8f, 0x2f, 0xab, 0x0d, 0xcd, 0xd7, 0xa3, 0xcd, 0x7a, 0x7d, 0xed, 0xa2, 0x54, 0x5e, 0xd4, 0x47, 0x0e, 0xd2, 0x5b, 0x46, 0xd2, 0x16, 0x6e, 0xeb, 0xb7, 0xe1, 0x47, 0x10, 0x17, 0x83, 0xb6, 0x45, 0xba, 0xc6, 0x26, 0x64, 0xb8, 0x72, 0x70, 0x09, 0xf3, 0x5d, 0x1e, 0xa5, 0xfd, 0xa5, 0xe7, 0xc2, 0x8d, 0x6a, 0xf6, 0xfe, 0x92, 0x04, 0x6c, 0xa7, 0x24, 0xca, 0xb8, 0x42, 0x5a, 0x52, 0xa0, 0x85, 0xf9, 0xac, 0x90, 0x83, 0xd4, 0xd6, 0x90, 0xbb, 0xdd, 0xdf, 0xd0, 0xa8, 0x2d, 0x94, 0x8f, 0x70, 0xd6, 0x85, 0xe2, 0x6b, 0xb9, 0xf5, 0x27, 0x40, 0x8a, 0xbc, 0x84, 0x7b, 0xff, 0x12, 0x02, 0xde, 0xdf, 0x6d, 0x2f, 0xac, 0x6c, 0xf3, 0x68, 0x2a, 0x51, 0x6b, 0xa7, 0x2f, 0x4f, 0xe9, 0x7b, 0x90, 0x46, 0x6a, 0xf6, 0xe5, 0x43, 0x12, 0x31, 0x65, 0xb8, 0xa6, 0x83, 0xca, 0xba, 0x2f, 0xa2, 0x3a, 0x86, 0xac, 0x06, 0x21, 0x30, 0x65, 0xe1, 0xed, 0x9b, 0x4f, 0x49, 0xaf, 0x4f, 0xff, 0x6d, 0x46, 0xb3, 0x6d, 0x13, 0x3d, 0x8d, 0xa2, 0xdd, 0x29, 0xd5, 0x5f, 0x9f, 0x32, 0x2c, 0x40, 0x78, 0x5d, 0xdc, 0x21, 0xc4, 0x26, 0xc5, 0xe0, 0xa6, 0x7d, 0x41, 0x4f, 0x5a, 0xb9, 0x71, 0xc4, 0x46, 0x0f, 0xf9, 0xb1, 0x14, 0x30, 0x5a, 0x8a, 0xe7, 0xe7, 0xb9, 0x5c, 0x73, 0x03, 0x4e, 0x8e, 0x93, 0xc0, 0x35, 0x29, 0xdd, 0x50, 0xc9, 0x4f, 0x07, 0x62, 0x79, 0x77, 0x5a, 0x5a, 0x3a, 0x80, 0xc5, 0xd2, 0x48, 0x6a, 0x2d, 0x51, 0x08, 0x48, 0xbd, 0xc9, 0xb8, 0x52, 0xac, 0x1d, 0x32, 0xce, 0xb7, 0xc0, 0x41, 0xa0, 0x8f, 0x2f, 0x8e, 0x62 } -, - /* Signature */ - 128, - { 0x46, 0xd0, 0x3f, 0xae, 0xc4, 0xa7, 0x23, 0x18, 0x62, 0x1e, 0xf4, 0xd0, 0xc1, 0xbc, 0xa7, 0x1a, 0x2a, 0xee, 0xa7, 0xa8, 0x1d, 0xf8, 0xfe, 0xbb, 0x8b, 0xa3, 0xfb, 0x35, 0x40, 0xd7, 0x2d, 0x15, 0x34, 0xb9, 0x82, 0x69, 0x16, 0xe8, 0x9f, 0x27, 0xd3, 0x25, 0x67, 0x6c, 0xcf, 0x5a, 0x0a, 0xa1, 0x61, 0x12, 0xdb, 0x2d, 0x93, 0x03, 0xe0, 0xeb, 0xce, 0x4b, 0x85, 0x58, 0x7c, 0x55, 0xac, 0xa0, 0x68, 0x50, 0xde, 0x84, 0xde, 0xc2, 0x13, 0xd1, 0x13, 0x74, 0x04, 0xa5, 0xde, 0xe6, 0xca, 0x88, 0xd9, 0x1a, 0xe2, 0x8b, 0x7b, 0x53, 0x6c, 0x90, 0x20, 0x2b, 0xc7, 0x72, 0x6d, 0xa5, 0x04, 0x2a, 0x85, 0x08, 0xd3, 0xb1, 0x3c, 0xfb, 0xaa, 0xdc, 0xee, 0x12, 0x78, 0xd3, 0x5d, 0x30, 0x3a, 0xcf, 0xee, 0x6e, 0x07, 0x41, 0x90, 0x49, 0x11, 0xa5, 0xf1, 0x88, 0x10, 0xad, 0xd3, 0xe7, 0xb8, 0xf6 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.13", - /* Message to be signed */ - 58, - { 0xc4, 0xb4, 0xc9, 0x96, 0x6e, 0x56, 0xf4, 0x0a, 0xff, 0x47, 0x08, 0x13, 0x1c, 0xd3, 0x71, 0x44, 0x21, 0x34, 0x3e, 0xde, 0x70, 0xc4, 0xd4, 0x6d, 0xb6, 0xef, 0xbe, 0x1b, 0x19, 0xa9, 0xe3, 0xc2, 0xe5, 0x81, 0x06, 0x00, 0x8a, 0x98, 0x38, 0x59, 0xcf, 0x94, 0x2a, 0x31, 0x97, 0x74, 0x69, 0x5a, 0x0c, 0x98, 0xa9, 0x63, 0xe2, 0xfe, 0x9d, 0x93, 0x79, 0xbc } -, - /* Signature */ - 128, - { 0xb1, 0x6b, 0x10, 0xf2, 0xbd, 0x7e, 0xa0, 0xf7, 0x6a, 0x9e, 0xd2, 0xff, 0xcf, 0x3e, 0xc1, 0x0e, 0xdc, 0xb8, 0x24, 0x60, 0xfe, 0x55, 0x82, 0xa7, 0x76, 0x4c, 0x0c, 0x50, 0x56, 0xec, 0xfb, 0x09, 0x72, 0x06, 0x48, 0xd5, 0xf1, 0x9b, 0x3d, 0xea, 0xf2, 0xac, 0xc9, 0x86, 0x46, 0x0e, 0x71, 0x14, 0x26, 0x15, 0x83, 0xa5, 0xf4, 0xa9, 0x90, 0xe9, 0x22, 0xfe, 0xb5, 0xb4, 0x78, 0x97, 0x34, 0xfd, 0xcc, 0xe1, 0x5d, 0xdc, 0x87, 0xca, 0xc3, 0xf6, 0xc7, 0xc9, 0xe9, 0xe2, 0x19, 0x23, 0x15, 0xf0, 0x84, 0x1f, 0x43, 0xea, 0x86, 0xde, 0xa9, 0xa9, 0x38, 0x05, 0x08, 0xb0, 0x6c, 0x9c, 0xa5, 0xe9, 0xd4, 0xa6, 0x51, 0xd0, 0x12, 0x16, 0x62, 0x7c, 0x46, 0x6b, 0xf0, 0xd6, 0xae, 0x74, 0x4b, 0xf3, 0x0f, 0xd7, 0x91, 0xa8, 0x21, 0x03, 0x39, 0xf5, 0x05, 0x7f, 0xf8, 0x5c, 0xeb, 0x84, 0xf1, 0x96 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.14", - /* Message to be signed */ - 165, - { 0xb8, 0x38, 0xa5, 0xd8, 0x88, 0x95, 0x0f, 0x1b, 0x8e, 0x4d, 0x94, 0x7b, 0xba, 0x51, 0xaf, 0xf9, 0xbb, 0x60, 0xb8, 0x3d, 0x09, 0xed, 0x9d, 0x97, 0x96, 0x7a, 0x76, 0x95, 0x5e, 0xd1, 0xdd, 0xf0, 0x48, 0x15, 0x20, 0xbc, 0xf4, 0xf0, 0x8b, 0xeb, 0xbf, 0x89, 0x9c, 0xc7, 0xc3, 0xef, 0x0c, 0x04, 0xd5, 0x00, 0x1b, 0x1e, 0x2e, 0x84, 0x5f, 0xaf, 0xc5, 0x83, 0x30, 0x0c, 0x98, 0xac, 0xa7, 0xa0, 0x3e, 0x90, 0xa4, 0x34, 0xde, 0x77, 0xfe, 0xf7, 0x20, 0xda, 0x36, 0x63, 0xf2, 0x19, 0x98, 0x20, 0x8a, 0x94, 0xf8, 0x94, 0x76, 0x7d, 0x3e, 0xd8, 0x13, 0x96, 0xb7, 0xef, 0xb2, 0x86, 0xe0, 0xff, 0x7d, 0xb6, 0xea, 0x8f, 0xdb, 0x4e, 0x72, 0x83, 0x46, 0x00, 0xfe, 0x5f, 0x7f, 0x15, 0x0a, 0x01, 0xb1, 0xd4, 0xa0, 0x8b, 0x5e, 0xc9, 0xee, 0x1f, 0xbc, 0x10, 0x01, 0xd1, 0x2d, 0x52, 0x36, 0xdb, 0xf0, 0x72, 0x7e, 0x7e, 0xa3, 0x60, 0x78, 0xf3, 0xeb, 0xac, 0x50, 0x46, 0xb7, 0x65, 0xb4, 0xe2, 0x3c, 0xdc, 0xef, 0xd1, 0x15, 0xd6, 0x2a, 0x50, 0x34, 0x4d, 0xbb, 0xd7, 0x42, 0x8d, 0x48, 0xff, 0xc9, 0x4b, 0x11, 0xe2, 0x1c } -, - /* Signature */ - 128, - { 0xb1, 0x56, 0x81, 0xee, 0xf2, 0x96, 0xa6, 0x6b, 0x9f, 0xcd, 0x66, 0x30, 0xf8, 0x9c, 0x55, 0x82, 0x6a, 0x38, 0x9e, 0x0c, 0x2d, 0x3d, 0x47, 0x6a, 0x0f, 0x8a, 0x1e, 0x08, 0xcb, 0xca, 0xcc, 0x66, 0x02, 0xc7, 0x14, 0x43, 0x8f, 0x32, 0xf3, 0x4e, 0x02, 0xc3, 0x6e, 0x5c, 0x0f, 0x16, 0x8a, 0xb0, 0x28, 0x91, 0x7e, 0x90, 0x50, 0xfb, 0xc8, 0x50, 0xf0, 0xcf, 0x65, 0xd5, 0xee, 0xdb, 0x3b, 0x54, 0xbe, 0x54, 0x95, 0xbb, 0xf0, 0xfa, 0xee, 0xb3, 0x2b, 0xbe, 0x5a, 0x8f, 0x87, 0xbb, 0xac, 0xdd, 0x25, 0x85, 0xfb, 0x90, 0x7b, 0x13, 0x18, 0x5b, 0x02, 0x61, 0x56, 0x63, 0xd2, 0x01, 0x1e, 0xf2, 0x3d, 0x0a, 0xb0, 0x4d, 0xad, 0x1f, 0xfa, 0x67, 0x9b, 0x53, 0x15, 0x2c, 0x9c, 0x42, 0xb8, 0x46, 0x39, 0x68, 0x4e, 0xae, 0xaf, 0x64, 0x4e, 0x4f, 0xc6, 0xff, 0x2e, 0xc7, 0xd4, 0x7b, 0xa5, 0xac } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.15", - /* Message to be signed */ - 77, - { 0x9f, 0xd5, 0x39, 0xc8, 0xad, 0x86, 0x49, 0x24, 0xee, 0xc1, 0xd6, 0x55, 0xc0, 0x7d, 0x1f, 0x28, 0x27, 0x0c, 0xdb, 0x32, 0x6b, 0x57, 0x2c, 0x46, 0x67, 0xec, 0xa6, 0x48, 0x8c, 0x03, 0x36, 0x57, 0xff, 0x29, 0x25, 0x4b, 0x91, 0xf3, 0x21, 0x6e, 0x1c, 0xac, 0x97, 0x97, 0x53, 0xf2, 0x23, 0xb1, 0x79, 0xea, 0x5f, 0x9e, 0xfc, 0x23, 0x6d, 0x40, 0x1d, 0x1b, 0x9a, 0x3c, 0x20, 0xeb, 0x2a, 0xfc, 0x9b, 0xfc, 0xfd, 0x07, 0x92, 0xac, 0xc5, 0xb0, 0x0c, 0x98, 0x28, 0xa6, 0x45 } -, - /* Signature */ - 128, - { 0x38, 0xbf, 0xdf, 0xd3, 0x27, 0x2e, 0x48, 0xcf, 0xee, 0x68, 0xce, 0xb9, 0x13, 0x04, 0xeb, 0x91, 0xee, 0x25, 0xe4, 0x83, 0x40, 0x1f, 0x30, 0xfe, 0x12, 0xd5, 0xe4, 0x35, 0x18, 0xe4, 0xb7, 0x71, 0x14, 0xa1, 0x2c, 0x8c, 0x79, 0x92, 0xae, 0xe7, 0xd2, 0xe7, 0x74, 0xff, 0xf9, 0x1d, 0x8f, 0xd1, 0xcb, 0x7c, 0x6a, 0x2a, 0xdf, 0x79, 0xb7, 0xc8, 0xab, 0x93, 0xe8, 0x37, 0x4d, 0xb7, 0x4c, 0x26, 0x90, 0x9c, 0x65, 0x9a, 0x97, 0xc7, 0x6a, 0x22, 0x2d, 0xf4, 0xfc, 0x8c, 0x7e, 0xf5, 0x19, 0x90, 0x80, 0xea, 0xae, 0x2d, 0x03, 0x1c, 0xa7, 0x51, 0xc5, 0x01, 0x32, 0x89, 0xdb, 0x4e, 0xad, 0x77, 0xb2, 0x8b, 0x76, 0xa4, 0xc4, 0x96, 0xad, 0x0e, 0xb4, 0x22, 0xfc, 0xa8, 0x8f, 0xc6, 0x84, 0xe4, 0x2a, 0xea, 0x88, 0xfd, 0x33, 0xc2, 0x56, 0x75, 0x1b, 0xa0, 0x66, 0x83, 0x4e, 0x77, 0xa1, 0xe2 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.16", - /* Message to be signed */ - 23, - { 0x1d, 0xe8, 0x07, 0x40, 0x9d, 0x0a, 0x61, 0xb0, 0x32, 0x2d, 0xfe, 0xd4, 0x99, 0xe8, 0xc3, 0x32, 0x41, 0xec, 0x89, 0xcd, 0x7d, 0x9f, 0xc5 } -, - /* Signature */ - 128, - { 0x8b, 0x66, 0x64, 0xf8, 0x69, 0xd7, 0x55, 0xc5, 0xd3, 0xe6, 0xdf, 0x99, 0x22, 0xe2, 0x27, 0xc1, 0x10, 0x91, 0x8a, 0x6f, 0xbd, 0x88, 0xc1, 0xa2, 0xe1, 0x28, 0x95, 0x23, 0xad, 0xbb, 0xd8, 0xaa, 0x43, 0x1d, 0x07, 0x86, 0x85, 0x3a, 0xb5, 0x96, 0xdd, 0x5b, 0x00, 0x12, 0x43, 0xb5, 0x4a, 0x2c, 0xb1, 0x0c, 0x31, 0x66, 0xbf, 0x00, 0x23, 0x38, 0xfc, 0xa2, 0x03, 0x45, 0xae, 0xde, 0x1b, 0x22, 0xea, 0x1f, 0xa3, 0xd2, 0x41, 0xc8, 0x6c, 0x76, 0xbf, 0xc0, 0x2f, 0x4f, 0xce, 0xae, 0x12, 0xc8, 0xa9, 0xd7, 0xe4, 0x4a, 0xd6, 0x17, 0x16, 0x65, 0xe8, 0x8f, 0x12, 0x85, 0x22, 0xdd, 0x53, 0x5a, 0x9d, 0x65, 0x00, 0x8f, 0x6a, 0x73, 0x2d, 0x40, 0xaf, 0x20, 0x4e, 0x22, 0x0f, 0x1f, 0xac, 0xd9, 0x42, 0xe0, 0x9d, 0x15, 0x09, 0x9f, 0xdc, 0x51, 0xb3, 0xa1, 0x42, 0x6c, 0xb2, 0xdd, 0x32, 0x93 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.17", - /* Message to be signed */ - 22, - { 0x4b, 0x2b, 0xcb, 0x26, 0x79, 0xa1, 0x4c, 0x3c, 0x4c, 0x06, 0x9e, 0xd0, 0x89, 0xa6, 0x5a, 0xba, 0x29, 0xf2, 0x2b, 0x61, 0x78, 0xc0 } -, - /* Signature */ - 128, - { 0x1c, 0x47, 0x82, 0x8e, 0xa5, 0x3f, 0xb6, 0x43, 0x6e, 0x95, 0x96, 0xb0, 0xce, 0x47, 0xd9, 0xf3, 0x8b, 0x5d, 0xeb, 0x0b, 0x19, 0x7c, 0x1b, 0xc4, 0x74, 0xe2, 0xe8, 0x22, 0x65, 0x70, 0xcc, 0x1b, 0x72, 0xf2, 0x39, 0x31, 0x2a, 0xe7, 0xc3, 0xc6, 0x38, 0x2e, 0x1d, 0x8c, 0xda, 0x7d, 0x4f, 0x12, 0xfe, 0xba, 0xd7, 0x0a, 0xfa, 0xe5, 0xac, 0xbf, 0x24, 0x28, 0xab, 0xc0, 0x44, 0x21, 0xbb, 0x4e, 0x1e, 0x59, 0x90, 0x11, 0x1b, 0x9a, 0xc8, 0x3c, 0x62, 0x43, 0x5c, 0x21, 0xaa, 0x25, 0xfd, 0x9b, 0x49, 0x07, 0x58, 0x54, 0x11, 0xd2, 0x53, 0xba, 0x9b, 0x87, 0x78, 0xf6, 0x24, 0x05, 0x3d, 0x46, 0xfe, 0x95, 0xd7, 0xe2, 0x2c, 0xa3, 0x93, 0x81, 0xc7, 0x79, 0x2e, 0xff, 0x46, 0x43, 0x8f, 0xbc, 0x16, 0x5e, 0xd7, 0x62, 0x9c, 0x2f, 0xc1, 0xce, 0xf1, 0xb3, 0x4d, 0x77, 0x76, 0x8a, 0x20, 0x55 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.18", - /* Message to be signed */ - 238, - { 0xef, 0x46, 0xae, 0x51, 0xe0, 0x15, 0x8c, 0xd0, 0xef, 0x9c, 0x78, 0xd7, 0x1e, 0x00, 0x15, 0x67, 0xd6, 0x6a, 0xe3, 0xc5, 0xe9, 0xa6, 0x4f, 0x24, 0x57, 0x15, 0xc7, 0xc2, 0xad, 0x8e, 0xea, 0x0f, 0x9d, 0x32, 0x00, 0x23, 0x07, 0x2f, 0xdb, 0x0f, 0xb8, 0x6a, 0x45, 0x21, 0x7f, 0xd7, 0x12, 0xcc, 0x80, 0xe5, 0xb9, 0x41, 0x47, 0xc4, 0x5f, 0xe0, 0x0b, 0x69, 0x2c, 0xcd, 0xa1, 0x10, 0x25, 0x98, 0x41, 0xb2, 0xc7, 0xe5, 0xc3, 0xdc, 0xff, 0x59, 0x56, 0xf2, 0xa5, 0x96, 0xcd, 0xa6, 0x8e, 0xb7, 0x7f, 0x4c, 0x85, 0x90, 0xd7, 0x36, 0xb8, 0xfd, 0x60, 0x66, 0x77, 0x3e, 0xf6, 0xf9, 0x5a, 0x38, 0xcd, 0x38, 0x4e, 0x94, 0x83, 0xa8, 0x9d, 0xc2, 0xb6, 0xc2, 0xe8, 0x74, 0x5c, 0x95, 0xc1, 0x2f, 0xa6, 0x72, 0xa1, 0xbe, 0xcf, 0xb6, 0x3e, 0xac, 0x9b, 0x55, 0x3e, 0xda, 0x8d, 0x29, 0x37, 0x54, 0xec, 0x39, 0x47, 0xea, 0xc0, 0x22, 0x8d, 0xe2, 0x63, 0x14, 0xb5, 0x9b, 0x66, 0x99, 0x4c, 0xc6, 0x0e, 0x83, 0x60, 0xe7, 0x5d, 0x38, 0x76, 0x29, 0x8f, 0x8f, 0x8a, 0x7d, 0x14, 0x1d, 0xa0, 0x64, 0xe5, 0xca, 0x02, 0x6a, 0x97, 0x3e, 0x28, 0xf2, 0x54, 0x73, 0x8c, 0xee, 0x66, 0x9c, 0x72, 0x1b, 0x03, 0x4c, 0xb5, 0xf8, 0xe2, 0x44, 0xda, 0xdd, 0x7c, 0xd1, 0xe1, 0x59, 0xd4, 0x51, 0xd4, 0xbf, 0x65, 0x80, 0xf3, 0xe6, 0x9c, 0xdc, 0x02, 0x71, 0x38, 0x2e, 0x8d, 0xc1, 0x4b, 0xc7, 0x33, 0xaf, 0x38, 0x99, 0x2c, 0x1c, 0xd8, 0x82, 0xc7, 0xb1, 0x50, 0xd2, 0x3a, 0x06, 0x7b, 0x9b, 0xcf, 0x3c, 0xcd, 0xab, 0x6b, 0x0f, 0xba, 0x13, 0x2b, 0x4c, 0x14, 0x47, 0xc8, 0x7c, 0x39, 0x3f } -, - /* Signature */ - 128, - { 0x8c, 0x1d, 0xe1, 0x5a, 0xb8, 0x6c, 0xbf, 0x5b, 0xd9, 0x31, 0x7c, 0xe2, 0xb8, 0xfc, 0x82, 0xf5, 0x72, 0x2d, 0xb6, 0x96, 0x1c, 0x9f, 0x55, 0x51, 0x40, 0xf7, 0x8e, 0xbd, 0xa2, 0x4e, 0x3f, 0x51, 0xfd, 0x73, 0x01, 0xc1, 0xe4, 0xfe, 0x12, 0xb6, 0x95, 0x7c, 0x30, 0x14, 0x4f, 0xa1, 0xe1, 0x27, 0x27, 0x46, 0x03, 0xdc, 0x02, 0x05, 0x11, 0x30, 0xb2, 0x53, 0x85, 0xfc, 0x86, 0x46, 0xee, 0x96, 0xa7, 0x45, 0x50, 0xd2, 0xd6, 0x3f, 0x85, 0x81, 0x85, 0xbb, 0x98, 0x46, 0x52, 0xa3, 0x43, 0x1d, 0x53, 0x3d, 0xa6, 0x01, 0x46, 0x22, 0xa6, 0x4e, 0x06, 0x91, 0x66, 0x2a, 0x4f, 0x7c, 0x9d, 0x58, 0x31, 0x9b, 0xa3, 0xf8, 0x5f, 0x19, 0x18, 0x24, 0x75, 0xe1, 0x50, 0x9b, 0xbf, 0x21, 0x3a, 0xf0, 0x10, 0x10, 0xb4, 0xb9, 0xf8, 0x2e, 0x64, 0x75, 0x11, 0xfc, 0x97, 0xc6, 0xb7, 0xc9, 0x7e, 0x8d } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.19", - /* Message to be signed */ - 192, - { 0xf8, 0x7b, 0xb1, 0x2d, 0xaa, 0xad, 0x62, 0xc8, 0x64, 0xac, 0x3d, 0x44, 0x4d, 0x51, 0x4e, 0xec, 0x6e, 0x59, 0xb6, 0x7c, 0xd0, 0x82, 0x0d, 0xfc, 0xbd, 0xf8, 0x51, 0xea, 0x73, 0x89, 0x1f, 0x58, 0xa8, 0xbe, 0x6e, 0x84, 0x3e, 0xe8, 0x77, 0x3e, 0x4d, 0xc1, 0xc7, 0xd7, 0x42, 0xda, 0x82, 0xff, 0x16, 0xc1, 0x01, 0x1b, 0x99, 0x56, 0x6b, 0x9f, 0x3f, 0xd1, 0x7d, 0x68, 0xd5, 0xac, 0x99, 0xce, 0xf5, 0xa3, 0xa0, 0xf7, 0x53, 0x18, 0x76, 0x9d, 0xc0, 0x13, 0xbb, 0x05, 0x5b, 0xe1, 0x30, 0x56, 0xdf, 0x49, 0xa8, 0x39, 0xb8, 0x39, 0x52, 0x51, 0x39, 0x9b, 0x27, 0xa0, 0xbb, 0x31, 0xc5, 0x54, 0xae, 0xdf, 0x3d, 0x9c, 0x74, 0x82, 0xb6, 0x62, 0x0c, 0x5d, 0x7c, 0x69, 0x14, 0xa5, 0x64, 0xdb, 0x04, 0xa0, 0x00, 0x04, 0x56, 0x99, 0xee, 0x1e, 0x50, 0x88, 0xa5, 0xb6, 0x8d, 0x81, 0x4e, 0xfe, 0x9d, 0x13, 0x0d, 0xc3, 0x4e, 0x2b, 0xd9, 0x78, 0x51, 0x13, 0x9c, 0x73, 0x46, 0x07, 0x65, 0xb1, 0xf2, 0x65, 0x46, 0x86, 0xfe, 0xde, 0x9c, 0x9b, 0x3e, 0x92, 0x40, 0x9d, 0xb2, 0xd4, 0x2a, 0x32, 0xba, 0x9e, 0x20, 0xbc, 0xae, 0xb2, 0xc4, 0xf9, 0xff, 0x9b, 0x0e, 0x83, 0x4b, 0x74, 0x92, 0xa2, 0xb1, 0xd8, 0xc6, 0x5c, 0x8b, 0xa4, 0x98, 0x34, 0x2a, 0xe7, 0xd1, 0xd9, 0xfe, 0x74, 0x05, 0xc2 } -, - /* Signature */ - 128, - { 0x20, 0x7a, 0x34, 0x8c, 0xdf, 0x68, 0x4a, 0xa8, 0xe1, 0xa4, 0xaf, 0x7b, 0x7c, 0x25, 0x27, 0x07, 0xce, 0x6f, 0x1f, 0x9d, 0xb2, 0x29, 0x1f, 0x2a, 0x95, 0xa0, 0x71, 0x5d, 0x9c, 0x7f, 0xc5, 0x1a, 0xa2, 0x30, 0x11, 0x0b, 0x5b, 0x51, 0x8a, 0x9c, 0x8f, 0x95, 0x8d, 0xd2, 0x0c, 0x75, 0x24, 0xd5, 0xb6, 0x51, 0x06, 0xd7, 0x42, 0x1b, 0xa9, 0xfc, 0xfb, 0x78, 0x91, 0x78, 0x41, 0x2c, 0x36, 0x40, 0xf5, 0x40, 0xb8, 0x1b, 0xb3, 0x18, 0x97, 0xd2, 0x64, 0x5e, 0xc7, 0x9d, 0x8e, 0x59, 0x75, 0x04, 0x8e, 0x45, 0x22, 0x61, 0xa1, 0xc2, 0x00, 0x9c, 0xfe, 0xee, 0x07, 0x15, 0xa0, 0x1b, 0xee, 0xfd, 0x75, 0xe7, 0x04, 0xb2, 0xa6, 0xf0, 0xf0, 0xae, 0x7e, 0xa3, 0x6c, 0x53, 0xcf, 0xe3, 0x6f, 0x57, 0xf0, 0x34, 0xe3, 0x85, 0x44, 0x8f, 0xca, 0xab, 0x08, 0xdc, 0xff, 0x47, 0x7d, 0x36, 0xff, 0x15 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 5.20", - /* Message to be signed */ - 2, - { 0x4c, 0x4b } -, - /* Signature */ - 128, - { 0x1c, 0xb6, 0x88, 0x12, 0x83, 0xdc, 0xd1, 0x86, 0x3b, 0xa7, 0x9d, 0xfb, 0x22, 0x35, 0x1b, 0xc9, 0xa8, 0xe0, 0x35, 0x8b, 0x2f, 0x8a, 0x1d, 0xe3, 0xf9, 0x06, 0x5d, 0x8c, 0xa8, 0x59, 0x31, 0x4a, 0xe1, 0x12, 0x13, 0xa2, 0xcc, 0x87, 0xb2, 0xf6, 0x32, 0xef, 0xa6, 0x7d, 0x21, 0x03, 0xf3, 0x82, 0x00, 0xb9, 0x19, 0x3e, 0xb8, 0xd4, 0x99, 0x82, 0x09, 0x9a, 0xfc, 0x74, 0x42, 0x8f, 0x4b, 0x41, 0x31, 0x6f, 0x48, 0x78, 0xb3, 0xf6, 0x00, 0xbc, 0x2f, 0xb3, 0x04, 0x58, 0xcc, 0x9c, 0x2a, 0x03, 0x4a, 0x06, 0x8e, 0x98, 0xd5, 0x7a, 0xe7, 0x9c, 0xe3, 0xe2, 0xfc, 0x84, 0xb6, 0xa7, 0x45, 0xf0, 0x37, 0xa5, 0xde, 0xa2, 0xb9, 0xda, 0x4e, 0x8d, 0xb4, 0xad, 0xa6, 0x9f, 0xb8, 0x2d, 0x20, 0xa4, 0x1b, 0xb8, 0x43, 0x07, 0x93, 0xee, 0xf9, 0x2a, 0x4f, 0xd6, 0x18, 0x6d, 0x17, 0x96, 0x63, 0xcb } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 6: A 1024-bit RSA key pair", -{ - /* Modulus */ - 128, - { 0xd6, 0x31, 0x14, 0x57, 0xe1, 0xca, 0xf1, 0x22, 0x44, 0x36, 0x69, 0x79, 0x83, 0xc8, 0x6d, 0xd3, 0x38, 0x20, 0x58, 0x62, 0xd2, 0xa1, 0x05, 0xba, 0xf7, 0x10, 0x34, 0x28, 0xfd, 0x83, 0x53, 0xa1, 0x9b, 0x7b, 0xa4, 0x22, 0x8f, 0x78, 0xb4, 0x7f, 0x79, 0x07, 0x35, 0x70, 0x34, 0xc5, 0x2d, 0x85, 0x97, 0xda, 0x2b, 0x5d, 0x13, 0xdc, 0x53, 0x5b, 0x83, 0x6c, 0x74, 0x13, 0x0a, 0x36, 0x48, 0x91, 0x8d, 0x4a, 0x7a, 0x83, 0x99, 0x0c, 0x2e, 0x28, 0x81, 0x6a, 0xec, 0x0f, 0xca, 0x01, 0xd1, 0x05, 0xc6, 0xc6, 0x52, 0xec, 0x57, 0x33, 0xd0, 0x1f, 0x00, 0x58, 0xb2, 0xdf, 0x5a, 0xe6, 0x73, 0x33, 0x40, 0x5a, 0x3a, 0x5b, 0x12, 0x20, 0xa2, 0x6a, 0xc3, 0xd1, 0x42, 0xf2, 0xb4, 0xd8, 0x37, 0xeb, 0x73, 0x86, 0xa4, 0x0a, 0x74, 0xcc, 0x3d, 0x1e, 0x4f, 0xbc, 0x64, 0xfd, 0x7d, 0xa6, 0x3c, 0x41 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 127, - { 0x5e, 0xa6, 0x11, 0x77, 0x44, 0x2f, 0x89, 0x9e, 0xba, 0xc5, 0xd0, 0x96, 0x01, 0xc5, 0xef, 0xc2, 0x06, 0x6b, 0x44, 0xa3, 0x66, 0xb0, 0x00, 0xf8, 0x3d, 0x74, 0xcb, 0x97, 0xd1, 0x6e, 0xd6, 0xe5, 0xf2, 0xef, 0x0f, 0xf8, 0xb5, 0xad, 0x81, 0x15, 0x53, 0x45, 0xfc, 0x37, 0x39, 0x1a, 0x68, 0xa3, 0x40, 0x17, 0x08, 0x52, 0x79, 0x14, 0x43, 0x41, 0x8d, 0x31, 0xbf, 0x99, 0x2a, 0x4a, 0x12, 0x86, 0x6f, 0xe9, 0xff, 0xcc, 0xde, 0xbb, 0xbb, 0xa6, 0x37, 0xee, 0x88, 0x7b, 0x71, 0x6c, 0xaa, 0x92, 0xe2, 0x49, 0xce, 0xd6, 0x57, 0xee, 0xd7, 0x1f, 0x5c, 0xcd, 0xd9, 0x16, 0x3f, 0x32, 0x69, 0x52, 0x5d, 0x78, 0x9f, 0x4b, 0x33, 0xc4, 0x8a, 0x95, 0x76, 0x44, 0x36, 0xec, 0x32, 0x5e, 0x86, 0x89, 0x69, 0x1c, 0x27, 0x2d, 0x90, 0xbd, 0x88, 0x88, 0x98, 0x51, 0x37, 0x2f, 0xb8, 0xdc, 0xb9 } -, - /* Prime 1 */ - 64, - { 0xf3, 0xd4, 0xb8, 0x51, 0xad, 0x7a, 0xc7, 0x78, 0xbe, 0xcd, 0xdd, 0xae, 0x71, 0xb6, 0x13, 0xf6, 0x59, 0x7c, 0x70, 0x75, 0xc4, 0xd2, 0x8d, 0xdb, 0xae, 0x1e, 0xfa, 0xcf, 0x03, 0x59, 0x71, 0xab, 0x63, 0xee, 0x90, 0xdb, 0xbd, 0xfb, 0xda, 0x43, 0x25, 0xa1, 0x5f, 0xbf, 0x84, 0x5e, 0xea, 0x54, 0xbb, 0xcd, 0x05, 0x57, 0x4b, 0x1c, 0xd6, 0x01, 0xdc, 0xad, 0xba, 0x12, 0x06, 0x28, 0x05, 0xb9 } -, - /* Prime 2 */ - 64, - { 0xe0, 0xe1, 0xad, 0x57, 0xd6, 0x8f, 0x30, 0x13, 0x28, 0x8c, 0x14, 0x83, 0xe8, 0xc5, 0xb1, 0x2e, 0xfe, 0xb6, 0xec, 0x14, 0x5a, 0xe4, 0x18, 0x8e, 0x1b, 0x3b, 0x39, 0x04, 0x87, 0x90, 0x0a, 0xd2, 0xc3, 0x25, 0xd2, 0x32, 0x80, 0x6a, 0x62, 0x17, 0x34, 0x2a, 0x65, 0x75, 0x95, 0x14, 0xf2, 0x26, 0x8f, 0xca, 0x72, 0xc4, 0xc5, 0xbb, 0xa0, 0x32, 0x81, 0x89, 0xdc, 0xfa, 0xe2, 0x06, 0xae, 0xc9 } -, - /* Prime exponent 1 */ - 64, - { 0x3b, 0xb6, 0xd2, 0xd5, 0x1d, 0xf9, 0x3d, 0xb4, 0xb2, 0x75, 0xd4, 0x5e, 0x8e, 0x76, 0x9a, 0xf8, 0xef, 0xfd, 0x6b, 0xc5, 0x4b, 0xc8, 0x8c, 0xf9, 0x49, 0xf1, 0x48, 0x57, 0x3e, 0x68, 0xbf, 0x4f, 0xcc, 0x0f, 0x76, 0xe6, 0x79, 0xe6, 0x9e, 0x13, 0x67, 0xb9, 0xd7, 0xab, 0x1d, 0x8d, 0xe9, 0x31, 0x8b, 0x34, 0xb0, 0xa4, 0x2a, 0x3f, 0x0b, 0xa2, 0x35, 0x1b, 0x4e, 0xc0, 0x6f, 0x45, 0x89, 0xf1 } -, - /* Prime exponent 2 */ - 64, - { 0x71, 0xf4, 0xaa, 0x5c, 0x8a, 0x93, 0x80, 0xaf, 0x14, 0xaa, 0xf7, 0x72, 0x68, 0xb0, 0x55, 0x3b, 0x15, 0x44, 0x28, 0x99, 0x9f, 0xfd, 0x5a, 0x1c, 0x18, 0xdc, 0x87, 0xe6, 0x2d, 0xb3, 0xe6, 0x68, 0x2b, 0x0f, 0xad, 0x56, 0x7e, 0x10, 0x6a, 0xa8, 0x8b, 0x7c, 0xb8, 0x71, 0x3f, 0x1c, 0xa0, 0x20, 0xbe, 0x58, 0xbe, 0x93, 0xcc, 0x07, 0x6a, 0x04, 0x6d, 0xf4, 0x28, 0x90, 0xd1, 0x9c, 0xc5, 0x51 } -, - /* Coefficient */ - 64, - { 0x23, 0x1a, 0xb8, 0xdd, 0x9a, 0x56, 0x99, 0xd7, 0x97, 0x59, 0x11, 0xef, 0x0e, 0xf8, 0x7c, 0x28, 0xdd, 0xb9, 0x2e, 0x24, 0x6e, 0xc3, 0x4c, 0x5f, 0xac, 0x33, 0x83, 0x22, 0xdd, 0xec, 0x89, 0x8d, 0x56, 0x68, 0x67, 0x45, 0x3d, 0xe6, 0xd7, 0x8a, 0x45, 0xc3, 0x16, 0xb1, 0x45, 0xa2, 0x86, 0x18, 0x94, 0x0e, 0x1a, 0xcd, 0x11, 0x58, 0xc3, 0xaf, 0x92, 0xfa, 0xab, 0xfd, 0xc3, 0x97, 0x84, 0x32 } - -} -, -{{ - "PKCS#1 v1.5 Signature Example 6.1", - /* Message to be signed */ - 74, - { 0x8f, 0x75, 0x0e, 0x65, 0x95, 0x1b, 0x5d, 0xe7, 0x58, 0x14, 0xb0, 0xb7, 0x66, 0x30, 0xdc, 0x9f, 0x1c, 0x62, 0x53, 0xa0, 0x59, 0x0e, 0xac, 0xb5, 0x51, 0x2a, 0x8a, 0x4e, 0x1a, 0x8b, 0xe8, 0x52, 0x5d, 0x36, 0x94, 0x1f, 0xa9, 0xd0, 0x92, 0xf6, 0xbb, 0x44, 0x22, 0xaa, 0x8c, 0x0a, 0xd6, 0x42, 0x3e, 0xa2, 0x8c, 0x10, 0xca, 0xa6, 0xe9, 0x54, 0xb7, 0x95, 0x69, 0xd4, 0x4c, 0x86, 0x0f, 0x1c, 0x65, 0x81, 0xeb, 0x17, 0xa7, 0x54, 0x3e, 0x7b, 0xf7, 0xfe } -, - /* Signature */ - 128, - { 0xb1, 0x8b, 0x5e, 0xc8, 0x8d, 0x4e, 0x24, 0xc9, 0x14, 0xb6, 0x65, 0xff, 0x9a, 0x2c, 0x75, 0xf4, 0xe9, 0x19, 0x37, 0xdf, 0x8c, 0x19, 0x95, 0x59, 0x43, 0xe4, 0x51, 0xad, 0xdf, 0x34, 0x84, 0xe4, 0x97, 0x97, 0x8d, 0x26, 0xda, 0x23, 0x1a, 0xf1, 0x4d, 0x9c, 0x29, 0x27, 0xed, 0x21, 0x0a, 0xfb, 0xf9, 0xde, 0xe3, 0x32, 0x67, 0xaa, 0x45, 0x68, 0x46, 0x49, 0xe8, 0x6f, 0xb2, 0x25, 0xa0, 0x53, 0xb5, 0x45, 0x52, 0x90, 0xc3, 0x20, 0xe3, 0xf6, 0x40, 0x62, 0x3c, 0x75, 0xca, 0x42, 0x37, 0x21, 0xf2, 0x80, 0xb8, 0x87, 0x44, 0x24, 0x97, 0xf3, 0x2a, 0x90, 0xd7, 0x8f, 0x64, 0x44, 0x04, 0x77, 0xad, 0x09, 0x27, 0xc7, 0xba, 0x01, 0xc4, 0x4d, 0xa9, 0xd5, 0xc2, 0x83, 0xa4, 0x38, 0xbe, 0x0d, 0xc5, 0x80, 0xa0, 0x05, 0x28, 0xfc, 0x65, 0xe2, 0x04, 0xd4, 0x2a, 0x2d, 0x4e, 0x29, 0x13, 0xc1 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Signature Example 6.2", - /* Message to be signed */ - 53, - { 0xbd, 0xbf, 0x3b, 0x36, 0x40, 0x73, 0xfe, 0x04, 0x8f, 0xba, 0xe5, 0x5e, 0x3c, 0xde, 0x66, 0x8e, 0x84, 0xf7, 0x53, 0xab, 0xfc, 0x71, 0x0b, 0x8c, 0xdb, 0x7b, 0x6c, 0x0c, 0xf8, 0x2d, 0xd5, 0xb6, 0x74, 0xd2, 0x1e, 0x2b, 0x3e, 0x36, 0xb1, 0xb0, 0x36, 0x0d, 0xf8, 0xbf, 0x7e, 0x62, 0x27, 0xc9, 0x2e, 0x15, 0xf3, 0xd7, 0x84 } -, - /* Signature */ - 128, - { 0x66, 0xac, 0xf0, 0x43, 0xbc, 0x6a, 0xae, 0x81, 0xa4, 0xd5, 0x2b, 0x4e, 0x8c, 0x40, 0x12, 0x8b, 0x25, 0xc6, 0xd1, 0x0a, 0x8c, 0x69, 0x8c, 0x83, 0xae, 0xd7, 0x1e, 0x8f, 0x35, 0x83, 0x89, 0x8b, 0xe8, 0xf4, 0xc9, 0xbe, 0xa4, 0xb6, 0x31, 0x90, 0xe2, 0x15, 0x26, 0xca, 0xf8, 0x3a, 0xb1, 0x4a, 0x4f, 0x8b, 0xeb, 0xe8, 0x13, 0xa5, 0xab, 0xeb, 0x95, 0x95, 0x67, 0xbb, 0x2f, 0x06, 0xc5, 0xf1, 0x1e, 0x46, 0x4b, 0x5c, 0xdf, 0x7b, 0x2a, 0x13, 0x2d, 0x42, 0x6d, 0xdb, 0xec, 0xf5, 0x85, 0x90, 0x0a, 0x0d, 0x80, 0x92, 0xca, 0x52, 0xb6, 0xdc, 0x0a, 0xbc, 0x35, 0xf1, 0x40, 0x94, 0x69, 0x89, 0x46, 0xe1, 0xcd, 0x0e, 0xcd, 0x6b, 0xd4, 0x1e, 0x2c, 0x6f, 0x96, 0x3e, 0xe8, 0x9c, 0x82, 0x19, 0x3e, 0xcc, 0x5f, 0xd4, 0x76, 0x30, 0xd3, 0x4a, 0xd1, 0x6c, 0xa2, 0x47, 0x9e, 0xaf, 0x06, 0x2d } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.3", - /* Message to be signed */ - 223, - { 0x3c, 0x5c, 0x74, 0xbc, 0x8f, 0xae, 0x80, 0x7a, 0xe5, 0x8b, 0xd2, 0x13, 0xe6, 0x27, 0x2a, 0xa3, 0x85, 0x79, 0x31, 0x57, 0x5c, 0x2a, 0xa2, 0xbe, 0x4b, 0xca, 0xe4, 0xd7, 0x9a, 0xe0, 0x87, 0xb6, 0xb8, 0x6f, 0x91, 0x5d, 0xf8, 0xc0, 0x96, 0xc1, 0x22, 0xed, 0xfb, 0xdc, 0x79, 0x7f, 0x9d, 0x70, 0xb9, 0x76, 0x13, 0x97, 0xfc, 0xe3, 0xd3, 0xe0, 0xb8, 0xa6, 0xf2, 0x56, 0xdb, 0xc6, 0x60, 0x5b, 0xa9, 0x48, 0xd5, 0xfb, 0xe6, 0xf5, 0x24, 0x5c, 0x02, 0x95, 0xce, 0x5d, 0xd7, 0x3b, 0xf7, 0x43, 0x65, 0x17, 0xf7, 0xc4, 0x22, 0x2d, 0x2c, 0xfd, 0x85, 0x42, 0xe7, 0xa1, 0x00, 0xcf, 0x05, 0x13, 0x04, 0xa1, 0xab, 0x6f, 0xe0, 0x05, 0xda, 0x07, 0x7b, 0x62, 0x87, 0x8f, 0xd0, 0xb7, 0x41, 0xe6, 0x27, 0x1e, 0x0d, 0x34, 0x6b, 0x20, 0x72, 0x3b, 0x7e, 0x00, 0xb3, 0xb8, 0x19, 0x4e, 0x1a, 0x46, 0x0c, 0x6b, 0xf2, 0x56, 0x00, 0x76, 0x82, 0x90, 0xc1, 0xdc, 0xaa, 0x2f, 0x41, 0xb9, 0x41, 0xa6, 0x4f, 0xd9, 0x02, 0x14, 0xd5, 0x16, 0x6d, 0x78, 0xaa, 0xbb, 0xaf, 0x7e, 0x41, 0xd2, 0x4f, 0xf6, 0x36, 0xc9, 0x76, 0x2f, 0xd8, 0x92, 0x19, 0x9d, 0x2c, 0xfd, 0x9d, 0xed, 0xa5, 0x00, 0x51, 0xe0, 0x01, 0xb9, 0xfd, 0x3e, 0x5e, 0x22, 0x27, 0xae, 0xcb, 0x15, 0xc1, 0xb3, 0x13, 0x71, 0xb3, 0x5a, 0x78, 0xb3, 0xb8, 0xb7, 0x63, 0x63, 0x76, 0xf1, 0x34, 0x56, 0x2b, 0x4e, 0x52, 0xf4, 0x51, 0xb7, 0x41, 0xa1, 0x9a, 0xc9, 0x32, 0x56, 0x9f, 0xf3, 0x04, 0x1f, 0xaf, 0x12, 0x27, 0x9f, 0x90 } -, - /* Signature */ - 128, - { 0x5e, 0x89, 0x7f, 0x87, 0x9b, 0xa4, 0x6f, 0x67, 0x11, 0x2c, 0xd7, 0xc7, 0xc6, 0xfb, 0x27, 0x37, 0xad, 0x79, 0x3a, 0x87, 0x28, 0x79, 0x05, 0x2a, 0x88, 0x45, 0x7a, 0xf5, 0xe9, 0xd5, 0x99, 0x59, 0xa8, 0x48, 0x13, 0x4a, 0x68, 0x24, 0xde, 0x3a, 0x67, 0x4f, 0x72, 0xa9, 0x06, 0x87, 0x9e, 0x95, 0xbe, 0x0e, 0xd8, 0x7e, 0xa9, 0xf9, 0x74, 0xa7, 0xa0, 0x7b, 0xa9, 0xad, 0xbe, 0xc2, 0xfb, 0xfa, 0x02, 0x94, 0x37, 0x8b, 0x14, 0xe7, 0x35, 0xf5, 0x5f, 0x40, 0x3c, 0xa0, 0x53, 0x08, 0x4f, 0x51, 0xd3, 0xd3, 0x42, 0xd8, 0xaf, 0x9c, 0x64, 0xb4, 0xd1, 0x54, 0xad, 0x9a, 0xa3, 0xc6, 0xbc, 0xaa, 0xce, 0x1f, 0x1b, 0xbe, 0x62, 0xee, 0xb5, 0xd0, 0xe6, 0xc4, 0xc0, 0x30, 0x93, 0xc2, 0xaf, 0x0f, 0x07, 0x88, 0x8b, 0x8b, 0xbe, 0xfa, 0x79, 0x40, 0x03, 0x23, 0x13, 0x3f, 0x77, 0x6a, 0x32, 0x13 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.4", - /* Message to be signed */ - 61, - { 0x42, 0x56, 0x46, 0x65, 0x0d, 0x6b, 0x37, 0x9e, 0x16, 0xe1, 0x5b, 0xf3, 0x85, 0x3d, 0xdc, 0x9d, 0x44, 0x4f, 0x44, 0x53, 0x5c, 0x49, 0x3a, 0x37, 0x03, 0xb0, 0x01, 0x63, 0xaf, 0x34, 0x76, 0xdf, 0x37, 0x2a, 0x5b, 0x28, 0xf3, 0x34, 0xc0, 0x86, 0x03, 0x13, 0xe8, 0x13, 0x6d, 0xe6, 0x08, 0x29, 0x1b, 0x33, 0x78, 0x38, 0x1b, 0x9e, 0x21, 0xeb, 0xef, 0x24, 0x82, 0x5d, 0x12 } -, - /* Signature */ - 128, - { 0xa6, 0xa0, 0xcb, 0x02, 0x48, 0x1a, 0xf2, 0x48, 0xab, 0xae, 0x89, 0xcd, 0xf4, 0x16, 0x1f, 0x67, 0x76, 0xd4, 0x71, 0x08, 0xf1, 0x8e, 0xc6, 0xe8, 0x43, 0x7c, 0x22, 0x4a, 0x14, 0xf4, 0x52, 0xad, 0xa1, 0x36, 0x52, 0x0f, 0x0f, 0xe0, 0x10, 0xa7, 0x34, 0x5a, 0xf1, 0x97, 0x1a, 0x02, 0xe4, 0xbc, 0xf8, 0xc9, 0x8b, 0x26, 0xc5, 0xb8, 0xc6, 0x00, 0x3d, 0xe4, 0xd2, 0xb4, 0x07, 0x2d, 0x8d, 0xef, 0x1e, 0x19, 0x23, 0xd9, 0xcc, 0xe0, 0xa6, 0x75, 0x14, 0x1d, 0x37, 0x87, 0x3e, 0x59, 0x48, 0xea, 0x6c, 0x8a, 0x78, 0x0e, 0xd2, 0xa5, 0xec, 0xc2, 0xba, 0x9a, 0x81, 0x20, 0x6c, 0x7e, 0xcc, 0xc8, 0x0e, 0xac, 0x02, 0x6d, 0xb7, 0xd7, 0x60, 0x22, 0x3a, 0xa2, 0x38, 0x7a, 0x18, 0x2e, 0x98, 0xd6, 0x6f, 0x1e, 0x23, 0xdf, 0xea, 0xf3, 0x51, 0x5c, 0xee, 0x4f, 0xa1, 0xab, 0xd4, 0x64, 0xb7, 0x68 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.5", - /* Message to be signed */ - 85, - { 0xf4, 0x7d, 0x87, 0xbf, 0xd4, 0x88, 0xaf, 0x5b, 0x24, 0xdb, 0x34, 0xad, 0x0c, 0x13, 0x1e, 0xfc, 0xa1, 0x0c, 0xdd, 0x1a, 0xae, 0xff, 0xbe, 0x6e, 0x36, 0x48, 0x47, 0x22, 0xed, 0x68, 0x09, 0xb1, 0xd5, 0x7a, 0x18, 0x3b, 0xa0, 0x3d, 0x5e, 0x40, 0x5d, 0x12, 0x56, 0xb2, 0x50, 0x5e, 0xcb, 0x84, 0xdb, 0x35, 0xdf, 0xa9, 0x4d, 0xe8, 0x5d, 0xc2, 0xa1, 0x58, 0x8b, 0x6e, 0x83, 0x12, 0x4c, 0xf8, 0x6c, 0x5e, 0x91, 0x66, 0x86, 0x0d, 0x4d, 0xd4, 0x71, 0x70, 0x43, 0x2b, 0x08, 0xae, 0x6a, 0x6e, 0x30, 0x87, 0x10, 0x86, 0xfa } -, - /* Signature */ - 128, - { 0x6c, 0x00, 0x8f, 0xf0, 0xe1, 0x28, 0xfc, 0xec, 0x26, 0x5f, 0x37, 0x9e, 0xb0, 0x83, 0xdb, 0x50, 0x62, 0x4a, 0x27, 0x98, 0xf9, 0x33, 0x67, 0xc6, 0xd1, 0x6e, 0x5d, 0x95, 0xa9, 0x89, 0xf4, 0xf1, 0xee, 0xd0, 0xcc, 0x4c, 0xd8, 0x61, 0xc6, 0xa5, 0x24, 0xf2, 0xb9, 0xfa, 0x30, 0xe8, 0x86, 0xf1, 0x47, 0x77, 0x41, 0xd7, 0xea, 0x8a, 0x60, 0xdf, 0x14, 0x0a, 0xec, 0xf3, 0xa6, 0xcc, 0xf0, 0x04, 0x3d, 0xab, 0x92, 0xcb, 0xe7, 0x29, 0x53, 0xcb, 0x1c, 0x18, 0x41, 0xe0, 0x59, 0x18, 0xec, 0xed, 0x5b, 0x0f, 0x69, 0x4a, 0xf9, 0xa9, 0x8e, 0xc7, 0xf4, 0xe2, 0x28, 0x6d, 0x23, 0x3d, 0xfd, 0x35, 0x13, 0x2a, 0x0b, 0x58, 0x4b, 0xf0, 0xe0, 0xdc, 0xbf, 0x05, 0x11, 0x9c, 0xe2, 0xe3, 0xa4, 0xd8, 0x13, 0xcf, 0x02, 0x8f, 0xec, 0x48, 0xc3, 0x4a, 0x18, 0x81, 0xeb, 0xb5, 0x31, 0xca, 0x48, 0x9b } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.6", - /* Message to be signed */ - 6, - { 0x03, 0x18, 0x78, 0xd5, 0x88, 0xee } -, - /* Signature */ - 128, - { 0xcc, 0x15, 0x4e, 0x1a, 0xf7, 0x13, 0xf2, 0xf9, 0x5e, 0x16, 0xf4, 0x11, 0x17, 0x5d, 0x98, 0x36, 0xad, 0x6d, 0x8b, 0xbd, 0xc8, 0xf9, 0x8c, 0xf0, 0x5c, 0xfa, 0x00, 0x58, 0x23, 0x5d, 0x1f, 0xdd, 0xe0, 0x40, 0x82, 0x76, 0x4c, 0x29, 0xdc, 0xdc, 0xc5, 0x9e, 0xbe, 0x26, 0x57, 0x8b, 0xf9, 0xe8, 0xad, 0x6a, 0x5a, 0xa8, 0x6b, 0x9d, 0x62, 0x91, 0x4b, 0x4c, 0xf6, 0x96, 0xa8, 0xec, 0x2d, 0xa8, 0x79, 0xf8, 0xfa, 0x42, 0x31, 0x46, 0x31, 0x32, 0xea, 0xd7, 0xbb, 0x3b, 0xe7, 0x50, 0xae, 0x0c, 0x56, 0x28, 0xa3, 0x96, 0xb7, 0x0a, 0xdf, 0xa2, 0x7b, 0x40, 0x34, 0x23, 0xb1, 0x00, 0x18, 0xf9, 0xd2, 0x4f, 0xea, 0x33, 0x70, 0x30, 0x14, 0x7f, 0xbf, 0xaa, 0x15, 0xd4, 0x75, 0x32, 0xc9, 0x25, 0x7c, 0x2c, 0x7f, 0x54, 0x1b, 0x5b, 0x97, 0x4d, 0x15, 0xdd, 0x1e, 0x3f, 0xd2, 0xe2, 0x0a, 0x69 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.7", - /* Message to be signed */ - 136, - { 0x27, 0x26, 0x38, 0x52, 0xea, 0xa9, 0x60, 0xbf, 0x76, 0x71, 0x87, 0x6f, 0xc7, 0x90, 0x0f, 0x89, 0x8e, 0xa8, 0x2e, 0xb2, 0xb0, 0xfc, 0x41, 0x85, 0x65, 0xfd, 0xae, 0x62, 0xf7, 0xd9, 0xec, 0x4c, 0xe2, 0x21, 0x7b, 0x97, 0x99, 0x0d, 0xd2, 0x72, 0xdb, 0x15, 0x7f, 0x99, 0xf6, 0x3c, 0x0d, 0xcb, 0xb9, 0xfb, 0xac, 0xdb, 0xd4, 0xc4, 0xda, 0xdb, 0x6d, 0xf6, 0x77, 0x56, 0x35, 0x8c, 0xa4, 0x40, 0x11, 0x5d, 0x3e, 0x5b, 0x3d, 0xeb, 0x1b, 0xa1, 0xbd, 0x90, 0xca, 0x12, 0x86, 0xfd, 0x10, 0x0c, 0xaf, 0x9b, 0xe4, 0x85, 0xa4, 0x4a, 0x38, 0x45, 0x00, 0x57, 0x18, 0x10, 0x4b, 0xbd, 0xfc, 0x5e, 0x78, 0x1a, 0x9e, 0x37, 0xd6, 0x7a, 0xff, 0xe5, 0x56, 0xdc, 0xa1, 0x0f, 0x8e, 0xfa, 0x39, 0xf9, 0xcb, 0x63, 0x92, 0xa7, 0x2e, 0x3f, 0x28, 0x25, 0x81, 0x1a, 0x2c, 0x05, 0xaf, 0x84, 0xaf, 0x9b, 0xe7, 0xf3, 0x71, 0xdb, 0xd4, 0x10, 0x6d, 0x9f } -, - /* Signature */ - 128, - { 0x94, 0x79, 0x8d, 0x17, 0x94, 0x78, 0xbf, 0xe0, 0x6d, 0x96, 0xa3, 0x4a, 0xc9, 0x9b, 0xc9, 0xd5, 0xde, 0x35, 0xdc, 0x46, 0x97, 0xac, 0x3f, 0x70, 0xe9, 0xb3, 0x4c, 0x95, 0xe2, 0x2b, 0x1c, 0x30, 0xd1, 0x42, 0x6b, 0xe3, 0x50, 0x8e, 0x62, 0x2c, 0x1a, 0x18, 0xab, 0x3c, 0x46, 0x72, 0xfe, 0x3d, 0xe3, 0x40, 0xeb, 0x51, 0x0f, 0xb9, 0x87, 0xb5, 0x3a, 0xe9, 0x3a, 0x59, 0xaf, 0x6b, 0x00, 0xbb, 0xae, 0xe0, 0xe8, 0x27, 0x08, 0xe6, 0xc6, 0xae, 0x82, 0xc8, 0x45, 0x53, 0x24, 0x01, 0x78, 0x36, 0xdb, 0x17, 0x66, 0x0d, 0x06, 0x9d, 0x80, 0x27, 0x1e, 0x1e, 0xa9, 0x98, 0x11, 0x63, 0xb1, 0x4b, 0x66, 0x87, 0x6d, 0xfd, 0x12, 0x8f, 0x09, 0xcd, 0x2e, 0x3d, 0x6a, 0x36, 0xb7, 0x3c, 0x3b, 0x40, 0xad, 0x8e, 0x13, 0x24, 0x84, 0x90, 0x29, 0xc8, 0xb8, 0xe3, 0xc8, 0x89, 0x4e, 0xbf, 0xa1, 0x94 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.8", - /* Message to be signed */ - 200, - { 0xa4, 0xfb, 0x21, 0x03, 0xd0, 0xbe, 0x29, 0x0e, 0x99, 0x60, 0x16, 0xa4, 0x39, 0x46, 0x2e, 0x6b, 0xbd, 0xb0, 0x72, 0x4d, 0x86, 0xcd, 0x51, 0x85, 0x91, 0x33, 0xca, 0x3d, 0x39, 0xda, 0xb7, 0x7d, 0xa2, 0x06, 0x9d, 0x82, 0x83, 0x58, 0x96, 0x38, 0x7c, 0xcf, 0x3d, 0xf5, 0xcd, 0xd7, 0xa5, 0x79, 0x3f, 0x22, 0x3f, 0x3d, 0x92, 0x3e, 0xa4, 0x63, 0x51, 0x35, 0x31, 0xad, 0xa6, 0x67, 0xab, 0xfe, 0xf7, 0x53, 0x98, 0xc7, 0xa4, 0xbc, 0x6e, 0xfa, 0xdd, 0x4e, 0xde, 0xef, 0x35, 0xab, 0x8f, 0x54, 0x01, 0xe0, 0xda, 0xf7, 0xc2, 0xfc, 0xa1, 0xcd, 0xbb, 0xee, 0xd3, 0xbc, 0xdd, 0x09, 0x33, 0xff, 0x3e, 0xe4, 0xc5, 0xe2, 0x88, 0xab, 0xdf, 0x21, 0x9e, 0x36, 0xa3, 0xee, 0x6f, 0x21, 0x08, 0x41, 0xa0, 0x3c, 0x9e, 0x3e, 0x4d, 0xac, 0x18, 0x12, 0x24, 0x82, 0xef, 0x85, 0xf4, 0x9f, 0xda, 0xcd, 0xc5, 0x02, 0xd2, 0x79, 0xf1, 0x57, 0x7b, 0xe7, 0x7a, 0x4e, 0x00, 0xb7, 0xc7, 0xf1, 0x7b, 0xa5, 0xda, 0x6b, 0x28, 0xc0, 0x1a, 0x07, 0xa8, 0x63, 0xdf, 0xb2, 0x1c, 0x15, 0x6d, 0xa3, 0x20, 0x01, 0xf5, 0x3d, 0x7e, 0xa3, 0xfc, 0xb8, 0xc9, 0x55, 0x4f, 0x07, 0x54, 0x59, 0xa6, 0x7c, 0xc3, 0xc4, 0xe6, 0x9a, 0x6a, 0x37, 0x17, 0x87, 0x87, 0x46, 0x3c, 0xeb, 0xca, 0xed, 0xa6, 0x49, 0x0a, 0x8f, 0x80, 0xb3, 0x92, 0xde, 0xf9, 0xf2, 0x2a, 0x4f } -, - /* Signature */ - 128, - { 0x72, 0x66, 0x70, 0xc9, 0x51, 0x0b, 0x58, 0x35, 0x4c, 0x8a, 0xf3, 0x2b, 0x41, 0xdb, 0x8f, 0x69, 0x21, 0x07, 0xc0, 0xc8, 0x76, 0xe5, 0x52, 0x73, 0xa8, 0x20, 0xa0, 0xc3, 0x0d, 0x39, 0x24, 0x46, 0x0f, 0xa5, 0xbc, 0x33, 0xdf, 0xe1, 0x9d, 0x72, 0xe5, 0x63, 0x49, 0x28, 0x2a, 0x80, 0xfb, 0x12, 0xa8, 0xfa, 0x9e, 0xa4, 0xa5, 0xda, 0x69, 0xc5, 0x82, 0xd7, 0xc6, 0x41, 0x22, 0xa8, 0xa7, 0x91, 0xb3, 0x21, 0x2c, 0x39, 0xe0, 0x28, 0x26, 0x5b, 0x84, 0x54, 0xdf, 0x71, 0x5b, 0xa3, 0x0b, 0x00, 0x3d, 0x12, 0x91, 0x69, 0xcf, 0x12, 0x51, 0x1c, 0x0d, 0x3e, 0x7a, 0xae, 0xce, 0xf3, 0x79, 0x2c, 0xf1, 0x85, 0x64, 0x4c, 0xf8, 0x0e, 0x44, 0x81, 0x47, 0xb1, 0xa7, 0x96, 0x1a, 0xf3, 0x84, 0x41, 0x7d, 0x18, 0x2c, 0x6f, 0x85, 0x52, 0x46, 0xda, 0xd5, 0xb8, 0x93, 0xd9, 0xa7, 0x68, 0x0e, 0xbc } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.9", - /* Message to be signed */ - 160, - { 0xe5, 0x50, 0x6e, 0x04, 0xb1, 0x91, 0x84, 0x10, 0x76, 0x85, 0x87, 0x25, 0xa9, 0xfd, 0xd8, 0xf9, 0x74, 0x5f, 0x24, 0x2e, 0x99, 0x49, 0x4a, 0x42, 0x3f, 0x80, 0x36, 0x74, 0x74, 0x27, 0x1d, 0xce, 0x95, 0xa9, 0x9a, 0x2f, 0x71, 0x13, 0x4f, 0x39, 0xfb, 0x3f, 0x2e, 0x47, 0xc6, 0xa0, 0xb2, 0xfb, 0x6f, 0x61, 0x5b, 0x0d, 0xee, 0x6d, 0xf3, 0x3b, 0x28, 0xf8, 0xb0, 0xd4, 0x1e, 0x92, 0xd1, 0x42, 0xb1, 0x46, 0xe8, 0xcd, 0xe9, 0xb1, 0x1d, 0x6e, 0xc1, 0xd3, 0x7d, 0x71, 0xfd, 0x82, 0xb7, 0x19, 0xce, 0x1a, 0xdd, 0xb8, 0x21, 0xca, 0x4c, 0xaf, 0xbd, 0x2a, 0xa4, 0xf1, 0xe6, 0x11, 0xa2, 0x59, 0xe5, 0xf0, 0x5b, 0x53, 0x1f, 0xa1, 0x1e, 0x3b, 0x67, 0x1b, 0x7a, 0x5b, 0x10, 0xb4, 0xc8, 0x15, 0x6c, 0x25, 0xb0, 0xa5, 0x9e, 0xc6, 0xe1, 0x58, 0xf6, 0xd3, 0x46, 0xd8, 0x48, 0x04, 0xfc, 0xf9, 0x2a, 0x72, 0x76, 0x8f, 0x4e, 0xbc, 0x93, 0x5e, 0xee, 0x5c, 0xfe, 0xc7, 0xf6, 0xe6, 0xe8, 0x3c, 0xbe, 0x15, 0x8a, 0x13, 0x27, 0x5e, 0x84, 0x18, 0x3a, 0x94, 0xd7, 0x24, 0xb0, 0xe9, 0x66, 0x96 } -, - /* Signature */ - 128, - { 0x34, 0x22, 0x0e, 0xda, 0xfd, 0x4a, 0xc8, 0x84, 0xb9, 0xd0, 0x0f, 0xbb, 0xfb, 0x71, 0xa4, 0xa6, 0xc4, 0xd4, 0xb7, 0x1c, 0x19, 0x84, 0x22, 0x05, 0x07, 0x99, 0xd0, 0xc0, 0xfd, 0x54, 0xe9, 0x09, 0xa4, 0xca, 0xd2, 0x29, 0x8f, 0xaa, 0xb3, 0x34, 0x7a, 0x0a, 0xf0, 0xd2, 0x7d, 0x53, 0x01, 0xa8, 0x86, 0x00, 0x9c, 0xf5, 0xc6, 0xf1, 0x25, 0xdf, 0xc1, 0x13, 0x1a, 0xce, 0x38, 0x8b, 0xb2, 0x14, 0xc2, 0x84, 0x44, 0x20, 0xc0, 0x23, 0xdb, 0xc8, 0xb4, 0xa9, 0x66, 0x11, 0xb3, 0xb3, 0x93, 0xac, 0xc3, 0x83, 0x94, 0x90, 0xfc, 0x4e, 0xe2, 0xd3, 0x69, 0xb8, 0xc3, 0xc8, 0x76, 0x57, 0x22, 0x83, 0xef, 0x34, 0xd7, 0x0c, 0x64, 0x03, 0xef, 0x9e, 0x2e, 0x87, 0xa2, 0x76, 0xb2, 0x35, 0x72, 0xed, 0x82, 0xe2, 0x40, 0x22, 0x67, 0xc2, 0x73, 0x7f, 0x75, 0xbb, 0x4a, 0x27, 0xd3, 0xcf, 0x16, 0xd2 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.10", - /* Message to be signed */ - 166, - { 0x8f, 0xc9, 0xcf, 0xa7, 0x21, 0xdf, 0xa0, 0x9b, 0xa0, 0x72, 0x9e, 0xf9, 0x18, 0x9e, 0x54, 0x27, 0xb3, 0xe7, 0x38, 0xc5, 0xae, 0x38, 0xa2, 0x65, 0x7f, 0x7c, 0x7e, 0x31, 0x4a, 0x49, 0xca, 0xeb, 0xa0, 0xfc, 0x9d, 0x45, 0x40, 0xf5, 0xf8, 0xd6, 0xc0, 0x47, 0x53, 0x60, 0x0e, 0xf6, 0xb9, 0xc3, 0x39, 0x65, 0x40, 0xf8, 0x6c, 0x11, 0x75, 0xb6, 0x0b, 0xf4, 0x0e, 0x3d, 0x8c, 0x84, 0x51, 0x35, 0x5e, 0x13, 0x74, 0xf4, 0x30, 0x43, 0xc0, 0xc6, 0xaa, 0x41, 0xd3, 0x79, 0x6b, 0xd8, 0x27, 0x9b, 0x3c, 0x30, 0x62, 0xb3, 0x74, 0x99, 0x6b, 0x7e, 0xae, 0xdd, 0x4d, 0xb0, 0xae, 0xe8, 0xc9, 0x4b, 0x93, 0xb1, 0x71, 0xfc, 0x41, 0x1d, 0x4d, 0xfc, 0x37, 0x28, 0xd0, 0x23, 0x15, 0x58, 0xcf, 0xc8, 0xfa, 0x45, 0xf9, 0x51, 0xb3, 0x5c, 0x9d, 0x46, 0x12, 0x18, 0xa6, 0x50, 0xc7, 0x02, 0xce, 0xa9, 0x3b, 0xb3, 0xfa, 0x14, 0x36, 0xed, 0x44, 0x5c, 0x95, 0x24, 0x9d, 0xc2, 0x20, 0x54, 0x71, 0x01, 0xb9, 0xa9, 0x3e, 0xb0, 0x14, 0xcd, 0x84, 0x3f, 0xf3, 0x9c, 0xe4, 0xc9, 0x6f, 0x82, 0xa3, 0x9f, 0x86, 0x3a, 0x4c, 0x2e, 0x1f, 0xa9 } -, - /* Signature */ - 128, - { 0xa2, 0x6e, 0x7d, 0xbd, 0x5d, 0xfe, 0x08, 0xc7, 0x2b, 0xd8, 0x0d, 0x5e, 0x26, 0x68, 0xd5, 0xd7, 0x2a, 0xbb, 0x1a, 0x0c, 0x04, 0x20, 0xff, 0x0e, 0xa8, 0x6a, 0x9c, 0x76, 0x08, 0xc4, 0x70, 0xe1, 0xc3, 0xf7, 0x2e, 0xbf, 0x44, 0x5d, 0x12, 0x18, 0x71, 0x81, 0x41, 0x55, 0x58, 0xdd, 0x03, 0xeb, 0xe4, 0x07, 0xaa, 0x06, 0xb5, 0x16, 0x47, 0xba, 0xfe, 0x0c, 0x85, 0xf3, 0xd3, 0xb8, 0xdc, 0xe9, 0x0c, 0xeb, 0xf0, 0xa0, 0xee, 0xcb, 0xac, 0x12, 0x28, 0xe7, 0x85, 0x82, 0x0c, 0x4f, 0x90, 0x9d, 0x2e, 0xf3, 0x92, 0xf0, 0x31, 0x17, 0x56, 0x1e, 0xc3, 0x8e, 0xb0, 0xd8, 0x8b, 0x02, 0x32, 0x72, 0xa4, 0x28, 0x63, 0x51, 0x62, 0x0f, 0x21, 0x04, 0x3c, 0xca, 0xf7, 0x50, 0x36, 0x84, 0x00, 0x29, 0x57, 0xef, 0x79, 0xbc, 0xff, 0x9d, 0x1c, 0x20, 0x1c, 0x42, 0xe0, 0x96, 0x0b, 0xd9, 0x69, 0x79 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.11", - /* Message to be signed */ - 238, - { 0x96, 0x1f, 0xe3, 0x4a, 0x21, 0x2c, 0xb0, 0xe6, 0xf6, 0xdc, 0xde, 0xcf, 0x1a, 0x4c, 0xb7, 0xb2, 0x14, 0x39, 0x0a, 0x77, 0xf4, 0x4d, 0x3a, 0x3b, 0x3e, 0xe2, 0xb1, 0x2f, 0x1f, 0x0e, 0xe3, 0x14, 0x2e, 0x9e, 0xaf, 0x70, 0x89, 0x55, 0xec, 0x83, 0x7e, 0xa1, 0xd0, 0xd2, 0x95, 0x4e, 0x6c, 0xe9, 0x50, 0xf3, 0x4c, 0x87, 0x30, 0x54, 0x8f, 0x2e, 0x09, 0x5d, 0x5d, 0xbb, 0x93, 0x8b, 0x19, 0x0b, 0x73, 0x8b, 0xff, 0x81, 0x71, 0x93, 0x02, 0xb6, 0x79, 0x8b, 0x76, 0x8b, 0x0b, 0xbd, 0xd2, 0xe2, 0xb9, 0x67, 0x2d, 0x89, 0x14, 0x05, 0xc7, 0x71, 0xa7, 0x79, 0x02, 0xfd, 0x54, 0x27, 0x42, 0x5a, 0xf0, 0x4e, 0x21, 0xb9, 0x1c, 0x5f, 0x39, 0x37, 0x20, 0x41, 0xe4, 0x94, 0xd9, 0xbe, 0x62, 0xde, 0xce, 0x31, 0xbd, 0x8a, 0x26, 0x2f, 0x6d, 0xdb, 0x84, 0x9f, 0x06, 0x8a, 0xa9, 0x9f, 0x7d, 0x62, 0x62, 0xe1, 0x84, 0xab, 0x9c, 0xb1, 0x62, 0x24, 0x47, 0xd6, 0x2f, 0xf6, 0x71, 0x09, 0x20, 0x30, 0x70, 0x71, 0xc2, 0x72, 0xbe, 0x0b, 0xb3, 0x7f, 0x0e, 0xef, 0x64, 0x5f, 0x99, 0xea, 0xb5, 0x1b, 0x0b, 0xcb, 0xbb, 0x64, 0x87, 0xd8, 0xd2, 0xb4, 0x9f, 0x3f, 0x23, 0xe0, 0xaa, 0x91, 0x8c, 0x89, 0xac, 0x85, 0x56, 0x53, 0xe1, 0xcc, 0xc0, 0x05, 0x91, 0x58, 0x0e, 0x0c, 0xe1, 0xe3, 0x87, 0x79, 0xc0, 0x4b, 0xe7, 0xdf, 0x1c, 0x66, 0x63, 0xac, 0xd9, 0x93, 0x7e, 0x47, 0x2b, 0x3e, 0xb6, 0xd4, 0xb7, 0x0a, 0x08, 0x0d, 0xe8, 0xe0, 0x35, 0x48, 0xf5, 0x12, 0x45, 0xbe, 0x7c, 0xe0, 0xb8, 0x6d, 0xee, 0xc1, 0x76, 0xe0, 0x0e, 0x54, 0xbd, 0x63, 0xbd, 0x5b, 0xb0, 0x2f, 0xc9, 0x54 } -, - /* Signature */ - 128, - { 0x98, 0xac, 0x47, 0x73, 0x59, 0x15, 0x9e, 0x93, 0xe1, 0xb3, 0x36, 0xee, 0x05, 0x60, 0x6d, 0x42, 0xb7, 0xe1, 0x25, 0x0d, 0x12, 0x95, 0x60, 0xc0, 0xd0, 0x95, 0xf8, 0xf8, 0xea, 0x3c, 0x04, 0x74, 0x32, 0xa9, 0x9c, 0x1e, 0xc4, 0xbc, 0x88, 0x7d, 0x7f, 0x07, 0xf6, 0x1d, 0xf1, 0x6f, 0x0c, 0x09, 0xf7, 0x15, 0xb7, 0x05, 0x38, 0x8b, 0xb8, 0xa6, 0x11, 0x87, 0x34, 0x6e, 0x8d, 0x7b, 0x07, 0xea, 0xb2, 0xfc, 0x05, 0xdb, 0x89, 0xe0, 0x30, 0x09, 0x44, 0xae, 0x37, 0x73, 0xe4, 0x4c, 0xb9, 0x2c, 0x5c, 0xf0, 0xf4, 0xfb, 0xe0, 0x1a, 0x05, 0xad, 0x79, 0xbf, 0xaa, 0x24, 0x7f, 0x83, 0xed, 0x1e, 0xda, 0x48, 0xba, 0xaf, 0xd1, 0xe1, 0x80, 0x07, 0x8c, 0xa8, 0xd3, 0x21, 0xd5, 0x0b, 0x42, 0x57, 0x87, 0xf0, 0x12, 0x43, 0xa4, 0x93, 0x37, 0x4e, 0x84, 0xf5, 0xcd, 0x56, 0xb7, 0x53, 0xd7, 0xac } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.12", - /* Message to be signed */ - 121, - { 0x96, 0xff, 0x0a, 0x5e, 0xca, 0xc9, 0x51, 0x16, 0xbd, 0x73, 0x43, 0x79, 0x5a, 0xf8, 0x3c, 0x87, 0xed, 0x9f, 0x83, 0x45, 0xd0, 0x3f, 0x6f, 0x32, 0x2f, 0x29, 0x54, 0x93, 0xf4, 0x0b, 0x19, 0xba, 0x8f, 0xfe, 0x2c, 0x89, 0x8c, 0x7b, 0x20, 0x66, 0x21, 0xf7, 0x2e, 0x02, 0xc7, 0xf0, 0xf0, 0x0f, 0x9f, 0x1c, 0x52, 0x3d, 0x73, 0xd3, 0x35, 0xa2, 0x6c, 0xed, 0xdc, 0x73, 0x98, 0xb7, 0xca, 0x20, 0x09, 0xca, 0xcb, 0xb1, 0x82, 0x83, 0xb7, 0x6b, 0x28, 0x15, 0xd1, 0xe9, 0x01, 0x00, 0x09, 0x6e, 0x95, 0xb8, 0x85, 0x30, 0xf1, 0xc4, 0x8c, 0x39, 0x61, 0xc4, 0x35, 0xbc, 0xe0, 0x28, 0x9f, 0xf6, 0x2e, 0x21, 0xbf, 0x4d, 0x3e, 0xc8, 0x99, 0xc8, 0x7e, 0x14, 0xc8, 0xea, 0xd7, 0x92, 0x2e, 0x79, 0x5e, 0x3e, 0x6f, 0x41, 0x80, 0xc0, 0x89, 0x9e, 0xa0 } -, - /* Signature */ - 128, - { 0x7c, 0x7b, 0x01, 0x57, 0xf6, 0xa5, 0x09, 0x09, 0x51, 0x09, 0x63, 0x28, 0x2f, 0x00, 0x11, 0x1e, 0xea, 0x70, 0x19, 0x37, 0x54, 0xe4, 0x27, 0xa0, 0x2b, 0x34, 0x6f, 0xeb, 0x68, 0x2f, 0x4c, 0x71, 0x87, 0xbb, 0x38, 0x1d, 0x31, 0xd2, 0x3b, 0x94, 0x76, 0x88, 0x43, 0x24, 0x5a, 0xad, 0x53, 0x61, 0xfc, 0xa4, 0x2d, 0x8b, 0x28, 0x4c, 0x8d, 0x92, 0xe6, 0xfb, 0x99, 0x2f, 0xa7, 0x71, 0x2f, 0xa5, 0xa9, 0x31, 0x55, 0xdf, 0x02, 0x0d, 0x30, 0x0a, 0x3b, 0xf8, 0x98, 0x86, 0x66, 0x8c, 0xf3, 0x7b, 0xd1, 0x3b, 0x55, 0x0a, 0xdb, 0x2d, 0x2a, 0x86, 0xc6, 0x9d, 0xaa, 0xac, 0xdc, 0x50, 0x30, 0xdc, 0x84, 0x34, 0x3c, 0x8b, 0x49, 0x34, 0xf0, 0x3c, 0xdc, 0x0e, 0xef, 0x0f, 0x6c, 0x1e, 0xa7, 0xec, 0x09, 0x62, 0x00, 0x79, 0x03, 0xb4, 0x48, 0x21, 0x7d, 0xe9, 0x3b, 0x75, 0x07, 0x54, 0x9b, 0x2e } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.13", - /* Message to be signed */ - 79, - { 0x32, 0xa1, 0x2e, 0x0c, 0x67, 0x0e, 0xd2, 0x15, 0xae, 0x54, 0x49, 0xa0, 0x91, 0x7a, 0xe9, 0x5e, 0x23, 0xdb, 0x80, 0x3a, 0xd2, 0x8a, 0x18, 0x42, 0xed, 0xfa, 0x90, 0xbc, 0x40, 0x5d, 0xd8, 0x9a, 0x1b, 0x46, 0x8a, 0xce, 0xbd, 0x08, 0xfe, 0x9c, 0x69, 0x3d, 0x8f, 0xb1, 0x05, 0xe8, 0x22, 0x2e, 0xb5, 0x7f, 0x79, 0xe4, 0xb2, 0x27, 0x00, 0xe0, 0x7f, 0x27, 0x6d, 0x4a, 0xec, 0xc7, 0xa1, 0x5f, 0xb7, 0x47, 0x33, 0x06, 0x56, 0x27, 0xb8, 0x79, 0xb0, 0x16, 0xee, 0xd4, 0xab, 0x4a, 0x1c } -, - /* Signature */ - 128, - { 0x85, 0xb9, 0x0e, 0xb8, 0x26, 0x51, 0x4a, 0x0e, 0xc0, 0xfc, 0x1b, 0xdc, 0x34, 0x86, 0xa8, 0xdc, 0x8b, 0x0f, 0x26, 0x3e, 0xfe, 0x57, 0xcf, 0x17, 0x50, 0xa4, 0x2a, 0x6b, 0x5b, 0x99, 0x72, 0x64, 0xfa, 0x61, 0x78, 0x64, 0x83, 0x7e, 0x63, 0x9f, 0x45, 0xd9, 0x20, 0x58, 0x41, 0xcd, 0xc1, 0x34, 0xab, 0xea, 0xcf, 0x6e, 0xe0, 0xec, 0xda, 0x09, 0xb9, 0x8d, 0x76, 0x9f, 0x51, 0xf3, 0x94, 0x7a, 0x33, 0x58, 0x7f, 0xf0, 0xc8, 0xdd, 0x01, 0xb7, 0xf6, 0xb2, 0x4a, 0x2f, 0xbf, 0x29, 0xc9, 0xff, 0xf7, 0x37, 0xee, 0xe5, 0x6a, 0xda, 0x2c, 0xeb, 0x74, 0x6b, 0x02, 0x5d, 0x95, 0x65, 0x22, 0xd9, 0x20, 0xd1, 0x2d, 0xdd, 0x13, 0xdb, 0xa0, 0x8b, 0x20, 0xe1, 0xee, 0xe1, 0x3a, 0x8b, 0x25, 0x80, 0xe5, 0x92, 0xc3, 0x4e, 0x39, 0x33, 0x37, 0x66, 0x11, 0x5a, 0x23, 0xb9, 0xd0, 0x0e, 0x2a, 0x42 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.14", - /* Message to be signed */ - 78, - { 0xbb, 0xda, 0x73, 0xcb, 0xe2, 0xbf, 0xf7, 0xff, 0x53, 0x62, 0xeb, 0xe9, 0x32, 0xc0, 0xa0, 0xdd, 0x68, 0xac, 0x84, 0xee, 0x99, 0x8f, 0xbf, 0x59, 0xa2, 0xa9, 0x26, 0x55, 0x20, 0x32, 0x31, 0x63, 0xb3, 0x0d, 0x9e, 0x70, 0x08, 0xb9, 0x4b, 0x0c, 0x0e, 0xbc, 0x5f, 0x6c, 0x4c, 0x97, 0x3c, 0x13, 0xff, 0x15, 0x3d, 0x31, 0x69, 0x0c, 0x3c, 0x95, 0xab, 0x23, 0x1f, 0x0c, 0x9e, 0xc9, 0x98, 0xfb, 0xfc, 0xad, 0xc2, 0x8b, 0x2d, 0x7f, 0x06, 0x50, 0x7e, 0x17, 0xd2, 0x1e, 0x82, 0xda } -, - /* Signature */ - 128, - { 0x26, 0xf9, 0x52, 0xb6, 0x57, 0xfd, 0xb9, 0xa1, 0x1d, 0xc8, 0x43, 0x79, 0x0c, 0x9d, 0x2a, 0x6a, 0x51, 0xc9, 0x76, 0x10, 0x1e, 0xfb, 0x82, 0xd0, 0x53, 0x60, 0x67, 0x62, 0xab, 0xa3, 0x3a, 0xf6, 0x28, 0x0b, 0xde, 0x38, 0x15, 0xe0, 0x87, 0x4d, 0x60, 0x78, 0x75, 0x38, 0x42, 0xe5, 0xb1, 0xc9, 0x0c, 0xf7, 0x99, 0x12, 0x20, 0xfc, 0xfa, 0x62, 0x28, 0x49, 0x43, 0x69, 0x0c, 0x30, 0x1e, 0x9f, 0xc6, 0xe4, 0x79, 0xaf, 0x68, 0xb9, 0x69, 0x47, 0x85, 0xbe, 0x40, 0xd4, 0x69, 0x86, 0xa6, 0x2a, 0x12, 0x1a, 0xa9, 0xad, 0x0d, 0xe9, 0x69, 0x52, 0x1f, 0x1c, 0xb8, 0xe7, 0xc4, 0xbd, 0x70, 0xc7, 0xc8, 0xcd, 0x7a, 0x9d, 0x13, 0x54, 0xe7, 0xd0, 0xaa, 0x0d, 0x85, 0xd6, 0xd7, 0xaa, 0x00, 0xe4, 0x64, 0x90, 0x26, 0xd6, 0xf0, 0x70, 0xf8, 0xb3, 0xc2, 0x7c, 0x98, 0x55, 0x6b, 0xea, 0xa4, 0xc0 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.15", - /* Message to be signed */ - 150, - { 0x2c, 0x32, 0x5d, 0xda, 0xf6, 0x52, 0x6a, 0x1e, 0xa3, 0x51, 0x8e, 0xe5, 0xe5, 0x40, 0x7f, 0x03, 0x90, 0xe0, 0xeb, 0xaa, 0xa5, 0xf4, 0x72, 0xa1, 0xe9, 0xab, 0x46, 0xf7, 0x46, 0xd7, 0x1b, 0xa2, 0xe2, 0x17, 0xfa, 0xa8, 0x17, 0x99, 0xbf, 0x35, 0x8f, 0x95, 0xe9, 0x83, 0x08, 0x27, 0x0b, 0x18, 0xa0, 0x01, 0x99, 0x29, 0xa2, 0x88, 0xd0, 0xc9, 0x56, 0xe0, 0xbf, 0x17, 0xc5, 0x19, 0x8c, 0xeb, 0x2c, 0xd9, 0xfe, 0x40, 0xd7, 0x02, 0xa4, 0x4e, 0x56, 0x45, 0xec, 0xa5, 0xb4, 0x39, 0xab, 0xca, 0x7b, 0x2c, 0x6f, 0x95, 0xac, 0xc3, 0xc2, 0xc3, 0x65, 0x19, 0x5c, 0x79, 0x5e, 0x91, 0xd6, 0x3b, 0x3c, 0x09, 0x33, 0x24, 0x4f, 0xf1, 0x25, 0x63, 0xaf, 0x66, 0x22, 0xa4, 0x0c, 0x74, 0x15, 0xdb, 0x60, 0xa7, 0x8d, 0xca, 0x02, 0x60, 0x25, 0x14, 0x39, 0x53, 0x8d, 0x38, 0xaa, 0x38, 0x28, 0x9d, 0x92, 0x88, 0x86, 0xab, 0x12, 0x87, 0x36, 0xa6, 0xa8, 0x73, 0x9c, 0x14, 0x55, 0xc4, 0x84, 0x9f, 0x2d, 0x54, 0x56, 0x45, 0x37, 0x93 } -, - /* Signature */ - 128, - { 0x6d, 0x1f, 0x20, 0x3d, 0xc3, 0xff, 0xa7, 0xa3, 0x34, 0xd3, 0x1b, 0x9a, 0x75, 0xe0, 0x12, 0x58, 0x1b, 0x8d, 0x62, 0xb2, 0xbf, 0x73, 0x80, 0x0b, 0xe5, 0x1d, 0x02, 0x65, 0x33, 0x99, 0x83, 0x18, 0xc0, 0xca, 0xc9, 0x2a, 0x02, 0xd4, 0x6d, 0x75, 0x9b, 0xf8, 0x0a, 0x41, 0xda, 0xa0, 0xa6, 0xa2, 0x9f, 0x4f, 0xa0, 0xbb, 0x60, 0x66, 0x4c, 0xac, 0xad, 0xe2, 0x4a, 0x65, 0xcb, 0x47, 0x65, 0x11, 0x09, 0xbe, 0xec, 0x82, 0x31, 0x91, 0x95, 0x25, 0xd1, 0x47, 0x32, 0x68, 0x74, 0x55, 0x78, 0xdb, 0x9e, 0x30, 0x64, 0x10, 0x8a, 0xe4, 0x6a, 0x48, 0x70, 0xf1, 0x80, 0x66, 0x78, 0x9b, 0x03, 0x66, 0xa7, 0xd0, 0xce, 0x37, 0xe0, 0x30, 0xb5, 0x89, 0x46, 0xec, 0x8c, 0x1a, 0x14, 0x11, 0x54, 0xdb, 0x0e, 0x26, 0x1b, 0xef, 0x8b, 0xaf, 0x2e, 0x9f, 0x65, 0xfc, 0xd1, 0x6b, 0x7d, 0x57, 0x97, 0xb6 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.16", - /* Message to be signed */ - 25, - { 0x29, 0x85, 0xe8, 0xb5, 0x50, 0x81, 0x2f, 0xb6, 0x6c, 0x18, 0xf8, 0x0e, 0x6f, 0x09, 0x2a, 0x94, 0x5d, 0x09, 0x15, 0x83, 0x86, 0x1b, 0x62, 0x5d, 0x1e } -, - /* Signature */ - 128, - { 0x2e, 0x84, 0x30, 0x13, 0xcd, 0x5e, 0x79, 0x5e, 0x21, 0x66, 0xc8, 0xe9, 0x1b, 0x06, 0xc3, 0x13, 0x1d, 0xc3, 0xa5, 0xe1, 0x21, 0x36, 0xd7, 0x16, 0x0f, 0xfd, 0x11, 0xbb, 0xef, 0xcf, 0x6a, 0xb6, 0x40, 0xe0, 0x5d, 0x76, 0xe0, 0xc6, 0x1e, 0xd3, 0x06, 0xf6, 0x08, 0x6b, 0xbb, 0x56, 0x7c, 0xa8, 0x7e, 0x40, 0xc6, 0x92, 0x4d, 0x5c, 0x84, 0xa6, 0xce, 0x28, 0xa8, 0x39, 0x50, 0xbd, 0x4b, 0x84, 0xe2, 0x7f, 0xc5, 0x06, 0x9f, 0xd0, 0x62, 0x4d, 0x50, 0xea, 0xc2, 0x4a, 0x94, 0x11, 0xb5, 0xf7, 0x67, 0x85, 0xd9, 0xdb, 0x5d, 0xa3, 0x0f, 0x42, 0x56, 0x95, 0xb0, 0x19, 0xb8, 0x4c, 0xdb, 0xb8, 0x25, 0xbd, 0x46, 0xe7, 0x35, 0x2e, 0x08, 0xf1, 0x14, 0xc8, 0x7b, 0x06, 0x6f, 0xe4, 0x3d, 0x10, 0x56, 0xa2, 0xc6, 0x10, 0xce, 0xa7, 0xe3, 0xd3, 0xdc, 0x98, 0xbf, 0x44, 0x97, 0xeb, 0x4f, 0x13 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.17", - /* Message to be signed */ - 146, - { 0x77, 0x78, 0x8e, 0x83, 0x8b, 0x83, 0x4e, 0x8f, 0x4d, 0x04, 0x5a, 0xa8, 0x94, 0xb9, 0x0a, 0xbb, 0x85, 0x94, 0x0c, 0xfc, 0x58, 0xd7, 0x72, 0x5e, 0x7f, 0x37, 0x3d, 0xa5, 0x54, 0x71, 0x37, 0xc6, 0x0b, 0xea, 0x75, 0x1e, 0x01, 0x42, 0xbf, 0x9a, 0x6f, 0x46, 0x49, 0xae, 0xb5, 0x46, 0xed, 0x56, 0x0c, 0xc4, 0xea, 0x15, 0x62, 0xd4, 0xa5, 0xfa, 0x3e, 0xb1, 0xb1, 0x14, 0x77, 0xa3, 0x05, 0x1e, 0x24, 0xc6, 0x06, 0xb8, 0xa7, 0x1c, 0x1a, 0x77, 0x4b, 0xdc, 0xf1, 0xa5, 0x31, 0x0f, 0xed, 0x55, 0x59, 0x23, 0x73, 0x0f, 0xa8, 0xaf, 0x4c, 0x15, 0x80, 0x0d, 0x36, 0x2b, 0x37, 0xad, 0xf1, 0x4f, 0x7a, 0xfc, 0xe7, 0x8e, 0xfa, 0x6b, 0xd8, 0x93, 0x56, 0x3e, 0xfe, 0x0b, 0x3b, 0x82, 0x8e, 0xbd, 0x49, 0x9f, 0x12, 0xa2, 0xfe, 0x33, 0x2b, 0xfe, 0x46, 0xdc, 0xbb, 0x31, 0x4b, 0xbd, 0xbf, 0x69, 0x08, 0x7e, 0x2a, 0x66, 0x5d, 0xf1, 0x10, 0x83, 0x5d, 0xe5, 0x5d, 0x61, 0xe5, 0xc2, 0x02, 0x5f, 0xd8, 0xdb } -, - /* Signature */ - 128, - { 0x8e, 0x5f, 0x33, 0x53, 0xc4, 0x9c, 0xbb, 0xb2, 0xea, 0x69, 0x6a, 0xbb, 0x57, 0x40, 0xba, 0xe0, 0x15, 0xef, 0xfd, 0x95, 0x0d, 0x56, 0x07, 0x13, 0x76, 0x05, 0xa1, 0x00, 0xc4, 0xa5, 0x3f, 0x1b, 0x95, 0x17, 0x6c, 0xaf, 0x34, 0x9f, 0x4f, 0xd5, 0x88, 0xae, 0xdd, 0xdc, 0xf5, 0x06, 0x0c, 0xcb, 0x72, 0x47, 0x8c, 0xfb, 0x09, 0x85, 0x62, 0xf3, 0x4d, 0x8f, 0x8e, 0xba, 0x44, 0x6a, 0x38, 0x47, 0x56, 0x5a, 0x7b, 0x89, 0x55, 0xad, 0x9e, 0x0c, 0x6e, 0xb6, 0x70, 0x99, 0xe1, 0xa4, 0x6c, 0x3e, 0xb2, 0xd4, 0x9d, 0x90, 0x90, 0xae, 0x5f, 0x63, 0xe8, 0xa0, 0x8b, 0x6e, 0x8f, 0x21, 0xf0, 0x03, 0xe4, 0x51, 0xd2, 0x50, 0xff, 0xc5, 0xa7, 0x90, 0xd6, 0x6a, 0x0e, 0x2e, 0x3e, 0x28, 0xa6, 0x33, 0x9f, 0xe9, 0x1d, 0x11, 0x29, 0x21, 0xf5, 0x5d, 0x12, 0x30, 0x30, 0x6f, 0xad, 0x5c, 0x01, 0x90 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.18", - /* Message to be signed */ - 62, - { 0x1d, 0x59, 0x9d, 0x76, 0x2c, 0xd5, 0x4d, 0xf7, 0x0f, 0x1a, 0x09, 0x83, 0xbc, 0x3e, 0xa2, 0xbb, 0xca, 0x6f, 0xcb, 0xbd, 0x16, 0x26, 0x03, 0xba, 0x81, 0x56, 0x10, 0x77, 0xfd, 0x92, 0x84, 0x92, 0x5c, 0xf1, 0xf1, 0xb0, 0x8b, 0xea, 0x1e, 0x70, 0xbc, 0x59, 0x5d, 0xf0, 0xb3, 0x43, 0xb8, 0x3b, 0x9c, 0xf3, 0xd6, 0x34, 0xf9, 0x5e, 0x37, 0xe8, 0xd1, 0xc5, 0x85, 0xfa, 0xb1, 0x99 } -, - /* Signature */ - 128, - { 0x71, 0x74, 0x97, 0xa4, 0xe6, 0x0d, 0xbf, 0xfa, 0x19, 0x6e, 0xff, 0x75, 0x8e, 0x90, 0x1c, 0xe1, 0xfe, 0x6e, 0x2b, 0xc7, 0xe1, 0xd5, 0x3a, 0x3d, 0xcf, 0x62, 0x25, 0x67, 0x1a, 0xf1, 0x46, 0xc5, 0xde, 0xe2, 0x00, 0xa8, 0x14, 0xf4, 0x89, 0x8d, 0x16, 0xa9, 0xb5, 0xf5, 0x08, 0xdc, 0x9f, 0xde, 0x4d, 0x64, 0x07, 0x0e, 0x55, 0xae, 0x3b, 0x1f, 0xdf, 0x79, 0x19, 0xf4, 0x2b, 0x7c, 0xff, 0xb7, 0xe9, 0x28, 0xc4, 0xca, 0xeb, 0x55, 0x2d, 0xc6, 0xfd, 0x08, 0x18, 0x34, 0xb2, 0xdc, 0x2f, 0xed, 0x07, 0xe7, 0xe6, 0x27, 0xd3, 0x4b, 0x39, 0x10, 0xca, 0x71, 0x3b, 0xf4, 0x15, 0x4e, 0xff, 0x99, 0x96, 0x57, 0x36, 0x15, 0x18, 0xfc, 0xe5, 0xa8, 0xf6, 0x42, 0xdc, 0x9a, 0x18, 0xa6, 0x6e, 0xde, 0x22, 0x19, 0x0f, 0x60, 0xaa, 0xf9, 0x58, 0xd6, 0x24, 0x6b, 0x00, 0xa0, 0x32, 0xc3, 0x98, 0x41 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.19", - /* Message to be signed */ - 169, - { 0xda, 0x51, 0x00, 0x86, 0x60, 0xb6, 0x3b, 0x87, 0x67, 0xe6, 0x5f, 0x12, 0xc6, 0x30, 0x8e, 0xc1, 0x8e, 0xd9, 0x57, 0x5a, 0x42, 0x6b, 0xc5, 0xfb, 0xe6, 0x60, 0x10, 0xec, 0x3f, 0x01, 0x17, 0x5f, 0xfa, 0x57, 0x41, 0xea, 0xcc, 0xdd, 0xb0, 0x2f, 0xce, 0x7b, 0x2e, 0xf7, 0x78, 0x44, 0x40, 0xd7, 0x2d, 0x37, 0x52, 0x20, 0x3f, 0x53, 0x4e, 0x52, 0xfc, 0xf6, 0x26, 0xa8, 0xc5, 0x96, 0x51, 0x3f, 0x41, 0x90, 0x64, 0xbb, 0xba, 0xfd, 0xe7, 0xf8, 0xd6, 0x5f, 0x30, 0xd7, 0xca, 0x68, 0x71, 0x89, 0x70, 0xde, 0x71, 0xfc, 0x8c, 0x0e, 0xed, 0x4d, 0xa0, 0x0a, 0x4e, 0x1a, 0xb5, 0x41, 0x02, 0xd9, 0xd1, 0x65, 0xbd, 0x7c, 0x54, 0xaf, 0x5c, 0x31, 0xc1, 0x5c, 0x05, 0xbc, 0xa5, 0x5b, 0x6f, 0xdd, 0x19, 0x10, 0x86, 0xa5, 0x3e, 0x52, 0x96, 0xf4, 0x84, 0xc3, 0x47, 0xd8, 0xfb, 0x94, 0x5a, 0x10, 0xc4, 0x94, 0x49, 0x75, 0x27, 0x32, 0xf6, 0x2f, 0x34, 0xc3, 0x25, 0x15, 0x58, 0x86, 0x51, 0x13, 0x79, 0x19, 0x28, 0x5a, 0x2c, 0x8e, 0xf7, 0xb4, 0xaa, 0x0e, 0x69, 0x0b, 0x0b, 0x65, 0x43, 0x7f, 0xf8, 0xd5, 0x6f, 0xc9, 0x5d, 0xcb, 0xc3, 0xe7, 0x8d } -, - /* Signature */ - 128, - { 0x32, 0x67, 0x72, 0x28, 0xff, 0x08, 0xc6, 0x6f, 0xd0, 0x3b, 0xb3, 0x1f, 0x0d, 0xfe, 0x89, 0x01, 0x53, 0xb3, 0x44, 0x6b, 0x57, 0xeb, 0x84, 0xef, 0x39, 0x56, 0x20, 0x8f, 0x72, 0xa0, 0x7c, 0x87, 0x67, 0xe6, 0xbf, 0x09, 0xf0, 0x38, 0xbc, 0xf7, 0xf7, 0x35, 0xee, 0x24, 0xa1, 0xf6, 0x40, 0xa1, 0x89, 0x8d, 0x40, 0x9e, 0xb5, 0x3a, 0xbd, 0xb6, 0x93, 0x94, 0x27, 0x34, 0x56, 0x9a, 0xf7, 0x1a, 0x4c, 0xd9, 0x9a, 0x65, 0x20, 0xba, 0xca, 0x5d, 0x42, 0x86, 0xb1, 0x99, 0xcc, 0x67, 0x62, 0x8e, 0x2f, 0xca, 0xd2, 0x96, 0xa3, 0x0e, 0xca, 0x49, 0x9e, 0xb8, 0x80, 0x50, 0x7f, 0x6a, 0x37, 0x44, 0x0b, 0x61, 0xc1, 0x28, 0x4c, 0x40, 0x3c, 0x41, 0x32, 0x1b, 0x99, 0x05, 0x3f, 0x5d, 0x69, 0x72, 0x8d, 0x5b, 0x97, 0x35, 0x76, 0xcf, 0x04, 0x74, 0x83, 0x33, 0xd8, 0x08, 0xd5, 0xe6, 0x8a, 0x8f } - -} -, -{ - "PKCS#1 v1.5 Signature Example 6.20", - /* Message to be signed */ - 50, - { 0x8c, 0xd2, 0xda, 0xd2, 0xa5, 0xd5, 0xf9, 0xfa, 0xa0, 0x7e, 0x24, 0xa9, 0x6e, 0x86, 0xf9, 0xb0, 0xac, 0x8b, 0x40, 0x22, 0x2a, 0xc9, 0xfb, 0x8a, 0x8a, 0x15, 0x72, 0x7c, 0xf2, 0xf5, 0x3e, 0x68, 0x4a, 0xf4, 0xab, 0xdc, 0x98, 0x68, 0xa7, 0x25, 0x3b, 0x25, 0xb0, 0x96, 0xbd, 0x70, 0x1f, 0x46, 0xa9, 0x43 } -, - /* Signature */ - 128, - { 0x8f, 0x03, 0x22, 0xeb, 0x2c, 0x54, 0x05, 0x24, 0x85, 0xa6, 0x45, 0x49, 0xad, 0xff, 0x2a, 0x36, 0x31, 0xdb, 0x65, 0x76, 0xfc, 0x0c, 0xaf, 0xb5, 0x51, 0x69, 0x7d, 0xc5, 0x35, 0x6f, 0x02, 0xe0, 0x93, 0xcb, 0x69, 0x17, 0x3a, 0x7e, 0x83, 0x55, 0xa0, 0xda, 0xde, 0xbf, 0xa5, 0x3c, 0xb2, 0x90, 0x7f, 0x00, 0x2d, 0xb3, 0xa3, 0xe3, 0x87, 0xda, 0x05, 0x7b, 0x7c, 0x73, 0x55, 0x16, 0x43, 0x84, 0x3e, 0xf5, 0x74, 0x48, 0x1f, 0x80, 0x74, 0x15, 0x17, 0x7e, 0x4b, 0x34, 0xc2, 0x5b, 0xd5, 0x5f, 0x4c, 0x02, 0xfa, 0x0a, 0xde, 0xa3, 0xa9, 0x58, 0x04, 0x65, 0xf3, 0x58, 0xc0, 0x05, 0x96, 0xb5, 0xcc, 0x06, 0x2d, 0x58, 0x92, 0x30, 0x3e, 0x1a, 0xcc, 0x11, 0x3c, 0x3b, 0x4b, 0xc7, 0x4d, 0x42, 0xe8, 0x58, 0x02, 0x90, 0x78, 0x48, 0x2a, 0x1b, 0x23, 0x4a, 0x62, 0x5b, 0x04, 0x28, 0x44, 0x06 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 7: A 1025-bit RSA key pair", -{ - /* Modulus */ - 129, - { 0x01, 0x69, 0x34, 0xcd, 0xff, 0x48, 0x50, 0xb6, 0x00, 0x2c, 0xc0, 0xf0, 0xf4, 0x01, 0x0a, 0x32, 0xc6, 0x55, 0xe5, 0xcf, 0x6e, 0x7c, 0x89, 0x93, 0x7f, 0xd7, 0x55, 0xef, 0x6a, 0xbe, 0x37, 0x9d, 0xad, 0xde, 0x70, 0xcc, 0x21, 0x77, 0x51, 0xf1, 0x4c, 0xba, 0x6d, 0x90, 0xfe, 0x52, 0xdc, 0x0a, 0xf5, 0x8b, 0x25, 0x2f, 0x26, 0xbf, 0x72, 0xda, 0x57, 0x9f, 0xda, 0xf5, 0x7d, 0xdd, 0x6c, 0xd6, 0x02, 0x18, 0x79, 0x94, 0x9a, 0x02, 0x76, 0xb4, 0x43, 0x3f, 0xf0, 0x1e, 0xfc, 0xcc, 0xf3, 0x5a, 0x11, 0xe7, 0xc7, 0x7b, 0x38, 0xc1, 0x8c, 0xca, 0x94, 0xae, 0x01, 0x2d, 0x0f, 0x37, 0x04, 0x21, 0x49, 0x1c, 0x52, 0xad, 0x15, 0xac, 0x76, 0xb1, 0x2e, 0xcd, 0x21, 0x8f, 0x52, 0xe7, 0x57, 0x86, 0x6e, 0x08, 0x9d, 0xd8, 0xad, 0xbb, 0x48, 0xe9, 0xba, 0x89, 0x43, 0x36, 0xc5, 0x75, 0xc4, 0x06, 0x55 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0x0d, 0x17, 0x19, 0xe5, 0xbd, 0x47, 0x6d, 0x87, 0xc7, 0xec, 0xc3, 0x1e, 0xb8, 0xab, 0x42, 0x5d, 0x4f, 0xe4, 0xc8, 0xf5, 0xc7, 0xae, 0x23, 0x0a, 0x10, 0x47, 0x55, 0x3f, 0xfb, 0x53, 0x9f, 0xd3, 0x85, 0x5a, 0xf5, 0xa4, 0x3b, 0x2d, 0xdd, 0x4e, 0x95, 0xa2, 0xb3, 0x0d, 0x40, 0x7a, 0xa8, 0x81, 0x59, 0xbb, 0xad, 0x2a, 0x87, 0x3d, 0x80, 0x93, 0xb4, 0x8a, 0x4b, 0xce, 0x20, 0xad, 0x99, 0x26, 0x25, 0x3e, 0xd3, 0x39, 0xac, 0x3b, 0x54, 0x3f, 0xc7, 0x42, 0x96, 0x95, 0x33, 0x8d, 0xb0, 0xbc, 0x1d, 0xc3, 0x68, 0x6c, 0xfd, 0x13, 0x9b, 0xb5, 0xb2, 0x87, 0x36, 0xbc, 0x16, 0x60, 0xa9, 0x53, 0x48, 0xfc, 0x91, 0xc3, 0x25, 0xd0, 0x3a, 0x7f, 0xb2, 0x16, 0xd2, 0xd9, 0xcd, 0x93, 0x64, 0xde, 0x4e, 0xe7, 0xd2, 0x11, 0x9c, 0x3b, 0x0f, 0xbb, 0xa8, 0xa7, 0x1f, 0x0d, 0x3f, 0x5a, 0xb9, 0xb9 } -, - /* Prime 1 */ - 65, - { 0x01, 0x58, 0xc0, 0x24, 0x6c, 0xd1, 0x69, 0xfc, 0x59, 0x3b, 0x25, 0x8b, 0xbf, 0x45, 0x23, 0xab, 0x2b, 0x55, 0xc4, 0x60, 0x73, 0x3a, 0x7f, 0xb4, 0x69, 0x10, 0x90, 0x77, 0xb3, 0x0e, 0x4d, 0x35, 0xf2, 0x1a, 0x35, 0xb1, 0xf4, 0x1e, 0x42, 0x04, 0xe8, 0x1d, 0x2e, 0x4c, 0x46, 0x3c, 0x24, 0x11, 0x39, 0x34, 0x09, 0x8b, 0x45, 0x2d, 0xab, 0x4b, 0xe1, 0x59, 0x97, 0x20, 0xef, 0x68, 0x72, 0x83, 0x3d } -, - /* Prime 2 */ - 65, - { 0x01, 0x0c, 0x38, 0x2d, 0xea, 0x5e, 0x7d, 0x79, 0x29, 0x8c, 0x64, 0x1f, 0xb2, 0xe4, 0xfa, 0x09, 0xf2, 0x4f, 0x6a, 0x7a, 0x45, 0x9a, 0x88, 0x2c, 0x87, 0xa8, 0x03, 0x49, 0x5f, 0x05, 0x6e, 0xcc, 0x3b, 0x43, 0xc5, 0x37, 0x73, 0x1f, 0x85, 0xef, 0xc8, 0xfb, 0x53, 0x87, 0xad, 0x67, 0x31, 0xa6, 0x43, 0x53, 0x32, 0x15, 0xde, 0xcc, 0x38, 0x7d, 0x96, 0x76, 0x12, 0x2c, 0x17, 0x0e, 0x91, 0xe0, 0xf9 } -, - /* Prime exponent 1 */ - 64, - { 0xd5, 0x78, 0xdc, 0xd5, 0x38, 0xf2, 0xfc, 0xdc, 0x30, 0x00, 0xb6, 0xc0, 0xf0, 0x49, 0xfe, 0xe2, 0xad, 0x90, 0x14, 0xfd, 0x24, 0xfb, 0x10, 0xb6, 0x82, 0x18, 0x42, 0xd6, 0x70, 0x03, 0xa5, 0x64, 0xcd, 0x8f, 0xf4, 0x2a, 0x2a, 0x56, 0x4c, 0xfd, 0x81, 0x9c, 0x3a, 0x84, 0xbf, 0x16, 0xc2, 0x47, 0x7e, 0x8e, 0x6e, 0x5b, 0x9e, 0xc4, 0xd4, 0x0e, 0xad, 0x50, 0x24, 0x87, 0xba, 0x50, 0x36, 0x2d } -, - /* Prime exponent 2 */ - 64, - { 0x88, 0x88, 0xdc, 0x8e, 0xae, 0x94, 0xee, 0xa5, 0x80, 0xca, 0xc2, 0xfc, 0x1c, 0xe5, 0x4f, 0x44, 0xe2, 0xba, 0x50, 0x0d, 0xb8, 0x71, 0x53, 0x41, 0xa6, 0xfc, 0x2d, 0x50, 0x4a, 0x82, 0xb1, 0x42, 0x05, 0xe8, 0x91, 0xa6, 0x6f, 0xc8, 0x8d, 0x5c, 0x60, 0xdb, 0x8f, 0x78, 0x6c, 0xcc, 0x70, 0x57, 0x5b, 0x35, 0x66, 0xbe, 0xa8, 0x74, 0xa5, 0x31, 0x7f, 0x5f, 0x16, 0xc4, 0x91, 0xed, 0x1e, 0x79 } -, - /* Coefficient */ - 64, - { 0x17, 0xb0, 0xd6, 0x23, 0x36, 0x19, 0x1e, 0x63, 0xbc, 0xa1, 0x59, 0x93, 0x4d, 0x06, 0x16, 0xcb, 0x89, 0x97, 0x40, 0x9c, 0xbf, 0xca, 0x37, 0x05, 0x69, 0x5b, 0x14, 0xfb, 0x64, 0xa0, 0x81, 0xc1, 0xc9, 0xf5, 0x86, 0x19, 0x3e, 0x52, 0x3a, 0xbd, 0x0b, 0xeb, 0x8d, 0x72, 0x0c, 0xfe, 0x53, 0x7d, 0xfa, 0x1e, 0xde, 0xc4, 0xa6, 0x64, 0x37, 0xd2, 0x41, 0x19, 0x6b, 0x7a, 0x2c, 0xe5, 0x56, 0xc4 } - -} -, -{{ - "PKCS#1 v1.5 Signature Example 7.1", - /* Message to be signed */ - 157, - { 0x35, 0x39, 0x99, 0x7a, 0xe7, 0x09, 0xfe, 0x32, 0xc1, 0x03, 0x6a, 0x13, 0x27, 0x57, 0xf2, 0xa1, 0x66, 0x7a, 0x91, 0xcc, 0x83, 0xbe, 0x73, 0x3a, 0xad, 0xa1, 0xbd, 0xd2, 0x17, 0x92, 0x4c, 0x9a, 0x2c, 0x9f, 0xed, 0x1f, 0xec, 0xf6, 0x1d, 0x1c, 0xf7, 0x9d, 0xae, 0x9a, 0x83, 0xf8, 0xae, 0x3f, 0x4d, 0x05, 0x1b, 0x34, 0xfb, 0xb5, 0x59, 0xcb, 0xfd, 0xa4, 0x92, 0xf1, 0xd8, 0x3b, 0x8b, 0xeb, 0xa0, 0x45, 0xd4, 0xae, 0x1c, 0x8f, 0xea, 0x15, 0xb7, 0x57, 0x7a, 0x1b, 0x8a, 0x3f, 0x55, 0xba, 0xc1, 0x72, 0x7e, 0xdc, 0xa7, 0xf8, 0xf5, 0x2c, 0xb4, 0xba, 0x61, 0xca, 0xf1, 0xfa, 0x8f, 0x8f, 0xd9, 0xaa, 0xc7, 0x79, 0x09, 0x5c, 0xa8, 0x4c, 0x79, 0x91, 0x52, 0x9f, 0xb8, 0x06, 0x99, 0xd0, 0xd4, 0x68, 0x8d, 0xfd, 0xb1, 0x42, 0xed, 0x61, 0xa9, 0x5b, 0x89, 0xce, 0x33, 0x06, 0xbf, 0x97, 0x80, 0xe1, 0xb9, 0x1b, 0x84, 0x8c, 0x8d, 0x20, 0x03, 0x97, 0x0e, 0x52, 0x70, 0x2a, 0x1f, 0x61, 0x2e, 0x2f, 0x40, 0x17, 0xcf, 0xe0, 0xa9, 0x1d, 0xb9, 0xe4, 0x6d, 0xb9, 0xdc } -, - /* Signature */ - 129, - { 0x00, 0x08, 0x0f, 0x77, 0x0a, 0x2d, 0x1f, 0x6a, 0xbf, 0x5f, 0x22, 0x1f, 0x62, 0xe1, 0x66, 0xab, 0xd7, 0x9d, 0x06, 0xc7, 0xb9, 0xa8, 0x78, 0xd6, 0x1b, 0x80, 0xfc, 0x4d, 0x5b, 0xa2, 0x90, 0xb2, 0x3a, 0xba, 0xab, 0x51, 0x8f, 0x09, 0x44, 0x7e, 0x45, 0xae, 0xe6, 0xf3, 0xbd, 0x06, 0x10, 0x24, 0x44, 0x36, 0xa4, 0x73, 0x01, 0x60, 0xe6, 0xa6, 0x72, 0x11, 0x0c, 0x01, 0xae, 0xb5, 0x62, 0x4b, 0x71, 0x8d, 0xc7, 0xc0, 0x86, 0x1e, 0x58, 0x6b, 0xa8, 0xb6, 0x0a, 0x29, 0xd6, 0xa5, 0x75, 0x5c, 0xd2, 0xcc, 0x50, 0x85, 0x99, 0xc6, 0xe2, 0x8d, 0x73, 0x55, 0xb2, 0x7e, 0x40, 0xb7, 0x40, 0xc6, 0xfb, 0xbb, 0xb1, 0xa9, 0x18, 0x23, 0xb1, 0xc1, 0x24, 0x2b, 0xa6, 0x93, 0xd4, 0x52, 0x69, 0x51, 0x47, 0xdb, 0xb2, 0x3e, 0xa8, 0x9c, 0xbf, 0x11, 0xeb, 0x8b, 0x07, 0xec, 0x3a, 0x02, 0x7b, 0x0f, 0x17 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Signature Example 7.2", - /* Message to be signed */ - 180, - { 0x31, 0x80, 0x08, 0x87, 0x3c, 0x4c, 0xfe, 0xa7, 0x12, 0x5e, 0xa6, 0xfd, 0x52, 0x15, 0xdf, 0xd9, 0x8d, 0x5c, 0x5e, 0x73, 0x32, 0x3f, 0x03, 0xf2, 0x15, 0xc6, 0x9c, 0x8f, 0x2b, 0xb1, 0x98, 0x3b, 0x59, 0xdf, 0xa6, 0xe9, 0x9a, 0xdd, 0x30, 0x69, 0x66, 0xf3, 0x11, 0x0c, 0x16, 0x1c, 0xa2, 0x26, 0x24, 0xb8, 0x80, 0x70, 0x26, 0x5b, 0x8f, 0x3f, 0x9d, 0x5d, 0xf7, 0x29, 0x91, 0xe7, 0x9e, 0x5b, 0x18, 0x9a, 0xa3, 0xd9, 0xcd, 0x9b, 0x20, 0x47, 0xcf, 0xa6, 0x1d, 0x01, 0x23, 0x4b, 0x23, 0x3d, 0x36, 0xac, 0x4b, 0x96, 0xed, 0x08, 0x16, 0x48, 0x87, 0x74, 0x90, 0xfa, 0x4a, 0x80, 0xec, 0x4c, 0xbb, 0xd9, 0xd2, 0xe0, 0x06, 0x2c, 0x39, 0xe1, 0x85, 0x3a, 0x0c, 0x38, 0x34, 0x4b, 0xa8, 0x58, 0xbd, 0x1d, 0x99, 0x5f, 0x6c, 0xaa, 0x28, 0xbf, 0x90, 0x40, 0x26, 0x26, 0x8a, 0x99, 0x72, 0x11, 0x43, 0xc8, 0x6a, 0x43, 0x43, 0xba, 0xf8, 0x9b, 0x6d, 0x55, 0x07, 0x64, 0x25, 0x1f, 0xb0, 0x7d, 0x16, 0x7b, 0x4c, 0x4b, 0x1b, 0x70, 0xf9, 0x9e, 0xf5, 0xfe, 0x50, 0xe6, 0x2e, 0x54, 0x13, 0xfc, 0xce, 0x0f, 0x99, 0x59, 0xc2, 0xa3, 0x78, 0xc4, 0x1d, 0x6f, 0x42, 0x36, 0x17, 0x8b, 0x14, 0xb8, 0x91, 0x9d, 0xb1, 0xd0 } -, - /* Signature */ - 129, - { 0x00, 0x6d, 0x54, 0x7d, 0xa4, 0xed, 0xcb, 0x10, 0x33, 0x15, 0xcb, 0x8e, 0x4b, 0x66, 0x9b, 0xee, 0x96, 0xaa, 0x21, 0x56, 0x23, 0x5c, 0xa5, 0xc3, 0xe3, 0x1b, 0x24, 0xa1, 0x5a, 0x13, 0x92, 0xe4, 0x94, 0x04, 0x7f, 0xed, 0xcb, 0x70, 0x81, 0x90, 0x7c, 0x56, 0x17, 0xa8, 0xaa, 0x18, 0xd1, 0x01, 0xb0, 0x53, 0x2a, 0x36, 0x32, 0x45, 0x19, 0x23, 0xc4, 0x8a, 0x75, 0xb0, 0xec, 0x21, 0x76, 0xcb, 0x98, 0xe5, 0xce, 0x51, 0x58, 0x8b, 0xcf, 0x86, 0x8e, 0x29, 0xd5, 0xd9, 0x69, 0x4f, 0x00, 0xae, 0x2c, 0x92, 0x4e, 0x73, 0xd2, 0xe6, 0xdd, 0x14, 0x4d, 0x24, 0xfa, 0x45, 0xd0, 0x12, 0x06, 0xa3, 0xf5, 0xd9, 0x36, 0x41, 0x3c, 0xcb, 0xb7, 0x4b, 0x0e, 0x2d, 0x04, 0x7d, 0x82, 0xb6, 0x00, 0xb8, 0x9d, 0x51, 0x59, 0x4f, 0xce, 0x7d, 0xe6, 0xbb, 0xd9, 0x5b, 0x97, 0xfc, 0xfe, 0xc5, 0x98, 0xc4, 0xeb } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.3", - /* Message to be signed */ - 37, - { 0x7f, 0x83, 0xb3, 0xe0, 0x54, 0xc0, 0x24, 0x82, 0x50, 0x78, 0xdd, 0x9f, 0x04, 0x0e, 0x1d, 0x09, 0x05, 0x82, 0x00, 0xc9, 0x75, 0x7b, 0x76, 0xfb, 0x37, 0x2b, 0x8b, 0x52, 0x66, 0xb9, 0xdc, 0x26, 0x9e, 0xc7, 0x56, 0x9d, 0x00 } -, - /* Signature */ - 129, - { 0x01, 0x34, 0xee, 0x21, 0x51, 0x51, 0xe5, 0x32, 0x50, 0xf5, 0xa0, 0x01, 0x6a, 0xcc, 0xe3, 0x70, 0x1e, 0x2a, 0x58, 0xdd, 0xaa, 0xd6, 0xcc, 0x36, 0x9d, 0xf0, 0xdc, 0xd9, 0x34, 0x6a, 0x2b, 0x53, 0x0f, 0xe3, 0x71, 0x5a, 0xfe, 0xff, 0x1e, 0x9b, 0xcb, 0x72, 0x08, 0x31, 0xc1, 0x25, 0x58, 0x97, 0x0a, 0x9e, 0x03, 0x89, 0x60, 0x04, 0xf2, 0x87, 0xad, 0xb8, 0x21, 0xf3, 0x17, 0xcf, 0x63, 0x93, 0x00, 0xca, 0xe6, 0xe9, 0x09, 0xe9, 0x1e, 0xd2, 0xa3, 0xea, 0xcb, 0x99, 0x52, 0xa7, 0xcc, 0x54, 0x94, 0x76, 0x52, 0x64, 0x24, 0x79, 0x51, 0xd2, 0x8c, 0x16, 0xaf, 0x03, 0xe2, 0x4b, 0x80, 0xee, 0x32, 0xb0, 0xb6, 0x2e, 0xdf, 0x10, 0xd7, 0x00, 0x91, 0x92, 0x71, 0x35, 0xf0, 0x5a, 0x88, 0x9f, 0x2f, 0x60, 0x56, 0xb9, 0x5c, 0xdd, 0xac, 0xe4, 0x7c, 0x69, 0xf9, 0x73, 0x08, 0xc0, 0xdf, 0x2e, 0xba } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.4", - /* Message to be signed */ - 198, - { 0x17, 0xeb, 0xc1, 0x50, 0x07, 0xbb, 0x5e, 0x4a, 0xf9, 0x17, 0x20, 0x1c, 0x3b, 0xa3, 0x84, 0x92, 0x65, 0x89, 0xc3, 0x15, 0x9a, 0x89, 0xd1, 0xab, 0xd4, 0xc2, 0xc9, 0x86, 0xfb, 0xa0, 0x37, 0x9e, 0x8a, 0xf1, 0x29, 0x75, 0xc5, 0xd0, 0x31, 0xd1, 0xbf, 0xc1, 0x5c, 0xa9, 0x17, 0x36, 0xf0, 0x7b, 0x17, 0x66, 0xd8, 0xb8, 0xa7, 0x2d, 0xb1, 0x0c, 0x26, 0x8c, 0x98, 0xfd, 0x7a, 0xa1, 0x1e, 0x29, 0x99, 0xf0, 0x6d, 0x86, 0x12, 0x7c, 0xc8, 0x89, 0xcf, 0x15, 0x0d, 0xcc, 0x73, 0x8f, 0x6a, 0xb8, 0xba, 0xae, 0x94, 0x3c, 0xc6, 0x06, 0xdd, 0x4d, 0x9e, 0xce, 0x70, 0x1a, 0x4a, 0x7b, 0x10, 0x1e, 0x35, 0x1d, 0xee, 0x20, 0xb1, 0x5e, 0xbc, 0x55, 0x25, 0x6d, 0xb3, 0xce, 0x46, 0xa6, 0xbd, 0x50, 0x61, 0x12, 0x5b, 0x62, 0xb9, 0x95, 0xe9, 0x70, 0xd1, 0x6f, 0x7c, 0x9a, 0x8f, 0xc1, 0x57, 0xff, 0x68, 0xce, 0xc7, 0xe6, 0x0f, 0x60, 0x8f, 0x66, 0x26, 0xdd, 0x39, 0x52, 0x8b, 0x24, 0x09, 0xaa, 0x2f, 0xf9, 0x32, 0xfc, 0x11, 0x9b, 0x2a, 0x7a, 0x81, 0x77, 0x2a, 0x57, 0x6b, 0x3d, 0x50, 0xa0, 0xd2, 0x87, 0xa7, 0xfa, 0x2d, 0xb8, 0x7d, 0x2b, 0x92, 0xe1, 0xc9, 0x61, 0xa7, 0x0c, 0xaa, 0x44, 0xd8, 0x81, 0x37, 0xb9, 0x50, 0xe1, 0x00, 0x71, 0x1a, 0x98, 0x54, 0xad, 0xfa, 0xfb, 0x49, 0x4d, 0x34, 0xe2, 0x86, 0x06, 0xa2, 0x7c } -, - /* Signature */ - 129, - { 0x01, 0x05, 0xda, 0xdc, 0x99, 0xc5, 0x9b, 0x5e, 0x3a, 0xc5, 0x54, 0xb1, 0xb5, 0xe7, 0x48, 0x0e, 0x5c, 0x0a, 0x62, 0xc7, 0xab, 0xae, 0xfd, 0xac, 0xf4, 0x42, 0x6e, 0xcc, 0xfe, 0x68, 0x6b, 0x8a, 0xaa, 0x1c, 0xa4, 0xf5, 0x1e, 0xba, 0xbf, 0xfa, 0x77, 0xd9, 0x98, 0x03, 0xe7, 0xee, 0x8d, 0x20, 0xd1, 0x20, 0x4a, 0xad, 0x8c, 0x67, 0x38, 0x5d, 0x07, 0x44, 0xc8, 0x54, 0xde, 0x2f, 0x99, 0x7a, 0x56, 0xaa, 0xae, 0x04, 0xce, 0xcc, 0x65, 0x65, 0x35, 0xc1, 0x6b, 0xb2, 0x14, 0x5d, 0x18, 0x01, 0x81, 0x25, 0x94, 0xa8, 0x01, 0x3b, 0x0e, 0xb5, 0x4e, 0x7b, 0xf6, 0x5d, 0x38, 0x42, 0x00, 0x54, 0xec, 0x46, 0xda, 0xc7, 0x1a, 0x12, 0x52, 0x08, 0xb3, 0x02, 0x21, 0x4a, 0x7c, 0x9b, 0x3a, 0x92, 0xca, 0x9b, 0xf7, 0x37, 0x39, 0xc7, 0x66, 0x30, 0x9a, 0xf8, 0x03, 0xed, 0xde, 0x7c, 0x54, 0xd2, 0x46 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.5", - /* Message to be signed */ - 51, - { 0x6a, 0x52, 0xba, 0x19, 0x0e, 0x44, 0xca, 0x0f, 0x10, 0x70, 0x02, 0x10, 0x48, 0x76, 0x2f, 0x3e, 0x79, 0xed, 0x51, 0xc9, 0x4f, 0x6d, 0xc1, 0xa9, 0xf1, 0xed, 0x78, 0x35, 0x2e, 0xf3, 0x79, 0xaa, 0x49, 0xb3, 0xa9, 0x38, 0x7e, 0x3c, 0xa7, 0xa1, 0x96, 0xf1, 0x05, 0xdc, 0xab, 0x18, 0x50, 0x6f, 0x29, 0x4a, 0x69 } -, - /* Signature */ - 129, - { 0x00, 0x0b, 0x70, 0xe6, 0x01, 0xc5, 0xec, 0x58, 0x68, 0x4e, 0x09, 0x18, 0xba, 0x7a, 0x53, 0x9e, 0x9d, 0x2d, 0xd2, 0x9b, 0x01, 0xa3, 0xf4, 0x53, 0xca, 0xd4, 0xa9, 0xa4, 0x0e, 0x50, 0xf5, 0xdb, 0xdf, 0x72, 0xc1, 0x10, 0x52, 0xf2, 0x0b, 0xe4, 0x4a, 0x5d, 0x38, 0x51, 0xb0, 0x1f, 0xd0, 0x9d, 0x9c, 0x92, 0x08, 0x47, 0x0f, 0x0a, 0x4a, 0x95, 0x03, 0x5e, 0x98, 0x9e, 0xed, 0x7d, 0x6b, 0x06, 0x2e, 0x13, 0xf4, 0x99, 0x5b, 0xf0, 0x93, 0x0b, 0x4a, 0x3d, 0x9b, 0x8a, 0x9e, 0xd7, 0x5e, 0x33, 0x88, 0x6e, 0x4b, 0x19, 0x4a, 0xb5, 0xcc, 0xd6, 0xb4, 0x12, 0x95, 0x9c, 0xb4, 0xf5, 0x49, 0x8b, 0xd3, 0x2f, 0x66, 0x85, 0x46, 0xbe, 0x2c, 0x00, 0x7a, 0xe8, 0xde, 0x5d, 0x98, 0x97, 0x7b, 0x94, 0xb1, 0x7e, 0x12, 0x63, 0x88, 0x4b, 0x54, 0xe7, 0x84, 0xb3, 0x8f, 0xc1, 0x12, 0xb8, 0xcb, 0xdd, 0x56 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.6", - /* Message to be signed */ - 236, - { 0xbb, 0xe0, 0xb9, 0xde, 0x2b, 0x5e, 0x9d, 0xcd, 0x31, 0x67, 0x42, 0x94, 0x3f, 0x92, 0x19, 0xb2, 0x4f, 0x66, 0xa3, 0x8f, 0x9d, 0xe7, 0x09, 0x46, 0x4f, 0xa5, 0x49, 0x5d, 0x79, 0x4a, 0x63, 0x7b, 0x9e, 0xbc, 0x06, 0x77, 0x62, 0xda, 0x7a, 0x6e, 0xef, 0xf0, 0x98, 0xfa, 0x44, 0xf3, 0xcc, 0x36, 0xf2, 0xcc, 0xef, 0x67, 0xfd, 0x46, 0xc5, 0x9e, 0x24, 0x73, 0x8c, 0x81, 0x0c, 0x69, 0xed, 0xdc, 0xd9, 0x0c, 0xc7, 0xd7, 0x1a, 0x4c, 0x3e, 0x69, 0x3b, 0xca, 0xa2, 0x8a, 0x53, 0x3d, 0x90, 0x4b, 0x41, 0xce, 0xd3, 0x39, 0x9b, 0x4c, 0x76, 0x47, 0xe5, 0xec, 0x4b, 0x3a, 0xd9, 0x03, 0x87, 0x0f, 0x5b, 0x5f, 0x8d, 0x6a, 0x8d, 0x81, 0x28, 0xae, 0x23, 0x81, 0xce, 0xc8, 0x6c, 0x4d, 0x85, 0xb7, 0x8a, 0x45, 0x1e, 0x1e, 0xa9, 0x7e, 0x33, 0x93, 0xff, 0xe9, 0x97, 0xe5, 0x46, 0xb0, 0x9c, 0x8c, 0xf8, 0x22, 0x52, 0xb3, 0x3f, 0x74, 0x5f, 0xee, 0xd4, 0x13, 0x32, 0x06, 0x51, 0x8e, 0x2b, 0x88, 0x03, 0x19, 0xdc, 0xdf, 0x91, 0x06, 0x71, 0x8a, 0xfb, 0x01, 0x6c, 0x51, 0x4b, 0x38, 0x05, 0x32, 0x65, 0xbc, 0x98, 0x79, 0x10, 0x0e, 0x47, 0xb0, 0x3e, 0xba, 0x03, 0x68, 0xf0, 0x9e, 0x29, 0x23, 0xac, 0x6f, 0x40, 0xa0, 0x4b, 0x75, 0x05, 0x4c, 0xd5, 0x05, 0xbb, 0xc8, 0x96, 0x5d, 0x64, 0x9a, 0x1b, 0xae, 0x7b, 0xb6, 0x64, 0x3c, 0xb7, 0x41, 0x95, 0xe9, 0x1c, 0x51, 0xf4, 0x18, 0x3d, 0xb2, 0xd7, 0x38, 0xce, 0x60, 0x35, 0x50, 0xd6, 0x34, 0xe6, 0xdd, 0x4f, 0x27, 0xf4, 0xda, 0xac, 0x61, 0x56, 0xcf, 0xa7, 0xe2, 0x46, 0x8b, 0x5d, 0x6a, 0xeb, 0x78, 0x29, 0x09 } -, - /* Signature */ - 129, - { 0x00, 0xc2, 0xe0, 0x74, 0xdf, 0xbc, 0xd0, 0xe7, 0x3a, 0xc0, 0x02, 0x1a, 0xeb, 0x99, 0x33, 0x10, 0x6b, 0x20, 0x1b, 0x93, 0xc1, 0x7a, 0x7b, 0xf9, 0x33, 0x56, 0xd2, 0x91, 0xfb, 0x4a, 0xae, 0xb3, 0xd1, 0x31, 0x63, 0x00, 0xa8, 0xde, 0x7b, 0x07, 0xe3, 0xd7, 0x79, 0xbc, 0xc2, 0x99, 0xe5, 0x2b, 0x6c, 0xb0, 0x30, 0x88, 0x01, 0x6d, 0xae, 0xb8, 0x41, 0x38, 0x2e, 0xb3, 0x43, 0x5f, 0x2e, 0x03, 0xeb, 0xf2, 0x2d, 0xc0, 0x86, 0xfb, 0x20, 0xeb, 0xe5, 0x3a, 0xc5, 0x45, 0x90, 0x24, 0x97, 0x63, 0xa2, 0x65, 0x5a, 0xa7, 0xeb, 0x0e, 0x7d, 0x38, 0x64, 0x93, 0x6b, 0x34, 0x00, 0x6a, 0x6c, 0x4f, 0xa0, 0x2d, 0x9c, 0xa1, 0x04, 0xad, 0xad, 0xa6, 0xaa, 0x01, 0xb9, 0x77, 0xb6, 0xde, 0xf2, 0x75, 0x06, 0x08, 0xa7, 0x8f, 0x3e, 0xd8, 0x3a, 0xd7, 0x12, 0xa7, 0xa1, 0xb0, 0xfb, 0xde, 0x7c, 0x7c, 0x8d } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.7", - /* Message to be signed */ - 64, - { 0x83, 0xa4, 0x8b, 0xff, 0x88, 0x6d, 0x1d, 0x68, 0xf2, 0x92, 0x0a, 0x0e, 0xcf, 0xf2, 0x98, 0x32, 0x1a, 0x96, 0xf5, 0xca, 0xdc, 0xdf, 0xd8, 0xbe, 0x16, 0xb5, 0x0d, 0x34, 0xd6, 0x7d, 0x94, 0xcd, 0xb1, 0xa1, 0xbf, 0xa0, 0xea, 0xe2, 0x46, 0x99, 0xb6, 0x63, 0xc7, 0xba, 0x3a, 0x08, 0xa3, 0x90, 0xf7, 0x22, 0x58, 0x84, 0x85, 0x67, 0x94, 0xd1, 0x80, 0xc5, 0x46, 0xca, 0xc0, 0x6e, 0x41, 0x18 } -, - /* Signature */ - 129, - { 0x01, 0x2e, 0x81, 0xbd, 0x38, 0x63, 0x50, 0x65, 0xbf, 0x65, 0x54, 0x33, 0x6b, 0x00, 0xd1, 0x06, 0x18, 0x33, 0x05, 0x53, 0xe0, 0xe8, 0x08, 0x78, 0xaa, 0xd3, 0x55, 0xf0, 0x0d, 0x59, 0x40, 0xd8, 0xba, 0x45, 0x01, 0xc5, 0xc4, 0x9f, 0x10, 0x16, 0xd5, 0xf0, 0xe6, 0xa7, 0x3a, 0x4d, 0x9f, 0x87, 0x40, 0xd2, 0xcf, 0xc2, 0x5e, 0xa2, 0x48, 0xdf, 0x3f, 0x7b, 0x1a, 0xe8, 0xfc, 0xd2, 0x6b, 0xd5, 0x62, 0xe0, 0xf6, 0xeb, 0x77, 0x7f, 0x46, 0xd7, 0x57, 0x30, 0x69, 0xdb, 0x89, 0x07, 0xc0, 0x21, 0xb6, 0x45, 0xd3, 0xb2, 0x40, 0x58, 0x47, 0x51, 0x99, 0xa9, 0x1b, 0x55, 0x72, 0xd8, 0xac, 0x87, 0xf8, 0x3e, 0xe6, 0xaf, 0x5c, 0xf9, 0xe1, 0x71, 0xa8, 0x58, 0xf6, 0x0d, 0x2b, 0x81, 0x40, 0xf5, 0x2d, 0xae, 0xd6, 0x84, 0x42, 0x22, 0x8b, 0x4f, 0xff, 0xd8, 0xde, 0x40, 0x07, 0x8d, 0x3d, 0xe8, 0xcb } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.8", - /* Message to be signed */ - 1, - { 0x18 } -, - /* Signature */ - 129, - { 0x00, 0xf2, 0xc2, 0x99, 0x02, 0x4a, 0xb7, 0xbd, 0x25, 0x2c, 0x69, 0x46, 0xbe, 0xa1, 0x0d, 0xc0, 0x53, 0x97, 0x38, 0x98, 0xbd, 0x5f, 0x0e, 0x3c, 0x94, 0x60, 0xe6, 0xfe, 0x09, 0xd7, 0xd1, 0x91, 0xe7, 0x1b, 0xf7, 0x9d, 0x43, 0x6c, 0xaa, 0x84, 0xe9, 0x86, 0xbe, 0x3f, 0xc0, 0x98, 0x19, 0xc0, 0x80, 0xe5, 0x6a, 0x08, 0x5c, 0xf4, 0x24, 0x41, 0x4a, 0xf3, 0xfc, 0x70, 0x07, 0xcf, 0x1a, 0xc3, 0x6f, 0x1c, 0xf8, 0x63, 0x57, 0x80, 0xb5, 0x56, 0x8d, 0x73, 0x4a, 0xd6, 0xd8, 0x1a, 0x2b, 0xa8, 0xeb, 0x18, 0x8b, 0x29, 0x46, 0x69, 0xd8, 0x71, 0xca, 0x40, 0xe6, 0x08, 0xf0, 0xed, 0x33, 0xd5, 0x69, 0x0c, 0xc6, 0x15, 0x70, 0xc5, 0xb8, 0x47, 0xeb, 0xdb, 0xdc, 0xdc, 0x4f, 0xa7, 0x8f, 0x42, 0x9e, 0xfc, 0xe1, 0x3c, 0x67, 0x47, 0xe5, 0x4d, 0x6f, 0x26, 0x1b, 0x04, 0x55, 0xd6, 0xdd, 0x65, 0xc2 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.9", - /* Message to be signed */ - 40, - { 0x04, 0xa6, 0xe2, 0x4b, 0x93, 0xc2, 0xe5, 0xf6, 0xb4, 0xbb, 0xe0, 0x5f, 0x5f, 0xb0, 0xaf, 0xa0, 0x42, 0xd2, 0x04, 0xfe, 0x33, 0x78, 0xd3, 0x65, 0xc2, 0xf2, 0x88, 0xb6, 0xa8, 0xda, 0xd7, 0xef, 0xe4, 0x5d, 0x15, 0x3e, 0xef, 0x40, 0xca, 0xcc } -, - /* Signature */ - 129, - { 0x00, 0xec, 0xc8, 0x95, 0xfb, 0xd9, 0x47, 0xe2, 0xdf, 0xc4, 0x7c, 0x03, 0xba, 0x2e, 0x99, 0x3d, 0x1a, 0x14, 0x3a, 0x7a, 0x6a, 0xd6, 0x3a, 0x91, 0x6e, 0xd5, 0x44, 0x83, 0xce, 0x26, 0x38, 0x9f, 0x89, 0xd5, 0x80, 0xf4, 0xed, 0xbd, 0xd0, 0xb3, 0x7e, 0x08, 0xca, 0xaa, 0x5a, 0x0c, 0x1e, 0x52, 0x6e, 0x1e, 0x9a, 0x1a, 0x8c, 0x0d, 0xc9, 0xcf, 0x50, 0xed, 0x77, 0xde, 0x26, 0x76, 0x46, 0x0d, 0x28, 0x8d, 0xce, 0x56, 0x5f, 0x12, 0x8a, 0x26, 0x6e, 0xa2, 0x9b, 0x4e, 0xcc, 0x32, 0x9a, 0x94, 0xcc, 0x25, 0x23, 0x96, 0xdc, 0x50, 0xd5, 0xc0, 0xa1, 0x3d, 0x80, 0x93, 0x81, 0xfa, 0xd8, 0x8a, 0x07, 0x89, 0xad, 0x4f, 0x56, 0xaa, 0x77, 0xe5, 0x44, 0xec, 0x25, 0x70, 0xaf, 0x99, 0x18, 0xb7, 0xf7, 0x41, 0xb4, 0x86, 0xca, 0x50, 0xb3, 0x38, 0x4a, 0xd1, 0x12, 0x40, 0x60, 0x59, 0x16, 0x85, 0xa1 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.10", - /* Message to be signed */ - 229, - { 0x99, 0x65, 0xbd, 0xa5, 0x5c, 0xbf, 0x0e, 0xfe, 0xd8, 0xd6, 0x55, 0x3b, 0x40, 0x27, 0xf2, 0xd8, 0x62, 0x08, 0xa6, 0xe6, 0xb4, 0x89, 0xc1, 0x76, 0x12, 0x80, 0x92, 0xd6, 0x29, 0xe4, 0x9d, 0x16, 0x9f, 0x16, 0xfe, 0x51, 0xc4, 0xc0, 0x8a, 0x64, 0x94, 0xb5, 0x00, 0x73, 0x62, 0x20, 0x91, 0xa3, 0x82, 0x2e, 0xa5, 0x7c, 0x32, 0x8b, 0xd9, 0xb6, 0x9d, 0x24, 0x65, 0xa2, 0x12, 0x2a, 0xf1, 0x78, 0xbf, 0x6b, 0x1b, 0xe3, 0x07, 0xee, 0x4c, 0x31, 0x47, 0x9f, 0xfd, 0x9f, 0x4d, 0x11, 0xf3, 0x3e, 0xa2, 0x0b, 0x7a, 0xec, 0xe8, 0x12, 0xca, 0xb4, 0xee, 0xdd, 0x46, 0x99, 0x31, 0x51, 0xd5, 0x68, 0xff, 0x64, 0xa1, 0x67, 0x04, 0xa5, 0x5d, 0x95, 0x0a, 0xb7, 0x79, 0x1a, 0xa2, 0x3b, 0x26, 0xa0, 0xa8, 0xaf, 0x88, 0x0f, 0x6f, 0x80, 0x56, 0xbd, 0xd2, 0x06, 0x83, 0x8b, 0x44, 0xc6, 0x07, 0xb6, 0x61, 0xb4, 0xf1, 0xdc, 0x36, 0x21, 0x06, 0x5f, 0xde, 0xd3, 0xdb, 0x6f, 0x9e, 0x3f, 0x2d, 0xc8, 0xf4, 0x00, 0xef, 0xe3, 0xc2, 0xaf, 0xa6, 0xc0, 0x27, 0x99, 0x40, 0x57, 0x6b, 0xb0, 0x5e, 0x39, 0x80, 0x4b, 0xd3, 0x50, 0x5f, 0x4b, 0xd2, 0x82, 0x52, 0x91, 0x8b, 0x28, 0xe7, 0x4e, 0x05, 0x8f, 0x24, 0xf2, 0x7e, 0xf0, 0xdb, 0x3d, 0x0d, 0xcf, 0x9e, 0xb2, 0x9d, 0x41, 0xff, 0xc1, 0x10, 0x07, 0xce, 0x86, 0xb9, 0x82, 0xe8, 0x9c, 0x03, 0x75, 0xbd, 0x99, 0x76, 0xa5, 0xaf, 0x13, 0x1a, 0x61, 0x4d, 0x28, 0x08, 0xba, 0x25, 0x07, 0x9d, 0x97, 0x7f, 0x0b, 0x23, 0x97, 0x96, 0xba, 0x6b, 0x1b, 0xcd, 0x5e, 0x85, 0x5d, 0x96 } -, - /* Signature */ - 129, - { 0x01, 0x56, 0x62, 0xe3, 0x0e, 0x79, 0x0e, 0x37, 0x86, 0x83, 0x81, 0xb4, 0xf6, 0x77, 0xa2, 0xae, 0xd6, 0xb2, 0xac, 0xc5, 0x64, 0x49, 0x17, 0x31, 0x82, 0x49, 0x10, 0xed, 0x80, 0xad, 0xc4, 0x77, 0x15, 0x9c, 0x88, 0x61, 0x8c, 0xc7, 0xd0, 0xbe, 0xb0, 0x49, 0xb1, 0xaa, 0xe7, 0x4b, 0x17, 0x21, 0xe9, 0x0b, 0xa7, 0xf7, 0xb0, 0xea, 0x26, 0xbf, 0x33, 0xad, 0x04, 0xf8, 0x6f, 0xf3, 0x14, 0x38, 0x97, 0xbf, 0x0d, 0x4e, 0xb4, 0x5e, 0xb7, 0xde, 0xb5, 0x44, 0x11, 0xba, 0x96, 0x80, 0xaa, 0xb1, 0x3a, 0xdb, 0xfc, 0xf1, 0x8a, 0xf4, 0x6b, 0x87, 0xfc, 0xb1, 0x46, 0x1c, 0x26, 0x20, 0x6a, 0x95, 0x3b, 0xc3, 0xcd, 0xbb, 0x31, 0xe2, 0x96, 0xea, 0x09, 0x02, 0x4b, 0xc5, 0xc7, 0xb6, 0x2d, 0xe6, 0xc6, 0x9c, 0x14, 0xbf, 0xcf, 0xeb, 0x56, 0x39, 0x1a, 0x9e, 0xf5, 0x8c, 0xd8, 0x05, 0xeb, 0x63, 0x1f } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.11", - /* Message to be signed */ - 186, - { 0x71, 0xc7, 0xb1, 0x8b, 0x4a, 0xa8, 0xea, 0x53, 0x89, 0xad, 0x78, 0x49, 0x23, 0x28, 0x65, 0xbe, 0x2a, 0x93, 0xe3, 0x47, 0xa1, 0x68, 0xd2, 0x5c, 0x6c, 0x6e, 0xa2, 0x43, 0x9c, 0x1c, 0xc8, 0x0b, 0xb0, 0xb7, 0x22, 0x3b, 0xe9, 0xc8, 0x93, 0x71, 0x22, 0x84, 0x5b, 0xb0, 0xa3, 0x9c, 0x02, 0x5c, 0x43, 0x75, 0x9d, 0xef, 0xe6, 0xe4, 0xe8, 0xeb, 0x3b, 0xaa, 0xb4, 0xf1, 0xeb, 0xdc, 0xa2, 0xc8, 0xad, 0x12, 0xa4, 0x65, 0xa3, 0x0f, 0x8a, 0x65, 0x25, 0xb1, 0x20, 0xef, 0x6a, 0xae, 0xc9, 0xbd, 0xdb, 0x45, 0xcd, 0x42, 0xc0, 0x15, 0x0c, 0x40, 0x7b, 0x04, 0x8e, 0xdf, 0x65, 0x19, 0x94, 0x92, 0xf2, 0x07, 0xca, 0x01, 0xaa, 0xa5, 0x54, 0x3a, 0xf3, 0x8e, 0xe9, 0x8d, 0x53, 0xbd, 0x10, 0xd8, 0xee, 0xbc, 0x3b, 0x64, 0x97, 0x7e, 0x75, 0x75, 0x1d, 0x74, 0x50, 0xdd, 0xb1, 0xc0, 0xe1, 0xfc, 0x24, 0xda, 0x17, 0x18, 0x81, 0x1f, 0xbe, 0x9b, 0x0a, 0xbf, 0xc3, 0xca, 0x31, 0xe6, 0x99, 0x5f, 0xc7, 0x34, 0x90, 0x73, 0xe2, 0x17, 0xb3, 0x7e, 0x23, 0xc5, 0xf1, 0x7a, 0x8b, 0x7a, 0x3f, 0x00, 0x48, 0x6a, 0x37, 0x02, 0xb9, 0x51, 0x0d, 0x6f, 0x05, 0x1b, 0x27, 0x61, 0x71, 0x6e, 0x32, 0xc6, 0x2b, 0xb5, 0x93, 0x9b, 0x2f, 0xb1, 0x1a, 0xcb, 0x1c, 0x83 } -, - /* Signature */ - 129, - { 0x01, 0x3a, 0xb6, 0x3a, 0xb1, 0x83, 0x35, 0x3a, 0x23, 0x5f, 0xb8, 0x93, 0xab, 0x4c, 0x35, 0xd6, 0x40, 0x9c, 0x21, 0x84, 0x9d, 0xcf, 0xcd, 0xa3, 0xbf, 0xda, 0x14, 0x29, 0xfe, 0xe7, 0x42, 0xa7, 0xd8, 0x16, 0x0f, 0xd3, 0xc8, 0x3b, 0x38, 0x53, 0xa3, 0x33, 0xf9, 0x51, 0x53, 0x9b, 0xb5, 0x77, 0x1f, 0x4d, 0x0f, 0xe1, 0x3a, 0xde, 0xb6, 0x4e, 0x40, 0x30, 0xb9, 0x2e, 0x8b, 0x08, 0x13, 0xeb, 0x52, 0xb1, 0xaa, 0x33, 0xbd, 0x94, 0xc5, 0xb8, 0xbc, 0x1b, 0xbc, 0xcd, 0xf6, 0xc1, 0xdf, 0x0b, 0xa6, 0x70, 0x71, 0x7c, 0x0c, 0xf6, 0xfd, 0x48, 0x5b, 0xe2, 0xfe, 0x9e, 0x16, 0x81, 0x3b, 0xe8, 0xcd, 0xd5, 0x80, 0xe6, 0x10, 0x86, 0x67, 0x5e, 0x31, 0x83, 0x1c, 0x92, 0x4a, 0x41, 0xd4, 0x67, 0x1a, 0x95, 0xd8, 0x35, 0xe3, 0xfc, 0xa4, 0x95, 0xe8, 0x86, 0x58, 0xd1, 0xe5, 0x70, 0xe6, 0x28, 0xc7 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.12", - /* Message to be signed */ - 111, - { 0x0b, 0xeb, 0x19, 0xb5, 0x62, 0x92, 0x8c, 0x27, 0x1b, 0xb7, 0x06, 0x18, 0x9e, 0x43, 0xcf, 0xa5, 0x7b, 0xe7, 0x6b, 0x2f, 0x7a, 0x83, 0xe0, 0x2a, 0xa2, 0xcc, 0xb0, 0x37, 0xc0, 0xf4, 0xf7, 0xf7, 0x31, 0x62, 0xd6, 0xc2, 0x6f, 0x70, 0xde, 0x97, 0x18, 0x21, 0xe7, 0xb9, 0x66, 0x5c, 0xb9, 0x31, 0xbb, 0x0e, 0xac, 0x82, 0x0b, 0xf8, 0x59, 0x98, 0x4d, 0xb4, 0xbe, 0xef, 0xef, 0x4a, 0xb8, 0x8e, 0x91, 0x63, 0x1c, 0x0c, 0xd3, 0x1d, 0xb7, 0xf9, 0x35, 0x8a, 0x5a, 0xa1, 0xdf, 0xf2, 0x40, 0x6b, 0x45, 0xf9, 0xbd, 0xcb, 0xef, 0x20, 0xd5, 0x5c, 0x28, 0x2b, 0xae, 0x5c, 0xfb, 0x61, 0x06, 0x02, 0x3b, 0x56, 0x33, 0xc0, 0x51, 0xaf, 0x17, 0xe7, 0x29, 0xbb, 0x07, 0xc9, 0xaf, 0x6d, 0xd2 } -, - /* Signature */ - 129, - { 0x00, 0xd6, 0x3d, 0xa4, 0xd5, 0xd3, 0xe2, 0x28, 0x4a, 0x19, 0x2a, 0x6a, 0x9d, 0xa3, 0xf1, 0xa7, 0xd3, 0xfc, 0xc1, 0x64, 0xb9, 0xfc, 0x3d, 0xfd, 0x74, 0x52, 0xb0, 0x2f, 0xed, 0x6e, 0xf1, 0xbe, 0x5a, 0xd2, 0xa7, 0x69, 0xec, 0x9c, 0x36, 0x05, 0x9b, 0x71, 0x91, 0x1c, 0xcf, 0x7a, 0xb7, 0x1c, 0xe3, 0x09, 0x87, 0xec, 0x47, 0xbb, 0xf5, 0x5e, 0x6d, 0x46, 0x30, 0xd6, 0x23, 0x42, 0xb3, 0x15, 0x50, 0x48, 0xee, 0x0b, 0xf4, 0x3d, 0x24, 0xfe, 0x69, 0xab, 0xda, 0xc1, 0x2f, 0x79, 0x4b, 0x67, 0x98, 0xbd, 0x1a, 0x7c, 0xb4, 0x89, 0xa6, 0x4c, 0xe0, 0x82, 0x25, 0x4c, 0x3d, 0x92, 0xf4, 0x75, 0x56, 0x6b, 0x56, 0x40, 0x0d, 0x96, 0x20, 0xcd, 0xfd, 0x63, 0xfc, 0x17, 0xc1, 0x93, 0xc4, 0x25, 0xd7, 0xed, 0xe9, 0x41, 0xf7, 0x6d, 0xa1, 0xe3, 0x45, 0xaf, 0x0e, 0x2a, 0x8b, 0x88, 0x44, 0xc7, 0x40 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.13", - /* Message to be signed */ - 12, - { 0x02, 0x87, 0xab, 0xe2, 0x67, 0x0a, 0x45, 0xf8, 0x77, 0x90, 0x48, 0xf5 } -, - /* Signature */ - 129, - { 0x00, 0x42, 0xf4, 0x14, 0x78, 0x2d, 0xf6, 0x5d, 0x93, 0x47, 0xbf, 0x1c, 0xad, 0x53, 0x48, 0x53, 0x74, 0x6c, 0xc0, 0xb8, 0x53, 0xc1, 0xc5, 0x26, 0xf9, 0x17, 0x14, 0x45, 0xfc, 0xfa, 0xa4, 0x99, 0x1a, 0x70, 0xf5, 0xa8, 0x44, 0x5b, 0xcf, 0x41, 0x14, 0xf0, 0x7f, 0xc8, 0x35, 0x4c, 0x84, 0xa9, 0x3b, 0x94, 0x37, 0x33, 0xd3, 0x93, 0x7a, 0x59, 0x88, 0x3b, 0x89, 0x6c, 0xe6, 0x5f, 0xdb, 0x16, 0x5b, 0x1e, 0x30, 0x55, 0x37, 0x4c, 0xe2, 0x42, 0xe1, 0x26, 0x8c, 0x16, 0x41, 0xcc, 0x44, 0x3b, 0xb9, 0xe7, 0xda, 0x7f, 0x71, 0xf3, 0xe7, 0xf6, 0x31, 0x3f, 0x23, 0x9e, 0x62, 0x00, 0xe7, 0x9a, 0x1b, 0xe3, 0xea, 0xd6, 0xc3, 0x6e, 0x94, 0x1f, 0x24, 0x46, 0x0b, 0xaa, 0x57, 0xdf, 0x63, 0x9e, 0x57, 0xda, 0xb3, 0xef, 0xf9, 0xe7, 0x7b, 0x87, 0xaf, 0x35, 0x5b, 0x83, 0xda, 0xe7, 0x7c, 0xbe, 0x06 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.14", - /* Message to be signed */ - 91, - { 0x3f, 0x49, 0x54, 0x2c, 0x0e, 0x9f, 0x50, 0x93, 0x2c, 0x0d, 0x45, 0x3d, 0xc9, 0x53, 0x20, 0xaf, 0x21, 0xdd, 0x2b, 0xd1, 0x72, 0x9c, 0x29, 0xf4, 0xf0, 0x8c, 0x70, 0x94, 0x4c, 0x2c, 0xc7, 0x5d, 0xe9, 0x16, 0x6b, 0x4f, 0xd2, 0x30, 0xaa, 0x93, 0x70, 0x2c, 0x5f, 0x2c, 0x3d, 0x9c, 0x29, 0x9a, 0x35, 0x91, 0x02, 0x57, 0x00, 0x33, 0x54, 0x0e, 0xb8, 0x28, 0xca, 0xd7, 0x5a, 0x57, 0x76, 0xd2, 0xe8, 0xcb, 0x45, 0x61, 0x41, 0xa6, 0xfa, 0x97, 0xbc, 0x4e, 0x6e, 0x62, 0xd3, 0xdf, 0x08, 0x29, 0x82, 0xa4, 0xd9, 0x8c, 0x2d, 0xe4, 0x41, 0xe5, 0x9e, 0x93, 0x12 } -, - /* Signature */ - 129, - { 0x01, 0x5c, 0x39, 0x93, 0xce, 0xeb, 0xd8, 0xdb, 0xa4, 0x5a, 0x36, 0x8d, 0xd4, 0x05, 0xaf, 0x8a, 0x53, 0xb9, 0x3e, 0x82, 0x70, 0x19, 0xf9, 0x94, 0xe4, 0xed, 0x78, 0x2c, 0x39, 0x11, 0xb9, 0xb5, 0x80, 0xd5, 0x42, 0x24, 0x26, 0x9b, 0x79, 0x97, 0xf1, 0x74, 0x96, 0x30, 0xe5, 0x2f, 0x22, 0x1f, 0xaf, 0xab, 0x96, 0x41, 0xc7, 0x81, 0xe7, 0x04, 0x4d, 0x32, 0x56, 0xe2, 0xe4, 0x4e, 0x14, 0x37, 0x91, 0x72, 0x32, 0x69, 0x45, 0x18, 0xba, 0x9e, 0x71, 0x38, 0xda, 0x47, 0xfe, 0x53, 0x43, 0x29, 0xb8, 0xc9, 0x68, 0x9e, 0x27, 0x85, 0xc0, 0x2b, 0x60, 0x3d, 0xd1, 0x60, 0xd3, 0x73, 0x36, 0xa2, 0xb0, 0x5b, 0xe0, 0x47, 0x82, 0x65, 0x9a, 0xc0, 0xe9, 0x67, 0x1f, 0xe9, 0x32, 0xea, 0x80, 0x91, 0xd6, 0x13, 0x18, 0xb2, 0xb2, 0x01, 0xbd, 0xa7, 0x9a, 0xf6, 0xc0, 0xc4, 0x44, 0x69, 0x38, 0xe3, 0xf6 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.15", - /* Message to be signed */ - 221, - { 0xd0, 0xdb, 0xc9, 0x6c, 0xf9, 0xbf, 0xb1, 0xe3, 0xcd, 0x6d, 0xe2, 0xea, 0xa0, 0x8d, 0x6d, 0x79, 0x5b, 0xed, 0x81, 0x87, 0xce, 0xb0, 0x85, 0x65, 0x80, 0xe4, 0xb1, 0x42, 0xb9, 0xae, 0x60, 0xa0, 0x98, 0xcd, 0x42, 0x98, 0x4e, 0x8d, 0xbf, 0x1d, 0x05, 0xa0, 0xc0, 0xab, 0x83, 0x51, 0x54, 0x8f, 0x0a, 0x13, 0x64, 0x6f, 0x33, 0x39, 0x0b, 0x2b, 0xb0, 0xc8, 0x64, 0xb3, 0x97, 0xcf, 0x13, 0x37, 0x1f, 0x8b, 0x2f, 0x67, 0x5a, 0x82, 0xe4, 0x6b, 0xf1, 0x6c, 0x4a, 0xfc, 0x60, 0x5e, 0xe3, 0xe5, 0xa1, 0x46, 0x9c, 0xac, 0x51, 0xfa, 0x73, 0x4b, 0x44, 0x65, 0xd4, 0xc1, 0x3d, 0x5b, 0x2d, 0xd1, 0x2e, 0xed, 0xa5, 0x4e, 0x7d, 0x08, 0x1c, 0xd9, 0xe3, 0xea, 0xaf, 0x9e, 0x57, 0xdb, 0x42, 0x20, 0x20, 0xa0, 0xb5, 0xa5, 0xec, 0x28, 0xca, 0x43, 0x97, 0x7a, 0x5d, 0x67, 0x6f, 0xfa, 0xb6, 0x2f, 0x78, 0x10, 0x71, 0x93, 0x59, 0x41, 0x59, 0xce, 0xbf, 0xbd, 0x86, 0x26, 0x98, 0x19, 0xa0, 0xf3, 0x41, 0xa0, 0xf4, 0x12, 0x84, 0xdd, 0x0a, 0x73, 0xca, 0x80, 0x14, 0xd2, 0xe0, 0xb8, 0x01, 0x79, 0xc6, 0x38, 0x0b, 0x40, 0x3a, 0xfb, 0xb1, 0x1b, 0x42, 0xdb, 0x34, 0x9b, 0xaf, 0xd7, 0x57, 0x0f, 0xbe, 0xcb, 0xd1, 0x4b, 0xd0, 0xc2, 0x1a, 0xd6, 0x41, 0x68, 0x7a, 0x6a, 0xc3, 0x29, 0x25, 0xf7, 0x03, 0x1a, 0x24, 0xa6, 0x56, 0x8a, 0xb9, 0xe2, 0x87, 0xeb, 0x80, 0x75, 0x41, 0x10, 0xdf, 0xba, 0x68, 0x8a, 0x59, 0x63, 0x25, 0xbc, 0xac, 0x4a, 0x39, 0xce, 0x8b, 0x84, 0xa4 } -, - /* Signature */ - 129, - { 0x00, 0x8c, 0xc8, 0x2d, 0x64, 0x55, 0x9d, 0xe0, 0x04, 0x0f, 0x55, 0x41, 0x19, 0x9a, 0xef, 0xf3, 0x99, 0x9f, 0xe2, 0xf0, 0x86, 0xf1, 0x57, 0xff, 0x51, 0xf2, 0x22, 0x0d, 0xb3, 0x45, 0x51, 0x9a, 0xa1, 0x14, 0xb0, 0x17, 0x62, 0xe7, 0x0b, 0xc9, 0x65, 0x83, 0xbb, 0x38, 0xb2, 0x2b, 0x3f, 0x87, 0xbe, 0xab, 0x32, 0xe2, 0x3a, 0x3d, 0xeb, 0xdb, 0x8a, 0x59, 0x54, 0x29, 0xff, 0x12, 0xfa, 0xd4, 0x95, 0xd7, 0x4e, 0x22, 0x0e, 0x4f, 0x7d, 0xca, 0x22, 0x27, 0x28, 0x43, 0x89, 0x9e, 0x81, 0x04, 0xc6, 0x9a, 0x59, 0x64, 0x2f, 0x6f, 0xa8, 0x25, 0x89, 0x0f, 0xe8, 0x13, 0x2a, 0x0f, 0x79, 0x94, 0x02, 0x53, 0xe5, 0x00, 0x7f, 0xb1, 0x17, 0x7a, 0x5b, 0xf4, 0x18, 0x06, 0x7e, 0xdd, 0xc8, 0xd3, 0x2c, 0x5e, 0x59, 0x35, 0xbf, 0x33, 0x8f, 0x1c, 0x69, 0x0e, 0xfc, 0x80, 0x11, 0xdc, 0x8c, 0x84, 0x2e } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.16", - /* Message to be signed */ - 230, - { 0x7d, 0xf0, 0x23, 0x6e, 0x87, 0x1a, 0x71, 0xc3, 0x17, 0x90, 0xeb, 0x5f, 0x01, 0x1c, 0x91, 0x1c, 0x27, 0xc6, 0x03, 0x73, 0xb8, 0xdc, 0x9e, 0xbb, 0x13, 0xac, 0x85, 0xac, 0xcb, 0x3b, 0xcb, 0xd3, 0xb4, 0x74, 0xf9, 0x78, 0x86, 0x2d, 0xd8, 0x42, 0x02, 0xab, 0x20, 0xb3, 0x34, 0x73, 0x94, 0x25, 0xe1, 0xb7, 0x9e, 0x0b, 0xb8, 0xb4, 0xbc, 0x47, 0xdc, 0x71, 0x53, 0xf5, 0x7a, 0xda, 0x04, 0x12, 0x44, 0x7b, 0xf5, 0xa5, 0xe6, 0x67, 0x34, 0x19, 0xba, 0xad, 0x65, 0x3e, 0x5f, 0x5c, 0x39, 0xe2, 0xef, 0x7c, 0xfe, 0x7e, 0xf4, 0x77, 0x8a, 0xb9, 0x98, 0xca, 0xf9, 0x7c, 0xe1, 0x6c, 0x58, 0x33, 0x27, 0x72, 0xdd, 0xdf, 0x82, 0x6f, 0x1e, 0xec, 0x1a, 0xf3, 0xdb, 0x80, 0xe3, 0x13, 0x75, 0xd6, 0x68, 0x0a, 0xa2, 0x54, 0xb4, 0xab, 0x6e, 0xf9, 0xa3, 0xec, 0x0e, 0x04, 0x03, 0xe4, 0xb5, 0x83, 0xd3, 0x71, 0xdd, 0xd9, 0x6d, 0xd5, 0x7b, 0x2c, 0x61, 0xa6, 0xe4, 0x01, 0x25, 0x1a, 0x1a, 0x63, 0x0d, 0x1d, 0xdc, 0xdd, 0x84, 0xd9, 0x0d, 0x82, 0xfa, 0xf5, 0xa0, 0x18, 0xd2, 0xa8, 0x8e, 0x26, 0x58, 0x55, 0xe9, 0xd7, 0xca, 0x36, 0xc6, 0x87, 0x95, 0xf0, 0xb3, 0x1b, 0x59, 0x1c, 0xd6, 0x58, 0x7c, 0x71, 0xd0, 0x60, 0xa0, 0xb3, 0xf7, 0xf3, 0xea, 0xef, 0x43, 0x79, 0x59, 0x22, 0x02, 0x8b, 0xc2, 0xb6, 0xad, 0x46, 0x7c, 0xfc, 0x2d, 0x7f, 0x65, 0x9c, 0x53, 0x85, 0xaa, 0x70, 0xba, 0x36, 0x72, 0xcd, 0xde, 0x4c, 0xfe, 0x49, 0x70, 0xcc, 0x79, 0x04, 0x60, 0x1b, 0x27, 0x88, 0x72, 0xbf, 0x51, 0x32, 0x1c, 0x4a, 0x97, 0x2f } -, - /* Signature */ - 129, - { 0x01, 0x45, 0x5e, 0x3b, 0xb2, 0x9c, 0xbc, 0xa8, 0x83, 0x9b, 0x9f, 0x54, 0x4d, 0x51, 0x47, 0x2e, 0xbc, 0xfd, 0x25, 0xc2, 0x92, 0x27, 0xc4, 0x65, 0x5d, 0x5f, 0x7e, 0xbb, 0xd8, 0x3c, 0x48, 0xe7, 0x64, 0x3e, 0x7b, 0x59, 0x4d, 0x6f, 0x7c, 0xd5, 0xf6, 0xbf, 0x9a, 0x40, 0xb0, 0x5c, 0x4a, 0x05, 0xcb, 0xee, 0x1f, 0xd6, 0x59, 0xd3, 0xce, 0xde, 0x3e, 0x7c, 0xad, 0x61, 0xe6, 0xfd, 0xf8, 0xf0, 0xe4, 0xfd, 0xef, 0x08, 0x12, 0xa8, 0x53, 0x90, 0x8f, 0x0f, 0x99, 0xca, 0x7e, 0x38, 0x8e, 0xbc, 0x19, 0xe8, 0x74, 0x76, 0x5b, 0x11, 0x64, 0x0f, 0x1e, 0xe1, 0xe9, 0x8f, 0x54, 0x95, 0x3d, 0xe6, 0x17, 0x6f, 0x15, 0x82, 0x03, 0x70, 0x17, 0xc8, 0x38, 0x60, 0x9a, 0x57, 0xa1, 0x2a, 0xcb, 0xaf, 0xa6, 0xa5, 0x65, 0x47, 0xf5, 0x7d, 0x62, 0xdb, 0xe8, 0x76, 0x69, 0xed, 0xc0, 0xfe, 0x3b, 0xaa, 0xda } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.17", - /* Message to be signed */ - 144, - { 0x12, 0x88, 0xc0, 0x3f, 0x95, 0x00, 0x6e, 0xa3, 0x2f, 0x56, 0x2d, 0x40, 0xd5, 0x2a, 0xf9, 0xfe, 0xb3, 0x2f, 0x0f, 0xa0, 0x6d, 0xb6, 0x5b, 0x58, 0x8a, 0x23, 0x7b, 0x34, 0xe5, 0x92, 0xd5, 0x5c, 0xf9, 0x79, 0xf9, 0x03, 0xa6, 0x42, 0xef, 0x64, 0xd2, 0xed, 0x54, 0x2a, 0xa8, 0xc7, 0x7d, 0xc1, 0xdd, 0x76, 0x2f, 0x45, 0xa5, 0x93, 0x03, 0xed, 0x75, 0xe5, 0x41, 0xca, 0x27, 0x1e, 0x2b, 0x60, 0xca, 0x70, 0x9e, 0x44, 0xfa, 0x06, 0x61, 0x13, 0x1e, 0x8d, 0x5d, 0x41, 0x63, 0xfd, 0x8d, 0x39, 0x85, 0x66, 0xce, 0x26, 0xde, 0x87, 0x30, 0xe7, 0x2f, 0x9c, 0xca, 0x73, 0x76, 0x41, 0xc2, 0x44, 0x15, 0x94, 0x20, 0x63, 0x70, 0x28, 0xdf, 0x0a, 0x18, 0x07, 0x9d, 0x62, 0x08, 0xea, 0x8b, 0x47, 0x11, 0xa2, 0xc7, 0x50, 0xf5, 0xc0, 0xa4, 0x25, 0x31, 0x3d, 0xf8, 0xd7, 0x56, 0x4b, 0xd2, 0x43, 0x4d, 0x31, 0x15, 0x23, 0xd5, 0x25, 0x7e, 0xed, 0x80, 0x6a, 0xc8, 0xc9, 0xc6, 0xaf, 0x04, 0xac } -, - /* Signature */ - 129, - { 0x00, 0x6b, 0xeb, 0xb9, 0x6f, 0x0e, 0x28, 0x2f, 0x1b, 0x4d, 0x03, 0xe6, 0xc5, 0x65, 0x05, 0xb9, 0x37, 0x78, 0xda, 0x9f, 0x49, 0x36, 0x50, 0xe8, 0xaa, 0xeb, 0x65, 0xcf, 0xe6, 0x28, 0x50, 0x04, 0x2f, 0x75, 0xab, 0xe6, 0xe6, 0xea, 0xfe, 0xb9, 0xa7, 0x0a, 0xbd, 0x21, 0xeb, 0x5d, 0xba, 0x73, 0xcb, 0xb8, 0x7c, 0x12, 0x98, 0x0a, 0xac, 0xdf, 0x16, 0x71, 0x6b, 0x19, 0x98, 0xc9, 0x49, 0x9c, 0xe4, 0x39, 0xc5, 0x4a, 0xab, 0x4d, 0x19, 0xce, 0x72, 0x7b, 0x78, 0x75, 0xa4, 0x1a, 0x3d, 0x30, 0x81, 0x4e, 0x50, 0x8d, 0xaa, 0x26, 0xeb, 0x70, 0xaa, 0xbb, 0xd0, 0xdc, 0xae, 0xcc, 0x4d, 0x4b, 0x51, 0x69, 0x80, 0x71, 0x51, 0x1e, 0xb3, 0x1b, 0x21, 0x0e, 0x66, 0xdc, 0xbc, 0x7f, 0xc0, 0xb8, 0xc6, 0x23, 0x14, 0xda, 0xea, 0x69, 0xd4, 0x7a, 0xe2, 0x78, 0x10, 0x0d, 0xeb, 0x51, 0x40, 0x92, 0x00 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.18", - /* Message to be signed */ - 10, - { 0x54, 0x13, 0x99, 0x3c, 0x26, 0x58, 0xbc, 0x1d, 0x98, 0x85 } -, - /* Signature */ - 129, - { 0x00, 0xbb, 0xeb, 0x2c, 0xa0, 0xbd, 0x64, 0xcb, 0x89, 0x60, 0x37, 0x5b, 0x08, 0xa9, 0x48, 0x0e, 0x69, 0xc0, 0x9f, 0xd3, 0x82, 0xde, 0xa2, 0xf9, 0x40, 0x89, 0xb1, 0x53, 0x3a, 0x08, 0x51, 0xfa, 0x0c, 0xbd, 0x0e, 0xad, 0xef, 0xca, 0x8c, 0x70, 0xb7, 0x70, 0x79, 0x7a, 0xd0, 0x89, 0xe8, 0x40, 0xd2, 0xfe, 0x1a, 0x8f, 0xb8, 0x54, 0x9f, 0x32, 0x90, 0x58, 0x3b, 0xbb, 0x81, 0xd3, 0xee, 0x2b, 0x1c, 0x48, 0xf1, 0xea, 0x75, 0x1b, 0xf3, 0x2f, 0x95, 0x90, 0xbe, 0x3a, 0xfd, 0xb7, 0x74, 0x5e, 0x16, 0x6e, 0x0b, 0x32, 0x2c, 0x08, 0x31, 0x24, 0xe6, 0x45, 0x83, 0x94, 0x82, 0xd0, 0x81, 0x26, 0x22, 0xd3, 0x1a, 0xb1, 0x87, 0x7a, 0x9b, 0xb4, 0x1b, 0x8d, 0xaa, 0xd8, 0x68, 0xf3, 0x0e, 0x75, 0x07, 0x83, 0x2a, 0xc3, 0x41, 0x01, 0x12, 0x13, 0x3a, 0xa1, 0x7b, 0x2d, 0x47, 0x6d, 0x47, 0x6d, 0x89 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.19", - /* Message to be signed */ - 232, - { 0x9c, 0x84, 0xc1, 0x48, 0x6b, 0xc1, 0x2b, 0x3f, 0xa6, 0xc5, 0x98, 0x71, 0xb6, 0x82, 0x7c, 0x8c, 0xe2, 0x53, 0xca, 0x5f, 0xef, 0xa8, 0xa8, 0xc6, 0x90, 0xbf, 0x32, 0x6e, 0x8e, 0x37, 0xcd, 0xb9, 0x6d, 0x90, 0xa8, 0x2e, 0xba, 0xb6, 0x9f, 0x86, 0x35, 0x0e, 0x18, 0x22, 0xe8, 0xbd, 0x53, 0x6a, 0x2e, 0xb3, 0x07, 0xc4, 0x3b, 0x48, 0x50, 0xa8, 0xda, 0xc2, 0xf1, 0x5f, 0x32, 0xe3, 0x78, 0x39, 0xef, 0x8c, 0x5c, 0x0e, 0x91, 0xdd, 0x0a, 0xfa, 0xd4, 0x2c, 0xcd, 0x4f, 0xc6, 0x06, 0x54, 0xa5, 0x50, 0x02, 0xd2, 0x28, 0xf5, 0x2a, 0x4a, 0x5f, 0xe0, 0x3b, 0x8b, 0xbb, 0x08, 0xca, 0x82, 0xda, 0xca, 0x55, 0x8b, 0x44, 0xdb, 0xe1, 0x26, 0x6e, 0x50, 0xc0, 0xe7, 0x45, 0xa3, 0x6d, 0x9d, 0x29, 0x04, 0xe3, 0x40, 0x8a, 0xbc, 0xd1, 0xfd, 0x56, 0x99, 0x94, 0x06, 0x3f, 0x4a, 0x75, 0xcc, 0x72, 0xf2, 0xfe, 0xe2, 0xa0, 0xcd, 0x89, 0x3a, 0x43, 0xaf, 0x1c, 0x5b, 0x8b, 0x48, 0x7d, 0xf0, 0xa7, 0x16, 0x10, 0x02, 0x4e, 0x4f, 0x6d, 0xdf, 0x9f, 0x28, 0xad, 0x08, 0x13, 0xc1, 0xaa, 0xb9, 0x1b, 0xcb, 0x3c, 0x90, 0x64, 0xd5, 0xff, 0x74, 0x2d, 0xef, 0xfe, 0xa6, 0x57, 0x09, 0x41, 0x39, 0x36, 0x9e, 0x5e, 0xa6, 0xf4, 0xa9, 0x63, 0x19, 0xa5, 0xcc, 0x82, 0x24, 0x14, 0x5b, 0x54, 0x50, 0x62, 0x75, 0x8f, 0xef, 0xd1, 0xfe, 0x34, 0x09, 0xae, 0x16, 0x92, 0x59, 0xc6, 0xcd, 0xfd, 0x6b, 0x5f, 0x29, 0x58, 0xe3, 0x14, 0xfa, 0xec, 0xbe, 0x69, 0xd2, 0xca, 0xce, 0x58, 0xee, 0x55, 0x17, 0x9a, 0xb9, 0xb3, 0xe6, 0xd1, 0xec, 0xc1, 0x4a, 0x55 } -, - /* Signature */ - 129, - { 0x00, 0xe6, 0xbe, 0x96, 0xe1, 0x8d, 0xce, 0xbf, 0x83, 0x88, 0xba, 0x82, 0xec, 0x6f, 0x27, 0x10, 0x5b, 0xc2, 0x78, 0x71, 0x59, 0x5e, 0x01, 0x70, 0x5a, 0x2b, 0x97, 0xa1, 0xf4, 0xd7, 0x88, 0x38, 0x35, 0x2b, 0x0e, 0x7c, 0x0a, 0x2c, 0x62, 0x7a, 0x6f, 0xf3, 0x7d, 0xb1, 0x69, 0xa9, 0xa4, 0x64, 0x8a, 0xd2, 0x7a, 0xf0, 0x65, 0x33, 0xa4, 0xf0, 0x41, 0xd4, 0xc8, 0x20, 0xab, 0xf4, 0xfb, 0x52, 0x64, 0x64, 0x08, 0x14, 0x34, 0xdf, 0x36, 0x78, 0x85, 0x03, 0xc6, 0x5a, 0xf7, 0x62, 0xaa, 0x21, 0x9f, 0xb7, 0x6a, 0x91, 0xcb, 0xb4, 0x0e, 0x14, 0x92, 0xa9, 0xcb, 0x77, 0x36, 0x9b, 0xb4, 0xcc, 0xa1, 0x93, 0x4e, 0x38, 0x53, 0xde, 0x6c, 0x86, 0xa5, 0xdc, 0x11, 0x48, 0xed, 0xee, 0xb3, 0xb0, 0x03, 0x04, 0x14, 0xfe, 0x30, 0x83, 0xad, 0x72, 0xfe, 0x29, 0x5c, 0x29, 0xb5, 0xea, 0x9b, 0x66, 0x60 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 7.20", - /* Message to be signed */ - 165, - { 0x94, 0x0c, 0xda, 0xb4, 0xa3, 0xe9, 0x20, 0x09, 0xcc, 0xd4, 0x2e, 0x1e, 0x94, 0x7b, 0x13, 0x14, 0xe3, 0x22, 0x38, 0xa2, 0xde, 0xce, 0x7d, 0x23, 0xa8, 0x9b, 0x5b, 0x30, 0xc7, 0x51, 0xfd, 0x0a, 0x4a, 0x43, 0x0d, 0x2c, 0x54, 0x85, 0x94, 0x9a, 0x2b, 0x00, 0x7e, 0x80, 0x97, 0x8b, 0xbb, 0x19, 0x2c, 0x35, 0x4e, 0xb7, 0xda, 0x9a, 0xed, 0xfc, 0x74, 0xdb, 0xf5, 0xf7, 0x1d, 0xfd, 0x43, 0xb4, 0x6c, 0x93, 0xdb, 0x82, 0x62, 0x9b, 0xda, 0xe2, 0xbd, 0x0a, 0x12, 0xb8, 0x82, 0xea, 0x04, 0xc3, 0xb4, 0x65, 0xf5, 0xcf, 0x93, 0x02, 0x3f, 0x01, 0x05, 0x96, 0x26, 0xdb, 0xbe, 0x99, 0xf2, 0x6b, 0xb1, 0xbe, 0x94, 0x9d, 0xdd, 0xd1, 0x6d, 0xc7, 0xf3, 0xde, 0xbb, 0x19, 0xa1, 0x94, 0x62, 0x7f, 0x0b, 0x22, 0x44, 0x34, 0xdf, 0x7d, 0x87, 0x00, 0xe9, 0xe9, 0x8b, 0x06, 0xe3, 0x60, 0xc1, 0x2f, 0xdb, 0xe3, 0xd1, 0x9f, 0x51, 0xc9, 0x68, 0x4e, 0xb9, 0x08, 0x9e, 0xcb, 0xb0, 0xa2, 0xf0, 0x45, 0x03, 0x99, 0xd3, 0xf5, 0x9e, 0xac, 0x72, 0x94, 0x08, 0x5d, 0x04, 0x4f, 0x53, 0x93, 0xc6, 0xce, 0x73, 0x74, 0x23, 0xd8, 0xb8 } -, - /* Signature */ - 129, - { 0x00, 0x80, 0xe2, 0xc3, 0x4f, 0xd4, 0xab, 0x4d, 0x1d, 0x70, 0x1e, 0xa3, 0xf0, 0x85, 0x76, 0x3a, 0xca, 0xff, 0xc9, 0xfd, 0x3e, 0xd9, 0x18, 0xd0, 0x4b, 0xff, 0xee, 0x19, 0x31, 0x62, 0x48, 0x98, 0xc7, 0x8f, 0x89, 0x41, 0xbd, 0x2a, 0x59, 0xce, 0xb5, 0xb8, 0x40, 0xf0, 0x11, 0x45, 0x16, 0xce, 0x41, 0x1f, 0xae, 0x75, 0x2b, 0x1b, 0x8a, 0x22, 0x1f, 0xfc, 0xa7, 0xa6, 0x87, 0x66, 0xc6, 0x97, 0xc5, 0x0a, 0x3d, 0x88, 0xd8, 0xd0, 0x2f, 0xfc, 0x12, 0x41, 0xd8, 0x4b, 0xb7, 0xa7, 0x22, 0x7f, 0x3d, 0x05, 0x14, 0x9e, 0x15, 0x11, 0x12, 0x77, 0xa1, 0x36, 0xa5, 0xb8, 0xdd, 0x96, 0xdd, 0x4b, 0x22, 0x5c, 0x5f, 0x49, 0xcd, 0xf6, 0x07, 0x1d, 0xbf, 0x71, 0x93, 0x5c, 0x7a, 0x6f, 0x1e, 0x2e, 0x9a, 0xf3, 0x02, 0x1c, 0x0d, 0x58, 0xa9, 0xb8, 0x1c, 0x9b, 0xde, 0x61, 0xfa, 0x47, 0x2c, 0x07, 0xa6 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 8: A 1026-bit RSA key pair", -{ - /* Modulus */ - 129, - { 0x03, 0x33, 0x12, 0x64, 0x88, 0xf7, 0xa2, 0x91, 0x51, 0x32, 0xe3, 0x0d, 0x5e, 0x97, 0xf6, 0xed, 0x7b, 0xbb, 0x67, 0xb6, 0x19, 0x85, 0x00, 0x8e, 0xae, 0xa2, 0xa5, 0xda, 0xfb, 0x96, 0xa4, 0x48, 0xab, 0x75, 0xce, 0x3d, 0x6e, 0x68, 0xa6, 0x26, 0x5e, 0x7c, 0x24, 0x56, 0x84, 0x99, 0x93, 0x24, 0xc8, 0x1e, 0x0b, 0xa6, 0x38, 0x98, 0x63, 0xfe, 0xb4, 0x88, 0xb3, 0xf2, 0x55, 0xd0, 0xd6, 0x19, 0xc1, 0x90, 0x40, 0xb7, 0x4c, 0x18, 0x9f, 0x0c, 0x9a, 0xf4, 0xb0, 0xd5, 0xa5, 0x5a, 0x54, 0x4c, 0x09, 0x0c, 0xd6, 0x15, 0x2c, 0x90, 0xa6, 0xf2, 0x55, 0x0d, 0x7d, 0x2a, 0x6b, 0x6d, 0x34, 0x7d, 0x5b, 0x1b, 0x9d, 0xfb, 0x1d, 0xe4, 0x40, 0x3c, 0x79, 0x66, 0x23, 0xd7, 0x03, 0xbf, 0x9d, 0xb4, 0x43, 0xbf, 0x67, 0x02, 0x68, 0x3b, 0x8d, 0x2a, 0x9c, 0x61, 0xe9, 0x36, 0x8a, 0xc4, 0x25, 0xa5, 0x81 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 129, - { 0x01, 0x4a, 0x2b, 0x15, 0xdf, 0xa8, 0x83, 0x1d, 0xb4, 0xef, 0xa0, 0x5b, 0x19, 0x50, 0x84, 0xb7, 0x42, 0x73, 0x4e, 0xe1, 0x36, 0xf4, 0x48, 0x3f, 0x3b, 0xe2, 0x50, 0x9d, 0x2f, 0x61, 0x90, 0x23, 0xc3, 0x0a, 0x1f, 0xf2, 0xdf, 0x78, 0xcb, 0xd1, 0x17, 0xb1, 0x4f, 0x2c, 0x99, 0x13, 0x17, 0x1f, 0x72, 0x93, 0xb9, 0xfa, 0x6d, 0x41, 0xf0, 0xbd, 0x11, 0xa5, 0x31, 0x74, 0x74, 0x67, 0x54, 0x86, 0xd7, 0xf0, 0xae, 0xc0, 0xa7, 0x78, 0xba, 0x92, 0x0e, 0x81, 0xf5, 0x64, 0xd1, 0x59, 0x30, 0xcd, 0xde, 0xe7, 0xe2, 0xb0, 0x6a, 0xd8, 0xad, 0xb6, 0x12, 0x75, 0x1f, 0x4e, 0x38, 0x4d, 0x6f, 0x3f, 0xa0, 0xa6, 0x63, 0x9f, 0xd6, 0x2e, 0xdf, 0x86, 0xf5, 0x2c, 0x9f, 0xe0, 0x77, 0x62, 0x91, 0x83, 0x21, 0x83, 0xd3, 0x59, 0xb7, 0x34, 0x32, 0x60, 0xc9, 0x4e, 0x12, 0x5f, 0x4a, 0xb8, 0xbf, 0x43, 0x69 } -, - /* Prime 1 */ - 65, - { 0x01, 0xd6, 0xe7, 0xbd, 0x8e, 0x39, 0x5b, 0xbe, 0xf2, 0x10, 0x46, 0x49, 0xc0, 0x12, 0x78, 0xcc, 0x1c, 0x51, 0xc9, 0x68, 0x7d, 0xef, 0xb4, 0x59, 0x1f, 0x03, 0xb6, 0x78, 0x52, 0xa4, 0xbc, 0xb5, 0x30, 0x75, 0x0c, 0xf9, 0xbf, 0xca, 0xd0, 0x72, 0x8c, 0x53, 0x99, 0xd8, 0x70, 0x35, 0x01, 0x06, 0xcb, 0xa3, 0xec, 0x41, 0x6a, 0x31, 0xe4, 0x2d, 0x0b, 0x59, 0x75, 0x10, 0xff, 0x1c, 0x9d, 0x53, 0xbb } -, - /* Prime 2 */ - 65, - { 0x01, 0xbd, 0x46, 0x6f, 0x43, 0xa4, 0xd4, 0x61, 0x3e, 0x42, 0x64, 0xf0, 0x1b, 0x2d, 0xac, 0x2e, 0x5a, 0xa4, 0x20, 0x43, 0xf8, 0xfb, 0x5f, 0x69, 0xfa, 0x87, 0x1d, 0x14, 0xfb, 0x27, 0x3e, 0x76, 0x7a, 0x53, 0x1c, 0x40, 0xf0, 0x2f, 0x34, 0x3b, 0xc2, 0xfb, 0x45, 0xa0, 0xc7, 0xe0, 0xf6, 0xbe, 0x25, 0x61, 0x92, 0x3a, 0x77, 0x21, 0x1d, 0x66, 0xa6, 0xe2, 0xdb, 0xb4, 0x3c, 0x36, 0x63, 0x51, 0xf3 } -, - /* Prime exponent 1 */ - 64, - { 0xfb, 0x66, 0x85, 0x00, 0x65, 0x06, 0xe2, 0x0e, 0x01, 0x3a, 0x45, 0x2d, 0x51, 0xaf, 0x43, 0xe8, 0xea, 0x91, 0x08, 0x44, 0x13, 0xb0, 0xc8, 0xd3, 0x91, 0xfb, 0xdc, 0x88, 0xe2, 0x82, 0x0c, 0x89, 0x6e, 0x34, 0x1b, 0x31, 0x95, 0x69, 0x6b, 0x7e, 0x17, 0x33, 0xcf, 0x25, 0x38, 0x66, 0xef, 0xe5, 0xd0, 0x01, 0xd5, 0x7a, 0x88, 0x60, 0x34, 0xdc, 0x16, 0x4a, 0x35, 0x64, 0xbd, 0x36, 0x10, 0xf9 } -, - /* Prime exponent 2 */ - 64, - { 0xbe, 0x4e, 0x9e, 0x3b, 0x40, 0xf5, 0x6c, 0x62, 0x59, 0xaa, 0x1e, 0x5c, 0xdf, 0x56, 0x59, 0xb1, 0x6f, 0xb8, 0x42, 0x94, 0xe5, 0x8a, 0xd0, 0x16, 0xbd, 0x2c, 0x96, 0xcd, 0x08, 0xe6, 0xcf, 0x68, 0x54, 0xa1, 0x1c, 0xb8, 0x0a, 0xd4, 0xbe, 0x3e, 0x05, 0x7a, 0xaa, 0xcf, 0x02, 0xbd, 0x32, 0x63, 0x73, 0xa2, 0x35, 0xce, 0xb8, 0x9e, 0x82, 0x43, 0x0d, 0x6e, 0x6d, 0x47, 0xd6, 0xce, 0xf8, 0x35 } -, - /* Coefficient */ - 64, - { 0xc0, 0x23, 0x5c, 0x89, 0x73, 0xcf, 0xbf, 0x30, 0xbf, 0x1d, 0xd3, 0xc8, 0x39, 0xf0, 0x2c, 0x94, 0xc6, 0x9d, 0xc5, 0x34, 0xcb, 0xfc, 0x98, 0x88, 0x05, 0xd6, 0xfc, 0x46, 0x2a, 0xdb, 0xd3, 0x77, 0xd1, 0x75, 0xb9, 0xa9, 0x64, 0x60, 0x18, 0xd7, 0xfa, 0xb7, 0x5c, 0x1d, 0x1f, 0x7d, 0x61, 0xb7, 0x7f, 0xa7, 0x95, 0x59, 0xb8, 0x6f, 0xfa, 0x9e, 0xc6, 0xe2, 0x11, 0x33, 0xfa, 0x7f, 0x1a, 0x45 } - -} -, -{{ - "PKCS#1 v1.5 Signature Example 8.1", - /* Message to be signed */ - 181, - { 0x9a, 0x28, 0x20, 0xf3, 0xb9, 0x02, 0x9a, 0xbc, 0x18, 0x65, 0xeb, 0x06, 0xfe, 0x61, 0xb8, 0xd3, 0x97, 0xb6, 0x55, 0x72, 0xd6, 0x00, 0x61, 0xca, 0xa7, 0x4e, 0x63, 0x56, 0x93, 0x1e, 0x25, 0x6b, 0x89, 0x71, 0x2d, 0x18, 0x66, 0x84, 0xb4, 0xde, 0x1e, 0x14, 0xc9, 0xeb, 0xfe, 0xf1, 0x6e, 0x40, 0xd9, 0x9d, 0x10, 0x94, 0x39, 0x6c, 0x56, 0x1c, 0x88, 0x31, 0x77, 0xe5, 0x12, 0x6b, 0x9b, 0xe2, 0xd9, 0xa9, 0x68, 0x03, 0x27, 0xd5, 0x37, 0x0c, 0x6f, 0x26, 0x86, 0x1f, 0x58, 0x20, 0xc4, 0x3d, 0xa6, 0x7a, 0x3a, 0xd6, 0x09, 0x04, 0xe2, 0x15, 0xee, 0x6f, 0xf9, 0x34, 0xb9, 0xda, 0x70, 0xd7, 0x73, 0x0c, 0x87, 0x34, 0xab, 0xfc, 0xec, 0xde, 0x89, 0x7f, 0xdd, 0x67, 0x0a, 0x01, 0x46, 0x58, 0x68, 0xad, 0xc9, 0x3f, 0x26, 0x13, 0x19, 0x57, 0xa5, 0x0c, 0x52, 0xfb, 0x77, 0x7c, 0xdb, 0xaa, 0x30, 0x89, 0x2c, 0x9e, 0x12, 0x36, 0x11, 0x64, 0xec, 0x13, 0x97, 0x9d, 0x43, 0x04, 0x81, 0x18, 0xe4, 0x44, 0x5d, 0xb8, 0x7b, 0xee, 0x58, 0xdd, 0x98, 0x7b, 0x34, 0x25, 0xd0, 0x20, 0x71, 0xd8, 0xdb, 0xae, 0x80, 0x70, 0x8b, 0x03, 0x9d, 0xbb, 0x64, 0xdb, 0xd1, 0xde, 0x56, 0x57, 0xd9, 0xfe, 0xd0, 0xc1, 0x18, 0xa5, 0x41 } -, - /* Signature */ - 129, - { 0x03, 0x22, 0xd0, 0x0f, 0xc1, 0xd9, 0x66, 0x94, 0xf3, 0x6e, 0xae, 0xd2, 0x30, 0x90, 0x56, 0xf3, 0xea, 0x1c, 0x1c, 0xc2, 0x2b, 0x13, 0xb6, 0x5e, 0x79, 0x11, 0x8d, 0x20, 0x2c, 0x42, 0xd1, 0x61, 0x30, 0x99, 0x38, 0x05, 0x09, 0xda, 0x74, 0x35, 0xbb, 0x57, 0x92, 0x16, 0xfd, 0x57, 0x65, 0x06, 0x68, 0x42, 0xe3, 0x56, 0xa6, 0x41, 0x6f, 0xc8, 0x42, 0xa2, 0x4a, 0x9e, 0xa1, 0xbc, 0x6a, 0x90, 0x98, 0x05, 0x23, 0xb4, 0x28, 0xe3, 0x99, 0xbb, 0xd6, 0xfc, 0xdc, 0x2c, 0xb7, 0x71, 0xda, 0xf0, 0x03, 0x7a, 0x2d, 0xe8, 0xc7, 0x64, 0x9b, 0xd5, 0x33, 0x17, 0xde, 0x0e, 0x37, 0xc3, 0x14, 0xba, 0xb0, 0xc4, 0x37, 0xbb, 0xd7, 0x98, 0xdf, 0xb9, 0x65, 0x50, 0x6c, 0x34, 0x8b, 0x74, 0x2f, 0x13, 0x8e, 0xf1, 0xd1, 0xa2, 0x03, 0xe0, 0x51, 0xe3, 0x4b, 0xdd, 0x3a, 0x30, 0xe0, 0xfc, 0xe1, 0xac, 0x43 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Signature Example 8.2", - /* Message to be signed */ - 118, - { 0xea, 0x9a, 0x1a, 0x04, 0xb7, 0xcf, 0x47, 0x8a, 0x89, 0x7a, 0x70, 0x8f, 0xd9, 0x88, 0xf4, 0x8e, 0x80, 0x1e, 0xdb, 0x0b, 0x70, 0x39, 0xdf, 0x8c, 0x23, 0xbb, 0x3c, 0x56, 0xf4, 0xe8, 0x21, 0xac, 0x8b, 0x2b, 0xdd, 0x4b, 0x40, 0xfa, 0xf5, 0x45, 0xc7, 0x78, 0xdd, 0xf9, 0xbc, 0x1a, 0x49, 0xcb, 0x57, 0xf9, 0xb7, 0x1b, 0x6d, 0x48, 0xb2, 0xb6, 0xa5, 0x7a, 0x63, 0xc8, 0x4c, 0xea, 0x85, 0x9d, 0x65, 0xc6, 0x68, 0x28, 0x4b, 0x08, 0xd9, 0x6b, 0xdc, 0xaa, 0xbe, 0x25, 0x2d, 0xb0, 0xe4, 0xa9, 0x6c, 0xb1, 0xba, 0xc6, 0x01, 0x93, 0x41, 0xdb, 0x6f, 0xbe, 0xfb, 0x8d, 0x10, 0x6b, 0x0e, 0x90, 0xed, 0xa6, 0xbc, 0xc6, 0xc6, 0x26, 0x2f, 0x37, 0xe7, 0xea, 0x9c, 0x7e, 0x5d, 0x22, 0x6b, 0xd7, 0xdf, 0x85, 0xec, 0x5e, 0x71, 0xef } -, - /* Signature */ - 129, - { 0x02, 0x68, 0x44, 0x09, 0x39, 0x99, 0x6a, 0xe5, 0xcb, 0xda, 0xfd, 0xbc, 0xa8, 0x6a, 0x7c, 0x42, 0x8a, 0x04, 0xb5, 0x78, 0xfe, 0x2d, 0xbe, 0x51, 0x26, 0xa8, 0x2f, 0xaf, 0x2b, 0xec, 0xff, 0x09, 0x9a, 0xc6, 0x0c, 0xb8, 0x1b, 0x11, 0x7f, 0x1e, 0xbf, 0x42, 0x04, 0xfe, 0x43, 0x70, 0x54, 0x8d, 0x5d, 0x2c, 0x46, 0x80, 0x63, 0x68, 0x2d, 0xa8, 0x7d, 0xc8, 0x01, 0x79, 0xbb, 0x3b, 0xba, 0x85, 0xa1, 0x48, 0xae, 0x2d, 0xe7, 0xdc, 0xb4, 0x94, 0xf4, 0x76, 0x22, 0x1d, 0xf8, 0x21, 0x9d, 0x4a, 0xae, 0x1e, 0x45, 0xaf, 0x65, 0xde, 0x33, 0x4a, 0x1a, 0x6d, 0xc1, 0x45, 0x52, 0x86, 0xae, 0x09, 0xcf, 0x26, 0x72, 0x58, 0x85, 0xe7, 0x74, 0x80, 0x99, 0x72, 0xd7, 0x81, 0x98, 0x05, 0xff, 0xf5, 0xa8, 0xc8, 0x9d, 0x37, 0x37, 0x64, 0x50, 0x73, 0x92, 0x49, 0xf5, 0x7e, 0xb1, 0x51, 0xb7, 0x1d, 0xc0 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.3", - /* Message to be signed */ - 23, - { 0x07, 0xdf, 0x58, 0x6b, 0x90, 0x5b, 0x23, 0xb9, 0x1a, 0xf1, 0x3d, 0xa1, 0x23, 0x04, 0xbf, 0x83, 0xec, 0xa8, 0xa7, 0x3e, 0x87, 0x1f, 0xf9 } -, - /* Signature */ - 129, - { 0x01, 0xbf, 0xd9, 0x15, 0xff, 0x77, 0x80, 0xf1, 0x4c, 0xcc, 0x55, 0xbd, 0x03, 0x06, 0xb3, 0xae, 0xda, 0x5b, 0x5b, 0x59, 0x55, 0xa8, 0x26, 0xd4, 0x52, 0x6b, 0x0b, 0xc7, 0x66, 0x15, 0x4f, 0xa8, 0xda, 0x59, 0x56, 0x05, 0x78, 0xcc, 0xd4, 0x88, 0x2f, 0xe9, 0x70, 0x92, 0xfb, 0xc7, 0x36, 0xfd, 0xa7, 0x3c, 0xee, 0xfd, 0x10, 0x38, 0x94, 0x06, 0x3e, 0x93, 0xe2, 0x2a, 0x7b, 0x5c, 0x44, 0xf7, 0xa8, 0x5e, 0x3b, 0xdb, 0x96, 0x71, 0x9a, 0x09, 0x37, 0x43, 0x03, 0xc9, 0x1e, 0xd7, 0xe2, 0x27, 0x49, 0xfe, 0x3c, 0x4d, 0x6b, 0x96, 0x69, 0x9d, 0x50, 0x7c, 0x50, 0xad, 0xcf, 0xbd, 0xfc, 0x13, 0x1d, 0x6b, 0x5f, 0x2c, 0xf1, 0x83, 0x0e, 0x31, 0xea, 0xbe, 0x39, 0xae, 0xb5, 0x17, 0x96, 0x9c, 0x94, 0xa8, 0x1c, 0xfe, 0xfe, 0x67, 0x31, 0xaa, 0x2c, 0xdf, 0xfe, 0x28, 0xc8, 0xaf, 0x71, 0x40, 0xf4 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.4", - /* Message to be signed */ - 116, - { 0x50, 0x0b, 0x87, 0x77, 0xc7, 0xf8, 0x39, 0xba, 0xf0, 0xa6, 0x4b, 0xbb, 0xdb, 0xc5, 0xce, 0x79, 0x75, 0x5c, 0x57, 0xa2, 0x05, 0xb8, 0x45, 0xc1, 0x74, 0xe2, 0xd2, 0xe9, 0x05, 0x46, 0xa0, 0x89, 0xc4, 0xe6, 0xec, 0x8a, 0xdf, 0xfa, 0x23, 0xa7, 0xea, 0x97, 0xba, 0xe6, 0xb6, 0x5d, 0x78, 0x2b, 0x82, 0xdb, 0x5d, 0x2b, 0x5a, 0x56, 0xd2, 0x2a, 0x29, 0xa0, 0x5e, 0x7c, 0x44, 0x33, 0xe2, 0xb8, 0x2a, 0x62, 0x1a, 0xbb, 0xa9, 0x0a, 0xdd, 0x05, 0xce, 0x39, 0x3f, 0xc4, 0x8a, 0x84, 0x05, 0x42, 0x45, 0x1a, 0xc7, 0xcd, 0x69, 0x8d, 0x84, 0xb6, 0x51, 0x28, 0xd8, 0x83, 0x5e, 0x3a, 0x8b, 0x1e, 0xb0, 0xe0, 0x1c, 0xb5, 0x41, 0xec, 0x50, 0xf1, 0x03, 0x6e, 0x00, 0x8e, 0x71, 0xe9, 0x64, 0xda, 0xdc, 0x92, 0x19, 0xed } -, - /* Signature */ - 129, - { 0x00, 0x7a, 0xe0, 0xcf, 0xd7, 0xf4, 0xc6, 0xad, 0x1f, 0xf8, 0x4b, 0x4a, 0x60, 0x6b, 0xa1, 0xc4, 0x79, 0x8c, 0x2e, 0x49, 0x9b, 0x04, 0x5b, 0x56, 0x7d, 0x32, 0x63, 0x4f, 0xd9, 0x55, 0xf2, 0x68, 0x26, 0x0a, 0xb6, 0x59, 0xbf, 0x5b, 0xe9, 0x9e, 0x08, 0x26, 0xeb, 0x38, 0x70, 0xe8, 0xf6, 0x2f, 0x5a, 0x3c, 0xe7, 0x58, 0xe6, 0xd1, 0x56, 0xc3, 0x29, 0x9b, 0x43, 0x1c, 0xd9, 0xdf, 0xc6, 0x58, 0x37, 0xee, 0x94, 0x22, 0x0d, 0x95, 0x23, 0x51, 0x14, 0x87, 0x99, 0xbe, 0x9f, 0xca, 0xf9, 0xbe, 0x26, 0x4d, 0xae, 0xbe, 0xba, 0x2b, 0xe8, 0x66, 0x05, 0x20, 0x1e, 0xf9, 0xa0, 0xd9, 0x8f, 0x58, 0xec, 0x63, 0x8a, 0xbf, 0xc4, 0xf2, 0x78, 0x48, 0xf5, 0xd4, 0x79, 0xd3, 0x34, 0xac, 0xc2, 0xa9, 0x7f, 0xdd, 0x2d, 0x32, 0x7e, 0xc4, 0xc7, 0xdd, 0xc5, 0xa8, 0xab, 0xd5, 0x66, 0xde, 0x35, 0xd1, 0x4f } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.5", - /* Message to be signed */ - 238, - { 0x6b, 0x3f, 0x6a, 0x63, 0xd4, 0xe7, 0x78, 0x59, 0x24, 0x3c, 0x9c, 0xcc, 0xdc, 0x98, 0x01, 0x65, 0x23, 0xab, 0xb0, 0x24, 0x83, 0xb3, 0x55, 0x91, 0xc3, 0x3a, 0xad, 0x81, 0x21, 0x3b, 0xb7, 0xc7, 0xbb, 0x1a, 0x47, 0x0a, 0xab, 0xc1, 0x0d, 0x44, 0x25, 0x6c, 0x4d, 0x45, 0x59, 0xd9, 0x16, 0xef, 0xa8, 0xbf, 0xf9, 0x62, 0x12, 0xb2, 0xf4, 0xa3, 0xf3, 0x71, 0xa1, 0x0d, 0x57, 0x41, 0x52, 0x65, 0x5f, 0x5d, 0xfb, 0xa2, 0x25, 0xf1, 0x08, 0x95, 0xa8, 0x77, 0x16, 0xc1, 0x37, 0x45, 0x0b, 0xb9, 0x51, 0x9d, 0xfa, 0xa1, 0xf2, 0x07, 0xfa, 0xa9, 0x42, 0xea, 0x88, 0xab, 0xf7, 0x1e, 0x9c, 0x17, 0x98, 0x00, 0x85, 0xb5, 0x55, 0xae, 0xba, 0xb7, 0x62, 0x64, 0xae, 0x2a, 0x3a, 0xb9, 0x3c, 0x2d, 0x12, 0x98, 0x11, 0x91, 0xdd, 0xac, 0x6f, 0xb5, 0x94, 0x9e, 0xb3, 0x6a, 0xee, 0x3c, 0x5d, 0xa9, 0x40, 0xf0, 0x07, 0x52, 0xc9, 0x16, 0xd9, 0x46, 0x08, 0xfa, 0x7d, 0x97, 0xba, 0x6a, 0x29, 0x15, 0xb6, 0x88, 0xf2, 0x03, 0x23, 0xd4, 0xe9, 0xd9, 0x68, 0x01, 0xd8, 0x9a, 0x72, 0xab, 0x58, 0x92, 0xdc, 0x21, 0x17, 0xc0, 0x74, 0x34, 0xfc, 0xf9, 0x72, 0xe0, 0x58, 0xcf, 0x8c, 0x41, 0xca, 0x4b, 0x4f, 0xf5, 0x54, 0xf7, 0xd5, 0x06, 0x8a, 0xd3, 0x15, 0x5f, 0xce, 0xd0, 0xf3, 0x12, 0x5b, 0xc0, 0x4f, 0x91, 0x93, 0x37, 0x8a, 0x8f, 0x5c, 0x4c, 0x3b, 0x8c, 0xb4, 0xdd, 0x6d, 0x1c, 0xc6, 0x9d, 0x30, 0xec, 0xca, 0x6e, 0xaa, 0x51, 0xe3, 0x6a, 0x05, 0x73, 0x0e, 0x9e, 0x34, 0x2e, 0x85, 0x5b, 0xaf, 0x09, 0x9d, 0xef, 0xb8, 0xaf, 0xd7, 0xad, 0x8b, 0x15, 0x23, 0x70, 0x36, 0x46 } -, - /* Signature */ - 129, - { 0x01, 0x92, 0x1f, 0x22, 0xf4, 0x71, 0xa0, 0x8a, 0xf8, 0x19, 0xa9, 0x52, 0xe1, 0x83, 0x68, 0xce, 0x15, 0xf9, 0xb0, 0x64, 0xeb, 0x1d, 0x00, 0xb1, 0x28, 0x99, 0x78, 0x02, 0x44, 0xfe, 0x8c, 0x44, 0x24, 0xb2, 0x1f, 0x64, 0x35, 0x0b, 0x92, 0x26, 0xfe, 0x95, 0xff, 0x54, 0xf1, 0x14, 0x39, 0x83, 0x9b, 0xfb, 0x54, 0xf9, 0x39, 0xc9, 0x14, 0x95, 0xe4, 0xf0, 0x27, 0x90, 0x18, 0x97, 0x27, 0x3c, 0xfa, 0x29, 0x5a, 0x57, 0x15, 0x1f, 0x4e, 0x91, 0x1d, 0xc1, 0x02, 0xa7, 0x7d, 0x95, 0x8b, 0x62, 0x27, 0x24, 0xc0, 0xfd, 0x3a, 0x34, 0xb3, 0xb7, 0xbe, 0xfb, 0x8b, 0x8c, 0xd0, 0x66, 0x6e, 0x81, 0x5d, 0x0c, 0x07, 0xf2, 0xec, 0xb7, 0xc4, 0xdd, 0x2f, 0x42, 0xb7, 0xf4, 0x09, 0x13, 0x12, 0xe3, 0xd7, 0xb2, 0xdf, 0x26, 0x78, 0x87, 0xe0, 0xac, 0xa7, 0x0b, 0x54, 0x1c, 0x4c, 0x1e, 0xea, 0x16, 0xb5 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.6", - /* Message to be signed */ - 10, - { 0x93, 0x29, 0xa5, 0x80, 0x90, 0xde, 0x8b, 0xe5, 0x7c, 0x42 } -, - /* Signature */ - 129, - { 0x01, 0x5c, 0xe2, 0x4a, 0x6f, 0x2b, 0x37, 0x3a, 0x19, 0x99, 0x7b, 0xb2, 0x0c, 0x18, 0xac, 0x65, 0x9f, 0x1e, 0xdc, 0x0f, 0x25, 0xc9, 0xe5, 0xbf, 0x76, 0xd5, 0x69, 0x99, 0x65, 0x20, 0xc2, 0x80, 0xef, 0xdc, 0xf1, 0x5e, 0x2d, 0x63, 0xca, 0xaf, 0xf6, 0xc7, 0x7a, 0xe0, 0x38, 0x97, 0x03, 0x7a, 0x06, 0x15, 0xf9, 0x83, 0x8c, 0x52, 0x10, 0x4e, 0x97, 0x25, 0x18, 0xe2, 0x90, 0xfa, 0xc3, 0x8f, 0x63, 0x24, 0x75, 0x30, 0xb4, 0xcf, 0x61, 0xc6, 0xec, 0xe3, 0x42, 0x9b, 0x53, 0x07, 0x81, 0xcf, 0x34, 0x96, 0x4f, 0x32, 0xae, 0x50, 0xf1, 0x09, 0x34, 0x63, 0x83, 0x86, 0xd3, 0xb4, 0xdf, 0x76, 0x1c, 0x59, 0x7d, 0x4a, 0xa7, 0xfe, 0xca, 0x26, 0x6c, 0x27, 0xf8, 0xce, 0x66, 0xad, 0xe1, 0xbe, 0x26, 0x59, 0xce, 0x14, 0x2b, 0xa5, 0xf9, 0x35, 0x88, 0x3c, 0x7e, 0x8c, 0x9b, 0x89, 0x57, 0xab, 0xf2 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.7", - /* Message to be signed */ - 211, - { 0x6a, 0xce, 0x0f, 0x1e, 0x1d, 0xc6, 0x3e, 0x39, 0x4a, 0x06, 0x1f, 0x52, 0x2a, 0x54, 0x2f, 0xbe, 0x71, 0x20, 0x25, 0x4e, 0x36, 0xe9, 0xf6, 0x5d, 0x19, 0x57, 0xc9, 0x56, 0x28, 0x78, 0x2c, 0xb0, 0x36, 0x8f, 0x3c, 0x13, 0xda, 0xd6, 0x56, 0x71, 0x79, 0xc1, 0xea, 0x24, 0xfe, 0x83, 0x5a, 0x26, 0x63, 0x85, 0xe4, 0x68, 0x83, 0x17, 0xb8, 0x2b, 0x0c, 0x3f, 0xe6, 0x3c, 0xf2, 0xd5, 0x2f, 0x04, 0xae, 0x8a, 0x38, 0xa5, 0x75, 0x59, 0xbb, 0x95, 0xd9, 0xeb, 0xd5, 0xfe, 0x8a, 0x9a, 0xfe, 0x14, 0x79, 0x90, 0x9e, 0xb9, 0x9e, 0x0d, 0x3e, 0xf3, 0xf3, 0x12, 0xe0, 0xa4, 0xab, 0xb7, 0x66, 0xc7, 0xe2, 0x13, 0x1a, 0x5f, 0xfb, 0x48, 0x31, 0x83, 0xfb, 0xb4, 0x22, 0x34, 0xd3, 0x2e, 0x58, 0x1f, 0x59, 0x50, 0x65, 0xc4, 0x89, 0x82, 0x61, 0xec, 0xd0, 0xae, 0x57, 0x2c, 0x22, 0x1c, 0x25, 0x8d, 0xe9, 0x50, 0xa4, 0x08, 0x01, 0xef, 0x79, 0x6d, 0x4d, 0xd0, 0x04, 0x06, 0x45, 0xfc, 0x53, 0x4d, 0x8e, 0x78, 0x58, 0x23, 0x48, 0x38, 0xed, 0x12, 0xc6, 0x87, 0x40, 0xc1, 0x4e, 0x37, 0x16, 0x13, 0xf0, 0x04, 0x61, 0x76, 0xbb, 0xb0, 0xf4, 0x3d, 0x99, 0x75, 0x19, 0xc4, 0x0c, 0x67, 0x14, 0x96, 0xff, 0x35, 0x0a, 0x3f, 0xdf, 0x42, 0x9c, 0xc2, 0x2f, 0x46, 0x4f, 0x43, 0x5f, 0x6b, 0x29, 0xe7, 0xe1, 0xc3, 0x0e, 0xbd, 0x50, 0x59, 0x27, 0xd4, 0xa0, 0x96, 0x58, 0x7f, 0xc3, 0x8d, 0x3d, 0x64, 0x94, 0x39, 0x1e } -, - /* Signature */ - 129, - { 0x02, 0x73, 0xba, 0x2c, 0x50, 0x2b, 0x3f, 0x29, 0x84, 0xc5, 0x48, 0xd9, 0xf7, 0xd6, 0xc9, 0xb3, 0xd7, 0xfd, 0x46, 0x08, 0x78, 0xc8, 0x4d, 0x6b, 0xe3, 0x3b, 0x28, 0x10, 0x6e, 0x15, 0xfc, 0x22, 0x17, 0xef, 0xf7, 0x41, 0xcd, 0xc2, 0x66, 0x83, 0x4b, 0xea, 0xa8, 0x6d, 0xa4, 0x05, 0xf3, 0xca, 0xe6, 0x06, 0xcc, 0x61, 0xf2, 0x54, 0x7b, 0xb9, 0x22, 0x92, 0x03, 0x45, 0xfe, 0x8f, 0xbb, 0x5e, 0x7b, 0x6a, 0xbf, 0x91, 0xea, 0xe8, 0xc4, 0x26, 0x60, 0x64, 0x50, 0x25, 0xcc, 0x7f, 0xc0, 0x7a, 0x53, 0x4b, 0x76, 0xd3, 0x78, 0x75, 0xe3, 0xf4, 0x0d, 0x52, 0x70, 0xc1, 0x0e, 0xf4, 0x6c, 0x7f, 0xe4, 0x5a, 0xfa, 0xbc, 0xff, 0xae, 0x2a, 0x9c, 0x94, 0x11, 0xbd, 0x04, 0xd6, 0x1d, 0x4c, 0x0e, 0x5f, 0xfc, 0x02, 0x2c, 0xb3, 0x6a, 0x64, 0xb7, 0xc3, 0xa8, 0xc8, 0x9b, 0xfd, 0xe4, 0x36, 0xba, 0xfd } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.8", - /* Message to be signed */ - 157, - { 0xfd, 0xcc, 0x0f, 0x1e, 0x5d, 0xcb, 0xe5, 0x01, 0x6a, 0x6b, 0x0f, 0x8c, 0x28, 0xf5, 0xb3, 0x31, 0xff, 0x58, 0x28, 0x37, 0x13, 0x8d, 0xbf, 0x62, 0xef, 0x7f, 0xf6, 0x1b, 0xc1, 0xa3, 0x53, 0x96, 0xc9, 0x2e, 0x3d, 0x54, 0x8d, 0x39, 0x9e, 0x35, 0x0a, 0x3c, 0x6b, 0xc2, 0xfd, 0xb5, 0xda, 0x94, 0xb9, 0x86, 0xa4, 0xce, 0x6d, 0xee, 0x10, 0x4e, 0x9f, 0x27, 0x4b, 0x15, 0x25, 0x58, 0xbf, 0xa7, 0x22, 0xcc, 0xfd, 0xda, 0x3b, 0x26, 0xb9, 0xf8, 0xe5, 0x15, 0x25, 0xf3, 0x81, 0x03, 0x4c, 0x51, 0xfd, 0xc9, 0xf7, 0x91, 0x2a, 0xc9, 0x27, 0xd1, 0xa7, 0x08, 0xcc, 0x2d, 0xbb, 0xcd, 0x7b, 0xa6, 0xc0, 0x31, 0xb0, 0x11, 0xcb, 0xa8, 0xe2, 0xdf, 0x8f, 0xc9, 0xb8, 0x83, 0x64, 0xee, 0x96, 0x5f, 0x24, 0x27, 0x0e, 0x43, 0x48, 0x62, 0x32, 0x53, 0xcb, 0x9e, 0x59, 0xd6, 0xf7, 0x94, 0x09, 0x09, 0x94, 0xa7, 0xa4, 0xc9, 0x30, 0x02, 0x70, 0xb5, 0x7f, 0x24, 0x39, 0xeb, 0xbb, 0xa4, 0x65, 0x84, 0x67, 0xaf, 0xdb, 0x7f, 0xe8, 0x6b, 0x4f, 0x1a, 0xad, 0x1d, 0x3d, 0x3b, 0x2f } -, - /* Signature */ - 129, - { 0x00, 0xa7, 0xc4, 0x50, 0xb3, 0x0b, 0x2e, 0xcb, 0x19, 0xbb, 0x70, 0x9a, 0x92, 0x31, 0xcb, 0xfa, 0x9f, 0x0d, 0x61, 0x69, 0x7a, 0x26, 0xb9, 0x0a, 0x96, 0xd9, 0x1c, 0x24, 0xc4, 0xda, 0x70, 0xd7, 0xb0, 0x0b, 0x59, 0x23, 0xc8, 0xe1, 0x2d, 0x41, 0x09, 0x4b, 0x70, 0x5d, 0x50, 0xc7, 0x78, 0xbb, 0xda, 0xce, 0xc6, 0x60, 0xd5, 0xc1, 0x5d, 0xff, 0xd3, 0xa2, 0x47, 0x8f, 0xd9, 0x33, 0x70, 0x80, 0xdc, 0xa1, 0x6b, 0x9c, 0x13, 0xe6, 0x23, 0x3b, 0x82, 0x92, 0xb2, 0xfd, 0xcc, 0x29, 0xe9, 0xbf, 0x3b, 0x21, 0xa7, 0x18, 0x78, 0xf3, 0x4e, 0xf5, 0xeb, 0x7c, 0xd5, 0x0a, 0xd4, 0x12, 0x03, 0x72, 0x5a, 0x0f, 0x1c, 0x66, 0x3f, 0x73, 0x42, 0xec, 0x7c, 0x3d, 0xf3, 0xd5, 0xaa, 0x51, 0xd0, 0x58, 0xdf, 0xcc, 0xce, 0x5f, 0xe6, 0x9d, 0x36, 0x3b, 0x42, 0x84, 0x32, 0x08, 0x79, 0xe8, 0x6d, 0x58, 0xb5 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.9", - /* Message to be signed */ - 92, - { 0x2d, 0x1f, 0xcd, 0x17, 0x66, 0xf7, 0xd4, 0x5f, 0x29, 0x59, 0x4f, 0x9d, 0x4f, 0x74, 0x39, 0x41, 0xae, 0x91, 0x2a, 0x97, 0x91, 0x1f, 0xfc, 0x3d, 0x65, 0xdc, 0xd9, 0x65, 0x60, 0x10, 0x77, 0x3b, 0xb0, 0x22, 0x4b, 0xa6, 0xdf, 0x11, 0x1b, 0x1c, 0x13, 0x68, 0x38, 0x4f, 0x24, 0x92, 0xfc, 0x4f, 0xa7, 0x28, 0x0c, 0x06, 0x65, 0x14, 0xae, 0x84, 0xf7, 0x61, 0x45, 0x63, 0xd9, 0x05, 0x2c, 0xa9, 0x4e, 0xf4, 0x46, 0xa3, 0x1b, 0x46, 0x3b, 0xd6, 0xc2, 0x50, 0x56, 0x80, 0x50, 0x88, 0xc1, 0xd3, 0x1a, 0xba, 0xff, 0x52, 0x15, 0xf7, 0xa8, 0xf8, 0x9e, 0x7b, 0x64, 0xf2 } -, - /* Signature */ - 129, - { 0x02, 0xc0, 0xe0, 0x71, 0xe8, 0x36, 0x90, 0xdc, 0x14, 0xd9, 0xa3, 0x7d, 0x61, 0xe0, 0xaf, 0xc2, 0x7d, 0xf9, 0x78, 0x03, 0x9d, 0xa6, 0x01, 0xca, 0x2c, 0xec, 0x1d, 0xec, 0x8f, 0x0d, 0x17, 0xd2, 0xff, 0xc4, 0x50, 0xe6, 0x78, 0x38, 0x0a, 0x02, 0x5a, 0x41, 0xc7, 0x46, 0x11, 0x8f, 0x58, 0x36, 0x42, 0x52, 0xa1, 0x22, 0x53, 0x9e, 0xcc, 0xbb, 0xb4, 0xab, 0x3d, 0x8d, 0x37, 0x7b, 0xdb, 0xb9, 0x11, 0xc5, 0x8a, 0x4c, 0xb9, 0x46, 0x2f, 0x36, 0xdc, 0x38, 0x92, 0x48, 0x50, 0x1b, 0xd0, 0x8f, 0x48, 0xe3, 0x53, 0x3b, 0x82, 0x59, 0x1a, 0x2a, 0x20, 0xcf, 0x62, 0xdf, 0x5f, 0x5a, 0x1f, 0x84, 0xea, 0x30, 0x0c, 0xb3, 0x94, 0x57, 0x13, 0x71, 0x41, 0xad, 0x8c, 0xd1, 0xd1, 0x85, 0xab, 0xb1, 0x7b, 0xa5, 0xd0, 0x3b, 0xe3, 0x48, 0xc0, 0x67, 0x97, 0xb0, 0x95, 0x58, 0xf0, 0x33, 0x1c, 0x24, 0xb9 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.10", - /* Message to be signed */ - 179, - { 0x4f, 0x46, 0x9a, 0xb7, 0x9c, 0xb8, 0x93, 0xa5, 0x3c, 0x0e, 0xe3, 0x81, 0x5a, 0x8b, 0xc0, 0x87, 0xeb, 0x74, 0xea, 0x36, 0x61, 0x5b, 0xdd, 0xc3, 0x33, 0xde, 0xe0, 0x5f, 0xc7, 0x26, 0x65, 0xaa, 0x6d, 0x0b, 0xd5, 0x9e, 0x47, 0x22, 0x98, 0x29, 0x83, 0x4b, 0x1f, 0x91, 0xc9, 0xcd, 0x81, 0xce, 0x28, 0xd6, 0x8f, 0x14, 0x82, 0x5a, 0x34, 0x5f, 0x3a, 0x4f, 0x38, 0xa0, 0x1b, 0x2d, 0xae, 0x59, 0x10, 0x07, 0x64, 0xaa, 0xb9, 0x90, 0xa8, 0x50, 0xb1, 0x1c, 0x13, 0xd5, 0xdf, 0xe4, 0x19, 0xf1, 0xd9, 0x20, 0xd0, 0x0c, 0xf1, 0x3b, 0xf4, 0x30, 0xe4, 0xca, 0x82, 0x87, 0x98, 0x9b, 0xee, 0xbe, 0xda, 0x3e, 0x5d, 0x40, 0x36, 0x02, 0x8c, 0x8e, 0xf9, 0x54, 0x6e, 0x35, 0x01, 0x50, 0xd1, 0x96, 0xf0, 0x05, 0x60, 0xba, 0xe1, 0x47, 0x22, 0x99, 0xe7, 0xf4, 0x29, 0x1d, 0x54, 0x46, 0x29, 0xc4, 0xf6, 0x52, 0xe3, 0x5c, 0xde, 0x4f, 0x80, 0x3e, 0x1b, 0x3c, 0xa3, 0x38, 0x09, 0x51, 0x5e, 0xf2, 0x3d, 0x25, 0x4b, 0x8e, 0x65, 0x20, 0x2a, 0x14, 0xa4, 0x11, 0xb1, 0xbc, 0x31, 0x5c, 0x5f, 0xfa, 0xec, 0xb8, 0x21, 0x11, 0x97, 0x80, 0x9d, 0xcb, 0x5c, 0xed, 0x68, 0x2c, 0x09, 0xf6, 0x7e, 0x41, 0xd1, 0x60, 0x2c } -, - /* Signature */ - 129, - { 0x01, 0x71, 0x29, 0x64, 0xea, 0x9a, 0xb9, 0x70, 0x29, 0x5b, 0x81, 0xb0, 0xfb, 0xd8, 0x35, 0x7e, 0x54, 0xb9, 0x36, 0xee, 0x87, 0x72, 0xd8, 0xae, 0x9c, 0x96, 0x12, 0x71, 0x6f, 0xcc, 0x2f, 0xcb, 0x78, 0x4c, 0xa9, 0xab, 0xee, 0xeb, 0xb8, 0xfc, 0xb6, 0x89, 0x82, 0x16, 0x1c, 0xc7, 0x4e, 0x40, 0xc7, 0xc0, 0x22, 0x47, 0xc0, 0xd0, 0x0e, 0x03, 0xbc, 0x8e, 0x1a, 0x70, 0x51, 0xb8, 0x7c, 0x90, 0xdd, 0x7d, 0x3d, 0xfc, 0x95, 0xe0, 0xb3, 0xc8, 0x8e, 0x7a, 0x0f, 0x37, 0xf3, 0x0e, 0x1b, 0xd5, 0xfe, 0x8b, 0x6e, 0xee, 0x46, 0x5a, 0x0b, 0x34, 0xcb, 0x59, 0xc6, 0x4e, 0xbd, 0xb5, 0x7d, 0x6f, 0x5f, 0xdf, 0xf2, 0xe7, 0x0b, 0xb1, 0x9c, 0x60, 0xd9, 0x88, 0xea, 0x95, 0x6c, 0xdc, 0xdd, 0x1b, 0xe5, 0x62, 0xf2, 0x6f, 0xb3, 0x7c, 0x34, 0xda, 0x52, 0xa9, 0xf9, 0x11, 0xb9, 0x97, 0x43, 0x81, 0x2c } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.11", - /* Message to be signed */ - 35, - { 0x52, 0xbb, 0x76, 0xc9, 0xea, 0x26, 0x5d, 0x6f, 0xad, 0x10, 0x83, 0x72, 0xff, 0xab, 0x25, 0x03, 0xbb, 0x20, 0xd3, 0x8d, 0x37, 0xdf, 0x19, 0x92, 0x54, 0xa2, 0xf6, 0xde, 0x0c, 0x4f, 0xca, 0x7a, 0x73, 0x03, 0x36 } -, - /* Signature */ - 129, - { 0x01, 0x0c, 0x55, 0x34, 0x23, 0x60, 0x22, 0x60, 0x15, 0x8a, 0x17, 0x13, 0x3b, 0x5d, 0x30, 0xef, 0xe9, 0x8e, 0x9a, 0xeb, 0x35, 0x3b, 0xab, 0x33, 0x71, 0xe4, 0x91, 0xcd, 0xbe, 0xbd, 0x35, 0x0a, 0x0a, 0x47, 0x0b, 0x9d, 0xbf, 0xd1, 0x89, 0x33, 0x51, 0x1f, 0x0d, 0x0e, 0x36, 0x94, 0xa8, 0xac, 0x4b, 0xf3, 0xf5, 0xb6, 0xeb, 0x9b, 0xf7, 0x1c, 0x23, 0xd9, 0x4c, 0x2e, 0x64, 0xbe, 0xb7, 0xb7, 0xc7, 0x22, 0x52, 0xca, 0x82, 0x7b, 0xd0, 0xc0, 0x56, 0x7b, 0xa8, 0xa1, 0x0a, 0x6d, 0x3b, 0x7e, 0x18, 0x7b, 0x0f, 0xd8, 0xe9, 0xe9, 0x5d, 0x4f, 0xe4, 0x80, 0xf2, 0x50, 0xdc, 0x7f, 0x03, 0x42, 0x29, 0x0e, 0x9a, 0x7d, 0x32, 0x70, 0x3a, 0x72, 0x13, 0xc6, 0x52, 0x13, 0xad, 0xed, 0x45, 0x57, 0x54, 0x78, 0x1f, 0x3d, 0xb7, 0x3e, 0x79, 0xe3, 0xd1, 0xba, 0x6a, 0xf7, 0xf6, 0x90, 0xfe, 0x81, 0x73 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.12", - /* Message to be signed */ - 72, - { 0x5f, 0x59, 0x7a, 0x19, 0xcb, 0xf5, 0x14, 0x30, 0xd3, 0xc6, 0xa2, 0x47, 0xa5, 0x23, 0x54, 0x07, 0x38, 0x6c, 0xae, 0xd0, 0xa2, 0x94, 0xf3, 0xf4, 0x1f, 0x3f, 0x37, 0x82, 0x50, 0xd4, 0xc5, 0xa2, 0xc9, 0x92, 0x75, 0xf9, 0x55, 0x44, 0xcc, 0xc1, 0xd7, 0x7e, 0x5c, 0x15, 0x1a, 0xf1, 0x3e, 0xd6, 0x0b, 0xe5, 0x22, 0xeb, 0x8c, 0xab, 0xed, 0x89, 0xa9, 0xb4, 0x5b, 0x09, 0x65, 0x46, 0x00, 0xf9, 0xfc, 0x75, 0x1e, 0x8b, 0x12, 0xe6, 0x7e, 0x52 } -, - /* Signature */ - 129, - { 0x00, 0x3b, 0xd4, 0xaa, 0x90, 0x81, 0xfe, 0x7e, 0x9f, 0x69, 0xa2, 0x69, 0xfe, 0xc8, 0xc8, 0xa7, 0x36, 0x70, 0xc0, 0x37, 0xe8, 0x5a, 0x1f, 0x36, 0xfc, 0xad, 0x74, 0xe5, 0xb5, 0x2d, 0x71, 0x0a, 0x5a, 0x18, 0xba, 0x09, 0x5b, 0x98, 0x10, 0xcc, 0x69, 0x37, 0xbc, 0x76, 0x34, 0x09, 0x51, 0xe7, 0xfe, 0xd7, 0x5b, 0x32, 0x6d, 0x0a, 0x3b, 0x0f, 0x26, 0xc2, 0x9c, 0xd5, 0xeb, 0x64, 0x15, 0xbb, 0xf7, 0xe2, 0xdd, 0x60, 0xad, 0xf6, 0xa0, 0xe6, 0x13, 0x02, 0xdc, 0xc6, 0x60, 0xcc, 0xe9, 0x10, 0x40, 0x8b, 0x4f, 0x99, 0xa4, 0x40, 0xae, 0x2a, 0xd6, 0xc3, 0x07, 0x72, 0xc2, 0x9a, 0x9e, 0x7b, 0x32, 0x80, 0xe2, 0xe2, 0x93, 0x9a, 0xba, 0x0b, 0x54, 0xab, 0x02, 0x2a, 0xa3, 0x29, 0x50, 0x22, 0x71, 0x8c, 0xd3, 0xb7, 0x87, 0xb1, 0x13, 0x79, 0x90, 0xfb, 0xeb, 0xef, 0xac, 0xec, 0x8c, 0xb7, 0x49 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.13", - /* Message to be signed */ - 36, - { 0x84, 0x0c, 0xc9, 0x00, 0xcb, 0x4b, 0x2c, 0xb6, 0x7a, 0x30, 0x4a, 0x9b, 0x02, 0x82, 0x6d, 0xb0, 0xd6, 0x67, 0x36, 0x92, 0x2e, 0x78, 0x70, 0x13, 0xd6, 0xbf, 0x21, 0x4d, 0xf5, 0x79, 0xff, 0x0c, 0xf4, 0x82, 0x1f, 0x9b } -, - /* Signature */ - 129, - { 0x01, 0x3b, 0x6c, 0x08, 0x0f, 0x68, 0x93, 0x95, 0x05, 0xe1, 0x87, 0xa4, 0x94, 0x82, 0xc7, 0x91, 0x27, 0x8d, 0xa3, 0xad, 0x4a, 0x74, 0x7c, 0x4f, 0x01, 0x79, 0x1b, 0x92, 0x48, 0x05, 0xb6, 0x82, 0xf6, 0x49, 0xbb, 0xd8, 0x0d, 0xba, 0x12, 0xfb, 0xbe, 0x59, 0x40, 0xf1, 0x7f, 0x27, 0xe7, 0x5d, 0x42, 0x67, 0x7c, 0x4c, 0xcc, 0xdf, 0xfd, 0x00, 0x48, 0x77, 0x2e, 0x36, 0x93, 0x4c, 0x69, 0x12, 0x12, 0x8f, 0xf9, 0x03, 0xaf, 0xea, 0x5e, 0x1c, 0xa8, 0xfe, 0x94, 0x24, 0xfc, 0x97, 0x9b, 0x21, 0x87, 0x98, 0x76, 0x98, 0xa5, 0xc5, 0xa7, 0x5e, 0x7d, 0x70, 0x70, 0xa2, 0xa6, 0x74, 0x85, 0x2b, 0xd8, 0x05, 0xbf, 0x13, 0xbb, 0xd1, 0x29, 0x6b, 0xff, 0x13, 0x10, 0xa6, 0xd6, 0xed, 0x45, 0xfd, 0xf8, 0x67, 0x2d, 0x52, 0x41, 0xe7, 0x4c, 0xd4, 0xc4, 0x19, 0x86, 0xe4, 0x36, 0x25, 0x50, 0x0c, 0x23 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.14", - /* Message to be signed */ - 216, - { 0xc6, 0x41, 0x71, 0x94, 0x13, 0x3b, 0x5f, 0x8e, 0xa6, 0x3d, 0x95, 0x58, 0x1c, 0x89, 0x6f, 0x5b, 0x9e, 0xf3, 0xd8, 0x7c, 0xf6, 0x6c, 0x02, 0x91, 0x64, 0x0f, 0x35, 0x0a, 0x32, 0x5b, 0x49, 0x11, 0x52, 0xe9, 0xd1, 0x43, 0x0d, 0x68, 0x70, 0x34, 0x6e, 0x46, 0x8e, 0x71, 0x99, 0x45, 0xd4, 0xe3, 0x65, 0xd0, 0x01, 0x07, 0x5f, 0xa9, 0x70, 0xf2, 0xa9, 0x87, 0x0a, 0x1c, 0x65, 0x43, 0x4b, 0xa1, 0x70, 0x02, 0x41, 0x2a, 0xcc, 0x4c, 0xc7, 0x4d, 0x28, 0xb2, 0xde, 0xe2, 0x9b, 0x36, 0xe3, 0x97, 0xb6, 0x8c, 0x5d, 0x59, 0xcf, 0x67, 0x7c, 0x29, 0xae, 0xe7, 0x93, 0xa9, 0x30, 0x0b, 0x7b, 0xf4, 0xc6, 0x73, 0xb3, 0xe0, 0xb6, 0x03, 0xa3, 0x61, 0x1c, 0xa9, 0x02, 0x44, 0xff, 0x08, 0x78, 0x75, 0xc5, 0x16, 0x88, 0x57, 0xcb, 0x92, 0xa9, 0x5a, 0xaa, 0x61, 0xdf, 0xf3, 0xc2, 0x12, 0xdc, 0x62, 0x06, 0xf1, 0x71, 0x47, 0xc4, 0x4b, 0x95, 0x07, 0xd5, 0xc8, 0x90, 0x75, 0x8b, 0xb3, 0x5b, 0xb7, 0x2a, 0x2a, 0x5e, 0x9d, 0x4d, 0xb2, 0x65, 0xe5, 0x37, 0x3a, 0x5b, 0x34, 0x02, 0x90, 0x4f, 0x0f, 0x1a, 0x12, 0x05, 0xd5, 0xbc, 0xc5, 0x90, 0x25, 0xd3, 0x22, 0x0a, 0x5d, 0xe1, 0xb1, 0x82, 0xa8, 0x4d, 0x30, 0x41, 0x2b, 0x84, 0x26, 0xd4, 0x69, 0x32, 0x32, 0x1b, 0x57, 0xef, 0x72, 0x64, 0x0a, 0xdd, 0x2c, 0xee, 0xbf, 0x5b, 0xe9, 0x68, 0x43, 0x6b, 0xcd, 0x12, 0x16, 0x90, 0x78, 0x84, 0x82, 0x32, 0x93, 0xb0, 0x10, 0xec, 0x28, 0xf0, 0xd9 } -, - /* Signature */ - 129, - { 0x01, 0x60, 0x47, 0xca, 0xad, 0x6c, 0x47, 0xbf, 0x27, 0xd0, 0xcc, 0xfa, 0x03, 0x41, 0x01, 0x7e, 0x56, 0x5e, 0x02, 0x8c, 0xf2, 0x6c, 0x8e, 0x66, 0x0f, 0x79, 0xe0, 0x91, 0xf3, 0x50, 0xce, 0xb2, 0xaa, 0xcf, 0x92, 0xf7, 0xd0, 0x1d, 0x37, 0x3f, 0x71, 0x55, 0x11, 0x9c, 0x07, 0x29, 0x17, 0xf2, 0x4f, 0x01, 0xbf, 0x74, 0x7b, 0xe2, 0xdc, 0xdc, 0x41, 0xd1, 0xbe, 0x58, 0x85, 0x35, 0xc2, 0xd6, 0xac, 0x17, 0x04, 0xc5, 0xfb, 0x16, 0xf6, 0xe5, 0xdc, 0x4b, 0xbc, 0x84, 0x53, 0xf5, 0x21, 0xdb, 0x73, 0x1e, 0xba, 0x78, 0x98, 0xe6, 0xe5, 0x21, 0x2b, 0x80, 0xce, 0x9d, 0xa0, 0xf1, 0x56, 0x28, 0x18, 0x99, 0x98, 0x31, 0x35, 0x03, 0xdf, 0xd4, 0x4e, 0x3d, 0x69, 0xde, 0x9b, 0xa9, 0xcb, 0x5e, 0xb3, 0x2a, 0xc4, 0x1c, 0xb8, 0xe3, 0x62, 0x1b, 0xa1, 0xd2, 0x91, 0xd0, 0xc5, 0xda, 0x24, 0x9f, 0x15 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.15", - /* Message to be signed */ - 15, - { 0xa6, 0x42, 0xf0, 0xf7, 0x0b, 0x4b, 0xd3, 0xb5, 0x4b, 0xe2, 0x20, 0x11, 0x9a, 0x7f, 0x79 } -, - /* Signature */ - 129, - { 0x00, 0xa0, 0x33, 0x6e, 0x63, 0x67, 0x52, 0x7b, 0xbf, 0x13, 0xb0, 0xa9, 0x33, 0xb6, 0x31, 0xc7, 0x2c, 0xb3, 0x3e, 0xab, 0xbc, 0x29, 0x2a, 0x0f, 0x8f, 0x75, 0x55, 0x0c, 0x22, 0x30, 0xfe, 0x82, 0x57, 0xf2, 0xaf, 0x76, 0xd5, 0x43, 0xcc, 0xd1, 0x07, 0xdd, 0x2c, 0x87, 0x78, 0xd3, 0xac, 0x8a, 0x7b, 0x5b, 0xb4, 0xac, 0xfa, 0x57, 0xf2, 0xaf, 0x6a, 0x23, 0x14, 0x95, 0x23, 0x5a, 0x51, 0xda, 0xdd, 0xb0, 0x83, 0xe3, 0x73, 0xb7, 0x77, 0xa9, 0x5c, 0xf9, 0xc4, 0xa9, 0xb6, 0xbe, 0x77, 0x51, 0xb6, 0x5f, 0xeb, 0x62, 0x3a, 0xb3, 0x34, 0x43, 0x36, 0x54, 0xb1, 0x21, 0x0f, 0x7f, 0x78, 0x2b, 0x17, 0x25, 0xc6, 0xba, 0x4f, 0xfd, 0x20, 0xd1, 0x7e, 0xd4, 0xb6, 0xec, 0x4a, 0x3a, 0xf6, 0x4b, 0xd2, 0x73, 0x47, 0x55, 0xb7, 0x73, 0x9e, 0xeb, 0xf4, 0x18, 0xf0, 0x9d, 0x3a, 0xff, 0x28, 0x9d, 0x13 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.16", - /* Message to be signed */ - 230, - { 0xca, 0x16, 0xe4, 0x3d, 0x9c, 0x82, 0xd9, 0xd3, 0x0c, 0x8f, 0xcb, 0x40, 0x22, 0x93, 0x3c, 0xff, 0xc7, 0xd7, 0x4c, 0xaa, 0x0d, 0xf4, 0x86, 0x35, 0x09, 0x31, 0x8e, 0xda, 0xba, 0x4e, 0x0d, 0x51, 0x99, 0x77, 0x9c, 0x03, 0x50, 0x4a, 0xff, 0xa2, 0x7d, 0x87, 0x19, 0x1b, 0x6b, 0xf6, 0x86, 0xa8, 0x4d, 0x97, 0x9a, 0x2f, 0xdd, 0x5b, 0x8a, 0x4c, 0x49, 0x32, 0x14, 0x45, 0xc6, 0xf7, 0x5d, 0x25, 0x23, 0x59, 0x17, 0xad, 0xbe, 0xe2, 0xa5, 0xcf, 0xf8, 0xa9, 0x7a, 0xef, 0x78, 0xc0, 0x09, 0x22, 0x10, 0x11, 0xd8, 0x3c, 0x0f, 0x9d, 0x37, 0x16, 0x08, 0x75, 0xaf, 0x73, 0x67, 0x71, 0x8b, 0x10, 0xee, 0xc3, 0xb4, 0x29, 0x90, 0xe6, 0x43, 0xf6, 0x37, 0x07, 0xcf, 0xbb, 0x30, 0xa7, 0xfa, 0x74, 0xab, 0x16, 0xa7, 0xeb, 0xf1, 0xc8, 0x38, 0xc3, 0xb2, 0x26, 0x37, 0xb6, 0x3c, 0xcd, 0xcb, 0x6e, 0xb3, 0x4c, 0x62, 0xeb, 0xa9, 0xe9, 0x48, 0xc7, 0xac, 0x90, 0x30, 0xf0, 0x63, 0x77, 0x29, 0xd3, 0xe2, 0x78, 0x0a, 0xe6, 0xbe, 0x4d, 0x2f, 0xaf, 0x34, 0x6c, 0x11, 0x63, 0xd3, 0xf9, 0x82, 0x48, 0x19, 0x3a, 0x76, 0x39, 0x9f, 0xb7, 0x84, 0xca, 0xcf, 0x68, 0xfb, 0x33, 0xc7, 0x4b, 0xab, 0xc9, 0xdd, 0xb6, 0x27, 0x52, 0x0c, 0x0c, 0x61, 0x12, 0x34, 0x64, 0x68, 0xcf, 0x20, 0xa8, 0xe0, 0x2c, 0xc9, 0xa9, 0xbd, 0x27, 0x91, 0x0e, 0x83, 0x29, 0x7b, 0x85, 0xe8, 0x57, 0x32, 0x4a, 0x01, 0x00, 0xf5, 0xcd, 0xd5, 0x93, 0x1b, 0x6a, 0x6d, 0xe0, 0x5f, 0x94, 0x83, 0x3a, 0xa8, 0x61, 0x0a, 0x3a, 0x4b, 0x08, 0xa5, 0xa3, 0x93, 0x53 } -, - /* Signature */ - 129, - { 0x02, 0x48, 0x59, 0x23, 0x3f, 0xb9, 0xdb, 0x7c, 0xd1, 0x41, 0xf4, 0xb8, 0x77, 0x6a, 0x1d, 0x83, 0xe1, 0x03, 0xdb, 0x3a, 0xc9, 0x42, 0x89, 0xd3, 0x6e, 0xf4, 0x0f, 0x5e, 0x6e, 0x63, 0xc3, 0x12, 0x12, 0xaf, 0xdd, 0xdd, 0x16, 0x88, 0xc2, 0xc1, 0xc8, 0xd4, 0xdb, 0x04, 0x71, 0x9e, 0x1c, 0x6e, 0x8d, 0xbf, 0x7d, 0x60, 0xbe, 0x25, 0xf1, 0xd6, 0x88, 0x87, 0xfd, 0xad, 0xda, 0x3d, 0x11, 0x2e, 0x3d, 0x0d, 0x24, 0xc0, 0xcd, 0xd7, 0x98, 0x8a, 0x55, 0xc7, 0x10, 0x29, 0x40, 0x08, 0x2d, 0x1a, 0xc3, 0x1f, 0xb3, 0xef, 0xab, 0xe7, 0xc2, 0x88, 0xcb, 0x4e, 0xe7, 0x2a, 0x99, 0x2a, 0xc9, 0x6d, 0x1e, 0xdd, 0x78, 0xec, 0x72, 0x82, 0x73, 0x97, 0x0a, 0x79, 0x69, 0x95, 0xc3, 0xe2, 0xa3, 0x85, 0x81, 0xe2, 0x28, 0x03, 0x25, 0x8e, 0xb4, 0xcd, 0x9d, 0xa2, 0x04, 0x0f, 0xaf, 0x74, 0x1c, 0x54, 0x2a } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.17", - /* Message to be signed */ - 162, - { 0x3b, 0xaa, 0x7e, 0x9a, 0xda, 0x21, 0x43, 0xf8, 0x48, 0x82, 0x5d, 0x22, 0x93, 0x67, 0x04, 0xd1, 0xc9, 0x97, 0xb2, 0xda, 0x76, 0x76, 0x9c, 0x98, 0x6f, 0xa1, 0x52, 0xb8, 0x98, 0xae, 0xb1, 0x1c, 0x10, 0xb9, 0x45, 0x79, 0x76, 0x4f, 0x9d, 0xc9, 0x33, 0x65, 0x2a, 0x81, 0x03, 0x67, 0x04, 0x76, 0x95, 0x8d, 0x59, 0x86, 0x7a, 0xb2, 0x4a, 0x97, 0x12, 0x84, 0x05, 0x6e, 0x99, 0xc6, 0x48, 0xb7, 0x7e, 0x7a, 0x65, 0x36, 0x44, 0x87, 0x0f, 0xe4, 0xc7, 0xce, 0xf3, 0x7f, 0x90, 0x01, 0x60, 0x48, 0x72, 0xad, 0xed, 0xe1, 0x6a, 0xac, 0xed, 0x8a, 0xa5, 0xdf, 0x42, 0x05, 0x33, 0x04, 0xe4, 0xd1, 0x71, 0x12, 0x0d, 0x7a, 0xb3, 0xce, 0x81, 0xa4, 0xd1, 0xa2, 0x74, 0x98, 0xd1, 0x38, 0x01, 0x8f, 0x66, 0x21, 0xbd, 0xfc, 0x1d, 0x53, 0xe7, 0xf3, 0xc1, 0xa5, 0xaa, 0x5d, 0x62, 0xb0, 0x9a, 0x55, 0x4a, 0x56, 0xf1, 0xed, 0x4f, 0x38, 0x5a, 0x07, 0x68, 0xea, 0xa2, 0xda, 0x0c, 0x9f, 0x56, 0x37, 0x03, 0x4c, 0x2e, 0xef, 0x58, 0xcc, 0x35, 0x17, 0x8b, 0xc2, 0xa6, 0x27, 0x2c, 0xf5, 0x29, 0xb6, 0x5a, 0xdf } -, - /* Signature */ - 129, - { 0x01, 0xe6, 0x3b, 0x86, 0xd0, 0xc1, 0x59, 0x99, 0x09, 0x3d, 0x44, 0x28, 0xaf, 0x7c, 0x6d, 0xe6, 0x48, 0x07, 0x45, 0xd8, 0x19, 0xe4, 0x29, 0x62, 0x3f, 0x47, 0x2b, 0x45, 0xde, 0x61, 0xaa, 0x56, 0x7b, 0x60, 0xd9, 0x94, 0x79, 0x2a, 0x0d, 0x11, 0x65, 0x80, 0x55, 0x98, 0xf4, 0xe2, 0x1f, 0xe6, 0x13, 0x99, 0x9a, 0x96, 0x22, 0x5d, 0x0b, 0xba, 0x98, 0xf9, 0xcf, 0xbe, 0xe8, 0x3a, 0xf5, 0x85, 0xfa, 0x07, 0x84, 0x39, 0xa7, 0x42, 0x51, 0x5a, 0xe2, 0x18, 0xec, 0x31, 0xf8, 0xd5, 0x08, 0xf2, 0x9b, 0x0e, 0x58, 0x75, 0xfc, 0xa8, 0xf0, 0x4f, 0x11, 0xa1, 0xc8, 0x2f, 0x2b, 0xb0, 0xae, 0x52, 0x8f, 0xda, 0xd3, 0xca, 0x50, 0x75, 0xbb, 0x3f, 0x41, 0xbb, 0x57, 0x83, 0x34, 0x81, 0x33, 0xfb, 0xa8, 0xa0, 0xb3, 0xad, 0x95, 0x1a, 0x1a, 0x64, 0x9c, 0xa0, 0xf9, 0x75, 0x8b, 0x20, 0xc8, 0x70, 0xfd } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.18", - /* Message to be signed */ - 184, - { 0x7e, 0xb3, 0xc9, 0x8e, 0x46, 0xfd, 0x1b, 0x5c, 0x9f, 0xf1, 0xb1, 0x1b, 0xe1, 0x61, 0x9b, 0x56, 0x60, 0x57, 0xf2, 0x6c, 0x55, 0xe2, 0x88, 0xf4, 0x84, 0x4c, 0xcd, 0x50, 0xba, 0xa9, 0x1b, 0x03, 0x8d, 0x60, 0x95, 0x83, 0x6f, 0x77, 0x1f, 0xc1, 0xc4, 0x25, 0xfb, 0x53, 0x3e, 0xf2, 0xb1, 0xdc, 0x4a, 0x3e, 0x94, 0x9b, 0xb9, 0x95, 0x25, 0xc2, 0x8f, 0xe8, 0xa3, 0xe9, 0x31, 0x78, 0xf3, 0xa0, 0xac, 0x97, 0xfd, 0x5d, 0xaa, 0x81, 0xb5, 0x92, 0x86, 0x18, 0x8e, 0x17, 0xb4, 0x4b, 0x37, 0x71, 0xbc, 0xa8, 0x55, 0xd8, 0x5f, 0x3c, 0x4d, 0x28, 0x6f, 0x10, 0x68, 0x10, 0xf4, 0xe5, 0x22, 0xea, 0x05, 0x83, 0x4f, 0x11, 0xa3, 0x1e, 0x89, 0xc3, 0x59, 0x90, 0xc5, 0x1b, 0x08, 0x0c, 0x03, 0xa6, 0x61, 0xe3, 0xd4, 0xa1, 0xb9, 0x7a, 0x2c, 0x27, 0x94, 0x0f, 0x5b, 0x2e, 0x41, 0x2b, 0x69, 0x9e, 0xa6, 0x10, 0xe8, 0x99, 0x6a, 0xe6, 0x71, 0x5a, 0xb6, 0xe2, 0x09, 0x69, 0xb6, 0xaa, 0x54, 0xcc, 0x72, 0x31, 0x9d, 0xfe, 0xe6, 0x3b, 0xd2, 0xca, 0xcf, 0xd0, 0x60, 0x8d, 0x40, 0xe2, 0xb4, 0x03, 0x95, 0xfe, 0x55, 0xdd, 0xa5, 0xbe, 0xa3, 0xb0, 0xf9, 0xb9, 0x4b, 0x5a, 0xad, 0xc0, 0x98, 0xdd, 0x56, 0x8d, 0xa3, 0x95, 0xdb, 0x2d, 0x44, 0xe4 } -, - /* Signature */ - 129, - { 0x01, 0x5c, 0xfa, 0xd9, 0x6e, 0x4b, 0x57, 0xd9, 0xcb, 0xb5, 0x78, 0xc7, 0x90, 0x74, 0xa2, 0xba, 0x86, 0x9c, 0x06, 0x02, 0x88, 0x68, 0xc5, 0xa3, 0xfc, 0xf4, 0xa5, 0xe3, 0x61, 0x83, 0x1b, 0xd8, 0xc0, 0x2c, 0x25, 0xb1, 0x2b, 0x90, 0x23, 0x4c, 0x8e, 0xa4, 0x82, 0x2f, 0xb6, 0x5e, 0x82, 0xd0, 0x91, 0xa9, 0x0f, 0x89, 0xb6, 0xc1, 0x15, 0x6e, 0x4b, 0x44, 0xd7, 0x8d, 0x32, 0xa6, 0x47, 0x37, 0xd6, 0x15, 0x87, 0xc0, 0xce, 0x3f, 0x4b, 0x34, 0x3e, 0x71, 0xf8, 0xf7, 0xa8, 0x4c, 0x6f, 0x8f, 0xc8, 0xae, 0xf8, 0xf4, 0x64, 0xc8, 0xb3, 0x59, 0xe4, 0xfb, 0x18, 0xad, 0xc6, 0x99, 0xc5, 0xa0, 0x76, 0x45, 0x37, 0x55, 0x93, 0x0c, 0x5f, 0x6f, 0xa7, 0x07, 0x1f, 0x8f, 0xec, 0xb8, 0x63, 0x1a, 0xa4, 0x14, 0xf5, 0x08, 0x35, 0x03, 0x8b, 0xe7, 0xab, 0x05, 0xa4, 0xb0, 0x50, 0xf3, 0xf5, 0x6e, 0x86 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.19", - /* Message to be signed */ - 184, - { 0x6a, 0x45, 0xee, 0x0b, 0x7e, 0xa8, 0x03, 0x68, 0xb2, 0xc4, 0x29, 0xaf, 0x28, 0x81, 0x53, 0xf4, 0x56, 0xcc, 0x66, 0x32, 0x17, 0xa8, 0xff, 0xcd, 0x2a, 0xa0, 0x5c, 0x5d, 0x32, 0x2d, 0xb7, 0x57, 0x56, 0xcd, 0xbc, 0x0f, 0x68, 0x41, 0x41, 0xfe, 0x6b, 0xca, 0xe1, 0x89, 0xbf, 0x24, 0xde, 0x1c, 0x8e, 0xdd, 0x5b, 0x11, 0x36, 0x44, 0xa4, 0x50, 0x0d, 0x0d, 0x4f, 0xf5, 0x80, 0x08, 0x36, 0x40, 0xe1, 0x2a, 0x2c, 0x95, 0xde, 0x69, 0xe9, 0x59, 0x6b, 0xfb, 0x1d, 0x44, 0x36, 0x57, 0x86, 0xe1, 0x67, 0xd0, 0x25, 0xd8, 0x9e, 0xa2, 0xf8, 0xd1, 0x3a, 0x0e, 0x64, 0x77, 0xf1, 0x3b, 0x85, 0xbb, 0xdc, 0xf1, 0x60, 0x77, 0x4b, 0x18, 0x25, 0x8c, 0xa0, 0xbe, 0xc0, 0xbd, 0x7b, 0xf1, 0x39, 0x11, 0xb3, 0x89, 0x6b, 0x48, 0x89, 0xfa, 0x3d, 0xe0, 0x4a, 0xb2, 0x6b, 0xd6, 0x82, 0xb4, 0xab, 0x43, 0x7c, 0x0c, 0x17, 0xf3, 0x53, 0xa2, 0x3a, 0x43, 0xe9, 0x2e, 0x20, 0xe7, 0xf8, 0x20, 0x69, 0x4e, 0x40, 0x3a, 0xab, 0xdd, 0x5d, 0x19, 0x6e, 0x93, 0x89, 0x5b, 0x47, 0x92, 0x55, 0xdf, 0x40, 0x30, 0xad, 0x8c, 0xe3, 0xa5, 0x3d, 0x15, 0x73, 0xbe, 0x22, 0x6d, 0x81, 0xaa, 0x18, 0xe4, 0x85, 0x89, 0x57, 0xa2, 0xd0, 0xa3, 0x35, 0x9c, 0x2e, 0x7a } -, - /* Signature */ - 129, - { 0x01, 0x64, 0xf0, 0xdb, 0xcd, 0xd9, 0x52, 0x11, 0x86, 0xa2, 0x80, 0x84, 0xa3, 0xf3, 0xae, 0x6a, 0xac, 0xb6, 0x59, 0x6b, 0x85, 0x6e, 0x8a, 0xab, 0x2e, 0x72, 0xa7, 0xf2, 0x33, 0xd6, 0x2d, 0x2d, 0x3e, 0xf1, 0x96, 0xd3, 0x78, 0x7e, 0x4b, 0x04, 0x57, 0x31, 0xda, 0x9c, 0x61, 0x50, 0xad, 0x9d, 0x5f, 0x91, 0x8c, 0x6b, 0x06, 0xc9, 0x2a, 0x11, 0xa0, 0xbf, 0xd5, 0xef, 0xcc, 0xb7, 0xb0, 0x3a, 0x01, 0x07, 0x24, 0x14, 0x39, 0xd3, 0x4d, 0x31, 0x3d, 0x35, 0xb3, 0x6a, 0x0d, 0x8c, 0xa0, 0x81, 0x3c, 0x36, 0x23, 0xb2, 0xbd, 0x78, 0xf2, 0xe3, 0xa9, 0x71, 0x99, 0x64, 0x8d, 0xa3, 0x58, 0x06, 0xff, 0xc5, 0x8e, 0xed, 0x33, 0xac, 0x9f, 0xcf, 0x79, 0x53, 0x8f, 0xa8, 0x89, 0x15, 0xb1, 0xa5, 0x75, 0x85, 0x78, 0xb9, 0xa2, 0xdb, 0x01, 0x38, 0x04, 0xbf, 0x32, 0xe7, 0xa5, 0x6d, 0xc7, 0x24, 0x37 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 8.20", - /* Message to be signed */ - 79, - { 0x92, 0xa4, 0xb4, 0xbc, 0xe3, 0xda, 0xa0, 0xa7, 0xa6, 0x4b, 0x72, 0xad, 0x87, 0x1f, 0x3a, 0xa8, 0xea, 0xb5, 0xac, 0x40, 0x11, 0xaa, 0xae, 0xa2, 0xce, 0xeb, 0xa8, 0x92, 0x77, 0xc6, 0x43, 0x29, 0x57, 0x26, 0x26, 0xc9, 0x56, 0x88, 0x4f, 0x48, 0x54, 0xf8, 0x61, 0x3d, 0x22, 0x51, 0x8b, 0x14, 0xf0, 0x38, 0xfc, 0xaf, 0x9e, 0x68, 0xe1, 0x30, 0x02, 0xfb, 0x0a, 0x00, 0xa7, 0x8c, 0xc2, 0xea, 0x51, 0x44, 0xfc, 0x13, 0x11, 0x76, 0xd5, 0xe5, 0xd6, 0x7e, 0x10, 0x6a, 0x99, 0x87, 0x9c } -, - /* Signature */ - 129, - { 0x01, 0x24, 0xfd, 0x8b, 0x2a, 0xcf, 0x22, 0x37, 0xfc, 0x71, 0xa2, 0xee, 0x97, 0xe2, 0x6a, 0x4d, 0xab, 0x7d, 0xea, 0x82, 0x9e, 0x15, 0xbe, 0xb2, 0xf8, 0xa7, 0x37, 0x91, 0xa0, 0xba, 0x15, 0x2d, 0xa5, 0xb0, 0x6a, 0xdf, 0x34, 0x1d, 0x74, 0x09, 0xe8, 0xd3, 0xd3, 0x17, 0x5b, 0x51, 0x01, 0x34, 0x32, 0x5a, 0x35, 0x32, 0x97, 0xa8, 0xd6, 0xd6, 0x6c, 0x09, 0x70, 0x03, 0x22, 0xee, 0xc5, 0xe3, 0x3f, 0x62, 0x48, 0x6a, 0x21, 0x11, 0x30, 0xd7, 0x4c, 0x70, 0xdd, 0x92, 0x5d, 0xf8, 0x60, 0x2a, 0xe3, 0xc4, 0xc6, 0xcc, 0xaf, 0x93, 0xcc, 0x9a, 0x97, 0x0d, 0x1e, 0x85, 0x32, 0x60, 0xee, 0xc6, 0x94, 0x81, 0xc5, 0xf1, 0x33, 0x7e, 0x9d, 0xd3, 0xae, 0xda, 0x88, 0xd8, 0x82, 0x99, 0xbe, 0x08, 0x09, 0x5b, 0x71, 0x5a, 0x5b, 0x21, 0x66, 0xe6, 0x17, 0xc9, 0x26, 0x72, 0x2c, 0xed, 0xd6, 0xef, 0x34 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 9: A 1027-bit RSA key pair", -{ - /* Modulus */ - 129, - { 0x05, 0xf3, 0x74, 0x34, 0x88, 0x26, 0x1c, 0x6f, 0x06, 0x25, 0xe4, 0x32, 0xfa, 0x6e, 0xb8, 0x7f, 0xb1, 0x2b, 0x26, 0x21, 0x82, 0x90, 0xbf, 0xe3, 0x96, 0xba, 0x76, 0xea, 0x42, 0x61, 0x32, 0x2f, 0x81, 0x43, 0xe4, 0xb4, 0xeb, 0xcd, 0x5d, 0x2a, 0xe1, 0x9b, 0x0f, 0x9d, 0x8d, 0xcd, 0x2f, 0xc7, 0xe6, 0x82, 0x32, 0x08, 0xa7, 0x51, 0x83, 0x3d, 0x3b, 0x4e, 0x8e, 0x38, 0x7c, 0x39, 0xf8, 0xed, 0x6b, 0xbc, 0x9f, 0xda, 0xec, 0x32, 0xd3, 0xea, 0x9a, 0xbb, 0xff, 0x57, 0x47, 0x23, 0xf3, 0xf1, 0x22, 0x99, 0x90, 0x96, 0x3e, 0xa4, 0xfd, 0x9f, 0xb5, 0x44, 0xf6, 0x42, 0x90, 0xaa, 0x2e, 0xa7, 0xda, 0x63, 0x11, 0x91, 0xa2, 0x0d, 0xbc, 0x94, 0x23, 0xb4, 0x61, 0x23, 0x3b, 0x93, 0x72, 0x49, 0xf2, 0xf4, 0xea, 0x10, 0x92, 0x8f, 0xae, 0x2a, 0x6f, 0xe6, 0x64, 0xf1, 0x2c, 0x09, 0x23, 0xed, 0x11 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 129, - { 0x01, 0x4c, 0xc3, 0x26, 0x32, 0x52, 0xf8, 0xc4, 0xfb, 0x77, 0xcd, 0x57, 0xa1, 0x42, 0x0c, 0x04, 0xc0, 0x43, 0x27, 0x8a, 0x0c, 0x45, 0xe7, 0xd4, 0x23, 0x79, 0x49, 0x3e, 0x34, 0x0f, 0x9c, 0xf1, 0xa9, 0x6f, 0x96, 0x06, 0x3a, 0xb7, 0x59, 0xd1, 0x63, 0x04, 0x06, 0xae, 0x28, 0x6a, 0x18, 0x34, 0xb6, 0xd1, 0xdb, 0x71, 0xee, 0x72, 0x2c, 0x93, 0x74, 0x5f, 0xdd, 0x4a, 0xd3, 0x3f, 0xaa, 0x72, 0xd8, 0x93, 0x51, 0xda, 0x69, 0x1a, 0x7d, 0x0a, 0x71, 0xd2, 0xc5, 0x5c, 0x57, 0x97, 0xd2, 0xcc, 0xb3, 0xb4, 0x62, 0x62, 0x08, 0xbc, 0x5f, 0x5c, 0x84, 0xfe, 0x43, 0x2f, 0x66, 0x4d, 0xc3, 0x0e, 0xde, 0x09, 0x63, 0xe6, 0x58, 0x45, 0x2b, 0x2a, 0xd5, 0xef, 0xa4, 0x93, 0x5a, 0x12, 0x2f, 0x46, 0x1d, 0x1e, 0xab, 0x84, 0x1c, 0x8a, 0xe0, 0xe6, 0xe8, 0x2f, 0xc1, 0xfe, 0xe8, 0x5d, 0x18, 0x1c, 0xbd } -, - /* Prime 1 */ - 65, - { 0x02, 0x94, 0xea, 0x0f, 0xa3, 0x4e, 0xc3, 0x13, 0x72, 0x33, 0x44, 0x20, 0x2e, 0x85, 0xec, 0xa2, 0x4b, 0x5d, 0xf6, 0x46, 0x1a, 0x1c, 0x30, 0x08, 0x7d, 0xca, 0xb5, 0xd2, 0x53, 0x39, 0x4a, 0xf5, 0x66, 0x6f, 0x03, 0x5c, 0x33, 0x35, 0x41, 0x0d, 0x8b, 0xb9, 0x86, 0x62, 0xc9, 0x78, 0xf6, 0x1d, 0x37, 0xdb, 0x4d, 0x83, 0xf0, 0xb2, 0x4c, 0xdc, 0xb6, 0x3f, 0xca, 0xdb, 0x79, 0xc5, 0x27, 0xf5, 0xab } -, - /* Prime 2 */ - 65, - { 0x02, 0x4e, 0x19, 0x16, 0x52, 0xf1, 0x70, 0x9f, 0xf4, 0x74, 0x37, 0x40, 0x85, 0x81, 0x88, 0x8a, 0x9d, 0xa1, 0x09, 0x17, 0xc5, 0xb5, 0xab, 0xaf, 0x91, 0x46, 0x10, 0x9f, 0xda, 0xc6, 0x94, 0x76, 0x6f, 0x4c, 0x8f, 0xb0, 0x57, 0x96, 0x8e, 0x84, 0x8d, 0x99, 0x58, 0x6b, 0x05, 0xf8, 0xa0, 0x2f, 0xba, 0x6c, 0xa1, 0xeb, 0x12, 0xba, 0x08, 0xdf, 0xd4, 0x9b, 0x62, 0xc2, 0x7a, 0x8f, 0x15, 0xf4, 0x33 } -, - /* Prime exponent 1 */ - 65, - { 0x01, 0x22, 0x7f, 0x36, 0xdc, 0x6b, 0x14, 0x27, 0x89, 0xfc, 0xaa, 0xa7, 0x12, 0x8b, 0xdf, 0x14, 0xfe, 0xd7, 0x90, 0x16, 0x04, 0x07, 0xfb, 0xbc, 0xdf, 0xbd, 0xa7, 0xe9, 0x88, 0x97, 0x18, 0x31, 0x81, 0x12, 0xae, 0x81, 0x6a, 0x28, 0xb0, 0x2d, 0x4a, 0x0b, 0x03, 0xdc, 0x8b, 0xfd, 0xd4, 0xff, 0xc6, 0xbb, 0x67, 0xf8, 0xe4, 0x65, 0x1a, 0x8f, 0xb0, 0xb3, 0x9d, 0x70, 0x96, 0xb7, 0x67, 0xf6, 0xfd } -, - /* Prime exponent 2 */ - 65, - { 0x02, 0x25, 0xec, 0x05, 0x3c, 0xe8, 0xda, 0x6f, 0x86, 0xad, 0xe3, 0x6b, 0xd2, 0xbf, 0x43, 0x93, 0x02, 0x91, 0x37, 0x5b, 0x1b, 0x1a, 0x51, 0xd4, 0x7d, 0x0b, 0x11, 0xa5, 0x17, 0x8a, 0x26, 0x83, 0x34, 0xf7, 0xe1, 0x94, 0x92, 0x1b, 0xb1, 0xd7, 0x5f, 0xea, 0x7f, 0x56, 0xc5, 0xaa, 0xcd, 0x05, 0x8d, 0xb3, 0x7d, 0x36, 0x08, 0x2e, 0xac, 0xe4, 0x83, 0x4b, 0x07, 0xbf, 0x7b, 0xdd, 0xea, 0xb4, 0xb7 } -, - /* Coefficient */ - 65, - { 0x02, 0x0b, 0xd0, 0xf5, 0x15, 0x80, 0x87, 0xed, 0xe3, 0x8c, 0xb5, 0xdc, 0x66, 0xe4, 0x01, 0x0a, 0xe4, 0xe4, 0x8c, 0xc0, 0x04, 0x2e, 0x15, 0x2c, 0xd5, 0xee, 0xb0, 0x51, 0xc9, 0xec, 0x45, 0xad, 0x23, 0x40, 0x24, 0x53, 0x52, 0xc0, 0x1d, 0x94, 0xc6, 0xa5, 0x26, 0xaa, 0x5a, 0x45, 0x4c, 0xdb, 0xae, 0xac, 0x85, 0x95, 0x34, 0x9b, 0xbe, 0x6a, 0x8d, 0x55, 0x19, 0xa3, 0xc9, 0xb7, 0xd0, 0x7c, 0x3a } - -} -, -{{ - "PKCS#1 v1.5 Signature Example 9.1", - /* Message to be signed */ - 13, - { 0x82, 0xe5, 0xc5, 0xaa, 0xe6, 0x4e, 0x60, 0x8b, 0x27, 0x50, 0x4b, 0x91, 0xdb } -, - /* Signature */ - 129, - { 0x01, 0x45, 0x82, 0xda, 0xe9, 0x35, 0xe6, 0xb2, 0xae, 0xff, 0x7d, 0x72, 0x50, 0x89, 0xda, 0xb0, 0x58, 0xc6, 0x78, 0xb2, 0xee, 0x28, 0xbc, 0xd4, 0x44, 0xa7, 0x2b, 0xdf, 0xac, 0x31, 0x46, 0x3e, 0x18, 0xe9, 0x4d, 0x7b, 0x5e, 0xcc, 0x84, 0xa4, 0x31, 0x69, 0x6a, 0x1c, 0xdd, 0x79, 0xf9, 0xc0, 0x8c, 0x33, 0xe1, 0xd4, 0xb3, 0x22, 0xdd, 0x27, 0x7b, 0x50, 0x3a, 0xe6, 0xe4, 0xf9, 0xc3, 0x15, 0x30, 0x5b, 0x43, 0x72, 0xfe, 0x45, 0xfe, 0x4a, 0x7e, 0xbb, 0xfc, 0x4a, 0xe5, 0x90, 0xfa, 0x3c, 0x52, 0x0b, 0xf8, 0x28, 0x15, 0x8f, 0x78, 0x20, 0x29, 0x9f, 0x09, 0xb1, 0x34, 0xed, 0xe1, 0x17, 0xb6, 0x72, 0xa1, 0xea, 0xc2, 0xf0, 0x50, 0xc0, 0x44, 0xb2, 0x55, 0xca, 0x8d, 0x45, 0x52, 0xd4, 0xb5, 0xf3, 0xf5, 0x7b, 0x87, 0x34, 0xdb, 0x24, 0x74, 0x50, 0x07, 0x44, 0xa5, 0x33, 0x75, 0x00, 0x5e } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Signature Example 9.2", - /* Message to be signed */ - 104, - { 0x77, 0xe0, 0xfb, 0xdc, 0xd6, 0xe0, 0x49, 0x8f, 0xc5, 0x68, 0x4f, 0xf1, 0x3d, 0x4c, 0x9f, 0x5b, 0x78, 0x0e, 0x77, 0xe2, 0x46, 0x46, 0x37, 0xff, 0x66, 0xea, 0xa2, 0xd7, 0xd9, 0xc3, 0xde, 0xfb, 0x9b, 0x0e, 0x3a, 0x38, 0x37, 0x73, 0xdb, 0x97, 0xa4, 0xfb, 0x49, 0x1b, 0xeb, 0x21, 0x14, 0xfd, 0xea, 0x2c, 0x2a, 0x48, 0x0f, 0xfc, 0x21, 0x9b, 0x79, 0x6a, 0xd8, 0x05, 0xd5, 0x4f, 0xbe, 0xc1, 0x7d, 0xcb, 0x34, 0xb1, 0xda, 0x17, 0x96, 0xcb, 0x9c, 0xd5, 0xf2, 0x41, 0x6a, 0xb5, 0xe7, 0x66, 0xf8, 0xe0, 0x06, 0x91, 0x8e, 0xbe, 0xc1, 0x82, 0x29, 0x98, 0xa2, 0x8f, 0xff, 0xa6, 0x23, 0x0c, 0x07, 0x87, 0x26, 0xfb, 0xa2, 0xe4, 0xa7, 0xb0 } -, - /* Signature */ - 129, - { 0x05, 0x93, 0x27, 0xce, 0xe7, 0x26, 0xff, 0xb6, 0x03, 0xe8, 0xa9, 0xfc, 0xd5, 0x74, 0xab, 0xa9, 0xcb, 0xdf, 0xc3, 0x6c, 0x0a, 0xa6, 0x6f, 0xcf, 0xe3, 0x55, 0x5c, 0xf2, 0xef, 0x35, 0x82, 0xd3, 0x22, 0x0d, 0xf9, 0xd6, 0xbf, 0x8a, 0x78, 0xe3, 0xff, 0xf0, 0xc1, 0x29, 0xb3, 0xab, 0xb3, 0xdc, 0x71, 0x21, 0x12, 0xa2, 0x05, 0x6b, 0xca, 0x08, 0x63, 0x65, 0x54, 0xc1, 0xac, 0x57, 0xdf, 0x87, 0xf3, 0x66, 0x41, 0x52, 0x68, 0x8c, 0x6a, 0xc7, 0x2e, 0x6b, 0x88, 0xf5, 0x63, 0x7c, 0xd7, 0x3f, 0x16, 0x69, 0x89, 0xc8, 0x29, 0x09, 0xfb, 0x67, 0xbc, 0x1f, 0xa2, 0xe2, 0xd5, 0x23, 0xe5, 0x1c, 0x91, 0x8f, 0x2b, 0xbe, 0xc1, 0xd7, 0x52, 0x02, 0xaf, 0x24, 0x0a, 0x61, 0xcd, 0x2d, 0xcc, 0x55, 0x5c, 0xae, 0xae, 0x9a, 0x68, 0x57, 0x0d, 0x77, 0x81, 0x0c, 0xf1, 0xdf, 0x81, 0x23, 0xff, 0x41, 0xc0 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.3", - /* Message to be signed */ - 116, - { 0x0d, 0xfa, 0x5b, 0xaa, 0x1c, 0xdd, 0xb8, 0x34, 0x70, 0x7a, 0x5f, 0x8c, 0xc6, 0xec, 0xe5, 0x71, 0xa7, 0xa7, 0xfc, 0xa5, 0x67, 0x63, 0x62, 0xd2, 0xb2, 0x37, 0x41, 0xa9, 0x57, 0x0a, 0xe2, 0x63, 0x8f, 0x6b, 0x1c, 0x23, 0x89, 0x85, 0x36, 0x75, 0xcc, 0xc6, 0xcc, 0x1b, 0x4c, 0x6d, 0xae, 0x23, 0xcd, 0xa7, 0x1a, 0xb9, 0x6b, 0x5a, 0x2f, 0x22, 0x14, 0x57, 0x50, 0x43, 0x3e, 0x2d, 0x6b, 0xa4, 0x27, 0x6a, 0xc1, 0xff, 0x9a, 0x48, 0xaf, 0xc9, 0xf3, 0x12, 0xf4, 0x13, 0x37, 0x85, 0xca, 0x5a, 0xf3, 0x74, 0x66, 0x74, 0x31, 0x9a, 0x67, 0x57, 0xa1, 0x64, 0xe3, 0x4d, 0x14, 0x98, 0xbd, 0x55, 0x30, 0x90, 0x2e, 0x32, 0x18, 0x55, 0xe3, 0xbe, 0xd4, 0x08, 0x81, 0xf0, 0x05, 0x42, 0x25, 0x6a, 0xa2, 0x1a, 0x42, 0xfc } -, - /* Signature */ - 129, - { 0x01, 0xd1, 0x95, 0x41, 0x69, 0xaf, 0x58, 0x99, 0x3e, 0x14, 0x77, 0x2a, 0x94, 0xf1, 0x9b, 0xc4, 0x79, 0x24, 0xcc, 0xdb, 0x2e, 0x90, 0xee, 0x43, 0x36, 0xfb, 0x6e, 0x08, 0x49, 0x8a, 0xf4, 0xda, 0x26, 0x51, 0xa2, 0xb7, 0x83, 0x6c, 0x31, 0x3a, 0x57, 0xc8, 0x61, 0xb5, 0x51, 0x84, 0xec, 0x3b, 0x15, 0xfa, 0xc8, 0x14, 0x53, 0x51, 0xbe, 0xc5, 0xa7, 0x27, 0x0a, 0x3a, 0xa8, 0x69, 0x4d, 0xb4, 0xe9, 0xa9, 0x2c, 0xb9, 0x32, 0x7b, 0xb7, 0xa4, 0xf7, 0xb7, 0x0d, 0x24, 0x4e, 0xaf, 0x9e, 0xbf, 0xa9, 0xed, 0xfd, 0x4d, 0x54, 0x78, 0x2f, 0x3f, 0x97, 0x26, 0x26, 0x95, 0xb9, 0x7d, 0x41, 0x6e, 0x52, 0x7b, 0xe4, 0xea, 0x2d, 0xef, 0xfe, 0x6e, 0xb5, 0xe0, 0x6c, 0xda, 0x6f, 0x0a, 0x7e, 0x41, 0x66, 0x77, 0xac, 0x0f, 0xd6, 0xf8, 0x19, 0x5d, 0x4c, 0xe2, 0x89, 0x70, 0xd2, 0xca, 0x41, 0x1a, 0x2b } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.4", - /* Message to be signed */ - 45, - { 0x16, 0x7e, 0x79, 0x56, 0x8c, 0x77, 0x36, 0x69, 0x0c, 0x3b, 0xed, 0xbb, 0xc8, 0xd4, 0x24, 0xeb, 0x53, 0x6a, 0x12, 0x85, 0x5a, 0x60, 0xcd, 0xb1, 0x0f, 0x94, 0xba, 0x11, 0x23, 0x17, 0xe9, 0x17, 0xa1, 0xb7, 0xd6, 0xfc, 0xfa, 0xa3, 0x43, 0x8d, 0x68, 0xee, 0x09, 0xfd, 0x47 } -, - /* Signature */ - 129, - { 0x02, 0x9a, 0x2b, 0x90, 0x86, 0x14, 0xed, 0x7a, 0x5f, 0xab, 0x72, 0xf2, 0xa1, 0xc8, 0xe5, 0x48, 0xb6, 0xf8, 0xb8, 0xb4, 0x5b, 0x75, 0x81, 0xfd, 0x24, 0x51, 0xfe, 0x45, 0xa6, 0x22, 0xfa, 0x0f, 0x08, 0xdd, 0x0b, 0xa2, 0xe8, 0xf3, 0xc4, 0x17, 0x20, 0x1e, 0xa0, 0x27, 0x79, 0x10, 0x18, 0x4f, 0x37, 0x6d, 0xa8, 0x03, 0xfa, 0x72, 0xc5, 0x0d, 0x39, 0xbe, 0x28, 0x82, 0x52, 0x6d, 0x1e, 0x85, 0xdf, 0x9a, 0xb1, 0x79, 0x75, 0x76, 0x4a, 0xcf, 0xb2, 0x07, 0x36, 0x6f, 0x6c, 0xd2, 0xc8, 0xb1, 0x36, 0xa9, 0x99, 0xda, 0xaf, 0x48, 0xf1, 0xc0, 0x8a, 0x9e, 0xa1, 0xf0, 0x84, 0x25, 0xc2, 0x1b, 0x65, 0x41, 0x80, 0xda, 0x4a, 0xdf, 0x10, 0x9b, 0x4b, 0xc5, 0xb8, 0x17, 0xdd, 0x67, 0xbf, 0x7d, 0xaa, 0xb4, 0xa3, 0x84, 0x03, 0x4a, 0xb4, 0xad, 0xe6, 0x94, 0x89, 0x8c, 0xfc, 0x27, 0x2a, 0xb6, 0x53 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.5", - /* Message to be signed */ - 229, - { 0x0d, 0x03, 0xf7, 0x12, 0x84, 0xf2, 0xe4, 0x83, 0x24, 0x2d, 0x92, 0x3f, 0xd1, 0xe1, 0x53, 0xbc, 0x16, 0x0f, 0x0c, 0xdc, 0x2c, 0x0b, 0x76, 0xf1, 0xbc, 0x2c, 0xf7, 0xd1, 0xbe, 0x9c, 0xcc, 0x7f, 0xaf, 0xa6, 0xaf, 0xc3, 0x90, 0x34, 0x01, 0x84, 0x09, 0xcc, 0xfd, 0x16, 0x28, 0xa7, 0x0b, 0x35, 0x83, 0x33, 0xbd, 0x96, 0xee, 0xd3, 0xad, 0xf3, 0x14, 0x2b, 0x17, 0x60, 0xbf, 0x8a, 0x9b, 0xb1, 0x9e, 0xa2, 0x47, 0x3a, 0x2e, 0xd8, 0x5c, 0x91, 0xcd, 0x5f, 0x0a, 0x5f, 0x2d, 0x46, 0x32, 0xd6, 0x17, 0x64, 0x19, 0xfa, 0x1d, 0x8c, 0xc8, 0x8b, 0x67, 0x08, 0x47, 0x77, 0x11, 0xea, 0x49, 0x58, 0xa8, 0x39, 0x01, 0xfe, 0xf2, 0x84, 0xf5, 0xa6, 0xc5, 0x02, 0x79, 0x8c, 0x8b, 0xd0, 0xa3, 0x50, 0xf2, 0xea, 0x83, 0xed, 0x18, 0x1e, 0xb9, 0x70, 0xd3, 0x0b, 0x78, 0x13, 0x4c, 0x8e, 0x1d, 0x64, 0xf0, 0xd1, 0x49, 0x5b, 0x70, 0x17, 0x24, 0x5f, 0xa6, 0x9b, 0xd5, 0x74, 0x27, 0xf7, 0x49, 0x20, 0xba, 0x0e, 0xed, 0xe9, 0xcb, 0xa3, 0x4e, 0xb2, 0x22, 0x76, 0xb0, 0xf2, 0x74, 0x13, 0xba, 0x3f, 0x0d, 0xa8, 0xeb, 0xde, 0xdb, 0x9b, 0x0c, 0x80, 0x0e, 0x44, 0x48, 0x1d, 0x01, 0xe6, 0xbb, 0xb0, 0xdf, 0xeb, 0xf9, 0xa1, 0x5e, 0xf6, 0xa7, 0x02, 0x0b, 0x2c, 0x55, 0xee, 0x02, 0x79, 0x11, 0x79, 0x6f, 0x66, 0xf4, 0x3d, 0xd8, 0x46, 0x02, 0x1f, 0x8d, 0x6f, 0x7e, 0x01, 0xbb, 0x80, 0x2b, 0xac, 0x09, 0xfd, 0xe9, 0xb9, 0x04, 0xbe, 0xcf, 0x99, 0x90, 0xe6, 0x84, 0xe6, 0x56, 0x9a, 0xca, 0xeb, 0x3c, 0xc6, 0x4d, 0xcf, 0x5d } -, - /* Signature */ - 129, - { 0x04, 0x22, 0x79, 0x1f, 0xe7, 0xb4, 0x3e, 0x1f, 0x31, 0x9a, 0xe6, 0x7d, 0x91, 0x8c, 0x59, 0x87, 0xe6, 0x39, 0x36, 0x81, 0xa1, 0x86, 0x1c, 0x1e, 0x71, 0xdd, 0x6f, 0xce, 0x19, 0x23, 0x71, 0x0d, 0xbc, 0xed, 0x43, 0x01, 0xfd, 0xcd, 0x4a, 0xad, 0x8f, 0x4f, 0xc2, 0x7d, 0xfa, 0x02, 0xa9, 0x4d, 0x91, 0xbd, 0x96, 0x20, 0x0a, 0xed, 0x8b, 0x3c, 0x5a, 0x96, 0xef, 0xee, 0x7d, 0x11, 0xaf, 0x90, 0x87, 0xfb, 0x81, 0x90, 0x5c, 0x5d, 0xf2, 0xc2, 0x4e, 0xd7, 0xed, 0x63, 0xd5, 0xfc, 0x22, 0xba, 0xbd, 0x6b, 0x9e, 0x3b, 0x57, 0xcd, 0x25, 0x41, 0x9a, 0x78, 0x17, 0xe9, 0x36, 0x16, 0xe9, 0x34, 0x54, 0xb9, 0x58, 0x53, 0xfe, 0x52, 0x04, 0xb5, 0x8c, 0x09, 0x8b, 0x46, 0xde, 0x0b, 0x3f, 0x01, 0xf5, 0x82, 0x76, 0x32, 0x48, 0xc2, 0x90, 0xb9, 0xe8, 0x09, 0x69, 0x65, 0x24, 0x42, 0xa4, 0xd8, 0xe5 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.6", - /* Message to be signed */ - 222, - { 0x4a, 0xca, 0x96, 0x3f, 0x14, 0xac, 0xf6, 0xa7, 0x9c, 0x51, 0x08, 0x1e, 0xf2, 0x57, 0x16, 0x66, 0x71, 0xe3, 0xb4, 0x5f, 0xee, 0x31, 0x24, 0x07, 0xba, 0x3c, 0xf6, 0xd7, 0x11, 0xab, 0xa1, 0xae, 0x25, 0xa4, 0xa8, 0xba, 0x45, 0x48, 0x19, 0xa3, 0x91, 0x2a, 0x31, 0x2e, 0x99, 0x0f, 0x1f, 0xa7, 0x4c, 0xbc, 0xb7, 0x27, 0x77, 0xf1, 0xc7, 0xc6, 0x63, 0xa2, 0xd1, 0xcd, 0xb2, 0xc5, 0xc0, 0x07, 0x4d, 0x45, 0x16, 0xf4, 0x87, 0x17, 0xde, 0x14, 0x03, 0xe8, 0xff, 0x7d, 0x0f, 0x9d, 0xe7, 0xc7, 0xc8, 0x51, 0xf3, 0xe3, 0x51, 0x16, 0x8b, 0xa6, 0xc4, 0x14, 0xbe, 0xd5, 0xd4, 0x2b, 0xae, 0x52, 0x7b, 0x72, 0x4c, 0xeb, 0x83, 0x4d, 0x79, 0xba, 0xcf, 0x70, 0x2c, 0x56, 0xa6, 0x23, 0xc1, 0x68, 0x80, 0x87, 0xdc, 0x9d, 0xe9, 0x53, 0x8e, 0xa7, 0xc7, 0xc7, 0x61, 0xcd, 0x2f, 0xd5, 0x78, 0xf0, 0xdc, 0x3f, 0x55, 0x2f, 0xfb, 0xd4, 0xaf, 0xc7, 0xf4, 0xec, 0x71, 0x22, 0xfd, 0xec, 0x1a, 0x3a, 0x2b, 0x10, 0x4d, 0x53, 0x2d, 0xb8, 0x1c, 0xb9, 0x14, 0x18, 0x54, 0xd5, 0x7d, 0xcf, 0x54, 0xb7, 0x56, 0x01, 0xa9, 0x05, 0xfa, 0xed, 0xa6, 0x5c, 0x2a, 0x7a, 0x7b, 0xc2, 0xb0, 0x29, 0xad, 0x12, 0xdd, 0x7a, 0x6a, 0xd1, 0xb4, 0x0b, 0xe0, 0x40, 0x28, 0xb4, 0xb5, 0xb6, 0x37, 0x30, 0xef, 0x98, 0x44, 0x73, 0xf0, 0xc4, 0x82, 0x14, 0x89, 0x93, 0xc3, 0x6b, 0x44, 0xe5, 0x4b, 0xe9, 0xa5, 0xf2, 0x34, 0xe7, 0x43, 0x29, 0x2a, 0x12, 0xa3, 0x4b, 0xf2, 0xff, 0x73, 0xb7, 0xf7, 0x98 } -, - /* Signature */ - 129, - { 0x04, 0x26, 0x43, 0xc0, 0x3a, 0xda, 0x72, 0x4e, 0x2d, 0xbb, 0x19, 0xcc, 0x07, 0xad, 0x0e, 0x75, 0x22, 0x28, 0xb9, 0xd3, 0x6f, 0x65, 0x3c, 0x6a, 0x9c, 0x0c, 0x29, 0x35, 0x6c, 0xf4, 0xc3, 0xf1, 0xca, 0x19, 0x37, 0x76, 0xd5, 0xfe, 0xf4, 0x3f, 0xc5, 0x54, 0x17, 0x71, 0x66, 0x69, 0xde, 0x9a, 0xb2, 0xad, 0xdd, 0x3e, 0xa8, 0x8a, 0x90, 0xae, 0x93, 0x9a, 0x5e, 0xb1, 0x10, 0x13, 0xe2, 0x28, 0xae, 0x08, 0x16, 0xee, 0xfa, 0x4d, 0xd4, 0x2c, 0x6c, 0x08, 0xc8, 0x78, 0xbd, 0x58, 0xb4, 0x90, 0x40, 0x29, 0x6a, 0x86, 0x3b, 0xfd, 0x11, 0x28, 0x5f, 0x8b, 0xbd, 0x31, 0x5b, 0xe1, 0x6d, 0x2d, 0x65, 0xd7, 0xf5, 0xe5, 0xf2, 0x6a, 0xa9, 0x71, 0x47, 0xf9, 0x5f, 0x5e, 0xe3, 0x6f, 0x98, 0x9a, 0xa8, 0x96, 0xd7, 0xf9, 0xf1, 0xb3, 0x05, 0x1f, 0x82, 0x42, 0x44, 0xf9, 0x05, 0x96, 0x72, 0x3d, 0x11 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.7", - /* Message to be signed */ - 4, - { 0xa7, 0x5a, 0x45, 0x80 } -, - /* Signature */ - 129, - { 0x00, 0x4f, 0xe4, 0xc5, 0xd9, 0x14, 0x3c, 0x85, 0x1e, 0x46, 0x16, 0x7c, 0xc1, 0x81, 0x57, 0x5c, 0x07, 0x5e, 0x69, 0xb9, 0x81, 0xf9, 0xc1, 0x03, 0xf9, 0xd9, 0xb0, 0x11, 0xff, 0x8b, 0x29, 0xba, 0x55, 0xa4, 0x31, 0x87, 0xce, 0x87, 0x77, 0x99, 0x63, 0x17, 0xa0, 0x3c, 0x9d, 0x90, 0xaf, 0xc1, 0x89, 0x0a, 0x9a, 0xde, 0xec, 0x8e, 0xac, 0x08, 0x7f, 0x99, 0xb8, 0x15, 0xe6, 0xeb, 0x2b, 0x87, 0x1d, 0xcd, 0xdc, 0x80, 0x92, 0x24, 0x9d, 0x8f, 0x51, 0x3c, 0x6c, 0x56, 0x09, 0xfd, 0xae, 0x2c, 0xfc, 0x6b, 0xf0, 0x1f, 0xcb, 0x80, 0x25, 0xa4, 0xf7, 0x9b, 0xf1, 0x2a, 0xa8, 0xe1, 0x09, 0x82, 0x9a, 0x0b, 0xb3, 0x8a, 0x09, 0xd1, 0xa3, 0x93, 0x65, 0xe0, 0x40, 0x56, 0x52, 0xda, 0xe4, 0x51, 0xe5, 0xc3, 0x29, 0x8f, 0x47, 0x04, 0x05, 0x98, 0xec, 0xd7, 0x0e, 0x4b, 0x40, 0x33, 0x89, 0xbc, 0xd5 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.8", - /* Message to be signed */ - 109, - { 0x7c, 0xfc, 0x00, 0xa6, 0x43, 0xae, 0x99, 0x79, 0x68, 0x01, 0xee, 0x3c, 0xeb, 0xe2, 0xcb, 0xb1, 0xa6, 0xbe, 0x1c, 0xac, 0x15, 0xc6, 0x48, 0xd4, 0xba, 0x33, 0x01, 0x29, 0x38, 0x71, 0xa9, 0x9f, 0x7c, 0xb1, 0x43, 0xc1, 0x28, 0xc7, 0x7f, 0x96, 0x31, 0x1f, 0xe4, 0x3a, 0x39, 0x01, 0xdf, 0x2c, 0x2a, 0x5c, 0x40, 0x4b, 0xe8, 0x31, 0x46, 0x97, 0xe0, 0x9b, 0x2e, 0x80, 0xaa, 0xc6, 0xac, 0x39, 0x97, 0x1b, 0xbe, 0x0d, 0xbc, 0x26, 0x67, 0x3f, 0x31, 0x95, 0x9f, 0x23, 0x8e, 0xaf, 0xd1, 0x50, 0x12, 0xe4, 0x96, 0x7d, 0x33, 0x55, 0x18, 0x92, 0xa3, 0xd3, 0x65, 0x1f, 0xe4, 0x46, 0x9b, 0x2d, 0xba, 0x45, 0x57, 0xdf, 0x89, 0x3a, 0xb6, 0xb9, 0x4f, 0x13, 0x25, 0xc3, 0xa1 } -, - /* Signature */ - 129, - { 0x05, 0x98, 0x5a, 0x4c, 0xce, 0xd0, 0xe8, 0xfd, 0xc5, 0x89, 0x24, 0xed, 0xba, 0x9e, 0x40, 0x0e, 0x67, 0x48, 0x21, 0x4f, 0x8d, 0x0b, 0x83, 0xaa, 0xfa, 0x20, 0x35, 0x0b, 0xbf, 0x0e, 0x68, 0x76, 0xca, 0x5a, 0x9a, 0xf3, 0x97, 0x0d, 0xd6, 0x3b, 0xe6, 0x84, 0xf9, 0x93, 0x6d, 0xb2, 0x82, 0xff, 0x8b, 0x53, 0xcf, 0x5f, 0x1b, 0xb1, 0xcb, 0xf4, 0x47, 0x33, 0x01, 0xf3, 0x72, 0xd9, 0x94, 0x8a, 0xf9, 0x39, 0x1b, 0x20, 0x02, 0xb2, 0xbe, 0x3e, 0x45, 0xff, 0x24, 0xa2, 0xd8, 0x99, 0xae, 0x8b, 0x52, 0xb6, 0x71, 0xb0, 0x4b, 0xab, 0x46, 0x01, 0x06, 0xbe, 0xdc, 0xfa, 0xc0, 0x13, 0x95, 0x9a, 0x48, 0x18, 0x95, 0x98, 0x42, 0x7f, 0xb9, 0x57, 0x15, 0x9a, 0x6d, 0x32, 0x9c, 0x19, 0xf3, 0x6c, 0xa7, 0x53, 0x81, 0xb9, 0x35, 0x0d, 0x34, 0x38, 0x9c, 0x16, 0xe1, 0x80, 0xa8, 0x51, 0xe4, 0x57, 0xcd } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.9", - /* Message to be signed */ - 206, - { 0x3d, 0x90, 0xde, 0x72, 0x35, 0x51, 0x59, 0x49, 0x24, 0x5f, 0x49, 0x03, 0x68, 0xc1, 0xf4, 0x93, 0x83, 0xe4, 0x4c, 0x1d, 0xb5, 0x1d, 0xd5, 0x38, 0x5b, 0xdf, 0xf5, 0xbd, 0x34, 0x45, 0x0e, 0x63, 0xce, 0x42, 0x15, 0x0b, 0x44, 0x1e, 0xf9, 0xeb, 0xc7, 0x29, 0xa9, 0x03, 0x34, 0x53, 0xf0, 0xa9, 0x39, 0x9f, 0xf6, 0x86, 0x1f, 0x50, 0x65, 0xb6, 0x66, 0x6d, 0xc2, 0x0b, 0x28, 0x72, 0x03, 0x42, 0x8e, 0x72, 0xbd, 0xf4, 0xcb, 0x74, 0x8a, 0xc8, 0xd4, 0xa5, 0x5f, 0x43, 0xd2, 0x23, 0x5e, 0x0a, 0xb2, 0xec, 0x2c, 0xf2, 0xb0, 0x6a, 0x01, 0x5f, 0x41, 0xe3, 0x51, 0x68, 0xac, 0x7e, 0x3c, 0x56, 0x8f, 0x2f, 0x16, 0xef, 0x57, 0x28, 0xb2, 0xbe, 0x95, 0x24, 0x91, 0x9d, 0x36, 0x76, 0xd6, 0x8f, 0x53, 0x7e, 0xfe, 0xf2, 0x9a, 0x05, 0xaf, 0x97, 0xcf, 0xed, 0x7c, 0xe9, 0xec, 0x45, 0xc1, 0x2f, 0x16, 0x5e, 0x4d, 0x7a, 0x4f, 0xe7, 0x2b, 0x99, 0xea, 0xbf, 0x83, 0x31, 0x6c, 0xdf, 0x2b, 0xd1, 0x64, 0x4b, 0x82, 0xfa, 0x13, 0xe4, 0xff, 0xc4, 0x49, 0xe7, 0x6d, 0x44, 0xc3, 0x87, 0x69, 0x63, 0x51, 0x47, 0x8b, 0x1a, 0x0f, 0x85, 0x96, 0x15, 0xda, 0x90, 0x5f, 0x20, 0xe6, 0x8b, 0x24, 0x56, 0x5c, 0x87, 0x3f, 0x83, 0x4e, 0x59, 0x34, 0x58, 0x51, 0x8a, 0xde, 0x41, 0xc1, 0x42, 0x81, 0x74, 0xda, 0x0c, 0x47, 0x66, 0x3a, 0x76, 0x00, 0xc6, 0x50, 0x25, 0x01, 0x5e, 0x09, 0xc1 } -, - /* Signature */ - 129, - { 0x00, 0x98, 0x13, 0xb2, 0xfd, 0xc5, 0x1b, 0xff, 0x88, 0xde, 0xdb, 0xec, 0xa3, 0xb1, 0x4a, 0xe5, 0x8b, 0xc7, 0xe7, 0x14, 0xc1, 0xd9, 0x2d, 0x74, 0x26, 0xe4, 0x94, 0x4e, 0xf9, 0x3e, 0xf9, 0xce, 0x6d, 0x10, 0xdc, 0x98, 0x9e, 0xaf, 0xe7, 0x34, 0x8d, 0x0a, 0x95, 0xf9, 0x9f, 0x56, 0x94, 0x8f, 0x72, 0x60, 0x2a, 0xc5, 0xe8, 0x61, 0x4f, 0x6b, 0x38, 0xe6, 0x8d, 0xa7, 0x9f, 0x48, 0xe2, 0x76, 0x8e, 0xda, 0x58, 0x64, 0xcf, 0xf2, 0x54, 0x51, 0x37, 0xf3, 0xcf, 0x4d, 0x81, 0xa5, 0xae, 0xb8, 0x9b, 0x21, 0x07, 0x26, 0x74, 0xca, 0xeb, 0xa0, 0x00, 0x71, 0x00, 0xc0, 0x7e, 0xf4, 0xdc, 0xbb, 0xd0, 0x5a, 0xfb, 0xad, 0x9e, 0x8b, 0x30, 0xd7, 0x46, 0xea, 0x36, 0x0d, 0x6c, 0xf8, 0x75, 0xd1, 0x0a, 0x67, 0xa5, 0x7f, 0x4b, 0x5d, 0xf4, 0x12, 0x1d, 0x72, 0x97, 0xa4, 0xbd, 0xce, 0x12, 0x8c, 0xb5 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.10", - /* Message to be signed */ - 253, - { 0x20, 0xe6, 0xa3, 0xfe, 0x16, 0xb5, 0x21, 0xb3, 0xc1, 0xe6, 0xae, 0x99, 0x3e, 0xc6, 0xe8, 0x49, 0xa9, 0xc1, 0x1f, 0x20, 0x42, 0xa2, 0xd4, 0xce, 0x89, 0xcf, 0x0f, 0x99, 0xe1, 0xb4, 0xb9, 0x47, 0x1d, 0xa9, 0xa1, 0x73, 0x0d, 0xa8, 0x85, 0x1f, 0xc5, 0xab, 0x3c, 0x09, 0x22, 0x05, 0x5f, 0x00, 0x37, 0x58, 0xb2, 0x35, 0xc2, 0x8d, 0xe4, 0x08, 0x80, 0x66, 0x3f, 0xcd, 0x80, 0x14, 0x07, 0x18, 0x15, 0xdd, 0x06, 0x49, 0x4a, 0x54, 0x7c, 0xce, 0xc3, 0x34, 0x8e, 0x12, 0xd5, 0x38, 0xd5, 0xdf, 0xb4, 0x8f, 0x80, 0x7b, 0x59, 0xe9, 0xb7, 0xcd, 0x81, 0xf3, 0x91, 0xc0, 0x2c, 0x01, 0x6c, 0xd9, 0xc1, 0xa8, 0x4f, 0x9c, 0x59, 0x51, 0x79, 0xd8, 0xf2, 0x00, 0x24, 0x2a, 0x56, 0x68, 0x18, 0x2c, 0xf2, 0xcb, 0xa3, 0xb9, 0xfb, 0x6e, 0xad, 0x45, 0x1d, 0x6d, 0x27, 0xd9, 0xc7, 0x36, 0x15, 0x25, 0xd6, 0x88, 0xb5, 0x52, 0x33, 0xff, 0x45, 0x29, 0x1c, 0xc0, 0x74, 0x02, 0xd2, 0x92, 0xde, 0x0b, 0xe8, 0x3d, 0x16, 0x46, 0xc4, 0x3c, 0x28, 0x88, 0x1f, 0xd4, 0x55, 0x49, 0xb1, 0x4d, 0x12, 0x61, 0xb1, 0x2f, 0x12, 0x04, 0x38, 0x27, 0x6c, 0x6b, 0x3f, 0x98, 0xf5, 0x5b, 0xcf, 0x17, 0x80, 0xbc, 0x1a, 0x91, 0xeb, 0x11, 0xd0, 0x22, 0x9e, 0x1d, 0x78, 0x68, 0xd7, 0xfe, 0xe4, 0x9d, 0x6b, 0x91, 0x68, 0xe2, 0x4d, 0xe1, 0xcb, 0x4f, 0x0f, 0x22, 0xe6, 0x7c, 0xbb, 0x15, 0x69, 0x20, 0x41, 0x13, 0x02, 0x72, 0x94, 0xb3, 0x7e, 0xc7, 0xfa, 0xe5, 0x8b, 0xc6, 0x4e, 0x82, 0x5e, 0xaa, 0x4d, 0x56, 0x94, 0xd0, 0x05, 0x8f, 0x2c, 0xd4, 0xc7, 0xd2, 0x14, 0x18, 0xda, 0x3c, 0x03, 0x07, 0xfa, 0x2f, 0x04, 0x92, 0xe8, 0xb3, 0x77, 0x58, 0xd3, 0xea, 0x40, 0xa4, 0xe3, 0x0f, 0x60 } -, - /* Signature */ - 129, - { 0x01, 0xf0, 0x2b, 0x3f, 0x83, 0x91, 0x23, 0xaf, 0xf2, 0xa3, 0xf4, 0x3d, 0xa5, 0xaa, 0xa0, 0xb6, 0xbb, 0xb6, 0x0c, 0x04, 0x37, 0x82, 0xf4, 0x96, 0x2a, 0x7b, 0x9f, 0x02, 0x5c, 0x94, 0x8e, 0x34, 0x32, 0x2e, 0x98, 0xde, 0x37, 0x03, 0xe3, 0xbb, 0x45, 0xa7, 0x06, 0xa2, 0xbb, 0x05, 0x09, 0xbe, 0xd9, 0xf4, 0x10, 0x52, 0x8c, 0x88, 0x1a, 0xb9, 0xa1, 0xdc, 0x01, 0x97, 0x06, 0x8c, 0x37, 0x28, 0xc3, 0x71, 0x6d, 0x83, 0x81, 0xd9, 0xf8, 0x67, 0x80, 0xfe, 0x78, 0xa6, 0x43, 0x4b, 0x72, 0xf5, 0x1e, 0x69, 0xcd, 0x32, 0xa7, 0x21, 0x3c, 0xce, 0xa7, 0x43, 0xb3, 0x3c, 0x3c, 0x96, 0xeb, 0x00, 0x42, 0xfb, 0x98, 0xa7, 0x0c, 0x2e, 0x52, 0xfc, 0x17, 0x8a, 0xb2, 0xcb, 0x9f, 0xf8, 0xbd, 0xdd, 0xc1, 0x04, 0x6b, 0x08, 0xe0, 0x47, 0xba, 0xdd, 0xd6, 0x5a, 0x45, 0xa4, 0xe6, 0x53, 0x39, 0xd7, 0x25 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.11", - /* Message to be signed */ - 159, - { 0x6e, 0xb4, 0x9f, 0x8a, 0xbc, 0x5b, 0x49, 0x48, 0x72, 0x0a, 0x7f, 0x42, 0xf7, 0x40, 0x84, 0x78, 0x00, 0x22, 0xe0, 0xe9, 0xf9, 0xf6, 0x88, 0x86, 0xd9, 0xf3, 0x4e, 0x7f, 0x7f, 0x8a, 0xc1, 0x54, 0xdb, 0xe1, 0x9c, 0x91, 0xb8, 0xed, 0x38, 0xec, 0x03, 0x6b, 0x61, 0x42, 0x12, 0xca, 0x35, 0xf7, 0x9e, 0xd8, 0x74, 0x57, 0x9e, 0x24, 0x85, 0xda, 0xc8, 0x20, 0x5d, 0x0e, 0x56, 0xb4, 0xb4, 0xc0, 0x00, 0x0a, 0x8a, 0x75, 0xa6, 0xd4, 0x97, 0xfc, 0x51, 0x19, 0x11, 0x1a, 0x40, 0xdb, 0x51, 0x3d, 0xf6, 0x61, 0x96, 0x55, 0xb5, 0x8a, 0x11, 0x6f, 0xab, 0xee, 0x08, 0x2b, 0xfa, 0x79, 0x37, 0x3d, 0x91, 0x76, 0x56, 0x87, 0x10, 0x11, 0x24, 0x18, 0x87, 0xf4, 0x42, 0x60, 0x8b, 0xd1, 0xeb, 0x1d, 0x95, 0xd1, 0x76, 0x80, 0x65, 0xfa, 0x63, 0x32, 0x4f, 0xab, 0x27, 0x36, 0xf9, 0x22, 0x70, 0x5c, 0xf2, 0x89, 0xfd, 0xe9, 0x26, 0x74, 0x33, 0x85, 0x92, 0x07, 0xa8, 0xbc, 0xf1, 0x2d, 0x17, 0x86, 0x1c, 0xfd, 0x06, 0x2b, 0x88, 0xdf, 0x78, 0x87, 0x0d, 0x5a, 0x5e, 0x91, 0x13, 0x1b, 0x63 } -, - /* Signature */ - 129, - { 0x02, 0xa2, 0xfa, 0x32, 0x71, 0x77, 0x96, 0x71, 0x0b, 0x52, 0xb0, 0x51, 0x90, 0x6c, 0xdb, 0x98, 0x15, 0xb2, 0xd0, 0x36, 0x6c, 0x07, 0x0a, 0x78, 0xff, 0x72, 0xd4, 0x59, 0x42, 0xd7, 0xad, 0xde, 0xae, 0x7e, 0xdc, 0x73, 0xca, 0x93, 0x01, 0xf1, 0xf9, 0xfa, 0xe6, 0x8a, 0x0b, 0xd4, 0xb1, 0xdf, 0x05, 0xa9, 0xa6, 0x71, 0xf8, 0xa5, 0xb7, 0xd4, 0x5c, 0xd1, 0x1f, 0xdc, 0x0f, 0x0b, 0xa0, 0x9d, 0x25, 0xce, 0xc3, 0xb6, 0x30, 0x3d, 0x9a, 0x66, 0x6c, 0x76, 0x32, 0x64, 0x96, 0xea, 0x31, 0xae, 0x38, 0x86, 0xa0, 0xc3, 0xb7, 0xd2, 0x27, 0x62, 0xee, 0xa2, 0x78, 0x93, 0x4b, 0x96, 0xa4, 0xf9, 0x0a, 0x50, 0x1a, 0xd3, 0x08, 0x8f, 0x70, 0x2e, 0x14, 0x76, 0x3c, 0xe3, 0x38, 0x46, 0xe2, 0xfd, 0xbe, 0x6d, 0x66, 0x1c, 0xb8, 0x2e, 0x6d, 0x98, 0x9d, 0xf3, 0xc5, 0xac, 0x8f, 0xe4, 0x0a, 0x85, 0x62 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.12", - /* Message to be signed */ - 76, - { 0x45, 0xcf, 0xec, 0x13, 0x2e, 0xe5, 0x93, 0xf0, 0xc3, 0xf3, 0x81, 0x3d, 0x3c, 0xb4, 0x49, 0xe6, 0xe5, 0xe6, 0x1d, 0x13, 0xde, 0x52, 0x9a, 0xe3, 0xe7, 0x1c, 0x99, 0x8e, 0xa4, 0x56, 0x35, 0x9c, 0xe6, 0x6b, 0x82, 0x04, 0x5b, 0x7a, 0xc7, 0x97, 0xfe, 0x96, 0x98, 0x5d, 0xea, 0xbc, 0x51, 0x22, 0x53, 0x0b, 0x2e, 0x29, 0xef, 0xc9, 0x75, 0xee, 0x96, 0x03, 0xb4, 0xf9, 0x6f, 0x3f, 0xf4, 0xe5, 0x9b, 0x0e, 0x35, 0xa9, 0xad, 0x92, 0xf2, 0xb8, 0x67, 0x79, 0x4d, 0x8e } -, - /* Signature */ - 129, - { 0x03, 0x9b, 0xe4, 0x8f, 0x13, 0x3a, 0xe7, 0xf0, 0xb1, 0x9e, 0xdd, 0xb2, 0x13, 0x56, 0x09, 0x73, 0xa3, 0xe2, 0xa1, 0x14, 0x6c, 0x79, 0x42, 0xf8, 0x26, 0x4b, 0xba, 0x5a, 0xd0, 0x08, 0x69, 0x2d, 0x11, 0x38, 0x01, 0xfc, 0x27, 0x78, 0xa7, 0xe3, 0x3a, 0x9e, 0x11, 0x5e, 0xa6, 0x32, 0xe5, 0x01, 0x88, 0xc8, 0x7b, 0x69, 0xe8, 0xd4, 0xd8, 0xcc, 0xa4, 0x8a, 0xbf, 0x9f, 0x25, 0x1e, 0xfc, 0x00, 0x17, 0xb9, 0x9e, 0xde, 0xe5, 0x66, 0xdc, 0xdc, 0x0b, 0xc5, 0x8d, 0xbf, 0x6d, 0x67, 0xbf, 0x86, 0x3d, 0xb8, 0xa8, 0x9a, 0xbd, 0xf1, 0x2a, 0x77, 0xf1, 0xb7, 0x0d, 0xe4, 0x39, 0xd1, 0x76, 0xf2, 0xea, 0xad, 0xa5, 0x46, 0x4c, 0x79, 0xa5, 0x84, 0x27, 0x0c, 0xa5, 0x14, 0xf4, 0x8f, 0x1d, 0xae, 0x86, 0x78, 0xec, 0xf1, 0xac, 0x29, 0x6d, 0x07, 0xc4, 0x68, 0x98, 0xba, 0xd4, 0x1a, 0xcb, 0x19, 0x9d } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.13", - /* Message to be signed */ - 26, - { 0x22, 0x51, 0x29, 0x87, 0x15, 0x7c, 0xf9, 0xb9, 0xab, 0x4e, 0x53, 0x37, 0xb0, 0x98, 0x91, 0xd6, 0x3c, 0xec, 0x37, 0x43, 0xc0, 0xf7, 0xbc, 0x9d, 0x18, 0x2e } -, - /* Signature */ - 129, - { 0x02, 0xc7, 0x75, 0x7f, 0x99, 0x93, 0xef, 0x8c, 0x6d, 0x60, 0xa3, 0xf5, 0xab, 0xed, 0xce, 0xa5, 0x35, 0xdf, 0xf5, 0x5a, 0xb9, 0xf4, 0xf6, 0x2d, 0x12, 0x54, 0xbf, 0x26, 0x1d, 0xd6, 0xa2, 0xee, 0x52, 0xda, 0x63, 0x49, 0xf4, 0x7b, 0x9b, 0x28, 0x9f, 0x1d, 0x0e, 0xa3, 0xe0, 0xff, 0x08, 0xf4, 0x55, 0xfa, 0x54, 0x85, 0x65, 0x8e, 0x42, 0x17, 0xf4, 0x40, 0xc0, 0x8b, 0x90, 0xae, 0x4c, 0x6c, 0xc2, 0x56, 0x97, 0xcb, 0x83, 0x35, 0x31, 0xdb, 0xb4, 0x74, 0x03, 0x25, 0x43, 0x10, 0x0b, 0x5f, 0x92, 0xb6, 0x78, 0x19, 0x5d, 0xdb, 0xfb, 0x1b, 0x59, 0xc5, 0x9b, 0xe7, 0xc8, 0x3d, 0xd8, 0x17, 0x45, 0xcd, 0x4e, 0x70, 0x9a, 0x0e, 0x3f, 0x79, 0x8e, 0xad, 0x5b, 0xf8, 0x66, 0x2d, 0xa6, 0x5c, 0x10, 0x57, 0xcc, 0x08, 0x2d, 0x90, 0x50, 0x50, 0xc4, 0x65, 0x95, 0x8b, 0x55, 0x5d, 0x77, 0xb8, 0xb1 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.14", - /* Message to be signed */ - 245, - { 0xae, 0x48, 0xcd, 0x83, 0xf4, 0xa1, 0xf9, 0x4e, 0x17, 0x19, 0x21, 0x96, 0x90, 0xc8, 0xc6, 0xf6, 0x73, 0x7a, 0xbd, 0x15, 0xe0, 0xd0, 0x8e, 0x7f, 0xc2, 0xea, 0x0d, 0x31, 0x5b, 0x45, 0xbe, 0xc2, 0x46, 0xe8, 0x45, 0xbf, 0x17, 0x60, 0xc8, 0x6c, 0x3f, 0x82, 0xd8, 0x4b, 0x1e, 0x9d, 0x68, 0xdc, 0xcc, 0x01, 0xd9, 0xa7, 0xd0, 0x7e, 0xcc, 0x6b, 0xfb, 0xee, 0xd8, 0x3d, 0x7a, 0xd0, 0x3a, 0x6d, 0x56, 0x6a, 0x89, 0xbc, 0x64, 0x42, 0x1e, 0x7e, 0xb4, 0x7e, 0x52, 0xc0, 0x23, 0x86, 0x58, 0xd5, 0xe4, 0xc5, 0x59, 0x7f, 0x12, 0x5a, 0xfc, 0x6c, 0x83, 0x3c, 0x63, 0xcd, 0x6f, 0x97, 0xf9, 0xdd, 0x5c, 0xce, 0x8a, 0x26, 0x38, 0x80, 0x7c, 0xe8, 0xa5, 0x83, 0xda, 0x03, 0x2b, 0xec, 0x81, 0xa3, 0x8c, 0xd2, 0x99, 0xa9, 0xc7, 0x8e, 0x82, 0x54, 0xf2, 0x88, 0x51, 0x64, 0x13, 0x52, 0x5f, 0xd9, 0x4a, 0x9e, 0x0a, 0x95, 0xc6, 0x56, 0xd7, 0x3c, 0xd5, 0x2a, 0x4d, 0xcc, 0x7d, 0xd0, 0x94, 0x7f, 0x4a, 0x00, 0x5e, 0xae, 0xdc, 0xcf, 0xd0, 0x3b, 0xb1, 0x71, 0x5c, 0x35, 0x1c, 0xf0, 0x59, 0xcd, 0x52, 0x2c, 0x7f, 0x53, 0x8c, 0x16, 0x28, 0xe7, 0x2a, 0x05, 0x64, 0x4e, 0x8f, 0xff, 0x50, 0x92, 0x6f, 0xa8, 0x68, 0x2a, 0x67, 0x53, 0x78, 0x6f, 0x2a, 0xa2, 0x61, 0x0a, 0xbf, 0xaa, 0x95, 0xbf, 0x99, 0xaf, 0x15, 0x61, 0x71, 0x51, 0xd0, 0xbd, 0x0f, 0xc4, 0x6f, 0xc3, 0xb2, 0x9c, 0xbe, 0xe1, 0xe6, 0x63, 0xb9, 0x23, 0x13, 0x6b, 0x5e, 0x19, 0x92, 0x83, 0x9f, 0x0b, 0xa5, 0x2e, 0x44, 0xfc, 0xcb, 0xd9, 0xf3, 0x20, 0xed, 0xe2, 0x0f, 0x55, 0xa4, 0x23, 0x77, 0x0e, 0x57, 0x3a, 0x9f, 0xb2, 0xb3, 0x6d, 0xc8, 0xf1, 0x84 } -, - /* Signature */ - 129, - { 0x00, 0xfb, 0xa9, 0xf6, 0xf9, 0x59, 0xb1, 0x70, 0xb0, 0x94, 0x6d, 0xcb, 0xdb, 0x98, 0xdc, 0x8e, 0x84, 0x79, 0xc6, 0x69, 0xad, 0xba, 0x6c, 0x54, 0x63, 0x6a, 0x2d, 0xc7, 0xd7, 0xf7, 0x03, 0x3d, 0x35, 0x04, 0x05, 0xd7, 0x17, 0xf2, 0xd6, 0x3d, 0xae, 0x65, 0xc2, 0x4b, 0x37, 0xdb, 0x1d, 0xc3, 0xe9, 0xf6, 0x17, 0x43, 0xaf, 0x1c, 0xe6, 0xde, 0x24, 0x67, 0xd1, 0x85, 0xae, 0xf0, 0x8d, 0x2b, 0xf8, 0x65, 0xf0, 0x75, 0xba, 0xa6, 0xa2, 0x9c, 0x58, 0x06, 0x61, 0xdc, 0xd4, 0xa4, 0x8f, 0x21, 0xff, 0x4e, 0x7b, 0x03, 0x9e, 0xef, 0x1e, 0x1e, 0x20, 0xba, 0x80, 0xcf, 0x20, 0xea, 0xb6, 0xec, 0xde, 0x60, 0xfa, 0x5d, 0x37, 0x67, 0xa3, 0x0e, 0x6a, 0xd4, 0x14, 0x47, 0x13, 0xca, 0x49, 0xfc, 0x03, 0x80, 0x99, 0xaf, 0x53, 0x6c, 0x0d, 0x5f, 0x55, 0xc4, 0xcb, 0x15, 0x33, 0x53, 0x81, 0xbe, 0xa0 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.15", - /* Message to be signed */ - 238, - { 0x2c, 0x8a, 0x00, 0x7b, 0x60, 0x30, 0x56, 0xd3, 0x31, 0x87, 0xbf, 0x52, 0xce, 0xf6, 0x16, 0x1a, 0xa5, 0xf5, 0xf5, 0x33, 0x7f, 0xc3, 0x59, 0xd4, 0x63, 0x44, 0x72, 0x1d, 0x94, 0x5f, 0xbc, 0x4d, 0x24, 0x0d, 0x30, 0x62, 0x0b, 0x29, 0x6c, 0x39, 0x77, 0xcf, 0x45, 0xc2, 0x47, 0xeb, 0x2c, 0x36, 0x39, 0x40, 0x79, 0x98, 0x3f, 0x03, 0xad, 0x82, 0x39, 0x9c, 0x4b, 0x28, 0x6c, 0x48, 0x16, 0x59, 0x10, 0xb3, 0x48, 0xb9, 0x5e, 0xf3, 0x9c, 0x43, 0xbf, 0xbe, 0xb3, 0x56, 0x6d, 0x1d, 0x1e, 0xea, 0x5a, 0x42, 0x7f, 0x4c, 0xb1, 0x68, 0x1f, 0x2a, 0x7c, 0x40, 0x1f, 0x3f, 0x0d, 0x6d, 0x9e, 0xe7, 0x99, 0x3b, 0xe5, 0xec, 0x5d, 0x34, 0xa7, 0x55, 0x41, 0xe9, 0xf8, 0xdc, 0x7c, 0x60, 0x69, 0xa8, 0x97, 0x7c, 0x9f, 0x93, 0x6e, 0xdb, 0xe4, 0x1a, 0x4e, 0xf7, 0x85, 0xa3, 0xef, 0x7b, 0xa0, 0x51, 0x89, 0x90, 0x09, 0xed, 0x61, 0x2a, 0x22, 0x8f, 0x90, 0x31, 0x67, 0xa9, 0x34, 0xee, 0xe6, 0x9b, 0x4f, 0x87, 0x36, 0xc2, 0x95, 0x11, 0xc6, 0xbd, 0xc6, 0x1e, 0xee, 0x96, 0x08, 0xa9, 0x91, 0x1b, 0xba, 0x52, 0x83, 0x9b, 0xe9, 0x9f, 0x91, 0xd2, 0xef, 0x85, 0xb8, 0xcf, 0x10, 0xc1, 0xd6, 0x35, 0x08, 0x08, 0x29, 0xba, 0x79, 0x91, 0xfe, 0x2e, 0xf8, 0x2e, 0x2b, 0xae, 0x27, 0x08, 0x14, 0x06, 0xe8, 0x9b, 0xab, 0x75, 0xc3, 0xed, 0x19, 0xe8, 0x7a, 0x4a, 0xdb, 0x72, 0xec, 0x26, 0x21, 0xf3, 0xf2, 0x58, 0x5b, 0x38, 0xcb, 0xb3, 0x6b, 0x3c, 0x0d, 0x40, 0x5f, 0xfc, 0xa7, 0xa6, 0xfb, 0x02, 0x24, 0x42, 0x07, 0x94, 0xcb, 0xd8, 0xd7, 0x83, 0x18, 0x01, 0xc8, 0x81, 0xe1, 0x65 } -, - /* Signature */ - 129, - { 0x04, 0x10, 0x47, 0xe2, 0x42, 0xb6, 0x44, 0x87, 0x41, 0xf2, 0x8a, 0x4c, 0x8b, 0x2d, 0xfe, 0xca, 0xcc, 0x0f, 0xf6, 0x61, 0x9e, 0x95, 0x6a, 0x6a, 0x6b, 0x10, 0xcd, 0xd0, 0x1e, 0xed, 0xd2, 0x01, 0xc8, 0x0e, 0x0f, 0xbf, 0x7c, 0x5b, 0xef, 0x52, 0xa7, 0xaa, 0x99, 0x00, 0xa8, 0x59, 0x39, 0x4b, 0x47, 0xe8, 0x3d, 0x08, 0xb5, 0xe1, 0xda, 0x03, 0xa3, 0x35, 0x54, 0x00, 0x0c, 0xce, 0x17, 0xc1, 0xd8, 0x62, 0x29, 0xa3, 0xa2, 0x03, 0x50, 0xd1, 0x16, 0x43, 0xa7, 0x58, 0xc1, 0x16, 0xb8, 0xfb, 0xf7, 0x26, 0x60, 0xdf, 0x4c, 0x86, 0xef, 0x8c, 0x1f, 0xc4, 0x54, 0x4c, 0x3a, 0xe1, 0xd1, 0xfc, 0x3c, 0xe9, 0xf2, 0x63, 0xf6, 0x2e, 0x80, 0x07, 0xcd, 0x7f, 0xf7, 0xea, 0x8d, 0x50, 0xa0, 0x82, 0x83, 0x89, 0xff, 0x43, 0x1f, 0xc5, 0xc5, 0x62, 0x81, 0x6d, 0x3d, 0x24, 0xb6, 0x07, 0x21, 0x1d, 0x29 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.16", - /* Message to be signed */ - 211, - { 0x7b, 0x15, 0xd1, 0xa7, 0x9c, 0x7a, 0xd2, 0xd1, 0x2f, 0x75, 0xda, 0x57, 0xd1, 0x4a, 0x8e, 0xb7, 0x1f, 0xdd, 0x4c, 0x4e, 0xff, 0x52, 0x43, 0x74, 0x1a, 0xcd, 0xe2, 0x3c, 0xe6, 0xda, 0xd3, 0x08, 0xc8, 0x1d, 0x5d, 0x58, 0x0f, 0xf9, 0xc3, 0xf8, 0x93, 0xff, 0x12, 0x4f, 0xe4, 0x58, 0xb3, 0x18, 0x84, 0xda, 0xf7, 0xfc, 0x44, 0x66, 0xd7, 0x00, 0xdc, 0x49, 0x3f, 0x1c, 0x7a, 0x7d, 0xbf, 0x62, 0x24, 0x1b, 0x17, 0xe7, 0x36, 0x23, 0xfa, 0x17, 0x81, 0x4a, 0xb4, 0xd2, 0xc9, 0x24, 0x5b, 0xe8, 0x3b, 0xb3, 0xcc, 0x5f, 0x94, 0x44, 0xb1, 0x52, 0x17, 0xb2, 0x44, 0x1f, 0x45, 0x9c, 0x00, 0xb8, 0x2e, 0x58, 0x68, 0x9a, 0x11, 0xdd, 0x5c, 0x59, 0xfa, 0x39, 0x5d, 0x1a, 0x6f, 0x9b, 0x2c, 0x25, 0xcc, 0x84, 0x99, 0x92, 0x7a, 0xb9, 0xa4, 0x98, 0x28, 0x53, 0x36, 0x52, 0xce, 0xe2, 0x32, 0x32, 0x97, 0x2d, 0x65, 0x69, 0xee, 0x56, 0x44, 0x78, 0x66, 0xf1, 0x0e, 0xba, 0xd5, 0x4e, 0xa3, 0xf0, 0x61, 0x32, 0x0c, 0x6d, 0x3f, 0xef, 0xce, 0x34, 0x55, 0x2b, 0x62, 0x66, 0x96, 0x7b, 0x05, 0x78, 0xd6, 0xc4, 0x55, 0xb9, 0xac, 0x24, 0x66, 0x36, 0x17, 0x12, 0xe7, 0xd0, 0x5b, 0xd3, 0x33, 0x2e, 0xc1, 0x30, 0xd4, 0x5c, 0x6a, 0x49, 0x76, 0x16, 0x2c, 0x79, 0x7a, 0xd1, 0x36, 0x3f, 0x49, 0x69, 0xe4, 0xae, 0x3d, 0xed, 0x6e, 0x36, 0xea, 0x2c, 0xd7, 0xfb, 0x35, 0x66, 0x09, 0xbe, 0x03, 0x1a, 0x79, 0xb2, 0x94 } -, - /* Signature */ - 129, - { 0x03, 0x02, 0x52, 0x90, 0xb4, 0x46, 0x2f, 0x9a, 0xb7, 0x9f, 0xdf, 0xaa, 0x7b, 0x1d, 0x53, 0xa4, 0xd1, 0x27, 0x96, 0xc8, 0x5a, 0xac, 0x28, 0xde, 0xac, 0x21, 0x27, 0xc8, 0x25, 0x2c, 0x2a, 0x62, 0x39, 0x5a, 0x8b, 0x81, 0x9d, 0xfc, 0xee, 0xbf, 0x68, 0xdd, 0x4d, 0xbf, 0xc8, 0x7c, 0x1c, 0xf3, 0xd0, 0x17, 0xa5, 0x3a, 0x26, 0x40, 0x92, 0x50, 0x6b, 0xb6, 0xfc, 0x95, 0x28, 0xe6, 0xf8, 0x76, 0x78, 0x73, 0x6c, 0xa5, 0x6a, 0x14, 0xa1, 0xaa, 0x26, 0x77, 0xa8, 0xb8, 0x4f, 0x5e, 0x03, 0xfa, 0x2c, 0x0c, 0xe4, 0x78, 0x5b, 0x26, 0xba, 0x92, 0xe7, 0x5f, 0xbd, 0xc1, 0x6d, 0x8d, 0x4c, 0x7f, 0xb0, 0xbc, 0x39, 0xa8, 0x8e, 0x13, 0x2e, 0x1e, 0x05, 0xad, 0x00, 0xf1, 0x2f, 0x07, 0x27, 0x06, 0x34, 0x3f, 0x5e, 0xb3, 0xda, 0xb5, 0x11, 0x2e, 0x3b, 0xbe, 0x76, 0xed, 0x0b, 0xbc, 0x7b, 0xdf, 0xcf } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.17", - /* Message to be signed */ - 104, - { 0x7a, 0x76, 0x44, 0x00, 0x1f, 0x80, 0x13, 0xc5, 0x0f, 0xd7, 0x17, 0xb2, 0x44, 0x65, 0x47, 0x7a, 0xbc, 0x34, 0xba, 0x9c, 0x1e, 0x53, 0xad, 0x76, 0x32, 0x64, 0x5a, 0x6e, 0xf7, 0xc8, 0xe6, 0x4e, 0x8e, 0xcb, 0x7b, 0xca, 0x5b, 0x4f, 0x09, 0xb5, 0x2f, 0x4d, 0xd4, 0x8f, 0x8b, 0xb3, 0xdd, 0x33, 0x8c, 0x78, 0x18, 0x2c, 0xe8, 0x6e, 0x8b, 0xfb, 0x1c, 0x68, 0xa8, 0x76, 0xf7, 0x32, 0x16, 0x63, 0x06, 0xa8, 0xea, 0x8c, 0x0d, 0x7c, 0x21, 0xff, 0x26, 0xfa, 0xaf, 0x4a, 0xb4, 0x55, 0x10, 0x36, 0x19, 0x50, 0xc7, 0x6f, 0x95, 0xc2, 0x73, 0x0b, 0x9d, 0x3e, 0x4d, 0x6d, 0x85, 0xea, 0x25, 0x58, 0x4a, 0xc9, 0x67, 0xa0, 0x2b, 0x1e, 0x0a, 0x26 } -, - /* Signature */ - 129, - { 0x03, 0xb2, 0xac, 0xcf, 0xef, 0xf0, 0x63, 0xbd, 0x17, 0x5e, 0xf8, 0xae, 0x0c, 0xb8, 0x5b, 0xdb, 0x80, 0x0d, 0xdc, 0x27, 0x77, 0x6f, 0x8d, 0x3d, 0xc7, 0xe2, 0x1d, 0x19, 0x9b, 0xb8, 0xd6, 0x5f, 0x5b, 0x24, 0x2e, 0x79, 0xd4, 0x5e, 0xcd, 0xcf, 0xf0, 0x2e, 0x80, 0x3f, 0x56, 0x81, 0xff, 0x04, 0x4a, 0x43, 0xb5, 0x5a, 0x9a, 0xac, 0xb1, 0xea, 0xf1, 0x67, 0x84, 0x83, 0x8b, 0x1d, 0x5a, 0x2b, 0x7c, 0x1a, 0x36, 0x4d, 0xc4, 0x05, 0x31, 0x1a, 0x65, 0x55, 0x05, 0x7e, 0xc7, 0x3f, 0x0a, 0x8f, 0x4e, 0x0f, 0xfc, 0xa4, 0x23, 0x02, 0x2c, 0xa6, 0xad, 0x74, 0x46, 0x9b, 0xbd, 0x55, 0x57, 0xbf, 0xa1, 0xcf, 0x4b, 0x95, 0x63, 0x6f, 0x53, 0x45, 0x37, 0xef, 0xf2, 0xfb, 0x16, 0xaf, 0x5e, 0x64, 0x71, 0x82, 0x4a, 0xfe, 0x21, 0x67, 0x91, 0x8c, 0x89, 0xad, 0xe0, 0x1d, 0x52, 0xae, 0xa7, 0x39, 0x9d } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.18", - /* Message to be signed */ - 22, - { 0x12, 0xd2, 0x24, 0xfc, 0x10, 0xa0, 0xfc, 0x40, 0x95, 0x3a, 0xb6, 0xd7, 0x01, 0xc4, 0x16, 0xc3, 0xa8, 0x23, 0x77, 0x2b, 0xea, 0xfa } -, - /* Signature */ - 129, - { 0x03, 0x2c, 0xb5, 0xc8, 0xd6, 0x12, 0x90, 0xb7, 0x66, 0xe6, 0x49, 0x8a, 0xa6, 0x01, 0x49, 0x4d, 0x9f, 0x06, 0x6f, 0x27, 0xa4, 0x7a, 0x28, 0x70, 0xf3, 0x67, 0x89, 0x43, 0x29, 0x1a, 0xb2, 0x2d, 0x3c, 0x45, 0xc0, 0x76, 0xe5, 0x60, 0x81, 0x9d, 0x33, 0xf8, 0x89, 0xf8, 0xcf, 0xab, 0x2d, 0xf6, 0xc6, 0x3c, 0x0c, 0xe1, 0xed, 0x5c, 0xeb, 0x51, 0x54, 0x70, 0x77, 0xc0, 0x82, 0x78, 0x18, 0x7a, 0x82, 0x72, 0xfe, 0xc7, 0xde, 0x95, 0x54, 0xcd, 0xc9, 0x16, 0xca, 0x72, 0xf2, 0xc4, 0x51, 0x43, 0xf2, 0xcf, 0x32, 0x43, 0xc4, 0xbd, 0x20, 0x0c, 0x6e, 0x99, 0x3f, 0x0d, 0xb5, 0xb7, 0x1d, 0x4f, 0x63, 0x77, 0x1e, 0x24, 0x9b, 0x19, 0xb9, 0x97, 0xa6, 0xe5, 0xa9, 0x19, 0xca, 0x10, 0x0c, 0x90, 0xfe, 0xa6, 0xa2, 0xd4, 0xdc, 0x68, 0x81, 0xc3, 0xa0, 0xe1, 0xc1, 0x35, 0x53, 0x83, 0xcf, 0xbb, 0x4b } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.19", - /* Message to be signed */ - 200, - { 0xe0, 0xd4, 0xe2, 0xa5, 0xe9, 0x8a, 0x51, 0x23, 0x7d, 0xa5, 0x08, 0x5d, 0xcf, 0x09, 0x8a, 0xe2, 0xc0, 0x5b, 0x4e, 0x16, 0x92, 0x54, 0xee, 0x6d, 0xda, 0x16, 0x21, 0x0e, 0x4a, 0x3f, 0xe8, 0x1c, 0x72, 0x56, 0xea, 0xef, 0xf2, 0x8c, 0x0c, 0x63, 0xd8, 0x54, 0xb7, 0x84, 0x1a, 0x13, 0x6c, 0x43, 0x60, 0xb2, 0x15, 0xdc, 0xa0, 0x58, 0x74, 0x8a, 0x4b, 0xfa, 0x82, 0x58, 0x68, 0x04, 0x28, 0x21, 0x99, 0x2a, 0x4e, 0xd5, 0xa7, 0xd5, 0x8f, 0x80, 0x12, 0x20, 0x75, 0x49, 0xbe, 0x8c, 0xc9, 0xce, 0xcc, 0x85, 0x01, 0xb9, 0xf8, 0x02, 0x83, 0x0f, 0x86, 0x58, 0x45, 0xce, 0x2e, 0x33, 0x9b, 0xec, 0x28, 0x05, 0x96, 0x11, 0xa1, 0xa0, 0x0b, 0x55, 0x35, 0xc3, 0xc6, 0x15, 0xe9, 0xd2, 0xa1, 0x39, 0x59, 0xf1, 0x01, 0x5c, 0x8b, 0xad, 0x2d, 0x75, 0x3a, 0x59, 0xa6, 0x14, 0x3b, 0x3a, 0x30, 0x58, 0xef, 0x72, 0x25, 0x60, 0xff, 0xe1, 0xc1, 0x84, 0x87, 0xc7, 0x41, 0xda, 0xd6, 0x1f, 0x07, 0xa1, 0x56, 0x42, 0xe7, 0x26, 0xad, 0x18, 0xa9, 0x84, 0x87, 0x5e, 0x68, 0xc6, 0x2e, 0xeb, 0xed, 0xcf, 0x94, 0x6f, 0x13, 0xb8, 0x93, 0xb2, 0x80, 0x8f, 0x78, 0xf9, 0x29, 0x48, 0x07, 0xd7, 0x74, 0x68, 0x54, 0x94, 0xe6, 0xb8, 0x90, 0x40, 0xee, 0xe6, 0xde, 0x1b, 0xa7, 0x18, 0xba, 0x2e, 0x08, 0x2c, 0x3d, 0x5e, 0xf1, 0x7c, 0x10, 0x28, 0xcd, 0x66 } -, - /* Signature */ - 129, - { 0x03, 0xe7, 0x83, 0xbb, 0x53, 0xdb, 0xb6, 0x7c, 0xf2, 0x19, 0x5f, 0xc1, 0xa5, 0x7f, 0x4b, 0x74, 0xc9, 0x82, 0x03, 0xb1, 0xf3, 0xd6, 0x15, 0xfe, 0xb9, 0x20, 0xe4, 0xab, 0xe8, 0x37, 0x58, 0x34, 0x67, 0x2f, 0x4b, 0x8f, 0x55, 0xfe, 0xf2, 0xac, 0xa8, 0xb5, 0xd4, 0x0a, 0xef, 0xe4, 0xef, 0xbd, 0xaa, 0xc3, 0xe8, 0x21, 0x08, 0xd0, 0x7f, 0x2f, 0x1c, 0xf8, 0xc0, 0xd4, 0xdf, 0xf8, 0x1b, 0x39, 0x66, 0xec, 0x69, 0xbe, 0x51, 0x17, 0xac, 0x1a, 0xa6, 0x11, 0x8e, 0x46, 0x0b, 0x92, 0xd8, 0x8f, 0xcd, 0xd9, 0x4d, 0x08, 0xeb, 0xaa, 0x53, 0x62, 0xe5, 0x9d, 0x52, 0x00, 0x4b, 0x43, 0x36, 0x95, 0x14, 0x37, 0xda, 0x0f, 0x51, 0xd6, 0x3e, 0x50, 0x56, 0x15, 0xb4, 0xb7, 0x55, 0x54, 0x08, 0x0b, 0x94, 0x89, 0x7f, 0xef, 0x29, 0x3a, 0x34, 0xc4, 0x04, 0x00, 0xc4, 0xf9, 0x9a, 0xa1, 0xde, 0xfe, 0x35 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 9.20", - /* Message to be signed */ - 111, - { 0x64, 0xb3, 0xba, 0x40, 0x98, 0x03, 0xc9, 0xb9, 0x60, 0xc1, 0xc4, 0x96, 0x2f, 0x51, 0x27, 0x1b, 0xc8, 0x9a, 0x40, 0xbd, 0x40, 0x5c, 0xe5, 0xbc, 0xdc, 0x88, 0x51, 0xd9, 0x7c, 0x9b, 0xe5, 0xe5, 0xb7, 0x46, 0x4e, 0x50, 0xd9, 0x9b, 0x6c, 0xf8, 0xad, 0xf8, 0xff, 0x83, 0x2b, 0x73, 0x7d, 0xe8, 0xb6, 0xff, 0x1a, 0xbe, 0xb8, 0x9d, 0xba, 0xe9, 0x3a, 0x90, 0x63, 0x94, 0x87, 0x80, 0x6b, 0x05, 0x96, 0xcd, 0x31, 0x68, 0x60, 0xf6, 0x8f, 0x00, 0x27, 0xa3, 0x50, 0x3e, 0x15, 0x89, 0x67, 0xaf, 0xdf, 0xf4, 0x69, 0x07, 0x68, 0x17, 0xfc, 0x7d, 0xa3, 0x22, 0x3c, 0xca, 0x1e, 0x6c, 0x48, 0x97, 0x3b, 0x57, 0x0e, 0x0b, 0xf7, 0x4b, 0xb8, 0xb3, 0x96, 0x54, 0x37, 0x2b, 0x7a, 0x1d, 0x6f } -, - /* Signature */ - 129, - { 0x00, 0xd2, 0x00, 0xeb, 0xa0, 0xb6, 0x52, 0x2a, 0xfb, 0x42, 0x0e, 0xbf, 0x16, 0x48, 0x8c, 0x53, 0x03, 0x52, 0xc4, 0x2d, 0xde, 0x81, 0xe7, 0x64, 0xc0, 0xca, 0xdb, 0x43, 0x82, 0x8c, 0xb9, 0x98, 0xd0, 0xa6, 0x0b, 0x23, 0xb5, 0xb6, 0x95, 0x8a, 0x00, 0xfc, 0x25, 0x53, 0xe2, 0x35, 0xe8, 0x57, 0x4e, 0x4d, 0x4f, 0xec, 0x9e, 0x66, 0x8d, 0xba, 0x40, 0xde, 0x66, 0x61, 0xab, 0xe1, 0x3f, 0xcb, 0x84, 0xc1, 0xad, 0x15, 0xc4, 0xb0, 0xcc, 0x0c, 0x6f, 0x4f, 0x0f, 0x83, 0x77, 0x87, 0xc4, 0x32, 0x5f, 0x04, 0x5d, 0x61, 0xee, 0x2c, 0x99, 0x72, 0xb0, 0x1f, 0x32, 0x12, 0x65, 0x4e, 0xc4, 0x26, 0x62, 0x56, 0x7f, 0xaa, 0xc4, 0x0e, 0x9c, 0x0a, 0x28, 0x15, 0x8a, 0x2a, 0x6c, 0x31, 0xf0, 0x1a, 0x84, 0x91, 0x26, 0xdf, 0x9e, 0x96, 0xcb, 0x82, 0x09, 0xbe, 0xb5, 0x81, 0xd6, 0x84, 0x6b, 0xb5, 0xab } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 10: A 1028-bit RSA key pair", -{ - /* Modulus */ - 129, - { 0x0d, 0x5f, 0xb9, 0x9f, 0xde, 0xdf, 0x42, 0x56, 0xe2, 0x8d, 0x4b, 0x41, 0xd7, 0x07, 0xfc, 0x27, 0x63, 0x3e, 0x89, 0x95, 0x15, 0xf4, 0xda, 0xbf, 0x6b, 0x46, 0x27, 0x10, 0xac, 0x11, 0x25, 0x81, 0xfa, 0x73, 0xfa, 0x83, 0x69, 0x58, 0x2c, 0x9f, 0xd4, 0x52, 0x5a, 0x70, 0x16, 0x18, 0x99, 0xdf, 0x63, 0x25, 0x84, 0x9e, 0x5c, 0x43, 0x49, 0x3e, 0x13, 0x35, 0x4e, 0x27, 0x09, 0x55, 0xa4, 0x3e, 0x38, 0x35, 0xb5, 0x99, 0x8e, 0xd4, 0x2a, 0x57, 0x5b, 0xbf, 0x68, 0x8d, 0x69, 0xec, 0x36, 0x6d, 0x2b, 0xa6, 0xf0, 0x50, 0x4c, 0x1e, 0xe1, 0x7d, 0xc5, 0x9b, 0x7e, 0xa0, 0xb4, 0x64, 0x0c, 0xbe, 0xcd, 0x8b, 0xd7, 0x96, 0x2b, 0xe8, 0x56, 0x6f, 0x0e, 0xbd, 0x65, 0x57, 0x43, 0x65, 0x6a, 0x29, 0x12, 0x85, 0xe0, 0x37, 0xbb, 0xfa, 0x86, 0x55, 0x80, 0x1b, 0xd0, 0x31, 0x4f, 0x46, 0x4c, 0x56, 0x91 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 128, - { 0xe7, 0x6f, 0x42, 0xb4, 0x74, 0x02, 0xd5, 0xe0, 0xf9, 0x64, 0x64, 0x92, 0x5a, 0xb4, 0xb3, 0xbc, 0x68, 0x94, 0x30, 0x0e, 0xe4, 0x86, 0xfb, 0x70, 0xce, 0xd4, 0x91, 0xf2, 0xd1, 0xb3, 0x67, 0x80, 0x84, 0xc1, 0xc2, 0xcb, 0x96, 0x95, 0x68, 0xa5, 0xf7, 0x7d, 0xab, 0xcd, 0x40, 0x93, 0x39, 0x37, 0xa8, 0x67, 0xf9, 0x34, 0xfb, 0x2a, 0xea, 0xae, 0x6d, 0x78, 0x67, 0x98, 0xe0, 0xd0, 0x4a, 0x10, 0x6f, 0x54, 0x5e, 0x41, 0xa9, 0xc9, 0x38, 0x33, 0xd8, 0x1f, 0xd4, 0xd7, 0x53, 0x53, 0x17, 0x9c, 0xb0, 0xbc, 0xa4, 0x5e, 0x79, 0xaa, 0xc9, 0x41, 0x34, 0x64, 0xb0, 0x36, 0x7f, 0x31, 0xac, 0x5a, 0xca, 0x56, 0x6f, 0x22, 0x14, 0xbf, 0x51, 0x46, 0xa9, 0x48, 0x4b, 0x87, 0xe4, 0x2b, 0xda, 0xc2, 0xb0, 0x1a, 0x99, 0x67, 0x03, 0x50, 0x6b, 0xe0, 0x77, 0x49, 0xaa, 0x0f, 0xbe, 0xb3, 0xb2, 0x29 } -, - /* Prime 1 */ - 65, - { 0x03, 0xff, 0xaf, 0x4a, 0x61, 0x21, 0xd7, 0x42, 0x0c, 0xfd, 0xa6, 0x4c, 0x41, 0x71, 0x2f, 0x47, 0xc8, 0xf2, 0xd0, 0xd2, 0x5b, 0x17, 0xe9, 0x5b, 0x35, 0x41, 0x42, 0x84, 0x69, 0x10, 0xaf, 0xef, 0xbd, 0xf2, 0x1e, 0x74, 0x23, 0xe8, 0xb3, 0xbe, 0x44, 0xae, 0xd9, 0xaf, 0x5e, 0x49, 0x81, 0x68, 0x5d, 0x3b, 0x9a, 0x1d, 0x59, 0xc9, 0xb9, 0x47, 0xfb, 0x9c, 0x33, 0x9c, 0x9a, 0x31, 0xe5, 0x7b, 0xd9 } -, - /* Prime 2 */ - 65, - { 0x03, 0x58, 0x31, 0xe3, 0xb9, 0x29, 0x3b, 0xcd, 0xa4, 0x51, 0xbe, 0x9d, 0xb1, 0x91, 0x97, 0x48, 0x6a, 0xa2, 0xe2, 0x2e, 0x92, 0x98, 0x65, 0x0f, 0x2b, 0x7f, 0xf4, 0x25, 0x69, 0xeb, 0xec, 0x33, 0xd2, 0x0a, 0x34, 0x98, 0x44, 0xa3, 0x3b, 0xea, 0xa0, 0x93, 0xd1, 0x43, 0x4a, 0xfb, 0x4a, 0x04, 0xa0, 0x4a, 0xed, 0xd3, 0xbb, 0xc4, 0xb3, 0x87, 0x77, 0xa5, 0x5f, 0xe6, 0x50, 0x5b, 0x8c, 0x15, 0x79 } -, - /* Prime exponent 1 */ - 65, - { 0x02, 0x8e, 0x91, 0xd5, 0xab, 0xba, 0x69, 0xdc, 0x50, 0x56, 0x38, 0xe9, 0xf5, 0xc6, 0x9c, 0x06, 0xf8, 0xd5, 0x5a, 0xf5, 0xc7, 0x4d, 0xc8, 0xe7, 0x8b, 0x6c, 0x09, 0x4e, 0x85, 0xa8, 0x27, 0xf7, 0xd2, 0xab, 0x69, 0x11, 0xb6, 0x8c, 0x6b, 0xb2, 0xb4, 0x54, 0x61, 0xd9, 0xa3, 0x1e, 0xb9, 0x62, 0xb4, 0x8b, 0x12, 0x06, 0xc6, 0x8d, 0x18, 0xae, 0x90, 0x92, 0xd6, 0xe5, 0xc2, 0x2b, 0x39, 0xa4, 0x31 } -, - /* Prime exponent 2 */ - 65, - { 0x02, 0x98, 0x04, 0xe1, 0x32, 0xfa, 0x3a, 0xaa, 0x4b, 0x15, 0x26, 0xbb, 0x50, 0x3a, 0xb4, 0xd4, 0x71, 0xf7, 0x6f, 0x69, 0x65, 0x42, 0x11, 0xa6, 0x89, 0x3b, 0x0c, 0x13, 0x74, 0x29, 0x87, 0x9f, 0xcc, 0xf7, 0x23, 0x41, 0x30, 0x82, 0x54, 0x76, 0xac, 0x20, 0xd7, 0xfb, 0xd3, 0x8c, 0x3e, 0x24, 0x86, 0x58, 0x76, 0x48, 0x6e, 0xe8, 0xa7, 0xbf, 0x99, 0x58, 0x45, 0x9e, 0xee, 0x95, 0x81, 0x78, 0x29 } -, - /* Coefficient */ - 65, - { 0x02, 0x11, 0x97, 0x5e, 0x88, 0x56, 0xd4, 0xea, 0x9d, 0x1d, 0xdf, 0x87, 0xb8, 0x7d, 0x39, 0x79, 0x2f, 0x1c, 0xf7, 0xe2, 0xf1, 0x82, 0xf4, 0xa4, 0xe6, 0x91, 0xe5, 0x00, 0x2b, 0x10, 0xa0, 0x8a, 0x46, 0xdc, 0xa1, 0xa4, 0xf4, 0x83, 0x00, 0x85, 0xd8, 0xd4, 0x0b, 0xea, 0x1d, 0xff, 0x11, 0xb0, 0xc0, 0xdf, 0x20, 0x22, 0x43, 0xeb, 0x99, 0x3e, 0x58, 0x0a, 0x94, 0x49, 0x9b, 0x9c, 0xed, 0xd2, 0xbe } - -} -, -{{ - "PKCS#1 v1.5 Signature Example 10.1", - /* Message to be signed */ - 157, - { 0xb2, 0xd5, 0x88, 0x50, 0x9c, 0x2e, 0xac, 0xda, 0x28, 0x1e, 0x76, 0x71, 0xcb, 0xa2, 0xfc, 0xa9, 0x14, 0xef, 0x73, 0xa3, 0xae, 0xa9, 0x20, 0x20, 0x43, 0xea, 0xd6, 0xb7, 0x21, 0x25, 0xc1, 0xb0, 0xd5, 0xcc, 0x15, 0x41, 0x46, 0x20, 0xd5, 0x73, 0xd7, 0xab, 0x0b, 0x3a, 0x8a, 0xb6, 0x6a, 0x92, 0xdf, 0x87, 0x0b, 0x75, 0xb1, 0xc4, 0xd6, 0x8e, 0xa7, 0x05, 0x6b, 0xe0, 0x41, 0x9e, 0xa2, 0x53, 0xe6, 0xb0, 0x8b, 0x12, 0x9e, 0x0f, 0x64, 0xf1, 0x0a, 0xbf, 0x82, 0xe1, 0x67, 0xf8, 0xe3, 0xe9, 0x28, 0x2e, 0x7b, 0xf7, 0x1b, 0x04, 0x3b, 0xaa, 0x2b, 0xa2, 0xd8, 0x75, 0x6d, 0x46, 0xb6, 0xd3, 0x6e, 0x97, 0x34, 0x15, 0xf4, 0xf8, 0xc0, 0xeb, 0x43, 0xfc, 0x60, 0x4c, 0xed, 0x49, 0x3d, 0xc0, 0x46, 0xa2, 0x5a, 0x11, 0x9b, 0xd1, 0x58, 0x1d, 0xbb, 0x59, 0x7c, 0x3e, 0x67, 0xc2, 0xfd, 0xdc, 0x39, 0x6d, 0xf5, 0xd2, 0x3b, 0x7b, 0xa8, 0x0b, 0xd2, 0xe3, 0x12, 0x90, 0xbf, 0xc2, 0x62, 0x25, 0xe0, 0x09, 0x55, 0xa9, 0x8d, 0x91, 0x19, 0x11, 0xa3, 0x99, 0x67, 0x6f, 0xbb } -, - /* Signature */ - 129, - { 0x07, 0x9a, 0x7b, 0x91, 0x6f, 0x67, 0x41, 0x17, 0xf1, 0xd8, 0x77, 0xf4, 0x93, 0x43, 0x25, 0x68, 0x41, 0x48, 0xd5, 0xd0, 0xb0, 0xd5, 0xc2, 0xc6, 0x15, 0x6a, 0x11, 0x15, 0x9b, 0xc0, 0xbd, 0x30, 0xd0, 0xa7, 0x35, 0x34, 0xdc, 0x94, 0x45, 0xeb, 0xe2, 0x06, 0xd6, 0x07, 0x5e, 0xb4, 0xea, 0x7a, 0x7c, 0x04, 0x32, 0xbd, 0x44, 0xb8, 0x3c, 0xfa, 0xe4, 0x68, 0x5a, 0x9e, 0xb9, 0xa9, 0x7c, 0xbb, 0xfa, 0x4e, 0x82, 0xf7, 0x1d, 0xb5, 0x1a, 0xfa, 0x0d, 0x27, 0xcf, 0x27, 0xf0, 0x60, 0x9b, 0xb3, 0xf8, 0x80, 0x64, 0x13, 0x24, 0x7d, 0x5d, 0x49, 0x54, 0xf7, 0x89, 0xa1, 0x01, 0xbf, 0x39, 0x21, 0x72, 0x8b, 0x48, 0x7e, 0x85, 0xfa, 0x3f, 0xd4, 0xdc, 0xd7, 0x2d, 0x04, 0x44, 0x8e, 0x42, 0xd3, 0xec, 0x05, 0xcc, 0x47, 0x5d, 0x74, 0xcb, 0xf7, 0x65, 0xc3, 0x4e, 0x3e, 0xc1, 0x4c, 0xca, 0x50, 0x40 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Signature Example 10.2", - /* Message to be signed */ - 148, - { 0xca, 0x25, 0x18, 0xa5, 0xa2, 0x24, 0xb2, 0x3d, 0x42, 0x05, 0xd8, 0xdd, 0x7e, 0xb0, 0x4c, 0xbd, 0xcd, 0x0c, 0xcb, 0x82, 0xbc, 0x87, 0x96, 0x1d, 0x85, 0x9d, 0x66, 0x00, 0xb1, 0xac, 0x3e, 0x25, 0xa9, 0x40, 0x7b, 0x6c, 0x06, 0x50, 0x27, 0xc0, 0x40, 0x81, 0xf4, 0x45, 0xa2, 0x30, 0xab, 0x93, 0x08, 0xe7, 0x55, 0xf3, 0x3a, 0x75, 0x97, 0x73, 0xbe, 0x6b, 0x96, 0x9e, 0x0e, 0xa7, 0x74, 0xaa, 0x6e, 0x33, 0x4f, 0xb6, 0x04, 0x18, 0x42, 0x75, 0xf3, 0x6a, 0x03, 0x1d, 0xae, 0xa6, 0x51, 0x86, 0x97, 0x79, 0x5b, 0xd6, 0xa7, 0xd6, 0x69, 0x7b, 0x40, 0x6d, 0xa2, 0xce, 0xce, 0x15, 0xdc, 0x11, 0x3d, 0x85, 0x44, 0x98, 0x85, 0x61, 0x13, 0x1d, 0x4f, 0xc6, 0xf6, 0xe3, 0xc5, 0x80, 0xd8, 0x06, 0x80, 0x7d, 0xf2, 0xc6, 0x85, 0x65, 0x09, 0x54, 0x2e, 0x4e, 0xd3, 0x9d, 0x34, 0x6e, 0xba, 0x15, 0x97, 0x6a, 0x8f, 0xd0, 0x1d, 0x79, 0x41, 0xb0, 0x16, 0x56, 0x06, 0xc7, 0x61, 0x76, 0x64, 0x9a, 0x16, 0x10, 0x05, 0xa0 } -, - /* Signature */ - 129, - { 0x00, 0xbe, 0xb9, 0x21, 0xce, 0x74, 0x89, 0x81, 0x9d, 0x2f, 0x85, 0xc7, 0x88, 0x39, 0xa2, 0x7d, 0x7e, 0x19, 0xea, 0x0a, 0x76, 0x4a, 0xc5, 0x31, 0x01, 0xe8, 0x6f, 0x31, 0x70, 0xa7, 0x6e, 0x31, 0x8a, 0x7e, 0xe8, 0x9b, 0x1f, 0x5e, 0x23, 0xe7, 0xe2, 0xdb, 0x96, 0x66, 0xeb, 0x43, 0x91, 0xb2, 0x79, 0x2a, 0x57, 0x67, 0xee, 0x35, 0x9b, 0x5c, 0x71, 0xe2, 0x74, 0x79, 0x10, 0xc8, 0x2c, 0x60, 0x83, 0xd6, 0xd3, 0x48, 0x29, 0xb9, 0x6f, 0xa5, 0xa2, 0xec, 0x0f, 0x62, 0xf1, 0xbc, 0xda, 0x5d, 0x78, 0xf8, 0xdc, 0x3c, 0x65, 0x0b, 0x94, 0xe3, 0x2b, 0x38, 0x60, 0xda, 0x5f, 0xc5, 0xb1, 0x7f, 0xbf, 0x68, 0x7e, 0xc0, 0x07, 0x5a, 0x9c, 0x73, 0xdc, 0x1e, 0x98, 0xd1, 0xf3, 0x6a, 0xae, 0xc4, 0x49, 0x3f, 0x78, 0x91, 0xe3, 0xab, 0x08, 0xe2, 0x04, 0x2d, 0x8b, 0x1e, 0x46, 0x2e, 0x8c, 0x4c, 0x33 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.3", - /* Message to be signed */ - 131, - { 0xd4, 0x33, 0xd1, 0x5b, 0x2d, 0x61, 0xb8, 0x6a, 0xc8, 0xec, 0x0d, 0xae, 0xba, 0x65, 0xe1, 0x1d, 0xed, 0x3c, 0x38, 0x84, 0x25, 0x25, 0xe4, 0xb7, 0xc8, 0xe4, 0x53, 0xb0, 0xf5, 0x53, 0xcb, 0x4e, 0xb8, 0x75, 0xa6, 0x9d, 0x78, 0x16, 0xf5, 0x4c, 0x87, 0x79, 0x3e, 0x3a, 0xbb, 0x79, 0xfc, 0x55, 0x11, 0x35, 0x37, 0xb4, 0x76, 0x29, 0x65, 0xcf, 0xee, 0x58, 0x6e, 0x0a, 0x17, 0x99, 0x78, 0x51, 0xe3, 0xdc, 0x9e, 0xaf, 0x6f, 0x1c, 0x9c, 0x2e, 0x98, 0xc9, 0x61, 0x3e, 0x3b, 0xbe, 0xa0, 0x13, 0xff, 0x58, 0x61, 0x6b, 0x2a, 0xb0, 0x5a, 0xb3, 0x24, 0xa9, 0xc5, 0xff, 0x4c, 0x5e, 0xfd, 0xd9, 0x90, 0xdd, 0x97, 0xd9, 0x16, 0x93, 0xc1, 0xeb, 0xd4, 0xc0, 0x9c, 0x73, 0x21, 0x16, 0xc8, 0xdf, 0xc3, 0xec, 0x51, 0x5c, 0x20, 0x53, 0x2c, 0xba, 0x7e, 0x47, 0x58, 0xc6, 0x8a, 0x69, 0xcf, 0xa0, 0xac, 0x31, 0x86 } -, - /* Signature */ - 129, - { 0x03, 0xae, 0x3b, 0xe1, 0xc7, 0x44, 0x6a, 0xd3, 0xef, 0xd8, 0xba, 0xe6, 0x1b, 0x3d, 0x32, 0xd3, 0xef, 0x15, 0x24, 0x82, 0xb1, 0xbf, 0xee, 0x31, 0x2f, 0xe9, 0xe6, 0xbe, 0xee, 0xab, 0x8c, 0xbd, 0x08, 0xf4, 0xc8, 0xf9, 0xcf, 0x06, 0x7d, 0xea, 0xb6, 0xba, 0xc7, 0xc0, 0xfe, 0xcd, 0x87, 0xbb, 0xab, 0xc7, 0xf6, 0x79, 0x8c, 0x77, 0xef, 0x1c, 0x3f, 0xd8, 0xbc, 0xa2, 0x8c, 0xf9, 0xec, 0xe6, 0x56, 0x79, 0x5f, 0x60, 0xb3, 0x78, 0x75, 0xea, 0xbe, 0xf8, 0x21, 0x53, 0xa1, 0x2b, 0xc7, 0xfd, 0xe3, 0xfb, 0xc9, 0xe5, 0xe1, 0x48, 0xf4, 0xe1, 0x6c, 0xb7, 0x2a, 0x77, 0x3d, 0x9d, 0xd0, 0x23, 0x17, 0xf7, 0x0b, 0x33, 0x91, 0x40, 0x08, 0x05, 0xe8, 0x5e, 0x7a, 0x23, 0x56, 0x7b, 0x34, 0xaa, 0x65, 0xa3, 0x5f, 0x74, 0x41, 0x70, 0xaf, 0xfc, 0xb3, 0x23, 0x37, 0x1a, 0xd2, 0xab, 0x9f, 0x1e, 0x4d } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.4", - /* Message to be signed */ - 52, - { 0x7d, 0x0f, 0x5b, 0xd7, 0x90, 0x0f, 0x1e, 0x65, 0x65, 0x4e, 0x6c, 0x7e, 0xeb, 0x06, 0x4c, 0xb8, 0x28, 0xf3, 0x55, 0xd6, 0xde, 0x9b, 0xf0, 0xd3, 0x47, 0x83, 0xff, 0xcb, 0xe8, 0x0a, 0xb1, 0xb8, 0xae, 0x07, 0xb7, 0xf1, 0xe3, 0xf5, 0xa3, 0x20, 0xdd, 0x9b, 0x8b, 0x76, 0xbe, 0x0e, 0x97, 0x72, 0xde, 0x19, 0xa8, 0xd3 } -, - /* Signature */ - 129, - { 0x09, 0xe7, 0xa5, 0x30, 0x41, 0x71, 0xda, 0x63, 0x8b, 0xe7, 0x60, 0x1f, 0xbf, 0xf6, 0xe4, 0x95, 0x36, 0xf3, 0x36, 0x60, 0x82, 0x25, 0x3a, 0xbc, 0x1d, 0xb5, 0xd1, 0xb6, 0x54, 0x93, 0xda, 0x59, 0x5e, 0xc9, 0x3c, 0x37, 0xf5, 0x89, 0x0b, 0x5f, 0x47, 0x15, 0xbd, 0x5e, 0x80, 0xc0, 0xbb, 0xc5, 0xc6, 0x3b, 0x74, 0xaf, 0x2e, 0x60, 0x43, 0x91, 0x32, 0xd2, 0x52, 0x13, 0x75, 0x0b, 0xc1, 0xde, 0x30, 0x2e, 0x3e, 0x8b, 0x83, 0xda, 0xd2, 0xde, 0x0d, 0xff, 0xc4, 0xfa, 0xab, 0x40, 0x56, 0xdd, 0x7c, 0x40, 0x5e, 0x04, 0xd5, 0x94, 0x24, 0x53, 0x65, 0x9d, 0x49, 0x0f, 0x3c, 0x3d, 0xaa, 0x7d, 0x3f, 0x11, 0x70, 0x11, 0x81, 0x6b, 0x56, 0x59, 0x01, 0x04, 0xde, 0x7f, 0x9c, 0x05, 0x23, 0x73, 0xe2, 0xdd, 0xe4, 0x14, 0x49, 0x04, 0x27, 0xa5, 0x89, 0x64, 0x49, 0x3f, 0xf4, 0x5f, 0x08, 0xa6, 0xe8 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.5", - /* Message to be signed */ - 14, - { 0xd9, 0x6a, 0xa0, 0x91, 0xc1, 0x60, 0xb5, 0x52, 0xb1, 0x6d, 0xf0, 0x65, 0x8f, 0xa8 } -, - /* Signature */ - 129, - { 0x0b, 0x69, 0x75, 0x4e, 0xd6, 0xd7, 0xa7, 0xd2, 0xd8, 0x5b, 0x2c, 0x7a, 0x30, 0x6c, 0x78, 0xd6, 0x3d, 0x0f, 0xfa, 0x43, 0x8f, 0x43, 0xbe, 0xec, 0x3a, 0x02, 0x86, 0xce, 0x57, 0xe7, 0xe0, 0xf8, 0x5c, 0xa4, 0x30, 0xe6, 0x39, 0x08, 0xc0, 0xfa, 0x58, 0x4b, 0xa2, 0x50, 0x5f, 0x8c, 0x94, 0x65, 0x6e, 0xc0, 0x24, 0x94, 0xbb, 0x03, 0x2f, 0x92, 0x0c, 0x4b, 0x6b, 0x8c, 0x94, 0x3e, 0x6b, 0xe9, 0x2f, 0x57, 0x8a, 0xa8, 0xcc, 0xdf, 0xaa, 0xc0, 0xa5, 0x4b, 0x8a, 0x9c, 0x0d, 0xf5, 0x48, 0x27, 0x1f, 0x89, 0x73, 0xc9, 0xff, 0xa2, 0xa2, 0x0c, 0x84, 0x76, 0x2e, 0x90, 0x17, 0xe7, 0x45, 0x2e, 0x5d, 0x74, 0xda, 0x69, 0x0f, 0x75, 0xc0, 0x99, 0xab, 0x91, 0xe2, 0xa7, 0x96, 0x3b, 0xc5, 0x37, 0xf9, 0xc2, 0x4c, 0xcc, 0x3c, 0x41, 0x8c, 0x6e, 0x98, 0x58, 0x61, 0xd9, 0x3d, 0xaa, 0xb2, 0xe6, 0x13 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.6", - /* Message to be signed */ - 215, - { 0x56, 0xf0, 0x48, 0x64, 0x5a, 0x49, 0xfa, 0x01, 0x41, 0xf4, 0xd6, 0x74, 0xaa, 0xfc, 0xf2, 0xff, 0xfa, 0x83, 0xf9, 0xb4, 0x52, 0xf1, 0xfe, 0xed, 0x43, 0x05, 0x7c, 0xac, 0x27, 0x67, 0x5e, 0xa1, 0xa1, 0x41, 0xd8, 0x7f, 0x92, 0xf9, 0xce, 0xbf, 0x6e, 0xe4, 0xf7, 0x8f, 0x8e, 0xd4, 0xc3, 0xa2, 0x9d, 0xeb, 0x72, 0x97, 0x47, 0xb4, 0xf9, 0x8e, 0x4c, 0x75, 0x90, 0xaa, 0xa8, 0xd5, 0x6d, 0xbc, 0x61, 0xd3, 0x8c, 0xb5, 0x62, 0x22, 0x26, 0xf6, 0x8e, 0x43, 0xf9, 0xc4, 0xf4, 0xc0, 0x39, 0x98, 0xae, 0xe9, 0x09, 0x34, 0x39, 0x5b, 0xc8, 0x40, 0xc8, 0x6d, 0xcc, 0x88, 0x74, 0x77, 0x6f, 0x43, 0x03, 0x9f, 0x56, 0xa8, 0x9d, 0x24, 0xbd, 0xc4, 0xb3, 0x05, 0xdf, 0x09, 0xe5, 0xca, 0x0c, 0x05, 0x12, 0xad, 0x6d, 0x15, 0x71, 0x91, 0x9a, 0x3d, 0xb3, 0xa6, 0xbd, 0x98, 0xb7, 0x82, 0x0a, 0xda, 0x08, 0x69, 0xd2, 0x25, 0xa4, 0x04, 0x02, 0x7a, 0xcb, 0x6d, 0x76, 0x7f, 0xc3, 0x14, 0xdb, 0x37, 0x7e, 0x8d, 0x1d, 0xb6, 0xef, 0x0a, 0xf2, 0x94, 0x54, 0xdb, 0x2b, 0xd4, 0xc1, 0xce, 0xe0, 0x13, 0xa5, 0x97, 0x43, 0x48, 0x6d, 0x32, 0x32, 0x95, 0x83, 0xcf, 0x80, 0x11, 0x3c, 0xda, 0xa1, 0x0e, 0x4f, 0x2c, 0xea, 0x6c, 0x4f, 0x9f, 0xc6, 0xe4, 0xe2, 0x71, 0x6e, 0xde, 0x85, 0x72, 0x7c, 0x3a, 0xfd, 0x43, 0x49, 0x46, 0x09, 0x77, 0x76, 0x30, 0xee, 0x33, 0x63, 0x7e, 0xa3, 0x5c, 0x9b, 0x4f, 0x68, 0x8e, 0x49, 0x2c, 0x3c, 0x64, 0x0d } -, - /* Signature */ - 129, - { 0x06, 0x66, 0xef, 0x71, 0xe2, 0xc8, 0xa1, 0xeb, 0x1c, 0x46, 0x40, 0x3f, 0xd2, 0x3e, 0x52, 0x18, 0x83, 0xad, 0xa1, 0xb9, 0xbc, 0x5f, 0xbd, 0x35, 0x3b, 0xbb, 0x3c, 0x3d, 0xfb, 0x57, 0x0a, 0xc1, 0xc7, 0x21, 0xfa, 0xf3, 0xf5, 0x97, 0x32, 0xf2, 0x13, 0x37, 0x73, 0x80, 0x39, 0x79, 0x48, 0x46, 0x2f, 0xd2, 0x0a, 0x3f, 0x0e, 0x5e, 0x08, 0x91, 0xa6, 0xb0, 0x7c, 0x31, 0xb3, 0x60, 0xaa, 0xa9, 0x65, 0xe2, 0xf0, 0x93, 0x0e, 0xb3, 0x41, 0xee, 0x77, 0xec, 0x43, 0x90, 0x65, 0xc0, 0xaa, 0xd9, 0x17, 0x87, 0xab, 0x6d, 0x2e, 0x6c, 0xde, 0xdd, 0xf5, 0x54, 0x81, 0x65, 0x1a, 0xeb, 0xbf, 0x9d, 0x11, 0xd5, 0x4b, 0xc1, 0x13, 0x26, 0x18, 0x3e, 0xbf, 0xf4, 0x9b, 0xd4, 0x0b, 0xdf, 0x76, 0xd7, 0xef, 0x69, 0xb6, 0x7e, 0xa3, 0x96, 0x8f, 0xa8, 0x49, 0x03, 0x2f, 0xb8, 0x24, 0xb6, 0xdd, 0x6a, 0xe3 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.7", - /* Message to be signed */ - 165, - { 0x79, 0xda, 0x89, 0xe3, 0x55, 0xd5, 0x51, 0xa0, 0xe0, 0x31, 0xf4, 0xfb, 0x71, 0xab, 0x6f, 0x41, 0x44, 0xc4, 0x76, 0x2e, 0x07, 0xd0, 0x64, 0x14, 0x33, 0xcb, 0x5e, 0xc8, 0x61, 0x34, 0x96, 0x3f, 0x7d, 0x2c, 0x4d, 0xc7, 0xbe, 0xb5, 0xc6, 0xd4, 0x61, 0x57, 0xc6, 0xc4, 0xe1, 0x4a, 0x4b, 0x9c, 0x7a, 0x2c, 0x0d, 0x46, 0x0f, 0x1f, 0xc0, 0x62, 0xea, 0x1b, 0x4f, 0x98, 0x74, 0xd5, 0xb1, 0xc2, 0x9a, 0xe2, 0xf2, 0xa5, 0xb3, 0x90, 0x62, 0xe4, 0x12, 0x12, 0xe6, 0x5c, 0x85, 0xc2, 0x8e, 0x76, 0x75, 0x89, 0x96, 0x5d, 0x17, 0x10, 0xad, 0x5b, 0xc7, 0x6f, 0xa5, 0xa6, 0x72, 0x9a, 0x06, 0xfd, 0x49, 0x6e, 0x2e, 0x09, 0x97, 0xe5, 0x73, 0x37, 0xbd, 0x51, 0x6e, 0x6b, 0xc7, 0x9b, 0xe9, 0xe0, 0x70, 0xaa, 0x7b, 0x86, 0xc2, 0xdd, 0xf1, 0x4f, 0x94, 0x98, 0x5f, 0xe1, 0x58, 0x2a, 0x29, 0x2c, 0xd1, 0x39, 0x34, 0xb3, 0xc3, 0x8d, 0xfe, 0x59, 0x77, 0xed, 0x1d, 0x9f, 0x8a, 0xd3, 0x24, 0xc0, 0xdc, 0x07, 0xe5, 0x85, 0x3c, 0x7e, 0x48, 0x90, 0xbf, 0xbd, 0xc1, 0xa0, 0x1e, 0xcd, 0x72, 0xc5, 0xff, 0x68, 0xa0, 0x2f, 0x1e } -, - /* Signature */ - 129, - { 0x0a, 0x06, 0x82, 0xf7, 0x42, 0xe7, 0x43, 0xe1, 0xc7, 0xda, 0xba, 0xac, 0x61, 0x8a, 0x78, 0x6f, 0x28, 0xed, 0x13, 0xa6, 0x58, 0x7a, 0xdf, 0xc3, 0x3c, 0x98, 0x29, 0xd7, 0x52, 0xc1, 0x3e, 0xf2, 0x7a, 0x00, 0xc7, 0xe6, 0xd4, 0x5e, 0x27, 0x17, 0x1a, 0x58, 0x41, 0x77, 0x1d, 0x78, 0x69, 0x8c, 0x6c, 0xc6, 0x67, 0x78, 0xb8, 0xc0, 0x93, 0x38, 0xe3, 0x5b, 0x9b, 0x6f, 0x59, 0xc0, 0x64, 0xce, 0xb3, 0xeb, 0x20, 0xce, 0x90, 0x9a, 0x5c, 0x6c, 0xea, 0xae, 0xbb, 0xe9, 0x3e, 0x86, 0xc7, 0xc5, 0xff, 0x4a, 0x39, 0x17, 0xf1, 0x26, 0x81, 0x96, 0x32, 0xcf, 0x96, 0xfa, 0xb1, 0xd3, 0x91, 0x73, 0xa7, 0xae, 0x7f, 0xc2, 0xff, 0x5c, 0x0f, 0xb4, 0x09, 0x05, 0x35, 0xda, 0xdb, 0x58, 0xd8, 0x7d, 0x0d, 0xa3, 0xdb, 0x32, 0xec, 0xec, 0x13, 0x71, 0x8b, 0x3a, 0xc5, 0xc3, 0x0b, 0xa8, 0x02, 0xe3, 0x8b } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.8", - /* Message to be signed */ - 92, - { 0xe6, 0x9a, 0xc9, 0x43, 0x3e, 0x6c, 0x28, 0xac, 0x53, 0xf8, 0x03, 0x4a, 0x86, 0x8d, 0xa9, 0x88, 0x3e, 0x31, 0x9e, 0x82, 0xe6, 0xbc, 0x2e, 0x49, 0x45, 0x5e, 0x6e, 0x4f, 0x09, 0x8b, 0x53, 0xf2, 0x87, 0xa8, 0x58, 0xda, 0x1d, 0x87, 0x6a, 0x9a, 0x5a, 0x6a, 0x9f, 0xc1, 0x4f, 0xd2, 0x42, 0x38, 0xcd, 0x4e, 0x4b, 0x57, 0x31, 0x07, 0x7a, 0x4d, 0xbd, 0xd5, 0x03, 0x8a, 0x9b, 0xc1, 0xf5, 0xde, 0xf4, 0x3f, 0xec, 0x77, 0xf6, 0x7e, 0xb0, 0x62, 0xfa, 0xef, 0xef, 0x7d, 0x04, 0x29, 0x23, 0x8b, 0x25, 0xd0, 0x31, 0x85, 0x78, 0x96, 0x62, 0x3a, 0x3f, 0x1d, 0x37, 0xbf } -, - /* Signature */ - 129, - { 0x08, 0xa0, 0x20, 0xe4, 0x20, 0x98, 0x78, 0xf1, 0xe6, 0x37, 0xad, 0x59, 0xda, 0xaf, 0x83, 0x5d, 0xaf, 0x4c, 0xa6, 0x64, 0x84, 0x47, 0x94, 0xc1, 0xc6, 0x48, 0xf0, 0xe2, 0x23, 0x3d, 0xba, 0x75, 0x48, 0xbd, 0x16, 0x1f, 0x0c, 0x0a, 0x18, 0x24, 0xd7, 0x62, 0x03, 0x1a, 0x41, 0x75, 0x72, 0x84, 0x2f, 0x8e, 0x64, 0x4a, 0xa9, 0x3f, 0x9d, 0x91, 0xdd, 0x77, 0x09, 0xe1, 0x6a, 0x42, 0x9c, 0xc1, 0x43, 0x90, 0x3e, 0xf4, 0xf8, 0x37, 0xa4, 0x58, 0x39, 0x6b, 0xca, 0xc2, 0x40, 0x92, 0xb0, 0x17, 0x24, 0xc6, 0xfe, 0x3d, 0xd1, 0xad, 0x24, 0x3f, 0x3f, 0x70, 0xb5, 0xae, 0x6f, 0xaa, 0x09, 0xf3, 0x70, 0xca, 0xa5, 0x12, 0x10, 0x4b, 0x91, 0x76, 0x06, 0x0d, 0xf2, 0xbf, 0x12, 0x1c, 0xbc, 0xe9, 0x19, 0x8e, 0xc2, 0xfe, 0x45, 0xa5, 0x9e, 0xbd, 0xdc, 0x46, 0x75, 0x32, 0xb5, 0xaf, 0xb9, 0xb2, 0x35 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.9", - /* Message to be signed */ - 152, - { 0x45, 0xe0, 0x90, 0x56, 0xa2, 0x8e, 0x4b, 0x2e, 0x7c, 0x11, 0xf6, 0x5e, 0x68, 0x8a, 0x1e, 0x3c, 0x33, 0xf0, 0xe5, 0x2c, 0x9a, 0x03, 0x6c, 0x09, 0xd8, 0x1d, 0xe5, 0xa6, 0xda, 0xb5, 0x8d, 0x4d, 0x55, 0xcf, 0x41, 0x1b, 0x53, 0xad, 0x64, 0x6e, 0x83, 0xa3, 0x4b, 0x0c, 0x08, 0xc2, 0x21, 0xae, 0x03, 0x76, 0xab, 0x76, 0xa7, 0x9d, 0x1f, 0xee, 0x67, 0x1a, 0x58, 0x44, 0x20, 0x56, 0x4f, 0x8e, 0x85, 0x2e, 0xb6, 0xf2, 0xd4, 0x27, 0xae, 0xe0, 0xa0, 0x96, 0xdd, 0x72, 0xdb, 0xe8, 0x50, 0x7c, 0x67, 0x7f, 0x8a, 0xa0, 0x0e, 0xb7, 0xc2, 0x5d, 0xfb, 0x0a, 0x49, 0xdd, 0x88, 0xa6, 0xc7, 0x84, 0x76, 0xb8, 0x00, 0x11, 0xb6, 0x82, 0x8b, 0x3a, 0xaf, 0x46, 0x47, 0x79, 0x44, 0x22, 0xba, 0x6b, 0xd6, 0x3b, 0x7a, 0xb0, 0xe7, 0xda, 0xfb, 0xd3, 0x6f, 0x6c, 0x41, 0xde, 0xa0, 0x3d, 0x73, 0x22, 0x35, 0x64, 0x96, 0x94, 0x60, 0xd9, 0x28, 0x54, 0x0b, 0x73, 0x92, 0x57, 0xe7, 0x0b, 0xb6, 0x8d, 0x5c, 0x65, 0x3c, 0x37, 0x96, 0x94, 0x58, 0x95 } -, - /* Signature */ - 129, - { 0x08, 0x71, 0x7d, 0x50, 0x86, 0xa6, 0x45, 0x3b, 0xde, 0xff, 0x77, 0xd4, 0xc2, 0xb8, 0x56, 0xe3, 0xba, 0x99, 0x0b, 0xab, 0xf6, 0x97, 0x01, 0xdf, 0x6c, 0xa0, 0xa3, 0xb3, 0xa8, 0x1b, 0x55, 0x69, 0x7d, 0x31, 0x88, 0x9d, 0x10, 0x0d, 0x68, 0x95, 0xc9, 0x7f, 0x0a, 0x56, 0xb4, 0x71, 0x68, 0xc9, 0x8d, 0xa6, 0x2e, 0x59, 0xec, 0x79, 0xd7, 0xae, 0xab, 0x2f, 0x9a, 0x57, 0x07, 0x46, 0x98, 0x8a, 0x26, 0xf4, 0x23, 0x57, 0x6c, 0x70, 0x3f, 0xd8, 0x41, 0xae, 0x51, 0xc9, 0xc2, 0x29, 0xa2, 0xe9, 0xc2, 0x5f, 0xe9, 0x4c, 0x5b, 0x6c, 0xe2, 0xfa, 0x64, 0x54, 0x12, 0xbe, 0xe6, 0x59, 0xfa, 0xf6, 0x09, 0xa3, 0x2e, 0xb2, 0xc0, 0x5b, 0xee, 0xab, 0xaa, 0x4f, 0x58, 0xca, 0xac, 0x31, 0x33, 0xe5, 0xea, 0xaa, 0x27, 0x34, 0x4d, 0x30, 0xee, 0xca, 0x22, 0xc6, 0xeb, 0xd8, 0xd9, 0xe3, 0x44, 0x41, 0x0e } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.10", - /* Message to be signed */ - 141, - { 0xb8, 0x1c, 0x8b, 0xc4, 0xac, 0x1f, 0xd9, 0x71, 0xb2, 0x1f, 0x02, 0x7e, 0x06, 0xf4, 0xd8, 0x7b, 0x34, 0xd5, 0x76, 0x9d, 0x23, 0xc8, 0x59, 0x9d, 0x1f, 0x15, 0x7b, 0x08, 0xa7, 0xf9, 0x2e, 0x34, 0x19, 0xfe, 0xc4, 0xc8, 0xc1, 0xb3, 0x4c, 0xa4, 0x63, 0xc7, 0x68, 0xb7, 0x2e, 0x07, 0xf9, 0xda, 0xbc, 0x3c, 0xbb, 0xdd, 0x8b, 0x56, 0x17, 0xcc, 0x25, 0x28, 0x75, 0x00, 0x2a, 0x1a, 0x13, 0x92, 0xaf, 0x0f, 0xaf, 0xc0, 0x8c, 0x72, 0x11, 0x75, 0x8f, 0x3c, 0x04, 0x20, 0x50, 0xad, 0x73, 0x1b, 0x63, 0x6c, 0x0e, 0x83, 0x19, 0x1a, 0x79, 0xde, 0x5a, 0xa2, 0xcb, 0x94, 0xdc, 0x8b, 0x0b, 0xdd, 0xe7, 0x5d, 0xb7, 0xd0, 0xc8, 0xba, 0xfb, 0x42, 0x23, 0xd3, 0x47, 0xb0, 0x24, 0xb3, 0xd9, 0xc6, 0xb2, 0x39, 0x61, 0x9b, 0x5d, 0x8b, 0x63, 0x46, 0xea, 0x86, 0xfb, 0x8f, 0x24, 0xc5, 0x84, 0xdc, 0x1a, 0x47, 0x79, 0x1c, 0xb7, 0xc8, 0xc7, 0xeb, 0xf1, 0xed, 0x43, 0x8b, 0x88 } -, - /* Signature */ - 129, - { 0x01, 0xb9, 0xf4, 0x33, 0x94, 0xc7, 0xcb, 0x88, 0x5b, 0xfd, 0xcc, 0x3c, 0x84, 0x96, 0x22, 0x23, 0xe8, 0xaa, 0xa9, 0x4c, 0x6c, 0x9b, 0x79, 0x05, 0x40, 0x1d, 0x24, 0xf0, 0xdc, 0x44, 0x3b, 0x2e, 0x8d, 0x84, 0x0e, 0x28, 0xa9, 0x5f, 0xa2, 0x2e, 0x1a, 0xe3, 0x6f, 0xfe, 0x08, 0x96, 0x6f, 0x38, 0xd3, 0x87, 0x14, 0xcf, 0x68, 0xda, 0x8d, 0xb2, 0x37, 0x64, 0xb8, 0x8c, 0x4b, 0xb2, 0xbe, 0x4f, 0xd3, 0xda, 0x9c, 0xcd, 0x1b, 0x50, 0x69, 0x42, 0xaa, 0x9d, 0x73, 0xfc, 0x09, 0x38, 0x2d, 0xc3, 0x30, 0x83, 0x14, 0x70, 0x6e, 0x6c, 0xe2, 0x7f, 0x00, 0x76, 0x1f, 0x3c, 0x9b, 0xd5, 0x4f, 0xa0, 0xe3, 0x1c, 0x96, 0x71, 0x9a, 0xfb, 0xf0, 0x76, 0x3e, 0x35, 0xca, 0xd8, 0x89, 0xb7, 0x2e, 0x13, 0xbd, 0x12, 0xb7, 0x6d, 0x6f, 0x20, 0x20, 0xfa, 0xf6, 0x1d, 0xd3, 0xd7, 0x08, 0x22, 0x8d, 0xf0, 0x6d } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.11", - /* Message to be signed */ - 31, - { 0xd0, 0x32, 0x28, 0x83, 0xe5, 0x98, 0x16, 0x3d, 0x72, 0x20, 0x36, 0xda, 0x3e, 0x63, 0x2a, 0xa6, 0x55, 0x97, 0xac, 0xbc, 0xd1, 0xf4, 0x76, 0x03, 0x10, 0x96, 0x96, 0xf9, 0xb3, 0x9f, 0xdc } -, - /* Signature */ - 129, - { 0x07, 0x8d, 0x17, 0xab, 0x8e, 0x6f, 0xf0, 0xbe, 0x50, 0xb3, 0x53, 0x9e, 0xb0, 0x3a, 0xe8, 0xf0, 0x90, 0x3b, 0x7a, 0x07, 0x74, 0x81, 0x78, 0x1f, 0xb0, 0xb1, 0xf0, 0x9e, 0xdc, 0xf7, 0x78, 0x86, 0x31, 0x2a, 0xd6, 0xc0, 0x60, 0x27, 0x4f, 0x0c, 0x38, 0x9c, 0x16, 0x31, 0x40, 0x40, 0xc8, 0xd7, 0xd9, 0x90, 0x9c, 0xb7, 0x5d, 0xf1, 0x8c, 0x82, 0xd6, 0x2d, 0xd3, 0x4e, 0xb5, 0x9c, 0x6a, 0x87, 0xd3, 0xc4, 0x6a, 0x7e, 0xf7, 0x47, 0x4a, 0x5e, 0x44, 0x7f, 0x77, 0x44, 0xa6, 0xa9, 0x2f, 0x59, 0x90, 0xea, 0xec, 0x7b, 0xfb, 0x00, 0x84, 0x4d, 0x68, 0x4d, 0x30, 0x7d, 0xdb, 0x49, 0x81, 0x89, 0x41, 0x49, 0xe7, 0x52, 0xbf, 0xbe, 0x2e, 0x77, 0x05, 0x7d, 0xa7, 0x60, 0x54, 0x69, 0xaf, 0x7f, 0xfb, 0x67, 0x27, 0xa9, 0x98, 0x1b, 0x94, 0x39, 0xca, 0xa5, 0xd8, 0x0e, 0x6a, 0xe3, 0xb3, 0xd6, 0x51 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.12", - /* Message to be signed */ - 20, - { 0xe8, 0x74, 0x2f, 0x04, 0xb5, 0x65, 0x4d, 0x92, 0x88, 0xb2, 0x31, 0xa4, 0x7a, 0x36, 0x58, 0x39, 0xbb, 0x01, 0xbe, 0x87 } -, - /* Signature */ - 129, - { 0x09, 0xb7, 0x53, 0x06, 0xa7, 0x21, 0x2e, 0xa6, 0xf4, 0x7e, 0xb0, 0xcc, 0xf4, 0xe2, 0xe0, 0xd6, 0xf8, 0xf3, 0xab, 0xdb, 0x9c, 0xdc, 0xfa, 0xad, 0xbe, 0x51, 0x92, 0x2f, 0x92, 0xea, 0x62, 0x62, 0x3c, 0x58, 0xea, 0x74, 0xea, 0x1a, 0x24, 0x7c, 0x9d, 0x73, 0x1f, 0x2c, 0x03, 0x35, 0x36, 0xb3, 0x52, 0x73, 0xc7, 0x17, 0x49, 0x5f, 0x32, 0x5a, 0x60, 0x40, 0x5b, 0xd5, 0xf5, 0xe4, 0x05, 0xb6, 0x80, 0x27, 0x9e, 0x75, 0x21, 0x60, 0x47, 0x87, 0x40, 0x45, 0x72, 0x16, 0xdc, 0x92, 0x9d, 0xdd, 0x65, 0xde, 0xa5, 0x05, 0x53, 0x55, 0x46, 0xe4, 0x77, 0x0f, 0x82, 0x11, 0xb8, 0x49, 0xc3, 0x65, 0x21, 0x8e, 0x56, 0x6e, 0x5b, 0xb4, 0x1b, 0xfc, 0x36, 0x1b, 0x65, 0xcd, 0xcc, 0xb0, 0xe6, 0x04, 0xc9, 0xed, 0xb9, 0x70, 0xee, 0x6a, 0x28, 0x6a, 0x1f, 0xce, 0xc0, 0xae, 0x9d, 0x92, 0x55, 0x8e, 0xab } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.13", - /* Message to be signed */ - 249, - { 0xa0, 0x3c, 0x2b, 0x85, 0xfd, 0xe4, 0x64, 0x68, 0xd1, 0xc5, 0x06, 0x37, 0xb0, 0x0a, 0x72, 0xdc, 0xfc, 0x32, 0xc4, 0x16, 0x31, 0x73, 0x9c, 0x06, 0x02, 0x45, 0xf5, 0x3e, 0x57, 0xc6, 0x6c, 0x51, 0x76, 0x6f, 0x24, 0xea, 0xfd, 0x93, 0xe6, 0xc6, 0x67, 0x43, 0x48, 0x05, 0x91, 0xbf, 0x14, 0x44, 0x6e, 0x04, 0x0b, 0x67, 0xa4, 0xf8, 0x46, 0x99, 0x57, 0x6c, 0x2e, 0x14, 0x63, 0xca, 0xcc, 0xbc, 0xb0, 0x73, 0xe4, 0xb7, 0xec, 0x6d, 0xa6, 0xc8, 0xcb, 0x41, 0xd4, 0xa1, 0x23, 0xc7, 0x48, 0xcd, 0x7e, 0x83, 0xd2, 0x61, 0xe5, 0x4c, 0x2f, 0xd2, 0xbc, 0x49, 0x5b, 0xc4, 0xc4, 0x4a, 0x78, 0xf9, 0x82, 0x00, 0x34, 0x03, 0x09, 0x2e, 0xc6, 0x96, 0x0c, 0x08, 0x8e, 0x2b, 0xcd, 0xe3, 0x48, 0xa2, 0xe0, 0xe5, 0x5a, 0x4b, 0x4f, 0x42, 0xea, 0xb2, 0x29, 0xb9, 0x5c, 0x38, 0x3f, 0x21, 0x13, 0xed, 0x6c, 0xd1, 0xf3, 0xf3, 0x16, 0x7d, 0xe3, 0xd2, 0x8d, 0x36, 0x2c, 0x8d, 0x78, 0xb2, 0xeb, 0x6e, 0x31, 0x62, 0x0e, 0x34, 0xb2, 0xf0, 0xf9, 0x41, 0xda, 0xcd, 0xf7, 0xb4, 0xb8, 0x56, 0x8c, 0x6a, 0x86, 0x3a, 0x55, 0x1d, 0x7b, 0xd4, 0xa5, 0xd7, 0x09, 0x3e, 0xda, 0x69, 0xe1, 0xe2, 0x80, 0x56, 0xdc, 0xb1, 0xeb, 0x69, 0xae, 0x03, 0xad, 0x74, 0xbe, 0x72, 0xa7, 0x5a, 0xe8, 0xfb, 0x56, 0xa2, 0x71, 0x25, 0xca, 0x3d, 0x2d, 0xb3, 0x76, 0x9d, 0x13, 0xd3, 0x5d, 0xb1, 0x08, 0xe2, 0x64, 0x4a, 0x7f, 0x3b, 0x37, 0x93, 0x8f, 0xec, 0x97, 0x62, 0x31, 0x52, 0x06, 0xd3, 0x0c, 0xcf, 0xd5, 0x76, 0xae, 0x7d, 0xe0, 0x76, 0x98, 0x69, 0xe5, 0x04, 0x4d, 0x07, 0x64, 0x6c, 0xf7, 0x8c, 0x64, 0xa4, 0x86, 0x48, 0x0b, 0x0f, 0xd4, 0x2c, 0xc7, 0xb2, 0x46 } -, - /* Signature */ - 129, - { 0x05, 0x8d, 0xa5, 0x49, 0x4c, 0x4e, 0x98, 0xaa, 0x12, 0x1f, 0x67, 0xf6, 0x5a, 0x2c, 0x86, 0x54, 0x25, 0xa9, 0xe6, 0x00, 0x2b, 0x22, 0x3f, 0x03, 0x88, 0x80, 0x97, 0x53, 0x57, 0x3b, 0x4f, 0x33, 0x4d, 0xe4, 0x5d, 0x8f, 0x00, 0x07, 0x25, 0x5d, 0x11, 0x2d, 0xdc, 0x84, 0xdb, 0x26, 0x67, 0x00, 0xe4, 0x40, 0xb5, 0xa8, 0x69, 0x00, 0xc3, 0xd3, 0xd3, 0x5b, 0x02, 0x4c, 0x18, 0xd8, 0xa2, 0x5a, 0x58, 0x00, 0x22, 0x6d, 0x0a, 0x56, 0xd8, 0x38, 0xd8, 0x91, 0x9e, 0x6d, 0x5a, 0x87, 0x30, 0xd6, 0x19, 0x49, 0x90, 0x15, 0xec, 0x46, 0x65, 0xc6, 0x3d, 0x77, 0x80, 0x83, 0xa0, 0x42, 0xdd, 0x4f, 0x05, 0x2a, 0x1b, 0xbb, 0x5f, 0x40, 0x80, 0xcb, 0xbb, 0x41, 0xfa, 0x94, 0x5b, 0xad, 0x6a, 0x74, 0x77, 0x9f, 0x68, 0x07, 0x25, 0xe4, 0x7a, 0x08, 0xa0, 0x51, 0x4f, 0x35, 0x0f, 0xa5, 0xad, 0xf9, 0x0a } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.14", - /* Message to be signed */ - 47, - { 0xc4, 0x0c, 0x70, 0xf2, 0x6d, 0xa5, 0x69, 0x48, 0x6b, 0xac, 0xe7, 0x85, 0xda, 0x32, 0xe3, 0x37, 0xa0, 0xeb, 0x94, 0xfb, 0x3a, 0x0a, 0xa4, 0x09, 0xc5, 0x77, 0x01, 0x75, 0xc8, 0xe8, 0xcb, 0x2b, 0xaa, 0x8d, 0x2a, 0x1b, 0x98, 0x46, 0xc3, 0x7d, 0xf7, 0xd6, 0x71, 0x03, 0x6d, 0x5e, 0x91 } -, - /* Signature */ - 129, - { 0x05, 0x25, 0x61, 0x28, 0xaf, 0xba, 0x1f, 0x55, 0xd8, 0x1f, 0x79, 0xea, 0x33, 0x87, 0x91, 0x47, 0xa2, 0x4a, 0xd7, 0x77, 0x93, 0x46, 0xee, 0x79, 0x8b, 0x21, 0x1c, 0x24, 0x71, 0x53, 0xea, 0x38, 0xd2, 0x6b, 0x21, 0x70, 0x65, 0xf6, 0x1e, 0x01, 0x10, 0xb5, 0x3d, 0x72, 0xcb, 0x64, 0x93, 0x4d, 0x9b, 0x1a, 0xd1, 0xb3, 0xde, 0xc3, 0x32, 0x09, 0x2d, 0x25, 0x8f, 0x0c, 0xaf, 0x1c, 0x4a, 0xee, 0x8b, 0x23, 0xe0, 0x9b, 0xab, 0x0f, 0x0c, 0x27, 0x88, 0x58, 0xb4, 0x41, 0xd0, 0x8c, 0xa3, 0xae, 0x9f, 0x00, 0xaa, 0x9a, 0x3f, 0x01, 0x8f, 0x7d, 0x9f, 0xa9, 0x8a, 0x18, 0xdf, 0x0d, 0x24, 0x84, 0x7e, 0x56, 0x7a, 0x47, 0xf5, 0x77, 0x9b, 0xd1, 0x79, 0x3a, 0x4b, 0x02, 0x52, 0xf2, 0xba, 0xd4, 0x0c, 0x9c, 0x4a, 0x81, 0x30, 0x1c, 0xc2, 0x8c, 0x26, 0x09, 0xd7, 0xbb, 0x33, 0x37, 0xe9, 0x7f, 0x14 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.15", - /* Message to be signed */ - 83, - { 0x9e, 0x6d, 0xcb, 0x11, 0xe0, 0xe8, 0x47, 0x71, 0x39, 0xfa, 0xf0, 0x41, 0xa7, 0x4e, 0x2b, 0xed, 0x64, 0x3a, 0x62, 0xad, 0xed, 0xac, 0x7c, 0xbe, 0xf3, 0x65, 0xec, 0xc4, 0x3a, 0xe4, 0xe5, 0x82, 0x60, 0xbc, 0x72, 0x46, 0x23, 0xbd, 0x63, 0x42, 0xdc, 0x66, 0x0d, 0x66, 0x14, 0x2e, 0xa6, 0x36, 0x80, 0x71, 0x5f, 0x52, 0x2f, 0xf3, 0xcd, 0x4b, 0x63, 0x6f, 0x84, 0xaa, 0x9d, 0x75, 0xfb, 0xfb, 0xc3, 0x84, 0x10, 0x7e, 0x43, 0x00, 0x4d, 0x98, 0x6f, 0xbc, 0xe1, 0xa2, 0x7f, 0x7e, 0xcc, 0x7d, 0x02, 0x39, 0x2c } -, - /* Signature */ - 129, - { 0x0c, 0xcf, 0x23, 0x4e, 0xb4, 0x80, 0x08, 0x5d, 0x92, 0x0d, 0x37, 0xd6, 0x87, 0x96, 0x5d, 0x2f, 0xd2, 0xe4, 0xa4, 0xf3, 0xbd, 0x3b, 0xf7, 0xdd, 0xc1, 0x6b, 0x5d, 0x62, 0xa6, 0x90, 0x32, 0x74, 0x20, 0x7c, 0x6f, 0x90, 0x83, 0x6e, 0x29, 0xff, 0xc6, 0x3a, 0x57, 0xf9, 0x81, 0x30, 0xc5, 0x25, 0x23, 0x25, 0x19, 0xc7, 0x08, 0xf0, 0xdc, 0x8a, 0x12, 0x55, 0xab, 0x55, 0xdb, 0x1a, 0x2b, 0x9a, 0xbc, 0x11, 0x06, 0x16, 0x02, 0x07, 0x5f, 0xf6, 0xf9, 0x7f, 0x90, 0x92, 0x79, 0x6b, 0x98, 0x87, 0x1a, 0x6c, 0xd5, 0xd2, 0x61, 0x7d, 0xdc, 0x9d, 0x25, 0x5a, 0x73, 0x00, 0xc9, 0x10, 0xfd, 0x21, 0x0b, 0x14, 0xa9, 0x81, 0xe5, 0xa0, 0xe0, 0xc6, 0xbb, 0x2b, 0x04, 0x5f, 0xa9, 0x75, 0x68, 0x98, 0xb9, 0x3b, 0x8a, 0x63, 0x45, 0x44, 0xd7, 0x7a, 0xfd, 0xb1, 0xcf, 0x0e, 0x79, 0x58, 0xf1, 0x1a, 0x43 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.16", - /* Message to be signed */ - 177, - { 0x20, 0xbc, 0x46, 0x3b, 0x5e, 0x12, 0x20, 0xa3, 0x9c, 0x84, 0xe8, 0x9f, 0xe6, 0x71, 0x6e, 0xec, 0xab, 0x55, 0x55, 0xf8, 0xbf, 0xce, 0x60, 0xcf, 0xb8, 0x37, 0x93, 0xcc, 0x40, 0xa4, 0xda, 0x1d, 0x22, 0xc0, 0xab, 0x4e, 0xaa, 0x93, 0x1f, 0xb7, 0x47, 0xbe, 0x35, 0xf1, 0xcf, 0x6f, 0xb1, 0x46, 0x5b, 0xef, 0x1d, 0xf2, 0x76, 0x0f, 0xcb, 0x3f, 0x70, 0xd3, 0xe2, 0x96, 0xe7, 0xb2, 0x70, 0x45, 0x0d, 0xff, 0xe2, 0xd5, 0x88, 0xc4, 0x39, 0x6a, 0x5f, 0x6f, 0x1e, 0x63, 0x87, 0xaa, 0x86, 0x97, 0x1f, 0xb0, 0xad, 0x24, 0xdf, 0x55, 0x04, 0x43, 0xdd, 0x12, 0x2b, 0xdb, 0x2c, 0xf3, 0xc9, 0xed, 0x61, 0x25, 0xfe, 0x55, 0xce, 0xc9, 0x91, 0xcb, 0xae, 0x8e, 0xe1, 0x56, 0x2a, 0x8c, 0x0f, 0x4f, 0x36, 0x4f, 0x8f, 0x0a, 0x80, 0xcb, 0x30, 0xfd, 0x99, 0x44, 0x0b, 0xf6, 0x55, 0xf0, 0x80, 0x4f, 0x92, 0x96, 0x8c, 0xa2, 0xe0, 0x1c, 0x0d, 0x5a, 0xbb, 0x4e, 0xe2, 0x67, 0x63, 0x6d, 0xd4, 0xf5, 0x11, 0xa8, 0xd3, 0x29, 0x41, 0x16, 0x21, 0x6b, 0xed, 0xc1, 0x08, 0x86, 0x45, 0xe4, 0x65, 0xd8, 0xe1, 0x98, 0xb8, 0xaf, 0xe1, 0xcd, 0x54, 0x24, 0xb4, 0x2a, 0x53, 0x3c, 0xed, 0x19, 0x8a, 0xd5, 0x97 } -, - /* Signature */ - 129, - { 0x05, 0x1b, 0x71, 0x42, 0x66, 0x06, 0x6b, 0xbb, 0x81, 0x9a, 0x2a, 0x38, 0x05, 0xa8, 0x9c, 0xff, 0x46, 0x18, 0x75, 0xc0, 0x95, 0xf4, 0xf3, 0x89, 0x82, 0xd1, 0xaf, 0xc2, 0xad, 0x2f, 0x14, 0x24, 0x50, 0xb8, 0xa7, 0x52, 0x94, 0x7f, 0x03, 0x1c, 0xce, 0x2c, 0x9c, 0x34, 0x0c, 0x8a, 0xc9, 0xf9, 0xf7, 0xa5, 0x48, 0xb7, 0xcc, 0x17, 0xe4, 0xcc, 0x52, 0x56, 0x96, 0xea, 0x0c, 0x87, 0x53, 0xa1, 0xe1, 0x5b, 0xcb, 0x98, 0x5d, 0xea, 0xec, 0x77, 0x6f, 0xb9, 0xe7, 0xd9, 0xf7, 0x58, 0x62, 0xf8, 0x98, 0x35, 0x23, 0xd9, 0xf8, 0x71, 0xc6, 0x3f, 0xb7, 0x56, 0x1a, 0xc7, 0x1c, 0x37, 0x6b, 0xf4, 0x95, 0xd4, 0x32, 0x38, 0x59, 0xbd, 0x14, 0x18, 0x8f, 0xcd, 0xfb, 0x4b, 0x37, 0xab, 0xcb, 0x5d, 0xc1, 0xa5, 0x8e, 0xed, 0xea, 0x7e, 0x0f, 0xe6, 0x2a, 0xc1, 0x6e, 0x20, 0x8a, 0xab, 0x4c, 0xee, 0x26 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.17", - /* Message to be signed */ - 232, - { 0x92, 0xda, 0x26, 0x0b, 0xc2, 0x13, 0xb7, 0x2b, 0x48, 0xa0, 0x57, 0x53, 0x50, 0x3d, 0x00, 0xa1, 0xdb, 0xfd, 0x02, 0xac, 0x7b, 0x9f, 0xd4, 0x4d, 0x24, 0x01, 0xea, 0x7a, 0xd5, 0x8a, 0xd1, 0x86, 0x1f, 0xda, 0x53, 0x63, 0x29, 0xae, 0x41, 0x73, 0xc9, 0x16, 0x80, 0x05, 0xb9, 0x66, 0x2c, 0x05, 0xcb, 0xea, 0x47, 0xad, 0x86, 0x4a, 0xf7, 0xcb, 0x16, 0x60, 0x2d, 0x3d, 0x18, 0x34, 0x71, 0xbc, 0x98, 0xbc, 0xc6, 0x2c, 0x6d, 0x00, 0xd3, 0x34, 0xbf, 0xf5, 0xb9, 0x0c, 0xfe, 0x7d, 0x7e, 0x12, 0xd0, 0x7f, 0xe7, 0xd4, 0xcb, 0xd9, 0xdc, 0xd3, 0xc4, 0xc2, 0x34, 0x90, 0xbe, 0x8c, 0xba, 0xdc, 0x08, 0xc9, 0x17, 0x79, 0x80, 0x37, 0x3c, 0x79, 0xeb, 0x4e, 0xea, 0x6d, 0x81, 0xa6, 0xbe, 0xe2, 0x27, 0x0b, 0xf4, 0x20, 0xf9, 0x19, 0x79, 0xad, 0x3f, 0x27, 0x1f, 0xd6, 0x8d, 0xd4, 0x28, 0x3b, 0xe8, 0x14, 0x10, 0x92, 0x8c, 0xa4, 0x5b, 0x9d, 0xeb, 0x58, 0xd3, 0xae, 0x98, 0xb2, 0xf4, 0xfc, 0xa6, 0x21, 0x25, 0x95, 0x0b, 0x5e, 0xe1, 0x28, 0xdb, 0xa1, 0x05, 0xc3, 0x5c, 0xc3, 0x98, 0xd1, 0x5e, 0x74, 0x2b, 0xba, 0x92, 0x69, 0x7b, 0x5c, 0x62, 0xb2, 0x67, 0xce, 0x01, 0x14, 0x1c, 0xec, 0xef, 0x80, 0x75, 0x07, 0xde, 0x29, 0xc4, 0x85, 0x30, 0x5d, 0x0a, 0x99, 0x09, 0x43, 0x23, 0x0d, 0x8d, 0x9b, 0x72, 0x52, 0xee, 0x0b, 0x19, 0x56, 0xde, 0x84, 0x5f, 0x2f, 0xbb, 0x28, 0x38, 0x78, 0x5b, 0x47, 0x0a, 0x7c, 0x20, 0x53, 0xdb, 0x39, 0x6b, 0x31, 0x5a, 0x30, 0xd8, 0xa7, 0xf9, 0x1c, 0xff, 0xfd, 0x03, 0xe8, 0xa3, 0x9b, 0xa8, 0xbc } -, - /* Signature */ - 129, - { 0x03, 0xe2, 0x3f, 0x86, 0x52, 0x37, 0x4d, 0x48, 0xd3, 0x81, 0xc3, 0x78, 0x35, 0x3e, 0xb4, 0x7d, 0x90, 0x64, 0xcd, 0x70, 0x8e, 0x1b, 0x9b, 0xf6, 0x88, 0x70, 0x4c, 0x04, 0xc0, 0x09, 0x00, 0x88, 0x46, 0xe6, 0xa4, 0x7e, 0x0b, 0xd2, 0xe3, 0x0c, 0x33, 0x40, 0xf5, 0xd4, 0xe1, 0x9d, 0x2d, 0xc5, 0xd8, 0x89, 0x0c, 0x8f, 0x01, 0x04, 0xdd, 0x6f, 0x5d, 0xd6, 0xca, 0xd9, 0xc4, 0xd9, 0x94, 0x84, 0x09, 0xc3, 0xcc, 0x0b, 0xe6, 0x70, 0x71, 0x9d, 0xd0, 0x48, 0x41, 0x80, 0x89, 0x1c, 0x93, 0x5b, 0x99, 0x79, 0xdb, 0x8e, 0xb4, 0x68, 0xa2, 0x3e, 0x4e, 0xf4, 0x60, 0x29, 0xf3, 0xaf, 0x14, 0x57, 0x4b, 0xd1, 0x0b, 0x47, 0x3e, 0xdd, 0x9b, 0x12, 0x7a, 0x30, 0x6e, 0x51, 0x24, 0xad, 0xa4, 0x02, 0xc1, 0x48, 0xf5, 0x1b, 0x52, 0xe7, 0xe6, 0x28, 0xbf, 0xac, 0xec, 0x3f, 0xc2, 0x54, 0x3a, 0x0f, 0x92 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.18", - /* Message to be signed */ - 113, - { 0x86, 0x03, 0xa5, 0x62, 0x2a, 0x2d, 0xbb, 0xbc, 0xbb, 0xe5, 0x33, 0x30, 0xe9, 0x08, 0xd5, 0xa2, 0x5f, 0x6e, 0x67, 0xa5, 0x1e, 0x07, 0x68, 0xd7, 0xc3, 0xc3, 0xfb, 0xe8, 0xb9, 0x2e, 0x8b, 0x1b, 0x36, 0xdc, 0x00, 0x74, 0x3c, 0xe3, 0x3d, 0xa0, 0xf1, 0xc8, 0xcf, 0xb0, 0x0d, 0x63, 0xed, 0xd6, 0xb2, 0x25, 0x2f, 0xb6, 0x72, 0x13, 0x97, 0xd2, 0x50, 0x4b, 0x30, 0xed, 0x1d, 0x29, 0x3a, 0x82, 0xe2, 0x44, 0xc9, 0x51, 0xbb, 0xfc, 0x24, 0x29, 0x8a, 0x42, 0xff, 0xee, 0x26, 0xe4, 0x56, 0xa7, 0xbe, 0x10, 0x5c, 0xb5, 0xe3, 0x7b, 0x3d, 0x25, 0xde, 0x28, 0xbf, 0xc0, 0x10, 0x42, 0xc4, 0xa8, 0x2c, 0xe8, 0x70, 0x45, 0x54, 0x87, 0xe5, 0xb3, 0x0e, 0x26, 0xf8, 0xd5, 0x39, 0x8c, 0x86, 0x12, 0x6e } -, - /* Signature */ - 129, - { 0x08, 0x22, 0xfc, 0x22, 0xa9, 0xcd, 0x87, 0x7c, 0x09, 0xb6, 0xf9, 0x2e, 0x80, 0x17, 0xcc, 0xc0, 0x28, 0xd5, 0x37, 0x99, 0x67, 0xc7, 0xd0, 0x4e, 0xf3, 0x2f, 0x86, 0x9c, 0x7e, 0xf6, 0x7d, 0x59, 0x3c, 0x77, 0x45, 0xf6, 0x29, 0xd9, 0x3d, 0xf2, 0x60, 0x03, 0x8c, 0xd3, 0x33, 0xea, 0xee, 0x92, 0x35, 0x9f, 0xdb, 0xbf, 0x84, 0x62, 0x3b, 0x7b, 0x55, 0x14, 0x23, 0x5b, 0x83, 0x06, 0x27, 0x2f, 0x4e, 0xfd, 0x13, 0xa6, 0x70, 0x0b, 0xe9, 0x28, 0x9a, 0xd5, 0x4e, 0x57, 0xd5, 0x2d, 0x1f, 0xeb, 0xb4, 0x6a, 0x37, 0xaf, 0xd6, 0x95, 0x94, 0x2c, 0x4c, 0xbc, 0xfd, 0x37, 0x68, 0xf2, 0x82, 0x1e, 0x88, 0x8e, 0xfa, 0x0e, 0x2c, 0x5f, 0xd3, 0xc9, 0xc4, 0x2c, 0xc3, 0x55, 0x50, 0xd7, 0x95, 0x5c, 0xdb, 0xd3, 0x5c, 0x8e, 0xf8, 0x58, 0x1b, 0x41, 0xf8, 0xdd, 0xab, 0x26, 0x18, 0x26, 0x2e, 0x3d, 0xff } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.19", - /* Message to be signed */ - 43, - { 0x06, 0x7d, 0x4b, 0xec, 0xb0, 0x3e, 0x1e, 0xb2, 0x75, 0xae, 0x22, 0x50, 0x7a, 0x77, 0xa5, 0x39, 0x6e, 0x71, 0x9b, 0x5f, 0x00, 0xb1, 0x05, 0x95, 0x0b, 0xc7, 0x99, 0x8e, 0x08, 0x03, 0xda, 0x57, 0xa4, 0xde, 0x08, 0xa4, 0x07, 0x8b, 0x9a, 0x00, 0xd2, 0xd4, 0x6f } -, - /* Signature */ - 129, - { 0x09, 0x10, 0x8d, 0x44, 0x57, 0x5f, 0x61, 0x4a, 0x68, 0x3e, 0xe4, 0xd7, 0x8b, 0xce, 0x1c, 0x58, 0xf5, 0x24, 0x36, 0x87, 0xcb, 0xe9, 0xc5, 0x48, 0x34, 0x60, 0xb6, 0x5d, 0xf2, 0x36, 0x92, 0x7d, 0xbc, 0x78, 0xc0, 0x64, 0x39, 0xce, 0x1c, 0x7c, 0x51, 0x97, 0x39, 0xc8, 0xf8, 0x95, 0x00, 0x82, 0xd9, 0x56, 0xd6, 0x0f, 0xc3, 0x64, 0x5b, 0xa7, 0xaf, 0x8e, 0x78, 0x89, 0x54, 0x70, 0x63, 0x1b, 0xb4, 0xda, 0x00, 0xc0, 0x1b, 0x98, 0x2c, 0xc1, 0x1c, 0x68, 0xd2, 0x65, 0x0c, 0x7c, 0xae, 0xa4, 0xa2, 0x6e, 0x21, 0x0f, 0xf4, 0xb1, 0xca, 0xe1, 0xdb, 0x50, 0x5f, 0xce, 0xa9, 0x29, 0x34, 0x87, 0xb2, 0x07, 0x31, 0x78, 0xca, 0x24, 0x5c, 0xf0, 0xca, 0x23, 0x56, 0xba, 0xf8, 0x65, 0x54, 0x6b, 0x54, 0xaf, 0x95, 0x35, 0xba, 0xb1, 0x8d, 0xb6, 0x79, 0xef, 0x56, 0x27, 0x09, 0x29, 0x79, 0xc0, 0xa8 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 10.20", - /* Message to be signed */ - 238, - { 0x88, 0x4f, 0xc5, 0x02, 0xc8, 0x82, 0x48, 0x49, 0x47, 0x8b, 0x2e, 0xac, 0x1e, 0x7e, 0xbb, 0xb7, 0xca, 0xf2, 0x8e, 0xeb, 0x48, 0x89, 0x45, 0x86, 0x02, 0xec, 0x70, 0x35, 0x81, 0xd0, 0x5e, 0xf9, 0xb1, 0xa4, 0x22, 0x0b, 0xd2, 0xf9, 0x22, 0xf2, 0x5e, 0x46, 0x4c, 0x88, 0x07, 0x01, 0xc8, 0xa4, 0x5b, 0x1d, 0x1f, 0xab, 0xc8, 0x66, 0x2e, 0xb2, 0x49, 0x40, 0x04, 0x26, 0xc2, 0x22, 0x62, 0x38, 0xeb, 0x8a, 0xd0, 0xf9, 0x06, 0x9c, 0x90, 0xf0, 0x01, 0x82, 0x77, 0x44, 0x80, 0x25, 0xa6, 0x41, 0x80, 0xed, 0x55, 0xd1, 0xaf, 0xd2, 0x7a, 0xff, 0x4f, 0x00, 0x70, 0x2f, 0x71, 0x5d, 0x29, 0x10, 0x00, 0x0d, 0xf3, 0x92, 0x5c, 0x70, 0x10, 0xff, 0x11, 0x7f, 0x6d, 0x8d, 0x2a, 0x81, 0x67, 0x09, 0x48, 0x9e, 0xfd, 0x29, 0xa4, 0x5c, 0x59, 0x23, 0x17, 0x7b, 0xf9, 0x2c, 0xd0, 0xbf, 0x6b, 0x94, 0x74, 0x5d, 0x34, 0x8a, 0x14, 0x4e, 0x98, 0x74, 0x0f, 0x72, 0x22, 0x6a, 0x3e, 0x2a, 0x9d, 0x41, 0x7b, 0x7c, 0x1f, 0xd8, 0xf8, 0x95, 0xf5, 0x15, 0xc5, 0xc6, 0xd4, 0x06, 0xa7, 0x2b, 0xdc, 0xcd, 0x39, 0x15, 0x2c, 0x30, 0xfd, 0xbd, 0xda, 0x0e, 0x62, 0x82, 0x3e, 0xe9, 0xdf, 0xab, 0x34, 0x32, 0xe6, 0x64, 0x2e, 0xec, 0xb6, 0x98, 0x7b, 0x90, 0x46, 0xe0, 0x40, 0xa4, 0x78, 0xa4, 0xdf, 0x64, 0x8d, 0xef, 0xb3, 0x01, 0x6a, 0xa4, 0x43, 0xd0, 0x67, 0xa1, 0xfa, 0x41, 0x55, 0x55, 0x53, 0x74, 0xf8, 0xba, 0x32, 0x5a, 0x8b, 0x55, 0xe4, 0xd6, 0xb5, 0xfa, 0x09, 0x0e, 0xeb, 0xae, 0xc9, 0xc9, 0x2e, 0x26, 0x1c, 0xc0, 0x4c, 0xea, 0xa4, 0x8b, 0x3b, 0xed, 0x7b, 0x3f, 0x87, 0xd3 } -, - /* Signature */ - 129, - { 0x0b, 0x41, 0xb4, 0x12, 0x19, 0x71, 0x26, 0x15, 0x9e, 0x9b, 0xda, 0x1a, 0x24, 0x62, 0xc8, 0xa4, 0xfd, 0x3d, 0xff, 0xdc, 0x6e, 0x98, 0xe4, 0xdb, 0xfc, 0x06, 0xcf, 0xcc, 0xf1, 0x6f, 0x74, 0xfc, 0xb5, 0x23, 0x38, 0xaf, 0x14, 0xed, 0x39, 0x36, 0xe0, 0x2c, 0x1d, 0x7e, 0x77, 0x23, 0x6c, 0xc6, 0xa4, 0x89, 0xf0, 0x0f, 0x08, 0x98, 0x52, 0xde, 0x5c, 0xc4, 0x25, 0xb4, 0x50, 0x94, 0xa0, 0x42, 0xe3, 0x85, 0x46, 0x4b, 0x64, 0xc3, 0xb2, 0xff, 0xd0, 0x1f, 0x19, 0xa0, 0x1c, 0x2c, 0x03, 0x81, 0xf7, 0x58, 0xa6, 0x73, 0x65, 0xd1, 0xe6, 0x5a, 0x70, 0x7b, 0x13, 0x4e, 0x3f, 0x8a, 0x93, 0x16, 0xb4, 0xaa, 0xcb, 0x7e, 0x85, 0x1a, 0x5e, 0xab, 0x3c, 0xd8, 0x11, 0xbd, 0x45, 0x22, 0xdd, 0x14, 0x1a, 0x00, 0x15, 0x7d, 0xc3, 0xfc, 0xaf, 0xc4, 0x15, 0x4c, 0xaf, 0x05, 0x93, 0xca, 0x62, 0x10, 0x2e } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 11: A 1029-bit RSA key pair", -{ - /* Modulus */ - 129, - { 0x1e, 0xd7, 0xee, 0xa9, 0x40, 0x5f, 0x50, 0x7f, 0x94, 0x16, 0x23, 0xa1, 0x7b, 0xea, 0x71, 0x7b, 0x86, 0x0d, 0xe4, 0x4c, 0xb7, 0x76, 0x87, 0xb8, 0xb8, 0x5a, 0x6d, 0x7d, 0x1e, 0xf4, 0xf8, 0x62, 0x8d, 0x25, 0x7c, 0xb9, 0x42, 0x38, 0xc6, 0x25, 0xba, 0x25, 0xd4, 0x6a, 0xae, 0x59, 0x39, 0x60, 0xaf, 0x79, 0xf7, 0x5e, 0x28, 0xab, 0x63, 0xac, 0x3c, 0xac, 0x48, 0x20, 0xb8, 0x2d, 0xa1, 0xcf, 0x75, 0x0d, 0x6c, 0x93, 0x0d, 0x6b, 0x82, 0x78, 0x54, 0xaa, 0xf6, 0xca, 0xc0, 0xc1, 0x7b, 0x80, 0xb0, 0x29, 0xf5, 0xd3, 0x19, 0xcc, 0xca, 0x66, 0x5c, 0x56, 0x94, 0xf5, 0x4b, 0xa5, 0xf0, 0x96, 0xf4, 0x54, 0x34, 0x13, 0xec, 0x4c, 0x5e, 0x97, 0xcc, 0x1d, 0xda, 0x89, 0xd2, 0xaf, 0xd4, 0x28, 0x57, 0x87, 0x59, 0x03, 0x2a, 0xdf, 0x92, 0x89, 0x50, 0x65, 0xba, 0xaf, 0xe8, 0x8d, 0x2d, 0x8b, 0x61 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 129, - { 0x0d, 0x93, 0x80, 0x72, 0xb1, 0x6a, 0x02, 0xf5, 0xd5, 0x0a, 0x15, 0xae, 0xeb, 0xeb, 0x5a, 0xfe, 0x43, 0x18, 0x74, 0x48, 0x2c, 0x6d, 0x18, 0xfa, 0x7e, 0xf3, 0x16, 0xc4, 0x7f, 0x4e, 0xd6, 0xd2, 0x12, 0x4c, 0xd0, 0xe4, 0x7e, 0xb8, 0x9c, 0xc7, 0x58, 0x73, 0x74, 0x57, 0x6c, 0xdc, 0xcb, 0x3b, 0xba, 0xa1, 0x95, 0xf7, 0xb5, 0x31, 0x13, 0x93, 0x69, 0xb5, 0x6f, 0x9e, 0x2f, 0x53, 0xae, 0xa8, 0xac, 0x7a, 0x97, 0xe1, 0xd7, 0x45, 0x8f, 0x52, 0x6c, 0xf7, 0xd7, 0x10, 0xc4, 0x90, 0x2a, 0xae, 0xdf, 0x99, 0x7c, 0x11, 0x94, 0xb8, 0x7b, 0x62, 0xcc, 0xd8, 0xda, 0xb8, 0xff, 0x5b, 0x67, 0xd4, 0x0f, 0xe8, 0x3d, 0xe1, 0xb8, 0x2b, 0x91, 0x60, 0x9a, 0x7c, 0x5c, 0xf3, 0x92, 0x29, 0xeb, 0x3a, 0x1b, 0x2f, 0x0e, 0xbf, 0x0b, 0x12, 0x5c, 0xb8, 0x00, 0x91, 0xa0, 0x7e, 0xbc, 0x77, 0x9c, 0xe7, 0xfd } -, - /* Prime 1 */ - 65, - { 0x05, 0x90, 0xa1, 0xe5, 0x18, 0x71, 0x07, 0xfa, 0xef, 0x1e, 0x0c, 0xd5, 0x2f, 0xa2, 0xdc, 0xad, 0xa2, 0xd5, 0x8a, 0xbc, 0xc9, 0xe0, 0x73, 0x8f, 0xf4, 0x85, 0x0f, 0x7d, 0x2d, 0xee, 0x19, 0x82, 0x3f, 0x6e, 0x3e, 0x2c, 0xa9, 0x11, 0xb7, 0x17, 0x4b, 0xe7, 0x0b, 0x15, 0xc1, 0xb8, 0x87, 0xe0, 0xae, 0x15, 0x10, 0x21, 0x22, 0x42, 0x2f, 0xa1, 0x58, 0xb9, 0x8b, 0x0d, 0x38, 0x21, 0x15, 0x24, 0x5f } -, - /* Prime 2 */ - 65, - { 0x05, 0x8a, 0xdd, 0x02, 0x9b, 0xc9, 0x7e, 0xcf, 0xd1, 0xd0, 0xdb, 0x26, 0xbe, 0x45, 0xee, 0x8d, 0x3e, 0x54, 0xbf, 0xe6, 0x36, 0xfc, 0x4d, 0xa6, 0x66, 0xdc, 0xf2, 0x50, 0xab, 0x2c, 0x2e, 0x96, 0x56, 0x62, 0x16, 0xb8, 0xa5, 0x17, 0xf1, 0x0f, 0x75, 0xb9, 0x8f, 0xde, 0x6c, 0xcd, 0x8a, 0x58, 0xe8, 0xfc, 0x58, 0x2e, 0x78, 0x74, 0x90, 0xe1, 0x95, 0x8f, 0x7a, 0x0f, 0xda, 0x82, 0xad, 0x68, 0x3f } -, - /* Prime exponent 1 */ - 65, - { 0x01, 0x80, 0xee, 0xfd, 0xa3, 0xf9, 0x06, 0x9a, 0xfa, 0xf9, 0x37, 0xa6, 0x72, 0xd4, 0xa2, 0xa4, 0x18, 0x17, 0x73, 0x01, 0x47, 0xda, 0xe9, 0xde, 0xbf, 0xc7, 0x24, 0x44, 0x42, 0xa0, 0xcf, 0x2b, 0xae, 0x4f, 0xef, 0x64, 0xc9, 0xda, 0x0b, 0x8a, 0xb3, 0xeb, 0x9d, 0xc7, 0x27, 0x2c, 0xe1, 0x2a, 0x08, 0x5f, 0x90, 0x98, 0x23, 0x55, 0x96, 0xe1, 0x15, 0xc4, 0x2c, 0x9a, 0x49, 0xcc, 0x46, 0x96, 0x29 } -, - /* Prime exponent 2 */ - 65, - { 0x05, 0x12, 0xe1, 0x4e, 0x11, 0x05, 0x7d, 0x84, 0x8c, 0x23, 0xf1, 0x6b, 0x5f, 0x46, 0x2f, 0xa2, 0xb7, 0x8b, 0xe7, 0xfc, 0xbd, 0x1b, 0x6d, 0x8e, 0x46, 0x9e, 0x3f, 0x69, 0x9f, 0xb9, 0x9b, 0x90, 0x5e, 0xd5, 0xfe, 0xcc, 0xdb, 0xbd, 0xb6, 0x1d, 0x1b, 0xfd, 0x5a, 0x7a, 0x19, 0x0a, 0x74, 0x7a, 0xfe, 0x16, 0x7c, 0x37, 0x56, 0x68, 0x07, 0x75, 0xab, 0x6f, 0xa4, 0x23, 0x3d, 0x3a, 0xe1, 0xba, 0x0b } -, - /* Coefficient */ - 64, - { 0x26, 0x2e, 0x28, 0x23, 0x16, 0x98, 0xbe, 0x32, 0x87, 0xa9, 0xc7, 0x06, 0xf3, 0x94, 0x7b, 0x7d, 0x5c, 0x2f, 0x5f, 0xd2, 0xb9, 0x14, 0x46, 0xf5, 0xe9, 0xa3, 0x15, 0x44, 0xd9, 0xaf, 0xf4, 0x55, 0xa3, 0xec, 0xc6, 0xb5, 0x43, 0x14, 0x82, 0x0c, 0x2a, 0x48, 0x82, 0x61, 0xd9, 0xf9, 0x8d, 0x34, 0x8d, 0x9c, 0x3d, 0x10, 0x02, 0xe4, 0xe8, 0x28, 0x7a, 0x15, 0x2c, 0x12, 0x87, 0x09, 0x65, 0x60 } - -} -, -{{ - "PKCS#1 v1.5 Signature Example 11.1", - /* Message to be signed */ - 218, - { 0x84, 0x55, 0x19, 0xdd, 0x45, 0xd2, 0xdd, 0xcb, 0xc8, 0xdb, 0xe0, 0xb8, 0x29, 0x54, 0xc4, 0x58, 0xc3, 0x66, 0x4d, 0x88, 0x27, 0x4e, 0x50, 0x2d, 0x27, 0x91, 0x46, 0xb1, 0x8f, 0x6a, 0x81, 0x67, 0x50, 0xe9, 0x4b, 0x4e, 0xcd, 0xee, 0x68, 0x32, 0xcb, 0x35, 0xdf, 0xcb, 0xdb, 0xdd, 0x3e, 0x5d, 0xc0, 0x64, 0x04, 0xd5, 0xf0, 0xc7, 0x0e, 0x7c, 0x7c, 0xd0, 0xe1, 0x9f, 0x38, 0xbc, 0x5a, 0xe3, 0x2c, 0x7c, 0xd9, 0x1f, 0x94, 0xd8, 0xf5, 0x67, 0x82, 0x39, 0x7b, 0xc7, 0x4e, 0x6b, 0x06, 0x98, 0x27, 0xec, 0x27, 0x30, 0x17, 0x37, 0x40, 0xce, 0x4a, 0x10, 0xe6, 0x48, 0xc7, 0x88, 0x97, 0xaf, 0x1a, 0x89, 0xe8, 0x33, 0x31, 0xd0, 0xf4, 0x61, 0x37, 0x8d, 0x06, 0x05, 0x28, 0x73, 0xf1, 0x7d, 0x9f, 0xfc, 0xe4, 0x6a, 0x32, 0x47, 0x26, 0x07, 0xfe, 0x73, 0xe4, 0xa5, 0x61, 0x87, 0x9e, 0x61, 0x9e, 0x7c, 0x1a, 0xe8, 0x14, 0xe4, 0x5e, 0x1d, 0x2b, 0xdb, 0x12, 0x19, 0x46, 0xb2, 0xae, 0xb8, 0x56, 0x39, 0x16, 0xc5, 0x43, 0xeb, 0xfd, 0xc2, 0xc0, 0x90, 0xfe, 0xb5, 0x56, 0x65, 0x00, 0xa8, 0xce, 0x74, 0xaf, 0xa4, 0x53, 0x72, 0xbd, 0xe0, 0xc6, 0x67, 0x3a, 0x7f, 0x6a, 0xcc, 0xb0, 0xee, 0x9d, 0x57, 0xbd, 0xe9, 0x3c, 0x36, 0xdd, 0xc5, 0x7b, 0x84, 0x90, 0xaa, 0x2d, 0x68, 0x58, 0x5a, 0x3d, 0xb7, 0x29, 0x7a, 0xda, 0x6d, 0x9b, 0x3f, 0x35, 0x6d, 0xbc, 0x74, 0xd3, 0x15, 0xc5, 0xfa, 0x1a, 0xbf, 0x7d, 0xe6, 0xce, 0xbc, 0xa8, 0x3c, 0x9d, 0xf7 } -, - /* Signature */ - 129, - { 0x08, 0x63, 0xa6, 0x26, 0xdc, 0x42, 0xba, 0xf3, 0xe1, 0x61, 0xc3, 0x5b, 0x3d, 0xe3, 0xb1, 0xab, 0xc1, 0xaa, 0x5a, 0xdf, 0x54, 0x16, 0x46, 0x5d, 0x4c, 0x7b, 0x6b, 0x01, 0xae, 0x2d, 0xad, 0x73, 0xf9, 0xf1, 0x58, 0xeb, 0x21, 0x3d, 0xbc, 0x36, 0x0b, 0xe4, 0xd4, 0x7e, 0x57, 0x07, 0x87, 0x1c, 0x39, 0xc3, 0x8d, 0xbb, 0xc9, 0x6b, 0x46, 0xc8, 0xf9, 0xaf, 0xeb, 0xd3, 0xdd, 0xac, 0x87, 0x16, 0x90, 0x98, 0xe1, 0xa7, 0x67, 0x18, 0xd3, 0x54, 0xcd, 0x09, 0x1c, 0xa3, 0x52, 0x96, 0xa7, 0x7c, 0x21, 0xd2, 0x51, 0x2f, 0xfe, 0x65, 0xe3, 0xb7, 0x1b, 0x90, 0x22, 0xe9, 0xcd, 0x1f, 0x7c, 0x35, 0xce, 0x13, 0x65, 0xfd, 0x1f, 0x2c, 0x2c, 0xb9, 0x67, 0xff, 0x4c, 0x8f, 0x90, 0xf0, 0xc8, 0xea, 0xef, 0x0d, 0xb7, 0x3f, 0xed, 0x00, 0xe9, 0x8c, 0xfc, 0x83, 0xf8, 0x0c, 0x67, 0xb3, 0xbe, 0x1d, 0x33 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Signature Example 11.2", - /* Message to be signed */ - 40, - { 0x86, 0x8e, 0x7c, 0x4f, 0xc6, 0x34, 0x0b, 0x6b, 0xbe, 0xb7, 0xb8, 0x6e, 0xa8, 0x9e, 0xe7, 0x26, 0x5f, 0x32, 0x31, 0xf4, 0x8b, 0xaa, 0x92, 0xe4, 0xa2, 0xe8, 0xce, 0x0f, 0xa1, 0xc1, 0xa8, 0xc0, 0xfb, 0x0a, 0xca, 0x94, 0x4c, 0x74, 0xbc, 0xcd } -, - /* Signature */ - 129, - { 0x10, 0xcb, 0xf8, 0x71, 0x7f, 0x76, 0x27, 0x8f, 0xcc, 0x8f, 0xc0, 0xaa, 0xb4, 0x6e, 0x90, 0xa3, 0xd1, 0x80, 0xc3, 0xc9, 0x2a, 0x4a, 0x83, 0xeb, 0x93, 0xc8, 0x92, 0x0a, 0xf8, 0x8b, 0xd6, 0x50, 0x6b, 0x40, 0x73, 0x45, 0x3f, 0x0b, 0xef, 0xf3, 0xe6, 0x1e, 0xdb, 0xb4, 0xdb, 0xc9, 0xc9, 0x47, 0xc6, 0x9d, 0xeb, 0x69, 0xa1, 0xac, 0x92, 0x9e, 0xfc, 0x15, 0x62, 0x5b, 0x9e, 0xd7, 0xcf, 0x1b, 0xc4, 0x23, 0xa8, 0x87, 0x5f, 0x37, 0x80, 0xdd, 0xda, 0x9e, 0xb2, 0xfc, 0xcd, 0x9f, 0xa0, 0x14, 0x62, 0x6a, 0x7f, 0xcf, 0x99, 0x86, 0x49, 0xbc, 0xfa, 0x59, 0x53, 0xa3, 0xc4, 0x3e, 0xfb, 0xcc, 0x38, 0x70, 0x4d, 0x02, 0x49, 0x19, 0xdf, 0x2f, 0xc4, 0xad, 0xea, 0x39, 0xe3, 0x4c, 0xd1, 0x5c, 0xd4, 0xf8, 0x6a, 0xd3, 0xf5, 0x01, 0x01, 0x2f, 0x6b, 0xd2, 0x8a, 0xa5, 0x00, 0x2c, 0x3b, 0x41, 0xba } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.3", - /* Message to be signed */ - 78, - { 0x92, 0xcf, 0x88, 0x0d, 0xa5, 0x89, 0x15, 0xe3, 0xaa, 0x95, 0x08, 0x93, 0x53, 0xe4, 0x61, 0x84, 0xc9, 0x15, 0x94, 0x5c, 0x57, 0x67, 0x9c, 0x1e, 0x4b, 0xd3, 0x82, 0x5e, 0xd9, 0x19, 0xa3, 0x20, 0x52, 0xe9, 0x78, 0x6e, 0x23, 0xb9, 0x42, 0x53, 0x9b, 0x93, 0x15, 0xf5, 0x81, 0xda, 0xf0, 0xb4, 0x1f, 0xa3, 0x26, 0x1b, 0x96, 0x7d, 0xe4, 0x0c, 0xd5, 0xd9, 0x2a, 0x48, 0x24, 0xf3, 0x64, 0xbd, 0x1e, 0x1f, 0x51, 0x84, 0x4b, 0x10, 0x9b, 0x14, 0x54, 0x13, 0x4a, 0xdf, 0x23, 0x4e } -, - /* Signature */ - 129, - { 0x08, 0x82, 0x89, 0x66, 0xac, 0x58, 0x36, 0xc5, 0x13, 0xda, 0x4f, 0xfb, 0x87, 0x61, 0x87, 0x97, 0x94, 0x3c, 0x61, 0x2e, 0xde, 0x7e, 0x12, 0xb3, 0x10, 0x03, 0xef, 0x17, 0x10, 0x65, 0xb4, 0xce, 0xdc, 0x6a, 0x80, 0xb1, 0x45, 0x6c, 0x21, 0xb6, 0x74, 0xb3, 0x77, 0x9a, 0xd3, 0x5f, 0x70, 0x17, 0x7a, 0xa9, 0x2c, 0x6e, 0xac, 0x0b, 0x83, 0x3a, 0x96, 0x7d, 0x7e, 0x98, 0x99, 0x0b, 0x48, 0x24, 0x42, 0x05, 0xdb, 0xf2, 0x6f, 0x5c, 0xd5, 0x7e, 0xf8, 0x7d, 0xc6, 0xfe, 0x5e, 0xd9, 0x99, 0xcf, 0x8c, 0xa7, 0x5d, 0xc8, 0xe6, 0x26, 0xfd, 0x6e, 0xb2, 0x81, 0xc4, 0x99, 0xaf, 0xf7, 0x29, 0x89, 0xed, 0xf5, 0x2e, 0xc6, 0xf3, 0xbc, 0xaf, 0x81, 0xec, 0x5f, 0x8e, 0x82, 0x30, 0xb8, 0x7e, 0xde, 0xdc, 0xf7, 0xb7, 0x78, 0x14, 0x3e, 0xd6, 0xc8, 0xce, 0xbb, 0xac, 0x9d, 0xe5, 0x41, 0x09, 0xdc, 0xf7 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.4", - /* Message to be signed */ - 68, - { 0x87, 0x3c, 0x47, 0x15, 0x90, 0x2f, 0xf1, 0x9d, 0xe0, 0x8b, 0xcc, 0xb0, 0xcf, 0x26, 0x37, 0x63, 0xfa, 0xb0, 0x16, 0xd0, 0x22, 0x0f, 0x03, 0x27, 0xb4, 0x75, 0x5e, 0x35, 0x4e, 0xb2, 0x47, 0xf5, 0xdb, 0xc2, 0xd3, 0x96, 0x98, 0x9b, 0xbd, 0x36, 0xd3, 0x1f, 0x61, 0x98, 0x93, 0x90, 0xca, 0xc1, 0x66, 0x43, 0x12, 0x5e, 0x63, 0xe1, 0xa1, 0xae, 0x1f, 0x1b, 0xc9, 0xbb, 0xed, 0xac, 0xce, 0x67, 0xfc, 0x1b, 0x51, 0xa7 } -, - /* Signature */ - 129, - { 0x05, 0x25, 0x9c, 0x48, 0x15, 0x93, 0xea, 0x86, 0xd1, 0xf0, 0x02, 0xca, 0x58, 0xaa, 0xee, 0x93, 0x29, 0xfa, 0xfe, 0x21, 0x8f, 0x67, 0x50, 0xf0, 0xe5, 0x88, 0xf3, 0x3b, 0x64, 0xe7, 0x08, 0xfb, 0x27, 0xa6, 0xfe, 0x81, 0xeb, 0xca, 0x8a, 0xda, 0xec, 0x75, 0x7a, 0x14, 0xff, 0x55, 0xa0, 0xc8, 0x8a, 0xda, 0x2c, 0x3b, 0x43, 0xe3, 0x9e, 0x8d, 0xfb, 0xe6, 0x76, 0x89, 0x43, 0x65, 0xa2, 0x21, 0x0c, 0x2a, 0xa8, 0x1f, 0x42, 0x4d, 0x85, 0x29, 0xc2, 0x07, 0x6b, 0x00, 0xc9, 0x2d, 0xd8, 0xc8, 0xae, 0x3b, 0x78, 0x0d, 0x87, 0xdb, 0xa7, 0x29, 0xdd, 0xfd, 0xef, 0x7d, 0x40, 0x7f, 0x85, 0x4a, 0x71, 0xcb, 0x68, 0x8b, 0x9f, 0x03, 0xc7, 0x1f, 0x3b, 0xaa, 0x24, 0xa2, 0xa6, 0xe1, 0xcb, 0x41, 0x07, 0x74, 0x30, 0x9e, 0x40, 0xc1, 0x3c, 0x2b, 0x26, 0x47, 0x38, 0xe5, 0x69, 0x7c, 0xfd, 0xde, 0xf3 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.5", - /* Message to be signed */ - 54, - { 0x14, 0xb2, 0x76, 0x02, 0xec, 0xe8, 0xf0, 0x67, 0xb5, 0x84, 0x83, 0xaf, 0x17, 0x77, 0xc4, 0xed, 0x10, 0xb8, 0xb6, 0x4e, 0x64, 0xc6, 0x9f, 0x57, 0xef, 0x88, 0x9a, 0x1c, 0xa5, 0xd5, 0xb5, 0xd6, 0x51, 0xc6, 0x08, 0xdb, 0x23, 0x9d, 0xee, 0xa1, 0x50, 0xff, 0x12, 0xcf, 0x50, 0xc8, 0x67, 0x96, 0x12, 0xf9, 0x7e, 0xcb, 0x09, 0xf7 } -, - /* Signature */ - 129, - { 0x15, 0xc4, 0xb3, 0xf0, 0x81, 0xa2, 0xe5, 0x8a, 0xf5, 0x94, 0xe4, 0x2f, 0xd6, 0xac, 0xcf, 0x1d, 0x0d, 0x61, 0xd9, 0x3a, 0x5e, 0x3a, 0x84, 0xcf, 0x90, 0x4b, 0x98, 0xd9, 0xad, 0x71, 0x33, 0x61, 0xb7, 0x84, 0xb2, 0x4d, 0x92, 0x95, 0xe4, 0x3c, 0x23, 0xbe, 0x93, 0xef, 0x36, 0x51, 0x4a, 0x9b, 0xac, 0x2c, 0x1b, 0xdf, 0x4e, 0xe7, 0x32, 0x34, 0x36, 0x76, 0x3a, 0x20, 0x66, 0x2f, 0x2d, 0xb3, 0x41, 0xd9, 0xe3, 0x8b, 0xed, 0x5f, 0x12, 0xc7, 0xdd, 0x18, 0xbc, 0x3b, 0xb0, 0xfc, 0xba, 0x5c, 0x00, 0x50, 0xbd, 0x1a, 0x2a, 0x44, 0x03, 0x71, 0x97, 0xb8, 0xc9, 0xfc, 0x2a, 0xa5, 0x99, 0xeb, 0x43, 0xc3, 0xd9, 0x67, 0x92, 0x42, 0xc9, 0x9b, 0xbc, 0x49, 0xb0, 0x3b, 0x98, 0xea, 0xca, 0x83, 0x46, 0x28, 0x72, 0x59, 0xe6, 0xea, 0x2e, 0x89, 0x15, 0x5d, 0x0d, 0xd2, 0xb4, 0x77, 0x80, 0x35, 0x75 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.6", - /* Message to be signed */ - 106, - { 0xe5, 0x66, 0xe5, 0xfa, 0x55, 0x6c, 0x76, 0x5b, 0x62, 0xbd, 0x6e, 0x37, 0x45, 0x21, 0xf5, 0x08, 0xfe, 0x44, 0x66, 0x68, 0xc6, 0x47, 0x4b, 0xef, 0x04, 0x6c, 0xc6, 0x89, 0x4a, 0x87, 0x32, 0x2e, 0x19, 0x31, 0xe8, 0x0d, 0x9e, 0xd9, 0xea, 0x80, 0x6b, 0x16, 0x7a, 0x3a, 0xf7, 0x7f, 0xc0, 0x49, 0x38, 0xb5, 0x54, 0x8e, 0xfb, 0xc0, 0x68, 0xd4, 0xf1, 0x96, 0x6a, 0x99, 0x76, 0x25, 0xaf, 0x31, 0xa4, 0x00, 0x7f, 0x06, 0x98, 0xa8, 0x46, 0x9a, 0xb6, 0x81, 0xf4, 0xd5, 0x08, 0xb4, 0xa4, 0x8c, 0x8f, 0xe7, 0x20, 0xcb, 0x5a, 0x94, 0xa7, 0xf4, 0x43, 0xdd, 0x5a, 0x58, 0x03, 0x04, 0x97, 0xda, 0xa9, 0x59, 0xa3, 0xaa, 0xf6, 0xe3, 0x41, 0x84, 0x39, 0x7a } -, - /* Signature */ - 129, - { 0x07, 0xe7, 0xc9, 0x44, 0x26, 0x24, 0xbd, 0x26, 0x6c, 0xc1, 0xcd, 0x1a, 0xf3, 0xb8, 0xf0, 0x62, 0x94, 0xdd, 0xa1, 0xc0, 0x77, 0x67, 0xfe, 0x19, 0xbc, 0xed, 0x6c, 0x9e, 0xd7, 0xc4, 0xb1, 0xed, 0x7f, 0x26, 0xe2, 0x03, 0xdb, 0x7f, 0x3a, 0x1b, 0xfa, 0x57, 0xda, 0xba, 0x6f, 0x3a, 0xa0, 0x60, 0x03, 0xbc, 0xdc, 0x1e, 0x00, 0xc2, 0xd3, 0xd7, 0x6b, 0x9c, 0xbf, 0xf9, 0x68, 0x49, 0xb1, 0xaf, 0xf5, 0x42, 0xd0, 0xd7, 0xaf, 0xc6, 0xe4, 0x22, 0x49, 0x2e, 0xab, 0x0a, 0xb7, 0xf8, 0xe1, 0xd1, 0xae, 0x0b, 0x27, 0x9b, 0x85, 0x19, 0x45, 0xb7, 0x65, 0x85, 0x1b, 0x9f, 0x8a, 0xd8, 0x80, 0xdd, 0x16, 0x4c, 0x11, 0xac, 0x4a, 0x57, 0xf9, 0x6a, 0x0e, 0x48, 0x4b, 0xa1, 0x6a, 0xbf, 0x1c, 0xbe, 0x8a, 0xac, 0x09, 0x0a, 0xdb, 0x6a, 0x71, 0x79, 0x7e, 0x13, 0x35, 0xee, 0xfe, 0x2a, 0xc9, 0x98, 0x0d } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.7", - /* Message to be signed */ - 9, - { 0xb4, 0x43, 0xc3, 0x43, 0x52, 0x7b, 0x30, 0xd5, 0xff } -, - /* Signature */ - 129, - { 0x0b, 0x3f, 0x13, 0xc2, 0x72, 0x24, 0xd1, 0x61, 0x01, 0xb9, 0xc8, 0x20, 0x1f, 0x1b, 0x4f, 0x85, 0x37, 0xdb, 0x3c, 0x11, 0x6f, 0x3c, 0xe1, 0x30, 0xbe, 0x0d, 0xe0, 0xdc, 0x0d, 0xd2, 0x0f, 0x77, 0x3c, 0xdf, 0x7b, 0x7f, 0x37, 0x23, 0x87, 0xc4, 0xb6, 0x53, 0xe5, 0xdd, 0x44, 0x21, 0x84, 0x45, 0x74, 0x11, 0xa8, 0x2f, 0x8e, 0xd0, 0x03, 0x66, 0xec, 0xc0, 0x77, 0xa4, 0x26, 0x7c, 0x9d, 0x7e, 0x56, 0x54, 0x96, 0x63, 0x23, 0x9b, 0x43, 0x19, 0xfe, 0x49, 0x9a, 0xa7, 0x89, 0x54, 0x04, 0x9c, 0x74, 0x3b, 0xbf, 0x09, 0xd7, 0x7b, 0x30, 0x29, 0xd9, 0x18, 0xbb, 0x7b, 0x9a, 0x6a, 0xe8, 0x0b, 0x12, 0x9e, 0x41, 0xbb, 0x56, 0xda, 0xd2, 0xb8, 0xa4, 0xb6, 0xf3, 0x19, 0x33, 0x74, 0xc8, 0x29, 0x2f, 0xe0, 0x17, 0xd0, 0x63, 0x34, 0x7e, 0x91, 0xcb, 0xf4, 0xdd, 0x39, 0x39, 0xc2, 0x37, 0xf8, 0x3c } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.8", - /* Message to be signed */ - 230, - { 0xdb, 0x90, 0x04, 0x7f, 0x61, 0x5a, 0xd7, 0x19, 0x72, 0xba, 0xed, 0x0c, 0x10, 0x62, 0x6e, 0xc8, 0xcb, 0x18, 0xc6, 0xd7, 0x5e, 0xaa, 0xe0, 0x58, 0x21, 0x9f, 0xd6, 0x19, 0x54, 0x26, 0xd4, 0x4d, 0x5c, 0x54, 0x3b, 0xef, 0x3c, 0x4c, 0x14, 0x98, 0xe8, 0x77, 0xd7, 0xc8, 0x53, 0xe5, 0x31, 0x21, 0xeb, 0x31, 0x57, 0x00, 0x81, 0xd5, 0xde, 0x48, 0x85, 0xcb, 0xc9, 0x25, 0xa6, 0xc2, 0x23, 0x21, 0xcc, 0xc9, 0xc3, 0x78, 0x4e, 0xb2, 0x19, 0xe4, 0x2b, 0x7e, 0xdb, 0x92, 0x88, 0x77, 0x60, 0x73, 0x29, 0x79, 0x8d, 0x55, 0x73, 0x9c, 0x89, 0xd6, 0xd6, 0xb3, 0xf0, 0xd4, 0x30, 0xbb, 0xbc, 0x47, 0x22, 0xea, 0xfa, 0x67, 0xde, 0xfc, 0x86, 0xab, 0xa6, 0xe6, 0x34, 0x83, 0xfd, 0x64, 0x99, 0xb0, 0x3f, 0xab, 0xdc, 0x84, 0x65, 0xd9, 0x8b, 0xbb, 0xe4, 0x40, 0x2b, 0x02, 0x31, 0x13, 0x5c, 0x21, 0x24, 0x3d, 0x7e, 0x02, 0xad, 0x5f, 0x7e, 0x9e, 0x8b, 0x94, 0x60, 0xc1, 0x2d, 0xde, 0x2a, 0x39, 0x5b, 0x45, 0x69, 0x61, 0xcc, 0x3d, 0xfd, 0x9a, 0x12, 0xf5, 0xd9, 0x35, 0x9e, 0x0b, 0x3a, 0x6b, 0xd7, 0x7f, 0x44, 0x65, 0x5b, 0x60, 0x3b, 0x02, 0x55, 0xdb, 0xba, 0xff, 0x8b, 0xc8, 0x40, 0x75, 0x9a, 0x34, 0x62, 0xfe, 0xce, 0x0d, 0x8d, 0xb6, 0xe4, 0x5e, 0x2f, 0xe2, 0xbb, 0xf8, 0xb6, 0xe9, 0x7b, 0x3f, 0xea, 0xc0, 0x79, 0x86, 0x73, 0x82, 0x57, 0xab, 0x9f, 0x8c, 0xfa, 0x79, 0x5a, 0x20, 0x19, 0x2b, 0x5e, 0x2c, 0xea, 0x11, 0x8c, 0xa7, 0x62, 0x25, 0x2a, 0xf6, 0xc6, 0xeb, 0x00, 0xec, 0x5c, 0x68, 0x20, 0xbc, 0xc7, 0xc7 } -, - /* Signature */ - 129, - { 0x00, 0xaa, 0xb0, 0x67, 0xd3, 0xa8, 0x63, 0x3d, 0x0b, 0xeb, 0xd5, 0x91, 0xed, 0x34, 0xd0, 0x67, 0xf4, 0x71, 0x8c, 0xd7, 0xf9, 0xb1, 0xe3, 0x5a, 0xaa, 0x40, 0x5d, 0xa1, 0x22, 0x2a, 0xb9, 0x40, 0x38, 0x66, 0x92, 0x1f, 0xbd, 0x05, 0x74, 0x33, 0x40, 0x7a, 0x4a, 0xae, 0x7e, 0x26, 0xc5, 0xcf, 0xa0, 0xbc, 0x9c, 0x11, 0x57, 0x05, 0x7b, 0x1d, 0xa1, 0xcf, 0x36, 0x28, 0x51, 0x87, 0x19, 0xa6, 0x03, 0xf6, 0xc3, 0xc4, 0xde, 0xa3, 0x0b, 0xf4, 0x9d, 0xb9, 0xb0, 0x68, 0xaf, 0xec, 0x69, 0x81, 0x21, 0xdc, 0xe5, 0xd6, 0x0d, 0x93, 0xa6, 0xf5, 0x63, 0x3f, 0xc6, 0xaf, 0x9d, 0xf4, 0xc5, 0xdc, 0xcc, 0x13, 0x8c, 0x29, 0x4e, 0xdd, 0x42, 0x9d, 0x4a, 0xfe, 0x3b, 0x33, 0x78, 0x86, 0x82, 0x55, 0xcc, 0x53, 0x78, 0x8c, 0xf2, 0xb4, 0x77, 0x45, 0xd6, 0x4a, 0xcd, 0x88, 0x5b, 0xb4, 0x7d, 0x2e, 0xec } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.9", - /* Message to be signed */ - 160, - { 0x2b, 0xe0, 0x06, 0x7b, 0x95, 0x18, 0x5b, 0xad, 0xe1, 0x18, 0xdc, 0xe9, 0x5c, 0x57, 0x02, 0x9b, 0x55, 0x4b, 0x25, 0xe1, 0xc3, 0x95, 0x19, 0xf8, 0xf8, 0x90, 0x73, 0xb9, 0xa0, 0x4b, 0x7e, 0x91, 0x29, 0x9c, 0xdb, 0x87, 0xb0, 0xbd, 0x17, 0xc9, 0xf1, 0x51, 0x92, 0x5c, 0x75, 0x6e, 0xb9, 0xb6, 0x45, 0x07, 0x25, 0x61, 0x26, 0x41, 0x07, 0x88, 0x21, 0x38, 0x85, 0x4a, 0xe7, 0xd5, 0x07, 0xe1, 0x5f, 0xcf, 0xe8, 0x47, 0x09, 0x45, 0x40, 0xe7, 0x1a, 0x54, 0x7f, 0x63, 0xb5, 0x90, 0x46, 0x7f, 0xad, 0xff, 0x64, 0x7f, 0x64, 0x3e, 0x1c, 0xec, 0x11, 0x24, 0x65, 0x29, 0x06, 0x2c, 0x9e, 0x40, 0x88, 0x92, 0xf2, 0xa2, 0x0c, 0xcc, 0xc0, 0xae, 0x45, 0xca, 0x97, 0xa4, 0x7f, 0xca, 0xdc, 0x8f, 0xed, 0xe2, 0x1a, 0x24, 0x71, 0x11, 0x67, 0x70, 0x6c, 0xc4, 0xb5, 0xd6, 0x94, 0x77, 0xe5, 0xa8, 0xa1, 0x46, 0xb9, 0x60, 0xcd, 0x4b, 0x17, 0x27, 0x42, 0x7b, 0x16, 0x51, 0x7b, 0x63, 0xeb, 0xfb, 0xcf, 0x84, 0xd0, 0xb1, 0xac, 0x8e, 0x7e, 0x70, 0xf0, 0x44, 0x35, 0x75, 0x22, 0xb1, 0xd0, 0xcb } -, - /* Signature */ - 129, - { 0x09, 0x76, 0x81, 0x12, 0x17, 0x71, 0x45, 0x44, 0x41, 0x01, 0x33, 0x24, 0x3b, 0xeb, 0xa9, 0xa2, 0x1a, 0x6f, 0x72, 0x12, 0xc6, 0x87, 0x91, 0x5c, 0x72, 0x02, 0x7b, 0xba, 0x31, 0x12, 0xf6, 0x97, 0x05, 0x42, 0x5c, 0xb9, 0x94, 0xcb, 0xb6, 0xd3, 0x59, 0xc1, 0x46, 0xb9, 0x5d, 0xb1, 0x44, 0x64, 0x35, 0xd4, 0xcf, 0x96, 0x1d, 0xfd, 0x5c, 0x49, 0x87, 0x39, 0xbf, 0xd4, 0xbe, 0x6e, 0xf1, 0xad, 0xd7, 0x4b, 0x81, 0xb2, 0x89, 0x8a, 0x4c, 0xe4, 0x3d, 0xc3, 0x7c, 0xb0, 0xe9, 0xed, 0x77, 0x44, 0xcf, 0x40, 0x9b, 0xab, 0xff, 0x71, 0x78, 0x85, 0x42, 0xff, 0xd2, 0x86, 0xeb, 0xe5, 0x25, 0x5d, 0x63, 0xdd, 0x7b, 0xd5, 0x5b, 0xa4, 0x3f, 0x51, 0x84, 0xe2, 0x48, 0xd3, 0xa6, 0x69, 0x33, 0xcd, 0xb0, 0x69, 0x91, 0xec, 0xc9, 0x0e, 0xb3, 0x9e, 0xe7, 0x1d, 0x65, 0xc8, 0x8e, 0xd2, 0x4d, 0x94, 0x4c } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.10", - /* Message to be signed */ - 222, - { 0xa7, 0x90, 0xe6, 0xac, 0x5d, 0x55, 0x6f, 0xb7, 0xcf, 0x44, 0x46, 0x0c, 0x7b, 0x9b, 0xe5, 0xeb, 0x7f, 0x24, 0xf9, 0x87, 0xff, 0x89, 0x0d, 0xcb, 0x78, 0x40, 0x24, 0x1d, 0x45, 0x54, 0x5b, 0x71, 0x05, 0x63, 0x5a, 0x1a, 0xaf, 0x44, 0x57, 0xe6, 0x41, 0x0c, 0x65, 0xae, 0xce, 0x50, 0x11, 0xe2, 0x77, 0x5e, 0xc8, 0x53, 0x0a, 0x64, 0xa1, 0x88, 0x39, 0xe9, 0xc5, 0x8a, 0x7b, 0x77, 0x42, 0x4f, 0x74, 0x29, 0x3d, 0xcb, 0x9e, 0x9e, 0xa8, 0x73, 0x6d, 0x6b, 0xa5, 0x8b, 0x1c, 0x66, 0x53, 0xd5, 0x7b, 0xea, 0xab, 0x98, 0x73, 0x5f, 0x7a, 0xf7, 0x32, 0x47, 0x7b, 0x9a, 0xf6, 0xa3, 0x3f, 0xf0, 0x75, 0xc7, 0xe4, 0x66, 0x39, 0xd7, 0x48, 0x55, 0x08, 0x20, 0xba, 0x6a, 0xbd, 0x4a, 0x9d, 0x48, 0xcb, 0x49, 0x03, 0xf6, 0x5b, 0x76, 0xf8, 0x14, 0xc6, 0xcd, 0xc9, 0x5e, 0x8d, 0x9e, 0x87, 0x0c, 0x24, 0x4a, 0x02, 0x9b, 0x29, 0x4a, 0x8a, 0x5c, 0x82, 0x6a, 0xb1, 0x61, 0xf6, 0xf9, 0x78, 0xd9, 0xf1, 0xc0, 0x3f, 0xcd, 0xda, 0xae, 0xfb, 0xfa, 0xdb, 0x8c, 0xaa, 0xe8, 0x4b, 0xc2, 0xdd, 0x33, 0x2e, 0xb0, 0x49, 0x97, 0xd6, 0x1e, 0xfa, 0x91, 0xe9, 0x24, 0x1e, 0x4c, 0xcd, 0x97, 0x64, 0xc7, 0x26, 0xe7, 0x66, 0xed, 0x3b, 0x03, 0x38, 0xd0, 0x86, 0xf1, 0x03, 0x2c, 0x15, 0x33, 0xef, 0x59, 0x3f, 0x88, 0xfd, 0x56, 0x03, 0x37, 0x91, 0xb1, 0xd0, 0x62, 0x5c, 0x6c, 0xa5, 0x1e, 0xec, 0x27, 0x9c, 0xfb, 0x6a, 0xe3, 0xf1, 0x27, 0x00, 0xcf, 0x5b, 0xac, 0x27, 0x1e, 0x65, 0x67 } -, - /* Signature */ - 129, - { 0x0d, 0x1b, 0x11, 0x1c, 0xe8, 0xde, 0x1d, 0x7c, 0x4f, 0x7f, 0xce, 0xac, 0x73, 0xdf, 0x70, 0xaa, 0x6e, 0xda, 0x58, 0xdc, 0x32, 0xeb, 0x98, 0xf7, 0x8e, 0x7f, 0xb9, 0xbc, 0x25, 0xde, 0x3e, 0x6b, 0x09, 0xab, 0x8c, 0xae, 0x3b, 0x20, 0x26, 0xb6, 0x18, 0x7f, 0xf6, 0x36, 0x72, 0xe5, 0x7d, 0xa4, 0xac, 0x28, 0x96, 0x24, 0x45, 0xd1, 0xfe, 0x95, 0x1d, 0x27, 0xbe, 0x6a, 0x6c, 0xe7, 0xa5, 0x80, 0x7e, 0x13, 0x76, 0x13, 0x94, 0x46, 0xe8, 0x54, 0x9d, 0x48, 0xaa, 0x59, 0xfc, 0x22, 0x33, 0x54, 0xd1, 0x21, 0xfd, 0xcc, 0x38, 0xf1, 0xd0, 0x27, 0x5e, 0x41, 0x86, 0x92, 0x27, 0x00, 0xad, 0xc6, 0x1d, 0xae, 0x1e, 0x4b, 0xe8, 0x05, 0x22, 0x2a, 0x1c, 0xf0, 0x7f, 0x11, 0x0a, 0x61, 0x58, 0xa2, 0xa2, 0x62, 0x58, 0xf1, 0x9c, 0x65, 0x7a, 0x11, 0x0c, 0x0d, 0x9a, 0xd2, 0x91, 0x68, 0x0c, 0x75, 0x96 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.11", - /* Message to be signed */ - 256, - { 0x32, 0xaf, 0xd1, 0x3e, 0x60, 0x7d, 0x87, 0xb2, 0x5f, 0xf4, 0x0a, 0x88, 0x5b, 0x25, 0x09, 0xf5, 0x21, 0xf2, 0xa0, 0xa7, 0x72, 0xa9, 0x6a, 0x39, 0xfb, 0x3f, 0x71, 0xc9, 0x63, 0x84, 0xb3, 0xd7, 0x57, 0x8f, 0x48, 0xfc, 0xea, 0x97, 0x39, 0x56, 0x0a, 0x65, 0xbf, 0xb4, 0x83, 0xd9, 0x60, 0x8d, 0x20, 0x25, 0x55, 0xf6, 0x6d, 0x61, 0x2d, 0x16, 0xb9, 0x25, 0x53, 0x87, 0xb4, 0xe1, 0x12, 0x41, 0x15, 0xed, 0x48, 0xbf, 0xef, 0x8b, 0x89, 0xd8, 0xdd, 0xfc, 0x21, 0x9c, 0xcc, 0xe4, 0x87, 0x86, 0xc9, 0xe6, 0x42, 0x6a, 0x92, 0x12, 0xe7, 0xb1, 0x6d, 0x97, 0x1d, 0x27, 0x8a, 0x11, 0x18, 0xf2, 0xf8, 0x6b, 0x9c, 0x4b, 0xbf, 0x75, 0xc9, 0xc2, 0xd0, 0x99, 0xe3, 0xf6, 0x65, 0x48, 0xf1, 0xf4, 0xa8, 0xa8, 0x21, 0xd7, 0x27, 0x44, 0x98, 0xf7, 0xcc, 0xe6, 0xec, 0x5e, 0x2b, 0xf2, 0xbf, 0xad, 0x2c, 0x6f, 0xc0, 0x05, 0xe8, 0x0a, 0x48, 0xca, 0xe4, 0x69, 0x92, 0xfc, 0x82, 0x67, 0xa6, 0x48, 0x0a, 0xcb, 0x89, 0x4c, 0xcc, 0x9b, 0x62, 0x09, 0x5c, 0xad, 0x97, 0xdb, 0x70, 0xd8, 0x82, 0xa1, 0x3f, 0xb3, 0x85, 0x88, 0xc4, 0x8c, 0xa1, 0x90, 0xf1, 0x80, 0xcb, 0x3e, 0x61, 0xac, 0xb4, 0xe2, 0xcf, 0xd9, 0xcd, 0xbf, 0x85, 0x5c, 0x53, 0x99, 0x21, 0xf6, 0x8e, 0x11, 0x49, 0xd0, 0x54, 0x7e, 0xf5, 0x9a, 0xf5, 0x37, 0x92, 0xdc, 0x66, 0x0d, 0xa5, 0xef, 0x48, 0xa7, 0xab, 0x89, 0x36, 0xd3, 0xd3, 0x6e, 0xd6, 0xb6, 0x46, 0x9e, 0xb6, 0xfd, 0x95, 0xe3, 0xaf, 0x18, 0x2c, 0x87, 0x68, 0xfa, 0x60, 0x04, 0x78, 0x54, 0xf1, 0x8f, 0x37, 0x41, 0xc1, 0x88, 0x3b, 0xb0, 0x79, 0x26, 0x88, 0xca, 0xdb, 0x9e, 0x4d, 0xf3, 0x91, 0xd9, 0x11, 0x45, 0xb8, 0x5e, 0x2a, 0xe2, 0x4f, 0xfd, 0xfe, 0x51 } -, - /* Signature */ - 129, - { 0x01, 0xa9, 0x37, 0xb3, 0xcc, 0x82, 0x54, 0xd5, 0x15, 0x08, 0x70, 0x9e, 0x4a, 0x4d, 0xe7, 0xb1, 0x81, 0xde, 0xd9, 0xa4, 0x47, 0xb3, 0xec, 0x8d, 0xad, 0x49, 0x2c, 0x39, 0x79, 0x52, 0xdf, 0x7c, 0x55, 0x0e, 0x4b, 0x26, 0xc9, 0x50, 0x17, 0x29, 0x9d, 0x8d, 0x45, 0x5f, 0xf7, 0x97, 0x1c, 0x33, 0x8c, 0xd0, 0x14, 0xdf, 0x78, 0xe2, 0xa8, 0xaa, 0x5e, 0xbe, 0xe2, 0x58, 0xf4, 0x92, 0x53, 0xd5, 0x1a, 0xce, 0x9a, 0x49, 0x31, 0x9f, 0xfc, 0x80, 0x7a, 0xd7, 0x0b, 0x2d, 0xf2, 0xc9, 0x6d, 0xcd, 0xb7, 0x3b, 0x48, 0xac, 0xbc, 0x4f, 0x6c, 0x3c, 0x2a, 0x70, 0x1e, 0x7c, 0x15, 0x4b, 0x27, 0x9b, 0x07, 0x05, 0xbd, 0xf2, 0x54, 0x8c, 0x8b, 0x36, 0x11, 0xb9, 0x7d, 0xa1, 0xac, 0x09, 0xcd, 0x12, 0x12, 0x50, 0x99, 0x54, 0x0b, 0xf7, 0xba, 0x99, 0xb0, 0x8c, 0x2f, 0x3d, 0x5f, 0x6a, 0xea, 0x7d, 0x40 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.12", - /* Message to be signed */ - 162, - { 0x5b, 0x00, 0xb8, 0xb7, 0x94, 0xa1, 0x0d, 0x21, 0xf1, 0xb4, 0x5e, 0xca, 0xa2, 0x0d, 0xf7, 0xc5, 0xb3, 0x52, 0x2c, 0x1b, 0x1d, 0xb4, 0xb0, 0x84, 0xb9, 0x59, 0xaa, 0x4e, 0x56, 0x58, 0xac, 0x54, 0x68, 0xf6, 0xe8, 0xfb, 0x61, 0x2f, 0xf9, 0x9f, 0x32, 0x16, 0xb5, 0xd2, 0x1c, 0xb4, 0xac, 0xc0, 0xbb, 0x42, 0xee, 0xfd, 0xb8, 0xe8, 0x2d, 0x75, 0x4b, 0x85, 0xd0, 0x97, 0x45, 0x89, 0x4a, 0x52, 0x3c, 0x01, 0x62, 0xd0, 0x8e, 0xcc, 0xe4, 0x8b, 0x99, 0xdd, 0x6c, 0x38, 0xe2, 0xbd, 0x3d, 0x53, 0x1c, 0x85, 0x62, 0xde, 0xec, 0xfc, 0x61, 0x52, 0x36, 0x9a, 0xac, 0xf5, 0x80, 0xea, 0xf9, 0xdb, 0x6c, 0x68, 0xb6, 0x9d, 0xf2, 0xfb, 0xf3, 0x05, 0x3f, 0x60, 0x1f, 0x70, 0x02, 0x2c, 0x9e, 0x38, 0x1d, 0xfb, 0xc5, 0x90, 0x99, 0xc3, 0x7b, 0xde, 0x5a, 0xd8, 0x9a, 0x8c, 0xc1, 0xef, 0xe4, 0xc7, 0xb7, 0xd7, 0x8e, 0x90, 0x97, 0xe0, 0x81, 0x21, 0xed, 0xa6, 0x4a, 0xc4, 0x5c, 0x32, 0x7e, 0x5e, 0xda, 0xf9, 0x22, 0xd3, 0xc3, 0x5f, 0x88, 0xb5, 0x2c, 0x93, 0xd3, 0x99, 0xf4, 0xc2, 0x38, 0x36, 0x2f, 0xe9 } -, - /* Signature */ - 129, - { 0x0f, 0xc6, 0xac, 0x1d, 0x42, 0x94, 0x79, 0x38, 0xcd, 0x25, 0x86, 0xd0, 0xe7, 0xfc, 0x3a, 0x05, 0x42, 0xb9, 0xaf, 0x12, 0xd3, 0x6e, 0xeb, 0xf9, 0x2b, 0x5d, 0x04, 0x9c, 0x79, 0x65, 0xb1, 0x1b, 0xa9, 0xcc, 0xbf, 0x47, 0x00, 0xf3, 0x45, 0x60, 0x91, 0x11, 0x77, 0xb9, 0xd1, 0x29, 0x6f, 0x1c, 0x68, 0xe3, 0xaf, 0x46, 0x9f, 0x4f, 0x39, 0x9d, 0xbc, 0x18, 0x9c, 0x23, 0xea, 0x74, 0x65, 0x98, 0x28, 0x13, 0x32, 0x33, 0x05, 0xed, 0x6c, 0x35, 0xff, 0x9c, 0xc1, 0x09, 0xd0, 0xa2, 0x30, 0x3f, 0xe7, 0xd3, 0x29, 0xca, 0x31, 0x7e, 0xc4, 0xb1, 0x8e, 0xdd, 0x19, 0xc6, 0x2c, 0x60, 0xa3, 0xc8, 0xc3, 0x10, 0x6f, 0x86, 0xdb, 0xd0, 0x72, 0xe3, 0xe1, 0xeb, 0x87, 0x85, 0x28, 0x8c, 0x21, 0xab, 0xca, 0xc2, 0x2e, 0x0c, 0x0d, 0x41, 0xf4, 0xe2, 0x3e, 0x7f, 0x39, 0x4d, 0x46, 0x82, 0xf6, 0xce, 0x87 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.13", - /* Message to be signed */ - 26, - { 0xb7, 0x50, 0xae, 0x6d, 0x4d, 0x2c, 0xeb, 0x92, 0x14, 0x05, 0x34, 0x64, 0x8d, 0x36, 0xef, 0x25, 0xe4, 0x51, 0x55, 0xf5, 0x2b, 0xde, 0x1b, 0xf2, 0x6a, 0xb7 } -, - /* Signature */ - 129, - { 0x16, 0xaa, 0xde, 0xdc, 0xa0, 0x9e, 0x06, 0x25, 0x60, 0xc6, 0x61, 0xd2, 0xa4, 0x9b, 0x0e, 0xe4, 0xd9, 0xce, 0x23, 0x90, 0x7c, 0x69, 0xd1, 0x00, 0x04, 0xf1, 0x49, 0xd1, 0x03, 0xc5, 0x9c, 0x16, 0xfe, 0x7d, 0x43, 0x73, 0x59, 0x7d, 0xb9, 0xff, 0xd8, 0x92, 0x3a, 0x77, 0xa6, 0xb9, 0x43, 0xb1, 0x88, 0xc4, 0x74, 0x25, 0xe2, 0xa9, 0xe5, 0x30, 0x41, 0x3e, 0xfd, 0xb6, 0x84, 0x8d, 0xd3, 0x42, 0x0b, 0xa5, 0x3e, 0xf8, 0x1c, 0x25, 0xc5, 0x78, 0xf8, 0xd9, 0x51, 0x4d, 0x93, 0xfc, 0xc9, 0xcb, 0x1f, 0xb5, 0x2f, 0x58, 0xd8, 0x8a, 0x57, 0xd1, 0xfd, 0x3f, 0xe2, 0x2d, 0xa3, 0x10, 0xec, 0xea, 0x9e, 0xce, 0x55, 0xe9, 0x60, 0x8d, 0x63, 0xae, 0x21, 0xdb, 0xae, 0xa6, 0x57, 0x1b, 0x78, 0xfc, 0xfd, 0xd2, 0x71, 0xbb, 0x65, 0x92, 0x57, 0x47, 0x6b, 0x59, 0x95, 0x68, 0x7a, 0x02, 0xbb, 0xe7, 0x89 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.14", - /* Message to be signed */ - 183, - { 0x47, 0xbe, 0x01, 0x02, 0x0e, 0xb7, 0xe7, 0x87, 0x5b, 0xd4, 0xfc, 0xc0, 0x05, 0xa8, 0x2b, 0x36, 0xfd, 0xf2, 0x14, 0x5e, 0xf1, 0x32, 0xe2, 0xed, 0x16, 0x2f, 0xf6, 0x94, 0xbc, 0x71, 0x58, 0x9c, 0x7d, 0xc6, 0xd5, 0xa3, 0xf8, 0x9d, 0x59, 0x7f, 0x2d, 0x2a, 0xa3, 0x43, 0x33, 0x51, 0x18, 0xf6, 0xfd, 0xbd, 0xee, 0xf2, 0x3e, 0x61, 0x3c, 0xba, 0xcc, 0xde, 0x41, 0x95, 0xe6, 0x64, 0xa0, 0x09, 0x4b, 0x07, 0xfc, 0x0a, 0x32, 0x84, 0x8d, 0x61, 0x39, 0x03, 0x1c, 0xf5, 0x72, 0xa1, 0xe3, 0x23, 0xc5, 0xa7, 0x07, 0xb6, 0xfa, 0x2a, 0xee, 0xf2, 0xdc, 0x87, 0x2d, 0xd5, 0xa3, 0xe7, 0x6b, 0x13, 0xf8, 0xef, 0x94, 0xad, 0xeb, 0xd4, 0xe2, 0x05, 0x74, 0x8e, 0x48, 0x5b, 0x40, 0x01, 0xd5, 0xd2, 0xa0, 0x90, 0xb8, 0x9b, 0x2e, 0x64, 0x74, 0xc4, 0x79, 0xe7, 0xb0, 0x0d, 0x2d, 0x57, 0xf5, 0x86, 0xab, 0x76, 0xb8, 0x0f, 0x79, 0x5b, 0xa8, 0x99, 0x62, 0x88, 0x29, 0x2c, 0x3f, 0x2c, 0xa5, 0x1a, 0x44, 0xe4, 0xe8, 0x41, 0xc0, 0x37, 0x07, 0xe4, 0x80, 0x25, 0xaf, 0x4b, 0xfd, 0x0a, 0xb6, 0xef, 0xeb, 0x83, 0x62, 0xed, 0xd5, 0xd2, 0x34, 0x05, 0xba, 0x0e, 0x23, 0x1b, 0x33, 0x24, 0xe1, 0xca, 0x3c, 0x5d, 0x63, 0x9d, 0x2c, 0x9d, 0x82 } -, - /* Signature */ - 129, - { 0x06, 0x39, 0x17, 0x92, 0x9b, 0xbb, 0x20, 0x92, 0x17, 0xff, 0x48, 0xed, 0x4f, 0x55, 0xd0, 0x7a, 0x03, 0xf7, 0x6d, 0x6d, 0x94, 0x04, 0x8b, 0x6f, 0x71, 0x31, 0x0b, 0x2c, 0x96, 0xe2, 0x14, 0xab, 0x22, 0x0d, 0x4e, 0x45, 0xac, 0x01, 0xc9, 0x3d, 0xcc, 0x8a, 0x5c, 0x26, 0xa0, 0x2d, 0xf6, 0x1f, 0xfd, 0xb3, 0x17, 0x54, 0x96, 0x65, 0x61, 0x0c, 0x84, 0xbd, 0xb8, 0x94, 0x5f, 0xc6, 0xbb, 0xd3, 0x8b, 0xae, 0xd7, 0xfe, 0xe9, 0x8e, 0xb0, 0x56, 0xd9, 0xf0, 0x39, 0xa8, 0x60, 0xd4, 0x52, 0xb3, 0xac, 0xac, 0x18, 0x00, 0xa9, 0x32, 0xa2, 0x8c, 0x88, 0x28, 0x6a, 0xbd, 0xa8, 0xde, 0x3c, 0xb6, 0xc0, 0xd7, 0x94, 0xda, 0xab, 0x7a, 0x8b, 0xa0, 0x11, 0x09, 0x33, 0xb4, 0xd1, 0xde, 0xd2, 0x39, 0xcb, 0xdd, 0x55, 0x7d, 0x3e, 0x5a, 0x16, 0x29, 0x17, 0x85, 0x33, 0x15, 0xde, 0x68, 0x09, 0x00, 0xa8 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.15", - /* Message to be signed */ - 238, - { 0x4b, 0x9c, 0x09, 0x64, 0x48, 0x10, 0xd4, 0xb3, 0x06, 0x55, 0xed, 0x83, 0x38, 0xbb, 0x27, 0x6b, 0x62, 0x4c, 0x68, 0x01, 0x98, 0x22, 0xd1, 0xfc, 0x8f, 0x78, 0x86, 0x1e, 0x13, 0xe2, 0x2a, 0xc1, 0x71, 0x82, 0x1c, 0xfd, 0xbd, 0x3f, 0x8f, 0x5b, 0x8d, 0xc9, 0xc0, 0xde, 0x73, 0x2b, 0x74, 0x6e, 0x1d, 0x13, 0x2e, 0x5f, 0x3f, 0x14, 0x9a, 0x5a, 0x86, 0x7c, 0x2e, 0xe4, 0x78, 0xe8, 0xf1, 0x4a, 0xd4, 0xb9, 0xdd, 0xeb, 0xd3, 0xae, 0x78, 0x17, 0xe8, 0x49, 0x55, 0xb3, 0x40, 0x4b, 0x09, 0x43, 0x93, 0xe6, 0x1c, 0xa0, 0x18, 0x9d, 0x05, 0x53, 0x69, 0xb4, 0x24, 0x30, 0x09, 0xa0, 0xf5, 0x40, 0x3f, 0x41, 0xc1, 0x00, 0x23, 0x08, 0xc0, 0x0c, 0xe6, 0x99, 0x67, 0x19, 0x37, 0xba, 0xf1, 0x3c, 0x78, 0x93, 0xd6, 0x63, 0xc9, 0x47, 0xfc, 0x7f, 0x84, 0x07, 0x1a, 0x67, 0x2e, 0x5e, 0x07, 0x37, 0x8a, 0xac, 0x08, 0xb3, 0xfa, 0xf0, 0xfc, 0xcf, 0x5b, 0xf2, 0x83, 0x09, 0x25, 0x85, 0xeb, 0xe2, 0x40, 0xa3, 0x00, 0x46, 0x20, 0xb6, 0xf3, 0xae, 0xb6, 0x73, 0x2b, 0x7b, 0x9d, 0x8d, 0x3b, 0xea, 0xfc, 0x84, 0x67, 0xd1, 0xf1, 0xf1, 0xc7, 0xda, 0x66, 0xb1, 0xbf, 0x5c, 0xcc, 0x14, 0x5b, 0x32, 0x24, 0x24, 0x5f, 0xae, 0x31, 0xdf, 0xb4, 0x03, 0xf4, 0x93, 0xc0, 0x75, 0x53, 0x57, 0xad, 0xd7, 0xcb, 0x27, 0x63, 0x71, 0x32, 0x26, 0xc5, 0x4f, 0x43, 0x64, 0x0f, 0x7a, 0x67, 0x0e, 0xb7, 0xb1, 0xf6, 0xe9, 0xe7, 0x72, 0xf2, 0xe5, 0x14, 0x17, 0xa7, 0x05, 0xcf, 0xc5, 0x87, 0x3f, 0xfb, 0x88, 0xa5, 0xdb, 0x07, 0xec, 0xc4, 0xee, 0x89, 0xf3, 0x30, 0xa6, 0x69, 0x0a, 0x88, 0x12 } -, - /* Signature */ - 129, - { 0x1a, 0x0b, 0x69, 0x8c, 0xf3, 0xa0, 0x58, 0xb4, 0x49, 0x19, 0xaf, 0x73, 0xc3, 0xde, 0x32, 0x8e, 0x86, 0xce, 0x9a, 0x5d, 0x49, 0x99, 0xe0, 0x12, 0x2f, 0x41, 0x4b, 0x94, 0xf3, 0x2b, 0x2d, 0x8a, 0xb1, 0xe6, 0x55, 0x0c, 0xc0, 0xd4, 0x8d, 0xc0, 0x4b, 0xef, 0xac, 0x2c, 0x67, 0xa4, 0xd0, 0x69, 0xa7, 0x20, 0x8f, 0x14, 0x2d, 0xc2, 0x67, 0xb3, 0xe3, 0x8f, 0x63, 0x38, 0xa0, 0xb1, 0x83, 0x9a, 0x93, 0xa8, 0x36, 0x80, 0x7d, 0x18, 0x1e, 0x3f, 0x0c, 0x7e, 0x87, 0x7f, 0xb2, 0x42, 0x16, 0x02, 0x00, 0x5b, 0xca, 0x25, 0xa9, 0xc3, 0x72, 0x26, 0x6d, 0x18, 0xe6, 0xd5, 0x00, 0xc5, 0xc7, 0xab, 0x13, 0x38, 0x52, 0x83, 0xd2, 0xaf, 0x91, 0x9d, 0x0b, 0xba, 0x0d, 0xcb, 0x88, 0xbf, 0x7b, 0xb9, 0x97, 0x2d, 0x67, 0x00, 0x8f, 0xf4, 0x98, 0x54, 0x7d, 0x80, 0xfc, 0xa6, 0x58, 0xef, 0xe7, 0x64, 0xa5 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.16", - /* Message to be signed */ - 216, - { 0xec, 0x9f, 0xf1, 0x4b, 0x9f, 0x19, 0x7a, 0x2b, 0x4f, 0x24, 0x94, 0x8c, 0x29, 0xd2, 0xf6, 0x4a, 0x64, 0x62, 0x52, 0x23, 0xdd, 0xb8, 0x53, 0x46, 0x37, 0x8c, 0x2c, 0x25, 0x34, 0x3f, 0xcb, 0xef, 0x58, 0x5a, 0x99, 0xe1, 0xec, 0x0b, 0xef, 0x0e, 0xf9, 0xd0, 0x9e, 0xad, 0x85, 0xbe, 0xe1, 0xc4, 0xbf, 0xb3, 0x5e, 0x48, 0xfb, 0x26, 0x41, 0x1b, 0xdf, 0x18, 0x0d, 0xc5, 0xcf, 0x31, 0x7b, 0x3a, 0x34, 0x83, 0x71, 0xc7, 0xc5, 0xf4, 0xaa, 0x6d, 0x59, 0x08, 0xfc, 0xfc, 0x1e, 0xa3, 0x90, 0x18, 0xcf, 0x04, 0x49, 0xe5, 0x5f, 0x4e, 0xf9, 0x94, 0xbf, 0xda, 0x40, 0x4f, 0x1c, 0x18, 0x9f, 0xdb, 0x8a, 0x0a, 0x5b, 0x09, 0x06, 0xc3, 0xd4, 0x0d, 0xe1, 0xe7, 0x87, 0xc2, 0xdb, 0x4d, 0x88, 0xdb, 0xc2, 0x10, 0xb9, 0xf8, 0x01, 0xf4, 0xcd, 0x9c, 0x97, 0x22, 0x7e, 0x9b, 0x2f, 0xbc, 0x28, 0x11, 0xe3, 0x8c, 0xed, 0xd9, 0xe9, 0xf0, 0x35, 0x60, 0x03, 0x1d, 0x4c, 0x95, 0x8a, 0x76, 0x81, 0xba, 0x9d, 0x7e, 0xa5, 0xe7, 0x8e, 0x9b, 0xd8, 0xbd, 0xed, 0xdb, 0x41, 0x56, 0x79, 0x0e, 0xf2, 0x1f, 0xb7, 0x4f, 0xbc, 0x41, 0x58, 0xc2, 0x93, 0x9e, 0x4e, 0xfc, 0xb8, 0x2e, 0xfd, 0xc8, 0x81, 0x88, 0x6a, 0x5b, 0x67, 0x13, 0xa2, 0x4b, 0x9b, 0x5f, 0x2e, 0xe2, 0x5c, 0xcf, 0x72, 0x1a, 0x64, 0xe0, 0xf6, 0x40, 0x77, 0x8e, 0xcb, 0x3d, 0x35, 0xb4, 0xb8, 0xee, 0xa8, 0xec, 0xe3, 0x12, 0x32, 0x63, 0x63, 0x10, 0xae, 0x3c, 0xc6, 0xb8, 0x2b, 0x8a } -, - /* Signature */ - 129, - { 0x01, 0x3b, 0x42, 0x05, 0x78, 0x20, 0xc7, 0x3e, 0x3a, 0xcf, 0xc1, 0xdf, 0x4d, 0xe1, 0x44, 0x0c, 0x65, 0x8e, 0x01, 0x80, 0x43, 0x6d, 0xa7, 0x18, 0x5a, 0x9f, 0xab, 0xd2, 0x6e, 0xb3, 0x26, 0x74, 0xb5, 0x54, 0xde, 0x35, 0x4d, 0x1f, 0x4f, 0x24, 0xe8, 0x77, 0x73, 0x26, 0x7f, 0xed, 0x9d, 0xd0, 0xfd, 0x82, 0x93, 0xea, 0xca, 0x4a, 0xf3, 0xd3, 0xa9, 0xdc, 0x51, 0x8c, 0x8e, 0x49, 0x5a, 0x14, 0x76, 0x95, 0x11, 0x1d, 0x3d, 0xc1, 0x77, 0x63, 0xf1, 0xf0, 0x2e, 0xec, 0x1e, 0xe2, 0x9f, 0xb1, 0xab, 0x74, 0x9c, 0xf3, 0x0c, 0x78, 0x86, 0xda, 0x8b, 0x2f, 0x64, 0x69, 0x69, 0x59, 0x8a, 0xa7, 0x0f, 0x9a, 0x92, 0xfa, 0x4f, 0x93, 0x5c, 0x7c, 0xc7, 0x7b, 0xfa, 0xb6, 0x98, 0x1f, 0x0d, 0xf0, 0xd2, 0x85, 0xcf, 0xb1, 0x0d, 0x66, 0x58, 0x15, 0x39, 0xf7, 0x8d, 0x03, 0x68, 0xed, 0x4f, 0x93, 0x01 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.17", - /* Message to be signed */ - 209, - { 0x41, 0x4c, 0xea, 0x8e, 0xec, 0x6d, 0xa3, 0xc6, 0x6f, 0xfc, 0x84, 0x70, 0xf7, 0xe1, 0x47, 0x60, 0xf7, 0x4b, 0xf6, 0xe7, 0x5b, 0x84, 0xdc, 0x98, 0xfc, 0x80, 0x60, 0xdd, 0x3c, 0x21, 0x9e, 0x76, 0x77, 0x7d, 0xfa, 0xba, 0xa6, 0xe6, 0xb9, 0x29, 0x55, 0x37, 0x9f, 0x3e, 0xca, 0xaf, 0x5f, 0xcb, 0x8a, 0xa5, 0x54, 0x9e, 0xc9, 0xcd, 0xd1, 0xf5, 0xd5, 0x77, 0x20, 0x1b, 0x8e, 0x32, 0x9f, 0x72, 0xfa, 0xa2, 0xbc, 0xad, 0xea, 0xee, 0x38, 0x8d, 0xaf, 0x7d, 0x40, 0x8a, 0xfd, 0xe6, 0x55, 0x3d, 0x24, 0x17, 0x86, 0x0f, 0x3c, 0x8e, 0x25, 0x30, 0x5d, 0xff, 0x76, 0xdb, 0xbd, 0x95, 0x16, 0xb6, 0x86, 0x8e, 0xe4, 0x56, 0xfc, 0x1f, 0x7b, 0x58, 0xd9, 0xed, 0x18, 0xa4, 0x6e, 0x4f, 0xc1, 0xe3, 0x53, 0xe8, 0xd0, 0x76, 0xbe, 0xa3, 0x0b, 0xf2, 0x47, 0xc6, 0x0e, 0x6f, 0x68, 0x58, 0x01, 0xa6, 0xd3, 0xf6, 0x30, 0xae, 0xa6, 0xab, 0xb4, 0x12, 0xa9, 0x41, 0xff, 0xa6, 0xf6, 0x07, 0xf6, 0xbf, 0xb1, 0x3d, 0x90, 0x01, 0x27, 0xbb, 0xec, 0xee, 0x4f, 0x98, 0xa7, 0xac, 0xa6, 0x92, 0x08, 0x11, 0x57, 0x50, 0x53, 0xab, 0x2d, 0x42, 0x70, 0x13, 0x80, 0x1d, 0x8c, 0xfb, 0xc3, 0x88, 0x0f, 0x14, 0x75, 0x43, 0x15, 0x55, 0xa0, 0x86, 0xfa, 0x55, 0x60, 0xc6, 0xe2, 0x20, 0x6d, 0x9e, 0xe9, 0x38, 0x13, 0x44, 0xb8, 0x24, 0x1c, 0x1d, 0xd1, 0xd8, 0x64, 0x48, 0x75, 0x3a, 0xf4, 0x4b, 0x00, 0xa0, 0xc9 } -, - /* Signature */ - 129, - { 0x16, 0x97, 0xbb, 0x23, 0xe2, 0x91, 0x52, 0x5f, 0x4a, 0x0e, 0x79, 0x26, 0x2f, 0x34, 0x06, 0x63, 0x0d, 0x0d, 0x6d, 0xf3, 0x32, 0x49, 0x69, 0x26, 0xc4, 0xe5, 0xae, 0xf9, 0x6e, 0x41, 0xd9, 0x55, 0x14, 0x86, 0x47, 0xea, 0xf7, 0x90, 0x69, 0x6a, 0xf6, 0x8c, 0x78, 0xeb, 0x2a, 0xb6, 0x2f, 0xf7, 0x19, 0x62, 0x96, 0xe1, 0xea, 0x88, 0x6d, 0xf0, 0x91, 0x73, 0x66, 0x09, 0x0b, 0x63, 0x0a, 0xa3, 0x18, 0x58, 0xb5, 0x16, 0x15, 0x87, 0x3f, 0xa6, 0xbc, 0x8f, 0xf0, 0x88, 0x5c, 0x57, 0xb2, 0xe7, 0x7a, 0x04, 0x90, 0x88, 0x93, 0xcc, 0xef, 0xb1, 0x41, 0x24, 0x03, 0x99, 0x1d, 0x0d, 0x23, 0xc5, 0x57, 0xd2, 0x22, 0x29, 0x1c, 0xb8, 0x51, 0x7b, 0x43, 0x28, 0x6e, 0xe0, 0x05, 0x67, 0x58, 0xd9, 0xc1, 0x0b, 0xcd, 0x69, 0xbd, 0x68, 0xb8, 0x4a, 0x2d, 0x1f, 0x53, 0x79, 0x05, 0xb8, 0xa4, 0x65, 0xe9 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.18", - /* Message to be signed */ - 169, - { 0x17, 0x89, 0xb8, 0x08, 0xb1, 0x0d, 0xe8, 0xd1, 0x77, 0x8a, 0xa4, 0x3f, 0x94, 0x10, 0x1c, 0xb8, 0x9f, 0x56, 0x34, 0x30, 0x61, 0xa1, 0xa9, 0x43, 0xbb, 0x8d, 0xa5, 0x5e, 0xe6, 0xb9, 0x79, 0xe2, 0x7a, 0xfe, 0xab, 0x0e, 0xd8, 0xee, 0x37, 0x14, 0xfb, 0xe7, 0x0b, 0x3b, 0xe8, 0x20, 0x60, 0x3e, 0x5c, 0xea, 0xde, 0xc4, 0xb2, 0x2f, 0x95, 0x87, 0x73, 0x22, 0x5d, 0xf3, 0xaa, 0xd4, 0x87, 0xb2, 0x80, 0x57, 0xeb, 0xfe, 0xbe, 0x2c, 0x87, 0x93, 0xda, 0x38, 0x46, 0xbd, 0xb1, 0x59, 0x03, 0xac, 0x71, 0xe9, 0xc9, 0x3b, 0x20, 0x16, 0x66, 0x8b, 0xd9, 0x06, 0x30, 0x1a, 0x0a, 0x7d, 0x50, 0xdc, 0x60, 0xb2, 0xfa, 0xd8, 0x75, 0x9d, 0x18, 0xdb, 0x14, 0x7f, 0x20, 0x66, 0x86, 0x5f, 0xd9, 0x09, 0x50, 0xa1, 0x88, 0x74, 0x7d, 0x9b, 0x69, 0x68, 0x53, 0x48, 0x6d, 0xea, 0xab, 0x8e, 0x44, 0x3f, 0xad, 0x29, 0x92, 0xfc, 0x8a, 0x56, 0x5b, 0xdc, 0xba, 0xda, 0xb0, 0xb9, 0x33, 0x3a, 0xb7, 0xfc, 0xdb, 0x9c, 0x3d, 0x0b, 0xcf, 0xde, 0x50, 0xa5, 0x8d, 0x2a, 0xea, 0xf1, 0xce, 0xfb, 0x0c, 0x95, 0xf9, 0x07, 0x73, 0xb2, 0xfa, 0xc1, 0x37, 0xcd, 0xbc } -, - /* Signature */ - 129, - { 0x02, 0xf9, 0x97, 0x51, 0xc8, 0x44, 0x38, 0xea, 0xc7, 0xf9, 0x96, 0x32, 0x50, 0xd9, 0xee, 0x22, 0xfd, 0xa7, 0x29, 0x7b, 0x6e, 0x86, 0xe2, 0xa8, 0xbc, 0xc7, 0xa9, 0xb5, 0xac, 0x01, 0xf7, 0x90, 0xe0, 0x99, 0x11, 0x70, 0x46, 0x60, 0x85, 0x8e, 0xa5, 0xc1, 0x62, 0x72, 0xc3, 0x81, 0x33, 0xfa, 0xda, 0xde, 0xfa, 0x23, 0xc1, 0x02, 0x90, 0x8e, 0x41, 0x9d, 0xe2, 0xeb, 0xe9, 0xac, 0x27, 0x19, 0x45, 0x72, 0x87, 0x8e, 0x2a, 0x97, 0x1f, 0x88, 0x31, 0xc8, 0xf9, 0x17, 0xe8, 0x52, 0xe8, 0x51, 0xdf, 0x99, 0xd4, 0xdf, 0x01, 0x8f, 0xdd, 0xb2, 0xce, 0xa3, 0x1a, 0xc3, 0xa7, 0xb6, 0x89, 0x75, 0xe8, 0x0a, 0x99, 0x7c, 0xb7, 0xdd, 0x4d, 0x4d, 0xf7, 0x57, 0xbb, 0x8c, 0x3e, 0xcd, 0x91, 0x0b, 0xcb, 0x06, 0x03, 0x35, 0x52, 0x12, 0x7a, 0xc3, 0x08, 0x11, 0x77, 0x39, 0xa0, 0x2c, 0x20, 0x17, 0x17 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.19", - /* Message to be signed */ - 151, - { 0xff, 0x87, 0x5c, 0xca, 0x0e, 0xfc, 0x3d, 0x90, 0xf5, 0x6e, 0x31, 0xf4, 0xbb, 0x66, 0x84, 0x14, 0x89, 0x4d, 0x09, 0xde, 0x90, 0x12, 0x7f, 0x84, 0x66, 0x32, 0x43, 0x10, 0xe1, 0x13, 0x69, 0xa3, 0xf2, 0xf6, 0x49, 0x3c, 0x1c, 0x78, 0xa3, 0x62, 0xb2, 0xa1, 0x4f, 0xb5, 0x48, 0x8c, 0xb5, 0x6c, 0xe0, 0x22, 0x73, 0x9e, 0x43, 0xaa, 0x76, 0x3d, 0x9c, 0x1c, 0x97, 0xb6, 0x21, 0xcc, 0x53, 0x68, 0xc9, 0xc0, 0x0e, 0x81, 0x60, 0x67, 0x92, 0x69, 0x5f, 0x9a, 0xf9, 0xab, 0x63, 0x3e, 0xf2, 0x39, 0xea, 0xb3, 0x44, 0x9d, 0xda, 0x9e, 0x66, 0x07, 0x08, 0x9c, 0x37, 0x51, 0x90, 0x35, 0x4f, 0x7a, 0x59, 0xa4, 0xb3, 0xef, 0x75, 0x22, 0x9d, 0x1c, 0x47, 0xec, 0xda, 0xe3, 0x3b, 0x27, 0x69, 0xff, 0x55, 0x42, 0x65, 0x5e, 0x78, 0x10, 0x22, 0xd0, 0xc4, 0x3b, 0x42, 0x1a, 0x99, 0x84, 0x3c, 0x3d, 0xe1, 0x04, 0x22, 0xad, 0x2f, 0xd8, 0x9d, 0xfe, 0x44, 0x66, 0x15, 0xf5, 0x19, 0x2e, 0x75, 0x79, 0xd4, 0x37, 0x43, 0x79, 0xbb, 0xff, 0xb9 } -, - /* Signature */ - 129, - { 0x02, 0x68, 0x91, 0x7f, 0x8b, 0xda, 0xac, 0x9e, 0xbe, 0x32, 0xb0, 0xdc, 0x6c, 0xd9, 0xd3, 0x9e, 0xfd, 0x3f, 0x88, 0xd8, 0x17, 0xd6, 0x6c, 0xb6, 0x39, 0x0d, 0x7b, 0x55, 0xc6, 0x92, 0x12, 0x21, 0x84, 0x4a, 0xb8, 0xc0, 0x89, 0x86, 0xd3, 0xf2, 0xea, 0x49, 0xbc, 0x6e, 0x3a, 0x10, 0x02, 0x08, 0x6c, 0x0b, 0x6d, 0xf1, 0x63, 0xf7, 0x9d, 0x16, 0x11, 0x6a, 0x93, 0xc4, 0xa2, 0xcc, 0x04, 0x22, 0xc9, 0x48, 0x41, 0xe1, 0xe3, 0xb9, 0x45, 0xab, 0x1d, 0x25, 0x3a, 0xb8, 0xd7, 0xd1, 0x39, 0xc9, 0x18, 0x8b, 0xa8, 0x30, 0x27, 0xc5, 0x93, 0xf8, 0x3a, 0x6f, 0x38, 0x37, 0x0e, 0x7f, 0x03, 0x79, 0xff, 0xdd, 0xf1, 0x42, 0x7d, 0x6f, 0xcc, 0xcf, 0x60, 0x83, 0x31, 0x3f, 0x18, 0x15, 0xb5, 0xde, 0xd6, 0x73, 0x74, 0x30, 0xbb, 0x4a, 0x70, 0xba, 0x81, 0x48, 0x48, 0x34, 0xd8, 0xd1, 0xd2, 0x9a, 0x5e } - -} -, -{ - "PKCS#1 v1.5 Signature Example 11.20", - /* Message to be signed */ - 86, - { 0xe0, 0x7e, 0xcf, 0x00, 0xe2, 0x40, 0x1a, 0xc9, 0x8b, 0x2d, 0x5a, 0xe0, 0xc9, 0xb8, 0x3f, 0x21, 0x9a, 0xb0, 0x27, 0xa6, 0x51, 0x99, 0xfd, 0xb6, 0x34, 0x59, 0x6e, 0x23, 0x44, 0x62, 0x41, 0x38, 0x72, 0x95, 0x32, 0x49, 0x53, 0x28, 0xf9, 0x3f, 0xb3, 0xa3, 0x32, 0x55, 0x27, 0x8f, 0x3e, 0xc2, 0x60, 0x65, 0xce, 0x54, 0x99, 0x5d, 0x42, 0x41, 0x93, 0xbc, 0xb7, 0x58, 0x1b, 0xfe, 0x1a, 0xb8, 0x95, 0x7d, 0x0b, 0x96, 0x1c, 0x30, 0x30, 0xb8, 0x20, 0xd0, 0x9c, 0x9e, 0x32, 0x6c, 0xc3, 0x0c, 0x0a, 0xf6, 0x42, 0x66, 0x61, 0x54 } -, - /* Signature */ - 129, - { 0x00, 0xc4, 0x6d, 0xb4, 0x1b, 0x65, 0xdd, 0xc7, 0x1f, 0xbb, 0xfc, 0x12, 0x5a, 0x4f, 0x9b, 0xab, 0x88, 0x0a, 0x2f, 0x0c, 0x1f, 0x04, 0x1c, 0x41, 0x1d, 0xf7, 0xd4, 0x5d, 0x1e, 0x19, 0x99, 0x7b, 0x34, 0x8e, 0xab, 0xba, 0x19, 0xbf, 0x79, 0xb2, 0x21, 0x77, 0xb2, 0xa0, 0xd7, 0x3f, 0xef, 0xa5, 0x00, 0x83, 0x62, 0xce, 0x59, 0x60, 0xd7, 0xef, 0x58, 0xa5, 0x89, 0x93, 0xe7, 0x46, 0x03, 0xd4, 0xd9, 0xd0, 0xb3, 0xda, 0xd4, 0xb2, 0x0c, 0x82, 0x9d, 0x36, 0xef, 0xca, 0xf5, 0x7f, 0x0c, 0x4f, 0x0c, 0xef, 0x89, 0x01, 0x5a, 0x48, 0x45, 0x02, 0x42, 0xbd, 0x02, 0x0d, 0x5f, 0x52, 0xd8, 0xb5, 0x0e, 0xa1, 0x3e, 0x56, 0xa1, 0xaa, 0xd6, 0x01, 0x91, 0x5d, 0x60, 0xec, 0x9a, 0xbf, 0xc3, 0x07, 0xf1, 0x8a, 0xf2, 0x06, 0x72, 0x38, 0x4d, 0xcc, 0x12, 0xf9, 0x82, 0x27, 0x31, 0x36, 0x99, 0x71, 0x40 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 12: A 1030-bit RSA key pair", -{ - /* Modulus */ - 129, - { 0x36, 0x98, 0x1a, 0x95, 0xae, 0x24, 0x18, 0x14, 0x52, 0xda, 0x25, 0x7c, 0x03, 0x8f, 0x05, 0x82, 0x14, 0x12, 0xd8, 0x4e, 0xb4, 0x7a, 0x43, 0xfc, 0xc7, 0xef, 0x12, 0x17, 0x95, 0x9b, 0xa6, 0x77, 0x02, 0x7f, 0x70, 0x86, 0xd3, 0xa8, 0x5c, 0xdd, 0x34, 0x9f, 0x92, 0x0f, 0x03, 0x4c, 0x02, 0x78, 0x79, 0x2d, 0xc8, 0xa8, 0xcf, 0x0c, 0x00, 0x80, 0xe5, 0xc6, 0x1f, 0x47, 0x48, 0x83, 0xc6, 0x87, 0x9f, 0x4d, 0xee, 0x0a, 0xe9, 0x52, 0x47, 0x8a, 0x5e, 0xe2, 0xce, 0x4e, 0x39, 0x18, 0x64, 0x1e, 0x81, 0x3c, 0xb3, 0x74, 0xf7, 0xb2, 0x83, 0x2b, 0xcd, 0x6a, 0xea, 0x80, 0x9d, 0x25, 0x4f, 0xc2, 0xca, 0x9a, 0xc5, 0xa3, 0x32, 0x42, 0x4a, 0xb6, 0x5c, 0x2a, 0x26, 0x12, 0x75, 0xd1, 0x9a, 0x41, 0x4b, 0x61, 0x65, 0x00, 0xd5, 0xe3, 0x73, 0x70, 0x63, 0x15, 0xf0, 0x63, 0xdc, 0x88, 0x5d, 0x7f, 0xb9 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 129, - { 0x09, 0xad, 0x03, 0x17, 0x30, 0xb6, 0x32, 0x73, 0x55, 0xac, 0xd6, 0x94, 0x68, 0x70, 0x0e, 0x7e, 0x9b, 0xae, 0xac, 0x5a, 0x24, 0xa7, 0xff, 0xc9, 0x3b, 0x29, 0x2e, 0xb8, 0x71, 0xda, 0x54, 0x92, 0x46, 0xa5, 0xce, 0x0c, 0x83, 0x52, 0x55, 0x65, 0x1a, 0x28, 0xc6, 0xe2, 0xf4, 0xc7, 0x61, 0xaf, 0xb6, 0xf0, 0x6b, 0x9e, 0x29, 0x95, 0xfb, 0xb7, 0xdc, 0xa1, 0x74, 0xd5, 0x36, 0x2f, 0xae, 0xbd, 0xc3, 0x9a, 0x72, 0xc5, 0x79, 0x5d, 0x1f, 0x33, 0x92, 0xec, 0x08, 0x8b, 0x5d, 0xc2, 0xa7, 0x85, 0xb2, 0xc9, 0xc4, 0xc6, 0xe6, 0x69, 0xe7, 0x23, 0xb5, 0xdd, 0x0c, 0xe4, 0x43, 0x25, 0x55, 0x12, 0x67, 0xdd, 0x62, 0xe0, 0xf7, 0x8d, 0x24, 0x24, 0xad, 0xae, 0x48, 0xe2, 0x49, 0x44, 0x3a, 0xef, 0x4a, 0x37, 0x04, 0x10, 0xdb, 0x9e, 0x70, 0x93, 0x99, 0xac, 0x37, 0xcc, 0x48, 0x1b, 0x59, 0x00, 0xc5 } -, - /* Prime 1 */ - 65, - { 0x07, 0x72, 0x0f, 0x21, 0xcd, 0xdb, 0x92, 0x27, 0x45, 0xb7, 0x1c, 0xf8, 0x11, 0x6a, 0x83, 0x66, 0x9a, 0x0d, 0xdb, 0x89, 0xe8, 0xf3, 0xf0, 0x6c, 0x34, 0x7c, 0xa7, 0x87, 0xcf, 0x10, 0xef, 0x16, 0x93, 0xbd, 0xfe, 0x3a, 0x0c, 0x36, 0x4c, 0x7a, 0x7e, 0x89, 0x04, 0x17, 0xf2, 0xaf, 0x49, 0x47, 0x5c, 0x7d, 0x07, 0x6f, 0x9c, 0xee, 0xaa, 0xe7, 0x6d, 0xbd, 0x4e, 0x92, 0x15, 0xaf, 0x45, 0x69, 0x4d } -, - /* Prime 2 */ - 65, - { 0x07, 0x55, 0x1c, 0x27, 0xe9, 0xaa, 0xf1, 0x1f, 0x47, 0x4f, 0x1c, 0x9a, 0x14, 0xbf, 0x14, 0x4c, 0xfa, 0xef, 0xe2, 0x7f, 0xca, 0x4f, 0x20, 0x79, 0x5d, 0xec, 0x85, 0x34, 0xc9, 0x37, 0xbb, 0x00, 0xfe, 0x16, 0x23, 0x5e, 0xcd, 0x69, 0x1f, 0xd2, 0x3e, 0x32, 0xcd, 0xfb, 0x8b, 0x78, 0x66, 0x6b, 0xb7, 0x82, 0x84, 0xae, 0x15, 0xd5, 0x9b, 0xe5, 0xca, 0x74, 0x73, 0xe6, 0x2d, 0x46, 0xa9, 0xda, 0x1d } -, - /* Prime exponent 1 */ - 65, - { 0x02, 0xe2, 0x2c, 0x74, 0x16, 0x0a, 0x94, 0x36, 0xbb, 0x6c, 0x28, 0x3e, 0xf6, 0x57, 0xbe, 0xdd, 0xec, 0x89, 0xb3, 0x5d, 0x5c, 0xa7, 0xa4, 0x93, 0xf3, 0x5b, 0xd7, 0x71, 0xe4, 0x42, 0x95, 0xa5, 0xb3, 0xc0, 0x20, 0x06, 0x11, 0x16, 0xb2, 0x55, 0xba, 0x4d, 0x8c, 0x15, 0x4e, 0x3a, 0x8e, 0x71, 0xa1, 0xa3, 0x16, 0x4f, 0x26, 0x82, 0xd4, 0x13, 0x5e, 0xcf, 0xb2, 0xef, 0x26, 0x90, 0xc3, 0x9b, 0xfd } -, - /* Prime exponent 2 */ - 65, - { 0x01, 0xd2, 0xbf, 0xf5, 0x8c, 0xbc, 0xdc, 0xc8, 0x12, 0x4b, 0x31, 0xa9, 0x7e, 0x8f, 0x24, 0xd5, 0x1f, 0x70, 0x96, 0xb9, 0x7f, 0xec, 0xbc, 0xfe, 0x70, 0xc4, 0x67, 0x3b, 0x00, 0xed, 0xc2, 0xaa, 0x34, 0x83, 0xfc, 0xb7, 0x8e, 0x0c, 0x1d, 0xc5, 0x81, 0x81, 0xd0, 0x86, 0x43, 0xdf, 0xe4, 0x57, 0xd4, 0x81, 0xb7, 0xcc, 0x31, 0xd1, 0xb3, 0xba, 0x27, 0xe5, 0x5d, 0x0c, 0x57, 0x25, 0xc3, 0x06, 0x61 } -, - /* Coefficient */ - 65, - { 0x06, 0xd2, 0x27, 0x72, 0x57, 0x42, 0xef, 0x03, 0x46, 0x2d, 0x1c, 0xf6, 0x12, 0x67, 0x4a, 0x78, 0x83, 0x1d, 0x61, 0x9d, 0xa3, 0xd6, 0x40, 0xeb, 0x7c, 0x71, 0xc8, 0x7b, 0x53, 0x28, 0x69, 0x72, 0x73, 0xc5, 0xf7, 0x51, 0xe1, 0x4d, 0x7b, 0x81, 0xc1, 0x2b, 0x6d, 0xeb, 0x44, 0x75, 0x1a, 0x92, 0x95, 0xcb, 0x67, 0x1e, 0x81, 0x48, 0x4d, 0xea, 0xa8, 0x3b, 0x4d, 0xf1, 0xfd, 0x37, 0xe2, 0xff, 0x3c } - -} -, -{{ - "PKCS#1 v1.5 Signature Example 12.1", - /* Message to be signed */ - 9, - { 0xe4, 0xb2, 0xd6, 0x0e, 0x3b, 0xdd, 0x27, 0x81, 0x6f } -, - /* Signature */ - 129, - { 0x13, 0xfd, 0x4a, 0xc1, 0xac, 0x68, 0x48, 0x17, 0x37, 0x80, 0x96, 0x5a, 0xff, 0x5e, 0x61, 0xc5, 0x96, 0x89, 0x2b, 0xc1, 0x47, 0x76, 0x0d, 0x43, 0x07, 0x9b, 0x5d, 0x71, 0x77, 0xe4, 0x23, 0xd4, 0x86, 0xf5, 0xa7, 0x3e, 0x1a, 0x16, 0xb3, 0xce, 0x9b, 0x5e, 0xda, 0xc1, 0x61, 0xea, 0x6d, 0x4f, 0x6c, 0x23, 0xfc, 0xfc, 0x3e, 0x62, 0x19, 0xca, 0xc5, 0x56, 0x06, 0x7f, 0xfa, 0xed, 0x4a, 0xda, 0xc0, 0xa9, 0x50, 0x05, 0x09, 0x0b, 0x89, 0x84, 0x4c, 0x54, 0x35, 0x4d, 0xb2, 0x2a, 0xaf, 0xf9, 0xee, 0xff, 0x9d, 0xa5, 0xaa, 0xa5, 0x49, 0x04, 0x25, 0xe1, 0x35, 0xcc, 0x0f, 0x64, 0x58, 0x4c, 0x7f, 0x05, 0xfe, 0x33, 0x6e, 0x44, 0x40, 0xbb, 0x86, 0x92, 0x86, 0xd4, 0x4a, 0xf1, 0x57, 0x88, 0x0e, 0x3a, 0x40, 0xfb, 0x06, 0x72, 0x5d, 0x09, 0xde, 0xb3, 0x7f, 0x1e, 0xbb, 0x18, 0x1c, 0x8f, 0x5c } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Signature Example 12.2", - /* Message to be signed */ - 164, - { 0x78, 0x86, 0x85, 0xfc, 0x58, 0x05, 0xd6, 0x27, 0xb1, 0x3f, 0x2f, 0xe7, 0xfe, 0x6f, 0x7c, 0x9a, 0xb2, 0xca, 0x49, 0x44, 0xab, 0xf3, 0x08, 0xb8, 0x6d, 0x1a, 0x0f, 0x58, 0x3d, 0x17, 0xb5, 0x76, 0x02, 0x43, 0x9e, 0x1f, 0x2c, 0x6e, 0x0c, 0x5b, 0xf7, 0x81, 0x70, 0x50, 0x13, 0x38, 0xb4, 0xc4, 0x47, 0xe9, 0x19, 0x7b, 0x65, 0x03, 0xfb, 0x73, 0xeb, 0xab, 0xf7, 0x76, 0xde, 0xfa, 0xe3, 0x3b, 0xdc, 0xdc, 0xe7, 0x7d, 0xe7, 0x9b, 0x82, 0xbe, 0x14, 0x85, 0xa8, 0xaa, 0x9b, 0x82, 0x09, 0x37, 0xdb, 0xf4, 0x28, 0xa2, 0x05, 0x50, 0x96, 0x6a, 0x86, 0xb6, 0x2a, 0x17, 0x2e, 0x6c, 0xfb, 0xdc, 0xfe, 0x0d, 0x6f, 0xc6, 0x7a, 0x4d, 0xb6, 0x22, 0x52, 0xfd, 0xaf, 0x85, 0xf1, 0xe6, 0xbc, 0x14, 0xf8, 0xab, 0x1c, 0x53, 0x32, 0x6a, 0xa6, 0xa7, 0xbc, 0x5e, 0xec, 0x88, 0xe0, 0xb1, 0x1d, 0x48, 0xd2, 0xb5, 0x61, 0xf2, 0x26, 0x06, 0x50, 0x10, 0x2f, 0xf2, 0x7b, 0x57, 0xb7, 0x00, 0x72, 0xbc, 0xc1, 0x21, 0xe3, 0x5e, 0x70, 0xf3, 0x78, 0x0c, 0x83, 0x33, 0xb5, 0xbf, 0x6b, 0x08, 0xfa, 0x12, 0x08, 0x26, 0x0f, 0x33 } -, - /* Signature */ - 129, - { 0x09, 0x04, 0xcc, 0x11, 0xac, 0x66, 0xa9, 0x83, 0x7b, 0x74, 0x56, 0x8b, 0xe2, 0x50, 0xe5, 0x3a, 0xe4, 0xbe, 0xf7, 0x8d, 0xc6, 0x7f, 0xfe, 0xe5, 0x09, 0xe5, 0xd9, 0xb4, 0x72, 0x58, 0x3e, 0xaa, 0xa5, 0x6d, 0x4c, 0x9e, 0xe7, 0x0f, 0x6e, 0x82, 0xdc, 0x99, 0x8b, 0x53, 0xef, 0xf1, 0x27, 0x2b, 0xf0, 0x1f, 0x09, 0xe5, 0x26, 0x2b, 0x15, 0x5a, 0x6e, 0x56, 0xd1, 0x50, 0x40, 0x03, 0xe4, 0xc8, 0xa4, 0x6e, 0x65, 0x02, 0x55, 0x32, 0x78, 0x23, 0x0d, 0x6e, 0x81, 0xb7, 0x29, 0x18, 0x43, 0xab, 0x97, 0x69, 0x73, 0x7f, 0x3c, 0x69, 0x31, 0x52, 0xf1, 0x7b, 0xf2, 0xd8, 0xbf, 0xc7, 0x82, 0xbd, 0xb3, 0xfa, 0x0a, 0xea, 0xdf, 0x0d, 0x44, 0x1e, 0x1e, 0x52, 0xde, 0xa5, 0x4b, 0x75, 0xcf, 0x16, 0x5e, 0x35, 0xc3, 0x82, 0xd3, 0x11, 0x74, 0xf6, 0x67, 0x9d, 0x2f, 0x21, 0xb9, 0x81, 0xf4, 0x13, 0x58 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.3", - /* Message to be signed */ - 126, - { 0x4e, 0xc7, 0x39, 0x3f, 0xdc, 0x4b, 0x90, 0xaf, 0x8f, 0xff, 0xca, 0xf3, 0x4e, 0x84, 0x5a, 0x09, 0x65, 0x6a, 0xef, 0x9d, 0xda, 0x12, 0xb0, 0x34, 0x2c, 0x46, 0xeb, 0x04, 0x91, 0x74, 0xaa, 0x51, 0x1b, 0x43, 0xc9, 0x4d, 0x75, 0xc0, 0xe2, 0x90, 0x70, 0xaf, 0xf5, 0xb4, 0x14, 0x23, 0xa1, 0x70, 0xd9, 0xb3, 0xe8, 0xb2, 0x12, 0x24, 0xaa, 0xbc, 0x53, 0x1d, 0x88, 0x88, 0x6e, 0x26, 0x46, 0xd6, 0x78, 0x8f, 0x1b, 0xaa, 0xd4, 0xef, 0x4b, 0x0b, 0x4b, 0xde, 0x4b, 0x12, 0xce, 0x90, 0x52, 0x08, 0x2e, 0x2d, 0xdd, 0x0e, 0x3e, 0x6c, 0xaa, 0xbb, 0x0a, 0x14, 0x34, 0x4b, 0x0a, 0x58, 0x3f, 0x40, 0x4c, 0x1b, 0x6a, 0x3c, 0x7b, 0xca, 0x8a, 0x58, 0x85, 0xd5, 0xf2, 0x24, 0xaf, 0x1f, 0xca, 0xc3, 0xfa, 0xd9, 0x37, 0x0e, 0x9b, 0x29, 0x74, 0xe8, 0xca, 0x62, 0xe2, 0x2a, 0xce, 0xb9 } -, - /* Signature */ - 129, - { 0x21, 0xa6, 0x6a, 0xf6, 0x27, 0xee, 0x0d, 0xd0, 0x5f, 0xe7, 0x56, 0x3c, 0xc1, 0xd2, 0x9c, 0xcf, 0x6f, 0x87, 0x31, 0xb4, 0x1e, 0x3d, 0xb3, 0x95, 0x97, 0x89, 0x3b, 0xa1, 0xcf, 0x37, 0x5f, 0x78, 0x17, 0x88, 0xfd, 0xf0, 0x73, 0xb0, 0xb5, 0x93, 0xc7, 0x6d, 0xf2, 0x81, 0x6e, 0xc6, 0xde, 0xfc, 0x22, 0x42, 0x21, 0xac, 0x19, 0xf5, 0xbe, 0xe4, 0x4f, 0xc0, 0xe5, 0xd4, 0x09, 0x3d, 0x34, 0x68, 0x27, 0x8f, 0xb4, 0x2d, 0x40, 0x5a, 0x07, 0x04, 0x46, 0x53, 0x22, 0xda, 0x4d, 0x3a, 0x7c, 0xa9, 0xc3, 0xda, 0x73, 0xc3, 0xd0, 0x82, 0xae, 0xe5, 0x67, 0xb7, 0x70, 0x83, 0x32, 0x3e, 0x75, 0xbb, 0x35, 0xed, 0x77, 0xe8, 0xdb, 0x9c, 0x01, 0xb4, 0x96, 0xa0, 0x4c, 0xc4, 0xa8, 0x99, 0xdf, 0x35, 0x9d, 0xa4, 0xa2, 0x28, 0x7c, 0xaf, 0xff, 0xe1, 0xed, 0x63, 0xcd, 0xde, 0xad, 0x87, 0x6c, 0x94, 0x07 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.4", - /* Message to be signed */ - 250, - { 0x90, 0x77, 0x60, 0xdb, 0x32, 0x96, 0x9b, 0x09, 0x7d, 0xc1, 0x24, 0xef, 0x89, 0x75, 0x15, 0x11, 0xa5, 0xd2, 0x30, 0x59, 0x6d, 0x2f, 0xd8, 0xa8, 0x91, 0xff, 0x00, 0xf0, 0x5f, 0xba, 0xd4, 0x5f, 0x72, 0xa4, 0x5d, 0x46, 0x56, 0x24, 0xa3, 0xab, 0x67, 0xaf, 0xdb, 0xb9, 0xe5, 0xf9, 0xe6, 0x5b, 0x63, 0xe3, 0x0c, 0x2e, 0x57, 0xfe, 0x7f, 0x32, 0xf3, 0x99, 0x01, 0x10, 0x33, 0xdc, 0x05, 0x29, 0xc0, 0x97, 0x1f, 0xbe, 0x06, 0x4f, 0xc5, 0xed, 0xb0, 0x1f, 0x84, 0xcd, 0x57, 0x28, 0x3f, 0xbb, 0xbd, 0x2a, 0xa0, 0x29, 0x44, 0x11, 0x0b, 0x6b, 0x53, 0x4f, 0x74, 0x08, 0x2f, 0x56, 0xbe, 0x34, 0x6c, 0xc3, 0x43, 0xbd, 0x4d, 0x0b, 0x34, 0x80, 0x91, 0xc0, 0x05, 0xc6, 0x19, 0x9a, 0x7e, 0x3d, 0x56, 0x88, 0x52, 0x47, 0xb0, 0xc1, 0x6a, 0x36, 0xb2, 0x35, 0xb8, 0xf5, 0xd4, 0xf0, 0x0a, 0x6c, 0x6b, 0xb6, 0xfe, 0xed, 0xe8, 0x8f, 0xcd, 0x78, 0x8d, 0x75, 0xca, 0xcf, 0xf7, 0xd9, 0x56, 0x87, 0x99, 0x65, 0x71, 0x55, 0x9c, 0x05, 0x79, 0x6a, 0x55, 0x71, 0x1d, 0x77, 0x46, 0xbb, 0x92, 0xd8, 0x52, 0x89, 0x3b, 0xa9, 0x06, 0x75, 0xf9, 0x8b, 0x0f, 0x54, 0x08, 0x48, 0x1b, 0xf1, 0x54, 0x3f, 0x39, 0xde, 0x3d, 0x0c, 0x0c, 0x1f, 0x53, 0x49, 0x5b, 0xd2, 0x12, 0xdd, 0xcd, 0xc6, 0xd0, 0xe5, 0x7d, 0x7a, 0x3d, 0xbe, 0x24, 0x20, 0x8c, 0xb2, 0x4e, 0xd4, 0x1d, 0xe0, 0x3a, 0x5f, 0x05, 0x2a, 0x9b, 0x58, 0x12, 0x70, 0x0a, 0x5c, 0xe0, 0x5c, 0x02, 0x00, 0xd4, 0x71, 0x9c, 0x55, 0x54, 0x4e, 0x7f, 0xb2, 0x94, 0xd3, 0x44, 0xa4, 0xf2, 0x05, 0xef, 0x9a, 0x34, 0x97, 0xb5, 0x67, 0x54, 0x7c, 0xbd, 0x1a, 0x63, 0x3e, 0x2b, 0x79, 0xd3, 0x34, 0x90, 0x95 } -, - /* Signature */ - 129, - { 0x0e, 0xc9, 0x38, 0xa0, 0xd4, 0xb2, 0xa4, 0xed, 0xd2, 0x78, 0xd6, 0x3d, 0xe7, 0x61, 0xc1, 0x02, 0xe2, 0x59, 0x21, 0x02, 0xee, 0x05, 0xdb, 0x1b, 0x59, 0x1e, 0x0d, 0x85, 0x7b, 0xf6, 0x66, 0x84, 0x9e, 0x74, 0xcc, 0x19, 0xb7, 0xe4, 0xe9, 0xcc, 0x39, 0x2d, 0xe5, 0x39, 0xf7, 0x90, 0xfc, 0x68, 0xe3, 0xb5, 0x21, 0xdb, 0x3a, 0x1a, 0x26, 0x7e, 0x5a, 0x4e, 0x12, 0x19, 0x75, 0x2e, 0x01, 0x99, 0xe7, 0x01, 0x9a, 0x24, 0x85, 0x54, 0xc5, 0xba, 0xe3, 0x11, 0x2b, 0xee, 0xa4, 0x0c, 0xf3, 0xe6, 0x4f, 0x8a, 0xaf, 0x9b, 0xb1, 0xe9, 0xd1, 0xc1, 0xd8, 0x83, 0x3c, 0x2b, 0xfa, 0x31, 0xb9, 0xd5, 0x45, 0x0f, 0xa2, 0x49, 0x29, 0x7f, 0xe2, 0xe4, 0x6a, 0xb0, 0x3e, 0x99, 0xb1, 0xf9, 0xc6, 0x51, 0xd5, 0x39, 0xeb, 0x53, 0xce, 0x09, 0x61, 0xce, 0x60, 0x23, 0xc1, 0x7d, 0xd7, 0x38, 0x3d, 0xd1, 0x2b } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.5", - /* Message to be signed */ - 124, - { 0xbd, 0xa5, 0x54, 0x95, 0x47, 0x32, 0xd1, 0xd5, 0xf3, 0x94, 0x75, 0x55, 0xc6, 0x1f, 0xfa, 0xb8, 0x01, 0xdb, 0xcd, 0xc8, 0x12, 0x1d, 0xc6, 0x81, 0x91, 0x27, 0xc2, 0xf2, 0x2a, 0x43, 0x6d, 0x20, 0x62, 0x2d, 0x1f, 0x4a, 0x44, 0x7c, 0x3a, 0x77, 0xb6, 0x58, 0x57, 0x31, 0xaf, 0xc0, 0x3e, 0x77, 0xba, 0xeb, 0x70, 0x9c, 0x1b, 0xfb, 0x90, 0x6a, 0x1a, 0xa1, 0x94, 0x9a, 0xb6, 0x76, 0x3a, 0x15, 0xc7, 0xda, 0x5a, 0x12, 0xa8, 0xf3, 0x95, 0x10, 0x1e, 0x64, 0x6a, 0x83, 0x71, 0x73, 0x14, 0x1f, 0x2a, 0x0c, 0xf5, 0x36, 0x02, 0x4b, 0x36, 0x91, 0x8c, 0xf9, 0xdb, 0x95, 0xb1, 0xcc, 0x40, 0x5a, 0xef, 0xe6, 0x3a, 0x3a, 0x93, 0xbc, 0x4a, 0xda, 0x60, 0xa0, 0xf4, 0xe0, 0x72, 0x9f, 0x4d, 0xb8, 0xb7, 0x6f, 0xd6, 0x4e, 0xfc, 0xbc, 0xb6, 0x6f, 0x0e, 0x4a, 0xaf, 0xf3 } -, - /* Signature */ - 129, - { 0x07, 0x26, 0x2f, 0xe1, 0xf3, 0xd7, 0xb7, 0x79, 0x32, 0xcd, 0xb7, 0xcd, 0x96, 0xac, 0x19, 0x8b, 0x93, 0x03, 0xeb, 0x44, 0x46, 0x0f, 0x52, 0x98, 0xe8, 0xe5, 0x2f, 0xe6, 0x70, 0x52, 0x99, 0xbb, 0xd6, 0x18, 0xef, 0xd0, 0xb3, 0x63, 0x31, 0x56, 0x2f, 0x20, 0xb2, 0x0e, 0x86, 0x6d, 0x99, 0xc2, 0xd0, 0x4a, 0x01, 0x49, 0xf5, 0x64, 0xdd, 0xf6, 0x6b, 0xa3, 0x19, 0xf3, 0xb8, 0x48, 0x25, 0x39, 0x6e, 0xa8, 0xb8, 0x93, 0xba, 0x5b, 0x3e, 0xe5, 0xe5, 0x24, 0x5c, 0xfe, 0x6b, 0x61, 0x6e, 0x30, 0xa9, 0x00, 0xbf, 0x83, 0xbb, 0x76, 0x3d, 0x20, 0xb3, 0x30, 0x37, 0x01, 0xca, 0xbe, 0x94, 0x33, 0x41, 0x48, 0x88, 0x2a, 0xe4, 0xef, 0x14, 0xe6, 0xd9, 0xe6, 0xc7, 0x52, 0xbc, 0xe2, 0x53, 0xbd, 0xda, 0x57, 0x39, 0xe3, 0x3b, 0xdc, 0x32, 0xeb, 0x08, 0x28, 0x28, 0xc1, 0xc3, 0x99, 0xc2, 0x2f, 0xea } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.6", - /* Message to be signed */ - 73, - { 0x51, 0x76, 0xad, 0x7c, 0x99, 0xbe, 0x4c, 0xdb, 0xbb, 0x5d, 0x79, 0xba, 0x5f, 0x49, 0x6c, 0xad, 0x9f, 0x42, 0xdc, 0x25, 0xd5, 0x27, 0xa5, 0xd5, 0xe8, 0xe3, 0x35, 0x91, 0x79, 0x22, 0x5e, 0x6b, 0x0e, 0x43, 0x66, 0x6d, 0x3d, 0x82, 0xab, 0x5b, 0xaf, 0x42, 0x4c, 0x85, 0xc3, 0x31, 0x21, 0x60, 0x6e, 0xb7, 0x9a, 0xda, 0x6b, 0xaf, 0xca, 0xb5, 0xc1, 0xe2, 0x54, 0x6c, 0xab, 0xf6, 0xa3, 0x60, 0x03, 0x84, 0x05, 0xca, 0x18, 0xc0, 0x08, 0x36, 0x67 } -, - /* Signature */ - 129, - { 0x06, 0x27, 0x23, 0x8b, 0x0b, 0x93, 0xe4, 0xcf, 0x98, 0x57, 0x13, 0xd2, 0x91, 0x29, 0x6c, 0xed, 0xe3, 0x45, 0xe8, 0x8e, 0x17, 0x82, 0x45, 0x25, 0x53, 0x59, 0x39, 0xb3, 0xf3, 0xd5, 0xff, 0x4e, 0xbc, 0x40, 0x74, 0x00, 0x11, 0x49, 0x00, 0x25, 0xdf, 0xea, 0xae, 0xe9, 0x06, 0x38, 0xc5, 0x39, 0x1e, 0xb4, 0x4e, 0x9f, 0xf3, 0x70, 0x45, 0x7b, 0x60, 0xd5, 0xde, 0x80, 0xc1, 0x65, 0x38, 0xcb, 0x38, 0x60, 0x55, 0x95, 0x85, 0xca, 0xf5, 0xe3, 0x33, 0x2c, 0x7b, 0x1f, 0xdd, 0x8f, 0x45, 0xfb, 0x6e, 0x35, 0x57, 0xf2, 0xc7, 0xa6, 0x0d, 0x09, 0x9e, 0x94, 0xf8, 0xe9, 0x6b, 0xaa, 0x1e, 0x03, 0x19, 0x9a, 0xc8, 0x3c, 0xec, 0x8f, 0x9c, 0x16, 0xbb, 0x49, 0x15, 0x1a, 0x88, 0x72, 0xcb, 0xfe, 0x70, 0xf0, 0x02, 0xcf, 0x3b, 0x53, 0xb6, 0x11, 0xd6, 0xcb, 0xb6, 0x65, 0x89, 0x7c, 0xeb, 0xf5, 0x99 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.7", - /* Message to be signed */ - 20, - { 0xe1, 0x74, 0x71, 0x93, 0x64, 0xf7, 0xbd, 0xc8, 0x6e, 0x2f, 0x0c, 0x61, 0x26, 0x5b, 0xf8, 0x05, 0x7d, 0x64, 0x9c, 0xca } -, - /* Signature */ - 129, - { 0x09, 0x77, 0x19, 0x54, 0xfc, 0x8a, 0x1f, 0xee, 0xe9, 0x0f, 0x60, 0xc4, 0xb8, 0xa5, 0xbb, 0xd4, 0x62, 0xc6, 0x34, 0x37, 0x9a, 0xb3, 0xda, 0x19, 0xff, 0xeb, 0xa6, 0xe0, 0x31, 0xb4, 0x24, 0x3a, 0x83, 0x50, 0x9c, 0xee, 0xed, 0x6e, 0x01, 0x2a, 0x91, 0x63, 0xc6, 0x14, 0x5c, 0xf7, 0x05, 0x02, 0xa9, 0xfb, 0x0c, 0x21, 0xdb, 0x31, 0xfa, 0xd5, 0xad, 0x14, 0x69, 0x5d, 0xe0, 0x02, 0x62, 0xe4, 0xe5, 0x67, 0x09, 0x5e, 0x16, 0x11, 0x0c, 0x6e, 0x65, 0xd6, 0xbc, 0xb9, 0xcc, 0x02, 0xe9, 0x19, 0xf9, 0x0d, 0x19, 0xe7, 0x30, 0x7f, 0x44, 0x34, 0x50, 0x3f, 0x9f, 0xe0, 0x2c, 0x12, 0xc1, 0xd3, 0xf5, 0x0c, 0xc1, 0x60, 0x08, 0x6f, 0xe4, 0x60, 0x29, 0x8c, 0x88, 0x12, 0x25, 0xbf, 0xf2, 0xe9, 0xe3, 0x13, 0xda, 0x38, 0x44, 0x44, 0xbe, 0xc7, 0x2a, 0x67, 0xac, 0x34, 0x44, 0x67, 0xe8, 0x2b, 0x66 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.8", - /* Message to be signed */ - 232, - { 0x98, 0xcb, 0xc9, 0x1f, 0xd4, 0x9b, 0x50, 0x7c, 0x88, 0x7e, 0x97, 0xc3, 0xcf, 0xa9, 0xb5, 0x9c, 0x26, 0x00, 0x1f, 0xca, 0xc1, 0x64, 0x87, 0xf6, 0x00, 0x4f, 0x0b, 0x68, 0x74, 0x54, 0x63, 0x20, 0x02, 0xd5, 0x49, 0xb5, 0x46, 0x1f, 0xf1, 0x53, 0x0c, 0x0f, 0x5f, 0xc0, 0x9a, 0xac, 0xc4, 0x6a, 0xda, 0xda, 0x7d, 0xc9, 0xd7, 0xb3, 0xe2, 0x0f, 0xed, 0xfe, 0xec, 0xd8, 0xf2, 0xf1, 0x68, 0x41, 0x77, 0x32, 0x68, 0x54, 0x2e, 0x86, 0x43, 0x1c, 0x7f, 0xb4, 0xd1, 0x63, 0xf3, 0x1e, 0x8e, 0x31, 0x72, 0x20, 0x34, 0x26, 0xbc, 0x0d, 0x88, 0xa2, 0x3b, 0x13, 0x76, 0x34, 0xbf, 0xc7, 0x14, 0x01, 0x72, 0x20, 0xfb, 0xfb, 0xec, 0x88, 0x8e, 0x01, 0xe3, 0xef, 0xf7, 0xbb, 0xbd, 0xf9, 0x3f, 0x08, 0x3b, 0x88, 0xfd, 0xd6, 0x40, 0x7d, 0x98, 0x9b, 0xcc, 0x5e, 0xcb, 0x15, 0x3c, 0x9c, 0xee, 0x34, 0x10, 0xfd, 0x00, 0x6b, 0xcd, 0xf0, 0x7a, 0xf2, 0x28, 0x79, 0x0f, 0xd5, 0xe0, 0x4f, 0x5c, 0x0a, 0x1b, 0x63, 0x64, 0x8d, 0x48, 0x60, 0x9b, 0xf1, 0x63, 0xc6, 0xfd, 0x65, 0x60, 0x20, 0x75, 0x7c, 0x3c, 0x06, 0x38, 0xe1, 0xb8, 0x2d, 0x75, 0xe2, 0xb4, 0xb9, 0x08, 0xb7, 0xe0, 0xa3, 0xc8, 0xd7, 0x26, 0x6b, 0x80, 0x1f, 0x60, 0xfc, 0x2b, 0x4f, 0x31, 0x7e, 0xbb, 0x8b, 0xf2, 0x2a, 0xb9, 0xe1, 0xcb, 0x7b, 0x77, 0x84, 0x39, 0x5b, 0xd7, 0xb4, 0x24, 0x32, 0x9e, 0x86, 0x1d, 0x47, 0x86, 0x61, 0xf6, 0xdc, 0x12, 0x98, 0x51, 0x5f, 0x48, 0x56, 0x4a, 0x3f, 0xf9, 0x97, 0x35, 0xbb, 0x90, 0x03, 0x38, 0x75, 0xa2, 0x5b, 0xe8, 0xb7, 0x24, 0xf3 } -, - /* Signature */ - 129, - { 0x0f, 0x2d, 0x7a, 0x5e, 0xab, 0x83, 0x58, 0x45, 0x03, 0xd9, 0x4e, 0xbf, 0x7d, 0xde, 0x9e, 0xed, 0x49, 0x41, 0x10, 0xbe, 0x94, 0xed, 0x64, 0x8a, 0xf0, 0xcf, 0x6e, 0x89, 0x1b, 0x06, 0x2d, 0x2c, 0x9d, 0xef, 0x95, 0x87, 0x55, 0xb1, 0xa3, 0x08, 0x48, 0x8d, 0x16, 0x70, 0x74, 0x29, 0x51, 0xec, 0x00, 0x60, 0x54, 0x5d, 0x2e, 0xc4, 0x3f, 0xe8, 0x4a, 0xec, 0x89, 0x01, 0xad, 0xf4, 0xfe, 0x8d, 0x67, 0xaa, 0xe5, 0x7a, 0x31, 0x9f, 0x49, 0x1c, 0x85, 0xc2, 0x1c, 0xd7, 0xf9, 0xc5, 0x99, 0x81, 0x3c, 0xeb, 0x9d, 0xf8, 0x47, 0x78, 0xad, 0xc8, 0x2a, 0x33, 0xc4, 0xe7, 0x67, 0x4d, 0x7f, 0xbe, 0x13, 0x48, 0xdc, 0x20, 0x75, 0x51, 0x10, 0x4f, 0x54, 0x42, 0xac, 0xd6, 0x84, 0x86, 0x9a, 0xc2, 0x2c, 0xac, 0x51, 0x6c, 0xc9, 0x88, 0x7f, 0xd1, 0xd0, 0x21, 0xef, 0xcc, 0x54, 0xab, 0xda, 0xf2, 0xb6 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.9", - /* Message to be signed */ - 139, - { 0x3e, 0xed, 0x6b, 0xf1, 0x16, 0xcb, 0x31, 0xe0, 0xfd, 0xd4, 0xc5, 0xc9, 0x33, 0x58, 0xba, 0xb6, 0x8f, 0xbf, 0xa8, 0xb5, 0xc5, 0x15, 0xbc, 0xab, 0xf9, 0x05, 0x1c, 0xdf, 0x95, 0xa2, 0x43, 0xe5, 0xee, 0x68, 0x15, 0x15, 0x4e, 0xeb, 0x4a, 0xc1, 0x0f, 0x52, 0x31, 0xd0, 0x49, 0x38, 0x13, 0xe2, 0x81, 0x49, 0xe9, 0x68, 0x2b, 0xb1, 0xc8, 0xb7, 0x7a, 0x6e, 0x13, 0x60, 0xb2, 0xb2, 0xc0, 0xf9, 0xc3, 0x16, 0x1e, 0x41, 0x7e, 0xf6, 0xcb, 0x3d, 0x9a, 0xbb, 0xdc, 0x74, 0x2c, 0xe0, 0x25, 0xfa, 0xfc, 0xd5, 0x38, 0xc7, 0x7c, 0x4d, 0x07, 0x16, 0x49, 0x1d, 0xa5, 0x4b, 0xcd, 0xf1, 0x67, 0xb4, 0x7a, 0x61, 0xa0, 0x35, 0x27, 0xc9, 0x6e, 0x4b, 0x42, 0xbf, 0xdc, 0x98, 0x5b, 0x17, 0x87, 0x81, 0xb6, 0x92, 0x0f, 0x60, 0xf1, 0x1c, 0xd5, 0xfa, 0x76, 0x66, 0x3f, 0x56, 0xf3, 0x19, 0xf4, 0x50, 0xcc, 0x2a, 0x7f, 0x13, 0xbc, 0xce, 0x59, 0xe4, 0x1c, 0xb6, 0x66 } -, - /* Signature */ - 129, - { 0x07, 0x67, 0x3f, 0xa6, 0x83, 0xe0, 0x98, 0xbf, 0xa2, 0xb9, 0x55, 0xb6, 0xc3, 0x4e, 0x9c, 0xe8, 0xec, 0xcc, 0x5a, 0xb0, 0xab, 0x4c, 0x2c, 0xf7, 0x9b, 0x9b, 0xe1, 0xe6, 0x64, 0x42, 0x5a, 0x7c, 0x17, 0x7a, 0x47, 0xd5, 0x32, 0x0c, 0xd5, 0x70, 0x86, 0xf9, 0x51, 0x89, 0x18, 0x45, 0x09, 0x4b, 0x1f, 0xbb, 0xc9, 0xde, 0xe5, 0xf9, 0xb5, 0x56, 0xdf, 0x3e, 0x61, 0xe7, 0xe6, 0x69, 0x73, 0xd6, 0x3e, 0x69, 0xc9, 0xda, 0x17, 0x29, 0x6f, 0xe6, 0x15, 0xd6, 0x33, 0xc8, 0x62, 0x18, 0xdc, 0xa3, 0x99, 0x25, 0x8c, 0x04, 0xf8, 0x05, 0xbd, 0x04, 0xd9, 0xdc, 0x97, 0xa2, 0x9f, 0x39, 0xd6, 0x06, 0xff, 0x8e, 0x9c, 0x0a, 0x13, 0x71, 0xaa, 0xee, 0xc0, 0x03, 0xea, 0x27, 0x48, 0x95, 0xff, 0x7b, 0xa1, 0x50, 0x2b, 0x28, 0xf8, 0x17, 0x63, 0x02, 0xc2, 0x4e, 0xec, 0xe5, 0xb5, 0x28, 0xd6, 0x71, 0x00 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.10", - /* Message to be signed */ - 146, - { 0x08, 0x4e, 0xc2, 0x87, 0x86, 0x5e, 0x8f, 0xe6, 0x88, 0x04, 0x72, 0x37, 0x20, 0x97, 0xad, 0x5b, 0x96, 0x4c, 0x40, 0xa9, 0x35, 0xee, 0xd1, 0xbe, 0xa5, 0x1a, 0xb1, 0xb5, 0xbc, 0x75, 0xc8, 0x46, 0xbb, 0xcb, 0xd9, 0x54, 0x88, 0xe9, 0xec, 0xc3, 0x63, 0xcf, 0x07, 0x3a, 0x90, 0xb2, 0x0b, 0xe8, 0xb6, 0x79, 0x36, 0x46, 0x22, 0xf3, 0x45, 0xe1, 0x22, 0xd0, 0x56, 0x6a, 0xcd, 0x34, 0xa4, 0xae, 0x11, 0x24, 0x45, 0x25, 0xa3, 0x8f, 0x47, 0xdc, 0x1f, 0x92, 0xb1, 0x7f, 0x89, 0xed, 0xe0, 0x6d, 0x83, 0x6b, 0x44, 0x26, 0xec, 0xbb, 0xea, 0x79, 0x33, 0xac, 0x0e, 0x84, 0x7e, 0x55, 0x10, 0x33, 0xb5, 0xf7, 0xea, 0x4e, 0xaf, 0x1f, 0x63, 0xf3, 0x47, 0x9d, 0xb7, 0xea, 0xf8, 0x02, 0xc9, 0x96, 0xde, 0x92, 0x33, 0x86, 0xcd, 0x15, 0xb1, 0x22, 0xde, 0x5a, 0x23, 0x98, 0xd3, 0xf3, 0x97, 0x02, 0xc3, 0xe9, 0x06, 0x5c, 0x32, 0x73, 0x95, 0xb9, 0xa9, 0x95, 0xfa, 0x25, 0x4d, 0xe9, 0xc7, 0xad, 0xb4, 0x51 } -, - /* Signature */ - 129, - { 0x13, 0xa7, 0xf0, 0x04, 0xc0, 0xa8, 0x8d, 0x51, 0x3e, 0x2f, 0x1a, 0xae, 0xab, 0x41, 0x7f, 0xa0, 0xb2, 0x70, 0x2f, 0xb9, 0x3b, 0x82, 0x87, 0x20, 0xcc, 0xd8, 0x00, 0xcb, 0xb0, 0xaf, 0x5a, 0x19, 0x65, 0x72, 0x5b, 0x6e, 0xe0, 0x58, 0x71, 0x17, 0xcb, 0xcb, 0x81, 0xa4, 0x63, 0x18, 0x52, 0x1c, 0x95, 0x0d, 0xd8, 0x46, 0x9b, 0xd8, 0x55, 0x73, 0xf5, 0xd2, 0x9d, 0x86, 0x53, 0x03, 0xeb, 0xac, 0x45, 0xc7, 0xf6, 0x03, 0x1c, 0x6f, 0x93, 0x78, 0xeb, 0x12, 0xb4, 0x2f, 0x05, 0x09, 0x44, 0x31, 0x6f, 0x0b, 0x93, 0xdb, 0x89, 0x9b, 0xec, 0x93, 0x7d, 0x5d, 0x0f, 0x58, 0xed, 0x40, 0x70, 0x04, 0x01, 0xcd, 0x32, 0x65, 0xa6, 0xa4, 0x4b, 0x09, 0xbb, 0x11, 0xa4, 0x38, 0xee, 0xa0, 0x77, 0x15, 0xef, 0xe4, 0x2d, 0xe4, 0xe8, 0x80, 0x8f, 0x88, 0x24, 0x02, 0x61, 0x14, 0x8e, 0x8d, 0xe2, 0x93, 0xed } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.11", - /* Message to be signed */ - 154, - { 0x61, 0x07, 0x00, 0x00, 0x7c, 0x3c, 0x6c, 0xb0, 0x96, 0xc9, 0x94, 0xd6, 0x5d, 0x95, 0xc9, 0xb9, 0xa1, 0x47, 0xc3, 0x46, 0x14, 0xcd, 0x72, 0x2f, 0x29, 0xeb, 0xc5, 0xe0, 0x93, 0x78, 0x6f, 0x79, 0x09, 0x48, 0x02, 0x14, 0x1a, 0x31, 0x08, 0xd2, 0xec, 0x8a, 0x87, 0x4c, 0x53, 0x18, 0x7e, 0xb0, 0xd6, 0xee, 0x2a, 0x85, 0x91, 0x38, 0xcf, 0xbc, 0x29, 0x22, 0x15, 0x06, 0xd0, 0xbd, 0x89, 0xb0, 0xf3, 0xdb, 0xef, 0x50, 0x6b, 0xd1, 0xba, 0x40, 0x36, 0xb0, 0xf1, 0xec, 0x00, 0x73, 0x32, 0x70, 0x60, 0x75, 0x2b, 0x42, 0x8c, 0xfa, 0x12, 0xdb, 0x28, 0x0c, 0x53, 0xaa, 0xe5, 0xf3, 0xe3, 0x57, 0x0e, 0x91, 0x8c, 0xb0, 0x9b, 0x90, 0xe9, 0x84, 0x7f, 0x1f, 0x5c, 0xa4, 0x48, 0x7a, 0x6b, 0xf3, 0xed, 0xad, 0x42, 0x5f, 0x78, 0x40, 0x7e, 0xcb, 0xe3, 0xf9, 0xbc, 0x7c, 0xab, 0x00, 0x75, 0x66, 0x58, 0x79, 0x43, 0x1c, 0x6c, 0xc3, 0x9e, 0x0c, 0x7e, 0x67, 0x00, 0x60, 0x67, 0x41, 0x8b, 0xee, 0x8d, 0x0d, 0xb5, 0xe7, 0xdb, 0xe1, 0x2d, 0xa7, 0x16, 0xca } -, - /* Signature */ - 129, - { 0x1e, 0xbe, 0xaf, 0x85, 0xd1, 0x8f, 0x37, 0x84, 0x0e, 0x8a, 0x3e, 0xaf, 0x07, 0xd6, 0x9f, 0x52, 0x4d, 0x88, 0x3f, 0xa4, 0x2f, 0x29, 0x1e, 0x20, 0x07, 0xdb, 0x59, 0x5a, 0xd6, 0x93, 0x0e, 0x8d, 0x5a, 0x75, 0xb4, 0x0b, 0xb9, 0x5b, 0xeb, 0x72, 0xd7, 0xce, 0xd0, 0x38, 0x17, 0x97, 0x47, 0xe9, 0x66, 0x1d, 0x08, 0x38, 0x40, 0xd5, 0x87, 0xdc, 0xdf, 0x21, 0xc3, 0xad, 0xc7, 0xd4, 0x7a, 0x01, 0xf6, 0xec, 0xa9, 0xc7, 0xbf, 0x9e, 0x2a, 0x98, 0x87, 0x75, 0x1b, 0x36, 0xd1, 0xab, 0xaf, 0x25, 0xa3, 0x13, 0xfc, 0x29, 0xd7, 0xf8, 0x34, 0xd2, 0xa2, 0x48, 0x29, 0x85, 0x57, 0x5e, 0x1b, 0xe2, 0x4b, 0xc4, 0xef, 0x43, 0xa5, 0x7e, 0xf4, 0xb0, 0xa6, 0x83, 0x69, 0x93, 0xe1, 0x1b, 0x67, 0x07, 0x85, 0x04, 0xe3, 0xb7, 0x9c, 0x72, 0x17, 0x75, 0xf5, 0xb9, 0x9b, 0xfa, 0xcc, 0xc4, 0x8a, 0x8c, 0x34 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.12", - /* Message to be signed */ - 6, - { 0xda, 0x31, 0xf9, 0xbe, 0x26, 0x09 } -, - /* Signature */ - 129, - { 0x1d, 0x2b, 0xba, 0xfc, 0xa4, 0x1c, 0xa0, 0x6c, 0x4b, 0x81, 0x1c, 0xb9, 0xd8, 0x36, 0x96, 0x87, 0x16, 0x6d, 0x14, 0xd9, 0xf9, 0x2c, 0x5b, 0x98, 0xfc, 0x7c, 0x77, 0x2f, 0x2d, 0x75, 0xd3, 0x5a, 0x5f, 0x9a, 0xcc, 0xe5, 0x9b, 0x99, 0xef, 0xb2, 0xdc, 0xb9, 0x7d, 0xcc, 0xbb, 0xc8, 0x6d, 0x7f, 0xd6, 0xb4, 0xae, 0x8b, 0xea, 0xb1, 0xe9, 0x81, 0xe6, 0xc7, 0x74, 0x5a, 0x1b, 0xfb, 0x4c, 0x1f, 0x44, 0xa4, 0x72, 0xb2, 0xad, 0x07, 0xd4, 0x1c, 0xc1, 0x75, 0x15, 0xb7, 0xb1, 0x4a, 0x49, 0x99, 0x0b, 0x24, 0x34, 0x42, 0xff, 0x2c, 0x8f, 0xe5, 0x05, 0xb1, 0x84, 0x9f, 0xa9, 0x91, 0xca, 0xcf, 0x68, 0x09, 0xa2, 0x0e, 0x55, 0xf2, 0xaf, 0x77, 0x98, 0x87, 0x0d, 0x65, 0x77, 0x6f, 0x1f, 0x9e, 0xe4, 0x87, 0x97, 0xe3, 0x13, 0xaa, 0x66, 0xa4, 0x7e, 0x69, 0x5f, 0x3e, 0x73, 0x1b, 0x2c, 0x7f, 0x30 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.13", - /* Message to be signed */ - 9, - { 0xf9, 0x8b, 0xe5, 0x2d, 0x9a, 0x5e, 0x55, 0xad, 0x92 } -, - /* Signature */ - 129, - { 0x29, 0x2e, 0xa3, 0x4d, 0x3e, 0x61, 0x18, 0xbf, 0x8c, 0xd0, 0x54, 0xe2, 0x15, 0x17, 0xe8, 0x63, 0xce, 0x7c, 0xb7, 0xdd, 0x72, 0x73, 0x30, 0x8f, 0x7e, 0xcf, 0xea, 0xcf, 0x9b, 0x45, 0x75, 0x83, 0xd9, 0xb9, 0xb9, 0x7c, 0x54, 0xab, 0xf7, 0x4e, 0x5a, 0x5c, 0xa3, 0x6a, 0x87, 0x06, 0x7e, 0x47, 0xd6, 0x7a, 0xa0, 0x47, 0xa1, 0xc2, 0xed, 0x7a, 0x23, 0xd0, 0x55, 0xab, 0x4f, 0x09, 0x4a, 0x83, 0xc4, 0x39, 0xef, 0x8d, 0xd2, 0xd0, 0x20, 0x35, 0xef, 0x05, 0x62, 0xd9, 0x67, 0x31, 0x3d, 0x81, 0x10, 0x2f, 0xc6, 0x8b, 0x74, 0x52, 0x5b, 0xb0, 0xe1, 0xd7, 0x96, 0x2e, 0xb2, 0x75, 0x8e, 0xc5, 0xe5, 0xae, 0xab, 0x65, 0xa9, 0x3d, 0x2e, 0xc8, 0xe6, 0x55, 0x40, 0x5a, 0xf8, 0x8c, 0x00, 0xfa, 0x35, 0xf5, 0x9d, 0xe9, 0xd0, 0xcd, 0x80, 0x45, 0xab, 0xd3, 0x71, 0x73, 0xb9, 0xfc, 0x6c, 0x51, 0xd8 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.14", - /* Message to be signed */ - 215, - { 0xf4, 0x38, 0xef, 0xf8, 0x4c, 0x37, 0x3f, 0xc1, 0x27, 0x44, 0xa3, 0x84, 0x15, 0x82, 0x43, 0xdd, 0x97, 0xf4, 0x36, 0x5e, 0x87, 0xd7, 0x1e, 0x8b, 0x56, 0xb2, 0x97, 0x91, 0xdf, 0x44, 0xad, 0xf3, 0x49, 0xe7, 0x62, 0x60, 0x04, 0xa2, 0xc5, 0x33, 0x35, 0xec, 0x63, 0x52, 0xcc, 0xe2, 0xed, 0xd9, 0x63, 0x94, 0x7f, 0xd2, 0x39, 0x38, 0x93, 0xc2, 0x48, 0xba, 0x1b, 0x84, 0x08, 0x42, 0xca, 0x77, 0x6c, 0x31, 0x72, 0x9f, 0x70, 0x7a, 0xf5, 0x04, 0x11, 0x00, 0x1c, 0x28, 0x7f, 0xba, 0x8f, 0xe7, 0x25, 0x02, 0x32, 0x0c, 0x44, 0x5b, 0xb1, 0x43, 0xfb, 0x7b, 0xf5, 0x39, 0x4e, 0xc1, 0xfb, 0x2c, 0xd5, 0x01, 0x59, 0x24, 0x32, 0x15, 0x40, 0x91, 0xde, 0x5a, 0x23, 0x65, 0xd6, 0x78, 0xf3, 0x57, 0x82, 0xfe, 0xa8, 0xb4, 0x7f, 0x64, 0xd6, 0x09, 0x19, 0xf0, 0xf1, 0xd5, 0xaf, 0xa7, 0x62, 0x6c, 0x40, 0xd1, 0x6c, 0xec, 0x19, 0xbf, 0xe0, 0x25, 0xd1, 0x16, 0xf4, 0x2d, 0x22, 0xe2, 0x0a, 0xdb, 0x56, 0x37, 0x5a, 0xd7, 0x70, 0x89, 0xf9, 0xa9, 0x33, 0x81, 0xfd, 0x78, 0xb7, 0xb1, 0x51, 0x1c, 0xb4, 0xe4, 0x98, 0x4d, 0x2d, 0xdc, 0x7c, 0x9d, 0x75, 0xb3, 0x10, 0xf2, 0x95, 0x42, 0x25, 0x60, 0xd6, 0x6e, 0x36, 0x02, 0xa8, 0x71, 0x20, 0x96, 0x16, 0x13, 0x1a, 0x84, 0x71, 0x43, 0xdd, 0x07, 0x8f, 0x23, 0x58, 0x7d, 0xb5, 0x02, 0xdd, 0xa0, 0x3e, 0x18, 0x60, 0x64, 0x82, 0xdb, 0xbe, 0x01, 0x4e, 0xa0, 0x83, 0xb7, 0xec, 0x16, 0x1b } -, - /* Signature */ - 129, - { 0x0e, 0xaf, 0xeb, 0xf1, 0x5d, 0x84, 0xee, 0x4a, 0x13, 0xf1, 0xa8, 0x2b, 0x84, 0x05, 0x11, 0x86, 0x41, 0xe2, 0x2e, 0x51, 0xda, 0x94, 0xd8, 0x58, 0x87, 0xfc, 0x4a, 0x3b, 0x11, 0xf0, 0x32, 0x49, 0xcc, 0x39, 0xa0, 0x37, 0x45, 0x01, 0x07, 0x1c, 0x7e, 0xef, 0x4a, 0xba, 0xa1, 0x14, 0x08, 0xd0, 0x2f, 0xae, 0x17, 0x86, 0xde, 0xa3, 0x75, 0x88, 0x47, 0x9c, 0x90, 0xd6, 0x27, 0x69, 0x85, 0x91, 0xc3, 0xba, 0xe1, 0xfe, 0xfd, 0x6e, 0x8c, 0x40, 0xe3, 0xff, 0x4b, 0x9f, 0x60, 0x61, 0xe0, 0x6c, 0x12, 0xfd, 0xd2, 0x1c, 0x7f, 0x45, 0xdd, 0xc5, 0xb7, 0x8d, 0x1c, 0xbc, 0x41, 0xc1, 0x57, 0x06, 0xfa, 0x20, 0xba, 0x92, 0xf9, 0x9f, 0x58, 0xb2, 0x2b, 0xe2, 0x76, 0x75, 0xbe, 0xe0, 0x81, 0xa0, 0x60, 0x67, 0xee, 0xd1, 0x58, 0xf8, 0xe2, 0x0b, 0xf0, 0x4a, 0x6e, 0x96, 0x8f, 0x71, 0x9a, 0x32, 0x34 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.15", - /* Message to be signed */ - 89, - { 0xfa, 0x1c, 0x0f, 0x7b, 0x10, 0x15, 0xa8, 0x95, 0xb1, 0xa5, 0x65, 0xf3, 0x29, 0x96, 0xb2, 0xb8, 0xcc, 0xfd, 0x86, 0x4b, 0x95, 0x54, 0x4d, 0xbb, 0x9c, 0xf4, 0xf6, 0xe1, 0xa8, 0x41, 0xde, 0x92, 0x06, 0xd5, 0x57, 0x26, 0xfd, 0xf7, 0xee, 0xa2, 0xbf, 0x33, 0x6a, 0x82, 0x9f, 0xd2, 0xbc, 0x12, 0x09, 0xbd, 0x21, 0x5a, 0xab, 0xb9, 0x77, 0xd2, 0x3a, 0x08, 0x3f, 0x10, 0xae, 0x69, 0xdb, 0x43, 0x7c, 0xa3, 0x2d, 0x7b, 0xfe, 0x4c, 0x88, 0x25, 0xb9, 0x34, 0x88, 0xf0, 0x1a, 0xfd, 0xf7, 0x84, 0x45, 0x8c, 0xef, 0x5c, 0xdd, 0x8d, 0xff, 0xdd, 0x17 } -, - /* Signature */ - 129, - { 0x25, 0xe2, 0x2e, 0x6d, 0xf7, 0xfc, 0x6b, 0xd4, 0xe0, 0xf6, 0x1e, 0xbc, 0x8d, 0xa0, 0x63, 0xfe, 0x47, 0x8a, 0x3e, 0xd7, 0x4d, 0x68, 0xf7, 0x76, 0x34, 0x35, 0xe0, 0xe3, 0x74, 0xf6, 0x52, 0x62, 0xa5, 0xd7, 0x61, 0x2e, 0x86, 0x78, 0x59, 0x61, 0x22, 0xc0, 0xe5, 0xb8, 0xfa, 0x0c, 0x0b, 0x12, 0x81, 0x2b, 0xa9, 0x65, 0x3a, 0x0f, 0x27, 0x38, 0x83, 0xc6, 0x26, 0x4c, 0x6d, 0xfb, 0x74, 0xbb, 0x34, 0x40, 0x5d, 0x2a, 0x04, 0x30, 0x43, 0xfb, 0xb0, 0xab, 0xf2, 0xaf, 0x7a, 0x12, 0x3d, 0x2d, 0xdb, 0xf1, 0x69, 0x92, 0xe0, 0x9b, 0xaa, 0x37, 0xd7, 0x31, 0xd7, 0x2e, 0xf1, 0x99, 0x62, 0x65, 0x8a, 0x8f, 0xb0, 0x10, 0xa1, 0x0f, 0x7d, 0x55, 0x62, 0xad, 0x54, 0x33, 0x47, 0x90, 0x01, 0xaf, 0x36, 0xd3, 0xd3, 0x26, 0xea, 0xdb, 0x2e, 0x9a, 0xbe, 0xc7, 0xb5, 0x55, 0x70, 0x9d, 0x5d, 0x47, 0xe9 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.16", - /* Message to be signed */ - 223, - { 0x82, 0x8e, 0xbe, 0x2f, 0x51, 0xe5, 0x88, 0x29, 0xcf, 0xa6, 0x15, 0x26, 0xdd, 0xed, 0x7e, 0x1f, 0x1b, 0xa3, 0x11, 0xdb, 0xf1, 0x06, 0x4c, 0x08, 0xac, 0x0b, 0xb5, 0xd6, 0x71, 0x6e, 0xab, 0x29, 0x8a, 0x23, 0xd6, 0x3b, 0x79, 0x3f, 0xfd, 0x9d, 0x9c, 0xea, 0x60, 0x22, 0x95, 0x98, 0x82, 0x3f, 0x28, 0x2f, 0x10, 0x7b, 0x6e, 0xe8, 0x8a, 0x53, 0xfd, 0x93, 0xe7, 0xdd, 0xd4, 0x8a, 0x73, 0x1a, 0x21, 0x09, 0xff, 0xed, 0xc8, 0x9a, 0xeb, 0xa2, 0xc0, 0xf1, 0x6b, 0xcb, 0x14, 0x0a, 0x0a, 0x89, 0xdc, 0x57, 0xee, 0x8b, 0x5d, 0x00, 0x0a, 0x21, 0x42, 0x17, 0x5b, 0xc7, 0x07, 0xbb, 0x40, 0x9a, 0xae, 0x3a, 0x03, 0x9c, 0x66, 0x3d, 0x01, 0x9a, 0x0b, 0xd9, 0x13, 0xc1, 0x3f, 0x7f, 0xf6, 0xf6, 0xb9, 0x1e, 0x90, 0x5a, 0x58, 0x9d, 0x38, 0xb1, 0x50, 0x48, 0x5d, 0x89, 0x09, 0x2d, 0x18, 0xa3, 0xa7, 0x62, 0x25, 0x27, 0x65, 0x52, 0x5d, 0x98, 0x45, 0x66, 0x42, 0x5b, 0x05, 0x77, 0x0d, 0xe9, 0xa8, 0xbe, 0xf4, 0x43, 0xff, 0x5f, 0xc1, 0x48, 0x33, 0xaf, 0xa4, 0xcc, 0xec, 0xe5, 0x42, 0xd4, 0xf2, 0xce, 0xf1, 0xe7, 0x96, 0xf5, 0x9f, 0xb3, 0xa4, 0xbf, 0x37, 0xcb, 0x67, 0x7a, 0xe4, 0x22, 0x36, 0x66, 0xc8, 0x2b, 0x31, 0xa1, 0x6a, 0x6c, 0xd7, 0x01, 0xa0, 0x49, 0x3c, 0xd9, 0x96, 0x86, 0x6c, 0x84, 0xbf, 0xcd, 0xdf, 0x85, 0x2b, 0x19, 0xff, 0xc8, 0x9e, 0x93, 0x61, 0x79, 0xfc, 0xe8, 0xb9, 0x9e, 0x72, 0xfd, 0x4a, 0xfc, 0x28, 0xb5, 0x11, 0x73, 0xaf, 0xbb, 0x25, 0xc4, 0xc7 } -, - /* Signature */ - 129, - { 0x16, 0x17, 0x55, 0x9e, 0x43, 0xba, 0x18, 0x2e, 0x95, 0x34, 0x86, 0x43, 0x6f, 0x15, 0xb6, 0x02, 0x83, 0x1e, 0x42, 0xee, 0xd2, 0x03, 0xc2, 0x69, 0xf6, 0x53, 0xbf, 0x63, 0x9c, 0x2b, 0x76, 0x0b, 0x0d, 0x49, 0xfb, 0x53, 0x2c, 0xa8, 0xad, 0x01, 0xe7, 0xb4, 0xaf, 0x83, 0x72, 0x92, 0x55, 0xdb, 0x55, 0x9b, 0xcf, 0x55, 0xfa, 0xb3, 0x65, 0x9c, 0xeb, 0xec, 0xd5, 0x37, 0x69, 0x4f, 0xef, 0x2d, 0xef, 0x9c, 0x9e, 0x76, 0x2d, 0x05, 0xd2, 0x32, 0x1e, 0xd6, 0x88, 0xc3, 0xf7, 0xe2, 0xc0, 0x57, 0x33, 0xab, 0x4f, 0xa8, 0x1b, 0x08, 0xcf, 0x79, 0xfa, 0xcb, 0x75, 0xc3, 0x20, 0x0b, 0x7a, 0x48, 0x3a, 0xf0, 0x8c, 0xb1, 0x83, 0xc5, 0x09, 0x27, 0xcc, 0x61, 0x69, 0xe4, 0x32, 0xf7, 0xfc, 0x9b, 0x11, 0x78, 0x0d, 0xbf, 0x4d, 0x3b, 0x72, 0xd2, 0xd0, 0xb8, 0x55, 0x93, 0xd8, 0xb5, 0xb0, 0x18, 0x2a } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.17", - /* Message to be signed */ - 47, - { 0xbb, 0x4a, 0x6e, 0xcc, 0xbd, 0xd6, 0xde, 0x0a, 0xc5, 0xc3, 0xb7, 0xf9, 0x97, 0x98, 0x10, 0x4a, 0x58, 0x69, 0xc1, 0xcf, 0x1a, 0x1f, 0xac, 0x7f, 0x85, 0x9f, 0xe9, 0x51, 0x49, 0x29, 0x7e, 0xb7, 0x79, 0x11, 0x00, 0x59, 0xe2, 0x69, 0xf1, 0x27, 0x56, 0xf0, 0x8a, 0x54, 0x8b, 0x66, 0xaf } -, - /* Signature */ - 129, - { 0x27, 0x7b, 0xae, 0x63, 0xe6, 0xe3, 0x25, 0x3a, 0x0e, 0x20, 0x4f, 0x4e, 0x6c, 0x9f, 0xe8, 0x4b, 0x04, 0x0b, 0x86, 0x4f, 0x21, 0xed, 0xd4, 0x42, 0x6d, 0x82, 0xbe, 0x8f, 0x1b, 0x91, 0x1b, 0x0b, 0xd2, 0x81, 0xcf, 0x11, 0x49, 0x53, 0xd4, 0x02, 0x09, 0xda, 0x2e, 0x9a, 0xae, 0x13, 0x3b, 0xcd, 0x18, 0x55, 0xef, 0x0a, 0x99, 0x69, 0x3a, 0x94, 0x43, 0xc9, 0x3f, 0x6d, 0xd2, 0x75, 0xf0, 0x58, 0xfd, 0x1b, 0xb6, 0x95, 0x32, 0xb6, 0x4a, 0x1d, 0xd7, 0xe1, 0xd0, 0xe7, 0x80, 0xd7, 0x52, 0x04, 0xfa, 0x8c, 0x61, 0xc2, 0xeb, 0x5d, 0xe8, 0x82, 0x72, 0xcb, 0x93, 0xae, 0xf0, 0x80, 0xf7, 0x02, 0xbb, 0x78, 0x88, 0x94, 0x25, 0xa5, 0xf1, 0x66, 0xf6, 0x3b, 0x5b, 0x1a, 0x31, 0xec, 0x5c, 0x1c, 0x26, 0xa5, 0x99, 0xfa, 0xfe, 0x58, 0x77, 0x42, 0x98, 0xb9, 0x7d, 0xb3, 0x14, 0xfc, 0x81, 0xd0, 0x92 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.18", - /* Message to be signed */ - 256, - { 0xf1, 0xd1, 0x11, 0xad, 0x08, 0xe0, 0x38, 0xca, 0x3a, 0xb4, 0xe5, 0x2e, 0x5e, 0xab, 0x71, 0x01, 0x87, 0x6c, 0xa9, 0xbe, 0x62, 0x6a, 0x13, 0x59, 0x17, 0xf4, 0x5b, 0x1f, 0x9d, 0x1b, 0x32, 0xef, 0xe4, 0xff, 0x86, 0x7a, 0xb8, 0xa3, 0x05, 0xf9, 0x49, 0xc0, 0x04, 0x8b, 0x25, 0xf5, 0x46, 0x22, 0x61, 0xb1, 0xa3, 0x49, 0x3b, 0x81, 0x90, 0x21, 0x0f, 0x5c, 0xfa, 0x6b, 0xf7, 0xe5, 0xc3, 0x00, 0x54, 0x98, 0xde, 0xec, 0xc1, 0xe1, 0xc5, 0x04, 0xf3, 0xa3, 0x49, 0x98, 0xbe, 0x6a, 0xd6, 0xac, 0x00, 0x40, 0x51, 0xc4, 0xe0, 0xa3, 0xdb, 0x2c, 0x22, 0xeb, 0x5e, 0x14, 0x16, 0x55, 0x28, 0xdf, 0x78, 0x12, 0xa2, 0x0d, 0x5c, 0x7f, 0x05, 0xb9, 0x40, 0xca, 0x13, 0xe9, 0x38, 0x3a, 0xe0, 0x0d, 0x6c, 0xd4, 0xd0, 0xf4, 0xae, 0x3d, 0xad, 0x04, 0x7a, 0xb9, 0xc4, 0x17, 0x8d, 0xb6, 0x6d, 0x3b, 0x80, 0x96, 0x0c, 0xaf, 0x0a, 0x92, 0x4d, 0xc9, 0x4e, 0xb8, 0xe0, 0x77, 0x09, 0xbc, 0xdb, 0x34, 0x9e, 0x90, 0xfa, 0x2e, 0x10, 0xc5, 0xd5, 0x26, 0xd2, 0x21, 0x9c, 0xa7, 0x6f, 0x88, 0x01, 0xfd, 0xc6, 0x61, 0xbd, 0xca, 0x6a, 0x93, 0xda, 0x48, 0xd0, 0x45, 0xac, 0x37, 0x51, 0x34, 0xcc, 0xd6, 0xff, 0x7c, 0x52, 0xfd, 0x15, 0xc7, 0xcd, 0x3d, 0x1f, 0x31, 0xaf, 0xe5, 0x04, 0xbc, 0xe7, 0xc0, 0x33, 0x3a, 0x89, 0x79, 0xe3, 0xce, 0xcc, 0x53, 0xc4, 0xea, 0xdd, 0x7d, 0x95, 0xd4, 0x6f, 0xa3, 0xb2, 0xa9, 0xf0, 0x06, 0x10, 0x0d, 0x6b, 0xfc, 0x0e, 0xd5, 0xee, 0x77, 0x69, 0x4f, 0xf1, 0xa2, 0x4e, 0x16, 0xa5, 0x44, 0xde, 0x71, 0x46, 0x52, 0x90, 0xdd, 0xdd, 0x18, 0x9f, 0x01, 0x67, 0x03, 0x59, 0xf8, 0xc6, 0xb5, 0xd4, 0xc6, 0xb6, 0xb9, 0xf5, 0xc5, 0x7a, 0xa5, 0xa3, 0x8f, 0x07, 0x99 } -, - /* Signature */ - 129, - { 0x0d, 0xe9, 0x42, 0x31, 0xc0, 0x6a, 0xb1, 0x87, 0xb0, 0x0d, 0xda, 0x2b, 0x34, 0xe2, 0xb4, 0xcb, 0xac, 0x41, 0xf6, 0x08, 0xc4, 0x8c, 0x72, 0x27, 0xa6, 0x28, 0x2a, 0x17, 0x9e, 0x58, 0xc3, 0x2e, 0xf5, 0xdd, 0xc9, 0x76, 0x4f, 0xa2, 0xdf, 0xc3, 0xfb, 0xe0, 0x21, 0xdd, 0xb4, 0x81, 0x56, 0xa6, 0x37, 0x3c, 0xd6, 0x9b, 0x85, 0xd3, 0x64, 0xd8, 0x9b, 0x5a, 0x32, 0xfa, 0xbb, 0x2d, 0x46, 0x5d, 0x05, 0x62, 0xd4, 0xa1, 0xdd, 0x6f, 0xca, 0x64, 0x78, 0x0b, 0x06, 0x2a, 0x94, 0x71, 0x24, 0xa7, 0xfc, 0x0b, 0x82, 0xe4, 0xfe, 0xd1, 0x2b, 0x8b, 0x4f, 0x72, 0x6a, 0x0c, 0x85, 0x39, 0xc6, 0xcd, 0xe2, 0x1a, 0xf6, 0x55, 0xac, 0xc8, 0xde, 0x1e, 0x7b, 0xa9, 0xd6, 0x7b, 0x87, 0xb8, 0xe7, 0x77, 0xd4, 0x8a, 0xcd, 0x86, 0x8a, 0x80, 0xdb, 0x15, 0x31, 0x4f, 0x35, 0x55, 0x60, 0x10, 0x35, 0x77, 0xeb } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.19", - /* Message to be signed */ - 193, - { 0x9c, 0x4e, 0xcc, 0x4b, 0x24, 0x44, 0xa4, 0x01, 0xbf, 0xb6, 0xf4, 0xb7, 0x24, 0x49, 0x23, 0xa5, 0xad, 0x33, 0x86, 0xc3, 0xb8, 0x41, 0x67, 0x8c, 0xf5, 0xe6, 0x44, 0x7b, 0x8a, 0x3a, 0x07, 0x59, 0x86, 0xc3, 0x3f, 0xd0, 0x01, 0xb8, 0x43, 0x72, 0x4d, 0xdd, 0xc4, 0x21, 0x2f, 0xf4, 0x5a, 0xb3, 0xfe, 0xca, 0xa9, 0x0a, 0x16, 0xf6, 0xb5, 0x59, 0x2c, 0x51, 0x5c, 0xc4, 0xee, 0x54, 0xae, 0xa4, 0x59, 0x34, 0x32, 0x16, 0x70, 0x96, 0x67, 0x8f, 0x93, 0x41, 0x59, 0x85, 0x6d, 0x14, 0xc4, 0x32, 0xe7, 0xd6, 0xd2, 0x8d, 0x71, 0xb2, 0x68, 0x7f, 0x54, 0xed, 0x71, 0x9e, 0x5c, 0x20, 0x11, 0x00, 0x68, 0x8e, 0x85, 0xf2, 0x0e, 0x79, 0xa9, 0xee, 0x8a, 0xa4, 0xb6, 0x14, 0x31, 0x34, 0x3d, 0x1e, 0x99, 0xc2, 0x14, 0x35, 0xc6, 0x1e, 0x8b, 0xc1, 0x04, 0xf2, 0xba, 0xd5, 0x29, 0x60, 0xfc, 0xee, 0xe6, 0x7b, 0x85, 0x03, 0x3d, 0x3a, 0xee, 0xfa, 0xe4, 0x13, 0xce, 0x29, 0x70, 0x1e, 0xff, 0xcb, 0x02, 0xb4, 0x84, 0xa0, 0x31, 0xe2, 0xf3, 0x19, 0xef, 0x7e, 0xd0, 0xd6, 0xe6, 0x9b, 0x29, 0x16, 0xee, 0xb3, 0x8c, 0x4f, 0x19, 0x42, 0xba, 0x23, 0xc2, 0xa1, 0x79, 0x0c, 0xe3, 0xfe, 0x09, 0xd0, 0x1b, 0x9b, 0x9f, 0xe6, 0xdb, 0xa8, 0xdc, 0x21, 0x0e, 0xaa, 0x8f, 0xe7, 0x3c, 0xa7, 0x6f, 0x1b, 0x5b } -, - /* Signature */ - 129, - { 0x18, 0x53, 0xc2, 0x1a, 0x4a, 0x18, 0x54, 0x7d, 0x86, 0x7b, 0x3c, 0xed, 0x02, 0xda, 0xf0, 0xb2, 0x2c, 0xe8, 0xd4, 0xd5, 0xaf, 0x2b, 0x8e, 0xf5, 0xf7, 0xc8, 0xfd, 0x38, 0x5b, 0x81, 0x53, 0x64, 0x8d, 0x81, 0x83, 0x1d, 0x6a, 0xcb, 0x5d, 0xa8, 0x30, 0xf6, 0x77, 0x40, 0x25, 0x9f, 0xfb, 0x33, 0x9f, 0x7b, 0x90, 0xaf, 0x48, 0x83, 0x81, 0x9c, 0x47, 0x15, 0xe0, 0x8c, 0x28, 0x99, 0xd4, 0xc7, 0x24, 0x6e, 0x07, 0xe5, 0xbc, 0x6e, 0xf3, 0xcf, 0xd9, 0xa0, 0x4d, 0xa0, 0x6c, 0x43, 0xe9, 0x5c, 0x77, 0x2b, 0xe2, 0x21, 0xcf, 0xaa, 0xf6, 0x95, 0x4e, 0xf9, 0x33, 0x31, 0xe5, 0x95, 0xff, 0x48, 0x92, 0x1f, 0x05, 0xfc, 0xe8, 0xfa, 0x0d, 0x42, 0x9e, 0x0c, 0x99, 0x56, 0x2a, 0x9c, 0x2f, 0x68, 0xeb, 0xf3, 0x2c, 0xf1, 0xc6, 0xc6, 0xbb, 0x8b, 0x27, 0x4a, 0x2e, 0x42, 0xd6, 0x71, 0x59, 0x12, 0xff } - -} -, -{ - "PKCS#1 v1.5 Signature Example 12.20", - /* Message to be signed */ - 146, - { 0xc3, 0x81, 0xe6, 0x03, 0x99, 0x86, 0x51, 0x66, 0xd2, 0xba, 0xa0, 0x31, 0x45, 0x26, 0x83, 0x34, 0x18, 0x40, 0x39, 0xe0, 0x53, 0x35, 0xa3, 0x00, 0xc2, 0x80, 0x4e, 0x2b, 0xfe, 0xf5, 0xa7, 0xd1, 0x4c, 0x44, 0x3d, 0x65, 0x38, 0xe1, 0x6b, 0xdf, 0x9d, 0xa7, 0xad, 0x1f, 0xea, 0x63, 0x4e, 0xbf, 0xe1, 0x13, 0xbc, 0x82, 0x1e, 0x79, 0xa4, 0x49, 0xb2, 0xeb, 0x2f, 0x57, 0xc2, 0x1f, 0xba, 0x35, 0xff, 0xcc, 0x6a, 0x7e, 0x52, 0x55, 0x72, 0x27, 0x7e, 0x8f, 0x55, 0x37, 0xc7, 0xb5, 0xb9, 0x79, 0x4d, 0xef, 0xb3, 0x9a, 0xab, 0x06, 0x07, 0x85, 0xd1, 0x99, 0x40, 0x02, 0xdc, 0xf8, 0x07, 0x01, 0x2e, 0x1d, 0x17, 0x91, 0xda, 0x94, 0x3b, 0x2b, 0x75, 0x9c, 0x36, 0x6b, 0xb4, 0x24, 0xe4, 0x2c, 0x9c, 0x20, 0x43, 0xce, 0x78, 0x8a, 0x25, 0xfb, 0xfe, 0xbb, 0x87, 0xe7, 0x4c, 0xb0, 0x20, 0xb1, 0x1e, 0x8e, 0xaf, 0x16, 0x18, 0x84, 0xd6, 0x67, 0x2b, 0xbe, 0x9c, 0x09, 0xfb, 0xb3, 0xb8, 0xaf, 0xa0, 0x61 } -, - /* Signature */ - 129, - { 0x19, 0x90, 0x69, 0x57, 0x37, 0x53, 0x01, 0x8f, 0x33, 0x59, 0x2a, 0xf1, 0x5c, 0x1d, 0x31, 0x31, 0xbf, 0x5d, 0x8a, 0xc4, 0xf6, 0x4c, 0xf6, 0x14, 0xd3, 0xa0, 0x1b, 0xf3, 0x72, 0xdf, 0x00, 0x2e, 0xb5, 0xb5, 0xfc, 0x8f, 0x82, 0xba, 0x13, 0x7f, 0x83, 0xdc, 0x14, 0x2e, 0xde, 0x38, 0xc5, 0x81, 0x80, 0xe7, 0xbd, 0xa6, 0x9c, 0x4f, 0x1b, 0xc7, 0xbf, 0x96, 0xec, 0xd3, 0xfa, 0x79, 0xbc, 0xcb, 0xdd, 0xb7, 0xd9, 0x2e, 0x4f, 0xd8, 0x64, 0xc5, 0xfa, 0x93, 0x3a, 0x4d, 0xfc, 0x60, 0x0e, 0x10, 0x83, 0x00, 0x8a, 0x38, 0x6f, 0x4d, 0x02, 0x2c, 0x20, 0x24, 0xff, 0x7e, 0x0b, 0x37, 0x22, 0xea, 0xfe, 0xa0, 0x5a, 0x1e, 0x02, 0xc7, 0xa6, 0x3e, 0xeb, 0x40, 0xf4, 0xf4, 0xc4, 0xf6, 0x60, 0xc3, 0x24, 0x72, 0xa0, 0xa7, 0x89, 0x23, 0xe3, 0x86, 0x3a, 0x99, 0x44, 0x5e, 0x7c, 0xfe, 0x27, 0x00, 0x60 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 13: A 1031-bit RSA key pair", -{ - /* Modulus */ - 129, - { 0x70, 0xe9, 0x23, 0xa5, 0xa0, 0xcd, 0x8e, 0xcd, 0xf9, 0x9b, 0xbe, 0x93, 0xd7, 0xd0, 0x28, 0x82, 0x95, 0x5d, 0x91, 0xb6, 0xef, 0xe3, 0xce, 0xc8, 0x6c, 0x93, 0xd2, 0x1c, 0x0a, 0xc3, 0x01, 0xb8, 0x29, 0x3e, 0x51, 0x43, 0x5b, 0x87, 0x8b, 0xc6, 0xb3, 0x4b, 0xed, 0x41, 0x11, 0x59, 0x0e, 0x76, 0x46, 0x76, 0x58, 0x8b, 0x11, 0x6c, 0x2a, 0x36, 0xa4, 0xc7, 0x7e, 0xd9, 0xc9, 0x0a, 0x13, 0xc1, 0x4d, 0x23, 0xe1, 0x99, 0x47, 0x87, 0xfc, 0xdb, 0x8f, 0x5c, 0x97, 0x41, 0x0f, 0xca, 0xd4, 0x04, 0x5b, 0x85, 0x85, 0x70, 0x2c, 0xce, 0x29, 0xda, 0x11, 0xf9, 0x7e, 0x79, 0xa9, 0x7c, 0x2e, 0x5f, 0x6a, 0x5f, 0xc0, 0xbb, 0x8c, 0xe7, 0x6d, 0x15, 0x54, 0xa8, 0xbc, 0x47, 0x96, 0x17, 0x20, 0xd3, 0x64, 0x05, 0x0b, 0xf2, 0x74, 0x19, 0xbf, 0xf1, 0x68, 0xc0, 0xa7, 0xec, 0xc8, 0x73, 0x4c, 0xb5, 0xa5 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 129, - { 0x02, 0x9e, 0x10, 0xf6, 0xbb, 0xb7, 0xd0, 0x2d, 0xeb, 0xb1, 0xa5, 0xd5, 0x19, 0x0d, 0x69, 0x06, 0xff, 0xed, 0xeb, 0x9d, 0x15, 0x4a, 0x0f, 0x66, 0xdb, 0x87, 0x80, 0xb9, 0x28, 0x31, 0xb5, 0x96, 0x3e, 0x94, 0x84, 0x7f, 0x3e, 0x7d, 0xb1, 0xaa, 0x91, 0x48, 0xfb, 0x0e, 0xc5, 0x57, 0x6e, 0x6b, 0xa4, 0xfe, 0x04, 0xd6, 0xf2, 0x78, 0x32, 0xb1, 0x52, 0x18, 0x12, 0xd3, 0x7b, 0x22, 0xd9, 0xea, 0xe2, 0x80, 0x08, 0xe0, 0x92, 0xc6, 0x7e, 0x72, 0x32, 0x42, 0x67, 0xe1, 0xb1, 0xee, 0x45, 0x43, 0x55, 0x74, 0x1d, 0x8d, 0xe1, 0xd2, 0xa6, 0xa0, 0x50, 0x74, 0xbb, 0x1c, 0xe5, 0x81, 0x8b, 0x41, 0xbd, 0x19, 0xdc, 0x6b, 0x58, 0xc8, 0x93, 0x7d, 0x8a, 0xd6, 0x40, 0xd7, 0x04, 0x3f, 0xa1, 0x1f, 0x46, 0x8d, 0x6c, 0xcb, 0xec, 0x4a, 0xde, 0x52, 0x0a, 0x9e, 0x15, 0x9d, 0x60, 0x5d, 0x09, 0x28, 0x29 } -, - /* Prime 1 */ - 65, - { 0x0a, 0xb4, 0x64, 0xfd, 0x6f, 0xe3, 0x3c, 0x45, 0x9a, 0xb2, 0xdc, 0xce, 0x5f, 0x78, 0xa4, 0xd7, 0x4f, 0x92, 0xb9, 0x97, 0xd4, 0xbf, 0x54, 0x2e, 0x2d, 0x85, 0x4e, 0x76, 0x2c, 0x85, 0x86, 0xfc, 0x43, 0x57, 0xcc, 0x58, 0xcb, 0x33, 0x36, 0x33, 0xb0, 0x95, 0xa5, 0xee, 0x04, 0xa0, 0x32, 0x48, 0x53, 0x64, 0xd7, 0x0f, 0x67, 0xa3, 0xaa, 0x04, 0x85, 0x4c, 0x7a, 0x87, 0xa6, 0x9c, 0xf4, 0xc2, 0xad } -, - /* Prime 2 */ - 65, - { 0x0a, 0x8c, 0x3c, 0xc5, 0x04, 0x13, 0x40, 0xf4, 0x32, 0xfe, 0x0a, 0x78, 0x73, 0x13, 0x57, 0x79, 0x16, 0xfe, 0x76, 0xc0, 0x39, 0xf9, 0x71, 0x75, 0x9e, 0xc5, 0x0e, 0xd6, 0xc5, 0xb9, 0xa7, 0x36, 0x9b, 0x68, 0x96, 0x9e, 0xcb, 0x52, 0x59, 0xfe, 0x9c, 0x50, 0xd0, 0x75, 0x9b, 0xf8, 0xb3, 0xaa, 0xc1, 0xa5, 0xd5, 0xb5, 0x28, 0x8d, 0x67, 0x89, 0xe7, 0x18, 0xfa, 0x37, 0xef, 0x42, 0x39, 0x95, 0xd9 } -, - /* Prime exponent 1 */ - 64, - { 0xbb, 0x29, 0x5a, 0x95, 0xd5, 0xb3, 0x3c, 0x1d, 0xc0, 0xb1, 0x8b, 0xf6, 0xc1, 0x4a, 0xa0, 0xd9, 0xf2, 0x6f, 0x72, 0x8b, 0x39, 0x36, 0x0a, 0xa1, 0x59, 0x45, 0x6e, 0x94, 0xc3, 0xd9, 0xe0, 0x48, 0xc9, 0x2a, 0x4f, 0xb6, 0x31, 0x1d, 0x36, 0x92, 0x8c, 0xe5, 0xf4, 0x47, 0xa4, 0x99, 0x4a, 0x8f, 0x47, 0x87, 0xd8, 0xa9, 0x7f, 0x68, 0x11, 0x3e, 0xf9, 0x66, 0x34, 0xf5, 0x90, 0x2a, 0xb7, 0x51 } -, - /* Prime exponent 2 */ - 65, - { 0x02, 0xfa, 0x11, 0x2c, 0x89, 0x39, 0xe5, 0xdb, 0x05, 0x89, 0x2c, 0xeb, 0x51, 0x8e, 0xe3, 0xe1, 0x08, 0xdc, 0x48, 0x27, 0x78, 0x35, 0x2e, 0x10, 0x43, 0xfe, 0xd9, 0x71, 0x43, 0xdc, 0x61, 0x94, 0xc7, 0xc7, 0x7c, 0xba, 0xd4, 0x27, 0x29, 0xbe, 0xf1, 0xde, 0xdc, 0xf6, 0x54, 0x4e, 0x9c, 0x66, 0x54, 0xc0, 0xb8, 0xcf, 0xa7, 0xe2, 0x40, 0x96, 0x6a, 0xe2, 0x61, 0xbb, 0xe7, 0x8a, 0x89, 0x36, 0x01 } -, - /* Coefficient */ - 64, - { 0xa8, 0x8b, 0xf3, 0xff, 0xe9, 0x3f, 0x40, 0x4e, 0x06, 0x82, 0x1c, 0x97, 0x71, 0xea, 0xe6, 0x08, 0x15, 0x71, 0x2d, 0x6f, 0x94, 0x52, 0x71, 0xf6, 0xf3, 0x6f, 0x03, 0x69, 0xd9, 0x66, 0xc9, 0x20, 0xc7, 0xf8, 0xcb, 0xc7, 0x84, 0x25, 0xac, 0xbb, 0x9c, 0xe0, 0xfa, 0x1a, 0x03, 0x22, 0xf5, 0x0c, 0x97, 0xb8, 0x11, 0x5b, 0xd1, 0x51, 0x91, 0xf2, 0x24, 0xb5, 0x68, 0xd1, 0xd6, 0xec, 0xa6, 0xdb } - -} -, -{{ - "PKCS#1 v1.5 Signature Example 13.1", - /* Message to be signed */ - 36, - { 0xb5, 0xe8, 0x6c, 0x8b, 0xa3, 0x98, 0x5a, 0xa5, 0x54, 0x1d, 0xf9, 0x5e, 0x51, 0x3c, 0xff, 0x67, 0x61, 0x2e, 0xaf, 0x2e, 0x16, 0x68, 0x85, 0x76, 0xf7, 0xd6, 0x73, 0xf6, 0xf1, 0x89, 0x1f, 0xb7, 0x5c, 0x9d, 0xd2, 0xcd } -, - /* Signature */ - 129, - { 0x6b, 0x42, 0xfd, 0x51, 0x63, 0x09, 0x19, 0x7f, 0x8a, 0xf3, 0xc7, 0x3e, 0x39, 0x62, 0x4d, 0x8e, 0xba, 0xbe, 0xcd, 0xa3, 0xec, 0x3c, 0xe6, 0x57, 0xb1, 0x11, 0x7f, 0x43, 0xe9, 0x83, 0x87, 0x7a, 0x1b, 0xa1, 0xaa, 0xf8, 0xe9, 0x5c, 0xc3, 0x99, 0x91, 0xd9, 0x2e, 0x35, 0xe2, 0xdb, 0x1e, 0x41, 0x30, 0x90, 0x14, 0x3d, 0x16, 0x46, 0x71, 0x98, 0xb9, 0xb9, 0xa9, 0x90, 0xd7, 0x74, 0xc2, 0x7a, 0xd3, 0xbb, 0xb4, 0x35, 0x2d, 0x3f, 0x07, 0x5d, 0x61, 0x73, 0x2c, 0x6b, 0x58, 0xec, 0x0f, 0x66, 0xe4, 0x92, 0xa3, 0xf7, 0xac, 0x4b, 0xbc, 0xf0, 0x12, 0xed, 0x6b, 0x40, 0x1f, 0xeb, 0x4f, 0xf3, 0x95, 0xcb, 0x8b, 0x21, 0x8a, 0x81, 0xd6, 0x17, 0x31, 0xee, 0xce, 0x37, 0x6f, 0x68, 0x8e, 0x66, 0xae, 0xa6, 0x98, 0xb4, 0xa8, 0x86, 0x2f, 0x58, 0xc9, 0x1d, 0x87, 0x60, 0x85, 0x49, 0x6f, 0xd0, 0x14 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Signature Example 13.2", - /* Message to be signed */ - 253, - { 0x95, 0x46, 0x34, 0x6c, 0xf2, 0x21, 0x94, 0xc7, 0x87, 0x88, 0x81, 0x70, 0xa4, 0x82, 0xf7, 0xf4, 0x92, 0x17, 0xc3, 0x94, 0x0d, 0xc6, 0x21, 0x0c, 0xe3, 0x9e, 0x45, 0x50, 0xa3, 0x9b, 0x45, 0x28, 0x22, 0x41, 0x9a, 0xea, 0xc2, 0x4b, 0xec, 0x19, 0x8b, 0xb3, 0x59, 0xd0, 0x8b, 0xe8, 0x19, 0x6d, 0xf2, 0xe7, 0x57, 0x76, 0x61, 0x96, 0xc9, 0x58, 0xe2, 0xb1, 0x59, 0xc7, 0x4c, 0x1c, 0x30, 0x23, 0xc2, 0xdb, 0xcc, 0xe9, 0xed, 0x5d, 0x0e, 0xf3, 0xfb, 0x51, 0x45, 0x0b, 0xff, 0x64, 0x45, 0xdb, 0x26, 0x5e, 0x60, 0x6e, 0x19, 0x4b, 0xee, 0x06, 0x4c, 0xa5, 0xb3, 0x21, 0xd7, 0xe1, 0x55, 0x14, 0x23, 0x0c, 0x2b, 0x3b, 0x55, 0xd5, 0xda, 0x4c, 0xd0, 0x40, 0x52, 0x2f, 0x7b, 0xb8, 0x6a, 0x96, 0x2b, 0x81, 0x3f, 0x9d, 0xa3, 0x9e, 0x51, 0x38, 0x9b, 0xc6, 0x4f, 0x56, 0xe4, 0x47, 0xb2, 0xa2, 0xbf, 0x81, 0x9d, 0x7a, 0x80, 0x09, 0x4e, 0x2b, 0x8d, 0xe2, 0x7f, 0x10, 0x4b, 0xb6, 0xeb, 0x2f, 0x2f, 0xb4, 0x3a, 0xf1, 0xd0, 0x1e, 0xad, 0xca, 0x23, 0xa1, 0x96, 0xba, 0x12, 0x5b, 0x6a, 0x78, 0x57, 0x99, 0x74, 0xc0, 0xee, 0xc8, 0xa5, 0x49, 0x67, 0x71, 0xf6, 0x7d, 0xbd, 0x50, 0x69, 0xf3, 0x36, 0xe4, 0xef, 0x1f, 0x40, 0x47, 0x42, 0xdf, 0xc6, 0x9c, 0xe3, 0x25, 0xaa, 0x64, 0x9f, 0x8a, 0x63, 0x31, 0xcf, 0x40, 0x35, 0x55, 0xe1, 0x3f, 0x08, 0x10, 0xa7, 0x63, 0x50, 0xa7, 0xe1, 0x8d, 0x29, 0x92, 0xfa, 0xb4, 0x8f, 0x39, 0x7f, 0x3b, 0x93, 0xc5, 0xbd, 0x5a, 0x6f, 0xe1, 0xd2, 0xc4, 0x61, 0x8b, 0xa1, 0xf5, 0x9f, 0x00, 0x2d, 0xc2, 0x57, 0xec, 0x39, 0xee, 0x2f, 0x87, 0x62, 0x98, 0xda, 0x90, 0xf7, 0x44, 0x0a, 0xd4, 0xc6, 0xc9, 0x3f, 0xc1, 0x14, 0xdf, 0x05 } -, - /* Signature */ - 129, - { 0x67, 0xe4, 0x14, 0x99, 0x3f, 0x98, 0x7a, 0x22, 0x64, 0x3d, 0xd0, 0x39, 0xe7, 0xf9, 0xfe, 0x1c, 0xae, 0x74, 0x4a, 0x7a, 0xe4, 0x1d, 0x4c, 0x04, 0x4f, 0xa4, 0xed, 0x8d, 0xc9, 0xe3, 0x40, 0xce, 0xbb, 0x1e, 0x2a, 0xfb, 0x19, 0x8e, 0x84, 0x7a, 0xef, 0x4b, 0xc0, 0x61, 0xfd, 0x80, 0x0d, 0x81, 0xd4, 0xd3, 0x67, 0xb0, 0xfc, 0x2f, 0x73, 0x09, 0x33, 0xc1, 0x9b, 0x88, 0xd4, 0xdd, 0xf0, 0x5e, 0xd9, 0x8a, 0x58, 0x56, 0xde, 0x5e, 0xb4, 0x5b, 0x11, 0x6b, 0x7d, 0x24, 0xfe, 0xb4, 0x56, 0x77, 0x84, 0x9d, 0xab, 0x76, 0xe9, 0xe0, 0xcc, 0xb4, 0x5b, 0xa6, 0xb6, 0xf6, 0x14, 0x1f, 0x37, 0xbb, 0xad, 0x7c, 0x19, 0x1c, 0x37, 0x77, 0x11, 0x3b, 0xc7, 0x38, 0x8e, 0x4e, 0x46, 0x44, 0xec, 0xa9, 0x47, 0x03, 0xa7, 0x2b, 0xdd, 0xcc, 0x6f, 0x50, 0xcf, 0x98, 0x0e, 0x3f, 0x6d, 0xe3, 0x9d, 0x73, 0x12 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.3", - /* Message to be signed */ - 121, - { 0x56, 0x52, 0xb4, 0xc5, 0x75, 0x20, 0xb2, 0x55, 0xfb, 0x96, 0xf7, 0x0a, 0x30, 0xab, 0x92, 0xee, 0xc1, 0x93, 0x99, 0x56, 0xb6, 0xa9, 0x43, 0xc8, 0x3e, 0xd0, 0x98, 0x6e, 0x2e, 0x6e, 0xe4, 0xef, 0xbf, 0x8a, 0x52, 0x28, 0x78, 0x67, 0x28, 0x12, 0x03, 0xa7, 0xa6, 0xd1, 0xd8, 0x86, 0xb7, 0x00, 0x59, 0x52, 0xb4, 0x3b, 0x77, 0x85, 0x44, 0xed, 0xa8, 0x98, 0xe0, 0xdf, 0x2f, 0xa0, 0x6f, 0x68, 0x38, 0x03, 0x18, 0xf1, 0x4a, 0x53, 0xfe, 0x55, 0xd7, 0x2f, 0x8c, 0xfa, 0x6a, 0xf2, 0x1d, 0x93, 0xbb, 0xfc, 0x20, 0xd3, 0x58, 0xc2, 0x08, 0xc5, 0x62, 0xd7, 0x39, 0xbe, 0x00, 0x01, 0xce, 0x07, 0xfd, 0x8c, 0xd2, 0xf4, 0x6c, 0x3b, 0x44, 0xc8, 0x36, 0x51, 0x88, 0x09, 0xb7, 0x6f, 0x3a, 0x70, 0xcf, 0x69, 0x26, 0xbe, 0x06, 0x9c, 0x35, 0x75, 0xd5 } -, - /* Signature */ - 129, - { 0x01, 0x64, 0x11, 0xa2, 0x31, 0xa7, 0x38, 0x94, 0x4b, 0x3e, 0x44, 0xf7, 0x88, 0x5c, 0xf8, 0x1a, 0xca, 0xb7, 0x32, 0xd1, 0x73, 0x6d, 0xe3, 0x4c, 0x56, 0xcf, 0x40, 0xf9, 0x9a, 0x6c, 0xe4, 0x00, 0x70, 0xa2, 0x0a, 0xa9, 0x4c, 0x48, 0x78, 0x44, 0xa9, 0x3c, 0xef, 0x28, 0x7a, 0x58, 0xbc, 0x0e, 0xa1, 0x81, 0xb2, 0xcf, 0x27, 0xd9, 0x14, 0xf2, 0x93, 0xb9, 0x29, 0x77, 0x9d, 0x39, 0x03, 0x6c, 0x4e, 0x5a, 0xae, 0xd3, 0x5e, 0xee, 0x8a, 0x7f, 0xd5, 0x0e, 0xfd, 0x09, 0x6c, 0x91, 0xa8, 0xf7, 0x2c, 0x3c, 0x14, 0x1c, 0x57, 0x6c, 0x8d, 0x10, 0xb6, 0x36, 0xfc, 0x4d, 0xdc, 0x1e, 0x67, 0x14, 0xf1, 0x7f, 0xfc, 0xce, 0x10, 0x6d, 0x22, 0x1b, 0x4f, 0xd7, 0xd6, 0xfe, 0x1e, 0x7c, 0xbd, 0x3f, 0x3b, 0x08, 0xf5, 0x54, 0x6b, 0x44, 0xd1, 0xfe, 0xb7, 0x18, 0xfb, 0xc1, 0x33, 0x70, 0xc7, 0xfa, 0x2c } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.4", - /* Message to be signed */ - 211, - { 0x6d, 0x57, 0xf0, 0x79, 0xa3, 0xe8, 0xad, 0xcb, 0x47, 0xcf, 0x2e, 0x3c, 0xa9, 0x76, 0xe0, 0x3b, 0x09, 0xc7, 0x7d, 0x1d, 0x9d, 0x9d, 0x84, 0x84, 0x35, 0x7e, 0x91, 0x23, 0x09, 0xe8, 0xf4, 0xa8, 0x3c, 0xb5, 0x0c, 0xb6, 0xa7, 0x38, 0x8c, 0x41, 0x4a, 0xec, 0x84, 0x46, 0x71, 0xff, 0x81, 0x06, 0x51, 0xe8, 0x28, 0x10, 0x3a, 0x1f, 0x6a, 0x19, 0x9b, 0xe2, 0x60, 0xf7, 0x46, 0x00, 0x02, 0x8c, 0x6a, 0x7b, 0x7b, 0xb9, 0x41, 0x6c, 0xe7, 0xb6, 0x35, 0x0a, 0x3a, 0x68, 0x05, 0x62, 0x0c, 0xf5, 0xe6, 0xb0, 0x09, 0x5d, 0xfa, 0x22, 0xb5, 0x46, 0x01, 0xf6, 0x19, 0xaf, 0xd1, 0x0d, 0xa2, 0x03, 0xd2, 0x81, 0x90, 0xcf, 0x9b, 0x0d, 0xb5, 0x98, 0x6d, 0x29, 0x30, 0x33, 0x69, 0x1e, 0xc5, 0xbb, 0xba, 0x6d, 0x73, 0xea, 0x32, 0x47, 0x2e, 0xfa, 0x3f, 0x16, 0x0f, 0xd2, 0xb1, 0xb5, 0xe4, 0x3b, 0x0b, 0xfa, 0xd3, 0x16, 0x77, 0x30, 0x5f, 0xef, 0x46, 0x72, 0x44, 0x11, 0x4e, 0xe1, 0x0f, 0x5c, 0xb2, 0xd6, 0x7b, 0x47, 0x83, 0x23, 0xa7, 0x11, 0x04, 0x1e, 0x29, 0x4c, 0x46, 0xb2, 0xed, 0x39, 0xcc, 0xde, 0x07, 0x9c, 0x87, 0x7f, 0xe7, 0x5c, 0xb8, 0x75, 0x14, 0x4a, 0xc3, 0x1e, 0xb0, 0x31, 0xa7, 0x38, 0xa4, 0xce, 0xfe, 0xf9, 0x1f, 0x01, 0x7b, 0xa7, 0x15, 0x23, 0xf5, 0x12, 0x48, 0x18, 0xcf, 0x48, 0xb9, 0x72, 0xbc, 0x47, 0xc8, 0xf2, 0xed, 0x35, 0x6f, 0x5b, 0xf6, 0x91, 0xfd, 0x94, 0x67, 0x0b, 0xb2 } -, - /* Signature */ - 129, - { 0x31, 0x5c, 0xe4, 0x17, 0xd0, 0xbb, 0xd7, 0x3e, 0x7c, 0x43, 0x56, 0x79, 0x7e, 0x73, 0xed, 0x7a, 0xbf, 0xe9, 0xfc, 0xff, 0xf1, 0xa5, 0x34, 0x28, 0x99, 0xa7, 0xd1, 0x1f, 0xb0, 0xd0, 0x54, 0x2b, 0xfc, 0xab, 0x66, 0xde, 0x2e, 0x4e, 0xc0, 0x7c, 0x7d, 0xc2, 0xbe, 0x7d, 0x79, 0x72, 0x90, 0xa3, 0x0d, 0xb8, 0xc4, 0x07, 0xdd, 0x16, 0x37, 0x65, 0x88, 0xa6, 0xdc, 0xc1, 0xa2, 0x07, 0xbf, 0x7f, 0xf3, 0x11, 0x54, 0x0f, 0xaa, 0x9d, 0xd6, 0xf1, 0x9a, 0x73, 0xab, 0x25, 0xa7, 0x49, 0x6e, 0x68, 0x2f, 0xa8, 0xa7, 0x05, 0x40, 0x81, 0x07, 0x6c, 0x1a, 0x02, 0x15, 0x7b, 0xe6, 0x3e, 0x7f, 0x64, 0x5d, 0xe8, 0x2d, 0xf7, 0xc6, 0x15, 0x50, 0x3f, 0xa8, 0x3b, 0x4e, 0xdb, 0xa2, 0x05, 0x81, 0x81, 0x2e, 0x09, 0x7f, 0x65, 0x05, 0x6e, 0xd4, 0x17, 0xf6, 0xf2, 0x48, 0x03, 0x53, 0x0c, 0xf8, 0x18, 0x58 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.5", - /* Message to be signed */ - 241, - { 0xbb, 0x75, 0x44, 0x6f, 0x78, 0x78, 0x23, 0xdd, 0xa2, 0x42, 0x2b, 0x1a, 0xdc, 0x7d, 0x7f, 0xef, 0xd0, 0x6a, 0x6e, 0x9a, 0xf5, 0xc0, 0x49, 0x01, 0xac, 0x5b, 0x99, 0x91, 0x3a, 0xd6, 0x29, 0x8c, 0x9d, 0x1a, 0x33, 0x22, 0xe8, 0xb2, 0x17, 0xe4, 0xe0, 0x99, 0x4c, 0x42, 0x20, 0x42, 0x80, 0xd4, 0x04, 0xd0, 0x1e, 0xce, 0xb5, 0xec, 0x53, 0xfb, 0x86, 0xf7, 0x61, 0xa3, 0x96, 0xb2, 0x3a, 0xe1, 0x9d, 0x46, 0x79, 0x05, 0xa0, 0xfe, 0x80, 0x50, 0xb8, 0x95, 0xd8, 0xba, 0x37, 0x46, 0x68, 0x5c, 0x47, 0x43, 0x9f, 0x90, 0xc3, 0x66, 0x9c, 0x70, 0xff, 0xb8, 0x19, 0x94, 0x56, 0x5c, 0x4d, 0xf2, 0xa3, 0x1e, 0xb2, 0xa4, 0x52, 0xbc, 0x3c, 0xb3, 0x12, 0xb8, 0x14, 0x7c, 0xec, 0x19, 0x10, 0x32, 0xf3, 0x8f, 0x3b, 0x3d, 0x89, 0xd7, 0x58, 0x2b, 0xf1, 0x8e, 0x7b, 0x72, 0x75, 0xfb, 0x4f, 0x16, 0xee, 0x89, 0x56, 0x7e, 0x2a, 0x56, 0xbc, 0x73, 0xb3, 0xe2, 0xe1, 0x09, 0xf9, 0x94, 0x0e, 0xbd, 0x10, 0xb9, 0xdf, 0x2b, 0x88, 0xac, 0xcf, 0x0b, 0xa1, 0x8e, 0x5b, 0x34, 0x95, 0x20, 0xd2, 0xc7, 0xf5, 0xa3, 0x1b, 0xd5, 0x22, 0x6d, 0x12, 0xec, 0x35, 0xbf, 0xc9, 0xe3, 0x62, 0x03, 0xe1, 0x35, 0x06, 0xba, 0x12, 0xb7, 0x56, 0xc8, 0xba, 0x00, 0xaf, 0x91, 0xb8, 0x5b, 0x0b, 0x4c, 0x07, 0xc7, 0xf4, 0x84, 0xad, 0xc4, 0x58, 0xc9, 0x26, 0xaa, 0xeb, 0x4f, 0x08, 0x2f, 0xec, 0x98, 0x7d, 0x9f, 0x27, 0x6b, 0x89, 0x49, 0x59, 0x7e, 0xc0, 0x40, 0x1b, 0xb7, 0x1a, 0x2f, 0xea, 0x9c, 0x7b, 0x74, 0xe0, 0xdf, 0xe6, 0xaa, 0x52, 0xac, 0x8b, 0x80, 0xbe, 0xea, 0xd3, 0x36, 0xa4, 0x9d, 0xb2, 0x2f, 0xb3 } -, - /* Signature */ - 129, - { 0x53, 0xd0, 0xd7, 0x95, 0xbb, 0x08, 0x2f, 0x20, 0x01, 0x03, 0x6f, 0x47, 0x2c, 0x2e, 0xce, 0x6e, 0x7d, 0x2d, 0xb6, 0x9f, 0x29, 0x2d, 0xa7, 0x21, 0x36, 0x75, 0xc7, 0xcb, 0xba, 0x0d, 0x33, 0xb2, 0x32, 0x12, 0xf8, 0xf4, 0x3a, 0x4a, 0x8e, 0x09, 0xa6, 0xa5, 0x0e, 0x01, 0x9b, 0xbd, 0xd5, 0x9a, 0x58, 0x89, 0x8c, 0xc4, 0x6c, 0x58, 0xa4, 0x6e, 0x42, 0xce, 0x7b, 0xa0, 0x93, 0xfb, 0x46, 0x92, 0xf3, 0x83, 0xde, 0x33, 0xa9, 0xa3, 0x4f, 0x47, 0xc7, 0xe6, 0x19, 0x38, 0xbf, 0x8a, 0x6a, 0xda, 0xa8, 0x8d, 0xf2, 0x12, 0x96, 0xb4, 0xc6, 0x7b, 0x52, 0x68, 0x35, 0xf7, 0x57, 0xf2, 0xc2, 0x6c, 0x1d, 0x30, 0x9d, 0x7c, 0xdd, 0x5a, 0xd5, 0xfd, 0x8f, 0x61, 0xf8, 0x51, 0xed, 0x23, 0xc4, 0xbe, 0x2a, 0xbb, 0x62, 0x7d, 0xfd, 0x81, 0x7f, 0x84, 0x77, 0xdc, 0x04, 0x2b, 0x6a, 0x2e, 0x40, 0x69, 0x40 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.6", - /* Message to be signed */ - 245, - { 0x88, 0x39, 0x39, 0xd1, 0x49, 0xa5, 0x44, 0xe6, 0x2e, 0xf0, 0x4c, 0x61, 0x03, 0x51, 0xa2, 0xdf, 0xa2, 0x52, 0xeb, 0x9a, 0x9d, 0x1e, 0x11, 0xae, 0x54, 0xc9, 0xb0, 0x7e, 0xbc, 0xf1, 0xfd, 0xc4, 0x7e, 0xc1, 0xd9, 0x47, 0x03, 0x41, 0x1d, 0xa4, 0x15, 0xf5, 0x9f, 0xb3, 0xe5, 0x04, 0x1e, 0xd9, 0x47, 0x0e, 0x7b, 0xcc, 0x81, 0x9b, 0x5a, 0xfe, 0xaf, 0x86, 0x0c, 0x01, 0x6e, 0xf1, 0x25, 0xbd, 0x08, 0xa6, 0xcb, 0x8b, 0xcd, 0xf3, 0xb9, 0x3a, 0x51, 0xdc, 0xad, 0xb2, 0xf6, 0x8c, 0x8c, 0xc3, 0x77, 0x55, 0x14, 0x28, 0x2a, 0xff, 0x75, 0x67, 0xec, 0x65, 0xf2, 0x70, 0xd0, 0x2b, 0xeb, 0x95, 0xfb, 0x8f, 0xac, 0x24, 0x09, 0x5e, 0x17, 0x06, 0xe4, 0x8b, 0x52, 0x48, 0x65, 0xbc, 0x14, 0x46, 0x1d, 0x3e, 0xce, 0x8c, 0x50, 0x1c, 0x3d, 0x80, 0x2a, 0xde, 0x98, 0x5a, 0xe9, 0x5c, 0xfe, 0x1a, 0xb9, 0xd6, 0xb9, 0xab, 0x0d, 0x15, 0xfc, 0xc8, 0x86, 0x6f, 0x7f, 0x25, 0x9c, 0x5e, 0x41, 0xc0, 0x2c, 0xd4, 0x13, 0x43, 0x7e, 0x7d, 0x6b, 0xa7, 0xf1, 0x5b, 0x0a, 0x70, 0xda, 0xfb, 0xd5, 0x5c, 0x0e, 0xdb, 0x6b, 0x80, 0x75, 0xc2, 0x7c, 0xff, 0x3b, 0x28, 0x9e, 0x6c, 0x99, 0xe9, 0xa8, 0x84, 0xff, 0x7f, 0x08, 0x6d, 0xa9, 0xf7, 0x5d, 0x6a, 0x4c, 0xbb, 0xcc, 0xaf, 0x52, 0xba, 0x25, 0xc6, 0x34, 0x2c, 0x38, 0xa7, 0x6b, 0x44, 0xe1, 0x01, 0x15, 0x5d, 0xf7, 0x55, 0xe3, 0x9c, 0x14, 0x86, 0x2e, 0x22, 0x0c, 0xa3, 0x6f, 0xfb, 0xcc, 0x83, 0x2a, 0xfe, 0xcb, 0xa8, 0x7f, 0x8a, 0xbd, 0x96, 0x0a, 0x57, 0x7f, 0x56, 0xca, 0x6c, 0xd8, 0xe9, 0x91, 0x26, 0x65, 0x8f, 0x27, 0xac, 0x6e, 0x53, 0xc4, 0x42, 0xed, 0x47, 0x66 } -, - /* Signature */ - 129, - { 0x1e, 0xc0, 0x2a, 0xe6, 0xa0, 0xa3, 0xf6, 0x11, 0x99, 0x29, 0x61, 0xca, 0x27, 0xcc, 0xbf, 0x29, 0x6e, 0x11, 0x36, 0x18, 0x32, 0xe1, 0xee, 0x75, 0x20, 0x56, 0x9a, 0x9a, 0xee, 0x06, 0x34, 0x5c, 0xda, 0x22, 0xb4, 0xfa, 0x48, 0xfc, 0x34, 0x5e, 0x47, 0x78, 0xbc, 0x3c, 0xcd, 0xfe, 0xbd, 0x2d, 0xc5, 0xa6, 0xc9, 0xd4, 0x84, 0x51, 0xaa, 0x44, 0x1b, 0xea, 0x4b, 0x95, 0x11, 0x99, 0x65, 0x4a, 0xe8, 0xd2, 0xf7, 0x52, 0x2e, 0x17, 0xed, 0xbc, 0x2f, 0x51, 0xce, 0x15, 0xcb, 0xcd, 0x36, 0x6f, 0x49, 0x39, 0xcb, 0x53, 0xc3, 0xb7, 0x70, 0x81, 0xf4, 0xa7, 0x37, 0x50, 0x05, 0x4e, 0x00, 0xb3, 0x0b, 0xa2, 0xfe, 0x58, 0xf6, 0xf0, 0x2e, 0x36, 0xa8, 0x62, 0x54, 0x23, 0x97, 0xdb, 0xa6, 0xa3, 0xcd, 0x22, 0x77, 0x70, 0x88, 0x19, 0xe7, 0x8a, 0x2d, 0x87, 0x6a, 0x23, 0xa5, 0xa2, 0x69, 0xd7, 0x75 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.7", - /* Message to be signed */ - 71, - { 0x40, 0x31, 0xe0, 0xde, 0xf4, 0xf3, 0xd1, 0xad, 0x9b, 0xc0, 0x82, 0x77, 0x0a, 0x88, 0xa1, 0xd9, 0xb4, 0xb7, 0x10, 0x75, 0x48, 0xcd, 0xf8, 0x46, 0x2b, 0x0b, 0xae, 0x3d, 0x99, 0x4d, 0x8e, 0xbc, 0x4d, 0xa0, 0x44, 0xb9, 0x05, 0xdd, 0x8e, 0xd9, 0x1a, 0x1d, 0xa6, 0x76, 0x72, 0x78, 0x22, 0x36, 0x0e, 0xe2, 0xb6, 0xd5, 0xe1, 0x2b, 0xb7, 0x03, 0x16, 0xd7, 0x9e, 0x8a, 0xbb, 0x82, 0xa6, 0x43, 0x44, 0xaf, 0xb3, 0xb2, 0x25, 0x88, 0x5c } -, - /* Signature */ - 129, - { 0x0b, 0xe5, 0xa6, 0xd0, 0x43, 0xbe, 0x5d, 0x27, 0xd1, 0xd5, 0x1d, 0x9e, 0x3a, 0xa6, 0x1d, 0x92, 0xc9, 0xd8, 0x43, 0x23, 0x11, 0x9b, 0x48, 0xc8, 0x4a, 0x80, 0x38, 0x97, 0x18, 0xd7, 0xa1, 0xaa, 0xf5, 0x7a, 0x9a, 0x0d, 0x21, 0x4f, 0x65, 0x06, 0x48, 0x48, 0x64, 0xdf, 0xae, 0x85, 0xdb, 0x7b, 0x84, 0x74, 0x07, 0x3a, 0x8f, 0x97, 0x7b, 0x42, 0xb5, 0x3b, 0x40, 0x7e, 0x44, 0xc7, 0xc6, 0x2b, 0x16, 0x8d, 0x1e, 0x77, 0x78, 0xf4, 0xf2, 0x78, 0x57, 0xbf, 0xba, 0x85, 0xdd, 0xdc, 0x8b, 0x0e, 0x9f, 0x0e, 0x9a, 0x5b, 0x6d, 0xe7, 0x1a, 0x04, 0x43, 0x72, 0x0e, 0x92, 0xbb, 0x88, 0xb0, 0x77, 0xcb, 0xa1, 0x5d, 0x3f, 0x6e, 0x2b, 0xe4, 0xd2, 0x7a, 0x7c, 0x50, 0x9c, 0x7d, 0xc0, 0x3f, 0x1f, 0xdd, 0x4f, 0xe3, 0x38, 0xa4, 0xe5, 0x45, 0xc4, 0x6c, 0x03, 0x45, 0x22, 0xcc, 0xc0, 0xd4, 0x5d, 0x4c } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.8", - /* Message to be signed */ - 64, - { 0x7f, 0xdc, 0x96, 0xa4, 0x56, 0x57, 0x74, 0x02, 0x9f, 0xff, 0xa9, 0x3b, 0x39, 0xf0, 0x5d, 0xee, 0x9f, 0x84, 0xfa, 0x89, 0x53, 0xfd, 0x0f, 0x63, 0x38, 0xc8, 0x1c, 0x9d, 0xec, 0x6c, 0xdd, 0x66, 0x1f, 0xfa, 0xb9, 0x6f, 0x0e, 0x08, 0xeb, 0x0b, 0x9b, 0xa9, 0xca, 0x5b, 0xe1, 0x7b, 0x57, 0xc4, 0xb4, 0x86, 0x8f, 0xd5, 0x34, 0x11, 0x54, 0xde, 0x50, 0x27, 0x71, 0x13, 0xc7, 0x18, 0x53, 0x41 } -, - /* Signature */ - 129, - { 0x1d, 0xd2, 0x1f, 0xa4, 0x95, 0xbe, 0x7c, 0x49, 0x0f, 0x98, 0x2f, 0x69, 0xea, 0xb1, 0x4e, 0x24, 0xda, 0xa0, 0x4b, 0xd1, 0x38, 0xb7, 0x14, 0x32, 0x49, 0xcd, 0xcc, 0xd7, 0x8c, 0xcf, 0xc9, 0x10, 0x6a, 0xca, 0xa0, 0x3e, 0xc8, 0x76, 0x69, 0x42, 0x32, 0x56, 0x6e, 0xc6, 0xca, 0xb9, 0x12, 0x28, 0x40, 0xf6, 0x69, 0xc8, 0x00, 0xf2, 0xee, 0x09, 0x2b, 0xb9, 0xb6, 0xcb, 0x2a, 0x45, 0x42, 0xa9, 0x0d, 0xe6, 0x04, 0xc4, 0xf1, 0x05, 0x00, 0x0a, 0x3a, 0x0d, 0xec, 0xcd, 0x3d, 0xd9, 0x7a, 0x32, 0x61, 0xfa, 0x38, 0x22, 0x7e, 0xb3, 0x81, 0xa1, 0xf8, 0xf2, 0x3b, 0x66, 0x65, 0xd2, 0x84, 0x80, 0xdf, 0xb7, 0x21, 0x17, 0x88, 0x2e, 0xd8, 0xdb, 0x25, 0xd7, 0x6d, 0xe4, 0x0d, 0xe2, 0xfb, 0xe7, 0x2d, 0xc3, 0x94, 0xec, 0x6f, 0xbd, 0xaa, 0x99, 0xc6, 0x4f, 0xad, 0xe7, 0x29, 0x78, 0xa5, 0x1f, 0xc4 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.9", - /* Message to be signed */ - 175, - { 0x63, 0x18, 0x32, 0xab, 0x19, 0x18, 0xcd, 0x02, 0x08, 0x28, 0xe4, 0x7a, 0xe2, 0xb4, 0x47, 0x6b, 0x14, 0x69, 0xf2, 0x72, 0xe3, 0x0e, 0x53, 0xe5, 0x96, 0xfb, 0xa2, 0x6b, 0x40, 0x29, 0x37, 0xdc, 0x44, 0xc2, 0xea, 0x57, 0x45, 0xc7, 0x9d, 0x2d, 0xc6, 0x4a, 0x10, 0xe1, 0x22, 0x5c, 0xa0, 0xb6, 0x92, 0x9d, 0x49, 0x54, 0xbc, 0x5d, 0x37, 0x40, 0x96, 0xfd, 0x87, 0x8d, 0xd1, 0x01, 0xf7, 0x66, 0x63, 0x13, 0xd9, 0xa8, 0xf8, 0x26, 0xbc, 0x67, 0x14, 0x01, 0x42, 0x2c, 0x1c, 0xfe, 0x1a, 0x6d, 0x01, 0xa4, 0xd7, 0x86, 0x4a, 0x14, 0xc6, 0x0c, 0xeb, 0xc2, 0xf0, 0x70, 0x91, 0x4c, 0xee, 0xde, 0xb1, 0x78, 0x2f, 0xe5, 0x40, 0xa0, 0xa5, 0xd2, 0x57, 0x84, 0x44, 0xf9, 0xb3, 0x60, 0x34, 0xec, 0x77, 0xd6, 0xb8, 0x03, 0xa0, 0xc9, 0x76, 0x1b, 0x32, 0x75, 0x92, 0xaa, 0x48, 0x46, 0x63, 0x5c, 0x56, 0x3f, 0x1c, 0x6a, 0x6d, 0xf6, 0x8f, 0xaa, 0xbc, 0xe4, 0x97, 0xaf, 0x4d, 0xc9, 0xa3, 0x64, 0x2b, 0x75, 0xa4, 0xa2, 0x94, 0xd3, 0x08, 0x56, 0x8e, 0x6d, 0x73, 0xc1, 0x1d, 0xb5, 0x67, 0x24, 0x04, 0x2b, 0x55, 0xc3, 0xa2, 0x4a, 0x7b, 0xc7, 0xa1, 0x05, 0x0e, 0x4f, 0x44, 0x8b, 0x6a } -, - /* Signature */ - 129, - { 0x45, 0xd3, 0xa6, 0xae, 0x8f, 0x48, 0x35, 0x5c, 0x01, 0x2b, 0x50, 0x10, 0x79, 0xee, 0x92, 0xaf, 0xfe, 0x3c, 0x9e, 0x60, 0x2e, 0x4a, 0x08, 0x0c, 0xfc, 0x94, 0x72, 0x3a, 0xe9, 0x6d, 0xac, 0x2a, 0x66, 0xe4, 0x55, 0xa4, 0x0e, 0x72, 0x8b, 0x2a, 0x1b, 0x27, 0xe6, 0x22, 0x40, 0x55, 0x4e, 0xc7, 0xc5, 0xc0, 0xad, 0x6a, 0xa0, 0x0c, 0x09, 0x22, 0xe5, 0x3d, 0x7b, 0x12, 0xed, 0x42, 0xc0, 0x87, 0x32, 0x2d, 0x15, 0x36, 0xe4, 0x6b, 0x7d, 0xeb, 0xda, 0x80, 0x95, 0xf5, 0x5d, 0x1e, 0x12, 0xbc, 0x24, 0x42, 0xf4, 0x3b, 0x4d, 0x12, 0x8f, 0xee, 0x23, 0x1d, 0xcd, 0x6f, 0x8c, 0x37, 0xaa, 0x6b, 0xcf, 0x4f, 0xe7, 0xb5, 0xe0, 0xde, 0xa9, 0xc6, 0x70, 0x9d, 0x3d, 0x91, 0xf9, 0xe4, 0x2a, 0x53, 0x16, 0x8a, 0x16, 0xb6, 0xfe, 0x99, 0x7b, 0x5d, 0xfe, 0xba, 0xfb, 0x46, 0xed, 0x9a, 0xea, 0x5c, 0x66 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.10", - /* Message to be signed */ - 157, - { 0x8b, 0x04, 0x3d, 0x90, 0xda, 0xe3, 0x41, 0x66, 0x85, 0xd5, 0x3a, 0x5b, 0x4c, 0x3c, 0xc2, 0x54, 0xcd, 0xa0, 0xcb, 0xd2, 0x3b, 0x4e, 0x40, 0x8d, 0xe8, 0x20, 0xa4, 0xda, 0x7a, 0xde, 0x6d, 0xd9, 0x5d, 0x4e, 0x1a, 0x97, 0xe2, 0x31, 0x2c, 0x3e, 0x84, 0x26, 0x1e, 0xe0, 0xb6, 0xce, 0xfe, 0x60, 0xe6, 0xb0, 0x82, 0xfd, 0x59, 0x65, 0xef, 0xa1, 0x64, 0x8f, 0x4f, 0xae, 0x61, 0x60, 0x5f, 0xe3, 0x55, 0x33, 0x27, 0x00, 0x46, 0x96, 0x05, 0x26, 0x53, 0x47, 0xe6, 0x54, 0x7a, 0xea, 0x77, 0x5b, 0x85, 0x6e, 0x5a, 0x46, 0xc3, 0x41, 0xd2, 0x99, 0x52, 0xbb, 0xea, 0x92, 0x70, 0x49, 0x96, 0x3e, 0x37, 0x40, 0x20, 0x8c, 0xfb, 0x0b, 0x65, 0x28, 0x57, 0xb6, 0xf5, 0x2e, 0x36, 0x6a, 0x17, 0x0b, 0xe3, 0x4f, 0x13, 0xd3, 0x58, 0x46, 0xbd, 0xe6, 0x97, 0x20, 0x46, 0x20, 0x01, 0xb0, 0x9d, 0xd2, 0x68, 0xb8, 0x9b, 0x09, 0x00, 0x31, 0x8e, 0x73, 0x3d, 0xb2, 0x00, 0x9e, 0xfd, 0x9b, 0x51, 0x77, 0x41, 0xe5, 0x10, 0xd3, 0xf3, 0x94, 0xf7, 0xad, 0xb5, 0x45, 0x59, 0xb1, 0x57 } -, - /* Signature */ - 129, - { 0x6b, 0x27, 0x8f, 0x36, 0x2c, 0x29, 0x2e, 0xea, 0x09, 0xb9, 0x0b, 0xf3, 0x53, 0xd1, 0x43, 0xf2, 0xca, 0x09, 0x9f, 0xf8, 0x79, 0x57, 0x34, 0x79, 0xdf, 0x2a, 0xff, 0x9b, 0x25, 0x0d, 0x1c, 0x91, 0x87, 0xc6, 0xa3, 0x34, 0x3e, 0xa1, 0x4c, 0x07, 0x6f, 0x2a, 0x20, 0xc1, 0xa1, 0x9d, 0xb2, 0x6a, 0xad, 0x35, 0x48, 0xec, 0x6f, 0xb3, 0xb2, 0xfa, 0xfc, 0x75, 0x1b, 0x59, 0x08, 0x2d, 0x8b, 0x23, 0xc8, 0x2c, 0x8a, 0x51, 0xf7, 0xfa, 0xf7, 0xa4, 0xd4, 0xa8, 0x23, 0x98, 0xbf, 0xbe, 0xd4, 0x49, 0xbd, 0xe4, 0xee, 0x9d, 0xc8, 0x68, 0x01, 0x60, 0x66, 0x6f, 0xd9, 0xc7, 0x74, 0xc6, 0xaa, 0x57, 0x7b, 0x4e, 0xc5, 0x4c, 0xf0, 0xd5, 0xbd, 0x9e, 0x3d, 0x1a, 0xfa, 0x9c, 0x3b, 0x4b, 0x91, 0x46, 0x76, 0x78, 0xc9, 0xd4, 0xc4, 0xfe, 0x40, 0x0a, 0xa8, 0x57, 0xa3, 0xb0, 0x54, 0x5b, 0xdf, 0x84, 0xa6 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.11", - /* Message to be signed */ - 148, - { 0x3b, 0x28, 0xa6, 0x09, 0x2e, 0x47, 0x08, 0x98, 0xaf, 0x07, 0x0a, 0x08, 0x7c, 0x45, 0x53, 0x18, 0x8d, 0xe6, 0xc3, 0x44, 0xbb, 0x0b, 0x5f, 0xdc, 0x7f, 0x66, 0xfb, 0xc5, 0x2d, 0xc9, 0x3a, 0x8b, 0x92, 0xa3, 0x74, 0x11, 0x20, 0x37, 0xd6, 0xa4, 0x32, 0x86, 0x12, 0x8a, 0xce, 0xf9, 0x5a, 0x35, 0x05, 0xc0, 0xab, 0xb1, 0xaf, 0xa6, 0x2c, 0x48, 0xcb, 0x21, 0x36, 0x07, 0x7f, 0x8a, 0x0e, 0x0e, 0x0b, 0x5a, 0x4e, 0xe9, 0xb2, 0xc7, 0x7d, 0x7a, 0x0c, 0x0b, 0x53, 0xf3, 0x8a, 0x51, 0xcc, 0x3d, 0xb9, 0xb5, 0x83, 0xb3, 0xae, 0xc0, 0x7f, 0x1e, 0x22, 0x4f, 0xcb, 0x3f, 0x1d, 0xad, 0x19, 0x5e, 0x05, 0x86, 0x59, 0xa9, 0xd1, 0x1f, 0x8e, 0xdc, 0x74, 0x44, 0x99, 0x46, 0x86, 0xed, 0x62, 0xc9, 0x75, 0x66, 0xe9, 0xe0, 0x0c, 0xbf, 0x8f, 0x0d, 0xbc, 0x17, 0x16, 0xe6, 0xb7, 0xf0, 0xf8, 0x8f, 0xe8, 0x9a, 0x86, 0x7a, 0x41, 0xd6, 0x43, 0x13, 0x5a, 0xd8, 0xb1, 0x8a, 0xa1, 0x43, 0xe7, 0x37, 0x5d, 0xf1, 0x95, 0x29 } -, - /* Signature */ - 129, - { 0x32, 0x62, 0xfe, 0x17, 0xe4, 0x4e, 0x5e, 0xcc, 0x84, 0x31, 0x70, 0xd3, 0xae, 0x27, 0x51, 0xda, 0x1f, 0x48, 0xd6, 0xe9, 0x61, 0xd8, 0x1e, 0x93, 0x59, 0xb0, 0x98, 0x2c, 0x6d, 0x61, 0x30, 0x8e, 0xba, 0xcf, 0xe2, 0x60, 0x7c, 0x53, 0x8c, 0x17, 0x0c, 0xe0, 0xe7, 0x2a, 0x07, 0xbc, 0x01, 0x48, 0x7b, 0x29, 0x5c, 0x36, 0xb8, 0xe2, 0x2a, 0xfd, 0xf6, 0xe7, 0xfe, 0x39, 0xc0, 0x3a, 0x5c, 0x0c, 0x36, 0x61, 0x06, 0x1f, 0x23, 0xfb, 0xf5, 0x89, 0x0e, 0xad, 0x59, 0xf8, 0x72, 0xc9, 0x46, 0xcc, 0xe0, 0xf8, 0x16, 0xc9, 0xed, 0x3a, 0x2c, 0x1e, 0x11, 0xf8, 0xf7, 0x4d, 0xa1, 0xe9, 0x7a, 0x39, 0x0d, 0x53, 0x4d, 0x78, 0x55, 0x78, 0xa2, 0x45, 0x5f, 0xcd, 0x87, 0x47, 0x83, 0xf4, 0x57, 0x2a, 0x15, 0xf4, 0x93, 0x7d, 0xca, 0x98, 0x09, 0x3f, 0xd0, 0xe9, 0x99, 0x0a, 0xf0, 0x00, 0x52, 0x56, 0xbf } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.12", - /* Message to be signed */ - 52, - { 0x4f, 0xdd, 0x6a, 0x36, 0x31, 0xdd, 0xd4, 0xbc, 0x3c, 0x76, 0x07, 0x19, 0x02, 0xa2, 0x27, 0xfd, 0x5b, 0x36, 0x53, 0xb1, 0xf9, 0x70, 0xf2, 0xb7, 0x67, 0xef, 0x55, 0x4e, 0x1c, 0x75, 0xca, 0xde, 0x81, 0x9d, 0x8d, 0x1f, 0xca, 0x76, 0xbc, 0x10, 0x54, 0x1c, 0xbf, 0x8b, 0x1d, 0x8b, 0x0e, 0x72, 0x55, 0xf9, 0x57, 0x40 } -, - /* Signature */ - 129, - { 0x29, 0xcb, 0xa5, 0xb4, 0x3f, 0xa3, 0x56, 0x57, 0x75, 0x89, 0x34, 0x91, 0xb1, 0x18, 0x57, 0x8b, 0x14, 0xb5, 0xfa, 0x1e, 0xeb, 0xe0, 0xc8, 0x07, 0x59, 0xa6, 0xd1, 0x91, 0xe7, 0xc2, 0x13, 0x1e, 0xe1, 0x0a, 0xc5, 0xb9, 0xb8, 0xae, 0x1a, 0xa7, 0xd6, 0x96, 0xc9, 0x84, 0x88, 0xa3, 0x5c, 0xdf, 0xa2, 0xaa, 0x00, 0x6d, 0x91, 0xbf, 0x7e, 0x05, 0xa5, 0xc1, 0x90, 0x9e, 0xfb, 0x20, 0xda, 0xbc, 0x82, 0x13, 0x3b, 0x62, 0x64, 0xc0, 0x42, 0x18, 0x0c, 0x2c, 0xca, 0x65, 0x45, 0x9f, 0x66, 0xcc, 0x7e, 0xb1, 0xba, 0x75, 0xd1, 0x5d, 0x4f, 0x56, 0xc7, 0x52, 0x8a, 0xab, 0x28, 0x38, 0xe6, 0x79, 0x53, 0x7a, 0x4c, 0x8d, 0xcd, 0x37, 0xd4, 0xb4, 0xca, 0x82, 0x5c, 0xe1, 0x65, 0xfa, 0x4a, 0x97, 0x15, 0x82, 0x44, 0xdc, 0x87, 0xc0, 0x61, 0xfb, 0x12, 0x00, 0x1e, 0x55, 0x33, 0xfb, 0xd4, 0xcc, 0x62 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.13", - /* Message to be signed */ - 169, - { 0x59, 0x0c, 0xd2, 0x30, 0x50, 0xe5, 0x7b, 0x28, 0xd5, 0xc2, 0x18, 0x5e, 0xad, 0x60, 0xb1, 0xe9, 0x52, 0x9f, 0x2b, 0xd5, 0x26, 0x13, 0xeb, 0x03, 0xf6, 0xed, 0x1a, 0xef, 0xa4, 0xa6, 0x72, 0x88, 0xd5, 0xa3, 0xa3, 0x4f, 0xd9, 0x5c, 0xa6, 0x38, 0x94, 0xaf, 0x3a, 0x40, 0xcd, 0x68, 0x87, 0x3a, 0x1f, 0x37, 0xe3, 0x54, 0xd3, 0x04, 0x14, 0x29, 0x7b, 0x19, 0x25, 0x4b, 0xc6, 0xc1, 0xa3, 0xf7, 0xa4, 0x75, 0x20, 0xee, 0xa5, 0x6e, 0xff, 0x77, 0xdb, 0xfd, 0xa6, 0xbd, 0x77, 0x79, 0xd0, 0x2f, 0xd8, 0x16, 0xfc, 0x0e, 0x99, 0x91, 0x9f, 0xe4, 0x39, 0x5e, 0xae, 0xe5, 0xb2, 0xf5, 0xf0, 0x32, 0xcf, 0xc4, 0x33, 0x6f, 0x9c, 0xf9, 0xac, 0xef, 0x74, 0xdb, 0xbf, 0x4c, 0x9a, 0x09, 0x18, 0xda, 0x65, 0x58, 0xb4, 0xb4, 0xe3, 0x20, 0x9b, 0xfc, 0xd7, 0x1d, 0xdd, 0x59, 0x76, 0x07, 0xb6, 0xe2, 0x8c, 0x39, 0x85, 0xdb, 0xf5, 0x2c, 0xa7, 0xd1, 0xd7, 0x51, 0xcb, 0x81, 0x69, 0xc0, 0xb1, 0xb1, 0x3f, 0xf8, 0xb6, 0x5b, 0x73, 0x1e, 0x69, 0xdd, 0x2e, 0xff, 0xe4, 0x4c, 0x63, 0x6f, 0x2b, 0x69, 0x95, 0x35, 0x83, 0x1a, 0xeb, 0x5e, 0x62, 0x90, 0x2f } -, - /* Signature */ - 129, - { 0x67, 0xeb, 0x89, 0x57, 0xce, 0x4c, 0x06, 0xf7, 0x39, 0x1d, 0x00, 0xc7, 0x41, 0x24, 0x53, 0xf4, 0xb6, 0x8b, 0x33, 0x03, 0xa1, 0x29, 0x25, 0x54, 0xe2, 0xa5, 0xfc, 0x72, 0x62, 0xc5, 0x2e, 0x74, 0xbe, 0xd7, 0x0e, 0xc5, 0x8c, 0x89, 0x50, 0xcd, 0xc4, 0x31, 0x5a, 0x8f, 0xb7, 0xc6, 0x80, 0x15, 0x54, 0xcd, 0x35, 0x78, 0x1d, 0x44, 0xfb, 0x5e, 0x57, 0xd6, 0x8d, 0x59, 0xa0, 0x0f, 0x43, 0xb8, 0x6d, 0x53, 0xb8, 0x43, 0x72, 0xd5, 0x56, 0xe5, 0xa4, 0x15, 0x3c, 0xbe, 0x6b, 0x39, 0x7c, 0x4c, 0x9c, 0x68, 0x00, 0x70, 0x5d, 0x2f, 0xc0, 0xc5, 0x48, 0x64, 0x5e, 0x11, 0xb9, 0xd8, 0xd5, 0x12, 0xb2, 0xdd, 0x9b, 0xf5, 0x9f, 0x3d, 0xc5, 0xd1, 0x1c, 0x3c, 0x77, 0x3d, 0x59, 0xcc, 0xbe, 0xd9, 0xe6, 0xbc, 0x14, 0x32, 0x09, 0x10, 0xcd, 0xf8, 0x3b, 0x46, 0x59, 0x01, 0xb7, 0x46, 0xb5, 0x96, 0x74 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.14", - /* Message to be signed */ - 66, - { 0x80, 0x8c, 0xb9, 0x76, 0x13, 0xfd, 0x87, 0x85, 0x35, 0x80, 0x1c, 0x80, 0x08, 0x79, 0x15, 0x10, 0xa5, 0xfe, 0x86, 0x6a, 0xd5, 0xb6, 0x84, 0x3a, 0x6e, 0x00, 0x19, 0xa0, 0xfc, 0xc2, 0x17, 0x76, 0x03, 0x54, 0xf6, 0x0c, 0xc6, 0x99, 0xfb, 0xbe, 0x1a, 0xdf, 0xe8, 0xb0, 0x0e, 0xcd, 0x6a, 0x36, 0xa2, 0xb5, 0xa5, 0xa1, 0xfa, 0xa2, 0x3d, 0x34, 0x38, 0x20, 0x02, 0x4e, 0x3a, 0x31, 0x97, 0xae, 0x67, 0x3c } -, - /* Signature */ - 129, - { 0x1c, 0x53, 0x96, 0x59, 0xf8, 0x72, 0x46, 0x99, 0x16, 0xfb, 0x00, 0x07, 0xef, 0x9e, 0x48, 0x57, 0x4e, 0x96, 0x4e, 0x4c, 0x0e, 0x6a, 0x2f, 0xa7, 0x4b, 0x13, 0x73, 0xfd, 0x60, 0xb6, 0x64, 0xa7, 0x98, 0xac, 0x81, 0x29, 0xc0, 0x8c, 0x12, 0xcd, 0xbf, 0x37, 0x49, 0x75, 0x0b, 0xe1, 0x25, 0x60, 0x2a, 0x71, 0x54, 0x32, 0x67, 0x67, 0x32, 0x7e, 0x92, 0xba, 0x57, 0xb5, 0xe2, 0x89, 0xb5, 0xac, 0x9d, 0x77, 0x71, 0xb4, 0x52, 0x0a, 0x7a, 0x2c, 0xe6, 0x6c, 0x5e, 0xaf, 0x70, 0x4a, 0xfc, 0x5a, 0x19, 0x0f, 0xa6, 0x0b, 0xe1, 0x37, 0x6f, 0x94, 0x3d, 0x2b, 0xaf, 0x70, 0x52, 0x3e, 0x47, 0xc3, 0xde, 0xfc, 0x0a, 0x25, 0xa6, 0x00, 0x18, 0x31, 0xa3, 0x7a, 0xab, 0x0c, 0xf1, 0xf6, 0x48, 0x7b, 0xe3, 0x7f, 0x0e, 0x31, 0xca, 0x7d, 0xb5, 0xac, 0x41, 0xb5, 0x63, 0x09, 0x57, 0x55, 0x93, 0x69, 0xff } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.15", - /* Message to be signed */ - 202, - { 0x57, 0xed, 0xaa, 0x05, 0x66, 0x25, 0x16, 0x86, 0xf6, 0x52, 0x05, 0xef, 0xc6, 0x26, 0x60, 0xe2, 0xc2, 0xe0, 0x4f, 0xa5, 0xea, 0xa3, 0x30, 0x2d, 0xe8, 0x7a, 0x3f, 0x6b, 0x49, 0x1f, 0x7f, 0xa3, 0xac, 0x72, 0x70, 0xcc, 0x76, 0x75, 0x1a, 0x43, 0x69, 0x42, 0xac, 0x76, 0x5e, 0xf5, 0xf4, 0x74, 0x91, 0x62, 0xd7, 0xe7, 0x97, 0x12, 0x6b, 0xcb, 0x8f, 0xda, 0xc1, 0x9c, 0xf1, 0x8d, 0xcc, 0x6e, 0xff, 0x48, 0x59, 0x3c, 0x05, 0xc8, 0x89, 0x3b, 0x59, 0x1a, 0x51, 0x33, 0x2f, 0xa2, 0x6a, 0xb8, 0x63, 0xc5, 0xea, 0xa4, 0xd7, 0x51, 0xe8, 0xd1, 0xb1, 0x9c, 0x58, 0x26, 0x90, 0xb5, 0x41, 0x5e, 0x6a, 0x89, 0xe0, 0x5f, 0x23, 0x1b, 0x33, 0xac, 0x38, 0xc5, 0x3f, 0x95, 0xa2, 0xd5, 0xf9, 0x10, 0x51, 0xc2, 0xec, 0x6d, 0xdb, 0x2b, 0x6d, 0xba, 0x78, 0x9d, 0x55, 0x3a, 0xdb, 0x9f, 0x10, 0xc5, 0x83, 0x59, 0x70, 0x36, 0xd3, 0x48, 0x6f, 0xbb, 0x32, 0x17, 0x2a, 0x1c, 0x11, 0x07, 0x9e, 0x5f, 0x09, 0xaa, 0x29, 0xeb, 0x46, 0x74, 0xc8, 0xd7, 0xbf, 0x5b, 0xbd, 0x6d, 0x05, 0x7e, 0x6b, 0x87, 0xa8, 0xb3, 0xaa, 0xf4, 0x80, 0x86, 0xd7, 0x21, 0xcb, 0xbc, 0x8e, 0xfa, 0xc6, 0x24, 0x4d, 0x32, 0x39, 0xae, 0x18, 0xf1, 0x66, 0x23, 0xfa, 0x52, 0x8e, 0x2e, 0x70, 0xfa, 0x25, 0x65, 0x6a, 0x6a, 0x4a, 0x22, 0x92, 0x95, 0x0f, 0xc9, 0x28, 0xed, 0xb8, 0x1c } -, - /* Signature */ - 129, - { 0x33, 0x73, 0x2f, 0xcc, 0x23, 0x34, 0x2c, 0x58, 0x51, 0x38, 0xb2, 0x5b, 0x17, 0xc8, 0x12, 0xee, 0x3e, 0x9d, 0x3d, 0xa4, 0x1f, 0x6f, 0xfb, 0xcc, 0x16, 0x17, 0xa2, 0xee, 0x75, 0xcc, 0x5b, 0x25, 0x01, 0x25, 0x4f, 0xd1, 0x97, 0x6d, 0x25, 0x88, 0x00, 0xe9, 0x05, 0xd7, 0xe4, 0x4a, 0x0a, 0xb6, 0xfb, 0x4b, 0x8a, 0x88, 0xbb, 0x7b, 0xf9, 0x31, 0x73, 0x95, 0x30, 0x3a, 0xb2, 0xfc, 0xa4, 0x31, 0x28, 0x48, 0x6a, 0x2b, 0xab, 0x36, 0xc7, 0x5e, 0xf6, 0xaa, 0x5e, 0xb3, 0xfc, 0x5b, 0xd5, 0x55, 0xb3, 0xea, 0x79, 0x12, 0x4a, 0xad, 0x78, 0x97, 0xe3, 0xa4, 0x34, 0xde, 0xe7, 0x92, 0x63, 0x71, 0xde, 0x2d, 0x6d, 0x23, 0x7e, 0x89, 0xb0, 0x3b, 0x8d, 0xd7, 0x09, 0x60, 0x58, 0xe2, 0xa4, 0xb3, 0x2c, 0xb5, 0x57, 0xc7, 0xad, 0xa2, 0x98, 0xa7, 0xe2, 0xed, 0xd3, 0xa3, 0xa3, 0xb5, 0x29, 0xb4, 0xd2 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.16", - /* Message to be signed */ - 99, - { 0x08, 0x33, 0x76, 0xbb, 0x82, 0x21, 0x2b, 0xf8, 0x80, 0xbe, 0x12, 0x85, 0x65, 0x3a, 0xf2, 0xca, 0xd6, 0x25, 0xc5, 0x2e, 0x94, 0xe3, 0x21, 0x43, 0x68, 0x77, 0xf7, 0x25, 0xa8, 0x3b, 0xbd, 0x43, 0xf4, 0x48, 0x6d, 0x89, 0x6c, 0xf6, 0x7e, 0x31, 0x39, 0x1b, 0x87, 0x06, 0xf8, 0xc0, 0xf8, 0xf4, 0xbb, 0x1d, 0xdb, 0xa9, 0x5c, 0x33, 0x2f, 0x03, 0x4f, 0x39, 0x09, 0x11, 0x3f, 0x65, 0x56, 0x92, 0x60, 0xa2, 0xe4, 0xf1, 0x04, 0x06, 0x65, 0x7c, 0x99, 0xfa, 0xff, 0x00, 0x1f, 0xe1, 0x6e, 0xbb, 0x89, 0x6e, 0x9e, 0x18, 0x11, 0x5a, 0xf1, 0xd4, 0x98, 0x6c, 0x85, 0x79, 0xab, 0x56, 0x52, 0xcc, 0xca, 0x47, 0x74 } -, - /* Signature */ - 129, - { 0x2a, 0xf4, 0x6c, 0x00, 0xd1, 0xd9, 0x15, 0x94, 0x1e, 0x21, 0x2a, 0x7b, 0x8d, 0x81, 0x05, 0xee, 0x0f, 0x0e, 0xc4, 0x80, 0xff, 0xfb, 0xb4, 0xf1, 0x3b, 0xf2, 0x8d, 0x73, 0xe2, 0xb3, 0x19, 0xb9, 0x84, 0xa7, 0xb7, 0xc8, 0x36, 0x7a, 0xdc, 0xa7, 0xab, 0x12, 0xaa, 0xf5, 0x3a, 0xcb, 0x98, 0xd0, 0xcb, 0x54, 0xee, 0x34, 0x20, 0x4c, 0x90, 0x8e, 0x60, 0xc7, 0xc7, 0x9e, 0xfb, 0x42, 0xc3, 0x11, 0x4a, 0x02, 0x58, 0x9e, 0x1a, 0xe6, 0xaf, 0xb5, 0x97, 0x53, 0x54, 0x57, 0x8c, 0x14, 0x35, 0xec, 0xc8, 0x9c, 0x11, 0x6e, 0x90, 0x26, 0xb6, 0xbc, 0x88, 0x9e, 0xe2, 0x88, 0xae, 0x4d, 0xaf, 0x03, 0x47, 0xcc, 0xce, 0xfc, 0x5d, 0xfd, 0x1e, 0xf8, 0x3c, 0xb8, 0x68, 0x52, 0xee, 0xff, 0xd8, 0x40, 0x98, 0x59, 0x9b, 0x72, 0x5b, 0xf6, 0x02, 0xee, 0x62, 0x0b, 0xdf, 0x44, 0xaf, 0xbd, 0x84, 0xc0, 0xcd } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.17", - /* Message to be signed */ - 17, - { 0x8c, 0x87, 0x4c, 0xd0, 0xce, 0x33, 0x51, 0x39, 0xc0, 0x8d, 0x76, 0x0b, 0x82, 0x5e, 0xb9, 0x90, 0x5d } -, - /* Signature */ - 129, - { 0x66, 0x9a, 0x8a, 0xd7, 0xcb, 0x81, 0xef, 0x21, 0x87, 0xf5, 0xa8, 0x56, 0x47, 0x68, 0x4b, 0x72, 0x48, 0x4a, 0xff, 0x27, 0x9f, 0x0a, 0xf3, 0x54, 0x35, 0x86, 0x7c, 0xc2, 0xb0, 0x43, 0x33, 0xa1, 0x96, 0xec, 0xa6, 0xcf, 0x44, 0xa9, 0x7a, 0x1b, 0xd3, 0x9d, 0x0f, 0x6a, 0x0f, 0xf9, 0x59, 0x57, 0x02, 0x83, 0x5b, 0xc8, 0x0a, 0x72, 0xd7, 0x14, 0x04, 0xef, 0x3f, 0x46, 0xfa, 0x3b, 0x0d, 0x20, 0xe8, 0x6d, 0x7a, 0x1d, 0x5f, 0x7e, 0xfc, 0x3f, 0x3b, 0x8e, 0x8a, 0x7e, 0x37, 0xe8, 0x7e, 0x27, 0xa9, 0x9f, 0xeb, 0xa9, 0x6a, 0xd8, 0x13, 0x20, 0xbe, 0x8f, 0xff, 0x78, 0x55, 0x7d, 0x07, 0xbf, 0xba, 0xe2, 0x16, 0x03, 0xa1, 0x36, 0x8c, 0xaf, 0xa5, 0xae, 0x1d, 0x1b, 0x63, 0x0a, 0xa2, 0x1f, 0xf2, 0x0e, 0x45, 0x85, 0x65, 0x0a, 0x77, 0x3d, 0x7e, 0x2f, 0x5e, 0x7f, 0x51, 0x72, 0x97, 0x19, 0x3c } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.18", - /* Message to be signed */ - 102, - { 0xcb, 0x3e, 0x61, 0x21, 0xd3, 0x8b, 0x7d, 0x97, 0xe1, 0x8b, 0xa1, 0x5c, 0x49, 0x3d, 0x1a, 0xc3, 0x2e, 0x9d, 0x2e, 0xf4, 0xe3, 0xbd, 0x16, 0xdf, 0x9c, 0x67, 0xe4, 0xa1, 0x96, 0xe9, 0x24, 0x7a, 0x8d, 0x0c, 0x24, 0xb2, 0x1c, 0x4a, 0xb2, 0x3e, 0x77, 0xd6, 0xdb, 0x11, 0x7d, 0x59, 0x11, 0x95, 0xbb, 0xaf, 0x44, 0x66, 0x82, 0x5f, 0x63, 0x97, 0x8f, 0x11, 0x40, 0x85, 0x28, 0x1b, 0x79, 0xae, 0xa3, 0x7e, 0x32, 0xc6, 0xb3, 0x6c, 0x1e, 0x9d, 0xdd, 0x4a, 0xd1, 0x23, 0x6e, 0x97, 0xfd, 0x42, 0x7b, 0x4d, 0x97, 0x6e, 0x07, 0x64, 0x9d, 0xca, 0x4f, 0x33, 0xa8, 0x9c, 0x46, 0xfb, 0x8c, 0x00, 0xb4, 0x26, 0x7b, 0x14, 0x47, 0x04 } -, - /* Signature */ - 129, - { 0x56, 0x84, 0x17, 0x80, 0x3a, 0x40, 0x0e, 0x9d, 0x05, 0x0a, 0x43, 0x20, 0xae, 0x7b, 0x7d, 0x8d, 0x24, 0x8e, 0x16, 0x36, 0x50, 0x86, 0x9d, 0x9f, 0xdd, 0x10, 0x0c, 0xc1, 0xa6, 0xb9, 0xbc, 0x29, 0x1c, 0x3f, 0x23, 0xf1, 0x25, 0x60, 0x03, 0x16, 0x4f, 0x61, 0x9d, 0xbc, 0x78, 0x63, 0x5e, 0xbd, 0xf0, 0x89, 0x49, 0x0a, 0xfa, 0x5a, 0xa0, 0x0b, 0x6f, 0x97, 0xeb, 0x06, 0x36, 0xc3, 0xbb, 0xa8, 0x9d, 0x86, 0x36, 0x0a, 0xfe, 0x26, 0x00, 0x43, 0xd8, 0x61, 0xa7, 0x4f, 0x64, 0xc7, 0x1d, 0x9c, 0xbd, 0x31, 0xea, 0xe2, 0x39, 0x3a, 0x1a, 0xf1, 0x56, 0x1f, 0x1a, 0xb9, 0x2c, 0xaa, 0x76, 0xdd, 0x1e, 0x76, 0xab, 0x23, 0x33, 0x09, 0x8c, 0x83, 0xc2, 0xd9, 0x9f, 0xae, 0x82, 0x73, 0x98, 0x75, 0x80, 0x05, 0xc1, 0x76, 0xcb, 0xc4, 0xa2, 0xe2, 0x2e, 0xfa, 0x0e, 0x6c, 0x12, 0xf4, 0xe3, 0x42, 0x81 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.19", - /* Message to be signed */ - 81, - { 0x21, 0x9a, 0x2f, 0x8d, 0x0b, 0x00, 0x0a, 0xed, 0xb5, 0xf1, 0x85, 0x45, 0x5e, 0xd3, 0xea, 0x09, 0x4c, 0x45, 0x42, 0x6b, 0x28, 0x5b, 0xab, 0x4a, 0x07, 0xcf, 0x3d, 0x0a, 0x29, 0x06, 0xf3, 0xe2, 0x03, 0x18, 0x4c, 0x2d, 0x3d, 0x81, 0xa8, 0x09, 0xb8, 0x9c, 0x9f, 0xc4, 0x8b, 0xc9, 0xaf, 0x9a, 0xb3, 0x2f, 0x84, 0xf1, 0x5d, 0x81, 0x38, 0x9c, 0x4e, 0xdb, 0x0a, 0xc6, 0x8a, 0xd0, 0x95, 0x02, 0xe3, 0xf3, 0x0c, 0x7c, 0xf6, 0x45, 0x10, 0x29, 0x54, 0xb2, 0x97, 0xc8, 0x66, 0x14, 0x66, 0xfc, 0x10 } -, - /* Signature */ - 129, - { 0x03, 0x83, 0x5d, 0x90, 0x57, 0xe2, 0xb8, 0x21, 0xdc, 0x4c, 0x6e, 0xac, 0xa3, 0xf4, 0x15, 0x6a, 0x56, 0x55, 0x0b, 0x6f, 0x9d, 0x74, 0x00, 0xfc, 0x5c, 0x51, 0x95, 0xa4, 0xae, 0xe4, 0x71, 0x7d, 0xf3, 0x29, 0x29, 0x12, 0x2b, 0x43, 0x27, 0x3a, 0x07, 0x9a, 0x24, 0xf9, 0x9d, 0xd9, 0xe7, 0xc3, 0x40, 0x56, 0xae, 0xa4, 0xfc, 0x4e, 0x45, 0x7d, 0x83, 0x14, 0xef, 0x34, 0x42, 0x7f, 0x8e, 0x20, 0x4b, 0x81, 0xbb, 0x49, 0x03, 0xfb, 0x3e, 0x77, 0x9e, 0x38, 0x9e, 0x41, 0x33, 0x90, 0x68, 0xc1, 0x57, 0xd9, 0xb0, 0x9f, 0x2c, 0x5e, 0x99, 0xcc, 0x54, 0xe6, 0xef, 0x86, 0xee, 0xac, 0x0e, 0x19, 0xf4, 0x4e, 0x33, 0xe7, 0x07, 0xc4, 0x26, 0x1a, 0x0a, 0x83, 0xce, 0xb4, 0x22, 0xf2, 0xe0, 0x6b, 0xcc, 0xae, 0x3b, 0x8b, 0xba, 0x42, 0x8d, 0x75, 0x57, 0x15, 0x2f, 0x40, 0x84, 0x6e, 0xc0, 0x11, 0x34 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 13.20", - /* Message to be signed */ - 97, - { 0xe3, 0x9c, 0xa4, 0x0d, 0x2e, 0x9d, 0x03, 0xae, 0x05, 0x96, 0xf6, 0x0e, 0xb8, 0xf6, 0x09, 0x99, 0x30, 0x85, 0xa5, 0xdb, 0x15, 0x6b, 0x0d, 0x50, 0x98, 0xfe, 0x5f, 0xaa, 0xc5, 0x5f, 0x70, 0x99, 0x3f, 0xe1, 0x76, 0xd2, 0xd0, 0xc0, 0x38, 0xb8, 0x60, 0xbb, 0xf9, 0xa6, 0x62, 0x43, 0xf5, 0xe7, 0x8e, 0x6c, 0xbe, 0x52, 0x6e, 0xcf, 0x25, 0x12, 0x8d, 0xae, 0x31, 0x96, 0x56, 0xcc, 0x32, 0x1e, 0xe8, 0x0a, 0x50, 0x53, 0x14, 0x90, 0xc9, 0xa6, 0x24, 0x3f, 0xbd, 0xb0, 0xc5, 0xeb, 0x4c, 0xd6, 0x42, 0xd2, 0x61, 0x15, 0x05, 0xae, 0x10, 0x84, 0x97, 0x57, 0x38, 0xad, 0x84, 0x62, 0x1d, 0x67, 0xf5 } -, - /* Signature */ - 129, - { 0x4f, 0xcf, 0xa5, 0x73, 0x97, 0xf2, 0x7e, 0xe0, 0xf8, 0xae, 0x75, 0xa0, 0xa5, 0x4d, 0x54, 0xb0, 0xc5, 0x1b, 0x95, 0x7e, 0xe6, 0x3b, 0xf7, 0x90, 0x1b, 0x60, 0x55, 0xcc, 0x39, 0x87, 0xc3, 0x2d, 0xf7, 0x22, 0x0e, 0x16, 0x6a, 0x71, 0x60, 0x6a, 0xbc, 0x78, 0xf9, 0x11, 0x07, 0xf9, 0x74, 0xdf, 0xf7, 0xd6, 0x25, 0x7c, 0x25, 0x6d, 0xc6, 0xed, 0x7a, 0x69, 0xc3, 0xc9, 0x9f, 0x9f, 0x89, 0xab, 0xb5, 0x8f, 0xe5, 0x89, 0xb7, 0xee, 0x7c, 0xad, 0x0f, 0x48, 0xc1, 0x60, 0x10, 0xd0, 0x46, 0xa9, 0xc4, 0xe0, 0x04, 0xbb, 0xe1, 0xa8, 0x29, 0x79, 0x68, 0xd4, 0x0b, 0xc7, 0x06, 0x82, 0xeb, 0xae, 0xa4, 0x48, 0x52, 0x5d, 0xbe, 0xe1, 0x6b, 0x03, 0xbd, 0x0b, 0x65, 0x26, 0xd0, 0x98, 0xd0, 0x9b, 0x6b, 0xad, 0x9a, 0xba, 0x03, 0x93, 0x05, 0xe2, 0xab, 0x79, 0x69, 0x02, 0x08, 0x65, 0x80, 0xcc, 0xf0 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 14: A 1536-bit RSA key pair", -{ - /* Modulus */ - 192, - { 0xd8, 0x70, 0xa7, 0x76, 0xcd, 0x13, 0xed, 0x44, 0x3d, 0xf3, 0x99, 0x08, 0xbe, 0xe2, 0xca, 0xd7, 0x3c, 0x48, 0x5f, 0xd9, 0xbf, 0x06, 0x32, 0x13, 0x22, 0x88, 0x7f, 0xbe, 0x65, 0x5c, 0x08, 0xcb, 0xe4, 0xc8, 0xf6, 0x3e, 0x25, 0x4f, 0xc9, 0x1c, 0x75, 0xf0, 0x55, 0x7d, 0x90, 0x1d, 0x43, 0x5b, 0x0e, 0x8d, 0xed, 0x82, 0xd4, 0x91, 0x73, 0x41, 0x4d, 0x29, 0x86, 0x03, 0x24, 0xe4, 0x6c, 0x1b, 0x03, 0x0d, 0xfe, 0xaa, 0x29, 0xd8, 0x0f, 0x98, 0x98, 0xc2, 0xc5, 0xe1, 0x01, 0xcb, 0xf6, 0xda, 0xa0, 0x62, 0x89, 0x78, 0xd4, 0x15, 0xb5, 0x02, 0xde, 0xa2, 0x6d, 0xe6, 0x56, 0x1c, 0x79, 0xab, 0x06, 0x5c, 0x6d, 0xca, 0x6a, 0xbc, 0x4d, 0x4d, 0x4d, 0x5e, 0x9f, 0x5c, 0x74, 0xcb, 0x3e, 0x6a, 0x5a, 0xf7, 0x1d, 0x1f, 0x90, 0xfa, 0x5e, 0xaa, 0x1b, 0xe0, 0xca, 0x94, 0x7a, 0x70, 0xa3, 0x9e, 0xfd, 0x31, 0x5c, 0x4d, 0xf2, 0x1a, 0x1a, 0x82, 0x1c, 0xaa, 0xff, 0x8d, 0xcb, 0xad, 0x13, 0xb2, 0x9c, 0x7e, 0x82, 0xaa, 0xd5, 0x3c, 0x64, 0xf5, 0x82, 0xec, 0x9e, 0xc3, 0x1e, 0x6b, 0xde, 0x82, 0xea, 0x5a, 0x5f, 0x4c, 0xcc, 0xf0, 0xc4, 0x57, 0xb8, 0x88, 0xf1, 0x55, 0x0c, 0x4f, 0xf8, 0xe1, 0xc1, 0x78, 0xa7, 0x6a, 0x46, 0xc1, 0x96, 0xf4, 0xbe, 0xf5, 0x9e, 0x61, 0xdd, 0x94, 0x4e, 0x47 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 192, - { 0x05, 0x88, 0x8f, 0xc7, 0x7a, 0x43, 0xbd, 0xa7, 0xa6, 0x7b, 0xd1, 0x58, 0x47, 0x65, 0x0d, 0xf1, 0x85, 0xc1, 0x85, 0xed, 0xcf, 0xb3, 0xed, 0x58, 0xce, 0xe3, 0xb5, 0x7c, 0x5d, 0x24, 0x06, 0xb7, 0x8b, 0xc0, 0x55, 0x87, 0x4e, 0x35, 0xe5, 0x7a, 0xdc, 0x4b, 0x0a, 0x2c, 0x7d, 0x20, 0x3a, 0x66, 0x1c, 0x0f, 0xa5, 0xd8, 0x57, 0xed, 0xe6, 0x07, 0xef, 0xdc, 0x95, 0x68, 0x04, 0x2b, 0xf0, 0xd5, 0x99, 0xf4, 0xe4, 0x23, 0x5e, 0x91, 0x7f, 0x08, 0x94, 0x33, 0x3a, 0x92, 0xdf, 0x94, 0x62, 0xd9, 0xc1, 0x0a, 0xf3, 0xdf, 0xca, 0x70, 0x49, 0xa1, 0xea, 0xa6, 0x35, 0x70, 0x13, 0x98, 0x83, 0xc5, 0xbe, 0xfe, 0xbe, 0xe4, 0xe2, 0x21, 0x89, 0x43, 0xd3, 0x0f, 0xc6, 0x45, 0xff, 0xe8, 0xb9, 0x14, 0xd2, 0x18, 0xdd, 0x58, 0x96, 0x0a, 0xad, 0xc1, 0x21, 0x71, 0x5b, 0xce, 0x5c, 0xcd, 0xde, 0x4a, 0x2c, 0x73, 0xa8, 0xd9, 0xd8, 0x6a, 0x4e, 0xb6, 0xe4, 0x55, 0xdc, 0x92, 0x4f, 0xd7, 0x4a, 0x0b, 0x1f, 0x75, 0x69, 0x1c, 0x28, 0x1b, 0xae, 0x91, 0x4d, 0x69, 0x9e, 0xe2, 0x59, 0xd8, 0x5c, 0x5f, 0xb5, 0xdd, 0x99, 0x9e, 0xbe, 0xf9, 0xb7, 0x0a, 0x4b, 0xd9, 0x4a, 0xa4, 0xfa, 0xfa, 0xe2, 0x6c, 0xa7, 0x84, 0xd3, 0x2f, 0xd4, 0xe0, 0x77, 0xdb, 0xb6, 0xea, 0x69, 0x3b, 0xcd, 0x6d, 0x27, 0xd5 } -, - /* Prime 1 */ - 96, - { 0xff, 0x8e, 0xf1, 0xe7, 0x4c, 0x44, 0x5a, 0x5c, 0xc8, 0x97, 0x3a, 0x81, 0x9c, 0x75, 0x45, 0x49, 0x12, 0x35, 0x72, 0x0c, 0xf9, 0xeb, 0x83, 0xf1, 0x81, 0x13, 0x3c, 0x78, 0xa1, 0x4d, 0xcc, 0x4c, 0xe5, 0xe7, 0x75, 0xbe, 0x3e, 0x0c, 0x46, 0xed, 0x2f, 0x21, 0x9a, 0xb8, 0x8d, 0x87, 0x77, 0xad, 0x6e, 0xcb, 0xe4, 0x0c, 0xf9, 0x18, 0x76, 0x4d, 0x7e, 0x37, 0xc6, 0x68, 0x35, 0x91, 0xe7, 0xaa, 0xa1, 0x3b, 0x24, 0x4b, 0x7f, 0xcc, 0x0e, 0xb6, 0xdf, 0xd7, 0x6a, 0x11, 0x5f, 0x30, 0xed, 0x2d, 0x63, 0x68, 0xc8, 0xea, 0x78, 0x0a, 0x21, 0x1c, 0x0a, 0xc9, 0xc0, 0x72, 0x5d, 0xfa, 0xb0, 0x8d } -, - /* Prime 2 */ - 96, - { 0xd8, 0xd0, 0x67, 0x64, 0xc1, 0xf7, 0x64, 0x54, 0xc6, 0x8a, 0x3a, 0x08, 0x1e, 0x95, 0xd7, 0x47, 0xc2, 0x94, 0x11, 0xad, 0xc4, 0x03, 0xa7, 0xcb, 0x71, 0xb4, 0x3a, 0xf5, 0x05, 0xca, 0xbe, 0x41, 0xb4, 0x9c, 0x97, 0x1c, 0x13, 0xad, 0x65, 0x63, 0xb8, 0xc9, 0x0b, 0x93, 0xb5, 0x89, 0x79, 0xbb, 0x74, 0xf8, 0x20, 0xef, 0xb8, 0xde, 0xd8, 0x1f, 0x46, 0x30, 0x54, 0xa7, 0x7f, 0xb3, 0x0b, 0xb0, 0x99, 0x98, 0x51, 0xa4, 0x3c, 0xcd, 0x01, 0x69, 0x18, 0x51, 0x31, 0xf7, 0x43, 0x1b, 0x02, 0xe9, 0xc6, 0xb9, 0xf8, 0x38, 0x71, 0xd9, 0xcd, 0x5e, 0x0c, 0x3c, 0x58, 0x70, 0xcf, 0x97, 0x97, 0x23 } -, - /* Prime exponent 1 */ - 96, - { 0xe8, 0xd6, 0x15, 0xf4, 0x04, 0x7a, 0xaa, 0x51, 0xaa, 0xb8, 0x8e, 0x27, 0x94, 0xa3, 0x0b, 0xd3, 0x3d, 0x71, 0xd0, 0x4d, 0x9e, 0x4e, 0x43, 0xd2, 0x7f, 0x25, 0x45, 0x8d, 0x2a, 0x79, 0xb5, 0x4f, 0xc2, 0x8f, 0x95, 0xa9, 0x14, 0xe3, 0x1e, 0xa3, 0xee, 0xb3, 0x11, 0x42, 0x60, 0x40, 0x32, 0x7b, 0xa3, 0x5c, 0xc4, 0x94, 0x45, 0x47, 0x52, 0x51, 0xdc, 0x53, 0x78, 0xc3, 0x6d, 0x3b, 0x57, 0xf5, 0x10, 0x1c, 0xd0, 0x3e, 0xb1, 0x5a, 0xfb, 0x75, 0x06, 0x90, 0x3f, 0x25, 0x40, 0xb3, 0x55, 0x04, 0x6b, 0x74, 0x06, 0xca, 0x09, 0x40, 0x41, 0x56, 0x49, 0x45, 0xf3, 0xbe, 0xbf, 0x7d, 0x2d, 0xe9 } -, - /* Prime exponent 2 */ - 96, - { 0x73, 0x5d, 0xb1, 0x26, 0x73, 0xef, 0x67, 0x7b, 0x94, 0x89, 0x48, 0x87, 0xb9, 0x7e, 0x91, 0xa6, 0xa5, 0x6a, 0x94, 0x5d, 0x99, 0xc7, 0x38, 0x29, 0x90, 0xbf, 0x0e, 0x00, 0x02, 0xac, 0xf6, 0xbf, 0x8f, 0x93, 0x22, 0xf4, 0xd5, 0xa3, 0x96, 0x27, 0x91, 0xd3, 0xa8, 0x4d, 0x58, 0x73, 0x66, 0x4a, 0xd0, 0xda, 0x96, 0xeb, 0xf7, 0xba, 0xdb, 0xd5, 0x08, 0x4b, 0xff, 0x3f, 0x81, 0x3b, 0x8c, 0x24, 0xd4, 0x15, 0xb0, 0x9b, 0x6b, 0x9e, 0xc9, 0xf9, 0x59, 0xef, 0x1a, 0x5f, 0x2f, 0x5d, 0xd8, 0x16, 0xfc, 0x9f, 0x47, 0xed, 0x00, 0xe7, 0x9b, 0xd7, 0x47, 0x3b, 0x74, 0xf3, 0xd2, 0x02, 0x1f, 0x71 } -, - /* Coefficient */ - 96, - { 0x10, 0x62, 0x18, 0xaf, 0x97, 0x1d, 0x92, 0x95, 0x91, 0x59, 0x90, 0xa4, 0xed, 0x3e, 0x09, 0xd3, 0x63, 0xdb, 0x33, 0x06, 0xb0, 0x90, 0xa1, 0x33, 0xeb, 0xd7, 0x54, 0xe2, 0xbd, 0x77, 0x6b, 0x25, 0x85, 0x99, 0x9d, 0x4f, 0x88, 0x43, 0x03, 0x0a, 0xc7, 0x0c, 0x0f, 0xf5, 0xde, 0x52, 0x12, 0x67, 0x22, 0x34, 0xc0, 0x07, 0xce, 0x74, 0x56, 0x4c, 0x79, 0x1e, 0xdc, 0xd5, 0x76, 0xf9, 0x68, 0x44, 0x04, 0x8c, 0xfa, 0x66, 0x36, 0x46, 0xb8, 0xfd, 0x80, 0xc7, 0x51, 0x26, 0xb2, 0x26, 0x6e, 0x48, 0xf1, 0xfa, 0xa7, 0x05, 0x44, 0xad, 0x42, 0x04, 0xfd, 0x61, 0x56, 0x29, 0x2e, 0x51, 0x6e, 0x13 } - -} -, -{{ - "PKCS#1 v1.5 Signature Example 14.1", - /* Message to be signed */ - 135, - { 0xf7, 0xa3, 0xc6, 0x7e, 0x92, 0xa7, 0x87, 0xf3, 0x5d, 0xcc, 0x47, 0xae, 0xd7, 0xd6, 0xb6, 0x19, 0x29, 0x67, 0xbd, 0xfd, 0x00, 0xa6, 0xac, 0xbf, 0x6f, 0x7e, 0xfe, 0x46, 0xd3, 0xac, 0xae, 0xd9, 0x78, 0x8a, 0xa4, 0xf1, 0xdb, 0x18, 0x44, 0x02, 0x24, 0x9f, 0x9a, 0xce, 0xfc, 0x1c, 0x7d, 0xfb, 0x1e, 0x69, 0x0d, 0x24, 0x73, 0x8d, 0xe8, 0x6f, 0xa5, 0xb5, 0x25, 0x0f, 0x97, 0x9e, 0xbd, 0x8f, 0x77, 0x8e, 0xec, 0x0d, 0x7f, 0xcf, 0x73, 0x1f, 0xa2, 0x25, 0x08, 0x6c, 0x86, 0x65, 0x64, 0xed, 0x3e, 0xb1, 0x54, 0xdd, 0x45, 0x8d, 0x05, 0x00, 0x28, 0x2f, 0x86, 0x80, 0x48, 0x87, 0xd4, 0x43, 0x5e, 0xda, 0x9a, 0x44, 0x36, 0xa8, 0xe9, 0x23, 0xa2, 0x0c, 0xb4, 0xb4, 0xd0, 0xe8, 0x1c, 0x91, 0x11, 0x4b, 0xdc, 0x06, 0x82, 0x27, 0x8e, 0xc2, 0x58, 0x86, 0x07, 0x99, 0xb5, 0x9c, 0x94, 0x36, 0xf4, 0x3a, 0x53, 0xca, 0xb4, 0xc4, 0xcd } -, - /* Signature */ - 192, - { 0x09, 0xd1, 0x43, 0x5b, 0xf5, 0xa9, 0xc1, 0x72, 0x03, 0xd5, 0x37, 0xfe, 0x57, 0xdf, 0x98, 0x7b, 0x7a, 0x51, 0xf3, 0x4b, 0x2a, 0x14, 0x09, 0x7e, 0x06, 0xa0, 0xde, 0x56, 0x3b, 0xe7, 0xd6, 0x4b, 0x4e, 0xa3, 0x79, 0x73, 0xb4, 0xfe, 0x99, 0x73, 0xa6, 0x6a, 0x3f, 0x31, 0xba, 0x8e, 0x07, 0xe9, 0x11, 0x7b, 0x6a, 0x1e, 0xe7, 0x09, 0x61, 0x33, 0x7b, 0x4d, 0x2b, 0x0d, 0xf5, 0x98, 0x10, 0xb6, 0x24, 0x08, 0x51, 0x18, 0xbd, 0xa7, 0x0a, 0xc7, 0x4a, 0xe4, 0x3e, 0x2f, 0xbc, 0xf8, 0x92, 0x27, 0x63, 0x03, 0x23, 0xda, 0x68, 0x30, 0xf5, 0xb1, 0xa2, 0xb9, 0x54, 0xf1, 0xb1, 0x5a, 0xea, 0x07, 0x54, 0xdf, 0x2c, 0x51, 0x18, 0x57, 0x95, 0x16, 0xe8, 0x77, 0xcc, 0xb0, 0xb1, 0x28, 0x6c, 0x57, 0x24, 0x65, 0x5e, 0xf8, 0xd2, 0x91, 0x85, 0x66, 0x6f, 0x6e, 0x9b, 0xd3, 0x2a, 0x6b, 0xd9, 0xce, 0x9e, 0x1e, 0xf9, 0x47, 0x29, 0xfc, 0x67, 0xd6, 0xa3, 0x0e, 0x64, 0x56, 0x0e, 0xcf, 0x78, 0xbf, 0x8e, 0x1b, 0x2b, 0x40, 0xe5, 0x06, 0x05, 0xe2, 0x5a, 0xe8, 0x0c, 0x38, 0x67, 0x64, 0xae, 0xd1, 0x1a, 0x0e, 0x71, 0x44, 0x90, 0x49, 0xc9, 0x39, 0xb2, 0x96, 0x2f, 0x6c, 0x24, 0x17, 0xa3, 0x58, 0xcd, 0xc8, 0x10, 0x6b, 0x12, 0xb1, 0xa5, 0x58, 0x76, 0x39, 0x43, 0x8a, 0xf1, 0xa6, 0x8d, 0x32 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Signature Example 14.2", - /* Message to be signed */ - 131, - { 0x2a, 0x13, 0x30, 0x03, 0xab, 0x67, 0xcd, 0xd2, 0xe8, 0x3b, 0x44, 0xe9, 0xe9, 0xdc, 0x77, 0x7d, 0xe0, 0x1f, 0x4d, 0x23, 0x3d, 0x22, 0xe7, 0xd2, 0xb4, 0x46, 0x7f, 0x04, 0x81, 0x2a, 0x3a, 0xeb, 0xff, 0xb1, 0x0a, 0x09, 0x24, 0x54, 0xe3, 0x3b, 0x9e, 0x70, 0x28, 0x24, 0x93, 0x28, 0x74, 0x7e, 0xa1, 0x4a, 0x11, 0xc7, 0x98, 0xac, 0x2e, 0x14, 0x6e, 0x4e, 0x49, 0x65, 0x9b, 0xa8, 0x60, 0x67, 0xdb, 0x64, 0xe9, 0xbd, 0x80, 0xa7, 0x02, 0x1a, 0xab, 0xcc, 0x22, 0x85, 0x6e, 0x81, 0x01, 0x40, 0xc2, 0x0f, 0xd8, 0xc6, 0x52, 0x7b, 0xad, 0xbb, 0xd9, 0xfa, 0x59, 0x53, 0xfa, 0x77, 0xe6, 0x85, 0x87, 0x00, 0xbe, 0xb6, 0xc7, 0x4d, 0x5a, 0x46, 0x3c, 0x9d, 0xa8, 0x61, 0x13, 0x3b, 0xaa, 0x5b, 0xd6, 0xa5, 0x99, 0x80, 0x7a, 0xe9, 0x16, 0x2e, 0x3a, 0xf3, 0xa3, 0x48, 0xd0, 0x4a, 0x4e, 0xdd, 0x2f, 0xfb, 0xab } -, - /* Signature */ - 192, - { 0x35, 0xe6, 0x66, 0xcf, 0xb8, 0x7c, 0x04, 0x88, 0xa8, 0x6f, 0xdf, 0xed, 0x5f, 0x9d, 0xea, 0xed, 0xbc, 0x46, 0x74, 0x17, 0x1c, 0x31, 0x84, 0x59, 0xac, 0xaa, 0xaa, 0x20, 0xe1, 0xca, 0xd7, 0xc5, 0x86, 0x04, 0x14, 0x0a, 0x80, 0xff, 0x7f, 0x56, 0x5b, 0xfb, 0xc8, 0x6e, 0x90, 0x32, 0x8d, 0x4c, 0x72, 0x9b, 0x91, 0xbf, 0x72, 0xa9, 0x8d, 0xb7, 0x01, 0xc1, 0xbe, 0x63, 0x8a, 0x6e, 0x8f, 0x2e, 0x46, 0x8f, 0x20, 0x39, 0x24, 0x70, 0xc7, 0xc5, 0xc3, 0x44, 0x42, 0xd5, 0x1b, 0x1b, 0x15, 0x5f, 0xb4, 0x64, 0xb8, 0xa5, 0x56, 0xf4, 0xa1, 0x70, 0xc0, 0x23, 0x01, 0xfe, 0xd0, 0xd1, 0xaa, 0x92, 0xaa, 0xfd, 0xeb, 0xc3, 0xf1, 0x8e, 0xa8, 0xb4, 0xd7, 0x1e, 0x24, 0x5c, 0x25, 0x26, 0xf6, 0xfe, 0x66, 0x5d, 0xe4, 0x83, 0x85, 0xf4, 0x6c, 0xe1, 0xbf, 0x33, 0x12, 0xfa, 0x89, 0x28, 0x09, 0x8e, 0xd3, 0x31, 0x2b, 0x61, 0x11, 0x6c, 0xa7, 0xe4, 0x23, 0x20, 0x4e, 0xf0, 0x8b, 0xd2, 0xdf, 0x3a, 0xd7, 0xbb, 0xc8, 0x50, 0x09, 0x8c, 0xb0, 0x26, 0x83, 0x26, 0x66, 0x25, 0xbb, 0xd9, 0x59, 0x82, 0x51, 0x35, 0xa4, 0x5f, 0x03, 0x82, 0x9d, 0x09, 0x6f, 0xed, 0x18, 0xb2, 0x0b, 0xaa, 0x3f, 0x9d, 0x44, 0xb0, 0x07, 0xaa, 0x24, 0x1f, 0x92, 0xf8, 0x88, 0x60, 0x55, 0xd9, 0x8e, 0x0e, 0x07, 0x04 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.3", - /* Message to be signed */ - 42, - { 0x58, 0x62, 0x7f, 0xfa, 0xaa, 0x8e, 0x80, 0x0a, 0x8b, 0xe9, 0x8e, 0x42, 0xf5, 0x1a, 0x83, 0x61, 0x1c, 0xfa, 0xb7, 0xee, 0x37, 0x6b, 0x34, 0x73, 0x7b, 0x3e, 0x48, 0xe1, 0xbc, 0x17, 0x42, 0xda, 0xa7, 0x7d, 0xe4, 0x7e, 0x1a, 0x9b, 0x29, 0x33, 0x77, 0xaa } -, - /* Signature */ - 192, - { 0x3d, 0x17, 0xcb, 0x38, 0x6c, 0x88, 0x78, 0x4d, 0x35, 0x9a, 0xd3, 0xc3, 0x8d, 0xbe, 0x88, 0x8b, 0xfa, 0xe8, 0x31, 0xbf, 0xb8, 0xed, 0xc9, 0xd0, 0xe8, 0x01, 0xe7, 0xd6, 0x9e, 0x1d, 0xd4, 0xc2, 0x44, 0x1d, 0x68, 0xfd, 0xbb, 0x35, 0x12, 0x6c, 0x73, 0xa4, 0xed, 0xab, 0xbf, 0xf5, 0x4e, 0x74, 0xfa, 0x51, 0x09, 0xda, 0xd8, 0xb5, 0xc3, 0x13, 0xd8, 0x6a, 0x79, 0xe4, 0xd4, 0x12, 0x76, 0x60, 0xfc, 0x2a, 0x8e, 0x1c, 0x93, 0xfa, 0x8d, 0x09, 0x2a, 0xcc, 0xf0, 0x1c, 0xc1, 0x8a, 0x60, 0x6c, 0xf0, 0x7d, 0xe2, 0xdc, 0x3e, 0x7b, 0x55, 0x33, 0x11, 0x52, 0xdb, 0x01, 0xb6, 0xca, 0xea, 0x1e, 0xce, 0xc9, 0x09, 0x31, 0x99, 0xbe, 0x62, 0xc3, 0xe1, 0x23, 0xe2, 0x87, 0x31, 0x13, 0x50, 0x3b, 0x22, 0x03, 0x0f, 0x16, 0x8d, 0xaf, 0xc4, 0xe6, 0xbd, 0x06, 0x5a, 0xd2, 0xf6, 0xb1, 0xde, 0xd0, 0x5b, 0xe0, 0xc2, 0xf9, 0xb6, 0x7b, 0xdc, 0x1a, 0x3b, 0xb1, 0x8d, 0xa9, 0x59, 0x4c, 0x95, 0x7d, 0xa4, 0xe4, 0x9f, 0xac, 0x3f, 0xe7, 0x6e, 0x07, 0x66, 0xf7, 0x4e, 0xb0, 0xd5, 0x23, 0xe4, 0xdd, 0x1a, 0xe7, 0x59, 0xda, 0xd6, 0xb9, 0xb9, 0x08, 0xb7, 0xfc, 0x8b, 0x97, 0xef, 0x5f, 0x4c, 0x82, 0x92, 0x32, 0x0a, 0xc3, 0x87, 0xc3, 0x50, 0x8b, 0x54, 0xcf, 0xb8, 0x5d, 0x34, 0xf6, 0xad, 0x39 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.4", - /* Message to be signed */ - 173, - { 0x0f, 0x0f, 0x8d, 0x3c, 0x0e, 0x4d, 0x26, 0x08, 0xaf, 0xad, 0x5a, 0x88, 0x8e, 0xa1, 0x4b, 0x3f, 0x6b, 0x2b, 0x27, 0x89, 0xdd, 0x22, 0x12, 0xb8, 0x59, 0x09, 0xe6, 0x4b, 0xfb, 0x10, 0x4d, 0x0f, 0x7d, 0xe4, 0x27, 0xd1, 0x4a, 0x9f, 0xfa, 0x85, 0x5e, 0x2d, 0x4c, 0xa2, 0x44, 0x23, 0x36, 0xe5, 0x59, 0x56, 0x8b, 0x28, 0x41, 0x5d, 0x60, 0xcf, 0x80, 0x63, 0xde, 0x55, 0x92, 0x17, 0x1b, 0x26, 0x9b, 0x3d, 0x76, 0x33, 0x51, 0xc7, 0xf7, 0xd9, 0xd2, 0x58, 0x09, 0xe7, 0x02, 0x20, 0xee, 0x30, 0xfe, 0x8a, 0x00, 0xb9, 0x5d, 0x4c, 0x20, 0x20, 0x26, 0x89, 0x7e, 0xd2, 0xc6, 0x1d, 0x7a, 0xd4, 0x3a, 0xed, 0xdf, 0x36, 0xb5, 0xc2, 0xcb, 0xe2, 0x1e, 0x00, 0x86, 0xdb, 0xd0, 0xfd, 0xfd, 0x19, 0xe4, 0x3f, 0x02, 0x77, 0xf3, 0xbc, 0x95, 0xed, 0x55, 0xa3, 0x4a, 0xf9, 0x30, 0x91, 0x66, 0x02, 0x19, 0x3c, 0xfe, 0x04, 0x51, 0x4b, 0xd2, 0x6a, 0x05, 0x7e, 0x56, 0x2a, 0x11, 0x90, 0xc2, 0x7e, 0xaa, 0xb6, 0xc3, 0x22, 0xfc, 0xfa, 0xf4, 0xbb, 0xcc, 0x7f, 0x20, 0xc3, 0x77, 0x9c, 0x63, 0x8d, 0x7b, 0xbc, 0x07, 0x08, 0x6c, 0xf7, 0x5b, 0xf8, 0x39, 0x96, 0xdb, 0x44, 0x63 } -, - /* Signature */ - 192, - { 0x50, 0x90, 0x45, 0x12, 0x36, 0x10, 0x50, 0x87, 0x2e, 0xae, 0x80, 0x10, 0x26, 0x28, 0xb6, 0x3d, 0x02, 0x16, 0x8d, 0xca, 0x52, 0xf0, 0xab, 0xd8, 0x77, 0x20, 0xea, 0x48, 0x05, 0x0d, 0x2c, 0x62, 0x06, 0x1a, 0xa2, 0x15, 0x32, 0x68, 0xbe, 0xf8, 0xef, 0xb3, 0x4e, 0xed, 0x46, 0x17, 0x1a, 0x62, 0x88, 0xe5, 0x04, 0xd4, 0x20, 0xf6, 0xfc, 0x14, 0x51, 0x38, 0x61, 0x1e, 0x75, 0xed, 0x3c, 0xf7, 0x9b, 0x4d, 0x10, 0x26, 0x64, 0xd8, 0x64, 0x4f, 0xf3, 0xe9, 0xe5, 0xdb, 0xfd, 0x71, 0xcd, 0xc2, 0x7a, 0x21, 0x0e, 0xfb, 0x10, 0xbe, 0x90, 0x27, 0x56, 0x04, 0xf8, 0xd4, 0x49, 0x14, 0x8b, 0x3f, 0x86, 0x09, 0x90, 0x39, 0xc3, 0x3a, 0xef, 0x90, 0xbf, 0x19, 0x1b, 0x35, 0x18, 0xeb, 0x45, 0x9d, 0xa3, 0xba, 0x14, 0xfd, 0x0c, 0x72, 0x22, 0x9d, 0xea, 0x5f, 0xac, 0x2f, 0x7d, 0xad, 0xe1, 0x08, 0x5c, 0x8a, 0x23, 0x70, 0xbb, 0xfc, 0xfa, 0x2e, 0x3a, 0x9e, 0x63, 0xca, 0x22, 0x4f, 0x6d, 0xe8, 0xc8, 0xd2, 0x97, 0xa3, 0xb1, 0xf0, 0x6f, 0x1f, 0xc9, 0x49, 0x78, 0x90, 0xfd, 0x0e, 0x0e, 0x13, 0x88, 0x7f, 0xac, 0xb1, 0x52, 0xd1, 0x2d, 0x96, 0x39, 0x25, 0x28, 0xef, 0x28, 0xd0, 0x72, 0x43, 0x31, 0xff, 0x41, 0x40, 0x30, 0xc7, 0xa6, 0x38, 0x55, 0x81, 0x3c, 0xcd, 0x89, 0xfb, 0xdb, 0x1b } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.5", - /* Message to be signed */ - 13, - { 0x26, 0x65, 0xcb, 0x5e, 0xe3, 0x6a, 0xa9, 0xbb, 0x1a, 0x5c, 0xde, 0x7c, 0xe8 } -, - /* Signature */ - 192, - { 0x4f, 0x38, 0xc2, 0xba, 0x84, 0xc5, 0x0d, 0x46, 0xdf, 0x53, 0x10, 0x91, 0xb6, 0x27, 0x12, 0x14, 0x9c, 0x1f, 0x42, 0xdb, 0xd7, 0x7e, 0x03, 0xd1, 0x85, 0xea, 0x96, 0xed, 0xa8, 0x02, 0x33, 0x7c, 0x22, 0xc1, 0x13, 0x0b, 0xc3, 0xbe, 0xce, 0xbf, 0x15, 0x39, 0xfd, 0x11, 0x89, 0x38, 0x51, 0xda, 0xe3, 0xcc, 0x15, 0x67, 0xcb, 0x6c, 0x73, 0xa7, 0x2f, 0xa1, 0xc9, 0x69, 0x48, 0x68, 0x21, 0x12, 0x7e, 0x7c, 0xfe, 0xa1, 0x36, 0x3e, 0xee, 0x95, 0x2b, 0x7c, 0x6e, 0xb5, 0x9e, 0x10, 0x2c, 0x66, 0x57, 0xc0, 0x80, 0x35, 0x27, 0x2c, 0xdf, 0x4a, 0xb5, 0xe5, 0x83, 0xed, 0x73, 0x7a, 0xd0, 0x28, 0xac, 0x1c, 0xfa, 0xfe, 0xdd, 0xc9, 0x07, 0x3d, 0xfb, 0xd7, 0xd3, 0xba, 0x3d, 0xa9, 0xe8, 0xdc, 0xd8, 0x46, 0xfa, 0x36, 0x5c, 0x9c, 0xcd, 0x8e, 0x9b, 0x39, 0x48, 0x3d, 0x37, 0x07, 0x3c, 0x1a, 0x7b, 0x78, 0x2e, 0xe7, 0x12, 0x1b, 0xb1, 0xa2, 0xad, 0x8b, 0xf5, 0xf8, 0xed, 0x6e, 0x65, 0x3e, 0x92, 0x4d, 0xeb, 0xad, 0x87, 0x1b, 0x74, 0x43, 0x39, 0xe5, 0xae, 0x7e, 0x96, 0xf6, 0x0d, 0xcc, 0x45, 0xea, 0x5d, 0x69, 0x7d, 0x3b, 0x1c, 0xc7, 0xc5, 0xe8, 0xda, 0x04, 0xe9, 0x2b, 0xe0, 0x6c, 0xad, 0x2e, 0x61, 0x4e, 0xac, 0x31, 0x8a, 0xec, 0xaf, 0x12, 0xd5, 0xa7, 0x62, 0x34, 0xc2, 0xc0 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.6", - /* Message to be signed */ - 125, - { 0x7b, 0x7b, 0x61, 0x61, 0x02, 0x0f, 0xaf, 0xb4, 0x88, 0x71, 0x63, 0x21, 0x34, 0x0d, 0xaf, 0x2c, 0x06, 0xac, 0x43, 0xce, 0x21, 0x32, 0x86, 0x86, 0x84, 0xaa, 0xaf, 0xab, 0x13, 0x99, 0x65, 0x3d, 0x35, 0x3b, 0x26, 0x93, 0xad, 0x73, 0xcb, 0x55, 0xb7, 0x1d, 0x66, 0xac, 0xd0, 0x1a, 0x16, 0x0c, 0xbf, 0x74, 0x37, 0x67, 0xbd, 0x96, 0xe7, 0xfd, 0x1c, 0x7a, 0x13, 0x32, 0x06, 0x65, 0xbb, 0xad, 0x1c, 0x4a, 0x0c, 0xed, 0x26, 0x59, 0x3c, 0xe8, 0x9c, 0xd8, 0x2f, 0x54, 0x6b, 0xd4, 0xd1, 0xb1, 0xbc, 0xd8, 0x2c, 0x65, 0xa4, 0x66, 0xf9, 0x9d, 0xa0, 0x12, 0xa4, 0x1e, 0x8c, 0x41, 0x20, 0x69, 0x81, 0x09, 0x58, 0x47, 0x5b, 0x4d, 0x9c, 0x2f, 0x80, 0xd8, 0x2d, 0x06, 0x41, 0x4c, 0x83, 0x25, 0xeb, 0x4f, 0x2c, 0x5a, 0x11, 0x66, 0xf1, 0xf1, 0xd2, 0xd1, 0x07, 0xd4, 0x8c } -, - /* Signature */ - 192, - { 0xd5, 0xcb, 0xb6, 0xc7, 0xef, 0xf4, 0xa6, 0x3a, 0xd8, 0x25, 0x0d, 0xe9, 0x4c, 0xc2, 0x9f, 0x7f, 0x31, 0xa0, 0xd7, 0x10, 0x6d, 0x5d, 0x77, 0x1b, 0x71, 0x5d, 0xf8, 0xa6, 0x75, 0xfd, 0x16, 0x34, 0xd6, 0xe8, 0xab, 0x58, 0x87, 0x5c, 0xc4, 0xc1, 0x51, 0x7b, 0x2f, 0xad, 0xf4, 0xe8, 0x5c, 0x1c, 0xb8, 0xb8, 0x53, 0x60, 0xe0, 0x68, 0x75, 0x87, 0xd1, 0x48, 0x08, 0x9f, 0x3f, 0x48, 0xb7, 0x9d, 0x98, 0xd2, 0x02, 0x7c, 0x50, 0x77, 0x0b, 0x33, 0x4f, 0x12, 0x52, 0xac, 0x0c, 0x3b, 0x2f, 0x03, 0x65, 0x34, 0xc3, 0xc2, 0x97, 0x22, 0xf6, 0x08, 0x7d, 0x06, 0xd7, 0x06, 0xce, 0xc7, 0xc4, 0xbd, 0xce, 0x1c, 0xd6, 0x4f, 0x7b, 0x4e, 0x07, 0x99, 0xa8, 0x7a, 0xa0, 0x73, 0xea, 0x83, 0x20, 0x29, 0x2b, 0x8e, 0xc8, 0x27, 0x17, 0x40, 0x6d, 0x36, 0xef, 0x91, 0x25, 0xe4, 0x1f, 0xb5, 0xd5, 0x3b, 0xcc, 0xdd, 0x62, 0x2d, 0x38, 0x8f, 0xcc, 0xee, 0x60, 0xa3, 0x85, 0xec, 0x20, 0x6a, 0x71, 0x5d, 0xc5, 0x4d, 0x78, 0x77, 0xbd, 0x72, 0x85, 0xd0, 0x84, 0x4c, 0x25, 0xd5, 0x93, 0x77, 0x97, 0x91, 0x27, 0x83, 0x96, 0xff, 0x9a, 0x8a, 0x91, 0x30, 0x6a, 0x54, 0xea, 0x76, 0x60, 0x7c, 0x81, 0x3f, 0x80, 0x1f, 0x38, 0x76, 0x0c, 0x3a, 0x81, 0x4b, 0x93, 0x96, 0x95, 0x9c, 0x29, 0xdb, 0xff, 0x9d } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.7", - /* Message to be signed */ - 12, - { 0x2b, 0x0a, 0xd6, 0x13, 0x82, 0x28, 0x78, 0xa5, 0x72, 0xe1, 0x42, 0x80 } -, - /* Signature */ - 192, - { 0x89, 0xc8, 0x10, 0x84, 0xda, 0xa8, 0xf9, 0x14, 0xb7, 0xe2, 0x44, 0x55, 0x10, 0x74, 0x17, 0xca, 0x62, 0x1c, 0x91, 0x02, 0xd5, 0x01, 0xee, 0xb4, 0x3d, 0x17, 0x4c, 0x7b, 0xad, 0x38, 0x1d, 0xb1, 0x8d, 0x95, 0x33, 0xc3, 0x41, 0x1a, 0xec, 0x60, 0x57, 0xca, 0x5a, 0x4d, 0xfd, 0xc3, 0xf1, 0x31, 0xc8, 0x88, 0xb8, 0x8f, 0x01, 0x30, 0x03, 0xd6, 0x17, 0xe0, 0x6d, 0x64, 0x47, 0x95, 0x02, 0xae, 0x7e, 0x42, 0x4a, 0x5d, 0xd6, 0x37, 0xb0, 0x33, 0x56, 0x40, 0x4d, 0x26, 0x0f, 0x5e, 0xd6, 0xb8, 0xcb, 0x16, 0xd2, 0x57, 0x85, 0x28, 0xcc, 0x3e, 0x85, 0x00, 0x34, 0x6e, 0xb7, 0x90, 0xbd, 0xad, 0x41, 0xb2, 0xe3, 0x6c, 0xa6, 0xf1, 0x98, 0x85, 0xe3, 0xf6, 0xf5, 0x10, 0x86, 0xbf, 0xfb, 0x6a, 0xbb, 0x9c, 0x66, 0x33, 0x6b, 0x49, 0x47, 0x34, 0x64, 0xc5, 0xd7, 0xed, 0x8e, 0x9f, 0xf8, 0x5e, 0x11, 0xae, 0xff, 0x40, 0x90, 0x67, 0xba, 0xb0, 0xa0, 0x5c, 0x41, 0xe8, 0x15, 0x1b, 0x8b, 0xe9, 0x87, 0xf3, 0xf5, 0x95, 0x8e, 0x3e, 0x6f, 0x26, 0x51, 0x5d, 0x96, 0xbf, 0x23, 0x4b, 0x22, 0xab, 0x91, 0xc0, 0x85, 0x7b, 0x6c, 0x08, 0xa4, 0x6b, 0x03, 0x05, 0xfe, 0x04, 0x4c, 0xa9, 0xaa, 0xa0, 0xd7, 0x0a, 0x27, 0x58, 0xa1, 0xce, 0x43, 0x16, 0x64, 0xa8, 0xdd, 0x79, 0x40, 0x8c, 0x16, 0xba } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.8", - /* Message to be signed */ - 76, - { 0x36, 0x93, 0x8c, 0x8c, 0x7c, 0x6f, 0x7e, 0x35, 0x52, 0x34, 0xdb, 0x5a, 0x32, 0xa6, 0x48, 0x10, 0xdb, 0x50, 0x2b, 0x67, 0xc6, 0xf5, 0x92, 0x54, 0x4f, 0xfb, 0x27, 0xeb, 0x1f, 0x22, 0xe0, 0x6f, 0x2d, 0x63, 0x8b, 0x56, 0xd5, 0xd2, 0xf7, 0xd1, 0x9e, 0x9e, 0x27, 0x1f, 0x2c, 0xc9, 0x0c, 0xc0, 0xdd, 0x36, 0xd6, 0xcc, 0x2c, 0x06, 0x17, 0x8b, 0xcc, 0x70, 0x6a, 0xef, 0x20, 0xe5, 0x6a, 0x35, 0x8e, 0x52, 0x4f, 0x63, 0x16, 0x76, 0x9c, 0x54, 0xb6, 0xde, 0x2d, 0xd5 } -, - /* Signature */ - 192, - { 0xa0, 0x37, 0x53, 0xa5, 0xfb, 0x54, 0xaa, 0x51, 0xf6, 0xdd, 0x8d, 0xab, 0x91, 0xf1, 0x9c, 0xb8, 0x65, 0x56, 0x84, 0x85, 0xf8, 0x55, 0x8f, 0x0d, 0x10, 0x3f, 0x0d, 0x2b, 0x6d, 0x78, 0x53, 0x6e, 0x79, 0xc8, 0x15, 0xc4, 0xa0, 0x37, 0xbc, 0xaf, 0x11, 0xb6, 0x9d, 0x4c, 0xdb, 0xab, 0x03, 0x5a, 0xbe, 0x21, 0x6f, 0x71, 0x52, 0xf6, 0x30, 0xff, 0xc7, 0x9f, 0x84, 0x9d, 0x8d, 0xcd, 0x46, 0x3a, 0xae, 0x6a, 0xe9, 0x7d, 0x3d, 0xf1, 0x5a, 0x9e, 0x73, 0xd2, 0x3f, 0x18, 0x78, 0xfa, 0xc7, 0x54, 0xcb, 0xdd, 0x57, 0x1a, 0xfe, 0xa5, 0xd2, 0x53, 0x57, 0xd4, 0xb8, 0x83, 0x45, 0xf4, 0x89, 0xbe, 0x0d, 0x67, 0xb9, 0xbf, 0xad, 0xf0, 0x23, 0xf2, 0x6e, 0x67, 0x31, 0x5e, 0xd5, 0xfb, 0xf3, 0x91, 0x91, 0x0a, 0xf4, 0x96, 0x9b, 0x72, 0x4b, 0xf0, 0xca, 0x31, 0xc1, 0x05, 0x9f, 0x8a, 0x39, 0x13, 0xb4, 0x8a, 0x13, 0x81, 0x9c, 0x23, 0x6c, 0x9b, 0xe8, 0xe8, 0x24, 0xca, 0x4c, 0xb6, 0x19, 0xfb, 0x7d, 0x78, 0x4c, 0xd5, 0xf9, 0x52, 0x6b, 0x39, 0x7c, 0x76, 0xc5, 0xd0, 0xc6, 0x0c, 0xf7, 0xf4, 0x8d, 0x11, 0x19, 0x6e, 0x54, 0xf7, 0x2a, 0x08, 0xbb, 0x42, 0xf7, 0x5a, 0xef, 0xe3, 0x8f, 0x0b, 0x91, 0xb4, 0x2b, 0xb8, 0x06, 0xde, 0x4b, 0x87, 0xc9, 0x08, 0x2f, 0x72, 0x1a, 0x68, 0x80, 0xca } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.9", - /* Message to be signed */ - 95, - { 0x60, 0x83, 0x0c, 0x01, 0xcf, 0xa8, 0x6f, 0xf2, 0xdc, 0xac, 0x7a, 0xf9, 0x32, 0x1e, 0xe5, 0xfe, 0x50, 0x2e, 0x0e, 0x7a, 0x6f, 0xac, 0xb7, 0x3e, 0x3f, 0x6b, 0xc9, 0x02, 0x64, 0x0a, 0x61, 0x09, 0x5f, 0x64, 0x6f, 0xd0, 0x3e, 0x80, 0xd5, 0x81, 0x82, 0x46, 0x53, 0x31, 0xe7, 0x5d, 0x66, 0x11, 0xa0, 0x97, 0x76, 0x81, 0x62, 0x70, 0x86, 0x24, 0x17, 0x29, 0xde, 0x9f, 0x44, 0xab, 0x43, 0x94, 0x9d, 0xac, 0x19, 0x36, 0x73, 0xbd, 0x6c, 0xf8, 0x7f, 0x5d, 0x65, 0x77, 0x1e, 0xf8, 0x72, 0x81, 0x63, 0x3f, 0xdd, 0x07, 0xba, 0xc4, 0x09, 0xa6, 0xe2, 0x32, 0xb6, 0x01, 0xae, 0xce, 0x2d } -, - /* Signature */ - 192, - { 0x40, 0x58, 0xf6, 0xe0, 0x24, 0x0d, 0x85, 0x1d, 0x61, 0x93, 0x95, 0xa7, 0x52, 0x87, 0xa8, 0x8f, 0xaf, 0xd8, 0xdc, 0x56, 0x00, 0xb0, 0x69, 0xbf, 0x19, 0xdc, 0x3e, 0x19, 0x21, 0xe1, 0x17, 0xb4, 0x97, 0xb8, 0x2b, 0x3c, 0x52, 0x02, 0x69, 0xb1, 0xd1, 0x12, 0x81, 0x64, 0xfc, 0xd8, 0x8d, 0xd2, 0xb4, 0x6d, 0xc8, 0x5c, 0x42, 0xec, 0xf6, 0x7d, 0xeb, 0xad, 0x21, 0xa3, 0xb9, 0xa1, 0x55, 0x42, 0xfe, 0xa2, 0x26, 0x06, 0xea, 0xb5, 0x82, 0xfc, 0x32, 0x97, 0x11, 0xff, 0xc0, 0x7f, 0x4e, 0xef, 0x1f, 0x3b, 0xbf, 0xe0, 0x88, 0x8c, 0xbc, 0xa4, 0x85, 0xba, 0xfc, 0x11, 0x88, 0xb0, 0xaf, 0xe8, 0x09, 0xc9, 0xaa, 0xf8, 0xfa, 0x36, 0x66, 0xb9, 0xc9, 0x05, 0x85, 0x39, 0xdb, 0x1e, 0xc6, 0xa1, 0x8e, 0x5b, 0xe0, 0xb8, 0x01, 0x44, 0xd2, 0xc3, 0x7c, 0xa6, 0x14, 0xc0, 0x90, 0xb4, 0xa7, 0xf1, 0x34, 0x58, 0xe0, 0xd3, 0xa4, 0xcb, 0x0c, 0xb7, 0x3d, 0xcc, 0x4d, 0x90, 0x80, 0x6f, 0x61, 0x08, 0x58, 0x89, 0xeb, 0x5c, 0x9b, 0x14, 0x09, 0xde, 0xf3, 0x60, 0xfd, 0x1c, 0x2e, 0x49, 0x43, 0x8d, 0x7c, 0x67, 0xd7, 0x9d, 0xbd, 0x9a, 0x59, 0x2a, 0xb5, 0x04, 0xc4, 0x71, 0x5f, 0x65, 0xb2, 0x9d, 0x84, 0x65, 0x09, 0x95, 0x15, 0x69, 0xa8, 0xc3, 0x79, 0x09, 0xf5, 0xd5, 0x50, 0xee, 0xff, 0xfa } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.10", - /* Message to be signed */ - 153, - { 0x63, 0x5d, 0x22, 0x03, 0xed, 0x9d, 0x5b, 0x91, 0x20, 0xe3, 0x1b, 0xf6, 0x9d, 0x30, 0x5b, 0xe6, 0x06, 0x86, 0x97, 0xe3, 0x5c, 0xe5, 0x9c, 0x55, 0x3e, 0x50, 0x8d, 0xc7, 0x7b, 0x07, 0x3f, 0xfa, 0x3a, 0xaa, 0x59, 0xf9, 0x96, 0xc3, 0x0b, 0x2e, 0x68, 0x63, 0x23, 0x81, 0x9f, 0xde, 0x22, 0xbe, 0x6c, 0x8d, 0x53, 0x86, 0x84, 0x14, 0xb3, 0x54, 0x5a, 0xbf, 0x43, 0x57, 0x68, 0xa6, 0x11, 0xf0, 0xc1, 0xa4, 0x79, 0xa0, 0xc7, 0x66, 0x0d, 0x53, 0x5e, 0x80, 0x5b, 0x5f, 0xed, 0xc3, 0x77, 0x9c, 0xf0, 0xc5, 0x2c, 0x3c, 0xd0, 0x40, 0xab, 0x65, 0x14, 0xc7, 0xf8, 0x13, 0x3d, 0x47, 0xb0, 0xac, 0xc6, 0x91, 0x4e, 0x6d, 0x4a, 0xd3, 0xc4, 0x73, 0x7c, 0xf5, 0x12, 0x91, 0x09, 0x4e, 0x85, 0x94, 0x33, 0xba, 0x30, 0x66, 0xe1, 0x9d, 0x6a, 0xa2, 0xda, 0x89, 0x6d, 0xc9, 0xd9, 0x5e, 0xf9, 0xe5, 0x63, 0x6d, 0xab, 0x35, 0xf7, 0x29, 0x87, 0x05, 0xc6, 0xd8, 0x76, 0x17, 0x54, 0x12, 0xf8, 0x84, 0x25, 0x19, 0xff, 0xe1, 0x6c, 0xf7, 0x43, 0x62, 0xab } -, - /* Signature */ - 192, - { 0x94, 0x61, 0xa1, 0xa8, 0x41, 0x42, 0x3e, 0xd5, 0xcf, 0xc6, 0x08, 0x9a, 0x74, 0xdb, 0xfc, 0x53, 0x73, 0x11, 0x03, 0xbf, 0x49, 0x85, 0xdd, 0xb1, 0x50, 0xb0, 0xe9, 0x38, 0x0d, 0x3f, 0xe0, 0xcf, 0x6d, 0x45, 0x7c, 0x5c, 0x68, 0xa7, 0xf2, 0x55, 0x04, 0x02, 0x2d, 0x69, 0x5f, 0xf8, 0x42, 0x11, 0x8e, 0xbf, 0x61, 0x02, 0x2f, 0xea, 0x47, 0xfa, 0x45, 0xf7, 0xc1, 0xcc, 0x72, 0x6e, 0x1d, 0xe5, 0x0b, 0xd0, 0x64, 0xb3, 0xbb, 0x70, 0x16, 0x57, 0x16, 0x2b, 0x88, 0xc0, 0xb9, 0x10, 0xfe, 0xb7, 0x2f, 0x48, 0x7a, 0x5c, 0x7f, 0x4b, 0x9e, 0xcf, 0xee, 0x24, 0xe0, 0x7a, 0xa2, 0xd1, 0x98, 0xd1, 0x13, 0xcb, 0x84, 0x5d, 0x81, 0x7b, 0xb5, 0x9b, 0xb1, 0xda, 0x24, 0xa8, 0x2b, 0x91, 0xc2, 0xfe, 0x3f, 0xba, 0x89, 0x51, 0x83, 0xcb, 0xd9, 0xc0, 0xfe, 0x0a, 0xc0, 0xbe, 0x64, 0xfe, 0xf2, 0xe0, 0x13, 0x92, 0x05, 0xb1, 0x0b, 0xca, 0xbf, 0xe5, 0xa3, 0xa7, 0xa8, 0x90, 0xfc, 0x0f, 0xe7, 0x8d, 0xab, 0xe1, 0xad, 0xb5, 0xbd, 0x11, 0x44, 0x85, 0x03, 0xcb, 0x0d, 0xcd, 0x0b, 0x68, 0xf1, 0x60, 0x19, 0x6e, 0x96, 0x13, 0xe2, 0x9f, 0xbe, 0x9a, 0x3f, 0x94, 0x06, 0xec, 0x20, 0xc0, 0x30, 0xe8, 0x1e, 0xc3, 0x09, 0x65, 0xea, 0x01, 0x9c, 0x17, 0xaa, 0x97, 0x11, 0x01, 0xc2, 0xe5, 0x30, 0x59 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.11", - /* Message to be signed */ - 182, - { 0x87, 0xfb, 0xa9, 0x89, 0xf3, 0xcc, 0x15, 0xaf, 0x7e, 0xe7, 0x61, 0xc0, 0x88, 0x26, 0x4a, 0xb7, 0x71, 0x52, 0x39, 0xe0, 0xb8, 0xc8, 0xa9, 0xe4, 0x8e, 0x11, 0xdb, 0x68, 0x03, 0x31, 0x39, 0xc2, 0xa2, 0x89, 0xea, 0x42, 0x6e, 0xbe, 0x26, 0x9f, 0x5f, 0xb7, 0x07, 0x09, 0x0a, 0xfb, 0x89, 0x1a, 0x49, 0xca, 0x05, 0xc0, 0x55, 0x0d, 0x72, 0x9b, 0xf4, 0xd3, 0x7c, 0x8f, 0x1d, 0xa7, 0xa3, 0xca, 0x2f, 0x43, 0x87, 0xa4, 0x0b, 0x5f, 0x79, 0x13, 0xa3, 0x85, 0xf5, 0x5b, 0x81, 0x41, 0xaf, 0x36, 0xbe, 0x8f, 0x57, 0x16, 0x65, 0xf8, 0x57, 0xe7, 0x7a, 0x5c, 0x9c, 0xcc, 0xe6, 0xba, 0x8f, 0x2b, 0xe4, 0x63, 0x23, 0xcc, 0x56, 0x91, 0x56, 0x6f, 0xf4, 0xb6, 0xd7, 0x85, 0x43, 0x04, 0xb9, 0x3b, 0xba, 0x1a, 0x17, 0x59, 0xdf, 0xb1, 0x44, 0xc9, 0x54, 0x7c, 0xf2, 0xbc, 0x8e, 0xaa, 0xed, 0xaa, 0x4f, 0x1d, 0xd2, 0x52, 0x82, 0x3b, 0x72, 0x87, 0xca, 0x55, 0x5d, 0x21, 0x06, 0x08, 0x9a, 0x24, 0x3e, 0x5d, 0xfe, 0x8f, 0xc3, 0x1d, 0x3f, 0x46, 0x22, 0x2a, 0x68, 0xab, 0xaf, 0x31, 0x81, 0x5a, 0x94, 0x7e, 0x58, 0x57, 0xcf, 0x6a, 0x33, 0x17, 0x0e, 0xcc, 0xb6, 0xa5, 0xe0, 0x6d, 0x23, 0xcc, 0x9d, 0x48, 0xea, 0xf6, 0xcd, 0xbc } -, - /* Signature */ - 192, - { 0x0b, 0x5f, 0x1c, 0xfc, 0x25, 0x3b, 0xaa, 0xd4, 0xb9, 0x83, 0xf8, 0xfe, 0x05, 0x0d, 0x4a, 0x01, 0x7c, 0xc4, 0x66, 0x98, 0x0e, 0xbd, 0x23, 0xc9, 0xd5, 0x53, 0x43, 0xf5, 0x10, 0x7e, 0x04, 0x1e, 0xb6, 0x54, 0x78, 0x10, 0xfd, 0xba, 0x46, 0x86, 0xe6, 0x10, 0x83, 0x2f, 0x92, 0x82, 0xed, 0xf0, 0x66, 0x04, 0xb0, 0xab, 0xfe, 0xea, 0x38, 0x01, 0x32, 0x79, 0x17, 0x79, 0x40, 0x99, 0x7b, 0x28, 0x90, 0x2b, 0x14, 0xdb, 0x37, 0x9e, 0xeb, 0x4f, 0x44, 0x00, 0x5d, 0xfc, 0xb0, 0x03, 0x68, 0x03, 0xc9, 0xf1, 0x25, 0xbc, 0xe1, 0xf2, 0xa8, 0x2c, 0x4d, 0x30, 0x07, 0xae, 0x96, 0xb8, 0x48, 0xb8, 0x13, 0xec, 0x8c, 0x97, 0xca, 0x3f, 0x71, 0x0a, 0x9a, 0xe0, 0xdb, 0xc2, 0x8a, 0x55, 0xe0, 0x58, 0x81, 0xb8, 0x58, 0xdb, 0x55, 0x71, 0x20, 0xf3, 0x3c, 0x59, 0xcd, 0x43, 0x60, 0xf9, 0x20, 0x8c, 0x74, 0xb2, 0x7e, 0xc6, 0x5d, 0x11, 0xea, 0x41, 0xfa, 0x6a, 0x9e, 0xac, 0xf2, 0xa6, 0x11, 0x68, 0xad, 0x07, 0xc2, 0x09, 0x94, 0x8f, 0x35, 0xa1, 0x61, 0xf4, 0x1f, 0x87, 0x54, 0x0e, 0xa1, 0x82, 0x84, 0xaa, 0xb8, 0xd8, 0xf9, 0x78, 0x61, 0x31, 0xf0, 0x43, 0x90, 0x2b, 0x89, 0xc1, 0x7a, 0x56, 0x0d, 0x90, 0x94, 0x64, 0x47, 0x5a, 0x0d, 0xfc, 0xe5, 0x89, 0x09, 0x18, 0x7c, 0xd6, 0xe4, 0x46 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.12", - /* Message to be signed */ - 100, - { 0x4b, 0x5e, 0x80, 0x30, 0x5c, 0xbe, 0xa9, 0x0d, 0x63, 0x7f, 0xdb, 0x23, 0x47, 0xc6, 0xfe, 0xb6, 0x78, 0x42, 0xeb, 0xac, 0x6f, 0x90, 0x3d, 0xb5, 0xa7, 0x1e, 0xba, 0xab, 0x8a, 0x1c, 0x2d, 0xf1, 0x12, 0x60, 0xa1, 0xec, 0x90, 0x7b, 0x8b, 0x63, 0x4d, 0x37, 0xd3, 0x6e, 0xd8, 0xde, 0x7d, 0x0d, 0xa1, 0x03, 0xbc, 0x4a, 0x9e, 0x93, 0x3f, 0xb7, 0xbf, 0xee, 0x59, 0x1c, 0xc9, 0x33, 0x29, 0x9f, 0xee, 0x46, 0x0f, 0x35, 0x42, 0xc9, 0x78, 0xf3, 0x07, 0xae, 0x05, 0x24, 0x64, 0xf3, 0x06, 0x20, 0xce, 0xbf, 0x3c, 0x9a, 0x9c, 0xb6, 0xa9, 0x01, 0x53, 0x0c, 0x1d, 0x56, 0x13, 0xdf, 0x07, 0x74, 0x31, 0x2d, 0x4b, 0x5f } -, - /* Signature */ - 192, - { 0xb6, 0xf0, 0x3d, 0x35, 0x33, 0x50, 0x07, 0xa7, 0x47, 0xae, 0x68, 0x67, 0x60, 0xf9, 0xed, 0xad, 0x08, 0x89, 0xd2, 0xd4, 0xca, 0x0c, 0xb8, 0x8b, 0x67, 0x43, 0x12, 0xd3, 0x2c, 0x55, 0x2b, 0x7a, 0x66, 0xc5, 0xa9, 0x52, 0x8c, 0x01, 0x4b, 0x58, 0xc8, 0x49, 0xf2, 0x31, 0xa2, 0xe0, 0x45, 0x68, 0x2e, 0x3b, 0xbb, 0x14, 0xc7, 0xf9, 0x5f, 0xf8, 0xbd, 0xb6, 0x58, 0x7f, 0x25, 0x11, 0xcc, 0x6b, 0xf9, 0x24, 0x39, 0x60, 0x08, 0x11, 0x03, 0xd4, 0x7e, 0x77, 0x69, 0xa1, 0x77, 0xeb, 0xdb, 0x91, 0xf1, 0x28, 0x73, 0xde, 0xcd, 0x5d, 0xc0, 0x67, 0xe4, 0x5c, 0x2b, 0x2a, 0x04, 0x4f, 0xfa, 0x3f, 0xbb, 0x04, 0xc2, 0x0a, 0x3d, 0xc2, 0x01, 0x38, 0x40, 0x3f, 0xf2, 0x5c, 0xa0, 0xeb, 0xad, 0x96, 0xe4, 0x85, 0x9f, 0xa4, 0xa0, 0xd7, 0x32, 0x85, 0x2a, 0xf3, 0x50, 0xa2, 0x75, 0x69, 0x9a, 0x94, 0xaa, 0x6e, 0x47, 0xf2, 0x17, 0xe3, 0x83, 0xef, 0x8f, 0xce, 0x8e, 0xb6, 0xee, 0xd7, 0x82, 0x6d, 0x7c, 0x61, 0x58, 0xfc, 0x58, 0x82, 0xe4, 0x61, 0x35, 0x45, 0xfa, 0x26, 0xee, 0xe0, 0xc9, 0xf9, 0x3d, 0xe7, 0xa1, 0x65, 0x08, 0xea, 0x16, 0x19, 0x70, 0x46, 0x0d, 0x6a, 0x7c, 0xa7, 0x70, 0xf8, 0xde, 0x8b, 0xa9, 0x3c, 0xea, 0xf3, 0x97, 0xdd, 0xf1, 0xfb, 0xce, 0xe2, 0x82, 0xa1, 0x53, 0x7d } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.13", - /* Message to be signed */ - 86, - { 0xe5, 0xad, 0x62, 0x7f, 0x24, 0xf4, 0x11, 0x7a, 0x0a, 0x6b, 0xe4, 0xa5, 0x5f, 0xdb, 0x88, 0x3d, 0x75, 0xa6, 0x73, 0x12, 0x15, 0x4a, 0x71, 0x89, 0x23, 0xd0, 0xe8, 0xf5, 0x73, 0x0a, 0x54, 0xd8, 0xca, 0x7c, 0x97, 0x4e, 0x4d, 0x59, 0x33, 0x8b, 0xb5, 0x71, 0x30, 0x5c, 0xce, 0x99, 0x0c, 0xbb, 0xcf, 0xa9, 0x1e, 0xa9, 0xb7, 0x73, 0xb8, 0x3d, 0x7a, 0x1f, 0x0f, 0xfe, 0xc4, 0xc6, 0xb1, 0x43, 0xfe, 0x05, 0x05, 0x8b, 0xc9, 0x0c, 0xe1, 0x46, 0xf3, 0x69, 0xcb, 0xae, 0x3b, 0x3d, 0x99, 0x70, 0x5e, 0xf4, 0x3d, 0x07, 0x21, 0xb8 } -, - /* Signature */ - 192, - { 0x73, 0x29, 0x86, 0xd4, 0xed, 0xdb, 0x8a, 0x7e, 0x9b, 0x65, 0xdc, 0x01, 0x6d, 0xd5, 0x71, 0xef, 0xab, 0xeb, 0x84, 0x49, 0x0e, 0x88, 0xe3, 0xe7, 0x3b, 0x63, 0xe8, 0x0d, 0x1c, 0xc8, 0x6a, 0x45, 0x2d, 0xec, 0x29, 0xfc, 0x81, 0x7e, 0x8a, 0xd4, 0xee, 0xbd, 0xdc, 0xd9, 0x7c, 0x74, 0x5b, 0xc4, 0x79, 0x7e, 0x54, 0xfe, 0xc6, 0xac, 0xe2, 0x91, 0xb1, 0x96, 0xdc, 0x24, 0x65, 0xf0, 0x8c, 0xf1, 0xdd, 0xd2, 0x17, 0xe7, 0x7a, 0xaf, 0x7d, 0x50, 0x98, 0x77, 0x91, 0xde, 0x81, 0xb0, 0x41, 0x10, 0xd1, 0x1a, 0xb8, 0x55, 0x89, 0x06, 0x60, 0x4e, 0xb9, 0xd9, 0x2b, 0x35, 0xf9, 0x00, 0x75, 0xaf, 0x42, 0x28, 0x01, 0x45, 0xb0, 0x88, 0xe8, 0x75, 0x3d, 0x0d, 0xb7, 0x3c, 0xd3, 0xa3, 0x2b, 0xd1, 0x9c, 0xea, 0x35, 0x38, 0xee, 0x4f, 0x09, 0x27, 0x3e, 0xf6, 0x6d, 0x07, 0x05, 0xd4, 0x5e, 0xe7, 0x10, 0x9f, 0xe5, 0x95, 0xdf, 0x55, 0x76, 0x7b, 0x3d, 0x10, 0x81, 0x72, 0x27, 0xbb, 0x6b, 0xa3, 0x95, 0x75, 0xb8, 0x5d, 0x6a, 0x35, 0xa2, 0xff, 0xb8, 0x8c, 0xb2, 0x67, 0xdb, 0xfc, 0x28, 0x2b, 0xb8, 0xa3, 0xde, 0xe0, 0x2e, 0xc7, 0x7b, 0x0c, 0xb8, 0x13, 0x55, 0x70, 0xf8, 0xa7, 0xd7, 0xad, 0x04, 0x34, 0x1a, 0x08, 0x64, 0xe6, 0x7f, 0xf6, 0xfa, 0x02, 0x59, 0xa1, 0x69, 0x74, 0xc8, 0x6a } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.14", - /* Message to be signed */ - 75, - { 0x03, 0xe3, 0x9b, 0xa7, 0xa8, 0x0c, 0x77, 0x14, 0x16, 0xd8, 0x52, 0x63, 0xe4, 0xd4, 0x3c, 0x63, 0x93, 0xdf, 0xe7, 0x96, 0x52, 0x3b, 0x89, 0xe0, 0xa4, 0x61, 0x62, 0x88, 0x80, 0x80, 0x0d, 0x8f, 0xc2, 0x43, 0x1b, 0x66, 0x30, 0x54, 0x09, 0xe0, 0x6c, 0x95, 0xae, 0x7a, 0x17, 0xd5, 0x34, 0xb1, 0xe8, 0x4c, 0x19, 0x9d, 0xfe, 0x73, 0x1d, 0xa9, 0x49, 0xf1, 0x64, 0x57, 0x1d, 0xec, 0xc8, 0xb1, 0x66, 0xbe, 0xb8, 0xdc, 0x08, 0x7c, 0xb4, 0x86, 0x99, 0x98, 0xc2 } -, - /* Signature */ - 192, - { 0x60, 0x76, 0x3b, 0xea, 0xf7, 0xc3, 0xe2, 0x2b, 0x3b, 0x22, 0xdc, 0x44, 0xd9, 0x47, 0x82, 0x6e, 0x23, 0xfc, 0xf9, 0x6b, 0x01, 0xb7, 0x74, 0x1b, 0x24, 0xb1, 0xb9, 0xd9, 0x3c, 0x07, 0xf0, 0xc6, 0x4d, 0x39, 0x67, 0x98, 0xbb, 0x58, 0x9b, 0xd4, 0x25, 0x29, 0x53, 0x69, 0xbf, 0xb8, 0x79, 0xad, 0xd3, 0x42, 0xcd, 0x76, 0x28, 0x0b, 0x57, 0xe6, 0x35, 0x4f, 0x61, 0x95, 0xe8, 0x42, 0xfa, 0x2a, 0x95, 0xf1, 0xc4, 0x6f, 0x0b, 0x70, 0x78, 0x6c, 0x31, 0x8d, 0xe9, 0xa5, 0x5a, 0x8a, 0xc4, 0x54, 0x5e, 0xe7, 0xcf, 0xf3, 0x99, 0xc6, 0x78, 0xe5, 0x78, 0xf8, 0x93, 0x9e, 0xd4, 0x9e, 0x84, 0xbb, 0xa9, 0xaa, 0xe5, 0x7c, 0x1a, 0x36, 0xfc, 0xc3, 0x94, 0x86, 0x46, 0x6e, 0x40, 0x12, 0xf9, 0x58, 0x87, 0xa6, 0x81, 0x10, 0xf1, 0xa4, 0x84, 0x67, 0xe4, 0xc2, 0x34, 0xf5, 0x81, 0xc5, 0xec, 0x47, 0x71, 0x06, 0xcc, 0xb3, 0xec, 0x86, 0x17, 0xb4, 0xbe, 0x21, 0x93, 0x37, 0x44, 0x8f, 0xe7, 0x2e, 0x25, 0xde, 0xab, 0x53, 0xea, 0xcb, 0x92, 0xe5, 0x96, 0x62, 0x95, 0xb3, 0xa5, 0x57, 0x12, 0x19, 0x58, 0xdf, 0xe7, 0x9c, 0xa4, 0x72, 0xf7, 0x9e, 0xfb, 0xda, 0x1d, 0xcf, 0xba, 0x9d, 0xbd, 0x0f, 0x97, 0x67, 0x32, 0xc0, 0x93, 0xb9, 0x8f, 0xf1, 0x93, 0xc9, 0x02, 0x98, 0x7a, 0x42, 0x6c, 0x0f } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.15", - /* Message to be signed */ - 243, - { 0xd4, 0xc2, 0x35, 0x96, 0x7d, 0x4e, 0x87, 0xb6, 0x71, 0x1e, 0x32, 0xac, 0x70, 0x37, 0xa3, 0x97, 0xf9, 0x9b, 0x1c, 0xad, 0x95, 0xa1, 0x88, 0x94, 0x6a, 0x48, 0x64, 0x0e, 0xb6, 0xb7, 0xb0, 0x03, 0xc3, 0x2f, 0x85, 0xa1, 0x21, 0xb0, 0x9c, 0xa4, 0xc8, 0xbe, 0xc0, 0xb8, 0x27, 0x44, 0xaa, 0xf2, 0x7d, 0x16, 0x6c, 0xef, 0xc7, 0xa9, 0x70, 0x2a, 0xd3, 0x1d, 0xbd, 0x15, 0xea, 0x2a, 0x18, 0x5f, 0x5b, 0x9b, 0xa6, 0x42, 0xf9, 0x49, 0x07, 0x8b, 0xc6, 0x09, 0xb9, 0xa8, 0xa3, 0x36, 0x92, 0xd7, 0x18, 0x49, 0x39, 0xd1, 0xf9, 0xeb, 0x42, 0x6a, 0x6d, 0xb7, 0x40, 0xea, 0xd9, 0x4c, 0xfe, 0xa1, 0x7f, 0xeb, 0x06, 0x18, 0xd7, 0x4d, 0x9a, 0x65, 0x16, 0x88, 0xe9, 0x0b, 0x9b, 0xb7, 0x05, 0x24, 0x30, 0x5d, 0x61, 0x8c, 0x88, 0xa5, 0x5f, 0x45, 0x44, 0x50, 0xe0, 0xc5, 0x85, 0xd3, 0xa8, 0xd9, 0x81, 0x65, 0x81, 0x8f, 0x36, 0x3b, 0x20, 0xa2, 0x52, 0x49, 0x2e, 0x15, 0x12, 0x58, 0x58, 0x90, 0xa8, 0xc3, 0x20, 0xa7, 0x18, 0x71, 0x58, 0xce, 0x0d, 0x4e, 0x4b, 0xe1, 0xc7, 0x01, 0xf8, 0xaf, 0xdc, 0x54, 0x5c, 0x4d, 0xab, 0x86, 0x8d, 0x41, 0xd4, 0x1c, 0x21, 0xc2, 0xcb, 0x1f, 0x67, 0xdf, 0x79, 0x53, 0xd5, 0xf7, 0x26, 0x1c, 0x50, 0x92, 0xbb, 0xc4, 0x33, 0x2a, 0xc5, 0x57, 0x5b, 0x6e, 0x0e, 0x03, 0x14, 0x9c, 0x04, 0x0c, 0x3e, 0x20, 0x1c, 0x79, 0x15, 0xac, 0x20, 0x22, 0x88, 0x4e, 0xa0, 0xe6, 0xc2, 0x14, 0x03, 0xf0, 0xb4, 0x4e, 0x0f, 0x71, 0x34, 0x3f, 0xc9, 0x11, 0x1a, 0x7d, 0xb2, 0xf5, 0xe9, 0xe5, 0x09, 0xc2, 0xd8, 0x97, 0x84, 0xef, 0xb2, 0x2c, 0x31, 0xe8, 0x16, 0x5e, 0x0e, 0x93, 0x6c } -, - /* Signature */ - 192, - { 0x46, 0x9f, 0x08, 0xbd, 0xd0, 0x3b, 0x75, 0x64, 0x0e, 0x8a, 0x44, 0xa0, 0x7c, 0xa8, 0xde, 0x4b, 0xac, 0xf8, 0x33, 0x1f, 0xe3, 0x9c, 0x44, 0xd2, 0x3a, 0xa7, 0xb5, 0x81, 0xdc, 0x3f, 0x00, 0xf5, 0x42, 0x1b, 0x5c, 0x17, 0x2d, 0x0f, 0xfc, 0xe9, 0x14, 0x97, 0xd3, 0xd4, 0xb1, 0x04, 0xf5, 0x6a, 0x98, 0xec, 0x94, 0xf7, 0x19, 0x27, 0x1e, 0x58, 0xb4, 0x3e, 0xfb, 0xd8, 0x76, 0xe1, 0xc1, 0x31, 0xfa, 0x97, 0x82, 0x07, 0x28, 0xa5, 0x56, 0x75, 0x55, 0x21, 0x4c, 0xd9, 0x4a, 0x18, 0xfc, 0xce, 0x5c, 0x2f, 0x53, 0xb1, 0x9d, 0x1f, 0x3c, 0x73, 0xd0, 0x9f, 0x7b, 0xe1, 0x80, 0x97, 0x38, 0xb0, 0x3c, 0xe7, 0x69, 0xe4, 0x54, 0xed, 0x4c, 0xbe, 0xdc, 0xaf, 0x43, 0xc4, 0x8b, 0xd3, 0x9d, 0xf2, 0xf8, 0xbb, 0x63, 0xb8, 0xfc, 0x4d, 0x0d, 0x4d, 0x5b, 0x20, 0x4f, 0xc2, 0x20, 0x01, 0x3a, 0x66, 0x8c, 0x19, 0xf9, 0x75, 0x02, 0x93, 0xa4, 0x71, 0x15, 0x83, 0x88, 0x26, 0x45, 0xdb, 0xf3, 0xac, 0x4f, 0x83, 0x9b, 0x6f, 0xd1, 0xcf, 0x3b, 0x5e, 0xe8, 0xd7, 0x34, 0xe1, 0xda, 0x37, 0x4d, 0x91, 0xd8, 0x9e, 0xa3, 0x18, 0xe9, 0x18, 0x34, 0x83, 0xf4, 0xa0, 0x9a, 0x93, 0x51, 0x4a, 0xf5, 0x4f, 0x75, 0xd0, 0xa3, 0x56, 0x51, 0xb2, 0x40, 0xf7, 0x9f, 0x20, 0xa2, 0x97, 0x7d, 0x14, 0x57, 0x8c } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.16", - /* Message to be signed */ - 119, - { 0xd0, 0x6a, 0xdc, 0xa4, 0xc2, 0x0f, 0x0d, 0x9f, 0x7b, 0xe6, 0x5a, 0x20, 0x32, 0x7c, 0x29, 0x47, 0x56, 0xe3, 0xed, 0xd9, 0xe1, 0xd3, 0x9d, 0x0f, 0x95, 0xc7, 0x9d, 0xf1, 0xba, 0xc3, 0x34, 0x35, 0x9f, 0xab, 0x94, 0x3d, 0x85, 0x45, 0xa3, 0xba, 0xa3, 0x7a, 0x59, 0x29, 0x5c, 0x58, 0xb2, 0x37, 0x75, 0x2b, 0x8d, 0xe7, 0xd4, 0x32, 0x3c, 0x56, 0xe9, 0xd7, 0xcb, 0x0c, 0x7f, 0x83, 0x1d, 0x54, 0x9c, 0xb3, 0x87, 0x19, 0xa0, 0x81, 0xd5, 0x8b, 0x60, 0x57, 0xec, 0xb7, 0x42, 0x9e, 0x2c, 0xa6, 0x07, 0xcd, 0x13, 0x06, 0x35, 0x59, 0x43, 0x15, 0x9d, 0xc9, 0x24, 0xad, 0x3e, 0x9c, 0xb1, 0x3d, 0x0e, 0x71, 0xea, 0xdc, 0xb0, 0x05, 0xe1, 0x84, 0xc0, 0xc2, 0xce, 0xaa, 0xf9, 0xd7, 0x4a, 0x1c, 0x1d, 0xf6, 0xfe, 0xc1, 0x8c, 0x97, 0xa0 } -, - /* Signature */ - 192, - { 0x9f, 0xd9, 0x52, 0x5c, 0x15, 0xc8, 0x43, 0xb8, 0x06, 0x9c, 0x15, 0xf2, 0x6d, 0x3f, 0x95, 0x24, 0x6a, 0xf3, 0x7a, 0x8b, 0x8e, 0x6b, 0x93, 0x9d, 0xdf, 0x5b, 0x38, 0x28, 0xcd, 0xb6, 0x2c, 0xfa, 0x37, 0x3a, 0x92, 0xec, 0xc4, 0x13, 0x84, 0xa8, 0x77, 0xca, 0xa0, 0x90, 0xaa, 0x13, 0xc8, 0x47, 0xef, 0x28, 0x29, 0xdd, 0xca, 0x14, 0x14, 0x20, 0x14, 0x02, 0x14, 0x81, 0x55, 0x05, 0x50, 0xda, 0xa2, 0x9d, 0xe2, 0xab, 0x70, 0x01, 0xb8, 0x55, 0xc9, 0x34, 0x2f, 0x0c, 0x90, 0xbf, 0xa6, 0xc3, 0x34, 0x9b, 0x2c, 0x39, 0x62, 0x13, 0xef, 0x70, 0xcb, 0xd8, 0x4b, 0xb4, 0xce, 0x6e, 0xf5, 0x8b, 0x17, 0x6e, 0x9f, 0x6f, 0xcc, 0xdb, 0x6e, 0x46, 0xca, 0xc3, 0x41, 0x14, 0xa1, 0xb9, 0xf9, 0x8a, 0x8a, 0x32, 0x75, 0x7b, 0xf7, 0x5d, 0x6b, 0xfc, 0x45, 0x5a, 0xde, 0x6a, 0x01, 0xf9, 0x60, 0x50, 0x1b, 0x79, 0xf5, 0xfb, 0xe3, 0xb3, 0x8f, 0xca, 0x03, 0x46, 0x4e, 0x43, 0xd4, 0x96, 0x63, 0xc7, 0x9f, 0xf6, 0x4d, 0x32, 0x98, 0x1e, 0x44, 0x80, 0xcd, 0xf4, 0x2d, 0x8a, 0xf8, 0xda, 0xa7, 0xf1, 0x2b, 0x81, 0xa5, 0xaa, 0x96, 0x5f, 0xad, 0xaa, 0x3c, 0x03, 0xb7, 0xff, 0x22, 0xd3, 0xcf, 0xdf, 0xfe, 0x3c, 0xad, 0xf4, 0xd5, 0x98, 0x9e, 0xd1, 0x4c, 0x96, 0x9a, 0x6e, 0x8c, 0x9a, 0x1e, 0x04 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.17", - /* Message to be signed */ - 209, - { 0x3a, 0x63, 0x02, 0xd7, 0x9e, 0x26, 0xb5, 0x55, 0xc7, 0x7d, 0xe9, 0x2a, 0x91, 0xe0, 0x78, 0x57, 0x1e, 0xd1, 0x57, 0x2f, 0xfc, 0x3e, 0x4f, 0xc9, 0x05, 0xce, 0x53, 0xf1, 0x04, 0xb3, 0x22, 0x00, 0x95, 0x7e, 0xb2, 0xb5, 0xe5, 0xf3, 0xe3, 0xfc, 0xbb, 0xc1, 0x62, 0xf9, 0xe5, 0x25, 0xc7, 0x06, 0xf1, 0xdd, 0x04, 0xfc, 0xab, 0x51, 0x6b, 0xc1, 0x8a, 0x8e, 0x4f, 0x88, 0xa9, 0x38, 0xa5, 0xb2, 0x56, 0x85, 0xd7, 0x8d, 0xdc, 0x9f, 0x10, 0x4e, 0x49, 0xbf, 0x5c, 0xa0, 0xb6, 0x5a, 0x4b, 0x96, 0x57, 0xe0, 0x4a, 0x71, 0xfb, 0x50, 0xeb, 0x4a, 0xac, 0x22, 0xc0, 0xbb, 0x93, 0xf6, 0x0c, 0xac, 0x94, 0x83, 0xf1, 0x77, 0x13, 0x55, 0x3d, 0xca, 0x4b, 0x31, 0xe2, 0x72, 0x7b, 0x32, 0xe3, 0x50, 0xfe, 0x20, 0x4c, 0xec, 0xd9, 0xa7, 0xcd, 0xa4, 0xda, 0xda, 0x2e, 0x87, 0xff, 0x6f, 0x2b, 0x73, 0xe7, 0xb0, 0x78, 0x1e, 0x21, 0x2f, 0x34, 0xfe, 0x36, 0x36, 0x10, 0xf0, 0x18, 0xa7, 0x99, 0x37, 0x37, 0x55, 0xab, 0x46, 0x66, 0x7b, 0xb6, 0x52, 0x5d, 0x7d, 0xc7, 0xa0, 0xe8, 0x28, 0x90, 0x17, 0xf5, 0x48, 0x7f, 0xa6, 0x92, 0xef, 0x2f, 0xdd, 0xce, 0x38, 0xad, 0x3f, 0x45, 0x30, 0xde, 0x7e, 0xe5, 0x05, 0x66, 0x70, 0xa7, 0x35, 0xd3, 0x78, 0xd1, 0xef, 0xc9, 0x94, 0x81, 0xf8, 0xc9, 0xfb, 0xee, 0xa9, 0x9f, 0x56, 0x6a, 0x0b, 0x6e, 0x28, 0x46, 0x26, 0x44, 0xa6, 0xd9, 0xc6, 0xcc, 0x88, 0xfb } -, - /* Signature */ - 192, - { 0xb7, 0x57, 0xfa, 0x74, 0x7c, 0x5c, 0x87, 0x67, 0x66, 0xf3, 0x58, 0xac, 0xbf, 0xc7, 0xe7, 0xb8, 0x05, 0x96, 0x36, 0x8d, 0x0d, 0x86, 0x29, 0x50, 0xe5, 0x55, 0xf4, 0x71, 0x64, 0x6f, 0x64, 0x0e, 0x85, 0x1d, 0x61, 0x2a, 0x55, 0x6f, 0x55, 0xa7, 0x4a, 0x32, 0x92, 0x42, 0x9e, 0x4c, 0x14, 0xf7, 0x8b, 0xa3, 0xeb, 0xbd, 0x96, 0x87, 0xf3, 0x08, 0xde, 0xdb, 0x3c, 0xfe, 0xd7, 0x1f, 0x4a, 0x9d, 0xd2, 0x6f, 0xa5, 0x12, 0x2f, 0x7f, 0x71, 0x94, 0xae, 0xb6, 0x3b, 0xc8, 0xb7, 0x5c, 0x34, 0x31, 0x87, 0x11, 0x5a, 0x1d, 0xbd, 0x35, 0x95, 0x90, 0xf7, 0xff, 0x38, 0x62, 0xb7, 0x08, 0x85, 0xaf, 0x1c, 0xa9, 0x34, 0xb8, 0xce, 0xbc, 0x2c, 0xc9, 0xe6, 0x47, 0x25, 0x3f, 0xd1, 0x32, 0x7a, 0x2e, 0xd4, 0x24, 0x4d, 0xc8, 0xf5, 0x85, 0x55, 0xa6, 0x89, 0x7c, 0xa3, 0x22, 0x9c, 0x80, 0x1e, 0x7b, 0xf6, 0x28, 0xf5, 0x25, 0xe6, 0xc9, 0x48, 0x80, 0x4d, 0x0b, 0x1b, 0x6d, 0xbc, 0xd7, 0x90, 0x2a, 0xcd, 0xe7, 0xa2, 0x5b, 0xa5, 0x91, 0xd8, 0x86, 0xe2, 0x8d, 0xaa, 0x8d, 0xed, 0x5e, 0xe4, 0x01, 0xe3, 0x4e, 0x64, 0x12, 0xf1, 0xe6, 0x44, 0xee, 0xc1, 0x2a, 0xe9, 0x42, 0x61, 0x90, 0x6a, 0x17, 0x26, 0x11, 0xdd, 0x5a, 0x98, 0x67, 0x78, 0x9c, 0x41, 0x90, 0x34, 0x68, 0x84, 0x29, 0xe9, 0x06 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.18", - /* Message to be signed */ - 93, - { 0x9d, 0xc7, 0xce, 0x1d, 0x02, 0xca, 0xdc, 0xf1, 0x0d, 0xf1, 0x11, 0x04, 0x56, 0xb8, 0xa7, 0xa5, 0xea, 0x43, 0x76, 0xb2, 0x7e, 0x8b, 0xf8, 0xcc, 0x8d, 0xb8, 0x10, 0x49, 0xfd, 0xa3, 0xfb, 0xd0, 0xdb, 0x8a, 0x3d, 0x0f, 0x6b, 0xd7, 0x48, 0x6b, 0x8d, 0x84, 0xbf, 0x9f, 0xfd, 0x4b, 0x64, 0x17, 0x52, 0xdf, 0x7e, 0xdf, 0x50, 0x86, 0x5e, 0x8e, 0x58, 0xad, 0x49, 0xf7, 0x24, 0x0e, 0x47, 0xd3, 0xfc, 0x98, 0x5e, 0xdb, 0x59, 0x6d, 0xab, 0xfe, 0x01, 0x72, 0x2a, 0x22, 0x77, 0x60, 0x38, 0x3c, 0xe2, 0x4d, 0x4a, 0x05, 0xd8, 0xb0, 0x6e, 0xf5, 0xb9, 0x6f, 0x11, 0x7d, 0x81 } -, - /* Signature */ - 192, - { 0x05, 0xa9, 0x5e, 0x11, 0xb5, 0xbf, 0xb0, 0x1d, 0xcf, 0xde, 0x3e, 0xfa, 0x9f, 0x31, 0x3d, 0x81, 0xbb, 0x0d, 0xfd, 0x46, 0xde, 0x63, 0xb0, 0x65, 0x80, 0x56, 0xc5, 0x3a, 0xf7, 0xad, 0x9e, 0x89, 0x43, 0x8b, 0x7d, 0xe7, 0x8f, 0xf8, 0xea, 0x88, 0xd0, 0x72, 0xb1, 0x74, 0x9a, 0x52, 0x9f, 0x1c, 0xc9, 0xcf, 0x2c, 0xf3, 0x2e, 0x5a, 0xb7, 0x20, 0xe0, 0x69, 0xb4, 0x90, 0x6d, 0x28, 0x2a, 0x03, 0xdd, 0x78, 0xd1, 0xb3, 0xca, 0x2a, 0x3f, 0x92, 0x5b, 0xf5, 0x1c, 0x74, 0x91, 0xb7, 0x3b, 0xa0, 0xbf, 0x54, 0xd5, 0x0d, 0x97, 0x1d, 0xe5, 0xb2, 0x77, 0x26, 0xd8, 0xfb, 0x3e, 0xe2, 0x77, 0x34, 0x97, 0xdf, 0x35, 0x49, 0x51, 0x7e, 0xed, 0xcd, 0x9d, 0xe6, 0x8d, 0x90, 0xdf, 0x35, 0xd3, 0xf0, 0x50, 0x81, 0x15, 0x1a, 0xda, 0xb5, 0x39, 0x73, 0x85, 0xab, 0xee, 0xa7, 0x2b, 0x69, 0xbd, 0x0d, 0xe1, 0x8d, 0xce, 0xe9, 0xa2, 0xbe, 0x00, 0xe9, 0x1a, 0x03, 0x24, 0x03, 0xb1, 0xf8, 0x1b, 0xbc, 0x0a, 0xe7, 0x31, 0xc6, 0xc0, 0xd9, 0xcf, 0xdd, 0x06, 0xc3, 0x31, 0xed, 0x89, 0xd7, 0xde, 0x1d, 0xe1, 0xdf, 0x46, 0xcf, 0x09, 0xce, 0x53, 0xdf, 0x15, 0x97, 0xfb, 0x69, 0x94, 0x68, 0x1c, 0x7f, 0xbe, 0x94, 0xc9, 0xb0, 0x8e, 0x50, 0xaa, 0x1b, 0x12, 0x41, 0x96, 0x02, 0x98, 0x7f, 0x37, 0xdd } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.19", - /* Message to be signed */ - 253, - { 0x87, 0xa6, 0x45, 0x61, 0x1b, 0xb1, 0x91, 0x85, 0x3f, 0x4f, 0xd9, 0xb7, 0x40, 0xb2, 0xde, 0x4c, 0x16, 0x3e, 0x75, 0x62, 0xb1, 0x17, 0x62, 0x63, 0x3e, 0x72, 0xdf, 0xb6, 0xf6, 0xbe, 0x7e, 0xfb, 0x90, 0x41, 0xa9, 0x65, 0x82, 0x94, 0x3a, 0xb2, 0x01, 0x83, 0x91, 0xc0, 0x5a, 0xdf, 0xab, 0x46, 0x4d, 0xd6, 0xe3, 0x3f, 0x96, 0x0d, 0xdb, 0xf3, 0xb1, 0x7a, 0xc6, 0x2b, 0xb7, 0x8a, 0xfc, 0x1c, 0x6a, 0x45, 0x39, 0x6c, 0x09, 0x08, 0x70, 0x7c, 0x62, 0x36, 0x12, 0x55, 0xcb, 0xf0, 0x9b, 0xad, 0x95, 0x9b, 0x31, 0x33, 0xda, 0x48, 0xd5, 0x32, 0xba, 0x7e, 0xf1, 0xd2, 0x0f, 0xb6, 0x57, 0x2a, 0x1f, 0x0e, 0xd6, 0xf2, 0xc6, 0xe1, 0xbe, 0xc1, 0xb1, 0x7c, 0xc3, 0x19, 0xba, 0xf7, 0x2a, 0x19, 0x8a, 0xa0, 0x01, 0xb8, 0x3d, 0x4e, 0x98, 0x69, 0xc3, 0x40, 0x90, 0xf2, 0x29, 0xa9, 0xc7, 0xf1, 0x42, 0xa7, 0x4e, 0x85, 0xab, 0x3e, 0xd5, 0x1c, 0x69, 0xac, 0x15, 0xfa, 0xb4, 0xab, 0xe4, 0x67, 0x15, 0x73, 0xcf, 0x5a, 0xd2, 0xb5, 0x8e, 0x78, 0xa9, 0x44, 0xed, 0xcc, 0xea, 0xc5, 0xee, 0x58, 0xbf, 0xce, 0x66, 0xf4, 0x0a, 0xac, 0x2a, 0xbe, 0x4e, 0x5f, 0xa0, 0x72, 0xdd, 0x0f, 0x66, 0x4f, 0xac, 0x81, 0x1a, 0xef, 0x08, 0x42, 0x10, 0xe5, 0x64, 0x1b, 0x9c, 0xd0, 0x8c, 0x87, 0x24, 0xf4, 0xb4, 0x1e, 0xed, 0x1d, 0x9d, 0x4a, 0x18, 0x77, 0x80, 0x46, 0x59, 0x7b, 0xd1, 0xa2, 0x7b, 0xbb, 0xc0, 0x56, 0xc1, 0x5e, 0x43, 0xc0, 0x38, 0xef, 0x37, 0x5b, 0x43, 0x5e, 0x73, 0xa7, 0xd3, 0x2f, 0x01, 0x50, 0x16, 0xb7, 0x82, 0x35, 0xce, 0x75, 0xa7, 0xb7, 0x62, 0x04, 0x99, 0x68, 0xe9, 0x93, 0x22, 0x53, 0xe4, 0x2c, 0xa9, 0x76, 0xc8, 0xd8, 0xdc, 0xa1, 0xbb, 0x2d, 0xbf } -, - /* Signature */ - 192, - { 0xb8, 0x80, 0x62, 0x26, 0xfb, 0xd3, 0xd9, 0x7b, 0x79, 0xf0, 0xdd, 0x1d, 0x8c, 0xf9, 0xa2, 0x35, 0xe5, 0x1b, 0x94, 0xb7, 0xe2, 0x23, 0xec, 0x68, 0x33, 0x2d, 0x68, 0x6e, 0xd3, 0x31, 0x3e, 0xd1, 0xbe, 0xf6, 0x88, 0x70, 0x23, 0xaf, 0x7a, 0x5c, 0x99, 0xdf, 0x03, 0x68, 0xa3, 0x49, 0xc6, 0xa5, 0x94, 0x79, 0x5b, 0x62, 0x35, 0x36, 0x10, 0x13, 0x42, 0x69, 0x0d, 0xeb, 0x5f, 0xad, 0x90, 0x23, 0x78, 0x2f, 0x6d, 0xbe, 0x16, 0x43, 0xa4, 0x56, 0x18, 0x57, 0x4f, 0x16, 0x72, 0x81, 0x12, 0xa7, 0xe0, 0xef, 0x9f, 0x58, 0x65, 0x6f, 0x6a, 0xdb, 0xf4, 0x00, 0x40, 0x9f, 0x4a, 0xa5, 0x01, 0x3c, 0x15, 0x9a, 0x36, 0x8c, 0xa5, 0x9b, 0xde, 0x6b, 0x39, 0x18, 0xdf, 0xe1, 0xd8, 0x02, 0xfa, 0x6c, 0xfa, 0x06, 0xc9, 0xca, 0x31, 0xac, 0xa7, 0x8c, 0xb2, 0x63, 0xc8, 0xed, 0x91, 0x7a, 0xf9, 0xa9, 0xa7, 0x95, 0xd5, 0xe2, 0xc4, 0x01, 0xe7, 0x29, 0x96, 0x4c, 0xf7, 0xac, 0x28, 0xcc, 0xdb, 0x36, 0xd9, 0x59, 0xed, 0x7f, 0xd9, 0xaf, 0x1c, 0x47, 0x09, 0x7b, 0x62, 0x55, 0xc6, 0x4e, 0x1b, 0x16, 0xf2, 0x1d, 0x86, 0x87, 0x04, 0x55, 0xd5, 0xf0, 0xbf, 0x90, 0x1f, 0xcc, 0x68, 0xc3, 0x4b, 0x72, 0xc1, 0xbe, 0xe7, 0x2e, 0x6b, 0x8c, 0x4e, 0x36, 0xae, 0x33, 0x99, 0x6c, 0x7a, 0x59, 0xd0, 0x9a } - -} -, -{ - "PKCS#1 v1.5 Signature Example 14.20", - /* Message to be signed */ - 41, - { 0x03, 0x2e, 0x28, 0x3e, 0x59, 0x6e, 0x87, 0xfa, 0xa6, 0xcf, 0xcf, 0xb8, 0xfa, 0x04, 0xdf, 0x6a, 0x61, 0xe6, 0x11, 0xdf, 0xe7, 0x3b, 0xbf, 0x66, 0x8e, 0xe6, 0x7b, 0x49, 0x6b, 0xfb, 0x0f, 0xfb, 0x7f, 0x9d, 0xc9, 0x31, 0xa9, 0x8b, 0xce, 0xdb, 0x25 } -, - /* Signature */ - 192, - { 0xb9, 0xfd, 0xc0, 0x3d, 0xc1, 0x99, 0x70, 0x71, 0x3c, 0x4a, 0x17, 0xe8, 0x7e, 0x7e, 0xbb, 0x5f, 0x13, 0x50, 0x5d, 0x59, 0xcb, 0xb2, 0x2b, 0xa7, 0x2e, 0x9f, 0xf1, 0x6b, 0xdf, 0x8b, 0x65, 0x9c, 0x33, 0x30, 0xa9, 0x3d, 0xcc, 0x09, 0x2a, 0x5d, 0x38, 0x5b, 0x2d, 0x5e, 0x15, 0x34, 0x00, 0x31, 0x46, 0xc0, 0x50, 0xb7, 0xdd, 0xc4, 0xf7, 0x56, 0x56, 0x9d, 0xa2, 0x11, 0x80, 0x15, 0x82, 0x26, 0x61, 0x19, 0xf5, 0x59, 0x9b, 0x1e, 0x65, 0xe8, 0xeb, 0xea, 0x6b, 0xc9, 0x64, 0x42, 0xee, 0x12, 0xac, 0xb9, 0x6c, 0x6d, 0xba, 0x08, 0x3e, 0x92, 0x10, 0x94, 0xda, 0x9c, 0x9e, 0xcf, 0x5a, 0xfa, 0xa5, 0x4b, 0x7f, 0xde, 0x7a, 0x0c, 0xae, 0x3f, 0xdf, 0xe4, 0xd2, 0x51, 0x93, 0x3a, 0x52, 0xf0, 0x2d, 0xc2, 0x3e, 0x1b, 0x32, 0x14, 0xc6, 0x83, 0xe1, 0x9a, 0xf4, 0x6e, 0x18, 0xc7, 0x49, 0x56, 0xdc, 0x6a, 0xb3, 0x50, 0x2d, 0x46, 0xca, 0xac, 0x3c, 0xb2, 0x6b, 0x70, 0x7c, 0xdc, 0x30, 0x25, 0xb6, 0xde, 0x4e, 0x83, 0x54, 0x3b, 0x95, 0x84, 0x5b, 0x4a, 0x15, 0x97, 0x60, 0x77, 0x0a, 0x4b, 0xd0, 0x9e, 0x46, 0x35, 0xa0, 0x4e, 0x21, 0x7d, 0x66, 0x5c, 0x95, 0x94, 0x87, 0x9f, 0x38, 0x1d, 0x71, 0x10, 0x09, 0x34, 0xfa, 0xda, 0x61, 0xc7, 0xcc, 0x22, 0xb8, 0xd2, 0xff, 0x8e, 0xb3, 0x5a } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 15: A 2048-bit RSA key pair", -{ - /* Modulus */ - 256, - { 0xdf, 0x27, 0x1f, 0xd2, 0x5f, 0x86, 0x44, 0x49, 0x6b, 0x0c, 0x81, 0xbe, 0x4b, 0xd5, 0x02, 0x97, 0xef, 0x09, 0x9b, 0x00, 0x2a, 0x6f, 0xd6, 0x77, 0x27, 0xeb, 0x44, 0x9c, 0xea, 0x56, 0x6e, 0xd6, 0xa3, 0x98, 0x1a, 0x71, 0x31, 0x2a, 0x14, 0x1c, 0xab, 0xc9, 0x81, 0x5c, 0x12, 0x09, 0xe3, 0x20, 0xa2, 0x5b, 0x32, 0x46, 0x4e, 0x99, 0x99, 0xf1, 0x8c, 0xa1, 0x3a, 0x9f, 0xd3, 0x89, 0x25, 0x58, 0xf9, 0xe0, 0xad, 0xef, 0xdd, 0x36, 0x50, 0xdd, 0x23, 0xa3, 0xf0, 0x36, 0xd6, 0x0f, 0xe3, 0x98, 0x84, 0x37, 0x06, 0xa4, 0x0b, 0x0b, 0x84, 0x62, 0xc8, 0xbe, 0xe3, 0xbc, 0xe1, 0x2f, 0x1f, 0x28, 0x60, 0xc2, 0x44, 0x4c, 0xdc, 0x6a, 0x44, 0x47, 0x6a, 0x75, 0xff, 0x4a, 0xa2, 0x42, 0x73, 0xcc, 0xbe, 0x3b, 0xf8, 0x02, 0x48, 0x46, 0x5f, 0x8f, 0xf8, 0xc3, 0xa7, 0xf3, 0x36, 0x7d, 0xfc, 0x0d, 0xf5, 0xb6, 0x50, 0x9a, 0x4f, 0x82, 0x81, 0x1c, 0xed, 0xd8, 0x1c, 0xda, 0xaa, 0x73, 0xc4, 0x91, 0xda, 0x41, 0x21, 0x70, 0xd5, 0x44, 0xd4, 0xba, 0x96, 0xb9, 0x7f, 0x0a, 0xfc, 0x80, 0x65, 0x49, 0x8d, 0x3a, 0x49, 0xfd, 0x91, 0x09, 0x92, 0xa1, 0xf0, 0x72, 0x5b, 0xe2, 0x4f, 0x46, 0x5c, 0xfe, 0x7e, 0x0e, 0xab, 0xf6, 0x78, 0x99, 0x6c, 0x50, 0xbc, 0x5e, 0x75, 0x24, 0xab, 0xf7, 0x3f, 0x15, 0xe5, 0xbe, 0xf7, 0xd5, 0x18, 0x39, 0x4e, 0x31, 0x38, 0xce, 0x49, 0x44, 0x50, 0x6a, 0xaa, 0xaf, 0x3f, 0x9b, 0x23, 0x6d, 0xca, 0xb8, 0xfc, 0x00, 0xf8, 0x7a, 0xf5, 0x96, 0xfd, 0xc3, 0xd9, 0xd6, 0xc7, 0x5c, 0xd5, 0x08, 0x36, 0x2f, 0xae, 0x2c, 0xbe, 0xdd, 0xcc, 0x4c, 0x74, 0x50, 0xb1, 0x7b, 0x77, 0x6c, 0x07, 0x9e, 0xcc, 0xa1, 0xf2, 0x56, 0x35, 0x1a, 0x43, 0xb9, 0x7d, 0xbe, 0x21, 0x53 } -, - /* Public exponent */ - 3, - { 0x01, 0x00, 0x01 } -, - /* Exponent */ - 256, - { 0x5b, 0xd9, 0x10, 0x25, 0x78, 0x30, 0xdc, 0xe1, 0x75, 0x20, 0xb0, 0x34, 0x41, 0xa5, 0x1a, 0x8c, 0xab, 0x94, 0x02, 0x0a, 0xc6, 0xec, 0xc2, 0x52, 0xc8, 0x08, 0xf3, 0x74, 0x3c, 0x95, 0xb7, 0xc8, 0x3b, 0x8c, 0x8a, 0xf1, 0xa5, 0x01, 0x43, 0x46, 0xeb, 0xc4, 0x24, 0x2c, 0xdf, 0xb5, 0xd7, 0x18, 0xe3, 0x0a, 0x73, 0x3e, 0x71, 0xf2, 0x91, 0xe4, 0xd4, 0x73, 0xb6, 0x1b, 0xfb, 0xa6, 0xda, 0xca, 0xed, 0x0a, 0x77, 0xbd, 0x1f, 0x09, 0x50, 0xae, 0x3c, 0x91, 0xa8, 0xf9, 0x01, 0x11, 0x88, 0x25, 0x89, 0xe1, 0xd6, 0x27, 0x65, 0xee, 0x67, 0x1e, 0x7b, 0xae, 0xea, 0x30, 0x9f, 0x64, 0xd4, 0x47, 0xbb, 0xcf, 0xa9, 0xea, 0x12, 0xdc, 0xe0, 0x5e, 0x9e, 0xa8, 0x93, 0x9b, 0xc5, 0xfe, 0x61, 0x08, 0x58, 0x12, 0x79, 0xc9, 0x82, 0xb3, 0x08, 0x79, 0x4b, 0x34, 0x48, 0xe7, 0xf7, 0xb9, 0x52, 0x29, 0x2d, 0xf8, 0x8c, 0x80, 0xcb, 0x40, 0x14, 0x2c, 0x4b, 0x5c, 0xf5, 0xf8, 0xdd, 0xaa, 0x08, 0x91, 0x67, 0x8d, 0x61, 0x0e, 0x58, 0x2f, 0xcb, 0x88, 0x0f, 0x0d, 0x70, 0x7c, 0xaf, 0x47, 0xd0, 0x9a, 0x84, 0xe1, 0x4c, 0xa6, 0x58, 0x41, 0xe5, 0xa3, 0xab, 0xc5, 0xe9, 0xdb, 0xa9, 0x40, 0x75, 0xa9, 0x08, 0x43, 0x41, 0xf0, 0xed, 0xad, 0x9b, 0x68, 0xe3, 0xb8, 0xe0, 0x82, 0xb8, 0x0b, 0x6e, 0x6e, 0x8a, 0x05, 0x47, 0xb4, 0x4f, 0xb5, 0x06, 0x1b, 0x6a, 0x91, 0x31, 0x60, 0x3a, 0x55, 0x37, 0xdd, 0xab, 0xd0, 0x1d, 0x8e, 0x86, 0x3d, 0x89, 0x22, 0xe9, 0xaa, 0x3e, 0x4b, 0xfa, 0xea, 0x0b, 0x39, 0xd7, 0x92, 0x83, 0xad, 0x2c, 0xbc, 0x8a, 0x59, 0xcc, 0xe7, 0xa6, 0xec, 0xf4, 0xe4, 0xc8, 0x1e, 0xd4, 0xc6, 0x59, 0x1c, 0x80, 0x7d, 0xef, 0xd7, 0x1a, 0xb0, 0x68, 0x66, 0xbb, 0x5e, 0x77, 0x45 } -, - /* Prime 1 */ - 128, - { 0xf4, 0x4f, 0x5e, 0x42, 0x46, 0x39, 0x1f, 0x48, 0x2b, 0x2f, 0x52, 0x96, 0xe3, 0x60, 0x2e, 0xb3, 0x4a, 0xa1, 0x36, 0x42, 0x77, 0x10, 0xf7, 0xc0, 0x41, 0x6d, 0x40, 0x3f, 0xd6, 0x9d, 0x4b, 0x29, 0x13, 0x0c, 0xfe, 0xbe, 0xf3, 0x4e, 0x88, 0x5a, 0xbd, 0xb1, 0xa8, 0xa0, 0xa5, 0xf0, 0xe9, 0xb5, 0xc3, 0x3e, 0x1f, 0xc3, 0xbf, 0xc2, 0x85, 0xb1, 0xae, 0x17, 0xe4, 0x0c, 0xc6, 0x7a, 0x19, 0x13, 0xdd, 0x56, 0x37, 0x19, 0x81, 0x5e, 0xba, 0xf8, 0x51, 0x4c, 0x2a, 0x7a, 0xa0, 0x01, 0x8e, 0x63, 0xb6, 0xc6, 0x31, 0xdc, 0x31, 0x5a, 0x46, 0x23, 0x57, 0x16, 0x42, 0x3d, 0x11, 0xff, 0x58, 0x03, 0x4e, 0x61, 0x06, 0x45, 0x70, 0x36, 0x06, 0x91, 0x9f, 0x5c, 0x7c, 0xe2, 0x66, 0x0c, 0xd1, 0x48, 0xbd, 0x9e, 0xfc, 0x12, 0x3d, 0x9c, 0x54, 0xb6, 0x70, 0x55, 0x90, 0xd0, 0x06, 0xcf, 0xcf, 0x3f } -, - /* Prime 2 */ - 128, - { 0xe9, 0xd4, 0x98, 0x41, 0xe0, 0xe0, 0xa6, 0xad, 0x0d, 0x51, 0x78, 0x57, 0x13, 0x3e, 0x36, 0xdc, 0x72, 0xc1, 0xbd, 0xd9, 0x0f, 0x91, 0x74, 0xb5, 0x2e, 0x26, 0x57, 0x0f, 0x37, 0x36, 0x40, 0xf1, 0xc1, 0x85, 0xe7, 0xea, 0x8e, 0x2e, 0xd7, 0xf1, 0xe4, 0xeb, 0xb9, 0x51, 0xf7, 0x0a, 0x58, 0x02, 0x36, 0x33, 0xb0, 0x09, 0x7a, 0xec, 0x67, 0xc6, 0xdc, 0xb8, 0x00, 0xfc, 0x1a, 0x67, 0xf9, 0xbb, 0x05, 0x63, 0x61, 0x0f, 0x08, 0xeb, 0xc8, 0x74, 0x6a, 0xd1, 0x29, 0x77, 0x21, 0x36, 0xeb, 0x1d, 0xda, 0xf4, 0x64, 0x36, 0x45, 0x0d, 0x31, 0x83, 0x32, 0xa8, 0x49, 0x82, 0xfe, 0x5d, 0x28, 0xdb, 0xe5, 0xb3, 0xe9, 0x12, 0x40, 0x7c, 0x3e, 0x0e, 0x03, 0x10, 0x0d, 0x87, 0xd4, 0x36, 0xee, 0x40, 0x9e, 0xec, 0x1c, 0xf8, 0x5e, 0x80, 0xab, 0xa0, 0x79, 0xb2, 0xe6, 0x10, 0x6b, 0x97, 0xbc, 0xed } -, - /* Prime exponent 1 */ - 128, - { 0xed, 0x10, 0x2a, 0xcd, 0xb2, 0x68, 0x71, 0x53, 0x4d, 0x1c, 0x41, 0x4e, 0xca, 0xd9, 0xa4, 0xd7, 0x32, 0xfe, 0x95, 0xb1, 0x0e, 0xea, 0x37, 0x0d, 0xa6, 0x2f, 0x05, 0xde, 0x2c, 0x39, 0x3b, 0x1a, 0x63, 0x33, 0x03, 0xea, 0x74, 0x1b, 0x6b, 0x32, 0x69, 0xc9, 0x7f, 0x70, 0x4b, 0x35, 0x27, 0x02, 0xc9, 0xae, 0x79, 0x92, 0x2f, 0x7b, 0xe8, 0xd1, 0x0d, 0xb6, 0x7f, 0x02, 0x6a, 0x81, 0x45, 0xde, 0x41, 0xb3, 0x0c, 0x0a, 0x42, 0xbf, 0x92, 0x3b, 0xac, 0x5f, 0x75, 0x04, 0xc2, 0x48, 0x60, 0x4b, 0x9f, 0xaa, 0x57, 0xed, 0x6b, 0x32, 0x46, 0xc6, 0xba, 0x15, 0x8e, 0x36, 0xc6, 0x44, 0xf8, 0xb9, 0x54, 0x8f, 0xcf, 0x4f, 0x07, 0xe0, 0x54, 0xa5, 0x6f, 0x76, 0x86, 0x74, 0x05, 0x44, 0x40, 0xbc, 0x0d, 0xcb, 0xbc, 0x9b, 0x52, 0x8f, 0x64, 0xa0, 0x17, 0x06, 0xe0, 0x5b, 0x0b, 0x91, 0x10, 0x6f } -, - /* Prime exponent 2 */ - 128, - { 0x68, 0x27, 0x92, 0x4a, 0x85, 0xe8, 0x8b, 0x55, 0xba, 0x00, 0xf8, 0x21, 0x91, 0x28, 0xbd, 0x37, 0x24, 0xc6, 0xb7, 0xd1, 0xdf, 0xe5, 0x62, 0x9e, 0xf1, 0x97, 0x92, 0x5f, 0xec, 0xaf, 0xf5, 0xed, 0xb9, 0xcd, 0xf3, 0xa7, 0xbe, 0xfd, 0x8e, 0xa2, 0xe8, 0xdd, 0x37, 0x07, 0x13, 0x8b, 0x3f, 0xf8, 0x7c, 0x3c, 0x39, 0xc5, 0x7f, 0x43, 0x9e, 0x56, 0x2e, 0x2a, 0xa8, 0x05, 0xa3, 0x9d, 0x7c, 0xd7, 0x99, 0x66, 0xd2, 0xec, 0xe7, 0x84, 0x5f, 0x1d, 0xbc, 0x16, 0xbe, 0xe9, 0x99, 0x99, 0xe4, 0xd0, 0xbf, 0x9e, 0xec, 0xa4, 0x5f, 0xcd, 0xa8, 0xa8, 0x50, 0x00, 0x35, 0xfe, 0x6b, 0x5f, 0x03, 0xbc, 0x2f, 0x6d, 0x1b, 0xfc, 0x4d, 0x4d, 0x0a, 0x37, 0x23, 0x96, 0x1a, 0xf0, 0xcd, 0xce, 0x4a, 0x01, 0xee, 0xc8, 0x2d, 0x7f, 0x54, 0x58, 0xec, 0x19, 0xe7, 0x1b, 0x90, 0xee, 0xef, 0x7d, 0xff, 0x61 } -, - /* Coefficient */ - 128, - { 0x57, 0xb7, 0x38, 0x88, 0xd1, 0x83, 0xa9, 0x9a, 0x63, 0x07, 0x42, 0x22, 0x77, 0x55, 0x1a, 0x3d, 0x9e, 0x18, 0xad, 0xf0, 0x6a, 0x91, 0xe8, 0xb5, 0x5c, 0xef, 0xfe, 0xf9, 0x07, 0x7c, 0x84, 0x96, 0x94, 0x8e, 0xcb, 0x3b, 0x16, 0xb7, 0x81, 0x55, 0xcb, 0x2a, 0x3a, 0x57, 0xc1, 0x19, 0xd3, 0x79, 0x95, 0x1c, 0x01, 0x0a, 0xa6, 0x35, 0xed, 0xcf, 0x62, 0xd8, 0x4c, 0x5a, 0x12, 0x2a, 0x8d, 0x67, 0xab, 0x5f, 0xa9, 0xe5, 0xa4, 0xa8, 0x77, 0x2a, 0x1e, 0x94, 0x3b, 0xaf, 0xc7, 0x0a, 0xe3, 0xa4, 0xc1, 0xf0, 0xf3, 0xa4, 0xdd, 0xff, 0xae, 0xfd, 0x18, 0x92, 0xc8, 0xcb, 0x33, 0xbb, 0x0d, 0x0b, 0x95, 0x90, 0xe9, 0x63, 0xa6, 0x91, 0x10, 0xfb, 0x34, 0xdb, 0x7b, 0x90, 0x6f, 0xc4, 0xba, 0x28, 0x36, 0x99, 0x5a, 0xac, 0x7e, 0x52, 0x74, 0x90, 0xac, 0x95, 0x2a, 0x02, 0x26, 0x8a, 0x4f, 0x18 } - -} -, -{{ - "PKCS#1 v1.5 Signature Example 15.1", - /* Message to be signed */ - 229, - { 0xf4, 0x5d, 0x55, 0xf3, 0x55, 0x51, 0xe9, 0x75, 0xd6, 0xa8, 0xdc, 0x7e, 0xa9, 0xf4, 0x88, 0x59, 0x39, 0x40, 0xcc, 0x75, 0x69, 0x4a, 0x27, 0x8f, 0x27, 0xe5, 0x78, 0xa1, 0x63, 0xd8, 0x39, 0xb3, 0x40, 0x40, 0x84, 0x18, 0x08, 0xcf, 0x9c, 0x58, 0xc9, 0xb8, 0x72, 0x8b, 0xf5, 0xf9, 0xce, 0x8e, 0xe8, 0x11, 0xea, 0x91, 0x71, 0x4f, 0x47, 0xba, 0xb9, 0x2d, 0x0f, 0x6d, 0x5a, 0x26, 0xfc, 0xfe, 0xea, 0x6c, 0xd9, 0x3b, 0x91, 0x0c, 0x0a, 0x2c, 0x96, 0x3e, 0x64, 0xeb, 0x18, 0x23, 0xf1, 0x02, 0x75, 0x3d, 0x41, 0xf0, 0x33, 0x59, 0x10, 0xad, 0x3a, 0x97, 0x71, 0x04, 0xf1, 0xaa, 0xf6, 0xc3, 0x74, 0x27, 0x16, 0xa9, 0x75, 0x5d, 0x11, 0xb8, 0xee, 0xd6, 0x90, 0x47, 0x7f, 0x44, 0x5c, 0x5d, 0x27, 0x20, 0x8b, 0x2e, 0x28, 0x43, 0x30, 0xfa, 0x3d, 0x30, 0x14, 0x23, 0xfa, 0x7f, 0x2d, 0x08, 0x6e, 0x0a, 0xd0, 0xb8, 0x92, 0xb9, 0xdb, 0x54, 0x4e, 0x45, 0x6d, 0x3f, 0x0d, 0xab, 0x85, 0xd9, 0x53, 0xc1, 0x2d, 0x34, 0x0a, 0xa8, 0x73, 0xed, 0xa7, 0x27, 0xc8, 0xa6, 0x49, 0xdb, 0x7f, 0xa6, 0x37, 0x40, 0xe2, 0x5e, 0x9a, 0xf1, 0x53, 0x3b, 0x30, 0x7e, 0x61, 0x32, 0x99, 0x93, 0x11, 0x0e, 0x95, 0x19, 0x4e, 0x03, 0x93, 0x99, 0xc3, 0x82, 0x4d, 0x24, 0xc5, 0x1f, 0x22, 0xb2, 0x6b, 0xde, 0x10, 0x24, 0xcd, 0x39, 0x59, 0x58, 0xa2, 0xdf, 0xeb, 0x48, 0x16, 0xa6, 0xe8, 0xad, 0xed, 0xb5, 0x0b, 0x1f, 0x6b, 0x56, 0xd0, 0xb3, 0x06, 0x0f, 0xf0, 0xf1, 0xc4, 0xcb, 0x0d, 0x0e, 0x00, 0x1d, 0xd5, 0x9d, 0x73, 0xbe, 0x12 } -, - /* Signature */ - 256, - { 0xb7, 0x5a, 0x54, 0x66, 0xb6, 0x5d, 0x0f, 0x30, 0x0e, 0xf5, 0x38, 0x33, 0xf2, 0x17, 0x5c, 0x8a, 0x34, 0x7a, 0x38, 0x04, 0xfc, 0x63, 0x45, 0x1d, 0xc9, 0x02, 0xf0, 0xb7, 0x1f, 0x90, 0x83, 0x45, 0x9e, 0xd3, 0x7a, 0x51, 0x79, 0xa3, 0xb7, 0x23, 0xa5, 0x3f, 0x10, 0x51, 0x64, 0x2d, 0x77, 0x37, 0x4c, 0x4c, 0x6c, 0x8d, 0xbb, 0x1c, 0xa2, 0x05, 0x25, 0xf5, 0xc9, 0xf3, 0x2d, 0xb7, 0x76, 0x95, 0x35, 0x56, 0xda, 0x31, 0x29, 0x0e, 0x22, 0x19, 0x74, 0x82, 0xce, 0xb6, 0x99, 0x06, 0xc4, 0x6a, 0x75, 0x8f, 0xb0, 0xe7, 0x40, 0x9b, 0xa8, 0x01, 0x07, 0x7d, 0x2a, 0x0a, 0x20, 0xea, 0xe7, 0xd1, 0xd6, 0xd3, 0x92, 0xab, 0x49, 0x57, 0xe8, 0x6b, 0x76, 0xf0, 0x65, 0x2d, 0x68, 0xb8, 0x39, 0x88, 0xa7, 0x8f, 0x26, 0xe1, 0x11, 0x72, 0xea, 0x60, 0x9b, 0xf8, 0x49, 0xfb, 0xbd, 0x78, 0xad, 0x7e, 0xdc, 0xe2, 0x1d, 0xe6, 0x62, 0xa0, 0x81, 0x36, 0x8c, 0x04, 0x06, 0x07, 0xce, 0xe2, 0x9d, 0xb0, 0x62, 0x72, 0x27, 0xf4, 0x49, 0x63, 0xad, 0x17, 0x1d, 0x22, 0x93, 0xb6, 0x33, 0xa3, 0x92, 0xe3, 0x31, 0xdc, 0xa5, 0x4f, 0xe3, 0x08, 0x27, 0x52, 0xf4, 0x3f, 0x63, 0xc1, 0x61, 0xb4, 0x47, 0xa4, 0xc6, 0x5a, 0x68, 0x75, 0x67, 0x0d, 0x5f, 0x66, 0x00, 0xfc, 0xc8, 0x60, 0xa1, 0xca, 0xeb, 0x0a, 0x88, 0xf8, 0xfd, 0xec, 0x4e, 0x56, 0x43, 0x98, 0xa5, 0xc4, 0x6c, 0x87, 0xf6, 0x8c, 0xe0, 0x70, 0x01, 0xf6, 0x21, 0x3a, 0xbe, 0x0a, 0xb5, 0x62, 0x5f, 0x87, 0xd1, 0x90, 0x25, 0xf0, 0x8d, 0x81, 0xda, 0xc7, 0xbd, 0x45, 0x86, 0xbc, 0x93, 0x82, 0x19, 0x1f, 0x6d, 0x28, 0x80, 0xf6, 0x22, 0x7e, 0x5d, 0xf3, 0xee, 0xd2, 0x1e, 0x77, 0x92, 0xd2, 0x49, 0x48, 0x04, 0x87, 0xf3, 0x65, 0x52, 0x61 } - -} -, -#ifdef LTC_TEST_EXT -{ - "PKCS#1 v1.5 Signature Example 15.2", - /* Message to be signed */ - 153, - { 0xc1, 0x4b, 0x4c, 0x60, 0x75, 0xb2, 0xf9, 0xaa, 0xd6, 0x61, 0xde, 0xf4, 0xec, 0xfd, 0x3c, 0xb9, 0x33, 0xc6, 0x23, 0xf4, 0xe6, 0x3b, 0xf5, 0x34, 0x10, 0xd2, 0xf0, 0x16, 0xd1, 0xab, 0x98, 0xe2, 0x72, 0x9e, 0xcc, 0xf8, 0x00, 0x6c, 0xd8, 0xe0, 0x80, 0x50, 0x73, 0x7d, 0x95, 0xfd, 0xbf, 0x29, 0x6b, 0x66, 0xf5, 0xb9, 0x79, 0x2a, 0x90, 0x29, 0x36, 0xc4, 0xf7, 0xac, 0x69, 0xf5, 0x14, 0x53, 0xce, 0x43, 0x69, 0x45, 0x2d, 0xc2, 0x2d, 0x96, 0xf0, 0x37, 0x74, 0x81, 0x14, 0x66, 0x20, 0x00, 0xdd, 0x9c, 0xd3, 0xa5, 0xe1, 0x79, 0xf4, 0xe0, 0xf8, 0x1f, 0xa6, 0xa0, 0x31, 0x1c, 0xa1, 0xae, 0xe6, 0x51, 0x9a, 0x0f, 0x63, 0xce, 0xc7, 0x8d, 0x27, 0xbb, 0x72, 0x63, 0x93, 0xfb, 0x7f, 0x1f, 0x88, 0xcd, 0xe7, 0xc9, 0x7f, 0x8a, 0x66, 0xcd, 0x66, 0x30, 0x12, 0x81, 0xda, 0xc3, 0xf3, 0xa4, 0x33, 0x24, 0x8c, 0x75, 0xd6, 0xc2, 0xdc, 0xd7, 0x08, 0xb6, 0xa9, 0x7b, 0x0a, 0x3f, 0x32, 0x5e, 0x0b, 0x29, 0x64, 0xf8, 0xa5, 0x81, 0x9e, 0x47, 0x9b } -, - /* Signature */ - 256, - { 0xaf, 0xa7, 0x34, 0x34, 0x62, 0xbe, 0xa1, 0x22, 0xcc, 0x14, 0x9f, 0xca, 0x70, 0xab, 0xda, 0xe7, 0x94, 0x46, 0x67, 0x7d, 0xb5, 0x37, 0x36, 0x66, 0xaf, 0x7d, 0xc3, 0x13, 0x01, 0x5f, 0x4d, 0xe7, 0x86, 0xe6, 0xe3, 0x94, 0x94, 0x6f, 0xad, 0x3c, 0xc0, 0xe2, 0xb0, 0x2b, 0xed, 0xba, 0x50, 0x47, 0xfe, 0x9e, 0x2d, 0x7d, 0x09, 0x97, 0x05, 0xe4, 0xa3, 0x9f, 0x28, 0x68, 0x32, 0x79, 0xcf, 0x0a, 0xc8, 0x5c, 0x15, 0x30, 0x41, 0x22, 0x42, 0xc0, 0xe9, 0x18, 0x95, 0x3b, 0xe0, 0x00, 0xe9, 0x39, 0xcf, 0x3b, 0xf1, 0x82, 0x52, 0x5e, 0x19, 0x93, 0x70, 0xfa, 0x79, 0x07, 0xeb, 0xa6, 0x9d, 0x5d, 0xb4, 0x63, 0x10, 0x17, 0xc0, 0xe3, 0x6d, 0xf7, 0x03, 0x79, 0xb5, 0xdb, 0x8d, 0x4c, 0x69, 0x5a, 0x97, 0x9a, 0x8e, 0x61, 0x73, 0x22, 0x40, 0x65, 0xd7, 0xdc, 0x15, 0x13, 0x2e, 0xf2, 0x8c, 0xd8, 0x22, 0x79, 0x51, 0x63, 0x06, 0x3b, 0x54, 0xc6, 0x51, 0x14, 0x1b, 0xe8, 0x6d, 0x36, 0xe3, 0x67, 0x35, 0xbc, 0x61, 0xf3, 0x1f, 0xca, 0x57, 0x4e, 0x53, 0x09, 0xf3, 0xa3, 0xbb, 0xdf, 0x91, 0xef, 0xf1, 0x2b, 0x99, 0xe9, 0xcc, 0x17, 0x44, 0xf1, 0xee, 0x9a, 0x1b, 0xd2, 0x2c, 0x5b, 0xad, 0x96, 0xad, 0x48, 0x19, 0x29, 0x25, 0x1f, 0x03, 0x43, 0xfd, 0x36, 0xbc, 0xf0, 0xac, 0xde, 0x7f, 0x11, 0xe5, 0xad, 0x60, 0x97, 0x77, 0x21, 0x20, 0x27, 0x96, 0xfe, 0x06, 0x1f, 0x9a, 0xda, 0x1f, 0xc4, 0xc8, 0xe0, 0x0d, 0x60, 0x22, 0xa8, 0x35, 0x75, 0x85, 0xff, 0xe9, 0xfd, 0xd5, 0x93, 0x31, 0xa2, 0x8c, 0x4a, 0xa3, 0x12, 0x15, 0x88, 0xfb, 0x6c, 0xf6, 0x83, 0x96, 0xd8, 0xac, 0x05, 0x46, 0x59, 0x95, 0x00, 0xc9, 0x70, 0x85, 0x00, 0xa5, 0x97, 0x2b, 0xd5, 0x4f, 0x72, 0xcf, 0x8d, 0xb0, 0xc8 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.3", - /* Message to be signed */ - 243, - { 0xd0, 0x23, 0x71, 0xad, 0x7e, 0xe4, 0x8b, 0xbf, 0xdb, 0x27, 0x63, 0xde, 0x7a, 0x84, 0x3b, 0x94, 0x08, 0xce, 0x5e, 0xb5, 0xab, 0xf8, 0x47, 0xca, 0x3d, 0x73, 0x59, 0x86, 0xdf, 0x84, 0xe9, 0x06, 0x0b, 0xdb, 0xcd, 0xd3, 0xa5, 0x5b, 0xa5, 0x5d, 0xde, 0x20, 0xd4, 0x76, 0x1e, 0x1a, 0x21, 0xd2, 0x25, 0xc1, 0xa1, 0x86, 0xf4, 0xac, 0x4b, 0x30, 0x19, 0xd3, 0xad, 0xf7, 0x8f, 0xe6, 0x33, 0x46, 0x67, 0xf5, 0x6f, 0x70, 0xc9, 0x01, 0xa0, 0xa2, 0x70, 0x0c, 0x6f, 0x0d, 0x56, 0xad, 0xd7, 0x19, 0x59, 0x2d, 0xc8, 0x8f, 0x6d, 0x23, 0x06, 0xc7, 0x00, 0x9f, 0x6e, 0x7a, 0x63, 0x5b, 0x4c, 0xb3, 0xa5, 0x02, 0xdf, 0xe6, 0x8d, 0xdc, 0x58, 0xd0, 0x3b, 0xe1, 0x0a, 0x11, 0x70, 0x00, 0x4f, 0xe7, 0x4d, 0xd3, 0xe4, 0x6b, 0x82, 0x59, 0x1f, 0xf7, 0x54, 0x14, 0xf0, 0xc4, 0xa0, 0x3e, 0x60, 0x5e, 0x20, 0x52, 0x4f, 0x24, 0x16, 0xf1, 0x2e, 0xca, 0x58, 0x9f, 0x11, 0x1b, 0x75, 0xd6, 0x39, 0xc6, 0x1b, 0xaa, 0x80, 0xca, 0xfd, 0x05, 0xcf, 0x35, 0x00, 0x24, 0x4a, 0x21, 0x9e, 0xd9, 0xce, 0xd9, 0xf0, 0xb1, 0x02, 0x97, 0x18, 0x2b, 0x65, 0x3b, 0x52, 0x6f, 0x40, 0x0f, 0x29, 0x53, 0xba, 0x21, 0x4d, 0x5b, 0xcd, 0x47, 0x88, 0x41, 0x32, 0x87, 0x2a, 0xe9, 0x0d, 0x4d, 0x6b, 0x1f, 0x42, 0x15, 0x39, 0xf9, 0xf3, 0x46, 0x62, 0xa5, 0x6d, 0xc0, 0xe7, 0xb4, 0xb9, 0x23, 0xb6, 0x23, 0x1e, 0x30, 0xd2, 0x67, 0x67, 0x97, 0x81, 0x7f, 0x7c, 0x33, 0x7b, 0x5a, 0xc8, 0x24, 0xba, 0x93, 0x14, 0x3b, 0x33, 0x81, 0xfa, 0x3d, 0xce, 0x0e, 0x6a, 0xeb, 0xd3, 0x8e, 0x67, 0x73, 0x51, 0x87, 0xb1, 0xeb, 0xd9, 0x5c, 0x02 } -, - /* Signature */ - 256, - { 0x3b, 0xac, 0x63, 0xf8, 0x6e, 0x3b, 0x70, 0x27, 0x12, 0x03, 0x10, 0x6b, 0x9c, 0x79, 0xaa, 0xbd, 0x9f, 0x47, 0x7c, 0x56, 0xe4, 0xee, 0x58, 0xa4, 0xfc, 0xe5, 0xba, 0xf2, 0xca, 0xb4, 0x96, 0x0f, 0x88, 0x39, 0x1c, 0x9c, 0x23, 0x69, 0x8b, 0xe7, 0x5c, 0x99, 0xae, 0xdf, 0x9e, 0x1a, 0xbf, 0x17, 0x05, 0xbe, 0x1d, 0xac, 0x33, 0x14, 0x0a, 0xdb, 0x48, 0xeb, 0x31, 0xf4, 0x50, 0xbb, 0x9e, 0xfe, 0x83, 0xb7, 0xb9, 0x0d, 0xb7, 0xf1, 0x57, 0x6d, 0x33, 0xf4, 0x0c, 0x1c, 0xba, 0x4b, 0x8d, 0x6b, 0x1d, 0x33, 0x23, 0x56, 0x4b, 0x0f, 0x17, 0x74, 0x11, 0x4f, 0xa7, 0xc0, 0x8e, 0x6d, 0x1e, 0x20, 0xdd, 0x8f, 0xbb, 0xa9, 0xb6, 0xac, 0x7a, 0xd4, 0x1e, 0x26, 0xb4, 0x56, 0x8f, 0x4a, 0x8a, 0xac, 0xbf, 0xd1, 0x78, 0xa8, 0xf8, 0xd2, 0xc9, 0xd5, 0xf5, 0xb8, 0x81, 0x12, 0x93, 0x5a, 0x8b, 0xc9, 0xae, 0x32, 0xcd, 0xa4, 0x0b, 0x8d, 0x20, 0x37, 0x55, 0x10, 0x73, 0x50, 0x96, 0x53, 0x68, 0x18, 0xce, 0x2b, 0x2d, 0xb7, 0x1a, 0x97, 0x72, 0xc9, 0xb0, 0xdd, 0xa0, 0x9a, 0xe1, 0x01, 0x52, 0xfa, 0x11, 0x46, 0x62, 0x18, 0xd0, 0x91, 0xb5, 0x3d, 0x92, 0x54, 0x30, 0x61, 0xb7, 0x29, 0x4a, 0x55, 0xbe, 0x82, 0xff, 0x35, 0xd5, 0xc3, 0x2f, 0xa2, 0x33, 0xf0, 0x5a, 0xaa, 0xc7, 0x58, 0x50, 0x30, 0x7e, 0xcf, 0x81, 0x38, 0x3c, 0x11, 0x16, 0x74, 0x39, 0x7b, 0x1a, 0x1b, 0x9d, 0x3b, 0xf7, 0x61, 0x2c, 0xcb, 0xe5, 0xba, 0xcd, 0x2b, 0x38, 0xf0, 0xa9, 0x83, 0x97, 0xb2, 0x4c, 0x83, 0x65, 0x8f, 0xb6, 0xc0, 0xb4, 0x14, 0x0e, 0xf1, 0x19, 0x70, 0xc4, 0x63, 0x0d, 0x44, 0x34, 0x4e, 0x76, 0xea, 0xed, 0x74, 0xdc, 0xbe, 0xe8, 0x11, 0xdb, 0xf6, 0x57, 0x59, 0x41, 0xf0, 0x8a, 0x65, 0x23, 0xb8 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.4", - /* Message to be signed */ - 58, - { 0x29, 0x03, 0x55, 0x84, 0xab, 0x7e, 0x02, 0x26, 0xa9, 0xec, 0x4b, 0x02, 0xe8, 0xdc, 0xf1, 0x27, 0x2d, 0xc9, 0xa4, 0x1d, 0x73, 0xe2, 0x82, 0x00, 0x07, 0xb0, 0xf6, 0xe2, 0x1f, 0xec, 0xcd, 0x5b, 0xd9, 0xdb, 0xb9, 0xef, 0x88, 0xcd, 0x67, 0x58, 0x76, 0x9e, 0xe1, 0xf9, 0x56, 0xda, 0x7a, 0xd1, 0x84, 0x41, 0xde, 0x6f, 0xab, 0x83, 0x86, 0xdb, 0xc6, 0x93 } -, - /* Signature */ - 256, - { 0x28, 0xd8, 0xe3, 0xfc, 0xd5, 0xdd, 0xdb, 0x21, 0xff, 0xbd, 0x8d, 0xf1, 0x63, 0x0d, 0x73, 0x77, 0xaa, 0x26, 0x51, 0xe1, 0x4c, 0xad, 0x1c, 0x0e, 0x43, 0xcc, 0xc5, 0x2f, 0x90, 0x7f, 0x94, 0x6d, 0x66, 0xde, 0x72, 0x54, 0xe2, 0x7a, 0x6c, 0x19, 0x0e, 0xb0, 0x22, 0xee, 0x89, 0xec, 0xf6, 0x22, 0x4b, 0x09, 0x7b, 0x71, 0x06, 0x8c, 0xd6, 0x07, 0x28, 0xa1, 0xae, 0xd6, 0x4b, 0x80, 0xe5, 0x45, 0x7b, 0xd3, 0x10, 0x6d, 0xd9, 0x17, 0x06, 0xc9, 0x37, 0xc9, 0x79, 0x5f, 0x2b, 0x36, 0x36, 0x7f, 0xf1, 0x53, 0xdc, 0x25, 0x19, 0xa8, 0xdb, 0x9b, 0xdf, 0x2c, 0x80, 0x74, 0x30, 0xc4, 0x51, 0xde, 0x17, 0xbb, 0xcd, 0x0c, 0xe7, 0x82, 0xb3, 0xe8, 0xf1, 0x02, 0x4d, 0x90, 0x62, 0x4d, 0xea, 0x7f, 0x1e, 0xed, 0xc7, 0x42, 0x0b, 0x7e, 0x7c, 0xaa, 0x65, 0x77, 0xce, 0xf4, 0x31, 0x41, 0xa7, 0x26, 0x42, 0x06, 0x58, 0x0e, 0x44, 0xa1, 0x67, 0xdf, 0x5e, 0x41, 0xee, 0xa0, 0xe6, 0x9a, 0x80, 0x54, 0x54, 0xc4, 0x0e, 0xef, 0xc1, 0x3f, 0x48, 0xe4, 0x23, 0xd7, 0xa3, 0x2d, 0x02, 0xed, 0x42, 0xc0, 0xab, 0x03, 0xd0, 0xa7, 0xcf, 0x70, 0xc5, 0x86, 0x0a, 0xc9, 0x2e, 0x03, 0xee, 0x00, 0x5b, 0x60, 0xff, 0x35, 0x03, 0x42, 0x4b, 0x98, 0xcc, 0x89, 0x45, 0x68, 0xc7, 0xc5, 0x6a, 0x02, 0x33, 0x55, 0x1c, 0xeb, 0xe5, 0x88, 0xcf, 0x8b, 0x01, 0x67, 0xb7, 0xdf, 0x13, 0xad, 0xca, 0xd8, 0x28, 0x67, 0x68, 0x10, 0x49, 0x9c, 0x70, 0x4d, 0xa7, 0xae, 0x23, 0x41, 0x4d, 0x69, 0xe3, 0xc0, 0xd2, 0xdb, 0x5d, 0xcb, 0xc2, 0x61, 0x3b, 0xc1, 0x20, 0x42, 0x1f, 0x9e, 0x36, 0x53, 0xc5, 0xa8, 0x76, 0x72, 0x97, 0x64, 0x3c, 0x7e, 0x07, 0x40, 0xde, 0x01, 0x63, 0x55, 0x45, 0x3d, 0x6c, 0x95, 0xae, 0x72 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.5", - /* Message to be signed */ - 14, - { 0xbd, 0xa3, 0xa1, 0xc7, 0x90, 0x59, 0xea, 0xe5, 0x98, 0x30, 0x8d, 0x3d, 0xf6, 0x09 } -, - /* Signature */ - 256, - { 0xa1, 0x56, 0x17, 0x6c, 0xb9, 0x67, 0x77, 0xc7, 0xfb, 0x96, 0x10, 0x5d, 0xbd, 0x91, 0x3b, 0xc4, 0xf7, 0x40, 0x54, 0xf6, 0x80, 0x7c, 0x60, 0x08, 0xa1, 0xa9, 0x56, 0xea, 0x92, 0xc1, 0xf8, 0x1c, 0xb8, 0x97, 0xdc, 0x4b, 0x92, 0xef, 0x9f, 0x4e, 0x40, 0x66, 0x8d, 0xc7, 0xc5, 0x56, 0x90, 0x1a, 0xcb, 0x6c, 0xf2, 0x69, 0xfe, 0x61, 0x5b, 0x0f, 0xb7, 0x2b, 0x30, 0xa5, 0x13, 0x38, 0x69, 0x23, 0x14, 0xb0, 0xe5, 0x87, 0x8a, 0x88, 0xc2, 0xc7, 0x77, 0x4b, 0xd1, 0x69, 0x39, 0xb5, 0xab, 0xd8, 0x2b, 0x44, 0x29, 0xd6, 0x7b, 0xd7, 0xac, 0x8e, 0x5e, 0xa7, 0xfe, 0x92, 0x4e, 0x20, 0xa6, 0xec, 0x66, 0x22, 0x91, 0xf2, 0x54, 0x8d, 0x73, 0x4f, 0x66, 0x34, 0x86, 0x8b, 0x03, 0x9a, 0xa5, 0xf9, 0xd4, 0xd9, 0x06, 0xb2, 0xd0, 0xcb, 0x85, 0x85, 0xbf, 0x42, 0x85, 0x47, 0xaf, 0xc9, 0x1c, 0x6e, 0x20, 0x52, 0xdd, 0xcd, 0x00, 0x1c, 0x3e, 0xf8, 0xc8, 0xee, 0xfc, 0x3b, 0x6b, 0x2a, 0x82, 0xb6, 0xf9, 0xc8, 0x8c, 0x56, 0xf2, 0xe2, 0xc3, 0xcb, 0x0b, 0xe4, 0xb8, 0x0d, 0xa9, 0x5e, 0xba, 0x37, 0x1d, 0x8b, 0x5f, 0x60, 0xf9, 0x25, 0x38, 0x74, 0x3d, 0xdb, 0xb5, 0xda, 0x29, 0x72, 0xc7, 0x1f, 0xe7, 0xb9, 0xf1, 0xb7, 0x90, 0x26, 0x8a, 0x0e, 0x77, 0x0f, 0xc5, 0xeb, 0x4d, 0x5d, 0xd8, 0x52, 0x47, 0xd4, 0x8a, 0xe2, 0xec, 0x3f, 0x26, 0x25, 0x5a, 0x39, 0x85, 0x52, 0x02, 0x06, 0xa1, 0xf2, 0x68, 0xe4, 0x83, 0xe9, 0xdb, 0xb1, 0xd5, 0xca, 0xb1, 0x90, 0x91, 0x76, 0x06, 0xde, 0x31, 0xe7, 0xc5, 0x18, 0x2d, 0x8f, 0x15, 0x1b, 0xf4, 0x1d, 0xfe, 0xcc, 0xae, 0xd7, 0xcd, 0xe6, 0x90, 0xb2, 0x16, 0x47, 0x10, 0x6b, 0x49, 0x0c, 0x72, 0x9d, 0x54, 0xa8, 0xfe, 0x28, 0x02, 0xa6, 0xd1, 0x26 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.6", - /* Message to be signed */ - 97, - { 0xc1, 0x87, 0x91, 0x5e, 0x4e, 0x87, 0xda, 0x81, 0xc0, 0x8e, 0xd4, 0x35, 0x6a, 0x0c, 0xce, 0xac, 0x1c, 0x4f, 0xb5, 0xc0, 0x46, 0xb4, 0x52, 0x81, 0xb3, 0x87, 0xec, 0x28, 0xf1, 0xab, 0xfd, 0x56, 0x7e, 0x54, 0x6b, 0x23, 0x6b, 0x37, 0xd0, 0x1a, 0xe7, 0x1d, 0x3b, 0x28, 0x34, 0x36, 0x5d, 0x3d, 0xf3, 0x80, 0xb7, 0x50, 0x61, 0xb7, 0x36, 0xb0, 0x13, 0x0b, 0x07, 0x0b, 0xe5, 0x8a, 0xe8, 0xa4, 0x6d, 0x12, 0x16, 0x63, 0x61, 0xb6, 0x13, 0xdb, 0xc4, 0x7d, 0xfa, 0xeb, 0x4c, 0xa7, 0x46, 0x45, 0x6c, 0x2e, 0x88, 0x83, 0x85, 0x52, 0x5c, 0xca, 0x9d, 0xd1, 0xc3, 0xc7, 0xa9, 0xad, 0xa7, 0x6d, 0x6c } -, - /* Signature */ - 256, - { 0x9c, 0xab, 0x74, 0x16, 0x36, 0x08, 0x66, 0x9f, 0x75, 0x55, 0xa3, 0x33, 0xcf, 0x19, 0x6f, 0xe3, 0xa0, 0xe9, 0xe5, 0xeb, 0x1a, 0x32, 0xd3, 0x4b, 0xb5, 0xc8, 0x5f, 0xf6, 0x89, 0xaa, 0xab, 0x0e, 0x3e, 0x65, 0x66, 0x8e, 0xd3, 0xb1, 0x15, 0x3f, 0x94, 0xeb, 0x3d, 0x8b, 0xe3, 0x79, 0xb8, 0xee, 0xf0, 0x07, 0xc4, 0xa0, 0x2c, 0x70, 0x71, 0xce, 0x30, 0xd8, 0xbb, 0x34, 0x1e, 0x58, 0xc6, 0x20, 0xf7, 0x3d, 0x37, 0xb4, 0xec, 0xbf, 0x48, 0xbe, 0x29, 0x4f, 0x6c, 0x9e, 0x0e, 0xcb, 0x5e, 0x63, 0xfe, 0xc4, 0x1f, 0x12, 0x0e, 0x55, 0x53, 0xdf, 0xa0, 0xeb, 0xeb, 0xbb, 0x72, 0x64, 0x0a, 0x95, 0x37, 0xba, 0xdc, 0xb4, 0x51, 0x33, 0x02, 0x29, 0xd9, 0xf7, 0x10, 0xf6, 0x2e, 0x3e, 0xd8, 0xec, 0x78, 0x4e, 0x50, 0xee, 0x1d, 0x92, 0x62, 0xb4, 0x26, 0x71, 0x34, 0x00, 0x11, 0xd7, 0xd0, 0x98, 0xc6, 0xf2, 0x55, 0x7b, 0x21, 0x31, 0xfa, 0x9b, 0xd0, 0x25, 0x46, 0x36, 0x59, 0x7e, 0x88, 0xec, 0xb3, 0x5a, 0x24, 0x0e, 0xf0, 0xfd, 0x85, 0x95, 0x71, 0x24, 0xdf, 0x80, 0x80, 0xfe, 0xe1, 0xe1, 0x49, 0xaf, 0x93, 0x99, 0x89, 0xe8, 0x6b, 0x26, 0xc8, 0x5a, 0x58, 0x81, 0xfa, 0xe8, 0x67, 0x3d, 0x9f, 0xd4, 0x08, 0x00, 0xdd, 0x13, 0x4e, 0xb9, 0xbd, 0xb6, 0x41, 0x0f, 0x42, 0x0b, 0x0a, 0xa9, 0x7b, 0x20, 0xef, 0xcf, 0x2e, 0xb0, 0xc8, 0x07, 0xfa, 0xeb, 0x83, 0xa3, 0xcc, 0xd9, 0xb5, 0x1d, 0x45, 0x53, 0xe4, 0x1d, 0xfc, 0x0d, 0xf6, 0xca, 0x80, 0xa1, 0xe8, 0x1d, 0xc2, 0x34, 0xbb, 0x83, 0x89, 0xdd, 0x19, 0x5a, 0x38, 0xb4, 0x2d, 0xe4, 0xed, 0xc4, 0x9d, 0x34, 0x64, 0x78, 0xb9, 0xf1, 0x1f, 0x05, 0x57, 0x20, 0x5f, 0x5b, 0x0b, 0xd7, 0xff, 0xe9, 0xc8, 0x50, 0xf3, 0x96, 0xd7, 0xc4 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.7", - /* Message to be signed */ - 121, - { 0xab, 0xfa, 0x2e, 0xcb, 0x7d, 0x29, 0xbd, 0x5b, 0xcb, 0x99, 0x31, 0xce, 0x2b, 0xad, 0x2f, 0x74, 0x38, 0x3e, 0x95, 0x68, 0x3c, 0xee, 0x11, 0x02, 0x2f, 0x08, 0xe8, 0xe7, 0xd0, 0xb8, 0xfa, 0x05, 0x8b, 0xf9, 0xeb, 0x7e, 0xb5, 0xf9, 0x88, 0x68, 0xb5, 0xbb, 0x1f, 0xb5, 0xc3, 0x1c, 0xed, 0xa3, 0xa6, 0x4f, 0x1a, 0x12, 0xcd, 0xf2, 0x0f, 0xcd, 0x0e, 0x5a, 0x24, 0x6d, 0x7a, 0x17, 0x73, 0xd8, 0xdb, 0xa0, 0xe3, 0xb2, 0x77, 0x54, 0x5b, 0xab, 0xe5, 0x8f, 0x2b, 0x96, 0xe3, 0xf4, 0xed, 0xc1, 0x8e, 0xab, 0xf5, 0xcd, 0x2a, 0x56, 0x0f, 0xca, 0x75, 0xfe, 0x96, 0xe0, 0x7d, 0x85, 0x9d, 0xef, 0xb2, 0x56, 0x4f, 0x3a, 0x34, 0xf1, 0x6f, 0x11, 0xe9, 0x1b, 0x3a, 0x71, 0x7b, 0x41, 0xaf, 0x53, 0xf6, 0x60, 0x53, 0x23, 0x00, 0x1a, 0xa4, 0x06, 0xc6 } -, - /* Signature */ - 256, - { 0xc4, 0xb4, 0x37, 0xbc, 0xf7, 0x03, 0xf3, 0x52, 0xe1, 0xfa, 0xf7, 0x4e, 0xb9, 0x62, 0x20, 0x39, 0x42, 0x6b, 0x56, 0x72, 0xca, 0xf2, 0xa7, 0xb3, 0x81, 0xc6, 0xc4, 0xf0, 0x19, 0x1e, 0x7e, 0x4a, 0x98, 0xf0, 0xee, 0xbc, 0xd6, 0xf4, 0x17, 0x84, 0xc2, 0x53, 0x7f, 0xf0, 0xf9, 0x9e, 0x74, 0x98, 0x2c, 0x87, 0x20, 0x1b, 0xfb, 0xc6, 0x5e, 0xae, 0x83, 0x2d, 0xb7, 0x1d, 0x16, 0xda, 0xca, 0xdb, 0x09, 0x77, 0xe5, 0xc5, 0x04, 0x67, 0x9e, 0x40, 0xbe, 0x0f, 0x9d, 0xb0, 0x6f, 0xfd, 0x84, 0x8d, 0xd2, 0xe5, 0xc3, 0x8a, 0x7e, 0xc0, 0x21, 0xe7, 0xf6, 0x8c, 0x47, 0xdf, 0xd3, 0x8c, 0xc3, 0x54, 0x49, 0x3d, 0x53, 0x39, 0xb4, 0x59, 0x5a, 0x5b, 0xf3, 0x1e, 0x3f, 0x8f, 0x13, 0x81, 0x68, 0x07, 0x37, 0x3d, 0xf6, 0xad, 0x0d, 0xc7, 0xe7, 0x31, 0xe5, 0x1a, 0xd1, 0x9e, 0xb4, 0x75, 0x4b, 0x13, 0x44, 0x85, 0x84, 0x2f, 0xe7, 0x09, 0xd3, 0x78, 0x44, 0x4d, 0x8e, 0x36, 0xb1, 0x72, 0x4a, 0x4f, 0xda, 0x21, 0xca, 0xfe, 0xe6, 0x53, 0xab, 0x80, 0x74, 0x7f, 0x79, 0x52, 0xee, 0x80, 0x4d, 0xea, 0xb1, 0x03, 0x9d, 0x84, 0x13, 0x99, 0x45, 0xbb, 0xf4, 0xbe, 0x82, 0x00, 0x87, 0x53, 0xf3, 0xc5, 0x4c, 0x78, 0x21, 0xa1, 0xd2, 0x41, 0xf4, 0x21, 0x79, 0xc7, 0x94, 0xef, 0x70, 0x42, 0xbb, 0xf9, 0x95, 0x56, 0x56, 0x22, 0x2e, 0x45, 0xc3, 0x43, 0x69, 0xa3, 0x84, 0x69, 0x7b, 0x6a, 0xe7, 0x42, 0xe1, 0x8f, 0xa5, 0xca, 0x7a, 0xba, 0xd2, 0x7d, 0x9f, 0xe7, 0x10, 0x52, 0xe3, 0x31, 0x0d, 0x0f, 0x52, 0xc8, 0xd1, 0x2e, 0xa3, 0x3b, 0xf0, 0x53, 0xa3, 0x00, 0xf4, 0xaf, 0xc4, 0xf0, 0x98, 0xdf, 0x4e, 0x6d, 0x88, 0x67, 0x79, 0xd6, 0x45, 0x94, 0xd3, 0x69, 0x15, 0x8f, 0xdb, 0xc1, 0xf6, 0x94 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.8", - /* Message to be signed */ - 224, - { 0xdf, 0x40, 0x44, 0xa8, 0x9a, 0x83, 0xe9, 0xfc, 0xbf, 0x12, 0x62, 0x54, 0x0a, 0xe3, 0x03, 0x8b, 0xbc, 0x90, 0xf2, 0xb2, 0x62, 0x8b, 0xf2, 0xa4, 0x46, 0x7a, 0xc6, 0x77, 0x22, 0xd8, 0x54, 0x6b, 0x3a, 0x71, 0xcb, 0x0e, 0xa4, 0x16, 0x69, 0xd5, 0xb4, 0xd6, 0x18, 0x59, 0xc1, 0xb4, 0xe4, 0x7c, 0xec, 0xc5, 0x93, 0x3f, 0x75, 0x7e, 0xc8, 0x6d, 0xb0, 0x64, 0x4e, 0x31, 0x18, 0x12, 0xd0, 0x0f, 0xb8, 0x02, 0xf0, 0x34, 0x00, 0x63, 0x9c, 0x0e, 0x36, 0x4d, 0xae, 0x5a, 0xeb, 0xc5, 0x79, 0x1b, 0xc6, 0x55, 0x76, 0x23, 0x61, 0xbc, 0x43, 0xc5, 0x3d, 0x3c, 0x78, 0x86, 0x76, 0x8f, 0x79, 0x68, 0xc1, 0xc5, 0x44, 0xc6, 0xf7, 0x9f, 0x7b, 0xe8, 0x20, 0xc7, 0xe2, 0xbd, 0x2f, 0x9d, 0x73, 0xe6, 0x2d, 0xed, 0x6d, 0x2e, 0x93, 0x7e, 0x6a, 0x6d, 0xae, 0xf9, 0x0e, 0xe3, 0x7a, 0x1a, 0x52, 0xa5, 0x4f, 0x00, 0xe3, 0x1a, 0xdd, 0xd6, 0x48, 0x94, 0xcf, 0x4c, 0x02, 0xe1, 0x60, 0x99, 0xe2, 0x9f, 0x9e, 0xb7, 0xf1, 0xa7, 0xbb, 0x7f, 0x84, 0xc4, 0x7a, 0x2b, 0x59, 0x48, 0x13, 0xbe, 0x02, 0xa1, 0x7b, 0x7f, 0xc4, 0x3b, 0x34, 0xc2, 0x2c, 0x91, 0x92, 0x52, 0x64, 0x12, 0x6c, 0x89, 0xf8, 0x6b, 0xb4, 0xd8, 0x7f, 0x3e, 0xf1, 0x31, 0x29, 0x6c, 0x53, 0xa3, 0x08, 0xe0, 0x33, 0x1d, 0xac, 0x8b, 0xaf, 0x3b, 0x63, 0x42, 0x22, 0x66, 0xec, 0xef, 0x2b, 0x90, 0x78, 0x15, 0x35, 0xdb, 0xda, 0x41, 0xcb, 0xd0, 0xcf, 0x22, 0xa8, 0xcb, 0xfb, 0x53, 0x2e, 0xc6, 0x8f, 0xc6, 0xaf, 0xb2, 0xac, 0x06 } -, - /* Signature */ - 256, - { 0x14, 0x14, 0xb3, 0x85, 0x67, 0xae, 0x6d, 0x97, 0x3e, 0xde, 0x4a, 0x06, 0x84, 0x2d, 0xcc, 0x0e, 0x05, 0x59, 0xb1, 0x9e, 0x65, 0xa4, 0x88, 0x9b, 0xdb, 0xab, 0xd0, 0xfd, 0x02, 0x80, 0x68, 0x29, 0x13, 0xba, 0xcd, 0x5d, 0xc2, 0xf0, 0x1b, 0x30, 0xbb, 0x19, 0xeb, 0x81, 0x0b, 0x7d, 0x9d, 0xed, 0x32, 0xb2, 0x84, 0xf1, 0x47, 0xbb, 0xe7, 0x71, 0xc9, 0x30, 0xc6, 0x05, 0x2a, 0xa7, 0x34, 0x13, 0x90, 0xa8, 0x49, 0xf8, 0x1d, 0xa9, 0xcd, 0x11, 0xe5, 0xec, 0xcf, 0x24, 0x6d, 0xba, 0xe9, 0x5f, 0xa9, 0x58, 0x28, 0xe9, 0xae, 0x0c, 0xa3, 0x55, 0x03, 0x25, 0x32, 0x6d, 0xee, 0xf9, 0xf4, 0x95, 0x30, 0xba, 0x44, 0x1b, 0xed, 0x4a, 0xc2, 0x9c, 0x02, 0x9c, 0x9a, 0x27, 0x36, 0xb1, 0xa4, 0x19, 0x0b, 0x85, 0x08, 0x4a, 0xd1, 0x50, 0x42, 0x6b, 0x46, 0xd7, 0xf8, 0x5b, 0xd7, 0x02, 0xf4, 0x8d, 0xac, 0x5f, 0x71, 0x33, 0x0b, 0xc4, 0x23, 0xa7, 0x66, 0xc6, 0x5c, 0xc1, 0xdc, 0xab, 0x20, 0xd3, 0xd3, 0xbb, 0xa7, 0x2b, 0x63, 0xb3, 0xef, 0x82, 0x44, 0xd4, 0x2f, 0x15, 0x7c, 0xb7, 0xe3, 0xa8, 0xba, 0x5c, 0x05, 0x27, 0x2c, 0x64, 0xcc, 0x1a, 0xd2, 0x1a, 0x13, 0x49, 0x3c, 0x39, 0x11, 0xf6, 0x0b, 0x4e, 0x9f, 0x4e, 0xcc, 0x99, 0x00, 0xeb, 0x05, 0x6e, 0xe5, 0x9d, 0x6f, 0xe4, 0xb8, 0xff, 0x6e, 0x80, 0x48, 0xcc, 0xc0, 0xf3, 0x8f, 0x28, 0x36, 0xfd, 0x3d, 0xfe, 0x91, 0xbf, 0x4a, 0x38, 0x6e, 0x1e, 0xcc, 0x2c, 0x32, 0x83, 0x9f, 0x0c, 0xa4, 0xd1, 0xb2, 0x7a, 0x56, 0x8f, 0xa9, 0x40, 0xdd, 0x64, 0xad, 0x16, 0xbd, 0x01, 0x25, 0xd0, 0x34, 0x8e, 0x38, 0x30, 0x85, 0xf0, 0x88, 0x94, 0x86, 0x1c, 0xa1, 0x89, 0x87, 0x22, 0x7d, 0x37, 0xb4, 0x2b, 0x58, 0x4a, 0x83, 0x57, 0xcb, 0x04 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.9", - /* Message to be signed */ - 183, - { 0xea, 0x94, 0x1f, 0xf0, 0x6f, 0x86, 0xc2, 0x26, 0x92, 0x7f, 0xcf, 0x0e, 0x3b, 0x11, 0xb0, 0x87, 0x26, 0x76, 0x17, 0x0c, 0x1b, 0xfc, 0x33, 0xbd, 0xa8, 0xe2, 0x65, 0xc7, 0x77, 0x71, 0xf9, 0xd0, 0x85, 0x01, 0x64, 0xa5, 0xee, 0xcb, 0xcc, 0x5c, 0xe8, 0x27, 0xfb, 0xfa, 0x07, 0xc8, 0x52, 0x14, 0x79, 0x6d, 0x81, 0x27, 0xe8, 0xca, 0xa8, 0x18, 0x94, 0xea, 0x61, 0xce, 0xb1, 0x44, 0x9e, 0x72, 0xfe, 0xa0, 0xa4, 0xc9, 0x43, 0xb2, 0xda, 0x6d, 0x9b, 0x10, 0x5f, 0xe0, 0x53, 0xb9, 0x03, 0x9a, 0x9c, 0xc5, 0x3d, 0x42, 0x0b, 0x75, 0x39, 0xfa, 0xb2, 0x23, 0x9c, 0x6b, 0x51, 0xd1, 0x7e, 0x69, 0x4c, 0x95, 0x7d, 0x4b, 0x0f, 0x09, 0x84, 0x46, 0x18, 0x79, 0xa0, 0x75, 0x9c, 0x44, 0x01, 0xbe, 0xec, 0xd4, 0xc6, 0x06, 0xa0, 0xaf, 0xbd, 0x7a, 0x07, 0x6f, 0x50, 0xa2, 0xdf, 0xc2, 0x80, 0x7f, 0x24, 0xf1, 0x91, 0x9b, 0xaa, 0x77, 0x46, 0xd3, 0xa6, 0x4e, 0x26, 0x8e, 0xd3, 0xf5, 0xf8, 0xe6, 0xda, 0x83, 0xa2, 0xa5, 0xc9, 0x15, 0x2f, 0x83, 0x7c, 0xb0, 0x78, 0x12, 0xbd, 0x5b, 0xa7, 0xd3, 0xa0, 0x79, 0x85, 0xde, 0x88, 0x11, 0x3c, 0x17, 0x96, 0xe9, 0xb4, 0x66, 0xec, 0x29, 0x9c, 0x5a, 0xc1, 0x05, 0x9e, 0x27, 0xf0, 0x94, 0x15 } -, - /* Signature */ - 256, - { 0xce, 0xeb, 0x84, 0xcc, 0xb4, 0xe9, 0x09, 0x92, 0x65, 0x65, 0x07, 0x21, 0xee, 0xa0, 0xe8, 0xec, 0x89, 0xca, 0x25, 0xbd, 0x35, 0x4d, 0x4f, 0x64, 0x56, 0x49, 0x67, 0xbe, 0x9d, 0x4b, 0x08, 0xb3, 0xf1, 0xc0, 0x18, 0x53, 0x9c, 0x9d, 0x37, 0x1c, 0xf8, 0x96, 0x1f, 0x22, 0x91, 0xfb, 0xe0, 0xdc, 0x2f, 0x2f, 0x95, 0xfe, 0xa4, 0x7b, 0x63, 0x9f, 0x1e, 0x12, 0xf4, 0xbc, 0x38, 0x1c, 0xef, 0x0c, 0x2b, 0x7a, 0x7b, 0x95, 0xc3, 0xad, 0xf2, 0x76, 0x05, 0xb7, 0xf6, 0x39, 0x98, 0xc3, 0xcb, 0xad, 0x54, 0x28, 0x08, 0xc3, 0x82, 0x2e, 0x06, 0x4d, 0x4a, 0xd1, 0x40, 0x93, 0x67, 0x9e, 0x6e, 0x01, 0x41, 0x8a, 0x6d, 0x5c, 0x05, 0x96, 0x84, 0xcd, 0x56, 0xe3, 0x4e, 0xd6, 0x5a, 0xb6, 0x05, 0xb8, 0xde, 0x4f, 0xcf, 0xa6, 0x40, 0x47, 0x4a, 0x54, 0xa8, 0x25, 0x1b, 0xbb, 0x73, 0x26, 0xa4, 0x2d, 0x08, 0x58, 0x5c, 0xfc, 0xfc, 0x95, 0x67, 0x69, 0xb1, 0x5b, 0x6d, 0x7f, 0xdf, 0x7d, 0xa8, 0x4f, 0x81, 0x97, 0x6e, 0xaa, 0x41, 0xd6, 0x92, 0x38, 0x0f, 0xf1, 0x0e, 0xae, 0xcf, 0xe0, 0xa5, 0x79, 0x68, 0x29, 0x09, 0xb5, 0x52, 0x1f, 0xad, 0xe8, 0x54, 0xd7, 0x97, 0xb8, 0xa0, 0x34, 0x5b, 0x9a, 0x86, 0x4e, 0x05, 0x88, 0xf6, 0xca, 0xdd, 0xbf, 0x65, 0xf1, 0x77, 0x99, 0x8e, 0x18, 0x0d, 0x1f, 0x10, 0x24, 0x43, 0xe6, 0xdc, 0xa5, 0x3a, 0x94, 0x82, 0x3c, 0xaa, 0x9c, 0x3b, 0x35, 0xf3, 0x22, 0x58, 0x3c, 0x70, 0x3a, 0xf6, 0x74, 0x76, 0x15, 0x9e, 0xc7, 0xec, 0x93, 0xd1, 0x76, 0x9b, 0x30, 0x0a, 0xf0, 0xe7, 0x15, 0x7d, 0xc2, 0x98, 0xc6, 0xcd, 0x2d, 0xee, 0x22, 0x62, 0xf8, 0xcd, 0xdc, 0x10, 0xf1, 0x1e, 0x01, 0x74, 0x14, 0x71, 0xbb, 0xfd, 0x65, 0x18, 0xa1, 0x75, 0x73, 0x45, 0x75 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.10", - /* Message to be signed */ - 65, - { 0xd8, 0xb8, 0x16, 0x45, 0xc1, 0x3c, 0xd7, 0xec, 0xf5, 0xd0, 0x0e, 0xd2, 0xc9, 0x1b, 0x9a, 0xcd, 0x46, 0xc1, 0x55, 0x68, 0xe5, 0x30, 0x3c, 0x4a, 0x97, 0x75, 0xed, 0xe7, 0x6b, 0x48, 0x40, 0x3d, 0x6b, 0xe5, 0x6c, 0x05, 0xb6, 0xb1, 0xcf, 0x77, 0xc6, 0xe7, 0x5d, 0xe0, 0x96, 0xc5, 0xcb, 0x35, 0x51, 0xcb, 0x6f, 0xa9, 0x64, 0xf3, 0xc8, 0x79, 0xcf, 0x58, 0x9d, 0x28, 0xe1, 0xda, 0x2f, 0x9d, 0xec } -, - /* Signature */ - 256, - { 0x27, 0x45, 0x07, 0x4c, 0xa9, 0x71, 0x75, 0xd9, 0x92, 0xe2, 0xb4, 0x47, 0x91, 0xc3, 0x23, 0xc5, 0x71, 0x67, 0x16, 0x5c, 0xdd, 0x8d, 0xa5, 0x79, 0xcd, 0xef, 0x46, 0x86, 0xb9, 0xbb, 0x40, 0x4b, 0xd3, 0x6a, 0x56, 0x50, 0x4e, 0xb1, 0xfd, 0x77, 0x0f, 0x60, 0xbf, 0xa1, 0x88, 0xa7, 0xb2, 0x4b, 0x0c, 0x91, 0xe8, 0x81, 0xc2, 0x4e, 0x35, 0xb0, 0x4d, 0xc4, 0xdd, 0x4c, 0xe3, 0x85, 0x66, 0xbc, 0xc9, 0xce, 0x54, 0xf4, 0x9a, 0x17, 0x5f, 0xc9, 0xd0, 0xb2, 0x25, 0x22, 0xd9, 0x57, 0x90, 0x47, 0xf9, 0xed, 0x42, 0xec, 0xa8, 0x3f, 0x76, 0x4a, 0x10, 0x16, 0x39, 0x97, 0x94, 0x7e, 0x7d, 0x2b, 0x52, 0xff, 0x08, 0x98, 0x0e, 0x7e, 0x7c, 0x22, 0x57, 0x93, 0x7b, 0x23, 0xf3, 0xd2, 0x79, 0xd4, 0xcd, 0x17, 0xd6, 0xf4, 0x95, 0x54, 0x63, 0x73, 0xd9, 0x83, 0xd5, 0x36, 0xef, 0xd7, 0xd1, 0xb6, 0x71, 0x81, 0xca, 0x2c, 0xb5, 0x0a, 0xc6, 0x16, 0xc5, 0xc7, 0xab, 0xfb, 0xb9, 0x26, 0x0b, 0x91, 0xb1, 0xa3, 0x8e, 0x47, 0x24, 0x20, 0x01, 0xff, 0x45, 0x2f, 0x8d, 0xe1, 0x0c, 0xa6, 0xea, 0xea, 0xdc, 0xaf, 0x9e, 0xdc, 0x28, 0x95, 0x6f, 0x28, 0xa7, 0x11, 0x29, 0x1f, 0xc9, 0xa8, 0x08, 0x78, 0xb8, 0xba, 0x4c, 0xfe, 0x25, 0xb8, 0x28, 0x1c, 0xb8, 0x0b, 0xc9, 0xcd, 0x6d, 0x2b, 0xd1, 0x82, 0x52, 0x46, 0xee, 0xbe, 0x25, 0x2d, 0x99, 0x57, 0xef, 0x93, 0x70, 0x73, 0x52, 0x08, 0x4e, 0x6d, 0x36, 0xd4, 0x23, 0x55, 0x1b, 0xf2, 0x66, 0xa8, 0x53, 0x40, 0xfb, 0x4a, 0x6a, 0xf3, 0x70, 0x88, 0x0a, 0xab, 0x07, 0x15, 0x3d, 0x01, 0xf4, 0x8d, 0x08, 0x6d, 0xf0, 0xbf, 0xbe, 0xc0, 0x5e, 0x7b, 0x44, 0x3b, 0x97, 0xe7, 0x17, 0x18, 0x97, 0x0e, 0x2f, 0x4b, 0xf6, 0x20, 0x23, 0xe9, 0x5b, 0x67 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.11", - /* Message to be signed */ - 130, - { 0xe5, 0x73, 0x9b, 0x6c, 0x14, 0xc9, 0x2d, 0x51, 0x0d, 0x95, 0xb8, 0x26, 0x93, 0x33, 0x37, 0xff, 0x0d, 0x24, 0xef, 0x72, 0x1a, 0xc4, 0xef, 0x64, 0xc2, 0xba, 0xd2, 0x64, 0xbe, 0x8b, 0x44, 0xef, 0xa1, 0x51, 0x6e, 0x08, 0xa2, 0x7e, 0xb6, 0xb6, 0x11, 0xd3, 0x30, 0x1d, 0xf0, 0x06, 0x2d, 0xae, 0xfc, 0x73, 0xa8, 0xc0, 0xd9, 0x2e, 0x2c, 0x52, 0x1f, 0xac, 0xbc, 0x7b, 0x26, 0x47, 0x38, 0x76, 0x7e, 0xa6, 0xfc, 0x97, 0xd5, 0x88, 0xa0, 0xba, 0xf6, 0xce, 0x50, 0xad, 0xf7, 0x9e, 0x60, 0x0b, 0xd2, 0x9e, 0x34, 0x5f, 0xcb, 0x1d, 0xba, 0x71, 0xac, 0x5c, 0x02, 0x89, 0x02, 0x3f, 0xe4, 0xa8, 0x2b, 0x46, 0xa5, 0x40, 0x77, 0x19, 0x19, 0x7d, 0x2e, 0x95, 0x8e, 0x35, 0x31, 0xfd, 0x54, 0xae, 0xf9, 0x03, 0xaa, 0xbb, 0x43, 0x55, 0xf8, 0x83, 0x18, 0x99, 0x4e, 0xd3, 0xc3, 0xdd, 0x62, 0xf4, 0x20, 0xa7 } -, - /* Signature */ - 256, - { 0xbe, 0x40, 0xa5, 0xfb, 0x94, 0xf1, 0x13, 0xe1, 0xb3, 0xef, 0xf6, 0xb6, 0xa3, 0x39, 0x86, 0xf2, 0x02, 0xe3, 0x63, 0xf0, 0x74, 0x83, 0xb7, 0x92, 0xe6, 0x8d, 0xfa, 0x55, 0x54, 0xdf, 0x04, 0x66, 0xcc, 0x32, 0x15, 0x09, 0x50, 0x78, 0x3b, 0x4d, 0x96, 0x8b, 0x63, 0x9a, 0x04, 0xfd, 0x2f, 0xb9, 0x7f, 0x6e, 0xb9, 0x67, 0x02, 0x1f, 0x5a, 0xdc, 0xcb, 0x9f, 0xca, 0x95, 0xac, 0xc8, 0xf2, 0xcd, 0x88, 0x5a, 0x38, 0x0b, 0x0a, 0x4e, 0x82, 0xbc, 0x76, 0x07, 0x64, 0xdb, 0xab, 0x88, 0xc1, 0xe6, 0xc0, 0x25, 0x5c, 0xaa, 0x94, 0xf2, 0x32, 0x19, 0x9d, 0x6f, 0x59, 0x7c, 0xc9, 0x14, 0x5b, 0x00, 0xe3, 0xd4, 0xba, 0x34, 0x6b, 0x55, 0x9a, 0x88, 0x33, 0xad, 0x15, 0x16, 0xad, 0x51, 0x63, 0xf0, 0x16, 0xaf, 0x6a, 0x59, 0x83, 0x1c, 0x82, 0xea, 0x13, 0xc8, 0x22, 0x4d, 0x84, 0xd0, 0x76, 0x5a, 0x9d, 0x12, 0x38, 0x4d, 0xa4, 0x60, 0xa8, 0x53, 0x1b, 0x4c, 0x40, 0x7e, 0x04, 0xf4, 0xf3, 0x50, 0x70, 0x9e, 0xb9, 0xf0, 0x8f, 0x5b, 0x22, 0x0f, 0xfb, 0x45, 0xab, 0xf6, 0xb7, 0x5d, 0x15, 0x79, 0xfd, 0x3f, 0x1e, 0xb5, 0x5f, 0xc7, 0x5b, 0x00, 0xaf, 0x8b, 0xa3, 0xb0, 0x87, 0x82, 0x7f, 0xe9, 0xae, 0x9f, 0xb4, 0xf6, 0xc5, 0xfa, 0x63, 0x03, 0x1f, 0xe5, 0x82, 0x85, 0x2f, 0xe2, 0x83, 0x4f, 0x9c, 0x89, 0xbf, 0xf5, 0x3e, 0x25, 0x52, 0x21, 0x6b, 0xc7, 0xc1, 0xd4, 0xa3, 0xd5, 0xdc, 0x2b, 0xa6, 0x95, 0x5c, 0xd9, 0xb1, 0x7d, 0x13, 0x63, 0xe7, 0xfe, 0xe8, 0xed, 0x76, 0x29, 0x75, 0x3f, 0xf3, 0x12, 0x5e, 0xdd, 0x48, 0x52, 0x1a, 0xe3, 0xb9, 0xb0, 0x32, 0x17, 0xf4, 0x49, 0x6d, 0x0d, 0x8e, 0xde, 0x57, 0xac, 0xbc, 0x5b, 0xd4, 0xde, 0xae, 0x74, 0xa5, 0x6f, 0x86, 0x67, 0x1d, 0xe2 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.12", - /* Message to be signed */ - 256, - { 0x7a, 0xf4, 0x28, 0x35, 0x91, 0x7a, 0x88, 0xd6, 0xb3, 0xc6, 0x71, 0x6b, 0xa2, 0xf5, 0xb0, 0xd5, 0xb2, 0x0b, 0xd4, 0xe2, 0xe6, 0xe5, 0x74, 0xe0, 0x6a, 0xf1, 0xee, 0xf7, 0xc8, 0x11, 0x31, 0xbe, 0x22, 0xbf, 0x81, 0x28, 0xb9, 0xcb, 0xc6, 0xec, 0x00, 0x27, 0x5b, 0xa8, 0x02, 0x94, 0xa5, 0xd1, 0x17, 0x2d, 0x08, 0x24, 0xa7, 0x9e, 0x8f, 0xdd, 0x83, 0x01, 0x83, 0xe4, 0xc0, 0x0b, 0x96, 0x78, 0x28, 0x67, 0xb1, 0x22, 0x7f, 0xea, 0x24, 0x9a, 0xad, 0x32, 0xff, 0xc5, 0xfe, 0x00, 0x7b, 0xc5, 0x1f, 0x21, 0x79, 0x2f, 0x72, 0x8d, 0xed, 0xa8, 0xb5, 0x70, 0x8a, 0xa9, 0x9c, 0xab, 0xab, 0x20, 0xa4, 0xaa, 0x78, 0x3e, 0xd8, 0x6f, 0x0f, 0x27, 0xb5, 0xd5, 0x63, 0xf4, 0x2e, 0x07, 0x15, 0x8c, 0xea, 0x72, 0xd0, 0x97, 0xaa, 0x68, 0x87, 0xec, 0x41, 0x1d, 0xd0, 0x12, 0x91, 0x2a, 0x5e, 0x03, 0x2b, 0xbf, 0xa6, 0x78, 0x50, 0x71, 0x44, 0xbc, 0xc9, 0x5f, 0x39, 0xb5, 0x8b, 0xe7, 0xbf, 0xd1, 0x75, 0x9a, 0xdb, 0x9a, 0x91, 0xfa, 0x1d, 0x6d, 0x82, 0x26, 0xa8, 0x34, 0x3a, 0x8b, 0x84, 0x9d, 0xae, 0x76, 0xf7, 0xb9, 0x82, 0x24, 0xd5, 0x9e, 0x28, 0xf7, 0x81, 0xf1, 0x3e, 0xce, 0x60, 0x5f, 0x84, 0xf6, 0xc9, 0x0b, 0xae, 0x5f, 0x8c, 0xf3, 0x78, 0x81, 0x6f, 0x40, 0x20, 0xa7, 0xdd, 0xa1, 0xbe, 0xd9, 0x0c, 0x92, 0xa2, 0x36, 0x34, 0xd2, 0x03, 0xfa, 0xc3, 0xfc, 0xd8, 0x6d, 0x68, 0xd3, 0x18, 0x2a, 0x7d, 0x9c, 0xca, 0xbe, 0x7b, 0x07, 0x95, 0xf5, 0xc6, 0x55, 0xe9, 0xac, 0xc4, 0xe3, 0xec, 0x18, 0x51, 0x40, 0xd1, 0x0c, 0xef, 0x05, 0x34, 0x64, 0xab, 0x17, 0x5c, 0x83, 0xbd, 0x83, 0x93, 0x5e, 0x3d, 0xab, 0xaf, 0x34, 0x62, 0xee, 0xbe, 0x63, 0xd1, 0x5f, 0x57, 0x3d, 0x26, 0x9a } -, - /* Signature */ - 256, - { 0x4e, 0x78, 0xc5, 0x90, 0x2b, 0x80, 0x79, 0x14, 0xd1, 0x2f, 0xa5, 0x37, 0xae, 0x68, 0x71, 0xc8, 0x6d, 0xb8, 0x02, 0x1e, 0x55, 0xd1, 0xad, 0xb8, 0xeb, 0x0c, 0xcf, 0x1b, 0x8f, 0x36, 0xab, 0x7d, 0xad, 0x1f, 0x68, 0x2e, 0x94, 0x7a, 0x62, 0x70, 0x72, 0xf0, 0x3e, 0x62, 0x73, 0x71, 0x78, 0x1d, 0x33, 0x22, 0x1d, 0x17, 0x4a, 0xbe, 0x46, 0x0d, 0xbd, 0x88, 0x56, 0x0c, 0x22, 0xf6, 0x90, 0x11, 0x6e, 0x2f, 0xbb, 0xe6, 0xe9, 0x64, 0x36, 0x3a, 0x3e, 0x52, 0x83, 0xbb, 0x5d, 0x94, 0x6e, 0xf1, 0xc0, 0x04, 0x7e, 0xba, 0x03, 0x8c, 0x75, 0x6c, 0x40, 0xbe, 0x79, 0x23, 0x05, 0x58, 0x09, 0xb0, 0xe9, 0xf3, 0x4a, 0x03, 0xa5, 0x88, 0x15, 0xeb, 0xdd, 0xe7, 0x67, 0x93, 0x1f, 0x01, 0x8f, 0x6f, 0x18, 0x78, 0xf2, 0xef, 0x4f, 0x47, 0xdd, 0x37, 0x40, 0x51, 0xdd, 0x48, 0x68, 0x5d, 0xed, 0x6e, 0xfb, 0x3e, 0xa8, 0x02, 0x1f, 0x44, 0xbe, 0x1d, 0x7d, 0x14, 0x93, 0x98, 0xf9, 0x8e, 0xa9, 0xc0, 0x8d, 0x62, 0x88, 0x8e, 0xbb, 0x56, 0x19, 0x2d, 0x17, 0x74, 0x7b, 0x6b, 0x8e, 0x17, 0x09, 0x54, 0x31, 0xf1, 0x25, 0xa8, 0xa8, 0xe9, 0x96, 0x2a, 0xa3, 0x1c, 0x28, 0x52, 0x64, 0xe0, 0x8f, 0xb2, 0x1a, 0xac, 0x33, 0x6c, 0xe6, 0xc3, 0x8a, 0xa3, 0x75, 0xe4, 0x2b, 0xc9, 0x2a, 0xb0, 0xab, 0x91, 0x03, 0x84, 0x31, 0xe1, 0xf9, 0x2c, 0x39, 0xd2, 0xaf, 0x5d, 0xed, 0x7e, 0x43, 0xbc, 0x15, 0x1e, 0x6e, 0xbe, 0xa4, 0xc3, 0xe2, 0x58, 0x3a, 0xf3, 0x43, 0x7e, 0x82, 0xc4, 0x3c, 0x5e, 0x3b, 0x5b, 0x07, 0xcf, 0x03, 0x59, 0x68, 0x3d, 0x22, 0x98, 0xe3, 0x59, 0x48, 0xed, 0x80, 0x6c, 0x06, 0x3c, 0x60, 0x6e, 0xa1, 0x78, 0x15, 0x0b, 0x1e, 0xfc, 0x15, 0x85, 0x69, 0x34, 0xc7, 0x25, 0x5c, 0xfe } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.13", - /* Message to be signed */ - 59, - { 0xeb, 0xae, 0xf3, 0xf9, 0xf2, 0x3b, 0xdf, 0xe5, 0xfa, 0x6b, 0x8a, 0xf4, 0xc2, 0x08, 0xc1, 0x89, 0xf2, 0x25, 0x1b, 0xf3, 0x2f, 0x5f, 0x13, 0x7b, 0x9d, 0xe4, 0x40, 0x63, 0x78, 0x68, 0x6b, 0x3f, 0x07, 0x21, 0xf6, 0x2d, 0x24, 0xcb, 0x86, 0x88, 0xd6, 0xfc, 0x41, 0xa2, 0x7c, 0xba, 0xe2, 0x1d, 0x30, 0xe4, 0x29, 0xfe, 0xac, 0xc7, 0x11, 0x19, 0x41, 0xc2, 0x77 } -, - /* Signature */ - 256, - { 0xc4, 0x8d, 0xbe, 0xf5, 0x07, 0x11, 0x4f, 0x03, 0xc9, 0x5f, 0xaf, 0xbe, 0xb4, 0xdf, 0x1b, 0xfa, 0x88, 0xe0, 0x18, 0x4a, 0x33, 0xcc, 0x4f, 0x8a, 0x9a, 0x10, 0x35, 0xff, 0x7f, 0x82, 0x2a, 0x5e, 0x38, 0xcd, 0xa1, 0x87, 0x23, 0x91, 0x5f, 0xf0, 0x78, 0x24, 0x44, 0x29, 0xe0, 0xf6, 0x08, 0x1c, 0x14, 0xfd, 0x83, 0x33, 0x1f, 0xa6, 0x5c, 0x6b, 0xa7, 0xbb, 0x9a, 0x12, 0xdb, 0xf6, 0x62, 0x23, 0x74, 0xcd, 0x0c, 0xa5, 0x7d, 0xe3, 0x77, 0x4e, 0x2b, 0xd7, 0xae, 0x82, 0x36, 0x77, 0xd0, 0x61, 0xd5, 0x3a, 0xe9, 0xc4, 0x04, 0x0d, 0x2d, 0xa7, 0xef, 0x70, 0x14, 0xf3, 0xbb, 0xdc, 0x95, 0xa3, 0x61, 0xa4, 0x38, 0x55, 0xc8, 0xce, 0x9b, 0x97, 0xec, 0xab, 0xce, 0x17, 0x4d, 0x92, 0x62, 0x85, 0x14, 0x2b, 0x53, 0x4a, 0x30, 0x87, 0xf9, 0xf4, 0xef, 0x74, 0x51, 0x1e, 0xc7, 0x42, 0xb0, 0xd5, 0x68, 0x56, 0x03, 0xfa, 0xf4, 0x03, 0xb5, 0x07, 0x2b, 0x98, 0x5d, 0xf4, 0x6a, 0xdf, 0x2d, 0x25, 0x29, 0xa0, 0x2d, 0x40, 0x71, 0x1e, 0x21, 0x90, 0x91, 0x70, 0x52, 0x37, 0x1b, 0x79, 0xb7, 0x49, 0xb8, 0x3a, 0xbf, 0x0a, 0xe2, 0x94, 0x86, 0xc3, 0xf2, 0xf6, 0x24, 0x77, 0xb2, 0xbd, 0x36, 0x2b, 0x03, 0x9c, 0x01, 0x3c, 0x0c, 0x50, 0x76, 0xef, 0x52, 0x0d, 0xbb, 0x40, 0x5f, 0x42, 0xce, 0xe9, 0x54, 0x25, 0xc3, 0x73, 0xa9, 0x75, 0xe1, 0xcd, 0xd0, 0x32, 0xc4, 0x96, 0x22, 0xc8, 0x50, 0x79, 0xb0, 0x9e, 0x88, 0xda, 0xb2, 0xb1, 0x39, 0x69, 0xef, 0x7a, 0x72, 0x39, 0x73, 0x78, 0x10, 0x40, 0x45, 0x9f, 0x57, 0xd5, 0x01, 0x36, 0x38, 0x48, 0x3d, 0xe2, 0xd9, 0x1c, 0xb3, 0xc4, 0x90, 0xda, 0x81, 0xc4, 0x6d, 0xe6, 0xcd, 0x76, 0xea, 0x8a, 0x0c, 0x8f, 0x6f, 0xe3, 0x31, 0x71, 0x2d, 0x24 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.14", - /* Message to be signed */ - 169, - { 0xc5, 0xa2, 0x71, 0x12, 0x78, 0x76, 0x1d, 0xfc, 0xdd, 0x4f, 0x0c, 0x99, 0xe6, 0xf5, 0x61, 0x9d, 0x6c, 0x48, 0xb5, 0xd4, 0xc1, 0xa8, 0x09, 0x82, 0xfa, 0xa6, 0xb4, 0xcf, 0x1c, 0xf7, 0xa6, 0x0f, 0xf3, 0x27, 0xab, 0xef, 0x93, 0xc8, 0x01, 0x42, 0x9e, 0xfd, 0xe0, 0x86, 0x40, 0x85, 0x81, 0x46, 0x10, 0x56, 0xac, 0xc3, 0x3f, 0x3d, 0x04, 0xf5, 0xad, 0xa2, 0x12, 0x16, 0xca, 0xcd, 0x5f, 0xd1, 0xf9, 0xed, 0x83, 0x20, 0x3e, 0x0e, 0x2f, 0xe6, 0x13, 0x8e, 0x3e, 0xae, 0x84, 0x24, 0xe5, 0x91, 0x5a, 0x08, 0x3f, 0x3f, 0x7a, 0xb7, 0x60, 0x52, 0xc8, 0xbe, 0x55, 0xae, 0x88, 0x2d, 0x6e, 0xc1, 0x48, 0x2b, 0x1e, 0x45, 0xc5, 0xda, 0xe9, 0xf4, 0x10, 0x15, 0x40, 0x53, 0x27, 0x02, 0x2e, 0xc3, 0x2f, 0x0e, 0xa2, 0x42, 0x97, 0x63, 0xb2, 0x55, 0x04, 0x3b, 0x19, 0x58, 0xee, 0x3c, 0xf6, 0xd6, 0x39, 0x83, 0x59, 0x6e, 0xb3, 0x85, 0x84, 0x4f, 0x85, 0x28, 0xcc, 0x9a, 0x98, 0x65, 0x83, 0x5d, 0xc5, 0x11, 0x3c, 0x02, 0xb8, 0x0d, 0x0f, 0xca, 0x68, 0xaa, 0x25, 0xe7, 0x2b, 0xca, 0xae, 0xb3, 0xcf, 0x9d, 0x79, 0xd8, 0x4f, 0x98, 0x4f, 0xd4, 0x17 } -, - /* Signature */ - 256, - { 0x6b, 0xd5, 0x25, 0x7a, 0xa0, 0x66, 0x11, 0xfb, 0x46, 0x60, 0x08, 0x7c, 0xb4, 0xbc, 0x4a, 0x9e, 0x44, 0x91, 0x59, 0xd3, 0x16, 0x52, 0xbd, 0x98, 0x08, 0x44, 0xda, 0xf3, 0xb1, 0xc7, 0xb3, 0x53, 0xf8, 0xe5, 0x61, 0x42, 0xf7, 0xea, 0x98, 0x57, 0x43, 0x3b, 0x18, 0x57, 0x3b, 0x4d, 0xee, 0xde, 0x81, 0x8a, 0x93, 0xb0, 0x29, 0x02, 0x97, 0x78, 0x3f, 0x1a, 0x2f, 0x23, 0xcb, 0xc7, 0x27, 0x97, 0xa6, 0x72, 0x53, 0x7f, 0x01, 0xf6, 0x24, 0x84, 0xcd, 0x41, 0x62, 0xc3, 0x21, 0x4b, 0x9a, 0xc6, 0x28, 0x22, 0x4c, 0x5d, 0xe0, 0x1f, 0x32, 0xbb, 0x9b, 0x76, 0xb2, 0x73, 0x54, 0xf2, 0xb1, 0x51, 0xd0, 0xe8, 0xc4, 0x21, 0x3e, 0x46, 0x15, 0xad, 0x0b, 0xc7, 0x1f, 0x51, 0x5e, 0x30, 0x0d, 0x6a, 0x64, 0xc6, 0x74, 0x34, 0x11, 0xff, 0xfd, 0xe8, 0xe5, 0xff, 0x19, 0x0e, 0x54, 0x92, 0x30, 0x43, 0x12, 0x6e, 0xcf, 0xc4, 0xc4, 0x53, 0x90, 0x22, 0x66, 0x8f, 0xb6, 0x75, 0xf2, 0x5c, 0x07, 0xe2, 0x00, 0x99, 0xee, 0x31, 0x5b, 0x98, 0xd6, 0xaf, 0xec, 0x4b, 0x1a, 0x9a, 0x93, 0xdc, 0x33, 0x49, 0x6a, 0x15, 0xbd, 0x6f, 0xde, 0x16, 0x63, 0xa7, 0xd4, 0x9b, 0x9f, 0x1e, 0x63, 0x9d, 0x38, 0x66, 0x4b, 0x37, 0xa0, 0x10, 0xb1, 0xf3, 0x5e, 0x65, 0x86, 0x82, 0xd9, 0xcd, 0x63, 0xe5, 0x7d, 0xe0, 0xf1, 0x5e, 0x8b, 0xdd, 0x09, 0x65, 0x58, 0xf0, 0x7e, 0xc0, 0xca, 0xa2, 0x18, 0xa8, 0xc0, 0x6f, 0x47, 0x88, 0x45, 0x39, 0x40, 0x28, 0x7c, 0x9d, 0x34, 0xb6, 0xd4, 0x0a, 0x3f, 0x09, 0xbf, 0x77, 0x99, 0xfe, 0x98, 0xae, 0x4e, 0xb4, 0x9f, 0x3f, 0xf4, 0x1c, 0x50, 0x40, 0xa5, 0x0c, 0xef, 0xc9, 0xbd, 0xf2, 0x39, 0x4b, 0x74, 0x9c, 0xf1, 0x64, 0x48, 0x0d, 0xf1, 0xab, 0x68, 0x80, 0x27, 0x3b } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.15", - /* Message to be signed */ - 215, - { 0x9b, 0xf8, 0xaa, 0x25, 0x3b, 0x87, 0x2e, 0xa7, 0x7a, 0x7e, 0x23, 0x47, 0x6b, 0xe2, 0x6b, 0x23, 0x29, 0x57, 0x8c, 0xf6, 0xac, 0x9e, 0xa2, 0x80, 0x5b, 0x35, 0x7f, 0x6f, 0xc3, 0xad, 0x13, 0x0d, 0xba, 0xeb, 0x3d, 0x86, 0x9a, 0x13, 0xcc, 0xe7, 0xa8, 0x08, 0xbb, 0xbb, 0xc9, 0x69, 0x85, 0x7e, 0x03, 0x94, 0x5c, 0x7b, 0xb6, 0x1d, 0xf1, 0xb5, 0xc2, 0x58, 0x9b, 0x8e, 0x04, 0x6c, 0x2a, 0x5d, 0x7e, 0x40, 0x57, 0xb1, 0xa7, 0x4f, 0x24, 0xc7, 0x11, 0x21, 0x63, 0x64, 0x28, 0x85, 0x29, 0xec, 0x95, 0x70, 0xf2, 0x51, 0x97, 0x21, 0x3b, 0xe1, 0xf5, 0xc2, 0xe5, 0x96, 0xf8, 0xbf, 0x8b, 0x2c, 0xf3, 0xcb, 0x38, 0xaa, 0x56, 0xff, 0xe5, 0xe3, 0x1d, 0xf7, 0x39, 0x58, 0x20, 0xe9, 0x4e, 0xcf, 0x3b, 0x11, 0x89, 0xa9, 0x65, 0xdc, 0xf9, 0xa9, 0xcb, 0x42, 0x98, 0xd3, 0xc8, 0x8b, 0x29, 0x23, 0xc1, 0x9f, 0xc6, 0xbc, 0x34, 0xaa, 0xce, 0xca, 0xd4, 0xe0, 0x93, 0x1a, 0x7c, 0x4e, 0x5d, 0x73, 0xdc, 0x86, 0xdf, 0xa7, 0x98, 0xa8, 0x47, 0x6d, 0x82, 0x46, 0x3e, 0xef, 0xaa, 0x90, 0xa8, 0xa9, 0x19, 0x2a, 0xb0, 0x8b, 0x23, 0x08, 0x8d, 0xd5, 0x8e, 0x12, 0x80, 0xf7, 0xd7, 0x2e, 0x45, 0x48, 0x39, 0x6b, 0xaa, 0xc1, 0x12, 0x25, 0x2d, 0xd5, 0xc5, 0x34, 0x6a, 0xdb, 0x20, 0x04, 0xa2, 0xf7, 0x10, 0x1c, 0xcc, 0x89, 0x9c, 0xc7, 0xfa, 0xfa, 0xe8, 0xbb, 0xe2, 0x95, 0x73, 0x88, 0x96, 0xa5, 0xb2, 0x01, 0x22, 0x85, 0x01, 0x4e, 0xf6 } -, - /* Signature */ - 256, - { 0x27, 0xf7, 0xf4, 0xda, 0x9b, 0xd6, 0x10, 0x10, 0x6e, 0xf5, 0x7d, 0x32, 0x38, 0x3a, 0x44, 0x8a, 0x8a, 0x62, 0x45, 0xc8, 0x3d, 0xc1, 0x30, 0x9c, 0x6d, 0x77, 0x0d, 0x35, 0x7b, 0xa8, 0x9e, 0x73, 0xf2, 0xad, 0x08, 0x32, 0x06, 0x2e, 0xb0, 0xfe, 0x0a, 0xc9, 0x15, 0x57, 0x5b, 0xcd, 0x6b, 0x8b, 0xca, 0xdb, 0x4e, 0x2b, 0xa6, 0xfa, 0x9d, 0xa7, 0x3a, 0x59, 0x17, 0x51, 0x52, 0xb2, 0xd4, 0xfe, 0x72, 0xb0, 0x70, 0xc9, 0xb7, 0x37, 0x9e, 0x50, 0x00, 0x0e, 0x55, 0xe6, 0xc2, 0x69, 0xf6, 0x65, 0x8c, 0x93, 0x79, 0x72, 0x79, 0x7d, 0x3a, 0xdd, 0x69, 0xf1, 0x30, 0xe3, 0x4b, 0x85, 0xbd, 0xec, 0x9f, 0x3a, 0x9b, 0x39, 0x22, 0x02, 0xd6, 0xf3, 0xe4, 0x30, 0xd0, 0x9c, 0xac, 0xa8, 0x22, 0x77, 0x59, 0xab, 0x82, 0x5f, 0x70, 0x12, 0xd2, 0xff, 0x4b, 0x5b, 0x62, 0xc8, 0x50, 0x4d, 0xba, 0xd8, 0x55, 0xc0, 0x5e, 0xdd, 0x5c, 0xab, 0x5a, 0x4c, 0xcc, 0xdc, 0x67, 0xf0, 0x1d, 0xd6, 0x51, 0x7c, 0x7d, 0x41, 0xc4, 0x3e, 0x2a, 0x49, 0x57, 0xaf, 0xf1, 0x9d, 0xb6, 0xf1, 0x8b, 0x17, 0x85, 0x9a, 0xf0, 0xbc, 0x84, 0xab, 0x67, 0x14, 0x6e, 0xc1, 0xa4, 0xa6, 0x0a, 0x17, 0xd7, 0xe0, 0x5f, 0x8b, 0x4f, 0x9c, 0xed, 0x6a, 0xd1, 0x09, 0x08, 0xd8, 0xd7, 0x8f, 0x7f, 0xc8, 0x8b, 0x76, 0xad, 0xc8, 0x29, 0x0f, 0x87, 0xda, 0xf2, 0xa7, 0xbe, 0x10, 0xae, 0x40, 0x85, 0x21, 0x39, 0x5d, 0x54, 0xed, 0x25, 0x56, 0xfb, 0x76, 0x61, 0x85, 0x4a, 0x73, 0x0c, 0xe3, 0xd8, 0x2c, 0x71, 0xa8, 0xd4, 0x93, 0xec, 0x49, 0xa3, 0x78, 0xac, 0x8a, 0x3c, 0x74, 0x43, 0x9f, 0x7c, 0xc5, 0x55, 0xba, 0x13, 0xf8, 0x59, 0x07, 0x08, 0x90, 0xee, 0x18, 0xff, 0x65, 0x8f, 0xa4, 0xd7, 0x41, 0x96, 0x9d, 0x70, 0xa5 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.16", - /* Message to be signed */ - 247, - { 0x32, 0x47, 0x48, 0x30, 0xe2, 0x20, 0x37, 0x54, 0xc8, 0xbf, 0x06, 0x81, 0xdc, 0x4f, 0x84, 0x2a, 0xfe, 0x36, 0x09, 0x30, 0x37, 0x86, 0x16, 0xc1, 0x08, 0xe8, 0x33, 0x65, 0x6e, 0x56, 0x40, 0xc8, 0x68, 0x56, 0x88, 0x5b, 0xb0, 0x5d, 0x1e, 0xb9, 0x43, 0x8e, 0xfe, 0xde, 0x67, 0x92, 0x63, 0xde, 0x07, 0xcb, 0x39, 0x55, 0x3f, 0x6a, 0x25, 0xe0, 0x06, 0xb0, 0xa5, 0x23, 0x11, 0xa0, 0x63, 0xca, 0x08, 0x82, 0x66, 0xd2, 0x56, 0x4f, 0xf6, 0x49, 0x0c, 0x46, 0xb5, 0x60, 0x98, 0x18, 0x54, 0x8f, 0x88, 0x76, 0x4d, 0xad, 0x34, 0xa2, 0x5e, 0x3a, 0x85, 0xd5, 0x75, 0x02, 0x3f, 0x0b, 0x9e, 0x66, 0x50, 0x48, 0xa0, 0x3c, 0x35, 0x05, 0x79, 0xa9, 0xd3, 0x24, 0x46, 0xc7, 0xbb, 0x96, 0xcc, 0x92, 0xe0, 0x65, 0xab, 0x94, 0xd3, 0xc8, 0x95, 0x2e, 0x8d, 0xf6, 0x8e, 0xf0, 0xd9, 0xfa, 0x45, 0x6b, 0x3a, 0x06, 0xbb, 0x80, 0xe3, 0xbb, 0xc4, 0xb2, 0x8e, 0x6a, 0x94, 0xb6, 0xd0, 0xff, 0x76, 0x96, 0xa6, 0x4e, 0xfe, 0x05, 0xe7, 0x35, 0xfe, 0xa0, 0x25, 0xd7, 0xbd, 0xbc, 0x41, 0x39, 0xf3, 0xa3, 0xb5, 0x46, 0x07, 0x5c, 0xba, 0x7e, 0xfa, 0x94, 0x73, 0x74, 0xd3, 0xf0, 0xac, 0x80, 0xa6, 0x8d, 0x76, 0x5f, 0x5d, 0xf6, 0x21, 0x0b, 0xca, 0x06, 0x9a, 0x2d, 0x88, 0x64, 0x7a, 0xf7, 0xea, 0x04, 0x2d, 0xac, 0x69, 0x0c, 0xb5, 0x73, 0x78, 0xec, 0x07, 0x77, 0x61, 0x4f, 0xb8, 0xb6, 0x5f, 0xf4, 0x53, 0xca, 0x6b, 0x7d, 0xce, 0x60, 0x98, 0x45, 0x1a, 0x2f, 0x8c, 0x0d, 0xa9, 0xbf, 0xec, 0xf1, 0xfd, 0xf3, 0x91, 0xbb, 0xaa, 0x4e, 0x2a, 0x91, 0xca, 0x18, 0xa1, 0x12, 0x1a, 0x75, 0x23, 0xa2, 0xab, 0xd4, 0x25, 0x14, 0xf4, 0x89, 0xe8 } -, - /* Signature */ - 256, - { 0x69, 0x17, 0x43, 0x72, 0x57, 0xc2, 0x2c, 0xcb, 0x54, 0x03, 0x29, 0x0c, 0x3d, 0xee, 0x82, 0xd9, 0xcf, 0x75, 0x50, 0xb3, 0x1b, 0xd3, 0x1c, 0x51, 0xbd, 0x57, 0xbf, 0xd3, 0x5d, 0x45, 0x2a, 0xb4, 0xdb, 0x7c, 0x4b, 0xe6, 0xb2, 0xe2, 0x5a, 0xc9, 0xa5, 0x9a, 0x1d, 0x2a, 0x7f, 0xeb, 0x62, 0x7f, 0x0a, 0xfd, 0x49, 0x76, 0xb3, 0x00, 0x3c, 0xc9, 0xcf, 0xfd, 0x88, 0x96, 0x50, 0x5e, 0xc3, 0x82, 0xf2, 0x65, 0x10, 0x4d, 0x4c, 0xf8, 0xc9, 0x32, 0xfa, 0x9f, 0xe8, 0x6e, 0x00, 0x87, 0x07, 0x95, 0x99, 0x12, 0x38, 0x9d, 0xa4, 0xb2, 0xd6, 0xb3, 0x69, 0xb3, 0x6a, 0x5e, 0x72, 0xe2, 0x9d, 0x24, 0xc9, 0xa9, 0x8c, 0x9d, 0x31, 0xa3, 0xab, 0x44, 0xe6, 0x43, 0xe6, 0x94, 0x12, 0x66, 0xa4, 0x7a, 0x45, 0xe3, 0x44, 0x6c, 0xe8, 0x77, 0x6a, 0xbe, 0x24, 0x1a, 0x8f, 0x5f, 0xc6, 0x42, 0x3b, 0x24, 0xb1, 0xff, 0x25, 0x0d, 0xc2, 0xc3, 0xa8, 0x17, 0x23, 0x53, 0x56, 0x10, 0x77, 0xe8, 0x50, 0xa7, 0x69, 0xb2, 0x5f, 0x03, 0x25, 0xda, 0xc8, 0x89, 0x65, 0xa3, 0xb9, 0xb4, 0x72, 0xc4, 0x94, 0xe9, 0x5f, 0x71, 0x9b, 0x4e, 0xac, 0x33, 0x2c, 0xaa, 0x7a, 0x65, 0xc7, 0xdf, 0xe4, 0x6d, 0x9a, 0xa7, 0xe6, 0xe0, 0x0f, 0x52, 0x5f, 0x30, 0x3d, 0xd6, 0x3a, 0xb7, 0x91, 0x92, 0x18, 0x90, 0x18, 0x68, 0xf9, 0x33, 0x7f, 0x8c, 0xd2, 0x6a, 0xaf, 0xe6, 0xf3, 0x3b, 0x7f, 0xb2, 0xc9, 0x88, 0x10, 0xaf, 0x19, 0xf7, 0xfc, 0xb2, 0x82, 0xba, 0x15, 0x77, 0x91, 0x2c, 0x1d, 0x36, 0x89, 0x75, 0xfd, 0x5d, 0x44, 0x0b, 0x86, 0xe1, 0x0c, 0x19, 0x97, 0x15, 0xfa, 0x0b, 0x6f, 0x42, 0x50, 0xb5, 0x33, 0x73, 0x2d, 0x0b, 0xef, 0xe1, 0x54, 0x51, 0x50, 0xfc, 0x47, 0xb8, 0x76, 0xde, 0x09, 0xb0, 0x0a, 0x94 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.17", - /* Message to be signed */ - 61, - { 0x00, 0x8e, 0x59, 0x50, 0x5e, 0xaf, 0xb5, 0x50, 0xaa, 0xe5, 0xe8, 0x45, 0x58, 0x4c, 0xeb, 0xb0, 0x0b, 0x6d, 0xe1, 0x73, 0x3e, 0x9f, 0x95, 0xd4, 0x2c, 0x88, 0x2a, 0x5b, 0xbe, 0xb5, 0xce, 0x1c, 0x57, 0xe1, 0x19, 0xe7, 0xc0, 0xd4, 0xda, 0xca, 0x9f, 0x1f, 0xf7, 0x87, 0x02, 0x17, 0xf7, 0xcf, 0xd8, 0xa6, 0xb3, 0x73, 0x97, 0x7c, 0xac, 0x9c, 0xab, 0x8e, 0x71, 0xe4, 0x20 } -, - /* Signature */ - 256, - { 0x92, 0x25, 0x03, 0xb6, 0x73, 0xee, 0x5f, 0x3e, 0x69, 0x1e, 0x1c, 0xa8, 0x5e, 0x9f, 0xf4, 0x17, 0x3c, 0xf7, 0x2b, 0x05, 0xac, 0x2c, 0x13, 0x1d, 0xa5, 0x60, 0x35, 0x93, 0xe3, 0xbc, 0x25, 0x9c, 0x94, 0xc1, 0xf7, 0xd3, 0xa0, 0x6a, 0x5b, 0x98, 0x91, 0xbf, 0x11, 0x3f, 0xa3, 0x9e, 0x59, 0xff, 0x7c, 0x1e, 0xd6, 0x46, 0x5e, 0x90, 0x80, 0x49, 0xcb, 0x89, 0xe4, 0xe1, 0x25, 0xcd, 0x37, 0xd2, 0xff, 0xd9, 0x22, 0x7a, 0x41, 0xb4, 0xa0, 0xa1, 0x9c, 0x0a, 0x44, 0xfb, 0xbf, 0x3d, 0xe5, 0x5b, 0xab, 0x80, 0x20, 0x87, 0xa3, 0xbb, 0x8d, 0x4f, 0xf6, 0x68, 0xee, 0x6b, 0xbb, 0x8a, 0xd8, 0x9e, 0x68, 0x57, 0xa7, 0x9a, 0x9c, 0x72, 0x78, 0x19, 0x90, 0xdf, 0xcf, 0x92, 0xcd, 0x51, 0x94, 0x04, 0xc9, 0x50, 0xf1, 0x3d, 0x11, 0x43, 0xc3, 0x18, 0x4f, 0x1d, 0x25, 0x0c, 0x90, 0xe1, 0x7a, 0xc6, 0xce, 0x36, 0x16, 0x3b, 0x98, 0x95, 0x62, 0x7a, 0xd6, 0xff, 0xec, 0x14, 0x22, 0x44, 0x1f, 0x55, 0xe4, 0x49, 0x9d, 0xba, 0x9b, 0xe8, 0x95, 0x46, 0xae, 0x8b, 0xc6, 0x3c, 0xca, 0x01, 0xdd, 0x08, 0x46, 0x3a, 0xe7, 0xf1, 0xfc, 0xe3, 0xd8, 0x93, 0x99, 0x69, 0x38, 0x77, 0x8c, 0x18, 0x12, 0xe6, 0x74, 0xad, 0x9c, 0x30, 0x9c, 0x5a, 0xcc, 0xa3, 0xfd, 0xe4, 0x4e, 0x7d, 0xd8, 0x69, 0x59, 0x93, 0xe9, 0xc1, 0xfa, 0x87, 0xac, 0xda, 0x99, 0xec, 0xe5, 0xc8, 0x49, 0x9e, 0x46, 0x89, 0x57, 0xad, 0x66, 0x35, 0x9b, 0xf1, 0x2a, 0x51, 0xad, 0xbe, 0x78, 0xd3, 0xa2, 0x13, 0xb4, 0x49, 0xbf, 0x0b, 0x5f, 0x8d, 0x4d, 0x49, 0x6a, 0xcf, 0x03, 0xd3, 0x03, 0x3b, 0x7c, 0xcd, 0x19, 0x6b, 0xc2, 0x2f, 0x68, 0xfb, 0x7b, 0xef, 0x4f, 0x69, 0x7c, 0x5e, 0xa2, 0xb3, 0x50, 0x62, 0xf4, 0x8a, 0x36, 0xdd } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.18", - /* Message to be signed */ - 69, - { 0x6a, 0xbc, 0x54, 0xcf, 0x8d, 0x1d, 0xff, 0x1f, 0x53, 0xb1, 0x7d, 0x81, 0x60, 0x36, 0x88, 0x78, 0xa8, 0x78, 0x8c, 0xc6, 0xd2, 0x2f, 0xa5, 0xc2, 0x25, 0x8c, 0x88, 0xe6, 0x60, 0xb0, 0x9a, 0x89, 0x33, 0xf9, 0xf2, 0xc0, 0x50, 0x4d, 0xda, 0xdc, 0x21, 0xf6, 0xe7, 0x5e, 0x0b, 0x83, 0x3b, 0xeb, 0x55, 0x52, 0x29, 0xde, 0xe6, 0x56, 0xb9, 0x04, 0x7b, 0x92, 0xf6, 0x2e, 0x76, 0xb8, 0xff, 0xcc, 0x60, 0xda, 0xb0, 0x6b, 0x80 } -, - /* Signature */ - 256, - { 0x0b, 0x6d, 0xaf, 0x42, 0xf7, 0xa8, 0x62, 0x14, 0x7e, 0x41, 0x74, 0x93, 0xc2, 0xc4, 0x01, 0xef, 0xae, 0x32, 0x63, 0x6a, 0xb4, 0xcb, 0xd4, 0x41, 0x92, 0xbb, 0xf5, 0xf1, 0x95, 0xb5, 0x0a, 0xe0, 0x96, 0xa4, 0x75, 0xa1, 0x61, 0x4f, 0x0a, 0x9f, 0xa8, 0xf7, 0xa0, 0x26, 0xcb, 0x46, 0xc6, 0x50, 0x6e, 0x51, 0x8e, 0x33, 0xd8, 0x3e, 0x56, 0x47, 0x7a, 0x87, 0x5a, 0xca, 0x8c, 0x7e, 0x71, 0x4c, 0xe1, 0xbd, 0xbd, 0x61, 0xef, 0x5d, 0x53, 0x52, 0x39, 0xb3, 0x3f, 0x2b, 0xfd, 0xd6, 0x17, 0x71, 0xba, 0xb6, 0x27, 0x76, 0xd7, 0x81, 0x71, 0xa1, 0x42, 0x3c, 0xea, 0x87, 0x31, 0xf8, 0x2e, 0x60, 0x76, 0x6d, 0x64, 0x54, 0x26, 0x56, 0x20, 0xb1, 0x5f, 0x5c, 0x5a, 0x58, 0x4f, 0x55, 0xf9, 0x5b, 0x80, 0x2f, 0xe7, 0x8c, 0x57, 0x4e, 0xd5, 0xda, 0xcf, 0xc8, 0x31, 0xf3, 0xcf, 0x2b, 0x05, 0x02, 0xc0, 0xb2, 0x98, 0xf2, 0x5c, 0xcf, 0x11, 0xf9, 0x73, 0xb3, 0x1f, 0x85, 0xe4, 0x74, 0x42, 0x19, 0x85, 0xf3, 0xcf, 0xf7, 0x02, 0xdf, 0x39, 0x46, 0xef, 0x0a, 0x66, 0x05, 0x68, 0x21, 0x11, 0xb2, 0xf5, 0x5b, 0x1f, 0x8a, 0xb0, 0xd2, 0xea, 0x3a, 0x68, 0x3c, 0x69, 0x98, 0x5e, 0xad, 0x93, 0xed, 0x44, 0x9e, 0xa4, 0x8f, 0x03, 0x58, 0xdd, 0xf7, 0x08, 0x02, 0xcb, 0x41, 0xde, 0x2f, 0xd8, 0x3f, 0x3c, 0x80, 0x80, 0x82, 0xd8, 0x49, 0x36, 0x94, 0x8e, 0x0c, 0x84, 0xa1, 0x31, 0xb4, 0x92, 0x78, 0x27, 0x46, 0x05, 0x27, 0xbb, 0x5c, 0xd2, 0x4b, 0xfa, 0xb7, 0xb4, 0x8e, 0x07, 0x1b, 0x24, 0x17, 0x19, 0x30, 0xf9, 0x97, 0x63, 0x27, 0x2f, 0x97, 0x97, 0xbc, 0xb7, 0x6f, 0x1d, 0x24, 0x81, 0x57, 0x55, 0x58, 0xfc, 0xf2, 0x60, 0xb1, 0xf0, 0xe5, 0x54, 0xeb, 0xb3, 0xdf, 0x3c, 0xfc, 0xb9, 0x58 } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.19", - /* Message to be signed */ - 177, - { 0xaf, 0x2d, 0x78, 0x15, 0x2c, 0xf1, 0x0e, 0xfe, 0x01, 0xd2, 0x74, 0xf2, 0x17, 0xb1, 0x77, 0xf6, 0xb0, 0x1b, 0x5e, 0x74, 0x9f, 0x15, 0x67, 0x71, 0x5d, 0xa3, 0x24, 0x85, 0x9c, 0xd3, 0xdd, 0x88, 0xdb, 0x84, 0x8e, 0xc7, 0x9f, 0x48, 0xdb, 0xba, 0x7b, 0x6f, 0x1d, 0x33, 0x11, 0x1e, 0xf3, 0x1b, 0x64, 0x89, 0x9e, 0x73, 0x91, 0xc2, 0xbf, 0xfd, 0x69, 0xf4, 0x90, 0x25, 0xcf, 0x20, 0x1f, 0xc5, 0x85, 0xdb, 0xd1, 0x54, 0x2c, 0x1c, 0x77, 0x8a, 0x2c, 0xe7, 0xa7, 0xee, 0x10, 0x8a, 0x30, 0x9f, 0xec, 0xa2, 0x6d, 0x13, 0x3a, 0x5f, 0xfe, 0xdc, 0x4e, 0x86, 0x9d, 0xcd, 0x76, 0x56, 0x59, 0x6a, 0xc8, 0x42, 0x7e, 0xa3, 0xef, 0x6e, 0x3f, 0xd7, 0x8f, 0xe9, 0x9d, 0x8d, 0xdc, 0x71, 0xd8, 0x39, 0xf6, 0x78, 0x6e, 0x0d, 0xa6, 0xe7, 0x86, 0xbd, 0x62, 0xb3, 0xa4, 0xf1, 0x9b, 0x89, 0x1a, 0x56, 0x15, 0x7a, 0x55, 0x4e, 0xc2, 0xa2, 0xb3, 0x9e, 0x25, 0xa1, 0xd7, 0xc7, 0xd3, 0x73, 0x21, 0xc7, 0xa1, 0xd9, 0x46, 0xcf, 0x4f, 0xbe, 0x75, 0x8d, 0x92, 0x76, 0xf0, 0x85, 0x63, 0x44, 0x9d, 0x67, 0x41, 0x4a, 0x2c, 0x03, 0x0f, 0x42, 0x51, 0xcf, 0xe2, 0x21, 0x3d, 0x04, 0xa5, 0x41, 0x06, 0x37, 0x87 } -, - /* Signature */ - 256, - { 0x20, 0x9c, 0x61, 0x15, 0x78, 0x57, 0x38, 0x7b, 0x71, 0xe2, 0x4b, 0xf3, 0xdd, 0x56, 0x41, 0x45, 0x50, 0x50, 0x3b, 0xec, 0x18, 0x0f, 0xf5, 0x3b, 0xdd, 0x9b, 0xac, 0x06, 0x2a, 0x2d, 0x49, 0x95, 0x09, 0xbf, 0x99, 0x12, 0x81, 0xb7, 0x95, 0x27, 0xdf, 0x91, 0x36, 0x61, 0x5b, 0x7a, 0x6d, 0x9d, 0xb3, 0xa1, 0x03, 0xb5, 0x35, 0xe0, 0x20, 0x2a, 0x2c, 0xac, 0xa1, 0x97, 0xa7, 0xb7, 0x4e, 0x53, 0x56, 0xf3, 0xdd, 0x59, 0x5b, 0x49, 0xac, 0xfd, 0x9d, 0x30, 0x04, 0x9a, 0x98, 0xca, 0x88, 0xf6, 0x25, 0xbc, 0xa1, 0xd5, 0xf2, 0x2a, 0x39, 0x2d, 0x8a, 0x74, 0x9e, 0xfb, 0x6e, 0xed, 0x9b, 0x78, 0x21, 0xd3, 0x11, 0x0a, 0xc0, 0xd2, 0x44, 0x19, 0x9e, 0xcb, 0x4a, 0xa3, 0xd7, 0x35, 0xa8, 0x3a, 0x2e, 0x88, 0x93, 0xc6, 0xbf, 0x85, 0x81, 0x38, 0x3c, 0xca, 0xee, 0x83, 0x46, 0x35, 0xb7, 0xfa, 0x1f, 0xaf, 0xfa, 0x45, 0xb1, 0x3d, 0x15, 0xc1, 0xda, 0x33, 0xaf, 0x71, 0xe8, 0x93, 0x03, 0xd6, 0x80, 0x90, 0xff, 0x62, 0xee, 0x61, 0x5f, 0xdf, 0x5a, 0x84, 0xd1, 0x20, 0x71, 0x1d, 0xa5, 0x3c, 0x28, 0x89, 0x19, 0x8a, 0xb3, 0x83, 0x17, 0xa9, 0x73, 0x4a, 0xb2, 0x7d, 0x67, 0x92, 0x4c, 0xea, 0x74, 0x15, 0x6f, 0xf9, 0x9b, 0xef, 0x98, 0x76, 0xbb, 0x5c, 0x33, 0x9e, 0x93, 0x74, 0x52, 0x83, 0xe1, 0xb3, 0x4e, 0x07, 0x22, 0x26, 0xb8, 0x80, 0x45, 0xe0, 0x17, 0xe9, 0xf0, 0x5b, 0x2a, 0x8c, 0x41, 0x67, 0x40, 0x25, 0x8e, 0x22, 0x3b, 0x26, 0x90, 0x02, 0x74, 0x91, 0x73, 0x22, 0x73, 0xf3, 0x22, 0x9d, 0x9e, 0xf2, 0xb1, 0xb3, 0x80, 0x7e, 0x32, 0x10, 0x18, 0x92, 0x0a, 0xd3, 0xe5, 0x3d, 0xae, 0x47, 0xe6, 0xd9, 0x39, 0x5c, 0x18, 0x4b, 0x93, 0xa3, 0x74, 0xc6, 0x71, 0xfa, 0xa2, 0xce } - -} -, -{ - "PKCS#1 v1.5 Signature Example 15.20", - /* Message to be signed */ - 179, - { 0x40, 0xee, 0x99, 0x24, 0x58, 0xd6, 0xf6, 0x14, 0x86, 0xd2, 0x56, 0x76, 0xa9, 0x6d, 0xd2, 0xcb, 0x93, 0xa3, 0x7f, 0x04, 0xb1, 0x78, 0x48, 0x2f, 0x2b, 0x18, 0x6c, 0xf8, 0x82, 0x15, 0x27, 0x0d, 0xba, 0x29, 0xd7, 0x86, 0xd7, 0x74, 0xb0, 0xc5, 0xe7, 0x8c, 0x7f, 0x6e, 0x56, 0xa9, 0x56, 0xe7, 0xf7, 0x39, 0x50, 0xa2, 0xb0, 0xc0, 0xc1, 0x0a, 0x08, 0xdb, 0xcd, 0x67, 0xe5, 0xb2, 0x10, 0xbb, 0x21, 0xc5, 0x8e, 0x27, 0x67, 0xd4, 0x4f, 0x7d, 0xd4, 0x01, 0x4e, 0x39, 0x66, 0x14, 0x3b, 0xf7, 0xe3, 0xd6, 0x6f, 0xf0, 0xc0, 0x9b, 0xe4, 0xc5, 0x5f, 0x93, 0xb3, 0x99, 0x94, 0xb8, 0x51, 0x8d, 0x9c, 0x1d, 0x76, 0xd5, 0xb4, 0x73, 0x74, 0xde, 0xa0, 0x8f, 0x15, 0x7d, 0x57, 0xd7, 0x06, 0x34, 0x97, 0x8f, 0x38, 0x56, 0xe0, 0xe5, 0xb4, 0x81, 0xaf, 0xbb, 0xdb, 0x5a, 0x3a, 0xc4, 0x8d, 0x48, 0x4b, 0xe9, 0x2c, 0x93, 0xde, 0x22, 0x91, 0x78, 0x35, 0x4c, 0x2d, 0xe5, 0x26, 0xe9, 0xc6, 0x5a, 0x31, 0xed, 0xe1, 0xef, 0x68, 0xcb, 0x63, 0x98, 0xd7, 0x91, 0x16, 0x84, 0xfe, 0xc0, 0xba, 0xbc, 0x3a, 0x78, 0x1a, 0x66, 0x66, 0x07, 0x83, 0x50, 0x69, 0x74, 0xd0, 0xe1, 0x48, 0x25, 0x10, 0x1c, 0x3b, 0xfa, 0xea } -, - /* Signature */ - 256, - { 0x92, 0x75, 0x02, 0xb8, 0x24, 0xaf, 0xc4, 0x25, 0x13, 0xca, 0x65, 0x70, 0xde, 0x33, 0x8b, 0x8a, 0x64, 0xc3, 0xa8, 0x5e, 0xb8, 0x28, 0xd3, 0x19, 0x36, 0x24, 0xf2, 0x7e, 0x8b, 0x10, 0x29, 0xc5, 0x5c, 0x11, 0x9c, 0x97, 0x33, 0xb1, 0x8f, 0x58, 0x49, 0xb3, 0x50, 0x09, 0x18, 0xbc, 0xc0, 0x05, 0x51, 0xd9, 0xa8, 0xfd, 0xf5, 0x3a, 0x97, 0x74, 0x9f, 0xa8, 0xdc, 0x48, 0x0d, 0x6f, 0xe9, 0x74, 0x2a, 0x58, 0x71, 0xf9, 0x73, 0x92, 0x65, 0x28, 0x97, 0x2a, 0x1a, 0xf4, 0x9e, 0x39, 0x25, 0xb0, 0xad, 0xf1, 0x4a, 0x84, 0x27, 0x19, 0xb4, 0xa5, 0xa2, 0xd8, 0x9f, 0xa9, 0xc0, 0xb6, 0x60, 0x5d, 0x21, 0x2b, 0xed, 0x1e, 0x67, 0x23, 0xb9, 0x34, 0x06, 0xad, 0x30, 0xe8, 0x68, 0x29, 0xa5, 0xc7, 0x19, 0xb8, 0x90, 0xb3, 0x89, 0x30, 0x6d, 0xc5, 0x50, 0x64, 0x86, 0xee, 0x2f, 0x36, 0xa8, 0xdf, 0xe0, 0xa9, 0x6a, 0xf6, 0x78, 0xc9, 0xcb, 0xd6, 0xaf, 0xf3, 0x97, 0xca, 0x20, 0x0e, 0x3e, 0xdc, 0x1e, 0x36, 0xbd, 0x2f, 0x08, 0xb3, 0x1d, 0x54, 0x0c, 0x0c, 0xb2, 0x82, 0xa9, 0x55, 0x9e, 0x4a, 0xdd, 0x4f, 0xc9, 0xe6, 0x49, 0x2e, 0xed, 0x0c, 0xcb, 0xd3, 0xa6, 0x98, 0x2e, 0x5f, 0xaa, 0x2d, 0xdd, 0x17, 0xbe, 0x47, 0x41, 0x7c, 0x80, 0xb4, 0xe5, 0x45, 0x2d, 0x31, 0xf7, 0x24, 0x01, 0xa0, 0x42, 0x32, 0x51, 0x09, 0x54, 0x4d, 0x95, 0x4c, 0x01, 0x93, 0x90, 0x79, 0xd4, 0x09, 0xa5, 0xc3, 0x78, 0xd7, 0x51, 0x2d, 0xfc, 0x2d, 0x2a, 0x71, 0xef, 0xcc, 0x34, 0x32, 0xa7, 0x65, 0xd1, 0xc6, 0xa5, 0x2c, 0xfc, 0xe8, 0x99, 0xcd, 0x79, 0xb1, 0x5b, 0x4f, 0xc3, 0x72, 0x36, 0x41, 0xef, 0x6b, 0xd0, 0x0a, 0xcc, 0x10, 0x40, 0x7e, 0x5d, 0xf5, 0x8d, 0xd1, 0xc3, 0xc5, 0xc5, 0x59, 0xa5, 0x06 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -}; - diff --git a/src/libtomcrypt/notes/rsa-testvectors/pkcs1v15sign-vectors.txt b/src/libtomcrypt/notes/rsa-testvectors/pkcs1v15sign-vectors.txt deleted file mode 100644 index 178dd23c56..0000000000 --- a/src/libtomcrypt/notes/rsa-testvectors/pkcs1v15sign-vectors.txt +++ /dev/null @@ -1,9049 +0,0 @@ -Test vectors for RSA PKCS#1 v1.5 Signature -========================================== - -This file contains test vectors for the PKCS#1 v1.5 signature -scheme with appendix. 15 RSA keys of different sizes have -been generated. For each key, 20 random messages of length -between 1 and 256 octets have been PKCS#1 v1.5 signed. -As specified in PKCS#1, the block type for this operation -is 1. The digest algorithm is SHA-1; i.e. the given message -must be hashed and the SHA-1 hash must be encapsulated in a -DigestInfo structure as specified in PKCS#1 v1.5. - -Key lengths: - -Key 1: 1024 bits -Key 2: 1024 bits -Key 3: 1024 bits -Key 4: 1024 bits -Key 5: 1024 bits -Key 6: 1024 bits -Key 7: 1025 bits -Key 8: 1026 bits -Key 9: 1027 bits -Key 10: 1028 bits -Key 11: 1029 bits -Key 12: 1030 bits -Key 13: 1031 bits -Key 14: 1536 bits -Key 15: 2048 bits - -These test vectors have been derived from the PSS test vectors. -============================================================================ -# Thirteen RSA keys with bit sizes between 1024 and 1031, one 1536-bit key, -# and one 2048-bit key are generated. - -# For each key, 20 random messages are PKCS#1 v1.5 signed. - -# Example 1: A 1024-bit RSA key pair -# ----------------------------------- - - -# Public key -# ---------- - -# Modulus: -a5 6e 4a 0e 70 10 17 58 9a 51 87 dc 7e a8 41 d1 -56 f2 ec 0e 36 ad 52 a4 4d fe b1 e6 1f 7a d9 91 -d8 c5 10 56 ff ed b1 62 b4 c0 f2 83 a1 2a 88 a3 -94 df f5 26 ab 72 91 cb b3 07 ce ab fc e0 b1 df -d5 cd 95 08 09 6d 5b 2b 8b 6d f5 d6 71 ef 63 77 -c0 92 1c b2 3c 27 0a 70 e2 59 8e 6f f8 9d 19 f1 -05 ac c2 d3 f0 cb 35 f2 92 80 e1 38 6b 6f 64 c4 -ef 22 e1 e1 f2 0d 0c e8 cf fb 22 49 bd 9a 21 37 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -a5 6e 4a 0e 70 10 17 58 9a 51 87 dc 7e a8 41 d1 -56 f2 ec 0e 36 ad 52 a4 4d fe b1 e6 1f 7a d9 91 -d8 c5 10 56 ff ed b1 62 b4 c0 f2 83 a1 2a 88 a3 -94 df f5 26 ab 72 91 cb b3 07 ce ab fc e0 b1 df -d5 cd 95 08 09 6d 5b 2b 8b 6d f5 d6 71 ef 63 77 -c0 92 1c b2 3c 27 0a 70 e2 59 8e 6f f8 9d 19 f1 -05 ac c2 d3 f0 cb 35 f2 92 80 e1 38 6b 6f 64 c4 -ef 22 e1 e1 f2 0d 0c e8 cf fb 22 49 bd 9a 21 37 - -# Public exponent: -01 00 01 - -# Exponent: -33 a5 04 2a 90 b2 7d 4f 54 51 ca 9b bb d0 b4 47 -71 a1 01 af 88 43 40 ae f9 88 5f 2a 4b be 92 e8 -94 a7 24 ac 3c 56 8c 8f 97 85 3a d0 7c 02 66 c8 -c6 a3 ca 09 29 f1 e8 f1 12 31 88 44 29 fc 4d 9a -e5 5f ee 89 6a 10 ce 70 7c 3e d7 e7 34 e4 47 27 -a3 95 74 50 1a 53 26 83 10 9c 2a ba ca ba 28 3c -31 b4 bd 2f 53 c3 ee 37 e3 52 ce e3 4f 9e 50 3b -d8 0c 06 22 ad 79 c6 dc ee 88 35 47 c6 a3 b3 25 - -# Prime 1: -e7 e8 94 27 20 a8 77 51 72 73 a3 56 05 3e a2 a1 -bc 0c 94 aa 72 d5 5c 6e 86 29 6b 2d fc 96 79 48 -c0 a7 2c bc cc a7 ea cb 35 70 6e 09 a1 df 55 a1 -53 5b d9 b3 cc 34 16 0b 3b 6d cd 3e da 8e 64 43 - -# Prime 2: -b6 9d ca 1c f7 d4 d7 ec 81 e7 5b 90 fc ca 87 4a -bc de 12 3f d2 70 01 80 aa 90 47 9b 6e 48 de 8d -67 ed 24 f9 f1 9d 85 ba 27 58 74 f5 42 cd 20 dc -72 3e 69 63 36 4a 1f 94 25 45 2b 26 9a 67 99 fd - -# Prime exponent 1: -28 fa 13 93 86 55 be 1f 8a 15 9c ba ca 5a 72 ea -19 0c 30 08 9e 19 cd 27 4a 55 6f 36 c4 f6 e1 9f -55 4b 34 c0 77 79 04 27 bb dd 8d d3 ed e2 44 83 -28 f3 85 d8 1b 30 e8 e4 3b 2f ff a0 27 86 19 79 - -# Prime exponent 2: -1a 8b 38 f3 98 fa 71 20 49 89 8d 7f b7 9e e0 a7 -76 68 79 12 99 cd fa 09 ef c0 e5 07 ac b2 1e d7 -43 01 ef 5b fd 48 be 45 5e ae b6 e1 67 82 55 82 -75 80 a8 e4 e8 e1 41 51 d1 51 0a 82 a3 f2 e7 29 - -# Coefficient: -27 15 6a ba 41 26 d2 4a 81 f3 a5 28 cb fb 27 f5 -68 86 f8 40 a9 f6 e8 6e 17 a4 4b 94 fe 93 19 58 -4b 8e 22 fd de 1e 5a 2e 3b d8 aa 5b a8 d8 58 41 -94 eb 21 90 ac f8 32 b8 47 f1 3a 3d 24 a7 9f 4d - -# PKCS#1 v1.5 signing of 20 random messages -# ------------------------------------------------------- - -# PKCS#1 v1.5 Signature Example 1.1 - -# ----------------- - -# Message to be signed: -cd c8 7d a2 23 d7 86 df 3b 45 e0 bb bc 72 13 26 -d1 ee 2a f8 06 cc 31 54 75 cc 6f 0d 9c 66 e1 b6 -23 71 d4 5c e2 39 2e 1a c9 28 44 c3 10 10 2f 15 -6a 0d 8d 52 c1 f4 c4 0b a3 aa 65 09 57 86 cb 76 -97 57 a6 56 3b a9 58 fe d0 bc c9 84 e8 b5 17 a3 -d5 f5 15 b2 3b 8a 41 e7 4a a8 67 69 3f 90 df b0 -61 a6 e8 6d fa ae e6 44 72 c0 0e 5f 20 94 57 29 -cb eb e7 7f 06 ce 78 e0 8f 40 98 fb a4 1f 9d 61 -93 c0 31 7e 8b 60 d4 b6 08 4a cb 42 d2 9e 38 08 -a3 bc 37 2d 85 e3 31 17 0f cb f7 cc 72 d0 b7 1c -29 66 48 b3 a4 d1 0f 41 62 95 d0 80 7a a6 25 ca -b2 74 4f d9 ea 8f d2 23 c4 25 37 02 98 28 bd 16 -be 02 54 6f 13 0f d2 e3 3b 93 6d 26 76 e0 8a ed -1b 73 31 8b 75 0a 01 67 d0 - -# Signature: -6b c3 a0 66 56 84 29 30 a2 47 e3 0d 58 64 b4 d8 -19 23 6b a7 c6 89 65 86 2a d7 db c4 e2 4a f2 8e -86 bb 53 1f 03 35 8b e5 fb 74 77 7c 60 86 f8 50 -ca ef 89 3f 0d 6f cc 2d 0c 91 ec 01 36 93 b4 ea -00 b8 0c d4 9a ac 4e cb 5f 89 11 af e5 39 ad a4 -a8 f3 82 3d 1d 13 e4 72 d1 49 05 47 c6 59 c7 61 -7f 3d 24 08 7d db 6f 2b 72 09 61 67 fc 09 7c ab -18 e9 a4 58 fc b6 34 cd ce 8e e3 58 94 c4 84 d7 - -# PKCS#1 v1.5 Signature Example 1.2 - -# ----------------- - -# Message to be signed: -85 13 84 cd fe 81 9c 22 ed 6c 4c cb 30 da eb 5c -f0 59 bc 8e 11 66 b7 e3 53 0c 4c 23 3e 2b 5f 8f -71 a1 cc a5 82 d4 3e cc 72 b1 bc a1 6d fc 70 13 -22 6b 9e - -# Signature: -84 fd 2c e7 34 ec 1d a8 28 d0 f1 5b f4 9a 87 07 -c1 5d 05 94 81 36 de 53 7a 3d b4 21 38 41 67 c8 -6f ae 02 25 87 ee 9e 13 7d ae e7 54 73 82 62 93 -2d 27 1c 74 4c 6d 3a 18 9a d4 31 1b db 02 04 92 -e3 22 fb dd c4 04 06 ea 86 0d 4e 8e a2 a4 08 4a -a9 8b 96 22 a4 46 75 6f db 74 0d db 3d 91 db 76 -70 e2 11 66 1b bf 87 09 b1 1c 08 a7 07 71 42 2d -1a 12 de f2 9f 06 88 a1 92 ae bd 89 e0 f8 96 f8 - -# PKCS#1 v1.5 Signature Example 1.3 - -# ----------------- - -# Message to be signed: -a4 b1 59 94 17 61 c4 0c 6a 82 f2 b8 0d 1b 94 f5 -aa 26 54 fd 17 e1 2d 58 88 64 67 9b 54 cd 04 ef -8b d0 30 12 be 8d c3 7f 4b 83 af 79 63 fa ff 0d -fa 22 54 77 43 7c 48 01 7f f2 be 81 91 cf 39 55 -fc 07 35 6e ab 3f 32 2f 7f 62 0e 21 d2 54 e5 db -43 24 27 9f e0 67 e0 91 0e 2e 81 ca 2c ab 31 c7 -45 e6 7a 54 05 8e b5 0d 99 3c db 9e d0 b4 d0 29 -c0 6d 21 a9 4c a6 61 c3 ce 27 fa e1 d6 cb 20 f4 -56 4d 66 ce 47 67 58 3d 0e 5f 06 02 15 b5 90 17 -be 85 ea 84 89 39 12 7b d8 c9 c4 d4 7b 51 05 6c -03 1c f3 36 f1 7c 99 80 f3 b8 f5 b9 b6 87 8e 8b -79 7a a4 3b 88 26 84 33 3e 17 89 3f e9 ca a6 aa -29 9f 7e d1 a1 8e e2 c5 48 64 b7 b2 b9 9b 72 61 -8f b0 25 74 d1 39 ef 50 f0 19 c9 ee f4 16 97 13 -38 e7 d4 70 - -# Signature: -0b 1f 2e 51 80 e5 c7 b4 b5 e6 72 92 9f 66 4c 48 -96 e5 0c 35 13 4b 6d e4 d5 a9 34 25 2a 3a 24 5f -f4 83 40 92 0e 10 34 b7 d5 a5 b5 24 eb 0e 1c f1 -2b ef ef 49 b2 7b 73 2d 2c 19 e1 c4 32 17 d6 e1 -41 73 81 11 1a 1d 36 de 63 75 cf 45 5b 3c 98 12 -63 9d bc 27 60 0c 75 19 94 fb 61 79 9e cf 7d a6 -bc f5 15 40 af d0 17 4d b4 03 31 88 55 66 75 b1 -d7 63 36 0a f4 6f ee ca 5b 60 f8 82 82 9e e7 b2 - -# PKCS#1 v1.5 Signature Example 1.4 - -# ----------------- - -# Message to be signed: -bc 65 67 47 fa 9e af b3 f0 - -# Signature: -45 60 7a d6 11 cf 57 47 a4 1a c9 4d 0f fe c8 78 -bd af 63 f6 b5 7a 4b 08 8b f3 6e 34 e1 09 f8 40 -f2 4b 74 2a da 16 10 2d ab f9 51 cb c4 4f 89 82 -e9 4e d4 cd 09 44 8d 20 ec 0e fa 73 54 5f 80 b6 -54 06 be d6 19 4a 61 c3 40 b4 ad 15 68 cb b7 58 -51 04 9f 11 af 17 34 96 40 76 e0 20 29 ae e2 00 -e4 0e 80 be 0f 43 61 f6 98 41 c4 f9 2a 44 50 a2 -28 6d 43 28 9b 40 55 54 c5 4d 25 c6 ec b5 84 f4 - -# PKCS#1 v1.5 Signature Example 1.5 - -# ----------------- - -# Message to be signed: -b4 55 81 54 7e 54 27 77 0c 76 8e 8b 82 b7 55 64 -e0 ea 4e 9c 32 59 4d 6b ff 70 65 44 de 0a 87 76 -c7 a8 0b 45 76 55 0e ee 1b 2a ca bc 7e 8b 7d 3e -f7 bb 5b 03 e4 62 c1 10 47 ea dd 00 62 9a e5 75 -48 0a c1 47 0f e0 46 f1 3a 2b f5 af 17 92 1d c4 -b0 aa 8b 02 be e6 33 49 11 65 1d 7f 85 25 d1 0f -32 b5 1d 33 be 52 0d 3d df 5a 70 99 55 a3 df e7 -82 83 b9 e0 ab 54 04 6d 15 0c 17 7f 03 7f dc cc -5b e4 ea 5f 68 b5 e5 a3 8c 9d 7e dc cc c4 97 5f -45 5a 69 09 b4 - -# Signature: -54 be 9d 90 87 75 15 f4 50 27 9c 15 b5 f6 1a d6 -f1 5e cc 95 f1 8c be d8 2b 65 b1 66 7a 57 58 09 -58 79 94 66 80 44 f3 bc 2a e7 f8 84 50 1f 64 f0 -b4 3f 58 8c fa 20 5a 6a b7 04 32 8c 2d 4a b9 2a -7a e1 34 40 61 4d 3e 08 5f 40 1d a9 ad 28 e2 10 -5e 4a 0e db 68 1a 64 24 df 04 73 88 ce 05 1e e9 -df 7b c2 16 3f e3 47 52 0a d5 1c cd 51 80 64 38 -3e 74 1a ca d3 cb dc 2c b5 a7 c6 8e 86 84 64 c2 - -# PKCS#1 v1.5 Signature Example 1.6 - -# ----------------- - -# Message to be signed: -10 aa e9 a0 ab 0b 59 5d 08 41 20 7b 70 0d 48 d7 -5f ae dd e3 b7 75 cd 6b 4c c8 8a e0 6e 46 94 ec -74 ba 18 f8 52 0d 4f 5e a6 9c bb e7 cc 2b eb a4 -3e fd c1 02 15 ac 4e b3 2d c3 02 a1 f5 3d c6 c4 -35 22 67 e7 93 6c fe bf 7c 8d 67 03 57 84 a3 90 -9f a8 59 c7 b7 b5 9b 8e 39 c5 c2 34 9f 18 86 b7 -05 a3 02 67 d4 02 f7 48 6a b4 f5 8c ad 5d 69 ad -b1 7a b8 cd 0c e1 ca f5 02 5a f4 ae 24 b1 fb 87 -94 c6 07 0c c0 9a 51 e2 f9 91 13 11 e3 87 7d 00 -44 c7 1c 57 a9 93 39 50 08 80 6b 72 3a c3 83 73 -d3 95 48 18 18 52 8c 1e 70 53 73 92 82 05 35 29 -51 0e 93 5c d0 fa 77 b8 fa 53 cc 2d 47 4b d4 fb -3c c5 c6 72 d6 ff dc 90 a0 0f 98 48 71 2c 4b cf -e4 6c 60 57 36 59 b1 1e 64 57 e8 61 f0 f6 04 b6 -13 8d 14 4f 8c e4 e2 da 73 - -# Signature: -0e 6f f6 3a 85 6b 9c bd 5d be 42 31 83 12 20 47 -dd 39 d6 f7 6d 1b 23 10 e5 46 fe 9e e7 3b 33 ef -a7 c7 8f 94 74 45 5c 9e 5b 88 cb 38 3a af c3 69 -86 68 e7 b7 a5 9a 9c bb 5b 08 97 b6 c5 af b7 f8 -ba c4 b9 24 e9 8d 76 0a 15 fc 43 d2 81 4a b2 d5 -18 7f 79 be d9 91 5a 93 39 7e bc 22 a7 67 75 06 -a0 2e 07 6d 3f fd c0 44 1d bd 4d b0 04 53 dc 28 -d8 30 e0 57 3f 77 b8 17 b5 05 c3 8b 4a 4b b5 d0 - -# PKCS#1 v1.5 Signature Example 1.7 - -# ----------------- - -# Message to be signed: -ef b5 da 1b 4d 1e 6d 9a 5d ff 92 d0 18 4d a7 e3 -1f 87 7d 12 81 dd da 62 56 64 86 9e 83 79 e6 7a -d3 b7 5e ae 74 a5 80 e9 82 7a bd 6e b7 a0 02 cb -54 11 f5 26 67 97 76 8f b8 e9 5a e4 0e 3e 8b 34 -66 f5 ab 15 d6 95 53 95 29 39 ec 23 e6 1d 58 49 -7f ac 76 aa 1c 0b b5 a3 cb 4a 54 38 35 87 c7 bb -78 d1 3e ef da 20 54 43 e6 ce 43 65 80 2d f5 5c -64 71 34 97 98 4e 7c a9 67 22 b3 ed f8 4d 56 - -# Signature: -83 85 d5 85 33 a9 95 f7 2d f2 62 b7 0f 40 b3 91 -dd f5 15 f4 64 b9 d2 cc 2d 66 39 8f c0 56 89 d8 -11 63 29 46 d6 2e ab dc a7 a3 1f cf 6c d6 c9 81 -d2 8b bc 29 08 3e 4a 6d 5b 2b 37 8c a4 e5 40 f0 -60 b9 6d 53 ad 26 93 f8 21 78 b9 4e 2e 2f 86 b9 -ac cf a0 20 25 10 7e 06 2a b7 08 01 75 68 45 01 -02 8f 67 64 61 d8 1c 00 8f e4 75 06 71 64 99 70 -87 8f c1 75 cf 98 e9 6b 2e cb f6 87 4d 77 da cb - -# PKCS#1 v1.5 Signature Example 1.8 - -# ----------------- - -# Message to be signed: -53 bb 58 ce 42 f1 98 49 40 55 26 57 23 3b 14 96 -9a f3 65 c0 a5 61 a4 13 2a f1 8a f3 94 32 28 0e -3e 43 70 82 43 4b 19 23 18 37 18 4f 02 cf 2b 2e -72 6b eb f7 4d 7a e3 25 6d 8b 72 f3 ea fd b1 34 -d3 3d e0 6f 29 91 d2 99 d5 9f 54 68 d4 3b 99 58 -d6 a9 68 f5 96 9e db bc 6e 71 85 cb c7 16 c7 c9 -45 da fa 9c c7 1d df aa a0 10 94 a4 52 dd f5 e2 -40 73 20 40 0b f0 5e a9 72 9c af bf 06 00 e7 88 -07 ef 94 62 e3 fd e3 2e d7 d9 81 a5 6f 47 51 ef -64 fb 45 49 91 0e cc 91 1d 72 80 53 b3 99 43 00 -47 40 e6 f5 82 1f e8 d7 5c 06 17 bf 2c 6b 24 bb -fc 34 01 3f c9 5f 0d ed f5 ba 29 7f 50 4f b8 33 -da 2a 43 6d 1d 8f f1 cc 51 93 e2 a6 43 89 fc ed -91 8e 7f eb 67 16 33 0f 66 80 1d b9 49 75 49 cf -1d 3b d9 7c f1 bc 62 55 - -# Signature: -8e 1f 3d 26 ec 7c 6b bb 8c 54 c5 d2 5f 31 20 58 -78 03 af 6d 3c 2b 99 a3 7c ed 6a 36 57 d4 ae 54 -26 6f 63 ff fd e6 60 c8 66 d6 5d 0a b0 58 9e 1d -12 d9 ce 60 54 b0 5c 86 68 ae 12 71 71 cc aa e7 -f1 cd 40 96 77 f5 21 57 b6 12 3a b2 27 f2 7a 00 -96 6d 14 39 b4 2a 32 16 9d 10 70 39 40 26 fc 8b -c9 35 45 b1 ac 25 2d 0f 7d a7 51 c0 2e 33 a4 78 -31 fb d7 15 14 c2 bb bd 3a db 67 40 c0 fd 68 ad - -# PKCS#1 v1.5 Signature Example 1.9 - -# ----------------- - -# Message to be signed: -27 ca dc 69 84 50 94 5f 20 4e c3 cf 8c 6c bd 8c -eb 4c c0 cb e3 12 27 4f a9 6b 04 de ac 85 51 60 -c0 e0 4e 4a c5 d3 82 10 c2 7c - -# Signature: -7b 63 f9 22 33 56 f3 5f 61 17 f6 8c 8f 82 20 03 -4f c2 38 4a b5 dc 69 04 14 1f 13 93 14 d6 ee 89 -f5 4e c6 ff d1 8c 41 3a 23 c5 93 1c 7f bb 13 c5 -55 cc fd 59 0e 0e aa 85 3c 8c 94 d2 52 0c d4 25 -0d 9a 05 a1 93 b6 5d c7 49 b8 24 78 af 01 56 ee -1d e5 5d da d3 3e c1 f0 09 9c ad 6c 89 1a 36 17 -c7 39 3d 05 fb fb bb 00 52 8a 00 1d f0 b2 04 eb -df 1a 34 10 90 de a8 9f 87 0a 87 74 58 42 7f 7b - -# PKCS#1 v1.5 Signature Example 1.10 - -# ----------------- - -# Message to be signed: -71 64 07 e9 01 b9 ef 92 d7 61 b0 13 fd 13 eb 7a -d7 2a ed - -# Signature: -2a 22 db e3 77 4d 5b 29 72 01 b5 5a 0f 17 f4 2d -ce 63 b7 84 5c b3 25 cf e9 51 d0 ba db 5c 5a 14 -47 21 43 d8 96 c8 6c c3 39 f8 36 71 16 42 15 ab -c9 78 62 f2 15 16 54 e7 5a 3b 35 7c 37 31 1b 3d -72 68 ca b5 40 20 2e 23 be e5 27 36 f2 cd 86 cc -e0 c7 db de 95 e1 c6 00 a4 73 95 dc 5e b0 a4 72 -15 3f bc 4f b2 1b 64 3e 0c 04 ae 14 dd 37 e9 7e -61 7a 75 67 c8 96 52 21 97 81 00 1b a6 f8 32 98 - -# PKCS#1 v1.5 Signature Example 1.11 - -# ----------------- - -# Message to be signed: -46 c2 4e 41 03 00 16 29 c7 12 dd 4c e8 d7 47 ee -59 5d 6c 74 4c cc 4f 71 34 7d 9b 8a bf 49 d1 b8 -fb 2e f9 1b 95 dc 89 9d 4c 0e 3d 29 97 e6 38 f4 -cf 3f 68 e0 49 8d e5 aa bd 13 f0 df e0 2f f2 6b -a4 37 91 04 e7 8f fa 95 ff bd 15 06 7e f8 cb d7 -eb 78 60 fe cc 71 ab e1 3d 5c 72 0a 66 85 1f 2d -ef d4 e7 95 05 4d 7b ec 02 4b b4 22 a4 6a 73 68 -b5 6d 95 b4 7a eb af be ad d6 12 81 25 93 a7 0d -b9 f9 6d 45 1e e1 5e db 29 93 08 d7 77 f4 bb 68 -ed 33 77 c3 21 56 b4 1b 7a 9c 92 a1 4c 8b 81 14 -43 99 c5 6a 5a 43 2f 4f 77 0a a9 7d a8 41 5d 0b -da 2e 81 32 06 03 1e 70 62 00 31 c8 81 d6 16 bf -fd 5f 03 bf 14 7c 1e 73 76 6c 26 24 62 08 - -# Signature: -12 23 5b 0b 40 61 26 d9 d2 60 d4 47 e9 23 a1 10 -51 fb 24 30 79 f4 46 fd 73 a7 01 81 d5 36 34 d7 -a0 96 8e 4e e2 77 77 ed a6 3f 6e 4a 3a 91 ad 59 -85 99 8a 48 48 da 59 ce 69 7b 24 bb 33 2f a2 ad -9c e4 62 ca 4a ff dc 21 da b9 08 e8 ce 15 af 6e -b9 10 5b 1a bc f3 91 42 aa 17 b3 4c 4c 09 23 86 -a7 ab bf e0 28 af db eb c1 4f 2c e2 6f be e5 ed -ec a1 15 02 d3 9a 6b 74 03 15 48 43 d9 8a 62 a7 - -# PKCS#1 v1.5 Signature Example 1.12 - -# ----------------- - -# Message to be signed: -bc 99 a9 32 aa 16 d6 22 bf ff 79 c5 0b 4c 42 35 -86 73 26 11 29 e2 8d 6a 91 8f f1 b0 f1 c4 f4 6a -d8 af a9 8b 0c a0 f5 6f 96 79 75 b0 a2 9b e8 82 -e9 3b 6c d3 fc 33 e1 fa ef 72 e5 2b 2a e0 a3 f1 -20 24 50 6e 25 69 0e 90 2e 78 29 82 14 55 56 53 -22 84 cf 50 57 89 73 8f 4d a3 1f a1 33 3d 3a f8 -62 b2 ba 6b 6c e7 ab 4c ce 6a ba - -# Signature: -87 2e c5 ad 4f 18 46 25 6f 17 e9 93 6a c5 0e 43 -e9 96 3e a8 c1 e7 6f 15 87 9b 78 74 d7 7d 12 2a -60 9d c8 c5 61 14 5b 94 bf 4f fd ff de b1 7e 6e -76 ff c6 c1 0c 07 47 f5 e3 7a 9f 43 4f 56 09 e7 -9d a5 25 02 15 a4 57 af df 12 c6 50 7c c1 55 1f -54 a2 80 10 59 58 26 a2 c9 b9 7f a0 aa 85 1c c6 -8b 70 5d 7a 06 d7 20 ba 02 7e 4a 1c 0b 01 95 00 -fb 63 b7 80 71 68 4d cf a9 77 27 00 b9 82 dc 66 - -# PKCS#1 v1.5 Signature Example 1.13 - -# ----------------- - -# Message to be signed: -73 1e 17 2a c0 63 99 2c 5b 11 ba 17 0d fb 23 bb -00 0d 47 ba 19 53 29 cf 27 80 61 03 73 81 51 4c -14 60 64 c5 28 5d b1 30 dd 5b ae 98 b7 72 22 59 -50 ea b0 5d 3e a9 96 f6 ff fb 9a 8c 86 22 91 3f -27 99 14 c8 9a da 4f 3d d7 76 66 a8 68 bf cb ff -2b 95 b7 da f4 53 d4 e2 c9 d7 5b ee e7 f8 e7 09 -05 e4 06 6a 4f 73 ae cc 67 f9 56 aa 5a 32 92 b8 -48 8c 91 7d 31 7c fd c8 62 53 e6 90 38 1e 15 ab - -# Signature: -76 20 4e ac c1 d6 3e c1 d6 ad 5b d0 69 2e 1a 2f -68 6d f6 e6 4c a9 45 c7 7a 82 4d e2 12 ef a6 d9 -78 2d 81 b4 59 14 03 ff 40 20 62 02 98 c0 7e bd -3a 8a 61 c5 bf 4d ad 62 cb fc 4a e6 a0 39 37 be -4b 49 a2 16 d5 70 fc 6e 81 87 29 37 87 6e 27 bd -19 cf 60 1e ff c3 0d dc a5 73 c9 d5 6c d4 56 9b -db 48 51 c4 50 c4 2c b2 1e 73 8c dd 61 02 7b 8b -e5 e9 b4 10 fc 46 aa 3f 29 e4 be 9e 64 45 13 46 - -# PKCS#1 v1.5 Signature Example 1.14 - -# ----------------- - -# Message to be signed: -02 11 38 26 83 a7 4d 8d 2a 2c b6 a0 65 50 56 3b -e1 c2 6c a6 28 21 e4 ff 16 3b 72 04 64 fc 3a 28 -d9 1b ed dd c6 27 49 a5 53 8e af 41 fb e0 c8 2a -77 e0 6a d9 93 83 c9 e9 85 ff b8 a9 3f d4 d7 c5 -8d b5 1a d9 1b a4 61 d6 9a 8f d7 dd ab e2 49 67 -57 a0 c4 91 22 c1 a7 9a 85 cc 05 53 e8 21 4d 03 -6d fe 01 85 ef a0 d0 58 60 c6 12 fa 08 82 c8 2d -24 6e 58 30 a6 73 55 df f1 8a 2c 36 b7 32 f9 88 -cf ed c5 62 26 4c 62 54 b4 0f ca bb 97 b7 60 94 -75 68 dc d6 a1 7c da 6e e8 85 5b dd ba b9 37 02 -47 1a a0 cf b1 be d2 e1 31 18 eb a1 17 5b 73 c9 -62 53 c1 08 d0 b2 ab a0 5a b8 e1 7e 84 39 2e 20 -08 5f 47 40 4d 83 65 52 7d c3 fb 8f 2b b4 8a 50 -03 8e 71 36 1c cf 97 34 07 - -# Signature: -52 55 00 91 83 31 f1 04 2e ae 0c 5c 20 54 aa 7f -92 de b2 69 91 b5 79 66 34 f2 29 da f9 b4 9e b2 -05 4d 87 31 9f 3c fa 9b 46 6b d0 75 ef 66 99 ae -a4 bd 4a 19 5a 1c 52 96 8b 5e 2b 75 e0 92 d8 46 -ea 1b 5c c2 79 05 a8 e1 d5 e5 de 0e df db 21 39 -1e bb 95 18 64 eb d9 f0 b0 ec 35 b6 54 28 71 36 -0a 31 7b 7e f1 3a e0 6a f6 84 e3 8e 21 b1 e1 9b -c7 29 8e 5d 6f e0 01 3a 16 4b fa 25 d3 e7 31 3d - -# PKCS#1 v1.5 Signature Example 1.15 - -# ----------------- - -# Message to be signed: -fc 6b 70 0d 22 58 33 88 ab 2f 8d af ca f1 a0 56 -20 69 80 20 da 4b ae 44 da fb d0 87 7b 50 12 50 -6d c3 18 1d 5c 66 bf 02 3f 34 8b 41 fd 9f 94 79 -5a b9 64 52 a4 21 9f 2d 39 d7 2a f3 59 cf 19 56 -51 c7 - -# Signature: -44 52 a6 cc 26 26 b0 1e 95 ab 30 6d f0 d0 cc 74 -84 fb ab 3c 22 e9 70 32 83 56 7f 66 ea dc 24 8d -bd a5 8f ce 7d d0 c7 0c ce 3f 15 0f ca 4b 36 9d -ff 3b 62 37 e2 b1 62 81 ab 55 b5 3f b1 30 89 c8 -5c d2 65 05 6b 3d 62 a8 8b fc 21 35 b1 67 91 f7 -fb ca b9 fd 2d c3 3b ec b6 17 be 41 9d 2c 04 61 -42 a4 d4 7b 33 83 14 55 2e dd 4b 6f e9 ce 11 04 -ec ec 4a 99 58 d7 33 1e 93 0f c0 9b f0 8a 6e 64 - -# PKCS#1 v1.5 Signature Example 1.16 - -# ----------------- - -# Message to be signed: -13 ba 08 6d 70 9c fa 5f ed aa 55 7a 89 18 1a 61 -40 f2 30 0e d6 d7 c3 fe bb 6c f6 8a be bc bc 67 -8f 2b ca 3d c2 33 02 95 ee c4 5b b1 c4 07 5f 3a -da 98 7e ae 88 b3 9c 51 60 6c b8 04 29 e6 49 d9 -8a cc 84 41 b1 f8 89 7d b8 6c 5a 4c e0 ab f2 8b -1b 81 dc a3 66 76 97 b8 50 69 6b 74 a5 eb d8 5d -ec 56 c9 0f 8a be 51 3e fa 85 78 53 72 0b e3 19 -60 79 21 bc a9 47 52 2c d8 fa c8 ca ce 5b 82 7c -3e 5a 12 9e 7e e5 7f 6b 84 93 2f 14 14 1a c4 27 -4e 8c bb 46 e6 91 2b 0d 3e 21 77 d4 99 d1 84 0c -d4 7d 4d 7a e0 b4 cd c4 d3 - -# Signature: -1f 3b 5a 87 db 72 a2 c9 7b b3 ef f2 a6 5a 30 12 -68 ea cd 89 f4 2a bc 10 98 c1 f2 de 77 b0 83 2a -65 d7 81 5f eb 35 07 00 63 f2 21 bb 34 53 bd 43 -43 86 c9 a3 fd e1 8e 3c a1 68 7f b6 49 e8 6c 51 -d6 58 61 9d de 5d eb b8 6f e1 54 91 ff 77 ab 74 -83 73 f1 be 50 88 80 d6 6e a8 1e 87 0e 91 cd f1 -70 48 75 c1 7f 0b 10 10 31 88 bc 64 ee f5 a3 55 -1b 41 4c 73 36 70 21 5b 1a 22 70 25 62 58 1a b1 - -# PKCS#1 v1.5 Signature Example 1.17 - -# ----------------- - -# Message to be signed: -eb 1e 59 35 - -# Signature: -37 0c b9 83 9a e6 07 4f 84 b2 ac d6 e6 f6 b7 92 -1b 4b 52 34 63 75 7f 64 46 71 61 40 c4 e6 c0 e7 -5b ec 6a d0 19 7e bf a8 6b f4 6d 09 4f 5f 6c d3 -6d ca 3a 5c c7 3c 8b bb 70 e2 c7 c9 ab 5d 96 4e -c8 e3 df de 48 1b 4a 1b ef fd 01 b4 ad 15 b3 1a -e7 ae bb 9b 70 34 4a 94 11 08 31 65 fd f9 c3 75 -4b bb 8b 94 dd 34 bd 48 13 df ad a1 f6 93 7d e4 -26 7d 55 97 ca 09 a3 1e 83 d7 f1 a7 9d d1 9b 5e - -# PKCS#1 v1.5 Signature Example 1.18 - -# ----------------- - -# Message to be signed: -63 46 b1 53 e8 89 c8 22 82 09 63 00 71 c8 a5 77 -83 f3 68 76 0b 8e b9 08 cf c2 b2 76 - -# Signature: -24 79 c9 75 c5 b1 ae 4c 4e 94 0f 47 3a 90 45 b8 -bf 5b 0b fc a7 8e c2 9a 38 df be dc 8a 74 9b 7a -26 92 f7 c5 2d 5b c7 c8 31 c7 23 23 72 a0 0f ed -3b 6b 49 e7 60 ec 99 e0 74 ff 2e ea d5 13 4e 83 -05 72 5d fa 39 21 2b 84 bd 4b 8d 80 bc 8b c1 7a -51 28 23 a3 be b1 8f c0 8e 45 ed 19 c2 6c 81 77 -07 d6 7f b0 58 32 ef 1f 12 a3 3e 90 cd 93 b8 a7 -80 31 9e 29 63 ca 25 a2 af 7b 09 ad 8f 59 5c 21 - -# PKCS#1 v1.5 Signature Example 1.19 - -# ----------------- - -# Message to be signed: -64 70 2d b9 f8 25 a0 f3 ab c3 61 97 46 59 f5 e9 -d3 0c 3a a4 f5 6f ea c6 90 50 c7 29 05 e7 7f e0 -c2 2f 88 a3 78 c2 1f cf 45 fe 8a 5c 71 73 02 09 -39 29 - -# Signature: -15 2f 34 51 c8 58 d6 95 94 e6 56 7d fb 31 29 1c -1e e7 86 0b 9d 15 eb d5 a5 ed d2 76 ac 3e 6f 7a -8d 14 80 e4 2b 33 81 d2 be 02 3a cf 7e bb db 28 -de 3d 21 63 ae 44 25 9c 6d f9 8c 33 5d 04 5b 61 -da c9 db a9 db bb 4e 6a b4 a0 83 cd 76 b5 80 cb -e4 72 20 6a 1a 9f d6 06 80 ce ea 1a 57 0a 29 b0 -88 1c 77 5e ae f5 52 5d 6d 2f 34 4c 28 83 7d 0a -ca 42 2b bb 0f 1a ba 8f 68 61 ae 18 bd 73 fe 44 - -# PKCS#1 v1.5 Signature Example 1.20 - -# ----------------- - -# Message to be signed: -94 19 21 de 4a 1c 9c 16 18 d6 f3 ca 3c 17 9f 6e -29 ba e6 dd f9 a6 a5 64 f9 29 e3 ce 82 cf 32 65 -d7 83 7d 5e 69 2b e8 dc c9 e8 6c - -# Signature: -70 76 c2 87 fc 6f ff 2b 20 53 74 35 e5 a3 10 7c -e4 da 10 71 61 86 d0 15 39 41 3e 60 9d 27 d1 da -6f d9 52 c6 1f 4b ab 91 c0 45 fa 4f 86 83 ec c4 -f8 dd e7 42 27 f7 73 cf f3 d9 6d b8 47 18 c4 94 -4b 06 af fe ba 94 b7 25 f1 b0 7d 39 28 b2 49 0a -85 c2 f1 ab f4 92 a9 17 7a 7c d2 ea 0c 96 68 75 -6f 82 5b be c9 00 fa 8a c3 82 4e 11 43 87 ef 57 -37 80 ca 33 48 82 38 7b 94 e5 aa d7 a2 7a 28 dc - -# ============================================= - -# Example 2: A 1024-bit RSA key pair -# ----------------------------------- - - -# Public key -# ---------- - -# Modulus: -ac 13 d9 fd ae 7b 73 35 b6 9c d9 85 67 e9 64 7d -99 bf 37 3a 9e 05 ce 34 35 d6 64 65 f3 28 b7 f7 -33 4b 79 2a ee 7e fa 04 4e bc 4c 7a 30 b2 1a 5d -7a 89 cd b3 a3 0d fc d9 fe e9 99 5e 09 41 5e dc -0b f9 e5 b4 c3 f7 4f f5 3f b4 d2 94 41 bf 1b 7e -d6 cb dd 4a 47 f9 25 22 69 e1 64 6f 6c 1a ee 05 -14 e9 3f 6c b9 df 71 d0 6c 06 0a 21 04 b4 7b 72 -60 ac 37 c1 06 86 1d c7 8c a5 a2 5f aa 9c b2 e3 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -ac 13 d9 fd ae 7b 73 35 b6 9c d9 85 67 e9 64 7d -99 bf 37 3a 9e 05 ce 34 35 d6 64 65 f3 28 b7 f7 -33 4b 79 2a ee 7e fa 04 4e bc 4c 7a 30 b2 1a 5d -7a 89 cd b3 a3 0d fc d9 fe e9 99 5e 09 41 5e dc -0b f9 e5 b4 c3 f7 4f f5 3f b4 d2 94 41 bf 1b 7e -d6 cb dd 4a 47 f9 25 22 69 e1 64 6f 6c 1a ee 05 -14 e9 3f 6c b9 df 71 d0 6c 06 0a 21 04 b4 7b 72 -60 ac 37 c1 06 86 1d c7 8c a5 a2 5f aa 9c b2 e3 - -# Public exponent: -01 00 01 - -# Exponent: -04 84 cc ef ad 7a 4e 6f 35 a9 6e c8 e3 0e ac f5 -e3 68 b3 11 95 fe bf 08 7d f5 70 53 81 0c 2b b0 -91 27 45 3a 4c 63 07 3b bf b9 90 24 91 4c cc 06 -72 66 56 01 86 a1 a2 67 33 1b 7d 4c 8b df ac 96 -fd a9 f3 f7 0b ec 4e ea bc e7 cd 52 19 34 3c 2e -49 1c ce 82 7e 44 ee 23 0e 4f 69 58 9e 57 5a e9 -06 30 30 44 2a 31 c8 2c de 30 dc 9c 79 cf 64 e7 -a0 97 5e 75 e1 6e a4 58 15 48 8b 45 52 56 ee b1 - -# Prime 1: -df 85 f4 a0 b4 33 bd 37 43 3c d7 97 8c 9b 37 f9 -e4 17 29 d8 3a 26 2b 98 46 53 8e 50 39 e6 59 68 -b5 95 a4 62 72 bd 5f 4a 2c 3a bf 89 0a 35 50 8a -5b cb 4c 29 ef bd 91 02 85 03 83 4c fa b2 c0 f9 - -# Prime 2: -c5 14 59 a6 72 ed 8b 72 4c 6a 8f 28 5c bb 8e a7 -6a 23 93 91 79 28 be 56 c0 dc df c9 43 c3 0b da -3c ee fb 86 dc c8 c4 55 67 8c fe 88 25 f3 88 77 -a3 72 8a 1f 10 29 1f 54 7b 1e 8b 16 04 83 e5 bb - -# Prime exponent 1: -b6 ba 83 a9 7c a7 6f 5f e6 0f af 0f ad 5a 97 00 -2a 7e e5 2e 67 1b 1d 38 77 05 87 a9 fe 2b 59 9c -48 15 f5 34 a6 28 39 e6 21 12 45 d2 7a 0d eb b1 -b0 29 1a 32 8e 52 a2 61 34 ec 12 42 b4 0f bd c1 - -# Prime exponent 2: -b9 b1 c6 13 2e e1 22 6e 6d 10 4e 99 72 5f 0b 38 -35 ab 15 e5 91 6a d1 85 be ad 9f 72 ed 95 3f 7a -bf c5 52 5c ad 75 c2 80 d2 54 28 94 b2 65 b8 65 -3a 2d b7 75 33 6d fb e6 47 27 ed 57 ae a3 74 f7 - -# Coefficient: -7b 8d 15 a5 dd 28 90 a6 7d 1b 54 9c 93 5f 58 5a -38 da 56 f7 c8 15 5a 51 9d c8 f1 f6 ad e5 53 d6 -37 93 c7 8a 0e ce 8d 53 72 4e 62 ae 50 3a d5 25 -bf af 10 cf 61 6a 47 73 ce 7c cd 5c 1b 31 51 bd - -# PKCS#1 v1.5 signing of 20 random messages -# ------------------------------------------------------- - -# PKCS#1 v1.5 Signature Example 2.1 - -# ----------------- - -# Message to be signed: -e1 c0 f9 8d 53 f8 f8 b1 41 90 57 d5 b9 b1 0b 07 -fe ea ec 32 c0 46 3a 4d 68 38 2f 53 1b a1 d6 cf -e4 ed 38 a2 69 4a 34 b9 c8 05 ad f0 72 ff bc eb -e2 1d 8d 4b 5c 0e 8c 33 45 2d d8 f9 c9 bf 45 d1 -e6 33 75 11 33 58 82 29 d2 93 c6 49 6b 7c 98 3c -2c 72 bd 21 d3 39 27 2d 78 28 b0 d0 9d 01 0b ba -d3 18 d9 98 f7 04 79 67 33 8a ce fd 01 e8 74 ac -e5 f8 6d 2a 60 f3 b3 ca e1 3f c5 c6 65 08 cf b7 -23 78 fd d6 c8 de 24 97 65 10 3c e8 fe 7c d3 3a -d0 ef 16 86 fe b2 5e 6a 35 fb 64 e0 96 a4 - -# Signature: -64 ac 09 39 71 f8 f0 96 a4 c1 d4 a5 43 66 2a 2e -5a 12 81 c9 50 98 7d e8 98 70 7f 02 9c 15 9b d8 -32 ca c5 5d 91 36 e0 e9 b4 a8 0b f6 f2 1b 68 cf -97 70 a6 34 9a e5 1e 7f 09 db da 9d 59 c4 58 37 -37 47 2d 4d 65 32 c7 17 7e e9 81 08 d2 cf 42 cd -08 5a bb 49 22 eb 29 d9 6f 3d 0f 6b 1d 0d 43 c7 -39 cc f1 ba 65 16 75 e1 96 8b 50 7d 51 90 2f 38 -cd ec 0b 61 32 72 90 45 32 5f c1 fb 8f d5 58 e8 - -# PKCS#1 v1.5 Signature Example 2.2 - -# ----------------- - -# Message to be signed: -c1 11 46 4e 00 2e 4e c6 18 a8 e2 63 db cc a9 1f -b1 8a 00 a1 8b 44 0c 4b 55 97 be e7 db 2a ed a8 -31 e6 21 fc ac 8d d8 1c ee 35 03 24 2b 33 b0 da -a9 87 fe 2f 54 93 ad 2d 06 a1 50 07 59 00 40 ce -3c 22 77 64 2f d2 7f 3f 25 5e 3d 98 d8 9d fa eb -86 be 34 e0 b8 fb b9 35 fb 92 85 60 fa 29 2d 26 -34 62 5a 50 7d d5 80 a8 91 24 b9 21 29 3e 8d fe -dd c2 81 d7 9e b3 a5 69 d5 9e 0d b8 01 3e 53 f7 -d4 c2 f9 6e 5f 2e c2 7f d8 dd b0 18 25 d1 7f ca -40 6d aa 62 24 c7 60 6d 2c 91 52 82 09 6a 78 05 -5a 49 62 15 37 b4 f0 25 a6 e5 b2 12 9b c8 c1 a4 -07 - -# Signature: -6e 7e aa d8 04 94 5e b0 46 70 dd 86 76 b7 05 7d -03 ac 3e 22 64 65 b1 fb 84 03 e6 ae 79 83 e0 a4 -6a 89 a4 eb 32 bd c8 e7 ae 5a 53 d4 8a a6 4b c9 -c3 db c8 cf 9c d6 dc 6a 68 fc ea e9 e2 9f 47 45 -fa 49 e1 8d 18 4d c5 d2 6c 4f eb 35 1f b4 b2 28 -c4 c1 8c ab db de 86 01 72 4a e3 80 3d b3 05 f2 -a0 76 fa 8a 57 f4 61 0b 8a 6e 0e d4 35 75 be 5d -5b fc 16 30 47 9d f3 bc bc 51 51 77 af e4 99 4a - -# PKCS#1 v1.5 Signature Example 2.3 - -# ----------------- - -# Message to be signed: -29 b8 5b 14 b2 da 94 7a 4c 3a d1 e5 93 7d a1 92 -c6 05 08 65 af 95 04 a5 44 53 70 e4 3d 3a 8d a5 -d3 55 fd 58 76 6b 25 43 ac 6f 93 10 87 83 c1 3f -f2 8b 2b e5 60 83 f0 29 82 39 e0 ee 96 81 ee 47 -c6 - -# Signature: -80 b3 8c e7 35 12 6c 85 45 d9 1d 18 ec 90 37 65 -4d 46 e4 f3 c5 1a 6b 86 18 e1 5f 72 cd 20 75 00 -a4 70 01 75 77 d0 a8 c5 5a 2b a3 34 38 3f 1f 8d -99 fc e2 46 0b 32 97 bc 03 7e f6 4a c4 a3 09 8c -6a aa 24 a4 d0 14 4a f1 02 d0 dd a1 7e 07 dc 69 -59 23 93 2e 56 8a da 00 dc 4f 7d bf bc de c4 3c -c9 08 38 80 17 d2 ee f0 4e 60 df e4 d5 73 40 fa -b9 16 e2 b8 11 24 4c b1 e4 a5 52 38 6f e3 ed 4c - -# PKCS#1 v1.5 Signature Example 2.4 - -# ----------------- - -# Message to be signed: -d3 b7 aa d3 7a 48 90 e0 36 5b 86 c7 da 94 91 e7 -3c df 55 5d 1b 02 b4 51 81 6d c5 2f 96 30 d5 90 -de 83 a5 c9 39 61 01 25 22 df f6 db bb 9c db 0e -71 ae 51 40 19 64 af 18 90 e8 93 25 db d6 26 f2 -da 01 34 58 e3 9e ec a5 83 e8 9e 4c 08 e5 d4 12 -be 49 84 95 88 6e 05 51 cf e7 42 b8 b5 - -# Signature: -9d 8a 88 89 a3 11 b4 86 cb e2 22 57 03 f5 d4 ae -2a 54 c2 bc aa ad 06 fe 76 48 b9 e2 d8 5e dd a1 -a0 7d 85 6d 6a e9 bd 5c c1 e5 15 32 66 ec 7f 1e -1d f3 d9 29 cc 44 70 0f ac 92 64 58 41 4c 28 41 -da 83 32 8e 81 e0 b9 d6 c3 88 5e 76 73 70 ad 5c -f1 f5 76 d9 dc e3 48 ca ec 5e 64 43 e0 ae b7 c3 -f7 2b 7d d2 53 66 70 23 b9 a4 77 ab 34 df 8f 20 -67 e2 25 ad cb 73 ee 11 e1 59 eb 64 91 47 d6 02 - -# PKCS#1 v1.5 Signature Example 2.5 - -# ----------------- - -# Message to be signed: -f6 58 18 8c 8f 9d e6 0b 5e 99 a2 9f 52 d3 b8 89 -20 1b 30 d4 64 c3 b7 27 92 a3 02 09 5d c1 e7 7d -45 e9 4f 5d ab 73 db b3 13 54 38 57 ff 91 db f4 -73 df c1 45 d7 3b d5 06 20 75 d1 92 a3 fb f4 a1 -33 e7 e5 68 df 20 b8 cf f7 7b 3a f6 87 aa 22 55 -9e c1 - -# Signature: -0a 95 a4 4f 62 74 e7 4c ec 45 17 96 af 56 88 d4 -be 01 08 93 fa ae 27 d4 90 f4 77 1b 00 3f 70 46 -cc cd 41 9f c8 19 d7 33 19 55 f4 1e ac 93 39 f5 -46 c5 84 a8 b4 2a 5a c6 32 90 58 3f f3 eb 6b 29 -ca dc 75 4a e5 8d 5a 56 37 b6 60 97 96 e8 05 51 -73 ff 20 a9 cc e4 92 fd 78 37 46 86 15 e8 41 08 -87 f0 b4 a5 9f f2 52 a8 25 97 76 c8 ff da a6 7c -87 df f8 98 3a e6 79 d1 de 22 ea 15 8d 48 f6 8b - -# PKCS#1 v1.5 Signature Example 2.6 - -# ----------------- - -# Message to be signed: -31 ae 5f 83 a0 fb 3a c9 25 5f fa 43 5f 70 e2 ab -65 55 66 e5 fb 8b 78 b8 02 c1 87 cf f1 c5 e4 0f -ed 06 97 8c 5d 59 76 eb 4c a7 75 80 63 99 a6 fc -4d b5 0c 1f 88 66 1b a6 8a bc 21 fb 2c cd 53 7f -50 18 f3 6e d1 f7 d4 53 83 fd 46 9e 77 ba b3 e8 -a9 5d fa 1b 94 1e 43 0d de c5 52 dc d8 2f 5d 10 -d2 9c d1 0a 22 d1 7c e2 42 59 28 ff 5d 07 10 dc -e7 d9 f8 3b 12 e0 4c 1a 01 59 c2 71 76 e0 4a cc - -# Signature: -3f 11 ea 73 9f 32 9c 9d 40 04 60 34 b6 c0 cf ce -b4 9b c3 20 1a 5f 25 ea f5 01 5a ed ed 02 18 9c -e0 b0 cf de 19 12 5b d2 88 b7 d0 c0 62 32 1a 5b -dc 2c fa 42 26 f5 10 4a 1f ba eb be 7f 72 f5 f7 -92 7e 1e ae 26 fd c5 ba 92 f2 d3 f8 69 eb c3 2d -90 18 dd 04 ed e8 6d e5 c4 54 f1 f7 a1 b2 e2 d1 -94 0a ac ae 27 79 63 55 fe 18 ac 80 97 53 53 92 -9a c6 a8 38 45 8b 5d 9d c7 57 6e 38 87 ee 7b ca - -# PKCS#1 v1.5 Signature Example 2.7 - -# ----------------- - -# Message to be signed: -96 ff 99 f1 50 60 c9 73 a6 5b 69 a8 b5 b6 3a db -33 25 32 0d a9 37 29 75 84 ad 4f ad 5c 3c 74 69 -01 9e 9c f7 2a cb 31 5f 1e 49 19 27 bb a1 94 87 -55 82 3e b0 7e 3f 20 ac df 78 65 3c ae 45 0e 47 -bc 54 ba f8 ca 11 67 a5 05 08 44 e0 22 22 0e e6 -65 8a 8d dd 95 63 2e 9a dc 1a 6c 14 37 9c 1c 5a -e5 a0 ce 5d c4 02 08 09 62 2a fd ec f8 1f 18 a5 -1e 28 66 6d 02 b1 dc da 0a 27 b8 c3 d2 c2 7b 2c -07 b3 80 22 00 01 7a 7c 12 4a 43 37 cc 4b 6e a2 -ae a7 5c 68 b4 40 e3 79 47 e3 61 9b cf ee 05 5b -b2 ed ab c4 24 49 07 e0 48 3d d3 a1 7d 8e df f3 -a6 50 29 3f d4 ab f5 c4 5d 1a 5b 6c 54 02 ba 2b -81 b7 b0 e0 c9 5e e9 49 b2 a2 38 c1 99 56 20 6c -12 4e 0c d9 c2 46 20 b3 6a 83 bf 93 b9 6e f2 04 -bd e5 31 6c 1f 53 27 c0 a6 21 ec ce 20 93 c0 65 -2d df 32 17 68 d7 45 02 f1 90 85 29 62 9b ab 68 - -# Signature: -18 3f 85 3d 0d 03 62 18 70 e3 ba 58 68 50 c5 ea -59 fc 4e 9a cf 37 94 b9 ad 59 a1 bb 80 18 1e 77 -b1 11 d6 64 86 47 e1 39 a3 9e c0 4f 86 18 74 91 -e7 7b 4d 75 c0 60 79 5b f7 27 08 46 d3 96 e0 bf -ea 83 15 79 5e 79 d7 6a 91 9e a7 6b 06 ee c1 3b -af 4c e8 af e1 e3 4b c2 24 57 d7 b7 99 2e 08 42 -ef ad e1 79 b0 ae da cc fb e2 d2 3d 3e b3 14 e1 -de 91 c8 71 b9 db 5a bf fb 17 47 7f ba 23 3a 06 - -# PKCS#1 v1.5 Signature Example 2.8 - -# ----------------- - -# Message to be signed: -3a 17 6c 79 3a 54 6e 2d 27 6f b8 ff c3 28 16 3b -49 49 97 a5 30 2a ae 2e 50 45 a2 a2 06 87 ea 6d -1f 18 1c 6a bf e6 09 0c 8d c4 02 56 db 3d e0 83 -22 64 7f b7 95 bb a1 71 3f b5 7e 33 d5 3e 0e 13 -be da c6 a6 58 ad 4a b4 91 22 38 81 19 8d f2 93 -67 fa ad e8 be 9f ca a4 e4 83 f7 b7 f3 dc 7c bb -f9 7a 17 aa d8 8c 26 cf c6 41 0f 94 5b 54 fc 53 -db 55 ac 80 3d 8b 73 69 1b 14 84 84 7d 7f 3b 7e -93 94 e5 5f 0a 51 fe 61 ae 84 52 3c 94 b2 2e 82 -39 6d b6 cf ac b7 2e 0e e4 94 aa 0f 1f a5 93 12 -54 43 ae 15 55 a6 a9 33 fa ce 00 74 79 1d c2 c2 -92 42 eb - -# Signature: -41 3c 92 23 a2 e9 b1 22 cd 87 25 77 e5 2f 31 3d -41 da c7 9a 26 cb 10 33 da 0b 6f cc 4b 48 21 07 -74 4b f4 90 fa 79 8d cc d0 cb d1 18 ef 39 c0 f5 -59 d8 7b 89 33 5d b0 9b e7 70 0f b0 9f db d3 40 -40 a0 0b e5 ca 42 88 34 77 b0 6e 4e 10 a7 cb 11 -76 8f cb 02 c3 4f b1 06 e5 22 86 0d 10 69 39 06 -26 0f 43 d9 06 12 99 03 93 a8 ff ac 9f d7 0c a3 -78 29 11 1e eb a6 f3 de e5 4e f1 c1 62 68 b3 3e - -# PKCS#1 v1.5 Signature Example 2.9 - -# ----------------- - -# Message to be signed: -06 8a 99 1b 32 b6 76 c6 4b 89 8c 67 e1 13 72 82 -b4 37 11 b0 d0 67 1c 24 7d 9f 7c 48 f5 04 3e 4f -c2 06 dc 65 af 89 06 f2 52 f0 24 52 05 ea 08 43 -23 d4 27 6b e5 aa 0f c5 af 9c 3f 34 b2 fd 66 34 -df 57 2f c3 13 d2 73 b5 3e 9e 36 b9 46 e7 e6 72 -f9 8d 85 7d 7e dd d3 dd 04 39 31 32 f4 61 f2 2c -99 00 26 16 6f 38 5b e1 59 5c 7f 23 f8 9f f5 7e -05 a7 be 28 5d 10 56 15 48 5f 35 6a ba b1 ff 2a -b9 27 d6 09 95 2a 62 7e 46 8c a7 59 0a cb 52 13 -f4 31 39 f8 e2 c9 d4 d1 7c 6b d7 91 4e 53 f0 2f -d1 9a 13 1f f4 9c d2 5e de 8f 41 8a 88 53 0a 82 -39 88 7f 0f c7 97 ed b5 04 64 79 64 bf 31 ca af -08 0d 58 17 a0 - -# Signature: -57 5d a9 e9 be fc a1 82 95 46 e8 29 38 15 00 11 -32 03 0e 74 9c a5 10 88 f1 68 bd 15 0b 13 94 c7 -ac d5 97 8b ca 03 f7 b9 d9 2a 29 b8 e2 85 6b 0d -a0 7f 0b b1 5c 0b 33 e0 54 87 99 1a d9 7a 81 2d -c9 04 aa f0 fd 1e 38 7e f1 c2 70 c6 86 8d 3e e1 -c6 11 57 7b c4 d0 7f f4 56 b2 43 98 32 90 8a 3d -cc 4f c0 99 04 72 fd a3 cc 61 11 93 0b 99 79 5d -60 c0 e3 78 88 e8 7c e0 0b bf 3c 1c f3 07 f9 e1 - -# PKCS#1 v1.5 Signature Example 2.10 - -# ----------------- - -# Message to be signed: -d6 83 9e e6 d0 74 50 32 7e 09 a0 3e 1e c2 80 e1 -c8 d1 15 00 dc 39 0a 49 a9 c9 82 87 49 c3 e9 a4 -be e2 ba 57 6f 6d 12 17 a8 e7 85 4a 90 7e eb 93 -df ff 92 30 8a d0 d9 4e 2b 38 1f 92 b0 e8 4a 47 -1b f1 f3 7a 68 e9 65 f6 58 59 d1 fd fd 6f ea 84 -40 79 c4 03 70 dc ea e2 - -# Signature: -a7 c5 f6 d0 de 9c f8 f4 17 37 f2 3a e3 e8 cf 60 -9a eb cf 22 d5 de 12 13 d9 57 3c b9 44 03 f8 9c -0f 70 88 ff fc 61 10 6f a6 09 c7 37 1a 8d 7e 1b -cd 22 1b c1 ad 94 91 2f ab f2 ff c0 2f 84 84 56 -4c 22 5c 06 9b fc 6d a9 f3 f9 f4 97 4e 08 e1 fe -56 f7 48 ff 79 05 97 90 6a 95 4e 38 37 43 a3 7e -57 5f ef 07 4f 06 0f 3d d1 5b 5e e0 f9 4d ba 69 -d8 6c 99 22 3f a9 c3 a6 1a 8c b2 af 2f ab 1e 04 - -# PKCS#1 v1.5 Signature Example 2.11 - -# ----------------- - -# Message to be signed: -33 84 9c 67 df 9a 6f fa c3 da 90 a8 cd 31 73 1a -02 97 b9 d6 01 0a 03 32 0f 88 45 03 5f c3 43 09 -ad - -# Signature: -1b 87 05 1f 15 91 c8 ae 7e e3 cb 24 26 70 39 a7 -28 40 5d bf 23 1c af 21 f3 24 7f 05 85 8b 2a 51 -65 0b 81 bc 53 77 86 5e 4c 1e 8f d0 36 41 52 a1 -6b c5 8f 7d 2a c0 1c a6 79 cc 49 dd 04 89 03 d5 -5a d0 5f 10 2c 74 b3 60 1f 25 ad 30 62 40 25 c3 -0b 6f 0f 79 11 fc 22 45 8e 5d 43 5f 38 8e 3f bc -49 5f a0 c6 10 c1 29 8f 82 1d a5 38 40 3a 93 36 -4d 2e ab f1 e3 b3 2f 81 10 a7 e0 3e 37 2e cb c5 - -# PKCS#1 v1.5 Signature Example 2.12 - -# ----------------- - -# Message to be signed: -b3 da ba ca 20 59 a7 0e 25 cb dd f4 aa 59 25 99 -57 54 ac e4 3c 5d 60 36 40 48 9a f4 8f ea 6e dc -4e 19 cb ee a2 c0 db 62 ae 0a 10 4c 72 e4 cd 56 -cb 53 2f 4f e5 77 b3 6a 81 98 b4 87 9d 7f f8 04 -26 90 f6 62 77 3f 3d 63 93 f2 58 98 d2 - -# Signature: -26 f1 37 70 26 3f c5 bd be ad f8 8f b4 dd 30 7a -38 95 9b 16 f3 df 94 6a de 86 4b 1e 7e 91 4d 36 -4e bf 9a df d8 6a 70 02 2d c6 1b 43 fb 1f df 86 -96 97 8e 2d 1f 6a 2d ef ee 75 ad aa 69 a3 95 32 -07 40 50 be 70 8e af 03 1d 5f ae 0f fe 24 5b a4 -ff 3c 5e 34 0a f5 df ec 6a 4c ce 0e 18 87 6c fc -13 66 ee ed df ce 0f 83 5b 38 e8 18 81 b1 fc 58 -32 93 0f c7 9b 08 f1 fb 34 fb 22 42 33 f4 c4 68 - -# PKCS#1 v1.5 Signature Example 2.13 - -# ----------------- - -# Message to be signed: -09 91 12 fa e7 40 88 8c ea ac 70 54 d5 97 35 1d -79 e1 59 a9 58 d8 12 15 78 e5 2c 83 7d b3 54 3c -fa 6f 8e 7f 1d bd 2a 61 97 86 45 a4 d3 85 b9 bb -1c 60 bf b1 1b b3 c8 75 2a e3 1f 99 6d bb 52 62 -8f 93 d5 26 94 f1 82 e6 90 35 a5 e5 57 ec 71 82 -62 f4 03 df 52 11 f7 3c 6d e0 d5 5a 0b a7 - -# Signature: -8d 8c 8f 3a 86 f4 9e db d1 25 c8 3e bf 6d 52 e7 -65 16 15 01 48 21 54 59 8c 28 3a be 94 02 77 87 -2b 00 d0 77 7c 2e 69 7b 78 83 cc 32 1e 15 1c 80 -11 6f 9f cd 17 7a c4 c7 de dd f0 3c a1 b2 c5 93 -31 dc 1c 8e 94 7f 1e b2 aa ee 8c c9 41 dd c5 f3 -74 a6 3d 6c 99 38 ec d8 e8 8c bc ec 58 92 9c ff -dd ef 0b a2 17 58 85 a8 0d c4 cd 92 d6 b7 9d 9c -6a 81 69 6e 16 f9 a8 3a 10 ca 8e fa f1 97 5f 55 - -# PKCS#1 v1.5 Signature Example 2.14 - -# ----------------- - -# Message to be signed: -aa 17 e6 bb d6 db 19 e5 4b ee 1a 7f 0e dc ca ce -ab 63 5d 76 28 fc aa 18 ec fa fc 40 1c b3 fe b5 -1f 9a 37 31 f3 80 2c be a8 1c 73 30 28 c9 58 4b -6b 78 e2 05 59 54 cf 91 04 da a6 77 aa 40 be 9b -7c 65 b0 7a c4 a8 bf 25 c1 14 9e 05 47 35 cf 3c -e3 32 d4 29 bc 73 80 24 45 df b3 68 8b b8 19 48 -b5 7e 27 6a f3 24 62 f7 ad 80 4d 50 c9 3b c7 e9 -ef 75 37 69 5a 27 1a f7 2e 4b d4 7c e5 fa 9d 62 -f2 da c0 33 36 23 f4 9e b9 d6 d7 80 34 ed 1d f6 -e1 2b fd 04 26 1b be 5c e0 40 e0 3e be 25 8d 2d -05 2a 12 ad 4e 3b f2 53 04 23 01 c7 64 58 ed 91 -0c 5f fa 70 5c 74 7a d8 ca 0c 1c 62 28 da 2c 97 -e1 38 - -# Signature: -64 4e a0 76 21 4d bd dd 30 05 5d 7c 56 18 92 27 -9b 46 ba b1 e1 22 53 42 4c 28 f4 49 e1 72 64 6a -f3 49 8c 7a fc bf f7 68 e0 46 a7 c2 e3 d9 c0 e7 -12 8f 87 7b 92 19 5a a2 bb 9f 1c fb df d1 5b b6 -5f bd 23 ef b2 94 fb b1 1a 3c 66 05 6d 60 63 85 -3b b2 3c 27 46 65 a1 3e f4 f3 c1 2f 59 21 a4 19 -e9 49 b3 0c 0b c0 d7 7d 6b 28 69 1d 23 64 d9 5b -f6 8b e8 d5 97 8e f1 bc 98 52 a4 f0 66 04 47 4a - -# PKCS#1 v1.5 Signature Example 2.15 - -# ----------------- - -# Message to be signed: -28 24 9c 38 7a 06 14 40 e9 86 38 e1 ed 78 a4 86 -51 30 e5 75 33 d7 89 10 8c 63 e1 5f d8 01 9b ad -2c d1 a7 55 2b d8 af d2 06 d9 78 eb 1f 2c f3 f2 -3a fc 4b 34 e6 dd 7f 69 c1 fd f4 fe c2 52 68 d1 -86 55 51 94 49 22 90 6d ce 6d c4 41 f9 4a 46 6b -f8 39 1a d8 2b f5 94 0e 44 71 10 f1 d1 5d e1 29 -31 29 fb 44 24 a1 71 75 19 d6 d4 28 d6 6b 7a 10 -91 42 ac c9 15 f1 ea c9 6d ef 2c 32 90 b0 1d 05 -99 0b f8 02 3a 6a 64 71 2f 63 13 7a 8e - -# Signature: -57 02 06 06 69 ed 47 bb ca 11 b9 16 68 28 9e a3 -f5 e7 46 ad 2e 38 6d d1 bc 2a 8b ab 17 46 ba 2a -64 bf 15 b3 fc 2e c8 b0 cc 99 d8 54 fa 32 11 c9 -55 c4 55 d7 ff 2e 1e e2 39 f5 4f 38 6a 42 bb 25 -40 a8 75 8f 32 97 e5 52 de 1e be 8e ac 70 f3 54 -87 94 2b ba da d5 bd 95 73 90 ff 17 93 af 3d 30 -d9 36 b6 f7 9b 44 a9 b6 3c ee 62 d5 58 4d a3 a1 -fc ff a5 b6 fe ee c1 1c d6 3b 18 0f 0b fc 5b 6b - -# PKCS#1 v1.5 Signature Example 2.16 - -# ----------------- - -# Message to be signed: -e4 91 a1 56 fd ba 31 6a 2a 20 a1 2e ea 50 be 77 -4e c9 aa be b1 c3 98 e9 08 be a3 29 68 21 7e a4 -1e 96 6d b7 27 2f 0e fa 37 c9 0a e4 e9 f3 86 21 -a6 27 a9 d1 2c 8b 4e 80 60 c5 45 c5 60 59 e9 e4 -8a 7f 16 81 36 72 47 33 58 19 ba 12 7e 65 93 1e -1d 9f b7 0d fd df 4c 99 56 a5 b0 4c 52 bc f8 cb -df cd f2 29 19 64 da fa ca 7e e7 0e 80 a2 75 9c -ec 73 5d 01 ac a8 ff 89 4b 68 9b 93 78 3d a8 93 -9c 62 09 dd 68 3c 60 - -# Signature: -9f 20 5b a9 0d f2 d4 01 49 26 48 1f 9b 3f 45 a8 -9d 23 ec d8 4f 5f 16 e6 73 34 c4 ca f3 f3 b9 c2 -01 a7 98 d4 ee c5 62 76 59 88 23 18 0e 07 8d 0a -ef 4f 8f ba 0b 25 c1 fd a3 e3 36 54 c4 74 a9 c1 -1a 23 b0 87 10 91 3d ff 76 56 f0 e7 ee 22 cc 44 -c9 99 c0 95 a6 51 4a 9d 2f c0 ca 4e f2 08 de 0d -92 93 b0 c5 60 8b ae d1 07 4a 0c fd 57 b9 9e f8 -ce ab fd 34 72 b7 db 3a b9 60 6d 13 f9 bb 43 9a - -# PKCS#1 v1.5 Signature Example 2.17 - -# ----------------- - -# Message to be signed: -06 ad d7 5a b6 89 de 06 77 44 e6 9a 2e bd 4b 90 -fa 93 83 00 3c d0 5f f5 36 cb f2 94 cd 21 5f 09 -23 b7 fc 90 04 f0 aa 18 52 71 a1 d0 06 1f d0 e9 -77 7a d1 ec 0c 71 59 1f 57 8b f7 b8 e5 a1 - -# Signature: -45 14 21 0e 54 1d 5b ad 7d d6 0a e5 49 b9 43 ac -c4 4f 21 39 0d f5 b6 13 18 45 5a 17 61 0d f5 b7 -4d 84 ae d2 32 f1 7e 59 d9 1d d2 65 99 22 f8 12 -db d4 96 81 69 03 84 b9 54 e9 ad fb 9b 1a 96 8c -0c bf f7 63 ec ee d6 27 50 c5 91 64 b5 e0 80 a8 -fe f3 d5 5b fe 2a cf ad 27 52 a6 a8 45 9f a1 fa -b4 9a d3 78 c6 96 4b 23 ee 97 fd 10 34 61 0c 5c -c1 4c 61 e0 eb fb 17 11 f8 ad e9 6f e6 55 7b 38 - -# PKCS#1 v1.5 Signature Example 2.18 - -# ----------------- - -# Message to be signed: -31 1c 88 80 05 35 d1 b4 e9 bc 78 65 18 31 a3 e9 -67 e7 4b 58 28 e0 14 11 5f be 5f 60 9c e8 65 fe -d2 41 97 0f 87 2e c8 f2 3d c2 bf 61 6b 80 20 e4 -45 64 f9 34 dc bf 72 38 61 70 07 4d 92 0b a8 95 -d3 3d df 27 93 69 f2 36 a1 9a cd 4f eb 2b - -# Signature: -89 46 63 e6 3e c1 9f 56 20 3f 4a 44 6b 5e 2b 51 -74 c8 14 a5 4c be a2 c8 e2 98 f9 9b 34 c4 bb c2 -c8 b1 77 ba 98 57 d8 1c 85 44 36 bd 99 af 58 c0 -9d de 5a ca d2 d6 41 50 43 fb 40 e7 84 75 ef 74 -01 2e 4d 4f 75 b2 e9 58 85 c8 51 a2 3b 4a 25 54 -93 f3 0c 17 2e ae 01 d4 79 10 fa bd 26 9f 57 94 -0b a4 43 50 6c 05 22 bf 72 8a 25 7a c1 07 3b df -99 b4 29 56 db 00 2a 30 a5 4d bd af 28 4d 8f 69 - -# PKCS#1 v1.5 Signature Example 2.19 - -# ----------------- - -# Message to be signed: -b2 65 a9 77 7f aa f1 58 a8 08 aa e7 08 5a 83 e7 -07 9c ef 80 d5 fc 9d 7c dc 96 3e c9 - -# Signature: -28 1e 88 ce 19 0e 98 62 90 34 36 a8 6b a4 37 27 -16 44 9c c0 ce 8d 55 4f 70 2d 72 52 a0 67 60 af -42 12 1d d0 9b f6 ea 13 f0 eb 25 2e cc 76 42 10 -61 f5 74 4b d8 e3 2c 5a 8c 4f c1 f9 52 1b 3f 5c -29 14 6d d0 59 12 91 ac bd c5 b6 3b 55 1d 22 8a -e5 38 95 b1 97 e6 e2 7a 70 68 aa 31 03 b7 0c fb -30 f4 15 84 5c 7e 52 87 f1 11 4e 4c df b4 01 ed -51 98 64 cf 61 bc 46 9c 66 69 9b 29 60 a0 af f2 - -# PKCS#1 v1.5 Signature Example 2.20 - -# ----------------- - -# Message to be signed: -7c 43 9e 7a b9 90 cd ef 95 6c 42 39 47 9b 49 da -84 2f 8b 76 76 5a 7a d4 89 7b c1 6c 61 ed 3d 09 -80 5d 76 e8 a5 be 8b 57 8b 95 1f 45 45 df 92 a8 -a5 37 ba 3e 2c 13 dc e0 a0 03 e7 b6 24 9e 32 be -94 1f 21 cd a7 25 b8 04 07 be 1e 28 bb 9e 39 37 -38 32 53 56 ec 21 74 1d 5c 86 f3 c2 b4 f7 b9 47 -af d5 6b 2d 3a ec - -# Signature: -6a fa d7 7a 05 6d 07 29 05 86 e9 13 80 9a 04 37 -d3 9a b3 07 32 45 12 b2 f5 bc 2b af 58 0b f4 55 -43 eb 04 ff 83 e9 63 a6 d7 f3 3e 9d ff c1 fc f4 -24 48 c5 fc fa 47 27 19 c6 51 f8 1f 3c 62 22 98 -3d 38 91 7e 29 b4 84 85 87 9c eb b0 a6 1d 38 9e -23 8c 9c 71 c3 68 ed e4 08 3a 94 62 97 f7 19 0b -4c ef 86 7e 9c cd a8 f9 ff c6 19 84 fc f0 5d 4f -ba fe 10 7d ac f5 b1 dc 8e 2b 14 95 b2 44 f8 e7 - -# ============================================= - -# Example 3: A 1024-bit RSA key pair -# ----------------------------------- - - -# Public key -# ---------- - -# Modulus: -b5 d7 07 b7 92 e0 56 f7 2f d7 6d 8d a8 89 a5 3c -e4 d8 eb aa 08 2a ee b2 30 32 e3 c5 d8 eb c4 c1 -55 61 31 9b e8 df e1 88 99 1a 89 51 d4 b2 3a 51 -e8 a9 38 2c 80 5e 4c fd 49 0e bb ce aa 20 80 2a -d6 83 b0 5a 10 0f 29 98 5f 01 1c 3c 8a 44 26 25 -52 d8 3d 9a 1b 7c 27 31 5e 14 4a d8 df 5c be 8b -c6 40 0f d9 cb e7 6b 74 21 d7 08 aa 64 f0 40 ba -e0 7b 7b d6 f9 22 18 f9 a7 29 28 4c c5 98 cd d1 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -b5 d7 07 b7 92 e0 56 f7 2f d7 6d 8d a8 89 a5 3c -e4 d8 eb aa 08 2a ee b2 30 32 e3 c5 d8 eb c4 c1 -55 61 31 9b e8 df e1 88 99 1a 89 51 d4 b2 3a 51 -e8 a9 38 2c 80 5e 4c fd 49 0e bb ce aa 20 80 2a -d6 83 b0 5a 10 0f 29 98 5f 01 1c 3c 8a 44 26 25 -52 d8 3d 9a 1b 7c 27 31 5e 14 4a d8 df 5c be 8b -c6 40 0f d9 cb e7 6b 74 21 d7 08 aa 64 f0 40 ba -e0 7b 7b d6 f9 22 18 f9 a7 29 28 4c c5 98 cd d1 - -# Public exponent: -01 00 01 - -# Exponent: -45 17 92 b5 94 47 cc 93 78 a8 a4 d6 45 fb 22 ff -4b bf 06 70 61 51 1a c8 36 db 27 43 a6 24 13 6b -18 6b 69 43 a1 cc eb 6f 91 29 0d 93 3b bb 8a c0 -53 a4 74 95 28 23 6c a2 72 cf 77 d9 d3 37 ad 2a -b3 6a 87 a9 15 3c 5e 16 71 6e 09 ba 0b ea a6 4b -31 25 26 d4 a8 c2 dc 68 fe 09 e3 7e 50 74 a0 90 -9d 3f 04 ab 73 90 8a 98 0d ec 1d a7 eb 45 05 a4 -8b ca d3 b6 0d 01 60 84 58 64 a6 51 1f f5 59 a7 - -# Prime 1: -ff a9 f8 e8 b0 82 17 0b 63 73 f0 0d 73 c4 23 86 -d4 02 f2 80 8b 39 3b 32 f7 8f 86 ea f6 4b 21 bf -dd 33 4f b9 aa d1 6b a6 d9 da db c8 94 3a 29 e6 -63 c8 b3 9c 09 59 69 02 5b b9 b2 d9 d6 fe 67 b7 - -# Prime 2: -b6 14 37 8d 5e 3d a5 a8 0a 6d 73 52 fc 66 a5 64 -59 7b 06 8f c9 d3 af 5d b0 e4 e7 35 be f8 81 dd -40 17 ee 70 82 96 19 0b 6f dc 84 04 f0 7b d9 dc -5c d5 d2 be 48 86 a7 cb bc b2 1d 8c 3d 64 a6 b7 - -# Prime exponent 1: -51 0e 68 96 0d 70 11 32 51 23 ae d5 f5 00 18 6b -64 c8 52 6e 22 b5 d0 69 06 48 00 f4 79 85 b4 7b -89 fb fc a8 d6 d9 72 92 01 bb fb b6 8a 18 2e b4 -96 aa 49 17 8d 77 45 6d b3 fb 1a 13 2a b0 99 dd - -# Prime exponent 2: -57 eb bf 3f 76 48 52 5b a8 5d 5d 98 ae e4 69 ec -e1 00 75 14 ad a2 98 45 a7 8b 80 d2 05 1b 3e aa -35 ae d8 a6 5f 88 57 23 9c aa 60 dd 79 ba 74 62 -e2 39 26 00 58 49 1d 71 55 f6 b4 29 e9 e3 56 55 - -# Coefficient: -ee 10 7d c7 ef ec e9 a6 5c 0e 87 78 9a f5 59 0c -93 83 9d fe 82 85 20 da 17 74 ff 80 f7 e5 14 55 -7f ff 10 bd 8c ae 18 46 ef ee 7c 10 d7 a1 2c 4a -05 5c c1 36 e4 a4 ef 25 fd 3e d9 d0 cd df 74 f9 - -# PKCS#1 v1.5 signing of 20 random messages -# ------------------------------------------------------- - -# PKCS#1 v1.5 Signature Example 3.1 - -# ----------------- - -# Message to be signed: -98 6e 7c 43 db b6 71 bd 41 b9 a7 f4 b6 af c8 0e -80 5f 24 23 48 8f b4 31 f5 ee 79 2b 6c 2a c7 db -53 cc 42 86 55 ae b3 2d 03 f4 e8 89 c5 c2 5d e6 -83 c4 61 b5 3a cf 89 f9 f8 d3 aa bd f6 b9 f0 c2 -a1 de 12 e1 5b 49 ed b3 91 9a 65 2f e9 49 1c 25 -a7 fc - -# Signature: -62 75 e8 73 97 e3 09 2a ab 36 98 bb 1b 5c f2 4b -8c d7 71 2b ec ac 35 e3 22 03 d5 43 14 e5 47 0e -a9 aa bc 86 57 f5 64 34 e5 af 9f ae 77 8f f6 04 -5c 20 e2 e1 ef 7c bd f8 8f 00 75 f3 3e a9 92 77 -7c b7 e9 2f 7d a1 8a 0f fd 00 aa 46 71 ed 63 91 -1f e9 e9 2f b4 a7 6e 77 dc 6e 0a 91 65 76 71 6c -15 ea ef 08 9a 71 a0 ae a3 5b ed 94 47 a6 c1 7f -2a ad b7 27 fd 42 f0 ac c8 24 62 38 1d 9f a2 ef - -# PKCS#1 v1.5 Signature Example 3.2 - -# ----------------- - -# Message to be signed: -4c 7b 98 12 0c 87 50 90 87 c4 78 - -# Signature: -59 e5 cb e7 33 1b 92 e0 cb 8f 68 9e ae bb 30 f2 -b3 34 a7 46 a6 57 05 59 12 ff 1c 92 76 0b 0b 85 -bc 42 82 f3 18 4b 9a 81 4f 44 37 f8 25 ae 07 d3 -56 ba c6 9e 54 0c 90 94 2c 7f 7e 6f f4 4f e5 74 -f1 21 25 0a d2 30 f4 b5 0c 78 31 1e 4f d3 c9 e2 -65 f5 17 ce 32 97 c3 e1 dd db 5c 86 9c 69 8f 44 -af 52 5e 73 64 01 a8 1b 45 9f 19 8a d1 80 8c cd -92 9d 49 04 74 ca f7 00 5f 91 0d ac de 21 b0 77 - -# PKCS#1 v1.5 Signature Example 3.3 - -# ----------------- - -# Message to be signed: -66 f7 07 54 22 c8 ec 42 16 a9 c4 ff 49 42 7d 48 -3c ae 10 c8 53 4a 41 b2 fd 15 fe e0 69 60 ec 6f -b3 f7 a7 e9 4a 2f 8a 2e 3e 43 dc 4a 40 57 6c 30 -97 ac 95 3b 1d e8 6f 0b 4e d3 6d 64 4f 23 ae 14 -42 55 29 62 24 64 ca 0c bf 0b 17 41 34 72 38 15 -7f ab 59 e4 de 55 24 09 6d 62 ba ec 63 ac 64 50 -32 7e fe c6 29 2f 98 01 9f c6 7a 2a 66 38 56 3e -9b 6e 2d 15 ef d2 37 bb 09 8a 44 3a ee b2 bf 6c -3f 8c 81 b8 c0 1b 7f cb 3f eb b0 de 3f c2 5b 65 -f5 af 96 b1 d5 cc 3b 27 d0 c6 05 30 87 b3 96 80 -e4 92 a4 ab 23 67 47 11 69 e5 28 38 94 5d ba 9d -d7 72 3f 4e 62 4a 05 f7 37 5b 92 7a 87 ab e6 a8 -93 a1 65 8f d4 9f 47 f6 c7 b0 fa 59 6c 65 fa 68 -a2 3f 0a b4 32 96 2d 18 d4 34 3b d6 fd 67 d0 0b -25 b8 1b 09 b5 62 03 85 64 - -# Signature: -59 9e 69 c1 54 e4 fe 66 b3 6a 69 04 92 fa eb b2 -bb e7 34 e0 41 5d 9f 3c f7 e3 78 28 f5 3e 61 13 -04 49 17 3a 33 46 0c 6b 4c 8d c7 d6 81 ca 6f 4d -af 1c b8 16 d4 0a a9 08 2e e1 93 7b e4 bc 6a 09 -c6 de 79 8c 82 86 fc d2 a2 b2 19 6c 59 99 4c 93 -7f 37 13 07 52 61 2c 6b ff 6d bb 53 e0 64 7f 88 -58 bc 38 38 64 02 1e 6d 56 68 19 20 24 92 97 82 -22 46 a0 f5 28 aa b3 ed 18 5e eb ce 91 9c f8 3e - -# PKCS#1 v1.5 Signature Example 3.4 - -# ----------------- - -# Message to be signed: -d9 34 44 28 fa 8a 58 f8 fa 7b 44 3e 51 fc 9b 51 -e3 7a 70 21 0d b8 bd 1d e7 f8 67 5d 84 79 ff 65 -7c a7 29 55 b2 3c 6f 4a 09 16 37 9a 4e de e1 f2 -6c 85 e0 52 90 21 1e eb 25 83 2b 09 cb e5 ea ed -3e 39 65 b0 5a 52 fb 5b 16 49 11 82 c5 91 3c b1 -82 57 48 e8 1a d0 14 f1 3d 29 6d c1 69 57 08 2b -1b 83 b4 be 50 a0 f9 59 c9 e7 f3 aa 80 77 97 2e -2b 93 c2 ef fd 9f 30 86 25 b8 ca 7f 54 d7 b6 96 -48 79 04 47 ac 91 f7 98 5e 51 0d f7 0d 6e bc 35 -72 c2 05 e6 - -# Signature: -2c 06 01 65 fc c5 65 5c 06 57 c8 fe 08 e0 5b dc -8c d7 7c 1f ec b6 d1 8b 89 38 11 c9 9d d0 91 e0 -d8 50 6d cc b4 9e 33 da af f6 da 96 7b 99 e3 44 -cb 17 fa 3c 96 31 29 9b 35 89 81 8b 37 ed 9d 5d -78 94 e4 a6 9d db 24 83 2e 1a 88 60 01 4e e5 e5 -eb 95 3e 8b 35 48 4b a4 fe c9 c3 03 3a e2 e1 18 -9a f7 94 a7 2e 42 67 21 5b fe 45 8f 0f ce 6b 37 -a5 54 9e f8 05 43 d0 d4 1a 87 b2 c6 e4 d8 4c b5 - -# PKCS#1 v1.5 Signature Example 3.5 - -# ----------------- - -# Message to be signed: -8c 67 02 da af 58 f6 a4 75 fa d2 c7 a4 bb 15 6a -57 06 42 55 77 d5 e3 0c 6a 6b d3 66 9f d0 30 af -d7 89 fa a3 d0 10 18 d4 5d b2 a0 47 f5 2c b4 f6 -3d ea 36 09 42 af e4 76 26 42 06 d9 83 ad 38 36 -e1 55 c5 6b 2e cc 08 76 3a fb 9f d5 1d 19 99 0e -fc 33 63 f6 57 e2 85 e0 35 21 e8 ca d0 1d 2c 93 -5a 18 3a e2 3f 0e e8 71 00 86 a8 5b 9f ad 4e 7f -2b 09 45 2e bc 40 3c e0 c0 e5 75 5a 7b 2f 33 f4 -de f0 db 71 c9 79 31 ff 90 4a 81 31 99 84 bd c5 -16 6f 6b 92 0c 97 ee 74 fb 7e 89 0f 49 0c 90 de -30 ca c9 76 b7 17 23 e2 f8 6e 9d e1 d5 03 a4 1b -c8 1d 53 cc be f8 ac 40 53 57 d9 df df 30 64 66 -b4 26 95 80 21 2e 9d 71 32 - -# Signature: -0d 89 fc f8 44 a9 dc 22 3d 5f 63 8d cc 3a 59 78 -71 6f 26 28 b8 a8 3a b3 3e 6e 25 5f f8 aa 01 57 -8c 14 e3 89 7d a4 5a ef d6 3f a8 7c f3 5e 24 4b -f4 82 8e cd 21 95 0f 30 85 a3 66 21 c9 da 1b be -7e a6 27 31 c6 8d 4d e0 a3 76 e2 2d ac 2f 54 8c -d4 ba 4a 54 2e 71 0f 55 ce 85 a9 c1 95 93 c0 8c -87 d2 96 d6 35 87 b3 fe 2c 5d 11 65 ee 27 74 4c -75 d8 f4 f1 43 71 63 7c 0c 0a 44 62 76 28 95 83 - -# PKCS#1 v1.5 Signature Example 3.6 - -# ----------------- - -# Message to be signed: -56 f4 ff d1 27 9d cf e5 62 a9 dd d4 1e cd f6 0a -3f f5 82 46 bf af 95 65 cf 67 4b 0b 90 75 f4 0e -ea c0 8f 0b 89 66 61 8a 19 6b 12 28 eb ce 93 fc -9d d7 9b d4 63 ea 7d 2c 97 4d 2c 2f 53 9e af b1 -b2 bc 1e a3 4d 74 f7 20 e1 19 34 2f f7 13 12 25 -aa 9a da 89 4b 76 b2 ec b1 2f 2f 40 28 44 b4 42 -5c f8 f1 a3 9b 0a 9c 83 b4 5b 03 cf c0 d1 5f d3 -14 d6 ab f5 32 b8 ed fc f2 36 51 4b 2e 45 86 97 -86 fe fe 27 f5 4d 66 6e e5 24 e4 b9 c0 53 be 39 -75 01 58 29 91 fa 2d 80 2c 7d 1b 17 8b 23 e9 b6 -ec e6 fd 2e f0 13 2c 06 01 a8 6f 07 68 ba dc 59 -c5 cc 33 f2 4d ed 55 4a e5 1a e3 ec 23 f9 dd 08 -9e 32 4a 68 21 f6 15 7f 12 84 42 ac 58 07 65 8a -d3 40 26 b8 fc fd a6 dc 7f 02 a9 3c 16 6e c9 45 -ee - -# Signature: -0d eb 39 7b f2 cf f9 79 d4 71 9c 64 8b 0a 35 25 -35 1f 5e 08 40 5c a2 61 4a 83 e5 6a ce 86 f5 52 -e4 1b b9 28 de 50 f0 bc 0f e3 1a 2e f2 ad 79 9f -d3 cf 47 42 b1 13 1a 37 bd 08 f2 a1 3c ac da 67 -f4 95 c9 f1 a9 ef 64 85 70 72 32 9f 00 cc 4c 01 -22 35 59 9a 83 fc 45 94 fe d9 23 03 49 01 ed c2 -7d 5f 05 79 98 34 93 5c ab e2 64 ff c1 96 63 71 -4d 8c 3d e8 e9 61 9f d2 84 2d 22 98 f7 a7 2c 99 - -# PKCS#1 v1.5 Signature Example 3.7 - -# ----------------- - -# Message to be signed: -0e 79 ac 9c 9c 03 96 d9 69 fb 3f 7c c9 94 7b 07 -8b ac 49 3b 03 52 c8 e0 cd e5 46 3e a5 c1 18 4f -d5 2a 1f b7 48 19 3c 14 7a 74 80 0d 24 f7 51 ba -93 5e 19 c9 11 5e df 07 22 88 33 0b f3 83 f4 95 -29 6b e1 aa 4a 50 95 b9 57 3b cb db 22 8a 43 13 -12 37 86 5d 26 df bf cf ef 07 8f 35 9f 9a 95 62 -e2 5b 69 63 85 e1 28 13 ff fb c8 d5 29 81 9a 91 -45 1d 33 a5 07 26 39 2e 4f ef 29 41 8c ca 2c 73 -a0 68 e6 0e ae 31 84 70 33 1a 0f 1d b4 bb b6 37 -17 3b e8 0f ea 03 c8 2c 15 d0 01 93 36 2d 3a 18 -ad 9e 2f 68 05 00 d7 26 5b 15 57 03 3a 52 09 77 -d8 10 fc - -# Signature: -73 3b 7f ea 12 0c a5 f0 35 9a 89 05 75 0c 49 c3 -63 d8 84 f5 6c 2b 7a 72 9f ad 7b ff 44 5a 1e 54 -79 89 41 74 53 93 e1 76 77 12 ac 4b 9d d2 68 38 -88 d9 e6 8b 90 5d ba b8 79 21 85 18 48 72 73 86 -02 ea f4 a8 0f 45 95 f7 8f d4 a4 61 0b f8 22 0b -86 a2 88 5f da 24 e1 99 64 28 cc d1 5f 20 08 e0 -68 51 b2 ee ad c3 dc 8e 03 01 2f 9b db 3c e0 57 -5d dc 3a dc 7c 59 08 49 8b 69 a7 97 ba 58 29 c7 - -# PKCS#1 v1.5 Signature Example 3.8 - -# ----------------- - -# Message to be signed: -22 eb 7d ba 73 30 7c 7c 52 a0 7c ed 89 db 8b c5 -39 4a ed 22 72 f7 e8 1a 74 f4 c0 2d 14 - -# Signature: -9e a4 60 0a 1a 65 49 fd 39 75 f6 49 8a 04 d6 9f -96 fa d0 e8 e6 fe bc fb e0 1c 2f 83 17 0b c7 4e -b9 1f 2e 33 53 38 d5 83 e8 85 aa c6 14 24 c9 b2 -66 c3 d2 d9 8e 79 77 ff e4 95 f9 c1 a6 ee 5e f4 -1a 4c c7 47 8c 24 b3 16 c7 d9 f6 db aa 65 a4 ca -de f1 81 ca 94 6f 9b 92 18 4f ae ca 8a 13 16 ae -ab 5c d3 87 8c 6d f0 74 f9 06 0b 9d b6 6d ec e9 -a9 36 7d 75 49 03 5a c6 bf 19 62 36 5e 1f d3 fc - -# PKCS#1 v1.5 Signature Example 3.9 - -# ----------------- - -# Message to be signed: -f6 80 - -# Signature: -51 63 90 61 fa 7b 7c d5 df 64 b3 0a 39 4c cf 7e -24 26 97 2a a1 dc f5 d4 5e b8 ec 2c d9 0b 9b 19 -68 92 be 5f a0 3c 43 f3 c3 72 3a e3 13 0d 61 51 -b3 3a 63 7c fc 50 ba 35 26 a7 39 6c f8 47 9c 50 -8c 18 11 81 0d 68 b3 88 0a f6 e6 4b 16 bd 70 79 -be 9c 00 39 29 51 22 61 89 8f a5 7c 06 ff 7e 1d -80 39 fa 99 3f d2 05 6a c7 01 9b 8d bc f2 53 0d -53 80 e6 01 a4 a1 87 1b 86 c2 0b c1 c4 89 c5 f3 - -# PKCS#1 v1.5 Signature Example 3.10 - -# ----------------- - -# Message to be signed: -65 0e 64 ed 1d a8 8b cf 8a e2 75 22 be 1d 5c 99 -19 f2 09 9d d6 32 45 5f 66 d9 af e8 ba f4 6c c8 -a1 98 40 9b 09 28 dd 87 22 62 84 d6 69 bf 01 bc -ec 44 37 6c b0 e9 bd c6 86 ac aa 8b 46 34 86 08 -59 94 ca fb 5a 8c fc 33 d4 9c ee f4 79 fc 6e 04 -f8 ee f6 37 eb 68 cb 57 81 8d 5f 97 70 ac 52 3e -d5 b0 16 38 36 7f f4 7f - -# Signature: -50 3e 05 66 1d 68 1e ca 57 4e 02 30 af 2d aa 87 -7b 90 51 6e 5e 19 72 8c 91 76 8d 6e ef ee 00 1b -35 41 9c 5f cb 56 11 d6 0e 7e cb e3 c9 5e 5c 88 -ba 93 46 07 04 f1 69 4a e8 04 44 eb 97 18 a0 8b -66 86 fa d8 6e 52 59 90 c3 c1 a6 6c 8c 53 aa 31 -ae d8 cb c4 0f d5 4f 5f f8 a1 34 74 9d 79 d3 8f -bb 0d 58 44 26 78 ff 2f 70 c6 c5 0f 25 47 2a 72 -d6 32 05 e7 82 42 3d f4 0b 6c 43 de 03 a1 8f 8b - -# PKCS#1 v1.5 Signature Example 3.11 - -# ----------------- - -# Message to be signed: -57 f8 ac 6a 9e 46 8b 7f 1f 74 5d ff e3 9e 9c bf -90 24 a0 ff 36 e0 22 83 92 be 6b 29 94 29 17 76 -b8 9c 0a 4b 1f a8 6b 2e c8 bb 7c 3e 64 f5 58 5a -fa 77 - -# Signature: -90 be 16 b4 08 b3 85 73 95 39 b3 b9 a2 9b 94 c7 -29 38 5f 79 dd 4a 79 81 1e 6f 67 c8 0e d3 59 e5 -f4 b2 a1 9c 22 2a 82 b3 d6 d6 2a 90 3f b1 80 c1 -f4 3c b3 fe 06 a2 50 bc b0 e7 c6 88 66 5c 83 68 -a1 1a b1 16 0a db 74 02 91 35 2b 38 38 b6 92 3a -4a 37 ad 06 04 0a 53 59 20 dc 0f 10 57 9e cf 48 -1c d4 41 37 17 d7 d4 d9 60 aa 75 1a 74 3e 2f 7c -61 6e 54 2e e6 5f bb fe 24 66 0e 10 1d aa 2b dd - -# PKCS#1 v1.5 Signature Example 3.12 - -# ----------------- - -# Message to be signed: -80 ef 01 aa cc 5b fb 0d b4 8c 6d e3 d8 14 95 b9 -c2 31 1a 38 93 89 f2 3b 70 c0 24 da 44 78 bf ab -2b fe 4e 54 6f 13 ff fd b9 63 89 4e c6 da db 3d -2b 0e e3 37 f1 16 31 05 8e ac 86 09 e5 a1 55 4a -f7 97 a9 f9 ab 47 8c 2d 5b 91 88 c8 25 - -# Signature: -44 c3 f5 1d cc 6f b2 b4 e7 0f 53 7f 54 64 c6 32 -0a d4 2e 21 28 fa df d9 a7 e9 37 cd 65 dc bf 35 -ac 66 cf fa fd 39 28 39 66 f2 f1 5d e5 27 72 35 -50 71 5a 31 04 29 45 e2 00 cc 5c 86 fa ba 5e c8 -ab af 50 9c 0c cd 64 d9 9d ed c7 6e 3c ea a8 c4 -47 17 93 37 f4 a0 77 7b 11 52 6e 47 2a cd 41 3b -4a c7 c3 03 cd cd 84 ca fc 02 52 43 ef 00 6f 79 -dd af 55 c1 5c c4 a8 f1 5e a2 c8 7f 05 77 38 14 - -# PKCS#1 v1.5 Signature Example 3.13 - -# ----------------- - -# Message to be signed: -ac 17 95 91 55 28 3b 0c 7c ff 51 5c 33 15 d8 9b -df e9 58 7c c0 01 20 d3 ab 31 bb 76 07 bd b3 01 -ca ea f5 e1 5f 5a 6f 58 c9 c5 68 ff b3 d2 34 02 -51 6f fe 23 0c 69 81 a8 1c 17 8a 8a 18 ca 33 0b -b8 ec af b4 81 b2 49 b4 66 a8 cf 78 b7 0d 9e 78 -a1 39 a8 8f 48 4c ce 7c 20 35 b2 e8 9d 49 3b de -88 5e 1c de 42 cb 1a 94 49 ff 57 0d cf 9e 33 c5 -cc 77 b2 59 be e2 83 05 39 68 02 ed c1 6f c5 a8 -e1 0b 56 da 2d a7 86 b5 fb 6c 81 2b 2e 17 5b 69 -6b 1a 9a 96 fc 72 2a 43 21 46 45 0f 07 a6 48 ef -3c cf 99 6e f3 08 1f a5 bb 42 21 c9 13 ba 22 28 -97 0c 9b 0e a5 26 6b ff - -# Signature: -48 45 8c 72 f0 67 dd 9a b7 20 ef 16 0c f3 18 4b -b9 80 1e 26 d6 14 a8 89 a8 35 84 41 07 ac 01 65 -0b 11 84 a0 0b ca a7 af 1f f7 de 3a 2e f2 e7 ce -b5 b2 5c 3b 5d 5b cb 29 86 59 34 32 47 48 c6 8f -07 de 17 4e 17 80 a7 0f a2 4d 6a 3a 9f 7a 41 b8 -19 37 c4 98 4b 2c be 06 b3 d7 b4 4c da e9 cb d4 -16 32 d0 09 43 c3 b5 73 b1 aa 29 12 75 0a 9a eb -07 f1 10 13 0b a3 61 dc f8 f5 36 79 0d 60 78 47 - -# PKCS#1 v1.5 Signature Example 3.14 - -# ----------------- - -# Message to be signed: -99 09 8f 77 f6 ed 35 c0 8f ab 3f a9 78 86 93 67 -1a 58 00 dc 30 3c 9c ce 42 46 16 fa 0c 7e e8 88 -86 87 67 4c a8 8a b2 2a 5f f2 d1 2e 2b 38 8b 09 -4f fd 7d bf 9a 09 27 a9 62 17 17 15 1e 08 ec b8 -ad e1 55 9f 4b 48 e2 3d 31 cf 57 cd 38 84 df e2 -b3 e4 b2 60 e8 96 02 94 07 96 94 96 02 6c 74 a2 -18 90 d9 a9 af d2 cb b8 f2 83 0a 56 6a ed 24 f0 -16 19 74 01 a8 cd 22 c8 2f b8 b2 28 91 84 58 24 -0a 23 d1 01 85 eb e7 72 dc 19 bc fe 3e 44 92 2f -e7 32 09 c1 ee 00 40 07 9f b0 3b 82 7c 82 17 d9 -ed 7c 98 c9 5f 30 97 4f be 4f bd dc f0 f2 8d 60 -21 c0 e9 1d a6 0c a2 ad 77 79 7e ce 86 de 5b f7 -68 75 0d db 5e d6 a3 11 6a d9 9b bd 17 ed f7 f7 -82 f0 db 1c d0 5b 0f 67 74 68 c5 ea 42 0d c1 16 -b1 0e 80 d1 10 de 2b 04 - -# Signature: -b4 6a e8 66 13 91 89 b6 b1 71 a7 62 05 fb 9c e0 -41 b4 02 98 e5 ba 92 c2 e9 cc 0b bf bb 4a 76 42 -5d e6 ce 13 02 1a e1 a4 a9 42 29 9f 98 ff 89 f5 -52 f4 3a 90 73 de 64 f4 9c 2c a3 62 0d 09 d7 e6 -e3 fe 28 22 1e 93 68 98 7e 11 0c d6 06 71 06 c4 -db 31 a0 38 90 23 67 96 c8 42 52 f5 6c 95 03 4a -01 c5 fe 98 1e 81 b6 54 85 5a af 27 47 50 11 55 -72 0c 21 93 f3 a1 d1 0f 49 fe e9 0c 52 fe e9 e4 - -# PKCS#1 v1.5 Signature Example 3.15 - -# ----------------- - -# Message to be signed: -ff 79 06 42 30 5b f3 02 00 38 92 e5 4d f9 f6 67 -50 9d c5 39 20 df 58 3f 50 a3 dd 61 ab b6 fa b7 -5d - -# Signature: -07 56 32 47 73 4f 3c 3d 7a 31 02 bc b4 5b b5 68 -15 68 ed 10 f2 ec 45 9e 46 9e 1a 9e 34 09 a1 39 -fb 15 1b 98 d3 f3 b6 2d aa ac 8b 8f 89 16 df 85 -d6 df a9 ab 76 0d f1 e1 5a c8 90 44 e5 79 cf 47 -a1 af 6c d6 ec 70 4c ed 9b 03 4c 6a aa 90 d0 e7 -0e 08 52 14 0e 75 41 f2 ef be 2c f1 90 b9 58 94 -1e c8 b5 97 4f 9c 44 4d 26 c3 43 16 c9 21 6b 65 -95 e6 56 bc 6c 78 44 fa c1 6c 51 52 60 92 8e 78 - -# PKCS#1 v1.5 Signature Example 3.16 - -# ----------------- - -# Message to be signed: -e9 9f cb f8 59 2d be 2d 7e 27 45 3c b4 4d e0 71 -00 eb b1 a2 a1 98 11 a4 78 ad be ab 27 0f 94 e8 -fe 36 9d 90 b3 ca 61 2f 9f 22 d7 1d 54 36 3a 42 -17 aa 55 11 3f 05 9b 33 84 e3 e5 7e 44 52 28 80 -62 af c0 8f cd b7 c5 f8 65 0b 29 83 73 00 46 1d -d5 67 6c 17 a2 0a 3c 8f b5 14 89 - -# Signature: -22 74 64 36 16 4e 63 93 78 71 c1 d4 7d 8e 3e 70 -c9 e5 2d 11 17 31 6b b1 54 cd 55 2e 83 6f 2a 3f -be 6d 89 d6 07 4b 51 b0 15 9c 26 c2 8d f7 5e 3d -7c fb 7c f0 02 f6 5d 1e e5 21 ed c2 c3 a6 5c 52 -6c 98 c7 c0 25 fa 8b b6 31 47 09 16 d3 01 b8 f7 -80 9d dd 91 9d ed 31 a0 d4 66 83 ec 5b b4 41 70 -61 6e ab cd 97 02 05 ed 76 02 02 d0 d8 7a 65 79 -59 08 b2 8d 32 6f 93 62 13 f2 9f eb 59 77 34 91 - -# PKCS#1 v1.5 Signature Example 3.17 - -# ----------------- - -# Message to be signed: -6a 6a 0c 9b 5b 15 bc da 19 6a 9d 0c 76 b1 19 d5 -34 d8 5a bd 12 39 62 d5 83 b7 6c e9 d1 80 bc e1 -ca 4a f8 70 fb c6 51 60 12 ca 91 6c 70 ba 86 2a -c7 e8 24 36 17 30 6f 4f 9a b9 50 11 99 ce f5 5c -6c f4 08 fe 7b 36 c5 57 c4 9d 42 0a 47 63 d2 46 -3c 8a d4 4b 3c fc 5b e2 74 2c 0e 7d 9b 0f 66 08 -f0 8c 7f 47 b6 93 ee 40 d2 e1 80 fa e1 ea c4 39 -c1 90 b5 6c 2c 0e 14 dd f9 a2 26 ba e1 7d 20 38 -5d 50 19 55 82 3c 3f 66 62 54 c1 d3 dd 36 ad 51 -68 b8 f1 8d 28 6f dc f6 7a 7d ad 94 09 70 85 fa -b7 ed 86 fe 21 42 a2 87 71 71 79 97 ef 1a 7a 08 -88 4e fc 39 35 6d 76 07 7a af 82 45 9a 7f ad 45 -84 88 75 f2 81 9b 09 89 37 fe 92 3b cc 9d c4 42 -d7 2d 75 4d 81 20 25 09 0c 9b c0 3d b3 08 0c 13 - -# Signature: -41 93 22 fa ca ce 76 f2 d5 e2 fb c1 9a ab 86 c7 -18 a2 80 64 f1 d7 b4 c6 62 f0 47 4a 87 77 a9 59 -bd 65 69 53 8c 16 08 1c 0f 52 69 8b 2f 00 17 30 -c0 3b 9a 3d 26 94 73 74 c9 61 fd ed a1 15 b6 b7 -da f6 65 18 f1 fe 82 0f 67 c3 ff 12 f0 bc 3f 11 -01 e3 91 1c 43 90 6b 0a 12 7e 50 be 01 40 c5 ef -c4 35 e2 95 7b 44 2e 60 ad 52 5a d7 0a c9 ef 61 -c3 d6 4f 0e 56 6c bc 1f 9d 51 ba e1 d4 72 71 da - -# PKCS#1 v1.5 Signature Example 3.18 - -# ----------------- - -# Message to be signed: -3b 93 ef 4a 55 50 96 69 19 15 dc 23 c0 0e 95 4c -de b2 0a 47 cd 55 d1 6c 3d 86 81 d4 6e d7 f2 ed -5e a4 27 95 be 17 ba ed 25 f0 f4 d1 13 b3 63 6a -dd d5 85 f1 6a 8b 5a ec - -# Signature: -ae 21 1f 4f 77 da 1b e6 af 9c 9e a7 04 db ac 4b -3f 3e 27 0d 2f ac f3 65 1d 78 7d 0e bf 59 a7 9a -39 61 2d a1 2d 57 c4 ac 8a bc 72 8e 1d a3 f0 1a -15 20 fc 9b 32 cb 0f fe 00 8c 80 69 92 8f 83 e1 -35 90 a7 8b 81 7e 81 9f bf 2f d0 58 93 ec e5 b1 -41 86 d9 01 c7 68 e3 42 dc 54 72 23 45 ae 8a a8 -73 8d 4d 59 70 c5 08 54 72 bd 98 99 fa 00 42 cf -14 bc ed ff db c0 ef 50 81 90 75 84 2f c3 6b b8 - -# PKCS#1 v1.5 Signature Example 3.19 - -# ----------------- - -# Message to be signed: -49 ff d5 6b f7 ef c1 13 04 a5 af bc 19 d4 79 24 -90 18 fd f4 e0 9f 61 87 26 44 04 95 de 11 dd ee -e3 88 72 d7 75 fc ea 74 a2 38 96 b5 34 3c 9c 38 -d4 6a f0 db a2 24 d0 47 58 0c c6 0a 65 e9 - -# Signature: -68 fb 0b d5 19 bf 6f 96 e0 76 af 29 01 2f 3c 3a -11 37 c0 98 8d e7 b6 fc ed f4 f5 1b df ee 64 5b -89 7f 17 70 9e 05 ca a0 b1 13 50 0d 90 4d c0 60 -0d 17 a9 ff 8e b0 2e 1e fc 9c 46 7a 24 00 3e f8 -1e 72 74 67 c4 7d d6 56 35 6d 70 37 2a 15 ea 88 -41 21 63 4b 01 5d 29 51 1f 28 95 55 77 99 07 9d -03 c6 d4 de 25 9b 3b 36 2b 80 49 2d 81 bc 9f e8 -54 44 63 ec 03 0b b5 c9 c7 3c 32 74 e3 ed 12 22 - -# PKCS#1 v1.5 Signature Example 3.20 - -# ----------------- - -# Message to be signed: -bc 25 5a f8 9a 6a 19 9b ca 4a 39 1e ad bc 3a 24 -90 3c 0b d6 67 36 8f 6b e7 8e 3f ea bf b4 ff d4 -63 12 27 63 74 0f fb be fe ab 9a 25 56 4b c5 d1 -c2 4c 93 e4 22 f7 50 73 e2 ad 72 bf 45 b1 0d f0 -0b 52 a1 47 12 8e 73 fe e3 3f a3 f0 57 7d 77 f8 -0f bc 2d f1 be d3 13 29 0c 12 77 7f 50 a3 34 db -6f ae bf 11 08 1a 04 f8 7c 2d 62 1c de c7 93 0b -9b 18 3a 99 04 75 dc bb 9c c7 f3 45 a3 b5 58 03 -03 0c f0 36 1a 5d 80 81 - -# Signature: -41 f6 52 df 79 fd d2 6d e9 5c 7a 98 fa 85 87 13 -fb 56 6d 8b 39 92 8e 71 76 4b 2b eb 19 84 03 e0 -3b 7e 06 dc 96 0c 50 51 57 bd f4 05 92 c4 d7 75 -03 fb 72 a4 e0 05 5f 97 4f e9 39 44 8d a3 68 f5 -3b d2 ef e2 6e 6f 9a 25 4b 3e 87 32 aa d8 16 87 -b3 61 e2 1a 40 cf 3e 5e 92 38 9a 2b 48 9c 05 c5 -97 f0 e1 64 e2 67 70 93 72 00 43 27 16 35 62 dd -8a 0a db bd fe 3b c6 16 bd 08 42 96 84 c2 0c 69 - -# ============================================= - -# Example 4: A 1024-bit RSA key pair -# ----------------------------------- - - -# Public key -# ---------- - -# Modulus: -d1 31 e0 92 43 37 0d d2 cd 54 25 c8 d0 30 f9 9a -db 10 5b 14 7b 8a 3d 00 67 c6 16 44 3b 7d 4b 96 -82 38 e0 6d bb 5f 20 28 e8 53 57 4b 7c 14 be 10 -83 c1 e5 7e 13 2c 1d f4 a3 a2 71 32 63 fa de 12 -f7 11 4f 43 69 bb f0 56 20 55 48 41 33 1e d8 11 -00 50 52 19 25 72 ce b4 8d 66 24 07 fd 30 81 cf -ab 8b 48 c7 e9 2d 3c 4a 26 a9 64 5a 38 e6 de e8 -8b b0 07 59 75 a4 da d9 64 6b 21 60 38 40 af 5f - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -d1 31 e0 92 43 37 0d d2 cd 54 25 c8 d0 30 f9 9a -db 10 5b 14 7b 8a 3d 00 67 c6 16 44 3b 7d 4b 96 -82 38 e0 6d bb 5f 20 28 e8 53 57 4b 7c 14 be 10 -83 c1 e5 7e 13 2c 1d f4 a3 a2 71 32 63 fa de 12 -f7 11 4f 43 69 bb f0 56 20 55 48 41 33 1e d8 11 -00 50 52 19 25 72 ce b4 8d 66 24 07 fd 30 81 cf -ab 8b 48 c7 e9 2d 3c 4a 26 a9 64 5a 38 e6 de e8 -8b b0 07 59 75 a4 da d9 64 6b 21 60 38 40 af 5f - -# Public exponent: -01 00 01 - -# Exponent: -56 b5 31 bb ee 18 37 a6 94 6c b8 6c 8f be 7c f6 -ee ad cc d2 a4 92 1b ce bb 34 a3 ae 0c 6a 56 96 -3f cb 8b 5a 70 3b 71 7d 03 2e e8 13 e5 8e 43 69 -5c f3 55 47 f8 72 64 c8 2d ba fa e8 44 00 8b 62 -d9 12 2e 9d e8 95 85 60 c8 db b0 07 72 7e 71 39 -e0 a9 82 e0 75 88 14 11 3d e5 4b a0 a4 55 17 51 -fc a0 fc b1 2d 8d e3 0d 78 b8 b1 12 98 a7 f7 8f -0b 08 8f 16 87 05 3c 84 a5 76 2f 62 a4 bd 05 c1 - -# Prime 1: -ee 22 a4 24 62 f7 71 8d fe cf 02 4b 17 c9 26 76 -78 05 91 71 33 9c c0 07 06 52 60 d3 04 7e 5f 89 -fe d9 10 34 28 43 37 8c 22 68 5d 53 2e 84 d2 59 -3a 7c 8c 02 6a 87 66 c5 a2 b2 ed 55 8e 88 23 19 - -# Prime 2: -e0 e3 70 0c 99 a3 e8 15 d7 4b 75 2a 84 fb 42 ec -20 e5 20 3c a7 c1 af 97 fb f3 97 b9 5d 11 05 37 -6c f5 d6 3e 3c 57 bf a6 58 55 e5 08 14 6c 86 db -aa b2 89 c9 5b c0 45 5a 58 2d d8 f5 3f fb ed 37 - -# Prime exponent 1: -d1 f1 34 68 e7 df 62 fb 5e b3 be 3f d9 de 7a cc -63 0f f5 a3 a9 6e fe 54 b3 1c 19 44 b0 67 81 6f -35 80 c4 aa 56 fc bb 92 0e 1b 98 7b 67 3d ad fd -00 75 21 32 58 1c bb 5c 6e 0d f4 f3 42 cf 7e b1 - -# Prime exponent 2: -ac d0 da 38 34 90 ea 36 6e 7d c4 09 ea ab 13 20 -55 9e fd 88 de f9 4e 30 a3 22 ec 03 3b eb 6a 70 -cf 40 93 64 bc 06 4a 76 50 07 a1 ba f5 c6 f8 53 -31 f7 85 3e c1 4d 1d 7e 71 a8 b9 c2 ad 6a b1 3d - -# Coefficient: -1e da 83 d4 a6 d0 99 b6 0b 2b 2b 84 c6 ae 41 65 -c7 22 50 3e bd 37 3c 83 6f 97 35 ca 3b 20 a3 eb -08 1b 31 e7 83 04 13 20 df c6 dd f9 05 14 ca b6 -ec 4b 80 ae 0c 05 2d d1 e7 ce 34 18 ae ee 24 a4 - -# PKCS#1 v1.5 signing of 20 random messages -# ------------------------------------------------------- - -# PKCS#1 v1.5 Signature Example 4.1 - -# ----------------- - -# Message to be signed: -2c 93 6b f6 13 3a 96 93 f1 46 ee 5a 1a 91 c2 f1 -69 b2 e6 44 a5 18 e8 5a 75 f6 e4 3b 56 0d 4a 72 -f3 8c 64 f8 4c 05 24 0e 8b 4e 55 78 61 63 e7 27 -62 65 ba 21 3b a9 3d ee 1b 2e 10 21 35 a9 89 b6 -24 8e 88 32 7e 30 03 61 a7 4f 2e 9b c4 1f 2a 37 -68 3f 1a 1a 15 f9 dd 47 2e 11 8e 1c 4b 3e de 58 -dd 70 f3 ba cc 25 2e 0c 65 4b 0f 7a 6e 41 a9 28 -75 10 ef a0 3b c9 2e 80 5e 5b 2c 91 3f 51 e2 5c -7f 85 86 40 ca fa c9 d3 c9 17 68 65 07 fa 94 f8 -86 6f 86 9a 4e 5a 6a 3d 4f 9d 97 ed 81 37 f4 14 -d1 44 7a 86 ee f9 e1 49 69 94 ad 2d a5 97 - -# Signature: -9e 93 f7 ac c5 0f b3 a0 b1 24 3d c3 38 c8 cc b1 -2b ca b4 aa 45 04 40 b6 30 6c 81 b5 0b 8f 95 a9 -36 dd 16 63 30 c6 99 b2 85 80 da 1b e2 75 61 64 -02 da 85 bf d8 ee fc d6 99 35 87 e6 09 28 65 d8 -25 3b 04 08 1d 57 2f 26 27 59 f5 56 df b9 11 e8 -d9 4e 92 e5 5a f6 d5 89 80 18 ff 33 e5 f6 b1 f9 -90 19 96 e9 2f af 33 6e 2d cc e3 ab 0a 93 db 93 -2e 94 2c c6 47 8d 6c c2 fb 66 08 11 91 0c cd 17 - -# PKCS#1 v1.5 Signature Example 4.2 - -# ----------------- - -# Message to be signed: -94 32 3f 7c 38 b9 95 cc 6b d8 5d 47 9f 8d e2 de -c1 ef 2e 84 b1 fe ef ec f3 91 50 b5 d9 f2 cb 15 -85 ac 0d 71 9a b3 48 bd c9 75 0d db 8e 32 76 db -89 81 87 35 bd 62 31 41 3c bc a2 de 94 1b 55 e8 -cf a1 ab 13 2c c7 8a a4 f2 b5 1f d6 57 8e e2 e0 -32 e9 0e 34 08 0f 0f 8e 3d b1 4d 1b 56 f3 d0 77 -f2 9d bc 02 16 a4 13 44 99 8c 0f e1 ab 41 22 47 -df 21 e7 4e c2 2f 5d b0 14 8e ca f4 73 ee ec cc -14 ff 9e 45 d5 8c 2e 62 b5 fe 6a 50 1a b9 6f d7 -c5 ed de f1 4a a8 92 66 69 2e - -# Signature: -09 40 2a 43 56 be 73 44 9b 46 9e 36 31 e1 b0 23 -07 c5 ca c2 ce 15 28 d7 84 fa b9 26 df f5 1f 86 -24 1b 9d 66 f7 9d 6d 8e ee eb 24 9d 76 fa 9f 16 -6f f9 a8 c6 a3 9e 83 2d 5d 14 b9 d7 ec 5a 3d c2 -8f 01 eb b0 6e 39 d5 9e 84 61 b9 55 b2 a7 f5 b1 -f2 04 b0 4c c6 cc 62 64 61 61 ac 1c 2b f5 ba b5 -0f 06 8c 90 8d 28 de 5e ae f7 e8 eb fc ab b0 9b -7d 75 d8 35 40 dd 4b 35 4d 13 1d 86 f0 77 07 17 - -# PKCS#1 v1.5 Signature Example 4.3 - -# ----------------- - -# Message to be signed: -0e 23 3b 25 49 bd d2 1b a5 14 80 da 8e 3d ce f4 -db 20 e0 dc c0 5e e2 37 35 1e db c9 a5 3c 52 f6 -74 d1 05 fe c0 93 9d 36 99 64 7e fc 1e 25 cb 4e -9b 1a b7 52 ab 6f e2 88 69 ff 73 f2 3e 01 ee f8 -67 4c 53 5c 4c 93 35 f7 98 f1 de ec d4 89 d0 6d -c8 8f d6 bc 1d 49 96 ef f7 2b 43 9e 3c 01 4d d1 -4c bf 17 71 5c 15 89 43 de 2e 6f 97 1c 34 99 87 -a1 b3 95 d6 82 c3 b0 c1 7b 66 cd 3c a4 10 60 b5 -71 11 e2 28 31 4b 2d 34 b5 e4 4e 55 f1 c1 1c 31 -a6 eb 80 b5 f8 2d 96 bd 4a 17 - -# Signature: -d0 75 be 06 cb d6 22 3e 87 1b 0f 33 62 a7 97 de -28 2d a5 c4 03 23 f3 7c 2c c3 74 65 a1 a8 63 68 -dd cf a6 da a1 35 86 6c 32 03 d0 47 22 60 b2 9c -3c 9b 1b 88 94 08 5d 54 7c 5e b9 31 42 4f 24 14 -0a 5c ba 15 3b de d4 b9 ce 7d ae dc 64 5d 39 80 -c5 f5 83 f7 67 11 c6 7b 19 3a 52 12 f2 a9 35 4a -67 96 af 09 08 20 91 31 34 ec f3 05 be fb 65 32 -cd 48 d4 11 3a 0e c4 86 9a 0a 56 55 db dc 72 59 - -# PKCS#1 v1.5 Signature Example 4.4 - -# ----------------- - -# Message to be signed: -d4 7c 0f 5c 92 2e 4f 80 9e 9c ee d2 07 f1 24 a5 -ac de 37 fa 14 63 8e 8f bd 0a 72 fe 45 26 21 95 -8e 37 68 2c 6f f2 83 f3 d5 1d a1 52 aa 1f 63 74 -cd 27 d2 a4 a5 33 05 39 16 df f1 c0 7b a9 36 31 -74 81 69 63 60 69 04 58 d8 d1 e5 d6 6c 35 f9 c9 -9a 50 55 d9 f7 cf e7 60 5c ca 57 ea c3 35 ad e2 -ef f6 b5 aa 62 7d 5b - -# Signature: -11 86 0b f4 d7 45 19 ff 8c fc ce 3d 33 e3 aa bd -f7 71 40 a1 56 36 b2 67 8d f9 67 31 44 c2 41 b0 -a9 9a 0a 37 f2 92 ca d5 1d f0 b6 3b 14 f8 ab 17 -e3 fa 15 58 77 90 fb 06 2b 5f 26 6c 16 6b 2c a7 -51 57 a0 f9 e1 a5 c8 ec 26 b9 19 9d 07 18 77 99 -80 6a 1d e9 87 15 fb e5 27 57 a7 03 77 3c 91 8a -00 0c 21 1a 78 22 85 25 cb 52 eb 44 1b 26 9b 3f -33 05 0e d1 93 5a c0 e8 59 63 19 ae 80 c7 5b 84 - -# PKCS#1 v1.5 Signature Example 4.5 - -# ----------------- - -# Message to be signed: -be bd 9d de a3 ab f9 f8 eb 58 55 97 66 f8 b3 ab -83 53 52 38 c4 3d cd 81 a2 94 93 03 a9 5f 05 5a -83 40 ce ee 16 15 e5 8d f1 e0 14 c7 55 2d 76 9f -88 41 ba 09 97 5c ef e7 e4 8d fc 6a 26 49 e8 20 -03 e7 bf 42 0e 70 10 1b 32 7d 91 70 f7 3e 8d 88 -7c d2 98 f5 3d c1 bf c8 82 cf 0e fc fa d6 e8 6a -0e 7f 90 94 c4 f2 6c 46 92 1e 09 - -# Signature: -84 a2 6f be 67 01 0a a1 ef 2d 6c 79 26 32 39 b9 -78 f4 e8 93 dd 1e c6 f0 7d 23 17 f1 51 a2 a1 b3 -23 e5 05 f9 45 0c 37 df 6b 1b f3 e2 4f 38 b6 36 -bf 77 4e 96 74 1f fa a7 69 cf d7 a8 a6 b3 a5 ef -ab a2 3a ab 3a 43 7a 22 5b d9 41 86 e9 1d 39 2b -ed 2e ad 8a 78 f3 81 f4 09 49 cf 1f 3d 27 24 58 -1f 25 70 4b df 66 08 dd 11 9e 36 d8 7d 03 55 e6 -70 6c 8a 52 59 fd 60 c8 df 13 bc 62 aa 9f d5 7a - -# PKCS#1 v1.5 Signature Example 4.6 - -# ----------------- - -# Message to be signed: -9d 19 8e 2c 6e 12 f7 4a 9a 08 1b cf 70 fc 04 16 -8a 49 e0 9c 5f aa a0 11 e9 a0 9e 2c 43 ee 2c d3 -9b b2 f7 e5 68 2d ea b1 fa 11 1e 41 a3 19 4a 20 -a8 6d a5 51 01 82 4d 3d 78 a7 e3 2d b2 b6 0a a7 -73 77 0b 57 39 07 b4 09 a2 59 2c 83 f3 47 fe bb -2d 5c 85 e9 25 5d 6d c1 2a aa 33 5a df bb 5d c8 -62 d7 86 19 53 e2 68 7d 53 03 b6 86 ff f9 63 4e -e4 d1 5c bc c2 9f 7a 35 05 a7 3d eb 6f 9e 38 8e -96 85 ff f4 d5 45 0f 1e 32 75 35 9a 2b 99 44 0c -67 39 f5 b9 1e bd 14 ef 78 ae 73 c1 a6 19 11 f5 -ae 3a 2b 91 49 67 49 17 27 81 80 65 ee 01 0d f4 -9d 5a 16 ed 8d ce e8 48 ae 09 48 a2 52 4e ac 7c -4f f9 09 6c ed 61 35 76 42 c5 e0 f8 06 80 af ff -ce 0b a7 eb 59 58 99 49 52 6f f5 12 35 cd c7 2d -47 a2 7b 39 b8 d4 ac 84 9c 3b c0 4f a8 36 cf 18 -4b ae 0c 83 41 59 56 - -# Signature: -38 ef 24 5b 94 0d 93 97 0a 50 3b f4 3e 28 e1 7b -8a ff 08 3c cb e1 e9 c4 8e 4d 80 f5 16 c2 7d 08 -5c a2 a4 e5 73 23 6a 24 94 d9 b9 97 f8 12 48 48 -12 f6 65 25 d0 6c 0a 0b b2 13 0c 15 d6 ce 18 b2 -2f 3c ee 57 09 7f c0 d5 58 af d9 af 27 f1 51 f8 -43 6f bc 87 d6 be 61 42 64 7a 17 e0 4d f6 de c7 -0a 95 c7 da a8 4e de 94 cc b4 3e 1d 2c 37 b9 45 -81 73 10 d1 4a 22 b5 b9 ae 61 14 48 ee 41 bc 70 - -# PKCS#1 v1.5 Signature Example 4.7 - -# ----------------- - -# Message to be signed: -8e 8b a8 43 6f e3 10 4b 7c e2 a4 ef c3 6c 85 7d -49 e8 49 c0 08 5f c6 57 ba a0 33 17 93 b3 f3 6c -7c e7 38 b6 13 0b fa c7 5e 50 11 f3 2a a3 d1 - -# Signature: -78 44 69 9f 1c 4f 29 6e 50 26 1f 15 26 e0 dd 84 -f0 1c 82 cb 85 fa 24 60 9e b0 33 58 75 2c 6c f5 -99 94 d8 4e 12 f4 6a 72 00 cf 5a d9 7c 08 dd 4f -fc 44 65 7d b5 72 14 cd 1f 4e ed 6b 77 d2 39 fb -58 21 69 88 c5 e5 bc 73 5a 4f df f4 08 eb 9f 12 -79 d6 5b ba f6 a6 81 92 44 18 34 9e 62 ff 5e 58 -15 ea ea 59 2d 90 d1 ee f5 56 fc d4 d5 b4 b8 9c -6c 70 73 9d 6f 0d 3d 0b d1 6a 50 f1 e0 02 4e 98 - -# PKCS#1 v1.5 Signature Example 4.8 - -# ----------------- - -# Message to be signed: -58 5f a6 a7 f7 7a 4b 6e ba 56 90 e7 3e 71 28 b7 -2e 67 7c db 3a aa 86 29 ed 61 f2 ee 63 af 1a 71 -ba 87 13 6a 52 db 1a 33 21 fc fe b2 48 bf 2e 5c -f5 c6 39 57 1d 58 95 ad f1 fb 06 17 ed 14 0a 2a -0d 98 37 c3 c1 d8 45 0c 28 9d 33 bc 96 23 79 d7 -3e 30 87 f2 b7 ee 6e ad d6 65 01 48 c0 42 b6 ff -04 48 21 96 c7 18 fd c0 ce 57 9c eb 62 a8 1e 58 -43 73 eb 93 75 40 c4 26 b5 56 6a 9f 40 7c fc cf -bc 4b 75 36 94 af 0d f4 cd 6a a9 f1 65 46 a6 33 -94 a0 f6 57 73 71 34 3f fd db 65 1a 62 a3 a5 8e -dd ec 67 a2 9c ca e8 96 56 3c 63 e3 c9 0d 54 d9 -13 58 ad f1 94 e6 aa b1 f9 - -# Signature: -68 93 35 1c 73 91 5f ac 47 c9 62 cc 60 17 ca 74 -a5 b5 ee 4c b1 bb 5a 10 ad a2 a4 31 58 a2 26 1e -b2 7b 86 6d b3 9d 35 90 b4 f8 d2 0e e6 7c b1 a5 -78 94 63 15 0d 83 93 43 23 25 43 c8 26 50 51 01 -e1 d2 57 04 26 ab 9f ef d6 5b a8 4f aa ec 73 1f -27 37 4a b1 01 91 c9 60 83 16 93 f2 9a 85 4c 38 -12 85 99 f7 28 77 49 b0 b4 8b f7 e9 df da ed c8 -4e ec e0 71 40 45 84 73 0c ec ce 0d 5c f0 05 cc - -# PKCS#1 v1.5 Signature Example 4.9 - -# ----------------- - -# Message to be signed: -78 3c 18 b1 1f - -# Signature: -13 2f df b8 41 93 df b7 9f df e6 ba bc 2e fd 39 -b2 6a a2 09 68 a0 7c 0e 41 56 0e e4 df cd 4f ca -79 17 49 0f 24 e8 df 84 f4 e0 11 5a 3e 63 27 3e -7a 3b 12 8a bb bd 17 b8 aa 5a 06 ba 15 5e cb 23 -0f e7 97 26 04 79 95 70 10 e4 4b a5 75 29 2e c3 -f1 51 ab f4 8e 91 03 e5 51 42 ec 67 a4 13 4d d8 -f3 8e c6 59 f9 a7 89 fd 03 41 ce f2 bb cf 9f 52 -9b 93 21 8f c3 e4 3a 76 69 69 d1 bf 87 88 48 07 - -# PKCS#1 v1.5 Signature Example 4.10 - -# ----------------- - -# Message to be signed: -96 dc 98 b0 eb 84 f5 59 48 30 7a dd ec cb e7 64 -39 ca 36 58 bc 36 35 96 24 c8 fe 2f a0 9c 52 e4 -7a cd c3 2a 15 6d 90 76 82 41 0a 85 67 ab ca fd -c6 d8 bb 53 25 35 9e c7 5f fd b7 3e e0 a9 51 5a -4d df 9a 31 e5 d5 19 46 03 74 28 0a da 30 de 7d -d5 34 de aa 57 - -# Signature: -8f b4 3d c8 f0 6f 2b a4 8f 19 be 5b 1a 09 31 21 -3a 99 0a ed 9c 9f ed 1d e5 d6 f3 5a 2a 78 2f 0a -19 8f f6 38 8d 96 e9 d5 9b 88 e9 78 22 f3 49 ff -41 64 ee a5 0a 62 93 5c 61 cb c7 6e 3d f7 5f 68 -4d 96 24 75 e5 63 59 64 96 c9 88 0a 48 ed 97 8a -63 15 a3 45 57 17 91 cb 2d dc 88 da be 41 87 98 -a6 a4 41 c4 7a fb b1 cd 15 21 3e ca 3b 11 15 ec -8f 58 f8 77 be 8f bd 38 f4 fd ae f9 39 f5 26 40 - -# PKCS#1 v1.5 Signature Example 4.11 - -# ----------------- - -# Message to be signed: -37 20 01 59 9d 99 30 c7 d5 57 45 8b 43 6d ec fd -c1 4d 06 cb 7b 96 b0 67 18 c4 8d 7d e5 74 82 a8 -68 ae 7f 06 58 70 a6 21 65 06 d1 1b 77 93 23 df -df 04 6c f5 77 51 29 13 4b 4d 56 89 e4 d9 c0 ce -1e 12 d7 d4 b0 6c b5 fc 58 20 de cf a4 1b af 59 -bf 25 7b 32 f0 25 b7 67 9b 44 5b 94 99 c9 25 55 -14 58 85 99 2f 1b 76 f8 48 91 ee 4d 3b e0 f5 15 -0f d5 90 - -# Signature: -a8 97 c7 f9 72 e1 17 49 e1 e7 c1 55 ce 94 62 aa -7e 1c c0 a9 79 c1 27 29 79 51 26 cb 8c 0e a5 02 -21 c4 26 f1 bb 06 c1 ca f7 c5 1a c2 fb d9 4d 68 -8d a6 7d df 3e f6 66 06 e9 89 a1 6d e1 f9 2b 17 -70 6f 88 e8 7d 9f 14 69 a0 05 c9 fd 76 78 8e e8 -c4 a7 f0 12 09 e2 8b 86 f6 74 88 1a f5 7d b6 c3 -42 9b 6f b4 56 98 bf 5d 30 07 f6 1c 7d 44 11 78 -ad 12 43 a4 9b 2a a6 02 9b fe 90 2d 26 e4 23 75 - -# PKCS#1 v1.5 Signature Example 4.12 - -# ----------------- - -# Message to be signed: -bf bf d0 73 21 f0 f1 d5 fa 9f df 00 14 c2 fc b0 -35 8a ad 0e 35 4b 0d 29 08 1b 23 3b 43 56 77 50 -bd 6e 78 - -# Signature: -c2 4d 31 04 94 09 aa 16 d3 f9 72 ef 8b 75 95 ea -a0 07 83 3e 2b cd c7 50 48 52 f2 50 5f ba 1f c1 -5f 19 a0 ea dd e8 33 5c 73 06 fc 3f 51 66 1d a5 -20 ec c8 db 7f 47 38 85 ca bd e9 3f 0c eb f1 df -9e 8a 82 37 0b 00 a0 43 ad 63 2c dc c7 8f 3f ac -1d 8a 37 57 fc 8e 52 41 bf ed 55 c4 96 04 ac 19 -ab da c0 c9 c4 0d a3 73 c1 5f 3c 1b cc 97 3f fb -4f 8b 7b 5b 55 3a e0 75 e1 b1 bd dd d2 3d 7d 2a - -# PKCS#1 v1.5 Signature Example 4.13 - -# ----------------- - -# Message to be signed: -c6 97 39 d2 2a c8 96 6b f1 1c 11 6f 61 4b 16 67 -40 e9 6b 90 65 3e 57 50 94 5f cf 77 21 86 c0 37 -90 a0 7f da 32 3e 1a 61 91 6b 06 ee 21 57 db 3d -ff 80 d6 7d 5e 39 a5 3a e2 68 c8 f0 9e d9 9a 73 -20 05 b0 bc 6a 04 af 4e 08 d5 7a 00 e7 20 1b 30 -60 ef aa db 73 11 3b fc 08 7f d8 37 09 3a a2 52 -35 b8 c1 49 f5 62 15 f0 31 c2 4a - -# Signature: -d0 6d 32 26 0d a2 db 48 10 4f bd c2 4e 16 a6 5b -48 73 7d 43 ce 24 37 04 04 2a ad 6c 03 fd e5 a3 -dc 0f 2c c6 e3 ad 68 c3 c6 2e ab fa 1f 7b 1c ab -00 9d 11 75 af f7 7b e5 8f b1 2a 4e 58 12 7f ed -63 ea 3d f4 41 81 bd a3 8c 77 3c 83 b9 e8 04 bb -3d b7 96 32 63 df 30 e9 2c 4c 27 19 56 e7 e8 10 -45 2c 15 e0 6e 93 96 66 df 0c 83 34 03 30 96 c0 -7d ea 05 b4 4e bb 14 24 92 e7 66 91 31 eb cf 2c - -# PKCS#1 v1.5 Signature Example 4.14 - -# ----------------- - -# Message to be signed: -73 30 47 f3 36 f9 15 47 38 67 45 47 db 02 a9 f4 - -# Signature: -c1 13 c0 46 5c 84 cb fb 0f a1 bd bc 54 c3 e1 06 -8c a2 3e 69 b8 39 19 09 c3 90 0f e5 b4 e7 e3 f0 -34 c9 a9 88 a3 dd c3 c3 81 75 6a 1e 1a 27 c1 ec -fb 3a 70 e1 ee 0e 92 04 18 ac 4a b6 d9 53 2b 8d -09 59 a6 53 b4 c5 08 67 06 63 46 2b 2e 13 58 16 -b6 94 a6 b9 b4 68 a2 9f 38 de 53 bf cd df 97 e0 -3d 8d d2 4f 97 26 33 a4 9c f3 ea ae 1d 69 62 94 -38 60 dd 25 43 40 08 6b 10 35 7b 80 c1 cf bf 31 - -# PKCS#1 v1.5 Signature Example 4.15 - -# ----------------- - -# Message to be signed: -a9 74 0b 9a a0 d3 40 58 fd 3b 90 6e 4f 78 59 df -b0 7d 71 73 e5 e6 f6 35 0a da c2 1f 27 b2 30 74 -69 bd 0c e1 95 49 d0 70 01 20 cb e5 10 77 db bb -b0 0a 8d 8b 09 de 8d 83 96 e3 65 07 fe 1e f6 a1 -90 17 54 8e 0c 71 66 74 c2 fe c2 33 ad b2 f7 75 -66 5e c4 1f 2b d0 ba 39 6b 06 1a 9d aa 7e 86 6f -7c 23 fd 35 31 95 43 00 a3 42 f9 24 53 5e a1 49 -8c 48 f6 c8 79 93 28 - -# Signature: -4f bd 4f b2 37 04 f4 14 9a da 32 7f a5 33 88 52 -6a 07 dd 43 d9 15 fc bd a9 a1 3b b2 a3 73 8f 4a -db 1c 3d b2 6a b6 90 48 80 5a 80 c8 16 05 c9 6d -68 f8 41 80 2f 5a bb 02 05 7b 61 1f e2 f3 94 71 -62 65 e5 45 25 2c 23 0c e4 74 af f0 bb d4 ff 1f -38 08 49 60 36 a4 94 8c a7 a1 10 ff 26 c6 38 c5 -0f 32 15 b2 8a 09 f2 3a f6 f8 4c dc 89 78 98 d0 -fd 22 3b 13 48 1f e8 92 b1 a5 8b a2 e4 b3 68 5b - -# PKCS#1 v1.5 Signature Example 4.16 - -# ----------------- - -# Message to be signed: -af 8f 08 87 c2 19 00 4d 2a bd 89 4e a9 25 59 ee -31 98 af 3a 73 4f e9 b9 63 8c 26 3a 72 8a d9 5a -5a e8 ce 3e b1 58 39 f3 aa 78 52 bb 39 07 06 e7 -76 0e 43 - -# Signature: -32 7e c9 d0 be 7a ab 7b c9 59 d4 02 27 e1 d0 04 -81 fc 04 01 1f e0 8f d5 44 9b 90 c0 f0 54 e0 d6 -59 b9 26 cc 81 29 21 c2 0a 56 3c 4a be 4f 82 5d -6b 5e ef 57 b3 e2 d6 5d 20 a8 01 3a 50 dd 5c 93 -23 8c f0 49 f2 ff 0c 7e be b8 e8 ca f7 2e 46 e7 -cf 8a 0c 3f 49 25 61 6b 1b c1 82 6f fc b0 bd a6 -0b be be df d4 c6 0f 27 88 d1 66 6f b8 45 11 85 -36 46 c2 dd 46 68 51 fa c8 5b e0 ed 5a ce 5f e2 - -# PKCS#1 v1.5 Signature Example 4.17 - -# ----------------- - -# Message to be signed: -38 df 86 55 7f 37 5d 09 cc d8 bd 15 d8 cc f6 1f -5d 78 ca 5c 7f 5c de 78 2e 6b f5 d0 05 70 56 d4 -ba d9 8b 3d 2f 95 75 e8 24 ab 7a 33 ff 57 b0 ac -10 0a b0 d6 ea d7 aa 0b 50 f6 e4 d3 e5 ec 0b 96 -6b 81 57 79 a9 1b 3a 8b d0 49 bf 2a eb 92 01 42 -77 22 22 c9 ca 0c 32 8c 65 9e 0a 64 37 43 3c ce -b7 3c 14 9a ec 4a 74 80 d5 bb c4 29 20 d7 ca 23 -5d b6 74 - -# Signature: -30 46 05 5c 2b 8e f7 fa 92 c8 a9 e3 95 98 5b d4 -60 fb 6b 47 98 65 53 94 4d 21 04 51 19 f7 e7 61 -7e 03 fe 80 87 0a c6 aa bf 63 b0 96 ca d5 cc e7 -f5 06 95 3a 7f 69 3f e1 37 ad fb 97 cd 45 81 28 -ae 95 c4 7c a9 48 da cf 24 03 6a de aa 48 f2 9a -46 9f b5 13 19 1e 05 ac f7 9e 67 a7 93 a3 af 5e -4f 9c 6d 0d 01 fd d0 e0 cd 42 96 ad 3d a2 ca 89 -a5 0e ed cd 9f 7b 87 7d 2a e1 d5 8d 98 dc d7 8f - -# PKCS#1 v1.5 Signature Example 4.18 - -# ----------------- - -# Message to be signed: -cb 34 ed d5 ab 65 40 41 b6 14 30 56 - -# Signature: -1d df 48 ba 53 51 be d0 79 5f 55 b3 06 aa 1c 6e -d8 36 f5 92 ba 93 cf 0c 46 b7 c2 73 70 9d 36 b8 -df f0 2a bd b1 a7 68 d1 c7 11 4a 86 a4 57 49 6d -a5 79 e4 d8 19 f7 2a 19 2e 29 8b e2 15 2f 7c f3 -9d 1e 30 82 7d 02 82 cc f3 4d c8 88 9f 1c 2f 59 -70 93 0d 97 35 04 2f 8a 5a 71 22 63 16 5d 6e 6c -50 35 e2 e4 a5 0e 86 3c 06 79 9e 3c 89 cc b5 cb -0e 70 b3 c9 9c 08 40 30 67 7a 7c 97 90 7a 17 24 - -# PKCS#1 v1.5 Signature Example 4.19 - -# ----------------- - -# Message to be signed: -5b 09 ec 88 b1 52 71 78 fa 04 32 63 f3 06 7d 9f -fe 97 30 32 a9 9f 4c b0 8a d2 c7 e0 a2 45 6c dd -57 a7 df 56 fe 60 53 52 7a 5a eb 67 d7 e5 52 06 -3c 1c a9 7b 1b ef fa 7b 39 e9 97 ca f2 78 78 ea -0f 62 cb eb c8 c2 1d f4 c8 89 a2 02 85 1e 94 90 -88 49 0c 24 9b 6e 9a cf 1d 80 63 f5 be 23 43 98 -9b f9 5c 4d a0 1a 2b e7 8b 4a b6 b3 78 01 5b c3 -79 57 f7 69 48 b5 e5 8e 44 0c 28 45 3d 40 d7 cf -d5 7e 7d 69 06 00 47 4a b5 e7 59 73 b1 ea 0c 5f -1e 45 d1 41 90 af e2 f4 eb 6d 3b df 71 f1 d2 f8 -bb 15 6a 1c 29 5d 04 aa eb 9d 68 9d ce 79 ed 62 -bc 44 3e e2 0c - -# Signature: -af 56 fc 32 97 39 e2 f7 75 4b 6c a2 51 64 a6 fa -58 f6 85 dd b7 42 b4 84 1d 73 a5 e2 c4 c4 53 43 -b7 4d fd 2f 0d 37 0e dd dd 36 a0 17 56 4a 8d 3a -d4 02 e2 a3 41 c9 72 06 2c 23 81 4a 00 13 1e 17 -b1 de c7 b4 c5 7c 5b f1 d4 fa 79 22 29 37 a4 dc -5c 00 23 5f 85 3d d2 3d c9 75 7f 33 5c 85 c2 07 -eb 07 4d 4b cc 24 3e da a7 83 1b 83 13 56 55 e2 -27 7e f2 9e 7a eb f3 4a 0f 7b 23 4a 28 65 0a 30 - -# PKCS#1 v1.5 Signature Example 4.20 - -# ----------------- - -# Message to be signed: -3c 33 0c 1e f7 18 c1 41 e4 7b 8f a8 59 be 4d 5b -96 - -# Signature: -0b 10 22 dc 38 e2 17 fd 3b 0e 7e f1 9d fc b4 b4 -56 36 62 40 98 30 95 f6 db 96 58 31 a7 0f 0f 8e -20 e2 dd 2a c2 31 cc 37 90 45 c2 73 65 e7 3a 53 -71 9b b6 f0 11 c3 f8 63 6b 64 99 4c a4 80 60 2f -b3 b4 f0 e2 27 4b 58 b3 63 e0 d3 08 b5 28 e1 58 -59 a9 1d cf 99 bf fe fb c8 05 22 41 b9 74 19 2e -63 62 18 f3 98 33 2d af e8 25 9c a5 f5 cc fa 54 -c9 b3 2b 27 35 af 07 24 f4 0b 5a 5d 61 21 a4 0d - -# ============================================= - -# Example 5: A 1024-bit RSA key pair -# ----------------------------------- - - -# Public key -# ---------- - -# Modulus: -c5 5f fb dd 6a 27 53 bc 02 af 20 ae 18 ea 0d af -23 0b b6 f8 79 5d 05 ef ec c8 15 ba ec e2 2b 38 -79 99 5f 6d 97 64 c1 df 8f 97 85 13 81 68 62 66 -b8 09 2f b6 01 18 98 a7 67 07 a4 d1 d5 bd a0 8d -24 6c 68 7a 8b ba fa 63 98 ac 9e a2 72 68 23 71 -4a 0c 39 34 ca 6e 5f 8c e3 39 87 b5 34 85 7e a9 -f8 5c c4 e1 9a 1d 21 83 e0 e4 c8 aa 55 cb 22 7b -0e 56 ce b2 b6 2b 30 ef c7 88 64 b2 f9 fb 92 49 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -c5 5f fb dd 6a 27 53 bc 02 af 20 ae 18 ea 0d af -23 0b b6 f8 79 5d 05 ef ec c8 15 ba ec e2 2b 38 -79 99 5f 6d 97 64 c1 df 8f 97 85 13 81 68 62 66 -b8 09 2f b6 01 18 98 a7 67 07 a4 d1 d5 bd a0 8d -24 6c 68 7a 8b ba fa 63 98 ac 9e a2 72 68 23 71 -4a 0c 39 34 ca 6e 5f 8c e3 39 87 b5 34 85 7e a9 -f8 5c c4 e1 9a 1d 21 83 e0 e4 c8 aa 55 cb 22 7b -0e 56 ce b2 b6 2b 30 ef c7 88 64 b2 f9 fb 92 49 - -# Public exponent: -01 00 01 - -# Exponent: -07 e3 fa 71 b3 98 b6 e4 41 47 37 0b 3e bb bc a8 -4f c2 5c 22 3a d7 d9 30 ea 4a 65 73 ff 9c 5b 15 -fa e6 82 c6 22 d3 48 5c e3 a4 af 11 44 8f 23 bf -ef 83 8e 80 bc 32 7b 87 d5 ba 9c 80 37 07 49 af -c8 c1 c0 17 54 6f c6 b6 59 31 b7 59 ca 43 41 fa -5e 5e 10 b2 40 87 e6 e2 c0 f4 db b7 90 69 52 99 -9c bd 90 d2 43 5f ca cc 9c 82 e4 8f df 24 e4 95 -cf f3 0a d4 19 e7 12 3e 3a c9 42 27 2e 1a ba b1 - -# Prime 1: -f7 f7 c0 02 f0 19 6e cd d7 1b a5 ad 74 2b 69 48 -27 d2 88 af 1b 1b b6 9c 5e d7 fb 22 9d ee 4b 7a -32 f2 f7 56 8a 6f ca f3 83 d8 9a da 9f c1 4a 7b -a5 d0 a4 a4 6c 2c 54 3e ec 17 75 49 c8 a0 48 b7 - -# Prime 2: -cb c4 b2 86 04 76 a2 d3 e8 a4 da 21 00 16 ca ce -d0 e3 67 cb 86 77 10 a4 b5 aa 2d f2 b8 e5 da f5 -fd c6 47 80 7d 4d 5e bb 6c 56 b9 76 3c cd ae 4d -ea 33 08 eb 0a c2 a8 95 01 cb 20 9d 26 39 fc ff - -# Prime exponent 1: -6c 76 27 bc a1 3c de a4 96 a4 77 31 89 90 bb 7a -5e 40 ce 9c 99 24 e4 19 3d bb 07 14 3b 34 52 3b -5f 31 bb 52 55 37 54 f4 73 05 39 a6 cb 1e 06 f0 -52 b5 12 6f 01 09 da c7 b3 09 07 ba 80 50 eb bd - -# Prime exponent 2: -40 92 74 80 43 a9 d4 af 92 69 ab 36 09 f1 2f 13 -9a de 75 65 e9 96 91 8f a0 81 ed 4d 9d 8a 39 78 -fa 92 7a d6 1c df 07 c6 1c ee de 96 b9 6d f4 6e -7c 68 ef ca 8b fe 63 ad d4 83 aa 32 22 8a fd c1 - -# Coefficient: -2a 61 94 ca 29 70 72 38 45 ff f3 8c a1 a9 a3 b5 -66 b4 24 5d e2 f9 01 34 b8 e6 ae c8 ae 07 f3 bb -7c 5e 5a e6 e1 83 34 85 e5 5d 8c a6 0c e1 64 2f -72 75 96 8e 66 12 38 35 52 11 c6 38 48 94 0f 3c - -# PKCS#1 v1.5 signing of 20 random messages -# ------------------------------------------------------- - -# PKCS#1 v1.5 Signature Example 5.1 - -# ----------------- - -# Message to be signed: -ea e9 a4 0b ff 18 3f 41 14 73 2e 7b 3b a5 56 f4 -ce 28 8d aa 83 e3 ff 23 61 12 44 a7 a0 90 1f 11 -7d 86 c0 9c 33 a5 23 2b d3 20 fa 37 a2 38 a8 aa -62 dd 21 ab bf ac db 93 fa 1c 44 cc 55 ac 61 be -a2 4a 6a 34 cc 64 76 75 38 37 e1 6f ac d8 2e b4 -9e 1c 57 c9 58 fb bf f5 68 88 7c f8 2e eb e9 61 -e5 80 e0 64 db 9c be c3 b5 3d f1 f2 71 99 e4 9a -04 cb e5 9c 69 a2 65 cf ac 8c e4 f9 1c a9 5d 52 -b1 14 5c 8b 9f 44 40 b3 9c 18 50 94 be 18 48 74 -da 59 71 d7 d7 63 fe 07 ce 16 e5 7f 1e 50 d2 28 -65 04 b4 81 e2 c6 85 bc 9d 9c 01 49 3f d3 a6 d8 -bb 9b 2e 96 bf de b6 c9 29 14 ca - -# Signature: -44 ce b4 42 24 2b ae 08 59 94 ea d0 7b 70 95 43 -ea 23 95 a6 e8 d4 64 73 d7 0d f3 4a 95 55 aa 56 -7f 4d a1 38 e9 63 fe 92 86 a8 4f b7 c5 cf 82 00 -03 59 04 b5 0c 32 40 3c ae 51 7b fa 7f ca 8a 66 -fc fd 63 2a f7 47 c4 9c df b0 b9 ae e3 52 28 b7 -dc 4c 21 00 39 69 b0 a0 13 ed e1 29 2b 65 d1 0a -50 c9 02 63 fb 0b f4 f4 b8 37 66 41 b0 3e 1f af -b8 83 f0 38 f4 32 3d fe 5b ea c4 68 de ea 99 c3 - -# PKCS#1 v1.5 Signature Example 5.2 - -# ----------------- - -# Message to be signed: -9d e5 ca 46 74 85 61 a0 b9 28 b2 60 a9 5a 3e d9 -20 ad c8 d5 ee b9 27 1d c7 1b c1 4f 69 cc d6 31 -1d 18 6a 77 9f 5e b8 db 17 c6 90 d6 86 7c f3 36 -9b bf f1 5f ab b3 cd 2c fd d6 f7 d7 52 86 ff 2d -24 99 c5 ab b4 8e d5 4f d4 d8 49 a9 18 0e 11 0e -0a 53 a7 21 39 82 92 11 0f e8 be 26 - -# Signature: -44 5f f5 b6 87 9f 8c e7 53 95 01 6f 04 95 f1 31 -35 b1 79 e7 3a 3c ae b3 30 e3 cd a7 f3 1f 1d cb -a7 aa 82 e2 68 c9 35 e9 d7 01 4e 0b 0d ce a6 9c -7b 96 8a db 17 42 4a 64 df d1 e2 bc 57 07 f9 20 -fc 0c 83 cc 63 df c7 4b 96 3e 68 2b 46 a2 2a c2 -56 ac 6b e5 70 9c 07 cf cc 3d 4e ba 3a 1d 61 ab -15 f1 ba db 0a 49 fb 5c f0 9a 1f 74 81 a3 aa ea -f7 c2 57 54 03 77 ae a7 b5 44 17 a6 09 c7 6f 4c - -# PKCS#1 v1.5 Signature Example 5.3 - -# ----------------- - -# Message to be signed: -18 3b a1 a3 81 1d 62 5c a9 da 1b ba ae dc 76 19 -20 12 fc b6 74 bb 9e 77 d8 f3 77 08 d2 40 d3 49 -e0 57 97 41 6f eb 24 e3 01 8c 7a 20 5d 05 9d e8 -e0 ae 05 a8 d7 e0 9e af ee b9 f0 6d e5 d4 28 7a -bb ef 05 9b c5 86 b2 1c 82 d6 4a ec e8 d7 42 8a -fc d7 b2 2f c5 d1 68 bc 07 6b 61 5f 02 73 3c b6 -31 25 c8 f3 6d 5c b8 09 ce 80 65 08 23 98 b3 88 -5a 89 19 57 0c 47 8a 07 2f 59 66 15 d7 8f 01 36 -d1 1b e3 2b 3f e0 f4 fb e3 c7 da 5d 81 34 19 10 -17 7e 48 b1 bb ac 27 6c 12 ee 81 54 65 dc 67 d4 -53 24 f9 05 aa ca 48 38 d8 1f 74 31 46 3e 89 eb -8b 95 36 58 69 36 af b4 2c b4 7b d8 c3 18 29 d3 -1e c1 ee 29 f9 1c cc 6d f9 cd 1b 0b 9b 86 46 b6 -02 67 fd 7e ce ae 92 c0 ae 9e 0c e5 ff 6f 7e 0b -f7 56 a9 b8 ff c9 c6 16 - -# Signature: -ab 4b 78 96 4c 2a 35 d3 28 55 e0 ef ce d3 4b f8 -02 19 b5 8c 48 8e a3 75 b1 f3 27 16 6a 51 35 e5 -da 99 45 c2 87 29 7a 3d 93 2e 57 27 46 f0 22 74 -8b 85 58 5a 0a bd 91 86 f4 ac 35 ed c8 50 d2 fd -88 05 b9 e9 f5 1a 5a dc b9 5e 1a c1 72 9e 57 b8 -53 31 c1 ed 15 c3 d0 cf ae 33 f6 1c 11 9b 55 c9 -5e 34 4b 72 f2 b4 f8 e7 e8 fa c7 a3 3e 5b 8b 27 -6a 60 88 a7 fa bf 4f a1 72 35 7f b6 e3 f4 4a 94 - -# PKCS#1 v1.5 Signature Example 5.4 - -# ----------------- - -# Message to be signed: -87 07 dc db 49 d2 83 a2 3a 9b d6 ff 87 af f8 34 -f0 6f f7 f4 7b 0e 5f 57 ff 1a 0d 99 5b ba 9c dd -5e a0 1b 42 b2 5d 6f f1 7a 0d c1 06 05 cf 45 2a -ca 73 be 54 ed 5e 0c e2 15 66 af cc 17 91 2a be -18 df ac d1 bc 03 e3 e2 88 2a 4b b3 a4 f3 9e ea -f9 63 d7 c3 5e 6b a8 58 b1 37 6a 07 51 60 c6 cf -ae d5 e8 c5 2e 45 11 32 34 72 19 bd 88 89 3e eb -e3 56 59 a0 ee 4d 94 f9 4d 03 5b 7a 86 86 ff b4 -16 eb 99 fb 2a aa 81 23 6b 05 ac 46 45 92 5f 2c -2b c1 9e be 89 a6 3f 2f 45 1d 0b 13 b2 fe f0 61 -e5 30 a3 49 ba f3 b2 35 64 22 b0 95 fd 9f 19 29 -93 ab 99 c9 f9 22 6e f9 a7 b3 cf b3 65 82 08 59 -29 c8 76 b5 e9 d7 c6 ac ac 7b b0 27 52 34 e4 1e -d3 51 c8 38 b7 a3 1a - -# Signature: -17 53 98 8b 39 dc 74 5d f9 69 1a f9 ee 69 ca da -73 a9 87 7c ca 12 f6 d4 06 27 dc ed 76 22 14 7e -c9 01 a5 b4 63 e7 ef 9b 37 fb d6 92 78 5a a2 2a -46 5d f4 03 af 92 a2 9f 79 5d 40 a8 3f a9 64 b8 -5a 7e c0 5a 3c da e3 f8 bc 8a 61 a7 9d c8 42 e1 -d3 77 bc 5e 1d 46 ad aa a8 66 be 28 2c 6e 23 88 -17 36 44 f4 06 27 bc f8 a0 97 4a 4b e8 fc c4 8a -ee 7e 82 59 f8 68 a2 bd 78 9a 90 89 92 05 6e 55 - -# PKCS#1 v1.5 Signature Example 5.5 - -# ----------------- - -# Message to be signed: -ac 9f a3 f6 3d f0 68 e9 0d 69 2e cc fa 7d 87 96 -49 1a ca 79 5b 98 58 a4 55 18 62 32 29 af 28 b1 -3a 50 2d 8c b3 b9 50 92 50 58 82 eb 99 4d e7 46 -59 62 56 98 a0 05 04 17 94 0d 8b fa 28 a3 f9 3d -14 9f f8 b0 bb 39 26 f6 18 ef 91 96 6f 4d 39 bd -ba 5a 05 17 dd eb b1 6d 2b c4 b4 e3 3a 7d 61 9c -95 a3 3c f5 f5 72 db e0 7f ab 4a a6 7f b3 f3 9a -a2 98 1a 3d c0 ca ee 64 75 8e a8 98 eb ce 10 bf -3a a4 fc 84 49 e8 e0 cf 7e 88 b1 88 23 8c 20 68 -ef ac eb fe ef 40 73 a6 54 a5 8a 30 99 d0 36 ae -ee 2d 81 82 98 d4 ab 39 23 8e dc 45 9a 9f d3 57 -7e 9f 5b fc 03 68 aa 65 7a ee da 1e eb 8a e7 f5 -ac 1e af 3b 1c 95 81 7d de 2e c1 a5 9f cb 5e f2 -7c c3 4f b7 53 31 da 7a 49 96 92 5a c3 ad 17 bb -c3 da fe 6a 9c 64 4e 30 98 ef fe f8 fe a5 cc 0d -5f 0c 04 8e 10 88 - -# Signature: -11 e1 a8 28 f0 0a 98 7e 03 d6 2e 2a 53 6c 29 7d -da c0 22 e0 63 ee 0d e4 e4 69 5d ed 1f db 22 09 -00 a3 ac 3f 87 d1 be 75 f9 59 c2 8b 57 8a 43 b2 -56 64 3c df ff 92 15 95 fd fb ea f4 10 c2 ae d9 -e5 e4 7e 1d 15 1a e2 8c 76 99 ae e2 25 a6 45 bc -42 b3 be b5 2f 08 38 7e c5 54 d0 20 4d 28 3c 3b -cc bc ca 21 6e da d9 4e c6 4f 9c 20 b3 40 6a b7 -8a 6c 4a 4d ae 3f a6 17 a0 0c 6a b2 f8 e2 47 62 - -# PKCS#1 v1.5 Signature Example 5.6 - -# ----------------- - -# Message to be signed: -15 74 69 73 44 e9 86 85 cd 6e 65 e4 67 83 f0 b5 - -# Signature: -3b 7d 67 d1 3c d3 c0 fd 30 5a d4 04 d8 a3 dc de -4a 45 17 9c 2d 0b 87 11 5d 6d 06 0c 24 9b 87 f3 -9e 46 3b 76 4b 42 07 c4 8a 74 cf ce 25 31 e8 18 -3d 3d 01 25 85 ce 57 39 d1 62 c4 ea 22 32 44 02 -ea 2e 6e af b8 a5 73 fc ff 40 15 c9 5c 45 e4 ca -7a c5 1a e3 a0 6f 42 1e 60 6d 68 3f 5e 12 2b 55 -79 14 8a 9c 46 6a de b0 24 28 f4 89 6a 86 df 63 -be 58 7d dd 7a 6a 8d e7 17 6b e4 e7 ff 4a aa 99 - -# PKCS#1 v1.5 Signature Example 5.7 - -# ----------------- - -# Message to be signed: -be 46 be 8b dd 85 43 d3 70 bb b7 ac 83 9f 5e 64 -53 f3 0c d8 75 2a 4b 92 67 32 c5 9e 61 09 04 4b -e3 a0 75 6c 70 25 a2 32 80 df 2e d7 66 ba 39 ab -b2 0b 94 4c 06 5f e1 48 7d ea 31 b4 70 8a 68 9a -50 b2 8d 54 29 94 cb bb 3a 5b b9 46 0e e7 a9 c1 -53 8b da 75 1a 52 8b 76 70 f9 15 78 d6 67 3e 08 -ab cc df 5f 4d 8c 1e be cf ca c7 5c c4 2d bb b8 -cd e3 c1 b4 74 b5 56 b3 2b b8 48 fc 32 7b a6 e3 -cf 5f 77 b1 eb c0 4a 19 f3 c8 c3 9b 6b 84 77 84 -ea a3 25 a2 b6 f3 - -# Signature: -91 de 2f 90 32 47 b2 d1 3a be 93 dd d9 6d fa ef -1b 4d 17 2b 09 09 58 f0 cc 34 fa 92 83 5a d6 0c -44 b4 27 fe 03 1c ad bf 92 ff 1c d0 38 41 44 c9 -b5 f2 8f 64 5c 63 e8 d7 16 bc ec 2e 04 3b c3 96 -56 64 17 85 c2 6b a3 6b a2 a1 09 e3 64 4e bf d9 -62 d7 a3 16 91 6b 3f 13 66 20 13 cc 0f 37 ad 8f -9e 0d 9e c8 b4 c8 ad 5c 75 32 cf a0 44 ae dc 73 -78 77 94 c2 98 79 7c 8a 7e 14 49 ea d6 15 0d ed - -# PKCS#1 v1.5 Signature Example 5.8 - -# ----------------- - -# Message to be signed: -0b 7e 06 63 e7 15 ea 38 bc 93 0e c9 d8 e2 a0 29 -aa 1a 4c 95 e7 b2 00 47 ae 15 44 d5 b2 d8 47 6f -c8 05 53 9f b0 ef ab 7d 5f f1 2c 36 d7 6a 79 7b -75 c0 b5 3f a9 26 54 73 da b6 80 c2 55 d5 7e 99 -b6 d9 fe 08 cf 1a 57 34 91 e2 19 78 fa e9 53 9c -c0 58 84 63 3a 1d d5 cb 21 53 6f d4 2d dd 73 1c -a7 6c 34 57 81 3c e1 bb 59 c2 1d d3 1b f2 ae 3b -fd 7d 20 c6 c7 12 a9 dd 43 95 1f 1b 19 8d ea f7 -41 08 ea d2 29 26 d2 b0 19 1e 59 d5 f6 79 ad 97 -c7 1e dc 69 de 97 98 7e 54 3e 87 a9 6a 9f ee 77 -e3 f0 ea 95 7b d4 6a - -# Signature: -48 51 09 8a 85 e7 0d a3 33 92 a9 e9 0b 34 76 a4 -8b a0 e3 2c d6 ad 3d c1 dd 91 da 57 e8 8d fb c7 -b6 57 4b 08 e8 71 60 80 e1 5d f4 05 79 c5 70 5d -5b ef 58 4b 08 b2 63 db c4 f0 d1 59 56 ff 11 25 -c4 8f 89 59 1e bc 94 1d 9f e8 f9 a7 80 c8 2e a3 -2b f3 ef a1 6c ab be e5 80 fd 6b 95 74 08 0f 69 -07 fe af f8 1d 48 c4 9a 6d e2 24 84 80 f1 d8 52 -39 e9 a4 18 dd 53 10 de f7 76 e0 8f 50 9a 14 78 - -# PKCS#1 v1.5 Signature Example 5.9 - -# ----------------- - -# Message to be signed: -13 42 33 ba cf a1 6d c8 4d 8f a4 bd bb 47 93 d1 -da c0 7d 60 54 bd 08 39 61 da 68 67 9c a3 75 33 -4f 09 20 b9 df b8 a6 8e d7 7f 27 fd 92 19 28 13 -61 e0 9f a6 08 4f 96 e6 98 85 b4 7e a7 75 af 06 -77 2d 66 12 d4 d1 6f 4a 5c c4 cd 0d 1e b2 3b 7a -1f 09 56 4b 84 2e a0 7c bd de 60 45 3a 2a a4 ab -69 dd fe b5 b1 3e 9f 08 cd 07 2e 5b 71 ce d3 34 -ea 70 4c 74 9f f4 72 7e be 12 c0 29 0e 00 a8 41 -d7 4b 06 55 cf d8 06 5d 28 20 fd f8 fd c1 bd 45 -58 81 80 8b ff 0e c7 27 60 74 75 bf 0b 2b c8 93 -59 58 32 9b 77 8e fc e5 60 fc 26 c3 bb 6e 2d c9 -ae f1 8f 96 9f ba 64 74 5e d4 d8 5b 14 75 7b b8 -33 ea db 9c 5c b0 ea ed 08 d3 0b 95 15 00 5a 3e -88 09 1f c5 cd 2f 36 ad 95 5b 7c 6f 2b 19 bb a3 -74 fd - -# Signature: -3e 37 b4 2d be c1 29 db 81 c5 e2 a2 22 f3 1e 81 -b9 37 ff 02 24 95 18 18 37 30 37 8b 4c 09 2a a7 -f3 b2 34 59 61 1a 82 4f c5 27 54 42 1a 27 cc e9 -18 b6 2a a7 b4 46 38 a0 c0 82 79 80 52 a5 88 46 -68 82 51 06 90 ac 77 30 23 28 02 46 c8 90 ff 1f -62 27 04 9e 66 8b c9 d6 e4 89 b6 94 4a 34 e8 f9 -30 02 bb b0 0d 75 2b 57 7c e3 52 53 00 82 be cd -30 9b 0d ac cd 1d 68 d0 6e 1d f7 12 21 c6 22 69 - -# PKCS#1 v1.5 Signature Example 5.10 - -# ----------------- - -# Message to be signed: -35 da 3d 02 34 bd 74 fc d7 6e 8e 69 52 8f 65 1b -88 27 1c bf 16 28 69 38 c2 c4 a3 7d 41 1d e8 f6 -75 78 eb 8b 3d 20 a8 fd 7d cd e7 b6 56 fe 96 a6 -80 87 32 28 ed 0f 9a 62 0f 15 05 44 23 72 f9 b2 -b4 16 84 98 72 34 90 f8 11 f3 11 1f 5f 77 38 63 -47 b4 82 2e d9 d6 b5 53 83 92 21 5c b6 c4 86 5b -b7 b5 b7 e2 84 2e ea 0e 90 01 ca 0c df 5d 6b - -# Signature: -12 ff 2a b5 fc 83 d6 49 59 7c 47 bf f3 29 b7 f4 -61 db bb da 01 fb 6b ad 26 54 3e 4d bc d6 0c 5e -2c de bf b1 12 78 4a 96 4e 27 f2 a2 e7 fd 07 ec -39 0a ab 14 94 37 03 58 a7 5b 5e 1f a4 f1 ad 52 -02 e6 d5 46 c0 f3 15 e8 6f af f1 d2 5b 94 72 82 -da 32 ea b5 6c 22 f0 6c 8a 9d 32 ae f2 81 d6 f0 -aa 55 d7 ad 3b cd fd b2 09 a1 6e f4 5c c6 f9 68 -2e ae 96 3c bb 21 3a db 7f ad 1b ef 49 c0 70 4f - -# PKCS#1 v1.5 Signature Example 5.11 - -# ----------------- - -# Message to be signed: -75 fd b0 72 73 f7 54 d1 11 6f 99 7a f2 d1 1a 51 -2b 94 e9 e0 48 01 b3 fc 73 91 30 b7 47 b4 be 87 -44 d7 e7 f8 a2 97 a0 89 d9 05 0c 5f 54 f8 a3 9a -a3 f2 - -# Signature: -07 ff c1 b7 a1 0d da ba 96 05 f0 a3 d9 3c 8a 5e -4c 0b 77 58 61 39 05 07 31 d9 cc 9b 3c 83 d2 b7 -3f af 9a 4e 24 d1 c8 bb 0d 62 3d f1 0f c8 40 7d -15 14 48 fa 43 ee 65 81 e7 b0 ac 80 d1 4a df a4 -f6 d2 7a 76 67 50 b2 31 cb c1 c5 cf d6 2d f1 b9 -72 7d 8b 87 41 46 9f 68 e5 0a 9b 3b c7 ad e1 37 -db 06 74 76 03 74 28 56 d5 e7 dd b4 e1 6a 5b 49 -d7 36 5d b2 76 3b f5 fd ea 08 3d 81 fa c9 2d 87 - -# PKCS#1 v1.5 Signature Example 5.12 - -# ----------------- - -# Message to be signed: -96 c9 fa ce fb a2 ed 33 ed 8b 7b 3d 8b 6d f2 8f -2f ab 0d cd d7 a3 cd 7a 7d ed a2 54 5e d4 47 0e -d2 5b 46 d2 16 6e eb b7 e1 47 10 17 83 b6 45 ba -c6 26 64 b8 72 70 09 f3 5d 1e a5 fd a5 e7 c2 8d -6a f6 fe 92 04 6c a7 24 ca b8 42 5a 52 a0 85 f9 -ac 90 83 d4 d6 90 bb dd df d0 a8 2d 94 8f 70 d6 -85 e2 6b b9 f5 27 40 8a bc 84 7b ff 12 02 de df -6d 2f ac 6c f3 68 2a 51 6b a7 2f 4f e9 7b 90 46 -6a f6 e5 43 12 31 65 b8 a6 83 ca ba 2f a2 3a 86 -ac 06 21 30 65 e1 ed 9b 4f 49 af 4f ff 6d 46 b3 -6d 13 3d 8d a2 dd 29 d5 5f 9f 32 2c 40 78 5d dc -21 c4 26 c5 e0 a6 7d 41 4f 5a b9 71 c4 46 0f f9 -b1 14 30 5a 8a e7 e7 b9 5c 73 03 4e 8e 93 c0 35 -29 dd 50 c9 4f 07 62 79 77 5a 5a 3a 80 c5 d2 48 -6a 2d 51 08 48 bd c9 b8 52 ac 1d 32 ce b7 c0 41 -a0 8f 2f 8e 62 - -# Signature: -46 d0 3f ae c4 a7 23 18 62 1e f4 d0 c1 bc a7 1a -2a ee a7 a8 1d f8 fe bb 8b a3 fb 35 40 d7 2d 15 -34 b9 82 69 16 e8 9f 27 d3 25 67 6c cf 5a 0a a1 -61 12 db 2d 93 03 e0 eb ce 4b 85 58 7c 55 ac a0 -68 50 de 84 de c2 13 d1 13 74 04 a5 de e6 ca 88 -d9 1a e2 8b 7b 53 6c 90 20 2b c7 72 6d a5 04 2a -85 08 d3 b1 3c fb aa dc ee 12 78 d3 5d 30 3a cf -ee 6e 07 41 90 49 11 a5 f1 88 10 ad d3 e7 b8 f6 - -# PKCS#1 v1.5 Signature Example 5.13 - -# ----------------- - -# Message to be signed: -c4 b4 c9 96 6e 56 f4 0a ff 47 08 13 1c d3 71 44 -21 34 3e de 70 c4 d4 6d b6 ef be 1b 19 a9 e3 c2 -e5 81 06 00 8a 98 38 59 cf 94 2a 31 97 74 69 5a -0c 98 a9 63 e2 fe 9d 93 79 bc - -# Signature: -b1 6b 10 f2 bd 7e a0 f7 6a 9e d2 ff cf 3e c1 0e -dc b8 24 60 fe 55 82 a7 76 4c 0c 50 56 ec fb 09 -72 06 48 d5 f1 9b 3d ea f2 ac c9 86 46 0e 71 14 -26 15 83 a5 f4 a9 90 e9 22 fe b5 b4 78 97 34 fd -cc e1 5d dc 87 ca c3 f6 c7 c9 e9 e2 19 23 15 f0 -84 1f 43 ea 86 de a9 a9 38 05 08 b0 6c 9c a5 e9 -d4 a6 51 d0 12 16 62 7c 46 6b f0 d6 ae 74 4b f3 -0f d7 91 a8 21 03 39 f5 05 7f f8 5c eb 84 f1 96 - -# PKCS#1 v1.5 Signature Example 5.14 - -# ----------------- - -# Message to be signed: -b8 38 a5 d8 88 95 0f 1b 8e 4d 94 7b ba 51 af f9 -bb 60 b8 3d 09 ed 9d 97 96 7a 76 95 5e d1 dd f0 -48 15 20 bc f4 f0 8b eb bf 89 9c c7 c3 ef 0c 04 -d5 00 1b 1e 2e 84 5f af c5 83 30 0c 98 ac a7 a0 -3e 90 a4 34 de 77 fe f7 20 da 36 63 f2 19 98 20 -8a 94 f8 94 76 7d 3e d8 13 96 b7 ef b2 86 e0 ff -7d b6 ea 8f db 4e 72 83 46 00 fe 5f 7f 15 0a 01 -b1 d4 a0 8b 5e c9 ee 1f bc 10 01 d1 2d 52 36 db -f0 72 7e 7e a3 60 78 f3 eb ac 50 46 b7 65 b4 e2 -3c dc ef d1 15 d6 2a 50 34 4d bb d7 42 8d 48 ff -c9 4b 11 e2 1c - -# Signature: -b1 56 81 ee f2 96 a6 6b 9f cd 66 30 f8 9c 55 82 -6a 38 9e 0c 2d 3d 47 6a 0f 8a 1e 08 cb ca cc 66 -02 c7 14 43 8f 32 f3 4e 02 c3 6e 5c 0f 16 8a b0 -28 91 7e 90 50 fb c8 50 f0 cf 65 d5 ee db 3b 54 -be 54 95 bb f0 fa ee b3 2b be 5a 8f 87 bb ac dd -25 85 fb 90 7b 13 18 5b 02 61 56 63 d2 01 1e f2 -3d 0a b0 4d ad 1f fa 67 9b 53 15 2c 9c 42 b8 46 -39 68 4e ae af 64 4e 4f c6 ff 2e c7 d4 7b a5 ac - -# PKCS#1 v1.5 Signature Example 5.15 - -# ----------------- - -# Message to be signed: -9f d5 39 c8 ad 86 49 24 ee c1 d6 55 c0 7d 1f 28 -27 0c db 32 6b 57 2c 46 67 ec a6 48 8c 03 36 57 -ff 29 25 4b 91 f3 21 6e 1c ac 97 97 53 f2 23 b1 -79 ea 5f 9e fc 23 6d 40 1d 1b 9a 3c 20 eb 2a fc -9b fc fd 07 92 ac c5 b0 0c 98 28 a6 45 - -# Signature: -38 bf df d3 27 2e 48 cf ee 68 ce b9 13 04 eb 91 -ee 25 e4 83 40 1f 30 fe 12 d5 e4 35 18 e4 b7 71 -14 a1 2c 8c 79 92 ae e7 d2 e7 74 ff f9 1d 8f d1 -cb 7c 6a 2a df 79 b7 c8 ab 93 e8 37 4d b7 4c 26 -90 9c 65 9a 97 c7 6a 22 2d f4 fc 8c 7e f5 19 90 -80 ea ae 2d 03 1c a7 51 c5 01 32 89 db 4e ad 77 -b2 8b 76 a4 c4 96 ad 0e b4 22 fc a8 8f c6 84 e4 -2a ea 88 fd 33 c2 56 75 1b a0 66 83 4e 77 a1 e2 - -# PKCS#1 v1.5 Signature Example 5.16 - -# ----------------- - -# Message to be signed: -1d e8 07 40 9d 0a 61 b0 32 2d fe d4 99 e8 c3 32 -41 ec 89 cd 7d 9f c5 - -# Signature: -8b 66 64 f8 69 d7 55 c5 d3 e6 df 99 22 e2 27 c1 -10 91 8a 6f bd 88 c1 a2 e1 28 95 23 ad bb d8 aa -43 1d 07 86 85 3a b5 96 dd 5b 00 12 43 b5 4a 2c -b1 0c 31 66 bf 00 23 38 fc a2 03 45 ae de 1b 22 -ea 1f a3 d2 41 c8 6c 76 bf c0 2f 4f ce ae 12 c8 -a9 d7 e4 4a d6 17 16 65 e8 8f 12 85 22 dd 53 5a -9d 65 00 8f 6a 73 2d 40 af 20 4e 22 0f 1f ac d9 -42 e0 9d 15 09 9f dc 51 b3 a1 42 6c b2 dd 32 93 - -# PKCS#1 v1.5 Signature Example 5.17 - -# ----------------- - -# Message to be signed: -4b 2b cb 26 79 a1 4c 3c 4c 06 9e d0 89 a6 5a ba -29 f2 2b 61 78 c0 - -# Signature: -1c 47 82 8e a5 3f b6 43 6e 95 96 b0 ce 47 d9 f3 -8b 5d eb 0b 19 7c 1b c4 74 e2 e8 22 65 70 cc 1b -72 f2 39 31 2a e7 c3 c6 38 2e 1d 8c da 7d 4f 12 -fe ba d7 0a fa e5 ac bf 24 28 ab c0 44 21 bb 4e -1e 59 90 11 1b 9a c8 3c 62 43 5c 21 aa 25 fd 9b -49 07 58 54 11 d2 53 ba 9b 87 78 f6 24 05 3d 46 -fe 95 d7 e2 2c a3 93 81 c7 79 2e ff 46 43 8f bc -16 5e d7 62 9c 2f c1 ce f1 b3 4d 77 76 8a 20 55 - -# PKCS#1 v1.5 Signature Example 5.18 - -# ----------------- - -# Message to be signed: -ef 46 ae 51 e0 15 8c d0 ef 9c 78 d7 1e 00 15 67 -d6 6a e3 c5 e9 a6 4f 24 57 15 c7 c2 ad 8e ea 0f -9d 32 00 23 07 2f db 0f b8 6a 45 21 7f d7 12 cc -80 e5 b9 41 47 c4 5f e0 0b 69 2c cd a1 10 25 98 -41 b2 c7 e5 c3 dc ff 59 56 f2 a5 96 cd a6 8e b7 -7f 4c 85 90 d7 36 b8 fd 60 66 77 3e f6 f9 5a 38 -cd 38 4e 94 83 a8 9d c2 b6 c2 e8 74 5c 95 c1 2f -a6 72 a1 be cf b6 3e ac 9b 55 3e da 8d 29 37 54 -ec 39 47 ea c0 22 8d e2 63 14 b5 9b 66 99 4c c6 -0e 83 60 e7 5d 38 76 29 8f 8f 8a 7d 14 1d a0 64 -e5 ca 02 6a 97 3e 28 f2 54 73 8c ee 66 9c 72 1b -03 4c b5 f8 e2 44 da dd 7c d1 e1 59 d4 51 d4 bf -65 80 f3 e6 9c dc 02 71 38 2e 8d c1 4b c7 33 af -38 99 2c 1c d8 82 c7 b1 50 d2 3a 06 7b 9b cf 3c -cd ab 6b 0f ba 13 2b 4c 14 47 c8 7c 39 3f - -# Signature: -8c 1d e1 5a b8 6c bf 5b d9 31 7c e2 b8 fc 82 f5 -72 2d b6 96 1c 9f 55 51 40 f7 8e bd a2 4e 3f 51 -fd 73 01 c1 e4 fe 12 b6 95 7c 30 14 4f a1 e1 27 -27 46 03 dc 02 05 11 30 b2 53 85 fc 86 46 ee 96 -a7 45 50 d2 d6 3f 85 81 85 bb 98 46 52 a3 43 1d -53 3d a6 01 46 22 a6 4e 06 91 66 2a 4f 7c 9d 58 -31 9b a3 f8 5f 19 18 24 75 e1 50 9b bf 21 3a f0 -10 10 b4 b9 f8 2e 64 75 11 fc 97 c6 b7 c9 7e 8d - -# PKCS#1 v1.5 Signature Example 5.19 - -# ----------------- - -# Message to be signed: -f8 7b b1 2d aa ad 62 c8 64 ac 3d 44 4d 51 4e ec -6e 59 b6 7c d0 82 0d fc bd f8 51 ea 73 89 1f 58 -a8 be 6e 84 3e e8 77 3e 4d c1 c7 d7 42 da 82 ff -16 c1 01 1b 99 56 6b 9f 3f d1 7d 68 d5 ac 99 ce -f5 a3 a0 f7 53 18 76 9d c0 13 bb 05 5b e1 30 56 -df 49 a8 39 b8 39 52 51 39 9b 27 a0 bb 31 c5 54 -ae df 3d 9c 74 82 b6 62 0c 5d 7c 69 14 a5 64 db -04 a0 00 04 56 99 ee 1e 50 88 a5 b6 8d 81 4e fe -9d 13 0d c3 4e 2b d9 78 51 13 9c 73 46 07 65 b1 -f2 65 46 86 fe de 9c 9b 3e 92 40 9d b2 d4 2a 32 -ba 9e 20 bc ae b2 c4 f9 ff 9b 0e 83 4b 74 92 a2 -b1 d8 c6 5c 8b a4 98 34 2a e7 d1 d9 fe 74 05 c2 - -# Signature: -20 7a 34 8c df 68 4a a8 e1 a4 af 7b 7c 25 27 07 -ce 6f 1f 9d b2 29 1f 2a 95 a0 71 5d 9c 7f c5 1a -a2 30 11 0b 5b 51 8a 9c 8f 95 8d d2 0c 75 24 d5 -b6 51 06 d7 42 1b a9 fc fb 78 91 78 41 2c 36 40 -f5 40 b8 1b b3 18 97 d2 64 5e c7 9d 8e 59 75 04 -8e 45 22 61 a1 c2 00 9c fe ee 07 15 a0 1b ee fd -75 e7 04 b2 a6 f0 f0 ae 7e a3 6c 53 cf e3 6f 57 -f0 34 e3 85 44 8f ca ab 08 dc ff 47 7d 36 ff 15 - -# PKCS#1 v1.5 Signature Example 5.20 - -# ----------------- - -# Message to be signed: -4c 4b - -# Signature: -1c b6 88 12 83 dc d1 86 3b a7 9d fb 22 35 1b c9 -a8 e0 35 8b 2f 8a 1d e3 f9 06 5d 8c a8 59 31 4a -e1 12 13 a2 cc 87 b2 f6 32 ef a6 7d 21 03 f3 82 -00 b9 19 3e b8 d4 99 82 09 9a fc 74 42 8f 4b 41 -31 6f 48 78 b3 f6 00 bc 2f b3 04 58 cc 9c 2a 03 -4a 06 8e 98 d5 7a e7 9c e3 e2 fc 84 b6 a7 45 f0 -37 a5 de a2 b9 da 4e 8d b4 ad a6 9f b8 2d 20 a4 -1b b8 43 07 93 ee f9 2a 4f d6 18 6d 17 96 63 cb - -# ============================================= - -# Example 6: A 1024-bit RSA key pair -# ----------------------------------- - - -# Public key -# ---------- - -# Modulus: -d6 31 14 57 e1 ca f1 22 44 36 69 79 83 c8 6d d3 -38 20 58 62 d2 a1 05 ba f7 10 34 28 fd 83 53 a1 -9b 7b a4 22 8f 78 b4 7f 79 07 35 70 34 c5 2d 85 -97 da 2b 5d 13 dc 53 5b 83 6c 74 13 0a 36 48 91 -8d 4a 7a 83 99 0c 2e 28 81 6a ec 0f ca 01 d1 05 -c6 c6 52 ec 57 33 d0 1f 00 58 b2 df 5a e6 73 33 -40 5a 3a 5b 12 20 a2 6a c3 d1 42 f2 b4 d8 37 eb -73 86 a4 0a 74 cc 3d 1e 4f bc 64 fd 7d a6 3c 41 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -d6 31 14 57 e1 ca f1 22 44 36 69 79 83 c8 6d d3 -38 20 58 62 d2 a1 05 ba f7 10 34 28 fd 83 53 a1 -9b 7b a4 22 8f 78 b4 7f 79 07 35 70 34 c5 2d 85 -97 da 2b 5d 13 dc 53 5b 83 6c 74 13 0a 36 48 91 -8d 4a 7a 83 99 0c 2e 28 81 6a ec 0f ca 01 d1 05 -c6 c6 52 ec 57 33 d0 1f 00 58 b2 df 5a e6 73 33 -40 5a 3a 5b 12 20 a2 6a c3 d1 42 f2 b4 d8 37 eb -73 86 a4 0a 74 cc 3d 1e 4f bc 64 fd 7d a6 3c 41 - -# Public exponent: -01 00 01 - -# Exponent: -5e a6 11 77 44 2f 89 9e ba c5 d0 96 01 c5 ef c2 -06 6b 44 a3 66 b0 00 f8 3d 74 cb 97 d1 6e d6 e5 -f2 ef 0f f8 b5 ad 81 15 53 45 fc 37 39 1a 68 a3 -40 17 08 52 79 14 43 41 8d 31 bf 99 2a 4a 12 86 -6f e9 ff cc de bb bb a6 37 ee 88 7b 71 6c aa 92 -e2 49 ce d6 57 ee d7 1f 5c cd d9 16 3f 32 69 52 -5d 78 9f 4b 33 c4 8a 95 76 44 36 ec 32 5e 86 89 -69 1c 27 2d 90 bd 88 88 98 51 37 2f b8 dc b9 - -# Prime 1: -f3 d4 b8 51 ad 7a c7 78 be cd dd ae 71 b6 13 f6 -59 7c 70 75 c4 d2 8d db ae 1e fa cf 03 59 71 ab -63 ee 90 db bd fb da 43 25 a1 5f bf 84 5e ea 54 -bb cd 05 57 4b 1c d6 01 dc ad ba 12 06 28 05 b9 - -# Prime 2: -e0 e1 ad 57 d6 8f 30 13 28 8c 14 83 e8 c5 b1 2e -fe b6 ec 14 5a e4 18 8e 1b 3b 39 04 87 90 0a d2 -c3 25 d2 32 80 6a 62 17 34 2a 65 75 95 14 f2 26 -8f ca 72 c4 c5 bb a0 32 81 89 dc fa e2 06 ae c9 - -# Prime exponent 1: -3b b6 d2 d5 1d f9 3d b4 b2 75 d4 5e 8e 76 9a f8 -ef fd 6b c5 4b c8 8c f9 49 f1 48 57 3e 68 bf 4f -cc 0f 76 e6 79 e6 9e 13 67 b9 d7 ab 1d 8d e9 31 -8b 34 b0 a4 2a 3f 0b a2 35 1b 4e c0 6f 45 89 f1 - -# Prime exponent 2: -71 f4 aa 5c 8a 93 80 af 14 aa f7 72 68 b0 55 3b -15 44 28 99 9f fd 5a 1c 18 dc 87 e6 2d b3 e6 68 -2b 0f ad 56 7e 10 6a a8 8b 7c b8 71 3f 1c a0 20 -be 58 be 93 cc 07 6a 04 6d f4 28 90 d1 9c c5 51 - -# Coefficient: -23 1a b8 dd 9a 56 99 d7 97 59 11 ef 0e f8 7c 28 -dd b9 2e 24 6e c3 4c 5f ac 33 83 22 dd ec 89 8d -56 68 67 45 3d e6 d7 8a 45 c3 16 b1 45 a2 86 18 -94 0e 1a cd 11 58 c3 af 92 fa ab fd c3 97 84 32 - -# PKCS#1 v1.5 signing of 20 random messages -# ------------------------------------------------------- - -# PKCS#1 v1.5 Signature Example 6.1 - -# ----------------- - -# Message to be signed: -8f 75 0e 65 95 1b 5d e7 58 14 b0 b7 66 30 dc 9f -1c 62 53 a0 59 0e ac b5 51 2a 8a 4e 1a 8b e8 52 -5d 36 94 1f a9 d0 92 f6 bb 44 22 aa 8c 0a d6 42 -3e a2 8c 10 ca a6 e9 54 b7 95 69 d4 4c 86 0f 1c -65 81 eb 17 a7 54 3e 7b f7 fe - -# Signature: -b1 8b 5e c8 8d 4e 24 c9 14 b6 65 ff 9a 2c 75 f4 -e9 19 37 df 8c 19 95 59 43 e4 51 ad df 34 84 e4 -97 97 8d 26 da 23 1a f1 4d 9c 29 27 ed 21 0a fb -f9 de e3 32 67 aa 45 68 46 49 e8 6f b2 25 a0 53 -b5 45 52 90 c3 20 e3 f6 40 62 3c 75 ca 42 37 21 -f2 80 b8 87 44 24 97 f3 2a 90 d7 8f 64 44 04 77 -ad 09 27 c7 ba 01 c4 4d a9 d5 c2 83 a4 38 be 0d -c5 80 a0 05 28 fc 65 e2 04 d4 2a 2d 4e 29 13 c1 - -# PKCS#1 v1.5 Signature Example 6.2 - -# ----------------- - -# Message to be signed: -bd bf 3b 36 40 73 fe 04 8f ba e5 5e 3c de 66 8e -84 f7 53 ab fc 71 0b 8c db 7b 6c 0c f8 2d d5 b6 -74 d2 1e 2b 3e 36 b1 b0 36 0d f8 bf 7e 62 27 c9 -2e 15 f3 d7 84 - -# Signature: -66 ac f0 43 bc 6a ae 81 a4 d5 2b 4e 8c 40 12 8b -25 c6 d1 0a 8c 69 8c 83 ae d7 1e 8f 35 83 89 8b -e8 f4 c9 be a4 b6 31 90 e2 15 26 ca f8 3a b1 4a -4f 8b eb e8 13 a5 ab eb 95 95 67 bb 2f 06 c5 f1 -1e 46 4b 5c df 7b 2a 13 2d 42 6d db ec f5 85 90 -0a 0d 80 92 ca 52 b6 dc 0a bc 35 f1 40 94 69 89 -46 e1 cd 0e cd 6b d4 1e 2c 6f 96 3e e8 9c 82 19 -3e cc 5f d4 76 30 d3 4a d1 6c a2 47 9e af 06 2d - -# PKCS#1 v1.5 Signature Example 6.3 - -# ----------------- - -# Message to be signed: -3c 5c 74 bc 8f ae 80 7a e5 8b d2 13 e6 27 2a a3 -85 79 31 57 5c 2a a2 be 4b ca e4 d7 9a e0 87 b6 -b8 6f 91 5d f8 c0 96 c1 22 ed fb dc 79 7f 9d 70 -b9 76 13 97 fc e3 d3 e0 b8 a6 f2 56 db c6 60 5b -a9 48 d5 fb e6 f5 24 5c 02 95 ce 5d d7 3b f7 43 -65 17 f7 c4 22 2d 2c fd 85 42 e7 a1 00 cf 05 13 -04 a1 ab 6f e0 05 da 07 7b 62 87 8f d0 b7 41 e6 -27 1e 0d 34 6b 20 72 3b 7e 00 b3 b8 19 4e 1a 46 -0c 6b f2 56 00 76 82 90 c1 dc aa 2f 41 b9 41 a6 -4f d9 02 14 d5 16 6d 78 aa bb af 7e 41 d2 4f f6 -36 c9 76 2f d8 92 19 9d 2c fd 9d ed a5 00 51 e0 -01 b9 fd 3e 5e 22 27 ae cb 15 c1 b3 13 71 b3 5a -78 b3 b8 b7 63 63 76 f1 34 56 2b 4e 52 f4 51 b7 -41 a1 9a c9 32 56 9f f3 04 1f af 12 27 9f 90 - -# Signature: -5e 89 7f 87 9b a4 6f 67 11 2c d7 c7 c6 fb 27 37 -ad 79 3a 87 28 79 05 2a 88 45 7a f5 e9 d5 99 59 -a8 48 13 4a 68 24 de 3a 67 4f 72 a9 06 87 9e 95 -be 0e d8 7e a9 f9 74 a7 a0 7b a9 ad be c2 fb fa -02 94 37 8b 14 e7 35 f5 5f 40 3c a0 53 08 4f 51 -d3 d3 42 d8 af 9c 64 b4 d1 54 ad 9a a3 c6 bc aa -ce 1f 1b be 62 ee b5 d0 e6 c4 c0 30 93 c2 af 0f -07 88 8b 8b be fa 79 40 03 23 13 3f 77 6a 32 13 - -# PKCS#1 v1.5 Signature Example 6.4 - -# ----------------- - -# Message to be signed: -42 56 46 65 0d 6b 37 9e 16 e1 5b f3 85 3d dc 9d -44 4f 44 53 5c 49 3a 37 03 b0 01 63 af 34 76 df -37 2a 5b 28 f3 34 c0 86 03 13 e8 13 6d e6 08 29 -1b 33 78 38 1b 9e 21 eb ef 24 82 5d 12 - -# Signature: -a6 a0 cb 02 48 1a f2 48 ab ae 89 cd f4 16 1f 67 -76 d4 71 08 f1 8e c6 e8 43 7c 22 4a 14 f4 52 ad -a1 36 52 0f 0f e0 10 a7 34 5a f1 97 1a 02 e4 bc -f8 c9 8b 26 c5 b8 c6 00 3d e4 d2 b4 07 2d 8d ef -1e 19 23 d9 cc e0 a6 75 14 1d 37 87 3e 59 48 ea -6c 8a 78 0e d2 a5 ec c2 ba 9a 81 20 6c 7e cc c8 -0e ac 02 6d b7 d7 60 22 3a a2 38 7a 18 2e 98 d6 -6f 1e 23 df ea f3 51 5c ee 4f a1 ab d4 64 b7 68 - -# PKCS#1 v1.5 Signature Example 6.5 - -# ----------------- - -# Message to be signed: -f4 7d 87 bf d4 88 af 5b 24 db 34 ad 0c 13 1e fc -a1 0c dd 1a ae ff be 6e 36 48 47 22 ed 68 09 b1 -d5 7a 18 3b a0 3d 5e 40 5d 12 56 b2 50 5e cb 84 -db 35 df a9 4d e8 5d c2 a1 58 8b 6e 83 12 4c f8 -6c 5e 91 66 86 0d 4d d4 71 70 43 2b 08 ae 6a 6e -30 87 10 86 fa - -# Signature: -6c 00 8f f0 e1 28 fc ec 26 5f 37 9e b0 83 db 50 -62 4a 27 98 f9 33 67 c6 d1 6e 5d 95 a9 89 f4 f1 -ee d0 cc 4c d8 61 c6 a5 24 f2 b9 fa 30 e8 86 f1 -47 77 41 d7 ea 8a 60 df 14 0a ec f3 a6 cc f0 04 -3d ab 92 cb e7 29 53 cb 1c 18 41 e0 59 18 ec ed -5b 0f 69 4a f9 a9 8e c7 f4 e2 28 6d 23 3d fd 35 -13 2a 0b 58 4b f0 e0 dc bf 05 11 9c e2 e3 a4 d8 -13 cf 02 8f ec 48 c3 4a 18 81 eb b5 31 ca 48 9b - -# PKCS#1 v1.5 Signature Example 6.6 - -# ----------------- - -# Message to be signed: -03 18 78 d5 88 ee - -# Signature: -cc 15 4e 1a f7 13 f2 f9 5e 16 f4 11 17 5d 98 36 -ad 6d 8b bd c8 f9 8c f0 5c fa 00 58 23 5d 1f dd -e0 40 82 76 4c 29 dc dc c5 9e be 26 57 8b f9 e8 -ad 6a 5a a8 6b 9d 62 91 4b 4c f6 96 a8 ec 2d a8 -79 f8 fa 42 31 46 31 32 ea d7 bb 3b e7 50 ae 0c -56 28 a3 96 b7 0a df a2 7b 40 34 23 b1 00 18 f9 -d2 4f ea 33 70 30 14 7f bf aa 15 d4 75 32 c9 25 -7c 2c 7f 54 1b 5b 97 4d 15 dd 1e 3f d2 e2 0a 69 - -# PKCS#1 v1.5 Signature Example 6.7 - -# ----------------- - -# Message to be signed: -27 26 38 52 ea a9 60 bf 76 71 87 6f c7 90 0f 89 -8e a8 2e b2 b0 fc 41 85 65 fd ae 62 f7 d9 ec 4c -e2 21 7b 97 99 0d d2 72 db 15 7f 99 f6 3c 0d cb -b9 fb ac db d4 c4 da db 6d f6 77 56 35 8c a4 40 -11 5d 3e 5b 3d eb 1b a1 bd 90 ca 12 86 fd 10 0c -af 9b e4 85 a4 4a 38 45 00 57 18 10 4b bd fc 5e -78 1a 9e 37 d6 7a ff e5 56 dc a1 0f 8e fa 39 f9 -cb 63 92 a7 2e 3f 28 25 81 1a 2c 05 af 84 af 9b -e7 f3 71 db d4 10 6d 9f - -# Signature: -94 79 8d 17 94 78 bf e0 6d 96 a3 4a c9 9b c9 d5 -de 35 dc 46 97 ac 3f 70 e9 b3 4c 95 e2 2b 1c 30 -d1 42 6b e3 50 8e 62 2c 1a 18 ab 3c 46 72 fe 3d -e3 40 eb 51 0f b9 87 b5 3a e9 3a 59 af 6b 00 bb -ae e0 e8 27 08 e6 c6 ae 82 c8 45 53 24 01 78 36 -db 17 66 0d 06 9d 80 27 1e 1e a9 98 11 63 b1 4b -66 87 6d fd 12 8f 09 cd 2e 3d 6a 36 b7 3c 3b 40 -ad 8e 13 24 84 90 29 c8 b8 e3 c8 89 4e bf a1 94 - -# PKCS#1 v1.5 Signature Example 6.8 - -# ----------------- - -# Message to be signed: -a4 fb 21 03 d0 be 29 0e 99 60 16 a4 39 46 2e 6b -bd b0 72 4d 86 cd 51 85 91 33 ca 3d 39 da b7 7d -a2 06 9d 82 83 58 96 38 7c cf 3d f5 cd d7 a5 79 -3f 22 3f 3d 92 3e a4 63 51 35 31 ad a6 67 ab fe -f7 53 98 c7 a4 bc 6e fa dd 4e de ef 35 ab 8f 54 -01 e0 da f7 c2 fc a1 cd bb ee d3 bc dd 09 33 ff -3e e4 c5 e2 88 ab df 21 9e 36 a3 ee 6f 21 08 41 -a0 3c 9e 3e 4d ac 18 12 24 82 ef 85 f4 9f da cd -c5 02 d2 79 f1 57 7b e7 7a 4e 00 b7 c7 f1 7b a5 -da 6b 28 c0 1a 07 a8 63 df b2 1c 15 6d a3 20 01 -f5 3d 7e a3 fc b8 c9 55 4f 07 54 59 a6 7c c3 c4 -e6 9a 6a 37 17 87 87 46 3c eb ca ed a6 49 0a 8f -80 b3 92 de f9 f2 2a 4f - -# Signature: -72 66 70 c9 51 0b 58 35 4c 8a f3 2b 41 db 8f 69 -21 07 c0 c8 76 e5 52 73 a8 20 a0 c3 0d 39 24 46 -0f a5 bc 33 df e1 9d 72 e5 63 49 28 2a 80 fb 12 -a8 fa 9e a4 a5 da 69 c5 82 d7 c6 41 22 a8 a7 91 -b3 21 2c 39 e0 28 26 5b 84 54 df 71 5b a3 0b 00 -3d 12 91 69 cf 12 51 1c 0d 3e 7a ae ce f3 79 2c -f1 85 64 4c f8 0e 44 81 47 b1 a7 96 1a f3 84 41 -7d 18 2c 6f 85 52 46 da d5 b8 93 d9 a7 68 0e bc - -# PKCS#1 v1.5 Signature Example 6.9 - -# ----------------- - -# Message to be signed: -e5 50 6e 04 b1 91 84 10 76 85 87 25 a9 fd d8 f9 -74 5f 24 2e 99 49 4a 42 3f 80 36 74 74 27 1d ce -95 a9 9a 2f 71 13 4f 39 fb 3f 2e 47 c6 a0 b2 fb -6f 61 5b 0d ee 6d f3 3b 28 f8 b0 d4 1e 92 d1 42 -b1 46 e8 cd e9 b1 1d 6e c1 d3 7d 71 fd 82 b7 19 -ce 1a dd b8 21 ca 4c af bd 2a a4 f1 e6 11 a2 59 -e5 f0 5b 53 1f a1 1e 3b 67 1b 7a 5b 10 b4 c8 15 -6c 25 b0 a5 9e c6 e1 58 f6 d3 46 d8 48 04 fc f9 -2a 72 76 8f 4e bc 93 5e ee 5c fe c7 f6 e6 e8 3c -be 15 8a 13 27 5e 84 18 3a 94 d7 24 b0 e9 66 96 - -# Signature: -34 22 0e da fd 4a c8 84 b9 d0 0f bb fb 71 a4 a6 -c4 d4 b7 1c 19 84 22 05 07 99 d0 c0 fd 54 e9 09 -a4 ca d2 29 8f aa b3 34 7a 0a f0 d2 7d 53 01 a8 -86 00 9c f5 c6 f1 25 df c1 13 1a ce 38 8b b2 14 -c2 84 44 20 c0 23 db c8 b4 a9 66 11 b3 b3 93 ac -c3 83 94 90 fc 4e e2 d3 69 b8 c3 c8 76 57 22 83 -ef 34 d7 0c 64 03 ef 9e 2e 87 a2 76 b2 35 72 ed -82 e2 40 22 67 c2 73 7f 75 bb 4a 27 d3 cf 16 d2 - -# PKCS#1 v1.5 Signature Example 6.10 - -# ----------------- - -# Message to be signed: -8f c9 cf a7 21 df a0 9b a0 72 9e f9 18 9e 54 27 -b3 e7 38 c5 ae 38 a2 65 7f 7c 7e 31 4a 49 ca eb -a0 fc 9d 45 40 f5 f8 d6 c0 47 53 60 0e f6 b9 c3 -39 65 40 f8 6c 11 75 b6 0b f4 0e 3d 8c 84 51 35 -5e 13 74 f4 30 43 c0 c6 aa 41 d3 79 6b d8 27 9b -3c 30 62 b3 74 99 6b 7e ae dd 4d b0 ae e8 c9 4b -93 b1 71 fc 41 1d 4d fc 37 28 d0 23 15 58 cf c8 -fa 45 f9 51 b3 5c 9d 46 12 18 a6 50 c7 02 ce a9 -3b b3 fa 14 36 ed 44 5c 95 24 9d c2 20 54 71 01 -b9 a9 3e b0 14 cd 84 3f f3 9c e4 c9 6f 82 a3 9f -86 3a 4c 2e 1f a9 - -# Signature: -a2 6e 7d bd 5d fe 08 c7 2b d8 0d 5e 26 68 d5 d7 -2a bb 1a 0c 04 20 ff 0e a8 6a 9c 76 08 c4 70 e1 -c3 f7 2e bf 44 5d 12 18 71 81 41 55 58 dd 03 eb -e4 07 aa 06 b5 16 47 ba fe 0c 85 f3 d3 b8 dc e9 -0c eb f0 a0 ee cb ac 12 28 e7 85 82 0c 4f 90 9d -2e f3 92 f0 31 17 56 1e c3 8e b0 d8 8b 02 32 72 -a4 28 63 51 62 0f 21 04 3c ca f7 50 36 84 00 29 -57 ef 79 bc ff 9d 1c 20 1c 42 e0 96 0b d9 69 79 - -# PKCS#1 v1.5 Signature Example 6.11 - -# ----------------- - -# Message to be signed: -96 1f e3 4a 21 2c b0 e6 f6 dc de cf 1a 4c b7 b2 -14 39 0a 77 f4 4d 3a 3b 3e e2 b1 2f 1f 0e e3 14 -2e 9e af 70 89 55 ec 83 7e a1 d0 d2 95 4e 6c e9 -50 f3 4c 87 30 54 8f 2e 09 5d 5d bb 93 8b 19 0b -73 8b ff 81 71 93 02 b6 79 8b 76 8b 0b bd d2 e2 -b9 67 2d 89 14 05 c7 71 a7 79 02 fd 54 27 42 5a -f0 4e 21 b9 1c 5f 39 37 20 41 e4 94 d9 be 62 de -ce 31 bd 8a 26 2f 6d db 84 9f 06 8a a9 9f 7d 62 -62 e1 84 ab 9c b1 62 24 47 d6 2f f6 71 09 20 30 -70 71 c2 72 be 0b b3 7f 0e ef 64 5f 99 ea b5 1b -0b cb bb 64 87 d8 d2 b4 9f 3f 23 e0 aa 91 8c 89 -ac 85 56 53 e1 cc c0 05 91 58 0e 0c e1 e3 87 79 -c0 4b e7 df 1c 66 63 ac d9 93 7e 47 2b 3e b6 d4 -b7 0a 08 0d e8 e0 35 48 f5 12 45 be 7c e0 b8 6d -ee c1 76 e0 0e 54 bd 63 bd 5b b0 2f c9 54 - -# Signature: -98 ac 47 73 59 15 9e 93 e1 b3 36 ee 05 60 6d 42 -b7 e1 25 0d 12 95 60 c0 d0 95 f8 f8 ea 3c 04 74 -32 a9 9c 1e c4 bc 88 7d 7f 07 f6 1d f1 6f 0c 09 -f7 15 b7 05 38 8b b8 a6 11 87 34 6e 8d 7b 07 ea -b2 fc 05 db 89 e0 30 09 44 ae 37 73 e4 4c b9 2c -5c f0 f4 fb e0 1a 05 ad 79 bf aa 24 7f 83 ed 1e -da 48 ba af d1 e1 80 07 8c a8 d3 21 d5 0b 42 57 -87 f0 12 43 a4 93 37 4e 84 f5 cd 56 b7 53 d7 ac - -# PKCS#1 v1.5 Signature Example 6.12 - -# ----------------- - -# Message to be signed: -96 ff 0a 5e ca c9 51 16 bd 73 43 79 5a f8 3c 87 -ed 9f 83 45 d0 3f 6f 32 2f 29 54 93 f4 0b 19 ba -8f fe 2c 89 8c 7b 20 66 21 f7 2e 02 c7 f0 f0 0f -9f 1c 52 3d 73 d3 35 a2 6c ed dc 73 98 b7 ca 20 -09 ca cb b1 82 83 b7 6b 28 15 d1 e9 01 00 09 6e -95 b8 85 30 f1 c4 8c 39 61 c4 35 bc e0 28 9f f6 -2e 21 bf 4d 3e c8 99 c8 7e 14 c8 ea d7 92 2e 79 -5e 3e 6f 41 80 c0 89 9e a0 - -# Signature: -7c 7b 01 57 f6 a5 09 09 51 09 63 28 2f 00 11 1e -ea 70 19 37 54 e4 27 a0 2b 34 6f eb 68 2f 4c 71 -87 bb 38 1d 31 d2 3b 94 76 88 43 24 5a ad 53 61 -fc a4 2d 8b 28 4c 8d 92 e6 fb 99 2f a7 71 2f a5 -a9 31 55 df 02 0d 30 0a 3b f8 98 86 66 8c f3 7b -d1 3b 55 0a db 2d 2a 86 c6 9d aa ac dc 50 30 dc -84 34 3c 8b 49 34 f0 3c dc 0e ef 0f 6c 1e a7 ec -09 62 00 79 03 b4 48 21 7d e9 3b 75 07 54 9b 2e - -# PKCS#1 v1.5 Signature Example 6.13 - -# ----------------- - -# Message to be signed: -32 a1 2e 0c 67 0e d2 15 ae 54 49 a0 91 7a e9 5e -23 db 80 3a d2 8a 18 42 ed fa 90 bc 40 5d d8 9a -1b 46 8a ce bd 08 fe 9c 69 3d 8f b1 05 e8 22 2e -b5 7f 79 e4 b2 27 00 e0 7f 27 6d 4a ec c7 a1 5f -b7 47 33 06 56 27 b8 79 b0 16 ee d4 ab 4a 1c - -# Signature: -85 b9 0e b8 26 51 4a 0e c0 fc 1b dc 34 86 a8 dc -8b 0f 26 3e fe 57 cf 17 50 a4 2a 6b 5b 99 72 64 -fa 61 78 64 83 7e 63 9f 45 d9 20 58 41 cd c1 34 -ab ea cf 6e e0 ec da 09 b9 8d 76 9f 51 f3 94 7a -33 58 7f f0 c8 dd 01 b7 f6 b2 4a 2f bf 29 c9 ff -f7 37 ee e5 6a da 2c eb 74 6b 02 5d 95 65 22 d9 -20 d1 2d dd 13 db a0 8b 20 e1 ee e1 3a 8b 25 80 -e5 92 c3 4e 39 33 37 66 11 5a 23 b9 d0 0e 2a 42 - -# PKCS#1 v1.5 Signature Example 6.14 - -# ----------------- - -# Message to be signed: -bb da 73 cb e2 bf f7 ff 53 62 eb e9 32 c0 a0 dd -68 ac 84 ee 99 8f bf 59 a2 a9 26 55 20 32 31 63 -b3 0d 9e 70 08 b9 4b 0c 0e bc 5f 6c 4c 97 3c 13 -ff 15 3d 31 69 0c 3c 95 ab 23 1f 0c 9e c9 98 fb -fc ad c2 8b 2d 7f 06 50 7e 17 d2 1e 82 da - -# Signature: -26 f9 52 b6 57 fd b9 a1 1d c8 43 79 0c 9d 2a 6a -51 c9 76 10 1e fb 82 d0 53 60 67 62 ab a3 3a f6 -28 0b de 38 15 e0 87 4d 60 78 75 38 42 e5 b1 c9 -0c f7 99 12 20 fc fa 62 28 49 43 69 0c 30 1e 9f -c6 e4 79 af 68 b9 69 47 85 be 40 d4 69 86 a6 2a -12 1a a9 ad 0d e9 69 52 1f 1c b8 e7 c4 bd 70 c7 -c8 cd 7a 9d 13 54 e7 d0 aa 0d 85 d6 d7 aa 00 e4 -64 90 26 d6 f0 70 f8 b3 c2 7c 98 55 6b ea a4 c0 - -# PKCS#1 v1.5 Signature Example 6.15 - -# ----------------- - -# Message to be signed: -2c 32 5d da f6 52 6a 1e a3 51 8e e5 e5 40 7f 03 -90 e0 eb aa a5 f4 72 a1 e9 ab 46 f7 46 d7 1b a2 -e2 17 fa a8 17 99 bf 35 8f 95 e9 83 08 27 0b 18 -a0 01 99 29 a2 88 d0 c9 56 e0 bf 17 c5 19 8c eb -2c d9 fe 40 d7 02 a4 4e 56 45 ec a5 b4 39 ab ca -7b 2c 6f 95 ac c3 c2 c3 65 19 5c 79 5e 91 d6 3b -3c 09 33 24 4f f1 25 63 af 66 22 a4 0c 74 15 db -60 a7 8d ca 02 60 25 14 39 53 8d 38 aa 38 28 9d -92 88 86 ab 12 87 36 a6 a8 73 9c 14 55 c4 84 9f -2d 54 56 45 37 93 - -# Signature: -6d 1f 20 3d c3 ff a7 a3 34 d3 1b 9a 75 e0 12 58 -1b 8d 62 b2 bf 73 80 0b e5 1d 02 65 33 99 83 18 -c0 ca c9 2a 02 d4 6d 75 9b f8 0a 41 da a0 a6 a2 -9f 4f a0 bb 60 66 4c ac ad e2 4a 65 cb 47 65 11 -09 be ec 82 31 91 95 25 d1 47 32 68 74 55 78 db -9e 30 64 10 8a e4 6a 48 70 f1 80 66 78 9b 03 66 -a7 d0 ce 37 e0 30 b5 89 46 ec 8c 1a 14 11 54 db -0e 26 1b ef 8b af 2e 9f 65 fc d1 6b 7d 57 97 b6 - -# PKCS#1 v1.5 Signature Example 6.16 - -# ----------------- - -# Message to be signed: -29 85 e8 b5 50 81 2f b6 6c 18 f8 0e 6f 09 2a 94 -5d 09 15 83 86 1b 62 5d 1e - -# Signature: -2e 84 30 13 cd 5e 79 5e 21 66 c8 e9 1b 06 c3 13 -1d c3 a5 e1 21 36 d7 16 0f fd 11 bb ef cf 6a b6 -40 e0 5d 76 e0 c6 1e d3 06 f6 08 6b bb 56 7c a8 -7e 40 c6 92 4d 5c 84 a6 ce 28 a8 39 50 bd 4b 84 -e2 7f c5 06 9f d0 62 4d 50 ea c2 4a 94 11 b5 f7 -67 85 d9 db 5d a3 0f 42 56 95 b0 19 b8 4c db b8 -25 bd 46 e7 35 2e 08 f1 14 c8 7b 06 6f e4 3d 10 -56 a2 c6 10 ce a7 e3 d3 dc 98 bf 44 97 eb 4f 13 - -# PKCS#1 v1.5 Signature Example 6.17 - -# ----------------- - -# Message to be signed: -77 78 8e 83 8b 83 4e 8f 4d 04 5a a8 94 b9 0a bb -85 94 0c fc 58 d7 72 5e 7f 37 3d a5 54 71 37 c6 -0b ea 75 1e 01 42 bf 9a 6f 46 49 ae b5 46 ed 56 -0c c4 ea 15 62 d4 a5 fa 3e b1 b1 14 77 a3 05 1e -24 c6 06 b8 a7 1c 1a 77 4b dc f1 a5 31 0f ed 55 -59 23 73 0f a8 af 4c 15 80 0d 36 2b 37 ad f1 4f -7a fc e7 8e fa 6b d8 93 56 3e fe 0b 3b 82 8e bd -49 9f 12 a2 fe 33 2b fe 46 dc bb 31 4b bd bf 69 -08 7e 2a 66 5d f1 10 83 5d e5 5d 61 e5 c2 02 5f -d8 db - -# Signature: -8e 5f 33 53 c4 9c bb b2 ea 69 6a bb 57 40 ba e0 -15 ef fd 95 0d 56 07 13 76 05 a1 00 c4 a5 3f 1b -95 17 6c af 34 9f 4f d5 88 ae dd dc f5 06 0c cb -72 47 8c fb 09 85 62 f3 4d 8f 8e ba 44 6a 38 47 -56 5a 7b 89 55 ad 9e 0c 6e b6 70 99 e1 a4 6c 3e -b2 d4 9d 90 90 ae 5f 63 e8 a0 8b 6e 8f 21 f0 03 -e4 51 d2 50 ff c5 a7 90 d6 6a 0e 2e 3e 28 a6 33 -9f e9 1d 11 29 21 f5 5d 12 30 30 6f ad 5c 01 90 - -# PKCS#1 v1.5 Signature Example 6.18 - -# ----------------- - -# Message to be signed: -1d 59 9d 76 2c d5 4d f7 0f 1a 09 83 bc 3e a2 bb -ca 6f cb bd 16 26 03 ba 81 56 10 77 fd 92 84 92 -5c f1 f1 b0 8b ea 1e 70 bc 59 5d f0 b3 43 b8 3b -9c f3 d6 34 f9 5e 37 e8 d1 c5 85 fa b1 99 - -# Signature: -71 74 97 a4 e6 0d bf fa 19 6e ff 75 8e 90 1c e1 -fe 6e 2b c7 e1 d5 3a 3d cf 62 25 67 1a f1 46 c5 -de e2 00 a8 14 f4 89 8d 16 a9 b5 f5 08 dc 9f de -4d 64 07 0e 55 ae 3b 1f df 79 19 f4 2b 7c ff b7 -e9 28 c4 ca eb 55 2d c6 fd 08 18 34 b2 dc 2f ed -07 e7 e6 27 d3 4b 39 10 ca 71 3b f4 15 4e ff 99 -96 57 36 15 18 fc e5 a8 f6 42 dc 9a 18 a6 6e de -22 19 0f 60 aa f9 58 d6 24 6b 00 a0 32 c3 98 41 - -# PKCS#1 v1.5 Signature Example 6.19 - -# ----------------- - -# Message to be signed: -da 51 00 86 60 b6 3b 87 67 e6 5f 12 c6 30 8e c1 -8e d9 57 5a 42 6b c5 fb e6 60 10 ec 3f 01 17 5f -fa 57 41 ea cc dd b0 2f ce 7b 2e f7 78 44 40 d7 -2d 37 52 20 3f 53 4e 52 fc f6 26 a8 c5 96 51 3f -41 90 64 bb ba fd e7 f8 d6 5f 30 d7 ca 68 71 89 -70 de 71 fc 8c 0e ed 4d a0 0a 4e 1a b5 41 02 d9 -d1 65 bd 7c 54 af 5c 31 c1 5c 05 bc a5 5b 6f dd -19 10 86 a5 3e 52 96 f4 84 c3 47 d8 fb 94 5a 10 -c4 94 49 75 27 32 f6 2f 34 c3 25 15 58 86 51 13 -79 19 28 5a 2c 8e f7 b4 aa 0e 69 0b 0b 65 43 7f -f8 d5 6f c9 5d cb c3 e7 8d - -# Signature: -32 67 72 28 ff 08 c6 6f d0 3b b3 1f 0d fe 89 01 -53 b3 44 6b 57 eb 84 ef 39 56 20 8f 72 a0 7c 87 -67 e6 bf 09 f0 38 bc f7 f7 35 ee 24 a1 f6 40 a1 -89 8d 40 9e b5 3a bd b6 93 94 27 34 56 9a f7 1a -4c d9 9a 65 20 ba ca 5d 42 86 b1 99 cc 67 62 8e -2f ca d2 96 a3 0e ca 49 9e b8 80 50 7f 6a 37 44 -0b 61 c1 28 4c 40 3c 41 32 1b 99 05 3f 5d 69 72 -8d 5b 97 35 76 cf 04 74 83 33 d8 08 d5 e6 8a 8f - -# PKCS#1 v1.5 Signature Example 6.20 - -# ----------------- - -# Message to be signed: -8c d2 da d2 a5 d5 f9 fa a0 7e 24 a9 6e 86 f9 b0 -ac 8b 40 22 2a c9 fb 8a 8a 15 72 7c f2 f5 3e 68 -4a f4 ab dc 98 68 a7 25 3b 25 b0 96 bd 70 1f 46 -a9 43 - -# Signature: -8f 03 22 eb 2c 54 05 24 85 a6 45 49 ad ff 2a 36 -31 db 65 76 fc 0c af b5 51 69 7d c5 35 6f 02 e0 -93 cb 69 17 3a 7e 83 55 a0 da de bf a5 3c b2 90 -7f 00 2d b3 a3 e3 87 da 05 7b 7c 73 55 16 43 84 -3e f5 74 48 1f 80 74 15 17 7e 4b 34 c2 5b d5 5f -4c 02 fa 0a de a3 a9 58 04 65 f3 58 c0 05 96 b5 -cc 06 2d 58 92 30 3e 1a cc 11 3c 3b 4b c7 4d 42 -e8 58 02 90 78 48 2a 1b 23 4a 62 5b 04 28 44 06 - -# ============================================= - -# Example 7: A 1025-bit RSA key pair -# ----------------------------------- - - -# Public key -# ---------- - -# Modulus: -01 69 34 cd ff 48 50 b6 00 2c c0 f0 f4 01 0a 32 -c6 55 e5 cf 6e 7c 89 93 7f d7 55 ef 6a be 37 9d -ad de 70 cc 21 77 51 f1 4c ba 6d 90 fe 52 dc 0a -f5 8b 25 2f 26 bf 72 da 57 9f da f5 7d dd 6c d6 -02 18 79 94 9a 02 76 b4 43 3f f0 1e fc cc f3 5a -11 e7 c7 7b 38 c1 8c ca 94 ae 01 2d 0f 37 04 21 -49 1c 52 ad 15 ac 76 b1 2e cd 21 8f 52 e7 57 86 -6e 08 9d d8 ad bb 48 e9 ba 89 43 36 c5 75 c4 06 -55 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -01 69 34 cd ff 48 50 b6 00 2c c0 f0 f4 01 0a 32 -c6 55 e5 cf 6e 7c 89 93 7f d7 55 ef 6a be 37 9d -ad de 70 cc 21 77 51 f1 4c ba 6d 90 fe 52 dc 0a -f5 8b 25 2f 26 bf 72 da 57 9f da f5 7d dd 6c d6 -02 18 79 94 9a 02 76 b4 43 3f f0 1e fc cc f3 5a -11 e7 c7 7b 38 c1 8c ca 94 ae 01 2d 0f 37 04 21 -49 1c 52 ad 15 ac 76 b1 2e cd 21 8f 52 e7 57 86 -6e 08 9d d8 ad bb 48 e9 ba 89 43 36 c5 75 c4 06 -55 - -# Public exponent: -01 00 01 - -# Exponent: -0d 17 19 e5 bd 47 6d 87 c7 ec c3 1e b8 ab 42 5d -4f e4 c8 f5 c7 ae 23 0a 10 47 55 3f fb 53 9f d3 -85 5a f5 a4 3b 2d dd 4e 95 a2 b3 0d 40 7a a8 81 -59 bb ad 2a 87 3d 80 93 b4 8a 4b ce 20 ad 99 26 -25 3e d3 39 ac 3b 54 3f c7 42 96 95 33 8d b0 bc -1d c3 68 6c fd 13 9b b5 b2 87 36 bc 16 60 a9 53 -48 fc 91 c3 25 d0 3a 7f b2 16 d2 d9 cd 93 64 de -4e e7 d2 11 9c 3b 0f bb a8 a7 1f 0d 3f 5a b9 b9 - -# Prime 1: -01 58 c0 24 6c d1 69 fc 59 3b 25 8b bf 45 23 ab -2b 55 c4 60 73 3a 7f b4 69 10 90 77 b3 0e 4d 35 -f2 1a 35 b1 f4 1e 42 04 e8 1d 2e 4c 46 3c 24 11 -39 34 09 8b 45 2d ab 4b e1 59 97 20 ef 68 72 83 -3d - -# Prime 2: -01 0c 38 2d ea 5e 7d 79 29 8c 64 1f b2 e4 fa 09 -f2 4f 6a 7a 45 9a 88 2c 87 a8 03 49 5f 05 6e cc -3b 43 c5 37 73 1f 85 ef c8 fb 53 87 ad 67 31 a6 -43 53 32 15 de cc 38 7d 96 76 12 2c 17 0e 91 e0 -f9 - -# Prime exponent 1: -d5 78 dc d5 38 f2 fc dc 30 00 b6 c0 f0 49 fe e2 -ad 90 14 fd 24 fb 10 b6 82 18 42 d6 70 03 a5 64 -cd 8f f4 2a 2a 56 4c fd 81 9c 3a 84 bf 16 c2 47 -7e 8e 6e 5b 9e c4 d4 0e ad 50 24 87 ba 50 36 2d - -# Prime exponent 2: -88 88 dc 8e ae 94 ee a5 80 ca c2 fc 1c e5 4f 44 -e2 ba 50 0d b8 71 53 41 a6 fc 2d 50 4a 82 b1 42 -05 e8 91 a6 6f c8 8d 5c 60 db 8f 78 6c cc 70 57 -5b 35 66 be a8 74 a5 31 7f 5f 16 c4 91 ed 1e 79 - -# Coefficient: -17 b0 d6 23 36 19 1e 63 bc a1 59 93 4d 06 16 cb -89 97 40 9c bf ca 37 05 69 5b 14 fb 64 a0 81 c1 -c9 f5 86 19 3e 52 3a bd 0b eb 8d 72 0c fe 53 7d -fa 1e de c4 a6 64 37 d2 41 19 6b 7a 2c e5 56 c4 - -# PKCS#1 v1.5 signing of 20 random messages -# ------------------------------------------------------- - -# PKCS#1 v1.5 Signature Example 7.1 - -# ----------------- - -# Message to be signed: -35 39 99 7a e7 09 fe 32 c1 03 6a 13 27 57 f2 a1 -66 7a 91 cc 83 be 73 3a ad a1 bd d2 17 92 4c 9a -2c 9f ed 1f ec f6 1d 1c f7 9d ae 9a 83 f8 ae 3f -4d 05 1b 34 fb b5 59 cb fd a4 92 f1 d8 3b 8b eb -a0 45 d4 ae 1c 8f ea 15 b7 57 7a 1b 8a 3f 55 ba -c1 72 7e dc a7 f8 f5 2c b4 ba 61 ca f1 fa 8f 8f -d9 aa c7 79 09 5c a8 4c 79 91 52 9f b8 06 99 d0 -d4 68 8d fd b1 42 ed 61 a9 5b 89 ce 33 06 bf 97 -80 e1 b9 1b 84 8c 8d 20 03 97 0e 52 70 2a 1f 61 -2e 2f 40 17 cf e0 a9 1d b9 e4 6d b9 dc - -# Signature: -00 08 0f 77 0a 2d 1f 6a bf 5f 22 1f 62 e1 66 ab -d7 9d 06 c7 b9 a8 78 d6 1b 80 fc 4d 5b a2 90 b2 -3a ba ab 51 8f 09 44 7e 45 ae e6 f3 bd 06 10 24 -44 36 a4 73 01 60 e6 a6 72 11 0c 01 ae b5 62 4b -71 8d c7 c0 86 1e 58 6b a8 b6 0a 29 d6 a5 75 5c -d2 cc 50 85 99 c6 e2 8d 73 55 b2 7e 40 b7 40 c6 -fb bb b1 a9 18 23 b1 c1 24 2b a6 93 d4 52 69 51 -47 db b2 3e a8 9c bf 11 eb 8b 07 ec 3a 02 7b 0f -17 - -# PKCS#1 v1.5 Signature Example 7.2 - -# ----------------- - -# Message to be signed: -31 80 08 87 3c 4c fe a7 12 5e a6 fd 52 15 df d9 -8d 5c 5e 73 32 3f 03 f2 15 c6 9c 8f 2b b1 98 3b -59 df a6 e9 9a dd 30 69 66 f3 11 0c 16 1c a2 26 -24 b8 80 70 26 5b 8f 3f 9d 5d f7 29 91 e7 9e 5b -18 9a a3 d9 cd 9b 20 47 cf a6 1d 01 23 4b 23 3d -36 ac 4b 96 ed 08 16 48 87 74 90 fa 4a 80 ec 4c -bb d9 d2 e0 06 2c 39 e1 85 3a 0c 38 34 4b a8 58 -bd 1d 99 5f 6c aa 28 bf 90 40 26 26 8a 99 72 11 -43 c8 6a 43 43 ba f8 9b 6d 55 07 64 25 1f b0 7d -16 7b 4c 4b 1b 70 f9 9e f5 fe 50 e6 2e 54 13 fc -ce 0f 99 59 c2 a3 78 c4 1d 6f 42 36 17 8b 14 b8 -91 9d b1 d0 - -# Signature: -00 6d 54 7d a4 ed cb 10 33 15 cb 8e 4b 66 9b ee -96 aa 21 56 23 5c a5 c3 e3 1b 24 a1 5a 13 92 e4 -94 04 7f ed cb 70 81 90 7c 56 17 a8 aa 18 d1 01 -b0 53 2a 36 32 45 19 23 c4 8a 75 b0 ec 21 76 cb -98 e5 ce 51 58 8b cf 86 8e 29 d5 d9 69 4f 00 ae -2c 92 4e 73 d2 e6 dd 14 4d 24 fa 45 d0 12 06 a3 -f5 d9 36 41 3c cb b7 4b 0e 2d 04 7d 82 b6 00 b8 -9d 51 59 4f ce 7d e6 bb d9 5b 97 fc fe c5 98 c4 -eb - -# PKCS#1 v1.5 Signature Example 7.3 - -# ----------------- - -# Message to be signed: -7f 83 b3 e0 54 c0 24 82 50 78 dd 9f 04 0e 1d 09 -05 82 00 c9 75 7b 76 fb 37 2b 8b 52 66 b9 dc 26 -9e c7 56 9d 00 - -# Signature: -01 34 ee 21 51 51 e5 32 50 f5 a0 01 6a cc e3 70 -1e 2a 58 dd aa d6 cc 36 9d f0 dc d9 34 6a 2b 53 -0f e3 71 5a fe ff 1e 9b cb 72 08 31 c1 25 58 97 -0a 9e 03 89 60 04 f2 87 ad b8 21 f3 17 cf 63 93 -00 ca e6 e9 09 e9 1e d2 a3 ea cb 99 52 a7 cc 54 -94 76 52 64 24 79 51 d2 8c 16 af 03 e2 4b 80 ee -32 b0 b6 2e df 10 d7 00 91 92 71 35 f0 5a 88 9f -2f 60 56 b9 5c dd ac e4 7c 69 f9 73 08 c0 df 2e -ba - -# PKCS#1 v1.5 Signature Example 7.4 - -# ----------------- - -# Message to be signed: -17 eb c1 50 07 bb 5e 4a f9 17 20 1c 3b a3 84 92 -65 89 c3 15 9a 89 d1 ab d4 c2 c9 86 fb a0 37 9e -8a f1 29 75 c5 d0 31 d1 bf c1 5c a9 17 36 f0 7b -17 66 d8 b8 a7 2d b1 0c 26 8c 98 fd 7a a1 1e 29 -99 f0 6d 86 12 7c c8 89 cf 15 0d cc 73 8f 6a b8 -ba ae 94 3c c6 06 dd 4d 9e ce 70 1a 4a 7b 10 1e -35 1d ee 20 b1 5e bc 55 25 6d b3 ce 46 a6 bd 50 -61 12 5b 62 b9 95 e9 70 d1 6f 7c 9a 8f c1 57 ff -68 ce c7 e6 0f 60 8f 66 26 dd 39 52 8b 24 09 aa -2f f9 32 fc 11 9b 2a 7a 81 77 2a 57 6b 3d 50 a0 -d2 87 a7 fa 2d b8 7d 2b 92 e1 c9 61 a7 0c aa 44 -d8 81 37 b9 50 e1 00 71 1a 98 54 ad fa fb 49 4d -34 e2 86 06 a2 7c - -# Signature: -01 05 da dc 99 c5 9b 5e 3a c5 54 b1 b5 e7 48 0e -5c 0a 62 c7 ab ae fd ac f4 42 6e cc fe 68 6b 8a -aa 1c a4 f5 1e ba bf fa 77 d9 98 03 e7 ee 8d 20 -d1 20 4a ad 8c 67 38 5d 07 44 c8 54 de 2f 99 7a -56 aa ae 04 ce cc 65 65 35 c1 6b b2 14 5d 18 01 -81 25 94 a8 01 3b 0e b5 4e 7b f6 5d 38 42 00 54 -ec 46 da c7 1a 12 52 08 b3 02 21 4a 7c 9b 3a 92 -ca 9b f7 37 39 c7 66 30 9a f8 03 ed de 7c 54 d2 -46 - -# PKCS#1 v1.5 Signature Example 7.5 - -# ----------------- - -# Message to be signed: -6a 52 ba 19 0e 44 ca 0f 10 70 02 10 48 76 2f 3e -79 ed 51 c9 4f 6d c1 a9 f1 ed 78 35 2e f3 79 aa -49 b3 a9 38 7e 3c a7 a1 96 f1 05 dc ab 18 50 6f -29 4a 69 - -# Signature: -00 0b 70 e6 01 c5 ec 58 68 4e 09 18 ba 7a 53 9e -9d 2d d2 9b 01 a3 f4 53 ca d4 a9 a4 0e 50 f5 db -df 72 c1 10 52 f2 0b e4 4a 5d 38 51 b0 1f d0 9d -9c 92 08 47 0f 0a 4a 95 03 5e 98 9e ed 7d 6b 06 -2e 13 f4 99 5b f0 93 0b 4a 3d 9b 8a 9e d7 5e 33 -88 6e 4b 19 4a b5 cc d6 b4 12 95 9c b4 f5 49 8b -d3 2f 66 85 46 be 2c 00 7a e8 de 5d 98 97 7b 94 -b1 7e 12 63 88 4b 54 e7 84 b3 8f c1 12 b8 cb dd -56 - -# PKCS#1 v1.5 Signature Example 7.6 - -# ----------------- - -# Message to be signed: -bb e0 b9 de 2b 5e 9d cd 31 67 42 94 3f 92 19 b2 -4f 66 a3 8f 9d e7 09 46 4f a5 49 5d 79 4a 63 7b -9e bc 06 77 62 da 7a 6e ef f0 98 fa 44 f3 cc 36 -f2 cc ef 67 fd 46 c5 9e 24 73 8c 81 0c 69 ed dc -d9 0c c7 d7 1a 4c 3e 69 3b ca a2 8a 53 3d 90 4b -41 ce d3 39 9b 4c 76 47 e5 ec 4b 3a d9 03 87 0f -5b 5f 8d 6a 8d 81 28 ae 23 81 ce c8 6c 4d 85 b7 -8a 45 1e 1e a9 7e 33 93 ff e9 97 e5 46 b0 9c 8c -f8 22 52 b3 3f 74 5f ee d4 13 32 06 51 8e 2b 88 -03 19 dc df 91 06 71 8a fb 01 6c 51 4b 38 05 32 -65 bc 98 79 10 0e 47 b0 3e ba 03 68 f0 9e 29 23 -ac 6f 40 a0 4b 75 05 4c d5 05 bb c8 96 5d 64 9a -1b ae 7b b6 64 3c b7 41 95 e9 1c 51 f4 18 3d b2 -d7 38 ce 60 35 50 d6 34 e6 dd 4f 27 f4 da ac 61 -56 cf a7 e2 46 8b 5d 6a eb 78 29 09 - -# Signature: -00 c2 e0 74 df bc d0 e7 3a c0 02 1a eb 99 33 10 -6b 20 1b 93 c1 7a 7b f9 33 56 d2 91 fb 4a ae b3 -d1 31 63 00 a8 de 7b 07 e3 d7 79 bc c2 99 e5 2b -6c b0 30 88 01 6d ae b8 41 38 2e b3 43 5f 2e 03 -eb f2 2d c0 86 fb 20 eb e5 3a c5 45 90 24 97 63 -a2 65 5a a7 eb 0e 7d 38 64 93 6b 34 00 6a 6c 4f -a0 2d 9c a1 04 ad ad a6 aa 01 b9 77 b6 de f2 75 -06 08 a7 8f 3e d8 3a d7 12 a7 a1 b0 fb de 7c 7c -8d - -# PKCS#1 v1.5 Signature Example 7.7 - -# ----------------- - -# Message to be signed: -83 a4 8b ff 88 6d 1d 68 f2 92 0a 0e cf f2 98 32 -1a 96 f5 ca dc df d8 be 16 b5 0d 34 d6 7d 94 cd -b1 a1 bf a0 ea e2 46 99 b6 63 c7 ba 3a 08 a3 90 -f7 22 58 84 85 67 94 d1 80 c5 46 ca c0 6e 41 18 - -# Signature: -01 2e 81 bd 38 63 50 65 bf 65 54 33 6b 00 d1 06 -18 33 05 53 e0 e8 08 78 aa d3 55 f0 0d 59 40 d8 -ba 45 01 c5 c4 9f 10 16 d5 f0 e6 a7 3a 4d 9f 87 -40 d2 cf c2 5e a2 48 df 3f 7b 1a e8 fc d2 6b d5 -62 e0 f6 eb 77 7f 46 d7 57 30 69 db 89 07 c0 21 -b6 45 d3 b2 40 58 47 51 99 a9 1b 55 72 d8 ac 87 -f8 3e e6 af 5c f9 e1 71 a8 58 f6 0d 2b 81 40 f5 -2d ae d6 84 42 22 8b 4f ff d8 de 40 07 8d 3d e8 -cb - -# PKCS#1 v1.5 Signature Example 7.8 - -# ----------------- - -# Message to be signed: -18 - -# Signature: -00 f2 c2 99 02 4a b7 bd 25 2c 69 46 be a1 0d c0 -53 97 38 98 bd 5f 0e 3c 94 60 e6 fe 09 d7 d1 91 -e7 1b f7 9d 43 6c aa 84 e9 86 be 3f c0 98 19 c0 -80 e5 6a 08 5c f4 24 41 4a f3 fc 70 07 cf 1a c3 -6f 1c f8 63 57 80 b5 56 8d 73 4a d6 d8 1a 2b a8 -eb 18 8b 29 46 69 d8 71 ca 40 e6 08 f0 ed 33 d5 -69 0c c6 15 70 c5 b8 47 eb db dc dc 4f a7 8f 42 -9e fc e1 3c 67 47 e5 4d 6f 26 1b 04 55 d6 dd 65 -c2 - -# PKCS#1 v1.5 Signature Example 7.9 - -# ----------------- - -# Message to be signed: -04 a6 e2 4b 93 c2 e5 f6 b4 bb e0 5f 5f b0 af a0 -42 d2 04 fe 33 78 d3 65 c2 f2 88 b6 a8 da d7 ef -e4 5d 15 3e ef 40 ca cc - -# Signature: -00 ec c8 95 fb d9 47 e2 df c4 7c 03 ba 2e 99 3d -1a 14 3a 7a 6a d6 3a 91 6e d5 44 83 ce 26 38 9f -89 d5 80 f4 ed bd d0 b3 7e 08 ca aa 5a 0c 1e 52 -6e 1e 9a 1a 8c 0d c9 cf 50 ed 77 de 26 76 46 0d -28 8d ce 56 5f 12 8a 26 6e a2 9b 4e cc 32 9a 94 -cc 25 23 96 dc 50 d5 c0 a1 3d 80 93 81 fa d8 8a -07 89 ad 4f 56 aa 77 e5 44 ec 25 70 af 99 18 b7 -f7 41 b4 86 ca 50 b3 38 4a d1 12 40 60 59 16 85 -a1 - -# PKCS#1 v1.5 Signature Example 7.10 - -# ----------------- - -# Message to be signed: -99 65 bd a5 5c bf 0e fe d8 d6 55 3b 40 27 f2 d8 -62 08 a6 e6 b4 89 c1 76 12 80 92 d6 29 e4 9d 16 -9f 16 fe 51 c4 c0 8a 64 94 b5 00 73 62 20 91 a3 -82 2e a5 7c 32 8b d9 b6 9d 24 65 a2 12 2a f1 78 -bf 6b 1b e3 07 ee 4c 31 47 9f fd 9f 4d 11 f3 3e -a2 0b 7a ec e8 12 ca b4 ee dd 46 99 31 51 d5 68 -ff 64 a1 67 04 a5 5d 95 0a b7 79 1a a2 3b 26 a0 -a8 af 88 0f 6f 80 56 bd d2 06 83 8b 44 c6 07 b6 -61 b4 f1 dc 36 21 06 5f de d3 db 6f 9e 3f 2d c8 -f4 00 ef e3 c2 af a6 c0 27 99 40 57 6b b0 5e 39 -80 4b d3 50 5f 4b d2 82 52 91 8b 28 e7 4e 05 8f -24 f2 7e f0 db 3d 0d cf 9e b2 9d 41 ff c1 10 07 -ce 86 b9 82 e8 9c 03 75 bd 99 76 a5 af 13 1a 61 -4d 28 08 ba 25 07 9d 97 7f 0b 23 97 96 ba 6b 1b -cd 5e 85 5d 96 - -# Signature: -01 56 62 e3 0e 79 0e 37 86 83 81 b4 f6 77 a2 ae -d6 b2 ac c5 64 49 17 31 82 49 10 ed 80 ad c4 77 -15 9c 88 61 8c c7 d0 be b0 49 b1 aa e7 4b 17 21 -e9 0b a7 f7 b0 ea 26 bf 33 ad 04 f8 6f f3 14 38 -97 bf 0d 4e b4 5e b7 de b5 44 11 ba 96 80 aa b1 -3a db fc f1 8a f4 6b 87 fc b1 46 1c 26 20 6a 95 -3b c3 cd bb 31 e2 96 ea 09 02 4b c5 c7 b6 2d e6 -c6 9c 14 bf cf eb 56 39 1a 9e f5 8c d8 05 eb 63 -1f - -# PKCS#1 v1.5 Signature Example 7.11 - -# ----------------- - -# Message to be signed: -71 c7 b1 8b 4a a8 ea 53 89 ad 78 49 23 28 65 be -2a 93 e3 47 a1 68 d2 5c 6c 6e a2 43 9c 1c c8 0b -b0 b7 22 3b e9 c8 93 71 22 84 5b b0 a3 9c 02 5c -43 75 9d ef e6 e4 e8 eb 3b aa b4 f1 eb dc a2 c8 -ad 12 a4 65 a3 0f 8a 65 25 b1 20 ef 6a ae c9 bd -db 45 cd 42 c0 15 0c 40 7b 04 8e df 65 19 94 92 -f2 07 ca 01 aa a5 54 3a f3 8e e9 8d 53 bd 10 d8 -ee bc 3b 64 97 7e 75 75 1d 74 50 dd b1 c0 e1 fc -24 da 17 18 81 1f be 9b 0a bf c3 ca 31 e6 99 5f -c7 34 90 73 e2 17 b3 7e 23 c5 f1 7a 8b 7a 3f 00 -48 6a 37 02 b9 51 0d 6f 05 1b 27 61 71 6e 32 c6 -2b b5 93 9b 2f b1 1a cb 1c 83 - -# Signature: -01 3a b6 3a b1 83 35 3a 23 5f b8 93 ab 4c 35 d6 -40 9c 21 84 9d cf cd a3 bf da 14 29 fe e7 42 a7 -d8 16 0f d3 c8 3b 38 53 a3 33 f9 51 53 9b b5 77 -1f 4d 0f e1 3a de b6 4e 40 30 b9 2e 8b 08 13 eb -52 b1 aa 33 bd 94 c5 b8 bc 1b bc cd f6 c1 df 0b -a6 70 71 7c 0c f6 fd 48 5b e2 fe 9e 16 81 3b e8 -cd d5 80 e6 10 86 67 5e 31 83 1c 92 4a 41 d4 67 -1a 95 d8 35 e3 fc a4 95 e8 86 58 d1 e5 70 e6 28 -c7 - -# PKCS#1 v1.5 Signature Example 7.12 - -# ----------------- - -# Message to be signed: -0b eb 19 b5 62 92 8c 27 1b b7 06 18 9e 43 cf a5 -7b e7 6b 2f 7a 83 e0 2a a2 cc b0 37 c0 f4 f7 f7 -31 62 d6 c2 6f 70 de 97 18 21 e7 b9 66 5c b9 31 -bb 0e ac 82 0b f8 59 98 4d b4 be ef ef 4a b8 8e -91 63 1c 0c d3 1d b7 f9 35 8a 5a a1 df f2 40 6b -45 f9 bd cb ef 20 d5 5c 28 2b ae 5c fb 61 06 02 -3b 56 33 c0 51 af 17 e7 29 bb 07 c9 af 6d d2 - -# Signature: -00 d6 3d a4 d5 d3 e2 28 4a 19 2a 6a 9d a3 f1 a7 -d3 fc c1 64 b9 fc 3d fd 74 52 b0 2f ed 6e f1 be -5a d2 a7 69 ec 9c 36 05 9b 71 91 1c cf 7a b7 1c -e3 09 87 ec 47 bb f5 5e 6d 46 30 d6 23 42 b3 15 -50 48 ee 0b f4 3d 24 fe 69 ab da c1 2f 79 4b 67 -98 bd 1a 7c b4 89 a6 4c e0 82 25 4c 3d 92 f4 75 -56 6b 56 40 0d 96 20 cd fd 63 fc 17 c1 93 c4 25 -d7 ed e9 41 f7 6d a1 e3 45 af 0e 2a 8b 88 44 c7 -40 - -# PKCS#1 v1.5 Signature Example 7.13 - -# ----------------- - -# Message to be signed: -02 87 ab e2 67 0a 45 f8 77 90 48 f5 - -# Signature: -00 42 f4 14 78 2d f6 5d 93 47 bf 1c ad 53 48 53 -74 6c c0 b8 53 c1 c5 26 f9 17 14 45 fc fa a4 99 -1a 70 f5 a8 44 5b cf 41 14 f0 7f c8 35 4c 84 a9 -3b 94 37 33 d3 93 7a 59 88 3b 89 6c e6 5f db 16 -5b 1e 30 55 37 4c e2 42 e1 26 8c 16 41 cc 44 3b -b9 e7 da 7f 71 f3 e7 f6 31 3f 23 9e 62 00 e7 9a -1b e3 ea d6 c3 6e 94 1f 24 46 0b aa 57 df 63 9e -57 da b3 ef f9 e7 7b 87 af 35 5b 83 da e7 7c be -06 - -# PKCS#1 v1.5 Signature Example 7.14 - -# ----------------- - -# Message to be signed: -3f 49 54 2c 0e 9f 50 93 2c 0d 45 3d c9 53 20 af -21 dd 2b d1 72 9c 29 f4 f0 8c 70 94 4c 2c c7 5d -e9 16 6b 4f d2 30 aa 93 70 2c 5f 2c 3d 9c 29 9a -35 91 02 57 00 33 54 0e b8 28 ca d7 5a 57 76 d2 -e8 cb 45 61 41 a6 fa 97 bc 4e 6e 62 d3 df 08 29 -82 a4 d9 8c 2d e4 41 e5 9e 93 12 - -# Signature: -01 5c 39 93 ce eb d8 db a4 5a 36 8d d4 05 af 8a -53 b9 3e 82 70 19 f9 94 e4 ed 78 2c 39 11 b9 b5 -80 d5 42 24 26 9b 79 97 f1 74 96 30 e5 2f 22 1f -af ab 96 41 c7 81 e7 04 4d 32 56 e2 e4 4e 14 37 -91 72 32 69 45 18 ba 9e 71 38 da 47 fe 53 43 29 -b8 c9 68 9e 27 85 c0 2b 60 3d d1 60 d3 73 36 a2 -b0 5b e0 47 82 65 9a c0 e9 67 1f e9 32 ea 80 91 -d6 13 18 b2 b2 01 bd a7 9a f6 c0 c4 44 69 38 e3 -f6 - -# PKCS#1 v1.5 Signature Example 7.15 - -# ----------------- - -# Message to be signed: -d0 db c9 6c f9 bf b1 e3 cd 6d e2 ea a0 8d 6d 79 -5b ed 81 87 ce b0 85 65 80 e4 b1 42 b9 ae 60 a0 -98 cd 42 98 4e 8d bf 1d 05 a0 c0 ab 83 51 54 8f -0a 13 64 6f 33 39 0b 2b b0 c8 64 b3 97 cf 13 37 -1f 8b 2f 67 5a 82 e4 6b f1 6c 4a fc 60 5e e3 e5 -a1 46 9c ac 51 fa 73 4b 44 65 d4 c1 3d 5b 2d d1 -2e ed a5 4e 7d 08 1c d9 e3 ea af 9e 57 db 42 20 -20 a0 b5 a5 ec 28 ca 43 97 7a 5d 67 6f fa b6 2f -78 10 71 93 59 41 59 ce bf bd 86 26 98 19 a0 f3 -41 a0 f4 12 84 dd 0a 73 ca 80 14 d2 e0 b8 01 79 -c6 38 0b 40 3a fb b1 1b 42 db 34 9b af d7 57 0f -be cb d1 4b d0 c2 1a d6 41 68 7a 6a c3 29 25 f7 -03 1a 24 a6 56 8a b9 e2 87 eb 80 75 41 10 df ba -68 8a 59 63 25 bc ac 4a 39 ce 8b 84 a4 - -# Signature: -00 8c c8 2d 64 55 9d e0 04 0f 55 41 19 9a ef f3 -99 9f e2 f0 86 f1 57 ff 51 f2 22 0d b3 45 51 9a -a1 14 b0 17 62 e7 0b c9 65 83 bb 38 b2 2b 3f 87 -be ab 32 e2 3a 3d eb db 8a 59 54 29 ff 12 fa d4 -95 d7 4e 22 0e 4f 7d ca 22 27 28 43 89 9e 81 04 -c6 9a 59 64 2f 6f a8 25 89 0f e8 13 2a 0f 79 94 -02 53 e5 00 7f b1 17 7a 5b f4 18 06 7e dd c8 d3 -2c 5e 59 35 bf 33 8f 1c 69 0e fc 80 11 dc 8c 84 -2e - -# PKCS#1 v1.5 Signature Example 7.16 - -# ----------------- - -# Message to be signed: -7d f0 23 6e 87 1a 71 c3 17 90 eb 5f 01 1c 91 1c -27 c6 03 73 b8 dc 9e bb 13 ac 85 ac cb 3b cb d3 -b4 74 f9 78 86 2d d8 42 02 ab 20 b3 34 73 94 25 -e1 b7 9e 0b b8 b4 bc 47 dc 71 53 f5 7a da 04 12 -44 7b f5 a5 e6 67 34 19 ba ad 65 3e 5f 5c 39 e2 -ef 7c fe 7e f4 77 8a b9 98 ca f9 7c e1 6c 58 33 -27 72 dd df 82 6f 1e ec 1a f3 db 80 e3 13 75 d6 -68 0a a2 54 b4 ab 6e f9 a3 ec 0e 04 03 e4 b5 83 -d3 71 dd d9 6d d5 7b 2c 61 a6 e4 01 25 1a 1a 63 -0d 1d dc dd 84 d9 0d 82 fa f5 a0 18 d2 a8 8e 26 -58 55 e9 d7 ca 36 c6 87 95 f0 b3 1b 59 1c d6 58 -7c 71 d0 60 a0 b3 f7 f3 ea ef 43 79 59 22 02 8b -c2 b6 ad 46 7c fc 2d 7f 65 9c 53 85 aa 70 ba 36 -72 cd de 4c fe 49 70 cc 79 04 60 1b 27 88 72 bf -51 32 1c 4a 97 2f - -# Signature: -01 45 5e 3b b2 9c bc a8 83 9b 9f 54 4d 51 47 2e -bc fd 25 c2 92 27 c4 65 5d 5f 7e bb d8 3c 48 e7 -64 3e 7b 59 4d 6f 7c d5 f6 bf 9a 40 b0 5c 4a 05 -cb ee 1f d6 59 d3 ce de 3e 7c ad 61 e6 fd f8 f0 -e4 fd ef 08 12 a8 53 90 8f 0f 99 ca 7e 38 8e bc -19 e8 74 76 5b 11 64 0f 1e e1 e9 8f 54 95 3d e6 -17 6f 15 82 03 70 17 c8 38 60 9a 57 a1 2a cb af -a6 a5 65 47 f5 7d 62 db e8 76 69 ed c0 fe 3b aa -da - -# PKCS#1 v1.5 Signature Example 7.17 - -# ----------------- - -# Message to be signed: -12 88 c0 3f 95 00 6e a3 2f 56 2d 40 d5 2a f9 fe -b3 2f 0f a0 6d b6 5b 58 8a 23 7b 34 e5 92 d5 5c -f9 79 f9 03 a6 42 ef 64 d2 ed 54 2a a8 c7 7d c1 -dd 76 2f 45 a5 93 03 ed 75 e5 41 ca 27 1e 2b 60 -ca 70 9e 44 fa 06 61 13 1e 8d 5d 41 63 fd 8d 39 -85 66 ce 26 de 87 30 e7 2f 9c ca 73 76 41 c2 44 -15 94 20 63 70 28 df 0a 18 07 9d 62 08 ea 8b 47 -11 a2 c7 50 f5 c0 a4 25 31 3d f8 d7 56 4b d2 43 -4d 31 15 23 d5 25 7e ed 80 6a c8 c9 c6 af 04 ac - -# Signature: -00 6b eb b9 6f 0e 28 2f 1b 4d 03 e6 c5 65 05 b9 -37 78 da 9f 49 36 50 e8 aa eb 65 cf e6 28 50 04 -2f 75 ab e6 e6 ea fe b9 a7 0a bd 21 eb 5d ba 73 -cb b8 7c 12 98 0a ac df 16 71 6b 19 98 c9 49 9c -e4 39 c5 4a ab 4d 19 ce 72 7b 78 75 a4 1a 3d 30 -81 4e 50 8d aa 26 eb 70 aa bb d0 dc ae cc 4d 4b -51 69 80 71 51 1e b3 1b 21 0e 66 dc bc 7f c0 b8 -c6 23 14 da ea 69 d4 7a e2 78 10 0d eb 51 40 92 -00 - -# PKCS#1 v1.5 Signature Example 7.18 - -# ----------------- - -# Message to be signed: -54 13 99 3c 26 58 bc 1d 98 85 - -# Signature: -00 bb eb 2c a0 bd 64 cb 89 60 37 5b 08 a9 48 0e -69 c0 9f d3 82 de a2 f9 40 89 b1 53 3a 08 51 fa -0c bd 0e ad ef ca 8c 70 b7 70 79 7a d0 89 e8 40 -d2 fe 1a 8f b8 54 9f 32 90 58 3b bb 81 d3 ee 2b -1c 48 f1 ea 75 1b f3 2f 95 90 be 3a fd b7 74 5e -16 6e 0b 32 2c 08 31 24 e6 45 83 94 82 d0 81 26 -22 d3 1a b1 87 7a 9b b4 1b 8d aa d8 68 f3 0e 75 -07 83 2a c3 41 01 12 13 3a a1 7b 2d 47 6d 47 6d -89 - -# PKCS#1 v1.5 Signature Example 7.19 - -# ----------------- - -# Message to be signed: -9c 84 c1 48 6b c1 2b 3f a6 c5 98 71 b6 82 7c 8c -e2 53 ca 5f ef a8 a8 c6 90 bf 32 6e 8e 37 cd b9 -6d 90 a8 2e ba b6 9f 86 35 0e 18 22 e8 bd 53 6a -2e b3 07 c4 3b 48 50 a8 da c2 f1 5f 32 e3 78 39 -ef 8c 5c 0e 91 dd 0a fa d4 2c cd 4f c6 06 54 a5 -50 02 d2 28 f5 2a 4a 5f e0 3b 8b bb 08 ca 82 da -ca 55 8b 44 db e1 26 6e 50 c0 e7 45 a3 6d 9d 29 -04 e3 40 8a bc d1 fd 56 99 94 06 3f 4a 75 cc 72 -f2 fe e2 a0 cd 89 3a 43 af 1c 5b 8b 48 7d f0 a7 -16 10 02 4e 4f 6d df 9f 28 ad 08 13 c1 aa b9 1b -cb 3c 90 64 d5 ff 74 2d ef fe a6 57 09 41 39 36 -9e 5e a6 f4 a9 63 19 a5 cc 82 24 14 5b 54 50 62 -75 8f ef d1 fe 34 09 ae 16 92 59 c6 cd fd 6b 5f -29 58 e3 14 fa ec be 69 d2 ca ce 58 ee 55 17 9a -b9 b3 e6 d1 ec c1 4a 55 - -# Signature: -00 e6 be 96 e1 8d ce bf 83 88 ba 82 ec 6f 27 10 -5b c2 78 71 59 5e 01 70 5a 2b 97 a1 f4 d7 88 38 -35 2b 0e 7c 0a 2c 62 7a 6f f3 7d b1 69 a9 a4 64 -8a d2 7a f0 65 33 a4 f0 41 d4 c8 20 ab f4 fb 52 -64 64 08 14 34 df 36 78 85 03 c6 5a f7 62 aa 21 -9f b7 6a 91 cb b4 0e 14 92 a9 cb 77 36 9b b4 cc -a1 93 4e 38 53 de 6c 86 a5 dc 11 48 ed ee b3 b0 -03 04 14 fe 30 83 ad 72 fe 29 5c 29 b5 ea 9b 66 -60 - -# PKCS#1 v1.5 Signature Example 7.20 - -# ----------------- - -# Message to be signed: -94 0c da b4 a3 e9 20 09 cc d4 2e 1e 94 7b 13 14 -e3 22 38 a2 de ce 7d 23 a8 9b 5b 30 c7 51 fd 0a -4a 43 0d 2c 54 85 94 9a 2b 00 7e 80 97 8b bb 19 -2c 35 4e b7 da 9a ed fc 74 db f5 f7 1d fd 43 b4 -6c 93 db 82 62 9b da e2 bd 0a 12 b8 82 ea 04 c3 -b4 65 f5 cf 93 02 3f 01 05 96 26 db be 99 f2 6b -b1 be 94 9d dd d1 6d c7 f3 de bb 19 a1 94 62 7f -0b 22 44 34 df 7d 87 00 e9 e9 8b 06 e3 60 c1 2f -db e3 d1 9f 51 c9 68 4e b9 08 9e cb b0 a2 f0 45 -03 99 d3 f5 9e ac 72 94 08 5d 04 4f 53 93 c6 ce -73 74 23 d8 b8 - -# Signature: -00 80 e2 c3 4f d4 ab 4d 1d 70 1e a3 f0 85 76 3a -ca ff c9 fd 3e d9 18 d0 4b ff ee 19 31 62 48 98 -c7 8f 89 41 bd 2a 59 ce b5 b8 40 f0 11 45 16 ce -41 1f ae 75 2b 1b 8a 22 1f fc a7 a6 87 66 c6 97 -c5 0a 3d 88 d8 d0 2f fc 12 41 d8 4b b7 a7 22 7f -3d 05 14 9e 15 11 12 77 a1 36 a5 b8 dd 96 dd 4b -22 5c 5f 49 cd f6 07 1d bf 71 93 5c 7a 6f 1e 2e -9a f3 02 1c 0d 58 a9 b8 1c 9b de 61 fa 47 2c 07 -a6 - -# ============================================= - -# Example 8: A 1026-bit RSA key pair -# ----------------------------------- - - -# Public key -# ---------- - -# Modulus: -03 33 12 64 88 f7 a2 91 51 32 e3 0d 5e 97 f6 ed -7b bb 67 b6 19 85 00 8e ae a2 a5 da fb 96 a4 48 -ab 75 ce 3d 6e 68 a6 26 5e 7c 24 56 84 99 93 24 -c8 1e 0b a6 38 98 63 fe b4 88 b3 f2 55 d0 d6 19 -c1 90 40 b7 4c 18 9f 0c 9a f4 b0 d5 a5 5a 54 4c -09 0c d6 15 2c 90 a6 f2 55 0d 7d 2a 6b 6d 34 7d -5b 1b 9d fb 1d e4 40 3c 79 66 23 d7 03 bf 9d b4 -43 bf 67 02 68 3b 8d 2a 9c 61 e9 36 8a c4 25 a5 -81 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -03 33 12 64 88 f7 a2 91 51 32 e3 0d 5e 97 f6 ed -7b bb 67 b6 19 85 00 8e ae a2 a5 da fb 96 a4 48 -ab 75 ce 3d 6e 68 a6 26 5e 7c 24 56 84 99 93 24 -c8 1e 0b a6 38 98 63 fe b4 88 b3 f2 55 d0 d6 19 -c1 90 40 b7 4c 18 9f 0c 9a f4 b0 d5 a5 5a 54 4c -09 0c d6 15 2c 90 a6 f2 55 0d 7d 2a 6b 6d 34 7d -5b 1b 9d fb 1d e4 40 3c 79 66 23 d7 03 bf 9d b4 -43 bf 67 02 68 3b 8d 2a 9c 61 e9 36 8a c4 25 a5 -81 - -# Public exponent: -01 00 01 - -# Exponent: -01 4a 2b 15 df a8 83 1d b4 ef a0 5b 19 50 84 b7 -42 73 4e e1 36 f4 48 3f 3b e2 50 9d 2f 61 90 23 -c3 0a 1f f2 df 78 cb d1 17 b1 4f 2c 99 13 17 1f -72 93 b9 fa 6d 41 f0 bd 11 a5 31 74 74 67 54 86 -d7 f0 ae c0 a7 78 ba 92 0e 81 f5 64 d1 59 30 cd -de e7 e2 b0 6a d8 ad b6 12 75 1f 4e 38 4d 6f 3f -a0 a6 63 9f d6 2e df 86 f5 2c 9f e0 77 62 91 83 -21 83 d3 59 b7 34 32 60 c9 4e 12 5f 4a b8 bf 43 -69 - -# Prime 1: -01 d6 e7 bd 8e 39 5b be f2 10 46 49 c0 12 78 cc -1c 51 c9 68 7d ef b4 59 1f 03 b6 78 52 a4 bc b5 -30 75 0c f9 bf ca d0 72 8c 53 99 d8 70 35 01 06 -cb a3 ec 41 6a 31 e4 2d 0b 59 75 10 ff 1c 9d 53 -bb - -# Prime 2: -01 bd 46 6f 43 a4 d4 61 3e 42 64 f0 1b 2d ac 2e -5a a4 20 43 f8 fb 5f 69 fa 87 1d 14 fb 27 3e 76 -7a 53 1c 40 f0 2f 34 3b c2 fb 45 a0 c7 e0 f6 be -25 61 92 3a 77 21 1d 66 a6 e2 db b4 3c 36 63 51 -f3 - -# Prime exponent 1: -fb 66 85 00 65 06 e2 0e 01 3a 45 2d 51 af 43 e8 -ea 91 08 44 13 b0 c8 d3 91 fb dc 88 e2 82 0c 89 -6e 34 1b 31 95 69 6b 7e 17 33 cf 25 38 66 ef e5 -d0 01 d5 7a 88 60 34 dc 16 4a 35 64 bd 36 10 f9 - -# Prime exponent 2: -be 4e 9e 3b 40 f5 6c 62 59 aa 1e 5c df 56 59 b1 -6f b8 42 94 e5 8a d0 16 bd 2c 96 cd 08 e6 cf 68 -54 a1 1c b8 0a d4 be 3e 05 7a aa cf 02 bd 32 63 -73 a2 35 ce b8 9e 82 43 0d 6e 6d 47 d6 ce f8 35 - -# Coefficient: -c0 23 5c 89 73 cf bf 30 bf 1d d3 c8 39 f0 2c 94 -c6 9d c5 34 cb fc 98 88 05 d6 fc 46 2a db d3 77 -d1 75 b9 a9 64 60 18 d7 fa b7 5c 1d 1f 7d 61 b7 -7f a7 95 59 b8 6f fa 9e c6 e2 11 33 fa 7f 1a 45 - -# PKCS#1 v1.5 signing of 20 random messages -# ------------------------------------------------------- - -# PKCS#1 v1.5 Signature Example 8.1 - -# ----------------- - -# Message to be signed: -9a 28 20 f3 b9 02 9a bc 18 65 eb 06 fe 61 b8 d3 -97 b6 55 72 d6 00 61 ca a7 4e 63 56 93 1e 25 6b -89 71 2d 18 66 84 b4 de 1e 14 c9 eb fe f1 6e 40 -d9 9d 10 94 39 6c 56 1c 88 31 77 e5 12 6b 9b e2 -d9 a9 68 03 27 d5 37 0c 6f 26 86 1f 58 20 c4 3d -a6 7a 3a d6 09 04 e2 15 ee 6f f9 34 b9 da 70 d7 -73 0c 87 34 ab fc ec de 89 7f dd 67 0a 01 46 58 -68 ad c9 3f 26 13 19 57 a5 0c 52 fb 77 7c db aa -30 89 2c 9e 12 36 11 64 ec 13 97 9d 43 04 81 18 -e4 44 5d b8 7b ee 58 dd 98 7b 34 25 d0 20 71 d8 -db ae 80 70 8b 03 9d bb 64 db d1 de 56 57 d9 fe -d0 c1 18 a5 41 - -# Signature: -03 22 d0 0f c1 d9 66 94 f3 6e ae d2 30 90 56 f3 -ea 1c 1c c2 2b 13 b6 5e 79 11 8d 20 2c 42 d1 61 -30 99 38 05 09 da 74 35 bb 57 92 16 fd 57 65 06 -68 42 e3 56 a6 41 6f c8 42 a2 4a 9e a1 bc 6a 90 -98 05 23 b4 28 e3 99 bb d6 fc dc 2c b7 71 da f0 -03 7a 2d e8 c7 64 9b d5 33 17 de 0e 37 c3 14 ba -b0 c4 37 bb d7 98 df b9 65 50 6c 34 8b 74 2f 13 -8e f1 d1 a2 03 e0 51 e3 4b dd 3a 30 e0 fc e1 ac -43 - -# PKCS#1 v1.5 Signature Example 8.2 - -# ----------------- - -# Message to be signed: -ea 9a 1a 04 b7 cf 47 8a 89 7a 70 8f d9 88 f4 8e -80 1e db 0b 70 39 df 8c 23 bb 3c 56 f4 e8 21 ac -8b 2b dd 4b 40 fa f5 45 c7 78 dd f9 bc 1a 49 cb -57 f9 b7 1b 6d 48 b2 b6 a5 7a 63 c8 4c ea 85 9d -65 c6 68 28 4b 08 d9 6b dc aa be 25 2d b0 e4 a9 -6c b1 ba c6 01 93 41 db 6f be fb 8d 10 6b 0e 90 -ed a6 bc c6 c6 26 2f 37 e7 ea 9c 7e 5d 22 6b d7 -df 85 ec 5e 71 ef - -# Signature: -02 68 44 09 39 99 6a e5 cb da fd bc a8 6a 7c 42 -8a 04 b5 78 fe 2d be 51 26 a8 2f af 2b ec ff 09 -9a c6 0c b8 1b 11 7f 1e bf 42 04 fe 43 70 54 8d -5d 2c 46 80 63 68 2d a8 7d c8 01 79 bb 3b ba 85 -a1 48 ae 2d e7 dc b4 94 f4 76 22 1d f8 21 9d 4a -ae 1e 45 af 65 de 33 4a 1a 6d c1 45 52 86 ae 09 -cf 26 72 58 85 e7 74 80 99 72 d7 81 98 05 ff f5 -a8 c8 9d 37 37 64 50 73 92 49 f5 7e b1 51 b7 1d -c0 - -# PKCS#1 v1.5 Signature Example 8.3 - -# ----------------- - -# Message to be signed: -07 df 58 6b 90 5b 23 b9 1a f1 3d a1 23 04 bf 83 -ec a8 a7 3e 87 1f f9 - -# Signature: -01 bf d9 15 ff 77 80 f1 4c cc 55 bd 03 06 b3 ae -da 5b 5b 59 55 a8 26 d4 52 6b 0b c7 66 15 4f a8 -da 59 56 05 78 cc d4 88 2f e9 70 92 fb c7 36 fd -a7 3c ee fd 10 38 94 06 3e 93 e2 2a 7b 5c 44 f7 -a8 5e 3b db 96 71 9a 09 37 43 03 c9 1e d7 e2 27 -49 fe 3c 4d 6b 96 69 9d 50 7c 50 ad cf bd fc 13 -1d 6b 5f 2c f1 83 0e 31 ea be 39 ae b5 17 96 9c -94 a8 1c fe fe 67 31 aa 2c df fe 28 c8 af 71 40 -f4 - -# PKCS#1 v1.5 Signature Example 8.4 - -# ----------------- - -# Message to be signed: -50 0b 87 77 c7 f8 39 ba f0 a6 4b bb db c5 ce 79 -75 5c 57 a2 05 b8 45 c1 74 e2 d2 e9 05 46 a0 89 -c4 e6 ec 8a df fa 23 a7 ea 97 ba e6 b6 5d 78 2b -82 db 5d 2b 5a 56 d2 2a 29 a0 5e 7c 44 33 e2 b8 -2a 62 1a bb a9 0a dd 05 ce 39 3f c4 8a 84 05 42 -45 1a c7 cd 69 8d 84 b6 51 28 d8 83 5e 3a 8b 1e -b0 e0 1c b5 41 ec 50 f1 03 6e 00 8e 71 e9 64 da -dc 92 19 ed - -# Signature: -00 7a e0 cf d7 f4 c6 ad 1f f8 4b 4a 60 6b a1 c4 -79 8c 2e 49 9b 04 5b 56 7d 32 63 4f d9 55 f2 68 -26 0a b6 59 bf 5b e9 9e 08 26 eb 38 70 e8 f6 2f -5a 3c e7 58 e6 d1 56 c3 29 9b 43 1c d9 df c6 58 -37 ee 94 22 0d 95 23 51 14 87 99 be 9f ca f9 be -26 4d ae be ba 2b e8 66 05 20 1e f9 a0 d9 8f 58 -ec 63 8a bf c4 f2 78 48 f5 d4 79 d3 34 ac c2 a9 -7f dd 2d 32 7e c4 c7 dd c5 a8 ab d5 66 de 35 d1 -4f - -# PKCS#1 v1.5 Signature Example 8.5 - -# ----------------- - -# Message to be signed: -6b 3f 6a 63 d4 e7 78 59 24 3c 9c cc dc 98 01 65 -23 ab b0 24 83 b3 55 91 c3 3a ad 81 21 3b b7 c7 -bb 1a 47 0a ab c1 0d 44 25 6c 4d 45 59 d9 16 ef -a8 bf f9 62 12 b2 f4 a3 f3 71 a1 0d 57 41 52 65 -5f 5d fb a2 25 f1 08 95 a8 77 16 c1 37 45 0b b9 -51 9d fa a1 f2 07 fa a9 42 ea 88 ab f7 1e 9c 17 -98 00 85 b5 55 ae ba b7 62 64 ae 2a 3a b9 3c 2d -12 98 11 91 dd ac 6f b5 94 9e b3 6a ee 3c 5d a9 -40 f0 07 52 c9 16 d9 46 08 fa 7d 97 ba 6a 29 15 -b6 88 f2 03 23 d4 e9 d9 68 01 d8 9a 72 ab 58 92 -dc 21 17 c0 74 34 fc f9 72 e0 58 cf 8c 41 ca 4b -4f f5 54 f7 d5 06 8a d3 15 5f ce d0 f3 12 5b c0 -4f 91 93 37 8a 8f 5c 4c 3b 8c b4 dd 6d 1c c6 9d -30 ec ca 6e aa 51 e3 6a 05 73 0e 9e 34 2e 85 5b -af 09 9d ef b8 af d7 ad 8b 15 23 70 36 46 - -# Signature: -01 92 1f 22 f4 71 a0 8a f8 19 a9 52 e1 83 68 ce -15 f9 b0 64 eb 1d 00 b1 28 99 78 02 44 fe 8c 44 -24 b2 1f 64 35 0b 92 26 fe 95 ff 54 f1 14 39 83 -9b fb 54 f9 39 c9 14 95 e4 f0 27 90 18 97 27 3c -fa 29 5a 57 15 1f 4e 91 1d c1 02 a7 7d 95 8b 62 -27 24 c0 fd 3a 34 b3 b7 be fb 8b 8c d0 66 6e 81 -5d 0c 07 f2 ec b7 c4 dd 2f 42 b7 f4 09 13 12 e3 -d7 b2 df 26 78 87 e0 ac a7 0b 54 1c 4c 1e ea 16 -b5 - -# PKCS#1 v1.5 Signature Example 8.6 - -# ----------------- - -# Message to be signed: -93 29 a5 80 90 de 8b e5 7c 42 - -# Signature: -01 5c e2 4a 6f 2b 37 3a 19 99 7b b2 0c 18 ac 65 -9f 1e dc 0f 25 c9 e5 bf 76 d5 69 99 65 20 c2 80 -ef dc f1 5e 2d 63 ca af f6 c7 7a e0 38 97 03 7a -06 15 f9 83 8c 52 10 4e 97 25 18 e2 90 fa c3 8f -63 24 75 30 b4 cf 61 c6 ec e3 42 9b 53 07 81 cf -34 96 4f 32 ae 50 f1 09 34 63 83 86 d3 b4 df 76 -1c 59 7d 4a a7 fe ca 26 6c 27 f8 ce 66 ad e1 be -26 59 ce 14 2b a5 f9 35 88 3c 7e 8c 9b 89 57 ab -f2 - -# PKCS#1 v1.5 Signature Example 8.7 - -# ----------------- - -# Message to be signed: -6a ce 0f 1e 1d c6 3e 39 4a 06 1f 52 2a 54 2f be -71 20 25 4e 36 e9 f6 5d 19 57 c9 56 28 78 2c b0 -36 8f 3c 13 da d6 56 71 79 c1 ea 24 fe 83 5a 26 -63 85 e4 68 83 17 b8 2b 0c 3f e6 3c f2 d5 2f 04 -ae 8a 38 a5 75 59 bb 95 d9 eb d5 fe 8a 9a fe 14 -79 90 9e b9 9e 0d 3e f3 f3 12 e0 a4 ab b7 66 c7 -e2 13 1a 5f fb 48 31 83 fb b4 22 34 d3 2e 58 1f -59 50 65 c4 89 82 61 ec d0 ae 57 2c 22 1c 25 8d -e9 50 a4 08 01 ef 79 6d 4d d0 04 06 45 fc 53 4d -8e 78 58 23 48 38 ed 12 c6 87 40 c1 4e 37 16 13 -f0 04 61 76 bb b0 f4 3d 99 75 19 c4 0c 67 14 96 -ff 35 0a 3f df 42 9c c2 2f 46 4f 43 5f 6b 29 e7 -e1 c3 0e bd 50 59 27 d4 a0 96 58 7f c3 8d 3d 64 -94 39 1e - -# Signature: -02 73 ba 2c 50 2b 3f 29 84 c5 48 d9 f7 d6 c9 b3 -d7 fd 46 08 78 c8 4d 6b e3 3b 28 10 6e 15 fc 22 -17 ef f7 41 cd c2 66 83 4b ea a8 6d a4 05 f3 ca -e6 06 cc 61 f2 54 7b b9 22 92 03 45 fe 8f bb 5e -7b 6a bf 91 ea e8 c4 26 60 64 50 25 cc 7f c0 7a -53 4b 76 d3 78 75 e3 f4 0d 52 70 c1 0e f4 6c 7f -e4 5a fa bc ff ae 2a 9c 94 11 bd 04 d6 1d 4c 0e -5f fc 02 2c b3 6a 64 b7 c3 a8 c8 9b fd e4 36 ba -fd - -# PKCS#1 v1.5 Signature Example 8.8 - -# ----------------- - -# Message to be signed: -fd cc 0f 1e 5d cb e5 01 6a 6b 0f 8c 28 f5 b3 31 -ff 58 28 37 13 8d bf 62 ef 7f f6 1b c1 a3 53 96 -c9 2e 3d 54 8d 39 9e 35 0a 3c 6b c2 fd b5 da 94 -b9 86 a4 ce 6d ee 10 4e 9f 27 4b 15 25 58 bf a7 -22 cc fd da 3b 26 b9 f8 e5 15 25 f3 81 03 4c 51 -fd c9 f7 91 2a c9 27 d1 a7 08 cc 2d bb cd 7b a6 -c0 31 b0 11 cb a8 e2 df 8f c9 b8 83 64 ee 96 5f -24 27 0e 43 48 62 32 53 cb 9e 59 d6 f7 94 09 09 -94 a7 a4 c9 30 02 70 b5 7f 24 39 eb bb a4 65 84 -67 af db 7f e8 6b 4f 1a ad 1d 3d 3b 2f - -# Signature: -00 a7 c4 50 b3 0b 2e cb 19 bb 70 9a 92 31 cb fa -9f 0d 61 69 7a 26 b9 0a 96 d9 1c 24 c4 da 70 d7 -b0 0b 59 23 c8 e1 2d 41 09 4b 70 5d 50 c7 78 bb -da ce c6 60 d5 c1 5d ff d3 a2 47 8f d9 33 70 80 -dc a1 6b 9c 13 e6 23 3b 82 92 b2 fd cc 29 e9 bf -3b 21 a7 18 78 f3 4e f5 eb 7c d5 0a d4 12 03 72 -5a 0f 1c 66 3f 73 42 ec 7c 3d f3 d5 aa 51 d0 58 -df cc ce 5f e6 9d 36 3b 42 84 32 08 79 e8 6d 58 -b5 - -# PKCS#1 v1.5 Signature Example 8.9 - -# ----------------- - -# Message to be signed: -2d 1f cd 17 66 f7 d4 5f 29 59 4f 9d 4f 74 39 41 -ae 91 2a 97 91 1f fc 3d 65 dc d9 65 60 10 77 3b -b0 22 4b a6 df 11 1b 1c 13 68 38 4f 24 92 fc 4f -a7 28 0c 06 65 14 ae 84 f7 61 45 63 d9 05 2c a9 -4e f4 46 a3 1b 46 3b d6 c2 50 56 80 50 88 c1 d3 -1a ba ff 52 15 f7 a8 f8 9e 7b 64 f2 - -# Signature: -02 c0 e0 71 e8 36 90 dc 14 d9 a3 7d 61 e0 af c2 -7d f9 78 03 9d a6 01 ca 2c ec 1d ec 8f 0d 17 d2 -ff c4 50 e6 78 38 0a 02 5a 41 c7 46 11 8f 58 36 -42 52 a1 22 53 9e cc bb b4 ab 3d 8d 37 7b db b9 -11 c5 8a 4c b9 46 2f 36 dc 38 92 48 50 1b d0 8f -48 e3 53 3b 82 59 1a 2a 20 cf 62 df 5f 5a 1f 84 -ea 30 0c b3 94 57 13 71 41 ad 8c d1 d1 85 ab b1 -7b a5 d0 3b e3 48 c0 67 97 b0 95 58 f0 33 1c 24 -b9 - -# PKCS#1 v1.5 Signature Example 8.10 - -# ----------------- - -# Message to be signed: -4f 46 9a b7 9c b8 93 a5 3c 0e e3 81 5a 8b c0 87 -eb 74 ea 36 61 5b dd c3 33 de e0 5f c7 26 65 aa -6d 0b d5 9e 47 22 98 29 83 4b 1f 91 c9 cd 81 ce -28 d6 8f 14 82 5a 34 5f 3a 4f 38 a0 1b 2d ae 59 -10 07 64 aa b9 90 a8 50 b1 1c 13 d5 df e4 19 f1 -d9 20 d0 0c f1 3b f4 30 e4 ca 82 87 98 9b ee be -da 3e 5d 40 36 02 8c 8e f9 54 6e 35 01 50 d1 96 -f0 05 60 ba e1 47 22 99 e7 f4 29 1d 54 46 29 c4 -f6 52 e3 5c de 4f 80 3e 1b 3c a3 38 09 51 5e f2 -3d 25 4b 8e 65 20 2a 14 a4 11 b1 bc 31 5c 5f fa -ec b8 21 11 97 80 9d cb 5c ed 68 2c 09 f6 7e 41 -d1 60 2c - -# Signature: -01 71 29 64 ea 9a b9 70 29 5b 81 b0 fb d8 35 7e -54 b9 36 ee 87 72 d8 ae 9c 96 12 71 6f cc 2f cb -78 4c a9 ab ee eb b8 fc b6 89 82 16 1c c7 4e 40 -c7 c0 22 47 c0 d0 0e 03 bc 8e 1a 70 51 b8 7c 90 -dd 7d 3d fc 95 e0 b3 c8 8e 7a 0f 37 f3 0e 1b d5 -fe 8b 6e ee 46 5a 0b 34 cb 59 c6 4e bd b5 7d 6f -5f df f2 e7 0b b1 9c 60 d9 88 ea 95 6c dc dd 1b -e5 62 f2 6f b3 7c 34 da 52 a9 f9 11 b9 97 43 81 -2c - -# PKCS#1 v1.5 Signature Example 8.11 - -# ----------------- - -# Message to be signed: -52 bb 76 c9 ea 26 5d 6f ad 10 83 72 ff ab 25 03 -bb 20 d3 8d 37 df 19 92 54 a2 f6 de 0c 4f ca 7a -73 03 36 - -# Signature: -01 0c 55 34 23 60 22 60 15 8a 17 13 3b 5d 30 ef -e9 8e 9a eb 35 3b ab 33 71 e4 91 cd be bd 35 0a -0a 47 0b 9d bf d1 89 33 51 1f 0d 0e 36 94 a8 ac -4b f3 f5 b6 eb 9b f7 1c 23 d9 4c 2e 64 be b7 b7 -c7 22 52 ca 82 7b d0 c0 56 7b a8 a1 0a 6d 3b 7e -18 7b 0f d8 e9 e9 5d 4f e4 80 f2 50 dc 7f 03 42 -29 0e 9a 7d 32 70 3a 72 13 c6 52 13 ad ed 45 57 -54 78 1f 3d b7 3e 79 e3 d1 ba 6a f7 f6 90 fe 81 -73 - -# PKCS#1 v1.5 Signature Example 8.12 - -# ----------------- - -# Message to be signed: -5f 59 7a 19 cb f5 14 30 d3 c6 a2 47 a5 23 54 07 -38 6c ae d0 a2 94 f3 f4 1f 3f 37 82 50 d4 c5 a2 -c9 92 75 f9 55 44 cc c1 d7 7e 5c 15 1a f1 3e d6 -0b e5 22 eb 8c ab ed 89 a9 b4 5b 09 65 46 00 f9 -fc 75 1e 8b 12 e6 7e 52 - -# Signature: -00 3b d4 aa 90 81 fe 7e 9f 69 a2 69 fe c8 c8 a7 -36 70 c0 37 e8 5a 1f 36 fc ad 74 e5 b5 2d 71 0a -5a 18 ba 09 5b 98 10 cc 69 37 bc 76 34 09 51 e7 -fe d7 5b 32 6d 0a 3b 0f 26 c2 9c d5 eb 64 15 bb -f7 e2 dd 60 ad f6 a0 e6 13 02 dc c6 60 cc e9 10 -40 8b 4f 99 a4 40 ae 2a d6 c3 07 72 c2 9a 9e 7b -32 80 e2 e2 93 9a ba 0b 54 ab 02 2a a3 29 50 22 -71 8c d3 b7 87 b1 13 79 90 fb eb ef ac ec 8c b7 -49 - -# PKCS#1 v1.5 Signature Example 8.13 - -# ----------------- - -# Message to be signed: -84 0c c9 00 cb 4b 2c b6 7a 30 4a 9b 02 82 6d b0 -d6 67 36 92 2e 78 70 13 d6 bf 21 4d f5 79 ff 0c -f4 82 1f 9b - -# Signature: -01 3b 6c 08 0f 68 93 95 05 e1 87 a4 94 82 c7 91 -27 8d a3 ad 4a 74 7c 4f 01 79 1b 92 48 05 b6 82 -f6 49 bb d8 0d ba 12 fb be 59 40 f1 7f 27 e7 5d -42 67 7c 4c cc df fd 00 48 77 2e 36 93 4c 69 12 -12 8f f9 03 af ea 5e 1c a8 fe 94 24 fc 97 9b 21 -87 98 76 98 a5 c5 a7 5e 7d 70 70 a2 a6 74 85 2b -d8 05 bf 13 bb d1 29 6b ff 13 10 a6 d6 ed 45 fd -f8 67 2d 52 41 e7 4c d4 c4 19 86 e4 36 25 50 0c -23 - -# PKCS#1 v1.5 Signature Example 8.14 - -# ----------------- - -# Message to be signed: -c6 41 71 94 13 3b 5f 8e a6 3d 95 58 1c 89 6f 5b -9e f3 d8 7c f6 6c 02 91 64 0f 35 0a 32 5b 49 11 -52 e9 d1 43 0d 68 70 34 6e 46 8e 71 99 45 d4 e3 -65 d0 01 07 5f a9 70 f2 a9 87 0a 1c 65 43 4b a1 -70 02 41 2a cc 4c c7 4d 28 b2 de e2 9b 36 e3 97 -b6 8c 5d 59 cf 67 7c 29 ae e7 93 a9 30 0b 7b f4 -c6 73 b3 e0 b6 03 a3 61 1c a9 02 44 ff 08 78 75 -c5 16 88 57 cb 92 a9 5a aa 61 df f3 c2 12 dc 62 -06 f1 71 47 c4 4b 95 07 d5 c8 90 75 8b b3 5b b7 -2a 2a 5e 9d 4d b2 65 e5 37 3a 5b 34 02 90 4f 0f -1a 12 05 d5 bc c5 90 25 d3 22 0a 5d e1 b1 82 a8 -4d 30 41 2b 84 26 d4 69 32 32 1b 57 ef 72 64 0a -dd 2c ee bf 5b e9 68 43 6b cd 12 16 90 78 84 82 -32 93 b0 10 ec 28 f0 d9 - -# Signature: -01 60 47 ca ad 6c 47 bf 27 d0 cc fa 03 41 01 7e -56 5e 02 8c f2 6c 8e 66 0f 79 e0 91 f3 50 ce b2 -aa cf 92 f7 d0 1d 37 3f 71 55 11 9c 07 29 17 f2 -4f 01 bf 74 7b e2 dc dc 41 d1 be 58 85 35 c2 d6 -ac 17 04 c5 fb 16 f6 e5 dc 4b bc 84 53 f5 21 db -73 1e ba 78 98 e6 e5 21 2b 80 ce 9d a0 f1 56 28 -18 99 98 31 35 03 df d4 4e 3d 69 de 9b a9 cb 5e -b3 2a c4 1c b8 e3 62 1b a1 d2 91 d0 c5 da 24 9f -15 - -# PKCS#1 v1.5 Signature Example 8.15 - -# ----------------- - -# Message to be signed: -a6 42 f0 f7 0b 4b d3 b5 4b e2 20 11 9a 7f 79 - -# Signature: -00 a0 33 6e 63 67 52 7b bf 13 b0 a9 33 b6 31 c7 -2c b3 3e ab bc 29 2a 0f 8f 75 55 0c 22 30 fe 82 -57 f2 af 76 d5 43 cc d1 07 dd 2c 87 78 d3 ac 8a -7b 5b b4 ac fa 57 f2 af 6a 23 14 95 23 5a 51 da -dd b0 83 e3 73 b7 77 a9 5c f9 c4 a9 b6 be 77 51 -b6 5f eb 62 3a b3 34 43 36 54 b1 21 0f 7f 78 2b -17 25 c6 ba 4f fd 20 d1 7e d4 b6 ec 4a 3a f6 4b -d2 73 47 55 b7 73 9e eb f4 18 f0 9d 3a ff 28 9d -13 - -# PKCS#1 v1.5 Signature Example 8.16 - -# ----------------- - -# Message to be signed: -ca 16 e4 3d 9c 82 d9 d3 0c 8f cb 40 22 93 3c ff -c7 d7 4c aa 0d f4 86 35 09 31 8e da ba 4e 0d 51 -99 77 9c 03 50 4a ff a2 7d 87 19 1b 6b f6 86 a8 -4d 97 9a 2f dd 5b 8a 4c 49 32 14 45 c6 f7 5d 25 -23 59 17 ad be e2 a5 cf f8 a9 7a ef 78 c0 09 22 -10 11 d8 3c 0f 9d 37 16 08 75 af 73 67 71 8b 10 -ee c3 b4 29 90 e6 43 f6 37 07 cf bb 30 a7 fa 74 -ab 16 a7 eb f1 c8 38 c3 b2 26 37 b6 3c cd cb 6e -b3 4c 62 eb a9 e9 48 c7 ac 90 30 f0 63 77 29 d3 -e2 78 0a e6 be 4d 2f af 34 6c 11 63 d3 f9 82 48 -19 3a 76 39 9f b7 84 ca cf 68 fb 33 c7 4b ab c9 -dd b6 27 52 0c 0c 61 12 34 64 68 cf 20 a8 e0 2c -c9 a9 bd 27 91 0e 83 29 7b 85 e8 57 32 4a 01 00 -f5 cd d5 93 1b 6a 6d e0 5f 94 83 3a a8 61 0a 3a -4b 08 a5 a3 93 53 - -# Signature: -02 48 59 23 3f b9 db 7c d1 41 f4 b8 77 6a 1d 83 -e1 03 db 3a c9 42 89 d3 6e f4 0f 5e 6e 63 c3 12 -12 af dd dd 16 88 c2 c1 c8 d4 db 04 71 9e 1c 6e -8d bf 7d 60 be 25 f1 d6 88 87 fd ad da 3d 11 2e -3d 0d 24 c0 cd d7 98 8a 55 c7 10 29 40 08 2d 1a -c3 1f b3 ef ab e7 c2 88 cb 4e e7 2a 99 2a c9 6d -1e dd 78 ec 72 82 73 97 0a 79 69 95 c3 e2 a3 85 -81 e2 28 03 25 8e b4 cd 9d a2 04 0f af 74 1c 54 -2a - -# PKCS#1 v1.5 Signature Example 8.17 - -# ----------------- - -# Message to be signed: -3b aa 7e 9a da 21 43 f8 48 82 5d 22 93 67 04 d1 -c9 97 b2 da 76 76 9c 98 6f a1 52 b8 98 ae b1 1c -10 b9 45 79 76 4f 9d c9 33 65 2a 81 03 67 04 76 -95 8d 59 86 7a b2 4a 97 12 84 05 6e 99 c6 48 b7 -7e 7a 65 36 44 87 0f e4 c7 ce f3 7f 90 01 60 48 -72 ad ed e1 6a ac ed 8a a5 df 42 05 33 04 e4 d1 -71 12 0d 7a b3 ce 81 a4 d1 a2 74 98 d1 38 01 8f -66 21 bd fc 1d 53 e7 f3 c1 a5 aa 5d 62 b0 9a 55 -4a 56 f1 ed 4f 38 5a 07 68 ea a2 da 0c 9f 56 37 -03 4c 2e ef 58 cc 35 17 8b c2 a6 27 2c f5 29 b6 -5a df - -# Signature: -01 e6 3b 86 d0 c1 59 99 09 3d 44 28 af 7c 6d e6 -48 07 45 d8 19 e4 29 62 3f 47 2b 45 de 61 aa 56 -7b 60 d9 94 79 2a 0d 11 65 80 55 98 f4 e2 1f e6 -13 99 9a 96 22 5d 0b ba 98 f9 cf be e8 3a f5 85 -fa 07 84 39 a7 42 51 5a e2 18 ec 31 f8 d5 08 f2 -9b 0e 58 75 fc a8 f0 4f 11 a1 c8 2f 2b b0 ae 52 -8f da d3 ca 50 75 bb 3f 41 bb 57 83 34 81 33 fb -a8 a0 b3 ad 95 1a 1a 64 9c a0 f9 75 8b 20 c8 70 -fd - -# PKCS#1 v1.5 Signature Example 8.18 - -# ----------------- - -# Message to be signed: -7e b3 c9 8e 46 fd 1b 5c 9f f1 b1 1b e1 61 9b 56 -60 57 f2 6c 55 e2 88 f4 84 4c cd 50 ba a9 1b 03 -8d 60 95 83 6f 77 1f c1 c4 25 fb 53 3e f2 b1 dc -4a 3e 94 9b b9 95 25 c2 8f e8 a3 e9 31 78 f3 a0 -ac 97 fd 5d aa 81 b5 92 86 18 8e 17 b4 4b 37 71 -bc a8 55 d8 5f 3c 4d 28 6f 10 68 10 f4 e5 22 ea -05 83 4f 11 a3 1e 89 c3 59 90 c5 1b 08 0c 03 a6 -61 e3 d4 a1 b9 7a 2c 27 94 0f 5b 2e 41 2b 69 9e -a6 10 e8 99 6a e6 71 5a b6 e2 09 69 b6 aa 54 cc -72 31 9d fe e6 3b d2 ca cf d0 60 8d 40 e2 b4 03 -95 fe 55 dd a5 be a3 b0 f9 b9 4b 5a ad c0 98 dd -56 8d a3 95 db 2d 44 e4 - -# Signature: -01 5c fa d9 6e 4b 57 d9 cb b5 78 c7 90 74 a2 ba -86 9c 06 02 88 68 c5 a3 fc f4 a5 e3 61 83 1b d8 -c0 2c 25 b1 2b 90 23 4c 8e a4 82 2f b6 5e 82 d0 -91 a9 0f 89 b6 c1 15 6e 4b 44 d7 8d 32 a6 47 37 -d6 15 87 c0 ce 3f 4b 34 3e 71 f8 f7 a8 4c 6f 8f -c8 ae f8 f4 64 c8 b3 59 e4 fb 18 ad c6 99 c5 a0 -76 45 37 55 93 0c 5f 6f a7 07 1f 8f ec b8 63 1a -a4 14 f5 08 35 03 8b e7 ab 05 a4 b0 50 f3 f5 6e -86 - -# PKCS#1 v1.5 Signature Example 8.19 - -# ----------------- - -# Message to be signed: -6a 45 ee 0b 7e a8 03 68 b2 c4 29 af 28 81 53 f4 -56 cc 66 32 17 a8 ff cd 2a a0 5c 5d 32 2d b7 57 -56 cd bc 0f 68 41 41 fe 6b ca e1 89 bf 24 de 1c -8e dd 5b 11 36 44 a4 50 0d 0d 4f f5 80 08 36 40 -e1 2a 2c 95 de 69 e9 59 6b fb 1d 44 36 57 86 e1 -67 d0 25 d8 9e a2 f8 d1 3a 0e 64 77 f1 3b 85 bb -dc f1 60 77 4b 18 25 8c a0 be c0 bd 7b f1 39 11 -b3 89 6b 48 89 fa 3d e0 4a b2 6b d6 82 b4 ab 43 -7c 0c 17 f3 53 a2 3a 43 e9 2e 20 e7 f8 20 69 4e -40 3a ab dd 5d 19 6e 93 89 5b 47 92 55 df 40 30 -ad 8c e3 a5 3d 15 73 be 22 6d 81 aa 18 e4 85 89 -57 a2 d0 a3 35 9c 2e 7a - -# Signature: -01 64 f0 db cd d9 52 11 86 a2 80 84 a3 f3 ae 6a -ac b6 59 6b 85 6e 8a ab 2e 72 a7 f2 33 d6 2d 2d -3e f1 96 d3 78 7e 4b 04 57 31 da 9c 61 50 ad 9d -5f 91 8c 6b 06 c9 2a 11 a0 bf d5 ef cc b7 b0 3a -01 07 24 14 39 d3 4d 31 3d 35 b3 6a 0d 8c a0 81 -3c 36 23 b2 bd 78 f2 e3 a9 71 99 64 8d a3 58 06 -ff c5 8e ed 33 ac 9f cf 79 53 8f a8 89 15 b1 a5 -75 85 78 b9 a2 db 01 38 04 bf 32 e7 a5 6d c7 24 -37 - -# PKCS#1 v1.5 Signature Example 8.20 - -# ----------------- - -# Message to be signed: -92 a4 b4 bc e3 da a0 a7 a6 4b 72 ad 87 1f 3a a8 -ea b5 ac 40 11 aa ae a2 ce eb a8 92 77 c6 43 29 -57 26 26 c9 56 88 4f 48 54 f8 61 3d 22 51 8b 14 -f0 38 fc af 9e 68 e1 30 02 fb 0a 00 a7 8c c2 ea -51 44 fc 13 11 76 d5 e5 d6 7e 10 6a 99 87 9c - -# Signature: -01 24 fd 8b 2a cf 22 37 fc 71 a2 ee 97 e2 6a 4d -ab 7d ea 82 9e 15 be b2 f8 a7 37 91 a0 ba 15 2d -a5 b0 6a df 34 1d 74 09 e8 d3 d3 17 5b 51 01 34 -32 5a 35 32 97 a8 d6 d6 6c 09 70 03 22 ee c5 e3 -3f 62 48 6a 21 11 30 d7 4c 70 dd 92 5d f8 60 2a -e3 c4 c6 cc af 93 cc 9a 97 0d 1e 85 32 60 ee c6 -94 81 c5 f1 33 7e 9d d3 ae da 88 d8 82 99 be 08 -09 5b 71 5a 5b 21 66 e6 17 c9 26 72 2c ed d6 ef -34 - -# ============================================= - -# Example 9: A 1027-bit RSA key pair -# ----------------------------------- - - -# Public key -# ---------- - -# Modulus: -05 f3 74 34 88 26 1c 6f 06 25 e4 32 fa 6e b8 7f -b1 2b 26 21 82 90 bf e3 96 ba 76 ea 42 61 32 2f -81 43 e4 b4 eb cd 5d 2a e1 9b 0f 9d 8d cd 2f c7 -e6 82 32 08 a7 51 83 3d 3b 4e 8e 38 7c 39 f8 ed -6b bc 9f da ec 32 d3 ea 9a bb ff 57 47 23 f3 f1 -22 99 90 96 3e a4 fd 9f b5 44 f6 42 90 aa 2e a7 -da 63 11 91 a2 0d bc 94 23 b4 61 23 3b 93 72 49 -f2 f4 ea 10 92 8f ae 2a 6f e6 64 f1 2c 09 23 ed -11 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -05 f3 74 34 88 26 1c 6f 06 25 e4 32 fa 6e b8 7f -b1 2b 26 21 82 90 bf e3 96 ba 76 ea 42 61 32 2f -81 43 e4 b4 eb cd 5d 2a e1 9b 0f 9d 8d cd 2f c7 -e6 82 32 08 a7 51 83 3d 3b 4e 8e 38 7c 39 f8 ed -6b bc 9f da ec 32 d3 ea 9a bb ff 57 47 23 f3 f1 -22 99 90 96 3e a4 fd 9f b5 44 f6 42 90 aa 2e a7 -da 63 11 91 a2 0d bc 94 23 b4 61 23 3b 93 72 49 -f2 f4 ea 10 92 8f ae 2a 6f e6 64 f1 2c 09 23 ed -11 - -# Public exponent: -01 00 01 - -# Exponent: -01 4c c3 26 32 52 f8 c4 fb 77 cd 57 a1 42 0c 04 -c0 43 27 8a 0c 45 e7 d4 23 79 49 3e 34 0f 9c f1 -a9 6f 96 06 3a b7 59 d1 63 04 06 ae 28 6a 18 34 -b6 d1 db 71 ee 72 2c 93 74 5f dd 4a d3 3f aa 72 -d8 93 51 da 69 1a 7d 0a 71 d2 c5 5c 57 97 d2 cc -b3 b4 62 62 08 bc 5f 5c 84 fe 43 2f 66 4d c3 0e -de 09 63 e6 58 45 2b 2a d5 ef a4 93 5a 12 2f 46 -1d 1e ab 84 1c 8a e0 e6 e8 2f c1 fe e8 5d 18 1c -bd - -# Prime 1: -02 94 ea 0f a3 4e c3 13 72 33 44 20 2e 85 ec a2 -4b 5d f6 46 1a 1c 30 08 7d ca b5 d2 53 39 4a f5 -66 6f 03 5c 33 35 41 0d 8b b9 86 62 c9 78 f6 1d -37 db 4d 83 f0 b2 4c dc b6 3f ca db 79 c5 27 f5 -ab - -# Prime 2: -02 4e 19 16 52 f1 70 9f f4 74 37 40 85 81 88 8a -9d a1 09 17 c5 b5 ab af 91 46 10 9f da c6 94 76 -6f 4c 8f b0 57 96 8e 84 8d 99 58 6b 05 f8 a0 2f -ba 6c a1 eb 12 ba 08 df d4 9b 62 c2 7a 8f 15 f4 -33 - -# Prime exponent 1: -01 22 7f 36 dc 6b 14 27 89 fc aa a7 12 8b df 14 -fe d7 90 16 04 07 fb bc df bd a7 e9 88 97 18 31 -81 12 ae 81 6a 28 b0 2d 4a 0b 03 dc 8b fd d4 ff -c6 bb 67 f8 e4 65 1a 8f b0 b3 9d 70 96 b7 67 f6 -fd - -# Prime exponent 2: -02 25 ec 05 3c e8 da 6f 86 ad e3 6b d2 bf 43 93 -02 91 37 5b 1b 1a 51 d4 7d 0b 11 a5 17 8a 26 83 -34 f7 e1 94 92 1b b1 d7 5f ea 7f 56 c5 aa cd 05 -8d b3 7d 36 08 2e ac e4 83 4b 07 bf 7b dd ea b4 -b7 - -# Coefficient: -02 0b d0 f5 15 80 87 ed e3 8c b5 dc 66 e4 01 0a -e4 e4 8c c0 04 2e 15 2c d5 ee b0 51 c9 ec 45 ad -23 40 24 53 52 c0 1d 94 c6 a5 26 aa 5a 45 4c db -ae ac 85 95 34 9b be 6a 8d 55 19 a3 c9 b7 d0 7c -3a - -# PKCS#1 v1.5 signing of 20 random messages -# ------------------------------------------------------- - -# PKCS#1 v1.5 Signature Example 9.1 - -# ----------------- - -# Message to be signed: -82 e5 c5 aa e6 4e 60 8b 27 50 4b 91 db - -# Signature: -01 45 82 da e9 35 e6 b2 ae ff 7d 72 50 89 da b0 -58 c6 78 b2 ee 28 bc d4 44 a7 2b df ac 31 46 3e -18 e9 4d 7b 5e cc 84 a4 31 69 6a 1c dd 79 f9 c0 -8c 33 e1 d4 b3 22 dd 27 7b 50 3a e6 e4 f9 c3 15 -30 5b 43 72 fe 45 fe 4a 7e bb fc 4a e5 90 fa 3c -52 0b f8 28 15 8f 78 20 29 9f 09 b1 34 ed e1 17 -b6 72 a1 ea c2 f0 50 c0 44 b2 55 ca 8d 45 52 d4 -b5 f3 f5 7b 87 34 db 24 74 50 07 44 a5 33 75 00 -5e - -# PKCS#1 v1.5 Signature Example 9.2 - -# ----------------- - -# Message to be signed: -77 e0 fb dc d6 e0 49 8f c5 68 4f f1 3d 4c 9f 5b -78 0e 77 e2 46 46 37 ff 66 ea a2 d7 d9 c3 de fb -9b 0e 3a 38 37 73 db 97 a4 fb 49 1b eb 21 14 fd -ea 2c 2a 48 0f fc 21 9b 79 6a d8 05 d5 4f be c1 -7d cb 34 b1 da 17 96 cb 9c d5 f2 41 6a b5 e7 66 -f8 e0 06 91 8e be c1 82 29 98 a2 8f ff a6 23 0c -07 87 26 fb a2 e4 a7 b0 - -# Signature: -05 93 27 ce e7 26 ff b6 03 e8 a9 fc d5 74 ab a9 -cb df c3 6c 0a a6 6f cf e3 55 5c f2 ef 35 82 d3 -22 0d f9 d6 bf 8a 78 e3 ff f0 c1 29 b3 ab b3 dc -71 21 12 a2 05 6b ca 08 63 65 54 c1 ac 57 df 87 -f3 66 41 52 68 8c 6a c7 2e 6b 88 f5 63 7c d7 3f -16 69 89 c8 29 09 fb 67 bc 1f a2 e2 d5 23 e5 1c -91 8f 2b be c1 d7 52 02 af 24 0a 61 cd 2d cc 55 -5c ae ae 9a 68 57 0d 77 81 0c f1 df 81 23 ff 41 -c0 - -# PKCS#1 v1.5 Signature Example 9.3 - -# ----------------- - -# Message to be signed: -0d fa 5b aa 1c dd b8 34 70 7a 5f 8c c6 ec e5 71 -a7 a7 fc a5 67 63 62 d2 b2 37 41 a9 57 0a e2 63 -8f 6b 1c 23 89 85 36 75 cc c6 cc 1b 4c 6d ae 23 -cd a7 1a b9 6b 5a 2f 22 14 57 50 43 3e 2d 6b a4 -27 6a c1 ff 9a 48 af c9 f3 12 f4 13 37 85 ca 5a -f3 74 66 74 31 9a 67 57 a1 64 e3 4d 14 98 bd 55 -30 90 2e 32 18 55 e3 be d4 08 81 f0 05 42 25 6a -a2 1a 42 fc - -# Signature: -01 d1 95 41 69 af 58 99 3e 14 77 2a 94 f1 9b c4 -79 24 cc db 2e 90 ee 43 36 fb 6e 08 49 8a f4 da -26 51 a2 b7 83 6c 31 3a 57 c8 61 b5 51 84 ec 3b -15 fa c8 14 53 51 be c5 a7 27 0a 3a a8 69 4d b4 -e9 a9 2c b9 32 7b b7 a4 f7 b7 0d 24 4e af 9e bf -a9 ed fd 4d 54 78 2f 3f 97 26 26 95 b9 7d 41 6e -52 7b e4 ea 2d ef fe 6e b5 e0 6c da 6f 0a 7e 41 -66 77 ac 0f d6 f8 19 5d 4c e2 89 70 d2 ca 41 1a -2b - -# PKCS#1 v1.5 Signature Example 9.4 - -# ----------------- - -# Message to be signed: -16 7e 79 56 8c 77 36 69 0c 3b ed bb c8 d4 24 eb -53 6a 12 85 5a 60 cd b1 0f 94 ba 11 23 17 e9 17 -a1 b7 d6 fc fa a3 43 8d 68 ee 09 fd 47 - -# Signature: -02 9a 2b 90 86 14 ed 7a 5f ab 72 f2 a1 c8 e5 48 -b6 f8 b8 b4 5b 75 81 fd 24 51 fe 45 a6 22 fa 0f -08 dd 0b a2 e8 f3 c4 17 20 1e a0 27 79 10 18 4f -37 6d a8 03 fa 72 c5 0d 39 be 28 82 52 6d 1e 85 -df 9a b1 79 75 76 4a cf b2 07 36 6f 6c d2 c8 b1 -36 a9 99 da af 48 f1 c0 8a 9e a1 f0 84 25 c2 1b -65 41 80 da 4a df 10 9b 4b c5 b8 17 dd 67 bf 7d -aa b4 a3 84 03 4a b4 ad e6 94 89 8c fc 27 2a b6 -53 - -# PKCS#1 v1.5 Signature Example 9.5 - -# ----------------- - -# Message to be signed: -0d 03 f7 12 84 f2 e4 83 24 2d 92 3f d1 e1 53 bc -16 0f 0c dc 2c 0b 76 f1 bc 2c f7 d1 be 9c cc 7f -af a6 af c3 90 34 01 84 09 cc fd 16 28 a7 0b 35 -83 33 bd 96 ee d3 ad f3 14 2b 17 60 bf 8a 9b b1 -9e a2 47 3a 2e d8 5c 91 cd 5f 0a 5f 2d 46 32 d6 -17 64 19 fa 1d 8c c8 8b 67 08 47 77 11 ea 49 58 -a8 39 01 fe f2 84 f5 a6 c5 02 79 8c 8b d0 a3 50 -f2 ea 83 ed 18 1e b9 70 d3 0b 78 13 4c 8e 1d 64 -f0 d1 49 5b 70 17 24 5f a6 9b d5 74 27 f7 49 20 -ba 0e ed e9 cb a3 4e b2 22 76 b0 f2 74 13 ba 3f -0d a8 eb de db 9b 0c 80 0e 44 48 1d 01 e6 bb b0 -df eb f9 a1 5e f6 a7 02 0b 2c 55 ee 02 79 11 79 -6f 66 f4 3d d8 46 02 1f 8d 6f 7e 01 bb 80 2b ac -09 fd e9 b9 04 be cf 99 90 e6 84 e6 56 9a ca eb -3c c6 4d cf 5d - -# Signature: -04 22 79 1f e7 b4 3e 1f 31 9a e6 7d 91 8c 59 87 -e6 39 36 81 a1 86 1c 1e 71 dd 6f ce 19 23 71 0d -bc ed 43 01 fd cd 4a ad 8f 4f c2 7d fa 02 a9 4d -91 bd 96 20 0a ed 8b 3c 5a 96 ef ee 7d 11 af 90 -87 fb 81 90 5c 5d f2 c2 4e d7 ed 63 d5 fc 22 ba -bd 6b 9e 3b 57 cd 25 41 9a 78 17 e9 36 16 e9 34 -54 b9 58 53 fe 52 04 b5 8c 09 8b 46 de 0b 3f 01 -f5 82 76 32 48 c2 90 b9 e8 09 69 65 24 42 a4 d8 -e5 - -# PKCS#1 v1.5 Signature Example 9.6 - -# ----------------- - -# Message to be signed: -4a ca 96 3f 14 ac f6 a7 9c 51 08 1e f2 57 16 66 -71 e3 b4 5f ee 31 24 07 ba 3c f6 d7 11 ab a1 ae -25 a4 a8 ba 45 48 19 a3 91 2a 31 2e 99 0f 1f a7 -4c bc b7 27 77 f1 c7 c6 63 a2 d1 cd b2 c5 c0 07 -4d 45 16 f4 87 17 de 14 03 e8 ff 7d 0f 9d e7 c7 -c8 51 f3 e3 51 16 8b a6 c4 14 be d5 d4 2b ae 52 -7b 72 4c eb 83 4d 79 ba cf 70 2c 56 a6 23 c1 68 -80 87 dc 9d e9 53 8e a7 c7 c7 61 cd 2f d5 78 f0 -dc 3f 55 2f fb d4 af c7 f4 ec 71 22 fd ec 1a 3a -2b 10 4d 53 2d b8 1c b9 14 18 54 d5 7d cf 54 b7 -56 01 a9 05 fa ed a6 5c 2a 7a 7b c2 b0 29 ad 12 -dd 7a 6a d1 b4 0b e0 40 28 b4 b5 b6 37 30 ef 98 -44 73 f0 c4 82 14 89 93 c3 6b 44 e5 4b e9 a5 f2 -34 e7 43 29 2a 12 a3 4b f2 ff 73 b7 f7 98 - -# Signature: -04 26 43 c0 3a da 72 4e 2d bb 19 cc 07 ad 0e 75 -22 28 b9 d3 6f 65 3c 6a 9c 0c 29 35 6c f4 c3 f1 -ca 19 37 76 d5 fe f4 3f c5 54 17 71 66 69 de 9a -b2 ad dd 3e a8 8a 90 ae 93 9a 5e b1 10 13 e2 28 -ae 08 16 ee fa 4d d4 2c 6c 08 c8 78 bd 58 b4 90 -40 29 6a 86 3b fd 11 28 5f 8b bd 31 5b e1 6d 2d -65 d7 f5 e5 f2 6a a9 71 47 f9 5f 5e e3 6f 98 9a -a8 96 d7 f9 f1 b3 05 1f 82 42 44 f9 05 96 72 3d -11 - -# PKCS#1 v1.5 Signature Example 9.7 - -# ----------------- - -# Message to be signed: -a7 5a 45 80 - -# Signature: -00 4f e4 c5 d9 14 3c 85 1e 46 16 7c c1 81 57 5c -07 5e 69 b9 81 f9 c1 03 f9 d9 b0 11 ff 8b 29 ba -55 a4 31 87 ce 87 77 99 63 17 a0 3c 9d 90 af c1 -89 0a 9a de ec 8e ac 08 7f 99 b8 15 e6 eb 2b 87 -1d cd dc 80 92 24 9d 8f 51 3c 6c 56 09 fd ae 2c -fc 6b f0 1f cb 80 25 a4 f7 9b f1 2a a8 e1 09 82 -9a 0b b3 8a 09 d1 a3 93 65 e0 40 56 52 da e4 51 -e5 c3 29 8f 47 04 05 98 ec d7 0e 4b 40 33 89 bc -d5 - -# PKCS#1 v1.5 Signature Example 9.8 - -# ----------------- - -# Message to be signed: -7c fc 00 a6 43 ae 99 79 68 01 ee 3c eb e2 cb b1 -a6 be 1c ac 15 c6 48 d4 ba 33 01 29 38 71 a9 9f -7c b1 43 c1 28 c7 7f 96 31 1f e4 3a 39 01 df 2c -2a 5c 40 4b e8 31 46 97 e0 9b 2e 80 aa c6 ac 39 -97 1b be 0d bc 26 67 3f 31 95 9f 23 8e af d1 50 -12 e4 96 7d 33 55 18 92 a3 d3 65 1f e4 46 9b 2d -ba 45 57 df 89 3a b6 b9 4f 13 25 c3 a1 - -# Signature: -05 98 5a 4c ce d0 e8 fd c5 89 24 ed ba 9e 40 0e -67 48 21 4f 8d 0b 83 aa fa 20 35 0b bf 0e 68 76 -ca 5a 9a f3 97 0d d6 3b e6 84 f9 93 6d b2 82 ff -8b 53 cf 5f 1b b1 cb f4 47 33 01 f3 72 d9 94 8a -f9 39 1b 20 02 b2 be 3e 45 ff 24 a2 d8 99 ae 8b -52 b6 71 b0 4b ab 46 01 06 be dc fa c0 13 95 9a -48 18 95 98 42 7f b9 57 15 9a 6d 32 9c 19 f3 6c -a7 53 81 b9 35 0d 34 38 9c 16 e1 80 a8 51 e4 57 -cd - -# PKCS#1 v1.5 Signature Example 9.9 - -# ----------------- - -# Message to be signed: -3d 90 de 72 35 51 59 49 24 5f 49 03 68 c1 f4 93 -83 e4 4c 1d b5 1d d5 38 5b df f5 bd 34 45 0e 63 -ce 42 15 0b 44 1e f9 eb c7 29 a9 03 34 53 f0 a9 -39 9f f6 86 1f 50 65 b6 66 6d c2 0b 28 72 03 42 -8e 72 bd f4 cb 74 8a c8 d4 a5 5f 43 d2 23 5e 0a -b2 ec 2c f2 b0 6a 01 5f 41 e3 51 68 ac 7e 3c 56 -8f 2f 16 ef 57 28 b2 be 95 24 91 9d 36 76 d6 8f -53 7e fe f2 9a 05 af 97 cf ed 7c e9 ec 45 c1 2f -16 5e 4d 7a 4f e7 2b 99 ea bf 83 31 6c df 2b d1 -64 4b 82 fa 13 e4 ff c4 49 e7 6d 44 c3 87 69 63 -51 47 8b 1a 0f 85 96 15 da 90 5f 20 e6 8b 24 56 -5c 87 3f 83 4e 59 34 58 51 8a de 41 c1 42 81 74 -da 0c 47 66 3a 76 00 c6 50 25 01 5e 09 c1 - -# Signature: -00 98 13 b2 fd c5 1b ff 88 de db ec a3 b1 4a e5 -8b c7 e7 14 c1 d9 2d 74 26 e4 94 4e f9 3e f9 ce -6d 10 dc 98 9e af e7 34 8d 0a 95 f9 9f 56 94 8f -72 60 2a c5 e8 61 4f 6b 38 e6 8d a7 9f 48 e2 76 -8e da 58 64 cf f2 54 51 37 f3 cf 4d 81 a5 ae b8 -9b 21 07 26 74 ca eb a0 00 71 00 c0 7e f4 dc bb -d0 5a fb ad 9e 8b 30 d7 46 ea 36 0d 6c f8 75 d1 -0a 67 a5 7f 4b 5d f4 12 1d 72 97 a4 bd ce 12 8c -b5 - -# PKCS#1 v1.5 Signature Example 9.10 - -# ----------------- - -# Message to be signed: -20 e6 a3 fe 16 b5 21 b3 c1 e6 ae 99 3e c6 e8 49 -a9 c1 1f 20 42 a2 d4 ce 89 cf 0f 99 e1 b4 b9 47 -1d a9 a1 73 0d a8 85 1f c5 ab 3c 09 22 05 5f 00 -37 58 b2 35 c2 8d e4 08 80 66 3f cd 80 14 07 18 -15 dd 06 49 4a 54 7c ce c3 34 8e 12 d5 38 d5 df -b4 8f 80 7b 59 e9 b7 cd 81 f3 91 c0 2c 01 6c d9 -c1 a8 4f 9c 59 51 79 d8 f2 00 24 2a 56 68 18 2c -f2 cb a3 b9 fb 6e ad 45 1d 6d 27 d9 c7 36 15 25 -d6 88 b5 52 33 ff 45 29 1c c0 74 02 d2 92 de 0b -e8 3d 16 46 c4 3c 28 88 1f d4 55 49 b1 4d 12 61 -b1 2f 12 04 38 27 6c 6b 3f 98 f5 5b cf 17 80 bc -1a 91 eb 11 d0 22 9e 1d 78 68 d7 fe e4 9d 6b 91 -68 e2 4d e1 cb 4f 0f 22 e6 7c bb 15 69 20 41 13 -02 72 94 b3 7e c7 fa e5 8b c6 4e 82 5e aa 4d 56 -94 d0 05 8f 2c d4 c7 d2 14 18 da 3c 03 07 fa 2f -04 92 e8 b3 77 58 d3 ea 40 a4 e3 0f 60 - -# Signature: -01 f0 2b 3f 83 91 23 af f2 a3 f4 3d a5 aa a0 b6 -bb b6 0c 04 37 82 f4 96 2a 7b 9f 02 5c 94 8e 34 -32 2e 98 de 37 03 e3 bb 45 a7 06 a2 bb 05 09 be -d9 f4 10 52 8c 88 1a b9 a1 dc 01 97 06 8c 37 28 -c3 71 6d 83 81 d9 f8 67 80 fe 78 a6 43 4b 72 f5 -1e 69 cd 32 a7 21 3c ce a7 43 b3 3c 3c 96 eb 00 -42 fb 98 a7 0c 2e 52 fc 17 8a b2 cb 9f f8 bd dd -c1 04 6b 08 e0 47 ba dd d6 5a 45 a4 e6 53 39 d7 -25 - -# PKCS#1 v1.5 Signature Example 9.11 - -# ----------------- - -# Message to be signed: -6e b4 9f 8a bc 5b 49 48 72 0a 7f 42 f7 40 84 78 -00 22 e0 e9 f9 f6 88 86 d9 f3 4e 7f 7f 8a c1 54 -db e1 9c 91 b8 ed 38 ec 03 6b 61 42 12 ca 35 f7 -9e d8 74 57 9e 24 85 da c8 20 5d 0e 56 b4 b4 c0 -00 0a 8a 75 a6 d4 97 fc 51 19 11 1a 40 db 51 3d -f6 61 96 55 b5 8a 11 6f ab ee 08 2b fa 79 37 3d -91 76 56 87 10 11 24 18 87 f4 42 60 8b d1 eb 1d -95 d1 76 80 65 fa 63 32 4f ab 27 36 f9 22 70 5c -f2 89 fd e9 26 74 33 85 92 07 a8 bc f1 2d 17 86 -1c fd 06 2b 88 df 78 87 0d 5a 5e 91 13 1b 63 - -# Signature: -02 a2 fa 32 71 77 96 71 0b 52 b0 51 90 6c db 98 -15 b2 d0 36 6c 07 0a 78 ff 72 d4 59 42 d7 ad de -ae 7e dc 73 ca 93 01 f1 f9 fa e6 8a 0b d4 b1 df -05 a9 a6 71 f8 a5 b7 d4 5c d1 1f dc 0f 0b a0 9d -25 ce c3 b6 30 3d 9a 66 6c 76 32 64 96 ea 31 ae -38 86 a0 c3 b7 d2 27 62 ee a2 78 93 4b 96 a4 f9 -0a 50 1a d3 08 8f 70 2e 14 76 3c e3 38 46 e2 fd -be 6d 66 1c b8 2e 6d 98 9d f3 c5 ac 8f e4 0a 85 -62 - -# PKCS#1 v1.5 Signature Example 9.12 - -# ----------------- - -# Message to be signed: -45 cf ec 13 2e e5 93 f0 c3 f3 81 3d 3c b4 49 e6 -e5 e6 1d 13 de 52 9a e3 e7 1c 99 8e a4 56 35 9c -e6 6b 82 04 5b 7a c7 97 fe 96 98 5d ea bc 51 22 -53 0b 2e 29 ef c9 75 ee 96 03 b4 f9 6f 3f f4 e5 -9b 0e 35 a9 ad 92 f2 b8 67 79 4d 8e - -# Signature: -03 9b e4 8f 13 3a e7 f0 b1 9e dd b2 13 56 09 73 -a3 e2 a1 14 6c 79 42 f8 26 4b ba 5a d0 08 69 2d -11 38 01 fc 27 78 a7 e3 3a 9e 11 5e a6 32 e5 01 -88 c8 7b 69 e8 d4 d8 cc a4 8a bf 9f 25 1e fc 00 -17 b9 9e de e5 66 dc dc 0b c5 8d bf 6d 67 bf 86 -3d b8 a8 9a bd f1 2a 77 f1 b7 0d e4 39 d1 76 f2 -ea ad a5 46 4c 79 a5 84 27 0c a5 14 f4 8f 1d ae -86 78 ec f1 ac 29 6d 07 c4 68 98 ba d4 1a cb 19 -9d - -# PKCS#1 v1.5 Signature Example 9.13 - -# ----------------- - -# Message to be signed: -22 51 29 87 15 7c f9 b9 ab 4e 53 37 b0 98 91 d6 -3c ec 37 43 c0 f7 bc 9d 18 2e - -# Signature: -02 c7 75 7f 99 93 ef 8c 6d 60 a3 f5 ab ed ce a5 -35 df f5 5a b9 f4 f6 2d 12 54 bf 26 1d d6 a2 ee -52 da 63 49 f4 7b 9b 28 9f 1d 0e a3 e0 ff 08 f4 -55 fa 54 85 65 8e 42 17 f4 40 c0 8b 90 ae 4c 6c -c2 56 97 cb 83 35 31 db b4 74 03 25 43 10 0b 5f -92 b6 78 19 5d db fb 1b 59 c5 9b e7 c8 3d d8 17 -45 cd 4e 70 9a 0e 3f 79 8e ad 5b f8 66 2d a6 5c -10 57 cc 08 2d 90 50 50 c4 65 95 8b 55 5d 77 b8 -b1 - -# PKCS#1 v1.5 Signature Example 9.14 - -# ----------------- - -# Message to be signed: -ae 48 cd 83 f4 a1 f9 4e 17 19 21 96 90 c8 c6 f6 -73 7a bd 15 e0 d0 8e 7f c2 ea 0d 31 5b 45 be c2 -46 e8 45 bf 17 60 c8 6c 3f 82 d8 4b 1e 9d 68 dc -cc 01 d9 a7 d0 7e cc 6b fb ee d8 3d 7a d0 3a 6d -56 6a 89 bc 64 42 1e 7e b4 7e 52 c0 23 86 58 d5 -e4 c5 59 7f 12 5a fc 6c 83 3c 63 cd 6f 97 f9 dd -5c ce 8a 26 38 80 7c e8 a5 83 da 03 2b ec 81 a3 -8c d2 99 a9 c7 8e 82 54 f2 88 51 64 13 52 5f d9 -4a 9e 0a 95 c6 56 d7 3c d5 2a 4d cc 7d d0 94 7f -4a 00 5e ae dc cf d0 3b b1 71 5c 35 1c f0 59 cd -52 2c 7f 53 8c 16 28 e7 2a 05 64 4e 8f ff 50 92 -6f a8 68 2a 67 53 78 6f 2a a2 61 0a bf aa 95 bf -99 af 15 61 71 51 d0 bd 0f c4 6f c3 b2 9c be e1 -e6 63 b9 23 13 6b 5e 19 92 83 9f 0b a5 2e 44 fc -cb d9 f3 20 ed e2 0f 55 a4 23 77 0e 57 3a 9f b2 -b3 6d c8 f1 84 - -# Signature: -00 fb a9 f6 f9 59 b1 70 b0 94 6d cb db 98 dc 8e -84 79 c6 69 ad ba 6c 54 63 6a 2d c7 d7 f7 03 3d -35 04 05 d7 17 f2 d6 3d ae 65 c2 4b 37 db 1d c3 -e9 f6 17 43 af 1c e6 de 24 67 d1 85 ae f0 8d 2b -f8 65 f0 75 ba a6 a2 9c 58 06 61 dc d4 a4 8f 21 -ff 4e 7b 03 9e ef 1e 1e 20 ba 80 cf 20 ea b6 ec -de 60 fa 5d 37 67 a3 0e 6a d4 14 47 13 ca 49 fc -03 80 99 af 53 6c 0d 5f 55 c4 cb 15 33 53 81 be -a0 - -# PKCS#1 v1.5 Signature Example 9.15 - -# ----------------- - -# Message to be signed: -2c 8a 00 7b 60 30 56 d3 31 87 bf 52 ce f6 16 1a -a5 f5 f5 33 7f c3 59 d4 63 44 72 1d 94 5f bc 4d -24 0d 30 62 0b 29 6c 39 77 cf 45 c2 47 eb 2c 36 -39 40 79 98 3f 03 ad 82 39 9c 4b 28 6c 48 16 59 -10 b3 48 b9 5e f3 9c 43 bf be b3 56 6d 1d 1e ea -5a 42 7f 4c b1 68 1f 2a 7c 40 1f 3f 0d 6d 9e e7 -99 3b e5 ec 5d 34 a7 55 41 e9 f8 dc 7c 60 69 a8 -97 7c 9f 93 6e db e4 1a 4e f7 85 a3 ef 7b a0 51 -89 90 09 ed 61 2a 22 8f 90 31 67 a9 34 ee e6 9b -4f 87 36 c2 95 11 c6 bd c6 1e ee 96 08 a9 91 1b -ba 52 83 9b e9 9f 91 d2 ef 85 b8 cf 10 c1 d6 35 -08 08 29 ba 79 91 fe 2e f8 2e 2b ae 27 08 14 06 -e8 9b ab 75 c3 ed 19 e8 7a 4a db 72 ec 26 21 f3 -f2 58 5b 38 cb b3 6b 3c 0d 40 5f fc a7 a6 fb 02 -24 42 07 94 cb d8 d7 83 18 01 c8 81 e1 65 - -# Signature: -04 10 47 e2 42 b6 44 87 41 f2 8a 4c 8b 2d fe ca -cc 0f f6 61 9e 95 6a 6a 6b 10 cd d0 1e ed d2 01 -c8 0e 0f bf 7c 5b ef 52 a7 aa 99 00 a8 59 39 4b -47 e8 3d 08 b5 e1 da 03 a3 35 54 00 0c ce 17 c1 -d8 62 29 a3 a2 03 50 d1 16 43 a7 58 c1 16 b8 fb -f7 26 60 df 4c 86 ef 8c 1f c4 54 4c 3a e1 d1 fc -3c e9 f2 63 f6 2e 80 07 cd 7f f7 ea 8d 50 a0 82 -83 89 ff 43 1f c5 c5 62 81 6d 3d 24 b6 07 21 1d -29 - -# PKCS#1 v1.5 Signature Example 9.16 - -# ----------------- - -# Message to be signed: -7b 15 d1 a7 9c 7a d2 d1 2f 75 da 57 d1 4a 8e b7 -1f dd 4c 4e ff 52 43 74 1a cd e2 3c e6 da d3 08 -c8 1d 5d 58 0f f9 c3 f8 93 ff 12 4f e4 58 b3 18 -84 da f7 fc 44 66 d7 00 dc 49 3f 1c 7a 7d bf 62 -24 1b 17 e7 36 23 fa 17 81 4a b4 d2 c9 24 5b e8 -3b b3 cc 5f 94 44 b1 52 17 b2 44 1f 45 9c 00 b8 -2e 58 68 9a 11 dd 5c 59 fa 39 5d 1a 6f 9b 2c 25 -cc 84 99 92 7a b9 a4 98 28 53 36 52 ce e2 32 32 -97 2d 65 69 ee 56 44 78 66 f1 0e ba d5 4e a3 f0 -61 32 0c 6d 3f ef ce 34 55 2b 62 66 96 7b 05 78 -d6 c4 55 b9 ac 24 66 36 17 12 e7 d0 5b d3 33 2e -c1 30 d4 5c 6a 49 76 16 2c 79 7a d1 36 3f 49 69 -e4 ae 3d ed 6e 36 ea 2c d7 fb 35 66 09 be 03 1a -79 b2 94 - -# Signature: -03 02 52 90 b4 46 2f 9a b7 9f df aa 7b 1d 53 a4 -d1 27 96 c8 5a ac 28 de ac 21 27 c8 25 2c 2a 62 -39 5a 8b 81 9d fc ee bf 68 dd 4d bf c8 7c 1c f3 -d0 17 a5 3a 26 40 92 50 6b b6 fc 95 28 e6 f8 76 -78 73 6c a5 6a 14 a1 aa 26 77 a8 b8 4f 5e 03 fa -2c 0c e4 78 5b 26 ba 92 e7 5f bd c1 6d 8d 4c 7f -b0 bc 39 a8 8e 13 2e 1e 05 ad 00 f1 2f 07 27 06 -34 3f 5e b3 da b5 11 2e 3b be 76 ed 0b bc 7b df -cf - -# PKCS#1 v1.5 Signature Example 9.17 - -# ----------------- - -# Message to be signed: -7a 76 44 00 1f 80 13 c5 0f d7 17 b2 44 65 47 7a -bc 34 ba 9c 1e 53 ad 76 32 64 5a 6e f7 c8 e6 4e -8e cb 7b ca 5b 4f 09 b5 2f 4d d4 8f 8b b3 dd 33 -8c 78 18 2c e8 6e 8b fb 1c 68 a8 76 f7 32 16 63 -06 a8 ea 8c 0d 7c 21 ff 26 fa af 4a b4 55 10 36 -19 50 c7 6f 95 c2 73 0b 9d 3e 4d 6d 85 ea 25 58 -4a c9 67 a0 2b 1e 0a 26 - -# Signature: -03 b2 ac cf ef f0 63 bd 17 5e f8 ae 0c b8 5b db -80 0d dc 27 77 6f 8d 3d c7 e2 1d 19 9b b8 d6 5f -5b 24 2e 79 d4 5e cd cf f0 2e 80 3f 56 81 ff 04 -4a 43 b5 5a 9a ac b1 ea f1 67 84 83 8b 1d 5a 2b -7c 1a 36 4d c4 05 31 1a 65 55 05 7e c7 3f 0a 8f -4e 0f fc a4 23 02 2c a6 ad 74 46 9b bd 55 57 bf -a1 cf 4b 95 63 6f 53 45 37 ef f2 fb 16 af 5e 64 -71 82 4a fe 21 67 91 8c 89 ad e0 1d 52 ae a7 39 -9d - -# PKCS#1 v1.5 Signature Example 9.18 - -# ----------------- - -# Message to be signed: -12 d2 24 fc 10 a0 fc 40 95 3a b6 d7 01 c4 16 c3 -a8 23 77 2b ea fa - -# Signature: -03 2c b5 c8 d6 12 90 b7 66 e6 49 8a a6 01 49 4d -9f 06 6f 27 a4 7a 28 70 f3 67 89 43 29 1a b2 2d -3c 45 c0 76 e5 60 81 9d 33 f8 89 f8 cf ab 2d f6 -c6 3c 0c e1 ed 5c eb 51 54 70 77 c0 82 78 18 7a -82 72 fe c7 de 95 54 cd c9 16 ca 72 f2 c4 51 43 -f2 cf 32 43 c4 bd 20 0c 6e 99 3f 0d b5 b7 1d 4f -63 77 1e 24 9b 19 b9 97 a6 e5 a9 19 ca 10 0c 90 -fe a6 a2 d4 dc 68 81 c3 a0 e1 c1 35 53 83 cf bb -4b - -# PKCS#1 v1.5 Signature Example 9.19 - -# ----------------- - -# Message to be signed: -e0 d4 e2 a5 e9 8a 51 23 7d a5 08 5d cf 09 8a e2 -c0 5b 4e 16 92 54 ee 6d da 16 21 0e 4a 3f e8 1c -72 56 ea ef f2 8c 0c 63 d8 54 b7 84 1a 13 6c 43 -60 b2 15 dc a0 58 74 8a 4b fa 82 58 68 04 28 21 -99 2a 4e d5 a7 d5 8f 80 12 20 75 49 be 8c c9 ce -cc 85 01 b9 f8 02 83 0f 86 58 45 ce 2e 33 9b ec -28 05 96 11 a1 a0 0b 55 35 c3 c6 15 e9 d2 a1 39 -59 f1 01 5c 8b ad 2d 75 3a 59 a6 14 3b 3a 30 58 -ef 72 25 60 ff e1 c1 84 87 c7 41 da d6 1f 07 a1 -56 42 e7 26 ad 18 a9 84 87 5e 68 c6 2e eb ed cf -94 6f 13 b8 93 b2 80 8f 78 f9 29 48 07 d7 74 68 -54 94 e6 b8 90 40 ee e6 de 1b a7 18 ba 2e 08 2c -3d 5e f1 7c 10 28 cd 66 - -# Signature: -03 e7 83 bb 53 db b6 7c f2 19 5f c1 a5 7f 4b 74 -c9 82 03 b1 f3 d6 15 fe b9 20 e4 ab e8 37 58 34 -67 2f 4b 8f 55 fe f2 ac a8 b5 d4 0a ef e4 ef bd -aa c3 e8 21 08 d0 7f 2f 1c f8 c0 d4 df f8 1b 39 -66 ec 69 be 51 17 ac 1a a6 11 8e 46 0b 92 d8 8f -cd d9 4d 08 eb aa 53 62 e5 9d 52 00 4b 43 36 95 -14 37 da 0f 51 d6 3e 50 56 15 b4 b7 55 54 08 0b -94 89 7f ef 29 3a 34 c4 04 00 c4 f9 9a a1 de fe -35 - -# PKCS#1 v1.5 Signature Example 9.20 - -# ----------------- - -# Message to be signed: -64 b3 ba 40 98 03 c9 b9 60 c1 c4 96 2f 51 27 1b -c8 9a 40 bd 40 5c e5 bc dc 88 51 d9 7c 9b e5 e5 -b7 46 4e 50 d9 9b 6c f8 ad f8 ff 83 2b 73 7d e8 -b6 ff 1a be b8 9d ba e9 3a 90 63 94 87 80 6b 05 -96 cd 31 68 60 f6 8f 00 27 a3 50 3e 15 89 67 af -df f4 69 07 68 17 fc 7d a3 22 3c ca 1e 6c 48 97 -3b 57 0e 0b f7 4b b8 b3 96 54 37 2b 7a 1d 6f - -# Signature: -00 d2 00 eb a0 b6 52 2a fb 42 0e bf 16 48 8c 53 -03 52 c4 2d de 81 e7 64 c0 ca db 43 82 8c b9 98 -d0 a6 0b 23 b5 b6 95 8a 00 fc 25 53 e2 35 e8 57 -4e 4d 4f ec 9e 66 8d ba 40 de 66 61 ab e1 3f cb -84 c1 ad 15 c4 b0 cc 0c 6f 4f 0f 83 77 87 c4 32 -5f 04 5d 61 ee 2c 99 72 b0 1f 32 12 65 4e c4 26 -62 56 7f aa c4 0e 9c 0a 28 15 8a 2a 6c 31 f0 1a -84 91 26 df 9e 96 cb 82 09 be b5 81 d6 84 6b b5 -ab - -# ============================================= - -# Example 10: A 1028-bit RSA key pair -# ----------------------------------- - - -# Public key -# ---------- - -# Modulus: -0d 5f b9 9f de df 42 56 e2 8d 4b 41 d7 07 fc 27 -63 3e 89 95 15 f4 da bf 6b 46 27 10 ac 11 25 81 -fa 73 fa 83 69 58 2c 9f d4 52 5a 70 16 18 99 df -63 25 84 9e 5c 43 49 3e 13 35 4e 27 09 55 a4 3e -38 35 b5 99 8e d4 2a 57 5b bf 68 8d 69 ec 36 6d -2b a6 f0 50 4c 1e e1 7d c5 9b 7e a0 b4 64 0c be -cd 8b d7 96 2b e8 56 6f 0e bd 65 57 43 65 6a 29 -12 85 e0 37 bb fa 86 55 80 1b d0 31 4f 46 4c 56 -91 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -0d 5f b9 9f de df 42 56 e2 8d 4b 41 d7 07 fc 27 -63 3e 89 95 15 f4 da bf 6b 46 27 10 ac 11 25 81 -fa 73 fa 83 69 58 2c 9f d4 52 5a 70 16 18 99 df -63 25 84 9e 5c 43 49 3e 13 35 4e 27 09 55 a4 3e -38 35 b5 99 8e d4 2a 57 5b bf 68 8d 69 ec 36 6d -2b a6 f0 50 4c 1e e1 7d c5 9b 7e a0 b4 64 0c be -cd 8b d7 96 2b e8 56 6f 0e bd 65 57 43 65 6a 29 -12 85 e0 37 bb fa 86 55 80 1b d0 31 4f 46 4c 56 -91 - -# Public exponent: -01 00 01 - -# Exponent: -e7 6f 42 b4 74 02 d5 e0 f9 64 64 92 5a b4 b3 bc -68 94 30 0e e4 86 fb 70 ce d4 91 f2 d1 b3 67 80 -84 c1 c2 cb 96 95 68 a5 f7 7d ab cd 40 93 39 37 -a8 67 f9 34 fb 2a ea ae 6d 78 67 98 e0 d0 4a 10 -6f 54 5e 41 a9 c9 38 33 d8 1f d4 d7 53 53 17 9c -b0 bc a4 5e 79 aa c9 41 34 64 b0 36 7f 31 ac 5a -ca 56 6f 22 14 bf 51 46 a9 48 4b 87 e4 2b da c2 -b0 1a 99 67 03 50 6b e0 77 49 aa 0f be b3 b2 29 - -# Prime 1: -03 ff af 4a 61 21 d7 42 0c fd a6 4c 41 71 2f 47 -c8 f2 d0 d2 5b 17 e9 5b 35 41 42 84 69 10 af ef -bd f2 1e 74 23 e8 b3 be 44 ae d9 af 5e 49 81 68 -5d 3b 9a 1d 59 c9 b9 47 fb 9c 33 9c 9a 31 e5 7b -d9 - -# Prime 2: -03 58 31 e3 b9 29 3b cd a4 51 be 9d b1 91 97 48 -6a a2 e2 2e 92 98 65 0f 2b 7f f4 25 69 eb ec 33 -d2 0a 34 98 44 a3 3b ea a0 93 d1 43 4a fb 4a 04 -a0 4a ed d3 bb c4 b3 87 77 a5 5f e6 50 5b 8c 15 -79 - -# Prime exponent 1: -02 8e 91 d5 ab ba 69 dc 50 56 38 e9 f5 c6 9c 06 -f8 d5 5a f5 c7 4d c8 e7 8b 6c 09 4e 85 a8 27 f7 -d2 ab 69 11 b6 8c 6b b2 b4 54 61 d9 a3 1e b9 62 -b4 8b 12 06 c6 8d 18 ae 90 92 d6 e5 c2 2b 39 a4 -31 - -# Prime exponent 2: -02 98 04 e1 32 fa 3a aa 4b 15 26 bb 50 3a b4 d4 -71 f7 6f 69 65 42 11 a6 89 3b 0c 13 74 29 87 9f -cc f7 23 41 30 82 54 76 ac 20 d7 fb d3 8c 3e 24 -86 58 76 48 6e e8 a7 bf 99 58 45 9e ee 95 81 78 -29 - -# Coefficient: -02 11 97 5e 88 56 d4 ea 9d 1d df 87 b8 7d 39 79 -2f 1c f7 e2 f1 82 f4 a4 e6 91 e5 00 2b 10 a0 8a -46 dc a1 a4 f4 83 00 85 d8 d4 0b ea 1d ff 11 b0 -c0 df 20 22 43 eb 99 3e 58 0a 94 49 9b 9c ed d2 -be - -# PKCS#1 v1.5 signing of 20 random messages -# ------------------------------------------------------- - -# PKCS#1 v1.5 Signature Example 10.1 - -# ----------------- - -# Message to be signed: -b2 d5 88 50 9c 2e ac da 28 1e 76 71 cb a2 fc a9 -14 ef 73 a3 ae a9 20 20 43 ea d6 b7 21 25 c1 b0 -d5 cc 15 41 46 20 d5 73 d7 ab 0b 3a 8a b6 6a 92 -df 87 0b 75 b1 c4 d6 8e a7 05 6b e0 41 9e a2 53 -e6 b0 8b 12 9e 0f 64 f1 0a bf 82 e1 67 f8 e3 e9 -28 2e 7b f7 1b 04 3b aa 2b a2 d8 75 6d 46 b6 d3 -6e 97 34 15 f4 f8 c0 eb 43 fc 60 4c ed 49 3d c0 -46 a2 5a 11 9b d1 58 1d bb 59 7c 3e 67 c2 fd dc -39 6d f5 d2 3b 7b a8 0b d2 e3 12 90 bf c2 62 25 -e0 09 55 a9 8d 91 19 11 a3 99 67 6f bb - -# Signature: -07 9a 7b 91 6f 67 41 17 f1 d8 77 f4 93 43 25 68 -41 48 d5 d0 b0 d5 c2 c6 15 6a 11 15 9b c0 bd 30 -d0 a7 35 34 dc 94 45 eb e2 06 d6 07 5e b4 ea 7a -7c 04 32 bd 44 b8 3c fa e4 68 5a 9e b9 a9 7c bb -fa 4e 82 f7 1d b5 1a fa 0d 27 cf 27 f0 60 9b b3 -f8 80 64 13 24 7d 5d 49 54 f7 89 a1 01 bf 39 21 -72 8b 48 7e 85 fa 3f d4 dc d7 2d 04 44 8e 42 d3 -ec 05 cc 47 5d 74 cb f7 65 c3 4e 3e c1 4c ca 50 -40 - -# PKCS#1 v1.5 Signature Example 10.2 - -# ----------------- - -# Message to be signed: -ca 25 18 a5 a2 24 b2 3d 42 05 d8 dd 7e b0 4c bd -cd 0c cb 82 bc 87 96 1d 85 9d 66 00 b1 ac 3e 25 -a9 40 7b 6c 06 50 27 c0 40 81 f4 45 a2 30 ab 93 -08 e7 55 f3 3a 75 97 73 be 6b 96 9e 0e a7 74 aa -6e 33 4f b6 04 18 42 75 f3 6a 03 1d ae a6 51 86 -97 79 5b d6 a7 d6 69 7b 40 6d a2 ce ce 15 dc 11 -3d 85 44 98 85 61 13 1d 4f c6 f6 e3 c5 80 d8 06 -80 7d f2 c6 85 65 09 54 2e 4e d3 9d 34 6e ba 15 -97 6a 8f d0 1d 79 41 b0 16 56 06 c7 61 76 64 9a -16 10 05 a0 - -# Signature: -00 be b9 21 ce 74 89 81 9d 2f 85 c7 88 39 a2 7d -7e 19 ea 0a 76 4a c5 31 01 e8 6f 31 70 a7 6e 31 -8a 7e e8 9b 1f 5e 23 e7 e2 db 96 66 eb 43 91 b2 -79 2a 57 67 ee 35 9b 5c 71 e2 74 79 10 c8 2c 60 -83 d6 d3 48 29 b9 6f a5 a2 ec 0f 62 f1 bc da 5d -78 f8 dc 3c 65 0b 94 e3 2b 38 60 da 5f c5 b1 7f -bf 68 7e c0 07 5a 9c 73 dc 1e 98 d1 f3 6a ae c4 -49 3f 78 91 e3 ab 08 e2 04 2d 8b 1e 46 2e 8c 4c -33 - -# PKCS#1 v1.5 Signature Example 10.3 - -# ----------------- - -# Message to be signed: -d4 33 d1 5b 2d 61 b8 6a c8 ec 0d ae ba 65 e1 1d -ed 3c 38 84 25 25 e4 b7 c8 e4 53 b0 f5 53 cb 4e -b8 75 a6 9d 78 16 f5 4c 87 79 3e 3a bb 79 fc 55 -11 35 37 b4 76 29 65 cf ee 58 6e 0a 17 99 78 51 -e3 dc 9e af 6f 1c 9c 2e 98 c9 61 3e 3b be a0 13 -ff 58 61 6b 2a b0 5a b3 24 a9 c5 ff 4c 5e fd d9 -90 dd 97 d9 16 93 c1 eb d4 c0 9c 73 21 16 c8 df -c3 ec 51 5c 20 53 2c ba 7e 47 58 c6 8a 69 cf a0 -ac 31 86 - -# Signature: -03 ae 3b e1 c7 44 6a d3 ef d8 ba e6 1b 3d 32 d3 -ef 15 24 82 b1 bf ee 31 2f e9 e6 be ee ab 8c bd -08 f4 c8 f9 cf 06 7d ea b6 ba c7 c0 fe cd 87 bb -ab c7 f6 79 8c 77 ef 1c 3f d8 bc a2 8c f9 ec e6 -56 79 5f 60 b3 78 75 ea be f8 21 53 a1 2b c7 fd -e3 fb c9 e5 e1 48 f4 e1 6c b7 2a 77 3d 9d d0 23 -17 f7 0b 33 91 40 08 05 e8 5e 7a 23 56 7b 34 aa -65 a3 5f 74 41 70 af fc b3 23 37 1a d2 ab 9f 1e -4d - -# PKCS#1 v1.5 Signature Example 10.4 - -# ----------------- - -# Message to be signed: -7d 0f 5b d7 90 0f 1e 65 65 4e 6c 7e eb 06 4c b8 -28 f3 55 d6 de 9b f0 d3 47 83 ff cb e8 0a b1 b8 -ae 07 b7 f1 e3 f5 a3 20 dd 9b 8b 76 be 0e 97 72 -de 19 a8 d3 - -# Signature: -09 e7 a5 30 41 71 da 63 8b e7 60 1f bf f6 e4 95 -36 f3 36 60 82 25 3a bc 1d b5 d1 b6 54 93 da 59 -5e c9 3c 37 f5 89 0b 5f 47 15 bd 5e 80 c0 bb c5 -c6 3b 74 af 2e 60 43 91 32 d2 52 13 75 0b c1 de -30 2e 3e 8b 83 da d2 de 0d ff c4 fa ab 40 56 dd -7c 40 5e 04 d5 94 24 53 65 9d 49 0f 3c 3d aa 7d -3f 11 70 11 81 6b 56 59 01 04 de 7f 9c 05 23 73 -e2 dd e4 14 49 04 27 a5 89 64 49 3f f4 5f 08 a6 -e8 - -# PKCS#1 v1.5 Signature Example 10.5 - -# ----------------- - -# Message to be signed: -d9 6a a0 91 c1 60 b5 52 b1 6d f0 65 8f a8 - -# Signature: -0b 69 75 4e d6 d7 a7 d2 d8 5b 2c 7a 30 6c 78 d6 -3d 0f fa 43 8f 43 be ec 3a 02 86 ce 57 e7 e0 f8 -5c a4 30 e6 39 08 c0 fa 58 4b a2 50 5f 8c 94 65 -6e c0 24 94 bb 03 2f 92 0c 4b 6b 8c 94 3e 6b e9 -2f 57 8a a8 cc df aa c0 a5 4b 8a 9c 0d f5 48 27 -1f 89 73 c9 ff a2 a2 0c 84 76 2e 90 17 e7 45 2e -5d 74 da 69 0f 75 c0 99 ab 91 e2 a7 96 3b c5 37 -f9 c2 4c cc 3c 41 8c 6e 98 58 61 d9 3d aa b2 e6 -13 - -# PKCS#1 v1.5 Signature Example 10.6 - -# ----------------- - -# Message to be signed: -56 f0 48 64 5a 49 fa 01 41 f4 d6 74 aa fc f2 ff -fa 83 f9 b4 52 f1 fe ed 43 05 7c ac 27 67 5e a1 -a1 41 d8 7f 92 f9 ce bf 6e e4 f7 8f 8e d4 c3 a2 -9d eb 72 97 47 b4 f9 8e 4c 75 90 aa a8 d5 6d bc -61 d3 8c b5 62 22 26 f6 8e 43 f9 c4 f4 c0 39 98 -ae e9 09 34 39 5b c8 40 c8 6d cc 88 74 77 6f 43 -03 9f 56 a8 9d 24 bd c4 b3 05 df 09 e5 ca 0c 05 -12 ad 6d 15 71 91 9a 3d b3 a6 bd 98 b7 82 0a da -08 69 d2 25 a4 04 02 7a cb 6d 76 7f c3 14 db 37 -7e 8d 1d b6 ef 0a f2 94 54 db 2b d4 c1 ce e0 13 -a5 97 43 48 6d 32 32 95 83 cf 80 11 3c da a1 0e -4f 2c ea 6c 4f 9f c6 e4 e2 71 6e de 85 72 7c 3a -fd 43 49 46 09 77 76 30 ee 33 63 7e a3 5c 9b 4f -68 8e 49 2c 3c 64 0d - -# Signature: -06 66 ef 71 e2 c8 a1 eb 1c 46 40 3f d2 3e 52 18 -83 ad a1 b9 bc 5f bd 35 3b bb 3c 3d fb 57 0a c1 -c7 21 fa f3 f5 97 32 f2 13 37 73 80 39 79 48 46 -2f d2 0a 3f 0e 5e 08 91 a6 b0 7c 31 b3 60 aa a9 -65 e2 f0 93 0e b3 41 ee 77 ec 43 90 65 c0 aa d9 -17 87 ab 6d 2e 6c de dd f5 54 81 65 1a eb bf 9d -11 d5 4b c1 13 26 18 3e bf f4 9b d4 0b df 76 d7 -ef 69 b6 7e a3 96 8f a8 49 03 2f b8 24 b6 dd 6a -e3 - -# PKCS#1 v1.5 Signature Example 10.7 - -# ----------------- - -# Message to be signed: -79 da 89 e3 55 d5 51 a0 e0 31 f4 fb 71 ab 6f 41 -44 c4 76 2e 07 d0 64 14 33 cb 5e c8 61 34 96 3f -7d 2c 4d c7 be b5 c6 d4 61 57 c6 c4 e1 4a 4b 9c -7a 2c 0d 46 0f 1f c0 62 ea 1b 4f 98 74 d5 b1 c2 -9a e2 f2 a5 b3 90 62 e4 12 12 e6 5c 85 c2 8e 76 -75 89 96 5d 17 10 ad 5b c7 6f a5 a6 72 9a 06 fd -49 6e 2e 09 97 e5 73 37 bd 51 6e 6b c7 9b e9 e0 -70 aa 7b 86 c2 dd f1 4f 94 98 5f e1 58 2a 29 2c -d1 39 34 b3 c3 8d fe 59 77 ed 1d 9f 8a d3 24 c0 -dc 07 e5 85 3c 7e 48 90 bf bd c1 a0 1e cd 72 c5 -ff 68 a0 2f 1e - -# Signature: -0a 06 82 f7 42 e7 43 e1 c7 da ba ac 61 8a 78 6f -28 ed 13 a6 58 7a df c3 3c 98 29 d7 52 c1 3e f2 -7a 00 c7 e6 d4 5e 27 17 1a 58 41 77 1d 78 69 8c -6c c6 67 78 b8 c0 93 38 e3 5b 9b 6f 59 c0 64 ce -b3 eb 20 ce 90 9a 5c 6c ea ae bb e9 3e 86 c7 c5 -ff 4a 39 17 f1 26 81 96 32 cf 96 fa b1 d3 91 73 -a7 ae 7f c2 ff 5c 0f b4 09 05 35 da db 58 d8 7d -0d a3 db 32 ec ec 13 71 8b 3a c5 c3 0b a8 02 e3 -8b - -# PKCS#1 v1.5 Signature Example 10.8 - -# ----------------- - -# Message to be signed: -e6 9a c9 43 3e 6c 28 ac 53 f8 03 4a 86 8d a9 88 -3e 31 9e 82 e6 bc 2e 49 45 5e 6e 4f 09 8b 53 f2 -87 a8 58 da 1d 87 6a 9a 5a 6a 9f c1 4f d2 42 38 -cd 4e 4b 57 31 07 7a 4d bd d5 03 8a 9b c1 f5 de -f4 3f ec 77 f6 7e b0 62 fa ef ef 7d 04 29 23 8b -25 d0 31 85 78 96 62 3a 3f 1d 37 bf - -# Signature: -08 a0 20 e4 20 98 78 f1 e6 37 ad 59 da af 83 5d -af 4c a6 64 84 47 94 c1 c6 48 f0 e2 23 3d ba 75 -48 bd 16 1f 0c 0a 18 24 d7 62 03 1a 41 75 72 84 -2f 8e 64 4a a9 3f 9d 91 dd 77 09 e1 6a 42 9c c1 -43 90 3e f4 f8 37 a4 58 39 6b ca c2 40 92 b0 17 -24 c6 fe 3d d1 ad 24 3f 3f 70 b5 ae 6f aa 09 f3 -70 ca a5 12 10 4b 91 76 06 0d f2 bf 12 1c bc e9 -19 8e c2 fe 45 a5 9e bd dc 46 75 32 b5 af b9 b2 -35 - -# PKCS#1 v1.5 Signature Example 10.9 - -# ----------------- - -# Message to be signed: -45 e0 90 56 a2 8e 4b 2e 7c 11 f6 5e 68 8a 1e 3c -33 f0 e5 2c 9a 03 6c 09 d8 1d e5 a6 da b5 8d 4d -55 cf 41 1b 53 ad 64 6e 83 a3 4b 0c 08 c2 21 ae -03 76 ab 76 a7 9d 1f ee 67 1a 58 44 20 56 4f 8e -85 2e b6 f2 d4 27 ae e0 a0 96 dd 72 db e8 50 7c -67 7f 8a a0 0e b7 c2 5d fb 0a 49 dd 88 a6 c7 84 -76 b8 00 11 b6 82 8b 3a af 46 47 79 44 22 ba 6b -d6 3b 7a b0 e7 da fb d3 6f 6c 41 de a0 3d 73 22 -35 64 96 94 60 d9 28 54 0b 73 92 57 e7 0b b6 8d -5c 65 3c 37 96 94 58 95 - -# Signature: -08 71 7d 50 86 a6 45 3b de ff 77 d4 c2 b8 56 e3 -ba 99 0b ab f6 97 01 df 6c a0 a3 b3 a8 1b 55 69 -7d 31 88 9d 10 0d 68 95 c9 7f 0a 56 b4 71 68 c9 -8d a6 2e 59 ec 79 d7 ae ab 2f 9a 57 07 46 98 8a -26 f4 23 57 6c 70 3f d8 41 ae 51 c9 c2 29 a2 e9 -c2 5f e9 4c 5b 6c e2 fa 64 54 12 be e6 59 fa f6 -09 a3 2e b2 c0 5b ee ab aa 4f 58 ca ac 31 33 e5 -ea aa 27 34 4d 30 ee ca 22 c6 eb d8 d9 e3 44 41 -0e - -# PKCS#1 v1.5 Signature Example 10.10 - -# ----------------- - -# Message to be signed: -b8 1c 8b c4 ac 1f d9 71 b2 1f 02 7e 06 f4 d8 7b -34 d5 76 9d 23 c8 59 9d 1f 15 7b 08 a7 f9 2e 34 -19 fe c4 c8 c1 b3 4c a4 63 c7 68 b7 2e 07 f9 da -bc 3c bb dd 8b 56 17 cc 25 28 75 00 2a 1a 13 92 -af 0f af c0 8c 72 11 75 8f 3c 04 20 50 ad 73 1b -63 6c 0e 83 19 1a 79 de 5a a2 cb 94 dc 8b 0b dd -e7 5d b7 d0 c8 ba fb 42 23 d3 47 b0 24 b3 d9 c6 -b2 39 61 9b 5d 8b 63 46 ea 86 fb 8f 24 c5 84 dc -1a 47 79 1c b7 c8 c7 eb f1 ed 43 8b 88 - -# Signature: -01 b9 f4 33 94 c7 cb 88 5b fd cc 3c 84 96 22 23 -e8 aa a9 4c 6c 9b 79 05 40 1d 24 f0 dc 44 3b 2e -8d 84 0e 28 a9 5f a2 2e 1a e3 6f fe 08 96 6f 38 -d3 87 14 cf 68 da 8d b2 37 64 b8 8c 4b b2 be 4f -d3 da 9c cd 1b 50 69 42 aa 9d 73 fc 09 38 2d c3 -30 83 14 70 6e 6c e2 7f 00 76 1f 3c 9b d5 4f a0 -e3 1c 96 71 9a fb f0 76 3e 35 ca d8 89 b7 2e 13 -bd 12 b7 6d 6f 20 20 fa f6 1d d3 d7 08 22 8d f0 -6d - -# PKCS#1 v1.5 Signature Example 10.11 - -# ----------------- - -# Message to be signed: -d0 32 28 83 e5 98 16 3d 72 20 36 da 3e 63 2a a6 -55 97 ac bc d1 f4 76 03 10 96 96 f9 b3 9f dc - -# Signature: -07 8d 17 ab 8e 6f f0 be 50 b3 53 9e b0 3a e8 f0 -90 3b 7a 07 74 81 78 1f b0 b1 f0 9e dc f7 78 86 -31 2a d6 c0 60 27 4f 0c 38 9c 16 31 40 40 c8 d7 -d9 90 9c b7 5d f1 8c 82 d6 2d d3 4e b5 9c 6a 87 -d3 c4 6a 7e f7 47 4a 5e 44 7f 77 44 a6 a9 2f 59 -90 ea ec 7b fb 00 84 4d 68 4d 30 7d db 49 81 89 -41 49 e7 52 bf be 2e 77 05 7d a7 60 54 69 af 7f -fb 67 27 a9 98 1b 94 39 ca a5 d8 0e 6a e3 b3 d6 -51 - -# PKCS#1 v1.5 Signature Example 10.12 - -# ----------------- - -# Message to be signed: -e8 74 2f 04 b5 65 4d 92 88 b2 31 a4 7a 36 58 39 -bb 01 be 87 - -# Signature: -09 b7 53 06 a7 21 2e a6 f4 7e b0 cc f4 e2 e0 d6 -f8 f3 ab db 9c dc fa ad be 51 92 2f 92 ea 62 62 -3c 58 ea 74 ea 1a 24 7c 9d 73 1f 2c 03 35 36 b3 -52 73 c7 17 49 5f 32 5a 60 40 5b d5 f5 e4 05 b6 -80 27 9e 75 21 60 47 87 40 45 72 16 dc 92 9d dd -65 de a5 05 53 55 46 e4 77 0f 82 11 b8 49 c3 65 -21 8e 56 6e 5b b4 1b fc 36 1b 65 cd cc b0 e6 04 -c9 ed b9 70 ee 6a 28 6a 1f ce c0 ae 9d 92 55 8e -ab - -# PKCS#1 v1.5 Signature Example 10.13 - -# ----------------- - -# Message to be signed: -a0 3c 2b 85 fd e4 64 68 d1 c5 06 37 b0 0a 72 dc -fc 32 c4 16 31 73 9c 06 02 45 f5 3e 57 c6 6c 51 -76 6f 24 ea fd 93 e6 c6 67 43 48 05 91 bf 14 44 -6e 04 0b 67 a4 f8 46 99 57 6c 2e 14 63 ca cc bc -b0 73 e4 b7 ec 6d a6 c8 cb 41 d4 a1 23 c7 48 cd -7e 83 d2 61 e5 4c 2f d2 bc 49 5b c4 c4 4a 78 f9 -82 00 34 03 09 2e c6 96 0c 08 8e 2b cd e3 48 a2 -e0 e5 5a 4b 4f 42 ea b2 29 b9 5c 38 3f 21 13 ed -6c d1 f3 f3 16 7d e3 d2 8d 36 2c 8d 78 b2 eb 6e -31 62 0e 34 b2 f0 f9 41 da cd f7 b4 b8 56 8c 6a -86 3a 55 1d 7b d4 a5 d7 09 3e da 69 e1 e2 80 56 -dc b1 eb 69 ae 03 ad 74 be 72 a7 5a e8 fb 56 a2 -71 25 ca 3d 2d b3 76 9d 13 d3 5d b1 08 e2 64 4a -7f 3b 37 93 8f ec 97 62 31 52 06 d3 0c cf d5 76 -ae 7d e0 76 98 69 e5 04 4d 07 64 6c f7 8c 64 a4 -86 48 0b 0f d4 2c c7 b2 46 - -# Signature: -05 8d a5 49 4c 4e 98 aa 12 1f 67 f6 5a 2c 86 54 -25 a9 e6 00 2b 22 3f 03 88 80 97 53 57 3b 4f 33 -4d e4 5d 8f 00 07 25 5d 11 2d dc 84 db 26 67 00 -e4 40 b5 a8 69 00 c3 d3 d3 5b 02 4c 18 d8 a2 5a -58 00 22 6d 0a 56 d8 38 d8 91 9e 6d 5a 87 30 d6 -19 49 90 15 ec 46 65 c6 3d 77 80 83 a0 42 dd 4f -05 2a 1b bb 5f 40 80 cb bb 41 fa 94 5b ad 6a 74 -77 9f 68 07 25 e4 7a 08 a0 51 4f 35 0f a5 ad f9 -0a - -# PKCS#1 v1.5 Signature Example 10.14 - -# ----------------- - -# Message to be signed: -c4 0c 70 f2 6d a5 69 48 6b ac e7 85 da 32 e3 37 -a0 eb 94 fb 3a 0a a4 09 c5 77 01 75 c8 e8 cb 2b -aa 8d 2a 1b 98 46 c3 7d f7 d6 71 03 6d 5e 91 - -# Signature: -05 25 61 28 af ba 1f 55 d8 1f 79 ea 33 87 91 47 -a2 4a d7 77 93 46 ee 79 8b 21 1c 24 71 53 ea 38 -d2 6b 21 70 65 f6 1e 01 10 b5 3d 72 cb 64 93 4d -9b 1a d1 b3 de c3 32 09 2d 25 8f 0c af 1c 4a ee -8b 23 e0 9b ab 0f 0c 27 88 58 b4 41 d0 8c a3 ae -9f 00 aa 9a 3f 01 8f 7d 9f a9 8a 18 df 0d 24 84 -7e 56 7a 47 f5 77 9b d1 79 3a 4b 02 52 f2 ba d4 -0c 9c 4a 81 30 1c c2 8c 26 09 d7 bb 33 37 e9 7f -14 - -# PKCS#1 v1.5 Signature Example 10.15 - -# ----------------- - -# Message to be signed: -9e 6d cb 11 e0 e8 47 71 39 fa f0 41 a7 4e 2b ed -64 3a 62 ad ed ac 7c be f3 65 ec c4 3a e4 e5 82 -60 bc 72 46 23 bd 63 42 dc 66 0d 66 14 2e a6 36 -80 71 5f 52 2f f3 cd 4b 63 6f 84 aa 9d 75 fb fb -c3 84 10 7e 43 00 4d 98 6f bc e1 a2 7f 7e cc 7d -02 39 2c - -# Signature: -0c cf 23 4e b4 80 08 5d 92 0d 37 d6 87 96 5d 2f -d2 e4 a4 f3 bd 3b f7 dd c1 6b 5d 62 a6 90 32 74 -20 7c 6f 90 83 6e 29 ff c6 3a 57 f9 81 30 c5 25 -23 25 19 c7 08 f0 dc 8a 12 55 ab 55 db 1a 2b 9a -bc 11 06 16 02 07 5f f6 f9 7f 90 92 79 6b 98 87 -1a 6c d5 d2 61 7d dc 9d 25 5a 73 00 c9 10 fd 21 -0b 14 a9 81 e5 a0 e0 c6 bb 2b 04 5f a9 75 68 98 -b9 3b 8a 63 45 44 d7 7a fd b1 cf 0e 79 58 f1 1a -43 - -# PKCS#1 v1.5 Signature Example 10.16 - -# ----------------- - -# Message to be signed: -20 bc 46 3b 5e 12 20 a3 9c 84 e8 9f e6 71 6e ec -ab 55 55 f8 bf ce 60 cf b8 37 93 cc 40 a4 da 1d -22 c0 ab 4e aa 93 1f b7 47 be 35 f1 cf 6f b1 46 -5b ef 1d f2 76 0f cb 3f 70 d3 e2 96 e7 b2 70 45 -0d ff e2 d5 88 c4 39 6a 5f 6f 1e 63 87 aa 86 97 -1f b0 ad 24 df 55 04 43 dd 12 2b db 2c f3 c9 ed -61 25 fe 55 ce c9 91 cb ae 8e e1 56 2a 8c 0f 4f -36 4f 8f 0a 80 cb 30 fd 99 44 0b f6 55 f0 80 4f -92 96 8c a2 e0 1c 0d 5a bb 4e e2 67 63 6d d4 f5 -11 a8 d3 29 41 16 21 6b ed c1 08 86 45 e4 65 d8 -e1 98 b8 af e1 cd 54 24 b4 2a 53 3c ed 19 8a d5 -97 - -# Signature: -05 1b 71 42 66 06 6b bb 81 9a 2a 38 05 a8 9c ff -46 18 75 c0 95 f4 f3 89 82 d1 af c2 ad 2f 14 24 -50 b8 a7 52 94 7f 03 1c ce 2c 9c 34 0c 8a c9 f9 -f7 a5 48 b7 cc 17 e4 cc 52 56 96 ea 0c 87 53 a1 -e1 5b cb 98 5d ea ec 77 6f b9 e7 d9 f7 58 62 f8 -98 35 23 d9 f8 71 c6 3f b7 56 1a c7 1c 37 6b f4 -95 d4 32 38 59 bd 14 18 8f cd fb 4b 37 ab cb 5d -c1 a5 8e ed ea 7e 0f e6 2a c1 6e 20 8a ab 4c ee -26 - -# PKCS#1 v1.5 Signature Example 10.17 - -# ----------------- - -# Message to be signed: -92 da 26 0b c2 13 b7 2b 48 a0 57 53 50 3d 00 a1 -db fd 02 ac 7b 9f d4 4d 24 01 ea 7a d5 8a d1 86 -1f da 53 63 29 ae 41 73 c9 16 80 05 b9 66 2c 05 -cb ea 47 ad 86 4a f7 cb 16 60 2d 3d 18 34 71 bc -98 bc c6 2c 6d 00 d3 34 bf f5 b9 0c fe 7d 7e 12 -d0 7f e7 d4 cb d9 dc d3 c4 c2 34 90 be 8c ba dc -08 c9 17 79 80 37 3c 79 eb 4e ea 6d 81 a6 be e2 -27 0b f4 20 f9 19 79 ad 3f 27 1f d6 8d d4 28 3b -e8 14 10 92 8c a4 5b 9d eb 58 d3 ae 98 b2 f4 fc -a6 21 25 95 0b 5e e1 28 db a1 05 c3 5c c3 98 d1 -5e 74 2b ba 92 69 7b 5c 62 b2 67 ce 01 14 1c ec -ef 80 75 07 de 29 c4 85 30 5d 0a 99 09 43 23 0d -8d 9b 72 52 ee 0b 19 56 de 84 5f 2f bb 28 38 78 -5b 47 0a 7c 20 53 db 39 6b 31 5a 30 d8 a7 f9 1c -ff fd 03 e8 a3 9b a8 bc - -# Signature: -03 e2 3f 86 52 37 4d 48 d3 81 c3 78 35 3e b4 7d -90 64 cd 70 8e 1b 9b f6 88 70 4c 04 c0 09 00 88 -46 e6 a4 7e 0b d2 e3 0c 33 40 f5 d4 e1 9d 2d c5 -d8 89 0c 8f 01 04 dd 6f 5d d6 ca d9 c4 d9 94 84 -09 c3 cc 0b e6 70 71 9d d0 48 41 80 89 1c 93 5b -99 79 db 8e b4 68 a2 3e 4e f4 60 29 f3 af 14 57 -4b d1 0b 47 3e dd 9b 12 7a 30 6e 51 24 ad a4 02 -c1 48 f5 1b 52 e7 e6 28 bf ac ec 3f c2 54 3a 0f -92 - -# PKCS#1 v1.5 Signature Example 10.18 - -# ----------------- - -# Message to be signed: -86 03 a5 62 2a 2d bb bc bb e5 33 30 e9 08 d5 a2 -5f 6e 67 a5 1e 07 68 d7 c3 c3 fb e8 b9 2e 8b 1b -36 dc 00 74 3c e3 3d a0 f1 c8 cf b0 0d 63 ed d6 -b2 25 2f b6 72 13 97 d2 50 4b 30 ed 1d 29 3a 82 -e2 44 c9 51 bb fc 24 29 8a 42 ff ee 26 e4 56 a7 -be 10 5c b5 e3 7b 3d 25 de 28 bf c0 10 42 c4 a8 -2c e8 70 45 54 87 e5 b3 0e 26 f8 d5 39 8c 86 12 -6e - -# Signature: -08 22 fc 22 a9 cd 87 7c 09 b6 f9 2e 80 17 cc c0 -28 d5 37 99 67 c7 d0 4e f3 2f 86 9c 7e f6 7d 59 -3c 77 45 f6 29 d9 3d f2 60 03 8c d3 33 ea ee 92 -35 9f db bf 84 62 3b 7b 55 14 23 5b 83 06 27 2f -4e fd 13 a6 70 0b e9 28 9a d5 4e 57 d5 2d 1f eb -b4 6a 37 af d6 95 94 2c 4c bc fd 37 68 f2 82 1e -88 8e fa 0e 2c 5f d3 c9 c4 2c c3 55 50 d7 95 5c -db d3 5c 8e f8 58 1b 41 f8 dd ab 26 18 26 2e 3d -ff - -# PKCS#1 v1.5 Signature Example 10.19 - -# ----------------- - -# Message to be signed: -06 7d 4b ec b0 3e 1e b2 75 ae 22 50 7a 77 a5 39 -6e 71 9b 5f 00 b1 05 95 0b c7 99 8e 08 03 da 57 -a4 de 08 a4 07 8b 9a 00 d2 d4 6f - -# Signature: -09 10 8d 44 57 5f 61 4a 68 3e e4 d7 8b ce 1c 58 -f5 24 36 87 cb e9 c5 48 34 60 b6 5d f2 36 92 7d -bc 78 c0 64 39 ce 1c 7c 51 97 39 c8 f8 95 00 82 -d9 56 d6 0f c3 64 5b a7 af 8e 78 89 54 70 63 1b -b4 da 00 c0 1b 98 2c c1 1c 68 d2 65 0c 7c ae a4 -a2 6e 21 0f f4 b1 ca e1 db 50 5f ce a9 29 34 87 -b2 07 31 78 ca 24 5c f0 ca 23 56 ba f8 65 54 6b -54 af 95 35 ba b1 8d b6 79 ef 56 27 09 29 79 c0 -a8 - -# PKCS#1 v1.5 Signature Example 10.20 - -# ----------------- - -# Message to be signed: -88 4f c5 02 c8 82 48 49 47 8b 2e ac 1e 7e bb b7 -ca f2 8e eb 48 89 45 86 02 ec 70 35 81 d0 5e f9 -b1 a4 22 0b d2 f9 22 f2 5e 46 4c 88 07 01 c8 a4 -5b 1d 1f ab c8 66 2e b2 49 40 04 26 c2 22 62 38 -eb 8a d0 f9 06 9c 90 f0 01 82 77 44 80 25 a6 41 -80 ed 55 d1 af d2 7a ff 4f 00 70 2f 71 5d 29 10 -00 0d f3 92 5c 70 10 ff 11 7f 6d 8d 2a 81 67 09 -48 9e fd 29 a4 5c 59 23 17 7b f9 2c d0 bf 6b 94 -74 5d 34 8a 14 4e 98 74 0f 72 22 6a 3e 2a 9d 41 -7b 7c 1f d8 f8 95 f5 15 c5 c6 d4 06 a7 2b dc cd -39 15 2c 30 fd bd da 0e 62 82 3e e9 df ab 34 32 -e6 64 2e ec b6 98 7b 90 46 e0 40 a4 78 a4 df 64 -8d ef b3 01 6a a4 43 d0 67 a1 fa 41 55 55 53 74 -f8 ba 32 5a 8b 55 e4 d6 b5 fa 09 0e eb ae c9 c9 -2e 26 1c c0 4c ea a4 8b 3b ed 7b 3f 87 d3 - -# Signature: -0b 41 b4 12 19 71 26 15 9e 9b da 1a 24 62 c8 a4 -fd 3d ff dc 6e 98 e4 db fc 06 cf cc f1 6f 74 fc -b5 23 38 af 14 ed 39 36 e0 2c 1d 7e 77 23 6c c6 -a4 89 f0 0f 08 98 52 de 5c c4 25 b4 50 94 a0 42 -e3 85 46 4b 64 c3 b2 ff d0 1f 19 a0 1c 2c 03 81 -f7 58 a6 73 65 d1 e6 5a 70 7b 13 4e 3f 8a 93 16 -b4 aa cb 7e 85 1a 5e ab 3c d8 11 bd 45 22 dd 14 -1a 00 15 7d c3 fc af c4 15 4c af 05 93 ca 62 10 -2e - -# ============================================= - -# Example 11: A 1029-bit RSA key pair -# ----------------------------------- - - -# Public key -# ---------- - -# Modulus: -1e d7 ee a9 40 5f 50 7f 94 16 23 a1 7b ea 71 7b -86 0d e4 4c b7 76 87 b8 b8 5a 6d 7d 1e f4 f8 62 -8d 25 7c b9 42 38 c6 25 ba 25 d4 6a ae 59 39 60 -af 79 f7 5e 28 ab 63 ac 3c ac 48 20 b8 2d a1 cf -75 0d 6c 93 0d 6b 82 78 54 aa f6 ca c0 c1 7b 80 -b0 29 f5 d3 19 cc ca 66 5c 56 94 f5 4b a5 f0 96 -f4 54 34 13 ec 4c 5e 97 cc 1d da 89 d2 af d4 28 -57 87 59 03 2a df 92 89 50 65 ba af e8 8d 2d 8b -61 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -1e d7 ee a9 40 5f 50 7f 94 16 23 a1 7b ea 71 7b -86 0d e4 4c b7 76 87 b8 b8 5a 6d 7d 1e f4 f8 62 -8d 25 7c b9 42 38 c6 25 ba 25 d4 6a ae 59 39 60 -af 79 f7 5e 28 ab 63 ac 3c ac 48 20 b8 2d a1 cf -75 0d 6c 93 0d 6b 82 78 54 aa f6 ca c0 c1 7b 80 -b0 29 f5 d3 19 cc ca 66 5c 56 94 f5 4b a5 f0 96 -f4 54 34 13 ec 4c 5e 97 cc 1d da 89 d2 af d4 28 -57 87 59 03 2a df 92 89 50 65 ba af e8 8d 2d 8b -61 - -# Public exponent: -01 00 01 - -# Exponent: -0d 93 80 72 b1 6a 02 f5 d5 0a 15 ae eb eb 5a fe -43 18 74 48 2c 6d 18 fa 7e f3 16 c4 7f 4e d6 d2 -12 4c d0 e4 7e b8 9c c7 58 73 74 57 6c dc cb 3b -ba a1 95 f7 b5 31 13 93 69 b5 6f 9e 2f 53 ae a8 -ac 7a 97 e1 d7 45 8f 52 6c f7 d7 10 c4 90 2a ae -df 99 7c 11 94 b8 7b 62 cc d8 da b8 ff 5b 67 d4 -0f e8 3d e1 b8 2b 91 60 9a 7c 5c f3 92 29 eb 3a -1b 2f 0e bf 0b 12 5c b8 00 91 a0 7e bc 77 9c e7 -fd - -# Prime 1: -05 90 a1 e5 18 71 07 fa ef 1e 0c d5 2f a2 dc ad -a2 d5 8a bc c9 e0 73 8f f4 85 0f 7d 2d ee 19 82 -3f 6e 3e 2c a9 11 b7 17 4b e7 0b 15 c1 b8 87 e0 -ae 15 10 21 22 42 2f a1 58 b9 8b 0d 38 21 15 24 -5f - -# Prime 2: -05 8a dd 02 9b c9 7e cf d1 d0 db 26 be 45 ee 8d -3e 54 bf e6 36 fc 4d a6 66 dc f2 50 ab 2c 2e 96 -56 62 16 b8 a5 17 f1 0f 75 b9 8f de 6c cd 8a 58 -e8 fc 58 2e 78 74 90 e1 95 8f 7a 0f da 82 ad 68 -3f - -# Prime exponent 1: -01 80 ee fd a3 f9 06 9a fa f9 37 a6 72 d4 a2 a4 -18 17 73 01 47 da e9 de bf c7 24 44 42 a0 cf 2b -ae 4f ef 64 c9 da 0b 8a b3 eb 9d c7 27 2c e1 2a -08 5f 90 98 23 55 96 e1 15 c4 2c 9a 49 cc 46 96 -29 - -# Prime exponent 2: -05 12 e1 4e 11 05 7d 84 8c 23 f1 6b 5f 46 2f a2 -b7 8b e7 fc bd 1b 6d 8e 46 9e 3f 69 9f b9 9b 90 -5e d5 fe cc db bd b6 1d 1b fd 5a 7a 19 0a 74 7a -fe 16 7c 37 56 68 07 75 ab 6f a4 23 3d 3a e1 ba -0b - -# Coefficient: -26 2e 28 23 16 98 be 32 87 a9 c7 06 f3 94 7b 7d -5c 2f 5f d2 b9 14 46 f5 e9 a3 15 44 d9 af f4 55 -a3 ec c6 b5 43 14 82 0c 2a 48 82 61 d9 f9 8d 34 -8d 9c 3d 10 02 e4 e8 28 7a 15 2c 12 87 09 65 60 - -# PKCS#1 v1.5 signing of 20 random messages -# ------------------------------------------------------- - -# PKCS#1 v1.5 Signature Example 11.1 - -# ----------------- - -# Message to be signed: -84 55 19 dd 45 d2 dd cb c8 db e0 b8 29 54 c4 58 -c3 66 4d 88 27 4e 50 2d 27 91 46 b1 8f 6a 81 67 -50 e9 4b 4e cd ee 68 32 cb 35 df cb db dd 3e 5d -c0 64 04 d5 f0 c7 0e 7c 7c d0 e1 9f 38 bc 5a e3 -2c 7c d9 1f 94 d8 f5 67 82 39 7b c7 4e 6b 06 98 -27 ec 27 30 17 37 40 ce 4a 10 e6 48 c7 88 97 af -1a 89 e8 33 31 d0 f4 61 37 8d 06 05 28 73 f1 7d -9f fc e4 6a 32 47 26 07 fe 73 e4 a5 61 87 9e 61 -9e 7c 1a e8 14 e4 5e 1d 2b db 12 19 46 b2 ae b8 -56 39 16 c5 43 eb fd c2 c0 90 fe b5 56 65 00 a8 -ce 74 af a4 53 72 bd e0 c6 67 3a 7f 6a cc b0 ee -9d 57 bd e9 3c 36 dd c5 7b 84 90 aa 2d 68 58 5a -3d b7 29 7a da 6d 9b 3f 35 6d bc 74 d3 15 c5 fa -1a bf 7d e6 ce bc a8 3c 9d f7 - -# Signature: -08 63 a6 26 dc 42 ba f3 e1 61 c3 5b 3d e3 b1 ab -c1 aa 5a df 54 16 46 5d 4c 7b 6b 01 ae 2d ad 73 -f9 f1 58 eb 21 3d bc 36 0b e4 d4 7e 57 07 87 1c -39 c3 8d bb c9 6b 46 c8 f9 af eb d3 dd ac 87 16 -90 98 e1 a7 67 18 d3 54 cd 09 1c a3 52 96 a7 7c -21 d2 51 2f fe 65 e3 b7 1b 90 22 e9 cd 1f 7c 35 -ce 13 65 fd 1f 2c 2c b9 67 ff 4c 8f 90 f0 c8 ea -ef 0d b7 3f ed 00 e9 8c fc 83 f8 0c 67 b3 be 1d -33 - -# PKCS#1 v1.5 Signature Example 11.2 - -# ----------------- - -# Message to be signed: -86 8e 7c 4f c6 34 0b 6b be b7 b8 6e a8 9e e7 26 -5f 32 31 f4 8b aa 92 e4 a2 e8 ce 0f a1 c1 a8 c0 -fb 0a ca 94 4c 74 bc cd - -# Signature: -10 cb f8 71 7f 76 27 8f cc 8f c0 aa b4 6e 90 a3 -d1 80 c3 c9 2a 4a 83 eb 93 c8 92 0a f8 8b d6 50 -6b 40 73 45 3f 0b ef f3 e6 1e db b4 db c9 c9 47 -c6 9d eb 69 a1 ac 92 9e fc 15 62 5b 9e d7 cf 1b -c4 23 a8 87 5f 37 80 dd da 9e b2 fc cd 9f a0 14 -62 6a 7f cf 99 86 49 bc fa 59 53 a3 c4 3e fb cc -38 70 4d 02 49 19 df 2f c4 ad ea 39 e3 4c d1 5c -d4 f8 6a d3 f5 01 01 2f 6b d2 8a a5 00 2c 3b 41 -ba - -# PKCS#1 v1.5 Signature Example 11.3 - -# ----------------- - -# Message to be signed: -92 cf 88 0d a5 89 15 e3 aa 95 08 93 53 e4 61 84 -c9 15 94 5c 57 67 9c 1e 4b d3 82 5e d9 19 a3 20 -52 e9 78 6e 23 b9 42 53 9b 93 15 f5 81 da f0 b4 -1f a3 26 1b 96 7d e4 0c d5 d9 2a 48 24 f3 64 bd -1e 1f 51 84 4b 10 9b 14 54 13 4a df 23 4e - -# Signature: -08 82 89 66 ac 58 36 c5 13 da 4f fb 87 61 87 97 -94 3c 61 2e de 7e 12 b3 10 03 ef 17 10 65 b4 ce -dc 6a 80 b1 45 6c 21 b6 74 b3 77 9a d3 5f 70 17 -7a a9 2c 6e ac 0b 83 3a 96 7d 7e 98 99 0b 48 24 -42 05 db f2 6f 5c d5 7e f8 7d c6 fe 5e d9 99 cf -8c a7 5d c8 e6 26 fd 6e b2 81 c4 99 af f7 29 89 -ed f5 2e c6 f3 bc af 81 ec 5f 8e 82 30 b8 7e de -dc f7 b7 78 14 3e d6 c8 ce bb ac 9d e5 41 09 dc -f7 - -# PKCS#1 v1.5 Signature Example 11.4 - -# ----------------- - -# Message to be signed: -87 3c 47 15 90 2f f1 9d e0 8b cc b0 cf 26 37 63 -fa b0 16 d0 22 0f 03 27 b4 75 5e 35 4e b2 47 f5 -db c2 d3 96 98 9b bd 36 d3 1f 61 98 93 90 ca c1 -66 43 12 5e 63 e1 a1 ae 1f 1b c9 bb ed ac ce 67 -fc 1b 51 a7 - -# Signature: -05 25 9c 48 15 93 ea 86 d1 f0 02 ca 58 aa ee 93 -29 fa fe 21 8f 67 50 f0 e5 88 f3 3b 64 e7 08 fb -27 a6 fe 81 eb ca 8a da ec 75 7a 14 ff 55 a0 c8 -8a da 2c 3b 43 e3 9e 8d fb e6 76 89 43 65 a2 21 -0c 2a a8 1f 42 4d 85 29 c2 07 6b 00 c9 2d d8 c8 -ae 3b 78 0d 87 db a7 29 dd fd ef 7d 40 7f 85 4a -71 cb 68 8b 9f 03 c7 1f 3b aa 24 a2 a6 e1 cb 41 -07 74 30 9e 40 c1 3c 2b 26 47 38 e5 69 7c fd de -f3 - -# PKCS#1 v1.5 Signature Example 11.5 - -# ----------------- - -# Message to be signed: -14 b2 76 02 ec e8 f0 67 b5 84 83 af 17 77 c4 ed -10 b8 b6 4e 64 c6 9f 57 ef 88 9a 1c a5 d5 b5 d6 -51 c6 08 db 23 9d ee a1 50 ff 12 cf 50 c8 67 96 -12 f9 7e cb 09 f7 - -# Signature: -15 c4 b3 f0 81 a2 e5 8a f5 94 e4 2f d6 ac cf 1d -0d 61 d9 3a 5e 3a 84 cf 90 4b 98 d9 ad 71 33 61 -b7 84 b2 4d 92 95 e4 3c 23 be 93 ef 36 51 4a 9b -ac 2c 1b df 4e e7 32 34 36 76 3a 20 66 2f 2d b3 -41 d9 e3 8b ed 5f 12 c7 dd 18 bc 3b b0 fc ba 5c -00 50 bd 1a 2a 44 03 71 97 b8 c9 fc 2a a5 99 eb -43 c3 d9 67 92 42 c9 9b bc 49 b0 3b 98 ea ca 83 -46 28 72 59 e6 ea 2e 89 15 5d 0d d2 b4 77 80 35 -75 - -# PKCS#1 v1.5 Signature Example 11.6 - -# ----------------- - -# Message to be signed: -e5 66 e5 fa 55 6c 76 5b 62 bd 6e 37 45 21 f5 08 -fe 44 66 68 c6 47 4b ef 04 6c c6 89 4a 87 32 2e -19 31 e8 0d 9e d9 ea 80 6b 16 7a 3a f7 7f c0 49 -38 b5 54 8e fb c0 68 d4 f1 96 6a 99 76 25 af 31 -a4 00 7f 06 98 a8 46 9a b6 81 f4 d5 08 b4 a4 8c -8f e7 20 cb 5a 94 a7 f4 43 dd 5a 58 03 04 97 da -a9 59 a3 aa f6 e3 41 84 39 7a - -# Signature: -07 e7 c9 44 26 24 bd 26 6c c1 cd 1a f3 b8 f0 62 -94 dd a1 c0 77 67 fe 19 bc ed 6c 9e d7 c4 b1 ed -7f 26 e2 03 db 7f 3a 1b fa 57 da ba 6f 3a a0 60 -03 bc dc 1e 00 c2 d3 d7 6b 9c bf f9 68 49 b1 af -f5 42 d0 d7 af c6 e4 22 49 2e ab 0a b7 f8 e1 d1 -ae 0b 27 9b 85 19 45 b7 65 85 1b 9f 8a d8 80 dd -16 4c 11 ac 4a 57 f9 6a 0e 48 4b a1 6a bf 1c be -8a ac 09 0a db 6a 71 79 7e 13 35 ee fe 2a c9 98 -0d - -# PKCS#1 v1.5 Signature Example 11.7 - -# ----------------- - -# Message to be signed: -b4 43 c3 43 52 7b 30 d5 ff - -# Signature: -0b 3f 13 c2 72 24 d1 61 01 b9 c8 20 1f 1b 4f 85 -37 db 3c 11 6f 3c e1 30 be 0d e0 dc 0d d2 0f 77 -3c df 7b 7f 37 23 87 c4 b6 53 e5 dd 44 21 84 45 -74 11 a8 2f 8e d0 03 66 ec c0 77 a4 26 7c 9d 7e -56 54 96 63 23 9b 43 19 fe 49 9a a7 89 54 04 9c -74 3b bf 09 d7 7b 30 29 d9 18 bb 7b 9a 6a e8 0b -12 9e 41 bb 56 da d2 b8 a4 b6 f3 19 33 74 c8 29 -2f e0 17 d0 63 34 7e 91 cb f4 dd 39 39 c2 37 f8 -3c - -# PKCS#1 v1.5 Signature Example 11.8 - -# ----------------- - -# Message to be signed: -db 90 04 7f 61 5a d7 19 72 ba ed 0c 10 62 6e c8 -cb 18 c6 d7 5e aa e0 58 21 9f d6 19 54 26 d4 4d -5c 54 3b ef 3c 4c 14 98 e8 77 d7 c8 53 e5 31 21 -eb 31 57 00 81 d5 de 48 85 cb c9 25 a6 c2 23 21 -cc c9 c3 78 4e b2 19 e4 2b 7e db 92 88 77 60 73 -29 79 8d 55 73 9c 89 d6 d6 b3 f0 d4 30 bb bc 47 -22 ea fa 67 de fc 86 ab a6 e6 34 83 fd 64 99 b0 -3f ab dc 84 65 d9 8b bb e4 40 2b 02 31 13 5c 21 -24 3d 7e 02 ad 5f 7e 9e 8b 94 60 c1 2d de 2a 39 -5b 45 69 61 cc 3d fd 9a 12 f5 d9 35 9e 0b 3a 6b -d7 7f 44 65 5b 60 3b 02 55 db ba ff 8b c8 40 75 -9a 34 62 fe ce 0d 8d b6 e4 5e 2f e2 bb f8 b6 e9 -7b 3f ea c0 79 86 73 82 57 ab 9f 8c fa 79 5a 20 -19 2b 5e 2c ea 11 8c a7 62 25 2a f6 c6 eb 00 ec -5c 68 20 bc c7 c7 - -# Signature: -00 aa b0 67 d3 a8 63 3d 0b eb d5 91 ed 34 d0 67 -f4 71 8c d7 f9 b1 e3 5a aa 40 5d a1 22 2a b9 40 -38 66 92 1f bd 05 74 33 40 7a 4a ae 7e 26 c5 cf -a0 bc 9c 11 57 05 7b 1d a1 cf 36 28 51 87 19 a6 -03 f6 c3 c4 de a3 0b f4 9d b9 b0 68 af ec 69 81 -21 dc e5 d6 0d 93 a6 f5 63 3f c6 af 9d f4 c5 dc -cc 13 8c 29 4e dd 42 9d 4a fe 3b 33 78 86 82 55 -cc 53 78 8c f2 b4 77 45 d6 4a cd 88 5b b4 7d 2e -ec - -# PKCS#1 v1.5 Signature Example 11.9 - -# ----------------- - -# Message to be signed: -2b e0 06 7b 95 18 5b ad e1 18 dc e9 5c 57 02 9b -55 4b 25 e1 c3 95 19 f8 f8 90 73 b9 a0 4b 7e 91 -29 9c db 87 b0 bd 17 c9 f1 51 92 5c 75 6e b9 b6 -45 07 25 61 26 41 07 88 21 38 85 4a e7 d5 07 e1 -5f cf e8 47 09 45 40 e7 1a 54 7f 63 b5 90 46 7f -ad ff 64 7f 64 3e 1c ec 11 24 65 29 06 2c 9e 40 -88 92 f2 a2 0c cc c0 ae 45 ca 97 a4 7f ca dc 8f -ed e2 1a 24 71 11 67 70 6c c4 b5 d6 94 77 e5 a8 -a1 46 b9 60 cd 4b 17 27 42 7b 16 51 7b 63 eb fb -cf 84 d0 b1 ac 8e 7e 70 f0 44 35 75 22 b1 d0 cb - -# Signature: -09 76 81 12 17 71 45 44 41 01 33 24 3b eb a9 a2 -1a 6f 72 12 c6 87 91 5c 72 02 7b ba 31 12 f6 97 -05 42 5c b9 94 cb b6 d3 59 c1 46 b9 5d b1 44 64 -35 d4 cf 96 1d fd 5c 49 87 39 bf d4 be 6e f1 ad -d7 4b 81 b2 89 8a 4c e4 3d c3 7c b0 e9 ed 77 44 -cf 40 9b ab ff 71 78 85 42 ff d2 86 eb e5 25 5d -63 dd 7b d5 5b a4 3f 51 84 e2 48 d3 a6 69 33 cd -b0 69 91 ec c9 0e b3 9e e7 1d 65 c8 8e d2 4d 94 -4c - -# PKCS#1 v1.5 Signature Example 11.10 - -# ----------------- - -# Message to be signed: -a7 90 e6 ac 5d 55 6f b7 cf 44 46 0c 7b 9b e5 eb -7f 24 f9 87 ff 89 0d cb 78 40 24 1d 45 54 5b 71 -05 63 5a 1a af 44 57 e6 41 0c 65 ae ce 50 11 e2 -77 5e c8 53 0a 64 a1 88 39 e9 c5 8a 7b 77 42 4f -74 29 3d cb 9e 9e a8 73 6d 6b a5 8b 1c 66 53 d5 -7b ea ab 98 73 5f 7a f7 32 47 7b 9a f6 a3 3f f0 -75 c7 e4 66 39 d7 48 55 08 20 ba 6a bd 4a 9d 48 -cb 49 03 f6 5b 76 f8 14 c6 cd c9 5e 8d 9e 87 0c -24 4a 02 9b 29 4a 8a 5c 82 6a b1 61 f6 f9 78 d9 -f1 c0 3f cd da ae fb fa db 8c aa e8 4b c2 dd 33 -2e b0 49 97 d6 1e fa 91 e9 24 1e 4c cd 97 64 c7 -26 e7 66 ed 3b 03 38 d0 86 f1 03 2c 15 33 ef 59 -3f 88 fd 56 03 37 91 b1 d0 62 5c 6c a5 1e ec 27 -9c fb 6a e3 f1 27 00 cf 5b ac 27 1e 65 67 - -# Signature: -0d 1b 11 1c e8 de 1d 7c 4f 7f ce ac 73 df 70 aa -6e da 58 dc 32 eb 98 f7 8e 7f b9 bc 25 de 3e 6b -09 ab 8c ae 3b 20 26 b6 18 7f f6 36 72 e5 7d a4 -ac 28 96 24 45 d1 fe 95 1d 27 be 6a 6c e7 a5 80 -7e 13 76 13 94 46 e8 54 9d 48 aa 59 fc 22 33 54 -d1 21 fd cc 38 f1 d0 27 5e 41 86 92 27 00 ad c6 -1d ae 1e 4b e8 05 22 2a 1c f0 7f 11 0a 61 58 a2 -a2 62 58 f1 9c 65 7a 11 0c 0d 9a d2 91 68 0c 75 -96 - -# PKCS#1 v1.5 Signature Example 11.11 - -# ----------------- - -# Message to be signed: -32 af d1 3e 60 7d 87 b2 5f f4 0a 88 5b 25 09 f5 -21 f2 a0 a7 72 a9 6a 39 fb 3f 71 c9 63 84 b3 d7 -57 8f 48 fc ea 97 39 56 0a 65 bf b4 83 d9 60 8d -20 25 55 f6 6d 61 2d 16 b9 25 53 87 b4 e1 12 41 -15 ed 48 bf ef 8b 89 d8 dd fc 21 9c cc e4 87 86 -c9 e6 42 6a 92 12 e7 b1 6d 97 1d 27 8a 11 18 f2 -f8 6b 9c 4b bf 75 c9 c2 d0 99 e3 f6 65 48 f1 f4 -a8 a8 21 d7 27 44 98 f7 cc e6 ec 5e 2b f2 bf ad -2c 6f c0 05 e8 0a 48 ca e4 69 92 fc 82 67 a6 48 -0a cb 89 4c cc 9b 62 09 5c ad 97 db 70 d8 82 a1 -3f b3 85 88 c4 8c a1 90 f1 80 cb 3e 61 ac b4 e2 -cf d9 cd bf 85 5c 53 99 21 f6 8e 11 49 d0 54 7e -f5 9a f5 37 92 dc 66 0d a5 ef 48 a7 ab 89 36 d3 -d3 6e d6 b6 46 9e b6 fd 95 e3 af 18 2c 87 68 fa -60 04 78 54 f1 8f 37 41 c1 88 3b b0 79 26 88 ca -db 9e 4d f3 91 d9 11 45 b8 5e 2a e2 4f fd fe 51 - -# Signature: -01 a9 37 b3 cc 82 54 d5 15 08 70 9e 4a 4d e7 b1 -81 de d9 a4 47 b3 ec 8d ad 49 2c 39 79 52 df 7c -55 0e 4b 26 c9 50 17 29 9d 8d 45 5f f7 97 1c 33 -8c d0 14 df 78 e2 a8 aa 5e be e2 58 f4 92 53 d5 -1a ce 9a 49 31 9f fc 80 7a d7 0b 2d f2 c9 6d cd -b7 3b 48 ac bc 4f 6c 3c 2a 70 1e 7c 15 4b 27 9b -07 05 bd f2 54 8c 8b 36 11 b9 7d a1 ac 09 cd 12 -12 50 99 54 0b f7 ba 99 b0 8c 2f 3d 5f 6a ea 7d -40 - -# PKCS#1 v1.5 Signature Example 11.12 - -# ----------------- - -# Message to be signed: -5b 00 b8 b7 94 a1 0d 21 f1 b4 5e ca a2 0d f7 c5 -b3 52 2c 1b 1d b4 b0 84 b9 59 aa 4e 56 58 ac 54 -68 f6 e8 fb 61 2f f9 9f 32 16 b5 d2 1c b4 ac c0 -bb 42 ee fd b8 e8 2d 75 4b 85 d0 97 45 89 4a 52 -3c 01 62 d0 8e cc e4 8b 99 dd 6c 38 e2 bd 3d 53 -1c 85 62 de ec fc 61 52 36 9a ac f5 80 ea f9 db -6c 68 b6 9d f2 fb f3 05 3f 60 1f 70 02 2c 9e 38 -1d fb c5 90 99 c3 7b de 5a d8 9a 8c c1 ef e4 c7 -b7 d7 8e 90 97 e0 81 21 ed a6 4a c4 5c 32 7e 5e -da f9 22 d3 c3 5f 88 b5 2c 93 d3 99 f4 c2 38 36 -2f e9 - -# Signature: -0f c6 ac 1d 42 94 79 38 cd 25 86 d0 e7 fc 3a 05 -42 b9 af 12 d3 6e eb f9 2b 5d 04 9c 79 65 b1 1b -a9 cc bf 47 00 f3 45 60 91 11 77 b9 d1 29 6f 1c -68 e3 af 46 9f 4f 39 9d bc 18 9c 23 ea 74 65 98 -28 13 32 33 05 ed 6c 35 ff 9c c1 09 d0 a2 30 3f -e7 d3 29 ca 31 7e c4 b1 8e dd 19 c6 2c 60 a3 c8 -c3 10 6f 86 db d0 72 e3 e1 eb 87 85 28 8c 21 ab -ca c2 2e 0c 0d 41 f4 e2 3e 7f 39 4d 46 82 f6 ce -87 - -# PKCS#1 v1.5 Signature Example 11.13 - -# ----------------- - -# Message to be signed: -b7 50 ae 6d 4d 2c eb 92 14 05 34 64 8d 36 ef 25 -e4 51 55 f5 2b de 1b f2 6a b7 - -# Signature: -16 aa de dc a0 9e 06 25 60 c6 61 d2 a4 9b 0e e4 -d9 ce 23 90 7c 69 d1 00 04 f1 49 d1 03 c5 9c 16 -fe 7d 43 73 59 7d b9 ff d8 92 3a 77 a6 b9 43 b1 -88 c4 74 25 e2 a9 e5 30 41 3e fd b6 84 8d d3 42 -0b a5 3e f8 1c 25 c5 78 f8 d9 51 4d 93 fc c9 cb -1f b5 2f 58 d8 8a 57 d1 fd 3f e2 2d a3 10 ec ea -9e ce 55 e9 60 8d 63 ae 21 db ae a6 57 1b 78 fc -fd d2 71 bb 65 92 57 47 6b 59 95 68 7a 02 bb e7 -89 - -# PKCS#1 v1.5 Signature Example 11.14 - -# ----------------- - -# Message to be signed: -47 be 01 02 0e b7 e7 87 5b d4 fc c0 05 a8 2b 36 -fd f2 14 5e f1 32 e2 ed 16 2f f6 94 bc 71 58 9c -7d c6 d5 a3 f8 9d 59 7f 2d 2a a3 43 33 51 18 f6 -fd bd ee f2 3e 61 3c ba cc de 41 95 e6 64 a0 09 -4b 07 fc 0a 32 84 8d 61 39 03 1c f5 72 a1 e3 23 -c5 a7 07 b6 fa 2a ee f2 dc 87 2d d5 a3 e7 6b 13 -f8 ef 94 ad eb d4 e2 05 74 8e 48 5b 40 01 d5 d2 -a0 90 b8 9b 2e 64 74 c4 79 e7 b0 0d 2d 57 f5 86 -ab 76 b8 0f 79 5b a8 99 62 88 29 2c 3f 2c a5 1a -44 e4 e8 41 c0 37 07 e4 80 25 af 4b fd 0a b6 ef -eb 83 62 ed d5 d2 34 05 ba 0e 23 1b 33 24 e1 ca -3c 5d 63 9d 2c 9d 82 - -# Signature: -06 39 17 92 9b bb 20 92 17 ff 48 ed 4f 55 d0 7a -03 f7 6d 6d 94 04 8b 6f 71 31 0b 2c 96 e2 14 ab -22 0d 4e 45 ac 01 c9 3d cc 8a 5c 26 a0 2d f6 1f -fd b3 17 54 96 65 61 0c 84 bd b8 94 5f c6 bb d3 -8b ae d7 fe e9 8e b0 56 d9 f0 39 a8 60 d4 52 b3 -ac ac 18 00 a9 32 a2 8c 88 28 6a bd a8 de 3c b6 -c0 d7 94 da ab 7a 8b a0 11 09 33 b4 d1 de d2 39 -cb dd 55 7d 3e 5a 16 29 17 85 33 15 de 68 09 00 -a8 - -# PKCS#1 v1.5 Signature Example 11.15 - -# ----------------- - -# Message to be signed: -4b 9c 09 64 48 10 d4 b3 06 55 ed 83 38 bb 27 6b -62 4c 68 01 98 22 d1 fc 8f 78 86 1e 13 e2 2a c1 -71 82 1c fd bd 3f 8f 5b 8d c9 c0 de 73 2b 74 6e -1d 13 2e 5f 3f 14 9a 5a 86 7c 2e e4 78 e8 f1 4a -d4 b9 dd eb d3 ae 78 17 e8 49 55 b3 40 4b 09 43 -93 e6 1c a0 18 9d 05 53 69 b4 24 30 09 a0 f5 40 -3f 41 c1 00 23 08 c0 0c e6 99 67 19 37 ba f1 3c -78 93 d6 63 c9 47 fc 7f 84 07 1a 67 2e 5e 07 37 -8a ac 08 b3 fa f0 fc cf 5b f2 83 09 25 85 eb e2 -40 a3 00 46 20 b6 f3 ae b6 73 2b 7b 9d 8d 3b ea -fc 84 67 d1 f1 f1 c7 da 66 b1 bf 5c cc 14 5b 32 -24 24 5f ae 31 df b4 03 f4 93 c0 75 53 57 ad d7 -cb 27 63 71 32 26 c5 4f 43 64 0f 7a 67 0e b7 b1 -f6 e9 e7 72 f2 e5 14 17 a7 05 cf c5 87 3f fb 88 -a5 db 07 ec c4 ee 89 f3 30 a6 69 0a 88 12 - -# Signature: -1a 0b 69 8c f3 a0 58 b4 49 19 af 73 c3 de 32 8e -86 ce 9a 5d 49 99 e0 12 2f 41 4b 94 f3 2b 2d 8a -b1 e6 55 0c c0 d4 8d c0 4b ef ac 2c 67 a4 d0 69 -a7 20 8f 14 2d c2 67 b3 e3 8f 63 38 a0 b1 83 9a -93 a8 36 80 7d 18 1e 3f 0c 7e 87 7f b2 42 16 02 -00 5b ca 25 a9 c3 72 26 6d 18 e6 d5 00 c5 c7 ab -13 38 52 83 d2 af 91 9d 0b ba 0d cb 88 bf 7b b9 -97 2d 67 00 8f f4 98 54 7d 80 fc a6 58 ef e7 64 -a5 - -# PKCS#1 v1.5 Signature Example 11.16 - -# ----------------- - -# Message to be signed: -ec 9f f1 4b 9f 19 7a 2b 4f 24 94 8c 29 d2 f6 4a -64 62 52 23 dd b8 53 46 37 8c 2c 25 34 3f cb ef -58 5a 99 e1 ec 0b ef 0e f9 d0 9e ad 85 be e1 c4 -bf b3 5e 48 fb 26 41 1b df 18 0d c5 cf 31 7b 3a -34 83 71 c7 c5 f4 aa 6d 59 08 fc fc 1e a3 90 18 -cf 04 49 e5 5f 4e f9 94 bf da 40 4f 1c 18 9f db -8a 0a 5b 09 06 c3 d4 0d e1 e7 87 c2 db 4d 88 db -c2 10 b9 f8 01 f4 cd 9c 97 22 7e 9b 2f bc 28 11 -e3 8c ed d9 e9 f0 35 60 03 1d 4c 95 8a 76 81 ba -9d 7e a5 e7 8e 9b d8 bd ed db 41 56 79 0e f2 1f -b7 4f bc 41 58 c2 93 9e 4e fc b8 2e fd c8 81 88 -6a 5b 67 13 a2 4b 9b 5f 2e e2 5c cf 72 1a 64 e0 -f6 40 77 8e cb 3d 35 b4 b8 ee a8 ec e3 12 32 63 -63 10 ae 3c c6 b8 2b 8a - -# Signature: -01 3b 42 05 78 20 c7 3e 3a cf c1 df 4d e1 44 0c -65 8e 01 80 43 6d a7 18 5a 9f ab d2 6e b3 26 74 -b5 54 de 35 4d 1f 4f 24 e8 77 73 26 7f ed 9d d0 -fd 82 93 ea ca 4a f3 d3 a9 dc 51 8c 8e 49 5a 14 -76 95 11 1d 3d c1 77 63 f1 f0 2e ec 1e e2 9f b1 -ab 74 9c f3 0c 78 86 da 8b 2f 64 69 69 59 8a a7 -0f 9a 92 fa 4f 93 5c 7c c7 7b fa b6 98 1f 0d f0 -d2 85 cf b1 0d 66 58 15 39 f7 8d 03 68 ed 4f 93 -01 - -# PKCS#1 v1.5 Signature Example 11.17 - -# ----------------- - -# Message to be signed: -41 4c ea 8e ec 6d a3 c6 6f fc 84 70 f7 e1 47 60 -f7 4b f6 e7 5b 84 dc 98 fc 80 60 dd 3c 21 9e 76 -77 7d fa ba a6 e6 b9 29 55 37 9f 3e ca af 5f cb -8a a5 54 9e c9 cd d1 f5 d5 77 20 1b 8e 32 9f 72 -fa a2 bc ad ea ee 38 8d af 7d 40 8a fd e6 55 3d -24 17 86 0f 3c 8e 25 30 5d ff 76 db bd 95 16 b6 -86 8e e4 56 fc 1f 7b 58 d9 ed 18 a4 6e 4f c1 e3 -53 e8 d0 76 be a3 0b f2 47 c6 0e 6f 68 58 01 a6 -d3 f6 30 ae a6 ab b4 12 a9 41 ff a6 f6 07 f6 bf -b1 3d 90 01 27 bb ec ee 4f 98 a7 ac a6 92 08 11 -57 50 53 ab 2d 42 70 13 80 1d 8c fb c3 88 0f 14 -75 43 15 55 a0 86 fa 55 60 c6 e2 20 6d 9e e9 38 -13 44 b8 24 1c 1d d1 d8 64 48 75 3a f4 4b 00 a0 -c9 - -# Signature: -16 97 bb 23 e2 91 52 5f 4a 0e 79 26 2f 34 06 63 -0d 0d 6d f3 32 49 69 26 c4 e5 ae f9 6e 41 d9 55 -14 86 47 ea f7 90 69 6a f6 8c 78 eb 2a b6 2f f7 -19 62 96 e1 ea 88 6d f0 91 73 66 09 0b 63 0a a3 -18 58 b5 16 15 87 3f a6 bc 8f f0 88 5c 57 b2 e7 -7a 04 90 88 93 cc ef b1 41 24 03 99 1d 0d 23 c5 -57 d2 22 29 1c b8 51 7b 43 28 6e e0 05 67 58 d9 -c1 0b cd 69 bd 68 b8 4a 2d 1f 53 79 05 b8 a4 65 -e9 - -# PKCS#1 v1.5 Signature Example 11.18 - -# ----------------- - -# Message to be signed: -17 89 b8 08 b1 0d e8 d1 77 8a a4 3f 94 10 1c b8 -9f 56 34 30 61 a1 a9 43 bb 8d a5 5e e6 b9 79 e2 -7a fe ab 0e d8 ee 37 14 fb e7 0b 3b e8 20 60 3e -5c ea de c4 b2 2f 95 87 73 22 5d f3 aa d4 87 b2 -80 57 eb fe be 2c 87 93 da 38 46 bd b1 59 03 ac -71 e9 c9 3b 20 16 66 8b d9 06 30 1a 0a 7d 50 dc -60 b2 fa d8 75 9d 18 db 14 7f 20 66 86 5f d9 09 -50 a1 88 74 7d 9b 69 68 53 48 6d ea ab 8e 44 3f -ad 29 92 fc 8a 56 5b dc ba da b0 b9 33 3a b7 fc -db 9c 3d 0b cf de 50 a5 8d 2a ea f1 ce fb 0c 95 -f9 07 73 b2 fa c1 37 cd bc - -# Signature: -02 f9 97 51 c8 44 38 ea c7 f9 96 32 50 d9 ee 22 -fd a7 29 7b 6e 86 e2 a8 bc c7 a9 b5 ac 01 f7 90 -e0 99 11 70 46 60 85 8e a5 c1 62 72 c3 81 33 fa -da de fa 23 c1 02 90 8e 41 9d e2 eb e9 ac 27 19 -45 72 87 8e 2a 97 1f 88 31 c8 f9 17 e8 52 e8 51 -df 99 d4 df 01 8f dd b2 ce a3 1a c3 a7 b6 89 75 -e8 0a 99 7c b7 dd 4d 4d f7 57 bb 8c 3e cd 91 0b -cb 06 03 35 52 12 7a c3 08 11 77 39 a0 2c 20 17 -17 - -# PKCS#1 v1.5 Signature Example 11.19 - -# ----------------- - -# Message to be signed: -ff 87 5c ca 0e fc 3d 90 f5 6e 31 f4 bb 66 84 14 -89 4d 09 de 90 12 7f 84 66 32 43 10 e1 13 69 a3 -f2 f6 49 3c 1c 78 a3 62 b2 a1 4f b5 48 8c b5 6c -e0 22 73 9e 43 aa 76 3d 9c 1c 97 b6 21 cc 53 68 -c9 c0 0e 81 60 67 92 69 5f 9a f9 ab 63 3e f2 39 -ea b3 44 9d da 9e 66 07 08 9c 37 51 90 35 4f 7a -59 a4 b3 ef 75 22 9d 1c 47 ec da e3 3b 27 69 ff -55 42 65 5e 78 10 22 d0 c4 3b 42 1a 99 84 3c 3d -e1 04 22 ad 2f d8 9d fe 44 66 15 f5 19 2e 75 79 -d4 37 43 79 bb ff b9 - -# Signature: -02 68 91 7f 8b da ac 9e be 32 b0 dc 6c d9 d3 9e -fd 3f 88 d8 17 d6 6c b6 39 0d 7b 55 c6 92 12 21 -84 4a b8 c0 89 86 d3 f2 ea 49 bc 6e 3a 10 02 08 -6c 0b 6d f1 63 f7 9d 16 11 6a 93 c4 a2 cc 04 22 -c9 48 41 e1 e3 b9 45 ab 1d 25 3a b8 d7 d1 39 c9 -18 8b a8 30 27 c5 93 f8 3a 6f 38 37 0e 7f 03 79 -ff dd f1 42 7d 6f cc cf 60 83 31 3f 18 15 b5 de -d6 73 74 30 bb 4a 70 ba 81 48 48 34 d8 d1 d2 9a -5e - -# PKCS#1 v1.5 Signature Example 11.20 - -# ----------------- - -# Message to be signed: -e0 7e cf 00 e2 40 1a c9 8b 2d 5a e0 c9 b8 3f 21 -9a b0 27 a6 51 99 fd b6 34 59 6e 23 44 62 41 38 -72 95 32 49 53 28 f9 3f b3 a3 32 55 27 8f 3e c2 -60 65 ce 54 99 5d 42 41 93 bc b7 58 1b fe 1a b8 -95 7d 0b 96 1c 30 30 b8 20 d0 9c 9e 32 6c c3 0c -0a f6 42 66 61 54 - -# Signature: -00 c4 6d b4 1b 65 dd c7 1f bb fc 12 5a 4f 9b ab -88 0a 2f 0c 1f 04 1c 41 1d f7 d4 5d 1e 19 99 7b -34 8e ab ba 19 bf 79 b2 21 77 b2 a0 d7 3f ef a5 -00 83 62 ce 59 60 d7 ef 58 a5 89 93 e7 46 03 d4 -d9 d0 b3 da d4 b2 0c 82 9d 36 ef ca f5 7f 0c 4f -0c ef 89 01 5a 48 45 02 42 bd 02 0d 5f 52 d8 b5 -0e a1 3e 56 a1 aa d6 01 91 5d 60 ec 9a bf c3 07 -f1 8a f2 06 72 38 4d cc 12 f9 82 27 31 36 99 71 -40 - -# ============================================= - -# Example 12: A 1030-bit RSA key pair -# ----------------------------------- - - -# Public key -# ---------- - -# Modulus: -36 98 1a 95 ae 24 18 14 52 da 25 7c 03 8f 05 82 -14 12 d8 4e b4 7a 43 fc c7 ef 12 17 95 9b a6 77 -02 7f 70 86 d3 a8 5c dd 34 9f 92 0f 03 4c 02 78 -79 2d c8 a8 cf 0c 00 80 e5 c6 1f 47 48 83 c6 87 -9f 4d ee 0a e9 52 47 8a 5e e2 ce 4e 39 18 64 1e -81 3c b3 74 f7 b2 83 2b cd 6a ea 80 9d 25 4f c2 -ca 9a c5 a3 32 42 4a b6 5c 2a 26 12 75 d1 9a 41 -4b 61 65 00 d5 e3 73 70 63 15 f0 63 dc 88 5d 7f -b9 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -36 98 1a 95 ae 24 18 14 52 da 25 7c 03 8f 05 82 -14 12 d8 4e b4 7a 43 fc c7 ef 12 17 95 9b a6 77 -02 7f 70 86 d3 a8 5c dd 34 9f 92 0f 03 4c 02 78 -79 2d c8 a8 cf 0c 00 80 e5 c6 1f 47 48 83 c6 87 -9f 4d ee 0a e9 52 47 8a 5e e2 ce 4e 39 18 64 1e -81 3c b3 74 f7 b2 83 2b cd 6a ea 80 9d 25 4f c2 -ca 9a c5 a3 32 42 4a b6 5c 2a 26 12 75 d1 9a 41 -4b 61 65 00 d5 e3 73 70 63 15 f0 63 dc 88 5d 7f -b9 - -# Public exponent: -01 00 01 - -# Exponent: -09 ad 03 17 30 b6 32 73 55 ac d6 94 68 70 0e 7e -9b ae ac 5a 24 a7 ff c9 3b 29 2e b8 71 da 54 92 -46 a5 ce 0c 83 52 55 65 1a 28 c6 e2 f4 c7 61 af -b6 f0 6b 9e 29 95 fb b7 dc a1 74 d5 36 2f ae bd -c3 9a 72 c5 79 5d 1f 33 92 ec 08 8b 5d c2 a7 85 -b2 c9 c4 c6 e6 69 e7 23 b5 dd 0c e4 43 25 55 12 -67 dd 62 e0 f7 8d 24 24 ad ae 48 e2 49 44 3a ef -4a 37 04 10 db 9e 70 93 99 ac 37 cc 48 1b 59 00 -c5 - -# Prime 1: -07 72 0f 21 cd db 92 27 45 b7 1c f8 11 6a 83 66 -9a 0d db 89 e8 f3 f0 6c 34 7c a7 87 cf 10 ef 16 -93 bd fe 3a 0c 36 4c 7a 7e 89 04 17 f2 af 49 47 -5c 7d 07 6f 9c ee aa e7 6d bd 4e 92 15 af 45 69 -4d - -# Prime 2: -07 55 1c 27 e9 aa f1 1f 47 4f 1c 9a 14 bf 14 4c -fa ef e2 7f ca 4f 20 79 5d ec 85 34 c9 37 bb 00 -fe 16 23 5e cd 69 1f d2 3e 32 cd fb 8b 78 66 6b -b7 82 84 ae 15 d5 9b e5 ca 74 73 e6 2d 46 a9 da -1d - -# Prime exponent 1: -02 e2 2c 74 16 0a 94 36 bb 6c 28 3e f6 57 be dd -ec 89 b3 5d 5c a7 a4 93 f3 5b d7 71 e4 42 95 a5 -b3 c0 20 06 11 16 b2 55 ba 4d 8c 15 4e 3a 8e 71 -a1 a3 16 4f 26 82 d4 13 5e cf b2 ef 26 90 c3 9b -fd - -# Prime exponent 2: -01 d2 bf f5 8c bc dc c8 12 4b 31 a9 7e 8f 24 d5 -1f 70 96 b9 7f ec bc fe 70 c4 67 3b 00 ed c2 aa -34 83 fc b7 8e 0c 1d c5 81 81 d0 86 43 df e4 57 -d4 81 b7 cc 31 d1 b3 ba 27 e5 5d 0c 57 25 c3 06 -61 - -# Coefficient: -06 d2 27 72 57 42 ef 03 46 2d 1c f6 12 67 4a 78 -83 1d 61 9d a3 d6 40 eb 7c 71 c8 7b 53 28 69 72 -73 c5 f7 51 e1 4d 7b 81 c1 2b 6d eb 44 75 1a 92 -95 cb 67 1e 81 48 4d ea a8 3b 4d f1 fd 37 e2 ff -3c - -# PKCS#1 v1.5 signing of 20 random messages -# ------------------------------------------------------- - -# PKCS#1 v1.5 Signature Example 12.1 - -# ----------------- - -# Message to be signed: -e4 b2 d6 0e 3b dd 27 81 6f - -# Signature: -13 fd 4a c1 ac 68 48 17 37 80 96 5a ff 5e 61 c5 -96 89 2b c1 47 76 0d 43 07 9b 5d 71 77 e4 23 d4 -86 f5 a7 3e 1a 16 b3 ce 9b 5e da c1 61 ea 6d 4f -6c 23 fc fc 3e 62 19 ca c5 56 06 7f fa ed 4a da -c0 a9 50 05 09 0b 89 84 4c 54 35 4d b2 2a af f9 -ee ff 9d a5 aa a5 49 04 25 e1 35 cc 0f 64 58 4c -7f 05 fe 33 6e 44 40 bb 86 92 86 d4 4a f1 57 88 -0e 3a 40 fb 06 72 5d 09 de b3 7f 1e bb 18 1c 8f -5c - -# PKCS#1 v1.5 Signature Example 12.2 - -# ----------------- - -# Message to be signed: -78 86 85 fc 58 05 d6 27 b1 3f 2f e7 fe 6f 7c 9a -b2 ca 49 44 ab f3 08 b8 6d 1a 0f 58 3d 17 b5 76 -02 43 9e 1f 2c 6e 0c 5b f7 81 70 50 13 38 b4 c4 -47 e9 19 7b 65 03 fb 73 eb ab f7 76 de fa e3 3b -dc dc e7 7d e7 9b 82 be 14 85 a8 aa 9b 82 09 37 -db f4 28 a2 05 50 96 6a 86 b6 2a 17 2e 6c fb dc -fe 0d 6f c6 7a 4d b6 22 52 fd af 85 f1 e6 bc 14 -f8 ab 1c 53 32 6a a6 a7 bc 5e ec 88 e0 b1 1d 48 -d2 b5 61 f2 26 06 50 10 2f f2 7b 57 b7 00 72 bc -c1 21 e3 5e 70 f3 78 0c 83 33 b5 bf 6b 08 fa 12 -08 26 0f 33 - -# Signature: -09 04 cc 11 ac 66 a9 83 7b 74 56 8b e2 50 e5 3a -e4 be f7 8d c6 7f fe e5 09 e5 d9 b4 72 58 3e aa -a5 6d 4c 9e e7 0f 6e 82 dc 99 8b 53 ef f1 27 2b -f0 1f 09 e5 26 2b 15 5a 6e 56 d1 50 40 03 e4 c8 -a4 6e 65 02 55 32 78 23 0d 6e 81 b7 29 18 43 ab -97 69 73 7f 3c 69 31 52 f1 7b f2 d8 bf c7 82 bd -b3 fa 0a ea df 0d 44 1e 1e 52 de a5 4b 75 cf 16 -5e 35 c3 82 d3 11 74 f6 67 9d 2f 21 b9 81 f4 13 -58 - -# PKCS#1 v1.5 Signature Example 12.3 - -# ----------------- - -# Message to be signed: -4e c7 39 3f dc 4b 90 af 8f ff ca f3 4e 84 5a 09 -65 6a ef 9d da 12 b0 34 2c 46 eb 04 91 74 aa 51 -1b 43 c9 4d 75 c0 e2 90 70 af f5 b4 14 23 a1 70 -d9 b3 e8 b2 12 24 aa bc 53 1d 88 88 6e 26 46 d6 -78 8f 1b aa d4 ef 4b 0b 4b de 4b 12 ce 90 52 08 -2e 2d dd 0e 3e 6c aa bb 0a 14 34 4b 0a 58 3f 40 -4c 1b 6a 3c 7b ca 8a 58 85 d5 f2 24 af 1f ca c3 -fa d9 37 0e 9b 29 74 e8 ca 62 e2 2a ce b9 - -# Signature: -21 a6 6a f6 27 ee 0d d0 5f e7 56 3c c1 d2 9c cf -6f 87 31 b4 1e 3d b3 95 97 89 3b a1 cf 37 5f 78 -17 88 fd f0 73 b0 b5 93 c7 6d f2 81 6e c6 de fc -22 42 21 ac 19 f5 be e4 4f c0 e5 d4 09 3d 34 68 -27 8f b4 2d 40 5a 07 04 46 53 22 da 4d 3a 7c a9 -c3 da 73 c3 d0 82 ae e5 67 b7 70 83 32 3e 75 bb -35 ed 77 e8 db 9c 01 b4 96 a0 4c c4 a8 99 df 35 -9d a4 a2 28 7c af ff e1 ed 63 cd de ad 87 6c 94 -07 - -# PKCS#1 v1.5 Signature Example 12.4 - -# ----------------- - -# Message to be signed: -90 77 60 db 32 96 9b 09 7d c1 24 ef 89 75 15 11 -a5 d2 30 59 6d 2f d8 a8 91 ff 00 f0 5f ba d4 5f -72 a4 5d 46 56 24 a3 ab 67 af db b9 e5 f9 e6 5b -63 e3 0c 2e 57 fe 7f 32 f3 99 01 10 33 dc 05 29 -c0 97 1f be 06 4f c5 ed b0 1f 84 cd 57 28 3f bb -bd 2a a0 29 44 11 0b 6b 53 4f 74 08 2f 56 be 34 -6c c3 43 bd 4d 0b 34 80 91 c0 05 c6 19 9a 7e 3d -56 88 52 47 b0 c1 6a 36 b2 35 b8 f5 d4 f0 0a 6c -6b b6 fe ed e8 8f cd 78 8d 75 ca cf f7 d9 56 87 -99 65 71 55 9c 05 79 6a 55 71 1d 77 46 bb 92 d8 -52 89 3b a9 06 75 f9 8b 0f 54 08 48 1b f1 54 3f -39 de 3d 0c 0c 1f 53 49 5b d2 12 dd cd c6 d0 e5 -7d 7a 3d be 24 20 8c b2 4e d4 1d e0 3a 5f 05 2a -9b 58 12 70 0a 5c e0 5c 02 00 d4 71 9c 55 54 4e -7f b2 94 d3 44 a4 f2 05 ef 9a 34 97 b5 67 54 7c -bd 1a 63 3e 2b 79 d3 34 90 95 - -# Signature: -0e c9 38 a0 d4 b2 a4 ed d2 78 d6 3d e7 61 c1 02 -e2 59 21 02 ee 05 db 1b 59 1e 0d 85 7b f6 66 84 -9e 74 cc 19 b7 e4 e9 cc 39 2d e5 39 f7 90 fc 68 -e3 b5 21 db 3a 1a 26 7e 5a 4e 12 19 75 2e 01 99 -e7 01 9a 24 85 54 c5 ba e3 11 2b ee a4 0c f3 e6 -4f 8a af 9b b1 e9 d1 c1 d8 83 3c 2b fa 31 b9 d5 -45 0f a2 49 29 7f e2 e4 6a b0 3e 99 b1 f9 c6 51 -d5 39 eb 53 ce 09 61 ce 60 23 c1 7d d7 38 3d d1 -2b - -# PKCS#1 v1.5 Signature Example 12.5 - -# ----------------- - -# Message to be signed: -bd a5 54 95 47 32 d1 d5 f3 94 75 55 c6 1f fa b8 -01 db cd c8 12 1d c6 81 91 27 c2 f2 2a 43 6d 20 -62 2d 1f 4a 44 7c 3a 77 b6 58 57 31 af c0 3e 77 -ba eb 70 9c 1b fb 90 6a 1a a1 94 9a b6 76 3a 15 -c7 da 5a 12 a8 f3 95 10 1e 64 6a 83 71 73 14 1f -2a 0c f5 36 02 4b 36 91 8c f9 db 95 b1 cc 40 5a -ef e6 3a 3a 93 bc 4a da 60 a0 f4 e0 72 9f 4d b8 -b7 6f d6 4e fc bc b6 6f 0e 4a af f3 - -# Signature: -07 26 2f e1 f3 d7 b7 79 32 cd b7 cd 96 ac 19 8b -93 03 eb 44 46 0f 52 98 e8 e5 2f e6 70 52 99 bb -d6 18 ef d0 b3 63 31 56 2f 20 b2 0e 86 6d 99 c2 -d0 4a 01 49 f5 64 dd f6 6b a3 19 f3 b8 48 25 39 -6e a8 b8 93 ba 5b 3e e5 e5 24 5c fe 6b 61 6e 30 -a9 00 bf 83 bb 76 3d 20 b3 30 37 01 ca be 94 33 -41 48 88 2a e4 ef 14 e6 d9 e6 c7 52 bc e2 53 bd -da 57 39 e3 3b dc 32 eb 08 28 28 c1 c3 99 c2 2f -ea - -# PKCS#1 v1.5 Signature Example 12.6 - -# ----------------- - -# Message to be signed: -51 76 ad 7c 99 be 4c db bb 5d 79 ba 5f 49 6c ad -9f 42 dc 25 d5 27 a5 d5 e8 e3 35 91 79 22 5e 6b -0e 43 66 6d 3d 82 ab 5b af 42 4c 85 c3 31 21 60 -6e b7 9a da 6b af ca b5 c1 e2 54 6c ab f6 a3 60 -03 84 05 ca 18 c0 08 36 67 - -# Signature: -06 27 23 8b 0b 93 e4 cf 98 57 13 d2 91 29 6c ed -e3 45 e8 8e 17 82 45 25 53 59 39 b3 f3 d5 ff 4e -bc 40 74 00 11 49 00 25 df ea ae e9 06 38 c5 39 -1e b4 4e 9f f3 70 45 7b 60 d5 de 80 c1 65 38 cb -38 60 55 95 85 ca f5 e3 33 2c 7b 1f dd 8f 45 fb -6e 35 57 f2 c7 a6 0d 09 9e 94 f8 e9 6b aa 1e 03 -19 9a c8 3c ec 8f 9c 16 bb 49 15 1a 88 72 cb fe -70 f0 02 cf 3b 53 b6 11 d6 cb b6 65 89 7c eb f5 -99 - -# PKCS#1 v1.5 Signature Example 12.7 - -# ----------------- - -# Message to be signed: -e1 74 71 93 64 f7 bd c8 6e 2f 0c 61 26 5b f8 05 -7d 64 9c ca - -# Signature: -09 77 19 54 fc 8a 1f ee e9 0f 60 c4 b8 a5 bb d4 -62 c6 34 37 9a b3 da 19 ff eb a6 e0 31 b4 24 3a -83 50 9c ee ed 6e 01 2a 91 63 c6 14 5c f7 05 02 -a9 fb 0c 21 db 31 fa d5 ad 14 69 5d e0 02 62 e4 -e5 67 09 5e 16 11 0c 6e 65 d6 bc b9 cc 02 e9 19 -f9 0d 19 e7 30 7f 44 34 50 3f 9f e0 2c 12 c1 d3 -f5 0c c1 60 08 6f e4 60 29 8c 88 12 25 bf f2 e9 -e3 13 da 38 44 44 be c7 2a 67 ac 34 44 67 e8 2b -66 - -# PKCS#1 v1.5 Signature Example 12.8 - -# ----------------- - -# Message to be signed: -98 cb c9 1f d4 9b 50 7c 88 7e 97 c3 cf a9 b5 9c -26 00 1f ca c1 64 87 f6 00 4f 0b 68 74 54 63 20 -02 d5 49 b5 46 1f f1 53 0c 0f 5f c0 9a ac c4 6a -da da 7d c9 d7 b3 e2 0f ed fe ec d8 f2 f1 68 41 -77 32 68 54 2e 86 43 1c 7f b4 d1 63 f3 1e 8e 31 -72 20 34 26 bc 0d 88 a2 3b 13 76 34 bf c7 14 01 -72 20 fb fb ec 88 8e 01 e3 ef f7 bb bd f9 3f 08 -3b 88 fd d6 40 7d 98 9b cc 5e cb 15 3c 9c ee 34 -10 fd 00 6b cd f0 7a f2 28 79 0f d5 e0 4f 5c 0a -1b 63 64 8d 48 60 9b f1 63 c6 fd 65 60 20 75 7c -3c 06 38 e1 b8 2d 75 e2 b4 b9 08 b7 e0 a3 c8 d7 -26 6b 80 1f 60 fc 2b 4f 31 7e bb 8b f2 2a b9 e1 -cb 7b 77 84 39 5b d7 b4 24 32 9e 86 1d 47 86 61 -f6 dc 12 98 51 5f 48 56 4a 3f f9 97 35 bb 90 03 -38 75 a2 5b e8 b7 24 f3 - -# Signature: -0f 2d 7a 5e ab 83 58 45 03 d9 4e bf 7d de 9e ed -49 41 10 be 94 ed 64 8a f0 cf 6e 89 1b 06 2d 2c -9d ef 95 87 55 b1 a3 08 48 8d 16 70 74 29 51 ec -00 60 54 5d 2e c4 3f e8 4a ec 89 01 ad f4 fe 8d -67 aa e5 7a 31 9f 49 1c 85 c2 1c d7 f9 c5 99 81 -3c eb 9d f8 47 78 ad c8 2a 33 c4 e7 67 4d 7f be -13 48 dc 20 75 51 10 4f 54 42 ac d6 84 86 9a c2 -2c ac 51 6c c9 88 7f d1 d0 21 ef cc 54 ab da f2 -b6 - -# PKCS#1 v1.5 Signature Example 12.9 - -# ----------------- - -# Message to be signed: -3e ed 6b f1 16 cb 31 e0 fd d4 c5 c9 33 58 ba b6 -8f bf a8 b5 c5 15 bc ab f9 05 1c df 95 a2 43 e5 -ee 68 15 15 4e eb 4a c1 0f 52 31 d0 49 38 13 e2 -81 49 e9 68 2b b1 c8 b7 7a 6e 13 60 b2 b2 c0 f9 -c3 16 1e 41 7e f6 cb 3d 9a bb dc 74 2c e0 25 fa -fc d5 38 c7 7c 4d 07 16 49 1d a5 4b cd f1 67 b4 -7a 61 a0 35 27 c9 6e 4b 42 bf dc 98 5b 17 87 81 -b6 92 0f 60 f1 1c d5 fa 76 66 3f 56 f3 19 f4 50 -cc 2a 7f 13 bc ce 59 e4 1c b6 66 - -# Signature: -07 67 3f a6 83 e0 98 bf a2 b9 55 b6 c3 4e 9c e8 -ec cc 5a b0 ab 4c 2c f7 9b 9b e1 e6 64 42 5a 7c -17 7a 47 d5 32 0c d5 70 86 f9 51 89 18 45 09 4b -1f bb c9 de e5 f9 b5 56 df 3e 61 e7 e6 69 73 d6 -3e 69 c9 da 17 29 6f e6 15 d6 33 c8 62 18 dc a3 -99 25 8c 04 f8 05 bd 04 d9 dc 97 a2 9f 39 d6 06 -ff 8e 9c 0a 13 71 aa ee c0 03 ea 27 48 95 ff 7b -a1 50 2b 28 f8 17 63 02 c2 4e ec e5 b5 28 d6 71 -00 - -# PKCS#1 v1.5 Signature Example 12.10 - -# ----------------- - -# Message to be signed: -08 4e c2 87 86 5e 8f e6 88 04 72 37 20 97 ad 5b -96 4c 40 a9 35 ee d1 be a5 1a b1 b5 bc 75 c8 46 -bb cb d9 54 88 e9 ec c3 63 cf 07 3a 90 b2 0b e8 -b6 79 36 46 22 f3 45 e1 22 d0 56 6a cd 34 a4 ae -11 24 45 25 a3 8f 47 dc 1f 92 b1 7f 89 ed e0 6d -83 6b 44 26 ec bb ea 79 33 ac 0e 84 7e 55 10 33 -b5 f7 ea 4e af 1f 63 f3 47 9d b7 ea f8 02 c9 96 -de 92 33 86 cd 15 b1 22 de 5a 23 98 d3 f3 97 02 -c3 e9 06 5c 32 73 95 b9 a9 95 fa 25 4d e9 c7 ad -b4 51 - -# Signature: -13 a7 f0 04 c0 a8 8d 51 3e 2f 1a ae ab 41 7f a0 -b2 70 2f b9 3b 82 87 20 cc d8 00 cb b0 af 5a 19 -65 72 5b 6e e0 58 71 17 cb cb 81 a4 63 18 52 1c -95 0d d8 46 9b d8 55 73 f5 d2 9d 86 53 03 eb ac -45 c7 f6 03 1c 6f 93 78 eb 12 b4 2f 05 09 44 31 -6f 0b 93 db 89 9b ec 93 7d 5d 0f 58 ed 40 70 04 -01 cd 32 65 a6 a4 4b 09 bb 11 a4 38 ee a0 77 15 -ef e4 2d e4 e8 80 8f 88 24 02 61 14 8e 8d e2 93 -ed - -# PKCS#1 v1.5 Signature Example 12.11 - -# ----------------- - -# Message to be signed: -61 07 00 00 7c 3c 6c b0 96 c9 94 d6 5d 95 c9 b9 -a1 47 c3 46 14 cd 72 2f 29 eb c5 e0 93 78 6f 79 -09 48 02 14 1a 31 08 d2 ec 8a 87 4c 53 18 7e b0 -d6 ee 2a 85 91 38 cf bc 29 22 15 06 d0 bd 89 b0 -f3 db ef 50 6b d1 ba 40 36 b0 f1 ec 00 73 32 70 -60 75 2b 42 8c fa 12 db 28 0c 53 aa e5 f3 e3 57 -0e 91 8c b0 9b 90 e9 84 7f 1f 5c a4 48 7a 6b f3 -ed ad 42 5f 78 40 7e cb e3 f9 bc 7c ab 00 75 66 -58 79 43 1c 6c c3 9e 0c 7e 67 00 60 67 41 8b ee -8d 0d b5 e7 db e1 2d a7 16 ca - -# Signature: -1e be af 85 d1 8f 37 84 0e 8a 3e af 07 d6 9f 52 -4d 88 3f a4 2f 29 1e 20 07 db 59 5a d6 93 0e 8d -5a 75 b4 0b b9 5b eb 72 d7 ce d0 38 17 97 47 e9 -66 1d 08 38 40 d5 87 dc df 21 c3 ad c7 d4 7a 01 -f6 ec a9 c7 bf 9e 2a 98 87 75 1b 36 d1 ab af 25 -a3 13 fc 29 d7 f8 34 d2 a2 48 29 85 57 5e 1b e2 -4b c4 ef 43 a5 7e f4 b0 a6 83 69 93 e1 1b 67 07 -85 04 e3 b7 9c 72 17 75 f5 b9 9b fa cc c4 8a 8c -34 - -# PKCS#1 v1.5 Signature Example 12.12 - -# ----------------- - -# Message to be signed: -da 31 f9 be 26 09 - -# Signature: -1d 2b ba fc a4 1c a0 6c 4b 81 1c b9 d8 36 96 87 -16 6d 14 d9 f9 2c 5b 98 fc 7c 77 2f 2d 75 d3 5a -5f 9a cc e5 9b 99 ef b2 dc b9 7d cc bb c8 6d 7f -d6 b4 ae 8b ea b1 e9 81 e6 c7 74 5a 1b fb 4c 1f -44 a4 72 b2 ad 07 d4 1c c1 75 15 b7 b1 4a 49 99 -0b 24 34 42 ff 2c 8f e5 05 b1 84 9f a9 91 ca cf -68 09 a2 0e 55 f2 af 77 98 87 0d 65 77 6f 1f 9e -e4 87 97 e3 13 aa 66 a4 7e 69 5f 3e 73 1b 2c 7f -30 - -# PKCS#1 v1.5 Signature Example 12.13 - -# ----------------- - -# Message to be signed: -f9 8b e5 2d 9a 5e 55 ad 92 - -# Signature: -29 2e a3 4d 3e 61 18 bf 8c d0 54 e2 15 17 e8 63 -ce 7c b7 dd 72 73 30 8f 7e cf ea cf 9b 45 75 83 -d9 b9 b9 7c 54 ab f7 4e 5a 5c a3 6a 87 06 7e 47 -d6 7a a0 47 a1 c2 ed 7a 23 d0 55 ab 4f 09 4a 83 -c4 39 ef 8d d2 d0 20 35 ef 05 62 d9 67 31 3d 81 -10 2f c6 8b 74 52 5b b0 e1 d7 96 2e b2 75 8e c5 -e5 ae ab 65 a9 3d 2e c8 e6 55 40 5a f8 8c 00 fa -35 f5 9d e9 d0 cd 80 45 ab d3 71 73 b9 fc 6c 51 -d8 - -# PKCS#1 v1.5 Signature Example 12.14 - -# ----------------- - -# Message to be signed: -f4 38 ef f8 4c 37 3f c1 27 44 a3 84 15 82 43 dd -97 f4 36 5e 87 d7 1e 8b 56 b2 97 91 df 44 ad f3 -49 e7 62 60 04 a2 c5 33 35 ec 63 52 cc e2 ed d9 -63 94 7f d2 39 38 93 c2 48 ba 1b 84 08 42 ca 77 -6c 31 72 9f 70 7a f5 04 11 00 1c 28 7f ba 8f e7 -25 02 32 0c 44 5b b1 43 fb 7b f5 39 4e c1 fb 2c -d5 01 59 24 32 15 40 91 de 5a 23 65 d6 78 f3 57 -82 fe a8 b4 7f 64 d6 09 19 f0 f1 d5 af a7 62 6c -40 d1 6c ec 19 bf e0 25 d1 16 f4 2d 22 e2 0a db -56 37 5a d7 70 89 f9 a9 33 81 fd 78 b7 b1 51 1c -b4 e4 98 4d 2d dc 7c 9d 75 b3 10 f2 95 42 25 60 -d6 6e 36 02 a8 71 20 96 16 13 1a 84 71 43 dd 07 -8f 23 58 7d b5 02 dd a0 3e 18 60 64 82 db be 01 -4e a0 83 b7 ec 16 1b - -# Signature: -0e af eb f1 5d 84 ee 4a 13 f1 a8 2b 84 05 11 86 -41 e2 2e 51 da 94 d8 58 87 fc 4a 3b 11 f0 32 49 -cc 39 a0 37 45 01 07 1c 7e ef 4a ba a1 14 08 d0 -2f ae 17 86 de a3 75 88 47 9c 90 d6 27 69 85 91 -c3 ba e1 fe fd 6e 8c 40 e3 ff 4b 9f 60 61 e0 6c -12 fd d2 1c 7f 45 dd c5 b7 8d 1c bc 41 c1 57 06 -fa 20 ba 92 f9 9f 58 b2 2b e2 76 75 be e0 81 a0 -60 67 ee d1 58 f8 e2 0b f0 4a 6e 96 8f 71 9a 32 -34 - -# PKCS#1 v1.5 Signature Example 12.15 - -# ----------------- - -# Message to be signed: -fa 1c 0f 7b 10 15 a8 95 b1 a5 65 f3 29 96 b2 b8 -cc fd 86 4b 95 54 4d bb 9c f4 f6 e1 a8 41 de 92 -06 d5 57 26 fd f7 ee a2 bf 33 6a 82 9f d2 bc 12 -09 bd 21 5a ab b9 77 d2 3a 08 3f 10 ae 69 db 43 -7c a3 2d 7b fe 4c 88 25 b9 34 88 f0 1a fd f7 84 -45 8c ef 5c dd 8d ff dd 17 - -# Signature: -25 e2 2e 6d f7 fc 6b d4 e0 f6 1e bc 8d a0 63 fe -47 8a 3e d7 4d 68 f7 76 34 35 e0 e3 74 f6 52 62 -a5 d7 61 2e 86 78 59 61 22 c0 e5 b8 fa 0c 0b 12 -81 2b a9 65 3a 0f 27 38 83 c6 26 4c 6d fb 74 bb -34 40 5d 2a 04 30 43 fb b0 ab f2 af 7a 12 3d 2d -db f1 69 92 e0 9b aa 37 d7 31 d7 2e f1 99 62 65 -8a 8f b0 10 a1 0f 7d 55 62 ad 54 33 47 90 01 af -36 d3 d3 26 ea db 2e 9a be c7 b5 55 70 9d 5d 47 -e9 - -# PKCS#1 v1.5 Signature Example 12.16 - -# ----------------- - -# Message to be signed: -82 8e be 2f 51 e5 88 29 cf a6 15 26 dd ed 7e 1f -1b a3 11 db f1 06 4c 08 ac 0b b5 d6 71 6e ab 29 -8a 23 d6 3b 79 3f fd 9d 9c ea 60 22 95 98 82 3f -28 2f 10 7b 6e e8 8a 53 fd 93 e7 dd d4 8a 73 1a -21 09 ff ed c8 9a eb a2 c0 f1 6b cb 14 0a 0a 89 -dc 57 ee 8b 5d 00 0a 21 42 17 5b c7 07 bb 40 9a -ae 3a 03 9c 66 3d 01 9a 0b d9 13 c1 3f 7f f6 f6 -b9 1e 90 5a 58 9d 38 b1 50 48 5d 89 09 2d 18 a3 -a7 62 25 27 65 52 5d 98 45 66 42 5b 05 77 0d e9 -a8 be f4 43 ff 5f c1 48 33 af a4 cc ec e5 42 d4 -f2 ce f1 e7 96 f5 9f b3 a4 bf 37 cb 67 7a e4 22 -36 66 c8 2b 31 a1 6a 6c d7 01 a0 49 3c d9 96 86 -6c 84 bf cd df 85 2b 19 ff c8 9e 93 61 79 fc e8 -b9 9e 72 fd 4a fc 28 b5 11 73 af bb 25 c4 c7 - -# Signature: -16 17 55 9e 43 ba 18 2e 95 34 86 43 6f 15 b6 02 -83 1e 42 ee d2 03 c2 69 f6 53 bf 63 9c 2b 76 0b -0d 49 fb 53 2c a8 ad 01 e7 b4 af 83 72 92 55 db -55 9b cf 55 fa b3 65 9c eb ec d5 37 69 4f ef 2d -ef 9c 9e 76 2d 05 d2 32 1e d6 88 c3 f7 e2 c0 57 -33 ab 4f a8 1b 08 cf 79 fa cb 75 c3 20 0b 7a 48 -3a f0 8c b1 83 c5 09 27 cc 61 69 e4 32 f7 fc 9b -11 78 0d bf 4d 3b 72 d2 d0 b8 55 93 d8 b5 b0 18 -2a - -# PKCS#1 v1.5 Signature Example 12.17 - -# ----------------- - -# Message to be signed: -bb 4a 6e cc bd d6 de 0a c5 c3 b7 f9 97 98 10 4a -58 69 c1 cf 1a 1f ac 7f 85 9f e9 51 49 29 7e b7 -79 11 00 59 e2 69 f1 27 56 f0 8a 54 8b 66 af - -# Signature: -27 7b ae 63 e6 e3 25 3a 0e 20 4f 4e 6c 9f e8 4b -04 0b 86 4f 21 ed d4 42 6d 82 be 8f 1b 91 1b 0b -d2 81 cf 11 49 53 d4 02 09 da 2e 9a ae 13 3b cd -18 55 ef 0a 99 69 3a 94 43 c9 3f 6d d2 75 f0 58 -fd 1b b6 95 32 b6 4a 1d d7 e1 d0 e7 80 d7 52 04 -fa 8c 61 c2 eb 5d e8 82 72 cb 93 ae f0 80 f7 02 -bb 78 88 94 25 a5 f1 66 f6 3b 5b 1a 31 ec 5c 1c -26 a5 99 fa fe 58 77 42 98 b9 7d b3 14 fc 81 d0 -92 - -# PKCS#1 v1.5 Signature Example 12.18 - -# ----------------- - -# Message to be signed: -f1 d1 11 ad 08 e0 38 ca 3a b4 e5 2e 5e ab 71 01 -87 6c a9 be 62 6a 13 59 17 f4 5b 1f 9d 1b 32 ef -e4 ff 86 7a b8 a3 05 f9 49 c0 04 8b 25 f5 46 22 -61 b1 a3 49 3b 81 90 21 0f 5c fa 6b f7 e5 c3 00 -54 98 de ec c1 e1 c5 04 f3 a3 49 98 be 6a d6 ac -00 40 51 c4 e0 a3 db 2c 22 eb 5e 14 16 55 28 df -78 12 a2 0d 5c 7f 05 b9 40 ca 13 e9 38 3a e0 0d -6c d4 d0 f4 ae 3d ad 04 7a b9 c4 17 8d b6 6d 3b -80 96 0c af 0a 92 4d c9 4e b8 e0 77 09 bc db 34 -9e 90 fa 2e 10 c5 d5 26 d2 21 9c a7 6f 88 01 fd -c6 61 bd ca 6a 93 da 48 d0 45 ac 37 51 34 cc d6 -ff 7c 52 fd 15 c7 cd 3d 1f 31 af e5 04 bc e7 c0 -33 3a 89 79 e3 ce cc 53 c4 ea dd 7d 95 d4 6f a3 -b2 a9 f0 06 10 0d 6b fc 0e d5 ee 77 69 4f f1 a2 -4e 16 a5 44 de 71 46 52 90 dd dd 18 9f 01 67 03 -59 f8 c6 b5 d4 c6 b6 b9 f5 c5 7a a5 a3 8f 07 99 - -# Signature: -0d e9 42 31 c0 6a b1 87 b0 0d da 2b 34 e2 b4 cb -ac 41 f6 08 c4 8c 72 27 a6 28 2a 17 9e 58 c3 2e -f5 dd c9 76 4f a2 df c3 fb e0 21 dd b4 81 56 a6 -37 3c d6 9b 85 d3 64 d8 9b 5a 32 fa bb 2d 46 5d -05 62 d4 a1 dd 6f ca 64 78 0b 06 2a 94 71 24 a7 -fc 0b 82 e4 fe d1 2b 8b 4f 72 6a 0c 85 39 c6 cd -e2 1a f6 55 ac c8 de 1e 7b a9 d6 7b 87 b8 e7 77 -d4 8a cd 86 8a 80 db 15 31 4f 35 55 60 10 35 77 -eb - -# PKCS#1 v1.5 Signature Example 12.19 - -# ----------------- - -# Message to be signed: -9c 4e cc 4b 24 44 a4 01 bf b6 f4 b7 24 49 23 a5 -ad 33 86 c3 b8 41 67 8c f5 e6 44 7b 8a 3a 07 59 -86 c3 3f d0 01 b8 43 72 4d dd c4 21 2f f4 5a b3 -fe ca a9 0a 16 f6 b5 59 2c 51 5c c4 ee 54 ae a4 -59 34 32 16 70 96 67 8f 93 41 59 85 6d 14 c4 32 -e7 d6 d2 8d 71 b2 68 7f 54 ed 71 9e 5c 20 11 00 -68 8e 85 f2 0e 79 a9 ee 8a a4 b6 14 31 34 3d 1e -99 c2 14 35 c6 1e 8b c1 04 f2 ba d5 29 60 fc ee -e6 7b 85 03 3d 3a ee fa e4 13 ce 29 70 1e ff cb -02 b4 84 a0 31 e2 f3 19 ef 7e d0 d6 e6 9b 29 16 -ee b3 8c 4f 19 42 ba 23 c2 a1 79 0c e3 fe 09 d0 -1b 9b 9f e6 db a8 dc 21 0e aa 8f e7 3c a7 6f 1b -5b - -# Signature: -18 53 c2 1a 4a 18 54 7d 86 7b 3c ed 02 da f0 b2 -2c e8 d4 d5 af 2b 8e f5 f7 c8 fd 38 5b 81 53 64 -8d 81 83 1d 6a cb 5d a8 30 f6 77 40 25 9f fb 33 -9f 7b 90 af 48 83 81 9c 47 15 e0 8c 28 99 d4 c7 -24 6e 07 e5 bc 6e f3 cf d9 a0 4d a0 6c 43 e9 5c -77 2b e2 21 cf aa f6 95 4e f9 33 31 e5 95 ff 48 -92 1f 05 fc e8 fa 0d 42 9e 0c 99 56 2a 9c 2f 68 -eb f3 2c f1 c6 c6 bb 8b 27 4a 2e 42 d6 71 59 12 -ff - -# PKCS#1 v1.5 Signature Example 12.20 - -# ----------------- - -# Message to be signed: -c3 81 e6 03 99 86 51 66 d2 ba a0 31 45 26 83 34 -18 40 39 e0 53 35 a3 00 c2 80 4e 2b fe f5 a7 d1 -4c 44 3d 65 38 e1 6b df 9d a7 ad 1f ea 63 4e bf -e1 13 bc 82 1e 79 a4 49 b2 eb 2f 57 c2 1f ba 35 -ff cc 6a 7e 52 55 72 27 7e 8f 55 37 c7 b5 b9 79 -4d ef b3 9a ab 06 07 85 d1 99 40 02 dc f8 07 01 -2e 1d 17 91 da 94 3b 2b 75 9c 36 6b b4 24 e4 2c -9c 20 43 ce 78 8a 25 fb fe bb 87 e7 4c b0 20 b1 -1e 8e af 16 18 84 d6 67 2b be 9c 09 fb b3 b8 af -a0 61 - -# Signature: -19 90 69 57 37 53 01 8f 33 59 2a f1 5c 1d 31 31 -bf 5d 8a c4 f6 4c f6 14 d3 a0 1b f3 72 df 00 2e -b5 b5 fc 8f 82 ba 13 7f 83 dc 14 2e de 38 c5 81 -80 e7 bd a6 9c 4f 1b c7 bf 96 ec d3 fa 79 bc cb -dd b7 d9 2e 4f d8 64 c5 fa 93 3a 4d fc 60 0e 10 -83 00 8a 38 6f 4d 02 2c 20 24 ff 7e 0b 37 22 ea -fe a0 5a 1e 02 c7 a6 3e eb 40 f4 f4 c4 f6 60 c3 -24 72 a0 a7 89 23 e3 86 3a 99 44 5e 7c fe 27 00 -60 - -# ============================================= - -# Example 13: A 1031-bit RSA key pair -# ----------------------------------- - - -# Public key -# ---------- - -# Modulus: -70 e9 23 a5 a0 cd 8e cd f9 9b be 93 d7 d0 28 82 -95 5d 91 b6 ef e3 ce c8 6c 93 d2 1c 0a c3 01 b8 -29 3e 51 43 5b 87 8b c6 b3 4b ed 41 11 59 0e 76 -46 76 58 8b 11 6c 2a 36 a4 c7 7e d9 c9 0a 13 c1 -4d 23 e1 99 47 87 fc db 8f 5c 97 41 0f ca d4 04 -5b 85 85 70 2c ce 29 da 11 f9 7e 79 a9 7c 2e 5f -6a 5f c0 bb 8c e7 6d 15 54 a8 bc 47 96 17 20 d3 -64 05 0b f2 74 19 bf f1 68 c0 a7 ec c8 73 4c b5 -a5 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -70 e9 23 a5 a0 cd 8e cd f9 9b be 93 d7 d0 28 82 -95 5d 91 b6 ef e3 ce c8 6c 93 d2 1c 0a c3 01 b8 -29 3e 51 43 5b 87 8b c6 b3 4b ed 41 11 59 0e 76 -46 76 58 8b 11 6c 2a 36 a4 c7 7e d9 c9 0a 13 c1 -4d 23 e1 99 47 87 fc db 8f 5c 97 41 0f ca d4 04 -5b 85 85 70 2c ce 29 da 11 f9 7e 79 a9 7c 2e 5f -6a 5f c0 bb 8c e7 6d 15 54 a8 bc 47 96 17 20 d3 -64 05 0b f2 74 19 bf f1 68 c0 a7 ec c8 73 4c b5 -a5 - -# Public exponent: -01 00 01 - -# Exponent: -02 9e 10 f6 bb b7 d0 2d eb b1 a5 d5 19 0d 69 06 -ff ed eb 9d 15 4a 0f 66 db 87 80 b9 28 31 b5 96 -3e 94 84 7f 3e 7d b1 aa 91 48 fb 0e c5 57 6e 6b -a4 fe 04 d6 f2 78 32 b1 52 18 12 d3 7b 22 d9 ea -e2 80 08 e0 92 c6 7e 72 32 42 67 e1 b1 ee 45 43 -55 74 1d 8d e1 d2 a6 a0 50 74 bb 1c e5 81 8b 41 -bd 19 dc 6b 58 c8 93 7d 8a d6 40 d7 04 3f a1 1f -46 8d 6c cb ec 4a de 52 0a 9e 15 9d 60 5d 09 28 -29 - -# Prime 1: -0a b4 64 fd 6f e3 3c 45 9a b2 dc ce 5f 78 a4 d7 -4f 92 b9 97 d4 bf 54 2e 2d 85 4e 76 2c 85 86 fc -43 57 cc 58 cb 33 36 33 b0 95 a5 ee 04 a0 32 48 -53 64 d7 0f 67 a3 aa 04 85 4c 7a 87 a6 9c f4 c2 -ad - -# Prime 2: -0a 8c 3c c5 04 13 40 f4 32 fe 0a 78 73 13 57 79 -16 fe 76 c0 39 f9 71 75 9e c5 0e d6 c5 b9 a7 36 -9b 68 96 9e cb 52 59 fe 9c 50 d0 75 9b f8 b3 aa -c1 a5 d5 b5 28 8d 67 89 e7 18 fa 37 ef 42 39 95 -d9 - -# Prime exponent 1: -bb 29 5a 95 d5 b3 3c 1d c0 b1 8b f6 c1 4a a0 d9 -f2 6f 72 8b 39 36 0a a1 59 45 6e 94 c3 d9 e0 48 -c9 2a 4f b6 31 1d 36 92 8c e5 f4 47 a4 99 4a 8f -47 87 d8 a9 7f 68 11 3e f9 66 34 f5 90 2a b7 51 - -# Prime exponent 2: -02 fa 11 2c 89 39 e5 db 05 89 2c eb 51 8e e3 e1 -08 dc 48 27 78 35 2e 10 43 fe d9 71 43 dc 61 94 -c7 c7 7c ba d4 27 29 be f1 de dc f6 54 4e 9c 66 -54 c0 b8 cf a7 e2 40 96 6a e2 61 bb e7 8a 89 36 -01 - -# Coefficient: -a8 8b f3 ff e9 3f 40 4e 06 82 1c 97 71 ea e6 08 -15 71 2d 6f 94 52 71 f6 f3 6f 03 69 d9 66 c9 20 -c7 f8 cb c7 84 25 ac bb 9c e0 fa 1a 03 22 f5 0c -97 b8 11 5b d1 51 91 f2 24 b5 68 d1 d6 ec a6 db - -# PKCS#1 v1.5 signing of 20 random messages -# ------------------------------------------------------- - -# PKCS#1 v1.5 Signature Example 13.1 - -# ----------------- - -# Message to be signed: -b5 e8 6c 8b a3 98 5a a5 54 1d f9 5e 51 3c ff 67 -61 2e af 2e 16 68 85 76 f7 d6 73 f6 f1 89 1f b7 -5c 9d d2 cd - -# Signature: -6b 42 fd 51 63 09 19 7f 8a f3 c7 3e 39 62 4d 8e -ba be cd a3 ec 3c e6 57 b1 11 7f 43 e9 83 87 7a -1b a1 aa f8 e9 5c c3 99 91 d9 2e 35 e2 db 1e 41 -30 90 14 3d 16 46 71 98 b9 b9 a9 90 d7 74 c2 7a -d3 bb b4 35 2d 3f 07 5d 61 73 2c 6b 58 ec 0f 66 -e4 92 a3 f7 ac 4b bc f0 12 ed 6b 40 1f eb 4f f3 -95 cb 8b 21 8a 81 d6 17 31 ee ce 37 6f 68 8e 66 -ae a6 98 b4 a8 86 2f 58 c9 1d 87 60 85 49 6f d0 -14 - -# PKCS#1 v1.5 Signature Example 13.2 - -# ----------------- - -# Message to be signed: -95 46 34 6c f2 21 94 c7 87 88 81 70 a4 82 f7 f4 -92 17 c3 94 0d c6 21 0c e3 9e 45 50 a3 9b 45 28 -22 41 9a ea c2 4b ec 19 8b b3 59 d0 8b e8 19 6d -f2 e7 57 76 61 96 c9 58 e2 b1 59 c7 4c 1c 30 23 -c2 db cc e9 ed 5d 0e f3 fb 51 45 0b ff 64 45 db -26 5e 60 6e 19 4b ee 06 4c a5 b3 21 d7 e1 55 14 -23 0c 2b 3b 55 d5 da 4c d0 40 52 2f 7b b8 6a 96 -2b 81 3f 9d a3 9e 51 38 9b c6 4f 56 e4 47 b2 a2 -bf 81 9d 7a 80 09 4e 2b 8d e2 7f 10 4b b6 eb 2f -2f b4 3a f1 d0 1e ad ca 23 a1 96 ba 12 5b 6a 78 -57 99 74 c0 ee c8 a5 49 67 71 f6 7d bd 50 69 f3 -36 e4 ef 1f 40 47 42 df c6 9c e3 25 aa 64 9f 8a -63 31 cf 40 35 55 e1 3f 08 10 a7 63 50 a7 e1 8d -29 92 fa b4 8f 39 7f 3b 93 c5 bd 5a 6f e1 d2 c4 -61 8b a1 f5 9f 00 2d c2 57 ec 39 ee 2f 87 62 98 -da 90 f7 44 0a d4 c6 c9 3f c1 14 df 05 - -# Signature: -67 e4 14 99 3f 98 7a 22 64 3d d0 39 e7 f9 fe 1c -ae 74 4a 7a e4 1d 4c 04 4f a4 ed 8d c9 e3 40 ce -bb 1e 2a fb 19 8e 84 7a ef 4b c0 61 fd 80 0d 81 -d4 d3 67 b0 fc 2f 73 09 33 c1 9b 88 d4 dd f0 5e -d9 8a 58 56 de 5e b4 5b 11 6b 7d 24 fe b4 56 77 -84 9d ab 76 e9 e0 cc b4 5b a6 b6 f6 14 1f 37 bb -ad 7c 19 1c 37 77 11 3b c7 38 8e 4e 46 44 ec a9 -47 03 a7 2b dd cc 6f 50 cf 98 0e 3f 6d e3 9d 73 -12 - -# PKCS#1 v1.5 Signature Example 13.3 - -# ----------------- - -# Message to be signed: -56 52 b4 c5 75 20 b2 55 fb 96 f7 0a 30 ab 92 ee -c1 93 99 56 b6 a9 43 c8 3e d0 98 6e 2e 6e e4 ef -bf 8a 52 28 78 67 28 12 03 a7 a6 d1 d8 86 b7 00 -59 52 b4 3b 77 85 44 ed a8 98 e0 df 2f a0 6f 68 -38 03 18 f1 4a 53 fe 55 d7 2f 8c fa 6a f2 1d 93 -bb fc 20 d3 58 c2 08 c5 62 d7 39 be 00 01 ce 07 -fd 8c d2 f4 6c 3b 44 c8 36 51 88 09 b7 6f 3a 70 -cf 69 26 be 06 9c 35 75 d5 - -# Signature: -01 64 11 a2 31 a7 38 94 4b 3e 44 f7 88 5c f8 1a -ca b7 32 d1 73 6d e3 4c 56 cf 40 f9 9a 6c e4 00 -70 a2 0a a9 4c 48 78 44 a9 3c ef 28 7a 58 bc 0e -a1 81 b2 cf 27 d9 14 f2 93 b9 29 77 9d 39 03 6c -4e 5a ae d3 5e ee 8a 7f d5 0e fd 09 6c 91 a8 f7 -2c 3c 14 1c 57 6c 8d 10 b6 36 fc 4d dc 1e 67 14 -f1 7f fc ce 10 6d 22 1b 4f d7 d6 fe 1e 7c bd 3f -3b 08 f5 54 6b 44 d1 fe b7 18 fb c1 33 70 c7 fa -2c - -# PKCS#1 v1.5 Signature Example 13.4 - -# ----------------- - -# Message to be signed: -6d 57 f0 79 a3 e8 ad cb 47 cf 2e 3c a9 76 e0 3b -09 c7 7d 1d 9d 9d 84 84 35 7e 91 23 09 e8 f4 a8 -3c b5 0c b6 a7 38 8c 41 4a ec 84 46 71 ff 81 06 -51 e8 28 10 3a 1f 6a 19 9b e2 60 f7 46 00 02 8c -6a 7b 7b b9 41 6c e7 b6 35 0a 3a 68 05 62 0c f5 -e6 b0 09 5d fa 22 b5 46 01 f6 19 af d1 0d a2 03 -d2 81 90 cf 9b 0d b5 98 6d 29 30 33 69 1e c5 bb -ba 6d 73 ea 32 47 2e fa 3f 16 0f d2 b1 b5 e4 3b -0b fa d3 16 77 30 5f ef 46 72 44 11 4e e1 0f 5c -b2 d6 7b 47 83 23 a7 11 04 1e 29 4c 46 b2 ed 39 -cc de 07 9c 87 7f e7 5c b8 75 14 4a c3 1e b0 31 -a7 38 a4 ce fe f9 1f 01 7b a7 15 23 f5 12 48 18 -cf 48 b9 72 bc 47 c8 f2 ed 35 6f 5b f6 91 fd 94 -67 0b b2 - -# Signature: -31 5c e4 17 d0 bb d7 3e 7c 43 56 79 7e 73 ed 7a -bf e9 fc ff f1 a5 34 28 99 a7 d1 1f b0 d0 54 2b -fc ab 66 de 2e 4e c0 7c 7d c2 be 7d 79 72 90 a3 -0d b8 c4 07 dd 16 37 65 88 a6 dc c1 a2 07 bf 7f -f3 11 54 0f aa 9d d6 f1 9a 73 ab 25 a7 49 6e 68 -2f a8 a7 05 40 81 07 6c 1a 02 15 7b e6 3e 7f 64 -5d e8 2d f7 c6 15 50 3f a8 3b 4e db a2 05 81 81 -2e 09 7f 65 05 6e d4 17 f6 f2 48 03 53 0c f8 18 -58 - -# PKCS#1 v1.5 Signature Example 13.5 - -# ----------------- - -# Message to be signed: -bb 75 44 6f 78 78 23 dd a2 42 2b 1a dc 7d 7f ef -d0 6a 6e 9a f5 c0 49 01 ac 5b 99 91 3a d6 29 8c -9d 1a 33 22 e8 b2 17 e4 e0 99 4c 42 20 42 80 d4 -04 d0 1e ce b5 ec 53 fb 86 f7 61 a3 96 b2 3a e1 -9d 46 79 05 a0 fe 80 50 b8 95 d8 ba 37 46 68 5c -47 43 9f 90 c3 66 9c 70 ff b8 19 94 56 5c 4d f2 -a3 1e b2 a4 52 bc 3c b3 12 b8 14 7c ec 19 10 32 -f3 8f 3b 3d 89 d7 58 2b f1 8e 7b 72 75 fb 4f 16 -ee 89 56 7e 2a 56 bc 73 b3 e2 e1 09 f9 94 0e bd -10 b9 df 2b 88 ac cf 0b a1 8e 5b 34 95 20 d2 c7 -f5 a3 1b d5 22 6d 12 ec 35 bf c9 e3 62 03 e1 35 -06 ba 12 b7 56 c8 ba 00 af 91 b8 5b 0b 4c 07 c7 -f4 84 ad c4 58 c9 26 aa eb 4f 08 2f ec 98 7d 9f -27 6b 89 49 59 7e c0 40 1b b7 1a 2f ea 9c 7b 74 -e0 df e6 aa 52 ac 8b 80 be ea d3 36 a4 9d b2 2f -b3 - -# Signature: -53 d0 d7 95 bb 08 2f 20 01 03 6f 47 2c 2e ce 6e -7d 2d b6 9f 29 2d a7 21 36 75 c7 cb ba 0d 33 b2 -32 12 f8 f4 3a 4a 8e 09 a6 a5 0e 01 9b bd d5 9a -58 89 8c c4 6c 58 a4 6e 42 ce 7b a0 93 fb 46 92 -f3 83 de 33 a9 a3 4f 47 c7 e6 19 38 bf 8a 6a da -a8 8d f2 12 96 b4 c6 7b 52 68 35 f7 57 f2 c2 6c -1d 30 9d 7c dd 5a d5 fd 8f 61 f8 51 ed 23 c4 be -2a bb 62 7d fd 81 7f 84 77 dc 04 2b 6a 2e 40 69 -40 - -# PKCS#1 v1.5 Signature Example 13.6 - -# ----------------- - -# Message to be signed: -88 39 39 d1 49 a5 44 e6 2e f0 4c 61 03 51 a2 df -a2 52 eb 9a 9d 1e 11 ae 54 c9 b0 7e bc f1 fd c4 -7e c1 d9 47 03 41 1d a4 15 f5 9f b3 e5 04 1e d9 -47 0e 7b cc 81 9b 5a fe af 86 0c 01 6e f1 25 bd -08 a6 cb 8b cd f3 b9 3a 51 dc ad b2 f6 8c 8c c3 -77 55 14 28 2a ff 75 67 ec 65 f2 70 d0 2b eb 95 -fb 8f ac 24 09 5e 17 06 e4 8b 52 48 65 bc 14 46 -1d 3e ce 8c 50 1c 3d 80 2a de 98 5a e9 5c fe 1a -b9 d6 b9 ab 0d 15 fc c8 86 6f 7f 25 9c 5e 41 c0 -2c d4 13 43 7e 7d 6b a7 f1 5b 0a 70 da fb d5 5c -0e db 6b 80 75 c2 7c ff 3b 28 9e 6c 99 e9 a8 84 -ff 7f 08 6d a9 f7 5d 6a 4c bb cc af 52 ba 25 c6 -34 2c 38 a7 6b 44 e1 01 15 5d f7 55 e3 9c 14 86 -2e 22 0c a3 6f fb cc 83 2a fe cb a8 7f 8a bd 96 -0a 57 7f 56 ca 6c d8 e9 91 26 65 8f 27 ac 6e 53 -c4 42 ed 47 66 - -# Signature: -1e c0 2a e6 a0 a3 f6 11 99 29 61 ca 27 cc bf 29 -6e 11 36 18 32 e1 ee 75 20 56 9a 9a ee 06 34 5c -da 22 b4 fa 48 fc 34 5e 47 78 bc 3c cd fe bd 2d -c5 a6 c9 d4 84 51 aa 44 1b ea 4b 95 11 99 65 4a -e8 d2 f7 52 2e 17 ed bc 2f 51 ce 15 cb cd 36 6f -49 39 cb 53 c3 b7 70 81 f4 a7 37 50 05 4e 00 b3 -0b a2 fe 58 f6 f0 2e 36 a8 62 54 23 97 db a6 a3 -cd 22 77 70 88 19 e7 8a 2d 87 6a 23 a5 a2 69 d7 -75 - -# PKCS#1 v1.5 Signature Example 13.7 - -# ----------------- - -# Message to be signed: -40 31 e0 de f4 f3 d1 ad 9b c0 82 77 0a 88 a1 d9 -b4 b7 10 75 48 cd f8 46 2b 0b ae 3d 99 4d 8e bc -4d a0 44 b9 05 dd 8e d9 1a 1d a6 76 72 78 22 36 -0e e2 b6 d5 e1 2b b7 03 16 d7 9e 8a bb 82 a6 43 -44 af b3 b2 25 88 5c - -# Signature: -0b e5 a6 d0 43 be 5d 27 d1 d5 1d 9e 3a a6 1d 92 -c9 d8 43 23 11 9b 48 c8 4a 80 38 97 18 d7 a1 aa -f5 7a 9a 0d 21 4f 65 06 48 48 64 df ae 85 db 7b -84 74 07 3a 8f 97 7b 42 b5 3b 40 7e 44 c7 c6 2b -16 8d 1e 77 78 f4 f2 78 57 bf ba 85 dd dc 8b 0e -9f 0e 9a 5b 6d e7 1a 04 43 72 0e 92 bb 88 b0 77 -cb a1 5d 3f 6e 2b e4 d2 7a 7c 50 9c 7d c0 3f 1f -dd 4f e3 38 a4 e5 45 c4 6c 03 45 22 cc c0 d4 5d -4c - -# PKCS#1 v1.5 Signature Example 13.8 - -# ----------------- - -# Message to be signed: -7f dc 96 a4 56 57 74 02 9f ff a9 3b 39 f0 5d ee -9f 84 fa 89 53 fd 0f 63 38 c8 1c 9d ec 6c dd 66 -1f fa b9 6f 0e 08 eb 0b 9b a9 ca 5b e1 7b 57 c4 -b4 86 8f d5 34 11 54 de 50 27 71 13 c7 18 53 41 - -# Signature: -1d d2 1f a4 95 be 7c 49 0f 98 2f 69 ea b1 4e 24 -da a0 4b d1 38 b7 14 32 49 cd cc d7 8c cf c9 10 -6a ca a0 3e c8 76 69 42 32 56 6e c6 ca b9 12 28 -40 f6 69 c8 00 f2 ee 09 2b b9 b6 cb 2a 45 42 a9 -0d e6 04 c4 f1 05 00 0a 3a 0d ec cd 3d d9 7a 32 -61 fa 38 22 7e b3 81 a1 f8 f2 3b 66 65 d2 84 80 -df b7 21 17 88 2e d8 db 25 d7 6d e4 0d e2 fb e7 -2d c3 94 ec 6f bd aa 99 c6 4f ad e7 29 78 a5 1f -c4 - -# PKCS#1 v1.5 Signature Example 13.9 - -# ----------------- - -# Message to be signed: -63 18 32 ab 19 18 cd 02 08 28 e4 7a e2 b4 47 6b -14 69 f2 72 e3 0e 53 e5 96 fb a2 6b 40 29 37 dc -44 c2 ea 57 45 c7 9d 2d c6 4a 10 e1 22 5c a0 b6 -92 9d 49 54 bc 5d 37 40 96 fd 87 8d d1 01 f7 66 -63 13 d9 a8 f8 26 bc 67 14 01 42 2c 1c fe 1a 6d -01 a4 d7 86 4a 14 c6 0c eb c2 f0 70 91 4c ee de -b1 78 2f e5 40 a0 a5 d2 57 84 44 f9 b3 60 34 ec -77 d6 b8 03 a0 c9 76 1b 32 75 92 aa 48 46 63 5c -56 3f 1c 6a 6d f6 8f aa bc e4 97 af 4d c9 a3 64 -2b 75 a4 a2 94 d3 08 56 8e 6d 73 c1 1d b5 67 24 -04 2b 55 c3 a2 4a 7b c7 a1 05 0e 4f 44 8b 6a - -# Signature: -45 d3 a6 ae 8f 48 35 5c 01 2b 50 10 79 ee 92 af -fe 3c 9e 60 2e 4a 08 0c fc 94 72 3a e9 6d ac 2a -66 e4 55 a4 0e 72 8b 2a 1b 27 e6 22 40 55 4e c7 -c5 c0 ad 6a a0 0c 09 22 e5 3d 7b 12 ed 42 c0 87 -32 2d 15 36 e4 6b 7d eb da 80 95 f5 5d 1e 12 bc -24 42 f4 3b 4d 12 8f ee 23 1d cd 6f 8c 37 aa 6b -cf 4f e7 b5 e0 de a9 c6 70 9d 3d 91 f9 e4 2a 53 -16 8a 16 b6 fe 99 7b 5d fe ba fb 46 ed 9a ea 5c -66 - -# PKCS#1 v1.5 Signature Example 13.10 - -# ----------------- - -# Message to be signed: -8b 04 3d 90 da e3 41 66 85 d5 3a 5b 4c 3c c2 54 -cd a0 cb d2 3b 4e 40 8d e8 20 a4 da 7a de 6d d9 -5d 4e 1a 97 e2 31 2c 3e 84 26 1e e0 b6 ce fe 60 -e6 b0 82 fd 59 65 ef a1 64 8f 4f ae 61 60 5f e3 -55 33 27 00 46 96 05 26 53 47 e6 54 7a ea 77 5b -85 6e 5a 46 c3 41 d2 99 52 bb ea 92 70 49 96 3e -37 40 20 8c fb 0b 65 28 57 b6 f5 2e 36 6a 17 0b -e3 4f 13 d3 58 46 bd e6 97 20 46 20 01 b0 9d d2 -68 b8 9b 09 00 31 8e 73 3d b2 00 9e fd 9b 51 77 -41 e5 10 d3 f3 94 f7 ad b5 45 59 b1 57 - -# Signature: -6b 27 8f 36 2c 29 2e ea 09 b9 0b f3 53 d1 43 f2 -ca 09 9f f8 79 57 34 79 df 2a ff 9b 25 0d 1c 91 -87 c6 a3 34 3e a1 4c 07 6f 2a 20 c1 a1 9d b2 6a -ad 35 48 ec 6f b3 b2 fa fc 75 1b 59 08 2d 8b 23 -c8 2c 8a 51 f7 fa f7 a4 d4 a8 23 98 bf be d4 49 -bd e4 ee 9d c8 68 01 60 66 6f d9 c7 74 c6 aa 57 -7b 4e c5 4c f0 d5 bd 9e 3d 1a fa 9c 3b 4b 91 46 -76 78 c9 d4 c4 fe 40 0a a8 57 a3 b0 54 5b df 84 -a6 - -# PKCS#1 v1.5 Signature Example 13.11 - -# ----------------- - -# Message to be signed: -3b 28 a6 09 2e 47 08 98 af 07 0a 08 7c 45 53 18 -8d e6 c3 44 bb 0b 5f dc 7f 66 fb c5 2d c9 3a 8b -92 a3 74 11 20 37 d6 a4 32 86 12 8a ce f9 5a 35 -05 c0 ab b1 af a6 2c 48 cb 21 36 07 7f 8a 0e 0e -0b 5a 4e e9 b2 c7 7d 7a 0c 0b 53 f3 8a 51 cc 3d -b9 b5 83 b3 ae c0 7f 1e 22 4f cb 3f 1d ad 19 5e -05 86 59 a9 d1 1f 8e dc 74 44 99 46 86 ed 62 c9 -75 66 e9 e0 0c bf 8f 0d bc 17 16 e6 b7 f0 f8 8f -e8 9a 86 7a 41 d6 43 13 5a d8 b1 8a a1 43 e7 37 -5d f1 95 29 - -# Signature: -32 62 fe 17 e4 4e 5e cc 84 31 70 d3 ae 27 51 da -1f 48 d6 e9 61 d8 1e 93 59 b0 98 2c 6d 61 30 8e -ba cf e2 60 7c 53 8c 17 0c e0 e7 2a 07 bc 01 48 -7b 29 5c 36 b8 e2 2a fd f6 e7 fe 39 c0 3a 5c 0c -36 61 06 1f 23 fb f5 89 0e ad 59 f8 72 c9 46 cc -e0 f8 16 c9 ed 3a 2c 1e 11 f8 f7 4d a1 e9 7a 39 -0d 53 4d 78 55 78 a2 45 5f cd 87 47 83 f4 57 2a -15 f4 93 7d ca 98 09 3f d0 e9 99 0a f0 00 52 56 -bf - -# PKCS#1 v1.5 Signature Example 13.12 - -# ----------------- - -# Message to be signed: -4f dd 6a 36 31 dd d4 bc 3c 76 07 19 02 a2 27 fd -5b 36 53 b1 f9 70 f2 b7 67 ef 55 4e 1c 75 ca de -81 9d 8d 1f ca 76 bc 10 54 1c bf 8b 1d 8b 0e 72 -55 f9 57 40 - -# Signature: -29 cb a5 b4 3f a3 56 57 75 89 34 91 b1 18 57 8b -14 b5 fa 1e eb e0 c8 07 59 a6 d1 91 e7 c2 13 1e -e1 0a c5 b9 b8 ae 1a a7 d6 96 c9 84 88 a3 5c df -a2 aa 00 6d 91 bf 7e 05 a5 c1 90 9e fb 20 da bc -82 13 3b 62 64 c0 42 18 0c 2c ca 65 45 9f 66 cc -7e b1 ba 75 d1 5d 4f 56 c7 52 8a ab 28 38 e6 79 -53 7a 4c 8d cd 37 d4 b4 ca 82 5c e1 65 fa 4a 97 -15 82 44 dc 87 c0 61 fb 12 00 1e 55 33 fb d4 cc -62 - -# PKCS#1 v1.5 Signature Example 13.13 - -# ----------------- - -# Message to be signed: -59 0c d2 30 50 e5 7b 28 d5 c2 18 5e ad 60 b1 e9 -52 9f 2b d5 26 13 eb 03 f6 ed 1a ef a4 a6 72 88 -d5 a3 a3 4f d9 5c a6 38 94 af 3a 40 cd 68 87 3a -1f 37 e3 54 d3 04 14 29 7b 19 25 4b c6 c1 a3 f7 -a4 75 20 ee a5 6e ff 77 db fd a6 bd 77 79 d0 2f -d8 16 fc 0e 99 91 9f e4 39 5e ae e5 b2 f5 f0 32 -cf c4 33 6f 9c f9 ac ef 74 db bf 4c 9a 09 18 da -65 58 b4 b4 e3 20 9b fc d7 1d dd 59 76 07 b6 e2 -8c 39 85 db f5 2c a7 d1 d7 51 cb 81 69 c0 b1 b1 -3f f8 b6 5b 73 1e 69 dd 2e ff e4 4c 63 6f 2b 69 -95 35 83 1a eb 5e 62 90 2f - -# Signature: -67 eb 89 57 ce 4c 06 f7 39 1d 00 c7 41 24 53 f4 -b6 8b 33 03 a1 29 25 54 e2 a5 fc 72 62 c5 2e 74 -be d7 0e c5 8c 89 50 cd c4 31 5a 8f b7 c6 80 15 -54 cd 35 78 1d 44 fb 5e 57 d6 8d 59 a0 0f 43 b8 -6d 53 b8 43 72 d5 56 e5 a4 15 3c be 6b 39 7c 4c -9c 68 00 70 5d 2f c0 c5 48 64 5e 11 b9 d8 d5 12 -b2 dd 9b f5 9f 3d c5 d1 1c 3c 77 3d 59 cc be d9 -e6 bc 14 32 09 10 cd f8 3b 46 59 01 b7 46 b5 96 -74 - -# PKCS#1 v1.5 Signature Example 13.14 - -# ----------------- - -# Message to be signed: -80 8c b9 76 13 fd 87 85 35 80 1c 80 08 79 15 10 -a5 fe 86 6a d5 b6 84 3a 6e 00 19 a0 fc c2 17 76 -03 54 f6 0c c6 99 fb be 1a df e8 b0 0e cd 6a 36 -a2 b5 a5 a1 fa a2 3d 34 38 20 02 4e 3a 31 97 ae -67 3c - -# Signature: -1c 53 96 59 f8 72 46 99 16 fb 00 07 ef 9e 48 57 -4e 96 4e 4c 0e 6a 2f a7 4b 13 73 fd 60 b6 64 a7 -98 ac 81 29 c0 8c 12 cd bf 37 49 75 0b e1 25 60 -2a 71 54 32 67 67 32 7e 92 ba 57 b5 e2 89 b5 ac -9d 77 71 b4 52 0a 7a 2c e6 6c 5e af 70 4a fc 5a -19 0f a6 0b e1 37 6f 94 3d 2b af 70 52 3e 47 c3 -de fc 0a 25 a6 00 18 31 a3 7a ab 0c f1 f6 48 7b -e3 7f 0e 31 ca 7d b5 ac 41 b5 63 09 57 55 93 69 -ff - -# PKCS#1 v1.5 Signature Example 13.15 - -# ----------------- - -# Message to be signed: -57 ed aa 05 66 25 16 86 f6 52 05 ef c6 26 60 e2 -c2 e0 4f a5 ea a3 30 2d e8 7a 3f 6b 49 1f 7f a3 -ac 72 70 cc 76 75 1a 43 69 42 ac 76 5e f5 f4 74 -91 62 d7 e7 97 12 6b cb 8f da c1 9c f1 8d cc 6e -ff 48 59 3c 05 c8 89 3b 59 1a 51 33 2f a2 6a b8 -63 c5 ea a4 d7 51 e8 d1 b1 9c 58 26 90 b5 41 5e -6a 89 e0 5f 23 1b 33 ac 38 c5 3f 95 a2 d5 f9 10 -51 c2 ec 6d db 2b 6d ba 78 9d 55 3a db 9f 10 c5 -83 59 70 36 d3 48 6f bb 32 17 2a 1c 11 07 9e 5f -09 aa 29 eb 46 74 c8 d7 bf 5b bd 6d 05 7e 6b 87 -a8 b3 aa f4 80 86 d7 21 cb bc 8e fa c6 24 4d 32 -39 ae 18 f1 66 23 fa 52 8e 2e 70 fa 25 65 6a 6a -4a 22 92 95 0f c9 28 ed b8 1c - -# Signature: -33 73 2f cc 23 34 2c 58 51 38 b2 5b 17 c8 12 ee -3e 9d 3d a4 1f 6f fb cc 16 17 a2 ee 75 cc 5b 25 -01 25 4f d1 97 6d 25 88 00 e9 05 d7 e4 4a 0a b6 -fb 4b 8a 88 bb 7b f9 31 73 95 30 3a b2 fc a4 31 -28 48 6a 2b ab 36 c7 5e f6 aa 5e b3 fc 5b d5 55 -b3 ea 79 12 4a ad 78 97 e3 a4 34 de e7 92 63 71 -de 2d 6d 23 7e 89 b0 3b 8d d7 09 60 58 e2 a4 b3 -2c b5 57 c7 ad a2 98 a7 e2 ed d3 a3 a3 b5 29 b4 -d2 - -# PKCS#1 v1.5 Signature Example 13.16 - -# ----------------- - -# Message to be signed: -08 33 76 bb 82 21 2b f8 80 be 12 85 65 3a f2 ca -d6 25 c5 2e 94 e3 21 43 68 77 f7 25 a8 3b bd 43 -f4 48 6d 89 6c f6 7e 31 39 1b 87 06 f8 c0 f8 f4 -bb 1d db a9 5c 33 2f 03 4f 39 09 11 3f 65 56 92 -60 a2 e4 f1 04 06 65 7c 99 fa ff 00 1f e1 6e bb -89 6e 9e 18 11 5a f1 d4 98 6c 85 79 ab 56 52 cc -ca 47 74 - -# Signature: -2a f4 6c 00 d1 d9 15 94 1e 21 2a 7b 8d 81 05 ee -0f 0e c4 80 ff fb b4 f1 3b f2 8d 73 e2 b3 19 b9 -84 a7 b7 c8 36 7a dc a7 ab 12 aa f5 3a cb 98 d0 -cb 54 ee 34 20 4c 90 8e 60 c7 c7 9e fb 42 c3 11 -4a 02 58 9e 1a e6 af b5 97 53 54 57 8c 14 35 ec -c8 9c 11 6e 90 26 b6 bc 88 9e e2 88 ae 4d af 03 -47 cc ce fc 5d fd 1e f8 3c b8 68 52 ee ff d8 40 -98 59 9b 72 5b f6 02 ee 62 0b df 44 af bd 84 c0 -cd - -# PKCS#1 v1.5 Signature Example 13.17 - -# ----------------- - -# Message to be signed: -8c 87 4c d0 ce 33 51 39 c0 8d 76 0b 82 5e b9 90 -5d - -# Signature: -66 9a 8a d7 cb 81 ef 21 87 f5 a8 56 47 68 4b 72 -48 4a ff 27 9f 0a f3 54 35 86 7c c2 b0 43 33 a1 -96 ec a6 cf 44 a9 7a 1b d3 9d 0f 6a 0f f9 59 57 -02 83 5b c8 0a 72 d7 14 04 ef 3f 46 fa 3b 0d 20 -e8 6d 7a 1d 5f 7e fc 3f 3b 8e 8a 7e 37 e8 7e 27 -a9 9f eb a9 6a d8 13 20 be 8f ff 78 55 7d 07 bf -ba e2 16 03 a1 36 8c af a5 ae 1d 1b 63 0a a2 1f -f2 0e 45 85 65 0a 77 3d 7e 2f 5e 7f 51 72 97 19 -3c - -# PKCS#1 v1.5 Signature Example 13.18 - -# ----------------- - -# Message to be signed: -cb 3e 61 21 d3 8b 7d 97 e1 8b a1 5c 49 3d 1a c3 -2e 9d 2e f4 e3 bd 16 df 9c 67 e4 a1 96 e9 24 7a -8d 0c 24 b2 1c 4a b2 3e 77 d6 db 11 7d 59 11 95 -bb af 44 66 82 5f 63 97 8f 11 40 85 28 1b 79 ae -a3 7e 32 c6 b3 6c 1e 9d dd 4a d1 23 6e 97 fd 42 -7b 4d 97 6e 07 64 9d ca 4f 33 a8 9c 46 fb 8c 00 -b4 26 7b 14 47 04 - -# Signature: -56 84 17 80 3a 40 0e 9d 05 0a 43 20 ae 7b 7d 8d -24 8e 16 36 50 86 9d 9f dd 10 0c c1 a6 b9 bc 29 -1c 3f 23 f1 25 60 03 16 4f 61 9d bc 78 63 5e bd -f0 89 49 0a fa 5a a0 0b 6f 97 eb 06 36 c3 bb a8 -9d 86 36 0a fe 26 00 43 d8 61 a7 4f 64 c7 1d 9c -bd 31 ea e2 39 3a 1a f1 56 1f 1a b9 2c aa 76 dd -1e 76 ab 23 33 09 8c 83 c2 d9 9f ae 82 73 98 75 -80 05 c1 76 cb c4 a2 e2 2e fa 0e 6c 12 f4 e3 42 -81 - -# PKCS#1 v1.5 Signature Example 13.19 - -# ----------------- - -# Message to be signed: -21 9a 2f 8d 0b 00 0a ed b5 f1 85 45 5e d3 ea 09 -4c 45 42 6b 28 5b ab 4a 07 cf 3d 0a 29 06 f3 e2 -03 18 4c 2d 3d 81 a8 09 b8 9c 9f c4 8b c9 af 9a -b3 2f 84 f1 5d 81 38 9c 4e db 0a c6 8a d0 95 02 -e3 f3 0c 7c f6 45 10 29 54 b2 97 c8 66 14 66 fc -10 - -# Signature: -03 83 5d 90 57 e2 b8 21 dc 4c 6e ac a3 f4 15 6a -56 55 0b 6f 9d 74 00 fc 5c 51 95 a4 ae e4 71 7d -f3 29 29 12 2b 43 27 3a 07 9a 24 f9 9d d9 e7 c3 -40 56 ae a4 fc 4e 45 7d 83 14 ef 34 42 7f 8e 20 -4b 81 bb 49 03 fb 3e 77 9e 38 9e 41 33 90 68 c1 -57 d9 b0 9f 2c 5e 99 cc 54 e6 ef 86 ee ac 0e 19 -f4 4e 33 e7 07 c4 26 1a 0a 83 ce b4 22 f2 e0 6b -cc ae 3b 8b ba 42 8d 75 57 15 2f 40 84 6e c0 11 -34 - -# PKCS#1 v1.5 Signature Example 13.20 - -# ----------------- - -# Message to be signed: -e3 9c a4 0d 2e 9d 03 ae 05 96 f6 0e b8 f6 09 99 -30 85 a5 db 15 6b 0d 50 98 fe 5f aa c5 5f 70 99 -3f e1 76 d2 d0 c0 38 b8 60 bb f9 a6 62 43 f5 e7 -8e 6c be 52 6e cf 25 12 8d ae 31 96 56 cc 32 1e -e8 0a 50 53 14 90 c9 a6 24 3f bd b0 c5 eb 4c d6 -42 d2 61 15 05 ae 10 84 97 57 38 ad 84 62 1d 67 -f5 - -# Signature: -4f cf a5 73 97 f2 7e e0 f8 ae 75 a0 a5 4d 54 b0 -c5 1b 95 7e e6 3b f7 90 1b 60 55 cc 39 87 c3 2d -f7 22 0e 16 6a 71 60 6a bc 78 f9 11 07 f9 74 df -f7 d6 25 7c 25 6d c6 ed 7a 69 c3 c9 9f 9f 89 ab -b5 8f e5 89 b7 ee 7c ad 0f 48 c1 60 10 d0 46 a9 -c4 e0 04 bb e1 a8 29 79 68 d4 0b c7 06 82 eb ae -a4 48 52 5d be e1 6b 03 bd 0b 65 26 d0 98 d0 9b -6b ad 9a ba 03 93 05 e2 ab 79 69 02 08 65 80 cc -f0 - -# ============================================= - -# Example 14: A 1536-bit RSA key pair -# ----------------------------------- - - -# Public key -# ---------- - -# Modulus: -d8 70 a7 76 cd 13 ed 44 3d f3 99 08 be e2 ca d7 -3c 48 5f d9 bf 06 32 13 22 88 7f be 65 5c 08 cb -e4 c8 f6 3e 25 4f c9 1c 75 f0 55 7d 90 1d 43 5b -0e 8d ed 82 d4 91 73 41 4d 29 86 03 24 e4 6c 1b -03 0d fe aa 29 d8 0f 98 98 c2 c5 e1 01 cb f6 da -a0 62 89 78 d4 15 b5 02 de a2 6d e6 56 1c 79 ab -06 5c 6d ca 6a bc 4d 4d 4d 5e 9f 5c 74 cb 3e 6a -5a f7 1d 1f 90 fa 5e aa 1b e0 ca 94 7a 70 a3 9e -fd 31 5c 4d f2 1a 1a 82 1c aa ff 8d cb ad 13 b2 -9c 7e 82 aa d5 3c 64 f5 82 ec 9e c3 1e 6b de 82 -ea 5a 5f 4c cc f0 c4 57 b8 88 f1 55 0c 4f f8 e1 -c1 78 a7 6a 46 c1 96 f4 be f5 9e 61 dd 94 4e 47 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -d8 70 a7 76 cd 13 ed 44 3d f3 99 08 be e2 ca d7 -3c 48 5f d9 bf 06 32 13 22 88 7f be 65 5c 08 cb -e4 c8 f6 3e 25 4f c9 1c 75 f0 55 7d 90 1d 43 5b -0e 8d ed 82 d4 91 73 41 4d 29 86 03 24 e4 6c 1b -03 0d fe aa 29 d8 0f 98 98 c2 c5 e1 01 cb f6 da -a0 62 89 78 d4 15 b5 02 de a2 6d e6 56 1c 79 ab -06 5c 6d ca 6a bc 4d 4d 4d 5e 9f 5c 74 cb 3e 6a -5a f7 1d 1f 90 fa 5e aa 1b e0 ca 94 7a 70 a3 9e -fd 31 5c 4d f2 1a 1a 82 1c aa ff 8d cb ad 13 b2 -9c 7e 82 aa d5 3c 64 f5 82 ec 9e c3 1e 6b de 82 -ea 5a 5f 4c cc f0 c4 57 b8 88 f1 55 0c 4f f8 e1 -c1 78 a7 6a 46 c1 96 f4 be f5 9e 61 dd 94 4e 47 - -# Public exponent: -01 00 01 - -# Exponent: -05 88 8f c7 7a 43 bd a7 a6 7b d1 58 47 65 0d f1 -85 c1 85 ed cf b3 ed 58 ce e3 b5 7c 5d 24 06 b7 -8b c0 55 87 4e 35 e5 7a dc 4b 0a 2c 7d 20 3a 66 -1c 0f a5 d8 57 ed e6 07 ef dc 95 68 04 2b f0 d5 -99 f4 e4 23 5e 91 7f 08 94 33 3a 92 df 94 62 d9 -c1 0a f3 df ca 70 49 a1 ea a6 35 70 13 98 83 c5 -be fe be e4 e2 21 89 43 d3 0f c6 45 ff e8 b9 14 -d2 18 dd 58 96 0a ad c1 21 71 5b ce 5c cd de 4a -2c 73 a8 d9 d8 6a 4e b6 e4 55 dc 92 4f d7 4a 0b -1f 75 69 1c 28 1b ae 91 4d 69 9e e2 59 d8 5c 5f -b5 dd 99 9e be f9 b7 0a 4b d9 4a a4 fa fa e2 6c -a7 84 d3 2f d4 e0 77 db b6 ea 69 3b cd 6d 27 d5 - -# Prime 1: -ff 8e f1 e7 4c 44 5a 5c c8 97 3a 81 9c 75 45 49 -12 35 72 0c f9 eb 83 f1 81 13 3c 78 a1 4d cc 4c -e5 e7 75 be 3e 0c 46 ed 2f 21 9a b8 8d 87 77 ad -6e cb e4 0c f9 18 76 4d 7e 37 c6 68 35 91 e7 aa -a1 3b 24 4b 7f cc 0e b6 df d7 6a 11 5f 30 ed 2d -63 68 c8 ea 78 0a 21 1c 0a c9 c0 72 5d fa b0 8d - -# Prime 2: -d8 d0 67 64 c1 f7 64 54 c6 8a 3a 08 1e 95 d7 47 -c2 94 11 ad c4 03 a7 cb 71 b4 3a f5 05 ca be 41 -b4 9c 97 1c 13 ad 65 63 b8 c9 0b 93 b5 89 79 bb -74 f8 20 ef b8 de d8 1f 46 30 54 a7 7f b3 0b b0 -99 98 51 a4 3c cd 01 69 18 51 31 f7 43 1b 02 e9 -c6 b9 f8 38 71 d9 cd 5e 0c 3c 58 70 cf 97 97 23 - -# Prime exponent 1: -e8 d6 15 f4 04 7a aa 51 aa b8 8e 27 94 a3 0b d3 -3d 71 d0 4d 9e 4e 43 d2 7f 25 45 8d 2a 79 b5 4f -c2 8f 95 a9 14 e3 1e a3 ee b3 11 42 60 40 32 7b -a3 5c c4 94 45 47 52 51 dc 53 78 c3 6d 3b 57 f5 -10 1c d0 3e b1 5a fb 75 06 90 3f 25 40 b3 55 04 -6b 74 06 ca 09 40 41 56 49 45 f3 be bf 7d 2d e9 - -# Prime exponent 2: -73 5d b1 26 73 ef 67 7b 94 89 48 87 b9 7e 91 a6 -a5 6a 94 5d 99 c7 38 29 90 bf 0e 00 02 ac f6 bf -8f 93 22 f4 d5 a3 96 27 91 d3 a8 4d 58 73 66 4a -d0 da 96 eb f7 ba db d5 08 4b ff 3f 81 3b 8c 24 -d4 15 b0 9b 6b 9e c9 f9 59 ef 1a 5f 2f 5d d8 16 -fc 9f 47 ed 00 e7 9b d7 47 3b 74 f3 d2 02 1f 71 - -# Coefficient: -10 62 18 af 97 1d 92 95 91 59 90 a4 ed 3e 09 d3 -63 db 33 06 b0 90 a1 33 eb d7 54 e2 bd 77 6b 25 -85 99 9d 4f 88 43 03 0a c7 0c 0f f5 de 52 12 67 -22 34 c0 07 ce 74 56 4c 79 1e dc d5 76 f9 68 44 -04 8c fa 66 36 46 b8 fd 80 c7 51 26 b2 26 6e 48 -f1 fa a7 05 44 ad 42 04 fd 61 56 29 2e 51 6e 13 - -# PKCS#1 v1.5 signing of 20 random messages -# ------------------------------------------------------- - -# PKCS#1 v1.5 Signature Example 14.1 - -# ----------------- - -# Message to be signed: -f7 a3 c6 7e 92 a7 87 f3 5d cc 47 ae d7 d6 b6 19 -29 67 bd fd 00 a6 ac bf 6f 7e fe 46 d3 ac ae d9 -78 8a a4 f1 db 18 44 02 24 9f 9a ce fc 1c 7d fb -1e 69 0d 24 73 8d e8 6f a5 b5 25 0f 97 9e bd 8f -77 8e ec 0d 7f cf 73 1f a2 25 08 6c 86 65 64 ed -3e b1 54 dd 45 8d 05 00 28 2f 86 80 48 87 d4 43 -5e da 9a 44 36 a8 e9 23 a2 0c b4 b4 d0 e8 1c 91 -11 4b dc 06 82 27 8e c2 58 86 07 99 b5 9c 94 36 -f4 3a 53 ca b4 c4 cd - -# Signature: -09 d1 43 5b f5 a9 c1 72 03 d5 37 fe 57 df 98 7b -7a 51 f3 4b 2a 14 09 7e 06 a0 de 56 3b e7 d6 4b -4e a3 79 73 b4 fe 99 73 a6 6a 3f 31 ba 8e 07 e9 -11 7b 6a 1e e7 09 61 33 7b 4d 2b 0d f5 98 10 b6 -24 08 51 18 bd a7 0a c7 4a e4 3e 2f bc f8 92 27 -63 03 23 da 68 30 f5 b1 a2 b9 54 f1 b1 5a ea 07 -54 df 2c 51 18 57 95 16 e8 77 cc b0 b1 28 6c 57 -24 65 5e f8 d2 91 85 66 6f 6e 9b d3 2a 6b d9 ce -9e 1e f9 47 29 fc 67 d6 a3 0e 64 56 0e cf 78 bf -8e 1b 2b 40 e5 06 05 e2 5a e8 0c 38 67 64 ae d1 -1a 0e 71 44 90 49 c9 39 b2 96 2f 6c 24 17 a3 58 -cd c8 10 6b 12 b1 a5 58 76 39 43 8a f1 a6 8d 32 - -# PKCS#1 v1.5 Signature Example 14.2 - -# ----------------- - -# Message to be signed: -2a 13 30 03 ab 67 cd d2 e8 3b 44 e9 e9 dc 77 7d -e0 1f 4d 23 3d 22 e7 d2 b4 46 7f 04 81 2a 3a eb -ff b1 0a 09 24 54 e3 3b 9e 70 28 24 93 28 74 7e -a1 4a 11 c7 98 ac 2e 14 6e 4e 49 65 9b a8 60 67 -db 64 e9 bd 80 a7 02 1a ab cc 22 85 6e 81 01 40 -c2 0f d8 c6 52 7b ad bb d9 fa 59 53 fa 77 e6 85 -87 00 be b6 c7 4d 5a 46 3c 9d a8 61 13 3b aa 5b -d6 a5 99 80 7a e9 16 2e 3a f3 a3 48 d0 4a 4e dd -2f fb ab - -# Signature: -35 e6 66 cf b8 7c 04 88 a8 6f df ed 5f 9d ea ed -bc 46 74 17 1c 31 84 59 ac aa aa 20 e1 ca d7 c5 -86 04 14 0a 80 ff 7f 56 5b fb c8 6e 90 32 8d 4c -72 9b 91 bf 72 a9 8d b7 01 c1 be 63 8a 6e 8f 2e -46 8f 20 39 24 70 c7 c5 c3 44 42 d5 1b 1b 15 5f -b4 64 b8 a5 56 f4 a1 70 c0 23 01 fe d0 d1 aa 92 -aa fd eb c3 f1 8e a8 b4 d7 1e 24 5c 25 26 f6 fe -66 5d e4 83 85 f4 6c e1 bf 33 12 fa 89 28 09 8e -d3 31 2b 61 11 6c a7 e4 23 20 4e f0 8b d2 df 3a -d7 bb c8 50 09 8c b0 26 83 26 66 25 bb d9 59 82 -51 35 a4 5f 03 82 9d 09 6f ed 18 b2 0b aa 3f 9d -44 b0 07 aa 24 1f 92 f8 88 60 55 d9 8e 0e 07 04 - -# PKCS#1 v1.5 Signature Example 14.3 - -# ----------------- - -# Message to be signed: -58 62 7f fa aa 8e 80 0a 8b e9 8e 42 f5 1a 83 61 -1c fa b7 ee 37 6b 34 73 7b 3e 48 e1 bc 17 42 da -a7 7d e4 7e 1a 9b 29 33 77 aa - -# Signature: -3d 17 cb 38 6c 88 78 4d 35 9a d3 c3 8d be 88 8b -fa e8 31 bf b8 ed c9 d0 e8 01 e7 d6 9e 1d d4 c2 -44 1d 68 fd bb 35 12 6c 73 a4 ed ab bf f5 4e 74 -fa 51 09 da d8 b5 c3 13 d8 6a 79 e4 d4 12 76 60 -fc 2a 8e 1c 93 fa 8d 09 2a cc f0 1c c1 8a 60 6c -f0 7d e2 dc 3e 7b 55 33 11 52 db 01 b6 ca ea 1e -ce c9 09 31 99 be 62 c3 e1 23 e2 87 31 13 50 3b -22 03 0f 16 8d af c4 e6 bd 06 5a d2 f6 b1 de d0 -5b e0 c2 f9 b6 7b dc 1a 3b b1 8d a9 59 4c 95 7d -a4 e4 9f ac 3f e7 6e 07 66 f7 4e b0 d5 23 e4 dd -1a e7 59 da d6 b9 b9 08 b7 fc 8b 97 ef 5f 4c 82 -92 32 0a c3 87 c3 50 8b 54 cf b8 5d 34 f6 ad 39 - -# PKCS#1 v1.5 Signature Example 14.4 - -# ----------------- - -# Message to be signed: -0f 0f 8d 3c 0e 4d 26 08 af ad 5a 88 8e a1 4b 3f -6b 2b 27 89 dd 22 12 b8 59 09 e6 4b fb 10 4d 0f -7d e4 27 d1 4a 9f fa 85 5e 2d 4c a2 44 23 36 e5 -59 56 8b 28 41 5d 60 cf 80 63 de 55 92 17 1b 26 -9b 3d 76 33 51 c7 f7 d9 d2 58 09 e7 02 20 ee 30 -fe 8a 00 b9 5d 4c 20 20 26 89 7e d2 c6 1d 7a d4 -3a ed df 36 b5 c2 cb e2 1e 00 86 db d0 fd fd 19 -e4 3f 02 77 f3 bc 95 ed 55 a3 4a f9 30 91 66 02 -19 3c fe 04 51 4b d2 6a 05 7e 56 2a 11 90 c2 7e -aa b6 c3 22 fc fa f4 bb cc 7f 20 c3 77 9c 63 8d -7b bc 07 08 6c f7 5b f8 39 96 db 44 63 - -# Signature: -50 90 45 12 36 10 50 87 2e ae 80 10 26 28 b6 3d -02 16 8d ca 52 f0 ab d8 77 20 ea 48 05 0d 2c 62 -06 1a a2 15 32 68 be f8 ef b3 4e ed 46 17 1a 62 -88 e5 04 d4 20 f6 fc 14 51 38 61 1e 75 ed 3c f7 -9b 4d 10 26 64 d8 64 4f f3 e9 e5 db fd 71 cd c2 -7a 21 0e fb 10 be 90 27 56 04 f8 d4 49 14 8b 3f -86 09 90 39 c3 3a ef 90 bf 19 1b 35 18 eb 45 9d -a3 ba 14 fd 0c 72 22 9d ea 5f ac 2f 7d ad e1 08 -5c 8a 23 70 bb fc fa 2e 3a 9e 63 ca 22 4f 6d e8 -c8 d2 97 a3 b1 f0 6f 1f c9 49 78 90 fd 0e 0e 13 -88 7f ac b1 52 d1 2d 96 39 25 28 ef 28 d0 72 43 -31 ff 41 40 30 c7 a6 38 55 81 3c cd 89 fb db 1b - -# PKCS#1 v1.5 Signature Example 14.5 - -# ----------------- - -# Message to be signed: -26 65 cb 5e e3 6a a9 bb 1a 5c de 7c e8 - -# Signature: -4f 38 c2 ba 84 c5 0d 46 df 53 10 91 b6 27 12 14 -9c 1f 42 db d7 7e 03 d1 85 ea 96 ed a8 02 33 7c -22 c1 13 0b c3 be ce bf 15 39 fd 11 89 38 51 da -e3 cc 15 67 cb 6c 73 a7 2f a1 c9 69 48 68 21 12 -7e 7c fe a1 36 3e ee 95 2b 7c 6e b5 9e 10 2c 66 -57 c0 80 35 27 2c df 4a b5 e5 83 ed 73 7a d0 28 -ac 1c fa fe dd c9 07 3d fb d7 d3 ba 3d a9 e8 dc -d8 46 fa 36 5c 9c cd 8e 9b 39 48 3d 37 07 3c 1a -7b 78 2e e7 12 1b b1 a2 ad 8b f5 f8 ed 6e 65 3e -92 4d eb ad 87 1b 74 43 39 e5 ae 7e 96 f6 0d cc -45 ea 5d 69 7d 3b 1c c7 c5 e8 da 04 e9 2b e0 6c -ad 2e 61 4e ac 31 8a ec af 12 d5 a7 62 34 c2 c0 - -# PKCS#1 v1.5 Signature Example 14.6 - -# ----------------- - -# Message to be signed: -7b 7b 61 61 02 0f af b4 88 71 63 21 34 0d af 2c -06 ac 43 ce 21 32 86 86 84 aa af ab 13 99 65 3d -35 3b 26 93 ad 73 cb 55 b7 1d 66 ac d0 1a 16 0c -bf 74 37 67 bd 96 e7 fd 1c 7a 13 32 06 65 bb ad -1c 4a 0c ed 26 59 3c e8 9c d8 2f 54 6b d4 d1 b1 -bc d8 2c 65 a4 66 f9 9d a0 12 a4 1e 8c 41 20 69 -81 09 58 47 5b 4d 9c 2f 80 d8 2d 06 41 4c 83 25 -eb 4f 2c 5a 11 66 f1 f1 d2 d1 07 d4 8c - -# Signature: -d5 cb b6 c7 ef f4 a6 3a d8 25 0d e9 4c c2 9f 7f -31 a0 d7 10 6d 5d 77 1b 71 5d f8 a6 75 fd 16 34 -d6 e8 ab 58 87 5c c4 c1 51 7b 2f ad f4 e8 5c 1c -b8 b8 53 60 e0 68 75 87 d1 48 08 9f 3f 48 b7 9d -98 d2 02 7c 50 77 0b 33 4f 12 52 ac 0c 3b 2f 03 -65 34 c3 c2 97 22 f6 08 7d 06 d7 06 ce c7 c4 bd -ce 1c d6 4f 7b 4e 07 99 a8 7a a0 73 ea 83 20 29 -2b 8e c8 27 17 40 6d 36 ef 91 25 e4 1f b5 d5 3b -cc dd 62 2d 38 8f cc ee 60 a3 85 ec 20 6a 71 5d -c5 4d 78 77 bd 72 85 d0 84 4c 25 d5 93 77 97 91 -27 83 96 ff 9a 8a 91 30 6a 54 ea 76 60 7c 81 3f -80 1f 38 76 0c 3a 81 4b 93 96 95 9c 29 db ff 9d - -# PKCS#1 v1.5 Signature Example 14.7 - -# ----------------- - -# Message to be signed: -2b 0a d6 13 82 28 78 a5 72 e1 42 80 - -# Signature: -89 c8 10 84 da a8 f9 14 b7 e2 44 55 10 74 17 ca -62 1c 91 02 d5 01 ee b4 3d 17 4c 7b ad 38 1d b1 -8d 95 33 c3 41 1a ec 60 57 ca 5a 4d fd c3 f1 31 -c8 88 b8 8f 01 30 03 d6 17 e0 6d 64 47 95 02 ae -7e 42 4a 5d d6 37 b0 33 56 40 4d 26 0f 5e d6 b8 -cb 16 d2 57 85 28 cc 3e 85 00 34 6e b7 90 bd ad -41 b2 e3 6c a6 f1 98 85 e3 f6 f5 10 86 bf fb 6a -bb 9c 66 33 6b 49 47 34 64 c5 d7 ed 8e 9f f8 5e -11 ae ff 40 90 67 ba b0 a0 5c 41 e8 15 1b 8b e9 -87 f3 f5 95 8e 3e 6f 26 51 5d 96 bf 23 4b 22 ab -91 c0 85 7b 6c 08 a4 6b 03 05 fe 04 4c a9 aa a0 -d7 0a 27 58 a1 ce 43 16 64 a8 dd 79 40 8c 16 ba - -# PKCS#1 v1.5 Signature Example 14.8 - -# ----------------- - -# Message to be signed: -36 93 8c 8c 7c 6f 7e 35 52 34 db 5a 32 a6 48 10 -db 50 2b 67 c6 f5 92 54 4f fb 27 eb 1f 22 e0 6f -2d 63 8b 56 d5 d2 f7 d1 9e 9e 27 1f 2c c9 0c c0 -dd 36 d6 cc 2c 06 17 8b cc 70 6a ef 20 e5 6a 35 -8e 52 4f 63 16 76 9c 54 b6 de 2d d5 - -# Signature: -a0 37 53 a5 fb 54 aa 51 f6 dd 8d ab 91 f1 9c b8 -65 56 84 85 f8 55 8f 0d 10 3f 0d 2b 6d 78 53 6e -79 c8 15 c4 a0 37 bc af 11 b6 9d 4c db ab 03 5a -be 21 6f 71 52 f6 30 ff c7 9f 84 9d 8d cd 46 3a -ae 6a e9 7d 3d f1 5a 9e 73 d2 3f 18 78 fa c7 54 -cb dd 57 1a fe a5 d2 53 57 d4 b8 83 45 f4 89 be -0d 67 b9 bf ad f0 23 f2 6e 67 31 5e d5 fb f3 91 -91 0a f4 96 9b 72 4b f0 ca 31 c1 05 9f 8a 39 13 -b4 8a 13 81 9c 23 6c 9b e8 e8 24 ca 4c b6 19 fb -7d 78 4c d5 f9 52 6b 39 7c 76 c5 d0 c6 0c f7 f4 -8d 11 19 6e 54 f7 2a 08 bb 42 f7 5a ef e3 8f 0b -91 b4 2b b8 06 de 4b 87 c9 08 2f 72 1a 68 80 ca - -# PKCS#1 v1.5 Signature Example 14.9 - -# ----------------- - -# Message to be signed: -60 83 0c 01 cf a8 6f f2 dc ac 7a f9 32 1e e5 fe -50 2e 0e 7a 6f ac b7 3e 3f 6b c9 02 64 0a 61 09 -5f 64 6f d0 3e 80 d5 81 82 46 53 31 e7 5d 66 11 -a0 97 76 81 62 70 86 24 17 29 de 9f 44 ab 43 94 -9d ac 19 36 73 bd 6c f8 7f 5d 65 77 1e f8 72 81 -63 3f dd 07 ba c4 09 a6 e2 32 b6 01 ae ce 2d - -# Signature: -40 58 f6 e0 24 0d 85 1d 61 93 95 a7 52 87 a8 8f -af d8 dc 56 00 b0 69 bf 19 dc 3e 19 21 e1 17 b4 -97 b8 2b 3c 52 02 69 b1 d1 12 81 64 fc d8 8d d2 -b4 6d c8 5c 42 ec f6 7d eb ad 21 a3 b9 a1 55 42 -fe a2 26 06 ea b5 82 fc 32 97 11 ff c0 7f 4e ef -1f 3b bf e0 88 8c bc a4 85 ba fc 11 88 b0 af e8 -09 c9 aa f8 fa 36 66 b9 c9 05 85 39 db 1e c6 a1 -8e 5b e0 b8 01 44 d2 c3 7c a6 14 c0 90 b4 a7 f1 -34 58 e0 d3 a4 cb 0c b7 3d cc 4d 90 80 6f 61 08 -58 89 eb 5c 9b 14 09 de f3 60 fd 1c 2e 49 43 8d -7c 67 d7 9d bd 9a 59 2a b5 04 c4 71 5f 65 b2 9d -84 65 09 95 15 69 a8 c3 79 09 f5 d5 50 ee ff fa - -# PKCS#1 v1.5 Signature Example 14.10 - -# ----------------- - -# Message to be signed: -63 5d 22 03 ed 9d 5b 91 20 e3 1b f6 9d 30 5b e6 -06 86 97 e3 5c e5 9c 55 3e 50 8d c7 7b 07 3f fa -3a aa 59 f9 96 c3 0b 2e 68 63 23 81 9f de 22 be -6c 8d 53 86 84 14 b3 54 5a bf 43 57 68 a6 11 f0 -c1 a4 79 a0 c7 66 0d 53 5e 80 5b 5f ed c3 77 9c -f0 c5 2c 3c d0 40 ab 65 14 c7 f8 13 3d 47 b0 ac -c6 91 4e 6d 4a d3 c4 73 7c f5 12 91 09 4e 85 94 -33 ba 30 66 e1 9d 6a a2 da 89 6d c9 d9 5e f9 e5 -63 6d ab 35 f7 29 87 05 c6 d8 76 17 54 12 f8 84 -25 19 ff e1 6c f7 43 62 ab - -# Signature: -94 61 a1 a8 41 42 3e d5 cf c6 08 9a 74 db fc 53 -73 11 03 bf 49 85 dd b1 50 b0 e9 38 0d 3f e0 cf -6d 45 7c 5c 68 a7 f2 55 04 02 2d 69 5f f8 42 11 -8e bf 61 02 2f ea 47 fa 45 f7 c1 cc 72 6e 1d e5 -0b d0 64 b3 bb 70 16 57 16 2b 88 c0 b9 10 fe b7 -2f 48 7a 5c 7f 4b 9e cf ee 24 e0 7a a2 d1 98 d1 -13 cb 84 5d 81 7b b5 9b b1 da 24 a8 2b 91 c2 fe -3f ba 89 51 83 cb d9 c0 fe 0a c0 be 64 fe f2 e0 -13 92 05 b1 0b ca bf e5 a3 a7 a8 90 fc 0f e7 8d -ab e1 ad b5 bd 11 44 85 03 cb 0d cd 0b 68 f1 60 -19 6e 96 13 e2 9f be 9a 3f 94 06 ec 20 c0 30 e8 -1e c3 09 65 ea 01 9c 17 aa 97 11 01 c2 e5 30 59 - -# PKCS#1 v1.5 Signature Example 14.11 - -# ----------------- - -# Message to be signed: -87 fb a9 89 f3 cc 15 af 7e e7 61 c0 88 26 4a b7 -71 52 39 e0 b8 c8 a9 e4 8e 11 db 68 03 31 39 c2 -a2 89 ea 42 6e be 26 9f 5f b7 07 09 0a fb 89 1a -49 ca 05 c0 55 0d 72 9b f4 d3 7c 8f 1d a7 a3 ca -2f 43 87 a4 0b 5f 79 13 a3 85 f5 5b 81 41 af 36 -be 8f 57 16 65 f8 57 e7 7a 5c 9c cc e6 ba 8f 2b -e4 63 23 cc 56 91 56 6f f4 b6 d7 85 43 04 b9 3b -ba 1a 17 59 df b1 44 c9 54 7c f2 bc 8e aa ed aa -4f 1d d2 52 82 3b 72 87 ca 55 5d 21 06 08 9a 24 -3e 5d fe 8f c3 1d 3f 46 22 2a 68 ab af 31 81 5a -94 7e 58 57 cf 6a 33 17 0e cc b6 a5 e0 6d 23 cc -9d 48 ea f6 cd bc - -# Signature: -0b 5f 1c fc 25 3b aa d4 b9 83 f8 fe 05 0d 4a 01 -7c c4 66 98 0e bd 23 c9 d5 53 43 f5 10 7e 04 1e -b6 54 78 10 fd ba 46 86 e6 10 83 2f 92 82 ed f0 -66 04 b0 ab fe ea 38 01 32 79 17 79 40 99 7b 28 -90 2b 14 db 37 9e eb 4f 44 00 5d fc b0 03 68 03 -c9 f1 25 bc e1 f2 a8 2c 4d 30 07 ae 96 b8 48 b8 -13 ec 8c 97 ca 3f 71 0a 9a e0 db c2 8a 55 e0 58 -81 b8 58 db 55 71 20 f3 3c 59 cd 43 60 f9 20 8c -74 b2 7e c6 5d 11 ea 41 fa 6a 9e ac f2 a6 11 68 -ad 07 c2 09 94 8f 35 a1 61 f4 1f 87 54 0e a1 82 -84 aa b8 d8 f9 78 61 31 f0 43 90 2b 89 c1 7a 56 -0d 90 94 64 47 5a 0d fc e5 89 09 18 7c d6 e4 46 - -# PKCS#1 v1.5 Signature Example 14.12 - -# ----------------- - -# Message to be signed: -4b 5e 80 30 5c be a9 0d 63 7f db 23 47 c6 fe b6 -78 42 eb ac 6f 90 3d b5 a7 1e ba ab 8a 1c 2d f1 -12 60 a1 ec 90 7b 8b 63 4d 37 d3 6e d8 de 7d 0d -a1 03 bc 4a 9e 93 3f b7 bf ee 59 1c c9 33 29 9f -ee 46 0f 35 42 c9 78 f3 07 ae 05 24 64 f3 06 20 -ce bf 3c 9a 9c b6 a9 01 53 0c 1d 56 13 df 07 74 -31 2d 4b 5f - -# Signature: -b6 f0 3d 35 33 50 07 a7 47 ae 68 67 60 f9 ed ad -08 89 d2 d4 ca 0c b8 8b 67 43 12 d3 2c 55 2b 7a -66 c5 a9 52 8c 01 4b 58 c8 49 f2 31 a2 e0 45 68 -2e 3b bb 14 c7 f9 5f f8 bd b6 58 7f 25 11 cc 6b -f9 24 39 60 08 11 03 d4 7e 77 69 a1 77 eb db 91 -f1 28 73 de cd 5d c0 67 e4 5c 2b 2a 04 4f fa 3f -bb 04 c2 0a 3d c2 01 38 40 3f f2 5c a0 eb ad 96 -e4 85 9f a4 a0 d7 32 85 2a f3 50 a2 75 69 9a 94 -aa 6e 47 f2 17 e3 83 ef 8f ce 8e b6 ee d7 82 6d -7c 61 58 fc 58 82 e4 61 35 45 fa 26 ee e0 c9 f9 -3d e7 a1 65 08 ea 16 19 70 46 0d 6a 7c a7 70 f8 -de 8b a9 3c ea f3 97 dd f1 fb ce e2 82 a1 53 7d - -# PKCS#1 v1.5 Signature Example 14.13 - -# ----------------- - -# Message to be signed: -e5 ad 62 7f 24 f4 11 7a 0a 6b e4 a5 5f db 88 3d -75 a6 73 12 15 4a 71 89 23 d0 e8 f5 73 0a 54 d8 -ca 7c 97 4e 4d 59 33 8b b5 71 30 5c ce 99 0c bb -cf a9 1e a9 b7 73 b8 3d 7a 1f 0f fe c4 c6 b1 43 -fe 05 05 8b c9 0c e1 46 f3 69 cb ae 3b 3d 99 70 -5e f4 3d 07 21 b8 - -# Signature: -73 29 86 d4 ed db 8a 7e 9b 65 dc 01 6d d5 71 ef -ab eb 84 49 0e 88 e3 e7 3b 63 e8 0d 1c c8 6a 45 -2d ec 29 fc 81 7e 8a d4 ee bd dc d9 7c 74 5b c4 -79 7e 54 fe c6 ac e2 91 b1 96 dc 24 65 f0 8c f1 -dd d2 17 e7 7a af 7d 50 98 77 91 de 81 b0 41 10 -d1 1a b8 55 89 06 60 4e b9 d9 2b 35 f9 00 75 af -42 28 01 45 b0 88 e8 75 3d 0d b7 3c d3 a3 2b d1 -9c ea 35 38 ee 4f 09 27 3e f6 6d 07 05 d4 5e e7 -10 9f e5 95 df 55 76 7b 3d 10 81 72 27 bb 6b a3 -95 75 b8 5d 6a 35 a2 ff b8 8c b2 67 db fc 28 2b -b8 a3 de e0 2e c7 7b 0c b8 13 55 70 f8 a7 d7 ad -04 34 1a 08 64 e6 7f f6 fa 02 59 a1 69 74 c8 6a - -# PKCS#1 v1.5 Signature Example 14.14 - -# ----------------- - -# Message to be signed: -03 e3 9b a7 a8 0c 77 14 16 d8 52 63 e4 d4 3c 63 -93 df e7 96 52 3b 89 e0 a4 61 62 88 80 80 0d 8f -c2 43 1b 66 30 54 09 e0 6c 95 ae 7a 17 d5 34 b1 -e8 4c 19 9d fe 73 1d a9 49 f1 64 57 1d ec c8 b1 -66 be b8 dc 08 7c b4 86 99 98 c2 - -# Signature: -60 76 3b ea f7 c3 e2 2b 3b 22 dc 44 d9 47 82 6e -23 fc f9 6b 01 b7 74 1b 24 b1 b9 d9 3c 07 f0 c6 -4d 39 67 98 bb 58 9b d4 25 29 53 69 bf b8 79 ad -d3 42 cd 76 28 0b 57 e6 35 4f 61 95 e8 42 fa 2a -95 f1 c4 6f 0b 70 78 6c 31 8d e9 a5 5a 8a c4 54 -5e e7 cf f3 99 c6 78 e5 78 f8 93 9e d4 9e 84 bb -a9 aa e5 7c 1a 36 fc c3 94 86 46 6e 40 12 f9 58 -87 a6 81 10 f1 a4 84 67 e4 c2 34 f5 81 c5 ec 47 -71 06 cc b3 ec 86 17 b4 be 21 93 37 44 8f e7 2e -25 de ab 53 ea cb 92 e5 96 62 95 b3 a5 57 12 19 -58 df e7 9c a4 72 f7 9e fb da 1d cf ba 9d bd 0f -97 67 32 c0 93 b9 8f f1 93 c9 02 98 7a 42 6c 0f - -# PKCS#1 v1.5 Signature Example 14.15 - -# ----------------- - -# Message to be signed: -d4 c2 35 96 7d 4e 87 b6 71 1e 32 ac 70 37 a3 97 -f9 9b 1c ad 95 a1 88 94 6a 48 64 0e b6 b7 b0 03 -c3 2f 85 a1 21 b0 9c a4 c8 be c0 b8 27 44 aa f2 -7d 16 6c ef c7 a9 70 2a d3 1d bd 15 ea 2a 18 5f -5b 9b a6 42 f9 49 07 8b c6 09 b9 a8 a3 36 92 d7 -18 49 39 d1 f9 eb 42 6a 6d b7 40 ea d9 4c fe a1 -7f eb 06 18 d7 4d 9a 65 16 88 e9 0b 9b b7 05 24 -30 5d 61 8c 88 a5 5f 45 44 50 e0 c5 85 d3 a8 d9 -81 65 81 8f 36 3b 20 a2 52 49 2e 15 12 58 58 90 -a8 c3 20 a7 18 71 58 ce 0d 4e 4b e1 c7 01 f8 af -dc 54 5c 4d ab 86 8d 41 d4 1c 21 c2 cb 1f 67 df -79 53 d5 f7 26 1c 50 92 bb c4 33 2a c5 57 5b 6e -0e 03 14 9c 04 0c 3e 20 1c 79 15 ac 20 22 88 4e -a0 e6 c2 14 03 f0 b4 4e 0f 71 34 3f c9 11 1a 7d -b2 f5 e9 e5 09 c2 d8 97 84 ef b2 2c 31 e8 16 5e -0e 93 6c - -# Signature: -46 9f 08 bd d0 3b 75 64 0e 8a 44 a0 7c a8 de 4b -ac f8 33 1f e3 9c 44 d2 3a a7 b5 81 dc 3f 00 f5 -42 1b 5c 17 2d 0f fc e9 14 97 d3 d4 b1 04 f5 6a -98 ec 94 f7 19 27 1e 58 b4 3e fb d8 76 e1 c1 31 -fa 97 82 07 28 a5 56 75 55 21 4c d9 4a 18 fc ce -5c 2f 53 b1 9d 1f 3c 73 d0 9f 7b e1 80 97 38 b0 -3c e7 69 e4 54 ed 4c be dc af 43 c4 8b d3 9d f2 -f8 bb 63 b8 fc 4d 0d 4d 5b 20 4f c2 20 01 3a 66 -8c 19 f9 75 02 93 a4 71 15 83 88 26 45 db f3 ac -4f 83 9b 6f d1 cf 3b 5e e8 d7 34 e1 da 37 4d 91 -d8 9e a3 18 e9 18 34 83 f4 a0 9a 93 51 4a f5 4f -75 d0 a3 56 51 b2 40 f7 9f 20 a2 97 7d 14 57 8c - -# PKCS#1 v1.5 Signature Example 14.16 - -# ----------------- - -# Message to be signed: -d0 6a dc a4 c2 0f 0d 9f 7b e6 5a 20 32 7c 29 47 -56 e3 ed d9 e1 d3 9d 0f 95 c7 9d f1 ba c3 34 35 -9f ab 94 3d 85 45 a3 ba a3 7a 59 29 5c 58 b2 37 -75 2b 8d e7 d4 32 3c 56 e9 d7 cb 0c 7f 83 1d 54 -9c b3 87 19 a0 81 d5 8b 60 57 ec b7 42 9e 2c a6 -07 cd 13 06 35 59 43 15 9d c9 24 ad 3e 9c b1 3d -0e 71 ea dc b0 05 e1 84 c0 c2 ce aa f9 d7 4a 1c -1d f6 fe c1 8c 97 a0 - -# Signature: -9f d9 52 5c 15 c8 43 b8 06 9c 15 f2 6d 3f 95 24 -6a f3 7a 8b 8e 6b 93 9d df 5b 38 28 cd b6 2c fa -37 3a 92 ec c4 13 84 a8 77 ca a0 90 aa 13 c8 47 -ef 28 29 dd ca 14 14 20 14 02 14 81 55 05 50 da -a2 9d e2 ab 70 01 b8 55 c9 34 2f 0c 90 bf a6 c3 -34 9b 2c 39 62 13 ef 70 cb d8 4b b4 ce 6e f5 8b -17 6e 9f 6f cc db 6e 46 ca c3 41 14 a1 b9 f9 8a -8a 32 75 7b f7 5d 6b fc 45 5a de 6a 01 f9 60 50 -1b 79 f5 fb e3 b3 8f ca 03 46 4e 43 d4 96 63 c7 -9f f6 4d 32 98 1e 44 80 cd f4 2d 8a f8 da a7 f1 -2b 81 a5 aa 96 5f ad aa 3c 03 b7 ff 22 d3 cf df -fe 3c ad f4 d5 98 9e d1 4c 96 9a 6e 8c 9a 1e 04 - -# PKCS#1 v1.5 Signature Example 14.17 - -# ----------------- - -# Message to be signed: -3a 63 02 d7 9e 26 b5 55 c7 7d e9 2a 91 e0 78 57 -1e d1 57 2f fc 3e 4f c9 05 ce 53 f1 04 b3 22 00 -95 7e b2 b5 e5 f3 e3 fc bb c1 62 f9 e5 25 c7 06 -f1 dd 04 fc ab 51 6b c1 8a 8e 4f 88 a9 38 a5 b2 -56 85 d7 8d dc 9f 10 4e 49 bf 5c a0 b6 5a 4b 96 -57 e0 4a 71 fb 50 eb 4a ac 22 c0 bb 93 f6 0c ac -94 83 f1 77 13 55 3d ca 4b 31 e2 72 7b 32 e3 50 -fe 20 4c ec d9 a7 cd a4 da da 2e 87 ff 6f 2b 73 -e7 b0 78 1e 21 2f 34 fe 36 36 10 f0 18 a7 99 37 -37 55 ab 46 66 7b b6 52 5d 7d c7 a0 e8 28 90 17 -f5 48 7f a6 92 ef 2f dd ce 38 ad 3f 45 30 de 7e -e5 05 66 70 a7 35 d3 78 d1 ef c9 94 81 f8 c9 fb -ee a9 9f 56 6a 0b 6e 28 46 26 44 a6 d9 c6 cc 88 -fb - -# Signature: -b7 57 fa 74 7c 5c 87 67 66 f3 58 ac bf c7 e7 b8 -05 96 36 8d 0d 86 29 50 e5 55 f4 71 64 6f 64 0e -85 1d 61 2a 55 6f 55 a7 4a 32 92 42 9e 4c 14 f7 -8b a3 eb bd 96 87 f3 08 de db 3c fe d7 1f 4a 9d -d2 6f a5 12 2f 7f 71 94 ae b6 3b c8 b7 5c 34 31 -87 11 5a 1d bd 35 95 90 f7 ff 38 62 b7 08 85 af -1c a9 34 b8 ce bc 2c c9 e6 47 25 3f d1 32 7a 2e -d4 24 4d c8 f5 85 55 a6 89 7c a3 22 9c 80 1e 7b -f6 28 f5 25 e6 c9 48 80 4d 0b 1b 6d bc d7 90 2a -cd e7 a2 5b a5 91 d8 86 e2 8d aa 8d ed 5e e4 01 -e3 4e 64 12 f1 e6 44 ee c1 2a e9 42 61 90 6a 17 -26 11 dd 5a 98 67 78 9c 41 90 34 68 84 29 e9 06 - -# PKCS#1 v1.5 Signature Example 14.18 - -# ----------------- - -# Message to be signed: -9d c7 ce 1d 02 ca dc f1 0d f1 11 04 56 b8 a7 a5 -ea 43 76 b2 7e 8b f8 cc 8d b8 10 49 fd a3 fb d0 -db 8a 3d 0f 6b d7 48 6b 8d 84 bf 9f fd 4b 64 17 -52 df 7e df 50 86 5e 8e 58 ad 49 f7 24 0e 47 d3 -fc 98 5e db 59 6d ab fe 01 72 2a 22 77 60 38 3c -e2 4d 4a 05 d8 b0 6e f5 b9 6f 11 7d 81 - -# Signature: -05 a9 5e 11 b5 bf b0 1d cf de 3e fa 9f 31 3d 81 -bb 0d fd 46 de 63 b0 65 80 56 c5 3a f7 ad 9e 89 -43 8b 7d e7 8f f8 ea 88 d0 72 b1 74 9a 52 9f 1c -c9 cf 2c f3 2e 5a b7 20 e0 69 b4 90 6d 28 2a 03 -dd 78 d1 b3 ca 2a 3f 92 5b f5 1c 74 91 b7 3b a0 -bf 54 d5 0d 97 1d e5 b2 77 26 d8 fb 3e e2 77 34 -97 df 35 49 51 7e ed cd 9d e6 8d 90 df 35 d3 f0 -50 81 15 1a da b5 39 73 85 ab ee a7 2b 69 bd 0d -e1 8d ce e9 a2 be 00 e9 1a 03 24 03 b1 f8 1b bc -0a e7 31 c6 c0 d9 cf dd 06 c3 31 ed 89 d7 de 1d -e1 df 46 cf 09 ce 53 df 15 97 fb 69 94 68 1c 7f -be 94 c9 b0 8e 50 aa 1b 12 41 96 02 98 7f 37 dd - -# PKCS#1 v1.5 Signature Example 14.19 - -# ----------------- - -# Message to be signed: -87 a6 45 61 1b b1 91 85 3f 4f d9 b7 40 b2 de 4c -16 3e 75 62 b1 17 62 63 3e 72 df b6 f6 be 7e fb -90 41 a9 65 82 94 3a b2 01 83 91 c0 5a df ab 46 -4d d6 e3 3f 96 0d db f3 b1 7a c6 2b b7 8a fc 1c -6a 45 39 6c 09 08 70 7c 62 36 12 55 cb f0 9b ad -95 9b 31 33 da 48 d5 32 ba 7e f1 d2 0f b6 57 2a -1f 0e d6 f2 c6 e1 be c1 b1 7c c3 19 ba f7 2a 19 -8a a0 01 b8 3d 4e 98 69 c3 40 90 f2 29 a9 c7 f1 -42 a7 4e 85 ab 3e d5 1c 69 ac 15 fa b4 ab e4 67 -15 73 cf 5a d2 b5 8e 78 a9 44 ed cc ea c5 ee 58 -bf ce 66 f4 0a ac 2a be 4e 5f a0 72 dd 0f 66 4f -ac 81 1a ef 08 42 10 e5 64 1b 9c d0 8c 87 24 f4 -b4 1e ed 1d 9d 4a 18 77 80 46 59 7b d1 a2 7b bb -c0 56 c1 5e 43 c0 38 ef 37 5b 43 5e 73 a7 d3 2f -01 50 16 b7 82 35 ce 75 a7 b7 62 04 99 68 e9 93 -22 53 e4 2c a9 76 c8 d8 dc a1 bb 2d bf - -# Signature: -b8 80 62 26 fb d3 d9 7b 79 f0 dd 1d 8c f9 a2 35 -e5 1b 94 b7 e2 23 ec 68 33 2d 68 6e d3 31 3e d1 -be f6 88 70 23 af 7a 5c 99 df 03 68 a3 49 c6 a5 -94 79 5b 62 35 36 10 13 42 69 0d eb 5f ad 90 23 -78 2f 6d be 16 43 a4 56 18 57 4f 16 72 81 12 a7 -e0 ef 9f 58 65 6f 6a db f4 00 40 9f 4a a5 01 3c -15 9a 36 8c a5 9b de 6b 39 18 df e1 d8 02 fa 6c -fa 06 c9 ca 31 ac a7 8c b2 63 c8 ed 91 7a f9 a9 -a7 95 d5 e2 c4 01 e7 29 96 4c f7 ac 28 cc db 36 -d9 59 ed 7f d9 af 1c 47 09 7b 62 55 c6 4e 1b 16 -f2 1d 86 87 04 55 d5 f0 bf 90 1f cc 68 c3 4b 72 -c1 be e7 2e 6b 8c 4e 36 ae 33 99 6c 7a 59 d0 9a - -# PKCS#1 v1.5 Signature Example 14.20 - -# ----------------- - -# Message to be signed: -03 2e 28 3e 59 6e 87 fa a6 cf cf b8 fa 04 df 6a -61 e6 11 df e7 3b bf 66 8e e6 7b 49 6b fb 0f fb -7f 9d c9 31 a9 8b ce db 25 - -# Signature: -b9 fd c0 3d c1 99 70 71 3c 4a 17 e8 7e 7e bb 5f -13 50 5d 59 cb b2 2b a7 2e 9f f1 6b df 8b 65 9c -33 30 a9 3d cc 09 2a 5d 38 5b 2d 5e 15 34 00 31 -46 c0 50 b7 dd c4 f7 56 56 9d a2 11 80 15 82 26 -61 19 f5 59 9b 1e 65 e8 eb ea 6b c9 64 42 ee 12 -ac b9 6c 6d ba 08 3e 92 10 94 da 9c 9e cf 5a fa -a5 4b 7f de 7a 0c ae 3f df e4 d2 51 93 3a 52 f0 -2d c2 3e 1b 32 14 c6 83 e1 9a f4 6e 18 c7 49 56 -dc 6a b3 50 2d 46 ca ac 3c b2 6b 70 7c dc 30 25 -b6 de 4e 83 54 3b 95 84 5b 4a 15 97 60 77 0a 4b -d0 9e 46 35 a0 4e 21 7d 66 5c 95 94 87 9f 38 1d -71 10 09 34 fa da 61 c7 cc 22 b8 d2 ff 8e b3 5a - -# ============================================= - -# Example 15: A 2048-bit RSA key pair -# ----------------------------------- - - -# Public key -# ---------- - -# Modulus: -df 27 1f d2 5f 86 44 49 6b 0c 81 be 4b d5 02 97 -ef 09 9b 00 2a 6f d6 77 27 eb 44 9c ea 56 6e d6 -a3 98 1a 71 31 2a 14 1c ab c9 81 5c 12 09 e3 20 -a2 5b 32 46 4e 99 99 f1 8c a1 3a 9f d3 89 25 58 -f9 e0 ad ef dd 36 50 dd 23 a3 f0 36 d6 0f e3 98 -84 37 06 a4 0b 0b 84 62 c8 be e3 bc e1 2f 1f 28 -60 c2 44 4c dc 6a 44 47 6a 75 ff 4a a2 42 73 cc -be 3b f8 02 48 46 5f 8f f8 c3 a7 f3 36 7d fc 0d -f5 b6 50 9a 4f 82 81 1c ed d8 1c da aa 73 c4 91 -da 41 21 70 d5 44 d4 ba 96 b9 7f 0a fc 80 65 49 -8d 3a 49 fd 91 09 92 a1 f0 72 5b e2 4f 46 5c fe -7e 0e ab f6 78 99 6c 50 bc 5e 75 24 ab f7 3f 15 -e5 be f7 d5 18 39 4e 31 38 ce 49 44 50 6a aa af -3f 9b 23 6d ca b8 fc 00 f8 7a f5 96 fd c3 d9 d6 -c7 5c d5 08 36 2f ae 2c be dd cc 4c 74 50 b1 7b -77 6c 07 9e cc a1 f2 56 35 1a 43 b9 7d be 21 53 - -# Exponent: -01 00 01 - -# Private key -# ----------- - -# Modulus: -df 27 1f d2 5f 86 44 49 6b 0c 81 be 4b d5 02 97 -ef 09 9b 00 2a 6f d6 77 27 eb 44 9c ea 56 6e d6 -a3 98 1a 71 31 2a 14 1c ab c9 81 5c 12 09 e3 20 -a2 5b 32 46 4e 99 99 f1 8c a1 3a 9f d3 89 25 58 -f9 e0 ad ef dd 36 50 dd 23 a3 f0 36 d6 0f e3 98 -84 37 06 a4 0b 0b 84 62 c8 be e3 bc e1 2f 1f 28 -60 c2 44 4c dc 6a 44 47 6a 75 ff 4a a2 42 73 cc -be 3b f8 02 48 46 5f 8f f8 c3 a7 f3 36 7d fc 0d -f5 b6 50 9a 4f 82 81 1c ed d8 1c da aa 73 c4 91 -da 41 21 70 d5 44 d4 ba 96 b9 7f 0a fc 80 65 49 -8d 3a 49 fd 91 09 92 a1 f0 72 5b e2 4f 46 5c fe -7e 0e ab f6 78 99 6c 50 bc 5e 75 24 ab f7 3f 15 -e5 be f7 d5 18 39 4e 31 38 ce 49 44 50 6a aa af -3f 9b 23 6d ca b8 fc 00 f8 7a f5 96 fd c3 d9 d6 -c7 5c d5 08 36 2f ae 2c be dd cc 4c 74 50 b1 7b -77 6c 07 9e cc a1 f2 56 35 1a 43 b9 7d be 21 53 - -# Public exponent: -01 00 01 - -# Exponent: -5b d9 10 25 78 30 dc e1 75 20 b0 34 41 a5 1a 8c -ab 94 02 0a c6 ec c2 52 c8 08 f3 74 3c 95 b7 c8 -3b 8c 8a f1 a5 01 43 46 eb c4 24 2c df b5 d7 18 -e3 0a 73 3e 71 f2 91 e4 d4 73 b6 1b fb a6 da ca -ed 0a 77 bd 1f 09 50 ae 3c 91 a8 f9 01 11 88 25 -89 e1 d6 27 65 ee 67 1e 7b ae ea 30 9f 64 d4 47 -bb cf a9 ea 12 dc e0 5e 9e a8 93 9b c5 fe 61 08 -58 12 79 c9 82 b3 08 79 4b 34 48 e7 f7 b9 52 29 -2d f8 8c 80 cb 40 14 2c 4b 5c f5 f8 dd aa 08 91 -67 8d 61 0e 58 2f cb 88 0f 0d 70 7c af 47 d0 9a -84 e1 4c a6 58 41 e5 a3 ab c5 e9 db a9 40 75 a9 -08 43 41 f0 ed ad 9b 68 e3 b8 e0 82 b8 0b 6e 6e -8a 05 47 b4 4f b5 06 1b 6a 91 31 60 3a 55 37 dd -ab d0 1d 8e 86 3d 89 22 e9 aa 3e 4b fa ea 0b 39 -d7 92 83 ad 2c bc 8a 59 cc e7 a6 ec f4 e4 c8 1e -d4 c6 59 1c 80 7d ef d7 1a b0 68 66 bb 5e 77 45 - -# Prime 1: -f4 4f 5e 42 46 39 1f 48 2b 2f 52 96 e3 60 2e b3 -4a a1 36 42 77 10 f7 c0 41 6d 40 3f d6 9d 4b 29 -13 0c fe be f3 4e 88 5a bd b1 a8 a0 a5 f0 e9 b5 -c3 3e 1f c3 bf c2 85 b1 ae 17 e4 0c c6 7a 19 13 -dd 56 37 19 81 5e ba f8 51 4c 2a 7a a0 01 8e 63 -b6 c6 31 dc 31 5a 46 23 57 16 42 3d 11 ff 58 03 -4e 61 06 45 70 36 06 91 9f 5c 7c e2 66 0c d1 48 -bd 9e fc 12 3d 9c 54 b6 70 55 90 d0 06 cf cf 3f - -# Prime 2: -e9 d4 98 41 e0 e0 a6 ad 0d 51 78 57 13 3e 36 dc -72 c1 bd d9 0f 91 74 b5 2e 26 57 0f 37 36 40 f1 -c1 85 e7 ea 8e 2e d7 f1 e4 eb b9 51 f7 0a 58 02 -36 33 b0 09 7a ec 67 c6 dc b8 00 fc 1a 67 f9 bb -05 63 61 0f 08 eb c8 74 6a d1 29 77 21 36 eb 1d -da f4 64 36 45 0d 31 83 32 a8 49 82 fe 5d 28 db -e5 b3 e9 12 40 7c 3e 0e 03 10 0d 87 d4 36 ee 40 -9e ec 1c f8 5e 80 ab a0 79 b2 e6 10 6b 97 bc ed - -# Prime exponent 1: -ed 10 2a cd b2 68 71 53 4d 1c 41 4e ca d9 a4 d7 -32 fe 95 b1 0e ea 37 0d a6 2f 05 de 2c 39 3b 1a -63 33 03 ea 74 1b 6b 32 69 c9 7f 70 4b 35 27 02 -c9 ae 79 92 2f 7b e8 d1 0d b6 7f 02 6a 81 45 de -41 b3 0c 0a 42 bf 92 3b ac 5f 75 04 c2 48 60 4b -9f aa 57 ed 6b 32 46 c6 ba 15 8e 36 c6 44 f8 b9 -54 8f cf 4f 07 e0 54 a5 6f 76 86 74 05 44 40 bc -0d cb bc 9b 52 8f 64 a0 17 06 e0 5b 0b 91 10 6f - -# Prime exponent 2: -68 27 92 4a 85 e8 8b 55 ba 00 f8 21 91 28 bd 37 -24 c6 b7 d1 df e5 62 9e f1 97 92 5f ec af f5 ed -b9 cd f3 a7 be fd 8e a2 e8 dd 37 07 13 8b 3f f8 -7c 3c 39 c5 7f 43 9e 56 2e 2a a8 05 a3 9d 7c d7 -99 66 d2 ec e7 84 5f 1d bc 16 be e9 99 99 e4 d0 -bf 9e ec a4 5f cd a8 a8 50 00 35 fe 6b 5f 03 bc -2f 6d 1b fc 4d 4d 0a 37 23 96 1a f0 cd ce 4a 01 -ee c8 2d 7f 54 58 ec 19 e7 1b 90 ee ef 7d ff 61 - -# Coefficient: -57 b7 38 88 d1 83 a9 9a 63 07 42 22 77 55 1a 3d -9e 18 ad f0 6a 91 e8 b5 5c ef fe f9 07 7c 84 96 -94 8e cb 3b 16 b7 81 55 cb 2a 3a 57 c1 19 d3 79 -95 1c 01 0a a6 35 ed cf 62 d8 4c 5a 12 2a 8d 67 -ab 5f a9 e5 a4 a8 77 2a 1e 94 3b af c7 0a e3 a4 -c1 f0 f3 a4 dd ff ae fd 18 92 c8 cb 33 bb 0d 0b -95 90 e9 63 a6 91 10 fb 34 db 7b 90 6f c4 ba 28 -36 99 5a ac 7e 52 74 90 ac 95 2a 02 26 8a 4f 18 - -# PKCS#1 v1.5 signing of 20 random messages -# ------------------------------------------------------- - -# PKCS#1 v1.5 Signature Example 15.1 - -# ----------------- - -# Message to be signed: -f4 5d 55 f3 55 51 e9 75 d6 a8 dc 7e a9 f4 88 59 -39 40 cc 75 69 4a 27 8f 27 e5 78 a1 63 d8 39 b3 -40 40 84 18 08 cf 9c 58 c9 b8 72 8b f5 f9 ce 8e -e8 11 ea 91 71 4f 47 ba b9 2d 0f 6d 5a 26 fc fe -ea 6c d9 3b 91 0c 0a 2c 96 3e 64 eb 18 23 f1 02 -75 3d 41 f0 33 59 10 ad 3a 97 71 04 f1 aa f6 c3 -74 27 16 a9 75 5d 11 b8 ee d6 90 47 7f 44 5c 5d -27 20 8b 2e 28 43 30 fa 3d 30 14 23 fa 7f 2d 08 -6e 0a d0 b8 92 b9 db 54 4e 45 6d 3f 0d ab 85 d9 -53 c1 2d 34 0a a8 73 ed a7 27 c8 a6 49 db 7f a6 -37 40 e2 5e 9a f1 53 3b 30 7e 61 32 99 93 11 0e -95 19 4e 03 93 99 c3 82 4d 24 c5 1f 22 b2 6b de -10 24 cd 39 59 58 a2 df eb 48 16 a6 e8 ad ed b5 -0b 1f 6b 56 d0 b3 06 0f f0 f1 c4 cb 0d 0e 00 1d -d5 9d 73 be 12 - -# Signature: -b7 5a 54 66 b6 5d 0f 30 0e f5 38 33 f2 17 5c 8a -34 7a 38 04 fc 63 45 1d c9 02 f0 b7 1f 90 83 45 -9e d3 7a 51 79 a3 b7 23 a5 3f 10 51 64 2d 77 37 -4c 4c 6c 8d bb 1c a2 05 25 f5 c9 f3 2d b7 76 95 -35 56 da 31 29 0e 22 19 74 82 ce b6 99 06 c4 6a -75 8f b0 e7 40 9b a8 01 07 7d 2a 0a 20 ea e7 d1 -d6 d3 92 ab 49 57 e8 6b 76 f0 65 2d 68 b8 39 88 -a7 8f 26 e1 11 72 ea 60 9b f8 49 fb bd 78 ad 7e -dc e2 1d e6 62 a0 81 36 8c 04 06 07 ce e2 9d b0 -62 72 27 f4 49 63 ad 17 1d 22 93 b6 33 a3 92 e3 -31 dc a5 4f e3 08 27 52 f4 3f 63 c1 61 b4 47 a4 -c6 5a 68 75 67 0d 5f 66 00 fc c8 60 a1 ca eb 0a -88 f8 fd ec 4e 56 43 98 a5 c4 6c 87 f6 8c e0 70 -01 f6 21 3a be 0a b5 62 5f 87 d1 90 25 f0 8d 81 -da c7 bd 45 86 bc 93 82 19 1f 6d 28 80 f6 22 7e -5d f3 ee d2 1e 77 92 d2 49 48 04 87 f3 65 52 61 - -# PKCS#1 v1.5 Signature Example 15.2 - -# ----------------- - -# Message to be signed: -c1 4b 4c 60 75 b2 f9 aa d6 61 de f4 ec fd 3c b9 -33 c6 23 f4 e6 3b f5 34 10 d2 f0 16 d1 ab 98 e2 -72 9e cc f8 00 6c d8 e0 80 50 73 7d 95 fd bf 29 -6b 66 f5 b9 79 2a 90 29 36 c4 f7 ac 69 f5 14 53 -ce 43 69 45 2d c2 2d 96 f0 37 74 81 14 66 20 00 -dd 9c d3 a5 e1 79 f4 e0 f8 1f a6 a0 31 1c a1 ae -e6 51 9a 0f 63 ce c7 8d 27 bb 72 63 93 fb 7f 1f -88 cd e7 c9 7f 8a 66 cd 66 30 12 81 da c3 f3 a4 -33 24 8c 75 d6 c2 dc d7 08 b6 a9 7b 0a 3f 32 5e -0b 29 64 f8 a5 81 9e 47 9b - -# Signature: -af a7 34 34 62 be a1 22 cc 14 9f ca 70 ab da e7 -94 46 67 7d b5 37 36 66 af 7d c3 13 01 5f 4d e7 -86 e6 e3 94 94 6f ad 3c c0 e2 b0 2b ed ba 50 47 -fe 9e 2d 7d 09 97 05 e4 a3 9f 28 68 32 79 cf 0a -c8 5c 15 30 41 22 42 c0 e9 18 95 3b e0 00 e9 39 -cf 3b f1 82 52 5e 19 93 70 fa 79 07 eb a6 9d 5d -b4 63 10 17 c0 e3 6d f7 03 79 b5 db 8d 4c 69 5a -97 9a 8e 61 73 22 40 65 d7 dc 15 13 2e f2 8c d8 -22 79 51 63 06 3b 54 c6 51 14 1b e8 6d 36 e3 67 -35 bc 61 f3 1f ca 57 4e 53 09 f3 a3 bb df 91 ef -f1 2b 99 e9 cc 17 44 f1 ee 9a 1b d2 2c 5b ad 96 -ad 48 19 29 25 1f 03 43 fd 36 bc f0 ac de 7f 11 -e5 ad 60 97 77 21 20 27 96 fe 06 1f 9a da 1f c4 -c8 e0 0d 60 22 a8 35 75 85 ff e9 fd d5 93 31 a2 -8c 4a a3 12 15 88 fb 6c f6 83 96 d8 ac 05 46 59 -95 00 c9 70 85 00 a5 97 2b d5 4f 72 cf 8d b0 c8 - -# PKCS#1 v1.5 Signature Example 15.3 - -# ----------------- - -# Message to be signed: -d0 23 71 ad 7e e4 8b bf db 27 63 de 7a 84 3b 94 -08 ce 5e b5 ab f8 47 ca 3d 73 59 86 df 84 e9 06 -0b db cd d3 a5 5b a5 5d de 20 d4 76 1e 1a 21 d2 -25 c1 a1 86 f4 ac 4b 30 19 d3 ad f7 8f e6 33 46 -67 f5 6f 70 c9 01 a0 a2 70 0c 6f 0d 56 ad d7 19 -59 2d c8 8f 6d 23 06 c7 00 9f 6e 7a 63 5b 4c b3 -a5 02 df e6 8d dc 58 d0 3b e1 0a 11 70 00 4f e7 -4d d3 e4 6b 82 59 1f f7 54 14 f0 c4 a0 3e 60 5e -20 52 4f 24 16 f1 2e ca 58 9f 11 1b 75 d6 39 c6 -1b aa 80 ca fd 05 cf 35 00 24 4a 21 9e d9 ce d9 -f0 b1 02 97 18 2b 65 3b 52 6f 40 0f 29 53 ba 21 -4d 5b cd 47 88 41 32 87 2a e9 0d 4d 6b 1f 42 15 -39 f9 f3 46 62 a5 6d c0 e7 b4 b9 23 b6 23 1e 30 -d2 67 67 97 81 7f 7c 33 7b 5a c8 24 ba 93 14 3b -33 81 fa 3d ce 0e 6a eb d3 8e 67 73 51 87 b1 eb -d9 5c 02 - -# Signature: -3b ac 63 f8 6e 3b 70 27 12 03 10 6b 9c 79 aa bd -9f 47 7c 56 e4 ee 58 a4 fc e5 ba f2 ca b4 96 0f -88 39 1c 9c 23 69 8b e7 5c 99 ae df 9e 1a bf 17 -05 be 1d ac 33 14 0a db 48 eb 31 f4 50 bb 9e fe -83 b7 b9 0d b7 f1 57 6d 33 f4 0c 1c ba 4b 8d 6b -1d 33 23 56 4b 0f 17 74 11 4f a7 c0 8e 6d 1e 20 -dd 8f bb a9 b6 ac 7a d4 1e 26 b4 56 8f 4a 8a ac -bf d1 78 a8 f8 d2 c9 d5 f5 b8 81 12 93 5a 8b c9 -ae 32 cd a4 0b 8d 20 37 55 10 73 50 96 53 68 18 -ce 2b 2d b7 1a 97 72 c9 b0 dd a0 9a e1 01 52 fa -11 46 62 18 d0 91 b5 3d 92 54 30 61 b7 29 4a 55 -be 82 ff 35 d5 c3 2f a2 33 f0 5a aa c7 58 50 30 -7e cf 81 38 3c 11 16 74 39 7b 1a 1b 9d 3b f7 61 -2c cb e5 ba cd 2b 38 f0 a9 83 97 b2 4c 83 65 8f -b6 c0 b4 14 0e f1 19 70 c4 63 0d 44 34 4e 76 ea -ed 74 dc be e8 11 db f6 57 59 41 f0 8a 65 23 b8 - -# PKCS#1 v1.5 Signature Example 15.4 - -# ----------------- - -# Message to be signed: -29 03 55 84 ab 7e 02 26 a9 ec 4b 02 e8 dc f1 27 -2d c9 a4 1d 73 e2 82 00 07 b0 f6 e2 1f ec cd 5b -d9 db b9 ef 88 cd 67 58 76 9e e1 f9 56 da 7a d1 -84 41 de 6f ab 83 86 db c6 93 - -# Signature: -28 d8 e3 fc d5 dd db 21 ff bd 8d f1 63 0d 73 77 -aa 26 51 e1 4c ad 1c 0e 43 cc c5 2f 90 7f 94 6d -66 de 72 54 e2 7a 6c 19 0e b0 22 ee 89 ec f6 22 -4b 09 7b 71 06 8c d6 07 28 a1 ae d6 4b 80 e5 45 -7b d3 10 6d d9 17 06 c9 37 c9 79 5f 2b 36 36 7f -f1 53 dc 25 19 a8 db 9b df 2c 80 74 30 c4 51 de -17 bb cd 0c e7 82 b3 e8 f1 02 4d 90 62 4d ea 7f -1e ed c7 42 0b 7e 7c aa 65 77 ce f4 31 41 a7 26 -42 06 58 0e 44 a1 67 df 5e 41 ee a0 e6 9a 80 54 -54 c4 0e ef c1 3f 48 e4 23 d7 a3 2d 02 ed 42 c0 -ab 03 d0 a7 cf 70 c5 86 0a c9 2e 03 ee 00 5b 60 -ff 35 03 42 4b 98 cc 89 45 68 c7 c5 6a 02 33 55 -1c eb e5 88 cf 8b 01 67 b7 df 13 ad ca d8 28 67 -68 10 49 9c 70 4d a7 ae 23 41 4d 69 e3 c0 d2 db -5d cb c2 61 3b c1 20 42 1f 9e 36 53 c5 a8 76 72 -97 64 3c 7e 07 40 de 01 63 55 45 3d 6c 95 ae 72 - -# PKCS#1 v1.5 Signature Example 15.5 - -# ----------------- - -# Message to be signed: -bd a3 a1 c7 90 59 ea e5 98 30 8d 3d f6 09 - -# Signature: -a1 56 17 6c b9 67 77 c7 fb 96 10 5d bd 91 3b c4 -f7 40 54 f6 80 7c 60 08 a1 a9 56 ea 92 c1 f8 1c -b8 97 dc 4b 92 ef 9f 4e 40 66 8d c7 c5 56 90 1a -cb 6c f2 69 fe 61 5b 0f b7 2b 30 a5 13 38 69 23 -14 b0 e5 87 8a 88 c2 c7 77 4b d1 69 39 b5 ab d8 -2b 44 29 d6 7b d7 ac 8e 5e a7 fe 92 4e 20 a6 ec -66 22 91 f2 54 8d 73 4f 66 34 86 8b 03 9a a5 f9 -d4 d9 06 b2 d0 cb 85 85 bf 42 85 47 af c9 1c 6e -20 52 dd cd 00 1c 3e f8 c8 ee fc 3b 6b 2a 82 b6 -f9 c8 8c 56 f2 e2 c3 cb 0b e4 b8 0d a9 5e ba 37 -1d 8b 5f 60 f9 25 38 74 3d db b5 da 29 72 c7 1f -e7 b9 f1 b7 90 26 8a 0e 77 0f c5 eb 4d 5d d8 52 -47 d4 8a e2 ec 3f 26 25 5a 39 85 52 02 06 a1 f2 -68 e4 83 e9 db b1 d5 ca b1 90 91 76 06 de 31 e7 -c5 18 2d 8f 15 1b f4 1d fe cc ae d7 cd e6 90 b2 -16 47 10 6b 49 0c 72 9d 54 a8 fe 28 02 a6 d1 26 - -# PKCS#1 v1.5 Signature Example 15.6 - -# ----------------- - -# Message to be signed: -c1 87 91 5e 4e 87 da 81 c0 8e d4 35 6a 0c ce ac -1c 4f b5 c0 46 b4 52 81 b3 87 ec 28 f1 ab fd 56 -7e 54 6b 23 6b 37 d0 1a e7 1d 3b 28 34 36 5d 3d -f3 80 b7 50 61 b7 36 b0 13 0b 07 0b e5 8a e8 a4 -6d 12 16 63 61 b6 13 db c4 7d fa eb 4c a7 46 45 -6c 2e 88 83 85 52 5c ca 9d d1 c3 c7 a9 ad a7 6d -6c - -# Signature: -9c ab 74 16 36 08 66 9f 75 55 a3 33 cf 19 6f e3 -a0 e9 e5 eb 1a 32 d3 4b b5 c8 5f f6 89 aa ab 0e -3e 65 66 8e d3 b1 15 3f 94 eb 3d 8b e3 79 b8 ee -f0 07 c4 a0 2c 70 71 ce 30 d8 bb 34 1e 58 c6 20 -f7 3d 37 b4 ec bf 48 be 29 4f 6c 9e 0e cb 5e 63 -fe c4 1f 12 0e 55 53 df a0 eb eb bb 72 64 0a 95 -37 ba dc b4 51 33 02 29 d9 f7 10 f6 2e 3e d8 ec -78 4e 50 ee 1d 92 62 b4 26 71 34 00 11 d7 d0 98 -c6 f2 55 7b 21 31 fa 9b d0 25 46 36 59 7e 88 ec -b3 5a 24 0e f0 fd 85 95 71 24 df 80 80 fe e1 e1 -49 af 93 99 89 e8 6b 26 c8 5a 58 81 fa e8 67 3d -9f d4 08 00 dd 13 4e b9 bd b6 41 0f 42 0b 0a a9 -7b 20 ef cf 2e b0 c8 07 fa eb 83 a3 cc d9 b5 1d -45 53 e4 1d fc 0d f6 ca 80 a1 e8 1d c2 34 bb 83 -89 dd 19 5a 38 b4 2d e4 ed c4 9d 34 64 78 b9 f1 -1f 05 57 20 5f 5b 0b d7 ff e9 c8 50 f3 96 d7 c4 - -# PKCS#1 v1.5 Signature Example 15.7 - -# ----------------- - -# Message to be signed: -ab fa 2e cb 7d 29 bd 5b cb 99 31 ce 2b ad 2f 74 -38 3e 95 68 3c ee 11 02 2f 08 e8 e7 d0 b8 fa 05 -8b f9 eb 7e b5 f9 88 68 b5 bb 1f b5 c3 1c ed a3 -a6 4f 1a 12 cd f2 0f cd 0e 5a 24 6d 7a 17 73 d8 -db a0 e3 b2 77 54 5b ab e5 8f 2b 96 e3 f4 ed c1 -8e ab f5 cd 2a 56 0f ca 75 fe 96 e0 7d 85 9d ef -b2 56 4f 3a 34 f1 6f 11 e9 1b 3a 71 7b 41 af 53 -f6 60 53 23 00 1a a4 06 c6 - -# Signature: -c4 b4 37 bc f7 03 f3 52 e1 fa f7 4e b9 62 20 39 -42 6b 56 72 ca f2 a7 b3 81 c6 c4 f0 19 1e 7e 4a -98 f0 ee bc d6 f4 17 84 c2 53 7f f0 f9 9e 74 98 -2c 87 20 1b fb c6 5e ae 83 2d b7 1d 16 da ca db -09 77 e5 c5 04 67 9e 40 be 0f 9d b0 6f fd 84 8d -d2 e5 c3 8a 7e c0 21 e7 f6 8c 47 df d3 8c c3 54 -49 3d 53 39 b4 59 5a 5b f3 1e 3f 8f 13 81 68 07 -37 3d f6 ad 0d c7 e7 31 e5 1a d1 9e b4 75 4b 13 -44 85 84 2f e7 09 d3 78 44 4d 8e 36 b1 72 4a 4f -da 21 ca fe e6 53 ab 80 74 7f 79 52 ee 80 4d ea -b1 03 9d 84 13 99 45 bb f4 be 82 00 87 53 f3 c5 -4c 78 21 a1 d2 41 f4 21 79 c7 94 ef 70 42 bb f9 -95 56 56 22 2e 45 c3 43 69 a3 84 69 7b 6a e7 42 -e1 8f a5 ca 7a ba d2 7d 9f e7 10 52 e3 31 0d 0f -52 c8 d1 2e a3 3b f0 53 a3 00 f4 af c4 f0 98 df -4e 6d 88 67 79 d6 45 94 d3 69 15 8f db c1 f6 94 - -# PKCS#1 v1.5 Signature Example 15.8 - -# ----------------- - -# Message to be signed: -df 40 44 a8 9a 83 e9 fc bf 12 62 54 0a e3 03 8b -bc 90 f2 b2 62 8b f2 a4 46 7a c6 77 22 d8 54 6b -3a 71 cb 0e a4 16 69 d5 b4 d6 18 59 c1 b4 e4 7c -ec c5 93 3f 75 7e c8 6d b0 64 4e 31 18 12 d0 0f -b8 02 f0 34 00 63 9c 0e 36 4d ae 5a eb c5 79 1b -c6 55 76 23 61 bc 43 c5 3d 3c 78 86 76 8f 79 68 -c1 c5 44 c6 f7 9f 7b e8 20 c7 e2 bd 2f 9d 73 e6 -2d ed 6d 2e 93 7e 6a 6d ae f9 0e e3 7a 1a 52 a5 -4f 00 e3 1a dd d6 48 94 cf 4c 02 e1 60 99 e2 9f -9e b7 f1 a7 bb 7f 84 c4 7a 2b 59 48 13 be 02 a1 -7b 7f c4 3b 34 c2 2c 91 92 52 64 12 6c 89 f8 6b -b4 d8 7f 3e f1 31 29 6c 53 a3 08 e0 33 1d ac 8b -af 3b 63 42 22 66 ec ef 2b 90 78 15 35 db da 41 -cb d0 cf 22 a8 cb fb 53 2e c6 8f c6 af b2 ac 06 - -# Signature: -14 14 b3 85 67 ae 6d 97 3e de 4a 06 84 2d cc 0e -05 59 b1 9e 65 a4 88 9b db ab d0 fd 02 80 68 29 -13 ba cd 5d c2 f0 1b 30 bb 19 eb 81 0b 7d 9d ed -32 b2 84 f1 47 bb e7 71 c9 30 c6 05 2a a7 34 13 -90 a8 49 f8 1d a9 cd 11 e5 ec cf 24 6d ba e9 5f -a9 58 28 e9 ae 0c a3 55 03 25 32 6d ee f9 f4 95 -30 ba 44 1b ed 4a c2 9c 02 9c 9a 27 36 b1 a4 19 -0b 85 08 4a d1 50 42 6b 46 d7 f8 5b d7 02 f4 8d -ac 5f 71 33 0b c4 23 a7 66 c6 5c c1 dc ab 20 d3 -d3 bb a7 2b 63 b3 ef 82 44 d4 2f 15 7c b7 e3 a8 -ba 5c 05 27 2c 64 cc 1a d2 1a 13 49 3c 39 11 f6 -0b 4e 9f 4e cc 99 00 eb 05 6e e5 9d 6f e4 b8 ff -6e 80 48 cc c0 f3 8f 28 36 fd 3d fe 91 bf 4a 38 -6e 1e cc 2c 32 83 9f 0c a4 d1 b2 7a 56 8f a9 40 -dd 64 ad 16 bd 01 25 d0 34 8e 38 30 85 f0 88 94 -86 1c a1 89 87 22 7d 37 b4 2b 58 4a 83 57 cb 04 - -# PKCS#1 v1.5 Signature Example 15.9 - -# ----------------- - -# Message to be signed: -ea 94 1f f0 6f 86 c2 26 92 7f cf 0e 3b 11 b0 87 -26 76 17 0c 1b fc 33 bd a8 e2 65 c7 77 71 f9 d0 -85 01 64 a5 ee cb cc 5c e8 27 fb fa 07 c8 52 14 -79 6d 81 27 e8 ca a8 18 94 ea 61 ce b1 44 9e 72 -fe a0 a4 c9 43 b2 da 6d 9b 10 5f e0 53 b9 03 9a -9c c5 3d 42 0b 75 39 fa b2 23 9c 6b 51 d1 7e 69 -4c 95 7d 4b 0f 09 84 46 18 79 a0 75 9c 44 01 be -ec d4 c6 06 a0 af bd 7a 07 6f 50 a2 df c2 80 7f -24 f1 91 9b aa 77 46 d3 a6 4e 26 8e d3 f5 f8 e6 -da 83 a2 a5 c9 15 2f 83 7c b0 78 12 bd 5b a7 d3 -a0 79 85 de 88 11 3c 17 96 e9 b4 66 ec 29 9c 5a -c1 05 9e 27 f0 94 15 - -# Signature: -ce eb 84 cc b4 e9 09 92 65 65 07 21 ee a0 e8 ec -89 ca 25 bd 35 4d 4f 64 56 49 67 be 9d 4b 08 b3 -f1 c0 18 53 9c 9d 37 1c f8 96 1f 22 91 fb e0 dc -2f 2f 95 fe a4 7b 63 9f 1e 12 f4 bc 38 1c ef 0c -2b 7a 7b 95 c3 ad f2 76 05 b7 f6 39 98 c3 cb ad -54 28 08 c3 82 2e 06 4d 4a d1 40 93 67 9e 6e 01 -41 8a 6d 5c 05 96 84 cd 56 e3 4e d6 5a b6 05 b8 -de 4f cf a6 40 47 4a 54 a8 25 1b bb 73 26 a4 2d -08 58 5c fc fc 95 67 69 b1 5b 6d 7f df 7d a8 4f -81 97 6e aa 41 d6 92 38 0f f1 0e ae cf e0 a5 79 -68 29 09 b5 52 1f ad e8 54 d7 97 b8 a0 34 5b 9a -86 4e 05 88 f6 ca dd bf 65 f1 77 99 8e 18 0d 1f -10 24 43 e6 dc a5 3a 94 82 3c aa 9c 3b 35 f3 22 -58 3c 70 3a f6 74 76 15 9e c7 ec 93 d1 76 9b 30 -0a f0 e7 15 7d c2 98 c6 cd 2d ee 22 62 f8 cd dc -10 f1 1e 01 74 14 71 bb fd 65 18 a1 75 73 45 75 - -# PKCS#1 v1.5 Signature Example 15.10 - -# ----------------- - -# Message to be signed: -d8 b8 16 45 c1 3c d7 ec f5 d0 0e d2 c9 1b 9a cd -46 c1 55 68 e5 30 3c 4a 97 75 ed e7 6b 48 40 3d -6b e5 6c 05 b6 b1 cf 77 c6 e7 5d e0 96 c5 cb 35 -51 cb 6f a9 64 f3 c8 79 cf 58 9d 28 e1 da 2f 9d -ec - -# Signature: -27 45 07 4c a9 71 75 d9 92 e2 b4 47 91 c3 23 c5 -71 67 16 5c dd 8d a5 79 cd ef 46 86 b9 bb 40 4b -d3 6a 56 50 4e b1 fd 77 0f 60 bf a1 88 a7 b2 4b -0c 91 e8 81 c2 4e 35 b0 4d c4 dd 4c e3 85 66 bc -c9 ce 54 f4 9a 17 5f c9 d0 b2 25 22 d9 57 90 47 -f9 ed 42 ec a8 3f 76 4a 10 16 39 97 94 7e 7d 2b -52 ff 08 98 0e 7e 7c 22 57 93 7b 23 f3 d2 79 d4 -cd 17 d6 f4 95 54 63 73 d9 83 d5 36 ef d7 d1 b6 -71 81 ca 2c b5 0a c6 16 c5 c7 ab fb b9 26 0b 91 -b1 a3 8e 47 24 20 01 ff 45 2f 8d e1 0c a6 ea ea -dc af 9e dc 28 95 6f 28 a7 11 29 1f c9 a8 08 78 -b8 ba 4c fe 25 b8 28 1c b8 0b c9 cd 6d 2b d1 82 -52 46 ee be 25 2d 99 57 ef 93 70 73 52 08 4e 6d -36 d4 23 55 1b f2 66 a8 53 40 fb 4a 6a f3 70 88 -0a ab 07 15 3d 01 f4 8d 08 6d f0 bf be c0 5e 7b -44 3b 97 e7 17 18 97 0e 2f 4b f6 20 23 e9 5b 67 - -# PKCS#1 v1.5 Signature Example 15.11 - -# ----------------- - -# Message to be signed: -e5 73 9b 6c 14 c9 2d 51 0d 95 b8 26 93 33 37 ff -0d 24 ef 72 1a c4 ef 64 c2 ba d2 64 be 8b 44 ef -a1 51 6e 08 a2 7e b6 b6 11 d3 30 1d f0 06 2d ae -fc 73 a8 c0 d9 2e 2c 52 1f ac bc 7b 26 47 38 76 -7e a6 fc 97 d5 88 a0 ba f6 ce 50 ad f7 9e 60 0b -d2 9e 34 5f cb 1d ba 71 ac 5c 02 89 02 3f e4 a8 -2b 46 a5 40 77 19 19 7d 2e 95 8e 35 31 fd 54 ae -f9 03 aa bb 43 55 f8 83 18 99 4e d3 c3 dd 62 f4 -20 a7 - -# Signature: -be 40 a5 fb 94 f1 13 e1 b3 ef f6 b6 a3 39 86 f2 -02 e3 63 f0 74 83 b7 92 e6 8d fa 55 54 df 04 66 -cc 32 15 09 50 78 3b 4d 96 8b 63 9a 04 fd 2f b9 -7f 6e b9 67 02 1f 5a dc cb 9f ca 95 ac c8 f2 cd -88 5a 38 0b 0a 4e 82 bc 76 07 64 db ab 88 c1 e6 -c0 25 5c aa 94 f2 32 19 9d 6f 59 7c c9 14 5b 00 -e3 d4 ba 34 6b 55 9a 88 33 ad 15 16 ad 51 63 f0 -16 af 6a 59 83 1c 82 ea 13 c8 22 4d 84 d0 76 5a -9d 12 38 4d a4 60 a8 53 1b 4c 40 7e 04 f4 f3 50 -70 9e b9 f0 8f 5b 22 0f fb 45 ab f6 b7 5d 15 79 -fd 3f 1e b5 5f c7 5b 00 af 8b a3 b0 87 82 7f e9 -ae 9f b4 f6 c5 fa 63 03 1f e5 82 85 2f e2 83 4f -9c 89 bf f5 3e 25 52 21 6b c7 c1 d4 a3 d5 dc 2b -a6 95 5c d9 b1 7d 13 63 e7 fe e8 ed 76 29 75 3f -f3 12 5e dd 48 52 1a e3 b9 b0 32 17 f4 49 6d 0d -8e de 57 ac bc 5b d4 de ae 74 a5 6f 86 67 1d e2 - -# PKCS#1 v1.5 Signature Example 15.12 - -# ----------------- - -# Message to be signed: -7a f4 28 35 91 7a 88 d6 b3 c6 71 6b a2 f5 b0 d5 -b2 0b d4 e2 e6 e5 74 e0 6a f1 ee f7 c8 11 31 be -22 bf 81 28 b9 cb c6 ec 00 27 5b a8 02 94 a5 d1 -17 2d 08 24 a7 9e 8f dd 83 01 83 e4 c0 0b 96 78 -28 67 b1 22 7f ea 24 9a ad 32 ff c5 fe 00 7b c5 -1f 21 79 2f 72 8d ed a8 b5 70 8a a9 9c ab ab 20 -a4 aa 78 3e d8 6f 0f 27 b5 d5 63 f4 2e 07 15 8c -ea 72 d0 97 aa 68 87 ec 41 1d d0 12 91 2a 5e 03 -2b bf a6 78 50 71 44 bc c9 5f 39 b5 8b e7 bf d1 -75 9a db 9a 91 fa 1d 6d 82 26 a8 34 3a 8b 84 9d -ae 76 f7 b9 82 24 d5 9e 28 f7 81 f1 3e ce 60 5f -84 f6 c9 0b ae 5f 8c f3 78 81 6f 40 20 a7 dd a1 -be d9 0c 92 a2 36 34 d2 03 fa c3 fc d8 6d 68 d3 -18 2a 7d 9c ca be 7b 07 95 f5 c6 55 e9 ac c4 e3 -ec 18 51 40 d1 0c ef 05 34 64 ab 17 5c 83 bd 83 -93 5e 3d ab af 34 62 ee be 63 d1 5f 57 3d 26 9a - -# Signature: -4e 78 c5 90 2b 80 79 14 d1 2f a5 37 ae 68 71 c8 -6d b8 02 1e 55 d1 ad b8 eb 0c cf 1b 8f 36 ab 7d -ad 1f 68 2e 94 7a 62 70 72 f0 3e 62 73 71 78 1d -33 22 1d 17 4a be 46 0d bd 88 56 0c 22 f6 90 11 -6e 2f bb e6 e9 64 36 3a 3e 52 83 bb 5d 94 6e f1 -c0 04 7e ba 03 8c 75 6c 40 be 79 23 05 58 09 b0 -e9 f3 4a 03 a5 88 15 eb dd e7 67 93 1f 01 8f 6f -18 78 f2 ef 4f 47 dd 37 40 51 dd 48 68 5d ed 6e -fb 3e a8 02 1f 44 be 1d 7d 14 93 98 f9 8e a9 c0 -8d 62 88 8e bb 56 19 2d 17 74 7b 6b 8e 17 09 54 -31 f1 25 a8 a8 e9 96 2a a3 1c 28 52 64 e0 8f b2 -1a ac 33 6c e6 c3 8a a3 75 e4 2b c9 2a b0 ab 91 -03 84 31 e1 f9 2c 39 d2 af 5d ed 7e 43 bc 15 1e -6e be a4 c3 e2 58 3a f3 43 7e 82 c4 3c 5e 3b 5b -07 cf 03 59 68 3d 22 98 e3 59 48 ed 80 6c 06 3c -60 6e a1 78 15 0b 1e fc 15 85 69 34 c7 25 5c fe - -# PKCS#1 v1.5 Signature Example 15.13 - -# ----------------- - -# Message to be signed: -eb ae f3 f9 f2 3b df e5 fa 6b 8a f4 c2 08 c1 89 -f2 25 1b f3 2f 5f 13 7b 9d e4 40 63 78 68 6b 3f -07 21 f6 2d 24 cb 86 88 d6 fc 41 a2 7c ba e2 1d -30 e4 29 fe ac c7 11 19 41 c2 77 - -# Signature: -c4 8d be f5 07 11 4f 03 c9 5f af be b4 df 1b fa -88 e0 18 4a 33 cc 4f 8a 9a 10 35 ff 7f 82 2a 5e -38 cd a1 87 23 91 5f f0 78 24 44 29 e0 f6 08 1c -14 fd 83 33 1f a6 5c 6b a7 bb 9a 12 db f6 62 23 -74 cd 0c a5 7d e3 77 4e 2b d7 ae 82 36 77 d0 61 -d5 3a e9 c4 04 0d 2d a7 ef 70 14 f3 bb dc 95 a3 -61 a4 38 55 c8 ce 9b 97 ec ab ce 17 4d 92 62 85 -14 2b 53 4a 30 87 f9 f4 ef 74 51 1e c7 42 b0 d5 -68 56 03 fa f4 03 b5 07 2b 98 5d f4 6a df 2d 25 -29 a0 2d 40 71 1e 21 90 91 70 52 37 1b 79 b7 49 -b8 3a bf 0a e2 94 86 c3 f2 f6 24 77 b2 bd 36 2b -03 9c 01 3c 0c 50 76 ef 52 0d bb 40 5f 42 ce e9 -54 25 c3 73 a9 75 e1 cd d0 32 c4 96 22 c8 50 79 -b0 9e 88 da b2 b1 39 69 ef 7a 72 39 73 78 10 40 -45 9f 57 d5 01 36 38 48 3d e2 d9 1c b3 c4 90 da -81 c4 6d e6 cd 76 ea 8a 0c 8f 6f e3 31 71 2d 24 - -# PKCS#1 v1.5 Signature Example 15.14 - -# ----------------- - -# Message to be signed: -c5 a2 71 12 78 76 1d fc dd 4f 0c 99 e6 f5 61 9d -6c 48 b5 d4 c1 a8 09 82 fa a6 b4 cf 1c f7 a6 0f -f3 27 ab ef 93 c8 01 42 9e fd e0 86 40 85 81 46 -10 56 ac c3 3f 3d 04 f5 ad a2 12 16 ca cd 5f d1 -f9 ed 83 20 3e 0e 2f e6 13 8e 3e ae 84 24 e5 91 -5a 08 3f 3f 7a b7 60 52 c8 be 55 ae 88 2d 6e c1 -48 2b 1e 45 c5 da e9 f4 10 15 40 53 27 02 2e c3 -2f 0e a2 42 97 63 b2 55 04 3b 19 58 ee 3c f6 d6 -39 83 59 6e b3 85 84 4f 85 28 cc 9a 98 65 83 5d -c5 11 3c 02 b8 0d 0f ca 68 aa 25 e7 2b ca ae b3 -cf 9d 79 d8 4f 98 4f d4 17 - -# Signature: -6b d5 25 7a a0 66 11 fb 46 60 08 7c b4 bc 4a 9e -44 91 59 d3 16 52 bd 98 08 44 da f3 b1 c7 b3 53 -f8 e5 61 42 f7 ea 98 57 43 3b 18 57 3b 4d ee de -81 8a 93 b0 29 02 97 78 3f 1a 2f 23 cb c7 27 97 -a6 72 53 7f 01 f6 24 84 cd 41 62 c3 21 4b 9a c6 -28 22 4c 5d e0 1f 32 bb 9b 76 b2 73 54 f2 b1 51 -d0 e8 c4 21 3e 46 15 ad 0b c7 1f 51 5e 30 0d 6a -64 c6 74 34 11 ff fd e8 e5 ff 19 0e 54 92 30 43 -12 6e cf c4 c4 53 90 22 66 8f b6 75 f2 5c 07 e2 -00 99 ee 31 5b 98 d6 af ec 4b 1a 9a 93 dc 33 49 -6a 15 bd 6f de 16 63 a7 d4 9b 9f 1e 63 9d 38 66 -4b 37 a0 10 b1 f3 5e 65 86 82 d9 cd 63 e5 7d e0 -f1 5e 8b dd 09 65 58 f0 7e c0 ca a2 18 a8 c0 6f -47 88 45 39 40 28 7c 9d 34 b6 d4 0a 3f 09 bf 77 -99 fe 98 ae 4e b4 9f 3f f4 1c 50 40 a5 0c ef c9 -bd f2 39 4b 74 9c f1 64 48 0d f1 ab 68 80 27 3b - -# PKCS#1 v1.5 Signature Example 15.15 - -# ----------------- - -# Message to be signed: -9b f8 aa 25 3b 87 2e a7 7a 7e 23 47 6b e2 6b 23 -29 57 8c f6 ac 9e a2 80 5b 35 7f 6f c3 ad 13 0d -ba eb 3d 86 9a 13 cc e7 a8 08 bb bb c9 69 85 7e -03 94 5c 7b b6 1d f1 b5 c2 58 9b 8e 04 6c 2a 5d -7e 40 57 b1 a7 4f 24 c7 11 21 63 64 28 85 29 ec -95 70 f2 51 97 21 3b e1 f5 c2 e5 96 f8 bf 8b 2c -f3 cb 38 aa 56 ff e5 e3 1d f7 39 58 20 e9 4e cf -3b 11 89 a9 65 dc f9 a9 cb 42 98 d3 c8 8b 29 23 -c1 9f c6 bc 34 aa ce ca d4 e0 93 1a 7c 4e 5d 73 -dc 86 df a7 98 a8 47 6d 82 46 3e ef aa 90 a8 a9 -19 2a b0 8b 23 08 8d d5 8e 12 80 f7 d7 2e 45 48 -39 6b aa c1 12 25 2d d5 c5 34 6a db 20 04 a2 f7 -10 1c cc 89 9c c7 fa fa e8 bb e2 95 73 88 96 a5 -b2 01 22 85 01 4e f6 - -# Signature: -27 f7 f4 da 9b d6 10 10 6e f5 7d 32 38 3a 44 8a -8a 62 45 c8 3d c1 30 9c 6d 77 0d 35 7b a8 9e 73 -f2 ad 08 32 06 2e b0 fe 0a c9 15 57 5b cd 6b 8b -ca db 4e 2b a6 fa 9d a7 3a 59 17 51 52 b2 d4 fe -72 b0 70 c9 b7 37 9e 50 00 0e 55 e6 c2 69 f6 65 -8c 93 79 72 79 7d 3a dd 69 f1 30 e3 4b 85 bd ec -9f 3a 9b 39 22 02 d6 f3 e4 30 d0 9c ac a8 22 77 -59 ab 82 5f 70 12 d2 ff 4b 5b 62 c8 50 4d ba d8 -55 c0 5e dd 5c ab 5a 4c cc dc 67 f0 1d d6 51 7c -7d 41 c4 3e 2a 49 57 af f1 9d b6 f1 8b 17 85 9a -f0 bc 84 ab 67 14 6e c1 a4 a6 0a 17 d7 e0 5f 8b -4f 9c ed 6a d1 09 08 d8 d7 8f 7f c8 8b 76 ad c8 -29 0f 87 da f2 a7 be 10 ae 40 85 21 39 5d 54 ed -25 56 fb 76 61 85 4a 73 0c e3 d8 2c 71 a8 d4 93 -ec 49 a3 78 ac 8a 3c 74 43 9f 7c c5 55 ba 13 f8 -59 07 08 90 ee 18 ff 65 8f a4 d7 41 96 9d 70 a5 - -# PKCS#1 v1.5 Signature Example 15.16 - -# ----------------- - -# Message to be signed: -32 47 48 30 e2 20 37 54 c8 bf 06 81 dc 4f 84 2a -fe 36 09 30 37 86 16 c1 08 e8 33 65 6e 56 40 c8 -68 56 88 5b b0 5d 1e b9 43 8e fe de 67 92 63 de -07 cb 39 55 3f 6a 25 e0 06 b0 a5 23 11 a0 63 ca -08 82 66 d2 56 4f f6 49 0c 46 b5 60 98 18 54 8f -88 76 4d ad 34 a2 5e 3a 85 d5 75 02 3f 0b 9e 66 -50 48 a0 3c 35 05 79 a9 d3 24 46 c7 bb 96 cc 92 -e0 65 ab 94 d3 c8 95 2e 8d f6 8e f0 d9 fa 45 6b -3a 06 bb 80 e3 bb c4 b2 8e 6a 94 b6 d0 ff 76 96 -a6 4e fe 05 e7 35 fe a0 25 d7 bd bc 41 39 f3 a3 -b5 46 07 5c ba 7e fa 94 73 74 d3 f0 ac 80 a6 8d -76 5f 5d f6 21 0b ca 06 9a 2d 88 64 7a f7 ea 04 -2d ac 69 0c b5 73 78 ec 07 77 61 4f b8 b6 5f f4 -53 ca 6b 7d ce 60 98 45 1a 2f 8c 0d a9 bf ec f1 -fd f3 91 bb aa 4e 2a 91 ca 18 a1 12 1a 75 23 a2 -ab d4 25 14 f4 89 e8 - -# Signature: -69 17 43 72 57 c2 2c cb 54 03 29 0c 3d ee 82 d9 -cf 75 50 b3 1b d3 1c 51 bd 57 bf d3 5d 45 2a b4 -db 7c 4b e6 b2 e2 5a c9 a5 9a 1d 2a 7f eb 62 7f -0a fd 49 76 b3 00 3c c9 cf fd 88 96 50 5e c3 82 -f2 65 10 4d 4c f8 c9 32 fa 9f e8 6e 00 87 07 95 -99 12 38 9d a4 b2 d6 b3 69 b3 6a 5e 72 e2 9d 24 -c9 a9 8c 9d 31 a3 ab 44 e6 43 e6 94 12 66 a4 7a -45 e3 44 6c e8 77 6a be 24 1a 8f 5f c6 42 3b 24 -b1 ff 25 0d c2 c3 a8 17 23 53 56 10 77 e8 50 a7 -69 b2 5f 03 25 da c8 89 65 a3 b9 b4 72 c4 94 e9 -5f 71 9b 4e ac 33 2c aa 7a 65 c7 df e4 6d 9a a7 -e6 e0 0f 52 5f 30 3d d6 3a b7 91 92 18 90 18 68 -f9 33 7f 8c d2 6a af e6 f3 3b 7f b2 c9 88 10 af -19 f7 fc b2 82 ba 15 77 91 2c 1d 36 89 75 fd 5d -44 0b 86 e1 0c 19 97 15 fa 0b 6f 42 50 b5 33 73 -2d 0b ef e1 54 51 50 fc 47 b8 76 de 09 b0 0a 94 - -# PKCS#1 v1.5 Signature Example 15.17 - -# ----------------- - -# Message to be signed: -00 8e 59 50 5e af b5 50 aa e5 e8 45 58 4c eb b0 -0b 6d e1 73 3e 9f 95 d4 2c 88 2a 5b be b5 ce 1c -57 e1 19 e7 c0 d4 da ca 9f 1f f7 87 02 17 f7 cf -d8 a6 b3 73 97 7c ac 9c ab 8e 71 e4 20 - -# Signature: -92 25 03 b6 73 ee 5f 3e 69 1e 1c a8 5e 9f f4 17 -3c f7 2b 05 ac 2c 13 1d a5 60 35 93 e3 bc 25 9c -94 c1 f7 d3 a0 6a 5b 98 91 bf 11 3f a3 9e 59 ff -7c 1e d6 46 5e 90 80 49 cb 89 e4 e1 25 cd 37 d2 -ff d9 22 7a 41 b4 a0 a1 9c 0a 44 fb bf 3d e5 5b -ab 80 20 87 a3 bb 8d 4f f6 68 ee 6b bb 8a d8 9e -68 57 a7 9a 9c 72 78 19 90 df cf 92 cd 51 94 04 -c9 50 f1 3d 11 43 c3 18 4f 1d 25 0c 90 e1 7a c6 -ce 36 16 3b 98 95 62 7a d6 ff ec 14 22 44 1f 55 -e4 49 9d ba 9b e8 95 46 ae 8b c6 3c ca 01 dd 08 -46 3a e7 f1 fc e3 d8 93 99 69 38 77 8c 18 12 e6 -74 ad 9c 30 9c 5a cc a3 fd e4 4e 7d d8 69 59 93 -e9 c1 fa 87 ac da 99 ec e5 c8 49 9e 46 89 57 ad -66 35 9b f1 2a 51 ad be 78 d3 a2 13 b4 49 bf 0b -5f 8d 4d 49 6a cf 03 d3 03 3b 7c cd 19 6b c2 2f -68 fb 7b ef 4f 69 7c 5e a2 b3 50 62 f4 8a 36 dd - -# PKCS#1 v1.5 Signature Example 15.18 - -# ----------------- - -# Message to be signed: -6a bc 54 cf 8d 1d ff 1f 53 b1 7d 81 60 36 88 78 -a8 78 8c c6 d2 2f a5 c2 25 8c 88 e6 60 b0 9a 89 -33 f9 f2 c0 50 4d da dc 21 f6 e7 5e 0b 83 3b eb -55 52 29 de e6 56 b9 04 7b 92 f6 2e 76 b8 ff cc -60 da b0 6b 80 - -# Signature: -0b 6d af 42 f7 a8 62 14 7e 41 74 93 c2 c4 01 ef -ae 32 63 6a b4 cb d4 41 92 bb f5 f1 95 b5 0a e0 -96 a4 75 a1 61 4f 0a 9f a8 f7 a0 26 cb 46 c6 50 -6e 51 8e 33 d8 3e 56 47 7a 87 5a ca 8c 7e 71 4c -e1 bd bd 61 ef 5d 53 52 39 b3 3f 2b fd d6 17 71 -ba b6 27 76 d7 81 71 a1 42 3c ea 87 31 f8 2e 60 -76 6d 64 54 26 56 20 b1 5f 5c 5a 58 4f 55 f9 5b -80 2f e7 8c 57 4e d5 da cf c8 31 f3 cf 2b 05 02 -c0 b2 98 f2 5c cf 11 f9 73 b3 1f 85 e4 74 42 19 -85 f3 cf f7 02 df 39 46 ef 0a 66 05 68 21 11 b2 -f5 5b 1f 8a b0 d2 ea 3a 68 3c 69 98 5e ad 93 ed -44 9e a4 8f 03 58 dd f7 08 02 cb 41 de 2f d8 3f -3c 80 80 82 d8 49 36 94 8e 0c 84 a1 31 b4 92 78 -27 46 05 27 bb 5c d2 4b fa b7 b4 8e 07 1b 24 17 -19 30 f9 97 63 27 2f 97 97 bc b7 6f 1d 24 81 57 -55 58 fc f2 60 b1 f0 e5 54 eb b3 df 3c fc b9 58 - -# PKCS#1 v1.5 Signature Example 15.19 - -# ----------------- - -# Message to be signed: -af 2d 78 15 2c f1 0e fe 01 d2 74 f2 17 b1 77 f6 -b0 1b 5e 74 9f 15 67 71 5d a3 24 85 9c d3 dd 88 -db 84 8e c7 9f 48 db ba 7b 6f 1d 33 11 1e f3 1b -64 89 9e 73 91 c2 bf fd 69 f4 90 25 cf 20 1f c5 -85 db d1 54 2c 1c 77 8a 2c e7 a7 ee 10 8a 30 9f -ec a2 6d 13 3a 5f fe dc 4e 86 9d cd 76 56 59 6a -c8 42 7e a3 ef 6e 3f d7 8f e9 9d 8d dc 71 d8 39 -f6 78 6e 0d a6 e7 86 bd 62 b3 a4 f1 9b 89 1a 56 -15 7a 55 4e c2 a2 b3 9e 25 a1 d7 c7 d3 73 21 c7 -a1 d9 46 cf 4f be 75 8d 92 76 f0 85 63 44 9d 67 -41 4a 2c 03 0f 42 51 cf e2 21 3d 04 a5 41 06 37 -87 - -# Signature: -20 9c 61 15 78 57 38 7b 71 e2 4b f3 dd 56 41 45 -50 50 3b ec 18 0f f5 3b dd 9b ac 06 2a 2d 49 95 -09 bf 99 12 81 b7 95 27 df 91 36 61 5b 7a 6d 9d -b3 a1 03 b5 35 e0 20 2a 2c ac a1 97 a7 b7 4e 53 -56 f3 dd 59 5b 49 ac fd 9d 30 04 9a 98 ca 88 f6 -25 bc a1 d5 f2 2a 39 2d 8a 74 9e fb 6e ed 9b 78 -21 d3 11 0a c0 d2 44 19 9e cb 4a a3 d7 35 a8 3a -2e 88 93 c6 bf 85 81 38 3c ca ee 83 46 35 b7 fa -1f af fa 45 b1 3d 15 c1 da 33 af 71 e8 93 03 d6 -80 90 ff 62 ee 61 5f df 5a 84 d1 20 71 1d a5 3c -28 89 19 8a b3 83 17 a9 73 4a b2 7d 67 92 4c ea -74 15 6f f9 9b ef 98 76 bb 5c 33 9e 93 74 52 83 -e1 b3 4e 07 22 26 b8 80 45 e0 17 e9 f0 5b 2a 8c -41 67 40 25 8e 22 3b 26 90 02 74 91 73 22 73 f3 -22 9d 9e f2 b1 b3 80 7e 32 10 18 92 0a d3 e5 3d -ae 47 e6 d9 39 5c 18 4b 93 a3 74 c6 71 fa a2 ce - -# PKCS#1 v1.5 Signature Example 15.20 - -# ----------------- - -# Message to be signed: -40 ee 99 24 58 d6 f6 14 86 d2 56 76 a9 6d d2 cb -93 a3 7f 04 b1 78 48 2f 2b 18 6c f8 82 15 27 0d -ba 29 d7 86 d7 74 b0 c5 e7 8c 7f 6e 56 a9 56 e7 -f7 39 50 a2 b0 c0 c1 0a 08 db cd 67 e5 b2 10 bb -21 c5 8e 27 67 d4 4f 7d d4 01 4e 39 66 14 3b f7 -e3 d6 6f f0 c0 9b e4 c5 5f 93 b3 99 94 b8 51 8d -9c 1d 76 d5 b4 73 74 de a0 8f 15 7d 57 d7 06 34 -97 8f 38 56 e0 e5 b4 81 af bb db 5a 3a c4 8d 48 -4b e9 2c 93 de 22 91 78 35 4c 2d e5 26 e9 c6 5a -31 ed e1 ef 68 cb 63 98 d7 91 16 84 fe c0 ba bc -3a 78 1a 66 66 07 83 50 69 74 d0 e1 48 25 10 1c -3b fa ea - -# Signature: -92 75 02 b8 24 af c4 25 13 ca 65 70 de 33 8b 8a -64 c3 a8 5e b8 28 d3 19 36 24 f2 7e 8b 10 29 c5 -5c 11 9c 97 33 b1 8f 58 49 b3 50 09 18 bc c0 05 -51 d9 a8 fd f5 3a 97 74 9f a8 dc 48 0d 6f e9 74 -2a 58 71 f9 73 92 65 28 97 2a 1a f4 9e 39 25 b0 -ad f1 4a 84 27 19 b4 a5 a2 d8 9f a9 c0 b6 60 5d -21 2b ed 1e 67 23 b9 34 06 ad 30 e8 68 29 a5 c7 -19 b8 90 b3 89 30 6d c5 50 64 86 ee 2f 36 a8 df -e0 a9 6a f6 78 c9 cb d6 af f3 97 ca 20 0e 3e dc -1e 36 bd 2f 08 b3 1d 54 0c 0c b2 82 a9 55 9e 4a -dd 4f c9 e6 49 2e ed 0c cb d3 a6 98 2e 5f aa 2d -dd 17 be 47 41 7c 80 b4 e5 45 2d 31 f7 24 01 a0 -42 32 51 09 54 4d 95 4c 01 93 90 79 d4 09 a5 c3 -78 d7 51 2d fc 2d 2a 71 ef cc 34 32 a7 65 d1 c6 -a5 2c fc e8 99 cd 79 b1 5b 4f c3 72 36 41 ef 6b -d0 0a cc 10 40 7e 5d f5 8d d1 c3 c5 c5 59 a5 06 - -# ============================================= diff --git a/src/libtomcrypt/notes/rsa-testvectors/pss-int.txt b/src/libtomcrypt/notes/rsa-testvectors/pss-int.txt deleted file mode 100644 index 667c753f23..0000000000 --- a/src/libtomcrypt/notes/rsa-testvectors/pss-int.txt +++ /dev/null @@ -1,162 +0,0 @@ -# ================================= -# WORKED-OUT EXAMPLE FOR RSASSA-PSS -# ================================= -# -# This file gives an example of the process of -# signing a message with RSASSA-PSS as -# specified in PKCS #1 v2.1. -# -# The message is an octet string of length 114, -# while the size of the modulus in the public -# key is 1024 bits. The message is signed via a -# random salt of length 20 octets -# -# The underlying hash function in the EMSA-PSS -# encoding method is SHA-1; the mask generation -# function is MGF1 with SHA-1 as specified in -# PKCS #1 v2.1. -# -# Integers are represented by strings of octets -# with the leftmost octet being the most -# significant octet. For example, -# -# 9,202,000 = (0x)8c 69 50. -# -# ============================================= - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -a2 ba 40 ee 07 e3 b2 bd 2f 02 ce 22 7f 36 a1 95 -02 44 86 e4 9c 19 cb 41 bb bd fb ba 98 b2 2b 0e -57 7c 2e ea ff a2 0d 88 3a 76 e6 5e 39 4c 69 d4 -b3 c0 5a 1e 8f ad da 27 ed b2 a4 2b c0 00 fe 88 -8b 9b 32 c2 2d 15 ad d0 cd 76 b3 e7 93 6e 19 95 -5b 22 0d d1 7d 4e a9 04 b1 ec 10 2b 2e 4d e7 75 -12 22 aa 99 15 10 24 c7 cb 41 cc 5e a2 1d 00 ee -b4 1f 7c 80 08 34 d2 c6 e0 6b ce 3b ce 7e a9 a5 - -# RSA public exponent e: -01 00 01 - -# Prime p: -d1 7f 65 5b f2 7c 8b 16 d3 54 62 c9 05 cc 04 a2 -6f 37 e2 a6 7f a9 c0 ce 0d ce d4 72 39 4a 0d f7 -43 fe 7f 92 9e 37 8e fd b3 68 ed df f4 53 cf 00 -7a f6 d9 48 e0 ad e7 57 37 1f 8a 71 1e 27 8f 6b - -# Prime q: -c6 d9 2b 6f ee 74 14 d1 35 8c e1 54 6f b6 29 87 -53 0b 90 bd 15 e0 f1 49 63 a5 e2 63 5a db 69 34 -7e c0 c0 1b 2a b1 76 3f d8 ac 1a 59 2f b2 27 57 -46 3a 98 24 25 bb 97 a3 a4 37 c5 bf 86 d0 3f 2f - -# p's CRT exponent dP: -9d 0d bf 83 e5 ce 9e 4b 17 54 dc d5 cd 05 bc b7 -b5 5f 15 08 33 0e a4 9f 14 d4 e8 89 55 0f 82 56 -cb 5f 80 6d ff 34 b1 7a da 44 20 88 53 57 7d 08 -e4 26 28 90 ac f7 52 46 1c ea 05 54 76 01 bc 4f - -# q's CRT exponent dQ: -12 91 a5 24 c6 b7 c0 59 e9 0e 46 dc 83 b2 17 1e -b3 fa 98 81 8f d1 79 b6 c8 bf 6c ec aa 47 63 03 -ab f2 83 fe 05 76 9c fc 49 57 88 fe 5b 1d df de -9e 88 4a 3c d5 e9 36 b7 e9 55 eb f9 7e b5 63 b1 - -# CRT coefficient qInv: -a6 3f 1d a3 8b 95 0c 9a d1 c6 7c e0 d6 77 ec 29 -14 cd 7d 40 06 2d f4 2a 67 eb 19 8a 17 6f 97 42 -aa c7 c5 fe a1 4f 22 97 66 2b 84 81 2c 4d ef c4 -9a 80 25 ab 43 82 28 6b e4 c0 37 88 dd 01 d6 9f - -# --------------------------------- -# Step-by-step RSASSA-PSS Signature -# --------------------------------- - -# Message M to be signed: -85 9e ef 2f d7 8a ca 00 30 8b dc 47 11 93 bf 55 -bf 9d 78 db 8f 8a 67 2b 48 46 34 f3 c9 c2 6e 64 -78 ae 10 26 0f e0 dd 8c 08 2e 53 a5 29 3a f2 17 -3c d5 0c 6d 5d 35 4f eb f7 8b 26 02 1c 25 c0 27 -12 e7 8c d4 69 4c 9f 46 97 77 e4 51 e7 f8 e9 e0 -4c d3 73 9c 6b bf ed ae 48 7f b5 56 44 e9 ca 74 -ff 77 a5 3c b7 29 80 2f 6e d4 a5 ff a8 ba 15 98 -90 fc - -# mHash = Hash(M) -# salt = random string of octets -# M' = Padding || mHash || salt -# H = Hash(M') -# DB = Padding || salt -# dbMask = MGF(H, length(DB)) -# maskedDB = DB xor dbMask (leftmost bit set to -# zero) -# EM = maskedDB || H || 0xbc - -# mHash: -37 b6 6a e0 44 58 43 35 3d 47 ec b0 b4 fd 14 c1 -10 e6 2d 6a - -# salt: -e3 b5 d5 d0 02 c1 bc e5 0c 2b 65 ef 88 a1 88 d8 -3b ce 7e 61 - -# M': -00 00 00 00 00 00 00 00 37 b6 6a e0 44 58 43 35 -3d 47 ec b0 b4 fd 14 c1 10 e6 2d 6a e3 b5 d5 d0 -02 c1 bc e5 0c 2b 65 ef 88 a1 88 d8 3b ce 7e 61 - -# H: -df 1a 89 6f 9d 8b c8 16 d9 7c d7 a2 c4 3b ad 54 -6f be 8c fe - -# DB: -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -00 00 00 00 00 00 01 e3 b5 d5 d0 02 c1 bc e5 0c -2b 65 ef 88 a1 88 d8 3b ce 7e 61 - -# dbMask: -66 e4 67 2e 83 6a d1 21 ba 24 4b ed 65 76 b8 67 -d9 a4 47 c2 8a 6e 66 a5 b8 7d ee 7f bc 7e 65 af -50 57 f8 6f ae 89 84 d9 ba 7f 96 9a d6 fe 02 a4 -d7 5f 74 45 fe fd d8 5b 6d 3a 47 7c 28 d2 4b a1 -e3 75 6f 79 2d d1 dc e8 ca 94 44 0e cb 52 79 ec -d3 18 3a 31 1f c8 97 39 a9 66 43 13 6e 8b 0f 46 -5e 87 a4 53 5c d4 c5 9b 10 02 8d - -# maskedDB: -66 e4 67 2e 83 6a d1 21 ba 24 4b ed 65 76 b8 67 -d9 a4 47 c2 8a 6e 66 a5 b8 7d ee 7f bc 7e 65 af -50 57 f8 6f ae 89 84 d9 ba 7f 96 9a d6 fe 02 a4 -d7 5f 74 45 fe fd d8 5b 6d 3a 47 7c 28 d2 4b a1 -e3 75 6f 79 2d d1 dc e8 ca 94 44 0e cb 52 79 ec -d3 18 3a 31 1f c8 96 da 1c b3 93 11 af 37 ea 4a -75 e2 4b db fd 5c 1d a0 de 7c ec - -# Encoded message EM: -66 e4 67 2e 83 6a d1 21 ba 24 4b ed 65 76 b8 67 -d9 a4 47 c2 8a 6e 66 a5 b8 7d ee 7f bc 7e 65 af -50 57 f8 6f ae 89 84 d9 ba 7f 96 9a d6 fe 02 a4 -d7 5f 74 45 fe fd d8 5b 6d 3a 47 7c 28 d2 4b a1 -e3 75 6f 79 2d d1 dc e8 ca 94 44 0e cb 52 79 ec -d3 18 3a 31 1f c8 96 da 1c b3 93 11 af 37 ea 4a -75 e2 4b db fd 5c 1d a0 de 7c ec df 1a 89 6f 9d -8b c8 16 d9 7c d7 a2 c4 3b ad 54 6f be 8c fe bc - -# Signature S, the RSA decryption of EM: -8d aa 62 7d 3d e7 59 5d 63 05 6c 7e c6 59 e5 44 -06 f1 06 10 12 8b aa e8 21 c8 b2 a0 f3 93 6d 54 -dc 3b dc e4 66 89 f6 b7 95 1b b1 8e 84 05 42 76 -97 18 d5 71 5d 21 0d 85 ef bb 59 61 92 03 2c 42 -be 4c 29 97 2c 85 62 75 eb 6d 5a 45 f0 5f 51 87 -6f c6 74 3d ed dd 28 ca ec 9b b3 0e a9 9e 02 c3 -48 82 69 60 4f e4 97 f7 4c cd 7c 7f ca 16 71 89 -71 23 cb d3 0d ef 5d 54 a2 b5 53 6a d9 0a 74 7e - -# ============================================= diff --git a/src/libtomcrypt/notes/rsa-testvectors/pss-vect.c b/src/libtomcrypt/notes/rsa-testvectors/pss-vect.c deleted file mode 100644 index 3db5f5b97a..0000000000 --- a/src/libtomcrypt/notes/rsa-testvectors/pss-vect.c +++ /dev/null @@ -1,1418 +0,0 @@ -/* Generated from file: pss-vect.txt - * with md5 hash: af66c6ca63a09d0443d5f78ff0e59c29 - */ - - -typedef struct rsaKey { - int n_l; - unsigned char n[256]; - int e_l; - unsigned char e[256]; - int d_l; - unsigned char d[256]; - int p_l; - unsigned char p[256]; - int q_l; - unsigned char q[256]; - int dP_l; - unsigned char dP[256]; - int dQ_l; - unsigned char dQ[256]; - int qInv_l; - unsigned char qInv[256]; -} rsaKey_t; - -typedef struct rsaData { - const char* name; - int o1_l; - unsigned char o1[256]; - int o2_l; - unsigned char o2[256]; - int o3_l; - unsigned char o3[256]; -} rsaData_t; - -typedef struct testcase { - const char* name; - rsaKey_t rsa; -#ifdef LTC_TEST_EXT - rsaData_t data[6]; -#else - rsaData_t data[1]; -#endif /* LTC_TEST_EXT */ -} testcase_t; - -testcase_t testcases_pss[] = - { -{ - "Example 1: A 1024-bit RSA Key Pair", -{ - /* RSA modulus n */ - 128, - { 0xa5, 0x6e, 0x4a, 0x0e, 0x70, 0x10, 0x17, 0x58, 0x9a, 0x51, 0x87, 0xdc, 0x7e, 0xa8, 0x41, 0xd1, 0x56, 0xf2, 0xec, 0x0e, 0x36, 0xad, 0x52, 0xa4, 0x4d, 0xfe, 0xb1, 0xe6, 0x1f, 0x7a, 0xd9, 0x91, 0xd8, 0xc5, 0x10, 0x56, 0xff, 0xed, 0xb1, 0x62, 0xb4, 0xc0, 0xf2, 0x83, 0xa1, 0x2a, 0x88, 0xa3, 0x94, 0xdf, 0xf5, 0x26, 0xab, 0x72, 0x91, 0xcb, 0xb3, 0x07, 0xce, 0xab, 0xfc, 0xe0, 0xb1, 0xdf, 0xd5, 0xcd, 0x95, 0x08, 0x09, 0x6d, 0x5b, 0x2b, 0x8b, 0x6d, 0xf5, 0xd6, 0x71, 0xef, 0x63, 0x77, 0xc0, 0x92, 0x1c, 0xb2, 0x3c, 0x27, 0x0a, 0x70, 0xe2, 0x59, 0x8e, 0x6f, 0xf8, 0x9d, 0x19, 0xf1, 0x05, 0xac, 0xc2, 0xd3, 0xf0, 0xcb, 0x35, 0xf2, 0x92, 0x80, 0xe1, 0x38, 0x6b, 0x6f, 0x64, 0xc4, 0xef, 0x22, 0xe1, 0xe1, 0xf2, 0x0d, 0x0c, 0xe8, 0xcf, 0xfb, 0x22, 0x49, 0xbd, 0x9a, 0x21, 0x37 } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 128, - { 0x33, 0xa5, 0x04, 0x2a, 0x90, 0xb2, 0x7d, 0x4f, 0x54, 0x51, 0xca, 0x9b, 0xbb, 0xd0, 0xb4, 0x47, 0x71, 0xa1, 0x01, 0xaf, 0x88, 0x43, 0x40, 0xae, 0xf9, 0x88, 0x5f, 0x2a, 0x4b, 0xbe, 0x92, 0xe8, 0x94, 0xa7, 0x24, 0xac, 0x3c, 0x56, 0x8c, 0x8f, 0x97, 0x85, 0x3a, 0xd0, 0x7c, 0x02, 0x66, 0xc8, 0xc6, 0xa3, 0xca, 0x09, 0x29, 0xf1, 0xe8, 0xf1, 0x12, 0x31, 0x88, 0x44, 0x29, 0xfc, 0x4d, 0x9a, 0xe5, 0x5f, 0xee, 0x89, 0x6a, 0x10, 0xce, 0x70, 0x7c, 0x3e, 0xd7, 0xe7, 0x34, 0xe4, 0x47, 0x27, 0xa3, 0x95, 0x74, 0x50, 0x1a, 0x53, 0x26, 0x83, 0x10, 0x9c, 0x2a, 0xba, 0xca, 0xba, 0x28, 0x3c, 0x31, 0xb4, 0xbd, 0x2f, 0x53, 0xc3, 0xee, 0x37, 0xe3, 0x52, 0xce, 0xe3, 0x4f, 0x9e, 0x50, 0x3b, 0xd8, 0x0c, 0x06, 0x22, 0xad, 0x79, 0xc6, 0xdc, 0xee, 0x88, 0x35, 0x47, 0xc6, 0xa3, 0xb3, 0x25 } -, - /* Prime p */ - 64, - { 0xe7, 0xe8, 0x94, 0x27, 0x20, 0xa8, 0x77, 0x51, 0x72, 0x73, 0xa3, 0x56, 0x05, 0x3e, 0xa2, 0xa1, 0xbc, 0x0c, 0x94, 0xaa, 0x72, 0xd5, 0x5c, 0x6e, 0x86, 0x29, 0x6b, 0x2d, 0xfc, 0x96, 0x79, 0x48, 0xc0, 0xa7, 0x2c, 0xbc, 0xcc, 0xa7, 0xea, 0xcb, 0x35, 0x70, 0x6e, 0x09, 0xa1, 0xdf, 0x55, 0xa1, 0x53, 0x5b, 0xd9, 0xb3, 0xcc, 0x34, 0x16, 0x0b, 0x3b, 0x6d, 0xcd, 0x3e, 0xda, 0x8e, 0x64, 0x43 } -, - /* Prime q */ - 64, - { 0xb6, 0x9d, 0xca, 0x1c, 0xf7, 0xd4, 0xd7, 0xec, 0x81, 0xe7, 0x5b, 0x90, 0xfc, 0xca, 0x87, 0x4a, 0xbc, 0xde, 0x12, 0x3f, 0xd2, 0x70, 0x01, 0x80, 0xaa, 0x90, 0x47, 0x9b, 0x6e, 0x48, 0xde, 0x8d, 0x67, 0xed, 0x24, 0xf9, 0xf1, 0x9d, 0x85, 0xba, 0x27, 0x58, 0x74, 0xf5, 0x42, 0xcd, 0x20, 0xdc, 0x72, 0x3e, 0x69, 0x63, 0x36, 0x4a, 0x1f, 0x94, 0x25, 0x45, 0x2b, 0x26, 0x9a, 0x67, 0x99, 0xfd } -, - /* p's CRT exponent dP */ - 64, - { 0x28, 0xfa, 0x13, 0x93, 0x86, 0x55, 0xbe, 0x1f, 0x8a, 0x15, 0x9c, 0xba, 0xca, 0x5a, 0x72, 0xea, 0x19, 0x0c, 0x30, 0x08, 0x9e, 0x19, 0xcd, 0x27, 0x4a, 0x55, 0x6f, 0x36, 0xc4, 0xf6, 0xe1, 0x9f, 0x55, 0x4b, 0x34, 0xc0, 0x77, 0x79, 0x04, 0x27, 0xbb, 0xdd, 0x8d, 0xd3, 0xed, 0xe2, 0x44, 0x83, 0x28, 0xf3, 0x85, 0xd8, 0x1b, 0x30, 0xe8, 0xe4, 0x3b, 0x2f, 0xff, 0xa0, 0x27, 0x86, 0x19, 0x79 } -, - /* q's CRT exponent dQ */ - 64, - { 0x1a, 0x8b, 0x38, 0xf3, 0x98, 0xfa, 0x71, 0x20, 0x49, 0x89, 0x8d, 0x7f, 0xb7, 0x9e, 0xe0, 0xa7, 0x76, 0x68, 0x79, 0x12, 0x99, 0xcd, 0xfa, 0x09, 0xef, 0xc0, 0xe5, 0x07, 0xac, 0xb2, 0x1e, 0xd7, 0x43, 0x01, 0xef, 0x5b, 0xfd, 0x48, 0xbe, 0x45, 0x5e, 0xae, 0xb6, 0xe1, 0x67, 0x82, 0x55, 0x82, 0x75, 0x80, 0xa8, 0xe4, 0xe8, 0xe1, 0x41, 0x51, 0xd1, 0x51, 0x0a, 0x82, 0xa3, 0xf2, 0xe7, 0x29 } -, - /* CRT coefficient qInv */ - 64, - { 0x27, 0x15, 0x6a, 0xba, 0x41, 0x26, 0xd2, 0x4a, 0x81, 0xf3, 0xa5, 0x28, 0xcb, 0xfb, 0x27, 0xf5, 0x68, 0x86, 0xf8, 0x40, 0xa9, 0xf6, 0xe8, 0x6e, 0x17, 0xa4, 0x4b, 0x94, 0xfe, 0x93, 0x19, 0x58, 0x4b, 0x8e, 0x22, 0xfd, 0xde, 0x1e, 0x5a, 0x2e, 0x3b, 0xd8, 0xaa, 0x5b, 0xa8, 0xd8, 0x58, 0x41, 0x94, 0xeb, 0x21, 0x90, 0xac, 0xf8, 0x32, 0xb8, 0x47, 0xf1, 0x3a, 0x3d, 0x24, 0xa7, 0x9f, 0x4d } - -} -, -{{ - "RSASSA-PSS Signature Example 1.1", - /* Message to be signed */ - 217, - { 0xcd, 0xc8, 0x7d, 0xa2, 0x23, 0xd7, 0x86, 0xdf, 0x3b, 0x45, 0xe0, 0xbb, 0xbc, 0x72, 0x13, 0x26, 0xd1, 0xee, 0x2a, 0xf8, 0x06, 0xcc, 0x31, 0x54, 0x75, 0xcc, 0x6f, 0x0d, 0x9c, 0x66, 0xe1, 0xb6, 0x23, 0x71, 0xd4, 0x5c, 0xe2, 0x39, 0x2e, 0x1a, 0xc9, 0x28, 0x44, 0xc3, 0x10, 0x10, 0x2f, 0x15, 0x6a, 0x0d, 0x8d, 0x52, 0xc1, 0xf4, 0xc4, 0x0b, 0xa3, 0xaa, 0x65, 0x09, 0x57, 0x86, 0xcb, 0x76, 0x97, 0x57, 0xa6, 0x56, 0x3b, 0xa9, 0x58, 0xfe, 0xd0, 0xbc, 0xc9, 0x84, 0xe8, 0xb5, 0x17, 0xa3, 0xd5, 0xf5, 0x15, 0xb2, 0x3b, 0x8a, 0x41, 0xe7, 0x4a, 0xa8, 0x67, 0x69, 0x3f, 0x90, 0xdf, 0xb0, 0x61, 0xa6, 0xe8, 0x6d, 0xfa, 0xae, 0xe6, 0x44, 0x72, 0xc0, 0x0e, 0x5f, 0x20, 0x94, 0x57, 0x29, 0xcb, 0xeb, 0xe7, 0x7f, 0x06, 0xce, 0x78, 0xe0, 0x8f, 0x40, 0x98, 0xfb, 0xa4, 0x1f, 0x9d, 0x61, 0x93, 0xc0, 0x31, 0x7e, 0x8b, 0x60, 0xd4, 0xb6, 0x08, 0x4a, 0xcb, 0x42, 0xd2, 0x9e, 0x38, 0x08, 0xa3, 0xbc, 0x37, 0x2d, 0x85, 0xe3, 0x31, 0x17, 0x0f, 0xcb, 0xf7, 0xcc, 0x72, 0xd0, 0xb7, 0x1c, 0x29, 0x66, 0x48, 0xb3, 0xa4, 0xd1, 0x0f, 0x41, 0x62, 0x95, 0xd0, 0x80, 0x7a, 0xa6, 0x25, 0xca, 0xb2, 0x74, 0x4f, 0xd9, 0xea, 0x8f, 0xd2, 0x23, 0xc4, 0x25, 0x37, 0x02, 0x98, 0x28, 0xbd, 0x16, 0xbe, 0x02, 0x54, 0x6f, 0x13, 0x0f, 0xd2, 0xe3, 0x3b, 0x93, 0x6d, 0x26, 0x76, 0xe0, 0x8a, 0xed, 0x1b, 0x73, 0x31, 0x8b, 0x75, 0x0a, 0x01, 0x67, 0xd0 } -, - /* Salt */ - 20, - { 0xde, 0xe9, 0x59, 0xc7, 0xe0, 0x64, 0x11, 0x36, 0x14, 0x20, 0xff, 0x80, 0x18, 0x5e, 0xd5, 0x7f, 0x3e, 0x67, 0x76, 0xaf } -, - /* Signature */ - 128, - { 0x90, 0x74, 0x30, 0x8f, 0xb5, 0x98, 0xe9, 0x70, 0x1b, 0x22, 0x94, 0x38, 0x8e, 0x52, 0xf9, 0x71, 0xfa, 0xac, 0x2b, 0x60, 0xa5, 0x14, 0x5a, 0xf1, 0x85, 0xdf, 0x52, 0x87, 0xb5, 0xed, 0x28, 0x87, 0xe5, 0x7c, 0xe7, 0xfd, 0x44, 0xdc, 0x86, 0x34, 0xe4, 0x07, 0xc8, 0xe0, 0xe4, 0x36, 0x0b, 0xc2, 0x26, 0xf3, 0xec, 0x22, 0x7f, 0x9d, 0x9e, 0x54, 0x63, 0x8e, 0x8d, 0x31, 0xf5, 0x05, 0x12, 0x15, 0xdf, 0x6e, 0xbb, 0x9c, 0x2f, 0x95, 0x79, 0xaa, 0x77, 0x59, 0x8a, 0x38, 0xf9, 0x14, 0xb5, 0xb9, 0xc1, 0xbd, 0x83, 0xc4, 0xe2, 0xf9, 0xf3, 0x82, 0xa0, 0xd0, 0xaa, 0x35, 0x42, 0xff, 0xee, 0x65, 0x98, 0x4a, 0x60, 0x1b, 0xc6, 0x9e, 0xb2, 0x8d, 0xeb, 0x27, 0xdc, 0xa1, 0x2c, 0x82, 0xc2, 0xd4, 0xc3, 0xf6, 0x6c, 0xd5, 0x00, 0xf1, 0xff, 0x2b, 0x99, 0x4d, 0x8a, 0x4e, 0x30, 0xcb, 0xb3, 0x3c } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSASSA-PSS Signature Example 1.2", - /* Message to be signed */ - 51, - { 0x85, 0x13, 0x84, 0xcd, 0xfe, 0x81, 0x9c, 0x22, 0xed, 0x6c, 0x4c, 0xcb, 0x30, 0xda, 0xeb, 0x5c, 0xf0, 0x59, 0xbc, 0x8e, 0x11, 0x66, 0xb7, 0xe3, 0x53, 0x0c, 0x4c, 0x23, 0x3e, 0x2b, 0x5f, 0x8f, 0x71, 0xa1, 0xcc, 0xa5, 0x82, 0xd4, 0x3e, 0xcc, 0x72, 0xb1, 0xbc, 0xa1, 0x6d, 0xfc, 0x70, 0x13, 0x22, 0x6b, 0x9e } -, - /* Salt */ - 20, - { 0xef, 0x28, 0x69, 0xfa, 0x40, 0xc3, 0x46, 0xcb, 0x18, 0x3d, 0xab, 0x3d, 0x7b, 0xff, 0xc9, 0x8f, 0xd5, 0x6d, 0xf4, 0x2d } -, - /* Signature */ - 128, - { 0x3e, 0xf7, 0xf4, 0x6e, 0x83, 0x1b, 0xf9, 0x2b, 0x32, 0x27, 0x41, 0x42, 0xa5, 0x85, 0xff, 0xce, 0xfb, 0xdc, 0xa7, 0xb3, 0x2a, 0xe9, 0x0d, 0x10, 0xfb, 0x0f, 0x0c, 0x72, 0x99, 0x84, 0xf0, 0x4e, 0xf2, 0x9a, 0x9d, 0xf0, 0x78, 0x07, 0x75, 0xce, 0x43, 0x73, 0x9b, 0x97, 0x83, 0x83, 0x90, 0xdb, 0x0a, 0x55, 0x05, 0xe6, 0x3d, 0xe9, 0x27, 0x02, 0x8d, 0x9d, 0x29, 0xb2, 0x19, 0xca, 0x2c, 0x45, 0x17, 0x83, 0x25, 0x58, 0xa5, 0x5d, 0x69, 0x4a, 0x6d, 0x25, 0xb9, 0xda, 0xb6, 0x60, 0x03, 0xc4, 0xcc, 0xcd, 0x90, 0x78, 0x02, 0x19, 0x3b, 0xe5, 0x17, 0x0d, 0x26, 0x14, 0x7d, 0x37, 0xb9, 0x35, 0x90, 0x24, 0x1b, 0xe5, 0x1c, 0x25, 0x05, 0x5f, 0x47, 0xef, 0x62, 0x75, 0x2c, 0xfb, 0xe2, 0x14, 0x18, 0xfa, 0xfe, 0x98, 0xc2, 0x2c, 0x4d, 0x4d, 0x47, 0x72, 0x4f, 0xdb, 0x56, 0x69, 0xe8, 0x43 } - -} -, -{ - "RSASSA-PSS Signature Example 1.3", - /* Message to be signed */ - 228, - { 0xa4, 0xb1, 0x59, 0x94, 0x17, 0x61, 0xc4, 0x0c, 0x6a, 0x82, 0xf2, 0xb8, 0x0d, 0x1b, 0x94, 0xf5, 0xaa, 0x26, 0x54, 0xfd, 0x17, 0xe1, 0x2d, 0x58, 0x88, 0x64, 0x67, 0x9b, 0x54, 0xcd, 0x04, 0xef, 0x8b, 0xd0, 0x30, 0x12, 0xbe, 0x8d, 0xc3, 0x7f, 0x4b, 0x83, 0xaf, 0x79, 0x63, 0xfa, 0xff, 0x0d, 0xfa, 0x22, 0x54, 0x77, 0x43, 0x7c, 0x48, 0x01, 0x7f, 0xf2, 0xbe, 0x81, 0x91, 0xcf, 0x39, 0x55, 0xfc, 0x07, 0x35, 0x6e, 0xab, 0x3f, 0x32, 0x2f, 0x7f, 0x62, 0x0e, 0x21, 0xd2, 0x54, 0xe5, 0xdb, 0x43, 0x24, 0x27, 0x9f, 0xe0, 0x67, 0xe0, 0x91, 0x0e, 0x2e, 0x81, 0xca, 0x2c, 0xab, 0x31, 0xc7, 0x45, 0xe6, 0x7a, 0x54, 0x05, 0x8e, 0xb5, 0x0d, 0x99, 0x3c, 0xdb, 0x9e, 0xd0, 0xb4, 0xd0, 0x29, 0xc0, 0x6d, 0x21, 0xa9, 0x4c, 0xa6, 0x61, 0xc3, 0xce, 0x27, 0xfa, 0xe1, 0xd6, 0xcb, 0x20, 0xf4, 0x56, 0x4d, 0x66, 0xce, 0x47, 0x67, 0x58, 0x3d, 0x0e, 0x5f, 0x06, 0x02, 0x15, 0xb5, 0x90, 0x17, 0xbe, 0x85, 0xea, 0x84, 0x89, 0x39, 0x12, 0x7b, 0xd8, 0xc9, 0xc4, 0xd4, 0x7b, 0x51, 0x05, 0x6c, 0x03, 0x1c, 0xf3, 0x36, 0xf1, 0x7c, 0x99, 0x80, 0xf3, 0xb8, 0xf5, 0xb9, 0xb6, 0x87, 0x8e, 0x8b, 0x79, 0x7a, 0xa4, 0x3b, 0x88, 0x26, 0x84, 0x33, 0x3e, 0x17, 0x89, 0x3f, 0xe9, 0xca, 0xa6, 0xaa, 0x29, 0x9f, 0x7e, 0xd1, 0xa1, 0x8e, 0xe2, 0xc5, 0x48, 0x64, 0xb7, 0xb2, 0xb9, 0x9b, 0x72, 0x61, 0x8f, 0xb0, 0x25, 0x74, 0xd1, 0x39, 0xef, 0x50, 0xf0, 0x19, 0xc9, 0xee, 0xf4, 0x16, 0x97, 0x13, 0x38, 0xe7, 0xd4, 0x70 } -, - /* Salt */ - 20, - { 0x71, 0x0b, 0x9c, 0x47, 0x47, 0xd8, 0x00, 0xd4, 0xde, 0x87, 0xf1, 0x2a, 0xfd, 0xce, 0x6d, 0xf1, 0x81, 0x07, 0xcc, 0x77 } -, - /* Signature */ - 128, - { 0x66, 0x60, 0x26, 0xfb, 0xa7, 0x1b, 0xd3, 0xe7, 0xcf, 0x13, 0x15, 0x7c, 0xc2, 0xc5, 0x1a, 0x8e, 0x4a, 0xa6, 0x84, 0xaf, 0x97, 0x78, 0xf9, 0x18, 0x49, 0xf3, 0x43, 0x35, 0xd1, 0x41, 0xc0, 0x01, 0x54, 0xc4, 0x19, 0x76, 0x21, 0xf9, 0x62, 0x4a, 0x67, 0x5b, 0x5a, 0xbc, 0x22, 0xee, 0x7d, 0x5b, 0xaa, 0xff, 0xaa, 0xe1, 0xc9, 0xba, 0xca, 0x2c, 0xc3, 0x73, 0xb3, 0xf3, 0x3e, 0x78, 0xe6, 0x14, 0x3c, 0x39, 0x5a, 0x91, 0xaa, 0x7f, 0xac, 0xa6, 0x64, 0xeb, 0x73, 0x3a, 0xfd, 0x14, 0xd8, 0x82, 0x72, 0x59, 0xd9, 0x9a, 0x75, 0x50, 0xfa, 0xca, 0x50, 0x1e, 0xf2, 0xb0, 0x4e, 0x33, 0xc2, 0x3a, 0xa5, 0x1f, 0x4b, 0x9e, 0x82, 0x82, 0xef, 0xdb, 0x72, 0x8c, 0xc0, 0xab, 0x09, 0x40, 0x5a, 0x91, 0x60, 0x7c, 0x63, 0x69, 0x96, 0x1b, 0xc8, 0x27, 0x0d, 0x2d, 0x4f, 0x39, 0xfc, 0xe6, 0x12, 0xb1 } - -} -, -{ - "RSASSA-PSS Signature Example 1.4", - /* Message to be signed */ - 9, - { 0xbc, 0x65, 0x67, 0x47, 0xfa, 0x9e, 0xaf, 0xb3, 0xf0 } -, - /* Salt */ - 20, - { 0x05, 0x6f, 0x00, 0x98, 0x5d, 0xe1, 0x4d, 0x8e, 0xf5, 0xce, 0xa9, 0xe8, 0x2f, 0x8c, 0x27, 0xbe, 0xf7, 0x20, 0x33, 0x5e } -, - /* Signature */ - 128, - { 0x46, 0x09, 0x79, 0x3b, 0x23, 0xe9, 0xd0, 0x93, 0x62, 0xdc, 0x21, 0xbb, 0x47, 0xda, 0x0b, 0x4f, 0x3a, 0x76, 0x22, 0x64, 0x9a, 0x47, 0xd4, 0x64, 0x01, 0x9b, 0x9a, 0xea, 0xfe, 0x53, 0x35, 0x9c, 0x17, 0x8c, 0x91, 0xcd, 0x58, 0xba, 0x6b, 0xcb, 0x78, 0xbe, 0x03, 0x46, 0xa7, 0xbc, 0x63, 0x7f, 0x4b, 0x87, 0x3d, 0x4b, 0xab, 0x38, 0xee, 0x66, 0x1f, 0x19, 0x96, 0x34, 0xc5, 0x47, 0xa1, 0xad, 0x84, 0x42, 0xe0, 0x3d, 0xa0, 0x15, 0xb1, 0x36, 0xe5, 0x43, 0xf7, 0xab, 0x07, 0xc0, 0xc1, 0x3e, 0x42, 0x25, 0xb8, 0xde, 0x8c, 0xce, 0x25, 0xd4, 0xf6, 0xeb, 0x84, 0x00, 0xf8, 0x1f, 0x7e, 0x18, 0x33, 0xb7, 0xee, 0x6e, 0x33, 0x4d, 0x37, 0x09, 0x64, 0xca, 0x79, 0xfd, 0xb8, 0x72, 0xb4, 0xd7, 0x52, 0x23, 0xb5, 0xee, 0xb0, 0x81, 0x01, 0x59, 0x1f, 0xb5, 0x32, 0xd1, 0x55, 0xa6, 0xde, 0x87 } - -} -, -{ - "RSASSA-PSS Signature Example 1.5", - /* Message to be signed */ - 149, - { 0xb4, 0x55, 0x81, 0x54, 0x7e, 0x54, 0x27, 0x77, 0x0c, 0x76, 0x8e, 0x8b, 0x82, 0xb7, 0x55, 0x64, 0xe0, 0xea, 0x4e, 0x9c, 0x32, 0x59, 0x4d, 0x6b, 0xff, 0x70, 0x65, 0x44, 0xde, 0x0a, 0x87, 0x76, 0xc7, 0xa8, 0x0b, 0x45, 0x76, 0x55, 0x0e, 0xee, 0x1b, 0x2a, 0xca, 0xbc, 0x7e, 0x8b, 0x7d, 0x3e, 0xf7, 0xbb, 0x5b, 0x03, 0xe4, 0x62, 0xc1, 0x10, 0x47, 0xea, 0xdd, 0x00, 0x62, 0x9a, 0xe5, 0x75, 0x48, 0x0a, 0xc1, 0x47, 0x0f, 0xe0, 0x46, 0xf1, 0x3a, 0x2b, 0xf5, 0xaf, 0x17, 0x92, 0x1d, 0xc4, 0xb0, 0xaa, 0x8b, 0x02, 0xbe, 0xe6, 0x33, 0x49, 0x11, 0x65, 0x1d, 0x7f, 0x85, 0x25, 0xd1, 0x0f, 0x32, 0xb5, 0x1d, 0x33, 0xbe, 0x52, 0x0d, 0x3d, 0xdf, 0x5a, 0x70, 0x99, 0x55, 0xa3, 0xdf, 0xe7, 0x82, 0x83, 0xb9, 0xe0, 0xab, 0x54, 0x04, 0x6d, 0x15, 0x0c, 0x17, 0x7f, 0x03, 0x7f, 0xdc, 0xcc, 0x5b, 0xe4, 0xea, 0x5f, 0x68, 0xb5, 0xe5, 0xa3, 0x8c, 0x9d, 0x7e, 0xdc, 0xcc, 0xc4, 0x97, 0x5f, 0x45, 0x5a, 0x69, 0x09, 0xb4 } -, - /* Salt */ - 20, - { 0x80, 0xe7, 0x0f, 0xf8, 0x6a, 0x08, 0xde, 0x3e, 0xc6, 0x09, 0x72, 0xb3, 0x9b, 0x4f, 0xbf, 0xdc, 0xea, 0x67, 0xae, 0x8e } -, - /* Signature */ - 128, - { 0x1d, 0x2a, 0xad, 0x22, 0x1c, 0xa4, 0xd3, 0x1d, 0xdf, 0x13, 0x50, 0x92, 0x39, 0x01, 0x93, 0x98, 0xe3, 0xd1, 0x4b, 0x32, 0xdc, 0x34, 0xdc, 0x5a, 0xf4, 0xae, 0xae, 0xa3, 0xc0, 0x95, 0xaf, 0x73, 0x47, 0x9c, 0xf0, 0xa4, 0x5e, 0x56, 0x29, 0x63, 0x5a, 0x53, 0xa0, 0x18, 0x37, 0x76, 0x15, 0xb1, 0x6c, 0xb9, 0xb1, 0x3b, 0x3e, 0x09, 0xd6, 0x71, 0xeb, 0x71, 0xe3, 0x87, 0xb8, 0x54, 0x5c, 0x59, 0x60, 0xda, 0x5a, 0x64, 0x77, 0x6e, 0x76, 0x8e, 0x82, 0xb2, 0xc9, 0x35, 0x83, 0xbf, 0x10, 0x4c, 0x3f, 0xdb, 0x23, 0x51, 0x2b, 0x7b, 0x4e, 0x89, 0xf6, 0x33, 0xdd, 0x00, 0x63, 0xa5, 0x30, 0xdb, 0x45, 0x24, 0xb0, 0x1c, 0x3f, 0x38, 0x4c, 0x09, 0x31, 0x0e, 0x31, 0x5a, 0x79, 0xdc, 0xd3, 0xd6, 0x84, 0x02, 0x2a, 0x7f, 0x31, 0xc8, 0x65, 0xa6, 0x64, 0xe3, 0x16, 0x97, 0x8b, 0x75, 0x9f, 0xad } - -} -, -{ - "RSASSA-PSS Signature Example 1.6", - /* Message to be signed */ - 233, - { 0x10, 0xaa, 0xe9, 0xa0, 0xab, 0x0b, 0x59, 0x5d, 0x08, 0x41, 0x20, 0x7b, 0x70, 0x0d, 0x48, 0xd7, 0x5f, 0xae, 0xdd, 0xe3, 0xb7, 0x75, 0xcd, 0x6b, 0x4c, 0xc8, 0x8a, 0xe0, 0x6e, 0x46, 0x94, 0xec, 0x74, 0xba, 0x18, 0xf8, 0x52, 0x0d, 0x4f, 0x5e, 0xa6, 0x9c, 0xbb, 0xe7, 0xcc, 0x2b, 0xeb, 0xa4, 0x3e, 0xfd, 0xc1, 0x02, 0x15, 0xac, 0x4e, 0xb3, 0x2d, 0xc3, 0x02, 0xa1, 0xf5, 0x3d, 0xc6, 0xc4, 0x35, 0x22, 0x67, 0xe7, 0x93, 0x6c, 0xfe, 0xbf, 0x7c, 0x8d, 0x67, 0x03, 0x57, 0x84, 0xa3, 0x90, 0x9f, 0xa8, 0x59, 0xc7, 0xb7, 0xb5, 0x9b, 0x8e, 0x39, 0xc5, 0xc2, 0x34, 0x9f, 0x18, 0x86, 0xb7, 0x05, 0xa3, 0x02, 0x67, 0xd4, 0x02, 0xf7, 0x48, 0x6a, 0xb4, 0xf5, 0x8c, 0xad, 0x5d, 0x69, 0xad, 0xb1, 0x7a, 0xb8, 0xcd, 0x0c, 0xe1, 0xca, 0xf5, 0x02, 0x5a, 0xf4, 0xae, 0x24, 0xb1, 0xfb, 0x87, 0x94, 0xc6, 0x07, 0x0c, 0xc0, 0x9a, 0x51, 0xe2, 0xf9, 0x91, 0x13, 0x11, 0xe3, 0x87, 0x7d, 0x00, 0x44, 0xc7, 0x1c, 0x57, 0xa9, 0x93, 0x39, 0x50, 0x08, 0x80, 0x6b, 0x72, 0x3a, 0xc3, 0x83, 0x73, 0xd3, 0x95, 0x48, 0x18, 0x18, 0x52, 0x8c, 0x1e, 0x70, 0x53, 0x73, 0x92, 0x82, 0x05, 0x35, 0x29, 0x51, 0x0e, 0x93, 0x5c, 0xd0, 0xfa, 0x77, 0xb8, 0xfa, 0x53, 0xcc, 0x2d, 0x47, 0x4b, 0xd4, 0xfb, 0x3c, 0xc5, 0xc6, 0x72, 0xd6, 0xff, 0xdc, 0x90, 0xa0, 0x0f, 0x98, 0x48, 0x71, 0x2c, 0x4b, 0xcf, 0xe4, 0x6c, 0x60, 0x57, 0x36, 0x59, 0xb1, 0x1e, 0x64, 0x57, 0xe8, 0x61, 0xf0, 0xf6, 0x04, 0xb6, 0x13, 0x8d, 0x14, 0x4f, 0x8c, 0xe4, 0xe2, 0xda, 0x73 } -, - /* Salt */ - 20, - { 0xa8, 0xab, 0x69, 0xdd, 0x80, 0x1f, 0x00, 0x74, 0xc2, 0xa1, 0xfc, 0x60, 0x64, 0x98, 0x36, 0xc6, 0x16, 0xd9, 0x96, 0x81 } -, - /* Signature */ - 128, - { 0x2a, 0x34, 0xf6, 0x12, 0x5e, 0x1f, 0x6b, 0x0b, 0xf9, 0x71, 0xe8, 0x4f, 0xbd, 0x41, 0xc6, 0x32, 0xbe, 0x8f, 0x2c, 0x2a, 0xce, 0x7d, 0xe8, 0xb6, 0x92, 0x6e, 0x31, 0xff, 0x93, 0xe9, 0xaf, 0x98, 0x7f, 0xbc, 0x06, 0xe5, 0x1e, 0x9b, 0xe1, 0x4f, 0x51, 0x98, 0xf9, 0x1f, 0x3f, 0x95, 0x3b, 0xd6, 0x7d, 0xa6, 0x0a, 0x9d, 0xf5, 0x97, 0x64, 0xc3, 0xdc, 0x0f, 0xe0, 0x8e, 0x1c, 0xbe, 0xf0, 0xb7, 0x5f, 0x86, 0x8d, 0x10, 0xad, 0x3f, 0xba, 0x74, 0x9f, 0xef, 0x59, 0xfb, 0x6d, 0xac, 0x46, 0xa0, 0xd6, 0xe5, 0x04, 0x36, 0x93, 0x31, 0x58, 0x6f, 0x58, 0xe4, 0x62, 0x8f, 0x39, 0xaa, 0x27, 0x89, 0x82, 0x54, 0x3b, 0xc0, 0xee, 0xb5, 0x37, 0xdc, 0x61, 0x95, 0x80, 0x19, 0xb3, 0x94, 0xfb, 0x27, 0x3f, 0x21, 0x58, 0x58, 0xa0, 0xa0, 0x1a, 0xc4, 0xd6, 0x50, 0xb9, 0x55, 0xc6, 0x7f, 0x4c, 0x58 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 2: A 1025-bit RSA Key Pair", -{ - /* RSA modulus n */ - 129, - { 0x01, 0xd4, 0x0c, 0x1b, 0xcf, 0x97, 0xa6, 0x8a, 0xe7, 0xcd, 0xbd, 0x8a, 0x7b, 0xf3, 0xe3, 0x4f, 0xa1, 0x9d, 0xcc, 0xa4, 0xef, 0x75, 0xa4, 0x74, 0x54, 0x37, 0x5f, 0x94, 0x51, 0x4d, 0x88, 0xfe, 0xd0, 0x06, 0xfb, 0x82, 0x9f, 0x84, 0x19, 0xff, 0x87, 0xd6, 0x31, 0x5d, 0xa6, 0x8a, 0x1f, 0xf3, 0xa0, 0x93, 0x8e, 0x9a, 0xbb, 0x34, 0x64, 0x01, 0x1c, 0x30, 0x3a, 0xd9, 0x91, 0x99, 0xcf, 0x0c, 0x7c, 0x7a, 0x8b, 0x47, 0x7d, 0xce, 0x82, 0x9e, 0x88, 0x44, 0xf6, 0x25, 0xb1, 0x15, 0xe5, 0xe9, 0xc4, 0xa5, 0x9c, 0xf8, 0xf8, 0x11, 0x3b, 0x68, 0x34, 0x33, 0x6a, 0x2f, 0xd2, 0x68, 0x9b, 0x47, 0x2c, 0xbb, 0x5e, 0x5c, 0xab, 0xe6, 0x74, 0x35, 0x0c, 0x59, 0xb6, 0xc1, 0x7e, 0x17, 0x68, 0x74, 0xfb, 0x42, 0xf8, 0xfc, 0x3d, 0x17, 0x6a, 0x01, 0x7e, 0xdc, 0x61, 0xfd, 0x32, 0x6c, 0x4b, 0x33, 0xc9 } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 128, - { 0x02, 0x7d, 0x14, 0x7e, 0x46, 0x73, 0x05, 0x73, 0x77, 0xfd, 0x1e, 0xa2, 0x01, 0x56, 0x57, 0x72, 0x17, 0x6a, 0x7d, 0xc3, 0x83, 0x58, 0xd3, 0x76, 0x04, 0x56, 0x85, 0xa2, 0xe7, 0x87, 0xc2, 0x3c, 0x15, 0x57, 0x6b, 0xc1, 0x6b, 0x9f, 0x44, 0x44, 0x02, 0xd6, 0xbf, 0xc5, 0xd9, 0x8a, 0x3e, 0x88, 0xea, 0x13, 0xef, 0x67, 0xc3, 0x53, 0xec, 0xa0, 0xc0, 0xdd, 0xba, 0x92, 0x55, 0xbd, 0x7b, 0x8b, 0xb5, 0x0a, 0x64, 0x4a, 0xfd, 0xfd, 0x1d, 0xd5, 0x16, 0x95, 0xb2, 0x52, 0xd2, 0x2e, 0x73, 0x18, 0xd1, 0xb6, 0x68, 0x7a, 0x1c, 0x10, 0xff, 0x75, 0x54, 0x5f, 0x3d, 0xb0, 0xfe, 0x60, 0x2d, 0x5f, 0x2b, 0x7f, 0x29, 0x4e, 0x36, 0x01, 0xea, 0xb7, 0xb9, 0xd1, 0xce, 0xcd, 0x76, 0x7f, 0x64, 0x69, 0x2e, 0x3e, 0x53, 0x6c, 0xa2, 0x84, 0x6c, 0xb0, 0xc2, 0xdd, 0x48, 0x6a, 0x39, 0xfa, 0x75, 0xb1 } -, - /* Prime p */ - 65, - { 0x01, 0x66, 0x01, 0xe9, 0x26, 0xa0, 0xf8, 0xc9, 0xe2, 0x6e, 0xca, 0xb7, 0x69, 0xea, 0x65, 0xa5, 0xe7, 0xc5, 0x2c, 0xc9, 0xe0, 0x80, 0xef, 0x51, 0x94, 0x57, 0xc6, 0x44, 0xda, 0x68, 0x91, 0xc5, 0xa1, 0x04, 0xd3, 0xea, 0x79, 0x55, 0x92, 0x9a, 0x22, 0xe7, 0xc6, 0x8a, 0x7a, 0xf9, 0xfc, 0xad, 0x77, 0x7c, 0x3c, 0xcc, 0x2b, 0x9e, 0x3d, 0x36, 0x50, 0xbc, 0xe4, 0x04, 0x39, 0x9b, 0x7e, 0x59, 0xd1 } -, - /* Prime q */ - 65, - { 0x01, 0x4e, 0xaf, 0xa1, 0xd4, 0xd0, 0x18, 0x4d, 0xa7, 0xe3, 0x1f, 0x87, 0x7d, 0x12, 0x81, 0xdd, 0xda, 0x62, 0x56, 0x64, 0x86, 0x9e, 0x83, 0x79, 0xe6, 0x7a, 0xd3, 0xb7, 0x5e, 0xae, 0x74, 0xa5, 0x80, 0xe9, 0x82, 0x7a, 0xbd, 0x6e, 0xb7, 0xa0, 0x02, 0xcb, 0x54, 0x11, 0xf5, 0x26, 0x67, 0x97, 0x76, 0x8f, 0xb8, 0xe9, 0x5a, 0xe4, 0x0e, 0x3e, 0x8a, 0x01, 0xf3, 0x5f, 0xf8, 0x9e, 0x56, 0xc0, 0x79 } -, - /* p's CRT exponent dP */ - 64, - { 0xe2, 0x47, 0xcc, 0xe5, 0x04, 0x93, 0x9b, 0x8f, 0x0a, 0x36, 0x09, 0x0d, 0xe2, 0x00, 0x93, 0x87, 0x55, 0xe2, 0x44, 0x4b, 0x29, 0x53, 0x9a, 0x7d, 0xa7, 0xa9, 0x02, 0xf6, 0x05, 0x68, 0x35, 0xc0, 0xdb, 0x7b, 0x52, 0x55, 0x94, 0x97, 0xcf, 0xe2, 0xc6, 0x1a, 0x80, 0x86, 0xd0, 0x21, 0x3c, 0x47, 0x2c, 0x78, 0x85, 0x18, 0x00, 0xb1, 0x71, 0xf6, 0x40, 0x1d, 0xe2, 0xe9, 0xc2, 0x75, 0x6f, 0x31 } -, - /* q's CRT exponent dQ */ - 64, - { 0xb1, 0x2f, 0xba, 0x75, 0x78, 0x55, 0xe5, 0x86, 0xe4, 0x6f, 0x64, 0xc3, 0x8a, 0x70, 0xc6, 0x8b, 0x3f, 0x54, 0x8d, 0x93, 0xd7, 0x87, 0xb3, 0x99, 0x99, 0x9d, 0x4c, 0x8f, 0x0b, 0xbd, 0x25, 0x81, 0xc2, 0x1e, 0x19, 0xed, 0x00, 0x18, 0xa6, 0xd5, 0xd3, 0xdf, 0x86, 0x42, 0x4b, 0x3a, 0xbc, 0xad, 0x40, 0x19, 0x9d, 0x31, 0x49, 0x5b, 0x61, 0x30, 0x9f, 0x27, 0xc1, 0xbf, 0x55, 0xd4, 0x87, 0xc1 } -, - /* CRT coefficient qInv */ - 64, - { 0x56, 0x4b, 0x1e, 0x1f, 0xa0, 0x03, 0xbd, 0xa9, 0x1e, 0x89, 0x09, 0x04, 0x25, 0xaa, 0xc0, 0x5b, 0x91, 0xda, 0x9e, 0xe2, 0x50, 0x61, 0xe7, 0x62, 0x8d, 0x5f, 0x51, 0x30, 0x4a, 0x84, 0x99, 0x2f, 0xdc, 0x33, 0x76, 0x2b, 0xd3, 0x78, 0xa5, 0x9f, 0x03, 0x0a, 0x33, 0x4d, 0x53, 0x2b, 0xd0, 0xda, 0xe8, 0xf2, 0x98, 0xea, 0x9e, 0xd8, 0x44, 0x63, 0x6a, 0xd5, 0xfb, 0x8c, 0xbd, 0xc0, 0x3c, 0xad } - -} -, -{{ - "RSASSA-PSS Signature Example 2.1", - /* Message to be signed */ - 61, - { 0xda, 0xba, 0x03, 0x20, 0x66, 0x26, 0x3f, 0xae, 0xdb, 0x65, 0x98, 0x48, 0x11, 0x52, 0x78, 0xa5, 0x2c, 0x44, 0xfa, 0xa3, 0xa7, 0x6f, 0x37, 0x51, 0x5e, 0xd3, 0x36, 0x32, 0x10, 0x72, 0xc4, 0x0a, 0x9d, 0x9b, 0x53, 0xbc, 0x05, 0x01, 0x40, 0x78, 0xad, 0xf5, 0x20, 0x87, 0x51, 0x46, 0xaa, 0xe7, 0x0f, 0xf0, 0x60, 0x22, 0x6d, 0xcb, 0x7b, 0x1f, 0x1f, 0xc2, 0x7e, 0x93, 0x60 } -, - /* Salt */ - 20, - { 0x57, 0xbf, 0x16, 0x0b, 0xcb, 0x02, 0xbb, 0x1d, 0xc7, 0x28, 0x0c, 0xf0, 0x45, 0x85, 0x30, 0xb7, 0xd2, 0x83, 0x2f, 0xf7 } -, - /* Signature */ - 129, - { 0x01, 0x4c, 0x5b, 0xa5, 0x33, 0x83, 0x28, 0xcc, 0xc6, 0xe7, 0xa9, 0x0b, 0xf1, 0xc0, 0xab, 0x3f, 0xd6, 0x06, 0xff, 0x47, 0x96, 0xd3, 0xc1, 0x2e, 0x4b, 0x63, 0x9e, 0xd9, 0x13, 0x6a, 0x5f, 0xec, 0x6c, 0x16, 0xd8, 0x88, 0x4b, 0xdd, 0x99, 0xcf, 0xdc, 0x52, 0x14, 0x56, 0xb0, 0x74, 0x2b, 0x73, 0x68, 0x68, 0xcf, 0x90, 0xde, 0x09, 0x9a, 0xdb, 0x8d, 0x5f, 0xfd, 0x1d, 0xef, 0xf3, 0x9b, 0xa4, 0x00, 0x7a, 0xb7, 0x46, 0xce, 0xfd, 0xb2, 0x2d, 0x7d, 0xf0, 0xe2, 0x25, 0xf5, 0x46, 0x27, 0xdc, 0x65, 0x46, 0x61, 0x31, 0x72, 0x1b, 0x90, 0xaf, 0x44, 0x53, 0x63, 0xa8, 0x35, 0x8b, 0x9f, 0x60, 0x76, 0x42, 0xf7, 0x8f, 0xab, 0x0a, 0xb0, 0xf4, 0x3b, 0x71, 0x68, 0xd6, 0x4b, 0xae, 0x70, 0xd8, 0x82, 0x78, 0x48, 0xd8, 0xef, 0x1e, 0x42, 0x1c, 0x57, 0x54, 0xdd, 0xf4, 0x2c, 0x25, 0x89, 0xb5, 0xb3 } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSASSA-PSS Signature Example 2.2", - /* Message to be signed */ - 234, - { 0xe4, 0xf8, 0x60, 0x1a, 0x8a, 0x6d, 0xa1, 0xbe, 0x34, 0x44, 0x7c, 0x09, 0x59, 0xc0, 0x58, 0x57, 0x0c, 0x36, 0x68, 0xcf, 0xd5, 0x1d, 0xd5, 0xf9, 0xcc, 0xd6, 0xad, 0x44, 0x11, 0xfe, 0x82, 0x13, 0x48, 0x6d, 0x78, 0xa6, 0xc4, 0x9f, 0x93, 0xef, 0xc2, 0xca, 0x22, 0x88, 0xce, 0xbc, 0x2b, 0x9b, 0x60, 0xbd, 0x04, 0xb1, 0xe2, 0x20, 0xd8, 0x6e, 0x3d, 0x48, 0x48, 0xd7, 0x09, 0xd0, 0x32, 0xd1, 0xe8, 0xc6, 0xa0, 0x70, 0xc6, 0xaf, 0x9a, 0x49, 0x9f, 0xcf, 0x95, 0x35, 0x4b, 0x14, 0xba, 0x61, 0x27, 0xc7, 0x39, 0xde, 0x1b, 0xb0, 0xfd, 0x16, 0x43, 0x1e, 0x46, 0x93, 0x8a, 0xec, 0x0c, 0xf8, 0xad, 0x9e, 0xb7, 0x2e, 0x83, 0x2a, 0x70, 0x35, 0xde, 0x9b, 0x78, 0x07, 0xbd, 0xc0, 0xed, 0x8b, 0x68, 0xeb, 0x0f, 0x5a, 0xc2, 0x21, 0x6b, 0xe4, 0x0c, 0xe9, 0x20, 0xc0, 0xdb, 0x0e, 0xdd, 0xd3, 0x86, 0x0e, 0xd7, 0x88, 0xef, 0xac, 0xca, 0xca, 0x50, 0x2d, 0x8f, 0x2b, 0xd6, 0xd1, 0xa7, 0xc1, 0xf4, 0x1f, 0xf4, 0x6f, 0x16, 0x81, 0xc8, 0xf1, 0xf8, 0x18, 0xe9, 0xc4, 0xf6, 0xd9, 0x1a, 0x0c, 0x78, 0x03, 0xcc, 0xc6, 0x3d, 0x76, 0xa6, 0x54, 0x4d, 0x84, 0x3e, 0x08, 0x4e, 0x36, 0x3b, 0x8a, 0xcc, 0x55, 0xaa, 0x53, 0x17, 0x33, 0xed, 0xb5, 0xde, 0xe5, 0xb5, 0x19, 0x6e, 0x9f, 0x03, 0xe8, 0xb7, 0x31, 0xb3, 0x77, 0x64, 0x28, 0xd9, 0xe4, 0x57, 0xfe, 0x3f, 0xbc, 0xb3, 0xdb, 0x72, 0x74, 0x44, 0x2d, 0x78, 0x58, 0x90, 0xe9, 0xcb, 0x08, 0x54, 0xb6, 0x44, 0x4d, 0xac, 0xe7, 0x91, 0xd7, 0x27, 0x3d, 0xe1, 0x88, 0x97, 0x19, 0x33, 0x8a, 0x77, 0xfe } -, - /* Salt */ - 20, - { 0x7f, 0x6d, 0xd3, 0x59, 0xe6, 0x04, 0xe6, 0x08, 0x70, 0xe8, 0x98, 0xe4, 0x7b, 0x19, 0xbf, 0x2e, 0x5a, 0x7b, 0x2a, 0x90 } -, - /* Signature */ - 129, - { 0x01, 0x09, 0x91, 0x65, 0x6c, 0xca, 0x18, 0x2b, 0x7f, 0x29, 0xd2, 0xdb, 0xc0, 0x07, 0xe7, 0xae, 0x0f, 0xec, 0x15, 0x8e, 0xb6, 0x75, 0x9c, 0xb9, 0xc4, 0x5c, 0x5f, 0xf8, 0x7c, 0x76, 0x35, 0xdd, 0x46, 0xd1, 0x50, 0x88, 0x2f, 0x4d, 0xe1, 0xe9, 0xae, 0x65, 0xe7, 0xf7, 0xd9, 0x01, 0x8f, 0x68, 0x36, 0x95, 0x4a, 0x47, 0xc0, 0xa8, 0x1a, 0x8a, 0x6b, 0x6f, 0x83, 0xf2, 0x94, 0x4d, 0x60, 0x81, 0xb1, 0xaa, 0x7c, 0x75, 0x9b, 0x25, 0x4b, 0x2c, 0x34, 0xb6, 0x91, 0xda, 0x67, 0xcc, 0x02, 0x26, 0xe2, 0x0b, 0x2f, 0x18, 0xb4, 0x22, 0x12, 0x76, 0x1d, 0xcd, 0x4b, 0x90, 0x8a, 0x62, 0xb3, 0x71, 0xb5, 0x91, 0x8c, 0x57, 0x42, 0xaf, 0x4b, 0x53, 0x7e, 0x29, 0x69, 0x17, 0x67, 0x4f, 0xb9, 0x14, 0x19, 0x47, 0x61, 0x62, 0x1c, 0xc1, 0x9a, 0x41, 0xf6, 0xfb, 0x95, 0x3f, 0xbc, 0xbb, 0x64, 0x9d, 0xea } - -} -, -{ - "RSASSA-PSS Signature Example 2.3", - /* Message to be signed */ - 102, - { 0x52, 0xa1, 0xd9, 0x6c, 0x8a, 0xc3, 0x9e, 0x41, 0xe4, 0x55, 0x80, 0x98, 0x01, 0xb9, 0x27, 0xa5, 0xb4, 0x45, 0xc1, 0x0d, 0x90, 0x2a, 0x0d, 0xcd, 0x38, 0x50, 0xd2, 0x2a, 0x66, 0xd2, 0xbb, 0x07, 0x03, 0xe6, 0x7d, 0x58, 0x67, 0x11, 0x45, 0x95, 0xaa, 0xbf, 0x5a, 0x7a, 0xeb, 0x5a, 0x8f, 0x87, 0x03, 0x4b, 0xbb, 0x30, 0xe1, 0x3c, 0xfd, 0x48, 0x17, 0xa9, 0xbe, 0x76, 0x23, 0x00, 0x23, 0x60, 0x6d, 0x02, 0x86, 0xa3, 0xfa, 0xf8, 0xa4, 0xd2, 0x2b, 0x72, 0x8e, 0xc5, 0x18, 0x07, 0x9f, 0x9e, 0x64, 0x52, 0x6e, 0x3a, 0x0c, 0xc7, 0x94, 0x1a, 0xa3, 0x38, 0xc4, 0x37, 0x99, 0x7c, 0x68, 0x0c, 0xca, 0xc6, 0x7c, 0x66, 0xbf, 0xa1 } -, - /* Salt */ - 20, - { 0xfc, 0xa8, 0x62, 0x06, 0x8b, 0xce, 0x22, 0x46, 0x72, 0x4b, 0x70, 0x8a, 0x05, 0x19, 0xda, 0x17, 0xe6, 0x48, 0x68, 0x8c } -, - /* Signature */ - 129, - { 0x00, 0x7f, 0x00, 0x30, 0x01, 0x8f, 0x53, 0xcd, 0xc7, 0x1f, 0x23, 0xd0, 0x36, 0x59, 0xfd, 0xe5, 0x4d, 0x42, 0x41, 0xf7, 0x58, 0xa7, 0x50, 0xb4, 0x2f, 0x18, 0x5f, 0x87, 0x57, 0x85, 0x20, 0xc3, 0x07, 0x42, 0xaf, 0xd8, 0x43, 0x59, 0xb6, 0xe6, 0xe8, 0xd3, 0xed, 0x95, 0x9d, 0xc6, 0xfe, 0x48, 0x6b, 0xed, 0xc8, 0xe2, 0xcf, 0x00, 0x1f, 0x63, 0xa7, 0xab, 0xe1, 0x62, 0x56, 0xa1, 0xb8, 0x4d, 0xf0, 0xd2, 0x49, 0xfc, 0x05, 0xd3, 0x19, 0x4c, 0xe5, 0xf0, 0x91, 0x27, 0x42, 0xdb, 0xbf, 0x80, 0xdd, 0x17, 0x4f, 0x6c, 0x51, 0xf6, 0xba, 0xd7, 0xf1, 0x6c, 0xf3, 0x36, 0x4e, 0xba, 0x09, 0x5a, 0x06, 0x26, 0x7d, 0xc3, 0x79, 0x38, 0x03, 0xac, 0x75, 0x26, 0xae, 0xbe, 0x0a, 0x47, 0x5d, 0x38, 0xb8, 0xc2, 0x24, 0x7a, 0xb5, 0x1c, 0x48, 0x98, 0xdf, 0x70, 0x47, 0xdc, 0x6a, 0xdf, 0x52, 0xc6, 0xc4 } - -} -, -{ - "RSASSA-PSS Signature Example 2.4", - /* Message to be signed */ - 30, - { 0xa7, 0x18, 0x2c, 0x83, 0xac, 0x18, 0xbe, 0x65, 0x70, 0xa1, 0x06, 0xaa, 0x9d, 0x5c, 0x4e, 0x3d, 0xbb, 0xd4, 0xaf, 0xae, 0xb0, 0xc6, 0x0c, 0x4a, 0x23, 0xe1, 0x96, 0x9d, 0x79, 0xff } -, - /* Salt */ - 20, - { 0x80, 0x70, 0xef, 0x2d, 0xe9, 0x45, 0xc0, 0x23, 0x87, 0x68, 0x4b, 0xa0, 0xd3, 0x30, 0x96, 0x73, 0x22, 0x35, 0xd4, 0x40 } -, - /* Signature */ - 129, - { 0x00, 0x9c, 0xd2, 0xf4, 0xed, 0xbe, 0x23, 0xe1, 0x23, 0x46, 0xae, 0x8c, 0x76, 0xdd, 0x9a, 0xd3, 0x23, 0x0a, 0x62, 0x07, 0x61, 0x41, 0xf1, 0x6c, 0x15, 0x2b, 0xa1, 0x85, 0x13, 0xa4, 0x8e, 0xf6, 0xf0, 0x10, 0xe0, 0xe3, 0x7f, 0xd3, 0xdf, 0x10, 0xa1, 0xec, 0x62, 0x9a, 0x0c, 0xb5, 0xa3, 0xb5, 0xd2, 0x89, 0x30, 0x07, 0x29, 0x8c, 0x30, 0x93, 0x6a, 0x95, 0x90, 0x3b, 0x6b, 0xa8, 0x55, 0x55, 0xd9, 0xec, 0x36, 0x73, 0xa0, 0x61, 0x08, 0xfd, 0x62, 0xa2, 0xfd, 0xa5, 0x6d, 0x1c, 0xe2, 0xe8, 0x5c, 0x4d, 0xb6, 0xb2, 0x4a, 0x81, 0xca, 0x3b, 0x49, 0x6c, 0x36, 0xd4, 0xfd, 0x06, 0xeb, 0x7c, 0x91, 0x66, 0xd8, 0xe9, 0x48, 0x77, 0xc4, 0x2b, 0xea, 0x62, 0x2b, 0x3b, 0xfe, 0x92, 0x51, 0xfd, 0xc2, 0x1d, 0x8d, 0x53, 0x71, 0xba, 0xda, 0xd7, 0x8a, 0x48, 0x82, 0x14, 0x79, 0x63, 0x35, 0xb4, 0x0b } - -} -, -{ - "RSASSA-PSS Signature Example 2.5", - /* Message to be signed */ - 56, - { 0x86, 0xa8, 0x3d, 0x4a, 0x72, 0xee, 0x93, 0x2a, 0x4f, 0x56, 0x30, 0xaf, 0x65, 0x79, 0xa3, 0x86, 0xb7, 0x8f, 0xe8, 0x89, 0x99, 0xe0, 0xab, 0xd2, 0xd4, 0x90, 0x34, 0xa4, 0xbf, 0xc8, 0x54, 0xdd, 0x94, 0xf1, 0x09, 0x4e, 0x2e, 0x8c, 0xd7, 0xa1, 0x79, 0xd1, 0x95, 0x88, 0xe4, 0xae, 0xfc, 0x1b, 0x1b, 0xd2, 0x5e, 0x95, 0xe3, 0xdd, 0x46, 0x1f } -, - /* Salt */ - 20, - { 0x17, 0x63, 0x9a, 0x4e, 0x88, 0xd7, 0x22, 0xc4, 0xfc, 0xa2, 0x4d, 0x07, 0x9a, 0x8b, 0x29, 0xc3, 0x24, 0x33, 0xb0, 0xc9 } -, - /* Signature */ - 129, - { 0x00, 0xec, 0x43, 0x08, 0x24, 0x93, 0x1e, 0xbd, 0x3b, 0xaa, 0x43, 0x03, 0x4d, 0xae, 0x98, 0xba, 0x64, 0x6b, 0x8c, 0x36, 0x01, 0x3d, 0x16, 0x71, 0xc3, 0xcf, 0x1c, 0xf8, 0x26, 0x0c, 0x37, 0x4b, 0x19, 0xf8, 0xe1, 0xcc, 0x8d, 0x96, 0x50, 0x12, 0x40, 0x5e, 0x7e, 0x9b, 0xf7, 0x37, 0x86, 0x12, 0xdf, 0xcc, 0x85, 0xfc, 0xe1, 0x2c, 0xda, 0x11, 0xf9, 0x50, 0xbd, 0x0b, 0xa8, 0x87, 0x67, 0x40, 0x43, 0x6c, 0x1d, 0x25, 0x95, 0xa6, 0x4a, 0x1b, 0x32, 0xef, 0xcf, 0xb7, 0x4a, 0x21, 0xc8, 0x73, 0xb3, 0xcc, 0x33, 0xaa, 0xf4, 0xe3, 0xdc, 0x39, 0x53, 0xde, 0x67, 0xf0, 0x67, 0x4c, 0x04, 0x53, 0xb4, 0xfd, 0x9f, 0x60, 0x44, 0x06, 0xd4, 0x41, 0xb8, 0x16, 0x09, 0x8c, 0xb1, 0x06, 0xfe, 0x34, 0x72, 0xbc, 0x25, 0x1f, 0x81, 0x5f, 0x59, 0xdb, 0x2e, 0x43, 0x78, 0xa3, 0xad, 0xdc, 0x18, 0x1e, 0xcf } - -} -, -{ - "RSASSA-PSS Signature Example 2.6", - /* Message to be signed */ - 26, - { 0x04, 0x9f, 0x91, 0x54, 0xd8, 0x71, 0xac, 0x4a, 0x7c, 0x7a, 0xb4, 0x53, 0x25, 0xba, 0x75, 0x45, 0xa1, 0xed, 0x08, 0xf7, 0x05, 0x25, 0xb2, 0x66, 0x7c, 0xf1 } -, - /* Salt */ - 20, - { 0x37, 0x81, 0x0d, 0xef, 0x10, 0x55, 0xed, 0x92, 0x2b, 0x06, 0x3d, 0xf7, 0x98, 0xde, 0x5d, 0x0a, 0xab, 0xf8, 0x86, 0xee } -, - /* Signature */ - 129, - { 0x00, 0x47, 0x5b, 0x16, 0x48, 0xf8, 0x14, 0xa8, 0xdc, 0x0a, 0xbd, 0xc3, 0x7b, 0x55, 0x27, 0xf5, 0x43, 0xb6, 0x66, 0xbb, 0x6e, 0x39, 0xd3, 0x0e, 0x5b, 0x49, 0xd3, 0xb8, 0x76, 0xdc, 0xcc, 0x58, 0xea, 0xc1, 0x4e, 0x32, 0xa2, 0xd5, 0x5c, 0x26, 0x16, 0x01, 0x44, 0x56, 0xad, 0x2f, 0x24, 0x6f, 0xc8, 0xe3, 0xd5, 0x60, 0xda, 0x3d, 0xdf, 0x37, 0x9a, 0x1c, 0x0b, 0xd2, 0x00, 0xf1, 0x02, 0x21, 0xdf, 0x07, 0x8c, 0x21, 0x9a, 0x15, 0x1b, 0xc8, 0xd4, 0xec, 0x9d, 0x2f, 0xc2, 0x56, 0x44, 0x67, 0x81, 0x10, 0x14, 0xef, 0x15, 0xd8, 0xea, 0x01, 0xc2, 0xeb, 0xbf, 0xf8, 0xc2, 0xc8, 0xef, 0xab, 0x38, 0x09, 0x6e, 0x55, 0xfc, 0xbe, 0x32, 0x85, 0xc7, 0xaa, 0x55, 0x88, 0x51, 0x25, 0x4f, 0xaf, 0xfa, 0x92, 0xc1, 0xc7, 0x2b, 0x78, 0x75, 0x86, 0x63, 0xef, 0x45, 0x82, 0x84, 0x31, 0x39, 0xd7, 0xa6 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 3: A 1026-bit RSA Key Pair", -{ - /* RSA modulus n */ - 129, - { 0x02, 0xf2, 0x46, 0xef, 0x45, 0x1e, 0xd3, 0xee, 0xbb, 0x9a, 0x31, 0x02, 0x00, 0xcc, 0x25, 0x85, 0x9c, 0x04, 0x8e, 0x4b, 0xe7, 0x98, 0x30, 0x29, 0x91, 0x11, 0x2e, 0xb6, 0x8c, 0xe6, 0xdb, 0x67, 0x4e, 0x28, 0x0d, 0xa2, 0x1f, 0xed, 0xed, 0x1a, 0xe7, 0x48, 0x80, 0xca, 0x52, 0x2b, 0x18, 0xdb, 0x24, 0x93, 0x85, 0x01, 0x28, 0x27, 0xc5, 0x15, 0xf0, 0xe4, 0x66, 0xa1, 0xff, 0xa6, 0x91, 0xd9, 0x81, 0x70, 0x57, 0x4e, 0x9d, 0x0e, 0xad, 0xb0, 0x87, 0x58, 0x6c, 0xa4, 0x89, 0x33, 0xda, 0x3c, 0xc9, 0x53, 0xd9, 0x5b, 0xd0, 0xed, 0x50, 0xde, 0x10, 0xdd, 0xcb, 0x67, 0x36, 0x10, 0x7d, 0x6c, 0x83, 0x1c, 0x7f, 0x66, 0x3e, 0x83, 0x3c, 0xa4, 0xc0, 0x97, 0xe7, 0x00, 0xce, 0x0f, 0xb9, 0x45, 0xf8, 0x8f, 0xb8, 0x5f, 0xe8, 0xe5, 0xa7, 0x73, 0x17, 0x25, 0x65, 0xb9, 0x14, 0xa4, 0x71, 0xa4, 0x43 } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 128, - { 0x65, 0x14, 0x51, 0x73, 0x3b, 0x56, 0xde, 0x5a, 0xc0, 0xa6, 0x89, 0xa4, 0xae, 0xb6, 0xe6, 0x89, 0x4a, 0x69, 0x01, 0x4e, 0x07, 0x6c, 0x88, 0xdd, 0x7a, 0x66, 0x7e, 0xab, 0x32, 0x32, 0xbb, 0xcc, 0xd2, 0xfc, 0x44, 0xba, 0x2f, 0xa9, 0xc3, 0x1d, 0xb4, 0x6f, 0x21, 0xed, 0xd1, 0xfd, 0xb2, 0x3c, 0x5c, 0x12, 0x8a, 0x5d, 0xa5, 0xba, 0xb9, 0x1e, 0x7f, 0x95, 0x2b, 0x67, 0x75, 0x9c, 0x7c, 0xff, 0x70, 0x54, 0x15, 0xac, 0x9f, 0xa0, 0x90, 0x7c, 0x7c, 0xa6, 0x17, 0x8f, 0x66, 0x8f, 0xb9, 0x48, 0xd8, 0x69, 0xda, 0x4c, 0xc3, 0xb7, 0x35, 0x6f, 0x40, 0x08, 0xdf, 0xd5, 0x44, 0x9d, 0x32, 0xee, 0x02, 0xd9, 0xa4, 0x77, 0xeb, 0x69, 0xfc, 0x29, 0x26, 0x6e, 0x5d, 0x90, 0x70, 0x51, 0x23, 0x75, 0xa5, 0x0f, 0xbb, 0xcc, 0x27, 0xe2, 0x38, 0xad, 0x98, 0x42, 0x5f, 0x6e, 0xbb, 0xf8, 0x89, 0x91 } -, - /* Prime p */ - 65, - { 0x01, 0xbd, 0x36, 0xe1, 0x8e, 0xce, 0x4b, 0x0f, 0xdb, 0x2e, 0x9c, 0x9d, 0x54, 0x8b, 0xd1, 0xa7, 0xd6, 0xe2, 0xc2, 0x1c, 0x6f, 0xdc, 0x35, 0x07, 0x4a, 0x1d, 0x05, 0xb1, 0xc6, 0xc8, 0xb3, 0xd5, 0x58, 0xea, 0x26, 0x39, 0xc9, 0xa9, 0xa4, 0x21, 0x68, 0x01, 0x69, 0x31, 0x72, 0x52, 0x55, 0x8b, 0xd1, 0x48, 0xad, 0x21, 0x5a, 0xac, 0x55, 0x0e, 0x2d, 0xcf, 0x12, 0xa8, 0x2d, 0x0e, 0xbf, 0xe8, 0x53 } -, - /* Prime q */ - 65, - { 0x01, 0xb1, 0xb6, 0x56, 0xad, 0x86, 0xd8, 0xe1, 0x9d, 0x5d, 0xc8, 0x62, 0x92, 0xb3, 0xa1, 0x92, 0xfd, 0xf6, 0xe0, 0xdd, 0x37, 0x87, 0x7b, 0xad, 0x14, 0x82, 0x2f, 0xa0, 0x01, 0x90, 0xca, 0xb2, 0x65, 0xf9, 0x0d, 0x3f, 0x02, 0x05, 0x7b, 0x6f, 0x54, 0xd6, 0xec, 0xb1, 0x44, 0x91, 0xe5, 0xad, 0xea, 0xce, 0xbc, 0x48, 0xbf, 0x0e, 0xbd, 0x2a, 0x2a, 0xd2, 0x6d, 0x40, 0x2e, 0x54, 0xf6, 0x16, 0x51 } -, - /* p's CRT exponent dP */ - 64, - { 0x1f, 0x27, 0x79, 0xfd, 0x2e, 0x3e, 0x5e, 0x6b, 0xae, 0x05, 0x53, 0x95, 0x18, 0xfb, 0xa0, 0xcd, 0x0e, 0xad, 0x1a, 0xa4, 0x51, 0x3a, 0x7c, 0xba, 0x18, 0xf1, 0xcf, 0x10, 0xe3, 0xf6, 0x81, 0x95, 0x69, 0x3d, 0x27, 0x8a, 0x0f, 0x0e, 0xe7, 0x2f, 0x89, 0xf9, 0xbc, 0x76, 0x0d, 0x80, 0xe2, 0xf9, 0xd0, 0x26, 0x1d, 0x51, 0x65, 0x01, 0xc6, 0xae, 0x39, 0xf1, 0x4a, 0x47, 0x6c, 0xe2, 0xcc, 0xf5 } -, - /* q's CRT exponent dQ */ - 65, - { 0x01, 0x1a, 0x0d, 0x36, 0x79, 0x4b, 0x04, 0xa8, 0x54, 0xaa, 0xb4, 0xb2, 0x46, 0x2d, 0x43, 0x9a, 0x50, 0x46, 0xc9, 0x1d, 0x94, 0x0b, 0x2b, 0xc6, 0xf7, 0x5b, 0x62, 0x95, 0x6f, 0xef, 0x35, 0xa2, 0xa6, 0xe6, 0x3c, 0x53, 0x09, 0x81, 0x7f, 0x30, 0x7b, 0xbf, 0xf9, 0xd5, 0x9e, 0x7e, 0x33, 0x1b, 0xd3, 0x63, 0xf6, 0xd6, 0x68, 0x49, 0xb1, 0x83, 0x46, 0xad, 0xea, 0x16, 0x9f, 0x0a, 0xe9, 0xae, 0xc1 } -, - /* CRT coefficient qInv */ - 64, - { 0x0b, 0x30, 0xf0, 0xec, 0xf5, 0x58, 0x75, 0x2f, 0xb3, 0xa6, 0xce, 0x4b, 0xa2, 0xb8, 0xc6, 0x75, 0xf6, 0x59, 0xeb, 0xa6, 0xc3, 0x76, 0x58, 0x5a, 0x1b, 0x39, 0x71, 0x2d, 0x03, 0x8a, 0xe3, 0xd2, 0xb4, 0x6f, 0xcb, 0x41, 0x8a, 0xe1, 0x5d, 0x09, 0x05, 0xda, 0x64, 0x40, 0xe1, 0x51, 0x3a, 0x30, 0xb9, 0xb7, 0xd6, 0x66, 0x8f, 0xbc, 0x5e, 0x88, 0xe5, 0xab, 0x7a, 0x17, 0x5e, 0x73, 0xba, 0x35 } - -} -, -{{ - "RSASSA-PSS Signature Example 3.1", - /* Message to be signed */ - 30, - { 0x59, 0x4b, 0x37, 0x33, 0x3b, 0xbb, 0x2c, 0x84, 0x52, 0x4a, 0x87, 0xc1, 0xa0, 0x1f, 0x75, 0xfc, 0xec, 0x0e, 0x32, 0x56, 0xf1, 0x08, 0xe3, 0x8d, 0xca, 0x36, 0xd7, 0x0d, 0x00, 0x57 } -, - /* Salt */ - 20, - { 0xf3, 0x1a, 0xd6, 0xc8, 0xcf, 0x89, 0xdf, 0x78, 0xed, 0x77, 0xfe, 0xac, 0xbc, 0xc2, 0xf8, 0xb0, 0xa8, 0xe4, 0xcf, 0xaa } -, - /* Signature */ - 129, - { 0x00, 0x88, 0xb1, 0x35, 0xfb, 0x17, 0x94, 0xb6, 0xb9, 0x6c, 0x4a, 0x3e, 0x67, 0x81, 0x97, 0xf8, 0xca, 0xc5, 0x2b, 0x64, 0xb2, 0xfe, 0x90, 0x7d, 0x6f, 0x27, 0xde, 0x76, 0x11, 0x24, 0x96, 0x4a, 0x99, 0xa0, 0x1a, 0x88, 0x27, 0x40, 0xec, 0xfa, 0xed, 0x6c, 0x01, 0xa4, 0x74, 0x64, 0xbb, 0x05, 0x18, 0x23, 0x13, 0xc0, 0x13, 0x38, 0xa8, 0xcd, 0x09, 0x72, 0x14, 0xcd, 0x68, 0xca, 0x10, 0x3b, 0xd5, 0x7d, 0x3b, 0xc9, 0xe8, 0x16, 0x21, 0x3e, 0x61, 0xd7, 0x84, 0xf1, 0x82, 0x46, 0x7a, 0xbf, 0x8a, 0x01, 0xcf, 0x25, 0x3e, 0x99, 0xa1, 0x56, 0xea, 0xa8, 0xe3, 0xe1, 0xf9, 0x0e, 0x3c, 0x6e, 0x4e, 0x3a, 0xa2, 0xd8, 0x3e, 0xd0, 0x34, 0x5b, 0x89, 0xfa, 0xfc, 0x9c, 0x26, 0x07, 0x7c, 0x14, 0xb6, 0xac, 0x51, 0x45, 0x4f, 0xa2, 0x6e, 0x44, 0x6e, 0x3a, 0x2f, 0x15, 0x3b, 0x2b, 0x16, 0x79, 0x7f } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSASSA-PSS Signature Example 3.2", - /* Message to be signed */ - 29, - { 0x8b, 0x76, 0x95, 0x28, 0x88, 0x4a, 0x0d, 0x1f, 0xfd, 0x09, 0x0c, 0xf1, 0x02, 0x99, 0x3e, 0x79, 0x6d, 0xad, 0xcf, 0xbd, 0xdd, 0x38, 0xe4, 0x4f, 0xf6, 0x32, 0x4c, 0xa4, 0x51 } -, - /* Salt */ - 20, - { 0xfc, 0xf9, 0xf0, 0xe1, 0xf1, 0x99, 0xa3, 0xd1, 0xd0, 0xda, 0x68, 0x1c, 0x5b, 0x86, 0x06, 0xfc, 0x64, 0x29, 0x39, 0xf7 } -, - /* Signature */ - 129, - { 0x02, 0xa5, 0xf0, 0xa8, 0x58, 0xa0, 0x86, 0x4a, 0x4f, 0x65, 0x01, 0x7a, 0x7d, 0x69, 0x45, 0x4f, 0x3f, 0x97, 0x3a, 0x29, 0x99, 0x83, 0x9b, 0x7b, 0xbc, 0x48, 0xbf, 0x78, 0x64, 0x11, 0x69, 0x17, 0x95, 0x56, 0xf5, 0x95, 0xfa, 0x41, 0xf6, 0xff, 0x18, 0xe2, 0x86, 0xc2, 0x78, 0x30, 0x79, 0xbc, 0x09, 0x10, 0xee, 0x9c, 0xc3, 0x4f, 0x49, 0xba, 0x68, 0x11, 0x24, 0xf9, 0x23, 0xdf, 0xa8, 0x8f, 0x42, 0x61, 0x41, 0xa3, 0x68, 0xa5, 0xf5, 0xa9, 0x30, 0xc6, 0x28, 0xc2, 0xc3, 0xc2, 0x00, 0xe1, 0x8a, 0x76, 0x44, 0x72, 0x1a, 0x0c, 0xbe, 0xc6, 0xdd, 0x3f, 0x62, 0x79, 0xbd, 0xe3, 0xe8, 0xf2, 0xbe, 0x5e, 0x2d, 0x4e, 0xe5, 0x6f, 0x97, 0xe7, 0xce, 0xaf, 0x33, 0x05, 0x4b, 0xe7, 0x04, 0x2b, 0xd9, 0x1a, 0x63, 0xbb, 0x09, 0xf8, 0x97, 0xbd, 0x41, 0xe8, 0x11, 0x97, 0xde, 0xe9, 0x9b, 0x11, 0xaf } - -} -, -{ - "RSASSA-PSS Signature Example 3.3", - /* Message to be signed */ - 167, - { 0x1a, 0xbd, 0xba, 0x48, 0x9c, 0x5a, 0xda, 0x2f, 0x99, 0x5e, 0xd1, 0x6f, 0x19, 0xd5, 0xa9, 0x4d, 0x9e, 0x6e, 0xc3, 0x4a, 0x8d, 0x84, 0xf8, 0x45, 0x57, 0xd2, 0x6e, 0x5e, 0xf9, 0xb0, 0x2b, 0x22, 0x88, 0x7e, 0x3f, 0x9a, 0x4b, 0x69, 0x0a, 0xd1, 0x14, 0x92, 0x09, 0xc2, 0x0c, 0x61, 0x43, 0x1f, 0x0c, 0x01, 0x7c, 0x36, 0xc2, 0x65, 0x7b, 0x35, 0xd7, 0xb0, 0x7d, 0x3f, 0x5a, 0xd8, 0x70, 0x85, 0x07, 0xa9, 0xc1, 0xb8, 0x31, 0xdf, 0x83, 0x5a, 0x56, 0xf8, 0x31, 0x07, 0x18, 0x14, 0xea, 0x5d, 0x3d, 0x8d, 0x8f, 0x6a, 0xde, 0x40, 0xcb, 0xa3, 0x8b, 0x42, 0xdb, 0x7a, 0x2d, 0x3d, 0x7a, 0x29, 0xc8, 0xf0, 0xa7, 0x9a, 0x78, 0x38, 0xcf, 0x58, 0xa9, 0x75, 0x7f, 0xa2, 0xfe, 0x4c, 0x40, 0xdf, 0x9b, 0xaa, 0x19, 0x3b, 0xfc, 0x6f, 0x92, 0xb1, 0x23, 0xad, 0x57, 0xb0, 0x7a, 0xce, 0x3e, 0x6a, 0xc0, 0x68, 0xc9, 0xf1, 0x06, 0xaf, 0xd9, 0xee, 0xb0, 0x3b, 0x4f, 0x37, 0xc2, 0x5d, 0xbf, 0xbc, 0xfb, 0x30, 0x71, 0xf6, 0xf9, 0x77, 0x17, 0x66, 0xd0, 0x72, 0xf3, 0xbb, 0x07, 0x0a, 0xf6, 0x60, 0x55, 0x32, 0x97, 0x3a, 0xe2, 0x50, 0x51 } -, - /* Salt */ - 20, - { 0x98, 0x6e, 0x7c, 0x43, 0xdb, 0xb6, 0x71, 0xbd, 0x41, 0xb9, 0xa7, 0xf4, 0xb6, 0xaf, 0xc8, 0x0e, 0x80, 0x5f, 0x24, 0x23 } -, - /* Signature */ - 129, - { 0x02, 0x44, 0xbc, 0xd1, 0xc8, 0xc1, 0x69, 0x55, 0x73, 0x6c, 0x80, 0x3b, 0xe4, 0x01, 0x27, 0x2e, 0x18, 0xcb, 0x99, 0x08, 0x11, 0xb1, 0x4f, 0x72, 0xdb, 0x96, 0x41, 0x24, 0xd5, 0xfa, 0x76, 0x06, 0x49, 0xcb, 0xb5, 0x7a, 0xfb, 0x87, 0x55, 0xdb, 0xb6, 0x2b, 0xf5, 0x1f, 0x46, 0x6c, 0xf2, 0x3a, 0x0a, 0x16, 0x07, 0x57, 0x6e, 0x98, 0x3d, 0x77, 0x8f, 0xce, 0xff, 0xa9, 0x2d, 0xf7, 0x54, 0x8a, 0xea, 0x8e, 0xa4, 0xec, 0xad, 0x2c, 0x29, 0xdd, 0x9f, 0x95, 0xbc, 0x07, 0xfe, 0x91, 0xec, 0xf8, 0xbe, 0xe2, 0x55, 0xbf, 0xe8, 0x76, 0x2f, 0xd7, 0x69, 0x0a, 0xa9, 0xbf, 0xa4, 0xfa, 0x08, 0x49, 0xef, 0x72, 0x8c, 0x2c, 0x42, 0xc4, 0x53, 0x23, 0x64, 0x52, 0x2d, 0xf2, 0xab, 0x7f, 0x9f, 0x8a, 0x03, 0xb6, 0x3f, 0x7a, 0x49, 0x91, 0x75, 0x82, 0x86, 0x68, 0xf5, 0xef, 0x5a, 0x29, 0xe3, 0x80, 0x2c } - -} -, -{ - "RSASSA-PSS Signature Example 3.4", - /* Message to be signed */ - 73, - { 0x8f, 0xb4, 0x31, 0xf5, 0xee, 0x79, 0x2b, 0x6c, 0x2a, 0xc7, 0xdb, 0x53, 0xcc, 0x42, 0x86, 0x55, 0xae, 0xb3, 0x2d, 0x03, 0xf4, 0xe8, 0x89, 0xc5, 0xc2, 0x5d, 0xe6, 0x83, 0xc4, 0x61, 0xb5, 0x3a, 0xcf, 0x89, 0xf9, 0xf8, 0xd3, 0xaa, 0xbd, 0xf6, 0xb9, 0xf0, 0xc2, 0xa1, 0xde, 0x12, 0xe1, 0x5b, 0x49, 0xed, 0xb3, 0x91, 0x9a, 0x65, 0x2f, 0xe9, 0x49, 0x1c, 0x25, 0xa7, 0xfc, 0xe1, 0xf7, 0x22, 0xc2, 0x54, 0x36, 0x08, 0xb6, 0x9d, 0xc3, 0x75, 0xec } -, - /* Salt */ - 20, - { 0xf8, 0x31, 0x2d, 0x9c, 0x8e, 0xea, 0x13, 0xec, 0x0a, 0x4c, 0x7b, 0x98, 0x12, 0x0c, 0x87, 0x50, 0x90, 0x87, 0xc4, 0x78 } -, - /* Signature */ - 129, - { 0x01, 0x96, 0xf1, 0x2a, 0x00, 0x5b, 0x98, 0x12, 0x9c, 0x8d, 0xf1, 0x3c, 0x4c, 0xb1, 0x6f, 0x8a, 0xa8, 0x87, 0xd3, 0xc4, 0x0d, 0x96, 0xdf, 0x3a, 0x88, 0xe7, 0x53, 0x2e, 0xf3, 0x9c, 0xd9, 0x92, 0xf2, 0x73, 0xab, 0xc3, 0x70, 0xbc, 0x1b, 0xe6, 0xf0, 0x97, 0xcf, 0xeb, 0xbf, 0x01, 0x18, 0xfd, 0x9e, 0xf4, 0xb9, 0x27, 0x15, 0x5f, 0x3d, 0xf2, 0x2b, 0x90, 0x4d, 0x90, 0x70, 0x2d, 0x1f, 0x7b, 0xa7, 0xa5, 0x2b, 0xed, 0x8b, 0x89, 0x42, 0xf4, 0x12, 0xcd, 0x7b, 0xd6, 0x76, 0xc9, 0xd1, 0x8e, 0x17, 0x03, 0x91, 0xdc, 0xd3, 0x45, 0xc0, 0x6a, 0x73, 0x09, 0x64, 0xb3, 0xf3, 0x0b, 0xcc, 0xe0, 0xbb, 0x20, 0xba, 0x10, 0x6f, 0x9a, 0xb0, 0xee, 0xb3, 0x9c, 0xf8, 0xa6, 0x60, 0x7f, 0x75, 0xc0, 0x34, 0x7f, 0x0a, 0xf7, 0x9f, 0x16, 0xaf, 0xa0, 0x81, 0xd2, 0xc9, 0x2d, 0x1e, 0xe6, 0xf8, 0x36, 0xb8 } - -} -, -{ - "RSASSA-PSS Signature Example 3.5", - /* Message to be signed */ - 115, - { 0xfe, 0xf4, 0x16, 0x1d, 0xfa, 0xaf, 0x9c, 0x52, 0x95, 0x05, 0x1d, 0xfc, 0x1f, 0xf3, 0x81, 0x0c, 0x8c, 0x9e, 0xc2, 0xe8, 0x66, 0xf7, 0x07, 0x54, 0x22, 0xc8, 0xec, 0x42, 0x16, 0xa9, 0xc4, 0xff, 0x49, 0x42, 0x7d, 0x48, 0x3c, 0xae, 0x10, 0xc8, 0x53, 0x4a, 0x41, 0xb2, 0xfd, 0x15, 0xfe, 0xe0, 0x69, 0x60, 0xec, 0x6f, 0xb3, 0xf7, 0xa7, 0xe9, 0x4a, 0x2f, 0x8a, 0x2e, 0x3e, 0x43, 0xdc, 0x4a, 0x40, 0x57, 0x6c, 0x30, 0x97, 0xac, 0x95, 0x3b, 0x1d, 0xe8, 0x6f, 0x0b, 0x4e, 0xd3, 0x6d, 0x64, 0x4f, 0x23, 0xae, 0x14, 0x42, 0x55, 0x29, 0x62, 0x24, 0x64, 0xca, 0x0c, 0xbf, 0x0b, 0x17, 0x41, 0x34, 0x72, 0x38, 0x15, 0x7f, 0xab, 0x59, 0xe4, 0xde, 0x55, 0x24, 0x09, 0x6d, 0x62, 0xba, 0xec, 0x63, 0xac, 0x64 } -, - /* Salt */ - 20, - { 0x50, 0x32, 0x7e, 0xfe, 0xc6, 0x29, 0x2f, 0x98, 0x01, 0x9f, 0xc6, 0x7a, 0x2a, 0x66, 0x38, 0x56, 0x3e, 0x9b, 0x6e, 0x2d } -, - /* Signature */ - 129, - { 0x02, 0x1e, 0xca, 0x3a, 0xb4, 0x89, 0x22, 0x64, 0xec, 0x22, 0x41, 0x1a, 0x75, 0x2d, 0x92, 0x22, 0x10, 0x76, 0xd4, 0xe0, 0x1c, 0x0e, 0x6f, 0x0d, 0xde, 0x9a, 0xfd, 0x26, 0xba, 0x5a, 0xcf, 0x6d, 0x73, 0x9e, 0xf9, 0x87, 0x54, 0x5d, 0x16, 0x68, 0x3e, 0x56, 0x74, 0xc9, 0xe7, 0x0f, 0x1d, 0xe6, 0x49, 0xd7, 0xe6, 0x1d, 0x48, 0xd0, 0xca, 0xeb, 0x4f, 0xb4, 0xd8, 0xb2, 0x4f, 0xba, 0x84, 0xa6, 0xe3, 0x10, 0x8f, 0xee, 0x7d, 0x07, 0x05, 0x97, 0x32, 0x66, 0xac, 0x52, 0x4b, 0x4a, 0xd2, 0x80, 0xf7, 0xae, 0x17, 0xdc, 0x59, 0xd9, 0x6d, 0x33, 0x51, 0x58, 0x6b, 0x5a, 0x3b, 0xdb, 0x89, 0x5d, 0x1e, 0x1f, 0x78, 0x20, 0xac, 0x61, 0x35, 0xd8, 0x75, 0x34, 0x80, 0x99, 0x83, 0x82, 0xba, 0x32, 0xb7, 0x34, 0x95, 0x59, 0x60, 0x8c, 0x38, 0x74, 0x52, 0x90, 0xa8, 0x5e, 0xf4, 0xe9, 0xf9, 0xbd, 0x83 } - -} -, -{ - "RSASSA-PSS Signature Example 3.6", - /* Message to be signed */ - 22, - { 0xef, 0xd2, 0x37, 0xbb, 0x09, 0x8a, 0x44, 0x3a, 0xee, 0xb2, 0xbf, 0x6c, 0x3f, 0x8c, 0x81, 0xb8, 0xc0, 0x1b, 0x7f, 0xcb, 0x3f, 0xeb } -, - /* Salt */ - 20, - { 0xb0, 0xde, 0x3f, 0xc2, 0x5b, 0x65, 0xf5, 0xaf, 0x96, 0xb1, 0xd5, 0xcc, 0x3b, 0x27, 0xd0, 0xc6, 0x05, 0x30, 0x87, 0xb3 } -, - /* Signature */ - 129, - { 0x01, 0x2f, 0xaf, 0xec, 0x86, 0x2f, 0x56, 0xe9, 0xe9, 0x2f, 0x60, 0xab, 0x0c, 0x77, 0x82, 0x4f, 0x42, 0x99, 0xa0, 0xca, 0x73, 0x4e, 0xd2, 0x6e, 0x06, 0x44, 0xd5, 0xd2, 0x22, 0xc7, 0xf0, 0xbd, 0xe0, 0x39, 0x64, 0xf8, 0xe7, 0x0a, 0x5c, 0xb6, 0x5e, 0xd4, 0x4e, 0x44, 0xd5, 0x6a, 0xe0, 0xed, 0xf1, 0xff, 0x86, 0xca, 0x03, 0x2c, 0xc5, 0xdd, 0x44, 0x04, 0xdb, 0xb7, 0x6a, 0xb8, 0x54, 0x58, 0x6c, 0x44, 0xee, 0xd8, 0x33, 0x6d, 0x08, 0xd4, 0x57, 0xce, 0x6c, 0x03, 0x69, 0x3b, 0x45, 0xc0, 0xf1, 0xef, 0xef, 0x93, 0x62, 0x4b, 0x95, 0xb8, 0xec, 0x16, 0x9c, 0x61, 0x6d, 0x20, 0xe5, 0x53, 0x8e, 0xbc, 0x0b, 0x67, 0x37, 0xa6, 0xf8, 0x2b, 0x4b, 0xc0, 0x57, 0x09, 0x24, 0xfc, 0x6b, 0x35, 0x75, 0x9a, 0x33, 0x48, 0x42, 0x62, 0x79, 0xf8, 0xb3, 0xd7, 0x74, 0x4e, 0x2d, 0x22, 0x24, 0x26, 0xce } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 4: A 1027-bit RSA Key Pair", -{ - /* RSA modulus n */ - 129, - { 0x05, 0x4a, 0xdb, 0x78, 0x86, 0x44, 0x7e, 0xfe, 0x6f, 0x57, 0xe0, 0x36, 0x8f, 0x06, 0xcf, 0x52, 0xb0, 0xa3, 0x37, 0x07, 0x60, 0xd1, 0x61, 0xce, 0xf1, 0x26, 0xb9, 0x1b, 0xe7, 0xf8, 0x9c, 0x42, 0x1b, 0x62, 0xa6, 0xec, 0x1d, 0xa3, 0xc3, 0x11, 0xd7, 0x5e, 0xd5, 0x0e, 0x0a, 0xb5, 0xff, 0xf3, 0xfd, 0x33, 0x8a, 0xcc, 0x3a, 0xa8, 0xa4, 0xe7, 0x7e, 0xe2, 0x63, 0x69, 0xac, 0xb8, 0x1b, 0xa9, 0x00, 0xfa, 0x83, 0xf5, 0x30, 0x0c, 0xf9, 0xbb, 0x6c, 0x53, 0xad, 0x1d, 0xc8, 0xa1, 0x78, 0xb8, 0x15, 0xdb, 0x42, 0x35, 0xa9, 0xa9, 0xda, 0x0c, 0x06, 0xde, 0x4e, 0x61, 0x5e, 0xa1, 0x27, 0x7c, 0xe5, 0x59, 0xe9, 0xc1, 0x08, 0xde, 0x58, 0xc1, 0x4a, 0x81, 0xaa, 0x77, 0xf5, 0xa6, 0xf8, 0xd1, 0x33, 0x54, 0x94, 0x49, 0x88, 0x48, 0xc8, 0xb9, 0x59, 0x40, 0x74, 0x0b, 0xe7, 0xbf, 0x7c, 0x37, 0x05 } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 128, - { 0xfa, 0x04, 0x1f, 0x8c, 0xd9, 0x69, 0x7c, 0xee, 0xd3, 0x8e, 0xc8, 0xca, 0xa2, 0x75, 0x52, 0x3b, 0x4d, 0xd7, 0x2b, 0x09, 0xa3, 0x01, 0xd3, 0x54, 0x1d, 0x72, 0xf5, 0xd3, 0x1c, 0x05, 0xcb, 0xce, 0x2d, 0x69, 0x83, 0xb3, 0x61, 0x83, 0xaf, 0x10, 0x69, 0x0b, 0xd4, 0x6c, 0x46, 0x13, 0x1e, 0x35, 0x78, 0x94, 0x31, 0xa5, 0x56, 0x77, 0x1d, 0xd0, 0x04, 0x9b, 0x57, 0x46, 0x1b, 0xf0, 0x60, 0xc1, 0xf6, 0x84, 0x72, 0xe8, 0xa6, 0x7c, 0x25, 0xf3, 0x57, 0xe5, 0xb6, 0xb4, 0x73, 0x8f, 0xa5, 0x41, 0xa7, 0x30, 0x34, 0x6b, 0x4a, 0x07, 0x64, 0x9a, 0x2d, 0xfa, 0x80, 0x6a, 0x69, 0xc9, 0x75, 0xb6, 0xab, 0xa6, 0x46, 0x78, 0xac, 0xc7, 0xf5, 0x91, 0x3e, 0x89, 0xc6, 0x22, 0xf2, 0xd8, 0xab, 0xb1, 0xe3, 0xe3, 0x25, 0x54, 0xe3, 0x9d, 0xf9, 0x4b, 0xa6, 0x0c, 0x00, 0x2e, 0x38, 0x7d, 0x90, 0x11 } -, - /* Prime p */ - 65, - { 0x02, 0x92, 0x32, 0x33, 0x6d, 0x28, 0x38, 0x94, 0x5d, 0xba, 0x9d, 0xd7, 0x72, 0x3f, 0x4e, 0x62, 0x4a, 0x05, 0xf7, 0x37, 0x5b, 0x92, 0x7a, 0x87, 0xab, 0xe6, 0xa8, 0x93, 0xa1, 0x65, 0x8f, 0xd4, 0x9f, 0x47, 0xf6, 0xc7, 0xb0, 0xfa, 0x59, 0x6c, 0x65, 0xfa, 0x68, 0xa2, 0x3f, 0x0a, 0xb4, 0x32, 0x96, 0x2d, 0x18, 0xd4, 0x34, 0x3b, 0xd6, 0xfd, 0x67, 0x1a, 0x5e, 0xa8, 0xd1, 0x48, 0x41, 0x39, 0x95 } -, - /* Prime q */ - 65, - { 0x02, 0x0e, 0xf5, 0xef, 0xe7, 0xc5, 0x39, 0x4a, 0xed, 0x22, 0x72, 0xf7, 0xe8, 0x1a, 0x74, 0xf4, 0xc0, 0x2d, 0x14, 0x58, 0x94, 0xcb, 0x1b, 0x3c, 0xab, 0x23, 0xa9, 0xa0, 0x71, 0x0a, 0x2a, 0xfc, 0x7e, 0x33, 0x29, 0xac, 0xbb, 0x74, 0x3d, 0x01, 0xf6, 0x80, 0xc4, 0xd0, 0x2a, 0xfb, 0x4c, 0x8f, 0xde, 0x7e, 0x20, 0x93, 0x08, 0x11, 0xbb, 0x2b, 0x99, 0x57, 0x88, 0xb5, 0xe8, 0x72, 0xc2, 0x0b, 0xb1 } -, - /* p's CRT exponent dP */ - 65, - { 0x02, 0x6e, 0x7e, 0x28, 0x01, 0x0e, 0xcf, 0x24, 0x12, 0xd9, 0x52, 0x3a, 0xd7, 0x04, 0x64, 0x7f, 0xb4, 0xfe, 0x9b, 0x66, 0xb1, 0xa6, 0x81, 0x58, 0x1b, 0x0e, 0x15, 0x55, 0x3a, 0x89, 0xb1, 0x54, 0x28, 0x28, 0x89, 0x8f, 0x27, 0x24, 0x3e, 0xba, 0xb4, 0x5f, 0xf5, 0xe1, 0xac, 0xb9, 0xd4, 0xdf, 0x1b, 0x05, 0x1f, 0xbc, 0x62, 0x82, 0x4d, 0xbc, 0x6f, 0x6c, 0x93, 0x26, 0x1a, 0x78, 0xb9, 0xa7, 0x59 } -, - /* q's CRT exponent dQ */ - 65, - { 0x01, 0x2d, 0xdc, 0xc8, 0x6e, 0xf6, 0x55, 0x99, 0x8c, 0x39, 0xdd, 0xae, 0x11, 0x71, 0x86, 0x69, 0xe5, 0xe4, 0x6c, 0xf1, 0x49, 0x5b, 0x07, 0xe1, 0x3b, 0x10, 0x14, 0xcd, 0x69, 0xb3, 0xaf, 0x68, 0x30, 0x4a, 0xd2, 0xa6, 0xb6, 0x43, 0x21, 0xe7, 0x8b, 0xf3, 0xbb, 0xca, 0x9b, 0xb4, 0x94, 0xe9, 0x1d, 0x45, 0x17, 0x17, 0xe2, 0xd9, 0x75, 0x64, 0xc6, 0x54, 0x94, 0x65, 0xd0, 0x20, 0x5c, 0xf4, 0x21 } -, - /* CRT coefficient qInv */ - 65, - { 0x01, 0x06, 0x00, 0xc4, 0xc2, 0x18, 0x47, 0x45, 0x9f, 0xe5, 0x76, 0x70, 0x3e, 0x2e, 0xbe, 0xca, 0xe8, 0xa5, 0x09, 0x4e, 0xe6, 0x3f, 0x53, 0x6b, 0xf4, 0xac, 0x68, 0xd3, 0xc1, 0x3e, 0x5e, 0x4f, 0x12, 0xac, 0x5c, 0xc1, 0x0a, 0xb6, 0xa2, 0xd0, 0x5a, 0x19, 0x92, 0x14, 0xd1, 0x82, 0x47, 0x47, 0xd5, 0x51, 0x90, 0x96, 0x36, 0xb7, 0x74, 0xc2, 0x2c, 0xac, 0x0b, 0x83, 0x75, 0x99, 0xab, 0xcc, 0x75 } - -} -, -{{ - "RSASSA-PSS Signature Example 4.1", - /* Message to be signed */ - 8, - { 0x9f, 0xb0, 0x3b, 0x82, 0x7c, 0x82, 0x17, 0xd9 } -, - /* Salt */ - 20, - { 0xed, 0x7c, 0x98, 0xc9, 0x5f, 0x30, 0x97, 0x4f, 0xbe, 0x4f, 0xbd, 0xdc, 0xf0, 0xf2, 0x8d, 0x60, 0x21, 0xc0, 0xe9, 0x1d } -, - /* Signature */ - 129, - { 0x03, 0x23, 0xd5, 0xb7, 0xbf, 0x20, 0xba, 0x45, 0x39, 0x28, 0x9a, 0xe4, 0x52, 0xae, 0x42, 0x97, 0x08, 0x0f, 0xef, 0xf4, 0x51, 0x84, 0x23, 0xff, 0x48, 0x11, 0xa8, 0x17, 0x83, 0x7e, 0x7d, 0x82, 0xf1, 0x83, 0x6c, 0xdf, 0xab, 0x54, 0x51, 0x4f, 0xf0, 0x88, 0x7b, 0xdd, 0xee, 0xbf, 0x40, 0xbf, 0x99, 0xb0, 0x47, 0xab, 0xc3, 0xec, 0xfa, 0x6a, 0x37, 0xa3, 0xef, 0x00, 0xf4, 0xa0, 0xc4, 0xa8, 0x8a, 0xae, 0x09, 0x04, 0xb7, 0x45, 0xc8, 0x46, 0xc4, 0x10, 0x7e, 0x87, 0x97, 0x72, 0x3e, 0x8a, 0xc8, 0x10, 0xd9, 0xe3, 0xd9, 0x5d, 0xfa, 0x30, 0xff, 0x49, 0x66, 0xf4, 0xd7, 0x5d, 0x13, 0x76, 0x8d, 0x20, 0x85, 0x7f, 0x2b, 0x14, 0x06, 0xf2, 0x64, 0xcf, 0xe7, 0x5e, 0x27, 0xd7, 0x65, 0x2f, 0x4b, 0x5e, 0xd3, 0x57, 0x5f, 0x28, 0xa7, 0x02, 0xf8, 0xc4, 0xed, 0x9c, 0xf9, 0xb2, 0xd4, 0x49, 0x48 } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSASSA-PSS Signature Example 4.2", - /* Message to be signed */ - 167, - { 0x0c, 0xa2, 0xad, 0x77, 0x79, 0x7e, 0xce, 0x86, 0xde, 0x5b, 0xf7, 0x68, 0x75, 0x0d, 0xdb, 0x5e, 0xd6, 0xa3, 0x11, 0x6a, 0xd9, 0x9b, 0xbd, 0x17, 0xed, 0xf7, 0xf7, 0x82, 0xf0, 0xdb, 0x1c, 0xd0, 0x5b, 0x0f, 0x67, 0x74, 0x68, 0xc5, 0xea, 0x42, 0x0d, 0xc1, 0x16, 0xb1, 0x0e, 0x80, 0xd1, 0x10, 0xde, 0x2b, 0x04, 0x61, 0xea, 0x14, 0xa3, 0x8b, 0xe6, 0x86, 0x20, 0x39, 0x2e, 0x7e, 0x89, 0x3c, 0xb4, 0xea, 0x93, 0x93, 0xfb, 0x88, 0x6c, 0x20, 0xff, 0x79, 0x06, 0x42, 0x30, 0x5b, 0xf3, 0x02, 0x00, 0x38, 0x92, 0xe5, 0x4d, 0xf9, 0xf6, 0x67, 0x50, 0x9d, 0xc5, 0x39, 0x20, 0xdf, 0x58, 0x3f, 0x50, 0xa3, 0xdd, 0x61, 0xab, 0xb6, 0xfa, 0xb7, 0x5d, 0x60, 0x03, 0x77, 0xe3, 0x83, 0xe6, 0xac, 0xa6, 0x71, 0x0e, 0xee, 0xa2, 0x71, 0x56, 0xe0, 0x67, 0x52, 0xc9, 0x4c, 0xe2, 0x5a, 0xe9, 0x9f, 0xcb, 0xf8, 0x59, 0x2d, 0xbe, 0x2d, 0x7e, 0x27, 0x45, 0x3c, 0xb4, 0x4d, 0xe0, 0x71, 0x00, 0xeb, 0xb1, 0xa2, 0xa1, 0x98, 0x11, 0xa4, 0x78, 0xad, 0xbe, 0xab, 0x27, 0x0f, 0x94, 0xe8, 0xfe, 0x36, 0x9d, 0x90, 0xb3, 0xca, 0x61, 0x2f, 0x9f } -, - /* Salt */ - 20, - { 0x22, 0xd7, 0x1d, 0x54, 0x36, 0x3a, 0x42, 0x17, 0xaa, 0x55, 0x11, 0x3f, 0x05, 0x9b, 0x33, 0x84, 0xe3, 0xe5, 0x7e, 0x44 } -, - /* Signature */ - 129, - { 0x04, 0x9d, 0x01, 0x85, 0x84, 0x5a, 0x26, 0x4d, 0x28, 0xfe, 0xb1, 0xe6, 0x9e, 0xda, 0xec, 0x09, 0x06, 0x09, 0xe8, 0xe4, 0x6d, 0x93, 0xab, 0xb3, 0x83, 0x71, 0xce, 0x51, 0xf4, 0xaa, 0x65, 0xa5, 0x99, 0xbd, 0xaa, 0xa8, 0x1d, 0x24, 0xfb, 0xa6, 0x6a, 0x08, 0xa1, 0x16, 0xcb, 0x64, 0x4f, 0x3f, 0x1e, 0x65, 0x3d, 0x95, 0xc8, 0x9d, 0xb8, 0xbb, 0xd5, 0xda, 0xac, 0x27, 0x09, 0xc8, 0x98, 0x40, 0x00, 0x17, 0x84, 0x10, 0xa7, 0xc6, 0xaa, 0x86, 0x67, 0xdd, 0xc3, 0x8c, 0x74, 0x1f, 0x71, 0x0e, 0xc8, 0x66, 0x5a, 0xa9, 0x05, 0x2b, 0xe9, 0x29, 0xd4, 0xe3, 0xb1, 0x67, 0x82, 0xc1, 0x66, 0x21, 0x14, 0xc5, 0x41, 0x4b, 0xb0, 0x35, 0x34, 0x55, 0xc3, 0x92, 0xfc, 0x28, 0xf3, 0xdb, 0x59, 0x05, 0x4b, 0x5f, 0x36, 0x5c, 0x49, 0xe1, 0xd1, 0x56, 0xf8, 0x76, 0xee, 0x10, 0xcb, 0x4f, 0xd7, 0x05, 0x98 } - -} -, -{ - "RSASSA-PSS Signature Example 4.3", - /* Message to be signed */ - 83, - { 0x28, 0x80, 0x62, 0xaf, 0xc0, 0x8f, 0xcd, 0xb7, 0xc5, 0xf8, 0x65, 0x0b, 0x29, 0x83, 0x73, 0x00, 0x46, 0x1d, 0xd5, 0x67, 0x6c, 0x17, 0xa2, 0x0a, 0x3c, 0x8f, 0xb5, 0x14, 0x89, 0x49, 0xe3, 0xf7, 0x3d, 0x66, 0xb3, 0xae, 0x82, 0xc7, 0x24, 0x0e, 0x27, 0xc5, 0xb3, 0xec, 0x43, 0x28, 0xee, 0x7d, 0x6d, 0xdf, 0x6a, 0x6a, 0x0c, 0x9b, 0x5b, 0x15, 0xbc, 0xda, 0x19, 0x6a, 0x9d, 0x0c, 0x76, 0xb1, 0x19, 0xd5, 0x34, 0xd8, 0x5a, 0xbd, 0x12, 0x39, 0x62, 0xd5, 0x83, 0xb7, 0x6c, 0xe9, 0xd1, 0x80, 0xbc, 0xe1, 0xca } -, - /* Salt */ - 20, - { 0x4a, 0xf8, 0x70, 0xfb, 0xc6, 0x51, 0x60, 0x12, 0xca, 0x91, 0x6c, 0x70, 0xba, 0x86, 0x2a, 0xc7, 0xe8, 0x24, 0x36, 0x17 } -, - /* Signature */ - 129, - { 0x03, 0xfb, 0xc4, 0x10, 0xa2, 0xce, 0xd5, 0x95, 0x00, 0xfb, 0x99, 0xf9, 0xe2, 0xaf, 0x27, 0x81, 0xad, 0xa7, 0x4e, 0x13, 0x14, 0x56, 0x24, 0x60, 0x27, 0x82, 0xe2, 0x99, 0x48, 0x13, 0xee, 0xfc, 0xa0, 0x51, 0x9e, 0xcd, 0x25, 0x3b, 0x85, 0x5f, 0xb6, 0x26, 0xa9, 0x0d, 0x77, 0x1e, 0xae, 0x02, 0x8b, 0x0c, 0x47, 0xa1, 0x99, 0xcb, 0xd9, 0xf8, 0xe3, 0x26, 0x97, 0x34, 0xaf, 0x41, 0x63, 0x59, 0x90, 0x90, 0x71, 0x3a, 0x3f, 0xa9, 0x10, 0xfa, 0x09, 0x60, 0x65, 0x27, 0x21, 0x43, 0x2b, 0x97, 0x10, 0x36, 0xa7, 0x18, 0x1a, 0x2b, 0xc0, 0xca, 0xb4, 0x3b, 0x0b, 0x59, 0x8b, 0xc6, 0x21, 0x74, 0x61, 0xd7, 0xdb, 0x30, 0x5f, 0xf7, 0xe9, 0x54, 0xc5, 0xb5, 0xbb, 0x23, 0x1c, 0x39, 0xe7, 0x91, 0xaf, 0x6b, 0xcf, 0xa7, 0x6b, 0x14, 0x7b, 0x08, 0x13, 0x21, 0xf7, 0x26, 0x41, 0x48, 0x2a, 0x2a, 0xad } - -} -, -{ - "RSASSA-PSS Signature Example 4.4", - /* Message to be signed */ - 49, - { 0x6f, 0x4f, 0x9a, 0xb9, 0x50, 0x11, 0x99, 0xce, 0xf5, 0x5c, 0x6c, 0xf4, 0x08, 0xfe, 0x7b, 0x36, 0xc5, 0x57, 0xc4, 0x9d, 0x42, 0x0a, 0x47, 0x63, 0xd2, 0x46, 0x3c, 0x8a, 0xd4, 0x4b, 0x3c, 0xfc, 0x5b, 0xe2, 0x74, 0x2c, 0x0e, 0x7d, 0x9b, 0x0f, 0x66, 0x08, 0xf0, 0x8c, 0x7f, 0x47, 0xb6, 0x93, 0xee } -, - /* Salt */ - 20, - { 0x40, 0xd2, 0xe1, 0x80, 0xfa, 0xe1, 0xea, 0xc4, 0x39, 0xc1, 0x90, 0xb5, 0x6c, 0x2c, 0x0e, 0x14, 0xdd, 0xf9, 0xa2, 0x26 } -, - /* Signature */ - 129, - { 0x04, 0x86, 0x64, 0x4b, 0xc6, 0x6b, 0xf7, 0x5d, 0x28, 0x33, 0x5a, 0x61, 0x79, 0xb1, 0x08, 0x51, 0xf4, 0x3f, 0x09, 0xbd, 0xed, 0x9f, 0xac, 0x1a, 0xf3, 0x32, 0x52, 0xbb, 0x99, 0x53, 0xba, 0x42, 0x98, 0xcd, 0x64, 0x66, 0xb2, 0x75, 0x39, 0xa7, 0x0a, 0xda, 0xa3, 0xf8, 0x9b, 0x3d, 0xb3, 0xc7, 0x4a, 0xb6, 0x35, 0xd1, 0x22, 0xf4, 0xee, 0x7c, 0xe5, 0x57, 0xa6, 0x1e, 0x59, 0xb8, 0x2f, 0xfb, 0x78, 0x66, 0x30, 0xe5, 0xf9, 0xdb, 0x53, 0xc7, 0x7d, 0x9a, 0x0c, 0x12, 0xfa, 0xb5, 0x95, 0x8d, 0x4c, 0x2c, 0xe7, 0xda, 0xa8, 0x07, 0xcd, 0x89, 0xba, 0x2c, 0xc7, 0xfc, 0xd0, 0x2f, 0xf4, 0x70, 0xca, 0x67, 0xb2, 0x29, 0xfc, 0xce, 0x81, 0x4c, 0x85, 0x2c, 0x73, 0xcc, 0x93, 0xbe, 0xa3, 0x5b, 0xe6, 0x84, 0x59, 0xce, 0x47, 0x8e, 0x9d, 0x46, 0x55, 0xd1, 0x21, 0xc8, 0x47, 0x2f, 0x37, 0x1d, 0x4f } - -} -, -{ - "RSASSA-PSS Signature Example 4.5", - /* Message to be signed */ - 187, - { 0xe1, 0x7d, 0x20, 0x38, 0x5d, 0x50, 0x19, 0x55, 0x82, 0x3c, 0x3f, 0x66, 0x62, 0x54, 0xc1, 0xd3, 0xdd, 0x36, 0xad, 0x51, 0x68, 0xb8, 0xf1, 0x8d, 0x28, 0x6f, 0xdc, 0xf6, 0x7a, 0x7d, 0xad, 0x94, 0x09, 0x70, 0x85, 0xfa, 0xb7, 0xed, 0x86, 0xfe, 0x21, 0x42, 0xa2, 0x87, 0x71, 0x71, 0x79, 0x97, 0xef, 0x1a, 0x7a, 0x08, 0x88, 0x4e, 0xfc, 0x39, 0x35, 0x6d, 0x76, 0x07, 0x7a, 0xaf, 0x82, 0x45, 0x9a, 0x7f, 0xad, 0x45, 0x84, 0x88, 0x75, 0xf2, 0x81, 0x9b, 0x09, 0x89, 0x37, 0xfe, 0x92, 0x3b, 0xcc, 0x9d, 0xc4, 0x42, 0xd7, 0x2d, 0x75, 0x4d, 0x81, 0x20, 0x25, 0x09, 0x0c, 0x9b, 0xc0, 0x3d, 0xb3, 0x08, 0x0c, 0x13, 0x8d, 0xd6, 0x3b, 0x35, 0x5d, 0x0b, 0x4b, 0x85, 0xd6, 0x68, 0x8a, 0xc1, 0x9f, 0x4d, 0xe1, 0x50, 0x84, 0xa0, 0xba, 0x4e, 0x37, 0x3b, 0x93, 0xef, 0x4a, 0x55, 0x50, 0x96, 0x69, 0x19, 0x15, 0xdc, 0x23, 0xc0, 0x0e, 0x95, 0x4c, 0xde, 0xb2, 0x0a, 0x47, 0xcd, 0x55, 0xd1, 0x6c, 0x3d, 0x86, 0x81, 0xd4, 0x6e, 0xd7, 0xf2, 0xed, 0x5e, 0xa4, 0x27, 0x95, 0xbe, 0x17, 0xba, 0xed, 0x25, 0xf0, 0xf4, 0xd1, 0x13, 0xb3, 0x63, 0x6a, 0xdd, 0xd5, 0x85, 0xf1, 0x6a, 0x8b, 0x5a, 0xec, 0x0c, 0x8f, 0xa9, 0xc5, 0xf0, 0x3c, 0xbf, 0x3b, 0x9b, 0x73 } -, - /* Salt */ - 20, - { 0x24, 0x97, 0xdc, 0x2b, 0x46, 0x15, 0xdf, 0xae, 0x5a, 0x66, 0x3d, 0x49, 0xff, 0xd5, 0x6b, 0xf7, 0xef, 0xc1, 0x13, 0x04 } -, - /* Signature */ - 129, - { 0x02, 0x2a, 0x80, 0x04, 0x53, 0x53, 0x90, 0x4c, 0xb3, 0x0c, 0xbb, 0x54, 0x2d, 0x7d, 0x49, 0x90, 0x42, 0x1a, 0x6e, 0xec, 0x16, 0xa8, 0x02, 0x9a, 0x84, 0x22, 0xad, 0xfd, 0x22, 0xd6, 0xaf, 0xf8, 0xc4, 0xcc, 0x02, 0x94, 0xaf, 0x11, 0x0a, 0x0c, 0x06, 0x7e, 0xc8, 0x6a, 0x7d, 0x36, 0x41, 0x34, 0x45, 0x9b, 0xb1, 0xae, 0x8f, 0xf8, 0x36, 0xd5, 0xa8, 0xa2, 0x57, 0x98, 0x40, 0x99, 0x6b, 0x32, 0x0b, 0x19, 0xf1, 0x3a, 0x13, 0xfa, 0xd3, 0x78, 0xd9, 0x31, 0xa6, 0x56, 0x25, 0xda, 0xe2, 0x73, 0x9f, 0x0c, 0x53, 0x67, 0x0b, 0x35, 0xd9, 0xd3, 0xcb, 0xac, 0x08, 0xe7, 0x33, 0xe4, 0xec, 0x2b, 0x83, 0xaf, 0x4b, 0x91, 0x96, 0xd6, 0x3e, 0x7c, 0x4f, 0xf1, 0xdd, 0xea, 0xe2, 0xa1, 0x22, 0x79, 0x1a, 0x12, 0x5b, 0xfe, 0xa8, 0xde, 0xb0, 0xde, 0x8c, 0xcf, 0x1f, 0x4f, 0xfa, 0xf6, 0xe6, 0xfb, 0x0a } - -} -, -{ - "RSASSA-PSS Signature Example 4.6", - /* Message to be signed */ - 166, - { 0xaf, 0xbc, 0x19, 0xd4, 0x79, 0x24, 0x90, 0x18, 0xfd, 0xf4, 0xe0, 0x9f, 0x61, 0x87, 0x26, 0x44, 0x04, 0x95, 0xde, 0x11, 0xdd, 0xee, 0xe3, 0x88, 0x72, 0xd7, 0x75, 0xfc, 0xea, 0x74, 0xa2, 0x38, 0x96, 0xb5, 0x34, 0x3c, 0x9c, 0x38, 0xd4, 0x6a, 0xf0, 0xdb, 0xa2, 0x24, 0xd0, 0x47, 0x58, 0x0c, 0xc6, 0x0a, 0x65, 0xe9, 0x39, 0x1c, 0xf9, 0xb5, 0x9b, 0x36, 0xa8, 0x60, 0x59, 0x8d, 0x4e, 0x82, 0x16, 0x72, 0x2f, 0x99, 0x3b, 0x91, 0xcf, 0xae, 0x87, 0xbc, 0x25, 0x5a, 0xf8, 0x9a, 0x6a, 0x19, 0x9b, 0xca, 0x4a, 0x39, 0x1e, 0xad, 0xbc, 0x3a, 0x24, 0x90, 0x3c, 0x0b, 0xd6, 0x67, 0x36, 0x8f, 0x6b, 0xe7, 0x8e, 0x3f, 0xea, 0xbf, 0xb4, 0xff, 0xd4, 0x63, 0x12, 0x27, 0x63, 0x74, 0x0f, 0xfb, 0xbe, 0xfe, 0xab, 0x9a, 0x25, 0x56, 0x4b, 0xc5, 0xd1, 0xc2, 0x4c, 0x93, 0xe4, 0x22, 0xf7, 0x50, 0x73, 0xe2, 0xad, 0x72, 0xbf, 0x45, 0xb1, 0x0d, 0xf0, 0x0b, 0x52, 0xa1, 0x47, 0x12, 0x8e, 0x73, 0xfe, 0xe3, 0x3f, 0xa3, 0xf0, 0x57, 0x7d, 0x77, 0xf8, 0x0f, 0xbc, 0x2d, 0xf1, 0xbe, 0xd3, 0x13, 0x29, 0x0c, 0x12, 0x77, 0x7f, 0x50 } -, - /* Salt */ - 20, - { 0xa3, 0x34, 0xdb, 0x6f, 0xae, 0xbf, 0x11, 0x08, 0x1a, 0x04, 0xf8, 0x7c, 0x2d, 0x62, 0x1c, 0xde, 0xc7, 0x93, 0x0b, 0x9b } -, - /* Signature */ - 129, - { 0x00, 0x93, 0x8d, 0xcb, 0x6d, 0x58, 0x30, 0x46, 0x06, 0x5f, 0x69, 0xc7, 0x8d, 0xa7, 0xa1, 0xf1, 0x75, 0x70, 0x66, 0xa7, 0xfa, 0x75, 0x12, 0x5a, 0x9d, 0x29, 0x29, 0xf0, 0xb7, 0x9a, 0x60, 0xb6, 0x27, 0xb0, 0x82, 0xf1, 0x1f, 0x5b, 0x19, 0x6f, 0x28, 0xeb, 0x9d, 0xaa, 0x6f, 0x21, 0xc0, 0x5e, 0x51, 0x40, 0xf6, 0xae, 0xf1, 0x73, 0x7d, 0x20, 0x23, 0x07, 0x5c, 0x05, 0xec, 0xf0, 0x4a, 0x02, 0x8c, 0x68, 0x6a, 0x2a, 0xb3, 0xe7, 0xd5, 0xa0, 0x66, 0x4f, 0x29, 0x5c, 0xe1, 0x29, 0x95, 0xe8, 0x90, 0x90, 0x8b, 0x6a, 0xd2, 0x1f, 0x08, 0x39, 0xeb, 0x65, 0xb7, 0x03, 0x93, 0xa7, 0xb5, 0xaf, 0xd9, 0x87, 0x1d, 0xe0, 0xca, 0xa0, 0xce, 0xde, 0xc5, 0xb8, 0x19, 0x62, 0x67, 0x56, 0x20, 0x9d, 0x13, 0xab, 0x1e, 0x7b, 0xb9, 0x54, 0x6a, 0x26, 0xff, 0x37, 0xe9, 0xa5, 0x1a, 0xf9, 0xfd, 0x56, 0x2e } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 5: A 1028-bit RSA Key Pair", -{ - /* RSA modulus n */ - 129, - { 0x0d, 0x10, 0xf6, 0x61, 0xf2, 0x99, 0x40, 0xf5, 0xed, 0x39, 0xaa, 0x26, 0x09, 0x66, 0xde, 0xb4, 0x78, 0x43, 0x67, 0x9d, 0x2b, 0x6f, 0xb2, 0x5b, 0x3d, 0xe3, 0x70, 0xf3, 0xac, 0x7c, 0x19, 0x91, 0x63, 0x91, 0xfd, 0x25, 0xfb, 0x52, 0x7e, 0xbf, 0xa6, 0xa4, 0xb4, 0xdf, 0x45, 0xa1, 0x75, 0x9d, 0x99, 0x6c, 0x4b, 0xb4, 0xeb, 0xd1, 0x88, 0x28, 0xc4, 0x4f, 0xc5, 0x2d, 0x01, 0x91, 0x87, 0x17, 0x40, 0x52, 0x5f, 0x47, 0xa4, 0xb0, 0xcc, 0x8d, 0xa3, 0x25, 0xed, 0x8a, 0xa6, 0x76, 0xb0, 0xd0, 0xf6, 0x26, 0xe0, 0xa7, 0x7f, 0x07, 0x69, 0x21, 0x70, 0xac, 0xac, 0x80, 0x82, 0xf4, 0x2f, 0xaa, 0x7d, 0xc7, 0xcd, 0x12, 0x3e, 0x73, 0x0e, 0x31, 0xa8, 0x79, 0x85, 0x20, 0x4c, 0xab, 0xcb, 0xe6, 0x67, 0x0d, 0x43, 0xa2, 0xdd, 0x2b, 0x2d, 0xde, 0xf5, 0xe0, 0x53, 0x92, 0xfc, 0x21, 0x3b, 0xc5, 0x07 } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 129, - { 0x03, 0xce, 0x08, 0xb1, 0x04, 0xff, 0xf3, 0x96, 0xa9, 0x79, 0xbd, 0x3e, 0x4e, 0x46, 0x92, 0x5b, 0x63, 0x19, 0xdd, 0xb6, 0x3a, 0xcb, 0xcf, 0xd8, 0x19, 0xf1, 0x7d, 0x16, 0xb8, 0x07, 0x7b, 0x3a, 0x87, 0x10, 0x1f, 0xf3, 0x4b, 0x77, 0xfe, 0x48, 0xb8, 0xb2, 0x05, 0xa9, 0x6e, 0x91, 0x51, 0xba, 0x8e, 0xce, 0xa6, 0x4d, 0x0c, 0xce, 0x7b, 0x23, 0xc3, 0xe6, 0xa6, 0xb8, 0x30, 0x58, 0xbc, 0x49, 0xda, 0xe8, 0x16, 0xae, 0x73, 0x6d, 0xb5, 0xa4, 0x70, 0x8e, 0x2a, 0xd4, 0x35, 0x23, 0x2b, 0x56, 0x7f, 0x90, 0x96, 0xce, 0x59, 0xff, 0x28, 0x06, 0x1e, 0x79, 0xab, 0x1c, 0x02, 0xd7, 0x17, 0xe6, 0xb2, 0x3c, 0xea, 0x6d, 0xb8, 0xeb, 0x51, 0x92, 0xfa, 0x7c, 0x1e, 0xab, 0x22, 0x7d, 0xba, 0x74, 0x62, 0x1c, 0x45, 0x60, 0x18, 0x96, 0xee, 0xf1, 0x37, 0x92, 0xc8, 0x44, 0x0b, 0xeb, 0x15, 0xaa, 0xc1 } -, - /* Prime p */ - 65, - { 0x03, 0xf2, 0xf3, 0x31, 0xf4, 0x14, 0x2d, 0x4f, 0x24, 0xb4, 0x3a, 0xa1, 0x02, 0x79, 0xa8, 0x96, 0x52, 0xd4, 0xe7, 0x53, 0x72, 0x21, 0xa1, 0xa7, 0xb2, 0xa2, 0x5d, 0xeb, 0x55, 0x1e, 0x5d, 0xe9, 0xac, 0x49, 0x74, 0x11, 0xc2, 0x27, 0xa9, 0x4e, 0x45, 0xf9, 0x1c, 0x2d, 0x1c, 0x13, 0xcc, 0x04, 0x6c, 0xf4, 0xce, 0x14, 0xe3, 0x2d, 0x05, 0x87, 0x34, 0x21, 0x0d, 0x44, 0xa8, 0x7e, 0xe1, 0xb7, 0x3f } -, - /* Prime q */ - 65, - { 0x03, 0x4f, 0x09, 0x0d, 0x73, 0xb5, 0x58, 0x03, 0x03, 0x0c, 0xf0, 0x36, 0x1a, 0x5d, 0x80, 0x81, 0xbf, 0xb7, 0x9f, 0x85, 0x15, 0x23, 0xfe, 0xac, 0x0a, 0x21, 0x24, 0xd0, 0x8d, 0x40, 0x13, 0xff, 0x08, 0x48, 0x77, 0x71, 0xa8, 0x70, 0xd0, 0x47, 0x9d, 0xc0, 0x68, 0x6c, 0x62, 0xf7, 0x71, 0x8d, 0xfe, 0xcf, 0x02, 0x4b, 0x17, 0xc9, 0x26, 0x76, 0x78, 0x05, 0x91, 0x71, 0x33, 0x9c, 0xc0, 0x08, 0x39 } -, - /* p's CRT exponent dP */ - 65, - { 0x02, 0xaa, 0x66, 0x3a, 0xdb, 0xf5, 0x1a, 0xb8, 0x87, 0xa0, 0x18, 0xcb, 0x42, 0x6e, 0x78, 0xbc, 0x2f, 0xe1, 0x82, 0xdc, 0xb2, 0xf7, 0xbc, 0xb5, 0x04, 0x41, 0xd1, 0x7f, 0xdf, 0x0f, 0x06, 0x79, 0x8b, 0x50, 0x71, 0xc6, 0xe2, 0xf5, 0xfe, 0xb4, 0xd5, 0x4a, 0xd8, 0x18, 0x23, 0x11, 0xc1, 0xef, 0x62, 0xd4, 0xc4, 0x9f, 0x18, 0xd1, 0xf5, 0x1f, 0x54, 0xb2, 0xd2, 0xcf, 0xfb, 0xa4, 0xda, 0x1b, 0xe5 } -, - /* q's CRT exponent dQ */ - 65, - { 0x02, 0xbb, 0xe7, 0x06, 0x07, 0x8b, 0x5c, 0x0b, 0x39, 0x15, 0x12, 0xd4, 0x11, 0xdb, 0x1b, 0x19, 0x9b, 0x5a, 0x56, 0x64, 0xb8, 0x40, 0x42, 0xea, 0xd3, 0x7f, 0xe9, 0x94, 0xae, 0x72, 0xb9, 0x53, 0x2d, 0xfb, 0xfb, 0x3e, 0x9e, 0x69, 0x81, 0xa0, 0xfb, 0xb8, 0x06, 0x51, 0x31, 0x41, 0xb7, 0xc2, 0x16, 0x3f, 0xe5, 0x6c, 0x39, 0x5e, 0x4b, 0xfa, 0xee, 0x57, 0xe3, 0x83, 0x3f, 0x9b, 0x91, 0x8d, 0xf9 } -, - /* CRT coefficient qInv */ - 64, - { 0x02, 0x42, 0xb6, 0xcd, 0x00, 0xd3, 0x0a, 0x76, 0x7a, 0xee, 0x9a, 0x89, 0x8e, 0xad, 0x45, 0x3c, 0x8e, 0xae, 0xa6, 0x3d, 0x50, 0x0b, 0x7d, 0x1e, 0x00, 0x71, 0x3e, 0xda, 0xe5, 0x1c, 0xe3, 0x6b, 0x23, 0xb6, 0x64, 0xdf, 0x26, 0xe6, 0x3e, 0x26, 0x6e, 0xc8, 0xf7, 0x6e, 0x6e, 0x63, 0xed, 0x1b, 0xa4, 0x1e, 0xb0, 0x33, 0xb1, 0x20, 0xf7, 0xea, 0x52, 0x12, 0xae, 0x21, 0xa9, 0x8f, 0xbc, 0x16 } - -} -, -{{ - "RSASSA-PSS Signature Example 5.1", - /* Message to be signed */ - 154, - { 0x30, 0xc7, 0xd5, 0x57, 0x45, 0x8b, 0x43, 0x6d, 0xec, 0xfd, 0xc1, 0x4d, 0x06, 0xcb, 0x7b, 0x96, 0xb0, 0x67, 0x18, 0xc4, 0x8d, 0x7d, 0xe5, 0x74, 0x82, 0xa8, 0x68, 0xae, 0x7f, 0x06, 0x58, 0x70, 0xa6, 0x21, 0x65, 0x06, 0xd1, 0x1b, 0x77, 0x93, 0x23, 0xdf, 0xdf, 0x04, 0x6c, 0xf5, 0x77, 0x51, 0x29, 0x13, 0x4b, 0x4d, 0x56, 0x89, 0xe4, 0xd9, 0xc0, 0xce, 0x1e, 0x12, 0xd7, 0xd4, 0xb0, 0x6c, 0xb5, 0xfc, 0x58, 0x20, 0xde, 0xcf, 0xa4, 0x1b, 0xaf, 0x59, 0xbf, 0x25, 0x7b, 0x32, 0xf0, 0x25, 0xb7, 0x67, 0x9b, 0x44, 0x5b, 0x94, 0x99, 0xc9, 0x25, 0x55, 0x14, 0x58, 0x85, 0x99, 0x2f, 0x1b, 0x76, 0xf8, 0x48, 0x91, 0xee, 0x4d, 0x3b, 0xe0, 0xf5, 0x15, 0x0f, 0xd5, 0x90, 0x1e, 0x3a, 0x4c, 0x8e, 0xd4, 0x3f, 0xd3, 0x6b, 0x61, 0xd0, 0x22, 0xe6, 0x5a, 0xd5, 0x00, 0x8d, 0xbf, 0x33, 0x29, 0x3c, 0x22, 0xbf, 0xbf, 0xd0, 0x73, 0x21, 0xf0, 0xf1, 0xd5, 0xfa, 0x9f, 0xdf, 0x00, 0x14, 0xc2, 0xfc, 0xb0, 0x35, 0x8a, 0xad, 0x0e, 0x35, 0x4b, 0x0d, 0x29 } -, - /* Salt */ - 20, - { 0x08, 0x1b, 0x23, 0x3b, 0x43, 0x56, 0x77, 0x50, 0xbd, 0x6e, 0x78, 0xf3, 0x96, 0xa8, 0x8b, 0x9f, 0x6a, 0x44, 0x51, 0x51 } -, - /* Signature */ - 129, - { 0x0b, 0xa3, 0x73, 0xf7, 0x6e, 0x09, 0x21, 0xb7, 0x0a, 0x8f, 0xbf, 0xe6, 0x22, 0xf0, 0xbf, 0x77, 0xb2, 0x8a, 0x3d, 0xb9, 0x8e, 0x36, 0x10, 0x51, 0xc3, 0xd7, 0xcb, 0x92, 0xad, 0x04, 0x52, 0x91, 0x5a, 0x4d, 0xe9, 0xc0, 0x17, 0x22, 0xf6, 0x82, 0x3e, 0xeb, 0x6a, 0xdf, 0x7e, 0x0c, 0xa8, 0x29, 0x0f, 0x5d, 0xe3, 0xe5, 0x49, 0x89, 0x0a, 0xc2, 0xa3, 0xc5, 0x95, 0x0a, 0xb2, 0x17, 0xba, 0x58, 0x59, 0x08, 0x94, 0x95, 0x2d, 0xe9, 0x6f, 0x8d, 0xf1, 0x11, 0xb2, 0x57, 0x52, 0x15, 0xda, 0x6c, 0x16, 0x15, 0x90, 0xc7, 0x45, 0xbe, 0x61, 0x24, 0x76, 0xee, 0x57, 0x8e, 0xd3, 0x84, 0xab, 0x33, 0xe3, 0xec, 0xe9, 0x74, 0x81, 0xa2, 0x52, 0xf5, 0xc7, 0x9a, 0x98, 0xb5, 0x53, 0x2a, 0xe0, 0x0c, 0xdd, 0x62, 0xf2, 0xec, 0xc0, 0xcd, 0x1b, 0xae, 0xfe, 0x80, 0xd8, 0x0b, 0x96, 0x21, 0x93, 0xec, 0x1d } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSASSA-PSS Signature Example 5.2", - /* Message to be signed */ - 209, - { 0xe7, 0xb3, 0x2e, 0x15, 0x56, 0xea, 0x1b, 0x27, 0x95, 0x04, 0x6a, 0xc6, 0x97, 0x39, 0xd2, 0x2a, 0xc8, 0x96, 0x6b, 0xf1, 0x1c, 0x11, 0x6f, 0x61, 0x4b, 0x16, 0x67, 0x40, 0xe9, 0x6b, 0x90, 0x65, 0x3e, 0x57, 0x50, 0x94, 0x5f, 0xcf, 0x77, 0x21, 0x86, 0xc0, 0x37, 0x90, 0xa0, 0x7f, 0xda, 0x32, 0x3e, 0x1a, 0x61, 0x91, 0x6b, 0x06, 0xee, 0x21, 0x57, 0xdb, 0x3d, 0xff, 0x80, 0xd6, 0x7d, 0x5e, 0x39, 0xa5, 0x3a, 0xe2, 0x68, 0xc8, 0xf0, 0x9e, 0xd9, 0x9a, 0x73, 0x20, 0x05, 0xb0, 0xbc, 0x6a, 0x04, 0xaf, 0x4e, 0x08, 0xd5, 0x7a, 0x00, 0xe7, 0x20, 0x1b, 0x30, 0x60, 0xef, 0xaa, 0xdb, 0x73, 0x11, 0x3b, 0xfc, 0x08, 0x7f, 0xd8, 0x37, 0x09, 0x3a, 0xa2, 0x52, 0x35, 0xb8, 0xc1, 0x49, 0xf5, 0x62, 0x15, 0xf0, 0x31, 0xc2, 0x4a, 0xd5, 0xbd, 0xe7, 0xf2, 0x99, 0x60, 0xdf, 0x7d, 0x52, 0x40, 0x70, 0xf7, 0x44, 0x9c, 0x6f, 0x78, 0x50, 0x84, 0xbe, 0x1a, 0x0f, 0x73, 0x30, 0x47, 0xf3, 0x36, 0xf9, 0x15, 0x47, 0x38, 0x67, 0x45, 0x47, 0xdb, 0x02, 0xa9, 0xf4, 0x4d, 0xfc, 0x6e, 0x60, 0x30, 0x10, 0x81, 0xe1, 0xce, 0x99, 0x84, 0x7f, 0x3b, 0x5b, 0x60, 0x1f, 0xf0, 0x6b, 0x4d, 0x57, 0x76, 0xa9, 0x74, 0x0b, 0x9a, 0xa0, 0xd3, 0x40, 0x58, 0xfd, 0x3b, 0x90, 0x6e, 0x4f, 0x78, 0x59, 0xdf, 0xb0, 0x7d, 0x71, 0x73, 0xe5, 0xe6, 0xf6, 0x35, 0x0a, 0xda, 0xc2, 0x1f, 0x27, 0xb2, 0x30, 0x74, 0x69 } -, - /* Salt */ - 20, - { 0xbd, 0x0c, 0xe1, 0x95, 0x49, 0xd0, 0x70, 0x01, 0x20, 0xcb, 0xe5, 0x10, 0x77, 0xdb, 0xbb, 0xb0, 0x0a, 0x8d, 0x8b, 0x09 } -, - /* Signature */ - 129, - { 0x08, 0x18, 0x0d, 0xe8, 0x25, 0xe4, 0xb8, 0xb0, 0x14, 0xa3, 0x2d, 0xa8, 0xba, 0x76, 0x15, 0x55, 0x92, 0x12, 0x04, 0xf2, 0xf9, 0x0d, 0x5f, 0x24, 0xb7, 0x12, 0x90, 0x8f, 0xf8, 0x4f, 0x3e, 0x22, 0x0a, 0xd1, 0x79, 0x97, 0xc0, 0xdd, 0x6e, 0x70, 0x66, 0x30, 0xba, 0x3e, 0x84, 0xad, 0xd4, 0xd5, 0xe7, 0xab, 0x00, 0x4e, 0x58, 0x07, 0x4b, 0x54, 0x97, 0x09, 0x56, 0x5d, 0x43, 0xad, 0x9e, 0x97, 0xb5, 0xa7, 0xa1, 0xa2, 0x9e, 0x85, 0xb9, 0xf9, 0x0f, 0x4a, 0xaf, 0xcd, 0xf5, 0x83, 0x21, 0xde, 0x8c, 0x59, 0x74, 0xef, 0x9a, 0xbf, 0x2d, 0x52, 0x6f, 0x33, 0xc0, 0xf2, 0xf8, 0x2e, 0x95, 0xd1, 0x58, 0xea, 0x6b, 0x81, 0xf1, 0x73, 0x6d, 0xb8, 0xd1, 0xaf, 0x3d, 0x6a, 0xc6, 0xa8, 0x3b, 0x32, 0xd1, 0x8b, 0xae, 0x0f, 0xf1, 0xb2, 0xfe, 0x27, 0xde, 0x4c, 0x76, 0xed, 0x8c, 0x79, 0x80, 0xa3, 0x4e } - -} -, -{ - "RSASSA-PSS Signature Example 5.3", - /* Message to be signed */ - 223, - { 0x8d, 0x83, 0x96, 0xe3, 0x65, 0x07, 0xfe, 0x1e, 0xf6, 0xa1, 0x90, 0x17, 0x54, 0x8e, 0x0c, 0x71, 0x66, 0x74, 0xc2, 0xfe, 0xc2, 0x33, 0xad, 0xb2, 0xf7, 0x75, 0x66, 0x5e, 0xc4, 0x1f, 0x2b, 0xd0, 0xba, 0x39, 0x6b, 0x06, 0x1a, 0x9d, 0xaa, 0x7e, 0x86, 0x6f, 0x7c, 0x23, 0xfd, 0x35, 0x31, 0x95, 0x43, 0x00, 0xa3, 0x42, 0xf9, 0x24, 0x53, 0x5e, 0xa1, 0x49, 0x8c, 0x48, 0xf6, 0xc8, 0x79, 0x93, 0x28, 0x65, 0xfc, 0x02, 0x00, 0x0c, 0x52, 0x87, 0x23, 0xb7, 0xad, 0x03, 0x35, 0x74, 0x5b, 0x51, 0x20, 0x9a, 0x0a, 0xfe, 0xd9, 0x32, 0xaf, 0x8f, 0x08, 0x87, 0xc2, 0x19, 0x00, 0x4d, 0x2a, 0xbd, 0x89, 0x4e, 0xa9, 0x25, 0x59, 0xee, 0x31, 0x98, 0xaf, 0x3a, 0x73, 0x4f, 0xe9, 0xb9, 0x63, 0x8c, 0x26, 0x3a, 0x72, 0x8a, 0xd9, 0x5a, 0x5a, 0xe8, 0xce, 0x3e, 0xb1, 0x58, 0x39, 0xf3, 0xaa, 0x78, 0x52, 0xbb, 0x39, 0x07, 0x06, 0xe7, 0x76, 0x0e, 0x43, 0xa7, 0x12, 0x91, 0xa2, 0xe3, 0xf8, 0x27, 0x23, 0x7d, 0xed, 0xa8, 0x51, 0x87, 0x4c, 0x51, 0x76, 0x65, 0xf5, 0x45, 0xf2, 0x72, 0x38, 0xdf, 0x86, 0x55, 0x7f, 0x37, 0x5d, 0x09, 0xcc, 0xd8, 0xbd, 0x15, 0xd8, 0xcc, 0xf6, 0x1f, 0x5d, 0x78, 0xca, 0x5c, 0x7f, 0x5c, 0xde, 0x78, 0x2e, 0x6b, 0xf5, 0xd0, 0x05, 0x70, 0x56, 0xd4, 0xba, 0xd9, 0x8b, 0x3d, 0x2f, 0x95, 0x75, 0xe8, 0x24, 0xab, 0x7a, 0x33, 0xff, 0x57, 0xb0, 0xac, 0x10, 0x0a, 0xb0, 0xd6, 0xea, 0xd7, 0xaa, 0x0b, 0x50, 0xf6, 0xe4, 0xd3, 0xe5, 0xec, 0x0b, 0x96, 0x6b } -, - /* Salt */ - 20, - { 0x81, 0x57, 0x79, 0xa9, 0x1b, 0x3a, 0x8b, 0xd0, 0x49, 0xbf, 0x2a, 0xeb, 0x92, 0x01, 0x42, 0x77, 0x22, 0x22, 0xc9, 0xca } -, - /* Signature */ - 129, - { 0x05, 0xe0, 0xfd, 0xbd, 0xf6, 0xf7, 0x56, 0xef, 0x73, 0x31, 0x85, 0xcc, 0xfa, 0x8c, 0xed, 0x2e, 0xb6, 0xd0, 0x29, 0xd9, 0xd5, 0x6e, 0x35, 0x56, 0x1b, 0x5d, 0xb8, 0xe7, 0x02, 0x57, 0xee, 0x6f, 0xd0, 0x19, 0xd2, 0xf0, 0xbb, 0xf6, 0x69, 0xfe, 0x9b, 0x98, 0x21, 0xe7, 0x8d, 0xf6, 0xd4, 0x1e, 0x31, 0x60, 0x8d, 0x58, 0x28, 0x0f, 0x31, 0x8e, 0xe3, 0x4f, 0x55, 0x99, 0x41, 0xc8, 0xdf, 0x13, 0x28, 0x75, 0x74, 0xba, 0xc0, 0x00, 0xb7, 0xe5, 0x8d, 0xc4, 0xf4, 0x14, 0xba, 0x49, 0xfb, 0x12, 0x7f, 0x9d, 0x0f, 0x89, 0x36, 0x63, 0x8c, 0x76, 0xe8, 0x53, 0x56, 0xc9, 0x94, 0xf7, 0x97, 0x50, 0xf7, 0xfa, 0x3c, 0xf4, 0xfd, 0x48, 0x2d, 0xf7, 0x5e, 0x3f, 0xb9, 0x97, 0x8c, 0xd0, 0x61, 0xf7, 0xab, 0xb1, 0x75, 0x72, 0xe6, 0xe6, 0x3e, 0x0b, 0xde, 0x12, 0xcb, 0xdc, 0xf1, 0x8c, 0x68, 0xb9, 0x79 } - -} -, -{ - "RSASSA-PSS Signature Example 5.4", - /* Message to be signed */ - 13, - { 0x32, 0x8c, 0x65, 0x9e, 0x0a, 0x64, 0x37, 0x43, 0x3c, 0xce, 0xb7, 0x3c, 0x14 } -, - /* Salt */ - 20, - { 0x9a, 0xec, 0x4a, 0x74, 0x80, 0xd5, 0xbb, 0xc4, 0x29, 0x20, 0xd7, 0xca, 0x23, 0x5d, 0xb6, 0x74, 0x98, 0x9c, 0x9a, 0xac } -, - /* Signature */ - 129, - { 0x0b, 0xc9, 0x89, 0x85, 0x3b, 0xc2, 0xea, 0x86, 0x87, 0x32, 0x71, 0xce, 0x18, 0x3a, 0x92, 0x3a, 0xb6, 0x5e, 0x8a, 0x53, 0x10, 0x0e, 0x6d, 0xf5, 0xd8, 0x7a, 0x24, 0xc4, 0x19, 0x4e, 0xb7, 0x97, 0x81, 0x3e, 0xe2, 0xa1, 0x87, 0xc0, 0x97, 0xdd, 0x87, 0x2d, 0x59, 0x1d, 0xa6, 0x0c, 0x56, 0x86, 0x05, 0xdd, 0x7e, 0x74, 0x2d, 0x5a, 0xf4, 0xe3, 0x3b, 0x11, 0x67, 0x8c, 0xcb, 0x63, 0x90, 0x32, 0x04, 0xa3, 0xd0, 0x80, 0xb0, 0x90, 0x2c, 0x89, 0xab, 0xa8, 0x86, 0x8f, 0x00, 0x9c, 0x0f, 0x1c, 0x0c, 0xb8, 0x58, 0x10, 0xbb, 0xdd, 0x29, 0x12, 0x1a, 0xbb, 0x84, 0x71, 0xff, 0x2d, 0x39, 0xe4, 0x9f, 0xd9, 0x2d, 0x56, 0xc6, 0x55, 0xc8, 0xe0, 0x37, 0xad, 0x18, 0xfa, 0xfb, 0xdc, 0x92, 0xc9, 0x58, 0x63, 0xf7, 0xf6, 0x1e, 0xa9, 0xef, 0xa2, 0x8f, 0xea, 0x40, 0x13, 0x69, 0xd1, 0x9d, 0xae, 0xa1 } - -} -, -{ - "RSASSA-PSS Signature Example 5.5", - /* Message to be signed */ - 228, - { 0xf3, 0x7b, 0x96, 0x23, 0x79, 0xa4, 0x7d, 0x41, 0x5a, 0x37, 0x6e, 0xec, 0x89, 0x73, 0x15, 0x0b, 0xcb, 0x34, 0xed, 0xd5, 0xab, 0x65, 0x40, 0x41, 0xb6, 0x14, 0x30, 0x56, 0x0c, 0x21, 0x44, 0x58, 0x2b, 0xa1, 0x33, 0xc8, 0x67, 0xd8, 0x52, 0xd6, 0xb8, 0xe2, 0x33, 0x21, 0x90, 0x13, 0x02, 0xec, 0xb4, 0x5b, 0x09, 0xec, 0x88, 0xb1, 0x52, 0x71, 0x78, 0xfa, 0x04, 0x32, 0x63, 0xf3, 0x06, 0x7d, 0x9f, 0xfe, 0x97, 0x30, 0x32, 0xa9, 0x9f, 0x4c, 0xb0, 0x8a, 0xd2, 0xc7, 0xe0, 0xa2, 0x45, 0x6c, 0xdd, 0x57, 0xa7, 0xdf, 0x56, 0xfe, 0x60, 0x53, 0x52, 0x7a, 0x5a, 0xeb, 0x67, 0xd7, 0xe5, 0x52, 0x06, 0x3c, 0x1c, 0xa9, 0x7b, 0x1b, 0xef, 0xfa, 0x7b, 0x39, 0xe9, 0x97, 0xca, 0xf2, 0x78, 0x78, 0xea, 0x0f, 0x62, 0xcb, 0xeb, 0xc8, 0xc2, 0x1d, 0xf4, 0xc8, 0x89, 0xa2, 0x02, 0x85, 0x1e, 0x94, 0x90, 0x88, 0x49, 0x0c, 0x24, 0x9b, 0x6e, 0x9a, 0xcf, 0x1d, 0x80, 0x63, 0xf5, 0xbe, 0x23, 0x43, 0x98, 0x9b, 0xf9, 0x5c, 0x4d, 0xa0, 0x1a, 0x2b, 0xe7, 0x8b, 0x4a, 0xb6, 0xb3, 0x78, 0x01, 0x5b, 0xc3, 0x79, 0x57, 0xf7, 0x69, 0x48, 0xb5, 0xe5, 0x8e, 0x44, 0x0c, 0x28, 0x45, 0x3d, 0x40, 0xd7, 0xcf, 0xd5, 0x7e, 0x7d, 0x69, 0x06, 0x00, 0x47, 0x4a, 0xb5, 0xe7, 0x59, 0x73, 0xb1, 0xea, 0x0c, 0x5f, 0x1e, 0x45, 0xd1, 0x41, 0x90, 0xaf, 0xe2, 0xf4, 0xeb, 0x6d, 0x3b, 0xdf, 0x71, 0xf1, 0xd2, 0xf8, 0xbb, 0x15, 0x6a, 0x1c, 0x29, 0x5d, 0x04, 0xaa, 0xeb, 0x9d, 0x68, 0x9d, 0xce, 0x79, 0xed, 0x62, 0xbc, 0x44, 0x3e } -, - /* Salt */ - 20, - { 0xe2, 0x0c, 0x1e, 0x98, 0x78, 0x51, 0x2c, 0x39, 0x97, 0x0f, 0x58, 0x37, 0x5e, 0x15, 0x49, 0xa6, 0x8b, 0x64, 0xf3, 0x1d } -, - /* Signature */ - 129, - { 0x0a, 0xef, 0xa9, 0x43, 0xb6, 0x98, 0xb9, 0x60, 0x9e, 0xdf, 0x89, 0x8a, 0xd2, 0x27, 0x44, 0xac, 0x28, 0xdc, 0x23, 0x94, 0x97, 0xce, 0xa3, 0x69, 0xcb, 0xbd, 0x84, 0xf6, 0x5c, 0x95, 0xc0, 0xad, 0x77, 0x6b, 0x59, 0x47, 0x40, 0x16, 0x4b, 0x59, 0xa7, 0x39, 0xc6, 0xff, 0x7c, 0x2f, 0x07, 0xc7, 0xc0, 0x77, 0xa8, 0x6d, 0x95, 0x23, 0x8f, 0xe5, 0x1e, 0x1f, 0xcf, 0x33, 0x57, 0x4a, 0x4a, 0xe0, 0x68, 0x4b, 0x42, 0xa3, 0xf6, 0xbf, 0x67, 0x7d, 0x91, 0x82, 0x0c, 0xa8, 0x98, 0x74, 0x46, 0x7b, 0x2c, 0x23, 0xad, 0xd7, 0x79, 0x69, 0xc8, 0x07, 0x17, 0x43, 0x0d, 0x0e, 0xfc, 0x1d, 0x36, 0x95, 0x89, 0x2c, 0xe8, 0x55, 0xcb, 0x7f, 0x70, 0x11, 0x63, 0x0f, 0x4d, 0xf2, 0x6d, 0xef, 0x8d, 0xdf, 0x36, 0xfc, 0x23, 0x90, 0x5f, 0x57, 0xfa, 0x62, 0x43, 0xa4, 0x85, 0xc7, 0x70, 0xd5, 0x68, 0x1f, 0xcd } - -} -, -{ - "RSASSA-PSS Signature Example 5.6", - /* Message to be signed */ - 138, - { 0xc6, 0x10, 0x3c, 0x33, 0x0c, 0x1e, 0xf7, 0x18, 0xc1, 0x41, 0xe4, 0x7b, 0x8f, 0xa8, 0x59, 0xbe, 0x4d, 0x5b, 0x96, 0x25, 0x9e, 0x7d, 0x14, 0x20, 0x70, 0xec, 0xd4, 0x85, 0x83, 0x9d, 0xba, 0x5a, 0x83, 0x69, 0xc1, 0x7c, 0x11, 0x14, 0x03, 0x5e, 0x53, 0x2d, 0x19, 0x5c, 0x74, 0xf4, 0x4a, 0x04, 0x76, 0xa2, 0xd3, 0xe8, 0xa4, 0xda, 0x21, 0x00, 0x16, 0xca, 0xce, 0xd0, 0xe3, 0x67, 0xcb, 0x86, 0x77, 0x10, 0xa4, 0xb5, 0xaa, 0x2d, 0xf2, 0xb8, 0xe5, 0xda, 0xf5, 0xfd, 0xc6, 0x47, 0x80, 0x7d, 0x4d, 0x5e, 0xbb, 0x6c, 0x56, 0xb9, 0x76, 0x3c, 0xcd, 0xae, 0x4d, 0xea, 0x33, 0x08, 0xeb, 0x0a, 0xc2, 0xa8, 0x95, 0x01, 0xcb, 0x20, 0x9d, 0x26, 0x39, 0xfa, 0x5b, 0xf8, 0x7c, 0xe7, 0x90, 0x74, 0x7d, 0x3c, 0xb2, 0xd2, 0x95, 0xe8, 0x45, 0x64, 0xf2, 0xf6, 0x37, 0x82, 0x4f, 0x0c, 0x13, 0x02, 0x81, 0x29, 0xb0, 0xaa, 0x4a, 0x42, 0x2d, 0x16, 0x22, 0x82 } -, - /* Salt */ - 20, - { 0x23, 0x29, 0x1e, 0x4a, 0x33, 0x07, 0xe8, 0xbb, 0xb7, 0x76, 0x62, 0x3a, 0xb3, 0x4e, 0x4a, 0x5f, 0x4c, 0xc8, 0xa8, 0xdb } -, - /* Signature */ - 129, - { 0x02, 0x80, 0x2d, 0xcc, 0xfa, 0x8d, 0xfa, 0xf5, 0x27, 0x9b, 0xf0, 0xb4, 0xa2, 0x9b, 0xa1, 0xb1, 0x57, 0x61, 0x1f, 0xae, 0xaa, 0xf4, 0x19, 0xb8, 0x91, 0x9d, 0x15, 0x94, 0x19, 0x00, 0xc1, 0x33, 0x9e, 0x7e, 0x92, 0xe6, 0xfa, 0xe5, 0x62, 0xc5, 0x3e, 0x6c, 0xc8, 0xe8, 0x41, 0x04, 0xb1, 0x10, 0xbc, 0xe0, 0x3a, 0xd1, 0x85, 0x25, 0xe3, 0xc4, 0x9a, 0x0e, 0xad, 0xad, 0x5d, 0x3f, 0x28, 0xf2, 0x44, 0xa8, 0xed, 0x89, 0xed, 0xba, 0xfb, 0xb6, 0x86, 0x27, 0x7c, 0xfa, 0x8a, 0xe9, 0x09, 0x71, 0x4d, 0x6b, 0x28, 0xf4, 0xbf, 0x8e, 0x29, 0x3a, 0xa0, 0x4c, 0x41, 0xef, 0xe7, 0xc0, 0xa8, 0x12, 0x66, 0xd5, 0xc0, 0x61, 0xe2, 0x57, 0x5b, 0xe0, 0x32, 0xaa, 0x46, 0x46, 0x74, 0xff, 0x71, 0x62, 0x62, 0x19, 0xbd, 0x74, 0xcc, 0x45, 0xf0, 0xe7, 0xed, 0x4e, 0x3f, 0xf9, 0x6e, 0xee, 0x75, 0x8e, 0x8f } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 6: A 1029-bit RSA Key Pair", -{ - /* RSA modulus n */ - 129, - { 0x16, 0x4c, 0xa3, 0x1c, 0xff, 0x60, 0x9f, 0x3a, 0x0e, 0x71, 0x01, 0xb0, 0x39, 0xf2, 0xe4, 0xfe, 0x6d, 0xd3, 0x75, 0x19, 0xab, 0x98, 0x59, 0x8d, 0x17, 0x9e, 0x17, 0x49, 0x96, 0x59, 0x80, 0x71, 0xf4, 0x7d, 0x3a, 0x04, 0x55, 0x91, 0x58, 0xd7, 0xbe, 0x37, 0x3c, 0xf1, 0xaa, 0x53, 0xf0, 0xaa, 0x6e, 0xf0, 0x90, 0x39, 0xe5, 0x67, 0x8c, 0x2a, 0x4c, 0x63, 0x90, 0x05, 0x14, 0xc8, 0xc4, 0xf8, 0xaa, 0xed, 0x5d, 0xe1, 0x2a, 0x5f, 0x10, 0xb0, 0x9c, 0x31, 0x1a, 0xf8, 0xc0, 0xff, 0xb5, 0xb7, 0xa2, 0x97, 0xf2, 0xef, 0xc6, 0x3b, 0x8d, 0x6b, 0x05, 0x10, 0x93, 0x1f, 0x0b, 0x98, 0xe4, 0x8b, 0xf5, 0xfc, 0x6e, 0xc4, 0xe7, 0xb8, 0xdb, 0x1f, 0xfa, 0xeb, 0x08, 0xc3, 0x8e, 0x02, 0xad, 0xb8, 0xf0, 0x3a, 0x48, 0x22, 0x9c, 0x99, 0xe9, 0x69, 0x43, 0x1f, 0x61, 0xcb, 0x8c, 0x4d, 0xc6, 0x98, 0xd1 } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 129, - { 0x03, 0xb6, 0x64, 0xee, 0x3b, 0x75, 0x66, 0x72, 0x3f, 0xc6, 0xea, 0xf2, 0x8a, 0xbb, 0x43, 0x0a, 0x39, 0x80, 0xf1, 0x12, 0x6c, 0x81, 0xde, 0x8a, 0xd7, 0x09, 0xea, 0xb3, 0x9a, 0xc9, 0xdc, 0xd0, 0xb1, 0x55, 0x0b, 0x37, 0x29, 0xd8, 0x70, 0x68, 0xe9, 0x52, 0x00, 0x9d, 0xf5, 0x44, 0x53, 0x4c, 0x1f, 0x50, 0x82, 0x9a, 0x78, 0xf4, 0x59, 0x1e, 0xb8, 0xfd, 0x57, 0x14, 0x04, 0x26, 0xa6, 0xbb, 0x04, 0x05, 0xb6, 0xa6, 0xf5, 0x1a, 0x57, 0xd9, 0x26, 0x7b, 0x7b, 0xbc, 0x65, 0x33, 0x91, 0xa6, 0x99, 0xa2, 0xa9, 0x0d, 0xac, 0x8a, 0xe2, 0x26, 0xbc, 0xc6, 0x0f, 0xa8, 0xcd, 0x93, 0x4c, 0x73, 0xc7, 0xb0, 0x3b, 0x1f, 0x6b, 0x81, 0x81, 0x58, 0x63, 0x18, 0x38, 0xa8, 0x61, 0x2e, 0x6e, 0x6e, 0xa9, 0x2b, 0xe2, 0x4f, 0x83, 0x24, 0xfa, 0xf5, 0xb1, 0xfd, 0x85, 0x87, 0x22, 0x52, 0x67, 0xba, 0x6f } -, - /* Prime p */ - 65, - { 0x04, 0xf0, 0x54, 0x8c, 0x96, 0x26, 0xab, 0x1e, 0xbf, 0x12, 0x44, 0x93, 0x47, 0x41, 0xd9, 0x9a, 0x06, 0x22, 0x0e, 0xfa, 0x2a, 0x58, 0x56, 0xaa, 0x0e, 0x75, 0x73, 0x0b, 0x2e, 0xc9, 0x6a, 0xdc, 0x86, 0xbe, 0x89, 0x4f, 0xa2, 0x80, 0x3b, 0x53, 0xa5, 0xe8, 0x5d, 0x27, 0x6a, 0xcb, 0xd2, 0x9a, 0xb8, 0x23, 0xf8, 0x0a, 0x73, 0x91, 0xbb, 0x54, 0xa5, 0x05, 0x16, 0x72, 0xfb, 0x04, 0xee, 0xb5, 0x43 } -, - /* Prime q */ - 65, - { 0x04, 0x83, 0xe0, 0xae, 0x47, 0x91, 0x55, 0x87, 0x74, 0x3f, 0xf3, 0x45, 0x36, 0x2b, 0x55, 0x5d, 0x39, 0x62, 0xd9, 0x8b, 0xb6, 0xf1, 0x5f, 0x84, 0x8b, 0x4c, 0x92, 0xb1, 0x77, 0x1c, 0xa8, 0xed, 0x10, 0x7d, 0x8d, 0x3e, 0xe6, 0x5e, 0xc4, 0x45, 0x17, 0xdd, 0x0f, 0xaa, 0x48, 0x1a, 0x38, 0x7e, 0x90, 0x2f, 0x7a, 0x2e, 0x74, 0x7c, 0x26, 0x9e, 0x7e, 0xa4, 0x44, 0x80, 0xbc, 0x53, 0x8b, 0x8e, 0x5b } -, - /* p's CRT exponent dP */ - 65, - { 0x03, 0xa8, 0xe8, 0xae, 0xa9, 0x92, 0x0c, 0x1a, 0xa3, 0xb2, 0xf0, 0xd8, 0x46, 0xe4, 0xb8, 0x50, 0xd8, 0x1c, 0xa3, 0x06, 0xa5, 0x1c, 0x83, 0x54, 0x4f, 0x94, 0x9f, 0x64, 0xf9, 0x0d, 0xcf, 0x3f, 0x8e, 0x26, 0x61, 0xf0, 0x7e, 0x56, 0x12, 0x20, 0xa1, 0x80, 0x38, 0x8f, 0xbe, 0x27, 0x3e, 0x70, 0xe2, 0xe5, 0xdc, 0xa8, 0x3a, 0x0e, 0x13, 0x48, 0xdd, 0x64, 0x90, 0xc7, 0x31, 0xd6, 0xec, 0xe1, 0xab } -, - /* q's CRT exponent dQ */ - 65, - { 0x01, 0x35, 0xbd, 0xcd, 0xb6, 0x0b, 0xf2, 0x19, 0x7c, 0x43, 0x6e, 0xd3, 0x4b, 0x32, 0xcd, 0x8b, 0x4f, 0xc7, 0x77, 0x78, 0x83, 0x2b, 0xa7, 0x67, 0x03, 0x55, 0x1f, 0xb2, 0x42, 0xb3, 0x01, 0x69, 0x95, 0x93, 0xaf, 0x77, 0xfd, 0x8f, 0xc3, 0x94, 0xa8, 0x52, 0x6a, 0xd2, 0x3c, 0xc4, 0x1a, 0x03, 0x80, 0x6b, 0xd8, 0x97, 0xfe, 0x4b, 0x0e, 0xa6, 0x46, 0x55, 0x8a, 0xad, 0xdc, 0xc9, 0x9e, 0x8a, 0x25 } -, - /* CRT coefficient qInv */ - 65, - { 0x03, 0x04, 0xc0, 0x3d, 0x9c, 0x73, 0x65, 0x03, 0xa9, 0x84, 0xab, 0xbd, 0x9b, 0xa2, 0x23, 0x01, 0x40, 0x7c, 0x4a, 0x2a, 0xb1, 0xdd, 0x85, 0x76, 0x64, 0x81, 0xb6, 0x0d, 0x45, 0x40, 0x11, 0x52, 0xe6, 0x92, 0xbe, 0x14, 0xf4, 0x12, 0x1d, 0x9a, 0xa3, 0xfd, 0x6e, 0x0b, 0x4d, 0x1d, 0x3a, 0x97, 0x35, 0x38, 0xa3, 0x1d, 0x42, 0xee, 0x6e, 0x1e, 0x5e, 0xf6, 0x20, 0x23, 0x1a, 0x2b, 0xba, 0xf3, 0x5f } - -} -, -{{ - "RSASSA-PSS Signature Example 6.1", - /* Message to be signed */ - 109, - { 0x0a, 0x20, 0xb7, 0x74, 0xad, 0xdc, 0x2f, 0xa5, 0x12, 0x45, 0xed, 0x7c, 0xb9, 0xda, 0x60, 0x9e, 0x50, 0xca, 0xc6, 0x63, 0x6a, 0x52, 0x54, 0x3f, 0x97, 0x45, 0x8e, 0xed, 0x73, 0x40, 0xf8, 0xd5, 0x3f, 0xfc, 0x64, 0x91, 0x8f, 0x94, 0x90, 0x78, 0xee, 0x03, 0xef, 0x60, 0xd4, 0x2b, 0x5f, 0xec, 0x24, 0x60, 0x50, 0xbd, 0x55, 0x05, 0xcd, 0x8c, 0xb5, 0x97, 0xba, 0xd3, 0xc4, 0xe7, 0x13, 0xb0, 0xef, 0x30, 0x64, 0x4e, 0x76, 0xad, 0xab, 0xb0, 0xde, 0x01, 0xa1, 0x56, 0x1e, 0xfb, 0x25, 0x51, 0x58, 0xc7, 0x4f, 0xc8, 0x01, 0xe6, 0xe9, 0x19, 0xe5, 0x81, 0xb4, 0x6f, 0x0f, 0x0d, 0xdd, 0x08, 0xe4, 0xf3, 0x4c, 0x78, 0x10, 0xb5, 0xed, 0x83, 0x18, 0xf9, 0x1d, 0x7c, 0x8c } -, - /* Salt */ - 20, - { 0x5b, 0x4e, 0xa2, 0xef, 0x62, 0x9c, 0xc2, 0x2f, 0x3b, 0x53, 0x8e, 0x01, 0x69, 0x04, 0xb4, 0x7b, 0x1e, 0x40, 0xbf, 0xd5 } -, - /* Signature */ - 129, - { 0x04, 0xc0, 0xcf, 0xac, 0xec, 0x04, 0xe5, 0xba, 0xdb, 0xec, 0xe1, 0x59, 0xa5, 0xa1, 0x10, 0x3f, 0x69, 0xb3, 0xf3, 0x2b, 0xa5, 0x93, 0xcb, 0x4c, 0xc4, 0xb1, 0xb7, 0xab, 0x45, 0x59, 0x16, 0xa9, 0x6a, 0x27, 0xcd, 0x26, 0x78, 0xea, 0x0f, 0x46, 0xba, 0x37, 0xf7, 0xfc, 0x9c, 0x86, 0x32, 0x5f, 0x29, 0x73, 0x3b, 0x38, 0x9f, 0x1d, 0x97, 0xf4, 0x3e, 0x72, 0x01, 0xc0, 0xf3, 0x48, 0xfc, 0x45, 0xfe, 0x42, 0x89, 0x23, 0x35, 0x36, 0x2e, 0xee, 0x01, 0x8b, 0x5b, 0x16, 0x1f, 0x2f, 0x93, 0x93, 0x03, 0x12, 0x25, 0xc7, 0x13, 0x01, 0x2a, 0x57, 0x6b, 0xc8, 0x8e, 0x23, 0x05, 0x24, 0x89, 0x86, 0x8d, 0x90, 0x10, 0xcb, 0xf0, 0x33, 0xec, 0xc5, 0x68, 0xe8, 0xbc, 0x15, 0x2b, 0xdc, 0x59, 0xd5, 0x60, 0xe4, 0x12, 0x91, 0x91, 0x5d, 0x28, 0x56, 0x52, 0x08, 0xe2, 0x2a, 0xee, 0xc9, 0xef, 0x85, 0xd1 } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSASSA-PSS Signature Example 6.2", - /* Message to be signed */ - 199, - { 0x2a, 0xaf, 0xf6, 0x63, 0x1f, 0x62, 0x1c, 0xe6, 0x15, 0x76, 0x0a, 0x9e, 0xbc, 0xe9, 0x4b, 0xb3, 0x33, 0x07, 0x7a, 0xd8, 0x64, 0x88, 0xc8, 0x61, 0xd4, 0xb7, 0x6d, 0x29, 0xc1, 0xf4, 0x87, 0x46, 0xc6, 0x11, 0xae, 0x1e, 0x03, 0xce, 0xd4, 0x44, 0x5d, 0x7c, 0xfa, 0x1f, 0xe5, 0xf6, 0x2e, 0x1b, 0x3f, 0x08, 0x45, 0x2b, 0xde, 0x3b, 0x6e, 0xf8, 0x19, 0x73, 0xba, 0xfb, 0xb5, 0x7f, 0x97, 0xbc, 0xee, 0xf8, 0x73, 0x98, 0x53, 0x95, 0xb8, 0x26, 0x05, 0x89, 0xaa, 0x88, 0xcb, 0x7d, 0xb5, 0x0a, 0xb4, 0x69, 0x26, 0x2e, 0x55, 0x1b, 0xdc, 0xd9, 0xa5, 0x6f, 0x27, 0x5a, 0x0a, 0xc4, 0xfe, 0x48, 0x47, 0x00, 0xc3, 0x5f, 0x3d, 0xbf, 0x2b, 0x46, 0x9e, 0xde, 0x86, 0x47, 0x41, 0xb8, 0x6f, 0xa5, 0x91, 0x72, 0xa3, 0x60, 0xba, 0x95, 0xa0, 0x2e, 0x13, 0x9b, 0xe5, 0x0d, 0xdf, 0xb7, 0xcf, 0x0b, 0x42, 0xfa, 0xea, 0xbb, 0xfb, 0xba, 0xa8, 0x6a, 0x44, 0x97, 0x69, 0x9c, 0x4f, 0x2d, 0xfd, 0x5b, 0x08, 0x40, 0x6a, 0xf7, 0xe1, 0x41, 0x44, 0x42, 0x7c, 0x25, 0x3e, 0xc0, 0xef, 0xa2, 0x0e, 0xaf, 0x9a, 0x8b, 0xe8, 0xcd, 0x49, 0xce, 0x1f, 0x1b, 0xc4, 0xe9, 0x3e, 0x61, 0x9c, 0xf2, 0xaa, 0x8e, 0xd4, 0xfb, 0x39, 0xbc, 0x85, 0x90, 0xd0, 0xf7, 0xb9, 0x64, 0x88, 0xf7, 0x31, 0x7a, 0xc9, 0xab, 0xf7, 0xbe, 0xe4, 0xe3, 0xa0, 0xe7, 0x15 } -, - /* Salt */ - 20, - { 0x83, 0x14, 0x6a, 0x9e, 0x78, 0x27, 0x22, 0xc2, 0x8b, 0x01, 0x4f, 0x98, 0xb4, 0x26, 0x7b, 0xda, 0x2a, 0xc9, 0x50, 0x4f } -, - /* Signature */ - 129, - { 0x0a, 0x23, 0x14, 0x25, 0x0c, 0xf5, 0x2b, 0x6e, 0x4e, 0x90, 0x8d, 0xe5, 0xb3, 0x56, 0x46, 0xbc, 0xaa, 0x24, 0x36, 0x1d, 0xa8, 0x16, 0x0f, 0xb0, 0xf9, 0x25, 0x75, 0x90, 0xab, 0x3a, 0xce, 0x42, 0xb0, 0xdc, 0x3e, 0x77, 0xad, 0x2d, 0xb7, 0xc2, 0x03, 0xa2, 0x0b, 0xd9, 0x52, 0xfb, 0xb5, 0x6b, 0x15, 0x67, 0x04, 0x6e, 0xcf, 0xaa, 0x93, 0x3d, 0x7b, 0x10, 0x00, 0xc3, 0xde, 0x9f, 0xf0, 0x5b, 0x7d, 0x98, 0x9b, 0xa4, 0x6f, 0xd4, 0x3b, 0xc4, 0xc2, 0xd0, 0xa3, 0x98, 0x6b, 0x7f, 0xfa, 0x13, 0x47, 0x1d, 0x37, 0xeb, 0x5b, 0x47, 0xd6, 0x47, 0x07, 0xbd, 0x29, 0x0c, 0xfd, 0x6a, 0x9f, 0x39, 0x3a, 0xd0, 0x8e, 0xc1, 0xe3, 0xbd, 0x71, 0xbb, 0x57, 0x92, 0x61, 0x50, 0x35, 0xcd, 0xaf, 0x2d, 0x89, 0x29, 0xae, 0xd3, 0xbe, 0x09, 0x83, 0x79, 0x37, 0x7e, 0x77, 0x7c, 0xe7, 0x9a, 0xaa, 0x47, 0x73 } - -} -, -{ - "RSASSA-PSS Signature Example 6.3", - /* Message to be signed */ - 62, - { 0x0f, 0x61, 0x95, 0xd0, 0x4a, 0x6e, 0x6f, 0xc7, 0xe2, 0xc9, 0x60, 0x0d, 0xbf, 0x84, 0x0c, 0x39, 0xea, 0x8d, 0x4d, 0x62, 0x4f, 0xd5, 0x35, 0x07, 0x01, 0x6b, 0x0e, 0x26, 0x85, 0x8a, 0x5e, 0x0a, 0xec, 0xd7, 0xad, 0xa5, 0x43, 0xae, 0x5c, 0x0a, 0xb3, 0xa6, 0x25, 0x99, 0xcb, 0xa0, 0xa5, 0x4e, 0x6b, 0xf4, 0x46, 0xe2, 0x62, 0xf9, 0x89, 0x97, 0x8f, 0x9d, 0xdf, 0x5e, 0x9a, 0x41 } -, - /* Salt */ - 20, - { 0xa8, 0x7b, 0x8a, 0xed, 0x07, 0xd7, 0xb8, 0xe2, 0xda, 0xf1, 0x4d, 0xdc, 0xa4, 0xac, 0x68, 0xc4, 0xd0, 0xaa, 0xbf, 0xf8 } -, - /* Signature */ - 129, - { 0x08, 0x6d, 0xf6, 0xb5, 0x00, 0x09, 0x8c, 0x12, 0x0f, 0x24, 0xff, 0x84, 0x23, 0xf7, 0x27, 0xd9, 0xc6, 0x1a, 0x5c, 0x90, 0x07, 0xd3, 0xb6, 0xa3, 0x1c, 0xe7, 0xcf, 0x8f, 0x3c, 0xbe, 0xc1, 0xa2, 0x6b, 0xb2, 0x0e, 0x2b, 0xd4, 0xa0, 0x46, 0x79, 0x32, 0x99, 0xe0, 0x3e, 0x37, 0xa2, 0x1b, 0x40, 0x19, 0x4f, 0xb0, 0x45, 0xf9, 0x0b, 0x18, 0xbf, 0x20, 0xa4, 0x79, 0x92, 0xcc, 0xd7, 0x99, 0xcf, 0x9c, 0x05, 0x9c, 0x29, 0x9c, 0x05, 0x26, 0x85, 0x49, 0x54, 0xaa, 0xde, 0x8a, 0x6a, 0xd9, 0xd9, 0x7e, 0xc9, 0x1a, 0x11, 0x45, 0x38, 0x3f, 0x42, 0x46, 0x8b, 0x23, 0x1f, 0x4d, 0x72, 0xf2, 0x37, 0x06, 0xd9, 0x85, 0x3c, 0x3f, 0xa4, 0x3c, 0xe8, 0xac, 0xe8, 0xbf, 0xe7, 0x48, 0x49, 0x87, 0xa1, 0xec, 0x6a, 0x16, 0xc8, 0xda, 0xf8, 0x1f, 0x7c, 0x8b, 0xf4, 0x27, 0x74, 0x70, 0x7a, 0x9d, 0xf4, 0x56 } - -} -, -{ - "RSASSA-PSS Signature Example 6.4", - /* Message to be signed */ - 112, - { 0x33, 0x7d, 0x25, 0xfe, 0x98, 0x10, 0xeb, 0xca, 0x0d, 0xe4, 0xd4, 0x65, 0x8d, 0x3c, 0xeb, 0x8e, 0x0f, 0xe4, 0xc0, 0x66, 0xab, 0xa3, 0xbc, 0xc4, 0x8b, 0x10, 0x5d, 0x3b, 0xf7, 0xe0, 0x25, 0x7d, 0x44, 0xfe, 0xce, 0xa6, 0x59, 0x6f, 0x4d, 0x0c, 0x59, 0xa0, 0x84, 0x02, 0x83, 0x36, 0x78, 0xf7, 0x06, 0x20, 0xf9, 0x13, 0x8d, 0xfe, 0xb7, 0xde, 0xd9, 0x05, 0xe4, 0xa6, 0xd5, 0xf0, 0x5c, 0x47, 0x3d, 0x55, 0x93, 0x66, 0x52, 0xe2, 0xa5, 0xdf, 0x43, 0xc0, 0xcf, 0xda, 0x7b, 0xac, 0xaf, 0x30, 0x87, 0xf4, 0x52, 0x4b, 0x06, 0xcf, 0x42, 0x15, 0x7d, 0x01, 0x53, 0x97, 0x39, 0xf7, 0xfd, 0xde, 0xc9, 0xd5, 0x81, 0x25, 0xdf, 0x31, 0xa3, 0x2e, 0xab, 0x06, 0xc1, 0x9b, 0x71, 0xf1, 0xd5, 0xbf } -, - /* Salt */ - 20, - { 0xa3, 0x79, 0x32, 0xf8, 0xa7, 0x49, 0x4a, 0x94, 0x2d, 0x6f, 0x76, 0x74, 0x38, 0xe7, 0x24, 0xd6, 0xd0, 0xc0, 0xef, 0x18 } -, - /* Signature */ - 129, - { 0x0b, 0x5b, 0x11, 0xad, 0x54, 0x98, 0x63, 0xff, 0xa9, 0xc5, 0x1a, 0x14, 0xa1, 0x10, 0x6c, 0x2a, 0x72, 0xcc, 0x8b, 0x64, 0x6e, 0x5c, 0x72, 0x62, 0x50, 0x97, 0x86, 0x10, 0x5a, 0x98, 0x47, 0x76, 0x53, 0x4c, 0xa9, 0xb5, 0x4c, 0x1c, 0xc6, 0x4b, 0xf2, 0xd5, 0xa4, 0x4f, 0xd7, 0xe8, 0xa6, 0x9d, 0xb6, 0x99, 0xd5, 0xea, 0x52, 0x08, 0x7a, 0x47, 0x48, 0xfd, 0x2a, 0xbc, 0x1a, 0xfe, 0xd1, 0xe5, 0xd6, 0xf7, 0xc8, 0x90, 0x25, 0x53, 0x0b, 0xda, 0xa2, 0x21, 0x3d, 0x7e, 0x03, 0x0f, 0xa5, 0x5d, 0xf6, 0xf3, 0x4b, 0xcf, 0x1c, 0xe4, 0x6d, 0x2e, 0xdf, 0x4e, 0x3a, 0xe4, 0xf3, 0xb0, 0x18, 0x91, 0xa0, 0x68, 0xc9, 0xe3, 0xa4, 0x4b, 0xbc, 0x43, 0x13, 0x3e, 0xda, 0xd6, 0xec, 0xb9, 0xf3, 0x54, 0x00, 0xc4, 0x25, 0x2a, 0x57, 0x62, 0xd6, 0x57, 0x44, 0xb9, 0x9c, 0xb9, 0xf4, 0xc5, 0x59, 0x32, 0x9f } - -} -, -{ - "RSASSA-PSS Signature Example 6.5", - /* Message to be signed */ - 176, - { 0x84, 0xec, 0x50, 0x2b, 0x07, 0x2e, 0x82, 0x87, 0x78, 0x9d, 0x8f, 0x92, 0x35, 0x82, 0x9e, 0xa3, 0xb1, 0x87, 0xaf, 0xd4, 0xd4, 0xc7, 0x85, 0x61, 0x1b, 0xda, 0x5f, 0x9e, 0xb3, 0xcb, 0x96, 0x71, 0x7e, 0xfa, 0x70, 0x07, 0x22, 0x7f, 0x1c, 0x08, 0xcb, 0xcb, 0x97, 0x2e, 0x66, 0x72, 0x35, 0xe0, 0xfb, 0x7d, 0x43, 0x1a, 0x65, 0x70, 0x32, 0x6d, 0x2e, 0xcc, 0xe3, 0x5a, 0xdb, 0x37, 0x3d, 0xc7, 0x53, 0xb3, 0xbe, 0x5f, 0x82, 0x9b, 0x89, 0x17, 0x54, 0x93, 0x19, 0x3f, 0xab, 0x16, 0xba, 0xdb, 0x41, 0x37, 0x1b, 0x3a, 0xac, 0x0a, 0xe6, 0x70, 0x07, 0x6f, 0x24, 0xbe, 0xf4, 0x20, 0xc1, 0x35, 0xad, 0xd7, 0xce, 0xe8, 0xd3, 0x5f, 0xbc, 0x94, 0x4d, 0x79, 0xfa, 0xfb, 0x9e, 0x30, 0x7a, 0x13, 0xb0, 0xf5, 0x56, 0xcb, 0x65, 0x4a, 0x06, 0xf9, 0x73, 0xed, 0x22, 0x67, 0x23, 0x30, 0x19, 0x7e, 0xf5, 0xa7, 0x48, 0xbf, 0x82, 0x6a, 0x5d, 0xb2, 0x38, 0x3a, 0x25, 0x36, 0x4b, 0x68, 0x6b, 0x93, 0x72, 0xbb, 0x23, 0x39, 0xae, 0xb1, 0xac, 0x9e, 0x98, 0x89, 0x32, 0x7d, 0x01, 0x6f, 0x16, 0x70, 0x77, 0x6d, 0xb0, 0x62, 0x01, 0xad, 0xbd, 0xca, 0xf8, 0xa5, 0xe3, 0xb7, 0x4e, 0x10, 0x8b, 0x73 } -, - /* Salt */ - 20, - { 0x7b, 0x79, 0x0c, 0x1d, 0x62, 0xf7, 0xb8, 0x4e, 0x94, 0xdf, 0x6a, 0xf2, 0x89, 0x17, 0xcf, 0x57, 0x10, 0x18, 0x11, 0x0e } -, - /* Signature */ - 129, - { 0x02, 0xd7, 0x1f, 0xa9, 0xb5, 0x3e, 0x46, 0x54, 0xfe, 0xfb, 0x7f, 0x08, 0x38, 0x5c, 0xf6, 0xb0, 0xae, 0x3a, 0x81, 0x79, 0x42, 0xeb, 0xf6, 0x6c, 0x35, 0xac, 0x67, 0xf0, 0xb0, 0x69, 0x95, 0x2a, 0x3c, 0xe9, 0xc7, 0xe1, 0xf1, 0xb0, 0x2e, 0x48, 0x0a, 0x95, 0x00, 0x83, 0x6d, 0xe5, 0xd6, 0x4c, 0xdb, 0x7e, 0xcd, 0xe0, 0x45, 0x42, 0xf7, 0xa7, 0x99, 0x88, 0x78, 0x7e, 0x24, 0xc2, 0xba, 0x05, 0xf5, 0xfd, 0x48, 0x2c, 0x02, 0x3e, 0xd5, 0xc3, 0x0e, 0x04, 0x83, 0x9d, 0xc4, 0x4b, 0xed, 0x2a, 0x3a, 0x3a, 0x4f, 0xee, 0x01, 0x11, 0x3c, 0x89, 0x1a, 0x47, 0xd3, 0x2e, 0xb8, 0x02, 0x5c, 0x28, 0xcb, 0x05, 0x0b, 0x5c, 0xdb, 0x57, 0x6c, 0x70, 0xfe, 0x76, 0xef, 0x52, 0x34, 0x05, 0xc0, 0x84, 0x17, 0xfa, 0xf3, 0x50, 0xb0, 0x37, 0xa4, 0x3c, 0x37, 0x93, 0x39, 0xfc, 0xb1, 0x8d, 0x3a, 0x35, 0x6b } - -} -, -{ - "RSASSA-PSS Signature Example 6.6", - /* Message to be signed */ - 139, - { 0x99, 0x06, 0xd8, 0x9f, 0x97, 0xa9, 0xfd, 0xed, 0xd3, 0xcc, 0xd8, 0x24, 0xdb, 0x68, 0x73, 0x26, 0xf3, 0x0f, 0x00, 0xaa, 0x25, 0xa7, 0xfc, 0xa2, 0xaf, 0xcb, 0x3b, 0x0f, 0x86, 0xcd, 0x41, 0xe7, 0x3f, 0x0e, 0x8f, 0xf7, 0xd2, 0xd8, 0x3f, 0x59, 0xe2, 0x8e, 0xd3, 0x1a, 0x5a, 0x0d, 0x55, 0x15, 0x23, 0x37, 0x4d, 0xe2, 0x2e, 0x4c, 0x7e, 0x8f, 0xf5, 0x68, 0xb3, 0x86, 0xee, 0x3d, 0xc4, 0x11, 0x63, 0xf1, 0x0b, 0xf6, 0x7b, 0xb0, 0x06, 0x26, 0x1c, 0x90, 0x82, 0xf9, 0xaf, 0x90, 0xbf, 0x1d, 0x90, 0x49, 0xa6, 0xb9, 0xfa, 0xe7, 0x1c, 0x7f, 0x84, 0xfb, 0xe6, 0xe5, 0x5f, 0x02, 0x78, 0x9d, 0xe7, 0x74, 0xf2, 0x30, 0xf1, 0x15, 0x02, 0x6a, 0x4b, 0x4e, 0x96, 0xc5, 0x5b, 0x04, 0xa9, 0x5d, 0xa3, 0xaa, 0xcb, 0xb2, 0xce, 0xce, 0x8f, 0x81, 0x76, 0x4a, 0x1f, 0x1c, 0x99, 0x51, 0x54, 0x11, 0x08, 0x7c, 0xf7, 0xd3, 0x4a, 0xed, 0xed, 0x09, 0x32, 0xc1, 0x83 } -, - /* Salt */ - 20, - { 0xfb, 0xbe, 0x05, 0x90, 0x25, 0xb6, 0x9b, 0x89, 0xfb, 0x14, 0xae, 0x22, 0x89, 0xe7, 0xaa, 0xaf, 0xe6, 0x0c, 0x0f, 0xcd } -, - /* Signature */ - 129, - { 0x0a, 0x40, 0xa1, 0x6e, 0x2f, 0xe2, 0xb3, 0x8d, 0x1d, 0xf9, 0x05, 0x46, 0x16, 0x7c, 0xf9, 0x46, 0x9c, 0x9e, 0x3c, 0x36, 0x81, 0xa3, 0x44, 0x2b, 0x4b, 0x2c, 0x2f, 0x58, 0x1d, 0xeb, 0x38, 0x5c, 0xe9, 0x9f, 0xc6, 0x18, 0x8b, 0xb0, 0x2a, 0x84, 0x1d, 0x56, 0xe7, 0x6d, 0x30, 0x18, 0x91, 0xe2, 0x45, 0x60, 0x55, 0x0f, 0xcc, 0x2a, 0x26, 0xb5, 0x5f, 0x4c, 0xcb, 0x26, 0xd8, 0x37, 0xd3, 0x50, 0xa1, 0x54, 0xbc, 0xac, 0xa8, 0x39, 0x2d, 0x98, 0xfa, 0x67, 0x95, 0x9e, 0x97, 0x27, 0xb7, 0x8c, 0xad, 0x03, 0x26, 0x9f, 0x56, 0x96, 0x8f, 0xc5, 0x6b, 0x68, 0xbd, 0x67, 0x99, 0x26, 0xd8, 0x3c, 0xc9, 0xcb, 0x21, 0x55, 0x50, 0x64, 0x5c, 0xcd, 0xa3, 0x1c, 0x76, 0x0f, 0xf3, 0x58, 0x88, 0x94, 0x3d, 0x2d, 0x8a, 0x1d, 0x35, 0x1e, 0x81, 0xe5, 0xd0, 0x7b, 0x86, 0x18, 0x2e, 0x75, 0x10, 0x81, 0xef } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 7: A 1030-bit RSA Key Pair", -{ - /* RSA modulus n */ - 129, - { 0x37, 0xc9, 0xda, 0x4a, 0x66, 0xc8, 0xc4, 0x08, 0xb8, 0xda, 0x27, 0xd0, 0xc9, 0xd7, 0x9f, 0x8c, 0xcb, 0x1e, 0xaf, 0xc1, 0xd2, 0xfe, 0x48, 0x74, 0x6d, 0x94, 0x0b, 0x7c, 0x4e, 0xf5, 0xde, 0xe1, 0x8a, 0xd1, 0x26, 0x47, 0xce, 0xfa, 0xa0, 0xc4, 0xb3, 0x18, 0x8b, 0x22, 0x1c, 0x51, 0x53, 0x86, 0x75, 0x9b, 0x93, 0xf0, 0x20, 0x24, 0xb2, 0x5a, 0xb9, 0x24, 0x2f, 0x83, 0x57, 0xd8, 0xf3, 0xfd, 0x49, 0x64, 0x0e, 0xe5, 0xe6, 0x43, 0xea, 0xf6, 0xc6, 0x4d, 0xee, 0xfa, 0x70, 0x89, 0x72, 0x7c, 0x8f, 0xf0, 0x39, 0x93, 0x33, 0x39, 0x15, 0xc6, 0xef, 0x21, 0xbf, 0x59, 0x75, 0xb6, 0xe5, 0x0d, 0x11, 0x8b, 0x51, 0x00, 0x8e, 0xc3, 0x3e, 0x9f, 0x01, 0xa0, 0xa5, 0x45, 0xa1, 0x0a, 0x83, 0x6a, 0x43, 0xdd, 0xbc, 0xa9, 0xd8, 0xb5, 0xc5, 0xd3, 0x54, 0x80, 0x22, 0xd7, 0x06, 0x4e, 0xa2, 0x9a, 0xb3 } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 128, - { 0x3b, 0xed, 0x99, 0x90, 0x52, 0xd9, 0x57, 0xbc, 0x06, 0xd6, 0x51, 0xee, 0xf6, 0xe3, 0xa9, 0x80, 0x94, 0xb1, 0x62, 0x1b, 0xd3, 0x8b, 0x54, 0x49, 0xbd, 0x6c, 0x4a, 0xea, 0x3d, 0xe7, 0xe0, 0x84, 0x67, 0x9a, 0x44, 0x84, 0xde, 0xd2, 0x5b, 0xe0, 0xf0, 0x82, 0x6c, 0xf3, 0x37, 0x78, 0x25, 0x41, 0x4b, 0x14, 0xd4, 0xd6, 0x1d, 0xb1, 0x4d, 0xe6, 0x26, 0xfb, 0xb8, 0x0e, 0x5f, 0x4f, 0xae, 0xc9, 0x56, 0xf9, 0xa0, 0xa2, 0xd2, 0x4f, 0x99, 0x57, 0x63, 0x80, 0xf0, 0x84, 0xeb, 0x62, 0xe4, 0x6a, 0x57, 0xd5, 0x54, 0x27, 0x8b, 0x53, 0x56, 0x26, 0x19, 0x3c, 0xe0, 0x20, 0x60, 0x57, 0x5e, 0xb6, 0x6c, 0x57, 0x98, 0xd3, 0x6f, 0x6c, 0x5d, 0x40, 0xfb, 0x00, 0xd8, 0x09, 0xb4, 0x2a, 0x73, 0x10, 0x2c, 0x1c, 0x74, 0xee, 0x95, 0xbd, 0x71, 0x42, 0x0f, 0xff, 0xef, 0x63, 0x18, 0xb5, 0x2c, 0x29 } -, - /* Prime p */ - 65, - { 0x07, 0xee, 0xfb, 0x42, 0x4b, 0x0e, 0x3a, 0x40, 0xe4, 0x20, 0x8e, 0xe5, 0xaf, 0xb2, 0x80, 0xb2, 0x23, 0x17, 0x30, 0x81, 0x14, 0xdd, 0xe0, 0xb4, 0xb6, 0x4f, 0x73, 0x01, 0x84, 0xec, 0x68, 0xda, 0x6c, 0xe2, 0x86, 0x7a, 0x9f, 0x48, 0xed, 0x77, 0x26, 0xd5, 0xe2, 0x61, 0x4e, 0xd0, 0x4a, 0x54, 0x10, 0x73, 0x6c, 0x8c, 0x71, 0x4e, 0xe7, 0x02, 0x47, 0x42, 0x98, 0xc6, 0x29, 0x2a, 0xf0, 0x75, 0x35 } -, - /* Prime q */ - 65, - { 0x07, 0x08, 0x30, 0xdb, 0xf9, 0x47, 0xea, 0xc0, 0x22, 0x8d, 0xe2, 0x63, 0x14, 0xb5, 0x9b, 0x66, 0x99, 0x4c, 0xc6, 0x0e, 0x83, 0x60, 0xe7, 0x5d, 0x38, 0x76, 0x29, 0x8f, 0x8f, 0x8a, 0x7d, 0x14, 0x1d, 0xa0, 0x64, 0xe5, 0xca, 0x02, 0x6a, 0x97, 0x3e, 0x28, 0xf2, 0x54, 0x73, 0x8c, 0xee, 0x66, 0x9c, 0x72, 0x1b, 0x03, 0x4c, 0xb5, 0xf8, 0xe2, 0x44, 0xda, 0xdd, 0x7c, 0xd1, 0xe1, 0x59, 0xd5, 0x47 } -, - /* p's CRT exponent dP */ - 65, - { 0x05, 0x24, 0xd2, 0x0c, 0x3d, 0x95, 0xcf, 0xf7, 0x5a, 0xf2, 0x31, 0x34, 0x83, 0x22, 0x7d, 0x87, 0x02, 0x71, 0x7a, 0xa5, 0x76, 0xde, 0x15, 0x5f, 0x96, 0x05, 0x15, 0x50, 0x1a, 0xdb, 0x1d, 0x70, 0xe1, 0xc0, 0x4d, 0xe9, 0x1b, 0x75, 0xb1, 0x61, 0xdb, 0xf0, 0x39, 0x83, 0x56, 0x12, 0x7e, 0xde, 0xda, 0x7b, 0xbc, 0x19, 0xa3, 0x2d, 0xc1, 0x62, 0x1c, 0xc9, 0xf5, 0x3c, 0x26, 0x5d, 0x0c, 0xe3, 0x31 } -, - /* q's CRT exponent dQ */ - 65, - { 0x05, 0xf9, 0x84, 0xa1, 0xf2, 0x3c, 0x93, 0x8d, 0x6a, 0x0e, 0x89, 0x72, 0x4b, 0xcf, 0x3d, 0xd9, 0x3f, 0x99, 0x46, 0x92, 0x60, 0x37, 0xfe, 0x7c, 0x6b, 0x13, 0xa2, 0x9e, 0x52, 0x84, 0x85, 0x5f, 0x89, 0x08, 0x95, 0x91, 0xd4, 0x40, 0x97, 0x56, 0x27, 0xbf, 0x5c, 0x9e, 0x3a, 0x8b, 0x5c, 0xa7, 0x9c, 0x77, 0x2a, 0xd2, 0x73, 0xe4, 0x0d, 0x32, 0x1a, 0xf4, 0xa6, 0xc9, 0x7d, 0xfd, 0xed, 0x78, 0xd3 } -, - /* CRT coefficient qInv */ - 64, - { 0xdd, 0xd9, 0x18, 0xad, 0xad, 0xa2, 0x9d, 0xca, 0xb9, 0x81, 0xff, 0x9a, 0xcb, 0xa4, 0x25, 0x70, 0x23, 0xc0, 0x9a, 0x38, 0x01, 0xcc, 0xce, 0x09, 0x8c, 0xe2, 0x68, 0xf8, 0x55, 0xd0, 0xdf, 0x57, 0x0c, 0xd6, 0xe7, 0xb9, 0xb1, 0x4b, 0xd9, 0xa5, 0xa9, 0x25, 0x4c, 0xbc, 0x31, 0x5b, 0xe6, 0xf8, 0xba, 0x1e, 0x25, 0x46, 0xdd, 0xd5, 0x69, 0xc5, 0xea, 0x19, 0xee, 0xd8, 0x35, 0x3b, 0xde, 0x5e } - -} -, -{{ - "RSASSA-PSS Signature Example 7.1", - /* Message to be signed */ - 255, - { 0x9e, 0xad, 0x0e, 0x01, 0x94, 0x56, 0x40, 0x67, 0x4e, 0xb4, 0x1c, 0xad, 0x43, 0x5e, 0x23, 0x74, 0xea, 0xef, 0xa8, 0xad, 0x71, 0x97, 0xd9, 0x79, 0x13, 0xc4, 0x49, 0x57, 0xd8, 0xd8, 0x3f, 0x40, 0xd7, 0x6e, 0xe6, 0x0e, 0x39, 0xbf, 0x9c, 0x0f, 0x9e, 0xaf, 0x30, 0x21, 0x42, 0x1a, 0x07, 0x4d, 0x1a, 0xde, 0x96, 0x2c, 0x6e, 0x9d, 0x3d, 0xc3, 0xbb, 0x17, 0x4f, 0xe4, 0xdf, 0xe6, 0x52, 0xb0, 0x91, 0x15, 0x49, 0x5b, 0x8f, 0xd2, 0x79, 0x41, 0x74, 0x02, 0x0a, 0x06, 0x02, 0xb5, 0xca, 0x51, 0x84, 0x8c, 0xfc, 0x96, 0xce, 0x5e, 0xb5, 0x7f, 0xc0, 0xa2, 0xad, 0xc1, 0xdd, 0xa3, 0x6a, 0x7c, 0xc4, 0x52, 0x64, 0x1a, 0x14, 0x91, 0x1b, 0x37, 0xe4, 0x5b, 0xfa, 0x11, 0xda, 0xa5, 0xc7, 0xec, 0xdb, 0x74, 0xf6, 0xd0, 0x10, 0x0d, 0x1d, 0x3e, 0x39, 0xe7, 0x52, 0x80, 0x0e, 0x20, 0x33, 0x97, 0xde, 0x02, 0x33, 0x07, 0x7b, 0x9a, 0x88, 0x85, 0x55, 0x37, 0xfa, 0xe9, 0x27, 0xf9, 0x24, 0x38, 0x0d, 0x78, 0x0f, 0x98, 0xe1, 0x8d, 0xcf, 0xf3, 0x9c, 0x5e, 0xa7, 0x41, 0xb1, 0x7d, 0x6f, 0xdd, 0x18, 0x85, 0xbc, 0x9d, 0x58, 0x14, 0x82, 0xd7, 0x71, 0xce, 0xb5, 0x62, 0xd7, 0x8a, 0x8b, 0xf8, 0x8f, 0x0c, 0x75, 0xb1, 0x13, 0x63, 0xe5, 0xe3, 0x6c, 0xd4, 0x79, 0xce, 0xb0, 0x54, 0x5f, 0x9d, 0xa8, 0x42, 0x03, 0xe0, 0xe6, 0xe5, 0x08, 0x37, 0x5c, 0xc9, 0xe8, 0x44, 0xb8, 0x8b, 0x7a, 0xc7, 0xa0, 0xa2, 0x01, 0xea, 0x0f, 0x1b, 0xee, 0x9a, 0x2c, 0x57, 0x79, 0x20, 0xca, 0x02, 0xc0, 0x1b, 0x9d, 0x83, 0x20, 0xe9, 0x74, 0xa5, 0x6f, 0x4e, 0xfb, 0x57, 0x63, 0xb9, 0x62, 0x55, 0xab, 0xbf, 0x80, 0x37, 0xbf, 0x18, 0x02, 0xcf, 0x01, 0x8f, 0x56, 0x37, 0x94, 0x93, 0xe5, 0x69, 0xa9 } -, - /* Salt */ - 20, - { 0xb7, 0x86, 0x7a, 0x59, 0x95, 0x8c, 0xb5, 0x43, 0x28, 0xf8, 0x77, 0x5e, 0x65, 0x46, 0xec, 0x06, 0xd2, 0x7e, 0xaa, 0x50 } -, - /* Signature */ - 129, - { 0x18, 0x7f, 0x39, 0x07, 0x23, 0xc8, 0x90, 0x25, 0x91, 0xf0, 0x15, 0x4b, 0xae, 0x6d, 0x4e, 0xcb, 0xff, 0xe0, 0x67, 0xf0, 0xe8, 0xb7, 0x95, 0x47, 0x6e, 0xa4, 0xf4, 0xd5, 0x1c, 0xcc, 0x81, 0x05, 0x20, 0xbb, 0x3c, 0xa9, 0xbc, 0xa7, 0xd0, 0xb1, 0xf2, 0xea, 0x8a, 0x17, 0xd8, 0x73, 0xfa, 0x27, 0x57, 0x0a, 0xcd, 0x64, 0x2e, 0x38, 0x08, 0x56, 0x1c, 0xb9, 0xe9, 0x75, 0xcc, 0xfd, 0x80, 0xb2, 0x3d, 0xc5, 0x77, 0x1c, 0xdb, 0x33, 0x06, 0xa5, 0xf2, 0x31, 0x59, 0xda, 0xcb, 0xd3, 0xaa, 0x2d, 0xb9, 0x3d, 0x46, 0xd7, 0x66, 0xe0, 0x9e, 0xd1, 0x5d, 0x90, 0x0a, 0xd8, 0x97, 0xa8, 0xd2, 0x74, 0xdc, 0x26, 0xb4, 0x7e, 0x99, 0x4a, 0x27, 0xe9, 0x7e, 0x22, 0x68, 0xa7, 0x66, 0x53, 0x3a, 0xe4, 0xb5, 0xe4, 0x2a, 0x2f, 0xca, 0xf7, 0x55, 0xc1, 0xc4, 0x79, 0x4b, 0x29, 0x4c, 0x60, 0x55, 0x58, 0x23 } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSASSA-PSS Signature Example 7.2", - /* Message to be signed */ - 57, - { 0x8d, 0x80, 0xd2, 0xd0, 0x8d, 0xbd, 0x19, 0xc1, 0x54, 0xdf, 0x3f, 0x14, 0x67, 0x3a, 0x14, 0xbd, 0x03, 0x73, 0x52, 0x31, 0xf2, 0x4e, 0x86, 0xbf, 0x15, 0x3d, 0x0e, 0x69, 0xe7, 0x4c, 0xbf, 0xf7, 0xb1, 0x83, 0x6e, 0x66, 0x4d, 0xe8, 0x3f, 0x68, 0x01, 0x24, 0x37, 0x0f, 0xc0, 0xf9, 0x6c, 0x9b, 0x65, 0xc0, 0x7a, 0x36, 0x6b, 0x64, 0x4c, 0x4a, 0xb3 } -, - /* Salt */ - 20, - { 0x0c, 0x09, 0x58, 0x22, 0x66, 0xdf, 0x08, 0x63, 0x10, 0x82, 0x1b, 0xa7, 0xe1, 0x8d, 0xf6, 0x4d, 0xfe, 0xe6, 0xde, 0x09 } -, - /* Signature */ - 129, - { 0x10, 0xfd, 0x89, 0x76, 0x8a, 0x60, 0xa6, 0x77, 0x88, 0xab, 0xb5, 0x85, 0x6a, 0x78, 0x7c, 0x85, 0x61, 0xf3, 0xed, 0xcf, 0x9a, 0x83, 0xe8, 0x98, 0xf7, 0xdc, 0x87, 0xab, 0x8c, 0xce, 0x79, 0x42, 0x9b, 0x43, 0xe5, 0x69, 0x06, 0x94, 0x1a, 0x88, 0x61, 0x94, 0xf1, 0x37, 0xe5, 0x91, 0xfe, 0x7c, 0x33, 0x95, 0x55, 0x36, 0x1f, 0xbb, 0xe1, 0xf2, 0x4f, 0xeb, 0x2d, 0x4b, 0xcd, 0xb8, 0x06, 0x01, 0xf3, 0x09, 0x6b, 0xc9, 0x13, 0x2d, 0xee, 0xa6, 0x0a, 0xe1, 0x30, 0x82, 0xf4, 0x4f, 0x9a, 0xd4, 0x1c, 0xd6, 0x28, 0x93, 0x6a, 0x4d, 0x51, 0x17, 0x6e, 0x42, 0xfc, 0x59, 0xcb, 0x76, 0xdb, 0x81, 0x5c, 0xe5, 0xab, 0x4d, 0xb9, 0x9a, 0x10, 0x4a, 0xaf, 0xea, 0x68, 0xf5, 0xd3, 0x30, 0x32, 0x9e, 0xbf, 0x25, 0x8d, 0x4e, 0xde, 0x16, 0x06, 0x4b, 0xd1, 0xd0, 0x03, 0x93, 0xd5, 0xe1, 0x57, 0x0e, 0xb8 } - -} -, -{ - "RSASSA-PSS Signature Example 7.3", - /* Message to be signed */ - 92, - { 0x80, 0x84, 0x05, 0xcd, 0xfc, 0x1a, 0x58, 0xb9, 0xbb, 0x03, 0x97, 0xc7, 0x20, 0x72, 0x2a, 0x81, 0xff, 0xfb, 0x76, 0x27, 0x8f, 0x33, 0x59, 0x17, 0xef, 0x9c, 0x47, 0x38, 0x14, 0xb3, 0xe0, 0x16, 0xba, 0x29, 0x73, 0xcd, 0x27, 0x65, 0xf8, 0xf3, 0xf8, 0x2d, 0x6c, 0xc3, 0x8a, 0xa7, 0xf8, 0x55, 0x18, 0x27, 0xfe, 0x8d, 0x1e, 0x38, 0x84, 0xb7, 0xe6, 0x1c, 0x94, 0x68, 0x3b, 0x8f, 0x82, 0xf1, 0x84, 0x3b, 0xda, 0xe2, 0x25, 0x7e, 0xee, 0xc9, 0x81, 0x2a, 0xd4, 0xc2, 0xcf, 0x28, 0x3c, 0x34, 0xe0, 0xb0, 0xae, 0x0f, 0xe3, 0xcb, 0x99, 0x0c, 0xf8, 0x8f, 0x2e, 0xf9 } -, - /* Salt */ - 20, - { 0x28, 0x03, 0x9d, 0xcf, 0xe1, 0x06, 0xd3, 0xb8, 0x29, 0x66, 0x11, 0x25, 0x8c, 0x4a, 0x56, 0x65, 0x1c, 0x9e, 0x92, 0xdd } -, - /* Signature */ - 129, - { 0x2b, 0x31, 0xfd, 0xe9, 0x98, 0x59, 0xb9, 0x77, 0xaa, 0x09, 0x58, 0x6d, 0x8e, 0x27, 0x46, 0x62, 0xb2, 0x5a, 0x2a, 0x64, 0x06, 0x40, 0xb4, 0x57, 0xf5, 0x94, 0x05, 0x1c, 0xb1, 0xe7, 0xf7, 0xa9, 0x11, 0x86, 0x54, 0x55, 0x24, 0x29, 0x26, 0xcf, 0x88, 0xfe, 0x80, 0xdf, 0xa3, 0xa7, 0x5b, 0xa9, 0x68, 0x98, 0x44, 0xa1, 0x1e, 0x63, 0x4a, 0x82, 0xb0, 0x75, 0xaf, 0xbd, 0x69, 0xc1, 0x2a, 0x0d, 0xf9, 0xd2, 0x5f, 0x84, 0xad, 0x49, 0x45, 0xdf, 0x3d, 0xc8, 0xfe, 0x90, 0xc3, 0xce, 0xfd, 0xf2, 0x6e, 0x95, 0xf0, 0x53, 0x43, 0x04, 0xb5, 0xbd, 0xba, 0x20, 0xd3, 0xe5, 0x64, 0x0a, 0x2e, 0xbf, 0xb8, 0x98, 0xaa, 0xc3, 0x5a, 0xe4, 0x0f, 0x26, 0xfc, 0xe5, 0x56, 0x3c, 0x2f, 0x9f, 0x24, 0xf3, 0x04, 0x2a, 0xf7, 0x6f, 0x3c, 0x70, 0x72, 0xd6, 0x87, 0xbb, 0xfb, 0x95, 0x9a, 0x88, 0x46, 0x0a, 0xf1 } - -} -, -{ - "RSASSA-PSS Signature Example 7.4", - /* Message to be signed */ - 231, - { 0xf3, 0x37, 0xb9, 0xba, 0xd9, 0x37, 0xde, 0x22, 0xa1, 0xa0, 0x52, 0xdf, 0xf1, 0x11, 0x34, 0xa8, 0xce, 0x26, 0x97, 0x62, 0x02, 0x98, 0x19, 0x39, 0xb9, 0x1e, 0x07, 0x15, 0xae, 0x5e, 0x60, 0x96, 0x49, 0xda, 0x1a, 0xdf, 0xce, 0xf3, 0xf4, 0xcc, 0xa5, 0x9b, 0x23, 0x83, 0x60, 0xe7, 0xd1, 0xe4, 0x96, 0xc7, 0xbf, 0x4b, 0x20, 0x4b, 0x5a, 0xcf, 0xf9, 0xbb, 0xd6, 0x16, 0x6a, 0x1d, 0x87, 0xa3, 0x6e, 0xf2, 0x24, 0x73, 0x73, 0x75, 0x10, 0x39, 0xf8, 0xa8, 0x00, 0xb8, 0x39, 0x98, 0x07, 0xb3, 0xa8, 0x5f, 0x44, 0x89, 0x34, 0x97, 0xc0, 0xd0, 0x5f, 0xb7, 0x01, 0x7b, 0x82, 0x22, 0x81, 0x52, 0xde, 0x6f, 0x25, 0xe6, 0x11, 0x6d, 0xcc, 0x75, 0x03, 0xc7, 0x86, 0xc8, 0x75, 0xc2, 0x8f, 0x3a, 0xa6, 0x07, 0xe9, 0x4a, 0xb0, 0xf1, 0x98, 0x63, 0xab, 0x1b, 0x50, 0x73, 0x77, 0x0b, 0x0c, 0xd5, 0xf5, 0x33, 0xac, 0xde, 0x30, 0xc6, 0xfb, 0x95, 0x3c, 0xf3, 0xda, 0x68, 0x02, 0x64, 0xe3, 0x0f, 0xc1, 0x1b, 0xff, 0x9a, 0x19, 0xbf, 0xfa, 0xb4, 0x77, 0x9b, 0x62, 0x23, 0xc3, 0xfb, 0x3f, 0xe0, 0xf7, 0x1a, 0xba, 0xde, 0x4e, 0xb7, 0xc0, 0x9c, 0x41, 0xe2, 0x4c, 0x22, 0xd2, 0x3f, 0xa1, 0x48, 0xe6, 0xa1, 0x73, 0xfe, 0xb6, 0x39, 0x84, 0xd1, 0xbc, 0x6e, 0xe3, 0xa0, 0x2d, 0x91, 0x5b, 0x75, 0x2c, 0xea, 0xf9, 0x2a, 0x30, 0x15, 0xec, 0xeb, 0x38, 0xca, 0x58, 0x6c, 0x68, 0x01, 0xb3, 0x7c, 0x34, 0xce, 0xfb, 0x2c, 0xff, 0x25, 0xea, 0x23, 0xc0, 0x86, 0x62, 0xdc, 0xab, 0x26, 0xa7, 0xa9, 0x3a, 0x28, 0x5d, 0x05, 0xd3, 0x04, 0x4c } -, - /* Salt */ - 20, - { 0xa7, 0x78, 0x21, 0xeb, 0xbb, 0xef, 0x24, 0x62, 0x8e, 0x4e, 0x12, 0xe1, 0xd0, 0xea, 0x96, 0xde, 0x39, 0x8f, 0x7b, 0x0f } -, - /* Signature */ - 129, - { 0x32, 0xc7, 0xca, 0x38, 0xff, 0x26, 0x94, 0x9a, 0x15, 0x00, 0x0c, 0x4b, 0xa0, 0x4b, 0x2b, 0x13, 0xb3, 0x5a, 0x38, 0x10, 0xe5, 0x68, 0x18, 0x4d, 0x7e, 0xca, 0xba, 0xa1, 0x66, 0xb7, 0xff, 0xab, 0xdd, 0xf2, 0xb6, 0xcf, 0x4b, 0xa0, 0x71, 0x24, 0x92, 0x37, 0x90, 0xf2, 0xe5, 0xb1, 0xa5, 0xbe, 0x04, 0x0a, 0xea, 0x36, 0xfe, 0x13, 0x2e, 0xc1, 0x30, 0xe1, 0xf1, 0x05, 0x67, 0x98, 0x2d, 0x17, 0xac, 0x3e, 0x89, 0xb8, 0xd2, 0x6c, 0x30, 0x94, 0x03, 0x4e, 0x76, 0x2d, 0x2e, 0x03, 0x12, 0x64, 0xf0, 0x11, 0x70, 0xbe, 0xec, 0xb3, 0xd1, 0x43, 0x9e, 0x05, 0x84, 0x6f, 0x25, 0x45, 0x83, 0x67, 0xa7, 0xd9, 0xc0, 0x20, 0x60, 0x44, 0x46, 0x72, 0x67, 0x1e, 0x64, 0xe8, 0x77, 0x86, 0x45, 0x59, 0xca, 0x19, 0xb2, 0x07, 0x4d, 0x58, 0x8a, 0x28, 0x1b, 0x58, 0x04, 0xd2, 0x37, 0x72, 0xfb, 0xbe, 0x19 } - -} -, -{ - "RSASSA-PSS Signature Example 7.5", - /* Message to be signed */ - 51, - { 0x45, 0x01, 0x3c, 0xeb, 0xaf, 0xd9, 0x60, 0xb2, 0x55, 0x47, 0x6a, 0x8e, 0x25, 0x98, 0xb9, 0xaa, 0x32, 0xef, 0xbe, 0x6d, 0xc1, 0xf3, 0x4f, 0x4a, 0x49, 0x8d, 0x8c, 0xf5, 0xa2, 0xb4, 0x54, 0x8d, 0x08, 0xc5, 0x5d, 0x5f, 0x95, 0xf7, 0xbc, 0xc9, 0x61, 0x91, 0x63, 0x05, 0x6f, 0x2d, 0x58, 0xb5, 0x2f, 0xa0, 0x32 } -, - /* Salt */ - 20, - { 0x9d, 0x5a, 0xd8, 0xeb, 0x45, 0x21, 0x34, 0xb6, 0x5d, 0xc3, 0xa9, 0x8b, 0x6a, 0x73, 0xb5, 0xf7, 0x41, 0x60, 0x9c, 0xd6 } -, - /* Signature */ - 129, - { 0x07, 0xeb, 0x65, 0x1d, 0x75, 0xf1, 0xb5, 0x2b, 0xc2, 0x63, 0xb2, 0xe1, 0x98, 0x33, 0x6e, 0x99, 0xfb, 0xeb, 0xc4, 0xf3, 0x32, 0x04, 0x9a, 0x92, 0x2a, 0x10, 0x81, 0x56, 0x07, 0xee, 0x2d, 0x98, 0x9d, 0xb3, 0xa4, 0x49, 0x5b, 0x7d, 0xcc, 0xd3, 0x8f, 0x58, 0xa2, 0x11, 0xfb, 0x7e, 0x19, 0x31, 0x71, 0xa3, 0xd8, 0x91, 0x13, 0x24, 0x37, 0xeb, 0xca, 0x44, 0xf3, 0x18, 0xb2, 0x80, 0x50, 0x9e, 0x52, 0xb5, 0xfa, 0x98, 0xfc, 0xce, 0x82, 0x05, 0xd9, 0x69, 0x7c, 0x8e, 0xe4, 0xb7, 0xff, 0x59, 0xd4, 0xc5, 0x9c, 0x79, 0x03, 0x8a, 0x19, 0x70, 0xbd, 0x2a, 0x0d, 0x45, 0x1e, 0xcd, 0xc5, 0xef, 0x11, 0xd9, 0x97, 0x9c, 0x9d, 0x35, 0xf8, 0xc7, 0x0a, 0x61, 0x63, 0x71, 0x76, 0x07, 0x89, 0x0d, 0x58, 0x6a, 0x7c, 0x6d, 0xc0, 0x1c, 0x79, 0xf8, 0x6a, 0x8f, 0x28, 0xe8, 0x52, 0x35, 0xf8, 0xc2, 0xf1 } - -} -, -{ - "RSASSA-PSS Signature Example 7.6", - /* Message to be signed */ - 184, - { 0x23, 0x58, 0x09, 0x70, 0x86, 0xc8, 0x99, 0x32, 0x3e, 0x75, 0xd9, 0xc9, 0x0d, 0x0c, 0x09, 0xf1, 0x2d, 0x9d, 0x54, 0xed, 0xfb, 0xdf, 0x70, 0xa9, 0xc2, 0xeb, 0x5a, 0x04, 0xd8, 0xf3, 0x6b, 0x9b, 0x2b, 0xdf, 0x2a, 0xab, 0xe0, 0xa5, 0xbd, 0xa1, 0x96, 0x89, 0x37, 0xf9, 0xd6, 0xeb, 0xd3, 0xb6, 0xb2, 0x57, 0xef, 0xb3, 0x13, 0x6d, 0x41, 0x31, 0xf9, 0xac, 0xb5, 0x9b, 0x85, 0xe2, 0x60, 0x2c, 0x2a, 0x3f, 0xcd, 0xc8, 0x35, 0x49, 0x4a, 0x1f, 0x4e, 0x5e, 0xc1, 0x8b, 0x22, 0x6c, 0x80, 0x23, 0x2b, 0x36, 0xa7, 0x5a, 0x45, 0xfd, 0xf0, 0x9a, 0x7e, 0xa9, 0xe9, 0x8e, 0xfb, 0xde, 0x14, 0x50, 0xd1, 0x19, 0x4b, 0xf1, 0x2e, 0x15, 0xa4, 0xc5, 0xf9, 0xeb, 0x5c, 0x0b, 0xce, 0x52, 0x69, 0xe0, 0xc3, 0xb2, 0x8c, 0xfa, 0xb6, 0x55, 0xd8, 0x1a, 0x61, 0xa2, 0x0b, 0x4b, 0xe2, 0xf5, 0x44, 0x59, 0xbb, 0x25, 0xa0, 0xdb, 0x94, 0xc5, 0x22, 0x18, 0xbe, 0x10, 0x9a, 0x74, 0x26, 0xde, 0x83, 0x01, 0x44, 0x24, 0x78, 0x9a, 0xaa, 0x90, 0xe5, 0x05, 0x6e, 0x63, 0x2a, 0x69, 0x81, 0x15, 0xe2, 0x82, 0xc1, 0xa5, 0x64, 0x10, 0xf2, 0x6c, 0x20, 0x72, 0xf1, 0x93, 0x48, 0x1a, 0x9d, 0xcd, 0x88, 0x05, 0x72, 0x00, 0x5e, 0x64, 0xf4, 0x08, 0x2e, 0xcf } -, - /* Salt */ - 20, - { 0x3f, 0x2e, 0xfc, 0x59, 0x58, 0x80, 0xa7, 0xd4, 0x7f, 0xcf, 0x3c, 0xba, 0x04, 0x98, 0x3e, 0xa5, 0x4c, 0x4b, 0x73, 0xfb } -, - /* Signature */ - 129, - { 0x18, 0xda, 0x3c, 0xdc, 0xfe, 0x79, 0xbf, 0xb7, 0x7f, 0xd9, 0xc3, 0x2f, 0x37, 0x7a, 0xd3, 0x99, 0x14, 0x6f, 0x0a, 0x8e, 0x81, 0x06, 0x20, 0x23, 0x32, 0x71, 0xa6, 0xe3, 0xed, 0x32, 0x48, 0x90, 0x3f, 0x5c, 0xdc, 0x92, 0xdc, 0x79, 0xb5, 0x5d, 0x3e, 0x11, 0x61, 0x5a, 0xa0, 0x56, 0xa7, 0x95, 0x85, 0x37, 0x92, 0xa3, 0x99, 0x8c, 0x34, 0x9c, 0xa5, 0xc4, 0x57, 0xe8, 0xca, 0x7d, 0x29, 0xd7, 0x96, 0xaa, 0x24, 0xf8, 0x34, 0x91, 0x70, 0x9b, 0xef, 0xcf, 0xb1, 0x51, 0x0e, 0xa5, 0x13, 0xc9, 0x28, 0x29, 0xa3, 0xf0, 0x0b, 0x10, 0x4f, 0x65, 0x56, 0x34, 0xf3, 0x20, 0x75, 0x2e, 0x13, 0x0e, 0xc0, 0xcc, 0xf6, 0x75, 0x4f, 0xf8, 0x93, 0xdb, 0x30, 0x29, 0x32, 0xbb, 0x02, 0x5e, 0xb6, 0x0e, 0x87, 0x82, 0x25, 0x98, 0xfc, 0x61, 0x9e, 0x0e, 0x98, 0x17, 0x37, 0xa9, 0xa4, 0xc4, 0x15, 0x2d, 0x33 } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 8: A 1031-bit RSA Key Pair", -{ - /* RSA modulus n */ - 129, - { 0x49, 0x53, 0x70, 0xa1, 0xfb, 0x18, 0x54, 0x3c, 0x16, 0xd3, 0x63, 0x1e, 0x31, 0x63, 0x25, 0x5d, 0xf6, 0x2b, 0xe6, 0xee, 0xe8, 0x90, 0xd5, 0xf2, 0x55, 0x09, 0xe4, 0xf7, 0x78, 0xa8, 0xea, 0x6f, 0xbb, 0xbc, 0xdf, 0x85, 0xdf, 0xf6, 0x4e, 0x0d, 0x97, 0x20, 0x03, 0xab, 0x36, 0x81, 0xfb, 0xba, 0x6d, 0xd4, 0x1f, 0xd5, 0x41, 0x82, 0x9b, 0x2e, 0x58, 0x2d, 0xe9, 0xf2, 0xa4, 0xa4, 0xe0, 0xa2, 0xd0, 0x90, 0x0b, 0xef, 0x47, 0x53, 0xdb, 0x3c, 0xee, 0x0e, 0xe0, 0x6c, 0x7d, 0xfa, 0xe8, 0xb1, 0xd5, 0x3b, 0x59, 0x53, 0x21, 0x8f, 0x9c, 0xce, 0xea, 0x69, 0x5b, 0x08, 0x66, 0x8e, 0xde, 0xaa, 0xdc, 0xed, 0x94, 0x63, 0xb1, 0xd7, 0x90, 0xd5, 0xeb, 0xf2, 0x7e, 0x91, 0x15, 0xb4, 0x6c, 0xad, 0x4d, 0x9a, 0x2b, 0x8e, 0xfa, 0xb0, 0x56, 0x1b, 0x08, 0x10, 0x34, 0x47, 0x39, 0xad, 0xa0, 0x73, 0x3f } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 128, - { 0x6c, 0x66, 0xff, 0xe9, 0x89, 0x80, 0xc3, 0x8f, 0xcd, 0xea, 0xb5, 0x15, 0x98, 0x98, 0x83, 0x61, 0x65, 0xf4, 0xb4, 0xb8, 0x17, 0xc4, 0xf6, 0xa8, 0xd4, 0x86, 0xee, 0x4e, 0xa9, 0x13, 0x0f, 0xe9, 0xb9, 0x09, 0x2b, 0xd1, 0x36, 0xd1, 0x84, 0xf9, 0x5f, 0x50, 0x4a, 0x60, 0x7e, 0xac, 0x56, 0x58, 0x46, 0xd2, 0xfd, 0xd6, 0x59, 0x7a, 0x89, 0x67, 0xc7, 0x39, 0x6e, 0xf9, 0x5a, 0x6e, 0xee, 0xbb, 0x45, 0x78, 0xa6, 0x43, 0x96, 0x6d, 0xca, 0x4d, 0x8e, 0xe3, 0xde, 0x84, 0x2d, 0xe6, 0x32, 0x79, 0xc6, 0x18, 0x15, 0x9c, 0x1a, 0xb5, 0x4a, 0x89, 0x43, 0x7b, 0x6a, 0x61, 0x20, 0xe4, 0x93, 0x0a, 0xfb, 0x52, 0xa4, 0xba, 0x6c, 0xed, 0x8a, 0x49, 0x47, 0xac, 0x64, 0xb3, 0x0a, 0x34, 0x97, 0xcb, 0xe7, 0x01, 0xc2, 0xd6, 0x26, 0x6d, 0x51, 0x72, 0x19, 0xad, 0x0e, 0xc6, 0xd3, 0x47, 0xdb, 0xe9 } -, - /* Prime p */ - 65, - { 0x08, 0xda, 0xd7, 0xf1, 0x13, 0x63, 0xfa, 0xa6, 0x23, 0xd5, 0xd6, 0xd5, 0xe8, 0xa3, 0x19, 0x32, 0x8d, 0x82, 0x19, 0x0d, 0x71, 0x27, 0xd2, 0x84, 0x6c, 0x43, 0x9b, 0x0a, 0xb7, 0x26, 0x19, 0xb0, 0xa4, 0x3a, 0x95, 0x32, 0x0e, 0x4e, 0xc3, 0x4f, 0xc3, 0xa9, 0xce, 0xa8, 0x76, 0x42, 0x23, 0x05, 0xbd, 0x76, 0xc5, 0xba, 0x7b, 0xe9, 0xe2, 0xf4, 0x10, 0xc8, 0x06, 0x06, 0x45, 0xa1, 0xd2, 0x9e, 0xdb } -, - /* Prime q */ - 65, - { 0x08, 0x47, 0xe7, 0x32, 0x37, 0x6f, 0xc7, 0x90, 0x0f, 0x89, 0x8e, 0xa8, 0x2e, 0xb2, 0xb0, 0xfc, 0x41, 0x85, 0x65, 0xfd, 0xae, 0x62, 0xf7, 0xd9, 0xec, 0x4c, 0xe2, 0x21, 0x7b, 0x97, 0x99, 0x0d, 0xd2, 0x72, 0xdb, 0x15, 0x7f, 0x99, 0xf6, 0x3c, 0x0d, 0xcb, 0xb9, 0xfb, 0xac, 0xdb, 0xd4, 0xc4, 0xda, 0xdb, 0x6d, 0xf6, 0x77, 0x56, 0x35, 0x8c, 0xa4, 0x17, 0x48, 0x25, 0xb4, 0x8f, 0x49, 0x70, 0x6d } -, - /* p's CRT exponent dP */ - 65, - { 0x05, 0xc2, 0xa8, 0x3c, 0x12, 0x4b, 0x36, 0x21, 0xa2, 0xaa, 0x57, 0xea, 0x2c, 0x3e, 0xfe, 0x03, 0x5e, 0xff, 0x45, 0x60, 0xf3, 0x3d, 0xde, 0xbb, 0x7a, 0xda, 0xb8, 0x1f, 0xce, 0x69, 0xa0, 0xc8, 0xc2, 0xed, 0xc1, 0x65, 0x20, 0xdd, 0xa8, 0x3d, 0x59, 0xa2, 0x3b, 0xe8, 0x67, 0x96, 0x3a, 0xc6, 0x5f, 0x2c, 0xc7, 0x10, 0xbb, 0xcf, 0xb9, 0x6e, 0xe1, 0x03, 0xde, 0xb7, 0x71, 0xd1, 0x05, 0xfd, 0x85 } -, - /* q's CRT exponent dQ */ - 65, - { 0x04, 0xca, 0xe8, 0xaa, 0x0d, 0x9f, 0xaa, 0x16, 0x5c, 0x87, 0xb6, 0x82, 0xec, 0x14, 0x0b, 0x8e, 0xd3, 0xb5, 0x0b, 0x24, 0x59, 0x4b, 0x7a, 0x3b, 0x2c, 0x22, 0x0b, 0x36, 0x69, 0xbb, 0x81, 0x9f, 0x98, 0x4f, 0x55, 0x31, 0x0a, 0x1a, 0xe7, 0x82, 0x36, 0x51, 0xd4, 0xa0, 0x2e, 0x99, 0x44, 0x79, 0x72, 0x59, 0x51, 0x39, 0x36, 0x34, 0x34, 0xe5, 0xe3, 0x0a, 0x7e, 0x7d, 0x24, 0x15, 0x51, 0xe1, 0xb9 } -, - /* CRT coefficient qInv */ - 65, - { 0x07, 0xd3, 0xe4, 0x7b, 0xf6, 0x86, 0x60, 0x0b, 0x11, 0xac, 0x28, 0x3c, 0xe8, 0x8d, 0xbb, 0x3f, 0x60, 0x51, 0xe8, 0xef, 0xd0, 0x46, 0x80, 0xe4, 0x4c, 0x17, 0x1e, 0xf5, 0x31, 0xb8, 0x0b, 0x2b, 0x7c, 0x39, 0xfc, 0x76, 0x63, 0x20, 0xe2, 0xcf, 0x15, 0xd8, 0xd9, 0x98, 0x20, 0xe9, 0x6f, 0xf3, 0x0d, 0xc6, 0x96, 0x91, 0x83, 0x9c, 0x4b, 0x40, 0xd7, 0xb0, 0x6e, 0x45, 0x30, 0x7d, 0xc9, 0x1f, 0x3f } - -} -, -{{ - "RSASSA-PSS Signature Example 8.1", - /* Message to be signed */ - 172, - { 0x81, 0x33, 0x2f, 0x4b, 0xe6, 0x29, 0x48, 0x41, 0x5e, 0xa1, 0xd8, 0x99, 0x79, 0x2e, 0xea, 0xcf, 0x6c, 0x6e, 0x1d, 0xb1, 0xda, 0x8b, 0xe1, 0x3b, 0x5c, 0xea, 0x41, 0xdb, 0x2f, 0xed, 0x46, 0x70, 0x92, 0xe1, 0xff, 0x39, 0x89, 0x14, 0xc7, 0x14, 0x25, 0x97, 0x75, 0xf5, 0x95, 0xf8, 0x54, 0x7f, 0x73, 0x56, 0x92, 0xa5, 0x75, 0xe6, 0x92, 0x3a, 0xf7, 0x8f, 0x22, 0xc6, 0x99, 0x7d, 0xdb, 0x90, 0xfb, 0x6f, 0x72, 0xd7, 0xbb, 0x0d, 0xd5, 0x74, 0x4a, 0x31, 0xde, 0xcd, 0x3d, 0xc3, 0x68, 0x58, 0x49, 0x83, 0x6e, 0xd3, 0x4a, 0xec, 0x59, 0x63, 0x04, 0xad, 0x11, 0x84, 0x3c, 0x4f, 0x88, 0x48, 0x9f, 0x20, 0x97, 0x35, 0xf5, 0xfb, 0x7f, 0xda, 0xf7, 0xce, 0xc8, 0xad, 0xdc, 0x58, 0x18, 0x16, 0x8f, 0x88, 0x0a, 0xcb, 0xf4, 0x90, 0xd5, 0x10, 0x05, 0xb7, 0xa8, 0xe8, 0x4e, 0x43, 0xe5, 0x42, 0x87, 0x97, 0x75, 0x71, 0xdd, 0x99, 0xee, 0xa4, 0xb1, 0x61, 0xeb, 0x2d, 0xf1, 0xf5, 0x10, 0x8f, 0x12, 0xa4, 0x14, 0x2a, 0x83, 0x32, 0x2e, 0xdb, 0x05, 0xa7, 0x54, 0x87, 0xa3, 0x43, 0x5c, 0x9a, 0x78, 0xce, 0x53, 0xed, 0x93, 0xbc, 0x55, 0x08, 0x57, 0xd7, 0xa9, 0xfb } -, - /* Salt */ - 20, - { 0x1d, 0x65, 0x49, 0x1d, 0x79, 0xc8, 0x64, 0xb3, 0x73, 0x00, 0x9b, 0xe6, 0xf6, 0xf2, 0x46, 0x7b, 0xac, 0x4c, 0x78, 0xfa } -, - /* Signature */ - 129, - { 0x02, 0x62, 0xac, 0x25, 0x4b, 0xfa, 0x77, 0xf3, 0xc1, 0xac, 0xa2, 0x2c, 0x51, 0x79, 0xf8, 0xf0, 0x40, 0x42, 0x2b, 0x3c, 0x5b, 0xaf, 0xd4, 0x0a, 0x8f, 0x21, 0xcf, 0x0f, 0xa5, 0xa6, 0x67, 0xcc, 0xd5, 0x99, 0x3d, 0x42, 0xdb, 0xaf, 0xb4, 0x09, 0xc5, 0x20, 0xe2, 0x5f, 0xce, 0x2b, 0x1e, 0xe1, 0xe7, 0x16, 0x57, 0x7f, 0x1e, 0xfa, 0x17, 0xf3, 0xda, 0x28, 0x05, 0x2f, 0x40, 0xf0, 0x41, 0x9b, 0x23, 0x10, 0x6d, 0x78, 0x45, 0xaa, 0xf0, 0x11, 0x25, 0xb6, 0x98, 0xe7, 0xa4, 0xdf, 0xe9, 0x2d, 0x39, 0x67, 0xbb, 0x00, 0xc4, 0xd0, 0xd3, 0x5b, 0xa3, 0x55, 0x2a, 0xb9, 0xa8, 0xb3, 0xee, 0xf0, 0x7c, 0x7f, 0xec, 0xdb, 0xc5, 0x42, 0x4a, 0xc4, 0xdb, 0x1e, 0x20, 0xcb, 0x37, 0xd0, 0xb2, 0x74, 0x47, 0x69, 0x94, 0x0e, 0xa9, 0x07, 0xe1, 0x7f, 0xbb, 0xca, 0x67, 0x3b, 0x20, 0x52, 0x23, 0x80, 0xc5 } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSASSA-PSS Signature Example 8.2", - /* Message to be signed */ - 38, - { 0xe2, 0xf9, 0x6e, 0xaf, 0x0e, 0x05, 0xe7, 0xba, 0x32, 0x6e, 0xcc, 0xa0, 0xba, 0x7f, 0xd2, 0xf7, 0xc0, 0x23, 0x56, 0xf3, 0xce, 0xde, 0x9d, 0x0f, 0xaa, 0xbf, 0x4f, 0xcc, 0x8e, 0x60, 0xa9, 0x73, 0xe5, 0x59, 0x5f, 0xd9, 0xea, 0x08 } -, - /* Salt */ - 20, - { 0x43, 0x5c, 0x09, 0x8a, 0xa9, 0x90, 0x9e, 0xb2, 0x37, 0x7f, 0x12, 0x48, 0xb0, 0x91, 0xb6, 0x89, 0x87, 0xff, 0x18, 0x38 } -, - /* Signature */ - 129, - { 0x27, 0x07, 0xb9, 0xad, 0x51, 0x15, 0xc5, 0x8c, 0x94, 0xe9, 0x32, 0xe8, 0xec, 0x0a, 0x28, 0x0f, 0x56, 0x33, 0x9e, 0x44, 0xa1, 0xb5, 0x8d, 0x4d, 0xdc, 0xff, 0x2f, 0x31, 0x2e, 0x5f, 0x34, 0xdc, 0xfe, 0x39, 0xe8, 0x9c, 0x6a, 0x94, 0xdc, 0xee, 0x86, 0xdb, 0xbd, 0xae, 0x5b, 0x79, 0xba, 0x4e, 0x08, 0x19, 0xa9, 0xe7, 0xbf, 0xd9, 0xd9, 0x82, 0xe7, 0xee, 0x6c, 0x86, 0xee, 0x68, 0x39, 0x6e, 0x8b, 0x3a, 0x14, 0xc9, 0xc8, 0xf3, 0x4b, 0x17, 0x8e, 0xb7, 0x41, 0xf9, 0xd3, 0xf1, 0x21, 0x10, 0x9b, 0xf5, 0xc8, 0x17, 0x2f, 0xad, 0xa2, 0xe7, 0x68, 0xf9, 0xea, 0x14, 0x33, 0x03, 0x2c, 0x00, 0x4a, 0x8a, 0xa0, 0x7e, 0xb9, 0x90, 0x00, 0x0a, 0x48, 0xdc, 0x94, 0xc8, 0xba, 0xc8, 0xaa, 0xbe, 0x2b, 0x09, 0xb1, 0xaa, 0x46, 0xc0, 0xa2, 0xaa, 0x0e, 0x12, 0xf6, 0x3f, 0xbb, 0xa7, 0x75, 0xba, 0x7e } - -} -, -{ - "RSASSA-PSS Signature Example 8.3", - /* Message to be signed */ - 151, - { 0xe3, 0x5c, 0x6e, 0xd9, 0x8f, 0x64, 0xa6, 0xd5, 0xa6, 0x48, 0xfc, 0xab, 0x8a, 0xdb, 0x16, 0x33, 0x1d, 0xb3, 0x2e, 0x5d, 0x15, 0xc7, 0x4a, 0x40, 0xed, 0xf9, 0x4c, 0x3d, 0xc4, 0xa4, 0xde, 0x79, 0x2d, 0x19, 0x08, 0x89, 0xf2, 0x0f, 0x1e, 0x24, 0xed, 0x12, 0x05, 0x4a, 0x6b, 0x28, 0x79, 0x8f, 0xcb, 0x42, 0xd1, 0xc5, 0x48, 0x76, 0x9b, 0x73, 0x4c, 0x96, 0x37, 0x31, 0x42, 0x09, 0x2a, 0xed, 0x27, 0x76, 0x03, 0xf4, 0x73, 0x8d, 0xf4, 0xdc, 0x14, 0x46, 0x58, 0x6d, 0x0e, 0xc6, 0x4d, 0xa4, 0xfb, 0x60, 0x53, 0x6d, 0xb2, 0xae, 0x17, 0xfc, 0x7e, 0x3c, 0x04, 0xbb, 0xfb, 0xbb, 0xd9, 0x07, 0xbf, 0x11, 0x7c, 0x08, 0x63, 0x6f, 0xa1, 0x6f, 0x95, 0xf5, 0x1a, 0x62, 0x16, 0x93, 0x4d, 0x3e, 0x34, 0xf8, 0x50, 0x30, 0xf1, 0x7b, 0xbb, 0xc5, 0xba, 0x69, 0x14, 0x40, 0x58, 0xaf, 0xf0, 0x81, 0xe0, 0xb1, 0x9c, 0xf0, 0x3c, 0x17, 0x19, 0x5c, 0x5e, 0x88, 0x8b, 0xa5, 0x8f, 0x6f, 0xe0, 0xa0, 0x2e, 0x5c, 0x3b, 0xda, 0x97, 0x19, 0xa7 } -, - /* Salt */ - 20, - { 0xc6, 0xeb, 0xbe, 0x76, 0xdf, 0x0c, 0x4a, 0xea, 0x32, 0xc4, 0x74, 0x17, 0x5b, 0x2f, 0x13, 0x68, 0x62, 0xd0, 0x45, 0x29 } -, - /* Signature */ - 129, - { 0x2a, 0xd2, 0x05, 0x09, 0xd7, 0x8c, 0xf2, 0x6d, 0x1b, 0x6c, 0x40, 0x61, 0x46, 0x08, 0x6e, 0x4b, 0x0c, 0x91, 0xa9, 0x1c, 0x2b, 0xd1, 0x64, 0xc8, 0x7b, 0x96, 0x6b, 0x8f, 0xaa, 0x42, 0xaa, 0x0c, 0xa4, 0x46, 0x02, 0x23, 0x23, 0xba, 0x4b, 0x1a, 0x1b, 0x89, 0x70, 0x6d, 0x7f, 0x4c, 0x3b, 0xe5, 0x7d, 0x7b, 0x69, 0x70, 0x2d, 0x16, 0x8a, 0xb5, 0x95, 0x5e, 0xe2, 0x90, 0x35, 0x6b, 0x8c, 0x4a, 0x29, 0xed, 0x46, 0x7d, 0x54, 0x7e, 0xc2, 0x3c, 0xba, 0xdf, 0x28, 0x6c, 0xcb, 0x58, 0x63, 0xc6, 0x67, 0x9d, 0xa4, 0x67, 0xfc, 0x93, 0x24, 0xa1, 0x51, 0xc7, 0xec, 0x55, 0xaa, 0xc6, 0xdb, 0x40, 0x84, 0xf8, 0x27, 0x26, 0x82, 0x5c, 0xfe, 0x1a, 0xa4, 0x21, 0xbc, 0x64, 0x04, 0x9f, 0xb4, 0x2f, 0x23, 0x14, 0x8f, 0x9c, 0x25, 0xb2, 0xdc, 0x30, 0x04, 0x37, 0xc3, 0x8d, 0x42, 0x8a, 0xa7, 0x5f, 0x96 } - -} -, -{ - "RSASSA-PSS Signature Example 8.4", - /* Message to be signed */ - 204, - { 0xdb, 0xc5, 0xf7, 0x50, 0xa7, 0xa1, 0x4b, 0xe2, 0xb9, 0x3e, 0x83, 0x8d, 0x18, 0xd1, 0x4a, 0x86, 0x95, 0xe5, 0x2e, 0x8a, 0xdd, 0x9c, 0x0a, 0xc7, 0x33, 0xb8, 0xf5, 0x6d, 0x27, 0x47, 0xe5, 0x29, 0xa0, 0xcc, 0xa5, 0x32, 0xdd, 0x49, 0xb9, 0x02, 0xae, 0xfe, 0xd5, 0x14, 0x44, 0x7f, 0x9e, 0x81, 0xd1, 0x61, 0x95, 0xc2, 0x85, 0x38, 0x68, 0xcb, 0x9b, 0x30, 0xf7, 0xd0, 0xd4, 0x95, 0xc6, 0x9d, 0x01, 0xb5, 0xc5, 0xd5, 0x0b, 0x27, 0x04, 0x5d, 0xb3, 0x86, 0x6c, 0x23, 0x24, 0xa4, 0x4a, 0x11, 0x0b, 0x17, 0x17, 0x74, 0x6d, 0xe4, 0x57, 0xd1, 0xc8, 0xc4, 0x5c, 0x3c, 0xd2, 0xa9, 0x29, 0x70, 0xc3, 0xd5, 0x96, 0x32, 0x05, 0x5d, 0x4c, 0x98, 0xa4, 0x1d, 0x6e, 0x99, 0xe2, 0xa3, 0xdd, 0xd5, 0xf7, 0xf9, 0x97, 0x9a, 0xb3, 0xcd, 0x18, 0xf3, 0x75, 0x05, 0xd2, 0x51, 0x41, 0xde, 0x2a, 0x1b, 0xff, 0x17, 0xb3, 0xa7, 0xdc, 0xe9, 0x41, 0x9e, 0xcc, 0x38, 0x5c, 0xf1, 0x1d, 0x72, 0x84, 0x0f, 0x19, 0x95, 0x3f, 0xd0, 0x50, 0x92, 0x51, 0xf6, 0xca, 0xfd, 0xe2, 0x89, 0x3d, 0x0e, 0x75, 0xc7, 0x81, 0xba, 0x7a, 0x50, 0x12, 0xca, 0x40, 0x1a, 0x4f, 0xa9, 0x9e, 0x04, 0xb3, 0xc3, 0x24, 0x9f, 0x92, 0x6d, 0x5a, 0xfe, 0x82, 0xcc, 0x87, 0xda, 0xb2, 0x2c, 0x3c, 0x1b, 0x10, 0x5d, 0xe4, 0x8e, 0x34, 0xac, 0xe9, 0xc9, 0x12, 0x4e, 0x59, 0x59, 0x7a, 0xc7, 0xeb, 0xf8 } -, - /* Salt */ - 20, - { 0x02, 0x1f, 0xdc, 0xc6, 0xeb, 0xb5, 0xe1, 0x9b, 0x1c, 0xb1, 0x6e, 0x9c, 0x67, 0xf2, 0x76, 0x81, 0x65, 0x7f, 0xe2, 0x0a } -, - /* Signature */ - 129, - { 0x1e, 0x24, 0xe6, 0xe5, 0x86, 0x28, 0xe5, 0x17, 0x50, 0x44, 0xa9, 0xeb, 0x6d, 0x83, 0x7d, 0x48, 0xaf, 0x12, 0x60, 0xb0, 0x52, 0x0e, 0x87, 0x32, 0x7d, 0xe7, 0x89, 0x7e, 0xe4, 0xd5, 0xb9, 0xf0, 0xdf, 0x0b, 0xe3, 0xe0, 0x9e, 0xd4, 0xde, 0xa8, 0xc1, 0x45, 0x4f, 0xf3, 0x42, 0x3b, 0xb0, 0x8e, 0x17, 0x93, 0x24, 0x5a, 0x9d, 0xf8, 0xbf, 0x6a, 0xb3, 0x96, 0x8c, 0x8e, 0xdd, 0xc3, 0xb5, 0x32, 0x85, 0x71, 0xc7, 0x7f, 0x09, 0x1c, 0xc5, 0x78, 0x57, 0x69, 0x12, 0xdf, 0xeb, 0xd1, 0x64, 0xb9, 0xde, 0x54, 0x54, 0xfe, 0x0b, 0xe1, 0xc1, 0xf6, 0x38, 0x5b, 0x32, 0x83, 0x60, 0xce, 0x67, 0xec, 0x7a, 0x05, 0xf6, 0xe3, 0x0e, 0xb4, 0x5c, 0x17, 0xc4, 0x8a, 0xc7, 0x00, 0x41, 0xd2, 0xca, 0xb6, 0x7f, 0x0a, 0x2a, 0xe7, 0xaa, 0xfd, 0xcc, 0x8d, 0x24, 0x5e, 0xa3, 0x44, 0x2a, 0x63, 0x00, 0xcc, 0xc7 } - -} -, -{ - "RSASSA-PSS Signature Example 8.5", - /* Message to be signed */ - 101, - { 0x04, 0xdc, 0x25, 0x1b, 0xe7, 0x2e, 0x88, 0xe5, 0x72, 0x34, 0x85, 0xb6, 0x38, 0x3a, 0x63, 0x7e, 0x2f, 0xef, 0xe0, 0x76, 0x60, 0xc5, 0x19, 0xa5, 0x60, 0xb8, 0xbc, 0x18, 0xbd, 0xed, 0xb8, 0x6e, 0xae, 0x23, 0x64, 0xea, 0x53, 0xba, 0x9d, 0xca, 0x6e, 0xb3, 0xd2, 0xe7, 0xd6, 0xb8, 0x06, 0xaf, 0x42, 0xb3, 0xe8, 0x7f, 0x29, 0x1b, 0x4a, 0x88, 0x81, 0xd5, 0xbf, 0x57, 0x2c, 0xc9, 0xa8, 0x5e, 0x19, 0xc8, 0x6a, 0xcb, 0x28, 0xf0, 0x98, 0xf9, 0xda, 0x03, 0x83, 0xc5, 0x66, 0xd3, 0xc0, 0xf5, 0x8c, 0xfd, 0x8f, 0x39, 0x5d, 0xcf, 0x60, 0x2e, 0x5c, 0xd4, 0x0e, 0x8c, 0x71, 0x83, 0xf7, 0x14, 0x99, 0x6e, 0x22, 0x97, 0xef } -, - /* Salt */ - 20, - { 0xc5, 0x58, 0xd7, 0x16, 0x7c, 0xbb, 0x45, 0x08, 0xad, 0xa0, 0x42, 0x97, 0x1e, 0x71, 0xb1, 0x37, 0x7e, 0xea, 0x42, 0x69 } -, - /* Signature */ - 129, - { 0x33, 0x34, 0x1b, 0xa3, 0x57, 0x6a, 0x13, 0x0a, 0x50, 0xe2, 0xa5, 0xcf, 0x86, 0x79, 0x22, 0x43, 0x88, 0xd5, 0x69, 0x3f, 0x5a, 0xcc, 0xc2, 0x35, 0xac, 0x95, 0xad, 0xd6, 0x8e, 0x5e, 0xb1, 0xee, 0xc3, 0x16, 0x66, 0xd0, 0xca, 0x7a, 0x1c, 0xda, 0x6f, 0x70, 0xa1, 0xaa, 0x76, 0x2c, 0x05, 0x75, 0x2a, 0x51, 0x95, 0x0c, 0xdb, 0x8a, 0xf3, 0xc5, 0x37, 0x9f, 0x18, 0xcf, 0xe6, 0xb5, 0xbc, 0x55, 0xa4, 0x64, 0x82, 0x26, 0xa1, 0x5e, 0x91, 0x2e, 0xf1, 0x9a, 0xd7, 0x7a, 0xde, 0xea, 0x91, 0x1d, 0x67, 0xcf, 0xef, 0xd6, 0x9b, 0xa4, 0x3f, 0xa4, 0x11, 0x91, 0x35, 0xff, 0x64, 0x21, 0x17, 0xba, 0x98, 0x5a, 0x7e, 0x01, 0x00, 0x32, 0x5e, 0x95, 0x19, 0xf1, 0xca, 0x6a, 0x92, 0x16, 0xbd, 0xa0, 0x55, 0xb5, 0x78, 0x50, 0x15, 0x29, 0x11, 0x25, 0xe9, 0x0d, 0xcd, 0x07, 0xa2, 0xca, 0x96, 0x73, 0xee } - -} -, -{ - "RSASSA-PSS Signature Example 8.6", - /* Message to be signed */ - 132, - { 0x0e, 0xa3, 0x7d, 0xf9, 0xa6, 0xfe, 0xa4, 0xa8, 0xb6, 0x10, 0x37, 0x3c, 0x24, 0xcf, 0x39, 0x0c, 0x20, 0xfa, 0x6e, 0x21, 0x35, 0xc4, 0x00, 0xc8, 0xa3, 0x4f, 0x5c, 0x18, 0x3a, 0x7e, 0x8e, 0xa4, 0xc9, 0xae, 0x09, 0x0e, 0xd3, 0x17, 0x59, 0xf4, 0x2d, 0xc7, 0x77, 0x19, 0xcc, 0xa4, 0x00, 0xec, 0xdc, 0xc5, 0x17, 0xac, 0xfc, 0x7a, 0xc6, 0x90, 0x26, 0x75, 0xb2, 0xef, 0x30, 0xc5, 0x09, 0x66, 0x5f, 0x33, 0x21, 0x48, 0x2f, 0xc6, 0x9a, 0x9f, 0xb5, 0x70, 0xd1, 0x5e, 0x01, 0xc8, 0x45, 0xd0, 0xd8, 0xe5, 0x0d, 0x2a, 0x24, 0xcb, 0xf1, 0xcf, 0x0e, 0x71, 0x49, 0x75, 0xa5, 0xdb, 0x7b, 0x18, 0xd9, 0xe9, 0xe9, 0xcb, 0x91, 0xb5, 0xcb, 0x16, 0x86, 0x90, 0x60, 0xed, 0x18, 0xb7, 0xb5, 0x62, 0x45, 0x50, 0x3f, 0x0c, 0xaf, 0x90, 0x35, 0x2b, 0x8d, 0xe8, 0x1c, 0xb5, 0xa1, 0xd9, 0xc6, 0x33, 0x60, 0x92, 0xf0, 0xcd } -, - /* Salt */ - 20, - { 0x76, 0xfd, 0x4e, 0x64, 0xfd, 0xc9, 0x8e, 0xb9, 0x27, 0xa0, 0x40, 0x3e, 0x35, 0xa0, 0x84, 0xe7, 0x6b, 0xa9, 0xf9, 0x2a } -, - /* Signature */ - 129, - { 0x1e, 0xd1, 0xd8, 0x48, 0xfb, 0x1e, 0xdb, 0x44, 0x12, 0x9b, 0xd9, 0xb3, 0x54, 0x79, 0x5a, 0xf9, 0x7a, 0x06, 0x9a, 0x7a, 0x00, 0xd0, 0x15, 0x10, 0x48, 0x59, 0x3e, 0x0c, 0x72, 0xc3, 0x51, 0x7f, 0xf9, 0xff, 0x2a, 0x41, 0xd0, 0xcb, 0x5a, 0x0a, 0xc8, 0x60, 0xd7, 0x36, 0xa1, 0x99, 0x70, 0x4f, 0x7c, 0xb6, 0xa5, 0x39, 0x86, 0xa8, 0x8b, 0xbd, 0x8a, 0xbc, 0xc0, 0x07, 0x6a, 0x2c, 0xe8, 0x47, 0x88, 0x00, 0x31, 0x52, 0x5d, 0x44, 0x9d, 0xa2, 0xac, 0x78, 0x35, 0x63, 0x74, 0xc5, 0x36, 0xe3, 0x43, 0xfa, 0xa7, 0xcb, 0xa4, 0x2a, 0x5a, 0xaa, 0x65, 0x06, 0x08, 0x77, 0x91, 0xc0, 0x6a, 0x8e, 0x98, 0x93, 0x35, 0xae, 0xd1, 0x9b, 0xfa, 0xb2, 0xd5, 0xe6, 0x7e, 0x27, 0xfb, 0x0c, 0x28, 0x75, 0xaf, 0x89, 0x6c, 0x21, 0xb6, 0xe8, 0xe7, 0x30, 0x9d, 0x04, 0xe4, 0xf6, 0x72, 0x7e, 0x69, 0x46, 0x3e } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 9: A 1536-bit RSA Key Pair", -{ - /* RSA modulus n */ - 192, - { 0xe6, 0xbd, 0x69, 0x2a, 0xc9, 0x66, 0x45, 0x79, 0x04, 0x03, 0xfd, 0xd0, 0xf5, 0xbe, 0xb8, 0xb9, 0xbf, 0x92, 0xed, 0x10, 0x00, 0x7f, 0xc3, 0x65, 0x04, 0x64, 0x19, 0xdd, 0x06, 0xc0, 0x5c, 0x5b, 0x5b, 0x2f, 0x48, 0xec, 0xf9, 0x89, 0xe4, 0xce, 0x26, 0x91, 0x09, 0x97, 0x9c, 0xbb, 0x40, 0xb4, 0xa0, 0xad, 0x24, 0xd2, 0x24, 0x83, 0xd1, 0xee, 0x31, 0x5a, 0xd4, 0xcc, 0xb1, 0x53, 0x42, 0x68, 0x35, 0x26, 0x91, 0xc5, 0x24, 0xf6, 0xdd, 0x8e, 0x6c, 0x29, 0xd2, 0x24, 0xcf, 0x24, 0x69, 0x73, 0xae, 0xc8, 0x6c, 0x5b, 0xf6, 0xb1, 0x40, 0x1a, 0x85, 0x0d, 0x1b, 0x9a, 0xd1, 0xbb, 0x8c, 0xbc, 0xec, 0x47, 0xb0, 0x6f, 0x0f, 0x8c, 0x7f, 0x45, 0xd3, 0xfc, 0x8f, 0x31, 0x92, 0x99, 0xc5, 0x43, 0x3d, 0xdb, 0xc2, 0xb3, 0x05, 0x3b, 0x47, 0xde, 0xd2, 0xec, 0xd4, 0xa4, 0xca, 0xef, 0xd6, 0x14, 0x83, 0x3d, 0xc8, 0xbb, 0x62, 0x2f, 0x31, 0x7e, 0xd0, 0x76, 0xb8, 0x05, 0x7f, 0xe8, 0xde, 0x3f, 0x84, 0x48, 0x0a, 0xd5, 0xe8, 0x3e, 0x4a, 0x61, 0x90, 0x4a, 0x4f, 0x24, 0x8f, 0xb3, 0x97, 0x02, 0x73, 0x57, 0xe1, 0xd3, 0x0e, 0x46, 0x31, 0x39, 0x81, 0x5c, 0x6f, 0xd4, 0xfd, 0x5a, 0xc5, 0xb8, 0x17, 0x2a, 0x45, 0x23, 0x0e, 0xcb, 0x63, 0x18, 0xa0, 0x4f, 0x14, 0x55, 0xd8, 0x4e, 0x5a, 0x8b } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 192, - { 0x6a, 0x7f, 0xd8, 0x4f, 0xb8, 0x5f, 0xad, 0x07, 0x3b, 0x34, 0x40, 0x6d, 0xb7, 0x4f, 0x8d, 0x61, 0xa6, 0xab, 0xc1, 0x21, 0x96, 0xa9, 0x61, 0xdd, 0x79, 0x56, 0x5e, 0x9d, 0xa6, 0xe5, 0x18, 0x7b, 0xce, 0x2d, 0x98, 0x02, 0x50, 0xf7, 0x35, 0x95, 0x75, 0x35, 0x92, 0x70, 0xd9, 0x15, 0x90, 0xbb, 0x0e, 0x42, 0x7c, 0x71, 0x46, 0x0b, 0x55, 0xd5, 0x14, 0x10, 0xb1, 0x91, 0xbc, 0xf3, 0x09, 0xfe, 0xa1, 0x31, 0xa9, 0x2c, 0x8e, 0x70, 0x27, 0x38, 0xfa, 0x71, 0x9f, 0x1e, 0x00, 0x41, 0xf5, 0x2e, 0x40, 0xe9, 0x1f, 0x22, 0x9f, 0x4d, 0x96, 0xa1, 0xe6, 0xf1, 0x72, 0xe1, 0x55, 0x96, 0xb4, 0x51, 0x0a, 0x6d, 0xae, 0xc2, 0x61, 0x05, 0xf2, 0xbe, 0xbc, 0x53, 0x31, 0x6b, 0x87, 0xbd, 0xf2, 0x13, 0x11, 0x66, 0x60, 0x70, 0xe8, 0xdf, 0xee, 0x69, 0xd5, 0x2c, 0x71, 0xa9, 0x76, 0xca, 0xae, 0x79, 0xc7, 0x2b, 0x68, 0xd2, 0x85, 0x80, 0xdc, 0x68, 0x6d, 0x9f, 0x51, 0x29, 0xd2, 0x25, 0xf8, 0x2b, 0x3d, 0x61, 0x55, 0x13, 0xa8, 0x82, 0xb3, 0xdb, 0x91, 0x41, 0x6b, 0x48, 0xce, 0x08, 0x88, 0x82, 0x13, 0xe3, 0x7e, 0xeb, 0x9a, 0xf8, 0x00, 0xd8, 0x1c, 0xab, 0x32, 0x8c, 0xe4, 0x20, 0x68, 0x99, 0x03, 0xc0, 0x0c, 0x7b, 0x5f, 0xd3, 0x1b, 0x75, 0x50, 0x3a, 0x6d, 0x41, 0x96, 0x84, 0xd6, 0x29 } -, - /* Prime p */ - 96, - { 0xf8, 0xeb, 0x97, 0xe9, 0x8d, 0xf1, 0x26, 0x64, 0xee, 0xfd, 0xb7, 0x61, 0x59, 0x6a, 0x69, 0xdd, 0xcd, 0x0e, 0x76, 0xda, 0xec, 0xe6, 0xed, 0x4b, 0xf5, 0xa1, 0xb5, 0x0a, 0xc0, 0x86, 0xf7, 0x92, 0x8a, 0x4d, 0x2f, 0x87, 0x26, 0xa7, 0x7e, 0x51, 0x5b, 0x74, 0xda, 0x41, 0x98, 0x8f, 0x22, 0x0b, 0x1c, 0xc8, 0x7a, 0xa1, 0xfc, 0x81, 0x0c, 0xe9, 0x9a, 0x82, 0xf2, 0xd1, 0xce, 0x82, 0x1e, 0xdc, 0xed, 0x79, 0x4c, 0x69, 0x41, 0xf4, 0x2c, 0x7a, 0x1a, 0x0b, 0x8c, 0x4d, 0x28, 0xc7, 0x5e, 0xc6, 0x0b, 0x65, 0x22, 0x79, 0xf6, 0x15, 0x4a, 0x76, 0x2a, 0xed, 0x16, 0x5d, 0x47, 0xde, 0xe3, 0x67 } -, - /* Prime q */ - 96, - { 0xed, 0x4d, 0x71, 0xd0, 0xa6, 0xe2, 0x4b, 0x93, 0xc2, 0xe5, 0xf6, 0xb4, 0xbb, 0xe0, 0x5f, 0x5f, 0xb0, 0xaf, 0xa0, 0x42, 0xd2, 0x04, 0xfe, 0x33, 0x78, 0xd3, 0x65, 0xc2, 0xf2, 0x88, 0xb6, 0xa8, 0xda, 0xd7, 0xef, 0xe4, 0x5d, 0x15, 0x3e, 0xef, 0x40, 0xca, 0xcc, 0x7b, 0x81, 0xff, 0x93, 0x40, 0x02, 0xd1, 0x08, 0x99, 0x4b, 0x94, 0xa5, 0xe4, 0x72, 0x8c, 0xd9, 0xc9, 0x63, 0x37, 0x5a, 0xe4, 0x99, 0x65, 0xbd, 0xa5, 0x5c, 0xbf, 0x0e, 0xfe, 0xd8, 0xd6, 0x55, 0x3b, 0x40, 0x27, 0xf2, 0xd8, 0x62, 0x08, 0xa6, 0xe6, 0xb4, 0x89, 0xc1, 0x76, 0x12, 0x80, 0x92, 0xd6, 0x29, 0xe4, 0x9d, 0x3d } -, - /* p's CRT exponent dP */ - 96, - { 0x2b, 0xb6, 0x8b, 0xdd, 0xfb, 0x0c, 0x4f, 0x56, 0xc8, 0x55, 0x8b, 0xff, 0xaf, 0x89, 0x2d, 0x80, 0x43, 0x03, 0x78, 0x41, 0xe7, 0xfa, 0x81, 0xcf, 0xa6, 0x1a, 0x38, 0xc5, 0xe3, 0x9b, 0x90, 0x1c, 0x8e, 0xe7, 0x11, 0x22, 0xa5, 0xda, 0x22, 0x27, 0xbd, 0x6c, 0xde, 0xeb, 0x48, 0x14, 0x52, 0xc1, 0x2a, 0xd3, 0xd6, 0x1d, 0x5e, 0x4f, 0x77, 0x6a, 0x0a, 0xb5, 0x56, 0x59, 0x1b, 0xef, 0xe3, 0xe5, 0x9e, 0x5a, 0x7f, 0xdd, 0xb8, 0x34, 0x5e, 0x1f, 0x2f, 0x35, 0xb9, 0xf4, 0xce, 0xe5, 0x7c, 0x32, 0x41, 0x4c, 0x08, 0x6a, 0xec, 0x99, 0x3e, 0x93, 0x53, 0xe4, 0x80, 0xd9, 0xee, 0xc6, 0x28, 0x9f } -, - /* q's CRT exponent dQ */ - 96, - { 0x4f, 0xf8, 0x97, 0x70, 0x9f, 0xad, 0x07, 0x97, 0x46, 0x49, 0x45, 0x78, 0xe7, 0x0f, 0xd8, 0x54, 0x61, 0x30, 0xee, 0xab, 0x56, 0x27, 0xc4, 0x9b, 0x08, 0x0f, 0x05, 0xee, 0x4a, 0xd9, 0xf3, 0xe4, 0xb7, 0xcb, 0xa9, 0xd6, 0xa5, 0xdf, 0xf1, 0x13, 0xa4, 0x1c, 0x34, 0x09, 0x33, 0x68, 0x33, 0xf1, 0x90, 0x81, 0x6d, 0x8a, 0x6b, 0xc4, 0x2e, 0x9b, 0xec, 0x56, 0xb7, 0x56, 0x7d, 0x0f, 0x3c, 0x9c, 0x69, 0x6d, 0xb6, 0x19, 0xb2, 0x45, 0xd9, 0x01, 0xdd, 0x85, 0x6d, 0xb7, 0xc8, 0x09, 0x2e, 0x77, 0xe9, 0xa1, 0xcc, 0xcd, 0x56, 0xee, 0x4d, 0xba, 0x42, 0xc5, 0xfd, 0xb6, 0x1a, 0xec, 0x26, 0x69 } -, - /* CRT coefficient qInv */ - 96, - { 0x77, 0xb9, 0xd1, 0x13, 0x7b, 0x50, 0x40, 0x4a, 0x98, 0x27, 0x29, 0x31, 0x6e, 0xfa, 0xfc, 0x7d, 0xfe, 0x66, 0xd3, 0x4e, 0x5a, 0x18, 0x26, 0x00, 0xd5, 0xf3, 0x0a, 0x0a, 0x85, 0x12, 0x05, 0x1c, 0x56, 0x0d, 0x08, 0x1d, 0x4d, 0x0a, 0x18, 0x35, 0xec, 0x3d, 0x25, 0xa6, 0x0f, 0x4e, 0x4d, 0x6a, 0xa9, 0x48, 0xb2, 0xbf, 0x3d, 0xbb, 0x5b, 0x12, 0x4c, 0xbb, 0xc3, 0x48, 0x92, 0x55, 0xa3, 0xa9, 0x48, 0x37, 0x2f, 0x69, 0x78, 0x49, 0x67, 0x45, 0xf9, 0x43, 0xe1, 0xdb, 0x4f, 0x18, 0x38, 0x2c, 0xea, 0xa5, 0x05, 0xdf, 0xc6, 0x57, 0x57, 0xbb, 0x3f, 0x85, 0x7a, 0x58, 0xdc, 0xe5, 0x21, 0x56 } - -} -, -{{ - "RSASSA-PSS Signature Example 9.1", - /* Message to be signed */ - 211, - { 0xa8, 0x8e, 0x26, 0x58, 0x55, 0xe9, 0xd7, 0xca, 0x36, 0xc6, 0x87, 0x95, 0xf0, 0xb3, 0x1b, 0x59, 0x1c, 0xd6, 0x58, 0x7c, 0x71, 0xd0, 0x60, 0xa0, 0xb3, 0xf7, 0xf3, 0xea, 0xef, 0x43, 0x79, 0x59, 0x22, 0x02, 0x8b, 0xc2, 0xb6, 0xad, 0x46, 0x7c, 0xfc, 0x2d, 0x7f, 0x65, 0x9c, 0x53, 0x85, 0xaa, 0x70, 0xba, 0x36, 0x72, 0xcd, 0xde, 0x4c, 0xfe, 0x49, 0x70, 0xcc, 0x79, 0x04, 0x60, 0x1b, 0x27, 0x88, 0x72, 0xbf, 0x51, 0x32, 0x1c, 0x4a, 0x97, 0x2f, 0x3c, 0x95, 0x57, 0x0f, 0x34, 0x45, 0xd4, 0xf5, 0x79, 0x80, 0xe0, 0xf2, 0x0d, 0xf5, 0x48, 0x46, 0xe6, 0xa5, 0x2c, 0x66, 0x8f, 0x12, 0x88, 0xc0, 0x3f, 0x95, 0x00, 0x6e, 0xa3, 0x2f, 0x56, 0x2d, 0x40, 0xd5, 0x2a, 0xf9, 0xfe, 0xb3, 0x2f, 0x0f, 0xa0, 0x6d, 0xb6, 0x5b, 0x58, 0x8a, 0x23, 0x7b, 0x34, 0xe5, 0x92, 0xd5, 0x5c, 0xf9, 0x79, 0xf9, 0x03, 0xa6, 0x42, 0xef, 0x64, 0xd2, 0xed, 0x54, 0x2a, 0xa8, 0xc7, 0x7d, 0xc1, 0xdd, 0x76, 0x2f, 0x45, 0xa5, 0x93, 0x03, 0xed, 0x75, 0xe5, 0x41, 0xca, 0x27, 0x1e, 0x2b, 0x60, 0xca, 0x70, 0x9e, 0x44, 0xfa, 0x06, 0x61, 0x13, 0x1e, 0x8d, 0x5d, 0x41, 0x63, 0xfd, 0x8d, 0x39, 0x85, 0x66, 0xce, 0x26, 0xde, 0x87, 0x30, 0xe7, 0x2f, 0x9c, 0xca, 0x73, 0x76, 0x41, 0xc2, 0x44, 0x15, 0x94, 0x20, 0x63, 0x70, 0x28, 0xdf, 0x0a, 0x18, 0x07, 0x9d, 0x62, 0x08, 0xea, 0x8b, 0x47, 0x11, 0xa2, 0xc7, 0x50, 0xf5 } -, - /* Salt */ - 20, - { 0xc0, 0xa4, 0x25, 0x31, 0x3d, 0xf8, 0xd7, 0x56, 0x4b, 0xd2, 0x43, 0x4d, 0x31, 0x15, 0x23, 0xd5, 0x25, 0x7e, 0xed, 0x80 } -, - /* Signature */ - 192, - { 0x58, 0x61, 0x07, 0x22, 0x6c, 0x3c, 0xe0, 0x13, 0xa7, 0xc8, 0xf0, 0x4d, 0x1a, 0x6a, 0x29, 0x59, 0xbb, 0x4b, 0x8e, 0x20, 0x5b, 0xa4, 0x3a, 0x27, 0xb5, 0x0f, 0x12, 0x41, 0x11, 0xbc, 0x35, 0xef, 0x58, 0x9b, 0x03, 0x9f, 0x59, 0x32, 0x18, 0x7c, 0xb6, 0x96, 0xd7, 0xd9, 0xa3, 0x2c, 0x0c, 0x38, 0x30, 0x0a, 0x5c, 0xdd, 0xa4, 0x83, 0x4b, 0x62, 0xd2, 0xeb, 0x24, 0x0a, 0xf3, 0x3f, 0x79, 0xd1, 0x3d, 0xfb, 0xf0, 0x95, 0xbf, 0x59, 0x9e, 0x0d, 0x96, 0x86, 0x94, 0x8c, 0x19, 0x64, 0x74, 0x7b, 0x67, 0xe8, 0x9c, 0x9a, 0xba, 0x5c, 0xd8, 0x50, 0x16, 0x23, 0x6f, 0x56, 0x6c, 0xc5, 0x80, 0x2c, 0xb1, 0x3e, 0xad, 0x51, 0xbc, 0x7c, 0xa6, 0xbe, 0xf3, 0xb9, 0x4d, 0xcb, 0xdb, 0xb1, 0xd5, 0x70, 0x46, 0x97, 0x71, 0xdf, 0x0e, 0x00, 0xb1, 0xa8, 0xa0, 0x67, 0x77, 0x47, 0x2d, 0x23, 0x16, 0x27, 0x9e, 0xda, 0xe8, 0x64, 0x74, 0x66, 0x8d, 0x4e, 0x1e, 0xff, 0xf9, 0x5f, 0x1d, 0xe6, 0x1c, 0x60, 0x20, 0xda, 0x32, 0xae, 0x92, 0xbb, 0xf1, 0x65, 0x20, 0xfe, 0xf3, 0xcf, 0x4d, 0x88, 0xf6, 0x11, 0x21, 0xf2, 0x4b, 0xbd, 0x9f, 0xe9, 0x1b, 0x59, 0xca, 0xf1, 0x23, 0x5b, 0x2a, 0x93, 0xff, 0x81, 0xfc, 0x40, 0x3a, 0xdd, 0xf4, 0xeb, 0xde, 0xa8, 0x49, 0x34, 0xa9, 0xcd, 0xaf, 0x8e, 0x1a, 0x9e } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSASSA-PSS Signature Example 9.2", - /* Message to be signed */ - 107, - { 0xc8, 0xc9, 0xc6, 0xaf, 0x04, 0xac, 0xda, 0x41, 0x4d, 0x22, 0x7e, 0xf2, 0x3e, 0x08, 0x20, 0xc3, 0x73, 0x2c, 0x50, 0x0d, 0xc8, 0x72, 0x75, 0xe9, 0x5b, 0x0d, 0x09, 0x54, 0x13, 0x99, 0x3c, 0x26, 0x58, 0xbc, 0x1d, 0x98, 0x85, 0x81, 0xba, 0x87, 0x9c, 0x2d, 0x20, 0x1f, 0x14, 0xcb, 0x88, 0xce, 0xd1, 0x53, 0xa0, 0x19, 0x69, 0xa7, 0xbf, 0x0a, 0x7b, 0xe7, 0x9c, 0x84, 0xc1, 0x48, 0x6b, 0xc1, 0x2b, 0x3f, 0xa6, 0xc5, 0x98, 0x71, 0xb6, 0x82, 0x7c, 0x8c, 0xe2, 0x53, 0xca, 0x5f, 0xef, 0xa8, 0xa8, 0xc6, 0x90, 0xbf, 0x32, 0x6e, 0x8e, 0x37, 0xcd, 0xb9, 0x6d, 0x90, 0xa8, 0x2e, 0xba, 0xb6, 0x9f, 0x86, 0x35, 0x0e, 0x18, 0x22, 0xe8, 0xbd, 0x53, 0x6a, 0x2e } -, - /* Salt */ - 20, - { 0xb3, 0x07, 0xc4, 0x3b, 0x48, 0x50, 0xa8, 0xda, 0xc2, 0xf1, 0x5f, 0x32, 0xe3, 0x78, 0x39, 0xef, 0x8c, 0x5c, 0x0e, 0x91 } -, - /* Signature */ - 192, - { 0x80, 0xb6, 0xd6, 0x43, 0x25, 0x52, 0x09, 0xf0, 0xa4, 0x56, 0x76, 0x38, 0x97, 0xac, 0x9e, 0xd2, 0x59, 0xd4, 0x59, 0xb4, 0x9c, 0x28, 0x87, 0xe5, 0x88, 0x2e, 0xcb, 0x44, 0x34, 0xcf, 0xd6, 0x6d, 0xd7, 0xe1, 0x69, 0x93, 0x75, 0x38, 0x1e, 0x51, 0xcd, 0x7f, 0x55, 0x4f, 0x2c, 0x27, 0x17, 0x04, 0xb3, 0x99, 0xd4, 0x2b, 0x4b, 0xe2, 0x54, 0x0a, 0x0e, 0xca, 0x61, 0x95, 0x1f, 0x55, 0x26, 0x7f, 0x7c, 0x28, 0x78, 0xc1, 0x22, 0x84, 0x2d, 0xad, 0xb2, 0x8b, 0x01, 0xbd, 0x5f, 0x8c, 0x02, 0x5f, 0x7e, 0x22, 0x84, 0x18, 0xa6, 0x73, 0xc0, 0x3d, 0x6b, 0xc0, 0xc7, 0x36, 0xd0, 0xa2, 0x95, 0x46, 0xbd, 0x67, 0xf7, 0x86, 0xd9, 0xd6, 0x92, 0xcc, 0xea, 0x77, 0x8d, 0x71, 0xd9, 0x8c, 0x20, 0x63, 0xb7, 0xa7, 0x10, 0x92, 0x18, 0x7a, 0x4d, 0x35, 0xaf, 0x10, 0x81, 0x11, 0xd8, 0x3e, 0x83, 0xea, 0xe4, 0x6c, 0x46, 0xaa, 0x34, 0x27, 0x7e, 0x06, 0x04, 0x45, 0x89, 0x90, 0x37, 0x88, 0xf1, 0xd5, 0xe7, 0xce, 0xe2, 0x5f, 0xb4, 0x85, 0xe9, 0x29, 0x49, 0x11, 0x88, 0x14, 0xd6, 0xf2, 0xc3, 0xee, 0x36, 0x14, 0x89, 0x01, 0x6f, 0x32, 0x7f, 0xb5, 0xbc, 0x51, 0x7e, 0xb5, 0x04, 0x70, 0xbf, 0xfa, 0x1a, 0xfa, 0x5f, 0x4c, 0xe9, 0xaa, 0x0c, 0xe5, 0xb8, 0xee, 0x19, 0xbf, 0x55, 0x01, 0xb9, 0x58 } - -} -, -{ - "RSASSA-PSS Signature Example 9.3", - /* Message to be signed */ - 222, - { 0x0a, 0xfa, 0xd4, 0x2c, 0xcd, 0x4f, 0xc6, 0x06, 0x54, 0xa5, 0x50, 0x02, 0xd2, 0x28, 0xf5, 0x2a, 0x4a, 0x5f, 0xe0, 0x3b, 0x8b, 0xbb, 0x08, 0xca, 0x82, 0xda, 0xca, 0x55, 0x8b, 0x44, 0xdb, 0xe1, 0x26, 0x6e, 0x50, 0xc0, 0xe7, 0x45, 0xa3, 0x6d, 0x9d, 0x29, 0x04, 0xe3, 0x40, 0x8a, 0xbc, 0xd1, 0xfd, 0x56, 0x99, 0x94, 0x06, 0x3f, 0x4a, 0x75, 0xcc, 0x72, 0xf2, 0xfe, 0xe2, 0xa0, 0xcd, 0x89, 0x3a, 0x43, 0xaf, 0x1c, 0x5b, 0x8b, 0x48, 0x7d, 0xf0, 0xa7, 0x16, 0x10, 0x02, 0x4e, 0x4f, 0x6d, 0xdf, 0x9f, 0x28, 0xad, 0x08, 0x13, 0xc1, 0xaa, 0xb9, 0x1b, 0xcb, 0x3c, 0x90, 0x64, 0xd5, 0xff, 0x74, 0x2d, 0xef, 0xfe, 0xa6, 0x57, 0x09, 0x41, 0x39, 0x36, 0x9e, 0x5e, 0xa6, 0xf4, 0xa9, 0x63, 0x19, 0xa5, 0xcc, 0x82, 0x24, 0x14, 0x5b, 0x54, 0x50, 0x62, 0x75, 0x8f, 0xef, 0xd1, 0xfe, 0x34, 0x09, 0xae, 0x16, 0x92, 0x59, 0xc6, 0xcd, 0xfd, 0x6b, 0x5f, 0x29, 0x58, 0xe3, 0x14, 0xfa, 0xec, 0xbe, 0x69, 0xd2, 0xca, 0xce, 0x58, 0xee, 0x55, 0x17, 0x9a, 0xb9, 0xb3, 0xe6, 0xd1, 0xec, 0xc1, 0x4a, 0x55, 0x7c, 0x5f, 0xeb, 0xe9, 0x88, 0x59, 0x52, 0x64, 0xfc, 0x5d, 0xa1, 0xc5, 0x71, 0x46, 0x2e, 0xca, 0x79, 0x8a, 0x18, 0xa1, 0xa4, 0x94, 0x0c, 0xda, 0xb4, 0xa3, 0xe9, 0x20, 0x09, 0xcc, 0xd4, 0x2e, 0x1e, 0x94, 0x7b, 0x13, 0x14, 0xe3, 0x22, 0x38, 0xa2, 0xde, 0xce, 0x7d, 0x23, 0xa8, 0x9b, 0x5b, 0x30, 0xc7, 0x51, 0xfd, 0x0a, 0x4a, 0x43, 0x0d, 0x2c, 0x54, 0x85, 0x94 } -, - /* Salt */ - 20, - { 0x9a, 0x2b, 0x00, 0x7e, 0x80, 0x97, 0x8b, 0xbb, 0x19, 0x2c, 0x35, 0x4e, 0xb7, 0xda, 0x9a, 0xed, 0xfc, 0x74, 0xdb, 0xf5 } -, - /* Signature */ - 192, - { 0x48, 0x44, 0x08, 0xf3, 0x89, 0x8c, 0xd5, 0xf5, 0x34, 0x83, 0xf8, 0x08, 0x19, 0xef, 0xbf, 0x27, 0x08, 0xc3, 0x4d, 0x27, 0xa8, 0xb2, 0xa6, 0xfa, 0xe8, 0xb3, 0x22, 0xf9, 0x24, 0x02, 0x37, 0xf9, 0x81, 0x81, 0x7a, 0xca, 0x18, 0x46, 0xf1, 0x08, 0x4d, 0xaa, 0x6d, 0x7c, 0x07, 0x95, 0xf6, 0xe5, 0xbf, 0x1a, 0xf5, 0x9c, 0x38, 0xe1, 0x85, 0x84, 0x37, 0xce, 0x1f, 0x7e, 0xc4, 0x19, 0xb9, 0x8c, 0x87, 0x36, 0xad, 0xf6, 0xdd, 0x9a, 0x00, 0xb1, 0x80, 0x6d, 0x2b, 0xd3, 0xad, 0x0a, 0x73, 0x77, 0x5e, 0x05, 0xf5, 0x2d, 0xfe, 0xf3, 0xa5, 0x9a, 0xb4, 0xb0, 0x81, 0x43, 0xf0, 0xdf, 0x05, 0xcd, 0x1a, 0xd9, 0xd0, 0x4b, 0xec, 0xec, 0xa6, 0xda, 0xa4, 0xa2, 0x12, 0x98, 0x03, 0xe2, 0x00, 0xcb, 0xc7, 0x77, 0x87, 0xca, 0xf4, 0xc1, 0xd0, 0x66, 0x3a, 0x6c, 0x59, 0x87, 0xb6, 0x05, 0x95, 0x20, 0x19, 0x78, 0x2c, 0xaf, 0x2e, 0xc1, 0x42, 0x6d, 0x68, 0xfb, 0x94, 0xed, 0x1d, 0x4b, 0xe8, 0x16, 0xa7, 0xed, 0x08, 0x1b, 0x77, 0xe6, 0xab, 0x33, 0x0b, 0x3f, 0xfc, 0x07, 0x38, 0x20, 0xfe, 0xcd, 0xe3, 0x72, 0x7f, 0xcb, 0xe2, 0x95, 0xee, 0x61, 0xa0, 0x50, 0xa3, 0x43, 0x65, 0x86, 0x37, 0xc3, 0xfd, 0x65, 0x9c, 0xfb, 0x63, 0x73, 0x6d, 0xe3, 0x2d, 0x9f, 0x90, 0xd3, 0xc2, 0xf6, 0x3e, 0xca } - -} -, -{ - "RSASSA-PSS Signature Example 9.4", - /* Message to be signed */ - 248, - { 0x1d, 0xfd, 0x43, 0xb4, 0x6c, 0x93, 0xdb, 0x82, 0x62, 0x9b, 0xda, 0xe2, 0xbd, 0x0a, 0x12, 0xb8, 0x82, 0xea, 0x04, 0xc3, 0xb4, 0x65, 0xf5, 0xcf, 0x93, 0x02, 0x3f, 0x01, 0x05, 0x96, 0x26, 0xdb, 0xbe, 0x99, 0xf2, 0x6b, 0xb1, 0xbe, 0x94, 0x9d, 0xdd, 0xd1, 0x6d, 0xc7, 0xf3, 0xde, 0xbb, 0x19, 0xa1, 0x94, 0x62, 0x7f, 0x0b, 0x22, 0x44, 0x34, 0xdf, 0x7d, 0x87, 0x00, 0xe9, 0xe9, 0x8b, 0x06, 0xe3, 0x60, 0xc1, 0x2f, 0xdb, 0xe3, 0xd1, 0x9f, 0x51, 0xc9, 0x68, 0x4e, 0xb9, 0x08, 0x9e, 0xcb, 0xb0, 0xa2, 0xf0, 0x45, 0x03, 0x99, 0xd3, 0xf5, 0x9e, 0xac, 0x72, 0x94, 0x08, 0x5d, 0x04, 0x4f, 0x53, 0x93, 0xc6, 0xce, 0x73, 0x74, 0x23, 0xd8, 0xb8, 0x6c, 0x41, 0x53, 0x70, 0xd3, 0x89, 0xe3, 0x0b, 0x9f, 0x0a, 0x3c, 0x02, 0xd2, 0x5d, 0x00, 0x82, 0xe8, 0xad, 0x6f, 0x3f, 0x1e, 0xf2, 0x4a, 0x45, 0xc3, 0xcf, 0x82, 0xb3, 0x83, 0x36, 0x70, 0x63, 0xa4, 0xd4, 0x61, 0x3e, 0x42, 0x64, 0xf0, 0x1b, 0x2d, 0xac, 0x2e, 0x5a, 0xa4, 0x20, 0x43, 0xf8, 0xfb, 0x5f, 0x69, 0xfa, 0x87, 0x1d, 0x14, 0xfb, 0x27, 0x3e, 0x76, 0x7a, 0x53, 0x1c, 0x40, 0xf0, 0x2f, 0x34, 0x3b, 0xc2, 0xfb, 0x45, 0xa0, 0xc7, 0xe0, 0xf6, 0xbe, 0x25, 0x61, 0x92, 0x3a, 0x77, 0x21, 0x1d, 0x66, 0xa6, 0xe2, 0xdb, 0xb4, 0x3c, 0x36, 0x63, 0x50, 0xbe, 0xae, 0x22, 0xda, 0x3a, 0xc2, 0xc1, 0xf5, 0x07, 0x70, 0x96, 0xfc, 0xb5, 0xc4, 0xbf, 0x25, 0x5f, 0x75, 0x74, 0x35, 0x1a, 0xe0, 0xb1, 0xe1, 0xf0, 0x36, 0x32, 0x81, 0x7c, 0x08, 0x56, 0xd4, 0xa8, 0xba, 0x97, 0xaf, 0xbd, 0xc8, 0xb8, 0x58, 0x55, 0x40, 0x2b, 0xc5, 0x69, 0x26, 0xfc, 0xec, 0x20, 0x9f, 0x9e, 0xa8 } -, - /* Salt */ - 20, - { 0x70, 0xf3, 0x82, 0xbd, 0xdf, 0x4d, 0x5d, 0x2d, 0xd8, 0x8b, 0x3b, 0xc7, 0xb7, 0x30, 0x8b, 0xe6, 0x32, 0xb8, 0x40, 0x45 } -, - /* Signature */ - 192, - { 0x84, 0xeb, 0xeb, 0x48, 0x1b, 0xe5, 0x98, 0x45, 0xb4, 0x64, 0x68, 0xba, 0xfb, 0x47, 0x1c, 0x01, 0x12, 0xe0, 0x2b, 0x23, 0x5d, 0x84, 0xb5, 0xd9, 0x11, 0xcb, 0xd1, 0x92, 0x6e, 0xe5, 0x07, 0x4a, 0xe0, 0x42, 0x44, 0x95, 0xcb, 0x20, 0xe8, 0x23, 0x08, 0xb8, 0xeb, 0xb6, 0x5f, 0x41, 0x9a, 0x03, 0xfb, 0x40, 0xe7, 0x2b, 0x78, 0x98, 0x1d, 0x88, 0xaa, 0xd1, 0x43, 0x05, 0x36, 0x85, 0x17, 0x2c, 0x97, 0xb2, 0x9c, 0x8b, 0x7b, 0xf0, 0xae, 0x73, 0xb5, 0xb2, 0x26, 0x3c, 0x40, 0x3d, 0xa0, 0xed, 0x2f, 0x80, 0xff, 0x74, 0x50, 0xaf, 0x78, 0x28, 0xeb, 0x8b, 0x86, 0xf0, 0x02, 0x8b, 0xd2, 0xa8, 0xb1, 0x76, 0xa4, 0xd2, 0x28, 0xcc, 0xce, 0xa1, 0x83, 0x94, 0xf2, 0x38, 0xb0, 0x9f, 0xf7, 0x58, 0xcc, 0x00, 0xbc, 0x04, 0x30, 0x11, 0x52, 0x35, 0x57, 0x42, 0xf2, 0x82, 0xb5, 0x4e, 0x66, 0x3a, 0x91, 0x9e, 0x70, 0x9d, 0x8d, 0xa2, 0x4a, 0xde, 0x55, 0x00, 0xa7, 0xb9, 0xaa, 0x50, 0x22, 0x6e, 0x0c, 0xa5, 0x29, 0x23, 0xe6, 0xc2, 0xd8, 0x60, 0xec, 0x50, 0xff, 0x48, 0x0f, 0xa5, 0x74, 0x77, 0xe8, 0x2b, 0x05, 0x65, 0xf4, 0x37, 0x9f, 0x79, 0xc7, 0x72, 0xd5, 0xc2, 0xda, 0x80, 0xaf, 0x9f, 0xbf, 0x32, 0x5e, 0xce, 0x6f, 0xc2, 0x0b, 0x00, 0x96, 0x16, 0x14, 0xbe, 0xe8, 0x9a, 0x18, 0x3e } - -} -, -{ - "RSASSA-PSS Signature Example 9.5", - /* Message to be signed */ - 234, - { 0x1b, 0xdc, 0x6e, 0x7c, 0x98, 0xfb, 0x8c, 0xf5, 0x4e, 0x9b, 0x09, 0x7b, 0x66, 0xa8, 0x31, 0xe9, 0xcf, 0xe5, 0x2d, 0x9d, 0x48, 0x88, 0x44, 0x8e, 0xe4, 0xb0, 0x97, 0x80, 0x93, 0xba, 0x1d, 0x7d, 0x73, 0xae, 0x78, 0xb3, 0xa6, 0x2b, 0xa4, 0xad, 0x95, 0xcd, 0x28, 0x9c, 0xcb, 0x9e, 0x00, 0x52, 0x26, 0xbb, 0x3d, 0x17, 0x8b, 0xcc, 0xaa, 0x82, 0x1f, 0xb0, 0x44, 0xa4, 0xe2, 0x1e, 0xe9, 0x76, 0x96, 0xc1, 0x4d, 0x06, 0x78, 0xc9, 0x4c, 0x2d, 0xae, 0x93, 0xb0, 0xad, 0x73, 0x92, 0x22, 0x18, 0x55, 0x3d, 0xaa, 0x7e, 0x44, 0xeb, 0xe5, 0x77, 0x25, 0xa7, 0xa4, 0x5c, 0xc7, 0x2b, 0x9b, 0x21, 0x38, 0xa6, 0xb1, 0x7c, 0x8d, 0xb4, 0x11, 0xce, 0x82, 0x79, 0xee, 0x12, 0x41, 0xaf, 0xf0, 0xa8, 0xbe, 0xc6, 0xf7, 0x7f, 0x87, 0xed, 0xb0, 0xc6, 0x9c, 0xb2, 0x72, 0x36, 0xe3, 0x43, 0x5a, 0x80, 0x0b, 0x19, 0x2e, 0x4f, 0x11, 0xe5, 0x19, 0xe3, 0xfe, 0x30, 0xfc, 0x30, 0xea, 0xcc, 0xca, 0x4f, 0xbb, 0x41, 0x76, 0x90, 0x29, 0xbf, 0x70, 0x8e, 0x81, 0x7a, 0x9e, 0x68, 0x38, 0x05, 0xbe, 0x67, 0xfa, 0x10, 0x09, 0x84, 0x68, 0x3b, 0x74, 0x83, 0x8e, 0x3b, 0xcf, 0xfa, 0x79, 0x36, 0x6e, 0xed, 0x1d, 0x48, 0x1c, 0x76, 0x72, 0x91, 0x18, 0x83, 0x8f, 0x31, 0xba, 0x8a, 0x04, 0x8a, 0x93, 0xc1, 0xbe, 0x44, 0x24, 0x59, 0x8e, 0x8d, 0xf6, 0x32, 0x8b, 0x7a, 0x77, 0x88, 0x0a, 0x3f, 0x9c, 0x7e, 0x2e, 0x8d, 0xfc, 0xa8, 0xeb, 0x5a, 0x26, 0xfb, 0x86, 0xbd, 0xc5, 0x56, 0xd4, 0x2b, 0xbe, 0x01, 0xd9, 0xfa, 0x6e, 0xd8, 0x06, 0x46, 0x49, 0x1c, 0x93, 0x41 } -, - /* Salt */ - 20, - { 0xd6, 0x89, 0x25, 0x7a, 0x86, 0xef, 0xfa, 0x68, 0x21, 0x2c, 0x5e, 0x0c, 0x61, 0x9e, 0xca, 0x29, 0x5f, 0xb9, 0x1b, 0x67 } -, - /* Signature */ - 192, - { 0x82, 0x10, 0x2d, 0xf8, 0xcb, 0x91, 0xe7, 0x17, 0x99, 0x19, 0xa0, 0x4d, 0x26, 0xd3, 0x35, 0xd6, 0x4f, 0xbc, 0x2f, 0x87, 0x2c, 0x44, 0x83, 0x39, 0x43, 0x24, 0x1d, 0xe8, 0x45, 0x48, 0x10, 0x27, 0x4c, 0xdf, 0x3d, 0xb5, 0xf4, 0x2d, 0x42, 0x3d, 0xb1, 0x52, 0xaf, 0x71, 0x35, 0xf7, 0x01, 0x42, 0x0e, 0x39, 0xb4, 0x94, 0xa6, 0x7c, 0xbf, 0xd1, 0x9f, 0x91, 0x19, 0xda, 0x23, 0x3a, 0x23, 0xda, 0x5c, 0x64, 0x39, 0xb5, 0xba, 0x0d, 0x2b, 0xc3, 0x73, 0xee, 0xe3, 0x50, 0x70, 0x01, 0x37, 0x8d, 0x4a, 0x40, 0x73, 0x85, 0x6b, 0x7f, 0xe2, 0xab, 0xa0, 0xb5, 0xee, 0x93, 0xb2, 0x7f, 0x4a, 0xfe, 0xc7, 0xd4, 0xd1, 0x20, 0x92, 0x1c, 0x83, 0xf6, 0x06, 0x76, 0x5b, 0x02, 0xc1, 0x9e, 0x4d, 0x6a, 0x1a, 0x3b, 0x95, 0xfa, 0x4c, 0x42, 0x29, 0x51, 0xbe, 0x4f, 0x52, 0x13, 0x10, 0x77, 0xef, 0x17, 0x17, 0x97, 0x29, 0xcd, 0xdf, 0xbd, 0xb5, 0x69, 0x50, 0xdb, 0xac, 0xee, 0xfe, 0x78, 0xcb, 0x16, 0x64, 0x0a, 0x09, 0x9e, 0xa5, 0x6d, 0x24, 0x38, 0x9e, 0xef, 0x10, 0xf8, 0xfe, 0xcb, 0x31, 0xba, 0x3e, 0xa3, 0xb2, 0x27, 0xc0, 0xa8, 0x66, 0x98, 0xbb, 0x89, 0xe3, 0xe9, 0x36, 0x39, 0x05, 0xbf, 0x22, 0x77, 0x7b, 0x2a, 0x3a, 0xa5, 0x21, 0xb6, 0x5b, 0x4c, 0xef, 0x76, 0xd8, 0x3b, 0xde, 0x4c } - -} -, -{ - "RSASSA-PSS Signature Example 9.6", - /* Message to be signed */ - 165, - { 0x88, 0xc7, 0xa9, 0xf1, 0x36, 0x04, 0x01, 0xd9, 0x0e, 0x53, 0xb1, 0x01, 0xb6, 0x1c, 0x53, 0x25, 0xc3, 0xc7, 0x5d, 0xb1, 0xb4, 0x11, 0xfb, 0xeb, 0x8e, 0x83, 0x0b, 0x75, 0xe9, 0x6b, 0x56, 0x67, 0x0a, 0xd2, 0x45, 0x40, 0x4e, 0x16, 0x79, 0x35, 0x44, 0xee, 0x35, 0x4b, 0xc6, 0x13, 0xa9, 0x0c, 0xc9, 0x84, 0x87, 0x15, 0xa7, 0x3d, 0xb5, 0x89, 0x3e, 0x7f, 0x6d, 0x27, 0x98, 0x15, 0xc0, 0xc1, 0xde, 0x83, 0xef, 0x8e, 0x29, 0x56, 0xe3, 0xa5, 0x6e, 0xd2, 0x6a, 0x88, 0x8d, 0x7a, 0x9c, 0xdc, 0xd0, 0x42, 0xf4, 0xb1, 0x6b, 0x7f, 0xa5, 0x1e, 0xf1, 0xa0, 0x57, 0x36, 0x62, 0xd1, 0x6a, 0x30, 0x2d, 0x0e, 0xc5, 0xb2, 0x85, 0xd2, 0xe0, 0x3a, 0xd9, 0x65, 0x29, 0xc8, 0x7b, 0x3d, 0x37, 0x4d, 0xb3, 0x72, 0xd9, 0x5b, 0x24, 0x43, 0xd0, 0x61, 0xb6, 0xb1, 0xa3, 0x50, 0xba, 0x87, 0x80, 0x7e, 0xd0, 0x83, 0xaf, 0xd1, 0xeb, 0x05, 0xc3, 0xf5, 0x2f, 0x4e, 0xba, 0x5e, 0xd2, 0x22, 0x77, 0x14, 0xfd, 0xb5, 0x0b, 0x9d, 0x9d, 0x9d, 0xd6, 0x81, 0x4f, 0x62, 0xf6, 0x27, 0x2f, 0xcd, 0x5c, 0xdb, 0xce, 0x7a, 0x9e, 0xf7, 0x97 } -, - /* Salt */ - 20, - { 0xc2, 0x5f, 0x13, 0xbf, 0x67, 0xd0, 0x81, 0x67, 0x1a, 0x04, 0x81, 0xa1, 0xf1, 0x82, 0x0d, 0x61, 0x3b, 0xba, 0x22, 0x76 } -, - /* Signature */ - 192, - { 0xa7, 0xfd, 0xb0, 0xd2, 0x59, 0x16, 0x5c, 0xa2, 0xc8, 0x8d, 0x00, 0xbb, 0xf1, 0x02, 0x8a, 0x86, 0x7d, 0x33, 0x76, 0x99, 0xd0, 0x61, 0x19, 0x3b, 0x17, 0xa9, 0x64, 0x8e, 0x14, 0xcc, 0xbb, 0xaa, 0xde, 0xac, 0xaa, 0xcd, 0xec, 0x81, 0x5e, 0x75, 0x71, 0x29, 0x4e, 0xbb, 0x8a, 0x11, 0x7a, 0xf2, 0x05, 0xfa, 0x07, 0x8b, 0x47, 0xb0, 0x71, 0x2c, 0x19, 0x9e, 0x3a, 0xd0, 0x51, 0x35, 0xc5, 0x04, 0xc2, 0x4b, 0x81, 0x70, 0x51, 0x15, 0x74, 0x08, 0x02, 0x48, 0x79, 0x92, 0xff, 0xd5, 0x11, 0xd4, 0xaf, 0xc6, 0xb8, 0x54, 0x49, 0x1e, 0xb3, 0xf0, 0xdd, 0x52, 0x31, 0x39, 0x54, 0x2f, 0xf1, 0x5c, 0x31, 0x01, 0xee, 0x85, 0x54, 0x35, 0x17, 0xc6, 0xa3, 0xc7, 0x94, 0x17, 0xc6, 0x7e, 0x2d, 0xd9, 0xaa, 0x74, 0x1e, 0x9a, 0x29, 0xb0, 0x6d, 0xcb, 0x59, 0x3c, 0x23, 0x36, 0xb3, 0x67, 0x0a, 0xe3, 0xaf, 0xba, 0xc7, 0xc3, 0xe7, 0x6e, 0x21, 0x54, 0x73, 0xe8, 0x66, 0xe3, 0x38, 0xca, 0x24, 0x4d, 0xe0, 0x0b, 0x62, 0x62, 0x4d, 0x6b, 0x94, 0x26, 0x82, 0x2c, 0xea, 0xe9, 0xf8, 0xcc, 0x46, 0x08, 0x95, 0xf4, 0x12, 0x50, 0x07, 0x3f, 0xd4, 0x5c, 0x5a, 0x1e, 0x7b, 0x42, 0x5c, 0x20, 0x4a, 0x42, 0x3a, 0x69, 0x91, 0x59, 0xf6, 0x90, 0x3e, 0x71, 0x0b, 0x37, 0xa7, 0xbb, 0x2b, 0xc8, 0x04, 0x9f } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -{ - "Example 10: A 2048-bit RSA Key Pair", -{ - /* RSA modulus n */ - 256, - { 0xa5, 0xdd, 0x86, 0x7a, 0xc4, 0xcb, 0x02, 0xf9, 0x0b, 0x94, 0x57, 0xd4, 0x8c, 0x14, 0xa7, 0x70, 0xef, 0x99, 0x1c, 0x56, 0xc3, 0x9c, 0x0e, 0xc6, 0x5f, 0xd1, 0x1a, 0xfa, 0x89, 0x37, 0xce, 0xa5, 0x7b, 0x9b, 0xe7, 0xac, 0x73, 0xb4, 0x5c, 0x00, 0x17, 0x61, 0x5b, 0x82, 0xd6, 0x22, 0xe3, 0x18, 0x75, 0x3b, 0x60, 0x27, 0xc0, 0xfd, 0x15, 0x7b, 0xe1, 0x2f, 0x80, 0x90, 0xfe, 0xe2, 0xa7, 0xad, 0xcd, 0x0e, 0xef, 0x75, 0x9f, 0x88, 0xba, 0x49, 0x97, 0xc7, 0xa4, 0x2d, 0x58, 0xc9, 0xaa, 0x12, 0xcb, 0x99, 0xae, 0x00, 0x1f, 0xe5, 0x21, 0xc1, 0x3b, 0xb5, 0x43, 0x14, 0x45, 0xa8, 0xd5, 0xae, 0x4f, 0x5e, 0x4c, 0x7e, 0x94, 0x8a, 0xc2, 0x27, 0xd3, 0x60, 0x40, 0x71, 0xf2, 0x0e, 0x57, 0x7e, 0x90, 0x5f, 0xbe, 0xb1, 0x5d, 0xfa, 0xf0, 0x6d, 0x1d, 0xe5, 0xae, 0x62, 0x53, 0xd6, 0x3a, 0x6a, 0x21, 0x20, 0xb3, 0x1a, 0x5d, 0xa5, 0xda, 0xbc, 0x95, 0x50, 0x60, 0x0e, 0x20, 0xf2, 0x7d, 0x37, 0x39, 0xe2, 0x62, 0x79, 0x25, 0xfe, 0xa3, 0xcc, 0x50, 0x9f, 0x21, 0xdf, 0xf0, 0x4e, 0x6e, 0xea, 0x45, 0x49, 0xc5, 0x40, 0xd6, 0x80, 0x9f, 0xf9, 0x30, 0x7e, 0xed, 0xe9, 0x1f, 0xff, 0x58, 0x73, 0x3d, 0x83, 0x85, 0xa2, 0x37, 0xd6, 0xd3, 0x70, 0x5a, 0x33, 0xe3, 0x91, 0x90, 0x09, 0x92, 0x07, 0x0d, 0xf7, 0xad, 0xf1, 0x35, 0x7c, 0xf7, 0xe3, 0x70, 0x0c, 0xe3, 0x66, 0x7d, 0xe8, 0x3f, 0x17, 0xb8, 0xdf, 0x17, 0x78, 0xdb, 0x38, 0x1d, 0xce, 0x09, 0xcb, 0x4a, 0xd0, 0x58, 0xa5, 0x11, 0x00, 0x1a, 0x73, 0x81, 0x98, 0xee, 0x27, 0xcf, 0x55, 0xa1, 0x3b, 0x75, 0x45, 0x39, 0x90, 0x65, 0x82, 0xec, 0x8b, 0x17, 0x4b, 0xd5, 0x8d, 0x5d, 0x1f, 0x3d, 0x76, 0x7c, 0x61, 0x37, 0x21, 0xae, 0x05 } -, - /* RSA public exponent e */ - 3, - { 0x01, 0x00, 0x01 } -, - /* RSA private exponent d */ - 256, - { 0x2d, 0x2f, 0xf5, 0x67, 0xb3, 0xfe, 0x74, 0xe0, 0x61, 0x91, 0xb7, 0xfd, 0xed, 0x6d, 0xe1, 0x12, 0x29, 0x0c, 0x67, 0x06, 0x92, 0x43, 0x0d, 0x59, 0x69, 0x18, 0x40, 0x47, 0xda, 0x23, 0x4c, 0x96, 0x93, 0xde, 0xed, 0x16, 0x73, 0xed, 0x42, 0x95, 0x39, 0xc9, 0x69, 0xd3, 0x72, 0xc0, 0x4d, 0x6b, 0x47, 0xe0, 0xf5, 0xb8, 0xce, 0xe0, 0x84, 0x3e, 0x5c, 0x22, 0x83, 0x5d, 0xbd, 0x3b, 0x05, 0xa0, 0x99, 0x79, 0x84, 0xae, 0x60, 0x58, 0xb1, 0x1b, 0xc4, 0x90, 0x7c, 0xbf, 0x67, 0xed, 0x84, 0xfa, 0x9a, 0xe2, 0x52, 0xdf, 0xb0, 0xd0, 0xcd, 0x49, 0xe6, 0x18, 0xe3, 0x5d, 0xfd, 0xfe, 0x59, 0xbc, 0xa3, 0xdd, 0xd6, 0x6c, 0x33, 0xce, 0xbb, 0xc7, 0x7a, 0xd4, 0x41, 0xaa, 0x69, 0x5e, 0x13, 0xe3, 0x24, 0xb5, 0x18, 0xf0, 0x1c, 0x60, 0xf5, 0xa8, 0x5c, 0x99, 0x4a, 0xd1, 0x79, 0xf2, 0xa6, 0xb5, 0xfb, 0xe9, 0x34, 0x02, 0xb1, 0x17, 0x67, 0xbe, 0x01, 0xbf, 0x07, 0x34, 0x44, 0xd6, 0xba, 0x1d, 0xd2, 0xbc, 0xa5, 0xbd, 0x07, 0x4d, 0x4a, 0x5f, 0xae, 0x35, 0x31, 0xad, 0x13, 0x03, 0xd8, 0x4b, 0x30, 0xd8, 0x97, 0x31, 0x8c, 0xbb, 0xba, 0x04, 0xe0, 0x3c, 0x2e, 0x66, 0xde, 0x6d, 0x91, 0xf8, 0x2f, 0x96, 0xea, 0x1d, 0x4b, 0xb5, 0x4a, 0x5a, 0xae, 0x10, 0x2d, 0x59, 0x46, 0x57, 0xf5, 0xc9, 0x78, 0x95, 0x53, 0x51, 0x2b, 0x29, 0x6d, 0xea, 0x29, 0xd8, 0x02, 0x31, 0x96, 0x35, 0x7e, 0x3e, 0x3a, 0x6e, 0x95, 0x8f, 0x39, 0xe3, 0xc2, 0x34, 0x40, 0x38, 0xea, 0x60, 0x4b, 0x31, 0xed, 0xc6, 0xf0, 0xf7, 0xff, 0x6e, 0x71, 0x81, 0xa5, 0x7c, 0x92, 0x82, 0x6a, 0x26, 0x8f, 0x86, 0x76, 0x8e, 0x96, 0xf8, 0x78, 0x56, 0x2f, 0xc7, 0x1d, 0x85, 0xd6, 0x9e, 0x44, 0x86, 0x12, 0xf7, 0x04, 0x8f } -, - /* Prime p */ - 128, - { 0xcf, 0xd5, 0x02, 0x83, 0xfe, 0xee, 0xb9, 0x7f, 0x6f, 0x08, 0xd7, 0x3c, 0xbc, 0x7b, 0x38, 0x36, 0xf8, 0x2b, 0xbc, 0xd4, 0x99, 0x47, 0x9f, 0x5e, 0x6f, 0x76, 0xfd, 0xfc, 0xb8, 0xb3, 0x8c, 0x4f, 0x71, 0xdc, 0x9e, 0x88, 0xbd, 0x6a, 0x6f, 0x76, 0x37, 0x1a, 0xfd, 0x65, 0xd2, 0xaf, 0x18, 0x62, 0xb3, 0x2a, 0xfb, 0x34, 0xa9, 0x5f, 0x71, 0xb8, 0xb1, 0x32, 0x04, 0x3f, 0xfe, 0xbe, 0x3a, 0x95, 0x2b, 0xaf, 0x75, 0x92, 0x44, 0x81, 0x48, 0xc0, 0x3f, 0x9c, 0x69, 0xb1, 0xd6, 0x8e, 0x4c, 0xe5, 0xcf, 0x32, 0xc8, 0x6b, 0xaf, 0x46, 0xfe, 0xd3, 0x01, 0xca, 0x1a, 0xb4, 0x03, 0x06, 0x9b, 0x32, 0xf4, 0x56, 0xb9, 0x1f, 0x71, 0x89, 0x8a, 0xb0, 0x81, 0xcd, 0x8c, 0x42, 0x52, 0xef, 0x52, 0x71, 0x91, 0x5c, 0x97, 0x94, 0xb8, 0xf2, 0x95, 0x85, 0x1d, 0xa7, 0x51, 0x0f, 0x99, 0xcb, 0x73, 0xeb } -, - /* Prime q */ - 128, - { 0xcc, 0x4e, 0x90, 0xd2, 0xa1, 0xb3, 0xa0, 0x65, 0xd3, 0xb2, 0xd1, 0xf5, 0xa8, 0xfc, 0xe3, 0x1b, 0x54, 0x44, 0x75, 0x66, 0x4e, 0xab, 0x56, 0x1d, 0x29, 0x71, 0xb9, 0x9f, 0xb7, 0xbe, 0xf8, 0x44, 0xe8, 0xec, 0x1f, 0x36, 0x0b, 0x8c, 0x2a, 0xc8, 0x35, 0x96, 0x92, 0x97, 0x1e, 0xa6, 0xa3, 0x8f, 0x72, 0x3f, 0xcc, 0x21, 0x1f, 0x5d, 0xbc, 0xb1, 0x77, 0xa0, 0xfd, 0xac, 0x51, 0x64, 0xa1, 0xd4, 0xff, 0x7f, 0xbb, 0x4e, 0x82, 0x99, 0x86, 0x35, 0x3c, 0xb9, 0x83, 0x65, 0x9a, 0x14, 0x8c, 0xdd, 0x42, 0x0c, 0x7d, 0x31, 0xba, 0x38, 0x22, 0xea, 0x90, 0xa3, 0x2b, 0xe4, 0x6c, 0x03, 0x0e, 0x8c, 0x17, 0xe1, 0xfa, 0x0a, 0xd3, 0x78, 0x59, 0xe0, 0x6b, 0x0a, 0xa6, 0xfa, 0x3b, 0x21, 0x6d, 0x9c, 0xbe, 0x6c, 0x0e, 0x22, 0x33, 0x97, 0x69, 0xc0, 0xa6, 0x15, 0x91, 0x3e, 0x5d, 0xa7, 0x19, 0xcf } -, - /* p's CRT exponent dP */ - 128, - { 0x1c, 0x2d, 0x1f, 0xc3, 0x2f, 0x6b, 0xc4, 0x00, 0x4f, 0xd8, 0x5d, 0xfd, 0xe0, 0xfb, 0xbf, 0x9a, 0x4c, 0x38, 0xf9, 0xc7, 0xc4, 0xe4, 0x1d, 0xea, 0x1a, 0xa8, 0x82, 0x34, 0xa2, 0x01, 0xcd, 0x92, 0xf3, 0xb7, 0xda, 0x52, 0x65, 0x83, 0xa9, 0x8a, 0xd8, 0x5b, 0xb3, 0x60, 0xfb, 0x98, 0x3b, 0x71, 0x1e, 0x23, 0x44, 0x9d, 0x56, 0x1d, 0x17, 0x78, 0xd7, 0xa5, 0x15, 0x48, 0x6b, 0xcb, 0xf4, 0x7b, 0x46, 0xc9, 0xe9, 0xe1, 0xa3, 0xa1, 0xf7, 0x70, 0x00, 0xef, 0xbe, 0xb0, 0x9a, 0x8a, 0xfe, 0x47, 0xe5, 0xb8, 0x57, 0xcd, 0xa9, 0x9c, 0xb1, 0x6d, 0x7f, 0xff, 0x9b, 0x71, 0x2e, 0x3b, 0xd6, 0x0c, 0xa9, 0x6d, 0x9c, 0x79, 0x73, 0xd6, 0x16, 0xd4, 0x69, 0x34, 0xa9, 0xc0, 0x50, 0x28, 0x1c, 0x00, 0x43, 0x99, 0xce, 0xff, 0x1d, 0xb7, 0xdd, 0xa7, 0x87, 0x66, 0xa8, 0xa9, 0xb9, 0xcb, 0x08, 0x73 } -, - /* q's CRT exponent dQ */ - 128, - { 0xcb, 0x3b, 0x3c, 0x04, 0xca, 0xa5, 0x8c, 0x60, 0xbe, 0x7d, 0x9b, 0x2d, 0xeb, 0xb3, 0xe3, 0x96, 0x43, 0xf4, 0xf5, 0x73, 0x97, 0xbe, 0x08, 0x23, 0x6a, 0x1e, 0x9e, 0xaf, 0xaa, 0x70, 0x65, 0x36, 0xe7, 0x1c, 0x3a, 0xcf, 0xe0, 0x1c, 0xc6, 0x51, 0xf2, 0x3c, 0x9e, 0x05, 0x85, 0x8f, 0xee, 0x13, 0xbb, 0x6a, 0x8a, 0xfc, 0x47, 0xdf, 0x4e, 0xdc, 0x9a, 0x4b, 0xa3, 0x0b, 0xce, 0xcb, 0x73, 0xd0, 0x15, 0x78, 0x52, 0x32, 0x7e, 0xe7, 0x89, 0x01, 0x5c, 0x2e, 0x8d, 0xee, 0x7b, 0x9f, 0x05, 0xa0, 0xf3, 0x1a, 0xc9, 0x4e, 0xb6, 0x17, 0x31, 0x64, 0x74, 0x0c, 0x5c, 0x95, 0x14, 0x7c, 0xd5, 0xf3, 0xb5, 0xae, 0x2c, 0xb4, 0xa8, 0x37, 0x87, 0xf0, 0x1d, 0x8a, 0xb3, 0x1f, 0x27, 0xc2, 0xd0, 0xee, 0xa2, 0xdd, 0x8a, 0x11, 0xab, 0x90, 0x6a, 0xba, 0x20, 0x7c, 0x43, 0xc6, 0xee, 0x12, 0x53, 0x31 } -, - /* CRT coefficient qInv */ - 128, - { 0x12, 0xf6, 0xb2, 0xcf, 0x13, 0x74, 0xa7, 0x36, 0xfa, 0xd0, 0x56, 0x16, 0x05, 0x0f, 0x96, 0xab, 0x4b, 0x61, 0xd1, 0x17, 0x7c, 0x7f, 0x9d, 0x52, 0x5a, 0x29, 0xf3, 0xd1, 0x80, 0xe7, 0x76, 0x67, 0xe9, 0x9d, 0x99, 0xab, 0xf0, 0x52, 0x5d, 0x07, 0x58, 0x66, 0x0f, 0x37, 0x52, 0x65, 0x5b, 0x0f, 0x25, 0xb8, 0xdf, 0x84, 0x31, 0xd9, 0xa8, 0xff, 0x77, 0xc1, 0x6c, 0x12, 0xa0, 0xa5, 0x12, 0x2a, 0x9f, 0x0b, 0xf7, 0xcf, 0xd5, 0xa2, 0x66, 0xa3, 0x5c, 0x15, 0x9f, 0x99, 0x12, 0x08, 0xb9, 0x03, 0x16, 0xff, 0x44, 0x4f, 0x3e, 0x0b, 0x6b, 0xd0, 0xe9, 0x3b, 0x8a, 0x7a, 0x24, 0x48, 0xe9, 0x57, 0xe3, 0xdd, 0xa6, 0xcf, 0xcf, 0x22, 0x66, 0xb1, 0x06, 0x01, 0x3a, 0xc4, 0x68, 0x08, 0xd3, 0xb3, 0x88, 0x7b, 0x3b, 0x00, 0x34, 0x4b, 0xaa, 0xc9, 0x53, 0x0b, 0x4c, 0xe7, 0x08, 0xfc, 0x32, 0xb6 } - -} -, -{{ - "RSASSA-PSS Signature Example 10.1", - /* Message to be signed */ - 29, - { 0x88, 0x31, 0x77, 0xe5, 0x12, 0x6b, 0x9b, 0xe2, 0xd9, 0xa9, 0x68, 0x03, 0x27, 0xd5, 0x37, 0x0c, 0x6f, 0x26, 0x86, 0x1f, 0x58, 0x20, 0xc4, 0x3d, 0xa6, 0x7a, 0x3a, 0xd6, 0x09 } -, - /* Salt */ - 20, - { 0x04, 0xe2, 0x15, 0xee, 0x6f, 0xf9, 0x34, 0xb9, 0xda, 0x70, 0xd7, 0x73, 0x0c, 0x87, 0x34, 0xab, 0xfc, 0xec, 0xde, 0x89 } -, - /* Signature */ - 256, - { 0x82, 0xc2, 0xb1, 0x60, 0x09, 0x3b, 0x8a, 0xa3, 0xc0, 0xf7, 0x52, 0x2b, 0x19, 0xf8, 0x73, 0x54, 0x06, 0x6c, 0x77, 0x84, 0x7a, 0xbf, 0x2a, 0x9f, 0xce, 0x54, 0x2d, 0x0e, 0x84, 0xe9, 0x20, 0xc5, 0xaf, 0xb4, 0x9f, 0xfd, 0xfd, 0xac, 0xe1, 0x65, 0x60, 0xee, 0x94, 0xa1, 0x36, 0x96, 0x01, 0x14, 0x8e, 0xba, 0xd7, 0xa0, 0xe1, 0x51, 0xcf, 0x16, 0x33, 0x17, 0x91, 0xa5, 0x72, 0x7d, 0x05, 0xf2, 0x1e, 0x74, 0xe7, 0xeb, 0x81, 0x14, 0x40, 0x20, 0x69, 0x35, 0xd7, 0x44, 0x76, 0x5a, 0x15, 0xe7, 0x9f, 0x01, 0x5c, 0xb6, 0x6c, 0x53, 0x2c, 0x87, 0xa6, 0xa0, 0x59, 0x61, 0xc8, 0xbf, 0xad, 0x74, 0x1a, 0x9a, 0x66, 0x57, 0x02, 0x28, 0x94, 0x39, 0x3e, 0x72, 0x23, 0x73, 0x97, 0x96, 0xc0, 0x2a, 0x77, 0x45, 0x5d, 0x0f, 0x55, 0x5b, 0x0e, 0xc0, 0x1d, 0xdf, 0x25, 0x9b, 0x62, 0x07, 0xfd, 0x0f, 0xd5, 0x76, 0x14, 0xce, 0xf1, 0xa5, 0x57, 0x3b, 0xaa, 0xff, 0x4e, 0xc0, 0x00, 0x69, 0x95, 0x16, 0x59, 0xb8, 0x5f, 0x24, 0x30, 0x0a, 0x25, 0x16, 0x0c, 0xa8, 0x52, 0x2d, 0xc6, 0xe6, 0x72, 0x7e, 0x57, 0xd0, 0x19, 0xd7, 0xe6, 0x36, 0x29, 0xb8, 0xfe, 0x5e, 0x89, 0xe2, 0x5c, 0xc1, 0x5b, 0xeb, 0x3a, 0x64, 0x75, 0x77, 0x55, 0x92, 0x99, 0x28, 0x0b, 0x9b, 0x28, 0xf7, 0x9b, 0x04, 0x09, 0x00, 0x0b, 0xe2, 0x5b, 0xbd, 0x96, 0x40, 0x8b, 0xa3, 0xb4, 0x3c, 0xc4, 0x86, 0x18, 0x4d, 0xd1, 0xc8, 0xe6, 0x25, 0x53, 0xfa, 0x1a, 0xf4, 0x04, 0x0f, 0x60, 0x66, 0x3d, 0xe7, 0xf5, 0xe4, 0x9c, 0x04, 0x38, 0x8e, 0x25, 0x7f, 0x1c, 0xe8, 0x9c, 0x95, 0xda, 0xb4, 0x8a, 0x31, 0x5d, 0x9b, 0x66, 0xb1, 0xb7, 0x62, 0x82, 0x33, 0x87, 0x6f, 0xf2, 0x38, 0x52, 0x30, 0xd0, 0x70, 0xd0, 0x7e, 0x16, 0x66 } - -} -, -#ifdef LTC_TEST_EXT -{ - "RSASSA-PSS Signature Example 10.2", - /* Message to be signed */ - 128, - { 0xdd, 0x67, 0x0a, 0x01, 0x46, 0x58, 0x68, 0xad, 0xc9, 0x3f, 0x26, 0x13, 0x19, 0x57, 0xa5, 0x0c, 0x52, 0xfb, 0x77, 0x7c, 0xdb, 0xaa, 0x30, 0x89, 0x2c, 0x9e, 0x12, 0x36, 0x11, 0x64, 0xec, 0x13, 0x97, 0x9d, 0x43, 0x04, 0x81, 0x18, 0xe4, 0x44, 0x5d, 0xb8, 0x7b, 0xee, 0x58, 0xdd, 0x98, 0x7b, 0x34, 0x25, 0xd0, 0x20, 0x71, 0xd8, 0xdb, 0xae, 0x80, 0x70, 0x8b, 0x03, 0x9d, 0xbb, 0x64, 0xdb, 0xd1, 0xde, 0x56, 0x57, 0xd9, 0xfe, 0xd0, 0xc1, 0x18, 0xa5, 0x41, 0x43, 0x74, 0x2e, 0x0f, 0xf3, 0xc8, 0x7f, 0x74, 0xe4, 0x58, 0x57, 0x64, 0x7a, 0xf3, 0xf7, 0x9e, 0xb0, 0xa1, 0x4c, 0x9d, 0x75, 0xea, 0x9a, 0x1a, 0x04, 0xb7, 0xcf, 0x47, 0x8a, 0x89, 0x7a, 0x70, 0x8f, 0xd9, 0x88, 0xf4, 0x8e, 0x80, 0x1e, 0xdb, 0x0b, 0x70, 0x39, 0xdf, 0x8c, 0x23, 0xbb, 0x3c, 0x56, 0xf4, 0xe8, 0x21, 0xac } -, - /* Salt */ - 20, - { 0x8b, 0x2b, 0xdd, 0x4b, 0x40, 0xfa, 0xf5, 0x45, 0xc7, 0x78, 0xdd, 0xf9, 0xbc, 0x1a, 0x49, 0xcb, 0x57, 0xf9, 0xb7, 0x1b } -, - /* Signature */ - 256, - { 0x14, 0xae, 0x35, 0xd9, 0xdd, 0x06, 0xba, 0x92, 0xf7, 0xf3, 0xb8, 0x97, 0x97, 0x8a, 0xed, 0x7c, 0xd4, 0xbf, 0x5f, 0xf0, 0xb5, 0x85, 0xa4, 0x0b, 0xd4, 0x6c, 0xe1, 0xb4, 0x2c, 0xd2, 0x70, 0x30, 0x53, 0xbb, 0x90, 0x44, 0xd6, 0x4e, 0x81, 0x3d, 0x8f, 0x96, 0xdb, 0x2d, 0xd7, 0x00, 0x7d, 0x10, 0x11, 0x8f, 0x6f, 0x8f, 0x84, 0x96, 0x09, 0x7a, 0xd7, 0x5e, 0x1f, 0xf6, 0x92, 0x34, 0x1b, 0x28, 0x92, 0xad, 0x55, 0xa6, 0x33, 0xa1, 0xc5, 0x5e, 0x7f, 0x0a, 0x0a, 0xd5, 0x9a, 0x0e, 0x20, 0x3a, 0x5b, 0x82, 0x78, 0xae, 0xc5, 0x4d, 0xd8, 0x62, 0x2e, 0x28, 0x31, 0xd8, 0x71, 0x74, 0xf8, 0xca, 0xff, 0x43, 0xee, 0x6c, 0x46, 0x44, 0x53, 0x45, 0xd8, 0x4a, 0x59, 0x65, 0x9b, 0xfb, 0x92, 0xec, 0xd4, 0xc8, 0x18, 0x66, 0x86, 0x95, 0xf3, 0x47, 0x06, 0xf6, 0x68, 0x28, 0xa8, 0x99, 0x59, 0x63, 0x7f, 0x2b, 0xf3, 0xe3, 0x25, 0x1c, 0x24, 0xbd, 0xba, 0x4d, 0x4b, 0x76, 0x49, 0xda, 0x00, 0x22, 0x21, 0x8b, 0x11, 0x9c, 0x84, 0xe7, 0x9a, 0x65, 0x27, 0xec, 0x5b, 0x8a, 0x5f, 0x86, 0x1c, 0x15, 0x99, 0x52, 0xe2, 0x3e, 0xc0, 0x5e, 0x1e, 0x71, 0x73, 0x46, 0xfa, 0xef, 0xe8, 0xb1, 0x68, 0x68, 0x25, 0xbd, 0x2b, 0x26, 0x2f, 0xb2, 0x53, 0x10, 0x66, 0xc0, 0xde, 0x09, 0xac, 0xde, 0x2e, 0x42, 0x31, 0x69, 0x07, 0x28, 0xb5, 0xd8, 0x5e, 0x11, 0x5a, 0x2f, 0x6b, 0x92, 0xb7, 0x9c, 0x25, 0xab, 0xc9, 0xbd, 0x93, 0x99, 0xff, 0x8b, 0xcf, 0x82, 0x5a, 0x52, 0xea, 0x1f, 0x56, 0xea, 0x76, 0xdd, 0x26, 0xf4, 0x3b, 0xaa, 0xfa, 0x18, 0xbf, 0xa9, 0x2a, 0x50, 0x4c, 0xbd, 0x35, 0x69, 0x9e, 0x26, 0xd1, 0xdc, 0xc5, 0xa2, 0x88, 0x73, 0x85, 0xf3, 0xc6, 0x32, 0x32, 0xf0, 0x6f, 0x32, 0x44, 0xc3 } - -} -, -{ - "RSASSA-PSS Signature Example 10.3", - /* Message to be signed */ - 110, - { 0x48, 0xb2, 0xb6, 0xa5, 0x7a, 0x63, 0xc8, 0x4c, 0xea, 0x85, 0x9d, 0x65, 0xc6, 0x68, 0x28, 0x4b, 0x08, 0xd9, 0x6b, 0xdc, 0xaa, 0xbe, 0x25, 0x2d, 0xb0, 0xe4, 0xa9, 0x6c, 0xb1, 0xba, 0xc6, 0x01, 0x93, 0x41, 0xdb, 0x6f, 0xbe, 0xfb, 0x8d, 0x10, 0x6b, 0x0e, 0x90, 0xed, 0xa6, 0xbc, 0xc6, 0xc6, 0x26, 0x2f, 0x37, 0xe7, 0xea, 0x9c, 0x7e, 0x5d, 0x22, 0x6b, 0xd7, 0xdf, 0x85, 0xec, 0x5e, 0x71, 0xef, 0xff, 0x2f, 0x54, 0xc5, 0xdb, 0x57, 0x7f, 0xf7, 0x29, 0xff, 0x91, 0xb8, 0x42, 0x49, 0x1d, 0xe2, 0x74, 0x1d, 0x0c, 0x63, 0x16, 0x07, 0xdf, 0x58, 0x6b, 0x90, 0x5b, 0x23, 0xb9, 0x1a, 0xf1, 0x3d, 0xa1, 0x23, 0x04, 0xbf, 0x83, 0xec, 0xa8, 0xa7, 0x3e, 0x87, 0x1f, 0xf9, 0xdb } -, - /* Salt */ - 20, - { 0x4e, 0x96, 0xfc, 0x1b, 0x39, 0x8f, 0x92, 0xb4, 0x46, 0x71, 0x01, 0x0c, 0x0d, 0xc3, 0xef, 0xd6, 0xe2, 0x0c, 0x2d, 0x73 } -, - /* Signature */ - 256, - { 0x6e, 0x3e, 0x4d, 0x7b, 0x6b, 0x15, 0xd2, 0xfb, 0x46, 0x01, 0x3b, 0x89, 0x00, 0xaa, 0x5b, 0xbb, 0x39, 0x39, 0xcf, 0x2c, 0x09, 0x57, 0x17, 0x98, 0x70, 0x42, 0x02, 0x6e, 0xe6, 0x2c, 0x74, 0xc5, 0x4c, 0xff, 0xd5, 0xd7, 0xd5, 0x7e, 0xfb, 0xbf, 0x95, 0x0a, 0x0f, 0x5c, 0x57, 0x4f, 0xa0, 0x9d, 0x3f, 0xc1, 0xc9, 0xf5, 0x13, 0xb0, 0x5b, 0x4f, 0xf5, 0x0d, 0xd8, 0xdf, 0x7e, 0xdf, 0xa2, 0x01, 0x02, 0x85, 0x4c, 0x35, 0xe5, 0x92, 0x18, 0x01, 0x19, 0xa7, 0x0c, 0xe5, 0xb0, 0x85, 0x18, 0x2a, 0xa0, 0x2d, 0x9e, 0xa2, 0xaa, 0x90, 0xd1, 0xdf, 0x03, 0xf2, 0xda, 0xae, 0x88, 0x5b, 0xa2, 0xf5, 0xd0, 0x5a, 0xfd, 0xac, 0x97, 0x47, 0x6f, 0x06, 0xb9, 0x3b, 0x5b, 0xc9, 0x4a, 0x1a, 0x80, 0xaa, 0x91, 0x16, 0xc4, 0xd6, 0x15, 0xf3, 0x33, 0xb0, 0x98, 0x89, 0x2b, 0x25, 0xff, 0xac, 0xe2, 0x66, 0xf5, 0xdb, 0x5a, 0x5a, 0x3b, 0xcc, 0x10, 0xa8, 0x24, 0xed, 0x55, 0xaa, 0xd3, 0x5b, 0x72, 0x78, 0x34, 0xfb, 0x8c, 0x07, 0xda, 0x28, 0xfc, 0xf4, 0x16, 0xa5, 0xd9, 0xb2, 0x22, 0x4f, 0x1f, 0x8b, 0x44, 0x2b, 0x36, 0xf9, 0x1e, 0x45, 0x6f, 0xde, 0xa2, 0xd7, 0xcf, 0xe3, 0x36, 0x72, 0x68, 0xde, 0x03, 0x07, 0xa4, 0xc7, 0x4e, 0x92, 0x41, 0x59, 0xed, 0x33, 0x39, 0x3d, 0x5e, 0x06, 0x55, 0x53, 0x1c, 0x77, 0x32, 0x7b, 0x89, 0x82, 0x1b, 0xde, 0xdf, 0x88, 0x01, 0x61, 0xc7, 0x8c, 0xd4, 0x19, 0x6b, 0x54, 0x19, 0xf7, 0xac, 0xc3, 0xf1, 0x3e, 0x5e, 0xbf, 0x16, 0x1b, 0x6e, 0x7c, 0x67, 0x24, 0x71, 0x6c, 0xa3, 0x3b, 0x85, 0xc2, 0xe2, 0x56, 0x40, 0x19, 0x2a, 0xc2, 0x85, 0x96, 0x51, 0xd5, 0x0b, 0xde, 0x7e, 0xb9, 0x76, 0xe5, 0x1c, 0xec, 0x82, 0x8b, 0x98, 0xb6, 0x56, 0x3b, 0x86, 0xbb } - -} -, -{ - "RSASSA-PSS Signature Example 10.4", - /* Message to be signed */ - 81, - { 0x0b, 0x87, 0x77, 0xc7, 0xf8, 0x39, 0xba, 0xf0, 0xa6, 0x4b, 0xbb, 0xdb, 0xc5, 0xce, 0x79, 0x75, 0x5c, 0x57, 0xa2, 0x05, 0xb8, 0x45, 0xc1, 0x74, 0xe2, 0xd2, 0xe9, 0x05, 0x46, 0xa0, 0x89, 0xc4, 0xe6, 0xec, 0x8a, 0xdf, 0xfa, 0x23, 0xa7, 0xea, 0x97, 0xba, 0xe6, 0xb6, 0x5d, 0x78, 0x2b, 0x82, 0xdb, 0x5d, 0x2b, 0x5a, 0x56, 0xd2, 0x2a, 0x29, 0xa0, 0x5e, 0x7c, 0x44, 0x33, 0xe2, 0xb8, 0x2a, 0x62, 0x1a, 0xbb, 0xa9, 0x0a, 0xdd, 0x05, 0xce, 0x39, 0x3f, 0xc4, 0x8a, 0x84, 0x05, 0x42, 0x45, 0x1a } -, - /* Salt */ - 20, - { 0xc7, 0xcd, 0x69, 0x8d, 0x84, 0xb6, 0x51, 0x28, 0xd8, 0x83, 0x5e, 0x3a, 0x8b, 0x1e, 0xb0, 0xe0, 0x1c, 0xb5, 0x41, 0xec } -, - /* Signature */ - 256, - { 0x34, 0x04, 0x7f, 0xf9, 0x6c, 0x4d, 0xc0, 0xdc, 0x90, 0xb2, 0xd4, 0xff, 0x59, 0xa1, 0xa3, 0x61, 0xa4, 0x75, 0x4b, 0x25, 0x5d, 0x2e, 0xe0, 0xaf, 0x7d, 0x8b, 0xf8, 0x7c, 0x9b, 0xc9, 0xe7, 0xdd, 0xee, 0xde, 0x33, 0x93, 0x4c, 0x63, 0xca, 0x1c, 0x0e, 0x3d, 0x26, 0x2c, 0xb1, 0x45, 0xef, 0x93, 0x2a, 0x1f, 0x2c, 0x0a, 0x99, 0x7a, 0xa6, 0xa3, 0x4f, 0x8e, 0xae, 0xe7, 0x47, 0x7d, 0x82, 0xcc, 0xf0, 0x90, 0x95, 0xa6, 0xb8, 0xac, 0xad, 0x38, 0xd4, 0xee, 0xc9, 0xfb, 0x7e, 0xab, 0x7a, 0xd0, 0x2d, 0xa1, 0xd1, 0x1d, 0x8e, 0x54, 0xc1, 0x82, 0x5e, 0x55, 0xbf, 0x58, 0xc2, 0xa2, 0x32, 0x34, 0xb9, 0x02, 0xbe, 0x12, 0x4f, 0x9e, 0x90, 0x38, 0xa8, 0xf6, 0x8f, 0xa4, 0x5d, 0xab, 0x72, 0xf6, 0x6e, 0x09, 0x45, 0xbf, 0x1d, 0x8b, 0xac, 0xc9, 0x04, 0x4c, 0x6f, 0x07, 0x09, 0x8c, 0x9f, 0xce, 0xc5, 0x8a, 0x3a, 0xab, 0x10, 0x0c, 0x80, 0x51, 0x78, 0x15, 0x5f, 0x03, 0x0a, 0x12, 0x4c, 0x45, 0x0e, 0x5a, 0xcb, 0xda, 0x47, 0xd0, 0xe4, 0xf1, 0x0b, 0x80, 0xa2, 0x3f, 0x80, 0x3e, 0x77, 0x4d, 0x02, 0x3b, 0x00, 0x15, 0xc2, 0x0b, 0x9f, 0x9b, 0xbe, 0x7c, 0x91, 0x29, 0x63, 0x38, 0xd5, 0xec, 0xb4, 0x71, 0xca, 0xfb, 0x03, 0x20, 0x07, 0xb6, 0x7a, 0x60, 0xbe, 0x5f, 0x69, 0x50, 0x4a, 0x9f, 0x01, 0xab, 0xb3, 0xcb, 0x46, 0x7b, 0x26, 0x0e, 0x2b, 0xce, 0x86, 0x0b, 0xe8, 0xd9, 0x5b, 0xf9, 0x2c, 0x0c, 0x8e, 0x14, 0x96, 0xed, 0x1e, 0x52, 0x85, 0x93, 0xa4, 0xab, 0xb6, 0xdf, 0x46, 0x2d, 0xde, 0x8a, 0x09, 0x68, 0xdf, 0xfe, 0x46, 0x83, 0x11, 0x68, 0x57, 0xa2, 0x32, 0xf5, 0xeb, 0xf6, 0xc8, 0x5b, 0xe2, 0x38, 0x74, 0x5a, 0xd0, 0xf3, 0x8f, 0x76, 0x7a, 0x5f, 0xdb, 0xf4, 0x86, 0xfb } - -} -, -{ - "RSASSA-PSS Signature Example 10.5", - /* Message to be signed */ - 81, - { 0xf1, 0x03, 0x6e, 0x00, 0x8e, 0x71, 0xe9, 0x64, 0xda, 0xdc, 0x92, 0x19, 0xed, 0x30, 0xe1, 0x7f, 0x06, 0xb4, 0xb6, 0x8a, 0x95, 0x5c, 0x16, 0xb3, 0x12, 0xb1, 0xed, 0xdf, 0x02, 0x8b, 0x74, 0x97, 0x6b, 0xed, 0x6b, 0x3f, 0x6a, 0x63, 0xd4, 0xe7, 0x78, 0x59, 0x24, 0x3c, 0x9c, 0xcc, 0xdc, 0x98, 0x01, 0x65, 0x23, 0xab, 0xb0, 0x24, 0x83, 0xb3, 0x55, 0x91, 0xc3, 0x3a, 0xad, 0x81, 0x21, 0x3b, 0xb7, 0xc7, 0xbb, 0x1a, 0x47, 0x0a, 0xab, 0xc1, 0x0d, 0x44, 0x25, 0x6c, 0x4d, 0x45, 0x59, 0xd9, 0x16 } -, - /* Salt */ - 20, - { 0xef, 0xa8, 0xbf, 0xf9, 0x62, 0x12, 0xb2, 0xf4, 0xa3, 0xf3, 0x71, 0xa1, 0x0d, 0x57, 0x41, 0x52, 0x65, 0x5f, 0x5d, 0xfb } -, - /* Signature */ - 256, - { 0x7e, 0x09, 0x35, 0xea, 0x18, 0xf4, 0xd6, 0xc1, 0xd1, 0x7c, 0xe8, 0x2e, 0xb2, 0xb3, 0x83, 0x6c, 0x55, 0xb3, 0x84, 0x58, 0x9c, 0xe1, 0x9d, 0xfe, 0x74, 0x33, 0x63, 0xac, 0x99, 0x48, 0xd1, 0xf3, 0x46, 0xb7, 0xbf, 0xdd, 0xfe, 0x92, 0xef, 0xd7, 0x8a, 0xdb, 0x21, 0xfa, 0xef, 0xc8, 0x9a, 0xde, 0x42, 0xb1, 0x0f, 0x37, 0x40, 0x03, 0xfe, 0x12, 0x2e, 0x67, 0x42, 0x9a, 0x1c, 0xb8, 0xcb, 0xd1, 0xf8, 0xd9, 0x01, 0x45, 0x64, 0xc4, 0x4d, 0x12, 0x01, 0x16, 0xf4, 0x99, 0x0f, 0x1a, 0x6e, 0x38, 0x77, 0x4c, 0x19, 0x4b, 0xd1, 0xb8, 0x21, 0x32, 0x86, 0xb0, 0x77, 0xb0, 0x49, 0x9d, 0x2e, 0x7b, 0x3f, 0x43, 0x4a, 0xb1, 0x22, 0x89, 0xc5, 0x56, 0x68, 0x4d, 0xee, 0xd7, 0x81, 0x31, 0x93, 0x4b, 0xb3, 0xdd, 0x65, 0x37, 0x23, 0x6f, 0x7c, 0x6f, 0x3d, 0xcb, 0x09, 0xd4, 0x76, 0xbe, 0x07, 0x72, 0x1e, 0x37, 0xe1, 0xce, 0xed, 0x9b, 0x2f, 0x7b, 0x40, 0x68, 0x87, 0xbd, 0x53, 0x15, 0x73, 0x05, 0xe1, 0xc8, 0xb4, 0xf8, 0x4d, 0x73, 0x3b, 0xc1, 0xe1, 0x86, 0xfe, 0x06, 0xcc, 0x59, 0xb6, 0xed, 0xb8, 0xf4, 0xbd, 0x7f, 0xfe, 0xfd, 0xf4, 0xf7, 0xba, 0x9c, 0xfb, 0x9d, 0x57, 0x06, 0x89, 0xb5, 0xa1, 0xa4, 0x10, 0x9a, 0x74, 0x6a, 0x69, 0x08, 0x93, 0xdb, 0x37, 0x99, 0x25, 0x5a, 0x0c, 0xb9, 0x21, 0x5d, 0x2d, 0x1c, 0xd4, 0x90, 0x59, 0x0e, 0x95, 0x2e, 0x8c, 0x87, 0x86, 0xaa, 0x00, 0x11, 0x26, 0x52, 0x52, 0x47, 0x0c, 0x04, 0x1d, 0xfb, 0xc3, 0xee, 0xc7, 0xc3, 0xcb, 0xf7, 0x1c, 0x24, 0x86, 0x9d, 0x11, 0x5c, 0x0c, 0xb4, 0xa9, 0x56, 0xf5, 0x6d, 0x53, 0x0b, 0x80, 0xab, 0x58, 0x9a, 0xcf, 0xef, 0xc6, 0x90, 0x75, 0x1d, 0xdf, 0x36, 0xe8, 0xd3, 0x83, 0xf8, 0x3c, 0xed, 0xd2, 0xcc } - -} -, -{ - "RSASSA-PSS Signature Example 10.6", - /* Message to be signed */ - 163, - { 0x25, 0xf1, 0x08, 0x95, 0xa8, 0x77, 0x16, 0xc1, 0x37, 0x45, 0x0b, 0xb9, 0x51, 0x9d, 0xfa, 0xa1, 0xf2, 0x07, 0xfa, 0xa9, 0x42, 0xea, 0x88, 0xab, 0xf7, 0x1e, 0x9c, 0x17, 0x98, 0x00, 0x85, 0xb5, 0x55, 0xae, 0xba, 0xb7, 0x62, 0x64, 0xae, 0x2a, 0x3a, 0xb9, 0x3c, 0x2d, 0x12, 0x98, 0x11, 0x91, 0xdd, 0xac, 0x6f, 0xb5, 0x94, 0x9e, 0xb3, 0x6a, 0xee, 0x3c, 0x5d, 0xa9, 0x40, 0xf0, 0x07, 0x52, 0xc9, 0x16, 0xd9, 0x46, 0x08, 0xfa, 0x7d, 0x97, 0xba, 0x6a, 0x29, 0x15, 0xb6, 0x88, 0xf2, 0x03, 0x23, 0xd4, 0xe9, 0xd9, 0x68, 0x01, 0xd8, 0x9a, 0x72, 0xab, 0x58, 0x92, 0xdc, 0x21, 0x17, 0xc0, 0x74, 0x34, 0xfc, 0xf9, 0x72, 0xe0, 0x58, 0xcf, 0x8c, 0x41, 0xca, 0x4b, 0x4f, 0xf5, 0x54, 0xf7, 0xd5, 0x06, 0x8a, 0xd3, 0x15, 0x5f, 0xce, 0xd0, 0xf3, 0x12, 0x5b, 0xc0, 0x4f, 0x91, 0x93, 0x37, 0x8a, 0x8f, 0x5c, 0x4c, 0x3b, 0x8c, 0xb4, 0xdd, 0x6d, 0x1c, 0xc6, 0x9d, 0x30, 0xec, 0xca, 0x6e, 0xaa, 0x51, 0xe3, 0x6a, 0x05, 0x73, 0x0e, 0x9e, 0x34, 0x2e, 0x85, 0x5b, 0xaf, 0x09, 0x9d, 0xef, 0xb8, 0xaf, 0xd7 } -, - /* Salt */ - 20, - { 0xad, 0x8b, 0x15, 0x23, 0x70, 0x36, 0x46, 0x22, 0x4b, 0x66, 0x0b, 0x55, 0x08, 0x85, 0x91, 0x7c, 0xa2, 0xd1, 0xdf, 0x28 } -, - /* Signature */ - 256, - { 0x6d, 0x3b, 0x5b, 0x87, 0xf6, 0x7e, 0xa6, 0x57, 0xaf, 0x21, 0xf7, 0x54, 0x41, 0x97, 0x7d, 0x21, 0x80, 0xf9, 0x1b, 0x2c, 0x5f, 0x69, 0x2d, 0xe8, 0x29, 0x55, 0x69, 0x6a, 0x68, 0x67, 0x30, 0xd9, 0xb9, 0x77, 0x8d, 0x97, 0x07, 0x58, 0xcc, 0xb2, 0x60, 0x71, 0xc2, 0x20, 0x9f, 0xfb, 0xd6, 0x12, 0x5b, 0xe2, 0xe9, 0x6e, 0xa8, 0x1b, 0x67, 0xcb, 0x9b, 0x93, 0x08, 0x23, 0x9f, 0xda, 0x17, 0xf7, 0xb2, 0xb6, 0x4e, 0xcd, 0xa0, 0x96, 0xb6, 0xb9, 0x35, 0x64, 0x0a, 0x5a, 0x1c, 0xb4, 0x2a, 0x91, 0x55, 0xb1, 0xc9, 0xef, 0x7a, 0x63, 0x3a, 0x02, 0xc5, 0x9f, 0x0d, 0x6e, 0xe5, 0x9b, 0x85, 0x2c, 0x43, 0xb3, 0x50, 0x29, 0xe7, 0x3c, 0x94, 0x0f, 0xf0, 0x41, 0x0e, 0x8f, 0x11, 0x4e, 0xed, 0x46, 0xbb, 0xd0, 0xfa, 0xe1, 0x65, 0xe4, 0x2b, 0xe2, 0x52, 0x8a, 0x40, 0x1c, 0x3b, 0x28, 0xfd, 0x81, 0x8e, 0xf3, 0x23, 0x2d, 0xca, 0x9f, 0x4d, 0x2a, 0x0f, 0x51, 0x66, 0xec, 0x59, 0xc4, 0x23, 0x96, 0xd6, 0xc1, 0x1d, 0xbc, 0x12, 0x15, 0xa5, 0x6f, 0xa1, 0x71, 0x69, 0xdb, 0x95, 0x75, 0x34, 0x3e, 0xf3, 0x4f, 0x9d, 0xe3, 0x2a, 0x49, 0xcd, 0xc3, 0x17, 0x49, 0x22, 0xf2, 0x29, 0xc2, 0x3e, 0x18, 0xe4, 0x5d, 0xf9, 0x35, 0x31, 0x19, 0xec, 0x43, 0x19, 0xce, 0xdc, 0xe7, 0xa1, 0x7c, 0x64, 0x08, 0x8c, 0x1f, 0x6f, 0x52, 0xbe, 0x29, 0x63, 0x41, 0x00, 0xb3, 0x91, 0x9d, 0x38, 0xf3, 0xd1, 0xed, 0x94, 0xe6, 0x89, 0x1e, 0x66, 0xa7, 0x3b, 0x8f, 0xb8, 0x49, 0xf5, 0x87, 0x4d, 0xf5, 0x94, 0x59, 0xe2, 0x98, 0xc7, 0xbb, 0xce, 0x2e, 0xee, 0x78, 0x2a, 0x19, 0x5a, 0xa6, 0x6f, 0xe2, 0xd0, 0x73, 0x2b, 0x25, 0xe5, 0x95, 0xf5, 0x7d, 0x3e, 0x06, 0x1b, 0x1f, 0xc3, 0xe4, 0x06, 0x3b, 0xf9, 0x8f } - -} -, -#endif /* LTC_TEST_EXT */ -} -}, -}; - diff --git a/src/libtomcrypt/notes/rsa-testvectors/pss-vect.txt b/src/libtomcrypt/notes/rsa-testvectors/pss-vect.txt deleted file mode 100644 index f0392e0170..0000000000 --- a/src/libtomcrypt/notes/rsa-testvectors/pss-vect.txt +++ /dev/null @@ -1,2581 +0,0 @@ -# =========================== -# TEST VECTORS FOR RSASSA-PSS -# =========================== -# -# This file contains test vectors for the -# RSASSA-PSS signature scheme with appendix as -# defined in PKCS #1 v2.1. 10 RSA keys of -# different sizes have been generated. For each -# key, 6 random messages of length between 1 -# and 256 octets have been RSASSA-PSS signed -# via a random salt of length 20 octets. -# -# The underlying hash function in the EMSA-PSS -# encoding method is SHA-1; the mask generation -# function is MGF1 with SHA-1 as specified in -# PKCS #1 v2.1. -# -# Integers are represented by strings of octets -# with the leftmost octet being the most -# significant octet. For example, -# -# 9,202,000 = (0x)8c 69 50. -# -# Key lengths: -# -# Key 1: 1024 bits -# Key 2: 1025 bits -# Key 3: 1026 bits -# Key 4: 1027 bits -# Key 5: 1028 bits -# Key 6: 1029 bits -# Key 7: 1030 bits -# Key 8: 1031 bits -# Key 9: 1536 bits -# Key 10: 2048 bits -# -# ============================================= - -# ================================== -# Example 1: A 1024-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -a5 6e 4a 0e 70 10 17 58 9a 51 87 dc 7e a8 41 d1 -56 f2 ec 0e 36 ad 52 a4 4d fe b1 e6 1f 7a d9 91 -d8 c5 10 56 ff ed b1 62 b4 c0 f2 83 a1 2a 88 a3 -94 df f5 26 ab 72 91 cb b3 07 ce ab fc e0 b1 df -d5 cd 95 08 09 6d 5b 2b 8b 6d f5 d6 71 ef 63 77 -c0 92 1c b2 3c 27 0a 70 e2 59 8e 6f f8 9d 19 f1 -05 ac c2 d3 f0 cb 35 f2 92 80 e1 38 6b 6f 64 c4 -ef 22 e1 e1 f2 0d 0c e8 cf fb 22 49 bd 9a 21 37 - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -33 a5 04 2a 90 b2 7d 4f 54 51 ca 9b bb d0 b4 47 -71 a1 01 af 88 43 40 ae f9 88 5f 2a 4b be 92 e8 -94 a7 24 ac 3c 56 8c 8f 97 85 3a d0 7c 02 66 c8 -c6 a3 ca 09 29 f1 e8 f1 12 31 88 44 29 fc 4d 9a -e5 5f ee 89 6a 10 ce 70 7c 3e d7 e7 34 e4 47 27 -a3 95 74 50 1a 53 26 83 10 9c 2a ba ca ba 28 3c -31 b4 bd 2f 53 c3 ee 37 e3 52 ce e3 4f 9e 50 3b -d8 0c 06 22 ad 79 c6 dc ee 88 35 47 c6 a3 b3 25 - -# Prime p: -e7 e8 94 27 20 a8 77 51 72 73 a3 56 05 3e a2 a1 -bc 0c 94 aa 72 d5 5c 6e 86 29 6b 2d fc 96 79 48 -c0 a7 2c bc cc a7 ea cb 35 70 6e 09 a1 df 55 a1 -53 5b d9 b3 cc 34 16 0b 3b 6d cd 3e da 8e 64 43 - -# Prime q: -b6 9d ca 1c f7 d4 d7 ec 81 e7 5b 90 fc ca 87 4a -bc de 12 3f d2 70 01 80 aa 90 47 9b 6e 48 de 8d -67 ed 24 f9 f1 9d 85 ba 27 58 74 f5 42 cd 20 dc -72 3e 69 63 36 4a 1f 94 25 45 2b 26 9a 67 99 fd - -# p's CRT exponent dP: -28 fa 13 93 86 55 be 1f 8a 15 9c ba ca 5a 72 ea -19 0c 30 08 9e 19 cd 27 4a 55 6f 36 c4 f6 e1 9f -55 4b 34 c0 77 79 04 27 bb dd 8d d3 ed e2 44 83 -28 f3 85 d8 1b 30 e8 e4 3b 2f ff a0 27 86 19 79 - -# q's CRT exponent dQ: -1a 8b 38 f3 98 fa 71 20 49 89 8d 7f b7 9e e0 a7 -76 68 79 12 99 cd fa 09 ef c0 e5 07 ac b2 1e d7 -43 01 ef 5b fd 48 be 45 5e ae b6 e1 67 82 55 82 -75 80 a8 e4 e8 e1 41 51 d1 51 0a 82 a3 f2 e7 29 - -# CRT coefficient qInv: -27 15 6a ba 41 26 d2 4a 81 f3 a5 28 cb fb 27 f5 -68 86 f8 40 a9 f6 e8 6e 17 a4 4b 94 fe 93 19 58 -4b 8e 22 fd de 1e 5a 2e 3b d8 aa 5b a8 d8 58 41 -94 eb 21 90 ac f8 32 b8 47 f1 3a 3d 24 a7 9f 4d - -# -------------------------------- -# RSASSA-PSS Signature Example 1.1 -# -------------------------------- - -# Message to be signed: -cd c8 7d a2 23 d7 86 df 3b 45 e0 bb bc 72 13 26 -d1 ee 2a f8 06 cc 31 54 75 cc 6f 0d 9c 66 e1 b6 -23 71 d4 5c e2 39 2e 1a c9 28 44 c3 10 10 2f 15 -6a 0d 8d 52 c1 f4 c4 0b a3 aa 65 09 57 86 cb 76 -97 57 a6 56 3b a9 58 fe d0 bc c9 84 e8 b5 17 a3 -d5 f5 15 b2 3b 8a 41 e7 4a a8 67 69 3f 90 df b0 -61 a6 e8 6d fa ae e6 44 72 c0 0e 5f 20 94 57 29 -cb eb e7 7f 06 ce 78 e0 8f 40 98 fb a4 1f 9d 61 -93 c0 31 7e 8b 60 d4 b6 08 4a cb 42 d2 9e 38 08 -a3 bc 37 2d 85 e3 31 17 0f cb f7 cc 72 d0 b7 1c -29 66 48 b3 a4 d1 0f 41 62 95 d0 80 7a a6 25 ca -b2 74 4f d9 ea 8f d2 23 c4 25 37 02 98 28 bd 16 -be 02 54 6f 13 0f d2 e3 3b 93 6d 26 76 e0 8a ed -1b 73 31 8b 75 0a 01 67 d0 - -# Salt: -de e9 59 c7 e0 64 11 36 14 20 ff 80 18 5e d5 7f -3e 67 76 af - -# Signature: -90 74 30 8f b5 98 e9 70 1b 22 94 38 8e 52 f9 71 -fa ac 2b 60 a5 14 5a f1 85 df 52 87 b5 ed 28 87 -e5 7c e7 fd 44 dc 86 34 e4 07 c8 e0 e4 36 0b c2 -26 f3 ec 22 7f 9d 9e 54 63 8e 8d 31 f5 05 12 15 -df 6e bb 9c 2f 95 79 aa 77 59 8a 38 f9 14 b5 b9 -c1 bd 83 c4 e2 f9 f3 82 a0 d0 aa 35 42 ff ee 65 -98 4a 60 1b c6 9e b2 8d eb 27 dc a1 2c 82 c2 d4 -c3 f6 6c d5 00 f1 ff 2b 99 4d 8a 4e 30 cb b3 3c - -# -------------------------------- -# RSASSA-PSS Signature Example 1.2 -# -------------------------------- - -# Message to be signed: -85 13 84 cd fe 81 9c 22 ed 6c 4c cb 30 da eb 5c -f0 59 bc 8e 11 66 b7 e3 53 0c 4c 23 3e 2b 5f 8f -71 a1 cc a5 82 d4 3e cc 72 b1 bc a1 6d fc 70 13 -22 6b 9e - -# Salt: -ef 28 69 fa 40 c3 46 cb 18 3d ab 3d 7b ff c9 8f -d5 6d f4 2d - -# Signature: -3e f7 f4 6e 83 1b f9 2b 32 27 41 42 a5 85 ff ce -fb dc a7 b3 2a e9 0d 10 fb 0f 0c 72 99 84 f0 4e -f2 9a 9d f0 78 07 75 ce 43 73 9b 97 83 83 90 db -0a 55 05 e6 3d e9 27 02 8d 9d 29 b2 19 ca 2c 45 -17 83 25 58 a5 5d 69 4a 6d 25 b9 da b6 60 03 c4 -cc cd 90 78 02 19 3b e5 17 0d 26 14 7d 37 b9 35 -90 24 1b e5 1c 25 05 5f 47 ef 62 75 2c fb e2 14 -18 fa fe 98 c2 2c 4d 4d 47 72 4f db 56 69 e8 43 - -# -------------------------------- -# RSASSA-PSS Signature Example 1.3 -# -------------------------------- - -# Message to be signed: -a4 b1 59 94 17 61 c4 0c 6a 82 f2 b8 0d 1b 94 f5 -aa 26 54 fd 17 e1 2d 58 88 64 67 9b 54 cd 04 ef -8b d0 30 12 be 8d c3 7f 4b 83 af 79 63 fa ff 0d -fa 22 54 77 43 7c 48 01 7f f2 be 81 91 cf 39 55 -fc 07 35 6e ab 3f 32 2f 7f 62 0e 21 d2 54 e5 db -43 24 27 9f e0 67 e0 91 0e 2e 81 ca 2c ab 31 c7 -45 e6 7a 54 05 8e b5 0d 99 3c db 9e d0 b4 d0 29 -c0 6d 21 a9 4c a6 61 c3 ce 27 fa e1 d6 cb 20 f4 -56 4d 66 ce 47 67 58 3d 0e 5f 06 02 15 b5 90 17 -be 85 ea 84 89 39 12 7b d8 c9 c4 d4 7b 51 05 6c -03 1c f3 36 f1 7c 99 80 f3 b8 f5 b9 b6 87 8e 8b -79 7a a4 3b 88 26 84 33 3e 17 89 3f e9 ca a6 aa -29 9f 7e d1 a1 8e e2 c5 48 64 b7 b2 b9 9b 72 61 -8f b0 25 74 d1 39 ef 50 f0 19 c9 ee f4 16 97 13 -38 e7 d4 70 - -# Salt: -71 0b 9c 47 47 d8 00 d4 de 87 f1 2a fd ce 6d f1 -81 07 cc 77 - -# Signature: -66 60 26 fb a7 1b d3 e7 cf 13 15 7c c2 c5 1a 8e -4a a6 84 af 97 78 f9 18 49 f3 43 35 d1 41 c0 01 -54 c4 19 76 21 f9 62 4a 67 5b 5a bc 22 ee 7d 5b -aa ff aa e1 c9 ba ca 2c c3 73 b3 f3 3e 78 e6 14 -3c 39 5a 91 aa 7f ac a6 64 eb 73 3a fd 14 d8 82 -72 59 d9 9a 75 50 fa ca 50 1e f2 b0 4e 33 c2 3a -a5 1f 4b 9e 82 82 ef db 72 8c c0 ab 09 40 5a 91 -60 7c 63 69 96 1b c8 27 0d 2d 4f 39 fc e6 12 b1 - -# -------------------------------- -# RSASSA-PSS Signature Example 1.4 -# -------------------------------- - -# Message to be signed: -bc 65 67 47 fa 9e af b3 f0 - -# Salt: -05 6f 00 98 5d e1 4d 8e f5 ce a9 e8 2f 8c 27 be -f7 20 33 5e - -# Signature: -46 09 79 3b 23 e9 d0 93 62 dc 21 bb 47 da 0b 4f -3a 76 22 64 9a 47 d4 64 01 9b 9a ea fe 53 35 9c -17 8c 91 cd 58 ba 6b cb 78 be 03 46 a7 bc 63 7f -4b 87 3d 4b ab 38 ee 66 1f 19 96 34 c5 47 a1 ad -84 42 e0 3d a0 15 b1 36 e5 43 f7 ab 07 c0 c1 3e -42 25 b8 de 8c ce 25 d4 f6 eb 84 00 f8 1f 7e 18 -33 b7 ee 6e 33 4d 37 09 64 ca 79 fd b8 72 b4 d7 -52 23 b5 ee b0 81 01 59 1f b5 32 d1 55 a6 de 87 - -# -------------------------------- -# RSASSA-PSS Signature Example 1.5 -# -------------------------------- - -# Message to be signed: -b4 55 81 54 7e 54 27 77 0c 76 8e 8b 82 b7 55 64 -e0 ea 4e 9c 32 59 4d 6b ff 70 65 44 de 0a 87 76 -c7 a8 0b 45 76 55 0e ee 1b 2a ca bc 7e 8b 7d 3e -f7 bb 5b 03 e4 62 c1 10 47 ea dd 00 62 9a e5 75 -48 0a c1 47 0f e0 46 f1 3a 2b f5 af 17 92 1d c4 -b0 aa 8b 02 be e6 33 49 11 65 1d 7f 85 25 d1 0f -32 b5 1d 33 be 52 0d 3d df 5a 70 99 55 a3 df e7 -82 83 b9 e0 ab 54 04 6d 15 0c 17 7f 03 7f dc cc -5b e4 ea 5f 68 b5 e5 a3 8c 9d 7e dc cc c4 97 5f -45 5a 69 09 b4 - -# Salt: -80 e7 0f f8 6a 08 de 3e c6 09 72 b3 9b 4f bf dc -ea 67 ae 8e - -# Signature: -1d 2a ad 22 1c a4 d3 1d df 13 50 92 39 01 93 98 -e3 d1 4b 32 dc 34 dc 5a f4 ae ae a3 c0 95 af 73 -47 9c f0 a4 5e 56 29 63 5a 53 a0 18 37 76 15 b1 -6c b9 b1 3b 3e 09 d6 71 eb 71 e3 87 b8 54 5c 59 -60 da 5a 64 77 6e 76 8e 82 b2 c9 35 83 bf 10 4c -3f db 23 51 2b 7b 4e 89 f6 33 dd 00 63 a5 30 db -45 24 b0 1c 3f 38 4c 09 31 0e 31 5a 79 dc d3 d6 -84 02 2a 7f 31 c8 65 a6 64 e3 16 97 8b 75 9f ad - -# -------------------------------- -# RSASSA-PSS Signature Example 1.6 -# -------------------------------- - -# Message to be signed: -10 aa e9 a0 ab 0b 59 5d 08 41 20 7b 70 0d 48 d7 -5f ae dd e3 b7 75 cd 6b 4c c8 8a e0 6e 46 94 ec -74 ba 18 f8 52 0d 4f 5e a6 9c bb e7 cc 2b eb a4 -3e fd c1 02 15 ac 4e b3 2d c3 02 a1 f5 3d c6 c4 -35 22 67 e7 93 6c fe bf 7c 8d 67 03 57 84 a3 90 -9f a8 59 c7 b7 b5 9b 8e 39 c5 c2 34 9f 18 86 b7 -05 a3 02 67 d4 02 f7 48 6a b4 f5 8c ad 5d 69 ad -b1 7a b8 cd 0c e1 ca f5 02 5a f4 ae 24 b1 fb 87 -94 c6 07 0c c0 9a 51 e2 f9 91 13 11 e3 87 7d 00 -44 c7 1c 57 a9 93 39 50 08 80 6b 72 3a c3 83 73 -d3 95 48 18 18 52 8c 1e 70 53 73 92 82 05 35 29 -51 0e 93 5c d0 fa 77 b8 fa 53 cc 2d 47 4b d4 fb -3c c5 c6 72 d6 ff dc 90 a0 0f 98 48 71 2c 4b cf -e4 6c 60 57 36 59 b1 1e 64 57 e8 61 f0 f6 04 b6 -13 8d 14 4f 8c e4 e2 da 73 - -# Salt: -a8 ab 69 dd 80 1f 00 74 c2 a1 fc 60 64 98 36 c6 -16 d9 96 81 - -# Signature: -2a 34 f6 12 5e 1f 6b 0b f9 71 e8 4f bd 41 c6 32 -be 8f 2c 2a ce 7d e8 b6 92 6e 31 ff 93 e9 af 98 -7f bc 06 e5 1e 9b e1 4f 51 98 f9 1f 3f 95 3b d6 -7d a6 0a 9d f5 97 64 c3 dc 0f e0 8e 1c be f0 b7 -5f 86 8d 10 ad 3f ba 74 9f ef 59 fb 6d ac 46 a0 -d6 e5 04 36 93 31 58 6f 58 e4 62 8f 39 aa 27 89 -82 54 3b c0 ee b5 37 dc 61 95 80 19 b3 94 fb 27 -3f 21 58 58 a0 a0 1a c4 d6 50 b9 55 c6 7f 4c 58 - -# ============================================= - -# ================================== -# Example 2: A 1025-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -01 d4 0c 1b cf 97 a6 8a e7 cd bd 8a 7b f3 e3 4f -a1 9d cc a4 ef 75 a4 74 54 37 5f 94 51 4d 88 fe -d0 06 fb 82 9f 84 19 ff 87 d6 31 5d a6 8a 1f f3 -a0 93 8e 9a bb 34 64 01 1c 30 3a d9 91 99 cf 0c -7c 7a 8b 47 7d ce 82 9e 88 44 f6 25 b1 15 e5 e9 -c4 a5 9c f8 f8 11 3b 68 34 33 6a 2f d2 68 9b 47 -2c bb 5e 5c ab e6 74 35 0c 59 b6 c1 7e 17 68 74 -fb 42 f8 fc 3d 17 6a 01 7e dc 61 fd 32 6c 4b 33 -c9 - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -02 7d 14 7e 46 73 05 73 77 fd 1e a2 01 56 57 72 -17 6a 7d c3 83 58 d3 76 04 56 85 a2 e7 87 c2 3c -15 57 6b c1 6b 9f 44 44 02 d6 bf c5 d9 8a 3e 88 -ea 13 ef 67 c3 53 ec a0 c0 dd ba 92 55 bd 7b 8b -b5 0a 64 4a fd fd 1d d5 16 95 b2 52 d2 2e 73 18 -d1 b6 68 7a 1c 10 ff 75 54 5f 3d b0 fe 60 2d 5f -2b 7f 29 4e 36 01 ea b7 b9 d1 ce cd 76 7f 64 69 -2e 3e 53 6c a2 84 6c b0 c2 dd 48 6a 39 fa 75 b1 - -# Prime p: -01 66 01 e9 26 a0 f8 c9 e2 6e ca b7 69 ea 65 a5 -e7 c5 2c c9 e0 80 ef 51 94 57 c6 44 da 68 91 c5 -a1 04 d3 ea 79 55 92 9a 22 e7 c6 8a 7a f9 fc ad -77 7c 3c cc 2b 9e 3d 36 50 bc e4 04 39 9b 7e 59 -d1 - -# Prime q: -01 4e af a1 d4 d0 18 4d a7 e3 1f 87 7d 12 81 dd -da 62 56 64 86 9e 83 79 e6 7a d3 b7 5e ae 74 a5 -80 e9 82 7a bd 6e b7 a0 02 cb 54 11 f5 26 67 97 -76 8f b8 e9 5a e4 0e 3e 8a 01 f3 5f f8 9e 56 c0 -79 - -# p's CRT exponent dP: -e2 47 cc e5 04 93 9b 8f 0a 36 09 0d e2 00 93 87 -55 e2 44 4b 29 53 9a 7d a7 a9 02 f6 05 68 35 c0 -db 7b 52 55 94 97 cf e2 c6 1a 80 86 d0 21 3c 47 -2c 78 85 18 00 b1 71 f6 40 1d e2 e9 c2 75 6f 31 - -# q's CRT exponent dQ: -b1 2f ba 75 78 55 e5 86 e4 6f 64 c3 8a 70 c6 8b -3f 54 8d 93 d7 87 b3 99 99 9d 4c 8f 0b bd 25 81 -c2 1e 19 ed 00 18 a6 d5 d3 df 86 42 4b 3a bc ad -40 19 9d 31 49 5b 61 30 9f 27 c1 bf 55 d4 87 c1 - -# CRT coefficient qInv: -56 4b 1e 1f a0 03 bd a9 1e 89 09 04 25 aa c0 5b -91 da 9e e2 50 61 e7 62 8d 5f 51 30 4a 84 99 2f -dc 33 76 2b d3 78 a5 9f 03 0a 33 4d 53 2b d0 da -e8 f2 98 ea 9e d8 44 63 6a d5 fb 8c bd c0 3c ad - -# -------------------------------- -# RSASSA-PSS Signature Example 2.1 -# -------------------------------- - -# Message to be signed: -da ba 03 20 66 26 3f ae db 65 98 48 11 52 78 a5 -2c 44 fa a3 a7 6f 37 51 5e d3 36 32 10 72 c4 0a -9d 9b 53 bc 05 01 40 78 ad f5 20 87 51 46 aa e7 -0f f0 60 22 6d cb 7b 1f 1f c2 7e 93 60 - -# Salt: -57 bf 16 0b cb 02 bb 1d c7 28 0c f0 45 85 30 b7 -d2 83 2f f7 - -# Signature: -01 4c 5b a5 33 83 28 cc c6 e7 a9 0b f1 c0 ab 3f -d6 06 ff 47 96 d3 c1 2e 4b 63 9e d9 13 6a 5f ec -6c 16 d8 88 4b dd 99 cf dc 52 14 56 b0 74 2b 73 -68 68 cf 90 de 09 9a db 8d 5f fd 1d ef f3 9b a4 -00 7a b7 46 ce fd b2 2d 7d f0 e2 25 f5 46 27 dc -65 46 61 31 72 1b 90 af 44 53 63 a8 35 8b 9f 60 -76 42 f7 8f ab 0a b0 f4 3b 71 68 d6 4b ae 70 d8 -82 78 48 d8 ef 1e 42 1c 57 54 dd f4 2c 25 89 b5 -b3 - -# -------------------------------- -# RSASSA-PSS Signature Example 2.2 -# -------------------------------- - -# Message to be signed: -e4 f8 60 1a 8a 6d a1 be 34 44 7c 09 59 c0 58 57 -0c 36 68 cf d5 1d d5 f9 cc d6 ad 44 11 fe 82 13 -48 6d 78 a6 c4 9f 93 ef c2 ca 22 88 ce bc 2b 9b -60 bd 04 b1 e2 20 d8 6e 3d 48 48 d7 09 d0 32 d1 -e8 c6 a0 70 c6 af 9a 49 9f cf 95 35 4b 14 ba 61 -27 c7 39 de 1b b0 fd 16 43 1e 46 93 8a ec 0c f8 -ad 9e b7 2e 83 2a 70 35 de 9b 78 07 bd c0 ed 8b -68 eb 0f 5a c2 21 6b e4 0c e9 20 c0 db 0e dd d3 -86 0e d7 88 ef ac ca ca 50 2d 8f 2b d6 d1 a7 c1 -f4 1f f4 6f 16 81 c8 f1 f8 18 e9 c4 f6 d9 1a 0c -78 03 cc c6 3d 76 a6 54 4d 84 3e 08 4e 36 3b 8a -cc 55 aa 53 17 33 ed b5 de e5 b5 19 6e 9f 03 e8 -b7 31 b3 77 64 28 d9 e4 57 fe 3f bc b3 db 72 74 -44 2d 78 58 90 e9 cb 08 54 b6 44 4d ac e7 91 d7 -27 3d e1 88 97 19 33 8a 77 fe - -# Salt: -7f 6d d3 59 e6 04 e6 08 70 e8 98 e4 7b 19 bf 2e -5a 7b 2a 90 - -# Signature: -01 09 91 65 6c ca 18 2b 7f 29 d2 db c0 07 e7 ae -0f ec 15 8e b6 75 9c b9 c4 5c 5f f8 7c 76 35 dd -46 d1 50 88 2f 4d e1 e9 ae 65 e7 f7 d9 01 8f 68 -36 95 4a 47 c0 a8 1a 8a 6b 6f 83 f2 94 4d 60 81 -b1 aa 7c 75 9b 25 4b 2c 34 b6 91 da 67 cc 02 26 -e2 0b 2f 18 b4 22 12 76 1d cd 4b 90 8a 62 b3 71 -b5 91 8c 57 42 af 4b 53 7e 29 69 17 67 4f b9 14 -19 47 61 62 1c c1 9a 41 f6 fb 95 3f bc bb 64 9d -ea - -# -------------------------------- -# RSASSA-PSS Signature Example 2.3 -# -------------------------------- - -# Message to be signed: -52 a1 d9 6c 8a c3 9e 41 e4 55 80 98 01 b9 27 a5 -b4 45 c1 0d 90 2a 0d cd 38 50 d2 2a 66 d2 bb 07 -03 e6 7d 58 67 11 45 95 aa bf 5a 7a eb 5a 8f 87 -03 4b bb 30 e1 3c fd 48 17 a9 be 76 23 00 23 60 -6d 02 86 a3 fa f8 a4 d2 2b 72 8e c5 18 07 9f 9e -64 52 6e 3a 0c c7 94 1a a3 38 c4 37 99 7c 68 0c -ca c6 7c 66 bf a1 - -# Salt: -fc a8 62 06 8b ce 22 46 72 4b 70 8a 05 19 da 17 -e6 48 68 8c - -# Signature: -00 7f 00 30 01 8f 53 cd c7 1f 23 d0 36 59 fd e5 -4d 42 41 f7 58 a7 50 b4 2f 18 5f 87 57 85 20 c3 -07 42 af d8 43 59 b6 e6 e8 d3 ed 95 9d c6 fe 48 -6b ed c8 e2 cf 00 1f 63 a7 ab e1 62 56 a1 b8 4d -f0 d2 49 fc 05 d3 19 4c e5 f0 91 27 42 db bf 80 -dd 17 4f 6c 51 f6 ba d7 f1 6c f3 36 4e ba 09 5a -06 26 7d c3 79 38 03 ac 75 26 ae be 0a 47 5d 38 -b8 c2 24 7a b5 1c 48 98 df 70 47 dc 6a df 52 c6 -c4 - -# -------------------------------- -# RSASSA-PSS Signature Example 2.4 -# -------------------------------- - -# Message to be signed: -a7 18 2c 83 ac 18 be 65 70 a1 06 aa 9d 5c 4e 3d -bb d4 af ae b0 c6 0c 4a 23 e1 96 9d 79 ff - -# Salt: -80 70 ef 2d e9 45 c0 23 87 68 4b a0 d3 30 96 73 -22 35 d4 40 - -# Signature: -00 9c d2 f4 ed be 23 e1 23 46 ae 8c 76 dd 9a d3 -23 0a 62 07 61 41 f1 6c 15 2b a1 85 13 a4 8e f6 -f0 10 e0 e3 7f d3 df 10 a1 ec 62 9a 0c b5 a3 b5 -d2 89 30 07 29 8c 30 93 6a 95 90 3b 6b a8 55 55 -d9 ec 36 73 a0 61 08 fd 62 a2 fd a5 6d 1c e2 e8 -5c 4d b6 b2 4a 81 ca 3b 49 6c 36 d4 fd 06 eb 7c -91 66 d8 e9 48 77 c4 2b ea 62 2b 3b fe 92 51 fd -c2 1d 8d 53 71 ba da d7 8a 48 82 14 79 63 35 b4 -0b - -# -------------------------------- -# RSASSA-PSS Signature Example 2.5 -# -------------------------------- - -# Message to be signed: -86 a8 3d 4a 72 ee 93 2a 4f 56 30 af 65 79 a3 86 -b7 8f e8 89 99 e0 ab d2 d4 90 34 a4 bf c8 54 dd -94 f1 09 4e 2e 8c d7 a1 79 d1 95 88 e4 ae fc 1b -1b d2 5e 95 e3 dd 46 1f - -# Salt: -17 63 9a 4e 88 d7 22 c4 fc a2 4d 07 9a 8b 29 c3 -24 33 b0 c9 - -# Signature: -00 ec 43 08 24 93 1e bd 3b aa 43 03 4d ae 98 ba -64 6b 8c 36 01 3d 16 71 c3 cf 1c f8 26 0c 37 4b -19 f8 e1 cc 8d 96 50 12 40 5e 7e 9b f7 37 86 12 -df cc 85 fc e1 2c da 11 f9 50 bd 0b a8 87 67 40 -43 6c 1d 25 95 a6 4a 1b 32 ef cf b7 4a 21 c8 73 -b3 cc 33 aa f4 e3 dc 39 53 de 67 f0 67 4c 04 53 -b4 fd 9f 60 44 06 d4 41 b8 16 09 8c b1 06 fe 34 -72 bc 25 1f 81 5f 59 db 2e 43 78 a3 ad dc 18 1e -cf - -# -------------------------------- -# RSASSA-PSS Signature Example 2.6 -# -------------------------------- - -# Message to be signed: -04 9f 91 54 d8 71 ac 4a 7c 7a b4 53 25 ba 75 45 -a1 ed 08 f7 05 25 b2 66 7c f1 - -# Salt: -37 81 0d ef 10 55 ed 92 2b 06 3d f7 98 de 5d 0a -ab f8 86 ee - -# Signature: -00 47 5b 16 48 f8 14 a8 dc 0a bd c3 7b 55 27 f5 -43 b6 66 bb 6e 39 d3 0e 5b 49 d3 b8 76 dc cc 58 -ea c1 4e 32 a2 d5 5c 26 16 01 44 56 ad 2f 24 6f -c8 e3 d5 60 da 3d df 37 9a 1c 0b d2 00 f1 02 21 -df 07 8c 21 9a 15 1b c8 d4 ec 9d 2f c2 56 44 67 -81 10 14 ef 15 d8 ea 01 c2 eb bf f8 c2 c8 ef ab -38 09 6e 55 fc be 32 85 c7 aa 55 88 51 25 4f af -fa 92 c1 c7 2b 78 75 86 63 ef 45 82 84 31 39 d7 -a6 - -# ============================================= - -# ================================== -# Example 3: A 1026-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -02 f2 46 ef 45 1e d3 ee bb 9a 31 02 00 cc 25 85 -9c 04 8e 4b e7 98 30 29 91 11 2e b6 8c e6 db 67 -4e 28 0d a2 1f ed ed 1a e7 48 80 ca 52 2b 18 db -24 93 85 01 28 27 c5 15 f0 e4 66 a1 ff a6 91 d9 -81 70 57 4e 9d 0e ad b0 87 58 6c a4 89 33 da 3c -c9 53 d9 5b d0 ed 50 de 10 dd cb 67 36 10 7d 6c -83 1c 7f 66 3e 83 3c a4 c0 97 e7 00 ce 0f b9 45 -f8 8f b8 5f e8 e5 a7 73 17 25 65 b9 14 a4 71 a4 -43 - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -65 14 51 73 3b 56 de 5a c0 a6 89 a4 ae b6 e6 89 -4a 69 01 4e 07 6c 88 dd 7a 66 7e ab 32 32 bb cc -d2 fc 44 ba 2f a9 c3 1d b4 6f 21 ed d1 fd b2 3c -5c 12 8a 5d a5 ba b9 1e 7f 95 2b 67 75 9c 7c ff -70 54 15 ac 9f a0 90 7c 7c a6 17 8f 66 8f b9 48 -d8 69 da 4c c3 b7 35 6f 40 08 df d5 44 9d 32 ee -02 d9 a4 77 eb 69 fc 29 26 6e 5d 90 70 51 23 75 -a5 0f bb cc 27 e2 38 ad 98 42 5f 6e bb f8 89 91 - -# Prime p: -01 bd 36 e1 8e ce 4b 0f db 2e 9c 9d 54 8b d1 a7 -d6 e2 c2 1c 6f dc 35 07 4a 1d 05 b1 c6 c8 b3 d5 -58 ea 26 39 c9 a9 a4 21 68 01 69 31 72 52 55 8b -d1 48 ad 21 5a ac 55 0e 2d cf 12 a8 2d 0e bf e8 -53 - -# Prime q: -01 b1 b6 56 ad 86 d8 e1 9d 5d c8 62 92 b3 a1 92 -fd f6 e0 dd 37 87 7b ad 14 82 2f a0 01 90 ca b2 -65 f9 0d 3f 02 05 7b 6f 54 d6 ec b1 44 91 e5 ad -ea ce bc 48 bf 0e bd 2a 2a d2 6d 40 2e 54 f6 16 -51 - -# p's CRT exponent dP: -1f 27 79 fd 2e 3e 5e 6b ae 05 53 95 18 fb a0 cd -0e ad 1a a4 51 3a 7c ba 18 f1 cf 10 e3 f6 81 95 -69 3d 27 8a 0f 0e e7 2f 89 f9 bc 76 0d 80 e2 f9 -d0 26 1d 51 65 01 c6 ae 39 f1 4a 47 6c e2 cc f5 - -# q's CRT exponent dQ: -01 1a 0d 36 79 4b 04 a8 54 aa b4 b2 46 2d 43 9a -50 46 c9 1d 94 0b 2b c6 f7 5b 62 95 6f ef 35 a2 -a6 e6 3c 53 09 81 7f 30 7b bf f9 d5 9e 7e 33 1b -d3 63 f6 d6 68 49 b1 83 46 ad ea 16 9f 0a e9 ae -c1 - -# CRT coefficient qInv: -0b 30 f0 ec f5 58 75 2f b3 a6 ce 4b a2 b8 c6 75 -f6 59 eb a6 c3 76 58 5a 1b 39 71 2d 03 8a e3 d2 -b4 6f cb 41 8a e1 5d 09 05 da 64 40 e1 51 3a 30 -b9 b7 d6 66 8f bc 5e 88 e5 ab 7a 17 5e 73 ba 35 - -# -------------------------------- -# RSASSA-PSS Signature Example 3.1 -# -------------------------------- - -# Message to be signed: -59 4b 37 33 3b bb 2c 84 52 4a 87 c1 a0 1f 75 fc -ec 0e 32 56 f1 08 e3 8d ca 36 d7 0d 00 57 - -# Salt: -f3 1a d6 c8 cf 89 df 78 ed 77 fe ac bc c2 f8 b0 -a8 e4 cf aa - -# Signature: -00 88 b1 35 fb 17 94 b6 b9 6c 4a 3e 67 81 97 f8 -ca c5 2b 64 b2 fe 90 7d 6f 27 de 76 11 24 96 4a -99 a0 1a 88 27 40 ec fa ed 6c 01 a4 74 64 bb 05 -18 23 13 c0 13 38 a8 cd 09 72 14 cd 68 ca 10 3b -d5 7d 3b c9 e8 16 21 3e 61 d7 84 f1 82 46 7a bf -8a 01 cf 25 3e 99 a1 56 ea a8 e3 e1 f9 0e 3c 6e -4e 3a a2 d8 3e d0 34 5b 89 fa fc 9c 26 07 7c 14 -b6 ac 51 45 4f a2 6e 44 6e 3a 2f 15 3b 2b 16 79 -7f - -# -------------------------------- -# RSASSA-PSS Signature Example 3.2 -# -------------------------------- - -# Message to be signed: -8b 76 95 28 88 4a 0d 1f fd 09 0c f1 02 99 3e 79 -6d ad cf bd dd 38 e4 4f f6 32 4c a4 51 - -# Salt: -fc f9 f0 e1 f1 99 a3 d1 d0 da 68 1c 5b 86 06 fc -64 29 39 f7 - -# Signature: -02 a5 f0 a8 58 a0 86 4a 4f 65 01 7a 7d 69 45 4f -3f 97 3a 29 99 83 9b 7b bc 48 bf 78 64 11 69 17 -95 56 f5 95 fa 41 f6 ff 18 e2 86 c2 78 30 79 bc -09 10 ee 9c c3 4f 49 ba 68 11 24 f9 23 df a8 8f -42 61 41 a3 68 a5 f5 a9 30 c6 28 c2 c3 c2 00 e1 -8a 76 44 72 1a 0c be c6 dd 3f 62 79 bd e3 e8 f2 -be 5e 2d 4e e5 6f 97 e7 ce af 33 05 4b e7 04 2b -d9 1a 63 bb 09 f8 97 bd 41 e8 11 97 de e9 9b 11 -af - -# -------------------------------- -# RSASSA-PSS Signature Example 3.3 -# -------------------------------- - -# Message to be signed: -1a bd ba 48 9c 5a da 2f 99 5e d1 6f 19 d5 a9 4d -9e 6e c3 4a 8d 84 f8 45 57 d2 6e 5e f9 b0 2b 22 -88 7e 3f 9a 4b 69 0a d1 14 92 09 c2 0c 61 43 1f -0c 01 7c 36 c2 65 7b 35 d7 b0 7d 3f 5a d8 70 85 -07 a9 c1 b8 31 df 83 5a 56 f8 31 07 18 14 ea 5d -3d 8d 8f 6a de 40 cb a3 8b 42 db 7a 2d 3d 7a 29 -c8 f0 a7 9a 78 38 cf 58 a9 75 7f a2 fe 4c 40 df -9b aa 19 3b fc 6f 92 b1 23 ad 57 b0 7a ce 3e 6a -c0 68 c9 f1 06 af d9 ee b0 3b 4f 37 c2 5d bf bc -fb 30 71 f6 f9 77 17 66 d0 72 f3 bb 07 0a f6 60 -55 32 97 3a e2 50 51 - -# Salt: -98 6e 7c 43 db b6 71 bd 41 b9 a7 f4 b6 af c8 0e -80 5f 24 23 - -# Signature: -02 44 bc d1 c8 c1 69 55 73 6c 80 3b e4 01 27 2e -18 cb 99 08 11 b1 4f 72 db 96 41 24 d5 fa 76 06 -49 cb b5 7a fb 87 55 db b6 2b f5 1f 46 6c f2 3a -0a 16 07 57 6e 98 3d 77 8f ce ff a9 2d f7 54 8a -ea 8e a4 ec ad 2c 29 dd 9f 95 bc 07 fe 91 ec f8 -be e2 55 bf e8 76 2f d7 69 0a a9 bf a4 fa 08 49 -ef 72 8c 2c 42 c4 53 23 64 52 2d f2 ab 7f 9f 8a -03 b6 3f 7a 49 91 75 82 86 68 f5 ef 5a 29 e3 80 -2c - -# -------------------------------- -# RSASSA-PSS Signature Example 3.4 -# -------------------------------- - -# Message to be signed: -8f b4 31 f5 ee 79 2b 6c 2a c7 db 53 cc 42 86 55 -ae b3 2d 03 f4 e8 89 c5 c2 5d e6 83 c4 61 b5 3a -cf 89 f9 f8 d3 aa bd f6 b9 f0 c2 a1 de 12 e1 5b -49 ed b3 91 9a 65 2f e9 49 1c 25 a7 fc e1 f7 22 -c2 54 36 08 b6 9d c3 75 ec - -# Salt: -f8 31 2d 9c 8e ea 13 ec 0a 4c 7b 98 12 0c 87 50 -90 87 c4 78 - -# Signature: -01 96 f1 2a 00 5b 98 12 9c 8d f1 3c 4c b1 6f 8a -a8 87 d3 c4 0d 96 df 3a 88 e7 53 2e f3 9c d9 92 -f2 73 ab c3 70 bc 1b e6 f0 97 cf eb bf 01 18 fd -9e f4 b9 27 15 5f 3d f2 2b 90 4d 90 70 2d 1f 7b -a7 a5 2b ed 8b 89 42 f4 12 cd 7b d6 76 c9 d1 8e -17 03 91 dc d3 45 c0 6a 73 09 64 b3 f3 0b cc e0 -bb 20 ba 10 6f 9a b0 ee b3 9c f8 a6 60 7f 75 c0 -34 7f 0a f7 9f 16 af a0 81 d2 c9 2d 1e e6 f8 36 -b8 - -# -------------------------------- -# RSASSA-PSS Signature Example 3.5 -# -------------------------------- - -# Message to be signed: -fe f4 16 1d fa af 9c 52 95 05 1d fc 1f f3 81 0c -8c 9e c2 e8 66 f7 07 54 22 c8 ec 42 16 a9 c4 ff -49 42 7d 48 3c ae 10 c8 53 4a 41 b2 fd 15 fe e0 -69 60 ec 6f b3 f7 a7 e9 4a 2f 8a 2e 3e 43 dc 4a -40 57 6c 30 97 ac 95 3b 1d e8 6f 0b 4e d3 6d 64 -4f 23 ae 14 42 55 29 62 24 64 ca 0c bf 0b 17 41 -34 72 38 15 7f ab 59 e4 de 55 24 09 6d 62 ba ec -63 ac 64 - -# Salt: -50 32 7e fe c6 29 2f 98 01 9f c6 7a 2a 66 38 56 -3e 9b 6e 2d - -# Signature: -02 1e ca 3a b4 89 22 64 ec 22 41 1a 75 2d 92 22 -10 76 d4 e0 1c 0e 6f 0d de 9a fd 26 ba 5a cf 6d -73 9e f9 87 54 5d 16 68 3e 56 74 c9 e7 0f 1d e6 -49 d7 e6 1d 48 d0 ca eb 4f b4 d8 b2 4f ba 84 a6 -e3 10 8f ee 7d 07 05 97 32 66 ac 52 4b 4a d2 80 -f7 ae 17 dc 59 d9 6d 33 51 58 6b 5a 3b db 89 5d -1e 1f 78 20 ac 61 35 d8 75 34 80 99 83 82 ba 32 -b7 34 95 59 60 8c 38 74 52 90 a8 5e f4 e9 f9 bd -83 - -# -------------------------------- -# RSASSA-PSS Signature Example 3.6 -# -------------------------------- - -# Message to be signed: -ef d2 37 bb 09 8a 44 3a ee b2 bf 6c 3f 8c 81 b8 -c0 1b 7f cb 3f eb - -# Salt: -b0 de 3f c2 5b 65 f5 af 96 b1 d5 cc 3b 27 d0 c6 -05 30 87 b3 - -# Signature: -01 2f af ec 86 2f 56 e9 e9 2f 60 ab 0c 77 82 4f -42 99 a0 ca 73 4e d2 6e 06 44 d5 d2 22 c7 f0 bd -e0 39 64 f8 e7 0a 5c b6 5e d4 4e 44 d5 6a e0 ed -f1 ff 86 ca 03 2c c5 dd 44 04 db b7 6a b8 54 58 -6c 44 ee d8 33 6d 08 d4 57 ce 6c 03 69 3b 45 c0 -f1 ef ef 93 62 4b 95 b8 ec 16 9c 61 6d 20 e5 53 -8e bc 0b 67 37 a6 f8 2b 4b c0 57 09 24 fc 6b 35 -75 9a 33 48 42 62 79 f8 b3 d7 74 4e 2d 22 24 26 -ce - -# ============================================= - -# ================================== -# Example 4: A 1027-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -05 4a db 78 86 44 7e fe 6f 57 e0 36 8f 06 cf 52 -b0 a3 37 07 60 d1 61 ce f1 26 b9 1b e7 f8 9c 42 -1b 62 a6 ec 1d a3 c3 11 d7 5e d5 0e 0a b5 ff f3 -fd 33 8a cc 3a a8 a4 e7 7e e2 63 69 ac b8 1b a9 -00 fa 83 f5 30 0c f9 bb 6c 53 ad 1d c8 a1 78 b8 -15 db 42 35 a9 a9 da 0c 06 de 4e 61 5e a1 27 7c -e5 59 e9 c1 08 de 58 c1 4a 81 aa 77 f5 a6 f8 d1 -33 54 94 49 88 48 c8 b9 59 40 74 0b e7 bf 7c 37 -05 - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -fa 04 1f 8c d9 69 7c ee d3 8e c8 ca a2 75 52 3b -4d d7 2b 09 a3 01 d3 54 1d 72 f5 d3 1c 05 cb ce -2d 69 83 b3 61 83 af 10 69 0b d4 6c 46 13 1e 35 -78 94 31 a5 56 77 1d d0 04 9b 57 46 1b f0 60 c1 -f6 84 72 e8 a6 7c 25 f3 57 e5 b6 b4 73 8f a5 41 -a7 30 34 6b 4a 07 64 9a 2d fa 80 6a 69 c9 75 b6 -ab a6 46 78 ac c7 f5 91 3e 89 c6 22 f2 d8 ab b1 -e3 e3 25 54 e3 9d f9 4b a6 0c 00 2e 38 7d 90 11 - -# Prime p: -02 92 32 33 6d 28 38 94 5d ba 9d d7 72 3f 4e 62 -4a 05 f7 37 5b 92 7a 87 ab e6 a8 93 a1 65 8f d4 -9f 47 f6 c7 b0 fa 59 6c 65 fa 68 a2 3f 0a b4 32 -96 2d 18 d4 34 3b d6 fd 67 1a 5e a8 d1 48 41 39 -95 - -# Prime q: -02 0e f5 ef e7 c5 39 4a ed 22 72 f7 e8 1a 74 f4 -c0 2d 14 58 94 cb 1b 3c ab 23 a9 a0 71 0a 2a fc -7e 33 29 ac bb 74 3d 01 f6 80 c4 d0 2a fb 4c 8f -de 7e 20 93 08 11 bb 2b 99 57 88 b5 e8 72 c2 0b -b1 - -# p's CRT exponent dP: -02 6e 7e 28 01 0e cf 24 12 d9 52 3a d7 04 64 7f -b4 fe 9b 66 b1 a6 81 58 1b 0e 15 55 3a 89 b1 54 -28 28 89 8f 27 24 3e ba b4 5f f5 e1 ac b9 d4 df -1b 05 1f bc 62 82 4d bc 6f 6c 93 26 1a 78 b9 a7 -59 - -# q's CRT exponent dQ: -01 2d dc c8 6e f6 55 99 8c 39 dd ae 11 71 86 69 -e5 e4 6c f1 49 5b 07 e1 3b 10 14 cd 69 b3 af 68 -30 4a d2 a6 b6 43 21 e7 8b f3 bb ca 9b b4 94 e9 -1d 45 17 17 e2 d9 75 64 c6 54 94 65 d0 20 5c f4 -21 - -# CRT coefficient qInv: -01 06 00 c4 c2 18 47 45 9f e5 76 70 3e 2e be ca -e8 a5 09 4e e6 3f 53 6b f4 ac 68 d3 c1 3e 5e 4f -12 ac 5c c1 0a b6 a2 d0 5a 19 92 14 d1 82 47 47 -d5 51 90 96 36 b7 74 c2 2c ac 0b 83 75 99 ab cc -75 - -# -------------------------------- -# RSASSA-PSS Signature Example 4.1 -# -------------------------------- - -# Message to be signed: -9f b0 3b 82 7c 82 17 d9 - -# Salt: -ed 7c 98 c9 5f 30 97 4f be 4f bd dc f0 f2 8d 60 -21 c0 e9 1d - -# Signature: -03 23 d5 b7 bf 20 ba 45 39 28 9a e4 52 ae 42 97 -08 0f ef f4 51 84 23 ff 48 11 a8 17 83 7e 7d 82 -f1 83 6c df ab 54 51 4f f0 88 7b dd ee bf 40 bf -99 b0 47 ab c3 ec fa 6a 37 a3 ef 00 f4 a0 c4 a8 -8a ae 09 04 b7 45 c8 46 c4 10 7e 87 97 72 3e 8a -c8 10 d9 e3 d9 5d fa 30 ff 49 66 f4 d7 5d 13 76 -8d 20 85 7f 2b 14 06 f2 64 cf e7 5e 27 d7 65 2f -4b 5e d3 57 5f 28 a7 02 f8 c4 ed 9c f9 b2 d4 49 -48 - -# -------------------------------- -# RSASSA-PSS Signature Example 4.2 -# -------------------------------- - -# Message to be signed: -0c a2 ad 77 79 7e ce 86 de 5b f7 68 75 0d db 5e -d6 a3 11 6a d9 9b bd 17 ed f7 f7 82 f0 db 1c d0 -5b 0f 67 74 68 c5 ea 42 0d c1 16 b1 0e 80 d1 10 -de 2b 04 61 ea 14 a3 8b e6 86 20 39 2e 7e 89 3c -b4 ea 93 93 fb 88 6c 20 ff 79 06 42 30 5b f3 02 -00 38 92 e5 4d f9 f6 67 50 9d c5 39 20 df 58 3f -50 a3 dd 61 ab b6 fa b7 5d 60 03 77 e3 83 e6 ac -a6 71 0e ee a2 71 56 e0 67 52 c9 4c e2 5a e9 9f -cb f8 59 2d be 2d 7e 27 45 3c b4 4d e0 71 00 eb -b1 a2 a1 98 11 a4 78 ad be ab 27 0f 94 e8 fe 36 -9d 90 b3 ca 61 2f 9f - -# Salt: -22 d7 1d 54 36 3a 42 17 aa 55 11 3f 05 9b 33 84 -e3 e5 7e 44 - -# Signature: -04 9d 01 85 84 5a 26 4d 28 fe b1 e6 9e da ec 09 -06 09 e8 e4 6d 93 ab b3 83 71 ce 51 f4 aa 65 a5 -99 bd aa a8 1d 24 fb a6 6a 08 a1 16 cb 64 4f 3f -1e 65 3d 95 c8 9d b8 bb d5 da ac 27 09 c8 98 40 -00 17 84 10 a7 c6 aa 86 67 dd c3 8c 74 1f 71 0e -c8 66 5a a9 05 2b e9 29 d4 e3 b1 67 82 c1 66 21 -14 c5 41 4b b0 35 34 55 c3 92 fc 28 f3 db 59 05 -4b 5f 36 5c 49 e1 d1 56 f8 76 ee 10 cb 4f d7 05 -98 - -# -------------------------------- -# RSASSA-PSS Signature Example 4.3 -# -------------------------------- - -# Message to be signed: -28 80 62 af c0 8f cd b7 c5 f8 65 0b 29 83 73 00 -46 1d d5 67 6c 17 a2 0a 3c 8f b5 14 89 49 e3 f7 -3d 66 b3 ae 82 c7 24 0e 27 c5 b3 ec 43 28 ee 7d -6d df 6a 6a 0c 9b 5b 15 bc da 19 6a 9d 0c 76 b1 -19 d5 34 d8 5a bd 12 39 62 d5 83 b7 6c e9 d1 80 -bc e1 ca - -# Salt: -4a f8 70 fb c6 51 60 12 ca 91 6c 70 ba 86 2a c7 -e8 24 36 17 - -# Signature: -03 fb c4 10 a2 ce d5 95 00 fb 99 f9 e2 af 27 81 -ad a7 4e 13 14 56 24 60 27 82 e2 99 48 13 ee fc -a0 51 9e cd 25 3b 85 5f b6 26 a9 0d 77 1e ae 02 -8b 0c 47 a1 99 cb d9 f8 e3 26 97 34 af 41 63 59 -90 90 71 3a 3f a9 10 fa 09 60 65 27 21 43 2b 97 -10 36 a7 18 1a 2b c0 ca b4 3b 0b 59 8b c6 21 74 -61 d7 db 30 5f f7 e9 54 c5 b5 bb 23 1c 39 e7 91 -af 6b cf a7 6b 14 7b 08 13 21 f7 26 41 48 2a 2a -ad - -# -------------------------------- -# RSASSA-PSS Signature Example 4.4 -# -------------------------------- - -# Message to be signed: -6f 4f 9a b9 50 11 99 ce f5 5c 6c f4 08 fe 7b 36 -c5 57 c4 9d 42 0a 47 63 d2 46 3c 8a d4 4b 3c fc -5b e2 74 2c 0e 7d 9b 0f 66 08 f0 8c 7f 47 b6 93 -ee - -# Salt: -40 d2 e1 80 fa e1 ea c4 39 c1 90 b5 6c 2c 0e 14 -dd f9 a2 26 - -# Signature: -04 86 64 4b c6 6b f7 5d 28 33 5a 61 79 b1 08 51 -f4 3f 09 bd ed 9f ac 1a f3 32 52 bb 99 53 ba 42 -98 cd 64 66 b2 75 39 a7 0a da a3 f8 9b 3d b3 c7 -4a b6 35 d1 22 f4 ee 7c e5 57 a6 1e 59 b8 2f fb -78 66 30 e5 f9 db 53 c7 7d 9a 0c 12 fa b5 95 8d -4c 2c e7 da a8 07 cd 89 ba 2c c7 fc d0 2f f4 70 -ca 67 b2 29 fc ce 81 4c 85 2c 73 cc 93 be a3 5b -e6 84 59 ce 47 8e 9d 46 55 d1 21 c8 47 2f 37 1d -4f - -# -------------------------------- -# RSASSA-PSS Signature Example 4.5 -# -------------------------------- - -# Message to be signed: -e1 7d 20 38 5d 50 19 55 82 3c 3f 66 62 54 c1 d3 -dd 36 ad 51 68 b8 f1 8d 28 6f dc f6 7a 7d ad 94 -09 70 85 fa b7 ed 86 fe 21 42 a2 87 71 71 79 97 -ef 1a 7a 08 88 4e fc 39 35 6d 76 07 7a af 82 45 -9a 7f ad 45 84 88 75 f2 81 9b 09 89 37 fe 92 3b -cc 9d c4 42 d7 2d 75 4d 81 20 25 09 0c 9b c0 3d -b3 08 0c 13 8d d6 3b 35 5d 0b 4b 85 d6 68 8a c1 -9f 4d e1 50 84 a0 ba 4e 37 3b 93 ef 4a 55 50 96 -69 19 15 dc 23 c0 0e 95 4c de b2 0a 47 cd 55 d1 -6c 3d 86 81 d4 6e d7 f2 ed 5e a4 27 95 be 17 ba -ed 25 f0 f4 d1 13 b3 63 6a dd d5 85 f1 6a 8b 5a -ec 0c 8f a9 c5 f0 3c bf 3b 9b 73 - -# Salt: -24 97 dc 2b 46 15 df ae 5a 66 3d 49 ff d5 6b f7 -ef c1 13 04 - -# Signature: -02 2a 80 04 53 53 90 4c b3 0c bb 54 2d 7d 49 90 -42 1a 6e ec 16 a8 02 9a 84 22 ad fd 22 d6 af f8 -c4 cc 02 94 af 11 0a 0c 06 7e c8 6a 7d 36 41 34 -45 9b b1 ae 8f f8 36 d5 a8 a2 57 98 40 99 6b 32 -0b 19 f1 3a 13 fa d3 78 d9 31 a6 56 25 da e2 73 -9f 0c 53 67 0b 35 d9 d3 cb ac 08 e7 33 e4 ec 2b -83 af 4b 91 96 d6 3e 7c 4f f1 dd ea e2 a1 22 79 -1a 12 5b fe a8 de b0 de 8c cf 1f 4f fa f6 e6 fb -0a - -# -------------------------------- -# RSASSA-PSS Signature Example 4.6 -# -------------------------------- - -# Message to be signed: -af bc 19 d4 79 24 90 18 fd f4 e0 9f 61 87 26 44 -04 95 de 11 dd ee e3 88 72 d7 75 fc ea 74 a2 38 -96 b5 34 3c 9c 38 d4 6a f0 db a2 24 d0 47 58 0c -c6 0a 65 e9 39 1c f9 b5 9b 36 a8 60 59 8d 4e 82 -16 72 2f 99 3b 91 cf ae 87 bc 25 5a f8 9a 6a 19 -9b ca 4a 39 1e ad bc 3a 24 90 3c 0b d6 67 36 8f -6b e7 8e 3f ea bf b4 ff d4 63 12 27 63 74 0f fb -be fe ab 9a 25 56 4b c5 d1 c2 4c 93 e4 22 f7 50 -73 e2 ad 72 bf 45 b1 0d f0 0b 52 a1 47 12 8e 73 -fe e3 3f a3 f0 57 7d 77 f8 0f bc 2d f1 be d3 13 -29 0c 12 77 7f 50 - -# Salt: -a3 34 db 6f ae bf 11 08 1a 04 f8 7c 2d 62 1c de -c7 93 0b 9b - -# Signature: -00 93 8d cb 6d 58 30 46 06 5f 69 c7 8d a7 a1 f1 -75 70 66 a7 fa 75 12 5a 9d 29 29 f0 b7 9a 60 b6 -27 b0 82 f1 1f 5b 19 6f 28 eb 9d aa 6f 21 c0 5e -51 40 f6 ae f1 73 7d 20 23 07 5c 05 ec f0 4a 02 -8c 68 6a 2a b3 e7 d5 a0 66 4f 29 5c e1 29 95 e8 -90 90 8b 6a d2 1f 08 39 eb 65 b7 03 93 a7 b5 af -d9 87 1d e0 ca a0 ce de c5 b8 19 62 67 56 20 9d -13 ab 1e 7b b9 54 6a 26 ff 37 e9 a5 1a f9 fd 56 -2e - -# ============================================= - -# ================================== -# Example 5: A 1028-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -0d 10 f6 61 f2 99 40 f5 ed 39 aa 26 09 66 de b4 -78 43 67 9d 2b 6f b2 5b 3d e3 70 f3 ac 7c 19 91 -63 91 fd 25 fb 52 7e bf a6 a4 b4 df 45 a1 75 9d -99 6c 4b b4 eb d1 88 28 c4 4f c5 2d 01 91 87 17 -40 52 5f 47 a4 b0 cc 8d a3 25 ed 8a a6 76 b0 d0 -f6 26 e0 a7 7f 07 69 21 70 ac ac 80 82 f4 2f aa -7d c7 cd 12 3e 73 0e 31 a8 79 85 20 4c ab cb e6 -67 0d 43 a2 dd 2b 2d de f5 e0 53 92 fc 21 3b c5 -07 - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -03 ce 08 b1 04 ff f3 96 a9 79 bd 3e 4e 46 92 5b -63 19 dd b6 3a cb cf d8 19 f1 7d 16 b8 07 7b 3a -87 10 1f f3 4b 77 fe 48 b8 b2 05 a9 6e 91 51 ba -8e ce a6 4d 0c ce 7b 23 c3 e6 a6 b8 30 58 bc 49 -da e8 16 ae 73 6d b5 a4 70 8e 2a d4 35 23 2b 56 -7f 90 96 ce 59 ff 28 06 1e 79 ab 1c 02 d7 17 e6 -b2 3c ea 6d b8 eb 51 92 fa 7c 1e ab 22 7d ba 74 -62 1c 45 60 18 96 ee f1 37 92 c8 44 0b eb 15 aa -c1 - -# Prime p: -03 f2 f3 31 f4 14 2d 4f 24 b4 3a a1 02 79 a8 96 -52 d4 e7 53 72 21 a1 a7 b2 a2 5d eb 55 1e 5d e9 -ac 49 74 11 c2 27 a9 4e 45 f9 1c 2d 1c 13 cc 04 -6c f4 ce 14 e3 2d 05 87 34 21 0d 44 a8 7e e1 b7 -3f - -# Prime q: -03 4f 09 0d 73 b5 58 03 03 0c f0 36 1a 5d 80 81 -bf b7 9f 85 15 23 fe ac 0a 21 24 d0 8d 40 13 ff -08 48 77 71 a8 70 d0 47 9d c0 68 6c 62 f7 71 8d -fe cf 02 4b 17 c9 26 76 78 05 91 71 33 9c c0 08 -39 - -# p's CRT exponent dP: -02 aa 66 3a db f5 1a b8 87 a0 18 cb 42 6e 78 bc -2f e1 82 dc b2 f7 bc b5 04 41 d1 7f df 0f 06 79 -8b 50 71 c6 e2 f5 fe b4 d5 4a d8 18 23 11 c1 ef -62 d4 c4 9f 18 d1 f5 1f 54 b2 d2 cf fb a4 da 1b -e5 - -# q's CRT exponent dQ: -02 bb e7 06 07 8b 5c 0b 39 15 12 d4 11 db 1b 19 -9b 5a 56 64 b8 40 42 ea d3 7f e9 94 ae 72 b9 53 -2d fb fb 3e 9e 69 81 a0 fb b8 06 51 31 41 b7 c2 -16 3f e5 6c 39 5e 4b fa ee 57 e3 83 3f 9b 91 8d -f9 - -# CRT coefficient qInv: -02 42 b6 cd 00 d3 0a 76 7a ee 9a 89 8e ad 45 3c -8e ae a6 3d 50 0b 7d 1e 00 71 3e da e5 1c e3 6b -23 b6 64 df 26 e6 3e 26 6e c8 f7 6e 6e 63 ed 1b -a4 1e b0 33 b1 20 f7 ea 52 12 ae 21 a9 8f bc 16 - -# -------------------------------- -# RSASSA-PSS Signature Example 5.1 -# -------------------------------- - -# Message to be signed: -30 c7 d5 57 45 8b 43 6d ec fd c1 4d 06 cb 7b 96 -b0 67 18 c4 8d 7d e5 74 82 a8 68 ae 7f 06 58 70 -a6 21 65 06 d1 1b 77 93 23 df df 04 6c f5 77 51 -29 13 4b 4d 56 89 e4 d9 c0 ce 1e 12 d7 d4 b0 6c -b5 fc 58 20 de cf a4 1b af 59 bf 25 7b 32 f0 25 -b7 67 9b 44 5b 94 99 c9 25 55 14 58 85 99 2f 1b -76 f8 48 91 ee 4d 3b e0 f5 15 0f d5 90 1e 3a 4c -8e d4 3f d3 6b 61 d0 22 e6 5a d5 00 8d bf 33 29 -3c 22 bf bf d0 73 21 f0 f1 d5 fa 9f df 00 14 c2 -fc b0 35 8a ad 0e 35 4b 0d 29 - -# Salt: -08 1b 23 3b 43 56 77 50 bd 6e 78 f3 96 a8 8b 9f -6a 44 51 51 - -# Signature: -0b a3 73 f7 6e 09 21 b7 0a 8f bf e6 22 f0 bf 77 -b2 8a 3d b9 8e 36 10 51 c3 d7 cb 92 ad 04 52 91 -5a 4d e9 c0 17 22 f6 82 3e eb 6a df 7e 0c a8 29 -0f 5d e3 e5 49 89 0a c2 a3 c5 95 0a b2 17 ba 58 -59 08 94 95 2d e9 6f 8d f1 11 b2 57 52 15 da 6c -16 15 90 c7 45 be 61 24 76 ee 57 8e d3 84 ab 33 -e3 ec e9 74 81 a2 52 f5 c7 9a 98 b5 53 2a e0 0c -dd 62 f2 ec c0 cd 1b ae fe 80 d8 0b 96 21 93 ec -1d - -# -------------------------------- -# RSASSA-PSS Signature Example 5.2 -# -------------------------------- - -# Message to be signed: -e7 b3 2e 15 56 ea 1b 27 95 04 6a c6 97 39 d2 2a -c8 96 6b f1 1c 11 6f 61 4b 16 67 40 e9 6b 90 65 -3e 57 50 94 5f cf 77 21 86 c0 37 90 a0 7f da 32 -3e 1a 61 91 6b 06 ee 21 57 db 3d ff 80 d6 7d 5e -39 a5 3a e2 68 c8 f0 9e d9 9a 73 20 05 b0 bc 6a -04 af 4e 08 d5 7a 00 e7 20 1b 30 60 ef aa db 73 -11 3b fc 08 7f d8 37 09 3a a2 52 35 b8 c1 49 f5 -62 15 f0 31 c2 4a d5 bd e7 f2 99 60 df 7d 52 40 -70 f7 44 9c 6f 78 50 84 be 1a 0f 73 30 47 f3 36 -f9 15 47 38 67 45 47 db 02 a9 f4 4d fc 6e 60 30 -10 81 e1 ce 99 84 7f 3b 5b 60 1f f0 6b 4d 57 76 -a9 74 0b 9a a0 d3 40 58 fd 3b 90 6e 4f 78 59 df -b0 7d 71 73 e5 e6 f6 35 0a da c2 1f 27 b2 30 74 -69 - -# Salt: -bd 0c e1 95 49 d0 70 01 20 cb e5 10 77 db bb b0 -0a 8d 8b 09 - -# Signature: -08 18 0d e8 25 e4 b8 b0 14 a3 2d a8 ba 76 15 55 -92 12 04 f2 f9 0d 5f 24 b7 12 90 8f f8 4f 3e 22 -0a d1 79 97 c0 dd 6e 70 66 30 ba 3e 84 ad d4 d5 -e7 ab 00 4e 58 07 4b 54 97 09 56 5d 43 ad 9e 97 -b5 a7 a1 a2 9e 85 b9 f9 0f 4a af cd f5 83 21 de -8c 59 74 ef 9a bf 2d 52 6f 33 c0 f2 f8 2e 95 d1 -58 ea 6b 81 f1 73 6d b8 d1 af 3d 6a c6 a8 3b 32 -d1 8b ae 0f f1 b2 fe 27 de 4c 76 ed 8c 79 80 a3 -4e - -# -------------------------------- -# RSASSA-PSS Signature Example 5.3 -# -------------------------------- - -# Message to be signed: -8d 83 96 e3 65 07 fe 1e f6 a1 90 17 54 8e 0c 71 -66 74 c2 fe c2 33 ad b2 f7 75 66 5e c4 1f 2b d0 -ba 39 6b 06 1a 9d aa 7e 86 6f 7c 23 fd 35 31 95 -43 00 a3 42 f9 24 53 5e a1 49 8c 48 f6 c8 79 93 -28 65 fc 02 00 0c 52 87 23 b7 ad 03 35 74 5b 51 -20 9a 0a fe d9 32 af 8f 08 87 c2 19 00 4d 2a bd -89 4e a9 25 59 ee 31 98 af 3a 73 4f e9 b9 63 8c -26 3a 72 8a d9 5a 5a e8 ce 3e b1 58 39 f3 aa 78 -52 bb 39 07 06 e7 76 0e 43 a7 12 91 a2 e3 f8 27 -23 7d ed a8 51 87 4c 51 76 65 f5 45 f2 72 38 df -86 55 7f 37 5d 09 cc d8 bd 15 d8 cc f6 1f 5d 78 -ca 5c 7f 5c de 78 2e 6b f5 d0 05 70 56 d4 ba d9 -8b 3d 2f 95 75 e8 24 ab 7a 33 ff 57 b0 ac 10 0a -b0 d6 ea d7 aa 0b 50 f6 e4 d3 e5 ec 0b 96 6b - -# Salt: -81 57 79 a9 1b 3a 8b d0 49 bf 2a eb 92 01 42 77 -22 22 c9 ca - -# Signature: -05 e0 fd bd f6 f7 56 ef 73 31 85 cc fa 8c ed 2e -b6 d0 29 d9 d5 6e 35 56 1b 5d b8 e7 02 57 ee 6f -d0 19 d2 f0 bb f6 69 fe 9b 98 21 e7 8d f6 d4 1e -31 60 8d 58 28 0f 31 8e e3 4f 55 99 41 c8 df 13 -28 75 74 ba c0 00 b7 e5 8d c4 f4 14 ba 49 fb 12 -7f 9d 0f 89 36 63 8c 76 e8 53 56 c9 94 f7 97 50 -f7 fa 3c f4 fd 48 2d f7 5e 3f b9 97 8c d0 61 f7 -ab b1 75 72 e6 e6 3e 0b de 12 cb dc f1 8c 68 b9 -79 - -# -------------------------------- -# RSASSA-PSS Signature Example 5.4 -# -------------------------------- - -# Message to be signed: -32 8c 65 9e 0a 64 37 43 3c ce b7 3c 14 - -# Salt: -9a ec 4a 74 80 d5 bb c4 29 20 d7 ca 23 5d b6 74 -98 9c 9a ac - -# Signature: -0b c9 89 85 3b c2 ea 86 87 32 71 ce 18 3a 92 3a -b6 5e 8a 53 10 0e 6d f5 d8 7a 24 c4 19 4e b7 97 -81 3e e2 a1 87 c0 97 dd 87 2d 59 1d a6 0c 56 86 -05 dd 7e 74 2d 5a f4 e3 3b 11 67 8c cb 63 90 32 -04 a3 d0 80 b0 90 2c 89 ab a8 86 8f 00 9c 0f 1c -0c b8 58 10 bb dd 29 12 1a bb 84 71 ff 2d 39 e4 -9f d9 2d 56 c6 55 c8 e0 37 ad 18 fa fb dc 92 c9 -58 63 f7 f6 1e a9 ef a2 8f ea 40 13 69 d1 9d ae -a1 - -# -------------------------------- -# RSASSA-PSS Signature Example 5.5 -# -------------------------------- - -# Message to be signed: -f3 7b 96 23 79 a4 7d 41 5a 37 6e ec 89 73 15 0b -cb 34 ed d5 ab 65 40 41 b6 14 30 56 0c 21 44 58 -2b a1 33 c8 67 d8 52 d6 b8 e2 33 21 90 13 02 ec -b4 5b 09 ec 88 b1 52 71 78 fa 04 32 63 f3 06 7d -9f fe 97 30 32 a9 9f 4c b0 8a d2 c7 e0 a2 45 6c -dd 57 a7 df 56 fe 60 53 52 7a 5a eb 67 d7 e5 52 -06 3c 1c a9 7b 1b ef fa 7b 39 e9 97 ca f2 78 78 -ea 0f 62 cb eb c8 c2 1d f4 c8 89 a2 02 85 1e 94 -90 88 49 0c 24 9b 6e 9a cf 1d 80 63 f5 be 23 43 -98 9b f9 5c 4d a0 1a 2b e7 8b 4a b6 b3 78 01 5b -c3 79 57 f7 69 48 b5 e5 8e 44 0c 28 45 3d 40 d7 -cf d5 7e 7d 69 06 00 47 4a b5 e7 59 73 b1 ea 0c -5f 1e 45 d1 41 90 af e2 f4 eb 6d 3b df 71 f1 d2 -f8 bb 15 6a 1c 29 5d 04 aa eb 9d 68 9d ce 79 ed -62 bc 44 3e - -# Salt: -e2 0c 1e 98 78 51 2c 39 97 0f 58 37 5e 15 49 a6 -8b 64 f3 1d - -# Signature: -0a ef a9 43 b6 98 b9 60 9e df 89 8a d2 27 44 ac -28 dc 23 94 97 ce a3 69 cb bd 84 f6 5c 95 c0 ad -77 6b 59 47 40 16 4b 59 a7 39 c6 ff 7c 2f 07 c7 -c0 77 a8 6d 95 23 8f e5 1e 1f cf 33 57 4a 4a e0 -68 4b 42 a3 f6 bf 67 7d 91 82 0c a8 98 74 46 7b -2c 23 ad d7 79 69 c8 07 17 43 0d 0e fc 1d 36 95 -89 2c e8 55 cb 7f 70 11 63 0f 4d f2 6d ef 8d df -36 fc 23 90 5f 57 fa 62 43 a4 85 c7 70 d5 68 1f -cd - -# -------------------------------- -# RSASSA-PSS Signature Example 5.6 -# -------------------------------- - -# Message to be signed: -c6 10 3c 33 0c 1e f7 18 c1 41 e4 7b 8f a8 59 be -4d 5b 96 25 9e 7d 14 20 70 ec d4 85 83 9d ba 5a -83 69 c1 7c 11 14 03 5e 53 2d 19 5c 74 f4 4a 04 -76 a2 d3 e8 a4 da 21 00 16 ca ce d0 e3 67 cb 86 -77 10 a4 b5 aa 2d f2 b8 e5 da f5 fd c6 47 80 7d -4d 5e bb 6c 56 b9 76 3c cd ae 4d ea 33 08 eb 0a -c2 a8 95 01 cb 20 9d 26 39 fa 5b f8 7c e7 90 74 -7d 3c b2 d2 95 e8 45 64 f2 f6 37 82 4f 0c 13 02 -81 29 b0 aa 4a 42 2d 16 22 82 - -# Salt: -23 29 1e 4a 33 07 e8 bb b7 76 62 3a b3 4e 4a 5f -4c c8 a8 db - -# Signature: -02 80 2d cc fa 8d fa f5 27 9b f0 b4 a2 9b a1 b1 -57 61 1f ae aa f4 19 b8 91 9d 15 94 19 00 c1 33 -9e 7e 92 e6 fa e5 62 c5 3e 6c c8 e8 41 04 b1 10 -bc e0 3a d1 85 25 e3 c4 9a 0e ad ad 5d 3f 28 f2 -44 a8 ed 89 ed ba fb b6 86 27 7c fa 8a e9 09 71 -4d 6b 28 f4 bf 8e 29 3a a0 4c 41 ef e7 c0 a8 12 -66 d5 c0 61 e2 57 5b e0 32 aa 46 46 74 ff 71 62 -62 19 bd 74 cc 45 f0 e7 ed 4e 3f f9 6e ee 75 8e -8f - -# ============================================= - -# ================================== -# Example 6: A 1029-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -16 4c a3 1c ff 60 9f 3a 0e 71 01 b0 39 f2 e4 fe -6d d3 75 19 ab 98 59 8d 17 9e 17 49 96 59 80 71 -f4 7d 3a 04 55 91 58 d7 be 37 3c f1 aa 53 f0 aa -6e f0 90 39 e5 67 8c 2a 4c 63 90 05 14 c8 c4 f8 -aa ed 5d e1 2a 5f 10 b0 9c 31 1a f8 c0 ff b5 b7 -a2 97 f2 ef c6 3b 8d 6b 05 10 93 1f 0b 98 e4 8b -f5 fc 6e c4 e7 b8 db 1f fa eb 08 c3 8e 02 ad b8 -f0 3a 48 22 9c 99 e9 69 43 1f 61 cb 8c 4d c6 98 -d1 - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -03 b6 64 ee 3b 75 66 72 3f c6 ea f2 8a bb 43 0a -39 80 f1 12 6c 81 de 8a d7 09 ea b3 9a c9 dc d0 -b1 55 0b 37 29 d8 70 68 e9 52 00 9d f5 44 53 4c -1f 50 82 9a 78 f4 59 1e b8 fd 57 14 04 26 a6 bb -04 05 b6 a6 f5 1a 57 d9 26 7b 7b bc 65 33 91 a6 -99 a2 a9 0d ac 8a e2 26 bc c6 0f a8 cd 93 4c 73 -c7 b0 3b 1f 6b 81 81 58 63 18 38 a8 61 2e 6e 6e -a9 2b e2 4f 83 24 fa f5 b1 fd 85 87 22 52 67 ba -6f - -# Prime p: -04 f0 54 8c 96 26 ab 1e bf 12 44 93 47 41 d9 9a -06 22 0e fa 2a 58 56 aa 0e 75 73 0b 2e c9 6a dc -86 be 89 4f a2 80 3b 53 a5 e8 5d 27 6a cb d2 9a -b8 23 f8 0a 73 91 bb 54 a5 05 16 72 fb 04 ee b5 -43 - -# Prime q: -04 83 e0 ae 47 91 55 87 74 3f f3 45 36 2b 55 5d -39 62 d9 8b b6 f1 5f 84 8b 4c 92 b1 77 1c a8 ed -10 7d 8d 3e e6 5e c4 45 17 dd 0f aa 48 1a 38 7e -90 2f 7a 2e 74 7c 26 9e 7e a4 44 80 bc 53 8b 8e -5b - -# p's CRT exponent dP: -03 a8 e8 ae a9 92 0c 1a a3 b2 f0 d8 46 e4 b8 50 -d8 1c a3 06 a5 1c 83 54 4f 94 9f 64 f9 0d cf 3f -8e 26 61 f0 7e 56 12 20 a1 80 38 8f be 27 3e 70 -e2 e5 dc a8 3a 0e 13 48 dd 64 90 c7 31 d6 ec e1 -ab - -# q's CRT exponent dQ: -01 35 bd cd b6 0b f2 19 7c 43 6e d3 4b 32 cd 8b -4f c7 77 78 83 2b a7 67 03 55 1f b2 42 b3 01 69 -95 93 af 77 fd 8f c3 94 a8 52 6a d2 3c c4 1a 03 -80 6b d8 97 fe 4b 0e a6 46 55 8a ad dc c9 9e 8a -25 - -# CRT coefficient qInv: -03 04 c0 3d 9c 73 65 03 a9 84 ab bd 9b a2 23 01 -40 7c 4a 2a b1 dd 85 76 64 81 b6 0d 45 40 11 52 -e6 92 be 14 f4 12 1d 9a a3 fd 6e 0b 4d 1d 3a 97 -35 38 a3 1d 42 ee 6e 1e 5e f6 20 23 1a 2b ba f3 -5f - -# -------------------------------- -# RSASSA-PSS Signature Example 6.1 -# -------------------------------- - -# Message to be signed: -0a 20 b7 74 ad dc 2f a5 12 45 ed 7c b9 da 60 9e -50 ca c6 63 6a 52 54 3f 97 45 8e ed 73 40 f8 d5 -3f fc 64 91 8f 94 90 78 ee 03 ef 60 d4 2b 5f ec -24 60 50 bd 55 05 cd 8c b5 97 ba d3 c4 e7 13 b0 -ef 30 64 4e 76 ad ab b0 de 01 a1 56 1e fb 25 51 -58 c7 4f c8 01 e6 e9 19 e5 81 b4 6f 0f 0d dd 08 -e4 f3 4c 78 10 b5 ed 83 18 f9 1d 7c 8c - -# Salt: -5b 4e a2 ef 62 9c c2 2f 3b 53 8e 01 69 04 b4 7b -1e 40 bf d5 - -# Signature: -04 c0 cf ac ec 04 e5 ba db ec e1 59 a5 a1 10 3f -69 b3 f3 2b a5 93 cb 4c c4 b1 b7 ab 45 59 16 a9 -6a 27 cd 26 78 ea 0f 46 ba 37 f7 fc 9c 86 32 5f -29 73 3b 38 9f 1d 97 f4 3e 72 01 c0 f3 48 fc 45 -fe 42 89 23 35 36 2e ee 01 8b 5b 16 1f 2f 93 93 -03 12 25 c7 13 01 2a 57 6b c8 8e 23 05 24 89 86 -8d 90 10 cb f0 33 ec c5 68 e8 bc 15 2b dc 59 d5 -60 e4 12 91 91 5d 28 56 52 08 e2 2a ee c9 ef 85 -d1 - -# -------------------------------- -# RSASSA-PSS Signature Example 6.2 -# -------------------------------- - -# Message to be signed: -2a af f6 63 1f 62 1c e6 15 76 0a 9e bc e9 4b b3 -33 07 7a d8 64 88 c8 61 d4 b7 6d 29 c1 f4 87 46 -c6 11 ae 1e 03 ce d4 44 5d 7c fa 1f e5 f6 2e 1b -3f 08 45 2b de 3b 6e f8 19 73 ba fb b5 7f 97 bc -ee f8 73 98 53 95 b8 26 05 89 aa 88 cb 7d b5 0a -b4 69 26 2e 55 1b dc d9 a5 6f 27 5a 0a c4 fe 48 -47 00 c3 5f 3d bf 2b 46 9e de 86 47 41 b8 6f a5 -91 72 a3 60 ba 95 a0 2e 13 9b e5 0d df b7 cf 0b -42 fa ea bb fb ba a8 6a 44 97 69 9c 4f 2d fd 5b -08 40 6a f7 e1 41 44 42 7c 25 3e c0 ef a2 0e af -9a 8b e8 cd 49 ce 1f 1b c4 e9 3e 61 9c f2 aa 8e -d4 fb 39 bc 85 90 d0 f7 b9 64 88 f7 31 7a c9 ab -f7 be e4 e3 a0 e7 15 - -# Salt: -83 14 6a 9e 78 27 22 c2 8b 01 4f 98 b4 26 7b da -2a c9 50 4f - -# Signature: -0a 23 14 25 0c f5 2b 6e 4e 90 8d e5 b3 56 46 bc -aa 24 36 1d a8 16 0f b0 f9 25 75 90 ab 3a ce 42 -b0 dc 3e 77 ad 2d b7 c2 03 a2 0b d9 52 fb b5 6b -15 67 04 6e cf aa 93 3d 7b 10 00 c3 de 9f f0 5b -7d 98 9b a4 6f d4 3b c4 c2 d0 a3 98 6b 7f fa 13 -47 1d 37 eb 5b 47 d6 47 07 bd 29 0c fd 6a 9f 39 -3a d0 8e c1 e3 bd 71 bb 57 92 61 50 35 cd af 2d -89 29 ae d3 be 09 83 79 37 7e 77 7c e7 9a aa 47 -73 - -# -------------------------------- -# RSASSA-PSS Signature Example 6.3 -# -------------------------------- - -# Message to be signed: -0f 61 95 d0 4a 6e 6f c7 e2 c9 60 0d bf 84 0c 39 -ea 8d 4d 62 4f d5 35 07 01 6b 0e 26 85 8a 5e 0a -ec d7 ad a5 43 ae 5c 0a b3 a6 25 99 cb a0 a5 4e -6b f4 46 e2 62 f9 89 97 8f 9d df 5e 9a 41 - -# Salt: -a8 7b 8a ed 07 d7 b8 e2 da f1 4d dc a4 ac 68 c4 -d0 aa bf f8 - -# Signature: -08 6d f6 b5 00 09 8c 12 0f 24 ff 84 23 f7 27 d9 -c6 1a 5c 90 07 d3 b6 a3 1c e7 cf 8f 3c be c1 a2 -6b b2 0e 2b d4 a0 46 79 32 99 e0 3e 37 a2 1b 40 -19 4f b0 45 f9 0b 18 bf 20 a4 79 92 cc d7 99 cf -9c 05 9c 29 9c 05 26 85 49 54 aa de 8a 6a d9 d9 -7e c9 1a 11 45 38 3f 42 46 8b 23 1f 4d 72 f2 37 -06 d9 85 3c 3f a4 3c e8 ac e8 bf e7 48 49 87 a1 -ec 6a 16 c8 da f8 1f 7c 8b f4 27 74 70 7a 9d f4 -56 - -# -------------------------------- -# RSASSA-PSS Signature Example 6.4 -# -------------------------------- - -# Message to be signed: -33 7d 25 fe 98 10 eb ca 0d e4 d4 65 8d 3c eb 8e -0f e4 c0 66 ab a3 bc c4 8b 10 5d 3b f7 e0 25 7d -44 fe ce a6 59 6f 4d 0c 59 a0 84 02 83 36 78 f7 -06 20 f9 13 8d fe b7 de d9 05 e4 a6 d5 f0 5c 47 -3d 55 93 66 52 e2 a5 df 43 c0 cf da 7b ac af 30 -87 f4 52 4b 06 cf 42 15 7d 01 53 97 39 f7 fd de -c9 d5 81 25 df 31 a3 2e ab 06 c1 9b 71 f1 d5 bf - -# Salt: -a3 79 32 f8 a7 49 4a 94 2d 6f 76 74 38 e7 24 d6 -d0 c0 ef 18 - -# Signature: -0b 5b 11 ad 54 98 63 ff a9 c5 1a 14 a1 10 6c 2a -72 cc 8b 64 6e 5c 72 62 50 97 86 10 5a 98 47 76 -53 4c a9 b5 4c 1c c6 4b f2 d5 a4 4f d7 e8 a6 9d -b6 99 d5 ea 52 08 7a 47 48 fd 2a bc 1a fe d1 e5 -d6 f7 c8 90 25 53 0b da a2 21 3d 7e 03 0f a5 5d -f6 f3 4b cf 1c e4 6d 2e df 4e 3a e4 f3 b0 18 91 -a0 68 c9 e3 a4 4b bc 43 13 3e da d6 ec b9 f3 54 -00 c4 25 2a 57 62 d6 57 44 b9 9c b9 f4 c5 59 32 -9f - -# -------------------------------- -# RSASSA-PSS Signature Example 6.5 -# -------------------------------- - -# Message to be signed: -84 ec 50 2b 07 2e 82 87 78 9d 8f 92 35 82 9e a3 -b1 87 af d4 d4 c7 85 61 1b da 5f 9e b3 cb 96 71 -7e fa 70 07 22 7f 1c 08 cb cb 97 2e 66 72 35 e0 -fb 7d 43 1a 65 70 32 6d 2e cc e3 5a db 37 3d c7 -53 b3 be 5f 82 9b 89 17 54 93 19 3f ab 16 ba db -41 37 1b 3a ac 0a e6 70 07 6f 24 be f4 20 c1 35 -ad d7 ce e8 d3 5f bc 94 4d 79 fa fb 9e 30 7a 13 -b0 f5 56 cb 65 4a 06 f9 73 ed 22 67 23 30 19 7e -f5 a7 48 bf 82 6a 5d b2 38 3a 25 36 4b 68 6b 93 -72 bb 23 39 ae b1 ac 9e 98 89 32 7d 01 6f 16 70 -77 6d b0 62 01 ad bd ca f8 a5 e3 b7 4e 10 8b 73 - -# Salt: -7b 79 0c 1d 62 f7 b8 4e 94 df 6a f2 89 17 cf 57 -10 18 11 0e - -# Signature: -02 d7 1f a9 b5 3e 46 54 fe fb 7f 08 38 5c f6 b0 -ae 3a 81 79 42 eb f6 6c 35 ac 67 f0 b0 69 95 2a -3c e9 c7 e1 f1 b0 2e 48 0a 95 00 83 6d e5 d6 4c -db 7e cd e0 45 42 f7 a7 99 88 78 7e 24 c2 ba 05 -f5 fd 48 2c 02 3e d5 c3 0e 04 83 9d c4 4b ed 2a -3a 3a 4f ee 01 11 3c 89 1a 47 d3 2e b8 02 5c 28 -cb 05 0b 5c db 57 6c 70 fe 76 ef 52 34 05 c0 84 -17 fa f3 50 b0 37 a4 3c 37 93 39 fc b1 8d 3a 35 -6b - -# -------------------------------- -# RSASSA-PSS Signature Example 6.6 -# -------------------------------- - -# Message to be signed: -99 06 d8 9f 97 a9 fd ed d3 cc d8 24 db 68 73 26 -f3 0f 00 aa 25 a7 fc a2 af cb 3b 0f 86 cd 41 e7 -3f 0e 8f f7 d2 d8 3f 59 e2 8e d3 1a 5a 0d 55 15 -23 37 4d e2 2e 4c 7e 8f f5 68 b3 86 ee 3d c4 11 -63 f1 0b f6 7b b0 06 26 1c 90 82 f9 af 90 bf 1d -90 49 a6 b9 fa e7 1c 7f 84 fb e6 e5 5f 02 78 9d -e7 74 f2 30 f1 15 02 6a 4b 4e 96 c5 5b 04 a9 5d -a3 aa cb b2 ce ce 8f 81 76 4a 1f 1c 99 51 54 11 -08 7c f7 d3 4a ed ed 09 32 c1 83 - -# Salt: -fb be 05 90 25 b6 9b 89 fb 14 ae 22 89 e7 aa af -e6 0c 0f cd - -# Signature: -0a 40 a1 6e 2f e2 b3 8d 1d f9 05 46 16 7c f9 46 -9c 9e 3c 36 81 a3 44 2b 4b 2c 2f 58 1d eb 38 5c -e9 9f c6 18 8b b0 2a 84 1d 56 e7 6d 30 18 91 e2 -45 60 55 0f cc 2a 26 b5 5f 4c cb 26 d8 37 d3 50 -a1 54 bc ac a8 39 2d 98 fa 67 95 9e 97 27 b7 8c -ad 03 26 9f 56 96 8f c5 6b 68 bd 67 99 26 d8 3c -c9 cb 21 55 50 64 5c cd a3 1c 76 0f f3 58 88 94 -3d 2d 8a 1d 35 1e 81 e5 d0 7b 86 18 2e 75 10 81 -ef - -# ============================================= - -# ================================== -# Example 7: A 1030-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -37 c9 da 4a 66 c8 c4 08 b8 da 27 d0 c9 d7 9f 8c -cb 1e af c1 d2 fe 48 74 6d 94 0b 7c 4e f5 de e1 -8a d1 26 47 ce fa a0 c4 b3 18 8b 22 1c 51 53 86 -75 9b 93 f0 20 24 b2 5a b9 24 2f 83 57 d8 f3 fd -49 64 0e e5 e6 43 ea f6 c6 4d ee fa 70 89 72 7c -8f f0 39 93 33 39 15 c6 ef 21 bf 59 75 b6 e5 0d -11 8b 51 00 8e c3 3e 9f 01 a0 a5 45 a1 0a 83 6a -43 dd bc a9 d8 b5 c5 d3 54 80 22 d7 06 4e a2 9a -b3 - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -3b ed 99 90 52 d9 57 bc 06 d6 51 ee f6 e3 a9 80 -94 b1 62 1b d3 8b 54 49 bd 6c 4a ea 3d e7 e0 84 -67 9a 44 84 de d2 5b e0 f0 82 6c f3 37 78 25 41 -4b 14 d4 d6 1d b1 4d e6 26 fb b8 0e 5f 4f ae c9 -56 f9 a0 a2 d2 4f 99 57 63 80 f0 84 eb 62 e4 6a -57 d5 54 27 8b 53 56 26 19 3c e0 20 60 57 5e b6 -6c 57 98 d3 6f 6c 5d 40 fb 00 d8 09 b4 2a 73 10 -2c 1c 74 ee 95 bd 71 42 0f ff ef 63 18 b5 2c 29 - -# Prime p: -07 ee fb 42 4b 0e 3a 40 e4 20 8e e5 af b2 80 b2 -23 17 30 81 14 dd e0 b4 b6 4f 73 01 84 ec 68 da -6c e2 86 7a 9f 48 ed 77 26 d5 e2 61 4e d0 4a 54 -10 73 6c 8c 71 4e e7 02 47 42 98 c6 29 2a f0 75 -35 - -# Prime q: -07 08 30 db f9 47 ea c0 22 8d e2 63 14 b5 9b 66 -99 4c c6 0e 83 60 e7 5d 38 76 29 8f 8f 8a 7d 14 -1d a0 64 e5 ca 02 6a 97 3e 28 f2 54 73 8c ee 66 -9c 72 1b 03 4c b5 f8 e2 44 da dd 7c d1 e1 59 d5 -47 - -# p's CRT exponent dP: -05 24 d2 0c 3d 95 cf f7 5a f2 31 34 83 22 7d 87 -02 71 7a a5 76 de 15 5f 96 05 15 50 1a db 1d 70 -e1 c0 4d e9 1b 75 b1 61 db f0 39 83 56 12 7e de -da 7b bc 19 a3 2d c1 62 1c c9 f5 3c 26 5d 0c e3 -31 - -# q's CRT exponent dQ: -05 f9 84 a1 f2 3c 93 8d 6a 0e 89 72 4b cf 3d d9 -3f 99 46 92 60 37 fe 7c 6b 13 a2 9e 52 84 85 5f -89 08 95 91 d4 40 97 56 27 bf 5c 9e 3a 8b 5c a7 -9c 77 2a d2 73 e4 0d 32 1a f4 a6 c9 7d fd ed 78 -d3 - -# CRT coefficient qInv: -dd d9 18 ad ad a2 9d ca b9 81 ff 9a cb a4 25 70 -23 c0 9a 38 01 cc ce 09 8c e2 68 f8 55 d0 df 57 -0c d6 e7 b9 b1 4b d9 a5 a9 25 4c bc 31 5b e6 f8 -ba 1e 25 46 dd d5 69 c5 ea 19 ee d8 35 3b de 5e - -# -------------------------------- -# RSASSA-PSS Signature Example 7.1 -# -------------------------------- - -# Message to be signed: -9e ad 0e 01 94 56 40 67 4e b4 1c ad 43 5e 23 74 -ea ef a8 ad 71 97 d9 79 13 c4 49 57 d8 d8 3f 40 -d7 6e e6 0e 39 bf 9c 0f 9e af 30 21 42 1a 07 4d -1a de 96 2c 6e 9d 3d c3 bb 17 4f e4 df e6 52 b0 -91 15 49 5b 8f d2 79 41 74 02 0a 06 02 b5 ca 51 -84 8c fc 96 ce 5e b5 7f c0 a2 ad c1 dd a3 6a 7c -c4 52 64 1a 14 91 1b 37 e4 5b fa 11 da a5 c7 ec -db 74 f6 d0 10 0d 1d 3e 39 e7 52 80 0e 20 33 97 -de 02 33 07 7b 9a 88 85 55 37 fa e9 27 f9 24 38 -0d 78 0f 98 e1 8d cf f3 9c 5e a7 41 b1 7d 6f dd -18 85 bc 9d 58 14 82 d7 71 ce b5 62 d7 8a 8b f8 -8f 0c 75 b1 13 63 e5 e3 6c d4 79 ce b0 54 5f 9d -a8 42 03 e0 e6 e5 08 37 5c c9 e8 44 b8 8b 7a c7 -a0 a2 01 ea 0f 1b ee 9a 2c 57 79 20 ca 02 c0 1b -9d 83 20 e9 74 a5 6f 4e fb 57 63 b9 62 55 ab bf -80 37 bf 18 02 cf 01 8f 56 37 94 93 e5 69 a9 - -# Salt: -b7 86 7a 59 95 8c b5 43 28 f8 77 5e 65 46 ec 06 -d2 7e aa 50 - -# Signature: -18 7f 39 07 23 c8 90 25 91 f0 15 4b ae 6d 4e cb -ff e0 67 f0 e8 b7 95 47 6e a4 f4 d5 1c cc 81 05 -20 bb 3c a9 bc a7 d0 b1 f2 ea 8a 17 d8 73 fa 27 -57 0a cd 64 2e 38 08 56 1c b9 e9 75 cc fd 80 b2 -3d c5 77 1c db 33 06 a5 f2 31 59 da cb d3 aa 2d -b9 3d 46 d7 66 e0 9e d1 5d 90 0a d8 97 a8 d2 74 -dc 26 b4 7e 99 4a 27 e9 7e 22 68 a7 66 53 3a e4 -b5 e4 2a 2f ca f7 55 c1 c4 79 4b 29 4c 60 55 58 -23 - -# -------------------------------- -# RSASSA-PSS Signature Example 7.2 -# -------------------------------- - -# Message to be signed: -8d 80 d2 d0 8d bd 19 c1 54 df 3f 14 67 3a 14 bd -03 73 52 31 f2 4e 86 bf 15 3d 0e 69 e7 4c bf f7 -b1 83 6e 66 4d e8 3f 68 01 24 37 0f c0 f9 6c 9b -65 c0 7a 36 6b 64 4c 4a b3 - -# Salt: -0c 09 58 22 66 df 08 63 10 82 1b a7 e1 8d f6 4d -fe e6 de 09 - -# Signature: -10 fd 89 76 8a 60 a6 77 88 ab b5 85 6a 78 7c 85 -61 f3 ed cf 9a 83 e8 98 f7 dc 87 ab 8c ce 79 42 -9b 43 e5 69 06 94 1a 88 61 94 f1 37 e5 91 fe 7c -33 95 55 36 1f bb e1 f2 4f eb 2d 4b cd b8 06 01 -f3 09 6b c9 13 2d ee a6 0a e1 30 82 f4 4f 9a d4 -1c d6 28 93 6a 4d 51 17 6e 42 fc 59 cb 76 db 81 -5c e5 ab 4d b9 9a 10 4a af ea 68 f5 d3 30 32 9e -bf 25 8d 4e de 16 06 4b d1 d0 03 93 d5 e1 57 0e -b8 - -# -------------------------------- -# RSASSA-PSS Signature Example 7.3 -# -------------------------------- - -# Message to be signed: -80 84 05 cd fc 1a 58 b9 bb 03 97 c7 20 72 2a 81 -ff fb 76 27 8f 33 59 17 ef 9c 47 38 14 b3 e0 16 -ba 29 73 cd 27 65 f8 f3 f8 2d 6c c3 8a a7 f8 55 -18 27 fe 8d 1e 38 84 b7 e6 1c 94 68 3b 8f 82 f1 -84 3b da e2 25 7e ee c9 81 2a d4 c2 cf 28 3c 34 -e0 b0 ae 0f e3 cb 99 0c f8 8f 2e f9 - -# Salt: -28 03 9d cf e1 06 d3 b8 29 66 11 25 8c 4a 56 65 -1c 9e 92 dd - -# Signature: -2b 31 fd e9 98 59 b9 77 aa 09 58 6d 8e 27 46 62 -b2 5a 2a 64 06 40 b4 57 f5 94 05 1c b1 e7 f7 a9 -11 86 54 55 24 29 26 cf 88 fe 80 df a3 a7 5b a9 -68 98 44 a1 1e 63 4a 82 b0 75 af bd 69 c1 2a 0d -f9 d2 5f 84 ad 49 45 df 3d c8 fe 90 c3 ce fd f2 -6e 95 f0 53 43 04 b5 bd ba 20 d3 e5 64 0a 2e bf -b8 98 aa c3 5a e4 0f 26 fc e5 56 3c 2f 9f 24 f3 -04 2a f7 6f 3c 70 72 d6 87 bb fb 95 9a 88 46 0a -f1 - -# -------------------------------- -# RSASSA-PSS Signature Example 7.4 -# -------------------------------- - -# Message to be signed: -f3 37 b9 ba d9 37 de 22 a1 a0 52 df f1 11 34 a8 -ce 26 97 62 02 98 19 39 b9 1e 07 15 ae 5e 60 96 -49 da 1a df ce f3 f4 cc a5 9b 23 83 60 e7 d1 e4 -96 c7 bf 4b 20 4b 5a cf f9 bb d6 16 6a 1d 87 a3 -6e f2 24 73 73 75 10 39 f8 a8 00 b8 39 98 07 b3 -a8 5f 44 89 34 97 c0 d0 5f b7 01 7b 82 22 81 52 -de 6f 25 e6 11 6d cc 75 03 c7 86 c8 75 c2 8f 3a -a6 07 e9 4a b0 f1 98 63 ab 1b 50 73 77 0b 0c d5 -f5 33 ac de 30 c6 fb 95 3c f3 da 68 02 64 e3 0f -c1 1b ff 9a 19 bf fa b4 77 9b 62 23 c3 fb 3f e0 -f7 1a ba de 4e b7 c0 9c 41 e2 4c 22 d2 3f a1 48 -e6 a1 73 fe b6 39 84 d1 bc 6e e3 a0 2d 91 5b 75 -2c ea f9 2a 30 15 ec eb 38 ca 58 6c 68 01 b3 7c -34 ce fb 2c ff 25 ea 23 c0 86 62 dc ab 26 a7 a9 -3a 28 5d 05 d3 04 4c - -# Salt: -a7 78 21 eb bb ef 24 62 8e 4e 12 e1 d0 ea 96 de -39 8f 7b 0f - -# Signature: -32 c7 ca 38 ff 26 94 9a 15 00 0c 4b a0 4b 2b 13 -b3 5a 38 10 e5 68 18 4d 7e ca ba a1 66 b7 ff ab -dd f2 b6 cf 4b a0 71 24 92 37 90 f2 e5 b1 a5 be -04 0a ea 36 fe 13 2e c1 30 e1 f1 05 67 98 2d 17 -ac 3e 89 b8 d2 6c 30 94 03 4e 76 2d 2e 03 12 64 -f0 11 70 be ec b3 d1 43 9e 05 84 6f 25 45 83 67 -a7 d9 c0 20 60 44 46 72 67 1e 64 e8 77 86 45 59 -ca 19 b2 07 4d 58 8a 28 1b 58 04 d2 37 72 fb be -19 - -# -------------------------------- -# RSASSA-PSS Signature Example 7.5 -# -------------------------------- - -# Message to be signed: -45 01 3c eb af d9 60 b2 55 47 6a 8e 25 98 b9 aa -32 ef be 6d c1 f3 4f 4a 49 8d 8c f5 a2 b4 54 8d -08 c5 5d 5f 95 f7 bc c9 61 91 63 05 6f 2d 58 b5 -2f a0 32 - -# Salt: -9d 5a d8 eb 45 21 34 b6 5d c3 a9 8b 6a 73 b5 f7 -41 60 9c d6 - -# Signature: -07 eb 65 1d 75 f1 b5 2b c2 63 b2 e1 98 33 6e 99 -fb eb c4 f3 32 04 9a 92 2a 10 81 56 07 ee 2d 98 -9d b3 a4 49 5b 7d cc d3 8f 58 a2 11 fb 7e 19 31 -71 a3 d8 91 13 24 37 eb ca 44 f3 18 b2 80 50 9e -52 b5 fa 98 fc ce 82 05 d9 69 7c 8e e4 b7 ff 59 -d4 c5 9c 79 03 8a 19 70 bd 2a 0d 45 1e cd c5 ef -11 d9 97 9c 9d 35 f8 c7 0a 61 63 71 76 07 89 0d -58 6a 7c 6d c0 1c 79 f8 6a 8f 28 e8 52 35 f8 c2 -f1 - -# -------------------------------- -# RSASSA-PSS Signature Example 7.6 -# -------------------------------- - -# Message to be signed: -23 58 09 70 86 c8 99 32 3e 75 d9 c9 0d 0c 09 f1 -2d 9d 54 ed fb df 70 a9 c2 eb 5a 04 d8 f3 6b 9b -2b df 2a ab e0 a5 bd a1 96 89 37 f9 d6 eb d3 b6 -b2 57 ef b3 13 6d 41 31 f9 ac b5 9b 85 e2 60 2c -2a 3f cd c8 35 49 4a 1f 4e 5e c1 8b 22 6c 80 23 -2b 36 a7 5a 45 fd f0 9a 7e a9 e9 8e fb de 14 50 -d1 19 4b f1 2e 15 a4 c5 f9 eb 5c 0b ce 52 69 e0 -c3 b2 8c fa b6 55 d8 1a 61 a2 0b 4b e2 f5 44 59 -bb 25 a0 db 94 c5 22 18 be 10 9a 74 26 de 83 01 -44 24 78 9a aa 90 e5 05 6e 63 2a 69 81 15 e2 82 -c1 a5 64 10 f2 6c 20 72 f1 93 48 1a 9d cd 88 05 -72 00 5e 64 f4 08 2e cf - -# Salt: -3f 2e fc 59 58 80 a7 d4 7f cf 3c ba 04 98 3e a5 -4c 4b 73 fb - -# Signature: -18 da 3c dc fe 79 bf b7 7f d9 c3 2f 37 7a d3 99 -14 6f 0a 8e 81 06 20 23 32 71 a6 e3 ed 32 48 90 -3f 5c dc 92 dc 79 b5 5d 3e 11 61 5a a0 56 a7 95 -85 37 92 a3 99 8c 34 9c a5 c4 57 e8 ca 7d 29 d7 -96 aa 24 f8 34 91 70 9b ef cf b1 51 0e a5 13 c9 -28 29 a3 f0 0b 10 4f 65 56 34 f3 20 75 2e 13 0e -c0 cc f6 75 4f f8 93 db 30 29 32 bb 02 5e b6 0e -87 82 25 98 fc 61 9e 0e 98 17 37 a9 a4 c4 15 2d -33 - -# ============================================= - -# ================================== -# Example 8: A 1031-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -49 53 70 a1 fb 18 54 3c 16 d3 63 1e 31 63 25 5d -f6 2b e6 ee e8 90 d5 f2 55 09 e4 f7 78 a8 ea 6f -bb bc df 85 df f6 4e 0d 97 20 03 ab 36 81 fb ba -6d d4 1f d5 41 82 9b 2e 58 2d e9 f2 a4 a4 e0 a2 -d0 90 0b ef 47 53 db 3c ee 0e e0 6c 7d fa e8 b1 -d5 3b 59 53 21 8f 9c ce ea 69 5b 08 66 8e de aa -dc ed 94 63 b1 d7 90 d5 eb f2 7e 91 15 b4 6c ad -4d 9a 2b 8e fa b0 56 1b 08 10 34 47 39 ad a0 73 -3f - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -6c 66 ff e9 89 80 c3 8f cd ea b5 15 98 98 83 61 -65 f4 b4 b8 17 c4 f6 a8 d4 86 ee 4e a9 13 0f e9 -b9 09 2b d1 36 d1 84 f9 5f 50 4a 60 7e ac 56 58 -46 d2 fd d6 59 7a 89 67 c7 39 6e f9 5a 6e ee bb -45 78 a6 43 96 6d ca 4d 8e e3 de 84 2d e6 32 79 -c6 18 15 9c 1a b5 4a 89 43 7b 6a 61 20 e4 93 0a -fb 52 a4 ba 6c ed 8a 49 47 ac 64 b3 0a 34 97 cb -e7 01 c2 d6 26 6d 51 72 19 ad 0e c6 d3 47 db e9 - -# Prime p: -08 da d7 f1 13 63 fa a6 23 d5 d6 d5 e8 a3 19 32 -8d 82 19 0d 71 27 d2 84 6c 43 9b 0a b7 26 19 b0 -a4 3a 95 32 0e 4e c3 4f c3 a9 ce a8 76 42 23 05 -bd 76 c5 ba 7b e9 e2 f4 10 c8 06 06 45 a1 d2 9e -db - -# Prime q: -08 47 e7 32 37 6f c7 90 0f 89 8e a8 2e b2 b0 fc -41 85 65 fd ae 62 f7 d9 ec 4c e2 21 7b 97 99 0d -d2 72 db 15 7f 99 f6 3c 0d cb b9 fb ac db d4 c4 -da db 6d f6 77 56 35 8c a4 17 48 25 b4 8f 49 70 -6d - -# p's CRT exponent dP: -05 c2 a8 3c 12 4b 36 21 a2 aa 57 ea 2c 3e fe 03 -5e ff 45 60 f3 3d de bb 7a da b8 1f ce 69 a0 c8 -c2 ed c1 65 20 dd a8 3d 59 a2 3b e8 67 96 3a c6 -5f 2c c7 10 bb cf b9 6e e1 03 de b7 71 d1 05 fd -85 - -# q's CRT exponent dQ: -04 ca e8 aa 0d 9f aa 16 5c 87 b6 82 ec 14 0b 8e -d3 b5 0b 24 59 4b 7a 3b 2c 22 0b 36 69 bb 81 9f -98 4f 55 31 0a 1a e7 82 36 51 d4 a0 2e 99 44 79 -72 59 51 39 36 34 34 e5 e3 0a 7e 7d 24 15 51 e1 -b9 - -# CRT coefficient qInv: -07 d3 e4 7b f6 86 60 0b 11 ac 28 3c e8 8d bb 3f -60 51 e8 ef d0 46 80 e4 4c 17 1e f5 31 b8 0b 2b -7c 39 fc 76 63 20 e2 cf 15 d8 d9 98 20 e9 6f f3 -0d c6 96 91 83 9c 4b 40 d7 b0 6e 45 30 7d c9 1f -3f - -# -------------------------------- -# RSASSA-PSS Signature Example 8.1 -# -------------------------------- - -# Message to be signed: -81 33 2f 4b e6 29 48 41 5e a1 d8 99 79 2e ea cf -6c 6e 1d b1 da 8b e1 3b 5c ea 41 db 2f ed 46 70 -92 e1 ff 39 89 14 c7 14 25 97 75 f5 95 f8 54 7f -73 56 92 a5 75 e6 92 3a f7 8f 22 c6 99 7d db 90 -fb 6f 72 d7 bb 0d d5 74 4a 31 de cd 3d c3 68 58 -49 83 6e d3 4a ec 59 63 04 ad 11 84 3c 4f 88 48 -9f 20 97 35 f5 fb 7f da f7 ce c8 ad dc 58 18 16 -8f 88 0a cb f4 90 d5 10 05 b7 a8 e8 4e 43 e5 42 -87 97 75 71 dd 99 ee a4 b1 61 eb 2d f1 f5 10 8f -12 a4 14 2a 83 32 2e db 05 a7 54 87 a3 43 5c 9a -78 ce 53 ed 93 bc 55 08 57 d7 a9 fb - -# Salt: -1d 65 49 1d 79 c8 64 b3 73 00 9b e6 f6 f2 46 7b -ac 4c 78 fa - -# Signature: -02 62 ac 25 4b fa 77 f3 c1 ac a2 2c 51 79 f8 f0 -40 42 2b 3c 5b af d4 0a 8f 21 cf 0f a5 a6 67 cc -d5 99 3d 42 db af b4 09 c5 20 e2 5f ce 2b 1e e1 -e7 16 57 7f 1e fa 17 f3 da 28 05 2f 40 f0 41 9b -23 10 6d 78 45 aa f0 11 25 b6 98 e7 a4 df e9 2d -39 67 bb 00 c4 d0 d3 5b a3 55 2a b9 a8 b3 ee f0 -7c 7f ec db c5 42 4a c4 db 1e 20 cb 37 d0 b2 74 -47 69 94 0e a9 07 e1 7f bb ca 67 3b 20 52 23 80 -c5 - -# -------------------------------- -# RSASSA-PSS Signature Example 8.2 -# -------------------------------- - -# Message to be signed: -e2 f9 6e af 0e 05 e7 ba 32 6e cc a0 ba 7f d2 f7 -c0 23 56 f3 ce de 9d 0f aa bf 4f cc 8e 60 a9 73 -e5 59 5f d9 ea 08 - -# Salt: -43 5c 09 8a a9 90 9e b2 37 7f 12 48 b0 91 b6 89 -87 ff 18 38 - -# Signature: -27 07 b9 ad 51 15 c5 8c 94 e9 32 e8 ec 0a 28 0f -56 33 9e 44 a1 b5 8d 4d dc ff 2f 31 2e 5f 34 dc -fe 39 e8 9c 6a 94 dc ee 86 db bd ae 5b 79 ba 4e -08 19 a9 e7 bf d9 d9 82 e7 ee 6c 86 ee 68 39 6e -8b 3a 14 c9 c8 f3 4b 17 8e b7 41 f9 d3 f1 21 10 -9b f5 c8 17 2f ad a2 e7 68 f9 ea 14 33 03 2c 00 -4a 8a a0 7e b9 90 00 0a 48 dc 94 c8 ba c8 aa be -2b 09 b1 aa 46 c0 a2 aa 0e 12 f6 3f bb a7 75 ba -7e - -# -------------------------------- -# RSASSA-PSS Signature Example 8.3 -# -------------------------------- - -# Message to be signed: -e3 5c 6e d9 8f 64 a6 d5 a6 48 fc ab 8a db 16 33 -1d b3 2e 5d 15 c7 4a 40 ed f9 4c 3d c4 a4 de 79 -2d 19 08 89 f2 0f 1e 24 ed 12 05 4a 6b 28 79 8f -cb 42 d1 c5 48 76 9b 73 4c 96 37 31 42 09 2a ed -27 76 03 f4 73 8d f4 dc 14 46 58 6d 0e c6 4d a4 -fb 60 53 6d b2 ae 17 fc 7e 3c 04 bb fb bb d9 07 -bf 11 7c 08 63 6f a1 6f 95 f5 1a 62 16 93 4d 3e -34 f8 50 30 f1 7b bb c5 ba 69 14 40 58 af f0 81 -e0 b1 9c f0 3c 17 19 5c 5e 88 8b a5 8f 6f e0 a0 -2e 5c 3b da 97 19 a7 - -# Salt: -c6 eb be 76 df 0c 4a ea 32 c4 74 17 5b 2f 13 68 -62 d0 45 29 - -# Signature: -2a d2 05 09 d7 8c f2 6d 1b 6c 40 61 46 08 6e 4b -0c 91 a9 1c 2b d1 64 c8 7b 96 6b 8f aa 42 aa 0c -a4 46 02 23 23 ba 4b 1a 1b 89 70 6d 7f 4c 3b e5 -7d 7b 69 70 2d 16 8a b5 95 5e e2 90 35 6b 8c 4a -29 ed 46 7d 54 7e c2 3c ba df 28 6c cb 58 63 c6 -67 9d a4 67 fc 93 24 a1 51 c7 ec 55 aa c6 db 40 -84 f8 27 26 82 5c fe 1a a4 21 bc 64 04 9f b4 2f -23 14 8f 9c 25 b2 dc 30 04 37 c3 8d 42 8a a7 5f -96 - -# -------------------------------- -# RSASSA-PSS Signature Example 8.4 -# -------------------------------- - -# Message to be signed: -db c5 f7 50 a7 a1 4b e2 b9 3e 83 8d 18 d1 4a 86 -95 e5 2e 8a dd 9c 0a c7 33 b8 f5 6d 27 47 e5 29 -a0 cc a5 32 dd 49 b9 02 ae fe d5 14 44 7f 9e 81 -d1 61 95 c2 85 38 68 cb 9b 30 f7 d0 d4 95 c6 9d -01 b5 c5 d5 0b 27 04 5d b3 86 6c 23 24 a4 4a 11 -0b 17 17 74 6d e4 57 d1 c8 c4 5c 3c d2 a9 29 70 -c3 d5 96 32 05 5d 4c 98 a4 1d 6e 99 e2 a3 dd d5 -f7 f9 97 9a b3 cd 18 f3 75 05 d2 51 41 de 2a 1b -ff 17 b3 a7 dc e9 41 9e cc 38 5c f1 1d 72 84 0f -19 95 3f d0 50 92 51 f6 ca fd e2 89 3d 0e 75 c7 -81 ba 7a 50 12 ca 40 1a 4f a9 9e 04 b3 c3 24 9f -92 6d 5a fe 82 cc 87 da b2 2c 3c 1b 10 5d e4 8e -34 ac e9 c9 12 4e 59 59 7a c7 eb f8 - -# Salt: -02 1f dc c6 eb b5 e1 9b 1c b1 6e 9c 67 f2 76 81 -65 7f e2 0a - -# Signature: -1e 24 e6 e5 86 28 e5 17 50 44 a9 eb 6d 83 7d 48 -af 12 60 b0 52 0e 87 32 7d e7 89 7e e4 d5 b9 f0 -df 0b e3 e0 9e d4 de a8 c1 45 4f f3 42 3b b0 8e -17 93 24 5a 9d f8 bf 6a b3 96 8c 8e dd c3 b5 32 -85 71 c7 7f 09 1c c5 78 57 69 12 df eb d1 64 b9 -de 54 54 fe 0b e1 c1 f6 38 5b 32 83 60 ce 67 ec -7a 05 f6 e3 0e b4 5c 17 c4 8a c7 00 41 d2 ca b6 -7f 0a 2a e7 aa fd cc 8d 24 5e a3 44 2a 63 00 cc -c7 - -# -------------------------------- -# RSASSA-PSS Signature Example 8.5 -# -------------------------------- - -# Message to be signed: -04 dc 25 1b e7 2e 88 e5 72 34 85 b6 38 3a 63 7e -2f ef e0 76 60 c5 19 a5 60 b8 bc 18 bd ed b8 6e -ae 23 64 ea 53 ba 9d ca 6e b3 d2 e7 d6 b8 06 af -42 b3 e8 7f 29 1b 4a 88 81 d5 bf 57 2c c9 a8 5e -19 c8 6a cb 28 f0 98 f9 da 03 83 c5 66 d3 c0 f5 -8c fd 8f 39 5d cf 60 2e 5c d4 0e 8c 71 83 f7 14 -99 6e 22 97 ef - -# Salt: -c5 58 d7 16 7c bb 45 08 ad a0 42 97 1e 71 b1 37 -7e ea 42 69 - -# Signature: -33 34 1b a3 57 6a 13 0a 50 e2 a5 cf 86 79 22 43 -88 d5 69 3f 5a cc c2 35 ac 95 ad d6 8e 5e b1 ee -c3 16 66 d0 ca 7a 1c da 6f 70 a1 aa 76 2c 05 75 -2a 51 95 0c db 8a f3 c5 37 9f 18 cf e6 b5 bc 55 -a4 64 82 26 a1 5e 91 2e f1 9a d7 7a de ea 91 1d -67 cf ef d6 9b a4 3f a4 11 91 35 ff 64 21 17 ba -98 5a 7e 01 00 32 5e 95 19 f1 ca 6a 92 16 bd a0 -55 b5 78 50 15 29 11 25 e9 0d cd 07 a2 ca 96 73 -ee - -# -------------------------------- -# RSASSA-PSS Signature Example 8.6 -# -------------------------------- - -# Message to be signed: -0e a3 7d f9 a6 fe a4 a8 b6 10 37 3c 24 cf 39 0c -20 fa 6e 21 35 c4 00 c8 a3 4f 5c 18 3a 7e 8e a4 -c9 ae 09 0e d3 17 59 f4 2d c7 77 19 cc a4 00 ec -dc c5 17 ac fc 7a c6 90 26 75 b2 ef 30 c5 09 66 -5f 33 21 48 2f c6 9a 9f b5 70 d1 5e 01 c8 45 d0 -d8 e5 0d 2a 24 cb f1 cf 0e 71 49 75 a5 db 7b 18 -d9 e9 e9 cb 91 b5 cb 16 86 90 60 ed 18 b7 b5 62 -45 50 3f 0c af 90 35 2b 8d e8 1c b5 a1 d9 c6 33 -60 92 f0 cd - -# Salt: -76 fd 4e 64 fd c9 8e b9 27 a0 40 3e 35 a0 84 e7 -6b a9 f9 2a - -# Signature: -1e d1 d8 48 fb 1e db 44 12 9b d9 b3 54 79 5a f9 -7a 06 9a 7a 00 d0 15 10 48 59 3e 0c 72 c3 51 7f -f9 ff 2a 41 d0 cb 5a 0a c8 60 d7 36 a1 99 70 4f -7c b6 a5 39 86 a8 8b bd 8a bc c0 07 6a 2c e8 47 -88 00 31 52 5d 44 9d a2 ac 78 35 63 74 c5 36 e3 -43 fa a7 cb a4 2a 5a aa 65 06 08 77 91 c0 6a 8e -98 93 35 ae d1 9b fa b2 d5 e6 7e 27 fb 0c 28 75 -af 89 6c 21 b6 e8 e7 30 9d 04 e4 f6 72 7e 69 46 -3e - -# ============================================= - -# ================================== -# Example 9: A 1536-bit RSA Key Pair -# ================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -e6 bd 69 2a c9 66 45 79 04 03 fd d0 f5 be b8 b9 -bf 92 ed 10 00 7f c3 65 04 64 19 dd 06 c0 5c 5b -5b 2f 48 ec f9 89 e4 ce 26 91 09 97 9c bb 40 b4 -a0 ad 24 d2 24 83 d1 ee 31 5a d4 cc b1 53 42 68 -35 26 91 c5 24 f6 dd 8e 6c 29 d2 24 cf 24 69 73 -ae c8 6c 5b f6 b1 40 1a 85 0d 1b 9a d1 bb 8c bc -ec 47 b0 6f 0f 8c 7f 45 d3 fc 8f 31 92 99 c5 43 -3d db c2 b3 05 3b 47 de d2 ec d4 a4 ca ef d6 14 -83 3d c8 bb 62 2f 31 7e d0 76 b8 05 7f e8 de 3f -84 48 0a d5 e8 3e 4a 61 90 4a 4f 24 8f b3 97 02 -73 57 e1 d3 0e 46 31 39 81 5c 6f d4 fd 5a c5 b8 -17 2a 45 23 0e cb 63 18 a0 4f 14 55 d8 4e 5a 8b - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -6a 7f d8 4f b8 5f ad 07 3b 34 40 6d b7 4f 8d 61 -a6 ab c1 21 96 a9 61 dd 79 56 5e 9d a6 e5 18 7b -ce 2d 98 02 50 f7 35 95 75 35 92 70 d9 15 90 bb -0e 42 7c 71 46 0b 55 d5 14 10 b1 91 bc f3 09 fe -a1 31 a9 2c 8e 70 27 38 fa 71 9f 1e 00 41 f5 2e -40 e9 1f 22 9f 4d 96 a1 e6 f1 72 e1 55 96 b4 51 -0a 6d ae c2 61 05 f2 be bc 53 31 6b 87 bd f2 13 -11 66 60 70 e8 df ee 69 d5 2c 71 a9 76 ca ae 79 -c7 2b 68 d2 85 80 dc 68 6d 9f 51 29 d2 25 f8 2b -3d 61 55 13 a8 82 b3 db 91 41 6b 48 ce 08 88 82 -13 e3 7e eb 9a f8 00 d8 1c ab 32 8c e4 20 68 99 -03 c0 0c 7b 5f d3 1b 75 50 3a 6d 41 96 84 d6 29 - -# Prime p: -f8 eb 97 e9 8d f1 26 64 ee fd b7 61 59 6a 69 dd -cd 0e 76 da ec e6 ed 4b f5 a1 b5 0a c0 86 f7 92 -8a 4d 2f 87 26 a7 7e 51 5b 74 da 41 98 8f 22 0b -1c c8 7a a1 fc 81 0c e9 9a 82 f2 d1 ce 82 1e dc -ed 79 4c 69 41 f4 2c 7a 1a 0b 8c 4d 28 c7 5e c6 -0b 65 22 79 f6 15 4a 76 2a ed 16 5d 47 de e3 67 - -# Prime q: -ed 4d 71 d0 a6 e2 4b 93 c2 e5 f6 b4 bb e0 5f 5f -b0 af a0 42 d2 04 fe 33 78 d3 65 c2 f2 88 b6 a8 -da d7 ef e4 5d 15 3e ef 40 ca cc 7b 81 ff 93 40 -02 d1 08 99 4b 94 a5 e4 72 8c d9 c9 63 37 5a e4 -99 65 bd a5 5c bf 0e fe d8 d6 55 3b 40 27 f2 d8 -62 08 a6 e6 b4 89 c1 76 12 80 92 d6 29 e4 9d 3d - -# p's CRT exponent dP: -2b b6 8b dd fb 0c 4f 56 c8 55 8b ff af 89 2d 80 -43 03 78 41 e7 fa 81 cf a6 1a 38 c5 e3 9b 90 1c -8e e7 11 22 a5 da 22 27 bd 6c de eb 48 14 52 c1 -2a d3 d6 1d 5e 4f 77 6a 0a b5 56 59 1b ef e3 e5 -9e 5a 7f dd b8 34 5e 1f 2f 35 b9 f4 ce e5 7c 32 -41 4c 08 6a ec 99 3e 93 53 e4 80 d9 ee c6 28 9f - -# q's CRT exponent dQ: -4f f8 97 70 9f ad 07 97 46 49 45 78 e7 0f d8 54 -61 30 ee ab 56 27 c4 9b 08 0f 05 ee 4a d9 f3 e4 -b7 cb a9 d6 a5 df f1 13 a4 1c 34 09 33 68 33 f1 -90 81 6d 8a 6b c4 2e 9b ec 56 b7 56 7d 0f 3c 9c -69 6d b6 19 b2 45 d9 01 dd 85 6d b7 c8 09 2e 77 -e9 a1 cc cd 56 ee 4d ba 42 c5 fd b6 1a ec 26 69 - -# CRT coefficient qInv: -77 b9 d1 13 7b 50 40 4a 98 27 29 31 6e fa fc 7d -fe 66 d3 4e 5a 18 26 00 d5 f3 0a 0a 85 12 05 1c -56 0d 08 1d 4d 0a 18 35 ec 3d 25 a6 0f 4e 4d 6a -a9 48 b2 bf 3d bb 5b 12 4c bb c3 48 92 55 a3 a9 -48 37 2f 69 78 49 67 45 f9 43 e1 db 4f 18 38 2c -ea a5 05 df c6 57 57 bb 3f 85 7a 58 dc e5 21 56 - -# -------------------------------- -# RSASSA-PSS Signature Example 9.1 -# -------------------------------- - -# Message to be signed: -a8 8e 26 58 55 e9 d7 ca 36 c6 87 95 f0 b3 1b 59 -1c d6 58 7c 71 d0 60 a0 b3 f7 f3 ea ef 43 79 59 -22 02 8b c2 b6 ad 46 7c fc 2d 7f 65 9c 53 85 aa -70 ba 36 72 cd de 4c fe 49 70 cc 79 04 60 1b 27 -88 72 bf 51 32 1c 4a 97 2f 3c 95 57 0f 34 45 d4 -f5 79 80 e0 f2 0d f5 48 46 e6 a5 2c 66 8f 12 88 -c0 3f 95 00 6e a3 2f 56 2d 40 d5 2a f9 fe b3 2f -0f a0 6d b6 5b 58 8a 23 7b 34 e5 92 d5 5c f9 79 -f9 03 a6 42 ef 64 d2 ed 54 2a a8 c7 7d c1 dd 76 -2f 45 a5 93 03 ed 75 e5 41 ca 27 1e 2b 60 ca 70 -9e 44 fa 06 61 13 1e 8d 5d 41 63 fd 8d 39 85 66 -ce 26 de 87 30 e7 2f 9c ca 73 76 41 c2 44 15 94 -20 63 70 28 df 0a 18 07 9d 62 08 ea 8b 47 11 a2 -c7 50 f5 - -# Salt: -c0 a4 25 31 3d f8 d7 56 4b d2 43 4d 31 15 23 d5 -25 7e ed 80 - -# Signature: -58 61 07 22 6c 3c e0 13 a7 c8 f0 4d 1a 6a 29 59 -bb 4b 8e 20 5b a4 3a 27 b5 0f 12 41 11 bc 35 ef -58 9b 03 9f 59 32 18 7c b6 96 d7 d9 a3 2c 0c 38 -30 0a 5c dd a4 83 4b 62 d2 eb 24 0a f3 3f 79 d1 -3d fb f0 95 bf 59 9e 0d 96 86 94 8c 19 64 74 7b -67 e8 9c 9a ba 5c d8 50 16 23 6f 56 6c c5 80 2c -b1 3e ad 51 bc 7c a6 be f3 b9 4d cb db b1 d5 70 -46 97 71 df 0e 00 b1 a8 a0 67 77 47 2d 23 16 27 -9e da e8 64 74 66 8d 4e 1e ff f9 5f 1d e6 1c 60 -20 da 32 ae 92 bb f1 65 20 fe f3 cf 4d 88 f6 11 -21 f2 4b bd 9f e9 1b 59 ca f1 23 5b 2a 93 ff 81 -fc 40 3a dd f4 eb de a8 49 34 a9 cd af 8e 1a 9e - -# -------------------------------- -# RSASSA-PSS Signature Example 9.2 -# -------------------------------- - -# Message to be signed: -c8 c9 c6 af 04 ac da 41 4d 22 7e f2 3e 08 20 c3 -73 2c 50 0d c8 72 75 e9 5b 0d 09 54 13 99 3c 26 -58 bc 1d 98 85 81 ba 87 9c 2d 20 1f 14 cb 88 ce -d1 53 a0 19 69 a7 bf 0a 7b e7 9c 84 c1 48 6b c1 -2b 3f a6 c5 98 71 b6 82 7c 8c e2 53 ca 5f ef a8 -a8 c6 90 bf 32 6e 8e 37 cd b9 6d 90 a8 2e ba b6 -9f 86 35 0e 18 22 e8 bd 53 6a 2e - -# Salt: -b3 07 c4 3b 48 50 a8 da c2 f1 5f 32 e3 78 39 ef -8c 5c 0e 91 - -# Signature: -80 b6 d6 43 25 52 09 f0 a4 56 76 38 97 ac 9e d2 -59 d4 59 b4 9c 28 87 e5 88 2e cb 44 34 cf d6 6d -d7 e1 69 93 75 38 1e 51 cd 7f 55 4f 2c 27 17 04 -b3 99 d4 2b 4b e2 54 0a 0e ca 61 95 1f 55 26 7f -7c 28 78 c1 22 84 2d ad b2 8b 01 bd 5f 8c 02 5f -7e 22 84 18 a6 73 c0 3d 6b c0 c7 36 d0 a2 95 46 -bd 67 f7 86 d9 d6 92 cc ea 77 8d 71 d9 8c 20 63 -b7 a7 10 92 18 7a 4d 35 af 10 81 11 d8 3e 83 ea -e4 6c 46 aa 34 27 7e 06 04 45 89 90 37 88 f1 d5 -e7 ce e2 5f b4 85 e9 29 49 11 88 14 d6 f2 c3 ee -36 14 89 01 6f 32 7f b5 bc 51 7e b5 04 70 bf fa -1a fa 5f 4c e9 aa 0c e5 b8 ee 19 bf 55 01 b9 58 - -# -------------------------------- -# RSASSA-PSS Signature Example 9.3 -# -------------------------------- - -# Message to be signed: -0a fa d4 2c cd 4f c6 06 54 a5 50 02 d2 28 f5 2a -4a 5f e0 3b 8b bb 08 ca 82 da ca 55 8b 44 db e1 -26 6e 50 c0 e7 45 a3 6d 9d 29 04 e3 40 8a bc d1 -fd 56 99 94 06 3f 4a 75 cc 72 f2 fe e2 a0 cd 89 -3a 43 af 1c 5b 8b 48 7d f0 a7 16 10 02 4e 4f 6d -df 9f 28 ad 08 13 c1 aa b9 1b cb 3c 90 64 d5 ff -74 2d ef fe a6 57 09 41 39 36 9e 5e a6 f4 a9 63 -19 a5 cc 82 24 14 5b 54 50 62 75 8f ef d1 fe 34 -09 ae 16 92 59 c6 cd fd 6b 5f 29 58 e3 14 fa ec -be 69 d2 ca ce 58 ee 55 17 9a b9 b3 e6 d1 ec c1 -4a 55 7c 5f eb e9 88 59 52 64 fc 5d a1 c5 71 46 -2e ca 79 8a 18 a1 a4 94 0c da b4 a3 e9 20 09 cc -d4 2e 1e 94 7b 13 14 e3 22 38 a2 de ce 7d 23 a8 -9b 5b 30 c7 51 fd 0a 4a 43 0d 2c 54 85 94 - -# Salt: -9a 2b 00 7e 80 97 8b bb 19 2c 35 4e b7 da 9a ed -fc 74 db f5 - -# Signature: -48 44 08 f3 89 8c d5 f5 34 83 f8 08 19 ef bf 27 -08 c3 4d 27 a8 b2 a6 fa e8 b3 22 f9 24 02 37 f9 -81 81 7a ca 18 46 f1 08 4d aa 6d 7c 07 95 f6 e5 -bf 1a f5 9c 38 e1 85 84 37 ce 1f 7e c4 19 b9 8c -87 36 ad f6 dd 9a 00 b1 80 6d 2b d3 ad 0a 73 77 -5e 05 f5 2d fe f3 a5 9a b4 b0 81 43 f0 df 05 cd -1a d9 d0 4b ec ec a6 da a4 a2 12 98 03 e2 00 cb -c7 77 87 ca f4 c1 d0 66 3a 6c 59 87 b6 05 95 20 -19 78 2c af 2e c1 42 6d 68 fb 94 ed 1d 4b e8 16 -a7 ed 08 1b 77 e6 ab 33 0b 3f fc 07 38 20 fe cd -e3 72 7f cb e2 95 ee 61 a0 50 a3 43 65 86 37 c3 -fd 65 9c fb 63 73 6d e3 2d 9f 90 d3 c2 f6 3e ca - -# -------------------------------- -# RSASSA-PSS Signature Example 9.4 -# -------------------------------- - -# Message to be signed: -1d fd 43 b4 6c 93 db 82 62 9b da e2 bd 0a 12 b8 -82 ea 04 c3 b4 65 f5 cf 93 02 3f 01 05 96 26 db -be 99 f2 6b b1 be 94 9d dd d1 6d c7 f3 de bb 19 -a1 94 62 7f 0b 22 44 34 df 7d 87 00 e9 e9 8b 06 -e3 60 c1 2f db e3 d1 9f 51 c9 68 4e b9 08 9e cb -b0 a2 f0 45 03 99 d3 f5 9e ac 72 94 08 5d 04 4f -53 93 c6 ce 73 74 23 d8 b8 6c 41 53 70 d3 89 e3 -0b 9f 0a 3c 02 d2 5d 00 82 e8 ad 6f 3f 1e f2 4a -45 c3 cf 82 b3 83 36 70 63 a4 d4 61 3e 42 64 f0 -1b 2d ac 2e 5a a4 20 43 f8 fb 5f 69 fa 87 1d 14 -fb 27 3e 76 7a 53 1c 40 f0 2f 34 3b c2 fb 45 a0 -c7 e0 f6 be 25 61 92 3a 77 21 1d 66 a6 e2 db b4 -3c 36 63 50 be ae 22 da 3a c2 c1 f5 07 70 96 fc -b5 c4 bf 25 5f 75 74 35 1a e0 b1 e1 f0 36 32 81 -7c 08 56 d4 a8 ba 97 af bd c8 b8 58 55 40 2b c5 -69 26 fc ec 20 9f 9e a8 - -# Salt: -70 f3 82 bd df 4d 5d 2d d8 8b 3b c7 b7 30 8b e6 -32 b8 40 45 - -# Signature: -84 eb eb 48 1b e5 98 45 b4 64 68 ba fb 47 1c 01 -12 e0 2b 23 5d 84 b5 d9 11 cb d1 92 6e e5 07 4a -e0 42 44 95 cb 20 e8 23 08 b8 eb b6 5f 41 9a 03 -fb 40 e7 2b 78 98 1d 88 aa d1 43 05 36 85 17 2c -97 b2 9c 8b 7b f0 ae 73 b5 b2 26 3c 40 3d a0 ed -2f 80 ff 74 50 af 78 28 eb 8b 86 f0 02 8b d2 a8 -b1 76 a4 d2 28 cc ce a1 83 94 f2 38 b0 9f f7 58 -cc 00 bc 04 30 11 52 35 57 42 f2 82 b5 4e 66 3a -91 9e 70 9d 8d a2 4a de 55 00 a7 b9 aa 50 22 6e -0c a5 29 23 e6 c2 d8 60 ec 50 ff 48 0f a5 74 77 -e8 2b 05 65 f4 37 9f 79 c7 72 d5 c2 da 80 af 9f -bf 32 5e ce 6f c2 0b 00 96 16 14 be e8 9a 18 3e - -# -------------------------------- -# RSASSA-PSS Signature Example 9.5 -# -------------------------------- - -# Message to be signed: -1b dc 6e 7c 98 fb 8c f5 4e 9b 09 7b 66 a8 31 e9 -cf e5 2d 9d 48 88 44 8e e4 b0 97 80 93 ba 1d 7d -73 ae 78 b3 a6 2b a4 ad 95 cd 28 9c cb 9e 00 52 -26 bb 3d 17 8b cc aa 82 1f b0 44 a4 e2 1e e9 76 -96 c1 4d 06 78 c9 4c 2d ae 93 b0 ad 73 92 22 18 -55 3d aa 7e 44 eb e5 77 25 a7 a4 5c c7 2b 9b 21 -38 a6 b1 7c 8d b4 11 ce 82 79 ee 12 41 af f0 a8 -be c6 f7 7f 87 ed b0 c6 9c b2 72 36 e3 43 5a 80 -0b 19 2e 4f 11 e5 19 e3 fe 30 fc 30 ea cc ca 4f -bb 41 76 90 29 bf 70 8e 81 7a 9e 68 38 05 be 67 -fa 10 09 84 68 3b 74 83 8e 3b cf fa 79 36 6e ed -1d 48 1c 76 72 91 18 83 8f 31 ba 8a 04 8a 93 c1 -be 44 24 59 8e 8d f6 32 8b 7a 77 88 0a 3f 9c 7e -2e 8d fc a8 eb 5a 26 fb 86 bd c5 56 d4 2b be 01 -d9 fa 6e d8 06 46 49 1c 93 41 - -# Salt: -d6 89 25 7a 86 ef fa 68 21 2c 5e 0c 61 9e ca 29 -5f b9 1b 67 - -# Signature: -82 10 2d f8 cb 91 e7 17 99 19 a0 4d 26 d3 35 d6 -4f bc 2f 87 2c 44 83 39 43 24 1d e8 45 48 10 27 -4c df 3d b5 f4 2d 42 3d b1 52 af 71 35 f7 01 42 -0e 39 b4 94 a6 7c bf d1 9f 91 19 da 23 3a 23 da -5c 64 39 b5 ba 0d 2b c3 73 ee e3 50 70 01 37 8d -4a 40 73 85 6b 7f e2 ab a0 b5 ee 93 b2 7f 4a fe -c7 d4 d1 20 92 1c 83 f6 06 76 5b 02 c1 9e 4d 6a -1a 3b 95 fa 4c 42 29 51 be 4f 52 13 10 77 ef 17 -17 97 29 cd df bd b5 69 50 db ac ee fe 78 cb 16 -64 0a 09 9e a5 6d 24 38 9e ef 10 f8 fe cb 31 ba -3e a3 b2 27 c0 a8 66 98 bb 89 e3 e9 36 39 05 bf -22 77 7b 2a 3a a5 21 b6 5b 4c ef 76 d8 3b de 4c - -# -------------------------------- -# RSASSA-PSS Signature Example 9.6 -# -------------------------------- - -# Message to be signed: -88 c7 a9 f1 36 04 01 d9 0e 53 b1 01 b6 1c 53 25 -c3 c7 5d b1 b4 11 fb eb 8e 83 0b 75 e9 6b 56 67 -0a d2 45 40 4e 16 79 35 44 ee 35 4b c6 13 a9 0c -c9 84 87 15 a7 3d b5 89 3e 7f 6d 27 98 15 c0 c1 -de 83 ef 8e 29 56 e3 a5 6e d2 6a 88 8d 7a 9c dc -d0 42 f4 b1 6b 7f a5 1e f1 a0 57 36 62 d1 6a 30 -2d 0e c5 b2 85 d2 e0 3a d9 65 29 c8 7b 3d 37 4d -b3 72 d9 5b 24 43 d0 61 b6 b1 a3 50 ba 87 80 7e -d0 83 af d1 eb 05 c3 f5 2f 4e ba 5e d2 22 77 14 -fd b5 0b 9d 9d 9d d6 81 4f 62 f6 27 2f cd 5c db -ce 7a 9e f7 97 - -# Salt: -c2 5f 13 bf 67 d0 81 67 1a 04 81 a1 f1 82 0d 61 -3b ba 22 76 - -# Signature: -a7 fd b0 d2 59 16 5c a2 c8 8d 00 bb f1 02 8a 86 -7d 33 76 99 d0 61 19 3b 17 a9 64 8e 14 cc bb aa -de ac aa cd ec 81 5e 75 71 29 4e bb 8a 11 7a f2 -05 fa 07 8b 47 b0 71 2c 19 9e 3a d0 51 35 c5 04 -c2 4b 81 70 51 15 74 08 02 48 79 92 ff d5 11 d4 -af c6 b8 54 49 1e b3 f0 dd 52 31 39 54 2f f1 5c -31 01 ee 85 54 35 17 c6 a3 c7 94 17 c6 7e 2d d9 -aa 74 1e 9a 29 b0 6d cb 59 3c 23 36 b3 67 0a e3 -af ba c7 c3 e7 6e 21 54 73 e8 66 e3 38 ca 24 4d -e0 0b 62 62 4d 6b 94 26 82 2c ea e9 f8 cc 46 08 -95 f4 12 50 07 3f d4 5c 5a 1e 7b 42 5c 20 4a 42 -3a 69 91 59 f6 90 3e 71 0b 37 a7 bb 2b c8 04 9f - -# ============================================= - -# =================================== -# Example 10: A 2048-bit RSA Key Pair -# =================================== - -# ------------------------------ -# Components of the RSA Key Pair -# ------------------------------ - -# RSA modulus n: -a5 dd 86 7a c4 cb 02 f9 0b 94 57 d4 8c 14 a7 70 -ef 99 1c 56 c3 9c 0e c6 5f d1 1a fa 89 37 ce a5 -7b 9b e7 ac 73 b4 5c 00 17 61 5b 82 d6 22 e3 18 -75 3b 60 27 c0 fd 15 7b e1 2f 80 90 fe e2 a7 ad -cd 0e ef 75 9f 88 ba 49 97 c7 a4 2d 58 c9 aa 12 -cb 99 ae 00 1f e5 21 c1 3b b5 43 14 45 a8 d5 ae -4f 5e 4c 7e 94 8a c2 27 d3 60 40 71 f2 0e 57 7e -90 5f be b1 5d fa f0 6d 1d e5 ae 62 53 d6 3a 6a -21 20 b3 1a 5d a5 da bc 95 50 60 0e 20 f2 7d 37 -39 e2 62 79 25 fe a3 cc 50 9f 21 df f0 4e 6e ea -45 49 c5 40 d6 80 9f f9 30 7e ed e9 1f ff 58 73 -3d 83 85 a2 37 d6 d3 70 5a 33 e3 91 90 09 92 07 -0d f7 ad f1 35 7c f7 e3 70 0c e3 66 7d e8 3f 17 -b8 df 17 78 db 38 1d ce 09 cb 4a d0 58 a5 11 00 -1a 73 81 98 ee 27 cf 55 a1 3b 75 45 39 90 65 82 -ec 8b 17 4b d5 8d 5d 1f 3d 76 7c 61 37 21 ae 05 - -# RSA public exponent e: -01 00 01 - -# RSA private exponent d: -2d 2f f5 67 b3 fe 74 e0 61 91 b7 fd ed 6d e1 12 -29 0c 67 06 92 43 0d 59 69 18 40 47 da 23 4c 96 -93 de ed 16 73 ed 42 95 39 c9 69 d3 72 c0 4d 6b -47 e0 f5 b8 ce e0 84 3e 5c 22 83 5d bd 3b 05 a0 -99 79 84 ae 60 58 b1 1b c4 90 7c bf 67 ed 84 fa -9a e2 52 df b0 d0 cd 49 e6 18 e3 5d fd fe 59 bc -a3 dd d6 6c 33 ce bb c7 7a d4 41 aa 69 5e 13 e3 -24 b5 18 f0 1c 60 f5 a8 5c 99 4a d1 79 f2 a6 b5 -fb e9 34 02 b1 17 67 be 01 bf 07 34 44 d6 ba 1d -d2 bc a5 bd 07 4d 4a 5f ae 35 31 ad 13 03 d8 4b -30 d8 97 31 8c bb ba 04 e0 3c 2e 66 de 6d 91 f8 -2f 96 ea 1d 4b b5 4a 5a ae 10 2d 59 46 57 f5 c9 -78 95 53 51 2b 29 6d ea 29 d8 02 31 96 35 7e 3e -3a 6e 95 8f 39 e3 c2 34 40 38 ea 60 4b 31 ed c6 -f0 f7 ff 6e 71 81 a5 7c 92 82 6a 26 8f 86 76 8e -96 f8 78 56 2f c7 1d 85 d6 9e 44 86 12 f7 04 8f - -# Prime p: -cf d5 02 83 fe ee b9 7f 6f 08 d7 3c bc 7b 38 36 -f8 2b bc d4 99 47 9f 5e 6f 76 fd fc b8 b3 8c 4f -71 dc 9e 88 bd 6a 6f 76 37 1a fd 65 d2 af 18 62 -b3 2a fb 34 a9 5f 71 b8 b1 32 04 3f fe be 3a 95 -2b af 75 92 44 81 48 c0 3f 9c 69 b1 d6 8e 4c e5 -cf 32 c8 6b af 46 fe d3 01 ca 1a b4 03 06 9b 32 -f4 56 b9 1f 71 89 8a b0 81 cd 8c 42 52 ef 52 71 -91 5c 97 94 b8 f2 95 85 1d a7 51 0f 99 cb 73 eb - -# Prime q: -cc 4e 90 d2 a1 b3 a0 65 d3 b2 d1 f5 a8 fc e3 1b -54 44 75 66 4e ab 56 1d 29 71 b9 9f b7 be f8 44 -e8 ec 1f 36 0b 8c 2a c8 35 96 92 97 1e a6 a3 8f -72 3f cc 21 1f 5d bc b1 77 a0 fd ac 51 64 a1 d4 -ff 7f bb 4e 82 99 86 35 3c b9 83 65 9a 14 8c dd -42 0c 7d 31 ba 38 22 ea 90 a3 2b e4 6c 03 0e 8c -17 e1 fa 0a d3 78 59 e0 6b 0a a6 fa 3b 21 6d 9c -be 6c 0e 22 33 97 69 c0 a6 15 91 3e 5d a7 19 cf - -# p's CRT exponent dP: -1c 2d 1f c3 2f 6b c4 00 4f d8 5d fd e0 fb bf 9a -4c 38 f9 c7 c4 e4 1d ea 1a a8 82 34 a2 01 cd 92 -f3 b7 da 52 65 83 a9 8a d8 5b b3 60 fb 98 3b 71 -1e 23 44 9d 56 1d 17 78 d7 a5 15 48 6b cb f4 7b -46 c9 e9 e1 a3 a1 f7 70 00 ef be b0 9a 8a fe 47 -e5 b8 57 cd a9 9c b1 6d 7f ff 9b 71 2e 3b d6 0c -a9 6d 9c 79 73 d6 16 d4 69 34 a9 c0 50 28 1c 00 -43 99 ce ff 1d b7 dd a7 87 66 a8 a9 b9 cb 08 73 - -# q's CRT exponent dQ: -cb 3b 3c 04 ca a5 8c 60 be 7d 9b 2d eb b3 e3 96 -43 f4 f5 73 97 be 08 23 6a 1e 9e af aa 70 65 36 -e7 1c 3a cf e0 1c c6 51 f2 3c 9e 05 85 8f ee 13 -bb 6a 8a fc 47 df 4e dc 9a 4b a3 0b ce cb 73 d0 -15 78 52 32 7e e7 89 01 5c 2e 8d ee 7b 9f 05 a0 -f3 1a c9 4e b6 17 31 64 74 0c 5c 95 14 7c d5 f3 -b5 ae 2c b4 a8 37 87 f0 1d 8a b3 1f 27 c2 d0 ee -a2 dd 8a 11 ab 90 6a ba 20 7c 43 c6 ee 12 53 31 - -# CRT coefficient qInv: -12 f6 b2 cf 13 74 a7 36 fa d0 56 16 05 0f 96 ab -4b 61 d1 17 7c 7f 9d 52 5a 29 f3 d1 80 e7 76 67 -e9 9d 99 ab f0 52 5d 07 58 66 0f 37 52 65 5b 0f -25 b8 df 84 31 d9 a8 ff 77 c1 6c 12 a0 a5 12 2a -9f 0b f7 cf d5 a2 66 a3 5c 15 9f 99 12 08 b9 03 -16 ff 44 4f 3e 0b 6b d0 e9 3b 8a 7a 24 48 e9 57 -e3 dd a6 cf cf 22 66 b1 06 01 3a c4 68 08 d3 b3 -88 7b 3b 00 34 4b aa c9 53 0b 4c e7 08 fc 32 b6 - -# --------------------------------- -# RSASSA-PSS Signature Example 10.1 -# --------------------------------- - -# Message to be signed: -88 31 77 e5 12 6b 9b e2 d9 a9 68 03 27 d5 37 0c -6f 26 86 1f 58 20 c4 3d a6 7a 3a d6 09 - -# Salt: -04 e2 15 ee 6f f9 34 b9 da 70 d7 73 0c 87 34 ab -fc ec de 89 - -# Signature: -82 c2 b1 60 09 3b 8a a3 c0 f7 52 2b 19 f8 73 54 -06 6c 77 84 7a bf 2a 9f ce 54 2d 0e 84 e9 20 c5 -af b4 9f fd fd ac e1 65 60 ee 94 a1 36 96 01 14 -8e ba d7 a0 e1 51 cf 16 33 17 91 a5 72 7d 05 f2 -1e 74 e7 eb 81 14 40 20 69 35 d7 44 76 5a 15 e7 -9f 01 5c b6 6c 53 2c 87 a6 a0 59 61 c8 bf ad 74 -1a 9a 66 57 02 28 94 39 3e 72 23 73 97 96 c0 2a -77 45 5d 0f 55 5b 0e c0 1d df 25 9b 62 07 fd 0f -d5 76 14 ce f1 a5 57 3b aa ff 4e c0 00 69 95 16 -59 b8 5f 24 30 0a 25 16 0c a8 52 2d c6 e6 72 7e -57 d0 19 d7 e6 36 29 b8 fe 5e 89 e2 5c c1 5b eb -3a 64 75 77 55 92 99 28 0b 9b 28 f7 9b 04 09 00 -0b e2 5b bd 96 40 8b a3 b4 3c c4 86 18 4d d1 c8 -e6 25 53 fa 1a f4 04 0f 60 66 3d e7 f5 e4 9c 04 -38 8e 25 7f 1c e8 9c 95 da b4 8a 31 5d 9b 66 b1 -b7 62 82 33 87 6f f2 38 52 30 d0 70 d0 7e 16 66 - -# --------------------------------- -# RSASSA-PSS Signature Example 10.2 -# --------------------------------- - -# Message to be signed: -dd 67 0a 01 46 58 68 ad c9 3f 26 13 19 57 a5 0c -52 fb 77 7c db aa 30 89 2c 9e 12 36 11 64 ec 13 -97 9d 43 04 81 18 e4 44 5d b8 7b ee 58 dd 98 7b -34 25 d0 20 71 d8 db ae 80 70 8b 03 9d bb 64 db -d1 de 56 57 d9 fe d0 c1 18 a5 41 43 74 2e 0f f3 -c8 7f 74 e4 58 57 64 7a f3 f7 9e b0 a1 4c 9d 75 -ea 9a 1a 04 b7 cf 47 8a 89 7a 70 8f d9 88 f4 8e -80 1e db 0b 70 39 df 8c 23 bb 3c 56 f4 e8 21 ac - -# Salt: -8b 2b dd 4b 40 fa f5 45 c7 78 dd f9 bc 1a 49 cb -57 f9 b7 1b - -# Signature: -14 ae 35 d9 dd 06 ba 92 f7 f3 b8 97 97 8a ed 7c -d4 bf 5f f0 b5 85 a4 0b d4 6c e1 b4 2c d2 70 30 -53 bb 90 44 d6 4e 81 3d 8f 96 db 2d d7 00 7d 10 -11 8f 6f 8f 84 96 09 7a d7 5e 1f f6 92 34 1b 28 -92 ad 55 a6 33 a1 c5 5e 7f 0a 0a d5 9a 0e 20 3a -5b 82 78 ae c5 4d d8 62 2e 28 31 d8 71 74 f8 ca -ff 43 ee 6c 46 44 53 45 d8 4a 59 65 9b fb 92 ec -d4 c8 18 66 86 95 f3 47 06 f6 68 28 a8 99 59 63 -7f 2b f3 e3 25 1c 24 bd ba 4d 4b 76 49 da 00 22 -21 8b 11 9c 84 e7 9a 65 27 ec 5b 8a 5f 86 1c 15 -99 52 e2 3e c0 5e 1e 71 73 46 fa ef e8 b1 68 68 -25 bd 2b 26 2f b2 53 10 66 c0 de 09 ac de 2e 42 -31 69 07 28 b5 d8 5e 11 5a 2f 6b 92 b7 9c 25 ab -c9 bd 93 99 ff 8b cf 82 5a 52 ea 1f 56 ea 76 dd -26 f4 3b aa fa 18 bf a9 2a 50 4c bd 35 69 9e 26 -d1 dc c5 a2 88 73 85 f3 c6 32 32 f0 6f 32 44 c3 - -# --------------------------------- -# RSASSA-PSS Signature Example 10.3 -# --------------------------------- - -# Message to be signed: -48 b2 b6 a5 7a 63 c8 4c ea 85 9d 65 c6 68 28 4b -08 d9 6b dc aa be 25 2d b0 e4 a9 6c b1 ba c6 01 -93 41 db 6f be fb 8d 10 6b 0e 90 ed a6 bc c6 c6 -26 2f 37 e7 ea 9c 7e 5d 22 6b d7 df 85 ec 5e 71 -ef ff 2f 54 c5 db 57 7f f7 29 ff 91 b8 42 49 1d -e2 74 1d 0c 63 16 07 df 58 6b 90 5b 23 b9 1a f1 -3d a1 23 04 bf 83 ec a8 a7 3e 87 1f f9 db - -# Salt: -4e 96 fc 1b 39 8f 92 b4 46 71 01 0c 0d c3 ef d6 -e2 0c 2d 73 - -# Signature: -6e 3e 4d 7b 6b 15 d2 fb 46 01 3b 89 00 aa 5b bb -39 39 cf 2c 09 57 17 98 70 42 02 6e e6 2c 74 c5 -4c ff d5 d7 d5 7e fb bf 95 0a 0f 5c 57 4f a0 9d -3f c1 c9 f5 13 b0 5b 4f f5 0d d8 df 7e df a2 01 -02 85 4c 35 e5 92 18 01 19 a7 0c e5 b0 85 18 2a -a0 2d 9e a2 aa 90 d1 df 03 f2 da ae 88 5b a2 f5 -d0 5a fd ac 97 47 6f 06 b9 3b 5b c9 4a 1a 80 aa -91 16 c4 d6 15 f3 33 b0 98 89 2b 25 ff ac e2 66 -f5 db 5a 5a 3b cc 10 a8 24 ed 55 aa d3 5b 72 78 -34 fb 8c 07 da 28 fc f4 16 a5 d9 b2 22 4f 1f 8b -44 2b 36 f9 1e 45 6f de a2 d7 cf e3 36 72 68 de -03 07 a4 c7 4e 92 41 59 ed 33 39 3d 5e 06 55 53 -1c 77 32 7b 89 82 1b de df 88 01 61 c7 8c d4 19 -6b 54 19 f7 ac c3 f1 3e 5e bf 16 1b 6e 7c 67 24 -71 6c a3 3b 85 c2 e2 56 40 19 2a c2 85 96 51 d5 -0b de 7e b9 76 e5 1c ec 82 8b 98 b6 56 3b 86 bb - -# --------------------------------- -# RSASSA-PSS Signature Example 10.4 -# --------------------------------- - -# Message to be signed: -0b 87 77 c7 f8 39 ba f0 a6 4b bb db c5 ce 79 75 -5c 57 a2 05 b8 45 c1 74 e2 d2 e9 05 46 a0 89 c4 -e6 ec 8a df fa 23 a7 ea 97 ba e6 b6 5d 78 2b 82 -db 5d 2b 5a 56 d2 2a 29 a0 5e 7c 44 33 e2 b8 2a -62 1a bb a9 0a dd 05 ce 39 3f c4 8a 84 05 42 45 -1a - -# Salt: -c7 cd 69 8d 84 b6 51 28 d8 83 5e 3a 8b 1e b0 e0 -1c b5 41 ec - -# Signature: -34 04 7f f9 6c 4d c0 dc 90 b2 d4 ff 59 a1 a3 61 -a4 75 4b 25 5d 2e e0 af 7d 8b f8 7c 9b c9 e7 dd -ee de 33 93 4c 63 ca 1c 0e 3d 26 2c b1 45 ef 93 -2a 1f 2c 0a 99 7a a6 a3 4f 8e ae e7 47 7d 82 cc -f0 90 95 a6 b8 ac ad 38 d4 ee c9 fb 7e ab 7a d0 -2d a1 d1 1d 8e 54 c1 82 5e 55 bf 58 c2 a2 32 34 -b9 02 be 12 4f 9e 90 38 a8 f6 8f a4 5d ab 72 f6 -6e 09 45 bf 1d 8b ac c9 04 4c 6f 07 09 8c 9f ce -c5 8a 3a ab 10 0c 80 51 78 15 5f 03 0a 12 4c 45 -0e 5a cb da 47 d0 e4 f1 0b 80 a2 3f 80 3e 77 4d -02 3b 00 15 c2 0b 9f 9b be 7c 91 29 63 38 d5 ec -b4 71 ca fb 03 20 07 b6 7a 60 be 5f 69 50 4a 9f -01 ab b3 cb 46 7b 26 0e 2b ce 86 0b e8 d9 5b f9 -2c 0c 8e 14 96 ed 1e 52 85 93 a4 ab b6 df 46 2d -de 8a 09 68 df fe 46 83 11 68 57 a2 32 f5 eb f6 -c8 5b e2 38 74 5a d0 f3 8f 76 7a 5f db f4 86 fb - -# --------------------------------- -# RSASSA-PSS Signature Example 10.5 -# --------------------------------- - -# Message to be signed: -f1 03 6e 00 8e 71 e9 64 da dc 92 19 ed 30 e1 7f -06 b4 b6 8a 95 5c 16 b3 12 b1 ed df 02 8b 74 97 -6b ed 6b 3f 6a 63 d4 e7 78 59 24 3c 9c cc dc 98 -01 65 23 ab b0 24 83 b3 55 91 c3 3a ad 81 21 3b -b7 c7 bb 1a 47 0a ab c1 0d 44 25 6c 4d 45 59 d9 -16 - -# Salt: -ef a8 bf f9 62 12 b2 f4 a3 f3 71 a1 0d 57 41 52 -65 5f 5d fb - -# Signature: -7e 09 35 ea 18 f4 d6 c1 d1 7c e8 2e b2 b3 83 6c -55 b3 84 58 9c e1 9d fe 74 33 63 ac 99 48 d1 f3 -46 b7 bf dd fe 92 ef d7 8a db 21 fa ef c8 9a de -42 b1 0f 37 40 03 fe 12 2e 67 42 9a 1c b8 cb d1 -f8 d9 01 45 64 c4 4d 12 01 16 f4 99 0f 1a 6e 38 -77 4c 19 4b d1 b8 21 32 86 b0 77 b0 49 9d 2e 7b -3f 43 4a b1 22 89 c5 56 68 4d ee d7 81 31 93 4b -b3 dd 65 37 23 6f 7c 6f 3d cb 09 d4 76 be 07 72 -1e 37 e1 ce ed 9b 2f 7b 40 68 87 bd 53 15 73 05 -e1 c8 b4 f8 4d 73 3b c1 e1 86 fe 06 cc 59 b6 ed -b8 f4 bd 7f fe fd f4 f7 ba 9c fb 9d 57 06 89 b5 -a1 a4 10 9a 74 6a 69 08 93 db 37 99 25 5a 0c b9 -21 5d 2d 1c d4 90 59 0e 95 2e 8c 87 86 aa 00 11 -26 52 52 47 0c 04 1d fb c3 ee c7 c3 cb f7 1c 24 -86 9d 11 5c 0c b4 a9 56 f5 6d 53 0b 80 ab 58 9a -cf ef c6 90 75 1d df 36 e8 d3 83 f8 3c ed d2 cc - -# --------------------------------- -# RSASSA-PSS Signature Example 10.6 -# --------------------------------- - -# Message to be signed: -25 f1 08 95 a8 77 16 c1 37 45 0b b9 51 9d fa a1 -f2 07 fa a9 42 ea 88 ab f7 1e 9c 17 98 00 85 b5 -55 ae ba b7 62 64 ae 2a 3a b9 3c 2d 12 98 11 91 -dd ac 6f b5 94 9e b3 6a ee 3c 5d a9 40 f0 07 52 -c9 16 d9 46 08 fa 7d 97 ba 6a 29 15 b6 88 f2 03 -23 d4 e9 d9 68 01 d8 9a 72 ab 58 92 dc 21 17 c0 -74 34 fc f9 72 e0 58 cf 8c 41 ca 4b 4f f5 54 f7 -d5 06 8a d3 15 5f ce d0 f3 12 5b c0 4f 91 93 37 -8a 8f 5c 4c 3b 8c b4 dd 6d 1c c6 9d 30 ec ca 6e -aa 51 e3 6a 05 73 0e 9e 34 2e 85 5b af 09 9d ef -b8 af d7 - -# Salt: -ad 8b 15 23 70 36 46 22 4b 66 0b 55 08 85 91 7c -a2 d1 df 28 - -# Signature: -6d 3b 5b 87 f6 7e a6 57 af 21 f7 54 41 97 7d 21 -80 f9 1b 2c 5f 69 2d e8 29 55 69 6a 68 67 30 d9 -b9 77 8d 97 07 58 cc b2 60 71 c2 20 9f fb d6 12 -5b e2 e9 6e a8 1b 67 cb 9b 93 08 23 9f da 17 f7 -b2 b6 4e cd a0 96 b6 b9 35 64 0a 5a 1c b4 2a 91 -55 b1 c9 ef 7a 63 3a 02 c5 9f 0d 6e e5 9b 85 2c -43 b3 50 29 e7 3c 94 0f f0 41 0e 8f 11 4e ed 46 -bb d0 fa e1 65 e4 2b e2 52 8a 40 1c 3b 28 fd 81 -8e f3 23 2d ca 9f 4d 2a 0f 51 66 ec 59 c4 23 96 -d6 c1 1d bc 12 15 a5 6f a1 71 69 db 95 75 34 3e -f3 4f 9d e3 2a 49 cd c3 17 49 22 f2 29 c2 3e 18 -e4 5d f9 35 31 19 ec 43 19 ce dc e7 a1 7c 64 08 -8c 1f 6f 52 be 29 63 41 00 b3 91 9d 38 f3 d1 ed -94 e6 89 1e 66 a7 3b 8f b8 49 f5 87 4d f5 94 59 -e2 98 c7 bb ce 2e ee 78 2a 19 5a a6 6f e2 d0 73 -2b 25 e5 95 f5 7d 3e 06 1b 1f c3 e4 06 3b f9 8f - -# ============================================= diff --git a/src/libtomcrypt/notes/rsa-testvectors/readme.txt b/src/libtomcrypt/notes/rsa-testvectors/readme.txt deleted file mode 100644 index 788c0ba875..0000000000 --- a/src/libtomcrypt/notes/rsa-testvectors/readme.txt +++ /dev/null @@ -1,22 +0,0 @@ -==================== -pkcs-1v2-1-vec.zip -==================== - -This directory contains test vectors for RSAES-OAEP and -RSASSA-PSS as defined in PKCS #1 v2.1. - -The files: - -readme.txt This file. - -oaep-vect.txt Test vectors for RSAES-OAEP encryption. - -oaep-int.txt Intermediate values for RSAES-OAEP - encryption and RSA decryption with CRT. - Also, DER-encoded RSAPrivateKey and - RSAPublicKey types. - -pss-vect.txt Test vectors for RSASSA-PSS signing. - -pss-int.txt Intermediate values for RSASSA-PSS - signing. diff --git a/src/libtomcrypt/notes/rsa-testvectors/rt.py b/src/libtomcrypt/notes/rsa-testvectors/rt.py deleted file mode 100644 index 3f6ab7f394..0000000000 --- a/src/libtomcrypt/notes/rsa-testvectors/rt.py +++ /dev/null @@ -1,253 +0,0 @@ -#!/usr/bin/env python - -import sys -import os -import hashlib - -def md5_for_file(path, block_size=256*128): - ''' - Block size directly depends on the block size of your filesystem - to avoid performances issues - Here I have blocks of 4096 octets (Default NTFS) - ''' - md5 = hashlib.md5() - with open(path,'rb') as f: - for chunk in iter(lambda: f.read(block_size), b''): - md5.update(chunk) - f.close() - return md5.hexdigest() - -def read_until_ends(f, s): - while True: - l = f.readline() - if l.strip().endswith(s): - break - return l - -def read_until_start(f, s): - while True: - l = f.readline() - if l.startswith(s): - break - return l - -def read_hex(f): - t = [] - while True: - l = f.readline() - if l.strip() == '': - break - t.extend(l.strip().split(' ')) - return t - -class NamedData(object): - def __init__(self, name, data): - self.name = name - self.data = data - - def __str__(self): - return " /* {0} */\n {1},\n {{ {2} }}\n".format(self.name, len(self.data), ', '.join('0x' + x for x in self.data)) - -def read_part(f, s): - name = read_until_start(f, s).strip().lstrip('# ').rstrip(':') - data = read_hex(f) - e = NamedData(name, data) - return e - -class RsaKey(object): - def __init__(self, n, e, d, p, q, dP, dQ, qInv): - self.n = n - self.e = e - self.d = d - self.p = p - self.q = q - self.dP = dP - self.dQ = dQ - self.qInv = qInv - - def __str__(self): - return "{{\n{0},\n{1},\n{2},\n{3},\n{4},\n{5},\n{6},\n{7}\n}}\n".format(self.n, self.e, self.d, self.p, self.q, self.dP, self.dQ, self.qInv) - -def read_key(f): - if ftype.version == 1: - read_until_start(f, '# Private key') - n = read_part(f, ftype.n) - e = read_part(f, ftype.e) - d = read_part(f, ftype.d) - p = read_part(f, ftype.p) - q = read_part(f, ftype.q) - dP = read_part(f, ftype.dP) - dQ = read_part(f, ftype.dQ) - qInv = read_part(f, ftype.qInv) - k = RsaKey(n, e, d, p, q, dP, dQ, qInv) - return k - -class Data(object): - def __init__(self, name, obj1, obj2, obj3): - self.name = name - self.obj1 = obj1 - self.obj2 = obj2 - self.obj3 = obj3 - - def __str__(self): - if self.obj3 == None: - return "{{\n \"{0}\",\n{1},\n{2}\n}}\n,".format(self.name, self.obj1, self.obj2) - else: - return "{{\n \"{0}\",\n{1},\n{2},\n{3}\n}}\n,".format(self.name, self.obj1, self.obj2, self.obj3) - -def read_data(f): - name = read_until_start(f, ftype.o).strip().lstrip('# ') - obj1 = read_part(f, ftype.o1) - obj2 = read_part(f, ftype.o2) - if ftype.name == 'emsa': - obj3 = None - else: - obj3 = read_part(f, ftype.o3) - s = Data(name, obj1, obj2, obj3) - return s - -class Example(object): - def __init__(self, name, key, data): - self.name = name - self.key = key - self.data = data - - def __str__(self): - res = "{{\n \"{0}\",\n{1},\n{{".format(self.name, str(self.key)) - for idx, d in enumerate(self.data, 1): - if idx == 2: - res += '#ifdef LTC_TEST_EXT\n' - res += str(d) + '\n' - if idx == ftype.numcases: - res += '#endif /* LTC_TEST_EXT */\n' - res += '}\n},' - return res - -def read_example(f): - name = read_until_start(f, '# Example').strip().lstrip('# ') - key = read_key(f) - l = read_until_start(f, ftype.sod) - d = [] - while l.strip().startswith(ftype.sod): - if ftype.version == 1: - f.seek(-len(l), os.SEEK_CUR) - data = read_data(f) - d.append(data) - l = read_until_start(f, '#') - - e = Example(name, key, d) - f.seek(-len(l), os.SEEK_CUR) - return e - - -class PkcsType(object): - def __init__(self, name): - if name == 'pss': - self.o = '# RSASSA-PSS Signature Example' - self.o1 = '# Message to be signed' - self.o2 = '# Salt' - self.o3 = '# Signature' - elif name == 'oaep': - self.o = '# RSAES-OAEP Encryption Example' - self.o1 = '# Message to be encrypted' - self.o2 = '# Seed' - self.o3 = '# Encryption' - elif name == 'emsa': - self.o = '# PKCS#1 v1.5 Signature Example' - self.o1 = '# Message to be signed' - self.o2 = '# Signature' - elif name == 'eme': - self.o = '# PKCS#1 v1.5 Encryption Example' - self.o1 = '# Message' - self.o2 = '# Seed' - self.o3 = '# Encryption' - else: - raise ValueError('Type unknown: ' + name) - - if name == 'pss' or name == 'oaep': - self.version = 2 - self.numcases = 6 - self.n = '# RSA modulus n' - self.e = '# RSA public exponent e' - self.d = '# RSA private exponent d' - self.p = '# Prime p' - self.q = '# Prime q' - self.dP = '# p\'s CRT exponent dP' - self.dQ = '# q\'s CRT exponent dQ' - self.qInv = '# CRT coefficient qInv' - self.sod = '# --------------------------------' - elif name == 'emsa' or name == 'eme': - self.version = 1 - self.numcases = 20 - self.n = '# Modulus' - self.e = '# Public exponent' - self.d = '# Exponent' - self.p = '# Prime 1' - self.q = '# Prime 2' - self.dP = '# Prime exponent 1' - self.dQ = '# Prime exponent 2' - self.qInv = '# Coefficient' - self.sod = self.o - self.name = name - -ftype = PkcsType(sys.argv[2]) - -print('/* Generated from file: %s\n * with md5 hash: %s\n */\n' % (sys.argv[1], md5_for_file(sys.argv[1]))) -print(''' -typedef struct rsaKey { - int n_l; - unsigned char n[256]; - int e_l; - unsigned char e[256]; - int d_l; - unsigned char d[256]; - int p_l; - unsigned char p[256]; - int q_l; - unsigned char q[256]; - int dP_l; - unsigned char dP[256]; - int dQ_l; - unsigned char dQ[256]; - int qInv_l; - unsigned char qInv[256]; -} rsaKey_t; - -typedef struct rsaData { - const char* name; - int o1_l; - unsigned char o1[256]; - int o2_l; - unsigned char o2[256];''') - -if ftype.name != 'emsa': - print(''' int o3_l; - unsigned char o3[256];''') - -print('''} rsaData_t; - -typedef struct testcase { - const char* name; - rsaKey_t rsa; -#ifdef LTC_TEST_EXT - rsaData_t data[%d]; -#else - rsaData_t data[1]; -#endif /* LTC_TEST_EXT */ -} testcase_t; - -testcase_t testcases_%s[] = - {''' % (ftype.numcases, sys.argv[2])) - -with open(sys.argv[1], 'rb') as f: - ex = [] - while read_until_ends(f, '============================================='): - if f.tell() == os.path.getsize(sys.argv[1]): - break - e = read_example(f) - ex.append(e) - - for i in ex: - print(i) -f.close() -print('};\n') diff --git a/src/libtomcrypt/notes/tech0001.txt b/src/libtomcrypt/notes/tech0001.txt deleted file mode 100644 index daf7e57a0d..0000000000 --- a/src/libtomcrypt/notes/tech0001.txt +++ /dev/null @@ -1,73 +0,0 @@ -Tech Note 0001 -How to Gather Entropy on Embedded Systems -Tom St Denis - -Introduction ------------- - -This tech note explains a relatively simple way to gather entropy for a PRNG (Yarrow in this case) in embedded systems -where there are few sources of entropy or physical sources. - -When trying to setup a secure random number generator a fresh source of random data (entropy) is required to ensure the -deterministic state of the PRNG is not known or predetermined with respect to an attacker. - -At the very least the system requires one timer and one source of un-timed interrupts. by "un-timed" I mean interrupts -that do not occur at regular intervals [e.g. joypad/keypad input, network packets, etc...]. - -First we shall begin by taking an overview of how the Yarrow PRNG works within libtomcrypt. At the heart of all -PRNGs is the "prng_state" data type. This is a union of structures that hold the PRNG state for the various prngs. The -first thing we require is a state... - - prng_state myPrng; - -Next we must initialize the state once to get the ball rolling - - if (yarrow_start(&myPrng) != CRYPT_OK) { - // error should never happen! - } - -At this point the PRNG is ready to accept fresh entropy which is added with - - int yarrow_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng) - -This function is **NOT** thread safe which will come under consideration later. To add entropy to our PRNG we must -call this function with fresh data as its sampled. Lets say we have a timer counter called "uTimer" which is a 32-bit -long and say a 32-bit joyPad state called "uPad". An example interrupt handler would look like - - void joypad_interrupt(...) { - unsigned char buf[8]; - - STORE32L(uTimer, buf); - STORE32L(uPad, buf+4) - if (yarrow_add_entropy(buf, 8, &myPrng) != CRYPT_OK) { - // this should never occur either unless you didn't call yarrow_start - } - - // handle interrupt - } - -In this snippet the timer count and state of the joypad are added together into the entropy pool. The timer is important -because with respect to the joypad it is a good source of entropy (on its own its not). For example, the probability of -the user pushing the up arrow is fairly high, but at a specific time is not. - -This method doesn't gather alot of entropy and has to be used to for quite a while. One way to speed it up is to tap -multiple sources. If you have a network adapter and other sources of events (keyboard, mouse, etc...) trapping their -data is ideal as well. Its important to gather the timer along with the event data. - -As mentioned the "yarrow_add_entropy()" function is not thread safe. If your system allows interrupt handlers to be -interrupted themselves then you could have trouble. One simple way is to detect when an interrupt is in progress and -simply not add entropy during the call (jump over the yarrow_add_entropy() call) - -Once you feel that there has been enough entropy added to the pool then within a single thread you can call - - int yarrow_ready(prng_state *prng) - -Now the PRNG is ready to read via the - - unsigned long yarrow_read(unsigned char *buf, unsigned long len, prng_state *prng) - -It is a very good idea that once you call the yarrow_ready() function that you stop harvesting entropy in your interrupt -functions. This will free up alot of CPU time. Also one more final note. The yarrow_read() function is not thread -safe either. This means if you have multiple threads or processes that read from it you will have to add your own semaphores -around calls to it. - diff --git a/src/libtomcrypt/notes/tech0002.txt b/src/libtomcrypt/notes/tech0002.txt deleted file mode 100644 index b9990e02e4..0000000000 --- a/src/libtomcrypt/notes/tech0002.txt +++ /dev/null @@ -1,52 +0,0 @@ -Tech Note 0002 -How to avoid non-intrusive timing attacks with online computations -Tom St Denis - -Introduction ------------- - -A timing attack is when an attacker can observe a side channel of the device (in this case time). In this tech note -we consider only non-intrusive timing attacks with respect to online computations. That is an attacker can -determine when a computation (such as a public key encryption) begins and ends but cannot observe the device -directly. This is specifically important for applications which transmit data via a public network. - -Consider a Diffie-Hellman encryption which requires the sender to make up a public key "y = g^x mod p". Libtomcrypt -uses the MPI bignum library to perform the operation. The time it takes to compute y is controlled by the number -of 1 bits in the exponent 'x'. To a large extent there will be the same number of squaring operations. "1" bits in -the exponent require the sender to perform a multiplication. This means to a certain extent an attacker can -determine not only the magnitude of 'x' but the number of one bits. With this information the attacker cannot directly -learn the key used. However, good cryptography mandates the close scrutiny of any practical side channel. - -Similar logic applies to the other various routines. Fortunately for this case there is a simple solution. First, -determine the maximum time the particular operation can require. For instance, on an Athlon 1.53Ghz XP processor a -DH-768 encryption requires roughly 50 milliseconds. Take that time and round it up. Now place a delay after the call. - -For example, - -void demo(void) { - clock_t t1; - - // get initial clock - t1 = clock(); - - // some PK function - - // now delay - while (clock() < (t1 + 100)); - - // transmit data... - -} - -This code has the effect of taking at least 100 ms always. In effect someone analyzing the traffic will see that the -operations always take a fixed amount of time. Since no two platforms are the same this type of fix has not been -incorporated into libtomcrypt (nor is it desired for many platforms). This requires on the developers part to profile -the code to determine the delays required. - -Note that this "quick" fix has no effect against an intrusive attacker. For example, power consumption will drop -significantly in the loop after the operation. However, this type of fix is more important to secure the user of the -application/device. For example, a user placing an order online won't try to cheat themselves by cracking open their -device and performing side-channel cryptanalysis. An attacker over a network might try to use the timing information -against the user. - - diff --git a/src/libtomcrypt/notes/tech0003.txt b/src/libtomcrypt/notes/tech0003.txt deleted file mode 100644 index 471378aae7..0000000000 --- a/src/libtomcrypt/notes/tech0003.txt +++ /dev/null @@ -1,52 +0,0 @@ -Tech Note 0003 -Minimizing Memory Usage -Tom St Denis - -Introduction ------------- - -For the most part the library can get by with around 20KB of stack and about 32KB of heap even if you use the -public key functions. If all you plan on using are the hashes and ciphers than only about 1KB of stack is required -and no heap. - -To save space all of the symmetric key scheduled keys are stored in a union called "symmetric_key". This means the -size of a symmetric_key is the size of the largest scheduled key. By removing the ciphers you don't use from -the build you can minimize the size of this structure. For instance, by removing both Twofish and Blowfish the -size reduces to 768 bytes from the 4,256 bytes it would have been (on a 32-bit platform). Or if you remove -Blowfish and use Twofish with TWOFISH_SMALL defined its still 768 bytes. Even at its largest the structure is only -4KB which is normally not a problem for any platform. - - -Cipher Name | Size of scheduled key (bytes) | -------------+-------------------------------| -Twofish | 4,256 | -Blowfish | 4,168 | -3DES | 768 | -SAFER+ | 532 | -Serpent | 528 | -Rijndael | 516 | -XTEA | 256 | -RC2 | 256 | -DES | 256 | -SAFER [#] | 217 | -RC5 | 204 | -Twofish [*] | 193 | -RC6 | 176 | -CAST5 | 132 | -Noekeon | 32 | -Skipjack | 10 | -------------+-------------------------------/ -Memory used per cipher on a 32-bit platform. - -[*] For Twofish with TWOFISH_SMALL defined -[#] For all 64-bit SAFER ciphers. - -Noekeon is a fairly fast cipher and uses very little memory. Ideally in low-ram platforms all other ciphers should be -left undefined and Noekeon should remain. While Noekeon is generally considered a secure block cipher (it is insecure -as a hash) CAST5 is perhaps a "runner-up" choice. CAST5 has been around longer (it is also known as CAST-128) and is -fairly fast as well. - -You can easily accomplish this via the "config.pl" script. Simply answer "n" to all of the ciphers except the one you want -and then rebuild the library. [or you can hand edit tomcrypt_custom.h] - - diff --git a/src/libtomcrypt/notes/tech0004.txt b/src/libtomcrypt/notes/tech0004.txt deleted file mode 100644 index 2acd3782ff..0000000000 --- a/src/libtomcrypt/notes/tech0004.txt +++ /dev/null @@ -1,91 +0,0 @@ -Tech Note 0004 -Using Yarrow, Fortuna and SOBER-128 -Tom St Denis - -Introduction ------------- - -This tech note explains how to use three of the more useful pseudo random number generators and their -own little "issues". While all of the PRNGs have the same API and are roughly used in the same -manner their effectiveness really depends on the user knowing how they work. - - -Yarrow ------- - -Yarrow is by far the simplest of the PRNGs. It gathers bits of entropy by hashing the pool state -plus the additional bits storing the message digest back in the pool. E.g. - -pool = hash(pool || newbits) - -Simply dump bits into the PRNG via yarrow_add_entropy() and call yarrow_ready() when you want to -put them to use. This PRNG while simple is not entirely safe. An attacker who learns the state -of the pool and can control future events can control the PRNG. This requires an active attacker but -isn't entire impossible. - -The pool is then used as a key for a cipher that is used in CTR mode. - -Yarrow is mostly meant for short-term programs [e.g. like file utils]. This particular implementation -is not meant for long-term usage. - -Fortuna -------- - -Fortuna was designed by Niels Fergusson and Bruce Schneier [Bruce is also the guy who invented Yarrow]. It -operates on a more defensive level than Yarrow. Instead of 1 entropy pool it has 32 and the new entropy -is spread [round robin] in all of the pools. - -That is, each call to fortuna_add_entropy() puts the bits in the next [in the sequenece] pool of entropy. -Effective bits are added to the pool by sending them through a hash [but not terminating the hash]. - -Here's the main catch though. When the PRNG must be reseeded [so that you can extract bits from it] only -certain pools are used. More precisely the i'th pool is used every 2**i'th reseeding. For example, pool[0] -is always used. pool[1] is used every second reseeding, pool[2] every fourth. - -The pools are hashed together along with the current key and the result is the new key for a cipher which -operates in CTR mode [more about that in a sec]. - -Now this may seem odd at first however there is a good reason behind it. An attacker who learns pool[0] won't -strictly know the other pools. So the recovery rate of is not 0. In fact pool[0] can be completely -compromised and the PRNG will still eventually recover. The value FORTUNA_WD is the "WatchDog" counter. -Every FORTUNA_WD calls to fortuna_read will invoke the reseed operation. By default this is set to 10 which -means after 10 calls the PRNG will reseed itself. - -The pools are combined with the running cipher key [256 bits] so that a cipher in CTR mode can produce -the stream. Unlike Yarrow the cipher is re-keyed after every call to fortuna_read() [so one big call -would be faster than many smaller calls]. This prevents too much data being encrypted under the same -key [and mitigates a flaw in CTR mode that the same block can't be emitted twice under the same key]. - -Fortuna is really meant for a kernel-level PRNG. The more sources [and often] you feed into it the -healthier it will be. It's also meant to be used for long term purposes. Since it can recover from -compromises it is harder to control it. - -SOBER-128 ------- - -SOBER-128 is actually a stream cipher but like most ciphers can easily be modelled in the context of a PRNG. -This PRNG is extremely fast [4 cycles/byte on a P4] and was designed by a well known cryptographer [Greg Rose]. - -SOBER-128 doesn't really "act" like the other two PRNGs. It's meant to be seeded once and then read as -required. In such a sense it isn't a "system PRNG" but useful short term purposes. In particular -the sober128_read() function actually XORs against the input buffer you specify. This allows the -read() function to be used as an "encrypt" function as well. - -You can only key SOBER-128 once [by calling sober128_add_entropy()]. Once it it is keyed subsequent -calls to add_entropy() will be considered a "re-IV" operation. Changing the IV allows you to use same -initial key and not produce the same output stream. It also lets you differentiate packets. E.g. each -packet has it's own IV. - -All inputs to sober128_add_entropy() must have a length that is a multiple of four. - -Overall -------- - -Since SOBER-128 is *much* faster than the other two PRNGs a good setup would be to use Fortuna as your -system-wide PRNG and use SOBER-128 [key'ed from Fortuna] for encrypting streams or as a PRNG for -simulations. - -Yarrow is still a good candidate but only for "short lived" programs. However, since Fortuna is faster -[by about 10 cycles/byte on a P4] I'd use Fortuna anyways... - -Tom \ No newline at end of file diff --git a/src/libtomcrypt/notes/tech0005.txt b/src/libtomcrypt/notes/tech0005.txt deleted file mode 100644 index c2502208cf..0000000000 --- a/src/libtomcrypt/notes/tech0005.txt +++ /dev/null @@ -1,20 +0,0 @@ -Tech Note 0005 -Minimizing Code Space -Tom St Denis - -Introduction ------------- - -Tweaking... - -You can disable whole classes of algorithms on the command line with the LTC_NO_* defines. From there you can manually turn on what you want to enable. - -The following build with GCC 3.4.4 on an AMD64 box gets you AES, CTR mode, SHA-256, HMAC, Yarrow, full RSA PKCS #1, PKCS #5 and ASN.1 DER in -roughly 40KB of code (49KB on the ARMv4) (both excluding the math library). - -CFLAGS="-DLTC_NO_CIPHERS -DLTC_NO_HASHES -DLTC_NO_PRNGS -DLTC_NO_MACS -DLTC_NO_MODES -DLTC_NO_PK -DLTC_RIJNDAEL -DLTC_CTR_MODE -DSHA256 \ --DLTC_HMAC -DYARROW -DMRSA -DMPI -DTFM_DESC -DARGTYPE=3 -Os -DLTC_SMALL_CODE -fomit-frame-pointer" make IGNORE_SPEED=1 - -Obviously this won't get you performance but if you need to pack a crypto lib in a device with limited means it's more than enough... - -Neato eh? diff --git a/src/libtomcrypt/notes/tech0006.txt b/src/libtomcrypt/notes/tech0006.txt deleted file mode 100644 index ecbe8b0809..0000000000 --- a/src/libtomcrypt/notes/tech0006.txt +++ /dev/null @@ -1,91 +0,0 @@ -Tech Note 0006 -PK Standards Compliance -Tom St Denis - -RSA ----- - -PKCS #1 compliance. - -Key Format: RSAPublicKey and RSAPrivateKey as per PKCS #1 v2.1 -Encryption: OAEP as per PKCS #1 -Signature : PSS as per PKCS #1 - -DSA ----- - -The NIST DSA algorithm - -Key Format: HomeBrew [see below] -Signature : ANSI X9.62 format [see below]. - -Keys are stored as - -DSAPublicKey ::= SEQUENCE { - publicFlags BIT STRING(1), -- must be 0 - g INTEGER , -- base generator, check that g^q mod p == 1 - -- and that 1 < g < p - 1 - p INTEGER , -- prime modulus - q INTEGER , -- order of sub-group (must be prime) - y INTEGER , -- public key, specifically, g^x mod p, - -- check that y^q mod p == 1 - -- and that 1 < y < p - 1 -} - -DSAPrivateKey ::= SEQUENCE { - publicFlags BIT STRING(1), -- must be 1 - g INTEGER , -- base generator, check that g^q mod p == 1 - -- and that 1 < g < p - 1 - p INTEGER , -- prime modulus - q INTEGER , -- order of sub-group (must be prime) - y INTEGER , -- public key, specifically, g^x mod p, - -- check that y^q mod p == 1 - -- and that 1 < y < p - 1 - x INTEGER -- private key -} - -Signatures are stored as - -DSASignature ::= SEQUENCE { - r, s INTEGER -- signature parameters -} - -ECC ----- - -The ANSI X9.62 and X9.63 algorithms [partial]. Supports all NIST GF(p) curves. - -Key Format : Homebrew [see below, only GF(p) NIST curves supported] -Signature : X9.62 compliant -Encryption : Homebrew [based on X9.63, differs in that the public point is stored as an ECCPublicKey] -Shared Secret: X9.63 compliant - -ECCPublicKey ::= SEQUENCE { - flags BIT STRING(1), -- public/private flag (always zero), - keySize INTEGER, -- Curve size (in bits) divided by eight - -- and rounded down, e.g. 521 => 65 - pubkey.x INTEGER, -- The X co-ordinate of the public key point - pubkey.y INTEGER, -- The Y co-ordinate of the public key point -} - -ECCPrivateKey ::= SEQUENCE { - flags BIT STRING(1), -- public/private flag (always one), - keySize INTEGER, -- Curve size (in bits) divided by eight - -- and rounded down, e.g. 521 => 65 - pubkey.x INTEGER, -- The X co-ordinate of the public key point - pubkey.y INTEGER, -- The Y co-ordinate of the public key point - secret.k INTEGER, -- The secret key scalar -} - -The encryption works by finding the X9.63 shared secret and hashing it. The hash is then simply XOR'ed against the message [which must be at most the size -of the hash digest]. The format of the encrypted text is as follows - -ECCEncrypted ::= SEQUENCE { - hashOID OBJECT IDENTIFIER, -- The OID of the hash used - pubkey OCTET STRING , -- Encapsulation of a random ECCPublicKey - skey OCTET STRING -- The encrypted text (which the hash was XOR'ed against) -} - -% $Source: /cvs/libtom/libtomcrypt/notes/tech0006.txt,v $ -% $Revision: 1.2 $ -% $Date: 2005/06/18 02:26:27 $ diff --git a/src/libtomcrypt/notes/tech0007.txt b/src/libtomcrypt/notes/tech0007.txt deleted file mode 100644 index 149bd49df9..0000000000 --- a/src/libtomcrypt/notes/tech0007.txt +++ /dev/null @@ -1,5 +0,0 @@ -Tech Note #7 -Quick building for testing with LTM - -EXTRALIBS=-ltommath CFLAGS="-g3 -DLTC_NO_ASM -DUSE_LTM -DLTM_DESC" make -j3 IGNORE_SPEED=1 test - diff --git a/src/libtomcrypt/printinfo.sh b/src/libtomcrypt/printinfo.sh deleted file mode 100644 index 213af5b163..0000000000 --- a/src/libtomcrypt/printinfo.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -version=$(git describe --tags --always --dirty 2>/dev/null) -if [ ! -e ".git" ] || [ -z $version ] -then - version=$(grep "^VERSION=" makefile_include.mk | sed "s/.*=//") -fi -echo "Testing version:" $version -#grep "VERSION=" makefile | perl -e "@a = split('=', <>); print @a[1];"` - -# get uname -echo "uname="`uname -a` - -# get gcc name -if [ -z ${CC} ] -then - CC="gcc" -fi -echo "${CC}="`${CC} -dumpversion` -echo diff --git a/src/libtomcrypt/run.sh b/src/libtomcrypt/run.sh deleted file mode 100644 index 8c4d294d01..0000000000 --- a/src/libtomcrypt/run.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash - -# output version -bash printinfo.sh - -bash build.sh " $1" "$2 -O2" "$3 IGNORE_SPEED=1" "$4" "$5" -if [ -a testok.txt ] && [ -f testok.txt ]; then - echo -else - echo - echo "Test failed" - exit 1 -fi - -rm -f testok.txt -bash build.sh " $1" "$2 -Os" "$3 IGNORE_SPEED=1 LTC_SMALL=1" "$4" "$5" -if [ -a testok.txt ] && [ -f testok.txt ]; then - echo -else - echo - echo "Test failed" - exit 1 -fi - -rm -f testok.txt -bash build.sh " $1" "$2" "$3 LTC_DEBUG=1" "$4" "$5" -if [ -a testok.txt ] && [ -f testok.txt ]; then - echo -else - echo - echo "Test failed" - exit 1 -fi - -rm -f testok.txt -bash build.sh " $1" "$2" "$3" "$4" "$5" -if [ -a testok.txt ] && [ -f testok.txt ]; then - echo -else - echo - echo "Test failed" - exit 1 -fi - -exit 0 - -# ref: HEAD -> master, tag: v1.18.2 -# git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 -# commit time: 2018-07-01 22:49:01 +0200 diff --git a/src/libtomcrypt/scan_build.sh b/src/libtomcrypt/scan_build.sh deleted file mode 100644 index 91fcc562f2..0000000000 --- a/src/libtomcrypt/scan_build.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -[ "$TRAVIS_CI" != "" ] && { [ -z "$(which scan-build)" ] && { echo "installing clang"; sudo apt-get install clang -y -qq; }; } || true - -if [ "$#" = "5" -a "$(echo $3 | grep -v 'makefile[.]')" = "" ]; then - echo "only run $0 for the regular makefile, early exit success" - exit 0 -fi - -# output version -bash printinfo.sh - -make clean > /dev/null - -scan_build=$(which scan-build) -[ -z "$scan_build" ] && scan_build=$(find /usr/bin/ -name 'scan-build-*' | sort -nr | head -n1) || true -[ -z "$scan_build" ] && { echo "couldn't find clang scan-build"; exit 1; } || echo "run $scan_build" -export CFLAGS="-DUSE_LTM -DLTM_DESC -I/usr/include" -export EXTRALIBS="-ltommath" -$scan_build --status-bugs make -f makefile.unix all CFLAGS="$CFLAGS" EXTRALIBS="$EXTRALIBS" diff --git a/src/libtomcrypt/src/ciphers/aes/aes.c b/src/libtomcrypt/src/ciphers/aes/aes.c deleted file mode 100644 index 19c732fe65..0000000000 --- a/src/libtomcrypt/src/ciphers/aes/aes.c +++ /dev/null @@ -1,743 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* AES implementation by Tom St Denis - * - * Derived from the Public Domain source code by - ---- - * rijndael-alg-fst.c - * - * @version 3.0 (December 2000) - * - * Optimised ANSI C code for the Rijndael cipher (now AES) - * - * @author Vincent Rijmen - * @author Antoon Bosselaers - * @author Paulo Barreto ---- - */ -/** - @file aes.c - Implementation of AES -*/ - -#include "tomcrypt.h" - -#ifdef LTC_RIJNDAEL - -#ifndef ENCRYPT_ONLY - -#define SETUP rijndael_setup -#define ECB_ENC rijndael_ecb_encrypt -#define ECB_DEC rijndael_ecb_decrypt -#define ECB_DONE rijndael_done -#define ECB_TEST rijndael_test -#define ECB_KS rijndael_keysize - -const struct ltc_cipher_descriptor rijndael_desc = -{ - "rijndael", - 6, - 16, 32, 16, 10, - SETUP, ECB_ENC, ECB_DEC, ECB_TEST, ECB_DONE, ECB_KS, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -const struct ltc_cipher_descriptor aes_desc = -{ - "aes", - 6, - 16, 32, 16, 10, - SETUP, ECB_ENC, ECB_DEC, ECB_TEST, ECB_DONE, ECB_KS, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -#else - -#define SETUP rijndael_enc_setup -#define ECB_ENC rijndael_enc_ecb_encrypt -#define ECB_KS rijndael_enc_keysize -#define ECB_DONE rijndael_enc_done - -const struct ltc_cipher_descriptor rijndael_enc_desc = -{ - "rijndael", - 6, - 16, 32, 16, 10, - SETUP, ECB_ENC, NULL, NULL, ECB_DONE, ECB_KS, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -const struct ltc_cipher_descriptor aes_enc_desc = -{ - "aes", - 6, - 16, 32, 16, 10, - SETUP, ECB_ENC, NULL, NULL, ECB_DONE, ECB_KS, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -#endif - -#define __LTC_AES_TAB_C__ -#include "aes_tab.c" - -static ulong32 setup_mix(ulong32 temp) -{ - return (Te4_3[byte(temp, 2)]) ^ - (Te4_2[byte(temp, 1)]) ^ - (Te4_1[byte(temp, 0)]) ^ - (Te4_0[byte(temp, 3)]); -} - -#ifndef ENCRYPT_ONLY -#ifdef LTC_SMALL_CODE -static ulong32 setup_mix2(ulong32 temp) -{ - return Td0(255 & Te4[byte(temp, 3)]) ^ - Td1(255 & Te4[byte(temp, 2)]) ^ - Td2(255 & Te4[byte(temp, 1)]) ^ - Td3(255 & Te4[byte(temp, 0)]); -} -#endif -#endif - - /** - Initialize the AES (Rijndael) block cipher - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful - */ -int SETUP(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - int i; - ulong32 temp, *rk; -#ifndef ENCRYPT_ONLY - ulong32 *rrk; -#endif - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - if (keylen != 16 && keylen != 24 && keylen != 32) { - return CRYPT_INVALID_KEYSIZE; - } - - if (num_rounds != 0 && num_rounds != (10 + ((keylen/8)-2)*2)) { - return CRYPT_INVALID_ROUNDS; - } - - skey->rijndael.Nr = 10 + ((keylen/8)-2)*2; - - /* setup the forward key */ - i = 0; - rk = skey->rijndael.eK; - LOAD32H(rk[0], key ); - LOAD32H(rk[1], key + 4); - LOAD32H(rk[2], key + 8); - LOAD32H(rk[3], key + 12); - if (keylen == 16) { - for (;;) { - temp = rk[3]; - rk[4] = rk[0] ^ setup_mix(temp) ^ rcon[i]; - rk[5] = rk[1] ^ rk[4]; - rk[6] = rk[2] ^ rk[5]; - rk[7] = rk[3] ^ rk[6]; - if (++i == 10) { - break; - } - rk += 4; - } - } else if (keylen == 24) { - LOAD32H(rk[4], key + 16); - LOAD32H(rk[5], key + 20); - for (;;) { - #ifdef _MSC_VER - temp = skey->rijndael.eK[rk - skey->rijndael.eK + 5]; - #else - temp = rk[5]; - #endif - rk[ 6] = rk[ 0] ^ setup_mix(temp) ^ rcon[i]; - rk[ 7] = rk[ 1] ^ rk[ 6]; - rk[ 8] = rk[ 2] ^ rk[ 7]; - rk[ 9] = rk[ 3] ^ rk[ 8]; - if (++i == 8) { - break; - } - rk[10] = rk[ 4] ^ rk[ 9]; - rk[11] = rk[ 5] ^ rk[10]; - rk += 6; - } - } else if (keylen == 32) { - LOAD32H(rk[4], key + 16); - LOAD32H(rk[5], key + 20); - LOAD32H(rk[6], key + 24); - LOAD32H(rk[7], key + 28); - for (;;) { - #ifdef _MSC_VER - temp = skey->rijndael.eK[rk - skey->rijndael.eK + 7]; - #else - temp = rk[7]; - #endif - rk[ 8] = rk[ 0] ^ setup_mix(temp) ^ rcon[i]; - rk[ 9] = rk[ 1] ^ rk[ 8]; - rk[10] = rk[ 2] ^ rk[ 9]; - rk[11] = rk[ 3] ^ rk[10]; - if (++i == 7) { - break; - } - temp = rk[11]; - rk[12] = rk[ 4] ^ setup_mix(RORc(temp, 8)); - rk[13] = rk[ 5] ^ rk[12]; - rk[14] = rk[ 6] ^ rk[13]; - rk[15] = rk[ 7] ^ rk[14]; - rk += 8; - } - } else { - /* this can't happen */ - /* coverity[dead_error_line] */ - return CRYPT_ERROR; - } - -#ifndef ENCRYPT_ONLY - /* setup the inverse key now */ - rk = skey->rijndael.dK; - rrk = skey->rijndael.eK + (28 + keylen) - 4; - - /* apply the inverse MixColumn transform to all round keys but the first and the last: */ - /* copy first */ - *rk++ = *rrk++; - *rk++ = *rrk++; - *rk++ = *rrk++; - *rk = *rrk; - rk -= 3; rrk -= 3; - - for (i = 1; i < skey->rijndael.Nr; i++) { - rrk -= 4; - rk += 4; - #ifdef LTC_SMALL_CODE - temp = rrk[0]; - rk[0] = setup_mix2(temp); - temp = rrk[1]; - rk[1] = setup_mix2(temp); - temp = rrk[2]; - rk[2] = setup_mix2(temp); - temp = rrk[3]; - rk[3] = setup_mix2(temp); - #else - temp = rrk[0]; - rk[0] = - Tks0[byte(temp, 3)] ^ - Tks1[byte(temp, 2)] ^ - Tks2[byte(temp, 1)] ^ - Tks3[byte(temp, 0)]; - temp = rrk[1]; - rk[1] = - Tks0[byte(temp, 3)] ^ - Tks1[byte(temp, 2)] ^ - Tks2[byte(temp, 1)] ^ - Tks3[byte(temp, 0)]; - temp = rrk[2]; - rk[2] = - Tks0[byte(temp, 3)] ^ - Tks1[byte(temp, 2)] ^ - Tks2[byte(temp, 1)] ^ - Tks3[byte(temp, 0)]; - temp = rrk[3]; - rk[3] = - Tks0[byte(temp, 3)] ^ - Tks1[byte(temp, 2)] ^ - Tks2[byte(temp, 1)] ^ - Tks3[byte(temp, 0)]; - #endif - - } - - /* copy last */ - rrk -= 4; - rk += 4; - *rk++ = *rrk++; - *rk++ = *rrk++; - *rk++ = *rrk++; - *rk = *rrk; -#endif /* ENCRYPT_ONLY */ - - return CRYPT_OK; -} - -/** - Encrypts a block of text with AES - @param pt The input plaintext (16 bytes) - @param ct The output ciphertext (16 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -#ifdef LTC_CLEAN_STACK -static int _rijndael_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#else -int ECB_ENC(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#endif -{ - ulong32 s0, s1, s2, s3, t0, t1, t2, t3, *rk; - int Nr, r; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - - Nr = skey->rijndael.Nr; - rk = skey->rijndael.eK; - - /* - * map byte array block to cipher state - * and add initial round key: - */ - LOAD32H(s0, pt ); s0 ^= rk[0]; - LOAD32H(s1, pt + 4); s1 ^= rk[1]; - LOAD32H(s2, pt + 8); s2 ^= rk[2]; - LOAD32H(s3, pt + 12); s3 ^= rk[3]; - -#ifdef LTC_SMALL_CODE - - for (r = 0; ; r++) { - rk += 4; - t0 = - Te0(byte(s0, 3)) ^ - Te1(byte(s1, 2)) ^ - Te2(byte(s2, 1)) ^ - Te3(byte(s3, 0)) ^ - rk[0]; - t1 = - Te0(byte(s1, 3)) ^ - Te1(byte(s2, 2)) ^ - Te2(byte(s3, 1)) ^ - Te3(byte(s0, 0)) ^ - rk[1]; - t2 = - Te0(byte(s2, 3)) ^ - Te1(byte(s3, 2)) ^ - Te2(byte(s0, 1)) ^ - Te3(byte(s1, 0)) ^ - rk[2]; - t3 = - Te0(byte(s3, 3)) ^ - Te1(byte(s0, 2)) ^ - Te2(byte(s1, 1)) ^ - Te3(byte(s2, 0)) ^ - rk[3]; - if (r == Nr-2) { - break; - } - s0 = t0; s1 = t1; s2 = t2; s3 = t3; - } - rk += 4; - -#else - - /* - * Nr - 1 full rounds: - */ - r = Nr >> 1; - for (;;) { - t0 = - Te0(byte(s0, 3)) ^ - Te1(byte(s1, 2)) ^ - Te2(byte(s2, 1)) ^ - Te3(byte(s3, 0)) ^ - rk[4]; - t1 = - Te0(byte(s1, 3)) ^ - Te1(byte(s2, 2)) ^ - Te2(byte(s3, 1)) ^ - Te3(byte(s0, 0)) ^ - rk[5]; - t2 = - Te0(byte(s2, 3)) ^ - Te1(byte(s3, 2)) ^ - Te2(byte(s0, 1)) ^ - Te3(byte(s1, 0)) ^ - rk[6]; - t3 = - Te0(byte(s3, 3)) ^ - Te1(byte(s0, 2)) ^ - Te2(byte(s1, 1)) ^ - Te3(byte(s2, 0)) ^ - rk[7]; - - rk += 8; - if (--r == 0) { - break; - } - - s0 = - Te0(byte(t0, 3)) ^ - Te1(byte(t1, 2)) ^ - Te2(byte(t2, 1)) ^ - Te3(byte(t3, 0)) ^ - rk[0]; - s1 = - Te0(byte(t1, 3)) ^ - Te1(byte(t2, 2)) ^ - Te2(byte(t3, 1)) ^ - Te3(byte(t0, 0)) ^ - rk[1]; - s2 = - Te0(byte(t2, 3)) ^ - Te1(byte(t3, 2)) ^ - Te2(byte(t0, 1)) ^ - Te3(byte(t1, 0)) ^ - rk[2]; - s3 = - Te0(byte(t3, 3)) ^ - Te1(byte(t0, 2)) ^ - Te2(byte(t1, 1)) ^ - Te3(byte(t2, 0)) ^ - rk[3]; - } - -#endif - - /* - * apply last round and - * map cipher state to byte array block: - */ - s0 = - (Te4_3[byte(t0, 3)]) ^ - (Te4_2[byte(t1, 2)]) ^ - (Te4_1[byte(t2, 1)]) ^ - (Te4_0[byte(t3, 0)]) ^ - rk[0]; - STORE32H(s0, ct); - s1 = - (Te4_3[byte(t1, 3)]) ^ - (Te4_2[byte(t2, 2)]) ^ - (Te4_1[byte(t3, 1)]) ^ - (Te4_0[byte(t0, 0)]) ^ - rk[1]; - STORE32H(s1, ct+4); - s2 = - (Te4_3[byte(t2, 3)]) ^ - (Te4_2[byte(t3, 2)]) ^ - (Te4_1[byte(t0, 1)]) ^ - (Te4_0[byte(t1, 0)]) ^ - rk[2]; - STORE32H(s2, ct+8); - s3 = - (Te4_3[byte(t3, 3)]) ^ - (Te4_2[byte(t0, 2)]) ^ - (Te4_1[byte(t1, 1)]) ^ - (Te4_0[byte(t2, 0)]) ^ - rk[3]; - STORE32H(s3, ct+12); - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int ECB_ENC(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - int err = _rijndael_ecb_encrypt(pt, ct, skey); - burn_stack(sizeof(unsigned long)*8 + sizeof(unsigned long*) + sizeof(int)*2); - return err; -} -#endif - -#ifndef ENCRYPT_ONLY - -/** - Decrypts a block of text with AES - @param ct The input ciphertext (16 bytes) - @param pt The output plaintext (16 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -#ifdef LTC_CLEAN_STACK -static int _rijndael_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#else -int ECB_DEC(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#endif -{ - ulong32 s0, s1, s2, s3, t0, t1, t2, t3, *rk; - int Nr, r; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - - Nr = skey->rijndael.Nr; - rk = skey->rijndael.dK; - - /* - * map byte array block to cipher state - * and add initial round key: - */ - LOAD32H(s0, ct ); s0 ^= rk[0]; - LOAD32H(s1, ct + 4); s1 ^= rk[1]; - LOAD32H(s2, ct + 8); s2 ^= rk[2]; - LOAD32H(s3, ct + 12); s3 ^= rk[3]; - -#ifdef LTC_SMALL_CODE - for (r = 0; ; r++) { - rk += 4; - t0 = - Td0(byte(s0, 3)) ^ - Td1(byte(s3, 2)) ^ - Td2(byte(s2, 1)) ^ - Td3(byte(s1, 0)) ^ - rk[0]; - t1 = - Td0(byte(s1, 3)) ^ - Td1(byte(s0, 2)) ^ - Td2(byte(s3, 1)) ^ - Td3(byte(s2, 0)) ^ - rk[1]; - t2 = - Td0(byte(s2, 3)) ^ - Td1(byte(s1, 2)) ^ - Td2(byte(s0, 1)) ^ - Td3(byte(s3, 0)) ^ - rk[2]; - t3 = - Td0(byte(s3, 3)) ^ - Td1(byte(s2, 2)) ^ - Td2(byte(s1, 1)) ^ - Td3(byte(s0, 0)) ^ - rk[3]; - if (r == Nr-2) { - break; - } - s0 = t0; s1 = t1; s2 = t2; s3 = t3; - } - rk += 4; - -#else - - /* - * Nr - 1 full rounds: - */ - r = Nr >> 1; - for (;;) { - - t0 = - Td0(byte(s0, 3)) ^ - Td1(byte(s3, 2)) ^ - Td2(byte(s2, 1)) ^ - Td3(byte(s1, 0)) ^ - rk[4]; - t1 = - Td0(byte(s1, 3)) ^ - Td1(byte(s0, 2)) ^ - Td2(byte(s3, 1)) ^ - Td3(byte(s2, 0)) ^ - rk[5]; - t2 = - Td0(byte(s2, 3)) ^ - Td1(byte(s1, 2)) ^ - Td2(byte(s0, 1)) ^ - Td3(byte(s3, 0)) ^ - rk[6]; - t3 = - Td0(byte(s3, 3)) ^ - Td1(byte(s2, 2)) ^ - Td2(byte(s1, 1)) ^ - Td3(byte(s0, 0)) ^ - rk[7]; - - rk += 8; - if (--r == 0) { - break; - } - - - s0 = - Td0(byte(t0, 3)) ^ - Td1(byte(t3, 2)) ^ - Td2(byte(t2, 1)) ^ - Td3(byte(t1, 0)) ^ - rk[0]; - s1 = - Td0(byte(t1, 3)) ^ - Td1(byte(t0, 2)) ^ - Td2(byte(t3, 1)) ^ - Td3(byte(t2, 0)) ^ - rk[1]; - s2 = - Td0(byte(t2, 3)) ^ - Td1(byte(t1, 2)) ^ - Td2(byte(t0, 1)) ^ - Td3(byte(t3, 0)) ^ - rk[2]; - s3 = - Td0(byte(t3, 3)) ^ - Td1(byte(t2, 2)) ^ - Td2(byte(t1, 1)) ^ - Td3(byte(t0, 0)) ^ - rk[3]; - } -#endif - - /* - * apply last round and - * map cipher state to byte array block: - */ - s0 = - (Td4[byte(t0, 3)] & 0xff000000) ^ - (Td4[byte(t3, 2)] & 0x00ff0000) ^ - (Td4[byte(t2, 1)] & 0x0000ff00) ^ - (Td4[byte(t1, 0)] & 0x000000ff) ^ - rk[0]; - STORE32H(s0, pt); - s1 = - (Td4[byte(t1, 3)] & 0xff000000) ^ - (Td4[byte(t0, 2)] & 0x00ff0000) ^ - (Td4[byte(t3, 1)] & 0x0000ff00) ^ - (Td4[byte(t2, 0)] & 0x000000ff) ^ - rk[1]; - STORE32H(s1, pt+4); - s2 = - (Td4[byte(t2, 3)] & 0xff000000) ^ - (Td4[byte(t1, 2)] & 0x00ff0000) ^ - (Td4[byte(t0, 1)] & 0x0000ff00) ^ - (Td4[byte(t3, 0)] & 0x000000ff) ^ - rk[2]; - STORE32H(s2, pt+8); - s3 = - (Td4[byte(t3, 3)] & 0xff000000) ^ - (Td4[byte(t2, 2)] & 0x00ff0000) ^ - (Td4[byte(t1, 1)] & 0x0000ff00) ^ - (Td4[byte(t0, 0)] & 0x000000ff) ^ - rk[3]; - STORE32H(s3, pt+12); - - return CRYPT_OK; -} - - -#ifdef LTC_CLEAN_STACK -int ECB_DEC(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - int err = _rijndael_ecb_decrypt(ct, pt, skey); - burn_stack(sizeof(unsigned long)*8 + sizeof(unsigned long*) + sizeof(int)*2); - return err; -} -#endif - -/** - Performs a self-test of the AES block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int ECB_TEST(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - int err; - static const struct { - int keylen; - unsigned char key[32], pt[16], ct[16]; - } tests[] = { - { 16, - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, - 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, - { 0x69, 0xc4, 0xe0, 0xd8, 0x6a, 0x7b, 0x04, 0x30, - 0xd8, 0xcd, 0xb7, 0x80, 0x70, 0xb4, 0xc5, 0x5a } - }, { - 24, - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 }, - { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, - 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, - { 0xdd, 0xa9, 0x7c, 0xa4, 0x86, 0x4c, 0xdf, 0xe0, - 0x6e, 0xaf, 0x70, 0xa0, 0xec, 0x0d, 0x71, 0x91 } - }, { - 32, - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, - { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, - 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, - { 0x8e, 0xa2, 0xb7, 0xca, 0x51, 0x67, 0x45, 0xbf, - 0xea, 0xfc, 0x49, 0x90, 0x4b, 0x49, 0x60, 0x89 } - } - }; - - symmetric_key key; - unsigned char tmp[2][16]; - int i, y; - - for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { - zeromem(&key, sizeof(key)); - if ((err = rijndael_setup(tests[i].key, tests[i].keylen, 0, &key)) != CRYPT_OK) { - return err; - } - - rijndael_ecb_encrypt(tests[i].pt, tmp[0], &key); - rijndael_ecb_decrypt(tmp[0], tmp[1], &key); - if (compare_testvector(tmp[0], 16, tests[i].ct, 16, "AES Encrypt", i) || - compare_testvector(tmp[1], 16, tests[i].pt, 16, "AES Decrypt", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ - for (y = 0; y < 16; y++) tmp[0][y] = 0; - for (y = 0; y < 1000; y++) rijndael_ecb_encrypt(tmp[0], tmp[0], &key); - for (y = 0; y < 1000; y++) rijndael_ecb_decrypt(tmp[0], tmp[0], &key); - for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; - } - return CRYPT_OK; - #endif -} - -#endif /* ENCRYPT_ONLY */ - - -/** Terminate the context - @param skey The scheduled key -*/ -void ECB_DONE(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int ECB_KS(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - - if (*keysize < 16) - return CRYPT_INVALID_KEYSIZE; - if (*keysize < 24) { - *keysize = 16; - return CRYPT_OK; - } else if (*keysize < 32) { - *keysize = 24; - return CRYPT_OK; - } else { - *keysize = 32; - return CRYPT_OK; - } -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/aes/aes_tab.c b/src/libtomcrypt/src/ciphers/aes/aes_tab.c deleted file mode 100644 index dc556e1cd8..0000000000 --- a/src/libtomcrypt/src/ciphers/aes/aes_tab.c +++ /dev/null @@ -1,1032 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -/* The precomputed tables for AES */ -/* -Te0[x] = S [x].[02, 01, 01, 03]; -Te1[x] = S [x].[03, 02, 01, 01]; -Te2[x] = S [x].[01, 03, 02, 01]; -Te3[x] = S [x].[01, 01, 03, 02]; -Te4[x] = S [x].[01, 01, 01, 01]; - -Td0[x] = Si[x].[0e, 09, 0d, 0b]; -Td1[x] = Si[x].[0b, 0e, 09, 0d]; -Td2[x] = Si[x].[0d, 0b, 0e, 09]; -Td3[x] = Si[x].[09, 0d, 0b, 0e]; -Td4[x] = Si[x].[01, 01, 01, 01]; -*/ - -#ifdef __LTC_AES_TAB_C__ - -/** - @file aes_tab.c - AES tables -*/ -static const ulong32 TE0[256] = { - 0xc66363a5UL, 0xf87c7c84UL, 0xee777799UL, 0xf67b7b8dUL, - 0xfff2f20dUL, 0xd66b6bbdUL, 0xde6f6fb1UL, 0x91c5c554UL, - 0x60303050UL, 0x02010103UL, 0xce6767a9UL, 0x562b2b7dUL, - 0xe7fefe19UL, 0xb5d7d762UL, 0x4dababe6UL, 0xec76769aUL, - 0x8fcaca45UL, 0x1f82829dUL, 0x89c9c940UL, 0xfa7d7d87UL, - 0xeffafa15UL, 0xb25959ebUL, 0x8e4747c9UL, 0xfbf0f00bUL, - 0x41adadecUL, 0xb3d4d467UL, 0x5fa2a2fdUL, 0x45afafeaUL, - 0x239c9cbfUL, 0x53a4a4f7UL, 0xe4727296UL, 0x9bc0c05bUL, - 0x75b7b7c2UL, 0xe1fdfd1cUL, 0x3d9393aeUL, 0x4c26266aUL, - 0x6c36365aUL, 0x7e3f3f41UL, 0xf5f7f702UL, 0x83cccc4fUL, - 0x6834345cUL, 0x51a5a5f4UL, 0xd1e5e534UL, 0xf9f1f108UL, - 0xe2717193UL, 0xabd8d873UL, 0x62313153UL, 0x2a15153fUL, - 0x0804040cUL, 0x95c7c752UL, 0x46232365UL, 0x9dc3c35eUL, - 0x30181828UL, 0x379696a1UL, 0x0a05050fUL, 0x2f9a9ab5UL, - 0x0e070709UL, 0x24121236UL, 0x1b80809bUL, 0xdfe2e23dUL, - 0xcdebeb26UL, 0x4e272769UL, 0x7fb2b2cdUL, 0xea75759fUL, - 0x1209091bUL, 0x1d83839eUL, 0x582c2c74UL, 0x341a1a2eUL, - 0x361b1b2dUL, 0xdc6e6eb2UL, 0xb45a5aeeUL, 0x5ba0a0fbUL, - 0xa45252f6UL, 0x763b3b4dUL, 0xb7d6d661UL, 0x7db3b3ceUL, - 0x5229297bUL, 0xdde3e33eUL, 0x5e2f2f71UL, 0x13848497UL, - 0xa65353f5UL, 0xb9d1d168UL, 0x00000000UL, 0xc1eded2cUL, - 0x40202060UL, 0xe3fcfc1fUL, 0x79b1b1c8UL, 0xb65b5bedUL, - 0xd46a6abeUL, 0x8dcbcb46UL, 0x67bebed9UL, 0x7239394bUL, - 0x944a4adeUL, 0x984c4cd4UL, 0xb05858e8UL, 0x85cfcf4aUL, - 0xbbd0d06bUL, 0xc5efef2aUL, 0x4faaaae5UL, 0xedfbfb16UL, - 0x864343c5UL, 0x9a4d4dd7UL, 0x66333355UL, 0x11858594UL, - 0x8a4545cfUL, 0xe9f9f910UL, 0x04020206UL, 0xfe7f7f81UL, - 0xa05050f0UL, 0x783c3c44UL, 0x259f9fbaUL, 0x4ba8a8e3UL, - 0xa25151f3UL, 0x5da3a3feUL, 0x804040c0UL, 0x058f8f8aUL, - 0x3f9292adUL, 0x219d9dbcUL, 0x70383848UL, 0xf1f5f504UL, - 0x63bcbcdfUL, 0x77b6b6c1UL, 0xafdada75UL, 0x42212163UL, - 0x20101030UL, 0xe5ffff1aUL, 0xfdf3f30eUL, 0xbfd2d26dUL, - 0x81cdcd4cUL, 0x180c0c14UL, 0x26131335UL, 0xc3ecec2fUL, - 0xbe5f5fe1UL, 0x359797a2UL, 0x884444ccUL, 0x2e171739UL, - 0x93c4c457UL, 0x55a7a7f2UL, 0xfc7e7e82UL, 0x7a3d3d47UL, - 0xc86464acUL, 0xba5d5de7UL, 0x3219192bUL, 0xe6737395UL, - 0xc06060a0UL, 0x19818198UL, 0x9e4f4fd1UL, 0xa3dcdc7fUL, - 0x44222266UL, 0x542a2a7eUL, 0x3b9090abUL, 0x0b888883UL, - 0x8c4646caUL, 0xc7eeee29UL, 0x6bb8b8d3UL, 0x2814143cUL, - 0xa7dede79UL, 0xbc5e5ee2UL, 0x160b0b1dUL, 0xaddbdb76UL, - 0xdbe0e03bUL, 0x64323256UL, 0x743a3a4eUL, 0x140a0a1eUL, - 0x924949dbUL, 0x0c06060aUL, 0x4824246cUL, 0xb85c5ce4UL, - 0x9fc2c25dUL, 0xbdd3d36eUL, 0x43acacefUL, 0xc46262a6UL, - 0x399191a8UL, 0x319595a4UL, 0xd3e4e437UL, 0xf279798bUL, - 0xd5e7e732UL, 0x8bc8c843UL, 0x6e373759UL, 0xda6d6db7UL, - 0x018d8d8cUL, 0xb1d5d564UL, 0x9c4e4ed2UL, 0x49a9a9e0UL, - 0xd86c6cb4UL, 0xac5656faUL, 0xf3f4f407UL, 0xcfeaea25UL, - 0xca6565afUL, 0xf47a7a8eUL, 0x47aeaee9UL, 0x10080818UL, - 0x6fbabad5UL, 0xf0787888UL, 0x4a25256fUL, 0x5c2e2e72UL, - 0x381c1c24UL, 0x57a6a6f1UL, 0x73b4b4c7UL, 0x97c6c651UL, - 0xcbe8e823UL, 0xa1dddd7cUL, 0xe874749cUL, 0x3e1f1f21UL, - 0x964b4bddUL, 0x61bdbddcUL, 0x0d8b8b86UL, 0x0f8a8a85UL, - 0xe0707090UL, 0x7c3e3e42UL, 0x71b5b5c4UL, 0xcc6666aaUL, - 0x904848d8UL, 0x06030305UL, 0xf7f6f601UL, 0x1c0e0e12UL, - 0xc26161a3UL, 0x6a35355fUL, 0xae5757f9UL, 0x69b9b9d0UL, - 0x17868691UL, 0x99c1c158UL, 0x3a1d1d27UL, 0x279e9eb9UL, - 0xd9e1e138UL, 0xebf8f813UL, 0x2b9898b3UL, 0x22111133UL, - 0xd26969bbUL, 0xa9d9d970UL, 0x078e8e89UL, 0x339494a7UL, - 0x2d9b9bb6UL, 0x3c1e1e22UL, 0x15878792UL, 0xc9e9e920UL, - 0x87cece49UL, 0xaa5555ffUL, 0x50282878UL, 0xa5dfdf7aUL, - 0x038c8c8fUL, 0x59a1a1f8UL, 0x09898980UL, 0x1a0d0d17UL, - 0x65bfbfdaUL, 0xd7e6e631UL, 0x844242c6UL, 0xd06868b8UL, - 0x824141c3UL, 0x299999b0UL, 0x5a2d2d77UL, 0x1e0f0f11UL, - 0x7bb0b0cbUL, 0xa85454fcUL, 0x6dbbbbd6UL, 0x2c16163aUL, -}; - -#if !defined(PELI_TAB) && defined(LTC_SMALL_CODE) -static const ulong32 Te4[256] = { - 0x63636363UL, 0x7c7c7c7cUL, 0x77777777UL, 0x7b7b7b7bUL, - 0xf2f2f2f2UL, 0x6b6b6b6bUL, 0x6f6f6f6fUL, 0xc5c5c5c5UL, - 0x30303030UL, 0x01010101UL, 0x67676767UL, 0x2b2b2b2bUL, - 0xfefefefeUL, 0xd7d7d7d7UL, 0xababababUL, 0x76767676UL, - 0xcacacacaUL, 0x82828282UL, 0xc9c9c9c9UL, 0x7d7d7d7dUL, - 0xfafafafaUL, 0x59595959UL, 0x47474747UL, 0xf0f0f0f0UL, - 0xadadadadUL, 0xd4d4d4d4UL, 0xa2a2a2a2UL, 0xafafafafUL, - 0x9c9c9c9cUL, 0xa4a4a4a4UL, 0x72727272UL, 0xc0c0c0c0UL, - 0xb7b7b7b7UL, 0xfdfdfdfdUL, 0x93939393UL, 0x26262626UL, - 0x36363636UL, 0x3f3f3f3fUL, 0xf7f7f7f7UL, 0xccccccccUL, - 0x34343434UL, 0xa5a5a5a5UL, 0xe5e5e5e5UL, 0xf1f1f1f1UL, - 0x71717171UL, 0xd8d8d8d8UL, 0x31313131UL, 0x15151515UL, - 0x04040404UL, 0xc7c7c7c7UL, 0x23232323UL, 0xc3c3c3c3UL, - 0x18181818UL, 0x96969696UL, 0x05050505UL, 0x9a9a9a9aUL, - 0x07070707UL, 0x12121212UL, 0x80808080UL, 0xe2e2e2e2UL, - 0xebebebebUL, 0x27272727UL, 0xb2b2b2b2UL, 0x75757575UL, - 0x09090909UL, 0x83838383UL, 0x2c2c2c2cUL, 0x1a1a1a1aUL, - 0x1b1b1b1bUL, 0x6e6e6e6eUL, 0x5a5a5a5aUL, 0xa0a0a0a0UL, - 0x52525252UL, 0x3b3b3b3bUL, 0xd6d6d6d6UL, 0xb3b3b3b3UL, - 0x29292929UL, 0xe3e3e3e3UL, 0x2f2f2f2fUL, 0x84848484UL, - 0x53535353UL, 0xd1d1d1d1UL, 0x00000000UL, 0xededededUL, - 0x20202020UL, 0xfcfcfcfcUL, 0xb1b1b1b1UL, 0x5b5b5b5bUL, - 0x6a6a6a6aUL, 0xcbcbcbcbUL, 0xbebebebeUL, 0x39393939UL, - 0x4a4a4a4aUL, 0x4c4c4c4cUL, 0x58585858UL, 0xcfcfcfcfUL, - 0xd0d0d0d0UL, 0xefefefefUL, 0xaaaaaaaaUL, 0xfbfbfbfbUL, - 0x43434343UL, 0x4d4d4d4dUL, 0x33333333UL, 0x85858585UL, - 0x45454545UL, 0xf9f9f9f9UL, 0x02020202UL, 0x7f7f7f7fUL, - 0x50505050UL, 0x3c3c3c3cUL, 0x9f9f9f9fUL, 0xa8a8a8a8UL, - 0x51515151UL, 0xa3a3a3a3UL, 0x40404040UL, 0x8f8f8f8fUL, - 0x92929292UL, 0x9d9d9d9dUL, 0x38383838UL, 0xf5f5f5f5UL, - 0xbcbcbcbcUL, 0xb6b6b6b6UL, 0xdadadadaUL, 0x21212121UL, - 0x10101010UL, 0xffffffffUL, 0xf3f3f3f3UL, 0xd2d2d2d2UL, - 0xcdcdcdcdUL, 0x0c0c0c0cUL, 0x13131313UL, 0xececececUL, - 0x5f5f5f5fUL, 0x97979797UL, 0x44444444UL, 0x17171717UL, - 0xc4c4c4c4UL, 0xa7a7a7a7UL, 0x7e7e7e7eUL, 0x3d3d3d3dUL, - 0x64646464UL, 0x5d5d5d5dUL, 0x19191919UL, 0x73737373UL, - 0x60606060UL, 0x81818181UL, 0x4f4f4f4fUL, 0xdcdcdcdcUL, - 0x22222222UL, 0x2a2a2a2aUL, 0x90909090UL, 0x88888888UL, - 0x46464646UL, 0xeeeeeeeeUL, 0xb8b8b8b8UL, 0x14141414UL, - 0xdedededeUL, 0x5e5e5e5eUL, 0x0b0b0b0bUL, 0xdbdbdbdbUL, - 0xe0e0e0e0UL, 0x32323232UL, 0x3a3a3a3aUL, 0x0a0a0a0aUL, - 0x49494949UL, 0x06060606UL, 0x24242424UL, 0x5c5c5c5cUL, - 0xc2c2c2c2UL, 0xd3d3d3d3UL, 0xacacacacUL, 0x62626262UL, - 0x91919191UL, 0x95959595UL, 0xe4e4e4e4UL, 0x79797979UL, - 0xe7e7e7e7UL, 0xc8c8c8c8UL, 0x37373737UL, 0x6d6d6d6dUL, - 0x8d8d8d8dUL, 0xd5d5d5d5UL, 0x4e4e4e4eUL, 0xa9a9a9a9UL, - 0x6c6c6c6cUL, 0x56565656UL, 0xf4f4f4f4UL, 0xeaeaeaeaUL, - 0x65656565UL, 0x7a7a7a7aUL, 0xaeaeaeaeUL, 0x08080808UL, - 0xbabababaUL, 0x78787878UL, 0x25252525UL, 0x2e2e2e2eUL, - 0x1c1c1c1cUL, 0xa6a6a6a6UL, 0xb4b4b4b4UL, 0xc6c6c6c6UL, - 0xe8e8e8e8UL, 0xddddddddUL, 0x74747474UL, 0x1f1f1f1fUL, - 0x4b4b4b4bUL, 0xbdbdbdbdUL, 0x8b8b8b8bUL, 0x8a8a8a8aUL, - 0x70707070UL, 0x3e3e3e3eUL, 0xb5b5b5b5UL, 0x66666666UL, - 0x48484848UL, 0x03030303UL, 0xf6f6f6f6UL, 0x0e0e0e0eUL, - 0x61616161UL, 0x35353535UL, 0x57575757UL, 0xb9b9b9b9UL, - 0x86868686UL, 0xc1c1c1c1UL, 0x1d1d1d1dUL, 0x9e9e9e9eUL, - 0xe1e1e1e1UL, 0xf8f8f8f8UL, 0x98989898UL, 0x11111111UL, - 0x69696969UL, 0xd9d9d9d9UL, 0x8e8e8e8eUL, 0x94949494UL, - 0x9b9b9b9bUL, 0x1e1e1e1eUL, 0x87878787UL, 0xe9e9e9e9UL, - 0xcecececeUL, 0x55555555UL, 0x28282828UL, 0xdfdfdfdfUL, - 0x8c8c8c8cUL, 0xa1a1a1a1UL, 0x89898989UL, 0x0d0d0d0dUL, - 0xbfbfbfbfUL, 0xe6e6e6e6UL, 0x42424242UL, 0x68686868UL, - 0x41414141UL, 0x99999999UL, 0x2d2d2d2dUL, 0x0f0f0f0fUL, - 0xb0b0b0b0UL, 0x54545454UL, 0xbbbbbbbbUL, 0x16161616UL, -}; -#endif - -#ifndef ENCRYPT_ONLY - -static const ulong32 TD0[256] = { - 0x51f4a750UL, 0x7e416553UL, 0x1a17a4c3UL, 0x3a275e96UL, - 0x3bab6bcbUL, 0x1f9d45f1UL, 0xacfa58abUL, 0x4be30393UL, - 0x2030fa55UL, 0xad766df6UL, 0x88cc7691UL, 0xf5024c25UL, - 0x4fe5d7fcUL, 0xc52acbd7UL, 0x26354480UL, 0xb562a38fUL, - 0xdeb15a49UL, 0x25ba1b67UL, 0x45ea0e98UL, 0x5dfec0e1UL, - 0xc32f7502UL, 0x814cf012UL, 0x8d4697a3UL, 0x6bd3f9c6UL, - 0x038f5fe7UL, 0x15929c95UL, 0xbf6d7aebUL, 0x955259daUL, - 0xd4be832dUL, 0x587421d3UL, 0x49e06929UL, 0x8ec9c844UL, - 0x75c2896aUL, 0xf48e7978UL, 0x99583e6bUL, 0x27b971ddUL, - 0xbee14fb6UL, 0xf088ad17UL, 0xc920ac66UL, 0x7dce3ab4UL, - 0x63df4a18UL, 0xe51a3182UL, 0x97513360UL, 0x62537f45UL, - 0xb16477e0UL, 0xbb6bae84UL, 0xfe81a01cUL, 0xf9082b94UL, - 0x70486858UL, 0x8f45fd19UL, 0x94de6c87UL, 0x527bf8b7UL, - 0xab73d323UL, 0x724b02e2UL, 0xe31f8f57UL, 0x6655ab2aUL, - 0xb2eb2807UL, 0x2fb5c203UL, 0x86c57b9aUL, 0xd33708a5UL, - 0x302887f2UL, 0x23bfa5b2UL, 0x02036abaUL, 0xed16825cUL, - 0x8acf1c2bUL, 0xa779b492UL, 0xf307f2f0UL, 0x4e69e2a1UL, - 0x65daf4cdUL, 0x0605bed5UL, 0xd134621fUL, 0xc4a6fe8aUL, - 0x342e539dUL, 0xa2f355a0UL, 0x058ae132UL, 0xa4f6eb75UL, - 0x0b83ec39UL, 0x4060efaaUL, 0x5e719f06UL, 0xbd6e1051UL, - 0x3e218af9UL, 0x96dd063dUL, 0xdd3e05aeUL, 0x4de6bd46UL, - 0x91548db5UL, 0x71c45d05UL, 0x0406d46fUL, 0x605015ffUL, - 0x1998fb24UL, 0xd6bde997UL, 0x894043ccUL, 0x67d99e77UL, - 0xb0e842bdUL, 0x07898b88UL, 0xe7195b38UL, 0x79c8eedbUL, - 0xa17c0a47UL, 0x7c420fe9UL, 0xf8841ec9UL, 0x00000000UL, - 0x09808683UL, 0x322bed48UL, 0x1e1170acUL, 0x6c5a724eUL, - 0xfd0efffbUL, 0x0f853856UL, 0x3daed51eUL, 0x362d3927UL, - 0x0a0fd964UL, 0x685ca621UL, 0x9b5b54d1UL, 0x24362e3aUL, - 0x0c0a67b1UL, 0x9357e70fUL, 0xb4ee96d2UL, 0x1b9b919eUL, - 0x80c0c54fUL, 0x61dc20a2UL, 0x5a774b69UL, 0x1c121a16UL, - 0xe293ba0aUL, 0xc0a02ae5UL, 0x3c22e043UL, 0x121b171dUL, - 0x0e090d0bUL, 0xf28bc7adUL, 0x2db6a8b9UL, 0x141ea9c8UL, - 0x57f11985UL, 0xaf75074cUL, 0xee99ddbbUL, 0xa37f60fdUL, - 0xf701269fUL, 0x5c72f5bcUL, 0x44663bc5UL, 0x5bfb7e34UL, - 0x8b432976UL, 0xcb23c6dcUL, 0xb6edfc68UL, 0xb8e4f163UL, - 0xd731dccaUL, 0x42638510UL, 0x13972240UL, 0x84c61120UL, - 0x854a247dUL, 0xd2bb3df8UL, 0xaef93211UL, 0xc729a16dUL, - 0x1d9e2f4bUL, 0xdcb230f3UL, 0x0d8652ecUL, 0x77c1e3d0UL, - 0x2bb3166cUL, 0xa970b999UL, 0x119448faUL, 0x47e96422UL, - 0xa8fc8cc4UL, 0xa0f03f1aUL, 0x567d2cd8UL, 0x223390efUL, - 0x87494ec7UL, 0xd938d1c1UL, 0x8ccaa2feUL, 0x98d40b36UL, - 0xa6f581cfUL, 0xa57ade28UL, 0xdab78e26UL, 0x3fadbfa4UL, - 0x2c3a9de4UL, 0x5078920dUL, 0x6a5fcc9bUL, 0x547e4662UL, - 0xf68d13c2UL, 0x90d8b8e8UL, 0x2e39f75eUL, 0x82c3aff5UL, - 0x9f5d80beUL, 0x69d0937cUL, 0x6fd52da9UL, 0xcf2512b3UL, - 0xc8ac993bUL, 0x10187da7UL, 0xe89c636eUL, 0xdb3bbb7bUL, - 0xcd267809UL, 0x6e5918f4UL, 0xec9ab701UL, 0x834f9aa8UL, - 0xe6956e65UL, 0xaaffe67eUL, 0x21bccf08UL, 0xef15e8e6UL, - 0xbae79bd9UL, 0x4a6f36ceUL, 0xea9f09d4UL, 0x29b07cd6UL, - 0x31a4b2afUL, 0x2a3f2331UL, 0xc6a59430UL, 0x35a266c0UL, - 0x744ebc37UL, 0xfc82caa6UL, 0xe090d0b0UL, 0x33a7d815UL, - 0xf104984aUL, 0x41ecdaf7UL, 0x7fcd500eUL, 0x1791f62fUL, - 0x764dd68dUL, 0x43efb04dUL, 0xccaa4d54UL, 0xe49604dfUL, - 0x9ed1b5e3UL, 0x4c6a881bUL, 0xc12c1fb8UL, 0x4665517fUL, - 0x9d5eea04UL, 0x018c355dUL, 0xfa877473UL, 0xfb0b412eUL, - 0xb3671d5aUL, 0x92dbd252UL, 0xe9105633UL, 0x6dd64713UL, - 0x9ad7618cUL, 0x37a10c7aUL, 0x59f8148eUL, 0xeb133c89UL, - 0xcea927eeUL, 0xb761c935UL, 0xe11ce5edUL, 0x7a47b13cUL, - 0x9cd2df59UL, 0x55f2733fUL, 0x1814ce79UL, 0x73c737bfUL, - 0x53f7cdeaUL, 0x5ffdaa5bUL, 0xdf3d6f14UL, 0x7844db86UL, - 0xcaaff381UL, 0xb968c43eUL, 0x3824342cUL, 0xc2a3405fUL, - 0x161dc372UL, 0xbce2250cUL, 0x283c498bUL, 0xff0d9541UL, - 0x39a80171UL, 0x080cb3deUL, 0xd8b4e49cUL, 0x6456c190UL, - 0x7bcb8461UL, 0xd532b670UL, 0x486c5c74UL, 0xd0b85742UL, -}; - -static const ulong32 Td4[256] = { - 0x52525252UL, 0x09090909UL, 0x6a6a6a6aUL, 0xd5d5d5d5UL, - 0x30303030UL, 0x36363636UL, 0xa5a5a5a5UL, 0x38383838UL, - 0xbfbfbfbfUL, 0x40404040UL, 0xa3a3a3a3UL, 0x9e9e9e9eUL, - 0x81818181UL, 0xf3f3f3f3UL, 0xd7d7d7d7UL, 0xfbfbfbfbUL, - 0x7c7c7c7cUL, 0xe3e3e3e3UL, 0x39393939UL, 0x82828282UL, - 0x9b9b9b9bUL, 0x2f2f2f2fUL, 0xffffffffUL, 0x87878787UL, - 0x34343434UL, 0x8e8e8e8eUL, 0x43434343UL, 0x44444444UL, - 0xc4c4c4c4UL, 0xdedededeUL, 0xe9e9e9e9UL, 0xcbcbcbcbUL, - 0x54545454UL, 0x7b7b7b7bUL, 0x94949494UL, 0x32323232UL, - 0xa6a6a6a6UL, 0xc2c2c2c2UL, 0x23232323UL, 0x3d3d3d3dUL, - 0xeeeeeeeeUL, 0x4c4c4c4cUL, 0x95959595UL, 0x0b0b0b0bUL, - 0x42424242UL, 0xfafafafaUL, 0xc3c3c3c3UL, 0x4e4e4e4eUL, - 0x08080808UL, 0x2e2e2e2eUL, 0xa1a1a1a1UL, 0x66666666UL, - 0x28282828UL, 0xd9d9d9d9UL, 0x24242424UL, 0xb2b2b2b2UL, - 0x76767676UL, 0x5b5b5b5bUL, 0xa2a2a2a2UL, 0x49494949UL, - 0x6d6d6d6dUL, 0x8b8b8b8bUL, 0xd1d1d1d1UL, 0x25252525UL, - 0x72727272UL, 0xf8f8f8f8UL, 0xf6f6f6f6UL, 0x64646464UL, - 0x86868686UL, 0x68686868UL, 0x98989898UL, 0x16161616UL, - 0xd4d4d4d4UL, 0xa4a4a4a4UL, 0x5c5c5c5cUL, 0xccccccccUL, - 0x5d5d5d5dUL, 0x65656565UL, 0xb6b6b6b6UL, 0x92929292UL, - 0x6c6c6c6cUL, 0x70707070UL, 0x48484848UL, 0x50505050UL, - 0xfdfdfdfdUL, 0xededededUL, 0xb9b9b9b9UL, 0xdadadadaUL, - 0x5e5e5e5eUL, 0x15151515UL, 0x46464646UL, 0x57575757UL, - 0xa7a7a7a7UL, 0x8d8d8d8dUL, 0x9d9d9d9dUL, 0x84848484UL, - 0x90909090UL, 0xd8d8d8d8UL, 0xababababUL, 0x00000000UL, - 0x8c8c8c8cUL, 0xbcbcbcbcUL, 0xd3d3d3d3UL, 0x0a0a0a0aUL, - 0xf7f7f7f7UL, 0xe4e4e4e4UL, 0x58585858UL, 0x05050505UL, - 0xb8b8b8b8UL, 0xb3b3b3b3UL, 0x45454545UL, 0x06060606UL, - 0xd0d0d0d0UL, 0x2c2c2c2cUL, 0x1e1e1e1eUL, 0x8f8f8f8fUL, - 0xcacacacaUL, 0x3f3f3f3fUL, 0x0f0f0f0fUL, 0x02020202UL, - 0xc1c1c1c1UL, 0xafafafafUL, 0xbdbdbdbdUL, 0x03030303UL, - 0x01010101UL, 0x13131313UL, 0x8a8a8a8aUL, 0x6b6b6b6bUL, - 0x3a3a3a3aUL, 0x91919191UL, 0x11111111UL, 0x41414141UL, - 0x4f4f4f4fUL, 0x67676767UL, 0xdcdcdcdcUL, 0xeaeaeaeaUL, - 0x97979797UL, 0xf2f2f2f2UL, 0xcfcfcfcfUL, 0xcecececeUL, - 0xf0f0f0f0UL, 0xb4b4b4b4UL, 0xe6e6e6e6UL, 0x73737373UL, - 0x96969696UL, 0xacacacacUL, 0x74747474UL, 0x22222222UL, - 0xe7e7e7e7UL, 0xadadadadUL, 0x35353535UL, 0x85858585UL, - 0xe2e2e2e2UL, 0xf9f9f9f9UL, 0x37373737UL, 0xe8e8e8e8UL, - 0x1c1c1c1cUL, 0x75757575UL, 0xdfdfdfdfUL, 0x6e6e6e6eUL, - 0x47474747UL, 0xf1f1f1f1UL, 0x1a1a1a1aUL, 0x71717171UL, - 0x1d1d1d1dUL, 0x29292929UL, 0xc5c5c5c5UL, 0x89898989UL, - 0x6f6f6f6fUL, 0xb7b7b7b7UL, 0x62626262UL, 0x0e0e0e0eUL, - 0xaaaaaaaaUL, 0x18181818UL, 0xbebebebeUL, 0x1b1b1b1bUL, - 0xfcfcfcfcUL, 0x56565656UL, 0x3e3e3e3eUL, 0x4b4b4b4bUL, - 0xc6c6c6c6UL, 0xd2d2d2d2UL, 0x79797979UL, 0x20202020UL, - 0x9a9a9a9aUL, 0xdbdbdbdbUL, 0xc0c0c0c0UL, 0xfefefefeUL, - 0x78787878UL, 0xcdcdcdcdUL, 0x5a5a5a5aUL, 0xf4f4f4f4UL, - 0x1f1f1f1fUL, 0xddddddddUL, 0xa8a8a8a8UL, 0x33333333UL, - 0x88888888UL, 0x07070707UL, 0xc7c7c7c7UL, 0x31313131UL, - 0xb1b1b1b1UL, 0x12121212UL, 0x10101010UL, 0x59595959UL, - 0x27272727UL, 0x80808080UL, 0xececececUL, 0x5f5f5f5fUL, - 0x60606060UL, 0x51515151UL, 0x7f7f7f7fUL, 0xa9a9a9a9UL, - 0x19191919UL, 0xb5b5b5b5UL, 0x4a4a4a4aUL, 0x0d0d0d0dUL, - 0x2d2d2d2dUL, 0xe5e5e5e5UL, 0x7a7a7a7aUL, 0x9f9f9f9fUL, - 0x93939393UL, 0xc9c9c9c9UL, 0x9c9c9c9cUL, 0xefefefefUL, - 0xa0a0a0a0UL, 0xe0e0e0e0UL, 0x3b3b3b3bUL, 0x4d4d4d4dUL, - 0xaeaeaeaeUL, 0x2a2a2a2aUL, 0xf5f5f5f5UL, 0xb0b0b0b0UL, - 0xc8c8c8c8UL, 0xebebebebUL, 0xbbbbbbbbUL, 0x3c3c3c3cUL, - 0x83838383UL, 0x53535353UL, 0x99999999UL, 0x61616161UL, - 0x17171717UL, 0x2b2b2b2bUL, 0x04040404UL, 0x7e7e7e7eUL, - 0xbabababaUL, 0x77777777UL, 0xd6d6d6d6UL, 0x26262626UL, - 0xe1e1e1e1UL, 0x69696969UL, 0x14141414UL, 0x63636363UL, - 0x55555555UL, 0x21212121UL, 0x0c0c0c0cUL, 0x7d7d7d7dUL, -}; - -#endif /* ENCRYPT_ONLY */ - -#ifdef LTC_SMALL_CODE - -#define Te0(x) TE0[x] -#define Te1(x) RORc(TE0[x], 8) -#define Te2(x) RORc(TE0[x], 16) -#define Te3(x) RORc(TE0[x], 24) - -#define Td0(x) TD0[x] -#define Td1(x) RORc(TD0[x], 8) -#define Td2(x) RORc(TD0[x], 16) -#define Td3(x) RORc(TD0[x], 24) - -#define Te4_0 0x000000FF & Te4 -#define Te4_1 0x0000FF00 & Te4 -#define Te4_2 0x00FF0000 & Te4 -#define Te4_3 0xFF000000 & Te4 - -#else - -#define Te0(x) TE0[x] -#define Te1(x) TE1[x] -#define Te2(x) TE2[x] -#define Te3(x) TE3[x] - -#define Td0(x) TD0[x] -#define Td1(x) TD1[x] -#define Td2(x) TD2[x] -#define Td3(x) TD3[x] - -static const ulong32 TE1[256] = { - 0xa5c66363UL, 0x84f87c7cUL, 0x99ee7777UL, 0x8df67b7bUL, - 0x0dfff2f2UL, 0xbdd66b6bUL, 0xb1de6f6fUL, 0x5491c5c5UL, - 0x50603030UL, 0x03020101UL, 0xa9ce6767UL, 0x7d562b2bUL, - 0x19e7fefeUL, 0x62b5d7d7UL, 0xe64dababUL, 0x9aec7676UL, - 0x458fcacaUL, 0x9d1f8282UL, 0x4089c9c9UL, 0x87fa7d7dUL, - 0x15effafaUL, 0xebb25959UL, 0xc98e4747UL, 0x0bfbf0f0UL, - 0xec41adadUL, 0x67b3d4d4UL, 0xfd5fa2a2UL, 0xea45afafUL, - 0xbf239c9cUL, 0xf753a4a4UL, 0x96e47272UL, 0x5b9bc0c0UL, - 0xc275b7b7UL, 0x1ce1fdfdUL, 0xae3d9393UL, 0x6a4c2626UL, - 0x5a6c3636UL, 0x417e3f3fUL, 0x02f5f7f7UL, 0x4f83ccccUL, - 0x5c683434UL, 0xf451a5a5UL, 0x34d1e5e5UL, 0x08f9f1f1UL, - 0x93e27171UL, 0x73abd8d8UL, 0x53623131UL, 0x3f2a1515UL, - 0x0c080404UL, 0x5295c7c7UL, 0x65462323UL, 0x5e9dc3c3UL, - 0x28301818UL, 0xa1379696UL, 0x0f0a0505UL, 0xb52f9a9aUL, - 0x090e0707UL, 0x36241212UL, 0x9b1b8080UL, 0x3ddfe2e2UL, - 0x26cdebebUL, 0x694e2727UL, 0xcd7fb2b2UL, 0x9fea7575UL, - 0x1b120909UL, 0x9e1d8383UL, 0x74582c2cUL, 0x2e341a1aUL, - 0x2d361b1bUL, 0xb2dc6e6eUL, 0xeeb45a5aUL, 0xfb5ba0a0UL, - 0xf6a45252UL, 0x4d763b3bUL, 0x61b7d6d6UL, 0xce7db3b3UL, - 0x7b522929UL, 0x3edde3e3UL, 0x715e2f2fUL, 0x97138484UL, - 0xf5a65353UL, 0x68b9d1d1UL, 0x00000000UL, 0x2cc1ededUL, - 0x60402020UL, 0x1fe3fcfcUL, 0xc879b1b1UL, 0xedb65b5bUL, - 0xbed46a6aUL, 0x468dcbcbUL, 0xd967bebeUL, 0x4b723939UL, - 0xde944a4aUL, 0xd4984c4cUL, 0xe8b05858UL, 0x4a85cfcfUL, - 0x6bbbd0d0UL, 0x2ac5efefUL, 0xe54faaaaUL, 0x16edfbfbUL, - 0xc5864343UL, 0xd79a4d4dUL, 0x55663333UL, 0x94118585UL, - 0xcf8a4545UL, 0x10e9f9f9UL, 0x06040202UL, 0x81fe7f7fUL, - 0xf0a05050UL, 0x44783c3cUL, 0xba259f9fUL, 0xe34ba8a8UL, - 0xf3a25151UL, 0xfe5da3a3UL, 0xc0804040UL, 0x8a058f8fUL, - 0xad3f9292UL, 0xbc219d9dUL, 0x48703838UL, 0x04f1f5f5UL, - 0xdf63bcbcUL, 0xc177b6b6UL, 0x75afdadaUL, 0x63422121UL, - 0x30201010UL, 0x1ae5ffffUL, 0x0efdf3f3UL, 0x6dbfd2d2UL, - 0x4c81cdcdUL, 0x14180c0cUL, 0x35261313UL, 0x2fc3ececUL, - 0xe1be5f5fUL, 0xa2359797UL, 0xcc884444UL, 0x392e1717UL, - 0x5793c4c4UL, 0xf255a7a7UL, 0x82fc7e7eUL, 0x477a3d3dUL, - 0xacc86464UL, 0xe7ba5d5dUL, 0x2b321919UL, 0x95e67373UL, - 0xa0c06060UL, 0x98198181UL, 0xd19e4f4fUL, 0x7fa3dcdcUL, - 0x66442222UL, 0x7e542a2aUL, 0xab3b9090UL, 0x830b8888UL, - 0xca8c4646UL, 0x29c7eeeeUL, 0xd36bb8b8UL, 0x3c281414UL, - 0x79a7dedeUL, 0xe2bc5e5eUL, 0x1d160b0bUL, 0x76addbdbUL, - 0x3bdbe0e0UL, 0x56643232UL, 0x4e743a3aUL, 0x1e140a0aUL, - 0xdb924949UL, 0x0a0c0606UL, 0x6c482424UL, 0xe4b85c5cUL, - 0x5d9fc2c2UL, 0x6ebdd3d3UL, 0xef43acacUL, 0xa6c46262UL, - 0xa8399191UL, 0xa4319595UL, 0x37d3e4e4UL, 0x8bf27979UL, - 0x32d5e7e7UL, 0x438bc8c8UL, 0x596e3737UL, 0xb7da6d6dUL, - 0x8c018d8dUL, 0x64b1d5d5UL, 0xd29c4e4eUL, 0xe049a9a9UL, - 0xb4d86c6cUL, 0xfaac5656UL, 0x07f3f4f4UL, 0x25cfeaeaUL, - 0xafca6565UL, 0x8ef47a7aUL, 0xe947aeaeUL, 0x18100808UL, - 0xd56fbabaUL, 0x88f07878UL, 0x6f4a2525UL, 0x725c2e2eUL, - 0x24381c1cUL, 0xf157a6a6UL, 0xc773b4b4UL, 0x5197c6c6UL, - 0x23cbe8e8UL, 0x7ca1ddddUL, 0x9ce87474UL, 0x213e1f1fUL, - 0xdd964b4bUL, 0xdc61bdbdUL, 0x860d8b8bUL, 0x850f8a8aUL, - 0x90e07070UL, 0x427c3e3eUL, 0xc471b5b5UL, 0xaacc6666UL, - 0xd8904848UL, 0x05060303UL, 0x01f7f6f6UL, 0x121c0e0eUL, - 0xa3c26161UL, 0x5f6a3535UL, 0xf9ae5757UL, 0xd069b9b9UL, - 0x91178686UL, 0x5899c1c1UL, 0x273a1d1dUL, 0xb9279e9eUL, - 0x38d9e1e1UL, 0x13ebf8f8UL, 0xb32b9898UL, 0x33221111UL, - 0xbbd26969UL, 0x70a9d9d9UL, 0x89078e8eUL, 0xa7339494UL, - 0xb62d9b9bUL, 0x223c1e1eUL, 0x92158787UL, 0x20c9e9e9UL, - 0x4987ceceUL, 0xffaa5555UL, 0x78502828UL, 0x7aa5dfdfUL, - 0x8f038c8cUL, 0xf859a1a1UL, 0x80098989UL, 0x171a0d0dUL, - 0xda65bfbfUL, 0x31d7e6e6UL, 0xc6844242UL, 0xb8d06868UL, - 0xc3824141UL, 0xb0299999UL, 0x775a2d2dUL, 0x111e0f0fUL, - 0xcb7bb0b0UL, 0xfca85454UL, 0xd66dbbbbUL, 0x3a2c1616UL, -}; -static const ulong32 TE2[256] = { - 0x63a5c663UL, 0x7c84f87cUL, 0x7799ee77UL, 0x7b8df67bUL, - 0xf20dfff2UL, 0x6bbdd66bUL, 0x6fb1de6fUL, 0xc55491c5UL, - 0x30506030UL, 0x01030201UL, 0x67a9ce67UL, 0x2b7d562bUL, - 0xfe19e7feUL, 0xd762b5d7UL, 0xabe64dabUL, 0x769aec76UL, - 0xca458fcaUL, 0x829d1f82UL, 0xc94089c9UL, 0x7d87fa7dUL, - 0xfa15effaUL, 0x59ebb259UL, 0x47c98e47UL, 0xf00bfbf0UL, - 0xadec41adUL, 0xd467b3d4UL, 0xa2fd5fa2UL, 0xafea45afUL, - 0x9cbf239cUL, 0xa4f753a4UL, 0x7296e472UL, 0xc05b9bc0UL, - 0xb7c275b7UL, 0xfd1ce1fdUL, 0x93ae3d93UL, 0x266a4c26UL, - 0x365a6c36UL, 0x3f417e3fUL, 0xf702f5f7UL, 0xcc4f83ccUL, - 0x345c6834UL, 0xa5f451a5UL, 0xe534d1e5UL, 0xf108f9f1UL, - 0x7193e271UL, 0xd873abd8UL, 0x31536231UL, 0x153f2a15UL, - 0x040c0804UL, 0xc75295c7UL, 0x23654623UL, 0xc35e9dc3UL, - 0x18283018UL, 0x96a13796UL, 0x050f0a05UL, 0x9ab52f9aUL, - 0x07090e07UL, 0x12362412UL, 0x809b1b80UL, 0xe23ddfe2UL, - 0xeb26cdebUL, 0x27694e27UL, 0xb2cd7fb2UL, 0x759fea75UL, - 0x091b1209UL, 0x839e1d83UL, 0x2c74582cUL, 0x1a2e341aUL, - 0x1b2d361bUL, 0x6eb2dc6eUL, 0x5aeeb45aUL, 0xa0fb5ba0UL, - 0x52f6a452UL, 0x3b4d763bUL, 0xd661b7d6UL, 0xb3ce7db3UL, - 0x297b5229UL, 0xe33edde3UL, 0x2f715e2fUL, 0x84971384UL, - 0x53f5a653UL, 0xd168b9d1UL, 0x00000000UL, 0xed2cc1edUL, - 0x20604020UL, 0xfc1fe3fcUL, 0xb1c879b1UL, 0x5bedb65bUL, - 0x6abed46aUL, 0xcb468dcbUL, 0xbed967beUL, 0x394b7239UL, - 0x4ade944aUL, 0x4cd4984cUL, 0x58e8b058UL, 0xcf4a85cfUL, - 0xd06bbbd0UL, 0xef2ac5efUL, 0xaae54faaUL, 0xfb16edfbUL, - 0x43c58643UL, 0x4dd79a4dUL, 0x33556633UL, 0x85941185UL, - 0x45cf8a45UL, 0xf910e9f9UL, 0x02060402UL, 0x7f81fe7fUL, - 0x50f0a050UL, 0x3c44783cUL, 0x9fba259fUL, 0xa8e34ba8UL, - 0x51f3a251UL, 0xa3fe5da3UL, 0x40c08040UL, 0x8f8a058fUL, - 0x92ad3f92UL, 0x9dbc219dUL, 0x38487038UL, 0xf504f1f5UL, - 0xbcdf63bcUL, 0xb6c177b6UL, 0xda75afdaUL, 0x21634221UL, - 0x10302010UL, 0xff1ae5ffUL, 0xf30efdf3UL, 0xd26dbfd2UL, - 0xcd4c81cdUL, 0x0c14180cUL, 0x13352613UL, 0xec2fc3ecUL, - 0x5fe1be5fUL, 0x97a23597UL, 0x44cc8844UL, 0x17392e17UL, - 0xc45793c4UL, 0xa7f255a7UL, 0x7e82fc7eUL, 0x3d477a3dUL, - 0x64acc864UL, 0x5de7ba5dUL, 0x192b3219UL, 0x7395e673UL, - 0x60a0c060UL, 0x81981981UL, 0x4fd19e4fUL, 0xdc7fa3dcUL, - 0x22664422UL, 0x2a7e542aUL, 0x90ab3b90UL, 0x88830b88UL, - 0x46ca8c46UL, 0xee29c7eeUL, 0xb8d36bb8UL, 0x143c2814UL, - 0xde79a7deUL, 0x5ee2bc5eUL, 0x0b1d160bUL, 0xdb76addbUL, - 0xe03bdbe0UL, 0x32566432UL, 0x3a4e743aUL, 0x0a1e140aUL, - 0x49db9249UL, 0x060a0c06UL, 0x246c4824UL, 0x5ce4b85cUL, - 0xc25d9fc2UL, 0xd36ebdd3UL, 0xacef43acUL, 0x62a6c462UL, - 0x91a83991UL, 0x95a43195UL, 0xe437d3e4UL, 0x798bf279UL, - 0xe732d5e7UL, 0xc8438bc8UL, 0x37596e37UL, 0x6db7da6dUL, - 0x8d8c018dUL, 0xd564b1d5UL, 0x4ed29c4eUL, 0xa9e049a9UL, - 0x6cb4d86cUL, 0x56faac56UL, 0xf407f3f4UL, 0xea25cfeaUL, - 0x65afca65UL, 0x7a8ef47aUL, 0xaee947aeUL, 0x08181008UL, - 0xbad56fbaUL, 0x7888f078UL, 0x256f4a25UL, 0x2e725c2eUL, - 0x1c24381cUL, 0xa6f157a6UL, 0xb4c773b4UL, 0xc65197c6UL, - 0xe823cbe8UL, 0xdd7ca1ddUL, 0x749ce874UL, 0x1f213e1fUL, - 0x4bdd964bUL, 0xbddc61bdUL, 0x8b860d8bUL, 0x8a850f8aUL, - 0x7090e070UL, 0x3e427c3eUL, 0xb5c471b5UL, 0x66aacc66UL, - 0x48d89048UL, 0x03050603UL, 0xf601f7f6UL, 0x0e121c0eUL, - 0x61a3c261UL, 0x355f6a35UL, 0x57f9ae57UL, 0xb9d069b9UL, - 0x86911786UL, 0xc15899c1UL, 0x1d273a1dUL, 0x9eb9279eUL, - 0xe138d9e1UL, 0xf813ebf8UL, 0x98b32b98UL, 0x11332211UL, - 0x69bbd269UL, 0xd970a9d9UL, 0x8e89078eUL, 0x94a73394UL, - 0x9bb62d9bUL, 0x1e223c1eUL, 0x87921587UL, 0xe920c9e9UL, - 0xce4987ceUL, 0x55ffaa55UL, 0x28785028UL, 0xdf7aa5dfUL, - 0x8c8f038cUL, 0xa1f859a1UL, 0x89800989UL, 0x0d171a0dUL, - 0xbfda65bfUL, 0xe631d7e6UL, 0x42c68442UL, 0x68b8d068UL, - 0x41c38241UL, 0x99b02999UL, 0x2d775a2dUL, 0x0f111e0fUL, - 0xb0cb7bb0UL, 0x54fca854UL, 0xbbd66dbbUL, 0x163a2c16UL, -}; -static const ulong32 TE3[256] = { - - 0x6363a5c6UL, 0x7c7c84f8UL, 0x777799eeUL, 0x7b7b8df6UL, - 0xf2f20dffUL, 0x6b6bbdd6UL, 0x6f6fb1deUL, 0xc5c55491UL, - 0x30305060UL, 0x01010302UL, 0x6767a9ceUL, 0x2b2b7d56UL, - 0xfefe19e7UL, 0xd7d762b5UL, 0xababe64dUL, 0x76769aecUL, - 0xcaca458fUL, 0x82829d1fUL, 0xc9c94089UL, 0x7d7d87faUL, - 0xfafa15efUL, 0x5959ebb2UL, 0x4747c98eUL, 0xf0f00bfbUL, - 0xadadec41UL, 0xd4d467b3UL, 0xa2a2fd5fUL, 0xafafea45UL, - 0x9c9cbf23UL, 0xa4a4f753UL, 0x727296e4UL, 0xc0c05b9bUL, - 0xb7b7c275UL, 0xfdfd1ce1UL, 0x9393ae3dUL, 0x26266a4cUL, - 0x36365a6cUL, 0x3f3f417eUL, 0xf7f702f5UL, 0xcccc4f83UL, - 0x34345c68UL, 0xa5a5f451UL, 0xe5e534d1UL, 0xf1f108f9UL, - 0x717193e2UL, 0xd8d873abUL, 0x31315362UL, 0x15153f2aUL, - 0x04040c08UL, 0xc7c75295UL, 0x23236546UL, 0xc3c35e9dUL, - 0x18182830UL, 0x9696a137UL, 0x05050f0aUL, 0x9a9ab52fUL, - 0x0707090eUL, 0x12123624UL, 0x80809b1bUL, 0xe2e23ddfUL, - 0xebeb26cdUL, 0x2727694eUL, 0xb2b2cd7fUL, 0x75759feaUL, - 0x09091b12UL, 0x83839e1dUL, 0x2c2c7458UL, 0x1a1a2e34UL, - 0x1b1b2d36UL, 0x6e6eb2dcUL, 0x5a5aeeb4UL, 0xa0a0fb5bUL, - 0x5252f6a4UL, 0x3b3b4d76UL, 0xd6d661b7UL, 0xb3b3ce7dUL, - 0x29297b52UL, 0xe3e33eddUL, 0x2f2f715eUL, 0x84849713UL, - 0x5353f5a6UL, 0xd1d168b9UL, 0x00000000UL, 0xeded2cc1UL, - 0x20206040UL, 0xfcfc1fe3UL, 0xb1b1c879UL, 0x5b5bedb6UL, - 0x6a6abed4UL, 0xcbcb468dUL, 0xbebed967UL, 0x39394b72UL, - 0x4a4ade94UL, 0x4c4cd498UL, 0x5858e8b0UL, 0xcfcf4a85UL, - 0xd0d06bbbUL, 0xefef2ac5UL, 0xaaaae54fUL, 0xfbfb16edUL, - 0x4343c586UL, 0x4d4dd79aUL, 0x33335566UL, 0x85859411UL, - 0x4545cf8aUL, 0xf9f910e9UL, 0x02020604UL, 0x7f7f81feUL, - 0x5050f0a0UL, 0x3c3c4478UL, 0x9f9fba25UL, 0xa8a8e34bUL, - 0x5151f3a2UL, 0xa3a3fe5dUL, 0x4040c080UL, 0x8f8f8a05UL, - 0x9292ad3fUL, 0x9d9dbc21UL, 0x38384870UL, 0xf5f504f1UL, - 0xbcbcdf63UL, 0xb6b6c177UL, 0xdada75afUL, 0x21216342UL, - 0x10103020UL, 0xffff1ae5UL, 0xf3f30efdUL, 0xd2d26dbfUL, - 0xcdcd4c81UL, 0x0c0c1418UL, 0x13133526UL, 0xecec2fc3UL, - 0x5f5fe1beUL, 0x9797a235UL, 0x4444cc88UL, 0x1717392eUL, - 0xc4c45793UL, 0xa7a7f255UL, 0x7e7e82fcUL, 0x3d3d477aUL, - 0x6464acc8UL, 0x5d5de7baUL, 0x19192b32UL, 0x737395e6UL, - 0x6060a0c0UL, 0x81819819UL, 0x4f4fd19eUL, 0xdcdc7fa3UL, - 0x22226644UL, 0x2a2a7e54UL, 0x9090ab3bUL, 0x8888830bUL, - 0x4646ca8cUL, 0xeeee29c7UL, 0xb8b8d36bUL, 0x14143c28UL, - 0xdede79a7UL, 0x5e5ee2bcUL, 0x0b0b1d16UL, 0xdbdb76adUL, - 0xe0e03bdbUL, 0x32325664UL, 0x3a3a4e74UL, 0x0a0a1e14UL, - 0x4949db92UL, 0x06060a0cUL, 0x24246c48UL, 0x5c5ce4b8UL, - 0xc2c25d9fUL, 0xd3d36ebdUL, 0xacacef43UL, 0x6262a6c4UL, - 0x9191a839UL, 0x9595a431UL, 0xe4e437d3UL, 0x79798bf2UL, - 0xe7e732d5UL, 0xc8c8438bUL, 0x3737596eUL, 0x6d6db7daUL, - 0x8d8d8c01UL, 0xd5d564b1UL, 0x4e4ed29cUL, 0xa9a9e049UL, - 0x6c6cb4d8UL, 0x5656faacUL, 0xf4f407f3UL, 0xeaea25cfUL, - 0x6565afcaUL, 0x7a7a8ef4UL, 0xaeaee947UL, 0x08081810UL, - 0xbabad56fUL, 0x787888f0UL, 0x25256f4aUL, 0x2e2e725cUL, - 0x1c1c2438UL, 0xa6a6f157UL, 0xb4b4c773UL, 0xc6c65197UL, - 0xe8e823cbUL, 0xdddd7ca1UL, 0x74749ce8UL, 0x1f1f213eUL, - 0x4b4bdd96UL, 0xbdbddc61UL, 0x8b8b860dUL, 0x8a8a850fUL, - 0x707090e0UL, 0x3e3e427cUL, 0xb5b5c471UL, 0x6666aaccUL, - 0x4848d890UL, 0x03030506UL, 0xf6f601f7UL, 0x0e0e121cUL, - 0x6161a3c2UL, 0x35355f6aUL, 0x5757f9aeUL, 0xb9b9d069UL, - 0x86869117UL, 0xc1c15899UL, 0x1d1d273aUL, 0x9e9eb927UL, - 0xe1e138d9UL, 0xf8f813ebUL, 0x9898b32bUL, 0x11113322UL, - 0x6969bbd2UL, 0xd9d970a9UL, 0x8e8e8907UL, 0x9494a733UL, - 0x9b9bb62dUL, 0x1e1e223cUL, 0x87879215UL, 0xe9e920c9UL, - 0xcece4987UL, 0x5555ffaaUL, 0x28287850UL, 0xdfdf7aa5UL, - 0x8c8c8f03UL, 0xa1a1f859UL, 0x89898009UL, 0x0d0d171aUL, - 0xbfbfda65UL, 0xe6e631d7UL, 0x4242c684UL, 0x6868b8d0UL, - 0x4141c382UL, 0x9999b029UL, 0x2d2d775aUL, 0x0f0f111eUL, - 0xb0b0cb7bUL, 0x5454fca8UL, 0xbbbbd66dUL, 0x16163a2cUL, -}; - -#ifndef PELI_TAB -static const ulong32 Te4_0[] = { -0x00000063UL, 0x0000007cUL, 0x00000077UL, 0x0000007bUL, 0x000000f2UL, 0x0000006bUL, 0x0000006fUL, 0x000000c5UL, -0x00000030UL, 0x00000001UL, 0x00000067UL, 0x0000002bUL, 0x000000feUL, 0x000000d7UL, 0x000000abUL, 0x00000076UL, -0x000000caUL, 0x00000082UL, 0x000000c9UL, 0x0000007dUL, 0x000000faUL, 0x00000059UL, 0x00000047UL, 0x000000f0UL, -0x000000adUL, 0x000000d4UL, 0x000000a2UL, 0x000000afUL, 0x0000009cUL, 0x000000a4UL, 0x00000072UL, 0x000000c0UL, -0x000000b7UL, 0x000000fdUL, 0x00000093UL, 0x00000026UL, 0x00000036UL, 0x0000003fUL, 0x000000f7UL, 0x000000ccUL, -0x00000034UL, 0x000000a5UL, 0x000000e5UL, 0x000000f1UL, 0x00000071UL, 0x000000d8UL, 0x00000031UL, 0x00000015UL, -0x00000004UL, 0x000000c7UL, 0x00000023UL, 0x000000c3UL, 0x00000018UL, 0x00000096UL, 0x00000005UL, 0x0000009aUL, -0x00000007UL, 0x00000012UL, 0x00000080UL, 0x000000e2UL, 0x000000ebUL, 0x00000027UL, 0x000000b2UL, 0x00000075UL, -0x00000009UL, 0x00000083UL, 0x0000002cUL, 0x0000001aUL, 0x0000001bUL, 0x0000006eUL, 0x0000005aUL, 0x000000a0UL, -0x00000052UL, 0x0000003bUL, 0x000000d6UL, 0x000000b3UL, 0x00000029UL, 0x000000e3UL, 0x0000002fUL, 0x00000084UL, -0x00000053UL, 0x000000d1UL, 0x00000000UL, 0x000000edUL, 0x00000020UL, 0x000000fcUL, 0x000000b1UL, 0x0000005bUL, -0x0000006aUL, 0x000000cbUL, 0x000000beUL, 0x00000039UL, 0x0000004aUL, 0x0000004cUL, 0x00000058UL, 0x000000cfUL, -0x000000d0UL, 0x000000efUL, 0x000000aaUL, 0x000000fbUL, 0x00000043UL, 0x0000004dUL, 0x00000033UL, 0x00000085UL, -0x00000045UL, 0x000000f9UL, 0x00000002UL, 0x0000007fUL, 0x00000050UL, 0x0000003cUL, 0x0000009fUL, 0x000000a8UL, -0x00000051UL, 0x000000a3UL, 0x00000040UL, 0x0000008fUL, 0x00000092UL, 0x0000009dUL, 0x00000038UL, 0x000000f5UL, -0x000000bcUL, 0x000000b6UL, 0x000000daUL, 0x00000021UL, 0x00000010UL, 0x000000ffUL, 0x000000f3UL, 0x000000d2UL, -0x000000cdUL, 0x0000000cUL, 0x00000013UL, 0x000000ecUL, 0x0000005fUL, 0x00000097UL, 0x00000044UL, 0x00000017UL, -0x000000c4UL, 0x000000a7UL, 0x0000007eUL, 0x0000003dUL, 0x00000064UL, 0x0000005dUL, 0x00000019UL, 0x00000073UL, -0x00000060UL, 0x00000081UL, 0x0000004fUL, 0x000000dcUL, 0x00000022UL, 0x0000002aUL, 0x00000090UL, 0x00000088UL, -0x00000046UL, 0x000000eeUL, 0x000000b8UL, 0x00000014UL, 0x000000deUL, 0x0000005eUL, 0x0000000bUL, 0x000000dbUL, -0x000000e0UL, 0x00000032UL, 0x0000003aUL, 0x0000000aUL, 0x00000049UL, 0x00000006UL, 0x00000024UL, 0x0000005cUL, -0x000000c2UL, 0x000000d3UL, 0x000000acUL, 0x00000062UL, 0x00000091UL, 0x00000095UL, 0x000000e4UL, 0x00000079UL, -0x000000e7UL, 0x000000c8UL, 0x00000037UL, 0x0000006dUL, 0x0000008dUL, 0x000000d5UL, 0x0000004eUL, 0x000000a9UL, -0x0000006cUL, 0x00000056UL, 0x000000f4UL, 0x000000eaUL, 0x00000065UL, 0x0000007aUL, 0x000000aeUL, 0x00000008UL, -0x000000baUL, 0x00000078UL, 0x00000025UL, 0x0000002eUL, 0x0000001cUL, 0x000000a6UL, 0x000000b4UL, 0x000000c6UL, -0x000000e8UL, 0x000000ddUL, 0x00000074UL, 0x0000001fUL, 0x0000004bUL, 0x000000bdUL, 0x0000008bUL, 0x0000008aUL, -0x00000070UL, 0x0000003eUL, 0x000000b5UL, 0x00000066UL, 0x00000048UL, 0x00000003UL, 0x000000f6UL, 0x0000000eUL, -0x00000061UL, 0x00000035UL, 0x00000057UL, 0x000000b9UL, 0x00000086UL, 0x000000c1UL, 0x0000001dUL, 0x0000009eUL, -0x000000e1UL, 0x000000f8UL, 0x00000098UL, 0x00000011UL, 0x00000069UL, 0x000000d9UL, 0x0000008eUL, 0x00000094UL, -0x0000009bUL, 0x0000001eUL, 0x00000087UL, 0x000000e9UL, 0x000000ceUL, 0x00000055UL, 0x00000028UL, 0x000000dfUL, -0x0000008cUL, 0x000000a1UL, 0x00000089UL, 0x0000000dUL, 0x000000bfUL, 0x000000e6UL, 0x00000042UL, 0x00000068UL, -0x00000041UL, 0x00000099UL, 0x0000002dUL, 0x0000000fUL, 0x000000b0UL, 0x00000054UL, 0x000000bbUL, 0x00000016UL -}; - -static const ulong32 Te4_1[] = { -0x00006300UL, 0x00007c00UL, 0x00007700UL, 0x00007b00UL, 0x0000f200UL, 0x00006b00UL, 0x00006f00UL, 0x0000c500UL, -0x00003000UL, 0x00000100UL, 0x00006700UL, 0x00002b00UL, 0x0000fe00UL, 0x0000d700UL, 0x0000ab00UL, 0x00007600UL, -0x0000ca00UL, 0x00008200UL, 0x0000c900UL, 0x00007d00UL, 0x0000fa00UL, 0x00005900UL, 0x00004700UL, 0x0000f000UL, -0x0000ad00UL, 0x0000d400UL, 0x0000a200UL, 0x0000af00UL, 0x00009c00UL, 0x0000a400UL, 0x00007200UL, 0x0000c000UL, -0x0000b700UL, 0x0000fd00UL, 0x00009300UL, 0x00002600UL, 0x00003600UL, 0x00003f00UL, 0x0000f700UL, 0x0000cc00UL, -0x00003400UL, 0x0000a500UL, 0x0000e500UL, 0x0000f100UL, 0x00007100UL, 0x0000d800UL, 0x00003100UL, 0x00001500UL, -0x00000400UL, 0x0000c700UL, 0x00002300UL, 0x0000c300UL, 0x00001800UL, 0x00009600UL, 0x00000500UL, 0x00009a00UL, -0x00000700UL, 0x00001200UL, 0x00008000UL, 0x0000e200UL, 0x0000eb00UL, 0x00002700UL, 0x0000b200UL, 0x00007500UL, -0x00000900UL, 0x00008300UL, 0x00002c00UL, 0x00001a00UL, 0x00001b00UL, 0x00006e00UL, 0x00005a00UL, 0x0000a000UL, -0x00005200UL, 0x00003b00UL, 0x0000d600UL, 0x0000b300UL, 0x00002900UL, 0x0000e300UL, 0x00002f00UL, 0x00008400UL, -0x00005300UL, 0x0000d100UL, 0x00000000UL, 0x0000ed00UL, 0x00002000UL, 0x0000fc00UL, 0x0000b100UL, 0x00005b00UL, -0x00006a00UL, 0x0000cb00UL, 0x0000be00UL, 0x00003900UL, 0x00004a00UL, 0x00004c00UL, 0x00005800UL, 0x0000cf00UL, -0x0000d000UL, 0x0000ef00UL, 0x0000aa00UL, 0x0000fb00UL, 0x00004300UL, 0x00004d00UL, 0x00003300UL, 0x00008500UL, -0x00004500UL, 0x0000f900UL, 0x00000200UL, 0x00007f00UL, 0x00005000UL, 0x00003c00UL, 0x00009f00UL, 0x0000a800UL, -0x00005100UL, 0x0000a300UL, 0x00004000UL, 0x00008f00UL, 0x00009200UL, 0x00009d00UL, 0x00003800UL, 0x0000f500UL, -0x0000bc00UL, 0x0000b600UL, 0x0000da00UL, 0x00002100UL, 0x00001000UL, 0x0000ff00UL, 0x0000f300UL, 0x0000d200UL, -0x0000cd00UL, 0x00000c00UL, 0x00001300UL, 0x0000ec00UL, 0x00005f00UL, 0x00009700UL, 0x00004400UL, 0x00001700UL, -0x0000c400UL, 0x0000a700UL, 0x00007e00UL, 0x00003d00UL, 0x00006400UL, 0x00005d00UL, 0x00001900UL, 0x00007300UL, -0x00006000UL, 0x00008100UL, 0x00004f00UL, 0x0000dc00UL, 0x00002200UL, 0x00002a00UL, 0x00009000UL, 0x00008800UL, -0x00004600UL, 0x0000ee00UL, 0x0000b800UL, 0x00001400UL, 0x0000de00UL, 0x00005e00UL, 0x00000b00UL, 0x0000db00UL, -0x0000e000UL, 0x00003200UL, 0x00003a00UL, 0x00000a00UL, 0x00004900UL, 0x00000600UL, 0x00002400UL, 0x00005c00UL, -0x0000c200UL, 0x0000d300UL, 0x0000ac00UL, 0x00006200UL, 0x00009100UL, 0x00009500UL, 0x0000e400UL, 0x00007900UL, -0x0000e700UL, 0x0000c800UL, 0x00003700UL, 0x00006d00UL, 0x00008d00UL, 0x0000d500UL, 0x00004e00UL, 0x0000a900UL, -0x00006c00UL, 0x00005600UL, 0x0000f400UL, 0x0000ea00UL, 0x00006500UL, 0x00007a00UL, 0x0000ae00UL, 0x00000800UL, -0x0000ba00UL, 0x00007800UL, 0x00002500UL, 0x00002e00UL, 0x00001c00UL, 0x0000a600UL, 0x0000b400UL, 0x0000c600UL, -0x0000e800UL, 0x0000dd00UL, 0x00007400UL, 0x00001f00UL, 0x00004b00UL, 0x0000bd00UL, 0x00008b00UL, 0x00008a00UL, -0x00007000UL, 0x00003e00UL, 0x0000b500UL, 0x00006600UL, 0x00004800UL, 0x00000300UL, 0x0000f600UL, 0x00000e00UL, -0x00006100UL, 0x00003500UL, 0x00005700UL, 0x0000b900UL, 0x00008600UL, 0x0000c100UL, 0x00001d00UL, 0x00009e00UL, -0x0000e100UL, 0x0000f800UL, 0x00009800UL, 0x00001100UL, 0x00006900UL, 0x0000d900UL, 0x00008e00UL, 0x00009400UL, -0x00009b00UL, 0x00001e00UL, 0x00008700UL, 0x0000e900UL, 0x0000ce00UL, 0x00005500UL, 0x00002800UL, 0x0000df00UL, -0x00008c00UL, 0x0000a100UL, 0x00008900UL, 0x00000d00UL, 0x0000bf00UL, 0x0000e600UL, 0x00004200UL, 0x00006800UL, -0x00004100UL, 0x00009900UL, 0x00002d00UL, 0x00000f00UL, 0x0000b000UL, 0x00005400UL, 0x0000bb00UL, 0x00001600UL -}; - -static const ulong32 Te4_2[] = { -0x00630000UL, 0x007c0000UL, 0x00770000UL, 0x007b0000UL, 0x00f20000UL, 0x006b0000UL, 0x006f0000UL, 0x00c50000UL, -0x00300000UL, 0x00010000UL, 0x00670000UL, 0x002b0000UL, 0x00fe0000UL, 0x00d70000UL, 0x00ab0000UL, 0x00760000UL, -0x00ca0000UL, 0x00820000UL, 0x00c90000UL, 0x007d0000UL, 0x00fa0000UL, 0x00590000UL, 0x00470000UL, 0x00f00000UL, -0x00ad0000UL, 0x00d40000UL, 0x00a20000UL, 0x00af0000UL, 0x009c0000UL, 0x00a40000UL, 0x00720000UL, 0x00c00000UL, -0x00b70000UL, 0x00fd0000UL, 0x00930000UL, 0x00260000UL, 0x00360000UL, 0x003f0000UL, 0x00f70000UL, 0x00cc0000UL, -0x00340000UL, 0x00a50000UL, 0x00e50000UL, 0x00f10000UL, 0x00710000UL, 0x00d80000UL, 0x00310000UL, 0x00150000UL, -0x00040000UL, 0x00c70000UL, 0x00230000UL, 0x00c30000UL, 0x00180000UL, 0x00960000UL, 0x00050000UL, 0x009a0000UL, -0x00070000UL, 0x00120000UL, 0x00800000UL, 0x00e20000UL, 0x00eb0000UL, 0x00270000UL, 0x00b20000UL, 0x00750000UL, -0x00090000UL, 0x00830000UL, 0x002c0000UL, 0x001a0000UL, 0x001b0000UL, 0x006e0000UL, 0x005a0000UL, 0x00a00000UL, -0x00520000UL, 0x003b0000UL, 0x00d60000UL, 0x00b30000UL, 0x00290000UL, 0x00e30000UL, 0x002f0000UL, 0x00840000UL, -0x00530000UL, 0x00d10000UL, 0x00000000UL, 0x00ed0000UL, 0x00200000UL, 0x00fc0000UL, 0x00b10000UL, 0x005b0000UL, -0x006a0000UL, 0x00cb0000UL, 0x00be0000UL, 0x00390000UL, 0x004a0000UL, 0x004c0000UL, 0x00580000UL, 0x00cf0000UL, -0x00d00000UL, 0x00ef0000UL, 0x00aa0000UL, 0x00fb0000UL, 0x00430000UL, 0x004d0000UL, 0x00330000UL, 0x00850000UL, -0x00450000UL, 0x00f90000UL, 0x00020000UL, 0x007f0000UL, 0x00500000UL, 0x003c0000UL, 0x009f0000UL, 0x00a80000UL, -0x00510000UL, 0x00a30000UL, 0x00400000UL, 0x008f0000UL, 0x00920000UL, 0x009d0000UL, 0x00380000UL, 0x00f50000UL, -0x00bc0000UL, 0x00b60000UL, 0x00da0000UL, 0x00210000UL, 0x00100000UL, 0x00ff0000UL, 0x00f30000UL, 0x00d20000UL, -0x00cd0000UL, 0x000c0000UL, 0x00130000UL, 0x00ec0000UL, 0x005f0000UL, 0x00970000UL, 0x00440000UL, 0x00170000UL, -0x00c40000UL, 0x00a70000UL, 0x007e0000UL, 0x003d0000UL, 0x00640000UL, 0x005d0000UL, 0x00190000UL, 0x00730000UL, -0x00600000UL, 0x00810000UL, 0x004f0000UL, 0x00dc0000UL, 0x00220000UL, 0x002a0000UL, 0x00900000UL, 0x00880000UL, -0x00460000UL, 0x00ee0000UL, 0x00b80000UL, 0x00140000UL, 0x00de0000UL, 0x005e0000UL, 0x000b0000UL, 0x00db0000UL, -0x00e00000UL, 0x00320000UL, 0x003a0000UL, 0x000a0000UL, 0x00490000UL, 0x00060000UL, 0x00240000UL, 0x005c0000UL, -0x00c20000UL, 0x00d30000UL, 0x00ac0000UL, 0x00620000UL, 0x00910000UL, 0x00950000UL, 0x00e40000UL, 0x00790000UL, -0x00e70000UL, 0x00c80000UL, 0x00370000UL, 0x006d0000UL, 0x008d0000UL, 0x00d50000UL, 0x004e0000UL, 0x00a90000UL, -0x006c0000UL, 0x00560000UL, 0x00f40000UL, 0x00ea0000UL, 0x00650000UL, 0x007a0000UL, 0x00ae0000UL, 0x00080000UL, -0x00ba0000UL, 0x00780000UL, 0x00250000UL, 0x002e0000UL, 0x001c0000UL, 0x00a60000UL, 0x00b40000UL, 0x00c60000UL, -0x00e80000UL, 0x00dd0000UL, 0x00740000UL, 0x001f0000UL, 0x004b0000UL, 0x00bd0000UL, 0x008b0000UL, 0x008a0000UL, -0x00700000UL, 0x003e0000UL, 0x00b50000UL, 0x00660000UL, 0x00480000UL, 0x00030000UL, 0x00f60000UL, 0x000e0000UL, -0x00610000UL, 0x00350000UL, 0x00570000UL, 0x00b90000UL, 0x00860000UL, 0x00c10000UL, 0x001d0000UL, 0x009e0000UL, -0x00e10000UL, 0x00f80000UL, 0x00980000UL, 0x00110000UL, 0x00690000UL, 0x00d90000UL, 0x008e0000UL, 0x00940000UL, -0x009b0000UL, 0x001e0000UL, 0x00870000UL, 0x00e90000UL, 0x00ce0000UL, 0x00550000UL, 0x00280000UL, 0x00df0000UL, -0x008c0000UL, 0x00a10000UL, 0x00890000UL, 0x000d0000UL, 0x00bf0000UL, 0x00e60000UL, 0x00420000UL, 0x00680000UL, -0x00410000UL, 0x00990000UL, 0x002d0000UL, 0x000f0000UL, 0x00b00000UL, 0x00540000UL, 0x00bb0000UL, 0x00160000UL -}; - -static const ulong32 Te4_3[] = { -0x63000000UL, 0x7c000000UL, 0x77000000UL, 0x7b000000UL, 0xf2000000UL, 0x6b000000UL, 0x6f000000UL, 0xc5000000UL, -0x30000000UL, 0x01000000UL, 0x67000000UL, 0x2b000000UL, 0xfe000000UL, 0xd7000000UL, 0xab000000UL, 0x76000000UL, -0xca000000UL, 0x82000000UL, 0xc9000000UL, 0x7d000000UL, 0xfa000000UL, 0x59000000UL, 0x47000000UL, 0xf0000000UL, -0xad000000UL, 0xd4000000UL, 0xa2000000UL, 0xaf000000UL, 0x9c000000UL, 0xa4000000UL, 0x72000000UL, 0xc0000000UL, -0xb7000000UL, 0xfd000000UL, 0x93000000UL, 0x26000000UL, 0x36000000UL, 0x3f000000UL, 0xf7000000UL, 0xcc000000UL, -0x34000000UL, 0xa5000000UL, 0xe5000000UL, 0xf1000000UL, 0x71000000UL, 0xd8000000UL, 0x31000000UL, 0x15000000UL, -0x04000000UL, 0xc7000000UL, 0x23000000UL, 0xc3000000UL, 0x18000000UL, 0x96000000UL, 0x05000000UL, 0x9a000000UL, -0x07000000UL, 0x12000000UL, 0x80000000UL, 0xe2000000UL, 0xeb000000UL, 0x27000000UL, 0xb2000000UL, 0x75000000UL, -0x09000000UL, 0x83000000UL, 0x2c000000UL, 0x1a000000UL, 0x1b000000UL, 0x6e000000UL, 0x5a000000UL, 0xa0000000UL, -0x52000000UL, 0x3b000000UL, 0xd6000000UL, 0xb3000000UL, 0x29000000UL, 0xe3000000UL, 0x2f000000UL, 0x84000000UL, -0x53000000UL, 0xd1000000UL, 0x00000000UL, 0xed000000UL, 0x20000000UL, 0xfc000000UL, 0xb1000000UL, 0x5b000000UL, -0x6a000000UL, 0xcb000000UL, 0xbe000000UL, 0x39000000UL, 0x4a000000UL, 0x4c000000UL, 0x58000000UL, 0xcf000000UL, -0xd0000000UL, 0xef000000UL, 0xaa000000UL, 0xfb000000UL, 0x43000000UL, 0x4d000000UL, 0x33000000UL, 0x85000000UL, -0x45000000UL, 0xf9000000UL, 0x02000000UL, 0x7f000000UL, 0x50000000UL, 0x3c000000UL, 0x9f000000UL, 0xa8000000UL, -0x51000000UL, 0xa3000000UL, 0x40000000UL, 0x8f000000UL, 0x92000000UL, 0x9d000000UL, 0x38000000UL, 0xf5000000UL, -0xbc000000UL, 0xb6000000UL, 0xda000000UL, 0x21000000UL, 0x10000000UL, 0xff000000UL, 0xf3000000UL, 0xd2000000UL, -0xcd000000UL, 0x0c000000UL, 0x13000000UL, 0xec000000UL, 0x5f000000UL, 0x97000000UL, 0x44000000UL, 0x17000000UL, -0xc4000000UL, 0xa7000000UL, 0x7e000000UL, 0x3d000000UL, 0x64000000UL, 0x5d000000UL, 0x19000000UL, 0x73000000UL, -0x60000000UL, 0x81000000UL, 0x4f000000UL, 0xdc000000UL, 0x22000000UL, 0x2a000000UL, 0x90000000UL, 0x88000000UL, -0x46000000UL, 0xee000000UL, 0xb8000000UL, 0x14000000UL, 0xde000000UL, 0x5e000000UL, 0x0b000000UL, 0xdb000000UL, -0xe0000000UL, 0x32000000UL, 0x3a000000UL, 0x0a000000UL, 0x49000000UL, 0x06000000UL, 0x24000000UL, 0x5c000000UL, -0xc2000000UL, 0xd3000000UL, 0xac000000UL, 0x62000000UL, 0x91000000UL, 0x95000000UL, 0xe4000000UL, 0x79000000UL, -0xe7000000UL, 0xc8000000UL, 0x37000000UL, 0x6d000000UL, 0x8d000000UL, 0xd5000000UL, 0x4e000000UL, 0xa9000000UL, -0x6c000000UL, 0x56000000UL, 0xf4000000UL, 0xea000000UL, 0x65000000UL, 0x7a000000UL, 0xae000000UL, 0x08000000UL, -0xba000000UL, 0x78000000UL, 0x25000000UL, 0x2e000000UL, 0x1c000000UL, 0xa6000000UL, 0xb4000000UL, 0xc6000000UL, -0xe8000000UL, 0xdd000000UL, 0x74000000UL, 0x1f000000UL, 0x4b000000UL, 0xbd000000UL, 0x8b000000UL, 0x8a000000UL, -0x70000000UL, 0x3e000000UL, 0xb5000000UL, 0x66000000UL, 0x48000000UL, 0x03000000UL, 0xf6000000UL, 0x0e000000UL, -0x61000000UL, 0x35000000UL, 0x57000000UL, 0xb9000000UL, 0x86000000UL, 0xc1000000UL, 0x1d000000UL, 0x9e000000UL, -0xe1000000UL, 0xf8000000UL, 0x98000000UL, 0x11000000UL, 0x69000000UL, 0xd9000000UL, 0x8e000000UL, 0x94000000UL, -0x9b000000UL, 0x1e000000UL, 0x87000000UL, 0xe9000000UL, 0xce000000UL, 0x55000000UL, 0x28000000UL, 0xdf000000UL, -0x8c000000UL, 0xa1000000UL, 0x89000000UL, 0x0d000000UL, 0xbf000000UL, 0xe6000000UL, 0x42000000UL, 0x68000000UL, -0x41000000UL, 0x99000000UL, 0x2d000000UL, 0x0f000000UL, 0xb0000000UL, 0x54000000UL, 0xbb000000UL, 0x16000000UL -}; -#endif /* pelimac */ - -#ifndef ENCRYPT_ONLY - -static const ulong32 TD1[256] = { - 0x5051f4a7UL, 0x537e4165UL, 0xc31a17a4UL, 0x963a275eUL, - 0xcb3bab6bUL, 0xf11f9d45UL, 0xabacfa58UL, 0x934be303UL, - 0x552030faUL, 0xf6ad766dUL, 0x9188cc76UL, 0x25f5024cUL, - 0xfc4fe5d7UL, 0xd7c52acbUL, 0x80263544UL, 0x8fb562a3UL, - 0x49deb15aUL, 0x6725ba1bUL, 0x9845ea0eUL, 0xe15dfec0UL, - 0x02c32f75UL, 0x12814cf0UL, 0xa38d4697UL, 0xc66bd3f9UL, - 0xe7038f5fUL, 0x9515929cUL, 0xebbf6d7aUL, 0xda955259UL, - 0x2dd4be83UL, 0xd3587421UL, 0x2949e069UL, 0x448ec9c8UL, - 0x6a75c289UL, 0x78f48e79UL, 0x6b99583eUL, 0xdd27b971UL, - 0xb6bee14fUL, 0x17f088adUL, 0x66c920acUL, 0xb47dce3aUL, - 0x1863df4aUL, 0x82e51a31UL, 0x60975133UL, 0x4562537fUL, - 0xe0b16477UL, 0x84bb6baeUL, 0x1cfe81a0UL, 0x94f9082bUL, - 0x58704868UL, 0x198f45fdUL, 0x8794de6cUL, 0xb7527bf8UL, - 0x23ab73d3UL, 0xe2724b02UL, 0x57e31f8fUL, 0x2a6655abUL, - 0x07b2eb28UL, 0x032fb5c2UL, 0x9a86c57bUL, 0xa5d33708UL, - 0xf2302887UL, 0xb223bfa5UL, 0xba02036aUL, 0x5ced1682UL, - 0x2b8acf1cUL, 0x92a779b4UL, 0xf0f307f2UL, 0xa14e69e2UL, - 0xcd65daf4UL, 0xd50605beUL, 0x1fd13462UL, 0x8ac4a6feUL, - 0x9d342e53UL, 0xa0a2f355UL, 0x32058ae1UL, 0x75a4f6ebUL, - 0x390b83ecUL, 0xaa4060efUL, 0x065e719fUL, 0x51bd6e10UL, - 0xf93e218aUL, 0x3d96dd06UL, 0xaedd3e05UL, 0x464de6bdUL, - 0xb591548dUL, 0x0571c45dUL, 0x6f0406d4UL, 0xff605015UL, - 0x241998fbUL, 0x97d6bde9UL, 0xcc894043UL, 0x7767d99eUL, - 0xbdb0e842UL, 0x8807898bUL, 0x38e7195bUL, 0xdb79c8eeUL, - 0x47a17c0aUL, 0xe97c420fUL, 0xc9f8841eUL, 0x00000000UL, - 0x83098086UL, 0x48322bedUL, 0xac1e1170UL, 0x4e6c5a72UL, - 0xfbfd0effUL, 0x560f8538UL, 0x1e3daed5UL, 0x27362d39UL, - 0x640a0fd9UL, 0x21685ca6UL, 0xd19b5b54UL, 0x3a24362eUL, - 0xb10c0a67UL, 0x0f9357e7UL, 0xd2b4ee96UL, 0x9e1b9b91UL, - 0x4f80c0c5UL, 0xa261dc20UL, 0x695a774bUL, 0x161c121aUL, - 0x0ae293baUL, 0xe5c0a02aUL, 0x433c22e0UL, 0x1d121b17UL, - 0x0b0e090dUL, 0xadf28bc7UL, 0xb92db6a8UL, 0xc8141ea9UL, - 0x8557f119UL, 0x4caf7507UL, 0xbbee99ddUL, 0xfda37f60UL, - 0x9ff70126UL, 0xbc5c72f5UL, 0xc544663bUL, 0x345bfb7eUL, - 0x768b4329UL, 0xdccb23c6UL, 0x68b6edfcUL, 0x63b8e4f1UL, - 0xcad731dcUL, 0x10426385UL, 0x40139722UL, 0x2084c611UL, - 0x7d854a24UL, 0xf8d2bb3dUL, 0x11aef932UL, 0x6dc729a1UL, - 0x4b1d9e2fUL, 0xf3dcb230UL, 0xec0d8652UL, 0xd077c1e3UL, - 0x6c2bb316UL, 0x99a970b9UL, 0xfa119448UL, 0x2247e964UL, - 0xc4a8fc8cUL, 0x1aa0f03fUL, 0xd8567d2cUL, 0xef223390UL, - 0xc787494eUL, 0xc1d938d1UL, 0xfe8ccaa2UL, 0x3698d40bUL, - 0xcfa6f581UL, 0x28a57adeUL, 0x26dab78eUL, 0xa43fadbfUL, - 0xe42c3a9dUL, 0x0d507892UL, 0x9b6a5fccUL, 0x62547e46UL, - 0xc2f68d13UL, 0xe890d8b8UL, 0x5e2e39f7UL, 0xf582c3afUL, - 0xbe9f5d80UL, 0x7c69d093UL, 0xa96fd52dUL, 0xb3cf2512UL, - 0x3bc8ac99UL, 0xa710187dUL, 0x6ee89c63UL, 0x7bdb3bbbUL, - 0x09cd2678UL, 0xf46e5918UL, 0x01ec9ab7UL, 0xa8834f9aUL, - 0x65e6956eUL, 0x7eaaffe6UL, 0x0821bccfUL, 0xe6ef15e8UL, - 0xd9bae79bUL, 0xce4a6f36UL, 0xd4ea9f09UL, 0xd629b07cUL, - 0xaf31a4b2UL, 0x312a3f23UL, 0x30c6a594UL, 0xc035a266UL, - 0x37744ebcUL, 0xa6fc82caUL, 0xb0e090d0UL, 0x1533a7d8UL, - 0x4af10498UL, 0xf741ecdaUL, 0x0e7fcd50UL, 0x2f1791f6UL, - 0x8d764dd6UL, 0x4d43efb0UL, 0x54ccaa4dUL, 0xdfe49604UL, - 0xe39ed1b5UL, 0x1b4c6a88UL, 0xb8c12c1fUL, 0x7f466551UL, - 0x049d5eeaUL, 0x5d018c35UL, 0x73fa8774UL, 0x2efb0b41UL, - 0x5ab3671dUL, 0x5292dbd2UL, 0x33e91056UL, 0x136dd647UL, - 0x8c9ad761UL, 0x7a37a10cUL, 0x8e59f814UL, 0x89eb133cUL, - 0xeecea927UL, 0x35b761c9UL, 0xede11ce5UL, 0x3c7a47b1UL, - 0x599cd2dfUL, 0x3f55f273UL, 0x791814ceUL, 0xbf73c737UL, - 0xea53f7cdUL, 0x5b5ffdaaUL, 0x14df3d6fUL, 0x867844dbUL, - 0x81caaff3UL, 0x3eb968c4UL, 0x2c382434UL, 0x5fc2a340UL, - 0x72161dc3UL, 0x0cbce225UL, 0x8b283c49UL, 0x41ff0d95UL, - 0x7139a801UL, 0xde080cb3UL, 0x9cd8b4e4UL, 0x906456c1UL, - 0x617bcb84UL, 0x70d532b6UL, 0x74486c5cUL, 0x42d0b857UL, -}; -static const ulong32 TD2[256] = { - 0xa75051f4UL, 0x65537e41UL, 0xa4c31a17UL, 0x5e963a27UL, - 0x6bcb3babUL, 0x45f11f9dUL, 0x58abacfaUL, 0x03934be3UL, - 0xfa552030UL, 0x6df6ad76UL, 0x769188ccUL, 0x4c25f502UL, - 0xd7fc4fe5UL, 0xcbd7c52aUL, 0x44802635UL, 0xa38fb562UL, - 0x5a49deb1UL, 0x1b6725baUL, 0x0e9845eaUL, 0xc0e15dfeUL, - 0x7502c32fUL, 0xf012814cUL, 0x97a38d46UL, 0xf9c66bd3UL, - 0x5fe7038fUL, 0x9c951592UL, 0x7aebbf6dUL, 0x59da9552UL, - 0x832dd4beUL, 0x21d35874UL, 0x692949e0UL, 0xc8448ec9UL, - 0x896a75c2UL, 0x7978f48eUL, 0x3e6b9958UL, 0x71dd27b9UL, - 0x4fb6bee1UL, 0xad17f088UL, 0xac66c920UL, 0x3ab47dceUL, - 0x4a1863dfUL, 0x3182e51aUL, 0x33609751UL, 0x7f456253UL, - 0x77e0b164UL, 0xae84bb6bUL, 0xa01cfe81UL, 0x2b94f908UL, - 0x68587048UL, 0xfd198f45UL, 0x6c8794deUL, 0xf8b7527bUL, - 0xd323ab73UL, 0x02e2724bUL, 0x8f57e31fUL, 0xab2a6655UL, - 0x2807b2ebUL, 0xc2032fb5UL, 0x7b9a86c5UL, 0x08a5d337UL, - 0x87f23028UL, 0xa5b223bfUL, 0x6aba0203UL, 0x825ced16UL, - 0x1c2b8acfUL, 0xb492a779UL, 0xf2f0f307UL, 0xe2a14e69UL, - 0xf4cd65daUL, 0xbed50605UL, 0x621fd134UL, 0xfe8ac4a6UL, - 0x539d342eUL, 0x55a0a2f3UL, 0xe132058aUL, 0xeb75a4f6UL, - 0xec390b83UL, 0xefaa4060UL, 0x9f065e71UL, 0x1051bd6eUL, - 0x8af93e21UL, 0x063d96ddUL, 0x05aedd3eUL, 0xbd464de6UL, - 0x8db59154UL, 0x5d0571c4UL, 0xd46f0406UL, 0x15ff6050UL, - 0xfb241998UL, 0xe997d6bdUL, 0x43cc8940UL, 0x9e7767d9UL, - 0x42bdb0e8UL, 0x8b880789UL, 0x5b38e719UL, 0xeedb79c8UL, - 0x0a47a17cUL, 0x0fe97c42UL, 0x1ec9f884UL, 0x00000000UL, - 0x86830980UL, 0xed48322bUL, 0x70ac1e11UL, 0x724e6c5aUL, - 0xfffbfd0eUL, 0x38560f85UL, 0xd51e3daeUL, 0x3927362dUL, - 0xd9640a0fUL, 0xa621685cUL, 0x54d19b5bUL, 0x2e3a2436UL, - 0x67b10c0aUL, 0xe70f9357UL, 0x96d2b4eeUL, 0x919e1b9bUL, - 0xc54f80c0UL, 0x20a261dcUL, 0x4b695a77UL, 0x1a161c12UL, - 0xba0ae293UL, 0x2ae5c0a0UL, 0xe0433c22UL, 0x171d121bUL, - 0x0d0b0e09UL, 0xc7adf28bUL, 0xa8b92db6UL, 0xa9c8141eUL, - 0x198557f1UL, 0x074caf75UL, 0xddbbee99UL, 0x60fda37fUL, - 0x269ff701UL, 0xf5bc5c72UL, 0x3bc54466UL, 0x7e345bfbUL, - 0x29768b43UL, 0xc6dccb23UL, 0xfc68b6edUL, 0xf163b8e4UL, - 0xdccad731UL, 0x85104263UL, 0x22401397UL, 0x112084c6UL, - 0x247d854aUL, 0x3df8d2bbUL, 0x3211aef9UL, 0xa16dc729UL, - 0x2f4b1d9eUL, 0x30f3dcb2UL, 0x52ec0d86UL, 0xe3d077c1UL, - 0x166c2bb3UL, 0xb999a970UL, 0x48fa1194UL, 0x642247e9UL, - 0x8cc4a8fcUL, 0x3f1aa0f0UL, 0x2cd8567dUL, 0x90ef2233UL, - 0x4ec78749UL, 0xd1c1d938UL, 0xa2fe8ccaUL, 0x0b3698d4UL, - 0x81cfa6f5UL, 0xde28a57aUL, 0x8e26dab7UL, 0xbfa43fadUL, - 0x9de42c3aUL, 0x920d5078UL, 0xcc9b6a5fUL, 0x4662547eUL, - 0x13c2f68dUL, 0xb8e890d8UL, 0xf75e2e39UL, 0xaff582c3UL, - 0x80be9f5dUL, 0x937c69d0UL, 0x2da96fd5UL, 0x12b3cf25UL, - 0x993bc8acUL, 0x7da71018UL, 0x636ee89cUL, 0xbb7bdb3bUL, - 0x7809cd26UL, 0x18f46e59UL, 0xb701ec9aUL, 0x9aa8834fUL, - 0x6e65e695UL, 0xe67eaaffUL, 0xcf0821bcUL, 0xe8e6ef15UL, - 0x9bd9bae7UL, 0x36ce4a6fUL, 0x09d4ea9fUL, 0x7cd629b0UL, - 0xb2af31a4UL, 0x23312a3fUL, 0x9430c6a5UL, 0x66c035a2UL, - 0xbc37744eUL, 0xcaa6fc82UL, 0xd0b0e090UL, 0xd81533a7UL, - 0x984af104UL, 0xdaf741ecUL, 0x500e7fcdUL, 0xf62f1791UL, - 0xd68d764dUL, 0xb04d43efUL, 0x4d54ccaaUL, 0x04dfe496UL, - 0xb5e39ed1UL, 0x881b4c6aUL, 0x1fb8c12cUL, 0x517f4665UL, - 0xea049d5eUL, 0x355d018cUL, 0x7473fa87UL, 0x412efb0bUL, - 0x1d5ab367UL, 0xd25292dbUL, 0x5633e910UL, 0x47136dd6UL, - 0x618c9ad7UL, 0x0c7a37a1UL, 0x148e59f8UL, 0x3c89eb13UL, - 0x27eecea9UL, 0xc935b761UL, 0xe5ede11cUL, 0xb13c7a47UL, - 0xdf599cd2UL, 0x733f55f2UL, 0xce791814UL, 0x37bf73c7UL, - 0xcdea53f7UL, 0xaa5b5ffdUL, 0x6f14df3dUL, 0xdb867844UL, - 0xf381caafUL, 0xc43eb968UL, 0x342c3824UL, 0x405fc2a3UL, - 0xc372161dUL, 0x250cbce2UL, 0x498b283cUL, 0x9541ff0dUL, - 0x017139a8UL, 0xb3de080cUL, 0xe49cd8b4UL, 0xc1906456UL, - 0x84617bcbUL, 0xb670d532UL, 0x5c74486cUL, 0x5742d0b8UL, -}; -static const ulong32 TD3[256] = { - 0xf4a75051UL, 0x4165537eUL, 0x17a4c31aUL, 0x275e963aUL, - 0xab6bcb3bUL, 0x9d45f11fUL, 0xfa58abacUL, 0xe303934bUL, - 0x30fa5520UL, 0x766df6adUL, 0xcc769188UL, 0x024c25f5UL, - 0xe5d7fc4fUL, 0x2acbd7c5UL, 0x35448026UL, 0x62a38fb5UL, - 0xb15a49deUL, 0xba1b6725UL, 0xea0e9845UL, 0xfec0e15dUL, - 0x2f7502c3UL, 0x4cf01281UL, 0x4697a38dUL, 0xd3f9c66bUL, - 0x8f5fe703UL, 0x929c9515UL, 0x6d7aebbfUL, 0x5259da95UL, - 0xbe832dd4UL, 0x7421d358UL, 0xe0692949UL, 0xc9c8448eUL, - 0xc2896a75UL, 0x8e7978f4UL, 0x583e6b99UL, 0xb971dd27UL, - 0xe14fb6beUL, 0x88ad17f0UL, 0x20ac66c9UL, 0xce3ab47dUL, - 0xdf4a1863UL, 0x1a3182e5UL, 0x51336097UL, 0x537f4562UL, - 0x6477e0b1UL, 0x6bae84bbUL, 0x81a01cfeUL, 0x082b94f9UL, - 0x48685870UL, 0x45fd198fUL, 0xde6c8794UL, 0x7bf8b752UL, - 0x73d323abUL, 0x4b02e272UL, 0x1f8f57e3UL, 0x55ab2a66UL, - 0xeb2807b2UL, 0xb5c2032fUL, 0xc57b9a86UL, 0x3708a5d3UL, - 0x2887f230UL, 0xbfa5b223UL, 0x036aba02UL, 0x16825cedUL, - 0xcf1c2b8aUL, 0x79b492a7UL, 0x07f2f0f3UL, 0x69e2a14eUL, - 0xdaf4cd65UL, 0x05bed506UL, 0x34621fd1UL, 0xa6fe8ac4UL, - 0x2e539d34UL, 0xf355a0a2UL, 0x8ae13205UL, 0xf6eb75a4UL, - 0x83ec390bUL, 0x60efaa40UL, 0x719f065eUL, 0x6e1051bdUL, - 0x218af93eUL, 0xdd063d96UL, 0x3e05aeddUL, 0xe6bd464dUL, - 0x548db591UL, 0xc45d0571UL, 0x06d46f04UL, 0x5015ff60UL, - 0x98fb2419UL, 0xbde997d6UL, 0x4043cc89UL, 0xd99e7767UL, - 0xe842bdb0UL, 0x898b8807UL, 0x195b38e7UL, 0xc8eedb79UL, - 0x7c0a47a1UL, 0x420fe97cUL, 0x841ec9f8UL, 0x00000000UL, - 0x80868309UL, 0x2bed4832UL, 0x1170ac1eUL, 0x5a724e6cUL, - 0x0efffbfdUL, 0x8538560fUL, 0xaed51e3dUL, 0x2d392736UL, - 0x0fd9640aUL, 0x5ca62168UL, 0x5b54d19bUL, 0x362e3a24UL, - 0x0a67b10cUL, 0x57e70f93UL, 0xee96d2b4UL, 0x9b919e1bUL, - 0xc0c54f80UL, 0xdc20a261UL, 0x774b695aUL, 0x121a161cUL, - 0x93ba0ae2UL, 0xa02ae5c0UL, 0x22e0433cUL, 0x1b171d12UL, - 0x090d0b0eUL, 0x8bc7adf2UL, 0xb6a8b92dUL, 0x1ea9c814UL, - 0xf1198557UL, 0x75074cafUL, 0x99ddbbeeUL, 0x7f60fda3UL, - 0x01269ff7UL, 0x72f5bc5cUL, 0x663bc544UL, 0xfb7e345bUL, - 0x4329768bUL, 0x23c6dccbUL, 0xedfc68b6UL, 0xe4f163b8UL, - 0x31dccad7UL, 0x63851042UL, 0x97224013UL, 0xc6112084UL, - 0x4a247d85UL, 0xbb3df8d2UL, 0xf93211aeUL, 0x29a16dc7UL, - 0x9e2f4b1dUL, 0xb230f3dcUL, 0x8652ec0dUL, 0xc1e3d077UL, - 0xb3166c2bUL, 0x70b999a9UL, 0x9448fa11UL, 0xe9642247UL, - 0xfc8cc4a8UL, 0xf03f1aa0UL, 0x7d2cd856UL, 0x3390ef22UL, - 0x494ec787UL, 0x38d1c1d9UL, 0xcaa2fe8cUL, 0xd40b3698UL, - 0xf581cfa6UL, 0x7ade28a5UL, 0xb78e26daUL, 0xadbfa43fUL, - 0x3a9de42cUL, 0x78920d50UL, 0x5fcc9b6aUL, 0x7e466254UL, - 0x8d13c2f6UL, 0xd8b8e890UL, 0x39f75e2eUL, 0xc3aff582UL, - 0x5d80be9fUL, 0xd0937c69UL, 0xd52da96fUL, 0x2512b3cfUL, - 0xac993bc8UL, 0x187da710UL, 0x9c636ee8UL, 0x3bbb7bdbUL, - 0x267809cdUL, 0x5918f46eUL, 0x9ab701ecUL, 0x4f9aa883UL, - 0x956e65e6UL, 0xffe67eaaUL, 0xbccf0821UL, 0x15e8e6efUL, - 0xe79bd9baUL, 0x6f36ce4aUL, 0x9f09d4eaUL, 0xb07cd629UL, - 0xa4b2af31UL, 0x3f23312aUL, 0xa59430c6UL, 0xa266c035UL, - 0x4ebc3774UL, 0x82caa6fcUL, 0x90d0b0e0UL, 0xa7d81533UL, - 0x04984af1UL, 0xecdaf741UL, 0xcd500e7fUL, 0x91f62f17UL, - 0x4dd68d76UL, 0xefb04d43UL, 0xaa4d54ccUL, 0x9604dfe4UL, - 0xd1b5e39eUL, 0x6a881b4cUL, 0x2c1fb8c1UL, 0x65517f46UL, - 0x5eea049dUL, 0x8c355d01UL, 0x877473faUL, 0x0b412efbUL, - 0x671d5ab3UL, 0xdbd25292UL, 0x105633e9UL, 0xd647136dUL, - 0xd7618c9aUL, 0xa10c7a37UL, 0xf8148e59UL, 0x133c89ebUL, - 0xa927eeceUL, 0x61c935b7UL, 0x1ce5ede1UL, 0x47b13c7aUL, - 0xd2df599cUL, 0xf2733f55UL, 0x14ce7918UL, 0xc737bf73UL, - 0xf7cdea53UL, 0xfdaa5b5fUL, 0x3d6f14dfUL, 0x44db8678UL, - 0xaff381caUL, 0x68c43eb9UL, 0x24342c38UL, 0xa3405fc2UL, - 0x1dc37216UL, 0xe2250cbcUL, 0x3c498b28UL, 0x0d9541ffUL, - 0xa8017139UL, 0x0cb3de08UL, 0xb4e49cd8UL, 0x56c19064UL, - 0xcb84617bUL, 0x32b670d5UL, 0x6c5c7448UL, 0xb85742d0UL, -}; - -static const ulong32 Tks0[] = { -0x00000000UL, 0x0e090d0bUL, 0x1c121a16UL, 0x121b171dUL, 0x3824342cUL, 0x362d3927UL, 0x24362e3aUL, 0x2a3f2331UL, -0x70486858UL, 0x7e416553UL, 0x6c5a724eUL, 0x62537f45UL, 0x486c5c74UL, 0x4665517fUL, 0x547e4662UL, 0x5a774b69UL, -0xe090d0b0UL, 0xee99ddbbUL, 0xfc82caa6UL, 0xf28bc7adUL, 0xd8b4e49cUL, 0xd6bde997UL, 0xc4a6fe8aUL, 0xcaaff381UL, -0x90d8b8e8UL, 0x9ed1b5e3UL, 0x8ccaa2feUL, 0x82c3aff5UL, 0xa8fc8cc4UL, 0xa6f581cfUL, 0xb4ee96d2UL, 0xbae79bd9UL, -0xdb3bbb7bUL, 0xd532b670UL, 0xc729a16dUL, 0xc920ac66UL, 0xe31f8f57UL, 0xed16825cUL, 0xff0d9541UL, 0xf104984aUL, -0xab73d323UL, 0xa57ade28UL, 0xb761c935UL, 0xb968c43eUL, 0x9357e70fUL, 0x9d5eea04UL, 0x8f45fd19UL, 0x814cf012UL, -0x3bab6bcbUL, 0x35a266c0UL, 0x27b971ddUL, 0x29b07cd6UL, 0x038f5fe7UL, 0x0d8652ecUL, 0x1f9d45f1UL, 0x119448faUL, -0x4be30393UL, 0x45ea0e98UL, 0x57f11985UL, 0x59f8148eUL, 0x73c737bfUL, 0x7dce3ab4UL, 0x6fd52da9UL, 0x61dc20a2UL, -0xad766df6UL, 0xa37f60fdUL, 0xb16477e0UL, 0xbf6d7aebUL, 0x955259daUL, 0x9b5b54d1UL, 0x894043ccUL, 0x87494ec7UL, -0xdd3e05aeUL, 0xd33708a5UL, 0xc12c1fb8UL, 0xcf2512b3UL, 0xe51a3182UL, 0xeb133c89UL, 0xf9082b94UL, 0xf701269fUL, -0x4de6bd46UL, 0x43efb04dUL, 0x51f4a750UL, 0x5ffdaa5bUL, 0x75c2896aUL, 0x7bcb8461UL, 0x69d0937cUL, 0x67d99e77UL, -0x3daed51eUL, 0x33a7d815UL, 0x21bccf08UL, 0x2fb5c203UL, 0x058ae132UL, 0x0b83ec39UL, 0x1998fb24UL, 0x1791f62fUL, -0x764dd68dUL, 0x7844db86UL, 0x6a5fcc9bUL, 0x6456c190UL, 0x4e69e2a1UL, 0x4060efaaUL, 0x527bf8b7UL, 0x5c72f5bcUL, -0x0605bed5UL, 0x080cb3deUL, 0x1a17a4c3UL, 0x141ea9c8UL, 0x3e218af9UL, 0x302887f2UL, 0x223390efUL, 0x2c3a9de4UL, -0x96dd063dUL, 0x98d40b36UL, 0x8acf1c2bUL, 0x84c61120UL, 0xaef93211UL, 0xa0f03f1aUL, 0xb2eb2807UL, 0xbce2250cUL, -0xe6956e65UL, 0xe89c636eUL, 0xfa877473UL, 0xf48e7978UL, 0xdeb15a49UL, 0xd0b85742UL, 0xc2a3405fUL, 0xccaa4d54UL, -0x41ecdaf7UL, 0x4fe5d7fcUL, 0x5dfec0e1UL, 0x53f7cdeaUL, 0x79c8eedbUL, 0x77c1e3d0UL, 0x65daf4cdUL, 0x6bd3f9c6UL, -0x31a4b2afUL, 0x3fadbfa4UL, 0x2db6a8b9UL, 0x23bfa5b2UL, 0x09808683UL, 0x07898b88UL, 0x15929c95UL, 0x1b9b919eUL, -0xa17c0a47UL, 0xaf75074cUL, 0xbd6e1051UL, 0xb3671d5aUL, 0x99583e6bUL, 0x97513360UL, 0x854a247dUL, 0x8b432976UL, -0xd134621fUL, 0xdf3d6f14UL, 0xcd267809UL, 0xc32f7502UL, 0xe9105633UL, 0xe7195b38UL, 0xf5024c25UL, 0xfb0b412eUL, -0x9ad7618cUL, 0x94de6c87UL, 0x86c57b9aUL, 0x88cc7691UL, 0xa2f355a0UL, 0xacfa58abUL, 0xbee14fb6UL, 0xb0e842bdUL, -0xea9f09d4UL, 0xe49604dfUL, 0xf68d13c2UL, 0xf8841ec9UL, 0xd2bb3df8UL, 0xdcb230f3UL, 0xcea927eeUL, 0xc0a02ae5UL, -0x7a47b13cUL, 0x744ebc37UL, 0x6655ab2aUL, 0x685ca621UL, 0x42638510UL, 0x4c6a881bUL, 0x5e719f06UL, 0x5078920dUL, -0x0a0fd964UL, 0x0406d46fUL, 0x161dc372UL, 0x1814ce79UL, 0x322bed48UL, 0x3c22e043UL, 0x2e39f75eUL, 0x2030fa55UL, -0xec9ab701UL, 0xe293ba0aUL, 0xf088ad17UL, 0xfe81a01cUL, 0xd4be832dUL, 0xdab78e26UL, 0xc8ac993bUL, 0xc6a59430UL, -0x9cd2df59UL, 0x92dbd252UL, 0x80c0c54fUL, 0x8ec9c844UL, 0xa4f6eb75UL, 0xaaffe67eUL, 0xb8e4f163UL, 0xb6edfc68UL, -0x0c0a67b1UL, 0x02036abaUL, 0x10187da7UL, 0x1e1170acUL, 0x342e539dUL, 0x3a275e96UL, 0x283c498bUL, 0x26354480UL, -0x7c420fe9UL, 0x724b02e2UL, 0x605015ffUL, 0x6e5918f4UL, 0x44663bc5UL, 0x4a6f36ceUL, 0x587421d3UL, 0x567d2cd8UL, -0x37a10c7aUL, 0x39a80171UL, 0x2bb3166cUL, 0x25ba1b67UL, 0x0f853856UL, 0x018c355dUL, 0x13972240UL, 0x1d9e2f4bUL, -0x47e96422UL, 0x49e06929UL, 0x5bfb7e34UL, 0x55f2733fUL, 0x7fcd500eUL, 0x71c45d05UL, 0x63df4a18UL, 0x6dd64713UL, -0xd731dccaUL, 0xd938d1c1UL, 0xcb23c6dcUL, 0xc52acbd7UL, 0xef15e8e6UL, 0xe11ce5edUL, 0xf307f2f0UL, 0xfd0efffbUL, -0xa779b492UL, 0xa970b999UL, 0xbb6bae84UL, 0xb562a38fUL, 0x9f5d80beUL, 0x91548db5UL, 0x834f9aa8UL, 0x8d4697a3UL -}; - -static const ulong32 Tks1[] = { -0x00000000UL, 0x0b0e090dUL, 0x161c121aUL, 0x1d121b17UL, 0x2c382434UL, 0x27362d39UL, 0x3a24362eUL, 0x312a3f23UL, -0x58704868UL, 0x537e4165UL, 0x4e6c5a72UL, 0x4562537fUL, 0x74486c5cUL, 0x7f466551UL, 0x62547e46UL, 0x695a774bUL, -0xb0e090d0UL, 0xbbee99ddUL, 0xa6fc82caUL, 0xadf28bc7UL, 0x9cd8b4e4UL, 0x97d6bde9UL, 0x8ac4a6feUL, 0x81caaff3UL, -0xe890d8b8UL, 0xe39ed1b5UL, 0xfe8ccaa2UL, 0xf582c3afUL, 0xc4a8fc8cUL, 0xcfa6f581UL, 0xd2b4ee96UL, 0xd9bae79bUL, -0x7bdb3bbbUL, 0x70d532b6UL, 0x6dc729a1UL, 0x66c920acUL, 0x57e31f8fUL, 0x5ced1682UL, 0x41ff0d95UL, 0x4af10498UL, -0x23ab73d3UL, 0x28a57adeUL, 0x35b761c9UL, 0x3eb968c4UL, 0x0f9357e7UL, 0x049d5eeaUL, 0x198f45fdUL, 0x12814cf0UL, -0xcb3bab6bUL, 0xc035a266UL, 0xdd27b971UL, 0xd629b07cUL, 0xe7038f5fUL, 0xec0d8652UL, 0xf11f9d45UL, 0xfa119448UL, -0x934be303UL, 0x9845ea0eUL, 0x8557f119UL, 0x8e59f814UL, 0xbf73c737UL, 0xb47dce3aUL, 0xa96fd52dUL, 0xa261dc20UL, -0xf6ad766dUL, 0xfda37f60UL, 0xe0b16477UL, 0xebbf6d7aUL, 0xda955259UL, 0xd19b5b54UL, 0xcc894043UL, 0xc787494eUL, -0xaedd3e05UL, 0xa5d33708UL, 0xb8c12c1fUL, 0xb3cf2512UL, 0x82e51a31UL, 0x89eb133cUL, 0x94f9082bUL, 0x9ff70126UL, -0x464de6bdUL, 0x4d43efb0UL, 0x5051f4a7UL, 0x5b5ffdaaUL, 0x6a75c289UL, 0x617bcb84UL, 0x7c69d093UL, 0x7767d99eUL, -0x1e3daed5UL, 0x1533a7d8UL, 0x0821bccfUL, 0x032fb5c2UL, 0x32058ae1UL, 0x390b83ecUL, 0x241998fbUL, 0x2f1791f6UL, -0x8d764dd6UL, 0x867844dbUL, 0x9b6a5fccUL, 0x906456c1UL, 0xa14e69e2UL, 0xaa4060efUL, 0xb7527bf8UL, 0xbc5c72f5UL, -0xd50605beUL, 0xde080cb3UL, 0xc31a17a4UL, 0xc8141ea9UL, 0xf93e218aUL, 0xf2302887UL, 0xef223390UL, 0xe42c3a9dUL, -0x3d96dd06UL, 0x3698d40bUL, 0x2b8acf1cUL, 0x2084c611UL, 0x11aef932UL, 0x1aa0f03fUL, 0x07b2eb28UL, 0x0cbce225UL, -0x65e6956eUL, 0x6ee89c63UL, 0x73fa8774UL, 0x78f48e79UL, 0x49deb15aUL, 0x42d0b857UL, 0x5fc2a340UL, 0x54ccaa4dUL, -0xf741ecdaUL, 0xfc4fe5d7UL, 0xe15dfec0UL, 0xea53f7cdUL, 0xdb79c8eeUL, 0xd077c1e3UL, 0xcd65daf4UL, 0xc66bd3f9UL, -0xaf31a4b2UL, 0xa43fadbfUL, 0xb92db6a8UL, 0xb223bfa5UL, 0x83098086UL, 0x8807898bUL, 0x9515929cUL, 0x9e1b9b91UL, -0x47a17c0aUL, 0x4caf7507UL, 0x51bd6e10UL, 0x5ab3671dUL, 0x6b99583eUL, 0x60975133UL, 0x7d854a24UL, 0x768b4329UL, -0x1fd13462UL, 0x14df3d6fUL, 0x09cd2678UL, 0x02c32f75UL, 0x33e91056UL, 0x38e7195bUL, 0x25f5024cUL, 0x2efb0b41UL, -0x8c9ad761UL, 0x8794de6cUL, 0x9a86c57bUL, 0x9188cc76UL, 0xa0a2f355UL, 0xabacfa58UL, 0xb6bee14fUL, 0xbdb0e842UL, -0xd4ea9f09UL, 0xdfe49604UL, 0xc2f68d13UL, 0xc9f8841eUL, 0xf8d2bb3dUL, 0xf3dcb230UL, 0xeecea927UL, 0xe5c0a02aUL, -0x3c7a47b1UL, 0x37744ebcUL, 0x2a6655abUL, 0x21685ca6UL, 0x10426385UL, 0x1b4c6a88UL, 0x065e719fUL, 0x0d507892UL, -0x640a0fd9UL, 0x6f0406d4UL, 0x72161dc3UL, 0x791814ceUL, 0x48322bedUL, 0x433c22e0UL, 0x5e2e39f7UL, 0x552030faUL, -0x01ec9ab7UL, 0x0ae293baUL, 0x17f088adUL, 0x1cfe81a0UL, 0x2dd4be83UL, 0x26dab78eUL, 0x3bc8ac99UL, 0x30c6a594UL, -0x599cd2dfUL, 0x5292dbd2UL, 0x4f80c0c5UL, 0x448ec9c8UL, 0x75a4f6ebUL, 0x7eaaffe6UL, 0x63b8e4f1UL, 0x68b6edfcUL, -0xb10c0a67UL, 0xba02036aUL, 0xa710187dUL, 0xac1e1170UL, 0x9d342e53UL, 0x963a275eUL, 0x8b283c49UL, 0x80263544UL, -0xe97c420fUL, 0xe2724b02UL, 0xff605015UL, 0xf46e5918UL, 0xc544663bUL, 0xce4a6f36UL, 0xd3587421UL, 0xd8567d2cUL, -0x7a37a10cUL, 0x7139a801UL, 0x6c2bb316UL, 0x6725ba1bUL, 0x560f8538UL, 0x5d018c35UL, 0x40139722UL, 0x4b1d9e2fUL, -0x2247e964UL, 0x2949e069UL, 0x345bfb7eUL, 0x3f55f273UL, 0x0e7fcd50UL, 0x0571c45dUL, 0x1863df4aUL, 0x136dd647UL, -0xcad731dcUL, 0xc1d938d1UL, 0xdccb23c6UL, 0xd7c52acbUL, 0xe6ef15e8UL, 0xede11ce5UL, 0xf0f307f2UL, 0xfbfd0effUL, -0x92a779b4UL, 0x99a970b9UL, 0x84bb6baeUL, 0x8fb562a3UL, 0xbe9f5d80UL, 0xb591548dUL, 0xa8834f9aUL, 0xa38d4697UL -}; - -static const ulong32 Tks2[] = { -0x00000000UL, 0x0d0b0e09UL, 0x1a161c12UL, 0x171d121bUL, 0x342c3824UL, 0x3927362dUL, 0x2e3a2436UL, 0x23312a3fUL, -0x68587048UL, 0x65537e41UL, 0x724e6c5aUL, 0x7f456253UL, 0x5c74486cUL, 0x517f4665UL, 0x4662547eUL, 0x4b695a77UL, -0xd0b0e090UL, 0xddbbee99UL, 0xcaa6fc82UL, 0xc7adf28bUL, 0xe49cd8b4UL, 0xe997d6bdUL, 0xfe8ac4a6UL, 0xf381caafUL, -0xb8e890d8UL, 0xb5e39ed1UL, 0xa2fe8ccaUL, 0xaff582c3UL, 0x8cc4a8fcUL, 0x81cfa6f5UL, 0x96d2b4eeUL, 0x9bd9bae7UL, -0xbb7bdb3bUL, 0xb670d532UL, 0xa16dc729UL, 0xac66c920UL, 0x8f57e31fUL, 0x825ced16UL, 0x9541ff0dUL, 0x984af104UL, -0xd323ab73UL, 0xde28a57aUL, 0xc935b761UL, 0xc43eb968UL, 0xe70f9357UL, 0xea049d5eUL, 0xfd198f45UL, 0xf012814cUL, -0x6bcb3babUL, 0x66c035a2UL, 0x71dd27b9UL, 0x7cd629b0UL, 0x5fe7038fUL, 0x52ec0d86UL, 0x45f11f9dUL, 0x48fa1194UL, -0x03934be3UL, 0x0e9845eaUL, 0x198557f1UL, 0x148e59f8UL, 0x37bf73c7UL, 0x3ab47dceUL, 0x2da96fd5UL, 0x20a261dcUL, -0x6df6ad76UL, 0x60fda37fUL, 0x77e0b164UL, 0x7aebbf6dUL, 0x59da9552UL, 0x54d19b5bUL, 0x43cc8940UL, 0x4ec78749UL, -0x05aedd3eUL, 0x08a5d337UL, 0x1fb8c12cUL, 0x12b3cf25UL, 0x3182e51aUL, 0x3c89eb13UL, 0x2b94f908UL, 0x269ff701UL, -0xbd464de6UL, 0xb04d43efUL, 0xa75051f4UL, 0xaa5b5ffdUL, 0x896a75c2UL, 0x84617bcbUL, 0x937c69d0UL, 0x9e7767d9UL, -0xd51e3daeUL, 0xd81533a7UL, 0xcf0821bcUL, 0xc2032fb5UL, 0xe132058aUL, 0xec390b83UL, 0xfb241998UL, 0xf62f1791UL, -0xd68d764dUL, 0xdb867844UL, 0xcc9b6a5fUL, 0xc1906456UL, 0xe2a14e69UL, 0xefaa4060UL, 0xf8b7527bUL, 0xf5bc5c72UL, -0xbed50605UL, 0xb3de080cUL, 0xa4c31a17UL, 0xa9c8141eUL, 0x8af93e21UL, 0x87f23028UL, 0x90ef2233UL, 0x9de42c3aUL, -0x063d96ddUL, 0x0b3698d4UL, 0x1c2b8acfUL, 0x112084c6UL, 0x3211aef9UL, 0x3f1aa0f0UL, 0x2807b2ebUL, 0x250cbce2UL, -0x6e65e695UL, 0x636ee89cUL, 0x7473fa87UL, 0x7978f48eUL, 0x5a49deb1UL, 0x5742d0b8UL, 0x405fc2a3UL, 0x4d54ccaaUL, -0xdaf741ecUL, 0xd7fc4fe5UL, 0xc0e15dfeUL, 0xcdea53f7UL, 0xeedb79c8UL, 0xe3d077c1UL, 0xf4cd65daUL, 0xf9c66bd3UL, -0xb2af31a4UL, 0xbfa43fadUL, 0xa8b92db6UL, 0xa5b223bfUL, 0x86830980UL, 0x8b880789UL, 0x9c951592UL, 0x919e1b9bUL, -0x0a47a17cUL, 0x074caf75UL, 0x1051bd6eUL, 0x1d5ab367UL, 0x3e6b9958UL, 0x33609751UL, 0x247d854aUL, 0x29768b43UL, -0x621fd134UL, 0x6f14df3dUL, 0x7809cd26UL, 0x7502c32fUL, 0x5633e910UL, 0x5b38e719UL, 0x4c25f502UL, 0x412efb0bUL, -0x618c9ad7UL, 0x6c8794deUL, 0x7b9a86c5UL, 0x769188ccUL, 0x55a0a2f3UL, 0x58abacfaUL, 0x4fb6bee1UL, 0x42bdb0e8UL, -0x09d4ea9fUL, 0x04dfe496UL, 0x13c2f68dUL, 0x1ec9f884UL, 0x3df8d2bbUL, 0x30f3dcb2UL, 0x27eecea9UL, 0x2ae5c0a0UL, -0xb13c7a47UL, 0xbc37744eUL, 0xab2a6655UL, 0xa621685cUL, 0x85104263UL, 0x881b4c6aUL, 0x9f065e71UL, 0x920d5078UL, -0xd9640a0fUL, 0xd46f0406UL, 0xc372161dUL, 0xce791814UL, 0xed48322bUL, 0xe0433c22UL, 0xf75e2e39UL, 0xfa552030UL, -0xb701ec9aUL, 0xba0ae293UL, 0xad17f088UL, 0xa01cfe81UL, 0x832dd4beUL, 0x8e26dab7UL, 0x993bc8acUL, 0x9430c6a5UL, -0xdf599cd2UL, 0xd25292dbUL, 0xc54f80c0UL, 0xc8448ec9UL, 0xeb75a4f6UL, 0xe67eaaffUL, 0xf163b8e4UL, 0xfc68b6edUL, -0x67b10c0aUL, 0x6aba0203UL, 0x7da71018UL, 0x70ac1e11UL, 0x539d342eUL, 0x5e963a27UL, 0x498b283cUL, 0x44802635UL, -0x0fe97c42UL, 0x02e2724bUL, 0x15ff6050UL, 0x18f46e59UL, 0x3bc54466UL, 0x36ce4a6fUL, 0x21d35874UL, 0x2cd8567dUL, -0x0c7a37a1UL, 0x017139a8UL, 0x166c2bb3UL, 0x1b6725baUL, 0x38560f85UL, 0x355d018cUL, 0x22401397UL, 0x2f4b1d9eUL, -0x642247e9UL, 0x692949e0UL, 0x7e345bfbUL, 0x733f55f2UL, 0x500e7fcdUL, 0x5d0571c4UL, 0x4a1863dfUL, 0x47136dd6UL, -0xdccad731UL, 0xd1c1d938UL, 0xc6dccb23UL, 0xcbd7c52aUL, 0xe8e6ef15UL, 0xe5ede11cUL, 0xf2f0f307UL, 0xfffbfd0eUL, -0xb492a779UL, 0xb999a970UL, 0xae84bb6bUL, 0xa38fb562UL, 0x80be9f5dUL, 0x8db59154UL, 0x9aa8834fUL, 0x97a38d46UL -}; - -static const ulong32 Tks3[] = { -0x00000000UL, 0x090d0b0eUL, 0x121a161cUL, 0x1b171d12UL, 0x24342c38UL, 0x2d392736UL, 0x362e3a24UL, 0x3f23312aUL, -0x48685870UL, 0x4165537eUL, 0x5a724e6cUL, 0x537f4562UL, 0x6c5c7448UL, 0x65517f46UL, 0x7e466254UL, 0x774b695aUL, -0x90d0b0e0UL, 0x99ddbbeeUL, 0x82caa6fcUL, 0x8bc7adf2UL, 0xb4e49cd8UL, 0xbde997d6UL, 0xa6fe8ac4UL, 0xaff381caUL, -0xd8b8e890UL, 0xd1b5e39eUL, 0xcaa2fe8cUL, 0xc3aff582UL, 0xfc8cc4a8UL, 0xf581cfa6UL, 0xee96d2b4UL, 0xe79bd9baUL, -0x3bbb7bdbUL, 0x32b670d5UL, 0x29a16dc7UL, 0x20ac66c9UL, 0x1f8f57e3UL, 0x16825cedUL, 0x0d9541ffUL, 0x04984af1UL, -0x73d323abUL, 0x7ade28a5UL, 0x61c935b7UL, 0x68c43eb9UL, 0x57e70f93UL, 0x5eea049dUL, 0x45fd198fUL, 0x4cf01281UL, -0xab6bcb3bUL, 0xa266c035UL, 0xb971dd27UL, 0xb07cd629UL, 0x8f5fe703UL, 0x8652ec0dUL, 0x9d45f11fUL, 0x9448fa11UL, -0xe303934bUL, 0xea0e9845UL, 0xf1198557UL, 0xf8148e59UL, 0xc737bf73UL, 0xce3ab47dUL, 0xd52da96fUL, 0xdc20a261UL, -0x766df6adUL, 0x7f60fda3UL, 0x6477e0b1UL, 0x6d7aebbfUL, 0x5259da95UL, 0x5b54d19bUL, 0x4043cc89UL, 0x494ec787UL, -0x3e05aeddUL, 0x3708a5d3UL, 0x2c1fb8c1UL, 0x2512b3cfUL, 0x1a3182e5UL, 0x133c89ebUL, 0x082b94f9UL, 0x01269ff7UL, -0xe6bd464dUL, 0xefb04d43UL, 0xf4a75051UL, 0xfdaa5b5fUL, 0xc2896a75UL, 0xcb84617bUL, 0xd0937c69UL, 0xd99e7767UL, -0xaed51e3dUL, 0xa7d81533UL, 0xbccf0821UL, 0xb5c2032fUL, 0x8ae13205UL, 0x83ec390bUL, 0x98fb2419UL, 0x91f62f17UL, -0x4dd68d76UL, 0x44db8678UL, 0x5fcc9b6aUL, 0x56c19064UL, 0x69e2a14eUL, 0x60efaa40UL, 0x7bf8b752UL, 0x72f5bc5cUL, -0x05bed506UL, 0x0cb3de08UL, 0x17a4c31aUL, 0x1ea9c814UL, 0x218af93eUL, 0x2887f230UL, 0x3390ef22UL, 0x3a9de42cUL, -0xdd063d96UL, 0xd40b3698UL, 0xcf1c2b8aUL, 0xc6112084UL, 0xf93211aeUL, 0xf03f1aa0UL, 0xeb2807b2UL, 0xe2250cbcUL, -0x956e65e6UL, 0x9c636ee8UL, 0x877473faUL, 0x8e7978f4UL, 0xb15a49deUL, 0xb85742d0UL, 0xa3405fc2UL, 0xaa4d54ccUL, -0xecdaf741UL, 0xe5d7fc4fUL, 0xfec0e15dUL, 0xf7cdea53UL, 0xc8eedb79UL, 0xc1e3d077UL, 0xdaf4cd65UL, 0xd3f9c66bUL, -0xa4b2af31UL, 0xadbfa43fUL, 0xb6a8b92dUL, 0xbfa5b223UL, 0x80868309UL, 0x898b8807UL, 0x929c9515UL, 0x9b919e1bUL, -0x7c0a47a1UL, 0x75074cafUL, 0x6e1051bdUL, 0x671d5ab3UL, 0x583e6b99UL, 0x51336097UL, 0x4a247d85UL, 0x4329768bUL, -0x34621fd1UL, 0x3d6f14dfUL, 0x267809cdUL, 0x2f7502c3UL, 0x105633e9UL, 0x195b38e7UL, 0x024c25f5UL, 0x0b412efbUL, -0xd7618c9aUL, 0xde6c8794UL, 0xc57b9a86UL, 0xcc769188UL, 0xf355a0a2UL, 0xfa58abacUL, 0xe14fb6beUL, 0xe842bdb0UL, -0x9f09d4eaUL, 0x9604dfe4UL, 0x8d13c2f6UL, 0x841ec9f8UL, 0xbb3df8d2UL, 0xb230f3dcUL, 0xa927eeceUL, 0xa02ae5c0UL, -0x47b13c7aUL, 0x4ebc3774UL, 0x55ab2a66UL, 0x5ca62168UL, 0x63851042UL, 0x6a881b4cUL, 0x719f065eUL, 0x78920d50UL, -0x0fd9640aUL, 0x06d46f04UL, 0x1dc37216UL, 0x14ce7918UL, 0x2bed4832UL, 0x22e0433cUL, 0x39f75e2eUL, 0x30fa5520UL, -0x9ab701ecUL, 0x93ba0ae2UL, 0x88ad17f0UL, 0x81a01cfeUL, 0xbe832dd4UL, 0xb78e26daUL, 0xac993bc8UL, 0xa59430c6UL, -0xd2df599cUL, 0xdbd25292UL, 0xc0c54f80UL, 0xc9c8448eUL, 0xf6eb75a4UL, 0xffe67eaaUL, 0xe4f163b8UL, 0xedfc68b6UL, -0x0a67b10cUL, 0x036aba02UL, 0x187da710UL, 0x1170ac1eUL, 0x2e539d34UL, 0x275e963aUL, 0x3c498b28UL, 0x35448026UL, -0x420fe97cUL, 0x4b02e272UL, 0x5015ff60UL, 0x5918f46eUL, 0x663bc544UL, 0x6f36ce4aUL, 0x7421d358UL, 0x7d2cd856UL, -0xa10c7a37UL, 0xa8017139UL, 0xb3166c2bUL, 0xba1b6725UL, 0x8538560fUL, 0x8c355d01UL, 0x97224013UL, 0x9e2f4b1dUL, -0xe9642247UL, 0xe0692949UL, 0xfb7e345bUL, 0xf2733f55UL, 0xcd500e7fUL, 0xc45d0571UL, 0xdf4a1863UL, 0xd647136dUL, -0x31dccad7UL, 0x38d1c1d9UL, 0x23c6dccbUL, 0x2acbd7c5UL, 0x15e8e6efUL, 0x1ce5ede1UL, 0x07f2f0f3UL, 0x0efffbfdUL, -0x79b492a7UL, 0x70b999a9UL, 0x6bae84bbUL, 0x62a38fb5UL, 0x5d80be9fUL, 0x548db591UL, 0x4f9aa883UL, 0x4697a38dUL -}; - -#endif /* ENCRYPT_ONLY */ - -#endif /* SMALL CODE */ - -#ifndef PELI_TAB -static const ulong32 rcon[] = { - 0x01000000UL, 0x02000000UL, 0x04000000UL, 0x08000000UL, - 0x10000000UL, 0x20000000UL, 0x40000000UL, 0x80000000UL, - 0x1B000000UL, 0x36000000UL, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */ -}; -#endif - -#endif /* __LTC_AES_TAB_C__ */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/anubis.c b/src/libtomcrypt/src/ciphers/anubis.c deleted file mode 100644 index 8bb8f727f9..0000000000 --- a/src/libtomcrypt/src/ciphers/anubis.c +++ /dev/null @@ -1,1558 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file anubis.c - Anubis implementation derived from public domain source - Authors: Paulo S.L.M. Barreto and Vincent Rijmen. -*/ - -#include "tomcrypt.h" - -#ifdef LTC_ANUBIS - -const struct ltc_cipher_descriptor anubis_desc = { - "anubis", - 19, - 16, 40, 16, 12, - &anubis_setup, - &anubis_ecb_encrypt, - &anubis_ecb_decrypt, - &anubis_test, - &anubis_done, - &anubis_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -#define MIN_N 4 -#define MAX_N 10 -#define MIN_ROUNDS (8 + MIN_N) -#define MAX_ROUNDS (8 + MAX_N) -#define MIN_KEYSIZEB (4*MIN_N) -#define MAX_KEYSIZEB (4*MAX_N) -#define BLOCKSIZE 128 -#define BLOCKSIZEB (BLOCKSIZE/8) - - -/* - * Though Anubis is endianness-neutral, the encryption tables are listed - * in BIG-ENDIAN format, which is adopted throughout this implementation - * (but little-endian notation would be equally suitable if consistently - * employed). - */ -#if defined(LTC_ANUBIS_TWEAK) - -static const ulong32 T0[256] = { - 0xba69d2bbU, 0x54a84de5U, 0x2f5ebce2U, 0x74e8cd25U, - 0x53a651f7U, 0xd3bb6bd0U, 0xd2b96fd6U, 0x4d9a29b3U, - 0x50a05dfdU, 0xac458acfU, 0x8d070e09U, 0xbf63c6a5U, - 0x70e0dd3dU, 0x52a455f1U, 0x9a29527bU, 0x4c982db5U, - 0xeac98f46U, 0xd5b773c4U, 0x97336655U, 0xd1bf63dcU, - 0x3366ccaaU, 0x51a259fbU, 0x5bb671c7U, 0xa651a2f3U, - 0xdea15ffeU, 0x48903dadU, 0xa84d9ad7U, 0x992f5e71U, - 0xdbab4be0U, 0x3264c8acU, 0xb773e695U, 0xfce5d732U, - 0xe3dbab70U, 0x9e214263U, 0x913f7e41U, 0x9b2b567dU, - 0xe2d9af76U, 0xbb6bd6bdU, 0x4182199bU, 0x6edca579U, - 0xa557aef9U, 0xcb8b0b80U, 0x6bd6b167U, 0x95376e59U, - 0xa15fbee1U, 0xf3fbeb10U, 0xb17ffe81U, 0x0204080cU, - 0xcc851792U, 0xc49537a2U, 0x1d3a744eU, 0x14285078U, - 0xc39b2bb0U, 0x63c69157U, 0xdaa94fe6U, 0x5dba69d3U, - 0x5fbe61dfU, 0xdca557f2U, 0x7dfae913U, 0xcd871394U, - 0x7ffee11fU, 0x5ab475c1U, 0x6cd8ad75U, 0x5cb86dd5U, - 0xf7f3fb08U, 0x264c98d4U, 0xffe3db38U, 0xedc79354U, - 0xe8cd874aU, 0x9d274e69U, 0x6fdea17fU, 0x8e010203U, - 0x19326456U, 0xa05dbae7U, 0xf0fde71aU, 0x890f1e11U, - 0x0f1e3c22U, 0x070e1c12U, 0xaf4386c5U, 0xfbebcb20U, - 0x08102030U, 0x152a547eU, 0x0d1a342eU, 0x04081018U, - 0x01020406U, 0x64c88d45U, 0xdfa35bf8U, 0x76ecc529U, - 0x79f2f90bU, 0xdda753f4U, 0x3d7af48eU, 0x162c5874U, - 0x3f7efc82U, 0x376edcb2U, 0x6ddaa973U, 0x3870e090U, - 0xb96fdeb1U, 0x73e6d137U, 0xe9cf834cU, 0x356ad4beU, - 0x55aa49e3U, 0x71e2d93bU, 0x7bf6f107U, 0x8c050a0fU, - 0x72e4d531U, 0x880d1a17U, 0xf6f1ff0eU, 0x2a54a8fcU, - 0x3e7cf884U, 0x5ebc65d9U, 0x274e9cd2U, 0x468c0589U, - 0x0c183028U, 0x65ca8943U, 0x68d0bd6dU, 0x61c2995bU, - 0x03060c0aU, 0xc19f23bcU, 0x57ae41efU, 0xd6b17fceU, - 0xd9af43ecU, 0x58b07dcdU, 0xd8ad47eaU, 0x66cc8549U, - 0xd7b37bc8U, 0x3a74e89cU, 0xc88d078aU, 0x3c78f088U, - 0xfae9cf26U, 0x96316253U, 0xa753a6f5U, 0x982d5a77U, - 0xecc59752U, 0xb86ddab7U, 0xc7933ba8U, 0xae4182c3U, - 0x69d2b96bU, 0x4b9631a7U, 0xab4b96ddU, 0xa94f9ed1U, - 0x67ce814fU, 0x0a14283cU, 0x478e018fU, 0xf2f9ef16U, - 0xb577ee99U, 0x224488ccU, 0xe5d7b364U, 0xeec19f5eU, - 0xbe61c2a3U, 0x2b56acfaU, 0x811f3e21U, 0x1224486cU, - 0x831b362dU, 0x1b366c5aU, 0x0e1c3824U, 0x23468ccaU, - 0xf5f7f304U, 0x458a0983U, 0x214284c6U, 0xce811f9eU, - 0x499239abU, 0x2c58b0e8U, 0xf9efc32cU, 0xe6d1bf6eU, - 0xb671e293U, 0x2850a0f0U, 0x172e5c72U, 0x8219322bU, - 0x1a34685cU, 0x8b0b161dU, 0xfee1df3eU, 0x8a09121bU, - 0x09122436U, 0xc98f038cU, 0x87132635U, 0x4e9c25b9U, - 0xe1dfa37cU, 0x2e5cb8e4U, 0xe4d5b762U, 0xe0dda77aU, - 0xebcb8b40U, 0x903d7a47U, 0xa455aaffU, 0x1e3c7844U, - 0x85172e39U, 0x60c09d5dU, 0x00000000U, 0x254a94deU, - 0xf4f5f702U, 0xf1ffe31cU, 0x94356a5fU, 0x0b162c3aU, - 0xe7d3bb68U, 0x75eac923U, 0xefc39b58U, 0x3468d0b8U, - 0x3162c4a6U, 0xd4b577c2U, 0xd0bd67daU, 0x86112233U, - 0x7efce519U, 0xad478ec9U, 0xfde7d334U, 0x2952a4f6U, - 0x3060c0a0U, 0x3b76ec9aU, 0x9f234665U, 0xf8edc72aU, - 0xc6913faeU, 0x13264c6aU, 0x060c1814U, 0x050a141eU, - 0xc59733a4U, 0x11224466U, 0x77eec12fU, 0x7cf8ed15U, - 0x7af4f501U, 0x78f0fd0dU, 0x366cd8b4U, 0x1c387048U, - 0x3972e496U, 0x59b279cbU, 0x18306050U, 0x56ac45e9U, - 0xb37bf68dU, 0xb07dfa87U, 0x244890d8U, 0x204080c0U, - 0xb279f28bU, 0x9239724bU, 0xa35bb6edU, 0xc09d27baU, - 0x44880d85U, 0x62c49551U, 0x10204060U, 0xb475ea9fU, - 0x84152a3fU, 0x43861197U, 0x933b764dU, 0xc2992fb6U, - 0x4a9435a1U, 0xbd67cea9U, 0x8f030605U, 0x2d5ab4eeU, - 0xbc65caafU, 0x9c254a6fU, 0x6ad4b561U, 0x40801d9dU, - 0xcf831b98U, 0xa259b2ebU, 0x801d3a27U, 0x4f9e21bfU, - 0x1f3e7c42U, 0xca890f86U, 0xaa4992dbU, 0x42841591U, -}; - -static const ulong32 T1[256] = { - 0x69babbd2U, 0xa854e54dU, 0x5e2fe2bcU, 0xe87425cdU, - 0xa653f751U, 0xbbd3d06bU, 0xb9d2d66fU, 0x9a4db329U, - 0xa050fd5dU, 0x45accf8aU, 0x078d090eU, 0x63bfa5c6U, - 0xe0703dddU, 0xa452f155U, 0x299a7b52U, 0x984cb52dU, - 0xc9ea468fU, 0xb7d5c473U, 0x33975566U, 0xbfd1dc63U, - 0x6633aaccU, 0xa251fb59U, 0xb65bc771U, 0x51a6f3a2U, - 0xa1defe5fU, 0x9048ad3dU, 0x4da8d79aU, 0x2f99715eU, - 0xabdbe04bU, 0x6432acc8U, 0x73b795e6U, 0xe5fc32d7U, - 0xdbe370abU, 0x219e6342U, 0x3f91417eU, 0x2b9b7d56U, - 0xd9e276afU, 0x6bbbbdd6U, 0x82419b19U, 0xdc6e79a5U, - 0x57a5f9aeU, 0x8bcb800bU, 0xd66b67b1U, 0x3795596eU, - 0x5fa1e1beU, 0xfbf310ebU, 0x7fb181feU, 0x04020c08U, - 0x85cc9217U, 0x95c4a237U, 0x3a1d4e74U, 0x28147850U, - 0x9bc3b02bU, 0xc6635791U, 0xa9dae64fU, 0xba5dd369U, - 0xbe5fdf61U, 0xa5dcf257U, 0xfa7d13e9U, 0x87cd9413U, - 0xfe7f1fe1U, 0xb45ac175U, 0xd86c75adU, 0xb85cd56dU, - 0xf3f708fbU, 0x4c26d498U, 0xe3ff38dbU, 0xc7ed5493U, - 0xcde84a87U, 0x279d694eU, 0xde6f7fa1U, 0x018e0302U, - 0x32195664U, 0x5da0e7baU, 0xfdf01ae7U, 0x0f89111eU, - 0x1e0f223cU, 0x0e07121cU, 0x43afc586U, 0xebfb20cbU, - 0x10083020U, 0x2a157e54U, 0x1a0d2e34U, 0x08041810U, - 0x02010604U, 0xc864458dU, 0xa3dff85bU, 0xec7629c5U, - 0xf2790bf9U, 0xa7ddf453U, 0x7a3d8ef4U, 0x2c167458U, - 0x7e3f82fcU, 0x6e37b2dcU, 0xda6d73a9U, 0x703890e0U, - 0x6fb9b1deU, 0xe67337d1U, 0xcfe94c83U, 0x6a35bed4U, - 0xaa55e349U, 0xe2713bd9U, 0xf67b07f1U, 0x058c0f0aU, - 0xe47231d5U, 0x0d88171aU, 0xf1f60effU, 0x542afca8U, - 0x7c3e84f8U, 0xbc5ed965U, 0x4e27d29cU, 0x8c468905U, - 0x180c2830U, 0xca654389U, 0xd0686dbdU, 0xc2615b99U, - 0x06030a0cU, 0x9fc1bc23U, 0xae57ef41U, 0xb1d6ce7fU, - 0xafd9ec43U, 0xb058cd7dU, 0xadd8ea47U, 0xcc664985U, - 0xb3d7c87bU, 0x743a9ce8U, 0x8dc88a07U, 0x783c88f0U, - 0xe9fa26cfU, 0x31965362U, 0x53a7f5a6U, 0x2d98775aU, - 0xc5ec5297U, 0x6db8b7daU, 0x93c7a83bU, 0x41aec382U, - 0xd2696bb9U, 0x964ba731U, 0x4babdd96U, 0x4fa9d19eU, - 0xce674f81U, 0x140a3c28U, 0x8e478f01U, 0xf9f216efU, - 0x77b599eeU, 0x4422cc88U, 0xd7e564b3U, 0xc1ee5e9fU, - 0x61bea3c2U, 0x562bfaacU, 0x1f81213eU, 0x24126c48U, - 0x1b832d36U, 0x361b5a6cU, 0x1c0e2438U, 0x4623ca8cU, - 0xf7f504f3U, 0x8a458309U, 0x4221c684U, 0x81ce9e1fU, - 0x9249ab39U, 0x582ce8b0U, 0xeff92cc3U, 0xd1e66ebfU, - 0x71b693e2U, 0x5028f0a0U, 0x2e17725cU, 0x19822b32U, - 0x341a5c68U, 0x0b8b1d16U, 0xe1fe3edfU, 0x098a1b12U, - 0x12093624U, 0x8fc98c03U, 0x13873526U, 0x9c4eb925U, - 0xdfe17ca3U, 0x5c2ee4b8U, 0xd5e462b7U, 0xdde07aa7U, - 0xcbeb408bU, 0x3d90477aU, 0x55a4ffaaU, 0x3c1e4478U, - 0x1785392eU, 0xc0605d9dU, 0x00000000U, 0x4a25de94U, - 0xf5f402f7U, 0xfff11ce3U, 0x35945f6aU, 0x160b3a2cU, - 0xd3e768bbU, 0xea7523c9U, 0xc3ef589bU, 0x6834b8d0U, - 0x6231a6c4U, 0xb5d4c277U, 0xbdd0da67U, 0x11863322U, - 0xfc7e19e5U, 0x47adc98eU, 0xe7fd34d3U, 0x5229f6a4U, - 0x6030a0c0U, 0x763b9aecU, 0x239f6546U, 0xedf82ac7U, - 0x91c6ae3fU, 0x26136a4cU, 0x0c061418U, 0x0a051e14U, - 0x97c5a433U, 0x22116644U, 0xee772fc1U, 0xf87c15edU, - 0xf47a01f5U, 0xf0780dfdU, 0x6c36b4d8U, 0x381c4870U, - 0x723996e4U, 0xb259cb79U, 0x30185060U, 0xac56e945U, - 0x7bb38df6U, 0x7db087faU, 0x4824d890U, 0x4020c080U, - 0x79b28bf2U, 0x39924b72U, 0x5ba3edb6U, 0x9dc0ba27U, - 0x8844850dU, 0xc4625195U, 0x20106040U, 0x75b49feaU, - 0x15843f2aU, 0x86439711U, 0x3b934d76U, 0x99c2b62fU, - 0x944aa135U, 0x67bda9ceU, 0x038f0506U, 0x5a2deeb4U, - 0x65bcafcaU, 0x259c6f4aU, 0xd46a61b5U, 0x80409d1dU, - 0x83cf981bU, 0x59a2ebb2U, 0x1d80273aU, 0x9e4fbf21U, - 0x3e1f427cU, 0x89ca860fU, 0x49aadb92U, 0x84429115U, -}; - -static const ulong32 T2[256] = { - 0xd2bbba69U, 0x4de554a8U, 0xbce22f5eU, 0xcd2574e8U, - 0x51f753a6U, 0x6bd0d3bbU, 0x6fd6d2b9U, 0x29b34d9aU, - 0x5dfd50a0U, 0x8acfac45U, 0x0e098d07U, 0xc6a5bf63U, - 0xdd3d70e0U, 0x55f152a4U, 0x527b9a29U, 0x2db54c98U, - 0x8f46eac9U, 0x73c4d5b7U, 0x66559733U, 0x63dcd1bfU, - 0xccaa3366U, 0x59fb51a2U, 0x71c75bb6U, 0xa2f3a651U, - 0x5ffedea1U, 0x3dad4890U, 0x9ad7a84dU, 0x5e71992fU, - 0x4be0dbabU, 0xc8ac3264U, 0xe695b773U, 0xd732fce5U, - 0xab70e3dbU, 0x42639e21U, 0x7e41913fU, 0x567d9b2bU, - 0xaf76e2d9U, 0xd6bdbb6bU, 0x199b4182U, 0xa5796edcU, - 0xaef9a557U, 0x0b80cb8bU, 0xb1676bd6U, 0x6e599537U, - 0xbee1a15fU, 0xeb10f3fbU, 0xfe81b17fU, 0x080c0204U, - 0x1792cc85U, 0x37a2c495U, 0x744e1d3aU, 0x50781428U, - 0x2bb0c39bU, 0x915763c6U, 0x4fe6daa9U, 0x69d35dbaU, - 0x61df5fbeU, 0x57f2dca5U, 0xe9137dfaU, 0x1394cd87U, - 0xe11f7ffeU, 0x75c15ab4U, 0xad756cd8U, 0x6dd55cb8U, - 0xfb08f7f3U, 0x98d4264cU, 0xdb38ffe3U, 0x9354edc7U, - 0x874ae8cdU, 0x4e699d27U, 0xa17f6fdeU, 0x02038e01U, - 0x64561932U, 0xbae7a05dU, 0xe71af0fdU, 0x1e11890fU, - 0x3c220f1eU, 0x1c12070eU, 0x86c5af43U, 0xcb20fbebU, - 0x20300810U, 0x547e152aU, 0x342e0d1aU, 0x10180408U, - 0x04060102U, 0x8d4564c8U, 0x5bf8dfa3U, 0xc52976ecU, - 0xf90b79f2U, 0x53f4dda7U, 0xf48e3d7aU, 0x5874162cU, - 0xfc823f7eU, 0xdcb2376eU, 0xa9736ddaU, 0xe0903870U, - 0xdeb1b96fU, 0xd13773e6U, 0x834ce9cfU, 0xd4be356aU, - 0x49e355aaU, 0xd93b71e2U, 0xf1077bf6U, 0x0a0f8c05U, - 0xd53172e4U, 0x1a17880dU, 0xff0ef6f1U, 0xa8fc2a54U, - 0xf8843e7cU, 0x65d95ebcU, 0x9cd2274eU, 0x0589468cU, - 0x30280c18U, 0x894365caU, 0xbd6d68d0U, 0x995b61c2U, - 0x0c0a0306U, 0x23bcc19fU, 0x41ef57aeU, 0x7fced6b1U, - 0x43ecd9afU, 0x7dcd58b0U, 0x47ead8adU, 0x854966ccU, - 0x7bc8d7b3U, 0xe89c3a74U, 0x078ac88dU, 0xf0883c78U, - 0xcf26fae9U, 0x62539631U, 0xa6f5a753U, 0x5a77982dU, - 0x9752ecc5U, 0xdab7b86dU, 0x3ba8c793U, 0x82c3ae41U, - 0xb96b69d2U, 0x31a74b96U, 0x96ddab4bU, 0x9ed1a94fU, - 0x814f67ceU, 0x283c0a14U, 0x018f478eU, 0xef16f2f9U, - 0xee99b577U, 0x88cc2244U, 0xb364e5d7U, 0x9f5eeec1U, - 0xc2a3be61U, 0xacfa2b56U, 0x3e21811fU, 0x486c1224U, - 0x362d831bU, 0x6c5a1b36U, 0x38240e1cU, 0x8cca2346U, - 0xf304f5f7U, 0x0983458aU, 0x84c62142U, 0x1f9ece81U, - 0x39ab4992U, 0xb0e82c58U, 0xc32cf9efU, 0xbf6ee6d1U, - 0xe293b671U, 0xa0f02850U, 0x5c72172eU, 0x322b8219U, - 0x685c1a34U, 0x161d8b0bU, 0xdf3efee1U, 0x121b8a09U, - 0x24360912U, 0x038cc98fU, 0x26358713U, 0x25b94e9cU, - 0xa37ce1dfU, 0xb8e42e5cU, 0xb762e4d5U, 0xa77ae0ddU, - 0x8b40ebcbU, 0x7a47903dU, 0xaaffa455U, 0x78441e3cU, - 0x2e398517U, 0x9d5d60c0U, 0x00000000U, 0x94de254aU, - 0xf702f4f5U, 0xe31cf1ffU, 0x6a5f9435U, 0x2c3a0b16U, - 0xbb68e7d3U, 0xc92375eaU, 0x9b58efc3U, 0xd0b83468U, - 0xc4a63162U, 0x77c2d4b5U, 0x67dad0bdU, 0x22338611U, - 0xe5197efcU, 0x8ec9ad47U, 0xd334fde7U, 0xa4f62952U, - 0xc0a03060U, 0xec9a3b76U, 0x46659f23U, 0xc72af8edU, - 0x3faec691U, 0x4c6a1326U, 0x1814060cU, 0x141e050aU, - 0x33a4c597U, 0x44661122U, 0xc12f77eeU, 0xed157cf8U, - 0xf5017af4U, 0xfd0d78f0U, 0xd8b4366cU, 0x70481c38U, - 0xe4963972U, 0x79cb59b2U, 0x60501830U, 0x45e956acU, - 0xf68db37bU, 0xfa87b07dU, 0x90d82448U, 0x80c02040U, - 0xf28bb279U, 0x724b9239U, 0xb6eda35bU, 0x27bac09dU, - 0x0d854488U, 0x955162c4U, 0x40601020U, 0xea9fb475U, - 0x2a3f8415U, 0x11974386U, 0x764d933bU, 0x2fb6c299U, - 0x35a14a94U, 0xcea9bd67U, 0x06058f03U, 0xb4ee2d5aU, - 0xcaafbc65U, 0x4a6f9c25U, 0xb5616ad4U, 0x1d9d4080U, - 0x1b98cf83U, 0xb2eba259U, 0x3a27801dU, 0x21bf4f9eU, - 0x7c421f3eU, 0x0f86ca89U, 0x92dbaa49U, 0x15914284U, -}; - -static const ulong32 T3[256] = { - 0xbbd269baU, 0xe54da854U, 0xe2bc5e2fU, 0x25cde874U, - 0xf751a653U, 0xd06bbbd3U, 0xd66fb9d2U, 0xb3299a4dU, - 0xfd5da050U, 0xcf8a45acU, 0x090e078dU, 0xa5c663bfU, - 0x3ddde070U, 0xf155a452U, 0x7b52299aU, 0xb52d984cU, - 0x468fc9eaU, 0xc473b7d5U, 0x55663397U, 0xdc63bfd1U, - 0xaacc6633U, 0xfb59a251U, 0xc771b65bU, 0xf3a251a6U, - 0xfe5fa1deU, 0xad3d9048U, 0xd79a4da8U, 0x715e2f99U, - 0xe04babdbU, 0xacc86432U, 0x95e673b7U, 0x32d7e5fcU, - 0x70abdbe3U, 0x6342219eU, 0x417e3f91U, 0x7d562b9bU, - 0x76afd9e2U, 0xbdd66bbbU, 0x9b198241U, 0x79a5dc6eU, - 0xf9ae57a5U, 0x800b8bcbU, 0x67b1d66bU, 0x596e3795U, - 0xe1be5fa1U, 0x10ebfbf3U, 0x81fe7fb1U, 0x0c080402U, - 0x921785ccU, 0xa23795c4U, 0x4e743a1dU, 0x78502814U, - 0xb02b9bc3U, 0x5791c663U, 0xe64fa9daU, 0xd369ba5dU, - 0xdf61be5fU, 0xf257a5dcU, 0x13e9fa7dU, 0x941387cdU, - 0x1fe1fe7fU, 0xc175b45aU, 0x75add86cU, 0xd56db85cU, - 0x08fbf3f7U, 0xd4984c26U, 0x38dbe3ffU, 0x5493c7edU, - 0x4a87cde8U, 0x694e279dU, 0x7fa1de6fU, 0x0302018eU, - 0x56643219U, 0xe7ba5da0U, 0x1ae7fdf0U, 0x111e0f89U, - 0x223c1e0fU, 0x121c0e07U, 0xc58643afU, 0x20cbebfbU, - 0x30201008U, 0x7e542a15U, 0x2e341a0dU, 0x18100804U, - 0x06040201U, 0x458dc864U, 0xf85ba3dfU, 0x29c5ec76U, - 0x0bf9f279U, 0xf453a7ddU, 0x8ef47a3dU, 0x74582c16U, - 0x82fc7e3fU, 0xb2dc6e37U, 0x73a9da6dU, 0x90e07038U, - 0xb1de6fb9U, 0x37d1e673U, 0x4c83cfe9U, 0xbed46a35U, - 0xe349aa55U, 0x3bd9e271U, 0x07f1f67bU, 0x0f0a058cU, - 0x31d5e472U, 0x171a0d88U, 0x0efff1f6U, 0xfca8542aU, - 0x84f87c3eU, 0xd965bc5eU, 0xd29c4e27U, 0x89058c46U, - 0x2830180cU, 0x4389ca65U, 0x6dbdd068U, 0x5b99c261U, - 0x0a0c0603U, 0xbc239fc1U, 0xef41ae57U, 0xce7fb1d6U, - 0xec43afd9U, 0xcd7db058U, 0xea47add8U, 0x4985cc66U, - 0xc87bb3d7U, 0x9ce8743aU, 0x8a078dc8U, 0x88f0783cU, - 0x26cfe9faU, 0x53623196U, 0xf5a653a7U, 0x775a2d98U, - 0x5297c5ecU, 0xb7da6db8U, 0xa83b93c7U, 0xc38241aeU, - 0x6bb9d269U, 0xa731964bU, 0xdd964babU, 0xd19e4fa9U, - 0x4f81ce67U, 0x3c28140aU, 0x8f018e47U, 0x16eff9f2U, - 0x99ee77b5U, 0xcc884422U, 0x64b3d7e5U, 0x5e9fc1eeU, - 0xa3c261beU, 0xfaac562bU, 0x213e1f81U, 0x6c482412U, - 0x2d361b83U, 0x5a6c361bU, 0x24381c0eU, 0xca8c4623U, - 0x04f3f7f5U, 0x83098a45U, 0xc6844221U, 0x9e1f81ceU, - 0xab399249U, 0xe8b0582cU, 0x2cc3eff9U, 0x6ebfd1e6U, - 0x93e271b6U, 0xf0a05028U, 0x725c2e17U, 0x2b321982U, - 0x5c68341aU, 0x1d160b8bU, 0x3edfe1feU, 0x1b12098aU, - 0x36241209U, 0x8c038fc9U, 0x35261387U, 0xb9259c4eU, - 0x7ca3dfe1U, 0xe4b85c2eU, 0x62b7d5e4U, 0x7aa7dde0U, - 0x408bcbebU, 0x477a3d90U, 0xffaa55a4U, 0x44783c1eU, - 0x392e1785U, 0x5d9dc060U, 0x00000000U, 0xde944a25U, - 0x02f7f5f4U, 0x1ce3fff1U, 0x5f6a3594U, 0x3a2c160bU, - 0x68bbd3e7U, 0x23c9ea75U, 0x589bc3efU, 0xb8d06834U, - 0xa6c46231U, 0xc277b5d4U, 0xda67bdd0U, 0x33221186U, - 0x19e5fc7eU, 0xc98e47adU, 0x34d3e7fdU, 0xf6a45229U, - 0xa0c06030U, 0x9aec763bU, 0x6546239fU, 0x2ac7edf8U, - 0xae3f91c6U, 0x6a4c2613U, 0x14180c06U, 0x1e140a05U, - 0xa43397c5U, 0x66442211U, 0x2fc1ee77U, 0x15edf87cU, - 0x01f5f47aU, 0x0dfdf078U, 0xb4d86c36U, 0x4870381cU, - 0x96e47239U, 0xcb79b259U, 0x50603018U, 0xe945ac56U, - 0x8df67bb3U, 0x87fa7db0U, 0xd8904824U, 0xc0804020U, - 0x8bf279b2U, 0x4b723992U, 0xedb65ba3U, 0xba279dc0U, - 0x850d8844U, 0x5195c462U, 0x60402010U, 0x9fea75b4U, - 0x3f2a1584U, 0x97118643U, 0x4d763b93U, 0xb62f99c2U, - 0xa135944aU, 0xa9ce67bdU, 0x0506038fU, 0xeeb45a2dU, - 0xafca65bcU, 0x6f4a259cU, 0x61b5d46aU, 0x9d1d8040U, - 0x981b83cfU, 0xebb259a2U, 0x273a1d80U, 0xbf219e4fU, - 0x427c3e1fU, 0x860f89caU, 0xdb9249aaU, 0x91158442U, -}; - -static const ulong32 T4[256] = { - 0xbabababaU, 0x54545454U, 0x2f2f2f2fU, 0x74747474U, - 0x53535353U, 0xd3d3d3d3U, 0xd2d2d2d2U, 0x4d4d4d4dU, - 0x50505050U, 0xacacacacU, 0x8d8d8d8dU, 0xbfbfbfbfU, - 0x70707070U, 0x52525252U, 0x9a9a9a9aU, 0x4c4c4c4cU, - 0xeaeaeaeaU, 0xd5d5d5d5U, 0x97979797U, 0xd1d1d1d1U, - 0x33333333U, 0x51515151U, 0x5b5b5b5bU, 0xa6a6a6a6U, - 0xdedededeU, 0x48484848U, 0xa8a8a8a8U, 0x99999999U, - 0xdbdbdbdbU, 0x32323232U, 0xb7b7b7b7U, 0xfcfcfcfcU, - 0xe3e3e3e3U, 0x9e9e9e9eU, 0x91919191U, 0x9b9b9b9bU, - 0xe2e2e2e2U, 0xbbbbbbbbU, 0x41414141U, 0x6e6e6e6eU, - 0xa5a5a5a5U, 0xcbcbcbcbU, 0x6b6b6b6bU, 0x95959595U, - 0xa1a1a1a1U, 0xf3f3f3f3U, 0xb1b1b1b1U, 0x02020202U, - 0xccccccccU, 0xc4c4c4c4U, 0x1d1d1d1dU, 0x14141414U, - 0xc3c3c3c3U, 0x63636363U, 0xdadadadaU, 0x5d5d5d5dU, - 0x5f5f5f5fU, 0xdcdcdcdcU, 0x7d7d7d7dU, 0xcdcdcdcdU, - 0x7f7f7f7fU, 0x5a5a5a5aU, 0x6c6c6c6cU, 0x5c5c5c5cU, - 0xf7f7f7f7U, 0x26262626U, 0xffffffffU, 0xededededU, - 0xe8e8e8e8U, 0x9d9d9d9dU, 0x6f6f6f6fU, 0x8e8e8e8eU, - 0x19191919U, 0xa0a0a0a0U, 0xf0f0f0f0U, 0x89898989U, - 0x0f0f0f0fU, 0x07070707U, 0xafafafafU, 0xfbfbfbfbU, - 0x08080808U, 0x15151515U, 0x0d0d0d0dU, 0x04040404U, - 0x01010101U, 0x64646464U, 0xdfdfdfdfU, 0x76767676U, - 0x79797979U, 0xddddddddU, 0x3d3d3d3dU, 0x16161616U, - 0x3f3f3f3fU, 0x37373737U, 0x6d6d6d6dU, 0x38383838U, - 0xb9b9b9b9U, 0x73737373U, 0xe9e9e9e9U, 0x35353535U, - 0x55555555U, 0x71717171U, 0x7b7b7b7bU, 0x8c8c8c8cU, - 0x72727272U, 0x88888888U, 0xf6f6f6f6U, 0x2a2a2a2aU, - 0x3e3e3e3eU, 0x5e5e5e5eU, 0x27272727U, 0x46464646U, - 0x0c0c0c0cU, 0x65656565U, 0x68686868U, 0x61616161U, - 0x03030303U, 0xc1c1c1c1U, 0x57575757U, 0xd6d6d6d6U, - 0xd9d9d9d9U, 0x58585858U, 0xd8d8d8d8U, 0x66666666U, - 0xd7d7d7d7U, 0x3a3a3a3aU, 0xc8c8c8c8U, 0x3c3c3c3cU, - 0xfafafafaU, 0x96969696U, 0xa7a7a7a7U, 0x98989898U, - 0xececececU, 0xb8b8b8b8U, 0xc7c7c7c7U, 0xaeaeaeaeU, - 0x69696969U, 0x4b4b4b4bU, 0xababababU, 0xa9a9a9a9U, - 0x67676767U, 0x0a0a0a0aU, 0x47474747U, 0xf2f2f2f2U, - 0xb5b5b5b5U, 0x22222222U, 0xe5e5e5e5U, 0xeeeeeeeeU, - 0xbebebebeU, 0x2b2b2b2bU, 0x81818181U, 0x12121212U, - 0x83838383U, 0x1b1b1b1bU, 0x0e0e0e0eU, 0x23232323U, - 0xf5f5f5f5U, 0x45454545U, 0x21212121U, 0xcecececeU, - 0x49494949U, 0x2c2c2c2cU, 0xf9f9f9f9U, 0xe6e6e6e6U, - 0xb6b6b6b6U, 0x28282828U, 0x17171717U, 0x82828282U, - 0x1a1a1a1aU, 0x8b8b8b8bU, 0xfefefefeU, 0x8a8a8a8aU, - 0x09090909U, 0xc9c9c9c9U, 0x87878787U, 0x4e4e4e4eU, - 0xe1e1e1e1U, 0x2e2e2e2eU, 0xe4e4e4e4U, 0xe0e0e0e0U, - 0xebebebebU, 0x90909090U, 0xa4a4a4a4U, 0x1e1e1e1eU, - 0x85858585U, 0x60606060U, 0x00000000U, 0x25252525U, - 0xf4f4f4f4U, 0xf1f1f1f1U, 0x94949494U, 0x0b0b0b0bU, - 0xe7e7e7e7U, 0x75757575U, 0xefefefefU, 0x34343434U, - 0x31313131U, 0xd4d4d4d4U, 0xd0d0d0d0U, 0x86868686U, - 0x7e7e7e7eU, 0xadadadadU, 0xfdfdfdfdU, 0x29292929U, - 0x30303030U, 0x3b3b3b3bU, 0x9f9f9f9fU, 0xf8f8f8f8U, - 0xc6c6c6c6U, 0x13131313U, 0x06060606U, 0x05050505U, - 0xc5c5c5c5U, 0x11111111U, 0x77777777U, 0x7c7c7c7cU, - 0x7a7a7a7aU, 0x78787878U, 0x36363636U, 0x1c1c1c1cU, - 0x39393939U, 0x59595959U, 0x18181818U, 0x56565656U, - 0xb3b3b3b3U, 0xb0b0b0b0U, 0x24242424U, 0x20202020U, - 0xb2b2b2b2U, 0x92929292U, 0xa3a3a3a3U, 0xc0c0c0c0U, - 0x44444444U, 0x62626262U, 0x10101010U, 0xb4b4b4b4U, - 0x84848484U, 0x43434343U, 0x93939393U, 0xc2c2c2c2U, - 0x4a4a4a4aU, 0xbdbdbdbdU, 0x8f8f8f8fU, 0x2d2d2d2dU, - 0xbcbcbcbcU, 0x9c9c9c9cU, 0x6a6a6a6aU, 0x40404040U, - 0xcfcfcfcfU, 0xa2a2a2a2U, 0x80808080U, 0x4f4f4f4fU, - 0x1f1f1f1fU, 0xcacacacaU, 0xaaaaaaaaU, 0x42424242U, -}; - -static const ulong32 T5[256] = { - 0x00000000U, 0x01020608U, 0x02040c10U, 0x03060a18U, - 0x04081820U, 0x050a1e28U, 0x060c1430U, 0x070e1238U, - 0x08103040U, 0x09123648U, 0x0a143c50U, 0x0b163a58U, - 0x0c182860U, 0x0d1a2e68U, 0x0e1c2470U, 0x0f1e2278U, - 0x10206080U, 0x11226688U, 0x12246c90U, 0x13266a98U, - 0x142878a0U, 0x152a7ea8U, 0x162c74b0U, 0x172e72b8U, - 0x183050c0U, 0x193256c8U, 0x1a345cd0U, 0x1b365ad8U, - 0x1c3848e0U, 0x1d3a4ee8U, 0x1e3c44f0U, 0x1f3e42f8U, - 0x2040c01dU, 0x2142c615U, 0x2244cc0dU, 0x2346ca05U, - 0x2448d83dU, 0x254ade35U, 0x264cd42dU, 0x274ed225U, - 0x2850f05dU, 0x2952f655U, 0x2a54fc4dU, 0x2b56fa45U, - 0x2c58e87dU, 0x2d5aee75U, 0x2e5ce46dU, 0x2f5ee265U, - 0x3060a09dU, 0x3162a695U, 0x3264ac8dU, 0x3366aa85U, - 0x3468b8bdU, 0x356abeb5U, 0x366cb4adU, 0x376eb2a5U, - 0x387090ddU, 0x397296d5U, 0x3a749ccdU, 0x3b769ac5U, - 0x3c7888fdU, 0x3d7a8ef5U, 0x3e7c84edU, 0x3f7e82e5U, - 0x40809d3aU, 0x41829b32U, 0x4284912aU, 0x43869722U, - 0x4488851aU, 0x458a8312U, 0x468c890aU, 0x478e8f02U, - 0x4890ad7aU, 0x4992ab72U, 0x4a94a16aU, 0x4b96a762U, - 0x4c98b55aU, 0x4d9ab352U, 0x4e9cb94aU, 0x4f9ebf42U, - 0x50a0fdbaU, 0x51a2fbb2U, 0x52a4f1aaU, 0x53a6f7a2U, - 0x54a8e59aU, 0x55aae392U, 0x56ace98aU, 0x57aeef82U, - 0x58b0cdfaU, 0x59b2cbf2U, 0x5ab4c1eaU, 0x5bb6c7e2U, - 0x5cb8d5daU, 0x5dbad3d2U, 0x5ebcd9caU, 0x5fbedfc2U, - 0x60c05d27U, 0x61c25b2fU, 0x62c45137U, 0x63c6573fU, - 0x64c84507U, 0x65ca430fU, 0x66cc4917U, 0x67ce4f1fU, - 0x68d06d67U, 0x69d26b6fU, 0x6ad46177U, 0x6bd6677fU, - 0x6cd87547U, 0x6dda734fU, 0x6edc7957U, 0x6fde7f5fU, - 0x70e03da7U, 0x71e23bafU, 0x72e431b7U, 0x73e637bfU, - 0x74e82587U, 0x75ea238fU, 0x76ec2997U, 0x77ee2f9fU, - 0x78f00de7U, 0x79f20befU, 0x7af401f7U, 0x7bf607ffU, - 0x7cf815c7U, 0x7dfa13cfU, 0x7efc19d7U, 0x7ffe1fdfU, - 0x801d2774U, 0x811f217cU, 0x82192b64U, 0x831b2d6cU, - 0x84153f54U, 0x8517395cU, 0x86113344U, 0x8713354cU, - 0x880d1734U, 0x890f113cU, 0x8a091b24U, 0x8b0b1d2cU, - 0x8c050f14U, 0x8d07091cU, 0x8e010304U, 0x8f03050cU, - 0x903d47f4U, 0x913f41fcU, 0x92394be4U, 0x933b4decU, - 0x94355fd4U, 0x953759dcU, 0x963153c4U, 0x973355ccU, - 0x982d77b4U, 0x992f71bcU, 0x9a297ba4U, 0x9b2b7dacU, - 0x9c256f94U, 0x9d27699cU, 0x9e216384U, 0x9f23658cU, - 0xa05de769U, 0xa15fe161U, 0xa259eb79U, 0xa35bed71U, - 0xa455ff49U, 0xa557f941U, 0xa651f359U, 0xa753f551U, - 0xa84dd729U, 0xa94fd121U, 0xaa49db39U, 0xab4bdd31U, - 0xac45cf09U, 0xad47c901U, 0xae41c319U, 0xaf43c511U, - 0xb07d87e9U, 0xb17f81e1U, 0xb2798bf9U, 0xb37b8df1U, - 0xb4759fc9U, 0xb57799c1U, 0xb67193d9U, 0xb77395d1U, - 0xb86db7a9U, 0xb96fb1a1U, 0xba69bbb9U, 0xbb6bbdb1U, - 0xbc65af89U, 0xbd67a981U, 0xbe61a399U, 0xbf63a591U, - 0xc09dba4eU, 0xc19fbc46U, 0xc299b65eU, 0xc39bb056U, - 0xc495a26eU, 0xc597a466U, 0xc691ae7eU, 0xc793a876U, - 0xc88d8a0eU, 0xc98f8c06U, 0xca89861eU, 0xcb8b8016U, - 0xcc85922eU, 0xcd879426U, 0xce819e3eU, 0xcf839836U, - 0xd0bddaceU, 0xd1bfdcc6U, 0xd2b9d6deU, 0xd3bbd0d6U, - 0xd4b5c2eeU, 0xd5b7c4e6U, 0xd6b1cefeU, 0xd7b3c8f6U, - 0xd8adea8eU, 0xd9afec86U, 0xdaa9e69eU, 0xdbabe096U, - 0xdca5f2aeU, 0xdda7f4a6U, 0xdea1febeU, 0xdfa3f8b6U, - 0xe0dd7a53U, 0xe1df7c5bU, 0xe2d97643U, 0xe3db704bU, - 0xe4d56273U, 0xe5d7647bU, 0xe6d16e63U, 0xe7d3686bU, - 0xe8cd4a13U, 0xe9cf4c1bU, 0xeac94603U, 0xebcb400bU, - 0xecc55233U, 0xedc7543bU, 0xeec15e23U, 0xefc3582bU, - 0xf0fd1ad3U, 0xf1ff1cdbU, 0xf2f916c3U, 0xf3fb10cbU, - 0xf4f502f3U, 0xf5f704fbU, 0xf6f10ee3U, 0xf7f308ebU, - 0xf8ed2a93U, 0xf9ef2c9bU, 0xfae92683U, 0xfbeb208bU, - 0xfce532b3U, 0xfde734bbU, 0xfee13ea3U, 0xffe338abU, -}; - -/** - * The round constants. - */ -static const ulong32 rc[] = { - 0xba542f74U, 0x53d3d24dU, 0x50ac8dbfU, 0x70529a4cU, - 0xead597d1U, 0x33515ba6U, 0xde48a899U, 0xdb32b7fcU, - 0xe39e919bU, 0xe2bb416eU, 0xa5cb6b95U, 0xa1f3b102U, - 0xccc41d14U, 0xc363da5dU, 0x5fdc7dcdU, 0x7f5a6c5cU, - 0xf726ffedU, 0xe89d6f8eU, 0x19a0f089U, -}; - - - -#else - - -static const ulong32 T0[256] = { - 0xa753a6f5U, 0xd3bb6bd0U, 0xe6d1bf6eU, 0x71e2d93bU, - 0xd0bd67daU, 0xac458acfU, 0x4d9a29b3U, 0x79f2f90bU, - 0x3a74e89cU, 0xc98f038cU, 0x913f7e41U, 0xfce5d732U, - 0x1e3c7844U, 0x478e018fU, 0x54a84de5U, 0xbd67cea9U, - 0x8c050a0fU, 0xa557aef9U, 0x7af4f501U, 0xfbebcb20U, - 0x63c69157U, 0xb86ddab7U, 0xdda753f4U, 0xd4b577c2U, - 0xe5d7b364U, 0xb37bf68dU, 0xc59733a4U, 0xbe61c2a3U, - 0xa94f9ed1U, 0x880d1a17U, 0x0c183028U, 0xa259b2ebU, - 0x3972e496U, 0xdfa35bf8U, 0x2952a4f6U, 0xdaa94fe6U, - 0x2b56acfaU, 0xa84d9ad7U, 0xcb8b0b80U, 0x4c982db5U, - 0x4b9631a7U, 0x224488ccU, 0xaa4992dbU, 0x244890d8U, - 0x4182199bU, 0x70e0dd3dU, 0xa651a2f3U, 0xf9efc32cU, - 0x5ab475c1U, 0xe2d9af76U, 0xb07dfa87U, 0x366cd8b4U, - 0x7dfae913U, 0xe4d5b762U, 0x3366ccaaU, 0xffe3db38U, - 0x60c09d5dU, 0x204080c0U, 0x08102030U, 0x8b0b161dU, - 0x5ebc65d9U, 0xab4b96ddU, 0x7ffee11fU, 0x78f0fd0dU, - 0x7cf8ed15U, 0x2c58b0e8U, 0x57ae41efU, 0xd2b96fd6U, - 0xdca557f2U, 0x6ddaa973U, 0x7efce519U, 0x0d1a342eU, - 0x53a651f7U, 0x94356a5fU, 0xc39b2bb0U, 0x2850a0f0U, - 0x274e9cd2U, 0x060c1814U, 0x5fbe61dfU, 0xad478ec9U, - 0x67ce814fU, 0x5cb86dd5U, 0x55aa49e3U, 0x48903dadU, - 0x0e1c3824U, 0x52a455f1U, 0xeac98f46U, 0x42841591U, - 0x5bb671c7U, 0x5dba69d3U, 0x3060c0a0U, 0x58b07dcdU, - 0x51a259fbU, 0x59b279cbU, 0x3c78f088U, 0x4e9c25b9U, - 0x3870e090U, 0x8a09121bU, 0x72e4d531U, 0x14285078U, - 0xe7d3bb68U, 0xc6913faeU, 0xdea15ffeU, 0x50a05dfdU, - 0x8e010203U, 0x9239724bU, 0xd1bf63dcU, 0x77eec12fU, - 0x933b764dU, 0x458a0983U, 0x9a29527bU, 0xce811f9eU, - 0x2d5ab4eeU, 0x03060c0aU, 0x62c49551U, 0xb671e293U, - 0xb96fdeb1U, 0xbf63c6a5U, 0x96316253U, 0x6bd6b167U, - 0x3f7efc82U, 0x070e1c12U, 0x1224486cU, 0xae4182c3U, - 0x40801d9dU, 0x3468d0b8U, 0x468c0589U, 0x3e7cf884U, - 0xdbab4be0U, 0xcf831b98U, 0xecc59752U, 0xcc851792U, - 0xc19f23bcU, 0xa15fbee1U, 0xc09d27baU, 0xd6b17fceU, - 0x1d3a744eU, 0xf4f5f702U, 0x61c2995bU, 0x3b76ec9aU, - 0x10204060U, 0xd8ad47eaU, 0x68d0bd6dU, 0xa05dbae7U, - 0xb17ffe81U, 0x0a14283cU, 0x69d2b96bU, 0x6cd8ad75U, - 0x499239abU, 0xfae9cf26U, 0x76ecc529U, 0xc49537a2U, - 0x9e214263U, 0x9b2b567dU, 0x6edca579U, 0x992f5e71U, - 0xc2992fb6U, 0xb773e695U, 0x982d5a77U, 0xbc65caafU, - 0x8f030605U, 0x85172e39U, 0x1f3e7c42U, 0xb475ea9fU, - 0xf8edc72aU, 0x11224466U, 0x2e5cb8e4U, 0x00000000U, - 0x254a94deU, 0x1c387048U, 0x2a54a8fcU, 0x3d7af48eU, - 0x050a141eU, 0x4f9e21bfU, 0x7bf6f107U, 0xb279f28bU, - 0x3264c8acU, 0x903d7a47U, 0xaf4386c5U, 0x19326456U, - 0xa35bb6edU, 0xf7f3fb08U, 0x73e6d137U, 0x9d274e69U, - 0x152a547eU, 0x74e8cd25U, 0xeec19f5eU, 0xca890f86U, - 0x9f234665U, 0x0f1e3c22U, 0x1b366c5aU, 0x75eac923U, - 0x86112233U, 0x84152a3fU, 0x9c254a6fU, 0x4a9435a1U, - 0x97336655U, 0x1a34685cU, 0x65ca8943U, 0xf6f1ff0eU, - 0xedc79354U, 0x09122436U, 0xbb6bd6bdU, 0x264c98d4U, - 0x831b362dU, 0xebcb8b40U, 0x6fdea17fU, 0x811f3e21U, - 0x04081018U, 0x6ad4b561U, 0x43861197U, 0x01020406U, - 0x172e5c72U, 0xe1dfa37cU, 0x87132635U, 0xf5f7f304U, - 0x8d070e09U, 0xe3dbab70U, 0x23468ccaU, 0x801d3a27U, - 0x44880d85U, 0x162c5874U, 0x66cc8549U, 0x214284c6U, - 0xfee1df3eU, 0xd5b773c4U, 0x3162c4a6U, 0xd9af43ecU, - 0x356ad4beU, 0x18306050U, 0x0204080cU, 0x64c88d45U, - 0xf2f9ef16U, 0xf1ffe31cU, 0x56ac45e9U, 0xcd871394U, - 0x8219322bU, 0xc88d078aU, 0xba69d2bbU, 0xf0fde71aU, - 0xefc39b58U, 0xe9cf834cU, 0xe8cd874aU, 0xfde7d334U, - 0x890f1e11U, 0xd7b37bc8U, 0xc7933ba8U, 0xb577ee99U, - 0xa455aaffU, 0x2f5ebce2U, 0x95376e59U, 0x13264c6aU, - 0x0b162c3aU, 0xf3fbeb10U, 0xe0dda77aU, 0x376edcb2U, -}; - -static const ulong32 T1[256] = { - 0x53a7f5a6U, 0xbbd3d06bU, 0xd1e66ebfU, 0xe2713bd9U, - 0xbdd0da67U, 0x45accf8aU, 0x9a4db329U, 0xf2790bf9U, - 0x743a9ce8U, 0x8fc98c03U, 0x3f91417eU, 0xe5fc32d7U, - 0x3c1e4478U, 0x8e478f01U, 0xa854e54dU, 0x67bda9ceU, - 0x058c0f0aU, 0x57a5f9aeU, 0xf47a01f5U, 0xebfb20cbU, - 0xc6635791U, 0x6db8b7daU, 0xa7ddf453U, 0xb5d4c277U, - 0xd7e564b3U, 0x7bb38df6U, 0x97c5a433U, 0x61bea3c2U, - 0x4fa9d19eU, 0x0d88171aU, 0x180c2830U, 0x59a2ebb2U, - 0x723996e4U, 0xa3dff85bU, 0x5229f6a4U, 0xa9dae64fU, - 0x562bfaacU, 0x4da8d79aU, 0x8bcb800bU, 0x984cb52dU, - 0x964ba731U, 0x4422cc88U, 0x49aadb92U, 0x4824d890U, - 0x82419b19U, 0xe0703dddU, 0x51a6f3a2U, 0xeff92cc3U, - 0xb45ac175U, 0xd9e276afU, 0x7db087faU, 0x6c36b4d8U, - 0xfa7d13e9U, 0xd5e462b7U, 0x6633aaccU, 0xe3ff38dbU, - 0xc0605d9dU, 0x4020c080U, 0x10083020U, 0x0b8b1d16U, - 0xbc5ed965U, 0x4babdd96U, 0xfe7f1fe1U, 0xf0780dfdU, - 0xf87c15edU, 0x582ce8b0U, 0xae57ef41U, 0xb9d2d66fU, - 0xa5dcf257U, 0xda6d73a9U, 0xfc7e19e5U, 0x1a0d2e34U, - 0xa653f751U, 0x35945f6aU, 0x9bc3b02bU, 0x5028f0a0U, - 0x4e27d29cU, 0x0c061418U, 0xbe5fdf61U, 0x47adc98eU, - 0xce674f81U, 0xb85cd56dU, 0xaa55e349U, 0x9048ad3dU, - 0x1c0e2438U, 0xa452f155U, 0xc9ea468fU, 0x84429115U, - 0xb65bc771U, 0xba5dd369U, 0x6030a0c0U, 0xb058cd7dU, - 0xa251fb59U, 0xb259cb79U, 0x783c88f0U, 0x9c4eb925U, - 0x703890e0U, 0x098a1b12U, 0xe47231d5U, 0x28147850U, - 0xd3e768bbU, 0x91c6ae3fU, 0xa1defe5fU, 0xa050fd5dU, - 0x018e0302U, 0x39924b72U, 0xbfd1dc63U, 0xee772fc1U, - 0x3b934d76U, 0x8a458309U, 0x299a7b52U, 0x81ce9e1fU, - 0x5a2deeb4U, 0x06030a0cU, 0xc4625195U, 0x71b693e2U, - 0x6fb9b1deU, 0x63bfa5c6U, 0x31965362U, 0xd66b67b1U, - 0x7e3f82fcU, 0x0e07121cU, 0x24126c48U, 0x41aec382U, - 0x80409d1dU, 0x6834b8d0U, 0x8c468905U, 0x7c3e84f8U, - 0xabdbe04bU, 0x83cf981bU, 0xc5ec5297U, 0x85cc9217U, - 0x9fc1bc23U, 0x5fa1e1beU, 0x9dc0ba27U, 0xb1d6ce7fU, - 0x3a1d4e74U, 0xf5f402f7U, 0xc2615b99U, 0x763b9aecU, - 0x20106040U, 0xadd8ea47U, 0xd0686dbdU, 0x5da0e7baU, - 0x7fb181feU, 0x140a3c28U, 0xd2696bb9U, 0xd86c75adU, - 0x9249ab39U, 0xe9fa26cfU, 0xec7629c5U, 0x95c4a237U, - 0x219e6342U, 0x2b9b7d56U, 0xdc6e79a5U, 0x2f99715eU, - 0x99c2b62fU, 0x73b795e6U, 0x2d98775aU, 0x65bcafcaU, - 0x038f0506U, 0x1785392eU, 0x3e1f427cU, 0x75b49feaU, - 0xedf82ac7U, 0x22116644U, 0x5c2ee4b8U, 0x00000000U, - 0x4a25de94U, 0x381c4870U, 0x542afca8U, 0x7a3d8ef4U, - 0x0a051e14U, 0x9e4fbf21U, 0xf67b07f1U, 0x79b28bf2U, - 0x6432acc8U, 0x3d90477aU, 0x43afc586U, 0x32195664U, - 0x5ba3edb6U, 0xf3f708fbU, 0xe67337d1U, 0x279d694eU, - 0x2a157e54U, 0xe87425cdU, 0xc1ee5e9fU, 0x89ca860fU, - 0x239f6546U, 0x1e0f223cU, 0x361b5a6cU, 0xea7523c9U, - 0x11863322U, 0x15843f2aU, 0x259c6f4aU, 0x944aa135U, - 0x33975566U, 0x341a5c68U, 0xca654389U, 0xf1f60effU, - 0xc7ed5493U, 0x12093624U, 0x6bbbbdd6U, 0x4c26d498U, - 0x1b832d36U, 0xcbeb408bU, 0xde6f7fa1U, 0x1f81213eU, - 0x08041810U, 0xd46a61b5U, 0x86439711U, 0x02010604U, - 0x2e17725cU, 0xdfe17ca3U, 0x13873526U, 0xf7f504f3U, - 0x078d090eU, 0xdbe370abU, 0x4623ca8cU, 0x1d80273aU, - 0x8844850dU, 0x2c167458U, 0xcc664985U, 0x4221c684U, - 0xe1fe3edfU, 0xb7d5c473U, 0x6231a6c4U, 0xafd9ec43U, - 0x6a35bed4U, 0x30185060U, 0x04020c08U, 0xc864458dU, - 0xf9f216efU, 0xfff11ce3U, 0xac56e945U, 0x87cd9413U, - 0x19822b32U, 0x8dc88a07U, 0x69babbd2U, 0xfdf01ae7U, - 0xc3ef589bU, 0xcfe94c83U, 0xcde84a87U, 0xe7fd34d3U, - 0x0f89111eU, 0xb3d7c87bU, 0x93c7a83bU, 0x77b599eeU, - 0x55a4ffaaU, 0x5e2fe2bcU, 0x3795596eU, 0x26136a4cU, - 0x160b3a2cU, 0xfbf310ebU, 0xdde07aa7U, 0x6e37b2dcU, -}; - -static const ulong32 T2[256] = { - 0xa6f5a753U, 0x6bd0d3bbU, 0xbf6ee6d1U, 0xd93b71e2U, - 0x67dad0bdU, 0x8acfac45U, 0x29b34d9aU, 0xf90b79f2U, - 0xe89c3a74U, 0x038cc98fU, 0x7e41913fU, 0xd732fce5U, - 0x78441e3cU, 0x018f478eU, 0x4de554a8U, 0xcea9bd67U, - 0x0a0f8c05U, 0xaef9a557U, 0xf5017af4U, 0xcb20fbebU, - 0x915763c6U, 0xdab7b86dU, 0x53f4dda7U, 0x77c2d4b5U, - 0xb364e5d7U, 0xf68db37bU, 0x33a4c597U, 0xc2a3be61U, - 0x9ed1a94fU, 0x1a17880dU, 0x30280c18U, 0xb2eba259U, - 0xe4963972U, 0x5bf8dfa3U, 0xa4f62952U, 0x4fe6daa9U, - 0xacfa2b56U, 0x9ad7a84dU, 0x0b80cb8bU, 0x2db54c98U, - 0x31a74b96U, 0x88cc2244U, 0x92dbaa49U, 0x90d82448U, - 0x199b4182U, 0xdd3d70e0U, 0xa2f3a651U, 0xc32cf9efU, - 0x75c15ab4U, 0xaf76e2d9U, 0xfa87b07dU, 0xd8b4366cU, - 0xe9137dfaU, 0xb762e4d5U, 0xccaa3366U, 0xdb38ffe3U, - 0x9d5d60c0U, 0x80c02040U, 0x20300810U, 0x161d8b0bU, - 0x65d95ebcU, 0x96ddab4bU, 0xe11f7ffeU, 0xfd0d78f0U, - 0xed157cf8U, 0xb0e82c58U, 0x41ef57aeU, 0x6fd6d2b9U, - 0x57f2dca5U, 0xa9736ddaU, 0xe5197efcU, 0x342e0d1aU, - 0x51f753a6U, 0x6a5f9435U, 0x2bb0c39bU, 0xa0f02850U, - 0x9cd2274eU, 0x1814060cU, 0x61df5fbeU, 0x8ec9ad47U, - 0x814f67ceU, 0x6dd55cb8U, 0x49e355aaU, 0x3dad4890U, - 0x38240e1cU, 0x55f152a4U, 0x8f46eac9U, 0x15914284U, - 0x71c75bb6U, 0x69d35dbaU, 0xc0a03060U, 0x7dcd58b0U, - 0x59fb51a2U, 0x79cb59b2U, 0xf0883c78U, 0x25b94e9cU, - 0xe0903870U, 0x121b8a09U, 0xd53172e4U, 0x50781428U, - 0xbb68e7d3U, 0x3faec691U, 0x5ffedea1U, 0x5dfd50a0U, - 0x02038e01U, 0x724b9239U, 0x63dcd1bfU, 0xc12f77eeU, - 0x764d933bU, 0x0983458aU, 0x527b9a29U, 0x1f9ece81U, - 0xb4ee2d5aU, 0x0c0a0306U, 0x955162c4U, 0xe293b671U, - 0xdeb1b96fU, 0xc6a5bf63U, 0x62539631U, 0xb1676bd6U, - 0xfc823f7eU, 0x1c12070eU, 0x486c1224U, 0x82c3ae41U, - 0x1d9d4080U, 0xd0b83468U, 0x0589468cU, 0xf8843e7cU, - 0x4be0dbabU, 0x1b98cf83U, 0x9752ecc5U, 0x1792cc85U, - 0x23bcc19fU, 0xbee1a15fU, 0x27bac09dU, 0x7fced6b1U, - 0x744e1d3aU, 0xf702f4f5U, 0x995b61c2U, 0xec9a3b76U, - 0x40601020U, 0x47ead8adU, 0xbd6d68d0U, 0xbae7a05dU, - 0xfe81b17fU, 0x283c0a14U, 0xb96b69d2U, 0xad756cd8U, - 0x39ab4992U, 0xcf26fae9U, 0xc52976ecU, 0x37a2c495U, - 0x42639e21U, 0x567d9b2bU, 0xa5796edcU, 0x5e71992fU, - 0x2fb6c299U, 0xe695b773U, 0x5a77982dU, 0xcaafbc65U, - 0x06058f03U, 0x2e398517U, 0x7c421f3eU, 0xea9fb475U, - 0xc72af8edU, 0x44661122U, 0xb8e42e5cU, 0x00000000U, - 0x94de254aU, 0x70481c38U, 0xa8fc2a54U, 0xf48e3d7aU, - 0x141e050aU, 0x21bf4f9eU, 0xf1077bf6U, 0xf28bb279U, - 0xc8ac3264U, 0x7a47903dU, 0x86c5af43U, 0x64561932U, - 0xb6eda35bU, 0xfb08f7f3U, 0xd13773e6U, 0x4e699d27U, - 0x547e152aU, 0xcd2574e8U, 0x9f5eeec1U, 0x0f86ca89U, - 0x46659f23U, 0x3c220f1eU, 0x6c5a1b36U, 0xc92375eaU, - 0x22338611U, 0x2a3f8415U, 0x4a6f9c25U, 0x35a14a94U, - 0x66559733U, 0x685c1a34U, 0x894365caU, 0xff0ef6f1U, - 0x9354edc7U, 0x24360912U, 0xd6bdbb6bU, 0x98d4264cU, - 0x362d831bU, 0x8b40ebcbU, 0xa17f6fdeU, 0x3e21811fU, - 0x10180408U, 0xb5616ad4U, 0x11974386U, 0x04060102U, - 0x5c72172eU, 0xa37ce1dfU, 0x26358713U, 0xf304f5f7U, - 0x0e098d07U, 0xab70e3dbU, 0x8cca2346U, 0x3a27801dU, - 0x0d854488U, 0x5874162cU, 0x854966ccU, 0x84c62142U, - 0xdf3efee1U, 0x73c4d5b7U, 0xc4a63162U, 0x43ecd9afU, - 0xd4be356aU, 0x60501830U, 0x080c0204U, 0x8d4564c8U, - 0xef16f2f9U, 0xe31cf1ffU, 0x45e956acU, 0x1394cd87U, - 0x322b8219U, 0x078ac88dU, 0xd2bbba69U, 0xe71af0fdU, - 0x9b58efc3U, 0x834ce9cfU, 0x874ae8cdU, 0xd334fde7U, - 0x1e11890fU, 0x7bc8d7b3U, 0x3ba8c793U, 0xee99b577U, - 0xaaffa455U, 0xbce22f5eU, 0x6e599537U, 0x4c6a1326U, - 0x2c3a0b16U, 0xeb10f3fbU, 0xa77ae0ddU, 0xdcb2376eU, -}; - -static const ulong32 T3[256] = { - 0xf5a653a7U, 0xd06bbbd3U, 0x6ebfd1e6U, 0x3bd9e271U, - 0xda67bdd0U, 0xcf8a45acU, 0xb3299a4dU, 0x0bf9f279U, - 0x9ce8743aU, 0x8c038fc9U, 0x417e3f91U, 0x32d7e5fcU, - 0x44783c1eU, 0x8f018e47U, 0xe54da854U, 0xa9ce67bdU, - 0x0f0a058cU, 0xf9ae57a5U, 0x01f5f47aU, 0x20cbebfbU, - 0x5791c663U, 0xb7da6db8U, 0xf453a7ddU, 0xc277b5d4U, - 0x64b3d7e5U, 0x8df67bb3U, 0xa43397c5U, 0xa3c261beU, - 0xd19e4fa9U, 0x171a0d88U, 0x2830180cU, 0xebb259a2U, - 0x96e47239U, 0xf85ba3dfU, 0xf6a45229U, 0xe64fa9daU, - 0xfaac562bU, 0xd79a4da8U, 0x800b8bcbU, 0xb52d984cU, - 0xa731964bU, 0xcc884422U, 0xdb9249aaU, 0xd8904824U, - 0x9b198241U, 0x3ddde070U, 0xf3a251a6U, 0x2cc3eff9U, - 0xc175b45aU, 0x76afd9e2U, 0x87fa7db0U, 0xb4d86c36U, - 0x13e9fa7dU, 0x62b7d5e4U, 0xaacc6633U, 0x38dbe3ffU, - 0x5d9dc060U, 0xc0804020U, 0x30201008U, 0x1d160b8bU, - 0xd965bc5eU, 0xdd964babU, 0x1fe1fe7fU, 0x0dfdf078U, - 0x15edf87cU, 0xe8b0582cU, 0xef41ae57U, 0xd66fb9d2U, - 0xf257a5dcU, 0x73a9da6dU, 0x19e5fc7eU, 0x2e341a0dU, - 0xf751a653U, 0x5f6a3594U, 0xb02b9bc3U, 0xf0a05028U, - 0xd29c4e27U, 0x14180c06U, 0xdf61be5fU, 0xc98e47adU, - 0x4f81ce67U, 0xd56db85cU, 0xe349aa55U, 0xad3d9048U, - 0x24381c0eU, 0xf155a452U, 0x468fc9eaU, 0x91158442U, - 0xc771b65bU, 0xd369ba5dU, 0xa0c06030U, 0xcd7db058U, - 0xfb59a251U, 0xcb79b259U, 0x88f0783cU, 0xb9259c4eU, - 0x90e07038U, 0x1b12098aU, 0x31d5e472U, 0x78502814U, - 0x68bbd3e7U, 0xae3f91c6U, 0xfe5fa1deU, 0xfd5da050U, - 0x0302018eU, 0x4b723992U, 0xdc63bfd1U, 0x2fc1ee77U, - 0x4d763b93U, 0x83098a45U, 0x7b52299aU, 0x9e1f81ceU, - 0xeeb45a2dU, 0x0a0c0603U, 0x5195c462U, 0x93e271b6U, - 0xb1de6fb9U, 0xa5c663bfU, 0x53623196U, 0x67b1d66bU, - 0x82fc7e3fU, 0x121c0e07U, 0x6c482412U, 0xc38241aeU, - 0x9d1d8040U, 0xb8d06834U, 0x89058c46U, 0x84f87c3eU, - 0xe04babdbU, 0x981b83cfU, 0x5297c5ecU, 0x921785ccU, - 0xbc239fc1U, 0xe1be5fa1U, 0xba279dc0U, 0xce7fb1d6U, - 0x4e743a1dU, 0x02f7f5f4U, 0x5b99c261U, 0x9aec763bU, - 0x60402010U, 0xea47add8U, 0x6dbdd068U, 0xe7ba5da0U, - 0x81fe7fb1U, 0x3c28140aU, 0x6bb9d269U, 0x75add86cU, - 0xab399249U, 0x26cfe9faU, 0x29c5ec76U, 0xa23795c4U, - 0x6342219eU, 0x7d562b9bU, 0x79a5dc6eU, 0x715e2f99U, - 0xb62f99c2U, 0x95e673b7U, 0x775a2d98U, 0xafca65bcU, - 0x0506038fU, 0x392e1785U, 0x427c3e1fU, 0x9fea75b4U, - 0x2ac7edf8U, 0x66442211U, 0xe4b85c2eU, 0x00000000U, - 0xde944a25U, 0x4870381cU, 0xfca8542aU, 0x8ef47a3dU, - 0x1e140a05U, 0xbf219e4fU, 0x07f1f67bU, 0x8bf279b2U, - 0xacc86432U, 0x477a3d90U, 0xc58643afU, 0x56643219U, - 0xedb65ba3U, 0x08fbf3f7U, 0x37d1e673U, 0x694e279dU, - 0x7e542a15U, 0x25cde874U, 0x5e9fc1eeU, 0x860f89caU, - 0x6546239fU, 0x223c1e0fU, 0x5a6c361bU, 0x23c9ea75U, - 0x33221186U, 0x3f2a1584U, 0x6f4a259cU, 0xa135944aU, - 0x55663397U, 0x5c68341aU, 0x4389ca65U, 0x0efff1f6U, - 0x5493c7edU, 0x36241209U, 0xbdd66bbbU, 0xd4984c26U, - 0x2d361b83U, 0x408bcbebU, 0x7fa1de6fU, 0x213e1f81U, - 0x18100804U, 0x61b5d46aU, 0x97118643U, 0x06040201U, - 0x725c2e17U, 0x7ca3dfe1U, 0x35261387U, 0x04f3f7f5U, - 0x090e078dU, 0x70abdbe3U, 0xca8c4623U, 0x273a1d80U, - 0x850d8844U, 0x74582c16U, 0x4985cc66U, 0xc6844221U, - 0x3edfe1feU, 0xc473b7d5U, 0xa6c46231U, 0xec43afd9U, - 0xbed46a35U, 0x50603018U, 0x0c080402U, 0x458dc864U, - 0x16eff9f2U, 0x1ce3fff1U, 0xe945ac56U, 0x941387cdU, - 0x2b321982U, 0x8a078dc8U, 0xbbd269baU, 0x1ae7fdf0U, - 0x589bc3efU, 0x4c83cfe9U, 0x4a87cde8U, 0x34d3e7fdU, - 0x111e0f89U, 0xc87bb3d7U, 0xa83b93c7U, 0x99ee77b5U, - 0xffaa55a4U, 0xe2bc5e2fU, 0x596e3795U, 0x6a4c2613U, - 0x3a2c160bU, 0x10ebfbf3U, 0x7aa7dde0U, 0xb2dc6e37U, -}; - -static const ulong32 T4[256] = { - 0xa7a7a7a7U, 0xd3d3d3d3U, 0xe6e6e6e6U, 0x71717171U, - 0xd0d0d0d0U, 0xacacacacU, 0x4d4d4d4dU, 0x79797979U, - 0x3a3a3a3aU, 0xc9c9c9c9U, 0x91919191U, 0xfcfcfcfcU, - 0x1e1e1e1eU, 0x47474747U, 0x54545454U, 0xbdbdbdbdU, - 0x8c8c8c8cU, 0xa5a5a5a5U, 0x7a7a7a7aU, 0xfbfbfbfbU, - 0x63636363U, 0xb8b8b8b8U, 0xddddddddU, 0xd4d4d4d4U, - 0xe5e5e5e5U, 0xb3b3b3b3U, 0xc5c5c5c5U, 0xbebebebeU, - 0xa9a9a9a9U, 0x88888888U, 0x0c0c0c0cU, 0xa2a2a2a2U, - 0x39393939U, 0xdfdfdfdfU, 0x29292929U, 0xdadadadaU, - 0x2b2b2b2bU, 0xa8a8a8a8U, 0xcbcbcbcbU, 0x4c4c4c4cU, - 0x4b4b4b4bU, 0x22222222U, 0xaaaaaaaaU, 0x24242424U, - 0x41414141U, 0x70707070U, 0xa6a6a6a6U, 0xf9f9f9f9U, - 0x5a5a5a5aU, 0xe2e2e2e2U, 0xb0b0b0b0U, 0x36363636U, - 0x7d7d7d7dU, 0xe4e4e4e4U, 0x33333333U, 0xffffffffU, - 0x60606060U, 0x20202020U, 0x08080808U, 0x8b8b8b8bU, - 0x5e5e5e5eU, 0xababababU, 0x7f7f7f7fU, 0x78787878U, - 0x7c7c7c7cU, 0x2c2c2c2cU, 0x57575757U, 0xd2d2d2d2U, - 0xdcdcdcdcU, 0x6d6d6d6dU, 0x7e7e7e7eU, 0x0d0d0d0dU, - 0x53535353U, 0x94949494U, 0xc3c3c3c3U, 0x28282828U, - 0x27272727U, 0x06060606U, 0x5f5f5f5fU, 0xadadadadU, - 0x67676767U, 0x5c5c5c5cU, 0x55555555U, 0x48484848U, - 0x0e0e0e0eU, 0x52525252U, 0xeaeaeaeaU, 0x42424242U, - 0x5b5b5b5bU, 0x5d5d5d5dU, 0x30303030U, 0x58585858U, - 0x51515151U, 0x59595959U, 0x3c3c3c3cU, 0x4e4e4e4eU, - 0x38383838U, 0x8a8a8a8aU, 0x72727272U, 0x14141414U, - 0xe7e7e7e7U, 0xc6c6c6c6U, 0xdedededeU, 0x50505050U, - 0x8e8e8e8eU, 0x92929292U, 0xd1d1d1d1U, 0x77777777U, - 0x93939393U, 0x45454545U, 0x9a9a9a9aU, 0xcecececeU, - 0x2d2d2d2dU, 0x03030303U, 0x62626262U, 0xb6b6b6b6U, - 0xb9b9b9b9U, 0xbfbfbfbfU, 0x96969696U, 0x6b6b6b6bU, - 0x3f3f3f3fU, 0x07070707U, 0x12121212U, 0xaeaeaeaeU, - 0x40404040U, 0x34343434U, 0x46464646U, 0x3e3e3e3eU, - 0xdbdbdbdbU, 0xcfcfcfcfU, 0xececececU, 0xccccccccU, - 0xc1c1c1c1U, 0xa1a1a1a1U, 0xc0c0c0c0U, 0xd6d6d6d6U, - 0x1d1d1d1dU, 0xf4f4f4f4U, 0x61616161U, 0x3b3b3b3bU, - 0x10101010U, 0xd8d8d8d8U, 0x68686868U, 0xa0a0a0a0U, - 0xb1b1b1b1U, 0x0a0a0a0aU, 0x69696969U, 0x6c6c6c6cU, - 0x49494949U, 0xfafafafaU, 0x76767676U, 0xc4c4c4c4U, - 0x9e9e9e9eU, 0x9b9b9b9bU, 0x6e6e6e6eU, 0x99999999U, - 0xc2c2c2c2U, 0xb7b7b7b7U, 0x98989898U, 0xbcbcbcbcU, - 0x8f8f8f8fU, 0x85858585U, 0x1f1f1f1fU, 0xb4b4b4b4U, - 0xf8f8f8f8U, 0x11111111U, 0x2e2e2e2eU, 0x00000000U, - 0x25252525U, 0x1c1c1c1cU, 0x2a2a2a2aU, 0x3d3d3d3dU, - 0x05050505U, 0x4f4f4f4fU, 0x7b7b7b7bU, 0xb2b2b2b2U, - 0x32323232U, 0x90909090U, 0xafafafafU, 0x19191919U, - 0xa3a3a3a3U, 0xf7f7f7f7U, 0x73737373U, 0x9d9d9d9dU, - 0x15151515U, 0x74747474U, 0xeeeeeeeeU, 0xcacacacaU, - 0x9f9f9f9fU, 0x0f0f0f0fU, 0x1b1b1b1bU, 0x75757575U, - 0x86868686U, 0x84848484U, 0x9c9c9c9cU, 0x4a4a4a4aU, - 0x97979797U, 0x1a1a1a1aU, 0x65656565U, 0xf6f6f6f6U, - 0xededededU, 0x09090909U, 0xbbbbbbbbU, 0x26262626U, - 0x83838383U, 0xebebebebU, 0x6f6f6f6fU, 0x81818181U, - 0x04040404U, 0x6a6a6a6aU, 0x43434343U, 0x01010101U, - 0x17171717U, 0xe1e1e1e1U, 0x87878787U, 0xf5f5f5f5U, - 0x8d8d8d8dU, 0xe3e3e3e3U, 0x23232323U, 0x80808080U, - 0x44444444U, 0x16161616U, 0x66666666U, 0x21212121U, - 0xfefefefeU, 0xd5d5d5d5U, 0x31313131U, 0xd9d9d9d9U, - 0x35353535U, 0x18181818U, 0x02020202U, 0x64646464U, - 0xf2f2f2f2U, 0xf1f1f1f1U, 0x56565656U, 0xcdcdcdcdU, - 0x82828282U, 0xc8c8c8c8U, 0xbabababaU, 0xf0f0f0f0U, - 0xefefefefU, 0xe9e9e9e9U, 0xe8e8e8e8U, 0xfdfdfdfdU, - 0x89898989U, 0xd7d7d7d7U, 0xc7c7c7c7U, 0xb5b5b5b5U, - 0xa4a4a4a4U, 0x2f2f2f2fU, 0x95959595U, 0x13131313U, - 0x0b0b0b0bU, 0xf3f3f3f3U, 0xe0e0e0e0U, 0x37373737U, -}; - -static const ulong32 T5[256] = { - 0x00000000U, 0x01020608U, 0x02040c10U, 0x03060a18U, - 0x04081820U, 0x050a1e28U, 0x060c1430U, 0x070e1238U, - 0x08103040U, 0x09123648U, 0x0a143c50U, 0x0b163a58U, - 0x0c182860U, 0x0d1a2e68U, 0x0e1c2470U, 0x0f1e2278U, - 0x10206080U, 0x11226688U, 0x12246c90U, 0x13266a98U, - 0x142878a0U, 0x152a7ea8U, 0x162c74b0U, 0x172e72b8U, - 0x183050c0U, 0x193256c8U, 0x1a345cd0U, 0x1b365ad8U, - 0x1c3848e0U, 0x1d3a4ee8U, 0x1e3c44f0U, 0x1f3e42f8U, - 0x2040c01dU, 0x2142c615U, 0x2244cc0dU, 0x2346ca05U, - 0x2448d83dU, 0x254ade35U, 0x264cd42dU, 0x274ed225U, - 0x2850f05dU, 0x2952f655U, 0x2a54fc4dU, 0x2b56fa45U, - 0x2c58e87dU, 0x2d5aee75U, 0x2e5ce46dU, 0x2f5ee265U, - 0x3060a09dU, 0x3162a695U, 0x3264ac8dU, 0x3366aa85U, - 0x3468b8bdU, 0x356abeb5U, 0x366cb4adU, 0x376eb2a5U, - 0x387090ddU, 0x397296d5U, 0x3a749ccdU, 0x3b769ac5U, - 0x3c7888fdU, 0x3d7a8ef5U, 0x3e7c84edU, 0x3f7e82e5U, - 0x40809d3aU, 0x41829b32U, 0x4284912aU, 0x43869722U, - 0x4488851aU, 0x458a8312U, 0x468c890aU, 0x478e8f02U, - 0x4890ad7aU, 0x4992ab72U, 0x4a94a16aU, 0x4b96a762U, - 0x4c98b55aU, 0x4d9ab352U, 0x4e9cb94aU, 0x4f9ebf42U, - 0x50a0fdbaU, 0x51a2fbb2U, 0x52a4f1aaU, 0x53a6f7a2U, - 0x54a8e59aU, 0x55aae392U, 0x56ace98aU, 0x57aeef82U, - 0x58b0cdfaU, 0x59b2cbf2U, 0x5ab4c1eaU, 0x5bb6c7e2U, - 0x5cb8d5daU, 0x5dbad3d2U, 0x5ebcd9caU, 0x5fbedfc2U, - 0x60c05d27U, 0x61c25b2fU, 0x62c45137U, 0x63c6573fU, - 0x64c84507U, 0x65ca430fU, 0x66cc4917U, 0x67ce4f1fU, - 0x68d06d67U, 0x69d26b6fU, 0x6ad46177U, 0x6bd6677fU, - 0x6cd87547U, 0x6dda734fU, 0x6edc7957U, 0x6fde7f5fU, - 0x70e03da7U, 0x71e23bafU, 0x72e431b7U, 0x73e637bfU, - 0x74e82587U, 0x75ea238fU, 0x76ec2997U, 0x77ee2f9fU, - 0x78f00de7U, 0x79f20befU, 0x7af401f7U, 0x7bf607ffU, - 0x7cf815c7U, 0x7dfa13cfU, 0x7efc19d7U, 0x7ffe1fdfU, - 0x801d2774U, 0x811f217cU, 0x82192b64U, 0x831b2d6cU, - 0x84153f54U, 0x8517395cU, 0x86113344U, 0x8713354cU, - 0x880d1734U, 0x890f113cU, 0x8a091b24U, 0x8b0b1d2cU, - 0x8c050f14U, 0x8d07091cU, 0x8e010304U, 0x8f03050cU, - 0x903d47f4U, 0x913f41fcU, 0x92394be4U, 0x933b4decU, - 0x94355fd4U, 0x953759dcU, 0x963153c4U, 0x973355ccU, - 0x982d77b4U, 0x992f71bcU, 0x9a297ba4U, 0x9b2b7dacU, - 0x9c256f94U, 0x9d27699cU, 0x9e216384U, 0x9f23658cU, - 0xa05de769U, 0xa15fe161U, 0xa259eb79U, 0xa35bed71U, - 0xa455ff49U, 0xa557f941U, 0xa651f359U, 0xa753f551U, - 0xa84dd729U, 0xa94fd121U, 0xaa49db39U, 0xab4bdd31U, - 0xac45cf09U, 0xad47c901U, 0xae41c319U, 0xaf43c511U, - 0xb07d87e9U, 0xb17f81e1U, 0xb2798bf9U, 0xb37b8df1U, - 0xb4759fc9U, 0xb57799c1U, 0xb67193d9U, 0xb77395d1U, - 0xb86db7a9U, 0xb96fb1a1U, 0xba69bbb9U, 0xbb6bbdb1U, - 0xbc65af89U, 0xbd67a981U, 0xbe61a399U, 0xbf63a591U, - 0xc09dba4eU, 0xc19fbc46U, 0xc299b65eU, 0xc39bb056U, - 0xc495a26eU, 0xc597a466U, 0xc691ae7eU, 0xc793a876U, - 0xc88d8a0eU, 0xc98f8c06U, 0xca89861eU, 0xcb8b8016U, - 0xcc85922eU, 0xcd879426U, 0xce819e3eU, 0xcf839836U, - 0xd0bddaceU, 0xd1bfdcc6U, 0xd2b9d6deU, 0xd3bbd0d6U, - 0xd4b5c2eeU, 0xd5b7c4e6U, 0xd6b1cefeU, 0xd7b3c8f6U, - 0xd8adea8eU, 0xd9afec86U, 0xdaa9e69eU, 0xdbabe096U, - 0xdca5f2aeU, 0xdda7f4a6U, 0xdea1febeU, 0xdfa3f8b6U, - 0xe0dd7a53U, 0xe1df7c5bU, 0xe2d97643U, 0xe3db704bU, - 0xe4d56273U, 0xe5d7647bU, 0xe6d16e63U, 0xe7d3686bU, - 0xe8cd4a13U, 0xe9cf4c1bU, 0xeac94603U, 0xebcb400bU, - 0xecc55233U, 0xedc7543bU, 0xeec15e23U, 0xefc3582bU, - 0xf0fd1ad3U, 0xf1ff1cdbU, 0xf2f916c3U, 0xf3fb10cbU, - 0xf4f502f3U, 0xf5f704fbU, 0xf6f10ee3U, 0xf7f308ebU, - 0xf8ed2a93U, 0xf9ef2c9bU, 0xfae92683U, 0xfbeb208bU, - 0xfce532b3U, 0xfde734bbU, 0xfee13ea3U, 0xffe338abU, -}; - -/** - * The round constants. - */ -static const ulong32 rc[] = { - 0xa7d3e671U, 0xd0ac4d79U, 0x3ac991fcU, 0x1e4754bdU, - 0x8ca57afbU, 0x63b8ddd4U, 0xe5b3c5beU, 0xa9880ca2U, - 0x39df29daU, 0x2ba8cb4cU, 0x4b22aa24U, 0x4170a6f9U, - 0x5ae2b036U, 0x7de433ffU, 0x6020088bU, 0x5eab7f78U, - 0x7c2c57d2U, 0xdc6d7e0dU, 0x5394c328U, -}; - -#endif - - /** - Initialize the Anubis block cipher - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful - */ -#ifdef LTC_CLEAN_STACK -static int _anubis_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -#else -int anubis_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -#endif -{ - int N, R, i, pos, r; - ulong32 kappa[MAX_N]; - ulong32 inter[MAX_N] = { 0 }; /* initialize as all zeroes */ - ulong32 v, K0, K1, K2, K3; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - /* Valid sizes (in bytes) are 16, 20, 24, 28, 32, 36, and 40. */ - if ((keylen & 3) || (keylen < 16) || (keylen > 40)) { - return CRYPT_INVALID_KEYSIZE; - } - skey->anubis.keyBits = keylen*8; - - /* - * determine the N length parameter: - * (N.B. it is assumed that the key length is valid!) - */ - N = skey->anubis.keyBits >> 5; - - /* - * determine number of rounds from key size: - */ - skey->anubis.R = R = 8 + N; - - if (num_rounds != 0 && num_rounds != skey->anubis.R) { - return CRYPT_INVALID_ROUNDS; - } - - /* - * map cipher key to initial key state (mu): - */ - for (i = 0, pos = 0; i < N; i++, pos += 4) { - kappa[i] = - (((ulong32)key[pos ]) << 24) ^ - (((ulong32)key[pos + 1]) << 16) ^ - (((ulong32)key[pos + 2]) << 8) ^ - (((ulong32)key[pos + 3]) ); - } - - /* - * generate R + 1 round keys: - */ - for (r = 0; r <= R; r++) { - /* - * generate r-th round key K^r: - */ - K0 = T4[(kappa[N - 1] >> 24) & 0xff]; - K1 = T4[(kappa[N - 1] >> 16) & 0xff]; - K2 = T4[(kappa[N - 1] >> 8) & 0xff]; - K3 = T4[(kappa[N - 1] ) & 0xff]; - for (i = N - 2; i >= 0; i--) { - K0 = T4[(kappa[i] >> 24) & 0xff] ^ - (T5[(K0 >> 24) & 0xff] & 0xff000000U) ^ - (T5[(K0 >> 16) & 0xff] & 0x00ff0000U) ^ - (T5[(K0 >> 8) & 0xff] & 0x0000ff00U) ^ - (T5[(K0 ) & 0xff] & 0x000000ffU); - K1 = T4[(kappa[i] >> 16) & 0xff] ^ - (T5[(K1 >> 24) & 0xff] & 0xff000000U) ^ - (T5[(K1 >> 16) & 0xff] & 0x00ff0000U) ^ - (T5[(K1 >> 8) & 0xff] & 0x0000ff00U) ^ - (T5[(K1 ) & 0xff] & 0x000000ffU); - K2 = T4[(kappa[i] >> 8) & 0xff] ^ - (T5[(K2 >> 24) & 0xff] & 0xff000000U) ^ - (T5[(K2 >> 16) & 0xff] & 0x00ff0000U) ^ - (T5[(K2 >> 8) & 0xff] & 0x0000ff00U) ^ - (T5[(K2 ) & 0xff] & 0x000000ffU); - K3 = T4[(kappa[i] ) & 0xff] ^ - (T5[(K3 >> 24) & 0xff] & 0xff000000U) ^ - (T5[(K3 >> 16) & 0xff] & 0x00ff0000U) ^ - (T5[(K3 >> 8) & 0xff] & 0x0000ff00U) ^ - (T5[(K3 ) & 0xff] & 0x000000ffU); - } - /* - -- this is the code to use with the large U tables: - K0 = K1 = K2 = K3 = 0; - for (i = 0; i < N; i++) { - K0 ^= U[i][(kappa[i] >> 24) & 0xff]; - K1 ^= U[i][(kappa[i] >> 16) & 0xff]; - K2 ^= U[i][(kappa[i] >> 8) & 0xff]; - K3 ^= U[i][(kappa[i] ) & 0xff]; - } - */ - skey->anubis.roundKeyEnc[r][0] = K0; - skey->anubis.roundKeyEnc[r][1] = K1; - skey->anubis.roundKeyEnc[r][2] = K2; - skey->anubis.roundKeyEnc[r][3] = K3; - - /* - * compute kappa^{r+1} from kappa^r: - */ - if (r == R) { - break; - } - for (i = 0; i < N; i++) { - int j = i; - inter[i] = T0[(kappa[j--] >> 24) & 0xff]; if (j < 0) j = N - 1; - inter[i] ^= T1[(kappa[j--] >> 16) & 0xff]; if (j < 0) j = N - 1; - inter[i] ^= T2[(kappa[j--] >> 8) & 0xff]; if (j < 0) j = N - 1; - inter[i] ^= T3[(kappa[j ] ) & 0xff]; - } - kappa[0] = inter[0] ^ rc[r]; - for (i = 1; i < N; i++) { - kappa[i] = inter[i]; - } - } - - /* - * generate inverse key schedule: K'^0 = K^R, K'^R = K^0, K'^r = theta(K^{R-r}): - */ - for (i = 0; i < 4; i++) { - skey->anubis.roundKeyDec[0][i] = skey->anubis.roundKeyEnc[R][i]; - skey->anubis.roundKeyDec[R][i] = skey->anubis.roundKeyEnc[0][i]; - } - for (r = 1; r < R; r++) { - for (i = 0; i < 4; i++) { - v = skey->anubis.roundKeyEnc[R - r][i]; - skey->anubis.roundKeyDec[r][i] = - T0[T4[(v >> 24) & 0xff] & 0xff] ^ - T1[T4[(v >> 16) & 0xff] & 0xff] ^ - T2[T4[(v >> 8) & 0xff] & 0xff] ^ - T3[T4[(v ) & 0xff] & 0xff]; - } - } - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int anubis_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - int err; - err = _anubis_setup(key, keylen, num_rounds, skey); - burn_stack(sizeof(int) * 5 + sizeof(ulong32) * (MAX_N + MAX_N + 5)); - return err; -} -#endif - - -static void anubis_crypt(const unsigned char *plaintext, unsigned char *ciphertext, - ulong32 roundKey[18 + 1][4], int R) { - int i, pos, r; - ulong32 state[4]; - ulong32 inter[4]; - - /* - * map plaintext block to cipher state (mu) - * and add initial round key (sigma[K^0]): - */ - for (i = 0, pos = 0; i < 4; i++, pos += 4) { - state[i] = - (((ulong32)plaintext[pos ]) << 24) ^ - (((ulong32)plaintext[pos + 1]) << 16) ^ - (((ulong32)plaintext[pos + 2]) << 8) ^ - (((ulong32)plaintext[pos + 3]) ) ^ - roundKey[0][i]; - } - - /* - * R - 1 full rounds: - */ - for (r = 1; r < R; r++) { - inter[0] = - T0[(state[0] >> 24) & 0xff] ^ - T1[(state[1] >> 24) & 0xff] ^ - T2[(state[2] >> 24) & 0xff] ^ - T3[(state[3] >> 24) & 0xff] ^ - roundKey[r][0]; - inter[1] = - T0[(state[0] >> 16) & 0xff] ^ - T1[(state[1] >> 16) & 0xff] ^ - T2[(state[2] >> 16) & 0xff] ^ - T3[(state[3] >> 16) & 0xff] ^ - roundKey[r][1]; - inter[2] = - T0[(state[0] >> 8) & 0xff] ^ - T1[(state[1] >> 8) & 0xff] ^ - T2[(state[2] >> 8) & 0xff] ^ - T3[(state[3] >> 8) & 0xff] ^ - roundKey[r][2]; - inter[3] = - T0[(state[0] ) & 0xff] ^ - T1[(state[1] ) & 0xff] ^ - T2[(state[2] ) & 0xff] ^ - T3[(state[3] ) & 0xff] ^ - roundKey[r][3]; - state[0] = inter[0]; - state[1] = inter[1]; - state[2] = inter[2]; - state[3] = inter[3]; - } - - /* - * last round: - */ - inter[0] = - (T0[(state[0] >> 24) & 0xff] & 0xff000000U) ^ - (T1[(state[1] >> 24) & 0xff] & 0x00ff0000U) ^ - (T2[(state[2] >> 24) & 0xff] & 0x0000ff00U) ^ - (T3[(state[3] >> 24) & 0xff] & 0x000000ffU) ^ - roundKey[R][0]; - inter[1] = - (T0[(state[0] >> 16) & 0xff] & 0xff000000U) ^ - (T1[(state[1] >> 16) & 0xff] & 0x00ff0000U) ^ - (T2[(state[2] >> 16) & 0xff] & 0x0000ff00U) ^ - (T3[(state[3] >> 16) & 0xff] & 0x000000ffU) ^ - roundKey[R][1]; - inter[2] = - (T0[(state[0] >> 8) & 0xff] & 0xff000000U) ^ - (T1[(state[1] >> 8) & 0xff] & 0x00ff0000U) ^ - (T2[(state[2] >> 8) & 0xff] & 0x0000ff00U) ^ - (T3[(state[3] >> 8) & 0xff] & 0x000000ffU) ^ - roundKey[R][2]; - inter[3] = - (T0[(state[0] ) & 0xff] & 0xff000000U) ^ - (T1[(state[1] ) & 0xff] & 0x00ff0000U) ^ - (T2[(state[2] ) & 0xff] & 0x0000ff00U) ^ - (T3[(state[3] ) & 0xff] & 0x000000ffU) ^ - roundKey[R][3]; - - /* - * map cipher state to ciphertext block (mu^{-1}): - */ - for (i = 0, pos = 0; i < 4; i++, pos += 4) { - ulong32 w = inter[i]; - ciphertext[pos ] = (unsigned char)(w >> 24); - ciphertext[pos + 1] = (unsigned char)(w >> 16); - ciphertext[pos + 2] = (unsigned char)(w >> 8); - ciphertext[pos + 3] = (unsigned char)(w ); - } -} - -/** - Encrypts a block of text with Anubis - @param pt The input plaintext (16 bytes) - @param ct The output ciphertext (16 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int anubis_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - anubis_crypt(pt, ct, skey->anubis.roundKeyEnc, skey->anubis.R); - return CRYPT_OK; -} - -/** - Decrypts a block of text with Anubis - @param ct The input ciphertext (16 bytes) - @param pt The output plaintext (16 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int anubis_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - anubis_crypt(ct, pt, skey->anubis.roundKeyDec, skey->anubis.R); - return CRYPT_OK; -} - -/** - Performs a self-test of the Anubis block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int anubis_test(void) -{ -#if !defined(LTC_TEST) - return CRYPT_NOP; -#else - static const struct test { - int keylen; - unsigned char pt[16], ct[16], key[40]; - } tests[] = { -#ifndef LTC_ANUBIS_TWEAK - /**** ORIGINAL LTC_ANUBIS ****/ - /* 128 bit keys */ -{ - 16, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xF0, 0x68, 0x60, 0xFC, 0x67, 0x30, 0xE8, 0x18, - 0xF1, 0x32, 0xC7, 0x8A, 0xF4, 0x13, 0x2A, 0xFE }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } -}, { - 16, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xA8, 0x66, 0x84, 0x80, 0x07, 0x74, 0x5C, 0x89, - 0xFC, 0x5E, 0xB5, 0xBA, 0xD4, 0xFE, 0x32, 0x6D }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } -}, - - /* 160-bit keys */ -{ - 20, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xBD, 0x5E, 0x32, 0xBE, 0x51, 0x67, 0xA8, 0xE2, - 0x72, 0xD7, 0x95, 0x0F, 0x83, 0xC6, 0x8C, 0x31 }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 } -}, { - 20, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x4C, 0x1F, 0x86, 0x2E, 0x11, 0xEB, 0xCE, 0xEB, - 0xFE, 0xB9, 0x73, 0xC9, 0xDF, 0xEF, 0x7A, 0xDB }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01 } -}, - - /* 192-bit keys */ -{ - 24, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x17, 0xAC, 0x57, 0x44, 0x9D, 0x59, 0x61, 0x66, - 0xD0, 0xC7, 0x9E, 0x04, 0x7C, 0xC7, 0x58, 0xF0 }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } -}, { - 24, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x71, 0x52, 0xB4, 0xEB, 0x1D, 0xAA, 0x36, 0xFD, - 0x57, 0x14, 0x5F, 0x57, 0x04, 0x9F, 0x70, 0x74 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } -}, - - /* 224-bit keys */ -{ - 28, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xA2, 0xF0, 0xA6, 0xB9, 0x17, 0x93, 0x2A, 0x3B, - 0xEF, 0x08, 0xE8, 0x7A, 0x58, 0xD6, 0xF8, 0x53 }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 } -}, { - 28, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xF0, 0xCA, 0xFC, 0x78, 0x8B, 0x4B, 0x4E, 0x53, - 0x8B, 0xC4, 0x32, 0x6A, 0xF5, 0xB9, 0x1B, 0x5F }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01 } -}, - - /* 256-bit keys */ -{ - 32, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xE0, 0x86, 0xAC, 0x45, 0x6B, 0x3C, 0xE5, 0x13, - 0xED, 0xF5, 0xDF, 0xDD, 0xD6, 0x3B, 0x71, 0x93 }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } -}, { - 32, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x50, 0x01, 0xB9, 0xF5, 0x21, 0xC1, 0xC1, 0x29, - 0x00, 0xD5, 0xEC, 0x98, 0x2B, 0x9E, 0xE8, 0x21 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } -}, - - /* 288-bit keys */ -{ - 36, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xE8, 0xF4, 0xAF, 0x2B, 0x21, 0xA0, 0x87, 0x9B, - 0x41, 0x95, 0xB9, 0x71, 0x75, 0x79, 0x04, 0x7C }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 } -}, { - 36, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xE6, 0xA6, 0xA5, 0xBC, 0x8B, 0x63, 0x6F, 0xE2, - 0xBD, 0xA7, 0xA7, 0x53, 0xAB, 0x40, 0x22, 0xE0 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01 } -}, - - /* 320-bit keys */ -{ - 40, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x17, 0x04, 0xD7, 0x2C, 0xC6, 0x85, 0x76, 0x02, - 0x4B, 0xCC, 0x39, 0x80, 0xD8, 0x22, 0xEA, 0xA4 }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } -}, { - 40, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x7A, 0x41, 0xE6, 0x7D, 0x4F, 0xD8, 0x64, 0xF0, - 0x44, 0xA8, 0x3C, 0x73, 0x81, 0x7E, 0x53, 0xD8 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } -} -#else - /**** Tweaked LTC_ANUBIS ****/ - /* 128 bit keys */ -{ - 16, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xB8, 0x35, 0xBD, 0xC3, 0x34, 0x82, 0x9D, 0x83, - 0x71, 0xBF, 0xA3, 0x71, 0xE4, 0xB3, 0xC4, 0xFD }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } -}, { - 16, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xE6, 0x14, 0x1E, 0xAF, 0xEB, 0xE0, 0x59, 0x3C, - 0x48, 0xE1, 0xCD, 0xF2, 0x1B, 0xBA, 0xA1, 0x89 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } -}, - - /* 160-bit keys */ -{ - 20, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x97, 0x59, 0x79, 0x4B, 0x5C, 0xA0, 0x70, 0x73, - 0x24, 0xEF, 0xB3, 0x58, 0x67, 0xCA, 0xD4, 0xB3 }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 } -}, { - 20, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xB8, 0x0D, 0xFB, 0x9B, 0xE4, 0xA1, 0x58, 0x87, - 0xB3, 0x76, 0xD5, 0x02, 0x18, 0x95, 0xC1, 0x2E }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01 } -}, - - /* 192-bit keys */ -{ - 24, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x7D, 0x62, 0x3B, 0x52, 0xC7, 0x4C, 0x64, 0xD8, - 0xEB, 0xC7, 0x2D, 0x57, 0x97, 0x85, 0x43, 0x8F }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } -}, { - 24, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xB1, 0x0A, 0x59, 0xDD, 0x5D, 0x5D, 0x8D, 0x67, - 0xEC, 0xEE, 0x4A, 0xC4, 0xBE, 0x4F, 0xA8, 0x4F }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } -}, - - /* 224-bit keys */ -{ - 28, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x68, 0x9E, 0x05, 0x94, 0x6A, 0x94, 0x43, 0x8F, - 0xE7, 0x8E, 0x37, 0x3D, 0x24, 0x97, 0x92, 0xF5 }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 } -}, { - 28, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xDD, 0xB7, 0xB0, 0xB4, 0xE9, 0xB4, 0x9B, 0x9C, - 0x38, 0x20, 0x25, 0x0B, 0x47, 0xC2, 0x1F, 0x89 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01 } -}, - - /* 256-bit keys */ -{ - 32, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x96, 0x00, 0xF0, 0x76, 0x91, 0x69, 0x29, 0x87, - 0xF5, 0xE5, 0x97, 0xDB, 0xDB, 0xAF, 0x1B, 0x0A }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } -}, { - 32, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x69, 0x9C, 0xAF, 0xDD, 0x94, 0xC7, 0xBC, 0x60, - 0x44, 0xFE, 0x02, 0x05, 0x8A, 0x6E, 0xEF, 0xBD }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } -}, - - /* 288-bit keys */ -{ - 36, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x0F, 0xC7, 0xA2, 0xC0, 0x11, 0x17, 0xAC, 0x43, - 0x52, 0x5E, 0xDF, 0x6C, 0xF3, 0x96, 0x33, 0x6C }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 } -}, { - 36, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xAD, 0x08, 0x4F, 0xED, 0x55, 0xA6, 0x94, 0x3E, - 0x7E, 0x5E, 0xED, 0x05, 0xA1, 0x9D, 0x41, 0xB4 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01 } -}, - - /* 320-bit keys */ -{ - 40, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xFE, 0xE2, 0x0E, 0x2A, 0x9D, 0xC5, 0x83, 0xBA, - 0xA3, 0xA6, 0xD6, 0xA6, 0xF2, 0xE8, 0x06, 0xA5 }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } -}, { - 40, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x86, 0x3D, 0xCC, 0x4A, 0x60, 0x34, 0x9C, 0x28, - 0xA7, 0xDA, 0xA4, 0x3B, 0x0A, 0xD7, 0xFD, 0xC7 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } -} -#endif -}; - int x, y; - unsigned char buf[2][16]; - symmetric_key skey; - - for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - anubis_setup(tests[x].key, tests[x].keylen, 0, &skey); - anubis_ecb_encrypt(tests[x].pt, buf[0], &skey); - anubis_ecb_decrypt(buf[0], buf[1], &skey); - if (compare_testvector(buf[0], 16, tests[x].ct, 16, "Anubis Encrypt", x) || - compare_testvector(buf[1], 16, tests[x].pt, 16, "Anubis Decrypt", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - - for (y = 0; y < 1000; y++) anubis_ecb_encrypt(buf[0], buf[0], &skey); - for (y = 0; y < 1000; y++) anubis_ecb_decrypt(buf[0], buf[0], &skey); - if (compare_testvector(buf[0], 16, tests[x].ct, 16, "Anubis 1000", 1000)) { - return CRYPT_FAIL_TESTVECTOR; - } - - } - return CRYPT_OK; -#endif -} - -/** Terminate the context - @param skey The scheduled key -*/ -void anubis_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int anubis_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if (*keysize >= 40) { - *keysize = 40; - } else if (*keysize >= 36) { - *keysize = 36; - } else if (*keysize >= 32) { - *keysize = 32; - } else if (*keysize >= 28) { - *keysize = 28; - } else if (*keysize >= 24) { - *keysize = 24; - } else if (*keysize >= 20) { - *keysize = 20; - } else if (*keysize >= 16) { - *keysize = 16; - } else { - return CRYPT_INVALID_KEYSIZE; - } - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/blowfish.c b/src/libtomcrypt/src/ciphers/blowfish.c deleted file mode 100644 index 1f79911301..0000000000 --- a/src/libtomcrypt/src/ciphers/blowfish.c +++ /dev/null @@ -1,594 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -/** - @file blowfish.c - Implementation of the Blowfish block cipher, Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_BLOWFISH - -const struct ltc_cipher_descriptor blowfish_desc = -{ - "blowfish", - 0, - 8, 56, 8, 16, - &blowfish_setup, - &blowfish_ecb_encrypt, - &blowfish_ecb_decrypt, - &blowfish_test, - &blowfish_done, - &blowfish_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -static const ulong32 ORIG_P[16 + 2] = { - 0x243F6A88UL, 0x85A308D3UL, 0x13198A2EUL, 0x03707344UL, - 0xA4093822UL, 0x299F31D0UL, 0x082EFA98UL, 0xEC4E6C89UL, - 0x452821E6UL, 0x38D01377UL, 0xBE5466CFUL, 0x34E90C6CUL, - 0xC0AC29B7UL, 0xC97C50DDUL, 0x3F84D5B5UL, 0xB5470917UL, - 0x9216D5D9UL, 0x8979FB1BUL -}; - -static const ulong32 ORIG_S[4][256] = { - { 0xD1310BA6UL, 0x98DFB5ACUL, 0x2FFD72DBUL, 0xD01ADFB7UL, - 0xB8E1AFEDUL, 0x6A267E96UL, 0xBA7C9045UL, 0xF12C7F99UL, - 0x24A19947UL, 0xB3916CF7UL, 0x0801F2E2UL, 0x858EFC16UL, - 0x636920D8UL, 0x71574E69UL, 0xA458FEA3UL, 0xF4933D7EUL, - 0x0D95748FUL, 0x728EB658UL, 0x718BCD58UL, 0x82154AEEUL, - 0x7B54A41DUL, 0xC25A59B5UL, 0x9C30D539UL, 0x2AF26013UL, - 0xC5D1B023UL, 0x286085F0UL, 0xCA417918UL, 0xB8DB38EFUL, - 0x8E79DCB0UL, 0x603A180EUL, 0x6C9E0E8BUL, 0xB01E8A3EUL, - 0xD71577C1UL, 0xBD314B27UL, 0x78AF2FDAUL, 0x55605C60UL, - 0xE65525F3UL, 0xAA55AB94UL, 0x57489862UL, 0x63E81440UL, - 0x55CA396AUL, 0x2AAB10B6UL, 0xB4CC5C34UL, 0x1141E8CEUL, - 0xA15486AFUL, 0x7C72E993UL, 0xB3EE1411UL, 0x636FBC2AUL, - 0x2BA9C55DUL, 0x741831F6UL, 0xCE5C3E16UL, 0x9B87931EUL, - 0xAFD6BA33UL, 0x6C24CF5CUL, 0x7A325381UL, 0x28958677UL, - 0x3B8F4898UL, 0x6B4BB9AFUL, 0xC4BFE81BUL, 0x66282193UL, - 0x61D809CCUL, 0xFB21A991UL, 0x487CAC60UL, 0x5DEC8032UL, - 0xEF845D5DUL, 0xE98575B1UL, 0xDC262302UL, 0xEB651B88UL, - 0x23893E81UL, 0xD396ACC5UL, 0x0F6D6FF3UL, 0x83F44239UL, - 0x2E0B4482UL, 0xA4842004UL, 0x69C8F04AUL, 0x9E1F9B5EUL, - 0x21C66842UL, 0xF6E96C9AUL, 0x670C9C61UL, 0xABD388F0UL, - 0x6A51A0D2UL, 0xD8542F68UL, 0x960FA728UL, 0xAB5133A3UL, - 0x6EEF0B6CUL, 0x137A3BE4UL, 0xBA3BF050UL, 0x7EFB2A98UL, - 0xA1F1651DUL, 0x39AF0176UL, 0x66CA593EUL, 0x82430E88UL, - 0x8CEE8619UL, 0x456F9FB4UL, 0x7D84A5C3UL, 0x3B8B5EBEUL, - 0xE06F75D8UL, 0x85C12073UL, 0x401A449FUL, 0x56C16AA6UL, - 0x4ED3AA62UL, 0x363F7706UL, 0x1BFEDF72UL, 0x429B023DUL, - 0x37D0D724UL, 0xD00A1248UL, 0xDB0FEAD3UL, 0x49F1C09BUL, - 0x075372C9UL, 0x80991B7BUL, 0x25D479D8UL, 0xF6E8DEF7UL, - 0xE3FE501AUL, 0xB6794C3BUL, 0x976CE0BDUL, 0x04C006BAUL, - 0xC1A94FB6UL, 0x409F60C4UL, 0x5E5C9EC2UL, 0x196A2463UL, - 0x68FB6FAFUL, 0x3E6C53B5UL, 0x1339B2EBUL, 0x3B52EC6FUL, - 0x6DFC511FUL, 0x9B30952CUL, 0xCC814544UL, 0xAF5EBD09UL, - 0xBEE3D004UL, 0xDE334AFDUL, 0x660F2807UL, 0x192E4BB3UL, - 0xC0CBA857UL, 0x45C8740FUL, 0xD20B5F39UL, 0xB9D3FBDBUL, - 0x5579C0BDUL, 0x1A60320AUL, 0xD6A100C6UL, 0x402C7279UL, - 0x679F25FEUL, 0xFB1FA3CCUL, 0x8EA5E9F8UL, 0xDB3222F8UL, - 0x3C7516DFUL, 0xFD616B15UL, 0x2F501EC8UL, 0xAD0552ABUL, - 0x323DB5FAUL, 0xFD238760UL, 0x53317B48UL, 0x3E00DF82UL, - 0x9E5C57BBUL, 0xCA6F8CA0UL, 0x1A87562EUL, 0xDF1769DBUL, - 0xD542A8F6UL, 0x287EFFC3UL, 0xAC6732C6UL, 0x8C4F5573UL, - 0x695B27B0UL, 0xBBCA58C8UL, 0xE1FFA35DUL, 0xB8F011A0UL, - 0x10FA3D98UL, 0xFD2183B8UL, 0x4AFCB56CUL, 0x2DD1D35BUL, - 0x9A53E479UL, 0xB6F84565UL, 0xD28E49BCUL, 0x4BFB9790UL, - 0xE1DDF2DAUL, 0xA4CB7E33UL, 0x62FB1341UL, 0xCEE4C6E8UL, - 0xEF20CADAUL, 0x36774C01UL, 0xD07E9EFEUL, 0x2BF11FB4UL, - 0x95DBDA4DUL, 0xAE909198UL, 0xEAAD8E71UL, 0x6B93D5A0UL, - 0xD08ED1D0UL, 0xAFC725E0UL, 0x8E3C5B2FUL, 0x8E7594B7UL, - 0x8FF6E2FBUL, 0xF2122B64UL, 0x8888B812UL, 0x900DF01CUL, - 0x4FAD5EA0UL, 0x688FC31CUL, 0xD1CFF191UL, 0xB3A8C1ADUL, - 0x2F2F2218UL, 0xBE0E1777UL, 0xEA752DFEUL, 0x8B021FA1UL, - 0xE5A0CC0FUL, 0xB56F74E8UL, 0x18ACF3D6UL, 0xCE89E299UL, - 0xB4A84FE0UL, 0xFD13E0B7UL, 0x7CC43B81UL, 0xD2ADA8D9UL, - 0x165FA266UL, 0x80957705UL, 0x93CC7314UL, 0x211A1477UL, - 0xE6AD2065UL, 0x77B5FA86UL, 0xC75442F5UL, 0xFB9D35CFUL, - 0xEBCDAF0CUL, 0x7B3E89A0UL, 0xD6411BD3UL, 0xAE1E7E49UL, - 0x00250E2DUL, 0x2071B35EUL, 0x226800BBUL, 0x57B8E0AFUL, - 0x2464369BUL, 0xF009B91EUL, 0x5563911DUL, 0x59DFA6AAUL, - 0x78C14389UL, 0xD95A537FUL, 0x207D5BA2UL, 0x02E5B9C5UL, - 0x83260376UL, 0x6295CFA9UL, 0x11C81968UL, 0x4E734A41UL, - 0xB3472DCAUL, 0x7B14A94AUL, 0x1B510052UL, 0x9A532915UL, - 0xD60F573FUL, 0xBC9BC6E4UL, 0x2B60A476UL, 0x81E67400UL, - 0x08BA6FB5UL, 0x571BE91FUL, 0xF296EC6BUL, 0x2A0DD915UL, - 0xB6636521UL, 0xE7B9F9B6UL, 0xFF34052EUL, 0xC5855664UL, - 0x53B02D5DUL, 0xA99F8FA1UL, 0x08BA4799UL, 0x6E85076AUL }, - { 0x4B7A70E9UL, 0xB5B32944UL, 0xDB75092EUL, 0xC4192623UL, - 0xAD6EA6B0UL, 0x49A7DF7DUL, 0x9CEE60B8UL, 0x8FEDB266UL, - 0xECAA8C71UL, 0x699A17FFUL, 0x5664526CUL, 0xC2B19EE1UL, - 0x193602A5UL, 0x75094C29UL, 0xA0591340UL, 0xE4183A3EUL, - 0x3F54989AUL, 0x5B429D65UL, 0x6B8FE4D6UL, 0x99F73FD6UL, - 0xA1D29C07UL, 0xEFE830F5UL, 0x4D2D38E6UL, 0xF0255DC1UL, - 0x4CDD2086UL, 0x8470EB26UL, 0x6382E9C6UL, 0x021ECC5EUL, - 0x09686B3FUL, 0x3EBAEFC9UL, 0x3C971814UL, 0x6B6A70A1UL, - 0x687F3584UL, 0x52A0E286UL, 0xB79C5305UL, 0xAA500737UL, - 0x3E07841CUL, 0x7FDEAE5CUL, 0x8E7D44ECUL, 0x5716F2B8UL, - 0xB03ADA37UL, 0xF0500C0DUL, 0xF01C1F04UL, 0x0200B3FFUL, - 0xAE0CF51AUL, 0x3CB574B2UL, 0x25837A58UL, 0xDC0921BDUL, - 0xD19113F9UL, 0x7CA92FF6UL, 0x94324773UL, 0x22F54701UL, - 0x3AE5E581UL, 0x37C2DADCUL, 0xC8B57634UL, 0x9AF3DDA7UL, - 0xA9446146UL, 0x0FD0030EUL, 0xECC8C73EUL, 0xA4751E41UL, - 0xE238CD99UL, 0x3BEA0E2FUL, 0x3280BBA1UL, 0x183EB331UL, - 0x4E548B38UL, 0x4F6DB908UL, 0x6F420D03UL, 0xF60A04BFUL, - 0x2CB81290UL, 0x24977C79UL, 0x5679B072UL, 0xBCAF89AFUL, - 0xDE9A771FUL, 0xD9930810UL, 0xB38BAE12UL, 0xDCCF3F2EUL, - 0x5512721FUL, 0x2E6B7124UL, 0x501ADDE6UL, 0x9F84CD87UL, - 0x7A584718UL, 0x7408DA17UL, 0xBC9F9ABCUL, 0xE94B7D8CUL, - 0xEC7AEC3AUL, 0xDB851DFAUL, 0x63094366UL, 0xC464C3D2UL, - 0xEF1C1847UL, 0x3215D908UL, 0xDD433B37UL, 0x24C2BA16UL, - 0x12A14D43UL, 0x2A65C451UL, 0x50940002UL, 0x133AE4DDUL, - 0x71DFF89EUL, 0x10314E55UL, 0x81AC77D6UL, 0x5F11199BUL, - 0x043556F1UL, 0xD7A3C76BUL, 0x3C11183BUL, 0x5924A509UL, - 0xF28FE6EDUL, 0x97F1FBFAUL, 0x9EBABF2CUL, 0x1E153C6EUL, - 0x86E34570UL, 0xEAE96FB1UL, 0x860E5E0AUL, 0x5A3E2AB3UL, - 0x771FE71CUL, 0x4E3D06FAUL, 0x2965DCB9UL, 0x99E71D0FUL, - 0x803E89D6UL, 0x5266C825UL, 0x2E4CC978UL, 0x9C10B36AUL, - 0xC6150EBAUL, 0x94E2EA78UL, 0xA5FC3C53UL, 0x1E0A2DF4UL, - 0xF2F74EA7UL, 0x361D2B3DUL, 0x1939260FUL, 0x19C27960UL, - 0x5223A708UL, 0xF71312B6UL, 0xEBADFE6EUL, 0xEAC31F66UL, - 0xE3BC4595UL, 0xA67BC883UL, 0xB17F37D1UL, 0x018CFF28UL, - 0xC332DDEFUL, 0xBE6C5AA5UL, 0x65582185UL, 0x68AB9802UL, - 0xEECEA50FUL, 0xDB2F953BUL, 0x2AEF7DADUL, 0x5B6E2F84UL, - 0x1521B628UL, 0x29076170UL, 0xECDD4775UL, 0x619F1510UL, - 0x13CCA830UL, 0xEB61BD96UL, 0x0334FE1EUL, 0xAA0363CFUL, - 0xB5735C90UL, 0x4C70A239UL, 0xD59E9E0BUL, 0xCBAADE14UL, - 0xEECC86BCUL, 0x60622CA7UL, 0x9CAB5CABUL, 0xB2F3846EUL, - 0x648B1EAFUL, 0x19BDF0CAUL, 0xA02369B9UL, 0x655ABB50UL, - 0x40685A32UL, 0x3C2AB4B3UL, 0x319EE9D5UL, 0xC021B8F7UL, - 0x9B540B19UL, 0x875FA099UL, 0x95F7997EUL, 0x623D7DA8UL, - 0xF837889AUL, 0x97E32D77UL, 0x11ED935FUL, 0x16681281UL, - 0x0E358829UL, 0xC7E61FD6UL, 0x96DEDFA1UL, 0x7858BA99UL, - 0x57F584A5UL, 0x1B227263UL, 0x9B83C3FFUL, 0x1AC24696UL, - 0xCDB30AEBUL, 0x532E3054UL, 0x8FD948E4UL, 0x6DBC3128UL, - 0x58EBF2EFUL, 0x34C6FFEAUL, 0xFE28ED61UL, 0xEE7C3C73UL, - 0x5D4A14D9UL, 0xE864B7E3UL, 0x42105D14UL, 0x203E13E0UL, - 0x45EEE2B6UL, 0xA3AAABEAUL, 0xDB6C4F15UL, 0xFACB4FD0UL, - 0xC742F442UL, 0xEF6ABBB5UL, 0x654F3B1DUL, 0x41CD2105UL, - 0xD81E799EUL, 0x86854DC7UL, 0xE44B476AUL, 0x3D816250UL, - 0xCF62A1F2UL, 0x5B8D2646UL, 0xFC8883A0UL, 0xC1C7B6A3UL, - 0x7F1524C3UL, 0x69CB7492UL, 0x47848A0BUL, 0x5692B285UL, - 0x095BBF00UL, 0xAD19489DUL, 0x1462B174UL, 0x23820E00UL, - 0x58428D2AUL, 0x0C55F5EAUL, 0x1DADF43EUL, 0x233F7061UL, - 0x3372F092UL, 0x8D937E41UL, 0xD65FECF1UL, 0x6C223BDBUL, - 0x7CDE3759UL, 0xCBEE7460UL, 0x4085F2A7UL, 0xCE77326EUL, - 0xA6078084UL, 0x19F8509EUL, 0xE8EFD855UL, 0x61D99735UL, - 0xA969A7AAUL, 0xC50C06C2UL, 0x5A04ABFCUL, 0x800BCADCUL, - 0x9E447A2EUL, 0xC3453484UL, 0xFDD56705UL, 0x0E1E9EC9UL, - 0xDB73DBD3UL, 0x105588CDUL, 0x675FDA79UL, 0xE3674340UL, - 0xC5C43465UL, 0x713E38D8UL, 0x3D28F89EUL, 0xF16DFF20UL, - 0x153E21E7UL, 0x8FB03D4AUL, 0xE6E39F2BUL, 0xDB83ADF7UL }, - { 0xE93D5A68UL, 0x948140F7UL, 0xF64C261CUL, 0x94692934UL, - 0x411520F7UL, 0x7602D4F7UL, 0xBCF46B2EUL, 0xD4A20068UL, - 0xD4082471UL, 0x3320F46AUL, 0x43B7D4B7UL, 0x500061AFUL, - 0x1E39F62EUL, 0x97244546UL, 0x14214F74UL, 0xBF8B8840UL, - 0x4D95FC1DUL, 0x96B591AFUL, 0x70F4DDD3UL, 0x66A02F45UL, - 0xBFBC09ECUL, 0x03BD9785UL, 0x7FAC6DD0UL, 0x31CB8504UL, - 0x96EB27B3UL, 0x55FD3941UL, 0xDA2547E6UL, 0xABCA0A9AUL, - 0x28507825UL, 0x530429F4UL, 0x0A2C86DAUL, 0xE9B66DFBUL, - 0x68DC1462UL, 0xD7486900UL, 0x680EC0A4UL, 0x27A18DEEUL, - 0x4F3FFEA2UL, 0xE887AD8CUL, 0xB58CE006UL, 0x7AF4D6B6UL, - 0xAACE1E7CUL, 0xD3375FECUL, 0xCE78A399UL, 0x406B2A42UL, - 0x20FE9E35UL, 0xD9F385B9UL, 0xEE39D7ABUL, 0x3B124E8BUL, - 0x1DC9FAF7UL, 0x4B6D1856UL, 0x26A36631UL, 0xEAE397B2UL, - 0x3A6EFA74UL, 0xDD5B4332UL, 0x6841E7F7UL, 0xCA7820FBUL, - 0xFB0AF54EUL, 0xD8FEB397UL, 0x454056ACUL, 0xBA489527UL, - 0x55533A3AUL, 0x20838D87UL, 0xFE6BA9B7UL, 0xD096954BUL, - 0x55A867BCUL, 0xA1159A58UL, 0xCCA92963UL, 0x99E1DB33UL, - 0xA62A4A56UL, 0x3F3125F9UL, 0x5EF47E1CUL, 0x9029317CUL, - 0xFDF8E802UL, 0x04272F70UL, 0x80BB155CUL, 0x05282CE3UL, - 0x95C11548UL, 0xE4C66D22UL, 0x48C1133FUL, 0xC70F86DCUL, - 0x07F9C9EEUL, 0x41041F0FUL, 0x404779A4UL, 0x5D886E17UL, - 0x325F51EBUL, 0xD59BC0D1UL, 0xF2BCC18FUL, 0x41113564UL, - 0x257B7834UL, 0x602A9C60UL, 0xDFF8E8A3UL, 0x1F636C1BUL, - 0x0E12B4C2UL, 0x02E1329EUL, 0xAF664FD1UL, 0xCAD18115UL, - 0x6B2395E0UL, 0x333E92E1UL, 0x3B240B62UL, 0xEEBEB922UL, - 0x85B2A20EUL, 0xE6BA0D99UL, 0xDE720C8CUL, 0x2DA2F728UL, - 0xD0127845UL, 0x95B794FDUL, 0x647D0862UL, 0xE7CCF5F0UL, - 0x5449A36FUL, 0x877D48FAUL, 0xC39DFD27UL, 0xF33E8D1EUL, - 0x0A476341UL, 0x992EFF74UL, 0x3A6F6EABUL, 0xF4F8FD37UL, - 0xA812DC60UL, 0xA1EBDDF8UL, 0x991BE14CUL, 0xDB6E6B0DUL, - 0xC67B5510UL, 0x6D672C37UL, 0x2765D43BUL, 0xDCD0E804UL, - 0xF1290DC7UL, 0xCC00FFA3UL, 0xB5390F92UL, 0x690FED0BUL, - 0x667B9FFBUL, 0xCEDB7D9CUL, 0xA091CF0BUL, 0xD9155EA3UL, - 0xBB132F88UL, 0x515BAD24UL, 0x7B9479BFUL, 0x763BD6EBUL, - 0x37392EB3UL, 0xCC115979UL, 0x8026E297UL, 0xF42E312DUL, - 0x6842ADA7UL, 0xC66A2B3BUL, 0x12754CCCUL, 0x782EF11CUL, - 0x6A124237UL, 0xB79251E7UL, 0x06A1BBE6UL, 0x4BFB6350UL, - 0x1A6B1018UL, 0x11CAEDFAUL, 0x3D25BDD8UL, 0xE2E1C3C9UL, - 0x44421659UL, 0x0A121386UL, 0xD90CEC6EUL, 0xD5ABEA2AUL, - 0x64AF674EUL, 0xDA86A85FUL, 0xBEBFE988UL, 0x64E4C3FEUL, - 0x9DBC8057UL, 0xF0F7C086UL, 0x60787BF8UL, 0x6003604DUL, - 0xD1FD8346UL, 0xF6381FB0UL, 0x7745AE04UL, 0xD736FCCCUL, - 0x83426B33UL, 0xF01EAB71UL, 0xB0804187UL, 0x3C005E5FUL, - 0x77A057BEUL, 0xBDE8AE24UL, 0x55464299UL, 0xBF582E61UL, - 0x4E58F48FUL, 0xF2DDFDA2UL, 0xF474EF38UL, 0x8789BDC2UL, - 0x5366F9C3UL, 0xC8B38E74UL, 0xB475F255UL, 0x46FCD9B9UL, - 0x7AEB2661UL, 0x8B1DDF84UL, 0x846A0E79UL, 0x915F95E2UL, - 0x466E598EUL, 0x20B45770UL, 0x8CD55591UL, 0xC902DE4CUL, - 0xB90BACE1UL, 0xBB8205D0UL, 0x11A86248UL, 0x7574A99EUL, - 0xB77F19B6UL, 0xE0A9DC09UL, 0x662D09A1UL, 0xC4324633UL, - 0xE85A1F02UL, 0x09F0BE8CUL, 0x4A99A025UL, 0x1D6EFE10UL, - 0x1AB93D1DUL, 0x0BA5A4DFUL, 0xA186F20FUL, 0x2868F169UL, - 0xDCB7DA83UL, 0x573906FEUL, 0xA1E2CE9BUL, 0x4FCD7F52UL, - 0x50115E01UL, 0xA70683FAUL, 0xA002B5C4UL, 0x0DE6D027UL, - 0x9AF88C27UL, 0x773F8641UL, 0xC3604C06UL, 0x61A806B5UL, - 0xF0177A28UL, 0xC0F586E0UL, 0x006058AAUL, 0x30DC7D62UL, - 0x11E69ED7UL, 0x2338EA63UL, 0x53C2DD94UL, 0xC2C21634UL, - 0xBBCBEE56UL, 0x90BCB6DEUL, 0xEBFC7DA1UL, 0xCE591D76UL, - 0x6F05E409UL, 0x4B7C0188UL, 0x39720A3DUL, 0x7C927C24UL, - 0x86E3725FUL, 0x724D9DB9UL, 0x1AC15BB4UL, 0xD39EB8FCUL, - 0xED545578UL, 0x08FCA5B5UL, 0xD83D7CD3UL, 0x4DAD0FC4UL, - 0x1E50EF5EUL, 0xB161E6F8UL, 0xA28514D9UL, 0x6C51133CUL, - 0x6FD5C7E7UL, 0x56E14EC4UL, 0x362ABFCEUL, 0xDDC6C837UL, - 0xD79A3234UL, 0x92638212UL, 0x670EFA8EUL, 0x406000E0UL }, - { 0x3A39CE37UL, 0xD3FAF5CFUL, 0xABC27737UL, 0x5AC52D1BUL, - 0x5CB0679EUL, 0x4FA33742UL, 0xD3822740UL, 0x99BC9BBEUL, - 0xD5118E9DUL, 0xBF0F7315UL, 0xD62D1C7EUL, 0xC700C47BUL, - 0xB78C1B6BUL, 0x21A19045UL, 0xB26EB1BEUL, 0x6A366EB4UL, - 0x5748AB2FUL, 0xBC946E79UL, 0xC6A376D2UL, 0x6549C2C8UL, - 0x530FF8EEUL, 0x468DDE7DUL, 0xD5730A1DUL, 0x4CD04DC6UL, - 0x2939BBDBUL, 0xA9BA4650UL, 0xAC9526E8UL, 0xBE5EE304UL, - 0xA1FAD5F0UL, 0x6A2D519AUL, 0x63EF8CE2UL, 0x9A86EE22UL, - 0xC089C2B8UL, 0x43242EF6UL, 0xA51E03AAUL, 0x9CF2D0A4UL, - 0x83C061BAUL, 0x9BE96A4DUL, 0x8FE51550UL, 0xBA645BD6UL, - 0x2826A2F9UL, 0xA73A3AE1UL, 0x4BA99586UL, 0xEF5562E9UL, - 0xC72FEFD3UL, 0xF752F7DAUL, 0x3F046F69UL, 0x77FA0A59UL, - 0x80E4A915UL, 0x87B08601UL, 0x9B09E6ADUL, 0x3B3EE593UL, - 0xE990FD5AUL, 0x9E34D797UL, 0x2CF0B7D9UL, 0x022B8B51UL, - 0x96D5AC3AUL, 0x017DA67DUL, 0xD1CF3ED6UL, 0x7C7D2D28UL, - 0x1F9F25CFUL, 0xADF2B89BUL, 0x5AD6B472UL, 0x5A88F54CUL, - 0xE029AC71UL, 0xE019A5E6UL, 0x47B0ACFDUL, 0xED93FA9BUL, - 0xE8D3C48DUL, 0x283B57CCUL, 0xF8D56629UL, 0x79132E28UL, - 0x785F0191UL, 0xED756055UL, 0xF7960E44UL, 0xE3D35E8CUL, - 0x15056DD4UL, 0x88F46DBAUL, 0x03A16125UL, 0x0564F0BDUL, - 0xC3EB9E15UL, 0x3C9057A2UL, 0x97271AECUL, 0xA93A072AUL, - 0x1B3F6D9BUL, 0x1E6321F5UL, 0xF59C66FBUL, 0x26DCF319UL, - 0x7533D928UL, 0xB155FDF5UL, 0x03563482UL, 0x8ABA3CBBUL, - 0x28517711UL, 0xC20AD9F8UL, 0xABCC5167UL, 0xCCAD925FUL, - 0x4DE81751UL, 0x3830DC8EUL, 0x379D5862UL, 0x9320F991UL, - 0xEA7A90C2UL, 0xFB3E7BCEUL, 0x5121CE64UL, 0x774FBE32UL, - 0xA8B6E37EUL, 0xC3293D46UL, 0x48DE5369UL, 0x6413E680UL, - 0xA2AE0810UL, 0xDD6DB224UL, 0x69852DFDUL, 0x09072166UL, - 0xB39A460AUL, 0x6445C0DDUL, 0x586CDECFUL, 0x1C20C8AEUL, - 0x5BBEF7DDUL, 0x1B588D40UL, 0xCCD2017FUL, 0x6BB4E3BBUL, - 0xDDA26A7EUL, 0x3A59FF45UL, 0x3E350A44UL, 0xBCB4CDD5UL, - 0x72EACEA8UL, 0xFA6484BBUL, 0x8D6612AEUL, 0xBF3C6F47UL, - 0xD29BE463UL, 0x542F5D9EUL, 0xAEC2771BUL, 0xF64E6370UL, - 0x740E0D8DUL, 0xE75B1357UL, 0xF8721671UL, 0xAF537D5DUL, - 0x4040CB08UL, 0x4EB4E2CCUL, 0x34D2466AUL, 0x0115AF84UL, - 0xE1B00428UL, 0x95983A1DUL, 0x06B89FB4UL, 0xCE6EA048UL, - 0x6F3F3B82UL, 0x3520AB82UL, 0x011A1D4BUL, 0x277227F8UL, - 0x611560B1UL, 0xE7933FDCUL, 0xBB3A792BUL, 0x344525BDUL, - 0xA08839E1UL, 0x51CE794BUL, 0x2F32C9B7UL, 0xA01FBAC9UL, - 0xE01CC87EUL, 0xBCC7D1F6UL, 0xCF0111C3UL, 0xA1E8AAC7UL, - 0x1A908749UL, 0xD44FBD9AUL, 0xD0DADECBUL, 0xD50ADA38UL, - 0x0339C32AUL, 0xC6913667UL, 0x8DF9317CUL, 0xE0B12B4FUL, - 0xF79E59B7UL, 0x43F5BB3AUL, 0xF2D519FFUL, 0x27D9459CUL, - 0xBF97222CUL, 0x15E6FC2AUL, 0x0F91FC71UL, 0x9B941525UL, - 0xFAE59361UL, 0xCEB69CEBUL, 0xC2A86459UL, 0x12BAA8D1UL, - 0xB6C1075EUL, 0xE3056A0CUL, 0x10D25065UL, 0xCB03A442UL, - 0xE0EC6E0EUL, 0x1698DB3BUL, 0x4C98A0BEUL, 0x3278E964UL, - 0x9F1F9532UL, 0xE0D392DFUL, 0xD3A0342BUL, 0x8971F21EUL, - 0x1B0A7441UL, 0x4BA3348CUL, 0xC5BE7120UL, 0xC37632D8UL, - 0xDF359F8DUL, 0x9B992F2EUL, 0xE60B6F47UL, 0x0FE3F11DUL, - 0xE54CDA54UL, 0x1EDAD891UL, 0xCE6279CFUL, 0xCD3E7E6FUL, - 0x1618B166UL, 0xFD2C1D05UL, 0x848FD2C5UL, 0xF6FB2299UL, - 0xF523F357UL, 0xA6327623UL, 0x93A83531UL, 0x56CCCD02UL, - 0xACF08162UL, 0x5A75EBB5UL, 0x6E163697UL, 0x88D273CCUL, - 0xDE966292UL, 0x81B949D0UL, 0x4C50901BUL, 0x71C65614UL, - 0xE6C6C7BDUL, 0x327A140AUL, 0x45E1D006UL, 0xC3F27B9AUL, - 0xC9AA53FDUL, 0x62A80F00UL, 0xBB25BFE2UL, 0x35BDD2F6UL, - 0x71126905UL, 0xB2040222UL, 0xB6CBCF7CUL, 0xCD769C2BUL, - 0x53113EC0UL, 0x1640E3D3UL, 0x38ABBD60UL, 0x2547ADF0UL, - 0xBA38209CUL, 0xF746CE76UL, 0x77AFA1C5UL, 0x20756060UL, - 0x85CBFE4EUL, 0x8AE88DD8UL, 0x7AAAF9B0UL, 0x4CF9AA7EUL, - 0x1948C25CUL, 0x02FB8A8CUL, 0x01C36AE4UL, 0xD6EBE1F9UL, - 0x90D4F869UL, 0xA65CDEA0UL, 0x3F09252DUL, 0xC208E69FUL, - 0xB74E6132UL, 0xCE77E25BUL, 0x578FDFE3UL, 0x3AC372E6UL } -}; - - /** - Initialize the Blowfish block cipher - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful - */ -int blowfish_setup(const unsigned char *key, int keylen, int num_rounds, - symmetric_key *skey) -{ - ulong32 x, y, z, A; - unsigned char B[8]; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - /* check key length */ - if (keylen < 8 || keylen > 56) { - return CRYPT_INVALID_KEYSIZE; - } - - /* check rounds */ - if (num_rounds != 0 && num_rounds != 16) { - return CRYPT_INVALID_ROUNDS; - } - - /* load in key bytes (Supplied by David Hopwood) */ - for (x = y = 0; x < 18; x++) { - A = 0; - for (z = 0; z < 4; z++) { - A = (A << 8) | ((ulong32)key[y++] & 255); - if (y == (ulong32)keylen) { - y = 0; - } - } - skey->blowfish.K[x] = ORIG_P[x] ^ A; - } - - /* copy sboxes */ - for (x = 0; x < 4; x++) { - for (y = 0; y < 256; y++) { - skey->blowfish.S[x][y] = ORIG_S[x][y]; - } - } - - /* encrypt K array */ - for (x = 0; x < 8; x++) { - B[x] = 0; - } - - for (x = 0; x < 18; x += 2) { - /* encrypt it */ - blowfish_ecb_encrypt(B, B, skey); - /* copy it */ - LOAD32H(skey->blowfish.K[x], &B[0]); - LOAD32H(skey->blowfish.K[x+1], &B[4]); - } - - /* encrypt S array */ - for (x = 0; x < 4; x++) { - for (y = 0; y < 256; y += 2) { - /* encrypt it */ - blowfish_ecb_encrypt(B, B, skey); - /* copy it */ - LOAD32H(skey->blowfish.S[x][y], &B[0]); - LOAD32H(skey->blowfish.S[x][y+1], &B[4]); - } - } - -#ifdef LTC_CLEAN_STACK - zeromem(B, sizeof(B)); -#endif - - return CRYPT_OK; -} - -#ifndef __GNUC__ -#define F(x) ((S1[byte(x,3)] + S2[byte(x,2)]) ^ S3[byte(x,1)]) + S4[byte(x,0)] -#else -#define F(x) ((skey->blowfish.S[0][byte(x,3)] + skey->blowfish.S[1][byte(x,2)]) ^ skey->blowfish.S[2][byte(x,1)]) + skey->blowfish.S[3][byte(x,0)] -#endif - -/** - Encrypts a block of text with Blowfish - @param pt The input plaintext (8 bytes) - @param ct The output ciphertext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -#ifdef LTC_CLEAN_STACK -static int _blowfish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#else -int blowfish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#endif -{ - ulong32 L, R; - int r; -#ifndef __GNUC__ - ulong32 *S1, *S2, *S3, *S4; -#endif - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - -#ifndef __GNUC__ - S1 = skey->blowfish.S[0]; - S2 = skey->blowfish.S[1]; - S3 = skey->blowfish.S[2]; - S4 = skey->blowfish.S[3]; -#endif - - /* load it */ - LOAD32H(L, &pt[0]); - LOAD32H(R, &pt[4]); - - /* do 16 rounds */ - for (r = 0; r < 16; ) { - L ^= skey->blowfish.K[r++]; R ^= F(L); - R ^= skey->blowfish.K[r++]; L ^= F(R); - L ^= skey->blowfish.K[r++]; R ^= F(L); - R ^= skey->blowfish.K[r++]; L ^= F(R); - } - - /* last keying */ - R ^= skey->blowfish.K[17]; - L ^= skey->blowfish.K[16]; - - /* store */ - STORE32H(R, &ct[0]); - STORE32H(L, &ct[4]); - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int blowfish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - int err = _blowfish_ecb_encrypt(pt, ct, skey); - burn_stack(sizeof(ulong32) * 2 + sizeof(int)); - return err; -} -#endif - -/** - Decrypts a block of text with Blowfish - @param ct The input ciphertext (8 bytes) - @param pt The output plaintext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -#ifdef LTC_CLEAN_STACK -static int _blowfish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#else -int blowfish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#endif -{ - ulong32 L, R; - int r; -#ifndef __GNUC__ - ulong32 *S1, *S2, *S3, *S4; -#endif - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - -#ifndef __GNUC__ - S1 = skey->blowfish.S[0]; - S2 = skey->blowfish.S[1]; - S3 = skey->blowfish.S[2]; - S4 = skey->blowfish.S[3]; -#endif - - /* load it */ - LOAD32H(R, &ct[0]); - LOAD32H(L, &ct[4]); - - /* undo last keying */ - R ^= skey->blowfish.K[17]; - L ^= skey->blowfish.K[16]; - - /* do 16 rounds */ - for (r = 15; r > 0; ) { - L ^= F(R); R ^= skey->blowfish.K[r--]; - R ^= F(L); L ^= skey->blowfish.K[r--]; - L ^= F(R); R ^= skey->blowfish.K[r--]; - R ^= F(L); L ^= skey->blowfish.K[r--]; - } - - /* store */ - STORE32H(L, &pt[0]); - STORE32H(R, &pt[4]); - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int blowfish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - int err = _blowfish_ecb_decrypt(ct, pt, skey); - burn_stack(sizeof(ulong32) * 2 + sizeof(int)); - return err; -} -#endif - - -/** - Performs a self-test of the Blowfish block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int blowfish_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - int err; - symmetric_key key; - static const struct { - unsigned char key[8], pt[8], ct[8]; - } tests[] = { - { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - { 0x4E, 0xF9, 0x97, 0x45, 0x61, 0x98, 0xDD, 0x78} - }, - { - { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, - { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, - { 0x51, 0x86, 0x6F, 0xD5, 0xB8, 0x5E, 0xCB, 0x8A} - }, - { - { 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, - { 0x7D, 0x85, 0x6F, 0x9A, 0x61, 0x30, 0x63, 0xF2} - } - }; - unsigned char tmp[2][8]; - int x, y; - - for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) { - /* setup key */ - if ((err = blowfish_setup(tests[x].key, 8, 16, &key)) != CRYPT_OK) { - return err; - } - - /* encrypt and decrypt */ - blowfish_ecb_encrypt(tests[x].pt, tmp[0], &key); - blowfish_ecb_decrypt(tmp[0], tmp[1], &key); - - /* compare */ - if ((compare_testvector(tmp[0], 8, tests[x].ct, 8, "Blowfish Encrypt", x) != 0) || - (compare_testvector(tmp[1], 8, tests[x].pt, 8, "Blowfish Decrypt", x) != 0)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ - for (y = 0; y < 8; y++) tmp[0][y] = 0; - for (y = 0; y < 1000; y++) blowfish_ecb_encrypt(tmp[0], tmp[0], &key); - for (y = 0; y < 1000; y++) blowfish_ecb_decrypt(tmp[0], tmp[0], &key); - for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; - } - return CRYPT_OK; - #endif -} - -/** Terminate the context - @param skey The scheduled key -*/ -void blowfish_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int blowfish_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - - if (*keysize < 8) { - return CRYPT_INVALID_KEYSIZE; - } else if (*keysize > 56) { - *keysize = 56; - } - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/camellia.c b/src/libtomcrypt/src/ciphers/camellia.c deleted file mode 100644 index 9edc554b92..0000000000 --- a/src/libtomcrypt/src/ciphers/camellia.c +++ /dev/null @@ -1,726 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file camellia.c - Implementation by Tom St Denis of Elliptic Semiconductor -*/ - -#include "tomcrypt.h" - -#ifdef LTC_CAMELLIA - -const struct ltc_cipher_descriptor camellia_desc = { - "camellia", - 23, - 16, 32, 16, 18, - &camellia_setup, - &camellia_ecb_encrypt, - &camellia_ecb_decrypt, - &camellia_test, - &camellia_done, - &camellia_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -static const ulong32 SP1110[] = { -0x70707000, 0x82828200, 0x2c2c2c00, 0xececec00, 0xb3b3b300, 0x27272700, 0xc0c0c000, 0xe5e5e500, -0xe4e4e400, 0x85858500, 0x57575700, 0x35353500, 0xeaeaea00, 0x0c0c0c00, 0xaeaeae00, 0x41414100, -0x23232300, 0xefefef00, 0x6b6b6b00, 0x93939300, 0x45454500, 0x19191900, 0xa5a5a500, 0x21212100, -0xededed00, 0x0e0e0e00, 0x4f4f4f00, 0x4e4e4e00, 0x1d1d1d00, 0x65656500, 0x92929200, 0xbdbdbd00, -0x86868600, 0xb8b8b800, 0xafafaf00, 0x8f8f8f00, 0x7c7c7c00, 0xebebeb00, 0x1f1f1f00, 0xcecece00, -0x3e3e3e00, 0x30303000, 0xdcdcdc00, 0x5f5f5f00, 0x5e5e5e00, 0xc5c5c500, 0x0b0b0b00, 0x1a1a1a00, -0xa6a6a600, 0xe1e1e100, 0x39393900, 0xcacaca00, 0xd5d5d500, 0x47474700, 0x5d5d5d00, 0x3d3d3d00, -0xd9d9d900, 0x01010100, 0x5a5a5a00, 0xd6d6d600, 0x51515100, 0x56565600, 0x6c6c6c00, 0x4d4d4d00, -0x8b8b8b00, 0x0d0d0d00, 0x9a9a9a00, 0x66666600, 0xfbfbfb00, 0xcccccc00, 0xb0b0b000, 0x2d2d2d00, -0x74747400, 0x12121200, 0x2b2b2b00, 0x20202000, 0xf0f0f000, 0xb1b1b100, 0x84848400, 0x99999900, -0xdfdfdf00, 0x4c4c4c00, 0xcbcbcb00, 0xc2c2c200, 0x34343400, 0x7e7e7e00, 0x76767600, 0x05050500, -0x6d6d6d00, 0xb7b7b700, 0xa9a9a900, 0x31313100, 0xd1d1d100, 0x17171700, 0x04040400, 0xd7d7d700, -0x14141400, 0x58585800, 0x3a3a3a00, 0x61616100, 0xdedede00, 0x1b1b1b00, 0x11111100, 0x1c1c1c00, -0x32323200, 0x0f0f0f00, 0x9c9c9c00, 0x16161600, 0x53535300, 0x18181800, 0xf2f2f200, 0x22222200, -0xfefefe00, 0x44444400, 0xcfcfcf00, 0xb2b2b200, 0xc3c3c300, 0xb5b5b500, 0x7a7a7a00, 0x91919100, -0x24242400, 0x08080800, 0xe8e8e800, 0xa8a8a800, 0x60606000, 0xfcfcfc00, 0x69696900, 0x50505000, -0xaaaaaa00, 0xd0d0d000, 0xa0a0a000, 0x7d7d7d00, 0xa1a1a100, 0x89898900, 0x62626200, 0x97979700, -0x54545400, 0x5b5b5b00, 0x1e1e1e00, 0x95959500, 0xe0e0e000, 0xffffff00, 0x64646400, 0xd2d2d200, -0x10101000, 0xc4c4c400, 0x00000000, 0x48484800, 0xa3a3a300, 0xf7f7f700, 0x75757500, 0xdbdbdb00, -0x8a8a8a00, 0x03030300, 0xe6e6e600, 0xdadada00, 0x09090900, 0x3f3f3f00, 0xdddddd00, 0x94949400, -0x87878700, 0x5c5c5c00, 0x83838300, 0x02020200, 0xcdcdcd00, 0x4a4a4a00, 0x90909000, 0x33333300, -0x73737300, 0x67676700, 0xf6f6f600, 0xf3f3f300, 0x9d9d9d00, 0x7f7f7f00, 0xbfbfbf00, 0xe2e2e200, -0x52525200, 0x9b9b9b00, 0xd8d8d800, 0x26262600, 0xc8c8c800, 0x37373700, 0xc6c6c600, 0x3b3b3b00, -0x81818100, 0x96969600, 0x6f6f6f00, 0x4b4b4b00, 0x13131300, 0xbebebe00, 0x63636300, 0x2e2e2e00, -0xe9e9e900, 0x79797900, 0xa7a7a700, 0x8c8c8c00, 0x9f9f9f00, 0x6e6e6e00, 0xbcbcbc00, 0x8e8e8e00, -0x29292900, 0xf5f5f500, 0xf9f9f900, 0xb6b6b600, 0x2f2f2f00, 0xfdfdfd00, 0xb4b4b400, 0x59595900, -0x78787800, 0x98989800, 0x06060600, 0x6a6a6a00, 0xe7e7e700, 0x46464600, 0x71717100, 0xbababa00, -0xd4d4d400, 0x25252500, 0xababab00, 0x42424200, 0x88888800, 0xa2a2a200, 0x8d8d8d00, 0xfafafa00, -0x72727200, 0x07070700, 0xb9b9b900, 0x55555500, 0xf8f8f800, 0xeeeeee00, 0xacacac00, 0x0a0a0a00, -0x36363600, 0x49494900, 0x2a2a2a00, 0x68686800, 0x3c3c3c00, 0x38383800, 0xf1f1f100, 0xa4a4a400, -0x40404000, 0x28282800, 0xd3d3d300, 0x7b7b7b00, 0xbbbbbb00, 0xc9c9c900, 0x43434300, 0xc1c1c100, -0x15151500, 0xe3e3e300, 0xadadad00, 0xf4f4f400, 0x77777700, 0xc7c7c700, 0x80808000, 0x9e9e9e00, -}; - -static const ulong32 SP0222[] = { -0x00e0e0e0, 0x00050505, 0x00585858, 0x00d9d9d9, 0x00676767, 0x004e4e4e, 0x00818181, 0x00cbcbcb, -0x00c9c9c9, 0x000b0b0b, 0x00aeaeae, 0x006a6a6a, 0x00d5d5d5, 0x00181818, 0x005d5d5d, 0x00828282, -0x00464646, 0x00dfdfdf, 0x00d6d6d6, 0x00272727, 0x008a8a8a, 0x00323232, 0x004b4b4b, 0x00424242, -0x00dbdbdb, 0x001c1c1c, 0x009e9e9e, 0x009c9c9c, 0x003a3a3a, 0x00cacaca, 0x00252525, 0x007b7b7b, -0x000d0d0d, 0x00717171, 0x005f5f5f, 0x001f1f1f, 0x00f8f8f8, 0x00d7d7d7, 0x003e3e3e, 0x009d9d9d, -0x007c7c7c, 0x00606060, 0x00b9b9b9, 0x00bebebe, 0x00bcbcbc, 0x008b8b8b, 0x00161616, 0x00343434, -0x004d4d4d, 0x00c3c3c3, 0x00727272, 0x00959595, 0x00ababab, 0x008e8e8e, 0x00bababa, 0x007a7a7a, -0x00b3b3b3, 0x00020202, 0x00b4b4b4, 0x00adadad, 0x00a2a2a2, 0x00acacac, 0x00d8d8d8, 0x009a9a9a, -0x00171717, 0x001a1a1a, 0x00353535, 0x00cccccc, 0x00f7f7f7, 0x00999999, 0x00616161, 0x005a5a5a, -0x00e8e8e8, 0x00242424, 0x00565656, 0x00404040, 0x00e1e1e1, 0x00636363, 0x00090909, 0x00333333, -0x00bfbfbf, 0x00989898, 0x00979797, 0x00858585, 0x00686868, 0x00fcfcfc, 0x00ececec, 0x000a0a0a, -0x00dadada, 0x006f6f6f, 0x00535353, 0x00626262, 0x00a3a3a3, 0x002e2e2e, 0x00080808, 0x00afafaf, -0x00282828, 0x00b0b0b0, 0x00747474, 0x00c2c2c2, 0x00bdbdbd, 0x00363636, 0x00222222, 0x00383838, -0x00646464, 0x001e1e1e, 0x00393939, 0x002c2c2c, 0x00a6a6a6, 0x00303030, 0x00e5e5e5, 0x00444444, -0x00fdfdfd, 0x00888888, 0x009f9f9f, 0x00656565, 0x00878787, 0x006b6b6b, 0x00f4f4f4, 0x00232323, -0x00484848, 0x00101010, 0x00d1d1d1, 0x00515151, 0x00c0c0c0, 0x00f9f9f9, 0x00d2d2d2, 0x00a0a0a0, -0x00555555, 0x00a1a1a1, 0x00414141, 0x00fafafa, 0x00434343, 0x00131313, 0x00c4c4c4, 0x002f2f2f, -0x00a8a8a8, 0x00b6b6b6, 0x003c3c3c, 0x002b2b2b, 0x00c1c1c1, 0x00ffffff, 0x00c8c8c8, 0x00a5a5a5, -0x00202020, 0x00898989, 0x00000000, 0x00909090, 0x00474747, 0x00efefef, 0x00eaeaea, 0x00b7b7b7, -0x00151515, 0x00060606, 0x00cdcdcd, 0x00b5b5b5, 0x00121212, 0x007e7e7e, 0x00bbbbbb, 0x00292929, -0x000f0f0f, 0x00b8b8b8, 0x00070707, 0x00040404, 0x009b9b9b, 0x00949494, 0x00212121, 0x00666666, -0x00e6e6e6, 0x00cecece, 0x00ededed, 0x00e7e7e7, 0x003b3b3b, 0x00fefefe, 0x007f7f7f, 0x00c5c5c5, -0x00a4a4a4, 0x00373737, 0x00b1b1b1, 0x004c4c4c, 0x00919191, 0x006e6e6e, 0x008d8d8d, 0x00767676, -0x00030303, 0x002d2d2d, 0x00dedede, 0x00969696, 0x00262626, 0x007d7d7d, 0x00c6c6c6, 0x005c5c5c, -0x00d3d3d3, 0x00f2f2f2, 0x004f4f4f, 0x00191919, 0x003f3f3f, 0x00dcdcdc, 0x00797979, 0x001d1d1d, -0x00525252, 0x00ebebeb, 0x00f3f3f3, 0x006d6d6d, 0x005e5e5e, 0x00fbfbfb, 0x00696969, 0x00b2b2b2, -0x00f0f0f0, 0x00313131, 0x000c0c0c, 0x00d4d4d4, 0x00cfcfcf, 0x008c8c8c, 0x00e2e2e2, 0x00757575, -0x00a9a9a9, 0x004a4a4a, 0x00575757, 0x00848484, 0x00111111, 0x00454545, 0x001b1b1b, 0x00f5f5f5, -0x00e4e4e4, 0x000e0e0e, 0x00737373, 0x00aaaaaa, 0x00f1f1f1, 0x00dddddd, 0x00595959, 0x00141414, -0x006c6c6c, 0x00929292, 0x00545454, 0x00d0d0d0, 0x00787878, 0x00707070, 0x00e3e3e3, 0x00494949, -0x00808080, 0x00505050, 0x00a7a7a7, 0x00f6f6f6, 0x00777777, 0x00939393, 0x00868686, 0x00838383, -0x002a2a2a, 0x00c7c7c7, 0x005b5b5b, 0x00e9e9e9, 0x00eeeeee, 0x008f8f8f, 0x00010101, 0x003d3d3d, -}; - -static const ulong32 SP3033[] = { -0x38003838, 0x41004141, 0x16001616, 0x76007676, 0xd900d9d9, 0x93009393, 0x60006060, 0xf200f2f2, -0x72007272, 0xc200c2c2, 0xab00abab, 0x9a009a9a, 0x75007575, 0x06000606, 0x57005757, 0xa000a0a0, -0x91009191, 0xf700f7f7, 0xb500b5b5, 0xc900c9c9, 0xa200a2a2, 0x8c008c8c, 0xd200d2d2, 0x90009090, -0xf600f6f6, 0x07000707, 0xa700a7a7, 0x27002727, 0x8e008e8e, 0xb200b2b2, 0x49004949, 0xde00dede, -0x43004343, 0x5c005c5c, 0xd700d7d7, 0xc700c7c7, 0x3e003e3e, 0xf500f5f5, 0x8f008f8f, 0x67006767, -0x1f001f1f, 0x18001818, 0x6e006e6e, 0xaf00afaf, 0x2f002f2f, 0xe200e2e2, 0x85008585, 0x0d000d0d, -0x53005353, 0xf000f0f0, 0x9c009c9c, 0x65006565, 0xea00eaea, 0xa300a3a3, 0xae00aeae, 0x9e009e9e, -0xec00ecec, 0x80008080, 0x2d002d2d, 0x6b006b6b, 0xa800a8a8, 0x2b002b2b, 0x36003636, 0xa600a6a6, -0xc500c5c5, 0x86008686, 0x4d004d4d, 0x33003333, 0xfd00fdfd, 0x66006666, 0x58005858, 0x96009696, -0x3a003a3a, 0x09000909, 0x95009595, 0x10001010, 0x78007878, 0xd800d8d8, 0x42004242, 0xcc00cccc, -0xef00efef, 0x26002626, 0xe500e5e5, 0x61006161, 0x1a001a1a, 0x3f003f3f, 0x3b003b3b, 0x82008282, -0xb600b6b6, 0xdb00dbdb, 0xd400d4d4, 0x98009898, 0xe800e8e8, 0x8b008b8b, 0x02000202, 0xeb00ebeb, -0x0a000a0a, 0x2c002c2c, 0x1d001d1d, 0xb000b0b0, 0x6f006f6f, 0x8d008d8d, 0x88008888, 0x0e000e0e, -0x19001919, 0x87008787, 0x4e004e4e, 0x0b000b0b, 0xa900a9a9, 0x0c000c0c, 0x79007979, 0x11001111, -0x7f007f7f, 0x22002222, 0xe700e7e7, 0x59005959, 0xe100e1e1, 0xda00dada, 0x3d003d3d, 0xc800c8c8, -0x12001212, 0x04000404, 0x74007474, 0x54005454, 0x30003030, 0x7e007e7e, 0xb400b4b4, 0x28002828, -0x55005555, 0x68006868, 0x50005050, 0xbe00bebe, 0xd000d0d0, 0xc400c4c4, 0x31003131, 0xcb00cbcb, -0x2a002a2a, 0xad00adad, 0x0f000f0f, 0xca00caca, 0x70007070, 0xff00ffff, 0x32003232, 0x69006969, -0x08000808, 0x62006262, 0x00000000, 0x24002424, 0xd100d1d1, 0xfb00fbfb, 0xba00baba, 0xed00eded, -0x45004545, 0x81008181, 0x73007373, 0x6d006d6d, 0x84008484, 0x9f009f9f, 0xee00eeee, 0x4a004a4a, -0xc300c3c3, 0x2e002e2e, 0xc100c1c1, 0x01000101, 0xe600e6e6, 0x25002525, 0x48004848, 0x99009999, -0xb900b9b9, 0xb300b3b3, 0x7b007b7b, 0xf900f9f9, 0xce00cece, 0xbf00bfbf, 0xdf00dfdf, 0x71007171, -0x29002929, 0xcd00cdcd, 0x6c006c6c, 0x13001313, 0x64006464, 0x9b009b9b, 0x63006363, 0x9d009d9d, -0xc000c0c0, 0x4b004b4b, 0xb700b7b7, 0xa500a5a5, 0x89008989, 0x5f005f5f, 0xb100b1b1, 0x17001717, -0xf400f4f4, 0xbc00bcbc, 0xd300d3d3, 0x46004646, 0xcf00cfcf, 0x37003737, 0x5e005e5e, 0x47004747, -0x94009494, 0xfa00fafa, 0xfc00fcfc, 0x5b005b5b, 0x97009797, 0xfe00fefe, 0x5a005a5a, 0xac00acac, -0x3c003c3c, 0x4c004c4c, 0x03000303, 0x35003535, 0xf300f3f3, 0x23002323, 0xb800b8b8, 0x5d005d5d, -0x6a006a6a, 0x92009292, 0xd500d5d5, 0x21002121, 0x44004444, 0x51005151, 0xc600c6c6, 0x7d007d7d, -0x39003939, 0x83008383, 0xdc00dcdc, 0xaa00aaaa, 0x7c007c7c, 0x77007777, 0x56005656, 0x05000505, -0x1b001b1b, 0xa400a4a4, 0x15001515, 0x34003434, 0x1e001e1e, 0x1c001c1c, 0xf800f8f8, 0x52005252, -0x20002020, 0x14001414, 0xe900e9e9, 0xbd00bdbd, 0xdd00dddd, 0xe400e4e4, 0xa100a1a1, 0xe000e0e0, -0x8a008a8a, 0xf100f1f1, 0xd600d6d6, 0x7a007a7a, 0xbb00bbbb, 0xe300e3e3, 0x40004040, 0x4f004f4f, -}; - -static const ulong32 SP4404[] = { -0x70700070, 0x2c2c002c, 0xb3b300b3, 0xc0c000c0, 0xe4e400e4, 0x57570057, 0xeaea00ea, 0xaeae00ae, -0x23230023, 0x6b6b006b, 0x45450045, 0xa5a500a5, 0xeded00ed, 0x4f4f004f, 0x1d1d001d, 0x92920092, -0x86860086, 0xafaf00af, 0x7c7c007c, 0x1f1f001f, 0x3e3e003e, 0xdcdc00dc, 0x5e5e005e, 0x0b0b000b, -0xa6a600a6, 0x39390039, 0xd5d500d5, 0x5d5d005d, 0xd9d900d9, 0x5a5a005a, 0x51510051, 0x6c6c006c, -0x8b8b008b, 0x9a9a009a, 0xfbfb00fb, 0xb0b000b0, 0x74740074, 0x2b2b002b, 0xf0f000f0, 0x84840084, -0xdfdf00df, 0xcbcb00cb, 0x34340034, 0x76760076, 0x6d6d006d, 0xa9a900a9, 0xd1d100d1, 0x04040004, -0x14140014, 0x3a3a003a, 0xdede00de, 0x11110011, 0x32320032, 0x9c9c009c, 0x53530053, 0xf2f200f2, -0xfefe00fe, 0xcfcf00cf, 0xc3c300c3, 0x7a7a007a, 0x24240024, 0xe8e800e8, 0x60600060, 0x69690069, -0xaaaa00aa, 0xa0a000a0, 0xa1a100a1, 0x62620062, 0x54540054, 0x1e1e001e, 0xe0e000e0, 0x64640064, -0x10100010, 0x00000000, 0xa3a300a3, 0x75750075, 0x8a8a008a, 0xe6e600e6, 0x09090009, 0xdddd00dd, -0x87870087, 0x83830083, 0xcdcd00cd, 0x90900090, 0x73730073, 0xf6f600f6, 0x9d9d009d, 0xbfbf00bf, -0x52520052, 0xd8d800d8, 0xc8c800c8, 0xc6c600c6, 0x81810081, 0x6f6f006f, 0x13130013, 0x63630063, -0xe9e900e9, 0xa7a700a7, 0x9f9f009f, 0xbcbc00bc, 0x29290029, 0xf9f900f9, 0x2f2f002f, 0xb4b400b4, -0x78780078, 0x06060006, 0xe7e700e7, 0x71710071, 0xd4d400d4, 0xabab00ab, 0x88880088, 0x8d8d008d, -0x72720072, 0xb9b900b9, 0xf8f800f8, 0xacac00ac, 0x36360036, 0x2a2a002a, 0x3c3c003c, 0xf1f100f1, -0x40400040, 0xd3d300d3, 0xbbbb00bb, 0x43430043, 0x15150015, 0xadad00ad, 0x77770077, 0x80800080, -0x82820082, 0xecec00ec, 0x27270027, 0xe5e500e5, 0x85850085, 0x35350035, 0x0c0c000c, 0x41410041, -0xefef00ef, 0x93930093, 0x19190019, 0x21210021, 0x0e0e000e, 0x4e4e004e, 0x65650065, 0xbdbd00bd, -0xb8b800b8, 0x8f8f008f, 0xebeb00eb, 0xcece00ce, 0x30300030, 0x5f5f005f, 0xc5c500c5, 0x1a1a001a, -0xe1e100e1, 0xcaca00ca, 0x47470047, 0x3d3d003d, 0x01010001, 0xd6d600d6, 0x56560056, 0x4d4d004d, -0x0d0d000d, 0x66660066, 0xcccc00cc, 0x2d2d002d, 0x12120012, 0x20200020, 0xb1b100b1, 0x99990099, -0x4c4c004c, 0xc2c200c2, 0x7e7e007e, 0x05050005, 0xb7b700b7, 0x31310031, 0x17170017, 0xd7d700d7, -0x58580058, 0x61610061, 0x1b1b001b, 0x1c1c001c, 0x0f0f000f, 0x16160016, 0x18180018, 0x22220022, -0x44440044, 0xb2b200b2, 0xb5b500b5, 0x91910091, 0x08080008, 0xa8a800a8, 0xfcfc00fc, 0x50500050, -0xd0d000d0, 0x7d7d007d, 0x89890089, 0x97970097, 0x5b5b005b, 0x95950095, 0xffff00ff, 0xd2d200d2, -0xc4c400c4, 0x48480048, 0xf7f700f7, 0xdbdb00db, 0x03030003, 0xdada00da, 0x3f3f003f, 0x94940094, -0x5c5c005c, 0x02020002, 0x4a4a004a, 0x33330033, 0x67670067, 0xf3f300f3, 0x7f7f007f, 0xe2e200e2, -0x9b9b009b, 0x26260026, 0x37370037, 0x3b3b003b, 0x96960096, 0x4b4b004b, 0xbebe00be, 0x2e2e002e, -0x79790079, 0x8c8c008c, 0x6e6e006e, 0x8e8e008e, 0xf5f500f5, 0xb6b600b6, 0xfdfd00fd, 0x59590059, -0x98980098, 0x6a6a006a, 0x46460046, 0xbaba00ba, 0x25250025, 0x42420042, 0xa2a200a2, 0xfafa00fa, -0x07070007, 0x55550055, 0xeeee00ee, 0x0a0a000a, 0x49490049, 0x68680068, 0x38380038, 0xa4a400a4, -0x28280028, 0x7b7b007b, 0xc9c900c9, 0xc1c100c1, 0xe3e300e3, 0xf4f400f4, 0xc7c700c7, 0x9e9e009e, -}; - -static const ulong64 key_sigma[] = { - CONST64(0xA09E667F3BCC908B), - CONST64(0xB67AE8584CAA73B2), - CONST64(0xC6EF372FE94F82BE), - CONST64(0x54FF53A5F1D36F1C), - CONST64(0x10E527FADE682D1D), - CONST64(0xB05688C2B3E6C1FD) -}; - -static ulong64 F(ulong64 x) -{ - ulong32 D, U; - -#define loc(i) ((8-i)*8) - - D = SP1110[(x >> loc(8)) & 0xFF] ^ SP0222[(x >> loc(5)) & 0xFF] ^ SP3033[(x >> loc(6)) & 0xFF] ^ SP4404[(x >> loc(7)) & 0xFF]; - U = SP1110[(x >> loc(1)) & 0xFF] ^ SP0222[(x >> loc(2)) & 0xFF] ^ SP3033[(x >> loc(3)) & 0xFF] ^ SP4404[(x >> loc(4)) & 0xFF]; - - D ^= U; - U = D ^ RORc(U, 8); - - return ((ulong64)U) | (((ulong64)D) << CONST64(32)); -} - -static void rot_128(unsigned char *in, unsigned count, unsigned char *out) -{ - unsigned x, w, b; - - w = count >> 3; - b = count & 7; - - for (x = 0; x < 16; x++) { - out[x] = (in[(x+w)&15] << b) | (in[(x+w+1)&15] >> (8 - b)); - } -} - -int camellia_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - unsigned char T[48], kA[16], kB[16], kR[16], kL[16]; - int x; - ulong64 A, B; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - /* Valid sizes (in bytes) are 16, 24, 32 */ - if (keylen != 16 && keylen != 24 && keylen != 32) { - return CRYPT_INVALID_KEYSIZE; - } - - /* number of rounds */ - skey->camellia.R = (keylen == 16) ? 18 : 24; - - if (num_rounds != 0 && num_rounds != skey->camellia.R) { - return CRYPT_INVALID_ROUNDS; - } - - /* expand key */ - if (keylen == 16) { - for (x = 0; x < 16; x++) { - T[x] = key[x]; - T[x + 16] = 0; - } - } else if (keylen == 24) { - for (x = 0; x < 24; x++) { - T[x] = key[x]; - } - for (x = 24; x < 32; x++) { - T[x] = key[x-8] ^ 0xFF; - } - } else { - for (x = 0; x < 32; x++) { - T[x] = key[x]; - } - } - - for (x = 0; x < 16; x++) { - kL[x] = T[x]; - kR[x] = T[x + 16]; - } - - for (x = 32; x < 48; x++) { - T[x] = T[x - 32] ^ T[x - 16]; - } - - /* first two rounds */ - LOAD64H(A, T+32); LOAD64H(B, T+40); - B ^= F(A ^ key_sigma[0]); - A ^= F(B ^ key_sigma[1]); - STORE64H(A, T+32); STORE64H(B, T+40); - - /* xor kL in */ - for (x = 0; x < 16; x++) { T[x+32] ^= kL[x]; } - - /* next two rounds */ - LOAD64H(A, T+32); LOAD64H(B, T+40); - B ^= F(A ^ key_sigma[2]); - A ^= F(B ^ key_sigma[3]); - STORE64H(A, T+32); STORE64H(B, T+40); - - /* grab KA */ - for (x = 0; x < 16; x++) { kA[x] = T[x+32]; } - - /* xor kR in */ - for (x = 0; x < 16; x++) { T[x+32] ^= kR[x]; } - - if (keylen == 16) { - /* grab whitening keys kw1 and kw2 */ - LOAD64H(skey->camellia.kw[0], kL); - LOAD64H(skey->camellia.kw[1], kL+8); - - /* k1-k2 */ - LOAD64H(skey->camellia.k[0], kA); - LOAD64H(skey->camellia.k[1], kA+8); - - /* rotate kL by 15, k3/k4 */ - rot_128(kL, 15, T+32); - LOAD64H(skey->camellia.k[2], T+32); - LOAD64H(skey->camellia.k[3], T+40); - - /* rotate kA by 15, k5/k6 */ - rot_128(kA, 15, T+32); - LOAD64H(skey->camellia.k[4], T+32); - LOAD64H(skey->camellia.k[5], T+40); - - /* rotate kA by 30, kl1, kl2 */ - rot_128(kA, 30, T+32); - LOAD64H(skey->camellia.kl[0], T+32); - LOAD64H(skey->camellia.kl[1], T+40); - - /* rotate kL by 45, k7/k8 */ - rot_128(kL, 45, T+32); - LOAD64H(skey->camellia.k[6], T+32); - LOAD64H(skey->camellia.k[7], T+40); - - /* rotate kA by 45, k9/k10 */ - rot_128(kA, 45, T+32); - LOAD64H(skey->camellia.k[8], T+32); - rot_128(kL, 60, T+32); - LOAD64H(skey->camellia.k[9], T+40); - - /* rotate kA by 60, k11/k12 */ - rot_128(kA, 60, T+32); - LOAD64H(skey->camellia.k[10], T+32); - LOAD64H(skey->camellia.k[11], T+40); - - /* rotate kL by 77, kl3, kl4 */ - rot_128(kL, 77, T+32); - LOAD64H(skey->camellia.kl[2], T+32); - LOAD64H(skey->camellia.kl[3], T+40); - - /* rotate kL by 94, k13/k14 */ - rot_128(kL, 94, T+32); - LOAD64H(skey->camellia.k[12], T+32); - LOAD64H(skey->camellia.k[13], T+40); - - /* rotate kA by 94, k15/k16 */ - rot_128(kA, 94, T+32); - LOAD64H(skey->camellia.k[14], T+32); - LOAD64H(skey->camellia.k[15], T+40); - - /* rotate kL by 111, k17/k18 */ - rot_128(kL, 111, T+32); - LOAD64H(skey->camellia.k[16], T+32); - LOAD64H(skey->camellia.k[17], T+40); - - /* rotate kA by 111, kw3/kw4 */ - rot_128(kA, 111, T+32); - LOAD64H(skey->camellia.kw[2], T+32); - LOAD64H(skey->camellia.kw[3], T+40); - } else { - /* last two rounds */ - LOAD64H(A, T+32); LOAD64H(B, T+40); - B ^= F(A ^ key_sigma[4]); - A ^= F(B ^ key_sigma[5]); - STORE64H(A, T+32); STORE64H(B, T+40); - - /* grab kB */ - for (x = 0; x < 16; x++) { kB[x] = T[x+32]; } - - /* kw1/2 from kL*/ - LOAD64H(skey->camellia.kw[0], kL); - LOAD64H(skey->camellia.kw[1], kL+8); - - /* k1/k2 = kB */ - LOAD64H(skey->camellia.k[0], kB); - LOAD64H(skey->camellia.k[1], kB+8); - - /* k3/k4 = kR by 15 */ - rot_128(kR, 15, T+32); - LOAD64H(skey->camellia.k[2], T+32); - LOAD64H(skey->camellia.k[3], T+40); - - /* k5/k7 = kA by 15 */ - rot_128(kA, 15, T+32); - LOAD64H(skey->camellia.k[4], T+32); - LOAD64H(skey->camellia.k[5], T+40); - - /* kl1/2 = kR by 30 */ - rot_128(kR, 30, T+32); - LOAD64H(skey->camellia.kl[0], T+32); - LOAD64H(skey->camellia.kl[1], T+40); - - /* k7/k8 = kB by 30 */ - rot_128(kB, 30, T+32); - LOAD64H(skey->camellia.k[6], T+32); - LOAD64H(skey->camellia.k[7], T+40); - - /* k9/k10 = kL by 45 */ - rot_128(kL, 45, T+32); - LOAD64H(skey->camellia.k[8], T+32); - LOAD64H(skey->camellia.k[9], T+40); - - /* k11/k12 = kA by 45 */ - rot_128(kA, 45, T+32); - LOAD64H(skey->camellia.k[10], T+32); - LOAD64H(skey->camellia.k[11], T+40); - - /* kl3/4 = kL by 60 */ - rot_128(kL, 60, T+32); - LOAD64H(skey->camellia.kl[2], T+32); - LOAD64H(skey->camellia.kl[3], T+40); - - /* k13/k14 = kR by 60 */ - rot_128(kR, 60, T+32); - LOAD64H(skey->camellia.k[12], T+32); - LOAD64H(skey->camellia.k[13], T+40); - - /* k15/k16 = kB by 15 */ - rot_128(kB, 60, T+32); - LOAD64H(skey->camellia.k[14], T+32); - LOAD64H(skey->camellia.k[15], T+40); - - /* k17/k18 = kL by 77 */ - rot_128(kL, 77, T+32); - LOAD64H(skey->camellia.k[16], T+32); - LOAD64H(skey->camellia.k[17], T+40); - - /* kl5/6 = kA by 77 */ - rot_128(kA, 77, T+32); - LOAD64H(skey->camellia.kl[4], T+32); - LOAD64H(skey->camellia.kl[5], T+40); - - /* k19/k20 = kR by 94 */ - rot_128(kR, 94, T+32); - LOAD64H(skey->camellia.k[18], T+32); - LOAD64H(skey->camellia.k[19], T+40); - - /* k21/k22 = kA by 94 */ - rot_128(kA, 94, T+32); - LOAD64H(skey->camellia.k[20], T+32); - LOAD64H(skey->camellia.k[21], T+40); - - /* k23/k24 = kL by 111 */ - rot_128(kL, 111, T+32); - LOAD64H(skey->camellia.k[22], T+32); - LOAD64H(skey->camellia.k[23], T+40); - - /* kw2/kw3 = kB by 111 */ - rot_128(kB, 111, T+32); - LOAD64H(skey->camellia.kw[2], T+32); - LOAD64H(skey->camellia.kw[3], T+40); - } - - return CRYPT_OK; -} - -int camellia_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - ulong64 L, R; - ulong32 a, b; - - LOAD64H(L, pt+0); LOAD64H(R, pt+8); - L ^= skey->camellia.kw[0]; - R ^= skey->camellia.kw[1]; - - /* first 6 rounds */ - R ^= F(L ^ skey->camellia.k[0]); - L ^= F(R ^ skey->camellia.k[1]); - R ^= F(L ^ skey->camellia.k[2]); - L ^= F(R ^ skey->camellia.k[3]); - R ^= F(L ^ skey->camellia.k[4]); - L ^= F(R ^ skey->camellia.k[5]); - - /* FL */ - a = (ulong32)(L >> 32); - b = (ulong32)(L & 0xFFFFFFFFUL); - b ^= ROL((a & (ulong32)(skey->camellia.kl[0] >> 32)), 1); - a ^= b | (skey->camellia.kl[0] & 0xFFFFFFFFU); - L = (((ulong64)a) << 32) | b; - - /* FL^-1 */ - a = (ulong32)(R >> 32); - b = (ulong32)(R & 0xFFFFFFFFUL); - a ^= b | (skey->camellia.kl[1] & 0xFFFFFFFFU); - b ^= ROL((a & (ulong32)(skey->camellia.kl[1] >> 32)), 1); - R = (((ulong64)a) << 32) | b; - - /* second 6 rounds */ - R ^= F(L ^ skey->camellia.k[6]); - L ^= F(R ^ skey->camellia.k[7]); - R ^= F(L ^ skey->camellia.k[8]); - L ^= F(R ^ skey->camellia.k[9]); - R ^= F(L ^ skey->camellia.k[10]); - L ^= F(R ^ skey->camellia.k[11]); - - /* FL */ - a = (ulong32)(L >> 32); - b = (ulong32)(L & 0xFFFFFFFFUL); - b ^= ROL((a & (ulong32)(skey->camellia.kl[2] >> 32)), 1); - a ^= b | (skey->camellia.kl[2] & 0xFFFFFFFFU); - L = (((ulong64)a) << 32) | b; - - /* FL^-1 */ - a = (ulong32)(R >> 32); - b = (ulong32)(R & 0xFFFFFFFFUL); - a ^= b | (skey->camellia.kl[3] & 0xFFFFFFFFU); - b ^= ROL((a & (ulong32)(skey->camellia.kl[3] >> 32)), 1); - R = (((ulong64)a) << 32) | b; - - /* third 6 rounds */ - R ^= F(L ^ skey->camellia.k[12]); - L ^= F(R ^ skey->camellia.k[13]); - R ^= F(L ^ skey->camellia.k[14]); - L ^= F(R ^ skey->camellia.k[15]); - R ^= F(L ^ skey->camellia.k[16]); - L ^= F(R ^ skey->camellia.k[17]); - - /* next FL */ - if (skey->camellia.R == 24) { - /* FL */ - a = (ulong32)(L >> 32); - b = (ulong32)(L & 0xFFFFFFFFUL); - b ^= ROL((a & (ulong32)(skey->camellia.kl[4] >> 32)), 1); - a ^= b | (skey->camellia.kl[4] & 0xFFFFFFFFU); - L = (((ulong64)a) << 32) | b; - - /* FL^-1 */ - a = (ulong32)(R >> 32); - b = (ulong32)(R & 0xFFFFFFFFUL); - a ^= b | (skey->camellia.kl[5] & 0xFFFFFFFFU); - b ^= ROL((a & (ulong32)(skey->camellia.kl[5] >> 32)), 1); - R = (((ulong64)a) << 32) | b; - - /* fourth 6 rounds */ - R ^= F(L ^ skey->camellia.k[18]); - L ^= F(R ^ skey->camellia.k[19]); - R ^= F(L ^ skey->camellia.k[20]); - L ^= F(R ^ skey->camellia.k[21]); - R ^= F(L ^ skey->camellia.k[22]); - L ^= F(R ^ skey->camellia.k[23]); - } - - L ^= skey->camellia.kw[3]; - R ^= skey->camellia.kw[2]; - - STORE64H(R, ct+0); STORE64H(L, ct+8); - - return CRYPT_OK; -} - -int camellia_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - ulong64 L, R; - ulong32 a, b; - - LOAD64H(R, ct+0); LOAD64H(L, ct+8); - L ^= skey->camellia.kw[3]; - R ^= skey->camellia.kw[2]; - - /* next FL */ - if (skey->camellia.R == 24) { - /* fourth 6 rounds */ - L ^= F(R ^ skey->camellia.k[23]); - R ^= F(L ^ skey->camellia.k[22]); - L ^= F(R ^ skey->camellia.k[21]); - R ^= F(L ^ skey->camellia.k[20]); - L ^= F(R ^ skey->camellia.k[19]); - R ^= F(L ^ skey->camellia.k[18]); - - /* FL */ - a = (ulong32)(L >> 32); - b = (ulong32)(L & 0xFFFFFFFFUL); - a ^= b | (skey->camellia.kl[4] & 0xFFFFFFFFU); - b ^= ROL((a & (ulong32)(skey->camellia.kl[4] >> 32)), 1); - L = (((ulong64)a) << 32) | b; - - /* FL^-1 */ - a = (ulong32)(R >> 32); - b = (ulong32)(R & 0xFFFFFFFFUL); - b ^= ROL((a & (ulong32)(skey->camellia.kl[5] >> 32)), 1); - a ^= b | (skey->camellia.kl[5] & 0xFFFFFFFFU); - R = (((ulong64)a) << 32) | b; - - } - - /* third 6 rounds */ - L ^= F(R ^ skey->camellia.k[17]); - R ^= F(L ^ skey->camellia.k[16]); - L ^= F(R ^ skey->camellia.k[15]); - R ^= F(L ^ skey->camellia.k[14]); - L ^= F(R ^ skey->camellia.k[13]); - R ^= F(L ^ skey->camellia.k[12]); - - /* FL */ - a = (ulong32)(L >> 32); - b = (ulong32)(L & 0xFFFFFFFFUL); - a ^= b | (skey->camellia.kl[2] & 0xFFFFFFFFU); - b ^= ROL((a & (ulong32)(skey->camellia.kl[2] >> 32)), 1); - L = (((ulong64)a) << 32) | b; - - /* FL^-1 */ - a = (ulong32)(R >> 32); - b = (ulong32)(R & 0xFFFFFFFFUL); - b ^= ROL((a & (ulong32)(skey->camellia.kl[3] >> 32)), 1); - a ^= b | (skey->camellia.kl[3] & 0xFFFFFFFFU); - R = (((ulong64)a) << 32) | b; - - /* second 6 rounds */ - L ^= F(R ^ skey->camellia.k[11]); - R ^= F(L ^ skey->camellia.k[10]); - L ^= F(R ^ skey->camellia.k[9]); - R ^= F(L ^ skey->camellia.k[8]); - L ^= F(R ^ skey->camellia.k[7]); - R ^= F(L ^ skey->camellia.k[6]); - - /* FL */ - a = (ulong32)(L >> 32); - b = (ulong32)(L & 0xFFFFFFFFUL); - a ^= b | (skey->camellia.kl[0] & 0xFFFFFFFFU); - b ^= ROL((a & (ulong32)(skey->camellia.kl[0] >> 32)), 1); - L = (((ulong64)a) << 32) | b; - - /* FL^-1 */ - a = (ulong32)(R >> 32); - b = (ulong32)(R & 0xFFFFFFFFUL); - b ^= ROL((a & (ulong32)(skey->camellia.kl[1] >> 32)), 1); - a ^= b | (skey->camellia.kl[1] & 0xFFFFFFFFU); - R = (((ulong64)a) << 32) | b; - - /* first 6 rounds */ - L ^= F(R ^ skey->camellia.k[5]); - R ^= F(L ^ skey->camellia.k[4]); - L ^= F(R ^ skey->camellia.k[3]); - R ^= F(L ^ skey->camellia.k[2]); - L ^= F(R ^ skey->camellia.k[1]); - R ^= F(L ^ skey->camellia.k[0]); - - R ^= skey->camellia.kw[1]; - L ^= skey->camellia.kw[0]; - - STORE64H(R, pt+8); STORE64H(L, pt+0); - - return CRYPT_OK; -} - -int camellia_test(void) -{ - static const struct { - int keylen; - unsigned char key[32], pt[16], ct[16]; - } tests[] = { - -{ - 16, - { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, - 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, - { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, - 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, - { 0x67, 0x67, 0x31, 0x38, 0x54, 0x96, 0x69, 0x73, - 0x08, 0x57, 0x06, 0x56, 0x48, 0xea, 0xbe, 0x43 } -}, - -{ - 24, - { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, - 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, - 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 }, - { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, - 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, - { 0xb4, 0x99, 0x34, 0x01, 0xb3, 0xe9, 0x96, 0xf8, - 0x4e, 0xe5, 0xce, 0xe7, 0xd7, 0x9b, 0x09, 0xb9 } -}, - - -{ - 32, - { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, - 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, - 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, - 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, - { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, - 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, - { 0x9a, 0xcc, 0x23, 0x7d, 0xff, 0x16, 0xd7, 0x6c, - 0x20, 0xef, 0x7c, 0x91, 0x9e, 0x3a, 0x75, 0x09 } -}, - -{ - 32, - { 0x60, 0x3D, 0xEB, 0x10, 0x15, 0xCA, 0x71, 0xBE, - 0x2B, 0x73, 0xAE, 0xF0, 0x85, 0x7D, 0x77, 0x81, - 0x1F, 0x35, 0x2C, 0x07, 0x3B, 0x61, 0x08, 0xD7, - 0x2D, 0x98, 0x10, 0xA3, 0x09, 0x14, 0xDF, 0xF4 }, - { 0xF6, 0x9F, 0x24, 0x45, 0xDF, 0x4F, 0x9B, 0x17, - 0xAD, 0x2B, 0x41, 0x7B, 0xE6, 0x6C, 0x37, 0x10 }, - { 0x79, 0x60, 0x10, 0x9F, 0xB6, 0xDC, 0x42, 0x94, - 0x7F, 0xCF, 0xE5, 0x9E, 0xA3, 0xC5, 0xEB, 0x6B } -} -}; - unsigned char buf[2][16]; - symmetric_key skey; - int err; - unsigned int x; - - for (x = 0; x < sizeof(tests)/sizeof(tests[0]); x++) { - zeromem(&skey, sizeof(skey)); - if ((err = camellia_setup(tests[x].key, tests[x].keylen, 0, &skey)) != CRYPT_OK) { - return err; - } - if ((err = camellia_ecb_encrypt(tests[x].pt, buf[0], &skey)) != CRYPT_OK) { - camellia_done(&skey); - return err; - } - if ((err = camellia_ecb_decrypt(tests[x].ct, buf[1], &skey)) != CRYPT_OK) { - camellia_done(&skey); - return err; - } - camellia_done(&skey); - if (compare_testvector(tests[x].ct, 16, buf[0], 16, "Camellia Encrypt", x) || - compare_testvector(tests[x].pt, 16, buf[1], 16, "Camellia Decrypt", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -} - -void camellia_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -int camellia_keysize(int *keysize) -{ - if (*keysize >= 32) { *keysize = 32; } - else if (*keysize >= 24) { *keysize = 24; } - else if (*keysize >= 16) { *keysize = 16; } - else return CRYPT_INVALID_KEYSIZE; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/cast5.c b/src/libtomcrypt/src/ciphers/cast5.c deleted file mode 100644 index 71e198c9e4..0000000000 --- a/src/libtomcrypt/src/ciphers/cast5.c +++ /dev/null @@ -1,720 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - - /** - @file cast5.c - Implementation of LTC_CAST5 (RFC 2144) by Tom St Denis - */ -#include "tomcrypt.h" - -#ifdef LTC_CAST5 - -const struct ltc_cipher_descriptor cast5_desc = { - "cast5", - 15, - 5, 16, 8, 16, - &cast5_setup, - &cast5_ecb_encrypt, - &cast5_ecb_decrypt, - &cast5_test, - &cast5_done, - &cast5_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -static const ulong32 S1[256] = { -0x30fb40d4UL, 0x9fa0ff0bUL, 0x6beccd2fUL, 0x3f258c7aUL, 0x1e213f2fUL, 0x9c004dd3UL, -0x6003e540UL, 0xcf9fc949UL, 0xbfd4af27UL, 0x88bbbdb5UL, 0xe2034090UL, 0x98d09675UL, -0x6e63a0e0UL, 0x15c361d2UL, 0xc2e7661dUL, 0x22d4ff8eUL, 0x28683b6fUL, 0xc07fd059UL, -0xff2379c8UL, 0x775f50e2UL, 0x43c340d3UL, 0xdf2f8656UL, 0x887ca41aUL, 0xa2d2bd2dUL, -0xa1c9e0d6UL, 0x346c4819UL, 0x61b76d87UL, 0x22540f2fUL, 0x2abe32e1UL, 0xaa54166bUL, -0x22568e3aUL, 0xa2d341d0UL, 0x66db40c8UL, 0xa784392fUL, 0x004dff2fUL, 0x2db9d2deUL, -0x97943facUL, 0x4a97c1d8UL, 0x527644b7UL, 0xb5f437a7UL, 0xb82cbaefUL, 0xd751d159UL, -0x6ff7f0edUL, 0x5a097a1fUL, 0x827b68d0UL, 0x90ecf52eUL, 0x22b0c054UL, 0xbc8e5935UL, -0x4b6d2f7fUL, 0x50bb64a2UL, 0xd2664910UL, 0xbee5812dUL, 0xb7332290UL, 0xe93b159fUL, -0xb48ee411UL, 0x4bff345dUL, 0xfd45c240UL, 0xad31973fUL, 0xc4f6d02eUL, 0x55fc8165UL, -0xd5b1caadUL, 0xa1ac2daeUL, 0xa2d4b76dUL, 0xc19b0c50UL, 0x882240f2UL, 0x0c6e4f38UL, -0xa4e4bfd7UL, 0x4f5ba272UL, 0x564c1d2fUL, 0xc59c5319UL, 0xb949e354UL, 0xb04669feUL, -0xb1b6ab8aUL, 0xc71358ddUL, 0x6385c545UL, 0x110f935dUL, 0x57538ad5UL, 0x6a390493UL, -0xe63d37e0UL, 0x2a54f6b3UL, 0x3a787d5fUL, 0x6276a0b5UL, 0x19a6fcdfUL, 0x7a42206aUL, -0x29f9d4d5UL, 0xf61b1891UL, 0xbb72275eUL, 0xaa508167UL, 0x38901091UL, 0xc6b505ebUL, -0x84c7cb8cUL, 0x2ad75a0fUL, 0x874a1427UL, 0xa2d1936bUL, 0x2ad286afUL, 0xaa56d291UL, -0xd7894360UL, 0x425c750dUL, 0x93b39e26UL, 0x187184c9UL, 0x6c00b32dUL, 0x73e2bb14UL, -0xa0bebc3cUL, 0x54623779UL, 0x64459eabUL, 0x3f328b82UL, 0x7718cf82UL, 0x59a2cea6UL, -0x04ee002eUL, 0x89fe78e6UL, 0x3fab0950UL, 0x325ff6c2UL, 0x81383f05UL, 0x6963c5c8UL, -0x76cb5ad6UL, 0xd49974c9UL, 0xca180dcfUL, 0x380782d5UL, 0xc7fa5cf6UL, 0x8ac31511UL, -0x35e79e13UL, 0x47da91d0UL, 0xf40f9086UL, 0xa7e2419eUL, 0x31366241UL, 0x051ef495UL, -0xaa573b04UL, 0x4a805d8dUL, 0x548300d0UL, 0x00322a3cUL, 0xbf64cddfUL, 0xba57a68eUL, -0x75c6372bUL, 0x50afd341UL, 0xa7c13275UL, 0x915a0bf5UL, 0x6b54bfabUL, 0x2b0b1426UL, -0xab4cc9d7UL, 0x449ccd82UL, 0xf7fbf265UL, 0xab85c5f3UL, 0x1b55db94UL, 0xaad4e324UL, -0xcfa4bd3fUL, 0x2deaa3e2UL, 0x9e204d02UL, 0xc8bd25acUL, 0xeadf55b3UL, 0xd5bd9e98UL, -0xe31231b2UL, 0x2ad5ad6cUL, 0x954329deUL, 0xadbe4528UL, 0xd8710f69UL, 0xaa51c90fUL, -0xaa786bf6UL, 0x22513f1eUL, 0xaa51a79bUL, 0x2ad344ccUL, 0x7b5a41f0UL, 0xd37cfbadUL, -0x1b069505UL, 0x41ece491UL, 0xb4c332e6UL, 0x032268d4UL, 0xc9600accUL, 0xce387e6dUL, -0xbf6bb16cUL, 0x6a70fb78UL, 0x0d03d9c9UL, 0xd4df39deUL, 0xe01063daUL, 0x4736f464UL, -0x5ad328d8UL, 0xb347cc96UL, 0x75bb0fc3UL, 0x98511bfbUL, 0x4ffbcc35UL, 0xb58bcf6aUL, -0xe11f0abcUL, 0xbfc5fe4aUL, 0xa70aec10UL, 0xac39570aUL, 0x3f04442fUL, 0x6188b153UL, -0xe0397a2eUL, 0x5727cb79UL, 0x9ceb418fUL, 0x1cacd68dUL, 0x2ad37c96UL, 0x0175cb9dUL, -0xc69dff09UL, 0xc75b65f0UL, 0xd9db40d8UL, 0xec0e7779UL, 0x4744ead4UL, 0xb11c3274UL, -0xdd24cb9eUL, 0x7e1c54bdUL, 0xf01144f9UL, 0xd2240eb1UL, 0x9675b3fdUL, 0xa3ac3755UL, -0xd47c27afUL, 0x51c85f4dUL, 0x56907596UL, 0xa5bb15e6UL, 0x580304f0UL, 0xca042cf1UL, -0x011a37eaUL, 0x8dbfaadbUL, 0x35ba3e4aUL, 0x3526ffa0UL, 0xc37b4d09UL, 0xbc306ed9UL, -0x98a52666UL, 0x5648f725UL, 0xff5e569dUL, 0x0ced63d0UL, 0x7c63b2cfUL, 0x700b45e1UL, -0xd5ea50f1UL, 0x85a92872UL, 0xaf1fbda7UL, 0xd4234870UL, 0xa7870bf3UL, 0x2d3b4d79UL, -0x42e04198UL, 0x0cd0ede7UL, 0x26470db8UL, 0xf881814cUL, 0x474d6ad7UL, 0x7c0c5e5cUL, -0xd1231959UL, 0x381b7298UL, 0xf5d2f4dbUL, 0xab838653UL, 0x6e2f1e23UL, 0x83719c9eUL, -0xbd91e046UL, 0x9a56456eUL, 0xdc39200cUL, 0x20c8c571UL, 0x962bda1cUL, 0xe1e696ffUL, -0xb141ab08UL, 0x7cca89b9UL, 0x1a69e783UL, 0x02cc4843UL, 0xa2f7c579UL, 0x429ef47dUL, -0x427b169cUL, 0x5ac9f049UL, 0xdd8f0f00UL, 0x5c8165bfUL}; - -static const ulong32 S2[256] = { -0x1f201094UL, 0xef0ba75bUL, 0x69e3cf7eUL, 0x393f4380UL, 0xfe61cf7aUL, 0xeec5207aUL, -0x55889c94UL, 0x72fc0651UL, 0xada7ef79UL, 0x4e1d7235UL, 0xd55a63ceUL, 0xde0436baUL, -0x99c430efUL, 0x5f0c0794UL, 0x18dcdb7dUL, 0xa1d6eff3UL, 0xa0b52f7bUL, 0x59e83605UL, -0xee15b094UL, 0xe9ffd909UL, 0xdc440086UL, 0xef944459UL, 0xba83ccb3UL, 0xe0c3cdfbUL, -0xd1da4181UL, 0x3b092ab1UL, 0xf997f1c1UL, 0xa5e6cf7bUL, 0x01420ddbUL, 0xe4e7ef5bUL, -0x25a1ff41UL, 0xe180f806UL, 0x1fc41080UL, 0x179bee7aUL, 0xd37ac6a9UL, 0xfe5830a4UL, -0x98de8b7fUL, 0x77e83f4eUL, 0x79929269UL, 0x24fa9f7bUL, 0xe113c85bUL, 0xacc40083UL, -0xd7503525UL, 0xf7ea615fUL, 0x62143154UL, 0x0d554b63UL, 0x5d681121UL, 0xc866c359UL, -0x3d63cf73UL, 0xcee234c0UL, 0xd4d87e87UL, 0x5c672b21UL, 0x071f6181UL, 0x39f7627fUL, -0x361e3084UL, 0xe4eb573bUL, 0x602f64a4UL, 0xd63acd9cUL, 0x1bbc4635UL, 0x9e81032dUL, -0x2701f50cUL, 0x99847ab4UL, 0xa0e3df79UL, 0xba6cf38cUL, 0x10843094UL, 0x2537a95eUL, -0xf46f6ffeUL, 0xa1ff3b1fUL, 0x208cfb6aUL, 0x8f458c74UL, 0xd9e0a227UL, 0x4ec73a34UL, -0xfc884f69UL, 0x3e4de8dfUL, 0xef0e0088UL, 0x3559648dUL, 0x8a45388cUL, 0x1d804366UL, -0x721d9bfdUL, 0xa58684bbUL, 0xe8256333UL, 0x844e8212UL, 0x128d8098UL, 0xfed33fb4UL, -0xce280ae1UL, 0x27e19ba5UL, 0xd5a6c252UL, 0xe49754bdUL, 0xc5d655ddUL, 0xeb667064UL, -0x77840b4dUL, 0xa1b6a801UL, 0x84db26a9UL, 0xe0b56714UL, 0x21f043b7UL, 0xe5d05860UL, -0x54f03084UL, 0x066ff472UL, 0xa31aa153UL, 0xdadc4755UL, 0xb5625dbfUL, 0x68561be6UL, -0x83ca6b94UL, 0x2d6ed23bUL, 0xeccf01dbUL, 0xa6d3d0baUL, 0xb6803d5cUL, 0xaf77a709UL, -0x33b4a34cUL, 0x397bc8d6UL, 0x5ee22b95UL, 0x5f0e5304UL, 0x81ed6f61UL, 0x20e74364UL, -0xb45e1378UL, 0xde18639bUL, 0x881ca122UL, 0xb96726d1UL, 0x8049a7e8UL, 0x22b7da7bUL, -0x5e552d25UL, 0x5272d237UL, 0x79d2951cUL, 0xc60d894cUL, 0x488cb402UL, 0x1ba4fe5bUL, -0xa4b09f6bUL, 0x1ca815cfUL, 0xa20c3005UL, 0x8871df63UL, 0xb9de2fcbUL, 0x0cc6c9e9UL, -0x0beeff53UL, 0xe3214517UL, 0xb4542835UL, 0x9f63293cUL, 0xee41e729UL, 0x6e1d2d7cUL, -0x50045286UL, 0x1e6685f3UL, 0xf33401c6UL, 0x30a22c95UL, 0x31a70850UL, 0x60930f13UL, -0x73f98417UL, 0xa1269859UL, 0xec645c44UL, 0x52c877a9UL, 0xcdff33a6UL, 0xa02b1741UL, -0x7cbad9a2UL, 0x2180036fUL, 0x50d99c08UL, 0xcb3f4861UL, 0xc26bd765UL, 0x64a3f6abUL, -0x80342676UL, 0x25a75e7bUL, 0xe4e6d1fcUL, 0x20c710e6UL, 0xcdf0b680UL, 0x17844d3bUL, -0x31eef84dUL, 0x7e0824e4UL, 0x2ccb49ebUL, 0x846a3baeUL, 0x8ff77888UL, 0xee5d60f6UL, -0x7af75673UL, 0x2fdd5cdbUL, 0xa11631c1UL, 0x30f66f43UL, 0xb3faec54UL, 0x157fd7faUL, -0xef8579ccUL, 0xd152de58UL, 0xdb2ffd5eUL, 0x8f32ce19UL, 0x306af97aUL, 0x02f03ef8UL, -0x99319ad5UL, 0xc242fa0fUL, 0xa7e3ebb0UL, 0xc68e4906UL, 0xb8da230cUL, 0x80823028UL, -0xdcdef3c8UL, 0xd35fb171UL, 0x088a1bc8UL, 0xbec0c560UL, 0x61a3c9e8UL, 0xbca8f54dUL, -0xc72feffaUL, 0x22822e99UL, 0x82c570b4UL, 0xd8d94e89UL, 0x8b1c34bcUL, 0x301e16e6UL, -0x273be979UL, 0xb0ffeaa6UL, 0x61d9b8c6UL, 0x00b24869UL, 0xb7ffce3fUL, 0x08dc283bUL, -0x43daf65aUL, 0xf7e19798UL, 0x7619b72fUL, 0x8f1c9ba4UL, 0xdc8637a0UL, 0x16a7d3b1UL, -0x9fc393b7UL, 0xa7136eebUL, 0xc6bcc63eUL, 0x1a513742UL, 0xef6828bcUL, 0x520365d6UL, -0x2d6a77abUL, 0x3527ed4bUL, 0x821fd216UL, 0x095c6e2eUL, 0xdb92f2fbUL, 0x5eea29cbUL, -0x145892f5UL, 0x91584f7fUL, 0x5483697bUL, 0x2667a8ccUL, 0x85196048UL, 0x8c4baceaUL, -0x833860d4UL, 0x0d23e0f9UL, 0x6c387e8aUL, 0x0ae6d249UL, 0xb284600cUL, 0xd835731dUL, -0xdcb1c647UL, 0xac4c56eaUL, 0x3ebd81b3UL, 0x230eabb0UL, 0x6438bc87UL, 0xf0b5b1faUL, -0x8f5ea2b3UL, 0xfc184642UL, 0x0a036b7aUL, 0x4fb089bdUL, 0x649da589UL, 0xa345415eUL, -0x5c038323UL, 0x3e5d3bb9UL, 0x43d79572UL, 0x7e6dd07cUL, 0x06dfdf1eUL, 0x6c6cc4efUL, -0x7160a539UL, 0x73bfbe70UL, 0x83877605UL, 0x4523ecf1UL}; - -static const ulong32 S3[256] = { -0x8defc240UL, 0x25fa5d9fUL, 0xeb903dbfUL, 0xe810c907UL, 0x47607fffUL, 0x369fe44bUL, -0x8c1fc644UL, 0xaececa90UL, 0xbeb1f9bfUL, 0xeefbcaeaUL, 0xe8cf1950UL, 0x51df07aeUL, -0x920e8806UL, 0xf0ad0548UL, 0xe13c8d83UL, 0x927010d5UL, 0x11107d9fUL, 0x07647db9UL, -0xb2e3e4d4UL, 0x3d4f285eUL, 0xb9afa820UL, 0xfade82e0UL, 0xa067268bUL, 0x8272792eUL, -0x553fb2c0UL, 0x489ae22bUL, 0xd4ef9794UL, 0x125e3fbcUL, 0x21fffceeUL, 0x825b1bfdUL, -0x9255c5edUL, 0x1257a240UL, 0x4e1a8302UL, 0xbae07fffUL, 0x528246e7UL, 0x8e57140eUL, -0x3373f7bfUL, 0x8c9f8188UL, 0xa6fc4ee8UL, 0xc982b5a5UL, 0xa8c01db7UL, 0x579fc264UL, -0x67094f31UL, 0xf2bd3f5fUL, 0x40fff7c1UL, 0x1fb78dfcUL, 0x8e6bd2c1UL, 0x437be59bUL, -0x99b03dbfUL, 0xb5dbc64bUL, 0x638dc0e6UL, 0x55819d99UL, 0xa197c81cUL, 0x4a012d6eUL, -0xc5884a28UL, 0xccc36f71UL, 0xb843c213UL, 0x6c0743f1UL, 0x8309893cUL, 0x0feddd5fUL, -0x2f7fe850UL, 0xd7c07f7eUL, 0x02507fbfUL, 0x5afb9a04UL, 0xa747d2d0UL, 0x1651192eUL, -0xaf70bf3eUL, 0x58c31380UL, 0x5f98302eUL, 0x727cc3c4UL, 0x0a0fb402UL, 0x0f7fef82UL, -0x8c96fdadUL, 0x5d2c2aaeUL, 0x8ee99a49UL, 0x50da88b8UL, 0x8427f4a0UL, 0x1eac5790UL, -0x796fb449UL, 0x8252dc15UL, 0xefbd7d9bUL, 0xa672597dUL, 0xada840d8UL, 0x45f54504UL, -0xfa5d7403UL, 0xe83ec305UL, 0x4f91751aUL, 0x925669c2UL, 0x23efe941UL, 0xa903f12eUL, -0x60270df2UL, 0x0276e4b6UL, 0x94fd6574UL, 0x927985b2UL, 0x8276dbcbUL, 0x02778176UL, -0xf8af918dUL, 0x4e48f79eUL, 0x8f616ddfUL, 0xe29d840eUL, 0x842f7d83UL, 0x340ce5c8UL, -0x96bbb682UL, 0x93b4b148UL, 0xef303cabUL, 0x984faf28UL, 0x779faf9bUL, 0x92dc560dUL, -0x224d1e20UL, 0x8437aa88UL, 0x7d29dc96UL, 0x2756d3dcUL, 0x8b907ceeUL, 0xb51fd240UL, -0xe7c07ce3UL, 0xe566b4a1UL, 0xc3e9615eUL, 0x3cf8209dUL, 0x6094d1e3UL, 0xcd9ca341UL, -0x5c76460eUL, 0x00ea983bUL, 0xd4d67881UL, 0xfd47572cUL, 0xf76cedd9UL, 0xbda8229cUL, -0x127dadaaUL, 0x438a074eUL, 0x1f97c090UL, 0x081bdb8aUL, 0x93a07ebeUL, 0xb938ca15UL, -0x97b03cffUL, 0x3dc2c0f8UL, 0x8d1ab2ecUL, 0x64380e51UL, 0x68cc7bfbUL, 0xd90f2788UL, -0x12490181UL, 0x5de5ffd4UL, 0xdd7ef86aUL, 0x76a2e214UL, 0xb9a40368UL, 0x925d958fUL, -0x4b39fffaUL, 0xba39aee9UL, 0xa4ffd30bUL, 0xfaf7933bUL, 0x6d498623UL, 0x193cbcfaUL, -0x27627545UL, 0x825cf47aUL, 0x61bd8ba0UL, 0xd11e42d1UL, 0xcead04f4UL, 0x127ea392UL, -0x10428db7UL, 0x8272a972UL, 0x9270c4a8UL, 0x127de50bUL, 0x285ba1c8UL, 0x3c62f44fUL, -0x35c0eaa5UL, 0xe805d231UL, 0x428929fbUL, 0xb4fcdf82UL, 0x4fb66a53UL, 0x0e7dc15bUL, -0x1f081fabUL, 0x108618aeUL, 0xfcfd086dUL, 0xf9ff2889UL, 0x694bcc11UL, 0x236a5caeUL, -0x12deca4dUL, 0x2c3f8cc5UL, 0xd2d02dfeUL, 0xf8ef5896UL, 0xe4cf52daUL, 0x95155b67UL, -0x494a488cUL, 0xb9b6a80cUL, 0x5c8f82bcUL, 0x89d36b45UL, 0x3a609437UL, 0xec00c9a9UL, -0x44715253UL, 0x0a874b49UL, 0xd773bc40UL, 0x7c34671cUL, 0x02717ef6UL, 0x4feb5536UL, -0xa2d02fffUL, 0xd2bf60c4UL, 0xd43f03c0UL, 0x50b4ef6dUL, 0x07478cd1UL, 0x006e1888UL, -0xa2e53f55UL, 0xb9e6d4bcUL, 0xa2048016UL, 0x97573833UL, 0xd7207d67UL, 0xde0f8f3dUL, -0x72f87b33UL, 0xabcc4f33UL, 0x7688c55dUL, 0x7b00a6b0UL, 0x947b0001UL, 0x570075d2UL, -0xf9bb88f8UL, 0x8942019eUL, 0x4264a5ffUL, 0x856302e0UL, 0x72dbd92bUL, 0xee971b69UL, -0x6ea22fdeUL, 0x5f08ae2bUL, 0xaf7a616dUL, 0xe5c98767UL, 0xcf1febd2UL, 0x61efc8c2UL, -0xf1ac2571UL, 0xcc8239c2UL, 0x67214cb8UL, 0xb1e583d1UL, 0xb7dc3e62UL, 0x7f10bdceUL, -0xf90a5c38UL, 0x0ff0443dUL, 0x606e6dc6UL, 0x60543a49UL, 0x5727c148UL, 0x2be98a1dUL, -0x8ab41738UL, 0x20e1be24UL, 0xaf96da0fUL, 0x68458425UL, 0x99833be5UL, 0x600d457dUL, -0x282f9350UL, 0x8334b362UL, 0xd91d1120UL, 0x2b6d8da0UL, 0x642b1e31UL, 0x9c305a00UL, -0x52bce688UL, 0x1b03588aUL, 0xf7baefd5UL, 0x4142ed9cUL, 0xa4315c11UL, 0x83323ec5UL, -0xdfef4636UL, 0xa133c501UL, 0xe9d3531cUL, 0xee353783UL}; - -static const ulong32 S4[256] = { -0x9db30420UL, 0x1fb6e9deUL, 0xa7be7befUL, 0xd273a298UL, 0x4a4f7bdbUL, 0x64ad8c57UL, -0x85510443UL, 0xfa020ed1UL, 0x7e287affUL, 0xe60fb663UL, 0x095f35a1UL, 0x79ebf120UL, -0xfd059d43UL, 0x6497b7b1UL, 0xf3641f63UL, 0x241e4adfUL, 0x28147f5fUL, 0x4fa2b8cdUL, -0xc9430040UL, 0x0cc32220UL, 0xfdd30b30UL, 0xc0a5374fUL, 0x1d2d00d9UL, 0x24147b15UL, -0xee4d111aUL, 0x0fca5167UL, 0x71ff904cUL, 0x2d195ffeUL, 0x1a05645fUL, 0x0c13fefeUL, -0x081b08caUL, 0x05170121UL, 0x80530100UL, 0xe83e5efeUL, 0xac9af4f8UL, 0x7fe72701UL, -0xd2b8ee5fUL, 0x06df4261UL, 0xbb9e9b8aUL, 0x7293ea25UL, 0xce84ffdfUL, 0xf5718801UL, -0x3dd64b04UL, 0xa26f263bUL, 0x7ed48400UL, 0x547eebe6UL, 0x446d4ca0UL, 0x6cf3d6f5UL, -0x2649abdfUL, 0xaea0c7f5UL, 0x36338cc1UL, 0x503f7e93UL, 0xd3772061UL, 0x11b638e1UL, -0x72500e03UL, 0xf80eb2bbUL, 0xabe0502eUL, 0xec8d77deUL, 0x57971e81UL, 0xe14f6746UL, -0xc9335400UL, 0x6920318fUL, 0x081dbb99UL, 0xffc304a5UL, 0x4d351805UL, 0x7f3d5ce3UL, -0xa6c866c6UL, 0x5d5bcca9UL, 0xdaec6feaUL, 0x9f926f91UL, 0x9f46222fUL, 0x3991467dUL, -0xa5bf6d8eUL, 0x1143c44fUL, 0x43958302UL, 0xd0214eebUL, 0x022083b8UL, 0x3fb6180cUL, -0x18f8931eUL, 0x281658e6UL, 0x26486e3eUL, 0x8bd78a70UL, 0x7477e4c1UL, 0xb506e07cUL, -0xf32d0a25UL, 0x79098b02UL, 0xe4eabb81UL, 0x28123b23UL, 0x69dead38UL, 0x1574ca16UL, -0xdf871b62UL, 0x211c40b7UL, 0xa51a9ef9UL, 0x0014377bUL, 0x041e8ac8UL, 0x09114003UL, -0xbd59e4d2UL, 0xe3d156d5UL, 0x4fe876d5UL, 0x2f91a340UL, 0x557be8deUL, 0x00eae4a7UL, -0x0ce5c2ecUL, 0x4db4bba6UL, 0xe756bdffUL, 0xdd3369acUL, 0xec17b035UL, 0x06572327UL, -0x99afc8b0UL, 0x56c8c391UL, 0x6b65811cUL, 0x5e146119UL, 0x6e85cb75UL, 0xbe07c002UL, -0xc2325577UL, 0x893ff4ecUL, 0x5bbfc92dUL, 0xd0ec3b25UL, 0xb7801ab7UL, 0x8d6d3b24UL, -0x20c763efUL, 0xc366a5fcUL, 0x9c382880UL, 0x0ace3205UL, 0xaac9548aUL, 0xeca1d7c7UL, -0x041afa32UL, 0x1d16625aUL, 0x6701902cUL, 0x9b757a54UL, 0x31d477f7UL, 0x9126b031UL, -0x36cc6fdbUL, 0xc70b8b46UL, 0xd9e66a48UL, 0x56e55a79UL, 0x026a4cebUL, 0x52437effUL, -0x2f8f76b4UL, 0x0df980a5UL, 0x8674cde3UL, 0xedda04ebUL, 0x17a9be04UL, 0x2c18f4dfUL, -0xb7747f9dUL, 0xab2af7b4UL, 0xefc34d20UL, 0x2e096b7cUL, 0x1741a254UL, 0xe5b6a035UL, -0x213d42f6UL, 0x2c1c7c26UL, 0x61c2f50fUL, 0x6552daf9UL, 0xd2c231f8UL, 0x25130f69UL, -0xd8167fa2UL, 0x0418f2c8UL, 0x001a96a6UL, 0x0d1526abUL, 0x63315c21UL, 0x5e0a72ecUL, -0x49bafefdUL, 0x187908d9UL, 0x8d0dbd86UL, 0x311170a7UL, 0x3e9b640cUL, 0xcc3e10d7UL, -0xd5cad3b6UL, 0x0caec388UL, 0xf73001e1UL, 0x6c728affUL, 0x71eae2a1UL, 0x1f9af36eUL, -0xcfcbd12fUL, 0xc1de8417UL, 0xac07be6bUL, 0xcb44a1d8UL, 0x8b9b0f56UL, 0x013988c3UL, -0xb1c52fcaUL, 0xb4be31cdUL, 0xd8782806UL, 0x12a3a4e2UL, 0x6f7de532UL, 0x58fd7eb6UL, -0xd01ee900UL, 0x24adffc2UL, 0xf4990fc5UL, 0x9711aac5UL, 0x001d7b95UL, 0x82e5e7d2UL, -0x109873f6UL, 0x00613096UL, 0xc32d9521UL, 0xada121ffUL, 0x29908415UL, 0x7fbb977fUL, -0xaf9eb3dbUL, 0x29c9ed2aUL, 0x5ce2a465UL, 0xa730f32cUL, 0xd0aa3fe8UL, 0x8a5cc091UL, -0xd49e2ce7UL, 0x0ce454a9UL, 0xd60acd86UL, 0x015f1919UL, 0x77079103UL, 0xdea03af6UL, -0x78a8565eUL, 0xdee356dfUL, 0x21f05cbeUL, 0x8b75e387UL, 0xb3c50651UL, 0xb8a5c3efUL, -0xd8eeb6d2UL, 0xe523be77UL, 0xc2154529UL, 0x2f69efdfUL, 0xafe67afbUL, 0xf470c4b2UL, -0xf3e0eb5bUL, 0xd6cc9876UL, 0x39e4460cUL, 0x1fda8538UL, 0x1987832fUL, 0xca007367UL, -0xa99144f8UL, 0x296b299eUL, 0x492fc295UL, 0x9266beabUL, 0xb5676e69UL, 0x9bd3dddaUL, -0xdf7e052fUL, 0xdb25701cUL, 0x1b5e51eeUL, 0xf65324e6UL, 0x6afce36cUL, 0x0316cc04UL, -0x8644213eUL, 0xb7dc59d0UL, 0x7965291fUL, 0xccd6fd43UL, 0x41823979UL, 0x932bcdf6UL, -0xb657c34dUL, 0x4edfd282UL, 0x7ae5290cUL, 0x3cb9536bUL, 0x851e20feUL, 0x9833557eUL, -0x13ecf0b0UL, 0xd3ffb372UL, 0x3f85c5c1UL, 0x0aef7ed2UL}; - -static const ulong32 S5[256] = { -0x7ec90c04UL, 0x2c6e74b9UL, 0x9b0e66dfUL, 0xa6337911UL, 0xb86a7fffUL, 0x1dd358f5UL, -0x44dd9d44UL, 0x1731167fUL, 0x08fbf1faUL, 0xe7f511ccUL, 0xd2051b00UL, 0x735aba00UL, -0x2ab722d8UL, 0x386381cbUL, 0xacf6243aUL, 0x69befd7aUL, 0xe6a2e77fUL, 0xf0c720cdUL, -0xc4494816UL, 0xccf5c180UL, 0x38851640UL, 0x15b0a848UL, 0xe68b18cbUL, 0x4caadeffUL, -0x5f480a01UL, 0x0412b2aaUL, 0x259814fcUL, 0x41d0efe2UL, 0x4e40b48dUL, 0x248eb6fbUL, -0x8dba1cfeUL, 0x41a99b02UL, 0x1a550a04UL, 0xba8f65cbUL, 0x7251f4e7UL, 0x95a51725UL, -0xc106ecd7UL, 0x97a5980aUL, 0xc539b9aaUL, 0x4d79fe6aUL, 0xf2f3f763UL, 0x68af8040UL, -0xed0c9e56UL, 0x11b4958bUL, 0xe1eb5a88UL, 0x8709e6b0UL, 0xd7e07156UL, 0x4e29fea7UL, -0x6366e52dUL, 0x02d1c000UL, 0xc4ac8e05UL, 0x9377f571UL, 0x0c05372aUL, 0x578535f2UL, -0x2261be02UL, 0xd642a0c9UL, 0xdf13a280UL, 0x74b55bd2UL, 0x682199c0UL, 0xd421e5ecUL, -0x53fb3ce8UL, 0xc8adedb3UL, 0x28a87fc9UL, 0x3d959981UL, 0x5c1ff900UL, 0xfe38d399UL, -0x0c4eff0bUL, 0x062407eaUL, 0xaa2f4fb1UL, 0x4fb96976UL, 0x90c79505UL, 0xb0a8a774UL, -0xef55a1ffUL, 0xe59ca2c2UL, 0xa6b62d27UL, 0xe66a4263UL, 0xdf65001fUL, 0x0ec50966UL, -0xdfdd55bcUL, 0x29de0655UL, 0x911e739aUL, 0x17af8975UL, 0x32c7911cUL, 0x89f89468UL, -0x0d01e980UL, 0x524755f4UL, 0x03b63cc9UL, 0x0cc844b2UL, 0xbcf3f0aaUL, 0x87ac36e9UL, -0xe53a7426UL, 0x01b3d82bUL, 0x1a9e7449UL, 0x64ee2d7eUL, 0xcddbb1daUL, 0x01c94910UL, -0xb868bf80UL, 0x0d26f3fdUL, 0x9342ede7UL, 0x04a5c284UL, 0x636737b6UL, 0x50f5b616UL, -0xf24766e3UL, 0x8eca36c1UL, 0x136e05dbUL, 0xfef18391UL, 0xfb887a37UL, 0xd6e7f7d4UL, -0xc7fb7dc9UL, 0x3063fcdfUL, 0xb6f589deUL, 0xec2941daUL, 0x26e46695UL, 0xb7566419UL, -0xf654efc5UL, 0xd08d58b7UL, 0x48925401UL, 0xc1bacb7fUL, 0xe5ff550fUL, 0xb6083049UL, -0x5bb5d0e8UL, 0x87d72e5aUL, 0xab6a6ee1UL, 0x223a66ceUL, 0xc62bf3cdUL, 0x9e0885f9UL, -0x68cb3e47UL, 0x086c010fUL, 0xa21de820UL, 0xd18b69deUL, 0xf3f65777UL, 0xfa02c3f6UL, -0x407edac3UL, 0xcbb3d550UL, 0x1793084dUL, 0xb0d70ebaUL, 0x0ab378d5UL, 0xd951fb0cUL, -0xded7da56UL, 0x4124bbe4UL, 0x94ca0b56UL, 0x0f5755d1UL, 0xe0e1e56eUL, 0x6184b5beUL, -0x580a249fUL, 0x94f74bc0UL, 0xe327888eUL, 0x9f7b5561UL, 0xc3dc0280UL, 0x05687715UL, -0x646c6bd7UL, 0x44904db3UL, 0x66b4f0a3UL, 0xc0f1648aUL, 0x697ed5afUL, 0x49e92ff6UL, -0x309e374fUL, 0x2cb6356aUL, 0x85808573UL, 0x4991f840UL, 0x76f0ae02UL, 0x083be84dUL, -0x28421c9aUL, 0x44489406UL, 0x736e4cb8UL, 0xc1092910UL, 0x8bc95fc6UL, 0x7d869cf4UL, -0x134f616fUL, 0x2e77118dUL, 0xb31b2be1UL, 0xaa90b472UL, 0x3ca5d717UL, 0x7d161bbaUL, -0x9cad9010UL, 0xaf462ba2UL, 0x9fe459d2UL, 0x45d34559UL, 0xd9f2da13UL, 0xdbc65487UL, -0xf3e4f94eUL, 0x176d486fUL, 0x097c13eaUL, 0x631da5c7UL, 0x445f7382UL, 0x175683f4UL, -0xcdc66a97UL, 0x70be0288UL, 0xb3cdcf72UL, 0x6e5dd2f3UL, 0x20936079UL, 0x459b80a5UL, -0xbe60e2dbUL, 0xa9c23101UL, 0xeba5315cUL, 0x224e42f2UL, 0x1c5c1572UL, 0xf6721b2cUL, -0x1ad2fff3UL, 0x8c25404eUL, 0x324ed72fUL, 0x4067b7fdUL, 0x0523138eUL, 0x5ca3bc78UL, -0xdc0fd66eUL, 0x75922283UL, 0x784d6b17UL, 0x58ebb16eUL, 0x44094f85UL, 0x3f481d87UL, -0xfcfeae7bUL, 0x77b5ff76UL, 0x8c2302bfUL, 0xaaf47556UL, 0x5f46b02aUL, 0x2b092801UL, -0x3d38f5f7UL, 0x0ca81f36UL, 0x52af4a8aUL, 0x66d5e7c0UL, 0xdf3b0874UL, 0x95055110UL, -0x1b5ad7a8UL, 0xf61ed5adUL, 0x6cf6e479UL, 0x20758184UL, 0xd0cefa65UL, 0x88f7be58UL, -0x4a046826UL, 0x0ff6f8f3UL, 0xa09c7f70UL, 0x5346aba0UL, 0x5ce96c28UL, 0xe176eda3UL, -0x6bac307fUL, 0x376829d2UL, 0x85360fa9UL, 0x17e3fe2aUL, 0x24b79767UL, 0xf5a96b20UL, -0xd6cd2595UL, 0x68ff1ebfUL, 0x7555442cUL, 0xf19f06beUL, 0xf9e0659aUL, 0xeeb9491dUL, -0x34010718UL, 0xbb30cab8UL, 0xe822fe15UL, 0x88570983UL, 0x750e6249UL, 0xda627e55UL, -0x5e76ffa8UL, 0xb1534546UL, 0x6d47de08UL, 0xefe9e7d4UL}; - -static const ulong32 S6[256] = { -0xf6fa8f9dUL, 0x2cac6ce1UL, 0x4ca34867UL, 0xe2337f7cUL, 0x95db08e7UL, 0x016843b4UL, -0xeced5cbcUL, 0x325553acUL, 0xbf9f0960UL, 0xdfa1e2edUL, 0x83f0579dUL, 0x63ed86b9UL, -0x1ab6a6b8UL, 0xde5ebe39UL, 0xf38ff732UL, 0x8989b138UL, 0x33f14961UL, 0xc01937bdUL, -0xf506c6daUL, 0xe4625e7eUL, 0xa308ea99UL, 0x4e23e33cUL, 0x79cbd7ccUL, 0x48a14367UL, -0xa3149619UL, 0xfec94bd5UL, 0xa114174aUL, 0xeaa01866UL, 0xa084db2dUL, 0x09a8486fUL, -0xa888614aUL, 0x2900af98UL, 0x01665991UL, 0xe1992863UL, 0xc8f30c60UL, 0x2e78ef3cUL, -0xd0d51932UL, 0xcf0fec14UL, 0xf7ca07d2UL, 0xd0a82072UL, 0xfd41197eUL, 0x9305a6b0UL, -0xe86be3daUL, 0x74bed3cdUL, 0x372da53cUL, 0x4c7f4448UL, 0xdab5d440UL, 0x6dba0ec3UL, -0x083919a7UL, 0x9fbaeed9UL, 0x49dbcfb0UL, 0x4e670c53UL, 0x5c3d9c01UL, 0x64bdb941UL, -0x2c0e636aUL, 0xba7dd9cdUL, 0xea6f7388UL, 0xe70bc762UL, 0x35f29adbUL, 0x5c4cdd8dUL, -0xf0d48d8cUL, 0xb88153e2UL, 0x08a19866UL, 0x1ae2eac8UL, 0x284caf89UL, 0xaa928223UL, -0x9334be53UL, 0x3b3a21bfUL, 0x16434be3UL, 0x9aea3906UL, 0xefe8c36eUL, 0xf890cdd9UL, -0x80226daeUL, 0xc340a4a3UL, 0xdf7e9c09UL, 0xa694a807UL, 0x5b7c5eccUL, 0x221db3a6UL, -0x9a69a02fUL, 0x68818a54UL, 0xceb2296fUL, 0x53c0843aUL, 0xfe893655UL, 0x25bfe68aUL, -0xb4628abcUL, 0xcf222ebfUL, 0x25ac6f48UL, 0xa9a99387UL, 0x53bddb65UL, 0xe76ffbe7UL, -0xe967fd78UL, 0x0ba93563UL, 0x8e342bc1UL, 0xe8a11be9UL, 0x4980740dUL, 0xc8087dfcUL, -0x8de4bf99UL, 0xa11101a0UL, 0x7fd37975UL, 0xda5a26c0UL, 0xe81f994fUL, 0x9528cd89UL, -0xfd339fedUL, 0xb87834bfUL, 0x5f04456dUL, 0x22258698UL, 0xc9c4c83bUL, 0x2dc156beUL, -0x4f628daaUL, 0x57f55ec5UL, 0xe2220abeUL, 0xd2916ebfUL, 0x4ec75b95UL, 0x24f2c3c0UL, -0x42d15d99UL, 0xcd0d7fa0UL, 0x7b6e27ffUL, 0xa8dc8af0UL, 0x7345c106UL, 0xf41e232fUL, -0x35162386UL, 0xe6ea8926UL, 0x3333b094UL, 0x157ec6f2UL, 0x372b74afUL, 0x692573e4UL, -0xe9a9d848UL, 0xf3160289UL, 0x3a62ef1dUL, 0xa787e238UL, 0xf3a5f676UL, 0x74364853UL, -0x20951063UL, 0x4576698dUL, 0xb6fad407UL, 0x592af950UL, 0x36f73523UL, 0x4cfb6e87UL, -0x7da4cec0UL, 0x6c152daaUL, 0xcb0396a8UL, 0xc50dfe5dUL, 0xfcd707abUL, 0x0921c42fUL, -0x89dff0bbUL, 0x5fe2be78UL, 0x448f4f33UL, 0x754613c9UL, 0x2b05d08dUL, 0x48b9d585UL, -0xdc049441UL, 0xc8098f9bUL, 0x7dede786UL, 0xc39a3373UL, 0x42410005UL, 0x6a091751UL, -0x0ef3c8a6UL, 0x890072d6UL, 0x28207682UL, 0xa9a9f7beUL, 0xbf32679dUL, 0xd45b5b75UL, -0xb353fd00UL, 0xcbb0e358UL, 0x830f220aUL, 0x1f8fb214UL, 0xd372cf08UL, 0xcc3c4a13UL, -0x8cf63166UL, 0x061c87beUL, 0x88c98f88UL, 0x6062e397UL, 0x47cf8e7aUL, 0xb6c85283UL, -0x3cc2acfbUL, 0x3fc06976UL, 0x4e8f0252UL, 0x64d8314dUL, 0xda3870e3UL, 0x1e665459UL, -0xc10908f0UL, 0x513021a5UL, 0x6c5b68b7UL, 0x822f8aa0UL, 0x3007cd3eUL, 0x74719eefUL, -0xdc872681UL, 0x073340d4UL, 0x7e432fd9UL, 0x0c5ec241UL, 0x8809286cUL, 0xf592d891UL, -0x08a930f6UL, 0x957ef305UL, 0xb7fbffbdUL, 0xc266e96fUL, 0x6fe4ac98UL, 0xb173ecc0UL, -0xbc60b42aUL, 0x953498daUL, 0xfba1ae12UL, 0x2d4bd736UL, 0x0f25faabUL, 0xa4f3fcebUL, -0xe2969123UL, 0x257f0c3dUL, 0x9348af49UL, 0x361400bcUL, 0xe8816f4aUL, 0x3814f200UL, -0xa3f94043UL, 0x9c7a54c2UL, 0xbc704f57UL, 0xda41e7f9UL, 0xc25ad33aUL, 0x54f4a084UL, -0xb17f5505UL, 0x59357cbeUL, 0xedbd15c8UL, 0x7f97c5abUL, 0xba5ac7b5UL, 0xb6f6deafUL, -0x3a479c3aUL, 0x5302da25UL, 0x653d7e6aUL, 0x54268d49UL, 0x51a477eaUL, 0x5017d55bUL, -0xd7d25d88UL, 0x44136c76UL, 0x0404a8c8UL, 0xb8e5a121UL, 0xb81a928aUL, 0x60ed5869UL, -0x97c55b96UL, 0xeaec991bUL, 0x29935913UL, 0x01fdb7f1UL, 0x088e8dfaUL, 0x9ab6f6f5UL, -0x3b4cbf9fUL, 0x4a5de3abUL, 0xe6051d35UL, 0xa0e1d855UL, 0xd36b4cf1UL, 0xf544edebUL, -0xb0e93524UL, 0xbebb8fbdUL, 0xa2d762cfUL, 0x49c92f54UL, 0x38b5f331UL, 0x7128a454UL, -0x48392905UL, 0xa65b1db8UL, 0x851c97bdUL, 0xd675cf2fUL}; - -static const ulong32 S7[256] = { -0x85e04019UL, 0x332bf567UL, 0x662dbfffUL, 0xcfc65693UL, 0x2a8d7f6fUL, 0xab9bc912UL, -0xde6008a1UL, 0x2028da1fUL, 0x0227bce7UL, 0x4d642916UL, 0x18fac300UL, 0x50f18b82UL, -0x2cb2cb11UL, 0xb232e75cUL, 0x4b3695f2UL, 0xb28707deUL, 0xa05fbcf6UL, 0xcd4181e9UL, -0xe150210cUL, 0xe24ef1bdUL, 0xb168c381UL, 0xfde4e789UL, 0x5c79b0d8UL, 0x1e8bfd43UL, -0x4d495001UL, 0x38be4341UL, 0x913cee1dUL, 0x92a79c3fUL, 0x089766beUL, 0xbaeeadf4UL, -0x1286becfUL, 0xb6eacb19UL, 0x2660c200UL, 0x7565bde4UL, 0x64241f7aUL, 0x8248dca9UL, -0xc3b3ad66UL, 0x28136086UL, 0x0bd8dfa8UL, 0x356d1cf2UL, 0x107789beUL, 0xb3b2e9ceUL, -0x0502aa8fUL, 0x0bc0351eUL, 0x166bf52aUL, 0xeb12ff82UL, 0xe3486911UL, 0xd34d7516UL, -0x4e7b3affUL, 0x5f43671bUL, 0x9cf6e037UL, 0x4981ac83UL, 0x334266ceUL, 0x8c9341b7UL, -0xd0d854c0UL, 0xcb3a6c88UL, 0x47bc2829UL, 0x4725ba37UL, 0xa66ad22bUL, 0x7ad61f1eUL, -0x0c5cbafaUL, 0x4437f107UL, 0xb6e79962UL, 0x42d2d816UL, 0x0a961288UL, 0xe1a5c06eUL, -0x13749e67UL, 0x72fc081aUL, 0xb1d139f7UL, 0xf9583745UL, 0xcf19df58UL, 0xbec3f756UL, -0xc06eba30UL, 0x07211b24UL, 0x45c28829UL, 0xc95e317fUL, 0xbc8ec511UL, 0x38bc46e9UL, -0xc6e6fa14UL, 0xbae8584aUL, 0xad4ebc46UL, 0x468f508bUL, 0x7829435fUL, 0xf124183bUL, -0x821dba9fUL, 0xaff60ff4UL, 0xea2c4e6dUL, 0x16e39264UL, 0x92544a8bUL, 0x009b4fc3UL, -0xaba68cedUL, 0x9ac96f78UL, 0x06a5b79aUL, 0xb2856e6eUL, 0x1aec3ca9UL, 0xbe838688UL, -0x0e0804e9UL, 0x55f1be56UL, 0xe7e5363bUL, 0xb3a1f25dUL, 0xf7debb85UL, 0x61fe033cUL, -0x16746233UL, 0x3c034c28UL, 0xda6d0c74UL, 0x79aac56cUL, 0x3ce4e1adUL, 0x51f0c802UL, -0x98f8f35aUL, 0x1626a49fUL, 0xeed82b29UL, 0x1d382fe3UL, 0x0c4fb99aUL, 0xbb325778UL, -0x3ec6d97bUL, 0x6e77a6a9UL, 0xcb658b5cUL, 0xd45230c7UL, 0x2bd1408bUL, 0x60c03eb7UL, -0xb9068d78UL, 0xa33754f4UL, 0xf430c87dUL, 0xc8a71302UL, 0xb96d8c32UL, 0xebd4e7beUL, -0xbe8b9d2dUL, 0x7979fb06UL, 0xe7225308UL, 0x8b75cf77UL, 0x11ef8da4UL, 0xe083c858UL, -0x8d6b786fUL, 0x5a6317a6UL, 0xfa5cf7a0UL, 0x5dda0033UL, 0xf28ebfb0UL, 0xf5b9c310UL, -0xa0eac280UL, 0x08b9767aUL, 0xa3d9d2b0UL, 0x79d34217UL, 0x021a718dUL, 0x9ac6336aUL, -0x2711fd60UL, 0x438050e3UL, 0x069908a8UL, 0x3d7fedc4UL, 0x826d2befUL, 0x4eeb8476UL, -0x488dcf25UL, 0x36c9d566UL, 0x28e74e41UL, 0xc2610acaUL, 0x3d49a9cfUL, 0xbae3b9dfUL, -0xb65f8de6UL, 0x92aeaf64UL, 0x3ac7d5e6UL, 0x9ea80509UL, 0xf22b017dUL, 0xa4173f70UL, -0xdd1e16c3UL, 0x15e0d7f9UL, 0x50b1b887UL, 0x2b9f4fd5UL, 0x625aba82UL, 0x6a017962UL, -0x2ec01b9cUL, 0x15488aa9UL, 0xd716e740UL, 0x40055a2cUL, 0x93d29a22UL, 0xe32dbf9aUL, -0x058745b9UL, 0x3453dc1eUL, 0xd699296eUL, 0x496cff6fUL, 0x1c9f4986UL, 0xdfe2ed07UL, -0xb87242d1UL, 0x19de7eaeUL, 0x053e561aUL, 0x15ad6f8cUL, 0x66626c1cUL, 0x7154c24cUL, -0xea082b2aUL, 0x93eb2939UL, 0x17dcb0f0UL, 0x58d4f2aeUL, 0x9ea294fbUL, 0x52cf564cUL, -0x9883fe66UL, 0x2ec40581UL, 0x763953c3UL, 0x01d6692eUL, 0xd3a0c108UL, 0xa1e7160eUL, -0xe4f2dfa6UL, 0x693ed285UL, 0x74904698UL, 0x4c2b0eddUL, 0x4f757656UL, 0x5d393378UL, -0xa132234fUL, 0x3d321c5dUL, 0xc3f5e194UL, 0x4b269301UL, 0xc79f022fUL, 0x3c997e7eUL, -0x5e4f9504UL, 0x3ffafbbdUL, 0x76f7ad0eUL, 0x296693f4UL, 0x3d1fce6fUL, 0xc61e45beUL, -0xd3b5ab34UL, 0xf72bf9b7UL, 0x1b0434c0UL, 0x4e72b567UL, 0x5592a33dUL, 0xb5229301UL, -0xcfd2a87fUL, 0x60aeb767UL, 0x1814386bUL, 0x30bcc33dUL, 0x38a0c07dUL, 0xfd1606f2UL, -0xc363519bUL, 0x589dd390UL, 0x5479f8e6UL, 0x1cb8d647UL, 0x97fd61a9UL, 0xea7759f4UL, -0x2d57539dUL, 0x569a58cfUL, 0xe84e63adUL, 0x462e1b78UL, 0x6580f87eUL, 0xf3817914UL, -0x91da55f4UL, 0x40a230f3UL, 0xd1988f35UL, 0xb6e318d2UL, 0x3ffa50bcUL, 0x3d40f021UL, -0xc3c0bdaeUL, 0x4958c24cUL, 0x518f36b2UL, 0x84b1d370UL, 0x0fedce83UL, 0x878ddadaUL, -0xf2a279c7UL, 0x94e01be8UL, 0x90716f4bUL, 0x954b8aa3UL}; - -static const ulong32 S8[256] = { -0xe216300dUL, 0xbbddfffcUL, 0xa7ebdabdUL, 0x35648095UL, 0x7789f8b7UL, 0xe6c1121bUL, -0x0e241600UL, 0x052ce8b5UL, 0x11a9cfb0UL, 0xe5952f11UL, 0xece7990aUL, 0x9386d174UL, -0x2a42931cUL, 0x76e38111UL, 0xb12def3aUL, 0x37ddddfcUL, 0xde9adeb1UL, 0x0a0cc32cUL, -0xbe197029UL, 0x84a00940UL, 0xbb243a0fUL, 0xb4d137cfUL, 0xb44e79f0UL, 0x049eedfdUL, -0x0b15a15dUL, 0x480d3168UL, 0x8bbbde5aUL, 0x669ded42UL, 0xc7ece831UL, 0x3f8f95e7UL, -0x72df191bUL, 0x7580330dUL, 0x94074251UL, 0x5c7dcdfaUL, 0xabbe6d63UL, 0xaa402164UL, -0xb301d40aUL, 0x02e7d1caUL, 0x53571daeUL, 0x7a3182a2UL, 0x12a8ddecUL, 0xfdaa335dUL, -0x176f43e8UL, 0x71fb46d4UL, 0x38129022UL, 0xce949ad4UL, 0xb84769adUL, 0x965bd862UL, -0x82f3d055UL, 0x66fb9767UL, 0x15b80b4eUL, 0x1d5b47a0UL, 0x4cfde06fUL, 0xc28ec4b8UL, -0x57e8726eUL, 0x647a78fcUL, 0x99865d44UL, 0x608bd593UL, 0x6c200e03UL, 0x39dc5ff6UL, -0x5d0b00a3UL, 0xae63aff2UL, 0x7e8bd632UL, 0x70108c0cUL, 0xbbd35049UL, 0x2998df04UL, -0x980cf42aUL, 0x9b6df491UL, 0x9e7edd53UL, 0x06918548UL, 0x58cb7e07UL, 0x3b74ef2eUL, -0x522fffb1UL, 0xd24708ccUL, 0x1c7e27cdUL, 0xa4eb215bUL, 0x3cf1d2e2UL, 0x19b47a38UL, -0x424f7618UL, 0x35856039UL, 0x9d17dee7UL, 0x27eb35e6UL, 0xc9aff67bUL, 0x36baf5b8UL, -0x09c467cdUL, 0xc18910b1UL, 0xe11dbf7bUL, 0x06cd1af8UL, 0x7170c608UL, 0x2d5e3354UL, -0xd4de495aUL, 0x64c6d006UL, 0xbcc0c62cUL, 0x3dd00db3UL, 0x708f8f34UL, 0x77d51b42UL, -0x264f620fUL, 0x24b8d2bfUL, 0x15c1b79eUL, 0x46a52564UL, 0xf8d7e54eUL, 0x3e378160UL, -0x7895cda5UL, 0x859c15a5UL, 0xe6459788UL, 0xc37bc75fUL, 0xdb07ba0cUL, 0x0676a3abUL, -0x7f229b1eUL, 0x31842e7bUL, 0x24259fd7UL, 0xf8bef472UL, 0x835ffcb8UL, 0x6df4c1f2UL, -0x96f5b195UL, 0xfd0af0fcUL, 0xb0fe134cUL, 0xe2506d3dUL, 0x4f9b12eaUL, 0xf215f225UL, -0xa223736fUL, 0x9fb4c428UL, 0x25d04979UL, 0x34c713f8UL, 0xc4618187UL, 0xea7a6e98UL, -0x7cd16efcUL, 0x1436876cUL, 0xf1544107UL, 0xbedeee14UL, 0x56e9af27UL, 0xa04aa441UL, -0x3cf7c899UL, 0x92ecbae6UL, 0xdd67016dUL, 0x151682ebUL, 0xa842eedfUL, 0xfdba60b4UL, -0xf1907b75UL, 0x20e3030fUL, 0x24d8c29eUL, 0xe139673bUL, 0xefa63fb8UL, 0x71873054UL, -0xb6f2cf3bUL, 0x9f326442UL, 0xcb15a4ccUL, 0xb01a4504UL, 0xf1e47d8dUL, 0x844a1be5UL, -0xbae7dfdcUL, 0x42cbda70UL, 0xcd7dae0aUL, 0x57e85b7aUL, 0xd53f5af6UL, 0x20cf4d8cUL, -0xcea4d428UL, 0x79d130a4UL, 0x3486ebfbUL, 0x33d3cddcUL, 0x77853b53UL, 0x37effcb5UL, -0xc5068778UL, 0xe580b3e6UL, 0x4e68b8f4UL, 0xc5c8b37eUL, 0x0d809ea2UL, 0x398feb7cUL, -0x132a4f94UL, 0x43b7950eUL, 0x2fee7d1cUL, 0x223613bdUL, 0xdd06caa2UL, 0x37df932bUL, -0xc4248289UL, 0xacf3ebc3UL, 0x5715f6b7UL, 0xef3478ddUL, 0xf267616fUL, 0xc148cbe4UL, -0x9052815eUL, 0x5e410fabUL, 0xb48a2465UL, 0x2eda7fa4UL, 0xe87b40e4UL, 0xe98ea084UL, -0x5889e9e1UL, 0xefd390fcUL, 0xdd07d35bUL, 0xdb485694UL, 0x38d7e5b2UL, 0x57720101UL, -0x730edebcUL, 0x5b643113UL, 0x94917e4fUL, 0x503c2fbaUL, 0x646f1282UL, 0x7523d24aUL, -0xe0779695UL, 0xf9c17a8fUL, 0x7a5b2121UL, 0xd187b896UL, 0x29263a4dUL, 0xba510cdfUL, -0x81f47c9fUL, 0xad1163edUL, 0xea7b5965UL, 0x1a00726eUL, 0x11403092UL, 0x00da6d77UL, -0x4a0cdd61UL, 0xad1f4603UL, 0x605bdfb0UL, 0x9eedc364UL, 0x22ebe6a8UL, 0xcee7d28aUL, -0xa0e736a0UL, 0x5564a6b9UL, 0x10853209UL, 0xc7eb8f37UL, 0x2de705caUL, 0x8951570fUL, -0xdf09822bUL, 0xbd691a6cUL, 0xaa12e4f2UL, 0x87451c0fUL, 0xe0f6a27aUL, 0x3ada4819UL, -0x4cf1764fUL, 0x0d771c2bUL, 0x67cdb156UL, 0x350d8384UL, 0x5938fa0fUL, 0x42399ef3UL, -0x36997b07UL, 0x0e84093dUL, 0x4aa93e61UL, 0x8360d87bUL, 0x1fa98b0cUL, 0x1149382cUL, -0xe97625a5UL, 0x0614d1b7UL, 0x0e25244bUL, 0x0c768347UL, 0x589e8d82UL, 0x0d2059d1UL, -0xa466bb1eUL, 0xf8da0a82UL, 0x04f19130UL, 0xba6e4ec0UL, 0x99265164UL, 0x1ee7230dUL, -0x50b2ad80UL, 0xeaee6801UL, 0x8db2a283UL, 0xea8bf59eUL}; - -/* returns the i'th byte of a variable */ -#ifdef _MSC_VER - #define GB(x, i) ((unsigned char)((x[(15-i)>>2])>>(unsigned)(8*((15-i)&3)))) -#else - #define GB(x, i) (((x[(15-i)>>2])>>(unsigned)(8*((15-i)&3)))&255) -#endif - - /** - Initialize the LTC_CAST5 block cipher - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful - */ -#ifdef LTC_CLEAN_STACK -static int _cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -#else -int cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -#endif -{ - ulong32 x[4], z[4]; - unsigned char buf[16]; - int y, i; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - if (num_rounds != 12 && num_rounds != 16 && num_rounds != 0) { - return CRYPT_INVALID_ROUNDS; - } - - if (num_rounds == 12 && keylen > 10) { - return CRYPT_INVALID_ROUNDS; - } - - if (keylen < 5 || keylen > 16) { - return CRYPT_INVALID_KEYSIZE; - } - - /* extend the key as required */ - zeromem(buf, sizeof(buf)); - XMEMCPY(buf, key, (size_t)keylen); - - /* load and start the awful looking network */ - for (y = 0; y < 4; y++) { - LOAD32H(x[3-y],buf+4*y); - } - - for (i = y = 0; y < 2; y++) { - z[3] = x[3] ^ S5[GB(x, 0xD)] ^ S6[GB(x, 0xF)] ^ S7[GB(x, 0xC)] ^ S8[GB(x, 0xE)] ^ S7[GB(x, 0x8)]; - z[2] = x[1] ^ S5[GB(z, 0x0)] ^ S6[GB(z, 0x2)] ^ S7[GB(z, 0x1)] ^ S8[GB(z, 0x3)] ^ S8[GB(x, 0xA)]; - z[1] = x[0] ^ S5[GB(z, 0x7)] ^ S6[GB(z, 0x6)] ^ S7[GB(z, 0x5)] ^ S8[GB(z, 0x4)] ^ S5[GB(x, 0x9)]; - z[0] = x[2] ^ S5[GB(z, 0xA)] ^ S6[GB(z, 0x9)] ^ S7[GB(z, 0xb)] ^ S8[GB(z, 0x8)] ^ S6[GB(x, 0xB)]; - skey->cast5.K[i++] = S5[GB(z, 0x8)] ^ S6[GB(z, 0x9)] ^ S7[GB(z, 0x7)] ^ S8[GB(z, 0x6)] ^ S5[GB(z, 0x2)]; - skey->cast5.K[i++] = S5[GB(z, 0xA)] ^ S6[GB(z, 0xB)] ^ S7[GB(z, 0x5)] ^ S8[GB(z, 0x4)] ^ S6[GB(z, 0x6)]; - skey->cast5.K[i++] = S5[GB(z, 0xC)] ^ S6[GB(z, 0xd)] ^ S7[GB(z, 0x3)] ^ S8[GB(z, 0x2)] ^ S7[GB(z, 0x9)]; - skey->cast5.K[i++] = S5[GB(z, 0xE)] ^ S6[GB(z, 0xF)] ^ S7[GB(z, 0x1)] ^ S8[GB(z, 0x0)] ^ S8[GB(z, 0xc)]; - - x[3] = z[1] ^ S5[GB(z, 0x5)] ^ S6[GB(z, 0x7)] ^ S7[GB(z, 0x4)] ^ S8[GB(z, 0x6)] ^ S7[GB(z, 0x0)]; - x[2] = z[3] ^ S5[GB(x, 0x0)] ^ S6[GB(x, 0x2)] ^ S7[GB(x, 0x1)] ^ S8[GB(x, 0x3)] ^ S8[GB(z, 0x2)]; - x[1] = z[2] ^ S5[GB(x, 0x7)] ^ S6[GB(x, 0x6)] ^ S7[GB(x, 0x5)] ^ S8[GB(x, 0x4)] ^ S5[GB(z, 0x1)]; - x[0] = z[0] ^ S5[GB(x, 0xA)] ^ S6[GB(x, 0x9)] ^ S7[GB(x, 0xb)] ^ S8[GB(x, 0x8)] ^ S6[GB(z, 0x3)]; - skey->cast5.K[i++] = S5[GB(x, 0x3)] ^ S6[GB(x, 0x2)] ^ S7[GB(x, 0xc)] ^ S8[GB(x, 0xd)] ^ S5[GB(x, 0x8)]; - skey->cast5.K[i++] = S5[GB(x, 0x1)] ^ S6[GB(x, 0x0)] ^ S7[GB(x, 0xe)] ^ S8[GB(x, 0xf)] ^ S6[GB(x, 0xd)]; - skey->cast5.K[i++] = S5[GB(x, 0x7)] ^ S6[GB(x, 0x6)] ^ S7[GB(x, 0x8)] ^ S8[GB(x, 0x9)] ^ S7[GB(x, 0x3)]; - skey->cast5.K[i++] = S5[GB(x, 0x5)] ^ S6[GB(x, 0x4)] ^ S7[GB(x, 0xa)] ^ S8[GB(x, 0xb)] ^ S8[GB(x, 0x7)]; - - /* second half */ - z[3] = x[3] ^ S5[GB(x, 0xD)] ^ S6[GB(x, 0xF)] ^ S7[GB(x, 0xC)] ^ S8[GB(x, 0xE)] ^ S7[GB(x, 0x8)]; - z[2] = x[1] ^ S5[GB(z, 0x0)] ^ S6[GB(z, 0x2)] ^ S7[GB(z, 0x1)] ^ S8[GB(z, 0x3)] ^ S8[GB(x, 0xA)]; - z[1] = x[0] ^ S5[GB(z, 0x7)] ^ S6[GB(z, 0x6)] ^ S7[GB(z, 0x5)] ^ S8[GB(z, 0x4)] ^ S5[GB(x, 0x9)]; - z[0] = x[2] ^ S5[GB(z, 0xA)] ^ S6[GB(z, 0x9)] ^ S7[GB(z, 0xb)] ^ S8[GB(z, 0x8)] ^ S6[GB(x, 0xB)]; - skey->cast5.K[i++] = S5[GB(z, 0x3)] ^ S6[GB(z, 0x2)] ^ S7[GB(z, 0xc)] ^ S8[GB(z, 0xd)] ^ S5[GB(z, 0x9)]; - skey->cast5.K[i++] = S5[GB(z, 0x1)] ^ S6[GB(z, 0x0)] ^ S7[GB(z, 0xe)] ^ S8[GB(z, 0xf)] ^ S6[GB(z, 0xc)]; - skey->cast5.K[i++] = S5[GB(z, 0x7)] ^ S6[GB(z, 0x6)] ^ S7[GB(z, 0x8)] ^ S8[GB(z, 0x9)] ^ S7[GB(z, 0x2)]; - skey->cast5.K[i++] = S5[GB(z, 0x5)] ^ S6[GB(z, 0x4)] ^ S7[GB(z, 0xa)] ^ S8[GB(z, 0xb)] ^ S8[GB(z, 0x6)]; - - x[3] = z[1] ^ S5[GB(z, 0x5)] ^ S6[GB(z, 0x7)] ^ S7[GB(z, 0x4)] ^ S8[GB(z, 0x6)] ^ S7[GB(z, 0x0)]; - x[2] = z[3] ^ S5[GB(x, 0x0)] ^ S6[GB(x, 0x2)] ^ S7[GB(x, 0x1)] ^ S8[GB(x, 0x3)] ^ S8[GB(z, 0x2)]; - x[1] = z[2] ^ S5[GB(x, 0x7)] ^ S6[GB(x, 0x6)] ^ S7[GB(x, 0x5)] ^ S8[GB(x, 0x4)] ^ S5[GB(z, 0x1)]; - x[0] = z[0] ^ S5[GB(x, 0xA)] ^ S6[GB(x, 0x9)] ^ S7[GB(x, 0xb)] ^ S8[GB(x, 0x8)] ^ S6[GB(z, 0x3)]; - skey->cast5.K[i++] = S5[GB(x, 0x8)] ^ S6[GB(x, 0x9)] ^ S7[GB(x, 0x7)] ^ S8[GB(x, 0x6)] ^ S5[GB(x, 0x3)]; - skey->cast5.K[i++] = S5[GB(x, 0xa)] ^ S6[GB(x, 0xb)] ^ S7[GB(x, 0x5)] ^ S8[GB(x, 0x4)] ^ S6[GB(x, 0x7)]; - skey->cast5.K[i++] = S5[GB(x, 0xc)] ^ S6[GB(x, 0xd)] ^ S7[GB(x, 0x3)] ^ S8[GB(x, 0x2)] ^ S7[GB(x, 0x8)]; - skey->cast5.K[i++] = S5[GB(x, 0xe)] ^ S6[GB(x, 0xf)] ^ S7[GB(x, 0x1)] ^ S8[GB(x, 0x0)] ^ S8[GB(x, 0xd)]; - } - - skey->cast5.keylen = keylen; - -#ifdef LTC_CLEAN_STACK - zeromem(buf, sizeof(buf)); - zeromem(x, sizeof(x)); - zeromem(z, sizeof(z)); -#endif - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - int z; - z = _cast5_setup(key, keylen, num_rounds, skey); - burn_stack(sizeof(ulong32)*8 + 16 + sizeof(int)*2); - return z; -} -#endif - -#ifdef _MSC_VER - #define INLINE __inline -#else - #define INLINE -#endif - -INLINE static ulong32 FI(ulong32 R, ulong32 Km, ulong32 Kr) -{ - ulong32 I; - I = (Km + R); - I = ROL(I, Kr); - return ((S1[byte(I, 3)] ^ S2[byte(I,2)]) - S3[byte(I,1)]) + S4[byte(I,0)]; -} - -INLINE static ulong32 FII(ulong32 R, ulong32 Km, ulong32 Kr) -{ - ulong32 I; - I = (Km ^ R); - I = ROL(I, Kr); - return ((S1[byte(I, 3)] - S2[byte(I,2)]) + S3[byte(I,1)]) ^ S4[byte(I,0)]; -} - -INLINE static ulong32 FIII(ulong32 R, ulong32 Km, ulong32 Kr) -{ - ulong32 I; - I = (Km - R); - I = ROL(I, Kr); - return ((S1[byte(I, 3)] + S2[byte(I,2)]) ^ S3[byte(I,1)]) - S4[byte(I,0)]; -} - -/** - Encrypts a block of text with LTC_CAST5 - @param pt The input plaintext (8 bytes) - @param ct The output ciphertext (8 bytes) - @param skey The key as scheduled -*/ -#ifdef LTC_CLEAN_STACK -static int _cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#else -int cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#endif -{ - ulong32 R, L; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - - LOAD32H(L,&pt[0]); - LOAD32H(R,&pt[4]); - L ^= FI(R, skey->cast5.K[0], skey->cast5.K[16]); - R ^= FII(L, skey->cast5.K[1], skey->cast5.K[17]); - L ^= FIII(R, skey->cast5.K[2], skey->cast5.K[18]); - R ^= FI(L, skey->cast5.K[3], skey->cast5.K[19]); - L ^= FII(R, skey->cast5.K[4], skey->cast5.K[20]); - R ^= FIII(L, skey->cast5.K[5], skey->cast5.K[21]); - L ^= FI(R, skey->cast5.K[6], skey->cast5.K[22]); - R ^= FII(L, skey->cast5.K[7], skey->cast5.K[23]); - L ^= FIII(R, skey->cast5.K[8], skey->cast5.K[24]); - R ^= FI(L, skey->cast5.K[9], skey->cast5.K[25]); - L ^= FII(R, skey->cast5.K[10], skey->cast5.K[26]); - R ^= FIII(L, skey->cast5.K[11], skey->cast5.K[27]); - if (skey->cast5.keylen > 10) { - L ^= FI(R, skey->cast5.K[12], skey->cast5.K[28]); - R ^= FII(L, skey->cast5.K[13], skey->cast5.K[29]); - L ^= FIII(R, skey->cast5.K[14], skey->cast5.K[30]); - R ^= FI(L, skey->cast5.K[15], skey->cast5.K[31]); - } - STORE32H(R,&ct[0]); - STORE32H(L,&ct[4]); - return CRYPT_OK; -} - - -#ifdef LTC_CLEAN_STACK -int cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - int err =_cast5_ecb_encrypt(pt,ct,skey); - burn_stack(sizeof(ulong32)*3); - return err; -} -#endif - -/** - Decrypts a block of text with LTC_CAST5 - @param ct The input ciphertext (8 bytes) - @param pt The output plaintext (8 bytes) - @param skey The key as scheduled -*/ -#ifdef LTC_CLEAN_STACK -static int _cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#else -int cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#endif -{ - ulong32 R, L; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - - LOAD32H(R,&ct[0]); - LOAD32H(L,&ct[4]); - if (skey->cast5.keylen > 10) { - R ^= FI(L, skey->cast5.K[15], skey->cast5.K[31]); - L ^= FIII(R, skey->cast5.K[14], skey->cast5.K[30]); - R ^= FII(L, skey->cast5.K[13], skey->cast5.K[29]); - L ^= FI(R, skey->cast5.K[12], skey->cast5.K[28]); - } - R ^= FIII(L, skey->cast5.K[11], skey->cast5.K[27]); - L ^= FII(R, skey->cast5.K[10], skey->cast5.K[26]); - R ^= FI(L, skey->cast5.K[9], skey->cast5.K[25]); - L ^= FIII(R, skey->cast5.K[8], skey->cast5.K[24]); - R ^= FII(L, skey->cast5.K[7], skey->cast5.K[23]); - L ^= FI(R, skey->cast5.K[6], skey->cast5.K[22]); - R ^= FIII(L, skey->cast5.K[5], skey->cast5.K[21]); - L ^= FII(R, skey->cast5.K[4], skey->cast5.K[20]); - R ^= FI(L, skey->cast5.K[3], skey->cast5.K[19]); - L ^= FIII(R, skey->cast5.K[2], skey->cast5.K[18]); - R ^= FII(L, skey->cast5.K[1], skey->cast5.K[17]); - L ^= FI(R, skey->cast5.K[0], skey->cast5.K[16]); - STORE32H(L,&pt[0]); - STORE32H(R,&pt[4]); - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - int err = _cast5_ecb_decrypt(ct,pt,skey); - burn_stack(sizeof(ulong32)*3); - return err; -} -#endif - -/** - Performs a self-test of the LTC_CAST5 block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int cast5_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - int keylen; - unsigned char key[16]; - unsigned char pt[8]; - unsigned char ct[8]; - } tests[] = { - { 16, - {0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 0x23, 0x45, 0x67, 0x89, 0x34, 0x56, 0x78, 0x9A}, - {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}, - {0x23, 0x8B, 0x4F, 0xE5, 0x84, 0x7E, 0x44, 0xB2} - }, - { 10, - {0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 0x23, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}, - {0xEB, 0x6A, 0x71, 0x1A, 0x2C, 0x02, 0x27, 0x1B}, - }, - { 5, - {0x01, 0x23, 0x45, 0x67, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, - {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}, - {0x7A, 0xC8, 0x16, 0xD1, 0x6E, 0x9B, 0x30, 0x2E} - } - }; - int i, y, err; - symmetric_key key; - unsigned char tmp[2][8]; - - for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { - if ((err = cast5_setup(tests[i].key, tests[i].keylen, 0, &key)) != CRYPT_OK) { - return err; - } - cast5_ecb_encrypt(tests[i].pt, tmp[0], &key); - cast5_ecb_decrypt(tmp[0], tmp[1], &key); - if ((compare_testvector(tmp[0], 8, tests[i].ct, 8, "CAST5 Encrypt", i) != 0) || - (compare_testvector(tmp[1], 8, tests[i].pt, 8, "CAST5 Decrypt", i) != 0)) { - return CRYPT_FAIL_TESTVECTOR; - } - /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ - for (y = 0; y < 8; y++) tmp[0][y] = 0; - for (y = 0; y < 1000; y++) cast5_ecb_encrypt(tmp[0], tmp[0], &key); - for (y = 0; y < 1000; y++) cast5_ecb_decrypt(tmp[0], tmp[0], &key); - for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; - - } - return CRYPT_OK; - #endif -} - -/** Terminate the context - @param skey The scheduled key -*/ -void cast5_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int cast5_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if (*keysize < 5) { - return CRYPT_INVALID_KEYSIZE; - } else if (*keysize > 16) { - *keysize = 16; - } - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/des.c b/src/libtomcrypt/src/ciphers/des.c deleted file mode 100644 index 8eb2cb41c2..0000000000 --- a/src/libtomcrypt/src/ciphers/des.c +++ /dev/null @@ -1,2086 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file des.c - DES code submitted by Dobes Vandermeer -*/ - -#ifdef LTC_DES - -#define EN0 0 -#define DE1 1 - -const struct ltc_cipher_descriptor des_desc = -{ - "des", - 13, - 8, 8, 8, 16, - &des_setup, - &des_ecb_encrypt, - &des_ecb_decrypt, - &des_test, - &des_done, - &des_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -const struct ltc_cipher_descriptor des3_desc = -{ - "3des", - 14, - 16, 24, 8, 16, - &des3_setup, - &des3_ecb_encrypt, - &des3_ecb_decrypt, - &des3_test, - &des3_done, - &des3_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -static const ulong32 bytebit[8] = -{ - 0200, 0100, 040, 020, 010, 04, 02, 01 -}; - -static const ulong32 bigbyte[24] = -{ - 0x800000UL, 0x400000UL, 0x200000UL, 0x100000UL, - 0x80000UL, 0x40000UL, 0x20000UL, 0x10000UL, - 0x8000UL, 0x4000UL, 0x2000UL, 0x1000UL, - 0x800UL, 0x400UL, 0x200UL, 0x100UL, - 0x80UL, 0x40UL, 0x20UL, 0x10UL, - 0x8UL, 0x4UL, 0x2UL, 0x1L -}; - -/* Use the key schedule specific in the standard (ANSI X3.92-1981) */ - -static const unsigned char pc1[56] = { - 56, 48, 40, 32, 24, 16, 8, 0, 57, 49, 41, 33, 25, 17, - 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, - 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, - 13, 5, 60, 52, 44, 36, 28, 20, 12, 4, 27, 19, 11, 3 -}; - -static const unsigned char totrot[16] = { - 1, 2, 4, 6, - 8, 10, 12, 14, - 15, 17, 19, 21, - 23, 25, 27, 28 -}; - -static const unsigned char pc2[48] = { - 13, 16, 10, 23, 0, 4, 2, 27, 14, 5, 20, 9, - 22, 18, 11, 3, 25, 7, 15, 6, 26, 19, 12, 1, - 40, 51, 30, 36, 46, 54, 29, 39, 50, 44, 32, 47, - 43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31 -}; - - -static const ulong32 SP1[64] = -{ - 0x01010400UL, 0x00000000UL, 0x00010000UL, 0x01010404UL, - 0x01010004UL, 0x00010404UL, 0x00000004UL, 0x00010000UL, - 0x00000400UL, 0x01010400UL, 0x01010404UL, 0x00000400UL, - 0x01000404UL, 0x01010004UL, 0x01000000UL, 0x00000004UL, - 0x00000404UL, 0x01000400UL, 0x01000400UL, 0x00010400UL, - 0x00010400UL, 0x01010000UL, 0x01010000UL, 0x01000404UL, - 0x00010004UL, 0x01000004UL, 0x01000004UL, 0x00010004UL, - 0x00000000UL, 0x00000404UL, 0x00010404UL, 0x01000000UL, - 0x00010000UL, 0x01010404UL, 0x00000004UL, 0x01010000UL, - 0x01010400UL, 0x01000000UL, 0x01000000UL, 0x00000400UL, - 0x01010004UL, 0x00010000UL, 0x00010400UL, 0x01000004UL, - 0x00000400UL, 0x00000004UL, 0x01000404UL, 0x00010404UL, - 0x01010404UL, 0x00010004UL, 0x01010000UL, 0x01000404UL, - 0x01000004UL, 0x00000404UL, 0x00010404UL, 0x01010400UL, - 0x00000404UL, 0x01000400UL, 0x01000400UL, 0x00000000UL, - 0x00010004UL, 0x00010400UL, 0x00000000UL, 0x01010004UL -}; - -static const ulong32 SP2[64] = -{ - 0x80108020UL, 0x80008000UL, 0x00008000UL, 0x00108020UL, - 0x00100000UL, 0x00000020UL, 0x80100020UL, 0x80008020UL, - 0x80000020UL, 0x80108020UL, 0x80108000UL, 0x80000000UL, - 0x80008000UL, 0x00100000UL, 0x00000020UL, 0x80100020UL, - 0x00108000UL, 0x00100020UL, 0x80008020UL, 0x00000000UL, - 0x80000000UL, 0x00008000UL, 0x00108020UL, 0x80100000UL, - 0x00100020UL, 0x80000020UL, 0x00000000UL, 0x00108000UL, - 0x00008020UL, 0x80108000UL, 0x80100000UL, 0x00008020UL, - 0x00000000UL, 0x00108020UL, 0x80100020UL, 0x00100000UL, - 0x80008020UL, 0x80100000UL, 0x80108000UL, 0x00008000UL, - 0x80100000UL, 0x80008000UL, 0x00000020UL, 0x80108020UL, - 0x00108020UL, 0x00000020UL, 0x00008000UL, 0x80000000UL, - 0x00008020UL, 0x80108000UL, 0x00100000UL, 0x80000020UL, - 0x00100020UL, 0x80008020UL, 0x80000020UL, 0x00100020UL, - 0x00108000UL, 0x00000000UL, 0x80008000UL, 0x00008020UL, - 0x80000000UL, 0x80100020UL, 0x80108020UL, 0x00108000UL -}; - -static const ulong32 SP3[64] = -{ - 0x00000208UL, 0x08020200UL, 0x00000000UL, 0x08020008UL, - 0x08000200UL, 0x00000000UL, 0x00020208UL, 0x08000200UL, - 0x00020008UL, 0x08000008UL, 0x08000008UL, 0x00020000UL, - 0x08020208UL, 0x00020008UL, 0x08020000UL, 0x00000208UL, - 0x08000000UL, 0x00000008UL, 0x08020200UL, 0x00000200UL, - 0x00020200UL, 0x08020000UL, 0x08020008UL, 0x00020208UL, - 0x08000208UL, 0x00020200UL, 0x00020000UL, 0x08000208UL, - 0x00000008UL, 0x08020208UL, 0x00000200UL, 0x08000000UL, - 0x08020200UL, 0x08000000UL, 0x00020008UL, 0x00000208UL, - 0x00020000UL, 0x08020200UL, 0x08000200UL, 0x00000000UL, - 0x00000200UL, 0x00020008UL, 0x08020208UL, 0x08000200UL, - 0x08000008UL, 0x00000200UL, 0x00000000UL, 0x08020008UL, - 0x08000208UL, 0x00020000UL, 0x08000000UL, 0x08020208UL, - 0x00000008UL, 0x00020208UL, 0x00020200UL, 0x08000008UL, - 0x08020000UL, 0x08000208UL, 0x00000208UL, 0x08020000UL, - 0x00020208UL, 0x00000008UL, 0x08020008UL, 0x00020200UL -}; - -static const ulong32 SP4[64] = -{ - 0x00802001UL, 0x00002081UL, 0x00002081UL, 0x00000080UL, - 0x00802080UL, 0x00800081UL, 0x00800001UL, 0x00002001UL, - 0x00000000UL, 0x00802000UL, 0x00802000UL, 0x00802081UL, - 0x00000081UL, 0x00000000UL, 0x00800080UL, 0x00800001UL, - 0x00000001UL, 0x00002000UL, 0x00800000UL, 0x00802001UL, - 0x00000080UL, 0x00800000UL, 0x00002001UL, 0x00002080UL, - 0x00800081UL, 0x00000001UL, 0x00002080UL, 0x00800080UL, - 0x00002000UL, 0x00802080UL, 0x00802081UL, 0x00000081UL, - 0x00800080UL, 0x00800001UL, 0x00802000UL, 0x00802081UL, - 0x00000081UL, 0x00000000UL, 0x00000000UL, 0x00802000UL, - 0x00002080UL, 0x00800080UL, 0x00800081UL, 0x00000001UL, - 0x00802001UL, 0x00002081UL, 0x00002081UL, 0x00000080UL, - 0x00802081UL, 0x00000081UL, 0x00000001UL, 0x00002000UL, - 0x00800001UL, 0x00002001UL, 0x00802080UL, 0x00800081UL, - 0x00002001UL, 0x00002080UL, 0x00800000UL, 0x00802001UL, - 0x00000080UL, 0x00800000UL, 0x00002000UL, 0x00802080UL -}; - -static const ulong32 SP5[64] = -{ - 0x00000100UL, 0x02080100UL, 0x02080000UL, 0x42000100UL, - 0x00080000UL, 0x00000100UL, 0x40000000UL, 0x02080000UL, - 0x40080100UL, 0x00080000UL, 0x02000100UL, 0x40080100UL, - 0x42000100UL, 0x42080000UL, 0x00080100UL, 0x40000000UL, - 0x02000000UL, 0x40080000UL, 0x40080000UL, 0x00000000UL, - 0x40000100UL, 0x42080100UL, 0x42080100UL, 0x02000100UL, - 0x42080000UL, 0x40000100UL, 0x00000000UL, 0x42000000UL, - 0x02080100UL, 0x02000000UL, 0x42000000UL, 0x00080100UL, - 0x00080000UL, 0x42000100UL, 0x00000100UL, 0x02000000UL, - 0x40000000UL, 0x02080000UL, 0x42000100UL, 0x40080100UL, - 0x02000100UL, 0x40000000UL, 0x42080000UL, 0x02080100UL, - 0x40080100UL, 0x00000100UL, 0x02000000UL, 0x42080000UL, - 0x42080100UL, 0x00080100UL, 0x42000000UL, 0x42080100UL, - 0x02080000UL, 0x00000000UL, 0x40080000UL, 0x42000000UL, - 0x00080100UL, 0x02000100UL, 0x40000100UL, 0x00080000UL, - 0x00000000UL, 0x40080000UL, 0x02080100UL, 0x40000100UL -}; - -static const ulong32 SP6[64] = -{ - 0x20000010UL, 0x20400000UL, 0x00004000UL, 0x20404010UL, - 0x20400000UL, 0x00000010UL, 0x20404010UL, 0x00400000UL, - 0x20004000UL, 0x00404010UL, 0x00400000UL, 0x20000010UL, - 0x00400010UL, 0x20004000UL, 0x20000000UL, 0x00004010UL, - 0x00000000UL, 0x00400010UL, 0x20004010UL, 0x00004000UL, - 0x00404000UL, 0x20004010UL, 0x00000010UL, 0x20400010UL, - 0x20400010UL, 0x00000000UL, 0x00404010UL, 0x20404000UL, - 0x00004010UL, 0x00404000UL, 0x20404000UL, 0x20000000UL, - 0x20004000UL, 0x00000010UL, 0x20400010UL, 0x00404000UL, - 0x20404010UL, 0x00400000UL, 0x00004010UL, 0x20000010UL, - 0x00400000UL, 0x20004000UL, 0x20000000UL, 0x00004010UL, - 0x20000010UL, 0x20404010UL, 0x00404000UL, 0x20400000UL, - 0x00404010UL, 0x20404000UL, 0x00000000UL, 0x20400010UL, - 0x00000010UL, 0x00004000UL, 0x20400000UL, 0x00404010UL, - 0x00004000UL, 0x00400010UL, 0x20004010UL, 0x00000000UL, - 0x20404000UL, 0x20000000UL, 0x00400010UL, 0x20004010UL -}; - -static const ulong32 SP7[64] = -{ - 0x00200000UL, 0x04200002UL, 0x04000802UL, 0x00000000UL, - 0x00000800UL, 0x04000802UL, 0x00200802UL, 0x04200800UL, - 0x04200802UL, 0x00200000UL, 0x00000000UL, 0x04000002UL, - 0x00000002UL, 0x04000000UL, 0x04200002UL, 0x00000802UL, - 0x04000800UL, 0x00200802UL, 0x00200002UL, 0x04000800UL, - 0x04000002UL, 0x04200000UL, 0x04200800UL, 0x00200002UL, - 0x04200000UL, 0x00000800UL, 0x00000802UL, 0x04200802UL, - 0x00200800UL, 0x00000002UL, 0x04000000UL, 0x00200800UL, - 0x04000000UL, 0x00200800UL, 0x00200000UL, 0x04000802UL, - 0x04000802UL, 0x04200002UL, 0x04200002UL, 0x00000002UL, - 0x00200002UL, 0x04000000UL, 0x04000800UL, 0x00200000UL, - 0x04200800UL, 0x00000802UL, 0x00200802UL, 0x04200800UL, - 0x00000802UL, 0x04000002UL, 0x04200802UL, 0x04200000UL, - 0x00200800UL, 0x00000000UL, 0x00000002UL, 0x04200802UL, - 0x00000000UL, 0x00200802UL, 0x04200000UL, 0x00000800UL, - 0x04000002UL, 0x04000800UL, 0x00000800UL, 0x00200002UL -}; - -static const ulong32 SP8[64] = -{ - 0x10001040UL, 0x00001000UL, 0x00040000UL, 0x10041040UL, - 0x10000000UL, 0x10001040UL, 0x00000040UL, 0x10000000UL, - 0x00040040UL, 0x10040000UL, 0x10041040UL, 0x00041000UL, - 0x10041000UL, 0x00041040UL, 0x00001000UL, 0x00000040UL, - 0x10040000UL, 0x10000040UL, 0x10001000UL, 0x00001040UL, - 0x00041000UL, 0x00040040UL, 0x10040040UL, 0x10041000UL, - 0x00001040UL, 0x00000000UL, 0x00000000UL, 0x10040040UL, - 0x10000040UL, 0x10001000UL, 0x00041040UL, 0x00040000UL, - 0x00041040UL, 0x00040000UL, 0x10041000UL, 0x00001000UL, - 0x00000040UL, 0x10040040UL, 0x00001000UL, 0x00041040UL, - 0x10001000UL, 0x00000040UL, 0x10000040UL, 0x10040000UL, - 0x10040040UL, 0x10000000UL, 0x00040000UL, 0x10001040UL, - 0x00000000UL, 0x10041040UL, 0x00040040UL, 0x10000040UL, - 0x10040000UL, 0x10001000UL, 0x10001040UL, 0x00000000UL, - 0x10041040UL, 0x00041000UL, 0x00041000UL, 0x00001040UL, - 0x00001040UL, 0x00040040UL, 0x10000000UL, 0x10041000UL -}; - -#ifndef LTC_SMALL_CODE - -static const ulong64 des_ip[8][256] = { - -{ CONST64(0x0000000000000000), CONST64(0x0000001000000000), CONST64(0x0000000000000010), CONST64(0x0000001000000010), - CONST64(0x0000100000000000), CONST64(0x0000101000000000), CONST64(0x0000100000000010), CONST64(0x0000101000000010), - CONST64(0x0000000000001000), CONST64(0x0000001000001000), CONST64(0x0000000000001010), CONST64(0x0000001000001010), - CONST64(0x0000100000001000), CONST64(0x0000101000001000), CONST64(0x0000100000001010), CONST64(0x0000101000001010), - CONST64(0x0010000000000000), CONST64(0x0010001000000000), CONST64(0x0010000000000010), CONST64(0x0010001000000010), - CONST64(0x0010100000000000), CONST64(0x0010101000000000), CONST64(0x0010100000000010), CONST64(0x0010101000000010), - CONST64(0x0010000000001000), CONST64(0x0010001000001000), CONST64(0x0010000000001010), CONST64(0x0010001000001010), - CONST64(0x0010100000001000), CONST64(0x0010101000001000), CONST64(0x0010100000001010), CONST64(0x0010101000001010), - CONST64(0x0000000000100000), CONST64(0x0000001000100000), CONST64(0x0000000000100010), CONST64(0x0000001000100010), - CONST64(0x0000100000100000), CONST64(0x0000101000100000), CONST64(0x0000100000100010), CONST64(0x0000101000100010), - CONST64(0x0000000000101000), CONST64(0x0000001000101000), CONST64(0x0000000000101010), CONST64(0x0000001000101010), - CONST64(0x0000100000101000), CONST64(0x0000101000101000), CONST64(0x0000100000101010), CONST64(0x0000101000101010), - CONST64(0x0010000000100000), CONST64(0x0010001000100000), CONST64(0x0010000000100010), CONST64(0x0010001000100010), - CONST64(0x0010100000100000), CONST64(0x0010101000100000), CONST64(0x0010100000100010), CONST64(0x0010101000100010), - CONST64(0x0010000000101000), CONST64(0x0010001000101000), CONST64(0x0010000000101010), CONST64(0x0010001000101010), - CONST64(0x0010100000101000), CONST64(0x0010101000101000), CONST64(0x0010100000101010), CONST64(0x0010101000101010), - CONST64(0x1000000000000000), CONST64(0x1000001000000000), CONST64(0x1000000000000010), CONST64(0x1000001000000010), - CONST64(0x1000100000000000), CONST64(0x1000101000000000), CONST64(0x1000100000000010), CONST64(0x1000101000000010), - CONST64(0x1000000000001000), CONST64(0x1000001000001000), CONST64(0x1000000000001010), CONST64(0x1000001000001010), - CONST64(0x1000100000001000), CONST64(0x1000101000001000), CONST64(0x1000100000001010), CONST64(0x1000101000001010), - CONST64(0x1010000000000000), CONST64(0x1010001000000000), CONST64(0x1010000000000010), CONST64(0x1010001000000010), - CONST64(0x1010100000000000), CONST64(0x1010101000000000), CONST64(0x1010100000000010), CONST64(0x1010101000000010), - CONST64(0x1010000000001000), CONST64(0x1010001000001000), CONST64(0x1010000000001010), CONST64(0x1010001000001010), - CONST64(0x1010100000001000), CONST64(0x1010101000001000), CONST64(0x1010100000001010), CONST64(0x1010101000001010), - CONST64(0x1000000000100000), CONST64(0x1000001000100000), CONST64(0x1000000000100010), CONST64(0x1000001000100010), - CONST64(0x1000100000100000), CONST64(0x1000101000100000), CONST64(0x1000100000100010), CONST64(0x1000101000100010), - CONST64(0x1000000000101000), CONST64(0x1000001000101000), CONST64(0x1000000000101010), CONST64(0x1000001000101010), - CONST64(0x1000100000101000), CONST64(0x1000101000101000), CONST64(0x1000100000101010), CONST64(0x1000101000101010), - CONST64(0x1010000000100000), CONST64(0x1010001000100000), CONST64(0x1010000000100010), CONST64(0x1010001000100010), - CONST64(0x1010100000100000), CONST64(0x1010101000100000), CONST64(0x1010100000100010), CONST64(0x1010101000100010), - CONST64(0x1010000000101000), CONST64(0x1010001000101000), CONST64(0x1010000000101010), CONST64(0x1010001000101010), - CONST64(0x1010100000101000), CONST64(0x1010101000101000), CONST64(0x1010100000101010), CONST64(0x1010101000101010), - CONST64(0x0000000010000000), CONST64(0x0000001010000000), CONST64(0x0000000010000010), CONST64(0x0000001010000010), - CONST64(0x0000100010000000), CONST64(0x0000101010000000), CONST64(0x0000100010000010), CONST64(0x0000101010000010), - CONST64(0x0000000010001000), CONST64(0x0000001010001000), CONST64(0x0000000010001010), CONST64(0x0000001010001010), - CONST64(0x0000100010001000), CONST64(0x0000101010001000), CONST64(0x0000100010001010), CONST64(0x0000101010001010), - CONST64(0x0010000010000000), CONST64(0x0010001010000000), CONST64(0x0010000010000010), CONST64(0x0010001010000010), - CONST64(0x0010100010000000), CONST64(0x0010101010000000), CONST64(0x0010100010000010), CONST64(0x0010101010000010), - CONST64(0x0010000010001000), CONST64(0x0010001010001000), CONST64(0x0010000010001010), CONST64(0x0010001010001010), - CONST64(0x0010100010001000), CONST64(0x0010101010001000), CONST64(0x0010100010001010), CONST64(0x0010101010001010), - CONST64(0x0000000010100000), CONST64(0x0000001010100000), CONST64(0x0000000010100010), CONST64(0x0000001010100010), - CONST64(0x0000100010100000), CONST64(0x0000101010100000), CONST64(0x0000100010100010), CONST64(0x0000101010100010), - CONST64(0x0000000010101000), CONST64(0x0000001010101000), CONST64(0x0000000010101010), CONST64(0x0000001010101010), - CONST64(0x0000100010101000), CONST64(0x0000101010101000), CONST64(0x0000100010101010), CONST64(0x0000101010101010), - CONST64(0x0010000010100000), CONST64(0x0010001010100000), CONST64(0x0010000010100010), CONST64(0x0010001010100010), - CONST64(0x0010100010100000), CONST64(0x0010101010100000), CONST64(0x0010100010100010), CONST64(0x0010101010100010), - CONST64(0x0010000010101000), CONST64(0x0010001010101000), CONST64(0x0010000010101010), CONST64(0x0010001010101010), - CONST64(0x0010100010101000), CONST64(0x0010101010101000), CONST64(0x0010100010101010), CONST64(0x0010101010101010), - CONST64(0x1000000010000000), CONST64(0x1000001010000000), CONST64(0x1000000010000010), CONST64(0x1000001010000010), - CONST64(0x1000100010000000), CONST64(0x1000101010000000), CONST64(0x1000100010000010), CONST64(0x1000101010000010), - CONST64(0x1000000010001000), CONST64(0x1000001010001000), CONST64(0x1000000010001010), CONST64(0x1000001010001010), - CONST64(0x1000100010001000), CONST64(0x1000101010001000), CONST64(0x1000100010001010), CONST64(0x1000101010001010), - CONST64(0x1010000010000000), CONST64(0x1010001010000000), CONST64(0x1010000010000010), CONST64(0x1010001010000010), - CONST64(0x1010100010000000), CONST64(0x1010101010000000), CONST64(0x1010100010000010), CONST64(0x1010101010000010), - CONST64(0x1010000010001000), CONST64(0x1010001010001000), CONST64(0x1010000010001010), CONST64(0x1010001010001010), - CONST64(0x1010100010001000), CONST64(0x1010101010001000), CONST64(0x1010100010001010), CONST64(0x1010101010001010), - CONST64(0x1000000010100000), CONST64(0x1000001010100000), CONST64(0x1000000010100010), CONST64(0x1000001010100010), - CONST64(0x1000100010100000), CONST64(0x1000101010100000), CONST64(0x1000100010100010), CONST64(0x1000101010100010), - CONST64(0x1000000010101000), CONST64(0x1000001010101000), CONST64(0x1000000010101010), CONST64(0x1000001010101010), - CONST64(0x1000100010101000), CONST64(0x1000101010101000), CONST64(0x1000100010101010), CONST64(0x1000101010101010), - CONST64(0x1010000010100000), CONST64(0x1010001010100000), CONST64(0x1010000010100010), CONST64(0x1010001010100010), - CONST64(0x1010100010100000), CONST64(0x1010101010100000), CONST64(0x1010100010100010), CONST64(0x1010101010100010), - CONST64(0x1010000010101000), CONST64(0x1010001010101000), CONST64(0x1010000010101010), CONST64(0x1010001010101010), - CONST64(0x1010100010101000), CONST64(0x1010101010101000), CONST64(0x1010100010101010), CONST64(0x1010101010101010) - }, -{ CONST64(0x0000000000000000), CONST64(0x0000000800000000), CONST64(0x0000000000000008), CONST64(0x0000000800000008), - CONST64(0x0000080000000000), CONST64(0x0000080800000000), CONST64(0x0000080000000008), CONST64(0x0000080800000008), - CONST64(0x0000000000000800), CONST64(0x0000000800000800), CONST64(0x0000000000000808), CONST64(0x0000000800000808), - CONST64(0x0000080000000800), CONST64(0x0000080800000800), CONST64(0x0000080000000808), CONST64(0x0000080800000808), - CONST64(0x0008000000000000), CONST64(0x0008000800000000), CONST64(0x0008000000000008), CONST64(0x0008000800000008), - CONST64(0x0008080000000000), CONST64(0x0008080800000000), CONST64(0x0008080000000008), CONST64(0x0008080800000008), - CONST64(0x0008000000000800), CONST64(0x0008000800000800), CONST64(0x0008000000000808), CONST64(0x0008000800000808), - CONST64(0x0008080000000800), CONST64(0x0008080800000800), CONST64(0x0008080000000808), CONST64(0x0008080800000808), - CONST64(0x0000000000080000), CONST64(0x0000000800080000), CONST64(0x0000000000080008), CONST64(0x0000000800080008), - CONST64(0x0000080000080000), CONST64(0x0000080800080000), CONST64(0x0000080000080008), CONST64(0x0000080800080008), - CONST64(0x0000000000080800), CONST64(0x0000000800080800), CONST64(0x0000000000080808), CONST64(0x0000000800080808), - CONST64(0x0000080000080800), CONST64(0x0000080800080800), CONST64(0x0000080000080808), CONST64(0x0000080800080808), - CONST64(0x0008000000080000), CONST64(0x0008000800080000), CONST64(0x0008000000080008), CONST64(0x0008000800080008), - CONST64(0x0008080000080000), CONST64(0x0008080800080000), CONST64(0x0008080000080008), CONST64(0x0008080800080008), - CONST64(0x0008000000080800), CONST64(0x0008000800080800), CONST64(0x0008000000080808), CONST64(0x0008000800080808), - CONST64(0x0008080000080800), CONST64(0x0008080800080800), CONST64(0x0008080000080808), CONST64(0x0008080800080808), - CONST64(0x0800000000000000), CONST64(0x0800000800000000), CONST64(0x0800000000000008), CONST64(0x0800000800000008), - CONST64(0x0800080000000000), CONST64(0x0800080800000000), CONST64(0x0800080000000008), CONST64(0x0800080800000008), - CONST64(0x0800000000000800), CONST64(0x0800000800000800), CONST64(0x0800000000000808), CONST64(0x0800000800000808), - CONST64(0x0800080000000800), CONST64(0x0800080800000800), CONST64(0x0800080000000808), CONST64(0x0800080800000808), - CONST64(0x0808000000000000), CONST64(0x0808000800000000), CONST64(0x0808000000000008), CONST64(0x0808000800000008), - CONST64(0x0808080000000000), CONST64(0x0808080800000000), CONST64(0x0808080000000008), CONST64(0x0808080800000008), - CONST64(0x0808000000000800), CONST64(0x0808000800000800), CONST64(0x0808000000000808), CONST64(0x0808000800000808), - CONST64(0x0808080000000800), CONST64(0x0808080800000800), CONST64(0x0808080000000808), CONST64(0x0808080800000808), - CONST64(0x0800000000080000), CONST64(0x0800000800080000), CONST64(0x0800000000080008), CONST64(0x0800000800080008), - CONST64(0x0800080000080000), CONST64(0x0800080800080000), CONST64(0x0800080000080008), CONST64(0x0800080800080008), - CONST64(0x0800000000080800), CONST64(0x0800000800080800), CONST64(0x0800000000080808), CONST64(0x0800000800080808), - CONST64(0x0800080000080800), CONST64(0x0800080800080800), CONST64(0x0800080000080808), CONST64(0x0800080800080808), - CONST64(0x0808000000080000), CONST64(0x0808000800080000), CONST64(0x0808000000080008), CONST64(0x0808000800080008), - CONST64(0x0808080000080000), CONST64(0x0808080800080000), CONST64(0x0808080000080008), CONST64(0x0808080800080008), - CONST64(0x0808000000080800), CONST64(0x0808000800080800), CONST64(0x0808000000080808), CONST64(0x0808000800080808), - CONST64(0x0808080000080800), CONST64(0x0808080800080800), CONST64(0x0808080000080808), CONST64(0x0808080800080808), - CONST64(0x0000000008000000), CONST64(0x0000000808000000), CONST64(0x0000000008000008), CONST64(0x0000000808000008), - CONST64(0x0000080008000000), CONST64(0x0000080808000000), CONST64(0x0000080008000008), CONST64(0x0000080808000008), - CONST64(0x0000000008000800), CONST64(0x0000000808000800), CONST64(0x0000000008000808), CONST64(0x0000000808000808), - CONST64(0x0000080008000800), CONST64(0x0000080808000800), CONST64(0x0000080008000808), CONST64(0x0000080808000808), - CONST64(0x0008000008000000), CONST64(0x0008000808000000), CONST64(0x0008000008000008), CONST64(0x0008000808000008), - CONST64(0x0008080008000000), CONST64(0x0008080808000000), CONST64(0x0008080008000008), CONST64(0x0008080808000008), - CONST64(0x0008000008000800), CONST64(0x0008000808000800), CONST64(0x0008000008000808), CONST64(0x0008000808000808), - CONST64(0x0008080008000800), CONST64(0x0008080808000800), CONST64(0x0008080008000808), CONST64(0x0008080808000808), - CONST64(0x0000000008080000), CONST64(0x0000000808080000), CONST64(0x0000000008080008), CONST64(0x0000000808080008), - CONST64(0x0000080008080000), CONST64(0x0000080808080000), CONST64(0x0000080008080008), CONST64(0x0000080808080008), - CONST64(0x0000000008080800), CONST64(0x0000000808080800), CONST64(0x0000000008080808), CONST64(0x0000000808080808), - CONST64(0x0000080008080800), CONST64(0x0000080808080800), CONST64(0x0000080008080808), CONST64(0x0000080808080808), - CONST64(0x0008000008080000), CONST64(0x0008000808080000), CONST64(0x0008000008080008), CONST64(0x0008000808080008), - CONST64(0x0008080008080000), CONST64(0x0008080808080000), CONST64(0x0008080008080008), CONST64(0x0008080808080008), - CONST64(0x0008000008080800), CONST64(0x0008000808080800), CONST64(0x0008000008080808), CONST64(0x0008000808080808), - CONST64(0x0008080008080800), CONST64(0x0008080808080800), CONST64(0x0008080008080808), CONST64(0x0008080808080808), - CONST64(0x0800000008000000), CONST64(0x0800000808000000), CONST64(0x0800000008000008), CONST64(0x0800000808000008), - CONST64(0x0800080008000000), CONST64(0x0800080808000000), CONST64(0x0800080008000008), CONST64(0x0800080808000008), - CONST64(0x0800000008000800), CONST64(0x0800000808000800), CONST64(0x0800000008000808), CONST64(0x0800000808000808), - CONST64(0x0800080008000800), CONST64(0x0800080808000800), CONST64(0x0800080008000808), CONST64(0x0800080808000808), - CONST64(0x0808000008000000), CONST64(0x0808000808000000), CONST64(0x0808000008000008), CONST64(0x0808000808000008), - CONST64(0x0808080008000000), CONST64(0x0808080808000000), CONST64(0x0808080008000008), CONST64(0x0808080808000008), - CONST64(0x0808000008000800), CONST64(0x0808000808000800), CONST64(0x0808000008000808), CONST64(0x0808000808000808), - CONST64(0x0808080008000800), CONST64(0x0808080808000800), CONST64(0x0808080008000808), CONST64(0x0808080808000808), - CONST64(0x0800000008080000), CONST64(0x0800000808080000), CONST64(0x0800000008080008), CONST64(0x0800000808080008), - CONST64(0x0800080008080000), CONST64(0x0800080808080000), CONST64(0x0800080008080008), CONST64(0x0800080808080008), - CONST64(0x0800000008080800), CONST64(0x0800000808080800), CONST64(0x0800000008080808), CONST64(0x0800000808080808), - CONST64(0x0800080008080800), CONST64(0x0800080808080800), CONST64(0x0800080008080808), CONST64(0x0800080808080808), - CONST64(0x0808000008080000), CONST64(0x0808000808080000), CONST64(0x0808000008080008), CONST64(0x0808000808080008), - CONST64(0x0808080008080000), CONST64(0x0808080808080000), CONST64(0x0808080008080008), CONST64(0x0808080808080008), - CONST64(0x0808000008080800), CONST64(0x0808000808080800), CONST64(0x0808000008080808), CONST64(0x0808000808080808), - CONST64(0x0808080008080800), CONST64(0x0808080808080800), CONST64(0x0808080008080808), CONST64(0x0808080808080808) - }, -{ CONST64(0x0000000000000000), CONST64(0x0000000400000000), CONST64(0x0000000000000004), CONST64(0x0000000400000004), - CONST64(0x0000040000000000), CONST64(0x0000040400000000), CONST64(0x0000040000000004), CONST64(0x0000040400000004), - CONST64(0x0000000000000400), CONST64(0x0000000400000400), CONST64(0x0000000000000404), CONST64(0x0000000400000404), - CONST64(0x0000040000000400), CONST64(0x0000040400000400), CONST64(0x0000040000000404), CONST64(0x0000040400000404), - CONST64(0x0004000000000000), CONST64(0x0004000400000000), CONST64(0x0004000000000004), CONST64(0x0004000400000004), - CONST64(0x0004040000000000), CONST64(0x0004040400000000), CONST64(0x0004040000000004), CONST64(0x0004040400000004), - CONST64(0x0004000000000400), CONST64(0x0004000400000400), CONST64(0x0004000000000404), CONST64(0x0004000400000404), - CONST64(0x0004040000000400), CONST64(0x0004040400000400), CONST64(0x0004040000000404), CONST64(0x0004040400000404), - CONST64(0x0000000000040000), CONST64(0x0000000400040000), CONST64(0x0000000000040004), CONST64(0x0000000400040004), - CONST64(0x0000040000040000), CONST64(0x0000040400040000), CONST64(0x0000040000040004), CONST64(0x0000040400040004), - CONST64(0x0000000000040400), CONST64(0x0000000400040400), CONST64(0x0000000000040404), CONST64(0x0000000400040404), - CONST64(0x0000040000040400), CONST64(0x0000040400040400), CONST64(0x0000040000040404), CONST64(0x0000040400040404), - CONST64(0x0004000000040000), CONST64(0x0004000400040000), CONST64(0x0004000000040004), CONST64(0x0004000400040004), - CONST64(0x0004040000040000), CONST64(0x0004040400040000), CONST64(0x0004040000040004), CONST64(0x0004040400040004), - CONST64(0x0004000000040400), CONST64(0x0004000400040400), CONST64(0x0004000000040404), CONST64(0x0004000400040404), - CONST64(0x0004040000040400), CONST64(0x0004040400040400), CONST64(0x0004040000040404), CONST64(0x0004040400040404), - CONST64(0x0400000000000000), CONST64(0x0400000400000000), CONST64(0x0400000000000004), CONST64(0x0400000400000004), - CONST64(0x0400040000000000), CONST64(0x0400040400000000), CONST64(0x0400040000000004), CONST64(0x0400040400000004), - CONST64(0x0400000000000400), CONST64(0x0400000400000400), CONST64(0x0400000000000404), CONST64(0x0400000400000404), - CONST64(0x0400040000000400), CONST64(0x0400040400000400), CONST64(0x0400040000000404), CONST64(0x0400040400000404), - CONST64(0x0404000000000000), CONST64(0x0404000400000000), CONST64(0x0404000000000004), CONST64(0x0404000400000004), - CONST64(0x0404040000000000), CONST64(0x0404040400000000), CONST64(0x0404040000000004), CONST64(0x0404040400000004), - CONST64(0x0404000000000400), CONST64(0x0404000400000400), CONST64(0x0404000000000404), CONST64(0x0404000400000404), - CONST64(0x0404040000000400), CONST64(0x0404040400000400), CONST64(0x0404040000000404), CONST64(0x0404040400000404), - CONST64(0x0400000000040000), CONST64(0x0400000400040000), CONST64(0x0400000000040004), CONST64(0x0400000400040004), - CONST64(0x0400040000040000), CONST64(0x0400040400040000), CONST64(0x0400040000040004), CONST64(0x0400040400040004), - CONST64(0x0400000000040400), CONST64(0x0400000400040400), CONST64(0x0400000000040404), CONST64(0x0400000400040404), - CONST64(0x0400040000040400), CONST64(0x0400040400040400), CONST64(0x0400040000040404), CONST64(0x0400040400040404), - CONST64(0x0404000000040000), CONST64(0x0404000400040000), CONST64(0x0404000000040004), CONST64(0x0404000400040004), - CONST64(0x0404040000040000), CONST64(0x0404040400040000), CONST64(0x0404040000040004), CONST64(0x0404040400040004), - CONST64(0x0404000000040400), CONST64(0x0404000400040400), CONST64(0x0404000000040404), CONST64(0x0404000400040404), - CONST64(0x0404040000040400), CONST64(0x0404040400040400), CONST64(0x0404040000040404), CONST64(0x0404040400040404), - CONST64(0x0000000004000000), CONST64(0x0000000404000000), CONST64(0x0000000004000004), CONST64(0x0000000404000004), - CONST64(0x0000040004000000), CONST64(0x0000040404000000), CONST64(0x0000040004000004), CONST64(0x0000040404000004), - CONST64(0x0000000004000400), CONST64(0x0000000404000400), CONST64(0x0000000004000404), CONST64(0x0000000404000404), - CONST64(0x0000040004000400), CONST64(0x0000040404000400), CONST64(0x0000040004000404), CONST64(0x0000040404000404), - CONST64(0x0004000004000000), CONST64(0x0004000404000000), CONST64(0x0004000004000004), CONST64(0x0004000404000004), - CONST64(0x0004040004000000), CONST64(0x0004040404000000), CONST64(0x0004040004000004), CONST64(0x0004040404000004), - CONST64(0x0004000004000400), CONST64(0x0004000404000400), CONST64(0x0004000004000404), CONST64(0x0004000404000404), - CONST64(0x0004040004000400), CONST64(0x0004040404000400), CONST64(0x0004040004000404), CONST64(0x0004040404000404), - CONST64(0x0000000004040000), CONST64(0x0000000404040000), CONST64(0x0000000004040004), CONST64(0x0000000404040004), - CONST64(0x0000040004040000), CONST64(0x0000040404040000), CONST64(0x0000040004040004), CONST64(0x0000040404040004), - CONST64(0x0000000004040400), CONST64(0x0000000404040400), CONST64(0x0000000004040404), CONST64(0x0000000404040404), - CONST64(0x0000040004040400), CONST64(0x0000040404040400), CONST64(0x0000040004040404), CONST64(0x0000040404040404), - CONST64(0x0004000004040000), CONST64(0x0004000404040000), CONST64(0x0004000004040004), CONST64(0x0004000404040004), - CONST64(0x0004040004040000), CONST64(0x0004040404040000), CONST64(0x0004040004040004), CONST64(0x0004040404040004), - CONST64(0x0004000004040400), CONST64(0x0004000404040400), CONST64(0x0004000004040404), CONST64(0x0004000404040404), - CONST64(0x0004040004040400), CONST64(0x0004040404040400), CONST64(0x0004040004040404), CONST64(0x0004040404040404), - CONST64(0x0400000004000000), CONST64(0x0400000404000000), CONST64(0x0400000004000004), CONST64(0x0400000404000004), - CONST64(0x0400040004000000), CONST64(0x0400040404000000), CONST64(0x0400040004000004), CONST64(0x0400040404000004), - CONST64(0x0400000004000400), CONST64(0x0400000404000400), CONST64(0x0400000004000404), CONST64(0x0400000404000404), - CONST64(0x0400040004000400), CONST64(0x0400040404000400), CONST64(0x0400040004000404), CONST64(0x0400040404000404), - CONST64(0x0404000004000000), CONST64(0x0404000404000000), CONST64(0x0404000004000004), CONST64(0x0404000404000004), - CONST64(0x0404040004000000), CONST64(0x0404040404000000), CONST64(0x0404040004000004), CONST64(0x0404040404000004), - CONST64(0x0404000004000400), CONST64(0x0404000404000400), CONST64(0x0404000004000404), CONST64(0x0404000404000404), - CONST64(0x0404040004000400), CONST64(0x0404040404000400), CONST64(0x0404040004000404), CONST64(0x0404040404000404), - CONST64(0x0400000004040000), CONST64(0x0400000404040000), CONST64(0x0400000004040004), CONST64(0x0400000404040004), - CONST64(0x0400040004040000), CONST64(0x0400040404040000), CONST64(0x0400040004040004), CONST64(0x0400040404040004), - CONST64(0x0400000004040400), CONST64(0x0400000404040400), CONST64(0x0400000004040404), CONST64(0x0400000404040404), - CONST64(0x0400040004040400), CONST64(0x0400040404040400), CONST64(0x0400040004040404), CONST64(0x0400040404040404), - CONST64(0x0404000004040000), CONST64(0x0404000404040000), CONST64(0x0404000004040004), CONST64(0x0404000404040004), - CONST64(0x0404040004040000), CONST64(0x0404040404040000), CONST64(0x0404040004040004), CONST64(0x0404040404040004), - CONST64(0x0404000004040400), CONST64(0x0404000404040400), CONST64(0x0404000004040404), CONST64(0x0404000404040404), - CONST64(0x0404040004040400), CONST64(0x0404040404040400), CONST64(0x0404040004040404), CONST64(0x0404040404040404) - }, -{ CONST64(0x0000000000000000), CONST64(0x0000000200000000), CONST64(0x0000000000000002), CONST64(0x0000000200000002), - CONST64(0x0000020000000000), CONST64(0x0000020200000000), CONST64(0x0000020000000002), CONST64(0x0000020200000002), - CONST64(0x0000000000000200), CONST64(0x0000000200000200), CONST64(0x0000000000000202), CONST64(0x0000000200000202), - CONST64(0x0000020000000200), CONST64(0x0000020200000200), CONST64(0x0000020000000202), CONST64(0x0000020200000202), - CONST64(0x0002000000000000), CONST64(0x0002000200000000), CONST64(0x0002000000000002), CONST64(0x0002000200000002), - CONST64(0x0002020000000000), CONST64(0x0002020200000000), CONST64(0x0002020000000002), CONST64(0x0002020200000002), - CONST64(0x0002000000000200), CONST64(0x0002000200000200), CONST64(0x0002000000000202), CONST64(0x0002000200000202), - CONST64(0x0002020000000200), CONST64(0x0002020200000200), CONST64(0x0002020000000202), CONST64(0x0002020200000202), - CONST64(0x0000000000020000), CONST64(0x0000000200020000), CONST64(0x0000000000020002), CONST64(0x0000000200020002), - CONST64(0x0000020000020000), CONST64(0x0000020200020000), CONST64(0x0000020000020002), CONST64(0x0000020200020002), - CONST64(0x0000000000020200), CONST64(0x0000000200020200), CONST64(0x0000000000020202), CONST64(0x0000000200020202), - CONST64(0x0000020000020200), CONST64(0x0000020200020200), CONST64(0x0000020000020202), CONST64(0x0000020200020202), - CONST64(0x0002000000020000), CONST64(0x0002000200020000), CONST64(0x0002000000020002), CONST64(0x0002000200020002), - CONST64(0x0002020000020000), CONST64(0x0002020200020000), CONST64(0x0002020000020002), CONST64(0x0002020200020002), - CONST64(0x0002000000020200), CONST64(0x0002000200020200), CONST64(0x0002000000020202), CONST64(0x0002000200020202), - CONST64(0x0002020000020200), CONST64(0x0002020200020200), CONST64(0x0002020000020202), CONST64(0x0002020200020202), - CONST64(0x0200000000000000), CONST64(0x0200000200000000), CONST64(0x0200000000000002), CONST64(0x0200000200000002), - CONST64(0x0200020000000000), CONST64(0x0200020200000000), CONST64(0x0200020000000002), CONST64(0x0200020200000002), - CONST64(0x0200000000000200), CONST64(0x0200000200000200), CONST64(0x0200000000000202), CONST64(0x0200000200000202), - CONST64(0x0200020000000200), CONST64(0x0200020200000200), CONST64(0x0200020000000202), CONST64(0x0200020200000202), - CONST64(0x0202000000000000), CONST64(0x0202000200000000), CONST64(0x0202000000000002), CONST64(0x0202000200000002), - CONST64(0x0202020000000000), CONST64(0x0202020200000000), CONST64(0x0202020000000002), CONST64(0x0202020200000002), - CONST64(0x0202000000000200), CONST64(0x0202000200000200), CONST64(0x0202000000000202), CONST64(0x0202000200000202), - CONST64(0x0202020000000200), CONST64(0x0202020200000200), CONST64(0x0202020000000202), CONST64(0x0202020200000202), - CONST64(0x0200000000020000), CONST64(0x0200000200020000), CONST64(0x0200000000020002), CONST64(0x0200000200020002), - CONST64(0x0200020000020000), CONST64(0x0200020200020000), CONST64(0x0200020000020002), CONST64(0x0200020200020002), - CONST64(0x0200000000020200), CONST64(0x0200000200020200), CONST64(0x0200000000020202), CONST64(0x0200000200020202), - CONST64(0x0200020000020200), CONST64(0x0200020200020200), CONST64(0x0200020000020202), CONST64(0x0200020200020202), - CONST64(0x0202000000020000), CONST64(0x0202000200020000), CONST64(0x0202000000020002), CONST64(0x0202000200020002), - CONST64(0x0202020000020000), CONST64(0x0202020200020000), CONST64(0x0202020000020002), CONST64(0x0202020200020002), - CONST64(0x0202000000020200), CONST64(0x0202000200020200), CONST64(0x0202000000020202), CONST64(0x0202000200020202), - CONST64(0x0202020000020200), CONST64(0x0202020200020200), CONST64(0x0202020000020202), CONST64(0x0202020200020202), - CONST64(0x0000000002000000), CONST64(0x0000000202000000), CONST64(0x0000000002000002), CONST64(0x0000000202000002), - CONST64(0x0000020002000000), CONST64(0x0000020202000000), CONST64(0x0000020002000002), CONST64(0x0000020202000002), - CONST64(0x0000000002000200), CONST64(0x0000000202000200), CONST64(0x0000000002000202), CONST64(0x0000000202000202), - CONST64(0x0000020002000200), CONST64(0x0000020202000200), CONST64(0x0000020002000202), CONST64(0x0000020202000202), - CONST64(0x0002000002000000), CONST64(0x0002000202000000), CONST64(0x0002000002000002), CONST64(0x0002000202000002), - CONST64(0x0002020002000000), CONST64(0x0002020202000000), CONST64(0x0002020002000002), CONST64(0x0002020202000002), - CONST64(0x0002000002000200), CONST64(0x0002000202000200), CONST64(0x0002000002000202), CONST64(0x0002000202000202), - CONST64(0x0002020002000200), CONST64(0x0002020202000200), CONST64(0x0002020002000202), CONST64(0x0002020202000202), - CONST64(0x0000000002020000), CONST64(0x0000000202020000), CONST64(0x0000000002020002), CONST64(0x0000000202020002), - CONST64(0x0000020002020000), CONST64(0x0000020202020000), CONST64(0x0000020002020002), CONST64(0x0000020202020002), - CONST64(0x0000000002020200), CONST64(0x0000000202020200), CONST64(0x0000000002020202), CONST64(0x0000000202020202), - CONST64(0x0000020002020200), CONST64(0x0000020202020200), CONST64(0x0000020002020202), CONST64(0x0000020202020202), - CONST64(0x0002000002020000), CONST64(0x0002000202020000), CONST64(0x0002000002020002), CONST64(0x0002000202020002), - CONST64(0x0002020002020000), CONST64(0x0002020202020000), CONST64(0x0002020002020002), CONST64(0x0002020202020002), - CONST64(0x0002000002020200), CONST64(0x0002000202020200), CONST64(0x0002000002020202), CONST64(0x0002000202020202), - CONST64(0x0002020002020200), CONST64(0x0002020202020200), CONST64(0x0002020002020202), CONST64(0x0002020202020202), - CONST64(0x0200000002000000), CONST64(0x0200000202000000), CONST64(0x0200000002000002), CONST64(0x0200000202000002), - CONST64(0x0200020002000000), CONST64(0x0200020202000000), CONST64(0x0200020002000002), CONST64(0x0200020202000002), - CONST64(0x0200000002000200), CONST64(0x0200000202000200), CONST64(0x0200000002000202), CONST64(0x0200000202000202), - CONST64(0x0200020002000200), CONST64(0x0200020202000200), CONST64(0x0200020002000202), CONST64(0x0200020202000202), - CONST64(0x0202000002000000), CONST64(0x0202000202000000), CONST64(0x0202000002000002), CONST64(0x0202000202000002), - CONST64(0x0202020002000000), CONST64(0x0202020202000000), CONST64(0x0202020002000002), CONST64(0x0202020202000002), - CONST64(0x0202000002000200), CONST64(0x0202000202000200), CONST64(0x0202000002000202), CONST64(0x0202000202000202), - CONST64(0x0202020002000200), CONST64(0x0202020202000200), CONST64(0x0202020002000202), CONST64(0x0202020202000202), - CONST64(0x0200000002020000), CONST64(0x0200000202020000), CONST64(0x0200000002020002), CONST64(0x0200000202020002), - CONST64(0x0200020002020000), CONST64(0x0200020202020000), CONST64(0x0200020002020002), CONST64(0x0200020202020002), - CONST64(0x0200000002020200), CONST64(0x0200000202020200), CONST64(0x0200000002020202), CONST64(0x0200000202020202), - CONST64(0x0200020002020200), CONST64(0x0200020202020200), CONST64(0x0200020002020202), CONST64(0x0200020202020202), - CONST64(0x0202000002020000), CONST64(0x0202000202020000), CONST64(0x0202000002020002), CONST64(0x0202000202020002), - CONST64(0x0202020002020000), CONST64(0x0202020202020000), CONST64(0x0202020002020002), CONST64(0x0202020202020002), - CONST64(0x0202000002020200), CONST64(0x0202000202020200), CONST64(0x0202000002020202), CONST64(0x0202000202020202), - CONST64(0x0202020002020200), CONST64(0x0202020202020200), CONST64(0x0202020002020202), CONST64(0x0202020202020202) - }, -{ CONST64(0x0000000000000000), CONST64(0x0000010000000000), CONST64(0x0000000000000100), CONST64(0x0000010000000100), - CONST64(0x0001000000000000), CONST64(0x0001010000000000), CONST64(0x0001000000000100), CONST64(0x0001010000000100), - CONST64(0x0000000000010000), CONST64(0x0000010000010000), CONST64(0x0000000000010100), CONST64(0x0000010000010100), - CONST64(0x0001000000010000), CONST64(0x0001010000010000), CONST64(0x0001000000010100), CONST64(0x0001010000010100), - CONST64(0x0100000000000000), CONST64(0x0100010000000000), CONST64(0x0100000000000100), CONST64(0x0100010000000100), - CONST64(0x0101000000000000), CONST64(0x0101010000000000), CONST64(0x0101000000000100), CONST64(0x0101010000000100), - CONST64(0x0100000000010000), CONST64(0x0100010000010000), CONST64(0x0100000000010100), CONST64(0x0100010000010100), - CONST64(0x0101000000010000), CONST64(0x0101010000010000), CONST64(0x0101000000010100), CONST64(0x0101010000010100), - CONST64(0x0000000001000000), CONST64(0x0000010001000000), CONST64(0x0000000001000100), CONST64(0x0000010001000100), - CONST64(0x0001000001000000), CONST64(0x0001010001000000), CONST64(0x0001000001000100), CONST64(0x0001010001000100), - CONST64(0x0000000001010000), CONST64(0x0000010001010000), CONST64(0x0000000001010100), CONST64(0x0000010001010100), - CONST64(0x0001000001010000), CONST64(0x0001010001010000), CONST64(0x0001000001010100), CONST64(0x0001010001010100), - CONST64(0x0100000001000000), CONST64(0x0100010001000000), CONST64(0x0100000001000100), CONST64(0x0100010001000100), - CONST64(0x0101000001000000), CONST64(0x0101010001000000), CONST64(0x0101000001000100), CONST64(0x0101010001000100), - CONST64(0x0100000001010000), CONST64(0x0100010001010000), CONST64(0x0100000001010100), CONST64(0x0100010001010100), - CONST64(0x0101000001010000), CONST64(0x0101010001010000), CONST64(0x0101000001010100), CONST64(0x0101010001010100), - CONST64(0x0000000100000000), CONST64(0x0000010100000000), CONST64(0x0000000100000100), CONST64(0x0000010100000100), - CONST64(0x0001000100000000), CONST64(0x0001010100000000), CONST64(0x0001000100000100), CONST64(0x0001010100000100), - CONST64(0x0000000100010000), CONST64(0x0000010100010000), CONST64(0x0000000100010100), CONST64(0x0000010100010100), - CONST64(0x0001000100010000), CONST64(0x0001010100010000), CONST64(0x0001000100010100), CONST64(0x0001010100010100), - CONST64(0x0100000100000000), CONST64(0x0100010100000000), CONST64(0x0100000100000100), CONST64(0x0100010100000100), - CONST64(0x0101000100000000), CONST64(0x0101010100000000), CONST64(0x0101000100000100), CONST64(0x0101010100000100), - CONST64(0x0100000100010000), CONST64(0x0100010100010000), CONST64(0x0100000100010100), CONST64(0x0100010100010100), - CONST64(0x0101000100010000), CONST64(0x0101010100010000), CONST64(0x0101000100010100), CONST64(0x0101010100010100), - CONST64(0x0000000101000000), CONST64(0x0000010101000000), CONST64(0x0000000101000100), CONST64(0x0000010101000100), - CONST64(0x0001000101000000), CONST64(0x0001010101000000), CONST64(0x0001000101000100), CONST64(0x0001010101000100), - CONST64(0x0000000101010000), CONST64(0x0000010101010000), CONST64(0x0000000101010100), CONST64(0x0000010101010100), - CONST64(0x0001000101010000), CONST64(0x0001010101010000), CONST64(0x0001000101010100), CONST64(0x0001010101010100), - CONST64(0x0100000101000000), CONST64(0x0100010101000000), CONST64(0x0100000101000100), CONST64(0x0100010101000100), - CONST64(0x0101000101000000), CONST64(0x0101010101000000), CONST64(0x0101000101000100), CONST64(0x0101010101000100), - CONST64(0x0100000101010000), CONST64(0x0100010101010000), CONST64(0x0100000101010100), CONST64(0x0100010101010100), - CONST64(0x0101000101010000), CONST64(0x0101010101010000), CONST64(0x0101000101010100), CONST64(0x0101010101010100), - CONST64(0x0000000000000001), CONST64(0x0000010000000001), CONST64(0x0000000000000101), CONST64(0x0000010000000101), - CONST64(0x0001000000000001), CONST64(0x0001010000000001), CONST64(0x0001000000000101), CONST64(0x0001010000000101), - CONST64(0x0000000000010001), CONST64(0x0000010000010001), CONST64(0x0000000000010101), CONST64(0x0000010000010101), - CONST64(0x0001000000010001), CONST64(0x0001010000010001), CONST64(0x0001000000010101), CONST64(0x0001010000010101), - CONST64(0x0100000000000001), CONST64(0x0100010000000001), CONST64(0x0100000000000101), CONST64(0x0100010000000101), - CONST64(0x0101000000000001), CONST64(0x0101010000000001), CONST64(0x0101000000000101), CONST64(0x0101010000000101), - CONST64(0x0100000000010001), CONST64(0x0100010000010001), CONST64(0x0100000000010101), CONST64(0x0100010000010101), - CONST64(0x0101000000010001), CONST64(0x0101010000010001), CONST64(0x0101000000010101), CONST64(0x0101010000010101), - CONST64(0x0000000001000001), CONST64(0x0000010001000001), CONST64(0x0000000001000101), CONST64(0x0000010001000101), - CONST64(0x0001000001000001), CONST64(0x0001010001000001), CONST64(0x0001000001000101), CONST64(0x0001010001000101), - CONST64(0x0000000001010001), CONST64(0x0000010001010001), CONST64(0x0000000001010101), CONST64(0x0000010001010101), - CONST64(0x0001000001010001), CONST64(0x0001010001010001), CONST64(0x0001000001010101), CONST64(0x0001010001010101), - CONST64(0x0100000001000001), CONST64(0x0100010001000001), CONST64(0x0100000001000101), CONST64(0x0100010001000101), - CONST64(0x0101000001000001), CONST64(0x0101010001000001), CONST64(0x0101000001000101), CONST64(0x0101010001000101), - CONST64(0x0100000001010001), CONST64(0x0100010001010001), CONST64(0x0100000001010101), CONST64(0x0100010001010101), - CONST64(0x0101000001010001), CONST64(0x0101010001010001), CONST64(0x0101000001010101), CONST64(0x0101010001010101), - CONST64(0x0000000100000001), CONST64(0x0000010100000001), CONST64(0x0000000100000101), CONST64(0x0000010100000101), - CONST64(0x0001000100000001), CONST64(0x0001010100000001), CONST64(0x0001000100000101), CONST64(0x0001010100000101), - CONST64(0x0000000100010001), CONST64(0x0000010100010001), CONST64(0x0000000100010101), CONST64(0x0000010100010101), - CONST64(0x0001000100010001), CONST64(0x0001010100010001), CONST64(0x0001000100010101), CONST64(0x0001010100010101), - CONST64(0x0100000100000001), CONST64(0x0100010100000001), CONST64(0x0100000100000101), CONST64(0x0100010100000101), - CONST64(0x0101000100000001), CONST64(0x0101010100000001), CONST64(0x0101000100000101), CONST64(0x0101010100000101), - CONST64(0x0100000100010001), CONST64(0x0100010100010001), CONST64(0x0100000100010101), CONST64(0x0100010100010101), - CONST64(0x0101000100010001), CONST64(0x0101010100010001), CONST64(0x0101000100010101), CONST64(0x0101010100010101), - CONST64(0x0000000101000001), CONST64(0x0000010101000001), CONST64(0x0000000101000101), CONST64(0x0000010101000101), - CONST64(0x0001000101000001), CONST64(0x0001010101000001), CONST64(0x0001000101000101), CONST64(0x0001010101000101), - CONST64(0x0000000101010001), CONST64(0x0000010101010001), CONST64(0x0000000101010101), CONST64(0x0000010101010101), - CONST64(0x0001000101010001), CONST64(0x0001010101010001), CONST64(0x0001000101010101), CONST64(0x0001010101010101), - CONST64(0x0100000101000001), CONST64(0x0100010101000001), CONST64(0x0100000101000101), CONST64(0x0100010101000101), - CONST64(0x0101000101000001), CONST64(0x0101010101000001), CONST64(0x0101000101000101), CONST64(0x0101010101000101), - CONST64(0x0100000101010001), CONST64(0x0100010101010001), CONST64(0x0100000101010101), CONST64(0x0100010101010101), - CONST64(0x0101000101010001), CONST64(0x0101010101010001), CONST64(0x0101000101010101), CONST64(0x0101010101010101) - }, -{ CONST64(0x0000000000000000), CONST64(0x0000008000000000), CONST64(0x0000000000000080), CONST64(0x0000008000000080), - CONST64(0x0000800000000000), CONST64(0x0000808000000000), CONST64(0x0000800000000080), CONST64(0x0000808000000080), - CONST64(0x0000000000008000), CONST64(0x0000008000008000), CONST64(0x0000000000008080), CONST64(0x0000008000008080), - CONST64(0x0000800000008000), CONST64(0x0000808000008000), CONST64(0x0000800000008080), CONST64(0x0000808000008080), - CONST64(0x0080000000000000), CONST64(0x0080008000000000), CONST64(0x0080000000000080), CONST64(0x0080008000000080), - CONST64(0x0080800000000000), CONST64(0x0080808000000000), CONST64(0x0080800000000080), CONST64(0x0080808000000080), - CONST64(0x0080000000008000), CONST64(0x0080008000008000), CONST64(0x0080000000008080), CONST64(0x0080008000008080), - CONST64(0x0080800000008000), CONST64(0x0080808000008000), CONST64(0x0080800000008080), CONST64(0x0080808000008080), - CONST64(0x0000000000800000), CONST64(0x0000008000800000), CONST64(0x0000000000800080), CONST64(0x0000008000800080), - CONST64(0x0000800000800000), CONST64(0x0000808000800000), CONST64(0x0000800000800080), CONST64(0x0000808000800080), - CONST64(0x0000000000808000), CONST64(0x0000008000808000), CONST64(0x0000000000808080), CONST64(0x0000008000808080), - CONST64(0x0000800000808000), CONST64(0x0000808000808000), CONST64(0x0000800000808080), CONST64(0x0000808000808080), - CONST64(0x0080000000800000), CONST64(0x0080008000800000), CONST64(0x0080000000800080), CONST64(0x0080008000800080), - CONST64(0x0080800000800000), CONST64(0x0080808000800000), CONST64(0x0080800000800080), CONST64(0x0080808000800080), - CONST64(0x0080000000808000), CONST64(0x0080008000808000), CONST64(0x0080000000808080), CONST64(0x0080008000808080), - CONST64(0x0080800000808000), CONST64(0x0080808000808000), CONST64(0x0080800000808080), CONST64(0x0080808000808080), - CONST64(0x8000000000000000), CONST64(0x8000008000000000), CONST64(0x8000000000000080), CONST64(0x8000008000000080), - CONST64(0x8000800000000000), CONST64(0x8000808000000000), CONST64(0x8000800000000080), CONST64(0x8000808000000080), - CONST64(0x8000000000008000), CONST64(0x8000008000008000), CONST64(0x8000000000008080), CONST64(0x8000008000008080), - CONST64(0x8000800000008000), CONST64(0x8000808000008000), CONST64(0x8000800000008080), CONST64(0x8000808000008080), - CONST64(0x8080000000000000), CONST64(0x8080008000000000), CONST64(0x8080000000000080), CONST64(0x8080008000000080), - CONST64(0x8080800000000000), CONST64(0x8080808000000000), CONST64(0x8080800000000080), CONST64(0x8080808000000080), - CONST64(0x8080000000008000), CONST64(0x8080008000008000), CONST64(0x8080000000008080), CONST64(0x8080008000008080), - CONST64(0x8080800000008000), CONST64(0x8080808000008000), CONST64(0x8080800000008080), CONST64(0x8080808000008080), - CONST64(0x8000000000800000), CONST64(0x8000008000800000), CONST64(0x8000000000800080), CONST64(0x8000008000800080), - CONST64(0x8000800000800000), CONST64(0x8000808000800000), CONST64(0x8000800000800080), CONST64(0x8000808000800080), - CONST64(0x8000000000808000), CONST64(0x8000008000808000), CONST64(0x8000000000808080), CONST64(0x8000008000808080), - CONST64(0x8000800000808000), CONST64(0x8000808000808000), CONST64(0x8000800000808080), CONST64(0x8000808000808080), - CONST64(0x8080000000800000), CONST64(0x8080008000800000), CONST64(0x8080000000800080), CONST64(0x8080008000800080), - CONST64(0x8080800000800000), CONST64(0x8080808000800000), CONST64(0x8080800000800080), CONST64(0x8080808000800080), - CONST64(0x8080000000808000), CONST64(0x8080008000808000), CONST64(0x8080000000808080), CONST64(0x8080008000808080), - CONST64(0x8080800000808000), CONST64(0x8080808000808000), CONST64(0x8080800000808080), CONST64(0x8080808000808080), - CONST64(0x0000000080000000), CONST64(0x0000008080000000), CONST64(0x0000000080000080), CONST64(0x0000008080000080), - CONST64(0x0000800080000000), CONST64(0x0000808080000000), CONST64(0x0000800080000080), CONST64(0x0000808080000080), - CONST64(0x0000000080008000), CONST64(0x0000008080008000), CONST64(0x0000000080008080), CONST64(0x0000008080008080), - CONST64(0x0000800080008000), CONST64(0x0000808080008000), CONST64(0x0000800080008080), CONST64(0x0000808080008080), - CONST64(0x0080000080000000), CONST64(0x0080008080000000), CONST64(0x0080000080000080), CONST64(0x0080008080000080), - CONST64(0x0080800080000000), CONST64(0x0080808080000000), CONST64(0x0080800080000080), CONST64(0x0080808080000080), - CONST64(0x0080000080008000), CONST64(0x0080008080008000), CONST64(0x0080000080008080), CONST64(0x0080008080008080), - CONST64(0x0080800080008000), CONST64(0x0080808080008000), CONST64(0x0080800080008080), CONST64(0x0080808080008080), - CONST64(0x0000000080800000), CONST64(0x0000008080800000), CONST64(0x0000000080800080), CONST64(0x0000008080800080), - CONST64(0x0000800080800000), CONST64(0x0000808080800000), CONST64(0x0000800080800080), CONST64(0x0000808080800080), - CONST64(0x0000000080808000), CONST64(0x0000008080808000), CONST64(0x0000000080808080), CONST64(0x0000008080808080), - CONST64(0x0000800080808000), CONST64(0x0000808080808000), CONST64(0x0000800080808080), CONST64(0x0000808080808080), - CONST64(0x0080000080800000), CONST64(0x0080008080800000), CONST64(0x0080000080800080), CONST64(0x0080008080800080), - CONST64(0x0080800080800000), CONST64(0x0080808080800000), CONST64(0x0080800080800080), CONST64(0x0080808080800080), - CONST64(0x0080000080808000), CONST64(0x0080008080808000), CONST64(0x0080000080808080), CONST64(0x0080008080808080), - CONST64(0x0080800080808000), CONST64(0x0080808080808000), CONST64(0x0080800080808080), CONST64(0x0080808080808080), - CONST64(0x8000000080000000), CONST64(0x8000008080000000), CONST64(0x8000000080000080), CONST64(0x8000008080000080), - CONST64(0x8000800080000000), CONST64(0x8000808080000000), CONST64(0x8000800080000080), CONST64(0x8000808080000080), - CONST64(0x8000000080008000), CONST64(0x8000008080008000), CONST64(0x8000000080008080), CONST64(0x8000008080008080), - CONST64(0x8000800080008000), CONST64(0x8000808080008000), CONST64(0x8000800080008080), CONST64(0x8000808080008080), - CONST64(0x8080000080000000), CONST64(0x8080008080000000), CONST64(0x8080000080000080), CONST64(0x8080008080000080), - CONST64(0x8080800080000000), CONST64(0x8080808080000000), CONST64(0x8080800080000080), CONST64(0x8080808080000080), - CONST64(0x8080000080008000), CONST64(0x8080008080008000), CONST64(0x8080000080008080), CONST64(0x8080008080008080), - CONST64(0x8080800080008000), CONST64(0x8080808080008000), CONST64(0x8080800080008080), CONST64(0x8080808080008080), - CONST64(0x8000000080800000), CONST64(0x8000008080800000), CONST64(0x8000000080800080), CONST64(0x8000008080800080), - CONST64(0x8000800080800000), CONST64(0x8000808080800000), CONST64(0x8000800080800080), CONST64(0x8000808080800080), - CONST64(0x8000000080808000), CONST64(0x8000008080808000), CONST64(0x8000000080808080), CONST64(0x8000008080808080), - CONST64(0x8000800080808000), CONST64(0x8000808080808000), CONST64(0x8000800080808080), CONST64(0x8000808080808080), - CONST64(0x8080000080800000), CONST64(0x8080008080800000), CONST64(0x8080000080800080), CONST64(0x8080008080800080), - CONST64(0x8080800080800000), CONST64(0x8080808080800000), CONST64(0x8080800080800080), CONST64(0x8080808080800080), - CONST64(0x8080000080808000), CONST64(0x8080008080808000), CONST64(0x8080000080808080), CONST64(0x8080008080808080), - CONST64(0x8080800080808000), CONST64(0x8080808080808000), CONST64(0x8080800080808080), CONST64(0x8080808080808080) - }, -{ CONST64(0x0000000000000000), CONST64(0x0000004000000000), CONST64(0x0000000000000040), CONST64(0x0000004000000040), - CONST64(0x0000400000000000), CONST64(0x0000404000000000), CONST64(0x0000400000000040), CONST64(0x0000404000000040), - CONST64(0x0000000000004000), CONST64(0x0000004000004000), CONST64(0x0000000000004040), CONST64(0x0000004000004040), - CONST64(0x0000400000004000), CONST64(0x0000404000004000), CONST64(0x0000400000004040), CONST64(0x0000404000004040), - CONST64(0x0040000000000000), CONST64(0x0040004000000000), CONST64(0x0040000000000040), CONST64(0x0040004000000040), - CONST64(0x0040400000000000), CONST64(0x0040404000000000), CONST64(0x0040400000000040), CONST64(0x0040404000000040), - CONST64(0x0040000000004000), CONST64(0x0040004000004000), CONST64(0x0040000000004040), CONST64(0x0040004000004040), - CONST64(0x0040400000004000), CONST64(0x0040404000004000), CONST64(0x0040400000004040), CONST64(0x0040404000004040), - CONST64(0x0000000000400000), CONST64(0x0000004000400000), CONST64(0x0000000000400040), CONST64(0x0000004000400040), - CONST64(0x0000400000400000), CONST64(0x0000404000400000), CONST64(0x0000400000400040), CONST64(0x0000404000400040), - CONST64(0x0000000000404000), CONST64(0x0000004000404000), CONST64(0x0000000000404040), CONST64(0x0000004000404040), - CONST64(0x0000400000404000), CONST64(0x0000404000404000), CONST64(0x0000400000404040), CONST64(0x0000404000404040), - CONST64(0x0040000000400000), CONST64(0x0040004000400000), CONST64(0x0040000000400040), CONST64(0x0040004000400040), - CONST64(0x0040400000400000), CONST64(0x0040404000400000), CONST64(0x0040400000400040), CONST64(0x0040404000400040), - CONST64(0x0040000000404000), CONST64(0x0040004000404000), CONST64(0x0040000000404040), CONST64(0x0040004000404040), - CONST64(0x0040400000404000), CONST64(0x0040404000404000), CONST64(0x0040400000404040), CONST64(0x0040404000404040), - CONST64(0x4000000000000000), CONST64(0x4000004000000000), CONST64(0x4000000000000040), CONST64(0x4000004000000040), - CONST64(0x4000400000000000), CONST64(0x4000404000000000), CONST64(0x4000400000000040), CONST64(0x4000404000000040), - CONST64(0x4000000000004000), CONST64(0x4000004000004000), CONST64(0x4000000000004040), CONST64(0x4000004000004040), - CONST64(0x4000400000004000), CONST64(0x4000404000004000), CONST64(0x4000400000004040), CONST64(0x4000404000004040), - CONST64(0x4040000000000000), CONST64(0x4040004000000000), CONST64(0x4040000000000040), CONST64(0x4040004000000040), - CONST64(0x4040400000000000), CONST64(0x4040404000000000), CONST64(0x4040400000000040), CONST64(0x4040404000000040), - CONST64(0x4040000000004000), CONST64(0x4040004000004000), CONST64(0x4040000000004040), CONST64(0x4040004000004040), - CONST64(0x4040400000004000), CONST64(0x4040404000004000), CONST64(0x4040400000004040), CONST64(0x4040404000004040), - CONST64(0x4000000000400000), CONST64(0x4000004000400000), CONST64(0x4000000000400040), CONST64(0x4000004000400040), - CONST64(0x4000400000400000), CONST64(0x4000404000400000), CONST64(0x4000400000400040), CONST64(0x4000404000400040), - CONST64(0x4000000000404000), CONST64(0x4000004000404000), CONST64(0x4000000000404040), CONST64(0x4000004000404040), - CONST64(0x4000400000404000), CONST64(0x4000404000404000), CONST64(0x4000400000404040), CONST64(0x4000404000404040), - CONST64(0x4040000000400000), CONST64(0x4040004000400000), CONST64(0x4040000000400040), CONST64(0x4040004000400040), - CONST64(0x4040400000400000), CONST64(0x4040404000400000), CONST64(0x4040400000400040), CONST64(0x4040404000400040), - CONST64(0x4040000000404000), CONST64(0x4040004000404000), CONST64(0x4040000000404040), CONST64(0x4040004000404040), - CONST64(0x4040400000404000), CONST64(0x4040404000404000), CONST64(0x4040400000404040), CONST64(0x4040404000404040), - CONST64(0x0000000040000000), CONST64(0x0000004040000000), CONST64(0x0000000040000040), CONST64(0x0000004040000040), - CONST64(0x0000400040000000), CONST64(0x0000404040000000), CONST64(0x0000400040000040), CONST64(0x0000404040000040), - CONST64(0x0000000040004000), CONST64(0x0000004040004000), CONST64(0x0000000040004040), CONST64(0x0000004040004040), - CONST64(0x0000400040004000), CONST64(0x0000404040004000), CONST64(0x0000400040004040), CONST64(0x0000404040004040), - CONST64(0x0040000040000000), CONST64(0x0040004040000000), CONST64(0x0040000040000040), CONST64(0x0040004040000040), - CONST64(0x0040400040000000), CONST64(0x0040404040000000), CONST64(0x0040400040000040), CONST64(0x0040404040000040), - CONST64(0x0040000040004000), CONST64(0x0040004040004000), CONST64(0x0040000040004040), CONST64(0x0040004040004040), - CONST64(0x0040400040004000), CONST64(0x0040404040004000), CONST64(0x0040400040004040), CONST64(0x0040404040004040), - CONST64(0x0000000040400000), CONST64(0x0000004040400000), CONST64(0x0000000040400040), CONST64(0x0000004040400040), - CONST64(0x0000400040400000), CONST64(0x0000404040400000), CONST64(0x0000400040400040), CONST64(0x0000404040400040), - CONST64(0x0000000040404000), CONST64(0x0000004040404000), CONST64(0x0000000040404040), CONST64(0x0000004040404040), - CONST64(0x0000400040404000), CONST64(0x0000404040404000), CONST64(0x0000400040404040), CONST64(0x0000404040404040), - CONST64(0x0040000040400000), CONST64(0x0040004040400000), CONST64(0x0040000040400040), CONST64(0x0040004040400040), - CONST64(0x0040400040400000), CONST64(0x0040404040400000), CONST64(0x0040400040400040), CONST64(0x0040404040400040), - CONST64(0x0040000040404000), CONST64(0x0040004040404000), CONST64(0x0040000040404040), CONST64(0x0040004040404040), - CONST64(0x0040400040404000), CONST64(0x0040404040404000), CONST64(0x0040400040404040), CONST64(0x0040404040404040), - CONST64(0x4000000040000000), CONST64(0x4000004040000000), CONST64(0x4000000040000040), CONST64(0x4000004040000040), - CONST64(0x4000400040000000), CONST64(0x4000404040000000), CONST64(0x4000400040000040), CONST64(0x4000404040000040), - CONST64(0x4000000040004000), CONST64(0x4000004040004000), CONST64(0x4000000040004040), CONST64(0x4000004040004040), - CONST64(0x4000400040004000), CONST64(0x4000404040004000), CONST64(0x4000400040004040), CONST64(0x4000404040004040), - CONST64(0x4040000040000000), CONST64(0x4040004040000000), CONST64(0x4040000040000040), CONST64(0x4040004040000040), - CONST64(0x4040400040000000), CONST64(0x4040404040000000), CONST64(0x4040400040000040), CONST64(0x4040404040000040), - CONST64(0x4040000040004000), CONST64(0x4040004040004000), CONST64(0x4040000040004040), CONST64(0x4040004040004040), - CONST64(0x4040400040004000), CONST64(0x4040404040004000), CONST64(0x4040400040004040), CONST64(0x4040404040004040), - CONST64(0x4000000040400000), CONST64(0x4000004040400000), CONST64(0x4000000040400040), CONST64(0x4000004040400040), - CONST64(0x4000400040400000), CONST64(0x4000404040400000), CONST64(0x4000400040400040), CONST64(0x4000404040400040), - CONST64(0x4000000040404000), CONST64(0x4000004040404000), CONST64(0x4000000040404040), CONST64(0x4000004040404040), - CONST64(0x4000400040404000), CONST64(0x4000404040404000), CONST64(0x4000400040404040), CONST64(0x4000404040404040), - CONST64(0x4040000040400000), CONST64(0x4040004040400000), CONST64(0x4040000040400040), CONST64(0x4040004040400040), - CONST64(0x4040400040400000), CONST64(0x4040404040400000), CONST64(0x4040400040400040), CONST64(0x4040404040400040), - CONST64(0x4040000040404000), CONST64(0x4040004040404000), CONST64(0x4040000040404040), CONST64(0x4040004040404040), - CONST64(0x4040400040404000), CONST64(0x4040404040404000), CONST64(0x4040400040404040), CONST64(0x4040404040404040) - }, -{ CONST64(0x0000000000000000), CONST64(0x0000002000000000), CONST64(0x0000000000000020), CONST64(0x0000002000000020), - CONST64(0x0000200000000000), CONST64(0x0000202000000000), CONST64(0x0000200000000020), CONST64(0x0000202000000020), - CONST64(0x0000000000002000), CONST64(0x0000002000002000), CONST64(0x0000000000002020), CONST64(0x0000002000002020), - CONST64(0x0000200000002000), CONST64(0x0000202000002000), CONST64(0x0000200000002020), CONST64(0x0000202000002020), - CONST64(0x0020000000000000), CONST64(0x0020002000000000), CONST64(0x0020000000000020), CONST64(0x0020002000000020), - CONST64(0x0020200000000000), CONST64(0x0020202000000000), CONST64(0x0020200000000020), CONST64(0x0020202000000020), - CONST64(0x0020000000002000), CONST64(0x0020002000002000), CONST64(0x0020000000002020), CONST64(0x0020002000002020), - CONST64(0x0020200000002000), CONST64(0x0020202000002000), CONST64(0x0020200000002020), CONST64(0x0020202000002020), - CONST64(0x0000000000200000), CONST64(0x0000002000200000), CONST64(0x0000000000200020), CONST64(0x0000002000200020), - CONST64(0x0000200000200000), CONST64(0x0000202000200000), CONST64(0x0000200000200020), CONST64(0x0000202000200020), - CONST64(0x0000000000202000), CONST64(0x0000002000202000), CONST64(0x0000000000202020), CONST64(0x0000002000202020), - CONST64(0x0000200000202000), CONST64(0x0000202000202000), CONST64(0x0000200000202020), CONST64(0x0000202000202020), - CONST64(0x0020000000200000), CONST64(0x0020002000200000), CONST64(0x0020000000200020), CONST64(0x0020002000200020), - CONST64(0x0020200000200000), CONST64(0x0020202000200000), CONST64(0x0020200000200020), CONST64(0x0020202000200020), - CONST64(0x0020000000202000), CONST64(0x0020002000202000), CONST64(0x0020000000202020), CONST64(0x0020002000202020), - CONST64(0x0020200000202000), CONST64(0x0020202000202000), CONST64(0x0020200000202020), CONST64(0x0020202000202020), - CONST64(0x2000000000000000), CONST64(0x2000002000000000), CONST64(0x2000000000000020), CONST64(0x2000002000000020), - CONST64(0x2000200000000000), CONST64(0x2000202000000000), CONST64(0x2000200000000020), CONST64(0x2000202000000020), - CONST64(0x2000000000002000), CONST64(0x2000002000002000), CONST64(0x2000000000002020), CONST64(0x2000002000002020), - CONST64(0x2000200000002000), CONST64(0x2000202000002000), CONST64(0x2000200000002020), CONST64(0x2000202000002020), - CONST64(0x2020000000000000), CONST64(0x2020002000000000), CONST64(0x2020000000000020), CONST64(0x2020002000000020), - CONST64(0x2020200000000000), CONST64(0x2020202000000000), CONST64(0x2020200000000020), CONST64(0x2020202000000020), - CONST64(0x2020000000002000), CONST64(0x2020002000002000), CONST64(0x2020000000002020), CONST64(0x2020002000002020), - CONST64(0x2020200000002000), CONST64(0x2020202000002000), CONST64(0x2020200000002020), CONST64(0x2020202000002020), - CONST64(0x2000000000200000), CONST64(0x2000002000200000), CONST64(0x2000000000200020), CONST64(0x2000002000200020), - CONST64(0x2000200000200000), CONST64(0x2000202000200000), CONST64(0x2000200000200020), CONST64(0x2000202000200020), - CONST64(0x2000000000202000), CONST64(0x2000002000202000), CONST64(0x2000000000202020), CONST64(0x2000002000202020), - CONST64(0x2000200000202000), CONST64(0x2000202000202000), CONST64(0x2000200000202020), CONST64(0x2000202000202020), - CONST64(0x2020000000200000), CONST64(0x2020002000200000), CONST64(0x2020000000200020), CONST64(0x2020002000200020), - CONST64(0x2020200000200000), CONST64(0x2020202000200000), CONST64(0x2020200000200020), CONST64(0x2020202000200020), - CONST64(0x2020000000202000), CONST64(0x2020002000202000), CONST64(0x2020000000202020), CONST64(0x2020002000202020), - CONST64(0x2020200000202000), CONST64(0x2020202000202000), CONST64(0x2020200000202020), CONST64(0x2020202000202020), - CONST64(0x0000000020000000), CONST64(0x0000002020000000), CONST64(0x0000000020000020), CONST64(0x0000002020000020), - CONST64(0x0000200020000000), CONST64(0x0000202020000000), CONST64(0x0000200020000020), CONST64(0x0000202020000020), - CONST64(0x0000000020002000), CONST64(0x0000002020002000), CONST64(0x0000000020002020), CONST64(0x0000002020002020), - CONST64(0x0000200020002000), CONST64(0x0000202020002000), CONST64(0x0000200020002020), CONST64(0x0000202020002020), - CONST64(0x0020000020000000), CONST64(0x0020002020000000), CONST64(0x0020000020000020), CONST64(0x0020002020000020), - CONST64(0x0020200020000000), CONST64(0x0020202020000000), CONST64(0x0020200020000020), CONST64(0x0020202020000020), - CONST64(0x0020000020002000), CONST64(0x0020002020002000), CONST64(0x0020000020002020), CONST64(0x0020002020002020), - CONST64(0x0020200020002000), CONST64(0x0020202020002000), CONST64(0x0020200020002020), CONST64(0x0020202020002020), - CONST64(0x0000000020200000), CONST64(0x0000002020200000), CONST64(0x0000000020200020), CONST64(0x0000002020200020), - CONST64(0x0000200020200000), CONST64(0x0000202020200000), CONST64(0x0000200020200020), CONST64(0x0000202020200020), - CONST64(0x0000000020202000), CONST64(0x0000002020202000), CONST64(0x0000000020202020), CONST64(0x0000002020202020), - CONST64(0x0000200020202000), CONST64(0x0000202020202000), CONST64(0x0000200020202020), CONST64(0x0000202020202020), - CONST64(0x0020000020200000), CONST64(0x0020002020200000), CONST64(0x0020000020200020), CONST64(0x0020002020200020), - CONST64(0x0020200020200000), CONST64(0x0020202020200000), CONST64(0x0020200020200020), CONST64(0x0020202020200020), - CONST64(0x0020000020202000), CONST64(0x0020002020202000), CONST64(0x0020000020202020), CONST64(0x0020002020202020), - CONST64(0x0020200020202000), CONST64(0x0020202020202000), CONST64(0x0020200020202020), CONST64(0x0020202020202020), - CONST64(0x2000000020000000), CONST64(0x2000002020000000), CONST64(0x2000000020000020), CONST64(0x2000002020000020), - CONST64(0x2000200020000000), CONST64(0x2000202020000000), CONST64(0x2000200020000020), CONST64(0x2000202020000020), - CONST64(0x2000000020002000), CONST64(0x2000002020002000), CONST64(0x2000000020002020), CONST64(0x2000002020002020), - CONST64(0x2000200020002000), CONST64(0x2000202020002000), CONST64(0x2000200020002020), CONST64(0x2000202020002020), - CONST64(0x2020000020000000), CONST64(0x2020002020000000), CONST64(0x2020000020000020), CONST64(0x2020002020000020), - CONST64(0x2020200020000000), CONST64(0x2020202020000000), CONST64(0x2020200020000020), CONST64(0x2020202020000020), - CONST64(0x2020000020002000), CONST64(0x2020002020002000), CONST64(0x2020000020002020), CONST64(0x2020002020002020), - CONST64(0x2020200020002000), CONST64(0x2020202020002000), CONST64(0x2020200020002020), CONST64(0x2020202020002020), - CONST64(0x2000000020200000), CONST64(0x2000002020200000), CONST64(0x2000000020200020), CONST64(0x2000002020200020), - CONST64(0x2000200020200000), CONST64(0x2000202020200000), CONST64(0x2000200020200020), CONST64(0x2000202020200020), - CONST64(0x2000000020202000), CONST64(0x2000002020202000), CONST64(0x2000000020202020), CONST64(0x2000002020202020), - CONST64(0x2000200020202000), CONST64(0x2000202020202000), CONST64(0x2000200020202020), CONST64(0x2000202020202020), - CONST64(0x2020000020200000), CONST64(0x2020002020200000), CONST64(0x2020000020200020), CONST64(0x2020002020200020), - CONST64(0x2020200020200000), CONST64(0x2020202020200000), CONST64(0x2020200020200020), CONST64(0x2020202020200020), - CONST64(0x2020000020202000), CONST64(0x2020002020202000), CONST64(0x2020000020202020), CONST64(0x2020002020202020), - CONST64(0x2020200020202000), CONST64(0x2020202020202000), CONST64(0x2020200020202020), CONST64(0x2020202020202020) - }}; - -static const ulong64 des_fp[8][256] = { - -{ CONST64(0x0000000000000000), CONST64(0x0000008000000000), CONST64(0x0000000002000000), CONST64(0x0000008002000000), - CONST64(0x0000000000020000), CONST64(0x0000008000020000), CONST64(0x0000000002020000), CONST64(0x0000008002020000), - CONST64(0x0000000000000200), CONST64(0x0000008000000200), CONST64(0x0000000002000200), CONST64(0x0000008002000200), - CONST64(0x0000000000020200), CONST64(0x0000008000020200), CONST64(0x0000000002020200), CONST64(0x0000008002020200), - CONST64(0x0000000000000002), CONST64(0x0000008000000002), CONST64(0x0000000002000002), CONST64(0x0000008002000002), - CONST64(0x0000000000020002), CONST64(0x0000008000020002), CONST64(0x0000000002020002), CONST64(0x0000008002020002), - CONST64(0x0000000000000202), CONST64(0x0000008000000202), CONST64(0x0000000002000202), CONST64(0x0000008002000202), - CONST64(0x0000000000020202), CONST64(0x0000008000020202), CONST64(0x0000000002020202), CONST64(0x0000008002020202), - CONST64(0x0200000000000000), CONST64(0x0200008000000000), CONST64(0x0200000002000000), CONST64(0x0200008002000000), - CONST64(0x0200000000020000), CONST64(0x0200008000020000), CONST64(0x0200000002020000), CONST64(0x0200008002020000), - CONST64(0x0200000000000200), CONST64(0x0200008000000200), CONST64(0x0200000002000200), CONST64(0x0200008002000200), - CONST64(0x0200000000020200), CONST64(0x0200008000020200), CONST64(0x0200000002020200), CONST64(0x0200008002020200), - CONST64(0x0200000000000002), CONST64(0x0200008000000002), CONST64(0x0200000002000002), CONST64(0x0200008002000002), - CONST64(0x0200000000020002), CONST64(0x0200008000020002), CONST64(0x0200000002020002), CONST64(0x0200008002020002), - CONST64(0x0200000000000202), CONST64(0x0200008000000202), CONST64(0x0200000002000202), CONST64(0x0200008002000202), - CONST64(0x0200000000020202), CONST64(0x0200008000020202), CONST64(0x0200000002020202), CONST64(0x0200008002020202), - CONST64(0x0002000000000000), CONST64(0x0002008000000000), CONST64(0x0002000002000000), CONST64(0x0002008002000000), - CONST64(0x0002000000020000), CONST64(0x0002008000020000), CONST64(0x0002000002020000), CONST64(0x0002008002020000), - CONST64(0x0002000000000200), CONST64(0x0002008000000200), CONST64(0x0002000002000200), CONST64(0x0002008002000200), - CONST64(0x0002000000020200), CONST64(0x0002008000020200), CONST64(0x0002000002020200), CONST64(0x0002008002020200), - CONST64(0x0002000000000002), CONST64(0x0002008000000002), CONST64(0x0002000002000002), CONST64(0x0002008002000002), - CONST64(0x0002000000020002), CONST64(0x0002008000020002), CONST64(0x0002000002020002), CONST64(0x0002008002020002), - CONST64(0x0002000000000202), CONST64(0x0002008000000202), CONST64(0x0002000002000202), CONST64(0x0002008002000202), - CONST64(0x0002000000020202), CONST64(0x0002008000020202), CONST64(0x0002000002020202), CONST64(0x0002008002020202), - CONST64(0x0202000000000000), CONST64(0x0202008000000000), CONST64(0x0202000002000000), CONST64(0x0202008002000000), - CONST64(0x0202000000020000), CONST64(0x0202008000020000), CONST64(0x0202000002020000), CONST64(0x0202008002020000), - CONST64(0x0202000000000200), CONST64(0x0202008000000200), CONST64(0x0202000002000200), CONST64(0x0202008002000200), - CONST64(0x0202000000020200), CONST64(0x0202008000020200), CONST64(0x0202000002020200), CONST64(0x0202008002020200), - CONST64(0x0202000000000002), CONST64(0x0202008000000002), CONST64(0x0202000002000002), CONST64(0x0202008002000002), - CONST64(0x0202000000020002), CONST64(0x0202008000020002), CONST64(0x0202000002020002), CONST64(0x0202008002020002), - CONST64(0x0202000000000202), CONST64(0x0202008000000202), CONST64(0x0202000002000202), CONST64(0x0202008002000202), - CONST64(0x0202000000020202), CONST64(0x0202008000020202), CONST64(0x0202000002020202), CONST64(0x0202008002020202), - CONST64(0x0000020000000000), CONST64(0x0000028000000000), CONST64(0x0000020002000000), CONST64(0x0000028002000000), - CONST64(0x0000020000020000), CONST64(0x0000028000020000), CONST64(0x0000020002020000), CONST64(0x0000028002020000), - CONST64(0x0000020000000200), CONST64(0x0000028000000200), CONST64(0x0000020002000200), CONST64(0x0000028002000200), - CONST64(0x0000020000020200), CONST64(0x0000028000020200), CONST64(0x0000020002020200), CONST64(0x0000028002020200), - CONST64(0x0000020000000002), CONST64(0x0000028000000002), CONST64(0x0000020002000002), CONST64(0x0000028002000002), - CONST64(0x0000020000020002), CONST64(0x0000028000020002), CONST64(0x0000020002020002), CONST64(0x0000028002020002), - CONST64(0x0000020000000202), CONST64(0x0000028000000202), CONST64(0x0000020002000202), CONST64(0x0000028002000202), - CONST64(0x0000020000020202), CONST64(0x0000028000020202), CONST64(0x0000020002020202), CONST64(0x0000028002020202), - CONST64(0x0200020000000000), CONST64(0x0200028000000000), CONST64(0x0200020002000000), CONST64(0x0200028002000000), - CONST64(0x0200020000020000), CONST64(0x0200028000020000), CONST64(0x0200020002020000), CONST64(0x0200028002020000), - CONST64(0x0200020000000200), CONST64(0x0200028000000200), CONST64(0x0200020002000200), CONST64(0x0200028002000200), - CONST64(0x0200020000020200), CONST64(0x0200028000020200), CONST64(0x0200020002020200), CONST64(0x0200028002020200), - CONST64(0x0200020000000002), CONST64(0x0200028000000002), CONST64(0x0200020002000002), CONST64(0x0200028002000002), - CONST64(0x0200020000020002), CONST64(0x0200028000020002), CONST64(0x0200020002020002), CONST64(0x0200028002020002), - CONST64(0x0200020000000202), CONST64(0x0200028000000202), CONST64(0x0200020002000202), CONST64(0x0200028002000202), - CONST64(0x0200020000020202), CONST64(0x0200028000020202), CONST64(0x0200020002020202), CONST64(0x0200028002020202), - CONST64(0x0002020000000000), CONST64(0x0002028000000000), CONST64(0x0002020002000000), CONST64(0x0002028002000000), - CONST64(0x0002020000020000), CONST64(0x0002028000020000), CONST64(0x0002020002020000), CONST64(0x0002028002020000), - CONST64(0x0002020000000200), CONST64(0x0002028000000200), CONST64(0x0002020002000200), CONST64(0x0002028002000200), - CONST64(0x0002020000020200), CONST64(0x0002028000020200), CONST64(0x0002020002020200), CONST64(0x0002028002020200), - CONST64(0x0002020000000002), CONST64(0x0002028000000002), CONST64(0x0002020002000002), CONST64(0x0002028002000002), - CONST64(0x0002020000020002), CONST64(0x0002028000020002), CONST64(0x0002020002020002), CONST64(0x0002028002020002), - CONST64(0x0002020000000202), CONST64(0x0002028000000202), CONST64(0x0002020002000202), CONST64(0x0002028002000202), - CONST64(0x0002020000020202), CONST64(0x0002028000020202), CONST64(0x0002020002020202), CONST64(0x0002028002020202), - CONST64(0x0202020000000000), CONST64(0x0202028000000000), CONST64(0x0202020002000000), CONST64(0x0202028002000000), - CONST64(0x0202020000020000), CONST64(0x0202028000020000), CONST64(0x0202020002020000), CONST64(0x0202028002020000), - CONST64(0x0202020000000200), CONST64(0x0202028000000200), CONST64(0x0202020002000200), CONST64(0x0202028002000200), - CONST64(0x0202020000020200), CONST64(0x0202028000020200), CONST64(0x0202020002020200), CONST64(0x0202028002020200), - CONST64(0x0202020000000002), CONST64(0x0202028000000002), CONST64(0x0202020002000002), CONST64(0x0202028002000002), - CONST64(0x0202020000020002), CONST64(0x0202028000020002), CONST64(0x0202020002020002), CONST64(0x0202028002020002), - CONST64(0x0202020000000202), CONST64(0x0202028000000202), CONST64(0x0202020002000202), CONST64(0x0202028002000202), - CONST64(0x0202020000020202), CONST64(0x0202028000020202), CONST64(0x0202020002020202), CONST64(0x0202028002020202) - }, -{ CONST64(0x0000000000000000), CONST64(0x0000000200000000), CONST64(0x0000000008000000), CONST64(0x0000000208000000), - CONST64(0x0000000000080000), CONST64(0x0000000200080000), CONST64(0x0000000008080000), CONST64(0x0000000208080000), - CONST64(0x0000000000000800), CONST64(0x0000000200000800), CONST64(0x0000000008000800), CONST64(0x0000000208000800), - CONST64(0x0000000000080800), CONST64(0x0000000200080800), CONST64(0x0000000008080800), CONST64(0x0000000208080800), - CONST64(0x0000000000000008), CONST64(0x0000000200000008), CONST64(0x0000000008000008), CONST64(0x0000000208000008), - CONST64(0x0000000000080008), CONST64(0x0000000200080008), CONST64(0x0000000008080008), CONST64(0x0000000208080008), - CONST64(0x0000000000000808), CONST64(0x0000000200000808), CONST64(0x0000000008000808), CONST64(0x0000000208000808), - CONST64(0x0000000000080808), CONST64(0x0000000200080808), CONST64(0x0000000008080808), CONST64(0x0000000208080808), - CONST64(0x0800000000000000), CONST64(0x0800000200000000), CONST64(0x0800000008000000), CONST64(0x0800000208000000), - CONST64(0x0800000000080000), CONST64(0x0800000200080000), CONST64(0x0800000008080000), CONST64(0x0800000208080000), - CONST64(0x0800000000000800), CONST64(0x0800000200000800), CONST64(0x0800000008000800), CONST64(0x0800000208000800), - CONST64(0x0800000000080800), CONST64(0x0800000200080800), CONST64(0x0800000008080800), CONST64(0x0800000208080800), - CONST64(0x0800000000000008), CONST64(0x0800000200000008), CONST64(0x0800000008000008), CONST64(0x0800000208000008), - CONST64(0x0800000000080008), CONST64(0x0800000200080008), CONST64(0x0800000008080008), CONST64(0x0800000208080008), - CONST64(0x0800000000000808), CONST64(0x0800000200000808), CONST64(0x0800000008000808), CONST64(0x0800000208000808), - CONST64(0x0800000000080808), CONST64(0x0800000200080808), CONST64(0x0800000008080808), CONST64(0x0800000208080808), - CONST64(0x0008000000000000), CONST64(0x0008000200000000), CONST64(0x0008000008000000), CONST64(0x0008000208000000), - CONST64(0x0008000000080000), CONST64(0x0008000200080000), CONST64(0x0008000008080000), CONST64(0x0008000208080000), - CONST64(0x0008000000000800), CONST64(0x0008000200000800), CONST64(0x0008000008000800), CONST64(0x0008000208000800), - CONST64(0x0008000000080800), CONST64(0x0008000200080800), CONST64(0x0008000008080800), CONST64(0x0008000208080800), - CONST64(0x0008000000000008), CONST64(0x0008000200000008), CONST64(0x0008000008000008), CONST64(0x0008000208000008), - CONST64(0x0008000000080008), CONST64(0x0008000200080008), CONST64(0x0008000008080008), CONST64(0x0008000208080008), - CONST64(0x0008000000000808), CONST64(0x0008000200000808), CONST64(0x0008000008000808), CONST64(0x0008000208000808), - CONST64(0x0008000000080808), CONST64(0x0008000200080808), CONST64(0x0008000008080808), CONST64(0x0008000208080808), - CONST64(0x0808000000000000), CONST64(0x0808000200000000), CONST64(0x0808000008000000), CONST64(0x0808000208000000), - CONST64(0x0808000000080000), CONST64(0x0808000200080000), CONST64(0x0808000008080000), CONST64(0x0808000208080000), - CONST64(0x0808000000000800), CONST64(0x0808000200000800), CONST64(0x0808000008000800), CONST64(0x0808000208000800), - CONST64(0x0808000000080800), CONST64(0x0808000200080800), CONST64(0x0808000008080800), CONST64(0x0808000208080800), - CONST64(0x0808000000000008), CONST64(0x0808000200000008), CONST64(0x0808000008000008), CONST64(0x0808000208000008), - CONST64(0x0808000000080008), CONST64(0x0808000200080008), CONST64(0x0808000008080008), CONST64(0x0808000208080008), - CONST64(0x0808000000000808), CONST64(0x0808000200000808), CONST64(0x0808000008000808), CONST64(0x0808000208000808), - CONST64(0x0808000000080808), CONST64(0x0808000200080808), CONST64(0x0808000008080808), CONST64(0x0808000208080808), - CONST64(0x0000080000000000), CONST64(0x0000080200000000), CONST64(0x0000080008000000), CONST64(0x0000080208000000), - CONST64(0x0000080000080000), CONST64(0x0000080200080000), CONST64(0x0000080008080000), CONST64(0x0000080208080000), - CONST64(0x0000080000000800), CONST64(0x0000080200000800), CONST64(0x0000080008000800), CONST64(0x0000080208000800), - CONST64(0x0000080000080800), CONST64(0x0000080200080800), CONST64(0x0000080008080800), CONST64(0x0000080208080800), - CONST64(0x0000080000000008), CONST64(0x0000080200000008), CONST64(0x0000080008000008), CONST64(0x0000080208000008), - CONST64(0x0000080000080008), CONST64(0x0000080200080008), CONST64(0x0000080008080008), CONST64(0x0000080208080008), - CONST64(0x0000080000000808), CONST64(0x0000080200000808), CONST64(0x0000080008000808), CONST64(0x0000080208000808), - CONST64(0x0000080000080808), CONST64(0x0000080200080808), CONST64(0x0000080008080808), CONST64(0x0000080208080808), - CONST64(0x0800080000000000), CONST64(0x0800080200000000), CONST64(0x0800080008000000), CONST64(0x0800080208000000), - CONST64(0x0800080000080000), CONST64(0x0800080200080000), CONST64(0x0800080008080000), CONST64(0x0800080208080000), - CONST64(0x0800080000000800), CONST64(0x0800080200000800), CONST64(0x0800080008000800), CONST64(0x0800080208000800), - CONST64(0x0800080000080800), CONST64(0x0800080200080800), CONST64(0x0800080008080800), CONST64(0x0800080208080800), - CONST64(0x0800080000000008), CONST64(0x0800080200000008), CONST64(0x0800080008000008), CONST64(0x0800080208000008), - CONST64(0x0800080000080008), CONST64(0x0800080200080008), CONST64(0x0800080008080008), CONST64(0x0800080208080008), - CONST64(0x0800080000000808), CONST64(0x0800080200000808), CONST64(0x0800080008000808), CONST64(0x0800080208000808), - CONST64(0x0800080000080808), CONST64(0x0800080200080808), CONST64(0x0800080008080808), CONST64(0x0800080208080808), - CONST64(0x0008080000000000), CONST64(0x0008080200000000), CONST64(0x0008080008000000), CONST64(0x0008080208000000), - CONST64(0x0008080000080000), CONST64(0x0008080200080000), CONST64(0x0008080008080000), CONST64(0x0008080208080000), - CONST64(0x0008080000000800), CONST64(0x0008080200000800), CONST64(0x0008080008000800), CONST64(0x0008080208000800), - CONST64(0x0008080000080800), CONST64(0x0008080200080800), CONST64(0x0008080008080800), CONST64(0x0008080208080800), - CONST64(0x0008080000000008), CONST64(0x0008080200000008), CONST64(0x0008080008000008), CONST64(0x0008080208000008), - CONST64(0x0008080000080008), CONST64(0x0008080200080008), CONST64(0x0008080008080008), CONST64(0x0008080208080008), - CONST64(0x0008080000000808), CONST64(0x0008080200000808), CONST64(0x0008080008000808), CONST64(0x0008080208000808), - CONST64(0x0008080000080808), CONST64(0x0008080200080808), CONST64(0x0008080008080808), CONST64(0x0008080208080808), - CONST64(0x0808080000000000), CONST64(0x0808080200000000), CONST64(0x0808080008000000), CONST64(0x0808080208000000), - CONST64(0x0808080000080000), CONST64(0x0808080200080000), CONST64(0x0808080008080000), CONST64(0x0808080208080000), - CONST64(0x0808080000000800), CONST64(0x0808080200000800), CONST64(0x0808080008000800), CONST64(0x0808080208000800), - CONST64(0x0808080000080800), CONST64(0x0808080200080800), CONST64(0x0808080008080800), CONST64(0x0808080208080800), - CONST64(0x0808080000000008), CONST64(0x0808080200000008), CONST64(0x0808080008000008), CONST64(0x0808080208000008), - CONST64(0x0808080000080008), CONST64(0x0808080200080008), CONST64(0x0808080008080008), CONST64(0x0808080208080008), - CONST64(0x0808080000000808), CONST64(0x0808080200000808), CONST64(0x0808080008000808), CONST64(0x0808080208000808), - CONST64(0x0808080000080808), CONST64(0x0808080200080808), CONST64(0x0808080008080808), CONST64(0x0808080208080808) - }, -{ CONST64(0x0000000000000000), CONST64(0x0000000800000000), CONST64(0x0000000020000000), CONST64(0x0000000820000000), - CONST64(0x0000000000200000), CONST64(0x0000000800200000), CONST64(0x0000000020200000), CONST64(0x0000000820200000), - CONST64(0x0000000000002000), CONST64(0x0000000800002000), CONST64(0x0000000020002000), CONST64(0x0000000820002000), - CONST64(0x0000000000202000), CONST64(0x0000000800202000), CONST64(0x0000000020202000), CONST64(0x0000000820202000), - CONST64(0x0000000000000020), CONST64(0x0000000800000020), CONST64(0x0000000020000020), CONST64(0x0000000820000020), - CONST64(0x0000000000200020), CONST64(0x0000000800200020), CONST64(0x0000000020200020), CONST64(0x0000000820200020), - CONST64(0x0000000000002020), CONST64(0x0000000800002020), CONST64(0x0000000020002020), CONST64(0x0000000820002020), - CONST64(0x0000000000202020), CONST64(0x0000000800202020), CONST64(0x0000000020202020), CONST64(0x0000000820202020), - CONST64(0x2000000000000000), CONST64(0x2000000800000000), CONST64(0x2000000020000000), CONST64(0x2000000820000000), - CONST64(0x2000000000200000), CONST64(0x2000000800200000), CONST64(0x2000000020200000), CONST64(0x2000000820200000), - CONST64(0x2000000000002000), CONST64(0x2000000800002000), CONST64(0x2000000020002000), CONST64(0x2000000820002000), - CONST64(0x2000000000202000), CONST64(0x2000000800202000), CONST64(0x2000000020202000), CONST64(0x2000000820202000), - CONST64(0x2000000000000020), CONST64(0x2000000800000020), CONST64(0x2000000020000020), CONST64(0x2000000820000020), - CONST64(0x2000000000200020), CONST64(0x2000000800200020), CONST64(0x2000000020200020), CONST64(0x2000000820200020), - CONST64(0x2000000000002020), CONST64(0x2000000800002020), CONST64(0x2000000020002020), CONST64(0x2000000820002020), - CONST64(0x2000000000202020), CONST64(0x2000000800202020), CONST64(0x2000000020202020), CONST64(0x2000000820202020), - CONST64(0x0020000000000000), CONST64(0x0020000800000000), CONST64(0x0020000020000000), CONST64(0x0020000820000000), - CONST64(0x0020000000200000), CONST64(0x0020000800200000), CONST64(0x0020000020200000), CONST64(0x0020000820200000), - CONST64(0x0020000000002000), CONST64(0x0020000800002000), CONST64(0x0020000020002000), CONST64(0x0020000820002000), - CONST64(0x0020000000202000), CONST64(0x0020000800202000), CONST64(0x0020000020202000), CONST64(0x0020000820202000), - CONST64(0x0020000000000020), CONST64(0x0020000800000020), CONST64(0x0020000020000020), CONST64(0x0020000820000020), - CONST64(0x0020000000200020), CONST64(0x0020000800200020), CONST64(0x0020000020200020), CONST64(0x0020000820200020), - CONST64(0x0020000000002020), CONST64(0x0020000800002020), CONST64(0x0020000020002020), CONST64(0x0020000820002020), - CONST64(0x0020000000202020), CONST64(0x0020000800202020), CONST64(0x0020000020202020), CONST64(0x0020000820202020), - CONST64(0x2020000000000000), CONST64(0x2020000800000000), CONST64(0x2020000020000000), CONST64(0x2020000820000000), - CONST64(0x2020000000200000), CONST64(0x2020000800200000), CONST64(0x2020000020200000), CONST64(0x2020000820200000), - CONST64(0x2020000000002000), CONST64(0x2020000800002000), CONST64(0x2020000020002000), CONST64(0x2020000820002000), - CONST64(0x2020000000202000), CONST64(0x2020000800202000), CONST64(0x2020000020202000), CONST64(0x2020000820202000), - CONST64(0x2020000000000020), CONST64(0x2020000800000020), CONST64(0x2020000020000020), CONST64(0x2020000820000020), - CONST64(0x2020000000200020), CONST64(0x2020000800200020), CONST64(0x2020000020200020), CONST64(0x2020000820200020), - CONST64(0x2020000000002020), CONST64(0x2020000800002020), CONST64(0x2020000020002020), CONST64(0x2020000820002020), - CONST64(0x2020000000202020), CONST64(0x2020000800202020), CONST64(0x2020000020202020), CONST64(0x2020000820202020), - CONST64(0x0000200000000000), CONST64(0x0000200800000000), CONST64(0x0000200020000000), CONST64(0x0000200820000000), - CONST64(0x0000200000200000), CONST64(0x0000200800200000), CONST64(0x0000200020200000), CONST64(0x0000200820200000), - CONST64(0x0000200000002000), CONST64(0x0000200800002000), CONST64(0x0000200020002000), CONST64(0x0000200820002000), - CONST64(0x0000200000202000), CONST64(0x0000200800202000), CONST64(0x0000200020202000), CONST64(0x0000200820202000), - CONST64(0x0000200000000020), CONST64(0x0000200800000020), CONST64(0x0000200020000020), CONST64(0x0000200820000020), - CONST64(0x0000200000200020), CONST64(0x0000200800200020), CONST64(0x0000200020200020), CONST64(0x0000200820200020), - CONST64(0x0000200000002020), CONST64(0x0000200800002020), CONST64(0x0000200020002020), CONST64(0x0000200820002020), - CONST64(0x0000200000202020), CONST64(0x0000200800202020), CONST64(0x0000200020202020), CONST64(0x0000200820202020), - CONST64(0x2000200000000000), CONST64(0x2000200800000000), CONST64(0x2000200020000000), CONST64(0x2000200820000000), - CONST64(0x2000200000200000), CONST64(0x2000200800200000), CONST64(0x2000200020200000), CONST64(0x2000200820200000), - CONST64(0x2000200000002000), CONST64(0x2000200800002000), CONST64(0x2000200020002000), CONST64(0x2000200820002000), - CONST64(0x2000200000202000), CONST64(0x2000200800202000), CONST64(0x2000200020202000), CONST64(0x2000200820202000), - CONST64(0x2000200000000020), CONST64(0x2000200800000020), CONST64(0x2000200020000020), CONST64(0x2000200820000020), - CONST64(0x2000200000200020), CONST64(0x2000200800200020), CONST64(0x2000200020200020), CONST64(0x2000200820200020), - CONST64(0x2000200000002020), CONST64(0x2000200800002020), CONST64(0x2000200020002020), CONST64(0x2000200820002020), - CONST64(0x2000200000202020), CONST64(0x2000200800202020), CONST64(0x2000200020202020), CONST64(0x2000200820202020), - CONST64(0x0020200000000000), CONST64(0x0020200800000000), CONST64(0x0020200020000000), CONST64(0x0020200820000000), - CONST64(0x0020200000200000), CONST64(0x0020200800200000), CONST64(0x0020200020200000), CONST64(0x0020200820200000), - CONST64(0x0020200000002000), CONST64(0x0020200800002000), CONST64(0x0020200020002000), CONST64(0x0020200820002000), - CONST64(0x0020200000202000), CONST64(0x0020200800202000), CONST64(0x0020200020202000), CONST64(0x0020200820202000), - CONST64(0x0020200000000020), CONST64(0x0020200800000020), CONST64(0x0020200020000020), CONST64(0x0020200820000020), - CONST64(0x0020200000200020), CONST64(0x0020200800200020), CONST64(0x0020200020200020), CONST64(0x0020200820200020), - CONST64(0x0020200000002020), CONST64(0x0020200800002020), CONST64(0x0020200020002020), CONST64(0x0020200820002020), - CONST64(0x0020200000202020), CONST64(0x0020200800202020), CONST64(0x0020200020202020), CONST64(0x0020200820202020), - CONST64(0x2020200000000000), CONST64(0x2020200800000000), CONST64(0x2020200020000000), CONST64(0x2020200820000000), - CONST64(0x2020200000200000), CONST64(0x2020200800200000), CONST64(0x2020200020200000), CONST64(0x2020200820200000), - CONST64(0x2020200000002000), CONST64(0x2020200800002000), CONST64(0x2020200020002000), CONST64(0x2020200820002000), - CONST64(0x2020200000202000), CONST64(0x2020200800202000), CONST64(0x2020200020202000), CONST64(0x2020200820202000), - CONST64(0x2020200000000020), CONST64(0x2020200800000020), CONST64(0x2020200020000020), CONST64(0x2020200820000020), - CONST64(0x2020200000200020), CONST64(0x2020200800200020), CONST64(0x2020200020200020), CONST64(0x2020200820200020), - CONST64(0x2020200000002020), CONST64(0x2020200800002020), CONST64(0x2020200020002020), CONST64(0x2020200820002020), - CONST64(0x2020200000202020), CONST64(0x2020200800202020), CONST64(0x2020200020202020), CONST64(0x2020200820202020) - }, -{ CONST64(0x0000000000000000), CONST64(0x0000002000000000), CONST64(0x0000000080000000), CONST64(0x0000002080000000), - CONST64(0x0000000000800000), CONST64(0x0000002000800000), CONST64(0x0000000080800000), CONST64(0x0000002080800000), - CONST64(0x0000000000008000), CONST64(0x0000002000008000), CONST64(0x0000000080008000), CONST64(0x0000002080008000), - CONST64(0x0000000000808000), CONST64(0x0000002000808000), CONST64(0x0000000080808000), CONST64(0x0000002080808000), - CONST64(0x0000000000000080), CONST64(0x0000002000000080), CONST64(0x0000000080000080), CONST64(0x0000002080000080), - CONST64(0x0000000000800080), CONST64(0x0000002000800080), CONST64(0x0000000080800080), CONST64(0x0000002080800080), - CONST64(0x0000000000008080), CONST64(0x0000002000008080), CONST64(0x0000000080008080), CONST64(0x0000002080008080), - CONST64(0x0000000000808080), CONST64(0x0000002000808080), CONST64(0x0000000080808080), CONST64(0x0000002080808080), - CONST64(0x8000000000000000), CONST64(0x8000002000000000), CONST64(0x8000000080000000), CONST64(0x8000002080000000), - CONST64(0x8000000000800000), CONST64(0x8000002000800000), CONST64(0x8000000080800000), CONST64(0x8000002080800000), - CONST64(0x8000000000008000), CONST64(0x8000002000008000), CONST64(0x8000000080008000), CONST64(0x8000002080008000), - CONST64(0x8000000000808000), CONST64(0x8000002000808000), CONST64(0x8000000080808000), CONST64(0x8000002080808000), - CONST64(0x8000000000000080), CONST64(0x8000002000000080), CONST64(0x8000000080000080), CONST64(0x8000002080000080), - CONST64(0x8000000000800080), CONST64(0x8000002000800080), CONST64(0x8000000080800080), CONST64(0x8000002080800080), - CONST64(0x8000000000008080), CONST64(0x8000002000008080), CONST64(0x8000000080008080), CONST64(0x8000002080008080), - CONST64(0x8000000000808080), CONST64(0x8000002000808080), CONST64(0x8000000080808080), CONST64(0x8000002080808080), - CONST64(0x0080000000000000), CONST64(0x0080002000000000), CONST64(0x0080000080000000), CONST64(0x0080002080000000), - CONST64(0x0080000000800000), CONST64(0x0080002000800000), CONST64(0x0080000080800000), CONST64(0x0080002080800000), - CONST64(0x0080000000008000), CONST64(0x0080002000008000), CONST64(0x0080000080008000), CONST64(0x0080002080008000), - CONST64(0x0080000000808000), CONST64(0x0080002000808000), CONST64(0x0080000080808000), CONST64(0x0080002080808000), - CONST64(0x0080000000000080), CONST64(0x0080002000000080), CONST64(0x0080000080000080), CONST64(0x0080002080000080), - CONST64(0x0080000000800080), CONST64(0x0080002000800080), CONST64(0x0080000080800080), CONST64(0x0080002080800080), - CONST64(0x0080000000008080), CONST64(0x0080002000008080), CONST64(0x0080000080008080), CONST64(0x0080002080008080), - CONST64(0x0080000000808080), CONST64(0x0080002000808080), CONST64(0x0080000080808080), CONST64(0x0080002080808080), - CONST64(0x8080000000000000), CONST64(0x8080002000000000), CONST64(0x8080000080000000), CONST64(0x8080002080000000), - CONST64(0x8080000000800000), CONST64(0x8080002000800000), CONST64(0x8080000080800000), CONST64(0x8080002080800000), - CONST64(0x8080000000008000), CONST64(0x8080002000008000), CONST64(0x8080000080008000), CONST64(0x8080002080008000), - CONST64(0x8080000000808000), CONST64(0x8080002000808000), CONST64(0x8080000080808000), CONST64(0x8080002080808000), - CONST64(0x8080000000000080), CONST64(0x8080002000000080), CONST64(0x8080000080000080), CONST64(0x8080002080000080), - CONST64(0x8080000000800080), CONST64(0x8080002000800080), CONST64(0x8080000080800080), CONST64(0x8080002080800080), - CONST64(0x8080000000008080), CONST64(0x8080002000008080), CONST64(0x8080000080008080), CONST64(0x8080002080008080), - CONST64(0x8080000000808080), CONST64(0x8080002000808080), CONST64(0x8080000080808080), CONST64(0x8080002080808080), - CONST64(0x0000800000000000), CONST64(0x0000802000000000), CONST64(0x0000800080000000), CONST64(0x0000802080000000), - CONST64(0x0000800000800000), CONST64(0x0000802000800000), CONST64(0x0000800080800000), CONST64(0x0000802080800000), - CONST64(0x0000800000008000), CONST64(0x0000802000008000), CONST64(0x0000800080008000), CONST64(0x0000802080008000), - CONST64(0x0000800000808000), CONST64(0x0000802000808000), CONST64(0x0000800080808000), CONST64(0x0000802080808000), - CONST64(0x0000800000000080), CONST64(0x0000802000000080), CONST64(0x0000800080000080), CONST64(0x0000802080000080), - CONST64(0x0000800000800080), CONST64(0x0000802000800080), CONST64(0x0000800080800080), CONST64(0x0000802080800080), - CONST64(0x0000800000008080), CONST64(0x0000802000008080), CONST64(0x0000800080008080), CONST64(0x0000802080008080), - CONST64(0x0000800000808080), CONST64(0x0000802000808080), CONST64(0x0000800080808080), CONST64(0x0000802080808080), - CONST64(0x8000800000000000), CONST64(0x8000802000000000), CONST64(0x8000800080000000), CONST64(0x8000802080000000), - CONST64(0x8000800000800000), CONST64(0x8000802000800000), CONST64(0x8000800080800000), CONST64(0x8000802080800000), - CONST64(0x8000800000008000), CONST64(0x8000802000008000), CONST64(0x8000800080008000), CONST64(0x8000802080008000), - CONST64(0x8000800000808000), CONST64(0x8000802000808000), CONST64(0x8000800080808000), CONST64(0x8000802080808000), - CONST64(0x8000800000000080), CONST64(0x8000802000000080), CONST64(0x8000800080000080), CONST64(0x8000802080000080), - CONST64(0x8000800000800080), CONST64(0x8000802000800080), CONST64(0x8000800080800080), CONST64(0x8000802080800080), - CONST64(0x8000800000008080), CONST64(0x8000802000008080), CONST64(0x8000800080008080), CONST64(0x8000802080008080), - CONST64(0x8000800000808080), CONST64(0x8000802000808080), CONST64(0x8000800080808080), CONST64(0x8000802080808080), - CONST64(0x0080800000000000), CONST64(0x0080802000000000), CONST64(0x0080800080000000), CONST64(0x0080802080000000), - CONST64(0x0080800000800000), CONST64(0x0080802000800000), CONST64(0x0080800080800000), CONST64(0x0080802080800000), - CONST64(0x0080800000008000), CONST64(0x0080802000008000), CONST64(0x0080800080008000), CONST64(0x0080802080008000), - CONST64(0x0080800000808000), CONST64(0x0080802000808000), CONST64(0x0080800080808000), CONST64(0x0080802080808000), - CONST64(0x0080800000000080), CONST64(0x0080802000000080), CONST64(0x0080800080000080), CONST64(0x0080802080000080), - CONST64(0x0080800000800080), CONST64(0x0080802000800080), CONST64(0x0080800080800080), CONST64(0x0080802080800080), - CONST64(0x0080800000008080), CONST64(0x0080802000008080), CONST64(0x0080800080008080), CONST64(0x0080802080008080), - CONST64(0x0080800000808080), CONST64(0x0080802000808080), CONST64(0x0080800080808080), CONST64(0x0080802080808080), - CONST64(0x8080800000000000), CONST64(0x8080802000000000), CONST64(0x8080800080000000), CONST64(0x8080802080000000), - CONST64(0x8080800000800000), CONST64(0x8080802000800000), CONST64(0x8080800080800000), CONST64(0x8080802080800000), - CONST64(0x8080800000008000), CONST64(0x8080802000008000), CONST64(0x8080800080008000), CONST64(0x8080802080008000), - CONST64(0x8080800000808000), CONST64(0x8080802000808000), CONST64(0x8080800080808000), CONST64(0x8080802080808000), - CONST64(0x8080800000000080), CONST64(0x8080802000000080), CONST64(0x8080800080000080), CONST64(0x8080802080000080), - CONST64(0x8080800000800080), CONST64(0x8080802000800080), CONST64(0x8080800080800080), CONST64(0x8080802080800080), - CONST64(0x8080800000008080), CONST64(0x8080802000008080), CONST64(0x8080800080008080), CONST64(0x8080802080008080), - CONST64(0x8080800000808080), CONST64(0x8080802000808080), CONST64(0x8080800080808080), CONST64(0x8080802080808080) - }, -{ CONST64(0x0000000000000000), CONST64(0x0000004000000000), CONST64(0x0000000001000000), CONST64(0x0000004001000000), - CONST64(0x0000000000010000), CONST64(0x0000004000010000), CONST64(0x0000000001010000), CONST64(0x0000004001010000), - CONST64(0x0000000000000100), CONST64(0x0000004000000100), CONST64(0x0000000001000100), CONST64(0x0000004001000100), - CONST64(0x0000000000010100), CONST64(0x0000004000010100), CONST64(0x0000000001010100), CONST64(0x0000004001010100), - CONST64(0x0000000000000001), CONST64(0x0000004000000001), CONST64(0x0000000001000001), CONST64(0x0000004001000001), - CONST64(0x0000000000010001), CONST64(0x0000004000010001), CONST64(0x0000000001010001), CONST64(0x0000004001010001), - CONST64(0x0000000000000101), CONST64(0x0000004000000101), CONST64(0x0000000001000101), CONST64(0x0000004001000101), - CONST64(0x0000000000010101), CONST64(0x0000004000010101), CONST64(0x0000000001010101), CONST64(0x0000004001010101), - CONST64(0x0100000000000000), CONST64(0x0100004000000000), CONST64(0x0100000001000000), CONST64(0x0100004001000000), - CONST64(0x0100000000010000), CONST64(0x0100004000010000), CONST64(0x0100000001010000), CONST64(0x0100004001010000), - CONST64(0x0100000000000100), CONST64(0x0100004000000100), CONST64(0x0100000001000100), CONST64(0x0100004001000100), - CONST64(0x0100000000010100), CONST64(0x0100004000010100), CONST64(0x0100000001010100), CONST64(0x0100004001010100), - CONST64(0x0100000000000001), CONST64(0x0100004000000001), CONST64(0x0100000001000001), CONST64(0x0100004001000001), - CONST64(0x0100000000010001), CONST64(0x0100004000010001), CONST64(0x0100000001010001), CONST64(0x0100004001010001), - CONST64(0x0100000000000101), CONST64(0x0100004000000101), CONST64(0x0100000001000101), CONST64(0x0100004001000101), - CONST64(0x0100000000010101), CONST64(0x0100004000010101), CONST64(0x0100000001010101), CONST64(0x0100004001010101), - CONST64(0x0001000000000000), CONST64(0x0001004000000000), CONST64(0x0001000001000000), CONST64(0x0001004001000000), - CONST64(0x0001000000010000), CONST64(0x0001004000010000), CONST64(0x0001000001010000), CONST64(0x0001004001010000), - CONST64(0x0001000000000100), CONST64(0x0001004000000100), CONST64(0x0001000001000100), CONST64(0x0001004001000100), - CONST64(0x0001000000010100), CONST64(0x0001004000010100), CONST64(0x0001000001010100), CONST64(0x0001004001010100), - CONST64(0x0001000000000001), CONST64(0x0001004000000001), CONST64(0x0001000001000001), CONST64(0x0001004001000001), - CONST64(0x0001000000010001), CONST64(0x0001004000010001), CONST64(0x0001000001010001), CONST64(0x0001004001010001), - CONST64(0x0001000000000101), CONST64(0x0001004000000101), CONST64(0x0001000001000101), CONST64(0x0001004001000101), - CONST64(0x0001000000010101), CONST64(0x0001004000010101), CONST64(0x0001000001010101), CONST64(0x0001004001010101), - CONST64(0x0101000000000000), CONST64(0x0101004000000000), CONST64(0x0101000001000000), CONST64(0x0101004001000000), - CONST64(0x0101000000010000), CONST64(0x0101004000010000), CONST64(0x0101000001010000), CONST64(0x0101004001010000), - CONST64(0x0101000000000100), CONST64(0x0101004000000100), CONST64(0x0101000001000100), CONST64(0x0101004001000100), - CONST64(0x0101000000010100), CONST64(0x0101004000010100), CONST64(0x0101000001010100), CONST64(0x0101004001010100), - CONST64(0x0101000000000001), CONST64(0x0101004000000001), CONST64(0x0101000001000001), CONST64(0x0101004001000001), - CONST64(0x0101000000010001), CONST64(0x0101004000010001), CONST64(0x0101000001010001), CONST64(0x0101004001010001), - CONST64(0x0101000000000101), CONST64(0x0101004000000101), CONST64(0x0101000001000101), CONST64(0x0101004001000101), - CONST64(0x0101000000010101), CONST64(0x0101004000010101), CONST64(0x0101000001010101), CONST64(0x0101004001010101), - CONST64(0x0000010000000000), CONST64(0x0000014000000000), CONST64(0x0000010001000000), CONST64(0x0000014001000000), - CONST64(0x0000010000010000), CONST64(0x0000014000010000), CONST64(0x0000010001010000), CONST64(0x0000014001010000), - CONST64(0x0000010000000100), CONST64(0x0000014000000100), CONST64(0x0000010001000100), CONST64(0x0000014001000100), - CONST64(0x0000010000010100), CONST64(0x0000014000010100), CONST64(0x0000010001010100), CONST64(0x0000014001010100), - CONST64(0x0000010000000001), CONST64(0x0000014000000001), CONST64(0x0000010001000001), CONST64(0x0000014001000001), - CONST64(0x0000010000010001), CONST64(0x0000014000010001), CONST64(0x0000010001010001), CONST64(0x0000014001010001), - CONST64(0x0000010000000101), CONST64(0x0000014000000101), CONST64(0x0000010001000101), CONST64(0x0000014001000101), - CONST64(0x0000010000010101), CONST64(0x0000014000010101), CONST64(0x0000010001010101), CONST64(0x0000014001010101), - CONST64(0x0100010000000000), CONST64(0x0100014000000000), CONST64(0x0100010001000000), CONST64(0x0100014001000000), - CONST64(0x0100010000010000), CONST64(0x0100014000010000), CONST64(0x0100010001010000), CONST64(0x0100014001010000), - CONST64(0x0100010000000100), CONST64(0x0100014000000100), CONST64(0x0100010001000100), CONST64(0x0100014001000100), - CONST64(0x0100010000010100), CONST64(0x0100014000010100), CONST64(0x0100010001010100), CONST64(0x0100014001010100), - CONST64(0x0100010000000001), CONST64(0x0100014000000001), CONST64(0x0100010001000001), CONST64(0x0100014001000001), - CONST64(0x0100010000010001), CONST64(0x0100014000010001), CONST64(0x0100010001010001), CONST64(0x0100014001010001), - CONST64(0x0100010000000101), CONST64(0x0100014000000101), CONST64(0x0100010001000101), CONST64(0x0100014001000101), - CONST64(0x0100010000010101), CONST64(0x0100014000010101), CONST64(0x0100010001010101), CONST64(0x0100014001010101), - CONST64(0x0001010000000000), CONST64(0x0001014000000000), CONST64(0x0001010001000000), CONST64(0x0001014001000000), - CONST64(0x0001010000010000), CONST64(0x0001014000010000), CONST64(0x0001010001010000), CONST64(0x0001014001010000), - CONST64(0x0001010000000100), CONST64(0x0001014000000100), CONST64(0x0001010001000100), CONST64(0x0001014001000100), - CONST64(0x0001010000010100), CONST64(0x0001014000010100), CONST64(0x0001010001010100), CONST64(0x0001014001010100), - CONST64(0x0001010000000001), CONST64(0x0001014000000001), CONST64(0x0001010001000001), CONST64(0x0001014001000001), - CONST64(0x0001010000010001), CONST64(0x0001014000010001), CONST64(0x0001010001010001), CONST64(0x0001014001010001), - CONST64(0x0001010000000101), CONST64(0x0001014000000101), CONST64(0x0001010001000101), CONST64(0x0001014001000101), - CONST64(0x0001010000010101), CONST64(0x0001014000010101), CONST64(0x0001010001010101), CONST64(0x0001014001010101), - CONST64(0x0101010000000000), CONST64(0x0101014000000000), CONST64(0x0101010001000000), CONST64(0x0101014001000000), - CONST64(0x0101010000010000), CONST64(0x0101014000010000), CONST64(0x0101010001010000), CONST64(0x0101014001010000), - CONST64(0x0101010000000100), CONST64(0x0101014000000100), CONST64(0x0101010001000100), CONST64(0x0101014001000100), - CONST64(0x0101010000010100), CONST64(0x0101014000010100), CONST64(0x0101010001010100), CONST64(0x0101014001010100), - CONST64(0x0101010000000001), CONST64(0x0101014000000001), CONST64(0x0101010001000001), CONST64(0x0101014001000001), - CONST64(0x0101010000010001), CONST64(0x0101014000010001), CONST64(0x0101010001010001), CONST64(0x0101014001010001), - CONST64(0x0101010000000101), CONST64(0x0101014000000101), CONST64(0x0101010001000101), CONST64(0x0101014001000101), - CONST64(0x0101010000010101), CONST64(0x0101014000010101), CONST64(0x0101010001010101), CONST64(0x0101014001010101) - }, -{ CONST64(0x0000000000000000), CONST64(0x0000000100000000), CONST64(0x0000000004000000), CONST64(0x0000000104000000), - CONST64(0x0000000000040000), CONST64(0x0000000100040000), CONST64(0x0000000004040000), CONST64(0x0000000104040000), - CONST64(0x0000000000000400), CONST64(0x0000000100000400), CONST64(0x0000000004000400), CONST64(0x0000000104000400), - CONST64(0x0000000000040400), CONST64(0x0000000100040400), CONST64(0x0000000004040400), CONST64(0x0000000104040400), - CONST64(0x0000000000000004), CONST64(0x0000000100000004), CONST64(0x0000000004000004), CONST64(0x0000000104000004), - CONST64(0x0000000000040004), CONST64(0x0000000100040004), CONST64(0x0000000004040004), CONST64(0x0000000104040004), - CONST64(0x0000000000000404), CONST64(0x0000000100000404), CONST64(0x0000000004000404), CONST64(0x0000000104000404), - CONST64(0x0000000000040404), CONST64(0x0000000100040404), CONST64(0x0000000004040404), CONST64(0x0000000104040404), - CONST64(0x0400000000000000), CONST64(0x0400000100000000), CONST64(0x0400000004000000), CONST64(0x0400000104000000), - CONST64(0x0400000000040000), CONST64(0x0400000100040000), CONST64(0x0400000004040000), CONST64(0x0400000104040000), - CONST64(0x0400000000000400), CONST64(0x0400000100000400), CONST64(0x0400000004000400), CONST64(0x0400000104000400), - CONST64(0x0400000000040400), CONST64(0x0400000100040400), CONST64(0x0400000004040400), CONST64(0x0400000104040400), - CONST64(0x0400000000000004), CONST64(0x0400000100000004), CONST64(0x0400000004000004), CONST64(0x0400000104000004), - CONST64(0x0400000000040004), CONST64(0x0400000100040004), CONST64(0x0400000004040004), CONST64(0x0400000104040004), - CONST64(0x0400000000000404), CONST64(0x0400000100000404), CONST64(0x0400000004000404), CONST64(0x0400000104000404), - CONST64(0x0400000000040404), CONST64(0x0400000100040404), CONST64(0x0400000004040404), CONST64(0x0400000104040404), - CONST64(0x0004000000000000), CONST64(0x0004000100000000), CONST64(0x0004000004000000), CONST64(0x0004000104000000), - CONST64(0x0004000000040000), CONST64(0x0004000100040000), CONST64(0x0004000004040000), CONST64(0x0004000104040000), - CONST64(0x0004000000000400), CONST64(0x0004000100000400), CONST64(0x0004000004000400), CONST64(0x0004000104000400), - CONST64(0x0004000000040400), CONST64(0x0004000100040400), CONST64(0x0004000004040400), CONST64(0x0004000104040400), - CONST64(0x0004000000000004), CONST64(0x0004000100000004), CONST64(0x0004000004000004), CONST64(0x0004000104000004), - CONST64(0x0004000000040004), CONST64(0x0004000100040004), CONST64(0x0004000004040004), CONST64(0x0004000104040004), - CONST64(0x0004000000000404), CONST64(0x0004000100000404), CONST64(0x0004000004000404), CONST64(0x0004000104000404), - CONST64(0x0004000000040404), CONST64(0x0004000100040404), CONST64(0x0004000004040404), CONST64(0x0004000104040404), - CONST64(0x0404000000000000), CONST64(0x0404000100000000), CONST64(0x0404000004000000), CONST64(0x0404000104000000), - CONST64(0x0404000000040000), CONST64(0x0404000100040000), CONST64(0x0404000004040000), CONST64(0x0404000104040000), - CONST64(0x0404000000000400), CONST64(0x0404000100000400), CONST64(0x0404000004000400), CONST64(0x0404000104000400), - CONST64(0x0404000000040400), CONST64(0x0404000100040400), CONST64(0x0404000004040400), CONST64(0x0404000104040400), - CONST64(0x0404000000000004), CONST64(0x0404000100000004), CONST64(0x0404000004000004), CONST64(0x0404000104000004), - CONST64(0x0404000000040004), CONST64(0x0404000100040004), CONST64(0x0404000004040004), CONST64(0x0404000104040004), - CONST64(0x0404000000000404), CONST64(0x0404000100000404), CONST64(0x0404000004000404), CONST64(0x0404000104000404), - CONST64(0x0404000000040404), CONST64(0x0404000100040404), CONST64(0x0404000004040404), CONST64(0x0404000104040404), - CONST64(0x0000040000000000), CONST64(0x0000040100000000), CONST64(0x0000040004000000), CONST64(0x0000040104000000), - CONST64(0x0000040000040000), CONST64(0x0000040100040000), CONST64(0x0000040004040000), CONST64(0x0000040104040000), - CONST64(0x0000040000000400), CONST64(0x0000040100000400), CONST64(0x0000040004000400), CONST64(0x0000040104000400), - CONST64(0x0000040000040400), CONST64(0x0000040100040400), CONST64(0x0000040004040400), CONST64(0x0000040104040400), - CONST64(0x0000040000000004), CONST64(0x0000040100000004), CONST64(0x0000040004000004), CONST64(0x0000040104000004), - CONST64(0x0000040000040004), CONST64(0x0000040100040004), CONST64(0x0000040004040004), CONST64(0x0000040104040004), - CONST64(0x0000040000000404), CONST64(0x0000040100000404), CONST64(0x0000040004000404), CONST64(0x0000040104000404), - CONST64(0x0000040000040404), CONST64(0x0000040100040404), CONST64(0x0000040004040404), CONST64(0x0000040104040404), - CONST64(0x0400040000000000), CONST64(0x0400040100000000), CONST64(0x0400040004000000), CONST64(0x0400040104000000), - CONST64(0x0400040000040000), CONST64(0x0400040100040000), CONST64(0x0400040004040000), CONST64(0x0400040104040000), - CONST64(0x0400040000000400), CONST64(0x0400040100000400), CONST64(0x0400040004000400), CONST64(0x0400040104000400), - CONST64(0x0400040000040400), CONST64(0x0400040100040400), CONST64(0x0400040004040400), CONST64(0x0400040104040400), - CONST64(0x0400040000000004), CONST64(0x0400040100000004), CONST64(0x0400040004000004), CONST64(0x0400040104000004), - CONST64(0x0400040000040004), CONST64(0x0400040100040004), CONST64(0x0400040004040004), CONST64(0x0400040104040004), - CONST64(0x0400040000000404), CONST64(0x0400040100000404), CONST64(0x0400040004000404), CONST64(0x0400040104000404), - CONST64(0x0400040000040404), CONST64(0x0400040100040404), CONST64(0x0400040004040404), CONST64(0x0400040104040404), - CONST64(0x0004040000000000), CONST64(0x0004040100000000), CONST64(0x0004040004000000), CONST64(0x0004040104000000), - CONST64(0x0004040000040000), CONST64(0x0004040100040000), CONST64(0x0004040004040000), CONST64(0x0004040104040000), - CONST64(0x0004040000000400), CONST64(0x0004040100000400), CONST64(0x0004040004000400), CONST64(0x0004040104000400), - CONST64(0x0004040000040400), CONST64(0x0004040100040400), CONST64(0x0004040004040400), CONST64(0x0004040104040400), - CONST64(0x0004040000000004), CONST64(0x0004040100000004), CONST64(0x0004040004000004), CONST64(0x0004040104000004), - CONST64(0x0004040000040004), CONST64(0x0004040100040004), CONST64(0x0004040004040004), CONST64(0x0004040104040004), - CONST64(0x0004040000000404), CONST64(0x0004040100000404), CONST64(0x0004040004000404), CONST64(0x0004040104000404), - CONST64(0x0004040000040404), CONST64(0x0004040100040404), CONST64(0x0004040004040404), CONST64(0x0004040104040404), - CONST64(0x0404040000000000), CONST64(0x0404040100000000), CONST64(0x0404040004000000), CONST64(0x0404040104000000), - CONST64(0x0404040000040000), CONST64(0x0404040100040000), CONST64(0x0404040004040000), CONST64(0x0404040104040000), - CONST64(0x0404040000000400), CONST64(0x0404040100000400), CONST64(0x0404040004000400), CONST64(0x0404040104000400), - CONST64(0x0404040000040400), CONST64(0x0404040100040400), CONST64(0x0404040004040400), CONST64(0x0404040104040400), - CONST64(0x0404040000000004), CONST64(0x0404040100000004), CONST64(0x0404040004000004), CONST64(0x0404040104000004), - CONST64(0x0404040000040004), CONST64(0x0404040100040004), CONST64(0x0404040004040004), CONST64(0x0404040104040004), - CONST64(0x0404040000000404), CONST64(0x0404040100000404), CONST64(0x0404040004000404), CONST64(0x0404040104000404), - CONST64(0x0404040000040404), CONST64(0x0404040100040404), CONST64(0x0404040004040404), CONST64(0x0404040104040404) - }, -{ CONST64(0x0000000000000000), CONST64(0x0000000400000000), CONST64(0x0000000010000000), CONST64(0x0000000410000000), - CONST64(0x0000000000100000), CONST64(0x0000000400100000), CONST64(0x0000000010100000), CONST64(0x0000000410100000), - CONST64(0x0000000000001000), CONST64(0x0000000400001000), CONST64(0x0000000010001000), CONST64(0x0000000410001000), - CONST64(0x0000000000101000), CONST64(0x0000000400101000), CONST64(0x0000000010101000), CONST64(0x0000000410101000), - CONST64(0x0000000000000010), CONST64(0x0000000400000010), CONST64(0x0000000010000010), CONST64(0x0000000410000010), - CONST64(0x0000000000100010), CONST64(0x0000000400100010), CONST64(0x0000000010100010), CONST64(0x0000000410100010), - CONST64(0x0000000000001010), CONST64(0x0000000400001010), CONST64(0x0000000010001010), CONST64(0x0000000410001010), - CONST64(0x0000000000101010), CONST64(0x0000000400101010), CONST64(0x0000000010101010), CONST64(0x0000000410101010), - CONST64(0x1000000000000000), CONST64(0x1000000400000000), CONST64(0x1000000010000000), CONST64(0x1000000410000000), - CONST64(0x1000000000100000), CONST64(0x1000000400100000), CONST64(0x1000000010100000), CONST64(0x1000000410100000), - CONST64(0x1000000000001000), CONST64(0x1000000400001000), CONST64(0x1000000010001000), CONST64(0x1000000410001000), - CONST64(0x1000000000101000), CONST64(0x1000000400101000), CONST64(0x1000000010101000), CONST64(0x1000000410101000), - CONST64(0x1000000000000010), CONST64(0x1000000400000010), CONST64(0x1000000010000010), CONST64(0x1000000410000010), - CONST64(0x1000000000100010), CONST64(0x1000000400100010), CONST64(0x1000000010100010), CONST64(0x1000000410100010), - CONST64(0x1000000000001010), CONST64(0x1000000400001010), CONST64(0x1000000010001010), CONST64(0x1000000410001010), - CONST64(0x1000000000101010), CONST64(0x1000000400101010), CONST64(0x1000000010101010), CONST64(0x1000000410101010), - CONST64(0x0010000000000000), CONST64(0x0010000400000000), CONST64(0x0010000010000000), CONST64(0x0010000410000000), - CONST64(0x0010000000100000), CONST64(0x0010000400100000), CONST64(0x0010000010100000), CONST64(0x0010000410100000), - CONST64(0x0010000000001000), CONST64(0x0010000400001000), CONST64(0x0010000010001000), CONST64(0x0010000410001000), - CONST64(0x0010000000101000), CONST64(0x0010000400101000), CONST64(0x0010000010101000), CONST64(0x0010000410101000), - CONST64(0x0010000000000010), CONST64(0x0010000400000010), CONST64(0x0010000010000010), CONST64(0x0010000410000010), - CONST64(0x0010000000100010), CONST64(0x0010000400100010), CONST64(0x0010000010100010), CONST64(0x0010000410100010), - CONST64(0x0010000000001010), CONST64(0x0010000400001010), CONST64(0x0010000010001010), CONST64(0x0010000410001010), - CONST64(0x0010000000101010), CONST64(0x0010000400101010), CONST64(0x0010000010101010), CONST64(0x0010000410101010), - CONST64(0x1010000000000000), CONST64(0x1010000400000000), CONST64(0x1010000010000000), CONST64(0x1010000410000000), - CONST64(0x1010000000100000), CONST64(0x1010000400100000), CONST64(0x1010000010100000), CONST64(0x1010000410100000), - CONST64(0x1010000000001000), CONST64(0x1010000400001000), CONST64(0x1010000010001000), CONST64(0x1010000410001000), - CONST64(0x1010000000101000), CONST64(0x1010000400101000), CONST64(0x1010000010101000), CONST64(0x1010000410101000), - CONST64(0x1010000000000010), CONST64(0x1010000400000010), CONST64(0x1010000010000010), CONST64(0x1010000410000010), - CONST64(0x1010000000100010), CONST64(0x1010000400100010), CONST64(0x1010000010100010), CONST64(0x1010000410100010), - CONST64(0x1010000000001010), CONST64(0x1010000400001010), CONST64(0x1010000010001010), CONST64(0x1010000410001010), - CONST64(0x1010000000101010), CONST64(0x1010000400101010), CONST64(0x1010000010101010), CONST64(0x1010000410101010), - CONST64(0x0000100000000000), CONST64(0x0000100400000000), CONST64(0x0000100010000000), CONST64(0x0000100410000000), - CONST64(0x0000100000100000), CONST64(0x0000100400100000), CONST64(0x0000100010100000), CONST64(0x0000100410100000), - CONST64(0x0000100000001000), CONST64(0x0000100400001000), CONST64(0x0000100010001000), CONST64(0x0000100410001000), - CONST64(0x0000100000101000), CONST64(0x0000100400101000), CONST64(0x0000100010101000), CONST64(0x0000100410101000), - CONST64(0x0000100000000010), CONST64(0x0000100400000010), CONST64(0x0000100010000010), CONST64(0x0000100410000010), - CONST64(0x0000100000100010), CONST64(0x0000100400100010), CONST64(0x0000100010100010), CONST64(0x0000100410100010), - CONST64(0x0000100000001010), CONST64(0x0000100400001010), CONST64(0x0000100010001010), CONST64(0x0000100410001010), - CONST64(0x0000100000101010), CONST64(0x0000100400101010), CONST64(0x0000100010101010), CONST64(0x0000100410101010), - CONST64(0x1000100000000000), CONST64(0x1000100400000000), CONST64(0x1000100010000000), CONST64(0x1000100410000000), - CONST64(0x1000100000100000), CONST64(0x1000100400100000), CONST64(0x1000100010100000), CONST64(0x1000100410100000), - CONST64(0x1000100000001000), CONST64(0x1000100400001000), CONST64(0x1000100010001000), CONST64(0x1000100410001000), - CONST64(0x1000100000101000), CONST64(0x1000100400101000), CONST64(0x1000100010101000), CONST64(0x1000100410101000), - CONST64(0x1000100000000010), CONST64(0x1000100400000010), CONST64(0x1000100010000010), CONST64(0x1000100410000010), - CONST64(0x1000100000100010), CONST64(0x1000100400100010), CONST64(0x1000100010100010), CONST64(0x1000100410100010), - CONST64(0x1000100000001010), CONST64(0x1000100400001010), CONST64(0x1000100010001010), CONST64(0x1000100410001010), - CONST64(0x1000100000101010), CONST64(0x1000100400101010), CONST64(0x1000100010101010), CONST64(0x1000100410101010), - CONST64(0x0010100000000000), CONST64(0x0010100400000000), CONST64(0x0010100010000000), CONST64(0x0010100410000000), - CONST64(0x0010100000100000), CONST64(0x0010100400100000), CONST64(0x0010100010100000), CONST64(0x0010100410100000), - CONST64(0x0010100000001000), CONST64(0x0010100400001000), CONST64(0x0010100010001000), CONST64(0x0010100410001000), - CONST64(0x0010100000101000), CONST64(0x0010100400101000), CONST64(0x0010100010101000), CONST64(0x0010100410101000), - CONST64(0x0010100000000010), CONST64(0x0010100400000010), CONST64(0x0010100010000010), CONST64(0x0010100410000010), - CONST64(0x0010100000100010), CONST64(0x0010100400100010), CONST64(0x0010100010100010), CONST64(0x0010100410100010), - CONST64(0x0010100000001010), CONST64(0x0010100400001010), CONST64(0x0010100010001010), CONST64(0x0010100410001010), - CONST64(0x0010100000101010), CONST64(0x0010100400101010), CONST64(0x0010100010101010), CONST64(0x0010100410101010), - CONST64(0x1010100000000000), CONST64(0x1010100400000000), CONST64(0x1010100010000000), CONST64(0x1010100410000000), - CONST64(0x1010100000100000), CONST64(0x1010100400100000), CONST64(0x1010100010100000), CONST64(0x1010100410100000), - CONST64(0x1010100000001000), CONST64(0x1010100400001000), CONST64(0x1010100010001000), CONST64(0x1010100410001000), - CONST64(0x1010100000101000), CONST64(0x1010100400101000), CONST64(0x1010100010101000), CONST64(0x1010100410101000), - CONST64(0x1010100000000010), CONST64(0x1010100400000010), CONST64(0x1010100010000010), CONST64(0x1010100410000010), - CONST64(0x1010100000100010), CONST64(0x1010100400100010), CONST64(0x1010100010100010), CONST64(0x1010100410100010), - CONST64(0x1010100000001010), CONST64(0x1010100400001010), CONST64(0x1010100010001010), CONST64(0x1010100410001010), - CONST64(0x1010100000101010), CONST64(0x1010100400101010), CONST64(0x1010100010101010), CONST64(0x1010100410101010) - }, -{ CONST64(0x0000000000000000), CONST64(0x0000001000000000), CONST64(0x0000000040000000), CONST64(0x0000001040000000), - CONST64(0x0000000000400000), CONST64(0x0000001000400000), CONST64(0x0000000040400000), CONST64(0x0000001040400000), - CONST64(0x0000000000004000), CONST64(0x0000001000004000), CONST64(0x0000000040004000), CONST64(0x0000001040004000), - CONST64(0x0000000000404000), CONST64(0x0000001000404000), CONST64(0x0000000040404000), CONST64(0x0000001040404000), - CONST64(0x0000000000000040), CONST64(0x0000001000000040), CONST64(0x0000000040000040), CONST64(0x0000001040000040), - CONST64(0x0000000000400040), CONST64(0x0000001000400040), CONST64(0x0000000040400040), CONST64(0x0000001040400040), - CONST64(0x0000000000004040), CONST64(0x0000001000004040), CONST64(0x0000000040004040), CONST64(0x0000001040004040), - CONST64(0x0000000000404040), CONST64(0x0000001000404040), CONST64(0x0000000040404040), CONST64(0x0000001040404040), - CONST64(0x4000000000000000), CONST64(0x4000001000000000), CONST64(0x4000000040000000), CONST64(0x4000001040000000), - CONST64(0x4000000000400000), CONST64(0x4000001000400000), CONST64(0x4000000040400000), CONST64(0x4000001040400000), - CONST64(0x4000000000004000), CONST64(0x4000001000004000), CONST64(0x4000000040004000), CONST64(0x4000001040004000), - CONST64(0x4000000000404000), CONST64(0x4000001000404000), CONST64(0x4000000040404000), CONST64(0x4000001040404000), - CONST64(0x4000000000000040), CONST64(0x4000001000000040), CONST64(0x4000000040000040), CONST64(0x4000001040000040), - CONST64(0x4000000000400040), CONST64(0x4000001000400040), CONST64(0x4000000040400040), CONST64(0x4000001040400040), - CONST64(0x4000000000004040), CONST64(0x4000001000004040), CONST64(0x4000000040004040), CONST64(0x4000001040004040), - CONST64(0x4000000000404040), CONST64(0x4000001000404040), CONST64(0x4000000040404040), CONST64(0x4000001040404040), - CONST64(0x0040000000000000), CONST64(0x0040001000000000), CONST64(0x0040000040000000), CONST64(0x0040001040000000), - CONST64(0x0040000000400000), CONST64(0x0040001000400000), CONST64(0x0040000040400000), CONST64(0x0040001040400000), - CONST64(0x0040000000004000), CONST64(0x0040001000004000), CONST64(0x0040000040004000), CONST64(0x0040001040004000), - CONST64(0x0040000000404000), CONST64(0x0040001000404000), CONST64(0x0040000040404000), CONST64(0x0040001040404000), - CONST64(0x0040000000000040), CONST64(0x0040001000000040), CONST64(0x0040000040000040), CONST64(0x0040001040000040), - CONST64(0x0040000000400040), CONST64(0x0040001000400040), CONST64(0x0040000040400040), CONST64(0x0040001040400040), - CONST64(0x0040000000004040), CONST64(0x0040001000004040), CONST64(0x0040000040004040), CONST64(0x0040001040004040), - CONST64(0x0040000000404040), CONST64(0x0040001000404040), CONST64(0x0040000040404040), CONST64(0x0040001040404040), - CONST64(0x4040000000000000), CONST64(0x4040001000000000), CONST64(0x4040000040000000), CONST64(0x4040001040000000), - CONST64(0x4040000000400000), CONST64(0x4040001000400000), CONST64(0x4040000040400000), CONST64(0x4040001040400000), - CONST64(0x4040000000004000), CONST64(0x4040001000004000), CONST64(0x4040000040004000), CONST64(0x4040001040004000), - CONST64(0x4040000000404000), CONST64(0x4040001000404000), CONST64(0x4040000040404000), CONST64(0x4040001040404000), - CONST64(0x4040000000000040), CONST64(0x4040001000000040), CONST64(0x4040000040000040), CONST64(0x4040001040000040), - CONST64(0x4040000000400040), CONST64(0x4040001000400040), CONST64(0x4040000040400040), CONST64(0x4040001040400040), - CONST64(0x4040000000004040), CONST64(0x4040001000004040), CONST64(0x4040000040004040), CONST64(0x4040001040004040), - CONST64(0x4040000000404040), CONST64(0x4040001000404040), CONST64(0x4040000040404040), CONST64(0x4040001040404040), - CONST64(0x0000400000000000), CONST64(0x0000401000000000), CONST64(0x0000400040000000), CONST64(0x0000401040000000), - CONST64(0x0000400000400000), CONST64(0x0000401000400000), CONST64(0x0000400040400000), CONST64(0x0000401040400000), - CONST64(0x0000400000004000), CONST64(0x0000401000004000), CONST64(0x0000400040004000), CONST64(0x0000401040004000), - CONST64(0x0000400000404000), CONST64(0x0000401000404000), CONST64(0x0000400040404000), CONST64(0x0000401040404000), - CONST64(0x0000400000000040), CONST64(0x0000401000000040), CONST64(0x0000400040000040), CONST64(0x0000401040000040), - CONST64(0x0000400000400040), CONST64(0x0000401000400040), CONST64(0x0000400040400040), CONST64(0x0000401040400040), - CONST64(0x0000400000004040), CONST64(0x0000401000004040), CONST64(0x0000400040004040), CONST64(0x0000401040004040), - CONST64(0x0000400000404040), CONST64(0x0000401000404040), CONST64(0x0000400040404040), CONST64(0x0000401040404040), - CONST64(0x4000400000000000), CONST64(0x4000401000000000), CONST64(0x4000400040000000), CONST64(0x4000401040000000), - CONST64(0x4000400000400000), CONST64(0x4000401000400000), CONST64(0x4000400040400000), CONST64(0x4000401040400000), - CONST64(0x4000400000004000), CONST64(0x4000401000004000), CONST64(0x4000400040004000), CONST64(0x4000401040004000), - CONST64(0x4000400000404000), CONST64(0x4000401000404000), CONST64(0x4000400040404000), CONST64(0x4000401040404000), - CONST64(0x4000400000000040), CONST64(0x4000401000000040), CONST64(0x4000400040000040), CONST64(0x4000401040000040), - CONST64(0x4000400000400040), CONST64(0x4000401000400040), CONST64(0x4000400040400040), CONST64(0x4000401040400040), - CONST64(0x4000400000004040), CONST64(0x4000401000004040), CONST64(0x4000400040004040), CONST64(0x4000401040004040), - CONST64(0x4000400000404040), CONST64(0x4000401000404040), CONST64(0x4000400040404040), CONST64(0x4000401040404040), - CONST64(0x0040400000000000), CONST64(0x0040401000000000), CONST64(0x0040400040000000), CONST64(0x0040401040000000), - CONST64(0x0040400000400000), CONST64(0x0040401000400000), CONST64(0x0040400040400000), CONST64(0x0040401040400000), - CONST64(0x0040400000004000), CONST64(0x0040401000004000), CONST64(0x0040400040004000), CONST64(0x0040401040004000), - CONST64(0x0040400000404000), CONST64(0x0040401000404000), CONST64(0x0040400040404000), CONST64(0x0040401040404000), - CONST64(0x0040400000000040), CONST64(0x0040401000000040), CONST64(0x0040400040000040), CONST64(0x0040401040000040), - CONST64(0x0040400000400040), CONST64(0x0040401000400040), CONST64(0x0040400040400040), CONST64(0x0040401040400040), - CONST64(0x0040400000004040), CONST64(0x0040401000004040), CONST64(0x0040400040004040), CONST64(0x0040401040004040), - CONST64(0x0040400000404040), CONST64(0x0040401000404040), CONST64(0x0040400040404040), CONST64(0x0040401040404040), - CONST64(0x4040400000000000), CONST64(0x4040401000000000), CONST64(0x4040400040000000), CONST64(0x4040401040000000), - CONST64(0x4040400000400000), CONST64(0x4040401000400000), CONST64(0x4040400040400000), CONST64(0x4040401040400000), - CONST64(0x4040400000004000), CONST64(0x4040401000004000), CONST64(0x4040400040004000), CONST64(0x4040401040004000), - CONST64(0x4040400000404000), CONST64(0x4040401000404000), CONST64(0x4040400040404000), CONST64(0x4040401040404000), - CONST64(0x4040400000000040), CONST64(0x4040401000000040), CONST64(0x4040400040000040), CONST64(0x4040401040000040), - CONST64(0x4040400000400040), CONST64(0x4040401000400040), CONST64(0x4040400040400040), CONST64(0x4040401040400040), - CONST64(0x4040400000004040), CONST64(0x4040401000004040), CONST64(0x4040400040004040), CONST64(0x4040401040004040), - CONST64(0x4040400000404040), CONST64(0x4040401000404040), CONST64(0x4040400040404040), CONST64(0x4040401040404040) - }}; - -#endif - - -static void cookey(const ulong32 *raw1, ulong32 *keyout); - -#ifdef LTC_CLEAN_STACK -static void _deskey(const unsigned char *key, short edf, ulong32 *keyout) -#else -static void deskey(const unsigned char *key, short edf, ulong32 *keyout) -#endif -{ - ulong32 i, j, l, m, n, kn[32]; - unsigned char pc1m[56], pcr[56]; - - for (j=0; j < 56; j++) { - l = (ulong32)pc1[j]; - m = l & 7; - pc1m[j] = (unsigned char)((key[l >> 3U] & bytebit[m]) == bytebit[m] ? 1 : 0); - } - - for (i=0; i < 16; i++) { - if (edf == DE1) { - m = (15 - i) << 1; - } else { - m = i << 1; - } - n = m + 1; - kn[m] = kn[n] = 0L; - for (j=0; j < 28; j++) { - l = j + (ulong32)totrot[i]; - if (l < 28) { - pcr[j] = pc1m[l]; - } else { - pcr[j] = pc1m[l - 28]; - } - } - for (/*j = 28*/; j < 56; j++) { - l = j + (ulong32)totrot[i]; - if (l < 56) { - pcr[j] = pc1m[l]; - } else { - pcr[j] = pc1m[l - 28]; - } - } - for (j=0; j < 24; j++) { - if ((int)pcr[(int)pc2[j]] != 0) { - kn[m] |= bigbyte[j]; - } - if ((int)pcr[(int)pc2[j+24]] != 0) { - kn[n] |= bigbyte[j]; - } - } - } - - cookey(kn, keyout); -} - -#ifdef LTC_CLEAN_STACK -static void deskey(const unsigned char *key, short edf, ulong32 *keyout) -{ - _deskey(key, edf, keyout); - burn_stack(sizeof(int)*5 + sizeof(ulong32)*32 + sizeof(unsigned char)*112); -} -#endif - -#ifdef LTC_CLEAN_STACK -static void _cookey(const ulong32 *raw1, ulong32 *keyout) -#else -static void cookey(const ulong32 *raw1, ulong32 *keyout) -#endif -{ - ulong32 *cook; - const ulong32 *raw0; - ulong32 dough[32]; - int i; - - cook = dough; - for(i=0; i < 16; i++, raw1++) - { - raw0 = raw1++; - *cook = (*raw0 & 0x00fc0000L) << 6; - *cook |= (*raw0 & 0x00000fc0L) << 10; - *cook |= (*raw1 & 0x00fc0000L) >> 10; - *cook++ |= (*raw1 & 0x00000fc0L) >> 6; - *cook = (*raw0 & 0x0003f000L) << 12; - *cook |= (*raw0 & 0x0000003fL) << 16; - *cook |= (*raw1 & 0x0003f000L) >> 4; - *cook++ |= (*raw1 & 0x0000003fL); - } - - XMEMCPY(keyout, dough, sizeof(dough)); -} - -#ifdef LTC_CLEAN_STACK -static void cookey(const ulong32 *raw1, ulong32 *keyout) -{ - _cookey(raw1, keyout); - burn_stack(sizeof(ulong32 *) * 2 + sizeof(ulong32)*32 + sizeof(int)); -} -#endif - -#ifndef LTC_CLEAN_STACK -static void desfunc(ulong32 *block, const ulong32 *keys) -#else -static void _desfunc(ulong32 *block, const ulong32 *keys) -#endif -{ - ulong32 work, right, leftt; - int cur_round; - - leftt = block[0]; - right = block[1]; - -#ifdef LTC_SMALL_CODE - work = ((leftt >> 4) ^ right) & 0x0f0f0f0fL; - right ^= work; - leftt ^= (work << 4); - - work = ((leftt >> 16) ^ right) & 0x0000ffffL; - right ^= work; - leftt ^= (work << 16); - - work = ((right >> 2) ^ leftt) & 0x33333333L; - leftt ^= work; - right ^= (work << 2); - - work = ((right >> 8) ^ leftt) & 0x00ff00ffL; - leftt ^= work; - right ^= (work << 8); - - right = ROLc(right, 1); - work = (leftt ^ right) & 0xaaaaaaaaL; - - leftt ^= work; - right ^= work; - leftt = ROLc(leftt, 1); -#else - { - ulong64 tmp; - tmp = des_ip[0][byte(leftt, 0)] ^ - des_ip[1][byte(leftt, 1)] ^ - des_ip[2][byte(leftt, 2)] ^ - des_ip[3][byte(leftt, 3)] ^ - des_ip[4][byte(right, 0)] ^ - des_ip[5][byte(right, 1)] ^ - des_ip[6][byte(right, 2)] ^ - des_ip[7][byte(right, 3)]; - leftt = (ulong32)(tmp >> 32); - right = (ulong32)(tmp & 0xFFFFFFFFUL); - } -#endif - - for (cur_round = 0; cur_round < 8; cur_round++) { - work = RORc(right, 4) ^ *keys++; - leftt ^= SP7[work & 0x3fL] - ^ SP5[(work >> 8) & 0x3fL] - ^ SP3[(work >> 16) & 0x3fL] - ^ SP1[(work >> 24) & 0x3fL]; - work = right ^ *keys++; - leftt ^= SP8[ work & 0x3fL] - ^ SP6[(work >> 8) & 0x3fL] - ^ SP4[(work >> 16) & 0x3fL] - ^ SP2[(work >> 24) & 0x3fL]; - - work = RORc(leftt, 4) ^ *keys++; - right ^= SP7[ work & 0x3fL] - ^ SP5[(work >> 8) & 0x3fL] - ^ SP3[(work >> 16) & 0x3fL] - ^ SP1[(work >> 24) & 0x3fL]; - work = leftt ^ *keys++; - right ^= SP8[ work & 0x3fL] - ^ SP6[(work >> 8) & 0x3fL] - ^ SP4[(work >> 16) & 0x3fL] - ^ SP2[(work >> 24) & 0x3fL]; - } - -#ifdef LTC_SMALL_CODE - right = RORc(right, 1); - work = (leftt ^ right) & 0xaaaaaaaaL; - leftt ^= work; - right ^= work; - leftt = RORc(leftt, 1); - work = ((leftt >> 8) ^ right) & 0x00ff00ffL; - right ^= work; - leftt ^= (work << 8); - /* -- */ - work = ((leftt >> 2) ^ right) & 0x33333333L; - right ^= work; - leftt ^= (work << 2); - work = ((right >> 16) ^ leftt) & 0x0000ffffL; - leftt ^= work; - right ^= (work << 16); - work = ((right >> 4) ^ leftt) & 0x0f0f0f0fL; - leftt ^= work; - right ^= (work << 4); -#else - { - ulong64 tmp; - tmp = des_fp[0][byte(leftt, 0)] ^ - des_fp[1][byte(leftt, 1)] ^ - des_fp[2][byte(leftt, 2)] ^ - des_fp[3][byte(leftt, 3)] ^ - des_fp[4][byte(right, 0)] ^ - des_fp[5][byte(right, 1)] ^ - des_fp[6][byte(right, 2)] ^ - des_fp[7][byte(right, 3)]; - leftt = (ulong32)(tmp >> 32); - right = (ulong32)(tmp & 0xFFFFFFFFUL); - } -#endif - - block[0] = right; - block[1] = leftt; -} - -#ifdef LTC_CLEAN_STACK -static void desfunc(ulong32 *block, const ulong32 *keys) -{ - _desfunc(block, keys); - burn_stack(sizeof(ulong32) * 4 + sizeof(int)); -} -#endif - - /** - Initialize the LTC_DES block cipher - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful - */ -int des_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - if (num_rounds != 0 && num_rounds != 16) { - return CRYPT_INVALID_ROUNDS; - } - - if (keylen != 8) { - return CRYPT_INVALID_KEYSIZE; - } - - deskey(key, EN0, skey->des.ek); - deskey(key, DE1, skey->des.dk); - - return CRYPT_OK; -} - - /** - Initialize the 3LTC_DES-EDE block cipher - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful - */ -int des3_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - if(num_rounds != 0 && num_rounds != 16) { - return CRYPT_INVALID_ROUNDS; - } - - if (keylen != 24 && keylen != 16) { - return CRYPT_INVALID_KEYSIZE; - } - - deskey(key, EN0, skey->des3.ek[0]); - deskey(key+8, DE1, skey->des3.ek[1]); - if (keylen == 24) { - deskey(key+16, EN0, skey->des3.ek[2]); - } else { - /* two-key 3DES: K3=K1 */ - deskey(key, EN0, skey->des3.ek[2]); - } - - deskey(key, DE1, skey->des3.dk[2]); - deskey(key+8, EN0, skey->des3.dk[1]); - if (keylen == 24) { - deskey(key+16, DE1, skey->des3.dk[0]); - } else { - /* two-key 3DES: K3=K1 */ - deskey(key, DE1, skey->des3.dk[0]); - } - - return CRYPT_OK; -} - -/** - Encrypts a block of text with LTC_DES - @param pt The input plaintext (8 bytes) - @param ct The output ciphertext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int des_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - ulong32 work[2]; - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - LOAD32H(work[0], pt+0); - LOAD32H(work[1], pt+4); - desfunc(work, skey->des.ek); - STORE32H(work[0],ct+0); - STORE32H(work[1],ct+4); - return CRYPT_OK; -} - -/** - Decrypts a block of text with LTC_DES - @param ct The input ciphertext (8 bytes) - @param pt The output plaintext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int des_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - ulong32 work[2]; - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - LOAD32H(work[0], ct+0); - LOAD32H(work[1], ct+4); - desfunc(work, skey->des.dk); - STORE32H(work[0],pt+0); - STORE32H(work[1],pt+4); - return CRYPT_OK; -} - -/** - Encrypts a block of text with 3LTC_DES-EDE - @param pt The input plaintext (8 bytes) - @param ct The output ciphertext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int des3_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - ulong32 work[2]; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - LOAD32H(work[0], pt+0); - LOAD32H(work[1], pt+4); - desfunc(work, skey->des3.ek[0]); - desfunc(work, skey->des3.ek[1]); - desfunc(work, skey->des3.ek[2]); - STORE32H(work[0],ct+0); - STORE32H(work[1],ct+4); - return CRYPT_OK; -} - -/** - Decrypts a block of text with 3LTC_DES-EDE - @param ct The input ciphertext (8 bytes) - @param pt The output plaintext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int des3_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - ulong32 work[2]; - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - LOAD32H(work[0], ct+0); - LOAD32H(work[1], ct+4); - desfunc(work, skey->des3.dk[0]); - desfunc(work, skey->des3.dk[1]); - desfunc(work, skey->des3.dk[2]); - STORE32H(work[0],pt+0); - STORE32H(work[1],pt+4); - return CRYPT_OK; -} - -/** - Performs a self-test of the LTC_DES block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int des_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - int err; - static const struct des_test_case { - int num, mode; /* mode 1 = encrypt */ - unsigned char key[8], txt[8], out[8]; - } cases[] = { - { 1, 1, { 0x10, 0x31, 0x6E, 0x02, 0x8C, 0x8F, 0x3B, 0x4A }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x82, 0xDC, 0xBA, 0xFB, 0xDE, 0xAB, 0x66, 0x02 } }, - { 2, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x95, 0xF8, 0xA5, 0xE5, 0xDD, 0x31, 0xD9, 0x00 }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, - { 3, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0xDD, 0x7F, 0x12, 0x1C, 0xA5, 0x01, 0x56, 0x19 }, - { 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, - { 4, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x2E, 0x86, 0x53, 0x10, 0x4F, 0x38, 0x34, 0xEA }, - { 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, - { 5, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x4B, 0xD3, 0x88, 0xFF, 0x6C, 0xD8, 0x1D, 0x4F }, - { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, - { 6, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x20, 0xB9, 0xE7, 0x67, 0xB2, 0xFB, 0x14, 0x56 }, - { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, - { 7, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x55, 0x57, 0x93, 0x80, 0xD7, 0x71, 0x38, 0xEF }, - { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, - { 8, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x6C, 0xC5, 0xDE, 0xFA, 0xAF, 0x04, 0x51, 0x2F }, - { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, - { 9, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x0D, 0x9F, 0x27, 0x9B, 0xA5, 0xD8, 0x72, 0x60 }, - { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, - {10, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0xD9, 0x03, 0x1B, 0x02, 0x71, 0xBD, 0x5A, 0x0A }, - { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, - - { 1, 0, { 0x10, 0x31, 0x6E, 0x02, 0x8C, 0x8F, 0x3B, 0x4A }, - { 0x82, 0xDC, 0xBA, 0xFB, 0xDE, 0xAB, 0x66, 0x02 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, - { 2, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x95, 0xF8, 0xA5, 0xE5, 0xDD, 0x31, 0xD9, 0x00 } }, - { 3, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xDD, 0x7F, 0x12, 0x1C, 0xA5, 0x01, 0x56, 0x19 } }, - { 4, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x2E, 0x86, 0x53, 0x10, 0x4F, 0x38, 0x34, 0xEA } }, - { 5, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x4B, 0xD3, 0x88, 0xFF, 0x6C, 0xD8, 0x1D, 0x4F } }, - { 6, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x20, 0xB9, 0xE7, 0x67, 0xB2, 0xFB, 0x14, 0x56 } }, - { 7, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x55, 0x57, 0x93, 0x80, 0xD7, 0x71, 0x38, 0xEF } }, - { 8, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x6C, 0xC5, 0xDE, 0xFA, 0xAF, 0x04, 0x51, 0x2F } }, - { 9, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x0D, 0x9F, 0x27, 0x9B, 0xA5, 0xD8, 0x72, 0x60 } }, - {10, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xD9, 0x03, 0x1B, 0x02, 0x71, 0xBD, 0x5A, 0x0A } }, - -#ifdef LTC_TEST_EXT - { 0+11, 0, { 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x95, 0xA8, 0xD7, 0x28, 0x13, 0xDA, 0xA9, 0x4D } }, - { 1+11, 0, { 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x0E, 0xEC, 0x14, 0x87, 0xDD, 0x8C, 0x26, 0xD5 } }, - { 2+11, 0, { 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x7A, 0xD1, 0x6F, 0xFB, 0x79, 0xC4, 0x59, 0x26 } }, - { 3+11, 0, { 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xD3, 0x74, 0x62, 0x94, 0xCA, 0x6A, 0x6C, 0xF3 } }, - { 4+11, 0, { 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x80, 0x9F, 0x5F, 0x87, 0x3C, 0x1F, 0xD7, 0x61 } }, - { 5+11, 0, { 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xC0, 0x2F, 0xAF, 0xFE, 0xC9, 0x89, 0xD1, 0xFC } }, - { 6+11, 0, { 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x46, 0x15, 0xAA, 0x1D, 0x33, 0xE7, 0x2F, 0x10 } }, - { 7+11, 0, { 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x20, 0x55, 0x12, 0x33, 0x50, 0xC0, 0x08, 0x58 } }, - { 8+11, 0, { 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xDF, 0x3B, 0x99, 0xD6, 0x57, 0x73, 0x97, 0xC8 } }, - { 9+11, 0, { 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x31, 0xFE, 0x17, 0x36, 0x9B, 0x52, 0x88, 0xC9 } }, - {10+11, 0, { 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xDF, 0xDD, 0x3C, 0xC6, 0x4D, 0xAE, 0x16, 0x42 } }, - {11+11, 0, { 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x17, 0x8C, 0x83, 0xCE, 0x2B, 0x39, 0x9D, 0x94 } }, - {12+11, 0, { 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x50, 0xF6, 0x36, 0x32, 0x4A, 0x9B, 0x7F, 0x80 } }, - {13+11, 0, { 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xA8, 0x46, 0x8E, 0xE3, 0xBC, 0x18, 0xF0, 0x6D } }, - {14+11, 0, { 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xA2, 0xDC, 0x9E, 0x92, 0xFD, 0x3C, 0xDE, 0x92 } }, - {15+11, 0, { 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xCA, 0xC0, 0x9F, 0x79, 0x7D, 0x03, 0x12, 0x87 } }, - {16+11, 0, { 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x90, 0xBA, 0x68, 0x0B, 0x22, 0xAE, 0xB5, 0x25 } }, - {17+11, 0, { 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xCE, 0x7A, 0x24, 0xF3, 0x50, 0xE2, 0x80, 0xB6 } }, - {18+11, 0, { 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x88, 0x2B, 0xFF, 0x0A, 0xA0, 0x1A, 0x0B, 0x87 } }, - {19+11, 0, { 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x25, 0x61, 0x02, 0x88, 0x92, 0x45, 0x11, 0xC2 } }, - {20+11, 0, { 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xC7, 0x15, 0x16, 0xC2, 0x9C, 0x75, 0xD1, 0x70 } }, - {21+11, 0, { 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x51, 0x99, 0xC2, 0x9A, 0x52, 0xC9, 0xF0, 0x59 } }, - {22+11, 0, { 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xC2, 0x2F, 0x0A, 0x29, 0x4A, 0x71, 0xF2, 0x9F } }, - {23+11, 0, { 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xEE, 0x37, 0x14, 0x83, 0x71, 0x4C, 0x02, 0xEA } }, - {24+11, 0, { 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xA8, 0x1F, 0xBD, 0x44, 0x8F, 0x9E, 0x52, 0x2F } }, - {25+11, 0, { 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x4F, 0x64, 0x4C, 0x92, 0xE1, 0x92, 0xDF, 0xED } }, - {26+11, 0, { 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x1A, 0xFA, 0x9A, 0x66, 0xA6, 0xDF, 0x92, 0xAE } }, - {27+11, 0, { 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xB3, 0xC1, 0xCC, 0x71, 0x5C, 0xB8, 0x79, 0xD8 } }, - {28+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x19, 0xD0, 0x32, 0xE6, 0x4A, 0xB0, 0xBD, 0x8B } }, - {29+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x3C, 0xFA, 0xA7, 0xA7, 0xDC, 0x87, 0x20, 0xDC } }, - {30+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xB7, 0x26, 0x5F, 0x7F, 0x44, 0x7A, 0xC6, 0xF3 } }, - {31+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x9D, 0xB7, 0x3B, 0x3C, 0x0D, 0x16, 0x3F, 0x54 } }, - {32+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x81, 0x81, 0xB6, 0x5B, 0xAB, 0xF4, 0xA9, 0x75 } }, - {33+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x93, 0xC9, 0xB6, 0x40, 0x42, 0xEA, 0xA2, 0x40 } }, - {34+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x55, 0x70, 0x53, 0x08, 0x29, 0x70, 0x55, 0x92 } }, - {35+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x86, 0x38, 0x80, 0x9E, 0x87, 0x87, 0x87, 0xA0 } }, - {36+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x41, 0xB9, 0xA7, 0x9A, 0xF7, 0x9A, 0xC2, 0x08 } }, - {37+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x7A, 0x9B, 0xE4, 0x2F, 0x20, 0x09, 0xA8, 0x92 } }, - {38+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x29, 0x03, 0x8D, 0x56, 0xBA, 0x6D, 0x27, 0x45 } }, - {39+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x54, 0x95, 0xC6, 0xAB, 0xF1, 0xE5, 0xDF, 0x51 } }, - {40+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xAE, 0x13, 0xDB, 0xD5, 0x61, 0x48, 0x89, 0x33 } }, - {41+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x02, 0x4D, 0x1F, 0xFA, 0x89, 0x04, 0xE3, 0x89 } }, - {42+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xD1, 0x39, 0x97, 0x12, 0xF9, 0x9B, 0xF0, 0x2E } }, - {43+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x14, 0xC1, 0xD7, 0xC1, 0xCF, 0xFE, 0xC7, 0x9E } }, - {44+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x1D, 0xE5, 0x27, 0x9D, 0xAE, 0x3B, 0xED, 0x6F } }, - {45+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xE9, 0x41, 0xA3, 0x3F, 0x85, 0x50, 0x13, 0x03 } }, - {46+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xDA, 0x99, 0xDB, 0xBC, 0x9A, 0x03, 0xF3, 0x79 } }, - {47+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xB7, 0xFC, 0x92, 0xF9, 0x1D, 0x8E, 0x92, 0xE9 } }, - {48+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xAE, 0x8E, 0x5C, 0xAA, 0x3C, 0xA0, 0x4E, 0x85 } }, - {49+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x9C, 0xC6, 0x2D, 0xF4, 0x3B, 0x6E, 0xED, 0x74 } }, - {50+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xD8, 0x63, 0xDB, 0xB5, 0xC5, 0x9A, 0x91, 0xA0 } }, - {51+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xA1, 0xAB, 0x21, 0x90, 0x54, 0x5B, 0x91, 0xD7 } }, - {52+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x08, 0x75, 0x04, 0x1E, 0x64, 0xC5, 0x70, 0xF7 } }, - {53+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x5A, 0x59, 0x45, 0x28, 0xBE, 0xBE, 0xF1, 0xCC } }, - {54+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xFC, 0xDB, 0x32, 0x91, 0xDE, 0x21, 0xF0, 0xC0 } }, - {55+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x86, 0x9E, 0xFD, 0x7F, 0x9F, 0x26, 0x5A, 0x09 } }, -#endif /* LTC_TEST_EXT */ - - /*** more test cases you could add if you are not convinced (the above test cases aren't really too good): - - key plaintext ciphertext - 0000000000000000 0000000000000000 8CA64DE9C1B123A7 - FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF 7359B2163E4EDC58 - 3000000000000000 1000000000000001 958E6E627A05557B - 1111111111111111 1111111111111111 F40379AB9E0EC533 - 0123456789ABCDEF 1111111111111111 17668DFC7292532D - 1111111111111111 0123456789ABCDEF 8A5AE1F81AB8F2DD - 0000000000000000 0000000000000000 8CA64DE9C1B123A7 - FEDCBA9876543210 0123456789ABCDEF ED39D950FA74BCC4 - 7CA110454A1A6E57 01A1D6D039776742 690F5B0D9A26939B - 0131D9619DC1376E 5CD54CA83DEF57DA 7A389D10354BD271 - 07A1133E4A0B2686 0248D43806F67172 868EBB51CAB4599A - 3849674C2602319E 51454B582DDF440A 7178876E01F19B2A - 04B915BA43FEB5B6 42FD443059577FA2 AF37FB421F8C4095 - 0113B970FD34F2CE 059B5E0851CF143A 86A560F10EC6D85B - 0170F175468FB5E6 0756D8E0774761D2 0CD3DA020021DC09 - 43297FAD38E373FE 762514B829BF486A EA676B2CB7DB2B7A - 07A7137045DA2A16 3BDD119049372802 DFD64A815CAF1A0F - 04689104C2FD3B2F 26955F6835AF609A 5C513C9C4886C088 - 37D06BB516CB7546 164D5E404F275232 0A2AEEAE3FF4AB77 - 1F08260D1AC2465E 6B056E18759F5CCA EF1BF03E5DFA575A - 584023641ABA6176 004BD6EF09176062 88BF0DB6D70DEE56 - 025816164629B007 480D39006EE762F2 A1F9915541020B56 - 49793EBC79B3258F 437540C8698F3CFA 6FBF1CAFCFFD0556 - 4FB05E1515AB73A7 072D43A077075292 2F22E49BAB7CA1AC - 49E95D6D4CA229BF 02FE55778117F12A 5A6B612CC26CCE4A - 018310DC409B26D6 1D9D5C5018F728C2 5F4C038ED12B2E41 - 1C587F1C13924FEF 305532286D6F295A 63FAC0D034D9F793 - 0101010101010101 0123456789ABCDEF 617B3A0CE8F07100 - 1F1F1F1F0E0E0E0E 0123456789ABCDEF DB958605F8C8C606 - E0FEE0FEF1FEF1FE 0123456789ABCDEF EDBFD1C66C29CCC7 - 0000000000000000 FFFFFFFFFFFFFFFF 355550B2150E2451 - FFFFFFFFFFFFFFFF 0000000000000000 CAAAAF4DEAF1DBAE - 0123456789ABCDEF 0000000000000000 D5D44FF720683D0D - FEDCBA9876543210 FFFFFFFFFFFFFFFF 2A2BB008DF97C2F2 - - http://www.ecs.soton.ac.uk/~prw99r/ez438/vectors.txt - ***/ - }; - int i, y; - unsigned char tmp[8]; - symmetric_key des; - - for(i=0; i < (int)(sizeof(cases)/sizeof(cases[0])); i++) - { - if ((err = des_setup(cases[i].key, 8, 0, &des)) != CRYPT_OK) { - return err; - } - if (cases[i].mode != 0) { - des_ecb_encrypt(cases[i].txt, tmp, &des); - } else { - des_ecb_decrypt(cases[i].txt, tmp, &des); - } - - if (compare_testvector(cases[i].out, sizeof(tmp), tmp, sizeof(tmp), "DES", i) != 0) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ - for (y = 0; y < 8; y++) tmp[y] = 0; - for (y = 0; y < 1000; y++) des_ecb_encrypt(tmp, tmp, &des); - for (y = 0; y < 1000; y++) des_ecb_decrypt(tmp, tmp, &des); - for (y = 0; y < 8; y++) if (tmp[y] != 0) return CRYPT_FAIL_TESTVECTOR; - } - - return CRYPT_OK; - #endif -} - -int des3_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - unsigned char key[24], pt[8], ct[8], tmp[8]; - symmetric_key skey; - int x, err; - - if ((err = des_test()) != CRYPT_OK) { - return err; - } - - for (x = 0; x < 8; x++) { - pt[x] = x; - } - - for (x = 0; x < 24; x++) { - key[x] = x; - } - - if ((err = des3_setup(key, 24, 0, &skey)) != CRYPT_OK) { - return err; - } - - des3_ecb_encrypt(pt, ct, &skey); - des3_ecb_decrypt(ct, tmp, &skey); - - if (compare_testvector(pt, 8, tmp, 8, "3DES", 0) != 0) { - return CRYPT_FAIL_TESTVECTOR; - } - - return CRYPT_OK; - #endif -} - -/** Terminate the context - @param skey The scheduled key -*/ -void des_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -/** Terminate the context - @param skey The scheduled key -*/ -void des3_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int des_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if(*keysize < 8) { - return CRYPT_INVALID_KEYSIZE; - } - *keysize = 8; - return CRYPT_OK; -} - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int des3_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if (*keysize < 16) - return CRYPT_INVALID_KEYSIZE; - if (*keysize < 24) { - *keysize = 16; - return CRYPT_OK; - } - *keysize = 24; - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/kasumi.c b/src/libtomcrypt/src/ciphers/kasumi.c deleted file mode 100644 index 29dfb1768e..0000000000 --- a/src/libtomcrypt/src/ciphers/kasumi.c +++ /dev/null @@ -1,318 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file kasumi.c - Implementation of the 3GPP Kasumi block cipher - Derived from the 3GPP standard source code -*/ - -#include "tomcrypt.h" - -#ifdef LTC_KASUMI - -typedef unsigned u16; - -#define ROL16(x, y) ((((x)<<(y)) | ((x)>>(16-(y)))) & 0xFFFF) - -const struct ltc_cipher_descriptor kasumi_desc = { - "kasumi", - 21, - 16, 16, 8, 8, - &kasumi_setup, - &kasumi_ecb_encrypt, - &kasumi_ecb_decrypt, - &kasumi_test, - &kasumi_done, - &kasumi_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -static u16 FI( u16 in, u16 subkey ) -{ - u16 nine, seven; - static const u16 S7[128] = { - 54, 50, 62, 56, 22, 34, 94, 96, 38, 6, 63, 93, 2, 18,123, 33, - 55,113, 39,114, 21, 67, 65, 12, 47, 73, 46, 27, 25,111,124, 81, - 53, 9,121, 79, 52, 60, 58, 48,101,127, 40,120,104, 70, 71, 43, - 20,122, 72, 61, 23,109, 13,100, 77, 1, 16, 7, 82, 10,105, 98, - 117,116, 76, 11, 89,106, 0,125,118, 99, 86, 69, 30, 57,126, 87, - 112, 51, 17, 5, 95, 14, 90, 84, 91, 8, 35,103, 32, 97, 28, 66, - 102, 31, 26, 45, 75, 4, 85, 92, 37, 74, 80, 49, 68, 29,115, 44, - 64,107,108, 24,110, 83, 36, 78, 42, 19, 15, 41, 88,119, 59, 3 }; - static const u16 S9[512] = { - 167,239,161,379,391,334, 9,338, 38,226, 48,358,452,385, 90,397, - 183,253,147,331,415,340, 51,362,306,500,262, 82,216,159,356,177, - 175,241,489, 37,206, 17, 0,333, 44,254,378, 58,143,220, 81,400, - 95, 3,315,245, 54,235,218,405,472,264,172,494,371,290,399, 76, - 165,197,395,121,257,480,423,212,240, 28,462,176,406,507,288,223, - 501,407,249,265, 89,186,221,428,164, 74,440,196,458,421,350,163, - 232,158,134,354, 13,250,491,142,191, 69,193,425,152,227,366,135, - 344,300,276,242,437,320,113,278, 11,243, 87,317, 36, 93,496, 27, - 487,446,482, 41, 68,156,457,131,326,403,339, 20, 39,115,442,124, - 475,384,508, 53,112,170,479,151,126,169, 73,268,279,321,168,364, - 363,292, 46,499,393,327,324, 24,456,267,157,460,488,426,309,229, - 439,506,208,271,349,401,434,236, 16,209,359, 52, 56,120,199,277, - 465,416,252,287,246, 6, 83,305,420,345,153,502, 65, 61,244,282, - 173,222,418, 67,386,368,261,101,476,291,195,430, 49, 79,166,330, - 280,383,373,128,382,408,155,495,367,388,274,107,459,417, 62,454, - 132,225,203,316,234, 14,301, 91,503,286,424,211,347,307,140,374, - 35,103,125,427, 19,214,453,146,498,314,444,230,256,329,198,285, - 50,116, 78,410, 10,205,510,171,231, 45,139,467, 29, 86,505, 32, - 72, 26,342,150,313,490,431,238,411,325,149,473, 40,119,174,355, - 185,233,389, 71,448,273,372, 55,110,178,322, 12,469,392,369,190, - 1,109,375,137,181, 88, 75,308,260,484, 98,272,370,275,412,111, - 336,318, 4,504,492,259,304, 77,337,435, 21,357,303,332,483, 18, - 47, 85, 25,497,474,289,100,269,296,478,270,106, 31,104,433, 84, - 414,486,394, 96, 99,154,511,148,413,361,409,255,162,215,302,201, - 266,351,343,144,441,365,108,298,251, 34,182,509,138,210,335,133, - 311,352,328,141,396,346,123,319,450,281,429,228,443,481, 92,404, - 485,422,248,297, 23,213,130,466, 22,217,283, 70,294,360,419,127, - 312,377, 7,468,194, 2,117,295,463,258,224,447,247,187, 80,398, - 284,353,105,390,299,471,470,184, 57,200,348, 63,204,188, 33,451, - 97, 30,310,219, 94,160,129,493, 64,179,263,102,189,207,114,402, - 438,477,387,122,192, 42,381, 5,145,118,180,449,293,323,136,380, - 43, 66, 60,455,341,445,202,432, 8,237, 15,376,436,464, 59,461}; - - /* The sixteen bit input is split into two unequal halves, * - * nine bits and seven bits - as is the subkey */ - - nine = (u16)(in>>7)&0x1FF; - seven = (u16)(in&0x7F); - - /* Now run the various operations */ - nine = (u16)(S9[nine] ^ seven); - seven = (u16)(S7[seven] ^ (nine & 0x7F)); - seven ^= (subkey>>9); - nine ^= (subkey&0x1FF); - nine = (u16)(S9[nine] ^ seven); - seven = (u16)(S7[seven] ^ (nine & 0x7F)); - return (u16)(seven<<9) + nine; -} - -static ulong32 FO( ulong32 in, int round_no, symmetric_key *key) -{ - u16 left, right; - - /* Split the input into two 16-bit words */ - left = (u16)(in>>16); - right = (u16) in&0xFFFF; - - /* Now apply the same basic transformation three times */ - left ^= key->kasumi.KOi1[round_no]; - left = FI( left, key->kasumi.KIi1[round_no] ); - left ^= right; - - right ^= key->kasumi.KOi2[round_no]; - right = FI( right, key->kasumi.KIi2[round_no] ); - right ^= left; - - left ^= key->kasumi.KOi3[round_no]; - left = FI( left, key->kasumi.KIi3[round_no] ); - left ^= right; - - return (((ulong32)right)<<16)+left; -} - -static ulong32 FL( ulong32 in, int round_no, symmetric_key *key ) -{ - u16 l, r, a, b; - /* split out the left and right halves */ - l = (u16)(in>>16); - r = (u16)(in)&0xFFFF; - /* do the FL() operations */ - a = (u16) (l & key->kasumi.KLi1[round_no]); - r ^= ROL16(a,1); - b = (u16)(r | key->kasumi.KLi2[round_no]); - l ^= ROL16(b,1); - /* put the two halves back together */ - - return (((ulong32)l)<<16) + r; -} - -int kasumi_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - ulong32 left, right, temp; - int n; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - - LOAD32H(left, pt); - LOAD32H(right, pt+4); - - for (n = 0; n <= 7; ) { - temp = FL(left, n, skey); - temp = FO(temp, n++, skey); - right ^= temp; - temp = FO(right, n, skey); - temp = FL(temp, n++, skey); - left ^= temp; - } - - STORE32H(left, ct); - STORE32H(right, ct+4); - - return CRYPT_OK; -} - -int kasumi_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - ulong32 left, right, temp; - int n; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - - LOAD32H(left, ct); - LOAD32H(right, ct+4); - - for (n = 7; n >= 0; ) { - temp = FO(right, n, skey); - temp = FL(temp, n--, skey); - left ^= temp; - temp = FL(left, n, skey); - temp = FO(temp, n--, skey); - right ^= temp; - } - - STORE32H(left, pt); - STORE32H(right, pt+4); - - return CRYPT_OK; -} - -int kasumi_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - static const u16 C[8] = { 0x0123,0x4567,0x89AB,0xCDEF, 0xFEDC,0xBA98,0x7654,0x3210 }; - u16 ukey[8], Kprime[8]; - int n; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - if (keylen != 16) { - return CRYPT_INVALID_KEYSIZE; - } - - if (num_rounds != 0 && num_rounds != 8) { - return CRYPT_INVALID_ROUNDS; - } - - /* Start by ensuring the subkeys are endian correct on a 16-bit basis */ - for (n = 0; n < 8; n++ ) { - ukey[n] = (((u16)key[2*n]) << 8) | key[2*n+1]; - } - - /* Now build the K'[] keys */ - for (n = 0; n < 8; n++) { - Kprime[n] = ukey[n] ^ C[n]; - } - - /* Finally construct the various sub keys */ - for(n = 0; n < 8; n++) { - skey->kasumi.KLi1[n] = ROL16(ukey[n],1); - skey->kasumi.KLi2[n] = Kprime[(n+2)&0x7]; - skey->kasumi.KOi1[n] = ROL16(ukey[(n+1)&0x7],5); - skey->kasumi.KOi2[n] = ROL16(ukey[(n+5)&0x7],8); - skey->kasumi.KOi3[n] = ROL16(ukey[(n+6)&0x7],13); - skey->kasumi.KIi1[n] = Kprime[(n+4)&0x7]; - skey->kasumi.KIi2[n] = Kprime[(n+3)&0x7]; - skey->kasumi.KIi3[n] = Kprime[(n+7)&0x7]; - } - - return CRYPT_OK; -} - -void kasumi_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -int kasumi_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if (*keysize >= 16) { - *keysize = 16; - return CRYPT_OK; - } else { - return CRYPT_INVALID_KEYSIZE; - } -} - -int kasumi_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - unsigned char key[16], pt[8], ct[8]; - } tests[] = { - -{ - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x4B, 0x58, 0xA7, 0x71, 0xAF, 0xC7, 0xE5, 0xE8 } -}, - -{ - { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x7E, 0xEF, 0x11, 0x3C, 0x95, 0xBB, 0x5A, 0x77 } -}, - -{ - { 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x5F, 0x14, 0x06, 0x86, 0xD7, 0xAD, 0x5A, 0x39 }, -}, - -{ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x2E, 0x14, 0x91, 0xCF, 0x70, 0xAA, 0x46, 0x5D } -}, - -{ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xB5, 0x45, 0x86, 0xF4, 0xAB, 0x9A, 0xE5, 0x46 } -}, - -}; - unsigned char buf[2][8]; - symmetric_key key; - int err, x; - - for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - if ((err = kasumi_setup(tests[x].key, 16, 0, &key)) != CRYPT_OK) { - return err; - } - if ((err = kasumi_ecb_encrypt(tests[x].pt, buf[0], &key)) != CRYPT_OK) { - return err; - } - if ((err = kasumi_ecb_decrypt(tests[x].ct, buf[1], &key)) != CRYPT_OK) { - return err; - } - if (compare_testvector(buf[1], 8, tests[x].pt, 8, "Kasumi Decrypt", x) || - compare_testvector(buf[0], 8, tests[x].ct, 8, "Kasumi Encrypt", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/khazad.c b/src/libtomcrypt/src/ciphers/khazad.c deleted file mode 100644 index d856650ed3..0000000000 --- a/src/libtomcrypt/src/ciphers/khazad.c +++ /dev/null @@ -1,855 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file khazad.c - Khazad implementation derived from public domain source - Authors: Paulo S.L.M. Barreto and Vincent Rijmen. -*/ - -#ifdef LTC_KHAZAD - -const struct ltc_cipher_descriptor khazad_desc = { - "khazad", - 18, - 16, 16, 8, 8, - &khazad_setup, - &khazad_ecb_encrypt, - &khazad_ecb_decrypt, - &khazad_test, - &khazad_done, - &khazad_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -#define R 8 -#define KEYSIZE 128 -#define KEYSIZEB (KEYSIZE/8) -#define BLOCKSIZE 64 -#define BLOCKSIZEB (BLOCKSIZE/8) - -static const ulong64 T0[256] = { - CONST64(0xbad3d268bbb96a01), CONST64(0x54fc4d19e59a66b1), CONST64(0x2f71bc93e26514cd), CONST64(0x749ccdb925871b51), - CONST64(0x53f55102f7a257a4), CONST64(0xd3686bb8d0d6be03), CONST64(0xd26b6fbdd6deb504), CONST64(0x4dd72964b35285fe), - CONST64(0x50f05d0dfdba4aad), CONST64(0xace98a26cf09e063), CONST64(0x8d8a0e83091c9684), CONST64(0xbfdcc679a5914d1a), - CONST64(0x7090ddad3da7374d), CONST64(0x52f65507f1aa5ca3), CONST64(0x9ab352c87ba417e1), CONST64(0x4cd42d61b55a8ef9), - CONST64(0xea238f65460320ac), CONST64(0xd56273a6c4e68411), CONST64(0x97a466f155cc68c2), CONST64(0xd16e63b2dcc6a80d), - CONST64(0x3355ccffaa85d099), CONST64(0x51f35908fbb241aa), CONST64(0x5bed712ac7e20f9c), CONST64(0xa6f7a204f359ae55), - CONST64(0xde7f5f81febec120), CONST64(0x48d83d75ad7aa2e5), CONST64(0xa8e59a32d729cc7f), CONST64(0x99b65ec771bc0ae8), - CONST64(0xdb704b90e096e63b), CONST64(0x3256c8faac8ddb9e), CONST64(0xb7c4e65195d11522), CONST64(0xfc19d72b32b3aace), - CONST64(0xe338ab48704b7393), CONST64(0x9ebf42dc63843bfd), CONST64(0x91ae7eef41fc52d0), CONST64(0x9bb056cd7dac1ce6), - CONST64(0xe23baf4d76437894), CONST64(0xbbd0d66dbdb16106), CONST64(0x41c319589b32f1da), CONST64(0x6eb2a5cb7957e517), - CONST64(0xa5f2ae0bf941b35c), CONST64(0xcb400bc08016564b), CONST64(0x6bbdb1da677fc20c), CONST64(0x95a26efb59dc7ecc), - CONST64(0xa1febe1fe1619f40), CONST64(0xf308eb1810cbc3e3), CONST64(0xb1cefe4f81e12f30), CONST64(0x0206080a0c10160e), - CONST64(0xcc4917db922e675e), CONST64(0xc45137f3a26e3f66), CONST64(0x1d2774694ee8cf53), CONST64(0x143c504478a09c6c), - CONST64(0xc3582be8b0560e73), CONST64(0x63a591f2573f9a34), CONST64(0xda734f95e69eed3c), CONST64(0x5de76934d3d2358e), - CONST64(0x5fe1613edfc22380), CONST64(0xdc79578bf2aed72e), CONST64(0x7d87e99413cf486e), CONST64(0xcd4a13de94266c59), - CONST64(0x7f81e19e1fdf5e60), CONST64(0x5aee752fc1ea049b), CONST64(0x6cb4adc17547f319), CONST64(0x5ce46d31d5da3e89), - CONST64(0xf704fb0c08ebefff), CONST64(0x266a98bed42d47f2), CONST64(0xff1cdb2438abb7c7), CONST64(0xed2a937e543b11b9), - CONST64(0xe825876f4a1336a2), CONST64(0x9dba4ed3699c26f4), CONST64(0x6fb1a1ce7f5fee10), CONST64(0x8e8f028c03048b8d), - CONST64(0x192b647d56c8e34f), CONST64(0xa0fdba1ae7699447), CONST64(0xf00de7171ad3deea), CONST64(0x89861e97113cba98), - CONST64(0x0f113c332278692d), CONST64(0x07091c1b12383115), CONST64(0xafec8629c511fd6a), CONST64(0xfb10cb30208b9bdb), - CONST64(0x0818202830405838), CONST64(0x153f54417ea8976b), CONST64(0x0d1734392e687f23), CONST64(0x040c101418202c1c), - CONST64(0x0103040506080b07), CONST64(0x64ac8de94507ab21), CONST64(0xdf7c5b84f8b6ca27), CONST64(0x769ac5b329970d5f), - CONST64(0x798bf9800bef6472), CONST64(0xdd7a538ef4a6dc29), CONST64(0x3d47f4c98ef5b2b3), CONST64(0x163a584e74b08a62), - CONST64(0x3f41fcc382e5a4bd), CONST64(0x3759dcebb2a5fc85), CONST64(0x6db7a9c4734ff81e), CONST64(0x3848e0d890dd95a8), - CONST64(0xb9d6de67b1a17708), CONST64(0x7395d1a237bf2a44), CONST64(0xe926836a4c1b3da5), CONST64(0x355fd4e1beb5ea8b), - CONST64(0x55ff491ce3926db6), CONST64(0x7193d9a83baf3c4a), CONST64(0x7b8df18a07ff727c), CONST64(0x8c890a860f149d83), - CONST64(0x7296d5a731b72143), CONST64(0x88851a921734b19f), CONST64(0xf607ff090ee3e4f8), CONST64(0x2a7ea882fc4d33d6), - CONST64(0x3e42f8c684edafba), CONST64(0x5ee2653bd9ca2887), CONST64(0x27699cbbd2254cf5), CONST64(0x46ca0543890ac0cf), - CONST64(0x0c14303c28607424), CONST64(0x65af89ec430fa026), CONST64(0x68b8bdd56d67df05), CONST64(0x61a399f85b2f8c3a), - CONST64(0x03050c0f0a181d09), CONST64(0xc15e23e2bc46187d), CONST64(0x57f94116ef827bb8), CONST64(0xd6677fa9cefe9918), - CONST64(0xd976439aec86f035), CONST64(0x58e87d25cdfa1295), CONST64(0xd875479fea8efb32), CONST64(0x66aa85e34917bd2f), - CONST64(0xd7647bacc8f6921f), CONST64(0x3a4ee8d29ccd83a6), CONST64(0xc84507cf8a0e4b42), CONST64(0x3c44f0cc88fdb9b4), - CONST64(0xfa13cf35268390dc), CONST64(0x96a762f453c463c5), CONST64(0xa7f4a601f551a552), CONST64(0x98b55ac277b401ef), - CONST64(0xec29977b52331abe), CONST64(0xb8d5da62b7a97c0f), CONST64(0xc7543bfca876226f), CONST64(0xaeef822cc319f66d), - CONST64(0x69bbb9d06b6fd402), CONST64(0x4bdd317aa762bfec), CONST64(0xabe0963ddd31d176), CONST64(0xa9e69e37d121c778), - CONST64(0x67a981e64f1fb628), CONST64(0x0a1e28223c504e36), CONST64(0x47c901468f02cbc8), CONST64(0xf20bef1d16c3c8e4), - CONST64(0xb5c2ee5b99c1032c), CONST64(0x226688aacc0d6bee), CONST64(0xe532b356647b4981), CONST64(0xee2f9f715e230cb0), - CONST64(0xbedfc27ca399461d), CONST64(0x2b7dac87fa4538d1), CONST64(0x819e3ebf217ce2a0), CONST64(0x1236485a6c90a67e), - CONST64(0x839836b52d6cf4ae), CONST64(0x1b2d6c775ad8f541), CONST64(0x0e1238362470622a), CONST64(0x23658cafca0560e9), - CONST64(0xf502f30604fbf9f1), CONST64(0x45cf094c8312ddc6), CONST64(0x216384a5c61576e7), CONST64(0xce4f1fd19e3e7150), - CONST64(0x49db3970ab72a9e2), CONST64(0x2c74b09ce87d09c4), CONST64(0xf916c33a2c9b8dd5), CONST64(0xe637bf596e635488), - CONST64(0xb6c7e25493d91e25), CONST64(0x2878a088f05d25d8), CONST64(0x17395c4b72b88165), CONST64(0x829b32b02b64ffa9), - CONST64(0x1a2e68725cd0fe46), CONST64(0x8b80169d1d2cac96), CONST64(0xfe1fdf213ea3bcc0), CONST64(0x8a8312981b24a791), - CONST64(0x091b242d3648533f), CONST64(0xc94603ca8c064045), CONST64(0x879426a1354cd8b2), CONST64(0x4ed2256bb94a98f7), - CONST64(0xe13ea3427c5b659d), CONST64(0x2e72b896e46d1fca), CONST64(0xe431b75362734286), CONST64(0xe03da7477a536e9a), - CONST64(0xeb208b60400b2bab), CONST64(0x90ad7aea47f459d7), CONST64(0xa4f1aa0eff49b85b), CONST64(0x1e22786644f0d25a), - CONST64(0x85922eab395ccebc), CONST64(0x60a09dfd5d27873d), CONST64(0x0000000000000000), CONST64(0x256f94b1de355afb), - CONST64(0xf401f70302f3f2f6), CONST64(0xf10ee3121cdbd5ed), CONST64(0x94a16afe5fd475cb), CONST64(0x0b1d2c273a584531), - CONST64(0xe734bb5c686b5f8f), CONST64(0x759fc9bc238f1056), CONST64(0xef2c9b74582b07b7), CONST64(0x345cd0e4b8bde18c), - CONST64(0x3153c4f5a695c697), CONST64(0xd46177a3c2ee8f16), CONST64(0xd06d67b7dacea30a), CONST64(0x869722a43344d3b5), - CONST64(0x7e82e59b19d75567), CONST64(0xadea8e23c901eb64), CONST64(0xfd1ad32e34bba1c9), CONST64(0x297ba48df6552edf), - CONST64(0x3050c0f0a09dcd90), CONST64(0x3b4decd79ac588a1), CONST64(0x9fbc46d9658c30fa), CONST64(0xf815c73f2a9386d2), - CONST64(0xc6573ff9ae7e2968), CONST64(0x13354c5f6a98ad79), CONST64(0x060a181e14303a12), CONST64(0x050f14111e28271b), - CONST64(0xc55233f6a4663461), CONST64(0x113344556688bb77), CONST64(0x7799c1b62f9f0658), CONST64(0x7c84ed9115c74369), - CONST64(0x7a8ef58f01f7797b), CONST64(0x7888fd850de76f75), CONST64(0x365ad8eeb4adf782), CONST64(0x1c24706c48e0c454), - CONST64(0x394be4dd96d59eaf), CONST64(0x59eb7920cbf21992), CONST64(0x1828607850c0e848), CONST64(0x56fa4513e98a70bf), - CONST64(0xb3c8f6458df1393e), CONST64(0xb0cdfa4a87e92437), CONST64(0x246c90b4d83d51fc), CONST64(0x206080a0c01d7de0), - CONST64(0xb2cbf2408bf93239), CONST64(0x92ab72e04be44fd9), CONST64(0xa3f8b615ed71894e), CONST64(0xc05d27e7ba4e137a), - CONST64(0x44cc0d49851ad6c1), CONST64(0x62a695f751379133), CONST64(0x103040506080b070), CONST64(0xb4c1ea5e9fc9082b), - CONST64(0x84912aae3f54c5bb), CONST64(0x43c511529722e7d4), CONST64(0x93a876e54dec44de), CONST64(0xc25b2fedb65e0574), - CONST64(0x4ade357fa16ab4eb), CONST64(0xbddace73a9815b14), CONST64(0x8f8c0689050c808a), CONST64(0x2d77b499ee7502c3), - CONST64(0xbcd9ca76af895013), CONST64(0x9cb94ad66f942df3), CONST64(0x6abeb5df6177c90b), CONST64(0x40c01d5d9d3afadd), - CONST64(0xcf4c1bd498367a57), CONST64(0xa2fbb210eb798249), CONST64(0x809d3aba2774e9a7), CONST64(0x4fd1216ebf4293f0), - CONST64(0x1f217c6342f8d95d), CONST64(0xca430fc5861e5d4c), CONST64(0xaae39238db39da71), CONST64(0x42c61557912aecd3), -}; - -static const ulong64 T1[256] = { - CONST64(0xd3ba68d2b9bb016a), CONST64(0xfc54194d9ae5b166), CONST64(0x712f93bc65e2cd14), CONST64(0x9c74b9cd8725511b), - CONST64(0xf5530251a2f7a457), CONST64(0x68d3b86bd6d003be), CONST64(0x6bd2bd6fded604b5), CONST64(0xd74d642952b3fe85), - CONST64(0xf0500d5dbafdad4a), CONST64(0xe9ac268a09cf63e0), CONST64(0x8a8d830e1c098496), CONST64(0xdcbf79c691a51a4d), - CONST64(0x9070addda73d4d37), CONST64(0xf6520755aaf1a35c), CONST64(0xb39ac852a47be117), CONST64(0xd44c612d5ab5f98e), - CONST64(0x23ea658f0346ac20), CONST64(0x62d5a673e6c41184), CONST64(0xa497f166cc55c268), CONST64(0x6ed1b263c6dc0da8), - CONST64(0x5533ffcc85aa99d0), CONST64(0xf3510859b2fbaa41), CONST64(0xed5b2a71e2c79c0f), CONST64(0xf7a604a259f355ae), - CONST64(0x7fde815fbefe20c1), CONST64(0xd848753d7aade5a2), CONST64(0xe5a8329a29d77fcc), CONST64(0xb699c75ebc71e80a), - CONST64(0x70db904b96e03be6), CONST64(0x5632fac88dac9edb), CONST64(0xc4b751e6d1952215), CONST64(0x19fc2bd7b332ceaa), - CONST64(0x38e348ab4b709373), CONST64(0xbf9edc428463fd3b), CONST64(0xae91ef7efc41d052), CONST64(0xb09bcd56ac7de61c), - CONST64(0x3be24daf43769478), CONST64(0xd0bb6dd6b1bd0661), CONST64(0xc3415819329bdaf1), CONST64(0xb26ecba5577917e5), - CONST64(0xf2a50bae41f95cb3), CONST64(0x40cbc00b16804b56), CONST64(0xbd6bdab17f670cc2), CONST64(0xa295fb6edc59cc7e), - CONST64(0xfea11fbe61e1409f), CONST64(0x08f318ebcb10e3c3), CONST64(0xceb14ffee181302f), CONST64(0x06020a08100c0e16), - CONST64(0x49ccdb172e925e67), CONST64(0x51c4f3376ea2663f), CONST64(0x271d6974e84e53cf), CONST64(0x3c144450a0786c9c), - CONST64(0x58c3e82b56b0730e), CONST64(0xa563f2913f57349a), CONST64(0x73da954f9ee63ced), CONST64(0xe75d3469d2d38e35), - CONST64(0xe15f3e61c2df8023), CONST64(0x79dc8b57aef22ed7), CONST64(0x877d94e9cf136e48), CONST64(0x4acdde132694596c), - CONST64(0x817f9ee1df1f605e), CONST64(0xee5a2f75eac19b04), CONST64(0xb46cc1ad477519f3), CONST64(0xe45c316ddad5893e), - CONST64(0x04f70cfbeb08ffef), CONST64(0x6a26be982dd4f247), CONST64(0x1cff24dbab38c7b7), CONST64(0x2aed7e933b54b911), - CONST64(0x25e86f87134aa236), CONST64(0xba9dd34e9c69f426), CONST64(0xb16fcea15f7f10ee), CONST64(0x8f8e8c0204038d8b), - CONST64(0x2b197d64c8564fe3), CONST64(0xfda01aba69e74794), CONST64(0x0df017e7d31aeade), CONST64(0x8689971e3c1198ba), - CONST64(0x110f333c78222d69), CONST64(0x09071b1c38121531), CONST64(0xecaf298611c56afd), CONST64(0x10fb30cb8b20db9b), - CONST64(0x1808282040303858), CONST64(0x3f154154a87e6b97), CONST64(0x170d3934682e237f), CONST64(0x0c04141020181c2c), - CONST64(0x030105040806070b), CONST64(0xac64e98d074521ab), CONST64(0x7cdf845bb6f827ca), CONST64(0x9a76b3c597295f0d), - CONST64(0x8b7980f9ef0b7264), CONST64(0x7add8e53a6f429dc), CONST64(0x473dc9f4f58eb3b2), CONST64(0x3a164e58b074628a), - CONST64(0x413fc3fce582bda4), CONST64(0x5937ebdca5b285fc), CONST64(0xb76dc4a94f731ef8), CONST64(0x4838d8e0dd90a895), - CONST64(0xd6b967dea1b10877), CONST64(0x9573a2d1bf37442a), CONST64(0x26e96a831b4ca53d), CONST64(0x5f35e1d4b5be8bea), - CONST64(0xff551c4992e3b66d), CONST64(0x9371a8d9af3b4a3c), CONST64(0x8d7b8af1ff077c72), CONST64(0x898c860a140f839d), - CONST64(0x9672a7d5b7314321), CONST64(0x8588921a34179fb1), CONST64(0x07f609ffe30ef8e4), CONST64(0x7e2a82a84dfcd633), - CONST64(0x423ec6f8ed84baaf), CONST64(0xe25e3b65cad98728), CONST64(0x6927bb9c25d2f54c), CONST64(0xca4643050a89cfc0), - CONST64(0x140c3c3060282474), CONST64(0xaf65ec890f4326a0), CONST64(0xb868d5bd676d05df), CONST64(0xa361f8992f5b3a8c), - CONST64(0x05030f0c180a091d), CONST64(0x5ec1e22346bc7d18), CONST64(0xf957164182efb87b), CONST64(0x67d6a97ffece1899), - CONST64(0x76d99a4386ec35f0), CONST64(0xe858257dfacd9512), CONST64(0x75d89f478eea32fb), CONST64(0xaa66e38517492fbd), - CONST64(0x64d7ac7bf6c81f92), CONST64(0x4e3ad2e8cd9ca683), CONST64(0x45c8cf070e8a424b), CONST64(0x443cccf0fd88b4b9), - CONST64(0x13fa35cf8326dc90), CONST64(0xa796f462c453c563), CONST64(0xf4a701a651f552a5), CONST64(0xb598c25ab477ef01), - CONST64(0x29ec7b973352be1a), CONST64(0xd5b862daa9b70f7c), CONST64(0x54c7fc3b76a86f22), CONST64(0xefae2c8219c36df6), - CONST64(0xbb69d0b96f6b02d4), CONST64(0xdd4b7a3162a7ecbf), CONST64(0xe0ab3d9631dd76d1), CONST64(0xe6a9379e21d178c7), - CONST64(0xa967e6811f4f28b6), CONST64(0x1e0a2228503c364e), CONST64(0xc9474601028fc8cb), CONST64(0x0bf21defc316e4c8), - CONST64(0xc2b55beec1992c03), CONST64(0x6622aa880dccee6b), CONST64(0x32e556b37b648149), CONST64(0x2fee719f235eb00c), - CONST64(0xdfbe7cc299a31d46), CONST64(0x7d2b87ac45fad138), CONST64(0x9e81bf3e7c21a0e2), CONST64(0x36125a48906c7ea6), - CONST64(0x9883b5366c2daef4), CONST64(0x2d1b776cd85a41f5), CONST64(0x120e363870242a62), CONST64(0x6523af8c05cae960), - CONST64(0x02f506f3fb04f1f9), CONST64(0xcf454c091283c6dd), CONST64(0x6321a58415c6e776), CONST64(0x4fced11f3e9e5071), - CONST64(0xdb49703972abe2a9), CONST64(0x742c9cb07de8c409), CONST64(0x16f93ac39b2cd58d), CONST64(0x37e659bf636e8854), - CONST64(0xc7b654e2d993251e), CONST64(0x782888a05df0d825), CONST64(0x39174b5cb8726581), CONST64(0x9b82b032642ba9ff), - CONST64(0x2e1a7268d05c46fe), CONST64(0x808b9d162c1d96ac), CONST64(0x1ffe21dfa33ec0bc), CONST64(0x838a9812241b91a7), - CONST64(0x1b092d2448363f53), CONST64(0x46c9ca03068c4540), CONST64(0x9487a1264c35b2d8), CONST64(0xd24e6b254ab9f798), - CONST64(0x3ee142a35b7c9d65), CONST64(0x722e96b86de4ca1f), CONST64(0x31e453b773628642), CONST64(0x3de047a7537a9a6e), - CONST64(0x20eb608b0b40ab2b), CONST64(0xad90ea7af447d759), CONST64(0xf1a40eaa49ff5bb8), CONST64(0x221e6678f0445ad2), - CONST64(0x9285ab2e5c39bcce), CONST64(0xa060fd9d275d3d87), CONST64(0x0000000000000000), CONST64(0x6f25b19435defb5a), - CONST64(0x01f403f7f302f6f2), CONST64(0x0ef112e3db1cedd5), CONST64(0xa194fe6ad45fcb75), CONST64(0x1d0b272c583a3145), - CONST64(0x34e75cbb6b688f5f), CONST64(0x9f75bcc98f235610), CONST64(0x2cef749b2b58b707), CONST64(0x5c34e4d0bdb88ce1), - CONST64(0x5331f5c495a697c6), CONST64(0x61d4a377eec2168f), CONST64(0x6dd0b767ceda0aa3), CONST64(0x9786a4224433b5d3), - CONST64(0x827e9be5d7196755), CONST64(0xeaad238e01c964eb), CONST64(0x1afd2ed3bb34c9a1), CONST64(0x7b298da455f6df2e), - CONST64(0x5030f0c09da090cd), CONST64(0x4d3bd7ecc59aa188), CONST64(0xbc9fd9468c65fa30), CONST64(0x15f83fc7932ad286), - CONST64(0x57c6f93f7eae6829), CONST64(0x35135f4c986a79ad), CONST64(0x0a061e183014123a), CONST64(0x0f051114281e1b27), - CONST64(0x52c5f63366a46134), CONST64(0x33115544886677bb), CONST64(0x9977b6c19f2f5806), CONST64(0x847c91edc7156943), - CONST64(0x8e7a8ff5f7017b79), CONST64(0x887885fde70d756f), CONST64(0x5a36eed8adb482f7), CONST64(0x241c6c70e04854c4), - CONST64(0x4b39dde4d596af9e), CONST64(0xeb592079f2cb9219), CONST64(0x28187860c05048e8), CONST64(0xfa5613458ae9bf70), - CONST64(0xc8b345f6f18d3e39), CONST64(0xcdb04afae9873724), CONST64(0x6c24b4903dd8fc51), CONST64(0x6020a0801dc0e07d), - CONST64(0xcbb240f2f98b3932), CONST64(0xab92e072e44bd94f), CONST64(0xf8a315b671ed4e89), CONST64(0x5dc0e7274eba7a13), - CONST64(0xcc44490d1a85c1d6), CONST64(0xa662f79537513391), CONST64(0x30105040806070b0), CONST64(0xc1b45eeac99f2b08), - CONST64(0x9184ae2a543fbbc5), CONST64(0xc54352112297d4e7), CONST64(0xa893e576ec4dde44), CONST64(0x5bc2ed2f5eb67405), - CONST64(0xde4a7f356aa1ebb4), CONST64(0xdabd73ce81a9145b), CONST64(0x8c8f89060c058a80), CONST64(0x772d99b475eec302), - CONST64(0xd9bc76ca89af1350), CONST64(0xb99cd64a946ff32d), CONST64(0xbe6adfb577610bc9), CONST64(0xc0405d1d3a9dddfa), - CONST64(0x4ccfd41b3698577a), CONST64(0xfba210b279eb4982), CONST64(0x9d80ba3a7427a7e9), CONST64(0xd14f6e2142bff093), - CONST64(0x211f637cf8425dd9), CONST64(0x43cac50f1e864c5d), CONST64(0xe3aa389239db71da), CONST64(0xc64257152a91d3ec), -}; - -static const ulong64 T2[256] = { - CONST64(0xd268bad36a01bbb9), CONST64(0x4d1954fc66b1e59a), CONST64(0xbc932f7114cde265), CONST64(0xcdb9749c1b512587), - CONST64(0x510253f557a4f7a2), CONST64(0x6bb8d368be03d0d6), CONST64(0x6fbdd26bb504d6de), CONST64(0x29644dd785feb352), - CONST64(0x5d0d50f04aadfdba), CONST64(0x8a26ace9e063cf09), CONST64(0x0e838d8a9684091c), CONST64(0xc679bfdc4d1aa591), - CONST64(0xddad7090374d3da7), CONST64(0x550752f65ca3f1aa), CONST64(0x52c89ab317e17ba4), CONST64(0x2d614cd48ef9b55a), - CONST64(0x8f65ea2320ac4603), CONST64(0x73a6d5628411c4e6), CONST64(0x66f197a468c255cc), CONST64(0x63b2d16ea80ddcc6), - CONST64(0xccff3355d099aa85), CONST64(0x590851f341aafbb2), CONST64(0x712a5bed0f9cc7e2), CONST64(0xa204a6f7ae55f359), - CONST64(0x5f81de7fc120febe), CONST64(0x3d7548d8a2e5ad7a), CONST64(0x9a32a8e5cc7fd729), CONST64(0x5ec799b60ae871bc), - CONST64(0x4b90db70e63be096), CONST64(0xc8fa3256db9eac8d), CONST64(0xe651b7c4152295d1), CONST64(0xd72bfc19aace32b3), - CONST64(0xab48e3387393704b), CONST64(0x42dc9ebf3bfd6384), CONST64(0x7eef91ae52d041fc), CONST64(0x56cd9bb01ce67dac), - CONST64(0xaf4de23b78947643), CONST64(0xd66dbbd06106bdb1), CONST64(0x195841c3f1da9b32), CONST64(0xa5cb6eb2e5177957), - CONST64(0xae0ba5f2b35cf941), CONST64(0x0bc0cb40564b8016), CONST64(0xb1da6bbdc20c677f), CONST64(0x6efb95a27ecc59dc), - CONST64(0xbe1fa1fe9f40e161), CONST64(0xeb18f308c3e310cb), CONST64(0xfe4fb1ce2f3081e1), CONST64(0x080a0206160e0c10), - CONST64(0x17dbcc49675e922e), CONST64(0x37f3c4513f66a26e), CONST64(0x74691d27cf534ee8), CONST64(0x5044143c9c6c78a0), - CONST64(0x2be8c3580e73b056), CONST64(0x91f263a59a34573f), CONST64(0x4f95da73ed3ce69e), CONST64(0x69345de7358ed3d2), - CONST64(0x613e5fe12380dfc2), CONST64(0x578bdc79d72ef2ae), CONST64(0xe9947d87486e13cf), CONST64(0x13decd4a6c599426), - CONST64(0xe19e7f815e601fdf), CONST64(0x752f5aee049bc1ea), CONST64(0xadc16cb4f3197547), CONST64(0x6d315ce43e89d5da), - CONST64(0xfb0cf704efff08eb), CONST64(0x98be266a47f2d42d), CONST64(0xdb24ff1cb7c738ab), CONST64(0x937eed2a11b9543b), - CONST64(0x876fe82536a24a13), CONST64(0x4ed39dba26f4699c), CONST64(0xa1ce6fb1ee107f5f), CONST64(0x028c8e8f8b8d0304), - CONST64(0x647d192be34f56c8), CONST64(0xba1aa0fd9447e769), CONST64(0xe717f00ddeea1ad3), CONST64(0x1e978986ba98113c), - CONST64(0x3c330f11692d2278), CONST64(0x1c1b070931151238), CONST64(0x8629afecfd6ac511), CONST64(0xcb30fb109bdb208b), - CONST64(0x2028081858383040), CONST64(0x5441153f976b7ea8), CONST64(0x34390d177f232e68), CONST64(0x1014040c2c1c1820), - CONST64(0x040501030b070608), CONST64(0x8de964acab214507), CONST64(0x5b84df7cca27f8b6), CONST64(0xc5b3769a0d5f2997), - CONST64(0xf980798b64720bef), CONST64(0x538edd7adc29f4a6), CONST64(0xf4c93d47b2b38ef5), CONST64(0x584e163a8a6274b0), - CONST64(0xfcc33f41a4bd82e5), CONST64(0xdceb3759fc85b2a5), CONST64(0xa9c46db7f81e734f), CONST64(0xe0d8384895a890dd), - CONST64(0xde67b9d67708b1a1), CONST64(0xd1a273952a4437bf), CONST64(0x836ae9263da54c1b), CONST64(0xd4e1355fea8bbeb5), - CONST64(0x491c55ff6db6e392), CONST64(0xd9a871933c4a3baf), CONST64(0xf18a7b8d727c07ff), CONST64(0x0a868c899d830f14), - CONST64(0xd5a77296214331b7), CONST64(0x1a928885b19f1734), CONST64(0xff09f607e4f80ee3), CONST64(0xa8822a7e33d6fc4d), - CONST64(0xf8c63e42afba84ed), CONST64(0x653b5ee22887d9ca), CONST64(0x9cbb27694cf5d225), CONST64(0x054346cac0cf890a), - CONST64(0x303c0c1474242860), CONST64(0x89ec65afa026430f), CONST64(0xbdd568b8df056d67), CONST64(0x99f861a38c3a5b2f), - CONST64(0x0c0f03051d090a18), CONST64(0x23e2c15e187dbc46), CONST64(0x411657f97bb8ef82), CONST64(0x7fa9d6679918cefe), - CONST64(0x439ad976f035ec86), CONST64(0x7d2558e81295cdfa), CONST64(0x479fd875fb32ea8e), CONST64(0x85e366aabd2f4917), - CONST64(0x7bacd764921fc8f6), CONST64(0xe8d23a4e83a69ccd), CONST64(0x07cfc8454b428a0e), CONST64(0xf0cc3c44b9b488fd), - CONST64(0xcf35fa1390dc2683), CONST64(0x62f496a763c553c4), CONST64(0xa601a7f4a552f551), CONST64(0x5ac298b501ef77b4), - CONST64(0x977bec291abe5233), CONST64(0xda62b8d57c0fb7a9), CONST64(0x3bfcc754226fa876), CONST64(0x822caeeff66dc319), - CONST64(0xb9d069bbd4026b6f), CONST64(0x317a4bddbfeca762), CONST64(0x963dabe0d176dd31), CONST64(0x9e37a9e6c778d121), - CONST64(0x81e667a9b6284f1f), CONST64(0x28220a1e4e363c50), CONST64(0x014647c9cbc88f02), CONST64(0xef1df20bc8e416c3), - CONST64(0xee5bb5c2032c99c1), CONST64(0x88aa22666beecc0d), CONST64(0xb356e5324981647b), CONST64(0x9f71ee2f0cb05e23), - CONST64(0xc27cbedf461da399), CONST64(0xac872b7d38d1fa45), CONST64(0x3ebf819ee2a0217c), CONST64(0x485a1236a67e6c90), - CONST64(0x36b58398f4ae2d6c), CONST64(0x6c771b2df5415ad8), CONST64(0x38360e12622a2470), CONST64(0x8caf236560e9ca05), - CONST64(0xf306f502f9f104fb), CONST64(0x094c45cfddc68312), CONST64(0x84a5216376e7c615), CONST64(0x1fd1ce4f71509e3e), - CONST64(0x397049dba9e2ab72), CONST64(0xb09c2c7409c4e87d), CONST64(0xc33af9168dd52c9b), CONST64(0xbf59e63754886e63), - CONST64(0xe254b6c71e2593d9), CONST64(0xa088287825d8f05d), CONST64(0x5c4b1739816572b8), CONST64(0x32b0829bffa92b64), - CONST64(0x68721a2efe465cd0), CONST64(0x169d8b80ac961d2c), CONST64(0xdf21fe1fbcc03ea3), CONST64(0x12988a83a7911b24), - CONST64(0x242d091b533f3648), CONST64(0x03cac94640458c06), CONST64(0x26a18794d8b2354c), CONST64(0x256b4ed298f7b94a), - CONST64(0xa342e13e659d7c5b), CONST64(0xb8962e721fcae46d), CONST64(0xb753e43142866273), CONST64(0xa747e03d6e9a7a53), - CONST64(0x8b60eb202bab400b), CONST64(0x7aea90ad59d747f4), CONST64(0xaa0ea4f1b85bff49), CONST64(0x78661e22d25a44f0), - CONST64(0x2eab8592cebc395c), CONST64(0x9dfd60a0873d5d27), CONST64(0x0000000000000000), CONST64(0x94b1256f5afbde35), - CONST64(0xf703f401f2f602f3), CONST64(0xe312f10ed5ed1cdb), CONST64(0x6afe94a175cb5fd4), CONST64(0x2c270b1d45313a58), - CONST64(0xbb5ce7345f8f686b), CONST64(0xc9bc759f1056238f), CONST64(0x9b74ef2c07b7582b), CONST64(0xd0e4345ce18cb8bd), - CONST64(0xc4f53153c697a695), CONST64(0x77a3d4618f16c2ee), CONST64(0x67b7d06da30adace), CONST64(0x22a48697d3b53344), - CONST64(0xe59b7e82556719d7), CONST64(0x8e23adeaeb64c901), CONST64(0xd32efd1aa1c934bb), CONST64(0xa48d297b2edff655), - CONST64(0xc0f03050cd90a09d), CONST64(0xecd73b4d88a19ac5), CONST64(0x46d99fbc30fa658c), CONST64(0xc73ff81586d22a93), - CONST64(0x3ff9c6572968ae7e), CONST64(0x4c5f1335ad796a98), CONST64(0x181e060a3a121430), CONST64(0x1411050f271b1e28), - CONST64(0x33f6c5523461a466), CONST64(0x44551133bb776688), CONST64(0xc1b6779906582f9f), CONST64(0xed917c84436915c7), - CONST64(0xf58f7a8e797b01f7), CONST64(0xfd8578886f750de7), CONST64(0xd8ee365af782b4ad), CONST64(0x706c1c24c45448e0), - CONST64(0xe4dd394b9eaf96d5), CONST64(0x792059eb1992cbf2), CONST64(0x60781828e84850c0), CONST64(0x451356fa70bfe98a), - CONST64(0xf645b3c8393e8df1), CONST64(0xfa4ab0cd243787e9), CONST64(0x90b4246c51fcd83d), CONST64(0x80a020607de0c01d), - CONST64(0xf240b2cb32398bf9), CONST64(0x72e092ab4fd94be4), CONST64(0xb615a3f8894eed71), CONST64(0x27e7c05d137aba4e), - CONST64(0x0d4944ccd6c1851a), CONST64(0x95f762a691335137), CONST64(0x40501030b0706080), CONST64(0xea5eb4c1082b9fc9), - CONST64(0x2aae8491c5bb3f54), CONST64(0x115243c5e7d49722), CONST64(0x76e593a844de4dec), CONST64(0x2fedc25b0574b65e), - CONST64(0x357f4adeb4eba16a), CONST64(0xce73bdda5b14a981), CONST64(0x06898f8c808a050c), CONST64(0xb4992d7702c3ee75), - CONST64(0xca76bcd95013af89), CONST64(0x4ad69cb92df36f94), CONST64(0xb5df6abec90b6177), CONST64(0x1d5d40c0fadd9d3a), - CONST64(0x1bd4cf4c7a579836), CONST64(0xb210a2fb8249eb79), CONST64(0x3aba809de9a72774), CONST64(0x216e4fd193f0bf42), - CONST64(0x7c631f21d95d42f8), CONST64(0x0fc5ca435d4c861e), CONST64(0x9238aae3da71db39), CONST64(0x155742c6ecd3912a), -}; - -static const ulong64 T3[256] = { - CONST64(0x68d2d3ba016ab9bb), CONST64(0x194dfc54b1669ae5), CONST64(0x93bc712fcd1465e2), CONST64(0xb9cd9c74511b8725), - CONST64(0x0251f553a457a2f7), CONST64(0xb86b68d303bed6d0), CONST64(0xbd6f6bd204b5ded6), CONST64(0x6429d74dfe8552b3), - CONST64(0x0d5df050ad4abafd), CONST64(0x268ae9ac63e009cf), CONST64(0x830e8a8d84961c09), CONST64(0x79c6dcbf1a4d91a5), - CONST64(0xaddd90704d37a73d), CONST64(0x0755f652a35caaf1), CONST64(0xc852b39ae117a47b), CONST64(0x612dd44cf98e5ab5), - CONST64(0x658f23eaac200346), CONST64(0xa67362d51184e6c4), CONST64(0xf166a497c268cc55), CONST64(0xb2636ed10da8c6dc), - CONST64(0xffcc553399d085aa), CONST64(0x0859f351aa41b2fb), CONST64(0x2a71ed5b9c0fe2c7), CONST64(0x04a2f7a655ae59f3), - CONST64(0x815f7fde20c1befe), CONST64(0x753dd848e5a27aad), CONST64(0x329ae5a87fcc29d7), CONST64(0xc75eb699e80abc71), - CONST64(0x904b70db3be696e0), CONST64(0xfac856329edb8dac), CONST64(0x51e6c4b72215d195), CONST64(0x2bd719fcceaab332), - CONST64(0x48ab38e393734b70), CONST64(0xdc42bf9efd3b8463), CONST64(0xef7eae91d052fc41), CONST64(0xcd56b09be61cac7d), - CONST64(0x4daf3be294784376), CONST64(0x6dd6d0bb0661b1bd), CONST64(0x5819c341daf1329b), CONST64(0xcba5b26e17e55779), - CONST64(0x0baef2a55cb341f9), CONST64(0xc00b40cb4b561680), CONST64(0xdab1bd6b0cc27f67), CONST64(0xfb6ea295cc7edc59), - CONST64(0x1fbefea1409f61e1), CONST64(0x18eb08f3e3c3cb10), CONST64(0x4ffeceb1302fe181), CONST64(0x0a0806020e16100c), - CONST64(0xdb1749cc5e672e92), CONST64(0xf33751c4663f6ea2), CONST64(0x6974271d53cfe84e), CONST64(0x44503c146c9ca078), - CONST64(0xe82b58c3730e56b0), CONST64(0xf291a563349a3f57), CONST64(0x954f73da3ced9ee6), CONST64(0x3469e75d8e35d2d3), - CONST64(0x3e61e15f8023c2df), CONST64(0x8b5779dc2ed7aef2), CONST64(0x94e9877d6e48cf13), CONST64(0xde134acd596c2694), - CONST64(0x9ee1817f605edf1f), CONST64(0x2f75ee5a9b04eac1), CONST64(0xc1adb46c19f34775), CONST64(0x316de45c893edad5), - CONST64(0x0cfb04f7ffefeb08), CONST64(0xbe986a26f2472dd4), CONST64(0x24db1cffc7b7ab38), CONST64(0x7e932aedb9113b54), - CONST64(0x6f8725e8a236134a), CONST64(0xd34eba9df4269c69), CONST64(0xcea1b16f10ee5f7f), CONST64(0x8c028f8e8d8b0403), - CONST64(0x7d642b194fe3c856), CONST64(0x1abafda0479469e7), CONST64(0x17e70df0eaded31a), CONST64(0x971e868998ba3c11), - CONST64(0x333c110f2d697822), CONST64(0x1b1c090715313812), CONST64(0x2986ecaf6afd11c5), CONST64(0x30cb10fbdb9b8b20), - CONST64(0x2820180838584030), CONST64(0x41543f156b97a87e), CONST64(0x3934170d237f682e), CONST64(0x14100c041c2c2018), - CONST64(0x05040301070b0806), CONST64(0xe98dac6421ab0745), CONST64(0x845b7cdf27cab6f8), CONST64(0xb3c59a765f0d9729), - CONST64(0x80f98b797264ef0b), CONST64(0x8e537add29dca6f4), CONST64(0xc9f4473db3b2f58e), CONST64(0x4e583a16628ab074), - CONST64(0xc3fc413fbda4e582), CONST64(0xebdc593785fca5b2), CONST64(0xc4a9b76d1ef84f73), CONST64(0xd8e04838a895dd90), - CONST64(0x67ded6b90877a1b1), CONST64(0xa2d19573442abf37), CONST64(0x6a8326e9a53d1b4c), CONST64(0xe1d45f358beab5be), - CONST64(0x1c49ff55b66d92e3), CONST64(0xa8d993714a3caf3b), CONST64(0x8af18d7b7c72ff07), CONST64(0x860a898c839d140f), - CONST64(0xa7d596724321b731), CONST64(0x921a85889fb13417), CONST64(0x09ff07f6f8e4e30e), CONST64(0x82a87e2ad6334dfc), - CONST64(0xc6f8423ebaafed84), CONST64(0x3b65e25e8728cad9), CONST64(0xbb9c6927f54c25d2), CONST64(0x4305ca46cfc00a89), - CONST64(0x3c30140c24746028), CONST64(0xec89af6526a00f43), CONST64(0xd5bdb86805df676d), CONST64(0xf899a3613a8c2f5b), - CONST64(0x0f0c0503091d180a), CONST64(0xe2235ec17d1846bc), CONST64(0x1641f957b87b82ef), CONST64(0xa97f67d61899fece), - CONST64(0x9a4376d935f086ec), CONST64(0x257de8589512facd), CONST64(0x9f4775d832fb8eea), CONST64(0xe385aa662fbd1749), - CONST64(0xac7b64d71f92f6c8), CONST64(0xd2e84e3aa683cd9c), CONST64(0xcf0745c8424b0e8a), CONST64(0xccf0443cb4b9fd88), - CONST64(0x35cf13fadc908326), CONST64(0xf462a796c563c453), CONST64(0x01a6f4a752a551f5), CONST64(0xc25ab598ef01b477), - CONST64(0x7b9729ecbe1a3352), CONST64(0x62dad5b80f7ca9b7), CONST64(0xfc3b54c76f2276a8), CONST64(0x2c82efae6df619c3), - CONST64(0xd0b9bb6902d46f6b), CONST64(0x7a31dd4becbf62a7), CONST64(0x3d96e0ab76d131dd), CONST64(0x379ee6a978c721d1), - CONST64(0xe681a96728b61f4f), CONST64(0x22281e0a364e503c), CONST64(0x4601c947c8cb028f), CONST64(0x1def0bf2e4c8c316), - CONST64(0x5beec2b52c03c199), CONST64(0xaa886622ee6b0dcc), CONST64(0x56b332e581497b64), CONST64(0x719f2feeb00c235e), - CONST64(0x7cc2dfbe1d4699a3), CONST64(0x87ac7d2bd13845fa), CONST64(0xbf3e9e81a0e27c21), CONST64(0x5a4836127ea6906c), - CONST64(0xb5369883aef46c2d), CONST64(0x776c2d1b41f5d85a), CONST64(0x3638120e2a627024), CONST64(0xaf8c6523e96005ca), - CONST64(0x06f302f5f1f9fb04), CONST64(0x4c09cf45c6dd1283), CONST64(0xa5846321e77615c6), CONST64(0xd11f4fce50713e9e), - CONST64(0x7039db49e2a972ab), CONST64(0x9cb0742cc4097de8), CONST64(0x3ac316f9d58d9b2c), CONST64(0x59bf37e68854636e), - CONST64(0x54e2c7b6251ed993), CONST64(0x88a07828d8255df0), CONST64(0x4b5c39176581b872), CONST64(0xb0329b82a9ff642b), - CONST64(0x72682e1a46fed05c), CONST64(0x9d16808b96ac2c1d), CONST64(0x21df1ffec0bca33e), CONST64(0x9812838a91a7241b), - CONST64(0x2d241b093f534836), CONST64(0xca0346c94540068c), CONST64(0xa1269487b2d84c35), CONST64(0x6b25d24ef7984ab9), - CONST64(0x42a33ee19d655b7c), CONST64(0x96b8722eca1f6de4), CONST64(0x53b731e486427362), CONST64(0x47a73de09a6e537a), - CONST64(0x608b20ebab2b0b40), CONST64(0xea7aad90d759f447), CONST64(0x0eaaf1a45bb849ff), CONST64(0x6678221e5ad2f044), - CONST64(0xab2e9285bcce5c39), CONST64(0xfd9da0603d87275d), CONST64(0x0000000000000000), CONST64(0xb1946f25fb5a35de), - CONST64(0x03f701f4f6f2f302), CONST64(0x12e30ef1edd5db1c), CONST64(0xfe6aa194cb75d45f), CONST64(0x272c1d0b3145583a), - CONST64(0x5cbb34e78f5f6b68), CONST64(0xbcc99f7556108f23), CONST64(0x749b2cefb7072b58), CONST64(0xe4d05c348ce1bdb8), - CONST64(0xf5c4533197c695a6), CONST64(0xa37761d4168feec2), CONST64(0xb7676dd00aa3ceda), CONST64(0xa4229786b5d34433), - CONST64(0x9be5827e6755d719), CONST64(0x238eeaad64eb01c9), CONST64(0x2ed31afdc9a1bb34), CONST64(0x8da47b29df2e55f6), - CONST64(0xf0c0503090cd9da0), CONST64(0xd7ec4d3ba188c59a), CONST64(0xd946bc9ffa308c65), CONST64(0x3fc715f8d286932a), - CONST64(0xf93f57c668297eae), CONST64(0x5f4c351379ad986a), CONST64(0x1e180a06123a3014), CONST64(0x11140f051b27281e), - CONST64(0xf63352c5613466a4), CONST64(0x5544331177bb8866), CONST64(0xb6c1997758069f2f), CONST64(0x91ed847c6943c715), - CONST64(0x8ff58e7a7b79f701), CONST64(0x85fd8878756fe70d), CONST64(0xeed85a3682f7adb4), CONST64(0x6c70241c54c4e048), - CONST64(0xdde44b39af9ed596), CONST64(0x2079eb599219f2cb), CONST64(0x7860281848e8c050), CONST64(0x1345fa56bf708ae9), - CONST64(0x45f6c8b33e39f18d), CONST64(0x4afacdb03724e987), CONST64(0xb4906c24fc513dd8), CONST64(0xa0806020e07d1dc0), - CONST64(0x40f2cbb23932f98b), CONST64(0xe072ab92d94fe44b), CONST64(0x15b6f8a34e8971ed), CONST64(0xe7275dc07a134eba), - CONST64(0x490dcc44c1d61a85), CONST64(0xf795a66233913751), CONST64(0x5040301070b08060), CONST64(0x5eeac1b42b08c99f), - CONST64(0xae2a9184bbc5543f), CONST64(0x5211c543d4e72297), CONST64(0xe576a893de44ec4d), CONST64(0xed2f5bc274055eb6), - CONST64(0x7f35de4aebb46aa1), CONST64(0x73cedabd145b81a9), CONST64(0x89068c8f8a800c05), CONST64(0x99b4772dc30275ee), - CONST64(0x76cad9bc135089af), CONST64(0xd64ab99cf32d946f), CONST64(0xdfb5be6a0bc97761), CONST64(0x5d1dc040ddfa3a9d), - CONST64(0xd41b4ccf577a3698), CONST64(0x10b2fba2498279eb), CONST64(0xba3a9d80a7e97427), CONST64(0x6e21d14ff09342bf), - CONST64(0x637c211f5dd9f842), CONST64(0xc50f43ca4c5d1e86), CONST64(0x3892e3aa71da39db), CONST64(0x5715c642d3ec2a91), -}; - -static const ulong64 T4[256] = { - CONST64(0xbbb96a01bad3d268), CONST64(0xe59a66b154fc4d19), CONST64(0xe26514cd2f71bc93), CONST64(0x25871b51749ccdb9), - CONST64(0xf7a257a453f55102), CONST64(0xd0d6be03d3686bb8), CONST64(0xd6deb504d26b6fbd), CONST64(0xb35285fe4dd72964), - CONST64(0xfdba4aad50f05d0d), CONST64(0xcf09e063ace98a26), CONST64(0x091c96848d8a0e83), CONST64(0xa5914d1abfdcc679), - CONST64(0x3da7374d7090ddad), CONST64(0xf1aa5ca352f65507), CONST64(0x7ba417e19ab352c8), CONST64(0xb55a8ef94cd42d61), - CONST64(0x460320acea238f65), CONST64(0xc4e68411d56273a6), CONST64(0x55cc68c297a466f1), CONST64(0xdcc6a80dd16e63b2), - CONST64(0xaa85d0993355ccff), CONST64(0xfbb241aa51f35908), CONST64(0xc7e20f9c5bed712a), CONST64(0xf359ae55a6f7a204), - CONST64(0xfebec120de7f5f81), CONST64(0xad7aa2e548d83d75), CONST64(0xd729cc7fa8e59a32), CONST64(0x71bc0ae899b65ec7), - CONST64(0xe096e63bdb704b90), CONST64(0xac8ddb9e3256c8fa), CONST64(0x95d11522b7c4e651), CONST64(0x32b3aacefc19d72b), - CONST64(0x704b7393e338ab48), CONST64(0x63843bfd9ebf42dc), CONST64(0x41fc52d091ae7eef), CONST64(0x7dac1ce69bb056cd), - CONST64(0x76437894e23baf4d), CONST64(0xbdb16106bbd0d66d), CONST64(0x9b32f1da41c31958), CONST64(0x7957e5176eb2a5cb), - CONST64(0xf941b35ca5f2ae0b), CONST64(0x8016564bcb400bc0), CONST64(0x677fc20c6bbdb1da), CONST64(0x59dc7ecc95a26efb), - CONST64(0xe1619f40a1febe1f), CONST64(0x10cbc3e3f308eb18), CONST64(0x81e12f30b1cefe4f), CONST64(0x0c10160e0206080a), - CONST64(0x922e675ecc4917db), CONST64(0xa26e3f66c45137f3), CONST64(0x4ee8cf531d277469), CONST64(0x78a09c6c143c5044), - CONST64(0xb0560e73c3582be8), CONST64(0x573f9a3463a591f2), CONST64(0xe69eed3cda734f95), CONST64(0xd3d2358e5de76934), - CONST64(0xdfc223805fe1613e), CONST64(0xf2aed72edc79578b), CONST64(0x13cf486e7d87e994), CONST64(0x94266c59cd4a13de), - CONST64(0x1fdf5e607f81e19e), CONST64(0xc1ea049b5aee752f), CONST64(0x7547f3196cb4adc1), CONST64(0xd5da3e895ce46d31), - CONST64(0x08ebeffff704fb0c), CONST64(0xd42d47f2266a98be), CONST64(0x38abb7c7ff1cdb24), CONST64(0x543b11b9ed2a937e), - CONST64(0x4a1336a2e825876f), CONST64(0x699c26f49dba4ed3), CONST64(0x7f5fee106fb1a1ce), CONST64(0x03048b8d8e8f028c), - CONST64(0x56c8e34f192b647d), CONST64(0xe7699447a0fdba1a), CONST64(0x1ad3deeaf00de717), CONST64(0x113cba9889861e97), - CONST64(0x2278692d0f113c33), CONST64(0x1238311507091c1b), CONST64(0xc511fd6aafec8629), CONST64(0x208b9bdbfb10cb30), - CONST64(0x3040583808182028), CONST64(0x7ea8976b153f5441), CONST64(0x2e687f230d173439), CONST64(0x18202c1c040c1014), - CONST64(0x06080b0701030405), CONST64(0x4507ab2164ac8de9), CONST64(0xf8b6ca27df7c5b84), CONST64(0x29970d5f769ac5b3), - CONST64(0x0bef6472798bf980), CONST64(0xf4a6dc29dd7a538e), CONST64(0x8ef5b2b33d47f4c9), CONST64(0x74b08a62163a584e), - CONST64(0x82e5a4bd3f41fcc3), CONST64(0xb2a5fc853759dceb), CONST64(0x734ff81e6db7a9c4), CONST64(0x90dd95a83848e0d8), - CONST64(0xb1a17708b9d6de67), CONST64(0x37bf2a447395d1a2), CONST64(0x4c1b3da5e926836a), CONST64(0xbeb5ea8b355fd4e1), - CONST64(0xe3926db655ff491c), CONST64(0x3baf3c4a7193d9a8), CONST64(0x07ff727c7b8df18a), CONST64(0x0f149d838c890a86), - CONST64(0x31b721437296d5a7), CONST64(0x1734b19f88851a92), CONST64(0x0ee3e4f8f607ff09), CONST64(0xfc4d33d62a7ea882), - CONST64(0x84edafba3e42f8c6), CONST64(0xd9ca28875ee2653b), CONST64(0xd2254cf527699cbb), CONST64(0x890ac0cf46ca0543), - CONST64(0x286074240c14303c), CONST64(0x430fa02665af89ec), CONST64(0x6d67df0568b8bdd5), CONST64(0x5b2f8c3a61a399f8), - CONST64(0x0a181d0903050c0f), CONST64(0xbc46187dc15e23e2), CONST64(0xef827bb857f94116), CONST64(0xcefe9918d6677fa9), - CONST64(0xec86f035d976439a), CONST64(0xcdfa129558e87d25), CONST64(0xea8efb32d875479f), CONST64(0x4917bd2f66aa85e3), - CONST64(0xc8f6921fd7647bac), CONST64(0x9ccd83a63a4ee8d2), CONST64(0x8a0e4b42c84507cf), CONST64(0x88fdb9b43c44f0cc), - CONST64(0x268390dcfa13cf35), CONST64(0x53c463c596a762f4), CONST64(0xf551a552a7f4a601), CONST64(0x77b401ef98b55ac2), - CONST64(0x52331abeec29977b), CONST64(0xb7a97c0fb8d5da62), CONST64(0xa876226fc7543bfc), CONST64(0xc319f66daeef822c), - CONST64(0x6b6fd40269bbb9d0), CONST64(0xa762bfec4bdd317a), CONST64(0xdd31d176abe0963d), CONST64(0xd121c778a9e69e37), - CONST64(0x4f1fb62867a981e6), CONST64(0x3c504e360a1e2822), CONST64(0x8f02cbc847c90146), CONST64(0x16c3c8e4f20bef1d), - CONST64(0x99c1032cb5c2ee5b), CONST64(0xcc0d6bee226688aa), CONST64(0x647b4981e532b356), CONST64(0x5e230cb0ee2f9f71), - CONST64(0xa399461dbedfc27c), CONST64(0xfa4538d12b7dac87), CONST64(0x217ce2a0819e3ebf), CONST64(0x6c90a67e1236485a), - CONST64(0x2d6cf4ae839836b5), CONST64(0x5ad8f5411b2d6c77), CONST64(0x2470622a0e123836), CONST64(0xca0560e923658caf), - CONST64(0x04fbf9f1f502f306), CONST64(0x8312ddc645cf094c), CONST64(0xc61576e7216384a5), CONST64(0x9e3e7150ce4f1fd1), - CONST64(0xab72a9e249db3970), CONST64(0xe87d09c42c74b09c), CONST64(0x2c9b8dd5f916c33a), CONST64(0x6e635488e637bf59), - CONST64(0x93d91e25b6c7e254), CONST64(0xf05d25d82878a088), CONST64(0x72b8816517395c4b), CONST64(0x2b64ffa9829b32b0), - CONST64(0x5cd0fe461a2e6872), CONST64(0x1d2cac968b80169d), CONST64(0x3ea3bcc0fe1fdf21), CONST64(0x1b24a7918a831298), - CONST64(0x3648533f091b242d), CONST64(0x8c064045c94603ca), CONST64(0x354cd8b2879426a1), CONST64(0xb94a98f74ed2256b), - CONST64(0x7c5b659de13ea342), CONST64(0xe46d1fca2e72b896), CONST64(0x62734286e431b753), CONST64(0x7a536e9ae03da747), - CONST64(0x400b2babeb208b60), CONST64(0x47f459d790ad7aea), CONST64(0xff49b85ba4f1aa0e), CONST64(0x44f0d25a1e227866), - CONST64(0x395ccebc85922eab), CONST64(0x5d27873d60a09dfd), CONST64(0x0000000000000000), CONST64(0xde355afb256f94b1), - CONST64(0x02f3f2f6f401f703), CONST64(0x1cdbd5edf10ee312), CONST64(0x5fd475cb94a16afe), CONST64(0x3a5845310b1d2c27), - CONST64(0x686b5f8fe734bb5c), CONST64(0x238f1056759fc9bc), CONST64(0x582b07b7ef2c9b74), CONST64(0xb8bde18c345cd0e4), - CONST64(0xa695c6973153c4f5), CONST64(0xc2ee8f16d46177a3), CONST64(0xdacea30ad06d67b7), CONST64(0x3344d3b5869722a4), - CONST64(0x19d755677e82e59b), CONST64(0xc901eb64adea8e23), CONST64(0x34bba1c9fd1ad32e), CONST64(0xf6552edf297ba48d), - CONST64(0xa09dcd903050c0f0), CONST64(0x9ac588a13b4decd7), CONST64(0x658c30fa9fbc46d9), CONST64(0x2a9386d2f815c73f), - CONST64(0xae7e2968c6573ff9), CONST64(0x6a98ad7913354c5f), CONST64(0x14303a12060a181e), CONST64(0x1e28271b050f1411), - CONST64(0xa4663461c55233f6), CONST64(0x6688bb7711334455), CONST64(0x2f9f06587799c1b6), CONST64(0x15c743697c84ed91), - CONST64(0x01f7797b7a8ef58f), CONST64(0x0de76f757888fd85), CONST64(0xb4adf782365ad8ee), CONST64(0x48e0c4541c24706c), - CONST64(0x96d59eaf394be4dd), CONST64(0xcbf2199259eb7920), CONST64(0x50c0e84818286078), CONST64(0xe98a70bf56fa4513), - CONST64(0x8df1393eb3c8f645), CONST64(0x87e92437b0cdfa4a), CONST64(0xd83d51fc246c90b4), CONST64(0xc01d7de0206080a0), - CONST64(0x8bf93239b2cbf240), CONST64(0x4be44fd992ab72e0), CONST64(0xed71894ea3f8b615), CONST64(0xba4e137ac05d27e7), - CONST64(0x851ad6c144cc0d49), CONST64(0x5137913362a695f7), CONST64(0x6080b07010304050), CONST64(0x9fc9082bb4c1ea5e), - CONST64(0x3f54c5bb84912aae), CONST64(0x9722e7d443c51152), CONST64(0x4dec44de93a876e5), CONST64(0xb65e0574c25b2fed), - CONST64(0xa16ab4eb4ade357f), CONST64(0xa9815b14bddace73), CONST64(0x050c808a8f8c0689), CONST64(0xee7502c32d77b499), - CONST64(0xaf895013bcd9ca76), CONST64(0x6f942df39cb94ad6), CONST64(0x6177c90b6abeb5df), CONST64(0x9d3afadd40c01d5d), - CONST64(0x98367a57cf4c1bd4), CONST64(0xeb798249a2fbb210), CONST64(0x2774e9a7809d3aba), CONST64(0xbf4293f04fd1216e), - CONST64(0x42f8d95d1f217c63), CONST64(0x861e5d4cca430fc5), CONST64(0xdb39da71aae39238), CONST64(0x912aecd342c61557), -}; - -static const ulong64 T5[256] = { - CONST64(0xb9bb016ad3ba68d2), CONST64(0x9ae5b166fc54194d), CONST64(0x65e2cd14712f93bc), CONST64(0x8725511b9c74b9cd), - CONST64(0xa2f7a457f5530251), CONST64(0xd6d003be68d3b86b), CONST64(0xded604b56bd2bd6f), CONST64(0x52b3fe85d74d6429), - CONST64(0xbafdad4af0500d5d), CONST64(0x09cf63e0e9ac268a), CONST64(0x1c0984968a8d830e), CONST64(0x91a51a4ddcbf79c6), - CONST64(0xa73d4d379070addd), CONST64(0xaaf1a35cf6520755), CONST64(0xa47be117b39ac852), CONST64(0x5ab5f98ed44c612d), - CONST64(0x0346ac2023ea658f), CONST64(0xe6c4118462d5a673), CONST64(0xcc55c268a497f166), CONST64(0xc6dc0da86ed1b263), - CONST64(0x85aa99d05533ffcc), CONST64(0xb2fbaa41f3510859), CONST64(0xe2c79c0fed5b2a71), CONST64(0x59f355aef7a604a2), - CONST64(0xbefe20c17fde815f), CONST64(0x7aade5a2d848753d), CONST64(0x29d77fcce5a8329a), CONST64(0xbc71e80ab699c75e), - CONST64(0x96e03be670db904b), CONST64(0x8dac9edb5632fac8), CONST64(0xd1952215c4b751e6), CONST64(0xb332ceaa19fc2bd7), - CONST64(0x4b70937338e348ab), CONST64(0x8463fd3bbf9edc42), CONST64(0xfc41d052ae91ef7e), CONST64(0xac7de61cb09bcd56), - CONST64(0x437694783be24daf), CONST64(0xb1bd0661d0bb6dd6), CONST64(0x329bdaf1c3415819), CONST64(0x577917e5b26ecba5), - CONST64(0x41f95cb3f2a50bae), CONST64(0x16804b5640cbc00b), CONST64(0x7f670cc2bd6bdab1), CONST64(0xdc59cc7ea295fb6e), - CONST64(0x61e1409ffea11fbe), CONST64(0xcb10e3c308f318eb), CONST64(0xe181302fceb14ffe), CONST64(0x100c0e1606020a08), - CONST64(0x2e925e6749ccdb17), CONST64(0x6ea2663f51c4f337), CONST64(0xe84e53cf271d6974), CONST64(0xa0786c9c3c144450), - CONST64(0x56b0730e58c3e82b), CONST64(0x3f57349aa563f291), CONST64(0x9ee63ced73da954f), CONST64(0xd2d38e35e75d3469), - CONST64(0xc2df8023e15f3e61), CONST64(0xaef22ed779dc8b57), CONST64(0xcf136e48877d94e9), CONST64(0x2694596c4acdde13), - CONST64(0xdf1f605e817f9ee1), CONST64(0xeac19b04ee5a2f75), CONST64(0x477519f3b46cc1ad), CONST64(0xdad5893ee45c316d), - CONST64(0xeb08ffef04f70cfb), CONST64(0x2dd4f2476a26be98), CONST64(0xab38c7b71cff24db), CONST64(0x3b54b9112aed7e93), - CONST64(0x134aa23625e86f87), CONST64(0x9c69f426ba9dd34e), CONST64(0x5f7f10eeb16fcea1), CONST64(0x04038d8b8f8e8c02), - CONST64(0xc8564fe32b197d64), CONST64(0x69e74794fda01aba), CONST64(0xd31aeade0df017e7), CONST64(0x3c1198ba8689971e), - CONST64(0x78222d69110f333c), CONST64(0x3812153109071b1c), CONST64(0x11c56afdecaf2986), CONST64(0x8b20db9b10fb30cb), - CONST64(0x4030385818082820), CONST64(0xa87e6b973f154154), CONST64(0x682e237f170d3934), CONST64(0x20181c2c0c041410), - CONST64(0x0806070b03010504), CONST64(0x074521abac64e98d), CONST64(0xb6f827ca7cdf845b), CONST64(0x97295f0d9a76b3c5), - CONST64(0xef0b72648b7980f9), CONST64(0xa6f429dc7add8e53), CONST64(0xf58eb3b2473dc9f4), CONST64(0xb074628a3a164e58), - CONST64(0xe582bda4413fc3fc), CONST64(0xa5b285fc5937ebdc), CONST64(0x4f731ef8b76dc4a9), CONST64(0xdd90a8954838d8e0), - CONST64(0xa1b10877d6b967de), CONST64(0xbf37442a9573a2d1), CONST64(0x1b4ca53d26e96a83), CONST64(0xb5be8bea5f35e1d4), - CONST64(0x92e3b66dff551c49), CONST64(0xaf3b4a3c9371a8d9), CONST64(0xff077c728d7b8af1), CONST64(0x140f839d898c860a), - CONST64(0xb73143219672a7d5), CONST64(0x34179fb18588921a), CONST64(0xe30ef8e407f609ff), CONST64(0x4dfcd6337e2a82a8), - CONST64(0xed84baaf423ec6f8), CONST64(0xcad98728e25e3b65), CONST64(0x25d2f54c6927bb9c), CONST64(0x0a89cfc0ca464305), - CONST64(0x60282474140c3c30), CONST64(0x0f4326a0af65ec89), CONST64(0x676d05dfb868d5bd), CONST64(0x2f5b3a8ca361f899), - CONST64(0x180a091d05030f0c), CONST64(0x46bc7d185ec1e223), CONST64(0x82efb87bf9571641), CONST64(0xfece189967d6a97f), - CONST64(0x86ec35f076d99a43), CONST64(0xfacd9512e858257d), CONST64(0x8eea32fb75d89f47), CONST64(0x17492fbdaa66e385), - CONST64(0xf6c81f9264d7ac7b), CONST64(0xcd9ca6834e3ad2e8), CONST64(0x0e8a424b45c8cf07), CONST64(0xfd88b4b9443cccf0), - CONST64(0x8326dc9013fa35cf), CONST64(0xc453c563a796f462), CONST64(0x51f552a5f4a701a6), CONST64(0xb477ef01b598c25a), - CONST64(0x3352be1a29ec7b97), CONST64(0xa9b70f7cd5b862da), CONST64(0x76a86f2254c7fc3b), CONST64(0x19c36df6efae2c82), - CONST64(0x6f6b02d4bb69d0b9), CONST64(0x62a7ecbfdd4b7a31), CONST64(0x31dd76d1e0ab3d96), CONST64(0x21d178c7e6a9379e), - CONST64(0x1f4f28b6a967e681), CONST64(0x503c364e1e0a2228), CONST64(0x028fc8cbc9474601), CONST64(0xc316e4c80bf21def), - CONST64(0xc1992c03c2b55bee), CONST64(0x0dccee6b6622aa88), CONST64(0x7b64814932e556b3), CONST64(0x235eb00c2fee719f), - CONST64(0x99a31d46dfbe7cc2), CONST64(0x45fad1387d2b87ac), CONST64(0x7c21a0e29e81bf3e), CONST64(0x906c7ea636125a48), - CONST64(0x6c2daef49883b536), CONST64(0xd85a41f52d1b776c), CONST64(0x70242a62120e3638), CONST64(0x05cae9606523af8c), - CONST64(0xfb04f1f902f506f3), CONST64(0x1283c6ddcf454c09), CONST64(0x15c6e7766321a584), CONST64(0x3e9e50714fced11f), - CONST64(0x72abe2a9db497039), CONST64(0x7de8c409742c9cb0), CONST64(0x9b2cd58d16f93ac3), CONST64(0x636e885437e659bf), - CONST64(0xd993251ec7b654e2), CONST64(0x5df0d825782888a0), CONST64(0xb872658139174b5c), CONST64(0x642ba9ff9b82b032), - CONST64(0xd05c46fe2e1a7268), CONST64(0x2c1d96ac808b9d16), CONST64(0xa33ec0bc1ffe21df), CONST64(0x241b91a7838a9812), - CONST64(0x48363f531b092d24), CONST64(0x068c454046c9ca03), CONST64(0x4c35b2d89487a126), CONST64(0x4ab9f798d24e6b25), - CONST64(0x5b7c9d653ee142a3), CONST64(0x6de4ca1f722e96b8), CONST64(0x7362864231e453b7), CONST64(0x537a9a6e3de047a7), - CONST64(0x0b40ab2b20eb608b), CONST64(0xf447d759ad90ea7a), CONST64(0x49ff5bb8f1a40eaa), CONST64(0xf0445ad2221e6678), - CONST64(0x5c39bcce9285ab2e), CONST64(0x275d3d87a060fd9d), CONST64(0x0000000000000000), CONST64(0x35defb5a6f25b194), - CONST64(0xf302f6f201f403f7), CONST64(0xdb1cedd50ef112e3), CONST64(0xd45fcb75a194fe6a), CONST64(0x583a31451d0b272c), - CONST64(0x6b688f5f34e75cbb), CONST64(0x8f2356109f75bcc9), CONST64(0x2b58b7072cef749b), CONST64(0xbdb88ce15c34e4d0), - CONST64(0x95a697c65331f5c4), CONST64(0xeec2168f61d4a377), CONST64(0xceda0aa36dd0b767), CONST64(0x4433b5d39786a422), - CONST64(0xd7196755827e9be5), CONST64(0x01c964ebeaad238e), CONST64(0xbb34c9a11afd2ed3), CONST64(0x55f6df2e7b298da4), - CONST64(0x9da090cd5030f0c0), CONST64(0xc59aa1884d3bd7ec), CONST64(0x8c65fa30bc9fd946), CONST64(0x932ad28615f83fc7), - CONST64(0x7eae682957c6f93f), CONST64(0x986a79ad35135f4c), CONST64(0x3014123a0a061e18), CONST64(0x281e1b270f051114), - CONST64(0x66a4613452c5f633), CONST64(0x886677bb33115544), CONST64(0x9f2f58069977b6c1), CONST64(0xc7156943847c91ed), - CONST64(0xf7017b798e7a8ff5), CONST64(0xe70d756f887885fd), CONST64(0xadb482f75a36eed8), CONST64(0xe04854c4241c6c70), - CONST64(0xd596af9e4b39dde4), CONST64(0xf2cb9219eb592079), CONST64(0xc05048e828187860), CONST64(0x8ae9bf70fa561345), - CONST64(0xf18d3e39c8b345f6), CONST64(0xe9873724cdb04afa), CONST64(0x3dd8fc516c24b490), CONST64(0x1dc0e07d6020a080), - CONST64(0xf98b3932cbb240f2), CONST64(0xe44bd94fab92e072), CONST64(0x71ed4e89f8a315b6), CONST64(0x4eba7a135dc0e727), - CONST64(0x1a85c1d6cc44490d), CONST64(0x37513391a662f795), CONST64(0x806070b030105040), CONST64(0xc99f2b08c1b45eea), - CONST64(0x543fbbc59184ae2a), CONST64(0x2297d4e7c5435211), CONST64(0xec4dde44a893e576), CONST64(0x5eb674055bc2ed2f), - CONST64(0x6aa1ebb4de4a7f35), CONST64(0x81a9145bdabd73ce), CONST64(0x0c058a808c8f8906), CONST64(0x75eec302772d99b4), - CONST64(0x89af1350d9bc76ca), CONST64(0x946ff32db99cd64a), CONST64(0x77610bc9be6adfb5), CONST64(0x3a9dddfac0405d1d), - CONST64(0x3698577a4ccfd41b), CONST64(0x79eb4982fba210b2), CONST64(0x7427a7e99d80ba3a), CONST64(0x42bff093d14f6e21), - CONST64(0xf8425dd9211f637c), CONST64(0x1e864c5d43cac50f), CONST64(0x39db71dae3aa3892), CONST64(0x2a91d3ecc6425715), -}; - -static const ulong64 T6[256] = { - CONST64(0x6a01bbb9d268bad3), CONST64(0x66b1e59a4d1954fc), CONST64(0x14cde265bc932f71), CONST64(0x1b512587cdb9749c), - CONST64(0x57a4f7a2510253f5), CONST64(0xbe03d0d66bb8d368), CONST64(0xb504d6de6fbdd26b), CONST64(0x85feb35229644dd7), - CONST64(0x4aadfdba5d0d50f0), CONST64(0xe063cf098a26ace9), CONST64(0x9684091c0e838d8a), CONST64(0x4d1aa591c679bfdc), - CONST64(0x374d3da7ddad7090), CONST64(0x5ca3f1aa550752f6), CONST64(0x17e17ba452c89ab3), CONST64(0x8ef9b55a2d614cd4), - CONST64(0x20ac46038f65ea23), CONST64(0x8411c4e673a6d562), CONST64(0x68c255cc66f197a4), CONST64(0xa80ddcc663b2d16e), - CONST64(0xd099aa85ccff3355), CONST64(0x41aafbb2590851f3), CONST64(0x0f9cc7e2712a5bed), CONST64(0xae55f359a204a6f7), - CONST64(0xc120febe5f81de7f), CONST64(0xa2e5ad7a3d7548d8), CONST64(0xcc7fd7299a32a8e5), CONST64(0x0ae871bc5ec799b6), - CONST64(0xe63be0964b90db70), CONST64(0xdb9eac8dc8fa3256), CONST64(0x152295d1e651b7c4), CONST64(0xaace32b3d72bfc19), - CONST64(0x7393704bab48e338), CONST64(0x3bfd638442dc9ebf), CONST64(0x52d041fc7eef91ae), CONST64(0x1ce67dac56cd9bb0), - CONST64(0x78947643af4de23b), CONST64(0x6106bdb1d66dbbd0), CONST64(0xf1da9b32195841c3), CONST64(0xe5177957a5cb6eb2), - CONST64(0xb35cf941ae0ba5f2), CONST64(0x564b80160bc0cb40), CONST64(0xc20c677fb1da6bbd), CONST64(0x7ecc59dc6efb95a2), - CONST64(0x9f40e161be1fa1fe), CONST64(0xc3e310cbeb18f308), CONST64(0x2f3081e1fe4fb1ce), CONST64(0x160e0c10080a0206), - CONST64(0x675e922e17dbcc49), CONST64(0x3f66a26e37f3c451), CONST64(0xcf534ee874691d27), CONST64(0x9c6c78a05044143c), - CONST64(0x0e73b0562be8c358), CONST64(0x9a34573f91f263a5), CONST64(0xed3ce69e4f95da73), CONST64(0x358ed3d269345de7), - CONST64(0x2380dfc2613e5fe1), CONST64(0xd72ef2ae578bdc79), CONST64(0x486e13cfe9947d87), CONST64(0x6c59942613decd4a), - CONST64(0x5e601fdfe19e7f81), CONST64(0x049bc1ea752f5aee), CONST64(0xf3197547adc16cb4), CONST64(0x3e89d5da6d315ce4), - CONST64(0xefff08ebfb0cf704), CONST64(0x47f2d42d98be266a), CONST64(0xb7c738abdb24ff1c), CONST64(0x11b9543b937eed2a), - CONST64(0x36a24a13876fe825), CONST64(0x26f4699c4ed39dba), CONST64(0xee107f5fa1ce6fb1), CONST64(0x8b8d0304028c8e8f), - CONST64(0xe34f56c8647d192b), CONST64(0x9447e769ba1aa0fd), CONST64(0xdeea1ad3e717f00d), CONST64(0xba98113c1e978986), - CONST64(0x692d22783c330f11), CONST64(0x311512381c1b0709), CONST64(0xfd6ac5118629afec), CONST64(0x9bdb208bcb30fb10), - CONST64(0x5838304020280818), CONST64(0x976b7ea85441153f), CONST64(0x7f232e6834390d17), CONST64(0x2c1c18201014040c), - CONST64(0x0b07060804050103), CONST64(0xab2145078de964ac), CONST64(0xca27f8b65b84df7c), CONST64(0x0d5f2997c5b3769a), - CONST64(0x64720beff980798b), CONST64(0xdc29f4a6538edd7a), CONST64(0xb2b38ef5f4c93d47), CONST64(0x8a6274b0584e163a), - CONST64(0xa4bd82e5fcc33f41), CONST64(0xfc85b2a5dceb3759), CONST64(0xf81e734fa9c46db7), CONST64(0x95a890dde0d83848), - CONST64(0x7708b1a1de67b9d6), CONST64(0x2a4437bfd1a27395), CONST64(0x3da54c1b836ae926), CONST64(0xea8bbeb5d4e1355f), - CONST64(0x6db6e392491c55ff), CONST64(0x3c4a3bafd9a87193), CONST64(0x727c07fff18a7b8d), CONST64(0x9d830f140a868c89), - CONST64(0x214331b7d5a77296), CONST64(0xb19f17341a928885), CONST64(0xe4f80ee3ff09f607), CONST64(0x33d6fc4da8822a7e), - CONST64(0xafba84edf8c63e42), CONST64(0x2887d9ca653b5ee2), CONST64(0x4cf5d2259cbb2769), CONST64(0xc0cf890a054346ca), - CONST64(0x74242860303c0c14), CONST64(0xa026430f89ec65af), CONST64(0xdf056d67bdd568b8), CONST64(0x8c3a5b2f99f861a3), - CONST64(0x1d090a180c0f0305), CONST64(0x187dbc4623e2c15e), CONST64(0x7bb8ef82411657f9), CONST64(0x9918cefe7fa9d667), - CONST64(0xf035ec86439ad976), CONST64(0x1295cdfa7d2558e8), CONST64(0xfb32ea8e479fd875), CONST64(0xbd2f491785e366aa), - CONST64(0x921fc8f67bacd764), CONST64(0x83a69ccde8d23a4e), CONST64(0x4b428a0e07cfc845), CONST64(0xb9b488fdf0cc3c44), - CONST64(0x90dc2683cf35fa13), CONST64(0x63c553c462f496a7), CONST64(0xa552f551a601a7f4), CONST64(0x01ef77b45ac298b5), - CONST64(0x1abe5233977bec29), CONST64(0x7c0fb7a9da62b8d5), CONST64(0x226fa8763bfcc754), CONST64(0xf66dc319822caeef), - CONST64(0xd4026b6fb9d069bb), CONST64(0xbfeca762317a4bdd), CONST64(0xd176dd31963dabe0), CONST64(0xc778d1219e37a9e6), - CONST64(0xb6284f1f81e667a9), CONST64(0x4e363c5028220a1e), CONST64(0xcbc88f02014647c9), CONST64(0xc8e416c3ef1df20b), - CONST64(0x032c99c1ee5bb5c2), CONST64(0x6beecc0d88aa2266), CONST64(0x4981647bb356e532), CONST64(0x0cb05e239f71ee2f), - CONST64(0x461da399c27cbedf), CONST64(0x38d1fa45ac872b7d), CONST64(0xe2a0217c3ebf819e), CONST64(0xa67e6c90485a1236), - CONST64(0xf4ae2d6c36b58398), CONST64(0xf5415ad86c771b2d), CONST64(0x622a247038360e12), CONST64(0x60e9ca058caf2365), - CONST64(0xf9f104fbf306f502), CONST64(0xddc68312094c45cf), CONST64(0x76e7c61584a52163), CONST64(0x71509e3e1fd1ce4f), - CONST64(0xa9e2ab72397049db), CONST64(0x09c4e87db09c2c74), CONST64(0x8dd52c9bc33af916), CONST64(0x54886e63bf59e637), - CONST64(0x1e2593d9e254b6c7), CONST64(0x25d8f05da0882878), CONST64(0x816572b85c4b1739), CONST64(0xffa92b6432b0829b), - CONST64(0xfe465cd068721a2e), CONST64(0xac961d2c169d8b80), CONST64(0xbcc03ea3df21fe1f), CONST64(0xa7911b2412988a83), - CONST64(0x533f3648242d091b), CONST64(0x40458c0603cac946), CONST64(0xd8b2354c26a18794), CONST64(0x98f7b94a256b4ed2), - CONST64(0x659d7c5ba342e13e), CONST64(0x1fcae46db8962e72), CONST64(0x42866273b753e431), CONST64(0x6e9a7a53a747e03d), - CONST64(0x2bab400b8b60eb20), CONST64(0x59d747f47aea90ad), CONST64(0xb85bff49aa0ea4f1), CONST64(0xd25a44f078661e22), - CONST64(0xcebc395c2eab8592), CONST64(0x873d5d279dfd60a0), CONST64(0x0000000000000000), CONST64(0x5afbde3594b1256f), - CONST64(0xf2f602f3f703f401), CONST64(0xd5ed1cdbe312f10e), CONST64(0x75cb5fd46afe94a1), CONST64(0x45313a582c270b1d), - CONST64(0x5f8f686bbb5ce734), CONST64(0x1056238fc9bc759f), CONST64(0x07b7582b9b74ef2c), CONST64(0xe18cb8bdd0e4345c), - CONST64(0xc697a695c4f53153), CONST64(0x8f16c2ee77a3d461), CONST64(0xa30adace67b7d06d), CONST64(0xd3b5334422a48697), - CONST64(0x556719d7e59b7e82), CONST64(0xeb64c9018e23adea), CONST64(0xa1c934bbd32efd1a), CONST64(0x2edff655a48d297b), - CONST64(0xcd90a09dc0f03050), CONST64(0x88a19ac5ecd73b4d), CONST64(0x30fa658c46d99fbc), CONST64(0x86d22a93c73ff815), - CONST64(0x2968ae7e3ff9c657), CONST64(0xad796a984c5f1335), CONST64(0x3a121430181e060a), CONST64(0x271b1e281411050f), - CONST64(0x3461a46633f6c552), CONST64(0xbb77668844551133), CONST64(0x06582f9fc1b67799), CONST64(0x436915c7ed917c84), - CONST64(0x797b01f7f58f7a8e), CONST64(0x6f750de7fd857888), CONST64(0xf782b4add8ee365a), CONST64(0xc45448e0706c1c24), - CONST64(0x9eaf96d5e4dd394b), CONST64(0x1992cbf2792059eb), CONST64(0xe84850c060781828), CONST64(0x70bfe98a451356fa), - CONST64(0x393e8df1f645b3c8), CONST64(0x243787e9fa4ab0cd), CONST64(0x51fcd83d90b4246c), CONST64(0x7de0c01d80a02060), - CONST64(0x32398bf9f240b2cb), CONST64(0x4fd94be472e092ab), CONST64(0x894eed71b615a3f8), CONST64(0x137aba4e27e7c05d), - CONST64(0xd6c1851a0d4944cc), CONST64(0x9133513795f762a6), CONST64(0xb070608040501030), CONST64(0x082b9fc9ea5eb4c1), - CONST64(0xc5bb3f542aae8491), CONST64(0xe7d49722115243c5), CONST64(0x44de4dec76e593a8), CONST64(0x0574b65e2fedc25b), - CONST64(0xb4eba16a357f4ade), CONST64(0x5b14a981ce73bdda), CONST64(0x808a050c06898f8c), CONST64(0x02c3ee75b4992d77), - CONST64(0x5013af89ca76bcd9), CONST64(0x2df36f944ad69cb9), CONST64(0xc90b6177b5df6abe), CONST64(0xfadd9d3a1d5d40c0), - CONST64(0x7a5798361bd4cf4c), CONST64(0x8249eb79b210a2fb), CONST64(0xe9a727743aba809d), CONST64(0x93f0bf42216e4fd1), - CONST64(0xd95d42f87c631f21), CONST64(0x5d4c861e0fc5ca43), CONST64(0xda71db399238aae3), CONST64(0xecd3912a155742c6), -}; - -static const ulong64 T7[256] = { - CONST64(0x016ab9bb68d2d3ba), CONST64(0xb1669ae5194dfc54), CONST64(0xcd1465e293bc712f), CONST64(0x511b8725b9cd9c74), - CONST64(0xa457a2f70251f553), CONST64(0x03bed6d0b86b68d3), CONST64(0x04b5ded6bd6f6bd2), CONST64(0xfe8552b36429d74d), - CONST64(0xad4abafd0d5df050), CONST64(0x63e009cf268ae9ac), CONST64(0x84961c09830e8a8d), CONST64(0x1a4d91a579c6dcbf), - CONST64(0x4d37a73daddd9070), CONST64(0xa35caaf10755f652), CONST64(0xe117a47bc852b39a), CONST64(0xf98e5ab5612dd44c), - CONST64(0xac200346658f23ea), CONST64(0x1184e6c4a67362d5), CONST64(0xc268cc55f166a497), CONST64(0x0da8c6dcb2636ed1), - CONST64(0x99d085aaffcc5533), CONST64(0xaa41b2fb0859f351), CONST64(0x9c0fe2c72a71ed5b), CONST64(0x55ae59f304a2f7a6), - CONST64(0x20c1befe815f7fde), CONST64(0xe5a27aad753dd848), CONST64(0x7fcc29d7329ae5a8), CONST64(0xe80abc71c75eb699), - CONST64(0x3be696e0904b70db), CONST64(0x9edb8dacfac85632), CONST64(0x2215d19551e6c4b7), CONST64(0xceaab3322bd719fc), - CONST64(0x93734b7048ab38e3), CONST64(0xfd3b8463dc42bf9e), CONST64(0xd052fc41ef7eae91), CONST64(0xe61cac7dcd56b09b), - CONST64(0x947843764daf3be2), CONST64(0x0661b1bd6dd6d0bb), CONST64(0xdaf1329b5819c341), CONST64(0x17e55779cba5b26e), - CONST64(0x5cb341f90baef2a5), CONST64(0x4b561680c00b40cb), CONST64(0x0cc27f67dab1bd6b), CONST64(0xcc7edc59fb6ea295), - CONST64(0x409f61e11fbefea1), CONST64(0xe3c3cb1018eb08f3), CONST64(0x302fe1814ffeceb1), CONST64(0x0e16100c0a080602), - CONST64(0x5e672e92db1749cc), CONST64(0x663f6ea2f33751c4), CONST64(0x53cfe84e6974271d), CONST64(0x6c9ca07844503c14), - CONST64(0x730e56b0e82b58c3), CONST64(0x349a3f57f291a563), CONST64(0x3ced9ee6954f73da), CONST64(0x8e35d2d33469e75d), - CONST64(0x8023c2df3e61e15f), CONST64(0x2ed7aef28b5779dc), CONST64(0x6e48cf1394e9877d), CONST64(0x596c2694de134acd), - CONST64(0x605edf1f9ee1817f), CONST64(0x9b04eac12f75ee5a), CONST64(0x19f34775c1adb46c), CONST64(0x893edad5316de45c), - CONST64(0xffefeb080cfb04f7), CONST64(0xf2472dd4be986a26), CONST64(0xc7b7ab3824db1cff), CONST64(0xb9113b547e932aed), - CONST64(0xa236134a6f8725e8), CONST64(0xf4269c69d34eba9d), CONST64(0x10ee5f7fcea1b16f), CONST64(0x8d8b04038c028f8e), - CONST64(0x4fe3c8567d642b19), CONST64(0x479469e71abafda0), CONST64(0xeaded31a17e70df0), CONST64(0x98ba3c11971e8689), - CONST64(0x2d697822333c110f), CONST64(0x153138121b1c0907), CONST64(0x6afd11c52986ecaf), CONST64(0xdb9b8b2030cb10fb), - CONST64(0x3858403028201808), CONST64(0x6b97a87e41543f15), CONST64(0x237f682e3934170d), CONST64(0x1c2c201814100c04), - CONST64(0x070b080605040301), CONST64(0x21ab0745e98dac64), CONST64(0x27cab6f8845b7cdf), CONST64(0x5f0d9729b3c59a76), - CONST64(0x7264ef0b80f98b79), CONST64(0x29dca6f48e537add), CONST64(0xb3b2f58ec9f4473d), CONST64(0x628ab0744e583a16), - CONST64(0xbda4e582c3fc413f), CONST64(0x85fca5b2ebdc5937), CONST64(0x1ef84f73c4a9b76d), CONST64(0xa895dd90d8e04838), - CONST64(0x0877a1b167ded6b9), CONST64(0x442abf37a2d19573), CONST64(0xa53d1b4c6a8326e9), CONST64(0x8beab5bee1d45f35), - CONST64(0xb66d92e31c49ff55), CONST64(0x4a3caf3ba8d99371), CONST64(0x7c72ff078af18d7b), CONST64(0x839d140f860a898c), - CONST64(0x4321b731a7d59672), CONST64(0x9fb13417921a8588), CONST64(0xf8e4e30e09ff07f6), CONST64(0xd6334dfc82a87e2a), - CONST64(0xbaafed84c6f8423e), CONST64(0x8728cad93b65e25e), CONST64(0xf54c25d2bb9c6927), CONST64(0xcfc00a894305ca46), - CONST64(0x247460283c30140c), CONST64(0x26a00f43ec89af65), CONST64(0x05df676dd5bdb868), CONST64(0x3a8c2f5bf899a361), - CONST64(0x091d180a0f0c0503), CONST64(0x7d1846bce2235ec1), CONST64(0xb87b82ef1641f957), CONST64(0x1899fecea97f67d6), - CONST64(0x35f086ec9a4376d9), CONST64(0x9512facd257de858), CONST64(0x32fb8eea9f4775d8), CONST64(0x2fbd1749e385aa66), - CONST64(0x1f92f6c8ac7b64d7), CONST64(0xa683cd9cd2e84e3a), CONST64(0x424b0e8acf0745c8), CONST64(0xb4b9fd88ccf0443c), - CONST64(0xdc90832635cf13fa), CONST64(0xc563c453f462a796), CONST64(0x52a551f501a6f4a7), CONST64(0xef01b477c25ab598), - CONST64(0xbe1a33527b9729ec), CONST64(0x0f7ca9b762dad5b8), CONST64(0x6f2276a8fc3b54c7), CONST64(0x6df619c32c82efae), - CONST64(0x02d46f6bd0b9bb69), CONST64(0xecbf62a77a31dd4b), CONST64(0x76d131dd3d96e0ab), CONST64(0x78c721d1379ee6a9), - CONST64(0x28b61f4fe681a967), CONST64(0x364e503c22281e0a), CONST64(0xc8cb028f4601c947), CONST64(0xe4c8c3161def0bf2), - CONST64(0x2c03c1995beec2b5), CONST64(0xee6b0dccaa886622), CONST64(0x81497b6456b332e5), CONST64(0xb00c235e719f2fee), - CONST64(0x1d4699a37cc2dfbe), CONST64(0xd13845fa87ac7d2b), CONST64(0xa0e27c21bf3e9e81), CONST64(0x7ea6906c5a483612), - CONST64(0xaef46c2db5369883), CONST64(0x41f5d85a776c2d1b), CONST64(0x2a6270243638120e), CONST64(0xe96005caaf8c6523), - CONST64(0xf1f9fb0406f302f5), CONST64(0xc6dd12834c09cf45), CONST64(0xe77615c6a5846321), CONST64(0x50713e9ed11f4fce), - CONST64(0xe2a972ab7039db49), CONST64(0xc4097de89cb0742c), CONST64(0xd58d9b2c3ac316f9), CONST64(0x8854636e59bf37e6), - CONST64(0x251ed99354e2c7b6), CONST64(0xd8255df088a07828), CONST64(0x6581b8724b5c3917), CONST64(0xa9ff642bb0329b82), - CONST64(0x46fed05c72682e1a), CONST64(0x96ac2c1d9d16808b), CONST64(0xc0bca33e21df1ffe), CONST64(0x91a7241b9812838a), - CONST64(0x3f5348362d241b09), CONST64(0x4540068cca0346c9), CONST64(0xb2d84c35a1269487), CONST64(0xf7984ab96b25d24e), - CONST64(0x9d655b7c42a33ee1), CONST64(0xca1f6de496b8722e), CONST64(0x8642736253b731e4), CONST64(0x9a6e537a47a73de0), - CONST64(0xab2b0b40608b20eb), CONST64(0xd759f447ea7aad90), CONST64(0x5bb849ff0eaaf1a4), CONST64(0x5ad2f0446678221e), - CONST64(0xbcce5c39ab2e9285), CONST64(0x3d87275dfd9da060), CONST64(0x0000000000000000), CONST64(0xfb5a35deb1946f25), - CONST64(0xf6f2f30203f701f4), CONST64(0xedd5db1c12e30ef1), CONST64(0xcb75d45ffe6aa194), CONST64(0x3145583a272c1d0b), - CONST64(0x8f5f6b685cbb34e7), CONST64(0x56108f23bcc99f75), CONST64(0xb7072b58749b2cef), CONST64(0x8ce1bdb8e4d05c34), - CONST64(0x97c695a6f5c45331), CONST64(0x168feec2a37761d4), CONST64(0x0aa3cedab7676dd0), CONST64(0xb5d34433a4229786), - CONST64(0x6755d7199be5827e), CONST64(0x64eb01c9238eeaad), CONST64(0xc9a1bb342ed31afd), CONST64(0xdf2e55f68da47b29), - CONST64(0x90cd9da0f0c05030), CONST64(0xa188c59ad7ec4d3b), CONST64(0xfa308c65d946bc9f), CONST64(0xd286932a3fc715f8), - CONST64(0x68297eaef93f57c6), CONST64(0x79ad986a5f4c3513), CONST64(0x123a30141e180a06), CONST64(0x1b27281e11140f05), - CONST64(0x613466a4f63352c5), CONST64(0x77bb886655443311), CONST64(0x58069f2fb6c19977), CONST64(0x6943c71591ed847c), - CONST64(0x7b79f7018ff58e7a), CONST64(0x756fe70d85fd8878), CONST64(0x82f7adb4eed85a36), CONST64(0x54c4e0486c70241c), - CONST64(0xaf9ed596dde44b39), CONST64(0x9219f2cb2079eb59), CONST64(0x48e8c05078602818), CONST64(0xbf708ae91345fa56), - CONST64(0x3e39f18d45f6c8b3), CONST64(0x3724e9874afacdb0), CONST64(0xfc513dd8b4906c24), CONST64(0xe07d1dc0a0806020), - CONST64(0x3932f98b40f2cbb2), CONST64(0xd94fe44be072ab92), CONST64(0x4e8971ed15b6f8a3), CONST64(0x7a134ebae7275dc0), - CONST64(0xc1d61a85490dcc44), CONST64(0x33913751f795a662), CONST64(0x70b0806050403010), CONST64(0x2b08c99f5eeac1b4), - CONST64(0xbbc5543fae2a9184), CONST64(0xd4e722975211c543), CONST64(0xde44ec4de576a893), CONST64(0x74055eb6ed2f5bc2), - CONST64(0xebb46aa17f35de4a), CONST64(0x145b81a973cedabd), CONST64(0x8a800c0589068c8f), CONST64(0xc30275ee99b4772d), - CONST64(0x135089af76cad9bc), CONST64(0xf32d946fd64ab99c), CONST64(0x0bc97761dfb5be6a), CONST64(0xddfa3a9d5d1dc040), - CONST64(0x577a3698d41b4ccf), CONST64(0x498279eb10b2fba2), CONST64(0xa7e97427ba3a9d80), CONST64(0xf09342bf6e21d14f), - CONST64(0x5dd9f842637c211f), CONST64(0x4c5d1e86c50f43ca), CONST64(0x71da39db3892e3aa), CONST64(0xd3ec2a915715c642), -}; - -static const ulong64 c[R + 1] = { - CONST64(0xba542f7453d3d24d), - CONST64(0x50ac8dbf70529a4c), - CONST64(0xead597d133515ba6), - CONST64(0xde48a899db32b7fc), - CONST64(0xe39e919be2bb416e), - CONST64(0xa5cb6b95a1f3b102), - CONST64(0xccc41d14c363da5d), - CONST64(0x5fdc7dcd7f5a6c5c), - CONST64(0xf726ffede89d6f8e), -}; - - /** - Initialize the Khazad block cipher - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful - */ -int khazad_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - int r; - const ulong64 *S; - ulong64 K2, K1; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - if (keylen != 16) { - return CRYPT_INVALID_KEYSIZE; - } - if (num_rounds != 8 && num_rounds != 0) { - return CRYPT_INVALID_ROUNDS; - } - - /* use 7th table */ - S = T7; - - /* - * map unsigned char array cipher key to initial key state (mu): - */ - K2 = - ((ulong64)key[ 0] << 56) ^ - ((ulong64)key[ 1] << 48) ^ - ((ulong64)key[ 2] << 40) ^ - ((ulong64)key[ 3] << 32) ^ - ((ulong64)key[ 4] << 24) ^ - ((ulong64)key[ 5] << 16) ^ - ((ulong64)key[ 6] << 8) ^ - ((ulong64)key[ 7] ); - K1 = - ((ulong64)key[ 8] << 56) ^ - ((ulong64)key[ 9] << 48) ^ - ((ulong64)key[10] << 40) ^ - ((ulong64)key[11] << 32) ^ - ((ulong64)key[12] << 24) ^ - ((ulong64)key[13] << 16) ^ - ((ulong64)key[14] << 8) ^ - ((ulong64)key[15] ); - - /* - * compute the round keys: - */ - for (r = 0; r <= R; r++) { - /* - * K[r] = rho(c[r], K1) ^ K2; - */ - skey->khazad.roundKeyEnc[r] = - T0[(int)(K1 >> 56) ] ^ - T1[(int)(K1 >> 48) & 0xff] ^ - T2[(int)(K1 >> 40) & 0xff] ^ - T3[(int)(K1 >> 32) & 0xff] ^ - T4[(int)(K1 >> 24) & 0xff] ^ - T5[(int)(K1 >> 16) & 0xff] ^ - T6[(int)(K1 >> 8) & 0xff] ^ - T7[(int)(K1 ) & 0xff] ^ - c[r] ^ K2; - K2 = K1; K1 = skey->khazad.roundKeyEnc[r]; - } - /* - * compute the inverse key schedule: - * K'^0 = K^R, K'^R = K^0, K'^r = theta(K^{R-r}) - */ - skey->khazad.roundKeyDec[0] = skey->khazad.roundKeyEnc[R]; - for (r = 1; r < R; r++) { - K1 = skey->khazad.roundKeyEnc[R - r]; - skey->khazad.roundKeyDec[r] = - T0[(int)S[(int)(K1 >> 56) ] & 0xff] ^ - T1[(int)S[(int)(K1 >> 48) & 0xff] & 0xff] ^ - T2[(int)S[(int)(K1 >> 40) & 0xff] & 0xff] ^ - T3[(int)S[(int)(K1 >> 32) & 0xff] & 0xff] ^ - T4[(int)S[(int)(K1 >> 24) & 0xff] & 0xff] ^ - T5[(int)S[(int)(K1 >> 16) & 0xff] & 0xff] ^ - T6[(int)S[(int)(K1 >> 8) & 0xff] & 0xff] ^ - T7[(int)S[(int)(K1 ) & 0xff] & 0xff]; - } - skey->khazad.roundKeyDec[R] = skey->khazad.roundKeyEnc[0]; - - return CRYPT_OK; -} - -static void khazad_crypt(const unsigned char *plaintext, unsigned char *ciphertext, - const ulong64 *roundKey) { - int r; - ulong64 state; - /* - * map plaintext block to cipher state (mu) - * and add initial round key (sigma[K^0]): - */ - state = - ((ulong64)plaintext[0] << 56) ^ - ((ulong64)plaintext[1] << 48) ^ - ((ulong64)plaintext[2] << 40) ^ - ((ulong64)plaintext[3] << 32) ^ - ((ulong64)plaintext[4] << 24) ^ - ((ulong64)plaintext[5] << 16) ^ - ((ulong64)plaintext[6] << 8) ^ - ((ulong64)plaintext[7] ) ^ - roundKey[0]; - - /* - * R - 1 full rounds: - */ - for (r = 1; r < R; r++) { - state = - T0[(int)(state >> 56) ] ^ - T1[(int)(state >> 48) & 0xff] ^ - T2[(int)(state >> 40) & 0xff] ^ - T3[(int)(state >> 32) & 0xff] ^ - T4[(int)(state >> 24) & 0xff] ^ - T5[(int)(state >> 16) & 0xff] ^ - T6[(int)(state >> 8) & 0xff] ^ - T7[(int)(state ) & 0xff] ^ - roundKey[r]; - } - - /* - * last round: - */ - state = - (T0[(int)(state >> 56) ] & CONST64(0xff00000000000000)) ^ - (T1[(int)(state >> 48) & 0xff] & CONST64(0x00ff000000000000)) ^ - (T2[(int)(state >> 40) & 0xff] & CONST64(0x0000ff0000000000)) ^ - (T3[(int)(state >> 32) & 0xff] & CONST64(0x000000ff00000000)) ^ - (T4[(int)(state >> 24) & 0xff] & CONST64(0x00000000ff000000)) ^ - (T5[(int)(state >> 16) & 0xff] & CONST64(0x0000000000ff0000)) ^ - (T6[(int)(state >> 8) & 0xff] & CONST64(0x000000000000ff00)) ^ - (T7[(int)(state ) & 0xff] & CONST64(0x00000000000000ff)) ^ - roundKey[R]; - - /* - * map cipher state to ciphertext block (mu^{-1}): - */ - ciphertext[0] = (unsigned char)(state >> 56); - ciphertext[1] = (unsigned char)(state >> 48); - ciphertext[2] = (unsigned char)(state >> 40); - ciphertext[3] = (unsigned char)(state >> 32); - ciphertext[4] = (unsigned char)(state >> 24); - ciphertext[5] = (unsigned char)(state >> 16); - ciphertext[6] = (unsigned char)(state >> 8); - ciphertext[7] = (unsigned char)(state ); -} - -/** - Encrypts a block of text with Khazad - @param pt The input plaintext (8 bytes) - @param ct The output ciphertext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int khazad_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - khazad_crypt(pt, ct, skey->khazad.roundKeyEnc); - return CRYPT_OK; -} - -/** - Decrypts a block of text with Khazad - @param ct The input ciphertext (8 bytes) - @param pt The output plaintext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int khazad_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - khazad_crypt(ct, pt, skey->khazad.roundKeyDec); - return CRYPT_OK; -} - -/** - Performs a self-test of the Khazad block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int khazad_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct test { - unsigned char pt[8], ct[8], key[16]; - } tests[] = { -{ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x49, 0xA4, 0xCE, 0x32, 0xAC, 0x19, 0x0E, 0x3F }, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } -}, { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x64, 0x5D, 0x77, 0x3E, 0x40, 0xAB, 0xDD, 0x53 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } -}, { - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x9E, 0x39, 0x98, 0x64, 0xF7, 0x8E, 0xCA, 0x02 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } -}, { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, - { 0xA9, 0xDF, 0x3D, 0x2C, 0x64, 0xD3, 0xEA, 0x28 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } -} -}; - int x, y; - unsigned char buf[2][8]; - symmetric_key skey; - - for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - khazad_setup(tests[x].key, 16, 0, &skey); - khazad_ecb_encrypt(tests[x].pt, buf[0], &skey); - khazad_ecb_decrypt(buf[0], buf[1], &skey); - if (compare_testvector(buf[0], 8, tests[x].ct, 8, "Khazad Encrypt", x) || - compare_testvector(buf[1], 8, tests[x].pt, 8, "Khazad Decrypt", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - - for (y = 0; y < 1000; y++) khazad_ecb_encrypt(buf[0], buf[0], &skey); - for (y = 0; y < 1000; y++) khazad_ecb_decrypt(buf[0], buf[0], &skey); - if (compare_testvector(buf[0], 8, tests[x].ct, 8, "Khazad 1000", 1000)) { - return CRYPT_FAIL_TESTVECTOR; - } - - } - return CRYPT_OK; -#endif -} - -/** Terminate the context - @param skey The scheduled key -*/ -void khazad_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int khazad_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if (*keysize >= 16) { - *keysize = 16; - return CRYPT_OK; - } else { - return CRYPT_INVALID_KEYSIZE; - } -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/kseed.c b/src/libtomcrypt/src/ciphers/kseed.c deleted file mode 100644 index 85850fc117..0000000000 --- a/src/libtomcrypt/src/ciphers/kseed.c +++ /dev/null @@ -1,376 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file kseed.c - seed implementation of SEED derived from RFC4269 - Tom St Denis -*/ - -#include "tomcrypt.h" - -#ifdef LTC_KSEED - -const struct ltc_cipher_descriptor kseed_desc = { - "seed", - 20, - 16, 16, 16, 16, - &kseed_setup, - &kseed_ecb_encrypt, - &kseed_ecb_decrypt, - &kseed_test, - &kseed_done, - &kseed_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -static const ulong32 SS0[256] = { -0x2989A1A8UL,0x05858184UL,0x16C6D2D4UL,0x13C3D3D0UL,0x14445054UL,0x1D0D111CUL,0x2C8CA0ACUL,0x25052124UL, -0x1D4D515CUL,0x03434340UL,0x18081018UL,0x1E0E121CUL,0x11415150UL,0x3CCCF0FCUL,0x0ACAC2C8UL,0x23436360UL, -0x28082028UL,0x04444044UL,0x20002020UL,0x1D8D919CUL,0x20C0E0E0UL,0x22C2E2E0UL,0x08C8C0C8UL,0x17071314UL, -0x2585A1A4UL,0x0F8F838CUL,0x03030300UL,0x3B4B7378UL,0x3B8BB3B8UL,0x13031310UL,0x12C2D2D0UL,0x2ECEE2ECUL, -0x30407070UL,0x0C8C808CUL,0x3F0F333CUL,0x2888A0A8UL,0x32023230UL,0x1DCDD1DCUL,0x36C6F2F4UL,0x34447074UL, -0x2CCCE0ECUL,0x15859194UL,0x0B0B0308UL,0x17475354UL,0x1C4C505CUL,0x1B4B5358UL,0x3D8DB1BCUL,0x01010100UL, -0x24042024UL,0x1C0C101CUL,0x33437370UL,0x18889098UL,0x10001010UL,0x0CCCC0CCUL,0x32C2F2F0UL,0x19C9D1D8UL, -0x2C0C202CUL,0x27C7E3E4UL,0x32427270UL,0x03838380UL,0x1B8B9398UL,0x11C1D1D0UL,0x06868284UL,0x09C9C1C8UL, -0x20406060UL,0x10405050UL,0x2383A3A0UL,0x2BCBE3E8UL,0x0D0D010CUL,0x3686B2B4UL,0x1E8E929CUL,0x0F4F434CUL, -0x3787B3B4UL,0x1A4A5258UL,0x06C6C2C4UL,0x38487078UL,0x2686A2A4UL,0x12021210UL,0x2F8FA3ACUL,0x15C5D1D4UL, -0x21416160UL,0x03C3C3C0UL,0x3484B0B4UL,0x01414140UL,0x12425250UL,0x3D4D717CUL,0x0D8D818CUL,0x08080008UL, -0x1F0F131CUL,0x19899198UL,0x00000000UL,0x19091118UL,0x04040004UL,0x13435350UL,0x37C7F3F4UL,0x21C1E1E0UL, -0x3DCDF1FCUL,0x36467274UL,0x2F0F232CUL,0x27072324UL,0x3080B0B0UL,0x0B8B8388UL,0x0E0E020CUL,0x2B8BA3A8UL, -0x2282A2A0UL,0x2E4E626CUL,0x13839390UL,0x0D4D414CUL,0x29496168UL,0x3C4C707CUL,0x09090108UL,0x0A0A0208UL, -0x3F8FB3BCUL,0x2FCFE3ECUL,0x33C3F3F0UL,0x05C5C1C4UL,0x07878384UL,0x14041014UL,0x3ECEF2FCUL,0x24446064UL, -0x1ECED2DCUL,0x2E0E222CUL,0x0B4B4348UL,0x1A0A1218UL,0x06060204UL,0x21012120UL,0x2B4B6368UL,0x26466264UL, -0x02020200UL,0x35C5F1F4UL,0x12829290UL,0x0A8A8288UL,0x0C0C000CUL,0x3383B3B0UL,0x3E4E727CUL,0x10C0D0D0UL, -0x3A4A7278UL,0x07474344UL,0x16869294UL,0x25C5E1E4UL,0x26062224UL,0x00808080UL,0x2D8DA1ACUL,0x1FCFD3DCUL, -0x2181A1A0UL,0x30003030UL,0x37073334UL,0x2E8EA2ACUL,0x36063234UL,0x15051114UL,0x22022220UL,0x38083038UL, -0x34C4F0F4UL,0x2787A3A4UL,0x05454144UL,0x0C4C404CUL,0x01818180UL,0x29C9E1E8UL,0x04848084UL,0x17879394UL, -0x35053134UL,0x0BCBC3C8UL,0x0ECEC2CCUL,0x3C0C303CUL,0x31417170UL,0x11011110UL,0x07C7C3C4UL,0x09898188UL, -0x35457174UL,0x3BCBF3F8UL,0x1ACAD2D8UL,0x38C8F0F8UL,0x14849094UL,0x19495158UL,0x02828280UL,0x04C4C0C4UL, -0x3FCFF3FCUL,0x09494148UL,0x39093138UL,0x27476364UL,0x00C0C0C0UL,0x0FCFC3CCUL,0x17C7D3D4UL,0x3888B0B8UL, -0x0F0F030CUL,0x0E8E828CUL,0x02424240UL,0x23032320UL,0x11819190UL,0x2C4C606CUL,0x1BCBD3D8UL,0x2484A0A4UL, -0x34043034UL,0x31C1F1F0UL,0x08484048UL,0x02C2C2C0UL,0x2F4F636CUL,0x3D0D313CUL,0x2D0D212CUL,0x00404040UL, -0x3E8EB2BCUL,0x3E0E323CUL,0x3C8CB0BCUL,0x01C1C1C0UL,0x2A8AA2A8UL,0x3A8AB2B8UL,0x0E4E424CUL,0x15455154UL, -0x3B0B3338UL,0x1CCCD0DCUL,0x28486068UL,0x3F4F737CUL,0x1C8C909CUL,0x18C8D0D8UL,0x0A4A4248UL,0x16465254UL, -0x37477374UL,0x2080A0A0UL,0x2DCDE1ECUL,0x06464244UL,0x3585B1B4UL,0x2B0B2328UL,0x25456164UL,0x3ACAF2F8UL, -0x23C3E3E0UL,0x3989B1B8UL,0x3181B1B0UL,0x1F8F939CUL,0x1E4E525CUL,0x39C9F1F8UL,0x26C6E2E4UL,0x3282B2B0UL, -0x31013130UL,0x2ACAE2E8UL,0x2D4D616CUL,0x1F4F535CUL,0x24C4E0E4UL,0x30C0F0F0UL,0x0DCDC1CCUL,0x08888088UL, -0x16061214UL,0x3A0A3238UL,0x18485058UL,0x14C4D0D4UL,0x22426260UL,0x29092128UL,0x07070304UL,0x33033330UL, -0x28C8E0E8UL,0x1B0B1318UL,0x05050104UL,0x39497178UL,0x10809090UL,0x2A4A6268UL,0x2A0A2228UL,0x1A8A9298UL -}; - -static const ulong32 SS1[256] = { -0x38380830UL,0xE828C8E0UL,0x2C2D0D21UL,0xA42686A2UL,0xCC0FCFC3UL,0xDC1ECED2UL,0xB03383B3UL,0xB83888B0UL, -0xAC2F8FA3UL,0x60204060UL,0x54154551UL,0xC407C7C3UL,0x44044440UL,0x6C2F4F63UL,0x682B4B63UL,0x581B4B53UL, -0xC003C3C3UL,0x60224262UL,0x30330333UL,0xB43585B1UL,0x28290921UL,0xA02080A0UL,0xE022C2E2UL,0xA42787A3UL, -0xD013C3D3UL,0x90118191UL,0x10110111UL,0x04060602UL,0x1C1C0C10UL,0xBC3C8CB0UL,0x34360632UL,0x480B4B43UL, -0xEC2FCFE3UL,0x88088880UL,0x6C2C4C60UL,0xA82888A0UL,0x14170713UL,0xC404C4C0UL,0x14160612UL,0xF434C4F0UL, -0xC002C2C2UL,0x44054541UL,0xE021C1E1UL,0xD416C6D2UL,0x3C3F0F33UL,0x3C3D0D31UL,0x8C0E8E82UL,0x98188890UL, -0x28280820UL,0x4C0E4E42UL,0xF436C6F2UL,0x3C3E0E32UL,0xA42585A1UL,0xF839C9F1UL,0x0C0D0D01UL,0xDC1FCFD3UL, -0xD818C8D0UL,0x282B0B23UL,0x64264662UL,0x783A4A72UL,0x24270723UL,0x2C2F0F23UL,0xF031C1F1UL,0x70324272UL, -0x40024242UL,0xD414C4D0UL,0x40014141UL,0xC000C0C0UL,0x70334373UL,0x64274763UL,0xAC2C8CA0UL,0x880B8B83UL, -0xF437C7F3UL,0xAC2D8DA1UL,0x80008080UL,0x1C1F0F13UL,0xC80ACAC2UL,0x2C2C0C20UL,0xA82A8AA2UL,0x34340430UL, -0xD012C2D2UL,0x080B0B03UL,0xEC2ECEE2UL,0xE829C9E1UL,0x5C1D4D51UL,0x94148490UL,0x18180810UL,0xF838C8F0UL, -0x54174753UL,0xAC2E8EA2UL,0x08080800UL,0xC405C5C1UL,0x10130313UL,0xCC0DCDC1UL,0x84068682UL,0xB83989B1UL, -0xFC3FCFF3UL,0x7C3D4D71UL,0xC001C1C1UL,0x30310131UL,0xF435C5F1UL,0x880A8A82UL,0x682A4A62UL,0xB03181B1UL, -0xD011C1D1UL,0x20200020UL,0xD417C7D3UL,0x00020202UL,0x20220222UL,0x04040400UL,0x68284860UL,0x70314171UL, -0x04070703UL,0xD81BCBD3UL,0x9C1D8D91UL,0x98198991UL,0x60214161UL,0xBC3E8EB2UL,0xE426C6E2UL,0x58194951UL, -0xDC1DCDD1UL,0x50114151UL,0x90108090UL,0xDC1CCCD0UL,0x981A8A92UL,0xA02383A3UL,0xA82B8BA3UL,0xD010C0D0UL, -0x80018181UL,0x0C0F0F03UL,0x44074743UL,0x181A0A12UL,0xE023C3E3UL,0xEC2CCCE0UL,0x8C0D8D81UL,0xBC3F8FB3UL, -0x94168692UL,0x783B4B73UL,0x5C1C4C50UL,0xA02282A2UL,0xA02181A1UL,0x60234363UL,0x20230323UL,0x4C0D4D41UL, -0xC808C8C0UL,0x9C1E8E92UL,0x9C1C8C90UL,0x383A0A32UL,0x0C0C0C00UL,0x2C2E0E22UL,0xB83A8AB2UL,0x6C2E4E62UL, -0x9C1F8F93UL,0x581A4A52UL,0xF032C2F2UL,0x90128292UL,0xF033C3F3UL,0x48094941UL,0x78384870UL,0xCC0CCCC0UL, -0x14150511UL,0xF83BCBF3UL,0x70304070UL,0x74354571UL,0x7C3F4F73UL,0x34350531UL,0x10100010UL,0x00030303UL, -0x64244460UL,0x6C2D4D61UL,0xC406C6C2UL,0x74344470UL,0xD415C5D1UL,0xB43484B0UL,0xE82ACAE2UL,0x08090901UL, -0x74364672UL,0x18190911UL,0xFC3ECEF2UL,0x40004040UL,0x10120212UL,0xE020C0E0UL,0xBC3D8DB1UL,0x04050501UL, -0xF83ACAF2UL,0x00010101UL,0xF030C0F0UL,0x282A0A22UL,0x5C1E4E52UL,0xA82989A1UL,0x54164652UL,0x40034343UL, -0x84058581UL,0x14140410UL,0x88098981UL,0x981B8B93UL,0xB03080B0UL,0xE425C5E1UL,0x48084840UL,0x78394971UL, -0x94178793UL,0xFC3CCCF0UL,0x1C1E0E12UL,0x80028282UL,0x20210121UL,0x8C0C8C80UL,0x181B0B13UL,0x5C1F4F53UL, -0x74374773UL,0x54144450UL,0xB03282B2UL,0x1C1D0D11UL,0x24250521UL,0x4C0F4F43UL,0x00000000UL,0x44064642UL, -0xEC2DCDE1UL,0x58184850UL,0x50124252UL,0xE82BCBE3UL,0x7C3E4E72UL,0xD81ACAD2UL,0xC809C9C1UL,0xFC3DCDF1UL, -0x30300030UL,0x94158591UL,0x64254561UL,0x3C3C0C30UL,0xB43686B2UL,0xE424C4E0UL,0xB83B8BB3UL,0x7C3C4C70UL, -0x0C0E0E02UL,0x50104050UL,0x38390931UL,0x24260622UL,0x30320232UL,0x84048480UL,0x68294961UL,0x90138393UL, -0x34370733UL,0xE427C7E3UL,0x24240420UL,0xA42484A0UL,0xC80BCBC3UL,0x50134353UL,0x080A0A02UL,0x84078783UL, -0xD819C9D1UL,0x4C0C4C40UL,0x80038383UL,0x8C0F8F83UL,0xCC0ECEC2UL,0x383B0B33UL,0x480A4A42UL,0xB43787B3UL -}; - -static const ulong32 SS2[256] = { -0xA1A82989UL,0x81840585UL,0xD2D416C6UL,0xD3D013C3UL,0x50541444UL,0x111C1D0DUL,0xA0AC2C8CUL,0x21242505UL, -0x515C1D4DUL,0x43400343UL,0x10181808UL,0x121C1E0EUL,0x51501141UL,0xF0FC3CCCUL,0xC2C80ACAUL,0x63602343UL, -0x20282808UL,0x40440444UL,0x20202000UL,0x919C1D8DUL,0xE0E020C0UL,0xE2E022C2UL,0xC0C808C8UL,0x13141707UL, -0xA1A42585UL,0x838C0F8FUL,0x03000303UL,0x73783B4BUL,0xB3B83B8BUL,0x13101303UL,0xD2D012C2UL,0xE2EC2ECEUL, -0x70703040UL,0x808C0C8CUL,0x333C3F0FUL,0xA0A82888UL,0x32303202UL,0xD1DC1DCDUL,0xF2F436C6UL,0x70743444UL, -0xE0EC2CCCUL,0x91941585UL,0x03080B0BUL,0x53541747UL,0x505C1C4CUL,0x53581B4BUL,0xB1BC3D8DUL,0x01000101UL, -0x20242404UL,0x101C1C0CUL,0x73703343UL,0x90981888UL,0x10101000UL,0xC0CC0CCCUL,0xF2F032C2UL,0xD1D819C9UL, -0x202C2C0CUL,0xE3E427C7UL,0x72703242UL,0x83800383UL,0x93981B8BUL,0xD1D011C1UL,0x82840686UL,0xC1C809C9UL, -0x60602040UL,0x50501040UL,0xA3A02383UL,0xE3E82BCBUL,0x010C0D0DUL,0xB2B43686UL,0x929C1E8EUL,0x434C0F4FUL, -0xB3B43787UL,0x52581A4AUL,0xC2C406C6UL,0x70783848UL,0xA2A42686UL,0x12101202UL,0xA3AC2F8FUL,0xD1D415C5UL, -0x61602141UL,0xC3C003C3UL,0xB0B43484UL,0x41400141UL,0x52501242UL,0x717C3D4DUL,0x818C0D8DUL,0x00080808UL, -0x131C1F0FUL,0x91981989UL,0x00000000UL,0x11181909UL,0x00040404UL,0x53501343UL,0xF3F437C7UL,0xE1E021C1UL, -0xF1FC3DCDUL,0x72743646UL,0x232C2F0FUL,0x23242707UL,0xB0B03080UL,0x83880B8BUL,0x020C0E0EUL,0xA3A82B8BUL, -0xA2A02282UL,0x626C2E4EUL,0x93901383UL,0x414C0D4DUL,0x61682949UL,0x707C3C4CUL,0x01080909UL,0x02080A0AUL, -0xB3BC3F8FUL,0xE3EC2FCFUL,0xF3F033C3UL,0xC1C405C5UL,0x83840787UL,0x10141404UL,0xF2FC3ECEUL,0x60642444UL, -0xD2DC1ECEUL,0x222C2E0EUL,0x43480B4BUL,0x12181A0AUL,0x02040606UL,0x21202101UL,0x63682B4BUL,0x62642646UL, -0x02000202UL,0xF1F435C5UL,0x92901282UL,0x82880A8AUL,0x000C0C0CUL,0xB3B03383UL,0x727C3E4EUL,0xD0D010C0UL, -0x72783A4AUL,0x43440747UL,0x92941686UL,0xE1E425C5UL,0x22242606UL,0x80800080UL,0xA1AC2D8DUL,0xD3DC1FCFUL, -0xA1A02181UL,0x30303000UL,0x33343707UL,0xA2AC2E8EUL,0x32343606UL,0x11141505UL,0x22202202UL,0x30383808UL, -0xF0F434C4UL,0xA3A42787UL,0x41440545UL,0x404C0C4CUL,0x81800181UL,0xE1E829C9UL,0x80840484UL,0x93941787UL, -0x31343505UL,0xC3C80BCBUL,0xC2CC0ECEUL,0x303C3C0CUL,0x71703141UL,0x11101101UL,0xC3C407C7UL,0x81880989UL, -0x71743545UL,0xF3F83BCBUL,0xD2D81ACAUL,0xF0F838C8UL,0x90941484UL,0x51581949UL,0x82800282UL,0xC0C404C4UL, -0xF3FC3FCFUL,0x41480949UL,0x31383909UL,0x63642747UL,0xC0C000C0UL,0xC3CC0FCFUL,0xD3D417C7UL,0xB0B83888UL, -0x030C0F0FUL,0x828C0E8EUL,0x42400242UL,0x23202303UL,0x91901181UL,0x606C2C4CUL,0xD3D81BCBUL,0xA0A42484UL, -0x30343404UL,0xF1F031C1UL,0x40480848UL,0xC2C002C2UL,0x636C2F4FUL,0x313C3D0DUL,0x212C2D0DUL,0x40400040UL, -0xB2BC3E8EUL,0x323C3E0EUL,0xB0BC3C8CUL,0xC1C001C1UL,0xA2A82A8AUL,0xB2B83A8AUL,0x424C0E4EUL,0x51541545UL, -0x33383B0BUL,0xD0DC1CCCUL,0x60682848UL,0x737C3F4FUL,0x909C1C8CUL,0xD0D818C8UL,0x42480A4AUL,0x52541646UL, -0x73743747UL,0xA0A02080UL,0xE1EC2DCDUL,0x42440646UL,0xB1B43585UL,0x23282B0BUL,0x61642545UL,0xF2F83ACAUL, -0xE3E023C3UL,0xB1B83989UL,0xB1B03181UL,0x939C1F8FUL,0x525C1E4EUL,0xF1F839C9UL,0xE2E426C6UL,0xB2B03282UL, -0x31303101UL,0xE2E82ACAUL,0x616C2D4DUL,0x535C1F4FUL,0xE0E424C4UL,0xF0F030C0UL,0xC1CC0DCDUL,0x80880888UL, -0x12141606UL,0x32383A0AUL,0x50581848UL,0xD0D414C4UL,0x62602242UL,0x21282909UL,0x03040707UL,0x33303303UL, -0xE0E828C8UL,0x13181B0BUL,0x01040505UL,0x71783949UL,0x90901080UL,0x62682A4AUL,0x22282A0AUL,0x92981A8AUL -}; - -static const ulong32 SS3[256] = { -0x08303838UL,0xC8E0E828UL,0x0D212C2DUL,0x86A2A426UL,0xCFC3CC0FUL,0xCED2DC1EUL,0x83B3B033UL,0x88B0B838UL, -0x8FA3AC2FUL,0x40606020UL,0x45515415UL,0xC7C3C407UL,0x44404404UL,0x4F636C2FUL,0x4B63682BUL,0x4B53581BUL, -0xC3C3C003UL,0x42626022UL,0x03333033UL,0x85B1B435UL,0x09212829UL,0x80A0A020UL,0xC2E2E022UL,0x87A3A427UL, -0xC3D3D013UL,0x81919011UL,0x01111011UL,0x06020406UL,0x0C101C1CUL,0x8CB0BC3CUL,0x06323436UL,0x4B43480BUL, -0xCFE3EC2FUL,0x88808808UL,0x4C606C2CUL,0x88A0A828UL,0x07131417UL,0xC4C0C404UL,0x06121416UL,0xC4F0F434UL, -0xC2C2C002UL,0x45414405UL,0xC1E1E021UL,0xC6D2D416UL,0x0F333C3FUL,0x0D313C3DUL,0x8E828C0EUL,0x88909818UL, -0x08202828UL,0x4E424C0EUL,0xC6F2F436UL,0x0E323C3EUL,0x85A1A425UL,0xC9F1F839UL,0x0D010C0DUL,0xCFD3DC1FUL, -0xC8D0D818UL,0x0B23282BUL,0x46626426UL,0x4A72783AUL,0x07232427UL,0x0F232C2FUL,0xC1F1F031UL,0x42727032UL, -0x42424002UL,0xC4D0D414UL,0x41414001UL,0xC0C0C000UL,0x43737033UL,0x47636427UL,0x8CA0AC2CUL,0x8B83880BUL, -0xC7F3F437UL,0x8DA1AC2DUL,0x80808000UL,0x0F131C1FUL,0xCAC2C80AUL,0x0C202C2CUL,0x8AA2A82AUL,0x04303434UL, -0xC2D2D012UL,0x0B03080BUL,0xCEE2EC2EUL,0xC9E1E829UL,0x4D515C1DUL,0x84909414UL,0x08101818UL,0xC8F0F838UL, -0x47535417UL,0x8EA2AC2EUL,0x08000808UL,0xC5C1C405UL,0x03131013UL,0xCDC1CC0DUL,0x86828406UL,0x89B1B839UL, -0xCFF3FC3FUL,0x4D717C3DUL,0xC1C1C001UL,0x01313031UL,0xC5F1F435UL,0x8A82880AUL,0x4A62682AUL,0x81B1B031UL, -0xC1D1D011UL,0x00202020UL,0xC7D3D417UL,0x02020002UL,0x02222022UL,0x04000404UL,0x48606828UL,0x41717031UL, -0x07030407UL,0xCBD3D81BUL,0x8D919C1DUL,0x89919819UL,0x41616021UL,0x8EB2BC3EUL,0xC6E2E426UL,0x49515819UL, -0xCDD1DC1DUL,0x41515011UL,0x80909010UL,0xCCD0DC1CUL,0x8A92981AUL,0x83A3A023UL,0x8BA3A82BUL,0xC0D0D010UL, -0x81818001UL,0x0F030C0FUL,0x47434407UL,0x0A12181AUL,0xC3E3E023UL,0xCCE0EC2CUL,0x8D818C0DUL,0x8FB3BC3FUL, -0x86929416UL,0x4B73783BUL,0x4C505C1CUL,0x82A2A022UL,0x81A1A021UL,0x43636023UL,0x03232023UL,0x4D414C0DUL, -0xC8C0C808UL,0x8E929C1EUL,0x8C909C1CUL,0x0A32383AUL,0x0C000C0CUL,0x0E222C2EUL,0x8AB2B83AUL,0x4E626C2EUL, -0x8F939C1FUL,0x4A52581AUL,0xC2F2F032UL,0x82929012UL,0xC3F3F033UL,0x49414809UL,0x48707838UL,0xCCC0CC0CUL, -0x05111415UL,0xCBF3F83BUL,0x40707030UL,0x45717435UL,0x4F737C3FUL,0x05313435UL,0x00101010UL,0x03030003UL, -0x44606424UL,0x4D616C2DUL,0xC6C2C406UL,0x44707434UL,0xC5D1D415UL,0x84B0B434UL,0xCAE2E82AUL,0x09010809UL, -0x46727436UL,0x09111819UL,0xCEF2FC3EUL,0x40404000UL,0x02121012UL,0xC0E0E020UL,0x8DB1BC3DUL,0x05010405UL, -0xCAF2F83AUL,0x01010001UL,0xC0F0F030UL,0x0A22282AUL,0x4E525C1EUL,0x89A1A829UL,0x46525416UL,0x43434003UL, -0x85818405UL,0x04101414UL,0x89818809UL,0x8B93981BUL,0x80B0B030UL,0xC5E1E425UL,0x48404808UL,0x49717839UL, -0x87939417UL,0xCCF0FC3CUL,0x0E121C1EUL,0x82828002UL,0x01212021UL,0x8C808C0CUL,0x0B13181BUL,0x4F535C1FUL, -0x47737437UL,0x44505414UL,0x82B2B032UL,0x0D111C1DUL,0x05212425UL,0x4F434C0FUL,0x00000000UL,0x46424406UL, -0xCDE1EC2DUL,0x48505818UL,0x42525012UL,0xCBE3E82BUL,0x4E727C3EUL,0xCAD2D81AUL,0xC9C1C809UL,0xCDF1FC3DUL, -0x00303030UL,0x85919415UL,0x45616425UL,0x0C303C3CUL,0x86B2B436UL,0xC4E0E424UL,0x8BB3B83BUL,0x4C707C3CUL, -0x0E020C0EUL,0x40505010UL,0x09313839UL,0x06222426UL,0x02323032UL,0x84808404UL,0x49616829UL,0x83939013UL, -0x07333437UL,0xC7E3E427UL,0x04202424UL,0x84A0A424UL,0xCBC3C80BUL,0x43535013UL,0x0A02080AUL,0x87838407UL, -0xC9D1D819UL,0x4C404C0CUL,0x83838003UL,0x8F838C0FUL,0xCEC2CC0EUL,0x0B33383BUL,0x4A42480AUL,0x87B3B437UL -}; - -static const ulong32 KCi[16] = { -0x9E3779B9,0x3C6EF373, -0x78DDE6E6,0xF1BBCDCC, -0xE3779B99,0xC6EF3733, -0x8DDE6E67,0x1BBCDCCF, -0x3779B99E,0x6EF3733C, -0xDDE6E678,0xBBCDCCF1, -0x779B99E3,0xEF3733C6, -0xDE6E678D,0xBCDCCF1B -}; - -#define G(x) (SS3[((x)>>24)&255] ^ SS2[((x)>>16)&255] ^ SS1[((x)>>8)&255] ^ SS0[(x)&255]) - -#define F(L1, L2, R1, R2, K1, K2) \ - T2 = G((R1 ^ K1) ^ (R2 ^ K2)); \ - T = G( G(T2 + (R1 ^ K1)) + T2); \ - L2 ^= T; \ - L1 ^= (T + G(T2 + (R1 ^ K1))); \ - - /** - Initialize the SEED block cipher - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful - */ -int kseed_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - int i; - ulong32 tmp, k1, k2, k3, k4; - - if (keylen != 16) { - return CRYPT_INVALID_KEYSIZE; - } - - if (num_rounds != 16 && num_rounds != 0) { - return CRYPT_INVALID_ROUNDS; - } - - /* load key */ - LOAD32H(k1, key); - LOAD32H(k2, key+4); - LOAD32H(k3, key+8); - LOAD32H(k4, key+12); - - for (i = 0; i < 16; i++) { - skey->kseed.K[2*i+0] = G(k1 + k3 - KCi[i]); - skey->kseed.K[2*i+1] = G(k2 - k4 + KCi[i]); - if (i&1) { - tmp = k3; - k3 = ((k3 << 8) | (k4 >> 24)) & 0xFFFFFFFF; - k4 = ((k4 << 8) | (tmp >> 24)) & 0xFFFFFFFF; - } else { - tmp = k1; - k1 = ((k1 >> 8) | (k2 << 24)) & 0xFFFFFFFF; - k2 = ((k2 >> 8) | (tmp << 24)) & 0xFFFFFFFF; - } - /* reverse keys for decrypt */ - skey->kseed.dK[2*(15-i)+0] = skey->kseed.K[2*i+0]; - skey->kseed.dK[2*(15-i)+1] = skey->kseed.K[2*i+1]; - } - - return CRYPT_OK; -} - -static void rounds(ulong32 *P, ulong32 *K) -{ - ulong32 T, T2; - int i; - for (i = 0; i < 16; i += 2) { - F(P[0], P[1], P[2], P[3], K[0], K[1]); - F(P[2], P[3], P[0], P[1], K[2], K[3]); - K += 4; - } -} - -/** - Encrypts a block of text with SEED - @param pt The input plaintext (16 bytes) - @param ct The output ciphertext (16 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int kseed_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - ulong32 P[4]; - LOAD32H(P[0], pt); - LOAD32H(P[1], pt+4); - LOAD32H(P[2], pt+8); - LOAD32H(P[3], pt+12); - rounds(P, skey->kseed.K); - STORE32H(P[2], ct); - STORE32H(P[3], ct+4); - STORE32H(P[0], ct+8); - STORE32H(P[1], ct+12); - return CRYPT_OK; -} - -/** - Decrypts a block of text with SEED - @param ct The input ciphertext (16 bytes) - @param pt The output plaintext (16 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int kseed_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - ulong32 P[4]; - LOAD32H(P[0], ct); - LOAD32H(P[1], ct+4); - LOAD32H(P[2], ct+8); - LOAD32H(P[3], ct+12); - rounds(P, skey->kseed.dK); - STORE32H(P[2], pt); - STORE32H(P[3], pt+4); - STORE32H(P[0], pt+8); - STORE32H(P[1], pt+12); - return CRYPT_OK; -} - -/** Terminate the context - @param skey The scheduled key -*/ -void kseed_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -/** - Performs a self-test of the SEED block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int kseed_test(void) -{ -#if !defined(LTC_TEST) - return CRYPT_NOP; -#else - static const struct test { - unsigned char pt[16], ct[16], key[16]; - } tests[] = { - -{ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F }, - { 0x5E,0xBA,0xC6,0xE0,0x05,0x4E,0x16,0x68,0x19,0xAF,0xF1,0xCC,0x6D,0x34,0x6C,0xDB }, - { 0 }, -}, - -{ - { 0 }, - { 0xC1,0x1F,0x22,0xF2,0x01,0x40,0x50,0x50,0x84,0x48,0x35,0x97,0xE4,0x37,0x0F,0x43 }, - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F }, -}, - -{ - { 0x83,0xA2,0xF8,0xA2,0x88,0x64,0x1F,0xB9,0xA4,0xE9,0xA5,0xCC,0x2F,0x13,0x1C,0x7D }, - { 0xEE,0x54,0xD1,0x3E,0xBC,0xAE,0x70,0x6D,0x22,0x6B,0xC3,0x14,0x2C,0xD4,0x0D,0x4A }, - { 0x47,0x06,0x48,0x08,0x51,0xE6,0x1B,0xE8,0x5D,0x74,0xBF,0xB3,0xFD,0x95,0x61,0x85 }, -}, - -{ - { 0xB4,0x1E,0x6B,0xE2,0xEB,0xA8,0x4A,0x14,0x8E,0x2E,0xED,0x84,0x59,0x3C,0x5E,0xC7 }, - { 0x9B,0x9B,0x7B,0xFC,0xD1,0x81,0x3C,0xB9,0x5D,0x0B,0x36,0x18,0xF4,0x0F,0x51,0x22 }, - { 0x28,0xDB,0xC3,0xBC,0x49,0xFF,0xD8,0x7D,0xCF,0xA5,0x09,0xB1,0x1D,0x42,0x2B,0xE7 }, -} -}; - int x; - unsigned char buf[2][16]; - symmetric_key skey; - - for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - kseed_setup(tests[x].key, 16, 0, &skey); - kseed_ecb_encrypt(tests[x].pt, buf[0], &skey); - kseed_ecb_decrypt(buf[0], buf[1], &skey); - if (compare_testvector(buf[0], 16, tests[x].ct, 16, "KSEED Encrypt", x) || - compare_testvector(buf[1], 16, tests[x].pt, 16, "KSEED Decrypt", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif -} - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int kseed_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if (*keysize >= 16) { - *keysize = 16; - } else { - return CRYPT_INVALID_KEYSIZE; - } - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/multi2.c b/src/libtomcrypt/src/ciphers/multi2.c deleted file mode 100644 index a099ad7b43..0000000000 --- a/src/libtomcrypt/src/ciphers/multi2.c +++ /dev/null @@ -1,319 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file multi2.c - Multi-2 implementation (not public domain, hence the default disable) -*/ -#include "tomcrypt.h" - -#ifdef LTC_MULTI2 - -static void pi1(ulong32 *p) -{ - p[1] ^= p[0]; -} - -static void pi2(ulong32 *p, ulong32 *k) -{ - ulong32 t; - t = (p[1] + k[0]) & 0xFFFFFFFFUL; - t = (ROL(t, 1) + t - 1) & 0xFFFFFFFFUL; - t = (ROL(t, 4) ^ t) & 0xFFFFFFFFUL; - p[0] ^= t; -} - -static void pi3(ulong32 *p, ulong32 *k) -{ - ulong32 t; - t = p[0] + k[1]; - t = (ROL(t, 2) + t + 1) & 0xFFFFFFFFUL; - t = (ROL(t, 8) ^ t) & 0xFFFFFFFFUL; - t = (t + k[2]) & 0xFFFFFFFFUL; - t = (ROL(t, 1) - t) & 0xFFFFFFFFUL; - t = ROL(t, 16) ^ (p[0] | t); - p[1] ^= t; -} - -static void pi4(ulong32 *p, ulong32 *k) -{ - ulong32 t; - t = (p[1] + k[3]) & 0xFFFFFFFFUL; - t = (ROL(t, 2) + t + 1) & 0xFFFFFFFFUL; - p[0] ^= t; -} - -static void setup(ulong32 *dk, ulong32 *k, ulong32 *uk) -{ - int n, t; - ulong32 p[2]; - - p[0] = dk[0]; p[1] = dk[1]; - - t = 4; - n = 0; - pi1(p); - pi2(p, k); - uk[n++] = p[0]; - pi3(p, k); - uk[n++] = p[1]; - pi4(p, k); - uk[n++] = p[0]; - pi1(p); - uk[n++] = p[1]; - pi2(p, k+t); - uk[n++] = p[0]; - pi3(p, k+t); - uk[n++] = p[1]; - pi4(p, k+t); - uk[n++] = p[0]; - pi1(p); - uk[n++] = p[1]; -} - -static void encrypt(ulong32 *p, int N, ulong32 *uk) -{ - int n, t; - for (t = n = 0; ; ) { - pi1(p); if (++n == N) break; - pi2(p, uk+t); if (++n == N) break; - pi3(p, uk+t); if (++n == N) break; - pi4(p, uk+t); if (++n == N) break; - t ^= 4; - } -} - -static void decrypt(ulong32 *p, int N, ulong32 *uk) -{ - int n, t; - for (t = 4*(((N-1)>>2)&1), n = N; ; ) { - switch (n<=4 ? n : ((n-1)%4)+1) { - case 4: pi4(p, uk+t); --n; /* FALLTHROUGH */ - case 3: pi3(p, uk+t); --n; /* FALLTHROUGH */ - case 2: pi2(p, uk+t); --n; /* FALLTHROUGH */ - case 1: pi1(p); --n; break; - case 0: return; - } - t ^= 4; - } -} - -const struct ltc_cipher_descriptor multi2_desc = { - "multi2", - 22, - 40, 40, 8, 128, - &multi2_setup, - &multi2_ecb_encrypt, - &multi2_ecb_decrypt, - &multi2_test, - &multi2_done, - &multi2_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -int multi2_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - ulong32 sk[8], dk[2]; - int x; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - if (keylen != 40) return CRYPT_INVALID_KEYSIZE; - if (num_rounds == 0) num_rounds = 128; - - skey->multi2.N = num_rounds; - for (x = 0; x < 8; x++) { - LOAD32H(sk[x], key + x*4); - } - LOAD32H(dk[0], key + 32); - LOAD32H(dk[1], key + 36); - setup(dk, sk, skey->multi2.uk); - - zeromem(sk, sizeof(sk)); - zeromem(dk, sizeof(dk)); - return CRYPT_OK; -} - -/** - Encrypts a block of text with multi2 - @param pt The input plaintext (8 bytes) - @param ct The output ciphertext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int multi2_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - ulong32 p[2]; - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - LOAD32H(p[0], pt); - LOAD32H(p[1], pt+4); - encrypt(p, skey->multi2.N, skey->multi2.uk); - STORE32H(p[0], ct); - STORE32H(p[1], ct+4); - return CRYPT_OK; -} - -/** - Decrypts a block of text with multi2 - @param ct The input ciphertext (8 bytes) - @param pt The output plaintext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int multi2_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - ulong32 p[2]; - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - LOAD32H(p[0], ct); - LOAD32H(p[1], ct+4); - decrypt(p, skey->multi2.N, skey->multi2.uk); - STORE32H(p[0], pt); - STORE32H(p[1], pt+4); - return CRYPT_OK; -} - -/** - Performs a self-test of the multi2 block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int multi2_test(void) -{ - static const struct { - unsigned char key[40]; - unsigned char pt[8], ct[8]; - int rounds; - } tests[] = { -{ - { - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - - 0x01, 0x23, 0x45, 0x67, - 0x89, 0xAB, 0xCD, 0xEF - }, - { - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - }, - { - 0xf8, 0x94, 0x40, 0x84, - 0x5e, 0x11, 0xcf, 0x89 - }, - 128, -}, -{ - { - 0x35, 0x91, 0x9d, 0x96, - 0x07, 0x02, 0xe2, 0xce, - 0x8d, 0x0b, 0x58, 0x3c, - 0xc9, 0xc8, 0x9d, 0x59, - 0xa2, 0xae, 0x96, 0x4e, - 0x87, 0x82, 0x45, 0xed, - 0x3f, 0x2e, 0x62, 0xd6, - 0x36, 0x35, 0xd0, 0x67, - - 0xb1, 0x27, 0xb9, 0x06, - 0xe7, 0x56, 0x22, 0x38, - }, - { - 0x1f, 0xb4, 0x60, 0x60, - 0xd0, 0xb3, 0x4f, 0xa5 - }, - { - 0xca, 0x84, 0xa9, 0x34, - 0x75, 0xc8, 0x60, 0xe5 - }, - 216, -} -}; - unsigned char buf[8]; - symmetric_key skey; - int err, x; - - for (x = 1; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - if ((err = multi2_setup(tests[x].key, 40, tests[x].rounds, &skey)) != CRYPT_OK) { - return err; - } - if ((err = multi2_ecb_encrypt(tests[x].pt, buf, &skey)) != CRYPT_OK) { - return err; - } - - if (compare_testvector(buf, 8, tests[x].ct, 8, "Multi2 Encrypt", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - - if ((err = multi2_ecb_decrypt(buf, buf, &skey)) != CRYPT_OK) { - return err; - } - if (compare_testvector(buf, 8, tests[x].pt, 8, "Multi2 Decrypt", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - - for (x = 128; x < 256; ++x) { - unsigned char ct[8]; - - if ((err = multi2_setup(tests[0].key, 40, x, &skey)) != CRYPT_OK) { - return err; - } - if ((err = multi2_ecb_encrypt(tests[0].pt, ct, &skey)) != CRYPT_OK) { - return err; - } - if ((err = multi2_ecb_decrypt(ct, buf, &skey)) != CRYPT_OK) { - return err; - } - if (compare_testvector(buf, 8, tests[0].pt, 8, "Multi2 Rounds", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - - return CRYPT_OK; -} - -/** Terminate the context - @param skey The scheduled key -*/ -void multi2_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int multi2_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if (*keysize >= 40) { - *keysize = 40; - } else { - return CRYPT_INVALID_KEYSIZE; - } - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/noekeon.c b/src/libtomcrypt/src/ciphers/noekeon.c deleted file mode 100644 index 0acfc4945c..0000000000 --- a/src/libtomcrypt/src/ciphers/noekeon.c +++ /dev/null @@ -1,328 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -/** - @file noekeon.c - Implementation of the Noekeon block cipher by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_NOEKEON - -const struct ltc_cipher_descriptor noekeon_desc = -{ - "noekeon", - 16, - 16, 16, 16, 16, - &noekeon_setup, - &noekeon_ecb_encrypt, - &noekeon_ecb_decrypt, - &noekeon_test, - &noekeon_done, - &noekeon_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -static const ulong32 RC[] = { - 0x00000080UL, 0x0000001bUL, 0x00000036UL, 0x0000006cUL, - 0x000000d8UL, 0x000000abUL, 0x0000004dUL, 0x0000009aUL, - 0x0000002fUL, 0x0000005eUL, 0x000000bcUL, 0x00000063UL, - 0x000000c6UL, 0x00000097UL, 0x00000035UL, 0x0000006aUL, - 0x000000d4UL -}; - -#define kTHETA(a, b, c, d) \ - temp = a^c; temp = temp ^ ROLc(temp, 8) ^ RORc(temp, 8); \ - b ^= temp; d ^= temp; \ - temp = b^d; temp = temp ^ ROLc(temp, 8) ^ RORc(temp, 8); \ - a ^= temp; c ^= temp; - -#define THETA(k, a, b, c, d) \ - temp = a^c; temp = temp ^ ROLc(temp, 8) ^ RORc(temp, 8); \ - b ^= temp ^ k[1]; d ^= temp ^ k[3]; \ - temp = b^d; temp = temp ^ ROLc(temp, 8) ^ RORc(temp, 8); \ - a ^= temp ^ k[0]; c ^= temp ^ k[2]; - -#define GAMMA(a, b, c, d) \ - b ^= ~(d|c); \ - a ^= c&b; \ - temp = d; d = a; a = temp;\ - c ^= a ^ b ^ d; \ - b ^= ~(d|c); \ - a ^= c&b; - -#define PI1(a, b, c, d) \ - b = ROLc(b, 1); c = ROLc(c, 5); d = ROLc(d, 2); - -#define PI2(a, b, c, d) \ - b = RORc(b, 1); c = RORc(c, 5); d = RORc(d, 2); - - /** - Initialize the Noekeon block cipher - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful - */ -int noekeon_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - ulong32 temp; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - if (keylen != 16) { - return CRYPT_INVALID_KEYSIZE; - } - - if (num_rounds != 16 && num_rounds != 0) { - return CRYPT_INVALID_ROUNDS; - } - - LOAD32H(skey->noekeon.K[0],&key[0]); - LOAD32H(skey->noekeon.K[1],&key[4]); - LOAD32H(skey->noekeon.K[2],&key[8]); - LOAD32H(skey->noekeon.K[3],&key[12]); - - LOAD32H(skey->noekeon.dK[0],&key[0]); - LOAD32H(skey->noekeon.dK[1],&key[4]); - LOAD32H(skey->noekeon.dK[2],&key[8]); - LOAD32H(skey->noekeon.dK[3],&key[12]); - - kTHETA(skey->noekeon.dK[0], skey->noekeon.dK[1], skey->noekeon.dK[2], skey->noekeon.dK[3]); - - return CRYPT_OK; -} - -/** - Encrypts a block of text with Noekeon - @param pt The input plaintext (16 bytes) - @param ct The output ciphertext (16 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -#ifdef LTC_CLEAN_STACK -static int _noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#else -int noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#endif -{ - ulong32 a,b,c,d,temp; - int r; - - LTC_ARGCHK(skey != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - - LOAD32H(a,&pt[0]); LOAD32H(b,&pt[4]); - LOAD32H(c,&pt[8]); LOAD32H(d,&pt[12]); - -#define ROUND(i) \ - a ^= RC[i]; \ - THETA(skey->noekeon.K, a,b,c,d); \ - PI1(a,b,c,d); \ - GAMMA(a,b,c,d); \ - PI2(a,b,c,d); - - for (r = 0; r < 16; ++r) { - ROUND(r); - } - -#undef ROUND - - a ^= RC[16]; - THETA(skey->noekeon.K, a, b, c, d); - - STORE32H(a,&ct[0]); STORE32H(b,&ct[4]); - STORE32H(c,&ct[8]); STORE32H(d,&ct[12]); - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - int err = _noekeon_ecb_encrypt(pt, ct, skey); - burn_stack(sizeof(ulong32) * 5 + sizeof(int)); - return err; -} -#endif - -/** - Decrypts a block of text with Noekeon - @param ct The input ciphertext (16 bytes) - @param pt The output plaintext (16 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -#ifdef LTC_CLEAN_STACK -static int _noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#else -int noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#endif -{ - ulong32 a,b,c,d, temp; - int r; - - LTC_ARGCHK(skey != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - - LOAD32H(a,&ct[0]); LOAD32H(b,&ct[4]); - LOAD32H(c,&ct[8]); LOAD32H(d,&ct[12]); - - -#define ROUND(i) \ - THETA(skey->noekeon.dK, a,b,c,d); \ - a ^= RC[i]; \ - PI1(a,b,c,d); \ - GAMMA(a,b,c,d); \ - PI2(a,b,c,d); - - for (r = 16; r > 0; --r) { - ROUND(r); - } - -#undef ROUND - - THETA(skey->noekeon.dK, a,b,c,d); - a ^= RC[0]; - STORE32H(a,&pt[0]); STORE32H(b, &pt[4]); - STORE32H(c,&pt[8]); STORE32H(d, &pt[12]); - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - int err = _noekeon_ecb_decrypt(ct, pt, skey); - burn_stack(sizeof(ulong32) * 5 + sizeof(int)); - return err; -} -#endif - -/** - Performs a self-test of the Noekeon block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int noekeon_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - int keylen; - unsigned char key[16], pt[16], ct[16]; - } tests[] = { - { - 16, - { 0xAA, 0x3C, 0x8C, 0x86, 0xD9, 0x8B, 0xF8, 0xBE, 0x21, 0xE0, 0x36, 0x09, 0x78, 0xFB, 0xE4, 0x90 }, - { 0xE4, 0x96, 0x6C, 0xD3, 0x13, 0xA0, 0x6C, 0xAF, 0xD0, 0x23, 0xC9, 0xFD, 0x45, 0x32, 0x23, 0x16 }, - { 0xA6, 0xEC, 0xB8, 0xA8, 0x61, 0xFD, 0x62, 0xD9, 0x13, 0x02, 0xFE, 0x9E, 0x47, 0x01, 0x3F, 0xC3 } - }, - { - 16, - { 0xED, 0x43, 0xD1, 0x87, 0x21, 0x7E, 0xE0, 0x97, 0x3D, 0x76, 0xC3, 0x37, 0x2E, 0x7D, 0xAE, 0xD3 }, - { 0xE3, 0x38, 0x32, 0xCC, 0xF2, 0x2F, 0x2F, 0x0A, 0x4A, 0x8B, 0x8F, 0x18, 0x12, 0x20, 0x17, 0xD3 }, - { 0x94, 0xA5, 0xDF, 0xF5, 0xAE, 0x1C, 0xBB, 0x22, 0xAD, 0xEB, 0xA7, 0x0D, 0xB7, 0x82, 0x90, 0xA0 } - }, - { - 16, - { 0x6F, 0xDC, 0x23, 0x38, 0xF2, 0x10, 0xFB, 0xD3, 0xC1, 0x8C, 0x02, 0xF6, 0xB4, 0x6A, 0xD5, 0xA8 }, - { 0xDB, 0x29, 0xED, 0xB5, 0x5F, 0xB3, 0x60, 0x3A, 0x92, 0xA8, 0xEB, 0x9C, 0x6D, 0x9D, 0x3E, 0x8F }, - { 0x78, 0xF3, 0x6F, 0xF8, 0x9E, 0xBB, 0x8C, 0x6A, 0xE8, 0x10, 0xF7, 0x00, 0x22, 0x15, 0x30, 0x3D } - }, - { - 16, - { 0x2C, 0x0C, 0x02, 0xEF, 0x6B, 0xC4, 0xF2, 0x0B, 0x2E, 0xB9, 0xE0, 0xBF, 0xD9, 0x36, 0xC2, 0x4E }, - { 0x84, 0xE2, 0xFE, 0x64, 0xB1, 0xB9, 0xFE, 0x76, 0xA8, 0x3F, 0x45, 0xC7, 0x40, 0x7A, 0xAF, 0xEE }, - { 0x2A, 0x08, 0xD6, 0xA2, 0x1C, 0x63, 0x08, 0xB0, 0xF8, 0xBC, 0xB3, 0xA1, 0x66, 0xF7, 0xAE, 0xCF } - }, - { - 16, - { 0x6F, 0x30, 0xF8, 0x9F, 0xDA, 0x6E, 0xA0, 0x91, 0x04, 0x0F, 0x6C, 0x8B, 0x7D, 0xF7, 0x2A, 0x4B }, - { 0x65, 0xB6, 0xA6, 0xD0, 0x42, 0x14, 0x08, 0x60, 0x34, 0x8D, 0x37, 0x2F, 0x01, 0xF0, 0x46, 0xBE }, - { 0x66, 0xAC, 0x0B, 0x62, 0x1D, 0x68, 0x11, 0xF5, 0x27, 0xB1, 0x13, 0x5D, 0xF3, 0x2A, 0xE9, 0x18 } - }, - { - 16, - { 0xCA, 0xA4, 0x16, 0xB7, 0x1C, 0x92, 0x2E, 0xAD, 0xEB, 0xA7, 0xDB, 0x69, 0x92, 0xCB, 0x35, 0xEF }, - { 0x81, 0x6F, 0x8E, 0x4D, 0x96, 0xC6, 0xB3, 0x67, 0x83, 0xF5, 0x63, 0xC7, 0x20, 0x6D, 0x40, 0x23 }, - { 0x44, 0xF7, 0x63, 0x62, 0xF0, 0x43, 0xBB, 0x67, 0x4A, 0x75, 0x12, 0x42, 0x46, 0x29, 0x28, 0x19 } - }, - { - 16, - { 0x6B, 0xCF, 0x22, 0x2F, 0xE0, 0x1B, 0xB0, 0xAA, 0xD8, 0x3C, 0x91, 0x99, 0x18, 0xB2, 0x28, 0xE8 }, - { 0x7C, 0x37, 0xC7, 0xD0, 0xAC, 0x92, 0x29, 0xF1, 0x60, 0x82, 0x93, 0x89, 0xAA, 0x61, 0xAA, 0xA9 }, - { 0xE5, 0x89, 0x1B, 0xB3, 0xFE, 0x8B, 0x0C, 0xA1, 0xA6, 0xC7, 0xBE, 0x12, 0x73, 0x0F, 0xC1, 0x19 } - }, - { - 16, - { 0xE6, 0xD0, 0xF1, 0x03, 0x2E, 0xDE, 0x70, 0x8D, 0xD8, 0x9E, 0x36, 0x5C, 0x05, 0x52, 0xE7, 0x0D }, - { 0xE2, 0x42, 0xE7, 0x92, 0x0E, 0xF7, 0x82, 0xA2, 0xB8, 0x21, 0x8D, 0x26, 0xBA, 0x2D, 0xE6, 0x32 }, - { 0x1E, 0xDD, 0x75, 0x22, 0xB9, 0x36, 0x8A, 0x0F, 0x32, 0xFD, 0xD4, 0x48, 0x65, 0x12, 0x5A, 0x2F } - } - }; - symmetric_key key; - unsigned char tmp[2][16]; - int err, i, y; - - for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { - zeromem(&key, sizeof(key)); - if ((err = noekeon_setup(tests[i].key, tests[i].keylen, 0, &key)) != CRYPT_OK) { - return err; - } - - noekeon_ecb_encrypt(tests[i].pt, tmp[0], &key); - noekeon_ecb_decrypt(tmp[0], tmp[1], &key); - if (compare_testvector(tmp[0], 16, tests[i].ct, 16, "Noekeon Encrypt", i) || - compare_testvector(tmp[1], 16, tests[i].pt, 16, "Noekeon Decrypt", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ - for (y = 0; y < 16; y++) tmp[0][y] = 0; - for (y = 0; y < 1000; y++) noekeon_ecb_encrypt(tmp[0], tmp[0], &key); - for (y = 0; y < 1000; y++) noekeon_ecb_decrypt(tmp[0], tmp[0], &key); - for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; - } - return CRYPT_OK; - #endif -} - -/** Terminate the context - @param skey The scheduled key -*/ -void noekeon_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int noekeon_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if (*keysize < 16) { - return CRYPT_INVALID_KEYSIZE; - } else { - *keysize = 16; - return CRYPT_OK; - } -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/rc2.c b/src/libtomcrypt/src/ciphers/rc2.c deleted file mode 100644 index 9261d036f4..0000000000 --- a/src/libtomcrypt/src/ciphers/rc2.c +++ /dev/null @@ -1,417 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -/**********************************************************************\ -* To commemorate the 1996 RSA Data Security Conference, the following * -* code is released into the public domain by its author. Prost! * -* * -* This cipher uses 16-bit words and little-endian byte ordering. * -* I wonder which processor it was optimized for? * -* * -* Thanks to CodeView, SoftIce, and D86 for helping bring this code to * -* the public. * -\**********************************************************************/ -#include "tomcrypt.h" - -/** - @file rc2.c - Implementation of RC2 with fixed effective key length of 64bits -*/ - -#ifdef LTC_RC2 - -const struct ltc_cipher_descriptor rc2_desc = { - "rc2", - 12, 8, 128, 8, 16, - &rc2_setup, - &rc2_ecb_encrypt, - &rc2_ecb_decrypt, - &rc2_test, - &rc2_done, - &rc2_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -/* 256-entry permutation table, probably derived somehow from pi */ -static const unsigned char permute[256] = { - 217,120,249,196, 25,221,181,237, 40,233,253,121, 74,160,216,157, - 198,126, 55,131, 43,118, 83,142, 98, 76,100,136, 68,139,251,162, - 23,154, 89,245,135,179, 79, 19, 97, 69,109,141, 9,129,125, 50, - 189,143, 64,235,134,183,123, 11,240,149, 33, 34, 92,107, 78,130, - 84,214,101,147,206, 96,178, 28,115, 86,192, 20,167,140,241,220, - 18,117,202, 31, 59,190,228,209, 66, 61,212, 48,163, 60,182, 38, - 111,191, 14,218, 70,105, 7, 87, 39,242, 29,155,188,148, 67, 3, - 248, 17,199,246,144,239, 62,231, 6,195,213, 47,200,102, 30,215, - 8,232,234,222,128, 82,238,247,132,170,114,172, 53, 77,106, 42, - 150, 26,210,113, 90, 21, 73,116, 75,159,208, 94, 4, 24,164,236, - 194,224, 65,110, 15, 81,203,204, 36,145,175, 80,161,244,112, 57, - 153,124, 58,133, 35,184,180,122,252, 2, 54, 91, 37, 85,151, 49, - 45, 93,250,152,227,138,146,174, 5,223, 41, 16,103,108,186,201, - 211, 0,230,207,225,158,168, 44, 99, 22, 1, 63, 88,226,137,169, - 13, 56, 52, 27,171, 51,255,176,187, 72, 12, 95,185,177,205, 46, - 197,243,219, 71,229,165,156,119, 10,166, 32,104,254,127,193,173 -}; - - /** - Initialize the RC2 block cipher - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param bits The effective key length in bits - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful - */ -int rc2_setup_ex(const unsigned char *key, int keylen, int bits, int num_rounds, symmetric_key *skey) -{ - unsigned *xkey = skey->rc2.xkey; - unsigned char tmp[128]; - unsigned T8, TM; - int i; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - if (keylen == 0 || keylen > 128 || bits > 1024) { - return CRYPT_INVALID_KEYSIZE; - } - if (bits == 0) { - bits = 1024; - } - - if (num_rounds != 0 && num_rounds != 16) { - return CRYPT_INVALID_ROUNDS; - } - - for (i = 0; i < keylen; i++) { - tmp[i] = key[i] & 255; - } - - /* Phase 1: Expand input key to 128 bytes */ - if (keylen < 128) { - for (i = keylen; i < 128; i++) { - tmp[i] = permute[(tmp[i - 1] + tmp[i - keylen]) & 255]; - } - } - - /* Phase 2 - reduce effective key size to "bits" */ - T8 = (unsigned)(bits+7)>>3; - TM = (255 >> (unsigned)(7 & -bits)); - tmp[128 - T8] = permute[tmp[128 - T8] & TM]; - for (i = 127 - T8; i >= 0; i--) { - tmp[i] = permute[tmp[i + 1] ^ tmp[i + T8]]; - } - - /* Phase 3 - copy to xkey in little-endian order */ - for (i = 0; i < 64; i++) { - xkey[i] = (unsigned)tmp[2*i] + ((unsigned)tmp[2*i+1] << 8); - } - -#ifdef LTC_CLEAN_STACK - zeromem(tmp, sizeof(tmp)); -#endif - - return CRYPT_OK; -} - -/** - Initialize the RC2 block cipher - - The effective key length is here always keylen * 8 - - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful -*/ -int rc2_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - return rc2_setup_ex(key, keylen, keylen * 8, num_rounds, skey); -} - -/**********************************************************************\ -* Encrypt an 8-byte block of plaintext using the given key. * -\**********************************************************************/ -/** - Encrypts a block of text with RC2 - @param pt The input plaintext (8 bytes) - @param ct The output ciphertext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -#ifdef LTC_CLEAN_STACK -static int _rc2_ecb_encrypt( const unsigned char *pt, - unsigned char *ct, - symmetric_key *skey) -#else -int rc2_ecb_encrypt( const unsigned char *pt, - unsigned char *ct, - symmetric_key *skey) -#endif -{ - unsigned *xkey; - unsigned x76, x54, x32, x10, i; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - - xkey = skey->rc2.xkey; - - x76 = ((unsigned)pt[7] << 8) + (unsigned)pt[6]; - x54 = ((unsigned)pt[5] << 8) + (unsigned)pt[4]; - x32 = ((unsigned)pt[3] << 8) + (unsigned)pt[2]; - x10 = ((unsigned)pt[1] << 8) + (unsigned)pt[0]; - - for (i = 0; i < 16; i++) { - x10 = (x10 + (x32 & ~x76) + (x54 & x76) + xkey[4*i+0]) & 0xFFFF; - x10 = ((x10 << 1) | (x10 >> 15)); - - x32 = (x32 + (x54 & ~x10) + (x76 & x10) + xkey[4*i+1]) & 0xFFFF; - x32 = ((x32 << 2) | (x32 >> 14)); - - x54 = (x54 + (x76 & ~x32) + (x10 & x32) + xkey[4*i+2]) & 0xFFFF; - x54 = ((x54 << 3) | (x54 >> 13)); - - x76 = (x76 + (x10 & ~x54) + (x32 & x54) + xkey[4*i+3]) & 0xFFFF; - x76 = ((x76 << 5) | (x76 >> 11)); - - if (i == 4 || i == 10) { - x10 = (x10 + xkey[x76 & 63]) & 0xFFFF; - x32 = (x32 + xkey[x10 & 63]) & 0xFFFF; - x54 = (x54 + xkey[x32 & 63]) & 0xFFFF; - x76 = (x76 + xkey[x54 & 63]) & 0xFFFF; - } - } - - ct[0] = (unsigned char)x10; - ct[1] = (unsigned char)(x10 >> 8); - ct[2] = (unsigned char)x32; - ct[3] = (unsigned char)(x32 >> 8); - ct[4] = (unsigned char)x54; - ct[5] = (unsigned char)(x54 >> 8); - ct[6] = (unsigned char)x76; - ct[7] = (unsigned char)(x76 >> 8); - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int rc2_ecb_encrypt( const unsigned char *pt, - unsigned char *ct, - symmetric_key *skey) -{ - int err = _rc2_ecb_encrypt(pt, ct, skey); - burn_stack(sizeof(unsigned *) + sizeof(unsigned) * 5); - return err; -} -#endif - -/**********************************************************************\ -* Decrypt an 8-byte block of ciphertext using the given key. * -\**********************************************************************/ -/** - Decrypts a block of text with RC2 - @param ct The input ciphertext (8 bytes) - @param pt The output plaintext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -#ifdef LTC_CLEAN_STACK -static int _rc2_ecb_decrypt( const unsigned char *ct, - unsigned char *pt, - symmetric_key *skey) -#else -int rc2_ecb_decrypt( const unsigned char *ct, - unsigned char *pt, - symmetric_key *skey) -#endif -{ - unsigned x76, x54, x32, x10; - unsigned *xkey; - int i; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - - xkey = skey->rc2.xkey; - - x76 = ((unsigned)ct[7] << 8) + (unsigned)ct[6]; - x54 = ((unsigned)ct[5] << 8) + (unsigned)ct[4]; - x32 = ((unsigned)ct[3] << 8) + (unsigned)ct[2]; - x10 = ((unsigned)ct[1] << 8) + (unsigned)ct[0]; - - for (i = 15; i >= 0; i--) { - if (i == 4 || i == 10) { - x76 = (x76 - xkey[x54 & 63]) & 0xFFFF; - x54 = (x54 - xkey[x32 & 63]) & 0xFFFF; - x32 = (x32 - xkey[x10 & 63]) & 0xFFFF; - x10 = (x10 - xkey[x76 & 63]) & 0xFFFF; - } - - x76 = ((x76 << 11) | (x76 >> 5)); - x76 = (x76 - ((x10 & ~x54) + (x32 & x54) + xkey[4*i+3])) & 0xFFFF; - - x54 = ((x54 << 13) | (x54 >> 3)); - x54 = (x54 - ((x76 & ~x32) + (x10 & x32) + xkey[4*i+2])) & 0xFFFF; - - x32 = ((x32 << 14) | (x32 >> 2)); - x32 = (x32 - ((x54 & ~x10) + (x76 & x10) + xkey[4*i+1])) & 0xFFFF; - - x10 = ((x10 << 15) | (x10 >> 1)); - x10 = (x10 - ((x32 & ~x76) + (x54 & x76) + xkey[4*i+0])) & 0xFFFF; - } - - pt[0] = (unsigned char)x10; - pt[1] = (unsigned char)(x10 >> 8); - pt[2] = (unsigned char)x32; - pt[3] = (unsigned char)(x32 >> 8); - pt[4] = (unsigned char)x54; - pt[5] = (unsigned char)(x54 >> 8); - pt[6] = (unsigned char)x76; - pt[7] = (unsigned char)(x76 >> 8); - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int rc2_ecb_decrypt( const unsigned char *ct, - unsigned char *pt, - symmetric_key *skey) -{ - int err = _rc2_ecb_decrypt(ct, pt, skey); - burn_stack(sizeof(unsigned *) + sizeof(unsigned) * 4 + sizeof(int)); - return err; -} -#endif - -/** - Performs a self-test of the RC2 block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int rc2_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - int keylen, bits; - unsigned char key[16], pt[8], ct[8]; - } tests[] = { - - { 8, 63, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xeb, 0xb7, 0x73, 0xf9, 0x93, 0x27, 0x8e, 0xff } - }, - { 8, 64, - { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, - { 0x27, 0x8b, 0x27, 0xe4, 0x2e, 0x2f, 0x0d, 0x49 } - }, - { 8, 64, - { 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, - { 0x30, 0x64, 0x9e, 0xdf, 0x9b, 0xe7, 0xd2, 0xc2 } - }, - { 1, 64, - { 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x61, 0xa8, 0xa2, 0x44, 0xad, 0xac, 0xcc, 0xf0 } - }, - { 7, 64, - { 0x88, 0xbc, 0xa9, 0x0e, 0x90, 0x87, 0x5a, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x6c, 0xcf, 0x43, 0x08, 0x97, 0x4c, 0x26, 0x7f } - }, - { 16, 64, - { 0x88, 0xbc, 0xa9, 0x0e, 0x90, 0x87, 0x5a, 0x7f, - 0x0f, 0x79, 0xc3, 0x84, 0x62, 0x7b, 0xaf, 0xb2 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x1a, 0x80, 0x7d, 0x27, 0x2b, 0xbe, 0x5d, 0xb1 } - }, - { 16, 128, - { 0x88, 0xbc, 0xa9, 0x0e, 0x90, 0x87, 0x5a, 0x7f, - 0x0f, 0x79, 0xc3, 0x84, 0x62, 0x7b, 0xaf, 0xb2 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x22, 0x69, 0x55, 0x2a, 0xb0, 0xf8, 0x5c, 0xa6 } - } - }; - int x, y, err; - symmetric_key skey; - unsigned char tmp[2][8]; - - for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) { - zeromem(tmp, sizeof(tmp)); - if (tests[x].bits == (tests[x].keylen * 8)) { - if ((err = rc2_setup(tests[x].key, tests[x].keylen, 0, &skey)) != CRYPT_OK) { - return err; - } - } - else { - if ((err = rc2_setup_ex(tests[x].key, tests[x].keylen, tests[x].bits, 0, &skey)) != CRYPT_OK) { - return err; - } - } - - rc2_ecb_encrypt(tests[x].pt, tmp[0], &skey); - rc2_ecb_decrypt(tmp[0], tmp[1], &skey); - - if (compare_testvector(tmp[0], 8, tests[x].ct, 8, "RC2 CT", x) || - compare_testvector(tmp[1], 8, tests[x].pt, 8, "RC2 PT", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ - for (y = 0; y < 8; y++) tmp[0][y] = 0; - for (y = 0; y < 1000; y++) rc2_ecb_encrypt(tmp[0], tmp[0], &skey); - for (y = 0; y < 1000; y++) rc2_ecb_decrypt(tmp[0], tmp[0], &skey); - for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; - } - return CRYPT_OK; - #endif -} - -/** Terminate the context - @param skey The scheduled key -*/ -void rc2_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int rc2_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if (*keysize < 1) { - return CRYPT_INVALID_KEYSIZE; - } else if (*keysize > 128) { - *keysize = 128; - } - return CRYPT_OK; -} - -#endif - - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/rc5.c b/src/libtomcrypt/src/ciphers/rc5.c deleted file mode 100644 index 71e452e73a..0000000000 --- a/src/libtomcrypt/src/ciphers/rc5.c +++ /dev/null @@ -1,322 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file rc5.c - LTC_RC5 code by Tom St Denis -*/ - -#include "tomcrypt.h" - -#ifdef LTC_RC5 - -const struct ltc_cipher_descriptor rc5_desc = -{ - "rc5", - 2, - 8, 128, 8, 12, - &rc5_setup, - &rc5_ecb_encrypt, - &rc5_ecb_decrypt, - &rc5_test, - &rc5_done, - &rc5_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -static const ulong32 stab[50] = { -0xb7e15163UL, 0x5618cb1cUL, 0xf45044d5UL, 0x9287be8eUL, 0x30bf3847UL, 0xcef6b200UL, 0x6d2e2bb9UL, 0x0b65a572UL, -0xa99d1f2bUL, 0x47d498e4UL, 0xe60c129dUL, 0x84438c56UL, 0x227b060fUL, 0xc0b27fc8UL, 0x5ee9f981UL, 0xfd21733aUL, -0x9b58ecf3UL, 0x399066acUL, 0xd7c7e065UL, 0x75ff5a1eUL, 0x1436d3d7UL, 0xb26e4d90UL, 0x50a5c749UL, 0xeedd4102UL, -0x8d14babbUL, 0x2b4c3474UL, 0xc983ae2dUL, 0x67bb27e6UL, 0x05f2a19fUL, 0xa42a1b58UL, 0x42619511UL, 0xe0990ecaUL, -0x7ed08883UL, 0x1d08023cUL, 0xbb3f7bf5UL, 0x5976f5aeUL, 0xf7ae6f67UL, 0x95e5e920UL, 0x341d62d9UL, 0xd254dc92UL, -0x708c564bUL, 0x0ec3d004UL, 0xacfb49bdUL, 0x4b32c376UL, 0xe96a3d2fUL, 0x87a1b6e8UL, 0x25d930a1UL, 0xc410aa5aUL, -0x62482413UL, 0x007f9dccUL -}; - - /** - Initialize the LTC_RC5 block cipher - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful - */ -#ifdef LTC_CLEAN_STACK -static int _rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -#else -int rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -#endif -{ - ulong32 L[64], *S, A, B, i, j, v, s, t, l; - - LTC_ARGCHK(skey != NULL); - LTC_ARGCHK(key != NULL); - - /* test parameters */ - if (num_rounds == 0) { - num_rounds = rc5_desc.default_rounds; - } - - if (num_rounds < 12 || num_rounds > 24) { - return CRYPT_INVALID_ROUNDS; - } - - /* key must be between 64 and 1024 bits */ - if (keylen < 8 || keylen > 128) { - return CRYPT_INVALID_KEYSIZE; - } - - skey->rc5.rounds = num_rounds; - S = skey->rc5.K; - - /* copy the key into the L array */ - for (A = i = j = 0; i < (ulong32)keylen; ) { - A = (A << 8) | ((ulong32)(key[i++] & 255)); - if ((i & 3) == 0) { - L[j++] = BSWAP(A); - A = 0; - } - } - - if ((keylen & 3) != 0) { - A <<= (ulong32)((8 * (4 - (keylen&3)))); - L[j++] = BSWAP(A); - } - - /* setup the S array */ - t = (ulong32)(2 * (num_rounds + 1)); - XMEMCPY(S, stab, t * sizeof(*S)); - - /* mix buffer */ - s = 3 * MAX(t, j); - l = j; - for (A = B = i = j = v = 0; v < s; v++) { - A = S[i] = ROLc(S[i] + A + B, 3); - B = L[j] = ROL(L[j] + A + B, (A+B)); - if (++i == t) { i = 0; } - if (++j == l) { j = 0; } - } - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - int x; - x = _rc5_setup(key, keylen, num_rounds, skey); - burn_stack(sizeof(ulong32) * 122 + sizeof(int)); - return x; -} -#endif - -/** - Encrypts a block of text with LTC_RC5 - @param pt The input plaintext (8 bytes) - @param ct The output ciphertext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -#ifdef LTC_CLEAN_STACK -static int _rc5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#else -int rc5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#endif -{ - ulong32 A, B, *K; - int r; - LTC_ARGCHK(skey != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - - LOAD32L(A, &pt[0]); - LOAD32L(B, &pt[4]); - A += skey->rc5.K[0]; - B += skey->rc5.K[1]; - K = skey->rc5.K + 2; - - if ((skey->rc5.rounds & 1) == 0) { - for (r = 0; r < skey->rc5.rounds; r += 2) { - A = ROL(A ^ B, B) + K[0]; - B = ROL(B ^ A, A) + K[1]; - A = ROL(A ^ B, B) + K[2]; - B = ROL(B ^ A, A) + K[3]; - K += 4; - } - } else { - for (r = 0; r < skey->rc5.rounds; r++) { - A = ROL(A ^ B, B) + K[0]; - B = ROL(B ^ A, A) + K[1]; - K += 2; - } - } - STORE32L(A, &ct[0]); - STORE32L(B, &ct[4]); - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int rc5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - int err = _rc5_ecb_encrypt(pt, ct, skey); - burn_stack(sizeof(ulong32) * 2 + sizeof(int)); - return err; -} -#endif - -/** - Decrypts a block of text with LTC_RC5 - @param ct The input ciphertext (8 bytes) - @param pt The output plaintext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -#ifdef LTC_CLEAN_STACK -static int _rc5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#else -int rc5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#endif -{ - ulong32 A, B, *K; - int r; - LTC_ARGCHK(skey != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - - LOAD32L(A, &ct[0]); - LOAD32L(B, &ct[4]); - K = skey->rc5.K + (skey->rc5.rounds << 1); - - if ((skey->rc5.rounds & 1) == 0) { - K -= 2; - for (r = skey->rc5.rounds - 1; r >= 0; r -= 2) { - B = ROR(B - K[3], A) ^ A; - A = ROR(A - K[2], B) ^ B; - B = ROR(B - K[1], A) ^ A; - A = ROR(A - K[0], B) ^ B; - K -= 4; - } - } else { - for (r = skey->rc5.rounds - 1; r >= 0; r--) { - B = ROR(B - K[1], A) ^ A; - A = ROR(A - K[0], B) ^ B; - K -= 2; - } - } - A -= skey->rc5.K[0]; - B -= skey->rc5.K[1]; - STORE32L(A, &pt[0]); - STORE32L(B, &pt[4]); - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int rc5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - int err = _rc5_ecb_decrypt(ct, pt, skey); - burn_stack(sizeof(ulong32) * 2 + sizeof(int)); - return err; -} -#endif - -/** - Performs a self-test of the LTC_RC5 block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int rc5_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - unsigned char key[16], pt[8], ct[8]; - } tests[] = { - { - { 0x91, 0x5f, 0x46, 0x19, 0xbe, 0x41, 0xb2, 0x51, - 0x63, 0x55, 0xa5, 0x01, 0x10, 0xa9, 0xce, 0x91 }, - { 0x21, 0xa5, 0xdb, 0xee, 0x15, 0x4b, 0x8f, 0x6d }, - { 0xf7, 0xc0, 0x13, 0xac, 0x5b, 0x2b, 0x89, 0x52 } - }, - { - { 0x78, 0x33, 0x48, 0xe7, 0x5a, 0xeb, 0x0f, 0x2f, - 0xd7, 0xb1, 0x69, 0xbb, 0x8d, 0xc1, 0x67, 0x87 }, - { 0xF7, 0xC0, 0x13, 0xAC, 0x5B, 0x2B, 0x89, 0x52 }, - { 0x2F, 0x42, 0xB3, 0xB7, 0x03, 0x69, 0xFC, 0x92 } - }, - { - { 0xDC, 0x49, 0xdb, 0x13, 0x75, 0xa5, 0x58, 0x4f, - 0x64, 0x85, 0xb4, 0x13, 0xb5, 0xf1, 0x2b, 0xaf }, - { 0x2F, 0x42, 0xB3, 0xB7, 0x03, 0x69, 0xFC, 0x92 }, - { 0x65, 0xc1, 0x78, 0xb2, 0x84, 0xd1, 0x97, 0xcc } - } - }; - unsigned char tmp[2][8]; - int x, y, err; - symmetric_key key; - - for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) { - /* setup key */ - if ((err = rc5_setup(tests[x].key, 16, 12, &key)) != CRYPT_OK) { - return err; - } - - /* encrypt and decrypt */ - rc5_ecb_encrypt(tests[x].pt, tmp[0], &key); - rc5_ecb_decrypt(tmp[0], tmp[1], &key); - - /* compare */ - if (compare_testvector(tmp[0], 8, tests[x].ct, 8, "RC5 Encrypt", x) != 0 || - compare_testvector(tmp[1], 8, tests[x].pt, 8, "RC5 Decrypt", x) != 0) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ - for (y = 0; y < 8; y++) tmp[0][y] = 0; - for (y = 0; y < 1000; y++) rc5_ecb_encrypt(tmp[0], tmp[0], &key); - for (y = 0; y < 1000; y++) rc5_ecb_decrypt(tmp[0], tmp[0], &key); - for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; - } - return CRYPT_OK; - #endif -} - -/** Terminate the context - @param skey The scheduled key -*/ -void rc5_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int rc5_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if (*keysize < 8) { - return CRYPT_INVALID_KEYSIZE; - } else if (*keysize > 128) { - *keysize = 128; - } - return CRYPT_OK; -} - -#endif - - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/rc6.c b/src/libtomcrypt/src/ciphers/rc6.c deleted file mode 100644 index fc6f3c92ed..0000000000 --- a/src/libtomcrypt/src/ciphers/rc6.c +++ /dev/null @@ -1,331 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file rc6.c - LTC_RC6 code by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_RC6 - -const struct ltc_cipher_descriptor rc6_desc = -{ - "rc6", - 3, - 8, 128, 16, 20, - &rc6_setup, - &rc6_ecb_encrypt, - &rc6_ecb_decrypt, - &rc6_test, - &rc6_done, - &rc6_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -static const ulong32 stab[44] = { -0xb7e15163UL, 0x5618cb1cUL, 0xf45044d5UL, 0x9287be8eUL, 0x30bf3847UL, 0xcef6b200UL, 0x6d2e2bb9UL, 0x0b65a572UL, -0xa99d1f2bUL, 0x47d498e4UL, 0xe60c129dUL, 0x84438c56UL, 0x227b060fUL, 0xc0b27fc8UL, 0x5ee9f981UL, 0xfd21733aUL, -0x9b58ecf3UL, 0x399066acUL, 0xd7c7e065UL, 0x75ff5a1eUL, 0x1436d3d7UL, 0xb26e4d90UL, 0x50a5c749UL, 0xeedd4102UL, -0x8d14babbUL, 0x2b4c3474UL, 0xc983ae2dUL, 0x67bb27e6UL, 0x05f2a19fUL, 0xa42a1b58UL, 0x42619511UL, 0xe0990ecaUL, -0x7ed08883UL, 0x1d08023cUL, 0xbb3f7bf5UL, 0x5976f5aeUL, 0xf7ae6f67UL, 0x95e5e920UL, 0x341d62d9UL, 0xd254dc92UL, -0x708c564bUL, 0x0ec3d004UL, 0xacfb49bdUL, 0x4b32c376UL }; - - /** - Initialize the LTC_RC6 block cipher - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful - */ -#ifdef LTC_CLEAN_STACK -static int _rc6_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -#else -int rc6_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -#endif -{ - ulong32 L[64], S[50], A, B, i, j, v, s, l; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - /* test parameters */ - if (num_rounds != 0 && num_rounds != 20) { - return CRYPT_INVALID_ROUNDS; - } - - /* key must be between 64 and 1024 bits */ - if (keylen < 8 || keylen > 128) { - return CRYPT_INVALID_KEYSIZE; - } - - /* copy the key into the L array */ - for (A = i = j = 0; i < (ulong32)keylen; ) { - A = (A << 8) | ((ulong32)(key[i++] & 255)); - if (!(i & 3)) { - L[j++] = BSWAP(A); - A = 0; - } - } - - /* handle odd sized keys */ - if (keylen & 3) { - A <<= (8 * (4 - (keylen&3))); - L[j++] = BSWAP(A); - } - - /* setup the S array */ - XMEMCPY(S, stab, 44 * sizeof(stab[0])); - - /* mix buffer */ - s = 3 * MAX(44, j); - l = j; - for (A = B = i = j = v = 0; v < s; v++) { - A = S[i] = ROLc(S[i] + A + B, 3); - B = L[j] = ROL(L[j] + A + B, (A+B)); - if (++i == 44) { i = 0; } - if (++j == l) { j = 0; } - } - - /* copy to key */ - for (i = 0; i < 44; i++) { - skey->rc6.K[i] = S[i]; - } - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int rc6_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - int x; - x = _rc6_setup(key, keylen, num_rounds, skey); - burn_stack(sizeof(ulong32) * 122); - return x; -} -#endif - -/** - Encrypts a block of text with LTC_RC6 - @param pt The input plaintext (16 bytes) - @param ct The output ciphertext (16 bytes) - @param skey The key as scheduled -*/ -#ifdef LTC_CLEAN_STACK -static int _rc6_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#else -int rc6_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#endif -{ - ulong32 a,b,c,d,t,u, *K; - int r; - - LTC_ARGCHK(skey != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LOAD32L(a,&pt[0]);LOAD32L(b,&pt[4]);LOAD32L(c,&pt[8]);LOAD32L(d,&pt[12]); - - b += skey->rc6.K[0]; - d += skey->rc6.K[1]; - -#define RND(a,b,c,d) \ - t = (b * (b + b + 1)); t = ROLc(t, 5); \ - u = (d * (d + d + 1)); u = ROLc(u, 5); \ - a = ROL(a^t,u) + K[0]; \ - c = ROL(c^u,t) + K[1]; K += 2; - - K = skey->rc6.K + 2; - for (r = 0; r < 20; r += 4) { - RND(a,b,c,d); - RND(b,c,d,a); - RND(c,d,a,b); - RND(d,a,b,c); - } - -#undef RND - - a += skey->rc6.K[42]; - c += skey->rc6.K[43]; - STORE32L(a,&ct[0]);STORE32L(b,&ct[4]);STORE32L(c,&ct[8]);STORE32L(d,&ct[12]); - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int rc6_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - int err = _rc6_ecb_encrypt(pt, ct, skey); - burn_stack(sizeof(ulong32) * 6 + sizeof(int)); - return err; -} -#endif - -/** - Decrypts a block of text with LTC_RC6 - @param ct The input ciphertext (16 bytes) - @param pt The output plaintext (16 bytes) - @param skey The key as scheduled -*/ -#ifdef LTC_CLEAN_STACK -static int _rc6_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#else -int rc6_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#endif -{ - ulong32 a,b,c,d,t,u, *K; - int r; - - LTC_ARGCHK(skey != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - - LOAD32L(a,&ct[0]);LOAD32L(b,&ct[4]);LOAD32L(c,&ct[8]);LOAD32L(d,&ct[12]); - a -= skey->rc6.K[42]; - c -= skey->rc6.K[43]; - -#define RND(a,b,c,d) \ - t = (b * (b + b + 1)); t = ROLc(t, 5); \ - u = (d * (d + d + 1)); u = ROLc(u, 5); \ - c = ROR(c - K[1], t) ^ u; \ - a = ROR(a - K[0], u) ^ t; K -= 2; - - K = skey->rc6.K + 40; - - for (r = 0; r < 20; r += 4) { - RND(d,a,b,c); - RND(c,d,a,b); - RND(b,c,d,a); - RND(a,b,c,d); - } - -#undef RND - - b -= skey->rc6.K[0]; - d -= skey->rc6.K[1]; - STORE32L(a,&pt[0]);STORE32L(b,&pt[4]);STORE32L(c,&pt[8]);STORE32L(d,&pt[12]); - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int rc6_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - int err = _rc6_ecb_decrypt(ct, pt, skey); - burn_stack(sizeof(ulong32) * 6 + sizeof(int)); - return err; -} -#endif - -/** - Performs a self-test of the LTC_RC6 block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int rc6_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - int keylen; - unsigned char key[32], pt[16], ct[16]; - } tests[] = { - { - 16, - { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, - 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x02, 0x13, 0x24, 0x35, 0x46, 0x57, 0x68, 0x79, - 0x8a, 0x9b, 0xac, 0xbd, 0xce, 0xdf, 0xe0, 0xf1 }, - { 0x52, 0x4e, 0x19, 0x2f, 0x47, 0x15, 0xc6, 0x23, - 0x1f, 0x51, 0xf6, 0x36, 0x7e, 0xa4, 0x3f, 0x18 } - }, - { - 24, - { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, - 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, - 0x89, 0x9a, 0xab, 0xbc, 0xcd, 0xde, 0xef, 0xf0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x02, 0x13, 0x24, 0x35, 0x46, 0x57, 0x68, 0x79, - 0x8a, 0x9b, 0xac, 0xbd, 0xce, 0xdf, 0xe0, 0xf1 }, - { 0x68, 0x83, 0x29, 0xd0, 0x19, 0xe5, 0x05, 0x04, - 0x1e, 0x52, 0xe9, 0x2a, 0xf9, 0x52, 0x91, 0xd4 } - }, - { - 32, - { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, - 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, - 0x89, 0x9a, 0xab, 0xbc, 0xcd, 0xde, 0xef, 0xf0, - 0x10, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe }, - { 0x02, 0x13, 0x24, 0x35, 0x46, 0x57, 0x68, 0x79, - 0x8a, 0x9b, 0xac, 0xbd, 0xce, 0xdf, 0xe0, 0xf1 }, - { 0xc8, 0x24, 0x18, 0x16, 0xf0, 0xd7, 0xe4, 0x89, - 0x20, 0xad, 0x16, 0xa1, 0x67, 0x4e, 0x5d, 0x48 } - } - }; - unsigned char tmp[2][16]; - int x, y, err; - symmetric_key key; - - for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) { - /* setup key */ - if ((err = rc6_setup(tests[x].key, tests[x].keylen, 0, &key)) != CRYPT_OK) { - return err; - } - - /* encrypt and decrypt */ - rc6_ecb_encrypt(tests[x].pt, tmp[0], &key); - rc6_ecb_decrypt(tmp[0], tmp[1], &key); - - /* compare */ - if (compare_testvector(tmp[0], 16, tests[x].ct, 16, "RC6 Encrypt", x) || - compare_testvector(tmp[1], 16, tests[x].pt, 16, "RC6 Decrypt", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ - for (y = 0; y < 16; y++) tmp[0][y] = 0; - for (y = 0; y < 1000; y++) rc6_ecb_encrypt(tmp[0], tmp[0], &key); - for (y = 0; y < 1000; y++) rc6_ecb_decrypt(tmp[0], tmp[0], &key); - for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; - } - return CRYPT_OK; - #endif -} - -/** Terminate the context - @param skey The scheduled key -*/ -void rc6_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int rc6_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if (*keysize < 8) { - return CRYPT_INVALID_KEYSIZE; - } else if (*keysize > 128) { - *keysize = 128; - } - return CRYPT_OK; -} - -#endif /*LTC_RC6*/ - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/safer/safer.c b/src/libtomcrypt/src/ciphers/safer/safer.c deleted file mode 100644 index 0714203c89..0000000000 --- a/src/libtomcrypt/src/ciphers/safer/safer.c +++ /dev/null @@ -1,495 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/******************************************************************************* -* -* FILE: safer.c -* -* LTC_DESCRIPTION: block-cipher algorithm LTC_SAFER (Secure And Fast Encryption -* Routine) in its four versions: LTC_SAFER K-64, LTC_SAFER K-128, -* LTC_SAFER SK-64 and LTC_SAFER SK-128. -* -* AUTHOR: Richard De Moliner (demoliner@isi.ee.ethz.ch) -* Signal and Information Processing Laboratory -* Swiss Federal Institute of Technology -* CH-8092 Zuerich, Switzerland -* -* DATE: September 9, 1995 -* -* CHANGE HISTORY: -* -*******************************************************************************/ - -#include "tomcrypt.h" - -#ifdef LTC_SAFER - -#define __LTC_SAFER_TAB_C__ -#include "safer_tab.c" - -const struct ltc_cipher_descriptor safer_k64_desc = { - "safer-k64", - 8, 8, 8, 8, LTC_SAFER_K64_DEFAULT_NOF_ROUNDS, - &safer_k64_setup, - &safer_ecb_encrypt, - &safer_ecb_decrypt, - &safer_k64_test, - &safer_done, - &safer_64_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL - }, - - safer_sk64_desc = { - "safer-sk64", - 9, 8, 8, 8, LTC_SAFER_SK64_DEFAULT_NOF_ROUNDS, - &safer_sk64_setup, - &safer_ecb_encrypt, - &safer_ecb_decrypt, - &safer_sk64_test, - &safer_done, - &safer_64_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL - }, - - safer_k128_desc = { - "safer-k128", - 10, 16, 16, 8, LTC_SAFER_K128_DEFAULT_NOF_ROUNDS, - &safer_k128_setup, - &safer_ecb_encrypt, - &safer_ecb_decrypt, - &safer_sk128_test, - &safer_done, - &safer_128_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL - }, - - safer_sk128_desc = { - "safer-sk128", - 11, 16, 16, 8, LTC_SAFER_SK128_DEFAULT_NOF_ROUNDS, - &safer_sk128_setup, - &safer_ecb_encrypt, - &safer_ecb_decrypt, - &safer_sk128_test, - &safer_done, - &safer_128_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL - }; - -/******************* Constants ************************************************/ -/* #define TAB_LEN 256 */ - -/******************* Assertions ***********************************************/ - -/******************* Macros ***************************************************/ -#define ROL8(x, n) ((unsigned char)((unsigned int)(x) << (n)\ - |(unsigned int)((x) & 0xFF) >> (8 - (n)))) -#define EXP(x) safer_ebox[(x) & 0xFF] -#define LOG(x) safer_lbox[(x) & 0xFF] -#define PHT(x, y) { y += x; x += y; } -#define IPHT(x, y) { x -= y; y -= x; } - -/******************* Types ****************************************************/ - -#ifdef LTC_CLEAN_STACK -static void _Safer_Expand_Userkey(const unsigned char *userkey_1, - const unsigned char *userkey_2, - unsigned int nof_rounds, - int strengthened, - safer_key_t key) -#else -static void Safer_Expand_Userkey(const unsigned char *userkey_1, - const unsigned char *userkey_2, - unsigned int nof_rounds, - int strengthened, - safer_key_t key) -#endif -{ unsigned int i, j, k; - unsigned char ka[LTC_SAFER_BLOCK_LEN + 1]; - unsigned char kb[LTC_SAFER_BLOCK_LEN + 1]; - - if (LTC_SAFER_MAX_NOF_ROUNDS < nof_rounds) - nof_rounds = LTC_SAFER_MAX_NOF_ROUNDS; - *key++ = (unsigned char)nof_rounds; - ka[LTC_SAFER_BLOCK_LEN] = (unsigned char)0; - kb[LTC_SAFER_BLOCK_LEN] = (unsigned char)0; - k = 0; - for (j = 0; j < LTC_SAFER_BLOCK_LEN; j++) { - ka[j] = ROL8(userkey_1[j], 5); - ka[LTC_SAFER_BLOCK_LEN] ^= ka[j]; - kb[j] = *key++ = userkey_2[j]; - kb[LTC_SAFER_BLOCK_LEN] ^= kb[j]; - } - for (i = 1; i <= nof_rounds; i++) { - for (j = 0; j < LTC_SAFER_BLOCK_LEN + 1; j++) { - ka[j] = ROL8(ka[j], 6); - kb[j] = ROL8(kb[j], 6); - } - if (strengthened) { - k = 2 * i - 1; - while (k >= (LTC_SAFER_BLOCK_LEN + 1)) { k -= LTC_SAFER_BLOCK_LEN + 1; } - } - for (j = 0; j < LTC_SAFER_BLOCK_LEN; j++) { - if (strengthened) { - *key++ = (ka[k] - + safer_ebox[(int)safer_ebox[(int)((18 * i + j + 1)&0xFF)]]) & 0xFF; - if (++k == (LTC_SAFER_BLOCK_LEN + 1)) { k = 0; } - } else { - *key++ = (ka[j] + safer_ebox[(int)safer_ebox[(int)((18 * i + j + 1)&0xFF)]]) & 0xFF; - } - } - if (strengthened) { - k = 2 * i; - while (k >= (LTC_SAFER_BLOCK_LEN + 1)) { k -= LTC_SAFER_BLOCK_LEN + 1; } - } - for (j = 0; j < LTC_SAFER_BLOCK_LEN; j++) { - if (strengthened) { - *key++ = (kb[k] - + safer_ebox[(int)safer_ebox[(int)((18 * i + j + 10)&0xFF)]]) & 0xFF; - if (++k == (LTC_SAFER_BLOCK_LEN + 1)) { k = 0; } - } else { - *key++ = (kb[j] + safer_ebox[(int)safer_ebox[(int)((18 * i + j + 10)&0xFF)]]) & 0xFF; - } - } - } - -#ifdef LTC_CLEAN_STACK - zeromem(ka, sizeof(ka)); - zeromem(kb, sizeof(kb)); -#endif -} - -#ifdef LTC_CLEAN_STACK -static void Safer_Expand_Userkey(const unsigned char *userkey_1, - const unsigned char *userkey_2, - unsigned int nof_rounds, - int strengthened, - safer_key_t key) -{ - _Safer_Expand_Userkey(userkey_1, userkey_2, nof_rounds, strengthened, key); - burn_stack(sizeof(unsigned char) * (2 * (LTC_SAFER_BLOCK_LEN + 1)) + sizeof(unsigned int)*2); -} -#endif - -int safer_k64_setup(const unsigned char *key, int keylen, int numrounds, symmetric_key *skey) -{ - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - if (numrounds != 0 && (numrounds < 6 || numrounds > LTC_SAFER_MAX_NOF_ROUNDS)) { - return CRYPT_INVALID_ROUNDS; - } - - if (keylen != 8) { - return CRYPT_INVALID_KEYSIZE; - } - - Safer_Expand_Userkey(key, key, (unsigned int)(numrounds != 0 ?numrounds:LTC_SAFER_K64_DEFAULT_NOF_ROUNDS), 0, skey->safer.key); - return CRYPT_OK; -} - -int safer_sk64_setup(const unsigned char *key, int keylen, int numrounds, symmetric_key *skey) -{ - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - if (numrounds != 0 && (numrounds < 6 || numrounds > LTC_SAFER_MAX_NOF_ROUNDS)) { - return CRYPT_INVALID_ROUNDS; - } - - if (keylen != 8) { - return CRYPT_INVALID_KEYSIZE; - } - - Safer_Expand_Userkey(key, key, (unsigned int)(numrounds != 0 ?numrounds:LTC_SAFER_SK64_DEFAULT_NOF_ROUNDS), 1, skey->safer.key); - return CRYPT_OK; -} - -int safer_k128_setup(const unsigned char *key, int keylen, int numrounds, symmetric_key *skey) -{ - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - if (numrounds != 0 && (numrounds < 6 || numrounds > LTC_SAFER_MAX_NOF_ROUNDS)) { - return CRYPT_INVALID_ROUNDS; - } - - if (keylen != 16) { - return CRYPT_INVALID_KEYSIZE; - } - - Safer_Expand_Userkey(key, key+8, (unsigned int)(numrounds != 0 ?numrounds:LTC_SAFER_K128_DEFAULT_NOF_ROUNDS), 0, skey->safer.key); - return CRYPT_OK; -} - -int safer_sk128_setup(const unsigned char *key, int keylen, int numrounds, symmetric_key *skey) -{ - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - if (numrounds != 0 && (numrounds < 6 || numrounds > LTC_SAFER_MAX_NOF_ROUNDS)) { - return CRYPT_INVALID_ROUNDS; - } - - if (keylen != 16) { - return CRYPT_INVALID_KEYSIZE; - } - - Safer_Expand_Userkey(key, key+8, (unsigned int)(numrounds != 0?numrounds:LTC_SAFER_SK128_DEFAULT_NOF_ROUNDS), 1, skey->safer.key); - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -static int _safer_ecb_encrypt(const unsigned char *block_in, - unsigned char *block_out, - symmetric_key *skey) -#else -int safer_ecb_encrypt(const unsigned char *block_in, - unsigned char *block_out, - symmetric_key *skey) -#endif -{ unsigned char a, b, c, d, e, f, g, h, t; - unsigned int round; - unsigned char *key; - - LTC_ARGCHK(block_in != NULL); - LTC_ARGCHK(block_out != NULL); - LTC_ARGCHK(skey != NULL); - - key = skey->safer.key; - a = block_in[0]; b = block_in[1]; c = block_in[2]; d = block_in[3]; - e = block_in[4]; f = block_in[5]; g = block_in[6]; h = block_in[7]; - if (LTC_SAFER_MAX_NOF_ROUNDS < (round = *key)) round = LTC_SAFER_MAX_NOF_ROUNDS; - while(round-- > 0) - { - a ^= *++key; b += *++key; c += *++key; d ^= *++key; - e ^= *++key; f += *++key; g += *++key; h ^= *++key; - a = EXP(a) + *++key; b = LOG(b) ^ *++key; - c = LOG(c) ^ *++key; d = EXP(d) + *++key; - e = EXP(e) + *++key; f = LOG(f) ^ *++key; - g = LOG(g) ^ *++key; h = EXP(h) + *++key; - PHT(a, b); PHT(c, d); PHT(e, f); PHT(g, h); - PHT(a, c); PHT(e, g); PHT(b, d); PHT(f, h); - PHT(a, e); PHT(b, f); PHT(c, g); PHT(d, h); - t = b; b = e; e = c; c = t; t = d; d = f; f = g; g = t; - } - a ^= *++key; b += *++key; c += *++key; d ^= *++key; - e ^= *++key; f += *++key; g += *++key; h ^= *++key; - block_out[0] = a & 0xFF; block_out[1] = b & 0xFF; - block_out[2] = c & 0xFF; block_out[3] = d & 0xFF; - block_out[4] = e & 0xFF; block_out[5] = f & 0xFF; - block_out[6] = g & 0xFF; block_out[7] = h & 0xFF; - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int safer_ecb_encrypt(const unsigned char *block_in, - unsigned char *block_out, - symmetric_key *skey) -{ - int err = _safer_ecb_encrypt(block_in, block_out, skey); - burn_stack(sizeof(unsigned char) * 9 + sizeof(unsigned int) + sizeof(unsigned char *)); - return err; -} -#endif - -#ifdef LTC_CLEAN_STACK -static int _safer_ecb_decrypt(const unsigned char *block_in, - unsigned char *block_out, - symmetric_key *skey) -#else -int safer_ecb_decrypt(const unsigned char *block_in, - unsigned char *block_out, - symmetric_key *skey) -#endif -{ unsigned char a, b, c, d, e, f, g, h, t; - unsigned int round; - unsigned char *key; - - LTC_ARGCHK(block_in != NULL); - LTC_ARGCHK(block_out != NULL); - LTC_ARGCHK(skey != NULL); - - key = skey->safer.key; - a = block_in[0]; b = block_in[1]; c = block_in[2]; d = block_in[3]; - e = block_in[4]; f = block_in[5]; g = block_in[6]; h = block_in[7]; - if (LTC_SAFER_MAX_NOF_ROUNDS < (round = *key)) round = LTC_SAFER_MAX_NOF_ROUNDS; - key += LTC_SAFER_BLOCK_LEN * (1 + 2 * round); - h ^= *key; g -= *--key; f -= *--key; e ^= *--key; - d ^= *--key; c -= *--key; b -= *--key; a ^= *--key; - while (round--) - { - t = e; e = b; b = c; c = t; t = f; f = d; d = g; g = t; - IPHT(a, e); IPHT(b, f); IPHT(c, g); IPHT(d, h); - IPHT(a, c); IPHT(e, g); IPHT(b, d); IPHT(f, h); - IPHT(a, b); IPHT(c, d); IPHT(e, f); IPHT(g, h); - h -= *--key; g ^= *--key; f ^= *--key; e -= *--key; - d -= *--key; c ^= *--key; b ^= *--key; a -= *--key; - h = LOG(h) ^ *--key; g = EXP(g) - *--key; - f = EXP(f) - *--key; e = LOG(e) ^ *--key; - d = LOG(d) ^ *--key; c = EXP(c) - *--key; - b = EXP(b) - *--key; a = LOG(a) ^ *--key; - } - block_out[0] = a & 0xFF; block_out[1] = b & 0xFF; - block_out[2] = c & 0xFF; block_out[3] = d & 0xFF; - block_out[4] = e & 0xFF; block_out[5] = f & 0xFF; - block_out[6] = g & 0xFF; block_out[7] = h & 0xFF; - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int safer_ecb_decrypt(const unsigned char *block_in, - unsigned char *block_out, - symmetric_key *skey) -{ - int err = _safer_ecb_decrypt(block_in, block_out, skey); - burn_stack(sizeof(unsigned char) * 9 + sizeof(unsigned int) + sizeof(unsigned char *)); - return err; -} -#endif - -int safer_64_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if (*keysize < 8) { - return CRYPT_INVALID_KEYSIZE; - } else { - *keysize = 8; - return CRYPT_OK; - } -} - -int safer_128_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if (*keysize < 16) { - return CRYPT_INVALID_KEYSIZE; - } else { - *keysize = 16; - return CRYPT_OK; - } -} - -int safer_k64_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const unsigned char k64_pt[] = { 1, 2, 3, 4, 5, 6, 7, 8 }, - k64_key[] = { 8, 7, 6, 5, 4, 3, 2, 1 }, - k64_ct[] = { 200, 242, 156, 221, 135, 120, 62, 217 }; - - symmetric_key skey; - unsigned char buf[2][8]; - int err; - - /* test K64 */ - if ((err = safer_k64_setup(k64_key, 8, 6, &skey)) != CRYPT_OK) { - return err; - } - safer_ecb_encrypt(k64_pt, buf[0], &skey); - safer_ecb_decrypt(buf[0], buf[1], &skey); - - if (compare_testvector(buf[0], 8, k64_ct, 8, "Safer K64 Encrypt", 0) != 0 || - compare_testvector(buf[1], 8, k64_pt, 8, "Safer K64 Decrypt", 0) != 0) { - return CRYPT_FAIL_TESTVECTOR; - } - - return CRYPT_OK; - #endif -} - - -int safer_sk64_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const unsigned char sk64_pt[] = { 1, 2, 3, 4, 5, 6, 7, 8 }, - sk64_key[] = { 1, 2, 3, 4, 5, 6, 7, 8 }, - sk64_ct[] = { 95, 206, 155, 162, 5, 132, 56, 199 }; - - symmetric_key skey; - unsigned char buf[2][8]; - int err, y; - - /* test SK64 */ - if ((err = safer_sk64_setup(sk64_key, 8, 6, &skey)) != CRYPT_OK) { - return err; - } - - safer_ecb_encrypt(sk64_pt, buf[0], &skey); - safer_ecb_decrypt(buf[0], buf[1], &skey); - - if (compare_testvector(buf[0], 8, sk64_ct, 8, "Safer SK64 Encrypt", 0) != 0 || - compare_testvector(buf[1], 8, sk64_pt, 8, "Safer SK64 Decrypt", 0) != 0) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ - for (y = 0; y < 8; y++) buf[0][y] = 0; - for (y = 0; y < 1000; y++) safer_ecb_encrypt(buf[0], buf[0], &skey); - for (y = 0; y < 1000; y++) safer_ecb_decrypt(buf[0], buf[0], &skey); - for (y = 0; y < 8; y++) if (buf[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; - - return CRYPT_OK; - #endif -} - -/** Terminate the context - @param skey The scheduled key -*/ -void safer_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -int safer_sk128_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const unsigned char sk128_pt[] = { 1, 2, 3, 4, 5, 6, 7, 8 }, - sk128_key[] = { 1, 2, 3, 4, 5, 6, 7, 8, - 0, 0, 0, 0, 0, 0, 0, 0 }, - sk128_ct[] = { 255, 120, 17, 228, 179, 167, 46, 113 }; - - symmetric_key skey; - unsigned char buf[2][8]; - int err, y; - - /* test SK128 */ - if ((err = safer_sk128_setup(sk128_key, 16, 0, &skey)) != CRYPT_OK) { - return err; - } - safer_ecb_encrypt(sk128_pt, buf[0], &skey); - safer_ecb_decrypt(buf[0], buf[1], &skey); - - if (compare_testvector(buf[0], 8, sk128_ct, 8, "Safer SK128 Encrypt", 0) != 0 || - compare_testvector(buf[1], 8, sk128_pt, 8, "Safer SK128 Decrypt", 0) != 0) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ - for (y = 0; y < 8; y++) buf[0][y] = 0; - for (y = 0; y < 1000; y++) safer_ecb_encrypt(buf[0], buf[0], &skey); - for (y = 0; y < 1000; y++) safer_ecb_decrypt(buf[0], buf[0], &skey); - for (y = 0; y < 8; y++) if (buf[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; - - return CRYPT_OK; - #endif -} - -#endif - - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/safer/safer_tab.c b/src/libtomcrypt/src/ciphers/safer/safer_tab.c deleted file mode 100644 index 5a9c1f381a..0000000000 --- a/src/libtomcrypt/src/ciphers/safer/safer_tab.c +++ /dev/null @@ -1,64 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file safer_tab.c - Tables for LTC_SAFER block ciphers -*/ - -#ifdef __LTC_SAFER_TAB_C__ - -/* This is the box defined by ebox[x] = 45^x mod 257. - * Its assumed that the value "256" corresponds to zero. */ -static const unsigned char safer_ebox[256] = { - 1, 45, 226, 147, 190, 69, 21, 174, 120, 3, 135, 164, 184, 56, 207, 63, - 8, 103, 9, 148, 235, 38, 168, 107, 189, 24, 52, 27, 187, 191, 114, 247, - 64, 53, 72, 156, 81, 47, 59, 85, 227, 192, 159, 216, 211, 243, 141, 177, -255, 167, 62, 220, 134, 119, 215, 166, 17, 251, 244, 186, 146, 145, 100, 131, -241, 51, 239, 218, 44, 181, 178, 43, 136, 209, 153, 203, 140, 132, 29, 20, -129, 151, 113, 202, 95, 163, 139, 87, 60, 130, 196, 82, 92, 28, 232, 160, - 4, 180, 133, 74, 246, 19, 84, 182, 223, 12, 26, 142, 222, 224, 57, 252, - 32, 155, 36, 78, 169, 152, 158, 171, 242, 96, 208, 108, 234, 250, 199, 217, - 0, 212, 31, 110, 67, 188, 236, 83, 137, 254, 122, 93, 73, 201, 50, 194, -249, 154, 248, 109, 22, 219, 89, 150, 68, 233, 205, 230, 70, 66, 143, 10, -193, 204, 185, 101, 176, 210, 198, 172, 30, 65, 98, 41, 46, 14, 116, 80, - 2, 90, 195, 37, 123, 138, 42, 91, 240, 6, 13, 71, 111, 112, 157, 126, - 16, 206, 18, 39, 213, 76, 79, 214, 121, 48, 104, 54, 117, 125, 228, 237, -128, 106, 144, 55, 162, 94, 118, 170, 197, 127, 61, 175, 165, 229, 25, 97, -253, 77, 124, 183, 11, 238, 173, 75, 34, 245, 231, 115, 35, 33, 200, 5, -225, 102, 221, 179, 88, 105, 99, 86, 15, 161, 49, 149, 23, 7, 58, 40 -}; - -/* This is the inverse of ebox or the base 45 logarithm */ -static const unsigned char safer_lbox[256] = { -128, 0, 176, 9, 96, 239, 185, 253, 16, 18, 159, 228, 105, 186, 173, 248, -192, 56, 194, 101, 79, 6, 148, 252, 25, 222, 106, 27, 93, 78, 168, 130, -112, 237, 232, 236, 114, 179, 21, 195, 255, 171, 182, 71, 68, 1, 172, 37, -201, 250, 142, 65, 26, 33, 203, 211, 13, 110, 254, 38, 88, 218, 50, 15, - 32, 169, 157, 132, 152, 5, 156, 187, 34, 140, 99, 231, 197, 225, 115, 198, -175, 36, 91, 135, 102, 39, 247, 87, 244, 150, 177, 183, 92, 139, 213, 84, -121, 223, 170, 246, 62, 163, 241, 17, 202, 245, 209, 23, 123, 147, 131, 188, -189, 82, 30, 235, 174, 204, 214, 53, 8, 200, 138, 180, 226, 205, 191, 217, -208, 80, 89, 63, 77, 98, 52, 10, 72, 136, 181, 86, 76, 46, 107, 158, -210, 61, 60, 3, 19, 251, 151, 81, 117, 74, 145, 113, 35, 190, 118, 42, - 95, 249, 212, 85, 11, 220, 55, 49, 22, 116, 215, 119, 167, 230, 7, 219, -164, 47, 70, 243, 97, 69, 103, 227, 12, 162, 59, 28, 133, 24, 4, 29, - 41, 160, 143, 178, 90, 216, 166, 126, 238, 141, 83, 75, 161, 154, 193, 14, -122, 73, 165, 44, 129, 196, 199, 54, 43, 127, 67, 149, 51, 242, 108, 104, -109, 240, 2, 40, 206, 221, 155, 234, 94, 153, 124, 20, 134, 207, 229, 66, -184, 64, 120, 45, 58, 233, 100, 31, 146, 144, 125, 57, 111, 224, 137, 48 -}; - -#endif /* __LTC_SAFER_TAB_C__ */ - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/safer/saferp.c b/src/libtomcrypt/src/ciphers/safer/saferp.c deleted file mode 100644 index b56be06bd8..0000000000 --- a/src/libtomcrypt/src/ciphers/safer/saferp.c +++ /dev/null @@ -1,568 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file saferp.c - LTC_SAFER+ Implementation by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_SAFERP - -#define __LTC_SAFER_TAB_C__ -#include "safer_tab.c" - -const struct ltc_cipher_descriptor saferp_desc = -{ - "safer+", - 4, - 16, 32, 16, 8, - &saferp_setup, - &saferp_ecb_encrypt, - &saferp_ecb_decrypt, - &saferp_test, - &saferp_done, - &saferp_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -/* ROUND(b,i) - * - * This is one forward key application. Note the basic form is - * key addition, substitution, key addition. The safer_ebox and safer_lbox - * are the exponentiation box and logarithm boxes respectively. - * The value of 'i' is the current round number which allows this - * function to be unrolled massively. Most of LTC_SAFER+'s speed - * comes from not having to compute indirect accesses into the - * array of 16 bytes b[0..15] which is the block of data -*/ - -#define ROUND(b, i) do { \ - b[0] = (safer_ebox[(b[0] ^ skey->saferp.K[i][0]) & 255] + skey->saferp.K[i+1][0]) & 255; \ - b[1] = safer_lbox[(b[1] + skey->saferp.K[i][1]) & 255] ^ skey->saferp.K[i+1][1]; \ - b[2] = safer_lbox[(b[2] + skey->saferp.K[i][2]) & 255] ^ skey->saferp.K[i+1][2]; \ - b[3] = (safer_ebox[(b[3] ^ skey->saferp.K[i][3]) & 255] + skey->saferp.K[i+1][3]) & 255; \ - b[4] = (safer_ebox[(b[4] ^ skey->saferp.K[i][4]) & 255] + skey->saferp.K[i+1][4]) & 255; \ - b[5] = safer_lbox[(b[5] + skey->saferp.K[i][5]) & 255] ^ skey->saferp.K[i+1][5]; \ - b[6] = safer_lbox[(b[6] + skey->saferp.K[i][6]) & 255] ^ skey->saferp.K[i+1][6]; \ - b[7] = (safer_ebox[(b[7] ^ skey->saferp.K[i][7]) & 255] + skey->saferp.K[i+1][7]) & 255; \ - b[8] = (safer_ebox[(b[8] ^ skey->saferp.K[i][8]) & 255] + skey->saferp.K[i+1][8]) & 255; \ - b[9] = safer_lbox[(b[9] + skey->saferp.K[i][9]) & 255] ^ skey->saferp.K[i+1][9]; \ - b[10] = safer_lbox[(b[10] + skey->saferp.K[i][10]) & 255] ^ skey->saferp.K[i+1][10]; \ - b[11] = (safer_ebox[(b[11] ^ skey->saferp.K[i][11]) & 255] + skey->saferp.K[i+1][11]) & 255; \ - b[12] = (safer_ebox[(b[12] ^ skey->saferp.K[i][12]) & 255] + skey->saferp.K[i+1][12]) & 255; \ - b[13] = safer_lbox[(b[13] + skey->saferp.K[i][13]) & 255] ^ skey->saferp.K[i+1][13]; \ - b[14] = safer_lbox[(b[14] + skey->saferp.K[i][14]) & 255] ^ skey->saferp.K[i+1][14]; \ - b[15] = (safer_ebox[(b[15] ^ skey->saferp.K[i][15]) & 255] + skey->saferp.K[i+1][15]) & 255; \ -} while (0) - -/* This is one inverse key application */ -#define iROUND(b, i) do { \ - b[0] = safer_lbox[(b[0] - skey->saferp.K[i+1][0]) & 255] ^ skey->saferp.K[i][0]; \ - b[1] = (safer_ebox[(b[1] ^ skey->saferp.K[i+1][1]) & 255] - skey->saferp.K[i][1]) & 255; \ - b[2] = (safer_ebox[(b[2] ^ skey->saferp.K[i+1][2]) & 255] - skey->saferp.K[i][2]) & 255; \ - b[3] = safer_lbox[(b[3] - skey->saferp.K[i+1][3]) & 255] ^ skey->saferp.K[i][3]; \ - b[4] = safer_lbox[(b[4] - skey->saferp.K[i+1][4]) & 255] ^ skey->saferp.K[i][4]; \ - b[5] = (safer_ebox[(b[5] ^ skey->saferp.K[i+1][5]) & 255] - skey->saferp.K[i][5]) & 255; \ - b[6] = (safer_ebox[(b[6] ^ skey->saferp.K[i+1][6]) & 255] - skey->saferp.K[i][6]) & 255; \ - b[7] = safer_lbox[(b[7] - skey->saferp.K[i+1][7]) & 255] ^ skey->saferp.K[i][7]; \ - b[8] = safer_lbox[(b[8] - skey->saferp.K[i+1][8]) & 255] ^ skey->saferp.K[i][8]; \ - b[9] = (safer_ebox[(b[9] ^ skey->saferp.K[i+1][9]) & 255] - skey->saferp.K[i][9]) & 255; \ - b[10] = (safer_ebox[(b[10] ^ skey->saferp.K[i+1][10]) & 255] - skey->saferp.K[i][10]) & 255; \ - b[11] = safer_lbox[(b[11] - skey->saferp.K[i+1][11]) & 255] ^ skey->saferp.K[i][11]; \ - b[12] = safer_lbox[(b[12] - skey->saferp.K[i+1][12]) & 255] ^ skey->saferp.K[i][12]; \ - b[13] = (safer_ebox[(b[13] ^ skey->saferp.K[i+1][13]) & 255] - skey->saferp.K[i][13]) & 255; \ - b[14] = (safer_ebox[(b[14] ^ skey->saferp.K[i+1][14]) & 255] - skey->saferp.K[i][14]) & 255; \ - b[15] = safer_lbox[(b[15] - skey->saferp.K[i+1][15]) & 255] ^ skey->saferp.K[i][15]; \ -} while (0) - -/* This is a forward single layer PHT transform. */ -#define PHT(b) do { \ - b[0] = (b[0] + (b[1] = (b[0] + b[1]) & 255)) & 255; \ - b[2] = (b[2] + (b[3] = (b[3] + b[2]) & 255)) & 255; \ - b[4] = (b[4] + (b[5] = (b[5] + b[4]) & 255)) & 255; \ - b[6] = (b[6] + (b[7] = (b[7] + b[6]) & 255)) & 255; \ - b[8] = (b[8] + (b[9] = (b[9] + b[8]) & 255)) & 255; \ - b[10] = (b[10] + (b[11] = (b[11] + b[10]) & 255)) & 255; \ - b[12] = (b[12] + (b[13] = (b[13] + b[12]) & 255)) & 255; \ - b[14] = (b[14] + (b[15] = (b[15] + b[14]) & 255)) & 255; \ -} while (0) - -/* This is an inverse single layer PHT transform */ -#define iPHT(b) do { \ - b[15] = (b[15] - (b[14] = (b[14] - b[15]) & 255)) & 255; \ - b[13] = (b[13] - (b[12] = (b[12] - b[13]) & 255)) & 255; \ - b[11] = (b[11] - (b[10] = (b[10] - b[11]) & 255)) & 255; \ - b[9] = (b[9] - (b[8] = (b[8] - b[9]) & 255)) & 255; \ - b[7] = (b[7] - (b[6] = (b[6] - b[7]) & 255)) & 255; \ - b[5] = (b[5] - (b[4] = (b[4] - b[5]) & 255)) & 255; \ - b[3] = (b[3] - (b[2] = (b[2] - b[3]) & 255)) & 255; \ - b[1] = (b[1] - (b[0] = (b[0] - b[1]) & 255)) & 255; \ - } while (0) - -/* This is the "Armenian" Shuffle. It takes the input from b and stores it in b2 */ -#define SHUF(b, b2) do { \ - b2[0] = b[8]; b2[1] = b[11]; b2[2] = b[12]; b2[3] = b[15]; \ - b2[4] = b[2]; b2[5] = b[1]; b2[6] = b[6]; b2[7] = b[5]; \ - b2[8] = b[10]; b2[9] = b[9]; b2[10] = b[14]; b2[11] = b[13]; \ - b2[12] = b[0]; b2[13] = b[7]; b2[14] = b[4]; b2[15] = b[3]; \ -} while (0) - -/* This is the inverse shuffle. It takes from b and gives to b2 */ -#define iSHUF(b, b2) do { \ - b2[0] = b[12]; b2[1] = b[5]; b2[2] = b[4]; b2[3] = b[15]; \ - b2[4] = b[14]; b2[5] = b[7]; b2[6] = b[6]; b2[7] = b[13]; \ - b2[8] = b[0]; b2[9] = b[9]; b2[10] = b[8]; b2[11] = b[1]; \ - b2[12] = b[2]; b2[13] = b[11]; b2[14] = b[10]; b2[15] = b[3]; \ -} while (0) - -/* The complete forward Linear Transform layer. - * Note that alternating usage of b and b2. - * Each round of LT starts in 'b' and ends in 'b2'. - */ -#define LT(b, b2) do { \ - PHT(b); SHUF(b, b2); \ - PHT(b2); SHUF(b2, b); \ - PHT(b); SHUF(b, b2); \ - PHT(b2); \ -} while (0) - -/* This is the inverse linear transform layer. */ -#define iLT(b, b2) do { \ - iPHT(b); \ - iSHUF(b, b2); iPHT(b2); \ - iSHUF(b2, b); iPHT(b); \ - iSHUF(b, b2); iPHT(b2); \ -} while (0) - -#ifdef LTC_SMALL_CODE - -static void _round(unsigned char *b, int i, symmetric_key *skey) -{ - ROUND(b, i); -} - -static void _iround(unsigned char *b, int i, symmetric_key *skey) -{ - iROUND(b, i); -} - -static void _lt(unsigned char *b, unsigned char *b2) -{ - LT(b, b2); -} - -static void _ilt(unsigned char *b, unsigned char *b2) -{ - iLT(b, b2); -} - -#undef ROUND -#define ROUND(b, i) _round(b, i, skey) - -#undef iROUND -#define iROUND(b, i) _iround(b, i, skey) - -#undef LT -#define LT(b, b2) _lt(b, b2) - -#undef iLT -#define iLT(b, b2) _ilt(b, b2) - -#endif - -/* These are the 33, 128-bit bias words for the key schedule */ -static const unsigned char safer_bias[33][16] = { -{ 70, 151, 177, 186, 163, 183, 16, 10, 197, 55, 179, 201, 90, 40, 172, 100}, -{ 236, 171, 170, 198, 103, 149, 88, 13, 248, 154, 246, 110, 102, 220, 5, 61}, -{ 138, 195, 216, 137, 106, 233, 54, 73, 67, 191, 235, 212, 150, 155, 104, 160}, -{ 93, 87, 146, 31, 213, 113, 92, 187, 34, 193, 190, 123, 188, 153, 99, 148}, -{ 42, 97, 184, 52, 50, 25, 253, 251, 23, 64, 230, 81, 29, 65, 68, 143}, -{ 221, 4, 128, 222, 231, 49, 214, 127, 1, 162, 247, 57, 218, 111, 35, 202}, -{ 58, 208, 28, 209, 48, 62, 18, 161, 205, 15, 224, 168, 175, 130, 89, 44}, -{ 125, 173, 178, 239, 194, 135, 206, 117, 6, 19, 2, 144, 79, 46, 114, 51}, -{ 192, 141, 207, 169, 129, 226, 196, 39, 47, 108, 122, 159, 82, 225, 21, 56}, -{ 252, 32, 66, 199, 8, 228, 9, 85, 94, 140, 20, 118, 96, 255, 223, 215}, -{ 250, 11, 33, 0, 26, 249, 166, 185, 232, 158, 98, 76, 217, 145, 80, 210}, -{ 24, 180, 7, 132, 234, 91, 164, 200, 14, 203, 72, 105, 75, 78, 156, 53}, -{ 69, 77, 84, 229, 37, 60, 12, 74, 139, 63, 204, 167, 219, 107, 174, 244}, -{ 45, 243, 124, 109, 157, 181, 38, 116, 242, 147, 83, 176, 240, 17, 237, 131}, -{ 182, 3, 22, 115, 59, 30, 142, 112, 189, 134, 27, 71, 126, 36, 86, 241}, -{ 136, 70, 151, 177, 186, 163, 183, 16, 10, 197, 55, 179, 201, 90, 40, 172}, -{ 220, 134, 119, 215, 166, 17, 251, 244, 186, 146, 145, 100, 131, 241, 51, 239}, -{ 44, 181, 178, 43, 136, 209, 153, 203, 140, 132, 29, 20, 129, 151, 113, 202}, -{ 163, 139, 87, 60, 130, 196, 82, 92, 28, 232, 160, 4, 180, 133, 74, 246}, -{ 84, 182, 223, 12, 26, 142, 222, 224, 57, 252, 32, 155, 36, 78, 169, 152}, -{ 171, 242, 96, 208, 108, 234, 250, 199, 217, 0, 212, 31, 110, 67, 188, 236}, -{ 137, 254, 122, 93, 73, 201, 50, 194, 249, 154, 248, 109, 22, 219, 89, 150}, -{ 233, 205, 230, 70, 66, 143, 10, 193, 204, 185, 101, 176, 210, 198, 172, 30}, -{ 98, 41, 46, 14, 116, 80, 2, 90, 195, 37, 123, 138, 42, 91, 240, 6}, -{ 71, 111, 112, 157, 126, 16, 206, 18, 39, 213, 76, 79, 214, 121, 48, 104}, -{ 117, 125, 228, 237, 128, 106, 144, 55, 162, 94, 118, 170, 197, 127, 61, 175}, -{ 229, 25, 97, 253, 77, 124, 183, 11, 238, 173, 75, 34, 245, 231, 115, 35}, -{ 200, 5, 225, 102, 221, 179, 88, 105, 99, 86, 15, 161, 49, 149, 23, 7}, -{ 40, 1, 45, 226, 147, 190, 69, 21, 174, 120, 3, 135, 164, 184, 56, 207}, -{ 8, 103, 9, 148, 235, 38, 168, 107, 189, 24, 52, 27, 187, 191, 114, 247}, -{ 53, 72, 156, 81, 47, 59, 85, 227, 192, 159, 216, 211, 243, 141, 177, 255}, -{ 62, 220, 134, 119, 215, 166, 17, 251, 244, 186, 146, 145, 100, 131, 241, 51}}; - - /** - Initialize the LTC_SAFER+ block cipher - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful - */ -int saferp_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - unsigned x, y, z; - unsigned char t[33]; - static const int rounds[3] = { 8, 12, 16 }; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - /* check arguments */ - if (keylen != 16 && keylen != 24 && keylen != 32) { - return CRYPT_INVALID_KEYSIZE; - } - - /* Is the number of rounds valid? Either use zero for default or - * 8,12,16 rounds for 16,24,32 byte keys - */ - if (num_rounds != 0 && num_rounds != rounds[(keylen/8)-2]) { - return CRYPT_INVALID_ROUNDS; - } - - /* 128 bit key version */ - if (keylen == 16) { - /* copy key into t */ - for (x = y = 0; x < 16; x++) { - t[x] = key[x]; - y ^= key[x]; - } - t[16] = y; - - /* make round keys */ - for (x = 0; x < 16; x++) { - skey->saferp.K[0][x] = t[x]; - } - - /* make the 16 other keys as a transformation of the first key */ - for (x = 1; x < 17; x++) { - /* rotate 3 bits each */ - for (y = 0; y < 17; y++) { - t[y] = ((t[y]<<3)|(t[y]>>5)) & 255; - } - - /* select and add */ - z = x; - for (y = 0; y < 16; y++) { - skey->saferp.K[x][y] = (t[z] + safer_bias[x-1][y]) & 255; - if (++z == 17) { z = 0; } - } - } - skey->saferp.rounds = 8; - } else if (keylen == 24) { - /* copy key into t */ - for (x = y = 0; x < 24; x++) { - t[x] = key[x]; - y ^= key[x]; - } - t[24] = y; - - /* make round keys */ - for (x = 0; x < 16; x++) { - skey->saferp.K[0][x] = t[x]; - } - - for (x = 1; x < 25; x++) { - /* rotate 3 bits each */ - for (y = 0; y < 25; y++) { - t[y] = ((t[y]<<3)|(t[y]>>5)) & 255; - } - - /* select and add */ - z = x; - for (y = 0; y < 16; y++) { - skey->saferp.K[x][y] = (t[z] + safer_bias[x-1][y]) & 255; - if (++z == 25) { z = 0; } - } - } - skey->saferp.rounds = 12; - } else { - /* copy key into t */ - for (x = y = 0; x < 32; x++) { - t[x] = key[x]; - y ^= key[x]; - } - t[32] = y; - - /* make round keys */ - for (x = 0; x < 16; x++) { - skey->saferp.K[0][x] = t[x]; - } - - for (x = 1; x < 33; x++) { - /* rotate 3 bits each */ - for (y = 0; y < 33; y++) { - t[y] = ((t[y]<<3)|(t[y]>>5)) & 255; - } - - /* select and add */ - z = x; - for (y = 0; y < 16; y++) { - skey->saferp.K[x][y] = (t[z] + safer_bias[x-1][y]) & 255; - if (++z == 33) { z = 0; } - } - } - skey->saferp.rounds = 16; - } -#ifdef LTC_CLEAN_STACK - zeromem(t, sizeof(t)); -#endif - return CRYPT_OK; -} - -/** - Encrypts a block of text with LTC_SAFER+ - @param pt The input plaintext (16 bytes) - @param ct The output ciphertext (16 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int saferp_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - unsigned char b[16]; - int x; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - - /* do eight rounds */ - for (x = 0; x < 16; x++) { - b[x] = pt[x]; - } - ROUND(b, 0); LT(b, ct); - ROUND(ct, 2); LT(ct, b); - ROUND(b, 4); LT(b, ct); - ROUND(ct, 6); LT(ct, b); - ROUND(b, 8); LT(b, ct); - ROUND(ct, 10); LT(ct, b); - ROUND(b, 12); LT(b, ct); - ROUND(ct, 14); LT(ct, b); - /* 192-bit key? */ - if (skey->saferp.rounds > 8) { - ROUND(b, 16); LT(b, ct); - ROUND(ct, 18); LT(ct, b); - ROUND(b, 20); LT(b, ct); - ROUND(ct, 22); LT(ct, b); - } - /* 256-bit key? */ - if (skey->saferp.rounds > 12) { - ROUND(b, 24); LT(b, ct); - ROUND(ct, 26); LT(ct, b); - ROUND(b, 28); LT(b, ct); - ROUND(ct, 30); LT(ct, b); - } - ct[0] = b[0] ^ skey->saferp.K[skey->saferp.rounds*2][0]; - ct[1] = (b[1] + skey->saferp.K[skey->saferp.rounds*2][1]) & 255; - ct[2] = (b[2] + skey->saferp.K[skey->saferp.rounds*2][2]) & 255; - ct[3] = b[3] ^ skey->saferp.K[skey->saferp.rounds*2][3]; - ct[4] = b[4] ^ skey->saferp.K[skey->saferp.rounds*2][4]; - ct[5] = (b[5] + skey->saferp.K[skey->saferp.rounds*2][5]) & 255; - ct[6] = (b[6] + skey->saferp.K[skey->saferp.rounds*2][6]) & 255; - ct[7] = b[7] ^ skey->saferp.K[skey->saferp.rounds*2][7]; - ct[8] = b[8] ^ skey->saferp.K[skey->saferp.rounds*2][8]; - ct[9] = (b[9] + skey->saferp.K[skey->saferp.rounds*2][9]) & 255; - ct[10] = (b[10] + skey->saferp.K[skey->saferp.rounds*2][10]) & 255; - ct[11] = b[11] ^ skey->saferp.K[skey->saferp.rounds*2][11]; - ct[12] = b[12] ^ skey->saferp.K[skey->saferp.rounds*2][12]; - ct[13] = (b[13] + skey->saferp.K[skey->saferp.rounds*2][13]) & 255; - ct[14] = (b[14] + skey->saferp.K[skey->saferp.rounds*2][14]) & 255; - ct[15] = b[15] ^ skey->saferp.K[skey->saferp.rounds*2][15]; -#ifdef LTC_CLEAN_STACK - zeromem(b, sizeof(b)); -#endif - return CRYPT_OK; -} - -/** - Decrypts a block of text with LTC_SAFER+ - @param ct The input ciphertext (16 bytes) - @param pt The output plaintext (16 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int saferp_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - unsigned char b[16]; - int x; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - - /* do eight rounds */ - b[0] = ct[0] ^ skey->saferp.K[skey->saferp.rounds*2][0]; - b[1] = (ct[1] - skey->saferp.K[skey->saferp.rounds*2][1]) & 255; - b[2] = (ct[2] - skey->saferp.K[skey->saferp.rounds*2][2]) & 255; - b[3] = ct[3] ^ skey->saferp.K[skey->saferp.rounds*2][3]; - b[4] = ct[4] ^ skey->saferp.K[skey->saferp.rounds*2][4]; - b[5] = (ct[5] - skey->saferp.K[skey->saferp.rounds*2][5]) & 255; - b[6] = (ct[6] - skey->saferp.K[skey->saferp.rounds*2][6]) & 255; - b[7] = ct[7] ^ skey->saferp.K[skey->saferp.rounds*2][7]; - b[8] = ct[8] ^ skey->saferp.K[skey->saferp.rounds*2][8]; - b[9] = (ct[9] - skey->saferp.K[skey->saferp.rounds*2][9]) & 255; - b[10] = (ct[10] - skey->saferp.K[skey->saferp.rounds*2][10]) & 255; - b[11] = ct[11] ^ skey->saferp.K[skey->saferp.rounds*2][11]; - b[12] = ct[12] ^ skey->saferp.K[skey->saferp.rounds*2][12]; - b[13] = (ct[13] - skey->saferp.K[skey->saferp.rounds*2][13]) & 255; - b[14] = (ct[14] - skey->saferp.K[skey->saferp.rounds*2][14]) & 255; - b[15] = ct[15] ^ skey->saferp.K[skey->saferp.rounds*2][15]; - /* 256-bit key? */ - if (skey->saferp.rounds > 12) { - iLT(b, pt); iROUND(pt, 30); - iLT(pt, b); iROUND(b, 28); - iLT(b, pt); iROUND(pt, 26); - iLT(pt, b); iROUND(b, 24); - } - /* 192-bit key? */ - if (skey->saferp.rounds > 8) { - iLT(b, pt); iROUND(pt, 22); - iLT(pt, b); iROUND(b, 20); - iLT(b, pt); iROUND(pt, 18); - iLT(pt, b); iROUND(b, 16); - } - iLT(b, pt); iROUND(pt, 14); - iLT(pt, b); iROUND(b, 12); - iLT(b, pt); iROUND(pt,10); - iLT(pt, b); iROUND(b, 8); - iLT(b, pt); iROUND(pt,6); - iLT(pt, b); iROUND(b, 4); - iLT(b, pt); iROUND(pt,2); - iLT(pt, b); iROUND(b, 0); - for (x = 0; x < 16; x++) { - pt[x] = b[x]; - } -#ifdef LTC_CLEAN_STACK - zeromem(b, sizeof(b)); -#endif - return CRYPT_OK; -} - -/** - Performs a self-test of the LTC_SAFER+ block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int saferp_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - int keylen; - unsigned char key[32], pt[16], ct[16]; - } tests[] = { - { - 16, - { 41, 35, 190, 132, 225, 108, 214, 174, - 82, 144, 73, 241, 241, 187, 233, 235 }, - { 179, 166, 219, 60, 135, 12, 62, 153, - 36, 94, 13, 28, 6, 183, 71, 222 }, - { 224, 31, 182, 10, 12, 255, 84, 70, - 127, 13, 89, 249, 9, 57, 165, 220 } - }, { - 24, - { 72, 211, 143, 117, 230, 217, 29, 42, - 229, 192, 247, 43, 120, 129, 135, 68, - 14, 95, 80, 0, 212, 97, 141, 190 }, - { 123, 5, 21, 7, 59, 51, 130, 31, - 24, 112, 146, 218, 100, 84, 206, 177 }, - { 92, 136, 4, 63, 57, 95, 100, 0, - 150, 130, 130, 16, 193, 111, 219, 133 } - }, { - 32, - { 243, 168, 141, 254, 190, 242, 235, 113, - 255, 160, 208, 59, 117, 6, 140, 126, - 135, 120, 115, 77, 208, 190, 130, 190, - 219, 194, 70, 65, 43, 140, 250, 48 }, - { 127, 112, 240, 167, 84, 134, 50, 149, - 170, 91, 104, 19, 11, 230, 252, 245 }, - { 88, 11, 25, 36, 172, 229, 202, 213, - 170, 65, 105, 153, 220, 104, 153, 138 } - } - }; - - unsigned char tmp[2][16]; - symmetric_key skey; - int err, i, y; - - for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { - if ((err = saferp_setup(tests[i].key, tests[i].keylen, 0, &skey)) != CRYPT_OK) { - return err; - } - saferp_ecb_encrypt(tests[i].pt, tmp[0], &skey); - saferp_ecb_decrypt(tmp[0], tmp[1], &skey); - - /* compare */ - if (compare_testvector(tmp[0], 16, tests[i].ct, 16, "Safer+ Encrypt", i) || - compare_testvector(tmp[1], 16, tests[i].pt, 16, "Safer+ Decrypt", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ - for (y = 0; y < 16; y++) tmp[0][y] = 0; - for (y = 0; y < 1000; y++) saferp_ecb_encrypt(tmp[0], tmp[0], &skey); - for (y = 0; y < 1000; y++) saferp_ecb_decrypt(tmp[0], tmp[0], &skey); - for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; - } - - return CRYPT_OK; - #endif -} - -/** Terminate the context - @param skey The scheduled key -*/ -void saferp_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int saferp_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - - if (*keysize < 16) - return CRYPT_INVALID_KEYSIZE; - if (*keysize < 24) { - *keysize = 16; - } else if (*keysize < 32) { - *keysize = 24; - } else { - *keysize = 32; - } - return CRYPT_OK; -} - -#endif - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/skipjack.c b/src/libtomcrypt/src/ciphers/skipjack.c deleted file mode 100644 index 7e38e2cf55..0000000000 --- a/src/libtomcrypt/src/ciphers/skipjack.c +++ /dev/null @@ -1,343 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file skipjack.c - Skipjack Implementation by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_SKIPJACK - -const struct ltc_cipher_descriptor skipjack_desc = -{ - "skipjack", - 17, - 10, 10, 8, 32, - &skipjack_setup, - &skipjack_ecb_encrypt, - &skipjack_ecb_decrypt, - &skipjack_test, - &skipjack_done, - &skipjack_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -static const unsigned char sbox[256] = { - 0xa3,0xd7,0x09,0x83,0xf8,0x48,0xf6,0xf4,0xb3,0x21,0x15,0x78,0x99,0xb1,0xaf,0xf9, - 0xe7,0x2d,0x4d,0x8a,0xce,0x4c,0xca,0x2e,0x52,0x95,0xd9,0x1e,0x4e,0x38,0x44,0x28, - 0x0a,0xdf,0x02,0xa0,0x17,0xf1,0x60,0x68,0x12,0xb7,0x7a,0xc3,0xe9,0xfa,0x3d,0x53, - 0x96,0x84,0x6b,0xba,0xf2,0x63,0x9a,0x19,0x7c,0xae,0xe5,0xf5,0xf7,0x16,0x6a,0xa2, - 0x39,0xb6,0x7b,0x0f,0xc1,0x93,0x81,0x1b,0xee,0xb4,0x1a,0xea,0xd0,0x91,0x2f,0xb8, - 0x55,0xb9,0xda,0x85,0x3f,0x41,0xbf,0xe0,0x5a,0x58,0x80,0x5f,0x66,0x0b,0xd8,0x90, - 0x35,0xd5,0xc0,0xa7,0x33,0x06,0x65,0x69,0x45,0x00,0x94,0x56,0x6d,0x98,0x9b,0x76, - 0x97,0xfc,0xb2,0xc2,0xb0,0xfe,0xdb,0x20,0xe1,0xeb,0xd6,0xe4,0xdd,0x47,0x4a,0x1d, - 0x42,0xed,0x9e,0x6e,0x49,0x3c,0xcd,0x43,0x27,0xd2,0x07,0xd4,0xde,0xc7,0x67,0x18, - 0x89,0xcb,0x30,0x1f,0x8d,0xc6,0x8f,0xaa,0xc8,0x74,0xdc,0xc9,0x5d,0x5c,0x31,0xa4, - 0x70,0x88,0x61,0x2c,0x9f,0x0d,0x2b,0x87,0x50,0x82,0x54,0x64,0x26,0x7d,0x03,0x40, - 0x34,0x4b,0x1c,0x73,0xd1,0xc4,0xfd,0x3b,0xcc,0xfb,0x7f,0xab,0xe6,0x3e,0x5b,0xa5, - 0xad,0x04,0x23,0x9c,0x14,0x51,0x22,0xf0,0x29,0x79,0x71,0x7e,0xff,0x8c,0x0e,0xe2, - 0x0c,0xef,0xbc,0x72,0x75,0x6f,0x37,0xa1,0xec,0xd3,0x8e,0x62,0x8b,0x86,0x10,0xe8, - 0x08,0x77,0x11,0xbe,0x92,0x4f,0x24,0xc5,0x32,0x36,0x9d,0xcf,0xf3,0xa6,0xbb,0xac, - 0x5e,0x6c,0xa9,0x13,0x57,0x25,0xb5,0xe3,0xbd,0xa8,0x3a,0x01,0x05,0x59,0x2a,0x46 -}; - -/* simple x + 1 (mod 10) in one step. */ -static const int keystep[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; - -/* simple x - 1 (mod 10) in one step */ -static const int ikeystep[] = { 9, 0, 1, 2, 3, 4, 5, 6, 7, 8 }; - - /** - Initialize the Skipjack block cipher - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful - */ -int skipjack_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - int x; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - if (keylen != 10) { - return CRYPT_INVALID_KEYSIZE; - } - - if (num_rounds != 32 && num_rounds != 0) { - return CRYPT_INVALID_ROUNDS; - } - - /* make sure the key is in range for platforms where CHAR_BIT != 8 */ - for (x = 0; x < 10; x++) { - skey->skipjack.key[x] = key[x] & 255; - } - - return CRYPT_OK; -} - -#define RULE_A \ - tmp = g_func(w1, &kp, skey->skipjack.key); \ - w1 = tmp ^ w4 ^ x; \ - w4 = w3; w3 = w2; \ - w2 = tmp; - -#define RULE_B \ - tmp = g_func(w1, &kp, skey->skipjack.key); \ - tmp1 = w4; w4 = w3; \ - w3 = w1 ^ w2 ^ x; \ - w1 = tmp1; w2 = tmp; - -#define RULE_A1 \ - tmp = w1 ^ w2 ^ x; \ - w1 = ig_func(w2, &kp, skey->skipjack.key); \ - w2 = w3; w3 = w4; w4 = tmp; - -#define RULE_B1 \ - tmp = ig_func(w2, &kp, skey->skipjack.key); \ - w2 = tmp ^ w3 ^ x; \ - w3 = w4; w4 = w1; w1 = tmp; - -static unsigned g_func(unsigned w, int *kp, unsigned char *key) -{ - unsigned char g1,g2; - - g1 = (w >> 8) & 255; g2 = w & 255; - g1 ^= sbox[g2^key[*kp]]; *kp = keystep[*kp]; - g2 ^= sbox[g1^key[*kp]]; *kp = keystep[*kp]; - g1 ^= sbox[g2^key[*kp]]; *kp = keystep[*kp]; - g2 ^= sbox[g1^key[*kp]]; *kp = keystep[*kp]; - return ((unsigned)g1<<8)|(unsigned)g2; -} - -static unsigned ig_func(unsigned w, int *kp, unsigned char *key) -{ - unsigned char g1,g2; - - g1 = (w >> 8) & 255; g2 = w & 255; - *kp = ikeystep[*kp]; g2 ^= sbox[g1^key[*kp]]; - *kp = ikeystep[*kp]; g1 ^= sbox[g2^key[*kp]]; - *kp = ikeystep[*kp]; g2 ^= sbox[g1^key[*kp]]; - *kp = ikeystep[*kp]; g1 ^= sbox[g2^key[*kp]]; - return ((unsigned)g1<<8)|(unsigned)g2; -} - -/** - Encrypts a block of text with Skipjack - @param pt The input plaintext (8 bytes) - @param ct The output ciphertext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -#ifdef LTC_CLEAN_STACK -static int _skipjack_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#else -int skipjack_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#endif -{ - unsigned w1,w2,w3,w4,tmp,tmp1; - int x, kp; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - - /* load block */ - w1 = ((unsigned)pt[0]<<8)|pt[1]; - w2 = ((unsigned)pt[2]<<8)|pt[3]; - w3 = ((unsigned)pt[4]<<8)|pt[5]; - w4 = ((unsigned)pt[6]<<8)|pt[7]; - - /* 8 rounds of RULE A */ - for (x = 1, kp = 0; x < 9; x++) { - RULE_A; - } - - /* 8 rounds of RULE B */ - for (; x < 17; x++) { - RULE_B; - } - - /* 8 rounds of RULE A */ - for (; x < 25; x++) { - RULE_A; - } - - /* 8 rounds of RULE B */ - for (; x < 33; x++) { - RULE_B; - } - - /* store block */ - ct[0] = (w1>>8)&255; ct[1] = w1&255; - ct[2] = (w2>>8)&255; ct[3] = w2&255; - ct[4] = (w3>>8)&255; ct[5] = w3&255; - ct[6] = (w4>>8)&255; ct[7] = w4&255; - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int skipjack_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - int err = _skipjack_ecb_encrypt(pt, ct, skey); - burn_stack(sizeof(unsigned) * 8 + sizeof(int) * 2); - return err; -} -#endif - -/** - Decrypts a block of text with Skipjack - @param ct The input ciphertext (8 bytes) - @param pt The output plaintext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -#ifdef LTC_CLEAN_STACK -static int _skipjack_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#else -int skipjack_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#endif -{ - unsigned w1,w2,w3,w4,tmp; - int x, kp; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - - /* load block */ - w1 = ((unsigned)ct[0]<<8)|ct[1]; - w2 = ((unsigned)ct[2]<<8)|ct[3]; - w3 = ((unsigned)ct[4]<<8)|ct[5]; - w4 = ((unsigned)ct[6]<<8)|ct[7]; - - /* 8 rounds of RULE B^-1 - - Note the value "kp = 8" comes from "kp = (32 * 4) mod 10" where 32*4 is 128 which mod 10 is 8 - */ - for (x = 32, kp = 8; x > 24; x--) { - RULE_B1; - } - - /* 8 rounds of RULE A^-1 */ - for (; x > 16; x--) { - RULE_A1; - } - - - /* 8 rounds of RULE B^-1 */ - for (; x > 8; x--) { - RULE_B1; - } - - /* 8 rounds of RULE A^-1 */ - for (; x > 0; x--) { - RULE_A1; - } - - /* store block */ - pt[0] = (w1>>8)&255; pt[1] = w1&255; - pt[2] = (w2>>8)&255; pt[3] = w2&255; - pt[4] = (w3>>8)&255; pt[5] = w3&255; - pt[6] = (w4>>8)&255; pt[7] = w4&255; - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int skipjack_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - int err = _skipjack_ecb_decrypt(ct, pt, skey); - burn_stack(sizeof(unsigned) * 7 + sizeof(int) * 2); - return err; -} -#endif - -/** - Performs a self-test of the Skipjack block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int skipjack_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - unsigned char key[10], pt[8], ct[8]; - } tests[] = { - { - { 0x00, 0x99, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11 }, - { 0x33, 0x22, 0x11, 0x00, 0xdd, 0xcc, 0xbb, 0xaa }, - { 0x25, 0x87, 0xca, 0xe2, 0x7a, 0x12, 0xd3, 0x00 } - } - }; - unsigned char buf[2][8]; - int x, y, err; - symmetric_key key; - - for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) { - /* setup key */ - if ((err = skipjack_setup(tests[x].key, 10, 0, &key)) != CRYPT_OK) { - return err; - } - - /* encrypt and decrypt */ - skipjack_ecb_encrypt(tests[x].pt, buf[0], &key); - skipjack_ecb_decrypt(buf[0], buf[1], &key); - - /* compare */ - if (compare_testvector(buf[0], 8, tests[x].ct, 8, "Skipjack Encrypt", x) != 0 || - compare_testvector(buf[1], 8, tests[x].pt, 8, "Skipjack Decrypt", x) != 0) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ - for (y = 0; y < 8; y++) buf[0][y] = 0; - for (y = 0; y < 1000; y++) skipjack_ecb_encrypt(buf[0], buf[0], &key); - for (y = 0; y < 1000; y++) skipjack_ecb_decrypt(buf[0], buf[0], &key); - for (y = 0; y < 8; y++) if (buf[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; - } - - return CRYPT_OK; - #endif -} - -/** Terminate the context - @param skey The scheduled key -*/ -void skipjack_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int skipjack_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if (*keysize < 10) { - return CRYPT_INVALID_KEYSIZE; - } else if (*keysize > 10) { - *keysize = 10; - } - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/twofish/twofish.c b/src/libtomcrypt/src/ciphers/twofish/twofish.c deleted file mode 100644 index 7e5d082755..0000000000 --- a/src/libtomcrypt/src/ciphers/twofish/twofish.c +++ /dev/null @@ -1,711 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - - /** - @file twofish.c - Implementation of Twofish by Tom St Denis - */ -#include "tomcrypt.h" - -#ifdef LTC_TWOFISH - -/* first LTC_TWOFISH_ALL_TABLES must ensure LTC_TWOFISH_TABLES is defined */ -#ifdef LTC_TWOFISH_ALL_TABLES -#ifndef LTC_TWOFISH_TABLES -#define LTC_TWOFISH_TABLES -#endif -#endif - -const struct ltc_cipher_descriptor twofish_desc = -{ - "twofish", - 7, - 16, 32, 16, 16, - &twofish_setup, - &twofish_ecb_encrypt, - &twofish_ecb_decrypt, - &twofish_test, - &twofish_done, - &twofish_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -/* the two polynomials */ -#define MDS_POLY 0x169 -#define RS_POLY 0x14D - -/* The 4x8 RS Linear Transform */ -static const unsigned char RS[4][8] = { - { 0x01, 0xA4, 0x55, 0x87, 0x5A, 0x58, 0xDB, 0x9E }, - { 0xA4, 0x56, 0x82, 0xF3, 0X1E, 0XC6, 0X68, 0XE5 }, - { 0X02, 0XA1, 0XFC, 0XC1, 0X47, 0XAE, 0X3D, 0X19 }, - { 0XA4, 0X55, 0X87, 0X5A, 0X58, 0XDB, 0X9E, 0X03 } -}; - -#ifdef LTC_TWOFISH_SMALL -/* sbox usage orderings */ -static const unsigned char qord[4][5] = { - { 1, 1, 0, 0, 1 }, - { 0, 1, 1, 0, 0 }, - { 0, 0, 0, 1, 1 }, - { 1, 0, 1, 1, 0 } -}; -#endif /* LTC_TWOFISH_SMALL */ - -#ifdef LTC_TWOFISH_TABLES - -#define __LTC_TWOFISH_TAB_C__ -#include "twofish_tab.c" - -#define sbox(i, x) ((ulong32)SBOX[i][(x)&255]) - -#else - -/* The Q-box tables */ -static const unsigned char qbox[2][4][16] = { -{ - { 0x8, 0x1, 0x7, 0xD, 0x6, 0xF, 0x3, 0x2, 0x0, 0xB, 0x5, 0x9, 0xE, 0xC, 0xA, 0x4 }, - { 0xE, 0XC, 0XB, 0X8, 0X1, 0X2, 0X3, 0X5, 0XF, 0X4, 0XA, 0X6, 0X7, 0X0, 0X9, 0XD }, - { 0XB, 0XA, 0X5, 0XE, 0X6, 0XD, 0X9, 0X0, 0XC, 0X8, 0XF, 0X3, 0X2, 0X4, 0X7, 0X1 }, - { 0XD, 0X7, 0XF, 0X4, 0X1, 0X2, 0X6, 0XE, 0X9, 0XB, 0X3, 0X0, 0X8, 0X5, 0XC, 0XA } -}, -{ - { 0X2, 0X8, 0XB, 0XD, 0XF, 0X7, 0X6, 0XE, 0X3, 0X1, 0X9, 0X4, 0X0, 0XA, 0XC, 0X5 }, - { 0X1, 0XE, 0X2, 0XB, 0X4, 0XC, 0X3, 0X7, 0X6, 0XD, 0XA, 0X5, 0XF, 0X9, 0X0, 0X8 }, - { 0X4, 0XC, 0X7, 0X5, 0X1, 0X6, 0X9, 0XA, 0X0, 0XE, 0XD, 0X8, 0X2, 0XB, 0X3, 0XF }, - { 0xB, 0X9, 0X5, 0X1, 0XC, 0X3, 0XD, 0XE, 0X6, 0X4, 0X7, 0XF, 0X2, 0X0, 0X8, 0XA } -} -}; - -/* computes S_i[x] */ -#ifdef LTC_CLEAN_STACK -static ulong32 _sbox(int i, ulong32 x) -#else -static ulong32 sbox(int i, ulong32 x) -#endif -{ - unsigned char a0,b0,a1,b1,a2,b2,a3,b3,a4,b4,y; - - /* a0,b0 = [x/16], x mod 16 */ - a0 = (unsigned char)((x>>4)&15); - b0 = (unsigned char)((x)&15); - - /* a1 = a0 ^ b0 */ - a1 = a0 ^ b0; - - /* b1 = a0 ^ ROR(b0, 1) ^ 8a0 */ - b1 = (a0 ^ ((b0<<3)|(b0>>1)) ^ (a0<<3)) & 15; - - /* a2,b2 = t0[a1], t1[b1] */ - a2 = qbox[i][0][(int)a1]; - b2 = qbox[i][1][(int)b1]; - - /* a3 = a2 ^ b2 */ - a3 = a2 ^ b2; - - /* b3 = a2 ^ ROR(b2, 1) ^ 8a2 */ - b3 = (a2 ^ ((b2<<3)|(b2>>1)) ^ (a2<<3)) & 15; - - /* a4,b4 = t2[a3], t3[b3] */ - a4 = qbox[i][2][(int)a3]; - b4 = qbox[i][3][(int)b3]; - - /* y = 16b4 + a4 */ - y = (b4 << 4) + a4; - - /* return result */ - return (ulong32)y; -} - -#ifdef LTC_CLEAN_STACK -static ulong32 sbox(int i, ulong32 x) -{ - ulong32 y; - y = _sbox(i, x); - burn_stack(sizeof(unsigned char) * 11); - return y; -} -#endif /* LTC_CLEAN_STACK */ - -#endif /* LTC_TWOFISH_TABLES */ - -/* computes ab mod p */ -static ulong32 gf_mult(ulong32 a, ulong32 b, ulong32 p) -{ - ulong32 result, B[2], P[2]; - - P[1] = p; - B[1] = b; - result = P[0] = B[0] = 0; - - /* unrolled branchless GF multiplier */ - result ^= B[a&1]; a >>= 1; B[1] = P[B[1]>>7] ^ (B[1] << 1); - result ^= B[a&1]; a >>= 1; B[1] = P[B[1]>>7] ^ (B[1] << 1); - result ^= B[a&1]; a >>= 1; B[1] = P[B[1]>>7] ^ (B[1] << 1); - result ^= B[a&1]; a >>= 1; B[1] = P[B[1]>>7] ^ (B[1] << 1); - result ^= B[a&1]; a >>= 1; B[1] = P[B[1]>>7] ^ (B[1] << 1); - result ^= B[a&1]; a >>= 1; B[1] = P[B[1]>>7] ^ (B[1] << 1); - result ^= B[a&1]; a >>= 1; B[1] = P[B[1]>>7] ^ (B[1] << 1); - result ^= B[a&1]; - - return result; -} - -/* computes [y0 y1 y2 y3] = MDS . [x0] */ -#ifndef LTC_TWOFISH_TABLES -static ulong32 mds_column_mult(unsigned char in, int col) -{ - ulong32 x01, x5B, xEF; - - x01 = in; - x5B = gf_mult(in, 0x5B, MDS_POLY); - xEF = gf_mult(in, 0xEF, MDS_POLY); - - switch (col) { - case 0: - return (x01 << 0 ) | - (x5B << 8 ) | - (xEF << 16) | - (xEF << 24); - case 1: - return (xEF << 0 ) | - (xEF << 8 ) | - (x5B << 16) | - (x01 << 24); - case 2: - return (x5B << 0 ) | - (xEF << 8 ) | - (x01 << 16) | - (xEF << 24); - case 3: - return (x5B << 0 ) | - (x01 << 8 ) | - (xEF << 16) | - (x5B << 24); - } - /* avoid warnings, we'd never get here normally but just to calm compiler warnings... */ - return 0; -} - -#else /* !LTC_TWOFISH_TABLES */ - -#define mds_column_mult(x, i) mds_tab[i][x] - -#endif /* LTC_TWOFISH_TABLES */ - -/* Computes [y0 y1 y2 y3] = MDS . [x0 x1 x2 x3] */ -static void mds_mult(const unsigned char *in, unsigned char *out) -{ - int x; - ulong32 tmp; - for (tmp = x = 0; x < 4; x++) { - tmp ^= mds_column_mult(in[x], x); - } - STORE32L(tmp, out); -} - -#ifdef LTC_TWOFISH_ALL_TABLES -/* computes [y0 y1 y2 y3] = RS . [x0 x1 x2 x3 x4 x5 x6 x7] */ -static void rs_mult(const unsigned char *in, unsigned char *out) -{ - ulong32 tmp; - tmp = rs_tab0[in[0]] ^ rs_tab1[in[1]] ^ rs_tab2[in[2]] ^ rs_tab3[in[3]] ^ - rs_tab4[in[4]] ^ rs_tab5[in[5]] ^ rs_tab6[in[6]] ^ rs_tab7[in[7]]; - STORE32L(tmp, out); -} - -#else /* !LTC_TWOFISH_ALL_TABLES */ - -/* computes [y0 y1 y2 y3] = RS . [x0 x1 x2 x3 x4 x5 x6 x7] */ -static void rs_mult(const unsigned char *in, unsigned char *out) -{ - int x, y; - for (x = 0; x < 4; x++) { - out[x] = 0; - for (y = 0; y < 8; y++) { - out[x] ^= gf_mult(in[y], RS[x][y], RS_POLY); - } - } -} - -#endif - -/* computes h(x) */ -static void h_func(const unsigned char *in, unsigned char *out, unsigned char *M, int k, int offset) -{ - int x; - unsigned char y[4]; - for (x = 0; x < 4; x++) { - y[x] = in[x]; - } - switch (k) { - case 4: - y[0] = (unsigned char)(sbox(1, (ulong32)y[0]) ^ M[4 * (6 + offset) + 0]); - y[1] = (unsigned char)(sbox(0, (ulong32)y[1]) ^ M[4 * (6 + offset) + 1]); - y[2] = (unsigned char)(sbox(0, (ulong32)y[2]) ^ M[4 * (6 + offset) + 2]); - y[3] = (unsigned char)(sbox(1, (ulong32)y[3]) ^ M[4 * (6 + offset) + 3]); - /* FALLTHROUGH */ - case 3: - y[0] = (unsigned char)(sbox(1, (ulong32)y[0]) ^ M[4 * (4 + offset) + 0]); - y[1] = (unsigned char)(sbox(1, (ulong32)y[1]) ^ M[4 * (4 + offset) + 1]); - y[2] = (unsigned char)(sbox(0, (ulong32)y[2]) ^ M[4 * (4 + offset) + 2]); - y[3] = (unsigned char)(sbox(0, (ulong32)y[3]) ^ M[4 * (4 + offset) + 3]); - /* FALLTHROUGH */ - case 2: - y[0] = (unsigned char)(sbox(1, sbox(0, sbox(0, (ulong32)y[0]) ^ M[4 * (2 + offset) + 0]) ^ M[4 * (0 + offset) + 0])); - y[1] = (unsigned char)(sbox(0, sbox(0, sbox(1, (ulong32)y[1]) ^ M[4 * (2 + offset) + 1]) ^ M[4 * (0 + offset) + 1])); - y[2] = (unsigned char)(sbox(1, sbox(1, sbox(0, (ulong32)y[2]) ^ M[4 * (2 + offset) + 2]) ^ M[4 * (0 + offset) + 2])); - y[3] = (unsigned char)(sbox(0, sbox(1, sbox(1, (ulong32)y[3]) ^ M[4 * (2 + offset) + 3]) ^ M[4 * (0 + offset) + 3])); - /* FALLTHROUGH */ - } - mds_mult(y, out); -} - -#ifndef LTC_TWOFISH_SMALL - -/* for GCC we don't use pointer aliases */ -#if defined(__GNUC__) - #define S1 skey->twofish.S[0] - #define S2 skey->twofish.S[1] - #define S3 skey->twofish.S[2] - #define S4 skey->twofish.S[3] -#endif - -/* the G function */ -#define g_func(x, dum) (S1[byte(x,0)] ^ S2[byte(x,1)] ^ S3[byte(x,2)] ^ S4[byte(x,3)]) -#define g1_func(x, dum) (S2[byte(x,0)] ^ S3[byte(x,1)] ^ S4[byte(x,2)] ^ S1[byte(x,3)]) - -#else - -#ifdef LTC_CLEAN_STACK -static ulong32 _g_func(ulong32 x, symmetric_key *key) -#else -static ulong32 g_func(ulong32 x, symmetric_key *key) -#endif -{ - unsigned char g, i, y, z; - ulong32 res; - - res = 0; - for (y = 0; y < 4; y++) { - z = key->twofish.start; - - /* do unkeyed substitution */ - g = sbox(qord[y][z++], (x >> (8*y)) & 255); - - /* first subkey */ - i = 0; - - /* do key mixing+sbox until z==5 */ - while (z != 5) { - g = g ^ key->twofish.S[4*i++ + y]; - g = sbox(qord[y][z++], g); - } - - /* multiply g by a column of the MDS */ - res ^= mds_column_mult(g, y); - } - return res; -} - -#define g1_func(x, key) g_func(ROLc(x, 8), key) - -#ifdef LTC_CLEAN_STACK -static ulong32 g_func(ulong32 x, symmetric_key *key) -{ - ulong32 y; - y = _g_func(x, key); - burn_stack(sizeof(unsigned char) * 4 + sizeof(ulong32)); - return y; -} -#endif /* LTC_CLEAN_STACK */ - -#endif /* LTC_TWOFISH_SMALL */ - - /** - Initialize the Twofish block cipher - @param key The symmetric key you wish to pass - @param keylen The key length in bytes - @param num_rounds The number of rounds desired (0 for default) - @param skey The key in as scheduled by this function. - @return CRYPT_OK if successful - */ -#ifdef LTC_CLEAN_STACK -static int _twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -#else -int twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -#endif -{ -#ifndef LTC_TWOFISH_SMALL - unsigned char S[4*4], tmpx0, tmpx1; -#endif - int k, x, y; - unsigned char tmp[4], tmp2[4], M[8*4]; - ulong32 A, B; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - /* invalid arguments? */ - if (num_rounds != 16 && num_rounds != 0) { - return CRYPT_INVALID_ROUNDS; - } - - if (keylen != 16 && keylen != 24 && keylen != 32) { - return CRYPT_INVALID_KEYSIZE; - } - - /* k = keysize/64 [but since our keysize is in bytes...] */ - k = keylen / 8; - - /* copy the key into M */ - for (x = 0; x < keylen; x++) { - M[x] = key[x] & 255; - } - - /* create the S[..] words */ -#ifndef LTC_TWOFISH_SMALL - for (x = 0; x < k; x++) { - rs_mult(M+(x*8), S+(x*4)); - } -#else - for (x = 0; x < k; x++) { - rs_mult(M+(x*8), skey->twofish.S+(x*4)); - } -#endif - - /* make subkeys */ - for (x = 0; x < 20; x++) { - /* A = h(p * 2x, Me) */ - for (y = 0; y < 4; y++) { - tmp[y] = x+x; - } - h_func(tmp, tmp2, M, k, 0); - LOAD32L(A, tmp2); - - /* B = ROL(h(p * (2x + 1), Mo), 8) */ - for (y = 0; y < 4; y++) { - tmp[y] = (unsigned char)(x+x+1); - } - h_func(tmp, tmp2, M, k, 1); - LOAD32L(B, tmp2); - B = ROLc(B, 8); - - /* K[2i] = A + B */ - skey->twofish.K[x+x] = (A + B) & 0xFFFFFFFFUL; - - /* K[2i+1] = (A + 2B) <<< 9 */ - skey->twofish.K[x+x+1] = ROLc(B + B + A, 9); - } - -#ifndef LTC_TWOFISH_SMALL - /* make the sboxes (large ram variant) */ - if (k == 2) { - for (x = 0; x < 256; x++) { - tmpx0 = (unsigned char)sbox(0, x); - tmpx1 = (unsigned char)sbox(1, x); - skey->twofish.S[0][x] = mds_column_mult(sbox(1, (sbox(0, tmpx0 ^ S[0]) ^ S[4])),0); - skey->twofish.S[1][x] = mds_column_mult(sbox(0, (sbox(0, tmpx1 ^ S[1]) ^ S[5])),1); - skey->twofish.S[2][x] = mds_column_mult(sbox(1, (sbox(1, tmpx0 ^ S[2]) ^ S[6])),2); - skey->twofish.S[3][x] = mds_column_mult(sbox(0, (sbox(1, tmpx1 ^ S[3]) ^ S[7])),3); - } - } else if (k == 3) { - for (x = 0; x < 256; x++) { - tmpx0 = (unsigned char)sbox(0, x); - tmpx1 = (unsigned char)sbox(1, x); - skey->twofish.S[0][x] = mds_column_mult(sbox(1, (sbox(0, sbox(0, tmpx1 ^ S[0]) ^ S[4]) ^ S[8])),0); - skey->twofish.S[1][x] = mds_column_mult(sbox(0, (sbox(0, sbox(1, tmpx1 ^ S[1]) ^ S[5]) ^ S[9])),1); - skey->twofish.S[2][x] = mds_column_mult(sbox(1, (sbox(1, sbox(0, tmpx0 ^ S[2]) ^ S[6]) ^ S[10])),2); - skey->twofish.S[3][x] = mds_column_mult(sbox(0, (sbox(1, sbox(1, tmpx0 ^ S[3]) ^ S[7]) ^ S[11])),3); - } - } else { - for (x = 0; x < 256; x++) { - tmpx0 = (unsigned char)sbox(0, x); - tmpx1 = (unsigned char)sbox(1, x); - skey->twofish.S[0][x] = mds_column_mult(sbox(1, (sbox(0, sbox(0, sbox(1, tmpx1 ^ S[0]) ^ S[4]) ^ S[8]) ^ S[12])),0); - skey->twofish.S[1][x] = mds_column_mult(sbox(0, (sbox(0, sbox(1, sbox(1, tmpx0 ^ S[1]) ^ S[5]) ^ S[9]) ^ S[13])),1); - skey->twofish.S[2][x] = mds_column_mult(sbox(1, (sbox(1, sbox(0, sbox(0, tmpx0 ^ S[2]) ^ S[6]) ^ S[10]) ^ S[14])),2); - skey->twofish.S[3][x] = mds_column_mult(sbox(0, (sbox(1, sbox(1, sbox(0, tmpx1 ^ S[3]) ^ S[7]) ^ S[11]) ^ S[15])),3); - } - } -#else - /* where to start in the sbox layers */ - /* small ram variant */ - switch (k) { - case 4 : skey->twofish.start = 0; break; - case 3 : skey->twofish.start = 1; break; - default: skey->twofish.start = 2; break; - } -#endif - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - int x; - x = _twofish_setup(key, keylen, num_rounds, skey); - burn_stack(sizeof(int) * 7 + sizeof(unsigned char) * 56 + sizeof(ulong32) * 2); - return x; -} -#endif - -/** - Encrypts a block of text with Twofish - @param pt The input plaintext (16 bytes) - @param ct The output ciphertext (16 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -#ifdef LTC_CLEAN_STACK -static int _twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#else -int twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -#endif -{ - ulong32 a,b,c,d,ta,tb,tc,td,t1,t2, *k; - int r; -#if !defined(LTC_TWOFISH_SMALL) && !defined(__GNUC__) - ulong32 *S1, *S2, *S3, *S4; -#endif - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - -#if !defined(LTC_TWOFISH_SMALL) && !defined(__GNUC__) - S1 = skey->twofish.S[0]; - S2 = skey->twofish.S[1]; - S3 = skey->twofish.S[2]; - S4 = skey->twofish.S[3]; -#endif - - LOAD32L(a,&pt[0]); LOAD32L(b,&pt[4]); - LOAD32L(c,&pt[8]); LOAD32L(d,&pt[12]); - a ^= skey->twofish.K[0]; - b ^= skey->twofish.K[1]; - c ^= skey->twofish.K[2]; - d ^= skey->twofish.K[3]; - - k = skey->twofish.K + 8; - for (r = 8; r != 0; --r) { - t2 = g1_func(b, skey); - t1 = g_func(a, skey) + t2; - c = RORc(c ^ (t1 + k[0]), 1); - d = ROLc(d, 1) ^ (t2 + t1 + k[1]); - - t2 = g1_func(d, skey); - t1 = g_func(c, skey) + t2; - a = RORc(a ^ (t1 + k[2]), 1); - b = ROLc(b, 1) ^ (t2 + t1 + k[3]); - k += 4; - } - - /* output with "undo last swap" */ - ta = c ^ skey->twofish.K[4]; - tb = d ^ skey->twofish.K[5]; - tc = a ^ skey->twofish.K[6]; - td = b ^ skey->twofish.K[7]; - - /* store output */ - STORE32L(ta,&ct[0]); STORE32L(tb,&ct[4]); - STORE32L(tc,&ct[8]); STORE32L(td,&ct[12]); - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - int err = _twofish_ecb_encrypt(pt, ct, skey); - burn_stack(sizeof(ulong32) * 10 + sizeof(int)); - return err; -} -#endif - -/** - Decrypts a block of text with Twofish - @param ct The input ciphertext (16 bytes) - @param pt The output plaintext (16 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -#ifdef LTC_CLEAN_STACK -static int _twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#else -int twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -#endif -{ - ulong32 a,b,c,d,ta,tb,tc,td,t1,t2, *k; - int r; -#if !defined(LTC_TWOFISH_SMALL) && !defined(__GNUC__) - ulong32 *S1, *S2, *S3, *S4; -#endif - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - -#if !defined(LTC_TWOFISH_SMALL) && !defined(__GNUC__) - S1 = skey->twofish.S[0]; - S2 = skey->twofish.S[1]; - S3 = skey->twofish.S[2]; - S4 = skey->twofish.S[3]; -#endif - - /* load input */ - LOAD32L(ta,&ct[0]); LOAD32L(tb,&ct[4]); - LOAD32L(tc,&ct[8]); LOAD32L(td,&ct[12]); - - /* undo undo final swap */ - a = tc ^ skey->twofish.K[6]; - b = td ^ skey->twofish.K[7]; - c = ta ^ skey->twofish.K[4]; - d = tb ^ skey->twofish.K[5]; - - k = skey->twofish.K + 36; - for (r = 8; r != 0; --r) { - t2 = g1_func(d, skey); - t1 = g_func(c, skey) + t2; - a = ROLc(a, 1) ^ (t1 + k[2]); - b = RORc(b ^ (t2 + t1 + k[3]), 1); - - t2 = g1_func(b, skey); - t1 = g_func(a, skey) + t2; - c = ROLc(c, 1) ^ (t1 + k[0]); - d = RORc(d ^ (t2 + t1 + k[1]), 1); - k -= 4; - } - - /* pre-white */ - a ^= skey->twofish.K[0]; - b ^= skey->twofish.K[1]; - c ^= skey->twofish.K[2]; - d ^= skey->twofish.K[3]; - - /* store */ - STORE32L(a, &pt[0]); STORE32L(b, &pt[4]); - STORE32L(c, &pt[8]); STORE32L(d, &pt[12]); - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -int twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - int err =_twofish_ecb_decrypt(ct, pt, skey); - burn_stack(sizeof(ulong32) * 10 + sizeof(int)); - return err; -} -#endif - -/** - Performs a self-test of the Twofish block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int twofish_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - int keylen; - unsigned char key[32], pt[16], ct[16]; - } tests[] = { - { 16, - { 0x9F, 0x58, 0x9F, 0x5C, 0xF6, 0x12, 0x2C, 0x32, - 0xB6, 0xBF, 0xEC, 0x2F, 0x2A, 0xE8, 0xC3, 0x5A }, - { 0xD4, 0x91, 0xDB, 0x16, 0xE7, 0xB1, 0xC3, 0x9E, - 0x86, 0xCB, 0x08, 0x6B, 0x78, 0x9F, 0x54, 0x19 }, - { 0x01, 0x9F, 0x98, 0x09, 0xDE, 0x17, 0x11, 0x85, - 0x8F, 0xAA, 0xC3, 0xA3, 0xBA, 0x20, 0xFB, 0xC3 } - }, { - 24, - { 0x88, 0xB2, 0xB2, 0x70, 0x6B, 0x10, 0x5E, 0x36, - 0xB4, 0x46, 0xBB, 0x6D, 0x73, 0x1A, 0x1E, 0x88, - 0xEF, 0xA7, 0x1F, 0x78, 0x89, 0x65, 0xBD, 0x44 }, - { 0x39, 0xDA, 0x69, 0xD6, 0xBA, 0x49, 0x97, 0xD5, - 0x85, 0xB6, 0xDC, 0x07, 0x3C, 0xA3, 0x41, 0xB2 }, - { 0x18, 0x2B, 0x02, 0xD8, 0x14, 0x97, 0xEA, 0x45, - 0xF9, 0xDA, 0xAC, 0xDC, 0x29, 0x19, 0x3A, 0x65 } - }, { - 32, - { 0xD4, 0x3B, 0xB7, 0x55, 0x6E, 0xA3, 0x2E, 0x46, - 0xF2, 0xA2, 0x82, 0xB7, 0xD4, 0x5B, 0x4E, 0x0D, - 0x57, 0xFF, 0x73, 0x9D, 0x4D, 0xC9, 0x2C, 0x1B, - 0xD7, 0xFC, 0x01, 0x70, 0x0C, 0xC8, 0x21, 0x6F }, - { 0x90, 0xAF, 0xE9, 0x1B, 0xB2, 0x88, 0x54, 0x4F, - 0x2C, 0x32, 0xDC, 0x23, 0x9B, 0x26, 0x35, 0xE6 }, - { 0x6C, 0xB4, 0x56, 0x1C, 0x40, 0xBF, 0x0A, 0x97, - 0x05, 0x93, 0x1C, 0xB6, 0xD4, 0x08, 0xE7, 0xFA } - } -}; - - - symmetric_key key; - unsigned char tmp[2][16]; - int err, i, y; - - for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { - if ((err = twofish_setup(tests[i].key, tests[i].keylen, 0, &key)) != CRYPT_OK) { - return err; - } - twofish_ecb_encrypt(tests[i].pt, tmp[0], &key); - twofish_ecb_decrypt(tmp[0], tmp[1], &key); - if (compare_testvector(tmp[0], 16, tests[i].ct, 16, "Twofish Encrypt", i) != 0 || - compare_testvector(tmp[1], 16, tests[i].pt, 16, "Twofish Decrypt", i) != 0) { - return CRYPT_FAIL_TESTVECTOR; - } - /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ - for (y = 0; y < 16; y++) tmp[0][y] = 0; - for (y = 0; y < 1000; y++) twofish_ecb_encrypt(tmp[0], tmp[0], &key); - for (y = 0; y < 1000; y++) twofish_ecb_decrypt(tmp[0], tmp[0], &key); - for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; - } - return CRYPT_OK; -#endif -} - -/** Terminate the context - @param skey The scheduled key -*/ -void twofish_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int twofish_keysize(int *keysize) -{ - LTC_ARGCHK(keysize); - if (*keysize < 16) - return CRYPT_INVALID_KEYSIZE; - if (*keysize < 24) { - *keysize = 16; - return CRYPT_OK; - } else if (*keysize < 32) { - *keysize = 24; - return CRYPT_OK; - } else { - *keysize = 32; - return CRYPT_OK; - } -} - -#endif - - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/twofish/twofish_tab.c b/src/libtomcrypt/src/ciphers/twofish/twofish_tab.c deleted file mode 100644 index 8304c5fd71..0000000000 --- a/src/libtomcrypt/src/ciphers/twofish/twofish_tab.c +++ /dev/null @@ -1,496 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - - /** - @file twofish_tab.c - Twofish tables, Tom St Denis - */ -#ifdef LTC_TWOFISH_TABLES -#ifdef __LTC_TWOFISH_TAB_C__ - -/* pre generated 8x8 tables from the four 4x4s */ -static const unsigned char SBOX[2][256] = { -{ - 0xa9, 0x67, 0xb3, 0xe8, 0x04, 0xfd, 0xa3, 0x76, 0x9a, 0x92, - 0x80, 0x78, 0xe4, 0xdd, 0xd1, 0x38, 0x0d, 0xc6, 0x35, 0x98, - 0x18, 0xf7, 0xec, 0x6c, 0x43, 0x75, 0x37, 0x26, 0xfa, 0x13, - 0x94, 0x48, 0xf2, 0xd0, 0x8b, 0x30, 0x84, 0x54, 0xdf, 0x23, - 0x19, 0x5b, 0x3d, 0x59, 0xf3, 0xae, 0xa2, 0x82, 0x63, 0x01, - 0x83, 0x2e, 0xd9, 0x51, 0x9b, 0x7c, 0xa6, 0xeb, 0xa5, 0xbe, - 0x16, 0x0c, 0xe3, 0x61, 0xc0, 0x8c, 0x3a, 0xf5, 0x73, 0x2c, - 0x25, 0x0b, 0xbb, 0x4e, 0x89, 0x6b, 0x53, 0x6a, 0xb4, 0xf1, - 0xe1, 0xe6, 0xbd, 0x45, 0xe2, 0xf4, 0xb6, 0x66, 0xcc, 0x95, - 0x03, 0x56, 0xd4, 0x1c, 0x1e, 0xd7, 0xfb, 0xc3, 0x8e, 0xb5, - 0xe9, 0xcf, 0xbf, 0xba, 0xea, 0x77, 0x39, 0xaf, 0x33, 0xc9, - 0x62, 0x71, 0x81, 0x79, 0x09, 0xad, 0x24, 0xcd, 0xf9, 0xd8, - 0xe5, 0xc5, 0xb9, 0x4d, 0x44, 0x08, 0x86, 0xe7, 0xa1, 0x1d, - 0xaa, 0xed, 0x06, 0x70, 0xb2, 0xd2, 0x41, 0x7b, 0xa0, 0x11, - 0x31, 0xc2, 0x27, 0x90, 0x20, 0xf6, 0x60, 0xff, 0x96, 0x5c, - 0xb1, 0xab, 0x9e, 0x9c, 0x52, 0x1b, 0x5f, 0x93, 0x0a, 0xef, - 0x91, 0x85, 0x49, 0xee, 0x2d, 0x4f, 0x8f, 0x3b, 0x47, 0x87, - 0x6d, 0x46, 0xd6, 0x3e, 0x69, 0x64, 0x2a, 0xce, 0xcb, 0x2f, - 0xfc, 0x97, 0x05, 0x7a, 0xac, 0x7f, 0xd5, 0x1a, 0x4b, 0x0e, - 0xa7, 0x5a, 0x28, 0x14, 0x3f, 0x29, 0x88, 0x3c, 0x4c, 0x02, - 0xb8, 0xda, 0xb0, 0x17, 0x55, 0x1f, 0x8a, 0x7d, 0x57, 0xc7, - 0x8d, 0x74, 0xb7, 0xc4, 0x9f, 0x72, 0x7e, 0x15, 0x22, 0x12, - 0x58, 0x07, 0x99, 0x34, 0x6e, 0x50, 0xde, 0x68, 0x65, 0xbc, - 0xdb, 0xf8, 0xc8, 0xa8, 0x2b, 0x40, 0xdc, 0xfe, 0x32, 0xa4, - 0xca, 0x10, 0x21, 0xf0, 0xd3, 0x5d, 0x0f, 0x00, 0x6f, 0x9d, - 0x36, 0x42, 0x4a, 0x5e, 0xc1, 0xe0}, -{ - 0x75, 0xf3, 0xc6, 0xf4, 0xdb, 0x7b, 0xfb, 0xc8, 0x4a, 0xd3, - 0xe6, 0x6b, 0x45, 0x7d, 0xe8, 0x4b, 0xd6, 0x32, 0xd8, 0xfd, - 0x37, 0x71, 0xf1, 0xe1, 0x30, 0x0f, 0xf8, 0x1b, 0x87, 0xfa, - 0x06, 0x3f, 0x5e, 0xba, 0xae, 0x5b, 0x8a, 0x00, 0xbc, 0x9d, - 0x6d, 0xc1, 0xb1, 0x0e, 0x80, 0x5d, 0xd2, 0xd5, 0xa0, 0x84, - 0x07, 0x14, 0xb5, 0x90, 0x2c, 0xa3, 0xb2, 0x73, 0x4c, 0x54, - 0x92, 0x74, 0x36, 0x51, 0x38, 0xb0, 0xbd, 0x5a, 0xfc, 0x60, - 0x62, 0x96, 0x6c, 0x42, 0xf7, 0x10, 0x7c, 0x28, 0x27, 0x8c, - 0x13, 0x95, 0x9c, 0xc7, 0x24, 0x46, 0x3b, 0x70, 0xca, 0xe3, - 0x85, 0xcb, 0x11, 0xd0, 0x93, 0xb8, 0xa6, 0x83, 0x20, 0xff, - 0x9f, 0x77, 0xc3, 0xcc, 0x03, 0x6f, 0x08, 0xbf, 0x40, 0xe7, - 0x2b, 0xe2, 0x79, 0x0c, 0xaa, 0x82, 0x41, 0x3a, 0xea, 0xb9, - 0xe4, 0x9a, 0xa4, 0x97, 0x7e, 0xda, 0x7a, 0x17, 0x66, 0x94, - 0xa1, 0x1d, 0x3d, 0xf0, 0xde, 0xb3, 0x0b, 0x72, 0xa7, 0x1c, - 0xef, 0xd1, 0x53, 0x3e, 0x8f, 0x33, 0x26, 0x5f, 0xec, 0x76, - 0x2a, 0x49, 0x81, 0x88, 0xee, 0x21, 0xc4, 0x1a, 0xeb, 0xd9, - 0xc5, 0x39, 0x99, 0xcd, 0xad, 0x31, 0x8b, 0x01, 0x18, 0x23, - 0xdd, 0x1f, 0x4e, 0x2d, 0xf9, 0x48, 0x4f, 0xf2, 0x65, 0x8e, - 0x78, 0x5c, 0x58, 0x19, 0x8d, 0xe5, 0x98, 0x57, 0x67, 0x7f, - 0x05, 0x64, 0xaf, 0x63, 0xb6, 0xfe, 0xf5, 0xb7, 0x3c, 0xa5, - 0xce, 0xe9, 0x68, 0x44, 0xe0, 0x4d, 0x43, 0x69, 0x29, 0x2e, - 0xac, 0x15, 0x59, 0xa8, 0x0a, 0x9e, 0x6e, 0x47, 0xdf, 0x34, - 0x35, 0x6a, 0xcf, 0xdc, 0x22, 0xc9, 0xc0, 0x9b, 0x89, 0xd4, - 0xed, 0xab, 0x12, 0xa2, 0x0d, 0x52, 0xbb, 0x02, 0x2f, 0xa9, - 0xd7, 0x61, 0x1e, 0xb4, 0x50, 0x04, 0xf6, 0xc2, 0x16, 0x25, - 0x86, 0x56, 0x55, 0x09, 0xbe, 0x91} -}; - -/* the 4x4 MDS in a nicer format */ -static const ulong32 mds_tab[4][256] = { -{ -0x00000000UL, 0xefef5b01UL, 0xb7b7b602UL, 0x5858ed03UL, 0x07070504UL, 0xe8e85e05UL, 0xb0b0b306UL, 0x5f5fe807UL, -0x0e0e0a08UL, 0xe1e15109UL, 0xb9b9bc0aUL, 0x5656e70bUL, 0x09090f0cUL, 0xe6e6540dUL, 0xbebeb90eUL, 0x5151e20fUL, -0x1c1c1410UL, 0xf3f34f11UL, 0xababa212UL, 0x4444f913UL, 0x1b1b1114UL, 0xf4f44a15UL, 0xacaca716UL, 0x4343fc17UL, -0x12121e18UL, 0xfdfd4519UL, 0xa5a5a81aUL, 0x4a4af31bUL, 0x15151b1cUL, 0xfafa401dUL, 0xa2a2ad1eUL, 0x4d4df61fUL, -0x38382820UL, 0xd7d77321UL, 0x8f8f9e22UL, 0x6060c523UL, 0x3f3f2d24UL, 0xd0d07625UL, 0x88889b26UL, 0x6767c027UL, -0x36362228UL, 0xd9d97929UL, 0x8181942aUL, 0x6e6ecf2bUL, 0x3131272cUL, 0xdede7c2dUL, 0x8686912eUL, 0x6969ca2fUL, -0x24243c30UL, 0xcbcb6731UL, 0x93938a32UL, 0x7c7cd133UL, 0x23233934UL, 0xcccc6235UL, 0x94948f36UL, 0x7b7bd437UL, -0x2a2a3638UL, 0xc5c56d39UL, 0x9d9d803aUL, 0x7272db3bUL, 0x2d2d333cUL, 0xc2c2683dUL, 0x9a9a853eUL, 0x7575de3fUL, -0x70705040UL, 0x9f9f0b41UL, 0xc7c7e642UL, 0x2828bd43UL, 0x77775544UL, 0x98980e45UL, 0xc0c0e346UL, 0x2f2fb847UL, -0x7e7e5a48UL, 0x91910149UL, 0xc9c9ec4aUL, 0x2626b74bUL, 0x79795f4cUL, 0x9696044dUL, 0xcecee94eUL, 0x2121b24fUL, -0x6c6c4450UL, 0x83831f51UL, 0xdbdbf252UL, 0x3434a953UL, 0x6b6b4154UL, 0x84841a55UL, 0xdcdcf756UL, 0x3333ac57UL, -0x62624e58UL, 0x8d8d1559UL, 0xd5d5f85aUL, 0x3a3aa35bUL, 0x65654b5cUL, 0x8a8a105dUL, 0xd2d2fd5eUL, 0x3d3da65fUL, -0x48487860UL, 0xa7a72361UL, 0xffffce62UL, 0x10109563UL, 0x4f4f7d64UL, 0xa0a02665UL, 0xf8f8cb66UL, 0x17179067UL, -0x46467268UL, 0xa9a92969UL, 0xf1f1c46aUL, 0x1e1e9f6bUL, 0x4141776cUL, 0xaeae2c6dUL, 0xf6f6c16eUL, 0x19199a6fUL, -0x54546c70UL, 0xbbbb3771UL, 0xe3e3da72UL, 0x0c0c8173UL, 0x53536974UL, 0xbcbc3275UL, 0xe4e4df76UL, 0x0b0b8477UL, -0x5a5a6678UL, 0xb5b53d79UL, 0xededd07aUL, 0x02028b7bUL, 0x5d5d637cUL, 0xb2b2387dUL, 0xeaead57eUL, 0x05058e7fUL, -0xe0e0a080UL, 0x0f0ffb81UL, 0x57571682UL, 0xb8b84d83UL, 0xe7e7a584UL, 0x0808fe85UL, 0x50501386UL, 0xbfbf4887UL, -0xeeeeaa88UL, 0x0101f189UL, 0x59591c8aUL, 0xb6b6478bUL, 0xe9e9af8cUL, 0x0606f48dUL, 0x5e5e198eUL, 0xb1b1428fUL, -0xfcfcb490UL, 0x1313ef91UL, 0x4b4b0292UL, 0xa4a45993UL, 0xfbfbb194UL, 0x1414ea95UL, 0x4c4c0796UL, 0xa3a35c97UL, -0xf2f2be98UL, 0x1d1de599UL, 0x4545089aUL, 0xaaaa539bUL, 0xf5f5bb9cUL, 0x1a1ae09dUL, 0x42420d9eUL, 0xadad569fUL, -0xd8d888a0UL, 0x3737d3a1UL, 0x6f6f3ea2UL, 0x808065a3UL, 0xdfdf8da4UL, 0x3030d6a5UL, 0x68683ba6UL, 0x878760a7UL, -0xd6d682a8UL, 0x3939d9a9UL, 0x616134aaUL, 0x8e8e6fabUL, 0xd1d187acUL, 0x3e3edcadUL, 0x666631aeUL, 0x89896aafUL, -0xc4c49cb0UL, 0x2b2bc7b1UL, 0x73732ab2UL, 0x9c9c71b3UL, 0xc3c399b4UL, 0x2c2cc2b5UL, 0x74742fb6UL, 0x9b9b74b7UL, -0xcaca96b8UL, 0x2525cdb9UL, 0x7d7d20baUL, 0x92927bbbUL, 0xcdcd93bcUL, 0x2222c8bdUL, 0x7a7a25beUL, 0x95957ebfUL, -0x9090f0c0UL, 0x7f7fabc1UL, 0x272746c2UL, 0xc8c81dc3UL, 0x9797f5c4UL, 0x7878aec5UL, 0x202043c6UL, 0xcfcf18c7UL, -0x9e9efac8UL, 0x7171a1c9UL, 0x29294ccaUL, 0xc6c617cbUL, 0x9999ffccUL, 0x7676a4cdUL, 0x2e2e49ceUL, 0xc1c112cfUL, -0x8c8ce4d0UL, 0x6363bfd1UL, 0x3b3b52d2UL, 0xd4d409d3UL, 0x8b8be1d4UL, 0x6464bad5UL, 0x3c3c57d6UL, 0xd3d30cd7UL, -0x8282eed8UL, 0x6d6db5d9UL, 0x353558daUL, 0xdada03dbUL, 0x8585ebdcUL, 0x6a6ab0ddUL, 0x32325ddeUL, 0xdddd06dfUL, -0xa8a8d8e0UL, 0x474783e1UL, 0x1f1f6ee2UL, 0xf0f035e3UL, 0xafafdde4UL, 0x404086e5UL, 0x18186be6UL, 0xf7f730e7UL, -0xa6a6d2e8UL, 0x494989e9UL, 0x111164eaUL, 0xfefe3febUL, 0xa1a1d7ecUL, 0x4e4e8cedUL, 0x161661eeUL, 0xf9f93aefUL, -0xb4b4ccf0UL, 0x5b5b97f1UL, 0x03037af2UL, 0xecec21f3UL, 0xb3b3c9f4UL, 0x5c5c92f5UL, 0x04047ff6UL, 0xebeb24f7UL, -0xbabac6f8UL, 0x55559df9UL, 0x0d0d70faUL, 0xe2e22bfbUL, 0xbdbdc3fcUL, 0x525298fdUL, 0x0a0a75feUL, 0xe5e52effUL -}, -{ -0x00000000UL, 0x015befefUL, 0x02b6b7b7UL, 0x03ed5858UL, 0x04050707UL, 0x055ee8e8UL, 0x06b3b0b0UL, 0x07e85f5fUL, -0x080a0e0eUL, 0x0951e1e1UL, 0x0abcb9b9UL, 0x0be75656UL, 0x0c0f0909UL, 0x0d54e6e6UL, 0x0eb9bebeUL, 0x0fe25151UL, -0x10141c1cUL, 0x114ff3f3UL, 0x12a2ababUL, 0x13f94444UL, 0x14111b1bUL, 0x154af4f4UL, 0x16a7acacUL, 0x17fc4343UL, -0x181e1212UL, 0x1945fdfdUL, 0x1aa8a5a5UL, 0x1bf34a4aUL, 0x1c1b1515UL, 0x1d40fafaUL, 0x1eada2a2UL, 0x1ff64d4dUL, -0x20283838UL, 0x2173d7d7UL, 0x229e8f8fUL, 0x23c56060UL, 0x242d3f3fUL, 0x2576d0d0UL, 0x269b8888UL, 0x27c06767UL, -0x28223636UL, 0x2979d9d9UL, 0x2a948181UL, 0x2bcf6e6eUL, 0x2c273131UL, 0x2d7cdedeUL, 0x2e918686UL, 0x2fca6969UL, -0x303c2424UL, 0x3167cbcbUL, 0x328a9393UL, 0x33d17c7cUL, 0x34392323UL, 0x3562ccccUL, 0x368f9494UL, 0x37d47b7bUL, -0x38362a2aUL, 0x396dc5c5UL, 0x3a809d9dUL, 0x3bdb7272UL, 0x3c332d2dUL, 0x3d68c2c2UL, 0x3e859a9aUL, 0x3fde7575UL, -0x40507070UL, 0x410b9f9fUL, 0x42e6c7c7UL, 0x43bd2828UL, 0x44557777UL, 0x450e9898UL, 0x46e3c0c0UL, 0x47b82f2fUL, -0x485a7e7eUL, 0x49019191UL, 0x4aecc9c9UL, 0x4bb72626UL, 0x4c5f7979UL, 0x4d049696UL, 0x4ee9ceceUL, 0x4fb22121UL, -0x50446c6cUL, 0x511f8383UL, 0x52f2dbdbUL, 0x53a93434UL, 0x54416b6bUL, 0x551a8484UL, 0x56f7dcdcUL, 0x57ac3333UL, -0x584e6262UL, 0x59158d8dUL, 0x5af8d5d5UL, 0x5ba33a3aUL, 0x5c4b6565UL, 0x5d108a8aUL, 0x5efdd2d2UL, 0x5fa63d3dUL, -0x60784848UL, 0x6123a7a7UL, 0x62ceffffUL, 0x63951010UL, 0x647d4f4fUL, 0x6526a0a0UL, 0x66cbf8f8UL, 0x67901717UL, -0x68724646UL, 0x6929a9a9UL, 0x6ac4f1f1UL, 0x6b9f1e1eUL, 0x6c774141UL, 0x6d2caeaeUL, 0x6ec1f6f6UL, 0x6f9a1919UL, -0x706c5454UL, 0x7137bbbbUL, 0x72dae3e3UL, 0x73810c0cUL, 0x74695353UL, 0x7532bcbcUL, 0x76dfe4e4UL, 0x77840b0bUL, -0x78665a5aUL, 0x793db5b5UL, 0x7ad0ededUL, 0x7b8b0202UL, 0x7c635d5dUL, 0x7d38b2b2UL, 0x7ed5eaeaUL, 0x7f8e0505UL, -0x80a0e0e0UL, 0x81fb0f0fUL, 0x82165757UL, 0x834db8b8UL, 0x84a5e7e7UL, 0x85fe0808UL, 0x86135050UL, 0x8748bfbfUL, -0x88aaeeeeUL, 0x89f10101UL, 0x8a1c5959UL, 0x8b47b6b6UL, 0x8cafe9e9UL, 0x8df40606UL, 0x8e195e5eUL, 0x8f42b1b1UL, -0x90b4fcfcUL, 0x91ef1313UL, 0x92024b4bUL, 0x9359a4a4UL, 0x94b1fbfbUL, 0x95ea1414UL, 0x96074c4cUL, 0x975ca3a3UL, -0x98bef2f2UL, 0x99e51d1dUL, 0x9a084545UL, 0x9b53aaaaUL, 0x9cbbf5f5UL, 0x9de01a1aUL, 0x9e0d4242UL, 0x9f56adadUL, -0xa088d8d8UL, 0xa1d33737UL, 0xa23e6f6fUL, 0xa3658080UL, 0xa48ddfdfUL, 0xa5d63030UL, 0xa63b6868UL, 0xa7608787UL, -0xa882d6d6UL, 0xa9d93939UL, 0xaa346161UL, 0xab6f8e8eUL, 0xac87d1d1UL, 0xaddc3e3eUL, 0xae316666UL, 0xaf6a8989UL, -0xb09cc4c4UL, 0xb1c72b2bUL, 0xb22a7373UL, 0xb3719c9cUL, 0xb499c3c3UL, 0xb5c22c2cUL, 0xb62f7474UL, 0xb7749b9bUL, -0xb896cacaUL, 0xb9cd2525UL, 0xba207d7dUL, 0xbb7b9292UL, 0xbc93cdcdUL, 0xbdc82222UL, 0xbe257a7aUL, 0xbf7e9595UL, -0xc0f09090UL, 0xc1ab7f7fUL, 0xc2462727UL, 0xc31dc8c8UL, 0xc4f59797UL, 0xc5ae7878UL, 0xc6432020UL, 0xc718cfcfUL, -0xc8fa9e9eUL, 0xc9a17171UL, 0xca4c2929UL, 0xcb17c6c6UL, 0xccff9999UL, 0xcda47676UL, 0xce492e2eUL, 0xcf12c1c1UL, -0xd0e48c8cUL, 0xd1bf6363UL, 0xd2523b3bUL, 0xd309d4d4UL, 0xd4e18b8bUL, 0xd5ba6464UL, 0xd6573c3cUL, 0xd70cd3d3UL, -0xd8ee8282UL, 0xd9b56d6dUL, 0xda583535UL, 0xdb03dadaUL, 0xdceb8585UL, 0xddb06a6aUL, 0xde5d3232UL, 0xdf06ddddUL, -0xe0d8a8a8UL, 0xe1834747UL, 0xe26e1f1fUL, 0xe335f0f0UL, 0xe4ddafafUL, 0xe5864040UL, 0xe66b1818UL, 0xe730f7f7UL, -0xe8d2a6a6UL, 0xe9894949UL, 0xea641111UL, 0xeb3ffefeUL, 0xecd7a1a1UL, 0xed8c4e4eUL, 0xee611616UL, 0xef3af9f9UL, -0xf0ccb4b4UL, 0xf1975b5bUL, 0xf27a0303UL, 0xf321ececUL, 0xf4c9b3b3UL, 0xf5925c5cUL, 0xf67f0404UL, 0xf724ebebUL, -0xf8c6babaUL, 0xf99d5555UL, 0xfa700d0dUL, 0xfb2be2e2UL, 0xfcc3bdbdUL, 0xfd985252UL, 0xfe750a0aUL, 0xff2ee5e5UL -}, -{ -0x00000000UL, 0xef01ef5bUL, 0xb702b7b6UL, 0x580358edUL, 0x07040705UL, 0xe805e85eUL, 0xb006b0b3UL, 0x5f075fe8UL, -0x0e080e0aUL, 0xe109e151UL, 0xb90ab9bcUL, 0x560b56e7UL, 0x090c090fUL, 0xe60de654UL, 0xbe0ebeb9UL, 0x510f51e2UL, -0x1c101c14UL, 0xf311f34fUL, 0xab12aba2UL, 0x441344f9UL, 0x1b141b11UL, 0xf415f44aUL, 0xac16aca7UL, 0x431743fcUL, -0x1218121eUL, 0xfd19fd45UL, 0xa51aa5a8UL, 0x4a1b4af3UL, 0x151c151bUL, 0xfa1dfa40UL, 0xa21ea2adUL, 0x4d1f4df6UL, -0x38203828UL, 0xd721d773UL, 0x8f228f9eUL, 0x602360c5UL, 0x3f243f2dUL, 0xd025d076UL, 0x8826889bUL, 0x672767c0UL, -0x36283622UL, 0xd929d979UL, 0x812a8194UL, 0x6e2b6ecfUL, 0x312c3127UL, 0xde2dde7cUL, 0x862e8691UL, 0x692f69caUL, -0x2430243cUL, 0xcb31cb67UL, 0x9332938aUL, 0x7c337cd1UL, 0x23342339UL, 0xcc35cc62UL, 0x9436948fUL, 0x7b377bd4UL, -0x2a382a36UL, 0xc539c56dUL, 0x9d3a9d80UL, 0x723b72dbUL, 0x2d3c2d33UL, 0xc23dc268UL, 0x9a3e9a85UL, 0x753f75deUL, -0x70407050UL, 0x9f419f0bUL, 0xc742c7e6UL, 0x284328bdUL, 0x77447755UL, 0x9845980eUL, 0xc046c0e3UL, 0x2f472fb8UL, -0x7e487e5aUL, 0x91499101UL, 0xc94ac9ecUL, 0x264b26b7UL, 0x794c795fUL, 0x964d9604UL, 0xce4ecee9UL, 0x214f21b2UL, -0x6c506c44UL, 0x8351831fUL, 0xdb52dbf2UL, 0x345334a9UL, 0x6b546b41UL, 0x8455841aUL, 0xdc56dcf7UL, 0x335733acUL, -0x6258624eUL, 0x8d598d15UL, 0xd55ad5f8UL, 0x3a5b3aa3UL, 0x655c654bUL, 0x8a5d8a10UL, 0xd25ed2fdUL, 0x3d5f3da6UL, -0x48604878UL, 0xa761a723UL, 0xff62ffceUL, 0x10631095UL, 0x4f644f7dUL, 0xa065a026UL, 0xf866f8cbUL, 0x17671790UL, -0x46684672UL, 0xa969a929UL, 0xf16af1c4UL, 0x1e6b1e9fUL, 0x416c4177UL, 0xae6dae2cUL, 0xf66ef6c1UL, 0x196f199aUL, -0x5470546cUL, 0xbb71bb37UL, 0xe372e3daUL, 0x0c730c81UL, 0x53745369UL, 0xbc75bc32UL, 0xe476e4dfUL, 0x0b770b84UL, -0x5a785a66UL, 0xb579b53dUL, 0xed7aedd0UL, 0x027b028bUL, 0x5d7c5d63UL, 0xb27db238UL, 0xea7eead5UL, 0x057f058eUL, -0xe080e0a0UL, 0x0f810ffbUL, 0x57825716UL, 0xb883b84dUL, 0xe784e7a5UL, 0x088508feUL, 0x50865013UL, 0xbf87bf48UL, -0xee88eeaaUL, 0x018901f1UL, 0x598a591cUL, 0xb68bb647UL, 0xe98ce9afUL, 0x068d06f4UL, 0x5e8e5e19UL, 0xb18fb142UL, -0xfc90fcb4UL, 0x139113efUL, 0x4b924b02UL, 0xa493a459UL, 0xfb94fbb1UL, 0x149514eaUL, 0x4c964c07UL, 0xa397a35cUL, -0xf298f2beUL, 0x1d991de5UL, 0x459a4508UL, 0xaa9baa53UL, 0xf59cf5bbUL, 0x1a9d1ae0UL, 0x429e420dUL, 0xad9fad56UL, -0xd8a0d888UL, 0x37a137d3UL, 0x6fa26f3eUL, 0x80a38065UL, 0xdfa4df8dUL, 0x30a530d6UL, 0x68a6683bUL, 0x87a78760UL, -0xd6a8d682UL, 0x39a939d9UL, 0x61aa6134UL, 0x8eab8e6fUL, 0xd1acd187UL, 0x3ead3edcUL, 0x66ae6631UL, 0x89af896aUL, -0xc4b0c49cUL, 0x2bb12bc7UL, 0x73b2732aUL, 0x9cb39c71UL, 0xc3b4c399UL, 0x2cb52cc2UL, 0x74b6742fUL, 0x9bb79b74UL, -0xcab8ca96UL, 0x25b925cdUL, 0x7dba7d20UL, 0x92bb927bUL, 0xcdbccd93UL, 0x22bd22c8UL, 0x7abe7a25UL, 0x95bf957eUL, -0x90c090f0UL, 0x7fc17fabUL, 0x27c22746UL, 0xc8c3c81dUL, 0x97c497f5UL, 0x78c578aeUL, 0x20c62043UL, 0xcfc7cf18UL, -0x9ec89efaUL, 0x71c971a1UL, 0x29ca294cUL, 0xc6cbc617UL, 0x99cc99ffUL, 0x76cd76a4UL, 0x2ece2e49UL, 0xc1cfc112UL, -0x8cd08ce4UL, 0x63d163bfUL, 0x3bd23b52UL, 0xd4d3d409UL, 0x8bd48be1UL, 0x64d564baUL, 0x3cd63c57UL, 0xd3d7d30cUL, -0x82d882eeUL, 0x6dd96db5UL, 0x35da3558UL, 0xdadbda03UL, 0x85dc85ebUL, 0x6add6ab0UL, 0x32de325dUL, 0xdddfdd06UL, -0xa8e0a8d8UL, 0x47e14783UL, 0x1fe21f6eUL, 0xf0e3f035UL, 0xafe4afddUL, 0x40e54086UL, 0x18e6186bUL, 0xf7e7f730UL, -0xa6e8a6d2UL, 0x49e94989UL, 0x11ea1164UL, 0xfeebfe3fUL, 0xa1eca1d7UL, 0x4eed4e8cUL, 0x16ee1661UL, 0xf9eff93aUL, -0xb4f0b4ccUL, 0x5bf15b97UL, 0x03f2037aUL, 0xecf3ec21UL, 0xb3f4b3c9UL, 0x5cf55c92UL, 0x04f6047fUL, 0xebf7eb24UL, -0xbaf8bac6UL, 0x55f9559dUL, 0x0dfa0d70UL, 0xe2fbe22bUL, 0xbdfcbdc3UL, 0x52fd5298UL, 0x0afe0a75UL, 0xe5ffe52eUL -}, -{ -0x00000000UL, 0x5bef015bUL, 0xb6b702b6UL, 0xed5803edUL, 0x05070405UL, 0x5ee8055eUL, 0xb3b006b3UL, 0xe85f07e8UL, -0x0a0e080aUL, 0x51e10951UL, 0xbcb90abcUL, 0xe7560be7UL, 0x0f090c0fUL, 0x54e60d54UL, 0xb9be0eb9UL, 0xe2510fe2UL, -0x141c1014UL, 0x4ff3114fUL, 0xa2ab12a2UL, 0xf94413f9UL, 0x111b1411UL, 0x4af4154aUL, 0xa7ac16a7UL, 0xfc4317fcUL, -0x1e12181eUL, 0x45fd1945UL, 0xa8a51aa8UL, 0xf34a1bf3UL, 0x1b151c1bUL, 0x40fa1d40UL, 0xada21eadUL, 0xf64d1ff6UL, -0x28382028UL, 0x73d72173UL, 0x9e8f229eUL, 0xc56023c5UL, 0x2d3f242dUL, 0x76d02576UL, 0x9b88269bUL, 0xc06727c0UL, -0x22362822UL, 0x79d92979UL, 0x94812a94UL, 0xcf6e2bcfUL, 0x27312c27UL, 0x7cde2d7cUL, 0x91862e91UL, 0xca692fcaUL, -0x3c24303cUL, 0x67cb3167UL, 0x8a93328aUL, 0xd17c33d1UL, 0x39233439UL, 0x62cc3562UL, 0x8f94368fUL, 0xd47b37d4UL, -0x362a3836UL, 0x6dc5396dUL, 0x809d3a80UL, 0xdb723bdbUL, 0x332d3c33UL, 0x68c23d68UL, 0x859a3e85UL, 0xde753fdeUL, -0x50704050UL, 0x0b9f410bUL, 0xe6c742e6UL, 0xbd2843bdUL, 0x55774455UL, 0x0e98450eUL, 0xe3c046e3UL, 0xb82f47b8UL, -0x5a7e485aUL, 0x01914901UL, 0xecc94aecUL, 0xb7264bb7UL, 0x5f794c5fUL, 0x04964d04UL, 0xe9ce4ee9UL, 0xb2214fb2UL, -0x446c5044UL, 0x1f83511fUL, 0xf2db52f2UL, 0xa93453a9UL, 0x416b5441UL, 0x1a84551aUL, 0xf7dc56f7UL, 0xac3357acUL, -0x4e62584eUL, 0x158d5915UL, 0xf8d55af8UL, 0xa33a5ba3UL, 0x4b655c4bUL, 0x108a5d10UL, 0xfdd25efdUL, 0xa63d5fa6UL, -0x78486078UL, 0x23a76123UL, 0xceff62ceUL, 0x95106395UL, 0x7d4f647dUL, 0x26a06526UL, 0xcbf866cbUL, 0x90176790UL, -0x72466872UL, 0x29a96929UL, 0xc4f16ac4UL, 0x9f1e6b9fUL, 0x77416c77UL, 0x2cae6d2cUL, 0xc1f66ec1UL, 0x9a196f9aUL, -0x6c54706cUL, 0x37bb7137UL, 0xdae372daUL, 0x810c7381UL, 0x69537469UL, 0x32bc7532UL, 0xdfe476dfUL, 0x840b7784UL, -0x665a7866UL, 0x3db5793dUL, 0xd0ed7ad0UL, 0x8b027b8bUL, 0x635d7c63UL, 0x38b27d38UL, 0xd5ea7ed5UL, 0x8e057f8eUL, -0xa0e080a0UL, 0xfb0f81fbUL, 0x16578216UL, 0x4db8834dUL, 0xa5e784a5UL, 0xfe0885feUL, 0x13508613UL, 0x48bf8748UL, -0xaaee88aaUL, 0xf10189f1UL, 0x1c598a1cUL, 0x47b68b47UL, 0xafe98cafUL, 0xf4068df4UL, 0x195e8e19UL, 0x42b18f42UL, -0xb4fc90b4UL, 0xef1391efUL, 0x024b9202UL, 0x59a49359UL, 0xb1fb94b1UL, 0xea1495eaUL, 0x074c9607UL, 0x5ca3975cUL, -0xbef298beUL, 0xe51d99e5UL, 0x08459a08UL, 0x53aa9b53UL, 0xbbf59cbbUL, 0xe01a9de0UL, 0x0d429e0dUL, 0x56ad9f56UL, -0x88d8a088UL, 0xd337a1d3UL, 0x3e6fa23eUL, 0x6580a365UL, 0x8ddfa48dUL, 0xd630a5d6UL, 0x3b68a63bUL, 0x6087a760UL, -0x82d6a882UL, 0xd939a9d9UL, 0x3461aa34UL, 0x6f8eab6fUL, 0x87d1ac87UL, 0xdc3eaddcUL, 0x3166ae31UL, 0x6a89af6aUL, -0x9cc4b09cUL, 0xc72bb1c7UL, 0x2a73b22aUL, 0x719cb371UL, 0x99c3b499UL, 0xc22cb5c2UL, 0x2f74b62fUL, 0x749bb774UL, -0x96cab896UL, 0xcd25b9cdUL, 0x207dba20UL, 0x7b92bb7bUL, 0x93cdbc93UL, 0xc822bdc8UL, 0x257abe25UL, 0x7e95bf7eUL, -0xf090c0f0UL, 0xab7fc1abUL, 0x4627c246UL, 0x1dc8c31dUL, 0xf597c4f5UL, 0xae78c5aeUL, 0x4320c643UL, 0x18cfc718UL, -0xfa9ec8faUL, 0xa171c9a1UL, 0x4c29ca4cUL, 0x17c6cb17UL, 0xff99ccffUL, 0xa476cda4UL, 0x492ece49UL, 0x12c1cf12UL, -0xe48cd0e4UL, 0xbf63d1bfUL, 0x523bd252UL, 0x09d4d309UL, 0xe18bd4e1UL, 0xba64d5baUL, 0x573cd657UL, 0x0cd3d70cUL, -0xee82d8eeUL, 0xb56dd9b5UL, 0x5835da58UL, 0x03dadb03UL, 0xeb85dcebUL, 0xb06addb0UL, 0x5d32de5dUL, 0x06dddf06UL, -0xd8a8e0d8UL, 0x8347e183UL, 0x6e1fe26eUL, 0x35f0e335UL, 0xddafe4ddUL, 0x8640e586UL, 0x6b18e66bUL, 0x30f7e730UL, -0xd2a6e8d2UL, 0x8949e989UL, 0x6411ea64UL, 0x3ffeeb3fUL, 0xd7a1ecd7UL, 0x8c4eed8cUL, 0x6116ee61UL, 0x3af9ef3aUL, -0xccb4f0ccUL, 0x975bf197UL, 0x7a03f27aUL, 0x21ecf321UL, 0xc9b3f4c9UL, 0x925cf592UL, 0x7f04f67fUL, 0x24ebf724UL, -0xc6baf8c6UL, 0x9d55f99dUL, 0x700dfa70UL, 0x2be2fb2bUL, 0xc3bdfcc3UL, 0x9852fd98UL, 0x750afe75UL, 0x2ee5ff2eUL -}}; - -#ifdef LTC_TWOFISH_ALL_TABLES - -/* the 4x8 RS transform */ -static const ulong32 rs_tab0[256] = { -0x00000000LU, 0xa402a401LU, 0x05040502LU, 0xa106a103LU, 0x0a080a04LU, 0xae0aae05LU, 0x0f0c0f06LU, 0xab0eab07LU, -0x14101408LU, 0xb012b009LU, 0x1114110aLU, 0xb516b50bLU, 0x1e181e0cLU, 0xba1aba0dLU, 0x1b1c1b0eLU, 0xbf1ebf0fLU, -0x28202810LU, 0x8c228c11LU, 0x2d242d12LU, 0x89268913LU, 0x22282214LU, 0x862a8615LU, 0x272c2716LU, 0x832e8317LU, -0x3c303c18LU, 0x98329819LU, 0x3934391aLU, 0x9d369d1bLU, 0x3638361cLU, 0x923a921dLU, 0x333c331eLU, 0x973e971fLU, -0x50405020LU, 0xf442f421LU, 0x55445522LU, 0xf146f123LU, 0x5a485a24LU, 0xfe4afe25LU, 0x5f4c5f26LU, 0xfb4efb27LU, -0x44504428LU, 0xe052e029LU, 0x4154412aLU, 0xe556e52bLU, 0x4e584e2cLU, 0xea5aea2dLU, 0x4b5c4b2eLU, 0xef5eef2fLU, -0x78607830LU, 0xdc62dc31LU, 0x7d647d32LU, 0xd966d933LU, 0x72687234LU, 0xd66ad635LU, 0x776c7736LU, 0xd36ed337LU, -0x6c706c38LU, 0xc872c839LU, 0x6974693aLU, 0xcd76cd3bLU, 0x6678663cLU, 0xc27ac23dLU, 0x637c633eLU, 0xc77ec73fLU, -0xa080a040LU, 0x04820441LU, 0xa584a542LU, 0x01860143LU, 0xaa88aa44LU, 0x0e8a0e45LU, 0xaf8caf46LU, 0x0b8e0b47LU, -0xb490b448LU, 0x10921049LU, 0xb194b14aLU, 0x1596154bLU, 0xbe98be4cLU, 0x1a9a1a4dLU, 0xbb9cbb4eLU, 0x1f9e1f4fLU, -0x88a08850LU, 0x2ca22c51LU, 0x8da48d52LU, 0x29a62953LU, 0x82a88254LU, 0x26aa2655LU, 0x87ac8756LU, 0x23ae2357LU, -0x9cb09c58LU, 0x38b23859LU, 0x99b4995aLU, 0x3db63d5bLU, 0x96b8965cLU, 0x32ba325dLU, 0x93bc935eLU, 0x37be375fLU, -0xf0c0f060LU, 0x54c25461LU, 0xf5c4f562LU, 0x51c65163LU, 0xfac8fa64LU, 0x5eca5e65LU, 0xffccff66LU, 0x5bce5b67LU, -0xe4d0e468LU, 0x40d24069LU, 0xe1d4e16aLU, 0x45d6456bLU, 0xeed8ee6cLU, 0x4ada4a6dLU, 0xebdceb6eLU, 0x4fde4f6fLU, -0xd8e0d870LU, 0x7ce27c71LU, 0xdde4dd72LU, 0x79e67973LU, 0xd2e8d274LU, 0x76ea7675LU, 0xd7ecd776LU, 0x73ee7377LU, -0xccf0cc78LU, 0x68f26879LU, 0xc9f4c97aLU, 0x6df66d7bLU, 0xc6f8c67cLU, 0x62fa627dLU, 0xc3fcc37eLU, 0x67fe677fLU, -0x0d4d0d80LU, 0xa94fa981LU, 0x08490882LU, 0xac4bac83LU, 0x07450784LU, 0xa347a385LU, 0x02410286LU, 0xa643a687LU, -0x195d1988LU, 0xbd5fbd89LU, 0x1c591c8aLU, 0xb85bb88bLU, 0x1355138cLU, 0xb757b78dLU, 0x1651168eLU, 0xb253b28fLU, -0x256d2590LU, 0x816f8191LU, 0x20692092LU, 0x846b8493LU, 0x2f652f94LU, 0x8b678b95LU, 0x2a612a96LU, 0x8e638e97LU, -0x317d3198LU, 0x957f9599LU, 0x3479349aLU, 0x907b909bLU, 0x3b753b9cLU, 0x9f779f9dLU, 0x3e713e9eLU, 0x9a739a9fLU, -0x5d0d5da0LU, 0xf90ff9a1LU, 0x580958a2LU, 0xfc0bfca3LU, 0x570557a4LU, 0xf307f3a5LU, 0x520152a6LU, 0xf603f6a7LU, -0x491d49a8LU, 0xed1feda9LU, 0x4c194caaLU, 0xe81be8abLU, 0x431543acLU, 0xe717e7adLU, 0x461146aeLU, 0xe213e2afLU, -0x752d75b0LU, 0xd12fd1b1LU, 0x702970b2LU, 0xd42bd4b3LU, 0x7f257fb4LU, 0xdb27dbb5LU, 0x7a217ab6LU, 0xde23deb7LU, -0x613d61b8LU, 0xc53fc5b9LU, 0x643964baLU, 0xc03bc0bbLU, 0x6b356bbcLU, 0xcf37cfbdLU, 0x6e316ebeLU, 0xca33cabfLU, -0xadcdadc0LU, 0x09cf09c1LU, 0xa8c9a8c2LU, 0x0ccb0cc3LU, 0xa7c5a7c4LU, 0x03c703c5LU, 0xa2c1a2c6LU, 0x06c306c7LU, -0xb9ddb9c8LU, 0x1ddf1dc9LU, 0xbcd9bccaLU, 0x18db18cbLU, 0xb3d5b3ccLU, 0x17d717cdLU, 0xb6d1b6ceLU, 0x12d312cfLU, -0x85ed85d0LU, 0x21ef21d1LU, 0x80e980d2LU, 0x24eb24d3LU, 0x8fe58fd4LU, 0x2be72bd5LU, 0x8ae18ad6LU, 0x2ee32ed7LU, -0x91fd91d8LU, 0x35ff35d9LU, 0x94f994daLU, 0x30fb30dbLU, 0x9bf59bdcLU, 0x3ff73fddLU, 0x9ef19edeLU, 0x3af33adfLU, -0xfd8dfde0LU, 0x598f59e1LU, 0xf889f8e2LU, 0x5c8b5ce3LU, 0xf785f7e4LU, 0x538753e5LU, 0xf281f2e6LU, 0x568356e7LU, -0xe99de9e8LU, 0x4d9f4de9LU, 0xec99eceaLU, 0x489b48ebLU, 0xe395e3ecLU, 0x479747edLU, 0xe691e6eeLU, 0x429342efLU, -0xd5add5f0LU, 0x71af71f1LU, 0xd0a9d0f2LU, 0x74ab74f3LU, 0xdfa5dff4LU, 0x7ba77bf5LU, 0xdaa1daf6LU, 0x7ea37ef7LU, -0xc1bdc1f8LU, 0x65bf65f9LU, 0xc4b9c4faLU, 0x60bb60fbLU, 0xcbb5cbfcLU, 0x6fb76ffdLU, 0xceb1cefeLU, 0x6ab36affLU }; - -static const ulong32 rs_tab1[256] = { -0x00000000LU, 0x55a156a4LU, 0xaa0fac05LU, 0xffaefaa1LU, 0x191e150aLU, 0x4cbf43aeLU, 0xb311b90fLU, 0xe6b0efabLU, -0x323c2a14LU, 0x679d7cb0LU, 0x98338611LU, 0xcd92d0b5LU, 0x2b223f1eLU, 0x7e8369baLU, 0x812d931bLU, 0xd48cc5bfLU, -0x64785428LU, 0x31d9028cLU, 0xce77f82dLU, 0x9bd6ae89LU, 0x7d664122LU, 0x28c71786LU, 0xd769ed27LU, 0x82c8bb83LU, -0x56447e3cLU, 0x03e52898LU, 0xfc4bd239LU, 0xa9ea849dLU, 0x4f5a6b36LU, 0x1afb3d92LU, 0xe555c733LU, 0xb0f49197LU, -0xc8f0a850LU, 0x9d51fef4LU, 0x62ff0455LU, 0x375e52f1LU, 0xd1eebd5aLU, 0x844febfeLU, 0x7be1115fLU, 0x2e4047fbLU, -0xfacc8244LU, 0xaf6dd4e0LU, 0x50c32e41LU, 0x056278e5LU, 0xe3d2974eLU, 0xb673c1eaLU, 0x49dd3b4bLU, 0x1c7c6defLU, -0xac88fc78LU, 0xf929aadcLU, 0x0687507dLU, 0x532606d9LU, 0xb596e972LU, 0xe037bfd6LU, 0x1f994577LU, 0x4a3813d3LU, -0x9eb4d66cLU, 0xcb1580c8LU, 0x34bb7a69LU, 0x611a2ccdLU, 0x87aac366LU, 0xd20b95c2LU, 0x2da56f63LU, 0x780439c7LU, -0xddad1da0LU, 0x880c4b04LU, 0x77a2b1a5LU, 0x2203e701LU, 0xc4b308aaLU, 0x91125e0eLU, 0x6ebca4afLU, 0x3b1df20bLU, -0xef9137b4LU, 0xba306110LU, 0x459e9bb1LU, 0x103fcd15LU, 0xf68f22beLU, 0xa32e741aLU, 0x5c808ebbLU, 0x0921d81fLU, -0xb9d54988LU, 0xec741f2cLU, 0x13dae58dLU, 0x467bb329LU, 0xa0cb5c82LU, 0xf56a0a26LU, 0x0ac4f087LU, 0x5f65a623LU, -0x8be9639cLU, 0xde483538LU, 0x21e6cf99LU, 0x7447993dLU, 0x92f77696LU, 0xc7562032LU, 0x38f8da93LU, 0x6d598c37LU, -0x155db5f0LU, 0x40fce354LU, 0xbf5219f5LU, 0xeaf34f51LU, 0x0c43a0faLU, 0x59e2f65eLU, 0xa64c0cffLU, 0xf3ed5a5bLU, -0x27619fe4LU, 0x72c0c940LU, 0x8d6e33e1LU, 0xd8cf6545LU, 0x3e7f8aeeLU, 0x6bdedc4aLU, 0x947026ebLU, 0xc1d1704fLU, -0x7125e1d8LU, 0x2484b77cLU, 0xdb2a4dddLU, 0x8e8b1b79LU, 0x683bf4d2LU, 0x3d9aa276LU, 0xc23458d7LU, 0x97950e73LU, -0x4319cbccLU, 0x16b89d68LU, 0xe91667c9LU, 0xbcb7316dLU, 0x5a07dec6LU, 0x0fa68862LU, 0xf00872c3LU, 0xa5a92467LU, -0xf7173a0dLU, 0xa2b66ca9LU, 0x5d189608LU, 0x08b9c0acLU, 0xee092f07LU, 0xbba879a3LU, 0x44068302LU, 0x11a7d5a6LU, -0xc52b1019LU, 0x908a46bdLU, 0x6f24bc1cLU, 0x3a85eab8LU, 0xdc350513LU, 0x899453b7LU, 0x763aa916LU, 0x239bffb2LU, -0x936f6e25LU, 0xc6ce3881LU, 0x3960c220LU, 0x6cc19484LU, 0x8a717b2fLU, 0xdfd02d8bLU, 0x207ed72aLU, 0x75df818eLU, -0xa1534431LU, 0xf4f21295LU, 0x0b5ce834LU, 0x5efdbe90LU, 0xb84d513bLU, 0xedec079fLU, 0x1242fd3eLU, 0x47e3ab9aLU, -0x3fe7925dLU, 0x6a46c4f9LU, 0x95e83e58LU, 0xc04968fcLU, 0x26f98757LU, 0x7358d1f3LU, 0x8cf62b52LU, 0xd9577df6LU, -0x0ddbb849LU, 0x587aeeedLU, 0xa7d4144cLU, 0xf27542e8LU, 0x14c5ad43LU, 0x4164fbe7LU, 0xbeca0146LU, 0xeb6b57e2LU, -0x5b9fc675LU, 0x0e3e90d1LU, 0xf1906a70LU, 0xa4313cd4LU, 0x4281d37fLU, 0x172085dbLU, 0xe88e7f7aLU, 0xbd2f29deLU, -0x69a3ec61LU, 0x3c02bac5LU, 0xc3ac4064LU, 0x960d16c0LU, 0x70bdf96bLU, 0x251cafcfLU, 0xdab2556eLU, 0x8f1303caLU, -0x2aba27adLU, 0x7f1b7109LU, 0x80b58ba8LU, 0xd514dd0cLU, 0x33a432a7LU, 0x66056403LU, 0x99ab9ea2LU, 0xcc0ac806LU, -0x18860db9LU, 0x4d275b1dLU, 0xb289a1bcLU, 0xe728f718LU, 0x019818b3LU, 0x54394e17LU, 0xab97b4b6LU, 0xfe36e212LU, -0x4ec27385LU, 0x1b632521LU, 0xe4cddf80LU, 0xb16c8924LU, 0x57dc668fLU, 0x027d302bLU, 0xfdd3ca8aLU, 0xa8729c2eLU, -0x7cfe5991LU, 0x295f0f35LU, 0xd6f1f594LU, 0x8350a330LU, 0x65e04c9bLU, 0x30411a3fLU, 0xcfefe09eLU, 0x9a4eb63aLU, -0xe24a8ffdLU, 0xb7ebd959LU, 0x484523f8LU, 0x1de4755cLU, 0xfb549af7LU, 0xaef5cc53LU, 0x515b36f2LU, 0x04fa6056LU, -0xd076a5e9LU, 0x85d7f34dLU, 0x7a7909ecLU, 0x2fd85f48LU, 0xc968b0e3LU, 0x9cc9e647LU, 0x63671ce6LU, 0x36c64a42LU, -0x8632dbd5LU, 0xd3938d71LU, 0x2c3d77d0LU, 0x799c2174LU, 0x9f2ccedfLU, 0xca8d987bLU, 0x352362daLU, 0x6082347eLU, -0xb40ef1c1LU, 0xe1afa765LU, 0x1e015dc4LU, 0x4ba00b60LU, 0xad10e4cbLU, 0xf8b1b26fLU, 0x071f48ceLU, 0x52be1e6aLU }; - -static const ulong32 rs_tab2[256] = { -0x00000000LU, 0x87fc8255LU, 0x43b549aaLU, 0xc449cbffLU, 0x86279219LU, 0x01db104cLU, 0xc592dbb3LU, 0x426e59e6LU, -0x414e6932LU, 0xc6b2eb67LU, 0x02fb2098LU, 0x8507a2cdLU, 0xc769fb2bLU, 0x4095797eLU, 0x84dcb281LU, 0x032030d4LU, -0x829cd264LU, 0x05605031LU, 0xc1299bceLU, 0x46d5199bLU, 0x04bb407dLU, 0x8347c228LU, 0x470e09d7LU, 0xc0f28b82LU, -0xc3d2bb56LU, 0x442e3903LU, 0x8067f2fcLU, 0x079b70a9LU, 0x45f5294fLU, 0xc209ab1aLU, 0x064060e5LU, 0x81bce2b0LU, -0x4975e9c8LU, 0xce896b9dLU, 0x0ac0a062LU, 0x8d3c2237LU, 0xcf527bd1LU, 0x48aef984LU, 0x8ce7327bLU, 0x0b1bb02eLU, -0x083b80faLU, 0x8fc702afLU, 0x4b8ec950LU, 0xcc724b05LU, 0x8e1c12e3LU, 0x09e090b6LU, 0xcda95b49LU, 0x4a55d91cLU, -0xcbe93bacLU, 0x4c15b9f9LU, 0x885c7206LU, 0x0fa0f053LU, 0x4dcea9b5LU, 0xca322be0LU, 0x0e7be01fLU, 0x8987624aLU, -0x8aa7529eLU, 0x0d5bd0cbLU, 0xc9121b34LU, 0x4eee9961LU, 0x0c80c087LU, 0x8b7c42d2LU, 0x4f35892dLU, 0xc8c90b78LU, -0x92ea9fddLU, 0x15161d88LU, 0xd15fd677LU, 0x56a35422LU, 0x14cd0dc4LU, 0x93318f91LU, 0x5778446eLU, 0xd084c63bLU, -0xd3a4f6efLU, 0x545874baLU, 0x9011bf45LU, 0x17ed3d10LU, 0x558364f6LU, 0xd27fe6a3LU, 0x16362d5cLU, 0x91caaf09LU, -0x10764db9LU, 0x978acfecLU, 0x53c30413LU, 0xd43f8646LU, 0x9651dfa0LU, 0x11ad5df5LU, 0xd5e4960aLU, 0x5218145fLU, -0x5138248bLU, 0xd6c4a6deLU, 0x128d6d21LU, 0x9571ef74LU, 0xd71fb692LU, 0x50e334c7LU, 0x94aaff38LU, 0x13567d6dLU, -0xdb9f7615LU, 0x5c63f440LU, 0x982a3fbfLU, 0x1fd6bdeaLU, 0x5db8e40cLU, 0xda446659LU, 0x1e0dada6LU, 0x99f12ff3LU, -0x9ad11f27LU, 0x1d2d9d72LU, 0xd964568dLU, 0x5e98d4d8LU, 0x1cf68d3eLU, 0x9b0a0f6bLU, 0x5f43c494LU, 0xd8bf46c1LU, -0x5903a471LU, 0xdeff2624LU, 0x1ab6eddbLU, 0x9d4a6f8eLU, 0xdf243668LU, 0x58d8b43dLU, 0x9c917fc2LU, 0x1b6dfd97LU, -0x184dcd43LU, 0x9fb14f16LU, 0x5bf884e9LU, 0xdc0406bcLU, 0x9e6a5f5aLU, 0x1996dd0fLU, 0xdddf16f0LU, 0x5a2394a5LU, -0x699973f7LU, 0xee65f1a2LU, 0x2a2c3a5dLU, 0xadd0b808LU, 0xefbee1eeLU, 0x684263bbLU, 0xac0ba844LU, 0x2bf72a11LU, -0x28d71ac5LU, 0xaf2b9890LU, 0x6b62536fLU, 0xec9ed13aLU, 0xaef088dcLU, 0x290c0a89LU, 0xed45c176LU, 0x6ab94323LU, -0xeb05a193LU, 0x6cf923c6LU, 0xa8b0e839LU, 0x2f4c6a6cLU, 0x6d22338aLU, 0xeadeb1dfLU, 0x2e977a20LU, 0xa96bf875LU, -0xaa4bc8a1LU, 0x2db74af4LU, 0xe9fe810bLU, 0x6e02035eLU, 0x2c6c5ab8LU, 0xab90d8edLU, 0x6fd91312LU, 0xe8259147LU, -0x20ec9a3fLU, 0xa710186aLU, 0x6359d395LU, 0xe4a551c0LU, 0xa6cb0826LU, 0x21378a73LU, 0xe57e418cLU, 0x6282c3d9LU, -0x61a2f30dLU, 0xe65e7158LU, 0x2217baa7LU, 0xa5eb38f2LU, 0xe7856114LU, 0x6079e341LU, 0xa43028beLU, 0x23ccaaebLU, -0xa270485bLU, 0x258cca0eLU, 0xe1c501f1LU, 0x663983a4LU, 0x2457da42LU, 0xa3ab5817LU, 0x67e293e8LU, 0xe01e11bdLU, -0xe33e2169LU, 0x64c2a33cLU, 0xa08b68c3LU, 0x2777ea96LU, 0x6519b370LU, 0xe2e53125LU, 0x26acfadaLU, 0xa150788fLU, -0xfb73ec2aLU, 0x7c8f6e7fLU, 0xb8c6a580LU, 0x3f3a27d5LU, 0x7d547e33LU, 0xfaa8fc66LU, 0x3ee13799LU, 0xb91db5ccLU, -0xba3d8518LU, 0x3dc1074dLU, 0xf988ccb2LU, 0x7e744ee7LU, 0x3c1a1701LU, 0xbbe69554LU, 0x7faf5eabLU, 0xf853dcfeLU, -0x79ef3e4eLU, 0xfe13bc1bLU, 0x3a5a77e4LU, 0xbda6f5b1LU, 0xffc8ac57LU, 0x78342e02LU, 0xbc7de5fdLU, 0x3b8167a8LU, -0x38a1577cLU, 0xbf5dd529LU, 0x7b141ed6LU, 0xfce89c83LU, 0xbe86c565LU, 0x397a4730LU, 0xfd338ccfLU, 0x7acf0e9aLU, -0xb20605e2LU, 0x35fa87b7LU, 0xf1b34c48LU, 0x764fce1dLU, 0x342197fbLU, 0xb3dd15aeLU, 0x7794de51LU, 0xf0685c04LU, -0xf3486cd0LU, 0x74b4ee85LU, 0xb0fd257aLU, 0x3701a72fLU, 0x756ffec9LU, 0xf2937c9cLU, 0x36dab763LU, 0xb1263536LU, -0x309ad786LU, 0xb76655d3LU, 0x732f9e2cLU, 0xf4d31c79LU, 0xb6bd459fLU, 0x3141c7caLU, 0xf5080c35LU, 0x72f48e60LU, -0x71d4beb4LU, 0xf6283ce1LU, 0x3261f71eLU, 0xb59d754bLU, 0xf7f32cadLU, 0x700faef8LU, 0xb4466507LU, 0x33bae752LU }; - -static const ulong32 rs_tab3[256] = { -0x00000000LU, 0x5ac1f387LU, 0xb4cfab43LU, 0xee0e58c4LU, 0x25d31b86LU, 0x7f12e801LU, 0x911cb0c5LU, 0xcbdd4342LU, -0x4aeb3641LU, 0x102ac5c6LU, 0xfe249d02LU, 0xa4e56e85LU, 0x6f382dc7LU, 0x35f9de40LU, 0xdbf78684LU, 0x81367503LU, -0x949b6c82LU, 0xce5a9f05LU, 0x2054c7c1LU, 0x7a953446LU, 0xb1487704LU, 0xeb898483LU, 0x0587dc47LU, 0x5f462fc0LU, -0xde705ac3LU, 0x84b1a944LU, 0x6abff180LU, 0x307e0207LU, 0xfba34145LU, 0xa162b2c2LU, 0x4f6cea06LU, 0x15ad1981LU, -0x657bd849LU, 0x3fba2bceLU, 0xd1b4730aLU, 0x8b75808dLU, 0x40a8c3cfLU, 0x1a693048LU, 0xf467688cLU, 0xaea69b0bLU, -0x2f90ee08LU, 0x75511d8fLU, 0x9b5f454bLU, 0xc19eb6ccLU, 0x0a43f58eLU, 0x50820609LU, 0xbe8c5ecdLU, 0xe44dad4aLU, -0xf1e0b4cbLU, 0xab21474cLU, 0x452f1f88LU, 0x1feeec0fLU, 0xd433af4dLU, 0x8ef25ccaLU, 0x60fc040eLU, 0x3a3df789LU, -0xbb0b828aLU, 0xe1ca710dLU, 0x0fc429c9LU, 0x5505da4eLU, 0x9ed8990cLU, 0xc4196a8bLU, 0x2a17324fLU, 0x70d6c1c8LU, -0xcaf6fd92LU, 0x90370e15LU, 0x7e3956d1LU, 0x24f8a556LU, 0xef25e614LU, 0xb5e41593LU, 0x5bea4d57LU, 0x012bbed0LU, -0x801dcbd3LU, 0xdadc3854LU, 0x34d26090LU, 0x6e139317LU, 0xa5ced055LU, 0xff0f23d2LU, 0x11017b16LU, 0x4bc08891LU, -0x5e6d9110LU, 0x04ac6297LU, 0xeaa23a53LU, 0xb063c9d4LU, 0x7bbe8a96LU, 0x217f7911LU, 0xcf7121d5LU, 0x95b0d252LU, -0x1486a751LU, 0x4e4754d6LU, 0xa0490c12LU, 0xfa88ff95LU, 0x3155bcd7LU, 0x6b944f50LU, 0x859a1794LU, 0xdf5be413LU, -0xaf8d25dbLU, 0xf54cd65cLU, 0x1b428e98LU, 0x41837d1fLU, 0x8a5e3e5dLU, 0xd09fcddaLU, 0x3e91951eLU, 0x64506699LU, -0xe566139aLU, 0xbfa7e01dLU, 0x51a9b8d9LU, 0x0b684b5eLU, 0xc0b5081cLU, 0x9a74fb9bLU, 0x747aa35fLU, 0x2ebb50d8LU, -0x3b164959LU, 0x61d7badeLU, 0x8fd9e21aLU, 0xd518119dLU, 0x1ec552dfLU, 0x4404a158LU, 0xaa0af99cLU, 0xf0cb0a1bLU, -0x71fd7f18LU, 0x2b3c8c9fLU, 0xc532d45bLU, 0x9ff327dcLU, 0x542e649eLU, 0x0eef9719LU, 0xe0e1cfddLU, 0xba203c5aLU, -0xd9a1b769LU, 0x836044eeLU, 0x6d6e1c2aLU, 0x37afefadLU, 0xfc72acefLU, 0xa6b35f68LU, 0x48bd07acLU, 0x127cf42bLU, -0x934a8128LU, 0xc98b72afLU, 0x27852a6bLU, 0x7d44d9ecLU, 0xb6999aaeLU, 0xec586929LU, 0x025631edLU, 0x5897c26aLU, -0x4d3adbebLU, 0x17fb286cLU, 0xf9f570a8LU, 0xa334832fLU, 0x68e9c06dLU, 0x322833eaLU, 0xdc266b2eLU, 0x86e798a9LU, -0x07d1edaaLU, 0x5d101e2dLU, 0xb31e46e9LU, 0xe9dfb56eLU, 0x2202f62cLU, 0x78c305abLU, 0x96cd5d6fLU, 0xcc0caee8LU, -0xbcda6f20LU, 0xe61b9ca7LU, 0x0815c463LU, 0x52d437e4LU, 0x990974a6LU, 0xc3c88721LU, 0x2dc6dfe5LU, 0x77072c62LU, -0xf6315961LU, 0xacf0aae6LU, 0x42fef222LU, 0x183f01a5LU, 0xd3e242e7LU, 0x8923b160LU, 0x672de9a4LU, 0x3dec1a23LU, -0x284103a2LU, 0x7280f025LU, 0x9c8ea8e1LU, 0xc64f5b66LU, 0x0d921824LU, 0x5753eba3LU, 0xb95db367LU, 0xe39c40e0LU, -0x62aa35e3LU, 0x386bc664LU, 0xd6659ea0LU, 0x8ca46d27LU, 0x47792e65LU, 0x1db8dde2LU, 0xf3b68526LU, 0xa97776a1LU, -0x13574afbLU, 0x4996b97cLU, 0xa798e1b8LU, 0xfd59123fLU, 0x3684517dLU, 0x6c45a2faLU, 0x824bfa3eLU, 0xd88a09b9LU, -0x59bc7cbaLU, 0x037d8f3dLU, 0xed73d7f9LU, 0xb7b2247eLU, 0x7c6f673cLU, 0x26ae94bbLU, 0xc8a0cc7fLU, 0x92613ff8LU, -0x87cc2679LU, 0xdd0dd5feLU, 0x33038d3aLU, 0x69c27ebdLU, 0xa21f3dffLU, 0xf8dece78LU, 0x16d096bcLU, 0x4c11653bLU, -0xcd271038LU, 0x97e6e3bfLU, 0x79e8bb7bLU, 0x232948fcLU, 0xe8f40bbeLU, 0xb235f839LU, 0x5c3ba0fdLU, 0x06fa537aLU, -0x762c92b2LU, 0x2ced6135LU, 0xc2e339f1LU, 0x9822ca76LU, 0x53ff8934LU, 0x093e7ab3LU, 0xe7302277LU, 0xbdf1d1f0LU, -0x3cc7a4f3LU, 0x66065774LU, 0x88080fb0LU, 0xd2c9fc37LU, 0x1914bf75LU, 0x43d54cf2LU, 0xaddb1436LU, 0xf71ae7b1LU, -0xe2b7fe30LU, 0xb8760db7LU, 0x56785573LU, 0x0cb9a6f4LU, 0xc764e5b6LU, 0x9da51631LU, 0x73ab4ef5LU, 0x296abd72LU, -0xa85cc871LU, 0xf29d3bf6LU, 0x1c936332LU, 0x465290b5LU, 0x8d8fd3f7LU, 0xd74e2070LU, 0x394078b4LU, 0x63818b33LU }; - -static const ulong32 rs_tab4[256] = { -0x00000000LU, 0x58471e5aLU, 0xb08e3cb4LU, 0xe8c922eeLU, 0x2d517825LU, 0x7516667fLU, 0x9ddf4491LU, 0xc5985acbLU, -0x5aa2f04aLU, 0x02e5ee10LU, 0xea2cccfeLU, 0xb26bd2a4LU, 0x77f3886fLU, 0x2fb49635LU, 0xc77db4dbLU, 0x9f3aaa81LU, -0xb409ad94LU, 0xec4eb3ceLU, 0x04879120LU, 0x5cc08f7aLU, 0x9958d5b1LU, 0xc11fcbebLU, 0x29d6e905LU, 0x7191f75fLU, -0xeeab5ddeLU, 0xb6ec4384LU, 0x5e25616aLU, 0x06627f30LU, 0xc3fa25fbLU, 0x9bbd3ba1LU, 0x7374194fLU, 0x2b330715LU, -0x25121765LU, 0x7d55093fLU, 0x959c2bd1LU, 0xcddb358bLU, 0x08436f40LU, 0x5004711aLU, 0xb8cd53f4LU, 0xe08a4daeLU, -0x7fb0e72fLU, 0x27f7f975LU, 0xcf3edb9bLU, 0x9779c5c1LU, 0x52e19f0aLU, 0x0aa68150LU, 0xe26fa3beLU, 0xba28bde4LU, -0x911bbaf1LU, 0xc95ca4abLU, 0x21958645LU, 0x79d2981fLU, 0xbc4ac2d4LU, 0xe40ddc8eLU, 0x0cc4fe60LU, 0x5483e03aLU, -0xcbb94abbLU, 0x93fe54e1LU, 0x7b37760fLU, 0x23706855LU, 0xe6e8329eLU, 0xbeaf2cc4LU, 0x56660e2aLU, 0x0e211070LU, -0x4a242ecaLU, 0x12633090LU, 0xfaaa127eLU, 0xa2ed0c24LU, 0x677556efLU, 0x3f3248b5LU, 0xd7fb6a5bLU, 0x8fbc7401LU, -0x1086de80LU, 0x48c1c0daLU, 0xa008e234LU, 0xf84ffc6eLU, 0x3dd7a6a5LU, 0x6590b8ffLU, 0x8d599a11LU, 0xd51e844bLU, -0xfe2d835eLU, 0xa66a9d04LU, 0x4ea3bfeaLU, 0x16e4a1b0LU, 0xd37cfb7bLU, 0x8b3be521LU, 0x63f2c7cfLU, 0x3bb5d995LU, -0xa48f7314LU, 0xfcc86d4eLU, 0x14014fa0LU, 0x4c4651faLU, 0x89de0b31LU, 0xd199156bLU, 0x39503785LU, 0x611729dfLU, -0x6f3639afLU, 0x377127f5LU, 0xdfb8051bLU, 0x87ff1b41LU, 0x4267418aLU, 0x1a205fd0LU, 0xf2e97d3eLU, 0xaaae6364LU, -0x3594c9e5LU, 0x6dd3d7bfLU, 0x851af551LU, 0xdd5deb0bLU, 0x18c5b1c0LU, 0x4082af9aLU, 0xa84b8d74LU, 0xf00c932eLU, -0xdb3f943bLU, 0x83788a61LU, 0x6bb1a88fLU, 0x33f6b6d5LU, 0xf66eec1eLU, 0xae29f244LU, 0x46e0d0aaLU, 0x1ea7cef0LU, -0x819d6471LU, 0xd9da7a2bLU, 0x311358c5LU, 0x6954469fLU, 0xaccc1c54LU, 0xf48b020eLU, 0x1c4220e0LU, 0x44053ebaLU, -0x94485cd9LU, 0xcc0f4283LU, 0x24c6606dLU, 0x7c817e37LU, 0xb91924fcLU, 0xe15e3aa6LU, 0x09971848LU, 0x51d00612LU, -0xceeaac93LU, 0x96adb2c9LU, 0x7e649027LU, 0x26238e7dLU, 0xe3bbd4b6LU, 0xbbfccaecLU, 0x5335e802LU, 0x0b72f658LU, -0x2041f14dLU, 0x7806ef17LU, 0x90cfcdf9LU, 0xc888d3a3LU, 0x0d108968LU, 0x55579732LU, 0xbd9eb5dcLU, 0xe5d9ab86LU, -0x7ae30107LU, 0x22a41f5dLU, 0xca6d3db3LU, 0x922a23e9LU, 0x57b27922LU, 0x0ff56778LU, 0xe73c4596LU, 0xbf7b5bccLU, -0xb15a4bbcLU, 0xe91d55e6LU, 0x01d47708LU, 0x59936952LU, 0x9c0b3399LU, 0xc44c2dc3LU, 0x2c850f2dLU, 0x74c21177LU, -0xebf8bbf6LU, 0xb3bfa5acLU, 0x5b768742LU, 0x03319918LU, 0xc6a9c3d3LU, 0x9eeedd89LU, 0x7627ff67LU, 0x2e60e13dLU, -0x0553e628LU, 0x5d14f872LU, 0xb5ddda9cLU, 0xed9ac4c6LU, 0x28029e0dLU, 0x70458057LU, 0x988ca2b9LU, 0xc0cbbce3LU, -0x5ff11662LU, 0x07b60838LU, 0xef7f2ad6LU, 0xb738348cLU, 0x72a06e47LU, 0x2ae7701dLU, 0xc22e52f3LU, 0x9a694ca9LU, -0xde6c7213LU, 0x862b6c49LU, 0x6ee24ea7LU, 0x36a550fdLU, 0xf33d0a36LU, 0xab7a146cLU, 0x43b33682LU, 0x1bf428d8LU, -0x84ce8259LU, 0xdc899c03LU, 0x3440beedLU, 0x6c07a0b7LU, 0xa99ffa7cLU, 0xf1d8e426LU, 0x1911c6c8LU, 0x4156d892LU, -0x6a65df87LU, 0x3222c1ddLU, 0xdaebe333LU, 0x82acfd69LU, 0x4734a7a2LU, 0x1f73b9f8LU, 0xf7ba9b16LU, 0xaffd854cLU, -0x30c72fcdLU, 0x68803197LU, 0x80491379LU, 0xd80e0d23LU, 0x1d9657e8LU, 0x45d149b2LU, 0xad186b5cLU, 0xf55f7506LU, -0xfb7e6576LU, 0xa3397b2cLU, 0x4bf059c2LU, 0x13b74798LU, 0xd62f1d53LU, 0x8e680309LU, 0x66a121e7LU, 0x3ee63fbdLU, -0xa1dc953cLU, 0xf99b8b66LU, 0x1152a988LU, 0x4915b7d2LU, 0x8c8ded19LU, 0xd4caf343LU, 0x3c03d1adLU, 0x6444cff7LU, -0x4f77c8e2LU, 0x1730d6b8LU, 0xfff9f456LU, 0xa7beea0cLU, 0x6226b0c7LU, 0x3a61ae9dLU, 0xd2a88c73LU, 0x8aef9229LU, -0x15d538a8LU, 0x4d9226f2LU, 0xa55b041cLU, 0xfd1c1a46LU, 0x3884408dLU, 0x60c35ed7LU, 0x880a7c39LU, 0xd04d6263LU }; - -static const ulong32 rs_tab5[256] = { -0x00000000LU, 0xdbaec658LU, 0xfb11c1b0LU, 0x20bf07e8LU, 0xbb22cf2dLU, 0x608c0975LU, 0x40330e9dLU, 0x9b9dc8c5LU, -0x3b44d35aLU, 0xe0ea1502LU, 0xc05512eaLU, 0x1bfbd4b2LU, 0x80661c77LU, 0x5bc8da2fLU, 0x7b77ddc7LU, 0xa0d91b9fLU, -0x7688ebb4LU, 0xad262decLU, 0x8d992a04LU, 0x5637ec5cLU, 0xcdaa2499LU, 0x1604e2c1LU, 0x36bbe529LU, 0xed152371LU, -0x4dcc38eeLU, 0x9662feb6LU, 0xb6ddf95eLU, 0x6d733f06LU, 0xf6eef7c3LU, 0x2d40319bLU, 0x0dff3673LU, 0xd651f02bLU, -0xec5d9b25LU, 0x37f35d7dLU, 0x174c5a95LU, 0xcce29ccdLU, 0x577f5408LU, 0x8cd19250LU, 0xac6e95b8LU, 0x77c053e0LU, -0xd719487fLU, 0x0cb78e27LU, 0x2c0889cfLU, 0xf7a64f97LU, 0x6c3b8752LU, 0xb795410aLU, 0x972a46e2LU, 0x4c8480baLU, -0x9ad57091LU, 0x417bb6c9LU, 0x61c4b121LU, 0xba6a7779LU, 0x21f7bfbcLU, 0xfa5979e4LU, 0xdae67e0cLU, 0x0148b854LU, -0xa191a3cbLU, 0x7a3f6593LU, 0x5a80627bLU, 0x812ea423LU, 0x1ab36ce6LU, 0xc11daabeLU, 0xe1a2ad56LU, 0x3a0c6b0eLU, -0x95ba7b4aLU, 0x4e14bd12LU, 0x6eabbafaLU, 0xb5057ca2LU, 0x2e98b467LU, 0xf536723fLU, 0xd58975d7LU, 0x0e27b38fLU, -0xaefea810LU, 0x75506e48LU, 0x55ef69a0LU, 0x8e41aff8LU, 0x15dc673dLU, 0xce72a165LU, 0xeecda68dLU, 0x356360d5LU, -0xe33290feLU, 0x389c56a6LU, 0x1823514eLU, 0xc38d9716LU, 0x58105fd3LU, 0x83be998bLU, 0xa3019e63LU, 0x78af583bLU, -0xd87643a4LU, 0x03d885fcLU, 0x23678214LU, 0xf8c9444cLU, 0x63548c89LU, 0xb8fa4ad1LU, 0x98454d39LU, 0x43eb8b61LU, -0x79e7e06fLU, 0xa2492637LU, 0x82f621dfLU, 0x5958e787LU, 0xc2c52f42LU, 0x196be91aLU, 0x39d4eef2LU, 0xe27a28aaLU, -0x42a33335LU, 0x990df56dLU, 0xb9b2f285LU, 0x621c34ddLU, 0xf981fc18LU, 0x222f3a40LU, 0x02903da8LU, 0xd93efbf0LU, -0x0f6f0bdbLU, 0xd4c1cd83LU, 0xf47eca6bLU, 0x2fd00c33LU, 0xb44dc4f6LU, 0x6fe302aeLU, 0x4f5c0546LU, 0x94f2c31eLU, -0x342bd881LU, 0xef851ed9LU, 0xcf3a1931LU, 0x1494df69LU, 0x8f0917acLU, 0x54a7d1f4LU, 0x7418d61cLU, 0xafb61044LU, -0x6739f694LU, 0xbc9730ccLU, 0x9c283724LU, 0x4786f17cLU, 0xdc1b39b9LU, 0x07b5ffe1LU, 0x270af809LU, 0xfca43e51LU, -0x5c7d25ceLU, 0x87d3e396LU, 0xa76ce47eLU, 0x7cc22226LU, 0xe75feae3LU, 0x3cf12cbbLU, 0x1c4e2b53LU, 0xc7e0ed0bLU, -0x11b11d20LU, 0xca1fdb78LU, 0xeaa0dc90LU, 0x310e1ac8LU, 0xaa93d20dLU, 0x713d1455LU, 0x518213bdLU, 0x8a2cd5e5LU, -0x2af5ce7aLU, 0xf15b0822LU, 0xd1e40fcaLU, 0x0a4ac992LU, 0x91d70157LU, 0x4a79c70fLU, 0x6ac6c0e7LU, 0xb16806bfLU, -0x8b646db1LU, 0x50caabe9LU, 0x7075ac01LU, 0xabdb6a59LU, 0x3046a29cLU, 0xebe864c4LU, 0xcb57632cLU, 0x10f9a574LU, -0xb020beebLU, 0x6b8e78b3LU, 0x4b317f5bLU, 0x909fb903LU, 0x0b0271c6LU, 0xd0acb79eLU, 0xf013b076LU, 0x2bbd762eLU, -0xfdec8605LU, 0x2642405dLU, 0x06fd47b5LU, 0xdd5381edLU, 0x46ce4928LU, 0x9d608f70LU, 0xbddf8898LU, 0x66714ec0LU, -0xc6a8555fLU, 0x1d069307LU, 0x3db994efLU, 0xe61752b7LU, 0x7d8a9a72LU, 0xa6245c2aLU, 0x869b5bc2LU, 0x5d359d9aLU, -0xf2838ddeLU, 0x292d4b86LU, 0x09924c6eLU, 0xd23c8a36LU, 0x49a142f3LU, 0x920f84abLU, 0xb2b08343LU, 0x691e451bLU, -0xc9c75e84LU, 0x126998dcLU, 0x32d69f34LU, 0xe978596cLU, 0x72e591a9LU, 0xa94b57f1LU, 0x89f45019LU, 0x525a9641LU, -0x840b666aLU, 0x5fa5a032LU, 0x7f1aa7daLU, 0xa4b46182LU, 0x3f29a947LU, 0xe4876f1fLU, 0xc43868f7LU, 0x1f96aeafLU, -0xbf4fb530LU, 0x64e17368LU, 0x445e7480LU, 0x9ff0b2d8LU, 0x046d7a1dLU, 0xdfc3bc45LU, 0xff7cbbadLU, 0x24d27df5LU, -0x1ede16fbLU, 0xc570d0a3LU, 0xe5cfd74bLU, 0x3e611113LU, 0xa5fcd9d6LU, 0x7e521f8eLU, 0x5eed1866LU, 0x8543de3eLU, -0x259ac5a1LU, 0xfe3403f9LU, 0xde8b0411LU, 0x0525c249LU, 0x9eb80a8cLU, 0x4516ccd4LU, 0x65a9cb3cLU, 0xbe070d64LU, -0x6856fd4fLU, 0xb3f83b17LU, 0x93473cffLU, 0x48e9faa7LU, 0xd3743262LU, 0x08daf43aLU, 0x2865f3d2LU, 0xf3cb358aLU, -0x53122e15LU, 0x88bce84dLU, 0xa803efa5LU, 0x73ad29fdLU, 0xe830e138LU, 0x339e2760LU, 0x13212088LU, 0xc88fe6d0LU }; - -static const ulong32 rs_tab6[256] = { -0x00000000LU, 0x9e3d68dbLU, 0x717ad0fbLU, 0xef47b820LU, 0xe2f4edbbLU, 0x7cc98560LU, 0x938e3d40LU, 0x0db3559bLU, -0x89a5973bLU, 0x1798ffe0LU, 0xf8df47c0LU, 0x66e22f1bLU, 0x6b517a80LU, 0xf56c125bLU, 0x1a2baa7bLU, 0x8416c2a0LU, -0x5f076376LU, 0xc13a0badLU, 0x2e7db38dLU, 0xb040db56LU, 0xbdf38ecdLU, 0x23cee616LU, 0xcc895e36LU, 0x52b436edLU, -0xd6a2f44dLU, 0x489f9c96LU, 0xa7d824b6LU, 0x39e54c6dLU, 0x345619f6LU, 0xaa6b712dLU, 0x452cc90dLU, 0xdb11a1d6LU, -0xbe0ec6ecLU, 0x2033ae37LU, 0xcf741617LU, 0x51497eccLU, 0x5cfa2b57LU, 0xc2c7438cLU, 0x2d80fbacLU, 0xb3bd9377LU, -0x37ab51d7LU, 0xa996390cLU, 0x46d1812cLU, 0xd8ece9f7LU, 0xd55fbc6cLU, 0x4b62d4b7LU, 0xa4256c97LU, 0x3a18044cLU, -0xe109a59aLU, 0x7f34cd41LU, 0x90737561LU, 0x0e4e1dbaLU, 0x03fd4821LU, 0x9dc020faLU, 0x728798daLU, 0xecbaf001LU, -0x68ac32a1LU, 0xf6915a7aLU, 0x19d6e25aLU, 0x87eb8a81LU, 0x8a58df1aLU, 0x1465b7c1LU, 0xfb220fe1LU, 0x651f673aLU, -0x311cc195LU, 0xaf21a94eLU, 0x4066116eLU, 0xde5b79b5LU, 0xd3e82c2eLU, 0x4dd544f5LU, 0xa292fcd5LU, 0x3caf940eLU, -0xb8b956aeLU, 0x26843e75LU, 0xc9c38655LU, 0x57feee8eLU, 0x5a4dbb15LU, 0xc470d3ceLU, 0x2b376beeLU, 0xb50a0335LU, -0x6e1ba2e3LU, 0xf026ca38LU, 0x1f617218LU, 0x815c1ac3LU, 0x8cef4f58LU, 0x12d22783LU, 0xfd959fa3LU, 0x63a8f778LU, -0xe7be35d8LU, 0x79835d03LU, 0x96c4e523LU, 0x08f98df8LU, 0x054ad863LU, 0x9b77b0b8LU, 0x74300898LU, 0xea0d6043LU, -0x8f120779LU, 0x112f6fa2LU, 0xfe68d782LU, 0x6055bf59LU, 0x6de6eac2LU, 0xf3db8219LU, 0x1c9c3a39LU, 0x82a152e2LU, -0x06b79042LU, 0x988af899LU, 0x77cd40b9LU, 0xe9f02862LU, 0xe4437df9LU, 0x7a7e1522LU, 0x9539ad02LU, 0x0b04c5d9LU, -0xd015640fLU, 0x4e280cd4LU, 0xa16fb4f4LU, 0x3f52dc2fLU, 0x32e189b4LU, 0xacdce16fLU, 0x439b594fLU, 0xdda63194LU, -0x59b0f334LU, 0xc78d9befLU, 0x28ca23cfLU, 0xb6f74b14LU, 0xbb441e8fLU, 0x25797654LU, 0xca3ece74LU, 0x5403a6afLU, -0x6238cf67LU, 0xfc05a7bcLU, 0x13421f9cLU, 0x8d7f7747LU, 0x80cc22dcLU, 0x1ef14a07LU, 0xf1b6f227LU, 0x6f8b9afcLU, -0xeb9d585cLU, 0x75a03087LU, 0x9ae788a7LU, 0x04dae07cLU, 0x0969b5e7LU, 0x9754dd3cLU, 0x7813651cLU, 0xe62e0dc7LU, -0x3d3fac11LU, 0xa302c4caLU, 0x4c457ceaLU, 0xd2781431LU, 0xdfcb41aaLU, 0x41f62971LU, 0xaeb19151LU, 0x308cf98aLU, -0xb49a3b2aLU, 0x2aa753f1LU, 0xc5e0ebd1LU, 0x5bdd830aLU, 0x566ed691LU, 0xc853be4aLU, 0x2714066aLU, 0xb9296eb1LU, -0xdc36098bLU, 0x420b6150LU, 0xad4cd970LU, 0x3371b1abLU, 0x3ec2e430LU, 0xa0ff8cebLU, 0x4fb834cbLU, 0xd1855c10LU, -0x55939eb0LU, 0xcbaef66bLU, 0x24e94e4bLU, 0xbad42690LU, 0xb767730bLU, 0x295a1bd0LU, 0xc61da3f0LU, 0x5820cb2bLU, -0x83316afdLU, 0x1d0c0226LU, 0xf24bba06LU, 0x6c76d2ddLU, 0x61c58746LU, 0xfff8ef9dLU, 0x10bf57bdLU, 0x8e823f66LU, -0x0a94fdc6LU, 0x94a9951dLU, 0x7bee2d3dLU, 0xe5d345e6LU, 0xe860107dLU, 0x765d78a6LU, 0x991ac086LU, 0x0727a85dLU, -0x53240ef2LU, 0xcd196629LU, 0x225ede09LU, 0xbc63b6d2LU, 0xb1d0e349LU, 0x2fed8b92LU, 0xc0aa33b2LU, 0x5e975b69LU, -0xda8199c9LU, 0x44bcf112LU, 0xabfb4932LU, 0x35c621e9LU, 0x38757472LU, 0xa6481ca9LU, 0x490fa489LU, 0xd732cc52LU, -0x0c236d84LU, 0x921e055fLU, 0x7d59bd7fLU, 0xe364d5a4LU, 0xeed7803fLU, 0x70eae8e4LU, 0x9fad50c4LU, 0x0190381fLU, -0x8586fabfLU, 0x1bbb9264LU, 0xf4fc2a44LU, 0x6ac1429fLU, 0x67721704LU, 0xf94f7fdfLU, 0x1608c7ffLU, 0x8835af24LU, -0xed2ac81eLU, 0x7317a0c5LU, 0x9c5018e5LU, 0x026d703eLU, 0x0fde25a5LU, 0x91e34d7eLU, 0x7ea4f55eLU, 0xe0999d85LU, -0x648f5f25LU, 0xfab237feLU, 0x15f58fdeLU, 0x8bc8e705LU, 0x867bb29eLU, 0x1846da45LU, 0xf7016265LU, 0x693c0abeLU, -0xb22dab68LU, 0x2c10c3b3LU, 0xc3577b93LU, 0x5d6a1348LU, 0x50d946d3LU, 0xcee42e08LU, 0x21a39628LU, 0xbf9efef3LU, -0x3b883c53LU, 0xa5b55488LU, 0x4af2eca8LU, 0xd4cf8473LU, 0xd97cd1e8LU, 0x4741b933LU, 0xa8060113LU, 0x363b69c8LU }; - -static const ulong32 rs_tab7[256] = { -0x00000000LU, 0x0319e59eLU, 0x06328771LU, 0x052b62efLU, 0x0c6443e2LU, 0x0f7da67cLU, 0x0a56c493LU, 0x094f210dLU, -0x18c88689LU, 0x1bd16317LU, 0x1efa01f8LU, 0x1de3e466LU, 0x14acc56bLU, 0x17b520f5LU, 0x129e421aLU, 0x1187a784LU, -0x30dd415fLU, 0x33c4a4c1LU, 0x36efc62eLU, 0x35f623b0LU, 0x3cb902bdLU, 0x3fa0e723LU, 0x3a8b85ccLU, 0x39926052LU, -0x2815c7d6LU, 0x2b0c2248LU, 0x2e2740a7LU, 0x2d3ea539LU, 0x24718434LU, 0x276861aaLU, 0x22430345LU, 0x215ae6dbLU, -0x60f782beLU, 0x63ee6720LU, 0x66c505cfLU, 0x65dce051LU, 0x6c93c15cLU, 0x6f8a24c2LU, 0x6aa1462dLU, 0x69b8a3b3LU, -0x783f0437LU, 0x7b26e1a9LU, 0x7e0d8346LU, 0x7d1466d8LU, 0x745b47d5LU, 0x7742a24bLU, 0x7269c0a4LU, 0x7170253aLU, -0x502ac3e1LU, 0x5333267fLU, 0x56184490LU, 0x5501a10eLU, 0x5c4e8003LU, 0x5f57659dLU, 0x5a7c0772LU, 0x5965e2ecLU, -0x48e24568LU, 0x4bfba0f6LU, 0x4ed0c219LU, 0x4dc92787LU, 0x4486068aLU, 0x479fe314LU, 0x42b481fbLU, 0x41ad6465LU, -0xc0a34931LU, 0xc3baacafLU, 0xc691ce40LU, 0xc5882bdeLU, 0xccc70ad3LU, 0xcfdeef4dLU, 0xcaf58da2LU, 0xc9ec683cLU, -0xd86bcfb8LU, 0xdb722a26LU, 0xde5948c9LU, 0xdd40ad57LU, 0xd40f8c5aLU, 0xd71669c4LU, 0xd23d0b2bLU, 0xd124eeb5LU, -0xf07e086eLU, 0xf367edf0LU, 0xf64c8f1fLU, 0xf5556a81LU, 0xfc1a4b8cLU, 0xff03ae12LU, 0xfa28ccfdLU, 0xf9312963LU, -0xe8b68ee7LU, 0xebaf6b79LU, 0xee840996LU, 0xed9dec08LU, 0xe4d2cd05LU, 0xe7cb289bLU, 0xe2e04a74LU, 0xe1f9afeaLU, -0xa054cb8fLU, 0xa34d2e11LU, 0xa6664cfeLU, 0xa57fa960LU, 0xac30886dLU, 0xaf296df3LU, 0xaa020f1cLU, 0xa91bea82LU, -0xb89c4d06LU, 0xbb85a898LU, 0xbeaeca77LU, 0xbdb72fe9LU, 0xb4f80ee4LU, 0xb7e1eb7aLU, 0xb2ca8995LU, 0xb1d36c0bLU, -0x90898ad0LU, 0x93906f4eLU, 0x96bb0da1LU, 0x95a2e83fLU, 0x9cedc932LU, 0x9ff42cacLU, 0x9adf4e43LU, 0x99c6abddLU, -0x88410c59LU, 0x8b58e9c7LU, 0x8e738b28LU, 0x8d6a6eb6LU, 0x84254fbbLU, 0x873caa25LU, 0x8217c8caLU, 0x810e2d54LU, -0xcd0b9262LU, 0xce1277fcLU, 0xcb391513LU, 0xc820f08dLU, 0xc16fd180LU, 0xc276341eLU, 0xc75d56f1LU, 0xc444b36fLU, -0xd5c314ebLU, 0xd6daf175LU, 0xd3f1939aLU, 0xd0e87604LU, 0xd9a75709LU, 0xdabeb297LU, 0xdf95d078LU, 0xdc8c35e6LU, -0xfdd6d33dLU, 0xfecf36a3LU, 0xfbe4544cLU, 0xf8fdb1d2LU, 0xf1b290dfLU, 0xf2ab7541LU, 0xf78017aeLU, 0xf499f230LU, -0xe51e55b4LU, 0xe607b02aLU, 0xe32cd2c5LU, 0xe035375bLU, 0xe97a1656LU, 0xea63f3c8LU, 0xef489127LU, 0xec5174b9LU, -0xadfc10dcLU, 0xaee5f542LU, 0xabce97adLU, 0xa8d77233LU, 0xa198533eLU, 0xa281b6a0LU, 0xa7aad44fLU, 0xa4b331d1LU, -0xb5349655LU, 0xb62d73cbLU, 0xb3061124LU, 0xb01ff4baLU, 0xb950d5b7LU, 0xba493029LU, 0xbf6252c6LU, 0xbc7bb758LU, -0x9d215183LU, 0x9e38b41dLU, 0x9b13d6f2LU, 0x980a336cLU, 0x91451261LU, 0x925cf7ffLU, 0x97779510LU, 0x946e708eLU, -0x85e9d70aLU, 0x86f03294LU, 0x83db507bLU, 0x80c2b5e5LU, 0x898d94e8LU, 0x8a947176LU, 0x8fbf1399LU, 0x8ca6f607LU, -0x0da8db53LU, 0x0eb13ecdLU, 0x0b9a5c22LU, 0x0883b9bcLU, 0x01cc98b1LU, 0x02d57d2fLU, 0x07fe1fc0LU, 0x04e7fa5eLU, -0x15605ddaLU, 0x1679b844LU, 0x1352daabLU, 0x104b3f35LU, 0x19041e38LU, 0x1a1dfba6LU, 0x1f369949LU, 0x1c2f7cd7LU, -0x3d759a0cLU, 0x3e6c7f92LU, 0x3b471d7dLU, 0x385ef8e3LU, 0x3111d9eeLU, 0x32083c70LU, 0x37235e9fLU, 0x343abb01LU, -0x25bd1c85LU, 0x26a4f91bLU, 0x238f9bf4LU, 0x20967e6aLU, 0x29d95f67LU, 0x2ac0baf9LU, 0x2febd816LU, 0x2cf23d88LU, -0x6d5f59edLU, 0x6e46bc73LU, 0x6b6dde9cLU, 0x68743b02LU, 0x613b1a0fLU, 0x6222ff91LU, 0x67099d7eLU, 0x641078e0LU, -0x7597df64LU, 0x768e3afaLU, 0x73a55815LU, 0x70bcbd8bLU, 0x79f39c86LU, 0x7aea7918LU, 0x7fc11bf7LU, 0x7cd8fe69LU, -0x5d8218b2LU, 0x5e9bfd2cLU, 0x5bb09fc3LU, 0x58a97a5dLU, 0x51e65b50LU, 0x52ffbeceLU, 0x57d4dc21LU, 0x54cd39bfLU, -0x454a9e3bLU, 0x46537ba5LU, 0x4378194aLU, 0x4061fcd4LU, 0x492eddd9LU, 0x4a373847LU, 0x4f1c5aa8LU, 0x4c05bf36LU }; - -#endif /* LTC_TWOFISH_ALL_TABLES */ - -#endif /* __LTC_TWOFISH_TAB_C__ */ -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/ciphers/xtea.c b/src/libtomcrypt/src/ciphers/xtea.c deleted file mode 100644 index f79302538c..0000000000 --- a/src/libtomcrypt/src/ciphers/xtea.c +++ /dev/null @@ -1,261 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file xtea.c - Implementation of LTC_XTEA, Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_XTEA - -const struct ltc_cipher_descriptor xtea_desc = -{ - "xtea", - 1, - 16, 16, 8, 32, - &xtea_setup, - &xtea_ecb_encrypt, - &xtea_ecb_decrypt, - &xtea_test, - &xtea_done, - &xtea_keysize, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL -}; - -int xtea_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) -{ - ulong32 x, sum, K[4]; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(skey != NULL); - - /* check arguments */ - if (keylen != 16) { - return CRYPT_INVALID_KEYSIZE; - } - - if (num_rounds != 0 && num_rounds != 32) { - return CRYPT_INVALID_ROUNDS; - } - - /* load key */ - LOAD32H(K[0], key+0); - LOAD32H(K[1], key+4); - LOAD32H(K[2], key+8); - LOAD32H(K[3], key+12); - - for (x = sum = 0; x < 32; x++) { - skey->xtea.A[x] = (sum + K[sum&3]) & 0xFFFFFFFFUL; - sum = (sum + 0x9E3779B9UL) & 0xFFFFFFFFUL; - skey->xtea.B[x] = (sum + K[(sum>>11)&3]) & 0xFFFFFFFFUL; - } - -#ifdef LTC_CLEAN_STACK - zeromem(&K, sizeof(K)); -#endif - - return CRYPT_OK; -} - -/** - Encrypts a block of text with LTC_XTEA - @param pt The input plaintext (8 bytes) - @param ct The output ciphertext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int xtea_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) -{ - ulong32 y, z; - int r; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - - LOAD32H(y, &pt[0]); - LOAD32H(z, &pt[4]); - for (r = 0; r < 32; r += 4) { - y = (y + ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r])) & 0xFFFFFFFFUL; - z = (z + ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r])) & 0xFFFFFFFFUL; - - y = (y + ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r+1])) & 0xFFFFFFFFUL; - z = (z + ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r+1])) & 0xFFFFFFFFUL; - - y = (y + ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r+2])) & 0xFFFFFFFFUL; - z = (z + ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r+2])) & 0xFFFFFFFFUL; - - y = (y + ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r+3])) & 0xFFFFFFFFUL; - z = (z + ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r+3])) & 0xFFFFFFFFUL; - } - STORE32H(y, &ct[0]); - STORE32H(z, &ct[4]); - return CRYPT_OK; -} - -/** - Decrypts a block of text with LTC_XTEA - @param ct The input ciphertext (8 bytes) - @param pt The output plaintext (8 bytes) - @param skey The key as scheduled - @return CRYPT_OK if successful -*/ -int xtea_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) -{ - ulong32 y, z; - int r; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(skey != NULL); - - LOAD32H(y, &ct[0]); - LOAD32H(z, &ct[4]); - for (r = 31; r >= 0; r -= 4) { - z = (z - ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r])) & 0xFFFFFFFFUL; - y = (y - ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r])) & 0xFFFFFFFFUL; - - z = (z - ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r-1])) & 0xFFFFFFFFUL; - y = (y - ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r-1])) & 0xFFFFFFFFUL; - - z = (z - ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r-2])) & 0xFFFFFFFFUL; - y = (y - ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r-2])) & 0xFFFFFFFFUL; - - z = (z - ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r-3])) & 0xFFFFFFFFUL; - y = (y - ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r-3])) & 0xFFFFFFFFUL; - } - STORE32H(y, &pt[0]); - STORE32H(z, &pt[4]); - return CRYPT_OK; -} - -/** - Performs a self-test of the LTC_XTEA block cipher - @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled -*/ -int xtea_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - unsigned char key[16], pt[8], ct[8]; - } tests[] = { - { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xde, 0xe9, 0xd4, 0xd8, 0xf7, 0x13, 0x1e, 0xd9 } - }, { - { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0xa5, 0x97, 0xab, 0x41, 0x76, 0x01, 0x4d, 0x72 } - }, { - { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06 }, - { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02 }, - { 0xb1, 0xfd, 0x5d, 0xa9, 0xcc, 0x6d, 0xc9, 0xdc } - }, { - { 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f, - 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, - { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, - { 0x70, 0x4b, 0x31, 0x34, 0x47, 0x44, 0xdf, 0xab } - }, { - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48 }, - { 0x49, 0x7d, 0xf3, 0xd0, 0x72, 0x61, 0x2c, 0xb5 } - }, { - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - { 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41 }, - { 0xe7, 0x8f, 0x2d, 0x13, 0x74, 0x43, 0x41, 0xd8 } - }, { - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - { 0x5a, 0x5b, 0x6e, 0x27, 0x89, 0x48, 0xd7, 0x7f }, - { 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41 } - }, { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48 }, - { 0xa0, 0x39, 0x05, 0x89, 0xf8, 0xb8, 0xef, 0xa5 } - }, { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41 }, - { 0xed, 0x23, 0x37, 0x5a, 0x82, 0x1a, 0x8c, 0x2d } - }, { - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x70, 0xe1, 0x22, 0x5d, 0x6e, 0x4e, 0x76, 0x55 }, - { 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41 } - } - }; - unsigned char tmp[2][8]; - symmetric_key skey; - int i, err, y; - for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { - zeromem(&skey, sizeof(skey)); - if ((err = xtea_setup(tests[i].key, 16, 0, &skey)) != CRYPT_OK) { - return err; - } - xtea_ecb_encrypt(tests[i].pt, tmp[0], &skey); - xtea_ecb_decrypt(tmp[0], tmp[1], &skey); - - if (compare_testvector(tmp[0], 8, tests[i].ct, 8, "XTEA Encrypt", i) != 0 || - compare_testvector(tmp[1], 8, tests[i].pt, 8, "XTEA Decrypt", i) != 0) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ - for (y = 0; y < 8; y++) tmp[0][y] = 0; - for (y = 0; y < 1000; y++) xtea_ecb_encrypt(tmp[0], tmp[0], &skey); - for (y = 0; y < 1000; y++) xtea_ecb_decrypt(tmp[0], tmp[0], &skey); - for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; - } /* for */ - - return CRYPT_OK; - #endif -} - -/** Terminate the context - @param skey The scheduled key -*/ -void xtea_done(symmetric_key *skey) -{ - LTC_UNUSED_PARAM(skey); -} - -/** - Gets suitable key size - @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. - @return CRYPT_OK if the input key size is acceptable. -*/ -int xtea_keysize(int *keysize) -{ - LTC_ARGCHK(keysize != NULL); - if (*keysize < 16) { - return CRYPT_INVALID_KEYSIZE; - } - *keysize = 16; - return CRYPT_OK; -} - - -#endif - - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ccm/ccm_add_aad.c b/src/libtomcrypt/src/encauth/ccm/ccm_add_aad.c deleted file mode 100644 index 163d3d4179..0000000000 --- a/src/libtomcrypt/src/encauth/ccm/ccm_add_aad.c +++ /dev/null @@ -1,63 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#ifdef LTC_CCM_MODE - -/** - Add AAD to the CCM state - @param ccm The CCM state - @param adata The additional authentication data to add to the CCM state - @param adatalen The length of the AAD data. - @return CRYPT_OK on success - */ -int ccm_add_aad(ccm_state *ccm, - const unsigned char *adata, unsigned long adatalen) -{ - unsigned long y; - int err; - - LTC_ARGCHK(ccm != NULL); - LTC_ARGCHK(adata != NULL); - - if (ccm->aadlen < ccm->current_aadlen + adatalen) { - return CRYPT_INVALID_ARG; - } - ccm->current_aadlen += adatalen; - - /* now add the data */ - for (y = 0; y < adatalen; y++) { - if (ccm->x == 16) { - /* full block so let's encrypt it */ - if ((err = cipher_descriptor[ccm->cipher].ecb_encrypt(ccm->PAD, ccm->PAD, &ccm->K)) != CRYPT_OK) { - return err; - } - ccm->x = 0; - } - ccm->PAD[ccm->x++] ^= adata[y]; - } - - /* remainder? */ - if (ccm->aadlen == ccm->current_aadlen) { - if (ccm->x != 0) { - if ((err = cipher_descriptor[ccm->cipher].ecb_encrypt(ccm->PAD, ccm->PAD, &ccm->K)) != CRYPT_OK) { - return err; - } - } - ccm->x = 0; - } - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ccm/ccm_add_nonce.c b/src/libtomcrypt/src/encauth/ccm/ccm_add_nonce.c deleted file mode 100644 index 02a41f71a0..0000000000 --- a/src/libtomcrypt/src/encauth/ccm/ccm_add_nonce.c +++ /dev/null @@ -1,113 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#ifdef LTC_CCM_MODE - -/** - Add nonce data to the CCM state - @param ccm The CCM state - @param nonce The nonce data to add - @param noncelen The length of the nonce - @return CRYPT_OK on success - */ -int ccm_add_nonce(ccm_state *ccm, - const unsigned char *nonce, unsigned long noncelen) -{ - unsigned long x, y, len; - int err; - - LTC_ARGCHK(ccm != NULL); - LTC_ARGCHK(nonce != NULL); - - /* increase L to match the nonce len */ - ccm->noncelen = (noncelen > 13) ? 13 : noncelen; - if ((15 - ccm->noncelen) > ccm->L) { - ccm->L = 15 - ccm->noncelen; - } - - /* decrease noncelen to match L */ - if ((ccm->noncelen + ccm->L) > 15) { - ccm->noncelen = 15 - ccm->L; - } - - /* form B_0 == flags | Nonce N | l(m) */ - x = 0; - ccm->PAD[x++] = (unsigned char)(((ccm->aadlen > 0) ? (1<<6) : 0) | - (((ccm->taglen - 2)>>1)<<3) | - (ccm->L-1)); - - /* nonce */ - for (y = 0; y < (16 - (ccm->L + 1)); y++) { - ccm->PAD[x++] = nonce[y]; - } - - /* store len */ - len = ccm->ptlen; - - /* shift len so the upper bytes of len are the contents of the length */ - for (y = ccm->L; y < 4; y++) { - len <<= 8; - } - - /* store l(m) (only store 32-bits) */ - for (y = 0; ccm->L > 4 && (ccm->L-y)>4; y++) { - ccm->PAD[x++] = 0; - } - for (; y < ccm->L; y++) { - ccm->PAD[x++] = (unsigned char)((len >> 24) & 255); - len <<= 8; - } - - /* encrypt PAD */ - if ((err = cipher_descriptor[ccm->cipher].ecb_encrypt(ccm->PAD, ccm->PAD, &ccm->K)) != CRYPT_OK) { - return err; - } - - /* handle header */ - ccm->x = 0; - if (ccm->aadlen > 0) { - /* store length */ - if (ccm->aadlen < ((1UL<<16) - (1UL<<8))) { - ccm->PAD[ccm->x++] ^= (ccm->aadlen>>8) & 255; - ccm->PAD[ccm->x++] ^= ccm->aadlen & 255; - } else { - ccm->PAD[ccm->x++] ^= 0xFF; - ccm->PAD[ccm->x++] ^= 0xFE; - ccm->PAD[ccm->x++] ^= (ccm->aadlen>>24) & 255; - ccm->PAD[ccm->x++] ^= (ccm->aadlen>>16) & 255; - ccm->PAD[ccm->x++] ^= (ccm->aadlen>>8) & 255; - ccm->PAD[ccm->x++] ^= ccm->aadlen & 255; - } - } - - /* setup the ctr counter */ - x = 0; - - /* flags */ - ccm->ctr[x++] = (unsigned char)ccm->L-1; - - /* nonce */ - for (y = 0; y < (16 - (ccm->L+1)); ++y) { - ccm->ctr[x++] = nonce[y]; - } - /* offset */ - while (x < 16) { - ccm->ctr[x++] = 0; - } - - ccm->CTRlen = 16; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ccm/ccm_done.c b/src/libtomcrypt/src/encauth/ccm/ccm_done.c deleted file mode 100644 index 8d85564852..0000000000 --- a/src/libtomcrypt/src/encauth/ccm/ccm_done.c +++ /dev/null @@ -1,65 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#ifdef LTC_CCM_MODE - -/** - Terminate a CCM stream - @param ccm The CCM state - @param tag [out] The destination for the MAC tag - @param taglen [in/out] The length of the MAC tag - @return CRYPT_OK on success - */ -int ccm_done(ccm_state *ccm, - unsigned char *tag, unsigned long *taglen) -{ - unsigned long x, y; - int err; - - LTC_ARGCHK(ccm != NULL); - - /* Check all data have been processed */ - if (ccm->ptlen != ccm->current_ptlen) { - return CRYPT_ERROR; - } - - LTC_ARGCHK(tag != NULL); - LTC_ARGCHK(taglen != NULL); - - if (ccm->x != 0) { - if ((err = cipher_descriptor[ccm->cipher].ecb_encrypt(ccm->PAD, ccm->PAD, &ccm->K)) != CRYPT_OK) { - return err; - } - } - - /* setup CTR for the TAG (zero the count) */ - for (y = 15; y > 15 - ccm->L; y--) { - ccm->ctr[y] = 0x00; - } - if ((err = cipher_descriptor[ccm->cipher].ecb_encrypt(ccm->ctr, ccm->CTRPAD, &ccm->K)) != CRYPT_OK) { - return err; - } - - cipher_descriptor[ccm->cipher].done(&ccm->K); - - /* store the TAG */ - for (x = 0; x < 16 && x < *taglen; x++) { - tag[x] = ccm->PAD[x] ^ ccm->CTRPAD[x]; - } - *taglen = x; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ccm/ccm_init.c b/src/libtomcrypt/src/encauth/ccm/ccm_init.c deleted file mode 100644 index 84565b2736..0000000000 --- a/src/libtomcrypt/src/encauth/ccm/ccm_init.c +++ /dev/null @@ -1,81 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#ifdef LTC_CCM_MODE - -/** - Initialize a CCM state - @param ccm The CCM state to initialize - @param cipher The index of the cipher to use - @param key The secret key - @param keylen The length of the secret key - @param ptlen The length of the plain/cipher text that will be processed - @param taglen The max length of the MAC tag - @param aadlen The length of the AAD - - @return CRYPT_OK on success - */ -int ccm_init(ccm_state *ccm, int cipher, - const unsigned char *key, int keylen, int ptlen, int taglen, int aadlen) -{ - int err; - - LTC_ARGCHK(ccm != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(taglen != 0); - - XMEMSET(ccm, 0, sizeof(ccm_state)); - - /* check cipher input */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - if (cipher_descriptor[cipher].block_length != 16) { - return CRYPT_INVALID_CIPHER; - } - - /* make sure the taglen is even and <= 16 */ - ccm->taglen = taglen; - ccm->taglen &= ~1; - if (ccm->taglen > 16) { - ccm->taglen = 16; - } - - /* can't use < 4 */ - if (ccm->taglen < 4) { - return CRYPT_INVALID_ARG; - } - - /* schedule key */ - if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &ccm->K)) != CRYPT_OK) { - return err; - } - ccm->cipher = cipher; - - /* let's get the L value */ - ccm->ptlen = ptlen; - ccm->L = 0; - while (ptlen) { - ++ccm->L; - ptlen >>= 8; - } - if (ccm->L <= 1) { - ccm->L = 2; - } - - ccm->aadlen = aadlen; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ccm/ccm_memory.c b/src/libtomcrypt/src/encauth/ccm/ccm_memory.c deleted file mode 100644 index cbdd65ee97..0000000000 --- a/src/libtomcrypt/src/encauth/ccm/ccm_memory.c +++ /dev/null @@ -1,407 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ccm_memory.c - CCM support, process a block of memory, Tom St Denis -*/ - -#ifdef LTC_CCM_MODE - -/** - CCM encrypt/decrypt and produce an authentication tag - - *1 'pt', 'ct' and 'tag' can both be 'in' or 'out', depending on 'direction' - - @param cipher The index of the cipher desired - @param key The secret key to use - @param keylen The length of the secret key (octets) - @param uskey A previously scheduled key [optional can be NULL] - @param nonce The session nonce [use once] - @param noncelen The length of the nonce - @param header The header for the session - @param headerlen The length of the header (octets) - @param pt [*1] The plaintext - @param ptlen The length of the plaintext (octets) - @param ct [*1] The ciphertext - @param tag [*1] The destination tag - @param taglen The max size and resulting size of the authentication tag - @param direction Encrypt or Decrypt direction (0 or 1) - @return CRYPT_OK if successful -*/ -int ccm_memory(int cipher, - const unsigned char *key, unsigned long keylen, - symmetric_key *uskey, - const unsigned char *nonce, unsigned long noncelen, - const unsigned char *header, unsigned long headerlen, - unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - unsigned char *tag, unsigned long *taglen, - int direction) -{ - unsigned char PAD[16], ctr[16], CTRPAD[16], ptTag[16], b, *pt_real; - unsigned char *pt_work = NULL; - symmetric_key *skey; - int err; - unsigned long len, L, x, y, z, CTRlen; -#ifdef LTC_FAST - LTC_FAST_TYPE fastMask = ~(LTC_FAST_TYPE)0; /* initialize fastMask at all zeroes */ -#endif - unsigned char mask = 0xff; /* initialize mask at all zeroes */ - - if (uskey == NULL) { - LTC_ARGCHK(key != NULL); - } - LTC_ARGCHK(nonce != NULL); - if (headerlen > 0) { - LTC_ARGCHK(header != NULL); - } - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(tag != NULL); - LTC_ARGCHK(taglen != NULL); - - pt_real = pt; - -#ifdef LTC_FAST - if (16 % sizeof(LTC_FAST_TYPE)) { - return CRYPT_INVALID_ARG; - } -#endif - - /* check cipher input */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - if (cipher_descriptor[cipher].block_length != 16) { - return CRYPT_INVALID_CIPHER; - } - - /* make sure the taglen is even and <= 16 */ - *taglen &= ~1; - if (*taglen > 16) { - *taglen = 16; - } - - /* can't use < 4 */ - if (*taglen < 4) { - return CRYPT_INVALID_ARG; - } - - /* is there an accelerator? */ - if (cipher_descriptor[cipher].accel_ccm_memory != NULL) { - return cipher_descriptor[cipher].accel_ccm_memory( - key, keylen, - uskey, - nonce, noncelen, - header, headerlen, - pt, ptlen, - ct, - tag, taglen, - direction); - } - - /* let's get the L value */ - len = ptlen; - L = 0; - while (len) { - ++L; - len >>= 8; - } - if (L <= 1) { - L = 2; - } - - /* increase L to match the nonce len */ - noncelen = (noncelen > 13) ? 13 : noncelen; - if ((15 - noncelen) > L) { - L = 15 - noncelen; - } - - /* allocate mem for the symmetric key */ - if (uskey == NULL) { - skey = XMALLOC(sizeof(*skey)); - if (skey == NULL) { - return CRYPT_MEM; - } - - /* initialize the cipher */ - if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, skey)) != CRYPT_OK) { - XFREE(skey); - return err; - } - } else { - skey = uskey; - } - - /* initialize buffer for pt */ - if (direction == CCM_DECRYPT && ptlen > 0) { - pt_work = XMALLOC(ptlen); - if (pt_work == NULL) { - goto error; - } - pt = pt_work; - } - - /* form B_0 == flags | Nonce N | l(m) */ - x = 0; - PAD[x++] = (unsigned char)(((headerlen > 0) ? (1<<6) : 0) | - (((*taglen - 2)>>1)<<3) | - (L-1)); - - /* nonce */ - for (y = 0; y < (16 - (L + 1)); y++) { - PAD[x++] = nonce[y]; - } - - /* store len */ - len = ptlen; - - /* shift len so the upper bytes of len are the contents of the length */ - for (y = L; y < 4; y++) { - len <<= 8; - } - - /* store l(m) (only store 32-bits) */ - for (y = 0; L > 4 && (L-y)>4; y++) { - PAD[x++] = 0; - } - for (; y < L; y++) { - PAD[x++] = (unsigned char)((len >> 24) & 255); - len <<= 8; - } - - /* encrypt PAD */ - if ((err = cipher_descriptor[cipher].ecb_encrypt(PAD, PAD, skey)) != CRYPT_OK) { - goto error; - } - - /* handle header */ - if (headerlen > 0) { - x = 0; - - /* store length */ - if (headerlen < ((1UL<<16) - (1UL<<8))) { - PAD[x++] ^= (headerlen>>8) & 255; - PAD[x++] ^= headerlen & 255; - } else { - PAD[x++] ^= 0xFF; - PAD[x++] ^= 0xFE; - PAD[x++] ^= (headerlen>>24) & 255; - PAD[x++] ^= (headerlen>>16) & 255; - PAD[x++] ^= (headerlen>>8) & 255; - PAD[x++] ^= headerlen & 255; - } - - /* now add the data */ - for (y = 0; y < headerlen; y++) { - if (x == 16) { - /* full block so let's encrypt it */ - if ((err = cipher_descriptor[cipher].ecb_encrypt(PAD, PAD, skey)) != CRYPT_OK) { - goto error; - } - x = 0; - } - PAD[x++] ^= header[y]; - } - - /* remainder */ - if ((err = cipher_descriptor[cipher].ecb_encrypt(PAD, PAD, skey)) != CRYPT_OK) { - goto error; - } - } - - /* setup the ctr counter */ - x = 0; - - /* flags */ - ctr[x++] = (unsigned char)L-1; - - /* nonce */ - for (y = 0; y < (16 - (L+1)); ++y) { - ctr[x++] = nonce[y]; - } - /* offset */ - while (x < 16) { - ctr[x++] = 0; - } - - x = 0; - CTRlen = 16; - - /* now handle the PT */ - if (ptlen > 0) { - y = 0; -#ifdef LTC_FAST - if (ptlen & ~15) { - if (direction == CCM_ENCRYPT) { - for (; y < (ptlen & ~15); y += 16) { - /* increment the ctr? */ - for (z = 15; z > 15-L; z--) { - ctr[z] = (ctr[z] + 1) & 255; - if (ctr[z]) break; - } - if ((err = cipher_descriptor[cipher].ecb_encrypt(ctr, CTRPAD, skey)) != CRYPT_OK) { - goto error; - } - - /* xor the PT against the pad first */ - for (z = 0; z < 16; z += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&PAD[z])) ^= *(LTC_FAST_TYPE_PTR_CAST(&pt[y+z])); - *(LTC_FAST_TYPE_PTR_CAST(&ct[y+z])) = *(LTC_FAST_TYPE_PTR_CAST(&pt[y+z])) ^ *(LTC_FAST_TYPE_PTR_CAST(&CTRPAD[z])); - } - if ((err = cipher_descriptor[cipher].ecb_encrypt(PAD, PAD, skey)) != CRYPT_OK) { - goto error; - } - } - } else { /* direction == CCM_DECRYPT */ - for (; y < (ptlen & ~15); y += 16) { - /* increment the ctr? */ - for (z = 15; z > 15-L; z--) { - ctr[z] = (ctr[z] + 1) & 255; - if (ctr[z]) break; - } - if ((err = cipher_descriptor[cipher].ecb_encrypt(ctr, CTRPAD, skey)) != CRYPT_OK) { - goto error; - } - - /* xor the PT against the pad last */ - for (z = 0; z < 16; z += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&pt[y+z])) = *(LTC_FAST_TYPE_PTR_CAST(&ct[y+z])) ^ *(LTC_FAST_TYPE_PTR_CAST(&CTRPAD[z])); - *(LTC_FAST_TYPE_PTR_CAST(&PAD[z])) ^= *(LTC_FAST_TYPE_PTR_CAST(&pt[y+z])); - } - if ((err = cipher_descriptor[cipher].ecb_encrypt(PAD, PAD, skey)) != CRYPT_OK) { - goto error; - } - } - } - } -#endif - - for (; y < ptlen; y++) { - /* increment the ctr? */ - if (CTRlen == 16) { - for (z = 15; z > 15-L; z--) { - ctr[z] = (ctr[z] + 1) & 255; - if (ctr[z]) break; - } - if ((err = cipher_descriptor[cipher].ecb_encrypt(ctr, CTRPAD, skey)) != CRYPT_OK) { - goto error; - } - CTRlen = 0; - } - - /* if we encrypt we add the bytes to the MAC first */ - if (direction == CCM_ENCRYPT) { - b = pt[y]; - ct[y] = b ^ CTRPAD[CTRlen++]; - } else { - b = ct[y] ^ CTRPAD[CTRlen++]; - pt[y] = b; - } - - if (x == 16) { - if ((err = cipher_descriptor[cipher].ecb_encrypt(PAD, PAD, skey)) != CRYPT_OK) { - goto error; - } - x = 0; - } - PAD[x++] ^= b; - } - - if (x != 0) { - if ((err = cipher_descriptor[cipher].ecb_encrypt(PAD, PAD, skey)) != CRYPT_OK) { - goto error; - } - } - } - - /* setup CTR for the TAG (zero the count) */ - for (y = 15; y > 15 - L; y--) { - ctr[y] = 0x00; - } - if ((err = cipher_descriptor[cipher].ecb_encrypt(ctr, CTRPAD, skey)) != CRYPT_OK) { - goto error; - } - - if (skey != uskey) { - cipher_descriptor[cipher].done(skey); -#ifdef LTC_CLEAN_STACK - zeromem(skey, sizeof(*skey)); -#endif - } - - if (direction == CCM_ENCRYPT) { - /* store the TAG */ - for (x = 0; x < 16 && x < *taglen; x++) { - tag[x] = PAD[x] ^ CTRPAD[x]; - } - *taglen = x; - } else { /* direction == CCM_DECRYPT */ - /* decrypt the tag */ - for (x = 0; x < 16 && x < *taglen; x++) { - ptTag[x] = tag[x] ^ CTRPAD[x]; - } - *taglen = x; - - /* check validity of the decrypted tag against the computed PAD (in constant time) */ - /* HACK: the boolean value of XMEM_NEQ becomes either 0 (CRYPT_OK) or 1 (CRYPT_ERR). - * there should be a better way of setting the correct error code in constant - * time. - */ - err = XMEM_NEQ(ptTag, PAD, *taglen); - - /* Zero the plaintext if the tag was invalid (in constant time) */ - if (ptlen > 0) { - y = 0; - mask *= 1 - err; /* mask = ( err ? 0 : 0xff ) */ -#ifdef LTC_FAST - fastMask *= 1 - err; - if (ptlen & ~15) { - for (; y < (ptlen & ~15); y += 16) { - for (z = 0; z < 16; z += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&pt_real[y+z])) = *(LTC_FAST_TYPE_PTR_CAST(&pt[y+z])) & fastMask; - } - } - } -#endif - for (; y < ptlen; y++) { - pt_real[y] = pt[y] & mask; - } - } - } - -#ifdef LTC_CLEAN_STACK -#ifdef LTC_FAST - fastMask = 0; -#endif - mask = 0; - zeromem(PAD, sizeof(PAD)); - zeromem(CTRPAD, sizeof(CTRPAD)); - if (pt_work != NULL) { - zeromem(pt_work, ptlen); - } -#endif -error: - if (pt_work) { - XFREE(pt_work); - } - if (skey != uskey) { - XFREE(skey); - } - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ccm/ccm_process.c b/src/libtomcrypt/src/encauth/ccm/ccm_process.c deleted file mode 100644 index 90ce706e4b..0000000000 --- a/src/libtomcrypt/src/encauth/ccm/ccm_process.c +++ /dev/null @@ -1,88 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#ifdef LTC_CCM_MODE - -/** - Process plaintext/ciphertext through CCM - @param ccm The CCM state - @param pt The plaintext - @param ptlen The plaintext length (ciphertext length is the same) - @param ct The ciphertext - @param direction Encrypt or Decrypt mode (CCM_ENCRYPT or CCM_DECRYPT) - @return CRYPT_OK on success - */ -int ccm_process(ccm_state *ccm, - unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - int direction) -{ - unsigned char z, b; - unsigned long y; - int err; - - LTC_ARGCHK(ccm != NULL); - - /* Check aad has been correctly added */ - if (ccm->aadlen != ccm->current_aadlen) { - return CRYPT_ERROR; - } - - /* Check we do not process too much data */ - if (ccm->ptlen < ccm->current_ptlen + ptlen) { - return CRYPT_ERROR; - } - ccm->current_ptlen += ptlen; - - /* now handle the PT */ - if (ptlen > 0) { - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - - for (y = 0; y < ptlen; y++) { - /* increment the ctr? */ - if (ccm->CTRlen == 16) { - for (z = 15; z > 15-ccm->L; z--) { - ccm->ctr[z] = (ccm->ctr[z] + 1) & 255; - if (ccm->ctr[z]) break; - } - if ((err = cipher_descriptor[ccm->cipher].ecb_encrypt(ccm->ctr, ccm->CTRPAD, &ccm->K)) != CRYPT_OK) { - return err; - } - ccm->CTRlen = 0; - } - - /* if we encrypt we add the bytes to the MAC first */ - if (direction == CCM_ENCRYPT) { - b = pt[y]; - ct[y] = b ^ ccm->CTRPAD[ccm->CTRlen++]; - } else { - b = ct[y] ^ ccm->CTRPAD[ccm->CTRlen++]; - pt[y] = b; - } - - if (ccm->x == 16) { - if ((err = cipher_descriptor[ccm->cipher].ecb_encrypt(ccm->PAD, ccm->PAD, &ccm->K)) != CRYPT_OK) { - return err; - } - ccm->x = 0; - } - ccm->PAD[ccm->x++] ^= b; - } - } - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ccm/ccm_reset.c b/src/libtomcrypt/src/encauth/ccm/ccm_reset.c deleted file mode 100644 index dfe393a3cf..0000000000 --- a/src/libtomcrypt/src/encauth/ccm/ccm_reset.c +++ /dev/null @@ -1,35 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#ifdef LTC_CCM_MODE - -/** - Reset a CCM state to as if you just called ccm_init(). This saves the initialization time. - @param ccm The CCM state to reset - @return CRYPT_OK on success -*/ -int ccm_reset(ccm_state *ccm) -{ - LTC_ARGCHK(ccm != NULL); - zeromem(ccm->PAD, sizeof(ccm->PAD)); - zeromem(ccm->ctr, sizeof(ccm->ctr)); - zeromem(ccm->CTRPAD, sizeof(ccm->CTRPAD)); - ccm->CTRlen = 0; - ccm->current_ptlen = 0; - ccm->current_aadlen = 0; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ccm/ccm_test.c b/src/libtomcrypt/src/encauth/ccm/ccm_test.c deleted file mode 100644 index a2b8699c9f..0000000000 --- a/src/libtomcrypt/src/encauth/ccm/ccm_test.c +++ /dev/null @@ -1,257 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ccm_test.c - CCM support, process a block of memory, Tom St Denis -*/ - -#ifdef LTC_CCM_MODE - -int ccm_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - unsigned char key[16]; - unsigned char nonce[16]; - int noncelen; - unsigned char header[64]; - int headerlen; - unsigned char pt[64]; - int ptlen; - unsigned char ct[64]; - unsigned char tag[16]; - unsigned long taglen; - } tests[] = { - -/* 13 byte nonce, 8 byte auth, 23 byte pt */ -{ - { 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, - 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF }, - { 0x00, 0x00, 0x00, 0x03, 0x02, 0x01, 0x00, 0xA0, - 0xA1, 0xA2, 0xA3, 0xA4, 0xA5 }, - 13, - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }, - 8, - { 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E }, - 23, - { 0x58, 0x8C, 0x97, 0x9A, 0x61, 0xC6, 0x63, 0xD2, - 0xF0, 0x66, 0xD0, 0xC2, 0xC0, 0xF9, 0x89, 0x80, - 0x6D, 0x5F, 0x6B, 0x61, 0xDA, 0xC3, 0x84 }, - { 0x17, 0xe8, 0xd1, 0x2c, 0xfd, 0xf9, 0x26, 0xe0 }, - 8 -}, - -/* 13 byte nonce, 12 byte header, 19 byte pt */ -{ - { 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, - 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF }, - { 0x00, 0x00, 0x00, 0x06, 0x05, 0x04, 0x03, 0xA0, - 0xA1, 0xA2, 0xA3, 0xA4, 0xA5 }, - 13, - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B }, - 12, - { 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, - 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, - 0x1C, 0x1D, 0x1E }, - 19, - { 0xA2, 0x8C, 0x68, 0x65, 0x93, 0x9A, 0x9A, 0x79, - 0xFA, 0xAA, 0x5C, 0x4C, 0x2A, 0x9D, 0x4A, 0x91, - 0xCD, 0xAC, 0x8C }, - { 0x96, 0xC8, 0x61, 0xB9, 0xC9, 0xE6, 0x1E, 0xF1 }, - 8 -}, - -/* supplied by Brian Gladman */ -{ - { 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f }, - { 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16 }, - 7, - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }, - 8, - { 0x20, 0x21, 0x22, 0x23 }, - 4, - { 0x71, 0x62, 0x01, 0x5b }, - { 0x4d, 0xac, 0x25, 0x5d }, - 4 -}, - -{ - { 0xc9, 0x7c, 0x1f, 0x67, 0xce, 0x37, 0x11, 0x85, - 0x51, 0x4a, 0x8a, 0x19, 0xf2, 0xbd, 0xd5, 0x2f }, - { 0x00, 0x50, 0x30, 0xf1, 0x84, 0x44, 0x08, 0xb5, - 0x03, 0x97, 0x76, 0xe7, 0x0c }, - 13, - { 0x08, 0x40, 0x0f, 0xd2, 0xe1, 0x28, 0xa5, 0x7c, - 0x50, 0x30, 0xf1, 0x84, 0x44, 0x08, 0xab, 0xae, - 0xa5, 0xb8, 0xfc, 0xba, 0x00, 0x00 }, - 22, - { 0xf8, 0xba, 0x1a, 0x55, 0xd0, 0x2f, 0x85, 0xae, - 0x96, 0x7b, 0xb6, 0x2f, 0xb6, 0xcd, 0xa8, 0xeb, - 0x7e, 0x78, 0xa0, 0x50 }, - 20, - { 0xf3, 0xd0, 0xa2, 0xfe, 0x9a, 0x3d, 0xbf, 0x23, - 0x42, 0xa6, 0x43, 0xe4, 0x32, 0x46, 0xe8, 0x0c, - 0x3c, 0x04, 0xd0, 0x19 }, - { 0x78, 0x45, 0xce, 0x0b, 0x16, 0xf9, 0x76, 0x23 }, - 8 -}, - -}; - unsigned long taglen, x, y; - unsigned char buf[64], buf2[64], tag[16], tag2[16], tag3[16], zero[64]; - int err, idx; - symmetric_key skey; - ccm_state ccm; - - zeromem(zero, 64); - - idx = find_cipher("aes"); - if (idx == -1) { - idx = find_cipher("rijndael"); - if (idx == -1) { - return CRYPT_NOP; - } - } - - for (x = 0; x < (sizeof(tests)/sizeof(tests[0])); x++) { - for (y = 0; y < 2; y++) { - taglen = tests[x].taglen; - if (y == 0) { - if ((err = cipher_descriptor[idx].setup(tests[x].key, 16, 0, &skey)) != CRYPT_OK) { - return err; - } - - if ((err = ccm_memory(idx, - tests[x].key, 16, - &skey, - tests[x].nonce, tests[x].noncelen, - tests[x].header, tests[x].headerlen, - (unsigned char*)tests[x].pt, tests[x].ptlen, - buf, - tag, &taglen, 0)) != CRYPT_OK) { - return err; - } - /* run a second time to make sure skey is not touched */ - if ((err = ccm_memory(idx, - tests[x].key, 16, - &skey, - tests[x].nonce, tests[x].noncelen, - tests[x].header, tests[x].headerlen, - (unsigned char*)tests[x].pt, tests[x].ptlen, - buf, - tag, &taglen, 0)) != CRYPT_OK) { - return err; - } - } else { - if ((err = ccm_init(&ccm, idx, tests[x].key, 16, tests[x].ptlen, tests[x].taglen, tests[x].headerlen)) != CRYPT_OK) { - return err; - } - if ((err = ccm_add_nonce(&ccm, tests[x].nonce, tests[x].noncelen)) != CRYPT_OK) { - return err; - } - if ((err = ccm_add_aad(&ccm, tests[x].header, tests[x].headerlen)) != CRYPT_OK) { - return err; - } - if ((err = ccm_process(&ccm, (unsigned char*)tests[x].pt, tests[x].ptlen, buf, CCM_ENCRYPT)) != CRYPT_OK) { - return err; - } - if ((err = ccm_done(&ccm, tag, &taglen)) != CRYPT_OK) { - return err; - } - } - - if (compare_testvector(buf, tests[x].ptlen, tests[x].ct, tests[x].ptlen, "CCM encrypt data", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - if (compare_testvector(tag, taglen, tests[x].tag, tests[x].taglen, "CCM encrypt tag", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - - if (y == 0) { - XMEMCPY(tag3, tests[x].tag, tests[x].taglen); - taglen = tests[x].taglen; - if ((err = ccm_memory(idx, - tests[x].key, 16, - NULL, - tests[x].nonce, tests[x].noncelen, - tests[x].header, tests[x].headerlen, - buf2, tests[x].ptlen, - buf, - tag3, &taglen, 1 )) != CRYPT_OK) { - return err; - } - } else { - if ((err = ccm_init(&ccm, idx, tests[x].key, 16, tests[x].ptlen, tests[x].taglen, tests[x].headerlen)) != CRYPT_OK) { - return err; - } - if ((err = ccm_add_nonce(&ccm, tests[x].nonce, tests[x].noncelen)) != CRYPT_OK) { - return err; - } - if ((err = ccm_add_aad(&ccm, tests[x].header, tests[x].headerlen)) != CRYPT_OK) { - return err; - } - if ((err = ccm_process(&ccm, buf2, tests[x].ptlen, buf, CCM_DECRYPT)) != CRYPT_OK) { - return err; - } - if ((err = ccm_done(&ccm, tag2, &taglen)) != CRYPT_OK) { - return err; - } - } - - - if (compare_testvector(buf2, tests[x].ptlen, tests[x].pt, tests[x].ptlen, "CCM decrypt data", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - if (y == 0) { - /* check if decryption with the wrong tag does not reveal the plaintext */ - XMEMCPY(tag3, tests[x].tag, tests[x].taglen); - tag3[0] ^= 0xff; /* set the tag to the wrong value */ - taglen = tests[x].taglen; - if ((err = ccm_memory(idx, - tests[x].key, 16, - NULL, - tests[x].nonce, tests[x].noncelen, - tests[x].header, tests[x].headerlen, - buf2, tests[x].ptlen, - buf, - tag3, &taglen, 1 )) != CRYPT_ERROR) { - return CRYPT_FAIL_TESTVECTOR; - } - if (compare_testvector(buf2, tests[x].ptlen, zero, tests[x].ptlen, "CCM decrypt wrong tag", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - } else { - if (compare_testvector(tag2, taglen, tests[x].tag, tests[x].taglen, "CCM decrypt tag", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - - if (y == 0) { - cipher_descriptor[idx].done(&skey); - } - } - } - - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_add_aad.c b/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_add_aad.c deleted file mode 100644 index 78e4288659..0000000000 --- a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_add_aad.c +++ /dev/null @@ -1,38 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA20POLY1305_MODE - -/** - Add AAD to the ChaCha20Poly1305 state - @param st The ChaCha20Poly1305 state - @param in The additional authentication data to add to the ChaCha20Poly1305 state - @param inlen The length of the ChaCha20Poly1305 data. - @return CRYPT_OK on success - */ -int chacha20poly1305_add_aad(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen) -{ - int err; - - if (inlen == 0) return CRYPT_OK; /* nothing to do */ - LTC_ARGCHK(st != NULL); - - if (st->aadflg == 0) return CRYPT_ERROR; - if ((err = poly1305_process(&st->poly, in, inlen)) != CRYPT_OK) return err; - st->aadlen += (ulong64)inlen; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_decrypt.c b/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_decrypt.c deleted file mode 100644 index 8f983fb10a..0000000000 --- a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_decrypt.c +++ /dev/null @@ -1,49 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA20POLY1305_MODE - -/** - Decrypt bytes of ciphertext with ChaCha20Poly1305 - @param st The ChaCha20Poly1305 state - @param in The ciphertext - @param inlen The length of the input (octets) - @param out [out] The plaintext (length inlen) - @return CRYPT_OK if successful -*/ -int chacha20poly1305_decrypt(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out) -{ - unsigned char padzero[16] = { 0 }; - unsigned long padlen; - int err; - - if (inlen == 0) return CRYPT_OK; /* nothing to do */ - LTC_ARGCHK(st != NULL); - - if (st->aadflg) { - padlen = 16 - (unsigned long)(st->aadlen % 16); - if (padlen < 16) { - if ((err = poly1305_process(&st->poly, padzero, padlen)) != CRYPT_OK) return err; - } - st->aadflg = 0; /* no more AAD */ - } - if (st->aadflg) st->aadflg = 0; /* no more AAD */ - if ((err = poly1305_process(&st->poly, in, inlen)) != CRYPT_OK) return err; - if ((err = chacha_crypt(&st->chacha, in, inlen, out)) != CRYPT_OK) return err; - st->ctlen += (ulong64)inlen; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_done.c b/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_done.c deleted file mode 100644 index 546db6d551..0000000000 --- a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_done.c +++ /dev/null @@ -1,46 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA20POLY1305_MODE - -/** - Terminate a ChaCha20Poly1305 stream - @param st The ChaCha20Poly1305 state - @param tag [out] The destination for the MAC tag - @param taglen [in/out] The length of the MAC tag - @return CRYPT_OK on success - */ -int chacha20poly1305_done(chacha20poly1305_state *st, unsigned char *tag, unsigned long *taglen) -{ - unsigned char padzero[16] = { 0 }; - unsigned long padlen; - unsigned char buf[16]; - int err; - - LTC_ARGCHK(st != NULL); - - padlen = 16 - (unsigned long)(st->ctlen % 16); - if (padlen < 16) { - if ((err = poly1305_process(&st->poly, padzero, padlen)) != CRYPT_OK) return err; - } - STORE64L(st->aadlen, buf); - STORE64L(st->ctlen, buf + 8); - if ((err = poly1305_process(&st->poly, buf, 16)) != CRYPT_OK) return err; - if ((err = poly1305_done(&st->poly, tag, taglen)) != CRYPT_OK) return err; - if ((err = chacha_done(&st->chacha)) != CRYPT_OK) return err; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_encrypt.c b/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_encrypt.c deleted file mode 100644 index 6b1356c4b2..0000000000 --- a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_encrypt.c +++ /dev/null @@ -1,48 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA20POLY1305_MODE - -/** - Encrypt bytes of ciphertext with ChaCha20Poly1305 - @param st The ChaCha20Poly1305 state - @param in The plaintext - @param inlen The length of the input (octets) - @param out [out] The ciphertext (length inlen) - @return CRYPT_OK if successful -*/ -int chacha20poly1305_encrypt(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out) -{ - unsigned char padzero[16] = { 0 }; - unsigned long padlen; - int err; - - if (inlen == 0) return CRYPT_OK; /* nothing to do */ - LTC_ARGCHK(st != NULL); - - if ((err = chacha_crypt(&st->chacha, in, inlen, out)) != CRYPT_OK) return err; - if (st->aadflg) { - padlen = 16 - (unsigned long)(st->aadlen % 16); - if (padlen < 16) { - if ((err = poly1305_process(&st->poly, padzero, padlen)) != CRYPT_OK) return err; - } - st->aadflg = 0; /* no more AAD */ - } - if ((err = poly1305_process(&st->poly, out, inlen)) != CRYPT_OK) return err; - st->ctlen += (ulong64)inlen; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_init.c b/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_init.c deleted file mode 100644 index 0fb724fb17..0000000000 --- a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_init.c +++ /dev/null @@ -1,30 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA20POLY1305_MODE - -/** - Initialize an ChaCha20Poly1305 context (only the key) - @param st [out] The destination of the ChaCha20Poly1305 state - @param key The secret key - @param keylen The length of the secret key (octets) - @return CRYPT_OK if successful -*/ -int chacha20poly1305_init(chacha20poly1305_state *st, const unsigned char *key, unsigned long keylen) -{ - return chacha_setup(&st->chacha, key, keylen, 20); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_memory.c b/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_memory.c deleted file mode 100644 index c666f12e05..0000000000 --- a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_memory.c +++ /dev/null @@ -1,74 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA20POLY1305_MODE - -/** - Process an entire GCM packet in one call. - @param key The secret key - @param keylen The length of the secret key - @param iv The initialization vector - @param ivlen The length of the initialization vector - @param aad The additional authentication data (header) - @param aadlen The length of the aad - @param in The plaintext - @param inlen The length of the plaintext (ciphertext length is the same) - @param out The ciphertext - @param tag [out] The MAC tag - @param taglen [in/out] The MAC tag length - @param direction Encrypt or Decrypt mode (CHACHA20POLY1305_ENCRYPT or CHACHA20POLY1305_DECRYPT) - @return CRYPT_OK on success - */ -int chacha20poly1305_memory(const unsigned char *key, unsigned long keylen, - const unsigned char *iv, unsigned long ivlen, - const unsigned char *aad, unsigned long aadlen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, - unsigned char *tag, unsigned long *taglen, - int direction) -{ - chacha20poly1305_state st; - int err; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(iv != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(tag != NULL); - - if ((err = chacha20poly1305_init(&st, key, keylen)) != CRYPT_OK) { goto LBL_ERR; } - if ((err = chacha20poly1305_setiv(&st, iv, ivlen)) != CRYPT_OK) { goto LBL_ERR; } - if (aad && aadlen > 0) { - if ((err = chacha20poly1305_add_aad(&st, aad, aadlen)) != CRYPT_OK) { goto LBL_ERR; } - } - if (direction == CHACHA20POLY1305_ENCRYPT) { - if ((err = chacha20poly1305_encrypt(&st, in, inlen, out)) != CRYPT_OK) { goto LBL_ERR; } - } - else if (direction == CHACHA20POLY1305_DECRYPT) { - if ((err = chacha20poly1305_decrypt(&st, in, inlen, out)) != CRYPT_OK) { goto LBL_ERR; } - } - else { - err = CRYPT_INVALID_ARG; - goto LBL_ERR; - } - err = chacha20poly1305_done(&st, tag, taglen); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(&st, sizeof(chacha20poly1305_state)); -#endif - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_setiv.c b/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_setiv.c deleted file mode 100644 index 8722faffdd..0000000000 --- a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_setiv.c +++ /dev/null @@ -1,68 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA20POLY1305_MODE - -/** - Set IV + counter data to the ChaCha20Poly1305 state and reset the context - @param st The ChaCha20Poly1305 state - @param iv The IV data to add - @param ivlen The length of the IV (must be 12 or 8) - @return CRYPT_OK on success - */ -int chacha20poly1305_setiv(chacha20poly1305_state *st, const unsigned char *iv, unsigned long ivlen) -{ - chacha_state tmp_st; - int i, err; - unsigned char polykey[32]; - - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(iv != NULL); - LTC_ARGCHK(ivlen == 12 || ivlen == 8); - - /* set IV for chacha20 */ - if (ivlen == 12) { - /* IV 96bit */ - if ((err = chacha_ivctr32(&st->chacha, iv, ivlen, 1)) != CRYPT_OK) return err; - } - else { - /* IV 64bit */ - if ((err = chacha_ivctr64(&st->chacha, iv, ivlen, 1)) != CRYPT_OK) return err; - } - - /* copy chacha20 key to temporary state */ - for(i = 0; i < 12; i++) tmp_st.input[i] = st->chacha.input[i]; - tmp_st.rounds = 20; - /* set IV */ - if (ivlen == 12) { - /* IV 32bit */ - if ((err = chacha_ivctr32(&tmp_st, iv, ivlen, 0)) != CRYPT_OK) return err; - } - else { - /* IV 64bit */ - if ((err = chacha_ivctr64(&tmp_st, iv, ivlen, 0)) != CRYPT_OK) return err; - } - /* (re)generate new poly1305 key */ - if ((err = chacha_keystream(&tmp_st, polykey, 32)) != CRYPT_OK) return err; - /* (re)initialise poly1305 */ - if ((err = poly1305_init(&st->poly, polykey, 32)) != CRYPT_OK) return err; - st->ctlen = 0; - st->aadlen = 0; - st->aadflg = 1; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_setiv_rfc7905.c b/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_setiv_rfc7905.c deleted file mode 100644 index 02191e7c54..0000000000 --- a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_setiv_rfc7905.c +++ /dev/null @@ -1,40 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA20POLY1305_MODE - -/** - Set IV + counter data (with RFC7905-magic) to the ChaCha20Poly1305 state and reset the context - @param st The ChaCha20Poly1305 state - @param iv The IV data to add - @param ivlen The length of the IV (must be 12 or 8) - @param sequence_number 64bit sequence number which is incorporated into IV as described in RFC7905 - @return CRYPT_OK on success - */ -int chacha20poly1305_setiv_rfc7905(chacha20poly1305_state *st, const unsigned char *iv, unsigned long ivlen, ulong64 sequence_number) -{ - int i; - unsigned char combined_iv[12] = { 0 }; - - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(iv != NULL); - LTC_ARGCHK(ivlen == 12); - - STORE64L(sequence_number, combined_iv + 4); - for (i = 0; i < 12; i++) combined_iv[i] = iv[i] ^ combined_iv[i]; - return chacha20poly1305_setiv(st, combined_iv, 12); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_test.c b/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_test.c deleted file mode 100644 index e0ea5ccd18..0000000000 --- a/src/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_test.c +++ /dev/null @@ -1,134 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA20POLY1305_MODE - -int chacha20poly1305_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - chacha20poly1305_state st1, st2; - unsigned char k[] = { 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f }; - unsigned char i12[] = { 0x07, 0x00, 0x00, 0x00, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47 }; - unsigned char i8[] = { 0x07, 0x00, 0x00, 0x00, 0x40, 0x41, 0x42, 0x43 }; - unsigned char aad[] = { 0x50, 0x51, 0x52, 0x53, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7 }; - unsigned char enc[] = { 0xD3, 0x1A, 0x8D, 0x34, 0x64, 0x8E, 0x60, 0xDB, 0x7B, 0x86, 0xAF, 0xBC, 0x53, 0xEF, 0x7E, 0xC2, - 0xA4, 0xAD, 0xED, 0x51, 0x29, 0x6E, 0x08, 0xFE, 0xA9, 0xE2, 0xB5, 0xA7, 0x36, 0xEE, 0x62, 0xD6, - 0x3D, 0xBE, 0xA4, 0x5E, 0x8C, 0xA9, 0x67, 0x12, 0x82, 0xFA, 0xFB, 0x69, 0xDA, 0x92, 0x72, 0x8B, - 0x1A, 0x71, 0xDE, 0x0A, 0x9E, 0x06, 0x0B, 0x29, 0x05, 0xD6, 0xA5, 0xB6, 0x7E, 0xCD, 0x3B, 0x36, - 0x92, 0xDD, 0xBD, 0x7F, 0x2D, 0x77, 0x8B, 0x8C, 0x98, 0x03, 0xAE, 0xE3, 0x28, 0x09, 0x1B, 0x58, - 0xFA, 0xB3, 0x24, 0xE4, 0xFA, 0xD6, 0x75, 0x94, 0x55, 0x85, 0x80, 0x8B, 0x48, 0x31, 0xD7, 0xBC, - 0x3F, 0xF4, 0xDE, 0xF0, 0x8E, 0x4B, 0x7A, 0x9D, 0xE5, 0x76, 0xD2, 0x65, 0x86, 0xCE, 0xC6, 0x4B, - 0x61, 0x16 }; - unsigned char tag[] = { 0x1A, 0xE1, 0x0B, 0x59, 0x4F, 0x09, 0xE2, 0x6A, 0x7E, 0x90, 0x2E, 0xCB, 0xD0, 0x60, 0x06, 0x91 }; - char m[] = "Ladies and Gentlemen of the class of '99: If I could offer you only one tip for the future, sunscreen would be it."; - unsigned long mlen = strlen(m); - unsigned long len; - unsigned char rfc7905_pt[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }; - unsigned char rfc7905_enc[] = { 0xE4, 0x62, 0x85, 0xB4, 0x29, 0x95, 0x34, 0x96, 0xAB, 0xFB, 0x67, 0xCD, 0xAE, 0xAC, 0x94, 0x1E }; - unsigned char rfc7905_tag[] = { 0x16, 0x2C, 0x92, 0x48, 0x2A, 0xDB, 0xD3, 0x5D, 0x48, 0xBE, 0xC6, 0xFF, 0x10, 0x9C, 0xBA, 0xE4 }; - unsigned char ct[1000], pt[1000], emac[16], dmac[16]; - int err; - - /* encrypt IV 96bit */ - if ((err = chacha20poly1305_init(&st1, k, sizeof(k))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_setiv(&st1, i12, sizeof(i12))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_add_aad(&st1, aad, sizeof(aad))) != CRYPT_OK) return err; - /* encrypt piece by piece */ - if ((err = chacha20poly1305_encrypt(&st1, (unsigned char *)m, 25, ct)) != CRYPT_OK) return err; - if ((err = chacha20poly1305_encrypt(&st1, (unsigned char *)m + 25, 10, ct + 25)) != CRYPT_OK) return err; - if ((err = chacha20poly1305_encrypt(&st1, (unsigned char *)m + 35, 35, ct + 35)) != CRYPT_OK) return err; - if ((err = chacha20poly1305_encrypt(&st1, (unsigned char *)m + 70, 5, ct + 70)) != CRYPT_OK) return err; - if ((err = chacha20poly1305_encrypt(&st1, (unsigned char *)m + 75, 5, ct + 75)) != CRYPT_OK) return err; - if ((err = chacha20poly1305_encrypt(&st1, (unsigned char *)m + 80, mlen - 80, ct + 80)) != CRYPT_OK) return err; - len = sizeof(emac); - if ((err = chacha20poly1305_done(&st1, emac, &len)) != CRYPT_OK) return err; - - if (compare_testvector(ct, mlen, enc, sizeof(enc), "ENC-CT", 1) != 0) return CRYPT_FAIL_TESTVECTOR; - if (compare_testvector(emac, len, tag, sizeof(tag), "ENC-TAG", 2) != 0) return CRYPT_FAIL_TESTVECTOR; - - /* decrypt IV 96bit */ - if ((err = chacha20poly1305_init(&st2, k, sizeof(k))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_setiv(&st2, i12, sizeof(i12))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_add_aad(&st2, aad, sizeof(aad))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_decrypt(&st2, ct, 21, pt)) != CRYPT_OK) return err; - if ((err = chacha20poly1305_decrypt(&st2, ct + 21, mlen - 21, pt + 21)) != CRYPT_OK) return err; - len = sizeof(dmac); - if ((err = chacha20poly1305_done(&st2, dmac, &len)) != CRYPT_OK) return err; - - if (compare_testvector(pt, mlen, m, mlen, "DEC-PT", 3) != 0) return CRYPT_FAIL_TESTVECTOR; - if (compare_testvector(dmac, len, tag, sizeof(tag), "DEC-TAG", 4) != 0) return CRYPT_FAIL_TESTVECTOR; - - /* chacha20poly1305_memory - encrypt */ - len = sizeof(emac); - if ((err = chacha20poly1305_memory(k, sizeof(k), i12, sizeof(i12), aad, sizeof(aad), (unsigned char *)m, - mlen, ct, emac, &len, CHACHA20POLY1305_ENCRYPT)) != CRYPT_OK) return err; - if (compare_testvector(ct, mlen, enc, sizeof(enc), "ENC-CT2", 1) != 0) return CRYPT_FAIL_TESTVECTOR; - if (compare_testvector(emac, len, tag, sizeof(tag), "ENC-TAG2", 2) != 0) return CRYPT_FAIL_TESTVECTOR; - - /* chacha20poly1305_memory - decrypt */ - len = sizeof(dmac); - if ((err = chacha20poly1305_memory(k, sizeof(k), i12, sizeof(i12), aad, sizeof(aad), - ct, mlen, pt, dmac, &len, CHACHA20POLY1305_DECRYPT)) != CRYPT_OK) return err; - if (compare_testvector(pt, mlen, m, mlen, "DEC-PT2", 3) != 0) return CRYPT_FAIL_TESTVECTOR; - if (compare_testvector(dmac, len, tag, sizeof(tag), "DEC-TAG2", 4) != 0) return CRYPT_FAIL_TESTVECTOR; - - /* encrypt - rfc7905 */ - if ((err = chacha20poly1305_init(&st1, k, sizeof(k))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_setiv_rfc7905(&st1, i12, sizeof(i12), CONST64(0x1122334455667788))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_add_aad(&st1, aad, sizeof(aad))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_encrypt(&st1, rfc7905_pt, 16, ct)) != CRYPT_OK) return err; - len = sizeof(emac); - if ((err = chacha20poly1305_done(&st1, emac, &len)) != CRYPT_OK) return err; - - if (compare_testvector(ct, 16, rfc7905_enc, 16, "ENC-CT3", 1) != 0) return CRYPT_FAIL_TESTVECTOR; - if (compare_testvector(emac, len, rfc7905_tag, 16, "ENC-TAG3", 2) != 0) return CRYPT_FAIL_TESTVECTOR; - - /* decrypt - rfc7905 */ - if ((err = chacha20poly1305_init(&st1, k, sizeof(k))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_setiv_rfc7905(&st1, i12, sizeof(i12), CONST64(0x1122334455667788))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_add_aad(&st1, aad, sizeof(aad))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_decrypt(&st1, ct, 16, pt)) != CRYPT_OK) return err; - len = sizeof(dmac); - if ((err = chacha20poly1305_done(&st1, dmac, &len)) != CRYPT_OK) return err; - - if (compare_testvector(pt, 16, rfc7905_pt, 16, "DEC-CT3", 1) != 0) return CRYPT_FAIL_TESTVECTOR; - if (compare_testvector(dmac, len, rfc7905_tag, 16, "DEC-TAG3", 2) != 0) return CRYPT_FAIL_TESTVECTOR; - - /* encrypt IV 64bit */ - if ((err = chacha20poly1305_init(&st1, k, sizeof(k))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_setiv(&st1, i8, sizeof(i8))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_add_aad(&st1, aad, sizeof(aad))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_encrypt(&st1, (unsigned char *)m, mlen, ct)) != CRYPT_OK) return err; - len = sizeof(emac); - if ((err = chacha20poly1305_done(&st1, emac, &len)) != CRYPT_OK) return err; - - /* decrypt IV 64bit */ - if ((err = chacha20poly1305_init(&st2, k, sizeof(k))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_setiv(&st2, i8, sizeof(i8))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_add_aad(&st2, aad, sizeof(aad))) != CRYPT_OK) return err; - if ((err = chacha20poly1305_decrypt(&st2, ct, mlen, pt)) != CRYPT_OK) return err; - len = sizeof(dmac); - if ((err = chacha20poly1305_done(&st2, dmac, &len)) != CRYPT_OK) return err; - - if (compare_testvector(pt, mlen, m, mlen, "DEC-PT4", 1) != 0) return CRYPT_FAIL_TESTVECTOR; - if (compare_testvector(dmac, len, emac, len, "DEC-TAG4", 2) != 0) return CRYPT_FAIL_TESTVECTOR; - - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/eax/eax_addheader.c b/src/libtomcrypt/src/encauth/eax/eax_addheader.c deleted file mode 100644 index 490d2b3fee..0000000000 --- a/src/libtomcrypt/src/encauth/eax/eax_addheader.c +++ /dev/null @@ -1,36 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -/** - @file eax_addheader.c - EAX implementation, add meta-data, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_EAX_MODE - -/** - add header (metadata) to the stream - @param eax The current EAX state - @param header The header (meta-data) data you wish to add to the state - @param length The length of the header data - @return CRYPT_OK if successful -*/ -int eax_addheader(eax_state *eax, const unsigned char *header, - unsigned long length) -{ - LTC_ARGCHK(eax != NULL); - LTC_ARGCHK(header != NULL); - return omac_process(&eax->headeromac, header, length); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/eax/eax_decrypt.c b/src/libtomcrypt/src/encauth/eax/eax_decrypt.c deleted file mode 100644 index 221673da73..0000000000 --- a/src/libtomcrypt/src/encauth/eax/eax_decrypt.c +++ /dev/null @@ -1,48 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file eax_decrypt.c - EAX implementation, decrypt block, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_EAX_MODE - -/** - Decrypt data with the EAX protocol - @param eax The EAX state - @param ct The ciphertext - @param pt [out] The plaintext - @param length The length (octets) of the ciphertext - @return CRYPT_OK if successful -*/ -int eax_decrypt(eax_state *eax, const unsigned char *ct, unsigned char *pt, - unsigned long length) -{ - int err; - - LTC_ARGCHK(eax != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - - /* omac ciphertext */ - if ((err = omac_process(&eax->ctomac, ct, length)) != CRYPT_OK) { - return err; - } - - /* decrypt */ - return ctr_decrypt(ct, pt, length, &eax->ctr); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/eax/eax_decrypt_verify_memory.c b/src/libtomcrypt/src/encauth/eax/eax_decrypt_verify_memory.c deleted file mode 100644 index f85d137d26..0000000000 --- a/src/libtomcrypt/src/encauth/eax/eax_decrypt_verify_memory.c +++ /dev/null @@ -1,109 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file eax_decrypt_verify_memory.c - EAX implementation, decrypt block of memory, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_EAX_MODE - -/** - Decrypt a block of memory and verify the provided MAC tag with EAX - @param cipher The index of the cipher desired - @param key The secret key - @param keylen The length of the key (octets) - @param nonce The nonce data (use once) for the session - @param noncelen The length of the nonce data. - @param header The session header data - @param headerlen The length of the header (octets) - @param ct The ciphertext - @param ctlen The length of the ciphertext (octets) - @param pt [out] The plaintext - @param tag The authentication tag provided by the encoder - @param taglen [in/out] The length of the tag (octets) - @param stat [out] The result of the decryption (1==valid tag, 0==invalid) - @return CRYPT_OK if successful regardless of the resulting tag comparison -*/ -int eax_decrypt_verify_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, unsigned long noncelen, - const unsigned char *header, unsigned long headerlen, - const unsigned char *ct, unsigned long ctlen, - unsigned char *pt, - unsigned char *tag, unsigned long taglen, - int *stat) -{ - int err; - eax_state *eax; - unsigned char *buf; - unsigned long buflen; - - LTC_ARGCHK(stat != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(tag != NULL); - - /* default to zero */ - *stat = 0; - - /* limit taglen */ - taglen = MIN(taglen, MAXBLOCKSIZE); - - /* allocate ram */ - buf = XMALLOC(taglen); - eax = XMALLOC(sizeof(*eax)); - if (eax == NULL || buf == NULL) { - if (eax != NULL) { - XFREE(eax); - } - if (buf != NULL) { - XFREE(buf); - } - return CRYPT_MEM; - } - - if ((err = eax_init(eax, cipher, key, keylen, nonce, noncelen, header, headerlen)) != CRYPT_OK) { - goto LBL_ERR; - } - - if ((err = eax_decrypt(eax, ct, pt, ctlen)) != CRYPT_OK) { - goto LBL_ERR; - } - - buflen = taglen; - if ((err = eax_done(eax, buf, &buflen)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* compare tags */ - if (buflen >= taglen && XMEM_NEQ(buf, tag, taglen) == 0) { - *stat = 1; - } - - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(buf, taglen); - zeromem(eax, sizeof(*eax)); -#endif - - XFREE(eax); - XFREE(buf); - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/eax/eax_done.c b/src/libtomcrypt/src/encauth/eax/eax_done.c deleted file mode 100644 index da8bf54296..0000000000 --- a/src/libtomcrypt/src/encauth/eax/eax_done.c +++ /dev/null @@ -1,92 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file eax_done.c - EAX implementation, terminate session, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_EAX_MODE - -/** - Terminate an EAX session and get the tag. - @param eax The EAX state - @param tag [out] The destination of the authentication tag - @param taglen [in/out] The max length and resulting length of the authentication tag - @return CRYPT_OK if successful -*/ -int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen) -{ - int err; - unsigned char *headermac, *ctmac; - unsigned long x, len; - - LTC_ARGCHK(eax != NULL); - LTC_ARGCHK(tag != NULL); - LTC_ARGCHK(taglen != NULL); - - /* allocate ram */ - headermac = XMALLOC(MAXBLOCKSIZE); - ctmac = XMALLOC(MAXBLOCKSIZE); - - if (headermac == NULL || ctmac == NULL) { - if (headermac != NULL) { - XFREE(headermac); - } - if (ctmac != NULL) { - XFREE(ctmac); - } - return CRYPT_MEM; - } - - /* finish ctomac */ - len = MAXBLOCKSIZE; - if ((err = omac_done(&eax->ctomac, ctmac, &len)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* finish headeromac */ - - /* note we specifically don't reset len so the two lens are minimal */ - - if ((err = omac_done(&eax->headeromac, headermac, &len)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* terminate the CTR chain */ - if ((err = ctr_done(&eax->ctr)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* compute N xor H xor C */ - for (x = 0; x < len && x < *taglen; x++) { - tag[x] = eax->N[x] ^ headermac[x] ^ ctmac[x]; - } - *taglen = x; - - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(ctmac, MAXBLOCKSIZE); - zeromem(headermac, MAXBLOCKSIZE); - zeromem(eax, sizeof(*eax)); -#endif - - XFREE(ctmac); - XFREE(headermac); - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/eax/eax_encrypt.c b/src/libtomcrypt/src/encauth/eax/eax_encrypt.c deleted file mode 100644 index 91cba42013..0000000000 --- a/src/libtomcrypt/src/encauth/eax/eax_encrypt.c +++ /dev/null @@ -1,49 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file eax_encrypt.c - EAX implementation, encrypt block by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_EAX_MODE - -/** - Encrypt with EAX a block of data. - @param eax The EAX state - @param pt The plaintext to encrypt - @param ct [out] The ciphertext as encrypted - @param length The length of the plaintext (octets) - @return CRYPT_OK if successful -*/ -int eax_encrypt(eax_state *eax, const unsigned char *pt, unsigned char *ct, - unsigned long length) -{ - int err; - - LTC_ARGCHK(eax != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - - /* encrypt */ - if ((err = ctr_encrypt(pt, ct, length, &eax->ctr)) != CRYPT_OK) { - return err; - } - - /* omac ciphertext */ - return omac_process(&eax->ctomac, ct, length); -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/eax/eax_encrypt_authenticate_memory.c b/src/libtomcrypt/src/encauth/eax/eax_encrypt_authenticate_memory.c deleted file mode 100644 index eb586db1f5..0000000000 --- a/src/libtomcrypt/src/encauth/eax/eax_encrypt_authenticate_memory.c +++ /dev/null @@ -1,80 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file eax_encrypt_authenticate_memory.c - EAX implementation, encrypt a block of memory, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_EAX_MODE - -/** - EAX encrypt and produce an authentication tag - @param cipher The index of the cipher desired - @param key The secret key to use - @param keylen The length of the secret key (octets) - @param nonce The session nonce [use once] - @param noncelen The length of the nonce - @param header The header for the session - @param headerlen The length of the header (octets) - @param pt The plaintext - @param ptlen The length of the plaintext (octets) - @param ct [out] The ciphertext - @param tag [out] The destination tag - @param taglen [in/out] The max size and resulting size of the authentication tag - @return CRYPT_OK if successful -*/ -int eax_encrypt_authenticate_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, unsigned long noncelen, - const unsigned char *header, unsigned long headerlen, - const unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - unsigned char *tag, unsigned long *taglen) -{ - int err; - eax_state *eax; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(tag != NULL); - LTC_ARGCHK(taglen != NULL); - - eax = XMALLOC(sizeof(*eax)); - - if ((err = eax_init(eax, cipher, key, keylen, nonce, noncelen, header, headerlen)) != CRYPT_OK) { - goto LBL_ERR; - } - - if ((err = eax_encrypt(eax, pt, ct, ptlen)) != CRYPT_OK) { - goto LBL_ERR; - } - - if ((err = eax_done(eax, tag, taglen)) != CRYPT_OK) { - goto LBL_ERR; - } - - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(eax, sizeof(*eax)); -#endif - - XFREE(eax); - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/eax/eax_init.c b/src/libtomcrypt/src/encauth/eax/eax_init.c deleted file mode 100644 index 084eaf3c1c..0000000000 --- a/src/libtomcrypt/src/encauth/eax/eax_init.c +++ /dev/null @@ -1,142 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file eax_init.c - EAX implementation, initialized EAX state, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_EAX_MODE - -/** - Initialized an EAX state - @param eax [out] The EAX state to initialize - @param cipher The index of the desired cipher - @param key The secret key - @param keylen The length of the secret key (octets) - @param nonce The use-once nonce for the session - @param noncelen The length of the nonce (octets) - @param header The header for the EAX state - @param headerlen The header length (octets) - @return CRYPT_OK if successful -*/ -int eax_init(eax_state *eax, int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, unsigned long noncelen, - const unsigned char *header, unsigned long headerlen) -{ - unsigned char *buf; - int err, blklen; - omac_state *omac; - unsigned long len; - - - LTC_ARGCHK(eax != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(nonce != NULL); - if (headerlen > 0) { - LTC_ARGCHK(header != NULL); - } - - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - blklen = cipher_descriptor[cipher].block_length; - - /* allocate ram */ - buf = XMALLOC(MAXBLOCKSIZE); - omac = XMALLOC(sizeof(*omac)); - - if (buf == NULL || omac == NULL) { - if (buf != NULL) { - XFREE(buf); - } - if (omac != NULL) { - XFREE(omac); - } - return CRYPT_MEM; - } - - /* N = LTC_OMAC_0K(nonce) */ - zeromem(buf, MAXBLOCKSIZE); - if ((err = omac_init(omac, cipher, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* omac the [0]_n */ - if ((err = omac_process(omac, buf, blklen)) != CRYPT_OK) { - goto LBL_ERR; - } - /* omac the nonce */ - if ((err = omac_process(omac, nonce, noncelen)) != CRYPT_OK) { - goto LBL_ERR; - } - /* store result */ - len = sizeof(eax->N); - if ((err = omac_done(omac, eax->N, &len)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* H = LTC_OMAC_1K(header) */ - zeromem(buf, MAXBLOCKSIZE); - buf[blklen - 1] = 1; - - if ((err = omac_init(&eax->headeromac, cipher, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* omac the [1]_n */ - if ((err = omac_process(&eax->headeromac, buf, blklen)) != CRYPT_OK) { - goto LBL_ERR; - } - /* omac the header */ - if (headerlen != 0) { - if ((err = omac_process(&eax->headeromac, header, headerlen)) != CRYPT_OK) { - goto LBL_ERR; - } - } - - /* note we don't finish the headeromac, this allows us to add more header later */ - - /* setup the CTR mode */ - if ((err = ctr_start(cipher, eax->N, key, keylen, 0, CTR_COUNTER_BIG_ENDIAN, &eax->ctr)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* setup the LTC_OMAC for the ciphertext */ - if ((err = omac_init(&eax->ctomac, cipher, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* omac [2]_n */ - zeromem(buf, MAXBLOCKSIZE); - buf[blklen-1] = 2; - if ((err = omac_process(&eax->ctomac, buf, blklen)) != CRYPT_OK) { - goto LBL_ERR; - } - - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(buf, MAXBLOCKSIZE); - zeromem(omac, sizeof(*omac)); -#endif - - XFREE(omac); - XFREE(buf); - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/eax/eax_test.c b/src/libtomcrypt/src/encauth/eax/eax_test.c deleted file mode 100644 index 37c8913a53..0000000000 --- a/src/libtomcrypt/src/encauth/eax/eax_test.c +++ /dev/null @@ -1,259 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file eax_test.c - EAX implementation, self-test, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_EAX_MODE - -/** - Test the EAX implementation - @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled -*/ -int eax_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - int keylen, - noncelen, - headerlen, - msglen; - - unsigned char key[MAXBLOCKSIZE], - nonce[MAXBLOCKSIZE], - header[MAXBLOCKSIZE], - plaintext[MAXBLOCKSIZE], - ciphertext[MAXBLOCKSIZE], - tag[MAXBLOCKSIZE]; - } tests[] = { - -/* NULL message */ -{ - 16, 0, 0, 0, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* nonce */ - { 0 }, - /* header */ - { 0 }, - /* plaintext */ - { 0 }, - /* ciphertext */ - { 0 }, - /* tag */ - { 0x9a, 0xd0, 0x7e, 0x7d, 0xbf, 0xf3, 0x01, 0xf5, - 0x05, 0xde, 0x59, 0x6b, 0x96, 0x15, 0xdf, 0xff } -}, - -/* test with nonce */ -{ - 16, 16, 0, 0, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* nonce */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* header */ - { 0 }, - /* plaintext */ - { 0 }, - /* ciphertext */ - { 0 }, - /* tag */ - { 0x1c, 0xe1, 0x0d, 0x3e, 0xff, 0xd4, 0xca, 0xdb, - 0xe2, 0xe4, 0x4b, 0x58, 0xd6, 0x0a, 0xb9, 0xec } -}, - -/* test with header [no nonce] */ -{ - 16, 0, 16, 0, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* nonce */ - { 0 }, - /* header */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* plaintext */ - { 0 }, - /* ciphertext */ - { 0 }, - /* tag */ - { 0x3a, 0x69, 0x8f, 0x7a, 0x27, 0x0e, 0x51, 0xb0, - 0xf6, 0x5b, 0x3d, 0x3e, 0x47, 0x19, 0x3c, 0xff } -}, - -/* test with header + nonce + plaintext */ -{ - 16, 16, 16, 32, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* nonce */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* header */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* plaintext */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, - /* ciphertext */ - { 0x29, 0xd8, 0x78, 0xd1, 0xa3, 0xbe, 0x85, 0x7b, - 0x6f, 0xb8, 0xc8, 0xea, 0x59, 0x50, 0xa7, 0x78, - 0x33, 0x1f, 0xbf, 0x2c, 0xcf, 0x33, 0x98, 0x6f, - 0x35, 0xe8, 0xcf, 0x12, 0x1d, 0xcb, 0x30, 0xbc }, - /* tag */ - { 0x4f, 0xbe, 0x03, 0x38, 0xbe, 0x1c, 0x8c, 0x7e, - 0x1d, 0x7a, 0xe7, 0xe4, 0x5b, 0x92, 0xc5, 0x87 } -}, - -/* test with header + nonce + plaintext [not even sizes!] */ -{ - 16, 15, 14, 29, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* nonce */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e }, - /* header */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d }, - /* plaintext */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1a, 0x1b, 0x1c }, - /* ciphertext */ - { 0xdd, 0x25, 0xc7, 0x54, 0xc5, 0xb1, 0x7c, 0x59, - 0x28, 0xb6, 0x9b, 0x73, 0x15, 0x5f, 0x7b, 0xb8, - 0x88, 0x8f, 0xaf, 0x37, 0x09, 0x1a, 0xd9, 0x2c, - 0x8a, 0x24, 0xdb, 0x86, 0x8b }, - /* tag */ - { 0x0d, 0x1a, 0x14, 0xe5, 0x22, 0x24, 0xff, 0xd2, - 0x3a, 0x05, 0xfa, 0x02, 0xcd, 0xef, 0x52, 0xda } -}, - -/* Vectors from Brian Gladman */ - -{ - 16, 16, 8, 0, - /* key */ - { 0x23, 0x39, 0x52, 0xde, 0xe4, 0xd5, 0xed, 0x5f, - 0x9b, 0x9c, 0x6d, 0x6f, 0xf8, 0x0f, 0xf4, 0x78 }, - /* nonce */ - { 0x62, 0xec, 0x67, 0xf9, 0xc3, 0xa4, 0xa4, 0x07, - 0xfc, 0xb2, 0xa8, 0xc4, 0x90, 0x31, 0xa8, 0xb3 }, - /* header */ - { 0x6b, 0xfb, 0x91, 0x4f, 0xd0, 0x7e, 0xae, 0x6b }, - /* PT */ - { 0x00 }, - /* CT */ - { 0x00 }, - /* tag */ - { 0xe0, 0x37, 0x83, 0x0e, 0x83, 0x89, 0xf2, 0x7b, - 0x02, 0x5a, 0x2d, 0x65, 0x27, 0xe7, 0x9d, 0x01 } -}, - -{ - 16, 16, 8, 2, - /* key */ - { 0x91, 0x94, 0x5d, 0x3f, 0x4d, 0xcb, 0xee, 0x0b, - 0xf4, 0x5e, 0xf5, 0x22, 0x55, 0xf0, 0x95, 0xa4 }, - /* nonce */ - { 0xbe, 0xca, 0xf0, 0x43, 0xb0, 0xa2, 0x3d, 0x84, - 0x31, 0x94, 0xba, 0x97, 0x2c, 0x66, 0xde, 0xbd }, - /* header */ - { 0xfa, 0x3b, 0xfd, 0x48, 0x06, 0xeb, 0x53, 0xfa }, - /* PT */ - { 0xf7, 0xfb }, - /* CT */ - { 0x19, 0xdd }, - /* tag */ - { 0x5c, 0x4c, 0x93, 0x31, 0x04, 0x9d, 0x0b, 0xda, - 0xb0, 0x27, 0x74, 0x08, 0xf6, 0x79, 0x67, 0xe5 } -}, - -{ - 16, 16, 8, 5, - /* key */ - { 0x01, 0xf7, 0x4a, 0xd6, 0x40, 0x77, 0xf2, 0xe7, - 0x04, 0xc0, 0xf6, 0x0a, 0xda, 0x3d, 0xd5, 0x23 }, - /* nonce */ - { 0x70, 0xc3, 0xdb, 0x4f, 0x0d, 0x26, 0x36, 0x84, - 0x00, 0xa1, 0x0e, 0xd0, 0x5d, 0x2b, 0xff, 0x5e }, - /* header */ - { 0x23, 0x4a, 0x34, 0x63, 0xc1, 0x26, 0x4a, 0xc6 }, - /* PT */ - { 0x1a, 0x47, 0xcb, 0x49, 0x33 }, - /* CT */ - { 0xd8, 0x51, 0xd5, 0xba, 0xe0 }, - /* Tag */ - { 0x3a, 0x59, 0xf2, 0x38, 0xa2, 0x3e, 0x39, 0x19, - 0x9d, 0xc9, 0x26, 0x66, 0x26, 0xc4, 0x0f, 0x80 } -} - -}; - int err, x, idx, res; - unsigned long len; - unsigned char outct[MAXBLOCKSIZE], outtag[MAXBLOCKSIZE]; - - /* AES can be under rijndael or aes... try to find it */ - if ((idx = find_cipher("aes")) == -1) { - if ((idx = find_cipher("rijndael")) == -1) { - return CRYPT_NOP; - } - } - - for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - len = sizeof(outtag); - if ((err = eax_encrypt_authenticate_memory(idx, tests[x].key, tests[x].keylen, - tests[x].nonce, tests[x].noncelen, tests[x].header, tests[x].headerlen, - tests[x].plaintext, tests[x].msglen, outct, outtag, &len)) != CRYPT_OK) { - return err; - } - if (compare_testvector(outtag, len, tests[x].tag, len, "EAX Tag", x) || - compare_testvector(outct, tests[x].msglen, tests[x].ciphertext, tests[x].msglen, "EAX CT", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* test decrypt */ - if ((err = eax_decrypt_verify_memory(idx, tests[x].key, tests[x].keylen, - tests[x].nonce, tests[x].noncelen, tests[x].header, tests[x].headerlen, - outct, tests[x].msglen, outct, outtag, len, &res)) != CRYPT_OK) { - return err; - } - if ((res != 1) || compare_testvector(outct, tests[x].msglen, tests[x].plaintext, tests[x].msglen, "EAX", x)) { -#ifdef LTC_TEST_DBG - printf("\n\nEAX: Failure-decrypt - res = %d\n", res); -#endif - return CRYPT_FAIL_TESTVECTOR; - } - - } - return CRYPT_OK; -#endif /* LTC_TEST */ -} - -#endif /* LTC_EAX_MODE */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/gcm/gcm_add_aad.c b/src/libtomcrypt/src/encauth/gcm/gcm_add_aad.c deleted file mode 100644 index f25763cbd5..0000000000 --- a/src/libtomcrypt/src/encauth/gcm/gcm_add_aad.c +++ /dev/null @@ -1,124 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file gcm_add_aad.c - GCM implementation, Add AAD data to the stream, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_GCM_MODE - -/** - Add AAD to the GCM state - @param gcm The GCM state - @param adata The additional authentication data to add to the GCM state - @param adatalen The length of the AAD data. - @return CRYPT_OK on success - */ -int gcm_add_aad(gcm_state *gcm, - const unsigned char *adata, unsigned long adatalen) -{ - unsigned long x; - int err; -#ifdef LTC_FAST - unsigned long y; -#endif - - LTC_ARGCHK(gcm != NULL); - if (adatalen > 0) { - LTC_ARGCHK(adata != NULL); - } - - if (gcm->buflen > 16 || gcm->buflen < 0) { - return CRYPT_INVALID_ARG; - } - - if ((err = cipher_is_valid(gcm->cipher)) != CRYPT_OK) { - return err; - } - - /* in IV mode? */ - if (gcm->mode == LTC_GCM_MODE_IV) { - /* IV length must be > 0 */ - if (gcm->buflen == 0 && gcm->totlen == 0) return CRYPT_ERROR; - /* let's process the IV */ - if (gcm->ivmode || gcm->buflen != 12) { - for (x = 0; x < (unsigned long)gcm->buflen; x++) { - gcm->X[x] ^= gcm->buf[x]; - } - if (gcm->buflen) { - gcm->totlen += gcm->buflen * CONST64(8); - gcm_mult_h(gcm, gcm->X); - } - - /* mix in the length */ - zeromem(gcm->buf, 8); - STORE64H(gcm->totlen, gcm->buf+8); - for (x = 0; x < 16; x++) { - gcm->X[x] ^= gcm->buf[x]; - } - gcm_mult_h(gcm, gcm->X); - - /* copy counter out */ - XMEMCPY(gcm->Y, gcm->X, 16); - zeromem(gcm->X, 16); - } else { - XMEMCPY(gcm->Y, gcm->buf, 12); - gcm->Y[12] = 0; - gcm->Y[13] = 0; - gcm->Y[14] = 0; - gcm->Y[15] = 1; - } - XMEMCPY(gcm->Y_0, gcm->Y, 16); - zeromem(gcm->buf, 16); - gcm->buflen = 0; - gcm->totlen = 0; - gcm->mode = LTC_GCM_MODE_AAD; - } - - if (gcm->mode != LTC_GCM_MODE_AAD || gcm->buflen >= 16) { - return CRYPT_INVALID_ARG; - } - - x = 0; -#ifdef LTC_FAST - if (gcm->buflen == 0) { - for (x = 0; x < (adatalen & ~15); x += 16) { - for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&gcm->X[y])) ^= *(LTC_FAST_TYPE_PTR_CAST(&adata[x + y])); - } - gcm_mult_h(gcm, gcm->X); - gcm->totlen += 128; - } - adata += x; - } -#endif - - - /* start adding AAD data to the state */ - for (; x < adatalen; x++) { - gcm->X[gcm->buflen++] ^= *adata++; - - if (gcm->buflen == 16) { - /* GF mult it */ - gcm_mult_h(gcm, gcm->X); - gcm->buflen = 0; - gcm->totlen += 128; - } - } - - return CRYPT_OK; -} -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/gcm/gcm_add_iv.c b/src/libtomcrypt/src/encauth/gcm/gcm_add_iv.c deleted file mode 100644 index 9da6dff9c8..0000000000 --- a/src/libtomcrypt/src/encauth/gcm/gcm_add_iv.c +++ /dev/null @@ -1,92 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file gcm_add_iv.c - GCM implementation, add IV data to the state, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_GCM_MODE - -/** - Add IV data to the GCM state - @param gcm The GCM state - @param IV The initial value data to add - @param IVlen The length of the IV - @return CRYPT_OK on success - */ -int gcm_add_iv(gcm_state *gcm, - const unsigned char *IV, unsigned long IVlen) -{ - unsigned long x, y; - int err; - - LTC_ARGCHK(gcm != NULL); - if (IVlen > 0) { - LTC_ARGCHK(IV != NULL); - } - - /* must be in IV mode */ - if (gcm->mode != LTC_GCM_MODE_IV) { - return CRYPT_INVALID_ARG; - } - - if (gcm->buflen >= 16 || gcm->buflen < 0) { - return CRYPT_INVALID_ARG; - } - - if ((err = cipher_is_valid(gcm->cipher)) != CRYPT_OK) { - return err; - } - - - /* trip the ivmode flag */ - if (IVlen + gcm->buflen > 12) { - gcm->ivmode |= 1; - } - - x = 0; -#ifdef LTC_FAST - if (gcm->buflen == 0) { - for (x = 0; x < (IVlen & ~15); x += 16) { - for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&gcm->X[y])) ^= *(LTC_FAST_TYPE_PTR_CAST(&IV[x + y])); - } - gcm_mult_h(gcm, gcm->X); - gcm->totlen += 128; - } - IV += x; - } -#endif - - /* start adding IV data to the state */ - for (; x < IVlen; x++) { - gcm->buf[gcm->buflen++] = *IV++; - - if (gcm->buflen == 16) { - /* GF mult it */ - for (y = 0; y < 16; y++) { - gcm->X[y] ^= gcm->buf[y]; - } - gcm_mult_h(gcm, gcm->X); - gcm->buflen = 0; - gcm->totlen += 128; - } - } - - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/gcm/gcm_done.c b/src/libtomcrypt/src/encauth/gcm/gcm_done.c deleted file mode 100644 index a51f5e88c3..0000000000 --- a/src/libtomcrypt/src/encauth/gcm/gcm_done.c +++ /dev/null @@ -1,90 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file gcm_done.c - GCM implementation, Terminate the stream, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_GCM_MODE - -/** - Terminate a GCM stream - @param gcm The GCM state - @param tag [out] The destination for the MAC tag - @param taglen [in/out] The length of the MAC tag - @return CRYPT_OK on success - */ -int gcm_done(gcm_state *gcm, - unsigned char *tag, unsigned long *taglen) -{ - unsigned long x; - int err; - - LTC_ARGCHK(gcm != NULL); - LTC_ARGCHK(tag != NULL); - LTC_ARGCHK(taglen != NULL); - - if (gcm->buflen > 16 || gcm->buflen < 0) { - return CRYPT_INVALID_ARG; - } - - if ((err = cipher_is_valid(gcm->cipher)) != CRYPT_OK) { - return err; - } - - if (gcm->mode == LTC_GCM_MODE_IV) { - /* let's process the IV */ - if ((err = gcm_add_aad(gcm, NULL, 0)) != CRYPT_OK) return err; - } - - if (gcm->mode == LTC_GCM_MODE_AAD) { - /* let's process the AAD */ - if ((err = gcm_process(gcm, NULL, 0, NULL, 0)) != CRYPT_OK) return err; - } - - if (gcm->mode != LTC_GCM_MODE_TEXT) { - return CRYPT_INVALID_ARG; - } - - /* handle remaining ciphertext */ - if (gcm->buflen) { - gcm->pttotlen += gcm->buflen * CONST64(8); - gcm_mult_h(gcm, gcm->X); - } - - /* length */ - STORE64H(gcm->totlen, gcm->buf); - STORE64H(gcm->pttotlen, gcm->buf+8); - for (x = 0; x < 16; x++) { - gcm->X[x] ^= gcm->buf[x]; - } - gcm_mult_h(gcm, gcm->X); - - /* encrypt original counter */ - if ((err = cipher_descriptor[gcm->cipher].ecb_encrypt(gcm->Y_0, gcm->buf, &gcm->K)) != CRYPT_OK) { - return err; - } - for (x = 0; x < 16 && x < *taglen; x++) { - tag[x] = gcm->buf[x] ^ gcm->X[x]; - } - *taglen = x; - - cipher_descriptor[gcm->cipher].done(&gcm->K); - - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/gcm/gcm_gf_mult.c b/src/libtomcrypt/src/encauth/gcm/gcm_gf_mult.c deleted file mode 100644 index fa2f3cdc97..0000000000 --- a/src/libtomcrypt/src/encauth/gcm/gcm_gf_mult.c +++ /dev/null @@ -1,219 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file gcm_gf_mult.c - GCM implementation, do the GF mult, by Tom St Denis -*/ -#include "tomcrypt.h" - -#if defined(LTC_GCM_TABLES) || defined(LTC_LRW_TABLES) || ((defined(LTC_GCM_MODE) || defined(LTC_GCM_MODE)) && defined(LTC_FAST)) - -/* this is x*2^128 mod p(x) ... the results are 16 bytes each stored in a packed format. Since only the - * lower 16 bits are not zero'ed I removed the upper 14 bytes */ -const unsigned char gcm_shift_table[256*2] = { -0x00, 0x00, 0x01, 0xc2, 0x03, 0x84, 0x02, 0x46, 0x07, 0x08, 0x06, 0xca, 0x04, 0x8c, 0x05, 0x4e, -0x0e, 0x10, 0x0f, 0xd2, 0x0d, 0x94, 0x0c, 0x56, 0x09, 0x18, 0x08, 0xda, 0x0a, 0x9c, 0x0b, 0x5e, -0x1c, 0x20, 0x1d, 0xe2, 0x1f, 0xa4, 0x1e, 0x66, 0x1b, 0x28, 0x1a, 0xea, 0x18, 0xac, 0x19, 0x6e, -0x12, 0x30, 0x13, 0xf2, 0x11, 0xb4, 0x10, 0x76, 0x15, 0x38, 0x14, 0xfa, 0x16, 0xbc, 0x17, 0x7e, -0x38, 0x40, 0x39, 0x82, 0x3b, 0xc4, 0x3a, 0x06, 0x3f, 0x48, 0x3e, 0x8a, 0x3c, 0xcc, 0x3d, 0x0e, -0x36, 0x50, 0x37, 0x92, 0x35, 0xd4, 0x34, 0x16, 0x31, 0x58, 0x30, 0x9a, 0x32, 0xdc, 0x33, 0x1e, -0x24, 0x60, 0x25, 0xa2, 0x27, 0xe4, 0x26, 0x26, 0x23, 0x68, 0x22, 0xaa, 0x20, 0xec, 0x21, 0x2e, -0x2a, 0x70, 0x2b, 0xb2, 0x29, 0xf4, 0x28, 0x36, 0x2d, 0x78, 0x2c, 0xba, 0x2e, 0xfc, 0x2f, 0x3e, -0x70, 0x80, 0x71, 0x42, 0x73, 0x04, 0x72, 0xc6, 0x77, 0x88, 0x76, 0x4a, 0x74, 0x0c, 0x75, 0xce, -0x7e, 0x90, 0x7f, 0x52, 0x7d, 0x14, 0x7c, 0xd6, 0x79, 0x98, 0x78, 0x5a, 0x7a, 0x1c, 0x7b, 0xde, -0x6c, 0xa0, 0x6d, 0x62, 0x6f, 0x24, 0x6e, 0xe6, 0x6b, 0xa8, 0x6a, 0x6a, 0x68, 0x2c, 0x69, 0xee, -0x62, 0xb0, 0x63, 0x72, 0x61, 0x34, 0x60, 0xf6, 0x65, 0xb8, 0x64, 0x7a, 0x66, 0x3c, 0x67, 0xfe, -0x48, 0xc0, 0x49, 0x02, 0x4b, 0x44, 0x4a, 0x86, 0x4f, 0xc8, 0x4e, 0x0a, 0x4c, 0x4c, 0x4d, 0x8e, -0x46, 0xd0, 0x47, 0x12, 0x45, 0x54, 0x44, 0x96, 0x41, 0xd8, 0x40, 0x1a, 0x42, 0x5c, 0x43, 0x9e, -0x54, 0xe0, 0x55, 0x22, 0x57, 0x64, 0x56, 0xa6, 0x53, 0xe8, 0x52, 0x2a, 0x50, 0x6c, 0x51, 0xae, -0x5a, 0xf0, 0x5b, 0x32, 0x59, 0x74, 0x58, 0xb6, 0x5d, 0xf8, 0x5c, 0x3a, 0x5e, 0x7c, 0x5f, 0xbe, -0xe1, 0x00, 0xe0, 0xc2, 0xe2, 0x84, 0xe3, 0x46, 0xe6, 0x08, 0xe7, 0xca, 0xe5, 0x8c, 0xe4, 0x4e, -0xef, 0x10, 0xee, 0xd2, 0xec, 0x94, 0xed, 0x56, 0xe8, 0x18, 0xe9, 0xda, 0xeb, 0x9c, 0xea, 0x5e, -0xfd, 0x20, 0xfc, 0xe2, 0xfe, 0xa4, 0xff, 0x66, 0xfa, 0x28, 0xfb, 0xea, 0xf9, 0xac, 0xf8, 0x6e, -0xf3, 0x30, 0xf2, 0xf2, 0xf0, 0xb4, 0xf1, 0x76, 0xf4, 0x38, 0xf5, 0xfa, 0xf7, 0xbc, 0xf6, 0x7e, -0xd9, 0x40, 0xd8, 0x82, 0xda, 0xc4, 0xdb, 0x06, 0xde, 0x48, 0xdf, 0x8a, 0xdd, 0xcc, 0xdc, 0x0e, -0xd7, 0x50, 0xd6, 0x92, 0xd4, 0xd4, 0xd5, 0x16, 0xd0, 0x58, 0xd1, 0x9a, 0xd3, 0xdc, 0xd2, 0x1e, -0xc5, 0x60, 0xc4, 0xa2, 0xc6, 0xe4, 0xc7, 0x26, 0xc2, 0x68, 0xc3, 0xaa, 0xc1, 0xec, 0xc0, 0x2e, -0xcb, 0x70, 0xca, 0xb2, 0xc8, 0xf4, 0xc9, 0x36, 0xcc, 0x78, 0xcd, 0xba, 0xcf, 0xfc, 0xce, 0x3e, -0x91, 0x80, 0x90, 0x42, 0x92, 0x04, 0x93, 0xc6, 0x96, 0x88, 0x97, 0x4a, 0x95, 0x0c, 0x94, 0xce, -0x9f, 0x90, 0x9e, 0x52, 0x9c, 0x14, 0x9d, 0xd6, 0x98, 0x98, 0x99, 0x5a, 0x9b, 0x1c, 0x9a, 0xde, -0x8d, 0xa0, 0x8c, 0x62, 0x8e, 0x24, 0x8f, 0xe6, 0x8a, 0xa8, 0x8b, 0x6a, 0x89, 0x2c, 0x88, 0xee, -0x83, 0xb0, 0x82, 0x72, 0x80, 0x34, 0x81, 0xf6, 0x84, 0xb8, 0x85, 0x7a, 0x87, 0x3c, 0x86, 0xfe, -0xa9, 0xc0, 0xa8, 0x02, 0xaa, 0x44, 0xab, 0x86, 0xae, 0xc8, 0xaf, 0x0a, 0xad, 0x4c, 0xac, 0x8e, -0xa7, 0xd0, 0xa6, 0x12, 0xa4, 0x54, 0xa5, 0x96, 0xa0, 0xd8, 0xa1, 0x1a, 0xa3, 0x5c, 0xa2, 0x9e, -0xb5, 0xe0, 0xb4, 0x22, 0xb6, 0x64, 0xb7, 0xa6, 0xb2, 0xe8, 0xb3, 0x2a, 0xb1, 0x6c, 0xb0, 0xae, -0xbb, 0xf0, 0xba, 0x32, 0xb8, 0x74, 0xb9, 0xb6, 0xbc, 0xf8, 0xbd, 0x3a, 0xbf, 0x7c, 0xbe, 0xbe }; - -#endif - - -#if defined(LTC_GCM_MODE) || defined(LRW_MODE) - -#ifndef LTC_FAST -/* right shift */ -static void _gcm_rightshift(unsigned char *a) -{ - int x; - for (x = 15; x > 0; x--) { - a[x] = (a[x]>>1) | ((a[x-1]<<7)&0x80); - } - a[0] >>= 1; -} - -/* c = b*a */ -static const unsigned char mask[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 }; -static const unsigned char poly[] = { 0x00, 0xE1 }; - - -/** - GCM GF multiplier (internal use only) bitserial - @param a First value - @param b Second value - @param c Destination for a * b - */ -void gcm_gf_mult(const unsigned char *a, const unsigned char *b, unsigned char *c) -{ - unsigned char Z[16], V[16]; - unsigned char x, y, z; - - zeromem(Z, 16); - XMEMCPY(V, a, 16); - for (x = 0; x < 128; x++) { - if (b[x>>3] & mask[x&7]) { - for (y = 0; y < 16; y++) { - Z[y] ^= V[y]; - } - } - z = V[15] & 0x01; - _gcm_rightshift(V); - V[0] ^= poly[z]; - } - XMEMCPY(c, Z, 16); -} - -#else - -/* map normal numbers to "ieee" way ... e.g. bit reversed */ -#define M(x) ( ((x&8)>>3) | ((x&4)>>1) | ((x&2)<<1) | ((x&1)<<3) ) - -#define BPD (sizeof(LTC_FAST_TYPE) * 8) -#define WPV (1 + (16 / sizeof(LTC_FAST_TYPE))) - -/** - GCM GF multiplier (internal use only) word oriented - @param a First value - @param b Second value - @param c Destination for a * b - */ -void gcm_gf_mult(const unsigned char *a, const unsigned char *b, unsigned char *c) -{ - int i, j, k, u; - LTC_FAST_TYPE B[16][WPV], tmp[32 / sizeof(LTC_FAST_TYPE)], pB[16 / sizeof(LTC_FAST_TYPE)], zz, z; - unsigned char pTmp[32]; - - /* create simple tables */ - zeromem(B[0], sizeof(B[0])); - zeromem(B[M(1)], sizeof(B[M(1)])); - -#ifdef ENDIAN_32BITWORD - for (i = 0; i < 4; i++) { - LOAD32H(B[M(1)][i], a + (i<<2)); - LOAD32L(pB[i], b + (i<<2)); - } -#else - for (i = 0; i < 2; i++) { - LOAD64H(B[M(1)][i], a + (i<<3)); - LOAD64L(pB[i], b + (i<<3)); - } -#endif - - /* now create 2, 4 and 8 */ - B[M(2)][0] = B[M(1)][0] >> 1; - B[M(4)][0] = B[M(1)][0] >> 2; - B[M(8)][0] = B[M(1)][0] >> 3; - for (i = 1; i < (int)WPV; i++) { - B[M(2)][i] = (B[M(1)][i-1] << (BPD-1)) | (B[M(1)][i] >> 1); - B[M(4)][i] = (B[M(1)][i-1] << (BPD-2)) | (B[M(1)][i] >> 2); - B[M(8)][i] = (B[M(1)][i-1] << (BPD-3)) | (B[M(1)][i] >> 3); - } - - /* now all values with two bits which are 3, 5, 6, 9, 10, 12 */ - for (i = 0; i < (int)WPV; i++) { - B[M(3)][i] = B[M(1)][i] ^ B[M(2)][i]; - B[M(5)][i] = B[M(1)][i] ^ B[M(4)][i]; - B[M(6)][i] = B[M(2)][i] ^ B[M(4)][i]; - B[M(9)][i] = B[M(1)][i] ^ B[M(8)][i]; - B[M(10)][i] = B[M(2)][i] ^ B[M(8)][i]; - B[M(12)][i] = B[M(8)][i] ^ B[M(4)][i]; - - /* now all 3 bit values and the only 4 bit value: 7, 11, 13, 14, 15 */ - B[M(7)][i] = B[M(3)][i] ^ B[M(4)][i]; - B[M(11)][i] = B[M(3)][i] ^ B[M(8)][i]; - B[M(13)][i] = B[M(1)][i] ^ B[M(12)][i]; - B[M(14)][i] = B[M(6)][i] ^ B[M(8)][i]; - B[M(15)][i] = B[M(7)][i] ^ B[M(8)][i]; - } - - zeromem(tmp, sizeof(tmp)); - - /* compute product four bits of each word at a time */ - /* for each nibble */ - for (i = (BPD/4)-1; i >= 0; i--) { - /* for each word */ - for (j = 0; j < (int)(WPV-1); j++) { - /* grab the 4 bits recall the nibbles are backwards so it's a shift by (i^1)*4 */ - u = (pB[j] >> ((i^1)<<2)) & 15; - - /* add offset by the word count the table looked up value to the result */ - for (k = 0; k < (int)WPV; k++) { - tmp[k+j] ^= B[u][k]; - } - } - /* shift result up by 4 bits */ - if (i != 0) { - for (z = j = 0; j < (int)(32 / sizeof(LTC_FAST_TYPE)); j++) { - zz = tmp[j] << (BPD-4); - tmp[j] = (tmp[j] >> 4) | z; - z = zz; - } - } - } - - /* store product */ -#ifdef ENDIAN_32BITWORD - for (i = 0; i < 8; i++) { - STORE32H(tmp[i], pTmp + (i<<2)); - } -#else - for (i = 0; i < 4; i++) { - STORE64H(tmp[i], pTmp + (i<<3)); - } -#endif - - /* reduce by taking most significant byte and adding the appropriate two byte sequence 16 bytes down */ - for (i = 31; i >= 16; i--) { - pTmp[i-16] ^= gcm_shift_table[((unsigned)pTmp[i]<<1)]; - pTmp[i-15] ^= gcm_shift_table[((unsigned)pTmp[i]<<1)+1]; - } - - for (i = 0; i < 16; i++) { - c[i] = pTmp[i]; - } - -} - -#endif - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/encauth/gcm/gcm_init.c b/src/libtomcrypt/src/encauth/gcm/gcm_init.c deleted file mode 100644 index 39bd1d4f6a..0000000000 --- a/src/libtomcrypt/src/encauth/gcm/gcm_init.c +++ /dev/null @@ -1,105 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file gcm_init.c - GCM implementation, initialize state, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_GCM_MODE - -/** - Initialize a GCM state - @param gcm The GCM state to initialize - @param cipher The index of the cipher to use - @param key The secret key - @param keylen The length of the secret key - @return CRYPT_OK on success - */ -int gcm_init(gcm_state *gcm, int cipher, - const unsigned char *key, int keylen) -{ - int err; - unsigned char B[16]; -#ifdef LTC_GCM_TABLES - int x, y, z, t; -#endif - - LTC_ARGCHK(gcm != NULL); - LTC_ARGCHK(key != NULL); - -#ifdef LTC_FAST - if (16 % sizeof(LTC_FAST_TYPE)) { - return CRYPT_INVALID_ARG; - } -#endif - - /* is cipher valid? */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - if (cipher_descriptor[cipher].block_length != 16) { - return CRYPT_INVALID_CIPHER; - } - - /* schedule key */ - if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &gcm->K)) != CRYPT_OK) { - return err; - } - - /* H = E(0) */ - zeromem(B, 16); - if ((err = cipher_descriptor[cipher].ecb_encrypt(B, gcm->H, &gcm->K)) != CRYPT_OK) { - return err; - } - - /* setup state */ - zeromem(gcm->buf, sizeof(gcm->buf)); - zeromem(gcm->X, sizeof(gcm->X)); - gcm->cipher = cipher; - gcm->mode = LTC_GCM_MODE_IV; - gcm->ivmode = 0; - gcm->buflen = 0; - gcm->totlen = 0; - gcm->pttotlen = 0; - -#ifdef LTC_GCM_TABLES - /* setup tables */ - - /* generate the first table as it has no shifting (from which we make the other tables) */ - zeromem(B, 16); - for (y = 0; y < 256; y++) { - B[0] = y; - gcm_gf_mult(gcm->H, B, &gcm->PC[0][y][0]); - } - - /* now generate the rest of the tables based the previous table */ - for (x = 1; x < 16; x++) { - for (y = 0; y < 256; y++) { - /* now shift it right by 8 bits */ - t = gcm->PC[x-1][y][15]; - for (z = 15; z > 0; z--) { - gcm->PC[x][y][z] = gcm->PC[x-1][y][z-1]; - } - gcm->PC[x][y][0] = gcm_shift_table[t<<1]; - gcm->PC[x][y][1] ^= gcm_shift_table[(t<<1)+1]; - } - } - -#endif - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/gcm/gcm_memory.c b/src/libtomcrypt/src/encauth/gcm/gcm_memory.c deleted file mode 100644 index e67d7c6165..0000000000 --- a/src/libtomcrypt/src/encauth/gcm/gcm_memory.c +++ /dev/null @@ -1,106 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file gcm_memory.c - GCM implementation, process a packet, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_GCM_MODE - -/** - Process an entire GCM packet in one call. - @param cipher Index of cipher to use - @param key The secret key - @param keylen The length of the secret key - @param IV The initialization vector - @param IVlen The length of the initialization vector - @param adata The additional authentication data (header) - @param adatalen The length of the adata - @param pt The plaintext - @param ptlen The length of the plaintext (ciphertext length is the same) - @param ct The ciphertext - @param tag [out] The MAC tag - @param taglen [in/out] The MAC tag length - @param direction Encrypt or Decrypt mode (GCM_ENCRYPT or GCM_DECRYPT) - @return CRYPT_OK on success - */ -int gcm_memory( int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *IV, unsigned long IVlen, - const unsigned char *adata, unsigned long adatalen, - unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - unsigned char *tag, unsigned long *taglen, - int direction) -{ - void *orig; - gcm_state *gcm; - int err; - - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - - if (cipher_descriptor[cipher].accel_gcm_memory != NULL) { - return cipher_descriptor[cipher].accel_gcm_memory - (key, keylen, - IV, IVlen, - adata, adatalen, - pt, ptlen, - ct, - tag, taglen, - direction); - } - - - -#ifndef LTC_GCM_TABLES_SSE2 - orig = gcm = XMALLOC(sizeof(*gcm)); -#else - orig = gcm = XMALLOC(sizeof(*gcm) + 16); -#endif - if (gcm == NULL) { - return CRYPT_MEM; - } - - /* Force GCM to be on a multiple of 16 so we can use 128-bit aligned operations - * note that we only modify gcm and keep orig intact. This code is not portable - * but again it's only for SSE2 anyways, so who cares? - */ -#ifdef LTC_GCM_TABLES_SSE2 - if ((unsigned long)gcm & 15) { - gcm = (gcm_state *)((unsigned long)gcm + (16 - ((unsigned long)gcm & 15))); - } -#endif - - if ((err = gcm_init(gcm, cipher, key, keylen)) != CRYPT_OK) { - goto LTC_ERR; - } - if ((err = gcm_add_iv(gcm, IV, IVlen)) != CRYPT_OK) { - goto LTC_ERR; - } - if ((err = gcm_add_aad(gcm, adata, adatalen)) != CRYPT_OK) { - goto LTC_ERR; - } - if ((err = gcm_process(gcm, pt, ptlen, ct, direction)) != CRYPT_OK) { - goto LTC_ERR; - } - err = gcm_done(gcm, tag, taglen); -LTC_ERR: - XFREE(orig); - return err; -} -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/gcm/gcm_mult_h.c b/src/libtomcrypt/src/encauth/gcm/gcm_mult_h.c deleted file mode 100644 index 384ac60209..0000000000 --- a/src/libtomcrypt/src/encauth/gcm/gcm_mult_h.c +++ /dev/null @@ -1,57 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file gcm_mult_h.c - GCM implementation, do the GF mult, by Tom St Denis -*/ -#include "tomcrypt.h" - -#if defined(LTC_GCM_MODE) -/** - GCM multiply by H - @param gcm The GCM state which holds the H value - @param I The value to multiply H by - */ -void gcm_mult_h(gcm_state *gcm, unsigned char *I) -{ - unsigned char T[16]; -#ifdef LTC_GCM_TABLES - int x; -#ifdef LTC_GCM_TABLES_SSE2 - asm("movdqa (%0),%%xmm0"::"r"(&gcm->PC[0][I[0]][0])); - for (x = 1; x < 16; x++) { - asm("pxor (%0),%%xmm0"::"r"(&gcm->PC[x][I[x]][0])); - } - asm("movdqa %%xmm0,(%0)"::"r"(&T)); -#else - int y; - XMEMCPY(T, &gcm->PC[0][I[0]][0], 16); - for (x = 1; x < 16; x++) { -#ifdef LTC_FAST - for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(T + y)) ^= *(LTC_FAST_TYPE_PTR_CAST(&gcm->PC[x][I[x]][y])); - } -#else - for (y = 0; y < 16; y++) { - T[y] ^= gcm->PC[x][I[x]][y]; - } -#endif /* LTC_FAST */ - } -#endif /* LTC_GCM_TABLES_SSE2 */ -#else - gcm_gf_mult(gcm->H, I, T); -#endif - XMEMCPY(I, T, 16); -} -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/gcm/gcm_process.c b/src/libtomcrypt/src/encauth/gcm/gcm_process.c deleted file mode 100644 index a9b46aa80b..0000000000 --- a/src/libtomcrypt/src/encauth/gcm/gcm_process.c +++ /dev/null @@ -1,160 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file gcm_process.c - GCM implementation, process message data, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_GCM_MODE - -/** - Process plaintext/ciphertext through GCM - @param gcm The GCM state - @param pt The plaintext - @param ptlen The plaintext length (ciphertext length is the same) - @param ct The ciphertext - @param direction Encrypt or Decrypt mode (GCM_ENCRYPT or GCM_DECRYPT) - @return CRYPT_OK on success - */ -int gcm_process(gcm_state *gcm, - unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - int direction) -{ - unsigned long x; - int y, err; - unsigned char b; - - LTC_ARGCHK(gcm != NULL); - if (ptlen > 0) { - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - } - - if (gcm->buflen > 16 || gcm->buflen < 0) { - return CRYPT_INVALID_ARG; - } - - if ((err = cipher_is_valid(gcm->cipher)) != CRYPT_OK) { - return err; - } - - /* 0xFFFFFFFE0 = ((2^39)-256)/8 */ - if (gcm->pttotlen / 8 + (ulong64)gcm->buflen + (ulong64)ptlen >= CONST64(0xFFFFFFFE0)) { - return CRYPT_INVALID_ARG; - } - - if (gcm->mode == LTC_GCM_MODE_IV) { - /* let's process the IV */ - if ((err = gcm_add_aad(gcm, NULL, 0)) != CRYPT_OK) return err; - } - - /* in AAD mode? */ - if (gcm->mode == LTC_GCM_MODE_AAD) { - /* let's process the AAD */ - if (gcm->buflen) { - gcm->totlen += gcm->buflen * CONST64(8); - gcm_mult_h(gcm, gcm->X); - } - - /* increment counter */ - for (y = 15; y >= 12; y--) { - if (++gcm->Y[y] & 255) { break; } - } - /* encrypt the counter */ - if ((err = cipher_descriptor[gcm->cipher].ecb_encrypt(gcm->Y, gcm->buf, &gcm->K)) != CRYPT_OK) { - return err; - } - - gcm->buflen = 0; - gcm->mode = LTC_GCM_MODE_TEXT; - } - - if (gcm->mode != LTC_GCM_MODE_TEXT) { - return CRYPT_INVALID_ARG; - } - - x = 0; -#ifdef LTC_FAST - if (gcm->buflen == 0) { - if (direction == GCM_ENCRYPT) { - for (x = 0; x < (ptlen & ~15); x += 16) { - /* ctr encrypt */ - for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&ct[x + y])) = *(LTC_FAST_TYPE_PTR_CAST(&pt[x+y])) ^ *(LTC_FAST_TYPE_PTR_CAST(&gcm->buf[y])); - *(LTC_FAST_TYPE_PTR_CAST(&gcm->X[y])) ^= *(LTC_FAST_TYPE_PTR_CAST(&ct[x+y])); - } - /* GMAC it */ - gcm->pttotlen += 128; - gcm_mult_h(gcm, gcm->X); - /* increment counter */ - for (y = 15; y >= 12; y--) { - if (++gcm->Y[y] & 255) { break; } - } - if ((err = cipher_descriptor[gcm->cipher].ecb_encrypt(gcm->Y, gcm->buf, &gcm->K)) != CRYPT_OK) { - return err; - } - } - } else { - for (x = 0; x < (ptlen & ~15); x += 16) { - /* ctr encrypt */ - for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&gcm->X[y])) ^= *(LTC_FAST_TYPE_PTR_CAST(&ct[x+y])); - *(LTC_FAST_TYPE_PTR_CAST(&pt[x + y])) = *(LTC_FAST_TYPE_PTR_CAST(&ct[x+y])) ^ *(LTC_FAST_TYPE_PTR_CAST(&gcm->buf[y])); - } - /* GMAC it */ - gcm->pttotlen += 128; - gcm_mult_h(gcm, gcm->X); - /* increment counter */ - for (y = 15; y >= 12; y--) { - if (++gcm->Y[y] & 255) { break; } - } - if ((err = cipher_descriptor[gcm->cipher].ecb_encrypt(gcm->Y, gcm->buf, &gcm->K)) != CRYPT_OK) { - return err; - } - } - } - } -#endif - - /* process text */ - for (; x < ptlen; x++) { - if (gcm->buflen == 16) { - gcm->pttotlen += 128; - gcm_mult_h(gcm, gcm->X); - - /* increment counter */ - for (y = 15; y >= 12; y--) { - if (++gcm->Y[y] & 255) { break; } - } - if ((err = cipher_descriptor[gcm->cipher].ecb_encrypt(gcm->Y, gcm->buf, &gcm->K)) != CRYPT_OK) { - return err; - } - gcm->buflen = 0; - } - - if (direction == GCM_ENCRYPT) { - b = ct[x] = pt[x] ^ gcm->buf[gcm->buflen]; - } else { - b = ct[x]; - pt[x] = ct[x] ^ gcm->buf[gcm->buflen]; - } - gcm->X[gcm->buflen++] ^= b; - } - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/gcm/gcm_reset.c b/src/libtomcrypt/src/encauth/gcm/gcm_reset.c deleted file mode 100644 index 4de578fc75..0000000000 --- a/src/libtomcrypt/src/encauth/gcm/gcm_reset.c +++ /dev/null @@ -1,42 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file gcm_reset.c - GCM implementation, reset a used state so it can accept IV data, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_GCM_MODE - -/** - Reset a GCM state to as if you just called gcm_init(). This saves the initialization time. - @param gcm The GCM state to reset - @return CRYPT_OK on success -*/ -int gcm_reset(gcm_state *gcm) -{ - LTC_ARGCHK(gcm != NULL); - - zeromem(gcm->buf, sizeof(gcm->buf)); - zeromem(gcm->X, sizeof(gcm->X)); - gcm->mode = LTC_GCM_MODE_IV; - gcm->ivmode = 0; - gcm->buflen = 0; - gcm->totlen = 0; - gcm->pttotlen = 0; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/gcm/gcm_test.c b/src/libtomcrypt/src/encauth/gcm/gcm_test.c deleted file mode 100644 index 20563ff52a..0000000000 --- a/src/libtomcrypt/src/encauth/gcm/gcm_test.c +++ /dev/null @@ -1,392 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file gcm_test.c - GCM implementation, testing, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_GCM_MODE - -/** - Test the GCM code - @return CRYPT_OK on success - */ -int gcm_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - unsigned char K[32]; - int keylen; - unsigned char P[128]; - unsigned long ptlen; - unsigned char A[128]; - unsigned long alen; - unsigned char IV[128]; - unsigned long IVlen; - unsigned char C[128]; - unsigned char T[16]; - } tests[] = { - -/* test case #1 */ -{ - /* key */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - 16, - - /* plaintext */ - { 0 }, - 0, - - /* AAD data */ - { 0 }, - 0, - - /* IV */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 }, - 12, - - /* ciphertext */ - { 0 }, - - /* tag */ - { 0x58, 0xe2, 0xfc, 0xce, 0xfa, 0x7e, 0x30, 0x61, - 0x36, 0x7f, 0x1d, 0x57, 0xa4, 0xe7, 0x45, 0x5a } -}, - -/* test case #2 */ -{ - /* key */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - 16, - - /* PT */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - 16, - - /* ADATA */ - { 0 }, - 0, - - /* IV */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 }, - 12, - - /* CT */ - { 0x03, 0x88, 0xda, 0xce, 0x60, 0xb6, 0xa3, 0x92, - 0xf3, 0x28, 0xc2, 0xb9, 0x71, 0xb2, 0xfe, 0x78 }, - - /* TAG */ - { 0xab, 0x6e, 0x47, 0xd4, 0x2c, 0xec, 0x13, 0xbd, - 0xf5, 0x3a, 0x67, 0xb2, 0x12, 0x57, 0xbd, 0xdf } -}, - -/* test case #3 */ -{ - /* key */ - { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, - 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, }, - 16, - - /* PT */ - { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, - 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, - 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, - 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, - 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, - 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, - 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, - 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55, }, - 64, - - /* ADATA */ - { 0 }, - 0, - - /* IV */ - { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, - 0xde, 0xca, 0xf8, 0x88, }, - 12, - - /* CT */ - { 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24, - 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c, - 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0, - 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e, - 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c, - 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05, - 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97, - 0x3d, 0x58, 0xe0, 0x91, 0x47, 0x3f, 0x59, 0x85, }, - - /* TAG */ - { 0x4d, 0x5c, 0x2a, 0xf3, 0x27, 0xcd, 0x64, 0xa6, - 0x2c, 0xf3, 0x5a, 0xbd, 0x2b, 0xa6, 0xfa, 0xb4, } -}, - -/* test case #4 */ -{ - /* key */ - { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, - 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, }, - 16, - - /* PT */ - { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, - 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, - 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, - 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, - 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, - 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, - 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, - 0xba, 0x63, 0x7b, 0x39, }, - 60, - - /* ADATA */ - { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, - 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, - 0xab, 0xad, 0xda, 0xd2, }, - 20, - - /* IV */ - { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, - 0xde, 0xca, 0xf8, 0x88, }, - 12, - - /* CT */ - { 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24, - 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c, - 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0, - 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e, - 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c, - 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05, - 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97, - 0x3d, 0x58, 0xe0, 0x91, }, - - /* TAG */ - { 0x5b, 0xc9, 0x4f, 0xbc, 0x32, 0x21, 0xa5, 0xdb, - 0x94, 0xfa, 0xe9, 0x5a, 0xe7, 0x12, 0x1a, 0x47, } - -}, - -/* test case #5 */ -{ - /* key */ - { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, - 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, }, - 16, - - /* PT */ - { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, - 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, - 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, - 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, - 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, - 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, - 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, - 0xba, 0x63, 0x7b, 0x39, }, - 60, - - /* ADATA */ - { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, - 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, - 0xab, 0xad, 0xda, 0xd2, }, - 20, - - /* IV */ - { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, }, - 8, - - /* CT */ - { 0x61, 0x35, 0x3b, 0x4c, 0x28, 0x06, 0x93, 0x4a, - 0x77, 0x7f, 0xf5, 0x1f, 0xa2, 0x2a, 0x47, 0x55, - 0x69, 0x9b, 0x2a, 0x71, 0x4f, 0xcd, 0xc6, 0xf8, - 0x37, 0x66, 0xe5, 0xf9, 0x7b, 0x6c, 0x74, 0x23, - 0x73, 0x80, 0x69, 0x00, 0xe4, 0x9f, 0x24, 0xb2, - 0x2b, 0x09, 0x75, 0x44, 0xd4, 0x89, 0x6b, 0x42, - 0x49, 0x89, 0xb5, 0xe1, 0xeb, 0xac, 0x0f, 0x07, - 0xc2, 0x3f, 0x45, 0x98, }, - - /* TAG */ - { 0x36, 0x12, 0xd2, 0xe7, 0x9e, 0x3b, 0x07, 0x85, - 0x56, 0x1b, 0xe1, 0x4a, 0xac, 0xa2, 0xfc, 0xcb, } -}, - -/* test case #6 */ -{ - /* key */ - { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, - 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, }, - 16, - - /* PT */ - { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, - 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, - 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, - 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, - 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, - 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, - 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, - 0xba, 0x63, 0x7b, 0x39, }, - 60, - - /* ADATA */ - { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, - 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, - 0xab, 0xad, 0xda, 0xd2, }, - 20, - - /* IV */ - { 0x93, 0x13, 0x22, 0x5d, 0xf8, 0x84, 0x06, 0xe5, - 0x55, 0x90, 0x9c, 0x5a, 0xff, 0x52, 0x69, 0xaa, - 0x6a, 0x7a, 0x95, 0x38, 0x53, 0x4f, 0x7d, 0xa1, - 0xe4, 0xc3, 0x03, 0xd2, 0xa3, 0x18, 0xa7, 0x28, - 0xc3, 0xc0, 0xc9, 0x51, 0x56, 0x80, 0x95, 0x39, - 0xfc, 0xf0, 0xe2, 0x42, 0x9a, 0x6b, 0x52, 0x54, - 0x16, 0xae, 0xdb, 0xf5, 0xa0, 0xde, 0x6a, 0x57, - 0xa6, 0x37, 0xb3, 0x9b, }, - 60, - - /* CT */ - { 0x8c, 0xe2, 0x49, 0x98, 0x62, 0x56, 0x15, 0xb6, - 0x03, 0xa0, 0x33, 0xac, 0xa1, 0x3f, 0xb8, 0x94, - 0xbe, 0x91, 0x12, 0xa5, 0xc3, 0xa2, 0x11, 0xa8, - 0xba, 0x26, 0x2a, 0x3c, 0xca, 0x7e, 0x2c, 0xa7, - 0x01, 0xe4, 0xa9, 0xa4, 0xfb, 0xa4, 0x3c, 0x90, - 0xcc, 0xdc, 0xb2, 0x81, 0xd4, 0x8c, 0x7c, 0x6f, - 0xd6, 0x28, 0x75, 0xd2, 0xac, 0xa4, 0x17, 0x03, - 0x4c, 0x34, 0xae, 0xe5, }, - - /* TAG */ - { 0x61, 0x9c, 0xc5, 0xae, 0xff, 0xfe, 0x0b, 0xfa, - 0x46, 0x2a, 0xf4, 0x3c, 0x16, 0x99, 0xd0, 0x50, } -}, - -/* test case #46 from BG (catches the LTC bug of v1.15) */ -{ - /* key */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - 16, - - /* PT */ - { 0xa2, 0xaa, 0xb3, 0xad, 0x8b, 0x17, 0xac, 0xdd, - 0xa2, 0x88, 0x42, 0x6c, 0xd7, 0xc4, 0x29, 0xb7, - 0xca, 0x86, 0xb7, 0xac, 0xa0, 0x58, 0x09, 0xc7, - 0x0c, 0xe8, 0x2d, 0xb2, 0x57, 0x11, 0xcb, 0x53, - 0x02, 0xeb, 0x27, 0x43, 0xb0, 0x36, 0xf3, 0xd7, - 0x50, 0xd6, 0xcf, 0x0d, 0xc0, 0xac, 0xb9, 0x29, - 0x50, 0xd5, 0x46, 0xdb, 0x30, 0x8f, 0x93, 0xb4, - 0xff, 0x24, 0x4a, 0xfa, 0x9d, 0xc7, 0x2b, 0xcd, - 0x75, 0x8d, 0x2c }, - 67, - - /* ADATA */ - { 0x68, 0x8e, 0x1a, 0xa9, 0x84, 0xde, 0x92, 0x6d, - 0xc7, 0xb4, 0xc4, 0x7f, 0x44 }, - 13, - - /* IV */ - { 0xb7, 0x21, 0x38, 0xb5, 0xa0, 0x5f, 0xf5, 0x07, - 0x0e, 0x8c, 0xd9, 0x41, 0x83, 0xf7, 0x61, 0xd8 }, - 16, - - /* CT */ - { 0xcb, 0xc8, 0xd2, 0xf1, 0x54, 0x81, 0xa4, 0xcc, - 0x7d, 0xd1, 0xe1, 0x9a, 0xaa, 0x83, 0xde, 0x56, - 0x78, 0x48, 0x3e, 0xc3, 0x59, 0xae, 0x7d, 0xec, - 0x2a, 0xb8, 0xd5, 0x34, 0xe0, 0x90, 0x6f, 0x4b, - 0x46, 0x63, 0xfa, 0xff, 0x58, 0xa8, 0xb2, 0xd7, - 0x33, 0xb8, 0x45, 0xee, 0xf7, 0xc9, 0xb3, 0x31, - 0xe9, 0xe1, 0x0e, 0xb2, 0x61, 0x2c, 0x99, 0x5f, - 0xeb, 0x1a, 0xc1, 0x5a, 0x62, 0x86, 0xcc, 0xe8, - 0xb2, 0x97, 0xa8 }, - - /* TAG */ - { 0x8d, 0x2d, 0x2a, 0x93, 0x72, 0x62, 0x6f, 0x6b, - 0xee, 0x85, 0x80, 0x27, 0x6a, 0x63, 0x66, 0xbf } -} - -/* rest of test cases are the same except AES key size changes... ignored... */ -}; - int idx, err; - unsigned long x, y; - unsigned char out[2][128], T[2][16]; - gcm_state gcm; - - /* find aes */ - idx = find_cipher("aes"); - if (idx == -1) { - idx = find_cipher("rijndael"); - if (idx == -1) { - return CRYPT_NOP; - } - } - - /* Special test case for empty AAD + empty PT */ - y = sizeof(T[0]); - if ((err = gcm_init(&gcm, idx, tests[0].K, tests[0].keylen)) != CRYPT_OK) return err; - if ((err = gcm_add_iv(&gcm, tests[0].IV, tests[0].IVlen)) != CRYPT_OK) return err; - /* intentionally skip gcm_add_aad + gcm_process */ - if ((err = gcm_done(&gcm, T[0], &y)) != CRYPT_OK) return err; - if (compare_testvector(T[0], y, tests[0].T, 16, "GCM Encrypt Tag-special", 0)) return CRYPT_FAIL_TESTVECTOR; - - for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - y = sizeof(T[0]); - if ((err = gcm_memory(idx, tests[x].K, tests[x].keylen, - tests[x].IV, tests[x].IVlen, - tests[x].A, tests[x].alen, - (unsigned char*)tests[x].P, tests[x].ptlen, - out[0], T[0], &y, GCM_ENCRYPT)) != CRYPT_OK) { - return err; - } - - if (compare_testvector(out[0], tests[x].ptlen, tests[x].C, tests[x].ptlen, "GCM CT", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - - if (compare_testvector(T[0], y, tests[x].T, 16, "GCM Encrypt Tag", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - - y = sizeof(T[1]); - if ((err = gcm_memory(idx, tests[x].K, tests[x].keylen, - tests[x].IV, tests[x].IVlen, - tests[x].A, tests[x].alen, - out[1], tests[x].ptlen, - out[0], T[1], &y, GCM_DECRYPT)) != CRYPT_OK) { - return err; - } - - if (compare_testvector(out[1], tests[x].ptlen, tests[x].P, tests[x].ptlen, "GCM PT", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - - if (compare_testvector(T[1], y, tests[x].T, 16, "GCM Decrypt Tag", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - - } - return CRYPT_OK; -#endif -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb/ocb_decrypt.c b/src/libtomcrypt/src/encauth/ocb/ocb_decrypt.c deleted file mode 100644 index 29834f6eb9..0000000000 --- a/src/libtomcrypt/src/encauth/ocb/ocb_decrypt.c +++ /dev/null @@ -1,77 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb_decrypt.c - OCB implementation, decrypt data, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB_MODE - -/** - Decrypt a block with OCB. - @param ocb The OCB state - @param ct The ciphertext (length of the block size of the block cipher) - @param pt [out] The plaintext (length of ct) - @return CRYPT_OK if successful -*/ -int ocb_decrypt(ocb_state *ocb, const unsigned char *ct, unsigned char *pt) -{ - unsigned char Z[MAXBLOCKSIZE], tmp[MAXBLOCKSIZE]; - int err, x; - - LTC_ARGCHK(ocb != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - - /* check if valid cipher */ - if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { - return err; - } - LTC_ARGCHK(cipher_descriptor[ocb->cipher].ecb_decrypt != NULL); - - /* check length */ - if (ocb->block_len != cipher_descriptor[ocb->cipher].block_length) { - return CRYPT_INVALID_ARG; - } - - /* Get Z[i] value */ - ocb_shift_xor(ocb, Z); - - /* xor ct in, encrypt, xor Z out */ - for (x = 0; x < ocb->block_len; x++) { - tmp[x] = ct[x] ^ Z[x]; - } - if ((err = cipher_descriptor[ocb->cipher].ecb_decrypt(tmp, pt, &ocb->key)) != CRYPT_OK) { - return err; - } - for (x = 0; x < ocb->block_len; x++) { - pt[x] ^= Z[x]; - } - - /* compute checksum */ - for (x = 0; x < ocb->block_len; x++) { - ocb->checksum[x] ^= pt[x]; - } - - -#ifdef LTC_CLEAN_STACK - zeromem(Z, sizeof(Z)); - zeromem(tmp, sizeof(tmp)); -#endif - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb/ocb_decrypt_verify_memory.c b/src/libtomcrypt/src/encauth/ocb/ocb_decrypt_verify_memory.c deleted file mode 100644 index dedb0bb93d..0000000000 --- a/src/libtomcrypt/src/encauth/ocb/ocb_decrypt_verify_memory.c +++ /dev/null @@ -1,84 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb_decrypt_verify_memory.c - OCB implementation, helper to decrypt block of memory, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB_MODE - -/** - Decrypt and compare the tag with OCB. - @param cipher The index of the cipher desired - @param key The secret key - @param keylen The length of the secret key (octets) - @param nonce The session nonce (length of the block size of the block cipher) - @param ct The ciphertext - @param ctlen The length of the ciphertext (octets) - @param pt [out] The plaintext - @param tag The tag to compare against - @param taglen The length of the tag (octets) - @param stat [out] The result of the tag comparison (1==valid, 0==invalid) - @return CRYPT_OK if successful regardless of the tag comparison -*/ -int ocb_decrypt_verify_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, - const unsigned char *ct, unsigned long ctlen, - unsigned char *pt, - const unsigned char *tag, unsigned long taglen, - int *stat) -{ - int err; - ocb_state *ocb; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(nonce != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(tag != NULL); - LTC_ARGCHK(stat != NULL); - - /* allocate memory */ - ocb = XMALLOC(sizeof(ocb_state)); - if (ocb == NULL) { - return CRYPT_MEM; - } - - if ((err = ocb_init(ocb, cipher, key, keylen, nonce)) != CRYPT_OK) { - goto LBL_ERR; - } - - while (ctlen > (unsigned long)ocb->block_len) { - if ((err = ocb_decrypt(ocb, ct, pt)) != CRYPT_OK) { - goto LBL_ERR; - } - ctlen -= ocb->block_len; - pt += ocb->block_len; - ct += ocb->block_len; - } - - err = ocb_done_decrypt(ocb, ct, ctlen, pt, tag, taglen, stat); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(ocb, sizeof(ocb_state)); -#endif - - XFREE(ocb); - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb/ocb_done_decrypt.c b/src/libtomcrypt/src/encauth/ocb/ocb_done_decrypt.c deleted file mode 100644 index 579b29ddb5..0000000000 --- a/src/libtomcrypt/src/encauth/ocb/ocb_done_decrypt.c +++ /dev/null @@ -1,78 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb_done_decrypt.c - OCB implementation, terminate decryption, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB_MODE - -/** - Terminate a decrypting OCB state - @param ocb The OCB state - @param ct The ciphertext (if any) - @param ctlen The length of the ciphertext (octets) - @param pt [out] The plaintext - @param tag The authentication tag (to compare against) - @param taglen The length of the authentication tag provided - @param stat [out] The result of the tag comparison - @return CRYPT_OK if the process was successful regardless if the tag is valid -*/ -int ocb_done_decrypt(ocb_state *ocb, - const unsigned char *ct, unsigned long ctlen, - unsigned char *pt, - const unsigned char *tag, unsigned long taglen, int *stat) -{ - int err; - unsigned char *tagbuf; - unsigned long tagbuflen; - - LTC_ARGCHK(ocb != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(tag != NULL); - LTC_ARGCHK(stat != NULL); - - /* default to failed */ - *stat = 0; - - /* allocate memory */ - tagbuf = XMALLOC(MAXBLOCKSIZE); - if (tagbuf == NULL) { - return CRYPT_MEM; - } - - tagbuflen = MAXBLOCKSIZE; - if ((err = s_ocb_done(ocb, ct, ctlen, pt, tagbuf, &tagbuflen, 1)) != CRYPT_OK) { - goto LBL_ERR; - } - - if (taglen <= tagbuflen && XMEM_NEQ(tagbuf, tag, taglen) == 0) { - *stat = 1; - } - - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(tagbuf, MAXBLOCKSIZE); -#endif - - XFREE(tagbuf); - - return err; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb/ocb_done_encrypt.c b/src/libtomcrypt/src/encauth/ocb/ocb_done_encrypt.c deleted file mode 100644 index e7a8497085..0000000000 --- a/src/libtomcrypt/src/encauth/ocb/ocb_done_encrypt.c +++ /dev/null @@ -1,44 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb_done_encrypt.c - OCB implementation, terminate encryption, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB_MODE - -/** - Terminate an encryption OCB state - @param ocb The OCB state - @param pt Remaining plaintext (if any) - @param ptlen The length of the plaintext (octets) - @param ct [out] The ciphertext (if any) - @param tag [out] The tag for the OCB stream - @param taglen [in/out] The max size and resulting size of the tag - @return CRYPT_OK if successful -*/ -int ocb_done_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, - unsigned char *ct, unsigned char *tag, unsigned long *taglen) -{ - LTC_ARGCHK(ocb != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(tag != NULL); - LTC_ARGCHK(taglen != NULL); - return s_ocb_done(ocb, pt, ptlen, ct, tag, taglen, 0); -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb/ocb_encrypt.c b/src/libtomcrypt/src/encauth/ocb/ocb_encrypt.c deleted file mode 100644 index 436ca3991d..0000000000 --- a/src/libtomcrypt/src/encauth/ocb/ocb_encrypt.c +++ /dev/null @@ -1,70 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb_encrypt.c - OCB implementation, encrypt data, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB_MODE - -/** - Encrypt a block of data with OCB. - @param ocb The OCB state - @param pt The plaintext (length of the block size of the block cipher) - @param ct [out] The ciphertext (same size as the pt) - @return CRYPT_OK if successful -*/ -int ocb_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned char *ct) -{ - unsigned char Z[MAXBLOCKSIZE], tmp[MAXBLOCKSIZE]; - int err, x; - - LTC_ARGCHK(ocb != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { - return err; - } - if (ocb->block_len != cipher_descriptor[ocb->cipher].block_length) { - return CRYPT_INVALID_ARG; - } - - /* compute checksum */ - for (x = 0; x < ocb->block_len; x++) { - ocb->checksum[x] ^= pt[x]; - } - - /* Get Z[i] value */ - ocb_shift_xor(ocb, Z); - - /* xor pt in, encrypt, xor Z out */ - for (x = 0; x < ocb->block_len; x++) { - tmp[x] = pt[x] ^ Z[x]; - } - if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(tmp, ct, &ocb->key)) != CRYPT_OK) { - return err; - } - for (x = 0; x < ocb->block_len; x++) { - ct[x] ^= Z[x]; - } - -#ifdef LTC_CLEAN_STACK - zeromem(Z, sizeof(Z)); - zeromem(tmp, sizeof(tmp)); -#endif - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb/ocb_encrypt_authenticate_memory.c b/src/libtomcrypt/src/encauth/ocb/ocb_encrypt_authenticate_memory.c deleted file mode 100644 index 6bc3017cc6..0000000000 --- a/src/libtomcrypt/src/encauth/ocb/ocb_encrypt_authenticate_memory.c +++ /dev/null @@ -1,82 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb_encrypt_authenticate_memory.c - OCB implementation, encrypt block of memory, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB_MODE - -/** - Encrypt and generate an authentication code for a buffer of memory - @param cipher The index of the cipher desired - @param key The secret key - @param keylen The length of the secret key (octets) - @param nonce The session nonce (length of the block ciphers block size) - @param pt The plaintext - @param ptlen The length of the plaintext (octets) - @param ct [out] The ciphertext - @param tag [out] The authentication tag - @param taglen [in/out] The max size and resulting size of the authentication tag - @return CRYPT_OK if successful -*/ -int ocb_encrypt_authenticate_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, - const unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - unsigned char *tag, unsigned long *taglen) -{ - int err; - ocb_state *ocb; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(nonce != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(tag != NULL); - LTC_ARGCHK(taglen != NULL); - - /* allocate ram */ - ocb = XMALLOC(sizeof(ocb_state)); - if (ocb == NULL) { - return CRYPT_MEM; - } - - if ((err = ocb_init(ocb, cipher, key, keylen, nonce)) != CRYPT_OK) { - goto LBL_ERR; - } - - while (ptlen > (unsigned long)ocb->block_len) { - if ((err = ocb_encrypt(ocb, pt, ct)) != CRYPT_OK) { - goto LBL_ERR; - } - ptlen -= ocb->block_len; - pt += ocb->block_len; - ct += ocb->block_len; - } - - err = ocb_done_encrypt(ocb, pt, ptlen, ct, tag, taglen); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(ocb, sizeof(ocb_state)); -#endif - - XFREE(ocb); - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb/ocb_init.c b/src/libtomcrypt/src/encauth/ocb/ocb_init.c deleted file mode 100644 index cc43c07f83..0000000000 --- a/src/libtomcrypt/src/encauth/ocb/ocb_init.c +++ /dev/null @@ -1,139 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb_init.c - OCB implementation, initialize state, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB_MODE - -static const struct { - int len; - unsigned char poly_div[MAXBLOCKSIZE], - poly_mul[MAXBLOCKSIZE]; -} polys[] = { -{ - 8, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B } -}, { - 16, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87 } -} -}; - -/** - Initialize an OCB context. - @param ocb [out] The destination of the OCB state - @param cipher The index of the desired cipher - @param key The secret key - @param keylen The length of the secret key (octets) - @param nonce The session nonce (length of the block size of the cipher) - @return CRYPT_OK if successful -*/ -int ocb_init(ocb_state *ocb, int cipher, - const unsigned char *key, unsigned long keylen, const unsigned char *nonce) -{ - int poly, x, y, m, err; - - LTC_ARGCHK(ocb != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(nonce != NULL); - - /* valid cipher? */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - - /* determine which polys to use */ - ocb->block_len = cipher_descriptor[cipher].block_length; - x = (int)(sizeof(polys)/sizeof(polys[0])); - for (poly = 0; poly < x; poly++) { - if (polys[poly].len == ocb->block_len) { - break; - } - } - if (poly == x) { - return CRYPT_INVALID_ARG; /* block_len not found in polys */ - } - if (polys[poly].len != ocb->block_len) { - return CRYPT_INVALID_ARG; - } - - /* schedule the key */ - if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &ocb->key)) != CRYPT_OK) { - return err; - } - - /* find L = E[0] */ - zeromem(ocb->L, ocb->block_len); - if ((err = cipher_descriptor[cipher].ecb_encrypt(ocb->L, ocb->L, &ocb->key)) != CRYPT_OK) { - return err; - } - - /* find R = E[N xor L] */ - for (x = 0; x < ocb->block_len; x++) { - ocb->R[x] = ocb->L[x] ^ nonce[x]; - } - if ((err = cipher_descriptor[cipher].ecb_encrypt(ocb->R, ocb->R, &ocb->key)) != CRYPT_OK) { - return err; - } - - /* find Ls[i] = L << i for i == 0..31 */ - XMEMCPY(ocb->Ls[0], ocb->L, ocb->block_len); - for (x = 1; x < 32; x++) { - m = ocb->Ls[x-1][0] >> 7; - for (y = 0; y < ocb->block_len-1; y++) { - ocb->Ls[x][y] = ((ocb->Ls[x-1][y] << 1) | (ocb->Ls[x-1][y+1] >> 7)) & 255; - } - ocb->Ls[x][ocb->block_len-1] = (ocb->Ls[x-1][ocb->block_len-1] << 1) & 255; - - if (m == 1) { - for (y = 0; y < ocb->block_len; y++) { - ocb->Ls[x][y] ^= polys[poly].poly_mul[y]; - } - } - } - - /* find Lr = L / x */ - m = ocb->L[ocb->block_len-1] & 1; - - /* shift right */ - for (x = ocb->block_len - 1; x > 0; x--) { - ocb->Lr[x] = ((ocb->L[x] >> 1) | (ocb->L[x-1] << 7)) & 255; - } - ocb->Lr[0] = ocb->L[0] >> 1; - - if (m == 1) { - for (x = 0; x < ocb->block_len; x++) { - ocb->Lr[x] ^= polys[poly].poly_div[x]; - } - } - - /* set Li, checksum */ - zeromem(ocb->Li, ocb->block_len); - zeromem(ocb->checksum, ocb->block_len); - - /* set other params */ - ocb->block_index = 1; - ocb->cipher = cipher; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb/ocb_ntz.c b/src/libtomcrypt/src/encauth/ocb/ocb_ntz.c deleted file mode 100644 index b79bec61e2..0000000000 --- a/src/libtomcrypt/src/encauth/ocb/ocb_ntz.c +++ /dev/null @@ -1,40 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb_ntz.c - OCB implementation, internal function, by Tom St Denis -*/ - -#include "tomcrypt.h" - -#ifdef LTC_OCB_MODE - -/** - Returns the number of leading zero bits [from lsb up] - @param x The 32-bit value to observe - @return The number of bits [from the lsb up] that are zero -*/ -int ocb_ntz(unsigned long x) -{ - int c; - x &= 0xFFFFFFFFUL; - c = 0; - while ((x & 1) == 0) { - ++c; - x >>= 1; - } - return c; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb/ocb_shift_xor.c b/src/libtomcrypt/src/encauth/ocb/ocb_shift_xor.c deleted file mode 100644 index 82d657028d..0000000000 --- a/src/libtomcrypt/src/encauth/ocb/ocb_shift_xor.c +++ /dev/null @@ -1,37 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb_shift_xor.c - OCB implementation, internal function, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB_MODE - -/** - Compute the shift/xor for OCB (internal function) - @param ocb The OCB state - @param Z The destination of the shift -*/ -void ocb_shift_xor(ocb_state *ocb, unsigned char *Z) -{ - int x, y; - y = ocb_ntz(ocb->block_index++); - for (x = 0; x < ocb->block_len; x++) { - ocb->Li[x] ^= ocb->Ls[y][x]; - Z[x] = ocb->Li[x] ^ ocb->R[x]; - } -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb/ocb_test.c b/src/libtomcrypt/src/encauth/ocb/ocb_test.c deleted file mode 100644 index ac240a7c47..0000000000 --- a/src/libtomcrypt/src/encauth/ocb/ocb_test.c +++ /dev/null @@ -1,215 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb_test.c - OCB implementation, self-test by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB_MODE - -/** - Test the OCB protocol - @return CRYPT_OK if successful -*/ -int ocb_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - int ptlen; - unsigned char key[16], nonce[16], pt[34], ct[34], tag[16]; - } tests[] = { - - /* OCB-AES-128-0B */ -{ - 0, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* nonce */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, - /* pt */ - { 0 }, - /* ct */ - { 0 }, - /* tag */ - { 0x15, 0xd3, 0x7d, 0xd7, 0xc8, 0x90, 0xd5, 0xd6, - 0xac, 0xab, 0x92, 0x7b, 0xc0, 0xdc, 0x60, 0xee }, -}, - - - /* OCB-AES-128-3B */ -{ - 3, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* nonce */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, - /* pt */ - { 0x00, 0x01, 0x02 }, - /* ct */ - { 0xfc, 0xd3, 0x7d }, - /* tag */ - { 0x02, 0x25, 0x47, 0x39, 0xa5, 0xe3, 0x56, 0x5a, - 0xe2, 0xdc, 0xd6, 0x2c, 0x65, 0x97, 0x46, 0xba }, -}, - - /* OCB-AES-128-16B */ -{ - 16, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* nonce */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, - /* pt */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* ct */ - { 0x37, 0xdf, 0x8c, 0xe1, 0x5b, 0x48, 0x9b, 0xf3, - 0x1d, 0x0f, 0xc4, 0x4d, 0xa1, 0xfa, 0xf6, 0xd6 }, - /* tag */ - { 0xdf, 0xb7, 0x63, 0xeb, 0xdb, 0x5f, 0x0e, 0x71, - 0x9c, 0x7b, 0x41, 0x61, 0x80, 0x80, 0x04, 0xdf }, -}, - - /* OCB-AES-128-20B */ -{ - 20, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* nonce */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, - /* pt */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13 }, - /* ct */ - { 0x01, 0xa0, 0x75, 0xf0, 0xd8, 0x15, 0xb1, 0xa4, - 0xe9, 0xc8, 0x81, 0xa1, 0xbc, 0xff, 0xc3, 0xeb, - 0x70, 0x03, 0xeb, 0x55}, - /* tag */ - { 0x75, 0x30, 0x84, 0x14, 0x4e, 0xb6, 0x3b, 0x77, - 0x0b, 0x06, 0x3c, 0x2e, 0x23, 0xcd, 0xa0, 0xbb }, -}, - - /* OCB-AES-128-32B */ -{ - 32, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* nonce */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, - /* pt */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, - /* ct */ - { 0x01, 0xa0, 0x75, 0xf0, 0xd8, 0x15, 0xb1, 0xa4, - 0xe9, 0xc8, 0x81, 0xa1, 0xbc, 0xff, 0xc3, 0xeb, - 0x4a, 0xfc, 0xbb, 0x7f, 0xed, 0xc0, 0x8c, 0xa8, - 0x65, 0x4c, 0x6d, 0x30, 0x4d, 0x16, 0x12, 0xfa }, - - /* tag */ - { 0xc1, 0x4c, 0xbf, 0x2c, 0x1a, 0x1f, 0x1c, 0x3c, - 0x13, 0x7e, 0xad, 0xea, 0x1f, 0x2f, 0x2f, 0xcf }, -}, - - /* OCB-AES-128-34B */ -{ - 34, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* nonce */ - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, - /* pt */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, - 0x20, 0x21 }, - /* ct */ - { 0x01, 0xa0, 0x75, 0xf0, 0xd8, 0x15, 0xb1, 0xa4, - 0xe9, 0xc8, 0x81, 0xa1, 0xbc, 0xff, 0xc3, 0xeb, - 0xd4, 0x90, 0x3d, 0xd0, 0x02, 0x5b, 0xa4, 0xaa, - 0x83, 0x7c, 0x74, 0xf1, 0x21, 0xb0, 0x26, 0x0f, - 0xa9, 0x5d }, - - /* tag */ - { 0xcf, 0x83, 0x41, 0xbb, 0x10, 0x82, 0x0c, 0xcf, - 0x14, 0xbd, 0xec, 0x56, 0xb8, 0xd7, 0xd6, 0xab }, -}, - -}; - - int err, x, idx, res; - unsigned long len; - unsigned char outct[MAXBLOCKSIZE], outtag[MAXBLOCKSIZE]; - - /* AES can be under rijndael or aes... try to find it */ - if ((idx = find_cipher("aes")) == -1) { - if ((idx = find_cipher("rijndael")) == -1) { - return CRYPT_NOP; - } - } - - for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - len = sizeof(outtag); - if ((err = ocb_encrypt_authenticate_memory(idx, tests[x].key, 16, - tests[x].nonce, tests[x].pt, tests[x].ptlen, outct, outtag, &len)) != CRYPT_OK) { - return err; - } - - if (compare_testvector(outtag, len, tests[x].tag, sizeof(tests[x].tag), "OCB Tag", x) || - compare_testvector(outct, tests[x].ptlen, tests[x].ct, tests[x].ptlen, "OCB CT", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - - if ((err = ocb_decrypt_verify_memory(idx, tests[x].key, 16, tests[x].nonce, outct, tests[x].ptlen, - outct, tests[x].tag, len, &res)) != CRYPT_OK) { - return err; - } - if ((res != 1) || compare_testvector(outct, tests[x].ptlen, tests[x].pt, tests[x].ptlen, "OCB", x)) { -#ifdef LTC_TEST_DBG - printf("\n\nOCB: Failure-decrypt - res = %d\n", res); -#endif - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif /* LTC_TEST */ -} - -#endif /* LTC_OCB_MODE */ - - -/* some comments - - -- it's hard to seek - -- hard to stream [you can't emit ciphertext until full block] - -- The setup is somewhat complicated... -*/ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb/s_ocb_done.c b/src/libtomcrypt/src/encauth/ocb/s_ocb_done.c deleted file mode 100644 index eb13073744..0000000000 --- a/src/libtomcrypt/src/encauth/ocb/s_ocb_done.c +++ /dev/null @@ -1,146 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file s_ocb_done.c - OCB implementation, internal helper, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB_MODE - -/* Since the last block is encrypted in CTR mode the same code can - * be used to finish a decrypt or encrypt stream. The only difference - * is we XOR the final ciphertext into the checksum so we have to xor it - * before we CTR [decrypt] or after [encrypt] - * - * the names pt/ptlen/ct really just mean in/inlen/out but this is the way I wrote it... - */ - -/** - Shared code to finish an OCB stream - @param ocb The OCB state - @param pt The remaining plaintext [or input] - @param ptlen The length of the input (octets) - @param ct [out] The output buffer - @param tag [out] The destination for the authentication tag - @param taglen [in/out] The max size and resulting size of the authentication tag - @param mode The mode we are terminating, 0==encrypt, 1==decrypt - @return CRYPT_OK if successful -*/ -int s_ocb_done(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, - unsigned char *ct, unsigned char *tag, unsigned long *taglen, int mode) - -{ - unsigned char *Z, *Y, *X; - int err, x; - - LTC_ARGCHK(ocb != NULL); - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(tag != NULL); - LTC_ARGCHK(taglen != NULL); - if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { - return err; - } - if (ocb->block_len != cipher_descriptor[ocb->cipher].block_length || - (int)ptlen > ocb->block_len || (int)ptlen < 0) { - return CRYPT_INVALID_ARG; - } - - /* allocate ram */ - Z = XMALLOC(MAXBLOCKSIZE); - Y = XMALLOC(MAXBLOCKSIZE); - X = XMALLOC(MAXBLOCKSIZE); - if (X == NULL || Y == NULL || Z == NULL) { - if (X != NULL) { - XFREE(X); - } - if (Y != NULL) { - XFREE(Y); - } - if (Z != NULL) { - XFREE(Z); - } - return CRYPT_MEM; - } - - /* compute X[m] = len(pt[m]) XOR Lr XOR Z[m] */ - ocb_shift_xor(ocb, X); - XMEMCPY(Z, X, ocb->block_len); - - X[ocb->block_len-1] ^= (ptlen*8)&255; - X[ocb->block_len-2] ^= ((ptlen*8)>>8)&255; - for (x = 0; x < ocb->block_len; x++) { - X[x] ^= ocb->Lr[x]; - } - - /* Y[m] = E(X[m])) */ - if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(X, Y, &ocb->key)) != CRYPT_OK) { - goto error; - } - - if (mode == 1) { - /* decrypt mode, so let's xor it first */ - /* xor C[m] into checksum */ - for (x = 0; x < (int)ptlen; x++) { - ocb->checksum[x] ^= ct[x]; - } - } - - /* C[m] = P[m] xor Y[m] */ - for (x = 0; x < (int)ptlen; x++) { - ct[x] = pt[x] ^ Y[x]; - } - - if (mode == 0) { - /* encrypt mode */ - /* xor C[m] into checksum */ - for (x = 0; x < (int)ptlen; x++) { - ocb->checksum[x] ^= ct[x]; - } - } - - /* xor Y[m] and Z[m] into checksum */ - for (x = 0; x < ocb->block_len; x++) { - ocb->checksum[x] ^= Y[x] ^ Z[x]; - } - - /* encrypt checksum, er... tag!! */ - if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(ocb->checksum, X, &ocb->key)) != CRYPT_OK) { - goto error; - } - cipher_descriptor[ocb->cipher].done(&ocb->key); - - /* now store it */ - for (x = 0; x < ocb->block_len && x < (int)*taglen; x++) { - tag[x] = X[x]; - } - *taglen = x; - -#ifdef LTC_CLEAN_STACK - zeromem(X, MAXBLOCKSIZE); - zeromem(Y, MAXBLOCKSIZE); - zeromem(Z, MAXBLOCKSIZE); - zeromem(ocb, sizeof(*ocb)); -#endif -error: - XFREE(X); - XFREE(Y); - XFREE(Z); - - return err; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb3/ocb3_add_aad.c b/src/libtomcrypt/src/encauth/ocb3/ocb3_add_aad.c deleted file mode 100644 index 66f733c3b7..0000000000 --- a/src/libtomcrypt/src/encauth/ocb3/ocb3_add_aad.c +++ /dev/null @@ -1,106 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb3_add_aad.c - OCB implementation, add AAD data, by Karel Miko -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB3_MODE - -/** - Add one block of AAD data (internal function) - @param ocb The OCB state - @param aad_block [in] AAD data (block_len size) - @return CRYPT_OK if successful -*/ -static int _ocb3_int_aad_add_block(ocb3_state *ocb, const unsigned char *aad_block) -{ - unsigned char tmp[MAXBLOCKSIZE]; - int err; - - /* Offset_i = Offset_{i-1} xor L_{ntz(i)} */ - ocb3_int_xor_blocks(ocb->aOffset_current, ocb->aOffset_current, ocb->L_[ocb3_int_ntz(ocb->ablock_index)], ocb->block_len); - - /* Sum_i = Sum_{i-1} xor ENCIPHER(K, A_i xor Offset_i) */ - ocb3_int_xor_blocks(tmp, aad_block, ocb->aOffset_current, ocb->block_len); - if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(tmp, tmp, &ocb->key)) != CRYPT_OK) { - return err; - } - ocb3_int_xor_blocks(ocb->aSum_current, ocb->aSum_current, tmp, ocb->block_len); - - ocb->ablock_index++; - - return CRYPT_OK; -} - -/** - Add AAD - additional associated data - @param ocb The OCB state - @param aad The AAD data - @param aadlen The size of AAD data (octets) - @return CRYPT_OK if successful -*/ -int ocb3_add_aad(ocb3_state *ocb, const unsigned char *aad, unsigned long aadlen) -{ - int err, x, full_blocks, full_blocks_len, last_block_len; - unsigned char *data; - unsigned long datalen, l; - - LTC_ARGCHK(ocb != NULL); - if (aadlen == 0) return CRYPT_OK; - LTC_ARGCHK(aad != NULL); - - if (ocb->adata_buffer_bytes > 0) { - l = ocb->block_len - ocb->adata_buffer_bytes; - if (l > aadlen) l = aadlen; - XMEMCPY(ocb->adata_buffer+ocb->adata_buffer_bytes, aad, l); - ocb->adata_buffer_bytes += l; - - if (ocb->adata_buffer_bytes == ocb->block_len) { - if ((err = _ocb3_int_aad_add_block(ocb, ocb->adata_buffer)) != CRYPT_OK) { - return err; - } - ocb->adata_buffer_bytes = 0; - } - - data = (unsigned char *)aad + l; - datalen = aadlen - l; - } - else { - data = (unsigned char *)aad; - datalen = aadlen; - } - - if (datalen == 0) return CRYPT_OK; - - full_blocks = datalen/ocb->block_len; - full_blocks_len = full_blocks * ocb->block_len; - last_block_len = datalen - full_blocks_len; - - for (x=0; xblock_len)) != CRYPT_OK) { - return err; - } - } - - if (last_block_len>0) { - XMEMCPY(ocb->adata_buffer, data+full_blocks_len, last_block_len); - ocb->adata_buffer_bytes = last_block_len; - } - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb3/ocb3_decrypt.c b/src/libtomcrypt/src/encauth/ocb3/ocb3_decrypt.c deleted file mode 100644 index 6d8de3a87e..0000000000 --- a/src/libtomcrypt/src/encauth/ocb3/ocb3_decrypt.c +++ /dev/null @@ -1,86 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb3_decrypt.c - OCB implementation, decrypt data, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB3_MODE - -/** - Decrypt blocks of ciphertext with OCB - @param ocb The OCB state - @param ct The ciphertext (length multiple of the block size of the block cipher) - @param ctlen The length of the input (octets) - @param pt [out] The plaintext (length of ct) - @return CRYPT_OK if successful -*/ -int ocb3_decrypt(ocb3_state *ocb, const unsigned char *ct, unsigned long ctlen, unsigned char *pt) -{ - unsigned char tmp[MAXBLOCKSIZE]; - int err, i, full_blocks; - unsigned char *pt_b, *ct_b; - - LTC_ARGCHK(ocb != NULL); - if (ctlen == 0) return CRYPT_OK; /* no data, nothing to do */ - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(pt != NULL); - - if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { - return err; - } - if (ocb->block_len != cipher_descriptor[ocb->cipher].block_length) { - return CRYPT_INVALID_ARG; - } - - if (ctlen % ocb->block_len) { /* ctlen has to bu multiple of block_len */ - return CRYPT_INVALID_ARG; - } - - full_blocks = ctlen/ocb->block_len; - for(i=0; iblock_len; - ct_b = (unsigned char *)ct+i*ocb->block_len; - - /* ocb->Offset_current[] = ocb->Offset_current[] ^ Offset_{ntz(block_index)} */ - ocb3_int_xor_blocks(ocb->Offset_current, ocb->Offset_current, ocb->L_[ocb3_int_ntz(ocb->block_index)], ocb->block_len); - - /* tmp[] = ct[] XOR ocb->Offset_current[] */ - ocb3_int_xor_blocks(tmp, ct_b, ocb->Offset_current, ocb->block_len); - - /* decrypt */ - if ((err = cipher_descriptor[ocb->cipher].ecb_decrypt(tmp, tmp, &ocb->key)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* pt[] = tmp[] XOR ocb->Offset_current[] */ - ocb3_int_xor_blocks(pt_b, tmp, ocb->Offset_current, ocb->block_len); - - /* ocb->checksum[] = ocb->checksum[] XOR pt[] */ - ocb3_int_xor_blocks(ocb->checksum, ocb->checksum, pt_b, ocb->block_len); - - ocb->block_index++; - } - - err = CRYPT_OK; - -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(tmp, sizeof(tmp)); -#endif - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb3/ocb3_decrypt_last.c b/src/libtomcrypt/src/encauth/ocb3/ocb3_decrypt_last.c deleted file mode 100644 index c582110bf4..0000000000 --- a/src/libtomcrypt/src/encauth/ocb3/ocb3_decrypt_last.c +++ /dev/null @@ -1,110 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb3_decrypt_last.c - OCB implementation, internal helper, by Karel Miko -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB3_MODE - -/** - Finish an OCB (decryption) stream - @param ocb The OCB state - @param ct The remaining ciphertext - @param ctlen The length of the ciphertext (octets) - @param pt [out] The output buffer - @return CRYPT_OK if successful -*/ -int ocb3_decrypt_last(ocb3_state *ocb, const unsigned char *ct, unsigned long ctlen, unsigned char *pt) -{ - unsigned char iOffset_star[MAXBLOCKSIZE]; - unsigned char iPad[MAXBLOCKSIZE]; - int err, x, full_blocks, full_blocks_len, last_block_len; - - LTC_ARGCHK(ocb != NULL); - if (ct == NULL) LTC_ARGCHK(ctlen == 0); - if (ctlen != 0) { - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(pt != NULL); - } - - if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { - goto LBL_ERR; - } - - full_blocks = ctlen/ocb->block_len; - full_blocks_len = full_blocks * ocb->block_len; - last_block_len = ctlen - full_blocks_len; - - /* process full blocks first */ - if (full_blocks>0) { - if ((err = ocb3_decrypt(ocb, ct, full_blocks_len, pt)) != CRYPT_OK) { - goto LBL_ERR; - } - } - - if (last_block_len>0) { - /* Offset_* = Offset_m xor L_* */ - ocb3_int_xor_blocks(iOffset_star, ocb->Offset_current, ocb->L_star, ocb->block_len); - - /* Pad = ENCIPHER(K, Offset_*) */ - if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(iOffset_star, iPad, &ocb->key)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* P_* = C_* xor Pad[1..bitlen(C_*)] */ - ocb3_int_xor_blocks(pt+full_blocks_len, (unsigned char *)ct+full_blocks_len, iPad, last_block_len); - - /* Checksum_* = Checksum_m xor (P_* || 1 || zeros(127-bitlen(P_*))) */ - ocb3_int_xor_blocks(ocb->checksum, ocb->checksum, pt+full_blocks_len, last_block_len); - for(x=last_block_len; xblock_len; x++) { - if (x == last_block_len) - ocb->checksum[x] ^= 0x80; - else - ocb->checksum[x] ^= 0x00; - } - - /* Tag = ENCIPHER(K, Checksum_* xor Offset_* xor L_$) xor HASH(K,A) */ - /* at this point we calculate only: Tag_part = ENCIPHER(K, Checksum_* xor Offset_* xor L_$) */ - for(x=0; xblock_len; x++) { - ocb->tag_part[x] = (ocb->checksum[x] ^ iOffset_star[x]) ^ ocb->L_dollar[x]; - } - if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(ocb->tag_part, ocb->tag_part, &ocb->key)) != CRYPT_OK) { - goto LBL_ERR; - } - } - else { - /* Tag = ENCIPHER(K, Checksum_m xor Offset_m xor L_$) xor HASH(K,A) */ - /* at this point we calculate only: Tag_part = ENCIPHER(K, Checksum_m xor Offset_m xor L_$) */ - for(x=0; xblock_len; x++) { - ocb->tag_part[x] = (ocb->checksum[x] ^ ocb->Offset_current[x]) ^ ocb->L_dollar[x]; - } - if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(ocb->tag_part, ocb->tag_part, &ocb->key)) != CRYPT_OK) { - goto LBL_ERR; - } - } - - err = CRYPT_OK; - -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(iOffset_star, MAXBLOCKSIZE); - zeromem(iPad, MAXBLOCKSIZE); -#endif - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb3/ocb3_decrypt_verify_memory.c b/src/libtomcrypt/src/encauth/ocb3/ocb3_decrypt_verify_memory.c deleted file mode 100644 index 2887a6bc45..0000000000 --- a/src/libtomcrypt/src/encauth/ocb3/ocb3_decrypt_verify_memory.c +++ /dev/null @@ -1,110 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb3_decrypt_verify_memory.c - OCB implementation, helper to decrypt block of memory, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB3_MODE - -/** - Decrypt and compare the tag with OCB - @param cipher The index of the cipher desired - @param key The secret key - @param keylen The length of the secret key (octets) - @param nonce The session nonce (length of the block size of the block cipher) - @param noncelen The length of the nonce (octets) - @param adata The AAD - additional associated data - @param adatalen The length of AAD (octets) - @param ct The ciphertext - @param ctlen The length of the ciphertext (octets) - @param pt [out] The plaintext - @param tag The tag to compare against - @param taglen The length of the tag (octets) - @param stat [out] The result of the tag comparison (1==valid, 0==invalid) - @return CRYPT_OK if successful regardless of the tag comparison -*/ -int ocb3_decrypt_verify_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, unsigned long noncelen, - const unsigned char *adata, unsigned long adatalen, - const unsigned char *ct, unsigned long ctlen, - unsigned char *pt, - const unsigned char *tag, unsigned long taglen, - int *stat) -{ - int err; - ocb3_state *ocb; - unsigned char *buf; - unsigned long buflen; - - LTC_ARGCHK(stat != NULL); - - /* default to zero */ - *stat = 0; - - /* limit taglen */ - taglen = MIN(taglen, MAXBLOCKSIZE); - - /* allocate memory */ - buf = XMALLOC(taglen); - ocb = XMALLOC(sizeof(ocb3_state)); - if (ocb == NULL || buf == NULL) { - if (ocb != NULL) { - XFREE(ocb); - } - if (buf != NULL) { - XFREE(buf); - } - return CRYPT_MEM; - } - - if ((err = ocb3_init(ocb, cipher, key, keylen, nonce, noncelen, taglen)) != CRYPT_OK) { - goto LBL_ERR; - } - - if (adata != NULL || adatalen != 0) { - if ((err = ocb3_add_aad(ocb, adata, adatalen)) != CRYPT_OK) { - goto LBL_ERR; - } - } - - if ((err = ocb3_decrypt_last(ocb, ct, ctlen, pt)) != CRYPT_OK) { - goto LBL_ERR; - } - - buflen = taglen; - if ((err = ocb3_done(ocb, buf, &buflen)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* compare tags */ - if (buflen >= taglen && XMEM_NEQ(buf, tag, taglen) == 0) { - *stat = 1; - } - - err = CRYPT_OK; - -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(ocb, sizeof(ocb3_state)); -#endif - - XFREE(ocb); - XFREE(buf); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb3/ocb3_done.c b/src/libtomcrypt/src/encauth/ocb3/ocb3_done.c deleted file mode 100644 index 0810cb5c16..0000000000 --- a/src/libtomcrypt/src/encauth/ocb3/ocb3_done.c +++ /dev/null @@ -1,92 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb3_done.c - OCB implementation, INTERNAL ONLY helper, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB3_MODE - -/** - Finish OCB processing and compute the tag - @param ocb The OCB state - @param tag [out] The destination for the authentication tag - @param taglen [in/out] The max size and resulting size of the authentication tag - @return CRYPT_OK if successful -*/ -int ocb3_done(ocb3_state *ocb, unsigned char *tag, unsigned long *taglen) -{ - unsigned char tmp[MAXBLOCKSIZE]; - int err, x; - - LTC_ARGCHK(ocb != NULL); - LTC_ARGCHK(tag != NULL); - LTC_ARGCHK(taglen != NULL); - if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* check taglen */ - if ((int)*taglen < ocb->tag_len) { - *taglen = (unsigned long)ocb->tag_len; - return CRYPT_BUFFER_OVERFLOW; - } - - /* finalize AAD processing */ - - if (ocb->adata_buffer_bytes>0) { - /* Offset_* = Offset_m xor L_* */ - ocb3_int_xor_blocks(ocb->aOffset_current, ocb->aOffset_current, ocb->L_star, ocb->block_len); - - /* CipherInput = (A_* || 1 || zeros(127-bitlen(A_*))) xor Offset_* */ - ocb3_int_xor_blocks(tmp, ocb->adata_buffer, ocb->aOffset_current, ocb->adata_buffer_bytes); - for(x=ocb->adata_buffer_bytes; xblock_len; x++) { - if (x == ocb->adata_buffer_bytes) { - tmp[x] = 0x80 ^ ocb->aOffset_current[x]; - } - else { - tmp[x] = 0x00 ^ ocb->aOffset_current[x]; - } - } - - /* Sum = Sum_m xor ENCIPHER(K, CipherInput) */ - if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(tmp, tmp, &ocb->key)) != CRYPT_OK) { - goto LBL_ERR; - } - ocb3_int_xor_blocks(ocb->aSum_current, ocb->aSum_current, tmp, ocb->block_len); - } - - /* finalize TAG computing */ - - /* at this point ocb->aSum_current = HASH(K, A) */ - /* tag = tag ^ HASH(K, A) */ - ocb3_int_xor_blocks(tmp, ocb->tag_part, ocb->aSum_current, ocb->block_len); - - /* copy tag bytes */ - for(x = 0; x < ocb->tag_len; x++) tag[x] = tmp[x]; - *taglen = (unsigned long)ocb->tag_len; - - err = CRYPT_OK; - -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(tmp, MAXBLOCKSIZE); - zeromem(ocb, sizeof(*ocb)); -#endif - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb3/ocb3_encrypt.c b/src/libtomcrypt/src/encauth/ocb3/ocb3_encrypt.c deleted file mode 100644 index 08e6465ca5..0000000000 --- a/src/libtomcrypt/src/encauth/ocb3/ocb3_encrypt.c +++ /dev/null @@ -1,86 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb3_encrypt.c - OCB implementation, encrypt data, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB3_MODE - -/** - Encrypt blocks of data with OCB - @param ocb The OCB state - @param pt The plaintext (length multiple of the block size of the block cipher) - @param ptlen The length of the input (octets) - @param ct [out] The ciphertext (same size as the pt) - @return CRYPT_OK if successful -*/ -int ocb3_encrypt(ocb3_state *ocb, const unsigned char *pt, unsigned long ptlen, unsigned char *ct) -{ - unsigned char tmp[MAXBLOCKSIZE]; - int err, i, full_blocks; - unsigned char *pt_b, *ct_b; - - LTC_ARGCHK(ocb != NULL); - if (ptlen == 0) return CRYPT_OK; /* no data, nothing to do */ - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - - if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { - return err; - } - if (ocb->block_len != cipher_descriptor[ocb->cipher].block_length) { - return CRYPT_INVALID_ARG; - } - - if (ptlen % ocb->block_len) { /* ptlen has to bu multiple of block_len */ - return CRYPT_INVALID_ARG; - } - - full_blocks = ptlen/ocb->block_len; - for(i=0; iblock_len; - ct_b = (unsigned char *)ct+i*ocb->block_len; - - /* ocb->Offset_current[] = ocb->Offset_current[] ^ Offset_{ntz(block_index)} */ - ocb3_int_xor_blocks(ocb->Offset_current, ocb->Offset_current, ocb->L_[ocb3_int_ntz(ocb->block_index)], ocb->block_len); - - /* tmp[] = pt[] XOR ocb->Offset_current[] */ - ocb3_int_xor_blocks(tmp, pt_b, ocb->Offset_current, ocb->block_len); - - /* encrypt */ - if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(tmp, tmp, &ocb->key)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* ct[] = tmp[] XOR ocb->Offset_current[] */ - ocb3_int_xor_blocks(ct_b, tmp, ocb->Offset_current, ocb->block_len); - - /* ocb->checksum[] = ocb->checksum[] XOR pt[] */ - ocb3_int_xor_blocks(ocb->checksum, ocb->checksum, pt_b, ocb->block_len); - - ocb->block_index++; - } - - err = CRYPT_OK; - -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(tmp, sizeof(tmp)); -#endif - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb3/ocb3_encrypt_authenticate_memory.c b/src/libtomcrypt/src/encauth/ocb3/ocb3_encrypt_authenticate_memory.c deleted file mode 100644 index 14169788f4..0000000000 --- a/src/libtomcrypt/src/encauth/ocb3/ocb3_encrypt_authenticate_memory.c +++ /dev/null @@ -1,82 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb3_encrypt_authenticate_memory.c - OCB implementation, encrypt block of memory, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB3_MODE - -/** - Encrypt and generate an authentication code for a buffer of memory - @param cipher The index of the cipher desired - @param key The secret key - @param keylen The length of the secret key (octets) - @param nonce The session nonce (length of the block ciphers block size) - @param noncelen The length of the nonce (octets) - @param adata The AAD - additional associated data - @param adatalen The length of AAD (octets) - @param pt The plaintext - @param ptlen The length of the plaintext (octets) - @param ct [out] The ciphertext - @param tag [out] The authentication tag - @param taglen [in/out] The max size and resulting size of the authentication tag - @return CRYPT_OK if successful -*/ -int ocb3_encrypt_authenticate_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, unsigned long noncelen, - const unsigned char *adata, unsigned long adatalen, - const unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - unsigned char *tag, unsigned long *taglen) -{ - int err; - ocb3_state *ocb; - - LTC_ARGCHK(taglen != NULL); - - /* allocate memory */ - ocb = XMALLOC(sizeof(ocb3_state)); - if (ocb == NULL) { - return CRYPT_MEM; - } - - if ((err = ocb3_init(ocb, cipher, key, keylen, nonce, noncelen, *taglen)) != CRYPT_OK) { - goto LBL_ERR; - } - - if (adata != NULL || adatalen != 0) { - if ((err = ocb3_add_aad(ocb, adata, adatalen)) != CRYPT_OK) { - goto LBL_ERR; - } - } - - if ((err = ocb3_encrypt_last(ocb, pt, ptlen, ct)) != CRYPT_OK) { - goto LBL_ERR; - } - - err = ocb3_done(ocb, tag, taglen); - -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(ocb, sizeof(ocb3_state)); -#endif - - XFREE(ocb); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb3/ocb3_encrypt_last.c b/src/libtomcrypt/src/encauth/ocb3/ocb3_encrypt_last.c deleted file mode 100644 index 846e5d527f..0000000000 --- a/src/libtomcrypt/src/encauth/ocb3/ocb3_encrypt_last.c +++ /dev/null @@ -1,112 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb3_encrypt_last.c - OCB implementation, internal helper, by Karel Miko -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB3_MODE - -/** - Finish an OCB (encryption) stream - @param ocb The OCB state - @param pt The remaining plaintext - @param ptlen The length of the plaintext (octets) - @param ct [out] The output buffer - @return CRYPT_OK if successful -*/ -int ocb3_encrypt_last(ocb3_state *ocb, const unsigned char *pt, unsigned long ptlen, unsigned char *ct) -{ - unsigned char iOffset_star[MAXBLOCKSIZE]; - unsigned char iPad[MAXBLOCKSIZE]; - int err, x, full_blocks, full_blocks_len, last_block_len; - - LTC_ARGCHK(ocb != NULL); - if (pt == NULL) LTC_ARGCHK(ptlen == 0); - if (ptlen != 0) { - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - } - - if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { - goto LBL_ERR; - } - - full_blocks = ptlen/ocb->block_len; - full_blocks_len = full_blocks * ocb->block_len; - last_block_len = ptlen - full_blocks_len; - - /* process full blocks first */ - if (full_blocks>0) { - if ((err = ocb3_encrypt(ocb, pt, full_blocks_len, ct)) != CRYPT_OK) { - goto LBL_ERR; - } - } - - /* at this point: m = ocb->block_index (last block index), Offset_m = ocb->Offset_current */ - - if (last_block_len>0) { - /* Offset_* = Offset_m xor L_* */ - ocb3_int_xor_blocks(iOffset_star, ocb->Offset_current, ocb->L_star, ocb->block_len); - - /* Pad = ENCIPHER(K, Offset_*) */ - if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(iOffset_star, iPad, &ocb->key)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* C_* = P_* xor Pad[1..bitlen(P_*)] */ - ocb3_int_xor_blocks(ct+full_blocks_len, pt+full_blocks_len, iPad, last_block_len); - - /* Checksum_* = Checksum_m xor (P_* || 1 || zeros(127-bitlen(P_*))) */ - ocb3_int_xor_blocks(ocb->checksum, ocb->checksum, pt+full_blocks_len, last_block_len); - for(x=last_block_len; xblock_len; x++) { - if (x == last_block_len) - ocb->checksum[x] ^= 0x80; - else - ocb->checksum[x] ^= 0x00; - } - - /* Tag = ENCIPHER(K, Checksum_* xor Offset_* xor L_$) xor HASH(K,A) */ - /* at this point we calculate only: Tag_part = ENCIPHER(K, Checksum_* xor Offset_* xor L_$) */ - for(x=0; xblock_len; x++) { - ocb->tag_part[x] = (ocb->checksum[x] ^ iOffset_star[x]) ^ ocb->L_dollar[x]; - } - if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(ocb->tag_part, ocb->tag_part, &ocb->key)) != CRYPT_OK) { - goto LBL_ERR; - } - } - else { - /* Tag = ENCIPHER(K, Checksum_m xor Offset_m xor L_$) xor HASH(K,A) */ - /* at this point we calculate only: Tag_part = ENCIPHER(K, Checksum_m xor Offset_m xor L_$) */ - for(x=0; xblock_len; x++) { - ocb->tag_part[x] = (ocb->checksum[x] ^ ocb->Offset_current[x]) ^ ocb->L_dollar[x]; - } - if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(ocb->tag_part, ocb->tag_part, &ocb->key)) != CRYPT_OK) { - goto LBL_ERR; - } - } - - err = CRYPT_OK; - -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(iOffset_star, MAXBLOCKSIZE); - zeromem(iPad, MAXBLOCKSIZE); -#endif - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb3/ocb3_init.c b/src/libtomcrypt/src/encauth/ocb3/ocb3_init.c deleted file mode 100644 index 06a9b5f397..0000000000 --- a/src/libtomcrypt/src/encauth/ocb3/ocb3_init.c +++ /dev/null @@ -1,196 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb3_init.c - OCB implementation, initialize state, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB3_MODE - -static void _ocb3_int_calc_offset_zero(ocb3_state *ocb, const unsigned char *nonce, unsigned long noncelen, unsigned long taglen) -{ - int x, y, bottom; - int idx, shift; - unsigned char iNonce[MAXBLOCKSIZE]; - unsigned char iKtop[MAXBLOCKSIZE]; - unsigned char iStretch[MAXBLOCKSIZE+8]; - - /* Nonce = zeros(127-bitlen(N)) || 1 || N */ - zeromem(iNonce, sizeof(iNonce)); - for (x = ocb->block_len-1, y=0; y<(int)noncelen; x--, y++) { - iNonce[x] = nonce[noncelen-y-1]; - } - iNonce[x] = 0x01; - iNonce[0] |= ((taglen*8) % 128) << 1; - - /* bottom = str2num(Nonce[123..128]) */ - bottom = iNonce[ocb->block_len-1] & 0x3F; - - /* Ktop = ENCIPHER(K, Nonce[1..122] || zeros(6)) */ - iNonce[ocb->block_len-1] = iNonce[ocb->block_len-1] & 0xC0; - if ((cipher_descriptor[ocb->cipher].ecb_encrypt(iNonce, iKtop, &ocb->key)) != CRYPT_OK) { - zeromem(ocb->Offset_current, ocb->block_len); - return; - } - - /* Stretch = Ktop || (Ktop[1..64] xor Ktop[9..72]) */ - for (x = 0; x < ocb->block_len; x++) { - iStretch[x] = iKtop[x]; - } - for (y = 0; y < 8; y++) { - iStretch[x+y] = iKtop[y] ^ iKtop[y+1]; - } - - /* Offset_0 = Stretch[1+bottom..128+bottom] */ - idx = bottom / 8; - shift = (bottom % 8); - for (x = 0; x < ocb->block_len; x++) { - ocb->Offset_current[x] = iStretch[idx+x] << shift; - if (shift > 0) { - ocb->Offset_current[x] |= iStretch[idx+x+1] >> (8-shift); - } - } -} - -static const struct { - int len; - unsigned char poly_mul[MAXBLOCKSIZE]; -} polys[] = { -{ - 8, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B } -}, { - 16, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87 } -} -}; - -/** - Initialize an OCB context - @param ocb [out] The destination of the OCB state - @param cipher The index of the desired cipher - @param key The secret key - @param keylen The length of the secret key (octets) - @param nonce The session nonce - @param noncelen The length of the session nonce (octets, up to 15) - @param taglen The length of the tag (octets, up to 16) - @return CRYPT_OK if successful -*/ -int ocb3_init(ocb3_state *ocb, int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, unsigned long noncelen, - unsigned long taglen) -{ - int poly, x, y, m, err; - unsigned char *previous, *current; - - LTC_ARGCHK(ocb != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(nonce != NULL); - - /* valid cipher? */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - ocb->cipher = cipher; - - /* Valid Nonce? - * As of RFC7253: "string of no more than 120 bits" */ - if (noncelen > (120/8)) { - return CRYPT_INVALID_ARG; - } - - /* The blockcipher must have a 128-bit blocksize */ - if (cipher_descriptor[cipher].block_length != 16) { - return CRYPT_INVALID_ARG; - } - - /* The TAGLEN may be any value up to 128 (bits) */ - if (taglen > 16) { - return CRYPT_INVALID_ARG; - } - ocb->tag_len = taglen; - - /* determine which polys to use */ - ocb->block_len = cipher_descriptor[cipher].block_length; - x = (int)(sizeof(polys)/sizeof(polys[0])); - for (poly = 0; poly < x; poly++) { - if (polys[poly].len == ocb->block_len) { - break; - } - } - if (poly == x) { - return CRYPT_INVALID_ARG; /* block_len not found in polys */ - } - if (polys[poly].len != ocb->block_len) { - return CRYPT_INVALID_ARG; - } - - /* schedule the key */ - if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &ocb->key)) != CRYPT_OK) { - return err; - } - - /* L_* = ENCIPHER(K, zeros(128)) */ - zeromem(ocb->L_star, ocb->block_len); - if ((err = cipher_descriptor[cipher].ecb_encrypt(ocb->L_star, ocb->L_star, &ocb->key)) != CRYPT_OK) { - return err; - } - - /* compute L_$, L_0, L_1, ... */ - for (x = -1; x < 32; x++) { - if (x == -1) { /* gonna compute: L_$ = double(L_*) */ - current = ocb->L_dollar; - previous = ocb->L_star; - } - else if (x == 0) { /* gonna compute: L_0 = double(L_$) */ - current = ocb->L_[0]; - previous = ocb->L_dollar; - } - else { /* gonna compute: L_i = double(L_{i-1}) for every integer i > 0 */ - current = ocb->L_[x]; - previous = ocb->L_[x-1]; - } - m = previous[0] >> 7; - for (y = 0; y < ocb->block_len-1; y++) { - current[y] = ((previous[y] << 1) | (previous[y+1] >> 7)) & 255; - } - current[ocb->block_len-1] = (previous[ocb->block_len-1] << 1) & 255; - if (m == 1) { - /* current[] = current[] XOR polys[poly].poly_mul[]*/ - ocb3_int_xor_blocks(current, current, polys[poly].poly_mul, ocb->block_len); - } - } - - /* initialize ocb->Offset_current = Offset_0 */ - _ocb3_int_calc_offset_zero(ocb, nonce, noncelen, taglen); - - /* initialize checksum to all zeros */ - zeromem(ocb->checksum, ocb->block_len); - - /* set block index */ - ocb->block_index = 1; - - /* initialize AAD related stuff */ - ocb->ablock_index = 1; - ocb->adata_buffer_bytes = 0; - zeromem(ocb->aOffset_current, ocb->block_len); - zeromem(ocb->aSum_current, ocb->block_len); - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb3/ocb3_int_ntz.c b/src/libtomcrypt/src/encauth/ocb3/ocb3_int_ntz.c deleted file mode 100644 index 442c40b8c5..0000000000 --- a/src/libtomcrypt/src/encauth/ocb3/ocb3_int_ntz.c +++ /dev/null @@ -1,39 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb3_int_ntz.c - OCB implementation, INTERNAL ONLY helper, by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB3_MODE - -/** - Returns the number of leading zero bits [from lsb up] (internal function) - @param x The 32-bit value to observe - @return The number of bits [from the lsb up] that are zero -*/ -int ocb3_int_ntz(unsigned long x) -{ - int c; - x &= 0xFFFFFFFFUL; - c = 0; - while ((x & 1) == 0) { - ++c; - x >>= 1; - } - return c; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb3/ocb3_int_xor_blocks.c b/src/libtomcrypt/src/encauth/ocb3/ocb3_int_xor_blocks.c deleted file mode 100644 index 8f3e5d6919..0000000000 --- a/src/libtomcrypt/src/encauth/ocb3/ocb3_int_xor_blocks.c +++ /dev/null @@ -1,40 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb3_int_xor_blocks.c - OCB implementation, INTERNAL ONLY helper, by Karel Miko -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB3_MODE - -/** - Compute xor for two blocks of bytes 'out = block_a XOR block_b' (internal function) - @param out The block of bytes (output) - @param block_a The block of bytes (input) - @param block_b The block of bytes (input) - @param block_len The size of block_a, block_b, out -*/ -void ocb3_int_xor_blocks(unsigned char *out, const unsigned char *block_a, const unsigned char *block_b, unsigned long block_len) -{ - int x; - if (out == block_a) { - for (x = 0; x < (int)block_len; x++) out[x] ^= block_b[x]; - } - else { - for (x = 0; x < (int)block_len; x++) out[x] = block_a[x] ^ block_b[x]; - } -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/encauth/ocb3/ocb3_test.c b/src/libtomcrypt/src/encauth/ocb3/ocb3_test.c deleted file mode 100644 index 9aaf3098bc..0000000000 --- a/src/libtomcrypt/src/encauth/ocb3/ocb3_test.c +++ /dev/null @@ -1,309 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file ocb3_test.c - OCB implementation, self-test by Tom St Denis -*/ -#include "tomcrypt.h" - -#ifdef LTC_OCB3_MODE - -/** - Test the OCB protocol - @return CRYPT_OK if successful -*/ -int ocb3_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - /* test vectors from: http://tools.ietf.org/html/draft-krovetz-ocb-03 */ - unsigned char key[16] = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F }; - unsigned char nonce[12] = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B }; - const struct { - int ptlen; - int aadlen; - unsigned char pt[64], aad[64], ct[64], tag[16]; - } tests[] = { - - { /* index:0 */ - 0, /* PLAINTEXT length */ - 0, /* AAD length */ - { 0 }, /* PLAINTEXT */ - { 0 }, /* AAD */ - { 0 }, /* CIPHERTEXT */ - { 0x19,0x7b,0x9c,0x3c,0x44,0x1d,0x3c,0x83,0xea,0xfb,0x2b,0xef,0x63,0x3b,0x91,0x82 }, /* TAG */ - }, - { /* index:1 */ - 8, /* PLAINTEXT length */ - 8, /* AAD length */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 }, /* PLAINTEXT */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 }, /* AAD */ - { 0x92,0xb6,0x57,0x13,0x0a,0x74,0xb8,0x5a }, /* CIPHERTEXT */ - { 0x16,0xdc,0x76,0xa4,0x6d,0x47,0xe1,0xea,0xd5,0x37,0x20,0x9e,0x8a,0x96,0xd1,0x4e }, /* TAG */ - }, - { /* index:2 */ - 0, /* PLAINTEXT length */ - 8, /* AAD length */ - { 0 }, /* PLAINTEXT */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 }, /* AAD */ - { 0 }, /* CIPHERTEXT */ - { 0x98,0xb9,0x15,0x52,0xc8,0xc0,0x09,0x18,0x50,0x44,0xe3,0x0a,0x6e,0xb2,0xfe,0x21 }, /* TAG */ - }, - { /* index:3 */ - 8, /* PLAINTEXT length */ - 0, /* AAD length */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 }, /* PLAINTEXT */ - { 0 }, /* AAD */ - { 0x92,0xb6,0x57,0x13,0x0a,0x74,0xb8,0x5a }, /* CIPHERTEXT */ - { 0x97,0x1e,0xff,0xca,0xe1,0x9a,0xd4,0x71,0x6f,0x88,0xe8,0x7b,0x87,0x1f,0xbe,0xed }, /* TAG */ - }, - { /* index:4 */ - 16, /* PLAINTEXT length */ - 16, /* AAD length */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f }, /* PLAINTEXT */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f }, /* AAD */ - { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22 }, /* CIPHERTEXT */ - { 0x77,0x6c,0x99,0x24,0xd6,0x72,0x3a,0x1f,0xc4,0x52,0x45,0x32,0xac,0x3e,0x5b,0xeb }, /* TAG */ - }, - { /* index:5 */ - 0, /* PLAINTEXT length */ - 16, /* AAD length */ - { 0 }, /* PLAINTEXT */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f }, /* AAD */ - { 0 }, /* CIPHERTEXT */ - { 0x7d,0xdb,0x8e,0x6c,0xea,0x68,0x14,0x86,0x62,0x12,0x50,0x96,0x19,0xb1,0x9c,0xc6 }, /* TAG */ - }, - { /* index:6 */ - 16, /* PLAINTEXT length */ - 0, /* AAD length */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f }, /* PLAINTEXT */ - { 0 }, /* AAD */ - { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22 }, /* CIPHERTEXT */ - { 0x13,0xcc,0x8b,0x74,0x78,0x07,0x12,0x1a,0x4c,0xbb,0x3e,0x4b,0xd6,0xb4,0x56,0xaf }, /* TAG */ - }, - { /* index:7 */ - 24, /* PLAINTEXT length */ - 24, /* AAD length */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17 }, /* PLAINTEXT */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17 }, /* AAD */ - { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22,0xfc,0xfc,0xee,0x7a,0x2a,0x8d,0x4d,0x48 }, /* CIPHERTEXT */ - { 0x5f,0xa9,0x4f,0xc3,0xf3,0x88,0x20,0xf1,0xdc,0x3f,0x3d,0x1f,0xd4,0xe5,0x5e,0x1c }, /* TAG */ - }, - { /* index:8 */ - 0, /* PLAINTEXT length */ - 24, /* AAD length */ - { 0 }, /* PLAINTEXT */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17 }, /* AAD */ - { 0 }, /* CIPHERTEXT */ - { 0x28,0x20,0x26,0xda,0x30,0x68,0xbc,0x9f,0xa1,0x18,0x68,0x1d,0x55,0x9f,0x10,0xf6 }, /* TAG */ - }, - { /* index:9 */ - 24, /* PLAINTEXT length */ - 0, /* AAD length */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17 }, /* PLAINTEXT */ - { 0 }, /* AAD */ - { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22,0xfc,0xfc,0xee,0x7a,0x2a,0x8d,0x4d,0x48 }, /* CIPHERTEXT */ - { 0x6e,0xf2,0xf5,0x25,0x87,0xfd,0xa0,0xed,0x97,0xdc,0x7e,0xed,0xe2,0x41,0xdf,0x68 }, /* TAG */ - }, - { /* index:10 */ - 32, /* PLAINTEXT length */ - 32, /* AAD length */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f }, /* PLAINTEXT */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f }, /* AAD */ - { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22,0xce,0xaa,0xb9,0xb0,0x5d,0xf7,0x71,0xa6,0x57,0x14,0x9d,0x53,0x77,0x34,0x63,0xcb }, /* CIPHERTEXT */ - { 0xb2,0xa0,0x40,0xdd,0x3b,0xd5,0x16,0x43,0x72,0xd7,0x6d,0x7b,0xb6,0x82,0x42,0x40 }, /* TAG */ - }, - { /* index:11 */ - 0, /* PLAINTEXT length */ - 32, /* AAD length */ - { 0 }, /* PLAINTEXT */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f }, /* AAD */ - { 0 }, /* CIPHERTEXT */ - { 0xe1,0xe0,0x72,0x63,0x3b,0xad,0xe5,0x1a,0x60,0xe8,0x59,0x51,0xd9,0xc4,0x2a,0x1b }, /* TAG */ - }, - { /* index:12 */ - 32, /* PLAINTEXT length */ - 0, /* AAD length */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f }, /* PLAINTEXT */ - { 0 }, /* AAD */ - { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22,0xce,0xaa,0xb9,0xb0,0x5d,0xf7,0x71,0xa6,0x57,0x14,0x9d,0x53,0x77,0x34,0x63,0xcb }, /* CIPHERTEXT */ - { 0x4a,0x3b,0xae,0x82,0x44,0x65,0xcf,0xda,0xf8,0xc4,0x1f,0xc5,0x0c,0x7d,0xf9,0xd9 }, /* TAG */ - }, - { /* index:13 */ - 40, /* PLAINTEXT length */ - 40, /* AAD length */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 }, /* PLAINTEXT */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 }, /* AAD */ - { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22,0xce,0xaa,0xb9,0xb0,0x5d,0xf7,0x71,0xa6,0x57,0x14,0x9d,0x53,0x77,0x34,0x63,0xcb,0x68,0xc6,0x57,0x78,0xb0,0x58,0xa6,0x35 }, /* CIPHERTEXT */ - { 0x65,0x9c,0x62,0x32,0x11,0xde,0xea,0x0d,0xe3,0x0d,0x2c,0x38,0x18,0x79,0xf4,0xc8 }, /* TAG */ - }, - { /* index:14 */ - 0, /* PLAINTEXT length */ - 40, /* AAD length */ - { 0 }, /* PLAINTEXT */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 }, /* AAD */ - { 0 }, /* CIPHERTEXT */ - { 0x7a,0xeb,0x7a,0x69,0xa1,0x68,0x7d,0xd0,0x82,0xca,0x27,0xb0,0xd9,0xa3,0x70,0x96 }, /* TAG */ - }, - { /* index:15 */ - 40, /* PLAINTEXT length */ - 0, /* AAD length */ - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 }, /* PLAINTEXT */ - { 0 }, /* AAD */ - { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22,0xce,0xaa,0xb9,0xb0,0x5d,0xf7,0x71,0xa6,0x57,0x14,0x9d,0x53,0x77,0x34,0x63,0xcb,0x68,0xc6,0x57,0x78,0xb0,0x58,0xa6,0x35 }, /* CIPHERTEXT */ - { 0x06,0x0c,0x84,0x67,0xf4,0xab,0xab,0x5e,0x8b,0x3c,0x20,0x67,0xa2,0xe1,0x15,0xdc }, /* TAG */ - }, - -}; - /* As of RFC 7253 - 'Appendix A. Sample Results' - * The next tuple shows a result with a tag length of 96 bits and a - different key. - - K: 0F0E0D0C0B0A09080706050403020100 - - N: BBAA9988776655443322110D - A: 000102030405060708090A0B0C0D0E0F1011121314151617 - 18191A1B1C1D1E1F2021222324252627 - P: 000102030405060708090A0B0C0D0E0F1011121314151617 - 18191A1B1C1D1E1F2021222324252627 - C: 1792A4E31E0755FB03E31B22116E6C2DDF9EFD6E33D536F1 - A0124B0A55BAE884ED93481529C76B6AD0C515F4D1CDD4FD - AC4F02AA - - The C has been split up in C and T (tag) - */ - const unsigned char K[] = { 0x0F,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08, - 0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00 }; - const unsigned char N[] = { 0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44, - 0x33,0x22,0x11,0x0D }; - const unsigned char A[] = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, - 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, - 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, - 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, - 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 }; - const unsigned char P[] = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, - 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, - 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, - 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, - 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 }; - const unsigned char C[] = { 0x17,0x92,0xA4,0xE3,0x1E,0x07,0x55,0xFB, - 0x03,0xE3,0x1B,0x22,0x11,0x6E,0x6C,0x2D, - 0xDF,0x9E,0xFD,0x6E,0x33,0xD5,0x36,0xF1, - 0xA0,0x12,0x4B,0x0A,0x55,0xBA,0xE8,0x84, - 0xED,0x93,0x48,0x15,0x29,0xC7,0x6B,0x6A }; - const unsigned char T[] = { 0xD0,0xC5,0x15,0xF4,0xD1,0xCD,0xD4,0xFD, - 0xAC,0x4F,0x02,0xAA }; - - int err, x, idx, res; - unsigned long len; - unsigned char outct[MAXBLOCKSIZE] = { 0 }; - unsigned char outtag[MAXBLOCKSIZE] = { 0 }; - ocb3_state ocb; - - /* AES can be under rijndael or aes... try to find it */ - if ((idx = find_cipher("aes")) == -1) { - if ((idx = find_cipher("rijndael")) == -1) { - return CRYPT_NOP; - } - } - - for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - len = 16; /* must be the same as the required taglen */ - if ((err = ocb3_encrypt_authenticate_memory(idx, - key, sizeof(key), - nonce, sizeof(nonce), - tests[x].aadlen != 0 ? tests[x].aad : NULL, tests[x].aadlen, - tests[x].ptlen != 0 ? tests[x].pt : NULL, tests[x].ptlen, - tests[x].ptlen != 0 ? outct : NULL, outtag, &len)) != CRYPT_OK) { - return err; - } - - if (compare_testvector(outtag, len, tests[x].tag, sizeof(tests[x].tag), "OCB3 Tag", x) || - compare_testvector(outct, tests[x].ptlen, tests[x].ct, tests[x].ptlen, "OCB3 CT", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - - if ((err = ocb3_decrypt_verify_memory(idx, - key, sizeof(key), - nonce, sizeof(nonce), - tests[x].aadlen != 0 ? tests[x].aad : NULL, tests[x].aadlen, - tests[x].ptlen != 0 ? outct : NULL, tests[x].ptlen, - tests[x].ptlen != 0 ? outct : NULL, tests[x].tag, len, &res)) != CRYPT_OK) { - return err; - } - if ((res != 1) || compare_testvector(outct, tests[x].ptlen, tests[x].pt, tests[x].ptlen, "OCB3", x)) { -#ifdef LTC_TEST_DBG - printf("\n\nOCB3: Failure-decrypt - res = %d\n", res); -#endif - return CRYPT_FAIL_TESTVECTOR; - } - } - - /* RFC 7253 - test vector with a tag length of 96 bits - part 1 */ - x = 99; - len = 12; - if ((err = ocb3_encrypt_authenticate_memory(idx, - K, sizeof(K), - N, sizeof(N), - A, sizeof(A), - P, sizeof(P), - outct, outtag, &len)) != CRYPT_OK) { - return err; - } - - if (compare_testvector(outtag, len, T, sizeof(T), "OCB3 Tag", x) || - compare_testvector(outct, sizeof(P), C, sizeof(C), "OCB3 CT", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - - if ((err = ocb3_decrypt_verify_memory(idx, - K, sizeof(K), - N, sizeof(N), - A, sizeof(A), - C, sizeof(C), - outct, T, sizeof(T), &res)) != CRYPT_OK) { - return err; - } - if ((res != 1) || compare_testvector(outct, sizeof(C), P, sizeof(P), "OCB3", x)) { -#ifdef LTC_TEST_DBG - printf("\n\nOCB3: Failure-decrypt - res = %d\n", res); -#endif - return CRYPT_FAIL_TESTVECTOR; - } - - /* RFC 7253 - test vector with a tag length of 96 bits - part 2 */ - x = 100; - if ((err = ocb3_init(&ocb, idx, K, sizeof(K), N, sizeof(N), 12)) != CRYPT_OK) return err; - if ((err = ocb3_add_aad(&ocb, A, sizeof(A))) != CRYPT_OK) return err; - if ((err = ocb3_encrypt(&ocb, P, 32, outct)) != CRYPT_OK) return err; - if ((err = ocb3_encrypt_last(&ocb, P+32, sizeof(P)-32, outct+32)) != CRYPT_OK) return err; - len = sizeof(outtag); /* intentionally more than 12 */ - if ((err = ocb3_done(&ocb, outtag, &len)) != CRYPT_OK) return err; - if (compare_testvector(outct, sizeof(P), C, sizeof(C), "OCB3 CT", x)) return CRYPT_FAIL_TESTVECTOR; - if (compare_testvector(outtag, len, T, sizeof(T), "OCB3 Tag.enc", x)) return CRYPT_FAIL_TESTVECTOR; - if ((err = ocb3_init(&ocb, idx, K, sizeof(K), N, sizeof(N), 12)) != CRYPT_OK) return err; - if ((err = ocb3_add_aad(&ocb, A, sizeof(A))) != CRYPT_OK) return err; - if ((err = ocb3_decrypt(&ocb, C, 32, outct)) != CRYPT_OK) return err; - if ((err = ocb3_decrypt_last(&ocb, C+32, sizeof(C)-32, outct+32)) != CRYPT_OK) return err; - len = sizeof(outtag); /* intentionally more than 12 */ - if ((err = ocb3_done(&ocb, outtag, &len)) != CRYPT_OK) return err; - if (compare_testvector(outct, sizeof(C), P, sizeof(P), "OCB3 PT", x)) return CRYPT_FAIL_TESTVECTOR; - if (compare_testvector(outtag, len, T, sizeof(T), "OCB3 Tag.dec", x)) return CRYPT_FAIL_TESTVECTOR; - - return CRYPT_OK; -#endif /* LTC_TEST */ -} - -#endif /* LTC_OCB3_MODE */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/blake2b.c b/src/libtomcrypt/src/hashes/blake2b.c deleted file mode 100644 index 58d3b64977..0000000000 --- a/src/libtomcrypt/src/hashes/blake2b.c +++ /dev/null @@ -1,588 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* - BLAKE2 reference source code package - reference C implementations - - Copyright 2012, Samuel Neves . You may use this under the - terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at - your option. The terms of these licenses can be found at: - - - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 - - OpenSSL license : https://www.openssl.org/source/license.html - - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - - More information about the BLAKE2 hash function can be found at - https://blake2.net. -*/ -/* see also https://www.ietf.org/rfc/rfc7693.txt */ - -#include "tomcrypt.h" - -#ifdef LTC_BLAKE2B - -enum blake2b_constant { - BLAKE2B_BLOCKBYTES = 128, - BLAKE2B_OUTBYTES = 64, - BLAKE2B_KEYBYTES = 64, - BLAKE2B_SALTBYTES = 16, - BLAKE2B_PERSONALBYTES = 16, - BLAKE2B_PARAM_SIZE = 64 -}; - -/* param offsets */ -enum { - O_DIGEST_LENGTH = 0, - O_KEY_LENGTH = 1, - O_FANOUT = 2, - O_DEPTH = 3, - O_LEAF_LENGTH = 4, - O_NODE_OFFSET = 8, - O_XOF_LENGTH = 12, - O_NODE_DEPTH = 16, - O_INNER_LENGTH = 17, - O_RESERVED = 18, - O_SALT = 32, - O_PERSONAL = 48 -}; - -/* -struct blake2b_param { - unsigned char digest_length; - unsigned char key_length; - unsigned char fanout; - unsigned char depth; - ulong32 leaf_length; - ulong32 node_offset; - ulong32 xof_length; - unsigned char node_depth; - unsigned char inner_length; - unsigned char reserved[14]; - unsigned char salt[BLAKE2B_SALTBYTES]; - unsigned char personal[BLAKE2B_PERSONALBYTES]; -}; -*/ - -const struct ltc_hash_descriptor blake2b_160_desc = -{ - "blake2b-160", - 25, - 20, - 128, - { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 1, 5 }, - 11, - &blake2b_160_init, - &blake2b_process, - &blake2b_done, - &blake2b_160_test, - NULL -}; - -const struct ltc_hash_descriptor blake2b_256_desc = -{ - "blake2b-256", - 26, - 32, - 128, - { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 1, 8 }, - 11, - &blake2b_256_init, - &blake2b_process, - &blake2b_done, - &blake2b_256_test, - NULL -}; - -const struct ltc_hash_descriptor blake2b_384_desc = -{ - "blake2b-384", - 27, - 48, - 128, - { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 1, 12 }, - 11, - &blake2b_384_init, - &blake2b_process, - &blake2b_done, - &blake2b_384_test, - NULL -}; - -const struct ltc_hash_descriptor blake2b_512_desc = -{ - "blake2b-512", - 28, - 64, - 128, - { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 1, 16 }, - 11, - &blake2b_512_init, - &blake2b_process, - &blake2b_done, - &blake2b_512_test, - NULL -}; - -static const ulong64 blake2b_IV[8] = -{ - CONST64(0x6a09e667f3bcc908), CONST64(0xbb67ae8584caa73b), - CONST64(0x3c6ef372fe94f82b), CONST64(0xa54ff53a5f1d36f1), - CONST64(0x510e527fade682d1), CONST64(0x9b05688c2b3e6c1f), - CONST64(0x1f83d9abfb41bd6b), CONST64(0x5be0cd19137e2179) -}; - -static const unsigned char blake2b_sigma[12][16] = -{ - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } , - { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } , - { 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 } , - { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 } , - { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 } , - { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 } , - { 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11 } , - { 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10 } , - { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5 } , - { 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0 } , - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } , - { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } -}; - -static void blake2b_set_lastnode(hash_state *md) { md->blake2b.f[1] = CONST64(0xffffffffffffffff); } - -/* Some helper functions, not necessarily useful */ -static int blake2b_is_lastblock(const hash_state *md) { return md->blake2b.f[0] != 0; } - -static void blake2b_set_lastblock(hash_state *md) -{ - if (md->blake2b.last_node) - blake2b_set_lastnode(md); - - md->blake2b.f[0] = CONST64(0xffffffffffffffff); -} - -static void blake2b_increment_counter(hash_state *md, ulong64 inc) -{ - md->blake2b.t[0] += inc; - if (md->blake2b.t[0] < inc) md->blake2b.t[1]++; -} - -static void blake2b_init0(hash_state *md) -{ - unsigned long i; - XMEMSET(&md->blake2b, 0, sizeof(md->blake2b)); - - for (i = 0; i < 8; ++i) - md->blake2b.h[i] = blake2b_IV[i]; -} - -/* init xors IV with input parameter block */ -static int blake2b_init_param(hash_state *md, const unsigned char *P) -{ - unsigned long i; - - blake2b_init0(md); - - /* IV XOR ParamBlock */ - for (i = 0; i < 8; ++i) { - ulong64 tmp; - LOAD64L(tmp, P + i * 8); - md->blake2b.h[i] ^= tmp; - } - - md->blake2b.outlen = P[O_DIGEST_LENGTH]; - return CRYPT_OK; -} - -int blake2b_init(hash_state *md, unsigned long outlen, const unsigned char *key, unsigned long keylen) -{ - unsigned char P[BLAKE2B_PARAM_SIZE]; - int err; - - LTC_ARGCHK(md != NULL); - - if ((!outlen) || (outlen > BLAKE2B_OUTBYTES)) - return CRYPT_INVALID_ARG; - - if ((key && !keylen) || (keylen && !key) || (keylen > BLAKE2B_KEYBYTES)) - return CRYPT_INVALID_ARG; - - XMEMSET(P, 0, sizeof(P)); - - P[O_DIGEST_LENGTH] = (unsigned char)outlen; - P[O_KEY_LENGTH] = (unsigned char)keylen; - P[O_FANOUT] = 1; - P[O_DEPTH] = 1; - - err = blake2b_init_param(md, P); - if (err != CRYPT_OK) return err; - - if (key) { - unsigned char block[BLAKE2B_BLOCKBYTES]; - - XMEMSET(block, 0, BLAKE2B_BLOCKBYTES); - XMEMCPY(block, key, keylen); - blake2b_process(md, block, BLAKE2B_BLOCKBYTES); - -#ifdef LTC_CLEAN_STACK - zeromem(block, sizeof(block)); -#endif - } - - return CRYPT_OK; -} - -int blake2b_160_init(hash_state *md) { return blake2b_init(md, 20, NULL, 0); } - -int blake2b_256_init(hash_state *md) { return blake2b_init(md, 32, NULL, 0); } - -int blake2b_384_init(hash_state *md) { return blake2b_init(md, 48, NULL, 0); } - -int blake2b_512_init(hash_state *md) { return blake2b_init(md, 64, NULL, 0); } - -#define G(r, i, a, b, c, d) \ - do { \ - a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \ - d = ROR64(d ^ a, 32); \ - c = c + d; \ - b = ROR64(b ^ c, 24); \ - a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \ - d = ROR64(d ^ a, 16); \ - c = c + d; \ - b = ROR64(b ^ c, 63); \ - } while (0) - -#define ROUND(r) \ - do { \ - G(r, 0, v[0], v[4], v[8], v[12]); \ - G(r, 1, v[1], v[5], v[9], v[13]); \ - G(r, 2, v[2], v[6], v[10], v[14]); \ - G(r, 3, v[3], v[7], v[11], v[15]); \ - G(r, 4, v[0], v[5], v[10], v[15]); \ - G(r, 5, v[1], v[6], v[11], v[12]); \ - G(r, 6, v[2], v[7], v[8], v[13]); \ - G(r, 7, v[3], v[4], v[9], v[14]); \ - } while (0) - -#ifdef LTC_CLEAN_STACK -static int _blake2b_compress(hash_state *md, const unsigned char *buf) -#else -static int blake2b_compress(hash_state *md, const unsigned char *buf) -#endif -{ - ulong64 m[16]; - ulong64 v[16]; - unsigned long i; - - for (i = 0; i < 16; ++i) { - LOAD64L(m[i], buf + i * sizeof(m[i])); - } - - for (i = 0; i < 8; ++i) { - v[i] = md->blake2b.h[i]; - } - - v[8] = blake2b_IV[0]; - v[9] = blake2b_IV[1]; - v[10] = blake2b_IV[2]; - v[11] = blake2b_IV[3]; - v[12] = blake2b_IV[4] ^ md->blake2b.t[0]; - v[13] = blake2b_IV[5] ^ md->blake2b.t[1]; - v[14] = blake2b_IV[6] ^ md->blake2b.f[0]; - v[15] = blake2b_IV[7] ^ md->blake2b.f[1]; - - ROUND(0); - ROUND(1); - ROUND(2); - ROUND(3); - ROUND(4); - ROUND(5); - ROUND(6); - ROUND(7); - ROUND(8); - ROUND(9); - ROUND(10); - ROUND(11); - - for (i = 0; i < 8; ++i) { - md->blake2b.h[i] = md->blake2b.h[i] ^ v[i] ^ v[i + 8]; - } - return CRYPT_OK; -} - -#undef G -#undef ROUND - -#ifdef LTC_CLEAN_STACK -static int blake2b_compress(hash_state *md, const unsigned char *buf) -{ - int err; - err = _blake2b_compress(md, buf); - burn_stack(sizeof(ulong64) * 32 + sizeof(unsigned long)); - return err; -} -#endif - -int blake2b_process(hash_state *md, const unsigned char *in, unsigned long inlen) -{ - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(in != NULL); - - if (md->blake2b.curlen > sizeof(md->blake2b.buf)) { - return CRYPT_INVALID_ARG; - } - - if (inlen > 0) { - unsigned long left = md->blake2b.curlen; - unsigned long fill = BLAKE2B_BLOCKBYTES - left; - if (inlen > fill) { - md->blake2b.curlen = 0; - XMEMCPY(md->blake2b.buf + (left % sizeof(md->blake2b.buf)), in, fill); /* Fill buffer */ - blake2b_increment_counter(md, BLAKE2B_BLOCKBYTES); - blake2b_compress(md, md->blake2b.buf); /* Compress */ - in += fill; - inlen -= fill; - while (inlen > BLAKE2B_BLOCKBYTES) { - blake2b_increment_counter(md, BLAKE2B_BLOCKBYTES); - blake2b_compress(md, in); - in += BLAKE2B_BLOCKBYTES; - inlen -= BLAKE2B_BLOCKBYTES; - } - } - XMEMCPY(md->blake2b.buf + md->blake2b.curlen, in, inlen); - md->blake2b.curlen += inlen; - } - return CRYPT_OK; -} - -int blake2b_done(hash_state *md, unsigned char *out) -{ - unsigned char buffer[BLAKE2B_OUTBYTES] = { 0 }; - unsigned long i; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - /* if(md->blakebs.outlen != outlen) return CRYPT_INVALID_ARG; */ - - if (blake2b_is_lastblock(md)) - return CRYPT_ERROR; - - blake2b_increment_counter(md, md->blake2b.curlen); - blake2b_set_lastblock(md); - XMEMSET(md->blake2b.buf + md->blake2b.curlen, 0, BLAKE2B_BLOCKBYTES - md->blake2b.curlen); /* Padding */ - blake2b_compress(md, md->blake2b.buf); - - for (i = 0; i < 8; ++i) /* Output full hash to temp buffer */ - STORE64L(md->blake2b.h[i], buffer + i * 8); - - XMEMCPY(out, buffer, md->blake2b.outlen); - zeromem(md, sizeof(hash_state)); -#ifdef LTC_CLEAN_STACK - zeromem(buffer, sizeof(buffer)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int blake2b_512_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - const char *msg; - unsigned char hash[64]; - } tests[] = { - { "", - { 0x78, 0x6a, 0x02, 0xf7, 0x42, 0x01, 0x59, 0x03, - 0xc6, 0xc6, 0xfd, 0x85, 0x25, 0x52, 0xd2, 0x72, - 0x91, 0x2f, 0x47, 0x40, 0xe1, 0x58, 0x47, 0x61, - 0x8a, 0x86, 0xe2, 0x17, 0xf7, 0x1f, 0x54, 0x19, - 0xd2, 0x5e, 0x10, 0x31, 0xaf, 0xee, 0x58, 0x53, - 0x13, 0x89, 0x64, 0x44, 0x93, 0x4e, 0xb0, 0x4b, - 0x90, 0x3a, 0x68, 0x5b, 0x14, 0x48, 0xb7, 0x55, - 0xd5, 0x6f, 0x70, 0x1a, 0xfe, 0x9b, 0xe2, 0xce } }, - { "abc", - { 0xba, 0x80, 0xa5, 0x3f, 0x98, 0x1c, 0x4d, 0x0d, - 0x6a, 0x27, 0x97, 0xb6, 0x9f, 0x12, 0xf6, 0xe9, - 0x4c, 0x21, 0x2f, 0x14, 0x68, 0x5a, 0xc4, 0xb7, - 0x4b, 0x12, 0xbb, 0x6f, 0xdb, 0xff, 0xa2, 0xd1, - 0x7d, 0x87, 0xc5, 0x39, 0x2a, 0xab, 0x79, 0x2d, - 0xc2, 0x52, 0xd5, 0xde, 0x45, 0x33, 0xcc, 0x95, - 0x18, 0xd3, 0x8a, 0xa8, 0xdb, 0xf1, 0x92, 0x5a, - 0xb9, 0x23, 0x86, 0xed, 0xd4, 0x00, 0x99, 0x23 } }, - - { NULL, { 0 } } - }; - - int i; - unsigned char tmp[64]; - hash_state md; - - for (i = 0; tests[i].msg != NULL; i++) { - blake2b_512_init(&md); - blake2b_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - blake2b_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2B_512", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int blake2b_384_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - const char *msg; - unsigned char hash[48]; - } tests[] = { - { "", - { 0xb3, 0x28, 0x11, 0x42, 0x33, 0x77, 0xf5, 0x2d, - 0x78, 0x62, 0x28, 0x6e, 0xe1, 0xa7, 0x2e, 0xe5, - 0x40, 0x52, 0x43, 0x80, 0xfd, 0xa1, 0x72, 0x4a, - 0x6f, 0x25, 0xd7, 0x97, 0x8c, 0x6f, 0xd3, 0x24, - 0x4a, 0x6c, 0xaf, 0x04, 0x98, 0x81, 0x26, 0x73, - 0xc5, 0xe0, 0x5e, 0xf5, 0x83, 0x82, 0x51, 0x00 } }, - { "abc", - { 0x6f, 0x56, 0xa8, 0x2c, 0x8e, 0x7e, 0xf5, 0x26, - 0xdf, 0xe1, 0x82, 0xeb, 0x52, 0x12, 0xf7, 0xdb, - 0x9d, 0xf1, 0x31, 0x7e, 0x57, 0x81, 0x5d, 0xbd, - 0xa4, 0x60, 0x83, 0xfc, 0x30, 0xf5, 0x4e, 0xe6, - 0xc6, 0x6b, 0xa8, 0x3b, 0xe6, 0x4b, 0x30, 0x2d, - 0x7c, 0xba, 0x6c, 0xe1, 0x5b, 0xb5, 0x56, 0xf4 } }, - - { NULL, { 0 } } - }; - - int i; - unsigned char tmp[48]; - hash_state md; - - for (i = 0; tests[i].msg != NULL; i++) { - blake2b_384_init(&md); - blake2b_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - blake2b_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2B_384", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int blake2b_256_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - const char *msg; - unsigned char hash[32]; - } tests[] = { - { "", - { 0x0e, 0x57, 0x51, 0xc0, 0x26, 0xe5, 0x43, 0xb2, - 0xe8, 0xab, 0x2e, 0xb0, 0x60, 0x99, 0xda, 0xa1, - 0xd1, 0xe5, 0xdf, 0x47, 0x77, 0x8f, 0x77, 0x87, - 0xfa, 0xab, 0x45, 0xcd, 0xf1, 0x2f, 0xe3, 0xa8 } }, - { "abc", - { 0xbd, 0xdd, 0x81, 0x3c, 0x63, 0x42, 0x39, 0x72, - 0x31, 0x71, 0xef, 0x3f, 0xee, 0x98, 0x57, 0x9b, - 0x94, 0x96, 0x4e, 0x3b, 0xb1, 0xcb, 0x3e, 0x42, - 0x72, 0x62, 0xc8, 0xc0, 0x68, 0xd5, 0x23, 0x19 } }, - { "12345678901234567890123456789012345678901234567890" - "12345678901234567890123456789012345678901234567890" - "12345678901234567890123456789012345678901234567890" - "12345678901234567890123456789012345678901234567890" - "12345678901234567890123456789012345678901234567890" - "12345678901234567890123456789012345678901234567890", - { 0x0f, 0x6e, 0x01, 0x8d, 0x38, 0xd6, 0x3f, 0x08, - 0x4d, 0x58, 0xe3, 0x0c, 0x90, 0xfb, 0xa2, 0x41, - 0x5f, 0xca, 0x17, 0xfa, 0x66, 0x26, 0x49, 0xf3, - 0x8a, 0x30, 0x41, 0x7c, 0x57, 0xcd, 0xa8, 0x14 } }, - - { NULL, { 0 } } - }; - - int i; - unsigned char tmp[32]; - hash_state md; - - for (i = 0; tests[i].msg != NULL; i++) { - blake2b_256_init(&md); - blake2b_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - blake2b_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2B_256", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int blake2b_160_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - const char *msg; - unsigned char hash[20]; - } tests[] = { - { "", - { 0x33, 0x45, 0x52, 0x4a, 0xbf, 0x6b, 0xbe, 0x18, - 0x09, 0x44, 0x92, 0x24, 0xb5, 0x97, 0x2c, 0x41, - 0x79, 0x0b, 0x6c, 0xf2 } }, - { "abc", - { 0x38, 0x42, 0x64, 0xf6, 0x76, 0xf3, 0x95, 0x36, - 0x84, 0x05, 0x23, 0xf2, 0x84, 0x92, 0x1c, 0xdc, - 0x68, 0xb6, 0x84, 0x6b } }, - - { NULL, { 0 } } - }; - - int i; - unsigned char tmp[20]; - hash_state md; - - for (i = 0; tests[i].msg != NULL; i++) { - blake2b_160_init(&md); - blake2b_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - blake2b_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2B_160", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/blake2s.c b/src/libtomcrypt/src/hashes/blake2s.c deleted file mode 100644 index b6fd567143..0000000000 --- a/src/libtomcrypt/src/hashes/blake2s.c +++ /dev/null @@ -1,563 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* - BLAKE2 reference source code package - reference C implementations - - Copyright 2012, Samuel Neves . You may use this under the - terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at - your option. The terms of these licenses can be found at: - - - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 - - OpenSSL license : https://www.openssl.org/source/license.html - - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 - - More information about the BLAKE2 hash function can be found at - https://blake2.net. -*/ -/* see also https://www.ietf.org/rfc/rfc7693.txt */ - -#include "tomcrypt.h" - -#ifdef LTC_BLAKE2S - -enum blake2s_constant { - BLAKE2S_BLOCKBYTES = 64, - BLAKE2S_OUTBYTES = 32, - BLAKE2S_KEYBYTES = 32, - BLAKE2S_SALTBYTES = 8, - BLAKE2S_PERSONALBYTES = 8, - BLAKE2S_PARAM_SIZE = 32 -}; - -/* param offsets */ -enum { - O_DIGEST_LENGTH = 0, - O_KEY_LENGTH = 1, - O_FANOUT = 2, - O_DEPTH = 3, - O_LEAF_LENGTH = 4, - O_NODE_OFFSET = 8, - O_XOF_LENGTH = 12, - O_NODE_DEPTH = 14, - O_INNER_LENGTH = 15, - O_SALT = 16, - O_PERSONAL = 24 -}; - -/* -struct blake2s_param { - unsigned char digest_length; - unsigned char key_length; - unsigned char fanout; - unsigned char depth; - ulong32 leaf_length; - ulong32 node_offset; - ushort16 xof_length; - unsigned char node_depth; - unsigned char inner_length; - unsigned char salt[BLAKE2S_SALTBYTES]; - unsigned char personal[BLAKE2S_PERSONALBYTES]; -}; -*/ - -const struct ltc_hash_descriptor blake2s_128_desc = -{ - "blake2s-128", - 21, - 16, - 64, - { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 2, 4 }, - 11, - &blake2s_128_init, - &blake2s_process, - &blake2s_done, - &blake2s_128_test, - NULL -}; - -const struct ltc_hash_descriptor blake2s_160_desc = -{ - "blake2s-160", - 22, - 20, - 64, - { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 2, 5 }, - 11, - &blake2s_160_init, - &blake2s_process, - &blake2s_done, - &blake2s_160_test, - NULL -}; - -const struct ltc_hash_descriptor blake2s_224_desc = -{ - "blake2s-224", - 23, - 28, - 64, - { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 2, 7 }, - 11, - &blake2s_224_init, - &blake2s_process, - &blake2s_done, - &blake2s_224_test, - NULL -}; - -const struct ltc_hash_descriptor blake2s_256_desc = -{ - "blake2s-256", - 24, - 32, - 64, - { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 2, 8 }, - 11, - &blake2s_256_init, - &blake2s_process, - &blake2s_done, - &blake2s_256_test, - NULL -}; - -static const ulong32 blake2s_IV[8] = { - 0x6A09E667UL, 0xBB67AE85UL, 0x3C6EF372UL, 0xA54FF53AUL, - 0x510E527FUL, 0x9B05688CUL, 0x1F83D9ABUL, 0x5BE0CD19UL -}; - -static const unsigned char blake2s_sigma[10][16] = { - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, - { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 }, - { 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 }, - { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 }, - { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 }, - { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 }, - { 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11 }, - { 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10 }, - { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5 }, - { 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0 }, -}; - -static void blake2s_set_lastnode(hash_state *md) { md->blake2s.f[1] = 0xffffffffUL; } - -/* Some helper functions, not necessarily useful */ -static int blake2s_is_lastblock(const hash_state *md) { return md->blake2s.f[0] != 0; } - -static void blake2s_set_lastblock(hash_state *md) -{ - if (md->blake2s.last_node) - blake2s_set_lastnode(md); - - md->blake2s.f[0] = 0xffffffffUL; -} - -static void blake2s_increment_counter(hash_state *md, const ulong32 inc) -{ - md->blake2s.t[0] += inc; - if (md->blake2s.t[0] < inc) md->blake2s.t[1]++; -} - -static int blake2s_init0(hash_state *md) -{ - int i; - XMEMSET(&md->blake2s, 0, sizeof(struct blake2s_state)); - - for (i = 0; i < 8; ++i) - md->blake2s.h[i] = blake2s_IV[i]; - - return CRYPT_OK; -} - -/* init2 xors IV with input parameter block */ -static int blake2s_init_param(hash_state *md, const unsigned char *P) -{ - unsigned long i; - - blake2s_init0(md); - - /* IV XOR ParamBlock */ - for (i = 0; i < 8; ++i) { - ulong32 tmp; - LOAD32L(tmp, P + i * 4); - md->blake2s.h[i] ^= tmp; - } - - md->blake2s.outlen = P[O_DIGEST_LENGTH]; - return CRYPT_OK; -} - -int blake2s_init(hash_state *md, unsigned long outlen, const unsigned char *key, unsigned long keylen) -{ - unsigned char P[BLAKE2S_PARAM_SIZE]; - int err; - - LTC_ARGCHK(md != NULL); - - if ((!outlen) || (outlen > BLAKE2S_OUTBYTES)) - return CRYPT_INVALID_ARG; - - if ((key && !keylen) || (keylen && !key) || (keylen > BLAKE2S_KEYBYTES)) - return CRYPT_INVALID_ARG; - - XMEMSET(P, 0, sizeof(P)); - - P[O_DIGEST_LENGTH] = (unsigned char)outlen; - P[O_KEY_LENGTH] = (unsigned char)keylen; - P[O_FANOUT] = 1; - P[O_DEPTH] = 1; - - err = blake2s_init_param(md, P); - if (err != CRYPT_OK) return err; - - if (key) { - unsigned char block[BLAKE2S_BLOCKBYTES]; - - XMEMSET(block, 0, BLAKE2S_BLOCKBYTES); - XMEMCPY(block, key, keylen); - blake2s_process(md, block, BLAKE2S_BLOCKBYTES); - -#ifdef LTC_CLEAN_STACK - zeromem(block, sizeof(block)); -#endif - } - return CRYPT_OK; -} - -int blake2s_128_init(hash_state *md) { return blake2s_init(md, 16, NULL, 0); } - -int blake2s_160_init(hash_state *md) { return blake2s_init(md, 20, NULL, 0); } - -int blake2s_224_init(hash_state *md) { return blake2s_init(md, 28, NULL, 0); } - -int blake2s_256_init(hash_state *md) { return blake2s_init(md, 32, NULL, 0); } - -#define G(r, i, a, b, c, d) \ - do { \ - a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \ - d = ROR(d ^ a, 16); \ - c = c + d; \ - b = ROR(b ^ c, 12); \ - a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \ - d = ROR(d ^ a, 8); \ - c = c + d; \ - b = ROR(b ^ c, 7); \ - } while (0) -#define ROUND(r) \ - do { \ - G(r, 0, v[0], v[4], v[8], v[12]); \ - G(r, 1, v[1], v[5], v[9], v[13]); \ - G(r, 2, v[2], v[6], v[10], v[14]); \ - G(r, 3, v[3], v[7], v[11], v[15]); \ - G(r, 4, v[0], v[5], v[10], v[15]); \ - G(r, 5, v[1], v[6], v[11], v[12]); \ - G(r, 6, v[2], v[7], v[8], v[13]); \ - G(r, 7, v[3], v[4], v[9], v[14]); \ - } while (0) - -#ifdef LTC_CLEAN_STACK -static int _blake2s_compress(hash_state *md, const unsigned char *buf) -#else -static int blake2s_compress(hash_state *md, const unsigned char *buf) -#endif -{ - unsigned long i; - ulong32 m[16]; - ulong32 v[16]; - - for (i = 0; i < 16; ++i) { - LOAD32L(m[i], buf + i * sizeof(m[i])); - } - - for (i = 0; i < 8; ++i) - v[i] = md->blake2s.h[i]; - - v[8] = blake2s_IV[0]; - v[9] = blake2s_IV[1]; - v[10] = blake2s_IV[2]; - v[11] = blake2s_IV[3]; - v[12] = md->blake2s.t[0] ^ blake2s_IV[4]; - v[13] = md->blake2s.t[1] ^ blake2s_IV[5]; - v[14] = md->blake2s.f[0] ^ blake2s_IV[6]; - v[15] = md->blake2s.f[1] ^ blake2s_IV[7]; - - ROUND(0); - ROUND(1); - ROUND(2); - ROUND(3); - ROUND(4); - ROUND(5); - ROUND(6); - ROUND(7); - ROUND(8); - ROUND(9); - - for (i = 0; i < 8; ++i) - md->blake2s.h[i] = md->blake2s.h[i] ^ v[i] ^ v[i + 8]; - - return CRYPT_OK; -} -#undef G -#undef ROUND - -#ifdef LTC_CLEAN_STACK -static int blake2s_compress(hash_state *md, const unsigned char *buf) -{ - int err; - err = _blake2s_compress(md, buf); - burn_stack(sizeof(ulong32) * (32) + sizeof(unsigned long)); - return err; -} -#endif - -int blake2s_process(hash_state *md, const unsigned char *in, unsigned long inlen) -{ - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(in != NULL); - - if (md->blake2s.curlen > sizeof(md->blake2s.buf)) { - return CRYPT_INVALID_ARG; - } - - if (inlen > 0) { - unsigned long left = md->blake2s.curlen; - unsigned long fill = BLAKE2S_BLOCKBYTES - left; - if (inlen > fill) { - md->blake2s.curlen = 0; - XMEMCPY(md->blake2s.buf + (left % sizeof(md->blake2s.buf)), in, fill); /* Fill buffer */ - blake2s_increment_counter(md, BLAKE2S_BLOCKBYTES); - blake2s_compress(md, md->blake2s.buf); /* Compress */ - in += fill; - inlen -= fill; - while (inlen > BLAKE2S_BLOCKBYTES) { - blake2s_increment_counter(md, BLAKE2S_BLOCKBYTES); - blake2s_compress(md, in); - in += BLAKE2S_BLOCKBYTES; - inlen -= BLAKE2S_BLOCKBYTES; - } - } - XMEMCPY(md->blake2s.buf + md->blake2s.curlen, in, inlen); - md->blake2s.curlen += inlen; - } - return CRYPT_OK; -} - -int blake2s_done(hash_state *md, unsigned char *out) -{ - unsigned char buffer[BLAKE2S_OUTBYTES] = { 0 }; - unsigned long i; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - /* if(md->blake2s.outlen != outlen) return CRYPT_INVALID_ARG; */ - - if (blake2s_is_lastblock(md)) - return CRYPT_ERROR; - - blake2s_increment_counter(md, md->blake2s.curlen); - blake2s_set_lastblock(md); - XMEMSET(md->blake2s.buf + md->blake2s.curlen, 0, BLAKE2S_BLOCKBYTES - md->blake2s.curlen); /* Padding */ - blake2s_compress(md, md->blake2s.buf); - - for (i = 0; i < 8; ++i) /* Output full hash to temp buffer */ - STORE32L(md->blake2s.h[i], buffer + i * 4); - - XMEMCPY(out, buffer, md->blake2s.outlen); - zeromem(md, sizeof(hash_state)); -#ifdef LTC_CLEAN_STACK - zeromem(buffer, sizeof(buffer)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int blake2s_256_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - const char *msg; - unsigned char hash[32]; - } tests[] = { - { "", - { 0x69, 0x21, 0x7a, 0x30, 0x79, 0x90, 0x80, 0x94, - 0xe1, 0x11, 0x21, 0xd0, 0x42, 0x35, 0x4a, 0x7c, - 0x1f, 0x55, 0xb6, 0x48, 0x2c, 0xa1, 0xa5, 0x1e, - 0x1b, 0x25, 0x0d, 0xfd, 0x1e, 0xd0, 0xee, 0xf9 } }, - { "abc", - { 0x50, 0x8c, 0x5e, 0x8c, 0x32, 0x7c, 0x14, 0xe2, - 0xe1, 0xa7, 0x2b, 0xa3, 0x4e, 0xeb, 0x45, 0x2f, - 0x37, 0x45, 0x8b, 0x20, 0x9e, 0xd6, 0x3a, 0x29, - 0x4d, 0x99, 0x9b, 0x4c, 0x86, 0x67, 0x59, 0x82 } }, - { "12345678901234567890123456789012345678901234567890" - "12345678901234567890123456789012345678901234567890" - "12345678901234567890123456789012345678901234567890" - "12345678901234567890123456789012345678901234567890" - "12345678901234567890123456789012345678901234567890" - "12345678901234567890123456789012345678901234567890", - { 0xa3, 0x78, 0x8b, 0x5b, 0x59, 0xee, 0xe4, 0x41, - 0x95, 0x23, 0x58, 0x00, 0xa4, 0xf9, 0xfa, 0x41, - 0x86, 0x0c, 0x7b, 0x1c, 0x35, 0xa2, 0x42, 0x70, - 0x50, 0x80, 0x79, 0x56, 0xe3, 0xbe, 0x31, 0x74 } }, - - { NULL, { 0 } } - }; - - int i; - unsigned char tmp[32]; - hash_state md; - - for (i = 0; tests[i].msg != NULL; i++) { - blake2s_256_init(&md); - blake2s_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - blake2s_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2S_256", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - - } - return CRYPT_OK; -#endif -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int blake2s_224_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - const char *msg; - unsigned char hash[28]; - } tests[] = { - { "", - { 0x1f, 0xa1, 0x29, 0x1e, 0x65, 0x24, 0x8b, 0x37, - 0xb3, 0x43, 0x34, 0x75, 0xb2, 0xa0, 0xdd, 0x63, - 0xd5, 0x4a, 0x11, 0xec, 0xc4, 0xe3, 0xe0, 0x34, - 0xe7, 0xbc, 0x1e, 0xf4 } }, - { "abc", - { 0x0b, 0x03, 0x3f, 0xc2, 0x26, 0xdf, 0x7a, 0xbd, - 0xe2, 0x9f, 0x67, 0xa0, 0x5d, 0x3d, 0xc6, 0x2c, - 0xf2, 0x71, 0xef, 0x3d, 0xfe, 0xa4, 0xd3, 0x87, - 0x40, 0x7f, 0xbd, 0x55 } }, - - { NULL, { 0 } } - }; - - int i; - unsigned char tmp[28]; - hash_state md; - - for (i = 0; tests[i].msg != NULL; i++) { - blake2s_224_init(&md); - blake2s_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - blake2s_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2S_224", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - - } - return CRYPT_OK; -#endif -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int blake2s_160_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - const char *msg; - unsigned char hash[20]; - } tests[] = { - { "", - { 0x35, 0x4c, 0x9c, 0x33, 0xf7, 0x35, 0x96, 0x24, - 0x18, 0xbd, 0xac, 0xb9, 0x47, 0x98, 0x73, 0x42, - 0x9c, 0x34, 0x91, 0x6f} }, - { "abc", - { 0x5a, 0xe3, 0xb9, 0x9b, 0xe2, 0x9b, 0x01, 0x83, - 0x4c, 0x3b, 0x50, 0x85, 0x21, 0xed, 0xe6, 0x04, - 0x38, 0xf8, 0xde, 0x17 } }, - - { NULL, { 0 } } - }; - - int i; - unsigned char tmp[20]; - hash_state md; - - for (i = 0; tests[i].msg != NULL; i++) { - blake2s_160_init(&md); - blake2s_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - blake2s_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2S_160", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - - } - return CRYPT_OK; -#endif -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int blake2s_128_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - const char *msg; - unsigned char hash[16]; - } tests[] = { - { "", - { 0x64, 0x55, 0x0d, 0x6f, 0xfe, 0x2c, 0x0a, 0x01, - 0xa1, 0x4a, 0xba, 0x1e, 0xad, 0xe0, 0x20, 0x0c } }, - { "abc", - { 0xaa, 0x49, 0x38, 0x11, 0x9b, 0x1d, 0xc7, 0xb8, - 0x7c, 0xba, 0xd0, 0xff, 0xd2, 0x00, 0xd0, 0xae } }, - - { NULL, { 0 } } - }; - - int i; - unsigned char tmp[16]; - hash_state md; - - for (i = 0; tests[i].msg != NULL; i++) { - blake2s_128_init(&md); - blake2s_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - blake2s_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2S_128", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/chc/chc.c b/src/libtomcrypt/src/hashes/chc/chc.c deleted file mode 100644 index b0c30e927b..0000000000 --- a/src/libtomcrypt/src/hashes/chc/chc.c +++ /dev/null @@ -1,306 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -/** - @file chc.c - CHC support. (Tom St Denis) -*/ - -#ifdef LTC_CHC_HASH - -#define UNDEFED_HASH -17 - -/* chc settings */ -static int cipher_idx=UNDEFED_HASH, /* which cipher */ - cipher_blocksize; /* blocksize of cipher */ - - -const struct ltc_hash_descriptor chc_desc = { - "chc_hash", 12, 0, 0, { 0 }, 0, - &chc_init, - &chc_process, - &chc_done, - &chc_test, - NULL -}; - -/** - Initialize the CHC state with a given cipher - @param cipher The index of the cipher you wish to bind - @return CRYPT_OK if successful -*/ -int chc_register(int cipher) -{ - int err, kl, idx; - - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - - /* will it be valid? */ - kl = cipher_descriptor[cipher].block_length; - - /* must be >64 bit block */ - if (kl <= 8) { - return CRYPT_INVALID_CIPHER; - } - - /* can we use the ideal keysize? */ - if ((err = cipher_descriptor[cipher].keysize(&kl)) != CRYPT_OK) { - return err; - } - /* we require that key size == block size be a valid choice */ - if (kl != cipher_descriptor[cipher].block_length) { - return CRYPT_INVALID_CIPHER; - } - - /* determine if chc_hash has been register_hash'ed already */ - if ((err = hash_is_valid(idx = find_hash("chc_hash"))) != CRYPT_OK) { - return err; - } - - /* store into descriptor */ - hash_descriptor[idx].hashsize = - hash_descriptor[idx].blocksize = cipher_descriptor[cipher].block_length; - - /* store the idx and block size */ - cipher_idx = cipher; - cipher_blocksize = cipher_descriptor[cipher].block_length; - return CRYPT_OK; -} - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int chc_init(hash_state *md) -{ - symmetric_key *key; - unsigned char buf[MAXBLOCKSIZE]; - int err; - - LTC_ARGCHK(md != NULL); - - /* is the cipher valid? */ - if ((err = cipher_is_valid(cipher_idx)) != CRYPT_OK) { - return err; - } - - if (cipher_blocksize != cipher_descriptor[cipher_idx].block_length) { - return CRYPT_INVALID_CIPHER; - } - - if ((key = XMALLOC(sizeof(*key))) == NULL) { - return CRYPT_MEM; - } - - /* zero key and what not */ - zeromem(buf, cipher_blocksize); - if ((err = cipher_descriptor[cipher_idx].setup(buf, cipher_blocksize, 0, key)) != CRYPT_OK) { - XFREE(key); - return err; - } - - /* encrypt zero block */ - cipher_descriptor[cipher_idx].ecb_encrypt(buf, md->chc.state, key); - - /* zero other members */ - md->chc.length = 0; - md->chc.curlen = 0; - zeromem(md->chc.buf, sizeof(md->chc.buf)); - XFREE(key); - return CRYPT_OK; -} - -/* - key <= state - T0,T1 <= block - T0 <= encrypt T0 - state <= state xor T0 xor T1 -*/ -static int chc_compress(hash_state *md, unsigned char *buf) -{ - unsigned char T[2][MAXBLOCKSIZE]; - symmetric_key *key; - int err, x; - - if ((key = XMALLOC(sizeof(*key))) == NULL) { - return CRYPT_MEM; - } - if ((err = cipher_descriptor[cipher_idx].setup(md->chc.state, cipher_blocksize, 0, key)) != CRYPT_OK) { - XFREE(key); - return err; - } - XMEMCPY(T[1], buf, cipher_blocksize); - cipher_descriptor[cipher_idx].ecb_encrypt(buf, T[0], key); - for (x = 0; x < cipher_blocksize; x++) { - md->chc.state[x] ^= T[0][x] ^ T[1][x]; - } -#ifdef LTC_CLEAN_STACK - zeromem(T, sizeof(T)); - zeromem(key, sizeof(*key)); -#endif - XFREE(key); - return CRYPT_OK; -} - -/** - Function for processing blocks - @param md The hash state - @param buf The data to hash - @param len The length of the data (octets) - @return CRYPT_OK if successful -*/ -static int _chc_process(hash_state * md, const unsigned char *buf, unsigned long len); -static HASH_PROCESS(_chc_process, chc_compress, chc, (unsigned long)cipher_blocksize) - -/** - Process a block of memory though the hash - @param md The hash state - @param in The data to hash - @param inlen The length of the data (octets) - @return CRYPT_OK if successful -*/ -int chc_process(hash_state * md, const unsigned char *in, unsigned long inlen) -{ - int err; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(in != NULL); - - /* is the cipher valid? */ - if ((err = cipher_is_valid(cipher_idx)) != CRYPT_OK) { - return err; - } - if (cipher_blocksize != cipher_descriptor[cipher_idx].block_length) { - return CRYPT_INVALID_CIPHER; - } - - return _chc_process(md, in, inlen); -} - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (length of the block size of the block cipher) - @return CRYPT_OK if successful -*/ -int chc_done(hash_state *md, unsigned char *out) -{ - int err; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - /* is the cipher valid? */ - if ((err = cipher_is_valid(cipher_idx)) != CRYPT_OK) { - return err; - } - if (cipher_blocksize != cipher_descriptor[cipher_idx].block_length) { - return CRYPT_INVALID_CIPHER; - } - - if (md->chc.curlen >= sizeof(md->chc.buf)) { - return CRYPT_INVALID_ARG; - } - - /* increase the length of the message */ - md->chc.length += md->chc.curlen * 8; - - /* append the '1' bit */ - md->chc.buf[md->chc.curlen++] = (unsigned char)0x80; - - /* if the length is currently above l-8 bytes we append zeros - * then compress. Then we can fall back to padding zeros and length - * encoding like normal. - */ - if (md->chc.curlen > (unsigned long)(cipher_blocksize - 8)) { - while (md->chc.curlen < (unsigned long)cipher_blocksize) { - md->chc.buf[md->chc.curlen++] = (unsigned char)0; - } - chc_compress(md, md->chc.buf); - md->chc.curlen = 0; - } - - /* pad upto l-8 bytes of zeroes */ - while (md->chc.curlen < (unsigned long)(cipher_blocksize - 8)) { - md->chc.buf[md->chc.curlen++] = (unsigned char)0; - } - - /* store length */ - STORE64L(md->chc.length, md->chc.buf+(cipher_blocksize-8)); - chc_compress(md, md->chc.buf); - - /* copy output */ - XMEMCPY(out, md->chc.state, cipher_blocksize); - -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(hash_state)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int chc_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - unsigned char *msg, - hash[MAXBLOCKSIZE]; - int len; - } tests[] = { -{ - (unsigned char *)"hello world", - { 0xcf, 0x57, 0x9d, 0xc3, 0x0a, 0x0e, 0xea, 0x61, - 0x0d, 0x54, 0x47, 0xc4, 0x3c, 0x06, 0xf5, 0x4e }, - 16 -} -}; - int i, oldhashidx, idx; - unsigned char tmp[MAXBLOCKSIZE]; - hash_state md; - - /* AES can be under rijndael or aes... try to find it */ - if ((idx = find_cipher("aes")) == -1) { - if ((idx = find_cipher("rijndael")) == -1) { - return CRYPT_NOP; - } - } - oldhashidx = cipher_idx; - chc_register(idx); - - for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { - chc_init(&md); - chc_process(&md, tests[i].msg, strlen((char *)tests[i].msg)); - chc_done(&md, tmp); - if (compare_testvector(tmp, tests[i].len, tests[i].hash, tests[i].len, "CHC", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - if (oldhashidx != UNDEFED_HASH) { - chc_register(oldhashidx); - } - - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/helper/hash_file.c b/src/libtomcrypt/src/hashes/helper/hash_file.c deleted file mode 100644 index a5203917a9..0000000000 --- a/src/libtomcrypt/src/hashes/helper/hash_file.c +++ /dev/null @@ -1,53 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#ifndef LTC_NO_FILE -/** - @file hash_file.c - Hash a file, Tom St Denis -*/ - -/** - @param hash The index of the hash desired - @param fname The name of the file you wish to hash - @param out [out] The destination of the digest - @param outlen [in/out] The max size and resulting size of the message digest - @result CRYPT_OK if successful -*/ -int hash_file(int hash, const char *fname, unsigned char *out, unsigned long *outlen) -{ - FILE *in; - int err; - LTC_ARGCHK(fname != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - if ((err = hash_is_valid(hash)) != CRYPT_OK) { - return err; - } - - in = fopen(fname, "rb"); - if (in == NULL) { - return CRYPT_FILE_NOTFOUND; - } - - err = hash_filehandle(hash, in, out, outlen); - if (fclose(in) != 0) { - return CRYPT_ERROR; - } - - return err; -} -#endif /* #ifndef LTC_NO_FILE */ - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/helper/hash_filehandle.c b/src/libtomcrypt/src/hashes/helper/hash_filehandle.c deleted file mode 100644 index 4c6874fa9d..0000000000 --- a/src/libtomcrypt/src/hashes/helper/hash_filehandle.c +++ /dev/null @@ -1,74 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#ifndef LTC_NO_FILE -/** - @file hash_filehandle.c - Hash open files, Tom St Denis -*/ - -/** - Hash data from an open file handle. - @param hash The index of the hash you want to use - @param in The FILE* handle of the file you want to hash - @param out [out] The destination of the digest - @param outlen [in/out] The max size and resulting size of the digest - @result CRYPT_OK if successful -*/ -int hash_filehandle(int hash, FILE *in, unsigned char *out, unsigned long *outlen) -{ - hash_state md; - unsigned char *buf; - size_t x; - int err; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(in != NULL); - - if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { - return CRYPT_MEM; - } - - if ((err = hash_is_valid(hash)) != CRYPT_OK) { - goto LBL_ERR; - } - - if (*outlen < hash_descriptor[hash].hashsize) { - *outlen = hash_descriptor[hash].hashsize; - err = CRYPT_BUFFER_OVERFLOW; - goto LBL_ERR; - } - if ((err = hash_descriptor[hash].init(&md)) != CRYPT_OK) { - goto LBL_ERR; - } - - do { - x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); - if ((err = hash_descriptor[hash].process(&md, buf, (unsigned long)x)) != CRYPT_OK) { - goto LBL_CLEANBUF; - } - } while (x == LTC_FILE_READ_BUFSIZE); - if ((err = hash_descriptor[hash].done(&md, out)) == CRYPT_OK) { - *outlen = hash_descriptor[hash].hashsize; - } - -LBL_CLEANBUF: - zeromem(buf, LTC_FILE_READ_BUFSIZE); -LBL_ERR: - XFREE(buf); - return err; -} -#endif /* #ifndef LTC_NO_FILE */ - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/helper/hash_memory.c b/src/libtomcrypt/src/hashes/helper/hash_memory.c deleted file mode 100644 index 0cfb7e34d6..0000000000 --- a/src/libtomcrypt/src/hashes/helper/hash_memory.c +++ /dev/null @@ -1,69 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#ifdef LTC_HASH_HELPERS -/** - @file hash_memory.c - Hash memory helper, Tom St Denis -*/ - -/** - Hash a block of memory and store the digest. - @param hash The index of the hash you wish to use - @param in The data you wish to hash - @param inlen The length of the data to hash (octets) - @param out [out] Where to store the digest - @param outlen [in/out] Max size and resulting size of the digest - @return CRYPT_OK if successful -*/ -int hash_memory(int hash, const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen) -{ - hash_state *md; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - if ((err = hash_is_valid(hash)) != CRYPT_OK) { - return err; - } - - if (*outlen < hash_descriptor[hash].hashsize) { - *outlen = hash_descriptor[hash].hashsize; - return CRYPT_BUFFER_OVERFLOW; - } - - md = XMALLOC(sizeof(hash_state)); - if (md == NULL) { - return CRYPT_MEM; - } - - if ((err = hash_descriptor[hash].init(md)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hash_descriptor[hash].process(md, in, inlen)) != CRYPT_OK) { - goto LBL_ERR; - } - err = hash_descriptor[hash].done(md, out); - *outlen = hash_descriptor[hash].hashsize; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(hash_state)); -#endif - XFREE(md); - - return err; -} -#endif /* #ifdef LTC_HASH_HELPERS */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/helper/hash_memory_multi.c b/src/libtomcrypt/src/hashes/helper/hash_memory_multi.c deleted file mode 100644 index 955d284263..0000000000 --- a/src/libtomcrypt/src/hashes/helper/hash_memory_multi.c +++ /dev/null @@ -1,88 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" -#include - -#ifdef LTC_HASH_HELPERS -/** - @file hash_memory_multi.c - Hash (multiple buffers) memory helper, Tom St Denis -*/ - -/** - Hash multiple (non-adjacent) blocks of memory at once. - @param hash The index of the hash you wish to use - @param out [out] Where to store the digest - @param outlen [in/out] Max size and resulting size of the digest - @param in The data you wish to hash - @param inlen The length of the data to hash (octets) - @param ... tuples of (data,len) pairs to hash, terminated with a (NULL,x) (x=don't care) - @return CRYPT_OK if successful -*/ -int hash_memory_multi(int hash, unsigned char *out, unsigned long *outlen, - const unsigned char *in, unsigned long inlen, ...) -{ - hash_state *md; - int err; - va_list args; - const unsigned char *curptr; - unsigned long curlen; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - if ((err = hash_is_valid(hash)) != CRYPT_OK) { - return err; - } - - if (*outlen < hash_descriptor[hash].hashsize) { - *outlen = hash_descriptor[hash].hashsize; - return CRYPT_BUFFER_OVERFLOW; - } - - md = XMALLOC(sizeof(hash_state)); - if (md == NULL) { - return CRYPT_MEM; - } - - if ((err = hash_descriptor[hash].init(md)) != CRYPT_OK) { - goto LBL_ERR; - } - - va_start(args, inlen); - curptr = in; - curlen = inlen; - for (;;) { - /* process buf */ - if ((err = hash_descriptor[hash].process(md, curptr, curlen)) != CRYPT_OK) { - goto LBL_ERR; - } - /* step to next */ - curptr = va_arg(args, const unsigned char*); - if (curptr == NULL) { - break; - } - curlen = va_arg(args, unsigned long); - } - err = hash_descriptor[hash].done(md, out); - *outlen = hash_descriptor[hash].hashsize; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(hash_state)); -#endif - XFREE(md); - va_end(args); - return err; -} -#endif /* #ifdef LTC_HASH_HELPERS */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/md2.c b/src/libtomcrypt/src/hashes/md2.c deleted file mode 100644 index 553f448dbe..0000000000 --- a/src/libtomcrypt/src/hashes/md2.c +++ /dev/null @@ -1,250 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @param md2.c - LTC_MD2 (RFC 1319) hash function implementation by Tom St Denis -*/ - -#ifdef LTC_MD2 - -const struct ltc_hash_descriptor md2_desc = -{ - "md2", - 7, - 16, - 16, - - /* OID */ - { 1, 2, 840, 113549, 2, 2, }, - 6, - - &md2_init, - &md2_process, - &md2_done, - &md2_test, - NULL -}; - -static const unsigned char PI_SUBST[256] = { - 41, 46, 67, 201, 162, 216, 124, 1, 61, 54, 84, 161, 236, 240, 6, - 19, 98, 167, 5, 243, 192, 199, 115, 140, 152, 147, 43, 217, 188, - 76, 130, 202, 30, 155, 87, 60, 253, 212, 224, 22, 103, 66, 111, 24, - 138, 23, 229, 18, 190, 78, 196, 214, 218, 158, 222, 73, 160, 251, - 245, 142, 187, 47, 238, 122, 169, 104, 121, 145, 21, 178, 7, 63, - 148, 194, 16, 137, 11, 34, 95, 33, 128, 127, 93, 154, 90, 144, 50, - 39, 53, 62, 204, 231, 191, 247, 151, 3, 255, 25, 48, 179, 72, 165, - 181, 209, 215, 94, 146, 42, 172, 86, 170, 198, 79, 184, 56, 210, - 150, 164, 125, 182, 118, 252, 107, 226, 156, 116, 4, 241, 69, 157, - 112, 89, 100, 113, 135, 32, 134, 91, 207, 101, 230, 45, 168, 2, 27, - 96, 37, 173, 174, 176, 185, 246, 28, 70, 97, 105, 52, 64, 126, 15, - 85, 71, 163, 35, 221, 81, 175, 58, 195, 92, 249, 206, 186, 197, - 234, 38, 44, 83, 13, 110, 133, 40, 132, 9, 211, 223, 205, 244, 65, - 129, 77, 82, 106, 220, 55, 200, 108, 193, 171, 250, 36, 225, 123, - 8, 12, 189, 177, 74, 120, 136, 149, 139, 227, 99, 232, 109, 233, - 203, 213, 254, 59, 0, 29, 57, 242, 239, 183, 14, 102, 88, 208, 228, - 166, 119, 114, 248, 235, 117, 75, 10, 49, 68, 80, 180, 143, 237, - 31, 26, 219, 153, 141, 51, 159, 17, 131, 20 -}; - -/* adds 16 bytes to the checksum */ -static void md2_update_chksum(hash_state *md) -{ - int j; - unsigned char L; - L = md->md2.chksum[15]; - for (j = 0; j < 16; j++) { - -/* caution, the RFC says its "C[j] = S[M[i*16+j] xor L]" but the reference source code [and test vectors] say - otherwise. -*/ - L = (md->md2.chksum[j] ^= PI_SUBST[(int)(md->md2.buf[j] ^ L)] & 255); - } -} - -static void md2_compress(hash_state *md) -{ - int j, k; - unsigned char t; - - /* copy block */ - for (j = 0; j < 16; j++) { - md->md2.X[16+j] = md->md2.buf[j]; - md->md2.X[32+j] = md->md2.X[j] ^ md->md2.X[16+j]; - } - - t = (unsigned char)0; - - /* do 18 rounds */ - for (j = 0; j < 18; j++) { - for (k = 0; k < 48; k++) { - t = (md->md2.X[k] ^= PI_SUBST[(int)(t & 255)]); - } - t = (t + (unsigned char)j) & 255; - } -} - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int md2_init(hash_state *md) -{ - LTC_ARGCHK(md != NULL); - - /* LTC_MD2 uses a zero'ed state... */ - zeromem(md->md2.X, sizeof(md->md2.X)); - zeromem(md->md2.chksum, sizeof(md->md2.chksum)); - zeromem(md->md2.buf, sizeof(md->md2.buf)); - md->md2.curlen = 0; - return CRYPT_OK; -} - -/** - Process a block of memory though the hash - @param md The hash state - @param in The data to hash - @param inlen The length of the data (octets) - @return CRYPT_OK if successful -*/ -int md2_process(hash_state *md, const unsigned char *in, unsigned long inlen) -{ - unsigned long n; - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(in != NULL); - if (md-> md2 .curlen > sizeof(md-> md2 .buf)) { - return CRYPT_INVALID_ARG; - } - while (inlen > 0) { - n = MIN(inlen, (16 - md->md2.curlen)); - XMEMCPY(md->md2.buf + md->md2.curlen, in, (size_t)n); - md->md2.curlen += n; - in += n; - inlen -= n; - - /* is 16 bytes full? */ - if (md->md2.curlen == 16) { - md2_compress(md); - md2_update_chksum(md); - md->md2.curlen = 0; - } - } - return CRYPT_OK; -} - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (16 bytes) - @return CRYPT_OK if successful -*/ -int md2_done(hash_state * md, unsigned char *out) -{ - unsigned long i, k; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (md->md2.curlen >= sizeof(md->md2.buf)) { - return CRYPT_INVALID_ARG; - } - - - /* pad the message */ - k = 16 - md->md2.curlen; - for (i = md->md2.curlen; i < 16; i++) { - md->md2.buf[i] = (unsigned char)k; - } - - /* hash and update */ - md2_compress(md); - md2_update_chksum(md); - - /* hash checksum */ - XMEMCPY(md->md2.buf, md->md2.chksum, 16); - md2_compress(md); - - /* output is lower 16 bytes of X */ - XMEMCPY(out, md->md2.X, 16); - -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(hash_state)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int md2_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - const char *msg; - unsigned char hash[16]; - } tests[] = { - { "", - {0x83,0x50,0xe5,0xa3,0xe2,0x4c,0x15,0x3d, - 0xf2,0x27,0x5c,0x9f,0x80,0x69,0x27,0x73 - } - }, - { "a", - {0x32,0xec,0x01,0xec,0x4a,0x6d,0xac,0x72, - 0xc0,0xab,0x96,0xfb,0x34,0xc0,0xb5,0xd1 - } - }, - { "message digest", - {0xab,0x4f,0x49,0x6b,0xfb,0x2a,0x53,0x0b, - 0x21,0x9f,0xf3,0x30,0x31,0xfe,0x06,0xb0 - } - }, - { "abcdefghijklmnopqrstuvwxyz", - {0x4e,0x8d,0xdf,0xf3,0x65,0x02,0x92,0xab, - 0x5a,0x41,0x08,0xc3,0xaa,0x47,0x94,0x0b - } - }, - { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", - {0xda,0x33,0xde,0xf2,0xa4,0x2d,0xf1,0x39, - 0x75,0x35,0x28,0x46,0xc3,0x03,0x38,0xcd - } - }, - { "12345678901234567890123456789012345678901234567890123456789012345678901234567890", - {0xd5,0x97,0x6f,0x79,0xd8,0x3d,0x3a,0x0d, - 0xc9,0x80,0x6c,0x3c,0x66,0xf3,0xef,0xd8 - } - } - }; - - int i; - unsigned char tmp[16]; - hash_state md; - - for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { - md2_init(&md); - md2_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - md2_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "MD2", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; - #endif -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/md4.c b/src/libtomcrypt/src/hashes/md4.c deleted file mode 100644 index 7a579335ea..0000000000 --- a/src/libtomcrypt/src/hashes/md4.c +++ /dev/null @@ -1,306 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @param md4.c - Submitted by Dobes Vandermeer (dobes@smartt.com) -*/ - -#ifdef LTC_MD4 - -const struct ltc_hash_descriptor md4_desc = -{ - "md4", - 6, - 16, - 64, - - /* OID */ - { 1, 2, 840, 113549, 2, 4, }, - 6, - - &md4_init, - &md4_process, - &md4_done, - &md4_test, - NULL -}; - -#define S11 3 -#define S12 7 -#define S13 11 -#define S14 19 -#define S21 3 -#define S22 5 -#define S23 9 -#define S24 13 -#define S31 3 -#define S32 9 -#define S33 11 -#define S34 15 - -/* F, G and H are basic LTC_MD4 functions. */ -#define F(x, y, z) (z ^ (x & (y ^ z))) -#define G(x, y, z) ((x & y) | (z & (x | y))) -#define H(x, y, z) ((x) ^ (y) ^ (z)) - -/* ROTATE_LEFT rotates x left n bits. */ -#define ROTATE_LEFT(x, n) ROLc(x, n) - -/* FF, GG and HH are transformations for rounds 1, 2 and 3 */ -/* Rotation is separate from addition to prevent recomputation */ - -#define FF(a, b, c, d, x, s) { \ - (a) += F ((b), (c), (d)) + (x); \ - (a) = ROTATE_LEFT ((a), (s)); \ - } -#define GG(a, b, c, d, x, s) { \ - (a) += G ((b), (c), (d)) + (x) + 0x5a827999UL; \ - (a) = ROTATE_LEFT ((a), (s)); \ - } -#define HH(a, b, c, d, x, s) { \ - (a) += H ((b), (c), (d)) + (x) + 0x6ed9eba1UL; \ - (a) = ROTATE_LEFT ((a), (s)); \ - } - -#ifdef LTC_CLEAN_STACK -static int _md4_compress(hash_state *md, unsigned char *buf) -#else -static int md4_compress(hash_state *md, unsigned char *buf) -#endif -{ - ulong32 x[16], a, b, c, d; - int i; - - /* copy state */ - a = md->md4.state[0]; - b = md->md4.state[1]; - c = md->md4.state[2]; - d = md->md4.state[3]; - - /* copy the state into 512-bits into W[0..15] */ - for (i = 0; i < 16; i++) { - LOAD32L(x[i], buf + (4*i)); - } - - /* Round 1 */ - FF (a, b, c, d, x[ 0], S11); /* 1 */ - FF (d, a, b, c, x[ 1], S12); /* 2 */ - FF (c, d, a, b, x[ 2], S13); /* 3 */ - FF (b, c, d, a, x[ 3], S14); /* 4 */ - FF (a, b, c, d, x[ 4], S11); /* 5 */ - FF (d, a, b, c, x[ 5], S12); /* 6 */ - FF (c, d, a, b, x[ 6], S13); /* 7 */ - FF (b, c, d, a, x[ 7], S14); /* 8 */ - FF (a, b, c, d, x[ 8], S11); /* 9 */ - FF (d, a, b, c, x[ 9], S12); /* 10 */ - FF (c, d, a, b, x[10], S13); /* 11 */ - FF (b, c, d, a, x[11], S14); /* 12 */ - FF (a, b, c, d, x[12], S11); /* 13 */ - FF (d, a, b, c, x[13], S12); /* 14 */ - FF (c, d, a, b, x[14], S13); /* 15 */ - FF (b, c, d, a, x[15], S14); /* 16 */ - - /* Round 2 */ - GG (a, b, c, d, x[ 0], S21); /* 17 */ - GG (d, a, b, c, x[ 4], S22); /* 18 */ - GG (c, d, a, b, x[ 8], S23); /* 19 */ - GG (b, c, d, a, x[12], S24); /* 20 */ - GG (a, b, c, d, x[ 1], S21); /* 21 */ - GG (d, a, b, c, x[ 5], S22); /* 22 */ - GG (c, d, a, b, x[ 9], S23); /* 23 */ - GG (b, c, d, a, x[13], S24); /* 24 */ - GG (a, b, c, d, x[ 2], S21); /* 25 */ - GG (d, a, b, c, x[ 6], S22); /* 26 */ - GG (c, d, a, b, x[10], S23); /* 27 */ - GG (b, c, d, a, x[14], S24); /* 28 */ - GG (a, b, c, d, x[ 3], S21); /* 29 */ - GG (d, a, b, c, x[ 7], S22); /* 30 */ - GG (c, d, a, b, x[11], S23); /* 31 */ - GG (b, c, d, a, x[15], S24); /* 32 */ - - /* Round 3 */ - HH (a, b, c, d, x[ 0], S31); /* 33 */ - HH (d, a, b, c, x[ 8], S32); /* 34 */ - HH (c, d, a, b, x[ 4], S33); /* 35 */ - HH (b, c, d, a, x[12], S34); /* 36 */ - HH (a, b, c, d, x[ 2], S31); /* 37 */ - HH (d, a, b, c, x[10], S32); /* 38 */ - HH (c, d, a, b, x[ 6], S33); /* 39 */ - HH (b, c, d, a, x[14], S34); /* 40 */ - HH (a, b, c, d, x[ 1], S31); /* 41 */ - HH (d, a, b, c, x[ 9], S32); /* 42 */ - HH (c, d, a, b, x[ 5], S33); /* 43 */ - HH (b, c, d, a, x[13], S34); /* 44 */ - HH (a, b, c, d, x[ 3], S31); /* 45 */ - HH (d, a, b, c, x[11], S32); /* 46 */ - HH (c, d, a, b, x[ 7], S33); /* 47 */ - HH (b, c, d, a, x[15], S34); /* 48 */ - - - /* Update our state */ - md->md4.state[0] = md->md4.state[0] + a; - md->md4.state[1] = md->md4.state[1] + b; - md->md4.state[2] = md->md4.state[2] + c; - md->md4.state[3] = md->md4.state[3] + d; - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -static int md4_compress(hash_state *md, unsigned char *buf) -{ - int err; - err = _md4_compress(md, buf); - burn_stack(sizeof(ulong32) * 20 + sizeof(int)); - return err; -} -#endif - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int md4_init(hash_state * md) -{ - LTC_ARGCHK(md != NULL); - md->md4.state[0] = 0x67452301UL; - md->md4.state[1] = 0xefcdab89UL; - md->md4.state[2] = 0x98badcfeUL; - md->md4.state[3] = 0x10325476UL; - md->md4.length = 0; - md->md4.curlen = 0; - return CRYPT_OK; -} - -/** - Process a block of memory though the hash - @param md The hash state - @param in The data to hash - @param inlen The length of the data (octets) - @return CRYPT_OK if successful -*/ -HASH_PROCESS(md4_process, md4_compress, md4, 64) - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (16 bytes) - @return CRYPT_OK if successful -*/ -int md4_done(hash_state * md, unsigned char *out) -{ - int i; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (md->md4.curlen >= sizeof(md->md4.buf)) { - return CRYPT_INVALID_ARG; - } - - /* increase the length of the message */ - md->md4.length += md->md4.curlen * 8; - - /* append the '1' bit */ - md->md4.buf[md->md4.curlen++] = (unsigned char)0x80; - - /* if the length is currently above 56 bytes we append zeros - * then compress. Then we can fall back to padding zeros and length - * encoding like normal. - */ - if (md->md4.curlen > 56) { - while (md->md4.curlen < 64) { - md->md4.buf[md->md4.curlen++] = (unsigned char)0; - } - md4_compress(md, md->md4.buf); - md->md4.curlen = 0; - } - - /* pad upto 56 bytes of zeroes */ - while (md->md4.curlen < 56) { - md->md4.buf[md->md4.curlen++] = (unsigned char)0; - } - - /* store length */ - STORE64L(md->md4.length, md->md4.buf+56); - md4_compress(md, md->md4.buf); - - /* copy output */ - for (i = 0; i < 4; i++) { - STORE32L(md->md4.state[i], out+(4*i)); - } -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(hash_state)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int md4_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct md4_test_case { - const char *input; - unsigned char hash[16]; - } tests[] = { - { "", - {0x31, 0xd6, 0xcf, 0xe0, 0xd1, 0x6a, 0xe9, 0x31, - 0xb7, 0x3c, 0x59, 0xd7, 0xe0, 0xc0, 0x89, 0xc0} }, - { "a", - {0xbd, 0xe5, 0x2c, 0xb3, 0x1d, 0xe3, 0x3e, 0x46, - 0x24, 0x5e, 0x05, 0xfb, 0xdb, 0xd6, 0xfb, 0x24} }, - { "abc", - {0xa4, 0x48, 0x01, 0x7a, 0xaf, 0x21, 0xd8, 0x52, - 0x5f, 0xc1, 0x0a, 0xe8, 0x7a, 0xa6, 0x72, 0x9d} }, - { "message digest", - {0xd9, 0x13, 0x0a, 0x81, 0x64, 0x54, 0x9f, 0xe8, - 0x18, 0x87, 0x48, 0x06, 0xe1, 0xc7, 0x01, 0x4b} }, - { "abcdefghijklmnopqrstuvwxyz", - {0xd7, 0x9e, 0x1c, 0x30, 0x8a, 0xa5, 0xbb, 0xcd, - 0xee, 0xa8, 0xed, 0x63, 0xdf, 0x41, 0x2d, 0xa9} }, - { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", - {0x04, 0x3f, 0x85, 0x82, 0xf2, 0x41, 0xdb, 0x35, - 0x1c, 0xe6, 0x27, 0xe1, 0x53, 0xe7, 0xf0, 0xe4} }, - { "12345678901234567890123456789012345678901234567890123456789012345678901234567890", - {0xe3, 0x3b, 0x4d, 0xdc, 0x9c, 0x38, 0xf2, 0x19, - 0x9c, 0x3e, 0x7b, 0x16, 0x4f, 0xcc, 0x05, 0x36} }, - }; - - int i; - unsigned char tmp[16]; - hash_state md; - - for(i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { - md4_init(&md); - md4_process(&md, (unsigned char *)tests[i].input, (unsigned long)strlen(tests[i].input)); - md4_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "MD4", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - - } - return CRYPT_OK; - #endif -} - -#endif - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/md5.c b/src/libtomcrypt/src/hashes/md5.c deleted file mode 100644 index e7c12305b3..0000000000 --- a/src/libtomcrypt/src/hashes/md5.c +++ /dev/null @@ -1,366 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - - -/** - @file md5.c - LTC_MD5 hash function by Tom St Denis -*/ - -#ifdef LTC_MD5 - -const struct ltc_hash_descriptor md5_desc = -{ - "md5", - 3, - 16, - 64, - - /* OID */ - { 1, 2, 840, 113549, 2, 5, }, - 6, - - &md5_init, - &md5_process, - &md5_done, - &md5_test, - NULL -}; - -#define F(x,y,z) (z ^ (x & (y ^ z))) -#define G(x,y,z) (y ^ (z & (y ^ x))) -#define H(x,y,z) (x^y^z) -#define I(x,y,z) (y^(x|(~z))) - -#ifdef LTC_SMALL_CODE - -#define FF(a,b,c,d,M,s,t) \ - a = (a + F(b,c,d) + M + t); a = ROL(a, s) + b; - -#define GG(a,b,c,d,M,s,t) \ - a = (a + G(b,c,d) + M + t); a = ROL(a, s) + b; - -#define HH(a,b,c,d,M,s,t) \ - a = (a + H(b,c,d) + M + t); a = ROL(a, s) + b; - -#define II(a,b,c,d,M,s,t) \ - a = (a + I(b,c,d) + M + t); a = ROL(a, s) + b; - -static const unsigned char Worder[64] = { - 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, - 1,6,11,0,5,10,15,4,9,14,3,8,13,2,7,12, - 5,8,11,14,1,4,7,10,13,0,3,6,9,12,15,2, - 0,7,14,5,12,3,10,1,8,15,6,13,4,11,2,9 -}; - -static const unsigned char Rorder[64] = { - 7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22, - 5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20, - 4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23, - 6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21 -}; - -static const ulong32 Korder[64] = { -0xd76aa478UL, 0xe8c7b756UL, 0x242070dbUL, 0xc1bdceeeUL, 0xf57c0fafUL, 0x4787c62aUL, 0xa8304613UL, 0xfd469501UL, -0x698098d8UL, 0x8b44f7afUL, 0xffff5bb1UL, 0x895cd7beUL, 0x6b901122UL, 0xfd987193UL, 0xa679438eUL, 0x49b40821UL, -0xf61e2562UL, 0xc040b340UL, 0x265e5a51UL, 0xe9b6c7aaUL, 0xd62f105dUL, 0x02441453UL, 0xd8a1e681UL, 0xe7d3fbc8UL, -0x21e1cde6UL, 0xc33707d6UL, 0xf4d50d87UL, 0x455a14edUL, 0xa9e3e905UL, 0xfcefa3f8UL, 0x676f02d9UL, 0x8d2a4c8aUL, -0xfffa3942UL, 0x8771f681UL, 0x6d9d6122UL, 0xfde5380cUL, 0xa4beea44UL, 0x4bdecfa9UL, 0xf6bb4b60UL, 0xbebfbc70UL, -0x289b7ec6UL, 0xeaa127faUL, 0xd4ef3085UL, 0x04881d05UL, 0xd9d4d039UL, 0xe6db99e5UL, 0x1fa27cf8UL, 0xc4ac5665UL, -0xf4292244UL, 0x432aff97UL, 0xab9423a7UL, 0xfc93a039UL, 0x655b59c3UL, 0x8f0ccc92UL, 0xffeff47dUL, 0x85845dd1UL, -0x6fa87e4fUL, 0xfe2ce6e0UL, 0xa3014314UL, 0x4e0811a1UL, 0xf7537e82UL, 0xbd3af235UL, 0x2ad7d2bbUL, 0xeb86d391UL -}; - -#else - -#define FF(a,b,c,d,M,s,t) \ - a = (a + F(b,c,d) + M + t); a = ROLc(a, s) + b; - -#define GG(a,b,c,d,M,s,t) \ - a = (a + G(b,c,d) + M + t); a = ROLc(a, s) + b; - -#define HH(a,b,c,d,M,s,t) \ - a = (a + H(b,c,d) + M + t); a = ROLc(a, s) + b; - -#define II(a,b,c,d,M,s,t) \ - a = (a + I(b,c,d) + M + t); a = ROLc(a, s) + b; - - -#endif - -#ifdef LTC_CLEAN_STACK -static int _md5_compress(hash_state *md, unsigned char *buf) -#else -static int md5_compress(hash_state *md, unsigned char *buf) -#endif -{ - ulong32 i, W[16], a, b, c, d; -#ifdef LTC_SMALL_CODE - ulong32 t; -#endif - - /* copy the state into 512-bits into W[0..15] */ - for (i = 0; i < 16; i++) { - LOAD32L(W[i], buf + (4*i)); - } - - /* copy state */ - a = md->md5.state[0]; - b = md->md5.state[1]; - c = md->md5.state[2]; - d = md->md5.state[3]; - -#ifdef LTC_SMALL_CODE - for (i = 0; i < 16; ++i) { - FF(a,b,c,d,W[Worder[i]],Rorder[i],Korder[i]); - t = d; d = c; c = b; b = a; a = t; - } - - for (; i < 32; ++i) { - GG(a,b,c,d,W[Worder[i]],Rorder[i],Korder[i]); - t = d; d = c; c = b; b = a; a = t; - } - - for (; i < 48; ++i) { - HH(a,b,c,d,W[Worder[i]],Rorder[i],Korder[i]); - t = d; d = c; c = b; b = a; a = t; - } - - for (; i < 64; ++i) { - II(a,b,c,d,W[Worder[i]],Rorder[i],Korder[i]); - t = d; d = c; c = b; b = a; a = t; - } - -#else - FF(a,b,c,d,W[0],7,0xd76aa478UL) - FF(d,a,b,c,W[1],12,0xe8c7b756UL) - FF(c,d,a,b,W[2],17,0x242070dbUL) - FF(b,c,d,a,W[3],22,0xc1bdceeeUL) - FF(a,b,c,d,W[4],7,0xf57c0fafUL) - FF(d,a,b,c,W[5],12,0x4787c62aUL) - FF(c,d,a,b,W[6],17,0xa8304613UL) - FF(b,c,d,a,W[7],22,0xfd469501UL) - FF(a,b,c,d,W[8],7,0x698098d8UL) - FF(d,a,b,c,W[9],12,0x8b44f7afUL) - FF(c,d,a,b,W[10],17,0xffff5bb1UL) - FF(b,c,d,a,W[11],22,0x895cd7beUL) - FF(a,b,c,d,W[12],7,0x6b901122UL) - FF(d,a,b,c,W[13],12,0xfd987193UL) - FF(c,d,a,b,W[14],17,0xa679438eUL) - FF(b,c,d,a,W[15],22,0x49b40821UL) - GG(a,b,c,d,W[1],5,0xf61e2562UL) - GG(d,a,b,c,W[6],9,0xc040b340UL) - GG(c,d,a,b,W[11],14,0x265e5a51UL) - GG(b,c,d,a,W[0],20,0xe9b6c7aaUL) - GG(a,b,c,d,W[5],5,0xd62f105dUL) - GG(d,a,b,c,W[10],9,0x02441453UL) - GG(c,d,a,b,W[15],14,0xd8a1e681UL) - GG(b,c,d,a,W[4],20,0xe7d3fbc8UL) - GG(a,b,c,d,W[9],5,0x21e1cde6UL) - GG(d,a,b,c,W[14],9,0xc33707d6UL) - GG(c,d,a,b,W[3],14,0xf4d50d87UL) - GG(b,c,d,a,W[8],20,0x455a14edUL) - GG(a,b,c,d,W[13],5,0xa9e3e905UL) - GG(d,a,b,c,W[2],9,0xfcefa3f8UL) - GG(c,d,a,b,W[7],14,0x676f02d9UL) - GG(b,c,d,a,W[12],20,0x8d2a4c8aUL) - HH(a,b,c,d,W[5],4,0xfffa3942UL) - HH(d,a,b,c,W[8],11,0x8771f681UL) - HH(c,d,a,b,W[11],16,0x6d9d6122UL) - HH(b,c,d,a,W[14],23,0xfde5380cUL) - HH(a,b,c,d,W[1],4,0xa4beea44UL) - HH(d,a,b,c,W[4],11,0x4bdecfa9UL) - HH(c,d,a,b,W[7],16,0xf6bb4b60UL) - HH(b,c,d,a,W[10],23,0xbebfbc70UL) - HH(a,b,c,d,W[13],4,0x289b7ec6UL) - HH(d,a,b,c,W[0],11,0xeaa127faUL) - HH(c,d,a,b,W[3],16,0xd4ef3085UL) - HH(b,c,d,a,W[6],23,0x04881d05UL) - HH(a,b,c,d,W[9],4,0xd9d4d039UL) - HH(d,a,b,c,W[12],11,0xe6db99e5UL) - HH(c,d,a,b,W[15],16,0x1fa27cf8UL) - HH(b,c,d,a,W[2],23,0xc4ac5665UL) - II(a,b,c,d,W[0],6,0xf4292244UL) - II(d,a,b,c,W[7],10,0x432aff97UL) - II(c,d,a,b,W[14],15,0xab9423a7UL) - II(b,c,d,a,W[5],21,0xfc93a039UL) - II(a,b,c,d,W[12],6,0x655b59c3UL) - II(d,a,b,c,W[3],10,0x8f0ccc92UL) - II(c,d,a,b,W[10],15,0xffeff47dUL) - II(b,c,d,a,W[1],21,0x85845dd1UL) - II(a,b,c,d,W[8],6,0x6fa87e4fUL) - II(d,a,b,c,W[15],10,0xfe2ce6e0UL) - II(c,d,a,b,W[6],15,0xa3014314UL) - II(b,c,d,a,W[13],21,0x4e0811a1UL) - II(a,b,c,d,W[4],6,0xf7537e82UL) - II(d,a,b,c,W[11],10,0xbd3af235UL) - II(c,d,a,b,W[2],15,0x2ad7d2bbUL) - II(b,c,d,a,W[9],21,0xeb86d391UL) -#endif - - md->md5.state[0] = md->md5.state[0] + a; - md->md5.state[1] = md->md5.state[1] + b; - md->md5.state[2] = md->md5.state[2] + c; - md->md5.state[3] = md->md5.state[3] + d; - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -static int md5_compress(hash_state *md, unsigned char *buf) -{ - int err; - err = _md5_compress(md, buf); - burn_stack(sizeof(ulong32) * 21); - return err; -} -#endif - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int md5_init(hash_state * md) -{ - LTC_ARGCHK(md != NULL); - md->md5.state[0] = 0x67452301UL; - md->md5.state[1] = 0xefcdab89UL; - md->md5.state[2] = 0x98badcfeUL; - md->md5.state[3] = 0x10325476UL; - md->md5.curlen = 0; - md->md5.length = 0; - return CRYPT_OK; -} - -/** - Process a block of memory though the hash - @param md The hash state - @param in The data to hash - @param inlen The length of the data (octets) - @return CRYPT_OK if successful -*/ -HASH_PROCESS(md5_process, md5_compress, md5, 64) - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (16 bytes) - @return CRYPT_OK if successful -*/ -int md5_done(hash_state * md, unsigned char *out) -{ - int i; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (md->md5.curlen >= sizeof(md->md5.buf)) { - return CRYPT_INVALID_ARG; - } - - - /* increase the length of the message */ - md->md5.length += md->md5.curlen * 8; - - /* append the '1' bit */ - md->md5.buf[md->md5.curlen++] = (unsigned char)0x80; - - /* if the length is currently above 56 bytes we append zeros - * then compress. Then we can fall back to padding zeros and length - * encoding like normal. - */ - if (md->md5.curlen > 56) { - while (md->md5.curlen < 64) { - md->md5.buf[md->md5.curlen++] = (unsigned char)0; - } - md5_compress(md, md->md5.buf); - md->md5.curlen = 0; - } - - /* pad upto 56 bytes of zeroes */ - while (md->md5.curlen < 56) { - md->md5.buf[md->md5.curlen++] = (unsigned char)0; - } - - /* store length */ - STORE64L(md->md5.length, md->md5.buf+56); - md5_compress(md, md->md5.buf); - - /* copy output */ - for (i = 0; i < 4; i++) { - STORE32L(md->md5.state[i], out+(4*i)); - } -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(hash_state)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int md5_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - const char *msg; - unsigned char hash[16]; - } tests[] = { - { "", - { 0xd4, 0x1d, 0x8c, 0xd9, 0x8f, 0x00, 0xb2, 0x04, - 0xe9, 0x80, 0x09, 0x98, 0xec, 0xf8, 0x42, 0x7e } }, - { "a", - {0x0c, 0xc1, 0x75, 0xb9, 0xc0, 0xf1, 0xb6, 0xa8, - 0x31, 0xc3, 0x99, 0xe2, 0x69, 0x77, 0x26, 0x61 } }, - { "abc", - { 0x90, 0x01, 0x50, 0x98, 0x3c, 0xd2, 0x4f, 0xb0, - 0xd6, 0x96, 0x3f, 0x7d, 0x28, 0xe1, 0x7f, 0x72 } }, - { "message digest", - { 0xf9, 0x6b, 0x69, 0x7d, 0x7c, 0xb7, 0x93, 0x8d, - 0x52, 0x5a, 0x2f, 0x31, 0xaa, 0xf1, 0x61, 0xd0 } }, - { "abcdefghijklmnopqrstuvwxyz", - { 0xc3, 0xfc, 0xd3, 0xd7, 0x61, 0x92, 0xe4, 0x00, - 0x7d, 0xfb, 0x49, 0x6c, 0xca, 0x67, 0xe1, 0x3b } }, - { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", - { 0xd1, 0x74, 0xab, 0x98, 0xd2, 0x77, 0xd9, 0xf5, - 0xa5, 0x61, 0x1c, 0x2c, 0x9f, 0x41, 0x9d, 0x9f } }, - { "12345678901234567890123456789012345678901234567890123456789012345678901234567890", - { 0x57, 0xed, 0xf4, 0xa2, 0x2b, 0xe3, 0xc9, 0x55, - 0xac, 0x49, 0xda, 0x2e, 0x21, 0x07, 0xb6, 0x7a } }, - { NULL, { 0 } } - }; - - int i; - unsigned char tmp[16]; - hash_state md; - - for (i = 0; tests[i].msg != NULL; i++) { - md5_init(&md); - md5_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - md5_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "MD5", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; - #endif -} - -#endif - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/rmd128.c b/src/libtomcrypt/src/hashes/rmd128.c deleted file mode 100644 index adee0758fc..0000000000 --- a/src/libtomcrypt/src/hashes/rmd128.c +++ /dev/null @@ -1,406 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @param rmd128.c - RMD128 Hash function -*/ - -/* Implementation of LTC_RIPEMD-128 based on the source by Antoon Bosselaers, ESAT-COSIC - * - * This source has been radically overhauled to be portable and work within - * the LibTomCrypt API by Tom St Denis - */ - -#ifdef LTC_RIPEMD128 - -const struct ltc_hash_descriptor rmd128_desc = -{ - "rmd128", - 8, - 16, - 64, - - /* OID */ - { 1, 0, 10118, 3, 0, 50 }, - 6, - - &rmd128_init, - &rmd128_process, - &rmd128_done, - &rmd128_test, - NULL -}; - -/* the four basic functions F(), G() and H() */ -#define F(x, y, z) ((x) ^ (y) ^ (z)) -#define G(x, y, z) (((x) & (y)) | (~(x) & (z))) -#define H(x, y, z) (((x) | ~(y)) ^ (z)) -#define I(x, y, z) (((x) & (z)) | ((y) & ~(z))) - -/* the eight basic operations FF() through III() */ -#define FF(a, b, c, d, x, s) \ - (a) += F((b), (c), (d)) + (x);\ - (a) = ROLc((a), (s)); - -#define GG(a, b, c, d, x, s) \ - (a) += G((b), (c), (d)) + (x) + 0x5a827999UL;\ - (a) = ROLc((a), (s)); - -#define HH(a, b, c, d, x, s) \ - (a) += H((b), (c), (d)) + (x) + 0x6ed9eba1UL;\ - (a) = ROLc((a), (s)); - -#define II(a, b, c, d, x, s) \ - (a) += I((b), (c), (d)) + (x) + 0x8f1bbcdcUL;\ - (a) = ROLc((a), (s)); - -#define FFF(a, b, c, d, x, s) \ - (a) += F((b), (c), (d)) + (x);\ - (a) = ROLc((a), (s)); - -#define GGG(a, b, c, d, x, s) \ - (a) += G((b), (c), (d)) + (x) + 0x6d703ef3UL;\ - (a) = ROLc((a), (s)); - -#define HHH(a, b, c, d, x, s) \ - (a) += H((b), (c), (d)) + (x) + 0x5c4dd124UL;\ - (a) = ROLc((a), (s)); - -#define III(a, b, c, d, x, s) \ - (a) += I((b), (c), (d)) + (x) + 0x50a28be6UL;\ - (a) = ROLc((a), (s)); - -#ifdef LTC_CLEAN_STACK -static int _rmd128_compress(hash_state *md, unsigned char *buf) -#else -static int rmd128_compress(hash_state *md, unsigned char *buf) -#endif -{ - ulong32 aa,bb,cc,dd,aaa,bbb,ccc,ddd,X[16]; - int i; - - /* load words X */ - for (i = 0; i < 16; i++){ - LOAD32L(X[i], buf + (4 * i)); - } - - /* load state */ - aa = aaa = md->rmd128.state[0]; - bb = bbb = md->rmd128.state[1]; - cc = ccc = md->rmd128.state[2]; - dd = ddd = md->rmd128.state[3]; - - /* round 1 */ - FF(aa, bb, cc, dd, X[ 0], 11); - FF(dd, aa, bb, cc, X[ 1], 14); - FF(cc, dd, aa, bb, X[ 2], 15); - FF(bb, cc, dd, aa, X[ 3], 12); - FF(aa, bb, cc, dd, X[ 4], 5); - FF(dd, aa, bb, cc, X[ 5], 8); - FF(cc, dd, aa, bb, X[ 6], 7); - FF(bb, cc, dd, aa, X[ 7], 9); - FF(aa, bb, cc, dd, X[ 8], 11); - FF(dd, aa, bb, cc, X[ 9], 13); - FF(cc, dd, aa, bb, X[10], 14); - FF(bb, cc, dd, aa, X[11], 15); - FF(aa, bb, cc, dd, X[12], 6); - FF(dd, aa, bb, cc, X[13], 7); - FF(cc, dd, aa, bb, X[14], 9); - FF(bb, cc, dd, aa, X[15], 8); - - /* round 2 */ - GG(aa, bb, cc, dd, X[ 7], 7); - GG(dd, aa, bb, cc, X[ 4], 6); - GG(cc, dd, aa, bb, X[13], 8); - GG(bb, cc, dd, aa, X[ 1], 13); - GG(aa, bb, cc, dd, X[10], 11); - GG(dd, aa, bb, cc, X[ 6], 9); - GG(cc, dd, aa, bb, X[15], 7); - GG(bb, cc, dd, aa, X[ 3], 15); - GG(aa, bb, cc, dd, X[12], 7); - GG(dd, aa, bb, cc, X[ 0], 12); - GG(cc, dd, aa, bb, X[ 9], 15); - GG(bb, cc, dd, aa, X[ 5], 9); - GG(aa, bb, cc, dd, X[ 2], 11); - GG(dd, aa, bb, cc, X[14], 7); - GG(cc, dd, aa, bb, X[11], 13); - GG(bb, cc, dd, aa, X[ 8], 12); - - /* round 3 */ - HH(aa, bb, cc, dd, X[ 3], 11); - HH(dd, aa, bb, cc, X[10], 13); - HH(cc, dd, aa, bb, X[14], 6); - HH(bb, cc, dd, aa, X[ 4], 7); - HH(aa, bb, cc, dd, X[ 9], 14); - HH(dd, aa, bb, cc, X[15], 9); - HH(cc, dd, aa, bb, X[ 8], 13); - HH(bb, cc, dd, aa, X[ 1], 15); - HH(aa, bb, cc, dd, X[ 2], 14); - HH(dd, aa, bb, cc, X[ 7], 8); - HH(cc, dd, aa, bb, X[ 0], 13); - HH(bb, cc, dd, aa, X[ 6], 6); - HH(aa, bb, cc, dd, X[13], 5); - HH(dd, aa, bb, cc, X[11], 12); - HH(cc, dd, aa, bb, X[ 5], 7); - HH(bb, cc, dd, aa, X[12], 5); - - /* round 4 */ - II(aa, bb, cc, dd, X[ 1], 11); - II(dd, aa, bb, cc, X[ 9], 12); - II(cc, dd, aa, bb, X[11], 14); - II(bb, cc, dd, aa, X[10], 15); - II(aa, bb, cc, dd, X[ 0], 14); - II(dd, aa, bb, cc, X[ 8], 15); - II(cc, dd, aa, bb, X[12], 9); - II(bb, cc, dd, aa, X[ 4], 8); - II(aa, bb, cc, dd, X[13], 9); - II(dd, aa, bb, cc, X[ 3], 14); - II(cc, dd, aa, bb, X[ 7], 5); - II(bb, cc, dd, aa, X[15], 6); - II(aa, bb, cc, dd, X[14], 8); - II(dd, aa, bb, cc, X[ 5], 6); - II(cc, dd, aa, bb, X[ 6], 5); - II(bb, cc, dd, aa, X[ 2], 12); - - /* parallel round 1 */ - III(aaa, bbb, ccc, ddd, X[ 5], 8); - III(ddd, aaa, bbb, ccc, X[14], 9); - III(ccc, ddd, aaa, bbb, X[ 7], 9); - III(bbb, ccc, ddd, aaa, X[ 0], 11); - III(aaa, bbb, ccc, ddd, X[ 9], 13); - III(ddd, aaa, bbb, ccc, X[ 2], 15); - III(ccc, ddd, aaa, bbb, X[11], 15); - III(bbb, ccc, ddd, aaa, X[ 4], 5); - III(aaa, bbb, ccc, ddd, X[13], 7); - III(ddd, aaa, bbb, ccc, X[ 6], 7); - III(ccc, ddd, aaa, bbb, X[15], 8); - III(bbb, ccc, ddd, aaa, X[ 8], 11); - III(aaa, bbb, ccc, ddd, X[ 1], 14); - III(ddd, aaa, bbb, ccc, X[10], 14); - III(ccc, ddd, aaa, bbb, X[ 3], 12); - III(bbb, ccc, ddd, aaa, X[12], 6); - - /* parallel round 2 */ - HHH(aaa, bbb, ccc, ddd, X[ 6], 9); - HHH(ddd, aaa, bbb, ccc, X[11], 13); - HHH(ccc, ddd, aaa, bbb, X[ 3], 15); - HHH(bbb, ccc, ddd, aaa, X[ 7], 7); - HHH(aaa, bbb, ccc, ddd, X[ 0], 12); - HHH(ddd, aaa, bbb, ccc, X[13], 8); - HHH(ccc, ddd, aaa, bbb, X[ 5], 9); - HHH(bbb, ccc, ddd, aaa, X[10], 11); - HHH(aaa, bbb, ccc, ddd, X[14], 7); - HHH(ddd, aaa, bbb, ccc, X[15], 7); - HHH(ccc, ddd, aaa, bbb, X[ 8], 12); - HHH(bbb, ccc, ddd, aaa, X[12], 7); - HHH(aaa, bbb, ccc, ddd, X[ 4], 6); - HHH(ddd, aaa, bbb, ccc, X[ 9], 15); - HHH(ccc, ddd, aaa, bbb, X[ 1], 13); - HHH(bbb, ccc, ddd, aaa, X[ 2], 11); - - /* parallel round 3 */ - GGG(aaa, bbb, ccc, ddd, X[15], 9); - GGG(ddd, aaa, bbb, ccc, X[ 5], 7); - GGG(ccc, ddd, aaa, bbb, X[ 1], 15); - GGG(bbb, ccc, ddd, aaa, X[ 3], 11); - GGG(aaa, bbb, ccc, ddd, X[ 7], 8); - GGG(ddd, aaa, bbb, ccc, X[14], 6); - GGG(ccc, ddd, aaa, bbb, X[ 6], 6); - GGG(bbb, ccc, ddd, aaa, X[ 9], 14); - GGG(aaa, bbb, ccc, ddd, X[11], 12); - GGG(ddd, aaa, bbb, ccc, X[ 8], 13); - GGG(ccc, ddd, aaa, bbb, X[12], 5); - GGG(bbb, ccc, ddd, aaa, X[ 2], 14); - GGG(aaa, bbb, ccc, ddd, X[10], 13); - GGG(ddd, aaa, bbb, ccc, X[ 0], 13); - GGG(ccc, ddd, aaa, bbb, X[ 4], 7); - GGG(bbb, ccc, ddd, aaa, X[13], 5); - - /* parallel round 4 */ - FFF(aaa, bbb, ccc, ddd, X[ 8], 15); - FFF(ddd, aaa, bbb, ccc, X[ 6], 5); - FFF(ccc, ddd, aaa, bbb, X[ 4], 8); - FFF(bbb, ccc, ddd, aaa, X[ 1], 11); - FFF(aaa, bbb, ccc, ddd, X[ 3], 14); - FFF(ddd, aaa, bbb, ccc, X[11], 14); - FFF(ccc, ddd, aaa, bbb, X[15], 6); - FFF(bbb, ccc, ddd, aaa, X[ 0], 14); - FFF(aaa, bbb, ccc, ddd, X[ 5], 6); - FFF(ddd, aaa, bbb, ccc, X[12], 9); - FFF(ccc, ddd, aaa, bbb, X[ 2], 12); - FFF(bbb, ccc, ddd, aaa, X[13], 9); - FFF(aaa, bbb, ccc, ddd, X[ 9], 12); - FFF(ddd, aaa, bbb, ccc, X[ 7], 5); - FFF(ccc, ddd, aaa, bbb, X[10], 15); - FFF(bbb, ccc, ddd, aaa, X[14], 8); - - /* combine results */ - ddd += cc + md->rmd128.state[1]; /* final result for MDbuf[0] */ - md->rmd128.state[1] = md->rmd128.state[2] + dd + aaa; - md->rmd128.state[2] = md->rmd128.state[3] + aa + bbb; - md->rmd128.state[3] = md->rmd128.state[0] + bb + ccc; - md->rmd128.state[0] = ddd; - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -static int rmd128_compress(hash_state *md, unsigned char *buf) -{ - int err; - err = _rmd128_compress(md, buf); - burn_stack(sizeof(ulong32) * 24 + sizeof(int)); - return err; -} -#endif - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int rmd128_init(hash_state * md) -{ - LTC_ARGCHK(md != NULL); - md->rmd128.state[0] = 0x67452301UL; - md->rmd128.state[1] = 0xefcdab89UL; - md->rmd128.state[2] = 0x98badcfeUL; - md->rmd128.state[3] = 0x10325476UL; - md->rmd128.curlen = 0; - md->rmd128.length = 0; - return CRYPT_OK; -} - -/** - Process a block of memory though the hash - @param md The hash state - @param in The data to hash - @param inlen The length of the data (octets) - @return CRYPT_OK if successful -*/ -HASH_PROCESS(rmd128_process, rmd128_compress, rmd128, 64) - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (16 bytes) - @return CRYPT_OK if successful -*/ -int rmd128_done(hash_state * md, unsigned char *out) -{ - int i; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (md->rmd128.curlen >= sizeof(md->rmd128.buf)) { - return CRYPT_INVALID_ARG; - } - - - /* increase the length of the message */ - md->rmd128.length += md->rmd128.curlen * 8; - - /* append the '1' bit */ - md->rmd128.buf[md->rmd128.curlen++] = (unsigned char)0x80; - - /* if the length is currently above 56 bytes we append zeros - * then compress. Then we can fall back to padding zeros and length - * encoding like normal. - */ - if (md->rmd128.curlen > 56) { - while (md->rmd128.curlen < 64) { - md->rmd128.buf[md->rmd128.curlen++] = (unsigned char)0; - } - rmd128_compress(md, md->rmd128.buf); - md->rmd128.curlen = 0; - } - - /* pad upto 56 bytes of zeroes */ - while (md->rmd128.curlen < 56) { - md->rmd128.buf[md->rmd128.curlen++] = (unsigned char)0; - } - - /* store length */ - STORE64L(md->rmd128.length, md->rmd128.buf+56); - rmd128_compress(md, md->rmd128.buf); - - /* copy output */ - for (i = 0; i < 4; i++) { - STORE32L(md->rmd128.state[i], out+(4*i)); - } -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(hash_state)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int rmd128_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - const char *msg; - unsigned char hash[16]; - } tests[] = { - { "", - { 0xcd, 0xf2, 0x62, 0x13, 0xa1, 0x50, 0xdc, 0x3e, - 0xcb, 0x61, 0x0f, 0x18, 0xf6, 0xb3, 0x8b, 0x46 } - }, - { "a", - { 0x86, 0xbe, 0x7a, 0xfa, 0x33, 0x9d, 0x0f, 0xc7, - 0xcf, 0xc7, 0x85, 0xe7, 0x2f, 0x57, 0x8d, 0x33 } - }, - { "abc", - { 0xc1, 0x4a, 0x12, 0x19, 0x9c, 0x66, 0xe4, 0xba, - 0x84, 0x63, 0x6b, 0x0f, 0x69, 0x14, 0x4c, 0x77 } - }, - { "message digest", - { 0x9e, 0x32, 0x7b, 0x3d, 0x6e, 0x52, 0x30, 0x62, - 0xaf, 0xc1, 0x13, 0x2d, 0x7d, 0xf9, 0xd1, 0xb8 } - }, - { "abcdefghijklmnopqrstuvwxyz", - { 0xfd, 0x2a, 0xa6, 0x07, 0xf7, 0x1d, 0xc8, 0xf5, - 0x10, 0x71, 0x49, 0x22, 0xb3, 0x71, 0x83, 0x4e } - }, - { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", - { 0xd1, 0xe9, 0x59, 0xeb, 0x17, 0x9c, 0x91, 0x1f, - 0xae, 0xa4, 0x62, 0x4c, 0x60, 0xc5, 0xc7, 0x02 } - } - }; - - int i; - unsigned char tmp[16]; - hash_state md; - - for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { - rmd128_init(&md); - rmd128_process(&md, (unsigned char *)tests[i].msg, strlen(tests[i].msg)); - rmd128_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "RIPEMD128", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/rmd160.c b/src/libtomcrypt/src/hashes/rmd160.c deleted file mode 100644 index b2935393ce..0000000000 --- a/src/libtomcrypt/src/hashes/rmd160.c +++ /dev/null @@ -1,465 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file rmd160.c - RMD160 hash function -*/ - -/* Implementation of LTC_RIPEMD-160 based on the source by Antoon Bosselaers, ESAT-COSIC - * - * This source has been radically overhauled to be portable and work within - * the LibTomCrypt API by Tom St Denis - */ - -#ifdef LTC_RIPEMD160 - -const struct ltc_hash_descriptor rmd160_desc = -{ - "rmd160", - 9, - 20, - 64, - - /* OID */ - { 1, 3, 36, 3, 2, 1, }, - 6, - - &rmd160_init, - &rmd160_process, - &rmd160_done, - &rmd160_test, - NULL -}; - -/* the five basic functions F(), G() and H() */ -#define F(x, y, z) ((x) ^ (y) ^ (z)) -#define G(x, y, z) (((x) & (y)) | (~(x) & (z))) -#define H(x, y, z) (((x) | ~(y)) ^ (z)) -#define I(x, y, z) (((x) & (z)) | ((y) & ~(z))) -#define J(x, y, z) ((x) ^ ((y) | ~(z))) - -/* the ten basic operations FF() through III() */ -#define FF(a, b, c, d, e, x, s) \ - (a) += F((b), (c), (d)) + (x);\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define GG(a, b, c, d, e, x, s) \ - (a) += G((b), (c), (d)) + (x) + 0x5a827999UL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define HH(a, b, c, d, e, x, s) \ - (a) += H((b), (c), (d)) + (x) + 0x6ed9eba1UL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define II(a, b, c, d, e, x, s) \ - (a) += I((b), (c), (d)) + (x) + 0x8f1bbcdcUL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define JJ(a, b, c, d, e, x, s) \ - (a) += J((b), (c), (d)) + (x) + 0xa953fd4eUL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define FFF(a, b, c, d, e, x, s) \ - (a) += F((b), (c), (d)) + (x);\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define GGG(a, b, c, d, e, x, s) \ - (a) += G((b), (c), (d)) + (x) + 0x7a6d76e9UL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define HHH(a, b, c, d, e, x, s) \ - (a) += H((b), (c), (d)) + (x) + 0x6d703ef3UL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define III(a, b, c, d, e, x, s) \ - (a) += I((b), (c), (d)) + (x) + 0x5c4dd124UL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define JJJ(a, b, c, d, e, x, s) \ - (a) += J((b), (c), (d)) + (x) + 0x50a28be6UL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - - -#ifdef LTC_CLEAN_STACK -static int _rmd160_compress(hash_state *md, unsigned char *buf) -#else -static int rmd160_compress(hash_state *md, unsigned char *buf) -#endif -{ - ulong32 aa,bb,cc,dd,ee,aaa,bbb,ccc,ddd,eee,X[16]; - int i; - - /* load words X */ - for (i = 0; i < 16; i++){ - LOAD32L(X[i], buf + (4 * i)); - } - - /* load state */ - aa = aaa = md->rmd160.state[0]; - bb = bbb = md->rmd160.state[1]; - cc = ccc = md->rmd160.state[2]; - dd = ddd = md->rmd160.state[3]; - ee = eee = md->rmd160.state[4]; - - /* round 1 */ - FF(aa, bb, cc, dd, ee, X[ 0], 11); - FF(ee, aa, bb, cc, dd, X[ 1], 14); - FF(dd, ee, aa, bb, cc, X[ 2], 15); - FF(cc, dd, ee, aa, bb, X[ 3], 12); - FF(bb, cc, dd, ee, aa, X[ 4], 5); - FF(aa, bb, cc, dd, ee, X[ 5], 8); - FF(ee, aa, bb, cc, dd, X[ 6], 7); - FF(dd, ee, aa, bb, cc, X[ 7], 9); - FF(cc, dd, ee, aa, bb, X[ 8], 11); - FF(bb, cc, dd, ee, aa, X[ 9], 13); - FF(aa, bb, cc, dd, ee, X[10], 14); - FF(ee, aa, bb, cc, dd, X[11], 15); - FF(dd, ee, aa, bb, cc, X[12], 6); - FF(cc, dd, ee, aa, bb, X[13], 7); - FF(bb, cc, dd, ee, aa, X[14], 9); - FF(aa, bb, cc, dd, ee, X[15], 8); - - /* round 2 */ - GG(ee, aa, bb, cc, dd, X[ 7], 7); - GG(dd, ee, aa, bb, cc, X[ 4], 6); - GG(cc, dd, ee, aa, bb, X[13], 8); - GG(bb, cc, dd, ee, aa, X[ 1], 13); - GG(aa, bb, cc, dd, ee, X[10], 11); - GG(ee, aa, bb, cc, dd, X[ 6], 9); - GG(dd, ee, aa, bb, cc, X[15], 7); - GG(cc, dd, ee, aa, bb, X[ 3], 15); - GG(bb, cc, dd, ee, aa, X[12], 7); - GG(aa, bb, cc, dd, ee, X[ 0], 12); - GG(ee, aa, bb, cc, dd, X[ 9], 15); - GG(dd, ee, aa, bb, cc, X[ 5], 9); - GG(cc, dd, ee, aa, bb, X[ 2], 11); - GG(bb, cc, dd, ee, aa, X[14], 7); - GG(aa, bb, cc, dd, ee, X[11], 13); - GG(ee, aa, bb, cc, dd, X[ 8], 12); - - /* round 3 */ - HH(dd, ee, aa, bb, cc, X[ 3], 11); - HH(cc, dd, ee, aa, bb, X[10], 13); - HH(bb, cc, dd, ee, aa, X[14], 6); - HH(aa, bb, cc, dd, ee, X[ 4], 7); - HH(ee, aa, bb, cc, dd, X[ 9], 14); - HH(dd, ee, aa, bb, cc, X[15], 9); - HH(cc, dd, ee, aa, bb, X[ 8], 13); - HH(bb, cc, dd, ee, aa, X[ 1], 15); - HH(aa, bb, cc, dd, ee, X[ 2], 14); - HH(ee, aa, bb, cc, dd, X[ 7], 8); - HH(dd, ee, aa, bb, cc, X[ 0], 13); - HH(cc, dd, ee, aa, bb, X[ 6], 6); - HH(bb, cc, dd, ee, aa, X[13], 5); - HH(aa, bb, cc, dd, ee, X[11], 12); - HH(ee, aa, bb, cc, dd, X[ 5], 7); - HH(dd, ee, aa, bb, cc, X[12], 5); - - /* round 4 */ - II(cc, dd, ee, aa, bb, X[ 1], 11); - II(bb, cc, dd, ee, aa, X[ 9], 12); - II(aa, bb, cc, dd, ee, X[11], 14); - II(ee, aa, bb, cc, dd, X[10], 15); - II(dd, ee, aa, bb, cc, X[ 0], 14); - II(cc, dd, ee, aa, bb, X[ 8], 15); - II(bb, cc, dd, ee, aa, X[12], 9); - II(aa, bb, cc, dd, ee, X[ 4], 8); - II(ee, aa, bb, cc, dd, X[13], 9); - II(dd, ee, aa, bb, cc, X[ 3], 14); - II(cc, dd, ee, aa, bb, X[ 7], 5); - II(bb, cc, dd, ee, aa, X[15], 6); - II(aa, bb, cc, dd, ee, X[14], 8); - II(ee, aa, bb, cc, dd, X[ 5], 6); - II(dd, ee, aa, bb, cc, X[ 6], 5); - II(cc, dd, ee, aa, bb, X[ 2], 12); - - /* round 5 */ - JJ(bb, cc, dd, ee, aa, X[ 4], 9); - JJ(aa, bb, cc, dd, ee, X[ 0], 15); - JJ(ee, aa, bb, cc, dd, X[ 5], 5); - JJ(dd, ee, aa, bb, cc, X[ 9], 11); - JJ(cc, dd, ee, aa, bb, X[ 7], 6); - JJ(bb, cc, dd, ee, aa, X[12], 8); - JJ(aa, bb, cc, dd, ee, X[ 2], 13); - JJ(ee, aa, bb, cc, dd, X[10], 12); - JJ(dd, ee, aa, bb, cc, X[14], 5); - JJ(cc, dd, ee, aa, bb, X[ 1], 12); - JJ(bb, cc, dd, ee, aa, X[ 3], 13); - JJ(aa, bb, cc, dd, ee, X[ 8], 14); - JJ(ee, aa, bb, cc, dd, X[11], 11); - JJ(dd, ee, aa, bb, cc, X[ 6], 8); - JJ(cc, dd, ee, aa, bb, X[15], 5); - JJ(bb, cc, dd, ee, aa, X[13], 6); - - /* parallel round 1 */ - JJJ(aaa, bbb, ccc, ddd, eee, X[ 5], 8); - JJJ(eee, aaa, bbb, ccc, ddd, X[14], 9); - JJJ(ddd, eee, aaa, bbb, ccc, X[ 7], 9); - JJJ(ccc, ddd, eee, aaa, bbb, X[ 0], 11); - JJJ(bbb, ccc, ddd, eee, aaa, X[ 9], 13); - JJJ(aaa, bbb, ccc, ddd, eee, X[ 2], 15); - JJJ(eee, aaa, bbb, ccc, ddd, X[11], 15); - JJJ(ddd, eee, aaa, bbb, ccc, X[ 4], 5); - JJJ(ccc, ddd, eee, aaa, bbb, X[13], 7); - JJJ(bbb, ccc, ddd, eee, aaa, X[ 6], 7); - JJJ(aaa, bbb, ccc, ddd, eee, X[15], 8); - JJJ(eee, aaa, bbb, ccc, ddd, X[ 8], 11); - JJJ(ddd, eee, aaa, bbb, ccc, X[ 1], 14); - JJJ(ccc, ddd, eee, aaa, bbb, X[10], 14); - JJJ(bbb, ccc, ddd, eee, aaa, X[ 3], 12); - JJJ(aaa, bbb, ccc, ddd, eee, X[12], 6); - - /* parallel round 2 */ - III(eee, aaa, bbb, ccc, ddd, X[ 6], 9); - III(ddd, eee, aaa, bbb, ccc, X[11], 13); - III(ccc, ddd, eee, aaa, bbb, X[ 3], 15); - III(bbb, ccc, ddd, eee, aaa, X[ 7], 7); - III(aaa, bbb, ccc, ddd, eee, X[ 0], 12); - III(eee, aaa, bbb, ccc, ddd, X[13], 8); - III(ddd, eee, aaa, bbb, ccc, X[ 5], 9); - III(ccc, ddd, eee, aaa, bbb, X[10], 11); - III(bbb, ccc, ddd, eee, aaa, X[14], 7); - III(aaa, bbb, ccc, ddd, eee, X[15], 7); - III(eee, aaa, bbb, ccc, ddd, X[ 8], 12); - III(ddd, eee, aaa, bbb, ccc, X[12], 7); - III(ccc, ddd, eee, aaa, bbb, X[ 4], 6); - III(bbb, ccc, ddd, eee, aaa, X[ 9], 15); - III(aaa, bbb, ccc, ddd, eee, X[ 1], 13); - III(eee, aaa, bbb, ccc, ddd, X[ 2], 11); - - /* parallel round 3 */ - HHH(ddd, eee, aaa, bbb, ccc, X[15], 9); - HHH(ccc, ddd, eee, aaa, bbb, X[ 5], 7); - HHH(bbb, ccc, ddd, eee, aaa, X[ 1], 15); - HHH(aaa, bbb, ccc, ddd, eee, X[ 3], 11); - HHH(eee, aaa, bbb, ccc, ddd, X[ 7], 8); - HHH(ddd, eee, aaa, bbb, ccc, X[14], 6); - HHH(ccc, ddd, eee, aaa, bbb, X[ 6], 6); - HHH(bbb, ccc, ddd, eee, aaa, X[ 9], 14); - HHH(aaa, bbb, ccc, ddd, eee, X[11], 12); - HHH(eee, aaa, bbb, ccc, ddd, X[ 8], 13); - HHH(ddd, eee, aaa, bbb, ccc, X[12], 5); - HHH(ccc, ddd, eee, aaa, bbb, X[ 2], 14); - HHH(bbb, ccc, ddd, eee, aaa, X[10], 13); - HHH(aaa, bbb, ccc, ddd, eee, X[ 0], 13); - HHH(eee, aaa, bbb, ccc, ddd, X[ 4], 7); - HHH(ddd, eee, aaa, bbb, ccc, X[13], 5); - - /* parallel round 4 */ - GGG(ccc, ddd, eee, aaa, bbb, X[ 8], 15); - GGG(bbb, ccc, ddd, eee, aaa, X[ 6], 5); - GGG(aaa, bbb, ccc, ddd, eee, X[ 4], 8); - GGG(eee, aaa, bbb, ccc, ddd, X[ 1], 11); - GGG(ddd, eee, aaa, bbb, ccc, X[ 3], 14); - GGG(ccc, ddd, eee, aaa, bbb, X[11], 14); - GGG(bbb, ccc, ddd, eee, aaa, X[15], 6); - GGG(aaa, bbb, ccc, ddd, eee, X[ 0], 14); - GGG(eee, aaa, bbb, ccc, ddd, X[ 5], 6); - GGG(ddd, eee, aaa, bbb, ccc, X[12], 9); - GGG(ccc, ddd, eee, aaa, bbb, X[ 2], 12); - GGG(bbb, ccc, ddd, eee, aaa, X[13], 9); - GGG(aaa, bbb, ccc, ddd, eee, X[ 9], 12); - GGG(eee, aaa, bbb, ccc, ddd, X[ 7], 5); - GGG(ddd, eee, aaa, bbb, ccc, X[10], 15); - GGG(ccc, ddd, eee, aaa, bbb, X[14], 8); - - /* parallel round 5 */ - FFF(bbb, ccc, ddd, eee, aaa, X[12] , 8); - FFF(aaa, bbb, ccc, ddd, eee, X[15] , 5); - FFF(eee, aaa, bbb, ccc, ddd, X[10] , 12); - FFF(ddd, eee, aaa, bbb, ccc, X[ 4] , 9); - FFF(ccc, ddd, eee, aaa, bbb, X[ 1] , 12); - FFF(bbb, ccc, ddd, eee, aaa, X[ 5] , 5); - FFF(aaa, bbb, ccc, ddd, eee, X[ 8] , 14); - FFF(eee, aaa, bbb, ccc, ddd, X[ 7] , 6); - FFF(ddd, eee, aaa, bbb, ccc, X[ 6] , 8); - FFF(ccc, ddd, eee, aaa, bbb, X[ 2] , 13); - FFF(bbb, ccc, ddd, eee, aaa, X[13] , 6); - FFF(aaa, bbb, ccc, ddd, eee, X[14] , 5); - FFF(eee, aaa, bbb, ccc, ddd, X[ 0] , 15); - FFF(ddd, eee, aaa, bbb, ccc, X[ 3] , 13); - FFF(ccc, ddd, eee, aaa, bbb, X[ 9] , 11); - FFF(bbb, ccc, ddd, eee, aaa, X[11] , 11); - - /* combine results */ - ddd += cc + md->rmd160.state[1]; /* final result for md->rmd160.state[0] */ - md->rmd160.state[1] = md->rmd160.state[2] + dd + eee; - md->rmd160.state[2] = md->rmd160.state[3] + ee + aaa; - md->rmd160.state[3] = md->rmd160.state[4] + aa + bbb; - md->rmd160.state[4] = md->rmd160.state[0] + bb + ccc; - md->rmd160.state[0] = ddd; - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -static int rmd160_compress(hash_state *md, unsigned char *buf) -{ - int err; - err = _rmd160_compress(md, buf); - burn_stack(sizeof(ulong32) * 26 + sizeof(int)); - return err; -} -#endif - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int rmd160_init(hash_state * md) -{ - LTC_ARGCHK(md != NULL); - md->rmd160.state[0] = 0x67452301UL; - md->rmd160.state[1] = 0xefcdab89UL; - md->rmd160.state[2] = 0x98badcfeUL; - md->rmd160.state[3] = 0x10325476UL; - md->rmd160.state[4] = 0xc3d2e1f0UL; - md->rmd160.curlen = 0; - md->rmd160.length = 0; - return CRYPT_OK; -} - -/** - Process a block of memory though the hash - @param md The hash state - @param in The data to hash - @param inlen The length of the data (octets) - @return CRYPT_OK if successful -*/ -HASH_PROCESS(rmd160_process, rmd160_compress, rmd160, 64) - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (20 bytes) - @return CRYPT_OK if successful -*/ -int rmd160_done(hash_state * md, unsigned char *out) -{ - int i; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (md->rmd160.curlen >= sizeof(md->rmd160.buf)) { - return CRYPT_INVALID_ARG; - } - - - /* increase the length of the message */ - md->rmd160.length += md->rmd160.curlen * 8; - - /* append the '1' bit */ - md->rmd160.buf[md->rmd160.curlen++] = (unsigned char)0x80; - - /* if the length is currently above 56 bytes we append zeros - * then compress. Then we can fall back to padding zeros and length - * encoding like normal. - */ - if (md->rmd160.curlen > 56) { - while (md->rmd160.curlen < 64) { - md->rmd160.buf[md->rmd160.curlen++] = (unsigned char)0; - } - rmd160_compress(md, md->rmd160.buf); - md->rmd160.curlen = 0; - } - - /* pad upto 56 bytes of zeroes */ - while (md->rmd160.curlen < 56) { - md->rmd160.buf[md->rmd160.curlen++] = (unsigned char)0; - } - - /* store length */ - STORE64L(md->rmd160.length, md->rmd160.buf+56); - rmd160_compress(md, md->rmd160.buf); - - /* copy output */ - for (i = 0; i < 5; i++) { - STORE32L(md->rmd160.state[i], out+(4*i)); - } -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(hash_state)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int rmd160_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - const char *msg; - unsigned char hash[20]; - } tests[] = { - { "", - { 0x9c, 0x11, 0x85, 0xa5, 0xc5, 0xe9, 0xfc, 0x54, 0x61, 0x28, - 0x08, 0x97, 0x7e, 0xe8, 0xf5, 0x48, 0xb2, 0x25, 0x8d, 0x31 } - }, - { "a", - { 0x0b, 0xdc, 0x9d, 0x2d, 0x25, 0x6b, 0x3e, 0xe9, 0xda, 0xae, - 0x34, 0x7b, 0xe6, 0xf4, 0xdc, 0x83, 0x5a, 0x46, 0x7f, 0xfe } - }, - { "abc", - { 0x8e, 0xb2, 0x08, 0xf7, 0xe0, 0x5d, 0x98, 0x7a, 0x9b, 0x04, - 0x4a, 0x8e, 0x98, 0xc6, 0xb0, 0x87, 0xf1, 0x5a, 0x0b, 0xfc } - }, - { "message digest", - { 0x5d, 0x06, 0x89, 0xef, 0x49, 0xd2, 0xfa, 0xe5, 0x72, 0xb8, - 0x81, 0xb1, 0x23, 0xa8, 0x5f, 0xfa, 0x21, 0x59, 0x5f, 0x36 } - }, - { "abcdefghijklmnopqrstuvwxyz", - { 0xf7, 0x1c, 0x27, 0x10, 0x9c, 0x69, 0x2c, 0x1b, 0x56, 0xbb, - 0xdc, 0xeb, 0x5b, 0x9d, 0x28, 0x65, 0xb3, 0x70, 0x8d, 0xbc } - }, - { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - { 0x12, 0xa0, 0x53, 0x38, 0x4a, 0x9c, 0x0c, 0x88, 0xe4, 0x05, - 0xa0, 0x6c, 0x27, 0xdc, 0xf4, 0x9a, 0xda, 0x62, 0xeb, 0x2b } - } - }; - - int i; - unsigned char tmp[20]; - hash_state md; - - for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { - rmd160_init(&md); - rmd160_process(&md, (unsigned char *)tests[i].msg, strlen(tests[i].msg)); - rmd160_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "RIPEMD160", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/rmd256.c b/src/libtomcrypt/src/hashes/rmd256.c deleted file mode 100644 index e46eac8f7b..0000000000 --- a/src/libtomcrypt/src/hashes/rmd256.c +++ /dev/null @@ -1,430 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @param rmd256.c - RLTC_MD256 Hash function -*/ - -#ifdef LTC_RIPEMD256 - -const struct ltc_hash_descriptor rmd256_desc = -{ - "rmd256", - 13, - 32, - 64, - - /* OID */ - { 1, 3, 36, 3, 2, 3 }, - 6, - - &rmd256_init, - &rmd256_process, - &rmd256_done, - &rmd256_test, - NULL -}; - -/* the four basic functions F(), G() and H() */ -#define F(x, y, z) ((x) ^ (y) ^ (z)) -#define G(x, y, z) (((x) & (y)) | (~(x) & (z))) -#define H(x, y, z) (((x) | ~(y)) ^ (z)) -#define I(x, y, z) (((x) & (z)) | ((y) & ~(z))) - -/* the eight basic operations FF() through III() */ -#define FF(a, b, c, d, x, s) \ - (a) += F((b), (c), (d)) + (x);\ - (a) = ROLc((a), (s)); - -#define GG(a, b, c, d, x, s) \ - (a) += G((b), (c), (d)) + (x) + 0x5a827999UL;\ - (a) = ROLc((a), (s)); - -#define HH(a, b, c, d, x, s) \ - (a) += H((b), (c), (d)) + (x) + 0x6ed9eba1UL;\ - (a) = ROLc((a), (s)); - -#define II(a, b, c, d, x, s) \ - (a) += I((b), (c), (d)) + (x) + 0x8f1bbcdcUL;\ - (a) = ROLc((a), (s)); - -#define FFF(a, b, c, d, x, s) \ - (a) += F((b), (c), (d)) + (x);\ - (a) = ROLc((a), (s)); - -#define GGG(a, b, c, d, x, s) \ - (a) += G((b), (c), (d)) + (x) + 0x6d703ef3UL;\ - (a) = ROLc((a), (s)); - -#define HHH(a, b, c, d, x, s) \ - (a) += H((b), (c), (d)) + (x) + 0x5c4dd124UL;\ - (a) = ROLc((a), (s)); - -#define III(a, b, c, d, x, s) \ - (a) += I((b), (c), (d)) + (x) + 0x50a28be6UL;\ - (a) = ROLc((a), (s)); - -#ifdef LTC_CLEAN_STACK -static int _rmd256_compress(hash_state *md, unsigned char *buf) -#else -static int rmd256_compress(hash_state *md, unsigned char *buf) -#endif -{ - ulong32 aa,bb,cc,dd,aaa,bbb,ccc,ddd,tmp,X[16]; - int i; - - /* load words X */ - for (i = 0; i < 16; i++){ - LOAD32L(X[i], buf + (4 * i)); - } - - /* load state */ - aa = md->rmd256.state[0]; - bb = md->rmd256.state[1]; - cc = md->rmd256.state[2]; - dd = md->rmd256.state[3]; - aaa = md->rmd256.state[4]; - bbb = md->rmd256.state[5]; - ccc = md->rmd256.state[6]; - ddd = md->rmd256.state[7]; - - /* round 1 */ - FF(aa, bb, cc, dd, X[ 0], 11); - FF(dd, aa, bb, cc, X[ 1], 14); - FF(cc, dd, aa, bb, X[ 2], 15); - FF(bb, cc, dd, aa, X[ 3], 12); - FF(aa, bb, cc, dd, X[ 4], 5); - FF(dd, aa, bb, cc, X[ 5], 8); - FF(cc, dd, aa, bb, X[ 6], 7); - FF(bb, cc, dd, aa, X[ 7], 9); - FF(aa, bb, cc, dd, X[ 8], 11); - FF(dd, aa, bb, cc, X[ 9], 13); - FF(cc, dd, aa, bb, X[10], 14); - FF(bb, cc, dd, aa, X[11], 15); - FF(aa, bb, cc, dd, X[12], 6); - FF(dd, aa, bb, cc, X[13], 7); - FF(cc, dd, aa, bb, X[14], 9); - FF(bb, cc, dd, aa, X[15], 8); - - /* parallel round 1 */ - III(aaa, bbb, ccc, ddd, X[ 5], 8); - III(ddd, aaa, bbb, ccc, X[14], 9); - III(ccc, ddd, aaa, bbb, X[ 7], 9); - III(bbb, ccc, ddd, aaa, X[ 0], 11); - III(aaa, bbb, ccc, ddd, X[ 9], 13); - III(ddd, aaa, bbb, ccc, X[ 2], 15); - III(ccc, ddd, aaa, bbb, X[11], 15); - III(bbb, ccc, ddd, aaa, X[ 4], 5); - III(aaa, bbb, ccc, ddd, X[13], 7); - III(ddd, aaa, bbb, ccc, X[ 6], 7); - III(ccc, ddd, aaa, bbb, X[15], 8); - III(bbb, ccc, ddd, aaa, X[ 8], 11); - III(aaa, bbb, ccc, ddd, X[ 1], 14); - III(ddd, aaa, bbb, ccc, X[10], 14); - III(ccc, ddd, aaa, bbb, X[ 3], 12); - III(bbb, ccc, ddd, aaa, X[12], 6); - - tmp = aa; aa = aaa; aaa = tmp; - - /* round 2 */ - GG(aa, bb, cc, dd, X[ 7], 7); - GG(dd, aa, bb, cc, X[ 4], 6); - GG(cc, dd, aa, bb, X[13], 8); - GG(bb, cc, dd, aa, X[ 1], 13); - GG(aa, bb, cc, dd, X[10], 11); - GG(dd, aa, bb, cc, X[ 6], 9); - GG(cc, dd, aa, bb, X[15], 7); - GG(bb, cc, dd, aa, X[ 3], 15); - GG(aa, bb, cc, dd, X[12], 7); - GG(dd, aa, bb, cc, X[ 0], 12); - GG(cc, dd, aa, bb, X[ 9], 15); - GG(bb, cc, dd, aa, X[ 5], 9); - GG(aa, bb, cc, dd, X[ 2], 11); - GG(dd, aa, bb, cc, X[14], 7); - GG(cc, dd, aa, bb, X[11], 13); - GG(bb, cc, dd, aa, X[ 8], 12); - - /* parallel round 2 */ - HHH(aaa, bbb, ccc, ddd, X[ 6], 9); - HHH(ddd, aaa, bbb, ccc, X[11], 13); - HHH(ccc, ddd, aaa, bbb, X[ 3], 15); - HHH(bbb, ccc, ddd, aaa, X[ 7], 7); - HHH(aaa, bbb, ccc, ddd, X[ 0], 12); - HHH(ddd, aaa, bbb, ccc, X[13], 8); - HHH(ccc, ddd, aaa, bbb, X[ 5], 9); - HHH(bbb, ccc, ddd, aaa, X[10], 11); - HHH(aaa, bbb, ccc, ddd, X[14], 7); - HHH(ddd, aaa, bbb, ccc, X[15], 7); - HHH(ccc, ddd, aaa, bbb, X[ 8], 12); - HHH(bbb, ccc, ddd, aaa, X[12], 7); - HHH(aaa, bbb, ccc, ddd, X[ 4], 6); - HHH(ddd, aaa, bbb, ccc, X[ 9], 15); - HHH(ccc, ddd, aaa, bbb, X[ 1], 13); - HHH(bbb, ccc, ddd, aaa, X[ 2], 11); - - tmp = bb; bb = bbb; bbb = tmp; - - /* round 3 */ - HH(aa, bb, cc, dd, X[ 3], 11); - HH(dd, aa, bb, cc, X[10], 13); - HH(cc, dd, aa, bb, X[14], 6); - HH(bb, cc, dd, aa, X[ 4], 7); - HH(aa, bb, cc, dd, X[ 9], 14); - HH(dd, aa, bb, cc, X[15], 9); - HH(cc, dd, aa, bb, X[ 8], 13); - HH(bb, cc, dd, aa, X[ 1], 15); - HH(aa, bb, cc, dd, X[ 2], 14); - HH(dd, aa, bb, cc, X[ 7], 8); - HH(cc, dd, aa, bb, X[ 0], 13); - HH(bb, cc, dd, aa, X[ 6], 6); - HH(aa, bb, cc, dd, X[13], 5); - HH(dd, aa, bb, cc, X[11], 12); - HH(cc, dd, aa, bb, X[ 5], 7); - HH(bb, cc, dd, aa, X[12], 5); - - /* parallel round 3 */ - GGG(aaa, bbb, ccc, ddd, X[15], 9); - GGG(ddd, aaa, bbb, ccc, X[ 5], 7); - GGG(ccc, ddd, aaa, bbb, X[ 1], 15); - GGG(bbb, ccc, ddd, aaa, X[ 3], 11); - GGG(aaa, bbb, ccc, ddd, X[ 7], 8); - GGG(ddd, aaa, bbb, ccc, X[14], 6); - GGG(ccc, ddd, aaa, bbb, X[ 6], 6); - GGG(bbb, ccc, ddd, aaa, X[ 9], 14); - GGG(aaa, bbb, ccc, ddd, X[11], 12); - GGG(ddd, aaa, bbb, ccc, X[ 8], 13); - GGG(ccc, ddd, aaa, bbb, X[12], 5); - GGG(bbb, ccc, ddd, aaa, X[ 2], 14); - GGG(aaa, bbb, ccc, ddd, X[10], 13); - GGG(ddd, aaa, bbb, ccc, X[ 0], 13); - GGG(ccc, ddd, aaa, bbb, X[ 4], 7); - GGG(bbb, ccc, ddd, aaa, X[13], 5); - - tmp = cc; cc = ccc; ccc = tmp; - - /* round 4 */ - II(aa, bb, cc, dd, X[ 1], 11); - II(dd, aa, bb, cc, X[ 9], 12); - II(cc, dd, aa, bb, X[11], 14); - II(bb, cc, dd, aa, X[10], 15); - II(aa, bb, cc, dd, X[ 0], 14); - II(dd, aa, bb, cc, X[ 8], 15); - II(cc, dd, aa, bb, X[12], 9); - II(bb, cc, dd, aa, X[ 4], 8); - II(aa, bb, cc, dd, X[13], 9); - II(dd, aa, bb, cc, X[ 3], 14); - II(cc, dd, aa, bb, X[ 7], 5); - II(bb, cc, dd, aa, X[15], 6); - II(aa, bb, cc, dd, X[14], 8); - II(dd, aa, bb, cc, X[ 5], 6); - II(cc, dd, aa, bb, X[ 6], 5); - II(bb, cc, dd, aa, X[ 2], 12); - - /* parallel round 4 */ - FFF(aaa, bbb, ccc, ddd, X[ 8], 15); - FFF(ddd, aaa, bbb, ccc, X[ 6], 5); - FFF(ccc, ddd, aaa, bbb, X[ 4], 8); - FFF(bbb, ccc, ddd, aaa, X[ 1], 11); - FFF(aaa, bbb, ccc, ddd, X[ 3], 14); - FFF(ddd, aaa, bbb, ccc, X[11], 14); - FFF(ccc, ddd, aaa, bbb, X[15], 6); - FFF(bbb, ccc, ddd, aaa, X[ 0], 14); - FFF(aaa, bbb, ccc, ddd, X[ 5], 6); - FFF(ddd, aaa, bbb, ccc, X[12], 9); - FFF(ccc, ddd, aaa, bbb, X[ 2], 12); - FFF(bbb, ccc, ddd, aaa, X[13], 9); - FFF(aaa, bbb, ccc, ddd, X[ 9], 12); - FFF(ddd, aaa, bbb, ccc, X[ 7], 5); - FFF(ccc, ddd, aaa, bbb, X[10], 15); - FFF(bbb, ccc, ddd, aaa, X[14], 8); - - tmp = dd; dd = ddd; ddd = tmp; - - /* combine results */ - md->rmd256.state[0] += aa; - md->rmd256.state[1] += bb; - md->rmd256.state[2] += cc; - md->rmd256.state[3] += dd; - md->rmd256.state[4] += aaa; - md->rmd256.state[5] += bbb; - md->rmd256.state[6] += ccc; - md->rmd256.state[7] += ddd; - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -static int rmd256_compress(hash_state *md, unsigned char *buf) -{ - int err; - err = _rmd256_compress(md, buf); - burn_stack(sizeof(ulong32) * 25 + sizeof(int)); - return err; -} -#endif - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int rmd256_init(hash_state * md) -{ - LTC_ARGCHK(md != NULL); - md->rmd256.state[0] = 0x67452301UL; - md->rmd256.state[1] = 0xefcdab89UL; - md->rmd256.state[2] = 0x98badcfeUL; - md->rmd256.state[3] = 0x10325476UL; - md->rmd256.state[4] = 0x76543210UL; - md->rmd256.state[5] = 0xfedcba98UL; - md->rmd256.state[6] = 0x89abcdefUL; - md->rmd256.state[7] = 0x01234567UL; - md->rmd256.curlen = 0; - md->rmd256.length = 0; - return CRYPT_OK; -} - -/** - Process a block of memory though the hash - @param md The hash state - @param in The data to hash - @param inlen The length of the data (octets) - @return CRYPT_OK if successful -*/ -HASH_PROCESS(rmd256_process, rmd256_compress, rmd256, 64) - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (16 bytes) - @return CRYPT_OK if successful -*/ -int rmd256_done(hash_state * md, unsigned char *out) -{ - int i; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (md->rmd256.curlen >= sizeof(md->rmd256.buf)) { - return CRYPT_INVALID_ARG; - } - - - /* increase the length of the message */ - md->rmd256.length += md->rmd256.curlen * 8; - - /* append the '1' bit */ - md->rmd256.buf[md->rmd256.curlen++] = (unsigned char)0x80; - - /* if the length is currently above 56 bytes we append zeros - * then compress. Then we can fall back to padding zeros and length - * encoding like normal. - */ - if (md->rmd256.curlen > 56) { - while (md->rmd256.curlen < 64) { - md->rmd256.buf[md->rmd256.curlen++] = (unsigned char)0; - } - rmd256_compress(md, md->rmd256.buf); - md->rmd256.curlen = 0; - } - - /* pad upto 56 bytes of zeroes */ - while (md->rmd256.curlen < 56) { - md->rmd256.buf[md->rmd256.curlen++] = (unsigned char)0; - } - - /* store length */ - STORE64L(md->rmd256.length, md->rmd256.buf+56); - rmd256_compress(md, md->rmd256.buf); - - /* copy output */ - for (i = 0; i < 8; i++) { - STORE32L(md->rmd256.state[i], out+(4*i)); - } -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(hash_state)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int rmd256_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - const char *msg; - unsigned char hash[32]; - } tests[] = { - { "", - { 0x02, 0xba, 0x4c, 0x4e, 0x5f, 0x8e, 0xcd, 0x18, - 0x77, 0xfc, 0x52, 0xd6, 0x4d, 0x30, 0xe3, 0x7a, - 0x2d, 0x97, 0x74, 0xfb, 0x1e, 0x5d, 0x02, 0x63, - 0x80, 0xae, 0x01, 0x68, 0xe3, 0xc5, 0x52, 0x2d } - }, - { "a", - { 0xf9, 0x33, 0x3e, 0x45, 0xd8, 0x57, 0xf5, 0xd9, - 0x0a, 0x91, 0xba, 0xb7, 0x0a, 0x1e, 0xba, 0x0c, - 0xfb, 0x1b, 0xe4, 0xb0, 0x78, 0x3c, 0x9a, 0xcf, - 0xcd, 0x88, 0x3a, 0x91, 0x34, 0x69, 0x29, 0x25 } - }, - { "abc", - { 0xaf, 0xbd, 0x6e, 0x22, 0x8b, 0x9d, 0x8c, 0xbb, - 0xce, 0xf5, 0xca, 0x2d, 0x03, 0xe6, 0xdb, 0xa1, - 0x0a, 0xc0, 0xbc, 0x7d, 0xcb, 0xe4, 0x68, 0x0e, - 0x1e, 0x42, 0xd2, 0xe9, 0x75, 0x45, 0x9b, 0x65 } - }, - { "message digest", - { 0x87, 0xe9, 0x71, 0x75, 0x9a, 0x1c, 0xe4, 0x7a, - 0x51, 0x4d, 0x5c, 0x91, 0x4c, 0x39, 0x2c, 0x90, - 0x18, 0xc7, 0xc4, 0x6b, 0xc1, 0x44, 0x65, 0x55, - 0x4a, 0xfc, 0xdf, 0x54, 0xa5, 0x07, 0x0c, 0x0e } - }, - { "abcdefghijklmnopqrstuvwxyz", - { 0x64, 0x9d, 0x30, 0x34, 0x75, 0x1e, 0xa2, 0x16, - 0x77, 0x6b, 0xf9, 0xa1, 0x8a, 0xcc, 0x81, 0xbc, - 0x78, 0x96, 0x11, 0x8a, 0x51, 0x97, 0x96, 0x87, - 0x82, 0xdd, 0x1f, 0xd9, 0x7d, 0x8d, 0x51, 0x33 } - }, - { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", - { 0x57, 0x40, 0xa4, 0x08, 0xac, 0x16, 0xb7, 0x20, - 0xb8, 0x44, 0x24, 0xae, 0x93, 0x1c, 0xbb, 0x1f, - 0xe3, 0x63, 0xd1, 0xd0, 0xbf, 0x40, 0x17, 0xf1, - 0xa8, 0x9f, 0x7e, 0xa6, 0xde, 0x77, 0xa0, 0xb8 } - } - }; - - int i; - unsigned char tmp[32]; - hash_state md; - - for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { - rmd256_init(&md); - rmd256_process(&md, (unsigned char *)tests[i].msg, strlen(tests[i].msg)); - rmd256_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "RIPEMD256", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/rmd320.c b/src/libtomcrypt/src/hashes/rmd320.c deleted file mode 100644 index ffd17fc79c..0000000000 --- a/src/libtomcrypt/src/hashes/rmd320.c +++ /dev/null @@ -1,495 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file rmd320.c - RMD320 hash function -*/ - -#ifdef LTC_RIPEMD320 - -const struct ltc_hash_descriptor rmd320_desc = -{ - "rmd320", - 14, - 40, - 64, - - /* OID ... does not exist - * http://oid-info.com/get/1.3.36.3.2 */ - { 0 }, - 0, - - &rmd320_init, - &rmd320_process, - &rmd320_done, - &rmd320_test, - NULL -}; - -/* the five basic functions F(), G() and H() */ -#define F(x, y, z) ((x) ^ (y) ^ (z)) -#define G(x, y, z) (((x) & (y)) | (~(x) & (z))) -#define H(x, y, z) (((x) | ~(y)) ^ (z)) -#define I(x, y, z) (((x) & (z)) | ((y) & ~(z))) -#define J(x, y, z) ((x) ^ ((y) | ~(z))) - -/* the ten basic operations FF() through III() */ -#define FF(a, b, c, d, e, x, s) \ - (a) += F((b), (c), (d)) + (x);\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define GG(a, b, c, d, e, x, s) \ - (a) += G((b), (c), (d)) + (x) + 0x5a827999UL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define HH(a, b, c, d, e, x, s) \ - (a) += H((b), (c), (d)) + (x) + 0x6ed9eba1UL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define II(a, b, c, d, e, x, s) \ - (a) += I((b), (c), (d)) + (x) + 0x8f1bbcdcUL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define JJ(a, b, c, d, e, x, s) \ - (a) += J((b), (c), (d)) + (x) + 0xa953fd4eUL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define FFF(a, b, c, d, e, x, s) \ - (a) += F((b), (c), (d)) + (x);\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define GGG(a, b, c, d, e, x, s) \ - (a) += G((b), (c), (d)) + (x) + 0x7a6d76e9UL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define HHH(a, b, c, d, e, x, s) \ - (a) += H((b), (c), (d)) + (x) + 0x6d703ef3UL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define III(a, b, c, d, e, x, s) \ - (a) += I((b), (c), (d)) + (x) + 0x5c4dd124UL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - -#define JJJ(a, b, c, d, e, x, s) \ - (a) += J((b), (c), (d)) + (x) + 0x50a28be6UL;\ - (a) = ROLc((a), (s)) + (e);\ - (c) = ROLc((c), 10); - - -#ifdef LTC_CLEAN_STACK -static int _rmd320_compress(hash_state *md, unsigned char *buf) -#else -static int rmd320_compress(hash_state *md, unsigned char *buf) -#endif -{ - ulong32 aa,bb,cc,dd,ee,aaa,bbb,ccc,ddd,eee,tmp,X[16]; - int i; - - /* load words X */ - for (i = 0; i < 16; i++){ - LOAD32L(X[i], buf + (4 * i)); - } - - /* load state */ - aa = md->rmd320.state[0]; - bb = md->rmd320.state[1]; - cc = md->rmd320.state[2]; - dd = md->rmd320.state[3]; - ee = md->rmd320.state[4]; - aaa = md->rmd320.state[5]; - bbb = md->rmd320.state[6]; - ccc = md->rmd320.state[7]; - ddd = md->rmd320.state[8]; - eee = md->rmd320.state[9]; - - /* round 1 */ - FF(aa, bb, cc, dd, ee, X[ 0], 11); - FF(ee, aa, bb, cc, dd, X[ 1], 14); - FF(dd, ee, aa, bb, cc, X[ 2], 15); - FF(cc, dd, ee, aa, bb, X[ 3], 12); - FF(bb, cc, dd, ee, aa, X[ 4], 5); - FF(aa, bb, cc, dd, ee, X[ 5], 8); - FF(ee, aa, bb, cc, dd, X[ 6], 7); - FF(dd, ee, aa, bb, cc, X[ 7], 9); - FF(cc, dd, ee, aa, bb, X[ 8], 11); - FF(bb, cc, dd, ee, aa, X[ 9], 13); - FF(aa, bb, cc, dd, ee, X[10], 14); - FF(ee, aa, bb, cc, dd, X[11], 15); - FF(dd, ee, aa, bb, cc, X[12], 6); - FF(cc, dd, ee, aa, bb, X[13], 7); - FF(bb, cc, dd, ee, aa, X[14], 9); - FF(aa, bb, cc, dd, ee, X[15], 8); - - /* parallel round 1 */ - JJJ(aaa, bbb, ccc, ddd, eee, X[ 5], 8); - JJJ(eee, aaa, bbb, ccc, ddd, X[14], 9); - JJJ(ddd, eee, aaa, bbb, ccc, X[ 7], 9); - JJJ(ccc, ddd, eee, aaa, bbb, X[ 0], 11); - JJJ(bbb, ccc, ddd, eee, aaa, X[ 9], 13); - JJJ(aaa, bbb, ccc, ddd, eee, X[ 2], 15); - JJJ(eee, aaa, bbb, ccc, ddd, X[11], 15); - JJJ(ddd, eee, aaa, bbb, ccc, X[ 4], 5); - JJJ(ccc, ddd, eee, aaa, bbb, X[13], 7); - JJJ(bbb, ccc, ddd, eee, aaa, X[ 6], 7); - JJJ(aaa, bbb, ccc, ddd, eee, X[15], 8); - JJJ(eee, aaa, bbb, ccc, ddd, X[ 8], 11); - JJJ(ddd, eee, aaa, bbb, ccc, X[ 1], 14); - JJJ(ccc, ddd, eee, aaa, bbb, X[10], 14); - JJJ(bbb, ccc, ddd, eee, aaa, X[ 3], 12); - JJJ(aaa, bbb, ccc, ddd, eee, X[12], 6); - - tmp = aa; aa = aaa; aaa = tmp; - - /* round 2 */ - GG(ee, aa, bb, cc, dd, X[ 7], 7); - GG(dd, ee, aa, bb, cc, X[ 4], 6); - GG(cc, dd, ee, aa, bb, X[13], 8); - GG(bb, cc, dd, ee, aa, X[ 1], 13); - GG(aa, bb, cc, dd, ee, X[10], 11); - GG(ee, aa, bb, cc, dd, X[ 6], 9); - GG(dd, ee, aa, bb, cc, X[15], 7); - GG(cc, dd, ee, aa, bb, X[ 3], 15); - GG(bb, cc, dd, ee, aa, X[12], 7); - GG(aa, bb, cc, dd, ee, X[ 0], 12); - GG(ee, aa, bb, cc, dd, X[ 9], 15); - GG(dd, ee, aa, bb, cc, X[ 5], 9); - GG(cc, dd, ee, aa, bb, X[ 2], 11); - GG(bb, cc, dd, ee, aa, X[14], 7); - GG(aa, bb, cc, dd, ee, X[11], 13); - GG(ee, aa, bb, cc, dd, X[ 8], 12); - - /* parallel round 2 */ - III(eee, aaa, bbb, ccc, ddd, X[ 6], 9); - III(ddd, eee, aaa, bbb, ccc, X[11], 13); - III(ccc, ddd, eee, aaa, bbb, X[ 3], 15); - III(bbb, ccc, ddd, eee, aaa, X[ 7], 7); - III(aaa, bbb, ccc, ddd, eee, X[ 0], 12); - III(eee, aaa, bbb, ccc, ddd, X[13], 8); - III(ddd, eee, aaa, bbb, ccc, X[ 5], 9); - III(ccc, ddd, eee, aaa, bbb, X[10], 11); - III(bbb, ccc, ddd, eee, aaa, X[14], 7); - III(aaa, bbb, ccc, ddd, eee, X[15], 7); - III(eee, aaa, bbb, ccc, ddd, X[ 8], 12); - III(ddd, eee, aaa, bbb, ccc, X[12], 7); - III(ccc, ddd, eee, aaa, bbb, X[ 4], 6); - III(bbb, ccc, ddd, eee, aaa, X[ 9], 15); - III(aaa, bbb, ccc, ddd, eee, X[ 1], 13); - III(eee, aaa, bbb, ccc, ddd, X[ 2], 11); - - tmp = bb; bb = bbb; bbb = tmp; - - /* round 3 */ - HH(dd, ee, aa, bb, cc, X[ 3], 11); - HH(cc, dd, ee, aa, bb, X[10], 13); - HH(bb, cc, dd, ee, aa, X[14], 6); - HH(aa, bb, cc, dd, ee, X[ 4], 7); - HH(ee, aa, bb, cc, dd, X[ 9], 14); - HH(dd, ee, aa, bb, cc, X[15], 9); - HH(cc, dd, ee, aa, bb, X[ 8], 13); - HH(bb, cc, dd, ee, aa, X[ 1], 15); - HH(aa, bb, cc, dd, ee, X[ 2], 14); - HH(ee, aa, bb, cc, dd, X[ 7], 8); - HH(dd, ee, aa, bb, cc, X[ 0], 13); - HH(cc, dd, ee, aa, bb, X[ 6], 6); - HH(bb, cc, dd, ee, aa, X[13], 5); - HH(aa, bb, cc, dd, ee, X[11], 12); - HH(ee, aa, bb, cc, dd, X[ 5], 7); - HH(dd, ee, aa, bb, cc, X[12], 5); - - /* parallel round 3 */ - HHH(ddd, eee, aaa, bbb, ccc, X[15], 9); - HHH(ccc, ddd, eee, aaa, bbb, X[ 5], 7); - HHH(bbb, ccc, ddd, eee, aaa, X[ 1], 15); - HHH(aaa, bbb, ccc, ddd, eee, X[ 3], 11); - HHH(eee, aaa, bbb, ccc, ddd, X[ 7], 8); - HHH(ddd, eee, aaa, bbb, ccc, X[14], 6); - HHH(ccc, ddd, eee, aaa, bbb, X[ 6], 6); - HHH(bbb, ccc, ddd, eee, aaa, X[ 9], 14); - HHH(aaa, bbb, ccc, ddd, eee, X[11], 12); - HHH(eee, aaa, bbb, ccc, ddd, X[ 8], 13); - HHH(ddd, eee, aaa, bbb, ccc, X[12], 5); - HHH(ccc, ddd, eee, aaa, bbb, X[ 2], 14); - HHH(bbb, ccc, ddd, eee, aaa, X[10], 13); - HHH(aaa, bbb, ccc, ddd, eee, X[ 0], 13); - HHH(eee, aaa, bbb, ccc, ddd, X[ 4], 7); - HHH(ddd, eee, aaa, bbb, ccc, X[13], 5); - - tmp = cc; cc = ccc; ccc = tmp; - - /* round 4 */ - II(cc, dd, ee, aa, bb, X[ 1], 11); - II(bb, cc, dd, ee, aa, X[ 9], 12); - II(aa, bb, cc, dd, ee, X[11], 14); - II(ee, aa, bb, cc, dd, X[10], 15); - II(dd, ee, aa, bb, cc, X[ 0], 14); - II(cc, dd, ee, aa, bb, X[ 8], 15); - II(bb, cc, dd, ee, aa, X[12], 9); - II(aa, bb, cc, dd, ee, X[ 4], 8); - II(ee, aa, bb, cc, dd, X[13], 9); - II(dd, ee, aa, bb, cc, X[ 3], 14); - II(cc, dd, ee, aa, bb, X[ 7], 5); - II(bb, cc, dd, ee, aa, X[15], 6); - II(aa, bb, cc, dd, ee, X[14], 8); - II(ee, aa, bb, cc, dd, X[ 5], 6); - II(dd, ee, aa, bb, cc, X[ 6], 5); - II(cc, dd, ee, aa, bb, X[ 2], 12); - - /* parallel round 4 */ - GGG(ccc, ddd, eee, aaa, bbb, X[ 8], 15); - GGG(bbb, ccc, ddd, eee, aaa, X[ 6], 5); - GGG(aaa, bbb, ccc, ddd, eee, X[ 4], 8); - GGG(eee, aaa, bbb, ccc, ddd, X[ 1], 11); - GGG(ddd, eee, aaa, bbb, ccc, X[ 3], 14); - GGG(ccc, ddd, eee, aaa, bbb, X[11], 14); - GGG(bbb, ccc, ddd, eee, aaa, X[15], 6); - GGG(aaa, bbb, ccc, ddd, eee, X[ 0], 14); - GGG(eee, aaa, bbb, ccc, ddd, X[ 5], 6); - GGG(ddd, eee, aaa, bbb, ccc, X[12], 9); - GGG(ccc, ddd, eee, aaa, bbb, X[ 2], 12); - GGG(bbb, ccc, ddd, eee, aaa, X[13], 9); - GGG(aaa, bbb, ccc, ddd, eee, X[ 9], 12); - GGG(eee, aaa, bbb, ccc, ddd, X[ 7], 5); - GGG(ddd, eee, aaa, bbb, ccc, X[10], 15); - GGG(ccc, ddd, eee, aaa, bbb, X[14], 8); - - tmp = dd; dd = ddd; ddd = tmp; - - /* round 5 */ - JJ(bb, cc, dd, ee, aa, X[ 4], 9); - JJ(aa, bb, cc, dd, ee, X[ 0], 15); - JJ(ee, aa, bb, cc, dd, X[ 5], 5); - JJ(dd, ee, aa, bb, cc, X[ 9], 11); - JJ(cc, dd, ee, aa, bb, X[ 7], 6); - JJ(bb, cc, dd, ee, aa, X[12], 8); - JJ(aa, bb, cc, dd, ee, X[ 2], 13); - JJ(ee, aa, bb, cc, dd, X[10], 12); - JJ(dd, ee, aa, bb, cc, X[14], 5); - JJ(cc, dd, ee, aa, bb, X[ 1], 12); - JJ(bb, cc, dd, ee, aa, X[ 3], 13); - JJ(aa, bb, cc, dd, ee, X[ 8], 14); - JJ(ee, aa, bb, cc, dd, X[11], 11); - JJ(dd, ee, aa, bb, cc, X[ 6], 8); - JJ(cc, dd, ee, aa, bb, X[15], 5); - JJ(bb, cc, dd, ee, aa, X[13], 6); - - /* parallel round 5 */ - FFF(bbb, ccc, ddd, eee, aaa, X[12] , 8); - FFF(aaa, bbb, ccc, ddd, eee, X[15] , 5); - FFF(eee, aaa, bbb, ccc, ddd, X[10] , 12); - FFF(ddd, eee, aaa, bbb, ccc, X[ 4] , 9); - FFF(ccc, ddd, eee, aaa, bbb, X[ 1] , 12); - FFF(bbb, ccc, ddd, eee, aaa, X[ 5] , 5); - FFF(aaa, bbb, ccc, ddd, eee, X[ 8] , 14); - FFF(eee, aaa, bbb, ccc, ddd, X[ 7] , 6); - FFF(ddd, eee, aaa, bbb, ccc, X[ 6] , 8); - FFF(ccc, ddd, eee, aaa, bbb, X[ 2] , 13); - FFF(bbb, ccc, ddd, eee, aaa, X[13] , 6); - FFF(aaa, bbb, ccc, ddd, eee, X[14] , 5); - FFF(eee, aaa, bbb, ccc, ddd, X[ 0] , 15); - FFF(ddd, eee, aaa, bbb, ccc, X[ 3] , 13); - FFF(ccc, ddd, eee, aaa, bbb, X[ 9] , 11); - FFF(bbb, ccc, ddd, eee, aaa, X[11] , 11); - - tmp = ee; ee = eee; eee = tmp; - - /* combine results */ - md->rmd320.state[0] += aa; - md->rmd320.state[1] += bb; - md->rmd320.state[2] += cc; - md->rmd320.state[3] += dd; - md->rmd320.state[4] += ee; - md->rmd320.state[5] += aaa; - md->rmd320.state[6] += bbb; - md->rmd320.state[7] += ccc; - md->rmd320.state[8] += ddd; - md->rmd320.state[9] += eee; - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -static int rmd320_compress(hash_state *md, unsigned char *buf) -{ - int err; - err = _rmd320_compress(md, buf); - burn_stack(sizeof(ulong32) * 27 + sizeof(int)); - return err; -} -#endif - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int rmd320_init(hash_state * md) -{ - LTC_ARGCHK(md != NULL); - md->rmd320.state[0] = 0x67452301UL; - md->rmd320.state[1] = 0xefcdab89UL; - md->rmd320.state[2] = 0x98badcfeUL; - md->rmd320.state[3] = 0x10325476UL; - md->rmd320.state[4] = 0xc3d2e1f0UL; - md->rmd320.state[5] = 0x76543210UL; - md->rmd320.state[6] = 0xfedcba98UL; - md->rmd320.state[7] = 0x89abcdefUL; - md->rmd320.state[8] = 0x01234567UL; - md->rmd320.state[9] = 0x3c2d1e0fUL; - md->rmd320.curlen = 0; - md->rmd320.length = 0; - return CRYPT_OK; -} - -/** - Process a block of memory though the hash - @param md The hash state - @param in The data to hash - @param inlen The length of the data (octets) - @return CRYPT_OK if successful -*/ -HASH_PROCESS(rmd320_process, rmd320_compress, rmd320, 64) - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (20 bytes) - @return CRYPT_OK if successful -*/ -int rmd320_done(hash_state * md, unsigned char *out) -{ - int i; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (md->rmd320.curlen >= sizeof(md->rmd320.buf)) { - return CRYPT_INVALID_ARG; - } - - - /* increase the length of the message */ - md->rmd320.length += md->rmd320.curlen * 8; - - /* append the '1' bit */ - md->rmd320.buf[md->rmd320.curlen++] = (unsigned char)0x80; - - /* if the length is currently above 56 bytes we append zeros - * then compress. Then we can fall back to padding zeros and length - * encoding like normal. - */ - if (md->rmd320.curlen > 56) { - while (md->rmd320.curlen < 64) { - md->rmd320.buf[md->rmd320.curlen++] = (unsigned char)0; - } - rmd320_compress(md, md->rmd320.buf); - md->rmd320.curlen = 0; - } - - /* pad upto 56 bytes of zeroes */ - while (md->rmd320.curlen < 56) { - md->rmd320.buf[md->rmd320.curlen++] = (unsigned char)0; - } - - /* store length */ - STORE64L(md->rmd320.length, md->rmd320.buf+56); - rmd320_compress(md, md->rmd320.buf); - - /* copy output */ - for (i = 0; i < 10; i++) { - STORE32L(md->rmd320.state[i], out+(4*i)); - } -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(hash_state)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int rmd320_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - const char *msg; - unsigned char hash[40]; - } tests[] = { - { "", - { 0x22, 0xd6, 0x5d, 0x56, 0x61, 0x53, 0x6c, 0xdc, 0x75, 0xc1, - 0xfd, 0xf5, 0xc6, 0xde, 0x7b, 0x41, 0xb9, 0xf2, 0x73, 0x25, - 0xeb, 0xc6, 0x1e, 0x85, 0x57, 0x17, 0x7d, 0x70, 0x5a, 0x0e, - 0xc8, 0x80, 0x15, 0x1c, 0x3a, 0x32, 0xa0, 0x08, 0x99, 0xb8 } - }, - { "a", - { 0xce, 0x78, 0x85, 0x06, 0x38, 0xf9, 0x26, 0x58, 0xa5, 0xa5, - 0x85, 0x09, 0x75, 0x79, 0x92, 0x6d, 0xda, 0x66, 0x7a, 0x57, - 0x16, 0x56, 0x2c, 0xfc, 0xf6, 0xfb, 0xe7, 0x7f, 0x63, 0x54, - 0x2f, 0x99, 0xb0, 0x47, 0x05, 0xd6, 0x97, 0x0d, 0xff, 0x5d } - }, - { "abc", - { 0xde, 0x4c, 0x01, 0xb3, 0x05, 0x4f, 0x89, 0x30, 0xa7, 0x9d, - 0x09, 0xae, 0x73, 0x8e, 0x92, 0x30, 0x1e, 0x5a, 0x17, 0x08, - 0x5b, 0xef, 0xfd, 0xc1, 0xb8, 0xd1, 0x16, 0x71, 0x3e, 0x74, - 0xf8, 0x2f, 0xa9, 0x42, 0xd6, 0x4c, 0xdb, 0xc4, 0x68, 0x2d } - }, - { "message digest", - { 0x3a, 0x8e, 0x28, 0x50, 0x2e, 0xd4, 0x5d, 0x42, 0x2f, 0x68, - 0x84, 0x4f, 0x9d, 0xd3, 0x16, 0xe7, 0xb9, 0x85, 0x33, 0xfa, - 0x3f, 0x2a, 0x91, 0xd2, 0x9f, 0x84, 0xd4, 0x25, 0xc8, 0x8d, - 0x6b, 0x4e, 0xff, 0x72, 0x7d, 0xf6, 0x6a, 0x7c, 0x01, 0x97 } - }, - { "abcdefghijklmnopqrstuvwxyz", - { 0xca, 0xbd, 0xb1, 0x81, 0x0b, 0x92, 0x47, 0x0a, 0x20, 0x93, - 0xaa, 0x6b, 0xce, 0x05, 0x95, 0x2c, 0x28, 0x34, 0x8c, 0xf4, - 0x3f, 0xf6, 0x08, 0x41, 0x97, 0x51, 0x66, 0xbb, 0x40, 0xed, - 0x23, 0x40, 0x04, 0xb8, 0x82, 0x44, 0x63, 0xe6, 0xb0, 0x09 } - }, - { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - { 0xd0, 0x34, 0xa7, 0x95, 0x0c, 0xf7, 0x22, 0x02, 0x1b, 0xa4, - 0xb8, 0x4d, 0xf7, 0x69, 0xa5, 0xde, 0x20, 0x60, 0xe2, 0x59, - 0xdf, 0x4c, 0x9b, 0xb4, 0xa4, 0x26, 0x8c, 0x0e, 0x93, 0x5b, - 0xbc, 0x74, 0x70, 0xa9, 0x69, 0xc9, 0xd0, 0x72, 0xa1, 0xac } - } - }; - - int i; - unsigned char tmp[40]; - hash_state md; - - for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { - rmd320_init(&md); - rmd320_process(&md, (unsigned char *)tests[i].msg, strlen(tests[i].msg)); - rmd320_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "RIPEMD320", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/sha1.c b/src/libtomcrypt/src/hashes/sha1.c deleted file mode 100644 index 0e7cc215ba..0000000000 --- a/src/libtomcrypt/src/hashes/sha1.c +++ /dev/null @@ -1,286 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file sha1.c - LTC_SHA1 code by Tom St Denis -*/ - - -#ifdef LTC_SHA1 - -const struct ltc_hash_descriptor sha1_desc = -{ - "sha1", - 2, - 20, - 64, - - /* OID */ - { 1, 3, 14, 3, 2, 26, }, - 6, - - &sha1_init, - &sha1_process, - &sha1_done, - &sha1_test, - NULL -}; - -#define F0(x,y,z) (z ^ (x & (y ^ z))) -#define F1(x,y,z) (x ^ y ^ z) -#define F2(x,y,z) ((x & y) | (z & (x | y))) -#define F3(x,y,z) (x ^ y ^ z) - -#ifdef LTC_CLEAN_STACK -static int _sha1_compress(hash_state *md, unsigned char *buf) -#else -static int sha1_compress(hash_state *md, unsigned char *buf) -#endif -{ - ulong32 a,b,c,d,e,W[80],i; -#ifdef LTC_SMALL_CODE - ulong32 t; -#endif - - /* copy the state into 512-bits into W[0..15] */ - for (i = 0; i < 16; i++) { - LOAD32H(W[i], buf + (4*i)); - } - - /* copy state */ - a = md->sha1.state[0]; - b = md->sha1.state[1]; - c = md->sha1.state[2]; - d = md->sha1.state[3]; - e = md->sha1.state[4]; - - /* expand it */ - for (i = 16; i < 80; i++) { - W[i] = ROL(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1); - } - - /* compress */ - /* round one */ - #define FF0(a,b,c,d,e,i) e = (ROLc(a, 5) + F0(b,c,d) + e + W[i] + 0x5a827999UL); b = ROLc(b, 30); - #define FF1(a,b,c,d,e,i) e = (ROLc(a, 5) + F1(b,c,d) + e + W[i] + 0x6ed9eba1UL); b = ROLc(b, 30); - #define FF2(a,b,c,d,e,i) e = (ROLc(a, 5) + F2(b,c,d) + e + W[i] + 0x8f1bbcdcUL); b = ROLc(b, 30); - #define FF3(a,b,c,d,e,i) e = (ROLc(a, 5) + F3(b,c,d) + e + W[i] + 0xca62c1d6UL); b = ROLc(b, 30); - -#ifdef LTC_SMALL_CODE - - for (i = 0; i < 20; ) { - FF0(a,b,c,d,e,i++); t = e; e = d; d = c; c = b; b = a; a = t; - } - - for (; i < 40; ) { - FF1(a,b,c,d,e,i++); t = e; e = d; d = c; c = b; b = a; a = t; - } - - for (; i < 60; ) { - FF2(a,b,c,d,e,i++); t = e; e = d; d = c; c = b; b = a; a = t; - } - - for (; i < 80; ) { - FF3(a,b,c,d,e,i++); t = e; e = d; d = c; c = b; b = a; a = t; - } - -#else - - for (i = 0; i < 20; ) { - FF0(a,b,c,d,e,i++); - FF0(e,a,b,c,d,i++); - FF0(d,e,a,b,c,i++); - FF0(c,d,e,a,b,i++); - FF0(b,c,d,e,a,i++); - } - - /* round two */ - for (; i < 40; ) { - FF1(a,b,c,d,e,i++); - FF1(e,a,b,c,d,i++); - FF1(d,e,a,b,c,i++); - FF1(c,d,e,a,b,i++); - FF1(b,c,d,e,a,i++); - } - - /* round three */ - for (; i < 60; ) { - FF2(a,b,c,d,e,i++); - FF2(e,a,b,c,d,i++); - FF2(d,e,a,b,c,i++); - FF2(c,d,e,a,b,i++); - FF2(b,c,d,e,a,i++); - } - - /* round four */ - for (; i < 80; ) { - FF3(a,b,c,d,e,i++); - FF3(e,a,b,c,d,i++); - FF3(d,e,a,b,c,i++); - FF3(c,d,e,a,b,i++); - FF3(b,c,d,e,a,i++); - } -#endif - - #undef FF0 - #undef FF1 - #undef FF2 - #undef FF3 - - /* store */ - md->sha1.state[0] = md->sha1.state[0] + a; - md->sha1.state[1] = md->sha1.state[1] + b; - md->sha1.state[2] = md->sha1.state[2] + c; - md->sha1.state[3] = md->sha1.state[3] + d; - md->sha1.state[4] = md->sha1.state[4] + e; - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -static int sha1_compress(hash_state *md, unsigned char *buf) -{ - int err; - err = _sha1_compress(md, buf); - burn_stack(sizeof(ulong32) * 87); - return err; -} -#endif - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int sha1_init(hash_state * md) -{ - LTC_ARGCHK(md != NULL); - md->sha1.state[0] = 0x67452301UL; - md->sha1.state[1] = 0xefcdab89UL; - md->sha1.state[2] = 0x98badcfeUL; - md->sha1.state[3] = 0x10325476UL; - md->sha1.state[4] = 0xc3d2e1f0UL; - md->sha1.curlen = 0; - md->sha1.length = 0; - return CRYPT_OK; -} - -/** - Process a block of memory though the hash - @param md The hash state - @param in The data to hash - @param inlen The length of the data (octets) - @return CRYPT_OK if successful -*/ -HASH_PROCESS(sha1_process, sha1_compress, sha1, 64) - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (20 bytes) - @return CRYPT_OK if successful -*/ -int sha1_done(hash_state * md, unsigned char *out) -{ - int i; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (md->sha1.curlen >= sizeof(md->sha1.buf)) { - return CRYPT_INVALID_ARG; - } - - /* increase the length of the message */ - md->sha1.length += md->sha1.curlen * 8; - - /* append the '1' bit */ - md->sha1.buf[md->sha1.curlen++] = (unsigned char)0x80; - - /* if the length is currently above 56 bytes we append zeros - * then compress. Then we can fall back to padding zeros and length - * encoding like normal. - */ - if (md->sha1.curlen > 56) { - while (md->sha1.curlen < 64) { - md->sha1.buf[md->sha1.curlen++] = (unsigned char)0; - } - sha1_compress(md, md->sha1.buf); - md->sha1.curlen = 0; - } - - /* pad upto 56 bytes of zeroes */ - while (md->sha1.curlen < 56) { - md->sha1.buf[md->sha1.curlen++] = (unsigned char)0; - } - - /* store length */ - STORE64H(md->sha1.length, md->sha1.buf+56); - sha1_compress(md, md->sha1.buf); - - /* copy output */ - for (i = 0; i < 5; i++) { - STORE32H(md->sha1.state[i], out+(4*i)); - } -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(hash_state)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int sha1_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - const char *msg; - unsigned char hash[20]; - } tests[] = { - { "abc", - { 0xa9, 0x99, 0x3e, 0x36, 0x47, 0x06, 0x81, 0x6a, - 0xba, 0x3e, 0x25, 0x71, 0x78, 0x50, 0xc2, 0x6c, - 0x9c, 0xd0, 0xd8, 0x9d } - }, - { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - { 0x84, 0x98, 0x3E, 0x44, 0x1C, 0x3B, 0xD2, 0x6E, - 0xBA, 0xAE, 0x4A, 0xA1, 0xF9, 0x51, 0x29, 0xE5, - 0xE5, 0x46, 0x70, 0xF1 } - } - }; - - int i; - unsigned char tmp[20]; - hash_state md; - - for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { - sha1_init(&md); - sha1_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - sha1_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "SHA1", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; - #endif -} - -#endif - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/sha2/sha224.c b/src/libtomcrypt/src/hashes/sha2/sha224.c deleted file mode 100644 index 6f46046023..0000000000 --- a/src/libtomcrypt/src/hashes/sha2/sha224.c +++ /dev/null @@ -1,129 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -/** - @param sha224.c - LTC_SHA-224 new NIST standard based off of LTC_SHA-256 truncated to 224 bits (Tom St Denis) -*/ - -#include "tomcrypt.h" - -#if defined(LTC_SHA224) && defined(LTC_SHA256) - -const struct ltc_hash_descriptor sha224_desc = -{ - "sha224", - 10, - 28, - 64, - - /* OID */ - { 2, 16, 840, 1, 101, 3, 4, 2, 4, }, - 9, - - &sha224_init, - &sha256_process, - &sha224_done, - &sha224_test, - NULL -}; - -/* init the sha256 er... sha224 state ;-) */ -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int sha224_init(hash_state * md) -{ - LTC_ARGCHK(md != NULL); - - md->sha256.curlen = 0; - md->sha256.length = 0; - md->sha256.state[0] = 0xc1059ed8UL; - md->sha256.state[1] = 0x367cd507UL; - md->sha256.state[2] = 0x3070dd17UL; - md->sha256.state[3] = 0xf70e5939UL; - md->sha256.state[4] = 0xffc00b31UL; - md->sha256.state[5] = 0x68581511UL; - md->sha256.state[6] = 0x64f98fa7UL; - md->sha256.state[7] = 0xbefa4fa4UL; - return CRYPT_OK; -} - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (28 bytes) - @return CRYPT_OK if successful -*/ -int sha224_done(hash_state * md, unsigned char *out) -{ - unsigned char buf[32]; - int err; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - err = sha256_done(md, buf); - XMEMCPY(out, buf, 28); -#ifdef LTC_CLEAN_STACK - zeromem(buf, sizeof(buf)); -#endif - return err; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int sha224_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - const char *msg; - unsigned char hash[28]; - } tests[] = { - { "abc", - { 0x23, 0x09, 0x7d, 0x22, 0x34, 0x05, 0xd8, - 0x22, 0x86, 0x42, 0xa4, 0x77, 0xbd, 0xa2, - 0x55, 0xb3, 0x2a, 0xad, 0xbc, 0xe4, 0xbd, - 0xa0, 0xb3, 0xf7, 0xe3, 0x6c, 0x9d, 0xa7 } - }, - { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - { 0x75, 0x38, 0x8b, 0x16, 0x51, 0x27, 0x76, - 0xcc, 0x5d, 0xba, 0x5d, 0xa1, 0xfd, 0x89, - 0x01, 0x50, 0xb0, 0xc6, 0x45, 0x5c, 0xb4, - 0xf5, 0x8b, 0x19, 0x52, 0x52, 0x25, 0x25 } - }, - }; - - int i; - unsigned char tmp[28]; - hash_state md; - - for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { - sha224_init(&md); - sha224_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - sha224_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "SHA224", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; - #endif -} - -#endif /* defined(LTC_SHA224) && defined(LTC_SHA256) */ - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/sha2/sha256.c b/src/libtomcrypt/src/hashes/sha2/sha256.c deleted file mode 100644 index 6d80932217..0000000000 --- a/src/libtomcrypt/src/hashes/sha2/sha256.c +++ /dev/null @@ -1,334 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file sha256.c - LTC_SHA256 by Tom St Denis -*/ - -#ifdef LTC_SHA256 - -const struct ltc_hash_descriptor sha256_desc = -{ - "sha256", - 0, - 32, - 64, - - /* OID */ - { 2, 16, 840, 1, 101, 3, 4, 2, 1, }, - 9, - - &sha256_init, - &sha256_process, - &sha256_done, - &sha256_test, - NULL -}; - -#ifdef LTC_SMALL_CODE -/* the K array */ -static const ulong32 K[64] = { - 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, 0x3956c25bUL, - 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, 0xd807aa98UL, 0x12835b01UL, - 0x243185beUL, 0x550c7dc3UL, 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, - 0xc19bf174UL, 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL, - 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL, 0x983e5152UL, - 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL, 0xc6e00bf3UL, 0xd5a79147UL, - 0x06ca6351UL, 0x14292967UL, 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, - 0x53380d13UL, 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL, - 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL, 0xd192e819UL, - 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL, 0x19a4c116UL, 0x1e376c08UL, - 0x2748774cUL, 0x34b0bcb5UL, 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, - 0x682e6ff3UL, 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL, - 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL -}; -#endif - -/* Various logical functions */ -#define Ch(x,y,z) (z ^ (x & (y ^ z))) -#define Maj(x,y,z) (((x | y) & z) | (x & y)) -#define S(x, n) RORc((x),(n)) -#define R(x, n) (((x)&0xFFFFFFFFUL)>>(n)) -#define Sigma0(x) (S(x, 2) ^ S(x, 13) ^ S(x, 22)) -#define Sigma1(x) (S(x, 6) ^ S(x, 11) ^ S(x, 25)) -#define Gamma0(x) (S(x, 7) ^ S(x, 18) ^ R(x, 3)) -#define Gamma1(x) (S(x, 17) ^ S(x, 19) ^ R(x, 10)) - -/* compress 512-bits */ -#ifdef LTC_CLEAN_STACK -static int _sha256_compress(hash_state * md, unsigned char *buf) -#else -static int sha256_compress(hash_state * md, unsigned char *buf) -#endif -{ - ulong32 S[8], W[64], t0, t1; -#ifdef LTC_SMALL_CODE - ulong32 t; -#endif - int i; - - /* copy state into S */ - for (i = 0; i < 8; i++) { - S[i] = md->sha256.state[i]; - } - - /* copy the state into 512-bits into W[0..15] */ - for (i = 0; i < 16; i++) { - LOAD32H(W[i], buf + (4*i)); - } - - /* fill W[16..63] */ - for (i = 16; i < 64; i++) { - W[i] = Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) + W[i - 16]; - } - - /* Compress */ -#ifdef LTC_SMALL_CODE -#define RND(a,b,c,d,e,f,g,h,i) \ - t0 = h + Sigma1(e) + Ch(e, f, g) + K[i] + W[i]; \ - t1 = Sigma0(a) + Maj(a, b, c); \ - d += t0; \ - h = t0 + t1; - - for (i = 0; i < 64; ++i) { - RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],i); - t = S[7]; S[7] = S[6]; S[6] = S[5]; S[5] = S[4]; - S[4] = S[3]; S[3] = S[2]; S[2] = S[1]; S[1] = S[0]; S[0] = t; - } -#else -#define RND(a,b,c,d,e,f,g,h,i,ki) \ - t0 = h + Sigma1(e) + Ch(e, f, g) + ki + W[i]; \ - t1 = Sigma0(a) + Maj(a, b, c); \ - d += t0; \ - h = t0 + t1; - - RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],0,0x428a2f98); - RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],1,0x71374491); - RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],2,0xb5c0fbcf); - RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],3,0xe9b5dba5); - RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],4,0x3956c25b); - RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],5,0x59f111f1); - RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],6,0x923f82a4); - RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],7,0xab1c5ed5); - RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],8,0xd807aa98); - RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],9,0x12835b01); - RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],10,0x243185be); - RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],11,0x550c7dc3); - RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],12,0x72be5d74); - RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],13,0x80deb1fe); - RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],14,0x9bdc06a7); - RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],15,0xc19bf174); - RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],16,0xe49b69c1); - RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],17,0xefbe4786); - RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],18,0x0fc19dc6); - RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],19,0x240ca1cc); - RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],20,0x2de92c6f); - RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],21,0x4a7484aa); - RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],22,0x5cb0a9dc); - RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],23,0x76f988da); - RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],24,0x983e5152); - RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],25,0xa831c66d); - RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],26,0xb00327c8); - RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],27,0xbf597fc7); - RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],28,0xc6e00bf3); - RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],29,0xd5a79147); - RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],30,0x06ca6351); - RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],31,0x14292967); - RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],32,0x27b70a85); - RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],33,0x2e1b2138); - RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],34,0x4d2c6dfc); - RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],35,0x53380d13); - RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],36,0x650a7354); - RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],37,0x766a0abb); - RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],38,0x81c2c92e); - RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],39,0x92722c85); - RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],40,0xa2bfe8a1); - RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],41,0xa81a664b); - RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],42,0xc24b8b70); - RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],43,0xc76c51a3); - RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],44,0xd192e819); - RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],45,0xd6990624); - RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],46,0xf40e3585); - RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],47,0x106aa070); - RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],48,0x19a4c116); - RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],49,0x1e376c08); - RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],50,0x2748774c); - RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],51,0x34b0bcb5); - RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],52,0x391c0cb3); - RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],53,0x4ed8aa4a); - RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],54,0x5b9cca4f); - RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],55,0x682e6ff3); - RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],56,0x748f82ee); - RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],57,0x78a5636f); - RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],58,0x84c87814); - RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],59,0x8cc70208); - RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],60,0x90befffa); - RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],61,0xa4506ceb); - RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],62,0xbef9a3f7); - RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],63,0xc67178f2); - -#undef RND - -#endif - - /* feedback */ - for (i = 0; i < 8; i++) { - md->sha256.state[i] = md->sha256.state[i] + S[i]; - } - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -static int sha256_compress(hash_state * md, unsigned char *buf) -{ - int err; - err = _sha256_compress(md, buf); - burn_stack(sizeof(ulong32) * 74); - return err; -} -#endif - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int sha256_init(hash_state * md) -{ - LTC_ARGCHK(md != NULL); - - md->sha256.curlen = 0; - md->sha256.length = 0; - md->sha256.state[0] = 0x6A09E667UL; - md->sha256.state[1] = 0xBB67AE85UL; - md->sha256.state[2] = 0x3C6EF372UL; - md->sha256.state[3] = 0xA54FF53AUL; - md->sha256.state[4] = 0x510E527FUL; - md->sha256.state[5] = 0x9B05688CUL; - md->sha256.state[6] = 0x1F83D9ABUL; - md->sha256.state[7] = 0x5BE0CD19UL; - return CRYPT_OK; -} - -/** - Process a block of memory though the hash - @param md The hash state - @param in The data to hash - @param inlen The length of the data (octets) - @return CRYPT_OK if successful -*/ -HASH_PROCESS(sha256_process, sha256_compress, sha256, 64) - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (32 bytes) - @return CRYPT_OK if successful -*/ -int sha256_done(hash_state * md, unsigned char *out) -{ - int i; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (md->sha256.curlen >= sizeof(md->sha256.buf)) { - return CRYPT_INVALID_ARG; - } - - - /* increase the length of the message */ - md->sha256.length += md->sha256.curlen * 8; - - /* append the '1' bit */ - md->sha256.buf[md->sha256.curlen++] = (unsigned char)0x80; - - /* if the length is currently above 56 bytes we append zeros - * then compress. Then we can fall back to padding zeros and length - * encoding like normal. - */ - if (md->sha256.curlen > 56) { - while (md->sha256.curlen < 64) { - md->sha256.buf[md->sha256.curlen++] = (unsigned char)0; - } - sha256_compress(md, md->sha256.buf); - md->sha256.curlen = 0; - } - - /* pad upto 56 bytes of zeroes */ - while (md->sha256.curlen < 56) { - md->sha256.buf[md->sha256.curlen++] = (unsigned char)0; - } - - /* store length */ - STORE64H(md->sha256.length, md->sha256.buf+56); - sha256_compress(md, md->sha256.buf); - - /* copy output */ - for (i = 0; i < 8; i++) { - STORE32H(md->sha256.state[i], out+(4*i)); - } -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(hash_state)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int sha256_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - const char *msg; - unsigned char hash[32]; - } tests[] = { - { "abc", - { 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, - 0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23, - 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, - 0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad } - }, - { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - { 0x24, 0x8d, 0x6a, 0x61, 0xd2, 0x06, 0x38, 0xb8, - 0xe5, 0xc0, 0x26, 0x93, 0x0c, 0x3e, 0x60, 0x39, - 0xa3, 0x3c, 0xe4, 0x59, 0x64, 0xff, 0x21, 0x67, - 0xf6, 0xec, 0xed, 0xd4, 0x19, 0xdb, 0x06, 0xc1 } - }, - }; - - int i; - unsigned char tmp[32]; - hash_state md; - - for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { - sha256_init(&md); - sha256_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - sha256_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "SHA256", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; - #endif -} - -#endif - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/sha2/sha384.c b/src/libtomcrypt/src/hashes/sha2/sha384.c deleted file mode 100644 index 1776385e76..0000000000 --- a/src/libtomcrypt/src/hashes/sha2/sha384.c +++ /dev/null @@ -1,134 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -/** - @param sha384.c - LTC_SHA384 hash included in sha512.c, Tom St Denis -*/ - -#include "tomcrypt.h" - -#if defined(LTC_SHA384) && defined(LTC_SHA512) - -const struct ltc_hash_descriptor sha384_desc = -{ - "sha384", - 4, - 48, - 128, - - /* OID */ - { 2, 16, 840, 1, 101, 3, 4, 2, 2, }, - 9, - - &sha384_init, - &sha512_process, - &sha384_done, - &sha384_test, - NULL -}; - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int sha384_init(hash_state * md) -{ - LTC_ARGCHK(md != NULL); - - md->sha512.curlen = 0; - md->sha512.length = 0; - md->sha512.state[0] = CONST64(0xcbbb9d5dc1059ed8); - md->sha512.state[1] = CONST64(0x629a292a367cd507); - md->sha512.state[2] = CONST64(0x9159015a3070dd17); - md->sha512.state[3] = CONST64(0x152fecd8f70e5939); - md->sha512.state[4] = CONST64(0x67332667ffc00b31); - md->sha512.state[5] = CONST64(0x8eb44a8768581511); - md->sha512.state[6] = CONST64(0xdb0c2e0d64f98fa7); - md->sha512.state[7] = CONST64(0x47b5481dbefa4fa4); - return CRYPT_OK; -} - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (48 bytes) - @return CRYPT_OK if successful -*/ -int sha384_done(hash_state * md, unsigned char *out) -{ - unsigned char buf[64]; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (md->sha512.curlen >= sizeof(md->sha512.buf)) { - return CRYPT_INVALID_ARG; - } - - sha512_done(md, buf); - XMEMCPY(out, buf, 48); -#ifdef LTC_CLEAN_STACK - zeromem(buf, sizeof(buf)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int sha384_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - const char *msg; - unsigned char hash[48]; - } tests[] = { - { "abc", - { 0xcb, 0x00, 0x75, 0x3f, 0x45, 0xa3, 0x5e, 0x8b, - 0xb5, 0xa0, 0x3d, 0x69, 0x9a, 0xc6, 0x50, 0x07, - 0x27, 0x2c, 0x32, 0xab, 0x0e, 0xde, 0xd1, 0x63, - 0x1a, 0x8b, 0x60, 0x5a, 0x43, 0xff, 0x5b, 0xed, - 0x80, 0x86, 0x07, 0x2b, 0xa1, 0xe7, 0xcc, 0x23, - 0x58, 0xba, 0xec, 0xa1, 0x34, 0xc8, 0x25, 0xa7 } - }, - { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", - { 0x09, 0x33, 0x0c, 0x33, 0xf7, 0x11, 0x47, 0xe8, - 0x3d, 0x19, 0x2f, 0xc7, 0x82, 0xcd, 0x1b, 0x47, - 0x53, 0x11, 0x1b, 0x17, 0x3b, 0x3b, 0x05, 0xd2, - 0x2f, 0xa0, 0x80, 0x86, 0xe3, 0xb0, 0xf7, 0x12, - 0xfc, 0xc7, 0xc7, 0x1a, 0x55, 0x7e, 0x2d, 0xb9, - 0x66, 0xc3, 0xe9, 0xfa, 0x91, 0x74, 0x60, 0x39 } - }, - }; - - int i; - unsigned char tmp[48]; - hash_state md; - - for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { - sha384_init(&md); - sha384_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - sha384_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "SHA384", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; - #endif -} - -#endif /* defined(LTC_SHA384) && defined(LTC_SHA512) */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/sha2/sha512.c b/src/libtomcrypt/src/hashes/sha2/sha512.c deleted file mode 100644 index c1c44c0bad..0000000000 --- a/src/libtomcrypt/src/hashes/sha2/sha512.c +++ /dev/null @@ -1,313 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @param sha512.c - LTC_SHA512 by Tom St Denis -*/ - -#ifdef LTC_SHA512 - -const struct ltc_hash_descriptor sha512_desc = -{ - "sha512", - 5, - 64, - 128, - - /* OID */ - { 2, 16, 840, 1, 101, 3, 4, 2, 3, }, - 9, - - &sha512_init, - &sha512_process, - &sha512_done, - &sha512_test, - NULL -}; - -/* the K array */ -static const ulong64 K[80] = { -CONST64(0x428a2f98d728ae22), CONST64(0x7137449123ef65cd), -CONST64(0xb5c0fbcfec4d3b2f), CONST64(0xe9b5dba58189dbbc), -CONST64(0x3956c25bf348b538), CONST64(0x59f111f1b605d019), -CONST64(0x923f82a4af194f9b), CONST64(0xab1c5ed5da6d8118), -CONST64(0xd807aa98a3030242), CONST64(0x12835b0145706fbe), -CONST64(0x243185be4ee4b28c), CONST64(0x550c7dc3d5ffb4e2), -CONST64(0x72be5d74f27b896f), CONST64(0x80deb1fe3b1696b1), -CONST64(0x9bdc06a725c71235), CONST64(0xc19bf174cf692694), -CONST64(0xe49b69c19ef14ad2), CONST64(0xefbe4786384f25e3), -CONST64(0x0fc19dc68b8cd5b5), CONST64(0x240ca1cc77ac9c65), -CONST64(0x2de92c6f592b0275), CONST64(0x4a7484aa6ea6e483), -CONST64(0x5cb0a9dcbd41fbd4), CONST64(0x76f988da831153b5), -CONST64(0x983e5152ee66dfab), CONST64(0xa831c66d2db43210), -CONST64(0xb00327c898fb213f), CONST64(0xbf597fc7beef0ee4), -CONST64(0xc6e00bf33da88fc2), CONST64(0xd5a79147930aa725), -CONST64(0x06ca6351e003826f), CONST64(0x142929670a0e6e70), -CONST64(0x27b70a8546d22ffc), CONST64(0x2e1b21385c26c926), -CONST64(0x4d2c6dfc5ac42aed), CONST64(0x53380d139d95b3df), -CONST64(0x650a73548baf63de), CONST64(0x766a0abb3c77b2a8), -CONST64(0x81c2c92e47edaee6), CONST64(0x92722c851482353b), -CONST64(0xa2bfe8a14cf10364), CONST64(0xa81a664bbc423001), -CONST64(0xc24b8b70d0f89791), CONST64(0xc76c51a30654be30), -CONST64(0xd192e819d6ef5218), CONST64(0xd69906245565a910), -CONST64(0xf40e35855771202a), CONST64(0x106aa07032bbd1b8), -CONST64(0x19a4c116b8d2d0c8), CONST64(0x1e376c085141ab53), -CONST64(0x2748774cdf8eeb99), CONST64(0x34b0bcb5e19b48a8), -CONST64(0x391c0cb3c5c95a63), CONST64(0x4ed8aa4ae3418acb), -CONST64(0x5b9cca4f7763e373), CONST64(0x682e6ff3d6b2b8a3), -CONST64(0x748f82ee5defb2fc), CONST64(0x78a5636f43172f60), -CONST64(0x84c87814a1f0ab72), CONST64(0x8cc702081a6439ec), -CONST64(0x90befffa23631e28), CONST64(0xa4506cebde82bde9), -CONST64(0xbef9a3f7b2c67915), CONST64(0xc67178f2e372532b), -CONST64(0xca273eceea26619c), CONST64(0xd186b8c721c0c207), -CONST64(0xeada7dd6cde0eb1e), CONST64(0xf57d4f7fee6ed178), -CONST64(0x06f067aa72176fba), CONST64(0x0a637dc5a2c898a6), -CONST64(0x113f9804bef90dae), CONST64(0x1b710b35131c471b), -CONST64(0x28db77f523047d84), CONST64(0x32caab7b40c72493), -CONST64(0x3c9ebe0a15c9bebc), CONST64(0x431d67c49c100d4c), -CONST64(0x4cc5d4becb3e42b6), CONST64(0x597f299cfc657e2a), -CONST64(0x5fcb6fab3ad6faec), CONST64(0x6c44198c4a475817) -}; - -/* Various logical functions */ -#define Ch(x,y,z) (z ^ (x & (y ^ z))) -#define Maj(x,y,z) (((x | y) & z) | (x & y)) -#define S(x, n) ROR64c(x, n) -#define R(x, n) (((x)&CONST64(0xFFFFFFFFFFFFFFFF))>>((ulong64)n)) -#define Sigma0(x) (S(x, 28) ^ S(x, 34) ^ S(x, 39)) -#define Sigma1(x) (S(x, 14) ^ S(x, 18) ^ S(x, 41)) -#define Gamma0(x) (S(x, 1) ^ S(x, 8) ^ R(x, 7)) -#define Gamma1(x) (S(x, 19) ^ S(x, 61) ^ R(x, 6)) - -/* compress 1024-bits */ -#ifdef LTC_CLEAN_STACK -static int _sha512_compress(hash_state * md, unsigned char *buf) -#else -static int sha512_compress(hash_state * md, unsigned char *buf) -#endif -{ - ulong64 S[8], W[80], t0, t1; - int i; - - /* copy state into S */ - for (i = 0; i < 8; i++) { - S[i] = md->sha512.state[i]; - } - - /* copy the state into 1024-bits into W[0..15] */ - for (i = 0; i < 16; i++) { - LOAD64H(W[i], buf + (8*i)); - } - - /* fill W[16..79] */ - for (i = 16; i < 80; i++) { - W[i] = Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) + W[i - 16]; - } - - /* Compress */ -#ifdef LTC_SMALL_CODE - for (i = 0; i < 80; i++) { - t0 = S[7] + Sigma1(S[4]) + Ch(S[4], S[5], S[6]) + K[i] + W[i]; - t1 = Sigma0(S[0]) + Maj(S[0], S[1], S[2]); - S[7] = S[6]; - S[6] = S[5]; - S[5] = S[4]; - S[4] = S[3] + t0; - S[3] = S[2]; - S[2] = S[1]; - S[1] = S[0]; - S[0] = t0 + t1; - } -#else -#define RND(a,b,c,d,e,f,g,h,i) \ - t0 = h + Sigma1(e) + Ch(e, f, g) + K[i] + W[i]; \ - t1 = Sigma0(a) + Maj(a, b, c); \ - d += t0; \ - h = t0 + t1; - - for (i = 0; i < 80; i += 8) { - RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],i+0); - RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],i+1); - RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],i+2); - RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],i+3); - RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],i+4); - RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],i+5); - RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],i+6); - RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],i+7); - } -#endif - - - /* feedback */ - for (i = 0; i < 8; i++) { - md->sha512.state[i] = md->sha512.state[i] + S[i]; - } - - return CRYPT_OK; -} - -/* compress 1024-bits */ -#ifdef LTC_CLEAN_STACK -static int sha512_compress(hash_state * md, unsigned char *buf) -{ - int err; - err = _sha512_compress(md, buf); - burn_stack(sizeof(ulong64) * 90 + sizeof(int)); - return err; -} -#endif - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int sha512_init(hash_state * md) -{ - LTC_ARGCHK(md != NULL); - md->sha512.curlen = 0; - md->sha512.length = 0; - md->sha512.state[0] = CONST64(0x6a09e667f3bcc908); - md->sha512.state[1] = CONST64(0xbb67ae8584caa73b); - md->sha512.state[2] = CONST64(0x3c6ef372fe94f82b); - md->sha512.state[3] = CONST64(0xa54ff53a5f1d36f1); - md->sha512.state[4] = CONST64(0x510e527fade682d1); - md->sha512.state[5] = CONST64(0x9b05688c2b3e6c1f); - md->sha512.state[6] = CONST64(0x1f83d9abfb41bd6b); - md->sha512.state[7] = CONST64(0x5be0cd19137e2179); - return CRYPT_OK; -} - -/** - Process a block of memory though the hash - @param md The hash state - @param in The data to hash - @param inlen The length of the data (octets) - @return CRYPT_OK if successful -*/ -HASH_PROCESS(sha512_process, sha512_compress, sha512, 128) - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (64 bytes) - @return CRYPT_OK if successful -*/ -int sha512_done(hash_state * md, unsigned char *out) -{ - int i; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (md->sha512.curlen >= sizeof(md->sha512.buf)) { - return CRYPT_INVALID_ARG; - } - - /* increase the length of the message */ - md->sha512.length += md->sha512.curlen * CONST64(8); - - /* append the '1' bit */ - md->sha512.buf[md->sha512.curlen++] = (unsigned char)0x80; - - /* if the length is currently above 112 bytes we append zeros - * then compress. Then we can fall back to padding zeros and length - * encoding like normal. - */ - if (md->sha512.curlen > 112) { - while (md->sha512.curlen < 128) { - md->sha512.buf[md->sha512.curlen++] = (unsigned char)0; - } - sha512_compress(md, md->sha512.buf); - md->sha512.curlen = 0; - } - - /* pad upto 120 bytes of zeroes - * note: that from 112 to 120 is the 64 MSB of the length. We assume that you won't hash - * > 2^64 bits of data... :-) - */ - while (md->sha512.curlen < 120) { - md->sha512.buf[md->sha512.curlen++] = (unsigned char)0; - } - - /* store length */ - STORE64H(md->sha512.length, md->sha512.buf+120); - sha512_compress(md, md->sha512.buf); - - /* copy output */ - for (i = 0; i < 8; i++) { - STORE64H(md->sha512.state[i], out+(8*i)); - } -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(hash_state)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int sha512_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - const char *msg; - unsigned char hash[64]; - } tests[] = { - { "abc", - { 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba, - 0xcc, 0x41, 0x73, 0x49, 0xae, 0x20, 0x41, 0x31, - 0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2, - 0x0a, 0x9e, 0xee, 0xe6, 0x4b, 0x55, 0xd3, 0x9a, - 0x21, 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8, - 0x36, 0xba, 0x3c, 0x23, 0xa3, 0xfe, 0xeb, 0xbd, - 0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, 0x0e, - 0x2a, 0x9a, 0xc9, 0x4f, 0xa5, 0x4c, 0xa4, 0x9f } - }, - { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", - { 0x8e, 0x95, 0x9b, 0x75, 0xda, 0xe3, 0x13, 0xda, - 0x8c, 0xf4, 0xf7, 0x28, 0x14, 0xfc, 0x14, 0x3f, - 0x8f, 0x77, 0x79, 0xc6, 0xeb, 0x9f, 0x7f, 0xa1, - 0x72, 0x99, 0xae, 0xad, 0xb6, 0x88, 0x90, 0x18, - 0x50, 0x1d, 0x28, 0x9e, 0x49, 0x00, 0xf7, 0xe4, - 0x33, 0x1b, 0x99, 0xde, 0xc4, 0xb5, 0x43, 0x3a, - 0xc7, 0xd3, 0x29, 0xee, 0xb6, 0xdd, 0x26, 0x54, - 0x5e, 0x96, 0xe5, 0x5b, 0x87, 0x4b, 0xe9, 0x09 } - }, - }; - - int i; - unsigned char tmp[64]; - hash_state md; - - for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { - sha512_init(&md); - sha512_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - sha512_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "SHA512", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; - #endif -} - -#endif - - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/sha2/sha512_224.c b/src/libtomcrypt/src/hashes/sha2/sha512_224.c deleted file mode 100644 index 9b33681fb1..0000000000 --- a/src/libtomcrypt/src/hashes/sha2/sha512_224.c +++ /dev/null @@ -1,130 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -/** - @param sha512_224.c - SHA512/224 hash included in sha512.c -*/ - -#include "tomcrypt.h" - -#if defined(LTC_SHA512_224) && defined(LTC_SHA512) - -const struct ltc_hash_descriptor sha512_224_desc = -{ - "sha512-224", - 15, - 28, - 128, - - /* OID */ - { 2, 16, 840, 1, 101, 3, 4, 2, 5, }, - 9, - - &sha512_224_init, - &sha512_process, - &sha512_224_done, - &sha512_224_test, - NULL -}; - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int sha512_224_init(hash_state * md) -{ - LTC_ARGCHK(md != NULL); - - md->sha512.curlen = 0; - md->sha512.length = 0; - md->sha512.state[0] = CONST64(0x8C3D37C819544DA2); - md->sha512.state[1] = CONST64(0x73E1996689DCD4D6); - md->sha512.state[2] = CONST64(0x1DFAB7AE32FF9C82); - md->sha512.state[3] = CONST64(0x679DD514582F9FCF); - md->sha512.state[4] = CONST64(0x0F6D2B697BD44DA8); - md->sha512.state[5] = CONST64(0x77E36F7304C48942); - md->sha512.state[6] = CONST64(0x3F9D85A86A1D36C8); - md->sha512.state[7] = CONST64(0x1112E6AD91D692A1); - return CRYPT_OK; -} - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (48 bytes) - @return CRYPT_OK if successful -*/ -int sha512_224_done(hash_state * md, unsigned char *out) -{ - unsigned char buf[64]; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (md->sha512.curlen >= sizeof(md->sha512.buf)) { - return CRYPT_INVALID_ARG; - } - - sha512_done(md, buf); - XMEMCPY(out, buf, 28); -#ifdef LTC_CLEAN_STACK - zeromem(buf, sizeof(buf)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int sha512_224_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - const char *msg; - unsigned char hash[28]; - } tests[] = { - { "abc", - { 0x46, 0x34, 0x27, 0x0F, 0x70, 0x7B, 0x6A, 0x54, - 0xDA, 0xAE, 0x75, 0x30, 0x46, 0x08, 0x42, 0xE2, - 0x0E, 0x37, 0xED, 0x26, 0x5C, 0xEE, 0xE9, 0xA4, - 0x3E, 0x89, 0x24, 0xAA } - }, - { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", - { 0x23, 0xFE, 0xC5, 0xBB, 0x94, 0xD6, 0x0B, 0x23, - 0x30, 0x81, 0x92, 0x64, 0x0B, 0x0C, 0x45, 0x33, - 0x35, 0xD6, 0x64, 0x73, 0x4F, 0xE4, 0x0E, 0x72, - 0x68, 0x67, 0x4A, 0xF9 } - }, - }; - - int i; - unsigned char tmp[28]; - hash_state md; - - for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { - sha512_224_init(&md); - sha512_224_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - sha512_224_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "SHA512-224", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; - #endif -} - -#endif /* defined(LTC_SHA384) && defined(LTC_SHA512) */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/sha2/sha512_256.c b/src/libtomcrypt/src/hashes/sha2/sha512_256.c deleted file mode 100644 index 0ae1913017..0000000000 --- a/src/libtomcrypt/src/hashes/sha2/sha512_256.c +++ /dev/null @@ -1,130 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -/** - @param sha512_256.c - SHA512/256 hash included in sha512.c -*/ - -#include "tomcrypt.h" - -#if defined(LTC_SHA512_256) && defined(LTC_SHA512) - -const struct ltc_hash_descriptor sha512_256_desc = -{ - "sha512-256", - 16, - 32, - 128, - - /* OID */ - { 2, 16, 840, 1, 101, 3, 4, 2, 6, }, - 9, - - &sha512_256_init, - &sha512_process, - &sha512_256_done, - &sha512_256_test, - NULL -}; - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int sha512_256_init(hash_state * md) -{ - LTC_ARGCHK(md != NULL); - - md->sha512.curlen = 0; - md->sha512.length = 0; - md->sha512.state[0] = CONST64(0x22312194FC2BF72C); - md->sha512.state[1] = CONST64(0x9F555FA3C84C64C2); - md->sha512.state[2] = CONST64(0x2393B86B6F53B151); - md->sha512.state[3] = CONST64(0x963877195940EABD); - md->sha512.state[4] = CONST64(0x96283EE2A88EFFE3); - md->sha512.state[5] = CONST64(0xBE5E1E2553863992); - md->sha512.state[6] = CONST64(0x2B0199FC2C85B8AA); - md->sha512.state[7] = CONST64(0x0EB72DDC81C52CA2); - return CRYPT_OK; -} - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (48 bytes) - @return CRYPT_OK if successful -*/ -int sha512_256_done(hash_state * md, unsigned char *out) -{ - unsigned char buf[64]; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (md->sha512.curlen >= sizeof(md->sha512.buf)) { - return CRYPT_INVALID_ARG; - } - - sha512_done(md, buf); - XMEMCPY(out, buf, 32); -#ifdef LTC_CLEAN_STACK - zeromem(buf, sizeof(buf)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int sha512_256_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - const char *msg; - unsigned char hash[32]; - } tests[] = { - { "abc", - { 0x53, 0x04, 0x8E, 0x26, 0x81, 0x94, 0x1E, 0xF9, - 0x9B, 0x2E, 0x29, 0xB7, 0x6B, 0x4C, 0x7D, 0xAB, - 0xE4, 0xC2, 0xD0, 0xC6, 0x34, 0xFC, 0x6D, 0x46, - 0xE0, 0xE2, 0xF1, 0x31, 0x07, 0xE7, 0xAF, 0x23 } - }, - { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", - { 0x39, 0x28, 0xE1, 0x84, 0xFB, 0x86, 0x90, 0xF8, - 0x40, 0xDA, 0x39, 0x88, 0x12, 0x1D, 0x31, 0xBE, - 0x65, 0xCB, 0x9D, 0x3E, 0xF8, 0x3E, 0xE6, 0x14, - 0x6F, 0xEA, 0xC8, 0x61, 0xE1, 0x9B, 0x56, 0x3A } - }, - }; - - int i; - unsigned char tmp[32]; - hash_state md; - - for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { - sha512_256_init(&md); - sha512_256_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - sha512_256_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "SHA512-265", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; - #endif -} - -#endif /* defined(LTC_SHA384) && defined(LTC_SHA512) */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/sha3.c b/src/libtomcrypt/src/hashes/sha3.c deleted file mode 100644 index af60ea31b2..0000000000 --- a/src/libtomcrypt/src/hashes/sha3.c +++ /dev/null @@ -1,306 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* based on https://github.com/brainhub/SHA3IUF (public domain) */ - -#include "tomcrypt.h" - -#ifdef LTC_SHA3 - -const struct ltc_hash_descriptor sha3_224_desc = -{ - "sha3-224", /* name of hash */ - 17, /* internal ID */ - 28, /* Size of digest in octets */ - 144, /* Input block size in octets */ - { 2,16,840,1,101,3,4,2,7 }, /* ASN.1 OID */ - 9, /* Length OID */ - &sha3_224_init, - &sha3_process, - &sha3_done, - &sha3_224_test, - NULL -}; - -const struct ltc_hash_descriptor sha3_256_desc = -{ - "sha3-256", /* name of hash */ - 18, /* internal ID */ - 32, /* Size of digest in octets */ - 136, /* Input block size in octets */ - { 2,16,840,1,101,3,4,2,8 }, /* ASN.1 OID */ - 9, /* Length OID */ - &sha3_256_init, - &sha3_process, - &sha3_done, - &sha3_256_test, - NULL -}; - -const struct ltc_hash_descriptor sha3_384_desc = -{ - "sha3-384", /* name of hash */ - 19, /* internal ID */ - 48, /* Size of digest in octets */ - 104, /* Input block size in octets */ - { 2,16,840,1,101,3,4,2,9 }, /* ASN.1 OID */ - 9, /* Length OID */ - &sha3_384_init, - &sha3_process, - &sha3_done, - &sha3_384_test, - NULL -}; - -const struct ltc_hash_descriptor sha3_512_desc = -{ - "sha3-512", /* name of hash */ - 20, /* internal ID */ - 64, /* Size of digest in octets */ - 72, /* Input block size in octets */ - { 2,16,840,1,101,3,4,2,10 }, /* ASN.1 OID */ - 9, /* Length OID */ - &sha3_512_init, - &sha3_process, - &sha3_done, - &sha3_512_test, - NULL -}; - -#define SHA3_KECCAK_SPONGE_WORDS 25 /* 1600 bits > 200 bytes > 25 x ulong64 */ -#define SHA3_KECCAK_ROUNDS 24 - -static const ulong64 keccakf_rndc[24] = { - CONST64(0x0000000000000001), CONST64(0x0000000000008082), - CONST64(0x800000000000808a), CONST64(0x8000000080008000), - CONST64(0x000000000000808b), CONST64(0x0000000080000001), - CONST64(0x8000000080008081), CONST64(0x8000000000008009), - CONST64(0x000000000000008a), CONST64(0x0000000000000088), - CONST64(0x0000000080008009), CONST64(0x000000008000000a), - CONST64(0x000000008000808b), CONST64(0x800000000000008b), - CONST64(0x8000000000008089), CONST64(0x8000000000008003), - CONST64(0x8000000000008002), CONST64(0x8000000000000080), - CONST64(0x000000000000800a), CONST64(0x800000008000000a), - CONST64(0x8000000080008081), CONST64(0x8000000000008080), - CONST64(0x0000000080000001), CONST64(0x8000000080008008) -}; - -static const unsigned keccakf_rotc[24] = { - 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 2, 14, 27, 41, 56, 8, 25, 43, 62, 18, 39, 61, 20, 44 -}; - -static const unsigned keccakf_piln[24] = { - 10, 7, 11, 17, 18, 3, 5, 16, 8, 21, 24, 4, 15, 23, 19, 13, 12, 2, 20, 14, 22, 9, 6, 1 -}; - -static void keccakf(ulong64 s[25]) -{ - int i, j, round; - ulong64 t, bc[5]; - - for(round = 0; round < SHA3_KECCAK_ROUNDS; round++) { - /* Theta */ - for(i = 0; i < 5; i++) - bc[i] = s[i] ^ s[i + 5] ^ s[i + 10] ^ s[i + 15] ^ s[i + 20]; - - for(i = 0; i < 5; i++) { - t = bc[(i + 4) % 5] ^ ROL64(bc[(i + 1) % 5], 1); - for(j = 0; j < 25; j += 5) - s[j + i] ^= t; - } - /* Rho Pi */ - t = s[1]; - for(i = 0; i < 24; i++) { - j = keccakf_piln[i]; - bc[0] = s[j]; - s[j] = ROL64(t, keccakf_rotc[i]); - t = bc[0]; - } - /* Chi */ - for(j = 0; j < 25; j += 5) { - for(i = 0; i < 5; i++) - bc[i] = s[j + i]; - for(i = 0; i < 5; i++) - s[j + i] ^= (~bc[(i + 1) % 5]) & bc[(i + 2) % 5]; - } - /* Iota */ - s[0] ^= keccakf_rndc[round]; - } -} - -/* Public Inteface */ - -int sha3_224_init(hash_state *md) -{ - LTC_ARGCHK(md != NULL); - XMEMSET(&md->sha3, 0, sizeof(md->sha3)); - md->sha3.capacity_words = 2 * 224 / (8 * sizeof(ulong64)); - return CRYPT_OK; -} - -int sha3_256_init(hash_state *md) -{ - LTC_ARGCHK(md != NULL); - XMEMSET(&md->sha3, 0, sizeof(md->sha3)); - md->sha3.capacity_words = 2 * 256 / (8 * sizeof(ulong64)); - return CRYPT_OK; -} - -int sha3_384_init(hash_state *md) -{ - LTC_ARGCHK(md != NULL); - XMEMSET(&md->sha3, 0, sizeof(md->sha3)); - md->sha3.capacity_words = 2 * 384 / (8 * sizeof(ulong64)); - return CRYPT_OK; -} - -int sha3_512_init(hash_state *md) -{ - LTC_ARGCHK(md != NULL); - XMEMSET(&md->sha3, 0, sizeof(md->sha3)); - md->sha3.capacity_words = 2 * 512 / (8 * sizeof(ulong64)); - return CRYPT_OK; -} - -int sha3_shake_init(hash_state *md, int num) -{ - LTC_ARGCHK(md != NULL); - if (num != 128 && num != 256) return CRYPT_INVALID_ARG; - XMEMSET(&md->sha3, 0, sizeof(md->sha3)); - md->sha3.capacity_words = (unsigned short)(2 * num / (8 * sizeof(ulong64))); - return CRYPT_OK; -} - -int sha3_process(hash_state *md, const unsigned char *in, unsigned long inlen) -{ - /* 0...7 -- how much is needed to have a word */ - unsigned old_tail = (8 - md->sha3.byte_index) & 7; - - unsigned long words; - unsigned tail; - unsigned long i; - - if (inlen == 0) return CRYPT_OK; /* nothing to do */ - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(in != NULL); - - if(inlen < old_tail) { /* have no complete word or haven't started the word yet */ - while (inlen--) md->sha3.saved |= (ulong64) (*(in++)) << ((md->sha3.byte_index++) * 8); - return CRYPT_OK; - } - - if(old_tail) { /* will have one word to process */ - inlen -= old_tail; - while (old_tail--) md->sha3.saved |= (ulong64) (*(in++)) << ((md->sha3.byte_index++) * 8); - /* now ready to add saved to the sponge */ - md->sha3.s[md->sha3.word_index] ^= md->sha3.saved; - md->sha3.byte_index = 0; - md->sha3.saved = 0; - if(++md->sha3.word_index == (SHA3_KECCAK_SPONGE_WORDS - md->sha3.capacity_words)) { - keccakf(md->sha3.s); - md->sha3.word_index = 0; - } - } - - /* now work in full words directly from input */ - words = inlen / sizeof(ulong64); - tail = inlen - words * sizeof(ulong64); - - for(i = 0; i < words; i++, in += sizeof(ulong64)) { - ulong64 t; - LOAD64L(t, in); - md->sha3.s[md->sha3.word_index] ^= t; - if(++md->sha3.word_index == (SHA3_KECCAK_SPONGE_WORDS - md->sha3.capacity_words)) { - keccakf(md->sha3.s); - md->sha3.word_index = 0; - } - } - - /* finally, save the partial word */ - while (tail--) { - md->sha3.saved |= (ulong64) (*(in++)) << ((md->sha3.byte_index++) * 8); - } - return CRYPT_OK; -} - -int sha3_done(hash_state *md, unsigned char *hash) -{ - unsigned i; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(hash != NULL); - - md->sha3.s[md->sha3.word_index] ^= (md->sha3.saved ^ (CONST64(0x06) << (md->sha3.byte_index * 8))); - md->sha3.s[SHA3_KECCAK_SPONGE_WORDS - md->sha3.capacity_words - 1] ^= CONST64(0x8000000000000000); - keccakf(md->sha3.s); - - /* store sha3.s[] as little-endian bytes into sha3.sb */ - for(i = 0; i < SHA3_KECCAK_SPONGE_WORDS; i++) { - STORE64L(md->sha3.s[i], md->sha3.sb + i * 8); - } - - XMEMCPY(hash, md->sha3.sb, md->sha3.capacity_words * 4); - return CRYPT_OK; -} - -int sha3_shake_done(hash_state *md, unsigned char *out, unsigned long outlen) -{ - /* IMPORTANT NOTE: sha3_shake_done can be called many times */ - unsigned long idx; - unsigned i; - - if (outlen == 0) return CRYPT_OK; /* nothing to do */ - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (!md->sha3.xof_flag) { - /* shake_xof operation must be done only once */ - md->sha3.s[md->sha3.word_index] ^= (md->sha3.saved ^ (CONST64(0x1F) << (md->sha3.byte_index * 8))); - md->sha3.s[SHA3_KECCAK_SPONGE_WORDS - md->sha3.capacity_words - 1] ^= CONST64(0x8000000000000000); - keccakf(md->sha3.s); - /* store sha3.s[] as little-endian bytes into sha3.sb */ - for(i = 0; i < SHA3_KECCAK_SPONGE_WORDS; i++) { - STORE64L(md->sha3.s[i], md->sha3.sb + i * 8); - } - md->sha3.byte_index = 0; - md->sha3.xof_flag = 1; - } - - for (idx = 0; idx < outlen; idx++) { - if(md->sha3.byte_index >= (SHA3_KECCAK_SPONGE_WORDS - md->sha3.capacity_words) * 8) { - keccakf(md->sha3.s); - /* store sha3.s[] as little-endian bytes into sha3.sb */ - for(i = 0; i < SHA3_KECCAK_SPONGE_WORDS; i++) { - STORE64L(md->sha3.s[i], md->sha3.sb + i * 8); - } - md->sha3.byte_index = 0; - } - out[idx] = md->sha3.sb[md->sha3.byte_index++]; - } - return CRYPT_OK; -} - -int sha3_shake_memory(int num, const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen) -{ - hash_state md; - int err; - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - if ((err = sha3_shake_init(&md, num)) != CRYPT_OK) return err; - if ((err = sha3_shake_process(&md, in, inlen)) != CRYPT_OK) return err; - if ((err = sha3_shake_done(&md, out, *outlen)) != CRYPT_OK) return err; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/sha3_test.c b/src/libtomcrypt/src/hashes/sha3_test.c deleted file mode 100644 index 4d2ec70b15..0000000000 --- a/src/libtomcrypt/src/hashes/sha3_test.c +++ /dev/null @@ -1,401 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* based on https://github.com/brainhub/SHA3IUF (public domain) */ - -#include "tomcrypt.h" - -#ifdef LTC_SHA3 - -int sha3_224_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - unsigned char buf[200], hash[224 / 8]; - int i; - hash_state c; - const unsigned char c1 = 0xa3; - - const unsigned char sha3_224_empty[224 / 8] = { - 0x6b, 0x4e, 0x03, 0x42, 0x36, 0x67, 0xdb, 0xb7, - 0x3b, 0x6e, 0x15, 0x45, 0x4f, 0x0e, 0xb1, 0xab, - 0xd4, 0x59, 0x7f, 0x9a, 0x1b, 0x07, 0x8e, 0x3f, - 0x5b, 0x5a, 0x6b, 0xc7 - }; - - const unsigned char sha3_224_0xa3_200_times[224 / 8] = { - 0x93, 0x76, 0x81, 0x6a, 0xba, 0x50, 0x3f, 0x72, - 0xf9, 0x6c, 0xe7, 0xeb, 0x65, 0xac, 0x09, 0x5d, - 0xee, 0xe3, 0xbe, 0x4b, 0xf9, 0xbb, 0xc2, 0xa1, - 0xcb, 0x7e, 0x11, 0xe0 - }; - - XMEMSET(buf, c1, sizeof(buf)); - - /* SHA3-224 on an empty buffer */ - sha3_224_init(&c); - sha3_done(&c, hash); - if (compare_testvector(hash, sizeof(hash), sha3_224_empty, sizeof(sha3_224_empty), "SHA3-224", 0)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHA3-224 in two steps. [FIPS 202] */ - sha3_224_init(&c); - sha3_process(&c, buf, sizeof(buf) / 2); - sha3_process(&c, buf + sizeof(buf) / 2, sizeof(buf) / 2); - sha3_done(&c, hash); - if (compare_testvector(hash, sizeof(hash), sha3_224_0xa3_200_times, sizeof(sha3_224_0xa3_200_times), "SHA3-224", 1)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHA3-224 byte-by-byte: 200 steps. [FIPS 202] */ - i = 200; - sha3_224_init(&c); - while (i--) { - sha3_process(&c, &c1, 1); - } - sha3_done(&c, hash); - if (compare_testvector(hash, sizeof(hash), sha3_224_0xa3_200_times, sizeof(sha3_224_0xa3_200_times), "SHA3-224", 2)) { - return CRYPT_FAIL_TESTVECTOR; - } - - return CRYPT_OK; -#endif -} - -int sha3_256_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - unsigned char buf[200], hash[256 / 8]; - int i; - hash_state c; - const unsigned char c1 = 0xa3; - - const unsigned char sha3_256_empty[256 / 8] = { - 0xa7, 0xff, 0xc6, 0xf8, 0xbf, 0x1e, 0xd7, 0x66, - 0x51, 0xc1, 0x47, 0x56, 0xa0, 0x61, 0xd6, 0x62, - 0xf5, 0x80, 0xff, 0x4d, 0xe4, 0x3b, 0x49, 0xfa, - 0x82, 0xd8, 0x0a, 0x4b, 0x80, 0xf8, 0x43, 0x4a - }; - const unsigned char sha3_256_0xa3_200_times[256 / 8] = { - 0x79, 0xf3, 0x8a, 0xde, 0xc5, 0xc2, 0x03, 0x07, - 0xa9, 0x8e, 0xf7, 0x6e, 0x83, 0x24, 0xaf, 0xbf, - 0xd4, 0x6c, 0xfd, 0x81, 0xb2, 0x2e, 0x39, 0x73, - 0xc6, 0x5f, 0xa1, 0xbd, 0x9d, 0xe3, 0x17, 0x87 - }; - - XMEMSET(buf, c1, sizeof(buf)); - - /* SHA3-256 on an empty buffer */ - sha3_256_init(&c); - sha3_done(&c, hash); - if (compare_testvector(hash, sizeof(hash), sha3_256_empty, sizeof(sha3_256_empty), "SHA3-256", 0)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHA3-256 as a single buffer. [FIPS 202] */ - sha3_256_init(&c); - sha3_process(&c, buf, sizeof(buf)); - sha3_done(&c, hash); - if (compare_testvector(hash, sizeof(hash), sha3_256_0xa3_200_times, sizeof(sha3_256_0xa3_200_times), "SHA3-256", 1)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHA3-256 in two steps. [FIPS 202] */ - sha3_256_init(&c); - sha3_process(&c, buf, sizeof(buf) / 2); - sha3_process(&c, buf + sizeof(buf) / 2, sizeof(buf) / 2); - sha3_done(&c, hash); - if (compare_testvector(hash, sizeof(hash), sha3_256_0xa3_200_times, sizeof(sha3_256_0xa3_200_times), "SHA3-256", 2)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHA3-256 byte-by-byte: 200 steps. [FIPS 202] */ - i = 200; - sha3_256_init(&c); - while (i--) { - sha3_process(&c, &c1, 1); - } - sha3_done(&c, hash); - if (compare_testvector(hash, sizeof(hash), sha3_256_0xa3_200_times, sizeof(sha3_256_0xa3_200_times), "SHA3-256", 3)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHA3-256 byte-by-byte: 135 bytes. Input from [Keccak]. Output - * matched with sha3sum. */ - sha3_256_init(&c); - sha3_process(&c, (unsigned char*) - "\xb7\x71\xd5\xce\xf5\xd1\xa4\x1a" - "\x93\xd1\x56\x43\xd7\x18\x1d\x2a" - "\x2e\xf0\xa8\xe8\x4d\x91\x81\x2f" - "\x20\xed\x21\xf1\x47\xbe\xf7\x32" - "\xbf\x3a\x60\xef\x40\x67\xc3\x73" - "\x4b\x85\xbc\x8c\xd4\x71\x78\x0f" - "\x10\xdc\x9e\x82\x91\xb5\x83\x39" - "\xa6\x77\xb9\x60\x21\x8f\x71\xe7" - "\x93\xf2\x79\x7a\xea\x34\x94\x06" - "\x51\x28\x29\x06\x5d\x37\xbb\x55" - "\xea\x79\x6f\xa4\xf5\x6f\xd8\x89" - "\x6b\x49\xb2\xcd\x19\xb4\x32\x15" - "\xad\x96\x7c\x71\x2b\x24\xe5\x03" - "\x2d\x06\x52\x32\xe0\x2c\x12\x74" - "\x09\xd2\xed\x41\x46\xb9\xd7\x5d" - "\x76\x3d\x52\xdb\x98\xd9\x49\xd3" - "\xb0\xfe\xd6\xa8\x05\x2f\xbb", 1080 / 8); - sha3_done(&c, hash); - if(compare_testvector(hash, sizeof(hash), - "\xa1\x9e\xee\x92\xbb\x20\x97\xb6" - "\x4e\x82\x3d\x59\x77\x98\xaa\x18" - "\xbe\x9b\x7c\x73\x6b\x80\x59\xab" - "\xfd\x67\x79\xac\x35\xac\x81\xb5", 256 / 8, "SHA3-256", 4)) { - return CRYPT_FAIL_TESTVECTOR; - } - - return CRYPT_OK; -#endif -} - -int sha3_384_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - unsigned char buf[200], hash[384 / 8]; - int i; - hash_state c; - const unsigned char c1 = 0xa3; - - const unsigned char sha3_384_0xa3_200_times[384 / 8] = { - 0x18, 0x81, 0xde, 0x2c, 0xa7, 0xe4, 0x1e, 0xf9, - 0x5d, 0xc4, 0x73, 0x2b, 0x8f, 0x5f, 0x00, 0x2b, - 0x18, 0x9c, 0xc1, 0xe4, 0x2b, 0x74, 0x16, 0x8e, - 0xd1, 0x73, 0x26, 0x49, 0xce, 0x1d, 0xbc, 0xdd, - 0x76, 0x19, 0x7a, 0x31, 0xfd, 0x55, 0xee, 0x98, - 0x9f, 0x2d, 0x70, 0x50, 0xdd, 0x47, 0x3e, 0x8f - }; - - XMEMSET(buf, c1, sizeof(buf)); - - /* SHA3-384 as a single buffer. [FIPS 202] */ - sha3_384_init(&c); - sha3_process(&c, buf, sizeof(buf)); - sha3_done(&c, hash); - if (compare_testvector(hash, sizeof(hash), sha3_384_0xa3_200_times, sizeof(sha3_384_0xa3_200_times), "SHA3-384", 0)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHA3-384 in two steps. [FIPS 202] */ - sha3_384_init(&c); - sha3_process(&c, buf, sizeof(buf) / 2); - sha3_process(&c, buf + sizeof(buf) / 2, sizeof(buf) / 2); - sha3_done(&c, hash); - if (compare_testvector(hash, sizeof(hash), sha3_384_0xa3_200_times, sizeof(sha3_384_0xa3_200_times), "SHA3-384", 1)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHA3-384 byte-by-byte: 200 steps. [FIPS 202] */ - i = 200; - sha3_384_init(&c); - while (i--) { - sha3_process(&c, &c1, 1); - } - sha3_done(&c, hash); - if (compare_testvector(hash, sizeof(hash), sha3_384_0xa3_200_times, sizeof(sha3_384_0xa3_200_times), "SHA3-384", 2)) { - return CRYPT_FAIL_TESTVECTOR; - } - - return CRYPT_OK; -#endif -} - -int sha3_512_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - unsigned char buf[200], hash[512 / 8]; - int i; - hash_state c; - const unsigned char c1 = 0xa3; - - const unsigned char sha3_512_0xa3_200_times[512 / 8] = { - 0xe7, 0x6d, 0xfa, 0xd2, 0x20, 0x84, 0xa8, 0xb1, - 0x46, 0x7f, 0xcf, 0x2f, 0xfa, 0x58, 0x36, 0x1b, - 0xec, 0x76, 0x28, 0xed, 0xf5, 0xf3, 0xfd, 0xc0, - 0xe4, 0x80, 0x5d, 0xc4, 0x8c, 0xae, 0xec, 0xa8, - 0x1b, 0x7c, 0x13, 0xc3, 0x0a, 0xdf, 0x52, 0xa3, - 0x65, 0x95, 0x84, 0x73, 0x9a, 0x2d, 0xf4, 0x6b, - 0xe5, 0x89, 0xc5, 0x1c, 0xa1, 0xa4, 0xa8, 0x41, - 0x6d, 0xf6, 0x54, 0x5a, 0x1c, 0xe8, 0xba, 0x00 - }; - - XMEMSET(buf, c1, sizeof(buf)); - - /* SHA3-512 as a single buffer. [FIPS 202] */ - sha3_512_init(&c); - sha3_process(&c, buf, sizeof(buf)); - sha3_done(&c, hash); - if (compare_testvector(hash, sizeof(hash), sha3_512_0xa3_200_times, sizeof(sha3_512_0xa3_200_times), "SHA3-512", 0)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHA3-512 in two steps. [FIPS 202] */ - sha3_512_init(&c); - sha3_process(&c, buf, sizeof(buf) / 2); - sha3_process(&c, buf + sizeof(buf) / 2, sizeof(buf) / 2); - sha3_done(&c, hash); - if (compare_testvector(hash, sizeof(hash), sha3_512_0xa3_200_times, sizeof(sha3_512_0xa3_200_times), "SHA3-512", 1)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHA3-512 byte-by-byte: 200 steps. [FIPS 202] */ - i = 200; - sha3_512_init(&c); - while (i--) { - sha3_process(&c, &c1, 1); - } - sha3_done(&c, hash); - if (compare_testvector(hash, sizeof(hash), sha3_512_0xa3_200_times, sizeof(sha3_512_0xa3_200_times), "SHA3-512", 2)) { - return CRYPT_FAIL_TESTVECTOR; - } - - return CRYPT_OK; -#endif -} - -int sha3_shake_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - unsigned char buf[200], hash[512]; - int i; - hash_state c; - const unsigned char c1 = 0xa3; - unsigned long len; - - const unsigned char shake256_empty[32] = { - 0xab, 0x0b, 0xae, 0x31, 0x63, 0x39, 0x89, 0x43, - 0x04, 0xe3, 0x58, 0x77, 0xb0, 0xc2, 0x8a, 0x9b, - 0x1f, 0xd1, 0x66, 0xc7, 0x96, 0xb9, 0xcc, 0x25, - 0x8a, 0x06, 0x4a, 0x8f, 0x57, 0xe2, 0x7f, 0x2a - }; - const unsigned char shake256_0xa3_200_times[32] = { - 0x6a, 0x1a, 0x9d, 0x78, 0x46, 0x43, 0x6e, 0x4d, - 0xca, 0x57, 0x28, 0xb6, 0xf7, 0x60, 0xee, 0xf0, - 0xca, 0x92, 0xbf, 0x0b, 0xe5, 0x61, 0x5e, 0x96, - 0x95, 0x9d, 0x76, 0x71, 0x97, 0xa0, 0xbe, 0xeb - }; - const unsigned char shake128_empty[32] = { - 0x43, 0xe4, 0x1b, 0x45, 0xa6, 0x53, 0xf2, 0xa5, - 0xc4, 0x49, 0x2c, 0x1a, 0xdd, 0x54, 0x45, 0x12, - 0xdd, 0xa2, 0x52, 0x98, 0x33, 0x46, 0x2b, 0x71, - 0xa4, 0x1a, 0x45, 0xbe, 0x97, 0x29, 0x0b, 0x6f - }; - const unsigned char shake128_0xa3_200_times[32] = { - 0x44, 0xc9, 0xfb, 0x35, 0x9f, 0xd5, 0x6a, 0xc0, - 0xa9, 0xa7, 0x5a, 0x74, 0x3c, 0xff, 0x68, 0x62, - 0xf1, 0x7d, 0x72, 0x59, 0xab, 0x07, 0x52, 0x16, - 0xc0, 0x69, 0x95, 0x11, 0x64, 0x3b, 0x64, 0x39 - }; - - XMEMSET(buf, c1, sizeof(buf)); - - /* SHAKE256 on an empty buffer */ - sha3_shake_init(&c, 256); - for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ - if (compare_testvector(hash, sizeof(shake256_empty), shake256_empty, sizeof(shake256_empty), "SHAKE256", 0)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHAKE256 via sha3_shake_memory [FIPS 202] */ - len = 512; - sha3_shake_memory(256, buf, sizeof(buf), hash, &len); - if (compare_testvector(hash + 480, sizeof(shake256_0xa3_200_times), shake256_0xa3_200_times, sizeof(shake256_0xa3_200_times), "SHAKE256", 1)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHAKE256 as a single buffer. [FIPS 202] */ - sha3_shake_init(&c, 256); - sha3_shake_process(&c, buf, sizeof(buf)); - for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ - if (compare_testvector(hash, sizeof(shake256_0xa3_200_times), shake256_0xa3_200_times, sizeof(shake256_0xa3_200_times), "SHAKE256", 2)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHAKE256 in two steps. [FIPS 202] */ - sha3_shake_init(&c, 256); - sha3_shake_process(&c, buf, sizeof(buf) / 2); - sha3_shake_process(&c, buf + sizeof(buf) / 2, sizeof(buf) / 2); - for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ - if (compare_testvector(hash, sizeof(shake256_0xa3_200_times), shake256_0xa3_200_times, sizeof(shake256_0xa3_200_times), "SHAKE256", 3)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHAKE256 byte-by-byte: 200 steps. [FIPS 202] */ - i = 200; - sha3_shake_init(&c, 256); - while (i--) sha3_shake_process(&c, &c1, 1); - for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ - if (compare_testvector(hash, sizeof(shake256_0xa3_200_times), shake256_0xa3_200_times, sizeof(shake256_0xa3_200_times), "SHAKE256", 4)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHAKE128 on an empty buffer */ - sha3_shake_init(&c, 128); - for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ - if (compare_testvector(hash, sizeof(shake128_empty), shake128_empty, sizeof(shake128_empty), "SHAKE128", 0)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHAKE128 via sha3_shake_memory [FIPS 202] */ - len = 512; - sha3_shake_memory(128, buf, sizeof(buf), hash, &len); - if (compare_testvector(hash + 480, sizeof(shake128_0xa3_200_times), shake128_0xa3_200_times, sizeof(shake128_0xa3_200_times), "SHAKE128", 1)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHAKE128 as a single buffer. [FIPS 202] */ - sha3_shake_init(&c, 128); - sha3_shake_process(&c, buf, sizeof(buf)); - for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ - if (compare_testvector(hash, sizeof(shake128_0xa3_200_times), shake128_0xa3_200_times, sizeof(shake128_0xa3_200_times), "SHAKE128", 2)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHAKE128 in two steps. [FIPS 202] */ - sha3_shake_init(&c, 128); - sha3_shake_process(&c, buf, sizeof(buf) / 2); - sha3_shake_process(&c, buf + sizeof(buf) / 2, sizeof(buf) / 2); - for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ - if (compare_testvector(hash, sizeof(shake128_0xa3_200_times), shake128_0xa3_200_times, sizeof(shake128_0xa3_200_times), "SHAKE128", 3)) { - return CRYPT_FAIL_TESTVECTOR; - } - - /* SHAKE128 byte-by-byte: 200 steps. [FIPS 202] */ - i = 200; - sha3_shake_init(&c, 128); - while (i--) sha3_shake_process(&c, &c1, 1); - for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ - if (compare_testvector(hash, sizeof(shake128_0xa3_200_times), shake128_0xa3_200_times, sizeof(shake128_0xa3_200_times), "SHAKE128", 4)) { - return CRYPT_FAIL_TESTVECTOR; - } - - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/tiger.c b/src/libtomcrypt/src/hashes/tiger.c deleted file mode 100644 index d0b855d9eb..0000000000 --- a/src/libtomcrypt/src/hashes/tiger.c +++ /dev/null @@ -1,812 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -/** - @file tiger.c - Tiger hash function, Tom St Denis -*/ - -#ifdef LTC_TIGER - -const struct ltc_hash_descriptor tiger_desc = -{ - "tiger", - 1, - 24, - 64, - - /* OID */ - { 1, 3, 6, 1, 4, 1, 11591, 12, 2, }, - 9, - - &tiger_init, - &tiger_process, - &tiger_done, - &tiger_test, - NULL -}; - -#define t1 (table) -#define t2 (table+256) -#define t3 (table+256*2) -#define t4 (table+256*3) - -static const ulong64 table[4*256] = { - CONST64(0x02AAB17CF7E90C5E) /* 0 */, CONST64(0xAC424B03E243A8EC) /* 1 */, - CONST64(0x72CD5BE30DD5FCD3) /* 2 */, CONST64(0x6D019B93F6F97F3A) /* 3 */, - CONST64(0xCD9978FFD21F9193) /* 4 */, CONST64(0x7573A1C9708029E2) /* 5 */, - CONST64(0xB164326B922A83C3) /* 6 */, CONST64(0x46883EEE04915870) /* 7 */, - CONST64(0xEAACE3057103ECE6) /* 8 */, CONST64(0xC54169B808A3535C) /* 9 */, - CONST64(0x4CE754918DDEC47C) /* 10 */, CONST64(0x0AA2F4DFDC0DF40C) /* 11 */, - CONST64(0x10B76F18A74DBEFA) /* 12 */, CONST64(0xC6CCB6235AD1AB6A) /* 13 */, - CONST64(0x13726121572FE2FF) /* 14 */, CONST64(0x1A488C6F199D921E) /* 15 */, - CONST64(0x4BC9F9F4DA0007CA) /* 16 */, CONST64(0x26F5E6F6E85241C7) /* 17 */, - CONST64(0x859079DBEA5947B6) /* 18 */, CONST64(0x4F1885C5C99E8C92) /* 19 */, - CONST64(0xD78E761EA96F864B) /* 20 */, CONST64(0x8E36428C52B5C17D) /* 21 */, - CONST64(0x69CF6827373063C1) /* 22 */, CONST64(0xB607C93D9BB4C56E) /* 23 */, - CONST64(0x7D820E760E76B5EA) /* 24 */, CONST64(0x645C9CC6F07FDC42) /* 25 */, - CONST64(0xBF38A078243342E0) /* 26 */, CONST64(0x5F6B343C9D2E7D04) /* 27 */, - CONST64(0xF2C28AEB600B0EC6) /* 28 */, CONST64(0x6C0ED85F7254BCAC) /* 29 */, - CONST64(0x71592281A4DB4FE5) /* 30 */, CONST64(0x1967FA69CE0FED9F) /* 31 */, - CONST64(0xFD5293F8B96545DB) /* 32 */, CONST64(0xC879E9D7F2A7600B) /* 33 */, - CONST64(0x860248920193194E) /* 34 */, CONST64(0xA4F9533B2D9CC0B3) /* 35 */, - CONST64(0x9053836C15957613) /* 36 */, CONST64(0xDB6DCF8AFC357BF1) /* 37 */, - CONST64(0x18BEEA7A7A370F57) /* 38 */, CONST64(0x037117CA50B99066) /* 39 */, - CONST64(0x6AB30A9774424A35) /* 40 */, CONST64(0xF4E92F02E325249B) /* 41 */, - CONST64(0x7739DB07061CCAE1) /* 42 */, CONST64(0xD8F3B49CECA42A05) /* 43 */, - CONST64(0xBD56BE3F51382F73) /* 44 */, CONST64(0x45FAED5843B0BB28) /* 45 */, - CONST64(0x1C813D5C11BF1F83) /* 46 */, CONST64(0x8AF0E4B6D75FA169) /* 47 */, - CONST64(0x33EE18A487AD9999) /* 48 */, CONST64(0x3C26E8EAB1C94410) /* 49 */, - CONST64(0xB510102BC0A822F9) /* 50 */, CONST64(0x141EEF310CE6123B) /* 51 */, - CONST64(0xFC65B90059DDB154) /* 52 */, CONST64(0xE0158640C5E0E607) /* 53 */, - CONST64(0x884E079826C3A3CF) /* 54 */, CONST64(0x930D0D9523C535FD) /* 55 */, - CONST64(0x35638D754E9A2B00) /* 56 */, CONST64(0x4085FCCF40469DD5) /* 57 */, - CONST64(0xC4B17AD28BE23A4C) /* 58 */, CONST64(0xCAB2F0FC6A3E6A2E) /* 59 */, - CONST64(0x2860971A6B943FCD) /* 60 */, CONST64(0x3DDE6EE212E30446) /* 61 */, - CONST64(0x6222F32AE01765AE) /* 62 */, CONST64(0x5D550BB5478308FE) /* 63 */, - CONST64(0xA9EFA98DA0EDA22A) /* 64 */, CONST64(0xC351A71686C40DA7) /* 65 */, - CONST64(0x1105586D9C867C84) /* 66 */, CONST64(0xDCFFEE85FDA22853) /* 67 */, - CONST64(0xCCFBD0262C5EEF76) /* 68 */, CONST64(0xBAF294CB8990D201) /* 69 */, - CONST64(0xE69464F52AFAD975) /* 70 */, CONST64(0x94B013AFDF133E14) /* 71 */, - CONST64(0x06A7D1A32823C958) /* 72 */, CONST64(0x6F95FE5130F61119) /* 73 */, - CONST64(0xD92AB34E462C06C0) /* 74 */, CONST64(0xED7BDE33887C71D2) /* 75 */, - CONST64(0x79746D6E6518393E) /* 76 */, CONST64(0x5BA419385D713329) /* 77 */, - CONST64(0x7C1BA6B948A97564) /* 78 */, CONST64(0x31987C197BFDAC67) /* 79 */, - CONST64(0xDE6C23C44B053D02) /* 80 */, CONST64(0x581C49FED002D64D) /* 81 */, - CONST64(0xDD474D6338261571) /* 82 */, CONST64(0xAA4546C3E473D062) /* 83 */, - CONST64(0x928FCE349455F860) /* 84 */, CONST64(0x48161BBACAAB94D9) /* 85 */, - CONST64(0x63912430770E6F68) /* 86 */, CONST64(0x6EC8A5E602C6641C) /* 87 */, - CONST64(0x87282515337DDD2B) /* 88 */, CONST64(0x2CDA6B42034B701B) /* 89 */, - CONST64(0xB03D37C181CB096D) /* 90 */, CONST64(0xE108438266C71C6F) /* 91 */, - CONST64(0x2B3180C7EB51B255) /* 92 */, CONST64(0xDF92B82F96C08BBC) /* 93 */, - CONST64(0x5C68C8C0A632F3BA) /* 94 */, CONST64(0x5504CC861C3D0556) /* 95 */, - CONST64(0xABBFA4E55FB26B8F) /* 96 */, CONST64(0x41848B0AB3BACEB4) /* 97 */, - CONST64(0xB334A273AA445D32) /* 98 */, CONST64(0xBCA696F0A85AD881) /* 99 */, - CONST64(0x24F6EC65B528D56C) /* 100 */, CONST64(0x0CE1512E90F4524A) /* 101 */, - CONST64(0x4E9DD79D5506D35A) /* 102 */, CONST64(0x258905FAC6CE9779) /* 103 */, - CONST64(0x2019295B3E109B33) /* 104 */, CONST64(0xF8A9478B73A054CC) /* 105 */, - CONST64(0x2924F2F934417EB0) /* 106 */, CONST64(0x3993357D536D1BC4) /* 107 */, - CONST64(0x38A81AC21DB6FF8B) /* 108 */, CONST64(0x47C4FBF17D6016BF) /* 109 */, - CONST64(0x1E0FAADD7667E3F5) /* 110 */, CONST64(0x7ABCFF62938BEB96) /* 111 */, - CONST64(0xA78DAD948FC179C9) /* 112 */, CONST64(0x8F1F98B72911E50D) /* 113 */, - CONST64(0x61E48EAE27121A91) /* 114 */, CONST64(0x4D62F7AD31859808) /* 115 */, - CONST64(0xECEBA345EF5CEAEB) /* 116 */, CONST64(0xF5CEB25EBC9684CE) /* 117 */, - CONST64(0xF633E20CB7F76221) /* 118 */, CONST64(0xA32CDF06AB8293E4) /* 119 */, - CONST64(0x985A202CA5EE2CA4) /* 120 */, CONST64(0xCF0B8447CC8A8FB1) /* 121 */, - CONST64(0x9F765244979859A3) /* 122 */, CONST64(0xA8D516B1A1240017) /* 123 */, - CONST64(0x0BD7BA3EBB5DC726) /* 124 */, CONST64(0xE54BCA55B86ADB39) /* 125 */, - CONST64(0x1D7A3AFD6C478063) /* 126 */, CONST64(0x519EC608E7669EDD) /* 127 */, - CONST64(0x0E5715A2D149AA23) /* 128 */, CONST64(0x177D4571848FF194) /* 129 */, - CONST64(0xEEB55F3241014C22) /* 130 */, CONST64(0x0F5E5CA13A6E2EC2) /* 131 */, - CONST64(0x8029927B75F5C361) /* 132 */, CONST64(0xAD139FABC3D6E436) /* 133 */, - CONST64(0x0D5DF1A94CCF402F) /* 134 */, CONST64(0x3E8BD948BEA5DFC8) /* 135 */, - CONST64(0xA5A0D357BD3FF77E) /* 136 */, CONST64(0xA2D12E251F74F645) /* 137 */, - CONST64(0x66FD9E525E81A082) /* 138 */, CONST64(0x2E0C90CE7F687A49) /* 139 */, - CONST64(0xC2E8BCBEBA973BC5) /* 140 */, CONST64(0x000001BCE509745F) /* 141 */, - CONST64(0x423777BBE6DAB3D6) /* 142 */, CONST64(0xD1661C7EAEF06EB5) /* 143 */, - CONST64(0xA1781F354DAACFD8) /* 144 */, CONST64(0x2D11284A2B16AFFC) /* 145 */, - CONST64(0xF1FC4F67FA891D1F) /* 146 */, CONST64(0x73ECC25DCB920ADA) /* 147 */, - CONST64(0xAE610C22C2A12651) /* 148 */, CONST64(0x96E0A810D356B78A) /* 149 */, - CONST64(0x5A9A381F2FE7870F) /* 150 */, CONST64(0xD5AD62EDE94E5530) /* 151 */, - CONST64(0xD225E5E8368D1427) /* 152 */, CONST64(0x65977B70C7AF4631) /* 153 */, - CONST64(0x99F889B2DE39D74F) /* 154 */, CONST64(0x233F30BF54E1D143) /* 155 */, - CONST64(0x9A9675D3D9A63C97) /* 156 */, CONST64(0x5470554FF334F9A8) /* 157 */, - CONST64(0x166ACB744A4F5688) /* 158 */, CONST64(0x70C74CAAB2E4AEAD) /* 159 */, - CONST64(0xF0D091646F294D12) /* 160 */, CONST64(0x57B82A89684031D1) /* 161 */, - CONST64(0xEFD95A5A61BE0B6B) /* 162 */, CONST64(0x2FBD12E969F2F29A) /* 163 */, - CONST64(0x9BD37013FEFF9FE8) /* 164 */, CONST64(0x3F9B0404D6085A06) /* 165 */, - CONST64(0x4940C1F3166CFE15) /* 166 */, CONST64(0x09542C4DCDF3DEFB) /* 167 */, - CONST64(0xB4C5218385CD5CE3) /* 168 */, CONST64(0xC935B7DC4462A641) /* 169 */, - CONST64(0x3417F8A68ED3B63F) /* 170 */, CONST64(0xB80959295B215B40) /* 171 */, - CONST64(0xF99CDAEF3B8C8572) /* 172 */, CONST64(0x018C0614F8FCB95D) /* 173 */, - CONST64(0x1B14ACCD1A3ACDF3) /* 174 */, CONST64(0x84D471F200BB732D) /* 175 */, - CONST64(0xC1A3110E95E8DA16) /* 176 */, CONST64(0x430A7220BF1A82B8) /* 177 */, - CONST64(0xB77E090D39DF210E) /* 178 */, CONST64(0x5EF4BD9F3CD05E9D) /* 179 */, - CONST64(0x9D4FF6DA7E57A444) /* 180 */, CONST64(0xDA1D60E183D4A5F8) /* 181 */, - CONST64(0xB287C38417998E47) /* 182 */, CONST64(0xFE3EDC121BB31886) /* 183 */, - CONST64(0xC7FE3CCC980CCBEF) /* 184 */, CONST64(0xE46FB590189BFD03) /* 185 */, - CONST64(0x3732FD469A4C57DC) /* 186 */, CONST64(0x7EF700A07CF1AD65) /* 187 */, - CONST64(0x59C64468A31D8859) /* 188 */, CONST64(0x762FB0B4D45B61F6) /* 189 */, - CONST64(0x155BAED099047718) /* 190 */, CONST64(0x68755E4C3D50BAA6) /* 191 */, - CONST64(0xE9214E7F22D8B4DF) /* 192 */, CONST64(0x2ADDBF532EAC95F4) /* 193 */, - CONST64(0x32AE3909B4BD0109) /* 194 */, CONST64(0x834DF537B08E3450) /* 195 */, - CONST64(0xFA209DA84220728D) /* 196 */, CONST64(0x9E691D9B9EFE23F7) /* 197 */, - CONST64(0x0446D288C4AE8D7F) /* 198 */, CONST64(0x7B4CC524E169785B) /* 199 */, - CONST64(0x21D87F0135CA1385) /* 200 */, CONST64(0xCEBB400F137B8AA5) /* 201 */, - CONST64(0x272E2B66580796BE) /* 202 */, CONST64(0x3612264125C2B0DE) /* 203 */, - CONST64(0x057702BDAD1EFBB2) /* 204 */, CONST64(0xD4BABB8EACF84BE9) /* 205 */, - CONST64(0x91583139641BC67B) /* 206 */, CONST64(0x8BDC2DE08036E024) /* 207 */, - CONST64(0x603C8156F49F68ED) /* 208 */, CONST64(0xF7D236F7DBEF5111) /* 209 */, - CONST64(0x9727C4598AD21E80) /* 210 */, CONST64(0xA08A0896670A5FD7) /* 211 */, - CONST64(0xCB4A8F4309EBA9CB) /* 212 */, CONST64(0x81AF564B0F7036A1) /* 213 */, - CONST64(0xC0B99AA778199ABD) /* 214 */, CONST64(0x959F1EC83FC8E952) /* 215 */, - CONST64(0x8C505077794A81B9) /* 216 */, CONST64(0x3ACAAF8F056338F0) /* 217 */, - CONST64(0x07B43F50627A6778) /* 218 */, CONST64(0x4A44AB49F5ECCC77) /* 219 */, - CONST64(0x3BC3D6E4B679EE98) /* 220 */, CONST64(0x9CC0D4D1CF14108C) /* 221 */, - CONST64(0x4406C00B206BC8A0) /* 222 */, CONST64(0x82A18854C8D72D89) /* 223 */, - CONST64(0x67E366B35C3C432C) /* 224 */, CONST64(0xB923DD61102B37F2) /* 225 */, - CONST64(0x56AB2779D884271D) /* 226 */, CONST64(0xBE83E1B0FF1525AF) /* 227 */, - CONST64(0xFB7C65D4217E49A9) /* 228 */, CONST64(0x6BDBE0E76D48E7D4) /* 229 */, - CONST64(0x08DF828745D9179E) /* 230 */, CONST64(0x22EA6A9ADD53BD34) /* 231 */, - CONST64(0xE36E141C5622200A) /* 232 */, CONST64(0x7F805D1B8CB750EE) /* 233 */, - CONST64(0xAFE5C7A59F58E837) /* 234 */, CONST64(0xE27F996A4FB1C23C) /* 235 */, - CONST64(0xD3867DFB0775F0D0) /* 236 */, CONST64(0xD0E673DE6E88891A) /* 237 */, - CONST64(0x123AEB9EAFB86C25) /* 238 */, CONST64(0x30F1D5D5C145B895) /* 239 */, - CONST64(0xBB434A2DEE7269E7) /* 240 */, CONST64(0x78CB67ECF931FA38) /* 241 */, - CONST64(0xF33B0372323BBF9C) /* 242 */, CONST64(0x52D66336FB279C74) /* 243 */, - CONST64(0x505F33AC0AFB4EAA) /* 244 */, CONST64(0xE8A5CD99A2CCE187) /* 245 */, - CONST64(0x534974801E2D30BB) /* 246 */, CONST64(0x8D2D5711D5876D90) /* 247 */, - CONST64(0x1F1A412891BC038E) /* 248 */, CONST64(0xD6E2E71D82E56648) /* 249 */, - CONST64(0x74036C3A497732B7) /* 250 */, CONST64(0x89B67ED96361F5AB) /* 251 */, - CONST64(0xFFED95D8F1EA02A2) /* 252 */, CONST64(0xE72B3BD61464D43D) /* 253 */, - CONST64(0xA6300F170BDC4820) /* 254 */, CONST64(0xEBC18760ED78A77A) /* 255 */, - CONST64(0xE6A6BE5A05A12138) /* 256 */, CONST64(0xB5A122A5B4F87C98) /* 257 */, - CONST64(0x563C6089140B6990) /* 258 */, CONST64(0x4C46CB2E391F5DD5) /* 259 */, - CONST64(0xD932ADDBC9B79434) /* 260 */, CONST64(0x08EA70E42015AFF5) /* 261 */, - CONST64(0xD765A6673E478CF1) /* 262 */, CONST64(0xC4FB757EAB278D99) /* 263 */, - CONST64(0xDF11C6862D6E0692) /* 264 */, CONST64(0xDDEB84F10D7F3B16) /* 265 */, - CONST64(0x6F2EF604A665EA04) /* 266 */, CONST64(0x4A8E0F0FF0E0DFB3) /* 267 */, - CONST64(0xA5EDEEF83DBCBA51) /* 268 */, CONST64(0xFC4F0A2A0EA4371E) /* 269 */, - CONST64(0xE83E1DA85CB38429) /* 270 */, CONST64(0xDC8FF882BA1B1CE2) /* 271 */, - CONST64(0xCD45505E8353E80D) /* 272 */, CONST64(0x18D19A00D4DB0717) /* 273 */, - CONST64(0x34A0CFEDA5F38101) /* 274 */, CONST64(0x0BE77E518887CAF2) /* 275 */, - CONST64(0x1E341438B3C45136) /* 276 */, CONST64(0xE05797F49089CCF9) /* 277 */, - CONST64(0xFFD23F9DF2591D14) /* 278 */, CONST64(0x543DDA228595C5CD) /* 279 */, - CONST64(0x661F81FD99052A33) /* 280 */, CONST64(0x8736E641DB0F7B76) /* 281 */, - CONST64(0x15227725418E5307) /* 282 */, CONST64(0xE25F7F46162EB2FA) /* 283 */, - CONST64(0x48A8B2126C13D9FE) /* 284 */, CONST64(0xAFDC541792E76EEA) /* 285 */, - CONST64(0x03D912BFC6D1898F) /* 286 */, CONST64(0x31B1AAFA1B83F51B) /* 287 */, - CONST64(0xF1AC2796E42AB7D9) /* 288 */, CONST64(0x40A3A7D7FCD2EBAC) /* 289 */, - CONST64(0x1056136D0AFBBCC5) /* 290 */, CONST64(0x7889E1DD9A6D0C85) /* 291 */, - CONST64(0xD33525782A7974AA) /* 292 */, CONST64(0xA7E25D09078AC09B) /* 293 */, - CONST64(0xBD4138B3EAC6EDD0) /* 294 */, CONST64(0x920ABFBE71EB9E70) /* 295 */, - CONST64(0xA2A5D0F54FC2625C) /* 296 */, CONST64(0xC054E36B0B1290A3) /* 297 */, - CONST64(0xF6DD59FF62FE932B) /* 298 */, CONST64(0x3537354511A8AC7D) /* 299 */, - CONST64(0xCA845E9172FADCD4) /* 300 */, CONST64(0x84F82B60329D20DC) /* 301 */, - CONST64(0x79C62CE1CD672F18) /* 302 */, CONST64(0x8B09A2ADD124642C) /* 303 */, - CONST64(0xD0C1E96A19D9E726) /* 304 */, CONST64(0x5A786A9B4BA9500C) /* 305 */, - CONST64(0x0E020336634C43F3) /* 306 */, CONST64(0xC17B474AEB66D822) /* 307 */, - CONST64(0x6A731AE3EC9BAAC2) /* 308 */, CONST64(0x8226667AE0840258) /* 309 */, - CONST64(0x67D4567691CAECA5) /* 310 */, CONST64(0x1D94155C4875ADB5) /* 311 */, - CONST64(0x6D00FD985B813FDF) /* 312 */, CONST64(0x51286EFCB774CD06) /* 313 */, - CONST64(0x5E8834471FA744AF) /* 314 */, CONST64(0xF72CA0AEE761AE2E) /* 315 */, - CONST64(0xBE40E4CDAEE8E09A) /* 316 */, CONST64(0xE9970BBB5118F665) /* 317 */, - CONST64(0x726E4BEB33DF1964) /* 318 */, CONST64(0x703B000729199762) /* 319 */, - CONST64(0x4631D816F5EF30A7) /* 320 */, CONST64(0xB880B5B51504A6BE) /* 321 */, - CONST64(0x641793C37ED84B6C) /* 322 */, CONST64(0x7B21ED77F6E97D96) /* 323 */, - CONST64(0x776306312EF96B73) /* 324 */, CONST64(0xAE528948E86FF3F4) /* 325 */, - CONST64(0x53DBD7F286A3F8F8) /* 326 */, CONST64(0x16CADCE74CFC1063) /* 327 */, - CONST64(0x005C19BDFA52C6DD) /* 328 */, CONST64(0x68868F5D64D46AD3) /* 329 */, - CONST64(0x3A9D512CCF1E186A) /* 330 */, CONST64(0x367E62C2385660AE) /* 331 */, - CONST64(0xE359E7EA77DCB1D7) /* 332 */, CONST64(0x526C0773749ABE6E) /* 333 */, - CONST64(0x735AE5F9D09F734B) /* 334 */, CONST64(0x493FC7CC8A558BA8) /* 335 */, - CONST64(0xB0B9C1533041AB45) /* 336 */, CONST64(0x321958BA470A59BD) /* 337 */, - CONST64(0x852DB00B5F46C393) /* 338 */, CONST64(0x91209B2BD336B0E5) /* 339 */, - CONST64(0x6E604F7D659EF19F) /* 340 */, CONST64(0xB99A8AE2782CCB24) /* 341 */, - CONST64(0xCCF52AB6C814C4C7) /* 342 */, CONST64(0x4727D9AFBE11727B) /* 343 */, - CONST64(0x7E950D0C0121B34D) /* 344 */, CONST64(0x756F435670AD471F) /* 345 */, - CONST64(0xF5ADD442615A6849) /* 346 */, CONST64(0x4E87E09980B9957A) /* 347 */, - CONST64(0x2ACFA1DF50AEE355) /* 348 */, CONST64(0xD898263AFD2FD556) /* 349 */, - CONST64(0xC8F4924DD80C8FD6) /* 350 */, CONST64(0xCF99CA3D754A173A) /* 351 */, - CONST64(0xFE477BACAF91BF3C) /* 352 */, CONST64(0xED5371F6D690C12D) /* 353 */, - CONST64(0x831A5C285E687094) /* 354 */, CONST64(0xC5D3C90A3708A0A4) /* 355 */, - CONST64(0x0F7F903717D06580) /* 356 */, CONST64(0x19F9BB13B8FDF27F) /* 357 */, - CONST64(0xB1BD6F1B4D502843) /* 358 */, CONST64(0x1C761BA38FFF4012) /* 359 */, - CONST64(0x0D1530C4E2E21F3B) /* 360 */, CONST64(0x8943CE69A7372C8A) /* 361 */, - CONST64(0xE5184E11FEB5CE66) /* 362 */, CONST64(0x618BDB80BD736621) /* 363 */, - CONST64(0x7D29BAD68B574D0B) /* 364 */, CONST64(0x81BB613E25E6FE5B) /* 365 */, - CONST64(0x071C9C10BC07913F) /* 366 */, CONST64(0xC7BEEB7909AC2D97) /* 367 */, - CONST64(0xC3E58D353BC5D757) /* 368 */, CONST64(0xEB017892F38F61E8) /* 369 */, - CONST64(0xD4EFFB9C9B1CC21A) /* 370 */, CONST64(0x99727D26F494F7AB) /* 371 */, - CONST64(0xA3E063A2956B3E03) /* 372 */, CONST64(0x9D4A8B9A4AA09C30) /* 373 */, - CONST64(0x3F6AB7D500090FB4) /* 374 */, CONST64(0x9CC0F2A057268AC0) /* 375 */, - CONST64(0x3DEE9D2DEDBF42D1) /* 376 */, CONST64(0x330F49C87960A972) /* 377 */, - CONST64(0xC6B2720287421B41) /* 378 */, CONST64(0x0AC59EC07C00369C) /* 379 */, - CONST64(0xEF4EAC49CB353425) /* 380 */, CONST64(0xF450244EEF0129D8) /* 381 */, - CONST64(0x8ACC46E5CAF4DEB6) /* 382 */, CONST64(0x2FFEAB63989263F7) /* 383 */, - CONST64(0x8F7CB9FE5D7A4578) /* 384 */, CONST64(0x5BD8F7644E634635) /* 385 */, - CONST64(0x427A7315BF2DC900) /* 386 */, CONST64(0x17D0C4AA2125261C) /* 387 */, - CONST64(0x3992486C93518E50) /* 388 */, CONST64(0xB4CBFEE0A2D7D4C3) /* 389 */, - CONST64(0x7C75D6202C5DDD8D) /* 390 */, CONST64(0xDBC295D8E35B6C61) /* 391 */, - CONST64(0x60B369D302032B19) /* 392 */, CONST64(0xCE42685FDCE44132) /* 393 */, - CONST64(0x06F3DDB9DDF65610) /* 394 */, CONST64(0x8EA4D21DB5E148F0) /* 395 */, - CONST64(0x20B0FCE62FCD496F) /* 396 */, CONST64(0x2C1B912358B0EE31) /* 397 */, - CONST64(0xB28317B818F5A308) /* 398 */, CONST64(0xA89C1E189CA6D2CF) /* 399 */, - CONST64(0x0C6B18576AAADBC8) /* 400 */, CONST64(0xB65DEAA91299FAE3) /* 401 */, - CONST64(0xFB2B794B7F1027E7) /* 402 */, CONST64(0x04E4317F443B5BEB) /* 403 */, - CONST64(0x4B852D325939D0A6) /* 404 */, CONST64(0xD5AE6BEEFB207FFC) /* 405 */, - CONST64(0x309682B281C7D374) /* 406 */, CONST64(0xBAE309A194C3B475) /* 407 */, - CONST64(0x8CC3F97B13B49F05) /* 408 */, CONST64(0x98A9422FF8293967) /* 409 */, - CONST64(0x244B16B01076FF7C) /* 410 */, CONST64(0xF8BF571C663D67EE) /* 411 */, - CONST64(0x1F0D6758EEE30DA1) /* 412 */, CONST64(0xC9B611D97ADEB9B7) /* 413 */, - CONST64(0xB7AFD5887B6C57A2) /* 414 */, CONST64(0x6290AE846B984FE1) /* 415 */, - CONST64(0x94DF4CDEACC1A5FD) /* 416 */, CONST64(0x058A5BD1C5483AFF) /* 417 */, - CONST64(0x63166CC142BA3C37) /* 418 */, CONST64(0x8DB8526EB2F76F40) /* 419 */, - CONST64(0xE10880036F0D6D4E) /* 420 */, CONST64(0x9E0523C9971D311D) /* 421 */, - CONST64(0x45EC2824CC7CD691) /* 422 */, CONST64(0x575B8359E62382C9) /* 423 */, - CONST64(0xFA9E400DC4889995) /* 424 */, CONST64(0xD1823ECB45721568) /* 425 */, - CONST64(0xDAFD983B8206082F) /* 426 */, CONST64(0xAA7D29082386A8CB) /* 427 */, - CONST64(0x269FCD4403B87588) /* 428 */, CONST64(0x1B91F5F728BDD1E0) /* 429 */, - CONST64(0xE4669F39040201F6) /* 430 */, CONST64(0x7A1D7C218CF04ADE) /* 431 */, - CONST64(0x65623C29D79CE5CE) /* 432 */, CONST64(0x2368449096C00BB1) /* 433 */, - CONST64(0xAB9BF1879DA503BA) /* 434 */, CONST64(0xBC23ECB1A458058E) /* 435 */, - CONST64(0x9A58DF01BB401ECC) /* 436 */, CONST64(0xA070E868A85F143D) /* 437 */, - CONST64(0x4FF188307DF2239E) /* 438 */, CONST64(0x14D565B41A641183) /* 439 */, - CONST64(0xEE13337452701602) /* 440 */, CONST64(0x950E3DCF3F285E09) /* 441 */, - CONST64(0x59930254B9C80953) /* 442 */, CONST64(0x3BF299408930DA6D) /* 443 */, - CONST64(0xA955943F53691387) /* 444 */, CONST64(0xA15EDECAA9CB8784) /* 445 */, - CONST64(0x29142127352BE9A0) /* 446 */, CONST64(0x76F0371FFF4E7AFB) /* 447 */, - CONST64(0x0239F450274F2228) /* 448 */, CONST64(0xBB073AF01D5E868B) /* 449 */, - CONST64(0xBFC80571C10E96C1) /* 450 */, CONST64(0xD267088568222E23) /* 451 */, - CONST64(0x9671A3D48E80B5B0) /* 452 */, CONST64(0x55B5D38AE193BB81) /* 453 */, - CONST64(0x693AE2D0A18B04B8) /* 454 */, CONST64(0x5C48B4ECADD5335F) /* 455 */, - CONST64(0xFD743B194916A1CA) /* 456 */, CONST64(0x2577018134BE98C4) /* 457 */, - CONST64(0xE77987E83C54A4AD) /* 458 */, CONST64(0x28E11014DA33E1B9) /* 459 */, - CONST64(0x270CC59E226AA213) /* 460 */, CONST64(0x71495F756D1A5F60) /* 461 */, - CONST64(0x9BE853FB60AFEF77) /* 462 */, CONST64(0xADC786A7F7443DBF) /* 463 */, - CONST64(0x0904456173B29A82) /* 464 */, CONST64(0x58BC7A66C232BD5E) /* 465 */, - CONST64(0xF306558C673AC8B2) /* 466 */, CONST64(0x41F639C6B6C9772A) /* 467 */, - CONST64(0x216DEFE99FDA35DA) /* 468 */, CONST64(0x11640CC71C7BE615) /* 469 */, - CONST64(0x93C43694565C5527) /* 470 */, CONST64(0xEA038E6246777839) /* 471 */, - CONST64(0xF9ABF3CE5A3E2469) /* 472 */, CONST64(0x741E768D0FD312D2) /* 473 */, - CONST64(0x0144B883CED652C6) /* 474 */, CONST64(0xC20B5A5BA33F8552) /* 475 */, - CONST64(0x1AE69633C3435A9D) /* 476 */, CONST64(0x97A28CA4088CFDEC) /* 477 */, - CONST64(0x8824A43C1E96F420) /* 478 */, CONST64(0x37612FA66EEEA746) /* 479 */, - CONST64(0x6B4CB165F9CF0E5A) /* 480 */, CONST64(0x43AA1C06A0ABFB4A) /* 481 */, - CONST64(0x7F4DC26FF162796B) /* 482 */, CONST64(0x6CBACC8E54ED9B0F) /* 483 */, - CONST64(0xA6B7FFEFD2BB253E) /* 484 */, CONST64(0x2E25BC95B0A29D4F) /* 485 */, - CONST64(0x86D6A58BDEF1388C) /* 486 */, CONST64(0xDED74AC576B6F054) /* 487 */, - CONST64(0x8030BDBC2B45805D) /* 488 */, CONST64(0x3C81AF70E94D9289) /* 489 */, - CONST64(0x3EFF6DDA9E3100DB) /* 490 */, CONST64(0xB38DC39FDFCC8847) /* 491 */, - CONST64(0x123885528D17B87E) /* 492 */, CONST64(0xF2DA0ED240B1B642) /* 493 */, - CONST64(0x44CEFADCD54BF9A9) /* 494 */, CONST64(0x1312200E433C7EE6) /* 495 */, - CONST64(0x9FFCC84F3A78C748) /* 496 */, CONST64(0xF0CD1F72248576BB) /* 497 */, - CONST64(0xEC6974053638CFE4) /* 498 */, CONST64(0x2BA7B67C0CEC4E4C) /* 499 */, - CONST64(0xAC2F4DF3E5CE32ED) /* 500 */, CONST64(0xCB33D14326EA4C11) /* 501 */, - CONST64(0xA4E9044CC77E58BC) /* 502 */, CONST64(0x5F513293D934FCEF) /* 503 */, - CONST64(0x5DC9645506E55444) /* 504 */, CONST64(0x50DE418F317DE40A) /* 505 */, - CONST64(0x388CB31A69DDE259) /* 506 */, CONST64(0x2DB4A83455820A86) /* 507 */, - CONST64(0x9010A91E84711AE9) /* 508 */, CONST64(0x4DF7F0B7B1498371) /* 509 */, - CONST64(0xD62A2EABC0977179) /* 510 */, CONST64(0x22FAC097AA8D5C0E) /* 511 */, - CONST64(0xF49FCC2FF1DAF39B) /* 512 */, CONST64(0x487FD5C66FF29281) /* 513 */, - CONST64(0xE8A30667FCDCA83F) /* 514 */, CONST64(0x2C9B4BE3D2FCCE63) /* 515 */, - CONST64(0xDA3FF74B93FBBBC2) /* 516 */, CONST64(0x2FA165D2FE70BA66) /* 517 */, - CONST64(0xA103E279970E93D4) /* 518 */, CONST64(0xBECDEC77B0E45E71) /* 519 */, - CONST64(0xCFB41E723985E497) /* 520 */, CONST64(0xB70AAA025EF75017) /* 521 */, - CONST64(0xD42309F03840B8E0) /* 522 */, CONST64(0x8EFC1AD035898579) /* 523 */, - CONST64(0x96C6920BE2B2ABC5) /* 524 */, CONST64(0x66AF4163375A9172) /* 525 */, - CONST64(0x2174ABDCCA7127FB) /* 526 */, CONST64(0xB33CCEA64A72FF41) /* 527 */, - CONST64(0xF04A4933083066A5) /* 528 */, CONST64(0x8D970ACDD7289AF5) /* 529 */, - CONST64(0x8F96E8E031C8C25E) /* 530 */, CONST64(0xF3FEC02276875D47) /* 531 */, - CONST64(0xEC7BF310056190DD) /* 532 */, CONST64(0xF5ADB0AEBB0F1491) /* 533 */, - CONST64(0x9B50F8850FD58892) /* 534 */, CONST64(0x4975488358B74DE8) /* 535 */, - CONST64(0xA3354FF691531C61) /* 536 */, CONST64(0x0702BBE481D2C6EE) /* 537 */, - CONST64(0x89FB24057DEDED98) /* 538 */, CONST64(0xAC3075138596E902) /* 539 */, - CONST64(0x1D2D3580172772ED) /* 540 */, CONST64(0xEB738FC28E6BC30D) /* 541 */, - CONST64(0x5854EF8F63044326) /* 542 */, CONST64(0x9E5C52325ADD3BBE) /* 543 */, - CONST64(0x90AA53CF325C4623) /* 544 */, CONST64(0xC1D24D51349DD067) /* 545 */, - CONST64(0x2051CFEEA69EA624) /* 546 */, CONST64(0x13220F0A862E7E4F) /* 547 */, - CONST64(0xCE39399404E04864) /* 548 */, CONST64(0xD9C42CA47086FCB7) /* 549 */, - CONST64(0x685AD2238A03E7CC) /* 550 */, CONST64(0x066484B2AB2FF1DB) /* 551 */, - CONST64(0xFE9D5D70EFBF79EC) /* 552 */, CONST64(0x5B13B9DD9C481854) /* 553 */, - CONST64(0x15F0D475ED1509AD) /* 554 */, CONST64(0x0BEBCD060EC79851) /* 555 */, - CONST64(0xD58C6791183AB7F8) /* 556 */, CONST64(0xD1187C5052F3EEE4) /* 557 */, - CONST64(0xC95D1192E54E82FF) /* 558 */, CONST64(0x86EEA14CB9AC6CA2) /* 559 */, - CONST64(0x3485BEB153677D5D) /* 560 */, CONST64(0xDD191D781F8C492A) /* 561 */, - CONST64(0xF60866BAA784EBF9) /* 562 */, CONST64(0x518F643BA2D08C74) /* 563 */, - CONST64(0x8852E956E1087C22) /* 564 */, CONST64(0xA768CB8DC410AE8D) /* 565 */, - CONST64(0x38047726BFEC8E1A) /* 566 */, CONST64(0xA67738B4CD3B45AA) /* 567 */, - CONST64(0xAD16691CEC0DDE19) /* 568 */, CONST64(0xC6D4319380462E07) /* 569 */, - CONST64(0xC5A5876D0BA61938) /* 570 */, CONST64(0x16B9FA1FA58FD840) /* 571 */, - CONST64(0x188AB1173CA74F18) /* 572 */, CONST64(0xABDA2F98C99C021F) /* 573 */, - CONST64(0x3E0580AB134AE816) /* 574 */, CONST64(0x5F3B05B773645ABB) /* 575 */, - CONST64(0x2501A2BE5575F2F6) /* 576 */, CONST64(0x1B2F74004E7E8BA9) /* 577 */, - CONST64(0x1CD7580371E8D953) /* 578 */, CONST64(0x7F6ED89562764E30) /* 579 */, - CONST64(0xB15926FF596F003D) /* 580 */, CONST64(0x9F65293DA8C5D6B9) /* 581 */, - CONST64(0x6ECEF04DD690F84C) /* 582 */, CONST64(0x4782275FFF33AF88) /* 583 */, - CONST64(0xE41433083F820801) /* 584 */, CONST64(0xFD0DFE409A1AF9B5) /* 585 */, - CONST64(0x4325A3342CDB396B) /* 586 */, CONST64(0x8AE77E62B301B252) /* 587 */, - CONST64(0xC36F9E9F6655615A) /* 588 */, CONST64(0x85455A2D92D32C09) /* 589 */, - CONST64(0xF2C7DEA949477485) /* 590 */, CONST64(0x63CFB4C133A39EBA) /* 591 */, - CONST64(0x83B040CC6EBC5462) /* 592 */, CONST64(0x3B9454C8FDB326B0) /* 593 */, - CONST64(0x56F56A9E87FFD78C) /* 594 */, CONST64(0x2DC2940D99F42BC6) /* 595 */, - CONST64(0x98F7DF096B096E2D) /* 596 */, CONST64(0x19A6E01E3AD852BF) /* 597 */, - CONST64(0x42A99CCBDBD4B40B) /* 598 */, CONST64(0xA59998AF45E9C559) /* 599 */, - CONST64(0x366295E807D93186) /* 600 */, CONST64(0x6B48181BFAA1F773) /* 601 */, - CONST64(0x1FEC57E2157A0A1D) /* 602 */, CONST64(0x4667446AF6201AD5) /* 603 */, - CONST64(0xE615EBCACFB0F075) /* 604 */, CONST64(0xB8F31F4F68290778) /* 605 */, - CONST64(0x22713ED6CE22D11E) /* 606 */, CONST64(0x3057C1A72EC3C93B) /* 607 */, - CONST64(0xCB46ACC37C3F1F2F) /* 608 */, CONST64(0xDBB893FD02AAF50E) /* 609 */, - CONST64(0x331FD92E600B9FCF) /* 610 */, CONST64(0xA498F96148EA3AD6) /* 611 */, - CONST64(0xA8D8426E8B6A83EA) /* 612 */, CONST64(0xA089B274B7735CDC) /* 613 */, - CONST64(0x87F6B3731E524A11) /* 614 */, CONST64(0x118808E5CBC96749) /* 615 */, - CONST64(0x9906E4C7B19BD394) /* 616 */, CONST64(0xAFED7F7E9B24A20C) /* 617 */, - CONST64(0x6509EADEEB3644A7) /* 618 */, CONST64(0x6C1EF1D3E8EF0EDE) /* 619 */, - CONST64(0xB9C97D43E9798FB4) /* 620 */, CONST64(0xA2F2D784740C28A3) /* 621 */, - CONST64(0x7B8496476197566F) /* 622 */, CONST64(0x7A5BE3E6B65F069D) /* 623 */, - CONST64(0xF96330ED78BE6F10) /* 624 */, CONST64(0xEEE60DE77A076A15) /* 625 */, - CONST64(0x2B4BEE4AA08B9BD0) /* 626 */, CONST64(0x6A56A63EC7B8894E) /* 627 */, - CONST64(0x02121359BA34FEF4) /* 628 */, CONST64(0x4CBF99F8283703FC) /* 629 */, - CONST64(0x398071350CAF30C8) /* 630 */, CONST64(0xD0A77A89F017687A) /* 631 */, - CONST64(0xF1C1A9EB9E423569) /* 632 */, CONST64(0x8C7976282DEE8199) /* 633 */, - CONST64(0x5D1737A5DD1F7ABD) /* 634 */, CONST64(0x4F53433C09A9FA80) /* 635 */, - CONST64(0xFA8B0C53DF7CA1D9) /* 636 */, CONST64(0x3FD9DCBC886CCB77) /* 637 */, - CONST64(0xC040917CA91B4720) /* 638 */, CONST64(0x7DD00142F9D1DCDF) /* 639 */, - CONST64(0x8476FC1D4F387B58) /* 640 */, CONST64(0x23F8E7C5F3316503) /* 641 */, - CONST64(0x032A2244E7E37339) /* 642 */, CONST64(0x5C87A5D750F5A74B) /* 643 */, - CONST64(0x082B4CC43698992E) /* 644 */, CONST64(0xDF917BECB858F63C) /* 645 */, - CONST64(0x3270B8FC5BF86DDA) /* 646 */, CONST64(0x10AE72BB29B5DD76) /* 647 */, - CONST64(0x576AC94E7700362B) /* 648 */, CONST64(0x1AD112DAC61EFB8F) /* 649 */, - CONST64(0x691BC30EC5FAA427) /* 650 */, CONST64(0xFF246311CC327143) /* 651 */, - CONST64(0x3142368E30E53206) /* 652 */, CONST64(0x71380E31E02CA396) /* 653 */, - CONST64(0x958D5C960AAD76F1) /* 654 */, CONST64(0xF8D6F430C16DA536) /* 655 */, - CONST64(0xC8FFD13F1BE7E1D2) /* 656 */, CONST64(0x7578AE66004DDBE1) /* 657 */, - CONST64(0x05833F01067BE646) /* 658 */, CONST64(0xBB34B5AD3BFE586D) /* 659 */, - CONST64(0x095F34C9A12B97F0) /* 660 */, CONST64(0x247AB64525D60CA8) /* 661 */, - CONST64(0xDCDBC6F3017477D1) /* 662 */, CONST64(0x4A2E14D4DECAD24D) /* 663 */, - CONST64(0xBDB5E6D9BE0A1EEB) /* 664 */, CONST64(0x2A7E70F7794301AB) /* 665 */, - CONST64(0xDEF42D8A270540FD) /* 666 */, CONST64(0x01078EC0A34C22C1) /* 667 */, - CONST64(0xE5DE511AF4C16387) /* 668 */, CONST64(0x7EBB3A52BD9A330A) /* 669 */, - CONST64(0x77697857AA7D6435) /* 670 */, CONST64(0x004E831603AE4C32) /* 671 */, - CONST64(0xE7A21020AD78E312) /* 672 */, CONST64(0x9D41A70C6AB420F2) /* 673 */, - CONST64(0x28E06C18EA1141E6) /* 674 */, CONST64(0xD2B28CBD984F6B28) /* 675 */, - CONST64(0x26B75F6C446E9D83) /* 676 */, CONST64(0xBA47568C4D418D7F) /* 677 */, - CONST64(0xD80BADBFE6183D8E) /* 678 */, CONST64(0x0E206D7F5F166044) /* 679 */, - CONST64(0xE258A43911CBCA3E) /* 680 */, CONST64(0x723A1746B21DC0BC) /* 681 */, - CONST64(0xC7CAA854F5D7CDD3) /* 682 */, CONST64(0x7CAC32883D261D9C) /* 683 */, - CONST64(0x7690C26423BA942C) /* 684 */, CONST64(0x17E55524478042B8) /* 685 */, - CONST64(0xE0BE477656A2389F) /* 686 */, CONST64(0x4D289B5E67AB2DA0) /* 687 */, - CONST64(0x44862B9C8FBBFD31) /* 688 */, CONST64(0xB47CC8049D141365) /* 689 */, - CONST64(0x822C1B362B91C793) /* 690 */, CONST64(0x4EB14655FB13DFD8) /* 691 */, - CONST64(0x1ECBBA0714E2A97B) /* 692 */, CONST64(0x6143459D5CDE5F14) /* 693 */, - CONST64(0x53A8FBF1D5F0AC89) /* 694 */, CONST64(0x97EA04D81C5E5B00) /* 695 */, - CONST64(0x622181A8D4FDB3F3) /* 696 */, CONST64(0xE9BCD341572A1208) /* 697 */, - CONST64(0x1411258643CCE58A) /* 698 */, CONST64(0x9144C5FEA4C6E0A4) /* 699 */, - CONST64(0x0D33D06565CF620F) /* 700 */, CONST64(0x54A48D489F219CA1) /* 701 */, - CONST64(0xC43E5EAC6D63C821) /* 702 */, CONST64(0xA9728B3A72770DAF) /* 703 */, - CONST64(0xD7934E7B20DF87EF) /* 704 */, CONST64(0xE35503B61A3E86E5) /* 705 */, - CONST64(0xCAE321FBC819D504) /* 706 */, CONST64(0x129A50B3AC60BFA6) /* 707 */, - CONST64(0xCD5E68EA7E9FB6C3) /* 708 */, CONST64(0xB01C90199483B1C7) /* 709 */, - CONST64(0x3DE93CD5C295376C) /* 710 */, CONST64(0xAED52EDF2AB9AD13) /* 711 */, - CONST64(0x2E60F512C0A07884) /* 712 */, CONST64(0xBC3D86A3E36210C9) /* 713 */, - CONST64(0x35269D9B163951CE) /* 714 */, CONST64(0x0C7D6E2AD0CDB5FA) /* 715 */, - CONST64(0x59E86297D87F5733) /* 716 */, CONST64(0x298EF221898DB0E7) /* 717 */, - CONST64(0x55000029D1A5AA7E) /* 718 */, CONST64(0x8BC08AE1B5061B45) /* 719 */, - CONST64(0xC2C31C2B6C92703A) /* 720 */, CONST64(0x94CC596BAF25EF42) /* 721 */, - CONST64(0x0A1D73DB22540456) /* 722 */, CONST64(0x04B6A0F9D9C4179A) /* 723 */, - CONST64(0xEFFDAFA2AE3D3C60) /* 724 */, CONST64(0xF7C8075BB49496C4) /* 725 */, - CONST64(0x9CC5C7141D1CD4E3) /* 726 */, CONST64(0x78BD1638218E5534) /* 727 */, - CONST64(0xB2F11568F850246A) /* 728 */, CONST64(0xEDFABCFA9502BC29) /* 729 */, - CONST64(0x796CE5F2DA23051B) /* 730 */, CONST64(0xAAE128B0DC93537C) /* 731 */, - CONST64(0x3A493DA0EE4B29AE) /* 732 */, CONST64(0xB5DF6B2C416895D7) /* 733 */, - CONST64(0xFCABBD25122D7F37) /* 734 */, CONST64(0x70810B58105DC4B1) /* 735 */, - CONST64(0xE10FDD37F7882A90) /* 736 */, CONST64(0x524DCAB5518A3F5C) /* 737 */, - CONST64(0x3C9E85878451255B) /* 738 */, CONST64(0x4029828119BD34E2) /* 739 */, - CONST64(0x74A05B6F5D3CECCB) /* 740 */, CONST64(0xB610021542E13ECA) /* 741 */, - CONST64(0x0FF979D12F59E2AC) /* 742 */, CONST64(0x6037DA27E4F9CC50) /* 743 */, - CONST64(0x5E92975A0DF1847D) /* 744 */, CONST64(0xD66DE190D3E623FE) /* 745 */, - CONST64(0x5032D6B87B568048) /* 746 */, CONST64(0x9A36B7CE8235216E) /* 747 */, - CONST64(0x80272A7A24F64B4A) /* 748 */, CONST64(0x93EFED8B8C6916F7) /* 749 */, - CONST64(0x37DDBFF44CCE1555) /* 750 */, CONST64(0x4B95DB5D4B99BD25) /* 751 */, - CONST64(0x92D3FDA169812FC0) /* 752 */, CONST64(0xFB1A4A9A90660BB6) /* 753 */, - CONST64(0x730C196946A4B9B2) /* 754 */, CONST64(0x81E289AA7F49DA68) /* 755 */, - CONST64(0x64669A0F83B1A05F) /* 756 */, CONST64(0x27B3FF7D9644F48B) /* 757 */, - CONST64(0xCC6B615C8DB675B3) /* 758 */, CONST64(0x674F20B9BCEBBE95) /* 759 */, - CONST64(0x6F31238275655982) /* 760 */, CONST64(0x5AE488713E45CF05) /* 761 */, - CONST64(0xBF619F9954C21157) /* 762 */, CONST64(0xEABAC46040A8EAE9) /* 763 */, - CONST64(0x454C6FE9F2C0C1CD) /* 764 */, CONST64(0x419CF6496412691C) /* 765 */, - CONST64(0xD3DC3BEF265B0F70) /* 766 */, CONST64(0x6D0E60F5C3578A9E) /* 767 */, - CONST64(0x5B0E608526323C55) /* 768 */, CONST64(0x1A46C1A9FA1B59F5) /* 769 */, - CONST64(0xA9E245A17C4C8FFA) /* 770 */, CONST64(0x65CA5159DB2955D7) /* 771 */, - CONST64(0x05DB0A76CE35AFC2) /* 772 */, CONST64(0x81EAC77EA9113D45) /* 773 */, - CONST64(0x528EF88AB6AC0A0D) /* 774 */, CONST64(0xA09EA253597BE3FF) /* 775 */, - CONST64(0x430DDFB3AC48CD56) /* 776 */, CONST64(0xC4B3A67AF45CE46F) /* 777 */, - CONST64(0x4ECECFD8FBE2D05E) /* 778 */, CONST64(0x3EF56F10B39935F0) /* 779 */, - CONST64(0x0B22D6829CD619C6) /* 780 */, CONST64(0x17FD460A74DF2069) /* 781 */, - CONST64(0x6CF8CC8E8510ED40) /* 782 */, CONST64(0xD6C824BF3A6ECAA7) /* 783 */, - CONST64(0x61243D581A817049) /* 784 */, CONST64(0x048BACB6BBC163A2) /* 785 */, - CONST64(0xD9A38AC27D44CC32) /* 786 */, CONST64(0x7FDDFF5BAAF410AB) /* 787 */, - CONST64(0xAD6D495AA804824B) /* 788 */, CONST64(0xE1A6A74F2D8C9F94) /* 789 */, - CONST64(0xD4F7851235DEE8E3) /* 790 */, CONST64(0xFD4B7F886540D893) /* 791 */, - CONST64(0x247C20042AA4BFDA) /* 792 */, CONST64(0x096EA1C517D1327C) /* 793 */, - CONST64(0xD56966B4361A6685) /* 794 */, CONST64(0x277DA5C31221057D) /* 795 */, - CONST64(0x94D59893A43ACFF7) /* 796 */, CONST64(0x64F0C51CCDC02281) /* 797 */, - CONST64(0x3D33BCC4FF6189DB) /* 798 */, CONST64(0xE005CB184CE66AF1) /* 799 */, - CONST64(0xFF5CCD1D1DB99BEA) /* 800 */, CONST64(0xB0B854A7FE42980F) /* 801 */, - CONST64(0x7BD46A6A718D4B9F) /* 802 */, CONST64(0xD10FA8CC22A5FD8C) /* 803 */, - CONST64(0xD31484952BE4BD31) /* 804 */, CONST64(0xC7FA975FCB243847) /* 805 */, - CONST64(0x4886ED1E5846C407) /* 806 */, CONST64(0x28CDDB791EB70B04) /* 807 */, - CONST64(0xC2B00BE2F573417F) /* 808 */, CONST64(0x5C9590452180F877) /* 809 */, - CONST64(0x7A6BDDFFF370EB00) /* 810 */, CONST64(0xCE509E38D6D9D6A4) /* 811 */, - CONST64(0xEBEB0F00647FA702) /* 812 */, CONST64(0x1DCC06CF76606F06) /* 813 */, - CONST64(0xE4D9F28BA286FF0A) /* 814 */, CONST64(0xD85A305DC918C262) /* 815 */, - CONST64(0x475B1D8732225F54) /* 816 */, CONST64(0x2D4FB51668CCB5FE) /* 817 */, - CONST64(0xA679B9D9D72BBA20) /* 818 */, CONST64(0x53841C0D912D43A5) /* 819 */, - CONST64(0x3B7EAA48BF12A4E8) /* 820 */, CONST64(0x781E0E47F22F1DDF) /* 821 */, - CONST64(0xEFF20CE60AB50973) /* 822 */, CONST64(0x20D261D19DFFB742) /* 823 */, - CONST64(0x16A12B03062A2E39) /* 824 */, CONST64(0x1960EB2239650495) /* 825 */, - CONST64(0x251C16FED50EB8B8) /* 826 */, CONST64(0x9AC0C330F826016E) /* 827 */, - CONST64(0xED152665953E7671) /* 828 */, CONST64(0x02D63194A6369570) /* 829 */, - CONST64(0x5074F08394B1C987) /* 830 */, CONST64(0x70BA598C90B25CE1) /* 831 */, - CONST64(0x794A15810B9742F6) /* 832 */, CONST64(0x0D5925E9FCAF8C6C) /* 833 */, - CONST64(0x3067716CD868744E) /* 834 */, CONST64(0x910AB077E8D7731B) /* 835 */, - CONST64(0x6A61BBDB5AC42F61) /* 836 */, CONST64(0x93513EFBF0851567) /* 837 */, - CONST64(0xF494724B9E83E9D5) /* 838 */, CONST64(0xE887E1985C09648D) /* 839 */, - CONST64(0x34B1D3C675370CFD) /* 840 */, CONST64(0xDC35E433BC0D255D) /* 841 */, - CONST64(0xD0AAB84234131BE0) /* 842 */, CONST64(0x08042A50B48B7EAF) /* 843 */, - CONST64(0x9997C4EE44A3AB35) /* 844 */, CONST64(0x829A7B49201799D0) /* 845 */, - CONST64(0x263B8307B7C54441) /* 846 */, CONST64(0x752F95F4FD6A6CA6) /* 847 */, - CONST64(0x927217402C08C6E5) /* 848 */, CONST64(0x2A8AB754A795D9EE) /* 849 */, - CONST64(0xA442F7552F72943D) /* 850 */, CONST64(0x2C31334E19781208) /* 851 */, - CONST64(0x4FA98D7CEAEE6291) /* 852 */, CONST64(0x55C3862F665DB309) /* 853 */, - CONST64(0xBD0610175D53B1F3) /* 854 */, CONST64(0x46FE6CB840413F27) /* 855 */, - CONST64(0x3FE03792DF0CFA59) /* 856 */, CONST64(0xCFE700372EB85E8F) /* 857 */, - CONST64(0xA7BE29E7ADBCE118) /* 858 */, CONST64(0xE544EE5CDE8431DD) /* 859 */, - CONST64(0x8A781B1B41F1873E) /* 860 */, CONST64(0xA5C94C78A0D2F0E7) /* 861 */, - CONST64(0x39412E2877B60728) /* 862 */, CONST64(0xA1265EF3AFC9A62C) /* 863 */, - CONST64(0xBCC2770C6A2506C5) /* 864 */, CONST64(0x3AB66DD5DCE1CE12) /* 865 */, - CONST64(0xE65499D04A675B37) /* 866 */, CONST64(0x7D8F523481BFD216) /* 867 */, - CONST64(0x0F6F64FCEC15F389) /* 868 */, CONST64(0x74EFBE618B5B13C8) /* 869 */, - CONST64(0xACDC82B714273E1D) /* 870 */, CONST64(0xDD40BFE003199D17) /* 871 */, - CONST64(0x37E99257E7E061F8) /* 872 */, CONST64(0xFA52626904775AAA) /* 873 */, - CONST64(0x8BBBF63A463D56F9) /* 874 */, CONST64(0xF0013F1543A26E64) /* 875 */, - CONST64(0xA8307E9F879EC898) /* 876 */, CONST64(0xCC4C27A4150177CC) /* 877 */, - CONST64(0x1B432F2CCA1D3348) /* 878 */, CONST64(0xDE1D1F8F9F6FA013) /* 879 */, - CONST64(0x606602A047A7DDD6) /* 880 */, CONST64(0xD237AB64CC1CB2C7) /* 881 */, - CONST64(0x9B938E7225FCD1D3) /* 882 */, CONST64(0xEC4E03708E0FF476) /* 883 */, - CONST64(0xFEB2FBDA3D03C12D) /* 884 */, CONST64(0xAE0BCED2EE43889A) /* 885 */, - CONST64(0x22CB8923EBFB4F43) /* 886 */, CONST64(0x69360D013CF7396D) /* 887 */, - CONST64(0x855E3602D2D4E022) /* 888 */, CONST64(0x073805BAD01F784C) /* 889 */, - CONST64(0x33E17A133852F546) /* 890 */, CONST64(0xDF4874058AC7B638) /* 891 */, - CONST64(0xBA92B29C678AA14A) /* 892 */, CONST64(0x0CE89FC76CFAADCD) /* 893 */, - CONST64(0x5F9D4E0908339E34) /* 894 */, CONST64(0xF1AFE9291F5923B9) /* 895 */, - CONST64(0x6E3480F60F4A265F) /* 896 */, CONST64(0xEEBF3A2AB29B841C) /* 897 */, - CONST64(0xE21938A88F91B4AD) /* 898 */, CONST64(0x57DFEFF845C6D3C3) /* 899 */, - CONST64(0x2F006B0BF62CAAF2) /* 900 */, CONST64(0x62F479EF6F75EE78) /* 901 */, - CONST64(0x11A55AD41C8916A9) /* 902 */, CONST64(0xF229D29084FED453) /* 903 */, - CONST64(0x42F1C27B16B000E6) /* 904 */, CONST64(0x2B1F76749823C074) /* 905 */, - CONST64(0x4B76ECA3C2745360) /* 906 */, CONST64(0x8C98F463B91691BD) /* 907 */, - CONST64(0x14BCC93CF1ADE66A) /* 908 */, CONST64(0x8885213E6D458397) /* 909 */, - CONST64(0x8E177DF0274D4711) /* 910 */, CONST64(0xB49B73B5503F2951) /* 911 */, - CONST64(0x10168168C3F96B6B) /* 912 */, CONST64(0x0E3D963B63CAB0AE) /* 913 */, - CONST64(0x8DFC4B5655A1DB14) /* 914 */, CONST64(0xF789F1356E14DE5C) /* 915 */, - CONST64(0x683E68AF4E51DAC1) /* 916 */, CONST64(0xC9A84F9D8D4B0FD9) /* 917 */, - CONST64(0x3691E03F52A0F9D1) /* 918 */, CONST64(0x5ED86E46E1878E80) /* 919 */, - CONST64(0x3C711A0E99D07150) /* 920 */, CONST64(0x5A0865B20C4E9310) /* 921 */, - CONST64(0x56FBFC1FE4F0682E) /* 922 */, CONST64(0xEA8D5DE3105EDF9B) /* 923 */, - CONST64(0x71ABFDB12379187A) /* 924 */, CONST64(0x2EB99DE1BEE77B9C) /* 925 */, - CONST64(0x21ECC0EA33CF4523) /* 926 */, CONST64(0x59A4D7521805C7A1) /* 927 */, - CONST64(0x3896F5EB56AE7C72) /* 928 */, CONST64(0xAA638F3DB18F75DC) /* 929 */, - CONST64(0x9F39358DABE9808E) /* 930 */, CONST64(0xB7DEFA91C00B72AC) /* 931 */, - CONST64(0x6B5541FD62492D92) /* 932 */, CONST64(0x6DC6DEE8F92E4D5B) /* 933 */, - CONST64(0x353F57ABC4BEEA7E) /* 934 */, CONST64(0x735769D6DA5690CE) /* 935 */, - CONST64(0x0A234AA642391484) /* 936 */, CONST64(0xF6F9508028F80D9D) /* 937 */, - CONST64(0xB8E319A27AB3F215) /* 938 */, CONST64(0x31AD9C1151341A4D) /* 939 */, - CONST64(0x773C22A57BEF5805) /* 940 */, CONST64(0x45C7561A07968633) /* 941 */, - CONST64(0xF913DA9E249DBE36) /* 942 */, CONST64(0xDA652D9B78A64C68) /* 943 */, - CONST64(0x4C27A97F3BC334EF) /* 944 */, CONST64(0x76621220E66B17F4) /* 945 */, - CONST64(0x967743899ACD7D0B) /* 946 */, CONST64(0xF3EE5BCAE0ED6782) /* 947 */, - CONST64(0x409F753600C879FC) /* 948 */, CONST64(0x06D09A39B5926DB6) /* 949 */, - CONST64(0x6F83AEB0317AC588) /* 950 */, CONST64(0x01E6CA4A86381F21) /* 951 */, - CONST64(0x66FF3462D19F3025) /* 952 */, CONST64(0x72207C24DDFD3BFB) /* 953 */, - CONST64(0x4AF6B6D3E2ECE2EB) /* 954 */, CONST64(0x9C994DBEC7EA08DE) /* 955 */, - CONST64(0x49ACE597B09A8BC4) /* 956 */, CONST64(0xB38C4766CF0797BA) /* 957 */, - CONST64(0x131B9373C57C2A75) /* 958 */, CONST64(0xB1822CCE61931E58) /* 959 */, - CONST64(0x9D7555B909BA1C0C) /* 960 */, CONST64(0x127FAFDD937D11D2) /* 961 */, - CONST64(0x29DA3BADC66D92E4) /* 962 */, CONST64(0xA2C1D57154C2ECBC) /* 963 */, - CONST64(0x58C5134D82F6FE24) /* 964 */, CONST64(0x1C3AE3515B62274F) /* 965 */, - CONST64(0xE907C82E01CB8126) /* 966 */, CONST64(0xF8ED091913E37FCB) /* 967 */, - CONST64(0x3249D8F9C80046C9) /* 968 */, CONST64(0x80CF9BEDE388FB63) /* 969 */, - CONST64(0x1881539A116CF19E) /* 970 */, CONST64(0x5103F3F76BD52457) /* 971 */, - CONST64(0x15B7E6F5AE47F7A8) /* 972 */, CONST64(0xDBD7C6DED47E9CCF) /* 973 */, - CONST64(0x44E55C410228BB1A) /* 974 */, CONST64(0xB647D4255EDB4E99) /* 975 */, - CONST64(0x5D11882BB8AAFC30) /* 976 */, CONST64(0xF5098BBB29D3212A) /* 977 */, - CONST64(0x8FB5EA14E90296B3) /* 978 */, CONST64(0x677B942157DD025A) /* 979 */, - CONST64(0xFB58E7C0A390ACB5) /* 980 */, CONST64(0x89D3674C83BD4A01) /* 981 */, - CONST64(0x9E2DA4DF4BF3B93B) /* 982 */, CONST64(0xFCC41E328CAB4829) /* 983 */, - CONST64(0x03F38C96BA582C52) /* 984 */, CONST64(0xCAD1BDBD7FD85DB2) /* 985 */, - CONST64(0xBBB442C16082AE83) /* 986 */, CONST64(0xB95FE86BA5DA9AB0) /* 987 */, - CONST64(0xB22E04673771A93F) /* 988 */, CONST64(0x845358C9493152D8) /* 989 */, - CONST64(0xBE2A488697B4541E) /* 990 */, CONST64(0x95A2DC2DD38E6966) /* 991 */, - CONST64(0xC02C11AC923C852B) /* 992 */, CONST64(0x2388B1990DF2A87B) /* 993 */, - CONST64(0x7C8008FA1B4F37BE) /* 994 */, CONST64(0x1F70D0C84D54E503) /* 995 */, - CONST64(0x5490ADEC7ECE57D4) /* 996 */, CONST64(0x002B3C27D9063A3A) /* 997 */, - CONST64(0x7EAEA3848030A2BF) /* 998 */, CONST64(0xC602326DED2003C0) /* 999 */, - CONST64(0x83A7287D69A94086) /* 1000 */, CONST64(0xC57A5FCB30F57A8A) /* 1001 */, - CONST64(0xB56844E479EBE779) /* 1002 */, CONST64(0xA373B40F05DCBCE9) /* 1003 */, - CONST64(0xD71A786E88570EE2) /* 1004 */, CONST64(0x879CBACDBDE8F6A0) /* 1005 */, - CONST64(0x976AD1BCC164A32F) /* 1006 */, CONST64(0xAB21E25E9666D78B) /* 1007 */, - CONST64(0x901063AAE5E5C33C) /* 1008 */, CONST64(0x9818B34448698D90) /* 1009 */, - CONST64(0xE36487AE3E1E8ABB) /* 1010 */, CONST64(0xAFBDF931893BDCB4) /* 1011 */, - CONST64(0x6345A0DC5FBBD519) /* 1012 */, CONST64(0x8628FE269B9465CA) /* 1013 */, - CONST64(0x1E5D01603F9C51EC) /* 1014 */, CONST64(0x4DE44006A15049B7) /* 1015 */, - CONST64(0xBF6C70E5F776CBB1) /* 1016 */, CONST64(0x411218F2EF552BED) /* 1017 */, - CONST64(0xCB0C0708705A36A3) /* 1018 */, CONST64(0xE74D14754F986044) /* 1019 */, - CONST64(0xCD56D9430EA8280E) /* 1020 */, CONST64(0xC12591D7535F5065) /* 1021 */, - CONST64(0xC83223F1720AEF96) /* 1022 */, CONST64(0xC3A0396F7363A51F) /* 1023 */}; - -#ifdef _MSC_VER - #define INLINE __inline -#else - #define INLINE -#endif - -/* one round of the hash function */ -INLINE static void tiger_round(ulong64 *a, ulong64 *b, ulong64 *c, ulong64 x, int mul) -{ - ulong64 tmp; - tmp = (*c ^= x); - *a -= t1[byte(tmp, 0)] ^ t2[byte(tmp, 2)] ^ t3[byte(tmp, 4)] ^ t4[byte(tmp, 6)]; - tmp = (*b += t4[byte(tmp, 1)] ^ t3[byte(tmp, 3)] ^ t2[byte(tmp,5)] ^ t1[byte(tmp,7)]); - switch (mul) { - case 5: *b = (tmp << 2) + tmp; break; - case 7: *b = (tmp << 3) - tmp; break; - case 9: *b = (tmp << 3) + tmp; break; - } -} - -/* one complete pass */ -static void pass(ulong64 *a, ulong64 *b, ulong64 *c, ulong64 *x, int mul) -{ - tiger_round(a,b,c,x[0],mul); - tiger_round(b,c,a,x[1],mul); - tiger_round(c,a,b,x[2],mul); - tiger_round(a,b,c,x[3],mul); - tiger_round(b,c,a,x[4],mul); - tiger_round(c,a,b,x[5],mul); - tiger_round(a,b,c,x[6],mul); - tiger_round(b,c,a,x[7],mul); -} - -/* The key mixing schedule */ -static void key_schedule(ulong64 *x) -{ - x[0] -= x[7] ^ CONST64(0xA5A5A5A5A5A5A5A5); - x[1] ^= x[0]; - x[2] += x[1]; - x[3] -= x[2] ^ ((~x[1])<<19); - x[4] ^= x[3]; - x[5] += x[4]; - x[6] -= x[5] ^ ((~x[4])>>23); - x[7] ^= x[6]; - x[0] += x[7]; - x[1] -= x[0] ^ ((~x[7])<<19); - x[2] ^= x[1]; - x[3] += x[2]; - x[4] -= x[3] ^ ((~x[2])>>23); - x[5] ^= x[4]; - x[6] += x[5]; - x[7] -= x[6] ^ CONST64(0x0123456789ABCDEF); -} - -#ifdef LTC_CLEAN_STACK -static int _tiger_compress(hash_state *md, unsigned char *buf) -#else -static int tiger_compress(hash_state *md, unsigned char *buf) -#endif -{ - ulong64 a, b, c, x[8]; - unsigned long i; - - /* load words */ - for (i = 0; i < 8; i++) { - LOAD64L(x[i],&buf[8*i]); - } - a = md->tiger.state[0]; - b = md->tiger.state[1]; - c = md->tiger.state[2]; - - pass(&a,&b,&c,x,5); - key_schedule(x); - pass(&c,&a,&b,x,7); - key_schedule(x); - pass(&b,&c,&a,x,9); - - /* store state */ - md->tiger.state[0] = a ^ md->tiger.state[0]; - md->tiger.state[1] = b - md->tiger.state[1]; - md->tiger.state[2] = c + md->tiger.state[2]; - - return CRYPT_OK; -} - -#ifdef LTC_CLEAN_STACK -static int tiger_compress(hash_state *md, unsigned char *buf) -{ - int err; - err = _tiger_compress(md, buf); - burn_stack(sizeof(ulong64) * 11 + sizeof(unsigned long)); - return err; -} -#endif - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int tiger_init(hash_state *md) -{ - LTC_ARGCHK(md != NULL); - md->tiger.state[0] = CONST64(0x0123456789ABCDEF); - md->tiger.state[1] = CONST64(0xFEDCBA9876543210); - md->tiger.state[2] = CONST64(0xF096A5B4C3B2E187); - md->tiger.curlen = 0; - md->tiger.length = 0; - return CRYPT_OK; -} - -/** - Process a block of memory though the hash - @param md The hash state - @param in The data to hash - @param inlen The length of the data (octets) - @return CRYPT_OK if successful -*/ -HASH_PROCESS(tiger_process, tiger_compress, tiger, 64) - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (24 bytes) - @return CRYPT_OK if successful -*/ -int tiger_done(hash_state * md, unsigned char *out) -{ - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (md->tiger.curlen >= sizeof(md->tiger.buf)) { - return CRYPT_INVALID_ARG; - } - - /* increase the length of the message */ - md->tiger.length += md->tiger.curlen * 8; - - /* append the '1' bit */ - md->tiger.buf[md->tiger.curlen++] = (unsigned char)0x01; - - /* if the length is currently above 56 bytes we append zeros - * then compress. Then we can fall back to padding zeros and length - * encoding like normal. */ - if (md->tiger.curlen > 56) { - while (md->tiger.curlen < 64) { - md->tiger.buf[md->tiger.curlen++] = (unsigned char)0; - } - tiger_compress(md, md->tiger.buf); - md->tiger.curlen = 0; - } - - /* pad upto 56 bytes of zeroes */ - while (md->tiger.curlen < 56) { - md->tiger.buf[md->tiger.curlen++] = (unsigned char)0; - } - - /* store length */ - STORE64L(md->tiger.length, md->tiger.buf+56); - tiger_compress(md, md->tiger.buf); - - /* copy output */ - STORE64L(md->tiger.state[0], &out[0]); - STORE64L(md->tiger.state[1], &out[8]); - STORE64L(md->tiger.state[2], &out[16]); -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(hash_state)); -#endif - - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int tiger_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - const char *msg; - unsigned char hash[24]; - } tests[] = { - { "", - { 0x32, 0x93, 0xac, 0x63, 0x0c, 0x13, 0xf0, 0x24, - 0x5f, 0x92, 0xbb, 0xb1, 0x76, 0x6e, 0x16, 0x16, - 0x7a, 0x4e, 0x58, 0x49, 0x2d, 0xde, 0x73, 0xf3 } - }, - { "abc", - { 0x2a, 0xab, 0x14, 0x84, 0xe8, 0xc1, 0x58, 0xf2, - 0xbf, 0xb8, 0xc5, 0xff, 0x41, 0xb5, 0x7a, 0x52, - 0x51, 0x29, 0x13, 0x1c, 0x95, 0x7b, 0x5f, 0x93 } - }, - { "Tiger", - { 0xdd, 0x00, 0x23, 0x07, 0x99, 0xf5, 0x00, 0x9f, - 0xec, 0x6d, 0xeb, 0xc8, 0x38, 0xbb, 0x6a, 0x27, - 0xdf, 0x2b, 0x9d, 0x6f, 0x11, 0x0c, 0x79, 0x37 } - }, - { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-", - { 0xf7, 0x1c, 0x85, 0x83, 0x90, 0x2a, 0xfb, 0x87, - 0x9e, 0xdf, 0xe6, 0x10, 0xf8, 0x2c, 0x0d, 0x47, - 0x86, 0xa3, 0xa5, 0x34, 0x50, 0x44, 0x86, 0xb5 } - }, - { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-", - { 0xc5, 0x40, 0x34, 0xe5, 0xb4, 0x3e, 0xb8, 0x00, - 0x58, 0x48, 0xa7, 0xe0, 0xae, 0x6a, 0xac, 0x76, - 0xe4, 0xff, 0x59, 0x0a, 0xe7, 0x15, 0xfd, 0x25 } - }, - }; - - int i; - unsigned char tmp[24]; - hash_state md; - - for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { - tiger_init(&md); - tiger_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); - tiger_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "TIGER", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; - #endif -} - -#endif - -/* -Hash of "": - 24F0130C63AC9332 16166E76B1BB925F F373DE2D49584E7A -Hash of "abc": - F258C1E88414AB2A 527AB541FFC5B8BF 935F7B951C132951 -Hash of "Tiger": - 9F00F599072300DD 276ABB38C8EB6DEC 37790C116F9D2BDF -Hash of "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-": - 87FB2A9083851CF7 470D2CF810E6DF9E B586445034A5A386 -Hash of "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789": - 467DB80863EBCE48 8DF1CD1261655DE9 57896565975F9197 -Hash of "Tiger - A Fast New Hash Function, by Ross Anderson and Eli Biham": - 0C410A042968868A 1671DA5A3FD29A72 5EC1E457D3CDB303 -Hash of "Tiger - A Fast New Hash Function, by Ross Anderson and Eli Biham, proceedings of Fast Software Encryption 3, Cambridge.": - EBF591D5AFA655CE 7F22894FF87F54AC 89C811B6B0DA3193 -Hash of "Tiger - A Fast New Hash Function, by Ross Anderson and Eli Biham, proceedings of Fast Software Encryption 3, Cambridge, 1996.": - 3D9AEB03D1BD1A63 57B2774DFD6D5B24 DD68151D503974FC -Hash of "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-": - 00B83EB4E53440C5 76AC6AAEE0A74858 25FD15E70A59FFE4 -*/ - - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/whirl/whirl.c b/src/libtomcrypt/src/hashes/whirl/whirl.c deleted file mode 100644 index 788fd910a0..0000000000 --- a/src/libtomcrypt/src/hashes/whirl/whirl.c +++ /dev/null @@ -1,306 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file whirl.c - LTC_WHIRLPOOL (using their new sbox) hash function by Tom St Denis -*/ - -#include "tomcrypt.h" - -#ifdef LTC_WHIRLPOOL - -const struct ltc_hash_descriptor whirlpool_desc = -{ - "whirlpool", - 11, - 64, - 64, - - /* OID */ - { 1, 0, 10118, 3, 0, 55 }, - 6, - - &whirlpool_init, - &whirlpool_process, - &whirlpool_done, - &whirlpool_test, - NULL -}; - -/* the sboxes */ -#define __LTC_WHIRLTAB_C__ -#include "whirltab.c" - -/* get a_{i,j} */ -#define GB(a,i,j) ((a[(i) & 7] >> (8 * (j))) & 255) - -/* shortcut macro to perform three functions at once */ -#define theta_pi_gamma(a, i) \ - (SB0(GB(a, i-0, 7)) ^ \ - SB1(GB(a, i-1, 6)) ^ \ - SB2(GB(a, i-2, 5)) ^ \ - SB3(GB(a, i-3, 4)) ^ \ - SB4(GB(a, i-4, 3)) ^ \ - SB5(GB(a, i-5, 2)) ^ \ - SB6(GB(a, i-6, 1)) ^ \ - SB7(GB(a, i-7, 0))) - -#ifdef LTC_CLEAN_STACK -static int _whirlpool_compress(hash_state *md, unsigned char *buf) -#else -static int whirlpool_compress(hash_state *md, unsigned char *buf) -#endif -{ - ulong64 K[2][8], T[3][8]; - int x, y; - - /* load the block/state */ - for (x = 0; x < 8; x++) { - K[0][x] = md->whirlpool.state[x]; - - LOAD64H(T[0][x], buf + (8 * x)); - T[2][x] = T[0][x]; - T[0][x] ^= K[0][x]; - } - - /* do rounds 1..10 */ - for (x = 0; x < 10; x += 2) { - /* odd round */ - /* apply main transform to K[0] into K[1] */ - for (y = 0; y < 8; y++) { - K[1][y] = theta_pi_gamma(K[0], y); - } - /* xor the constant */ - K[1][0] ^= cont[x]; - - /* apply main transform to T[0] into T[1] */ - for (y = 0; y < 8; y++) { - T[1][y] = theta_pi_gamma(T[0], y) ^ K[1][y]; - } - - /* even round */ - /* apply main transform to K[1] into K[0] */ - for (y = 0; y < 8; y++) { - K[0][y] = theta_pi_gamma(K[1], y); - } - /* xor the constant */ - K[0][0] ^= cont[x+1]; - - /* apply main transform to T[1] into T[0] */ - for (y = 0; y < 8; y++) { - T[0][y] = theta_pi_gamma(T[1], y) ^ K[0][y]; - } - } - - /* store state */ - for (x = 0; x < 8; x++) { - md->whirlpool.state[x] ^= T[0][x] ^ T[2][x]; - } - - return CRYPT_OK; -} - - -#ifdef LTC_CLEAN_STACK -static int whirlpool_compress(hash_state *md, unsigned char *buf) -{ - int err; - err = _whirlpool_compress(md, buf); - burn_stack((5 * 8 * sizeof(ulong64)) + (2 * sizeof(int))); - return err; -} -#endif - - -/** - Initialize the hash state - @param md The hash state you wish to initialize - @return CRYPT_OK if successful -*/ -int whirlpool_init(hash_state * md) -{ - LTC_ARGCHK(md != NULL); - zeromem(&md->whirlpool, sizeof(md->whirlpool)); - return CRYPT_OK; -} - -/** - Process a block of memory though the hash - @param md The hash state - @param in The data to hash - @param inlen The length of the data (octets) - @return CRYPT_OK if successful -*/ -HASH_PROCESS(whirlpool_process, whirlpool_compress, whirlpool, 64) - -/** - Terminate the hash to get the digest - @param md The hash state - @param out [out] The destination of the hash (64 bytes) - @return CRYPT_OK if successful -*/ -int whirlpool_done(hash_state * md, unsigned char *out) -{ - int i; - - LTC_ARGCHK(md != NULL); - LTC_ARGCHK(out != NULL); - - if (md->whirlpool.curlen >= sizeof(md->whirlpool.buf)) { - return CRYPT_INVALID_ARG; - } - - /* increase the length of the message */ - md->whirlpool.length += md->whirlpool.curlen * 8; - - /* append the '1' bit */ - md->whirlpool.buf[md->whirlpool.curlen++] = (unsigned char)0x80; - - /* if the length is currently above 32 bytes we append zeros - * then compress. Then we can fall back to padding zeros and length - * encoding like normal. - */ - if (md->whirlpool.curlen > 32) { - while (md->whirlpool.curlen < 64) { - md->whirlpool.buf[md->whirlpool.curlen++] = (unsigned char)0; - } - whirlpool_compress(md, md->whirlpool.buf); - md->whirlpool.curlen = 0; - } - - /* pad upto 56 bytes of zeroes (should be 32 but we only support 64-bit lengths) */ - while (md->whirlpool.curlen < 56) { - md->whirlpool.buf[md->whirlpool.curlen++] = (unsigned char)0; - } - - /* store length */ - STORE64H(md->whirlpool.length, md->whirlpool.buf+56); - whirlpool_compress(md, md->whirlpool.buf); - - /* copy output */ - for (i = 0; i < 8; i++) { - STORE64H(md->whirlpool.state[i], out+(8*i)); - } -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(*md)); -#endif - return CRYPT_OK; -} - -/** - Self-test the hash - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled -*/ -int whirlpool_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - static const struct { - int len; - unsigned char msg[128], hash[64]; - } tests[] = { - - /* NULL Message */ -{ - 0, - { 0x00 }, - { 0x19, 0xFA, 0x61, 0xD7, 0x55, 0x22, 0xA4, 0x66, 0x9B, 0x44, 0xE3, 0x9C, 0x1D, 0x2E, 0x17, 0x26, - 0xC5, 0x30, 0x23, 0x21, 0x30, 0xD4, 0x07, 0xF8, 0x9A, 0xFE, 0xE0, 0x96, 0x49, 0x97, 0xF7, 0xA7, - 0x3E, 0x83, 0xBE, 0x69, 0x8B, 0x28, 0x8F, 0xEB, 0xCF, 0x88, 0xE3, 0xE0, 0x3C, 0x4F, 0x07, 0x57, - 0xEA, 0x89, 0x64, 0xE5, 0x9B, 0x63, 0xD9, 0x37, 0x08, 0xB1, 0x38, 0xCC, 0x42, 0xA6, 0x6E, 0xB3 } -}, - - - /* 448-bits of 0 bits */ -{ - - 56, - { 0x00 }, - { 0x0B, 0x3F, 0x53, 0x78, 0xEB, 0xED, 0x2B, 0xF4, 0xD7, 0xBE, 0x3C, 0xFD, 0x81, 0x8C, 0x1B, 0x03, - 0xB6, 0xBB, 0x03, 0xD3, 0x46, 0x94, 0x8B, 0x04, 0xF4, 0xF4, 0x0C, 0x72, 0x6F, 0x07, 0x58, 0x70, - 0x2A, 0x0F, 0x1E, 0x22, 0x58, 0x80, 0xE3, 0x8D, 0xD5, 0xF6, 0xED, 0x6D, 0xE9, 0xB1, 0xE9, 0x61, - 0xE4, 0x9F, 0xC1, 0x31, 0x8D, 0x7C, 0xB7, 0x48, 0x22, 0xF3, 0xD0, 0xE2, 0xE9, 0xA7, 0xE7, 0xB0 } -}, - - /* 520-bits of 0 bits */ -{ - 65, - { 0x00 }, - { 0x85, 0xE1, 0x24, 0xC4, 0x41, 0x5B, 0xCF, 0x43, 0x19, 0x54, 0x3E, 0x3A, 0x63, 0xFF, 0x57, 0x1D, - 0x09, 0x35, 0x4C, 0xEE, 0xBE, 0xE1, 0xE3, 0x25, 0x30, 0x8C, 0x90, 0x69, 0xF4, 0x3E, 0x2A, 0xE4, - 0xD0, 0xE5, 0x1D, 0x4E, 0xB1, 0xE8, 0x64, 0x28, 0x70, 0x19, 0x4E, 0x95, 0x30, 0xD8, 0xD8, 0xAF, - 0x65, 0x89, 0xD1, 0xBF, 0x69, 0x49, 0xDD, 0xF9, 0x0A, 0x7F, 0x12, 0x08, 0x62, 0x37, 0x95, 0xB9 } -}, - - /* 512-bits, leading set */ -{ - 64, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x10, 0x3E, 0x00, 0x55, 0xA9, 0xB0, 0x90, 0xE1, 0x1C, 0x8F, 0xDD, 0xEB, 0xBA, 0x06, 0xC0, 0x5A, - 0xCE, 0x8B, 0x64, 0xB8, 0x96, 0x12, 0x8F, 0x6E, 0xED, 0x30, 0x71, 0xFC, 0xF3, 0xDC, 0x16, 0x94, - 0x67, 0x78, 0xE0, 0x72, 0x23, 0x23, 0x3F, 0xD1, 0x80, 0xFC, 0x40, 0xCC, 0xDB, 0x84, 0x30, 0xA6, - 0x40, 0xE3, 0x76, 0x34, 0x27, 0x1E, 0x65, 0x5C, 0xA1, 0x67, 0x4E, 0xBF, 0xF5, 0x07, 0xF8, 0xCB } -}, - - /* 512-bits, leading set of second byte */ -{ - 64, - { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, - { 0x35, 0x7B, 0x42, 0xEA, 0x79, 0xBC, 0x97, 0x86, 0x97, 0x5A, 0x3C, 0x44, 0x70, 0xAA, 0xB2, 0x3E, - 0x62, 0x29, 0x79, 0x7B, 0xAD, 0xBD, 0x54, 0x36, 0x5B, 0x54, 0x96, 0xE5, 0x5D, 0x9D, 0xD7, 0x9F, - 0xE9, 0x62, 0x4F, 0xB4, 0x22, 0x66, 0x93, 0x0A, 0x62, 0x8E, 0xD4, 0xDB, 0x08, 0xF9, 0xDD, 0x35, - 0xEF, 0x1B, 0xE1, 0x04, 0x53, 0xFC, 0x18, 0xF4, 0x2C, 0x7F, 0x5E, 0x1F, 0x9B, 0xAE, 0x55, 0xE0 } -}, - - /* 512-bits, leading set of last byte */ -{ - 64, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 }, - { 0x8B, 0x39, 0x04, 0xDD, 0x19, 0x81, 0x41, 0x26, 0xFD, 0x02, 0x74, 0xAB, 0x49, 0xC5, 0x97, 0xF6, - 0xD7, 0x75, 0x33, 0x52, 0xA2, 0xDD, 0x91, 0xFD, 0x8F, 0x9F, 0x54, 0x05, 0x4C, 0x54, 0xBF, 0x0F, - 0x06, 0xDB, 0x4F, 0xF7, 0x08, 0xA3, 0xA2, 0x8B, 0xC3, 0x7A, 0x92, 0x1E, 0xEE, 0x11, 0xED, 0x7B, - 0x6A, 0x53, 0x79, 0x32, 0xCC, 0x5E, 0x94, 0xEE, 0x1E, 0xA6, 0x57, 0x60, 0x7E, 0x36, 0xC9, 0xF7 } -}, - -}; - - int i; - unsigned char tmp[64]; - hash_state md; - - for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { - whirlpool_init(&md); - whirlpool_process(&md, (unsigned char *)tests[i].msg, tests[i].len); - whirlpool_done(&md, tmp); - if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "WHIRLPOOL", i)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; - #endif -} - - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/hashes/whirl/whirltab.c b/src/libtomcrypt/src/hashes/whirl/whirltab.c deleted file mode 100644 index 039743c95c..0000000000 --- a/src/libtomcrypt/src/hashes/whirl/whirltab.c +++ /dev/null @@ -1,596 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file whirltab.c - LTC_WHIRLPOOL tables, Tom St Denis -*/ - -#ifdef __LTC_WHIRLTAB_C__ - -static const ulong64 sbox0[] = { -CONST64(0x18186018c07830d8), CONST64(0x23238c2305af4626), CONST64(0xc6c63fc67ef991b8), CONST64(0xe8e887e8136fcdfb), -CONST64(0x878726874ca113cb), CONST64(0xb8b8dab8a9626d11), CONST64(0x0101040108050209), CONST64(0x4f4f214f426e9e0d), -CONST64(0x3636d836adee6c9b), CONST64(0xa6a6a2a6590451ff), CONST64(0xd2d26fd2debdb90c), CONST64(0xf5f5f3f5fb06f70e), -CONST64(0x7979f979ef80f296), CONST64(0x6f6fa16f5fcede30), CONST64(0x91917e91fcef3f6d), CONST64(0x52525552aa07a4f8), -CONST64(0x60609d6027fdc047), CONST64(0xbcbccabc89766535), CONST64(0x9b9b569baccd2b37), CONST64(0x8e8e028e048c018a), -CONST64(0xa3a3b6a371155bd2), CONST64(0x0c0c300c603c186c), CONST64(0x7b7bf17bff8af684), CONST64(0x3535d435b5e16a80), -CONST64(0x1d1d741de8693af5), CONST64(0xe0e0a7e05347ddb3), CONST64(0xd7d77bd7f6acb321), CONST64(0xc2c22fc25eed999c), -CONST64(0x2e2eb82e6d965c43), CONST64(0x4b4b314b627a9629), CONST64(0xfefedffea321e15d), CONST64(0x575741578216aed5), -CONST64(0x15155415a8412abd), CONST64(0x7777c1779fb6eee8), CONST64(0x3737dc37a5eb6e92), CONST64(0xe5e5b3e57b56d79e), -CONST64(0x9f9f469f8cd92313), CONST64(0xf0f0e7f0d317fd23), CONST64(0x4a4a354a6a7f9420), CONST64(0xdada4fda9e95a944), -CONST64(0x58587d58fa25b0a2), CONST64(0xc9c903c906ca8fcf), CONST64(0x2929a429558d527c), CONST64(0x0a0a280a5022145a), -CONST64(0xb1b1feb1e14f7f50), CONST64(0xa0a0baa0691a5dc9), CONST64(0x6b6bb16b7fdad614), CONST64(0x85852e855cab17d9), -CONST64(0xbdbdcebd8173673c), CONST64(0x5d5d695dd234ba8f), CONST64(0x1010401080502090), CONST64(0xf4f4f7f4f303f507), -CONST64(0xcbcb0bcb16c08bdd), CONST64(0x3e3ef83eedc67cd3), CONST64(0x0505140528110a2d), CONST64(0x676781671fe6ce78), -CONST64(0xe4e4b7e47353d597), CONST64(0x27279c2725bb4e02), CONST64(0x4141194132588273), CONST64(0x8b8b168b2c9d0ba7), -CONST64(0xa7a7a6a7510153f6), CONST64(0x7d7de97dcf94fab2), CONST64(0x95956e95dcfb3749), CONST64(0xd8d847d88e9fad56), -CONST64(0xfbfbcbfb8b30eb70), CONST64(0xeeee9fee2371c1cd), CONST64(0x7c7ced7cc791f8bb), CONST64(0x6666856617e3cc71), -CONST64(0xdddd53dda68ea77b), CONST64(0x17175c17b84b2eaf), CONST64(0x4747014702468e45), CONST64(0x9e9e429e84dc211a), -CONST64(0xcaca0fca1ec589d4), CONST64(0x2d2db42d75995a58), CONST64(0xbfbfc6bf9179632e), CONST64(0x07071c07381b0e3f), -CONST64(0xadad8ead012347ac), CONST64(0x5a5a755aea2fb4b0), CONST64(0x838336836cb51bef), CONST64(0x3333cc3385ff66b6), -CONST64(0x636391633ff2c65c), CONST64(0x02020802100a0412), CONST64(0xaaaa92aa39384993), CONST64(0x7171d971afa8e2de), -CONST64(0xc8c807c80ecf8dc6), CONST64(0x19196419c87d32d1), CONST64(0x494939497270923b), CONST64(0xd9d943d9869aaf5f), -CONST64(0xf2f2eff2c31df931), CONST64(0xe3e3abe34b48dba8), CONST64(0x5b5b715be22ab6b9), CONST64(0x88881a8834920dbc), -CONST64(0x9a9a529aa4c8293e), CONST64(0x262698262dbe4c0b), CONST64(0x3232c8328dfa64bf), CONST64(0xb0b0fab0e94a7d59), -CONST64(0xe9e983e91b6acff2), CONST64(0x0f0f3c0f78331e77), CONST64(0xd5d573d5e6a6b733), CONST64(0x80803a8074ba1df4), -CONST64(0xbebec2be997c6127), CONST64(0xcdcd13cd26de87eb), CONST64(0x3434d034bde46889), CONST64(0x48483d487a759032), -CONST64(0xffffdbffab24e354), CONST64(0x7a7af57af78ff48d), CONST64(0x90907a90f4ea3d64), CONST64(0x5f5f615fc23ebe9d), -CONST64(0x202080201da0403d), CONST64(0x6868bd6867d5d00f), CONST64(0x1a1a681ad07234ca), CONST64(0xaeae82ae192c41b7), -CONST64(0xb4b4eab4c95e757d), CONST64(0x54544d549a19a8ce), CONST64(0x93937693ece53b7f), CONST64(0x222288220daa442f), -CONST64(0x64648d6407e9c863), CONST64(0xf1f1e3f1db12ff2a), CONST64(0x7373d173bfa2e6cc), CONST64(0x12124812905a2482), -CONST64(0x40401d403a5d807a), CONST64(0x0808200840281048), CONST64(0xc3c32bc356e89b95), CONST64(0xecec97ec337bc5df), -CONST64(0xdbdb4bdb9690ab4d), CONST64(0xa1a1bea1611f5fc0), CONST64(0x8d8d0e8d1c830791), CONST64(0x3d3df43df5c97ac8), -CONST64(0x97976697ccf1335b), CONST64(0x0000000000000000), CONST64(0xcfcf1bcf36d483f9), CONST64(0x2b2bac2b4587566e), -CONST64(0x7676c57697b3ece1), CONST64(0x8282328264b019e6), CONST64(0xd6d67fd6fea9b128), CONST64(0x1b1b6c1bd87736c3), -CONST64(0xb5b5eeb5c15b7774), CONST64(0xafaf86af112943be), CONST64(0x6a6ab56a77dfd41d), CONST64(0x50505d50ba0da0ea), -CONST64(0x45450945124c8a57), CONST64(0xf3f3ebf3cb18fb38), CONST64(0x3030c0309df060ad), CONST64(0xefef9bef2b74c3c4), -CONST64(0x3f3ffc3fe5c37eda), CONST64(0x55554955921caac7), CONST64(0xa2a2b2a2791059db), CONST64(0xeaea8fea0365c9e9), -CONST64(0x656589650fecca6a), CONST64(0xbabad2bab9686903), CONST64(0x2f2fbc2f65935e4a), CONST64(0xc0c027c04ee79d8e), -CONST64(0xdede5fdebe81a160), CONST64(0x1c1c701ce06c38fc), CONST64(0xfdfdd3fdbb2ee746), CONST64(0x4d4d294d52649a1f), -CONST64(0x92927292e4e03976), CONST64(0x7575c9758fbceafa), CONST64(0x06061806301e0c36), CONST64(0x8a8a128a249809ae), -CONST64(0xb2b2f2b2f940794b), CONST64(0xe6e6bfe66359d185), CONST64(0x0e0e380e70361c7e), CONST64(0x1f1f7c1ff8633ee7), -CONST64(0x6262956237f7c455), CONST64(0xd4d477d4eea3b53a), CONST64(0xa8a89aa829324d81), CONST64(0x96966296c4f43152), -CONST64(0xf9f9c3f99b3aef62), CONST64(0xc5c533c566f697a3), CONST64(0x2525942535b14a10), CONST64(0x59597959f220b2ab), -CONST64(0x84842a8454ae15d0), CONST64(0x7272d572b7a7e4c5), CONST64(0x3939e439d5dd72ec), CONST64(0x4c4c2d4c5a619816), -CONST64(0x5e5e655eca3bbc94), CONST64(0x7878fd78e785f09f), CONST64(0x3838e038ddd870e5), CONST64(0x8c8c0a8c14860598), -CONST64(0xd1d163d1c6b2bf17), CONST64(0xa5a5aea5410b57e4), CONST64(0xe2e2afe2434dd9a1), CONST64(0x616199612ff8c24e), -CONST64(0xb3b3f6b3f1457b42), CONST64(0x2121842115a54234), CONST64(0x9c9c4a9c94d62508), CONST64(0x1e1e781ef0663cee), -CONST64(0x4343114322528661), CONST64(0xc7c73bc776fc93b1), CONST64(0xfcfcd7fcb32be54f), CONST64(0x0404100420140824), -CONST64(0x51515951b208a2e3), CONST64(0x99995e99bcc72f25), CONST64(0x6d6da96d4fc4da22), CONST64(0x0d0d340d68391a65), -CONST64(0xfafacffa8335e979), CONST64(0xdfdf5bdfb684a369), CONST64(0x7e7ee57ed79bfca9), CONST64(0x242490243db44819), -CONST64(0x3b3bec3bc5d776fe), CONST64(0xabab96ab313d4b9a), CONST64(0xcece1fce3ed181f0), CONST64(0x1111441188552299), -CONST64(0x8f8f068f0c890383), CONST64(0x4e4e254e4a6b9c04), CONST64(0xb7b7e6b7d1517366), CONST64(0xebeb8beb0b60cbe0), -CONST64(0x3c3cf03cfdcc78c1), CONST64(0x81813e817cbf1ffd), CONST64(0x94946a94d4fe3540), CONST64(0xf7f7fbf7eb0cf31c), -CONST64(0xb9b9deb9a1676f18), CONST64(0x13134c13985f268b), CONST64(0x2c2cb02c7d9c5851), CONST64(0xd3d36bd3d6b8bb05), -CONST64(0xe7e7bbe76b5cd38c), CONST64(0x6e6ea56e57cbdc39), CONST64(0xc4c437c46ef395aa), CONST64(0x03030c03180f061b), -CONST64(0x565645568a13acdc), CONST64(0x44440d441a49885e), CONST64(0x7f7fe17fdf9efea0), CONST64(0xa9a99ea921374f88), -CONST64(0x2a2aa82a4d825467), CONST64(0xbbbbd6bbb16d6b0a), CONST64(0xc1c123c146e29f87), CONST64(0x53535153a202a6f1), -CONST64(0xdcdc57dcae8ba572), CONST64(0x0b0b2c0b58271653), CONST64(0x9d9d4e9d9cd32701), CONST64(0x6c6cad6c47c1d82b), -CONST64(0x3131c43195f562a4), CONST64(0x7474cd7487b9e8f3), CONST64(0xf6f6fff6e309f115), CONST64(0x464605460a438c4c), -CONST64(0xacac8aac092645a5), CONST64(0x89891e893c970fb5), CONST64(0x14145014a04428b4), CONST64(0xe1e1a3e15b42dfba), -CONST64(0x16165816b04e2ca6), CONST64(0x3a3ae83acdd274f7), CONST64(0x6969b9696fd0d206), CONST64(0x09092409482d1241), -CONST64(0x7070dd70a7ade0d7), CONST64(0xb6b6e2b6d954716f), CONST64(0xd0d067d0ceb7bd1e), CONST64(0xeded93ed3b7ec7d6), -CONST64(0xcccc17cc2edb85e2), CONST64(0x424215422a578468), CONST64(0x98985a98b4c22d2c), CONST64(0xa4a4aaa4490e55ed), -CONST64(0x2828a0285d885075), CONST64(0x5c5c6d5cda31b886), CONST64(0xf8f8c7f8933fed6b), CONST64(0x8686228644a411c2) -}; - -#ifdef LTC_SMALL_CODE - -#define SB0(x) sbox0[x] -#define SB1(x) ROR64c(sbox0[x], 8) -#define SB2(x) ROR64c(sbox0[x], 16) -#define SB3(x) ROR64c(sbox0[x], 24) -#define SB4(x) ROR64c(sbox0[x], 32) -#define SB5(x) ROR64c(sbox0[x], 40) -#define SB6(x) ROR64c(sbox0[x], 48) -#define SB7(x) ROR64c(sbox0[x], 56) - -#else - -#define SB0(x) sbox0[x] -#define SB1(x) sbox1[x] -#define SB2(x) sbox2[x] -#define SB3(x) sbox3[x] -#define SB4(x) sbox4[x] -#define SB5(x) sbox5[x] -#define SB6(x) sbox6[x] -#define SB7(x) sbox7[x] - - -static const ulong64 sbox1[] = { -CONST64(0xd818186018c07830), CONST64(0x2623238c2305af46), CONST64(0xb8c6c63fc67ef991), CONST64(0xfbe8e887e8136fcd), -CONST64(0xcb878726874ca113), CONST64(0x11b8b8dab8a9626d), CONST64(0x0901010401080502), CONST64(0x0d4f4f214f426e9e), -CONST64(0x9b3636d836adee6c), CONST64(0xffa6a6a2a6590451), CONST64(0x0cd2d26fd2debdb9), CONST64(0x0ef5f5f3f5fb06f7), -CONST64(0x967979f979ef80f2), CONST64(0x306f6fa16f5fcede), CONST64(0x6d91917e91fcef3f), CONST64(0xf852525552aa07a4), -CONST64(0x4760609d6027fdc0), CONST64(0x35bcbccabc897665), CONST64(0x379b9b569baccd2b), CONST64(0x8a8e8e028e048c01), -CONST64(0xd2a3a3b6a371155b), CONST64(0x6c0c0c300c603c18), CONST64(0x847b7bf17bff8af6), CONST64(0x803535d435b5e16a), -CONST64(0xf51d1d741de8693a), CONST64(0xb3e0e0a7e05347dd), CONST64(0x21d7d77bd7f6acb3), CONST64(0x9cc2c22fc25eed99), -CONST64(0x432e2eb82e6d965c), CONST64(0x294b4b314b627a96), CONST64(0x5dfefedffea321e1), CONST64(0xd5575741578216ae), -CONST64(0xbd15155415a8412a), CONST64(0xe87777c1779fb6ee), CONST64(0x923737dc37a5eb6e), CONST64(0x9ee5e5b3e57b56d7), -CONST64(0x139f9f469f8cd923), CONST64(0x23f0f0e7f0d317fd), CONST64(0x204a4a354a6a7f94), CONST64(0x44dada4fda9e95a9), -CONST64(0xa258587d58fa25b0), CONST64(0xcfc9c903c906ca8f), CONST64(0x7c2929a429558d52), CONST64(0x5a0a0a280a502214), -CONST64(0x50b1b1feb1e14f7f), CONST64(0xc9a0a0baa0691a5d), CONST64(0x146b6bb16b7fdad6), CONST64(0xd985852e855cab17), -CONST64(0x3cbdbdcebd817367), CONST64(0x8f5d5d695dd234ba), CONST64(0x9010104010805020), CONST64(0x07f4f4f7f4f303f5), -CONST64(0xddcbcb0bcb16c08b), CONST64(0xd33e3ef83eedc67c), CONST64(0x2d0505140528110a), CONST64(0x78676781671fe6ce), -CONST64(0x97e4e4b7e47353d5), CONST64(0x0227279c2725bb4e), CONST64(0x7341411941325882), CONST64(0xa78b8b168b2c9d0b), -CONST64(0xf6a7a7a6a7510153), CONST64(0xb27d7de97dcf94fa), CONST64(0x4995956e95dcfb37), CONST64(0x56d8d847d88e9fad), -CONST64(0x70fbfbcbfb8b30eb), CONST64(0xcdeeee9fee2371c1), CONST64(0xbb7c7ced7cc791f8), CONST64(0x716666856617e3cc), -CONST64(0x7bdddd53dda68ea7), CONST64(0xaf17175c17b84b2e), CONST64(0x454747014702468e), CONST64(0x1a9e9e429e84dc21), -CONST64(0xd4caca0fca1ec589), CONST64(0x582d2db42d75995a), CONST64(0x2ebfbfc6bf917963), CONST64(0x3f07071c07381b0e), -CONST64(0xacadad8ead012347), CONST64(0xb05a5a755aea2fb4), CONST64(0xef838336836cb51b), CONST64(0xb63333cc3385ff66), -CONST64(0x5c636391633ff2c6), CONST64(0x1202020802100a04), CONST64(0x93aaaa92aa393849), CONST64(0xde7171d971afa8e2), -CONST64(0xc6c8c807c80ecf8d), CONST64(0xd119196419c87d32), CONST64(0x3b49493949727092), CONST64(0x5fd9d943d9869aaf), -CONST64(0x31f2f2eff2c31df9), CONST64(0xa8e3e3abe34b48db), CONST64(0xb95b5b715be22ab6), CONST64(0xbc88881a8834920d), -CONST64(0x3e9a9a529aa4c829), CONST64(0x0b262698262dbe4c), CONST64(0xbf3232c8328dfa64), CONST64(0x59b0b0fab0e94a7d), -CONST64(0xf2e9e983e91b6acf), CONST64(0x770f0f3c0f78331e), CONST64(0x33d5d573d5e6a6b7), CONST64(0xf480803a8074ba1d), -CONST64(0x27bebec2be997c61), CONST64(0xebcdcd13cd26de87), CONST64(0x893434d034bde468), CONST64(0x3248483d487a7590), -CONST64(0x54ffffdbffab24e3), CONST64(0x8d7a7af57af78ff4), CONST64(0x6490907a90f4ea3d), CONST64(0x9d5f5f615fc23ebe), -CONST64(0x3d202080201da040), CONST64(0x0f6868bd6867d5d0), CONST64(0xca1a1a681ad07234), CONST64(0xb7aeae82ae192c41), -CONST64(0x7db4b4eab4c95e75), CONST64(0xce54544d549a19a8), CONST64(0x7f93937693ece53b), CONST64(0x2f222288220daa44), -CONST64(0x6364648d6407e9c8), CONST64(0x2af1f1e3f1db12ff), CONST64(0xcc7373d173bfa2e6), CONST64(0x8212124812905a24), -CONST64(0x7a40401d403a5d80), CONST64(0x4808082008402810), CONST64(0x95c3c32bc356e89b), CONST64(0xdfecec97ec337bc5), -CONST64(0x4ddbdb4bdb9690ab), CONST64(0xc0a1a1bea1611f5f), CONST64(0x918d8d0e8d1c8307), CONST64(0xc83d3df43df5c97a), -CONST64(0x5b97976697ccf133), CONST64(0x0000000000000000), CONST64(0xf9cfcf1bcf36d483), CONST64(0x6e2b2bac2b458756), -CONST64(0xe17676c57697b3ec), CONST64(0xe68282328264b019), CONST64(0x28d6d67fd6fea9b1), CONST64(0xc31b1b6c1bd87736), -CONST64(0x74b5b5eeb5c15b77), CONST64(0xbeafaf86af112943), CONST64(0x1d6a6ab56a77dfd4), CONST64(0xea50505d50ba0da0), -CONST64(0x5745450945124c8a), CONST64(0x38f3f3ebf3cb18fb), CONST64(0xad3030c0309df060), CONST64(0xc4efef9bef2b74c3), -CONST64(0xda3f3ffc3fe5c37e), CONST64(0xc755554955921caa), CONST64(0xdba2a2b2a2791059), CONST64(0xe9eaea8fea0365c9), -CONST64(0x6a656589650fecca), CONST64(0x03babad2bab96869), CONST64(0x4a2f2fbc2f65935e), CONST64(0x8ec0c027c04ee79d), -CONST64(0x60dede5fdebe81a1), CONST64(0xfc1c1c701ce06c38), CONST64(0x46fdfdd3fdbb2ee7), CONST64(0x1f4d4d294d52649a), -CONST64(0x7692927292e4e039), CONST64(0xfa7575c9758fbcea), CONST64(0x3606061806301e0c), CONST64(0xae8a8a128a249809), -CONST64(0x4bb2b2f2b2f94079), CONST64(0x85e6e6bfe66359d1), CONST64(0x7e0e0e380e70361c), CONST64(0xe71f1f7c1ff8633e), -CONST64(0x556262956237f7c4), CONST64(0x3ad4d477d4eea3b5), CONST64(0x81a8a89aa829324d), CONST64(0x5296966296c4f431), -CONST64(0x62f9f9c3f99b3aef), CONST64(0xa3c5c533c566f697), CONST64(0x102525942535b14a), CONST64(0xab59597959f220b2), -CONST64(0xd084842a8454ae15), CONST64(0xc57272d572b7a7e4), CONST64(0xec3939e439d5dd72), CONST64(0x164c4c2d4c5a6198), -CONST64(0x945e5e655eca3bbc), CONST64(0x9f7878fd78e785f0), CONST64(0xe53838e038ddd870), CONST64(0x988c8c0a8c148605), -CONST64(0x17d1d163d1c6b2bf), CONST64(0xe4a5a5aea5410b57), CONST64(0xa1e2e2afe2434dd9), CONST64(0x4e616199612ff8c2), -CONST64(0x42b3b3f6b3f1457b), CONST64(0x342121842115a542), CONST64(0x089c9c4a9c94d625), CONST64(0xee1e1e781ef0663c), -CONST64(0x6143431143225286), CONST64(0xb1c7c73bc776fc93), CONST64(0x4ffcfcd7fcb32be5), CONST64(0x2404041004201408), -CONST64(0xe351515951b208a2), CONST64(0x2599995e99bcc72f), CONST64(0x226d6da96d4fc4da), CONST64(0x650d0d340d68391a), -CONST64(0x79fafacffa8335e9), CONST64(0x69dfdf5bdfb684a3), CONST64(0xa97e7ee57ed79bfc), CONST64(0x19242490243db448), -CONST64(0xfe3b3bec3bc5d776), CONST64(0x9aabab96ab313d4b), CONST64(0xf0cece1fce3ed181), CONST64(0x9911114411885522), -CONST64(0x838f8f068f0c8903), CONST64(0x044e4e254e4a6b9c), CONST64(0x66b7b7e6b7d15173), CONST64(0xe0ebeb8beb0b60cb), -CONST64(0xc13c3cf03cfdcc78), CONST64(0xfd81813e817cbf1f), CONST64(0x4094946a94d4fe35), CONST64(0x1cf7f7fbf7eb0cf3), -CONST64(0x18b9b9deb9a1676f), CONST64(0x8b13134c13985f26), CONST64(0x512c2cb02c7d9c58), CONST64(0x05d3d36bd3d6b8bb), -CONST64(0x8ce7e7bbe76b5cd3), CONST64(0x396e6ea56e57cbdc), CONST64(0xaac4c437c46ef395), CONST64(0x1b03030c03180f06), -CONST64(0xdc565645568a13ac), CONST64(0x5e44440d441a4988), CONST64(0xa07f7fe17fdf9efe), CONST64(0x88a9a99ea921374f), -CONST64(0x672a2aa82a4d8254), CONST64(0x0abbbbd6bbb16d6b), CONST64(0x87c1c123c146e29f), CONST64(0xf153535153a202a6), -CONST64(0x72dcdc57dcae8ba5), CONST64(0x530b0b2c0b582716), CONST64(0x019d9d4e9d9cd327), CONST64(0x2b6c6cad6c47c1d8), -CONST64(0xa43131c43195f562), CONST64(0xf37474cd7487b9e8), CONST64(0x15f6f6fff6e309f1), CONST64(0x4c464605460a438c), -CONST64(0xa5acac8aac092645), CONST64(0xb589891e893c970f), CONST64(0xb414145014a04428), CONST64(0xbae1e1a3e15b42df), -CONST64(0xa616165816b04e2c), CONST64(0xf73a3ae83acdd274), CONST64(0x066969b9696fd0d2), CONST64(0x4109092409482d12), -CONST64(0xd77070dd70a7ade0), CONST64(0x6fb6b6e2b6d95471), CONST64(0x1ed0d067d0ceb7bd), CONST64(0xd6eded93ed3b7ec7), -CONST64(0xe2cccc17cc2edb85), CONST64(0x68424215422a5784), CONST64(0x2c98985a98b4c22d), CONST64(0xeda4a4aaa4490e55), -CONST64(0x752828a0285d8850), CONST64(0x865c5c6d5cda31b8), CONST64(0x6bf8f8c7f8933fed), CONST64(0xc28686228644a411) -}; - -static const ulong64 sbox2[] = { -CONST64(0x30d818186018c078), CONST64(0x462623238c2305af), CONST64(0x91b8c6c63fc67ef9), CONST64(0xcdfbe8e887e8136f), -CONST64(0x13cb878726874ca1), CONST64(0x6d11b8b8dab8a962), CONST64(0x0209010104010805), CONST64(0x9e0d4f4f214f426e), -CONST64(0x6c9b3636d836adee), CONST64(0x51ffa6a6a2a65904), CONST64(0xb90cd2d26fd2debd), CONST64(0xf70ef5f5f3f5fb06), -CONST64(0xf2967979f979ef80), CONST64(0xde306f6fa16f5fce), CONST64(0x3f6d91917e91fcef), CONST64(0xa4f852525552aa07), -CONST64(0xc04760609d6027fd), CONST64(0x6535bcbccabc8976), CONST64(0x2b379b9b569baccd), CONST64(0x018a8e8e028e048c), -CONST64(0x5bd2a3a3b6a37115), CONST64(0x186c0c0c300c603c), CONST64(0xf6847b7bf17bff8a), CONST64(0x6a803535d435b5e1), -CONST64(0x3af51d1d741de869), CONST64(0xddb3e0e0a7e05347), CONST64(0xb321d7d77bd7f6ac), CONST64(0x999cc2c22fc25eed), -CONST64(0x5c432e2eb82e6d96), CONST64(0x96294b4b314b627a), CONST64(0xe15dfefedffea321), CONST64(0xaed5575741578216), -CONST64(0x2abd15155415a841), CONST64(0xeee87777c1779fb6), CONST64(0x6e923737dc37a5eb), CONST64(0xd79ee5e5b3e57b56), -CONST64(0x23139f9f469f8cd9), CONST64(0xfd23f0f0e7f0d317), CONST64(0x94204a4a354a6a7f), CONST64(0xa944dada4fda9e95), -CONST64(0xb0a258587d58fa25), CONST64(0x8fcfc9c903c906ca), CONST64(0x527c2929a429558d), CONST64(0x145a0a0a280a5022), -CONST64(0x7f50b1b1feb1e14f), CONST64(0x5dc9a0a0baa0691a), CONST64(0xd6146b6bb16b7fda), CONST64(0x17d985852e855cab), -CONST64(0x673cbdbdcebd8173), CONST64(0xba8f5d5d695dd234), CONST64(0x2090101040108050), CONST64(0xf507f4f4f7f4f303), -CONST64(0x8bddcbcb0bcb16c0), CONST64(0x7cd33e3ef83eedc6), CONST64(0x0a2d050514052811), CONST64(0xce78676781671fe6), -CONST64(0xd597e4e4b7e47353), CONST64(0x4e0227279c2725bb), CONST64(0x8273414119413258), CONST64(0x0ba78b8b168b2c9d), -CONST64(0x53f6a7a7a6a75101), CONST64(0xfab27d7de97dcf94), CONST64(0x374995956e95dcfb), CONST64(0xad56d8d847d88e9f), -CONST64(0xeb70fbfbcbfb8b30), CONST64(0xc1cdeeee9fee2371), CONST64(0xf8bb7c7ced7cc791), CONST64(0xcc716666856617e3), -CONST64(0xa77bdddd53dda68e), CONST64(0x2eaf17175c17b84b), CONST64(0x8e45474701470246), CONST64(0x211a9e9e429e84dc), -CONST64(0x89d4caca0fca1ec5), CONST64(0x5a582d2db42d7599), CONST64(0x632ebfbfc6bf9179), CONST64(0x0e3f07071c07381b), -CONST64(0x47acadad8ead0123), CONST64(0xb4b05a5a755aea2f), CONST64(0x1bef838336836cb5), CONST64(0x66b63333cc3385ff), -CONST64(0xc65c636391633ff2), CONST64(0x041202020802100a), CONST64(0x4993aaaa92aa3938), CONST64(0xe2de7171d971afa8), -CONST64(0x8dc6c8c807c80ecf), CONST64(0x32d119196419c87d), CONST64(0x923b494939497270), CONST64(0xaf5fd9d943d9869a), -CONST64(0xf931f2f2eff2c31d), CONST64(0xdba8e3e3abe34b48), CONST64(0xb6b95b5b715be22a), CONST64(0x0dbc88881a883492), -CONST64(0x293e9a9a529aa4c8), CONST64(0x4c0b262698262dbe), CONST64(0x64bf3232c8328dfa), CONST64(0x7d59b0b0fab0e94a), -CONST64(0xcff2e9e983e91b6a), CONST64(0x1e770f0f3c0f7833), CONST64(0xb733d5d573d5e6a6), CONST64(0x1df480803a8074ba), -CONST64(0x6127bebec2be997c), CONST64(0x87ebcdcd13cd26de), CONST64(0x68893434d034bde4), CONST64(0x903248483d487a75), -CONST64(0xe354ffffdbffab24), CONST64(0xf48d7a7af57af78f), CONST64(0x3d6490907a90f4ea), CONST64(0xbe9d5f5f615fc23e), -CONST64(0x403d202080201da0), CONST64(0xd00f6868bd6867d5), CONST64(0x34ca1a1a681ad072), CONST64(0x41b7aeae82ae192c), -CONST64(0x757db4b4eab4c95e), CONST64(0xa8ce54544d549a19), CONST64(0x3b7f93937693ece5), CONST64(0x442f222288220daa), -CONST64(0xc86364648d6407e9), CONST64(0xff2af1f1e3f1db12), CONST64(0xe6cc7373d173bfa2), CONST64(0x248212124812905a), -CONST64(0x807a40401d403a5d), CONST64(0x1048080820084028), CONST64(0x9b95c3c32bc356e8), CONST64(0xc5dfecec97ec337b), -CONST64(0xab4ddbdb4bdb9690), CONST64(0x5fc0a1a1bea1611f), CONST64(0x07918d8d0e8d1c83), CONST64(0x7ac83d3df43df5c9), -CONST64(0x335b97976697ccf1), CONST64(0x0000000000000000), CONST64(0x83f9cfcf1bcf36d4), CONST64(0x566e2b2bac2b4587), -CONST64(0xece17676c57697b3), CONST64(0x19e68282328264b0), CONST64(0xb128d6d67fd6fea9), CONST64(0x36c31b1b6c1bd877), -CONST64(0x7774b5b5eeb5c15b), CONST64(0x43beafaf86af1129), CONST64(0xd41d6a6ab56a77df), CONST64(0xa0ea50505d50ba0d), -CONST64(0x8a5745450945124c), CONST64(0xfb38f3f3ebf3cb18), CONST64(0x60ad3030c0309df0), CONST64(0xc3c4efef9bef2b74), -CONST64(0x7eda3f3ffc3fe5c3), CONST64(0xaac755554955921c), CONST64(0x59dba2a2b2a27910), CONST64(0xc9e9eaea8fea0365), -CONST64(0xca6a656589650fec), CONST64(0x6903babad2bab968), CONST64(0x5e4a2f2fbc2f6593), CONST64(0x9d8ec0c027c04ee7), -CONST64(0xa160dede5fdebe81), CONST64(0x38fc1c1c701ce06c), CONST64(0xe746fdfdd3fdbb2e), CONST64(0x9a1f4d4d294d5264), -CONST64(0x397692927292e4e0), CONST64(0xeafa7575c9758fbc), CONST64(0x0c3606061806301e), CONST64(0x09ae8a8a128a2498), -CONST64(0x794bb2b2f2b2f940), CONST64(0xd185e6e6bfe66359), CONST64(0x1c7e0e0e380e7036), CONST64(0x3ee71f1f7c1ff863), -CONST64(0xc4556262956237f7), CONST64(0xb53ad4d477d4eea3), CONST64(0x4d81a8a89aa82932), CONST64(0x315296966296c4f4), -CONST64(0xef62f9f9c3f99b3a), CONST64(0x97a3c5c533c566f6), CONST64(0x4a102525942535b1), CONST64(0xb2ab59597959f220), -CONST64(0x15d084842a8454ae), CONST64(0xe4c57272d572b7a7), CONST64(0x72ec3939e439d5dd), CONST64(0x98164c4c2d4c5a61), -CONST64(0xbc945e5e655eca3b), CONST64(0xf09f7878fd78e785), CONST64(0x70e53838e038ddd8), CONST64(0x05988c8c0a8c1486), -CONST64(0xbf17d1d163d1c6b2), CONST64(0x57e4a5a5aea5410b), CONST64(0xd9a1e2e2afe2434d), CONST64(0xc24e616199612ff8), -CONST64(0x7b42b3b3f6b3f145), CONST64(0x42342121842115a5), CONST64(0x25089c9c4a9c94d6), CONST64(0x3cee1e1e781ef066), -CONST64(0x8661434311432252), CONST64(0x93b1c7c73bc776fc), CONST64(0xe54ffcfcd7fcb32b), CONST64(0x0824040410042014), -CONST64(0xa2e351515951b208), CONST64(0x2f2599995e99bcc7), CONST64(0xda226d6da96d4fc4), CONST64(0x1a650d0d340d6839), -CONST64(0xe979fafacffa8335), CONST64(0xa369dfdf5bdfb684), CONST64(0xfca97e7ee57ed79b), CONST64(0x4819242490243db4), -CONST64(0x76fe3b3bec3bc5d7), CONST64(0x4b9aabab96ab313d), CONST64(0x81f0cece1fce3ed1), CONST64(0x2299111144118855), -CONST64(0x03838f8f068f0c89), CONST64(0x9c044e4e254e4a6b), CONST64(0x7366b7b7e6b7d151), CONST64(0xcbe0ebeb8beb0b60), -CONST64(0x78c13c3cf03cfdcc), CONST64(0x1ffd81813e817cbf), CONST64(0x354094946a94d4fe), CONST64(0xf31cf7f7fbf7eb0c), -CONST64(0x6f18b9b9deb9a167), CONST64(0x268b13134c13985f), CONST64(0x58512c2cb02c7d9c), CONST64(0xbb05d3d36bd3d6b8), -CONST64(0xd38ce7e7bbe76b5c), CONST64(0xdc396e6ea56e57cb), CONST64(0x95aac4c437c46ef3), CONST64(0x061b03030c03180f), -CONST64(0xacdc565645568a13), CONST64(0x885e44440d441a49), CONST64(0xfea07f7fe17fdf9e), CONST64(0x4f88a9a99ea92137), -CONST64(0x54672a2aa82a4d82), CONST64(0x6b0abbbbd6bbb16d), CONST64(0x9f87c1c123c146e2), CONST64(0xa6f153535153a202), -CONST64(0xa572dcdc57dcae8b), CONST64(0x16530b0b2c0b5827), CONST64(0x27019d9d4e9d9cd3), CONST64(0xd82b6c6cad6c47c1), -CONST64(0x62a43131c43195f5), CONST64(0xe8f37474cd7487b9), CONST64(0xf115f6f6fff6e309), CONST64(0x8c4c464605460a43), -CONST64(0x45a5acac8aac0926), CONST64(0x0fb589891e893c97), CONST64(0x28b414145014a044), CONST64(0xdfbae1e1a3e15b42), -CONST64(0x2ca616165816b04e), CONST64(0x74f73a3ae83acdd2), CONST64(0xd2066969b9696fd0), CONST64(0x124109092409482d), -CONST64(0xe0d77070dd70a7ad), CONST64(0x716fb6b6e2b6d954), CONST64(0xbd1ed0d067d0ceb7), CONST64(0xc7d6eded93ed3b7e), -CONST64(0x85e2cccc17cc2edb), CONST64(0x8468424215422a57), CONST64(0x2d2c98985a98b4c2), CONST64(0x55eda4a4aaa4490e), -CONST64(0x50752828a0285d88), CONST64(0xb8865c5c6d5cda31), CONST64(0xed6bf8f8c7f8933f), CONST64(0x11c28686228644a4) -}; - -static const ulong64 sbox3[] = { -CONST64(0x7830d818186018c0), CONST64(0xaf462623238c2305), CONST64(0xf991b8c6c63fc67e), CONST64(0x6fcdfbe8e887e813), -CONST64(0xa113cb878726874c), CONST64(0x626d11b8b8dab8a9), CONST64(0x0502090101040108), CONST64(0x6e9e0d4f4f214f42), -CONST64(0xee6c9b3636d836ad), CONST64(0x0451ffa6a6a2a659), CONST64(0xbdb90cd2d26fd2de), CONST64(0x06f70ef5f5f3f5fb), -CONST64(0x80f2967979f979ef), CONST64(0xcede306f6fa16f5f), CONST64(0xef3f6d91917e91fc), CONST64(0x07a4f852525552aa), -CONST64(0xfdc04760609d6027), CONST64(0x766535bcbccabc89), CONST64(0xcd2b379b9b569bac), CONST64(0x8c018a8e8e028e04), -CONST64(0x155bd2a3a3b6a371), CONST64(0x3c186c0c0c300c60), CONST64(0x8af6847b7bf17bff), CONST64(0xe16a803535d435b5), -CONST64(0x693af51d1d741de8), CONST64(0x47ddb3e0e0a7e053), CONST64(0xacb321d7d77bd7f6), CONST64(0xed999cc2c22fc25e), -CONST64(0x965c432e2eb82e6d), CONST64(0x7a96294b4b314b62), CONST64(0x21e15dfefedffea3), CONST64(0x16aed55757415782), -CONST64(0x412abd15155415a8), CONST64(0xb6eee87777c1779f), CONST64(0xeb6e923737dc37a5), CONST64(0x56d79ee5e5b3e57b), -CONST64(0xd923139f9f469f8c), CONST64(0x17fd23f0f0e7f0d3), CONST64(0x7f94204a4a354a6a), CONST64(0x95a944dada4fda9e), -CONST64(0x25b0a258587d58fa), CONST64(0xca8fcfc9c903c906), CONST64(0x8d527c2929a42955), CONST64(0x22145a0a0a280a50), -CONST64(0x4f7f50b1b1feb1e1), CONST64(0x1a5dc9a0a0baa069), CONST64(0xdad6146b6bb16b7f), CONST64(0xab17d985852e855c), -CONST64(0x73673cbdbdcebd81), CONST64(0x34ba8f5d5d695dd2), CONST64(0x5020901010401080), CONST64(0x03f507f4f4f7f4f3), -CONST64(0xc08bddcbcb0bcb16), CONST64(0xc67cd33e3ef83eed), CONST64(0x110a2d0505140528), CONST64(0xe6ce78676781671f), -CONST64(0x53d597e4e4b7e473), CONST64(0xbb4e0227279c2725), CONST64(0x5882734141194132), CONST64(0x9d0ba78b8b168b2c), -CONST64(0x0153f6a7a7a6a751), CONST64(0x94fab27d7de97dcf), CONST64(0xfb374995956e95dc), CONST64(0x9fad56d8d847d88e), -CONST64(0x30eb70fbfbcbfb8b), CONST64(0x71c1cdeeee9fee23), CONST64(0x91f8bb7c7ced7cc7), CONST64(0xe3cc716666856617), -CONST64(0x8ea77bdddd53dda6), CONST64(0x4b2eaf17175c17b8), CONST64(0x468e454747014702), CONST64(0xdc211a9e9e429e84), -CONST64(0xc589d4caca0fca1e), CONST64(0x995a582d2db42d75), CONST64(0x79632ebfbfc6bf91), CONST64(0x1b0e3f07071c0738), -CONST64(0x2347acadad8ead01), CONST64(0x2fb4b05a5a755aea), CONST64(0xb51bef838336836c), CONST64(0xff66b63333cc3385), -CONST64(0xf2c65c636391633f), CONST64(0x0a04120202080210), CONST64(0x384993aaaa92aa39), CONST64(0xa8e2de7171d971af), -CONST64(0xcf8dc6c8c807c80e), CONST64(0x7d32d119196419c8), CONST64(0x70923b4949394972), CONST64(0x9aaf5fd9d943d986), -CONST64(0x1df931f2f2eff2c3), CONST64(0x48dba8e3e3abe34b), CONST64(0x2ab6b95b5b715be2), CONST64(0x920dbc88881a8834), -CONST64(0xc8293e9a9a529aa4), CONST64(0xbe4c0b262698262d), CONST64(0xfa64bf3232c8328d), CONST64(0x4a7d59b0b0fab0e9), -CONST64(0x6acff2e9e983e91b), CONST64(0x331e770f0f3c0f78), CONST64(0xa6b733d5d573d5e6), CONST64(0xba1df480803a8074), -CONST64(0x7c6127bebec2be99), CONST64(0xde87ebcdcd13cd26), CONST64(0xe468893434d034bd), CONST64(0x75903248483d487a), -CONST64(0x24e354ffffdbffab), CONST64(0x8ff48d7a7af57af7), CONST64(0xea3d6490907a90f4), CONST64(0x3ebe9d5f5f615fc2), -CONST64(0xa0403d202080201d), CONST64(0xd5d00f6868bd6867), CONST64(0x7234ca1a1a681ad0), CONST64(0x2c41b7aeae82ae19), -CONST64(0x5e757db4b4eab4c9), CONST64(0x19a8ce54544d549a), CONST64(0xe53b7f93937693ec), CONST64(0xaa442f222288220d), -CONST64(0xe9c86364648d6407), CONST64(0x12ff2af1f1e3f1db), CONST64(0xa2e6cc7373d173bf), CONST64(0x5a24821212481290), -CONST64(0x5d807a40401d403a), CONST64(0x2810480808200840), CONST64(0xe89b95c3c32bc356), CONST64(0x7bc5dfecec97ec33), -CONST64(0x90ab4ddbdb4bdb96), CONST64(0x1f5fc0a1a1bea161), CONST64(0x8307918d8d0e8d1c), CONST64(0xc97ac83d3df43df5), -CONST64(0xf1335b97976697cc), CONST64(0x0000000000000000), CONST64(0xd483f9cfcf1bcf36), CONST64(0x87566e2b2bac2b45), -CONST64(0xb3ece17676c57697), CONST64(0xb019e68282328264), CONST64(0xa9b128d6d67fd6fe), CONST64(0x7736c31b1b6c1bd8), -CONST64(0x5b7774b5b5eeb5c1), CONST64(0x2943beafaf86af11), CONST64(0xdfd41d6a6ab56a77), CONST64(0x0da0ea50505d50ba), -CONST64(0x4c8a574545094512), CONST64(0x18fb38f3f3ebf3cb), CONST64(0xf060ad3030c0309d), CONST64(0x74c3c4efef9bef2b), -CONST64(0xc37eda3f3ffc3fe5), CONST64(0x1caac75555495592), CONST64(0x1059dba2a2b2a279), CONST64(0x65c9e9eaea8fea03), -CONST64(0xecca6a656589650f), CONST64(0x686903babad2bab9), CONST64(0x935e4a2f2fbc2f65), CONST64(0xe79d8ec0c027c04e), -CONST64(0x81a160dede5fdebe), CONST64(0x6c38fc1c1c701ce0), CONST64(0x2ee746fdfdd3fdbb), CONST64(0x649a1f4d4d294d52), -CONST64(0xe0397692927292e4), CONST64(0xbceafa7575c9758f), CONST64(0x1e0c360606180630), CONST64(0x9809ae8a8a128a24), -CONST64(0x40794bb2b2f2b2f9), CONST64(0x59d185e6e6bfe663), CONST64(0x361c7e0e0e380e70), CONST64(0x633ee71f1f7c1ff8), -CONST64(0xf7c4556262956237), CONST64(0xa3b53ad4d477d4ee), CONST64(0x324d81a8a89aa829), CONST64(0xf4315296966296c4), -CONST64(0x3aef62f9f9c3f99b), CONST64(0xf697a3c5c533c566), CONST64(0xb14a102525942535), CONST64(0x20b2ab59597959f2), -CONST64(0xae15d084842a8454), CONST64(0xa7e4c57272d572b7), CONST64(0xdd72ec3939e439d5), CONST64(0x6198164c4c2d4c5a), -CONST64(0x3bbc945e5e655eca), CONST64(0x85f09f7878fd78e7), CONST64(0xd870e53838e038dd), CONST64(0x8605988c8c0a8c14), -CONST64(0xb2bf17d1d163d1c6), CONST64(0x0b57e4a5a5aea541), CONST64(0x4dd9a1e2e2afe243), CONST64(0xf8c24e616199612f), -CONST64(0x457b42b3b3f6b3f1), CONST64(0xa542342121842115), CONST64(0xd625089c9c4a9c94), CONST64(0x663cee1e1e781ef0), -CONST64(0x5286614343114322), CONST64(0xfc93b1c7c73bc776), CONST64(0x2be54ffcfcd7fcb3), CONST64(0x1408240404100420), -CONST64(0x08a2e351515951b2), CONST64(0xc72f2599995e99bc), CONST64(0xc4da226d6da96d4f), CONST64(0x391a650d0d340d68), -CONST64(0x35e979fafacffa83), CONST64(0x84a369dfdf5bdfb6), CONST64(0x9bfca97e7ee57ed7), CONST64(0xb44819242490243d), -CONST64(0xd776fe3b3bec3bc5), CONST64(0x3d4b9aabab96ab31), CONST64(0xd181f0cece1fce3e), CONST64(0x5522991111441188), -CONST64(0x8903838f8f068f0c), CONST64(0x6b9c044e4e254e4a), CONST64(0x517366b7b7e6b7d1), CONST64(0x60cbe0ebeb8beb0b), -CONST64(0xcc78c13c3cf03cfd), CONST64(0xbf1ffd81813e817c), CONST64(0xfe354094946a94d4), CONST64(0x0cf31cf7f7fbf7eb), -CONST64(0x676f18b9b9deb9a1), CONST64(0x5f268b13134c1398), CONST64(0x9c58512c2cb02c7d), CONST64(0xb8bb05d3d36bd3d6), -CONST64(0x5cd38ce7e7bbe76b), CONST64(0xcbdc396e6ea56e57), CONST64(0xf395aac4c437c46e), CONST64(0x0f061b03030c0318), -CONST64(0x13acdc565645568a), CONST64(0x49885e44440d441a), CONST64(0x9efea07f7fe17fdf), CONST64(0x374f88a9a99ea921), -CONST64(0x8254672a2aa82a4d), CONST64(0x6d6b0abbbbd6bbb1), CONST64(0xe29f87c1c123c146), CONST64(0x02a6f153535153a2), -CONST64(0x8ba572dcdc57dcae), CONST64(0x2716530b0b2c0b58), CONST64(0xd327019d9d4e9d9c), CONST64(0xc1d82b6c6cad6c47), -CONST64(0xf562a43131c43195), CONST64(0xb9e8f37474cd7487), CONST64(0x09f115f6f6fff6e3), CONST64(0x438c4c464605460a), -CONST64(0x2645a5acac8aac09), CONST64(0x970fb589891e893c), CONST64(0x4428b414145014a0), CONST64(0x42dfbae1e1a3e15b), -CONST64(0x4e2ca616165816b0), CONST64(0xd274f73a3ae83acd), CONST64(0xd0d2066969b9696f), CONST64(0x2d12410909240948), -CONST64(0xade0d77070dd70a7), CONST64(0x54716fb6b6e2b6d9), CONST64(0xb7bd1ed0d067d0ce), CONST64(0x7ec7d6eded93ed3b), -CONST64(0xdb85e2cccc17cc2e), CONST64(0x578468424215422a), CONST64(0xc22d2c98985a98b4), CONST64(0x0e55eda4a4aaa449), -CONST64(0x8850752828a0285d), CONST64(0x31b8865c5c6d5cda), CONST64(0x3fed6bf8f8c7f893), CONST64(0xa411c28686228644) -}; - -static const ulong64 sbox4[] = { -CONST64(0xc07830d818186018), CONST64(0x05af462623238c23), CONST64(0x7ef991b8c6c63fc6), CONST64(0x136fcdfbe8e887e8), -CONST64(0x4ca113cb87872687), CONST64(0xa9626d11b8b8dab8), CONST64(0x0805020901010401), CONST64(0x426e9e0d4f4f214f), -CONST64(0xadee6c9b3636d836), CONST64(0x590451ffa6a6a2a6), CONST64(0xdebdb90cd2d26fd2), CONST64(0xfb06f70ef5f5f3f5), -CONST64(0xef80f2967979f979), CONST64(0x5fcede306f6fa16f), CONST64(0xfcef3f6d91917e91), CONST64(0xaa07a4f852525552), -CONST64(0x27fdc04760609d60), CONST64(0x89766535bcbccabc), CONST64(0xaccd2b379b9b569b), CONST64(0x048c018a8e8e028e), -CONST64(0x71155bd2a3a3b6a3), CONST64(0x603c186c0c0c300c), CONST64(0xff8af6847b7bf17b), CONST64(0xb5e16a803535d435), -CONST64(0xe8693af51d1d741d), CONST64(0x5347ddb3e0e0a7e0), CONST64(0xf6acb321d7d77bd7), CONST64(0x5eed999cc2c22fc2), -CONST64(0x6d965c432e2eb82e), CONST64(0x627a96294b4b314b), CONST64(0xa321e15dfefedffe), CONST64(0x8216aed557574157), -CONST64(0xa8412abd15155415), CONST64(0x9fb6eee87777c177), CONST64(0xa5eb6e923737dc37), CONST64(0x7b56d79ee5e5b3e5), -CONST64(0x8cd923139f9f469f), CONST64(0xd317fd23f0f0e7f0), CONST64(0x6a7f94204a4a354a), CONST64(0x9e95a944dada4fda), -CONST64(0xfa25b0a258587d58), CONST64(0x06ca8fcfc9c903c9), CONST64(0x558d527c2929a429), CONST64(0x5022145a0a0a280a), -CONST64(0xe14f7f50b1b1feb1), CONST64(0x691a5dc9a0a0baa0), CONST64(0x7fdad6146b6bb16b), CONST64(0x5cab17d985852e85), -CONST64(0x8173673cbdbdcebd), CONST64(0xd234ba8f5d5d695d), CONST64(0x8050209010104010), CONST64(0xf303f507f4f4f7f4), -CONST64(0x16c08bddcbcb0bcb), CONST64(0xedc67cd33e3ef83e), CONST64(0x28110a2d05051405), CONST64(0x1fe6ce7867678167), -CONST64(0x7353d597e4e4b7e4), CONST64(0x25bb4e0227279c27), CONST64(0x3258827341411941), CONST64(0x2c9d0ba78b8b168b), -CONST64(0x510153f6a7a7a6a7), CONST64(0xcf94fab27d7de97d), CONST64(0xdcfb374995956e95), CONST64(0x8e9fad56d8d847d8), -CONST64(0x8b30eb70fbfbcbfb), CONST64(0x2371c1cdeeee9fee), CONST64(0xc791f8bb7c7ced7c), CONST64(0x17e3cc7166668566), -CONST64(0xa68ea77bdddd53dd), CONST64(0xb84b2eaf17175c17), CONST64(0x02468e4547470147), CONST64(0x84dc211a9e9e429e), -CONST64(0x1ec589d4caca0fca), CONST64(0x75995a582d2db42d), CONST64(0x9179632ebfbfc6bf), CONST64(0x381b0e3f07071c07), -CONST64(0x012347acadad8ead), CONST64(0xea2fb4b05a5a755a), CONST64(0x6cb51bef83833683), CONST64(0x85ff66b63333cc33), -CONST64(0x3ff2c65c63639163), CONST64(0x100a041202020802), CONST64(0x39384993aaaa92aa), CONST64(0xafa8e2de7171d971), -CONST64(0x0ecf8dc6c8c807c8), CONST64(0xc87d32d119196419), CONST64(0x7270923b49493949), CONST64(0x869aaf5fd9d943d9), -CONST64(0xc31df931f2f2eff2), CONST64(0x4b48dba8e3e3abe3), CONST64(0xe22ab6b95b5b715b), CONST64(0x34920dbc88881a88), -CONST64(0xa4c8293e9a9a529a), CONST64(0x2dbe4c0b26269826), CONST64(0x8dfa64bf3232c832), CONST64(0xe94a7d59b0b0fab0), -CONST64(0x1b6acff2e9e983e9), CONST64(0x78331e770f0f3c0f), CONST64(0xe6a6b733d5d573d5), CONST64(0x74ba1df480803a80), -CONST64(0x997c6127bebec2be), CONST64(0x26de87ebcdcd13cd), CONST64(0xbde468893434d034), CONST64(0x7a75903248483d48), -CONST64(0xab24e354ffffdbff), CONST64(0xf78ff48d7a7af57a), CONST64(0xf4ea3d6490907a90), CONST64(0xc23ebe9d5f5f615f), -CONST64(0x1da0403d20208020), CONST64(0x67d5d00f6868bd68), CONST64(0xd07234ca1a1a681a), CONST64(0x192c41b7aeae82ae), -CONST64(0xc95e757db4b4eab4), CONST64(0x9a19a8ce54544d54), CONST64(0xece53b7f93937693), CONST64(0x0daa442f22228822), -CONST64(0x07e9c86364648d64), CONST64(0xdb12ff2af1f1e3f1), CONST64(0xbfa2e6cc7373d173), CONST64(0x905a248212124812), -CONST64(0x3a5d807a40401d40), CONST64(0x4028104808082008), CONST64(0x56e89b95c3c32bc3), CONST64(0x337bc5dfecec97ec), -CONST64(0x9690ab4ddbdb4bdb), CONST64(0x611f5fc0a1a1bea1), CONST64(0x1c8307918d8d0e8d), CONST64(0xf5c97ac83d3df43d), -CONST64(0xccf1335b97976697), CONST64(0x0000000000000000), CONST64(0x36d483f9cfcf1bcf), CONST64(0x4587566e2b2bac2b), -CONST64(0x97b3ece17676c576), CONST64(0x64b019e682823282), CONST64(0xfea9b128d6d67fd6), CONST64(0xd87736c31b1b6c1b), -CONST64(0xc15b7774b5b5eeb5), CONST64(0x112943beafaf86af), CONST64(0x77dfd41d6a6ab56a), CONST64(0xba0da0ea50505d50), -CONST64(0x124c8a5745450945), CONST64(0xcb18fb38f3f3ebf3), CONST64(0x9df060ad3030c030), CONST64(0x2b74c3c4efef9bef), -CONST64(0xe5c37eda3f3ffc3f), CONST64(0x921caac755554955), CONST64(0x791059dba2a2b2a2), CONST64(0x0365c9e9eaea8fea), -CONST64(0x0fecca6a65658965), CONST64(0xb9686903babad2ba), CONST64(0x65935e4a2f2fbc2f), CONST64(0x4ee79d8ec0c027c0), -CONST64(0xbe81a160dede5fde), CONST64(0xe06c38fc1c1c701c), CONST64(0xbb2ee746fdfdd3fd), CONST64(0x52649a1f4d4d294d), -CONST64(0xe4e0397692927292), CONST64(0x8fbceafa7575c975), CONST64(0x301e0c3606061806), CONST64(0x249809ae8a8a128a), -CONST64(0xf940794bb2b2f2b2), CONST64(0x6359d185e6e6bfe6), CONST64(0x70361c7e0e0e380e), CONST64(0xf8633ee71f1f7c1f), -CONST64(0x37f7c45562629562), CONST64(0xeea3b53ad4d477d4), CONST64(0x29324d81a8a89aa8), CONST64(0xc4f4315296966296), -CONST64(0x9b3aef62f9f9c3f9), CONST64(0x66f697a3c5c533c5), CONST64(0x35b14a1025259425), CONST64(0xf220b2ab59597959), -CONST64(0x54ae15d084842a84), CONST64(0xb7a7e4c57272d572), CONST64(0xd5dd72ec3939e439), CONST64(0x5a6198164c4c2d4c), -CONST64(0xca3bbc945e5e655e), CONST64(0xe785f09f7878fd78), CONST64(0xddd870e53838e038), CONST64(0x148605988c8c0a8c), -CONST64(0xc6b2bf17d1d163d1), CONST64(0x410b57e4a5a5aea5), CONST64(0x434dd9a1e2e2afe2), CONST64(0x2ff8c24e61619961), -CONST64(0xf1457b42b3b3f6b3), CONST64(0x15a5423421218421), CONST64(0x94d625089c9c4a9c), CONST64(0xf0663cee1e1e781e), -CONST64(0x2252866143431143), CONST64(0x76fc93b1c7c73bc7), CONST64(0xb32be54ffcfcd7fc), CONST64(0x2014082404041004), -CONST64(0xb208a2e351515951), CONST64(0xbcc72f2599995e99), CONST64(0x4fc4da226d6da96d), CONST64(0x68391a650d0d340d), -CONST64(0x8335e979fafacffa), CONST64(0xb684a369dfdf5bdf), CONST64(0xd79bfca97e7ee57e), CONST64(0x3db4481924249024), -CONST64(0xc5d776fe3b3bec3b), CONST64(0x313d4b9aabab96ab), CONST64(0x3ed181f0cece1fce), CONST64(0x8855229911114411), -CONST64(0x0c8903838f8f068f), CONST64(0x4a6b9c044e4e254e), CONST64(0xd1517366b7b7e6b7), CONST64(0x0b60cbe0ebeb8beb), -CONST64(0xfdcc78c13c3cf03c), CONST64(0x7cbf1ffd81813e81), CONST64(0xd4fe354094946a94), CONST64(0xeb0cf31cf7f7fbf7), -CONST64(0xa1676f18b9b9deb9), CONST64(0x985f268b13134c13), CONST64(0x7d9c58512c2cb02c), CONST64(0xd6b8bb05d3d36bd3), -CONST64(0x6b5cd38ce7e7bbe7), CONST64(0x57cbdc396e6ea56e), CONST64(0x6ef395aac4c437c4), CONST64(0x180f061b03030c03), -CONST64(0x8a13acdc56564556), CONST64(0x1a49885e44440d44), CONST64(0xdf9efea07f7fe17f), CONST64(0x21374f88a9a99ea9), -CONST64(0x4d8254672a2aa82a), CONST64(0xb16d6b0abbbbd6bb), CONST64(0x46e29f87c1c123c1), CONST64(0xa202a6f153535153), -CONST64(0xae8ba572dcdc57dc), CONST64(0x582716530b0b2c0b), CONST64(0x9cd327019d9d4e9d), CONST64(0x47c1d82b6c6cad6c), -CONST64(0x95f562a43131c431), CONST64(0x87b9e8f37474cd74), CONST64(0xe309f115f6f6fff6), CONST64(0x0a438c4c46460546), -CONST64(0x092645a5acac8aac), CONST64(0x3c970fb589891e89), CONST64(0xa04428b414145014), CONST64(0x5b42dfbae1e1a3e1), -CONST64(0xb04e2ca616165816), CONST64(0xcdd274f73a3ae83a), CONST64(0x6fd0d2066969b969), CONST64(0x482d124109092409), -CONST64(0xa7ade0d77070dd70), CONST64(0xd954716fb6b6e2b6), CONST64(0xceb7bd1ed0d067d0), CONST64(0x3b7ec7d6eded93ed), -CONST64(0x2edb85e2cccc17cc), CONST64(0x2a57846842421542), CONST64(0xb4c22d2c98985a98), CONST64(0x490e55eda4a4aaa4), -CONST64(0x5d8850752828a028), CONST64(0xda31b8865c5c6d5c), CONST64(0x933fed6bf8f8c7f8), CONST64(0x44a411c286862286) -}; - -static const ulong64 sbox5[] = { -CONST64(0x18c07830d8181860), CONST64(0x2305af462623238c), CONST64(0xc67ef991b8c6c63f), CONST64(0xe8136fcdfbe8e887), -CONST64(0x874ca113cb878726), CONST64(0xb8a9626d11b8b8da), CONST64(0x0108050209010104), CONST64(0x4f426e9e0d4f4f21), -CONST64(0x36adee6c9b3636d8), CONST64(0xa6590451ffa6a6a2), CONST64(0xd2debdb90cd2d26f), CONST64(0xf5fb06f70ef5f5f3), -CONST64(0x79ef80f2967979f9), CONST64(0x6f5fcede306f6fa1), CONST64(0x91fcef3f6d91917e), CONST64(0x52aa07a4f8525255), -CONST64(0x6027fdc04760609d), CONST64(0xbc89766535bcbcca), CONST64(0x9baccd2b379b9b56), CONST64(0x8e048c018a8e8e02), -CONST64(0xa371155bd2a3a3b6), CONST64(0x0c603c186c0c0c30), CONST64(0x7bff8af6847b7bf1), CONST64(0x35b5e16a803535d4), -CONST64(0x1de8693af51d1d74), CONST64(0xe05347ddb3e0e0a7), CONST64(0xd7f6acb321d7d77b), CONST64(0xc25eed999cc2c22f), -CONST64(0x2e6d965c432e2eb8), CONST64(0x4b627a96294b4b31), CONST64(0xfea321e15dfefedf), CONST64(0x578216aed5575741), -CONST64(0x15a8412abd151554), CONST64(0x779fb6eee87777c1), CONST64(0x37a5eb6e923737dc), CONST64(0xe57b56d79ee5e5b3), -CONST64(0x9f8cd923139f9f46), CONST64(0xf0d317fd23f0f0e7), CONST64(0x4a6a7f94204a4a35), CONST64(0xda9e95a944dada4f), -CONST64(0x58fa25b0a258587d), CONST64(0xc906ca8fcfc9c903), CONST64(0x29558d527c2929a4), CONST64(0x0a5022145a0a0a28), -CONST64(0xb1e14f7f50b1b1fe), CONST64(0xa0691a5dc9a0a0ba), CONST64(0x6b7fdad6146b6bb1), CONST64(0x855cab17d985852e), -CONST64(0xbd8173673cbdbdce), CONST64(0x5dd234ba8f5d5d69), CONST64(0x1080502090101040), CONST64(0xf4f303f507f4f4f7), -CONST64(0xcb16c08bddcbcb0b), CONST64(0x3eedc67cd33e3ef8), CONST64(0x0528110a2d050514), CONST64(0x671fe6ce78676781), -CONST64(0xe47353d597e4e4b7), CONST64(0x2725bb4e0227279c), CONST64(0x4132588273414119), CONST64(0x8b2c9d0ba78b8b16), -CONST64(0xa7510153f6a7a7a6), CONST64(0x7dcf94fab27d7de9), CONST64(0x95dcfb374995956e), CONST64(0xd88e9fad56d8d847), -CONST64(0xfb8b30eb70fbfbcb), CONST64(0xee2371c1cdeeee9f), CONST64(0x7cc791f8bb7c7ced), CONST64(0x6617e3cc71666685), -CONST64(0xdda68ea77bdddd53), CONST64(0x17b84b2eaf17175c), CONST64(0x4702468e45474701), CONST64(0x9e84dc211a9e9e42), -CONST64(0xca1ec589d4caca0f), CONST64(0x2d75995a582d2db4), CONST64(0xbf9179632ebfbfc6), CONST64(0x07381b0e3f07071c), -CONST64(0xad012347acadad8e), CONST64(0x5aea2fb4b05a5a75), CONST64(0x836cb51bef838336), CONST64(0x3385ff66b63333cc), -CONST64(0x633ff2c65c636391), CONST64(0x02100a0412020208), CONST64(0xaa39384993aaaa92), CONST64(0x71afa8e2de7171d9), -CONST64(0xc80ecf8dc6c8c807), CONST64(0x19c87d32d1191964), CONST64(0x497270923b494939), CONST64(0xd9869aaf5fd9d943), -CONST64(0xf2c31df931f2f2ef), CONST64(0xe34b48dba8e3e3ab), CONST64(0x5be22ab6b95b5b71), CONST64(0x8834920dbc88881a), -CONST64(0x9aa4c8293e9a9a52), CONST64(0x262dbe4c0b262698), CONST64(0x328dfa64bf3232c8), CONST64(0xb0e94a7d59b0b0fa), -CONST64(0xe91b6acff2e9e983), CONST64(0x0f78331e770f0f3c), CONST64(0xd5e6a6b733d5d573), CONST64(0x8074ba1df480803a), -CONST64(0xbe997c6127bebec2), CONST64(0xcd26de87ebcdcd13), CONST64(0x34bde468893434d0), CONST64(0x487a75903248483d), -CONST64(0xffab24e354ffffdb), CONST64(0x7af78ff48d7a7af5), CONST64(0x90f4ea3d6490907a), CONST64(0x5fc23ebe9d5f5f61), -CONST64(0x201da0403d202080), CONST64(0x6867d5d00f6868bd), CONST64(0x1ad07234ca1a1a68), CONST64(0xae192c41b7aeae82), -CONST64(0xb4c95e757db4b4ea), CONST64(0x549a19a8ce54544d), CONST64(0x93ece53b7f939376), CONST64(0x220daa442f222288), -CONST64(0x6407e9c86364648d), CONST64(0xf1db12ff2af1f1e3), CONST64(0x73bfa2e6cc7373d1), CONST64(0x12905a2482121248), -CONST64(0x403a5d807a40401d), CONST64(0x0840281048080820), CONST64(0xc356e89b95c3c32b), CONST64(0xec337bc5dfecec97), -CONST64(0xdb9690ab4ddbdb4b), CONST64(0xa1611f5fc0a1a1be), CONST64(0x8d1c8307918d8d0e), CONST64(0x3df5c97ac83d3df4), -CONST64(0x97ccf1335b979766), CONST64(0x0000000000000000), CONST64(0xcf36d483f9cfcf1b), CONST64(0x2b4587566e2b2bac), -CONST64(0x7697b3ece17676c5), CONST64(0x8264b019e6828232), CONST64(0xd6fea9b128d6d67f), CONST64(0x1bd87736c31b1b6c), -CONST64(0xb5c15b7774b5b5ee), CONST64(0xaf112943beafaf86), CONST64(0x6a77dfd41d6a6ab5), CONST64(0x50ba0da0ea50505d), -CONST64(0x45124c8a57454509), CONST64(0xf3cb18fb38f3f3eb), CONST64(0x309df060ad3030c0), CONST64(0xef2b74c3c4efef9b), -CONST64(0x3fe5c37eda3f3ffc), CONST64(0x55921caac7555549), CONST64(0xa2791059dba2a2b2), CONST64(0xea0365c9e9eaea8f), -CONST64(0x650fecca6a656589), CONST64(0xbab9686903babad2), CONST64(0x2f65935e4a2f2fbc), CONST64(0xc04ee79d8ec0c027), -CONST64(0xdebe81a160dede5f), CONST64(0x1ce06c38fc1c1c70), CONST64(0xfdbb2ee746fdfdd3), CONST64(0x4d52649a1f4d4d29), -CONST64(0x92e4e03976929272), CONST64(0x758fbceafa7575c9), CONST64(0x06301e0c36060618), CONST64(0x8a249809ae8a8a12), -CONST64(0xb2f940794bb2b2f2), CONST64(0xe66359d185e6e6bf), CONST64(0x0e70361c7e0e0e38), CONST64(0x1ff8633ee71f1f7c), -CONST64(0x6237f7c455626295), CONST64(0xd4eea3b53ad4d477), CONST64(0xa829324d81a8a89a), CONST64(0x96c4f43152969662), -CONST64(0xf99b3aef62f9f9c3), CONST64(0xc566f697a3c5c533), CONST64(0x2535b14a10252594), CONST64(0x59f220b2ab595979), -CONST64(0x8454ae15d084842a), CONST64(0x72b7a7e4c57272d5), CONST64(0x39d5dd72ec3939e4), CONST64(0x4c5a6198164c4c2d), -CONST64(0x5eca3bbc945e5e65), CONST64(0x78e785f09f7878fd), CONST64(0x38ddd870e53838e0), CONST64(0x8c148605988c8c0a), -CONST64(0xd1c6b2bf17d1d163), CONST64(0xa5410b57e4a5a5ae), CONST64(0xe2434dd9a1e2e2af), CONST64(0x612ff8c24e616199), -CONST64(0xb3f1457b42b3b3f6), CONST64(0x2115a54234212184), CONST64(0x9c94d625089c9c4a), CONST64(0x1ef0663cee1e1e78), -CONST64(0x4322528661434311), CONST64(0xc776fc93b1c7c73b), CONST64(0xfcb32be54ffcfcd7), CONST64(0x0420140824040410), -CONST64(0x51b208a2e3515159), CONST64(0x99bcc72f2599995e), CONST64(0x6d4fc4da226d6da9), CONST64(0x0d68391a650d0d34), -CONST64(0xfa8335e979fafacf), CONST64(0xdfb684a369dfdf5b), CONST64(0x7ed79bfca97e7ee5), CONST64(0x243db44819242490), -CONST64(0x3bc5d776fe3b3bec), CONST64(0xab313d4b9aabab96), CONST64(0xce3ed181f0cece1f), CONST64(0x1188552299111144), -CONST64(0x8f0c8903838f8f06), CONST64(0x4e4a6b9c044e4e25), CONST64(0xb7d1517366b7b7e6), CONST64(0xeb0b60cbe0ebeb8b), -CONST64(0x3cfdcc78c13c3cf0), CONST64(0x817cbf1ffd81813e), CONST64(0x94d4fe354094946a), CONST64(0xf7eb0cf31cf7f7fb), -CONST64(0xb9a1676f18b9b9de), CONST64(0x13985f268b13134c), CONST64(0x2c7d9c58512c2cb0), CONST64(0xd3d6b8bb05d3d36b), -CONST64(0xe76b5cd38ce7e7bb), CONST64(0x6e57cbdc396e6ea5), CONST64(0xc46ef395aac4c437), CONST64(0x03180f061b03030c), -CONST64(0x568a13acdc565645), CONST64(0x441a49885e44440d), CONST64(0x7fdf9efea07f7fe1), CONST64(0xa921374f88a9a99e), -CONST64(0x2a4d8254672a2aa8), CONST64(0xbbb16d6b0abbbbd6), CONST64(0xc146e29f87c1c123), CONST64(0x53a202a6f1535351), -CONST64(0xdcae8ba572dcdc57), CONST64(0x0b582716530b0b2c), CONST64(0x9d9cd327019d9d4e), CONST64(0x6c47c1d82b6c6cad), -CONST64(0x3195f562a43131c4), CONST64(0x7487b9e8f37474cd), CONST64(0xf6e309f115f6f6ff), CONST64(0x460a438c4c464605), -CONST64(0xac092645a5acac8a), CONST64(0x893c970fb589891e), CONST64(0x14a04428b4141450), CONST64(0xe15b42dfbae1e1a3), -CONST64(0x16b04e2ca6161658), CONST64(0x3acdd274f73a3ae8), CONST64(0x696fd0d2066969b9), CONST64(0x09482d1241090924), -CONST64(0x70a7ade0d77070dd), CONST64(0xb6d954716fb6b6e2), CONST64(0xd0ceb7bd1ed0d067), CONST64(0xed3b7ec7d6eded93), -CONST64(0xcc2edb85e2cccc17), CONST64(0x422a578468424215), CONST64(0x98b4c22d2c98985a), CONST64(0xa4490e55eda4a4aa), -CONST64(0x285d8850752828a0), CONST64(0x5cda31b8865c5c6d), CONST64(0xf8933fed6bf8f8c7), CONST64(0x8644a411c2868622) -}; - -static const ulong64 sbox6[] = { -CONST64(0x6018c07830d81818), CONST64(0x8c2305af46262323), CONST64(0x3fc67ef991b8c6c6), CONST64(0x87e8136fcdfbe8e8), -CONST64(0x26874ca113cb8787), CONST64(0xdab8a9626d11b8b8), CONST64(0x0401080502090101), CONST64(0x214f426e9e0d4f4f), -CONST64(0xd836adee6c9b3636), CONST64(0xa2a6590451ffa6a6), CONST64(0x6fd2debdb90cd2d2), CONST64(0xf3f5fb06f70ef5f5), -CONST64(0xf979ef80f2967979), CONST64(0xa16f5fcede306f6f), CONST64(0x7e91fcef3f6d9191), CONST64(0x5552aa07a4f85252), -CONST64(0x9d6027fdc0476060), CONST64(0xcabc89766535bcbc), CONST64(0x569baccd2b379b9b), CONST64(0x028e048c018a8e8e), -CONST64(0xb6a371155bd2a3a3), CONST64(0x300c603c186c0c0c), CONST64(0xf17bff8af6847b7b), CONST64(0xd435b5e16a803535), -CONST64(0x741de8693af51d1d), CONST64(0xa7e05347ddb3e0e0), CONST64(0x7bd7f6acb321d7d7), CONST64(0x2fc25eed999cc2c2), -CONST64(0xb82e6d965c432e2e), CONST64(0x314b627a96294b4b), CONST64(0xdffea321e15dfefe), CONST64(0x41578216aed55757), -CONST64(0x5415a8412abd1515), CONST64(0xc1779fb6eee87777), CONST64(0xdc37a5eb6e923737), CONST64(0xb3e57b56d79ee5e5), -CONST64(0x469f8cd923139f9f), CONST64(0xe7f0d317fd23f0f0), CONST64(0x354a6a7f94204a4a), CONST64(0x4fda9e95a944dada), -CONST64(0x7d58fa25b0a25858), CONST64(0x03c906ca8fcfc9c9), CONST64(0xa429558d527c2929), CONST64(0x280a5022145a0a0a), -CONST64(0xfeb1e14f7f50b1b1), CONST64(0xbaa0691a5dc9a0a0), CONST64(0xb16b7fdad6146b6b), CONST64(0x2e855cab17d98585), -CONST64(0xcebd8173673cbdbd), CONST64(0x695dd234ba8f5d5d), CONST64(0x4010805020901010), CONST64(0xf7f4f303f507f4f4), -CONST64(0x0bcb16c08bddcbcb), CONST64(0xf83eedc67cd33e3e), CONST64(0x140528110a2d0505), CONST64(0x81671fe6ce786767), -CONST64(0xb7e47353d597e4e4), CONST64(0x9c2725bb4e022727), CONST64(0x1941325882734141), CONST64(0x168b2c9d0ba78b8b), -CONST64(0xa6a7510153f6a7a7), CONST64(0xe97dcf94fab27d7d), CONST64(0x6e95dcfb37499595), CONST64(0x47d88e9fad56d8d8), -CONST64(0xcbfb8b30eb70fbfb), CONST64(0x9fee2371c1cdeeee), CONST64(0xed7cc791f8bb7c7c), CONST64(0x856617e3cc716666), -CONST64(0x53dda68ea77bdddd), CONST64(0x5c17b84b2eaf1717), CONST64(0x014702468e454747), CONST64(0x429e84dc211a9e9e), -CONST64(0x0fca1ec589d4caca), CONST64(0xb42d75995a582d2d), CONST64(0xc6bf9179632ebfbf), CONST64(0x1c07381b0e3f0707), -CONST64(0x8ead012347acadad), CONST64(0x755aea2fb4b05a5a), CONST64(0x36836cb51bef8383), CONST64(0xcc3385ff66b63333), -CONST64(0x91633ff2c65c6363), CONST64(0x0802100a04120202), CONST64(0x92aa39384993aaaa), CONST64(0xd971afa8e2de7171), -CONST64(0x07c80ecf8dc6c8c8), CONST64(0x6419c87d32d11919), CONST64(0x39497270923b4949), CONST64(0x43d9869aaf5fd9d9), -CONST64(0xeff2c31df931f2f2), CONST64(0xabe34b48dba8e3e3), CONST64(0x715be22ab6b95b5b), CONST64(0x1a8834920dbc8888), -CONST64(0x529aa4c8293e9a9a), CONST64(0x98262dbe4c0b2626), CONST64(0xc8328dfa64bf3232), CONST64(0xfab0e94a7d59b0b0), -CONST64(0x83e91b6acff2e9e9), CONST64(0x3c0f78331e770f0f), CONST64(0x73d5e6a6b733d5d5), CONST64(0x3a8074ba1df48080), -CONST64(0xc2be997c6127bebe), CONST64(0x13cd26de87ebcdcd), CONST64(0xd034bde468893434), CONST64(0x3d487a7590324848), -CONST64(0xdbffab24e354ffff), CONST64(0xf57af78ff48d7a7a), CONST64(0x7a90f4ea3d649090), CONST64(0x615fc23ebe9d5f5f), -CONST64(0x80201da0403d2020), CONST64(0xbd6867d5d00f6868), CONST64(0x681ad07234ca1a1a), CONST64(0x82ae192c41b7aeae), -CONST64(0xeab4c95e757db4b4), CONST64(0x4d549a19a8ce5454), CONST64(0x7693ece53b7f9393), CONST64(0x88220daa442f2222), -CONST64(0x8d6407e9c8636464), CONST64(0xe3f1db12ff2af1f1), CONST64(0xd173bfa2e6cc7373), CONST64(0x4812905a24821212), -CONST64(0x1d403a5d807a4040), CONST64(0x2008402810480808), CONST64(0x2bc356e89b95c3c3), CONST64(0x97ec337bc5dfecec), -CONST64(0x4bdb9690ab4ddbdb), CONST64(0xbea1611f5fc0a1a1), CONST64(0x0e8d1c8307918d8d), CONST64(0xf43df5c97ac83d3d), -CONST64(0x6697ccf1335b9797), CONST64(0x0000000000000000), CONST64(0x1bcf36d483f9cfcf), CONST64(0xac2b4587566e2b2b), -CONST64(0xc57697b3ece17676), CONST64(0x328264b019e68282), CONST64(0x7fd6fea9b128d6d6), CONST64(0x6c1bd87736c31b1b), -CONST64(0xeeb5c15b7774b5b5), CONST64(0x86af112943beafaf), CONST64(0xb56a77dfd41d6a6a), CONST64(0x5d50ba0da0ea5050), -CONST64(0x0945124c8a574545), CONST64(0xebf3cb18fb38f3f3), CONST64(0xc0309df060ad3030), CONST64(0x9bef2b74c3c4efef), -CONST64(0xfc3fe5c37eda3f3f), CONST64(0x4955921caac75555), CONST64(0xb2a2791059dba2a2), CONST64(0x8fea0365c9e9eaea), -CONST64(0x89650fecca6a6565), CONST64(0xd2bab9686903baba), CONST64(0xbc2f65935e4a2f2f), CONST64(0x27c04ee79d8ec0c0), -CONST64(0x5fdebe81a160dede), CONST64(0x701ce06c38fc1c1c), CONST64(0xd3fdbb2ee746fdfd), CONST64(0x294d52649a1f4d4d), -CONST64(0x7292e4e039769292), CONST64(0xc9758fbceafa7575), CONST64(0x1806301e0c360606), CONST64(0x128a249809ae8a8a), -CONST64(0xf2b2f940794bb2b2), CONST64(0xbfe66359d185e6e6), CONST64(0x380e70361c7e0e0e), CONST64(0x7c1ff8633ee71f1f), -CONST64(0x956237f7c4556262), CONST64(0x77d4eea3b53ad4d4), CONST64(0x9aa829324d81a8a8), CONST64(0x6296c4f431529696), -CONST64(0xc3f99b3aef62f9f9), CONST64(0x33c566f697a3c5c5), CONST64(0x942535b14a102525), CONST64(0x7959f220b2ab5959), -CONST64(0x2a8454ae15d08484), CONST64(0xd572b7a7e4c57272), CONST64(0xe439d5dd72ec3939), CONST64(0x2d4c5a6198164c4c), -CONST64(0x655eca3bbc945e5e), CONST64(0xfd78e785f09f7878), CONST64(0xe038ddd870e53838), CONST64(0x0a8c148605988c8c), -CONST64(0x63d1c6b2bf17d1d1), CONST64(0xaea5410b57e4a5a5), CONST64(0xafe2434dd9a1e2e2), CONST64(0x99612ff8c24e6161), -CONST64(0xf6b3f1457b42b3b3), CONST64(0x842115a542342121), CONST64(0x4a9c94d625089c9c), CONST64(0x781ef0663cee1e1e), -CONST64(0x1143225286614343), CONST64(0x3bc776fc93b1c7c7), CONST64(0xd7fcb32be54ffcfc), CONST64(0x1004201408240404), -CONST64(0x5951b208a2e35151), CONST64(0x5e99bcc72f259999), CONST64(0xa96d4fc4da226d6d), CONST64(0x340d68391a650d0d), -CONST64(0xcffa8335e979fafa), CONST64(0x5bdfb684a369dfdf), CONST64(0xe57ed79bfca97e7e), CONST64(0x90243db448192424), -CONST64(0xec3bc5d776fe3b3b), CONST64(0x96ab313d4b9aabab), CONST64(0x1fce3ed181f0cece), CONST64(0x4411885522991111), -CONST64(0x068f0c8903838f8f), CONST64(0x254e4a6b9c044e4e), CONST64(0xe6b7d1517366b7b7), CONST64(0x8beb0b60cbe0ebeb), -CONST64(0xf03cfdcc78c13c3c), CONST64(0x3e817cbf1ffd8181), CONST64(0x6a94d4fe35409494), CONST64(0xfbf7eb0cf31cf7f7), -CONST64(0xdeb9a1676f18b9b9), CONST64(0x4c13985f268b1313), CONST64(0xb02c7d9c58512c2c), CONST64(0x6bd3d6b8bb05d3d3), -CONST64(0xbbe76b5cd38ce7e7), CONST64(0xa56e57cbdc396e6e), CONST64(0x37c46ef395aac4c4), CONST64(0x0c03180f061b0303), -CONST64(0x45568a13acdc5656), CONST64(0x0d441a49885e4444), CONST64(0xe17fdf9efea07f7f), CONST64(0x9ea921374f88a9a9), -CONST64(0xa82a4d8254672a2a), CONST64(0xd6bbb16d6b0abbbb), CONST64(0x23c146e29f87c1c1), CONST64(0x5153a202a6f15353), -CONST64(0x57dcae8ba572dcdc), CONST64(0x2c0b582716530b0b), CONST64(0x4e9d9cd327019d9d), CONST64(0xad6c47c1d82b6c6c), -CONST64(0xc43195f562a43131), CONST64(0xcd7487b9e8f37474), CONST64(0xfff6e309f115f6f6), CONST64(0x05460a438c4c4646), -CONST64(0x8aac092645a5acac), CONST64(0x1e893c970fb58989), CONST64(0x5014a04428b41414), CONST64(0xa3e15b42dfbae1e1), -CONST64(0x5816b04e2ca61616), CONST64(0xe83acdd274f73a3a), CONST64(0xb9696fd0d2066969), CONST64(0x2409482d12410909), -CONST64(0xdd70a7ade0d77070), CONST64(0xe2b6d954716fb6b6), CONST64(0x67d0ceb7bd1ed0d0), CONST64(0x93ed3b7ec7d6eded), -CONST64(0x17cc2edb85e2cccc), CONST64(0x15422a5784684242), CONST64(0x5a98b4c22d2c9898), CONST64(0xaaa4490e55eda4a4), -CONST64(0xa0285d8850752828), CONST64(0x6d5cda31b8865c5c), CONST64(0xc7f8933fed6bf8f8), CONST64(0x228644a411c28686) -}; - -static const ulong64 sbox7[] = { -CONST64(0x186018c07830d818), CONST64(0x238c2305af462623), CONST64(0xc63fc67ef991b8c6), CONST64(0xe887e8136fcdfbe8), -CONST64(0x8726874ca113cb87), CONST64(0xb8dab8a9626d11b8), CONST64(0x0104010805020901), CONST64(0x4f214f426e9e0d4f), -CONST64(0x36d836adee6c9b36), CONST64(0xa6a2a6590451ffa6), CONST64(0xd26fd2debdb90cd2), CONST64(0xf5f3f5fb06f70ef5), -CONST64(0x79f979ef80f29679), CONST64(0x6fa16f5fcede306f), CONST64(0x917e91fcef3f6d91), CONST64(0x525552aa07a4f852), -CONST64(0x609d6027fdc04760), CONST64(0xbccabc89766535bc), CONST64(0x9b569baccd2b379b), CONST64(0x8e028e048c018a8e), -CONST64(0xa3b6a371155bd2a3), CONST64(0x0c300c603c186c0c), CONST64(0x7bf17bff8af6847b), CONST64(0x35d435b5e16a8035), -CONST64(0x1d741de8693af51d), CONST64(0xe0a7e05347ddb3e0), CONST64(0xd77bd7f6acb321d7), CONST64(0xc22fc25eed999cc2), -CONST64(0x2eb82e6d965c432e), CONST64(0x4b314b627a96294b), CONST64(0xfedffea321e15dfe), CONST64(0x5741578216aed557), -CONST64(0x155415a8412abd15), CONST64(0x77c1779fb6eee877), CONST64(0x37dc37a5eb6e9237), CONST64(0xe5b3e57b56d79ee5), -CONST64(0x9f469f8cd923139f), CONST64(0xf0e7f0d317fd23f0), CONST64(0x4a354a6a7f94204a), CONST64(0xda4fda9e95a944da), -CONST64(0x587d58fa25b0a258), CONST64(0xc903c906ca8fcfc9), CONST64(0x29a429558d527c29), CONST64(0x0a280a5022145a0a), -CONST64(0xb1feb1e14f7f50b1), CONST64(0xa0baa0691a5dc9a0), CONST64(0x6bb16b7fdad6146b), CONST64(0x852e855cab17d985), -CONST64(0xbdcebd8173673cbd), CONST64(0x5d695dd234ba8f5d), CONST64(0x1040108050209010), CONST64(0xf4f7f4f303f507f4), -CONST64(0xcb0bcb16c08bddcb), CONST64(0x3ef83eedc67cd33e), CONST64(0x05140528110a2d05), CONST64(0x6781671fe6ce7867), -CONST64(0xe4b7e47353d597e4), CONST64(0x279c2725bb4e0227), CONST64(0x4119413258827341), CONST64(0x8b168b2c9d0ba78b), -CONST64(0xa7a6a7510153f6a7), CONST64(0x7de97dcf94fab27d), CONST64(0x956e95dcfb374995), CONST64(0xd847d88e9fad56d8), -CONST64(0xfbcbfb8b30eb70fb), CONST64(0xee9fee2371c1cdee), CONST64(0x7ced7cc791f8bb7c), CONST64(0x66856617e3cc7166), -CONST64(0xdd53dda68ea77bdd), CONST64(0x175c17b84b2eaf17), CONST64(0x47014702468e4547), CONST64(0x9e429e84dc211a9e), -CONST64(0xca0fca1ec589d4ca), CONST64(0x2db42d75995a582d), CONST64(0xbfc6bf9179632ebf), CONST64(0x071c07381b0e3f07), -CONST64(0xad8ead012347acad), CONST64(0x5a755aea2fb4b05a), CONST64(0x8336836cb51bef83), CONST64(0x33cc3385ff66b633), -CONST64(0x6391633ff2c65c63), CONST64(0x020802100a041202), CONST64(0xaa92aa39384993aa), CONST64(0x71d971afa8e2de71), -CONST64(0xc807c80ecf8dc6c8), CONST64(0x196419c87d32d119), CONST64(0x4939497270923b49), CONST64(0xd943d9869aaf5fd9), -CONST64(0xf2eff2c31df931f2), CONST64(0xe3abe34b48dba8e3), CONST64(0x5b715be22ab6b95b), CONST64(0x881a8834920dbc88), -CONST64(0x9a529aa4c8293e9a), CONST64(0x2698262dbe4c0b26), CONST64(0x32c8328dfa64bf32), CONST64(0xb0fab0e94a7d59b0), -CONST64(0xe983e91b6acff2e9), CONST64(0x0f3c0f78331e770f), CONST64(0xd573d5e6a6b733d5), CONST64(0x803a8074ba1df480), -CONST64(0xbec2be997c6127be), CONST64(0xcd13cd26de87ebcd), CONST64(0x34d034bde4688934), CONST64(0x483d487a75903248), -CONST64(0xffdbffab24e354ff), CONST64(0x7af57af78ff48d7a), CONST64(0x907a90f4ea3d6490), CONST64(0x5f615fc23ebe9d5f), -CONST64(0x2080201da0403d20), CONST64(0x68bd6867d5d00f68), CONST64(0x1a681ad07234ca1a), CONST64(0xae82ae192c41b7ae), -CONST64(0xb4eab4c95e757db4), CONST64(0x544d549a19a8ce54), CONST64(0x937693ece53b7f93), CONST64(0x2288220daa442f22), -CONST64(0x648d6407e9c86364), CONST64(0xf1e3f1db12ff2af1), CONST64(0x73d173bfa2e6cc73), CONST64(0x124812905a248212), -CONST64(0x401d403a5d807a40), CONST64(0x0820084028104808), CONST64(0xc32bc356e89b95c3), CONST64(0xec97ec337bc5dfec), -CONST64(0xdb4bdb9690ab4ddb), CONST64(0xa1bea1611f5fc0a1), CONST64(0x8d0e8d1c8307918d), CONST64(0x3df43df5c97ac83d), -CONST64(0x976697ccf1335b97), CONST64(0x0000000000000000), CONST64(0xcf1bcf36d483f9cf), CONST64(0x2bac2b4587566e2b), -CONST64(0x76c57697b3ece176), CONST64(0x82328264b019e682), CONST64(0xd67fd6fea9b128d6), CONST64(0x1b6c1bd87736c31b), -CONST64(0xb5eeb5c15b7774b5), CONST64(0xaf86af112943beaf), CONST64(0x6ab56a77dfd41d6a), CONST64(0x505d50ba0da0ea50), -CONST64(0x450945124c8a5745), CONST64(0xf3ebf3cb18fb38f3), CONST64(0x30c0309df060ad30), CONST64(0xef9bef2b74c3c4ef), -CONST64(0x3ffc3fe5c37eda3f), CONST64(0x554955921caac755), CONST64(0xa2b2a2791059dba2), CONST64(0xea8fea0365c9e9ea), -CONST64(0x6589650fecca6a65), CONST64(0xbad2bab9686903ba), CONST64(0x2fbc2f65935e4a2f), CONST64(0xc027c04ee79d8ec0), -CONST64(0xde5fdebe81a160de), CONST64(0x1c701ce06c38fc1c), CONST64(0xfdd3fdbb2ee746fd), CONST64(0x4d294d52649a1f4d), -CONST64(0x927292e4e0397692), CONST64(0x75c9758fbceafa75), CONST64(0x061806301e0c3606), CONST64(0x8a128a249809ae8a), -CONST64(0xb2f2b2f940794bb2), CONST64(0xe6bfe66359d185e6), CONST64(0x0e380e70361c7e0e), CONST64(0x1f7c1ff8633ee71f), -CONST64(0x62956237f7c45562), CONST64(0xd477d4eea3b53ad4), CONST64(0xa89aa829324d81a8), CONST64(0x966296c4f4315296), -CONST64(0xf9c3f99b3aef62f9), CONST64(0xc533c566f697a3c5), CONST64(0x25942535b14a1025), CONST64(0x597959f220b2ab59), -CONST64(0x842a8454ae15d084), CONST64(0x72d572b7a7e4c572), CONST64(0x39e439d5dd72ec39), CONST64(0x4c2d4c5a6198164c), -CONST64(0x5e655eca3bbc945e), CONST64(0x78fd78e785f09f78), CONST64(0x38e038ddd870e538), CONST64(0x8c0a8c148605988c), -CONST64(0xd163d1c6b2bf17d1), CONST64(0xa5aea5410b57e4a5), CONST64(0xe2afe2434dd9a1e2), CONST64(0x6199612ff8c24e61), -CONST64(0xb3f6b3f1457b42b3), CONST64(0x21842115a5423421), CONST64(0x9c4a9c94d625089c), CONST64(0x1e781ef0663cee1e), -CONST64(0x4311432252866143), CONST64(0xc73bc776fc93b1c7), CONST64(0xfcd7fcb32be54ffc), CONST64(0x0410042014082404), -CONST64(0x515951b208a2e351), CONST64(0x995e99bcc72f2599), CONST64(0x6da96d4fc4da226d), CONST64(0x0d340d68391a650d), -CONST64(0xfacffa8335e979fa), CONST64(0xdf5bdfb684a369df), CONST64(0x7ee57ed79bfca97e), CONST64(0x2490243db4481924), -CONST64(0x3bec3bc5d776fe3b), CONST64(0xab96ab313d4b9aab), CONST64(0xce1fce3ed181f0ce), CONST64(0x1144118855229911), -CONST64(0x8f068f0c8903838f), CONST64(0x4e254e4a6b9c044e), CONST64(0xb7e6b7d1517366b7), CONST64(0xeb8beb0b60cbe0eb), -CONST64(0x3cf03cfdcc78c13c), CONST64(0x813e817cbf1ffd81), CONST64(0x946a94d4fe354094), CONST64(0xf7fbf7eb0cf31cf7), -CONST64(0xb9deb9a1676f18b9), CONST64(0x134c13985f268b13), CONST64(0x2cb02c7d9c58512c), CONST64(0xd36bd3d6b8bb05d3), -CONST64(0xe7bbe76b5cd38ce7), CONST64(0x6ea56e57cbdc396e), CONST64(0xc437c46ef395aac4), CONST64(0x030c03180f061b03), -CONST64(0x5645568a13acdc56), CONST64(0x440d441a49885e44), CONST64(0x7fe17fdf9efea07f), CONST64(0xa99ea921374f88a9), -CONST64(0x2aa82a4d8254672a), CONST64(0xbbd6bbb16d6b0abb), CONST64(0xc123c146e29f87c1), CONST64(0x535153a202a6f153), -CONST64(0xdc57dcae8ba572dc), CONST64(0x0b2c0b582716530b), CONST64(0x9d4e9d9cd327019d), CONST64(0x6cad6c47c1d82b6c), -CONST64(0x31c43195f562a431), CONST64(0x74cd7487b9e8f374), CONST64(0xf6fff6e309f115f6), CONST64(0x4605460a438c4c46), -CONST64(0xac8aac092645a5ac), CONST64(0x891e893c970fb589), CONST64(0x145014a04428b414), CONST64(0xe1a3e15b42dfbae1), -CONST64(0x165816b04e2ca616), CONST64(0x3ae83acdd274f73a), CONST64(0x69b9696fd0d20669), CONST64(0x092409482d124109), -CONST64(0x70dd70a7ade0d770), CONST64(0xb6e2b6d954716fb6), CONST64(0xd067d0ceb7bd1ed0), CONST64(0xed93ed3b7ec7d6ed), -CONST64(0xcc17cc2edb85e2cc), CONST64(0x4215422a57846842), CONST64(0x985a98b4c22d2c98), CONST64(0xa4aaa4490e55eda4), -CONST64(0x28a0285d88507528), CONST64(0x5c6d5cda31b8865c), CONST64(0xf8c7f8933fed6bf8), CONST64(0x86228644a411c286) -}; - -#endif - -static const ulong64 cont[] = { -CONST64(0x1823c6e887b8014f), -CONST64(0x36a6d2f5796f9152), -CONST64(0x60bc9b8ea30c7b35), -CONST64(0x1de0d7c22e4bfe57), -CONST64(0x157737e59ff04ada), -CONST64(0x58c9290ab1a06b85), -CONST64(0xbd5d10f4cb3e0567), -CONST64(0xe427418ba77d95d8), -CONST64(0xfbee7c66dd17479e), -CONST64(0xca2dbf07ad5a8333), -CONST64(0x6302aa71c81949d9), -}; - -#endif /* __LTC_WHIRLTAB_C__ */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/headers/tomcrypt.h b/src/libtomcrypt/src/headers/tomcrypt.h deleted file mode 100644 index 1192ab5c84..0000000000 --- a/src/libtomcrypt/src/headers/tomcrypt.h +++ /dev/null @@ -1,105 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#ifndef TOMCRYPT_H_ -#define TOMCRYPT_H_ -#include -#include -#include -#include -#include -#include -#include -#include - -/* use configuration data */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* version */ -#define CRYPT 0x0118 -#define SCRYPT "1.18.2" - -/* max size of either a cipher/hash block or symmetric key [largest of the two] */ -#define MAXBLOCKSIZE 128 - -#ifndef TAB_SIZE -/* descriptor table size */ -#define TAB_SIZE 32 -#endif - -/* error codes [will be expanded in future releases] */ -enum { - CRYPT_OK=0, /* Result OK */ - CRYPT_ERROR, /* Generic Error */ - CRYPT_NOP, /* Not a failure but no operation was performed */ - - CRYPT_INVALID_KEYSIZE, /* Invalid key size given */ - CRYPT_INVALID_ROUNDS, /* Invalid number of rounds */ - CRYPT_FAIL_TESTVECTOR, /* Algorithm failed test vectors */ - - CRYPT_BUFFER_OVERFLOW, /* Not enough space for output */ - CRYPT_INVALID_PACKET, /* Invalid input packet given */ - - CRYPT_INVALID_PRNGSIZE, /* Invalid number of bits for a PRNG */ - CRYPT_ERROR_READPRNG, /* Could not read enough from PRNG */ - - CRYPT_INVALID_CIPHER, /* Invalid cipher specified */ - CRYPT_INVALID_HASH, /* Invalid hash specified */ - CRYPT_INVALID_PRNG, /* Invalid PRNG specified */ - - CRYPT_MEM, /* Out of memory */ - - CRYPT_PK_TYPE_MISMATCH, /* Not equivalent types of PK keys */ - CRYPT_PK_NOT_PRIVATE, /* Requires a private PK key */ - - CRYPT_INVALID_ARG, /* Generic invalid argument */ - CRYPT_FILE_NOTFOUND, /* File Not Found */ - - CRYPT_PK_INVALID_TYPE, /* Invalid type of PK key */ - - CRYPT_OVERFLOW, /* An overflow of a value was detected/prevented */ - - CRYPT_UNUSED1, /* UNUSED1 */ - - CRYPT_INPUT_TOO_LONG, /* The input was longer than expected. */ - - CRYPT_PK_INVALID_SIZE, /* Invalid size input for PK parameters */ - - CRYPT_INVALID_PRIME_SIZE,/* Invalid size of prime requested */ - CRYPT_PK_INVALID_PADDING, /* Invalid padding on input */ - - CRYPT_HASH_OVERFLOW /* Hash applied to too many bits */ -}; - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus - } -#endif - -#endif /* TOMCRYPT_H_ */ - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/headers/tomcrypt_argchk.h b/src/libtomcrypt/src/headers/tomcrypt_argchk.h deleted file mode 100644 index c946712f8c..0000000000 --- a/src/libtomcrypt/src/headers/tomcrypt_argchk.h +++ /dev/null @@ -1,53 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Defines the LTC_ARGCHK macro used within the library */ -/* ARGTYPE is defined in tomcrypt_cfg.h */ -#if ARGTYPE == 0 - -#include - -/* this is the default LibTomCrypt macro */ -#if defined(__clang__) || defined(__GNUC_MINOR__) -#define NORETURN __attribute__ ((noreturn)) -#else -#define NORETURN -#endif - -void crypt_argchk(const char *v, const char *s, int d) NORETURN; -#define LTC_ARGCHK(x) do { if (!(x)) { crypt_argchk(#x, __FILE__, __LINE__); } }while(0) -#define LTC_ARGCHKVD(x) do { if (!(x)) { crypt_argchk(#x, __FILE__, __LINE__); } }while(0) - -#elif ARGTYPE == 1 - -/* fatal type of error */ -#define LTC_ARGCHK(x) assert((x)) -#define LTC_ARGCHKVD(x) LTC_ARGCHK(x) - -#elif ARGTYPE == 2 - -#define LTC_ARGCHK(x) if (!(x)) { fprintf(stderr, "\nwarning: ARGCHK failed at %s:%d\n", __FILE__, __LINE__); } -#define LTC_ARGCHKVD(x) LTC_ARGCHK(x) - -#elif ARGTYPE == 3 - -#define LTC_ARGCHK(x) -#define LTC_ARGCHKVD(x) LTC_ARGCHK(x) - -#elif ARGTYPE == 4 - -#define LTC_ARGCHK(x) if (!(x)) return CRYPT_INVALID_ARG; -#define LTC_ARGCHKVD(x) if (!(x)) return; - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/headers/tomcrypt_cfg.h b/src/libtomcrypt/src/headers/tomcrypt_cfg.h deleted file mode 100644 index ce0dd5f7fa..0000000000 --- a/src/libtomcrypt/src/headers/tomcrypt_cfg.h +++ /dev/null @@ -1,283 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* This is the build config file. - * - * With this you can setup what to inlcude/exclude automatically during any build. Just comment - * out the line that #define's the word for the thing you want to remove. phew! - */ - -#ifndef TOMCRYPT_CFG_H -#define TOMCRYPT_CFG_H - -#if defined(_WIN32) || defined(_MSC_VER) - #define LTC_CALL __cdecl -#elif !defined(LTC_CALL) - #define LTC_CALL -#endif - -#ifndef LTC_EXPORT - #define LTC_EXPORT -#endif - -/* certain platforms use macros for these, making the prototypes broken */ -#ifndef LTC_NO_PROTOTYPES - -/* you can change how memory allocation works ... */ -LTC_EXPORT void * LTC_CALL XMALLOC(size_t n); -LTC_EXPORT void * LTC_CALL XREALLOC(void *p, size_t n); -LTC_EXPORT void * LTC_CALL XCALLOC(size_t n, size_t s); -LTC_EXPORT void LTC_CALL XFREE(void *p); - -LTC_EXPORT void LTC_CALL XQSORT(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *)); - - -/* change the clock function too */ -LTC_EXPORT clock_t LTC_CALL XCLOCK(void); - -/* various other functions */ -LTC_EXPORT void * LTC_CALL XMEMCPY(void *dest, const void *src, size_t n); -LTC_EXPORT int LTC_CALL XMEMCMP(const void *s1, const void *s2, size_t n); -LTC_EXPORT void * LTC_CALL XMEMSET(void *s, int c, size_t n); - -LTC_EXPORT int LTC_CALL XSTRCMP(const char *s1, const char *s2); - -#endif - -/* some compilers do not like "inline" (or maybe "static inline"), namely: HP cc, IBM xlc */ -#if defined(__HP_cc) || defined(__xlc__) - #define LTC_INLINE -#elif defined(_MSC_VER) - #define LTC_INLINE __inline -#else - #define LTC_INLINE inline -#endif - -/* type of argument checking, 0=default, 1=fatal and 2=error+continue, 3=nothing */ -#ifndef ARGTYPE - #define ARGTYPE 0 -#endif - -#undef LTC_ENCRYPT -#define LTC_ENCRYPT 0 -#undef LTC_DECRYPT -#define LTC_DECRYPT 1 - -/* Controls endianess and size of registers. Leave uncommented to get platform neutral [slower] code - * - * Note: in order to use the optimized macros your platform must support unaligned 32 and 64 bit read/writes. - * The x86 platforms allow this but some others [ARM for instance] do not. On those platforms you **MUST** - * use the portable [slower] macros. - */ -/* detect x86/i386 32bit */ -#if defined(__i386__) || defined(__i386) || defined(_M_IX86) - #define ENDIAN_LITTLE - #define ENDIAN_32BITWORD - #define LTC_FAST -#endif - -/* detect amd64/x64 */ -#if defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) - #define ENDIAN_LITTLE - #define ENDIAN_64BITWORD - #define LTC_FAST -#endif - -/* detect PPC32 */ -#if defined(LTC_PPC32) - #define ENDIAN_BIG - #define ENDIAN_32BITWORD - #define LTC_FAST -#endif - -/* detects MIPS R5900 processors (PS2) */ -#if (defined(__R5900) || defined(R5900) || defined(__R5900__)) && (defined(_mips) || defined(__mips__) || defined(mips)) - #define ENDIAN_64BITWORD - #if defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) - #define ENDIAN_BIG - #endif - #define ENDIAN_LITTLE - #endif -#endif - -/* detect AIX */ -#if defined(_AIX) && defined(_BIG_ENDIAN) - #define ENDIAN_BIG - #if defined(__LP64__) || defined(_ARCH_PPC64) - #define ENDIAN_64BITWORD - #else - #define ENDIAN_32BITWORD - #endif -#endif - -/* detect HP-UX */ -#if defined(__hpux) || defined(__hpux__) - #define ENDIAN_BIG - #if defined(__ia64) || defined(__ia64__) || defined(__LP64__) - #define ENDIAN_64BITWORD - #else - #define ENDIAN_32BITWORD - #endif -#endif - -/* detect Apple OS X */ -#if defined(__APPLE__) && defined(__MACH__) - #if defined(__LITTLE_ENDIAN__) || defined(__x86_64__) - #define ENDIAN_LITTLE - #else - #define ENDIAN_BIG - #endif - #if defined(__LP64__) || defined(__x86_64__) - #define ENDIAN_64BITWORD - #else - #define ENDIAN_32BITWORD - #endif -#endif - -/* detect SPARC and SPARC64 */ -#if defined(__sparc__) || defined(__sparc) - #define ENDIAN_BIG - #if defined(__arch64__) || defined(__sparcv9) || defined(__sparc_v9__) - #define ENDIAN_64BITWORD - #else - #define ENDIAN_32BITWORD - #endif -#endif - -/* detect IBM S390(x) */ -#if defined(__s390x__) || defined(__s390__) - #define ENDIAN_BIG - #if defined(__s390x__) - #define ENDIAN_64BITWORD - #else - #define ENDIAN_32BITWORD - #endif -#endif - -/* detect PPC64 */ -#if defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) - #define ENDIAN_64BITWORD - #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - #define ENDIAN_BIG - #elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - #define ENDIAN_LITTLE - #endif - #define LTC_FAST -#endif - -/* endianness fallback */ -#if !defined(ENDIAN_BIG) && !defined(ENDIAN_LITTLE) - #if defined(_BYTE_ORDER) && _BYTE_ORDER == _BIG_ENDIAN || \ - defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || \ - defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ || \ - defined(__BIG_ENDIAN__) || \ - defined(__ARMEB__) || defined(__THUMBEB__) || defined(__AARCH64EB__) || \ - defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) - #define ENDIAN_BIG - #elif defined(_BYTE_ORDER) && _BYTE_ORDER == _LITTLE_ENDIAN || \ - defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN || \ - defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ || \ - defined(__LITTLE_ENDIAN__) || \ - defined(__ARMEL__) || defined(__THUMBEL__) || defined(__AARCH64EL__) || \ - defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) - #define ENDIAN_LITTLE - #else - #error Cannot detect endianness - #endif -#endif - -/* ulong64: 64-bit data type */ -#ifdef _MSC_VER - #define CONST64(n) n ## ui64 - typedef unsigned __int64 ulong64; -#else - #define CONST64(n) n ## ULL - typedef unsigned long long ulong64; -#endif - -/* ulong32: "32-bit at least" data type */ -#if defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) || \ - defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) || \ - defined(__s390x__) || defined(__arch64__) || defined(__aarch64__) || \ - defined(__sparcv9) || defined(__sparc_v9__) || defined(__sparc64__) || \ - defined(__ia64) || defined(__ia64__) || defined(__itanium__) || defined(_M_IA64) || \ - defined(__LP64__) || defined(_LP64) || defined(__64BIT__) - typedef unsigned ulong32; - #if !defined(ENDIAN_64BITWORD) && !defined(ENDIAN_32BITWORD) - #define ENDIAN_64BITWORD - #endif -#else - typedef unsigned long ulong32; - #if !defined(ENDIAN_64BITWORD) && !defined(ENDIAN_32BITWORD) - #define ENDIAN_32BITWORD - #endif -#endif - -#if defined(ENDIAN_64BITWORD) && !defined(_MSC_VER) -typedef unsigned long long ltc_mp_digit; -#else -typedef unsigned long ltc_mp_digit; -#endif - -/* No asm is a quick way to disable anything "not portable" */ -#ifdef LTC_NO_ASM - #define ENDIAN_NEUTRAL - #undef ENDIAN_32BITWORD - #undef ENDIAN_64BITWORD - #undef LTC_FAST - #define LTC_NO_ROLC - #define LTC_NO_BSWAP -#endif - -/* No LTC_FAST if: explicitly disabled OR non-gcc/non-clang compiler OR old gcc OR using -ansi -std=c99 */ -#if defined(LTC_NO_FAST) || (__GNUC__ < 4) || defined(__STRICT_ANSI__) - #undef LTC_FAST -#endif - -#ifdef LTC_FAST - #define LTC_FAST_TYPE_PTR_CAST(x) ((LTC_FAST_TYPE*)(void*)(x)) - #ifdef ENDIAN_64BITWORD - typedef ulong64 __attribute__((__may_alias__)) LTC_FAST_TYPE; - #else - typedef ulong32 __attribute__((__may_alias__)) LTC_FAST_TYPE; - #endif -#endif - -#if !defined(ENDIAN_NEUTRAL) && (defined(ENDIAN_BIG) || defined(ENDIAN_LITTLE)) && !(defined(ENDIAN_32BITWORD) || defined(ENDIAN_64BITWORD)) - #error You must specify a word size as well as endianess in tomcrypt_cfg.h -#endif - -#if !(defined(ENDIAN_BIG) || defined(ENDIAN_LITTLE)) - #define ENDIAN_NEUTRAL -#endif - -#if (defined(ENDIAN_32BITWORD) && defined(ENDIAN_64BITWORD)) - #error Cannot be 32 and 64 bit words... -#endif - -/* gcc 4.3 and up has a bswap builtin; detect it by gcc version. - * clang also supports the bswap builtin, and although clang pretends - * to be gcc (macro-wise, anyway), clang pretends to be a version - * prior to gcc 4.3, so we can't detect bswap that way. Instead, - * clang has a __has_builtin mechanism that can be used to check - * for builtins: - * http://clang.llvm.org/docs/LanguageExtensions.html#feature_check */ -#ifndef __has_builtin - #define __has_builtin(x) 0 -#endif -#if !defined(LTC_NO_BSWAP) && defined(__GNUC__) && \ - ((__GNUC__ * 100 + __GNUC_MINOR__ >= 403) || \ - (__has_builtin(__builtin_bswap32) && __has_builtin(__builtin_bswap64))) - #define LTC_HAVE_BSWAP_BUILTIN -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/headers/tomcrypt_cipher.h b/src/libtomcrypt/src/headers/tomcrypt_cipher.h deleted file mode 100644 index 6f0c30b63b..0000000000 --- a/src/libtomcrypt/src/headers/tomcrypt_cipher.h +++ /dev/null @@ -1,1008 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* ---- SYMMETRIC KEY STUFF ----- - * - * We put each of the ciphers scheduled keys in their own structs then we put all of - * the key formats in one union. This makes the function prototypes easier to use. - */ -#ifdef LTC_BLOWFISH -struct blowfish_key { - ulong32 S[4][256]; - ulong32 K[18]; -}; -#endif - -#ifdef LTC_RC5 -struct rc5_key { - int rounds; - ulong32 K[50]; -}; -#endif - -#ifdef LTC_RC6 -struct rc6_key { - ulong32 K[44]; -}; -#endif - -#ifdef LTC_SAFERP -struct saferp_key { - unsigned char K[33][16]; - long rounds; -}; -#endif - -#ifdef LTC_RIJNDAEL -struct rijndael_key { - ulong32 eK[60], dK[60]; - int Nr; -}; -#endif - -#ifdef LTC_KSEED -struct kseed_key { - ulong32 K[32], dK[32]; -}; -#endif - -#ifdef LTC_KASUMI -struct kasumi_key { - ulong32 KLi1[8], KLi2[8], - KOi1[8], KOi2[8], KOi3[8], - KIi1[8], KIi2[8], KIi3[8]; -}; -#endif - -#ifdef LTC_XTEA -struct xtea_key { - unsigned long A[32], B[32]; -}; -#endif - -#ifdef LTC_TWOFISH -#ifndef LTC_TWOFISH_SMALL - struct twofish_key { - ulong32 S[4][256], K[40]; - }; -#else - struct twofish_key { - ulong32 K[40]; - unsigned char S[32], start; - }; -#endif -#endif - -#ifdef LTC_SAFER -#define LTC_SAFER_K64_DEFAULT_NOF_ROUNDS 6 -#define LTC_SAFER_K128_DEFAULT_NOF_ROUNDS 10 -#define LTC_SAFER_SK64_DEFAULT_NOF_ROUNDS 8 -#define LTC_SAFER_SK128_DEFAULT_NOF_ROUNDS 10 -#define LTC_SAFER_MAX_NOF_ROUNDS 13 -#define LTC_SAFER_BLOCK_LEN 8 -#define LTC_SAFER_KEY_LEN (1 + LTC_SAFER_BLOCK_LEN * (1 + 2 * LTC_SAFER_MAX_NOF_ROUNDS)) -typedef unsigned char safer_block_t[LTC_SAFER_BLOCK_LEN]; -typedef unsigned char safer_key_t[LTC_SAFER_KEY_LEN]; -struct safer_key { safer_key_t key; }; -#endif - -#ifdef LTC_RC2 -struct rc2_key { unsigned xkey[64]; }; -#endif - -#ifdef LTC_DES -struct des_key { - ulong32 ek[32], dk[32]; -}; - -struct des3_key { - ulong32 ek[3][32], dk[3][32]; -}; -#endif - -#ifdef LTC_CAST5 -struct cast5_key { - ulong32 K[32], keylen; -}; -#endif - -#ifdef LTC_NOEKEON -struct noekeon_key { - ulong32 K[4], dK[4]; -}; -#endif - -#ifdef LTC_SKIPJACK -struct skipjack_key { - unsigned char key[10]; -}; -#endif - -#ifdef LTC_KHAZAD -struct khazad_key { - ulong64 roundKeyEnc[8 + 1]; - ulong64 roundKeyDec[8 + 1]; -}; -#endif - -#ifdef LTC_ANUBIS -struct anubis_key { - int keyBits; - int R; - ulong32 roundKeyEnc[18 + 1][4]; - ulong32 roundKeyDec[18 + 1][4]; -}; -#endif - -#ifdef LTC_MULTI2 -struct multi2_key { - int N; - ulong32 uk[8]; -}; -#endif - -#ifdef LTC_CAMELLIA -struct camellia_key { - int R; - ulong64 kw[4], k[24], kl[6]; -}; -#endif - -typedef union Symmetric_key { -#ifdef LTC_DES - struct des_key des; - struct des3_key des3; -#endif -#ifdef LTC_RC2 - struct rc2_key rc2; -#endif -#ifdef LTC_SAFER - struct safer_key safer; -#endif -#ifdef LTC_TWOFISH - struct twofish_key twofish; -#endif -#ifdef LTC_BLOWFISH - struct blowfish_key blowfish; -#endif -#ifdef LTC_RC5 - struct rc5_key rc5; -#endif -#ifdef LTC_RC6 - struct rc6_key rc6; -#endif -#ifdef LTC_SAFERP - struct saferp_key saferp; -#endif -#ifdef LTC_RIJNDAEL - struct rijndael_key rijndael; -#endif -#ifdef LTC_XTEA - struct xtea_key xtea; -#endif -#ifdef LTC_CAST5 - struct cast5_key cast5; -#endif -#ifdef LTC_NOEKEON - struct noekeon_key noekeon; -#endif -#ifdef LTC_SKIPJACK - struct skipjack_key skipjack; -#endif -#ifdef LTC_KHAZAD - struct khazad_key khazad; -#endif -#ifdef LTC_ANUBIS - struct anubis_key anubis; -#endif -#ifdef LTC_KSEED - struct kseed_key kseed; -#endif -#ifdef LTC_KASUMI - struct kasumi_key kasumi; -#endif -#ifdef LTC_MULTI2 - struct multi2_key multi2; -#endif -#ifdef LTC_CAMELLIA - struct camellia_key camellia; -#endif - void *data; -} symmetric_key; - -#ifdef LTC_ECB_MODE -/** A block cipher ECB structure */ -typedef struct { - /** The index of the cipher chosen */ - int cipher, - /** The block size of the given cipher */ - blocklen; - /** The scheduled key */ - symmetric_key key; -} symmetric_ECB; -#endif - -#ifdef LTC_CFB_MODE -/** A block cipher CFB structure */ -typedef struct { - /** The index of the cipher chosen */ - int cipher, - /** The block size of the given cipher */ - blocklen, - /** The padding offset */ - padlen; - /** The current IV */ - unsigned char IV[MAXBLOCKSIZE], - /** The pad used to encrypt/decrypt */ - pad[MAXBLOCKSIZE]; - /** The scheduled key */ - symmetric_key key; -} symmetric_CFB; -#endif - -#ifdef LTC_OFB_MODE -/** A block cipher OFB structure */ -typedef struct { - /** The index of the cipher chosen */ - int cipher, - /** The block size of the given cipher */ - blocklen, - /** The padding offset */ - padlen; - /** The current IV */ - unsigned char IV[MAXBLOCKSIZE]; - /** The scheduled key */ - symmetric_key key; -} symmetric_OFB; -#endif - -#ifdef LTC_CBC_MODE -/** A block cipher CBC structure */ -typedef struct { - /** The index of the cipher chosen */ - int cipher, - /** The block size of the given cipher */ - blocklen; - /** The current IV */ - unsigned char IV[MAXBLOCKSIZE]; - /** The scheduled key */ - symmetric_key key; -} symmetric_CBC; -#endif - - -#ifdef LTC_CTR_MODE -/** A block cipher CTR structure */ -typedef struct { - /** The index of the cipher chosen */ - int cipher, - /** The block size of the given cipher */ - blocklen, - /** The padding offset */ - padlen, - /** The mode (endianess) of the CTR, 0==little, 1==big */ - mode, - /** counter width */ - ctrlen; - - /** The counter */ - unsigned char ctr[MAXBLOCKSIZE], - /** The pad used to encrypt/decrypt */ - pad[MAXBLOCKSIZE]; - /** The scheduled key */ - symmetric_key key; -} symmetric_CTR; -#endif - - -#ifdef LTC_LRW_MODE -/** A LRW structure */ -typedef struct { - /** The index of the cipher chosen (must be a 128-bit block cipher) */ - int cipher; - - /** The current IV */ - unsigned char IV[16], - - /** the tweak key */ - tweak[16], - - /** The current pad, it's the product of the first 15 bytes against the tweak key */ - pad[16]; - - /** The scheduled symmetric key */ - symmetric_key key; - -#ifdef LTC_LRW_TABLES - /** The pre-computed multiplication table */ - unsigned char PC[16][256][16]; -#endif -} symmetric_LRW; -#endif - -#ifdef LTC_F8_MODE -/** A block cipher F8 structure */ -typedef struct { - /** The index of the cipher chosen */ - int cipher, - /** The block size of the given cipher */ - blocklen, - /** The padding offset */ - padlen; - /** The current IV */ - unsigned char IV[MAXBLOCKSIZE], - MIV[MAXBLOCKSIZE]; - /** Current block count */ - ulong32 blockcnt; - /** The scheduled key */ - symmetric_key key; -} symmetric_F8; -#endif - - -/** cipher descriptor table, last entry has "name == NULL" to mark the end of table */ -extern struct ltc_cipher_descriptor { - /** name of cipher */ - const char *name; - /** internal ID */ - unsigned char ID; - /** min keysize (octets) */ - int min_key_length, - /** max keysize (octets) */ - max_key_length, - /** block size (octets) */ - block_length, - /** default number of rounds */ - default_rounds; - /** Setup the cipher - @param key The input symmetric key - @param keylen The length of the input key (octets) - @param num_rounds The requested number of rounds (0==default) - @param skey [out] The destination of the scheduled key - @return CRYPT_OK if successful - */ - int (*setup)(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); - /** Encrypt a block - @param pt The plaintext - @param ct [out] The ciphertext - @param skey The scheduled key - @return CRYPT_OK if successful - */ - int (*ecb_encrypt)(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); - /** Decrypt a block - @param ct The ciphertext - @param pt [out] The plaintext - @param skey The scheduled key - @return CRYPT_OK if successful - */ - int (*ecb_decrypt)(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); - /** Test the block cipher - @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled - */ - int (*test)(void); - - /** Terminate the context - @param skey The scheduled key - */ - void (*done)(symmetric_key *skey); - - /** Determine a key size - @param keysize [in/out] The size of the key desired and the suggested size - @return CRYPT_OK if successful - */ - int (*keysize)(int *keysize); - -/** Accelerators **/ - /** Accelerated ECB encryption - @param pt Plaintext - @param ct Ciphertext - @param blocks The number of complete blocks to process - @param skey The scheduled key context - @return CRYPT_OK if successful - */ - int (*accel_ecb_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, symmetric_key *skey); - - /** Accelerated ECB decryption - @param pt Plaintext - @param ct Ciphertext - @param blocks The number of complete blocks to process - @param skey The scheduled key context - @return CRYPT_OK if successful - */ - int (*accel_ecb_decrypt)(const unsigned char *ct, unsigned char *pt, unsigned long blocks, symmetric_key *skey); - - /** Accelerated CBC encryption - @param pt Plaintext - @param ct Ciphertext - @param blocks The number of complete blocks to process - @param IV The initial value (input/output) - @param skey The scheduled key context - @return CRYPT_OK if successful - */ - int (*accel_cbc_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, unsigned char *IV, symmetric_key *skey); - - /** Accelerated CBC decryption - @param pt Plaintext - @param ct Ciphertext - @param blocks The number of complete blocks to process - @param IV The initial value (input/output) - @param skey The scheduled key context - @return CRYPT_OK if successful - */ - int (*accel_cbc_decrypt)(const unsigned char *ct, unsigned char *pt, unsigned long blocks, unsigned char *IV, symmetric_key *skey); - - /** Accelerated CTR encryption - @param pt Plaintext - @param ct Ciphertext - @param blocks The number of complete blocks to process - @param IV The initial value (input/output) - @param mode little or big endian counter (mode=0 or mode=1) - @param skey The scheduled key context - @return CRYPT_OK if successful - */ - int (*accel_ctr_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, unsigned char *IV, int mode, symmetric_key *skey); - - /** Accelerated LRW - @param pt Plaintext - @param ct Ciphertext - @param blocks The number of complete blocks to process - @param IV The initial value (input/output) - @param tweak The LRW tweak - @param skey The scheduled key context - @return CRYPT_OK if successful - */ - int (*accel_lrw_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, unsigned char *IV, const unsigned char *tweak, symmetric_key *skey); - - /** Accelerated LRW - @param ct Ciphertext - @param pt Plaintext - @param blocks The number of complete blocks to process - @param IV The initial value (input/output) - @param tweak The LRW tweak - @param skey The scheduled key context - @return CRYPT_OK if successful - */ - int (*accel_lrw_decrypt)(const unsigned char *ct, unsigned char *pt, unsigned long blocks, unsigned char *IV, const unsigned char *tweak, symmetric_key *skey); - - /** Accelerated CCM packet (one-shot) - @param key The secret key to use - @param keylen The length of the secret key (octets) - @param uskey A previously scheduled key [optional can be NULL] - @param nonce The session nonce [use once] - @param noncelen The length of the nonce - @param header The header for the session - @param headerlen The length of the header (octets) - @param pt [out] The plaintext - @param ptlen The length of the plaintext (octets) - @param ct [out] The ciphertext - @param tag [out] The destination tag - @param taglen [in/out] The max size and resulting size of the authentication tag - @param direction Encrypt or Decrypt direction (0 or 1) - @return CRYPT_OK if successful - */ - int (*accel_ccm_memory)( - const unsigned char *key, unsigned long keylen, - symmetric_key *uskey, - const unsigned char *nonce, unsigned long noncelen, - const unsigned char *header, unsigned long headerlen, - unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - unsigned char *tag, unsigned long *taglen, - int direction); - - /** Accelerated GCM packet (one shot) - @param key The secret key - @param keylen The length of the secret key - @param IV The initialization vector - @param IVlen The length of the initialization vector - @param adata The additional authentication data (header) - @param adatalen The length of the adata - @param pt The plaintext - @param ptlen The length of the plaintext (ciphertext length is the same) - @param ct The ciphertext - @param tag [out] The MAC tag - @param taglen [in/out] The MAC tag length - @param direction Encrypt or Decrypt mode (GCM_ENCRYPT or GCM_DECRYPT) - @return CRYPT_OK on success - */ - int (*accel_gcm_memory)( - const unsigned char *key, unsigned long keylen, - const unsigned char *IV, unsigned long IVlen, - const unsigned char *adata, unsigned long adatalen, - unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - unsigned char *tag, unsigned long *taglen, - int direction); - - /** Accelerated one shot LTC_OMAC - @param key The secret key - @param keylen The key length (octets) - @param in The message - @param inlen Length of message (octets) - @param out [out] Destination for tag - @param outlen [in/out] Initial and final size of out - @return CRYPT_OK on success - */ - int (*omac_memory)( - const unsigned char *key, unsigned long keylen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); - - /** Accelerated one shot XCBC - @param key The secret key - @param keylen The key length (octets) - @param in The message - @param inlen Length of message (octets) - @param out [out] Destination for tag - @param outlen [in/out] Initial and final size of out - @return CRYPT_OK on success - */ - int (*xcbc_memory)( - const unsigned char *key, unsigned long keylen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); - - /** Accelerated one shot F9 - @param key The secret key - @param keylen The key length (octets) - @param in The message - @param inlen Length of message (octets) - @param out [out] Destination for tag - @param outlen [in/out] Initial and final size of out - @return CRYPT_OK on success - @remark Requires manual padding - */ - int (*f9_memory)( - const unsigned char *key, unsigned long keylen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); - - /** Accelerated XTS encryption - @param pt Plaintext - @param ct Ciphertext - @param blocks The number of complete blocks to process - @param tweak The 128-bit encryption tweak (input/output). - The tweak should not be encrypted on input, but - next tweak will be copied encrypted on output. - @param skey1 The first scheduled key context - @param skey2 The second scheduled key context - @return CRYPT_OK if successful - */ - int (*accel_xts_encrypt)(const unsigned char *pt, unsigned char *ct, - unsigned long blocks, unsigned char *tweak, symmetric_key *skey1, - symmetric_key *skey2); - - /** Accelerated XTS decryption - @param ct Ciphertext - @param pt Plaintext - @param blocks The number of complete blocks to process - @param tweak The 128-bit encryption tweak (input/output). - The tweak should not be encrypted on input, but - next tweak will be copied encrypted on output. - @param skey1 The first scheduled key context - @param skey2 The second scheduled key context - @return CRYPT_OK if successful - */ - int (*accel_xts_decrypt)(const unsigned char *ct, unsigned char *pt, - unsigned long blocks, unsigned char *tweak, symmetric_key *skey1, - symmetric_key *skey2); -} cipher_descriptor[]; - -#ifdef LTC_BLOWFISH -int blowfish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int blowfish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int blowfish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int blowfish_test(void); -void blowfish_done(symmetric_key *skey); -int blowfish_keysize(int *keysize); -extern const struct ltc_cipher_descriptor blowfish_desc; -#endif - -#ifdef LTC_RC5 -int rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int rc5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int rc5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int rc5_test(void); -void rc5_done(symmetric_key *skey); -int rc5_keysize(int *keysize); -extern const struct ltc_cipher_descriptor rc5_desc; -#endif - -#ifdef LTC_RC6 -int rc6_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int rc6_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int rc6_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int rc6_test(void); -void rc6_done(symmetric_key *skey); -int rc6_keysize(int *keysize); -extern const struct ltc_cipher_descriptor rc6_desc; -#endif - -#ifdef LTC_RC2 -int rc2_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int rc2_setup_ex(const unsigned char *key, int keylen, int bits, int num_rounds, symmetric_key *skey); -int rc2_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int rc2_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int rc2_test(void); -void rc2_done(symmetric_key *skey); -int rc2_keysize(int *keysize); -extern const struct ltc_cipher_descriptor rc2_desc; -#endif - -#ifdef LTC_SAFERP -int saferp_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int saferp_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int saferp_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int saferp_test(void); -void saferp_done(symmetric_key *skey); -int saferp_keysize(int *keysize); -extern const struct ltc_cipher_descriptor saferp_desc; -#endif - -#ifdef LTC_SAFER -int safer_k64_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int safer_sk64_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int safer_k128_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int safer_sk128_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int safer_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -int safer_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); -int safer_k64_test(void); -int safer_sk64_test(void); -int safer_sk128_test(void); -void safer_done(symmetric_key *skey); -int safer_64_keysize(int *keysize); -int safer_128_keysize(int *keysize); -extern const struct ltc_cipher_descriptor safer_k64_desc, safer_k128_desc, safer_sk64_desc, safer_sk128_desc; -#endif - -#ifdef LTC_RIJNDAEL - -/* make aes an alias */ -#define aes_setup rijndael_setup -#define aes_ecb_encrypt rijndael_ecb_encrypt -#define aes_ecb_decrypt rijndael_ecb_decrypt -#define aes_test rijndael_test -#define aes_done rijndael_done -#define aes_keysize rijndael_keysize - -#define aes_enc_setup rijndael_enc_setup -#define aes_enc_ecb_encrypt rijndael_enc_ecb_encrypt -#define aes_enc_keysize rijndael_enc_keysize - -int rijndael_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int rijndael_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int rijndael_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int rijndael_test(void); -void rijndael_done(symmetric_key *skey); -int rijndael_keysize(int *keysize); -int rijndael_enc_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int rijndael_enc_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -void rijndael_enc_done(symmetric_key *skey); -int rijndael_enc_keysize(int *keysize); -extern const struct ltc_cipher_descriptor rijndael_desc, aes_desc; -extern const struct ltc_cipher_descriptor rijndael_enc_desc, aes_enc_desc; -#endif - -#ifdef LTC_XTEA -int xtea_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int xtea_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int xtea_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int xtea_test(void); -void xtea_done(symmetric_key *skey); -int xtea_keysize(int *keysize); -extern const struct ltc_cipher_descriptor xtea_desc; -#endif - -#ifdef LTC_TWOFISH -int twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int twofish_test(void); -void twofish_done(symmetric_key *skey); -int twofish_keysize(int *keysize); -extern const struct ltc_cipher_descriptor twofish_desc; -#endif - -#ifdef LTC_DES -int des_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int des_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int des_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int des_test(void); -void des_done(symmetric_key *skey); -int des_keysize(int *keysize); -int des3_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int des3_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int des3_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int des3_test(void); -void des3_done(symmetric_key *skey); -int des3_keysize(int *keysize); -extern const struct ltc_cipher_descriptor des_desc, des3_desc; -#endif - -#ifdef LTC_CAST5 -int cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int cast5_test(void); -void cast5_done(symmetric_key *skey); -int cast5_keysize(int *keysize); -extern const struct ltc_cipher_descriptor cast5_desc; -#endif - -#ifdef LTC_NOEKEON -int noekeon_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int noekeon_test(void); -void noekeon_done(symmetric_key *skey); -int noekeon_keysize(int *keysize); -extern const struct ltc_cipher_descriptor noekeon_desc; -#endif - -#ifdef LTC_SKIPJACK -int skipjack_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int skipjack_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int skipjack_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int skipjack_test(void); -void skipjack_done(symmetric_key *skey); -int skipjack_keysize(int *keysize); -extern const struct ltc_cipher_descriptor skipjack_desc; -#endif - -#ifdef LTC_KHAZAD -int khazad_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int khazad_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int khazad_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int khazad_test(void); -void khazad_done(symmetric_key *skey); -int khazad_keysize(int *keysize); -extern const struct ltc_cipher_descriptor khazad_desc; -#endif - -#ifdef LTC_ANUBIS -int anubis_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int anubis_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int anubis_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int anubis_test(void); -void anubis_done(symmetric_key *skey); -int anubis_keysize(int *keysize); -extern const struct ltc_cipher_descriptor anubis_desc; -#endif - -#ifdef LTC_KSEED -int kseed_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int kseed_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int kseed_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int kseed_test(void); -void kseed_done(symmetric_key *skey); -int kseed_keysize(int *keysize); -extern const struct ltc_cipher_descriptor kseed_desc; -#endif - -#ifdef LTC_KASUMI -int kasumi_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int kasumi_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int kasumi_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int kasumi_test(void); -void kasumi_done(symmetric_key *skey); -int kasumi_keysize(int *keysize); -extern const struct ltc_cipher_descriptor kasumi_desc; -#endif - - -#ifdef LTC_MULTI2 -int multi2_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int multi2_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int multi2_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int multi2_test(void); -void multi2_done(symmetric_key *skey); -int multi2_keysize(int *keysize); -extern const struct ltc_cipher_descriptor multi2_desc; -#endif - -#ifdef LTC_CAMELLIA -int camellia_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -int camellia_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); -int camellia_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); -int camellia_test(void); -void camellia_done(symmetric_key *skey); -int camellia_keysize(int *keysize); -extern const struct ltc_cipher_descriptor camellia_desc; -#endif - -#ifdef LTC_ECB_MODE -int ecb_start(int cipher, const unsigned char *key, - int keylen, int num_rounds, symmetric_ECB *ecb); -int ecb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_ECB *ecb); -int ecb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_ECB *ecb); -int ecb_done(symmetric_ECB *ecb); -#endif - -#ifdef LTC_CFB_MODE -int cfb_start(int cipher, const unsigned char *IV, const unsigned char *key, - int keylen, int num_rounds, symmetric_CFB *cfb); -int cfb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CFB *cfb); -int cfb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CFB *cfb); -int cfb_getiv(unsigned char *IV, unsigned long *len, symmetric_CFB *cfb); -int cfb_setiv(const unsigned char *IV, unsigned long len, symmetric_CFB *cfb); -int cfb_done(symmetric_CFB *cfb); -#endif - -#ifdef LTC_OFB_MODE -int ofb_start(int cipher, const unsigned char *IV, const unsigned char *key, - int keylen, int num_rounds, symmetric_OFB *ofb); -int ofb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_OFB *ofb); -int ofb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_OFB *ofb); -int ofb_getiv(unsigned char *IV, unsigned long *len, symmetric_OFB *ofb); -int ofb_setiv(const unsigned char *IV, unsigned long len, symmetric_OFB *ofb); -int ofb_done(symmetric_OFB *ofb); -#endif - -#ifdef LTC_CBC_MODE -int cbc_start(int cipher, const unsigned char *IV, const unsigned char *key, - int keylen, int num_rounds, symmetric_CBC *cbc); -int cbc_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CBC *cbc); -int cbc_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CBC *cbc); -int cbc_getiv(unsigned char *IV, unsigned long *len, symmetric_CBC *cbc); -int cbc_setiv(const unsigned char *IV, unsigned long len, symmetric_CBC *cbc); -int cbc_done(symmetric_CBC *cbc); -#endif - -#ifdef LTC_CTR_MODE - -#define CTR_COUNTER_LITTLE_ENDIAN 0x0000 -#define CTR_COUNTER_BIG_ENDIAN 0x1000 -#define LTC_CTR_RFC3686 0x2000 - -int ctr_start( int cipher, - const unsigned char *IV, - const unsigned char *key, int keylen, - int num_rounds, int ctr_mode, - symmetric_CTR *ctr); -int ctr_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CTR *ctr); -int ctr_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CTR *ctr); -int ctr_getiv(unsigned char *IV, unsigned long *len, symmetric_CTR *ctr); -int ctr_setiv(const unsigned char *IV, unsigned long len, symmetric_CTR *ctr); -int ctr_done(symmetric_CTR *ctr); -int ctr_test(void); -#endif - -#ifdef LTC_LRW_MODE - -#define LRW_ENCRYPT LTC_ENCRYPT -#define LRW_DECRYPT LTC_DECRYPT - -int lrw_start( int cipher, - const unsigned char *IV, - const unsigned char *key, int keylen, - const unsigned char *tweak, - int num_rounds, - symmetric_LRW *lrw); -int lrw_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_LRW *lrw); -int lrw_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_LRW *lrw); -int lrw_getiv(unsigned char *IV, unsigned long *len, symmetric_LRW *lrw); -int lrw_setiv(const unsigned char *IV, unsigned long len, symmetric_LRW *lrw); -int lrw_done(symmetric_LRW *lrw); -int lrw_test(void); - -/* don't call */ -int lrw_process(const unsigned char *pt, unsigned char *ct, unsigned long len, int mode, symmetric_LRW *lrw); -#endif - -#ifdef LTC_F8_MODE -int f8_start( int cipher, const unsigned char *IV, - const unsigned char *key, int keylen, - const unsigned char *salt_key, int skeylen, - int num_rounds, symmetric_F8 *f8); -int f8_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_F8 *f8); -int f8_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_F8 *f8); -int f8_getiv(unsigned char *IV, unsigned long *len, symmetric_F8 *f8); -int f8_setiv(const unsigned char *IV, unsigned long len, symmetric_F8 *f8); -int f8_done(symmetric_F8 *f8); -int f8_test_mode(void); -#endif - -#ifdef LTC_XTS_MODE -typedef struct { - symmetric_key key1, key2; - int cipher; -} symmetric_xts; - -int xts_start( int cipher, - const unsigned char *key1, - const unsigned char *key2, - unsigned long keylen, - int num_rounds, - symmetric_xts *xts); - -int xts_encrypt( - const unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - unsigned char *tweak, - symmetric_xts *xts); -int xts_decrypt( - const unsigned char *ct, unsigned long ptlen, - unsigned char *pt, - unsigned char *tweak, - symmetric_xts *xts); - -void xts_done(symmetric_xts *xts); -int xts_test(void); -void xts_mult_x(unsigned char *I); -#endif - -int find_cipher(const char *name); -int find_cipher_any(const char *name, int blocklen, int keylen); -int find_cipher_id(unsigned char ID); -int register_cipher(const struct ltc_cipher_descriptor *cipher); -int unregister_cipher(const struct ltc_cipher_descriptor *cipher); -int register_all_ciphers(void); -int cipher_is_valid(int idx); - -LTC_MUTEX_PROTO(ltc_cipher_mutex) - -/* ---- stream ciphers ---- */ - -#ifdef LTC_CHACHA - -typedef struct { - ulong32 input[16]; - unsigned char kstream[64]; - unsigned long ksleft; - unsigned long ivlen; - int rounds; -} chacha_state; - -int chacha_setup(chacha_state *st, const unsigned char *key, unsigned long keylen, int rounds); -int chacha_ivctr32(chacha_state *st, const unsigned char *iv, unsigned long ivlen, ulong32 counter); -int chacha_ivctr64(chacha_state *st, const unsigned char *iv, unsigned long ivlen, ulong64 counter); -int chacha_crypt(chacha_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out); -int chacha_keystream(chacha_state *st, unsigned char *out, unsigned long outlen); -int chacha_done(chacha_state *st); -int chacha_test(void); - -#endif /* LTC_CHACHA */ - -#ifdef LTC_RC4_STREAM - -typedef struct { - unsigned int x, y; - unsigned char buf[256]; -} rc4_state; - -int rc4_stream_setup(rc4_state *st, const unsigned char *key, unsigned long keylen); -int rc4_stream_crypt(rc4_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out); -int rc4_stream_keystream(rc4_state *st, unsigned char *out, unsigned long outlen); -int rc4_stream_done(rc4_state *st); -int rc4_stream_test(void); - -#endif /* LTC_RC4_STREAM */ - -#ifdef LTC_SOBER128_STREAM - -typedef struct { - ulong32 R[17], /* Working storage for the shift register */ - initR[17], /* saved register contents */ - konst, /* key dependent constant */ - sbuf; /* partial word encryption buffer */ - int nbuf; /* number of part-word stream bits buffered */ -} sober128_state; - -int sober128_stream_setup(sober128_state *st, const unsigned char *key, unsigned long keylen); -int sober128_stream_setiv(sober128_state *st, const unsigned char *iv, unsigned long ivlen); -int sober128_stream_crypt(sober128_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out); -int sober128_stream_keystream(sober128_state *st, unsigned char *out, unsigned long outlen); -int sober128_stream_done(sober128_state *st); -int sober128_stream_test(void); - -#endif /* LTC_SOBER128_STREAM */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/headers/tomcrypt_custom.h b/src/libtomcrypt/src/headers/tomcrypt_custom.h deleted file mode 100644 index e44a63a74b..0000000000 --- a/src/libtomcrypt/src/headers/tomcrypt_custom.h +++ /dev/null @@ -1,590 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#ifndef TOMCRYPT_CUSTOM_H_ -#define TOMCRYPT_CUSTOM_H_ - -/* macros for various libc functions you can change for embedded targets */ -#ifndef XMALLOC -#define XMALLOC malloc -#endif -#ifndef XREALLOC -#define XREALLOC realloc -#endif -#ifndef XCALLOC -#define XCALLOC calloc -#endif -#ifndef XFREE -#define XFREE free -#endif - -#ifndef XMEMSET -#define XMEMSET memset -#endif -#ifndef XMEMCPY -#define XMEMCPY memcpy -#endif -#ifndef XMEMMOVE -#define XMEMMOVE memmove -#endif -#ifndef XMEMCMP -#define XMEMCMP memcmp -#endif -/* A memory compare function that has to run in constant time, - * c.f. mem_neq() API summary. - */ -#ifndef XMEM_NEQ -#define XMEM_NEQ mem_neq -#endif -#ifndef XSTRCMP -#define XSTRCMP strcmp -#endif - -#ifndef XCLOCK -#define XCLOCK clock -#endif - -#ifndef XQSORT -#define XQSORT qsort -#endif - -#if ( defined(malloc) || defined(realloc) || defined(calloc) || defined(free) || \ - defined(memset) || defined(memcpy) || defined(memcmp) || defined(strcmp) || \ - defined(clock) || defined(qsort) ) && !defined(LTC_NO_PROTOTYPES) -#define LTC_NO_PROTOTYPES -#endif - -/* shortcut to disable automatic inclusion */ -#if defined LTC_NOTHING && !defined LTC_EASY - #define LTC_NO_CIPHERS - #define LTC_NO_MODES - #define LTC_NO_HASHES - #define LTC_NO_MACS - #define LTC_NO_PRNGS - #define LTC_NO_PK - #define LTC_NO_PKCS - #define LTC_NO_MISC -#endif /* LTC_NOTHING */ - -/* Easy button? */ -#ifdef LTC_EASY - #define LTC_NO_CIPHERS - #define LTC_RIJNDAEL - #define LTC_BLOWFISH - #define LTC_DES - #define LTC_CAST5 - - #define LTC_NO_MODES - #define LTC_ECB_MODE - #define LTC_CBC_MODE - #define LTC_CTR_MODE - - #define LTC_NO_HASHES - #define LTC_SHA1 - #define LTC_SHA3 - #define LTC_SHA512 - #define LTC_SHA384 - #define LTC_SHA256 - #define LTC_SHA224 - #define LTC_HASH_HELPERS - - #define LTC_NO_MACS - #define LTC_HMAC - #define LTC_OMAC - #define LTC_CCM_MODE - - #define LTC_NO_PRNGS - #define LTC_SPRNG - #define LTC_YARROW - #define LTC_DEVRANDOM - #define LTC_TRY_URANDOM_FIRST - #define LTC_RNG_GET_BYTES - #define LTC_RNG_MAKE_PRNG - - #define LTC_NO_PK - #define LTC_MRSA - #define LTC_MECC - - #define LTC_NO_MISC - #define LTC_BASE64 -#endif - -/* The minimal set of functionality to run the tests */ -#ifdef LTC_MINIMAL - #define LTC_RIJNDAEL - #define LTC_SHA256 - #define LTC_YARROW - #define LTC_CTR_MODE - - #define LTC_RNG_MAKE_PRNG - #define LTC_RNG_GET_BYTES - #define LTC_DEVRANDOM - #define LTC_TRY_URANDOM_FIRST - - #undef LTC_NO_FILE -#endif - -/* Enable self-test test vector checking */ -#ifndef LTC_NO_TEST - #define LTC_TEST -#endif -/* Enable extended self-tests */ -/* #define LTC_TEST_EXT */ - -/* Use small code where possible */ -/* #define LTC_SMALL_CODE */ - -/* clean the stack of functions which put private information on stack */ -/* #define LTC_CLEAN_STACK */ - -/* disable all file related functions */ -/* #define LTC_NO_FILE */ - -/* disable all forms of ASM */ -/* #define LTC_NO_ASM */ - -/* disable FAST mode */ -/* #define LTC_NO_FAST */ - -/* disable BSWAP on x86 */ -/* #define LTC_NO_BSWAP */ - -/* ---> math provider? <--- */ -#ifndef LTC_NO_MATH - -/* LibTomMath */ -/* #define LTM_DESC */ - -/* TomsFastMath */ -/* #define TFM_DESC */ - -/* GNU Multiple Precision Arithmetic Library */ -/* #define GMP_DESC */ - -#endif /* LTC_NO_MATH */ - -/* ---> Symmetric Block Ciphers <--- */ -#ifndef LTC_NO_CIPHERS - -#define LTC_BLOWFISH -#define LTC_RC2 -#define LTC_RC5 -#define LTC_RC6 -#define LTC_SAFERP -#define LTC_RIJNDAEL -#define LTC_XTEA -/* _TABLES tells it to use tables during setup, _SMALL means to use the smaller scheduled key format - * (saves 4KB of ram), _ALL_TABLES enables all tables during setup */ -#define LTC_TWOFISH -#ifndef LTC_NO_TABLES - #define LTC_TWOFISH_TABLES - /* #define LTC_TWOFISH_ALL_TABLES */ -#else - #define LTC_TWOFISH_SMALL -#endif -/* #define LTC_TWOFISH_SMALL */ -/* LTC_DES includes EDE triple-DES */ -#define LTC_DES -#define LTC_CAST5 -#define LTC_NOEKEON -#define LTC_SKIPJACK -#define LTC_SAFER -#define LTC_KHAZAD -#define LTC_ANUBIS -#define LTC_ANUBIS_TWEAK -#define LTC_KSEED -#define LTC_KASUMI -#define LTC_MULTI2 -#define LTC_CAMELLIA - -/* stream ciphers */ -#define LTC_CHACHA -#define LTC_RC4_STREAM -#define LTC_SOBER128_STREAM - -#endif /* LTC_NO_CIPHERS */ - - -/* ---> Block Cipher Modes of Operation <--- */ -#ifndef LTC_NO_MODES - -#define LTC_CFB_MODE -#define LTC_OFB_MODE -#define LTC_ECB_MODE -#define LTC_CBC_MODE -#define LTC_CTR_MODE - -/* F8 chaining mode */ -#define LTC_F8_MODE - -/* LRW mode */ -#define LTC_LRW_MODE -#ifndef LTC_NO_TABLES - /* like GCM mode this will enable 16 8x128 tables [64KB] that make - * seeking very fast. - */ - #define LTC_LRW_TABLES -#endif - -/* XTS mode */ -#define LTC_XTS_MODE - -#endif /* LTC_NO_MODES */ - -/* ---> One-Way Hash Functions <--- */ -#ifndef LTC_NO_HASHES - -#define LTC_CHC_HASH -#define LTC_WHIRLPOOL -#define LTC_SHA3 -#define LTC_SHA512 -#define LTC_SHA512_256 -#define LTC_SHA512_224 -#define LTC_SHA384 -#define LTC_SHA256 -#define LTC_SHA224 -#define LTC_TIGER -#define LTC_SHA1 -#define LTC_MD5 -#define LTC_MD4 -#define LTC_MD2 -#define LTC_RIPEMD128 -#define LTC_RIPEMD160 -#define LTC_RIPEMD256 -#define LTC_RIPEMD320 -#define LTC_BLAKE2S -#define LTC_BLAKE2B - -#define LTC_HASH_HELPERS - -#endif /* LTC_NO_HASHES */ - - -/* ---> MAC functions <--- */ -#ifndef LTC_NO_MACS - -#define LTC_HMAC -#define LTC_OMAC -#define LTC_PMAC -#define LTC_XCBC -#define LTC_F9_MODE -#define LTC_PELICAN -#define LTC_POLY1305 -#define LTC_BLAKE2SMAC -#define LTC_BLAKE2BMAC - -/* ---> Encrypt + Authenticate Modes <--- */ - -#define LTC_EAX_MODE - -#define LTC_OCB_MODE -#define LTC_OCB3_MODE -#define LTC_CCM_MODE -#define LTC_GCM_MODE -#define LTC_CHACHA20POLY1305_MODE - -/* Use 64KiB tables */ -#ifndef LTC_NO_TABLES - #define LTC_GCM_TABLES -#endif - -/* USE SSE2? requires GCC works on x86_32 and x86_64*/ -#ifdef LTC_GCM_TABLES -/* #define LTC_GCM_TABLES_SSE2 */ -#endif - -#endif /* LTC_NO_MACS */ - - -/* --> Pseudo Random Number Generators <--- */ -#ifndef LTC_NO_PRNGS - -/* Yarrow */ -#define LTC_YARROW - -/* a PRNG that simply reads from an available system source */ -#define LTC_SPRNG - -/* The RC4 stream cipher based PRNG */ -#define LTC_RC4 - -/* The ChaCha20 stream cipher based PRNG */ -#define LTC_CHACHA20_PRNG - -/* Fortuna PRNG */ -#define LTC_FORTUNA - -/* Greg's SOBER128 stream cipher based PRNG */ -#define LTC_SOBER128 - -/* the *nix style /dev/random device */ -#define LTC_DEVRANDOM -/* try /dev/urandom before trying /dev/random - * are you sure you want to disable this? http://www.2uo.de/myths-about-urandom/ */ -#define LTC_TRY_URANDOM_FIRST -/* rng_get_bytes() */ -#define LTC_RNG_GET_BYTES -/* rng_make_prng() */ -#define LTC_RNG_MAKE_PRNG - -/* enable the ltc_rng hook to integrate e.g. embedded hardware RNG's easily */ -/* #define LTC_PRNG_ENABLE_LTC_RNG */ - -#endif /* LTC_NO_PRNGS */ - -#ifdef LTC_YARROW - -/* which descriptor of AES to use? */ -/* 0 = rijndael_enc 1 = aes_enc, 2 = rijndael [full], 3 = aes [full] */ -#ifdef ENCRYPT_ONLY - #define LTC_YARROW_AES 0 -#else - #define LTC_YARROW_AES 2 -#endif - -#endif - -#ifdef LTC_FORTUNA - -#ifndef LTC_FORTUNA_WD -/* reseed every N calls to the read function */ -#define LTC_FORTUNA_WD 10 -#endif - -#ifndef LTC_FORTUNA_POOLS -/* number of pools (4..32) can save a bit of ram by lowering the count */ -#define LTC_FORTUNA_POOLS 32 -#endif - -#endif /* LTC_FORTUNA */ - - -/* ---> Public Key Crypto <--- */ -#ifndef LTC_NO_PK - -/* Include RSA support */ -#define LTC_MRSA - -/* Include Diffie-Hellman support */ -/* is_prime fails for GMP */ -#define LTC_MDH -/* Supported Key Sizes */ -#define LTC_DH768 -#define LTC_DH1024 -#define LTC_DH1536 -#define LTC_DH2048 - -#ifndef TFM_DESC -/* tfm has a problem in fp_isprime for larger key sizes */ -#define LTC_DH3072 -#define LTC_DH4096 -#define LTC_DH6144 -#define LTC_DH8192 -#endif - -/* Include Katja (a Rabin variant like RSA) */ -/* #define LTC_MKAT */ - -/* Digital Signature Algorithm */ -#define LTC_MDSA - -/* ECC */ -#define LTC_MECC - -/* use Shamir's trick for point mul (speeds up signature verification) */ -#define LTC_ECC_SHAMIR - -#if defined(TFM_DESC) && defined(LTC_MECC) - #define LTC_MECC_ACCEL -#endif - -/* do we want fixed point ECC */ -/* #define LTC_MECC_FP */ - -#endif /* LTC_NO_PK */ - -#if defined(LTC_MRSA) && !defined(LTC_NO_RSA_BLINDING) -/* Enable RSA blinding when doing private key operations by default */ -#define LTC_RSA_BLINDING -#endif /* LTC_NO_RSA_BLINDING */ - -#if defined(LTC_MRSA) && !defined(LTC_NO_RSA_CRT_HARDENING) -/* Enable RSA CRT hardening when doing private key operations by default */ -#define LTC_RSA_CRT_HARDENING -#endif /* LTC_NO_RSA_CRT_HARDENING */ - -#if defined(LTC_MECC) && !defined(LTC_NO_ECC_TIMING_RESISTANT) -/* Enable ECC timing resistant version by default */ -#define LTC_ECC_TIMING_RESISTANT -#endif - -/* PKCS #1 (RSA) and #5 (Password Handling) stuff */ -#ifndef LTC_NO_PKCS - -#define LTC_PKCS_1 -#define LTC_PKCS_5 - -/* Include ASN.1 DER (required by DSA/RSA) */ -#define LTC_DER - -#endif /* LTC_NO_PKCS */ - -/* misc stuff */ -#ifndef LTC_NO_MISC - -/* Various tidbits of modern neatoness */ -#define LTC_BASE64 -/* ... and it's URL safe version */ -#define LTC_BASE64_URL - -/* Keep LTC_NO_HKDF for compatibility reasons - * superseeded by LTC_NO_MISC*/ -#ifndef LTC_NO_HKDF -/* HKDF Key Derivation/Expansion stuff */ -#define LTC_HKDF -#endif /* LTC_NO_HKDF */ - -#define LTC_ADLER32 - -#define LTC_CRC32 - -#endif /* LTC_NO_MISC */ - -/* cleanup */ - -#ifdef LTC_MECC -/* Supported ECC Key Sizes */ -#ifndef LTC_NO_CURVES - #define LTC_ECC112 - #define LTC_ECC128 - #define LTC_ECC160 - #define LTC_ECC192 - #define LTC_ECC224 - #define LTC_ECC256 - #define LTC_ECC384 - #define LTC_ECC521 -#endif -#endif - -#if defined(LTC_DER) - #ifndef LTC_DER_MAX_RECURSION - /* Maximum recursion limit when processing nested ASN.1 types. */ - #define LTC_DER_MAX_RECURSION 30 - #endif -#endif - -#if defined(LTC_MECC) || defined(LTC_MRSA) || defined(LTC_MDSA) || defined(LTC_MKAT) - /* Include the MPI functionality? (required by the PK algorithms) */ - #define LTC_MPI - - #ifndef LTC_PK_MAX_RETRIES - /* iterations limit for retry-loops */ - #define LTC_PK_MAX_RETRIES 20 - #endif -#endif - -#ifdef LTC_MRSA - #define LTC_PKCS_1 -#endif - -#if defined(LTC_PELICAN) && !defined(LTC_RIJNDAEL) - #error Pelican-MAC requires LTC_RIJNDAEL -#endif - -#if defined(LTC_EAX_MODE) && !(defined(LTC_CTR_MODE) && defined(LTC_OMAC)) - #error LTC_EAX_MODE requires CTR and LTC_OMAC mode -#endif - -#if defined(LTC_YARROW) && !defined(LTC_CTR_MODE) - #error LTC_YARROW requires LTC_CTR_MODE chaining mode to be defined! -#endif - -#if defined(LTC_DER) && !defined(LTC_MPI) - #error ASN.1 DER requires MPI functionality -#endif - -#if (defined(LTC_MDSA) || defined(LTC_MRSA) || defined(LTC_MECC) || defined(LTC_MKAT)) && !defined(LTC_DER) - #error PK requires ASN.1 DER functionality, make sure LTC_DER is enabled -#endif - -#if defined(LTC_CHACHA20POLY1305_MODE) && (!defined(LTC_CHACHA) || !defined(LTC_POLY1305)) - #error LTC_CHACHA20POLY1305_MODE requires LTC_CHACHA + LTC_POLY1305 -#endif - -#if defined(LTC_CHACHA20_PRNG) && !defined(LTC_CHACHA) - #error LTC_CHACHA20_PRNG requires LTC_CHACHA -#endif - -#if defined(LTC_RC4) && !defined(LTC_RC4_STREAM) - #error LTC_RC4 requires LTC_RC4_STREAM -#endif - -#if defined(LTC_SOBER128) && !defined(LTC_SOBER128_STREAM) - #error LTC_SOBER128 requires LTC_SOBER128_STREAM -#endif - -#if defined(LTC_BLAKE2SMAC) && !defined(LTC_BLAKE2S) - #error LTC_BLAKE2SMAC requires LTC_BLAKE2S -#endif - -#if defined(LTC_BLAKE2BMAC) && !defined(LTC_BLAKE2B) - #error LTC_BLAKE2BMAC requires LTC_BLAKE2B -#endif - -#if defined(LTC_SPRNG) && !defined(LTC_RNG_GET_BYTES) - #error LTC_SPRNG requires LTC_RNG_GET_BYTES -#endif - -#if defined(LTC_NO_MATH) && (defined(LTM_DESC) || defined(TFM_DESC) || defined(GMP_DESC)) - #error LTC_NO_MATH defined, but also a math descriptor -#endif - -/* THREAD management */ -#ifdef LTC_PTHREAD - -#include - -#define LTC_MUTEX_GLOBAL(x) pthread_mutex_t x = PTHREAD_MUTEX_INITIALIZER; -#define LTC_MUTEX_PROTO(x) extern pthread_mutex_t x; -#define LTC_MUTEX_TYPE(x) pthread_mutex_t x; -#define LTC_MUTEX_INIT(x) LTC_ARGCHK(pthread_mutex_init(x, NULL) == 0); -#define LTC_MUTEX_LOCK(x) LTC_ARGCHK(pthread_mutex_lock(x) == 0); -#define LTC_MUTEX_UNLOCK(x) LTC_ARGCHK(pthread_mutex_unlock(x) == 0); -#define LTC_MUTEX_DESTROY(x) LTC_ARGCHK(pthread_mutex_destroy(x) == 0); - -#else - -/* default no functions */ -#define LTC_MUTEX_GLOBAL(x) -#define LTC_MUTEX_PROTO(x) -#define LTC_MUTEX_TYPE(x) -#define LTC_MUTEX_INIT(x) -#define LTC_MUTEX_LOCK(x) -#define LTC_MUTEX_UNLOCK(x) -#define LTC_MUTEX_DESTROY(x) - -#endif - -/* Debuggers */ - -/* define this if you use Valgrind, note: it CHANGES the way SOBER-128 and RC4 work (see the code) */ -/* #define LTC_VALGRIND */ - -#endif - -#ifndef LTC_NO_FILE - /* buffer size for reading from a file via fread(..) */ - #ifndef LTC_FILE_READ_BUFSIZE - #define LTC_FILE_READ_BUFSIZE 8192 - #endif -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/headers/tomcrypt_hash.h b/src/libtomcrypt/src/headers/tomcrypt_hash.h deleted file mode 100644 index 4bb02631d8..0000000000 --- a/src/libtomcrypt/src/headers/tomcrypt_hash.h +++ /dev/null @@ -1,531 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* ---- HASH FUNCTIONS ---- */ -#ifdef LTC_SHA3 -struct sha3_state { - ulong64 saved; /* the portion of the input message that we didn't consume yet */ - ulong64 s[25]; - unsigned char sb[25 * 8]; /* used for storing `ulong64 s[25]` as little-endian bytes */ - unsigned short byte_index; /* 0..7--the next byte after the set one (starts from 0; 0--none are buffered) */ - unsigned short word_index; /* 0..24--the next word to integrate input (starts from 0) */ - unsigned short capacity_words; /* the double size of the hash output in words (e.g. 16 for Keccak 512) */ - unsigned short xof_flag; -}; -#endif - -#ifdef LTC_SHA512 -struct sha512_state { - ulong64 length, state[8]; - unsigned long curlen; - unsigned char buf[128]; -}; -#endif - -#ifdef LTC_SHA256 -struct sha256_state { - ulong64 length; - ulong32 state[8], curlen; - unsigned char buf[64]; -}; -#endif - -#ifdef LTC_SHA1 -struct sha1_state { - ulong64 length; - ulong32 state[5], curlen; - unsigned char buf[64]; -}; -#endif - -#ifdef LTC_MD5 -struct md5_state { - ulong64 length; - ulong32 state[4], curlen; - unsigned char buf[64]; -}; -#endif - -#ifdef LTC_MD4 -struct md4_state { - ulong64 length; - ulong32 state[4], curlen; - unsigned char buf[64]; -}; -#endif - -#ifdef LTC_TIGER -struct tiger_state { - ulong64 state[3], length; - unsigned long curlen; - unsigned char buf[64]; -}; -#endif - -#ifdef LTC_MD2 -struct md2_state { - unsigned char chksum[16], X[48], buf[16]; - unsigned long curlen; -}; -#endif - -#ifdef LTC_RIPEMD128 -struct rmd128_state { - ulong64 length; - unsigned char buf[64]; - ulong32 curlen, state[4]; -}; -#endif - -#ifdef LTC_RIPEMD160 -struct rmd160_state { - ulong64 length; - unsigned char buf[64]; - ulong32 curlen, state[5]; -}; -#endif - -#ifdef LTC_RIPEMD256 -struct rmd256_state { - ulong64 length; - unsigned char buf[64]; - ulong32 curlen, state[8]; -}; -#endif - -#ifdef LTC_RIPEMD320 -struct rmd320_state { - ulong64 length; - unsigned char buf[64]; - ulong32 curlen, state[10]; -}; -#endif - -#ifdef LTC_WHIRLPOOL -struct whirlpool_state { - ulong64 length, state[8]; - unsigned char buf[64]; - ulong32 curlen; -}; -#endif - -#ifdef LTC_CHC_HASH -struct chc_state { - ulong64 length; - unsigned char state[MAXBLOCKSIZE], buf[MAXBLOCKSIZE]; - ulong32 curlen; -}; -#endif - -#ifdef LTC_BLAKE2S -struct blake2s_state { - ulong32 h[8]; - ulong32 t[2]; - ulong32 f[2]; - unsigned char buf[64]; - unsigned long curlen; - unsigned long outlen; - unsigned char last_node; -}; -#endif - -#ifdef LTC_BLAKE2B -struct blake2b_state { - ulong64 h[8]; - ulong64 t[2]; - ulong64 f[2]; - unsigned char buf[128]; - unsigned long curlen; - unsigned long outlen; - unsigned char last_node; -}; -#endif - -typedef union Hash_state { - char dummy[1]; -#ifdef LTC_CHC_HASH - struct chc_state chc; -#endif -#ifdef LTC_WHIRLPOOL - struct whirlpool_state whirlpool; -#endif -#ifdef LTC_SHA3 - struct sha3_state sha3; -#endif -#ifdef LTC_SHA512 - struct sha512_state sha512; -#endif -#ifdef LTC_SHA256 - struct sha256_state sha256; -#endif -#ifdef LTC_SHA1 - struct sha1_state sha1; -#endif -#ifdef LTC_MD5 - struct md5_state md5; -#endif -#ifdef LTC_MD4 - struct md4_state md4; -#endif -#ifdef LTC_MD2 - struct md2_state md2; -#endif -#ifdef LTC_TIGER - struct tiger_state tiger; -#endif -#ifdef LTC_RIPEMD128 - struct rmd128_state rmd128; -#endif -#ifdef LTC_RIPEMD160 - struct rmd160_state rmd160; -#endif -#ifdef LTC_RIPEMD256 - struct rmd256_state rmd256; -#endif -#ifdef LTC_RIPEMD320 - struct rmd320_state rmd320; -#endif -#ifdef LTC_BLAKE2S - struct blake2s_state blake2s; -#endif -#ifdef LTC_BLAKE2B - struct blake2b_state blake2b; -#endif - - void *data; -} hash_state; - -/** hash descriptor */ -extern struct ltc_hash_descriptor { - /** name of hash */ - const char *name; - /** internal ID */ - unsigned char ID; - /** Size of digest in octets */ - unsigned long hashsize; - /** Input block size in octets */ - unsigned long blocksize; - /** ASN.1 OID */ - unsigned long OID[16]; - /** Length of DER encoding */ - unsigned long OIDlen; - - /** Init a hash state - @param hash The hash to initialize - @return CRYPT_OK if successful - */ - int (*init)(hash_state *hash); - /** Process a block of data - @param hash The hash state - @param in The data to hash - @param inlen The length of the data (octets) - @return CRYPT_OK if successful - */ - int (*process)(hash_state *hash, const unsigned char *in, unsigned long inlen); - /** Produce the digest and store it - @param hash The hash state - @param out [out] The destination of the digest - @return CRYPT_OK if successful - */ - int (*done)(hash_state *hash, unsigned char *out); - /** Self-test - @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled - */ - int (*test)(void); - - /* accelerated hmac callback: if you need to-do multiple packets just use the generic hmac_memory and provide a hash callback */ - int (*hmac_block)(const unsigned char *key, unsigned long keylen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); - -} hash_descriptor[]; - -#ifdef LTC_CHC_HASH -int chc_register(int cipher); -int chc_init(hash_state * md); -int chc_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int chc_done(hash_state * md, unsigned char *hash); -int chc_test(void); -extern const struct ltc_hash_descriptor chc_desc; -#endif - -#ifdef LTC_WHIRLPOOL -int whirlpool_init(hash_state * md); -int whirlpool_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int whirlpool_done(hash_state * md, unsigned char *hash); -int whirlpool_test(void); -extern const struct ltc_hash_descriptor whirlpool_desc; -#endif - -#ifdef LTC_SHA3 -int sha3_512_init(hash_state * md); -int sha3_512_test(void); -extern const struct ltc_hash_descriptor sha3_512_desc; -int sha3_384_init(hash_state * md); -int sha3_384_test(void); -extern const struct ltc_hash_descriptor sha3_384_desc; -int sha3_256_init(hash_state * md); -int sha3_256_test(void); -extern const struct ltc_hash_descriptor sha3_256_desc; -int sha3_224_init(hash_state * md); -int sha3_224_test(void); -extern const struct ltc_hash_descriptor sha3_224_desc; -/* process + done are the same for all variants */ -int sha3_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int sha3_done(hash_state *md, unsigned char *hash); -/* SHAKE128 + SHAKE256 */ -int sha3_shake_init(hash_state *md, int num); -#define sha3_shake_process(a,b,c) sha3_process(a,b,c) -int sha3_shake_done(hash_state *md, unsigned char *out, unsigned long outlen); -int sha3_shake_test(void); -int sha3_shake_memory(int num, const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen); -#endif - -#ifdef LTC_SHA512 -int sha512_init(hash_state * md); -int sha512_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int sha512_done(hash_state * md, unsigned char *hash); -int sha512_test(void); -extern const struct ltc_hash_descriptor sha512_desc; -#endif - -#ifdef LTC_SHA384 -#ifndef LTC_SHA512 - #error LTC_SHA512 is required for LTC_SHA384 -#endif -int sha384_init(hash_state * md); -#define sha384_process sha512_process -int sha384_done(hash_state * md, unsigned char *hash); -int sha384_test(void); -extern const struct ltc_hash_descriptor sha384_desc; -#endif - -#ifdef LTC_SHA512_256 -#ifndef LTC_SHA512 - #error LTC_SHA512 is required for LTC_SHA512_256 -#endif -int sha512_256_init(hash_state * md); -#define sha512_256_process sha512_process -int sha512_256_done(hash_state * md, unsigned char *hash); -int sha512_256_test(void); -extern const struct ltc_hash_descriptor sha512_256_desc; -#endif - -#ifdef LTC_SHA512_224 -#ifndef LTC_SHA512 - #error LTC_SHA512 is required for LTC_SHA512_224 -#endif -int sha512_224_init(hash_state * md); -#define sha512_224_process sha512_process -int sha512_224_done(hash_state * md, unsigned char *hash); -int sha512_224_test(void); -extern const struct ltc_hash_descriptor sha512_224_desc; -#endif - -#ifdef LTC_SHA256 -int sha256_init(hash_state * md); -int sha256_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int sha256_done(hash_state * md, unsigned char *hash); -int sha256_test(void); -extern const struct ltc_hash_descriptor sha256_desc; - -#ifdef LTC_SHA224 -#ifndef LTC_SHA256 - #error LTC_SHA256 is required for LTC_SHA224 -#endif -int sha224_init(hash_state * md); -#define sha224_process sha256_process -int sha224_done(hash_state * md, unsigned char *hash); -int sha224_test(void); -extern const struct ltc_hash_descriptor sha224_desc; -#endif -#endif - -#ifdef LTC_SHA1 -int sha1_init(hash_state * md); -int sha1_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int sha1_done(hash_state * md, unsigned char *hash); -int sha1_test(void); -extern const struct ltc_hash_descriptor sha1_desc; -#endif - -#ifdef LTC_BLAKE2S -extern const struct ltc_hash_descriptor blake2s_256_desc; -int blake2s_256_init(hash_state * md); -int blake2s_256_test(void); - -extern const struct ltc_hash_descriptor blake2s_224_desc; -int blake2s_224_init(hash_state * md); -int blake2s_224_test(void); - -extern const struct ltc_hash_descriptor blake2s_160_desc; -int blake2s_160_init(hash_state * md); -int blake2s_160_test(void); - -extern const struct ltc_hash_descriptor blake2s_128_desc; -int blake2s_128_init(hash_state * md); -int blake2s_128_test(void); - -int blake2s_init(hash_state * md, unsigned long outlen, const unsigned char *key, unsigned long keylen); -int blake2s_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int blake2s_done(hash_state * md, unsigned char *hash); -#endif - -#ifdef LTC_BLAKE2B -extern const struct ltc_hash_descriptor blake2b_512_desc; -int blake2b_512_init(hash_state * md); -int blake2b_512_test(void); - -extern const struct ltc_hash_descriptor blake2b_384_desc; -int blake2b_384_init(hash_state * md); -int blake2b_384_test(void); - -extern const struct ltc_hash_descriptor blake2b_256_desc; -int blake2b_256_init(hash_state * md); -int blake2b_256_test(void); - -extern const struct ltc_hash_descriptor blake2b_160_desc; -int blake2b_160_init(hash_state * md); -int blake2b_160_test(void); - -int blake2b_init(hash_state * md, unsigned long outlen, const unsigned char *key, unsigned long keylen); -int blake2b_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int blake2b_done(hash_state * md, unsigned char *hash); -#endif - -#ifdef LTC_MD5 -int md5_init(hash_state * md); -int md5_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int md5_done(hash_state * md, unsigned char *hash); -int md5_test(void); -extern const struct ltc_hash_descriptor md5_desc; -#endif - -#ifdef LTC_MD4 -int md4_init(hash_state * md); -int md4_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int md4_done(hash_state * md, unsigned char *hash); -int md4_test(void); -extern const struct ltc_hash_descriptor md4_desc; -#endif - -#ifdef LTC_MD2 -int md2_init(hash_state * md); -int md2_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int md2_done(hash_state * md, unsigned char *hash); -int md2_test(void); -extern const struct ltc_hash_descriptor md2_desc; -#endif - -#ifdef LTC_TIGER -int tiger_init(hash_state * md); -int tiger_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int tiger_done(hash_state * md, unsigned char *hash); -int tiger_test(void); -extern const struct ltc_hash_descriptor tiger_desc; -#endif - -#ifdef LTC_RIPEMD128 -int rmd128_init(hash_state * md); -int rmd128_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int rmd128_done(hash_state * md, unsigned char *hash); -int rmd128_test(void); -extern const struct ltc_hash_descriptor rmd128_desc; -#endif - -#ifdef LTC_RIPEMD160 -int rmd160_init(hash_state * md); -int rmd160_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int rmd160_done(hash_state * md, unsigned char *hash); -int rmd160_test(void); -extern const struct ltc_hash_descriptor rmd160_desc; -#endif - -#ifdef LTC_RIPEMD256 -int rmd256_init(hash_state * md); -int rmd256_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int rmd256_done(hash_state * md, unsigned char *hash); -int rmd256_test(void); -extern const struct ltc_hash_descriptor rmd256_desc; -#endif - -#ifdef LTC_RIPEMD320 -int rmd320_init(hash_state * md); -int rmd320_process(hash_state * md, const unsigned char *in, unsigned long inlen); -int rmd320_done(hash_state * md, unsigned char *hash); -int rmd320_test(void); -extern const struct ltc_hash_descriptor rmd320_desc; -#endif - - -int find_hash(const char *name); -int find_hash_id(unsigned char ID); -int find_hash_oid(const unsigned long *ID, unsigned long IDlen); -int find_hash_any(const char *name, int digestlen); -int register_hash(const struct ltc_hash_descriptor *hash); -int unregister_hash(const struct ltc_hash_descriptor *hash); -int register_all_hashes(void); -int hash_is_valid(int idx); - -LTC_MUTEX_PROTO(ltc_hash_mutex) - -int hash_memory(int hash, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int hash_memory_multi(int hash, unsigned char *out, unsigned long *outlen, - const unsigned char *in, unsigned long inlen, ...); - -#ifndef LTC_NO_FILE -int hash_filehandle(int hash, FILE *in, unsigned char *out, unsigned long *outlen); -int hash_file(int hash, const char *fname, unsigned char *out, unsigned long *outlen); -#endif - -/* a simple macro for making hash "process" functions */ -#define HASH_PROCESS(func_name, compress_name, state_var, block_size) \ -int func_name (hash_state * md, const unsigned char *in, unsigned long inlen) \ -{ \ - unsigned long n; \ - int err; \ - LTC_ARGCHK(md != NULL); \ - LTC_ARGCHK(in != NULL); \ - if (md-> state_var .curlen > sizeof(md-> state_var .buf)) { \ - return CRYPT_INVALID_ARG; \ - } \ - if ((md-> state_var .length + inlen) < md-> state_var .length) { \ - return CRYPT_HASH_OVERFLOW; \ - } \ - while (inlen > 0) { \ - if (md-> state_var .curlen == 0 && inlen >= block_size) { \ - if ((err = compress_name (md, (unsigned char *)in)) != CRYPT_OK) { \ - return err; \ - } \ - md-> state_var .length += block_size * 8; \ - in += block_size; \ - inlen -= block_size; \ - } else { \ - n = MIN(inlen, (block_size - md-> state_var .curlen)); \ - XMEMCPY(md-> state_var .buf + md-> state_var.curlen, in, (size_t)n); \ - md-> state_var .curlen += n; \ - in += n; \ - inlen -= n; \ - if (md-> state_var .curlen == block_size) { \ - if ((err = compress_name (md, md-> state_var .buf)) != CRYPT_OK) { \ - return err; \ - } \ - md-> state_var .length += 8*block_size; \ - md-> state_var .curlen = 0; \ - } \ - } \ - } \ - return CRYPT_OK; \ -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/headers/tomcrypt_mac.h b/src/libtomcrypt/src/headers/tomcrypt_mac.h deleted file mode 100644 index 80b922e751..0000000000 --- a/src/libtomcrypt/src/headers/tomcrypt_mac.h +++ /dev/null @@ -1,565 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#ifdef LTC_HMAC -typedef struct Hmac_state { - hash_state md; - int hash; - hash_state hashstate; - unsigned char *key; -} hmac_state; - -int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned long keylen); -int hmac_process(hmac_state *hmac, const unsigned char *in, unsigned long inlen); -int hmac_done(hmac_state *hmac, unsigned char *out, unsigned long *outlen); -int hmac_test(void); -int hmac_memory(int hash, - const unsigned char *key, unsigned long keylen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int hmac_memory_multi(int hash, - const unsigned char *key, unsigned long keylen, - unsigned char *out, unsigned long *outlen, - const unsigned char *in, unsigned long inlen, ...); -int hmac_file(int hash, const char *fname, const unsigned char *key, - unsigned long keylen, - unsigned char *dst, unsigned long *dstlen); -#endif - -#ifdef LTC_OMAC - -typedef struct { - int cipher_idx, - buflen, - blklen; - unsigned char block[MAXBLOCKSIZE], - prev[MAXBLOCKSIZE], - Lu[2][MAXBLOCKSIZE]; - symmetric_key key; -} omac_state; - -int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned long keylen); -int omac_process(omac_state *omac, const unsigned char *in, unsigned long inlen); -int omac_done(omac_state *omac, unsigned char *out, unsigned long *outlen); -int omac_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int omac_memory_multi(int cipher, - const unsigned char *key, unsigned long keylen, - unsigned char *out, unsigned long *outlen, - const unsigned char *in, unsigned long inlen, ...); -int omac_file(int cipher, - const unsigned char *key, unsigned long keylen, - const char *filename, - unsigned char *out, unsigned long *outlen); -int omac_test(void); -#endif /* LTC_OMAC */ - -#ifdef LTC_PMAC - -typedef struct { - unsigned char Ls[32][MAXBLOCKSIZE], /* L shifted by i bits to the left */ - Li[MAXBLOCKSIZE], /* value of Li [current value, we calc from previous recall] */ - Lr[MAXBLOCKSIZE], /* L * x^-1 */ - block[MAXBLOCKSIZE], /* currently accumulated block */ - checksum[MAXBLOCKSIZE]; /* current checksum */ - - symmetric_key key; /* scheduled key for cipher */ - unsigned long block_index; /* index # for current block */ - int cipher_idx, /* cipher idx */ - block_len, /* length of block */ - buflen; /* number of bytes in the buffer */ -} pmac_state; - -int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned long keylen); -int pmac_process(pmac_state *pmac, const unsigned char *in, unsigned long inlen); -int pmac_done(pmac_state *pmac, unsigned char *out, unsigned long *outlen); - -int pmac_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *msg, unsigned long msglen, - unsigned char *out, unsigned long *outlen); - -int pmac_memory_multi(int cipher, - const unsigned char *key, unsigned long keylen, - unsigned char *out, unsigned long *outlen, - const unsigned char *in, unsigned long inlen, ...); - -int pmac_file(int cipher, - const unsigned char *key, unsigned long keylen, - const char *filename, - unsigned char *out, unsigned long *outlen); - -int pmac_test(void); - -/* internal functions */ -int pmac_ntz(unsigned long x); -void pmac_shift_xor(pmac_state *pmac); - -#endif /* PMAC */ - -#ifdef LTC_POLY1305 -typedef struct { - ulong32 r[5]; - ulong32 h[5]; - ulong32 pad[4]; - unsigned long leftover; - unsigned char buffer[16]; - int final; -} poly1305_state; - -int poly1305_init(poly1305_state *st, const unsigned char *key, unsigned long keylen); -int poly1305_process(poly1305_state *st, const unsigned char *in, unsigned long inlen); -int poly1305_done(poly1305_state *st, unsigned char *mac, unsigned long *maclen); -int poly1305_memory(const unsigned char *key, unsigned long keylen, const unsigned char *in, unsigned long inlen, unsigned char *mac, unsigned long *maclen); -int poly1305_memory_multi(const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen, const unsigned char *in, unsigned long inlen, ...); -int poly1305_file(const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen); -int poly1305_test(void); -#endif /* LTC_POLY1305 */ - -#ifdef LTC_BLAKE2SMAC -typedef hash_state blake2smac_state; -int blake2smac_init(blake2smac_state *st, unsigned long outlen, const unsigned char *key, unsigned long keylen); -int blake2smac_process(blake2smac_state *st, const unsigned char *in, unsigned long inlen); -int blake2smac_done(blake2smac_state *st, unsigned char *mac, unsigned long *maclen); -int blake2smac_memory(const unsigned char *key, unsigned long keylen, const unsigned char *in, unsigned long inlen, unsigned char *mac, unsigned long *maclen); -int blake2smac_memory_multi(const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen, const unsigned char *in, unsigned long inlen, ...); -int blake2smac_file(const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen); -int blake2smac_test(void); -#endif /* LTC_BLAKE2SMAC */ - -#ifdef LTC_BLAKE2BMAC -typedef hash_state blake2bmac_state; -int blake2bmac_init(blake2bmac_state *st, unsigned long outlen, const unsigned char *key, unsigned long keylen); -int blake2bmac_process(blake2bmac_state *st, const unsigned char *in, unsigned long inlen); -int blake2bmac_done(blake2bmac_state *st, unsigned char *mac, unsigned long *maclen); -int blake2bmac_memory(const unsigned char *key, unsigned long keylen, const unsigned char *in, unsigned long inlen, unsigned char *mac, unsigned long *maclen); -int blake2bmac_memory_multi(const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen, const unsigned char *in, unsigned long inlen, ...); -int blake2bmac_file(const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen); -int blake2bmac_test(void); -#endif /* LTC_BLAKE2BMAC */ - -#ifdef LTC_EAX_MODE - -#if !(defined(LTC_OMAC) && defined(LTC_CTR_MODE)) - #error LTC_EAX_MODE requires LTC_OMAC and CTR -#endif - -typedef struct { - unsigned char N[MAXBLOCKSIZE]; - symmetric_CTR ctr; - omac_state headeromac, ctomac; -} eax_state; - -int eax_init(eax_state *eax, int cipher, const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, unsigned long noncelen, - const unsigned char *header, unsigned long headerlen); - -int eax_encrypt(eax_state *eax, const unsigned char *pt, unsigned char *ct, unsigned long length); -int eax_decrypt(eax_state *eax, const unsigned char *ct, unsigned char *pt, unsigned long length); -int eax_addheader(eax_state *eax, const unsigned char *header, unsigned long length); -int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen); - -int eax_encrypt_authenticate_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, unsigned long noncelen, - const unsigned char *header, unsigned long headerlen, - const unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - unsigned char *tag, unsigned long *taglen); - -int eax_decrypt_verify_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, unsigned long noncelen, - const unsigned char *header, unsigned long headerlen, - const unsigned char *ct, unsigned long ctlen, - unsigned char *pt, - unsigned char *tag, unsigned long taglen, - int *stat); - - int eax_test(void); -#endif /* EAX MODE */ - -#ifdef LTC_OCB_MODE -typedef struct { - unsigned char L[MAXBLOCKSIZE], /* L value */ - Ls[32][MAXBLOCKSIZE], /* L shifted by i bits to the left */ - Li[MAXBLOCKSIZE], /* value of Li [current value, we calc from previous recall] */ - Lr[MAXBLOCKSIZE], /* L * x^-1 */ - R[MAXBLOCKSIZE], /* R value */ - checksum[MAXBLOCKSIZE]; /* current checksum */ - - symmetric_key key; /* scheduled key for cipher */ - unsigned long block_index; /* index # for current block */ - int cipher, /* cipher idx */ - block_len; /* length of block */ -} ocb_state; - -int ocb_init(ocb_state *ocb, int cipher, - const unsigned char *key, unsigned long keylen, const unsigned char *nonce); - -int ocb_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned char *ct); -int ocb_decrypt(ocb_state *ocb, const unsigned char *ct, unsigned char *pt); - -int ocb_done_encrypt(ocb_state *ocb, - const unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - unsigned char *tag, unsigned long *taglen); - -int ocb_done_decrypt(ocb_state *ocb, - const unsigned char *ct, unsigned long ctlen, - unsigned char *pt, - const unsigned char *tag, unsigned long taglen, int *stat); - -int ocb_encrypt_authenticate_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, - const unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - unsigned char *tag, unsigned long *taglen); - -int ocb_decrypt_verify_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, - const unsigned char *ct, unsigned long ctlen, - unsigned char *pt, - const unsigned char *tag, unsigned long taglen, - int *stat); - -int ocb_test(void); - -/* internal functions */ -void ocb_shift_xor(ocb_state *ocb, unsigned char *Z); -int ocb_ntz(unsigned long x); -int s_ocb_done(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, - unsigned char *ct, unsigned char *tag, unsigned long *taglen, int mode); - -#endif /* LTC_OCB_MODE */ - -#ifdef LTC_OCB3_MODE -typedef struct { - unsigned char Offset_0[MAXBLOCKSIZE], /* Offset_0 value */ - Offset_current[MAXBLOCKSIZE], /* Offset_{current_block_index} value */ - L_dollar[MAXBLOCKSIZE], /* L_$ value */ - L_star[MAXBLOCKSIZE], /* L_* value */ - L_[32][MAXBLOCKSIZE], /* L_{i} values */ - tag_part[MAXBLOCKSIZE], /* intermediate result of tag calculation */ - checksum[MAXBLOCKSIZE]; /* current checksum */ - - /* AAD related members */ - unsigned char aSum_current[MAXBLOCKSIZE], /* AAD related helper variable */ - aOffset_current[MAXBLOCKSIZE], /* AAD related helper variable */ - adata_buffer[MAXBLOCKSIZE]; /* AAD buffer */ - int adata_buffer_bytes; /* bytes in AAD buffer */ - unsigned long ablock_index; /* index # for current adata (AAD) block */ - - symmetric_key key; /* scheduled key for cipher */ - unsigned long block_index; /* index # for current data block */ - int cipher, /* cipher idx */ - tag_len, /* length of tag */ - block_len; /* length of block */ -} ocb3_state; - -int ocb3_init(ocb3_state *ocb, int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, unsigned long noncelen, - unsigned long taglen); - -int ocb3_encrypt(ocb3_state *ocb, const unsigned char *pt, unsigned long ptlen, unsigned char *ct); -int ocb3_decrypt(ocb3_state *ocb, const unsigned char *ct, unsigned long ctlen, unsigned char *pt); -int ocb3_encrypt_last(ocb3_state *ocb, const unsigned char *pt, unsigned long ptlen, unsigned char *ct); -int ocb3_decrypt_last(ocb3_state *ocb, const unsigned char *ct, unsigned long ctlen, unsigned char *pt); -int ocb3_add_aad(ocb3_state *ocb, const unsigned char *aad, unsigned long aadlen); -int ocb3_done(ocb3_state *ocb, unsigned char *tag, unsigned long *taglen); - -int ocb3_encrypt_authenticate_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, unsigned long noncelen, - const unsigned char *adata, unsigned long adatalen, - const unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - unsigned char *tag, unsigned long *taglen); - -int ocb3_decrypt_verify_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *nonce, unsigned long noncelen, - const unsigned char *adata, unsigned long adatalen, - const unsigned char *ct, unsigned long ctlen, - unsigned char *pt, - const unsigned char *tag, unsigned long taglen, - int *stat); - -int ocb3_test(void); - -#ifdef LTC_SOURCE -/* internal helper functions */ -int ocb3_int_ntz(unsigned long x); -void ocb3_int_xor_blocks(unsigned char *out, const unsigned char *block_a, const unsigned char *block_b, unsigned long block_len); -#endif /* LTC_SOURCE */ - -#endif /* LTC_OCB3_MODE */ - -#ifdef LTC_CCM_MODE - -#define CCM_ENCRYPT LTC_ENCRYPT -#define CCM_DECRYPT LTC_DECRYPT - -typedef struct { - symmetric_key K; - int cipher, /* which cipher */ - taglen, /* length of the tag */ - x; /* index in PAD */ - - unsigned long L, /* L value */ - ptlen, /* length that will be enc / dec */ - current_ptlen, /* current processed length */ - aadlen, /* length of the aad */ - current_aadlen, /* length of the currently provided add */ - noncelen; /* length of the nonce */ - - unsigned char PAD[16], - ctr[16], - CTRPAD[16], - CTRlen; -} ccm_state; - -int ccm_init(ccm_state *ccm, int cipher, - const unsigned char *key, int keylen, int ptlen, int taglen, int aad_len); - -int ccm_reset(ccm_state *ccm); - -int ccm_add_nonce(ccm_state *ccm, - const unsigned char *nonce, unsigned long noncelen); - -int ccm_add_aad(ccm_state *ccm, - const unsigned char *adata, unsigned long adatalen); - -int ccm_process(ccm_state *ccm, - unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - int direction); - -int ccm_done(ccm_state *ccm, - unsigned char *tag, unsigned long *taglen); - -int ccm_memory(int cipher, - const unsigned char *key, unsigned long keylen, - symmetric_key *uskey, - const unsigned char *nonce, unsigned long noncelen, - const unsigned char *header, unsigned long headerlen, - unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - unsigned char *tag, unsigned long *taglen, - int direction); - -int ccm_test(void); - -#endif /* LTC_CCM_MODE */ - -#if defined(LRW_MODE) || defined(LTC_GCM_MODE) -void gcm_gf_mult(const unsigned char *a, const unsigned char *b, unsigned char *c); -#endif - - -/* table shared between GCM and LRW */ -#if defined(LTC_GCM_TABLES) || defined(LTC_LRW_TABLES) || ((defined(LTC_GCM_MODE) || defined(LTC_GCM_MODE)) && defined(LTC_FAST)) -extern const unsigned char gcm_shift_table[]; -#endif - -#ifdef LTC_GCM_MODE - -#define GCM_ENCRYPT LTC_ENCRYPT -#define GCM_DECRYPT LTC_DECRYPT - -#define LTC_GCM_MODE_IV 0 -#define LTC_GCM_MODE_AAD 1 -#define LTC_GCM_MODE_TEXT 2 - -typedef struct { - symmetric_key K; - unsigned char H[16], /* multiplier */ - X[16], /* accumulator */ - Y[16], /* counter */ - Y_0[16], /* initial counter */ - buf[16]; /* buffer for stuff */ - - int cipher, /* which cipher */ - ivmode, /* Which mode is the IV in? */ - mode, /* mode the GCM code is in */ - buflen; /* length of data in buf */ - - ulong64 totlen, /* 64-bit counter used for IV and AAD */ - pttotlen; /* 64-bit counter for the PT */ - -#ifdef LTC_GCM_TABLES - unsigned char PC[16][256][16] /* 16 tables of 8x128 */ -#ifdef LTC_GCM_TABLES_SSE2 -__attribute__ ((aligned (16))) -#endif -; -#endif -} gcm_state; - -void gcm_mult_h(gcm_state *gcm, unsigned char *I); - -int gcm_init(gcm_state *gcm, int cipher, - const unsigned char *key, int keylen); - -int gcm_reset(gcm_state *gcm); - -int gcm_add_iv(gcm_state *gcm, - const unsigned char *IV, unsigned long IVlen); - -int gcm_add_aad(gcm_state *gcm, - const unsigned char *adata, unsigned long adatalen); - -int gcm_process(gcm_state *gcm, - unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - int direction); - -int gcm_done(gcm_state *gcm, - unsigned char *tag, unsigned long *taglen); - -int gcm_memory( int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *IV, unsigned long IVlen, - const unsigned char *adata, unsigned long adatalen, - unsigned char *pt, unsigned long ptlen, - unsigned char *ct, - unsigned char *tag, unsigned long *taglen, - int direction); -int gcm_test(void); - -#endif /* LTC_GCM_MODE */ - -#ifdef LTC_PELICAN - -typedef struct pelican_state -{ - symmetric_key K; - unsigned char state[16]; - int buflen; -} pelican_state; - -int pelican_init(pelican_state *pelmac, const unsigned char *key, unsigned long keylen); -int pelican_process(pelican_state *pelmac, const unsigned char *in, unsigned long inlen); -int pelican_done(pelican_state *pelmac, unsigned char *out); -int pelican_test(void); - -int pelican_memory(const unsigned char *key, unsigned long keylen, - const unsigned char *in, unsigned long inlen, - unsigned char *out); - -#endif - -#ifdef LTC_XCBC - -/* add this to "keylen" to xcbc_init to use a pure three-key XCBC MAC */ -#define LTC_XCBC_PURE 0x8000UL - -typedef struct { - unsigned char K[3][MAXBLOCKSIZE], - IV[MAXBLOCKSIZE]; - - symmetric_key key; - - int cipher, - buflen, - blocksize; -} xcbc_state; - -int xcbc_init(xcbc_state *xcbc, int cipher, const unsigned char *key, unsigned long keylen); -int xcbc_process(xcbc_state *xcbc, const unsigned char *in, unsigned long inlen); -int xcbc_done(xcbc_state *xcbc, unsigned char *out, unsigned long *outlen); -int xcbc_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int xcbc_memory_multi(int cipher, - const unsigned char *key, unsigned long keylen, - unsigned char *out, unsigned long *outlen, - const unsigned char *in, unsigned long inlen, ...); -int xcbc_file(int cipher, - const unsigned char *key, unsigned long keylen, - const char *filename, - unsigned char *out, unsigned long *outlen); -int xcbc_test(void); - -#endif - -#ifdef LTC_F9_MODE - -typedef struct { - unsigned char akey[MAXBLOCKSIZE], - ACC[MAXBLOCKSIZE], - IV[MAXBLOCKSIZE]; - - symmetric_key key; - - int cipher, - buflen, - keylen, - blocksize; -} f9_state; - -int f9_init(f9_state *f9, int cipher, const unsigned char *key, unsigned long keylen); -int f9_process(f9_state *f9, const unsigned char *in, unsigned long inlen); -int f9_done(f9_state *f9, unsigned char *out, unsigned long *outlen); -int f9_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int f9_memory_multi(int cipher, - const unsigned char *key, unsigned long keylen, - unsigned char *out, unsigned long *outlen, - const unsigned char *in, unsigned long inlen, ...); -int f9_file(int cipher, - const unsigned char *key, unsigned long keylen, - const char *filename, - unsigned char *out, unsigned long *outlen); -int f9_test(void); - -#endif - -#ifdef LTC_CHACHA20POLY1305_MODE - -typedef struct { - poly1305_state poly; - chacha_state chacha; - ulong64 aadlen; - ulong64 ctlen; - int aadflg; -} chacha20poly1305_state; - -#define CHACHA20POLY1305_ENCRYPT LTC_ENCRYPT -#define CHACHA20POLY1305_DECRYPT LTC_DECRYPT - -int chacha20poly1305_init(chacha20poly1305_state *st, const unsigned char *key, unsigned long keylen); -int chacha20poly1305_setiv(chacha20poly1305_state *st, const unsigned char *iv, unsigned long ivlen); -int chacha20poly1305_setiv_rfc7905(chacha20poly1305_state *st, const unsigned char *iv, unsigned long ivlen, ulong64 sequence_number); -int chacha20poly1305_add_aad(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen); -int chacha20poly1305_encrypt(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out); -int chacha20poly1305_decrypt(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out); -int chacha20poly1305_done(chacha20poly1305_state *st, unsigned char *tag, unsigned long *taglen); -int chacha20poly1305_memory(const unsigned char *key, unsigned long keylen, - const unsigned char *iv, unsigned long ivlen, - const unsigned char *aad, unsigned long aadlen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, - unsigned char *tag, unsigned long *taglen, - int direction); -int chacha20poly1305_test(void); - -#endif /* LTC_CHACHA20POLY1305_MODE */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/headers/tomcrypt_macros.h b/src/libtomcrypt/src/headers/tomcrypt_macros.h deleted file mode 100644 index a3a335e455..0000000000 --- a/src/libtomcrypt/src/headers/tomcrypt_macros.h +++ /dev/null @@ -1,446 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* ---- HELPER MACROS ---- */ -#ifdef ENDIAN_NEUTRAL - -#define STORE32L(x, y) \ - do { (y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \ - (y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); } while(0) - -#define LOAD32L(x, y) \ - do { x = ((ulong32)((y)[3] & 255)<<24) | \ - ((ulong32)((y)[2] & 255)<<16) | \ - ((ulong32)((y)[1] & 255)<<8) | \ - ((ulong32)((y)[0] & 255)); } while(0) - -#define STORE64L(x, y) \ - do { (y)[7] = (unsigned char)(((x)>>56)&255); (y)[6] = (unsigned char)(((x)>>48)&255); \ - (y)[5] = (unsigned char)(((x)>>40)&255); (y)[4] = (unsigned char)(((x)>>32)&255); \ - (y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \ - (y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); } while(0) - -#define LOAD64L(x, y) \ - do { x = (((ulong64)((y)[7] & 255))<<56)|(((ulong64)((y)[6] & 255))<<48)| \ - (((ulong64)((y)[5] & 255))<<40)|(((ulong64)((y)[4] & 255))<<32)| \ - (((ulong64)((y)[3] & 255))<<24)|(((ulong64)((y)[2] & 255))<<16)| \ - (((ulong64)((y)[1] & 255))<<8)|(((ulong64)((y)[0] & 255))); } while(0) - -#define STORE32H(x, y) \ - do { (y)[0] = (unsigned char)(((x)>>24)&255); (y)[1] = (unsigned char)(((x)>>16)&255); \ - (y)[2] = (unsigned char)(((x)>>8)&255); (y)[3] = (unsigned char)((x)&255); } while(0) - -#define LOAD32H(x, y) \ - do { x = ((ulong32)((y)[0] & 255)<<24) | \ - ((ulong32)((y)[1] & 255)<<16) | \ - ((ulong32)((y)[2] & 255)<<8) | \ - ((ulong32)((y)[3] & 255)); } while(0) - -#define STORE64H(x, y) \ -do { (y)[0] = (unsigned char)(((x)>>56)&255); (y)[1] = (unsigned char)(((x)>>48)&255); \ - (y)[2] = (unsigned char)(((x)>>40)&255); (y)[3] = (unsigned char)(((x)>>32)&255); \ - (y)[4] = (unsigned char)(((x)>>24)&255); (y)[5] = (unsigned char)(((x)>>16)&255); \ - (y)[6] = (unsigned char)(((x)>>8)&255); (y)[7] = (unsigned char)((x)&255); } while(0) - -#define LOAD64H(x, y) \ -do { x = (((ulong64)((y)[0] & 255))<<56)|(((ulong64)((y)[1] & 255))<<48) | \ - (((ulong64)((y)[2] & 255))<<40)|(((ulong64)((y)[3] & 255))<<32) | \ - (((ulong64)((y)[4] & 255))<<24)|(((ulong64)((y)[5] & 255))<<16) | \ - (((ulong64)((y)[6] & 255))<<8)|(((ulong64)((y)[7] & 255))); } while(0) - - -#elif defined(ENDIAN_LITTLE) - -#ifdef LTC_HAVE_BSWAP_BUILTIN - -#define STORE32H(x, y) \ -do { ulong32 __t = __builtin_bswap32 ((x)); \ - XMEMCPY ((y), &__t, 4); } while(0) - -#define LOAD32H(x, y) \ -do { XMEMCPY (&(x), (y), 4); \ - (x) = __builtin_bswap32 ((x)); } while(0) - -#elif !defined(LTC_NO_BSWAP) && (defined(INTEL_CC) || (defined(__GNUC__) && (defined(__DJGPP__) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__i386__) || defined(__x86_64__)))) - -#define STORE32H(x, y) \ -asm __volatile__ ( \ - "bswapl %0 \n\t" \ - "movl %0,(%1)\n\t" \ - "bswapl %0 \n\t" \ - ::"r"(x), "r"(y)); - -#define LOAD32H(x, y) \ -asm __volatile__ ( \ - "movl (%1),%0\n\t" \ - "bswapl %0\n\t" \ - :"=r"(x): "r"(y)); - -#else - -#define STORE32H(x, y) \ - do { (y)[0] = (unsigned char)(((x)>>24)&255); (y)[1] = (unsigned char)(((x)>>16)&255); \ - (y)[2] = (unsigned char)(((x)>>8)&255); (y)[3] = (unsigned char)((x)&255); } while(0) - -#define LOAD32H(x, y) \ - do { x = ((ulong32)((y)[0] & 255)<<24) | \ - ((ulong32)((y)[1] & 255)<<16) | \ - ((ulong32)((y)[2] & 255)<<8) | \ - ((ulong32)((y)[3] & 255)); } while(0) - -#endif - -#ifdef LTC_HAVE_BSWAP_BUILTIN - -#define STORE64H(x, y) \ -do { ulong64 __t = __builtin_bswap64 ((x)); \ - XMEMCPY ((y), &__t, 8); } while(0) - -#define LOAD64H(x, y) \ -do { XMEMCPY (&(x), (y), 8); \ - (x) = __builtin_bswap64 ((x)); } while(0) - -/* x86_64 processor */ -#elif !defined(LTC_NO_BSWAP) && (defined(__GNUC__) && defined(__x86_64__)) - -#define STORE64H(x, y) \ -asm __volatile__ ( \ - "bswapq %0 \n\t" \ - "movq %0,(%1)\n\t" \ - "bswapq %0 \n\t" \ - ::"r"(x), "r"(y): "memory"); - -#define LOAD64H(x, y) \ -asm __volatile__ ( \ - "movq (%1),%0\n\t" \ - "bswapq %0\n\t" \ - :"=r"(x): "r"(y): "memory"); - -#else - -#define STORE64H(x, y) \ -do { (y)[0] = (unsigned char)(((x)>>56)&255); (y)[1] = (unsigned char)(((x)>>48)&255); \ - (y)[2] = (unsigned char)(((x)>>40)&255); (y)[3] = (unsigned char)(((x)>>32)&255); \ - (y)[4] = (unsigned char)(((x)>>24)&255); (y)[5] = (unsigned char)(((x)>>16)&255); \ - (y)[6] = (unsigned char)(((x)>>8)&255); (y)[7] = (unsigned char)((x)&255); } while(0) - -#define LOAD64H(x, y) \ -do { x = (((ulong64)((y)[0] & 255))<<56)|(((ulong64)((y)[1] & 255))<<48) | \ - (((ulong64)((y)[2] & 255))<<40)|(((ulong64)((y)[3] & 255))<<32) | \ - (((ulong64)((y)[4] & 255))<<24)|(((ulong64)((y)[5] & 255))<<16) | \ - (((ulong64)((y)[6] & 255))<<8)|(((ulong64)((y)[7] & 255))); } while(0) - -#endif - -#ifdef ENDIAN_32BITWORD - -#define STORE32L(x, y) \ - do { ulong32 __t = (x); XMEMCPY(y, &__t, 4); } while(0) - -#define LOAD32L(x, y) \ - do { XMEMCPY(&(x), y, 4); } while(0) - -#define STORE64L(x, y) \ - do { (y)[7] = (unsigned char)(((x)>>56)&255); (y)[6] = (unsigned char)(((x)>>48)&255); \ - (y)[5] = (unsigned char)(((x)>>40)&255); (y)[4] = (unsigned char)(((x)>>32)&255); \ - (y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \ - (y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); } while(0) - -#define LOAD64L(x, y) \ - do { x = (((ulong64)((y)[7] & 255))<<56)|(((ulong64)((y)[6] & 255))<<48)| \ - (((ulong64)((y)[5] & 255))<<40)|(((ulong64)((y)[4] & 255))<<32)| \ - (((ulong64)((y)[3] & 255))<<24)|(((ulong64)((y)[2] & 255))<<16)| \ - (((ulong64)((y)[1] & 255))<<8)|(((ulong64)((y)[0] & 255))); } while(0) - -#else /* 64-bit words then */ - -#define STORE32L(x, y) \ - do { ulong32 __t = (x); XMEMCPY(y, &__t, 4); } while(0) - -#define LOAD32L(x, y) \ - do { XMEMCPY(&(x), y, 4); x &= 0xFFFFFFFF; } while(0) - -#define STORE64L(x, y) \ - do { ulong64 __t = (x); XMEMCPY(y, &__t, 8); } while(0) - -#define LOAD64L(x, y) \ - do { XMEMCPY(&(x), y, 8); } while(0) - -#endif /* ENDIAN_64BITWORD */ - -#elif defined(ENDIAN_BIG) - -#define STORE32L(x, y) \ - do { (y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \ - (y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); } while(0) - -#define LOAD32L(x, y) \ - do { x = ((ulong32)((y)[3] & 255)<<24) | \ - ((ulong32)((y)[2] & 255)<<16) | \ - ((ulong32)((y)[1] & 255)<<8) | \ - ((ulong32)((y)[0] & 255)); } while(0) - -#define STORE64L(x, y) \ -do { (y)[7] = (unsigned char)(((x)>>56)&255); (y)[6] = (unsigned char)(((x)>>48)&255); \ - (y)[5] = (unsigned char)(((x)>>40)&255); (y)[4] = (unsigned char)(((x)>>32)&255); \ - (y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \ - (y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); } while(0) - -#define LOAD64L(x, y) \ -do { x = (((ulong64)((y)[7] & 255))<<56)|(((ulong64)((y)[6] & 255))<<48) | \ - (((ulong64)((y)[5] & 255))<<40)|(((ulong64)((y)[4] & 255))<<32) | \ - (((ulong64)((y)[3] & 255))<<24)|(((ulong64)((y)[2] & 255))<<16) | \ - (((ulong64)((y)[1] & 255))<<8)|(((ulong64)((y)[0] & 255))); } while(0) - -#ifdef ENDIAN_32BITWORD - -#define STORE32H(x, y) \ - do { ulong32 __t = (x); XMEMCPY(y, &__t, 4); } while(0) - -#define LOAD32H(x, y) \ - do { XMEMCPY(&(x), y, 4); } while(0) - -#define STORE64H(x, y) \ - do { (y)[0] = (unsigned char)(((x)>>56)&255); (y)[1] = (unsigned char)(((x)>>48)&255); \ - (y)[2] = (unsigned char)(((x)>>40)&255); (y)[3] = (unsigned char)(((x)>>32)&255); \ - (y)[4] = (unsigned char)(((x)>>24)&255); (y)[5] = (unsigned char)(((x)>>16)&255); \ - (y)[6] = (unsigned char)(((x)>>8)&255); (y)[7] = (unsigned char)((x)&255); } while(0) - -#define LOAD64H(x, y) \ - do { x = (((ulong64)((y)[0] & 255))<<56)|(((ulong64)((y)[1] & 255))<<48)| \ - (((ulong64)((y)[2] & 255))<<40)|(((ulong64)((y)[3] & 255))<<32)| \ - (((ulong64)((y)[4] & 255))<<24)|(((ulong64)((y)[5] & 255))<<16)| \ - (((ulong64)((y)[6] & 255))<<8)| (((ulong64)((y)[7] & 255))); } while(0) - -#else /* 64-bit words then */ - -#define STORE32H(x, y) \ - do { ulong32 __t = (x); XMEMCPY(y, &__t, 4); } while(0) - -#define LOAD32H(x, y) \ - do { XMEMCPY(&(x), y, 4); x &= 0xFFFFFFFF; } while(0) - -#define STORE64H(x, y) \ - do { ulong64 __t = (x); XMEMCPY(y, &__t, 8); } while(0) - -#define LOAD64H(x, y) \ - do { XMEMCPY(&(x), y, 8); } while(0) - -#endif /* ENDIAN_64BITWORD */ -#endif /* ENDIAN_BIG */ - -#define BSWAP(x) ( ((x>>24)&0x000000FFUL) | ((x<<24)&0xFF000000UL) | \ - ((x>>8)&0x0000FF00UL) | ((x<<8)&0x00FF0000UL) ) - - -/* 32-bit Rotates */ -#if defined(_MSC_VER) -#define LTC_ROx_ASM - -/* instrinsic rotate */ -#include -#pragma intrinsic(_lrotr,_lrotl) -#define ROR(x,n) _lrotr(x,n) -#define ROL(x,n) _lrotl(x,n) -#define RORc(x,n) _lrotr(x,n) -#define ROLc(x,n) _lrotl(x,n) - -#elif !defined(__STRICT_ANSI__) && defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) && !defined(INTEL_CC) && !defined(LTC_NO_ASM) -#define LTC_ROx_ASM - -static inline ulong32 ROL(ulong32 word, int i) -{ - asm ("roll %%cl,%0" - :"=r" (word) - :"0" (word),"c" (i)); - return word; -} - -static inline ulong32 ROR(ulong32 word, int i) -{ - asm ("rorl %%cl,%0" - :"=r" (word) - :"0" (word),"c" (i)); - return word; -} - -#ifndef LTC_NO_ROLC - -#define ROLc(word,i) ({ \ - ulong32 __ROLc_tmp = (word); \ - __asm__ ("roll %2, %0" : \ - "=r" (__ROLc_tmp) : \ - "0" (__ROLc_tmp), \ - "I" (i)); \ - __ROLc_tmp; \ - }) -#define RORc(word,i) ({ \ - ulong32 __RORc_tmp = (word); \ - __asm__ ("rorl %2, %0" : \ - "=r" (__RORc_tmp) : \ - "0" (__RORc_tmp), \ - "I" (i)); \ - __RORc_tmp; \ - }) - -#else - -#define ROLc ROL -#define RORc ROR - -#endif - -#elif !defined(__STRICT_ANSI__) && defined(LTC_PPC32) -#define LTC_ROx_ASM - -static inline ulong32 ROL(ulong32 word, int i) -{ - asm ("rotlw %0,%0,%2" - :"=r" (word) - :"0" (word),"r" (i)); - return word; -} - -static inline ulong32 ROR(ulong32 word, int i) -{ - asm ("rotlw %0,%0,%2" - :"=r" (word) - :"0" (word),"r" (32-i)); - return word; -} - -#ifndef LTC_NO_ROLC - -static inline ulong32 ROLc(ulong32 word, const int i) -{ - asm ("rotlwi %0,%0,%2" - :"=r" (word) - :"0" (word),"I" (i)); - return word; -} - -static inline ulong32 RORc(ulong32 word, const int i) -{ - asm ("rotrwi %0,%0,%2" - :"=r" (word) - :"0" (word),"I" (i)); - return word; -} - -#else - -#define ROLc ROL -#define RORc ROR - -#endif - - -#else - -/* rotates the hard way */ -#define ROL(x, y) ( (((ulong32)(x)<<(ulong32)((y)&31)) | (((ulong32)(x)&0xFFFFFFFFUL)>>(ulong32)((32-((y)&31))&31))) & 0xFFFFFFFFUL) -#define ROR(x, y) ( ((((ulong32)(x)&0xFFFFFFFFUL)>>(ulong32)((y)&31)) | ((ulong32)(x)<<(ulong32)((32-((y)&31))&31))) & 0xFFFFFFFFUL) -#define ROLc(x, y) ( (((ulong32)(x)<<(ulong32)((y)&31)) | (((ulong32)(x)&0xFFFFFFFFUL)>>(ulong32)((32-((y)&31))&31))) & 0xFFFFFFFFUL) -#define RORc(x, y) ( ((((ulong32)(x)&0xFFFFFFFFUL)>>(ulong32)((y)&31)) | ((ulong32)(x)<<(ulong32)((32-((y)&31))&31))) & 0xFFFFFFFFUL) - -#endif - - -/* 64-bit Rotates */ -#if !defined(__STRICT_ANSI__) && defined(__GNUC__) && defined(__x86_64__) && !defined(_WIN64) && !defined(LTC_NO_ASM) - -static inline ulong64 ROL64(ulong64 word, int i) -{ - asm("rolq %%cl,%0" - :"=r" (word) - :"0" (word),"c" (i)); - return word; -} - -static inline ulong64 ROR64(ulong64 word, int i) -{ - asm("rorq %%cl,%0" - :"=r" (word) - :"0" (word),"c" (i)); - return word; -} - -#ifndef LTC_NO_ROLC - -#define ROL64c(word,i) ({ \ - ulong64 __ROL64c_tmp = word; \ - __asm__ ("rolq %2, %0" : \ - "=r" (__ROL64c_tmp) : \ - "0" (__ROL64c_tmp), \ - "J" (i)); \ - __ROL64c_tmp; \ - }) -#define ROR64c(word,i) ({ \ - ulong64 __ROR64c_tmp = word; \ - __asm__ ("rorq %2, %0" : \ - "=r" (__ROR64c_tmp) : \ - "0" (__ROR64c_tmp), \ - "J" (i)); \ - __ROR64c_tmp; \ - }) - -#else /* LTC_NO_ROLC */ - -#define ROL64c ROL64 -#define ROR64c ROR64 - -#endif - -#else /* Not x86_64 */ - -#define ROL64(x, y) \ - ( (((x)<<((ulong64)(y)&63)) | \ - (((x)&CONST64(0xFFFFFFFFFFFFFFFF))>>(((ulong64)64-((y)&63))&63))) & CONST64(0xFFFFFFFFFFFFFFFF)) - -#define ROR64(x, y) \ - ( ((((x)&CONST64(0xFFFFFFFFFFFFFFFF))>>((ulong64)(y)&CONST64(63))) | \ - ((x)<<(((ulong64)64-((y)&63))&63))) & CONST64(0xFFFFFFFFFFFFFFFF)) - -#define ROL64c(x, y) \ - ( (((x)<<((ulong64)(y)&63)) | \ - (((x)&CONST64(0xFFFFFFFFFFFFFFFF))>>(((ulong64)64-((y)&63))&63))) & CONST64(0xFFFFFFFFFFFFFFFF)) - -#define ROR64c(x, y) \ - ( ((((x)&CONST64(0xFFFFFFFFFFFFFFFF))>>((ulong64)(y)&CONST64(63))) | \ - ((x)<<(((ulong64)64-((y)&63))&63))) & CONST64(0xFFFFFFFFFFFFFFFF)) - -#endif - -#ifndef MAX - #define MAX(x, y) ( ((x)>(y))?(x):(y) ) -#endif - -#ifndef MIN - #define MIN(x, y) ( ((x)<(y))?(x):(y) ) -#endif - -#ifndef LTC_UNUSED_PARAM - #define LTC_UNUSED_PARAM(x) (void)(x) -#endif - -/* extract a byte portably */ -#ifdef _MSC_VER - #define byte(x, n) ((unsigned char)((x) >> (8 * (n)))) -#else - #define byte(x, n) (((x) >> (8 * (n))) & 255) -#endif - -/* there is no snprintf before Visual C++ 2015 */ -#if defined(_MSC_VER) && _MSC_VER < 1900 -#define snprintf _snprintf -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/headers/tomcrypt_math.h b/src/libtomcrypt/src/headers/tomcrypt_math.h deleted file mode 100644 index 137e451ef1..0000000000 --- a/src/libtomcrypt/src/headers/tomcrypt_math.h +++ /dev/null @@ -1,583 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** math functions **/ - -#define LTC_MP_LT -1 -#define LTC_MP_EQ 0 -#define LTC_MP_GT 1 - -#define LTC_MP_NO 0 -#define LTC_MP_YES 1 - -#ifndef LTC_MECC - typedef void ecc_point; -#endif - -#ifndef LTC_MRSA - typedef void rsa_key; -#endif - -#ifndef LTC_MILLER_RABIN_REPS - /* Number of rounds of the Miller-Rabin test - * "Reasonable values of reps are between 15 and 50." c.f. gmp doc of mpz_probab_prime_p() - * As of https://security.stackexchange.com/a/4546 we should use 40 rounds */ - #define LTC_MILLER_RABIN_REPS 40 -#endif - -int radix_to_bin(const void *in, int radix, void *out, unsigned long *len); - -/** math descriptor */ -typedef struct { - /** Name of the math provider */ - const char *name; - - /** Bits per digit, amount of bits must fit in an unsigned long */ - int bits_per_digit; - -/* ---- init/deinit functions ---- */ - - /** initialize a bignum - @param a The number to initialize - @return CRYPT_OK on success - */ - int (*init)(void **a); - - /** init copy - @param dst The number to initialize and write to - @param src The number to copy from - @return CRYPT_OK on success - */ - int (*init_copy)(void **dst, void *src); - - /** deinit - @param a The number to free - @return CRYPT_OK on success - */ - void (*deinit)(void *a); - -/* ---- data movement ---- */ - - /** negate - @param src The number to negate - @param dst The destination - @return CRYPT_OK on success - */ - int (*neg)(void *src, void *dst); - - /** copy - @param src The number to copy from - @param dst The number to write to - @return CRYPT_OK on success - */ - int (*copy)(void *src, void *dst); - -/* ---- trivial low level functions ---- */ - - /** set small constant - @param a Number to write to - @param n Source upto bits_per_digit (actually meant for very small constants) - @return CRYPT_OK on success - */ - int (*set_int)(void *a, ltc_mp_digit n); - - /** get small constant - @param a Small number to read, - only fetches up to bits_per_digit from the number - @return The lower bits_per_digit of the integer (unsigned) - */ - unsigned long (*get_int)(void *a); - - /** get digit n - @param a The number to read from - @param n The number of the digit to fetch - @return The bits_per_digit sized n'th digit of a - */ - ltc_mp_digit (*get_digit)(void *a, int n); - - /** Get the number of digits that represent the number - @param a The number to count - @return The number of digits used to represent the number - */ - int (*get_digit_count)(void *a); - - /** compare two integers - @param a The left side integer - @param b The right side integer - @return LTC_MP_LT if a < b, - LTC_MP_GT if a > b and - LTC_MP_EQ otherwise. (signed comparison) - */ - int (*compare)(void *a, void *b); - - /** compare against int - @param a The left side integer - @param b The right side integer (upto bits_per_digit) - @return LTC_MP_LT if a < b, - LTC_MP_GT if a > b and - LTC_MP_EQ otherwise. (signed comparison) - */ - int (*compare_d)(void *a, ltc_mp_digit n); - - /** Count the number of bits used to represent the integer - @param a The integer to count - @return The number of bits required to represent the integer - */ - int (*count_bits)(void * a); - - /** Count the number of LSB bits which are zero - @param a The integer to count - @return The number of contiguous zero LSB bits - */ - int (*count_lsb_bits)(void *a); - - /** Compute a power of two - @param a The integer to store the power in - @param n The power of two you want to store (a = 2^n) - @return CRYPT_OK on success - */ - int (*twoexpt)(void *a , int n); - -/* ---- radix conversions ---- */ - - /** read ascii string - @param a The integer to store into - @param str The string to read - @param radix The radix the integer has been represented in (2-64) - @return CRYPT_OK on success - */ - int (*read_radix)(void *a, const char *str, int radix); - - /** write number to string - @param a The integer to store - @param str The destination for the string - @param radix The radix the integer is to be represented in (2-64) - @return CRYPT_OK on success - */ - int (*write_radix)(void *a, char *str, int radix); - - /** get size as unsigned char string - @param a The integer to get the size (when stored in array of octets) - @return The length of the integer in octets - */ - unsigned long (*unsigned_size)(void *a); - - /** store an integer as an array of octets - @param src The integer to store - @param dst The buffer to store the integer in - @return CRYPT_OK on success - */ - int (*unsigned_write)(void *src, unsigned char *dst); - - /** read an array of octets and store as integer - @param dst The integer to load - @param src The array of octets - @param len The number of octets - @return CRYPT_OK on success - */ - int (*unsigned_read)( void *dst, - unsigned char *src, - unsigned long len); - -/* ---- basic math ---- */ - - /** add two integers - @param a The first source integer - @param b The second source integer - @param c The destination of "a + b" - @return CRYPT_OK on success - */ - int (*add)(void *a, void *b, void *c); - - /** add two integers - @param a The first source integer - @param b The second source integer - (single digit of upto bits_per_digit in length) - @param c The destination of "a + b" - @return CRYPT_OK on success - */ - int (*addi)(void *a, ltc_mp_digit b, void *c); - - /** subtract two integers - @param a The first source integer - @param b The second source integer - @param c The destination of "a - b" - @return CRYPT_OK on success - */ - int (*sub)(void *a, void *b, void *c); - - /** subtract two integers - @param a The first source integer - @param b The second source integer - (single digit of upto bits_per_digit in length) - @param c The destination of "a - b" - @return CRYPT_OK on success - */ - int (*subi)(void *a, ltc_mp_digit b, void *c); - - /** multiply two integers - @param a The first source integer - @param b The second source integer - (single digit of upto bits_per_digit in length) - @param c The destination of "a * b" - @return CRYPT_OK on success - */ - int (*mul)(void *a, void *b, void *c); - - /** multiply two integers - @param a The first source integer - @param b The second source integer - (single digit of upto bits_per_digit in length) - @param c The destination of "a * b" - @return CRYPT_OK on success - */ - int (*muli)(void *a, ltc_mp_digit b, void *c); - - /** Square an integer - @param a The integer to square - @param b The destination - @return CRYPT_OK on success - */ - int (*sqr)(void *a, void *b); - - /** Divide an integer - @param a The dividend - @param b The divisor - @param c The quotient (can be NULL to signify don't care) - @param d The remainder (can be NULL to signify don't care) - @return CRYPT_OK on success - */ - int (*mpdiv)(void *a, void *b, void *c, void *d); - - /** divide by two - @param a The integer to divide (shift right) - @param b The destination - @return CRYPT_OK on success - */ - int (*div_2)(void *a, void *b); - - /** Get remainder (small value) - @param a The integer to reduce - @param b The modulus (upto bits_per_digit in length) - @param c The destination for the residue - @return CRYPT_OK on success - */ - int (*modi)(void *a, ltc_mp_digit b, ltc_mp_digit *c); - - /** gcd - @param a The first integer - @param b The second integer - @param c The destination for (a, b) - @return CRYPT_OK on success - */ - int (*gcd)(void *a, void *b, void *c); - - /** lcm - @param a The first integer - @param b The second integer - @param c The destination for [a, b] - @return CRYPT_OK on success - */ - int (*lcm)(void *a, void *b, void *c); - - /** Modular multiplication - @param a The first source - @param b The second source - @param c The modulus - @param d The destination (a*b mod c) - @return CRYPT_OK on success - */ - int (*mulmod)(void *a, void *b, void *c, void *d); - - /** Modular squaring - @param a The first source - @param b The modulus - @param c The destination (a*a mod b) - @return CRYPT_OK on success - */ - int (*sqrmod)(void *a, void *b, void *c); - - /** Modular inversion - @param a The value to invert - @param b The modulus - @param c The destination (1/a mod b) - @return CRYPT_OK on success - */ - int (*invmod)(void *, void *, void *); - -/* ---- reduction ---- */ - - /** setup Montgomery - @param a The modulus - @param b The destination for the reduction digit - @return CRYPT_OK on success - */ - int (*montgomery_setup)(void *a, void **b); - - /** get normalization value - @param a The destination for the normalization value - @param b The modulus - @return CRYPT_OK on success - */ - int (*montgomery_normalization)(void *a, void *b); - - /** reduce a number - @param a The number [and dest] to reduce - @param b The modulus - @param c The value "b" from montgomery_setup() - @return CRYPT_OK on success - */ - int (*montgomery_reduce)(void *a, void *b, void *c); - - /** clean up (frees memory) - @param a The value "b" from montgomery_setup() - @return CRYPT_OK on success - */ - void (*montgomery_deinit)(void *a); - -/* ---- exponentiation ---- */ - - /** Modular exponentiation - @param a The base integer - @param b The power (can be negative) integer - @param c The modulus integer - @param d The destination - @return CRYPT_OK on success - */ - int (*exptmod)(void *a, void *b, void *c, void *d); - - /** Primality testing - @param a The integer to test - @param b The number of Miller-Rabin tests that shall be executed - @param c The destination of the result (FP_YES if prime) - @return CRYPT_OK on success - */ - int (*isprime)(void *a, int b, int *c); - -/* ---- (optional) ecc point math ---- */ - - /** ECC GF(p) point multiplication (from the NIST curves) - @param k The integer to multiply the point by - @param G The point to multiply - @param R The destination for kG - @param modulus The modulus for the field - @param map Boolean indicated whether to map back to affine or not - (can be ignored if you work in affine only) - @return CRYPT_OK on success - */ - int (*ecc_ptmul)( void *k, - ecc_point *G, - ecc_point *R, - void *modulus, - int map); - - /** ECC GF(p) point addition - @param P The first point - @param Q The second point - @param R The destination of P + Q - @param modulus The modulus - @param mp The "b" value from montgomery_setup() - @return CRYPT_OK on success - */ - int (*ecc_ptadd)(ecc_point *P, - ecc_point *Q, - ecc_point *R, - void *modulus, - void *mp); - - /** ECC GF(p) point double - @param P The first point - @param R The destination of 2P - @param modulus The modulus - @param mp The "b" value from montgomery_setup() - @return CRYPT_OK on success - */ - int (*ecc_ptdbl)(ecc_point *P, - ecc_point *R, - void *modulus, - void *mp); - - /** ECC mapping from projective to affine, - currently uses (x,y,z) => (x/z^2, y/z^3, 1) - @param P The point to map - @param modulus The modulus - @param mp The "b" value from montgomery_setup() - @return CRYPT_OK on success - @remark The mapping can be different but keep in mind a - ecc_point only has three integers (x,y,z) so if - you use a different mapping you have to make it fit. - */ - int (*ecc_map)(ecc_point *P, void *modulus, void *mp); - - /** Computes kA*A + kB*B = C using Shamir's Trick - @param A First point to multiply - @param kA What to multiple A by - @param B Second point to multiply - @param kB What to multiple B by - @param C [out] Destination point (can overlap with A or B) - @param modulus Modulus for curve - @return CRYPT_OK on success - */ - int (*ecc_mul2add)(ecc_point *A, void *kA, - ecc_point *B, void *kB, - ecc_point *C, - void *modulus); - -/* ---- (optional) rsa optimized math (for internal CRT) ---- */ - - /** RSA Key Generation - @param prng An active PRNG state - @param wprng The index of the PRNG desired - @param size The size of the key in octets - @param e The "e" value (public key). - e==65537 is a good choice - @param key [out] Destination of a newly created private key pair - @return CRYPT_OK if successful, upon error all allocated ram is freed - */ - int (*rsa_keygen)(prng_state *prng, - int wprng, - int size, - long e, - rsa_key *key); - - /** RSA exponentiation - @param in The octet array representing the base - @param inlen The length of the input - @param out The destination (to be stored in an octet array format) - @param outlen The length of the output buffer and the resulting size - (zero padded to the size of the modulus) - @param which PK_PUBLIC for public RSA and PK_PRIVATE for private RSA - @param key The RSA key to use - @return CRYPT_OK on success - */ - int (*rsa_me)(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, int which, - rsa_key *key); - -/* ---- basic math continued ---- */ - - /** Modular addition - @param a The first source - @param b The second source - @param c The modulus - @param d The destination (a + b mod c) - @return CRYPT_OK on success - */ - int (*addmod)(void *a, void *b, void *c, void *d); - - /** Modular substraction - @param a The first source - @param b The second source - @param c The modulus - @param d The destination (a - b mod c) - @return CRYPT_OK on success - */ - int (*submod)(void *a, void *b, void *c, void *d); - -/* ---- misc stuff ---- */ - - /** Make a pseudo-random mpi - @param a The mpi to make random - @param size The desired length - @return CRYPT_OK on success - */ - int (*rand)(void *a, int size); -} ltc_math_descriptor; - -extern ltc_math_descriptor ltc_mp; - -int ltc_init_multi(void **a, ...); -void ltc_deinit_multi(void *a, ...); -void ltc_cleanup_multi(void **a, ...); - -#ifdef LTM_DESC -extern const ltc_math_descriptor ltm_desc; -#endif - -#ifdef TFM_DESC -extern const ltc_math_descriptor tfm_desc; -#endif - -#ifdef GMP_DESC -extern const ltc_math_descriptor gmp_desc; -#endif - -#if !defined(DESC_DEF_ONLY) && defined(LTC_SOURCE) - -#define MP_DIGIT_BIT ltc_mp.bits_per_digit - -/* some handy macros */ -#define mp_init(a) ltc_mp.init(a) -#define mp_init_multi ltc_init_multi -#define mp_clear(a) ltc_mp.deinit(a) -#define mp_clear_multi ltc_deinit_multi -#define mp_cleanup_multi ltc_cleanup_multi -#define mp_init_copy(a, b) ltc_mp.init_copy(a, b) - -#define mp_neg(a, b) ltc_mp.neg(a, b) -#define mp_copy(a, b) ltc_mp.copy(a, b) - -#define mp_set(a, b) ltc_mp.set_int(a, b) -#define mp_set_int(a, b) ltc_mp.set_int(a, b) -#define mp_get_int(a) ltc_mp.get_int(a) -#define mp_get_digit(a, n) ltc_mp.get_digit(a, n) -#define mp_get_digit_count(a) ltc_mp.get_digit_count(a) -#define mp_cmp(a, b) ltc_mp.compare(a, b) -#define mp_cmp_d(a, b) ltc_mp.compare_d(a, b) -#define mp_count_bits(a) ltc_mp.count_bits(a) -#define mp_cnt_lsb(a) ltc_mp.count_lsb_bits(a) -#define mp_2expt(a, b) ltc_mp.twoexpt(a, b) - -#define mp_read_radix(a, b, c) ltc_mp.read_radix(a, b, c) -#define mp_toradix(a, b, c) ltc_mp.write_radix(a, b, c) -#define mp_unsigned_bin_size(a) ltc_mp.unsigned_size(a) -#define mp_to_unsigned_bin(a, b) ltc_mp.unsigned_write(a, b) -#define mp_read_unsigned_bin(a, b, c) ltc_mp.unsigned_read(a, b, c) - -#define mp_add(a, b, c) ltc_mp.add(a, b, c) -#define mp_add_d(a, b, c) ltc_mp.addi(a, b, c) -#define mp_sub(a, b, c) ltc_mp.sub(a, b, c) -#define mp_sub_d(a, b, c) ltc_mp.subi(a, b, c) -#define mp_mul(a, b, c) ltc_mp.mul(a, b, c) -#define mp_mul_d(a, b, c) ltc_mp.muli(a, b, c) -#define mp_sqr(a, b) ltc_mp.sqr(a, b) -#define mp_div(a, b, c, d) ltc_mp.mpdiv(a, b, c, d) -#define mp_div_2(a, b) ltc_mp.div_2(a, b) -#define mp_mod(a, b, c) ltc_mp.mpdiv(a, b, NULL, c) -#define mp_mod_d(a, b, c) ltc_mp.modi(a, b, c) -#define mp_gcd(a, b, c) ltc_mp.gcd(a, b, c) -#define mp_lcm(a, b, c) ltc_mp.lcm(a, b, c) - -#define mp_addmod(a, b, c, d) ltc_mp.addmod(a, b, c, d) -#define mp_submod(a, b, c, d) ltc_mp.submod(a, b, c, d) -#define mp_mulmod(a, b, c, d) ltc_mp.mulmod(a, b, c, d) -#define mp_sqrmod(a, b, c) ltc_mp.sqrmod(a, b, c) -#define mp_invmod(a, b, c) ltc_mp.invmod(a, b, c) - -#define mp_montgomery_setup(a, b) ltc_mp.montgomery_setup(a, b) -#define mp_montgomery_normalization(a, b) ltc_mp.montgomery_normalization(a, b) -#define mp_montgomery_reduce(a, b, c) ltc_mp.montgomery_reduce(a, b, c) -#define mp_montgomery_free(a) ltc_mp.montgomery_deinit(a) - -#define mp_exptmod(a,b,c,d) ltc_mp.exptmod(a,b,c,d) -#define mp_prime_is_prime(a, b, c) ltc_mp.isprime(a, b, c) - -#define mp_iszero(a) (mp_cmp_d(a, 0) == LTC_MP_EQ ? LTC_MP_YES : LTC_MP_NO) -#define mp_isodd(a) (mp_get_digit_count(a) > 0 ? (mp_get_digit(a, 0) & 1 ? LTC_MP_YES : LTC_MP_NO) : LTC_MP_NO) -#define mp_exch(a, b) do { void *ABC__tmp = a; a = b; b = ABC__tmp; } while(0) - -#define mp_tohex(a, b) mp_toradix(a, b, 16) - -#define mp_rand(a, b) ltc_mp.rand(a, b) - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/headers/tomcrypt_misc.h b/src/libtomcrypt/src/headers/tomcrypt_misc.h deleted file mode 100644 index 2460d66539..0000000000 --- a/src/libtomcrypt/src/headers/tomcrypt_misc.h +++ /dev/null @@ -1,113 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* ---- LTC_BASE64 Routines ---- */ -#ifdef LTC_BASE64 -int base64_encode(const unsigned char *in, unsigned long len, - unsigned char *out, unsigned long *outlen); - -int base64_decode(const unsigned char *in, unsigned long len, - unsigned char *out, unsigned long *outlen); -int base64_strict_decode(const unsigned char *in, unsigned long len, - unsigned char *out, unsigned long *outlen); -#endif - -#ifdef LTC_BASE64_URL -int base64url_encode(const unsigned char *in, unsigned long len, - unsigned char *out, unsigned long *outlen); -int base64url_strict_encode(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); - -int base64url_decode(const unsigned char *in, unsigned long len, - unsigned char *out, unsigned long *outlen); -int base64url_strict_decode(const unsigned char *in, unsigned long len, - unsigned char *out, unsigned long *outlen); -#endif - -/* ===> LTC_HKDF -- RFC5869 HMAC-based Key Derivation Function <=== */ -#ifdef LTC_HKDF - -int hkdf_test(void); - -int hkdf_extract(int hash_idx, - const unsigned char *salt, unsigned long saltlen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); - -int hkdf_expand(int hash_idx, - const unsigned char *info, unsigned long infolen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long outlen); - -int hkdf(int hash_idx, - const unsigned char *salt, unsigned long saltlen, - const unsigned char *info, unsigned long infolen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long outlen); - -#endif /* LTC_HKDF */ - -/* ---- MEM routines ---- */ -int mem_neq(const void *a, const void *b, size_t len); -void zeromem(volatile void *dst, size_t len); -void burn_stack(unsigned long len); - -const char *error_to_string(int err); - -extern const char *crypt_build_settings; - -/* ---- HMM ---- */ -int crypt_fsa(void *mp, ...); - -/* ---- Dynamic language support ---- */ -int crypt_get_constant(const char* namein, int *valueout); -int crypt_list_all_constants(char *names_list, unsigned int *names_list_size); - -int crypt_get_size(const char* namein, unsigned int *sizeout); -int crypt_list_all_sizes(char *names_list, unsigned int *names_list_size); - -#ifdef LTM_DESC -void init_LTM(void); -#endif -#ifdef TFM_DESC -void init_TFM(void); -#endif -#ifdef GMP_DESC -void init_GMP(void); -#endif - -#ifdef LTC_ADLER32 -typedef struct adler32_state_s -{ - unsigned short s[2]; -} adler32_state; - -void adler32_init(adler32_state *ctx); -void adler32_update(adler32_state *ctx, const unsigned char *input, unsigned long length); -void adler32_finish(adler32_state *ctx, void *hash, unsigned long size); -int adler32_test(void); -#endif - -#ifdef LTC_CRC32 -typedef struct crc32_state_s -{ - ulong32 crc; -} crc32_state; - -void crc32_init(crc32_state *ctx); -void crc32_update(crc32_state *ctx, const unsigned char *input, unsigned long length); -void crc32_finish(crc32_state *ctx, void *hash, unsigned long size); -int crc32_test(void); -#endif - -int compare_testvector(const void* is, const unsigned long is_len, const void* should, const unsigned long should_len, const char* what, int which); - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/headers/tomcrypt_pk.h b/src/libtomcrypt/src/headers/tomcrypt_pk.h deleted file mode 100644 index 4306bc3777..0000000000 --- a/src/libtomcrypt/src/headers/tomcrypt_pk.h +++ /dev/null @@ -1,747 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* ---- NUMBER THEORY ---- */ - -enum { - PK_PUBLIC=0, - PK_PRIVATE=1 -}; - -/* Indicates standard output formats that can be read e.g. by OpenSSL or GnuTLS */ -#define PK_STD 0x1000 - -int rand_prime(void *N, long len, prng_state *prng, int wprng); - -#ifdef LTC_SOURCE -/* internal helper functions */ -int rand_bn_bits(void *N, int bits, prng_state *prng, int wprng); -int rand_bn_upto(void *N, void *limit, prng_state *prng, int wprng); - -enum public_key_algorithms { - PKA_RSA, - PKA_DSA -}; - -typedef struct Oid { - unsigned long OID[16]; - /** Number of OID digits in use */ - unsigned long OIDlen; -} oid_st; - -int pk_get_oid(int pk, oid_st *st); -#endif /* LTC_SOURCE */ - -/* ---- RSA ---- */ -#ifdef LTC_MRSA - -/** RSA PKCS style key */ -typedef struct Rsa_key { - /** Type of key, PK_PRIVATE or PK_PUBLIC */ - int type; - /** The public exponent */ - void *e; - /** The private exponent */ - void *d; - /** The modulus */ - void *N; - /** The p factor of N */ - void *p; - /** The q factor of N */ - void *q; - /** The 1/q mod p CRT param */ - void *qP; - /** The d mod (p - 1) CRT param */ - void *dP; - /** The d mod (q - 1) CRT param */ - void *dQ; -} rsa_key; - -int rsa_make_key(prng_state *prng, int wprng, int size, long e, rsa_key *key); - -int rsa_get_size(rsa_key *key); - -int rsa_exptmod(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, int which, - rsa_key *key); - -void rsa_free(rsa_key *key); - -/* These use PKCS #1 v2.0 padding */ -#define rsa_encrypt_key(_in, _inlen, _out, _outlen, _lparam, _lparamlen, _prng, _prng_idx, _hash_idx, _key) \ - rsa_encrypt_key_ex(_in, _inlen, _out, _outlen, _lparam, _lparamlen, _prng, _prng_idx, _hash_idx, LTC_PKCS_1_OAEP, _key) - -#define rsa_decrypt_key(_in, _inlen, _out, _outlen, _lparam, _lparamlen, _hash_idx, _stat, _key) \ - rsa_decrypt_key_ex(_in, _inlen, _out, _outlen, _lparam, _lparamlen, _hash_idx, LTC_PKCS_1_OAEP, _stat, _key) - -#define rsa_sign_hash(_in, _inlen, _out, _outlen, _prng, _prng_idx, _hash_idx, _saltlen, _key) \ - rsa_sign_hash_ex(_in, _inlen, _out, _outlen, LTC_PKCS_1_PSS, _prng, _prng_idx, _hash_idx, _saltlen, _key) - -#define rsa_verify_hash(_sig, _siglen, _hash, _hashlen, _hash_idx, _saltlen, _stat, _key) \ - rsa_verify_hash_ex(_sig, _siglen, _hash, _hashlen, LTC_PKCS_1_PSS, _hash_idx, _saltlen, _stat, _key) - -#define rsa_sign_saltlen_get_max(_hash_idx, _key) \ - rsa_sign_saltlen_get_max_ex(LTC_PKCS_1_PSS, _hash_idx, _key) - -/* These can be switched between PKCS #1 v2.x and PKCS #1 v1.5 paddings */ -int rsa_encrypt_key_ex(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - const unsigned char *lparam, unsigned long lparamlen, - prng_state *prng, int prng_idx, int hash_idx, int padding, rsa_key *key); - -int rsa_decrypt_key_ex(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - const unsigned char *lparam, unsigned long lparamlen, - int hash_idx, int padding, - int *stat, rsa_key *key); - -int rsa_sign_hash_ex(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - int padding, - prng_state *prng, int prng_idx, - int hash_idx, unsigned long saltlen, - rsa_key *key); - -int rsa_verify_hash_ex(const unsigned char *sig, unsigned long siglen, - const unsigned char *hash, unsigned long hashlen, - int padding, - int hash_idx, unsigned long saltlen, - int *stat, rsa_key *key); - -int rsa_sign_saltlen_get_max_ex(int padding, int hash_idx, rsa_key *key); - -/* PKCS #1 import/export */ -int rsa_export(unsigned char *out, unsigned long *outlen, int type, rsa_key *key); -int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key); - -int rsa_import_x509(const unsigned char *in, unsigned long inlen, rsa_key *key); -int rsa_import_pkcs8(const unsigned char *in, unsigned long inlen, - const void *passwd, unsigned long passwdlen, rsa_key *key); - -int rsa_set_key(const unsigned char *N, unsigned long Nlen, - const unsigned char *e, unsigned long elen, - const unsigned char *d, unsigned long dlen, - rsa_key *key); -int rsa_set_factors(const unsigned char *p, unsigned long plen, - const unsigned char *q, unsigned long qlen, - rsa_key *key); -int rsa_set_crt_params(const unsigned char *dP, unsigned long dPlen, - const unsigned char *dQ, unsigned long dQlen, - const unsigned char *qP, unsigned long qPlen, - rsa_key *key); -#endif - -/* ---- Katja ---- */ -#ifdef LTC_MKAT - -/* Min and Max KAT key sizes (in bits) */ -#define MIN_KAT_SIZE 1024 -#define MAX_KAT_SIZE 4096 - -/** Katja PKCS style key */ -typedef struct KAT_key { - /** Type of key, PK_PRIVATE or PK_PUBLIC */ - int type; - /** The private exponent */ - void *d; - /** The modulus */ - void *N; - /** The p factor of N */ - void *p; - /** The q factor of N */ - void *q; - /** The 1/q mod p CRT param */ - void *qP; - /** The d mod (p - 1) CRT param */ - void *dP; - /** The d mod (q - 1) CRT param */ - void *dQ; - /** The pq param */ - void *pq; -} katja_key; - -int katja_make_key(prng_state *prng, int wprng, int size, katja_key *key); - -int katja_exptmod(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, int which, - katja_key *key); - -void katja_free(katja_key *key); - -/* These use PKCS #1 v2.0 padding */ -int katja_encrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - const unsigned char *lparam, unsigned long lparamlen, - prng_state *prng, int prng_idx, int hash_idx, katja_key *key); - -int katja_decrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - const unsigned char *lparam, unsigned long lparamlen, - int hash_idx, int *stat, - katja_key *key); - -/* PKCS #1 import/export */ -int katja_export(unsigned char *out, unsigned long *outlen, int type, katja_key *key); -int katja_import(const unsigned char *in, unsigned long inlen, katja_key *key); - -#endif - -/* ---- DH Routines ---- */ -#ifdef LTC_MDH - -typedef struct { - int type; - void *x; - void *y; - void *base; - void *prime; -} dh_key; - -int dh_get_groupsize(dh_key *key); - -int dh_export(unsigned char *out, unsigned long *outlen, int type, dh_key *key); -int dh_import(const unsigned char *in, unsigned long inlen, dh_key *key); - -int dh_set_pg(const unsigned char *p, unsigned long plen, - const unsigned char *g, unsigned long glen, - dh_key *key); -int dh_set_pg_dhparam(const unsigned char *dhparam, unsigned long dhparamlen, dh_key *key); -int dh_set_pg_groupsize(int groupsize, dh_key *key); - -int dh_set_key(const unsigned char *in, unsigned long inlen, int type, dh_key *key); -int dh_generate_key(prng_state *prng, int wprng, dh_key *key); - -int dh_shared_secret(dh_key *private_key, dh_key *public_key, - unsigned char *out, unsigned long *outlen); - -void dh_free(dh_key *key); - -int dh_export_key(void *out, unsigned long *outlen, int type, dh_key *key); - -#ifdef LTC_SOURCE -typedef struct { - int size; - const char *name, *base, *prime; -} ltc_dh_set_type; - -extern const ltc_dh_set_type ltc_dh_sets[]; - -/* internal helper functions */ -int dh_check_pubkey(dh_key *key); -#endif - -#endif /* LTC_MDH */ - - -/* ---- ECC Routines ---- */ -#ifdef LTC_MECC - -/* size of our temp buffers for exported keys */ -#define ECC_BUF_SIZE 256 - -/* max private key size */ -#define ECC_MAXSIZE 66 - -/** Structure defines a NIST GF(p) curve */ -typedef struct { - /** The size of the curve in octets */ - int size; - - /** name of curve */ - const char *name; - - /** The prime that defines the field the curve is in (encoded in hex) */ - const char *prime; - - /** The fields B param (hex) */ - const char *B; - - /** The order of the curve (hex) */ - const char *order; - - /** The x co-ordinate of the base point on the curve (hex) */ - const char *Gx; - - /** The y co-ordinate of the base point on the curve (hex) */ - const char *Gy; -} ltc_ecc_set_type; - -/** A point on a ECC curve, stored in Jacbobian format such that (x,y,z) => (x/z^2, y/z^3, 1) when interpretted as affine */ -typedef struct { - /** The x co-ordinate */ - void *x; - - /** The y co-ordinate */ - void *y; - - /** The z co-ordinate */ - void *z; -} ecc_point; - -/** An ECC key */ -typedef struct { - /** Type of key, PK_PRIVATE or PK_PUBLIC */ - int type; - - /** Index into the ltc_ecc_sets[] for the parameters of this curve; if -1, then this key is using user supplied curve in dp */ - int idx; - - /** pointer to domain parameters; either points to NIST curves (identified by idx >= 0) or user supplied curve */ - const ltc_ecc_set_type *dp; - - /** The public key */ - ecc_point pubkey; - - /** The private key */ - void *k; -} ecc_key; - -/** the ECC params provided */ -extern const ltc_ecc_set_type ltc_ecc_sets[]; - -int ecc_test(void); -void ecc_sizes(int *low, int *high); -int ecc_get_size(ecc_key *key); - -int ecc_make_key(prng_state *prng, int wprng, int keysize, ecc_key *key); -int ecc_make_key_ex(prng_state *prng, int wprng, ecc_key *key, const ltc_ecc_set_type *dp); -void ecc_free(ecc_key *key); - -int ecc_export(unsigned char *out, unsigned long *outlen, int type, ecc_key *key); -int ecc_import(const unsigned char *in, unsigned long inlen, ecc_key *key); -int ecc_import_ex(const unsigned char *in, unsigned long inlen, ecc_key *key, const ltc_ecc_set_type *dp); - -int ecc_ansi_x963_export(ecc_key *key, unsigned char *out, unsigned long *outlen); -int ecc_ansi_x963_import(const unsigned char *in, unsigned long inlen, ecc_key *key); -int ecc_ansi_x963_import_ex(const unsigned char *in, unsigned long inlen, ecc_key *key, ltc_ecc_set_type *dp); - -int ecc_shared_secret(ecc_key *private_key, ecc_key *public_key, - unsigned char *out, unsigned long *outlen); - -int ecc_encrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int wprng, int hash, - ecc_key *key); - -int ecc_decrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - ecc_key *key); - -int ecc_sign_hash_rfc7518(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int wprng, ecc_key *key); - -int ecc_sign_hash(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int wprng, ecc_key *key); - -int ecc_verify_hash_rfc7518(const unsigned char *sig, unsigned long siglen, - const unsigned char *hash, unsigned long hashlen, - int *stat, ecc_key *key); - -int ecc_verify_hash(const unsigned char *sig, unsigned long siglen, - const unsigned char *hash, unsigned long hashlen, - int *stat, ecc_key *key); - -/* low level functions */ -ecc_point *ltc_ecc_new_point(void); -void ltc_ecc_del_point(ecc_point *p); -int ltc_ecc_is_valid_idx(int n); - -/* point ops (mp == montgomery digit) */ -#if !defined(LTC_MECC_ACCEL) || defined(LTM_DESC) || defined(GMP_DESC) -/* R = 2P */ -int ltc_ecc_projective_dbl_point(ecc_point *P, ecc_point *R, void *modulus, void *mp); - -/* R = P + Q */ -int ltc_ecc_projective_add_point(ecc_point *P, ecc_point *Q, ecc_point *R, void *modulus, void *mp); -#endif - -#if defined(LTC_MECC_FP) -/* optimized point multiplication using fixed point cache (HAC algorithm 14.117) */ -int ltc_ecc_fp_mulmod(void *k, ecc_point *G, ecc_point *R, void *modulus, int map); - -/* functions for saving/loading/freeing/adding to fixed point cache */ -int ltc_ecc_fp_save_state(unsigned char **out, unsigned long *outlen); -int ltc_ecc_fp_restore_state(unsigned char *in, unsigned long inlen); -void ltc_ecc_fp_free(void); -int ltc_ecc_fp_add_point(ecc_point *g, void *modulus, int lock); - -/* lock/unlock all points currently in fixed point cache */ -void ltc_ecc_fp_tablelock(int lock); -#endif - -/* R = kG */ -int ltc_ecc_mulmod(void *k, ecc_point *G, ecc_point *R, void *modulus, int map); - -#ifdef LTC_ECC_SHAMIR -/* kA*A + kB*B = C */ -int ltc_ecc_mul2add(ecc_point *A, void *kA, - ecc_point *B, void *kB, - ecc_point *C, - void *modulus); - -#ifdef LTC_MECC_FP -/* Shamir's trick with optimized point multiplication using fixed point cache */ -int ltc_ecc_fp_mul2add(ecc_point *A, void *kA, - ecc_point *B, void *kB, - ecc_point *C, void *modulus); -#endif - -#endif - - -/* map P to affine from projective */ -int ltc_ecc_map(ecc_point *P, void *modulus, void *mp); - -#endif - -#ifdef LTC_MDSA - -/* Max diff between group and modulus size in bytes */ -#define LTC_MDSA_DELTA 512 - -/* Max DSA group size in bytes (default allows 4k-bit groups) */ -#define LTC_MDSA_MAX_GROUP 512 - -/** DSA key structure */ -typedef struct { - /** The key type, PK_PRIVATE or PK_PUBLIC */ - int type; - - /** The order of the sub-group used in octets */ - int qord; - - /** The generator */ - void *g; - - /** The prime used to generate the sub-group */ - void *q; - - /** The large prime that generats the field the contains the sub-group */ - void *p; - - /** The private key */ - void *x; - - /** The public key */ - void *y; -} dsa_key; - -int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key); - -int dsa_set_pqg(const unsigned char *p, unsigned long plen, - const unsigned char *q, unsigned long qlen, - const unsigned char *g, unsigned long glen, - dsa_key *key); -int dsa_set_pqg_dsaparam(const unsigned char *dsaparam, unsigned long dsaparamlen, dsa_key *key); -int dsa_generate_pqg(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key); - -int dsa_set_key(const unsigned char *in, unsigned long inlen, int type, dsa_key *key); -int dsa_generate_key(prng_state *prng, int wprng, dsa_key *key); - -void dsa_free(dsa_key *key); - -int dsa_sign_hash_raw(const unsigned char *in, unsigned long inlen, - void *r, void *s, - prng_state *prng, int wprng, dsa_key *key); - -int dsa_sign_hash(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int wprng, dsa_key *key); - -int dsa_verify_hash_raw( void *r, void *s, - const unsigned char *hash, unsigned long hashlen, - int *stat, dsa_key *key); - -int dsa_verify_hash(const unsigned char *sig, unsigned long siglen, - const unsigned char *hash, unsigned long hashlen, - int *stat, dsa_key *key); - -int dsa_encrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int wprng, int hash, - dsa_key *key); - -int dsa_decrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - dsa_key *key); - -int dsa_import(const unsigned char *in, unsigned long inlen, dsa_key *key); -int dsa_export(unsigned char *out, unsigned long *outlen, int type, dsa_key *key); -int dsa_verify_key(dsa_key *key, int *stat); -#ifdef LTC_SOURCE -/* internal helper functions */ -int dsa_int_validate_xy(dsa_key *key, int *stat); -int dsa_int_validate_pqg(dsa_key *key, int *stat); -int dsa_int_validate_primes(dsa_key *key, int *stat); -#endif -int dsa_shared_secret(void *private_key, void *base, - dsa_key *public_key, - unsigned char *out, unsigned long *outlen); -#endif - -#ifdef LTC_DER -/* DER handling */ - -typedef enum ltc_asn1_type_ { - /* 0 */ - LTC_ASN1_EOL, - LTC_ASN1_BOOLEAN, - LTC_ASN1_INTEGER, - LTC_ASN1_SHORT_INTEGER, - LTC_ASN1_BIT_STRING, - /* 5 */ - LTC_ASN1_OCTET_STRING, - LTC_ASN1_NULL, - LTC_ASN1_OBJECT_IDENTIFIER, - LTC_ASN1_IA5_STRING, - LTC_ASN1_PRINTABLE_STRING, - /* 10 */ - LTC_ASN1_UTF8_STRING, - LTC_ASN1_UTCTIME, - LTC_ASN1_CHOICE, - LTC_ASN1_SEQUENCE, - LTC_ASN1_SET, - /* 15 */ - LTC_ASN1_SETOF, - LTC_ASN1_RAW_BIT_STRING, - LTC_ASN1_TELETEX_STRING, - LTC_ASN1_CONSTRUCTED, - LTC_ASN1_CONTEXT_SPECIFIC, - /* 20 */ - LTC_ASN1_GENERALIZEDTIME, -} ltc_asn1_type; - -/** A LTC ASN.1 list type */ -typedef struct ltc_asn1_list_ { - /** The LTC ASN.1 enumerated type identifier */ - ltc_asn1_type type; - /** The data to encode or place for decoding */ - void *data; - /** The size of the input or resulting output */ - unsigned long size; - /** The used flag, this is used by the CHOICE ASN.1 type to indicate which choice was made */ - int used; - /** prev/next entry in the list */ - struct ltc_asn1_list_ *prev, *next, *child, *parent; -} ltc_asn1_list; - -#define LTC_SET_ASN1(list, index, Type, Data, Size) \ - do { \ - int LTC_MACRO_temp = (index); \ - ltc_asn1_list *LTC_MACRO_list = (list); \ - LTC_MACRO_list[LTC_MACRO_temp].type = (Type); \ - LTC_MACRO_list[LTC_MACRO_temp].data = (void*)(Data); \ - LTC_MACRO_list[LTC_MACRO_temp].size = (Size); \ - LTC_MACRO_list[LTC_MACRO_temp].used = 0; \ - } while (0) - -/* SEQUENCE */ -int der_encode_sequence_ex(ltc_asn1_list *list, unsigned long inlen, - unsigned char *out, unsigned long *outlen, int type_of); - -#define der_encode_sequence(list, inlen, out, outlen) der_encode_sequence_ex(list, inlen, out, outlen, LTC_ASN1_SEQUENCE) - -int der_decode_sequence_ex(const unsigned char *in, unsigned long inlen, - ltc_asn1_list *list, unsigned long outlen, int ordered); - -#define der_decode_sequence(in, inlen, list, outlen) der_decode_sequence_ex(in, inlen, list, outlen, 1) - -int der_length_sequence(ltc_asn1_list *list, unsigned long inlen, - unsigned long *outlen); - - -#ifdef LTC_SOURCE -/* internal helper functions */ -int der_length_sequence_ex(ltc_asn1_list *list, unsigned long inlen, - unsigned long *outlen, unsigned long *payloadlen); -/* SUBJECT PUBLIC KEY INFO */ -int der_encode_subject_public_key_info(unsigned char *out, unsigned long *outlen, - unsigned int algorithm, void* public_key, unsigned long public_key_len, - unsigned long parameters_type, void* parameters, unsigned long parameters_len); - -int der_decode_subject_public_key_info(const unsigned char *in, unsigned long inlen, - unsigned int algorithm, void* public_key, unsigned long* public_key_len, - unsigned long parameters_type, ltc_asn1_list* parameters, unsigned long parameters_len); -#endif /* LTC_SOURCE */ - -/* SET */ -#define der_decode_set(in, inlen, list, outlen) der_decode_sequence_ex(in, inlen, list, outlen, 0) -#define der_length_set der_length_sequence -int der_encode_set(ltc_asn1_list *list, unsigned long inlen, - unsigned char *out, unsigned long *outlen); - -int der_encode_setof(ltc_asn1_list *list, unsigned long inlen, - unsigned char *out, unsigned long *outlen); - -/* VA list handy helpers with triplets of */ -int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...); -int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...); - -/* FLEXI DECODER handle unknown list decoder */ -int der_decode_sequence_flexi(const unsigned char *in, unsigned long *inlen, ltc_asn1_list **out); -#define der_free_sequence_flexi der_sequence_free -void der_sequence_free(ltc_asn1_list *in); -void der_sequence_shrink(ltc_asn1_list *in); - -/* BOOLEAN */ -int der_length_boolean(unsigned long *outlen); -int der_encode_boolean(int in, - unsigned char *out, unsigned long *outlen); -int der_decode_boolean(const unsigned char *in, unsigned long inlen, - int *out); -/* INTEGER */ -int der_encode_integer(void *num, unsigned char *out, unsigned long *outlen); -int der_decode_integer(const unsigned char *in, unsigned long inlen, void *num); -int der_length_integer(void *num, unsigned long *len); - -/* INTEGER -- handy for 0..2^32-1 values */ -int der_decode_short_integer(const unsigned char *in, unsigned long inlen, unsigned long *num); -int der_encode_short_integer(unsigned long num, unsigned char *out, unsigned long *outlen); -int der_length_short_integer(unsigned long num, unsigned long *outlen); - -/* BIT STRING */ -int der_encode_bit_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int der_decode_bit_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int der_encode_raw_bit_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int der_decode_raw_bit_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int der_length_bit_string(unsigned long nbits, unsigned long *outlen); - -/* OCTET STRING */ -int der_encode_octet_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int der_decode_octet_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int der_length_octet_string(unsigned long noctets, unsigned long *outlen); - -/* OBJECT IDENTIFIER */ -int der_encode_object_identifier(unsigned long *words, unsigned long nwords, - unsigned char *out, unsigned long *outlen); -int der_decode_object_identifier(const unsigned char *in, unsigned long inlen, - unsigned long *words, unsigned long *outlen); -int der_length_object_identifier(unsigned long *words, unsigned long nwords, unsigned long *outlen); -unsigned long der_object_identifier_bits(unsigned long x); - -/* IA5 STRING */ -int der_encode_ia5_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int der_decode_ia5_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int der_length_ia5_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen); - -int der_ia5_char_encode(int c); -int der_ia5_value_decode(int v); - -/* TELETEX STRING */ -int der_decode_teletex_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int der_length_teletex_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen); - -#ifdef LTC_SOURCE -/* internal helper functions */ -int der_teletex_char_encode(int c); -int der_teletex_value_decode(int v); -#endif /* LTC_SOURCE */ - - -/* PRINTABLE STRING */ -int der_encode_printable_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int der_decode_printable_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); -int der_length_printable_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen); - -int der_printable_char_encode(int c); -int der_printable_value_decode(int v); - -/* UTF-8 */ -#if (defined(SIZE_MAX) || __STDC_VERSION__ >= 199901L || defined(WCHAR_MAX) || defined(__WCHAR_MAX__) || defined(_WCHAR_T) || defined(_WCHAR_T_DEFINED) || defined (__WCHAR_TYPE__)) && !defined(LTC_NO_WCHAR) - #if defined(__WCHAR_MAX__) - #define LTC_WCHAR_MAX __WCHAR_MAX__ - #else - #include - #define LTC_WCHAR_MAX WCHAR_MAX - #endif -/* please note that it might happen that LTC_WCHAR_MAX is undefined */ -#else - typedef ulong32 wchar_t; - #define LTC_WCHAR_MAX 0xFFFFFFFF -#endif - -int der_encode_utf8_string(const wchar_t *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen); - -int der_decode_utf8_string(const unsigned char *in, unsigned long inlen, - wchar_t *out, unsigned long *outlen); -unsigned long der_utf8_charsize(const wchar_t c); -#ifdef LTC_SOURCE -/* internal helper functions */ -int der_utf8_valid_char(const wchar_t c); -#endif /* LTC_SOURCE */ -int der_length_utf8_string(const wchar_t *in, unsigned long noctets, unsigned long *outlen); - - -/* CHOICE */ -int der_decode_choice(const unsigned char *in, unsigned long *inlen, - ltc_asn1_list *list, unsigned long outlen); - -/* UTCTime */ -typedef struct { - unsigned YY, /* year */ - MM, /* month */ - DD, /* day */ - hh, /* hour */ - mm, /* minute */ - ss, /* second */ - off_dir, /* timezone offset direction 0 == +, 1 == - */ - off_hh, /* timezone offset hours */ - off_mm; /* timezone offset minutes */ -} ltc_utctime; - -int der_encode_utctime(ltc_utctime *utctime, - unsigned char *out, unsigned long *outlen); - -int der_decode_utctime(const unsigned char *in, unsigned long *inlen, - ltc_utctime *out); - -int der_length_utctime(ltc_utctime *utctime, unsigned long *outlen); - -/* GeneralizedTime */ -typedef struct { - unsigned YYYY, /* year */ - MM, /* month */ - DD, /* day */ - hh, /* hour */ - mm, /* minute */ - ss, /* second */ - fs, /* fractional seconds */ - off_dir, /* timezone offset direction 0 == +, 1 == - */ - off_hh, /* timezone offset hours */ - off_mm; /* timezone offset minutes */ -} ltc_generalizedtime; - -int der_encode_generalizedtime(ltc_generalizedtime *gtime, - unsigned char *out, unsigned long *outlen); - -int der_decode_generalizedtime(const unsigned char *in, unsigned long *inlen, - ltc_generalizedtime *out); - -int der_length_generalizedtime(ltc_generalizedtime *gtime, unsigned long *outlen); - - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/headers/tomcrypt_pkcs.h b/src/libtomcrypt/src/headers/tomcrypt_pkcs.h deleted file mode 100644 index b84028f122..0000000000 --- a/src/libtomcrypt/src/headers/tomcrypt_pkcs.h +++ /dev/null @@ -1,108 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* PKCS Header Info */ - -/* ===> PKCS #1 -- RSA Cryptography <=== */ -#ifdef LTC_PKCS_1 - -enum ltc_pkcs_1_v1_5_blocks -{ - LTC_PKCS_1_EMSA = 1, /* Block type 1 (PKCS #1 v1.5 signature padding) */ - LTC_PKCS_1_EME = 2 /* Block type 2 (PKCS #1 v1.5 encryption padding) */ -}; - -enum ltc_pkcs_1_paddings -{ - LTC_PKCS_1_V1_5 = 1, /* PKCS #1 v1.5 padding (\sa ltc_pkcs_1_v1_5_blocks) */ - LTC_PKCS_1_OAEP = 2, /* PKCS #1 v2.0 encryption padding */ - LTC_PKCS_1_PSS = 3, /* PKCS #1 v2.1 signature padding */ - LTC_PKCS_1_V1_5_NA1 = 4 /* PKCS #1 v1.5 padding - No ASN.1 (\sa ltc_pkcs_1_v1_5_blocks) */ -}; - -int pkcs_1_mgf1( int hash_idx, - const unsigned char *seed, unsigned long seedlen, - unsigned char *mask, unsigned long masklen); - -int pkcs_1_i2osp(void *n, unsigned long modulus_len, unsigned char *out); -int pkcs_1_os2ip(void *n, unsigned char *in, unsigned long inlen); - -/* *** v1.5 padding */ -int pkcs_1_v1_5_encode(const unsigned char *msg, - unsigned long msglen, - int block_type, - unsigned long modulus_bitlen, - prng_state *prng, - int prng_idx, - unsigned char *out, - unsigned long *outlen); - -int pkcs_1_v1_5_decode(const unsigned char *msg, - unsigned long msglen, - int block_type, - unsigned long modulus_bitlen, - unsigned char *out, - unsigned long *outlen, - int *is_valid); - -/* *** v2.1 padding */ -int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen, - const unsigned char *lparam, unsigned long lparamlen, - unsigned long modulus_bitlen, prng_state *prng, - int prng_idx, int hash_idx, - unsigned char *out, unsigned long *outlen); - -int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, - const unsigned char *lparam, unsigned long lparamlen, - unsigned long modulus_bitlen, int hash_idx, - unsigned char *out, unsigned long *outlen, - int *res); - -int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen, - unsigned long saltlen, prng_state *prng, - int prng_idx, int hash_idx, - unsigned long modulus_bitlen, - unsigned char *out, unsigned long *outlen); - -int pkcs_1_pss_decode(const unsigned char *msghash, unsigned long msghashlen, - const unsigned char *sig, unsigned long siglen, - unsigned long saltlen, int hash_idx, - unsigned long modulus_bitlen, int *res); - -#endif /* LTC_PKCS_1 */ - -/* ===> PKCS #5 -- Password Based Cryptography <=== */ -#ifdef LTC_PKCS_5 - -/* Algorithm #1 (PBKDF1) */ -int pkcs_5_alg1(const unsigned char *password, unsigned long password_len, - const unsigned char *salt, - int iteration_count, int hash_idx, - unsigned char *out, unsigned long *outlen); - -/* Algorithm #1 (PBKDF1) - OpenSSL-compatible variant for arbitrarily-long keys. - Compatible with EVP_BytesToKey() */ -int pkcs_5_alg1_openssl(const unsigned char *password, - unsigned long password_len, - const unsigned char *salt, - int iteration_count, int hash_idx, - unsigned char *out, unsigned long *outlen); - -/* Algorithm #2 (PBKDF2) */ -int pkcs_5_alg2(const unsigned char *password, unsigned long password_len, - const unsigned char *salt, unsigned long salt_len, - int iteration_count, int hash_idx, - unsigned char *out, unsigned long *outlen); - -int pkcs_5_test (void); -#endif /* LTC_PKCS_5 */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/headers/tomcrypt_prng.h b/src/libtomcrypt/src/headers/tomcrypt_prng.h deleted file mode 100644 index 1fa164382f..0000000000 --- a/src/libtomcrypt/src/headers/tomcrypt_prng.h +++ /dev/null @@ -1,232 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* ---- PRNG Stuff ---- */ -#ifdef LTC_YARROW -struct yarrow_prng { - int cipher, hash; - unsigned char pool[MAXBLOCKSIZE]; - symmetric_CTR ctr; -}; -#endif - -#ifdef LTC_RC4 -struct rc4_prng { - rc4_state s; -}; -#endif - -#ifdef LTC_CHACHA20_PRNG -struct chacha20_prng { - chacha_state s; /* chacha state */ - unsigned char ent[40]; /* entropy buffer */ - unsigned long idx; /* entropy counter */ -}; -#endif - -#ifdef LTC_FORTUNA -struct fortuna_prng { - hash_state pool[LTC_FORTUNA_POOLS]; /* the pools */ - - symmetric_key skey; - - unsigned char K[32], /* the current key */ - IV[16]; /* IV for CTR mode */ - - unsigned long pool_idx, /* current pool we will add to */ - pool0_len, /* length of 0'th pool */ - wd; - - ulong64 reset_cnt; /* number of times we have reset */ -}; -#endif - -#ifdef LTC_SOBER128 -struct sober128_prng { - sober128_state s; /* sober128 state */ - unsigned char ent[40]; /* entropy buffer */ - unsigned long idx; /* entropy counter */ -}; -#endif - -typedef struct { - union { - char dummy[1]; -#ifdef LTC_YARROW - struct yarrow_prng yarrow; -#endif -#ifdef LTC_RC4 - struct rc4_prng rc4; -#endif -#ifdef LTC_CHACHA20_PRNG - struct chacha20_prng chacha; -#endif -#ifdef LTC_FORTUNA - struct fortuna_prng fortuna; -#endif -#ifdef LTC_SOBER128 - struct sober128_prng sober128; -#endif - }; - short ready; /* ready flag 0-1 */ - LTC_MUTEX_TYPE(lock) /* lock */ -} prng_state; - -/** PRNG descriptor */ -extern struct ltc_prng_descriptor { - /** Name of the PRNG */ - const char *name; - /** size in bytes of exported state */ - int export_size; - /** Start a PRNG state - @param prng [out] The state to initialize - @return CRYPT_OK if successful - */ - int (*start)(prng_state *prng); - /** Add entropy to the PRNG - @param in The entropy - @param inlen Length of the entropy (octets)\ - @param prng The PRNG state - @return CRYPT_OK if successful - */ - int (*add_entropy)(const unsigned char *in, unsigned long inlen, prng_state *prng); - /** Ready a PRNG state to read from - @param prng The PRNG state to ready - @return CRYPT_OK if successful - */ - int (*ready)(prng_state *prng); - /** Read from the PRNG - @param out [out] Where to store the data - @param outlen Length of data desired (octets) - @param prng The PRNG state to read from - @return Number of octets read - */ - unsigned long (*read)(unsigned char *out, unsigned long outlen, prng_state *prng); - /** Terminate a PRNG state - @param prng The PRNG state to terminate - @return CRYPT_OK if successful - */ - int (*done)(prng_state *prng); - /** Export a PRNG state - @param out [out] The destination for the state - @param outlen [in/out] The max size and resulting size of the PRNG state - @param prng The PRNG to export - @return CRYPT_OK if successful - */ - int (*pexport)(unsigned char *out, unsigned long *outlen, prng_state *prng); - /** Import a PRNG state - @param in The data to import - @param inlen The length of the data to import (octets) - @param prng The PRNG to initialize/import - @return CRYPT_OK if successful - */ - int (*pimport)(const unsigned char *in, unsigned long inlen, prng_state *prng); - /** Self-test the PRNG - @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled - */ - int (*test)(void); -} prng_descriptor[]; - -#ifdef LTC_YARROW -int yarrow_start(prng_state *prng); -int yarrow_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); -int yarrow_ready(prng_state *prng); -unsigned long yarrow_read(unsigned char *out, unsigned long outlen, prng_state *prng); -int yarrow_done(prng_state *prng); -int yarrow_export(unsigned char *out, unsigned long *outlen, prng_state *prng); -int yarrow_import(const unsigned char *in, unsigned long inlen, prng_state *prng); -int yarrow_test(void); -extern const struct ltc_prng_descriptor yarrow_desc; -#endif - -#ifdef LTC_FORTUNA -int fortuna_start(prng_state *prng); -int fortuna_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); -int fortuna_ready(prng_state *prng); -unsigned long fortuna_read(unsigned char *out, unsigned long outlen, prng_state *prng); -int fortuna_done(prng_state *prng); -int fortuna_export(unsigned char *out, unsigned long *outlen, prng_state *prng); -int fortuna_import(const unsigned char *in, unsigned long inlen, prng_state *prng); -int fortuna_test(void); -extern const struct ltc_prng_descriptor fortuna_desc; -#endif - -#ifdef LTC_RC4 -int rc4_start(prng_state *prng); -int rc4_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); -int rc4_ready(prng_state *prng); -unsigned long rc4_read(unsigned char *out, unsigned long outlen, prng_state *prng); -int rc4_done(prng_state *prng); -int rc4_export(unsigned char *out, unsigned long *outlen, prng_state *prng); -int rc4_import(const unsigned char *in, unsigned long inlen, prng_state *prng); -int rc4_test(void); -extern const struct ltc_prng_descriptor rc4_desc; -#endif - -#ifdef LTC_CHACHA20_PRNG -int chacha20_prng_start(prng_state *prng); -int chacha20_prng_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); -int chacha20_prng_ready(prng_state *prng); -unsigned long chacha20_prng_read(unsigned char *out, unsigned long outlen, prng_state *prng); -int chacha20_prng_done(prng_state *prng); -int chacha20_prng_export(unsigned char *out, unsigned long *outlen, prng_state *prng); -int chacha20_prng_import(const unsigned char *in, unsigned long inlen, prng_state *prng); -int chacha20_prng_test(void); -extern const struct ltc_prng_descriptor chacha20_prng_desc; -#endif - -#ifdef LTC_SPRNG -int sprng_start(prng_state *prng); -int sprng_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); -int sprng_ready(prng_state *prng); -unsigned long sprng_read(unsigned char *out, unsigned long outlen, prng_state *prng); -int sprng_done(prng_state *prng); -int sprng_export(unsigned char *out, unsigned long *outlen, prng_state *prng); -int sprng_import(const unsigned char *in, unsigned long inlen, prng_state *prng); -int sprng_test(void); -extern const struct ltc_prng_descriptor sprng_desc; -#endif - -#ifdef LTC_SOBER128 -int sober128_start(prng_state *prng); -int sober128_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); -int sober128_ready(prng_state *prng); -unsigned long sober128_read(unsigned char *out, unsigned long outlen, prng_state *prng); -int sober128_done(prng_state *prng); -int sober128_export(unsigned char *out, unsigned long *outlen, prng_state *prng); -int sober128_import(const unsigned char *in, unsigned long inlen, prng_state *prng); -int sober128_test(void); -extern const struct ltc_prng_descriptor sober128_desc; -#endif - -int find_prng(const char *name); -int register_prng(const struct ltc_prng_descriptor *prng); -int unregister_prng(const struct ltc_prng_descriptor *prng); -int register_all_prngs(void); -int prng_is_valid(int idx); -LTC_MUTEX_PROTO(ltc_prng_mutex) - -/* Slow RNG you **might** be able to use to seed a PRNG with. Be careful as this - * might not work on all platforms as planned - */ -unsigned long rng_get_bytes(unsigned char *out, - unsigned long outlen, - void (*callback)(void)); - -int rng_make_prng(int bits, int wprng, prng_state *prng, void (*callback)(void)); - -#ifdef LTC_PRNG_ENABLE_LTC_RNG -extern unsigned long (*ltc_rng)(unsigned char *out, unsigned long outlen, - void (*callback)(void)); -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/blake2/blake2bmac.c b/src/libtomcrypt/src/mac/blake2/blake2bmac.c deleted file mode 100644 index 56444f510d..0000000000 --- a/src/libtomcrypt/src/mac/blake2/blake2bmac.c +++ /dev/null @@ -1,66 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_BLAKE2BMAC - -/** - Initialize an BLAKE2B MAC context. - @param st The BLAKE2B MAC state - @param outlen The size of the MAC output (octets) - @param key The secret key - @param keylen The length of the secret key (octets) - @return CRYPT_OK if successful -*/ -int blake2bmac_init(blake2bmac_state *st, unsigned long outlen, const unsigned char *key, unsigned long keylen) -{ - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(key != NULL); - return blake2b_init(st, outlen, key, keylen); -} - -/** - Process data through BLAKE2B MAC - @param st The BLAKE2B MAC state - @param in The data to send through HMAC - @param inlen The length of the data to HMAC (octets) - @return CRYPT_OK if successful -*/ -int blake2bmac_process(blake2bmac_state *st, const unsigned char *in, unsigned long inlen) -{ - if (inlen == 0) return CRYPT_OK; /* nothing to do */ - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(in != NULL); - return blake2b_process(st, in, inlen); -} - -/** - Terminate a BLAKE2B MAC session - @param st The BLAKE2B MAC state - @param mac [out] The destination of the BLAKE2B MAC authentication tag - @param maclen [in/out] The max size and resulting size of the BLAKE2B MAC authentication tag - @return CRYPT_OK if successful -*/ -int blake2bmac_done(blake2bmac_state *st, unsigned char *mac, unsigned long *maclen) -{ - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(mac != NULL); - LTC_ARGCHK(maclen != NULL); - LTC_ARGCHK(*maclen >= st->blake2b.outlen); - - *maclen = st->blake2b.outlen; - return blake2b_done(st, mac); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/blake2/blake2bmac_file.c b/src/libtomcrypt/src/mac/blake2/blake2bmac_file.c deleted file mode 100644 index c034633237..0000000000 --- a/src/libtomcrypt/src/mac/blake2/blake2bmac_file.c +++ /dev/null @@ -1,88 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_BLAKE2BMAC - -/** - BLAKE2B MAC a file - @param fname The name of the file you wish to BLAKE2B MAC - @param key The secret key - @param keylen The length of the secret key - @param mac [out] The BLAKE2B MAC authentication tag - @param maclen [in/out] The max size and resulting size of the authentication tag - @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled -*/ -int blake2bmac_file(const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen) -{ -#ifdef LTC_NO_FILE - LTC_UNUSED_PARAM(fname); - LTC_UNUSED_PARAM(key); - LTC_UNUSED_PARAM(keylen); - LTC_UNUSED_PARAM(mac); - LTC_UNUSED_PARAM(maclen); - return CRYPT_NOP; -#else - blake2bmac_state st; - FILE *in; - unsigned char *buf; - size_t x; - int err; - - LTC_ARGCHK(fname != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(mac != NULL); - LTC_ARGCHK(maclen != NULL); - - if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { - return CRYPT_MEM; - } - - if ((err = blake2bmac_init(&st, *maclen, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - - in = fopen(fname, "rb"); - if (in == NULL) { - err = CRYPT_FILE_NOTFOUND; - goto LBL_ERR; - } - - do { - x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); - if ((err = blake2bmac_process(&st, buf, (unsigned long)x)) != CRYPT_OK) { - fclose(in); - goto LBL_CLEANBUF; - } - } while (x == LTC_FILE_READ_BUFSIZE); - - if (fclose(in) != 0) { - err = CRYPT_ERROR; - goto LBL_CLEANBUF; - } - - err = blake2bmac_done(&st, mac, maclen); - -LBL_CLEANBUF: - zeromem(buf, LTC_FILE_READ_BUFSIZE); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(&st, sizeof(blake2bmac_state)); -#endif - XFREE(buf); - return err; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/blake2/blake2bmac_memory.c b/src/libtomcrypt/src/mac/blake2/blake2bmac_memory.c deleted file mode 100644 index 90e54545a2..0000000000 --- a/src/libtomcrypt/src/mac/blake2/blake2bmac_memory.c +++ /dev/null @@ -1,48 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_BLAKE2BMAC - -/** - BLAKE2B MAC a block of memory to produce the authentication tag - @param key The secret key - @param keylen The length of the secret key (octets) - @param in The data to BLAKE2B MAC - @param inlen The length of the data to BLAKE2B MAC (octets) - @param mac [out] Destination of the authentication tag - @param maclen [in/out] Max size and resulting size of authentication tag - @return CRYPT_OK if successful -*/ -int blake2bmac_memory(const unsigned char *key, unsigned long keylen, const unsigned char *in, unsigned long inlen, unsigned char *mac, unsigned long *maclen) -{ - blake2bmac_state st; - int err; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(mac != NULL); - LTC_ARGCHK(maclen != NULL); - - if ((err = blake2bmac_init(&st, *maclen, key, keylen)) != CRYPT_OK) { goto LBL_ERR; } - if ((err = blake2bmac_process(&st, in, inlen)) != CRYPT_OK) { goto LBL_ERR; } - err = blake2bmac_done(&st, mac, maclen); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(&st, sizeof(blake2bmac_state)); -#endif - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/blake2/blake2bmac_memory_multi.c b/src/libtomcrypt/src/mac/blake2/blake2bmac_memory_multi.c deleted file mode 100644 index 1f3db34eba..0000000000 --- a/src/libtomcrypt/src/mac/blake2/blake2bmac_memory_multi.c +++ /dev/null @@ -1,62 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" -#include - -#ifdef LTC_BLAKE2BMAC - -/** - BLAKE2B MAC multiple blocks of memory to produce the authentication tag - @param key The secret key - @param keylen The length of the secret key (octets) - @param mac [out] Destination of the authentication tag - @param maclen [in/out] Max size and resulting size of authentication tag - @param in The data to BLAKE2B MAC - @param inlen The length of the data to BLAKE2B MAC (octets) - @param ... tuples of (data,len) pairs to BLAKE2B MAC, terminated with a (NULL,x) (x=don't care) - @return CRYPT_OK if successful -*/ -int blake2bmac_memory_multi(const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen, const unsigned char *in, unsigned long inlen, ...) -{ - blake2bmac_state st; - int err; - va_list args; - const unsigned char *curptr; - unsigned long curlen; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(mac != NULL); - LTC_ARGCHK(maclen != NULL); - - va_start(args, inlen); - curptr = in; - curlen = inlen; - if ((err = blake2bmac_init(&st, *maclen, key, keylen)) != CRYPT_OK) { goto LBL_ERR; } - for (;;) { - if ((err = blake2bmac_process(&st, curptr, curlen)) != CRYPT_OK) { goto LBL_ERR; } - curptr = va_arg(args, const unsigned char*); - if (curptr == NULL) break; - curlen = va_arg(args, unsigned long); - } - err = blake2bmac_done(&st, mac, maclen); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(&st, sizeof(blake2bmac_state)); -#endif - va_end(args); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/blake2/blake2bmac_test.c b/src/libtomcrypt/src/mac/blake2/blake2bmac_test.c deleted file mode 100644 index 50e271a500..0000000000 --- a/src/libtomcrypt/src/mac/blake2/blake2bmac_test.c +++ /dev/null @@ -1,314 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_BLAKE2BMAC - -int blake2bmac_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const unsigned char tests[256][64] = { - /* source: https://github.com/BLAKE2/BLAKE2/blob/master/testvectors/blake2b-kat.txt */ - { 0x10, 0xeb, 0xb6, 0x77, 0x00, 0xb1, 0x86, 0x8e, 0xfb, 0x44, 0x17, 0x98, 0x7a, 0xcf, 0x46, 0x90, 0xae, 0x9d, 0x97, 0x2f, 0xb7, 0xa5, 0x90, 0xc2, 0xf0, 0x28, 0x71, 0x79, 0x9a, 0xaa, 0x47, 0x86, 0xb5, 0xe9, 0x96, 0xe8, 0xf0, 0xf4, 0xeb, 0x98, 0x1f, 0xc2, 0x14, 0xb0, 0x05, 0xf4, 0x2d, 0x2f, 0xf4, 0x23, 0x34, 0x99, 0x39, 0x16, 0x53, 0xdf, 0x7a, 0xef, 0xcb, 0xc1, 0x3f, 0xc5, 0x15, 0x68 }, - { 0x96, 0x1f, 0x6d, 0xd1, 0xe4, 0xdd, 0x30, 0xf6, 0x39, 0x01, 0x69, 0x0c, 0x51, 0x2e, 0x78, 0xe4, 0xb4, 0x5e, 0x47, 0x42, 0xed, 0x19, 0x7c, 0x3c, 0x5e, 0x45, 0xc5, 0x49, 0xfd, 0x25, 0xf2, 0xe4, 0x18, 0x7b, 0x0b, 0xc9, 0xfe, 0x30, 0x49, 0x2b, 0x16, 0xb0, 0xd0, 0xbc, 0x4e, 0xf9, 0xb0, 0xf3, 0x4c, 0x70, 0x03, 0xfa, 0xc0, 0x9a, 0x5e, 0xf1, 0x53, 0x2e, 0x69, 0x43, 0x02, 0x34, 0xce, 0xbd }, - { 0xda, 0x2c, 0xfb, 0xe2, 0xd8, 0x40, 0x9a, 0x0f, 0x38, 0x02, 0x61, 0x13, 0x88, 0x4f, 0x84, 0xb5, 0x01, 0x56, 0x37, 0x1a, 0xe3, 0x04, 0xc4, 0x43, 0x01, 0x73, 0xd0, 0x8a, 0x99, 0xd9, 0xfb, 0x1b, 0x98, 0x31, 0x64, 0xa3, 0x77, 0x07, 0x06, 0xd5, 0x37, 0xf4, 0x9e, 0x0c, 0x91, 0x6d, 0x9f, 0x32, 0xb9, 0x5c, 0xc3, 0x7a, 0x95, 0xb9, 0x9d, 0x85, 0x74, 0x36, 0xf0, 0x23, 0x2c, 0x88, 0xa9, 0x65 }, - { 0x33, 0xd0, 0x82, 0x5d, 0xdd, 0xf7, 0xad, 0xa9, 0x9b, 0x0e, 0x7e, 0x30, 0x71, 0x04, 0xad, 0x07, 0xca, 0x9c, 0xfd, 0x96, 0x92, 0x21, 0x4f, 0x15, 0x61, 0x35, 0x63, 0x15, 0xe7, 0x84, 0xf3, 0xe5, 0xa1, 0x7e, 0x36, 0x4a, 0xe9, 0xdb, 0xb1, 0x4c, 0xb2, 0x03, 0x6d, 0xf9, 0x32, 0xb7, 0x7f, 0x4b, 0x29, 0x27, 0x61, 0x36, 0x5f, 0xb3, 0x28, 0xde, 0x7a, 0xfd, 0xc6, 0xd8, 0x99, 0x8f, 0x5f, 0xc1 }, - { 0xbe, 0xaa, 0x5a, 0x3d, 0x08, 0xf3, 0x80, 0x71, 0x43, 0xcf, 0x62, 0x1d, 0x95, 0xcd, 0x69, 0x05, 0x14, 0xd0, 0xb4, 0x9e, 0xff, 0xf9, 0xc9, 0x1d, 0x24, 0xb5, 0x92, 0x41, 0xec, 0x0e, 0xef, 0xa5, 0xf6, 0x01, 0x96, 0xd4, 0x07, 0x04, 0x8b, 0xba, 0x8d, 0x21, 0x46, 0x82, 0x8e, 0xbc, 0xb0, 0x48, 0x8d, 0x88, 0x42, 0xfd, 0x56, 0xbb, 0x4f, 0x6d, 0xf8, 0xe1, 0x9c, 0x4b, 0x4d, 0xaa, 0xb8, 0xac }, - { 0x09, 0x80, 0x84, 0xb5, 0x1f, 0xd1, 0x3d, 0xea, 0xe5, 0xf4, 0x32, 0x0d, 0xe9, 0x4a, 0x68, 0x8e, 0xe0, 0x7b, 0xae, 0xa2, 0x80, 0x04, 0x86, 0x68, 0x9a, 0x86, 0x36, 0x11, 0x7b, 0x46, 0xc1, 0xf4, 0xc1, 0xf6, 0xaf, 0x7f, 0x74, 0xae, 0x7c, 0x85, 0x76, 0x00, 0x45, 0x6a, 0x58, 0xa3, 0xaf, 0x25, 0x1d, 0xc4, 0x72, 0x3a, 0x64, 0xcc, 0x7c, 0x0a, 0x5a, 0xb6, 0xd9, 0xca, 0xc9, 0x1c, 0x20, 0xbb }, - { 0x60, 0x44, 0x54, 0x0d, 0x56, 0x08, 0x53, 0xeb, 0x1c, 0x57, 0xdf, 0x00, 0x77, 0xdd, 0x38, 0x10, 0x94, 0x78, 0x1c, 0xdb, 0x90, 0x73, 0xe5, 0xb1, 0xb3, 0xd3, 0xf6, 0xc7, 0x82, 0x9e, 0x12, 0x06, 0x6b, 0xba, 0xca, 0x96, 0xd9, 0x89, 0xa6, 0x90, 0xde, 0x72, 0xca, 0x31, 0x33, 0xa8, 0x36, 0x52, 0xba, 0x28, 0x4a, 0x6d, 0x62, 0x94, 0x2b, 0x27, 0x1f, 0xfa, 0x26, 0x20, 0xc9, 0xe7, 0x5b, 0x1f }, - { 0x7a, 0x8c, 0xfe, 0x9b, 0x90, 0xf7, 0x5f, 0x7e, 0xcb, 0x3a, 0xcc, 0x05, 0x3a, 0xae, 0xd6, 0x19, 0x31, 0x12, 0xb6, 0xf6, 0xa4, 0xae, 0xeb, 0x3f, 0x65, 0xd3, 0xde, 0x54, 0x19, 0x42, 0xde, 0xb9, 0xe2, 0x22, 0x81, 0x52, 0xa3, 0xc4, 0xbb, 0xbe, 0x72, 0xfc, 0x3b, 0x12, 0x62, 0x95, 0x28, 0xcf, 0xbb, 0x09, 0xfe, 0x63, 0x0f, 0x04, 0x74, 0x33, 0x9f, 0x54, 0xab, 0xf4, 0x53, 0xe2, 0xed, 0x52 }, - { 0x38, 0x0b, 0xea, 0xf6, 0xea, 0x7c, 0xc9, 0x36, 0x5e, 0x27, 0x0e, 0xf0, 0xe6, 0xf3, 0xa6, 0x4f, 0xb9, 0x02, 0xac, 0xae, 0x51, 0xdd, 0x55, 0x12, 0xf8, 0x42, 0x59, 0xad, 0x2c, 0x91, 0xf4, 0xbc, 0x41, 0x08, 0xdb, 0x73, 0x19, 0x2a, 0x5b, 0xbf, 0xb0, 0xcb, 0xcf, 0x71, 0xe4, 0x6c, 0x3e, 0x21, 0xae, 0xe1, 0xc5, 0xe8, 0x60, 0xdc, 0x96, 0xe8, 0xeb, 0x0b, 0x7b, 0x84, 0x26, 0xe6, 0xab, 0xe9 }, - { 0x60, 0xfe, 0x3c, 0x45, 0x35, 0xe1, 0xb5, 0x9d, 0x9a, 0x61, 0xea, 0x85, 0x00, 0xbf, 0xac, 0x41, 0xa6, 0x9d, 0xff, 0xb1, 0xce, 0xad, 0xd9, 0xac, 0xa3, 0x23, 0xe9, 0xa6, 0x25, 0xb6, 0x4d, 0xa5, 0x76, 0x3b, 0xad, 0x72, 0x26, 0xda, 0x02, 0xb9, 0xc8, 0xc4, 0xf1, 0xa5, 0xde, 0x14, 0x0a, 0xc5, 0xa6, 0xc1, 0x12, 0x4e, 0x4f, 0x71, 0x8c, 0xe0, 0xb2, 0x8e, 0xa4, 0x73, 0x93, 0xaa, 0x66, 0x37 }, - { 0x4f, 0xe1, 0x81, 0xf5, 0x4a, 0xd6, 0x3a, 0x29, 0x83, 0xfe, 0xaa, 0xf7, 0x7d, 0x1e, 0x72, 0x35, 0xc2, 0xbe, 0xb1, 0x7f, 0xa3, 0x28, 0xb6, 0xd9, 0x50, 0x5b, 0xda, 0x32, 0x7d, 0xf1, 0x9f, 0xc3, 0x7f, 0x02, 0xc4, 0xb6, 0xf0, 0x36, 0x8c, 0xe2, 0x31, 0x47, 0x31, 0x3a, 0x8e, 0x57, 0x38, 0xb5, 0xfa, 0x2a, 0x95, 0xb2, 0x9d, 0xe1, 0xc7, 0xf8, 0x26, 0x4e, 0xb7, 0x7b, 0x69, 0xf5, 0x85, 0xcd }, - { 0xf2, 0x28, 0x77, 0x3c, 0xe3, 0xf3, 0xa4, 0x2b, 0x5f, 0x14, 0x4d, 0x63, 0x23, 0x7a, 0x72, 0xd9, 0x96, 0x93, 0xad, 0xb8, 0x83, 0x7d, 0x0e, 0x11, 0x2a, 0x8a, 0x0f, 0x8f, 0xff, 0xf2, 0xc3, 0x62, 0x85, 0x7a, 0xc4, 0x9c, 0x11, 0xec, 0x74, 0x0d, 0x15, 0x00, 0x74, 0x9d, 0xac, 0x9b, 0x1f, 0x45, 0x48, 0x10, 0x8b, 0xf3, 0x15, 0x57, 0x94, 0xdc, 0xc9, 0xe4, 0x08, 0x28, 0x49, 0xe2, 0xb8, 0x5b }, - { 0x96, 0x24, 0x52, 0xa8, 0x45, 0x5c, 0xc5, 0x6c, 0x85, 0x11, 0x31, 0x7e, 0x3b, 0x1f, 0x3b, 0x2c, 0x37, 0xdf, 0x75, 0xf5, 0x88, 0xe9, 0x43, 0x25, 0xfd, 0xd7, 0x70, 0x70, 0x35, 0x9c, 0xf6, 0x3a, 0x9a, 0xe6, 0xe9, 0x30, 0x93, 0x6f, 0xdf, 0x8e, 0x1e, 0x08, 0xff, 0xca, 0x44, 0x0c, 0xfb, 0x72, 0xc2, 0x8f, 0x06, 0xd8, 0x9a, 0x21, 0x51, 0xd1, 0xc4, 0x6c, 0xd5, 0xb2, 0x68, 0xef, 0x85, 0x63 }, - { 0x43, 0xd4, 0x4b, 0xfa, 0x18, 0x76, 0x8c, 0x59, 0x89, 0x6b, 0xf7, 0xed, 0x17, 0x65, 0xcb, 0x2d, 0x14, 0xaf, 0x8c, 0x26, 0x02, 0x66, 0x03, 0x90, 0x99, 0xb2, 0x5a, 0x60, 0x3e, 0x4d, 0xdc, 0x50, 0x39, 0xd6, 0xef, 0x3a, 0x91, 0x84, 0x7d, 0x10, 0x88, 0xd4, 0x01, 0xc0, 0xc7, 0xe8, 0x47, 0x78, 0x1a, 0x8a, 0x59, 0x0d, 0x33, 0xa3, 0xc6, 0xcb, 0x4d, 0xf0, 0xfa, 0xb1, 0xc2, 0xf2, 0x23, 0x55 }, - { 0xdc, 0xff, 0xa9, 0xd5, 0x8c, 0x2a, 0x4c, 0xa2, 0xcd, 0xbb, 0x0c, 0x7a, 0xa4, 0xc4, 0xc1, 0xd4, 0x51, 0x65, 0x19, 0x00, 0x89, 0xf4, 0xe9, 0x83, 0xbb, 0x1c, 0x2c, 0xab, 0x4a, 0xae, 0xff, 0x1f, 0xa2, 0xb5, 0xee, 0x51, 0x6f, 0xec, 0xd7, 0x80, 0x54, 0x02, 0x40, 0xbf, 0x37, 0xe5, 0x6c, 0x8b, 0xcc, 0xa7, 0xfa, 0xb9, 0x80, 0xe1, 0xe6, 0x1c, 0x94, 0x00, 0xd8, 0xa9, 0xa5, 0xb1, 0x4a, 0xc6 }, - { 0x6f, 0xbf, 0x31, 0xb4, 0x5a, 0xb0, 0xc0, 0xb8, 0xda, 0xd1, 0xc0, 0xf5, 0xf4, 0x06, 0x13, 0x79, 0x91, 0x2d, 0xde, 0x5a, 0xa9, 0x22, 0x09, 0x9a, 0x03, 0x0b, 0x72, 0x5c, 0x73, 0x34, 0x6c, 0x52, 0x42, 0x91, 0xad, 0xef, 0x89, 0xd2, 0xf6, 0xfd, 0x8d, 0xfc, 0xda, 0x6d, 0x07, 0xda, 0xd8, 0x11, 0xa9, 0x31, 0x45, 0x36, 0xc2, 0x91, 0x5e, 0xd4, 0x5d, 0xa3, 0x49, 0x47, 0xe8, 0x3d, 0xe3, 0x4e }, - { 0xa0, 0xc6, 0x5b, 0xdd, 0xde, 0x8a, 0xde, 0xf5, 0x72, 0x82, 0xb0, 0x4b, 0x11, 0xe7, 0xbc, 0x8a, 0xab, 0x10, 0x5b, 0x99, 0x23, 0x1b, 0x75, 0x0c, 0x02, 0x1f, 0x4a, 0x73, 0x5c, 0xb1, 0xbc, 0xfa, 0xb8, 0x75, 0x53, 0xbb, 0xa3, 0xab, 0xb0, 0xc3, 0xe6, 0x4a, 0x0b, 0x69, 0x55, 0x28, 0x51, 0x85, 0xa0, 0xbd, 0x35, 0xfb, 0x8c, 0xfd, 0xe5, 0x57, 0x32, 0x9b, 0xeb, 0xb1, 0xf6, 0x29, 0xee, 0x93 }, - { 0xf9, 0x9d, 0x81, 0x55, 0x50, 0x55, 0x8e, 0x81, 0xec, 0xa2, 0xf9, 0x67, 0x18, 0xae, 0xd1, 0x0d, 0x86, 0xf3, 0xf1, 0xcf, 0xb6, 0x75, 0xcc, 0xe0, 0x6b, 0x0e, 0xff, 0x02, 0xf6, 0x17, 0xc5, 0xa4, 0x2c, 0x5a, 0xa7, 0x60, 0x27, 0x0f, 0x26, 0x79, 0xda, 0x26, 0x77, 0xc5, 0xae, 0xb9, 0x4f, 0x11, 0x42, 0x27, 0x7f, 0x21, 0xc7, 0xf7, 0x9f, 0x3c, 0x4f, 0x0c, 0xce, 0x4e, 0xd8, 0xee, 0x62, 0xb1 }, - { 0x95, 0x39, 0x1d, 0xa8, 0xfc, 0x7b, 0x91, 0x7a, 0x20, 0x44, 0xb3, 0xd6, 0xf5, 0x37, 0x4e, 0x1c, 0xa0, 0x72, 0xb4, 0x14, 0x54, 0xd5, 0x72, 0xc7, 0x35, 0x6c, 0x05, 0xfd, 0x4b, 0xc1, 0xe0, 0xf4, 0x0b, 0x8b, 0xb8, 0xb4, 0xa9, 0xf6, 0xbc, 0xe9, 0xbe, 0x2c, 0x46, 0x23, 0xc3, 0x99, 0xb0, 0xdc, 0xa0, 0xda, 0xb0, 0x5c, 0xb7, 0x28, 0x1b, 0x71, 0xa2, 0x1b, 0x0e, 0xbc, 0xd9, 0xe5, 0x56, 0x70 }, - { 0x04, 0xb9, 0xcd, 0x3d, 0x20, 0xd2, 0x21, 0xc0, 0x9a, 0xc8, 0x69, 0x13, 0xd3, 0xdc, 0x63, 0x04, 0x19, 0x89, 0xa9, 0xa1, 0xe6, 0x94, 0xf1, 0xe6, 0x39, 0xa3, 0xba, 0x7e, 0x45, 0x18, 0x40, 0xf7, 0x50, 0xc2, 0xfc, 0x19, 0x1d, 0x56, 0xad, 0x61, 0xf2, 0xe7, 0x93, 0x6b, 0xc0, 0xac, 0x8e, 0x09, 0x4b, 0x60, 0xca, 0xee, 0xd8, 0x78, 0xc1, 0x87, 0x99, 0x04, 0x54, 0x02, 0xd6, 0x1c, 0xea, 0xf9 }, - { 0xec, 0x0e, 0x0e, 0xf7, 0x07, 0xe4, 0xed, 0x6c, 0x0c, 0x66, 0xf9, 0xe0, 0x89, 0xe4, 0x95, 0x4b, 0x05, 0x80, 0x30, 0xd2, 0xdd, 0x86, 0x39, 0x8f, 0xe8, 0x40, 0x59, 0x63, 0x1f, 0x9e, 0xe5, 0x91, 0xd9, 0xd7, 0x73, 0x75, 0x35, 0x51, 0x49, 0x17, 0x8c, 0x0c, 0xf8, 0xf8, 0xe7, 0xc4, 0x9e, 0xd2, 0xa5, 0xe4, 0xf9, 0x54, 0x88, 0xa2, 0x24, 0x70, 0x67, 0xc2, 0x08, 0x51, 0x0f, 0xad, 0xc4, 0x4c }, - { 0x9a, 0x37, 0xcc, 0xe2, 0x73, 0xb7, 0x9c, 0x09, 0x91, 0x36, 0x77, 0x51, 0x0e, 0xaf, 0x76, 0x88, 0xe8, 0x9b, 0x33, 0x14, 0xd3, 0x53, 0x2f, 0xd2, 0x76, 0x4c, 0x39, 0xde, 0x02, 0x2a, 0x29, 0x45, 0xb5, 0x71, 0x0d, 0x13, 0x51, 0x7a, 0xf8, 0xdd, 0xc0, 0x31, 0x66, 0x24, 0xe7, 0x3b, 0xec, 0x1c, 0xe6, 0x7d, 0xf1, 0x52, 0x28, 0x30, 0x20, 0x36, 0xf3, 0x30, 0xab, 0x0c, 0xb4, 0xd2, 0x18, 0xdd }, - { 0x4c, 0xf9, 0xbb, 0x8f, 0xb3, 0xd4, 0xde, 0x8b, 0x38, 0xb2, 0xf2, 0x62, 0xd3, 0xc4, 0x0f, 0x46, 0xdf, 0xe7, 0x47, 0xe8, 0xfc, 0x0a, 0x41, 0x4c, 0x19, 0x3d, 0x9f, 0xcf, 0x75, 0x31, 0x06, 0xce, 0x47, 0xa1, 0x8f, 0x17, 0x2f, 0x12, 0xe8, 0xa2, 0xf1, 0xc2, 0x67, 0x26, 0x54, 0x53, 0x58, 0xe5, 0xee, 0x28, 0xc9, 0xe2, 0x21, 0x3a, 0x87, 0x87, 0xaa, 0xfb, 0xc5, 0x16, 0xd2, 0x34, 0x31, 0x52 }, - { 0x64, 0xe0, 0xc6, 0x3a, 0xf9, 0xc8, 0x08, 0xfd, 0x89, 0x31, 0x37, 0x12, 0x98, 0x67, 0xfd, 0x91, 0x93, 0x9d, 0x53, 0xf2, 0xaf, 0x04, 0xbe, 0x4f, 0xa2, 0x68, 0x00, 0x61, 0x00, 0x06, 0x9b, 0x2d, 0x69, 0xda, 0xa5, 0xc5, 0xd8, 0xed, 0x7f, 0xdd, 0xcb, 0x2a, 0x70, 0xee, 0xec, 0xdf, 0x2b, 0x10, 0x5d, 0xd4, 0x6a, 0x1e, 0x3b, 0x73, 0x11, 0x72, 0x8f, 0x63, 0x9a, 0xb4, 0x89, 0x32, 0x6b, 0xc9 }, - { 0x5e, 0x9c, 0x93, 0x15, 0x8d, 0x65, 0x9b, 0x2d, 0xef, 0x06, 0xb0, 0xc3, 0xc7, 0x56, 0x50, 0x45, 0x54, 0x26, 0x62, 0xd6, 0xee, 0xe8, 0xa9, 0x6a, 0x89, 0xb7, 0x8a, 0xde, 0x09, 0xfe, 0x8b, 0x3d, 0xcc, 0x09, 0x6d, 0x4f, 0xe4, 0x88, 0x15, 0xd8, 0x8d, 0x8f, 0x82, 0x62, 0x01, 0x56, 0x60, 0x2a, 0xf5, 0x41, 0x95, 0x5e, 0x1f, 0x6c, 0xa3, 0x0d, 0xce, 0x14, 0xe2, 0x54, 0xc3, 0x26, 0xb8, 0x8f }, - { 0x77, 0x75, 0xdf, 0xf8, 0x89, 0x45, 0x8d, 0xd1, 0x1a, 0xef, 0x41, 0x72, 0x76, 0x85, 0x3e, 0x21, 0x33, 0x5e, 0xb8, 0x8e, 0x4d, 0xec, 0x9c, 0xfb, 0x4e, 0x9e, 0xdb, 0x49, 0x82, 0x00, 0x88, 0x55, 0x1a, 0x2c, 0xa6, 0x03, 0x39, 0xf1, 0x20, 0x66, 0x10, 0x11, 0x69, 0xf0, 0xdf, 0xe8, 0x4b, 0x09, 0x8f, 0xdd, 0xb1, 0x48, 0xd9, 0xda, 0x6b, 0x3d, 0x61, 0x3d, 0xf2, 0x63, 0x88, 0x9a, 0xd6, 0x4b }, - { 0xf0, 0xd2, 0x80, 0x5a, 0xfb, 0xb9, 0x1f, 0x74, 0x39, 0x51, 0x35, 0x1a, 0x6d, 0x02, 0x4f, 0x93, 0x53, 0xa2, 0x3c, 0x7c, 0xe1, 0xfc, 0x2b, 0x05, 0x1b, 0x3a, 0x8b, 0x96, 0x8c, 0x23, 0x3f, 0x46, 0xf5, 0x0f, 0x80, 0x6e, 0xcb, 0x15, 0x68, 0xff, 0xaa, 0x0b, 0x60, 0x66, 0x1e, 0x33, 0x4b, 0x21, 0xdd, 0xe0, 0x4f, 0x8f, 0xa1, 0x55, 0xac, 0x74, 0x0e, 0xeb, 0x42, 0xe2, 0x0b, 0x60, 0xd7, 0x64 }, - { 0x86, 0xa2, 0xaf, 0x31, 0x6e, 0x7d, 0x77, 0x54, 0x20, 0x1b, 0x94, 0x2e, 0x27, 0x53, 0x64, 0xac, 0x12, 0xea, 0x89, 0x62, 0xab, 0x5b, 0xd8, 0xd7, 0xfb, 0x27, 0x6d, 0xc5, 0xfb, 0xff, 0xc8, 0xf9, 0xa2, 0x8c, 0xae, 0x4e, 0x48, 0x67, 0xdf, 0x67, 0x80, 0xd9, 0xb7, 0x25, 0x24, 0x16, 0x09, 0x27, 0xc8, 0x55, 0xda, 0x5b, 0x60, 0x78, 0xe0, 0xb5, 0x54, 0xaa, 0x91, 0xe3, 0x1c, 0xb9, 0xca, 0x1d }, - { 0x10, 0xbd, 0xf0, 0xca, 0xa0, 0x80, 0x27, 0x05, 0xe7, 0x06, 0x36, 0x9b, 0xaf, 0x8a, 0x3f, 0x79, 0xd7, 0x2c, 0x0a, 0x03, 0xa8, 0x06, 0x75, 0xa7, 0xbb, 0xb0, 0x0b, 0xe3, 0xa4, 0x5e, 0x51, 0x64, 0x24, 0xd1, 0xee, 0x88, 0xef, 0xb5, 0x6f, 0x6d, 0x57, 0x77, 0x54, 0x5a, 0xe6, 0xe2, 0x77, 0x65, 0xc3, 0xa8, 0xf5, 0xe4, 0x93, 0xfc, 0x30, 0x89, 0x15, 0x63, 0x89, 0x33, 0xa1, 0xdf, 0xee, 0x55 }, - { 0xb0, 0x17, 0x81, 0x09, 0x2b, 0x17, 0x48, 0x45, 0x9e, 0x2e, 0x4e, 0xc1, 0x78, 0x69, 0x66, 0x27, 0xbf, 0x4e, 0xba, 0xfe, 0xbb, 0xa7, 0x74, 0xec, 0xf0, 0x18, 0xb7, 0x9a, 0x68, 0xae, 0xb8, 0x49, 0x17, 0xbf, 0x0b, 0x84, 0xbb, 0x79, 0xd1, 0x7b, 0x74, 0x31, 0x51, 0x14, 0x4c, 0xd6, 0x6b, 0x7b, 0x33, 0xa4, 0xb9, 0xe5, 0x2c, 0x76, 0xc4, 0xe1, 0x12, 0x05, 0x0f, 0xf5, 0x38, 0x5b, 0x7f, 0x0b }, - { 0xc6, 0xdb, 0xc6, 0x1d, 0xec, 0x6e, 0xae, 0xac, 0x81, 0xe3, 0xd5, 0xf7, 0x55, 0x20, 0x3c, 0x8e, 0x22, 0x05, 0x51, 0x53, 0x4a, 0x0b, 0x2f, 0xd1, 0x05, 0xa9, 0x18, 0x89, 0x94, 0x5a, 0x63, 0x85, 0x50, 0x20, 0x4f, 0x44, 0x09, 0x3d, 0xd9, 0x98, 0xc0, 0x76, 0x20, 0x5d, 0xff, 0xad, 0x70, 0x3a, 0x0e, 0x5c, 0xd3, 0xc7, 0xf4, 0x38, 0xa7, 0xe6, 0x34, 0xcd, 0x59, 0xfe, 0xde, 0xdb, 0x53, 0x9e }, - { 0xeb, 0xa5, 0x1a, 0xcf, 0xfb, 0x4c, 0xea, 0x31, 0xdb, 0x4b, 0x8d, 0x87, 0xe9, 0xbf, 0x7d, 0xd4, 0x8f, 0xe9, 0x7b, 0x02, 0x53, 0xae, 0x67, 0xaa, 0x58, 0x0f, 0x9a, 0xc4, 0xa9, 0xd9, 0x41, 0xf2, 0xbe, 0xa5, 0x18, 0xee, 0x28, 0x68, 0x18, 0xcc, 0x9f, 0x63, 0x3f, 0x2a, 0x3b, 0x9f, 0xb6, 0x8e, 0x59, 0x4b, 0x48, 0xcd, 0xd6, 0xd5, 0x15, 0xbf, 0x1d, 0x52, 0xba, 0x6c, 0x85, 0xa2, 0x03, 0xa7 }, - { 0x86, 0x22, 0x1f, 0x3a, 0xda, 0x52, 0x03, 0x7b, 0x72, 0x22, 0x4f, 0x10, 0x5d, 0x79, 0x99, 0x23, 0x1c, 0x5e, 0x55, 0x34, 0xd0, 0x3d, 0xa9, 0xd9, 0xc0, 0xa1, 0x2a, 0xcb, 0x68, 0x46, 0x0c, 0xd3, 0x75, 0xda, 0xf8, 0xe2, 0x43, 0x86, 0x28, 0x6f, 0x96, 0x68, 0xf7, 0x23, 0x26, 0xdb, 0xf9, 0x9b, 0xa0, 0x94, 0x39, 0x24, 0x37, 0xd3, 0x98, 0xe9, 0x5b, 0xb8, 0x16, 0x1d, 0x71, 0x7f, 0x89, 0x91 }, - { 0x55, 0x95, 0xe0, 0x5c, 0x13, 0xa7, 0xec, 0x4d, 0xc8, 0xf4, 0x1f, 0xb7, 0x0c, 0xb5, 0x0a, 0x71, 0xbc, 0xe1, 0x7c, 0x02, 0x4f, 0xf6, 0xde, 0x7a, 0xf6, 0x18, 0xd0, 0xcc, 0x4e, 0x9c, 0x32, 0xd9, 0x57, 0x0d, 0x6d, 0x3e, 0xa4, 0x5b, 0x86, 0x52, 0x54, 0x91, 0x03, 0x0c, 0x0d, 0x8f, 0x2b, 0x18, 0x36, 0xd5, 0x77, 0x8c, 0x1c, 0xe7, 0x35, 0xc1, 0x77, 0x07, 0xdf, 0x36, 0x4d, 0x05, 0x43, 0x47 }, - { 0xce, 0x0f, 0x4f, 0x6a, 0xca, 0x89, 0x59, 0x0a, 0x37, 0xfe, 0x03, 0x4d, 0xd7, 0x4d, 0xd5, 0xfa, 0x65, 0xeb, 0x1c, 0xbd, 0x0a, 0x41, 0x50, 0x8a, 0xad, 0xdc, 0x09, 0x35, 0x1a, 0x3c, 0xea, 0x6d, 0x18, 0xcb, 0x21, 0x89, 0xc5, 0x4b, 0x70, 0x0c, 0x00, 0x9f, 0x4c, 0xbf, 0x05, 0x21, 0xc7, 0xea, 0x01, 0xbe, 0x61, 0xc5, 0xae, 0x09, 0xcb, 0x54, 0xf2, 0x7b, 0xc1, 0xb4, 0x4d, 0x65, 0x8c, 0x82 }, - { 0x7e, 0xe8, 0x0b, 0x06, 0xa2, 0x15, 0xa3, 0xbc, 0xa9, 0x70, 0xc7, 0x7c, 0xda, 0x87, 0x61, 0x82, 0x2b, 0xc1, 0x03, 0xd4, 0x4f, 0xa4, 0xb3, 0x3f, 0x4d, 0x07, 0xdc, 0xb9, 0x97, 0xe3, 0x6d, 0x55, 0x29, 0x8b, 0xce, 0xae, 0x12, 0x24, 0x1b, 0x3f, 0xa0, 0x7f, 0xa6, 0x3b, 0xe5, 0x57, 0x60, 0x68, 0xda, 0x38, 0x7b, 0x8d, 0x58, 0x59, 0xae, 0xab, 0x70, 0x13, 0x69, 0x84, 0x8b, 0x17, 0x6d, 0x42 }, - { 0x94, 0x0a, 0x84, 0xb6, 0xa8, 0x4d, 0x10, 0x9a, 0xab, 0x20, 0x8c, 0x02, 0x4c, 0x6c, 0xe9, 0x64, 0x76, 0x76, 0xba, 0x0a, 0xaa, 0x11, 0xf8, 0x6d, 0xbb, 0x70, 0x18, 0xf9, 0xfd, 0x22, 0x20, 0xa6, 0xd9, 0x01, 0xa9, 0x02, 0x7f, 0x9a, 0xbc, 0xf9, 0x35, 0x37, 0x27, 0x27, 0xcb, 0xf0, 0x9e, 0xbd, 0x61, 0xa2, 0xa2, 0xee, 0xb8, 0x76, 0x53, 0xe8, 0xec, 0xad, 0x1b, 0xab, 0x85, 0xdc, 0x83, 0x27 }, - { 0x20, 0x20, 0xb7, 0x82, 0x64, 0xa8, 0x2d, 0x9f, 0x41, 0x51, 0x14, 0x1a, 0xdb, 0xa8, 0xd4, 0x4b, 0xf2, 0x0c, 0x5e, 0xc0, 0x62, 0xee, 0xe9, 0xb5, 0x95, 0xa1, 0x1f, 0x9e, 0x84, 0x90, 0x1b, 0xf1, 0x48, 0xf2, 0x98, 0xe0, 0xc9, 0xf8, 0x77, 0x7d, 0xcd, 0xbc, 0x7c, 0xc4, 0x67, 0x0a, 0xac, 0x35, 0x6c, 0xc2, 0xad, 0x8c, 0xcb, 0x16, 0x29, 0xf1, 0x6f, 0x6a, 0x76, 0xbc, 0xef, 0xbe, 0xe7, 0x60 }, - { 0xd1, 0xb8, 0x97, 0xb0, 0xe0, 0x75, 0xba, 0x68, 0xab, 0x57, 0x2a, 0xdf, 0x9d, 0x9c, 0x43, 0x66, 0x63, 0xe4, 0x3e, 0xb3, 0xd8, 0xe6, 0x2d, 0x92, 0xfc, 0x49, 0xc9, 0xbe, 0x21, 0x4e, 0x6f, 0x27, 0x87, 0x3f, 0xe2, 0x15, 0xa6, 0x51, 0x70, 0xe6, 0xbe, 0xa9, 0x02, 0x40, 0x8a, 0x25, 0xb4, 0x95, 0x06, 0xf4, 0x7b, 0xab, 0xd0, 0x7c, 0xec, 0xf7, 0x11, 0x3e, 0xc1, 0x0c, 0x5d, 0xd3, 0x12, 0x52 }, - { 0xb1, 0x4d, 0x0c, 0x62, 0xab, 0xfa, 0x46, 0x9a, 0x35, 0x71, 0x77, 0xe5, 0x94, 0xc1, 0x0c, 0x19, 0x42, 0x43, 0xed, 0x20, 0x25, 0xab, 0x8a, 0xa5, 0xad, 0x2f, 0xa4, 0x1a, 0xd3, 0x18, 0xe0, 0xff, 0x48, 0xcd, 0x5e, 0x60, 0xbe, 0xc0, 0x7b, 0x13, 0x63, 0x4a, 0x71, 0x1d, 0x23, 0x26, 0xe4, 0x88, 0xa9, 0x85, 0xf3, 0x1e, 0x31, 0x15, 0x33, 0x99, 0xe7, 0x30, 0x88, 0xef, 0xc8, 0x6a, 0x5c, 0x55 }, - { 0x41, 0x69, 0xc5, 0xcc, 0x80, 0x8d, 0x26, 0x97, 0xdc, 0x2a, 0x82, 0x43, 0x0d, 0xc2, 0x3e, 0x3c, 0xd3, 0x56, 0xdc, 0x70, 0xa9, 0x45, 0x66, 0x81, 0x05, 0x02, 0xb8, 0xd6, 0x55, 0xb3, 0x9a, 0xbf, 0x9e, 0x7f, 0x90, 0x2f, 0xe7, 0x17, 0xe0, 0x38, 0x92, 0x19, 0x85, 0x9e, 0x19, 0x45, 0xdf, 0x1a, 0xf6, 0xad, 0xa4, 0x2e, 0x4c, 0xcd, 0xa5, 0x5a, 0x19, 0x7b, 0x71, 0x00, 0xa3, 0x0c, 0x30, 0xa1 }, - { 0x25, 0x8a, 0x4e, 0xdb, 0x11, 0x3d, 0x66, 0xc8, 0x39, 0xc8, 0xb1, 0xc9, 0x1f, 0x15, 0xf3, 0x5a, 0xde, 0x60, 0x9f, 0x11, 0xcd, 0x7f, 0x86, 0x81, 0xa4, 0x04, 0x5b, 0x9f, 0xef, 0x7b, 0x0b, 0x24, 0xc8, 0x2c, 0xda, 0x06, 0xa5, 0xf2, 0x06, 0x7b, 0x36, 0x88, 0x25, 0xe3, 0x91, 0x4e, 0x53, 0xd6, 0x94, 0x8e, 0xde, 0x92, 0xef, 0xd6, 0xe8, 0x38, 0x7f, 0xa2, 0xe5, 0x37, 0x23, 0x9b, 0x5b, 0xee }, - { 0x79, 0xd2, 0xd8, 0x69, 0x6d, 0x30, 0xf3, 0x0f, 0xb3, 0x46, 0x57, 0x76, 0x11, 0x71, 0xa1, 0x1e, 0x6c, 0x3f, 0x1e, 0x64, 0xcb, 0xe7, 0xbe, 0xbe, 0xe1, 0x59, 0xcb, 0x95, 0xbf, 0xaf, 0x81, 0x2b, 0x4f, 0x41, 0x1e, 0x2f, 0x26, 0xd9, 0xc4, 0x21, 0xdc, 0x2c, 0x28, 0x4a, 0x33, 0x42, 0xd8, 0x23, 0xec, 0x29, 0x38, 0x49, 0xe4, 0x2d, 0x1e, 0x46, 0xb0, 0xa4, 0xac, 0x1e, 0x3c, 0x86, 0xab, 0xaa }, - { 0x8b, 0x94, 0x36, 0x01, 0x0d, 0xc5, 0xde, 0xe9, 0x92, 0xae, 0x38, 0xae, 0xa9, 0x7f, 0x2c, 0xd6, 0x3b, 0x94, 0x6d, 0x94, 0xfe, 0xdd, 0x2e, 0xc9, 0x67, 0x1d, 0xcd, 0xe3, 0xbd, 0x4c, 0xe9, 0x56, 0x4d, 0x55, 0x5c, 0x66, 0xc1, 0x5b, 0xb2, 0xb9, 0x00, 0xdf, 0x72, 0xed, 0xb6, 0xb8, 0x91, 0xeb, 0xca, 0xdf, 0xef, 0xf6, 0x3c, 0x9e, 0xa4, 0x03, 0x6a, 0x99, 0x8b, 0xe7, 0x97, 0x39, 0x81, 0xe7 }, - { 0xc8, 0xf6, 0x8e, 0x69, 0x6e, 0xd2, 0x82, 0x42, 0xbf, 0x99, 0x7f, 0x5b, 0x3b, 0x34, 0x95, 0x95, 0x08, 0xe4, 0x2d, 0x61, 0x38, 0x10, 0xf1, 0xe2, 0xa4, 0x35, 0xc9, 0x6e, 0xd2, 0xff, 0x56, 0x0c, 0x70, 0x22, 0xf3, 0x61, 0xa9, 0x23, 0x4b, 0x98, 0x37, 0xfe, 0xee, 0x90, 0xbf, 0x47, 0x92, 0x2e, 0xe0, 0xfd, 0x5f, 0x8d, 0xdf, 0x82, 0x37, 0x18, 0xd8, 0x6d, 0x1e, 0x16, 0xc6, 0x09, 0x00, 0x71 }, - { 0xb0, 0x2d, 0x3e, 0xee, 0x48, 0x60, 0xd5, 0x86, 0x8b, 0x2c, 0x39, 0xce, 0x39, 0xbf, 0xe8, 0x10, 0x11, 0x29, 0x05, 0x64, 0xdd, 0x67, 0x8c, 0x85, 0xe8, 0x78, 0x3f, 0x29, 0x30, 0x2d, 0xfc, 0x13, 0x99, 0xba, 0x95, 0xb6, 0xb5, 0x3c, 0xd9, 0xeb, 0xbf, 0x40, 0x0c, 0xca, 0x1d, 0xb0, 0xab, 0x67, 0xe1, 0x9a, 0x32, 0x5f, 0x2d, 0x11, 0x58, 0x12, 0xd2, 0x5d, 0x00, 0x97, 0x8a, 0xd1, 0xbc, 0xa4 }, - { 0x76, 0x93, 0xea, 0x73, 0xaf, 0x3a, 0xc4, 0xda, 0xd2, 0x1c, 0xa0, 0xd8, 0xda, 0x85, 0xb3, 0x11, 0x8a, 0x7d, 0x1c, 0x60, 0x24, 0xcf, 0xaf, 0x55, 0x76, 0x99, 0x86, 0x82, 0x17, 0xbc, 0x0c, 0x2f, 0x44, 0xa1, 0x99, 0xbc, 0x6c, 0x0e, 0xdd, 0x51, 0x97, 0x98, 0xba, 0x05, 0xbd, 0x5b, 0x1b, 0x44, 0x84, 0x34, 0x6a, 0x47, 0xc2, 0xca, 0xdf, 0x6b, 0xf3, 0x0b, 0x78, 0x5c, 0xc8, 0x8b, 0x2b, 0xaf }, - { 0xa0, 0xe5, 0xc1, 0xc0, 0x03, 0x1c, 0x02, 0xe4, 0x8b, 0x7f, 0x09, 0xa5, 0xe8, 0x96, 0xee, 0x9a, 0xef, 0x2f, 0x17, 0xfc, 0x9e, 0x18, 0xe9, 0x97, 0xd7, 0xf6, 0xca, 0xc7, 0xae, 0x31, 0x64, 0x22, 0xc2, 0xb1, 0xe7, 0x79, 0x84, 0xe5, 0xf3, 0xa7, 0x3c, 0xb4, 0x5d, 0xee, 0xd5, 0xd3, 0xf8, 0x46, 0x00, 0x10, 0x5e, 0x6e, 0xe3, 0x8f, 0x2d, 0x09, 0x0c, 0x7d, 0x04, 0x42, 0xea, 0x34, 0xc4, 0x6d }, - { 0x41, 0xda, 0xa6, 0xad, 0xcf, 0xdb, 0x69, 0xf1, 0x44, 0x0c, 0x37, 0xb5, 0x96, 0x44, 0x01, 0x65, 0xc1, 0x5a, 0xda, 0x59, 0x68, 0x13, 0xe2, 0xe2, 0x2f, 0x06, 0x0f, 0xcd, 0x55, 0x1f, 0x24, 0xde, 0xe8, 0xe0, 0x4b, 0xa6, 0x89, 0x03, 0x87, 0x88, 0x6c, 0xee, 0xc4, 0xa7, 0xa0, 0xd7, 0xfc, 0x6b, 0x44, 0x50, 0x63, 0x92, 0xec, 0x38, 0x22, 0xc0, 0xd8, 0xc1, 0xac, 0xfc, 0x7d, 0x5a, 0xeb, 0xe8 }, - { 0x14, 0xd4, 0xd4, 0x0d, 0x59, 0x84, 0xd8, 0x4c, 0x5c, 0xf7, 0x52, 0x3b, 0x77, 0x98, 0xb2, 0x54, 0xe2, 0x75, 0xa3, 0xa8, 0xcc, 0x0a, 0x1b, 0xd0, 0x6e, 0xbc, 0x0b, 0xee, 0x72, 0x68, 0x56, 0xac, 0xc3, 0xcb, 0xf5, 0x16, 0xff, 0x66, 0x7c, 0xda, 0x20, 0x58, 0xad, 0x5c, 0x34, 0x12, 0x25, 0x44, 0x60, 0xa8, 0x2c, 0x92, 0x18, 0x70, 0x41, 0x36, 0x3c, 0xc7, 0x7a, 0x4d, 0xc2, 0x15, 0xe4, 0x87 }, - { 0xd0, 0xe7, 0xa1, 0xe2, 0xb9, 0xa4, 0x47, 0xfe, 0xe8, 0x3e, 0x22, 0x77, 0xe9, 0xff, 0x80, 0x10, 0xc2, 0xf3, 0x75, 0xae, 0x12, 0xfa, 0x7a, 0xaa, 0x8c, 0xa5, 0xa6, 0x31, 0x78, 0x68, 0xa2, 0x6a, 0x36, 0x7a, 0x0b, 0x69, 0xfb, 0xc1, 0xcf, 0x32, 0xa5, 0x5d, 0x34, 0xeb, 0x37, 0x06, 0x63, 0x01, 0x6f, 0x3d, 0x21, 0x10, 0x23, 0x0e, 0xba, 0x75, 0x40, 0x28, 0xa5, 0x6f, 0x54, 0xac, 0xf5, 0x7c }, - { 0xe7, 0x71, 0xaa, 0x8d, 0xb5, 0xa3, 0xe0, 0x43, 0xe8, 0x17, 0x8f, 0x39, 0xa0, 0x85, 0x7b, 0xa0, 0x4a, 0x3f, 0x18, 0xe4, 0xaa, 0x05, 0x74, 0x3c, 0xf8, 0xd2, 0x22, 0xb0, 0xb0, 0x95, 0x82, 0x53, 0x50, 0xba, 0x42, 0x2f, 0x63, 0x38, 0x2a, 0x23, 0xd9, 0x2e, 0x41, 0x49, 0x07, 0x4e, 0x81, 0x6a, 0x36, 0xc1, 0xcd, 0x28, 0x28, 0x4d, 0x14, 0x62, 0x67, 0x94, 0x0b, 0x31, 0xf8, 0x81, 0x8e, 0xa2 }, - { 0xfe, 0xb4, 0xfd, 0x6f, 0x9e, 0x87, 0xa5, 0x6b, 0xef, 0x39, 0x8b, 0x32, 0x84, 0xd2, 0xbd, 0xa5, 0xb5, 0xb0, 0xe1, 0x66, 0x58, 0x3a, 0x66, 0xb6, 0x1e, 0x53, 0x84, 0x57, 0xff, 0x05, 0x84, 0x87, 0x2c, 0x21, 0xa3, 0x29, 0x62, 0xb9, 0x92, 0x8f, 0xfa, 0xb5, 0x8d, 0xe4, 0xaf, 0x2e, 0xdd, 0x4e, 0x15, 0xd8, 0xb3, 0x55, 0x70, 0x52, 0x32, 0x07, 0xff, 0x4e, 0x2a, 0x5a, 0xa7, 0x75, 0x4c, 0xaa }, - { 0x46, 0x2f, 0x17, 0xbf, 0x00, 0x5f, 0xb1, 0xc1, 0xb9, 0xe6, 0x71, 0x77, 0x9f, 0x66, 0x52, 0x09, 0xec, 0x28, 0x73, 0xe3, 0xe4, 0x11, 0xf9, 0x8d, 0xab, 0xf2, 0x40, 0xa1, 0xd5, 0xec, 0x3f, 0x95, 0xce, 0x67, 0x96, 0xb6, 0xfc, 0x23, 0xfe, 0x17, 0x19, 0x03, 0xb5, 0x02, 0x02, 0x34, 0x67, 0xde, 0xc7, 0x27, 0x3f, 0xf7, 0x48, 0x79, 0xb9, 0x29, 0x67, 0xa2, 0xa4, 0x3a, 0x5a, 0x18, 0x3d, 0x33 }, - { 0xd3, 0x33, 0x81, 0x93, 0xb6, 0x45, 0x53, 0xdb, 0xd3, 0x8d, 0x14, 0x4b, 0xea, 0x71, 0xc5, 0x91, 0x5b, 0xb1, 0x10, 0xe2, 0xd8, 0x81, 0x80, 0xdb, 0xc5, 0xdb, 0x36, 0x4f, 0xd6, 0x17, 0x1d, 0xf3, 0x17, 0xfc, 0x72, 0x68, 0x83, 0x1b, 0x5a, 0xef, 0x75, 0xe4, 0x34, 0x2b, 0x2f, 0xad, 0x87, 0x97, 0xba, 0x39, 0xed, 0xdc, 0xef, 0x80, 0xe6, 0xec, 0x08, 0x15, 0x93, 0x50, 0xb1, 0xad, 0x69, 0x6d }, - { 0xe1, 0x59, 0x0d, 0x58, 0x5a, 0x3d, 0x39, 0xf7, 0xcb, 0x59, 0x9a, 0xbd, 0x47, 0x90, 0x70, 0x96, 0x64, 0x09, 0xa6, 0x84, 0x6d, 0x43, 0x77, 0xac, 0xf4, 0x47, 0x1d, 0x06, 0x5d, 0x5d, 0xb9, 0x41, 0x29, 0xcc, 0x9b, 0xe9, 0x25, 0x73, 0xb0, 0x5e, 0xd2, 0x26, 0xbe, 0x1e, 0x9b, 0x7c, 0xb0, 0xca, 0xbe, 0x87, 0x91, 0x85, 0x89, 0xf8, 0x0d, 0xad, 0xd4, 0xef, 0x5e, 0xf2, 0x5a, 0x93, 0xd2, 0x8e }, - { 0xf8, 0xf3, 0x72, 0x6a, 0xc5, 0xa2, 0x6c, 0xc8, 0x01, 0x32, 0x49, 0x3a, 0x6f, 0xed, 0xcb, 0x0e, 0x60, 0x76, 0x0c, 0x09, 0xcf, 0xc8, 0x4c, 0xad, 0x17, 0x81, 0x75, 0x98, 0x68, 0x19, 0x66, 0x5e, 0x76, 0x84, 0x2d, 0x7b, 0x9f, 0xed, 0xf7, 0x6d, 0xdd, 0xeb, 0xf5, 0xd3, 0xf5, 0x6f, 0xaa, 0xad, 0x44, 0x77, 0x58, 0x7a, 0xf2, 0x16, 0x06, 0xd3, 0x96, 0xae, 0x57, 0x0d, 0x8e, 0x71, 0x9a, 0xf2 }, - { 0x30, 0x18, 0x60, 0x55, 0xc0, 0x79, 0x49, 0x94, 0x81, 0x83, 0xc8, 0x50, 0xe9, 0xa7, 0x56, 0xcc, 0x09, 0x93, 0x7e, 0x24, 0x7d, 0x9d, 0x92, 0x8e, 0x86, 0x9e, 0x20, 0xba, 0xfc, 0x3c, 0xd9, 0x72, 0x17, 0x19, 0xd3, 0x4e, 0x04, 0xa0, 0x89, 0x9b, 0x92, 0xc7, 0x36, 0x08, 0x45, 0x50, 0x18, 0x68, 0x86, 0xef, 0xba, 0x2e, 0x79, 0x0d, 0x8b, 0xe6, 0xeb, 0xf0, 0x40, 0xb2, 0x09, 0xc4, 0x39, 0xa4 }, - { 0xf3, 0xc4, 0x27, 0x6c, 0xb8, 0x63, 0x63, 0x77, 0x12, 0xc2, 0x41, 0xc4, 0x44, 0xc5, 0xcc, 0x1e, 0x35, 0x54, 0xe0, 0xfd, 0xdb, 0x17, 0x4d, 0x03, 0x58, 0x19, 0xdd, 0x83, 0xeb, 0x70, 0x0b, 0x4c, 0xe8, 0x8d, 0xf3, 0xab, 0x38, 0x41, 0xba, 0x02, 0x08, 0x5e, 0x1a, 0x99, 0xb4, 0xe1, 0x73, 0x10, 0xc5, 0x34, 0x10, 0x75, 0xc0, 0x45, 0x8b, 0xa3, 0x76, 0xc9, 0x5a, 0x68, 0x18, 0xfb, 0xb3, 0xe2 }, - { 0x0a, 0xa0, 0x07, 0xc4, 0xdd, 0x9d, 0x58, 0x32, 0x39, 0x30, 0x40, 0xa1, 0x58, 0x3c, 0x93, 0x0b, 0xca, 0x7d, 0xc5, 0xe7, 0x7e, 0xa5, 0x3a, 0xdd, 0x7e, 0x2b, 0x3f, 0x7c, 0x8e, 0x23, 0x13, 0x68, 0x04, 0x35, 0x20, 0xd4, 0xa3, 0xef, 0x53, 0xc9, 0x69, 0xb6, 0xbb, 0xfd, 0x02, 0x59, 0x46, 0xf6, 0x32, 0xbd, 0x7f, 0x76, 0x5d, 0x53, 0xc2, 0x10, 0x03, 0xb8, 0xf9, 0x83, 0xf7, 0x5e, 0x2a, 0x6a }, - { 0x08, 0xe9, 0x46, 0x47, 0x20, 0x53, 0x3b, 0x23, 0xa0, 0x4e, 0xc2, 0x4f, 0x7a, 0xe8, 0xc1, 0x03, 0x14, 0x5f, 0x76, 0x53, 0x87, 0xd7, 0x38, 0x77, 0x7d, 0x3d, 0x34, 0x34, 0x77, 0xfd, 0x1c, 0x58, 0xdb, 0x05, 0x21, 0x42, 0xca, 0xb7, 0x54, 0xea, 0x67, 0x43, 0x78, 0xe1, 0x87, 0x66, 0xc5, 0x35, 0x42, 0xf7, 0x19, 0x70, 0x17, 0x1c, 0xc4, 0xf8, 0x16, 0x94, 0x24, 0x6b, 0x71, 0x7d, 0x75, 0x64 }, - { 0xd3, 0x7f, 0xf7, 0xad, 0x29, 0x79, 0x93, 0xe7, 0xec, 0x21, 0xe0, 0xf1, 0xb4, 0xb5, 0xae, 0x71, 0x9c, 0xdc, 0x83, 0xc5, 0xdb, 0x68, 0x75, 0x27, 0xf2, 0x75, 0x16, 0xcb, 0xff, 0xa8, 0x22, 0x88, 0x8a, 0x68, 0x10, 0xee, 0x5c, 0x1c, 0xa7, 0xbf, 0xe3, 0x32, 0x11, 0x19, 0xbe, 0x1a, 0xb7, 0xbf, 0xa0, 0xa5, 0x02, 0x67, 0x1c, 0x83, 0x29, 0x49, 0x4d, 0xf7, 0xad, 0x6f, 0x52, 0x2d, 0x44, 0x0f }, - { 0xdd, 0x90, 0x42, 0xf6, 0xe4, 0x64, 0xdc, 0xf8, 0x6b, 0x12, 0x62, 0xf6, 0xac, 0xcf, 0xaf, 0xbd, 0x8c, 0xfd, 0x90, 0x2e, 0xd3, 0xed, 0x89, 0xab, 0xf7, 0x8f, 0xfa, 0x48, 0x2d, 0xbd, 0xee, 0xb6, 0x96, 0x98, 0x42, 0x39, 0x4c, 0x9a, 0x11, 0x68, 0xae, 0x3d, 0x48, 0x1a, 0x01, 0x78, 0x42, 0xf6, 0x60, 0x00, 0x2d, 0x42, 0x44, 0x7c, 0x6b, 0x22, 0xf7, 0xb7, 0x2f, 0x21, 0xaa, 0xe0, 0x21, 0xc9 }, - { 0xbd, 0x96, 0x5b, 0xf3, 0x1e, 0x87, 0xd7, 0x03, 0x27, 0x53, 0x6f, 0x2a, 0x34, 0x1c, 0xeb, 0xc4, 0x76, 0x8e, 0xca, 0x27, 0x5f, 0xa0, 0x5e, 0xf9, 0x8f, 0x7f, 0x1b, 0x71, 0xa0, 0x35, 0x12, 0x98, 0xde, 0x00, 0x6f, 0xba, 0x73, 0xfe, 0x67, 0x33, 0xed, 0x01, 0xd7, 0x58, 0x01, 0xb4, 0xa9, 0x28, 0xe5, 0x42, 0x31, 0xb3, 0x8e, 0x38, 0xc5, 0x62, 0xb2, 0xe3, 0x3e, 0xa1, 0x28, 0x49, 0x92, 0xfa }, - { 0x65, 0x67, 0x6d, 0x80, 0x06, 0x17, 0x97, 0x2f, 0xbd, 0x87, 0xe4, 0xb9, 0x51, 0x4e, 0x1c, 0x67, 0x40, 0x2b, 0x7a, 0x33, 0x10, 0x96, 0xd3, 0xbf, 0xac, 0x22, 0xf1, 0xab, 0xb9, 0x53, 0x74, 0xab, 0xc9, 0x42, 0xf1, 0x6e, 0x9a, 0xb0, 0xea, 0xd3, 0x3b, 0x87, 0xc9, 0x19, 0x68, 0xa6, 0xe5, 0x09, 0xe1, 0x19, 0xff, 0x07, 0x78, 0x7b, 0x3e, 0xf4, 0x83, 0xe1, 0xdc, 0xdc, 0xcf, 0x6e, 0x30, 0x22 }, - { 0x93, 0x9f, 0xa1, 0x89, 0x69, 0x9c, 0x5d, 0x2c, 0x81, 0xdd, 0xd1, 0xff, 0xc1, 0xfa, 0x20, 0x7c, 0x97, 0x0b, 0x6a, 0x36, 0x85, 0xbb, 0x29, 0xce, 0x1d, 0x3e, 0x99, 0xd4, 0x2f, 0x2f, 0x74, 0x42, 0xda, 0x53, 0xe9, 0x5a, 0x72, 0x90, 0x73, 0x14, 0xf4, 0x58, 0x83, 0x99, 0xa3, 0xff, 0x5b, 0x0a, 0x92, 0xbe, 0xb3, 0xf6, 0xbe, 0x26, 0x94, 0xf9, 0xf8, 0x6e, 0xcf, 0x29, 0x52, 0xd5, 0xb4, 0x1c }, - { 0xc5, 0x16, 0x54, 0x17, 0x01, 0x86, 0x3f, 0x91, 0x00, 0x5f, 0x31, 0x41, 0x08, 0xce, 0xec, 0xe3, 0xc6, 0x43, 0xe0, 0x4f, 0xc8, 0xc4, 0x2f, 0xd2, 0xff, 0x55, 0x62, 0x20, 0xe6, 0x16, 0xaa, 0xa6, 0xa4, 0x8a, 0xeb, 0x97, 0xa8, 0x4b, 0xad, 0x74, 0x78, 0x2e, 0x8d, 0xff, 0x96, 0xa1, 0xa2, 0xfa, 0x94, 0x93, 0x39, 0xd7, 0x22, 0xed, 0xca, 0xa3, 0x2b, 0x57, 0x06, 0x70, 0x41, 0xdf, 0x88, 0xcc }, - { 0x98, 0x7f, 0xd6, 0xe0, 0xd6, 0x85, 0x7c, 0x55, 0x3e, 0xae, 0xbb, 0x3d, 0x34, 0x97, 0x0a, 0x2c, 0x2f, 0x6e, 0x89, 0xa3, 0x54, 0x8f, 0x49, 0x25, 0x21, 0x72, 0x2b, 0x80, 0xa1, 0xc2, 0x1a, 0x15, 0x38, 0x92, 0x34, 0x6d, 0x2c, 0xba, 0x64, 0x44, 0x21, 0x2d, 0x56, 0xda, 0x9a, 0x26, 0xe3, 0x24, 0xdc, 0xcb, 0xc0, 0xdc, 0xde, 0x85, 0xd4, 0xd2, 0xee, 0x43, 0x99, 0xee, 0xc5, 0xa6, 0x4e, 0x8f }, - { 0xae, 0x56, 0xde, 0xb1, 0xc2, 0x32, 0x8d, 0x9c, 0x40, 0x17, 0x70, 0x6b, 0xce, 0x6e, 0x99, 0xd4, 0x13, 0x49, 0x05, 0x3b, 0xa9, 0xd3, 0x36, 0xd6, 0x77, 0xc4, 0xc2, 0x7d, 0x9f, 0xd5, 0x0a, 0xe6, 0xae, 0xe1, 0x7e, 0x85, 0x31, 0x54, 0xe1, 0xf4, 0xfe, 0x76, 0x72, 0x34, 0x6d, 0xa2, 0xea, 0xa3, 0x1e, 0xea, 0x53, 0xfc, 0xf2, 0x4a, 0x22, 0x80, 0x4f, 0x11, 0xd0, 0x3d, 0xa6, 0xab, 0xfc, 0x2b }, - { 0x49, 0xd6, 0xa6, 0x08, 0xc9, 0xbd, 0xe4, 0x49, 0x18, 0x70, 0x49, 0x85, 0x72, 0xac, 0x31, 0xaa, 0xc3, 0xfa, 0x40, 0x93, 0x8b, 0x38, 0xa7, 0x81, 0x8f, 0x72, 0x38, 0x3e, 0xb0, 0x40, 0xad, 0x39, 0x53, 0x2b, 0xc0, 0x65, 0x71, 0xe1, 0x3d, 0x76, 0x7e, 0x69, 0x45, 0xab, 0x77, 0xc0, 0xbd, 0xc3, 0xb0, 0x28, 0x42, 0x53, 0x34, 0x3f, 0x9f, 0x6c, 0x12, 0x44, 0xeb, 0xf2, 0xff, 0x0d, 0xf8, 0x66 }, - { 0xda, 0x58, 0x2a, 0xd8, 0xc5, 0x37, 0x0b, 0x44, 0x69, 0xaf, 0x86, 0x2a, 0xa6, 0x46, 0x7a, 0x22, 0x93, 0xb2, 0xb2, 0x8b, 0xd8, 0x0a, 0xe0, 0xe9, 0x1f, 0x42, 0x5a, 0xd3, 0xd4, 0x72, 0x49, 0xfd, 0xf9, 0x88, 0x25, 0xcc, 0x86, 0xf1, 0x40, 0x28, 0xc3, 0x30, 0x8c, 0x98, 0x04, 0xc7, 0x8b, 0xfe, 0xee, 0xee, 0x46, 0x14, 0x44, 0xce, 0x24, 0x36, 0x87, 0xe1, 0xa5, 0x05, 0x22, 0x45, 0x6a, 0x1d }, - { 0xd5, 0x26, 0x6a, 0xa3, 0x33, 0x11, 0x94, 0xae, 0xf8, 0x52, 0xee, 0xd8, 0x6d, 0x7b, 0x5b, 0x26, 0x33, 0xa0, 0xaf, 0x1c, 0x73, 0x59, 0x06, 0xf2, 0xe1, 0x32, 0x79, 0xf1, 0x49, 0x31, 0xa9, 0xfc, 0x3b, 0x0e, 0xac, 0x5c, 0xe9, 0x24, 0x52, 0x73, 0xbd, 0x1a, 0xa9, 0x29, 0x05, 0xab, 0xe1, 0x62, 0x78, 0xef, 0x7e, 0xfd, 0x47, 0x69, 0x47, 0x89, 0xa7, 0x28, 0x3b, 0x77, 0xda, 0x3c, 0x70, 0xf8 }, - { 0x29, 0x62, 0x73, 0x4c, 0x28, 0x25, 0x21, 0x86, 0xa9, 0xa1, 0x11, 0x1c, 0x73, 0x2a, 0xd4, 0xde, 0x45, 0x06, 0xd4, 0xb4, 0x48, 0x09, 0x16, 0x30, 0x3e, 0xb7, 0x99, 0x1d, 0x65, 0x9c, 0xcd, 0xa0, 0x7a, 0x99, 0x11, 0x91, 0x4b, 0xc7, 0x5c, 0x41, 0x8a, 0xb7, 0xa4, 0x54, 0x17, 0x57, 0xad, 0x05, 0x47, 0x96, 0xe2, 0x67, 0x97, 0xfe, 0xaf, 0x36, 0xe9, 0xf6, 0xad, 0x43, 0xf1, 0x4b, 0x35, 0xa4 }, - { 0xe8, 0xb7, 0x9e, 0xc5, 0xd0, 0x6e, 0x11, 0x1b, 0xdf, 0xaf, 0xd7, 0x1e, 0x9f, 0x57, 0x60, 0xf0, 0x0a, 0xc8, 0xac, 0x5d, 0x8b, 0xf7, 0x68, 0xf9, 0xff, 0x6f, 0x08, 0xb8, 0xf0, 0x26, 0x09, 0x6b, 0x1c, 0xc3, 0xa4, 0xc9, 0x73, 0x33, 0x30, 0x19, 0xf1, 0xe3, 0x55, 0x3e, 0x77, 0xda, 0x3f, 0x98, 0xcb, 0x9f, 0x54, 0x2e, 0x0a, 0x90, 0xe5, 0xf8, 0xa9, 0x40, 0xcc, 0x58, 0xe5, 0x98, 0x44, 0xb3 }, - { 0xdf, 0xb3, 0x20, 0xc4, 0x4f, 0x9d, 0x41, 0xd1, 0xef, 0xdc, 0xc0, 0x15, 0xf0, 0x8d, 0xd5, 0x53, 0x9e, 0x52, 0x6e, 0x39, 0xc8, 0x7d, 0x50, 0x9a, 0xe6, 0x81, 0x2a, 0x96, 0x9e, 0x54, 0x31, 0xbf, 0x4f, 0xa7, 0xd9, 0x1f, 0xfd, 0x03, 0xb9, 0x81, 0xe0, 0xd5, 0x44, 0xcf, 0x72, 0xd7, 0xb1, 0xc0, 0x37, 0x4f, 0x88, 0x01, 0x48, 0x2e, 0x6d, 0xea, 0x2e, 0xf9, 0x03, 0x87, 0x7e, 0xba, 0x67, 0x5e }, - { 0xd8, 0x86, 0x75, 0x11, 0x8f, 0xdb, 0x55, 0xa5, 0xfb, 0x36, 0x5a, 0xc2, 0xaf, 0x1d, 0x21, 0x7b, 0xf5, 0x26, 0xce, 0x1e, 0xe9, 0xc9, 0x4b, 0x2f, 0x00, 0x90, 0xb2, 0xc5, 0x8a, 0x06, 0xca, 0x58, 0x18, 0x7d, 0x7f, 0xe5, 0x7c, 0x7b, 0xed, 0x9d, 0x26, 0xfc, 0xa0, 0x67, 0xb4, 0x11, 0x0e, 0xef, 0xcd, 0x9a, 0x0a, 0x34, 0x5d, 0xe8, 0x72, 0xab, 0xe2, 0x0d, 0xe3, 0x68, 0x00, 0x1b, 0x07, 0x45 }, - { 0xb8, 0x93, 0xf2, 0xfc, 0x41, 0xf7, 0xb0, 0xdd, 0x6e, 0x2f, 0x6a, 0xa2, 0xe0, 0x37, 0x0c, 0x0c, 0xff, 0x7d, 0xf0, 0x9e, 0x3a, 0xcf, 0xcc, 0x0e, 0x92, 0x0b, 0x6e, 0x6f, 0xad, 0x0e, 0xf7, 0x47, 0xc4, 0x06, 0x68, 0x41, 0x7d, 0x34, 0x2b, 0x80, 0xd2, 0x35, 0x1e, 0x8c, 0x17, 0x5f, 0x20, 0x89, 0x7a, 0x06, 0x2e, 0x97, 0x65, 0xe6, 0xc6, 0x7b, 0x53, 0x9b, 0x6b, 0xa8, 0xb9, 0x17, 0x05, 0x45 }, - { 0x6c, 0x67, 0xec, 0x56, 0x97, 0xac, 0xcd, 0x23, 0x5c, 0x59, 0xb4, 0x86, 0xd7, 0xb7, 0x0b, 0xae, 0xed, 0xcb, 0xd4, 0xaa, 0x64, 0xeb, 0xd4, 0xee, 0xf3, 0xc7, 0xea, 0xc1, 0x89, 0x56, 0x1a, 0x72, 0x62, 0x50, 0xae, 0xc4, 0xd4, 0x8c, 0xad, 0xca, 0xfb, 0xbe, 0x2c, 0xe3, 0xc1, 0x6c, 0xe2, 0xd6, 0x91, 0xa8, 0xcc, 0xe0, 0x6e, 0x88, 0x79, 0x55, 0x6d, 0x44, 0x83, 0xed, 0x71, 0x65, 0xc0, 0x63 }, - { 0xf1, 0xaa, 0x2b, 0x04, 0x4f, 0x8f, 0x0c, 0x63, 0x8a, 0x3f, 0x36, 0x2e, 0x67, 0x7b, 0x5d, 0x89, 0x1d, 0x6f, 0xd2, 0xab, 0x07, 0x65, 0xf6, 0xee, 0x1e, 0x49, 0x87, 0xde, 0x05, 0x7e, 0xad, 0x35, 0x78, 0x83, 0xd9, 0xb4, 0x05, 0xb9, 0xd6, 0x09, 0xee, 0xa1, 0xb8, 0x69, 0xd9, 0x7f, 0xb1, 0x6d, 0x9b, 0x51, 0x01, 0x7c, 0x55, 0x3f, 0x3b, 0x93, 0xc0, 0xa1, 0xe0, 0xf1, 0x29, 0x6f, 0xed, 0xcd }, - { 0xcb, 0xaa, 0x25, 0x95, 0x72, 0xd4, 0xae, 0xbf, 0xc1, 0x91, 0x7a, 0xcd, 0xdc, 0x58, 0x2b, 0x9f, 0x8d, 0xfa, 0xa9, 0x28, 0xa1, 0x98, 0xca, 0x7a, 0xcd, 0x0f, 0x2a, 0xa7, 0x6a, 0x13, 0x4a, 0x90, 0x25, 0x2e, 0x62, 0x98, 0xa6, 0x5b, 0x08, 0x18, 0x6a, 0x35, 0x0d, 0x5b, 0x76, 0x26, 0x69, 0x9f, 0x8c, 0xb7, 0x21, 0xa3, 0xea, 0x59, 0x21, 0xb7, 0x53, 0xae, 0x3a, 0x2d, 0xce, 0x24, 0xba, 0x3a }, - { 0xfa, 0x15, 0x49, 0xc9, 0x79, 0x6c, 0xd4, 0xd3, 0x03, 0xdc, 0xf4, 0x52, 0xc1, 0xfb, 0xd5, 0x74, 0x4f, 0xd9, 0xb9, 0xb4, 0x70, 0x03, 0xd9, 0x20, 0xb9, 0x2d, 0xe3, 0x48, 0x39, 0xd0, 0x7e, 0xf2, 0xa2, 0x9d, 0xed, 0x68, 0xf6, 0xfc, 0x9e, 0x6c, 0x45, 0xe0, 0x71, 0xa2, 0xe4, 0x8b, 0xd5, 0x0c, 0x50, 0x84, 0xe9, 0x6b, 0x65, 0x7d, 0xd0, 0x40, 0x40, 0x45, 0xa1, 0xdd, 0xef, 0xe2, 0x82, 0xed }, - { 0x5c, 0xf2, 0xac, 0x89, 0x7a, 0xb4, 0x44, 0xdc, 0xb5, 0xc8, 0xd8, 0x7c, 0x49, 0x5d, 0xbd, 0xb3, 0x4e, 0x18, 0x38, 0xb6, 0xb6, 0x29, 0x42, 0x7c, 0xaa, 0x51, 0x70, 0x2a, 0xd0, 0xf9, 0x68, 0x85, 0x25, 0xf1, 0x3b, 0xec, 0x50, 0x3a, 0x3c, 0x3a, 0x2c, 0x80, 0xa6, 0x5e, 0x0b, 0x57, 0x15, 0xe8, 0xaf, 0xab, 0x00, 0xff, 0xa5, 0x6e, 0xc4, 0x55, 0xa4, 0x9a, 0x1a, 0xd3, 0x0a, 0xa2, 0x4f, 0xcd }, - { 0x9a, 0xaf, 0x80, 0x20, 0x7b, 0xac, 0xe1, 0x7b, 0xb7, 0xab, 0x14, 0x57, 0x57, 0xd5, 0x69, 0x6b, 0xde, 0x32, 0x40, 0x6e, 0xf2, 0x2b, 0x44, 0x29, 0x2e, 0xf6, 0x5d, 0x45, 0x19, 0xc3, 0xbb, 0x2a, 0xd4, 0x1a, 0x59, 0xb6, 0x2c, 0xc3, 0xe9, 0x4b, 0x6f, 0xa9, 0x6d, 0x32, 0xa7, 0xfa, 0xad, 0xae, 0x28, 0xaf, 0x7d, 0x35, 0x09, 0x72, 0x19, 0xaa, 0x3f, 0xd8, 0xcd, 0xa3, 0x1e, 0x40, 0xc2, 0x75 }, - { 0xaf, 0x88, 0xb1, 0x63, 0x40, 0x2c, 0x86, 0x74, 0x5c, 0xb6, 0x50, 0xc2, 0x98, 0x8f, 0xb9, 0x52, 0x11, 0xb9, 0x4b, 0x03, 0xef, 0x29, 0x0e, 0xed, 0x96, 0x62, 0x03, 0x42, 0x41, 0xfd, 0x51, 0xcf, 0x39, 0x8f, 0x80, 0x73, 0xe3, 0x69, 0x35, 0x4c, 0x43, 0xea, 0xe1, 0x05, 0x2f, 0x9b, 0x63, 0xb0, 0x81, 0x91, 0xca, 0xa1, 0x38, 0xaa, 0x54, 0xfe, 0xa8, 0x89, 0xcc, 0x70, 0x24, 0x23, 0x68, 0x97 }, - { 0x48, 0xfa, 0x7d, 0x64, 0xe1, 0xce, 0xee, 0x27, 0xb9, 0x86, 0x4d, 0xb5, 0xad, 0xa4, 0xb5, 0x3d, 0x00, 0xc9, 0xbc, 0x76, 0x26, 0x55, 0x58, 0x13, 0xd3, 0xcd, 0x67, 0x30, 0xab, 0x3c, 0xc0, 0x6f, 0xf3, 0x42, 0xd7, 0x27, 0x90, 0x5e, 0x33, 0x17, 0x1b, 0xde, 0x6e, 0x84, 0x76, 0xe7, 0x7f, 0xb1, 0x72, 0x08, 0x61, 0xe9, 0x4b, 0x73, 0xa2, 0xc5, 0x38, 0xd2, 0x54, 0x74, 0x62, 0x85, 0xf4, 0x30 }, - { 0x0e, 0x6f, 0xd9, 0x7a, 0x85, 0xe9, 0x04, 0xf8, 0x7b, 0xfe, 0x85, 0xbb, 0xeb, 0x34, 0xf6, 0x9e, 0x1f, 0x18, 0x10, 0x5c, 0xf4, 0xed, 0x4f, 0x87, 0xae, 0xc3, 0x6c, 0x6e, 0x8b, 0x5f, 0x68, 0xbd, 0x2a, 0x6f, 0x3d, 0xc8, 0xa9, 0xec, 0xb2, 0xb6, 0x1d, 0xb4, 0xee, 0xdb, 0x6b, 0x2e, 0xa1, 0x0b, 0xf9, 0xcb, 0x02, 0x51, 0xfb, 0x0f, 0x8b, 0x34, 0x4a, 0xbf, 0x7f, 0x36, 0x6b, 0x6d, 0xe5, 0xab }, - { 0x06, 0x62, 0x2d, 0xa5, 0x78, 0x71, 0x76, 0x28, 0x7f, 0xdc, 0x8f, 0xed, 0x44, 0x0b, 0xad, 0x18, 0x7d, 0x83, 0x00, 0x99, 0xc9, 0x4e, 0x6d, 0x04, 0xc8, 0xe9, 0xc9, 0x54, 0xcd, 0xa7, 0x0c, 0x8b, 0xb9, 0xe1, 0xfc, 0x4a, 0x6d, 0x0b, 0xaa, 0x83, 0x1b, 0x9b, 0x78, 0xef, 0x66, 0x48, 0x68, 0x1a, 0x48, 0x67, 0xa1, 0x1d, 0xa9, 0x3e, 0xe3, 0x6e, 0x5e, 0x6a, 0x37, 0xd8, 0x7f, 0xc6, 0x3f, 0x6f }, - { 0x1d, 0xa6, 0x77, 0x2b, 0x58, 0xfa, 0xbf, 0x9c, 0x61, 0xf6, 0x8d, 0x41, 0x2c, 0x82, 0xf1, 0x82, 0xc0, 0x23, 0x6d, 0x7d, 0x57, 0x5e, 0xf0, 0xb5, 0x8d, 0xd2, 0x24, 0x58, 0xd6, 0x43, 0xcd, 0x1d, 0xfc, 0x93, 0xb0, 0x38, 0x71, 0xc3, 0x16, 0xd8, 0x43, 0x0d, 0x31, 0x29, 0x95, 0xd4, 0x19, 0x7f, 0x08, 0x74, 0xc9, 0x91, 0x72, 0xba, 0x00, 0x4a, 0x01, 0xee, 0x29, 0x5a, 0xba, 0xc2, 0x4e, 0x46 }, - { 0x3c, 0xd2, 0xd9, 0x32, 0x0b, 0x7b, 0x1d, 0x5f, 0xb9, 0xaa, 0xb9, 0x51, 0xa7, 0x60, 0x23, 0xfa, 0x66, 0x7b, 0xe1, 0x4a, 0x91, 0x24, 0xe3, 0x94, 0x51, 0x39, 0x18, 0xa3, 0xf4, 0x40, 0x96, 0xae, 0x49, 0x04, 0xba, 0x0f, 0xfc, 0x15, 0x0b, 0x63, 0xbc, 0x7a, 0xb1, 0xee, 0xb9, 0xa6, 0xe2, 0x57, 0xe5, 0xc8, 0xf0, 0x00, 0xa7, 0x03, 0x94, 0xa5, 0xaf, 0xd8, 0x42, 0x71, 0x5d, 0xe1, 0x5f, 0x29 }, - { 0x04, 0xcd, 0xc1, 0x4f, 0x74, 0x34, 0xe0, 0xb4, 0xbe, 0x70, 0xcb, 0x41, 0xdb, 0x4c, 0x77, 0x9a, 0x88, 0xea, 0xef, 0x6a, 0xcc, 0xeb, 0xcb, 0x41, 0xf2, 0xd4, 0x2f, 0xff, 0xe7, 0xf3, 0x2a, 0x8e, 0x28, 0x1b, 0x5c, 0x10, 0x3a, 0x27, 0x02, 0x1d, 0x0d, 0x08, 0x36, 0x22, 0x50, 0x75, 0x3c, 0xdf, 0x70, 0x29, 0x21, 0x95, 0xa5, 0x3a, 0x48, 0x72, 0x8c, 0xeb, 0x58, 0x44, 0xc2, 0xd9, 0x8b, 0xab }, - { 0x90, 0x71, 0xb7, 0xa8, 0xa0, 0x75, 0xd0, 0x09, 0x5b, 0x8f, 0xb3, 0xae, 0x51, 0x13, 0x78, 0x57, 0x35, 0xab, 0x98, 0xe2, 0xb5, 0x2f, 0xaf, 0x91, 0xd5, 0xb8, 0x9e, 0x44, 0xaa, 0xc5, 0xb5, 0xd4, 0xeb, 0xbf, 0x91, 0x22, 0x3b, 0x0f, 0xf4, 0xc7, 0x19, 0x05, 0xda, 0x55, 0x34, 0x2e, 0x64, 0x65, 0x5d, 0x6e, 0xf8, 0xc8, 0x9a, 0x47, 0x68, 0xc3, 0xf9, 0x3a, 0x6d, 0xc0, 0x36, 0x6b, 0x5b, 0xc8 }, - { 0xeb, 0xb3, 0x02, 0x40, 0xdd, 0x96, 0xc7, 0xbc, 0x8d, 0x0a, 0xbe, 0x49, 0xaa, 0x4e, 0xdc, 0xbb, 0x4a, 0xfd, 0xc5, 0x1f, 0xf9, 0xaa, 0xf7, 0x20, 0xd3, 0xf9, 0xe7, 0xfb, 0xb0, 0xf9, 0xc6, 0xd6, 0x57, 0x13, 0x50, 0x50, 0x17, 0x69, 0xfc, 0x4e, 0xbd, 0x0b, 0x21, 0x41, 0x24, 0x7f, 0xf4, 0x00, 0xd4, 0xfd, 0x4b, 0xe4, 0x14, 0xed, 0xf3, 0x77, 0x57, 0xbb, 0x90, 0xa3, 0x2a, 0xc5, 0xc6, 0x5a }, - { 0x85, 0x32, 0xc5, 0x8b, 0xf3, 0xc8, 0x01, 0x5d, 0x9d, 0x1c, 0xbe, 0x00, 0xee, 0xf1, 0xf5, 0x08, 0x2f, 0x8f, 0x36, 0x32, 0xfb, 0xe9, 0xf1, 0xed, 0x4f, 0x9d, 0xfb, 0x1f, 0xa7, 0x9e, 0x82, 0x83, 0x06, 0x6d, 0x77, 0xc4, 0x4c, 0x4a, 0xf9, 0x43, 0xd7, 0x6b, 0x30, 0x03, 0x64, 0xae, 0xcb, 0xd0, 0x64, 0x8c, 0x8a, 0x89, 0x39, 0xbd, 0x20, 0x41, 0x23, 0xf4, 0xb5, 0x62, 0x60, 0x42, 0x2d, 0xec }, - { 0xfe, 0x98, 0x46, 0xd6, 0x4f, 0x7c, 0x77, 0x08, 0x69, 0x6f, 0x84, 0x0e, 0x2d, 0x76, 0xcb, 0x44, 0x08, 0xb6, 0x59, 0x5c, 0x2f, 0x81, 0xec, 0x6a, 0x28, 0xa7, 0xf2, 0xf2, 0x0c, 0xb8, 0x8c, 0xfe, 0x6a, 0xc0, 0xb9, 0xe9, 0xb8, 0x24, 0x4f, 0x08, 0xbd, 0x70, 0x95, 0xc3, 0x50, 0xc1, 0xd0, 0x84, 0x2f, 0x64, 0xfb, 0x01, 0xbb, 0x7f, 0x53, 0x2d, 0xfc, 0xd4, 0x73, 0x71, 0xb0, 0xae, 0xeb, 0x79 }, - { 0x28, 0xf1, 0x7e, 0xa6, 0xfb, 0x6c, 0x42, 0x09, 0x2d, 0xc2, 0x64, 0x25, 0x7e, 0x29, 0x74, 0x63, 0x21, 0xfb, 0x5b, 0xda, 0xea, 0x98, 0x73, 0xc2, 0xa7, 0xfa, 0x9d, 0x8f, 0x53, 0x81, 0x8e, 0x89, 0x9e, 0x16, 0x1b, 0xc7, 0x7d, 0xfe, 0x80, 0x90, 0xaf, 0xd8, 0x2b, 0xf2, 0x26, 0x6c, 0x5c, 0x1b, 0xc9, 0x30, 0xa8, 0xd1, 0x54, 0x76, 0x24, 0x43, 0x9e, 0x66, 0x2e, 0xf6, 0x95, 0xf2, 0x6f, 0x24 }, - { 0xec, 0x6b, 0x7d, 0x7f, 0x03, 0x0d, 0x48, 0x50, 0xac, 0xae, 0x3c, 0xb6, 0x15, 0xc2, 0x1d, 0xd2, 0x52, 0x06, 0xd6, 0x3e, 0x84, 0xd1, 0xdb, 0x8d, 0x95, 0x73, 0x70, 0x73, 0x7b, 0xa0, 0xe9, 0x84, 0x67, 0xea, 0x0c, 0xe2, 0x74, 0xc6, 0x61, 0x99, 0x90, 0x1e, 0xae, 0xc1, 0x8a, 0x08, 0x52, 0x57, 0x15, 0xf5, 0x3b, 0xfd, 0xb0, 0xaa, 0xcb, 0x61, 0x3d, 0x34, 0x2e, 0xbd, 0xce, 0xed, 0xdc, 0x3b }, - { 0xb4, 0x03, 0xd3, 0x69, 0x1c, 0x03, 0xb0, 0xd3, 0x41, 0x8d, 0xf3, 0x27, 0xd5, 0x86, 0x0d, 0x34, 0xbb, 0xfc, 0xc4, 0x51, 0x9b, 0xfb, 0xce, 0x36, 0xbf, 0x33, 0xb2, 0x08, 0x38, 0x5f, 0xad, 0xb9, 0x18, 0x6b, 0xc7, 0x8a, 0x76, 0xc4, 0x89, 0xd8, 0x9f, 0xd5, 0x7e, 0x7d, 0xc7, 0x54, 0x12, 0xd2, 0x3b, 0xcd, 0x1d, 0xae, 0x84, 0x70, 0xce, 0x92, 0x74, 0x75, 0x4b, 0xb8, 0x58, 0x5b, 0x13, 0xc5 }, - { 0x31, 0xfc, 0x79, 0x73, 0x8b, 0x87, 0x72, 0xb3, 0xf5, 0x5c, 0xd8, 0x17, 0x88, 0x13, 0xb3, 0xb5, 0x2d, 0x0d, 0xb5, 0xa4, 0x19, 0xd3, 0x0b, 0xa9, 0x49, 0x5c, 0x4b, 0x9d, 0xa0, 0x21, 0x9f, 0xac, 0x6d, 0xf8, 0xe7, 0xc2, 0x3a, 0x81, 0x15, 0x51, 0xa6, 0x2b, 0x82, 0x7f, 0x25, 0x6e, 0xcd, 0xb8, 0x12, 0x4a, 0xc8, 0xa6, 0x79, 0x2c, 0xcf, 0xec, 0xc3, 0xb3, 0x01, 0x27, 0x22, 0xe9, 0x44, 0x63 }, - { 0xbb, 0x20, 0x39, 0xec, 0x28, 0x70, 0x91, 0xbc, 0xc9, 0x64, 0x2f, 0xc9, 0x00, 0x49, 0xe7, 0x37, 0x32, 0xe0, 0x2e, 0x57, 0x7e, 0x28, 0x62, 0xb3, 0x22, 0x16, 0xae, 0x9b, 0xed, 0xcd, 0x73, 0x0c, 0x4c, 0x28, 0x4e, 0xf3, 0x96, 0x8c, 0x36, 0x8b, 0x7d, 0x37, 0x58, 0x4f, 0x97, 0xbd, 0x4b, 0x4d, 0xc6, 0xef, 0x61, 0x27, 0xac, 0xfe, 0x2e, 0x6a, 0xe2, 0x50, 0x91, 0x24, 0xe6, 0x6c, 0x8a, 0xf4 }, - { 0xf5, 0x3d, 0x68, 0xd1, 0x3f, 0x45, 0xed, 0xfc, 0xb9, 0xbd, 0x41, 0x5e, 0x28, 0x31, 0xe9, 0x38, 0x35, 0x0d, 0x53, 0x80, 0xd3, 0x43, 0x22, 0x78, 0xfc, 0x1c, 0x0c, 0x38, 0x1f, 0xcb, 0x7c, 0x65, 0xc8, 0x2d, 0xaf, 0xe0, 0x51, 0xd8, 0xc8, 0xb0, 0xd4, 0x4e, 0x09, 0x74, 0xa0, 0xe5, 0x9e, 0xc7, 0xbf, 0x7e, 0xd0, 0x45, 0x9f, 0x86, 0xe9, 0x6f, 0x32, 0x9f, 0xc7, 0x97, 0x52, 0x51, 0x0f, 0xd3 }, - { 0x8d, 0x56, 0x8c, 0x79, 0x84, 0xf0, 0xec, 0xdf, 0x76, 0x40, 0xfb, 0xc4, 0x83, 0xb5, 0xd8, 0xc9, 0xf8, 0x66, 0x34, 0xf6, 0xf4, 0x32, 0x91, 0x84, 0x1b, 0x30, 0x9a, 0x35, 0x0a, 0xb9, 0xc1, 0x13, 0x7d, 0x24, 0x06, 0x6b, 0x09, 0xda, 0x99, 0x44, 0xba, 0xc5, 0x4d, 0x5b, 0xb6, 0x58, 0x0d, 0x83, 0x60, 0x47, 0xaa, 0xc7, 0x4a, 0xb7, 0x24, 0xb8, 0x87, 0xeb, 0xf9, 0x3d, 0x4b, 0x32, 0xec, 0xa9 }, - { 0xc0, 0xb6, 0x5c, 0xe5, 0xa9, 0x6f, 0xf7, 0x74, 0xc4, 0x56, 0xca, 0xc3, 0xb5, 0xf2, 0xc4, 0xcd, 0x35, 0x9b, 0x4f, 0xf5, 0x3e, 0xf9, 0x3a, 0x3d, 0xa0, 0x77, 0x8b, 0xe4, 0x90, 0x0d, 0x1e, 0x8d, 0xa1, 0x60, 0x1e, 0x76, 0x9e, 0x8f, 0x1b, 0x02, 0xd2, 0xa2, 0xf8, 0xc5, 0xb9, 0xfa, 0x10, 0xb4, 0x4f, 0x1c, 0x18, 0x69, 0x85, 0x46, 0x8f, 0xee, 0xb0, 0x08, 0x73, 0x02, 0x83, 0xa6, 0x65, 0x7d }, - { 0x49, 0x00, 0xbb, 0xa6, 0xf5, 0xfb, 0x10, 0x3e, 0xce, 0x8e, 0xc9, 0x6a, 0xda, 0x13, 0xa5, 0xc3, 0xc8, 0x54, 0x88, 0xe0, 0x55, 0x51, 0xda, 0x6b, 0x6b, 0x33, 0xd9, 0x88, 0xe6, 0x11, 0xec, 0x0f, 0xe2, 0xe3, 0xc2, 0xaa, 0x48, 0xea, 0x6a, 0xe8, 0x98, 0x6a, 0x3a, 0x23, 0x1b, 0x22, 0x3c, 0x5d, 0x27, 0xce, 0xc2, 0xea, 0xdd, 0xe9, 0x1c, 0xe0, 0x79, 0x81, 0xee, 0x65, 0x28, 0x62, 0xd1, 0xe4 }, - { 0xc7, 0xf5, 0xc3, 0x7c, 0x72, 0x85, 0xf9, 0x27, 0xf7, 0x64, 0x43, 0x41, 0x4d, 0x43, 0x57, 0xff, 0x78, 0x96, 0x47, 0xd7, 0xa0, 0x05, 0xa5, 0xa7, 0x87, 0xe0, 0x3c, 0x34, 0x6b, 0x57, 0xf4, 0x9f, 0x21, 0xb6, 0x4f, 0xa9, 0xcf, 0x4b, 0x7e, 0x45, 0x57, 0x3e, 0x23, 0x04, 0x90, 0x17, 0x56, 0x71, 0x21, 0xa9, 0xc3, 0xd4, 0xb2, 0xb7, 0x3e, 0xc5, 0xe9, 0x41, 0x35, 0x77, 0x52, 0x5d, 0xb4, 0x5a }, - { 0xec, 0x70, 0x96, 0x33, 0x07, 0x36, 0xfd, 0xb2, 0xd6, 0x4b, 0x56, 0x53, 0xe7, 0x47, 0x5d, 0xa7, 0x46, 0xc2, 0x3a, 0x46, 0x13, 0xa8, 0x26, 0x87, 0xa2, 0x80, 0x62, 0xd3, 0x23, 0x63, 0x64, 0x28, 0x4a, 0xc0, 0x17, 0x20, 0xff, 0xb4, 0x06, 0xcf, 0xe2, 0x65, 0xc0, 0xdf, 0x62, 0x6a, 0x18, 0x8c, 0x9e, 0x59, 0x63, 0xac, 0xe5, 0xd3, 0xd5, 0xbb, 0x36, 0x3e, 0x32, 0xc3, 0x8c, 0x21, 0x90, 0xa6 }, - { 0x82, 0xe7, 0x44, 0xc7, 0x5f, 0x46, 0x49, 0xec, 0x52, 0xb8, 0x07, 0x71, 0xa7, 0x7d, 0x47, 0x5a, 0x3b, 0xc0, 0x91, 0x98, 0x95, 0x56, 0x96, 0x0e, 0x27, 0x6a, 0x5f, 0x9e, 0xad, 0x92, 0xa0, 0x3f, 0x71, 0x87, 0x42, 0xcd, 0xcf, 0xea, 0xee, 0x5c, 0xb8, 0x5c, 0x44, 0xaf, 0x19, 0x8a, 0xdc, 0x43, 0xa4, 0xa4, 0x28, 0xf5, 0xf0, 0xc2, 0xdd, 0xb0, 0xbe, 0x36, 0x05, 0x9f, 0x06, 0xd7, 0xdf, 0x73 }, - { 0x28, 0x34, 0xb7, 0xa7, 0x17, 0x0f, 0x1f, 0x5b, 0x68, 0x55, 0x9a, 0xb7, 0x8c, 0x10, 0x50, 0xec, 0x21, 0xc9, 0x19, 0x74, 0x0b, 0x78, 0x4a, 0x90, 0x72, 0xf6, 0xe5, 0xd6, 0x9f, 0x82, 0x8d, 0x70, 0xc9, 0x19, 0xc5, 0x03, 0x9f, 0xb1, 0x48, 0xe3, 0x9e, 0x2c, 0x8a, 0x52, 0x11, 0x83, 0x78, 0xb0, 0x64, 0xca, 0x8d, 0x50, 0x01, 0xcd, 0x10, 0xa5, 0x47, 0x83, 0x87, 0xb9, 0x66, 0x71, 0x5e, 0xd6 }, - { 0x16, 0xb4, 0xad, 0xa8, 0x83, 0xf7, 0x2f, 0x85, 0x3b, 0xb7, 0xef, 0x25, 0x3e, 0xfc, 0xab, 0x0c, 0x3e, 0x21, 0x61, 0x68, 0x7a, 0xd6, 0x15, 0x43, 0xa0, 0xd2, 0x82, 0x4f, 0x91, 0xc1, 0xf8, 0x13, 0x47, 0xd8, 0x6b, 0xe7, 0x09, 0xb1, 0x69, 0x96, 0xe1, 0x7f, 0x2d, 0xd4, 0x86, 0x92, 0x7b, 0x02, 0x88, 0xad, 0x38, 0xd1, 0x30, 0x63, 0xc4, 0xa9, 0x67, 0x2c, 0x39, 0x39, 0x7d, 0x37, 0x89, 0xb6 }, - { 0x78, 0xd0, 0x48, 0xf3, 0xa6, 0x9d, 0x8b, 0x54, 0xae, 0x0e, 0xd6, 0x3a, 0x57, 0x3a, 0xe3, 0x50, 0xd8, 0x9f, 0x7c, 0x6c, 0xf1, 0xf3, 0x68, 0x89, 0x30, 0xde, 0x89, 0x9a, 0xfa, 0x03, 0x76, 0x97, 0x62, 0x9b, 0x31, 0x4e, 0x5c, 0xd3, 0x03, 0xaa, 0x62, 0xfe, 0xea, 0x72, 0xa2, 0x5b, 0xf4, 0x2b, 0x30, 0x4b, 0x6c, 0x6b, 0xcb, 0x27, 0xfa, 0xe2, 0x1c, 0x16, 0xd9, 0x25, 0xe1, 0xfb, 0xda, 0xc3 }, - { 0x0f, 0x74, 0x6a, 0x48, 0x74, 0x92, 0x87, 0xad, 0xa7, 0x7a, 0x82, 0x96, 0x1f, 0x05, 0xa4, 0xda, 0x4a, 0xbd, 0xb7, 0xd7, 0x7b, 0x12, 0x20, 0xf8, 0x36, 0xd0, 0x9e, 0xc8, 0x14, 0x35, 0x9c, 0x0e, 0xc0, 0x23, 0x9b, 0x8c, 0x7b, 0x9f, 0xf9, 0xe0, 0x2f, 0x56, 0x9d, 0x1b, 0x30, 0x1e, 0xf6, 0x7c, 0x46, 0x12, 0xd1, 0xde, 0x4f, 0x73, 0x0f, 0x81, 0xc1, 0x2c, 0x40, 0xcc, 0x06, 0x3c, 0x5c, 0xaa }, - { 0xf0, 0xfc, 0x85, 0x9d, 0x3b, 0xd1, 0x95, 0xfb, 0xdc, 0x2d, 0x59, 0x1e, 0x4c, 0xda, 0xc1, 0x51, 0x79, 0xec, 0x0f, 0x1d, 0xc8, 0x21, 0xc1, 0x1d, 0xf1, 0xf0, 0xc1, 0xd2, 0x6e, 0x62, 0x60, 0xaa, 0xa6, 0x5b, 0x79, 0xfa, 0xfa, 0xca, 0xfd, 0x7d, 0x3a, 0xd6, 0x1e, 0x60, 0x0f, 0x25, 0x09, 0x05, 0xf5, 0x87, 0x8c, 0x87, 0x45, 0x28, 0x97, 0x64, 0x7a, 0x35, 0xb9, 0x95, 0xbc, 0xad, 0xc3, 0xa3 }, - { 0x26, 0x20, 0xf6, 0x87, 0xe8, 0x62, 0x5f, 0x6a, 0x41, 0x24, 0x60, 0xb4, 0x2e, 0x2c, 0xef, 0x67, 0x63, 0x42, 0x08, 0xce, 0x10, 0xa0, 0xcb, 0xd4, 0xdf, 0xf7, 0x04, 0x4a, 0x41, 0xb7, 0x88, 0x00, 0x77, 0xe9, 0xf8, 0xdc, 0x3b, 0x8d, 0x12, 0x16, 0xd3, 0x37, 0x6a, 0x21, 0xe0, 0x15, 0xb5, 0x8f, 0xb2, 0x79, 0xb5, 0x21, 0xd8, 0x3f, 0x93, 0x88, 0xc7, 0x38, 0x2c, 0x85, 0x05, 0x59, 0x0b, 0x9b }, - { 0x22, 0x7e, 0x3a, 0xed, 0x8d, 0x2c, 0xb1, 0x0b, 0x91, 0x8f, 0xcb, 0x04, 0xf9, 0xde, 0x3e, 0x6d, 0x0a, 0x57, 0xe0, 0x84, 0x76, 0xd9, 0x37, 0x59, 0xcd, 0x7b, 0x2e, 0xd5, 0x4a, 0x1c, 0xbf, 0x02, 0x39, 0xc5, 0x28, 0xfb, 0x04, 0xbb, 0xf2, 0x88, 0x25, 0x3e, 0x60, 0x1d, 0x3b, 0xc3, 0x8b, 0x21, 0x79, 0x4a, 0xfe, 0xf9, 0x0b, 0x17, 0x09, 0x4a, 0x18, 0x2c, 0xac, 0x55, 0x77, 0x45, 0xe7, 0x5f }, - { 0x1a, 0x92, 0x99, 0x01, 0xb0, 0x9c, 0x25, 0xf2, 0x7d, 0x6b, 0x35, 0xbe, 0x7b, 0x2f, 0x1c, 0x47, 0x45, 0x13, 0x1f, 0xde, 0xbc, 0xa7, 0xf3, 0xe2, 0x45, 0x19, 0x26, 0x72, 0x04, 0x34, 0xe0, 0xdb, 0x6e, 0x74, 0xfd, 0x69, 0x3a, 0xd2, 0x9b, 0x77, 0x7d, 0xc3, 0x35, 0x5c, 0x59, 0x2a, 0x36, 0x1c, 0x48, 0x73, 0xb0, 0x11, 0x33, 0xa5, 0x7c, 0x2e, 0x3b, 0x70, 0x75, 0xcb, 0xdb, 0x86, 0xf4, 0xfc }, - { 0x5f, 0xd7, 0x96, 0x8b, 0xc2, 0xfe, 0x34, 0xf2, 0x20, 0xb5, 0xe3, 0xdc, 0x5a, 0xf9, 0x57, 0x17, 0x42, 0xd7, 0x3b, 0x7d, 0x60, 0x81, 0x9f, 0x28, 0x88, 0xb6, 0x29, 0x07, 0x2b, 0x96, 0xa9, 0xd8, 0xab, 0x2d, 0x91, 0xb8, 0x2d, 0x0a, 0x9a, 0xab, 0xa6, 0x1b, 0xbd, 0x39, 0x95, 0x81, 0x32, 0xfc, 0xc4, 0x25, 0x70, 0x23, 0xd1, 0xec, 0xa5, 0x91, 0xb3, 0x05, 0x4e, 0x2d, 0xc8, 0x1c, 0x82, 0x00 }, - { 0xdf, 0xcc, 0xe8, 0xcf, 0x32, 0x87, 0x0c, 0xc6, 0xa5, 0x03, 0xea, 0xda, 0xfc, 0x87, 0xfd, 0x6f, 0x78, 0x91, 0x8b, 0x9b, 0x4d, 0x07, 0x37, 0xdb, 0x68, 0x10, 0xbe, 0x99, 0x6b, 0x54, 0x97, 0xe7, 0xe5, 0xcc, 0x80, 0xe3, 0x12, 0xf6, 0x1e, 0x71, 0xff, 0x3e, 0x96, 0x24, 0x43, 0x60, 0x73, 0x15, 0x64, 0x03, 0xf7, 0x35, 0xf5, 0x6b, 0x0b, 0x01, 0x84, 0x5c, 0x18, 0xf6, 0xca, 0xf7, 0x72, 0xe6 }, - { 0x02, 0xf7, 0xef, 0x3a, 0x9c, 0xe0, 0xff, 0xf9, 0x60, 0xf6, 0x70, 0x32, 0xb2, 0x96, 0xef, 0xca, 0x30, 0x61, 0xf4, 0x93, 0x4d, 0x69, 0x07, 0x49, 0xf2, 0xd0, 0x1c, 0x35, 0xc8, 0x1c, 0x14, 0xf3, 0x9a, 0x67, 0xfa, 0x35, 0x0b, 0xc8, 0xa0, 0x35, 0x9b, 0xf1, 0x72, 0x4b, 0xff, 0xc3, 0xbc, 0xa6, 0xd7, 0xc7, 0xbb, 0xa4, 0x79, 0x1f, 0xd5, 0x22, 0xa3, 0xad, 0x35, 0x3c, 0x02, 0xec, 0x5a, 0xa8 }, - { 0x64, 0xbe, 0x5c, 0x6a, 0xba, 0x65, 0xd5, 0x94, 0x84, 0x4a, 0xe7, 0x8b, 0xb0, 0x22, 0xe5, 0xbe, 0xbe, 0x12, 0x7f, 0xd6, 0xb6, 0xff, 0xa5, 0xa1, 0x37, 0x03, 0x85, 0x5a, 0xb6, 0x3b, 0x62, 0x4d, 0xcd, 0x1a, 0x36, 0x3f, 0x99, 0x20, 0x3f, 0x63, 0x2e, 0xc3, 0x86, 0xf3, 0xea, 0x76, 0x7f, 0xc9, 0x92, 0xe8, 0xed, 0x96, 0x86, 0x58, 0x6a, 0xa2, 0x75, 0x55, 0xa8, 0x59, 0x9d, 0x5b, 0x80, 0x8f }, - { 0xf7, 0x85, 0x85, 0x50, 0x5c, 0x4e, 0xaa, 0x54, 0xa8, 0xb5, 0xbe, 0x70, 0xa6, 0x1e, 0x73, 0x5e, 0x0f, 0xf9, 0x7a, 0xf9, 0x44, 0xdd, 0xb3, 0x00, 0x1e, 0x35, 0xd8, 0x6c, 0x4e, 0x21, 0x99, 0xd9, 0x76, 0x10, 0x4b, 0x6a, 0xe3, 0x17, 0x50, 0xa3, 0x6a, 0x72, 0x6e, 0xd2, 0x85, 0x06, 0x4f, 0x59, 0x81, 0xb5, 0x03, 0x88, 0x9f, 0xef, 0x82, 0x2f, 0xcd, 0xc2, 0x89, 0x8d, 0xdd, 0xb7, 0x88, 0x9a }, - { 0xe4, 0xb5, 0x56, 0x60, 0x33, 0x86, 0x95, 0x72, 0xed, 0xfd, 0x87, 0x47, 0x9a, 0x5b, 0xb7, 0x3c, 0x80, 0xe8, 0x75, 0x9b, 0x91, 0x23, 0x28, 0x79, 0xd9, 0x6b, 0x1d, 0xda, 0x36, 0xc0, 0x12, 0x07, 0x6e, 0xe5, 0xa2, 0xed, 0x7a, 0xe2, 0xde, 0x63, 0xef, 0x84, 0x06, 0xa0, 0x6a, 0xea, 0x82, 0xc1, 0x88, 0x03, 0x1b, 0x56, 0x0b, 0xea, 0xfb, 0x58, 0x3f, 0xb3, 0xde, 0x9e, 0x57, 0x95, 0x2a, 0x7e }, - { 0xe1, 0xb3, 0xe7, 0xed, 0x86, 0x7f, 0x6c, 0x94, 0x84, 0xa2, 0xa9, 0x7f, 0x77, 0x15, 0xf2, 0x5e, 0x25, 0x29, 0x4e, 0x99, 0x2e, 0x41, 0xf6, 0xa7, 0xc1, 0x61, 0xff, 0xc2, 0xad, 0xc6, 0xda, 0xae, 0xb7, 0x11, 0x31, 0x02, 0xd5, 0xe6, 0x09, 0x02, 0x87, 0xfe, 0x6a, 0xd9, 0x4c, 0xe5, 0xd6, 0xb7, 0x39, 0xc6, 0xca, 0x24, 0x0b, 0x05, 0xc7, 0x6f, 0xb7, 0x3f, 0x25, 0xdd, 0x02, 0x4b, 0xf9, 0x35 }, - { 0x85, 0xfd, 0x08, 0x5f, 0xdc, 0x12, 0xa0, 0x80, 0x98, 0x3d, 0xf0, 0x7b, 0xd7, 0x01, 0x2b, 0x0d, 0x40, 0x2a, 0x0f, 0x40, 0x43, 0xfc, 0xb2, 0x77, 0x5a, 0xdf, 0x0b, 0xad, 0x17, 0x4f, 0x9b, 0x08, 0xd1, 0x67, 0x6e, 0x47, 0x69, 0x85, 0x78, 0x5c, 0x0a, 0x5d, 0xcc, 0x41, 0xdb, 0xff, 0x6d, 0x95, 0xef, 0x4d, 0x66, 0xa3, 0xfb, 0xdc, 0x4a, 0x74, 0xb8, 0x2b, 0xa5, 0x2d, 0xa0, 0x51, 0x2b, 0x74 }, - { 0xae, 0xd8, 0xfa, 0x76, 0x4b, 0x0f, 0xbf, 0xf8, 0x21, 0xe0, 0x52, 0x33, 0xd2, 0xf7, 0xb0, 0x90, 0x0e, 0xc4, 0x4d, 0x82, 0x6f, 0x95, 0xe9, 0x3c, 0x34, 0x3c, 0x1b, 0xc3, 0xba, 0x5a, 0x24, 0x37, 0x4b, 0x1d, 0x61, 0x6e, 0x7e, 0x7a, 0xba, 0x45, 0x3a, 0x0a, 0xda, 0x5e, 0x4f, 0xab, 0x53, 0x82, 0x40, 0x9e, 0x0d, 0x42, 0xce, 0x9c, 0x2b, 0xc7, 0xfb, 0x39, 0xa9, 0x9c, 0x34, 0x0c, 0x20, 0xf0 }, - { 0x7b, 0xa3, 0xb2, 0xe2, 0x97, 0x23, 0x35, 0x22, 0xee, 0xb3, 0x43, 0xbd, 0x3e, 0xbc, 0xfd, 0x83, 0x5a, 0x04, 0x00, 0x77, 0x35, 0xe8, 0x7f, 0x0c, 0xa3, 0x00, 0xcb, 0xee, 0x6d, 0x41, 0x65, 0x65, 0x16, 0x21, 0x71, 0x58, 0x1e, 0x40, 0x20, 0xff, 0x4c, 0xf1, 0x76, 0x45, 0x0f, 0x12, 0x91, 0xea, 0x22, 0x85, 0xcb, 0x9e, 0xbf, 0xfe, 0x4c, 0x56, 0x66, 0x06, 0x27, 0x68, 0x51, 0x45, 0x05, 0x1c }, - { 0xde, 0x74, 0x8b, 0xcf, 0x89, 0xec, 0x88, 0x08, 0x47, 0x21, 0xe1, 0x6b, 0x85, 0xf3, 0x0a, 0xdb, 0x1a, 0x61, 0x34, 0xd6, 0x64, 0xb5, 0x84, 0x35, 0x69, 0xba, 0xbc, 0x5b, 0xbd, 0x1a, 0x15, 0xca, 0x9b, 0x61, 0x80, 0x3c, 0x90, 0x1a, 0x4f, 0xef, 0x32, 0x96, 0x5a, 0x17, 0x49, 0xc9, 0xf3, 0xa4, 0xe2, 0x43, 0xe1, 0x73, 0x93, 0x9d, 0xc5, 0xa8, 0xdc, 0x49, 0x5c, 0x67, 0x1a, 0xb5, 0x21, 0x45 }, - { 0xaa, 0xf4, 0xd2, 0xbd, 0xf2, 0x00, 0xa9, 0x19, 0x70, 0x6d, 0x98, 0x42, 0xdc, 0xe1, 0x6c, 0x98, 0x14, 0x0d, 0x34, 0xbc, 0x43, 0x3d, 0xf3, 0x20, 0xab, 0xa9, 0xbd, 0x42, 0x9e, 0x54, 0x9a, 0xa7, 0xa3, 0x39, 0x76, 0x52, 0xa4, 0xd7, 0x68, 0x27, 0x77, 0x86, 0xcf, 0x99, 0x3c, 0xde, 0x23, 0x38, 0x67, 0x3e, 0xd2, 0xe6, 0xb6, 0x6c, 0x96, 0x1f, 0xef, 0xb8, 0x2c, 0xd2, 0x0c, 0x93, 0x33, 0x8f }, - { 0xc4, 0x08, 0x21, 0x89, 0x68, 0xb7, 0x88, 0xbf, 0x86, 0x4f, 0x09, 0x97, 0xe6, 0xbc, 0x4c, 0x3d, 0xba, 0x68, 0xb2, 0x76, 0xe2, 0x12, 0x5a, 0x48, 0x43, 0x29, 0x60, 0x52, 0xff, 0x93, 0xbf, 0x57, 0x67, 0xb8, 0xcd, 0xce, 0x71, 0x31, 0xf0, 0x87, 0x64, 0x30, 0xc1, 0x16, 0x5f, 0xec, 0x6c, 0x4f, 0x47, 0xad, 0xaa, 0x4f, 0xd8, 0xbc, 0xfa, 0xce, 0xf4, 0x63, 0xb5, 0xd3, 0xd0, 0xfa, 0x61, 0xa0 }, - { 0x76, 0xd2, 0xd8, 0x19, 0xc9, 0x2b, 0xce, 0x55, 0xfa, 0x8e, 0x09, 0x2a, 0xb1, 0xbf, 0x9b, 0x9e, 0xab, 0x23, 0x7a, 0x25, 0x26, 0x79, 0x86, 0xca, 0xcf, 0x2b, 0x8e, 0xe1, 0x4d, 0x21, 0x4d, 0x73, 0x0d, 0xc9, 0xa5, 0xaa, 0x2d, 0x7b, 0x59, 0x6e, 0x86, 0xa1, 0xfd, 0x8f, 0xa0, 0x80, 0x4c, 0x77, 0x40, 0x2d, 0x2f, 0xcd, 0x45, 0x08, 0x36, 0x88, 0xb2, 0x18, 0xb1, 0xcd, 0xfa, 0x0d, 0xcb, 0xcb }, - { 0x72, 0x06, 0x5e, 0xe4, 0xdd, 0x91, 0xc2, 0xd8, 0x50, 0x9f, 0xa1, 0xfc, 0x28, 0xa3, 0x7c, 0x7f, 0xc9, 0xfa, 0x7d, 0x5b, 0x3f, 0x8a, 0xd3, 0xd0, 0xd7, 0xa2, 0x56, 0x26, 0xb5, 0x7b, 0x1b, 0x44, 0x78, 0x8d, 0x4c, 0xaf, 0x80, 0x62, 0x90, 0x42, 0x5f, 0x98, 0x90, 0xa3, 0xa2, 0xa3, 0x5a, 0x90, 0x5a, 0xb4, 0xb3, 0x7a, 0xcf, 0xd0, 0xda, 0x6e, 0x45, 0x17, 0xb2, 0x52, 0x5c, 0x96, 0x51, 0xe4 }, - { 0x64, 0x47, 0x5d, 0xfe, 0x76, 0x00, 0xd7, 0x17, 0x1b, 0xea, 0x0b, 0x39, 0x4e, 0x27, 0xc9, 0xb0, 0x0d, 0x8e, 0x74, 0xdd, 0x1e, 0x41, 0x6a, 0x79, 0x47, 0x36, 0x82, 0xad, 0x3d, 0xfd, 0xbb, 0x70, 0x66, 0x31, 0x55, 0x80, 0x55, 0xcf, 0xc8, 0xa4, 0x0e, 0x07, 0xbd, 0x01, 0x5a, 0x45, 0x40, 0xdc, 0xde, 0xa1, 0x58, 0x83, 0xcb, 0xbf, 0x31, 0x41, 0x2d, 0xf1, 0xde, 0x1c, 0xd4, 0x15, 0x2b, 0x91 }, - { 0x12, 0xcd, 0x16, 0x74, 0xa4, 0x48, 0x8a, 0x5d, 0x7c, 0x2b, 0x31, 0x60, 0xd2, 0xe2, 0xc4, 0xb5, 0x83, 0x71, 0xbe, 0xda, 0xd7, 0x93, 0x41, 0x8d, 0x6f, 0x19, 0xc6, 0xee, 0x38, 0x5d, 0x70, 0xb3, 0xe0, 0x67, 0x39, 0x36, 0x9d, 0x4d, 0xf9, 0x10, 0xed, 0xb0, 0xb0, 0xa5, 0x4c, 0xbf, 0xf4, 0x3d, 0x54, 0x54, 0x4c, 0xd3, 0x7a, 0xb3, 0xa0, 0x6c, 0xfa, 0x0a, 0x3d, 0xda, 0xc8, 0xb6, 0x6c, 0x89 }, - { 0x60, 0x75, 0x69, 0x66, 0x47, 0x9d, 0xed, 0xc6, 0xdd, 0x4b, 0xcf, 0xf8, 0xea, 0x7d, 0x1d, 0x4c, 0xe4, 0xd4, 0xaf, 0x2e, 0x7b, 0x09, 0x7e, 0x32, 0xe3, 0x76, 0x35, 0x18, 0x44, 0x11, 0x47, 0xcc, 0x12, 0xb3, 0xc0, 0xee, 0x6d, 0x2e, 0xca, 0xbf, 0x11, 0x98, 0xce, 0xc9, 0x2e, 0x86, 0xa3, 0x61, 0x6f, 0xba, 0x4f, 0x4e, 0x87, 0x2f, 0x58, 0x25, 0x33, 0x0a, 0xdb, 0xb4, 0xc1, 0xde, 0xe4, 0x44 }, - { 0xa7, 0x80, 0x3b, 0xcb, 0x71, 0xbc, 0x1d, 0x0f, 0x43, 0x83, 0xdd, 0xe1, 0xe0, 0x61, 0x2e, 0x04, 0xf8, 0x72, 0xb7, 0x15, 0xad, 0x30, 0x81, 0x5c, 0x22, 0x49, 0xcf, 0x34, 0xab, 0xb8, 0xb0, 0x24, 0x91, 0x5c, 0xb2, 0xfc, 0x9f, 0x4e, 0x7c, 0xc4, 0xc8, 0xcf, 0xd4, 0x5b, 0xe2, 0xd5, 0xa9, 0x1e, 0xab, 0x09, 0x41, 0xc7, 0xd2, 0x70, 0xe2, 0xda, 0x4c, 0xa4, 0xa9, 0xf7, 0xac, 0x68, 0x66, 0x3a }, - { 0xb8, 0x4e, 0xf6, 0xa7, 0x22, 0x9a, 0x34, 0xa7, 0x50, 0xd9, 0xa9, 0x8e, 0xe2, 0x52, 0x98, 0x71, 0x81, 0x6b, 0x87, 0xfb, 0xe3, 0xbc, 0x45, 0xb4, 0x5f, 0xa5, 0xae, 0x82, 0xd5, 0x14, 0x15, 0x40, 0x21, 0x11, 0x65, 0xc3, 0xc5, 0xd7, 0xa7, 0x47, 0x6b, 0xa5, 0xa4, 0xaa, 0x06, 0xd6, 0x64, 0x76, 0xf0, 0xd9, 0xdc, 0x49, 0xa3, 0xf1, 0xee, 0x72, 0xc3, 0xac, 0xab, 0xd4, 0x98, 0x96, 0x74, 0x14 }, - { 0xfa, 0xe4, 0xb6, 0xd8, 0xef, 0xc3, 0xf8, 0xc8, 0xe6, 0x4d, 0x00, 0x1d, 0xab, 0xec, 0x3a, 0x21, 0xf5, 0x44, 0xe8, 0x27, 0x14, 0x74, 0x52, 0x51, 0xb2, 0xb4, 0xb3, 0x93, 0xf2, 0xf4, 0x3e, 0x0d, 0xa3, 0xd4, 0x03, 0xc6, 0x4d, 0xb9, 0x5a, 0x2c, 0xb6, 0xe2, 0x3e, 0xbb, 0x7b, 0x9e, 0x94, 0xcd, 0xd5, 0xdd, 0xac, 0x54, 0xf0, 0x7c, 0x4a, 0x61, 0xbd, 0x3c, 0xb1, 0x0a, 0xa6, 0xf9, 0x3b, 0x49 }, - { 0x34, 0xf7, 0x28, 0x66, 0x05, 0xa1, 0x22, 0x36, 0x95, 0x40, 0x14, 0x1d, 0xed, 0x79, 0xb8, 0x95, 0x72, 0x55, 0xda, 0x2d, 0x41, 0x55, 0xab, 0xbf, 0x5a, 0x8d, 0xbb, 0x89, 0xc8, 0xeb, 0x7e, 0xde, 0x8e, 0xee, 0xf1, 0xda, 0xa4, 0x6d, 0xc2, 0x9d, 0x75, 0x1d, 0x04, 0x5d, 0xc3, 0xb1, 0xd6, 0x58, 0xbb, 0x64, 0xb8, 0x0f, 0xf8, 0x58, 0x9e, 0xdd, 0xb3, 0x82, 0x4b, 0x13, 0xda, 0x23, 0x5a, 0x6b }, - { 0x3b, 0x3b, 0x48, 0x43, 0x4b, 0xe2, 0x7b, 0x9e, 0xab, 0xab, 0xba, 0x43, 0xbf, 0x6b, 0x35, 0xf1, 0x4b, 0x30, 0xf6, 0xa8, 0x8d, 0xc2, 0xe7, 0x50, 0xc3, 0x58, 0x47, 0x0d, 0x6b, 0x3a, 0xa3, 0xc1, 0x8e, 0x47, 0xdb, 0x40, 0x17, 0xfa, 0x55, 0x10, 0x6d, 0x82, 0x52, 0xf0, 0x16, 0x37, 0x1a, 0x00, 0xf5, 0xf8, 0xb0, 0x70, 0xb7, 0x4b, 0xa5, 0xf2, 0x3c, 0xff, 0xc5, 0x51, 0x1c, 0x9f, 0x09, 0xf0 }, - { 0xba, 0x28, 0x9e, 0xbd, 0x65, 0x62, 0xc4, 0x8c, 0x3e, 0x10, 0xa8, 0xad, 0x6c, 0xe0, 0x2e, 0x73, 0x43, 0x3d, 0x1e, 0x93, 0xd7, 0xc9, 0x27, 0x9d, 0x4d, 0x60, 0xa7, 0xe8, 0x79, 0xee, 0x11, 0xf4, 0x41, 0xa0, 0x00, 0xf4, 0x8e, 0xd9, 0xf7, 0xc4, 0xed, 0x87, 0xa4, 0x51, 0x36, 0xd7, 0xdc, 0xcd, 0xca, 0x48, 0x21, 0x09, 0xc7, 0x8a, 0x51, 0x06, 0x2b, 0x3b, 0xa4, 0x04, 0x4a, 0xda, 0x24, 0x69 }, - { 0x02, 0x29, 0x39, 0xe2, 0x38, 0x6c, 0x5a, 0x37, 0x04, 0x98, 0x56, 0xc8, 0x50, 0xa2, 0xbb, 0x10, 0xa1, 0x3d, 0xfe, 0xa4, 0x21, 0x2b, 0x4c, 0x73, 0x2a, 0x88, 0x40, 0xa9, 0xff, 0xa5, 0xfa, 0xf5, 0x48, 0x75, 0xc5, 0x44, 0x88, 0x16, 0xb2, 0x78, 0x5a, 0x00, 0x7d, 0xa8, 0xa8, 0xd2, 0xbc, 0x7d, 0x71, 0xa5, 0x4e, 0x4e, 0x65, 0x71, 0xf1, 0x0b, 0x60, 0x0c, 0xbd, 0xb2, 0x5d, 0x13, 0xed, 0xe3 }, - { 0xe6, 0xfe, 0xc1, 0x9d, 0x89, 0xce, 0x87, 0x17, 0xb1, 0xa0, 0x87, 0x02, 0x46, 0x70, 0xfe, 0x02, 0x6f, 0x6c, 0x7c, 0xbd, 0xa1, 0x1c, 0xae, 0xf9, 0x59, 0xbb, 0x2d, 0x35, 0x1b, 0xf8, 0x56, 0xf8, 0x05, 0x5d, 0x1c, 0x0e, 0xbd, 0xaa, 0xa9, 0xd1, 0xb1, 0x78, 0x86, 0xfc, 0x2c, 0x56, 0x2b, 0x5e, 0x99, 0x64, 0x2f, 0xc0, 0x64, 0x71, 0x0c, 0x0d, 0x34, 0x88, 0xa0, 0x2b, 0x5e, 0xd7, 0xf6, 0xfd }, - { 0x94, 0xc9, 0x6f, 0x02, 0xa8, 0xf5, 0x76, 0xac, 0xa3, 0x2b, 0xa6, 0x1c, 0x2b, 0x20, 0x6f, 0x90, 0x72, 0x85, 0xd9, 0x29, 0x9b, 0x83, 0xac, 0x17, 0x5c, 0x20, 0x9a, 0x8d, 0x43, 0xd5, 0x3b, 0xfe, 0x68, 0x3d, 0xd1, 0xd8, 0x3e, 0x75, 0x49, 0xcb, 0x90, 0x6c, 0x28, 0xf5, 0x9a, 0xb7, 0xc4, 0x6f, 0x87, 0x51, 0x36, 0x6a, 0x28, 0xc3, 0x9d, 0xd5, 0xfe, 0x26, 0x93, 0xc9, 0x01, 0x96, 0x66, 0xc8 }, - { 0x31, 0xa0, 0xcd, 0x21, 0x5e, 0xbd, 0x2c, 0xb6, 0x1d, 0xe5, 0xb9, 0xed, 0xc9, 0x1e, 0x61, 0x95, 0xe3, 0x1c, 0x59, 0xa5, 0x64, 0x8d, 0x5c, 0x9f, 0x73, 0x7e, 0x12, 0x5b, 0x26, 0x05, 0x70, 0x8f, 0x2e, 0x32, 0x5a, 0xb3, 0x38, 0x1c, 0x8d, 0xce, 0x1a, 0x3e, 0x95, 0x88, 0x86, 0xf1, 0xec, 0xdc, 0x60, 0x31, 0x8f, 0x88, 0x2c, 0xfe, 0x20, 0xa2, 0x41, 0x91, 0x35, 0x2e, 0x61, 0x7b, 0x0f, 0x21 }, - { 0x91, 0xab, 0x50, 0x4a, 0x52, 0x2d, 0xce, 0x78, 0x77, 0x9f, 0x4c, 0x6c, 0x6b, 0xa2, 0xe6, 0xb6, 0xdb, 0x55, 0x65, 0xc7, 0x6d, 0x3e, 0x7e, 0x7c, 0x92, 0x0c, 0xaf, 0x7f, 0x75, 0x7e, 0xf9, 0xdb, 0x7c, 0x8f, 0xcf, 0x10, 0xe5, 0x7f, 0x03, 0x37, 0x9e, 0xa9, 0xbf, 0x75, 0xeb, 0x59, 0x89, 0x5d, 0x96, 0xe1, 0x49, 0x80, 0x0b, 0x6a, 0xae, 0x01, 0xdb, 0x77, 0x8b, 0xb9, 0x0a, 0xfb, 0xc9, 0x89 }, - { 0xd8, 0x5c, 0xab, 0xc6, 0xbd, 0x5b, 0x1a, 0x01, 0xa5, 0xaf, 0xd8, 0xc6, 0x73, 0x47, 0x40, 0xda, 0x9f, 0xd1, 0xc1, 0xac, 0xc6, 0xdb, 0x29, 0xbf, 0xc8, 0xa2, 0xe5, 0xb6, 0x68, 0xb0, 0x28, 0xb6, 0xb3, 0x15, 0x4b, 0xfb, 0x87, 0x03, 0xfa, 0x31, 0x80, 0x25, 0x1d, 0x58, 0x9a, 0xd3, 0x80, 0x40, 0xce, 0xb7, 0x07, 0xc4, 0xba, 0xd1, 0xb5, 0x34, 0x3c, 0xb4, 0x26, 0xb6, 0x1e, 0xaa, 0x49, 0xc1 }, - { 0xd6, 0x2e, 0xfb, 0xec, 0x2c, 0xa9, 0xc1, 0xf8, 0xbd, 0x66, 0xce, 0x8b, 0x3f, 0x6a, 0x89, 0x8c, 0xb3, 0xf7, 0x56, 0x6b, 0xa6, 0x56, 0x8c, 0x61, 0x8a, 0xd1, 0xfe, 0xb2, 0xb6, 0x5b, 0x76, 0xc3, 0xce, 0x1d, 0xd2, 0x0f, 0x73, 0x95, 0x37, 0x2f, 0xaf, 0x28, 0x42, 0x7f, 0x61, 0xc9, 0x27, 0x80, 0x49, 0xcf, 0x01, 0x40, 0xdf, 0x43, 0x4f, 0x56, 0x33, 0x04, 0x8c, 0x86, 0xb8, 0x1e, 0x03, 0x99 }, - { 0x7c, 0x8f, 0xdc, 0x61, 0x75, 0x43, 0x9e, 0x2c, 0x3d, 0xb1, 0x5b, 0xaf, 0xa7, 0xfb, 0x06, 0x14, 0x3a, 0x6a, 0x23, 0xbc, 0x90, 0xf4, 0x49, 0xe7, 0x9d, 0xee, 0xf7, 0x3c, 0x3d, 0x49, 0x2a, 0x67, 0x17, 0x15, 0xc1, 0x93, 0xb6, 0xfe, 0xa9, 0xf0, 0x36, 0x05, 0x0b, 0x94, 0x60, 0x69, 0x85, 0x6b, 0x89, 0x7e, 0x08, 0xc0, 0x07, 0x68, 0xf5, 0xee, 0x5d, 0xdc, 0xf7, 0x0b, 0x7c, 0xd6, 0xd0, 0xe0 }, - { 0x58, 0x60, 0x2e, 0xe7, 0x46, 0x8e, 0x6b, 0xc9, 0xdf, 0x21, 0xbd, 0x51, 0xb2, 0x3c, 0x00, 0x5f, 0x72, 0xd6, 0xcb, 0x01, 0x3f, 0x0a, 0x1b, 0x48, 0xcb, 0xec, 0x5e, 0xca, 0x29, 0x92, 0x99, 0xf9, 0x7f, 0x09, 0xf5, 0x4a, 0x9a, 0x01, 0x48, 0x3e, 0xae, 0xb3, 0x15, 0xa6, 0x47, 0x8b, 0xad, 0x37, 0xba, 0x47, 0xca, 0x13, 0x47, 0xc7, 0xc8, 0xfc, 0x9e, 0x66, 0x95, 0x59, 0x2c, 0x91, 0xd7, 0x23 }, - { 0x27, 0xf5, 0xb7, 0x9e, 0xd2, 0x56, 0xb0, 0x50, 0x99, 0x3d, 0x79, 0x34, 0x96, 0xed, 0xf4, 0x80, 0x7c, 0x1d, 0x85, 0xa7, 0xb0, 0xa6, 0x7c, 0x9c, 0x4f, 0xa9, 0x98, 0x60, 0x75, 0x0b, 0x0a, 0xe6, 0x69, 0x89, 0x67, 0x0a, 0x8f, 0xfd, 0x78, 0x56, 0xd7, 0xce, 0x41, 0x15, 0x99, 0xe5, 0x8c, 0x4d, 0x77, 0xb2, 0x32, 0xa6, 0x2b, 0xef, 0x64, 0xd1, 0x52, 0x75, 0xbe, 0x46, 0xa6, 0x82, 0x35, 0xff }, - { 0x39, 0x57, 0xa9, 0x76, 0xb9, 0xf1, 0x88, 0x7b, 0xf0, 0x04, 0xa8, 0xdc, 0xa9, 0x42, 0xc9, 0x2d, 0x2b, 0x37, 0xea, 0x52, 0x60, 0x0f, 0x25, 0xe0, 0xc9, 0xbc, 0x57, 0x07, 0xd0, 0x27, 0x9c, 0x00, 0xc6, 0xe8, 0x5a, 0x83, 0x9b, 0x0d, 0x2d, 0x8e, 0xb5, 0x9c, 0x51, 0xd9, 0x47, 0x88, 0xeb, 0xe6, 0x24, 0x74, 0xa7, 0x91, 0xca, 0xdf, 0x52, 0xcc, 0xcf, 0x20, 0xf5, 0x07, 0x0b, 0x65, 0x73, 0xfc }, - { 0xea, 0xa2, 0x37, 0x6d, 0x55, 0x38, 0x0b, 0xf7, 0x72, 0xec, 0xca, 0x9c, 0xb0, 0xaa, 0x46, 0x68, 0xc9, 0x5c, 0x70, 0x71, 0x62, 0xfa, 0x86, 0xd5, 0x18, 0xc8, 0xce, 0x0c, 0xa9, 0xbf, 0x73, 0x62, 0xb9, 0xf2, 0xa0, 0xad, 0xc3, 0xff, 0x59, 0x92, 0x2d, 0xf9, 0x21, 0xb9, 0x45, 0x67, 0xe8, 0x1e, 0x45, 0x2f, 0x6c, 0x1a, 0x07, 0xfc, 0x81, 0x7c, 0xeb, 0xe9, 0x96, 0x04, 0xb3, 0x50, 0x5d, 0x38 }, - { 0xc1, 0xe2, 0xc7, 0x8b, 0x6b, 0x27, 0x34, 0xe2, 0x48, 0x0e, 0xc5, 0x50, 0x43, 0x4c, 0xb5, 0xd6, 0x13, 0x11, 0x1a, 0xdc, 0xc2, 0x1d, 0x47, 0x55, 0x45, 0xc3, 0xb1, 0xb7, 0xe6, 0xff, 0x12, 0x44, 0x44, 0x76, 0xe5, 0xc0, 0x55, 0x13, 0x2e, 0x22, 0x29, 0xdc, 0x0f, 0x80, 0x70, 0x44, 0xbb, 0x91, 0x9b, 0x1a, 0x56, 0x62, 0xdd, 0x38, 0xa9, 0xee, 0x65, 0xe2, 0x43, 0xa3, 0x91, 0x1a, 0xed, 0x1a }, - { 0x8a, 0xb4, 0x87, 0x13, 0x38, 0x9d, 0xd0, 0xfc, 0xf9, 0xf9, 0x65, 0xd3, 0xce, 0x66, 0xb1, 0xe5, 0x59, 0xa1, 0xf8, 0xc5, 0x87, 0x41, 0xd6, 0x76, 0x83, 0xcd, 0x97, 0x13, 0x54, 0xf4, 0x52, 0xe6, 0x2d, 0x02, 0x07, 0xa6, 0x5e, 0x43, 0x6c, 0x5d, 0x5d, 0x8f, 0x8e, 0xe7, 0x1c, 0x6a, 0xbf, 0xe5, 0x0e, 0x66, 0x90, 0x04, 0xc3, 0x02, 0xb3, 0x1a, 0x7e, 0xa8, 0x31, 0x1d, 0x4a, 0x91, 0x60, 0x51 }, - { 0x24, 0xce, 0x0a, 0xdd, 0xaa, 0x4c, 0x65, 0x03, 0x8b, 0xd1, 0xb1, 0xc0, 0xf1, 0x45, 0x2a, 0x0b, 0x12, 0x87, 0x77, 0xaa, 0xbc, 0x94, 0xa2, 0x9d, 0xf2, 0xfd, 0x6c, 0x7e, 0x2f, 0x85, 0xf8, 0xab, 0x9a, 0xc7, 0xef, 0xf5, 0x16, 0xb0, 0xe0, 0xa8, 0x25, 0xc8, 0x4a, 0x24, 0xcf, 0xe4, 0x92, 0xea, 0xad, 0x0a, 0x63, 0x08, 0xe4, 0x6d, 0xd4, 0x2f, 0xe8, 0x33, 0x3a, 0xb9, 0x71, 0xbb, 0x30, 0xca }, - { 0x51, 0x54, 0xf9, 0x29, 0xee, 0x03, 0x04, 0x5b, 0x6b, 0x0c, 0x00, 0x04, 0xfa, 0x77, 0x8e, 0xde, 0xe1, 0xd1, 0x39, 0x89, 0x32, 0x67, 0xcc, 0x84, 0x82, 0x5a, 0xd7, 0xb3, 0x6c, 0x63, 0xde, 0x32, 0x79, 0x8e, 0x4a, 0x16, 0x6d, 0x24, 0x68, 0x65, 0x61, 0x35, 0x4f, 0x63, 0xb0, 0x07, 0x09, 0xa1, 0x36, 0x4b, 0x3c, 0x24, 0x1d, 0xe3, 0xfe, 0xbf, 0x07, 0x54, 0x04, 0x58, 0x97, 0x46, 0x7c, 0xd4 }, - { 0xe7, 0x4e, 0x90, 0x79, 0x20, 0xfd, 0x87, 0xbd, 0x5a, 0xd6, 0x36, 0xdd, 0x11, 0x08, 0x5e, 0x50, 0xee, 0x70, 0x45, 0x9c, 0x44, 0x3e, 0x1c, 0xe5, 0x80, 0x9a, 0xf2, 0xbc, 0x2e, 0xba, 0x39, 0xf9, 0xe6, 0xd7, 0x12, 0x8e, 0x0e, 0x37, 0x12, 0xc3, 0x16, 0xda, 0x06, 0xf4, 0x70, 0x5d, 0x78, 0xa4, 0x83, 0x8e, 0x28, 0x12, 0x1d, 0x43, 0x44, 0xa2, 0xc7, 0x9c, 0x5e, 0x0d, 0xb3, 0x07, 0xa6, 0x77 }, - { 0xbf, 0x91, 0xa2, 0x23, 0x34, 0xba, 0xc2, 0x0f, 0x3f, 0xd8, 0x06, 0x63, 0xb3, 0xcd, 0x06, 0xc4, 0xe8, 0x80, 0x2f, 0x30, 0xe6, 0xb5, 0x9f, 0x90, 0xd3, 0x03, 0x5c, 0xc9, 0x79, 0x8a, 0x21, 0x7e, 0xd5, 0xa3, 0x1a, 0xbb, 0xda, 0x7f, 0xa6, 0x84, 0x28, 0x27, 0xbd, 0xf2, 0xa7, 0xa1, 0xc2, 0x1f, 0x6f, 0xcf, 0xcc, 0xbb, 0x54, 0xc6, 0xc5, 0x29, 0x26, 0xf3, 0x2d, 0xa8, 0x16, 0x26, 0x9b, 0xe1 }, - { 0xd9, 0xd5, 0xc7, 0x4b, 0xe5, 0x12, 0x1b, 0x0b, 0xd7, 0x42, 0xf2, 0x6b, 0xff, 0xb8, 0xc8, 0x9f, 0x89, 0x17, 0x1f, 0x3f, 0x93, 0x49, 0x13, 0x49, 0x2b, 0x09, 0x03, 0xc2, 0x71, 0xbb, 0xe2, 0xb3, 0x39, 0x5e, 0xf2, 0x59, 0x66, 0x9b, 0xef, 0x43, 0xb5, 0x7f, 0x7f, 0xcc, 0x30, 0x27, 0xdb, 0x01, 0x82, 0x3f, 0x6b, 0xae, 0xe6, 0x6e, 0x4f, 0x9f, 0xea, 0xd4, 0xd6, 0x72, 0x6c, 0x74, 0x1f, 0xce }, - { 0x50, 0xc8, 0xb8, 0xcf, 0x34, 0xcd, 0x87, 0x9f, 0x80, 0xe2, 0xfa, 0xab, 0x32, 0x30, 0xb0, 0xc0, 0xe1, 0xcc, 0x3e, 0x9d, 0xca, 0xde, 0xb1, 0xb9, 0xd9, 0x7a, 0xb9, 0x23, 0x41, 0x5d, 0xd9, 0xa1, 0xfe, 0x38, 0xad, 0xdd, 0x5c, 0x11, 0x75, 0x6c, 0x67, 0x99, 0x0b, 0x25, 0x6e, 0x95, 0xad, 0x6d, 0x8f, 0x9f, 0xed, 0xce, 0x10, 0xbf, 0x1c, 0x90, 0x67, 0x9c, 0xde, 0x0e, 0xcf, 0x1b, 0xe3, 0x47 }, - { 0x0a, 0x38, 0x6e, 0x7c, 0xd5, 0xdd, 0x9b, 0x77, 0xa0, 0x35, 0xe0, 0x9f, 0xe6, 0xfe, 0xe2, 0xc8, 0xce, 0x61, 0xb5, 0x38, 0x3c, 0x87, 0xea, 0x43, 0x20, 0x50, 0x59, 0xc5, 0xe4, 0xcd, 0x4f, 0x44, 0x08, 0x31, 0x9b, 0xb0, 0xa8, 0x23, 0x60, 0xf6, 0xa5, 0x8e, 0x6c, 0x9c, 0xe3, 0xf4, 0x87, 0xc4, 0x46, 0x06, 0x3b, 0xf8, 0x13, 0xbc, 0x6b, 0xa5, 0x35, 0xe1, 0x7f, 0xc1, 0x82, 0x6c, 0xfc, 0x91 }, - { 0x1f, 0x14, 0x59, 0xcb, 0x6b, 0x61, 0xcb, 0xac, 0x5f, 0x0e, 0xfe, 0x8f, 0xc4, 0x87, 0x53, 0x8f, 0x42, 0x54, 0x89, 0x87, 0xfc, 0xd5, 0x62, 0x21, 0xcf, 0xa7, 0xbe, 0xb2, 0x25, 0x04, 0x76, 0x9e, 0x79, 0x2c, 0x45, 0xad, 0xfb, 0x1d, 0x6b, 0x3d, 0x60, 0xd7, 0xb7, 0x49, 0xc8, 0xa7, 0x5b, 0x0b, 0xdf, 0x14, 0xe8, 0xea, 0x72, 0x1b, 0x95, 0xdc, 0xa5, 0x38, 0xca, 0x6e, 0x25, 0x71, 0x12, 0x09 }, - { 0xe5, 0x8b, 0x38, 0x36, 0xb7, 0xd8, 0xfe, 0xdb, 0xb5, 0x0c, 0xa5, 0x72, 0x5c, 0x65, 0x71, 0xe7, 0x4c, 0x07, 0x85, 0xe9, 0x78, 0x21, 0xda, 0xb8, 0xb6, 0x29, 0x8c, 0x10, 0xe4, 0xc0, 0x79, 0xd4, 0xa6, 0xcd, 0xf2, 0x2f, 0x0f, 0xed, 0xb5, 0x50, 0x32, 0x92, 0x5c, 0x16, 0x74, 0x81, 0x15, 0xf0, 0x1a, 0x10, 0x5e, 0x77, 0xe0, 0x0c, 0xee, 0x3d, 0x07, 0x92, 0x4d, 0xc0, 0xd8, 0xf9, 0x06, 0x59 }, - { 0xb9, 0x29, 0xcc, 0x65, 0x05, 0xf0, 0x20, 0x15, 0x86, 0x72, 0xde, 0xda, 0x56, 0xd0, 0xdb, 0x08, 0x1a, 0x2e, 0xe3, 0x4c, 0x00, 0xc1, 0x10, 0x00, 0x29, 0xbd, 0xf8, 0xea, 0x98, 0x03, 0x4f, 0xa4, 0xbf, 0x3e, 0x86, 0x55, 0xec, 0x69, 0x7f, 0xe3, 0x6f, 0x40, 0x55, 0x3c, 0x5b, 0xb4, 0x68, 0x01, 0x64, 0x4a, 0x62, 0x7d, 0x33, 0x42, 0xf4, 0xfc, 0x92, 0xb6, 0x1f, 0x03, 0x29, 0x0f, 0xb3, 0x81 }, - { 0x72, 0xd3, 0x53, 0x99, 0x4b, 0x49, 0xd3, 0xe0, 0x31, 0x53, 0x92, 0x9a, 0x1e, 0x4d, 0x4f, 0x18, 0x8e, 0xe5, 0x8a, 0xb9, 0xe7, 0x2e, 0xe8, 0xe5, 0x12, 0xf2, 0x9b, 0xc7, 0x73, 0x91, 0x38, 0x19, 0xce, 0x05, 0x7d, 0xdd, 0x70, 0x02, 0xc0, 0x43, 0x3e, 0xe0, 0xa1, 0x61, 0x14, 0xe3, 0xd1, 0x56, 0xdd, 0x2c, 0x4a, 0x7e, 0x80, 0xee, 0x53, 0x37, 0x8b, 0x86, 0x70, 0xf2, 0x3e, 0x33, 0xef, 0x56 }, - { 0xc7, 0x0e, 0xf9, 0xbf, 0xd7, 0x75, 0xd4, 0x08, 0x17, 0x67, 0x37, 0xa0, 0x73, 0x6d, 0x68, 0x51, 0x7c, 0xe1, 0xaa, 0xad, 0x7e, 0x81, 0xa9, 0x3c, 0x8c, 0x1e, 0xd9, 0x67, 0xea, 0x21, 0x4f, 0x56, 0xc8, 0xa3, 0x77, 0xb1, 0x76, 0x3e, 0x67, 0x66, 0x15, 0xb6, 0x0f, 0x39, 0x88, 0x24, 0x1e, 0xae, 0x6e, 0xab, 0x96, 0x85, 0xa5, 0x12, 0x49, 0x29, 0xd2, 0x81, 0x88, 0xf2, 0x9e, 0xab, 0x06, 0xf7 }, - { 0xc2, 0x30, 0xf0, 0x80, 0x26, 0x79, 0xcb, 0x33, 0x82, 0x2e, 0xf8, 0xb3, 0xb2, 0x1b, 0xf7, 0xa9, 0xa2, 0x89, 0x42, 0x09, 0x29, 0x01, 0xd7, 0xda, 0xc3, 0x76, 0x03, 0x00, 0x83, 0x10, 0x26, 0xcf, 0x35, 0x4c, 0x92, 0x32, 0xdf, 0x3e, 0x08, 0x4d, 0x99, 0x03, 0x13, 0x0c, 0x60, 0x1f, 0x63, 0xc1, 0xf4, 0xa4, 0xa4, 0xb8, 0x10, 0x6e, 0x46, 0x8c, 0xd4, 0x43, 0xbb, 0xe5, 0xa7, 0x34, 0xf4, 0x5f }, - { 0x6f, 0x43, 0x09, 0x4c, 0xaf, 0xb5, 0xeb, 0xf1, 0xf7, 0xa4, 0x93, 0x7e, 0xc5, 0x0f, 0x56, 0xa4, 0xc9, 0xda, 0x30, 0x3c, 0xbb, 0x55, 0xac, 0x1f, 0x27, 0xf1, 0xf1, 0x97, 0x6c, 0xd9, 0x6b, 0xed, 0xa9, 0x46, 0x4f, 0x0e, 0x7b, 0x9c, 0x54, 0x62, 0x0b, 0x8a, 0x9f, 0xba, 0x98, 0x31, 0x64, 0xb8, 0xbe, 0x35, 0x78, 0x42, 0x5a, 0x02, 0x4f, 0x5f, 0xe1, 0x99, 0xc3, 0x63, 0x56, 0xb8, 0x89, 0x72 }, - { 0x37, 0x45, 0x27, 0x3f, 0x4c, 0x38, 0x22, 0x5d, 0xb2, 0x33, 0x73, 0x81, 0x87, 0x1a, 0x0c, 0x6a, 0xaf, 0xd3, 0xaf, 0x9b, 0x01, 0x8c, 0x88, 0xaa, 0x02, 0x02, 0x58, 0x50, 0xa5, 0xdc, 0x3a, 0x42, 0xa1, 0xa3, 0xe0, 0x3e, 0x56, 0xcb, 0xf1, 0xb0, 0x87, 0x6d, 0x63, 0xa4, 0x41, 0xf1, 0xd2, 0x85, 0x6a, 0x39, 0xb8, 0x80, 0x1e, 0xb5, 0xaf, 0x32, 0x52, 0x01, 0xc4, 0x15, 0xd6, 0x5e, 0x97, 0xfe }, - { 0xc5, 0x0c, 0x44, 0xcc, 0xa3, 0xec, 0x3e, 0xda, 0xae, 0x77, 0x9a, 0x7e, 0x17, 0x94, 0x50, 0xeb, 0xdd, 0xa2, 0xf9, 0x70, 0x67, 0xc6, 0x90, 0xaa, 0x6c, 0x5a, 0x4a, 0xc7, 0xc3, 0x01, 0x39, 0xbb, 0x27, 0xc0, 0xdf, 0x4d, 0xb3, 0x22, 0x0e, 0x63, 0xcb, 0x11, 0x0d, 0x64, 0xf3, 0x7f, 0xfe, 0x07, 0x8d, 0xb7, 0x26, 0x53, 0xe2, 0xda, 0xac, 0xf9, 0x3a, 0xe3, 0xf0, 0xa2, 0xd1, 0xa7, 0xeb, 0x2e }, - { 0x8a, 0xef, 0x26, 0x3e, 0x38, 0x5c, 0xbc, 0x61, 0xe1, 0x9b, 0x28, 0x91, 0x42, 0x43, 0x26, 0x2a, 0xf5, 0xaf, 0xe8, 0x72, 0x6a, 0xf3, 0xce, 0x39, 0xa7, 0x9c, 0x27, 0x02, 0x8c, 0xf3, 0xec, 0xd3, 0xf8, 0xd2, 0xdf, 0xd9, 0xcf, 0xc9, 0xad, 0x91, 0xb5, 0x8f, 0x6f, 0x20, 0x77, 0x8f, 0xd5, 0xf0, 0x28, 0x94, 0xa3, 0xd9, 0x1c, 0x7d, 0x57, 0xd1, 0xe4, 0xb8, 0x66, 0xa7, 0xf3, 0x64, 0xb6, 0xbe }, - { 0x28, 0x69, 0x61, 0x41, 0xde, 0x6e, 0x2d, 0x9b, 0xcb, 0x32, 0x35, 0x57, 0x8a, 0x66, 0x16, 0x6c, 0x14, 0x48, 0xd3, 0xe9, 0x05, 0xa1, 0xb4, 0x82, 0xd4, 0x23, 0xbe, 0x4b, 0xc5, 0x36, 0x9b, 0xc8, 0xc7, 0x4d, 0xae, 0x0a, 0xcc, 0x9c, 0xc1, 0x23, 0xe1, 0xd8, 0xdd, 0xce, 0x9f, 0x97, 0x91, 0x7e, 0x8c, 0x01, 0x9c, 0x55, 0x2d, 0xa3, 0x2d, 0x39, 0xd2, 0x21, 0x9b, 0x9a, 0xbf, 0x0f, 0xa8, 0xc8 }, - { 0x2f, 0xb9, 0xeb, 0x20, 0x85, 0x83, 0x01, 0x81, 0x90, 0x3a, 0x9d, 0xaf, 0xe3, 0xdb, 0x42, 0x8e, 0xe1, 0x5b, 0xe7, 0x66, 0x22, 0x24, 0xef, 0xd6, 0x43, 0x37, 0x1f, 0xb2, 0x56, 0x46, 0xae, 0xe7, 0x16, 0xe5, 0x31, 0xec, 0xa6, 0x9b, 0x2b, 0xdc, 0x82, 0x33, 0xf1, 0xa8, 0x08, 0x1f, 0xa4, 0x3d, 0xa1, 0x50, 0x03, 0x02, 0x97, 0x5a, 0x77, 0xf4, 0x2f, 0xa5, 0x92, 0x13, 0x67, 0x10, 0xe9, 0xdc }, - { 0x66, 0xf9, 0xa7, 0x14, 0x3f, 0x7a, 0x33, 0x14, 0xa6, 0x69, 0xbf, 0x2e, 0x24, 0xbb, 0xb3, 0x50, 0x14, 0x26, 0x1d, 0x63, 0x9f, 0x49, 0x5b, 0x6c, 0x9c, 0x1f, 0x10, 0x4f, 0xe8, 0xe3, 0x20, 0xac, 0xa6, 0x0d, 0x45, 0x50, 0xd6, 0x9d, 0x52, 0xed, 0xbd, 0x5a, 0x3c, 0xde, 0xb4, 0x01, 0x4a, 0xe6, 0x5b, 0x1d, 0x87, 0xaa, 0x77, 0x0b, 0x69, 0xae, 0x5c, 0x15, 0xf4, 0x33, 0x0b, 0x0b, 0x0a, 0xd8 }, - { 0xf4, 0xc4, 0xdd, 0x1d, 0x59, 0x4c, 0x35, 0x65, 0xe3, 0xe2, 0x5c, 0xa4, 0x3d, 0xad, 0x82, 0xf6, 0x2a, 0xbe, 0xa4, 0x83, 0x5e, 0xd4, 0xcd, 0x81, 0x1b, 0xcd, 0x97, 0x5e, 0x46, 0x27, 0x98, 0x28, 0xd4, 0x4d, 0x4c, 0x62, 0xc3, 0x67, 0x9f, 0x1b, 0x7f, 0x7b, 0x9d, 0xd4, 0x57, 0x1d, 0x7b, 0x49, 0x55, 0x73, 0x47, 0xb8, 0xc5, 0x46, 0x0c, 0xbd, 0xc1, 0xbe, 0xf6, 0x90, 0xfb, 0x2a, 0x08, 0xc0 }, - { 0x8f, 0x1d, 0xc9, 0x64, 0x9c, 0x3a, 0x84, 0x55, 0x1f, 0x8f, 0x6e, 0x91, 0xca, 0xc6, 0x82, 0x42, 0xa4, 0x3b, 0x1f, 0x8f, 0x32, 0x8e, 0xe9, 0x22, 0x80, 0x25, 0x73, 0x87, 0xfa, 0x75, 0x59, 0xaa, 0x6d, 0xb1, 0x2e, 0x4a, 0xea, 0xdc, 0x2d, 0x26, 0x09, 0x91, 0x78, 0x74, 0x9c, 0x68, 0x64, 0xb3, 0x57, 0xf3, 0xf8, 0x3b, 0x2f, 0xb3, 0xef, 0xa8, 0xd2, 0xa8, 0xdb, 0x05, 0x6b, 0xed, 0x6b, 0xcc }, - { 0x31, 0x39, 0xc1, 0xa7, 0xf9, 0x7a, 0xfd, 0x16, 0x75, 0xd4, 0x60, 0xeb, 0xbc, 0x07, 0xf2, 0x72, 0x8a, 0xa1, 0x50, 0xdf, 0x84, 0x96, 0x24, 0x51, 0x1e, 0xe0, 0x4b, 0x74, 0x3b, 0xa0, 0xa8, 0x33, 0x09, 0x2f, 0x18, 0xc1, 0x2d, 0xc9, 0x1b, 0x4d, 0xd2, 0x43, 0xf3, 0x33, 0x40, 0x2f, 0x59, 0xfe, 0x28, 0xab, 0xdb, 0xbb, 0xae, 0x30, 0x1e, 0x7b, 0x65, 0x9c, 0x7a, 0x26, 0xd5, 0xc0, 0xf9, 0x79 }, - { 0x06, 0xf9, 0x4a, 0x29, 0x96, 0x15, 0x8a, 0x81, 0x9f, 0xe3, 0x4c, 0x40, 0xde, 0x3c, 0xf0, 0x37, 0x9f, 0xd9, 0xfb, 0x85, 0xb3, 0xe3, 0x63, 0xba, 0x39, 0x26, 0xa0, 0xe7, 0xd9, 0x60, 0xe3, 0xf4, 0xc2, 0xe0, 0xc7, 0x0c, 0x7c, 0xe0, 0xcc, 0xb2, 0xa6, 0x4f, 0xc2, 0x98, 0x69, 0xf6, 0xe7, 0xab, 0x12, 0xbd, 0x4d, 0x3f, 0x14, 0xfc, 0xe9, 0x43, 0x27, 0x90, 0x27, 0xe7, 0x85, 0xfb, 0x5c, 0x29 }, - { 0xc2, 0x9c, 0x39, 0x9e, 0xf3, 0xee, 0xe8, 0x96, 0x1e, 0x87, 0x56, 0x5c, 0x1c, 0xe2, 0x63, 0x92, 0x5f, 0xc3, 0xd0, 0xce, 0x26, 0x7d, 0x13, 0xe4, 0x8d, 0xd9, 0xe7, 0x32, 0xee, 0x67, 0xb0, 0xf6, 0x9f, 0xad, 0x56, 0x40, 0x1b, 0x0f, 0x10, 0xfc, 0xaa, 0xc1, 0x19, 0x20, 0x10, 0x46, 0xcc, 0xa2, 0x8c, 0x5b, 0x14, 0xab, 0xde, 0xa3, 0x21, 0x2a, 0xe6, 0x55, 0x62, 0xf7, 0xf1, 0x38, 0xdb, 0x3d }, - { 0x4c, 0xec, 0x4c, 0x9d, 0xf5, 0x2e, 0xef, 0x05, 0xc3, 0xf6, 0xfa, 0xaa, 0x97, 0x91, 0xbc, 0x74, 0x45, 0x93, 0x71, 0x83, 0x22, 0x4e, 0xcc, 0x37, 0xa1, 0xe5, 0x8d, 0x01, 0x32, 0xd3, 0x56, 0x17, 0x53, 0x1d, 0x7e, 0x79, 0x5f, 0x52, 0xaf, 0x7b, 0x1e, 0xb9, 0xd1, 0x47, 0xde, 0x12, 0x92, 0xd3, 0x45, 0xfe, 0x34, 0x18, 0x23, 0xf8, 0xe6, 0xbc, 0x1e, 0x5b, 0xad, 0xca, 0x5c, 0x65, 0x61, 0x08 }, - { 0x89, 0x8b, 0xfb, 0xae, 0x93, 0xb3, 0xe1, 0x8d, 0x00, 0x69, 0x7e, 0xab, 0x7d, 0x97, 0x04, 0xfa, 0x36, 0xec, 0x33, 0x9d, 0x07, 0x61, 0x31, 0xce, 0xfd, 0xf3, 0x0e, 0xdb, 0xe8, 0xd9, 0xcc, 0x81, 0xc3, 0xa8, 0x0b, 0x12, 0x96, 0x59, 0xb1, 0x63, 0xa3, 0x23, 0xba, 0xb9, 0x79, 0x3d, 0x4f, 0xee, 0xd9, 0x2d, 0x54, 0xda, 0xe9, 0x66, 0xc7, 0x75, 0x29, 0x76, 0x4a, 0x09, 0xbe, 0x88, 0xdb, 0x45 }, - { 0xee, 0x9b, 0xd0, 0x46, 0x9d, 0x3a, 0xaf, 0x4f, 0x14, 0x03, 0x5b, 0xe4, 0x8a, 0x2c, 0x3b, 0x84, 0xd9, 0xb4, 0xb1, 0xff, 0xf1, 0xd9, 0x45, 0xe1, 0xf1, 0xc1, 0xd3, 0x89, 0x80, 0xa9, 0x51, 0xbe, 0x19, 0x7b, 0x25, 0xfe, 0x22, 0xc7, 0x31, 0xf2, 0x0a, 0xea, 0xcc, 0x93, 0x0b, 0xa9, 0xc4, 0xa1, 0xf4, 0x76, 0x22, 0x27, 0x61, 0x7a, 0xd3, 0x50, 0xfd, 0xab, 0xb4, 0xe8, 0x02, 0x73, 0xa0, 0xf4 }, - { 0x3d, 0x4d, 0x31, 0x13, 0x30, 0x05, 0x81, 0xcd, 0x96, 0xac, 0xbf, 0x09, 0x1c, 0x3d, 0x0f, 0x3c, 0x31, 0x01, 0x38, 0xcd, 0x69, 0x79, 0xe6, 0x02, 0x6c, 0xde, 0x62, 0x3e, 0x2d, 0xd1, 0xb2, 0x4d, 0x4a, 0x86, 0x38, 0xbe, 0xd1, 0x07, 0x33, 0x44, 0x78, 0x3a, 0xd0, 0x64, 0x9c, 0xc6, 0x30, 0x5c, 0xce, 0xc0, 0x4b, 0xeb, 0x49, 0xf3, 0x1c, 0x63, 0x30, 0x88, 0xa9, 0x9b, 0x65, 0x13, 0x02, 0x67 }, - { 0x95, 0xc0, 0x59, 0x1a, 0xd9, 0x1f, 0x92, 0x1a, 0xc7, 0xbe, 0x6d, 0x9c, 0xe3, 0x7e, 0x06, 0x63, 0xed, 0x80, 0x11, 0xc1, 0xcf, 0xd6, 0xd0, 0x16, 0x2a, 0x55, 0x72, 0xe9, 0x43, 0x68, 0xba, 0xc0, 0x20, 0x24, 0x48, 0x5e, 0x6a, 0x39, 0x85, 0x4a, 0xa4, 0x6f, 0xe3, 0x8e, 0x97, 0xd6, 0xc6, 0xb1, 0x94, 0x7c, 0xd2, 0x72, 0xd8, 0x6b, 0x06, 0xbb, 0x5b, 0x2f, 0x78, 0xb9, 0xb6, 0x8d, 0x55, 0x9d }, - { 0x22, 0x7b, 0x79, 0xde, 0xd3, 0x68, 0x15, 0x3b, 0xf4, 0x6c, 0x0a, 0x3c, 0xa9, 0x78, 0xbf, 0xdb, 0xef, 0x31, 0xf3, 0x02, 0x4a, 0x56, 0x65, 0x84, 0x24, 0x68, 0x49, 0x0b, 0x0f, 0xf7, 0x48, 0xae, 0x04, 0xe7, 0x83, 0x2e, 0xd4, 0xc9, 0xf4, 0x9d, 0xe9, 0xb1, 0x70, 0x67, 0x09, 0xd6, 0x23, 0xe5, 0xc8, 0xc1, 0x5e, 0x3c, 0xae, 0xca, 0xe8, 0xd5, 0xe4, 0x33, 0x43, 0x0f, 0xf7, 0x2f, 0x20, 0xeb }, - { 0x5d, 0x34, 0xf3, 0x95, 0x2f, 0x01, 0x05, 0xee, 0xf8, 0x8a, 0xe8, 0xb6, 0x4c, 0x6c, 0xe9, 0x5e, 0xbf, 0xad, 0xe0, 0xe0, 0x2c, 0x69, 0xb0, 0x87, 0x62, 0xa8, 0x71, 0x2d, 0x2e, 0x49, 0x11, 0xad, 0x3f, 0x94, 0x1f, 0xc4, 0x03, 0x4d, 0xc9, 0xb2, 0xe4, 0x79, 0xfd, 0xbc, 0xd2, 0x79, 0xb9, 0x02, 0xfa, 0xf5, 0xd8, 0x38, 0xbb, 0x2e, 0x0c, 0x64, 0x95, 0xd3, 0x72, 0xb5, 0xb7, 0x02, 0x98, 0x13 }, - { 0x7f, 0x93, 0x9b, 0xf8, 0x35, 0x3a, 0xbc, 0xe4, 0x9e, 0x77, 0xf1, 0x4f, 0x37, 0x50, 0xaf, 0x20, 0xb7, 0xb0, 0x39, 0x02, 0xe1, 0xa1, 0xe7, 0xfb, 0x6a, 0xaf, 0x76, 0xd0, 0x25, 0x9c, 0xd4, 0x01, 0xa8, 0x31, 0x90, 0xf1, 0x56, 0x40, 0xe7, 0x4f, 0x3e, 0x6c, 0x5a, 0x90, 0xe8, 0x39, 0xc7, 0x82, 0x1f, 0x64, 0x74, 0x75, 0x7f, 0x75, 0xc7, 0xbf, 0x90, 0x02, 0x08, 0x4d, 0xdc, 0x7a, 0x62, 0xdc }, - { 0x06, 0x2b, 0x61, 0xa2, 0xf9, 0xa3, 0x3a, 0x71, 0xd7, 0xd0, 0xa0, 0x61, 0x19, 0x64, 0x4c, 0x70, 0xb0, 0x71, 0x6a, 0x50, 0x4d, 0xe7, 0xe5, 0xe1, 0xbe, 0x49, 0xbd, 0x7b, 0x86, 0xe7, 0xed, 0x68, 0x17, 0x71, 0x4f, 0x9f, 0x0f, 0xc3, 0x13, 0xd0, 0x61, 0x29, 0x59, 0x7e, 0x9a, 0x22, 0x35, 0xec, 0x85, 0x21, 0xde, 0x36, 0xf7, 0x29, 0x0a, 0x90, 0xcc, 0xfc, 0x1f, 0xfa, 0x6d, 0x0a, 0xee, 0x29 }, - { 0xf2, 0x9e, 0x01, 0xee, 0xae, 0x64, 0x31, 0x1e, 0xb7, 0xf1, 0xc6, 0x42, 0x2f, 0x94, 0x6b, 0xf7, 0xbe, 0xa3, 0x63, 0x79, 0x52, 0x3e, 0x7b, 0x2b, 0xba, 0xba, 0x7d, 0x1d, 0x34, 0xa2, 0x2d, 0x5e, 0xa5, 0xf1, 0xc5, 0xa0, 0x9d, 0x5c, 0xe1, 0xfe, 0x68, 0x2c, 0xce, 0xd9, 0xa4, 0x79, 0x8d, 0x1a, 0x05, 0xb4, 0x6c, 0xd7, 0x2d, 0xff, 0x5c, 0x1b, 0x35, 0x54, 0x40, 0xb2, 0xa2, 0xd4, 0x76, 0xbc }, - { 0xec, 0x38, 0xcd, 0x3b, 0xba, 0xb3, 0xef, 0x35, 0xd7, 0xcb, 0x6d, 0x5c, 0x91, 0x42, 0x98, 0x35, 0x1d, 0x8a, 0x9d, 0xc9, 0x7f, 0xce, 0xe0, 0x51, 0xa8, 0xa0, 0x2f, 0x58, 0xe3, 0xed, 0x61, 0x84, 0xd0, 0xb7, 0x81, 0x0a, 0x56, 0x15, 0x41, 0x1a, 0xb1, 0xb9, 0x52, 0x09, 0xc3, 0xc8, 0x10, 0x11, 0x4f, 0xde, 0xb2, 0x24, 0x52, 0x08, 0x4e, 0x77, 0xf3, 0xf8, 0x47, 0xc6, 0xdb, 0xaa, 0xfe, 0x16 }, - { 0xc2, 0xae, 0xf5, 0xe0, 0xca, 0x43, 0xe8, 0x26, 0x41, 0x56, 0x5b, 0x8c, 0xb9, 0x43, 0xaa, 0x8b, 0xa5, 0x35, 0x50, 0xca, 0xef, 0x79, 0x3b, 0x65, 0x32, 0xfa, 0xfa, 0xd9, 0x4b, 0x81, 0x60, 0x82, 0xf0, 0x11, 0x3a, 0x3e, 0xa2, 0xf6, 0x36, 0x08, 0xab, 0x40, 0x43, 0x7e, 0xcc, 0x0f, 0x02, 0x29, 0xcb, 0x8f, 0xa2, 0x24, 0xdc, 0xf1, 0xc4, 0x78, 0xa6, 0x7d, 0x9b, 0x64, 0x16, 0x2b, 0x92, 0xd1 }, - { 0x15, 0xf5, 0x34, 0xef, 0xff, 0x71, 0x05, 0xcd, 0x1c, 0x25, 0x4d, 0x07, 0x4e, 0x27, 0xd5, 0x89, 0x8b, 0x89, 0x31, 0x3b, 0x7d, 0x36, 0x6d, 0xc2, 0xd7, 0xd8, 0x71, 0x13, 0xfa, 0x7d, 0x53, 0xaa, 0xe1, 0x3f, 0x6d, 0xba, 0x48, 0x7a, 0xd8, 0x10, 0x3d, 0x5e, 0x85, 0x4c, 0x91, 0xfd, 0xb6, 0xe1, 0xe7, 0x4b, 0x2e, 0xf6, 0xd1, 0x43, 0x17, 0x69, 0xc3, 0x07, 0x67, 0xdd, 0xe0, 0x67, 0xa3, 0x5c }, - { 0x89, 0xac, 0xbc, 0xa0, 0xb1, 0x69, 0x89, 0x7a, 0x0a, 0x27, 0x14, 0xc2, 0xdf, 0x8c, 0x95, 0xb5, 0xb7, 0x9c, 0xb6, 0x93, 0x90, 0x14, 0x2b, 0x7d, 0x60, 0x18, 0xbb, 0x3e, 0x30, 0x76, 0xb0, 0x99, 0xb7, 0x9a, 0x96, 0x41, 0x52, 0xa9, 0xd9, 0x12, 0xb1, 0xb8, 0x64, 0x12, 0xb7, 0xe3, 0x72, 0xe9, 0xce, 0xca, 0xd7, 0xf2, 0x5d, 0x4c, 0xba, 0xb8, 0xa3, 0x17, 0xbe, 0x36, 0x49, 0x2a, 0x67, 0xd7 }, - { 0xe3, 0xc0, 0x73, 0x91, 0x90, 0xed, 0x84, 0x9c, 0x9c, 0x96, 0x2f, 0xd9, 0xdb, 0xb5, 0x5e, 0x20, 0x7e, 0x62, 0x4f, 0xca, 0xc1, 0xeb, 0x41, 0x76, 0x91, 0x51, 0x54, 0x99, 0xee, 0xa8, 0xd8, 0x26, 0x7b, 0x7e, 0x8f, 0x12, 0x87, 0xa6, 0x36, 0x33, 0xaf, 0x50, 0x11, 0xfd, 0xe8, 0xc4, 0xdd, 0xf5, 0x5b, 0xfd, 0xf7, 0x22, 0xed, 0xf8, 0x88, 0x31, 0x41, 0x4f, 0x2c, 0xfa, 0xed, 0x59, 0xcb, 0x9a }, - { 0x8d, 0x6c, 0xf8, 0x7c, 0x08, 0x38, 0x0d, 0x2d, 0x15, 0x06, 0xee, 0xe4, 0x6f, 0xd4, 0x22, 0x2d, 0x21, 0xd8, 0xc0, 0x4e, 0x58, 0x5f, 0xbf, 0xd0, 0x82, 0x69, 0xc9, 0x8f, 0x70, 0x28, 0x33, 0xa1, 0x56, 0x32, 0x6a, 0x07, 0x24, 0x65, 0x64, 0x00, 0xee, 0x09, 0x35, 0x1d, 0x57, 0xb4, 0x40, 0x17, 0x5e, 0x2a, 0x5d, 0xe9, 0x3c, 0xc5, 0xf8, 0x0d, 0xb6, 0xda, 0xf8, 0x35, 0x76, 0xcf, 0x75, 0xfa }, - { 0xda, 0x24, 0xbe, 0xde, 0x38, 0x36, 0x66, 0xd5, 0x63, 0xee, 0xed, 0x37, 0xf6, 0x31, 0x9b, 0xaf, 0x20, 0xd5, 0xc7, 0x5d, 0x16, 0x35, 0xa6, 0xba, 0x5e, 0xf4, 0xcf, 0xa1, 0xac, 0x95, 0x48, 0x7e, 0x96, 0xf8, 0xc0, 0x8a, 0xf6, 0x00, 0xaa, 0xb8, 0x7c, 0x98, 0x6e, 0xba, 0xd4, 0x9f, 0xc7, 0x0a, 0x58, 0xb4, 0x89, 0x0b, 0x9c, 0x87, 0x6e, 0x09, 0x10, 0x16, 0xda, 0xf4, 0x9e, 0x1d, 0x32, 0x2e }, - { 0xf9, 0xd1, 0xd1, 0xb1, 0xe8, 0x7e, 0xa7, 0xae, 0x75, 0x3a, 0x02, 0x97, 0x50, 0xcc, 0x1c, 0xf3, 0xd0, 0x15, 0x7d, 0x41, 0x80, 0x5e, 0x24, 0x5c, 0x56, 0x17, 0xbb, 0x93, 0x4e, 0x73, 0x2f, 0x0a, 0xe3, 0x18, 0x0b, 0x78, 0xe0, 0x5b, 0xfe, 0x76, 0xc7, 0xc3, 0x05, 0x1e, 0x3e, 0x3a, 0xc7, 0x8b, 0x9b, 0x50, 0xc0, 0x51, 0x42, 0x65, 0x7e, 0x1e, 0x03, 0x21, 0x5d, 0x6e, 0xc7, 0xbf, 0xd0, 0xfc }, - { 0x11, 0xb7, 0xbc, 0x16, 0x68, 0x03, 0x20, 0x48, 0xaa, 0x43, 0x34, 0x3d, 0xe4, 0x76, 0x39, 0x5e, 0x81, 0x4b, 0xbb, 0xc2, 0x23, 0x67, 0x8d, 0xb9, 0x51, 0xa1, 0xb0, 0x3a, 0x02, 0x1e, 0xfa, 0xc9, 0x48, 0xcf, 0xbe, 0x21, 0x5f, 0x97, 0xfe, 0x9a, 0x72, 0xa2, 0xf6, 0xbc, 0x03, 0x9e, 0x39, 0x56, 0xbf, 0xa4, 0x17, 0xc1, 0xa9, 0xf1, 0x0d, 0x6d, 0x7b, 0xa5, 0xd3, 0xd3, 0x2f, 0xf3, 0x23, 0xe5 }, - { 0xb8, 0xd9, 0x00, 0x0e, 0x4f, 0xc2, 0xb0, 0x66, 0xed, 0xb9, 0x1a, 0xfe, 0xe8, 0xe7, 0xeb, 0x0f, 0x24, 0xe3, 0xa2, 0x01, 0xdb, 0x8b, 0x67, 0x93, 0xc0, 0x60, 0x85, 0x81, 0xe6, 0x28, 0xed, 0x0b, 0xcc, 0x4e, 0x5a, 0xa6, 0x78, 0x79, 0x92, 0xa4, 0xbc, 0xc4, 0x4e, 0x28, 0x80, 0x93, 0xe6, 0x3e, 0xe8, 0x3a, 0xbd, 0x0b, 0xc3, 0xec, 0x6d, 0x09, 0x34, 0xa6, 0x74, 0xa4, 0xda, 0x13, 0x83, 0x8a }, - { 0xce, 0x32, 0x5e, 0x29, 0x4f, 0x9b, 0x67, 0x19, 0xd6, 0xb6, 0x12, 0x78, 0x27, 0x6a, 0xe0, 0x6a, 0x25, 0x64, 0xc0, 0x3b, 0xb0, 0xb7, 0x83, 0xfa, 0xfe, 0x78, 0x5b, 0xdf, 0x89, 0xc7, 0xd5, 0xac, 0xd8, 0x3e, 0x78, 0x75, 0x6d, 0x30, 0x1b, 0x44, 0x56, 0x99, 0x02, 0x4e, 0xae, 0xb7, 0x7b, 0x54, 0xd4, 0x77, 0x33, 0x6e, 0xc2, 0xa4, 0xf3, 0x32, 0xf2, 0xb3, 0xf8, 0x87, 0x65, 0xdd, 0xb0, 0xc3 }, - { 0x29, 0xac, 0xc3, 0x0e, 0x96, 0x03, 0xae, 0x2f, 0xcc, 0xf9, 0x0b, 0xf9, 0x7e, 0x6c, 0xc4, 0x63, 0xeb, 0xe2, 0x8c, 0x1b, 0x2f, 0x9b, 0x4b, 0x76, 0x5e, 0x70, 0x53, 0x7c, 0x25, 0xc7, 0x02, 0xa2, 0x9d, 0xcb, 0xfb, 0xf1, 0x4c, 0x99, 0xc5, 0x43, 0x45, 0xba, 0x2b, 0x51, 0xf1, 0x7b, 0x77, 0xb5, 0xf1, 0x5d, 0xb9, 0x2b, 0xba, 0xd8, 0xfa, 0x95, 0xc4, 0x71, 0xf5, 0xd0, 0x70, 0xa1, 0x37, 0xcc }, - { 0x33, 0x79, 0xcb, 0xaa, 0xe5, 0x62, 0xa8, 0x7b, 0x4c, 0x04, 0x25, 0x55, 0x0f, 0xfd, 0xd6, 0xbf, 0xe1, 0x20, 0x3f, 0x0d, 0x66, 0x6c, 0xc7, 0xea, 0x09, 0x5b, 0xe4, 0x07, 0xa5, 0xdf, 0xe6, 0x1e, 0xe9, 0x14, 0x41, 0xcd, 0x51, 0x54, 0xb3, 0xe5, 0x3b, 0x4f, 0x5f, 0xb3, 0x1a, 0xd4, 0xc7, 0xa9, 0xad, 0x5c, 0x7a, 0xf4, 0xae, 0x67, 0x9a, 0xa5, 0x1a, 0x54, 0x00, 0x3a, 0x54, 0xca, 0x6b, 0x2d }, - { 0x30, 0x95, 0xa3, 0x49, 0xd2, 0x45, 0x70, 0x8c, 0x7c, 0xf5, 0x50, 0x11, 0x87, 0x03, 0xd7, 0x30, 0x2c, 0x27, 0xb6, 0x0a, 0xf5, 0xd4, 0xe6, 0x7f, 0xc9, 0x78, 0xf8, 0xa4, 0xe6, 0x09, 0x53, 0xc7, 0xa0, 0x4f, 0x92, 0xfc, 0xf4, 0x1a, 0xee, 0x64, 0x32, 0x1c, 0xcb, 0x70, 0x7a, 0x89, 0x58, 0x51, 0x55, 0x2b, 0x1e, 0x37, 0xb0, 0x0b, 0xc5, 0xe6, 0xb7, 0x2f, 0xa5, 0xbc, 0xef, 0x9e, 0x3f, 0xff }, - { 0x07, 0x26, 0x2d, 0x73, 0x8b, 0x09, 0x32, 0x1f, 0x4d, 0xbc, 0xce, 0xc4, 0xbb, 0x26, 0xf4, 0x8c, 0xb0, 0xf0, 0xed, 0x24, 0x6c, 0xe0, 0xb3, 0x1b, 0x9a, 0x6e, 0x7b, 0xc6, 0x83, 0x04, 0x9f, 0x1f, 0x3e, 0x55, 0x45, 0xf2, 0x8c, 0xe9, 0x32, 0xdd, 0x98, 0x5c, 0x5a, 0xb0, 0xf4, 0x3b, 0xd6, 0xde, 0x07, 0x70, 0x56, 0x0a, 0xf3, 0x29, 0x06, 0x5e, 0xd2, 0xe4, 0x9d, 0x34, 0x62, 0x4c, 0x2c, 0xbb }, - { 0xb6, 0x40, 0x5e, 0xca, 0x8e, 0xe3, 0x31, 0x6c, 0x87, 0x06, 0x1c, 0xc6, 0xec, 0x18, 0xdb, 0xa5, 0x3e, 0x6c, 0x25, 0x0c, 0x63, 0xba, 0x1f, 0x3b, 0xae, 0x9e, 0x55, 0xdd, 0x34, 0x98, 0x03, 0x6a, 0xf0, 0x8c, 0xd2, 0x72, 0xaa, 0x24, 0xd7, 0x13, 0xc6, 0x02, 0x0d, 0x77, 0xab, 0x2f, 0x39, 0x19, 0xaf, 0x1a, 0x32, 0xf3, 0x07, 0x42, 0x06, 0x18, 0xab, 0x97, 0xe7, 0x39, 0x53, 0x99, 0x4f, 0xb4 }, - { 0x7e, 0xe6, 0x82, 0xf6, 0x31, 0x48, 0xee, 0x45, 0xf6, 0xe5, 0x31, 0x5d, 0xa8, 0x1e, 0x5c, 0x6e, 0x55, 0x7c, 0x2c, 0x34, 0x64, 0x1f, 0xc5, 0x09, 0xc7, 0xa5, 0x70, 0x10, 0x88, 0xc3, 0x8a, 0x74, 0x75, 0x61, 0x68, 0xe2, 0xcd, 0x8d, 0x35, 0x1e, 0x88, 0xfd, 0x1a, 0x45, 0x1f, 0x36, 0x0a, 0x01, 0xf5, 0xb2, 0x58, 0x0f, 0x9b, 0x5a, 0x2e, 0x8c, 0xfc, 0x13, 0x8f, 0x3d, 0xd5, 0x9a, 0x3f, 0xfc }, - { 0x1d, 0x26, 0x3c, 0x17, 0x9d, 0x6b, 0x26, 0x8f, 0x6f, 0xa0, 0x16, 0xf3, 0xa4, 0xf2, 0x9e, 0x94, 0x38, 0x91, 0x12, 0x5e, 0xd8, 0x59, 0x3c, 0x81, 0x25, 0x60, 0x59, 0xf5, 0xa7, 0xb4, 0x4a, 0xf2, 0xdc, 0xb2, 0x03, 0x0d, 0x17, 0x5c, 0x00, 0xe6, 0x2e, 0xca, 0xf7, 0xee, 0x96, 0x68, 0x2a, 0xa0, 0x7a, 0xb2, 0x0a, 0x61, 0x10, 0x24, 0xa2, 0x85, 0x32, 0xb1, 0xc2, 0x5b, 0x86, 0x65, 0x79, 0x02 }, - { 0x10, 0x6d, 0x13, 0x2c, 0xbd, 0xb4, 0xcd, 0x25, 0x97, 0x81, 0x28, 0x46, 0xe2, 0xbc, 0x1b, 0xf7, 0x32, 0xfe, 0xc5, 0xf0, 0xa5, 0xf6, 0x5d, 0xbb, 0x39, 0xec, 0x4e, 0x6d, 0xc6, 0x4a, 0xb2, 0xce, 0x6d, 0x24, 0x63, 0x0d, 0x0f, 0x15, 0xa8, 0x05, 0xc3, 0x54, 0x00, 0x25, 0xd8, 0x4a, 0xfa, 0x98, 0xe3, 0x67, 0x03, 0xc3, 0xdb, 0xee, 0x71, 0x3e, 0x72, 0xdd, 0xe8, 0x46, 0x5b, 0xc1, 0xbe, 0x7e }, - { 0x0e, 0x79, 0x96, 0x82, 0x26, 0x65, 0x06, 0x67, 0xa8, 0xd8, 0x62, 0xea, 0x8d, 0xa4, 0x89, 0x1a, 0xf5, 0x6a, 0x4e, 0x3a, 0x8b, 0x6d, 0x17, 0x50, 0xe3, 0x94, 0xf0, 0xde, 0xa7, 0x6d, 0x64, 0x0d, 0x85, 0x07, 0x7b, 0xce, 0xc2, 0xcc, 0x86, 0x88, 0x6e, 0x50, 0x67, 0x51, 0xb4, 0xf6, 0xa5, 0x83, 0x8f, 0x7f, 0x0b, 0x5f, 0xef, 0x76, 0x5d, 0x9d, 0xc9, 0x0d, 0xcd, 0xcb, 0xaf, 0x07, 0x9f, 0x08 }, - { 0x52, 0x11, 0x56, 0xa8, 0x2a, 0xb0, 0xc4, 0xe5, 0x66, 0xe5, 0x84, 0x4d, 0x5e, 0x31, 0xad, 0x9a, 0xaf, 0x14, 0x4b, 0xbd, 0x5a, 0x46, 0x4f, 0xdc, 0xa3, 0x4d, 0xbd, 0x57, 0x17, 0xe8, 0xff, 0x71, 0x1d, 0x3f, 0xfe, 0xbb, 0xfa, 0x08, 0x5d, 0x67, 0xfe, 0x99, 0x6a, 0x34, 0xf6, 0xd3, 0xe4, 0xe6, 0x0b, 0x13, 0x96, 0xbf, 0x4b, 0x16, 0x10, 0xc2, 0x63, 0xbd, 0xbb, 0x83, 0x4d, 0x56, 0x08, 0x16 }, - { 0x1a, 0xba, 0x88, 0xbe, 0xfc, 0x55, 0xbc, 0x25, 0xef, 0xbc, 0xe0, 0x2d, 0xb8, 0xb9, 0x93, 0x3e, 0x46, 0xf5, 0x76, 0x61, 0xba, 0xea, 0xbe, 0xb2, 0x1c, 0xc2, 0x57, 0x4d, 0x2a, 0x51, 0x8a, 0x3c, 0xba, 0x5d, 0xc5, 0xa3, 0x8e, 0x49, 0x71, 0x34, 0x40, 0xb2, 0x5f, 0x9c, 0x74, 0x4e, 0x75, 0xf6, 0xb8, 0x5c, 0x9d, 0x8f, 0x46, 0x81, 0xf6, 0x76, 0x16, 0x0f, 0x61, 0x05, 0x35, 0x7b, 0x84, 0x06 }, - { 0x5a, 0x99, 0x49, 0xfc, 0xb2, 0xc4, 0x73, 0xcd, 0xa9, 0x68, 0xac, 0x1b, 0x5d, 0x08, 0x56, 0x6d, 0xc2, 0xd8, 0x16, 0xd9, 0x60, 0xf5, 0x7e, 0x63, 0xb8, 0x98, 0xfa, 0x70, 0x1c, 0xf8, 0xeb, 0xd3, 0xf5, 0x9b, 0x12, 0x4d, 0x95, 0xbf, 0xbb, 0xed, 0xc5, 0xf1, 0xcf, 0x0e, 0x17, 0xd5, 0xea, 0xed, 0x0c, 0x02, 0xc5, 0x0b, 0x69, 0xd8, 0xa4, 0x02, 0xca, 0xbc, 0xca, 0x44, 0x33, 0xb5, 0x1f, 0xd4 }, - { 0xb0, 0xce, 0xad, 0x09, 0x80, 0x7c, 0x67, 0x2a, 0xf2, 0xeb, 0x2b, 0x0f, 0x06, 0xdd, 0xe4, 0x6c, 0xf5, 0x37, 0x0e, 0x15, 0xa4, 0x09, 0x6b, 0x1a, 0x7d, 0x7c, 0xbb, 0x36, 0xec, 0x31, 0xc2, 0x05, 0xfb, 0xef, 0xca, 0x00, 0xb7, 0xa4, 0x16, 0x2f, 0xa8, 0x9f, 0xb4, 0xfb, 0x3e, 0xb7, 0x8d, 0x79, 0x77, 0x0c, 0x23, 0xf4, 0x4e, 0x72, 0x06, 0x66, 0x4c, 0xe3, 0xcd, 0x93, 0x1c, 0x29, 0x1e, 0x5d }, - { 0xbb, 0x66, 0x64, 0x93, 0x1e, 0xc9, 0x70, 0x44, 0xe4, 0x5b, 0x2a, 0xe4, 0x20, 0xae, 0x1c, 0x55, 0x1a, 0x88, 0x74, 0xbc, 0x93, 0x7d, 0x08, 0xe9, 0x69, 0x39, 0x9c, 0x39, 0x64, 0xeb, 0xdb, 0xa8, 0x34, 0x6c, 0xdd, 0x5d, 0x09, 0xca, 0xaf, 0xe4, 0xc2, 0x8b, 0xa7, 0xec, 0x78, 0x81, 0x91, 0xce, 0xca, 0x65, 0xdd, 0xd6, 0xf9, 0x5f, 0x18, 0x58, 0x3e, 0x04, 0x0d, 0x0f, 0x30, 0xd0, 0x36, 0x4d }, - { 0x65, 0xbc, 0x77, 0x0a, 0x5f, 0xaa, 0x37, 0x92, 0x36, 0x98, 0x03, 0x68, 0x3e, 0x84, 0x4b, 0x0b, 0xe7, 0xee, 0x96, 0xf2, 0x9f, 0x6d, 0x6a, 0x35, 0x56, 0x80, 0x06, 0xbd, 0x55, 0x90, 0xf9, 0xa4, 0xef, 0x63, 0x9b, 0x7a, 0x80, 0x61, 0xc7, 0xb0, 0x42, 0x4b, 0x66, 0xb6, 0x0a, 0xc3, 0x4a, 0xf3, 0x11, 0x99, 0x05, 0xf3, 0x3a, 0x9d, 0x8c, 0x3a, 0xe1, 0x83, 0x82, 0xca, 0x9b, 0x68, 0x99, 0x00 }, - { 0xea, 0x9b, 0x4d, 0xca, 0x33, 0x33, 0x36, 0xaa, 0xf8, 0x39, 0xa4, 0x5c, 0x6e, 0xaa, 0x48, 0xb8, 0xcb, 0x4c, 0x7d, 0xda, 0xbf, 0xfe, 0xa4, 0xf6, 0x43, 0xd6, 0x35, 0x7e, 0xa6, 0x62, 0x8a, 0x48, 0x0a, 0x5b, 0x45, 0xf2, 0xb0, 0x52, 0xc1, 0xb0, 0x7d, 0x1f, 0xed, 0xca, 0x91, 0x8b, 0x6f, 0x11, 0x39, 0xd8, 0x0f, 0x74, 0xc2, 0x45, 0x10, 0xdc, 0xba, 0xa4, 0xbe, 0x70, 0xea, 0xcc, 0x1b, 0x06 }, - { 0xe6, 0x34, 0x2f, 0xb4, 0xa7, 0x80, 0xad, 0x97, 0x5d, 0x0e, 0x24, 0xbc, 0xe1, 0x49, 0x98, 0x9b, 0x91, 0xd3, 0x60, 0x55, 0x7e, 0x87, 0x99, 0x4f, 0x6b, 0x45, 0x7b, 0x89, 0x55, 0x75, 0xcc, 0x02, 0xd0, 0xc1, 0x5b, 0xad, 0x3c, 0xe7, 0x57, 0x7f, 0x4c, 0x63, 0x92, 0x7f, 0xf1, 0x3f, 0x3e, 0x38, 0x1f, 0xf7, 0xe7, 0x2b, 0xdb, 0xe7, 0x45, 0x32, 0x48, 0x44, 0xa9, 0xd2, 0x7e, 0x3f, 0x1c, 0x01 }, - { 0x3e, 0x20, 0x9c, 0x9b, 0x33, 0xe8, 0xe4, 0x61, 0x17, 0x8a, 0xb4, 0x6b, 0x1c, 0x64, 0xb4, 0x9a, 0x07, 0xfb, 0x74, 0x5f, 0x1c, 0x8b, 0xc9, 0x5f, 0xbf, 0xb9, 0x4c, 0x6b, 0x87, 0xc6, 0x95, 0x16, 0x65, 0x1b, 0x26, 0x4e, 0xf9, 0x80, 0x93, 0x7f, 0xad, 0x41, 0x23, 0x8b, 0x91, 0xdd, 0xc0, 0x11, 0xa5, 0xdd, 0x77, 0x7c, 0x7e, 0xfd, 0x44, 0x94, 0xb4, 0xb6, 0xec, 0xd3, 0xa9, 0xc2, 0x2a, 0xc0 }, - { 0xfd, 0x6a, 0x3d, 0x5b, 0x18, 0x75, 0xd8, 0x04, 0x86, 0xd6, 0xe6, 0x96, 0x94, 0xa5, 0x6d, 0xbb, 0x04, 0xa9, 0x9a, 0x4d, 0x05, 0x1f, 0x15, 0xdb, 0x26, 0x89, 0x77, 0x6b, 0xa1, 0xc4, 0x88, 0x2e, 0x6d, 0x46, 0x2a, 0x60, 0x3b, 0x70, 0x15, 0xdc, 0x9f, 0x4b, 0x74, 0x50, 0xf0, 0x53, 0x94, 0x30, 0x3b, 0x86, 0x52, 0xcf, 0xb4, 0x04, 0xa2, 0x66, 0x96, 0x2c, 0x41, 0xba, 0xe6, 0xe1, 0x8a, 0x94 }, - { 0x95, 0x1e, 0x27, 0x51, 0x7e, 0x6b, 0xad, 0x9e, 0x41, 0x95, 0xfc, 0x86, 0x71, 0xde, 0xe3, 0xe7, 0xe9, 0xbe, 0x69, 0xce, 0xe1, 0x42, 0x2c, 0xb9, 0xfe, 0xcf, 0xce, 0x0d, 0xba, 0x87, 0x5f, 0x7b, 0x31, 0x0b, 0x93, 0xee, 0x3a, 0x3d, 0x55, 0x8f, 0x94, 0x1f, 0x63, 0x5f, 0x66, 0x8f, 0xf8, 0x32, 0xd2, 0xc1, 0xd0, 0x33, 0xc5, 0xe2, 0xf0, 0x99, 0x7e, 0x4c, 0x66, 0xf1, 0x47, 0x34, 0x4e, 0x02 }, - { 0x8e, 0xba, 0x2f, 0x87, 0x4f, 0x1a, 0xe8, 0x40, 0x41, 0x90, 0x3c, 0x7c, 0x42, 0x53, 0xc8, 0x22, 0x92, 0x53, 0x0f, 0xc8, 0x50, 0x95, 0x50, 0xbf, 0xdc, 0x34, 0xc9, 0x5c, 0x7e, 0x28, 0x89, 0xd5, 0x65, 0x0b, 0x0a, 0xd8, 0xcb, 0x98, 0x8e, 0x5c, 0x48, 0x94, 0xcb, 0x87, 0xfb, 0xfb, 0xb1, 0x96, 0x12, 0xea, 0x93, 0xcc, 0xc4, 0xc5, 0xca, 0xd1, 0x71, 0x58, 0xb9, 0x76, 0x34, 0x64, 0xb4, 0x92 }, - { 0x16, 0xf7, 0x12, 0xea, 0xa1, 0xb7, 0xc6, 0x35, 0x47, 0x19, 0xa8, 0xe7, 0xdb, 0xdf, 0xaf, 0x55, 0xe4, 0x06, 0x3a, 0x4d, 0x27, 0x7d, 0x94, 0x75, 0x50, 0x01, 0x9b, 0x38, 0xdf, 0xb5, 0x64, 0x83, 0x09, 0x11, 0x05, 0x7d, 0x50, 0x50, 0x61, 0x36, 0xe2, 0x39, 0x4c, 0x3b, 0x28, 0x94, 0x5c, 0xc9, 0x64, 0x96, 0x7d, 0x54, 0xe3, 0x00, 0x0c, 0x21, 0x81, 0x62, 0x6c, 0xfb, 0x9b, 0x73, 0xef, 0xd2 }, - { 0xc3, 0x96, 0x39, 0xe7, 0xd5, 0xc7, 0xfb, 0x8c, 0xdd, 0x0f, 0xd3, 0xe6, 0xa5, 0x20, 0x96, 0x03, 0x94, 0x37, 0x12, 0x2f, 0x21, 0xc7, 0x8f, 0x16, 0x79, 0xce, 0xa9, 0xd7, 0x8a, 0x73, 0x4c, 0x56, 0xec, 0xbe, 0xb2, 0x86, 0x54, 0xb4, 0xf1, 0x8e, 0x34, 0x2c, 0x33, 0x1f, 0x6f, 0x72, 0x29, 0xec, 0x4b, 0x4b, 0xc2, 0x81, 0xb2, 0xd8, 0x0a, 0x6e, 0xb5, 0x00, 0x43, 0xf3, 0x17, 0x96, 0xc8, 0x8c }, - { 0x72, 0xd0, 0x81, 0xaf, 0x99, 0xf8, 0xa1, 0x73, 0xdc, 0xc9, 0xa0, 0xac, 0x4e, 0xb3, 0x55, 0x74, 0x05, 0x63, 0x9a, 0x29, 0x08, 0x4b, 0x54, 0xa4, 0x01, 0x72, 0x91, 0x2a, 0x2f, 0x8a, 0x39, 0x51, 0x29, 0xd5, 0x53, 0x6f, 0x09, 0x18, 0xe9, 0x02, 0xf9, 0xe8, 0xfa, 0x60, 0x00, 0x99, 0x5f, 0x41, 0x68, 0xdd, 0xc5, 0xf8, 0x93, 0x01, 0x1b, 0xe6, 0xa0, 0xdb, 0xc9, 0xb8, 0xa1, 0xa3, 0xf5, 0xbb }, - { 0xc1, 0x1a, 0xa8, 0x1e, 0x5e, 0xfd, 0x24, 0xd5, 0xfc, 0x27, 0xee, 0x58, 0x6c, 0xfd, 0x88, 0x47, 0xfb, 0xb0, 0xe2, 0x76, 0x01, 0xcc, 0xec, 0xe5, 0xec, 0xca, 0x01, 0x98, 0xe3, 0xc7, 0x76, 0x53, 0x93, 0xbb, 0x74, 0x45, 0x7c, 0x7e, 0x7a, 0x27, 0xeb, 0x91, 0x70, 0x35, 0x0e, 0x1f, 0xb5, 0x38, 0x57, 0x17, 0x75, 0x06, 0xbe, 0x3e, 0x76, 0x2c, 0xc0, 0xf1, 0x4d, 0x8c, 0x3a, 0xfe, 0x90, 0x77 }, - { 0xc2, 0x8f, 0x21, 0x50, 0xb4, 0x52, 0xe6, 0xc0, 0xc4, 0x24, 0xbc, 0xde, 0x6f, 0x8d, 0x72, 0x00, 0x7f, 0x93, 0x10, 0xfe, 0xd7, 0xf2, 0xf8, 0x7d, 0xe0, 0xdb, 0xb6, 0x4f, 0x44, 0x79, 0xd6, 0xc1, 0x44, 0x1b, 0xa6, 0x6f, 0x44, 0xb2, 0xac, 0xce, 0xe6, 0x16, 0x09, 0x17, 0x7e, 0xd3, 0x40, 0x12, 0x8b, 0x40, 0x7e, 0xce, 0xc7, 0xc6, 0x4b, 0xbe, 0x50, 0xd6, 0x3d, 0x22, 0xd8, 0x62, 0x77, 0x27 }, - { 0xf6, 0x3d, 0x88, 0x12, 0x28, 0x77, 0xec, 0x30, 0xb8, 0xc8, 0xb0, 0x0d, 0x22, 0xe8, 0x90, 0x00, 0xa9, 0x66, 0x42, 0x61, 0x12, 0xbd, 0x44, 0x16, 0x6e, 0x2f, 0x52, 0x5b, 0x76, 0x9c, 0xcb, 0xe9, 0xb2, 0x86, 0xd4, 0x37, 0xa0, 0x12, 0x91, 0x30, 0xdd, 0xe1, 0xa8, 0x6c, 0x43, 0xe0, 0x4b, 0xed, 0xb5, 0x94, 0xe6, 0x71, 0xd9, 0x82, 0x83, 0xaf, 0xe6, 0x4c, 0xe3, 0x31, 0xde, 0x98, 0x28, 0xfd }, - { 0x34, 0x8b, 0x05, 0x32, 0x88, 0x0b, 0x88, 0xa6, 0x61, 0x4a, 0x8d, 0x74, 0x08, 0xc3, 0xf9, 0x13, 0x35, 0x7f, 0xbb, 0x60, 0xe9, 0x95, 0xc6, 0x02, 0x05, 0xbe, 0x91, 0x39, 0xe7, 0x49, 0x98, 0xae, 0xde, 0x7f, 0x45, 0x81, 0xe4, 0x2f, 0x6b, 0x52, 0x69, 0x8f, 0x7f, 0xa1, 0x21, 0x97, 0x08, 0xc1, 0x44, 0x98, 0x06, 0x7f, 0xd1, 0xe0, 0x95, 0x02, 0xde, 0x83, 0xa7, 0x7d, 0xd2, 0x81, 0x15, 0x0c }, - { 0x51, 0x33, 0xdc, 0x8b, 0xef, 0x72, 0x53, 0x59, 0xdf, 0xf5, 0x97, 0x92, 0xd8, 0x5e, 0xaf, 0x75, 0xb7, 0xe1, 0xdc, 0xd1, 0x97, 0x8b, 0x01, 0xc3, 0x5b, 0x1b, 0x85, 0xfc, 0xeb, 0xc6, 0x33, 0x88, 0xad, 0x99, 0xa1, 0x7b, 0x63, 0x46, 0xa2, 0x17, 0xdc, 0x1a, 0x96, 0x22, 0xeb, 0xd1, 0x22, 0xec, 0xf6, 0x91, 0x3c, 0x4d, 0x31, 0xa6, 0xb5, 0x2a, 0x69, 0x5b, 0x86, 0xaf, 0x00, 0xd7, 0x41, 0xa0 }, - { 0x27, 0x53, 0xc4, 0xc0, 0xe9, 0x8e, 0xca, 0xd8, 0x06, 0xe8, 0x87, 0x80, 0xec, 0x27, 0xfc, 0xcd, 0x0f, 0x5c, 0x1a, 0xb5, 0x47, 0xf9, 0xe4, 0xbf, 0x16, 0x59, 0xd1, 0x92, 0xc2, 0x3a, 0xa2, 0xcc, 0x97, 0x1b, 0x58, 0xb6, 0x80, 0x25, 0x80, 0xba, 0xef, 0x8a, 0xdc, 0x3b, 0x77, 0x6e, 0xf7, 0x08, 0x6b, 0x25, 0x45, 0xc2, 0x98, 0x7f, 0x34, 0x8e, 0xe3, 0x71, 0x9c, 0xde, 0xf2, 0x58, 0xc4, 0x03 }, - { 0xb1, 0x66, 0x35, 0x73, 0xce, 0x4b, 0x9d, 0x8c, 0xae, 0xfc, 0x86, 0x50, 0x12, 0xf3, 0xe3, 0x97, 0x14, 0xb9, 0x89, 0x8a, 0x5d, 0xa6, 0xce, 0x17, 0xc2, 0x5a, 0x6a, 0x47, 0x93, 0x1a, 0x9d, 0xdb, 0x9b, 0xbe, 0x98, 0xad, 0xaa, 0x55, 0x3b, 0xee, 0xd4, 0x36, 0xe8, 0x95, 0x78, 0x45, 0x54, 0x16, 0xc2, 0xa5, 0x2a, 0x52, 0x5c, 0xf2, 0x86, 0x2b, 0x8d, 0x1d, 0x49, 0xa2, 0x53, 0x1b, 0x73, 0x91 }, - { 0x64, 0xf5, 0x8b, 0xd6, 0xbf, 0xc8, 0x56, 0xf5, 0xe8, 0x73, 0xb2, 0xa2, 0x95, 0x6e, 0xa0, 0xed, 0xa0, 0xd6, 0xdb, 0x0d, 0xa3, 0x9c, 0x8c, 0x7f, 0xc6, 0x7c, 0x9f, 0x9f, 0xee, 0xfc, 0xff, 0x30, 0x72, 0xcd, 0xf9, 0xe6, 0xea, 0x37, 0xf6, 0x9a, 0x44, 0xf0, 0xc6, 0x1a, 0xa0, 0xda, 0x36, 0x93, 0xc2, 0xdb, 0x5b, 0x54, 0x96, 0x0c, 0x02, 0x81, 0xa0, 0x88, 0x15, 0x1d, 0xb4, 0x2b, 0x11, 0xe8 }, - { 0x07, 0x64, 0xc7, 0xbe, 0x28, 0x12, 0x5d, 0x90, 0x65, 0xc4, 0xb9, 0x8a, 0x69, 0xd6, 0x0a, 0xed, 0xe7, 0x03, 0x54, 0x7c, 0x66, 0xa1, 0x2e, 0x17, 0xe1, 0xc6, 0x18, 0x99, 0x41, 0x32, 0xf5, 0xef, 0x82, 0x48, 0x2c, 0x1e, 0x3f, 0xe3, 0x14, 0x6c, 0xc6, 0x53, 0x76, 0xcc, 0x10, 0x9f, 0x01, 0x38, 0xed, 0x9a, 0x80, 0xe4, 0x9f, 0x1f, 0x3c, 0x7d, 0x61, 0x0d, 0x2f, 0x24, 0x32, 0xf2, 0x06, 0x05 }, - { 0xf7, 0x48, 0x78, 0x43, 0x98, 0xa2, 0xff, 0x03, 0xeb, 0xeb, 0x07, 0xe1, 0x55, 0xe6, 0x61, 0x16, 0xa8, 0x39, 0x74, 0x1a, 0x33, 0x6e, 0x32, 0xda, 0x71, 0xec, 0x69, 0x60, 0x01, 0xf0, 0xad, 0x1b, 0x25, 0xcd, 0x48, 0xc6, 0x9c, 0xfc, 0xa7, 0x26, 0x5e, 0xca, 0x1d, 0xd7, 0x19, 0x04, 0xa0, 0xce, 0x74, 0x8a, 0xc4, 0x12, 0x4f, 0x35, 0x71, 0x07, 0x6d, 0xfa, 0x71, 0x16, 0xa9, 0xcf, 0x00, 0xe9 }, - { 0x3f, 0x0d, 0xbc, 0x01, 0x86, 0xbc, 0xeb, 0x6b, 0x78, 0x5b, 0xa7, 0x8d, 0x2a, 0x2a, 0x01, 0x3c, 0x91, 0x0b, 0xe1, 0x57, 0xbd, 0xaf, 0xfa, 0xe8, 0x1b, 0xb6, 0x66, 0x3b, 0x1a, 0x73, 0x72, 0x2f, 0x7f, 0x12, 0x28, 0x79, 0x5f, 0x3e, 0xca, 0xda, 0x87, 0xcf, 0x6e, 0xf0, 0x07, 0x84, 0x74, 0xaf, 0x73, 0xf3, 0x1e, 0xca, 0x0c, 0xc2, 0x00, 0xed, 0x97, 0x5b, 0x68, 0x93, 0xf7, 0x61, 0xcb, 0x6d }, - { 0xd4, 0x76, 0x2c, 0xd4, 0x59, 0x98, 0x76, 0xca, 0x75, 0xb2, 0xb8, 0xfe, 0x24, 0x99, 0x44, 0xdb, 0xd2, 0x7a, 0xce, 0x74, 0x1f, 0xda, 0xb9, 0x36, 0x16, 0xcb, 0xc6, 0xe4, 0x25, 0x46, 0x0f, 0xeb, 0x51, 0xd4, 0xe7, 0xad, 0xcc, 0x38, 0x18, 0x0e, 0x7f, 0xc4, 0x7c, 0x89, 0x02, 0x4a, 0x7f, 0x56, 0x19, 0x1a, 0xdb, 0x87, 0x8d, 0xfd, 0xe4, 0xea, 0xd6, 0x22, 0x23, 0xf5, 0xa2, 0x61, 0x0e, 0xfe }, - { 0xcd, 0x36, 0xb3, 0xd5, 0xb4, 0xc9, 0x1b, 0x90, 0xfc, 0xbb, 0xa7, 0x95, 0x13, 0xcf, 0xee, 0x19, 0x07, 0xd8, 0x64, 0x5a, 0x16, 0x2a, 0xfd, 0x0c, 0xd4, 0xcf, 0x41, 0x92, 0xd4, 0xa5, 0xf4, 0xc8, 0x92, 0x18, 0x3a, 0x8e, 0xac, 0xdb, 0x2b, 0x6b, 0x6a, 0x9d, 0x9a, 0xa8, 0xc1, 0x1a, 0xc1, 0xb2, 0x61, 0xb3, 0x80, 0xdb, 0xee, 0x24, 0xca, 0x46, 0x8f, 0x1b, 0xfd, 0x04, 0x3c, 0x58, 0xee, 0xfe }, - { 0x98, 0x59, 0x34, 0x52, 0x28, 0x16, 0x61, 0xa5, 0x3c, 0x48, 0xa9, 0xd8, 0xcd, 0x79, 0x08, 0x26, 0xc1, 0xa1, 0xce, 0x56, 0x77, 0x38, 0x05, 0x3d, 0x0b, 0xee, 0x4a, 0x91, 0xa3, 0xd5, 0xbd, 0x92, 0xee, 0xfd, 0xba, 0xbe, 0xbe, 0x32, 0x04, 0xf2, 0x03, 0x1c, 0xa5, 0xf7, 0x81, 0xbd, 0xa9, 0x9e, 0xf5, 0xd8, 0xae, 0x56, 0xe5, 0xb0, 0x4a, 0x9e, 0x1e, 0xcd, 0x21, 0xb0, 0xeb, 0x05, 0xd3, 0xe1 }, - { 0x77, 0x1f, 0x57, 0xdd, 0x27, 0x75, 0xcc, 0xda, 0xb5, 0x59, 0x21, 0xd3, 0xe8, 0xe3, 0x0c, 0xcf, 0x48, 0x4d, 0x61, 0xfe, 0x1c, 0x1b, 0x9c, 0x2a, 0xe8, 0x19, 0xd0, 0xfb, 0x2a, 0x12, 0xfa, 0xb9, 0xbe, 0x70, 0xc4, 0xa7, 0xa1, 0x38, 0xda, 0x84, 0xe8, 0x28, 0x04, 0x35, 0xda, 0xad, 0xe5, 0xbb, 0xe6, 0x6a, 0xf0, 0x83, 0x6a, 0x15, 0x4f, 0x81, 0x7f, 0xb1, 0x7f, 0x33, 0x97, 0xe7, 0x25, 0xa3 }, - { 0xc6, 0x08, 0x97, 0xc6, 0xf8, 0x28, 0xe2, 0x1f, 0x16, 0xfb, 0xb5, 0xf1, 0x5b, 0x32, 0x3f, 0x87, 0xb6, 0xc8, 0x95, 0x5e, 0xab, 0xf1, 0xd3, 0x80, 0x61, 0xf7, 0x07, 0xf6, 0x08, 0xab, 0xdd, 0x99, 0x3f, 0xac, 0x30, 0x70, 0x63, 0x3e, 0x28, 0x6c, 0xf8, 0x33, 0x9c, 0xe2, 0x95, 0xdd, 0x35, 0x2d, 0xf4, 0xb4, 0xb4, 0x0b, 0x2f, 0x29, 0xda, 0x1d, 0xd5, 0x0b, 0x3a, 0x05, 0xd0, 0x79, 0xe6, 0xbb }, - { 0x82, 0x10, 0xcd, 0x2c, 0x2d, 0x3b, 0x13, 0x5c, 0x2c, 0xf0, 0x7f, 0xa0, 0xd1, 0x43, 0x3c, 0xd7, 0x71, 0xf3, 0x25, 0xd0, 0x75, 0xc6, 0x46, 0x9d, 0x9c, 0x7f, 0x1b, 0xa0, 0x94, 0x3c, 0xd4, 0xab, 0x09, 0x80, 0x8c, 0xab, 0xf4, 0xac, 0xb9, 0xce, 0x5b, 0xb8, 0x8b, 0x49, 0x89, 0x29, 0xb4, 0xb8, 0x47, 0xf6, 0x81, 0xad, 0x2c, 0x49, 0x0d, 0x04, 0x2d, 0xb2, 0xae, 0xc9, 0x42, 0x14, 0xb0, 0x6b }, - { 0x1d, 0x4e, 0xdf, 0xff, 0xd8, 0xfd, 0x80, 0xf7, 0xe4, 0x10, 0x78, 0x40, 0xfa, 0x3a, 0xa3, 0x1e, 0x32, 0x59, 0x84, 0x91, 0xe4, 0xaf, 0x70, 0x13, 0xc1, 0x97, 0xa6, 0x5b, 0x7f, 0x36, 0xdd, 0x3a, 0xc4, 0xb4, 0x78, 0x45, 0x61, 0x11, 0xcd, 0x43, 0x09, 0xd9, 0x24, 0x35, 0x10, 0x78, 0x2f, 0xa3, 0x1b, 0x7c, 0x4c, 0x95, 0xfa, 0x95, 0x15, 0x20, 0xd0, 0x20, 0xeb, 0x7e, 0x5c, 0x36, 0xe4, 0xef }, - { 0xaf, 0x8e, 0x6e, 0x91, 0xfa, 0xb4, 0x6c, 0xe4, 0x87, 0x3e, 0x1a, 0x50, 0xa8, 0xef, 0x44, 0x8c, 0xc2, 0x91, 0x21, 0xf7, 0xf7, 0x4d, 0xee, 0xf3, 0x4a, 0x71, 0xef, 0x89, 0xcc, 0x00, 0xd9, 0x27, 0x4b, 0xc6, 0xc2, 0x45, 0x4b, 0xbb, 0x32, 0x30, 0xd8, 0xb2, 0xec, 0x94, 0xc6, 0x2b, 0x1d, 0xec, 0x85, 0xf3, 0x59, 0x3b, 0xfa, 0x30, 0xea, 0x6f, 0x7a, 0x44, 0xd7, 0xc0, 0x94, 0x65, 0xa2, 0x53 }, - { 0x29, 0xfd, 0x38, 0x4e, 0xd4, 0x90, 0x6f, 0x2d, 0x13, 0xaa, 0x9f, 0xe7, 0xaf, 0x90, 0x59, 0x90, 0x93, 0x8b, 0xed, 0x80, 0x7f, 0x18, 0x32, 0x45, 0x4a, 0x37, 0x2a, 0xb4, 0x12, 0xee, 0xa1, 0xf5, 0x62, 0x5a, 0x1f, 0xcc, 0x9a, 0xc8, 0x34, 0x3b, 0x7c, 0x67, 0xc5, 0xab, 0xa6, 0xe0, 0xb1, 0xcc, 0x46, 0x44, 0x65, 0x49, 0x13, 0x69, 0x2c, 0x6b, 0x39, 0xeb, 0x91, 0x87, 0xce, 0xac, 0xd3, 0xec }, - { 0xa2, 0x68, 0xc7, 0x88, 0x5d, 0x98, 0x74, 0xa5, 0x1c, 0x44, 0xdf, 0xfe, 0xd8, 0xea, 0x53, 0xe9, 0x4f, 0x78, 0x45, 0x6e, 0x0b, 0x2e, 0xd9, 0x9f, 0xf5, 0xa3, 0x92, 0x47, 0x60, 0x81, 0x38, 0x26, 0xd9, 0x60, 0xa1, 0x5e, 0xdb, 0xed, 0xbb, 0x5d, 0xe5, 0x22, 0x6b, 0xa4, 0xb0, 0x74, 0xe7, 0x1b, 0x05, 0xc5, 0x5b, 0x97, 0x56, 0xbb, 0x79, 0xe5, 0x5c, 0x02, 0x75, 0x4c, 0x2c, 0x7b, 0x6c, 0x8a }, - { 0x0c, 0xf8, 0x54, 0x54, 0x88, 0xd5, 0x6a, 0x86, 0x81, 0x7c, 0xd7, 0xec, 0xb1, 0x0f, 0x71, 0x16, 0xb7, 0xea, 0x53, 0x0a, 0x45, 0xb6, 0xea, 0x49, 0x7b, 0x6c, 0x72, 0xc9, 0x97, 0xe0, 0x9e, 0x3d, 0x0d, 0xa8, 0x69, 0x8f, 0x46, 0xbb, 0x00, 0x6f, 0xc9, 0x77, 0xc2, 0xcd, 0x3d, 0x11, 0x77, 0x46, 0x3a, 0xc9, 0x05, 0x7f, 0xdd, 0x16, 0x62, 0xc8, 0x5d, 0x0c, 0x12, 0x64, 0x43, 0xc1, 0x04, 0x73 }, - { 0xb3, 0x96, 0x14, 0x26, 0x8f, 0xdd, 0x87, 0x81, 0x51, 0x5e, 0x2c, 0xfe, 0xbf, 0x89, 0xb4, 0xd5, 0x40, 0x2b, 0xab, 0x10, 0xc2, 0x26, 0xe6, 0x34, 0x4e, 0x6b, 0x9a, 0xe0, 0x00, 0xfb, 0x0d, 0x6c, 0x79, 0xcb, 0x2f, 0x3e, 0xc8, 0x0e, 0x80, 0xea, 0xeb, 0x19, 0x80, 0xd2, 0xf8, 0x69, 0x89, 0x16, 0xbd, 0x2e, 0x9f, 0x74, 0x72, 0x36, 0x65, 0x51, 0x16, 0x64, 0x9c, 0xd3, 0xca, 0x23, 0xa8, 0x37 }, - { 0x74, 0xbe, 0xf0, 0x92, 0xfc, 0x6f, 0x1e, 0x5d, 0xba, 0x36, 0x63, 0xa3, 0xfb, 0x00, 0x3b, 0x2a, 0x5b, 0xa2, 0x57, 0x49, 0x65, 0x36, 0xd9, 0x9f, 0x62, 0xb9, 0xd7, 0x3f, 0x8f, 0x9e, 0xb3, 0xce, 0x9f, 0xf3, 0xee, 0xc7, 0x09, 0xeb, 0x88, 0x36, 0x55, 0xec, 0x9e, 0xb8, 0x96, 0xb9, 0x12, 0x8f, 0x2a, 0xfc, 0x89, 0xcf, 0x7d, 0x1a, 0xb5, 0x8a, 0x72, 0xf4, 0xa3, 0xbf, 0x03, 0x4d, 0x2b, 0x4a }, - { 0x3a, 0x98, 0x8d, 0x38, 0xd7, 0x56, 0x11, 0xf3, 0xef, 0x38, 0xb8, 0x77, 0x49, 0x80, 0xb3, 0x3e, 0x57, 0x3b, 0x6c, 0x57, 0xbe, 0xe0, 0x46, 0x9b, 0xa5, 0xee, 0xd9, 0xb4, 0x4f, 0x29, 0x94, 0x5e, 0x73, 0x47, 0x96, 0x7f, 0xba, 0x2c, 0x16, 0x2e, 0x1c, 0x3b, 0xe7, 0xf3, 0x10, 0xf2, 0xf7, 0x5e, 0xe2, 0x38, 0x1e, 0x7b, 0xfd, 0x6b, 0x3f, 0x0b, 0xae, 0xa8, 0xd9, 0x5d, 0xfb, 0x1d, 0xaf, 0xb1 }, - { 0x58, 0xae, 0xdf, 0xce, 0x6f, 0x67, 0xdd, 0xc8, 0x5a, 0x28, 0xc9, 0x92, 0xf1, 0xc0, 0xbd, 0x09, 0x69, 0xf0, 0x41, 0xe6, 0x6f, 0x1e, 0xe8, 0x80, 0x20, 0xa1, 0x25, 0xcb, 0xfc, 0xfe, 0xbc, 0xd6, 0x17, 0x09, 0xc9, 0xc4, 0xeb, 0xa1, 0x92, 0xc1, 0x5e, 0x69, 0xf0, 0x20, 0xd4, 0x62, 0x48, 0x60, 0x19, 0xfa, 0x8d, 0xea, 0x0c, 0xd7, 0xa4, 0x29, 0x21, 0xa1, 0x9d, 0x2f, 0xe5, 0x46, 0xd4, 0x3d }, - { 0x93, 0x47, 0xbd, 0x29, 0x14, 0x73, 0xe6, 0xb4, 0xe3, 0x68, 0x43, 0x7b, 0x8e, 0x56, 0x1e, 0x06, 0x5f, 0x64, 0x9a, 0x6d, 0x8a, 0xda, 0x47, 0x9a, 0xd0, 0x9b, 0x19, 0x99, 0xa8, 0xf2, 0x6b, 0x91, 0xcf, 0x61, 0x20, 0xfd, 0x3b, 0xfe, 0x01, 0x4e, 0x83, 0xf2, 0x3a, 0xcf, 0xa4, 0xc0, 0xad, 0x7b, 0x37, 0x12, 0xb2, 0xc3, 0xc0, 0x73, 0x32, 0x70, 0x66, 0x31, 0x12, 0xcc, 0xd9, 0x28, 0x5c, 0xd9 }, - { 0xb3, 0x21, 0x63, 0xe7, 0xc5, 0xdb, 0xb5, 0xf5, 0x1f, 0xdc, 0x11, 0xd2, 0xea, 0xc8, 0x75, 0xef, 0xbb, 0xcb, 0x7e, 0x76, 0x99, 0x09, 0x0a, 0x7e, 0x7f, 0xf8, 0xa8, 0xd5, 0x07, 0x95, 0xaf, 0x5d, 0x74, 0xd9, 0xff, 0x98, 0x54, 0x3e, 0xf8, 0xcd, 0xf8, 0x9a, 0xc1, 0x3d, 0x04, 0x85, 0x27, 0x87, 0x56, 0xe0, 0xef, 0x00, 0xc8, 0x17, 0x74, 0x56, 0x61, 0xe1, 0xd5, 0x9f, 0xe3, 0x8e, 0x75, 0x37 }, - { 0x10, 0x85, 0xd7, 0x83, 0x07, 0xb1, 0xc4, 0xb0, 0x08, 0xc5, 0x7a, 0x2e, 0x7e, 0x5b, 0x23, 0x46, 0x58, 0xa0, 0xa8, 0x2e, 0x4f, 0xf1, 0xe4, 0xaa, 0xac, 0x72, 0xb3, 0x12, 0xfd, 0xa0, 0xfe, 0x27, 0xd2, 0x33, 0xbc, 0x5b, 0x10, 0xe9, 0xcc, 0x17, 0xfd, 0xc7, 0x69, 0x7b, 0x54, 0x0c, 0x7d, 0x95, 0xeb, 0x21, 0x5a, 0x19, 0xa1, 0xa0, 0xe2, 0x0e, 0x1a, 0xbf, 0xa1, 0x26, 0xef, 0xd5, 0x68, 0xc7 }, - { 0x4e, 0x5c, 0x73, 0x4c, 0x7d, 0xde, 0x01, 0x1d, 0x83, 0xea, 0xc2, 0xb7, 0x34, 0x7b, 0x37, 0x35, 0x94, 0xf9, 0x2d, 0x70, 0x91, 0xb9, 0xca, 0x34, 0xcb, 0x9c, 0x6f, 0x39, 0xbd, 0xf5, 0xa8, 0xd2, 0xf1, 0x34, 0x37, 0x9e, 0x16, 0xd8, 0x22, 0xf6, 0x52, 0x21, 0x70, 0xcc, 0xf2, 0xdd, 0xd5, 0x5c, 0x84, 0xb9, 0xe6, 0xc6, 0x4f, 0xc9, 0x27, 0xac, 0x4c, 0xf8, 0xdf, 0xb2, 0xa1, 0x77, 0x01, 0xf2 }, - { 0x69, 0x5d, 0x83, 0xbd, 0x99, 0x0a, 0x11, 0x17, 0xb3, 0xd0, 0xce, 0x06, 0xcc, 0x88, 0x80, 0x27, 0xd1, 0x2a, 0x05, 0x4c, 0x26, 0x77, 0xfd, 0x82, 0xf0, 0xd4, 0xfb, 0xfc, 0x93, 0x57, 0x55, 0x23, 0xe7, 0x99, 0x1a, 0x5e, 0x35, 0xa3, 0x75, 0x2e, 0x9b, 0x70, 0xce, 0x62, 0x99, 0x2e, 0x26, 0x8a, 0x87, 0x77, 0x44, 0xcd, 0xd4, 0x35, 0xf5, 0xf1, 0x30, 0x86, 0x9c, 0x9a, 0x20, 0x74, 0xb3, 0x38 }, - { 0xa6, 0x21, 0x37, 0x43, 0x56, 0x8e, 0x3b, 0x31, 0x58, 0xb9, 0x18, 0x43, 0x01, 0xf3, 0x69, 0x08, 0x47, 0x55, 0x4c, 0x68, 0x45, 0x7c, 0xb4, 0x0f, 0xc9, 0xa4, 0xb8, 0xcf, 0xd8, 0xd4, 0xa1, 0x18, 0xc3, 0x01, 0xa0, 0x77, 0x37, 0xae, 0xda, 0x0f, 0x92, 0x9c, 0x68, 0x91, 0x3c, 0x5f, 0x51, 0xc8, 0x03, 0x94, 0xf5, 0x3b, 0xff, 0x1c, 0x3e, 0x83, 0xb2, 0xe4, 0x0c, 0xa9, 0x7e, 0xba, 0x9e, 0x15 }, - { 0xd4, 0x44, 0xbf, 0xa2, 0x36, 0x2a, 0x96, 0xdf, 0x21, 0x3d, 0x07, 0x0e, 0x33, 0xfa, 0x84, 0x1f, 0x51, 0x33, 0x4e, 0x4e, 0x76, 0x86, 0x6b, 0x81, 0x39, 0xe8, 0xaf, 0x3b, 0xb3, 0x39, 0x8b, 0xe2, 0xdf, 0xad, 0xdc, 0xbc, 0x56, 0xb9, 0x14, 0x6d, 0xe9, 0xf6, 0x81, 0x18, 0xdc, 0x58, 0x29, 0xe7, 0x4b, 0x0c, 0x28, 0xd7, 0x71, 0x19, 0x07, 0xb1, 0x21, 0xf9, 0x16, 0x1c, 0xb9, 0x2b, 0x69, 0xa9 }, - { 0x14, 0x27, 0x09, 0xd6, 0x2e, 0x28, 0xfc, 0xcc, 0xd0, 0xaf, 0x97, 0xfa, 0xd0, 0xf8, 0x46, 0x5b, 0x97, 0x1e, 0x82, 0x20, 0x1d, 0xc5, 0x10, 0x70, 0xfa, 0xa0, 0x37, 0x2a, 0xa4, 0x3e, 0x92, 0x48, 0x4b, 0xe1, 0xc1, 0xe7, 0x3b, 0xa1, 0x09, 0x06, 0xd5, 0xd1, 0x85, 0x3d, 0xb6, 0xa4, 0x10, 0x6e, 0x0a, 0x7b, 0xf9, 0x80, 0x0d, 0x37, 0x3d, 0x6d, 0xee, 0x2d, 0x46, 0xd6, 0x2e, 0xf2, 0xa4, 0x61 }, - }; - unsigned char inp[1000], out[1000]; - unsigned char key[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f }; - unsigned long ilen, klen = sizeof(key), mlen = 64; - blake2bmac_state st; - - for (ilen = 0; ilen < 256; ilen++) inp[ilen] = (unsigned char)ilen; - - for (ilen = 0; ilen < 256; ilen++) { - const unsigned char *mac = tests[ilen]; - unsigned long olen = mlen; - /* process piece by piece */ - if (ilen > 15) { - blake2bmac_init(&st, olen, key, klen); - blake2bmac_process(&st, (unsigned char*)inp, 5); - blake2bmac_process(&st, (unsigned char*)inp + 5, 4); - blake2bmac_process(&st, (unsigned char*)inp + 9, 3); - blake2bmac_process(&st, (unsigned char*)inp + 12, 2); - blake2bmac_process(&st, (unsigned char*)inp + 14, 1); - blake2bmac_process(&st, (unsigned char*)inp + 15, ilen - 15); - blake2bmac_done(&st, out, &olen); - if (compare_testvector(out, olen, mac, mlen, "BLAKE2B MAC multi", ilen) != 0) return CRYPT_FAIL_TESTVECTOR; - } - /* process in one go */ - blake2bmac_init(&st, olen, key, klen); - blake2bmac_process(&st, (unsigned char*)inp, ilen); - blake2bmac_done(&st, out, &olen); - if (compare_testvector(out, olen, mac, mlen, "BLAKE2B MAC single", ilen) != 0) return CRYPT_FAIL_TESTVECTOR; - } - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/blake2/blake2smac.c b/src/libtomcrypt/src/mac/blake2/blake2smac.c deleted file mode 100644 index 3b3ec07e40..0000000000 --- a/src/libtomcrypt/src/mac/blake2/blake2smac.c +++ /dev/null @@ -1,66 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_BLAKE2SMAC - -/** - Initialize an BLAKE2S MAC context. - @param st The BLAKE2S MAC state - @param outlen The size of the MAC output (octets) - @param key The secret key - @param keylen The length of the secret key (octets) - @return CRYPT_OK if successful -*/ -int blake2smac_init(blake2smac_state *st, unsigned long outlen, const unsigned char *key, unsigned long keylen) -{ - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(key != NULL); - return blake2s_init(st, outlen, key, keylen); -} - -/** - Process data through BLAKE2S MAC - @param st The BLAKE2S MAC state - @param in The data to send through HMAC - @param inlen The length of the data to HMAC (octets) - @return CRYPT_OK if successful -*/ -int blake2smac_process(blake2smac_state *st, const unsigned char *in, unsigned long inlen) -{ - if (inlen == 0) return CRYPT_OK; /* nothing to do */ - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(in != NULL); - return blake2s_process(st, in, inlen); -} - -/** - Terminate a BLAKE2S MAC session - @param st The BLAKE2S MAC state - @param mac [out] The destination of the BLAKE2S MAC authentication tag - @param maclen [in/out] The max size and resulting size of the BLAKE2S MAC authentication tag - @return CRYPT_OK if successful -*/ -int blake2smac_done(blake2smac_state *st, unsigned char *mac, unsigned long *maclen) -{ - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(mac != NULL); - LTC_ARGCHK(maclen != NULL); - LTC_ARGCHK(*maclen >= st->blake2s.outlen); - - *maclen = st->blake2s.outlen; - return blake2s_done(st, mac); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/blake2/blake2smac_file.c b/src/libtomcrypt/src/mac/blake2/blake2smac_file.c deleted file mode 100644 index 9f4850c805..0000000000 --- a/src/libtomcrypt/src/mac/blake2/blake2smac_file.c +++ /dev/null @@ -1,88 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_BLAKE2SMAC - -/** - BLAKE2S MAC a file - @param fname The name of the file you wish to BLAKE2S MAC - @param key The secret key - @param keylen The length of the secret key - @param mac [out] The BLAKE2S MAC authentication tag - @param maclen [in/out] The max size and resulting size of the authentication tag - @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled -*/ -int blake2smac_file(const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen) -{ -#ifdef LTC_NO_FILE - LTC_UNUSED_PARAM(fname); - LTC_UNUSED_PARAM(key); - LTC_UNUSED_PARAM(keylen); - LTC_UNUSED_PARAM(mac); - LTC_UNUSED_PARAM(maclen); - return CRYPT_NOP; -#else - blake2smac_state st; - FILE *in; - unsigned char *buf; - size_t x; - int err; - - LTC_ARGCHK(fname != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(mac != NULL); - LTC_ARGCHK(maclen != NULL); - - if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { - return CRYPT_MEM; - } - - if ((err = blake2smac_init(&st, *maclen, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - - in = fopen(fname, "rb"); - if (in == NULL) { - err = CRYPT_FILE_NOTFOUND; - goto LBL_ERR; - } - - do { - x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); - if ((err = blake2smac_process(&st, buf, (unsigned long)x)) != CRYPT_OK) { - fclose(in); - goto LBL_CLEANBUF; - } - } while (x == LTC_FILE_READ_BUFSIZE); - - if (fclose(in) != 0) { - err = CRYPT_ERROR; - goto LBL_CLEANBUF; - } - - err = blake2smac_done(&st, mac, maclen); - -LBL_CLEANBUF: - zeromem(buf, LTC_FILE_READ_BUFSIZE); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(&st, sizeof(blake2smac_state)); -#endif - XFREE(buf); - return err; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/blake2/blake2smac_memory.c b/src/libtomcrypt/src/mac/blake2/blake2smac_memory.c deleted file mode 100644 index a46d74c006..0000000000 --- a/src/libtomcrypt/src/mac/blake2/blake2smac_memory.c +++ /dev/null @@ -1,48 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_BLAKE2SMAC - -/** - BLAKE2S MAC a block of memory to produce the authentication tag - @param key The secret key - @param keylen The length of the secret key (octets) - @param in The data to BLAKE2S MAC - @param inlen The length of the data to BLAKE2S MAC (octets) - @param mac [out] Destination of the authentication tag - @param maclen [in/out] Max size and resulting size of authentication tag - @return CRYPT_OK if successful -*/ -int blake2smac_memory(const unsigned char *key, unsigned long keylen, const unsigned char *in, unsigned long inlen, unsigned char *mac, unsigned long *maclen) -{ - blake2smac_state st; - int err; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(mac != NULL); - LTC_ARGCHK(maclen != NULL); - - if ((err = blake2smac_init(&st, *maclen, key, keylen)) != CRYPT_OK) { goto LBL_ERR; } - if ((err = blake2smac_process(&st, in, inlen)) != CRYPT_OK) { goto LBL_ERR; } - err = blake2smac_done(&st, mac, maclen); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(&st, sizeof(blake2smac_state)); -#endif - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/blake2/blake2smac_memory_multi.c b/src/libtomcrypt/src/mac/blake2/blake2smac_memory_multi.c deleted file mode 100644 index e14166e84c..0000000000 --- a/src/libtomcrypt/src/mac/blake2/blake2smac_memory_multi.c +++ /dev/null @@ -1,62 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" -#include - -#ifdef LTC_BLAKE2SMAC - -/** - BLAKE2S MAC multiple blocks of memory to produce the authentication tag - @param key The secret key - @param keylen The length of the secret key (octets) - @param mac [out] Destination of the authentication tag - @param maclen [in/out] Max size and resulting size of authentication tag - @param in The data to BLAKE2S MAC - @param inlen The length of the data to BLAKE2S MAC (octets) - @param ... tuples of (data,len) pairs to BLAKE2S MAC, terminated with a (NULL,x) (x=don't care) - @return CRYPT_OK if successful -*/ -int blake2smac_memory_multi(const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen, const unsigned char *in, unsigned long inlen, ...) -{ - blake2smac_state st; - int err; - va_list args; - const unsigned char *curptr; - unsigned long curlen; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(mac != NULL); - LTC_ARGCHK(maclen != NULL); - - va_start(args, inlen); - curptr = in; - curlen = inlen; - if ((err = blake2smac_init(&st, *maclen, key, keylen)) != CRYPT_OK) { goto LBL_ERR; } - for (;;) { - if ((err = blake2smac_process(&st, curptr, curlen)) != CRYPT_OK) { goto LBL_ERR; } - curptr = va_arg(args, const unsigned char*); - if (curptr == NULL) break; - curlen = va_arg(args, unsigned long); - } - err = blake2smac_done(&st, mac, maclen); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(&st, sizeof(blake2smac_state)); -#endif - va_end(args); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/blake2/blake2smac_test.c b/src/libtomcrypt/src/mac/blake2/blake2smac_test.c deleted file mode 100644 index 16928900d7..0000000000 --- a/src/libtomcrypt/src/mac/blake2/blake2smac_test.c +++ /dev/null @@ -1,314 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_BLAKE2SMAC - -int blake2smac_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const unsigned char tests[256][32] = { - /* source: https://github.com/BLAKE2/BLAKE2/blob/master/testvectors/blake2s-kat.txt */ - { 0x48, 0xa8, 0x99, 0x7d, 0xa4, 0x07, 0x87, 0x6b, 0x3d, 0x79, 0xc0, 0xd9, 0x23, 0x25, 0xad, 0x3b, 0x89, 0xcb, 0xb7, 0x54, 0xd8, 0x6a, 0xb7, 0x1a, 0xee, 0x04, 0x7a, 0xd3, 0x45, 0xfd, 0x2c, 0x49 }, - { 0x40, 0xd1, 0x5f, 0xee, 0x7c, 0x32, 0x88, 0x30, 0x16, 0x6a, 0xc3, 0xf9, 0x18, 0x65, 0x0f, 0x80, 0x7e, 0x7e, 0x01, 0xe1, 0x77, 0x25, 0x8c, 0xdc, 0x0a, 0x39, 0xb1, 0x1f, 0x59, 0x80, 0x66, 0xf1 }, - { 0x6b, 0xb7, 0x13, 0x00, 0x64, 0x4c, 0xd3, 0x99, 0x1b, 0x26, 0xcc, 0xd4, 0xd2, 0x74, 0xac, 0xd1, 0xad, 0xea, 0xb8, 0xb1, 0xd7, 0x91, 0x45, 0x46, 0xc1, 0x19, 0x8b, 0xbe, 0x9f, 0xc9, 0xd8, 0x03 }, - { 0x1d, 0x22, 0x0d, 0xbe, 0x2e, 0xe1, 0x34, 0x66, 0x1f, 0xdf, 0x6d, 0x9e, 0x74, 0xb4, 0x17, 0x04, 0x71, 0x05, 0x56, 0xf2, 0xf6, 0xe5, 0xa0, 0x91, 0xb2, 0x27, 0x69, 0x74, 0x45, 0xdb, 0xea, 0x6b }, - { 0xf6, 0xc3, 0xfb, 0xad, 0xb4, 0xcc, 0x68, 0x7a, 0x00, 0x64, 0xa5, 0xbe, 0x6e, 0x79, 0x1b, 0xec, 0x63, 0xb8, 0x68, 0xad, 0x62, 0xfb, 0xa6, 0x1b, 0x37, 0x57, 0xef, 0x9c, 0xa5, 0x2e, 0x05, 0xb2 }, - { 0x49, 0xc1, 0xf2, 0x11, 0x88, 0xdf, 0xd7, 0x69, 0xae, 0xa0, 0xe9, 0x11, 0xdd, 0x6b, 0x41, 0xf1, 0x4d, 0xab, 0x10, 0x9d, 0x2b, 0x85, 0x97, 0x7a, 0xa3, 0x08, 0x8b, 0x5c, 0x70, 0x7e, 0x85, 0x98 }, - { 0xfd, 0xd8, 0x99, 0x3d, 0xcd, 0x43, 0xf6, 0x96, 0xd4, 0x4f, 0x3c, 0xea, 0x0f, 0xf3, 0x53, 0x45, 0x23, 0x4e, 0xc8, 0xee, 0x08, 0x3e, 0xb3, 0xca, 0xda, 0x01, 0x7c, 0x7f, 0x78, 0xc1, 0x71, 0x43 }, - { 0xe6, 0xc8, 0x12, 0x56, 0x37, 0x43, 0x8d, 0x09, 0x05, 0xb7, 0x49, 0xf4, 0x65, 0x60, 0xac, 0x89, 0xfd, 0x47, 0x1c, 0xf8, 0x69, 0x2e, 0x28, 0xfa, 0xb9, 0x82, 0xf7, 0x3f, 0x01, 0x9b, 0x83, 0xa9 }, - { 0x19, 0xfc, 0x8c, 0xa6, 0x97, 0x9d, 0x60, 0xe6, 0xed, 0xd3, 0xb4, 0x54, 0x1e, 0x2f, 0x96, 0x7c, 0xed, 0x74, 0x0d, 0xf6, 0xec, 0x1e, 0xae, 0xbb, 0xfe, 0x81, 0x38, 0x32, 0xe9, 0x6b, 0x29, 0x74 }, - { 0xa6, 0xad, 0x77, 0x7c, 0xe8, 0x81, 0xb5, 0x2b, 0xb5, 0xa4, 0x42, 0x1a, 0xb6, 0xcd, 0xd2, 0xdf, 0xba, 0x13, 0xe9, 0x63, 0x65, 0x2d, 0x4d, 0x6d, 0x12, 0x2a, 0xee, 0x46, 0x54, 0x8c, 0x14, 0xa7 }, - { 0xf5, 0xc4, 0xb2, 0xba, 0x1a, 0x00, 0x78, 0x1b, 0x13, 0xab, 0xa0, 0x42, 0x52, 0x42, 0xc6, 0x9c, 0xb1, 0x55, 0x2f, 0x3f, 0x71, 0xa9, 0xa3, 0xbb, 0x22, 0xb4, 0xa6, 0xb4, 0x27, 0x7b, 0x46, 0xdd }, - { 0xe3, 0x3c, 0x4c, 0x9b, 0xd0, 0xcc, 0x7e, 0x45, 0xc8, 0x0e, 0x65, 0xc7, 0x7f, 0xa5, 0x99, 0x7f, 0xec, 0x70, 0x02, 0x73, 0x85, 0x41, 0x50, 0x9e, 0x68, 0xa9, 0x42, 0x38, 0x91, 0xe8, 0x22, 0xa3 }, - { 0xfb, 0xa1, 0x61, 0x69, 0xb2, 0xc3, 0xee, 0x10, 0x5b, 0xe6, 0xe1, 0xe6, 0x50, 0xe5, 0xcb, 0xf4, 0x07, 0x46, 0xb6, 0x75, 0x3d, 0x03, 0x6a, 0xb5, 0x51, 0x79, 0x01, 0x4a, 0xd7, 0xef, 0x66, 0x51 }, - { 0xf5, 0xc4, 0xbe, 0xc6, 0xd6, 0x2f, 0xc6, 0x08, 0xbf, 0x41, 0xcc, 0x11, 0x5f, 0x16, 0xd6, 0x1c, 0x7e, 0xfd, 0x3f, 0xf6, 0xc6, 0x56, 0x92, 0xbb, 0xe0, 0xaf, 0xff, 0xb1, 0xfe, 0xde, 0x74, 0x75 }, - { 0xa4, 0x86, 0x2e, 0x76, 0xdb, 0x84, 0x7f, 0x05, 0xba, 0x17, 0xed, 0xe5, 0xda, 0x4e, 0x7f, 0x91, 0xb5, 0x92, 0x5c, 0xf1, 0xad, 0x4b, 0xa1, 0x27, 0x32, 0xc3, 0x99, 0x57, 0x42, 0xa5, 0xcd, 0x6e }, - { 0x65, 0xf4, 0xb8, 0x60, 0xcd, 0x15, 0xb3, 0x8e, 0xf8, 0x14, 0xa1, 0xa8, 0x04, 0x31, 0x4a, 0x55, 0xbe, 0x95, 0x3c, 0xaa, 0x65, 0xfd, 0x75, 0x8a, 0xd9, 0x89, 0xff, 0x34, 0xa4, 0x1c, 0x1e, 0xea }, - { 0x19, 0xba, 0x23, 0x4f, 0x0a, 0x4f, 0x38, 0x63, 0x7d, 0x18, 0x39, 0xf9, 0xd9, 0xf7, 0x6a, 0xd9, 0x1c, 0x85, 0x22, 0x30, 0x71, 0x43, 0xc9, 0x7d, 0x5f, 0x93, 0xf6, 0x92, 0x74, 0xce, 0xc9, 0xa7 }, - { 0x1a, 0x67, 0x18, 0x6c, 0xa4, 0xa5, 0xcb, 0x8e, 0x65, 0xfc, 0xa0, 0xe2, 0xec, 0xbc, 0x5d, 0xdc, 0x14, 0xae, 0x38, 0x1b, 0xb8, 0xbf, 0xfe, 0xb9, 0xe0, 0xa1, 0x03, 0x44, 0x9e, 0x3e, 0xf0, 0x3c }, - { 0xaf, 0xbe, 0xa3, 0x17, 0xb5, 0xa2, 0xe8, 0x9c, 0x0b, 0xd9, 0x0c, 0xcf, 0x5d, 0x7f, 0xd0, 0xed, 0x57, 0xfe, 0x58, 0x5e, 0x4b, 0xe3, 0x27, 0x1b, 0x0a, 0x6b, 0xf0, 0xf5, 0x78, 0x6b, 0x0f, 0x26 }, - { 0xf1, 0xb0, 0x15, 0x58, 0xce, 0x54, 0x12, 0x62, 0xf5, 0xec, 0x34, 0x29, 0x9d, 0x6f, 0xb4, 0x09, 0x00, 0x09, 0xe3, 0x43, 0x4b, 0xe2, 0xf4, 0x91, 0x05, 0xcf, 0x46, 0xaf, 0x4d, 0x2d, 0x41, 0x24 }, - { 0x13, 0xa0, 0xa0, 0xc8, 0x63, 0x35, 0x63, 0x5e, 0xaa, 0x74, 0xca, 0x2d, 0x5d, 0x48, 0x8c, 0x79, 0x7b, 0xbb, 0x4f, 0x47, 0xdc, 0x07, 0x10, 0x50, 0x15, 0xed, 0x6a, 0x1f, 0x33, 0x09, 0xef, 0xce }, - { 0x15, 0x80, 0xaf, 0xee, 0xbe, 0xbb, 0x34, 0x6f, 0x94, 0xd5, 0x9f, 0xe6, 0x2d, 0xa0, 0xb7, 0x92, 0x37, 0xea, 0xd7, 0xb1, 0x49, 0x1f, 0x56, 0x67, 0xa9, 0x0e, 0x45, 0xed, 0xf6, 0xca, 0x8b, 0x03 }, - { 0x20, 0xbe, 0x1a, 0x87, 0x5b, 0x38, 0xc5, 0x73, 0xdd, 0x7f, 0xaa, 0xa0, 0xde, 0x48, 0x9d, 0x65, 0x5c, 0x11, 0xef, 0xb6, 0xa5, 0x52, 0x69, 0x8e, 0x07, 0xa2, 0xd3, 0x31, 0xb5, 0xf6, 0x55, 0xc3 }, - { 0xbe, 0x1f, 0xe3, 0xc4, 0xc0, 0x40, 0x18, 0xc5, 0x4c, 0x4a, 0x0f, 0x6b, 0x9a, 0x2e, 0xd3, 0xc5, 0x3a, 0xbe, 0x3a, 0x9f, 0x76, 0xb4, 0xd2, 0x6d, 0xe5, 0x6f, 0xc9, 0xae, 0x95, 0x05, 0x9a, 0x99 }, - { 0xe3, 0xe3, 0xac, 0xe5, 0x37, 0xeb, 0x3e, 0xdd, 0x84, 0x63, 0xd9, 0xad, 0x35, 0x82, 0xe1, 0x3c, 0xf8, 0x65, 0x33, 0xff, 0xde, 0x43, 0xd6, 0x68, 0xdd, 0x2e, 0x93, 0xbb, 0xdb, 0xd7, 0x19, 0x5a }, - { 0x11, 0x0c, 0x50, 0xc0, 0xbf, 0x2c, 0x6e, 0x7a, 0xeb, 0x7e, 0x43, 0x5d, 0x92, 0xd1, 0x32, 0xab, 0x66, 0x55, 0x16, 0x8e, 0x78, 0xa2, 0xde, 0xcd, 0xec, 0x33, 0x30, 0x77, 0x76, 0x84, 0xd9, 0xc1 }, - { 0xe9, 0xba, 0x8f, 0x50, 0x5c, 0x9c, 0x80, 0xc0, 0x86, 0x66, 0xa7, 0x01, 0xf3, 0x36, 0x7e, 0x6c, 0xc6, 0x65, 0xf3, 0x4b, 0x22, 0xe7, 0x3c, 0x3c, 0x04, 0x17, 0xeb, 0x1c, 0x22, 0x06, 0x08, 0x2f }, - { 0x26, 0xcd, 0x66, 0xfc, 0xa0, 0x23, 0x79, 0xc7, 0x6d, 0xf1, 0x23, 0x17, 0x05, 0x2b, 0xca, 0xfd, 0x6c, 0xd8, 0xc3, 0xa7, 0xb8, 0x90, 0xd8, 0x05, 0xf3, 0x6c, 0x49, 0x98, 0x97, 0x82, 0x43, 0x3a }, - { 0x21, 0x3f, 0x35, 0x96, 0xd6, 0xe3, 0xa5, 0xd0, 0xe9, 0x93, 0x2c, 0xd2, 0x15, 0x91, 0x46, 0x01, 0x5e, 0x2a, 0xbc, 0x94, 0x9f, 0x47, 0x29, 0xee, 0x26, 0x32, 0xfe, 0x1e, 0xdb, 0x78, 0xd3, 0x37 }, - { 0x10, 0x15, 0xd7, 0x01, 0x08, 0xe0, 0x3b, 0xe1, 0xc7, 0x02, 0xfe, 0x97, 0x25, 0x36, 0x07, 0xd1, 0x4a, 0xee, 0x59, 0x1f, 0x24, 0x13, 0xea, 0x67, 0x87, 0x42, 0x7b, 0x64, 0x59, 0xff, 0x21, 0x9a }, - { 0x3c, 0xa9, 0x89, 0xde, 0x10, 0xcf, 0xe6, 0x09, 0x90, 0x94, 0x72, 0xc8, 0xd3, 0x56, 0x10, 0x80, 0x5b, 0x2f, 0x97, 0x77, 0x34, 0xcf, 0x65, 0x2c, 0xc6, 0x4b, 0x3b, 0xfc, 0x88, 0x2d, 0x5d, 0x89 }, - { 0xb6, 0x15, 0x6f, 0x72, 0xd3, 0x80, 0xee, 0x9e, 0xa6, 0xac, 0xd1, 0x90, 0x46, 0x4f, 0x23, 0x07, 0xa5, 0xc1, 0x79, 0xef, 0x01, 0xfd, 0x71, 0xf9, 0x9f, 0x2d, 0x0f, 0x7a, 0x57, 0x36, 0x0a, 0xea }, - { 0xc0, 0x3b, 0xc6, 0x42, 0xb2, 0x09, 0x59, 0xcb, 0xe1, 0x33, 0xa0, 0x30, 0x3e, 0x0c, 0x1a, 0xbf, 0xf3, 0xe3, 0x1e, 0xc8, 0xe1, 0xa3, 0x28, 0xec, 0x85, 0x65, 0xc3, 0x6d, 0xec, 0xff, 0x52, 0x65 }, - { 0x2c, 0x3e, 0x08, 0x17, 0x6f, 0x76, 0x0c, 0x62, 0x64, 0xc3, 0xa2, 0xcd, 0x66, 0xfe, 0xc6, 0xc3, 0xd7, 0x8d, 0xe4, 0x3f, 0xc1, 0x92, 0x45, 0x7b, 0x2a, 0x4a, 0x66, 0x0a, 0x1e, 0x0e, 0xb2, 0x2b }, - { 0xf7, 0x38, 0xc0, 0x2f, 0x3c, 0x1b, 0x19, 0x0c, 0x51, 0x2b, 0x1a, 0x32, 0xde, 0xab, 0xf3, 0x53, 0x72, 0x8e, 0x0e, 0x9a, 0xb0, 0x34, 0x49, 0x0e, 0x3c, 0x34, 0x09, 0x94, 0x6a, 0x97, 0xae, 0xec }, - { 0x8b, 0x18, 0x80, 0xdf, 0x30, 0x1c, 0xc9, 0x63, 0x41, 0x88, 0x11, 0x08, 0x89, 0x64, 0x83, 0x92, 0x87, 0xff, 0x7f, 0xe3, 0x1c, 0x49, 0xea, 0x6e, 0xbd, 0x9e, 0x48, 0xbd, 0xee, 0xe4, 0x97, 0xc5 }, - { 0x1e, 0x75, 0xcb, 0x21, 0xc6, 0x09, 0x89, 0x02, 0x03, 0x75, 0xf1, 0xa7, 0xa2, 0x42, 0x83, 0x9f, 0x0b, 0x0b, 0x68, 0x97, 0x3a, 0x4c, 0x2a, 0x05, 0xcf, 0x75, 0x55, 0xed, 0x5a, 0xae, 0xc4, 0xc1 }, - { 0x62, 0xbf, 0x8a, 0x9c, 0x32, 0xa5, 0xbc, 0xcf, 0x29, 0x0b, 0x6c, 0x47, 0x4d, 0x75, 0xb2, 0xa2, 0xa4, 0x09, 0x3f, 0x1a, 0x9e, 0x27, 0x13, 0x94, 0x33, 0xa8, 0xf2, 0xb3, 0xbc, 0xe7, 0xb8, 0xd7 }, - { 0x16, 0x6c, 0x83, 0x50, 0xd3, 0x17, 0x3b, 0x5e, 0x70, 0x2b, 0x78, 0x3d, 0xfd, 0x33, 0xc6, 0x6e, 0xe0, 0x43, 0x27, 0x42, 0xe9, 0xb9, 0x2b, 0x99, 0x7f, 0xd2, 0x3c, 0x60, 0xdc, 0x67, 0x56, 0xca }, - { 0x04, 0x4a, 0x14, 0xd8, 0x22, 0xa9, 0x0c, 0xac, 0xf2, 0xf5, 0xa1, 0x01, 0x42, 0x8a, 0xdc, 0x8f, 0x41, 0x09, 0x38, 0x6c, 0xcb, 0x15, 0x8b, 0xf9, 0x05, 0xc8, 0x61, 0x8b, 0x8e, 0xe2, 0x4e, 0xc3 }, - { 0x38, 0x7d, 0x39, 0x7e, 0xa4, 0x3a, 0x99, 0x4b, 0xe8, 0x4d, 0x2d, 0x54, 0x4a, 0xfb, 0xe4, 0x81, 0xa2, 0x00, 0x0f, 0x55, 0x25, 0x26, 0x96, 0xbb, 0xa2, 0xc5, 0x0c, 0x8e, 0xbd, 0x10, 0x13, 0x47 }, - { 0x56, 0xf8, 0xcc, 0xf1, 0xf8, 0x64, 0x09, 0xb4, 0x6c, 0xe3, 0x61, 0x66, 0xae, 0x91, 0x65, 0x13, 0x84, 0x41, 0x57, 0x75, 0x89, 0xdb, 0x08, 0xcb, 0xc5, 0xf6, 0x6c, 0xa2, 0x97, 0x43, 0xb9, 0xfd }, - { 0x97, 0x06, 0xc0, 0x92, 0xb0, 0x4d, 0x91, 0xf5, 0x3d, 0xff, 0x91, 0xfa, 0x37, 0xb7, 0x49, 0x3d, 0x28, 0xb5, 0x76, 0xb5, 0xd7, 0x10, 0x46, 0x9d, 0xf7, 0x94, 0x01, 0x66, 0x22, 0x36, 0xfc, 0x03 }, - { 0x87, 0x79, 0x68, 0x68, 0x6c, 0x06, 0x8c, 0xe2, 0xf7, 0xe2, 0xad, 0xcf, 0xf6, 0x8b, 0xf8, 0x74, 0x8e, 0xdf, 0x3c, 0xf8, 0x62, 0xcf, 0xb4, 0xd3, 0x94, 0x7a, 0x31, 0x06, 0x95, 0x80, 0x54, 0xe3 }, - { 0x88, 0x17, 0xe5, 0x71, 0x98, 0x79, 0xac, 0xf7, 0x02, 0x47, 0x87, 0xec, 0xcd, 0xb2, 0x71, 0x03, 0x55, 0x66, 0xcf, 0xa3, 0x33, 0xe0, 0x49, 0x40, 0x7c, 0x01, 0x78, 0xcc, 0xc5, 0x7a, 0x5b, 0x9f }, - { 0x89, 0x38, 0x24, 0x9e, 0x4b, 0x50, 0xca, 0xda, 0xcc, 0xdf, 0x5b, 0x18, 0x62, 0x13, 0x26, 0xcb, 0xb1, 0x52, 0x53, 0xe3, 0x3a, 0x20, 0xf5, 0x63, 0x6e, 0x99, 0x5d, 0x72, 0x47, 0x8d, 0xe4, 0x72 }, - { 0xf1, 0x64, 0xab, 0xba, 0x49, 0x63, 0xa4, 0x4d, 0x10, 0x72, 0x57, 0xe3, 0x23, 0x2d, 0x90, 0xac, 0xa5, 0xe6, 0x6a, 0x14, 0x08, 0x24, 0x8c, 0x51, 0x74, 0x1e, 0x99, 0x1d, 0xb5, 0x22, 0x77, 0x56 }, - { 0xd0, 0x55, 0x63, 0xe2, 0xb1, 0xcb, 0xa0, 0xc4, 0xa2, 0xa1, 0xe8, 0xbd, 0xe3, 0xa1, 0xa0, 0xd9, 0xf5, 0xb4, 0x0c, 0x85, 0xa0, 0x70, 0xd6, 0xf5, 0xfb, 0x21, 0x06, 0x6e, 0xad, 0x5d, 0x06, 0x01 }, - { 0x03, 0xfb, 0xb1, 0x63, 0x84, 0xf0, 0xa3, 0x86, 0x6f, 0x4c, 0x31, 0x17, 0x87, 0x76, 0x66, 0xef, 0xbf, 0x12, 0x45, 0x97, 0x56, 0x4b, 0x29, 0x3d, 0x4a, 0xab, 0x0d, 0x26, 0x9f, 0xab, 0xdd, 0xfa }, - { 0x5f, 0xa8, 0x48, 0x6a, 0xc0, 0xe5, 0x29, 0x64, 0xd1, 0x88, 0x1b, 0xbe, 0x33, 0x8e, 0xb5, 0x4b, 0xe2, 0xf7, 0x19, 0x54, 0x92, 0x24, 0x89, 0x20, 0x57, 0xb4, 0xda, 0x04, 0xba, 0x8b, 0x34, 0x75 }, - { 0xcd, 0xfa, 0xbc, 0xee, 0x46, 0x91, 0x11, 0x11, 0x23, 0x6a, 0x31, 0x70, 0x8b, 0x25, 0x39, 0xd7, 0x1f, 0xc2, 0x11, 0xd9, 0xb0, 0x9c, 0x0d, 0x85, 0x30, 0xa1, 0x1e, 0x1d, 0xbf, 0x6e, 0xed, 0x01 }, - { 0x4f, 0x82, 0xde, 0x03, 0xb9, 0x50, 0x47, 0x93, 0xb8, 0x2a, 0x07, 0xa0, 0xbd, 0xcd, 0xff, 0x31, 0x4d, 0x75, 0x9e, 0x7b, 0x62, 0xd2, 0x6b, 0x78, 0x49, 0x46, 0xb0, 0xd3, 0x6f, 0x91, 0x6f, 0x52 }, - { 0x25, 0x9e, 0xc7, 0xf1, 0x73, 0xbc, 0xc7, 0x6a, 0x09, 0x94, 0xc9, 0x67, 0xb4, 0xf5, 0xf0, 0x24, 0xc5, 0x60, 0x57, 0xfb, 0x79, 0xc9, 0x65, 0xc4, 0xfa, 0xe4, 0x18, 0x75, 0xf0, 0x6a, 0x0e, 0x4c }, - { 0x19, 0x3c, 0xc8, 0xe7, 0xc3, 0xe0, 0x8b, 0xb3, 0x0f, 0x54, 0x37, 0xaa, 0x27, 0xad, 0xe1, 0xf1, 0x42, 0x36, 0x9b, 0x24, 0x6a, 0x67, 0x5b, 0x23, 0x83, 0xe6, 0xda, 0x9b, 0x49, 0xa9, 0x80, 0x9e }, - { 0x5c, 0x10, 0x89, 0x6f, 0x0e, 0x28, 0x56, 0xb2, 0xa2, 0xee, 0xe0, 0xfe, 0x4a, 0x2c, 0x16, 0x33, 0x56, 0x5d, 0x18, 0xf0, 0xe9, 0x3e, 0x1f, 0xab, 0x26, 0xc3, 0x73, 0xe8, 0xf8, 0x29, 0x65, 0x4d }, - { 0xf1, 0x60, 0x12, 0xd9, 0x3f, 0x28, 0x85, 0x1a, 0x1e, 0xb9, 0x89, 0xf5, 0xd0, 0xb4, 0x3f, 0x3f, 0x39, 0xca, 0x73, 0xc9, 0xa6, 0x2d, 0x51, 0x81, 0xbf, 0xf2, 0x37, 0x53, 0x6b, 0xd3, 0x48, 0xc3 }, - { 0x29, 0x66, 0xb3, 0xcf, 0xae, 0x1e, 0x44, 0xea, 0x99, 0x6d, 0xc5, 0xd6, 0x86, 0xcf, 0x25, 0xfa, 0x05, 0x3f, 0xb6, 0xf6, 0x72, 0x01, 0xb9, 0xe4, 0x6e, 0xad, 0xe8, 0x5d, 0x0a, 0xd6, 0xb8, 0x06 }, - { 0xdd, 0xb8, 0x78, 0x24, 0x85, 0xe9, 0x00, 0xbc, 0x60, 0xbc, 0xf4, 0xc3, 0x3a, 0x6f, 0xd5, 0x85, 0x68, 0x0c, 0xc6, 0x83, 0xd5, 0x16, 0xef, 0xa0, 0x3e, 0xb9, 0x98, 0x5f, 0xad, 0x87, 0x15, 0xfb }, - { 0x4c, 0x4d, 0x6e, 0x71, 0xae, 0xa0, 0x57, 0x86, 0x41, 0x31, 0x48, 0xfc, 0x7a, 0x78, 0x6b, 0x0e, 0xca, 0xf5, 0x82, 0xcf, 0xf1, 0x20, 0x9f, 0x5a, 0x80, 0x9f, 0xba, 0x85, 0x04, 0xce, 0x66, 0x2c }, - { 0xfb, 0x4c, 0x5e, 0x86, 0xd7, 0xb2, 0x22, 0x9b, 0x99, 0xb8, 0xba, 0x6d, 0x94, 0xc2, 0x47, 0xef, 0x96, 0x4a, 0xa3, 0xa2, 0xba, 0xe8, 0xed, 0xc7, 0x75, 0x69, 0xf2, 0x8d, 0xbb, 0xff, 0x2d, 0x4e }, - { 0xe9, 0x4f, 0x52, 0x6d, 0xe9, 0x01, 0x96, 0x33, 0xec, 0xd5, 0x4a, 0xc6, 0x12, 0x0f, 0x23, 0x95, 0x8d, 0x77, 0x18, 0xf1, 0xe7, 0x71, 0x7b, 0xf3, 0x29, 0x21, 0x1a, 0x4f, 0xae, 0xed, 0x4e, 0x6d }, - { 0xcb, 0xd6, 0x66, 0x0a, 0x10, 0xdb, 0x3f, 0x23, 0xf7, 0xa0, 0x3d, 0x4b, 0x9d, 0x40, 0x44, 0xc7, 0x93, 0x2b, 0x28, 0x01, 0xac, 0x89, 0xd6, 0x0b, 0xc9, 0xeb, 0x92, 0xd6, 0x5a, 0x46, 0xc2, 0xa0 }, - { 0x88, 0x18, 0xbb, 0xd3, 0xdb, 0x4d, 0xc1, 0x23, 0xb2, 0x5c, 0xbb, 0xa5, 0xf5, 0x4c, 0x2b, 0xc4, 0xb3, 0xfc, 0xf9, 0xbf, 0x7d, 0x7a, 0x77, 0x09, 0xf4, 0xae, 0x58, 0x8b, 0x26, 0x7c, 0x4e, 0xce }, - { 0xc6, 0x53, 0x82, 0x51, 0x3f, 0x07, 0x46, 0x0d, 0xa3, 0x98, 0x33, 0xcb, 0x66, 0x6c, 0x5e, 0xd8, 0x2e, 0x61, 0xb9, 0xe9, 0x98, 0xf4, 0xb0, 0xc4, 0x28, 0x7c, 0xee, 0x56, 0xc3, 0xcc, 0x9b, 0xcd }, - { 0x89, 0x75, 0xb0, 0x57, 0x7f, 0xd3, 0x55, 0x66, 0xd7, 0x50, 0xb3, 0x62, 0xb0, 0x89, 0x7a, 0x26, 0xc3, 0x99, 0x13, 0x6d, 0xf0, 0x7b, 0xab, 0xab, 0xbd, 0xe6, 0x20, 0x3f, 0xf2, 0x95, 0x4e, 0xd4 }, - { 0x21, 0xfe, 0x0c, 0xeb, 0x00, 0x52, 0xbe, 0x7f, 0xb0, 0xf0, 0x04, 0x18, 0x7c, 0xac, 0xd7, 0xde, 0x67, 0xfa, 0x6e, 0xb0, 0x93, 0x8d, 0x92, 0x76, 0x77, 0xf2, 0x39, 0x8c, 0x13, 0x23, 0x17, 0xa8 }, - { 0x2e, 0xf7, 0x3f, 0x3c, 0x26, 0xf1, 0x2d, 0x93, 0x88, 0x9f, 0x3c, 0x78, 0xb6, 0xa6, 0x6c, 0x1d, 0x52, 0xb6, 0x49, 0xdc, 0x9e, 0x85, 0x6e, 0x2c, 0x17, 0x2e, 0xa7, 0xc5, 0x8a, 0xc2, 0xb5, 0xe3 }, - { 0x38, 0x8a, 0x3c, 0xd5, 0x6d, 0x73, 0x86, 0x7a, 0xbb, 0x5f, 0x84, 0x01, 0x49, 0x2b, 0x6e, 0x26, 0x81, 0xeb, 0x69, 0x85, 0x1e, 0x76, 0x7f, 0xd8, 0x42, 0x10, 0xa5, 0x60, 0x76, 0xfb, 0x3d, 0xd3 }, - { 0xaf, 0x53, 0x3e, 0x02, 0x2f, 0xc9, 0x43, 0x9e, 0x4e, 0x3c, 0xb8, 0x38, 0xec, 0xd1, 0x86, 0x92, 0x23, 0x2a, 0xdf, 0x6f, 0xe9, 0x83, 0x95, 0x26, 0xd3, 0xc3, 0xdd, 0x1b, 0x71, 0x91, 0x0b, 0x1a }, - { 0x75, 0x1c, 0x09, 0xd4, 0x1a, 0x93, 0x43, 0x88, 0x2a, 0x81, 0xcd, 0x13, 0xee, 0x40, 0x81, 0x8d, 0x12, 0xeb, 0x44, 0xc6, 0xc7, 0xf4, 0x0d, 0xf1, 0x6e, 0x4a, 0xea, 0x8f, 0xab, 0x91, 0x97, 0x2a }, - { 0x5b, 0x73, 0xdd, 0xb6, 0x8d, 0x9d, 0x2b, 0x0a, 0xa2, 0x65, 0xa0, 0x79, 0x88, 0xd6, 0xb8, 0x8a, 0xe9, 0xaa, 0xc5, 0x82, 0xaf, 0x83, 0x03, 0x2f, 0x8a, 0x9b, 0x21, 0xa2, 0xe1, 0xb7, 0xbf, 0x18 }, - { 0x3d, 0xa2, 0x91, 0x26, 0xc7, 0xc5, 0xd7, 0xf4, 0x3e, 0x64, 0x24, 0x2a, 0x79, 0xfe, 0xaa, 0x4e, 0xf3, 0x45, 0x9c, 0xde, 0xcc, 0xc8, 0x98, 0xed, 0x59, 0xa9, 0x7f, 0x6e, 0xc9, 0x3b, 0x9d, 0xab }, - { 0x56, 0x6d, 0xc9, 0x20, 0x29, 0x3d, 0xa5, 0xcb, 0x4f, 0xe0, 0xaa, 0x8a, 0xbd, 0xa8, 0xbb, 0xf5, 0x6f, 0x55, 0x23, 0x13, 0xbf, 0xf1, 0x90, 0x46, 0x64, 0x1e, 0x36, 0x15, 0xc1, 0xe3, 0xed, 0x3f }, - { 0x41, 0x15, 0xbe, 0xa0, 0x2f, 0x73, 0xf9, 0x7f, 0x62, 0x9e, 0x5c, 0x55, 0x90, 0x72, 0x0c, 0x01, 0xe7, 0xe4, 0x49, 0xae, 0x2a, 0x66, 0x97, 0xd4, 0xd2, 0x78, 0x33, 0x21, 0x30, 0x36, 0x92, 0xf9 }, - { 0x4c, 0xe0, 0x8f, 0x47, 0x62, 0x46, 0x8a, 0x76, 0x70, 0x01, 0x21, 0x64, 0x87, 0x8d, 0x68, 0x34, 0x0c, 0x52, 0xa3, 0x5e, 0x66, 0xc1, 0x88, 0x4d, 0x5c, 0x86, 0x48, 0x89, 0xab, 0xc9, 0x66, 0x77 }, - { 0x81, 0xea, 0x0b, 0x78, 0x04, 0x12, 0x4e, 0x0c, 0x22, 0xea, 0x5f, 0xc7, 0x11, 0x04, 0xa2, 0xaf, 0xcb, 0x52, 0xa1, 0xfa, 0x81, 0x6f, 0x3e, 0xcb, 0x7d, 0xcb, 0x5d, 0x9d, 0xea, 0x17, 0x86, 0xd0 }, - { 0xfe, 0x36, 0x27, 0x33, 0xb0, 0x5f, 0x6b, 0xed, 0xaf, 0x93, 0x79, 0xd7, 0xf7, 0x93, 0x6e, 0xde, 0x20, 0x9b, 0x1f, 0x83, 0x23, 0xc3, 0x92, 0x25, 0x49, 0xd9, 0xe7, 0x36, 0x81, 0xb5, 0xdb, 0x7b }, - { 0xef, 0xf3, 0x7d, 0x30, 0xdf, 0xd2, 0x03, 0x59, 0xbe, 0x4e, 0x73, 0xfd, 0xf4, 0x0d, 0x27, 0x73, 0x4b, 0x3d, 0xf9, 0x0a, 0x97, 0xa5, 0x5e, 0xd7, 0x45, 0x29, 0x72, 0x94, 0xca, 0x85, 0xd0, 0x9f }, - { 0x17, 0x2f, 0xfc, 0x67, 0x15, 0x3d, 0x12, 0xe0, 0xca, 0x76, 0xa8, 0xb6, 0xcd, 0x5d, 0x47, 0x31, 0x88, 0x5b, 0x39, 0xce, 0x0c, 0xac, 0x93, 0xa8, 0x97, 0x2a, 0x18, 0x00, 0x6c, 0x8b, 0x8b, 0xaf }, - { 0xc4, 0x79, 0x57, 0xf1, 0xcc, 0x88, 0xe8, 0x3e, 0xf9, 0x44, 0x58, 0x39, 0x70, 0x9a, 0x48, 0x0a, 0x03, 0x6b, 0xed, 0x5f, 0x88, 0xac, 0x0f, 0xcc, 0x8e, 0x1e, 0x70, 0x3f, 0xfa, 0xac, 0x13, 0x2c }, - { 0x30, 0xf3, 0x54, 0x83, 0x70, 0xcf, 0xdc, 0xed, 0xa5, 0xc3, 0x7b, 0x56, 0x9b, 0x61, 0x75, 0xe7, 0x99, 0xee, 0xf1, 0xa6, 0x2a, 0xaa, 0x94, 0x32, 0x45, 0xae, 0x76, 0x69, 0xc2, 0x27, 0xa7, 0xb5 }, - { 0xc9, 0x5d, 0xcb, 0x3c, 0xf1, 0xf2, 0x7d, 0x0e, 0xef, 0x2f, 0x25, 0xd2, 0x41, 0x38, 0x70, 0x90, 0x4a, 0x87, 0x7c, 0x4a, 0x56, 0xc2, 0xde, 0x1e, 0x83, 0xe2, 0xbc, 0x2a, 0xe2, 0xe4, 0x68, 0x21 }, - { 0xd5, 0xd0, 0xb5, 0xd7, 0x05, 0x43, 0x4c, 0xd4, 0x6b, 0x18, 0x57, 0x49, 0xf6, 0x6b, 0xfb, 0x58, 0x36, 0xdc, 0xdf, 0x6e, 0xe5, 0x49, 0xa2, 0xb7, 0xa4, 0xae, 0xe7, 0xf5, 0x80, 0x07, 0xca, 0xaf }, - { 0xbb, 0xc1, 0x24, 0xa7, 0x12, 0xf1, 0x5d, 0x07, 0xc3, 0x00, 0xe0, 0x5b, 0x66, 0x83, 0x89, 0xa4, 0x39, 0xc9, 0x17, 0x77, 0xf7, 0x21, 0xf8, 0x32, 0x0c, 0x1c, 0x90, 0x78, 0x06, 0x6d, 0x2c, 0x7e }, - { 0xa4, 0x51, 0xb4, 0x8c, 0x35, 0xa6, 0xc7, 0x85, 0x4c, 0xfa, 0xae, 0x60, 0x26, 0x2e, 0x76, 0x99, 0x08, 0x16, 0x38, 0x2a, 0xc0, 0x66, 0x7e, 0x5a, 0x5c, 0x9e, 0x1b, 0x46, 0xc4, 0x34, 0x2d, 0xdf }, - { 0xb0, 0xd1, 0x50, 0xfb, 0x55, 0xe7, 0x78, 0xd0, 0x11, 0x47, 0xf0, 0xb5, 0xd8, 0x9d, 0x99, 0xec, 0xb2, 0x0f, 0xf0, 0x7e, 0x5e, 0x67, 0x60, 0xd6, 0xb6, 0x45, 0xeb, 0x5b, 0x65, 0x4c, 0x62, 0x2b }, - { 0x34, 0xf7, 0x37, 0xc0, 0xab, 0x21, 0x99, 0x51, 0xee, 0xe8, 0x9a, 0x9f, 0x8d, 0xac, 0x29, 0x9c, 0x9d, 0x4c, 0x38, 0xf3, 0x3f, 0xa4, 0x94, 0xc5, 0xc6, 0xee, 0xfc, 0x92, 0xb6, 0xdb, 0x08, 0xbc }, - { 0x1a, 0x62, 0xcc, 0x3a, 0x00, 0x80, 0x0d, 0xcb, 0xd9, 0x98, 0x91, 0x08, 0x0c, 0x1e, 0x09, 0x84, 0x58, 0x19, 0x3a, 0x8c, 0xc9, 0xf9, 0x70, 0xea, 0x99, 0xfb, 0xef, 0xf0, 0x03, 0x18, 0xc2, 0x89 }, - { 0xcf, 0xce, 0x55, 0xeb, 0xaf, 0xc8, 0x40, 0xd7, 0xae, 0x48, 0x28, 0x1c, 0x7f, 0xd5, 0x7e, 0xc8, 0xb4, 0x82, 0xd4, 0xb7, 0x04, 0x43, 0x74, 0x95, 0x49, 0x5a, 0xc4, 0x14, 0xcf, 0x4a, 0x37, 0x4b }, - { 0x67, 0x46, 0xfa, 0xcf, 0x71, 0x14, 0x6d, 0x99, 0x9d, 0xab, 0xd0, 0x5d, 0x09, 0x3a, 0xe5, 0x86, 0x64, 0x8d, 0x1e, 0xe2, 0x8e, 0x72, 0x61, 0x7b, 0x99, 0xd0, 0xf0, 0x08, 0x6e, 0x1e, 0x45, 0xbf }, - { 0x57, 0x1c, 0xed, 0x28, 0x3b, 0x3f, 0x23, 0xb4, 0xe7, 0x50, 0xbf, 0x12, 0xa2, 0xca, 0xf1, 0x78, 0x18, 0x47, 0xbd, 0x89, 0x0e, 0x43, 0x60, 0x3c, 0xdc, 0x59, 0x76, 0x10, 0x2b, 0x7b, 0xb1, 0x1b }, - { 0xcf, 0xcb, 0x76, 0x5b, 0x04, 0x8e, 0x35, 0x02, 0x2c, 0x5d, 0x08, 0x9d, 0x26, 0xe8, 0x5a, 0x36, 0xb0, 0x05, 0xa2, 0xb8, 0x04, 0x93, 0xd0, 0x3a, 0x14, 0x4e, 0x09, 0xf4, 0x09, 0xb6, 0xaf, 0xd1 }, - { 0x40, 0x50, 0xc7, 0xa2, 0x77, 0x05, 0xbb, 0x27, 0xf4, 0x20, 0x89, 0xb2, 0x99, 0xf3, 0xcb, 0xe5, 0x05, 0x4e, 0xad, 0x68, 0x72, 0x7e, 0x8e, 0xf9, 0x31, 0x8c, 0xe6, 0xf2, 0x5c, 0xd6, 0xf3, 0x1d }, - { 0x18, 0x40, 0x70, 0xbd, 0x5d, 0x26, 0x5f, 0xbd, 0xc1, 0x42, 0xcd, 0x1c, 0x5c, 0xd0, 0xd7, 0xe4, 0x14, 0xe7, 0x03, 0x69, 0xa2, 0x66, 0xd6, 0x27, 0xc8, 0xfb, 0xa8, 0x4f, 0xa5, 0xe8, 0x4c, 0x34 }, - { 0x9e, 0xdd, 0xa9, 0xa4, 0x44, 0x39, 0x02, 0xa9, 0x58, 0x8c, 0x0d, 0x0c, 0xcc, 0x62, 0xb9, 0x30, 0x21, 0x84, 0x79, 0xa6, 0x84, 0x1e, 0x6f, 0xe7, 0xd4, 0x30, 0x03, 0xf0, 0x4b, 0x1f, 0xd6, 0x43 }, - { 0xe4, 0x12, 0xfe, 0xef, 0x79, 0x08, 0x32, 0x4a, 0x6d, 0xa1, 0x84, 0x16, 0x29, 0xf3, 0x5d, 0x3d, 0x35, 0x86, 0x42, 0x01, 0x93, 0x10, 0xec, 0x57, 0xc6, 0x14, 0x83, 0x6b, 0x63, 0xd3, 0x07, 0x63 }, - { 0x1a, 0x2b, 0x8e, 0xdf, 0xf3, 0xf9, 0xac, 0xc1, 0x55, 0x4f, 0xcb, 0xae, 0x3c, 0xf1, 0xd6, 0x29, 0x8c, 0x64, 0x62, 0xe2, 0x2e, 0x5e, 0xb0, 0x25, 0x96, 0x84, 0xf8, 0x35, 0x01, 0x2b, 0xd1, 0x3f }, - { 0x28, 0x8c, 0x4a, 0xd9, 0xb9, 0x40, 0x97, 0x62, 0xea, 0x07, 0xc2, 0x4a, 0x41, 0xf0, 0x4f, 0x69, 0xa7, 0xd7, 0x4b, 0xee, 0x2d, 0x95, 0x43, 0x53, 0x74, 0xbd, 0xe9, 0x46, 0xd7, 0x24, 0x1c, 0x7b }, - { 0x80, 0x56, 0x91, 0xbb, 0x28, 0x67, 0x48, 0xcf, 0xb5, 0x91, 0xd3, 0xae, 0xbe, 0x7e, 0x6f, 0x4e, 0x4d, 0xc6, 0xe2, 0x80, 0x8c, 0x65, 0x14, 0x3c, 0xc0, 0x04, 0xe4, 0xeb, 0x6f, 0xd0, 0x9d, 0x43 }, - { 0xd4, 0xac, 0x8d, 0x3a, 0x0a, 0xfc, 0x6c, 0xfa, 0x7b, 0x46, 0x0a, 0xe3, 0x00, 0x1b, 0xae, 0xb3, 0x6d, 0xad, 0xb3, 0x7d, 0xa0, 0x7d, 0x2e, 0x8a, 0xc9, 0x18, 0x22, 0xdf, 0x34, 0x8a, 0xed, 0x3d }, - { 0xc3, 0x76, 0x61, 0x70, 0x14, 0xd2, 0x01, 0x58, 0xbc, 0xed, 0x3d, 0x3b, 0xa5, 0x52, 0xb6, 0xec, 0xcf, 0x84, 0xe6, 0x2a, 0xa3, 0xeb, 0x65, 0x0e, 0x90, 0x02, 0x9c, 0x84, 0xd1, 0x3e, 0xea, 0x69 }, - { 0xc4, 0x1f, 0x09, 0xf4, 0x3c, 0xec, 0xae, 0x72, 0x93, 0xd6, 0x00, 0x7c, 0xa0, 0xa3, 0x57, 0x08, 0x7d, 0x5a, 0xe5, 0x9b, 0xe5, 0x00, 0xc1, 0xcd, 0x5b, 0x28, 0x9e, 0xe8, 0x10, 0xc7, 0xb0, 0x82 }, - { 0x03, 0xd1, 0xce, 0xd1, 0xfb, 0xa5, 0xc3, 0x91, 0x55, 0xc4, 0x4b, 0x77, 0x65, 0xcb, 0x76, 0x0c, 0x78, 0x70, 0x8d, 0xcf, 0xc8, 0x0b, 0x0b, 0xd8, 0xad, 0xe3, 0xa5, 0x6d, 0xa8, 0x83, 0x0b, 0x29 }, - { 0x09, 0xbd, 0xe6, 0xf1, 0x52, 0x21, 0x8d, 0xc9, 0x2c, 0x41, 0xd7, 0xf4, 0x53, 0x87, 0xe6, 0x3e, 0x58, 0x69, 0xd8, 0x07, 0xec, 0x70, 0xb8, 0x21, 0x40, 0x5d, 0xbd, 0x88, 0x4b, 0x7f, 0xcf, 0x4b }, - { 0x71, 0xc9, 0x03, 0x6e, 0x18, 0x17, 0x9b, 0x90, 0xb3, 0x7d, 0x39, 0xe9, 0xf0, 0x5e, 0xb8, 0x9c, 0xc5, 0xfc, 0x34, 0x1f, 0xd7, 0xc4, 0x77, 0xd0, 0xd7, 0x49, 0x32, 0x85, 0xfa, 0xca, 0x08, 0xa4 }, - { 0x59, 0x16, 0x83, 0x3e, 0xbb, 0x05, 0xcd, 0x91, 0x9c, 0xa7, 0xfe, 0x83, 0xb6, 0x92, 0xd3, 0x20, 0x5b, 0xef, 0x72, 0x39, 0x2b, 0x2c, 0xf6, 0xbb, 0x0a, 0x6d, 0x43, 0xf9, 0x94, 0xf9, 0x5f, 0x11 }, - { 0xf6, 0x3a, 0xab, 0x3e, 0xc6, 0x41, 0xb3, 0xb0, 0x24, 0x96, 0x4c, 0x2b, 0x43, 0x7c, 0x04, 0xf6, 0x04, 0x3c, 0x4c, 0x7e, 0x02, 0x79, 0x23, 0x99, 0x95, 0x40, 0x19, 0x58, 0xf8, 0x6b, 0xbe, 0x54 }, - { 0xf1, 0x72, 0xb1, 0x80, 0xbf, 0xb0, 0x97, 0x40, 0x49, 0x31, 0x20, 0xb6, 0x32, 0x6c, 0xbd, 0xc5, 0x61, 0xe4, 0x77, 0xde, 0xf9, 0xbb, 0xcf, 0xd2, 0x8c, 0xc8, 0xc1, 0xc5, 0xe3, 0x37, 0x9a, 0x31 }, - { 0xcb, 0x9b, 0x89, 0xcc, 0x18, 0x38, 0x1d, 0xd9, 0x14, 0x1a, 0xde, 0x58, 0x86, 0x54, 0xd4, 0xe6, 0xa2, 0x31, 0xd5, 0xbf, 0x49, 0xd4, 0xd5, 0x9a, 0xc2, 0x7d, 0x86, 0x9c, 0xbe, 0x10, 0x0c, 0xf3 }, - { 0x7b, 0xd8, 0x81, 0x50, 0x46, 0xfd, 0xd8, 0x10, 0xa9, 0x23, 0xe1, 0x98, 0x4a, 0xae, 0xbd, 0xcd, 0xf8, 0x4d, 0x87, 0xc8, 0x99, 0x2d, 0x68, 0xb5, 0xee, 0xb4, 0x60, 0xf9, 0x3e, 0xb3, 0xc8, 0xd7 }, - { 0x60, 0x7b, 0xe6, 0x68, 0x62, 0xfd, 0x08, 0xee, 0x5b, 0x19, 0xfa, 0xca, 0xc0, 0x9d, 0xfd, 0xbc, 0xd4, 0x0c, 0x31, 0x21, 0x01, 0xd6, 0x6e, 0x6e, 0xbd, 0x2b, 0x84, 0x1f, 0x1b, 0x9a, 0x93, 0x25 }, - { 0x9f, 0xe0, 0x3b, 0xbe, 0x69, 0xab, 0x18, 0x34, 0xf5, 0x21, 0x9b, 0x0d, 0xa8, 0x8a, 0x08, 0xb3, 0x0a, 0x66, 0xc5, 0x91, 0x3f, 0x01, 0x51, 0x96, 0x3c, 0x36, 0x05, 0x60, 0xdb, 0x03, 0x87, 0xb3 }, - { 0x90, 0xa8, 0x35, 0x85, 0x71, 0x7b, 0x75, 0xf0, 0xe9, 0xb7, 0x25, 0xe0, 0x55, 0xee, 0xee, 0xb9, 0xe7, 0xa0, 0x28, 0xea, 0x7e, 0x6c, 0xbc, 0x07, 0xb2, 0x09, 0x17, 0xec, 0x03, 0x63, 0xe3, 0x8c }, - { 0x33, 0x6e, 0xa0, 0x53, 0x0f, 0x4a, 0x74, 0x69, 0x12, 0x6e, 0x02, 0x18, 0x58, 0x7e, 0xbb, 0xde, 0x33, 0x58, 0xa0, 0xb3, 0x1c, 0x29, 0xd2, 0x00, 0xf7, 0xdc, 0x7e, 0xb1, 0x5c, 0x6a, 0xad, 0xd8 }, - { 0xa7, 0x9e, 0x76, 0xdc, 0x0a, 0xbc, 0xa4, 0x39, 0x6f, 0x07, 0x47, 0xcd, 0x7b, 0x74, 0x8d, 0xf9, 0x13, 0x00, 0x76, 0x26, 0xb1, 0xd6, 0x59, 0xda, 0x0c, 0x1f, 0x78, 0xb9, 0x30, 0x3d, 0x01, 0xa3 }, - { 0x44, 0xe7, 0x8a, 0x77, 0x37, 0x56, 0xe0, 0x95, 0x15, 0x19, 0x50, 0x4d, 0x70, 0x38, 0xd2, 0x8d, 0x02, 0x13, 0xa3, 0x7e, 0x0c, 0xe3, 0x75, 0x37, 0x17, 0x57, 0xbc, 0x99, 0x63, 0x11, 0xe3, 0xb8 }, - { 0x77, 0xac, 0x01, 0x2a, 0x3f, 0x75, 0x4d, 0xcf, 0xea, 0xb5, 0xeb, 0x99, 0x6b, 0xe9, 0xcd, 0x2d, 0x1f, 0x96, 0x11, 0x1b, 0x6e, 0x49, 0xf3, 0x99, 0x4d, 0xf1, 0x81, 0xf2, 0x85, 0x69, 0xd8, 0x25 }, - { 0xce, 0x5a, 0x10, 0xdb, 0x6f, 0xcc, 0xda, 0xf1, 0x40, 0xaa, 0xa4, 0xde, 0xd6, 0x25, 0x0a, 0x9c, 0x06, 0xe9, 0x22, 0x2b, 0xc9, 0xf9, 0xf3, 0x65, 0x8a, 0x4a, 0xff, 0x93, 0x5f, 0x2b, 0x9f, 0x3a }, - { 0xec, 0xc2, 0x03, 0xa7, 0xfe, 0x2b, 0xe4, 0xab, 0xd5, 0x5b, 0xb5, 0x3e, 0x6e, 0x67, 0x35, 0x72, 0xe0, 0x07, 0x8d, 0xa8, 0xcd, 0x37, 0x5e, 0xf4, 0x30, 0xcc, 0x97, 0xf9, 0xf8, 0x00, 0x83, 0xaf }, - { 0x14, 0xa5, 0x18, 0x6d, 0xe9, 0xd7, 0xa1, 0x8b, 0x04, 0x12, 0xb8, 0x56, 0x3e, 0x51, 0xcc, 0x54, 0x33, 0x84, 0x0b, 0x4a, 0x12, 0x9a, 0x8f, 0xf9, 0x63, 0xb3, 0x3a, 0x3c, 0x4a, 0xfe, 0x8e, 0xbb }, - { 0x13, 0xf8, 0xef, 0x95, 0xcb, 0x86, 0xe6, 0xa6, 0x38, 0x93, 0x1c, 0x8e, 0x10, 0x76, 0x73, 0xeb, 0x76, 0xba, 0x10, 0xd7, 0xc2, 0xcd, 0x70, 0xb9, 0xd9, 0x92, 0x0b, 0xbe, 0xed, 0x92, 0x94, 0x09 }, - { 0x0b, 0x33, 0x8f, 0x4e, 0xe1, 0x2f, 0x2d, 0xfc, 0xb7, 0x87, 0x13, 0x37, 0x79, 0x41, 0xe0, 0xb0, 0x63, 0x21, 0x52, 0x58, 0x1d, 0x13, 0x32, 0x51, 0x6e, 0x4a, 0x2c, 0xab, 0x19, 0x42, 0xcc, 0xa4 }, - { 0xea, 0xab, 0x0e, 0xc3, 0x7b, 0x3b, 0x8a, 0xb7, 0x96, 0xe9, 0xf5, 0x72, 0x38, 0xde, 0x14, 0xa2, 0x64, 0xa0, 0x76, 0xf3, 0x88, 0x7d, 0x86, 0xe2, 0x9b, 0xb5, 0x90, 0x6d, 0xb5, 0xa0, 0x0e, 0x02 }, - { 0x23, 0xcb, 0x68, 0xb8, 0xc0, 0xe6, 0xdc, 0x26, 0xdc, 0x27, 0x76, 0x6d, 0xdc, 0x0a, 0x13, 0xa9, 0x94, 0x38, 0xfd, 0x55, 0x61, 0x7a, 0xa4, 0x09, 0x5d, 0x8f, 0x96, 0x97, 0x20, 0xc8, 0x72, 0xdf }, - { 0x09, 0x1d, 0x8e, 0xe3, 0x0d, 0x6f, 0x29, 0x68, 0xd4, 0x6b, 0x68, 0x7d, 0xd6, 0x52, 0x92, 0x66, 0x57, 0x42, 0xde, 0x0b, 0xb8, 0x3d, 0xcc, 0x00, 0x04, 0xc7, 0x2c, 0xe1, 0x00, 0x07, 0xa5, 0x49 }, - { 0x7f, 0x50, 0x7a, 0xbc, 0x6d, 0x19, 0xba, 0x00, 0xc0, 0x65, 0xa8, 0x76, 0xec, 0x56, 0x57, 0x86, 0x88, 0x82, 0xd1, 0x8a, 0x22, 0x1b, 0xc4, 0x6c, 0x7a, 0x69, 0x12, 0x54, 0x1f, 0x5b, 0xc7, 0xba }, - { 0xa0, 0x60, 0x7c, 0x24, 0xe1, 0x4e, 0x8c, 0x22, 0x3d, 0xb0, 0xd7, 0x0b, 0x4d, 0x30, 0xee, 0x88, 0x01, 0x4d, 0x60, 0x3f, 0x43, 0x7e, 0x9e, 0x02, 0xaa, 0x7d, 0xaf, 0xa3, 0xcd, 0xfb, 0xad, 0x94 }, - { 0xdd, 0xbf, 0xea, 0x75, 0xcc, 0x46, 0x78, 0x82, 0xeb, 0x34, 0x83, 0xce, 0x5e, 0x2e, 0x75, 0x6a, 0x4f, 0x47, 0x01, 0xb7, 0x6b, 0x44, 0x55, 0x19, 0xe8, 0x9f, 0x22, 0xd6, 0x0f, 0xa8, 0x6e, 0x06 }, - { 0x0c, 0x31, 0x1f, 0x38, 0xc3, 0x5a, 0x4f, 0xb9, 0x0d, 0x65, 0x1c, 0x28, 0x9d, 0x48, 0x68, 0x56, 0xcd, 0x14, 0x13, 0xdf, 0x9b, 0x06, 0x77, 0xf5, 0x3e, 0xce, 0x2c, 0xd9, 0xe4, 0x77, 0xc6, 0x0a }, - { 0x46, 0xa7, 0x3a, 0x8d, 0xd3, 0xe7, 0x0f, 0x59, 0xd3, 0x94, 0x2c, 0x01, 0xdf, 0x59, 0x9d, 0xef, 0x78, 0x3c, 0x9d, 0xa8, 0x2f, 0xd8, 0x32, 0x22, 0xcd, 0x66, 0x2b, 0x53, 0xdc, 0xe7, 0xdb, 0xdf }, - { 0xad, 0x03, 0x8f, 0xf9, 0xb1, 0x4d, 0xe8, 0x4a, 0x80, 0x1e, 0x4e, 0x62, 0x1c, 0xe5, 0xdf, 0x02, 0x9d, 0xd9, 0x35, 0x20, 0xd0, 0xc2, 0xfa, 0x38, 0xbf, 0xf1, 0x76, 0xa8, 0xb1, 0xd1, 0x69, 0x8c }, - { 0xab, 0x70, 0xc5, 0xdf, 0xbd, 0x1e, 0xa8, 0x17, 0xfe, 0xd0, 0xcd, 0x06, 0x72, 0x93, 0xab, 0xf3, 0x19, 0xe5, 0xd7, 0x90, 0x1c, 0x21, 0x41, 0xd5, 0xd9, 0x9b, 0x23, 0xf0, 0x3a, 0x38, 0xe7, 0x48 }, - { 0x1f, 0xff, 0xda, 0x67, 0x93, 0x2b, 0x73, 0xc8, 0xec, 0xaf, 0x00, 0x9a, 0x34, 0x91, 0xa0, 0x26, 0x95, 0x3b, 0xab, 0xfe, 0x1f, 0x66, 0x3b, 0x06, 0x97, 0xc3, 0xc4, 0xae, 0x8b, 0x2e, 0x7d, 0xcb }, - { 0xb0, 0xd2, 0xcc, 0x19, 0x47, 0x2d, 0xd5, 0x7f, 0x2b, 0x17, 0xef, 0xc0, 0x3c, 0x8d, 0x58, 0xc2, 0x28, 0x3d, 0xbb, 0x19, 0xda, 0x57, 0x2f, 0x77, 0x55, 0x85, 0x5a, 0xa9, 0x79, 0x43, 0x17, 0xa0 }, - { 0xa0, 0xd1, 0x9a, 0x6e, 0xe3, 0x39, 0x79, 0xc3, 0x25, 0x51, 0x0e, 0x27, 0x66, 0x22, 0xdf, 0x41, 0xf7, 0x15, 0x83, 0xd0, 0x75, 0x01, 0xb8, 0x70, 0x71, 0x12, 0x9a, 0x0a, 0xd9, 0x47, 0x32, 0xa5 }, - { 0x72, 0x46, 0x42, 0xa7, 0x03, 0x2d, 0x10, 0x62, 0xb8, 0x9e, 0x52, 0xbe, 0xa3, 0x4b, 0x75, 0xdf, 0x7d, 0x8f, 0xe7, 0x72, 0xd9, 0xfe, 0x3c, 0x93, 0xdd, 0xf3, 0xc4, 0x54, 0x5a, 0xb5, 0xa9, 0x9b }, - { 0xad, 0xe5, 0xea, 0xa7, 0xe6, 0x1f, 0x67, 0x2d, 0x58, 0x7e, 0xa0, 0x3d, 0xae, 0x7d, 0x7b, 0x55, 0x22, 0x9c, 0x01, 0xd0, 0x6b, 0xc0, 0xa5, 0x70, 0x14, 0x36, 0xcb, 0xd1, 0x83, 0x66, 0xa6, 0x26 }, - { 0x01, 0x3b, 0x31, 0xeb, 0xd2, 0x28, 0xfc, 0xdd, 0xa5, 0x1f, 0xab, 0xb0, 0x3b, 0xb0, 0x2d, 0x60, 0xac, 0x20, 0xca, 0x21, 0x5a, 0xaf, 0xa8, 0x3b, 0xdd, 0x85, 0x5e, 0x37, 0x55, 0xa3, 0x5f, 0x0b }, - { 0x33, 0x2e, 0xd4, 0x0b, 0xb1, 0x0d, 0xde, 0x3c, 0x95, 0x4a, 0x75, 0xd7, 0xb8, 0x99, 0x9d, 0x4b, 0x26, 0xa1, 0xc0, 0x63, 0xc1, 0xdc, 0x6e, 0x32, 0xc1, 0xd9, 0x1b, 0xab, 0x7b, 0xbb, 0x7d, 0x16 }, - { 0xc7, 0xa1, 0x97, 0xb3, 0xa0, 0x5b, 0x56, 0x6b, 0xcc, 0x9f, 0xac, 0xd2, 0x0e, 0x44, 0x1d, 0x6f, 0x6c, 0x28, 0x60, 0xac, 0x96, 0x51, 0xcd, 0x51, 0xd6, 0xb9, 0xd2, 0xcd, 0xee, 0xea, 0x03, 0x90 }, - { 0xbd, 0x9c, 0xf6, 0x4e, 0xa8, 0x95, 0x3c, 0x03, 0x71, 0x08, 0xe6, 0xf6, 0x54, 0x91, 0x4f, 0x39, 0x58, 0xb6, 0x8e, 0x29, 0xc1, 0x67, 0x00, 0xdc, 0x18, 0x4d, 0x94, 0xa2, 0x17, 0x08, 0xff, 0x60 }, - { 0x88, 0x35, 0xb0, 0xac, 0x02, 0x11, 0x51, 0xdf, 0x71, 0x64, 0x74, 0xce, 0x27, 0xce, 0x4d, 0x3c, 0x15, 0xf0, 0xb2, 0xda, 0xb4, 0x80, 0x03, 0xcf, 0x3f, 0x3e, 0xfd, 0x09, 0x45, 0x10, 0x6b, 0x9a }, - { 0x3b, 0xfe, 0xfa, 0x33, 0x01, 0xaa, 0x55, 0xc0, 0x80, 0x19, 0x0c, 0xff, 0xda, 0x8e, 0xae, 0x51, 0xd9, 0xaf, 0x48, 0x8b, 0x4c, 0x1f, 0x24, 0xc3, 0xd9, 0xa7, 0x52, 0x42, 0xfd, 0x8e, 0xa0, 0x1d }, - { 0x08, 0x28, 0x4d, 0x14, 0x99, 0x3c, 0xd4, 0x7d, 0x53, 0xeb, 0xae, 0xcf, 0x0d, 0xf0, 0x47, 0x8c, 0xc1, 0x82, 0xc8, 0x9c, 0x00, 0xe1, 0x85, 0x9c, 0x84, 0x85, 0x16, 0x86, 0xdd, 0xf2, 0xc1, 0xb7 }, - { 0x1e, 0xd7, 0xef, 0x9f, 0x04, 0xc2, 0xac, 0x8d, 0xb6, 0xa8, 0x64, 0xdb, 0x13, 0x10, 0x87, 0xf2, 0x70, 0x65, 0x09, 0x8e, 0x69, 0xc3, 0xfe, 0x78, 0x71, 0x8d, 0x9b, 0x94, 0x7f, 0x4a, 0x39, 0xd0 }, - { 0xc1, 0x61, 0xf2, 0xdc, 0xd5, 0x7e, 0x9c, 0x14, 0x39, 0xb3, 0x1a, 0x9d, 0xd4, 0x3d, 0x8f, 0x3d, 0x7d, 0xd8, 0xf0, 0xeb, 0x7c, 0xfa, 0xc6, 0xfb, 0x25, 0xa0, 0xf2, 0x8e, 0x30, 0x6f, 0x06, 0x61 }, - { 0xc0, 0x19, 0x69, 0xad, 0x34, 0xc5, 0x2c, 0xaf, 0x3d, 0xc4, 0xd8, 0x0d, 0x19, 0x73, 0x5c, 0x29, 0x73, 0x1a, 0xc6, 0xe7, 0xa9, 0x20, 0x85, 0xab, 0x92, 0x50, 0xc4, 0x8d, 0xea, 0x48, 0xa3, 0xfc }, - { 0x17, 0x20, 0xb3, 0x65, 0x56, 0x19, 0xd2, 0xa5, 0x2b, 0x35, 0x21, 0xae, 0x0e, 0x49, 0xe3, 0x45, 0xcb, 0x33, 0x89, 0xeb, 0xd6, 0x20, 0x8a, 0xca, 0xf9, 0xf1, 0x3f, 0xda, 0xcc, 0xa8, 0xbe, 0x49 }, - { 0x75, 0x62, 0x88, 0x36, 0x1c, 0x83, 0xe2, 0x4c, 0x61, 0x7c, 0xf9, 0x5c, 0x90, 0x5b, 0x22, 0xd0, 0x17, 0xcd, 0xc8, 0x6f, 0x0b, 0xf1, 0xd6, 0x58, 0xf4, 0x75, 0x6c, 0x73, 0x79, 0x87, 0x3b, 0x7f }, - { 0xe7, 0xd0, 0xed, 0xa3, 0x45, 0x26, 0x93, 0xb7, 0x52, 0xab, 0xcd, 0xa1, 0xb5, 0x5e, 0x27, 0x6f, 0x82, 0x69, 0x8f, 0x5f, 0x16, 0x05, 0x40, 0x3e, 0xff, 0x83, 0x0b, 0xea, 0x00, 0x71, 0xa3, 0x94 }, - { 0x2c, 0x82, 0xec, 0xaa, 0x6b, 0x84, 0x80, 0x3e, 0x04, 0x4a, 0xf6, 0x31, 0x18, 0xaf, 0xe5, 0x44, 0x68, 0x7c, 0xb6, 0xe6, 0xc7, 0xdf, 0x49, 0xed, 0x76, 0x2d, 0xfd, 0x7c, 0x86, 0x93, 0xa1, 0xbc }, - { 0x61, 0x36, 0xcb, 0xf4, 0xb4, 0x41, 0x05, 0x6f, 0xa1, 0xe2, 0x72, 0x24, 0x98, 0x12, 0x5d, 0x6d, 0xed, 0x45, 0xe1, 0x7b, 0x52, 0x14, 0x39, 0x59, 0xc7, 0xf4, 0xd4, 0xe3, 0x95, 0x21, 0x8a, 0xc2 }, - { 0x72, 0x1d, 0x32, 0x45, 0xaa, 0xfe, 0xf2, 0x7f, 0x6a, 0x62, 0x4f, 0x47, 0x95, 0x4b, 0x6c, 0x25, 0x50, 0x79, 0x52, 0x6f, 0xfa, 0x25, 0xe9, 0xff, 0x77, 0xe5, 0xdc, 0xff, 0x47, 0x3b, 0x15, 0x97 }, - { 0x9d, 0xd2, 0xfb, 0xd8, 0xce, 0xf1, 0x6c, 0x35, 0x3c, 0x0a, 0xc2, 0x11, 0x91, 0xd5, 0x09, 0xeb, 0x28, 0xdd, 0x9e, 0x3e, 0x0d, 0x8c, 0xea, 0x5d, 0x26, 0xca, 0x83, 0x93, 0x93, 0x85, 0x1c, 0x3a }, - { 0xb2, 0x39, 0x4c, 0xea, 0xcd, 0xeb, 0xf2, 0x1b, 0xf9, 0xdf, 0x2c, 0xed, 0x98, 0xe5, 0x8f, 0x1c, 0x3a, 0x4b, 0xbb, 0xff, 0x66, 0x0d, 0xd9, 0x00, 0xf6, 0x22, 0x02, 0xd6, 0x78, 0x5c, 0xc4, 0x6e }, - { 0x57, 0x08, 0x9f, 0x22, 0x27, 0x49, 0xad, 0x78, 0x71, 0x76, 0x5f, 0x06, 0x2b, 0x11, 0x4f, 0x43, 0xba, 0x20, 0xec, 0x56, 0x42, 0x2a, 0x8b, 0x1e, 0x3f, 0x87, 0x19, 0x2c, 0x0e, 0xa7, 0x18, 0xc6 }, - { 0xe4, 0x9a, 0x94, 0x59, 0x96, 0x1c, 0xd3, 0x3c, 0xdf, 0x4a, 0xae, 0x1b, 0x10, 0x78, 0xa5, 0xde, 0xa7, 0xc0, 0x40, 0xe0, 0xfe, 0xa3, 0x40, 0xc9, 0x3a, 0x72, 0x48, 0x72, 0xfc, 0x4a, 0xf8, 0x06 }, - { 0xed, 0xe6, 0x7f, 0x72, 0x0e, 0xff, 0xd2, 0xca, 0x9c, 0x88, 0x99, 0x41, 0x52, 0xd0, 0x20, 0x1d, 0xee, 0x6b, 0x0a, 0x2d, 0x2c, 0x07, 0x7a, 0xca, 0x6d, 0xae, 0x29, 0xf7, 0x3f, 0x8b, 0x63, 0x09 }, - { 0xe0, 0xf4, 0x34, 0xbf, 0x22, 0xe3, 0x08, 0x80, 0x39, 0xc2, 0x1f, 0x71, 0x9f, 0xfc, 0x67, 0xf0, 0xf2, 0xcb, 0x5e, 0x98, 0xa7, 0xa0, 0x19, 0x4c, 0x76, 0xe9, 0x6b, 0xf4, 0xe8, 0xe1, 0x7e, 0x61 }, - { 0x27, 0x7c, 0x04, 0xe2, 0x85, 0x34, 0x84, 0xa4, 0xeb, 0xa9, 0x10, 0xad, 0x33, 0x6d, 0x01, 0xb4, 0x77, 0xb6, 0x7c, 0xc2, 0x00, 0xc5, 0x9f, 0x3c, 0x8d, 0x77, 0xee, 0xf8, 0x49, 0x4f, 0x29, 0xcd }, - { 0x15, 0x6d, 0x57, 0x47, 0xd0, 0xc9, 0x9c, 0x7f, 0x27, 0x09, 0x7d, 0x7b, 0x7e, 0x00, 0x2b, 0x2e, 0x18, 0x5c, 0xb7, 0x2d, 0x8d, 0xd7, 0xeb, 0x42, 0x4a, 0x03, 0x21, 0x52, 0x81, 0x61, 0x21, 0x9f }, - { 0x20, 0xdd, 0xd1, 0xed, 0x9b, 0x1c, 0xa8, 0x03, 0x94, 0x6d, 0x64, 0xa8, 0x3a, 0xe4, 0x65, 0x9d, 0xa6, 0x7f, 0xba, 0x7a, 0x1a, 0x3e, 0xdd, 0xb1, 0xe1, 0x03, 0xc0, 0xf5, 0xe0, 0x3e, 0x3a, 0x2c }, - { 0xf0, 0xaf, 0x60, 0x4d, 0x3d, 0xab, 0xbf, 0x9a, 0x0f, 0x2a, 0x7d, 0x3d, 0xda, 0x6b, 0xd3, 0x8b, 0xba, 0x72, 0xc6, 0xd0, 0x9b, 0xe4, 0x94, 0xfc, 0xef, 0x71, 0x3f, 0xf1, 0x01, 0x89, 0xb6, 0xe6 }, - { 0x98, 0x02, 0xbb, 0x87, 0xde, 0xf4, 0xcc, 0x10, 0xc4, 0xa5, 0xfd, 0x49, 0xaa, 0x58, 0xdf, 0xe2, 0xf3, 0xfd, 0xdb, 0x46, 0xb4, 0x70, 0x88, 0x14, 0xea, 0xd8, 0x1d, 0x23, 0xba, 0x95, 0x13, 0x9b }, - { 0x4f, 0x8c, 0xe1, 0xe5, 0x1d, 0x2f, 0xe7, 0xf2, 0x40, 0x43, 0xa9, 0x04, 0xd8, 0x98, 0xeb, 0xfc, 0x91, 0x97, 0x54, 0x18, 0x75, 0x34, 0x13, 0xaa, 0x09, 0x9b, 0x79, 0x5e, 0xcb, 0x35, 0xce, 0xdb }, - { 0xbd, 0xdc, 0x65, 0x14, 0xd7, 0xee, 0x6a, 0xce, 0x0a, 0x4a, 0xc1, 0xd0, 0xe0, 0x68, 0x11, 0x22, 0x88, 0xcb, 0xcf, 0x56, 0x04, 0x54, 0x64, 0x27, 0x05, 0x63, 0x01, 0x77, 0xcb, 0xa6, 0x08, 0xbd }, - { 0xd6, 0x35, 0x99, 0x4f, 0x62, 0x91, 0x51, 0x7b, 0x02, 0x81, 0xff, 0xdd, 0x49, 0x6a, 0xfa, 0x86, 0x27, 0x12, 0xe5, 0xb3, 0xc4, 0xe5, 0x2e, 0x4c, 0xd5, 0xfd, 0xae, 0x8c, 0x0e, 0x72, 0xfb, 0x08 }, - { 0x87, 0x8d, 0x9c, 0xa6, 0x00, 0xcf, 0x87, 0xe7, 0x69, 0xcc, 0x30, 0x5c, 0x1b, 0x35, 0x25, 0x51, 0x86, 0x61, 0x5a, 0x73, 0xa0, 0xda, 0x61, 0x3b, 0x5f, 0x1c, 0x98, 0xdb, 0xf8, 0x12, 0x83, 0xea }, - { 0xa6, 0x4e, 0xbe, 0x5d, 0xc1, 0x85, 0xde, 0x9f, 0xdd, 0xe7, 0x60, 0x7b, 0x69, 0x98, 0x70, 0x2e, 0xb2, 0x34, 0x56, 0x18, 0x49, 0x57, 0x30, 0x7d, 0x2f, 0xa7, 0x2e, 0x87, 0xa4, 0x77, 0x02, 0xd6 }, - { 0xce, 0x50, 0xea, 0xb7, 0xb5, 0xeb, 0x52, 0xbd, 0xc9, 0xad, 0x8e, 0x5a, 0x48, 0x0a, 0xb7, 0x80, 0xca, 0x93, 0x20, 0xe4, 0x43, 0x60, 0xb1, 0xfe, 0x37, 0xe0, 0x3f, 0x2f, 0x7a, 0xd7, 0xde, 0x01 }, - { 0xee, 0xdd, 0xb7, 0xc0, 0xdb, 0x6e, 0x30, 0xab, 0xe6, 0x6d, 0x79, 0xe3, 0x27, 0x51, 0x1e, 0x61, 0xfc, 0xeb, 0xbc, 0x29, 0xf1, 0x59, 0xb4, 0x0a, 0x86, 0xb0, 0x46, 0xec, 0xf0, 0x51, 0x38, 0x23 }, - { 0x78, 0x7f, 0xc9, 0x34, 0x40, 0xc1, 0xec, 0x96, 0xb5, 0xad, 0x01, 0xc1, 0x6c, 0xf7, 0x79, 0x16, 0xa1, 0x40, 0x5f, 0x94, 0x26, 0x35, 0x6e, 0xc9, 0x21, 0xd8, 0xdf, 0xf3, 0xea, 0x63, 0xb7, 0xe0 }, - { 0x7f, 0x0d, 0x5e, 0xab, 0x47, 0xee, 0xfd, 0xa6, 0x96, 0xc0, 0xbf, 0x0f, 0xbf, 0x86, 0xab, 0x21, 0x6f, 0xce, 0x46, 0x1e, 0x93, 0x03, 0xab, 0xa6, 0xac, 0x37, 0x41, 0x20, 0xe8, 0x90, 0xe8, 0xdf }, - { 0xb6, 0x80, 0x04, 0xb4, 0x2f, 0x14, 0xad, 0x02, 0x9f, 0x4c, 0x2e, 0x03, 0xb1, 0xd5, 0xeb, 0x76, 0xd5, 0x71, 0x60, 0xe2, 0x64, 0x76, 0xd2, 0x11, 0x31, 0xbe, 0xf2, 0x0a, 0xda, 0x7d, 0x27, 0xf4 }, - { 0xb0, 0xc4, 0xeb, 0x18, 0xae, 0x25, 0x0b, 0x51, 0xa4, 0x13, 0x82, 0xea, 0xd9, 0x2d, 0x0d, 0xc7, 0x45, 0x5f, 0x93, 0x79, 0xfc, 0x98, 0x84, 0x42, 0x8e, 0x47, 0x70, 0x60, 0x8d, 0xb0, 0xfa, 0xec }, - { 0xf9, 0x2b, 0x7a, 0x87, 0x0c, 0x05, 0x9f, 0x4d, 0x46, 0x46, 0x4c, 0x82, 0x4e, 0xc9, 0x63, 0x55, 0x14, 0x0b, 0xdc, 0xe6, 0x81, 0x32, 0x2c, 0xc3, 0xa9, 0x92, 0xff, 0x10, 0x3e, 0x3f, 0xea, 0x52 }, - { 0x53, 0x64, 0x31, 0x26, 0x14, 0x81, 0x33, 0x98, 0xcc, 0x52, 0x5d, 0x4c, 0x4e, 0x14, 0x6e, 0xde, 0xb3, 0x71, 0x26, 0x5f, 0xba, 0x19, 0x13, 0x3a, 0x2c, 0x3d, 0x21, 0x59, 0x29, 0x8a, 0x17, 0x42 }, - { 0xf6, 0x62, 0x0e, 0x68, 0xd3, 0x7f, 0xb2, 0xaf, 0x50, 0x00, 0xfc, 0x28, 0xe2, 0x3b, 0x83, 0x22, 0x97, 0xec, 0xd8, 0xbc, 0xe9, 0x9e, 0x8b, 0xe4, 0xd0, 0x4e, 0x85, 0x30, 0x9e, 0x3d, 0x33, 0x74 }, - { 0x53, 0x16, 0xa2, 0x79, 0x69, 0xd7, 0xfe, 0x04, 0xff, 0x27, 0xb2, 0x83, 0x96, 0x1b, 0xff, 0xc3, 0xbf, 0x5d, 0xfb, 0x32, 0xfb, 0x6a, 0x89, 0xd1, 0x01, 0xc6, 0xc3, 0xb1, 0x93, 0x7c, 0x28, 0x71 }, - { 0x81, 0xd1, 0x66, 0x4f, 0xdf, 0x3c, 0xb3, 0x3c, 0x24, 0xee, 0xba, 0xc0, 0xbd, 0x64, 0x24, 0x4b, 0x77, 0xc4, 0xab, 0xea, 0x90, 0xbb, 0xe8, 0xb5, 0xee, 0x0b, 0x2a, 0xaf, 0xcf, 0x2d, 0x6a, 0x53 }, - { 0x34, 0x57, 0x82, 0xf2, 0x95, 0xb0, 0x88, 0x03, 0x52, 0xe9, 0x24, 0xa0, 0x46, 0x7b, 0x5f, 0xbc, 0x3e, 0x8f, 0x3b, 0xfb, 0xc3, 0xc7, 0xe4, 0x8b, 0x67, 0x09, 0x1f, 0xb5, 0xe8, 0x0a, 0x94, 0x42 }, - { 0x79, 0x41, 0x11, 0xea, 0x6c, 0xd6, 0x5e, 0x31, 0x1f, 0x74, 0xee, 0x41, 0xd4, 0x76, 0xcb, 0x63, 0x2c, 0xe1, 0xe4, 0xb0, 0x51, 0xdc, 0x1d, 0x9e, 0x9d, 0x06, 0x1a, 0x19, 0xe1, 0xd0, 0xbb, 0x49 }, - { 0x2a, 0x85, 0xda, 0xf6, 0x13, 0x88, 0x16, 0xb9, 0x9b, 0xf8, 0xd0, 0x8b, 0xa2, 0x11, 0x4b, 0x7a, 0xb0, 0x79, 0x75, 0xa7, 0x84, 0x20, 0xc1, 0xa3, 0xb0, 0x6a, 0x77, 0x7c, 0x22, 0xdd, 0x8b, 0xcb }, - { 0x89, 0xb0, 0xd5, 0xf2, 0x89, 0xec, 0x16, 0x40, 0x1a, 0x06, 0x9a, 0x96, 0x0d, 0x0b, 0x09, 0x3e, 0x62, 0x5d, 0xa3, 0xcf, 0x41, 0xee, 0x29, 0xb5, 0x9b, 0x93, 0x0c, 0x58, 0x20, 0x14, 0x54, 0x55 }, - { 0xd0, 0xfd, 0xcb, 0x54, 0x39, 0x43, 0xfc, 0x27, 0xd2, 0x08, 0x64, 0xf5, 0x21, 0x81, 0x47, 0x1b, 0x94, 0x2c, 0xc7, 0x7c, 0xa6, 0x75, 0xbc, 0xb3, 0x0d, 0xf3, 0x1d, 0x35, 0x8e, 0xf7, 0xb1, 0xeb }, - { 0xb1, 0x7e, 0xa8, 0xd7, 0x70, 0x63, 0xc7, 0x09, 0xd4, 0xdc, 0x6b, 0x87, 0x94, 0x13, 0xc3, 0x43, 0xe3, 0x79, 0x0e, 0x9e, 0x62, 0xca, 0x85, 0xb7, 0x90, 0x0b, 0x08, 0x6f, 0x6b, 0x75, 0xc6, 0x72 }, - { 0xe7, 0x1a, 0x3e, 0x2c, 0x27, 0x4d, 0xb8, 0x42, 0xd9, 0x21, 0x14, 0xf2, 0x17, 0xe2, 0xc0, 0xea, 0xc8, 0xb4, 0x50, 0x93, 0xfd, 0xfd, 0x9d, 0xf4, 0xca, 0x71, 0x62, 0x39, 0x48, 0x62, 0xd5, 0x01 }, - { 0xc0, 0x47, 0x67, 0x59, 0xab, 0x7a, 0xa3, 0x33, 0x23, 0x4f, 0x6b, 0x44, 0xf5, 0xfd, 0x85, 0x83, 0x90, 0xec, 0x23, 0x69, 0x4c, 0x62, 0x2c, 0xb9, 0x86, 0xe7, 0x69, 0xc7, 0x8e, 0xdd, 0x73, 0x3e }, - { 0x9a, 0xb8, 0xea, 0xbb, 0x14, 0x16, 0x43, 0x4d, 0x85, 0x39, 0x13, 0x41, 0xd5, 0x69, 0x93, 0xc5, 0x54, 0x58, 0x16, 0x7d, 0x44, 0x18, 0xb1, 0x9a, 0x0f, 0x2a, 0xd8, 0xb7, 0x9a, 0x83, 0xa7, 0x5b }, - { 0x79, 0x92, 0xd0, 0xbb, 0xb1, 0x5e, 0x23, 0x82, 0x6f, 0x44, 0x3e, 0x00, 0x50, 0x5d, 0x68, 0xd3, 0xed, 0x73, 0x72, 0x99, 0x5a, 0x5c, 0x3e, 0x49, 0x86, 0x54, 0x10, 0x2f, 0xbc, 0xd0, 0x96, 0x4e }, - { 0xc0, 0x21, 0xb3, 0x00, 0x85, 0x15, 0x14, 0x35, 0xdf, 0x33, 0xb0, 0x07, 0xcc, 0xec, 0xc6, 0x9d, 0xf1, 0x26, 0x9f, 0x39, 0xba, 0x25, 0x09, 0x2b, 0xed, 0x59, 0xd9, 0x32, 0xac, 0x0f, 0xdc, 0x28 }, - { 0x91, 0xa2, 0x5e, 0xc0, 0xec, 0x0d, 0x9a, 0x56, 0x7f, 0x89, 0xc4, 0xbf, 0xe1, 0xa6, 0x5a, 0x0e, 0x43, 0x2d, 0x07, 0x06, 0x4b, 0x41, 0x90, 0xe2, 0x7d, 0xfb, 0x81, 0x90, 0x1f, 0xd3, 0x13, 0x9b }, - { 0x59, 0x50, 0xd3, 0x9a, 0x23, 0xe1, 0x54, 0x5f, 0x30, 0x12, 0x70, 0xaa, 0x1a, 0x12, 0xf2, 0xe6, 0xc4, 0x53, 0x77, 0x6e, 0x4d, 0x63, 0x55, 0xde, 0x42, 0x5c, 0xc1, 0x53, 0xf9, 0x81, 0x88, 0x67 }, - { 0xd7, 0x9f, 0x14, 0x72, 0x0c, 0x61, 0x0a, 0xf1, 0x79, 0xa3, 0x76, 0x5d, 0x4b, 0x7c, 0x09, 0x68, 0xf9, 0x77, 0x96, 0x2d, 0xbf, 0x65, 0x5b, 0x52, 0x12, 0x72, 0xb6, 0xf1, 0xe1, 0x94, 0x48, 0x8e }, - { 0xe9, 0x53, 0x1b, 0xfc, 0x8b, 0x02, 0x99, 0x5a, 0xea, 0xa7, 0x5b, 0xa2, 0x70, 0x31, 0xfa, 0xdb, 0xcb, 0xf4, 0xa0, 0xda, 0xb8, 0x96, 0x1d, 0x92, 0x96, 0xcd, 0x7e, 0x84, 0xd2, 0x5d, 0x60, 0x06 }, - { 0x34, 0xe9, 0xc2, 0x6a, 0x01, 0xd7, 0xf1, 0x61, 0x81, 0xb4, 0x54, 0xa9, 0xd1, 0x62, 0x3c, 0x23, 0x3c, 0xb9, 0x9d, 0x31, 0xc6, 0x94, 0x65, 0x6e, 0x94, 0x13, 0xac, 0xa3, 0xe9, 0x18, 0x69, 0x2f }, - { 0xd9, 0xd7, 0x42, 0x2f, 0x43, 0x7b, 0xd4, 0x39, 0xdd, 0xd4, 0xd8, 0x83, 0xda, 0xe2, 0xa0, 0x83, 0x50, 0x17, 0x34, 0x14, 0xbe, 0x78, 0x15, 0x51, 0x33, 0xff, 0xf1, 0x96, 0x4c, 0x3d, 0x79, 0x72 }, - { 0x4a, 0xee, 0x0c, 0x7a, 0xaf, 0x07, 0x54, 0x14, 0xff, 0x17, 0x93, 0xea, 0xd7, 0xea, 0xca, 0x60, 0x17, 0x75, 0xc6, 0x15, 0xdb, 0xd6, 0x0b, 0x64, 0x0b, 0x0a, 0x9f, 0x0c, 0xe5, 0x05, 0xd4, 0x35 }, - { 0x6b, 0xfd, 0xd1, 0x54, 0x59, 0xc8, 0x3b, 0x99, 0xf0, 0x96, 0xbf, 0xb4, 0x9e, 0xe8, 0x7b, 0x06, 0x3d, 0x69, 0xc1, 0x97, 0x4c, 0x69, 0x28, 0xac, 0xfc, 0xfb, 0x40, 0x99, 0xf8, 0xc4, 0xef, 0x67 }, - { 0x9f, 0xd1, 0xc4, 0x08, 0xfd, 0x75, 0xc3, 0x36, 0x19, 0x3a, 0x2a, 0x14, 0xd9, 0x4f, 0x6a, 0xf5, 0xad, 0xf0, 0x50, 0xb8, 0x03, 0x87, 0xb4, 0xb0, 0x10, 0xfb, 0x29, 0xf4, 0xcc, 0x72, 0x70, 0x7c }, - { 0x13, 0xc8, 0x84, 0x80, 0xa5, 0xd0, 0x0d, 0x6c, 0x8c, 0x7a, 0xd2, 0x11, 0x0d, 0x76, 0xa8, 0x2d, 0x9b, 0x70, 0xf4, 0xfa, 0x66, 0x96, 0xd4, 0xe5, 0xdd, 0x42, 0xa0, 0x66, 0xdc, 0xaf, 0x99, 0x20 }, - { 0x82, 0x0e, 0x72, 0x5e, 0xe2, 0x5f, 0xe8, 0xfd, 0x3a, 0x8d, 0x5a, 0xbe, 0x4c, 0x46, 0xc3, 0xba, 0x88, 0x9d, 0xe6, 0xfa, 0x91, 0x91, 0xaa, 0x22, 0xba, 0x67, 0xd5, 0x70, 0x54, 0x21, 0x54, 0x2b }, - { 0x32, 0xd9, 0x3a, 0x0e, 0xb0, 0x2f, 0x42, 0xfb, 0xbc, 0xaf, 0x2b, 0xad, 0x00, 0x85, 0xb2, 0x82, 0xe4, 0x60, 0x46, 0xa4, 0xdf, 0x7a, 0xd1, 0x06, 0x57, 0xc9, 0xd6, 0x47, 0x63, 0x75, 0xb9, 0x3e }, - { 0xad, 0xc5, 0x18, 0x79, 0x05, 0xb1, 0x66, 0x9c, 0xd8, 0xec, 0x9c, 0x72, 0x1e, 0x19, 0x53, 0x78, 0x6b, 0x9d, 0x89, 0xa9, 0xba, 0xe3, 0x07, 0x80, 0xf1, 0xe1, 0xea, 0xb2, 0x4a, 0x00, 0x52, 0x3c }, - { 0xe9, 0x07, 0x56, 0xff, 0x7f, 0x9a, 0xd8, 0x10, 0xb2, 0x39, 0xa1, 0x0c, 0xed, 0x2c, 0xf9, 0xb2, 0x28, 0x43, 0x54, 0xc1, 0xf8, 0xc7, 0xe0, 0xac, 0xcc, 0x24, 0x61, 0xdc, 0x79, 0x6d, 0x6e, 0x89 }, - { 0x12, 0x51, 0xf7, 0x6e, 0x56, 0x97, 0x84, 0x81, 0x87, 0x53, 0x59, 0x80, 0x1d, 0xb5, 0x89, 0xa0, 0xb2, 0x2f, 0x86, 0xd8, 0xd6, 0x34, 0xdc, 0x04, 0x50, 0x6f, 0x32, 0x2e, 0xd7, 0x8f, 0x17, 0xe8 }, - { 0x3a, 0xfa, 0x89, 0x9f, 0xd9, 0x80, 0xe7, 0x3e, 0xcb, 0x7f, 0x4d, 0x8b, 0x8f, 0x29, 0x1d, 0xc9, 0xaf, 0x79, 0x6b, 0xc6, 0x5d, 0x27, 0xf9, 0x74, 0xc6, 0xf1, 0x93, 0xc9, 0x19, 0x1a, 0x09, 0xfd }, - { 0xaa, 0x30, 0x5b, 0xe2, 0x6e, 0x5d, 0xed, 0xdc, 0x3c, 0x10, 0x10, 0xcb, 0xc2, 0x13, 0xf9, 0x5f, 0x05, 0x1c, 0x78, 0x5c, 0x5b, 0x43, 0x1e, 0x6a, 0x7c, 0xd0, 0x48, 0xf1, 0x61, 0x78, 0x75, 0x28 }, - { 0x8e, 0xa1, 0x88, 0x4f, 0xf3, 0x2e, 0x9d, 0x10, 0xf0, 0x39, 0xb4, 0x07, 0xd0, 0xd4, 0x4e, 0x7e, 0x67, 0x0a, 0xbd, 0x88, 0x4a, 0xee, 0xe0, 0xfb, 0x75, 0x7a, 0xe9, 0x4e, 0xaa, 0x97, 0x37, 0x3d }, - { 0xd4, 0x82, 0xb2, 0x15, 0x5d, 0x4d, 0xec, 0x6b, 0x47, 0x36, 0xa1, 0xf1, 0x61, 0x7b, 0x53, 0xaa, 0xa3, 0x73, 0x10, 0x27, 0x7d, 0x3f, 0xef, 0x0c, 0x37, 0xad, 0x41, 0x76, 0x8f, 0xc2, 0x35, 0xb4 }, - { 0x4d, 0x41, 0x39, 0x71, 0x38, 0x7e, 0x7a, 0x88, 0x98, 0xa8, 0xdc, 0x2a, 0x27, 0x50, 0x07, 0x78, 0x53, 0x9e, 0xa2, 0x14, 0xa2, 0xdf, 0xe9, 0xb3, 0xd7, 0xe8, 0xeb, 0xdc, 0xe5, 0xcf, 0x3d, 0xb3 }, - { 0x69, 0x6e, 0x5d, 0x46, 0xe6, 0xc5, 0x7e, 0x87, 0x96, 0xe4, 0x73, 0x5d, 0x08, 0x91, 0x6e, 0x0b, 0x79, 0x29, 0xb3, 0xcf, 0x29, 0x8c, 0x29, 0x6d, 0x22, 0xe9, 0xd3, 0x01, 0x96, 0x53, 0x37, 0x1c }, - { 0x1f, 0x56, 0x47, 0xc1, 0xd3, 0xb0, 0x88, 0x22, 0x88, 0x85, 0x86, 0x5c, 0x89, 0x40, 0x90, 0x8b, 0xf4, 0x0d, 0x1a, 0x82, 0x72, 0x82, 0x19, 0x73, 0xb1, 0x60, 0x00, 0x8e, 0x7a, 0x3c, 0xe2, 0xeb }, - { 0xb6, 0xe7, 0x6c, 0x33, 0x0f, 0x02, 0x1a, 0x5b, 0xda, 0x65, 0x87, 0x50, 0x10, 0xb0, 0xed, 0xf0, 0x91, 0x26, 0xc0, 0xf5, 0x10, 0xea, 0x84, 0x90, 0x48, 0x19, 0x20, 0x03, 0xae, 0xf4, 0xc6, 0x1c }, - { 0x3c, 0xd9, 0x52, 0xa0, 0xbe, 0xad, 0xa4, 0x1a, 0xbb, 0x42, 0x4c, 0xe4, 0x7f, 0x94, 0xb4, 0x2b, 0xe6, 0x4e, 0x1f, 0xfb, 0x0f, 0xd0, 0x78, 0x22, 0x76, 0x80, 0x79, 0x46, 0xd0, 0xd0, 0xbc, 0x55 }, - { 0x98, 0xd9, 0x26, 0x77, 0x43, 0x9b, 0x41, 0xb7, 0xbb, 0x51, 0x33, 0x12, 0xaf, 0xb9, 0x2b, 0xcc, 0x8e, 0xe9, 0x68, 0xb2, 0xe3, 0xb2, 0x38, 0xce, 0xcb, 0x9b, 0x0f, 0x34, 0xc9, 0xbb, 0x63, 0xd0 }, - { 0xec, 0xbc, 0xa2, 0xcf, 0x08, 0xae, 0x57, 0xd5, 0x17, 0xad, 0x16, 0x15, 0x8a, 0x32, 0xbf, 0xa7, 0xdc, 0x03, 0x82, 0xea, 0xed, 0xa1, 0x28, 0xe9, 0x18, 0x86, 0x73, 0x4c, 0x24, 0xa0, 0xb2, 0x9d }, - { 0x94, 0x2c, 0xc7, 0xc0, 0xb5, 0x2e, 0x2b, 0x16, 0xa4, 0xb8, 0x9f, 0xa4, 0xfc, 0x7e, 0x0b, 0xf6, 0x09, 0xe2, 0x9a, 0x08, 0xc1, 0xa8, 0x54, 0x34, 0x52, 0xb7, 0x7c, 0x7b, 0xfd, 0x11, 0xbb, 0x28 }, - { 0x8a, 0x06, 0x5d, 0x8b, 0x61, 0xa0, 0xdf, 0xfb, 0x17, 0x0d, 0x56, 0x27, 0x73, 0x5a, 0x76, 0xb0, 0xe9, 0x50, 0x60, 0x37, 0x80, 0x8c, 0xba, 0x16, 0xc3, 0x45, 0x00, 0x7c, 0x9f, 0x79, 0xcf, 0x8f }, - { 0x1b, 0x9f, 0xa1, 0x97, 0x14, 0x65, 0x9c, 0x78, 0xff, 0x41, 0x38, 0x71, 0x84, 0x92, 0x15, 0x36, 0x10, 0x29, 0xac, 0x80, 0x2b, 0x1c, 0xbc, 0xd5, 0x4e, 0x40, 0x8b, 0xd8, 0x72, 0x87, 0xf8, 0x1f }, - { 0x8d, 0xab, 0x07, 0x1b, 0xcd, 0x6c, 0x72, 0x92, 0xa9, 0xef, 0x72, 0x7b, 0x4a, 0xe0, 0xd8, 0x67, 0x13, 0x30, 0x1d, 0xa8, 0x61, 0x8d, 0x9a, 0x48, 0xad, 0xce, 0x55, 0xf3, 0x03, 0xa8, 0x69, 0xa1 }, - { 0x82, 0x53, 0xe3, 0xe7, 0xc7, 0xb6, 0x84, 0xb9, 0xcb, 0x2b, 0xeb, 0x01, 0x4c, 0xe3, 0x30, 0xff, 0x3d, 0x99, 0xd1, 0x7a, 0xbb, 0xdb, 0xab, 0xe4, 0xf4, 0xd6, 0x74, 0xde, 0xd5, 0x3f, 0xfc, 0x6b }, - { 0xf1, 0x95, 0xf3, 0x21, 0xe9, 0xe3, 0xd6, 0xbd, 0x7d, 0x07, 0x45, 0x04, 0xdd, 0x2a, 0xb0, 0xe6, 0x24, 0x1f, 0x92, 0xe7, 0x84, 0xb1, 0xaa, 0x27, 0x1f, 0xf6, 0x48, 0xb1, 0xca, 0xb6, 0xd7, 0xf6 }, - { 0x27, 0xe4, 0xcc, 0x72, 0x09, 0x0f, 0x24, 0x12, 0x66, 0x47, 0x6a, 0x7c, 0x09, 0x49, 0x5f, 0x2d, 0xb1, 0x53, 0xd5, 0xbc, 0xbd, 0x76, 0x19, 0x03, 0xef, 0x79, 0x27, 0x5e, 0xc5, 0x6b, 0x2e, 0xd8 }, - { 0x89, 0x9c, 0x24, 0x05, 0x78, 0x8e, 0x25, 0xb9, 0x9a, 0x18, 0x46, 0x35, 0x5e, 0x64, 0x6d, 0x77, 0xcf, 0x40, 0x00, 0x83, 0x41, 0x5f, 0x7d, 0xc5, 0xaf, 0xe6, 0x9d, 0x6e, 0x17, 0xc0, 0x00, 0x23 }, - { 0xa5, 0x9b, 0x78, 0xc4, 0x90, 0x57, 0x44, 0x07, 0x6b, 0xfe, 0xe8, 0x94, 0xde, 0x70, 0x7d, 0x4f, 0x12, 0x0b, 0x5c, 0x68, 0x93, 0xea, 0x04, 0x00, 0x29, 0x7d, 0x0b, 0xb8, 0x34, 0x72, 0x76, 0x32 }, - { 0x59, 0xdc, 0x78, 0xb1, 0x05, 0x64, 0x97, 0x07, 0xa2, 0xbb, 0x44, 0x19, 0xc4, 0x8f, 0x00, 0x54, 0x00, 0xd3, 0x97, 0x3d, 0xe3, 0x73, 0x66, 0x10, 0x23, 0x04, 0x35, 0xb1, 0x04, 0x24, 0xb2, 0x4f }, - { 0xc0, 0x14, 0x9d, 0x1d, 0x7e, 0x7a, 0x63, 0x53, 0xa6, 0xd9, 0x06, 0xef, 0xe7, 0x28, 0xf2, 0xf3, 0x29, 0xfe, 0x14, 0xa4, 0x14, 0x9a, 0x3e, 0xa7, 0x76, 0x09, 0xbc, 0x42, 0xb9, 0x75, 0xdd, 0xfa }, - { 0xa3, 0x2f, 0x24, 0x14, 0x74, 0xa6, 0xc1, 0x69, 0x32, 0xe9, 0x24, 0x3b, 0xe0, 0xcf, 0x09, 0xbc, 0xdc, 0x7e, 0x0c, 0xa0, 0xe7, 0xa6, 0xa1, 0xb9, 0xb1, 0xa0, 0xf0, 0x1e, 0x41, 0x50, 0x23, 0x77 }, - { 0xb2, 0x39, 0xb2, 0xe4, 0xf8, 0x18, 0x41, 0x36, 0x1c, 0x13, 0x39, 0xf6, 0x8e, 0x2c, 0x35, 0x9f, 0x92, 0x9a, 0xf9, 0xad, 0x9f, 0x34, 0xe0, 0x1a, 0xab, 0x46, 0x31, 0xad, 0x6d, 0x55, 0x00, 0xb0 }, - { 0x85, 0xfb, 0x41, 0x9c, 0x70, 0x02, 0xa3, 0xe0, 0xb4, 0xb6, 0xea, 0x09, 0x3b, 0x4c, 0x1a, 0xc6, 0x93, 0x66, 0x45, 0xb6, 0x5d, 0xac, 0x5a, 0xc1, 0x5a, 0x85, 0x28, 0xb7, 0xb9, 0x4c, 0x17, 0x54 }, - { 0x96, 0x19, 0x72, 0x06, 0x25, 0xf1, 0x90, 0xb9, 0x3a, 0x3f, 0xad, 0x18, 0x6a, 0xb3, 0x14, 0x18, 0x96, 0x33, 0xc0, 0xd3, 0xa0, 0x1e, 0x6f, 0x9b, 0xc8, 0xc4, 0xa8, 0xf8, 0x2f, 0x38, 0x3d, 0xbf }, - { 0x7d, 0x62, 0x0d, 0x90, 0xfe, 0x69, 0xfa, 0x46, 0x9a, 0x65, 0x38, 0x38, 0x89, 0x70, 0xa1, 0xaa, 0x09, 0xbb, 0x48, 0xa2, 0xd5, 0x9b, 0x34, 0x7b, 0x97, 0xe8, 0xce, 0x71, 0xf4, 0x8c, 0x7f, 0x46 }, - { 0x29, 0x43, 0x83, 0x56, 0x85, 0x96, 0xfb, 0x37, 0xc7, 0x5b, 0xba, 0xcd, 0x97, 0x9c, 0x5f, 0xf6, 0xf2, 0x0a, 0x55, 0x6b, 0xf8, 0x87, 0x9c, 0xc7, 0x29, 0x24, 0x85, 0x5d, 0xf9, 0xb8, 0x24, 0x0e }, - { 0x16, 0xb1, 0x8a, 0xb3, 0x14, 0x35, 0x9c, 0x2b, 0x83, 0x3c, 0x1c, 0x69, 0x86, 0xd4, 0x8c, 0x55, 0xa9, 0xfc, 0x97, 0xcd, 0xe9, 0xa3, 0xc1, 0xf1, 0x0a, 0x31, 0x77, 0x14, 0x0f, 0x73, 0xf7, 0x38 }, - { 0x8c, 0xbb, 0xdd, 0x14, 0xbc, 0x33, 0xf0, 0x4c, 0xf4, 0x58, 0x13, 0xe4, 0xa1, 0x53, 0xa2, 0x73, 0xd3, 0x6a, 0xda, 0xd5, 0xce, 0x71, 0xf4, 0x99, 0xee, 0xb8, 0x7f, 0xb8, 0xac, 0x63, 0xb7, 0x29 }, - { 0x69, 0xc9, 0xa4, 0x98, 0xdb, 0x17, 0x4e, 0xca, 0xef, 0xcc, 0x5a, 0x3a, 0xc9, 0xfd, 0xed, 0xf0, 0xf8, 0x13, 0xa5, 0xbe, 0xc7, 0x27, 0xf1, 0xe7, 0x75, 0xba, 0xbd, 0xec, 0x77, 0x18, 0x81, 0x6e }, - { 0xb4, 0x62, 0xc3, 0xbe, 0x40, 0x44, 0x8f, 0x1d, 0x4f, 0x80, 0x62, 0x62, 0x54, 0xe5, 0x35, 0xb0, 0x8b, 0xc9, 0xcd, 0xcf, 0xf5, 0x99, 0xa7, 0x68, 0x57, 0x8d, 0x4b, 0x28, 0x81, 0xa8, 0xe3, 0xf0 }, - { 0x55, 0x3e, 0x9d, 0x9c, 0x5f, 0x36, 0x0a, 0xc0, 0xb7, 0x4a, 0x7d, 0x44, 0xe5, 0xa3, 0x91, 0xda, 0xd4, 0xce, 0xd0, 0x3e, 0x0c, 0x24, 0x18, 0x3b, 0x7e, 0x8e, 0xca, 0xbd, 0xf1, 0x71, 0x5a, 0x64 }, - { 0x7a, 0x7c, 0x55, 0xa5, 0x6f, 0xa9, 0xae, 0x51, 0xe6, 0x55, 0xe0, 0x19, 0x75, 0xd8, 0xa6, 0xff, 0x4a, 0xe9, 0xe4, 0xb4, 0x86, 0xfc, 0xbe, 0x4e, 0xac, 0x04, 0x45, 0x88, 0xf2, 0x45, 0xeb, 0xea }, - { 0x2a, 0xfd, 0xf3, 0xc8, 0x2a, 0xbc, 0x48, 0x67, 0xf5, 0xde, 0x11, 0x12, 0x86, 0xc2, 0xb3, 0xbe, 0x7d, 0x6e, 0x48, 0x65, 0x7b, 0xa9, 0x23, 0xcf, 0xbf, 0x10, 0x1a, 0x6d, 0xfc, 0xf9, 0xdb, 0x9a }, - { 0x41, 0x03, 0x7d, 0x2e, 0xdc, 0xdc, 0xe0, 0xc4, 0x9b, 0x7f, 0xb4, 0xa6, 0xaa, 0x09, 0x99, 0xca, 0x66, 0x97, 0x6c, 0x74, 0x83, 0xaf, 0xe6, 0x31, 0xd4, 0xed, 0xa2, 0x83, 0x14, 0x4f, 0x6d, 0xfc }, - { 0xc4, 0x46, 0x6f, 0x84, 0x97, 0xca, 0x2e, 0xeb, 0x45, 0x83, 0xa0, 0xb0, 0x8e, 0x9d, 0x9a, 0xc7, 0x43, 0x95, 0x70, 0x9f, 0xda, 0x10, 0x9d, 0x24, 0xf2, 0xe4, 0x46, 0x21, 0x96, 0x77, 0x9c, 0x5d }, - { 0x75, 0xf6, 0x09, 0x33, 0x8a, 0xa6, 0x7d, 0x96, 0x9a, 0x2a, 0xe2, 0xa2, 0x36, 0x2b, 0x2d, 0xa9, 0xd7, 0x7c, 0x69, 0x5d, 0xfd, 0x1d, 0xf7, 0x22, 0x4a, 0x69, 0x01, 0xdb, 0x93, 0x2c, 0x33, 0x64 }, - { 0x68, 0x60, 0x6c, 0xeb, 0x98, 0x9d, 0x54, 0x88, 0xfc, 0x7c, 0xf6, 0x49, 0xf3, 0xd7, 0xc2, 0x72, 0xef, 0x05, 0x5d, 0xa1, 0xa9, 0x3f, 0xae, 0xcd, 0x55, 0xfe, 0x06, 0xf6, 0x96, 0x70, 0x98, 0xca }, - { 0x44, 0x34, 0x6b, 0xde, 0xb7, 0xe0, 0x52, 0xf6, 0x25, 0x50, 0x48, 0xf0, 0xd9, 0xb4, 0x2c, 0x42, 0x5b, 0xab, 0x9c, 0x3d, 0xd2, 0x41, 0x68, 0x21, 0x2c, 0x3e, 0xcf, 0x1e, 0xbf, 0x34, 0xe6, 0xae }, - { 0x8e, 0x9c, 0xf6, 0xe1, 0xf3, 0x66, 0x47, 0x1f, 0x2a, 0xc7, 0xd2, 0xee, 0x9b, 0x5e, 0x62, 0x66, 0xfd, 0xa7, 0x1f, 0x8f, 0x2e, 0x41, 0x09, 0xf2, 0x23, 0x7e, 0xd5, 0xf8, 0x81, 0x3f, 0xc7, 0x18 }, - { 0x84, 0xbb, 0xeb, 0x84, 0x06, 0xd2, 0x50, 0x95, 0x1f, 0x8c, 0x1b, 0x3e, 0x86, 0xa7, 0xc0, 0x10, 0x08, 0x29, 0x21, 0x83, 0x3d, 0xfd, 0x95, 0x55, 0xa2, 0xf9, 0x09, 0xb1, 0x08, 0x6e, 0xb4, 0xb8 }, - { 0xee, 0x66, 0x6f, 0x3e, 0xef, 0x0f, 0x7e, 0x2a, 0x9c, 0x22, 0x29, 0x58, 0xc9, 0x7e, 0xaf, 0x35, 0xf5, 0x1c, 0xed, 0x39, 0x3d, 0x71, 0x44, 0x85, 0xab, 0x09, 0xa0, 0x69, 0x34, 0x0f, 0xdf, 0x88 }, - { 0xc1, 0x53, 0xd3, 0x4a, 0x65, 0xc4, 0x7b, 0x4a, 0x62, 0xc5, 0xca, 0xcf, 0x24, 0x01, 0x09, 0x75, 0xd0, 0x35, 0x6b, 0x2f, 0x32, 0xc8, 0xf5, 0xda, 0x53, 0x0d, 0x33, 0x88, 0x16, 0xad, 0x5d, 0xe6 }, - { 0x9f, 0xc5, 0x45, 0x01, 0x09, 0xe1, 0xb7, 0x79, 0xf6, 0xc7, 0xae, 0x79, 0xd5, 0x6c, 0x27, 0x63, 0x5c, 0x8d, 0xd4, 0x26, 0xc5, 0xa9, 0xd5, 0x4e, 0x25, 0x78, 0xdb, 0x98, 0x9b, 0x8c, 0x3b, 0x4e }, - { 0xd1, 0x2b, 0xf3, 0x73, 0x2e, 0xf4, 0xaf, 0x5c, 0x22, 0xfa, 0x90, 0x35, 0x6a, 0xf8, 0xfc, 0x50, 0xfc, 0xb4, 0x0f, 0x8f, 0x2e, 0xa5, 0xc8, 0x59, 0x47, 0x37, 0xa3, 0xb3, 0xd5, 0xab, 0xdb, 0xd7 }, - { 0x11, 0x03, 0x0b, 0x92, 0x89, 0xbb, 0xa5, 0xaf, 0x65, 0x26, 0x06, 0x72, 0xab, 0x6f, 0xee, 0x88, 0xb8, 0x74, 0x20, 0xac, 0xef, 0x4a, 0x17, 0x89, 0xa2, 0x07, 0x3b, 0x7e, 0xc2, 0xf2, 0xa0, 0x9e }, - { 0x69, 0xcb, 0x19, 0x2b, 0x84, 0x44, 0x00, 0x5c, 0x8c, 0x0c, 0xeb, 0x12, 0xc8, 0x46, 0x86, 0x07, 0x68, 0x18, 0x8c, 0xda, 0x0a, 0xec, 0x27, 0xa9, 0xc8, 0xa5, 0x5c, 0xde, 0xe2, 0x12, 0x36, 0x32 }, - { 0xdb, 0x44, 0x4c, 0x15, 0x59, 0x7b, 0x5f, 0x1a, 0x03, 0xd1, 0xf9, 0xed, 0xd1, 0x6e, 0x4a, 0x9f, 0x43, 0xa6, 0x67, 0xcc, 0x27, 0x51, 0x75, 0xdf, 0xa2, 0xb7, 0x04, 0xe3, 0xbb, 0x1a, 0x9b, 0x83 }, - { 0x3f, 0xb7, 0x35, 0x06, 0x1a, 0xbc, 0x51, 0x9d, 0xfe, 0x97, 0x9e, 0x54, 0xc1, 0xee, 0x5b, 0xfa, 0xd0, 0xa9, 0xd8, 0x58, 0xb3, 0x31, 0x5b, 0xad, 0x34, 0xbd, 0xe9, 0x99, 0xef, 0xd7, 0x24, 0xdd }, - }; - unsigned char inp[1000], out[1000]; - unsigned char key[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }; - unsigned long ilen, klen = sizeof(key), mlen = 32; - blake2smac_state st; - - for (ilen = 0; ilen < 256; ilen++) inp[ilen] = (unsigned char)ilen; - - for (ilen = 0; ilen < 256; ilen++) { - const unsigned char *mac = tests[ilen]; - unsigned long olen = mlen; - /* process piece by piece */ - if (ilen > 15) { - blake2smac_init(&st, olen, key, klen); - blake2smac_process(&st, (unsigned char*)inp, 5); - blake2smac_process(&st, (unsigned char*)inp + 5, 4); - blake2smac_process(&st, (unsigned char*)inp + 9, 3); - blake2smac_process(&st, (unsigned char*)inp + 12, 2); - blake2smac_process(&st, (unsigned char*)inp + 14, 1); - blake2smac_process(&st, (unsigned char*)inp + 15, ilen - 15); - blake2smac_done(&st, out, &olen); - if (compare_testvector(out, olen, mac, mlen, "BLAKE2S MAC multi", ilen) != 0) return CRYPT_FAIL_TESTVECTOR; - } - /* process in one go */ - blake2smac_init(&st, olen, key, klen); - blake2smac_process(&st, (unsigned char*)inp, ilen); - blake2smac_done(&st, out, &olen); - if (compare_testvector(out, olen, mac, mlen, "BLAKE2S MAC single", ilen) != 0) return CRYPT_FAIL_TESTVECTOR; - } - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/f9/f9_done.c b/src/libtomcrypt/src/mac/f9/f9_done.c deleted file mode 100644 index 32cd2b80ef..0000000000 --- a/src/libtomcrypt/src/mac/f9/f9_done.c +++ /dev/null @@ -1,75 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file f9_done.c - f9 Support, terminate the state -*/ - -#ifdef LTC_F9_MODE - -/** Terminate the f9-MAC state - @param f9 f9 state to terminate - @param out [out] Destination for the MAC tag - @param outlen [in/out] Destination size and final tag size - Return CRYPT_OK on success -*/ -int f9_done(f9_state *f9, unsigned char *out, unsigned long *outlen) -{ - int err, x; - LTC_ARGCHK(f9 != NULL); - LTC_ARGCHK(out != NULL); - - /* check structure */ - if ((err = cipher_is_valid(f9->cipher)) != CRYPT_OK) { - return err; - } - - if ((f9->blocksize > cipher_descriptor[f9->cipher].block_length) || (f9->blocksize < 0) || - (f9->buflen > f9->blocksize) || (f9->buflen < 0)) { - return CRYPT_INVALID_ARG; - } - - if (f9->buflen != 0) { - /* encrypt */ - cipher_descriptor[f9->cipher].ecb_encrypt(f9->IV, f9->IV, &f9->key); - f9->buflen = 0; - for (x = 0; x < f9->blocksize; x++) { - f9->ACC[x] ^= f9->IV[x]; - } - } - - /* schedule modified key */ - if ((err = cipher_descriptor[f9->cipher].setup(f9->akey, f9->keylen, 0, &f9->key)) != CRYPT_OK) { - return err; - } - - /* encrypt the ACC */ - cipher_descriptor[f9->cipher].ecb_encrypt(f9->ACC, f9->ACC, &f9->key); - cipher_descriptor[f9->cipher].done(&f9->key); - - /* extract tag */ - for (x = 0; x < f9->blocksize && (unsigned long)x < *outlen; x++) { - out[x] = f9->ACC[x]; - } - *outlen = x; - -#ifdef LTC_CLEAN_STACK - zeromem(f9, sizeof(*f9)); -#endif - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/mac/f9/f9_file.c b/src/libtomcrypt/src/mac/f9/f9_file.c deleted file mode 100644 index 56ab6e1d4d..0000000000 --- a/src/libtomcrypt/src/mac/f9/f9_file.c +++ /dev/null @@ -1,97 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file f9_file.c - f9 support, process a file, Tom St Denis -*/ - -#ifdef LTC_F9_MODE - -/** - f9 a file - @param cipher The index of the cipher desired - @param key The secret key - @param keylen The length of the secret key (octets) - @param fname The name of the file you wish to f9 - @param out [out] Where the authentication tag is to be stored - @param outlen [in/out] The max size and resulting size of the authentication tag - @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled -*/ -int f9_file(int cipher, - const unsigned char *key, unsigned long keylen, - const char *fname, - unsigned char *out, unsigned long *outlen) -{ -#ifdef LTC_NO_FILE - LTC_UNUSED_PARAM(cipher); - LTC_UNUSED_PARAM(key); - LTC_UNUSED_PARAM(keylen); - LTC_UNUSED_PARAM(fname); - LTC_UNUSED_PARAM(out); - LTC_UNUSED_PARAM(outlen); - return CRYPT_NOP; -#else - size_t x; - int err; - f9_state f9; - FILE *in; - unsigned char *buf; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(fname != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { - return CRYPT_MEM; - } - - if ((err = f9_init(&f9, cipher, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - - in = fopen(fname, "rb"); - if (in == NULL) { - err = CRYPT_FILE_NOTFOUND; - goto LBL_ERR; - } - - do { - x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); - if ((err = f9_process(&f9, buf, (unsigned long)x)) != CRYPT_OK) { - fclose(in); - goto LBL_CLEANBUF; - } - } while (x == LTC_FILE_READ_BUFSIZE); - - if (fclose(in) != 0) { - err = CRYPT_ERROR; - goto LBL_CLEANBUF; - } - - err = f9_done(&f9, out, outlen); - -LBL_CLEANBUF: - zeromem(buf, LTC_FILE_READ_BUFSIZE); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(&f9, sizeof(f9_state)); -#endif - XFREE(buf); - return err; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/f9/f9_init.c b/src/libtomcrypt/src/mac/f9/f9_init.c deleted file mode 100644 index d3df6d713c..0000000000 --- a/src/libtomcrypt/src/mac/f9/f9_init.c +++ /dev/null @@ -1,68 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file f9_init.c - F9 Support, start an F9 state -*/ - -#ifdef LTC_F9_MODE - -/** Initialize F9-MAC state - @param f9 [out] f9 state to initialize - @param cipher Index of cipher to use - @param key [in] Secret key - @param keylen Length of secret key in octets - Return CRYPT_OK on success -*/ -int f9_init(f9_state *f9, int cipher, const unsigned char *key, unsigned long keylen) -{ - int x, err; - - LTC_ARGCHK(f9 != NULL); - LTC_ARGCHK(key != NULL); - - /* schedule the key */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - -#ifdef LTC_FAST - if (cipher_descriptor[cipher].block_length % sizeof(LTC_FAST_TYPE)) { - return CRYPT_INVALID_ARG; - } -#endif - - if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &f9->key)) != CRYPT_OK) { - goto done; - } - - /* make the second key */ - for (x = 0; (unsigned)x < keylen; x++) { - f9->akey[x] = key[x] ^ 0xAA; - } - - /* setup struct */ - zeromem(f9->IV, cipher_descriptor[cipher].block_length); - zeromem(f9->ACC, cipher_descriptor[cipher].block_length); - f9->blocksize = cipher_descriptor[cipher].block_length; - f9->cipher = cipher; - f9->buflen = 0; - f9->keylen = keylen; -done: - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/mac/f9/f9_memory.c b/src/libtomcrypt/src/mac/f9/f9_memory.c deleted file mode 100644 index bf7c28896c..0000000000 --- a/src/libtomcrypt/src/mac/f9/f9_memory.c +++ /dev/null @@ -1,69 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file f9_process.c - f9 Support, Process a block through F9-MAC -*/ - -#ifdef LTC_F9_MODE - -/** f9-MAC a block of memory - @param cipher Index of cipher to use - @param key [in] Secret key - @param keylen Length of key in octets - @param in [in] Message to MAC - @param inlen Length of input in octets - @param out [out] Destination for the MAC tag - @param outlen [in/out] Output size and final tag size - Return CRYPT_OK on success. -*/ -int f9_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - f9_state *f9; - int err; - - /* is the cipher valid? */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - - /* Use accelerator if found */ - if (cipher_descriptor[cipher].f9_memory != NULL) { - return cipher_descriptor[cipher].f9_memory(key, keylen, in, inlen, out, outlen); - } - - f9 = XCALLOC(1, sizeof(*f9)); - if (f9 == NULL) { - return CRYPT_MEM; - } - - if ((err = f9_init(f9, cipher, key, keylen)) != CRYPT_OK) { - goto done; - } - - if ((err = f9_process(f9, in, inlen)) != CRYPT_OK) { - goto done; - } - - err = f9_done(f9, out, outlen); -done: - XFREE(f9); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/f9/f9_memory_multi.c b/src/libtomcrypt/src/mac/f9/f9_memory_multi.c deleted file mode 100644 index dddfc97c82..0000000000 --- a/src/libtomcrypt/src/mac/f9/f9_memory_multi.c +++ /dev/null @@ -1,88 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" -#include - -/** - @file f9_memory_multi.c - f9 support, process multiple blocks of memory, Tom St Denis -*/ - -#ifdef LTC_F9_MODE - -/** - f9 multiple blocks of memory - @param cipher The index of the desired cipher - @param key The secret key - @param keylen The length of the secret key (octets) - @param out [out] The destination of the authentication tag - @param outlen [in/out] The max size and resulting size of the authentication tag (octets) - @param in The data to send through f9 - @param inlen The length of the data to send through f9 (octets) - @param ... tuples of (data,len) pairs to f9, terminated with a (NULL,x) (x=don't care) - @return CRYPT_OK if successful -*/ -int f9_memory_multi(int cipher, - const unsigned char *key, unsigned long keylen, - unsigned char *out, unsigned long *outlen, - const unsigned char *in, unsigned long inlen, ...) -{ - int err; - f9_state *f9; - va_list args; - const unsigned char *curptr; - unsigned long curlen; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* allocate ram for f9 state */ - f9 = XMALLOC(sizeof(f9_state)); - if (f9 == NULL) { - return CRYPT_MEM; - } - - /* f9 process the message */ - if ((err = f9_init(f9, cipher, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - va_start(args, inlen); - curptr = in; - curlen = inlen; - for (;;) { - /* process buf */ - if ((err = f9_process(f9, curptr, curlen)) != CRYPT_OK) { - goto LBL_ERR; - } - /* step to next */ - curptr = va_arg(args, const unsigned char*); - if (curptr == NULL) { - break; - } - curlen = va_arg(args, unsigned long); - } - if ((err = f9_done(f9, out, outlen)) != CRYPT_OK) { - goto LBL_ERR; - } -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(f9, sizeof(f9_state)); -#endif - XFREE(f9); - va_end(args); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/f9/f9_process.c b/src/libtomcrypt/src/mac/f9/f9_process.c deleted file mode 100644 index 0ce66242ae..0000000000 --- a/src/libtomcrypt/src/mac/f9/f9_process.c +++ /dev/null @@ -1,76 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file f9_process.c - f9 Support, process blocks with f9 -*/ - -#ifdef LTC_F9_MODE - -/** Process data through f9-MAC - @param f9 The f9-MAC state - @param in Input data to process - @param inlen Length of input in octets - Return CRYPT_OK on success -*/ -int f9_process(f9_state *f9, const unsigned char *in, unsigned long inlen) -{ - int err, x; - - LTC_ARGCHK(f9 != NULL); - LTC_ARGCHK(in != NULL); - - /* check structure */ - if ((err = cipher_is_valid(f9->cipher)) != CRYPT_OK) { - return err; - } - - if ((f9->blocksize > cipher_descriptor[f9->cipher].block_length) || (f9->blocksize < 0) || - (f9->buflen > f9->blocksize) || (f9->buflen < 0)) { - return CRYPT_INVALID_ARG; - } - -#ifdef LTC_FAST - if (f9->buflen == 0) { - while (inlen >= (unsigned long)f9->blocksize) { - for (x = 0; x < f9->blocksize; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&(f9->IV[x]))) ^= *(LTC_FAST_TYPE_PTR_CAST(&(in[x]))); - } - cipher_descriptor[f9->cipher].ecb_encrypt(f9->IV, f9->IV, &f9->key); - for (x = 0; x < f9->blocksize; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&(f9->ACC[x]))) ^= *(LTC_FAST_TYPE_PTR_CAST(&(f9->IV[x]))); - } - in += f9->blocksize; - inlen -= f9->blocksize; - } - } -#endif - - while (inlen) { - if (f9->buflen == f9->blocksize) { - cipher_descriptor[f9->cipher].ecb_encrypt(f9->IV, f9->IV, &f9->key); - for (x = 0; x < f9->blocksize; x++) { - f9->ACC[x] ^= f9->IV[x]; - } - f9->buflen = 0; - } - f9->IV[f9->buflen++] ^= *in++; - --inlen; - } - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/mac/f9/f9_test.c b/src/libtomcrypt/src/mac/f9/f9_test.c deleted file mode 100644 index 223667793f..0000000000 --- a/src/libtomcrypt/src/mac/f9/f9_test.c +++ /dev/null @@ -1,76 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file f9_test.c - f9 Support, Test F9 mode -*/ - -#ifdef LTC_F9_MODE - -/** Test f9-MAC mode - Return CRYPT_OK on succes -*/ -int f9_test(void) -{ -#ifdef LTC_NO_TEST - return CRYPT_NOP; -#else - static const struct { - int msglen; - unsigned char K[16], M[128], T[4]; - } tests[] = { -{ - 20, - { 0x2B, 0xD6, 0x45, 0x9F, 0x82, 0xC5, 0xB3, 0x00, 0x95, 0x2C, 0x49, 0x10, 0x48, 0x81, 0xFF, 0x48 }, - { 0x38, 0xA6, 0xF0, 0x56, 0xB8, 0xAE, 0xFD, 0xA9, 0x33, 0x32, 0x34, 0x62, 0x63, 0x39, 0x38, 0x61, 0x37, 0x34, 0x79, 0x40 }, - { 0x46, 0xE0, 0x0D, 0x4B } -}, - -{ - 105, - { 0x83, 0xFD, 0x23, 0xA2, 0x44, 0xA7, 0x4C, 0xF3, 0x58, 0xDA, 0x30, 0x19, 0xF1, 0x72, 0x26, 0x35 }, - { 0x36, 0xAF, 0x61, 0x44, 0x4F, 0x30, 0x2A, 0xD2, - 0x35, 0xC6, 0x87, 0x16, 0x63, 0x3C, 0x66, 0xFB, 0x75, 0x0C, 0x26, 0x68, 0x65, 0xD5, 0x3C, 0x11, 0xEA, 0x05, 0xB1, 0xE9, 0xFA, 0x49, 0xC8, 0x39, 0x8D, 0x48, 0xE1, 0xEF, 0xA5, 0x90, 0x9D, 0x39, - 0x47, 0x90, 0x28, 0x37, 0xF5, 0xAE, 0x96, 0xD5, 0xA0, 0x5B, 0xC8, 0xD6, 0x1C, 0xA8, 0xDB, 0xEF, 0x1B, 0x13, 0xA4, 0xB4, 0xAB, 0xFE, 0x4F, 0xB1, 0x00, 0x60, 0x45, 0xB6, 0x74, 0xBB, 0x54, 0x72, - 0x93, 0x04, 0xC3, 0x82, 0xBE, 0x53, 0xA5, 0xAF, 0x05, 0x55, 0x61, 0x76, 0xF6, 0xEA, 0xA2, 0xEF, 0x1D, 0x05, 0xE4, 0xB0, 0x83, 0x18, 0x1E, 0xE6, 0x74, 0xCD, 0xA5, 0xA4, 0x85, 0xF7, 0x4D, 0x7A, - 0x40|0x80 }, - { 0x95, 0xAE, 0x41, 0xBA }, -} -}; - unsigned char T[16]; - unsigned long taglen; - int err, x, idx; - - /* find kasumi */ - if ((idx = find_cipher("kasumi")) == -1) { - return CRYPT_NOP; - } - - for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - taglen = 4; - if ((err = f9_memory(idx, tests[x].K, 16, tests[x].M, tests[x].msglen, T, &taglen)) != CRYPT_OK) { - return err; - } - if (compare_testvector(T, taglen, tests[x].T, 4, "F9", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/mac/hmac/hmac_done.c b/src/libtomcrypt/src/mac/hmac/hmac_done.c deleted file mode 100644 index 5e7c2d37f3..0000000000 --- a/src/libtomcrypt/src/mac/hmac/hmac_done.c +++ /dev/null @@ -1,107 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file hmac_done.c - HMAC support, terminate stream, Tom St Denis/Dobes Vandermeer -*/ - -#ifdef LTC_HMAC - -#define LTC_HMAC_BLOCKSIZE hash_descriptor[hash].blocksize - -/** - Terminate an HMAC session - @param hmac The HMAC state - @param out [out] The destination of the HMAC authentication tag - @param outlen [in/out] The max size and resulting size of the HMAC authentication tag - @return CRYPT_OK if successful -*/ -int hmac_done(hmac_state *hmac, unsigned char *out, unsigned long *outlen) -{ - unsigned char *buf, *isha; - unsigned long hashsize, i; - int hash, err; - - LTC_ARGCHK(hmac != NULL); - LTC_ARGCHK(out != NULL); - - /* test hash */ - hash = hmac->hash; - if((err = hash_is_valid(hash)) != CRYPT_OK) { - return err; - } - - /* get the hash message digest size */ - hashsize = hash_descriptor[hash].hashsize; - - /* allocate buffers */ - buf = XMALLOC(LTC_HMAC_BLOCKSIZE); - isha = XMALLOC(hashsize); - if (buf == NULL || isha == NULL) { - if (buf != NULL) { - XFREE(buf); - } - if (isha != NULL) { - XFREE(isha); - } - return CRYPT_MEM; - } - - /* Get the hash of the first HMAC vector plus the data */ - if ((err = hash_descriptor[hash].done(&hmac->md, isha)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* Create the second HMAC vector vector for step (3) */ - for(i=0; i < LTC_HMAC_BLOCKSIZE; i++) { - buf[i] = hmac->key[i] ^ 0x5C; - } - - /* Now calculate the "outer" hash for step (5), (6), and (7) */ - if ((err = hash_descriptor[hash].init(&hmac->md)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hash_descriptor[hash].process(&hmac->md, buf, LTC_HMAC_BLOCKSIZE)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hash_descriptor[hash].process(&hmac->md, isha, hashsize)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hash_descriptor[hash].done(&hmac->md, buf)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* copy to output */ - for (i = 0; i < hashsize && i < *outlen; i++) { - out[i] = buf[i]; - } - *outlen = i; - - err = CRYPT_OK; -LBL_ERR: - XFREE(hmac->key); -#ifdef LTC_CLEAN_STACK - zeromem(isha, hashsize); - zeromem(buf, hashsize); - zeromem(hmac, sizeof(*hmac)); -#endif - - XFREE(isha); - XFREE(buf); - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/hmac/hmac_file.c b/src/libtomcrypt/src/mac/hmac/hmac_file.c deleted file mode 100644 index 4f4d98f96d..0000000000 --- a/src/libtomcrypt/src/mac/hmac/hmac_file.c +++ /dev/null @@ -1,100 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file hmac_file.c - HMAC support, process a file, Tom St Denis/Dobes Vandermeer -*/ - -#ifdef LTC_HMAC - -/** - HMAC a file - @param hash The index of the hash you wish to use - @param fname The name of the file you wish to HMAC - @param key The secret key - @param keylen The length of the secret key - @param out [out] The HMAC authentication tag - @param outlen [in/out] The max size and resulting size of the authentication tag - @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled -*/ -int hmac_file(int hash, const char *fname, - const unsigned char *key, unsigned long keylen, - unsigned char *out, unsigned long *outlen) -{ -#ifdef LTC_NO_FILE - LTC_UNUSED_PARAM(hash); - LTC_UNUSED_PARAM(fname); - LTC_UNUSED_PARAM(key); - LTC_UNUSED_PARAM(keylen); - LTC_UNUSED_PARAM(out); - LTC_UNUSED_PARAM(outlen); - return CRYPT_NOP; -#else - hmac_state hmac; - FILE *in; - unsigned char *buf; - size_t x; - int err; - - LTC_ARGCHK(fname != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { - return CRYPT_MEM; - } - - if ((err = hash_is_valid(hash)) != CRYPT_OK) { - goto LBL_ERR; - } - - if ((err = hmac_init(&hmac, hash, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - - in = fopen(fname, "rb"); - if (in == NULL) { - err = CRYPT_FILE_NOTFOUND; - goto LBL_ERR; - } - - do { - x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); - if ((err = hmac_process(&hmac, buf, (unsigned long)x)) != CRYPT_OK) { - fclose(in); /* we don't trap this error since we're already returning an error! */ - goto LBL_CLEANBUF; - } - } while (x == LTC_FILE_READ_BUFSIZE); - - if (fclose(in) != 0) { - err = CRYPT_ERROR; - goto LBL_CLEANBUF; - } - - err = hmac_done(&hmac, out, outlen); - -LBL_CLEANBUF: - zeromem(buf, LTC_FILE_READ_BUFSIZE); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(&hmac, sizeof(hmac_state)); -#endif - XFREE(buf); - return err; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/hmac/hmac_init.c b/src/libtomcrypt/src/mac/hmac/hmac_init.c deleted file mode 100644 index fb5c3e32d0..0000000000 --- a/src/libtomcrypt/src/mac/hmac/hmac_init.c +++ /dev/null @@ -1,108 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file hmac_init.c - HMAC support, initialize state, Tom St Denis/Dobes Vandermeer -*/ - -#ifdef LTC_HMAC - -#define LTC_HMAC_BLOCKSIZE hash_descriptor[hash].blocksize - -/** - Initialize an HMAC context. - @param hmac The HMAC state - @param hash The index of the hash you want to use - @param key The secret key - @param keylen The length of the secret key (octets) - @return CRYPT_OK if successful -*/ -int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned long keylen) -{ - unsigned char *buf; - unsigned long hashsize; - unsigned long i, z; - int err; - - LTC_ARGCHK(hmac != NULL); - LTC_ARGCHK(key != NULL); - - /* valid hash? */ - if ((err = hash_is_valid(hash)) != CRYPT_OK) { - return err; - } - hmac->hash = hash; - hashsize = hash_descriptor[hash].hashsize; - - /* valid key length? */ - if (keylen == 0) { - return CRYPT_INVALID_KEYSIZE; - } - - /* allocate ram for buf */ - buf = XMALLOC(LTC_HMAC_BLOCKSIZE); - if (buf == NULL) { - return CRYPT_MEM; - } - - /* allocate memory for key */ - hmac->key = XMALLOC(LTC_HMAC_BLOCKSIZE); - if (hmac->key == NULL) { - XFREE(buf); - return CRYPT_MEM; - } - - /* (1) make sure we have a large enough key */ - if(keylen > LTC_HMAC_BLOCKSIZE) { - z = LTC_HMAC_BLOCKSIZE; - if ((err = hash_memory(hash, key, keylen, hmac->key, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - keylen = hashsize; - } else { - XMEMCPY(hmac->key, key, (size_t)keylen); - } - - if(keylen < LTC_HMAC_BLOCKSIZE) { - zeromem((hmac->key) + keylen, (size_t)(LTC_HMAC_BLOCKSIZE - keylen)); - } - - /* Create the initialization vector for step (3) */ - for(i=0; i < LTC_HMAC_BLOCKSIZE; i++) { - buf[i] = hmac->key[i] ^ 0x36; - } - - /* Pre-pend that to the hash data */ - if ((err = hash_descriptor[hash].init(&hmac->md)) != CRYPT_OK) { - goto LBL_ERR; - } - - if ((err = hash_descriptor[hash].process(&hmac->md, buf, LTC_HMAC_BLOCKSIZE)) != CRYPT_OK) { - goto LBL_ERR; - } - goto done; -LBL_ERR: - /* free the key since we failed */ - XFREE(hmac->key); -done: -#ifdef LTC_CLEAN_STACK - zeromem(buf, LTC_HMAC_BLOCKSIZE); -#endif - - XFREE(buf); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/hmac/hmac_memory.c b/src/libtomcrypt/src/mac/hmac/hmac_memory.c deleted file mode 100644 index ea9c73730a..0000000000 --- a/src/libtomcrypt/src/mac/hmac/hmac_memory.c +++ /dev/null @@ -1,86 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file hmac_memory.c - HMAC support, process a block of memory, Tom St Denis/Dobes Vandermeer -*/ - -#ifdef LTC_HMAC - -/** - HMAC a block of memory to produce the authentication tag - @param hash The index of the hash to use - @param key The secret key - @param keylen The length of the secret key (octets) - @param in The data to HMAC - @param inlen The length of the data to HMAC (octets) - @param out [out] Destination of the authentication tag - @param outlen [in/out] Max size and resulting size of authentication tag - @return CRYPT_OK if successful -*/ -int hmac_memory(int hash, - const unsigned char *key, unsigned long keylen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - hmac_state *hmac; - int err; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* make sure hash descriptor is valid */ - if ((err = hash_is_valid(hash)) != CRYPT_OK) { - return err; - } - - /* is there a descriptor? */ - if (hash_descriptor[hash].hmac_block != NULL) { - return hash_descriptor[hash].hmac_block(key, keylen, in, inlen, out, outlen); - } - - /* nope, so call the hmac functions */ - /* allocate ram for hmac state */ - hmac = XMALLOC(sizeof(hmac_state)); - if (hmac == NULL) { - return CRYPT_MEM; - } - - if ((err = hmac_init(hmac, hash, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - - if ((err = hmac_process(hmac, in, inlen)) != CRYPT_OK) { - goto LBL_ERR; - } - - if ((err = hmac_done(hmac, out, outlen)) != CRYPT_OK) { - goto LBL_ERR; - } - - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(hmac, sizeof(hmac_state)); -#endif - - XFREE(hmac); - return err; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/hmac/hmac_memory_multi.c b/src/libtomcrypt/src/mac/hmac/hmac_memory_multi.c deleted file mode 100644 index b877837831..0000000000 --- a/src/libtomcrypt/src/mac/hmac/hmac_memory_multi.c +++ /dev/null @@ -1,90 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" -#include - -/** - @file hmac_memory_multi.c - HMAC support, process multiple blocks of memory, Tom St Denis/Dobes Vandermeer -*/ - -#ifdef LTC_HMAC - -/** - HMAC multiple blocks of memory to produce the authentication tag - @param hash The index of the hash to use - @param key The secret key - @param keylen The length of the secret key (octets) - @param out [out] Destination of the authentication tag - @param outlen [in/out] Max size and resulting size of authentication tag - @param in The data to HMAC - @param inlen The length of the data to HMAC (octets) - @param ... tuples of (data,len) pairs to HMAC, terminated with a (NULL,x) (x=don't care) - @return CRYPT_OK if successful -*/ -int hmac_memory_multi(int hash, - const unsigned char *key, unsigned long keylen, - unsigned char *out, unsigned long *outlen, - const unsigned char *in, unsigned long inlen, ...) - -{ - hmac_state *hmac; - int err; - va_list args; - const unsigned char *curptr; - unsigned long curlen; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* allocate ram for hmac state */ - hmac = XMALLOC(sizeof(hmac_state)); - if (hmac == NULL) { - return CRYPT_MEM; - } - - if ((err = hmac_init(hmac, hash, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - - va_start(args, inlen); - curptr = in; - curlen = inlen; - for (;;) { - /* process buf */ - if ((err = hmac_process(hmac, curptr, curlen)) != CRYPT_OK) { - goto LBL_ERR; - } - /* step to next */ - curptr = va_arg(args, const unsigned char*); - if (curptr == NULL) { - break; - } - curlen = va_arg(args, unsigned long); - } - if ((err = hmac_done(hmac, out, outlen)) != CRYPT_OK) { - goto LBL_ERR; - } -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(hmac, sizeof(hmac_state)); -#endif - XFREE(hmac); - va_end(args); - return err; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/hmac/hmac_process.c b/src/libtomcrypt/src/mac/hmac/hmac_process.c deleted file mode 100644 index be7e158fe0..0000000000 --- a/src/libtomcrypt/src/mac/hmac/hmac_process.c +++ /dev/null @@ -1,41 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file hmac_process.c - HMAC support, process data, Tom St Denis/Dobes Vandermeer -*/ - -#ifdef LTC_HMAC - -/** - Process data through HMAC - @param hmac The hmac state - @param in The data to send through HMAC - @param inlen The length of the data to HMAC (octets) - @return CRYPT_OK if successful -*/ -int hmac_process(hmac_state *hmac, const unsigned char *in, unsigned long inlen) -{ - int err; - LTC_ARGCHK(hmac != NULL); - LTC_ARGCHK(in != NULL); - if ((err = hash_is_valid(hmac->hash)) != CRYPT_OK) { - return err; - } - return hash_descriptor[hmac->hash].process(&hmac->md, in, inlen); -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/hmac/hmac_test.c b/src/libtomcrypt/src/mac/hmac/hmac_test.c deleted file mode 100644 index e94401d702..0000000000 --- a/src/libtomcrypt/src/mac/hmac/hmac_test.c +++ /dev/null @@ -1,630 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file hmac_test.c - HMAC support, self-test, Tom St Denis/Dobes Vandermeer/Steffen Jaeckel -*/ - -#ifdef LTC_HMAC - -#define LTC_HMAC_BLOCKSIZE hash_descriptor[hash].blocksize - -/* - TEST CASES SOURCE: - -Network Working Group P. Cheng -Request for Comments: 2202 IBM -Category: Informational R. Glenn - NIST - September 1997 - - Test Cases for HMAC-MD5 and HMAC-SHA-1 - -******************************************************************************* - -Network Working Group J. Kapp -Request for Comments: 2286 Reaper Technologies -Category: Informational February 1998 - - Test Cases for HMAC-RIPEMD160 and HMAC-RIPEMD128 - -******************************************************************************* - -Network Working Group M. Nystrom -Request for Comments: 4231 RSA Security -Category: Standards Track December 2005 - - Identifiers and Test Vectors for HMAC-SHA-224, HMAC-SHA-256, - HMAC-SHA-384, and HMAC-SHA-512 -*/ - -/** - HMAC self-test - @return CRYPT_OK if successful, CRYPT_NOP if tests have been disabled. -*/ -int hmac_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - unsigned char digest[MAXBLOCKSIZE]; - int i; - - static const unsigned char hmac_test_case_keys[][136] = { - { /* 1 */ - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b - }, -#ifdef LTC_TEST_EXT - { /* 2 */ - 0x4a, 0x65, 0x66, 0x65 - }, - { /* 4 */ - 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, - 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, - 0x15, 0x16, 0x17, 0x18, 0x19 - }, - { /* 5 */ - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c - }, - { /* 3, 6, 7 */ - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, - 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa - } -#endif /* LTC_TEST_EXT */ - }; - - - static const unsigned char hmac_test_case_data[][153] = { - { - "Hi There" - }, -#ifdef LTC_TEST_EXT - { - "what do ya want for nothing?" - }, - { - 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, - 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, - 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, - 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, - 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd - }, - { - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, - 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd - }, - { - "Test With Truncation" - }, - { - "Test Using Larger Than Block-Size Key - Hash Key First" - }, - { - "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data" - }, - { - "This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm." - } -#endif /* LTC_TEST_EXT */ - }; - - static const struct hmac_test_case { - const char *num; - const char *algo; - const unsigned char *key; - unsigned long keylen; - const unsigned char *data; - unsigned long datalen; - unsigned char digest[MAXBLOCKSIZE]; - } cases[] = { - /* - RFC 2202 3. Test Cases for HMAC-SHA-1 - */ - { "rfc2202 3.1", "sha1", - hmac_test_case_keys[0], 20, - hmac_test_case_data[0], 8, - {0xb6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64, - 0xe2, 0x8b, 0xc0, 0xb6, 0xfb, 0x37, 0x8c, 0x8e, - 0xf1, 0x46, 0xbe, 0x00} }, - -#ifdef LTC_TEST_EXT - { "rfc2202 3.2", "sha1", - hmac_test_case_keys[1], 4, - hmac_test_case_data[1], 28, - {0xef, 0xfc, 0xdf, 0x6a, 0xe5, 0xeb, 0x2f, 0xa2, - 0xd2, 0x74, 0x16, 0xd5, 0xf1, 0x84, 0xdf, 0x9c, - 0x25, 0x9a, 0x7c, 0x79} }, - - { "rfc2202 3.3", "sha1", - hmac_test_case_keys[4], 20, - hmac_test_case_data[2], 50, - {0x12, 0x5d, 0x73, 0x42, 0xb9, 0xac, 0x11, 0xcd, - 0x91, 0xa3, 0x9a, 0xf4, 0x8a, 0xa1, 0x7b, 0x4f, - 0x63, 0xf1, 0x75, 0xd3} }, - - { "rfc2202 3.4", "sha1", - hmac_test_case_keys[2], 25, - hmac_test_case_data[3], 50, - {0x4c, 0x90, 0x07, 0xf4, 0x02, 0x62, 0x50, 0xc6, - 0xbc, 0x84, 0x14, 0xf9, 0xbf, 0x50, 0xc8, 0x6c, - 0x2d, 0x72, 0x35, 0xda} }, - - { "rfc2202 3.5", "sha1", - hmac_test_case_keys[3], 20, - hmac_test_case_data[4], 20, - {0x4c, 0x1a, 0x03, 0x42, 0x4b, 0x55, 0xe0, 0x7f, 0xe7, 0xf2, - 0x7b, 0xe1, 0xd5, 0x8b, 0xb9, 0x32, 0x4a, 0x9a, 0x5a, 0x04} }, - - { "rfc2202 3.6", "sha1", - hmac_test_case_keys[4], 80, - hmac_test_case_data[5], 54, - {0xaa, 0x4a, 0xe5, 0xe1, 0x52, 0x72, 0xd0, 0x0e, - 0x95, 0x70, 0x56, 0x37, 0xce, 0x8a, 0x3b, 0x55, - 0xed, 0x40, 0x21, 0x12} }, - - { "rfc2202 3.7", "sha1", - hmac_test_case_keys[4], 80, - hmac_test_case_data[6], 73, - {0xe8, 0xe9, 0x9d, 0x0f, 0x45, 0x23, 0x7d, 0x78, 0x6d, - 0x6b, 0xba, 0xa7, 0x96, 0x5c, 0x78, 0x08, 0xbb, 0xff, 0x1a, 0x91} }, -#endif /* LTC_TEST_EXT */ - - /* - RFC 2202 2. Test Cases for HMAC-MD5 - */ - { "rfc2202 2.1", "md5", - hmac_test_case_keys[0], 16, - hmac_test_case_data[0], 8, - {0x92, 0x94, 0x72, 0x7a, 0x36, 0x38, 0xbb, 0x1c, - 0x13, 0xf4, 0x8e, 0xf8, 0x15, 0x8b, 0xfc, 0x9d} }, - -#ifdef LTC_TEST_EXT - { "rfc2202 2.2", "md5", - hmac_test_case_keys[1], 4, - hmac_test_case_data[1], 28, - {0x75, 0x0c, 0x78, 0x3e, 0x6a, 0xb0, 0xb5, 0x03, - 0xea, 0xa8, 0x6e, 0x31, 0x0a, 0x5d, 0xb7, 0x38} }, - - { "rfc2202 2.3", "md5", - hmac_test_case_keys[4], 16, - hmac_test_case_data[2], 50, - {0x56, 0xbe, 0x34, 0x52, 0x1d, 0x14, 0x4c, 0x88, - 0xdb, 0xb8, 0xc7, 0x33, 0xf0, 0xe8, 0xb3, 0xf6} }, - - { "rfc2202 2.4", "md5", - hmac_test_case_keys[2], 25, - hmac_test_case_data[3], 50, - {0x69, 0x7e, 0xaf, 0x0a, 0xca, 0x3a, 0x3a, 0xea, - 0x3a, 0x75, 0x16, 0x47, 0x46, 0xff, 0xaa, 0x79} }, - - { "rfc2202 2.5", "md5", - hmac_test_case_keys[3], 16, - hmac_test_case_data[4], 20, - {0x56, 0x46, 0x1e, 0xf2, 0x34, 0x2e, 0xdc, 0x00, - 0xf9, 0xba, 0xb9, 0x95, 0x69, 0x0e, 0xfd, 0x4c} }, - - { "rfc2202 2.6", "md5", - hmac_test_case_keys[4], 80, - hmac_test_case_data[5], 54, - {0x6b, 0x1a, 0xb7, 0xfe, 0x4b, 0xd7, 0xbf, 0x8f, - 0x0b, 0x62, 0xe6, 0xce, 0x61, 0xb9, 0xd0, 0xcd} }, - - { "rfc2202 2.7", "md5", - hmac_test_case_keys[4], 80, - hmac_test_case_data[6], 73, - {0x6f, 0x63, 0x0f, 0xad, 0x67, 0xcd, 0xa0, 0xee, - 0x1f, 0xb1, 0xf5, 0x62, 0xdb, 0x3a, 0xa5, 0x3e} }, -#endif /* LTC_TEST_EXT */ - - /* - RFC 2286 2. Test Cases for HMAC-RIPEMD160 - */ - { "rfc2286 2.1", "rmd160", - hmac_test_case_keys[0], 20, - hmac_test_case_data[0], 8, - {0x24, 0xcb, 0x4b, 0xd6, 0x7d, 0x20, 0xfc, 0x1a, - 0x5d, 0x2e, 0xd7, 0x73, 0x2d, 0xcc, 0x39, 0x37, - 0x7f, 0x0a, 0x56, 0x68} }, - -#ifdef LTC_TEST_EXT - { "rfc2286 2.2", "rmd160", - hmac_test_case_keys[1], 4, - hmac_test_case_data[1], 28, - {0xdd, 0xa6, 0xc0, 0x21, 0x3a, 0x48, 0x5a, 0x9e, - 0x24, 0xf4, 0x74, 0x20, 0x64, 0xa7, 0xf0, 0x33, - 0xb4, 0x3c, 0x40, 0x69} }, - - { "rfc2286 2.3", "rmd160", - hmac_test_case_keys[4], 20, - hmac_test_case_data[2], 50, - {0xb0, 0xb1, 0x05, 0x36, 0x0d, 0xe7, 0x59, 0x96, - 0x0a, 0xb4, 0xf3, 0x52, 0x98, 0xe1, 0x16, 0xe2, - 0x95, 0xd8, 0xe7, 0xc1} }, - - { "rfc2286 2.4", "rmd160", - hmac_test_case_keys[2], 25, - hmac_test_case_data[3], 50, - {0xd5, 0xca, 0x86, 0x2f, 0x4d, 0x21, 0xd5, 0xe6, - 0x10, 0xe1, 0x8b, 0x4c, 0xf1, 0xbe, 0xb9, 0x7a, - 0x43, 0x65, 0xec, 0xf4} }, - - { "rfc2286 2.5", "rmd160", - hmac_test_case_keys[3], 20, - hmac_test_case_data[4], 20, - {0x76, 0x19, 0x69, 0x39, 0x78, 0xf9, 0x1d, 0x90, - 0x53, 0x9a, 0xe7, 0x86, 0x50, 0x0f, 0xf3, 0xd8, - 0xe0, 0x51, 0x8e, 0x39} }, - - { "rfc2286 2.6", "rmd160", - hmac_test_case_keys[4], 80, - hmac_test_case_data[5], 54, - {0x64, 0x66, 0xca, 0x07, 0xac, 0x5e, 0xac, 0x29, - 0xe1, 0xbd, 0x52, 0x3e, 0x5a, 0xda, 0x76, 0x05, - 0xb7, 0x91, 0xfd, 0x8b} }, - - { "rfc2286 2.7", "rmd160", - hmac_test_case_keys[4], 80, - hmac_test_case_data[6], 73, - {0x69, 0xea, 0x60, 0x79, 0x8d, 0x71, 0x61, 0x6c, - 0xce, 0x5f, 0xd0, 0x87, 0x1e, 0x23, 0x75, 0x4c, - 0xd7, 0x5d, 0x5a, 0x0a} }, -#endif /* LTC_TEST_EXT */ - - /* - RFC 2286 3. Test Cases for HMAC-RIPEMD128 - */ - { "rfc2286 3.1", "rmd128", - hmac_test_case_keys[0], 16, - hmac_test_case_data[0], 8, - {0xfb, 0xf6, 0x1f, 0x94, 0x92, 0xaa, 0x4b, 0xbf, - 0x81, 0xc1, 0x72, 0xe8, 0x4e, 0x07, 0x34, 0xdb} }, - -#ifdef LTC_TEST_EXT - { "rfc2286 3.2", "rmd128", - hmac_test_case_keys[1], 4, - hmac_test_case_data[1], 28, - {0x87, 0x5f, 0x82, 0x88, 0x62, 0xb6, 0xb3, 0x34, - 0xb4, 0x27, 0xc5, 0x5f, 0x9f, 0x7f, 0xf0, 0x9b} }, - - { "rfc2286 3.3", "rmd128", - hmac_test_case_keys[4], 16, - hmac_test_case_data[2], 50, - {0x09, 0xf0, 0xb2, 0x84, 0x6d, 0x2f, 0x54, 0x3d, - 0xa3, 0x63, 0xcb, 0xec, 0x8d, 0x62, 0xa3, 0x8d} }, - - { "rfc2286 3.4", "rmd128", - hmac_test_case_keys[2], 25, - hmac_test_case_data[3], 50, - {0xbd, 0xbb, 0xd7, 0xcf, 0x03, 0xe4, 0x4b, 0x5a, - 0xa6, 0x0a, 0xf8, 0x15, 0xbe, 0x4d, 0x22, 0x94} }, - - { "rfc2286 3.5", "rmd128", - hmac_test_case_keys[3], 16, - hmac_test_case_data[4], 20, - {0xe7, 0x98, 0x08, 0xf2, 0x4b, 0x25, 0xfd, 0x03, - 0x1c, 0x15, 0x5f, 0x0d, 0x55, 0x1d, 0x9a, 0x3a} }, - - { "rfc2286 3.6", "rmd128", - hmac_test_case_keys[4], 80, - hmac_test_case_data[5], 54, - {0xdc, 0x73, 0x29, 0x28, 0xde, 0x98, 0x10, 0x4a, - 0x1f, 0x59, 0xd3, 0x73, 0xc1, 0x50, 0xac, 0xbb} }, - - { "rfc2286 3.7", "rmd128", - hmac_test_case_keys[4], 80, - hmac_test_case_data[6], 73, - {0x5c, 0x6b, 0xec, 0x96, 0x79, 0x3e, 0x16, 0xd4, - 0x06, 0x90, 0xc2, 0x37, 0x63, 0x5f, 0x30, 0xc5} }, -#endif /* LTC_TEST_EXT */ - - /* - RFC 4231 4. Test Vectors - Ch. 4.6 with truncated output left out to simplify tests - */ - { "rfc4231 4.2", "sha224", - hmac_test_case_keys[0], 20, - hmac_test_case_data[0], 8, - {0x89, 0x6f, 0xb1, 0x12, 0x8a, 0xbb, 0xdf, 0x19, - 0x68, 0x32, 0x10, 0x7c, 0xd4, 0x9d, 0xf3, 0x3f, - 0x47, 0xb4, 0xb1, 0x16, 0x99, 0x12, 0xba, 0x4f, - 0x53, 0x68, 0x4b, 0x22} }, - -#ifdef LTC_TEST_EXT - { "rfc4231 4.3", "sha224", - hmac_test_case_keys[1], 4, - hmac_test_case_data[1], 28, - {0xa3, 0x0e, 0x01, 0x09, 0x8b, 0xc6, 0xdb, 0xbf, - 0x45, 0x69, 0x0f, 0x3a, 0x7e, 0x9e, 0x6d, 0x0f, - 0x8b, 0xbe, 0xa2, 0xa3, 0x9e, 0x61, 0x48, 0x00, - 0x8f, 0xd0, 0x5e, 0x44} }, - - { "rfc4231 4.4", "sha224", - hmac_test_case_keys[4], 20, - hmac_test_case_data[2], 50, - {0x7f, 0xb3, 0xcb, 0x35, 0x88, 0xc6, 0xc1, 0xf6, - 0xff, 0xa9, 0x69, 0x4d, 0x7d, 0x6a, 0xd2, 0x64, - 0x93, 0x65, 0xb0, 0xc1, 0xf6, 0x5d, 0x69, 0xd1, - 0xec, 0x83, 0x33, 0xea} }, - - { "rfc4231 4.5", "sha224", - hmac_test_case_keys[2], 25, - hmac_test_case_data[3], 50, - {0x6c, 0x11, 0x50, 0x68, 0x74, 0x01, 0x3c, 0xac, - 0x6a, 0x2a, 0xbc, 0x1b, 0xb3, 0x82, 0x62, 0x7c, - 0xec, 0x6a, 0x90, 0xd8, 0x6e, 0xfc, 0x01, 0x2d, - 0xe7, 0xaf, 0xec, 0x5a} }, - - { "rfc4231 4.7", "sha224", - hmac_test_case_keys[4], 131, - hmac_test_case_data[5], 54, - {0x95, 0xe9, 0xa0, 0xdb, 0x96, 0x20, 0x95, 0xad, - 0xae, 0xbe, 0x9b, 0x2d, 0x6f, 0x0d, 0xbc, 0xe2, - 0xd4, 0x99, 0xf1, 0x12, 0xf2, 0xd2, 0xb7, 0x27, - 0x3f, 0xa6, 0x87, 0x0e} }, - - { "rfc4231 4.8", "sha224", - hmac_test_case_keys[4], 131, - hmac_test_case_data[7], 152, - {0x3a, 0x85, 0x41, 0x66, 0xac, 0x5d, 0x9f, 0x02, - 0x3f, 0x54, 0xd5, 0x17, 0xd0, 0xb3, 0x9d, 0xbd, - 0x94, 0x67, 0x70, 0xdb, 0x9c, 0x2b, 0x95, 0xc9, - 0xf6, 0xf5, 0x65, 0xd1} }, -#endif /* LTC_TEST_EXT */ - - { "rfc4231 4.2", "sha256", - hmac_test_case_keys[0], 20, - hmac_test_case_data[0], 8, - {0xb0, 0x34, 0x4c, 0x61, 0xd8, 0xdb, 0x38, 0x53, - 0x5c, 0xa8, 0xaf, 0xce, 0xaf, 0x0b, 0xf1, 0x2b, - 0x88, 0x1d, 0xc2, 0x00, 0xc9, 0x83, 0x3d, 0xa7, - 0x26, 0xe9, 0x37, 0x6c, 0x2e, 0x32, 0xcf, 0xf7} }, - -#ifdef LTC_TEST_EXT - { "rfc4231 4.3", "sha256", - hmac_test_case_keys[1], 4, - hmac_test_case_data[1], 28, - {0x5b, 0xdc, 0xc1, 0x46, 0xbf, 0x60, 0x75, 0x4e, - 0x6a, 0x04, 0x24, 0x26, 0x08, 0x95, 0x75, 0xc7, - 0x5a, 0x00, 0x3f, 0x08, 0x9d, 0x27, 0x39, 0x83, - 0x9d, 0xec, 0x58, 0xb9, 0x64, 0xec, 0x38, 0x43} }, - - { "rfc4231 4.4", "sha256", - hmac_test_case_keys[4], 20, - hmac_test_case_data[2], 50, - {0x77, 0x3e, 0xa9, 0x1e, 0x36, 0x80, 0x0e, 0x46, - 0x85, 0x4d, 0xb8, 0xeb, 0xd0, 0x91, 0x81, 0xa7, - 0x29, 0x59, 0x09, 0x8b, 0x3e, 0xf8, 0xc1, 0x22, - 0xd9, 0x63, 0x55, 0x14, 0xce, 0xd5, 0x65, 0xfe} }, - - { "rfc4231 4.5", "sha256", - hmac_test_case_keys[2], 25, - hmac_test_case_data[3], 50, - {0x82, 0x55, 0x8a, 0x38, 0x9a, 0x44, 0x3c, 0x0e, - 0xa4, 0xcc, 0x81, 0x98, 0x99, 0xf2, 0x08, 0x3a, - 0x85, 0xf0, 0xfa, 0xa3, 0xe5, 0x78, 0xf8, 0x07, - 0x7a, 0x2e, 0x3f, 0xf4, 0x67, 0x29, 0x66, 0x5b} }, - - { "rfc4231 4.7", "sha256", - hmac_test_case_keys[4], 131, - hmac_test_case_data[5], 54, - {0x60, 0xe4, 0x31, 0x59, 0x1e, 0xe0, 0xb6, 0x7f, - 0x0d, 0x8a, 0x26, 0xaa, 0xcb, 0xf5, 0xb7, 0x7f, - 0x8e, 0x0b, 0xc6, 0x21, 0x37, 0x28, 0xc5, 0x14, - 0x05, 0x46, 0x04, 0x0f, 0x0e, 0xe3, 0x7f, 0x54} }, - - { "rfc4231 4.8", "sha256", - hmac_test_case_keys[4], 131, - hmac_test_case_data[7], 152, - {0x9b, 0x09, 0xff, 0xa7, 0x1b, 0x94, 0x2f, 0xcb, - 0x27, 0x63, 0x5f, 0xbc, 0xd5, 0xb0, 0xe9, 0x44, - 0xbf, 0xdc, 0x63, 0x64, 0x4f, 0x07, 0x13, 0x93, - 0x8a, 0x7f, 0x51, 0x53, 0x5c, 0x3a, 0x35, 0xe2} }, -#endif /* LTC_TEST_EXT */ - - { "rfc4231 4.2", "sha384", - hmac_test_case_keys[0], 20, - hmac_test_case_data[0], 8, - {0xaf, 0xd0, 0x39, 0x44, 0xd8, 0x48, 0x95, 0x62, - 0x6b, 0x08, 0x25, 0xf4, 0xab, 0x46, 0x90, 0x7f, - 0x15, 0xf9, 0xda, 0xdb, 0xe4, 0x10, 0x1e, 0xc6, - 0x82, 0xaa, 0x03, 0x4c, 0x7c, 0xeb, 0xc5, 0x9c, - 0xfa, 0xea, 0x9e, 0xa9, 0x07, 0x6e, 0xde, 0x7f, - 0x4a, 0xf1, 0x52, 0xe8, 0xb2, 0xfa, 0x9c, 0xb6} }, - -#ifdef LTC_TEST_EXT - { "rfc4231 4.3", "sha384", - hmac_test_case_keys[1], 4, - hmac_test_case_data[1], 28, - {0xaf, 0x45, 0xd2, 0xe3, 0x76, 0x48, 0x40, 0x31, - 0x61, 0x7f, 0x78, 0xd2, 0xb5, 0x8a, 0x6b, 0x1b, - 0x9c, 0x7e, 0xf4, 0x64, 0xf5, 0xa0, 0x1b, 0x47, - 0xe4, 0x2e, 0xc3, 0x73, 0x63, 0x22, 0x44, 0x5e, - 0x8e, 0x22, 0x40, 0xca, 0x5e, 0x69, 0xe2, 0xc7, - 0x8b, 0x32, 0x39, 0xec, 0xfa, 0xb2, 0x16, 0x49} }, - - { "rfc4231 4.4", "sha384", - hmac_test_case_keys[4], 20, - hmac_test_case_data[2], 50, - {0x88, 0x06, 0x26, 0x08, 0xd3, 0xe6, 0xad, 0x8a, - 0x0a, 0xa2, 0xac, 0xe0, 0x14, 0xc8, 0xa8, 0x6f, - 0x0a, 0xa6, 0x35, 0xd9, 0x47, 0xac, 0x9f, 0xeb, - 0xe8, 0x3e, 0xf4, 0xe5, 0x59, 0x66, 0x14, 0x4b, - 0x2a, 0x5a, 0xb3, 0x9d, 0xc1, 0x38, 0x14, 0xb9, - 0x4e, 0x3a, 0xb6, 0xe1, 0x01, 0xa3, 0x4f, 0x27} }, - - { "rfc4231 4.5", "sha384", - hmac_test_case_keys[2], 25, - hmac_test_case_data[3], 50, - {0x3e, 0x8a, 0x69, 0xb7, 0x78, 0x3c, 0x25, 0x85, - 0x19, 0x33, 0xab, 0x62, 0x90, 0xaf, 0x6c, 0xa7, - 0x7a, 0x99, 0x81, 0x48, 0x08, 0x50, 0x00, 0x9c, - 0xc5, 0x57, 0x7c, 0x6e, 0x1f, 0x57, 0x3b, 0x4e, - 0x68, 0x01, 0xdd, 0x23, 0xc4, 0xa7, 0xd6, 0x79, - 0xcc, 0xf8, 0xa3, 0x86, 0xc6, 0x74, 0xcf, 0xfb} }, - - { "rfc4231 4.7", "sha384", - hmac_test_case_keys[4], 131, - hmac_test_case_data[5], 54, - {0x4e, 0xce, 0x08, 0x44, 0x85, 0x81, 0x3e, 0x90, - 0x88, 0xd2, 0xc6, 0x3a, 0x04, 0x1b, 0xc5, 0xb4, - 0x4f, 0x9e, 0xf1, 0x01, 0x2a, 0x2b, 0x58, 0x8f, - 0x3c, 0xd1, 0x1f, 0x05, 0x03, 0x3a, 0xc4, 0xc6, - 0x0c, 0x2e, 0xf6, 0xab, 0x40, 0x30, 0xfe, 0x82, - 0x96, 0x24, 0x8d, 0xf1, 0x63, 0xf4, 0x49, 0x52} }, - - { "rfc4231 4.8", "sha384", - hmac_test_case_keys[4], 131, - hmac_test_case_data[7], 152, - {0x66, 0x17, 0x17, 0x8e, 0x94, 0x1f, 0x02, 0x0d, - 0x35, 0x1e, 0x2f, 0x25, 0x4e, 0x8f, 0xd3, 0x2c, - 0x60, 0x24, 0x20, 0xfe, 0xb0, 0xb8, 0xfb, 0x9a, - 0xdc, 0xce, 0xbb, 0x82, 0x46, 0x1e, 0x99, 0xc5, - 0xa6, 0x78, 0xcc, 0x31, 0xe7, 0x99, 0x17, 0x6d, - 0x38, 0x60, 0xe6, 0x11, 0x0c, 0x46, 0x52, 0x3e} }, -#endif /* LTC_TEST_EXT */ - - { "rfc4231 4.2", "sha512", - hmac_test_case_keys[0], 20, - hmac_test_case_data[0], 8, - {0x87, 0xaa, 0x7c, 0xde, 0xa5, 0xef, 0x61, 0x9d, - 0x4f, 0xf0, 0xb4, 0x24, 0x1a, 0x1d, 0x6c, 0xb0, - 0x23, 0x79, 0xf4, 0xe2, 0xce, 0x4e, 0xc2, 0x78, - 0x7a, 0xd0, 0xb3, 0x05, 0x45, 0xe1, 0x7c, 0xde, - 0xda, 0xa8, 0x33, 0xb7, 0xd6, 0xb8, 0xa7, 0x02, - 0x03, 0x8b, 0x27, 0x4e, 0xae, 0xa3, 0xf4, 0xe4, - 0xbe, 0x9d, 0x91, 0x4e, 0xeb, 0x61, 0xf1, 0x70, - 0x2e, 0x69, 0x6c, 0x20, 0x3a, 0x12, 0x68, 0x54} }, - -#ifdef LTC_TEST_EXT - { "rfc4231 4.3", "sha512", - hmac_test_case_keys[1], 4, - hmac_test_case_data[1], 28, - {0x16, 0x4b, 0x7a, 0x7b, 0xfc, 0xf8, 0x19, 0xe2, - 0xe3, 0x95, 0xfb, 0xe7, 0x3b, 0x56, 0xe0, 0xa3, - 0x87, 0xbd, 0x64, 0x22, 0x2e, 0x83, 0x1f, 0xd6, - 0x10, 0x27, 0x0c, 0xd7, 0xea, 0x25, 0x05, 0x54, - 0x97, 0x58, 0xbf, 0x75, 0xc0, 0x5a, 0x99, 0x4a, - 0x6d, 0x03, 0x4f, 0x65, 0xf8, 0xf0, 0xe6, 0xfd, - 0xca, 0xea, 0xb1, 0xa3, 0x4d, 0x4a, 0x6b, 0x4b, - 0x63, 0x6e, 0x07, 0x0a, 0x38, 0xbc, 0xe7, 0x37} }, - - { "rfc4231 4.4", "sha512", - hmac_test_case_keys[4], 20, - hmac_test_case_data[2], 50, - {0xfa, 0x73, 0xb0, 0x08, 0x9d, 0x56, 0xa2, 0x84, - 0xef, 0xb0, 0xf0, 0x75, 0x6c, 0x89, 0x0b, 0xe9, - 0xb1, 0xb5, 0xdb, 0xdd, 0x8e, 0xe8, 0x1a, 0x36, - 0x55, 0xf8, 0x3e, 0x33, 0xb2, 0x27, 0x9d, 0x39, - 0xbf, 0x3e, 0x84, 0x82, 0x79, 0xa7, 0x22, 0xc8, - 0x06, 0xb4, 0x85, 0xa4, 0x7e, 0x67, 0xc8, 0x07, - 0xb9, 0x46, 0xa3, 0x37, 0xbe, 0xe8, 0x94, 0x26, - 0x74, 0x27, 0x88, 0x59, 0xe1, 0x32, 0x92, 0xfb} }, - - { "rfc4231 4.5", "sha512", - hmac_test_case_keys[2], 25, - hmac_test_case_data[3], 50, - {0xb0, 0xba, 0x46, 0x56, 0x37, 0x45, 0x8c, 0x69, - 0x90, 0xe5, 0xa8, 0xc5, 0xf6, 0x1d, 0x4a, 0xf7, - 0xe5, 0x76, 0xd9, 0x7f, 0xf9, 0x4b, 0x87, 0x2d, - 0xe7, 0x6f, 0x80, 0x50, 0x36, 0x1e, 0xe3, 0xdb, - 0xa9, 0x1c, 0xa5, 0xc1, 0x1a, 0xa2, 0x5e, 0xb4, - 0xd6, 0x79, 0x27, 0x5c, 0xc5, 0x78, 0x80, 0x63, - 0xa5, 0xf1, 0x97, 0x41, 0x12, 0x0c, 0x4f, 0x2d, - 0xe2, 0xad, 0xeb, 0xeb, 0x10, 0xa2, 0x98, 0xdd} }, - - { "rfc4231 4.7", "sha512", - hmac_test_case_keys[4], 131, - hmac_test_case_data[5], 54, - {0x80, 0xb2, 0x42, 0x63, 0xc7, 0xc1, 0xa3, 0xeb, - 0xb7, 0x14, 0x93, 0xc1, 0xdd, 0x7b, 0xe8, 0xb4, - 0x9b, 0x46, 0xd1, 0xf4, 0x1b, 0x4a, 0xee, 0xc1, - 0x12, 0x1b, 0x01, 0x37, 0x83, 0xf8, 0xf3, 0x52, - 0x6b, 0x56, 0xd0, 0x37, 0xe0, 0x5f, 0x25, 0x98, - 0xbd, 0x0f, 0xd2, 0x21, 0x5d, 0x6a, 0x1e, 0x52, - 0x95, 0xe6, 0x4f, 0x73, 0xf6, 0x3f, 0x0a, 0xec, - 0x8b, 0x91, 0x5a, 0x98, 0x5d, 0x78, 0x65, 0x98} }, - - { "rfc4231 4.8", "sha512", - hmac_test_case_keys[4], 131, - hmac_test_case_data[7], 152, - {0xe3, 0x7b, 0x6a, 0x77, 0x5d, 0xc8, 0x7d, 0xba, - 0xa4, 0xdf, 0xa9, 0xf9, 0x6e, 0x5e, 0x3f, 0xfd, - 0xde, 0xbd, 0x71, 0xf8, 0x86, 0x72, 0x89, 0x86, - 0x5d, 0xf5, 0xa3, 0x2d, 0x20, 0xcd, 0xc9, 0x44, - 0xb6, 0x02, 0x2c, 0xac, 0x3c, 0x49, 0x82, 0xb1, - 0x0d, 0x5e, 0xeb, 0x55, 0xc3, 0xe4, 0xde, 0x15, - 0x13, 0x46, 0x76, 0xfb, 0x6d, 0xe0, 0x44, 0x60, - 0x65, 0xc9, 0x74, 0x40, 0xfa, 0x8c, 0x6a, 0x58} }, -#endif /* LTC_TEST_EXT */ - - }; - - unsigned long outlen; - int err; - int tested=0,failed=0; - for(i=0; i < (int)(sizeof(cases) / sizeof(cases[0])); i++) { - int hash = find_hash(cases[i].algo); - if (hash == -1) continue; - ++tested; - outlen = sizeof(digest); - if((err = hmac_memory(hash, cases[i].key, cases[i].keylen, cases[i].data, cases[i].datalen, digest, &outlen)) != CRYPT_OK) { -#ifdef LTC_TEST_DBG - printf("HMAC-%s test %s, %s\n", cases[i].algo, cases[i].num, error_to_string(err)); -#endif - return err; - } - - if(compare_testvector(digest, outlen, cases[i].digest, (size_t)hash_descriptor[hash].hashsize, cases[i].num, i)) { - failed++; - } - } - - if (failed != 0) { - return CRYPT_FAIL_TESTVECTOR; - } else if (tested == 0) { - return CRYPT_NOP; - } else { - return CRYPT_OK; - } - #endif -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/omac/omac_done.c b/src/libtomcrypt/src/mac/omac/omac_done.c deleted file mode 100644 index dc8d311a90..0000000000 --- a/src/libtomcrypt/src/mac/omac/omac_done.c +++ /dev/null @@ -1,84 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file omac_done.c - OMAC1 support, terminate a stream, Tom St Denis -*/ - -#ifdef LTC_OMAC - -/** - Terminate an OMAC stream - @param omac The OMAC state - @param out [out] Destination for the authentication tag - @param outlen [in/out] The max size and resulting size of the authentication tag - @return CRYPT_OK if successful -*/ -int omac_done(omac_state *omac, unsigned char *out, unsigned long *outlen) -{ - int err, mode; - unsigned x; - - LTC_ARGCHK(omac != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - if ((err = cipher_is_valid(omac->cipher_idx)) != CRYPT_OK) { - return err; - } - - if ((omac->buflen > (int)sizeof(omac->block)) || (omac->buflen < 0) || - (omac->blklen > (int)sizeof(omac->block)) || (omac->buflen > omac->blklen)) { - return CRYPT_INVALID_ARG; - } - - /* figure out mode */ - if (omac->buflen != omac->blklen) { - /* add the 0x80 byte */ - omac->block[omac->buflen++] = 0x80; - - /* pad with 0x00 */ - while (omac->buflen < omac->blklen) { - omac->block[omac->buflen++] = 0x00; - } - mode = 1; - } else { - mode = 0; - } - - /* now xor prev + Lu[mode] */ - for (x = 0; x < (unsigned)omac->blklen; x++) { - omac->block[x] ^= omac->prev[x] ^ omac->Lu[mode][x]; - } - - /* encrypt it */ - if ((err = cipher_descriptor[omac->cipher_idx].ecb_encrypt(omac->block, omac->block, &omac->key)) != CRYPT_OK) { - return err; - } - cipher_descriptor[omac->cipher_idx].done(&omac->key); - - /* output it */ - for (x = 0; x < (unsigned)omac->blklen && x < *outlen; x++) { - out[x] = omac->block[x]; - } - *outlen = x; - -#ifdef LTC_CLEAN_STACK - zeromem(omac, sizeof(*omac)); -#endif - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/omac/omac_file.c b/src/libtomcrypt/src/mac/omac/omac_file.c deleted file mode 100644 index 336c89231a..0000000000 --- a/src/libtomcrypt/src/mac/omac/omac_file.c +++ /dev/null @@ -1,97 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file omac_file.c - OMAC1 support, process a file, Tom St Denis -*/ - -#ifdef LTC_OMAC - -/** - OMAC a file - @param cipher The index of the cipher desired - @param key The secret key - @param keylen The length of the secret key (octets) - @param filename The name of the file you wish to OMAC - @param out [out] Where the authentication tag is to be stored - @param outlen [in/out] The max size and resulting size of the authentication tag - @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled -*/ -int omac_file(int cipher, - const unsigned char *key, unsigned long keylen, - const char *filename, - unsigned char *out, unsigned long *outlen) -{ -#ifdef LTC_NO_FILE - LTC_UNUSED_PARAM(cipher); - LTC_UNUSED_PARAM(key); - LTC_UNUSED_PARAM(keylen); - LTC_UNUSED_PARAM(filename); - LTC_UNUSED_PARAM(out); - LTC_UNUSED_PARAM(outlen); - return CRYPT_NOP; -#else - size_t x; - int err; - omac_state omac; - FILE *in; - unsigned char *buf; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(filename != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { - return CRYPT_MEM; - } - - if ((err = omac_init(&omac, cipher, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - - in = fopen(filename, "rb"); - if (in == NULL) { - err = CRYPT_FILE_NOTFOUND; - goto LBL_ERR; - } - - do { - x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); - if ((err = omac_process(&omac, buf, (unsigned long)x)) != CRYPT_OK) { - fclose(in); - goto LBL_CLEANBUF; - } - } while (x == LTC_FILE_READ_BUFSIZE); - - if (fclose(in) != 0) { - err = CRYPT_ERROR; - goto LBL_CLEANBUF; - } - - err = omac_done(&omac, out, outlen); - -LBL_CLEANBUF: - zeromem(buf, LTC_FILE_READ_BUFSIZE); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(&omac, sizeof(omac_state)); -#endif - XFREE(buf); - return err; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/omac/omac_init.c b/src/libtomcrypt/src/mac/omac/omac_init.c deleted file mode 100644 index 91c373252a..0000000000 --- a/src/libtomcrypt/src/mac/omac/omac_init.c +++ /dev/null @@ -1,99 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file omac_init.c - OMAC1 support, initialize state, by Tom St Denis -*/ - - -#ifdef LTC_OMAC - -/** - Initialize an OMAC state - @param omac The OMAC state to initialize - @param cipher The index of the desired cipher - @param key The secret key - @param keylen The length of the secret key (octets) - @return CRYPT_OK if successful -*/ -int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned long keylen) -{ - int err, x, y, mask, msb, len; - - LTC_ARGCHK(omac != NULL); - LTC_ARGCHK(key != NULL); - - /* schedule the key */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - -#ifdef LTC_FAST - if (cipher_descriptor[cipher].block_length % sizeof(LTC_FAST_TYPE)) { - return CRYPT_INVALID_ARG; - } -#endif - - /* now setup the system */ - switch (cipher_descriptor[cipher].block_length) { - case 8: mask = 0x1B; - len = 8; - break; - case 16: mask = 0x87; - len = 16; - break; - default: return CRYPT_INVALID_ARG; - } - - if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &omac->key)) != CRYPT_OK) { - return err; - } - - /* ok now we need Lu and Lu^2 [calc one from the other] */ - - /* first calc L which is Ek(0) */ - zeromem(omac->Lu[0], cipher_descriptor[cipher].block_length); - if ((err = cipher_descriptor[cipher].ecb_encrypt(omac->Lu[0], omac->Lu[0], &omac->key)) != CRYPT_OK) { - return err; - } - - /* now do the mults, whoopy! */ - for (x = 0; x < 2; x++) { - /* if msb(L * u^(x+1)) = 0 then just shift, otherwise shift and xor constant mask */ - msb = omac->Lu[x][0] >> 7; - - /* shift left */ - for (y = 0; y < (len - 1); y++) { - omac->Lu[x][y] = ((omac->Lu[x][y] << 1) | (omac->Lu[x][y+1] >> 7)) & 255; - } - omac->Lu[x][len - 1] = ((omac->Lu[x][len - 1] << 1) ^ (msb ? mask : 0)) & 255; - - /* copy up as require */ - if (x == 0) { - XMEMCPY(omac->Lu[1], omac->Lu[0], sizeof(omac->Lu[0])); - } - } - - /* setup state */ - omac->cipher_idx = cipher; - omac->buflen = 0; - omac->blklen = len; - zeromem(omac->prev, sizeof(omac->prev)); - zeromem(omac->block, sizeof(omac->block)); - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/omac/omac_memory.c b/src/libtomcrypt/src/mac/omac/omac_memory.c deleted file mode 100644 index edc44aac24..0000000000 --- a/src/libtomcrypt/src/mac/omac/omac_memory.c +++ /dev/null @@ -1,83 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file omac_memory.c - OMAC1 support, process a block of memory, Tom St Denis -*/ - -#ifdef LTC_OMAC - -/** - OMAC a block of memory - @param cipher The index of the desired cipher - @param key The secret key - @param keylen The length of the secret key (octets) - @param in The data to send through OMAC - @param inlen The length of the data to send through OMAC (octets) - @param out [out] The destination of the authentication tag - @param outlen [in/out] The max size and resulting size of the authentication tag (octets) - @return CRYPT_OK if successful -*/ -int omac_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - int err; - omac_state *omac; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* is the cipher valid? */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - - /* Use accelerator if found */ - if (cipher_descriptor[cipher].omac_memory != NULL) { - return cipher_descriptor[cipher].omac_memory(key, keylen, in, inlen, out, outlen); - } - - /* allocate ram for omac state */ - omac = XMALLOC(sizeof(omac_state)); - if (omac == NULL) { - return CRYPT_MEM; - } - - /* omac process the message */ - if ((err = omac_init(omac, cipher, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = omac_process(omac, in, inlen)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = omac_done(omac, out, outlen)) != CRYPT_OK) { - goto LBL_ERR; - } - - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(omac, sizeof(omac_state)); -#endif - - XFREE(omac); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/omac/omac_memory_multi.c b/src/libtomcrypt/src/mac/omac/omac_memory_multi.c deleted file mode 100644 index eec14ba43c..0000000000 --- a/src/libtomcrypt/src/mac/omac/omac_memory_multi.c +++ /dev/null @@ -1,88 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" -#include - -/** - @file omac_memory_multi.c - OMAC1 support, process multiple blocks of memory, Tom St Denis -*/ - -#ifdef LTC_OMAC - -/** - OMAC multiple blocks of memory - @param cipher The index of the desired cipher - @param key The secret key - @param keylen The length of the secret key (octets) - @param out [out] The destination of the authentication tag - @param outlen [in/out] The max size and resulting size of the authentication tag (octets) - @param in The data to send through OMAC - @param inlen The length of the data to send through OMAC (octets) - @param ... tuples of (data,len) pairs to OMAC, terminated with a (NULL,x) (x=don't care) - @return CRYPT_OK if successful -*/ -int omac_memory_multi(int cipher, - const unsigned char *key, unsigned long keylen, - unsigned char *out, unsigned long *outlen, - const unsigned char *in, unsigned long inlen, ...) -{ - int err; - omac_state *omac; - va_list args; - const unsigned char *curptr; - unsigned long curlen; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* allocate ram for omac state */ - omac = XMALLOC(sizeof(omac_state)); - if (omac == NULL) { - return CRYPT_MEM; - } - - /* omac process the message */ - if ((err = omac_init(omac, cipher, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - va_start(args, inlen); - curptr = in; - curlen = inlen; - for (;;) { - /* process buf */ - if ((err = omac_process(omac, curptr, curlen)) != CRYPT_OK) { - goto LBL_ERR; - } - /* step to next */ - curptr = va_arg(args, const unsigned char*); - if (curptr == NULL) { - break; - } - curlen = va_arg(args, unsigned long); - } - if ((err = omac_done(omac, out, outlen)) != CRYPT_OK) { - goto LBL_ERR; - } -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(omac, sizeof(omac_state)); -#endif - XFREE(omac); - va_end(args); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/omac/omac_process.c b/src/libtomcrypt/src/mac/omac/omac_process.c deleted file mode 100644 index 2fb3615cc8..0000000000 --- a/src/libtomcrypt/src/mac/omac/omac_process.c +++ /dev/null @@ -1,90 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file omac_process.c - OMAC1 support, process data, Tom St Denis -*/ - - -#ifdef LTC_OMAC - -/** - Process data through OMAC - @param omac The OMAC state - @param in The input data to send through OMAC - @param inlen The length of the input (octets) - @return CRYPT_OK if successful -*/ -int omac_process(omac_state *omac, const unsigned char *in, unsigned long inlen) -{ - unsigned long n, x; - int err; - - LTC_ARGCHK(omac != NULL); - LTC_ARGCHK(in != NULL); - if ((err = cipher_is_valid(omac->cipher_idx)) != CRYPT_OK) { - return err; - } - - if ((omac->buflen > (int)sizeof(omac->block)) || (omac->buflen < 0) || - (omac->blklen > (int)sizeof(omac->block)) || (omac->buflen > omac->blklen)) { - return CRYPT_INVALID_ARG; - } - -#ifdef LTC_FAST - { - unsigned long blklen = cipher_descriptor[omac->cipher_idx].block_length; - - if (omac->buflen == 0 && inlen > blklen) { - unsigned long y; - for (x = 0; x < (inlen - blklen); x += blklen) { - for (y = 0; y < blklen; y += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&omac->prev[y])) ^= *(LTC_FAST_TYPE_PTR_CAST(&in[y])); - } - in += blklen; - if ((err = cipher_descriptor[omac->cipher_idx].ecb_encrypt(omac->prev, omac->prev, &omac->key)) != CRYPT_OK) { - return err; - } - } - inlen -= x; - } - } -#endif - - while (inlen != 0) { - /* ok if the block is full we xor in prev, encrypt and replace prev */ - if (omac->buflen == omac->blklen) { - for (x = 0; x < (unsigned long)omac->blklen; x++) { - omac->block[x] ^= omac->prev[x]; - } - if ((err = cipher_descriptor[omac->cipher_idx].ecb_encrypt(omac->block, omac->prev, &omac->key)) != CRYPT_OK) { - return err; - } - omac->buflen = 0; - } - - /* add bytes */ - n = MIN(inlen, (unsigned long)(omac->blklen - omac->buflen)); - XMEMCPY(omac->block + omac->buflen, in, n); - omac->buflen += n; - inlen -= n; - in += n; - } - - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/omac/omac_test.c b/src/libtomcrypt/src/mac/omac/omac_test.c deleted file mode 100644 index b0fc88cfac..0000000000 --- a/src/libtomcrypt/src/mac/omac/omac_test.c +++ /dev/null @@ -1,103 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file omac_test.c - OMAC1 support, self-test, by Tom St Denis -*/ - -#ifdef LTC_OMAC - -/** - Test the OMAC setup - @return CRYPT_OK if successful, CRYPT_NOP if tests have been disabled -*/ -int omac_test(void) -{ -#if !defined(LTC_TEST) - return CRYPT_NOP; -#else - static const struct { - int keylen, msglen; - unsigned char key[16], msg[64], tag[16]; - } tests[] = { - { 16, 0, - { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, - 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, - { 0x00 }, - { 0xbb, 0x1d, 0x69, 0x29, 0xe9, 0x59, 0x37, 0x28, - 0x7f, 0xa3, 0x7d, 0x12, 0x9b, 0x75, 0x67, 0x46 } - }, - { 16, 16, - { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, - 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, - { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, - 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a }, - { 0x07, 0x0a, 0x16, 0xb4, 0x6b, 0x4d, 0x41, 0x44, - 0xf7, 0x9b, 0xdd, 0x9d, 0xd0, 0x4a, 0x28, 0x7c } - }, - { 16, 40, - { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, - 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, - { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, - 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, - 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, - 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, - 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11 }, - { 0xdf, 0xa6, 0x67, 0x47, 0xde, 0x9a, 0xe6, 0x30, - 0x30, 0xca, 0x32, 0x61, 0x14, 0x97, 0xc8, 0x27 } - }, - { 16, 64, - { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, - 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, - { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, - 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, - 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, - 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, - 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, - 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef, - 0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, - 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 }, - { 0x51, 0xf0, 0xbe, 0xbf, 0x7e, 0x3b, 0x9d, 0x92, - 0xfc, 0x49, 0x74, 0x17, 0x79, 0x36, 0x3c, 0xfe } - } - - }; - unsigned char out[16]; - int x, err, idx; - unsigned long len; - - - /* AES can be under rijndael or aes... try to find it */ - if ((idx = find_cipher("aes")) == -1) { - if ((idx = find_cipher("rijndael")) == -1) { - return CRYPT_NOP; - } - } - - for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - len = sizeof(out); - if ((err = omac_memory(idx, tests[x].key, tests[x].keylen, tests[x].msg, tests[x].msglen, out, &len)) != CRYPT_OK) { - return err; - } - - if (compare_testvector(out, len, tests[x].tag, sizeof(tests[x].tag), "OMAC", x) != 0) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/pelican/pelican.c b/src/libtomcrypt/src/mac/pelican/pelican.c deleted file mode 100644 index c0872b98ef..0000000000 --- a/src/libtomcrypt/src/mac/pelican/pelican.c +++ /dev/null @@ -1,164 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pelican.c - Pelican MAC, initialize state, by Tom St Denis -*/ - -#ifdef LTC_PELICAN - -#define __LTC_AES_TAB_C__ -#define ENCRYPT_ONLY -#define PELI_TAB -#include "../../ciphers/aes/aes_tab.c" - -/** - Initialize a Pelican state - @param pelmac The Pelican state to initialize - @param key The secret key - @param keylen The length of the secret key (octets) - @return CRYPT_OK if successful -*/ -int pelican_init(pelican_state *pelmac, const unsigned char *key, unsigned long keylen) -{ - int err; - - LTC_ARGCHK(pelmac != NULL); - LTC_ARGCHK(key != NULL); - -#ifdef LTC_FAST - if (16 % sizeof(LTC_FAST_TYPE)) { - return CRYPT_INVALID_ARG; - } -#endif - - if ((err = aes_setup(key, keylen, 0, &pelmac->K)) != CRYPT_OK) { - return err; - } - - zeromem(pelmac->state, 16); - aes_ecb_encrypt(pelmac->state, pelmac->state, &pelmac->K); - pelmac->buflen = 0; - - return CRYPT_OK; -} - -static void _four_rounds(pelican_state *pelmac) -{ - ulong32 s0, s1, s2, s3, t0, t1, t2, t3; - int r; - - LOAD32H(s0, pelmac->state ); - LOAD32H(s1, pelmac->state + 4); - LOAD32H(s2, pelmac->state + 8); - LOAD32H(s3, pelmac->state + 12); - for (r = 0; r < 4; r++) { - t0 = - Te0(byte(s0, 3)) ^ - Te1(byte(s1, 2)) ^ - Te2(byte(s2, 1)) ^ - Te3(byte(s3, 0)); - t1 = - Te0(byte(s1, 3)) ^ - Te1(byte(s2, 2)) ^ - Te2(byte(s3, 1)) ^ - Te3(byte(s0, 0)); - t2 = - Te0(byte(s2, 3)) ^ - Te1(byte(s3, 2)) ^ - Te2(byte(s0, 1)) ^ - Te3(byte(s1, 0)); - t3 = - Te0(byte(s3, 3)) ^ - Te1(byte(s0, 2)) ^ - Te2(byte(s1, 1)) ^ - Te3(byte(s2, 0)); - s0 = t0; s1 = t1; s2 = t2; s3 = t3; - } - STORE32H(s0, pelmac->state ); - STORE32H(s1, pelmac->state + 4); - STORE32H(s2, pelmac->state + 8); - STORE32H(s3, pelmac->state + 12); -} - -/** - Process a block of text through Pelican - @param pelmac The Pelican MAC state - @param in The input - @param inlen The length input (octets) - @return CRYPT_OK on success - */ -int pelican_process(pelican_state *pelmac, const unsigned char *in, unsigned long inlen) -{ - - LTC_ARGCHK(pelmac != NULL); - LTC_ARGCHK(in != NULL); - - /* check range */ - if (pelmac->buflen < 0 || pelmac->buflen > 15) { - return CRYPT_INVALID_ARG; - } - -#ifdef LTC_FAST - if (pelmac->buflen == 0) { - while (inlen & ~15) { - int x; - for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pelmac->state + x)) ^= *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)in + x)); - } - _four_rounds(pelmac); - in += 16; - inlen -= 16; - } - } -#endif - - while (inlen--) { - pelmac->state[pelmac->buflen++] ^= *in++; - if (pelmac->buflen == 16) { - _four_rounds(pelmac); - pelmac->buflen = 0; - } - } - return CRYPT_OK; -} - -/** - Terminate Pelican MAC - @param pelmac The Pelican MAC state - @param out [out] The TAG - @return CRYPT_OK on sucess -*/ -int pelican_done(pelican_state *pelmac, unsigned char *out) -{ - LTC_ARGCHK(pelmac != NULL); - LTC_ARGCHK(out != NULL); - - /* check range */ - if (pelmac->buflen < 0 || pelmac->buflen > 16) { - return CRYPT_INVALID_ARG; - } - - if (pelmac->buflen == 16) { - _four_rounds(pelmac); - pelmac->buflen = 0; - } - pelmac->state[pelmac->buflen++] ^= 0x80; - aes_ecb_encrypt(pelmac->state, out, &pelmac->K); - aes_done(&pelmac->K); - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/pelican/pelican_memory.c b/src/libtomcrypt/src/mac/pelican/pelican_memory.c deleted file mode 100644 index 9f6d1dbde9..0000000000 --- a/src/libtomcrypt/src/mac/pelican/pelican_memory.c +++ /dev/null @@ -1,57 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pelican_memory.c - Pelican MAC, MAC a block of memory, by Tom St Denis -*/ - -#ifdef LTC_PELICAN - -/** - Pelican block of memory - @param key The key for the MAC - @param keylen The length of the key (octets) - @param in The input to MAC - @param inlen The length of the input (octets) - @param out [out] The output TAG - @return CRYPT_OK on success -*/ -int pelican_memory(const unsigned char *key, unsigned long keylen, - const unsigned char *in, unsigned long inlen, - unsigned char *out) -{ - pelican_state *pel; - int err; - - pel = XMALLOC(sizeof(*pel)); - if (pel == NULL) { - return CRYPT_MEM; - } - - if ((err = pelican_init(pel, key, keylen)) != CRYPT_OK) { - XFREE(pel); - return err; - } - if ((err = pelican_process(pel, in ,inlen)) != CRYPT_OK) { - XFREE(pel); - return err; - } - err = pelican_done(pel, out); - XFREE(pel); - return err; -} - - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/pelican/pelican_test.c b/src/libtomcrypt/src/mac/pelican/pelican_test.c deleted file mode 100644 index efdeb2adf3..0000000000 --- a/src/libtomcrypt/src/mac/pelican/pelican_test.c +++ /dev/null @@ -1,113 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pelican_test.c - Pelican MAC, test, by Tom St Denis -*/ - -#ifdef LTC_PELICAN - -int pelican_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - unsigned char K[32], MSG[64], T[16]; - int keylen, ptlen; - } tests[] = { -/* K=16, M=0 */ -{ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, - { 0 }, - { 0xeb, 0x58, 0x37, 0x15, 0xf8, 0x34, 0xde, 0xe5, - 0xa4, 0xd1, 0x6e, 0xe4, 0xb9, 0xd7, 0x76, 0x0e, }, - 16, 0 -}, - -/* K=16, M=3 */ -{ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, - { 0x00, 0x01, 0x02 }, - { 0x1c, 0x97, 0x40, 0x60, 0x6c, 0x58, 0x17, 0x2d, - 0x03, 0x94, 0x19, 0x70, 0x81, 0xc4, 0x38, 0x54, }, - 16, 3 -}, - -/* K=16, M=16 */ -{ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, - { 0x03, 0xcc, 0x46, 0xb8, 0xac, 0xa7, 0x9c, 0x36, - 0x1e, 0x8c, 0x6e, 0xa6, 0x7b, 0x89, 0x32, 0x49, }, - 16, 16 -}, - -/* K=16, M=32 */ -{ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F }, - { 0x89, 0xcc, 0x36, 0x58, 0x1b, 0xdd, 0x4d, 0xb5, - 0x78, 0xbb, 0xac, 0xf0, 0xff, 0x8b, 0x08, 0x15, }, - 16, 32 -}, - -/* K=16, M=35 */ -{ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, - 0x20, 0x21, 0x23 }, - { 0x4a, 0x7d, 0x45, 0x4d, 0xcd, 0xb5, 0xda, 0x8d, - 0x48, 0x78, 0x16, 0x48, 0x5d, 0x45, 0x95, 0x99, }, - 16, 35 -}, -}; - int x, err; - unsigned char out[16]; - pelican_state pel; - - for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - if ((err = pelican_init(&pel, tests[x].K, tests[x].keylen)) != CRYPT_OK) { - return err; - } - if ((err = pelican_process(&pel, tests[x].MSG, tests[x].ptlen)) != CRYPT_OK) { - return err; - } - if ((err = pelican_done(&pel, out)) != CRYPT_OK) { - return err; - } - - if (compare_testvector(out, 16, tests[x].T, 16, "PELICAN", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif -} - - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/pmac/pmac_done.c b/src/libtomcrypt/src/mac/pmac/pmac_done.c deleted file mode 100644 index f3164cee44..0000000000 --- a/src/libtomcrypt/src/mac/pmac/pmac_done.c +++ /dev/null @@ -1,72 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pmac_done.c - PMAC implementation, terminate a session, by Tom St Denis -*/ - -#ifdef LTC_PMAC - -int pmac_done(pmac_state *state, unsigned char *out, unsigned long *outlen) -{ - int err, x; - - LTC_ARGCHK(state != NULL); - LTC_ARGCHK(out != NULL); - if ((err = cipher_is_valid(state->cipher_idx)) != CRYPT_OK) { - return err; - } - - if ((state->buflen > (int)sizeof(state->block)) || (state->buflen < 0) || - (state->block_len > (int)sizeof(state->block)) || (state->buflen > state->block_len)) { - return CRYPT_INVALID_ARG; - } - - - /* handle padding. If multiple xor in L/x */ - - if (state->buflen == state->block_len) { - /* xor Lr against the checksum */ - for (x = 0; x < state->block_len; x++) { - state->checksum[x] ^= state->block[x] ^ state->Lr[x]; - } - } else { - /* otherwise xor message bytes then the 0x80 byte */ - for (x = 0; x < state->buflen; x++) { - state->checksum[x] ^= state->block[x]; - } - state->checksum[x] ^= 0x80; - } - - /* encrypt it */ - if ((err = cipher_descriptor[state->cipher_idx].ecb_encrypt(state->checksum, state->checksum, &state->key)) != CRYPT_OK) { - return err; - } - cipher_descriptor[state->cipher_idx].done(&state->key); - - /* store it */ - for (x = 0; x < state->block_len && x < (int)*outlen; x++) { - out[x] = state->checksum[x]; - } - *outlen = x; - -#ifdef LTC_CLEAN_STACK - zeromem(state, sizeof(*state)); -#endif - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/pmac/pmac_file.c b/src/libtomcrypt/src/mac/pmac/pmac_file.c deleted file mode 100644 index 7f49055175..0000000000 --- a/src/libtomcrypt/src/mac/pmac/pmac_file.c +++ /dev/null @@ -1,98 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pmac_file.c - PMAC implementation, process a file, by Tom St Denis -*/ - -#ifdef LTC_PMAC - -/** - PMAC a file - @param cipher The index of the cipher desired - @param key The secret key - @param keylen The length of the secret key (octets) - @param filename The name of the file to send through PMAC - @param out [out] Destination for the authentication tag - @param outlen [in/out] Max size and resulting size of the authentication tag - @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled -*/ -int pmac_file(int cipher, - const unsigned char *key, unsigned long keylen, - const char *filename, - unsigned char *out, unsigned long *outlen) -{ -#ifdef LTC_NO_FILE - LTC_UNUSED_PARAM(cipher); - LTC_UNUSED_PARAM(key); - LTC_UNUSED_PARAM(keylen); - LTC_UNUSED_PARAM(filename); - LTC_UNUSED_PARAM(out); - LTC_UNUSED_PARAM(outlen); - return CRYPT_NOP; -#else - size_t x; - int err; - pmac_state pmac; - FILE *in; - unsigned char *buf; - - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(filename != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { - return CRYPT_MEM; - } - - if ((err = pmac_init(&pmac, cipher, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - - in = fopen(filename, "rb"); - if (in == NULL) { - err = CRYPT_FILE_NOTFOUND; - goto LBL_ERR; - } - - do { - x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); - if ((err = pmac_process(&pmac, buf, (unsigned long)x)) != CRYPT_OK) { - fclose(in); - goto LBL_CLEANBUF; - } - } while (x == LTC_FILE_READ_BUFSIZE); - - if (fclose(in) != 0) { - err = CRYPT_ERROR; - goto LBL_CLEANBUF; - } - - err = pmac_done(&pmac, out, outlen); - -LBL_CLEANBUF: - zeromem(buf, LTC_FILE_READ_BUFSIZE); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(&pmac, sizeof(pmac_state)); -#endif - XFREE(buf); - return err; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/pmac/pmac_init.c b/src/libtomcrypt/src/mac/pmac/pmac_init.c deleted file mode 100644 index 9cb0cfd69e..0000000000 --- a/src/libtomcrypt/src/mac/pmac/pmac_init.c +++ /dev/null @@ -1,148 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pmac_init.c - PMAC implementation, initialize state, by Tom St Denis -*/ - -#ifdef LTC_PMAC - -static const struct { - int len; - unsigned char poly_div[MAXBLOCKSIZE], - poly_mul[MAXBLOCKSIZE]; -} polys[] = { -{ - 8, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B } -}, { - 16, - { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43 }, - { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87 } -} -}; - -/** - Initialize a PMAC state - @param pmac The PMAC state to initialize - @param cipher The index of the desired cipher - @param key The secret key - @param keylen The length of the secret key (octets) - @return CRYPT_OK if successful -*/ -int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned long keylen) -{ - int poly, x, y, m, err; - unsigned char *L; - - LTC_ARGCHK(pmac != NULL); - LTC_ARGCHK(key != NULL); - - /* valid cipher? */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - - /* determine which polys to use */ - pmac->block_len = cipher_descriptor[cipher].block_length; - for (poly = 0; poly < (int)(sizeof(polys)/sizeof(polys[0])); poly++) { - if (polys[poly].len == pmac->block_len) { - break; - } - } - if (poly >= (int)(sizeof(polys)/sizeof(polys[0]))) { - return CRYPT_INVALID_ARG; - } - if (polys[poly].len != pmac->block_len) { - return CRYPT_INVALID_ARG; - } - -#ifdef LTC_FAST - if (pmac->block_len % sizeof(LTC_FAST_TYPE)) { - return CRYPT_INVALID_ARG; - } -#endif - - - /* schedule the key */ - if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &pmac->key)) != CRYPT_OK) { - return err; - } - - /* allocate L */ - L = XMALLOC(pmac->block_len); - if (L == NULL) { - return CRYPT_MEM; - } - - /* find L = E[0] */ - zeromem(L, pmac->block_len); - if ((err = cipher_descriptor[cipher].ecb_encrypt(L, L, &pmac->key)) != CRYPT_OK) { - goto error; - } - - /* find Ls[i] = L << i for i == 0..31 */ - XMEMCPY(pmac->Ls[0], L, pmac->block_len); - for (x = 1; x < 32; x++) { - m = pmac->Ls[x-1][0] >> 7; - for (y = 0; y < pmac->block_len-1; y++) { - pmac->Ls[x][y] = ((pmac->Ls[x-1][y] << 1) | (pmac->Ls[x-1][y+1] >> 7)) & 255; - } - pmac->Ls[x][pmac->block_len-1] = (pmac->Ls[x-1][pmac->block_len-1] << 1) & 255; - - if (m == 1) { - for (y = 0; y < pmac->block_len; y++) { - pmac->Ls[x][y] ^= polys[poly].poly_mul[y]; - } - } - } - - /* find Lr = L / x */ - m = L[pmac->block_len-1] & 1; - - /* shift right */ - for (x = pmac->block_len - 1; x > 0; x--) { - pmac->Lr[x] = ((L[x] >> 1) | (L[x-1] << 7)) & 255; - } - pmac->Lr[0] = L[0] >> 1; - - if (m == 1) { - for (x = 0; x < pmac->block_len; x++) { - pmac->Lr[x] ^= polys[poly].poly_div[x]; - } - } - - /* zero buffer, counters, etc... */ - pmac->block_index = 1; - pmac->cipher_idx = cipher; - pmac->buflen = 0; - zeromem(pmac->block, sizeof(pmac->block)); - zeromem(pmac->Li, sizeof(pmac->Li)); - zeromem(pmac->checksum, sizeof(pmac->checksum)); - err = CRYPT_OK; -error: -#ifdef LTC_CLEAN_STACK - zeromem(L, pmac->block_len); -#endif - - XFREE(L); - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/pmac/pmac_memory.c b/src/libtomcrypt/src/mac/pmac/pmac_memory.c deleted file mode 100644 index f7c2c2592d..0000000000 --- a/src/libtomcrypt/src/mac/pmac/pmac_memory.c +++ /dev/null @@ -1,72 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pmac_memory.c - PMAC implementation, process a block of memory, by Tom St Denis -*/ - -#ifdef LTC_PMAC - -/** - PMAC a block of memory - @param cipher The index of the cipher desired - @param key The secret key - @param keylen The length of the secret key (octets) - @param in The data you wish to send through PMAC - @param inlen The length of data you wish to send through PMAC (octets) - @param out [out] Destination for the authentication tag - @param outlen [in/out] The max size and resulting size of the authentication tag - @return CRYPT_OK if successful -*/ -int pmac_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - int err; - pmac_state *pmac; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* allocate ram for pmac state */ - pmac = XMALLOC(sizeof(pmac_state)); - if (pmac == NULL) { - return CRYPT_MEM; - } - - if ((err = pmac_init(pmac, cipher, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = pmac_process(pmac, in, inlen)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = pmac_done(pmac, out, outlen)) != CRYPT_OK) { - goto LBL_ERR; - } - - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(pmac, sizeof(pmac_state)); -#endif - - XFREE(pmac); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/pmac/pmac_memory_multi.c b/src/libtomcrypt/src/mac/pmac/pmac_memory_multi.c deleted file mode 100644 index d948ae5cda..0000000000 --- a/src/libtomcrypt/src/mac/pmac/pmac_memory_multi.c +++ /dev/null @@ -1,87 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" -#include - -/** - @file pmac_memory_multi.c - PMAC implementation, process multiple blocks of memory, by Tom St Denis -*/ - -#ifdef LTC_PMAC - -/** - PMAC multiple blocks of memory - @param cipher The index of the cipher desired - @param key The secret key - @param keylen The length of the secret key (octets) - @param out [out] Destination for the authentication tag - @param outlen [in/out] The max size and resulting size of the authentication tag - @param in The data you wish to send through PMAC - @param inlen The length of data you wish to send through PMAC (octets) - @param ... tuples of (data,len) pairs to PMAC, terminated with a (NULL,x) (x=don't care) - @return CRYPT_OK if successful -*/ -int pmac_memory_multi(int cipher, - const unsigned char *key, unsigned long keylen, - unsigned char *out, unsigned long *outlen, - const unsigned char *in, unsigned long inlen, ...) -{ - int err; - pmac_state *pmac; - va_list args; - const unsigned char *curptr; - unsigned long curlen; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* allocate ram for pmac state */ - pmac = XMALLOC(sizeof(pmac_state)); - if (pmac == NULL) { - return CRYPT_MEM; - } - - if ((err = pmac_init(pmac, cipher, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - va_start(args, inlen); - curptr = in; - curlen = inlen; - for (;;) { - /* process buf */ - if ((err = pmac_process(pmac, curptr, curlen)) != CRYPT_OK) { - goto LBL_ERR; - } - /* step to next */ - curptr = va_arg(args, const unsigned char*); - if (curptr == NULL) { - break; - } - curlen = va_arg(args, unsigned long); - } - if ((err = pmac_done(pmac, out, outlen)) != CRYPT_OK) { - goto LBL_ERR; - } -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(pmac, sizeof(pmac_state)); -#endif - XFREE(pmac); - va_end(args); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/pmac/pmac_ntz.c b/src/libtomcrypt/src/mac/pmac/pmac_ntz.c deleted file mode 100644 index 405048712b..0000000000 --- a/src/libtomcrypt/src/mac/pmac/pmac_ntz.c +++ /dev/null @@ -1,37 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pmac_ntz.c - PMAC implementation, internal function, by Tom St Denis -*/ - -#ifdef LTC_PMAC - -/** - Internal PMAC function -*/ -int pmac_ntz(unsigned long x) -{ - int c; - x &= 0xFFFFFFFFUL; - c = 0; - while ((x & 1) == 0) { - ++c; - x >>= 1; - } - return c; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/pmac/pmac_process.c b/src/libtomcrypt/src/mac/pmac/pmac_process.c deleted file mode 100644 index ca855adadb..0000000000 --- a/src/libtomcrypt/src/mac/pmac/pmac_process.c +++ /dev/null @@ -1,98 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pmac_process.c - PMAC implementation, process data, by Tom St Denis -*/ - - -#ifdef LTC_PMAC - -/** - Process data in a PMAC stream - @param pmac The PMAC state - @param in The data to send through PMAC - @param inlen The length of the data to send through PMAC - @return CRYPT_OK if successful -*/ -int pmac_process(pmac_state *pmac, const unsigned char *in, unsigned long inlen) -{ - int err, n; - unsigned long x; - unsigned char Z[MAXBLOCKSIZE]; - - LTC_ARGCHK(pmac != NULL); - LTC_ARGCHK(in != NULL); - if ((err = cipher_is_valid(pmac->cipher_idx)) != CRYPT_OK) { - return err; - } - - if ((pmac->buflen > (int)sizeof(pmac->block)) || (pmac->buflen < 0) || - (pmac->block_len > (int)sizeof(pmac->block)) || (pmac->buflen > pmac->block_len)) { - return CRYPT_INVALID_ARG; - } - -#ifdef LTC_FAST - if (pmac->buflen == 0 && inlen > 16) { - unsigned long y; - for (x = 0; x < (inlen - 16); x += 16) { - pmac_shift_xor(pmac); - for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&Z[y])) = *(LTC_FAST_TYPE_PTR_CAST(&in[y])) ^ *(LTC_FAST_TYPE_PTR_CAST(&pmac->Li[y])); - } - if ((err = cipher_descriptor[pmac->cipher_idx].ecb_encrypt(Z, Z, &pmac->key)) != CRYPT_OK) { - return err; - } - for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&pmac->checksum[y])) ^= *(LTC_FAST_TYPE_PTR_CAST(&Z[y])); - } - in += 16; - } - inlen -= x; - } -#endif - - while (inlen != 0) { - /* ok if the block is full we xor in prev, encrypt and replace prev */ - if (pmac->buflen == pmac->block_len) { - pmac_shift_xor(pmac); - for (x = 0; x < (unsigned long)pmac->block_len; x++) { - Z[x] = pmac->Li[x] ^ pmac->block[x]; - } - if ((err = cipher_descriptor[pmac->cipher_idx].ecb_encrypt(Z, Z, &pmac->key)) != CRYPT_OK) { - return err; - } - for (x = 0; x < (unsigned long)pmac->block_len; x++) { - pmac->checksum[x] ^= Z[x]; - } - pmac->buflen = 0; - } - - /* add bytes */ - n = MIN(inlen, (unsigned long)(pmac->block_len - pmac->buflen)); - XMEMCPY(pmac->block + pmac->buflen, in, n); - pmac->buflen += n; - inlen -= n; - in += n; - } - -#ifdef LTC_CLEAN_STACK - zeromem(Z, sizeof(Z)); -#endif - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/pmac/pmac_shift_xor.c b/src/libtomcrypt/src/mac/pmac/pmac_shift_xor.c deleted file mode 100644 index c2975a7b7f..0000000000 --- a/src/libtomcrypt/src/mac/pmac/pmac_shift_xor.c +++ /dev/null @@ -1,42 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pmac_shift_xor.c - PMAC implementation, internal function, by Tom St Denis -*/ - -#ifdef LTC_PMAC - -/** - Internal function. Performs the state update (adding correct multiple) - @param pmac The PMAC state. -*/ -void pmac_shift_xor(pmac_state *pmac) -{ - int x, y; - y = pmac_ntz(pmac->block_index++); -#ifdef LTC_FAST - for (x = 0; x < pmac->block_len; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pmac->Li + x)) ^= - *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pmac->Ls[y] + x)); - } -#else - for (x = 0; x < pmac->block_len; x++) { - pmac->Li[x] ^= pmac->Ls[y][x]; - } -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/pmac/pmac_test.c b/src/libtomcrypt/src/mac/pmac/pmac_test.c deleted file mode 100644 index 28e58bc9b5..0000000000 --- a/src/libtomcrypt/src/mac/pmac/pmac_test.c +++ /dev/null @@ -1,154 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pmac_test.c - PMAC implementation, self-test, by Tom St Denis -*/ - - -#ifdef LTC_PMAC - -/** - Test the LTC_OMAC implementation - @return CRYPT_OK if successful, CRYPT_NOP if testing has been disabled -*/ -int pmac_test(void) -{ -#if !defined(LTC_TEST) - return CRYPT_NOP; -#else - static const struct { - int msglen; - unsigned char key[16], msg[34], tag[16]; - } tests[] = { - - /* PMAC-AES-128-0B */ -{ - 0, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* msg */ - { 0x00 }, - /* tag */ - { 0x43, 0x99, 0x57, 0x2c, 0xd6, 0xea, 0x53, 0x41, - 0xb8, 0xd3, 0x58, 0x76, 0xa7, 0x09, 0x8a, 0xf7 } -}, - - /* PMAC-AES-128-3B */ -{ - 3, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* msg */ - { 0x00, 0x01, 0x02 }, - /* tag */ - { 0x25, 0x6b, 0xa5, 0x19, 0x3c, 0x1b, 0x99, 0x1b, - 0x4d, 0xf0, 0xc5, 0x1f, 0x38, 0x8a, 0x9e, 0x27 } -}, - - /* PMAC-AES-128-16B */ -{ - 16, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* msg */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* tag */ - { 0xeb, 0xbd, 0x82, 0x2f, 0xa4, 0x58, 0xda, 0xf6, - 0xdf, 0xda, 0xd7, 0xc2, 0x7d, 0xa7, 0x63, 0x38 } -}, - - /* PMAC-AES-128-20B */ -{ - 20, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* msg */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13 }, - /* tag */ - { 0x04, 0x12, 0xca, 0x15, 0x0b, 0xbf, 0x79, 0x05, - 0x8d, 0x8c, 0x75, 0xa5, 0x8c, 0x99, 0x3f, 0x55 } -}, - - /* PMAC-AES-128-32B */ -{ - 32, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* msg */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, - /* tag */ - { 0xe9, 0x7a, 0xc0, 0x4e, 0x9e, 0x5e, 0x33, 0x99, - 0xce, 0x53, 0x55, 0xcd, 0x74, 0x07, 0xbc, 0x75 } -}, - - /* PMAC-AES-128-34B */ -{ - 34, - /* key */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - /* msg */ - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, - 0x20, 0x21 }, - /* tag */ - { 0x5c, 0xba, 0x7d, 0x5e, 0xb2, 0x4f, 0x7c, 0x86, - 0xcc, 0xc5, 0x46, 0x04, 0xe5, 0x3d, 0x55, 0x12 } -} - -}; - int err, x, idx; - unsigned long len; - unsigned char outtag[MAXBLOCKSIZE]; - - /* AES can be under rijndael or aes... try to find it */ - if ((idx = find_cipher("aes")) == -1) { - if ((idx = find_cipher("rijndael")) == -1) { - return CRYPT_NOP; - } - } - - for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - len = sizeof(outtag); - if ((err = pmac_memory(idx, tests[x].key, 16, tests[x].msg, tests[x].msglen, outtag, &len)) != CRYPT_OK) { - return err; - } - - if (compare_testvector(outtag, len, tests[x].tag, sizeof(tests[x].tag), "PMAC", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif /* LTC_TEST */ -} - -#endif /* PMAC_MODE */ - - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/poly1305/poly1305.c b/src/libtomcrypt/src/mac/poly1305/poly1305.c deleted file mode 100644 index de6acf0259..0000000000 --- a/src/libtomcrypt/src/mac/poly1305/poly1305.c +++ /dev/null @@ -1,268 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* The implementation is based on: - * Public Domain poly1305 from Andrew Moon - * https://github.com/floodyberry/poly1305-donna - */ - -#include "tomcrypt.h" - -#ifdef LTC_POLY1305 - -/* internal only */ -static void _poly1305_block(poly1305_state *st, const unsigned char *in, unsigned long inlen) -{ - const unsigned long hibit = (st->final) ? 0 : (1UL << 24); /* 1 << 128 */ - ulong32 r0,r1,r2,r3,r4; - ulong32 s1,s2,s3,s4; - ulong32 h0,h1,h2,h3,h4; - ulong32 tmp; - ulong64 d0,d1,d2,d3,d4; - ulong32 c; - - r0 = st->r[0]; - r1 = st->r[1]; - r2 = st->r[2]; - r3 = st->r[3]; - r4 = st->r[4]; - - s1 = r1 * 5; - s2 = r2 * 5; - s3 = r3 * 5; - s4 = r4 * 5; - - h0 = st->h[0]; - h1 = st->h[1]; - h2 = st->h[2]; - h3 = st->h[3]; - h4 = st->h[4]; - - while (inlen >= 16) { - /* h += in[i] */ - LOAD32L(tmp, in+ 0); h0 += (tmp ) & 0x3ffffff; - LOAD32L(tmp, in+ 3); h1 += (tmp >> 2) & 0x3ffffff; - LOAD32L(tmp, in+ 6); h2 += (tmp >> 4) & 0x3ffffff; - LOAD32L(tmp, in+ 9); h3 += (tmp >> 6) & 0x3ffffff; - LOAD32L(tmp, in+12); h4 += (tmp >> 8) | hibit; - - /* h *= r */ - d0 = ((ulong64)h0 * r0) + ((ulong64)h1 * s4) + ((ulong64)h2 * s3) + ((ulong64)h3 * s2) + ((ulong64)h4 * s1); - d1 = ((ulong64)h0 * r1) + ((ulong64)h1 * r0) + ((ulong64)h2 * s4) + ((ulong64)h3 * s3) + ((ulong64)h4 * s2); - d2 = ((ulong64)h0 * r2) + ((ulong64)h1 * r1) + ((ulong64)h2 * r0) + ((ulong64)h3 * s4) + ((ulong64)h4 * s3); - d3 = ((ulong64)h0 * r3) + ((ulong64)h1 * r2) + ((ulong64)h2 * r1) + ((ulong64)h3 * r0) + ((ulong64)h4 * s4); - d4 = ((ulong64)h0 * r4) + ((ulong64)h1 * r3) + ((ulong64)h2 * r2) + ((ulong64)h3 * r1) + ((ulong64)h4 * r0); - - /* (partial) h %= p */ - c = (ulong32)(d0 >> 26); h0 = (ulong32)d0 & 0x3ffffff; - d1 += c; c = (ulong32)(d1 >> 26); h1 = (ulong32)d1 & 0x3ffffff; - d2 += c; c = (ulong32)(d2 >> 26); h2 = (ulong32)d2 & 0x3ffffff; - d3 += c; c = (ulong32)(d3 >> 26); h3 = (ulong32)d3 & 0x3ffffff; - d4 += c; c = (ulong32)(d4 >> 26); h4 = (ulong32)d4 & 0x3ffffff; - h0 += c * 5; c = (h0 >> 26); h0 = h0 & 0x3ffffff; - h1 += c; - - in += 16; - inlen -= 16; - } - - st->h[0] = h0; - st->h[1] = h1; - st->h[2] = h2; - st->h[3] = h3; - st->h[4] = h4; -} - -/** - Initialize an POLY1305 context. - @param st The POLY1305 state - @param key The secret key - @param keylen The length of the secret key (octets) - @return CRYPT_OK if successful -*/ -int poly1305_init(poly1305_state *st, const unsigned char *key, unsigned long keylen) -{ - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(keylen == 32); - - /* r &= 0xffffffc0ffffffc0ffffffc0fffffff */ - LOAD32L(st->r[0], key + 0); st->r[0] = (st->r[0] ) & 0x3ffffff; - LOAD32L(st->r[1], key + 3); st->r[1] = (st->r[1] >> 2) & 0x3ffff03; - LOAD32L(st->r[2], key + 6); st->r[2] = (st->r[2] >> 4) & 0x3ffc0ff; - LOAD32L(st->r[3], key + 9); st->r[3] = (st->r[3] >> 6) & 0x3f03fff; - LOAD32L(st->r[4], key + 12); st->r[4] = (st->r[4] >> 8) & 0x00fffff; - - /* h = 0 */ - st->h[0] = 0; - st->h[1] = 0; - st->h[2] = 0; - st->h[3] = 0; - st->h[4] = 0; - - /* save pad for later */ - LOAD32L(st->pad[0], key + 16); - LOAD32L(st->pad[1], key + 20); - LOAD32L(st->pad[2], key + 24); - LOAD32L(st->pad[3], key + 28); - - st->leftover = 0; - st->final = 0; - return CRYPT_OK; -} - -/** - Process data through POLY1305 - @param st The POLY1305 state - @param in The data to send through HMAC - @param inlen The length of the data to HMAC (octets) - @return CRYPT_OK if successful -*/ -int poly1305_process(poly1305_state *st, const unsigned char *in, unsigned long inlen) -{ - unsigned long i; - - if (inlen == 0) return CRYPT_OK; /* nothing to do */ - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(in != NULL); - - /* handle leftover */ - if (st->leftover) { - unsigned long want = (16 - st->leftover); - if (want > inlen) want = inlen; - for (i = 0; i < want; i++) st->buffer[st->leftover + i] = in[i]; - inlen -= want; - in += want; - st->leftover += want; - if (st->leftover < 16) return CRYPT_OK; - _poly1305_block(st, st->buffer, 16); - st->leftover = 0; - } - - /* process full blocks */ - if (inlen >= 16) { - unsigned long want = (inlen & ~(16 - 1)); - _poly1305_block(st, in, want); - in += want; - inlen -= want; - } - - /* store leftover */ - if (inlen) { - for (i = 0; i < inlen; i++) st->buffer[st->leftover + i] = in[i]; - st->leftover += inlen; - } - return CRYPT_OK; -} - -/** - Terminate a POLY1305 session - @param st The POLY1305 state - @param mac [out] The destination of the POLY1305 authentication tag - @param maclen [in/out] The max size and resulting size of the POLY1305 authentication tag - @return CRYPT_OK if successful -*/ -int poly1305_done(poly1305_state *st, unsigned char *mac, unsigned long *maclen) -{ - ulong32 h0,h1,h2,h3,h4,c; - ulong32 g0,g1,g2,g3,g4; - ulong64 f; - ulong32 mask; - - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(mac != NULL); - LTC_ARGCHK(maclen != NULL); - LTC_ARGCHK(*maclen >= 16); - - /* process the remaining block */ - if (st->leftover) { - unsigned long i = st->leftover; - st->buffer[i++] = 1; - for (; i < 16; i++) st->buffer[i] = 0; - st->final = 1; - _poly1305_block(st, st->buffer, 16); - } - - /* fully carry h */ - h0 = st->h[0]; - h1 = st->h[1]; - h2 = st->h[2]; - h3 = st->h[3]; - h4 = st->h[4]; - - c = h1 >> 26; h1 = h1 & 0x3ffffff; - h2 += c; c = h2 >> 26; h2 = h2 & 0x3ffffff; - h3 += c; c = h3 >> 26; h3 = h3 & 0x3ffffff; - h4 += c; c = h4 >> 26; h4 = h4 & 0x3ffffff; - h0 += c * 5; c = h0 >> 26; h0 = h0 & 0x3ffffff; - h1 += c; - - /* compute h + -p */ - g0 = h0 + 5; c = g0 >> 26; g0 &= 0x3ffffff; - g1 = h1 + c; c = g1 >> 26; g1 &= 0x3ffffff; - g2 = h2 + c; c = g2 >> 26; g2 &= 0x3ffffff; - g3 = h3 + c; c = g3 >> 26; g3 &= 0x3ffffff; - g4 = h4 + c - (1UL << 26); - - /* select h if h < p, or h + -p if h >= p */ - mask = (g4 >> 31) - 1; - g0 &= mask; - g1 &= mask; - g2 &= mask; - g3 &= mask; - g4 &= mask; - mask = ~mask; - h0 = (h0 & mask) | g0; - h1 = (h1 & mask) | g1; - h2 = (h2 & mask) | g2; - h3 = (h3 & mask) | g3; - h4 = (h4 & mask) | g4; - - /* h = h % (2^128) */ - h0 = ((h0 ) | (h1 << 26)) & 0xffffffff; - h1 = ((h1 >> 6) | (h2 << 20)) & 0xffffffff; - h2 = ((h2 >> 12) | (h3 << 14)) & 0xffffffff; - h3 = ((h3 >> 18) | (h4 << 8)) & 0xffffffff; - - /* mac = (h + pad) % (2^128) */ - f = (ulong64)h0 + st->pad[0] ; h0 = (ulong32)f; - f = (ulong64)h1 + st->pad[1] + (f >> 32); h1 = (ulong32)f; - f = (ulong64)h2 + st->pad[2] + (f >> 32); h2 = (ulong32)f; - f = (ulong64)h3 + st->pad[3] + (f >> 32); h3 = (ulong32)f; - - STORE32L(h0, mac + 0); - STORE32L(h1, mac + 4); - STORE32L(h2, mac + 8); - STORE32L(h3, mac + 12); - - /* zero out the state */ - st->h[0] = 0; - st->h[1] = 0; - st->h[2] = 0; - st->h[3] = 0; - st->h[4] = 0; - st->r[0] = 0; - st->r[1] = 0; - st->r[2] = 0; - st->r[3] = 0; - st->r[4] = 0; - st->pad[0] = 0; - st->pad[1] = 0; - st->pad[2] = 0; - st->pad[3] = 0; - - *maclen = 16; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/poly1305/poly1305_file.c b/src/libtomcrypt/src/mac/poly1305/poly1305_file.c deleted file mode 100644 index d5d8facae0..0000000000 --- a/src/libtomcrypt/src/mac/poly1305/poly1305_file.c +++ /dev/null @@ -1,93 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* The implementation is based on: - * Public Domain poly1305 from Andrew Moon - * https://github.com/floodyberry/poly1305-donna - */ - -#include "tomcrypt.h" - -#ifdef LTC_POLY1305 - -/** - POLY1305 a file - @param fname The name of the file you wish to POLY1305 - @param key The secret key - @param keylen The length of the secret key - @param mac [out] The POLY1305 authentication tag - @param maclen [in/out] The max size and resulting size of the authentication tag - @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled -*/ -int poly1305_file(const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen) -{ -#ifdef LTC_NO_FILE - LTC_UNUSED_PARAM(fname); - LTC_UNUSED_PARAM(key); - LTC_UNUSED_PARAM(keylen); - LTC_UNUSED_PARAM(mac); - LTC_UNUSED_PARAM(maclen); - return CRYPT_NOP; -#else - poly1305_state st; - FILE *in; - unsigned char *buf; - size_t x; - int err; - - LTC_ARGCHK(fname != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(mac != NULL); - LTC_ARGCHK(maclen != NULL); - - if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { - return CRYPT_MEM; - } - - if ((err = poly1305_init(&st, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - - in = fopen(fname, "rb"); - if (in == NULL) { - err = CRYPT_FILE_NOTFOUND; - goto LBL_ERR; - } - - do { - x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); - if ((err = poly1305_process(&st, buf, (unsigned long)x)) != CRYPT_OK) { - fclose(in); - goto LBL_CLEANBUF; - } - } while (x == LTC_FILE_READ_BUFSIZE); - - if (fclose(in) != 0) { - err = CRYPT_ERROR; - goto LBL_CLEANBUF; - } - - err = poly1305_done(&st, mac, maclen); - -LBL_CLEANBUF: - zeromem(buf, LTC_FILE_READ_BUFSIZE); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(&st, sizeof(poly1305_state)); -#endif - XFREE(buf); - return err; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/poly1305/poly1305_memory.c b/src/libtomcrypt/src/mac/poly1305/poly1305_memory.c deleted file mode 100644 index 1549378eaa..0000000000 --- a/src/libtomcrypt/src/mac/poly1305/poly1305_memory.c +++ /dev/null @@ -1,53 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* The implementation is based on: - * Public Domain poly1305 from Andrew Moon - * https://github.com/floodyberry/poly1305-donna - */ - -#include "tomcrypt.h" - -#ifdef LTC_POLY1305 - -/** - POLY1305 a block of memory to produce the authentication tag - @param key The secret key - @param keylen The length of the secret key (octets) - @param in The data to POLY1305 - @param inlen The length of the data to POLY1305 (octets) - @param mac [out] Destination of the authentication tag - @param maclen [in/out] Max size and resulting size of authentication tag - @return CRYPT_OK if successful -*/ -int poly1305_memory(const unsigned char *key, unsigned long keylen, const unsigned char *in, unsigned long inlen, unsigned char *mac, unsigned long *maclen) -{ - poly1305_state st; - int err; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(mac != NULL); - LTC_ARGCHK(maclen != NULL); - - if ((err = poly1305_init(&st, key, keylen)) != CRYPT_OK) { goto LBL_ERR; } - if ((err = poly1305_process(&st, in, inlen)) != CRYPT_OK) { goto LBL_ERR; } - err = poly1305_done(&st, mac, maclen); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(&st, sizeof(poly1305_state)); -#endif - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/poly1305/poly1305_memory_multi.c b/src/libtomcrypt/src/mac/poly1305/poly1305_memory_multi.c deleted file mode 100644 index 0a4896909a..0000000000 --- a/src/libtomcrypt/src/mac/poly1305/poly1305_memory_multi.c +++ /dev/null @@ -1,67 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* The implementation is based on: - * Public Domain poly1305 from Andrew Moon - * https://github.com/floodyberry/poly1305-donna - */ - -#include "tomcrypt.h" -#include - -#ifdef LTC_POLY1305 - -/** - POLY1305 multiple blocks of memory to produce the authentication tag - @param key The secret key - @param keylen The length of the secret key (octets) - @param mac [out] Destination of the authentication tag - @param maclen [in/out] Max size and resulting size of authentication tag - @param in The data to POLY1305 - @param inlen The length of the data to POLY1305 (octets) - @param ... tuples of (data,len) pairs to POLY1305, terminated with a (NULL,x) (x=don't care) - @return CRYPT_OK if successful -*/ -int poly1305_memory_multi(const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen, const unsigned char *in, unsigned long inlen, ...) -{ - poly1305_state st; - int err; - va_list args; - const unsigned char *curptr; - unsigned long curlen; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(mac != NULL); - LTC_ARGCHK(maclen != NULL); - - va_start(args, inlen); - curptr = in; - curlen = inlen; - if ((err = poly1305_init(&st, key, keylen)) != CRYPT_OK) { goto LBL_ERR; } - for (;;) { - if ((err = poly1305_process(&st, curptr, curlen)) != CRYPT_OK) { goto LBL_ERR; } - curptr = va_arg(args, const unsigned char*); - if (curptr == NULL) break; - curlen = va_arg(args, unsigned long); - } - err = poly1305_done(&st, mac, maclen); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(&st, sizeof(poly1305_state)); -#endif - va_end(args); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/poly1305/poly1305_test.c b/src/libtomcrypt/src/mac/poly1305/poly1305_test.c deleted file mode 100644 index 3aea01ae3d..0000000000 --- a/src/libtomcrypt/src/mac/poly1305/poly1305_test.c +++ /dev/null @@ -1,56 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* The implementation is based on: - * Public Domain poly1305 from Andrew Moon - * https://github.com/floodyberry/poly1305-donna - */ - -#include "tomcrypt.h" - -#ifdef LTC_POLY1305 - -int poly1305_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - /* https://tools.ietf.org/html/rfc7539#section-2.5.2 */ - unsigned char k[] = { 0x85, 0xd6, 0xbe, 0x78, 0x57, 0x55, 0x6d, 0x33, 0x7f, 0x44, 0x52, 0xfe, 0x42, 0xd5, 0x06, 0xa8, 0x01, 0x03, 0x80, 0x8a, 0xfb, 0x0d, 0xb2, 0xfd, 0x4a, 0xbf, 0xf6, 0xaf, 0x41, 0x49, 0xf5, 0x1b }; - unsigned char tag[] = { 0xA8, 0x06, 0x1D, 0xC1, 0x30, 0x51, 0x36, 0xC6, 0xC2, 0x2B, 0x8B, 0xAF, 0x0C, 0x01, 0x27, 0xA9 }; - char m[] = "Cryptographic Forum Research Group"; - unsigned long len = 16, mlen = strlen(m); - unsigned char out[1000]; - poly1305_state st; - int err; - - /* process piece by piece */ - if ((err = poly1305_init(&st, k, 32)) != CRYPT_OK) return err; - if ((err = poly1305_process(&st, (unsigned char*)m, 5)) != CRYPT_OK) return err; - if ((err = poly1305_process(&st, (unsigned char*)m + 5, 4)) != CRYPT_OK) return err; - if ((err = poly1305_process(&st, (unsigned char*)m + 9, 3)) != CRYPT_OK) return err; - if ((err = poly1305_process(&st, (unsigned char*)m + 12, 2)) != CRYPT_OK) return err; - if ((err = poly1305_process(&st, (unsigned char*)m + 14, 1)) != CRYPT_OK) return err; - if ((err = poly1305_process(&st, (unsigned char*)m + 15, mlen - 15)) != CRYPT_OK) return err; - if ((err = poly1305_done(&st, out, &len)) != CRYPT_OK) return err; - if (compare_testvector(out, len, tag, sizeof(tag), "POLY1305-TV1", 1) != 0) return CRYPT_FAIL_TESTVECTOR; - /* process in one go */ - if ((err = poly1305_init(&st, k, 32)) != CRYPT_OK) return err; - if ((err = poly1305_process(&st, (unsigned char*)m, mlen)) != CRYPT_OK) return err; - if ((err = poly1305_done(&st, out, &len)) != CRYPT_OK) return err; - if (compare_testvector(out, len, tag, sizeof(tag), "POLY1305-TV2", 1) != 0) return CRYPT_FAIL_TESTVECTOR; - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/xcbc/xcbc_done.c b/src/libtomcrypt/src/mac/xcbc/xcbc_done.c deleted file mode 100644 index cceff373d7..0000000000 --- a/src/libtomcrypt/src/mac/xcbc/xcbc_done.c +++ /dev/null @@ -1,75 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file xcbc_done.c - XCBC Support, terminate the state -*/ - -#ifdef LTC_XCBC - -/** Terminate the XCBC-MAC state - @param xcbc XCBC state to terminate - @param out [out] Destination for the MAC tag - @param outlen [in/out] Destination size and final tag size - Return CRYPT_OK on success -*/ -int xcbc_done(xcbc_state *xcbc, unsigned char *out, unsigned long *outlen) -{ - int err, x; - LTC_ARGCHK(xcbc != NULL); - LTC_ARGCHK(out != NULL); - - /* check structure */ - if ((err = cipher_is_valid(xcbc->cipher)) != CRYPT_OK) { - return err; - } - - if ((xcbc->blocksize > cipher_descriptor[xcbc->cipher].block_length) || (xcbc->blocksize < 0) || - (xcbc->buflen > xcbc->blocksize) || (xcbc->buflen < 0)) { - return CRYPT_INVALID_ARG; - } - - /* which key do we use? */ - if (xcbc->buflen == xcbc->blocksize) { - /* k2 */ - for (x = 0; x < xcbc->blocksize; x++) { - xcbc->IV[x] ^= xcbc->K[1][x]; - } - } else { - xcbc->IV[xcbc->buflen] ^= 0x80; - /* k3 */ - for (x = 0; x < xcbc->blocksize; x++) { - xcbc->IV[x] ^= xcbc->K[2][x]; - } - } - - /* encrypt */ - cipher_descriptor[xcbc->cipher].ecb_encrypt(xcbc->IV, xcbc->IV, &xcbc->key); - cipher_descriptor[xcbc->cipher].done(&xcbc->key); - - /* extract tag */ - for (x = 0; x < xcbc->blocksize && (unsigned long)x < *outlen; x++) { - out[x] = xcbc->IV[x]; - } - *outlen = x; - -#ifdef LTC_CLEAN_STACK - zeromem(xcbc, sizeof(*xcbc)); -#endif - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/mac/xcbc/xcbc_file.c b/src/libtomcrypt/src/mac/xcbc/xcbc_file.c deleted file mode 100644 index b6f6db7a62..0000000000 --- a/src/libtomcrypt/src/mac/xcbc/xcbc_file.c +++ /dev/null @@ -1,97 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file xcbc_file.c - XCBC support, process a file, Tom St Denis -*/ - -#ifdef LTC_XCBC - -/** - XCBC a file - @param cipher The index of the cipher desired - @param key The secret key - @param keylen The length of the secret key (octets) - @param filename The name of the file you wish to XCBC - @param out [out] Where the authentication tag is to be stored - @param outlen [in/out] The max size and resulting size of the authentication tag - @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled -*/ -int xcbc_file(int cipher, - const unsigned char *key, unsigned long keylen, - const char *filename, - unsigned char *out, unsigned long *outlen) -{ -#ifdef LTC_NO_FILE - LTC_UNUSED_PARAM(cipher); - LTC_UNUSED_PARAM(key); - LTC_UNUSED_PARAM(keylen); - LTC_UNUSED_PARAM(filename); - LTC_UNUSED_PARAM(out); - LTC_UNUSED_PARAM(outlen); - return CRYPT_NOP; -#else - size_t x; - int err; - xcbc_state xcbc; - FILE *in; - unsigned char *buf; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(filename != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { - return CRYPT_MEM; - } - - if ((err = xcbc_init(&xcbc, cipher, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - - in = fopen(filename, "rb"); - if (in == NULL) { - err = CRYPT_FILE_NOTFOUND; - goto LBL_ERR; - } - - do { - x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); - if ((err = xcbc_process(&xcbc, buf, (unsigned long)x)) != CRYPT_OK) { - fclose(in); - goto LBL_CLEANBUF; - } - } while (x == LTC_FILE_READ_BUFSIZE); - - if (fclose(in) != 0) { - err = CRYPT_ERROR; - goto LBL_CLEANBUF; - } - - err = xcbc_done(&xcbc, out, outlen); - -LBL_CLEANBUF: - zeromem(buf, LTC_FILE_READ_BUFSIZE); -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(&xcbc, sizeof(xcbc_state)); -#endif - XFREE(buf); - return err; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/xcbc/xcbc_init.c b/src/libtomcrypt/src/mac/xcbc/xcbc_init.c deleted file mode 100644 index c778d937e3..0000000000 --- a/src/libtomcrypt/src/mac/xcbc/xcbc_init.c +++ /dev/null @@ -1,106 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file xcbc_init.c - XCBC Support, start an XCBC state -*/ - -#ifdef LTC_XCBC - -/** Initialize XCBC-MAC state - @param xcbc [out] XCBC state to initialize - @param cipher Index of cipher to use - @param key [in] Secret key - @param keylen Length of secret key in octets - Return CRYPT_OK on success -*/ -int xcbc_init(xcbc_state *xcbc, int cipher, const unsigned char *key, unsigned long keylen) -{ - int x, y, err; - symmetric_key *skey; - unsigned long k1; - - LTC_ARGCHK(xcbc != NULL); - LTC_ARGCHK(key != NULL); - - /* schedule the key */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - -#ifdef LTC_FAST - if (cipher_descriptor[cipher].block_length % sizeof(LTC_FAST_TYPE)) { - return CRYPT_INVALID_ARG; - } -#endif - - skey = NULL; - - /* are we in pure XCBC mode with three keys? */ - if (keylen & LTC_XCBC_PURE) { - keylen &= ~LTC_XCBC_PURE; - - if (keylen < 2UL*cipher_descriptor[cipher].block_length) { - return CRYPT_INVALID_ARG; - } - - k1 = keylen - 2*cipher_descriptor[cipher].block_length; - XMEMCPY(xcbc->K[0], key, k1); - XMEMCPY(xcbc->K[1], key+k1, cipher_descriptor[cipher].block_length); - XMEMCPY(xcbc->K[2], key+k1 + cipher_descriptor[cipher].block_length, cipher_descriptor[cipher].block_length); - } else { - /* use the key expansion */ - k1 = cipher_descriptor[cipher].block_length; - - /* schedule the user key */ - skey = XCALLOC(1, sizeof(*skey)); - if (skey == NULL) { - return CRYPT_MEM; - } - - if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, skey)) != CRYPT_OK) { - goto done; - } - - /* make the three keys */ - for (y = 0; y < 3; y++) { - for (x = 0; x < cipher_descriptor[cipher].block_length; x++) { - xcbc->K[y][x] = y + 1; - } - cipher_descriptor[cipher].ecb_encrypt(xcbc->K[y], xcbc->K[y], skey); - } - } - - /* setup K1 */ - err = cipher_descriptor[cipher].setup(xcbc->K[0], k1, 0, &xcbc->key); - - /* setup struct */ - zeromem(xcbc->IV, cipher_descriptor[cipher].block_length); - xcbc->blocksize = cipher_descriptor[cipher].block_length; - xcbc->cipher = cipher; - xcbc->buflen = 0; -done: - cipher_descriptor[cipher].done(skey); - if (skey != NULL) { -#ifdef LTC_CLEAN_STACK - zeromem(skey, sizeof(*skey)); -#endif - XFREE(skey); - } - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/mac/xcbc/xcbc_memory.c b/src/libtomcrypt/src/mac/xcbc/xcbc_memory.c deleted file mode 100644 index ca3843ee6c..0000000000 --- a/src/libtomcrypt/src/mac/xcbc/xcbc_memory.c +++ /dev/null @@ -1,69 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file xcbc_process.c - XCBC Support, XCBC-MAC a block of memory -*/ - -#ifdef LTC_XCBC - -/** XCBC-MAC a block of memory - @param cipher Index of cipher to use - @param key [in] Secret key - @param keylen Length of key in octets - @param in [in] Message to MAC - @param inlen Length of input in octets - @param out [out] Destination for the MAC tag - @param outlen [in/out] Output size and final tag size - Return CRYPT_OK on success. -*/ -int xcbc_memory(int cipher, - const unsigned char *key, unsigned long keylen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - xcbc_state *xcbc; - int err; - - /* is the cipher valid? */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - - /* Use accelerator if found */ - if (cipher_descriptor[cipher].xcbc_memory != NULL) { - return cipher_descriptor[cipher].xcbc_memory(key, keylen, in, inlen, out, outlen); - } - - xcbc = XCALLOC(1, sizeof(*xcbc)); - if (xcbc == NULL) { - return CRYPT_MEM; - } - - if ((err = xcbc_init(xcbc, cipher, key, keylen)) != CRYPT_OK) { - goto done; - } - - if ((err = xcbc_process(xcbc, in, inlen)) != CRYPT_OK) { - goto done; - } - - err = xcbc_done(xcbc, out, outlen); -done: - XFREE(xcbc); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/xcbc/xcbc_memory_multi.c b/src/libtomcrypt/src/mac/xcbc/xcbc_memory_multi.c deleted file mode 100644 index b8639f6ad7..0000000000 --- a/src/libtomcrypt/src/mac/xcbc/xcbc_memory_multi.c +++ /dev/null @@ -1,88 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" -#include - -/** - @file xcbc_memory_multi.c - XCBC support, process multiple blocks of memory, Tom St Denis -*/ - -#ifdef LTC_XCBC - -/** - XCBC multiple blocks of memory - @param cipher The index of the desired cipher - @param key The secret key - @param keylen The length of the secret key (octets) - @param out [out] The destination of the authentication tag - @param outlen [in/out] The max size and resulting size of the authentication tag (octets) - @param in The data to send through XCBC - @param inlen The length of the data to send through XCBC (octets) - @param ... tuples of (data,len) pairs to XCBC, terminated with a (NULL,x) (x=don't care) - @return CRYPT_OK if successful -*/ -int xcbc_memory_multi(int cipher, - const unsigned char *key, unsigned long keylen, - unsigned char *out, unsigned long *outlen, - const unsigned char *in, unsigned long inlen, ...) -{ - int err; - xcbc_state *xcbc; - va_list args; - const unsigned char *curptr; - unsigned long curlen; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* allocate ram for xcbc state */ - xcbc = XMALLOC(sizeof(xcbc_state)); - if (xcbc == NULL) { - return CRYPT_MEM; - } - - /* xcbc process the message */ - if ((err = xcbc_init(xcbc, cipher, key, keylen)) != CRYPT_OK) { - goto LBL_ERR; - } - va_start(args, inlen); - curptr = in; - curlen = inlen; - for (;;) { - /* process buf */ - if ((err = xcbc_process(xcbc, curptr, curlen)) != CRYPT_OK) { - goto LBL_ERR; - } - /* step to next */ - curptr = va_arg(args, const unsigned char*); - if (curptr == NULL) { - break; - } - curlen = va_arg(args, unsigned long); - } - if ((err = xcbc_done(xcbc, out, outlen)) != CRYPT_OK) { - goto LBL_ERR; - } -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(xcbc, sizeof(xcbc_state)); -#endif - XFREE(xcbc); - va_end(args); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/mac/xcbc/xcbc_process.c b/src/libtomcrypt/src/mac/xcbc/xcbc_process.c deleted file mode 100644 index b7dbffa43a..0000000000 --- a/src/libtomcrypt/src/mac/xcbc/xcbc_process.c +++ /dev/null @@ -1,73 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file xcbc_process.c - XCBC Support, process blocks with XCBC -*/ - -#ifdef LTC_XCBC - -/** Process data through XCBC-MAC - @param xcbc The XCBC-MAC state - @param in Input data to process - @param inlen Length of input in octets - Return CRYPT_OK on success -*/ -int xcbc_process(xcbc_state *xcbc, const unsigned char *in, unsigned long inlen) -{ - int err; -#ifdef LTC_FAST - int x; -#endif - - LTC_ARGCHK(xcbc != NULL); - LTC_ARGCHK(in != NULL); - - /* check structure */ - if ((err = cipher_is_valid(xcbc->cipher)) != CRYPT_OK) { - return err; - } - - if ((xcbc->blocksize > cipher_descriptor[xcbc->cipher].block_length) || (xcbc->blocksize < 0) || - (xcbc->buflen > xcbc->blocksize) || (xcbc->buflen < 0)) { - return CRYPT_INVALID_ARG; - } - -#ifdef LTC_FAST - if (xcbc->buflen == 0) { - while (inlen > (unsigned long)xcbc->blocksize) { - for (x = 0; x < xcbc->blocksize; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&(xcbc->IV[x]))) ^= *(LTC_FAST_TYPE_PTR_CAST(&(in[x]))); - } - cipher_descriptor[xcbc->cipher].ecb_encrypt(xcbc->IV, xcbc->IV, &xcbc->key); - in += xcbc->blocksize; - inlen -= xcbc->blocksize; - } - } -#endif - - while (inlen) { - if (xcbc->buflen == xcbc->blocksize) { - cipher_descriptor[xcbc->cipher].ecb_encrypt(xcbc->IV, xcbc->IV, &xcbc->key); - xcbc->buflen = 0; - } - xcbc->IV[xcbc->buflen++] ^= *in++; - --inlen; - } - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/mac/xcbc/xcbc_test.c b/src/libtomcrypt/src/mac/xcbc/xcbc_test.c deleted file mode 100644 index 7341d64c1f..0000000000 --- a/src/libtomcrypt/src/mac/xcbc/xcbc_test.c +++ /dev/null @@ -1,126 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file xcbc_test.c - XCBC Support, Test XCBC-MAC mode -*/ - -#ifdef LTC_XCBC - -/** Test XCBC-MAC mode - Return CRYPT_OK on succes -*/ -int xcbc_test(void) -{ -#ifdef LTC_NO_TEST - return CRYPT_NOP; -#else - static const struct { - int msglen; - unsigned char K[16], M[34], T[16]; - } tests[] = { -{ - 0, - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - - { 0 }, - - { 0x75, 0xf0, 0x25, 0x1d, 0x52, 0x8a, 0xc0, 0x1c, - 0x45, 0x73, 0xdf, 0xd5, 0x84, 0xd7, 0x9f, 0x29 } -}, - -{ - 3, - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - - { 0x00, 0x01, 0x02 }, - - { 0x5b, 0x37, 0x65, 0x80, 0xae, 0x2f, 0x19, 0xaf, - 0xe7, 0x21, 0x9c, 0xee, 0xf1, 0x72, 0x75, 0x6f } -}, - -{ - 16, - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - - { 0xd2, 0xa2, 0x46, 0xfa, 0x34, 0x9b, 0x68, 0xa7, - 0x99, 0x98, 0xa4, 0x39, 0x4f, 0xf7, 0xa2, 0x63 } -}, - -{ - 32, - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, - - { 0xf5, 0x4f, 0x0e, 0xc8, 0xd2, 0xb9, 0xf3, 0xd3, - 0x68, 0x07, 0x73, 0x4b, 0xd5, 0x28, 0x3f, 0xd4 } -}, - -{ - 34, - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, - - { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, - 0x20, 0x21 }, - - { 0xbe, 0xcb, 0xb3, 0xbc, 0xcd, 0xb5, 0x18, 0xa3, - 0x06, 0x77, 0xd5, 0x48, 0x1f, 0xb6, 0xb4, 0xd8 }, -}, - - - -}; - unsigned char T[16]; - unsigned long taglen; - int err, x, idx; - - /* AES can be under rijndael or aes... try to find it */ - if ((idx = find_cipher("aes")) == -1) { - if ((idx = find_cipher("rijndael")) == -1) { - return CRYPT_NOP; - } - } - - for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - taglen = 16; - if ((err = xcbc_memory(idx, tests[x].K, 16, tests[x].M, tests[x].msglen, T, &taglen)) != CRYPT_OK) { - return err; - } - if (compare_testvector(T, taglen, tests[x].T, 16, "XCBC", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/math/fp/ltc_ecc_fp_mulmod.c b/src/libtomcrypt/src/math/fp/ltc_ecc_fp_mulmod.c deleted file mode 100644 index 2999aa0bbd..0000000000 --- a/src/libtomcrypt/src/math/fp/ltc_ecc_fp_mulmod.c +++ /dev/null @@ -1,1585 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ltc_ecc_fp_mulmod.c - ECC Crypto, Tom St Denis -*/ - -#if defined(LTC_MECC) && defined(LTC_MECC_FP) -#include - -/* number of entries in the cache */ -#ifndef FP_ENTRIES -#define FP_ENTRIES 16 -#endif - -/* number of bits in LUT */ -#ifndef FP_LUT -#define FP_LUT 8U -#endif - -#if (FP_LUT > 12) || (FP_LUT < 2) - #error FP_LUT must be between 2 and 12 inclusively -#endif - -/** Our FP cache */ -static struct { - ecc_point *g, /* cached COPY of base point */ - *LUT[1U< 6 - { 1, 0, 0 }, { 2, 1, 64 }, { 2, 2, 64 }, { 3, 3, 64 }, { 2, 4, 64 }, { 3, 5, 64 }, { 3, 6, 64 }, { 4, 7, 64 }, - { 2, 8, 64 }, { 3, 9, 64 }, { 3, 10, 64 }, { 4, 11, 64 }, { 3, 12, 64 }, { 4, 13, 64 }, { 4, 14, 64 }, { 5, 15, 64 }, - { 2, 16, 64 }, { 3, 17, 64 }, { 3, 18, 64 }, { 4, 19, 64 }, { 3, 20, 64 }, { 4, 21, 64 }, { 4, 22, 64 }, { 5, 23, 64 }, - { 3, 24, 64 }, { 4, 25, 64 }, { 4, 26, 64 }, { 5, 27, 64 }, { 4, 28, 64 }, { 5, 29, 64 }, { 5, 30, 64 }, { 6, 31, 64 }, - { 2, 32, 64 }, { 3, 33, 64 }, { 3, 34, 64 }, { 4, 35, 64 }, { 3, 36, 64 }, { 4, 37, 64 }, { 4, 38, 64 }, { 5, 39, 64 }, - { 3, 40, 64 }, { 4, 41, 64 }, { 4, 42, 64 }, { 5, 43, 64 }, { 4, 44, 64 }, { 5, 45, 64 }, { 5, 46, 64 }, { 6, 47, 64 }, - { 3, 48, 64 }, { 4, 49, 64 }, { 4, 50, 64 }, { 5, 51, 64 }, { 4, 52, 64 }, { 5, 53, 64 }, { 5, 54, 64 }, { 6, 55, 64 }, - { 4, 56, 64 }, { 5, 57, 64 }, { 5, 58, 64 }, { 6, 59, 64 }, { 5, 60, 64 }, { 6, 61, 64 }, { 6, 62, 64 }, { 7, 63, 64 }, -#if FP_LUT > 7 - { 1, 0, 0 }, { 2, 1, 128 }, { 2, 2, 128 }, { 3, 3, 128 }, { 2, 4, 128 }, { 3, 5, 128 }, { 3, 6, 128 }, { 4, 7, 128 }, - { 2, 8, 128 }, { 3, 9, 128 }, { 3, 10, 128 }, { 4, 11, 128 }, { 3, 12, 128 }, { 4, 13, 128 }, { 4, 14, 128 }, { 5, 15, 128 }, - { 2, 16, 128 }, { 3, 17, 128 }, { 3, 18, 128 }, { 4, 19, 128 }, { 3, 20, 128 }, { 4, 21, 128 }, { 4, 22, 128 }, { 5, 23, 128 }, - { 3, 24, 128 }, { 4, 25, 128 }, { 4, 26, 128 }, { 5, 27, 128 }, { 4, 28, 128 }, { 5, 29, 128 }, { 5, 30, 128 }, { 6, 31, 128 }, - { 2, 32, 128 }, { 3, 33, 128 }, { 3, 34, 128 }, { 4, 35, 128 }, { 3, 36, 128 }, { 4, 37, 128 }, { 4, 38, 128 }, { 5, 39, 128 }, - { 3, 40, 128 }, { 4, 41, 128 }, { 4, 42, 128 }, { 5, 43, 128 }, { 4, 44, 128 }, { 5, 45, 128 }, { 5, 46, 128 }, { 6, 47, 128 }, - { 3, 48, 128 }, { 4, 49, 128 }, { 4, 50, 128 }, { 5, 51, 128 }, { 4, 52, 128 }, { 5, 53, 128 }, { 5, 54, 128 }, { 6, 55, 128 }, - { 4, 56, 128 }, { 5, 57, 128 }, { 5, 58, 128 }, { 6, 59, 128 }, { 5, 60, 128 }, { 6, 61, 128 }, { 6, 62, 128 }, { 7, 63, 128 }, - { 2, 64, 128 }, { 3, 65, 128 }, { 3, 66, 128 }, { 4, 67, 128 }, { 3, 68, 128 }, { 4, 69, 128 }, { 4, 70, 128 }, { 5, 71, 128 }, - { 3, 72, 128 }, { 4, 73, 128 }, { 4, 74, 128 }, { 5, 75, 128 }, { 4, 76, 128 }, { 5, 77, 128 }, { 5, 78, 128 }, { 6, 79, 128 }, - { 3, 80, 128 }, { 4, 81, 128 }, { 4, 82, 128 }, { 5, 83, 128 }, { 4, 84, 128 }, { 5, 85, 128 }, { 5, 86, 128 }, { 6, 87, 128 }, - { 4, 88, 128 }, { 5, 89, 128 }, { 5, 90, 128 }, { 6, 91, 128 }, { 5, 92, 128 }, { 6, 93, 128 }, { 6, 94, 128 }, { 7, 95, 128 }, - { 3, 96, 128 }, { 4, 97, 128 }, { 4, 98, 128 }, { 5, 99, 128 }, { 4, 100, 128 }, { 5, 101, 128 }, { 5, 102, 128 }, { 6, 103, 128 }, - { 4, 104, 128 }, { 5, 105, 128 }, { 5, 106, 128 }, { 6, 107, 128 }, { 5, 108, 128 }, { 6, 109, 128 }, { 6, 110, 128 }, { 7, 111, 128 }, - { 4, 112, 128 }, { 5, 113, 128 }, { 5, 114, 128 }, { 6, 115, 128 }, { 5, 116, 128 }, { 6, 117, 128 }, { 6, 118, 128 }, { 7, 119, 128 }, - { 5, 120, 128 }, { 6, 121, 128 }, { 6, 122, 128 }, { 7, 123, 128 }, { 6, 124, 128 }, { 7, 125, 128 }, { 7, 126, 128 }, { 8, 127, 128 }, -#if FP_LUT > 8 - { 1, 0, 0 }, { 2, 1, 256 }, { 2, 2, 256 }, { 3, 3, 256 }, { 2, 4, 256 }, { 3, 5, 256 }, { 3, 6, 256 }, { 4, 7, 256 }, - { 2, 8, 256 }, { 3, 9, 256 }, { 3, 10, 256 }, { 4, 11, 256 }, { 3, 12, 256 }, { 4, 13, 256 }, { 4, 14, 256 }, { 5, 15, 256 }, - { 2, 16, 256 }, { 3, 17, 256 }, { 3, 18, 256 }, { 4, 19, 256 }, { 3, 20, 256 }, { 4, 21, 256 }, { 4, 22, 256 }, { 5, 23, 256 }, - { 3, 24, 256 }, { 4, 25, 256 }, { 4, 26, 256 }, { 5, 27, 256 }, { 4, 28, 256 }, { 5, 29, 256 }, { 5, 30, 256 }, { 6, 31, 256 }, - { 2, 32, 256 }, { 3, 33, 256 }, { 3, 34, 256 }, { 4, 35, 256 }, { 3, 36, 256 }, { 4, 37, 256 }, { 4, 38, 256 }, { 5, 39, 256 }, - { 3, 40, 256 }, { 4, 41, 256 }, { 4, 42, 256 }, { 5, 43, 256 }, { 4, 44, 256 }, { 5, 45, 256 }, { 5, 46, 256 }, { 6, 47, 256 }, - { 3, 48, 256 }, { 4, 49, 256 }, { 4, 50, 256 }, { 5, 51, 256 }, { 4, 52, 256 }, { 5, 53, 256 }, { 5, 54, 256 }, { 6, 55, 256 }, - { 4, 56, 256 }, { 5, 57, 256 }, { 5, 58, 256 }, { 6, 59, 256 }, { 5, 60, 256 }, { 6, 61, 256 }, { 6, 62, 256 }, { 7, 63, 256 }, - { 2, 64, 256 }, { 3, 65, 256 }, { 3, 66, 256 }, { 4, 67, 256 }, { 3, 68, 256 }, { 4, 69, 256 }, { 4, 70, 256 }, { 5, 71, 256 }, - { 3, 72, 256 }, { 4, 73, 256 }, { 4, 74, 256 }, { 5, 75, 256 }, { 4, 76, 256 }, { 5, 77, 256 }, { 5, 78, 256 }, { 6, 79, 256 }, - { 3, 80, 256 }, { 4, 81, 256 }, { 4, 82, 256 }, { 5, 83, 256 }, { 4, 84, 256 }, { 5, 85, 256 }, { 5, 86, 256 }, { 6, 87, 256 }, - { 4, 88, 256 }, { 5, 89, 256 }, { 5, 90, 256 }, { 6, 91, 256 }, { 5, 92, 256 }, { 6, 93, 256 }, { 6, 94, 256 }, { 7, 95, 256 }, - { 3, 96, 256 }, { 4, 97, 256 }, { 4, 98, 256 }, { 5, 99, 256 }, { 4, 100, 256 }, { 5, 101, 256 }, { 5, 102, 256 }, { 6, 103, 256 }, - { 4, 104, 256 }, { 5, 105, 256 }, { 5, 106, 256 }, { 6, 107, 256 }, { 5, 108, 256 }, { 6, 109, 256 }, { 6, 110, 256 }, { 7, 111, 256 }, - { 4, 112, 256 }, { 5, 113, 256 }, { 5, 114, 256 }, { 6, 115, 256 }, { 5, 116, 256 }, { 6, 117, 256 }, { 6, 118, 256 }, { 7, 119, 256 }, - { 5, 120, 256 }, { 6, 121, 256 }, { 6, 122, 256 }, { 7, 123, 256 }, { 6, 124, 256 }, { 7, 125, 256 }, { 7, 126, 256 }, { 8, 127, 256 }, - { 2, 128, 256 }, { 3, 129, 256 }, { 3, 130, 256 }, { 4, 131, 256 }, { 3, 132, 256 }, { 4, 133, 256 }, { 4, 134, 256 }, { 5, 135, 256 }, - { 3, 136, 256 }, { 4, 137, 256 }, { 4, 138, 256 }, { 5, 139, 256 }, { 4, 140, 256 }, { 5, 141, 256 }, { 5, 142, 256 }, { 6, 143, 256 }, - { 3, 144, 256 }, { 4, 145, 256 }, { 4, 146, 256 }, { 5, 147, 256 }, { 4, 148, 256 }, { 5, 149, 256 }, { 5, 150, 256 }, { 6, 151, 256 }, - { 4, 152, 256 }, { 5, 153, 256 }, { 5, 154, 256 }, { 6, 155, 256 }, { 5, 156, 256 }, { 6, 157, 256 }, { 6, 158, 256 }, { 7, 159, 256 }, - { 3, 160, 256 }, { 4, 161, 256 }, { 4, 162, 256 }, { 5, 163, 256 }, { 4, 164, 256 }, { 5, 165, 256 }, { 5, 166, 256 }, { 6, 167, 256 }, - { 4, 168, 256 }, { 5, 169, 256 }, { 5, 170, 256 }, { 6, 171, 256 }, { 5, 172, 256 }, { 6, 173, 256 }, { 6, 174, 256 }, { 7, 175, 256 }, - { 4, 176, 256 }, { 5, 177, 256 }, { 5, 178, 256 }, { 6, 179, 256 }, { 5, 180, 256 }, { 6, 181, 256 }, { 6, 182, 256 }, { 7, 183, 256 }, - { 5, 184, 256 }, { 6, 185, 256 }, { 6, 186, 256 }, { 7, 187, 256 }, { 6, 188, 256 }, { 7, 189, 256 }, { 7, 190, 256 }, { 8, 191, 256 }, - { 3, 192, 256 }, { 4, 193, 256 }, { 4, 194, 256 }, { 5, 195, 256 }, { 4, 196, 256 }, { 5, 197, 256 }, { 5, 198, 256 }, { 6, 199, 256 }, - { 4, 200, 256 }, { 5, 201, 256 }, { 5, 202, 256 }, { 6, 203, 256 }, { 5, 204, 256 }, { 6, 205, 256 }, { 6, 206, 256 }, { 7, 207, 256 }, - { 4, 208, 256 }, { 5, 209, 256 }, { 5, 210, 256 }, { 6, 211, 256 }, { 5, 212, 256 }, { 6, 213, 256 }, { 6, 214, 256 }, { 7, 215, 256 }, - { 5, 216, 256 }, { 6, 217, 256 }, { 6, 218, 256 }, { 7, 219, 256 }, { 6, 220, 256 }, { 7, 221, 256 }, { 7, 222, 256 }, { 8, 223, 256 }, - { 4, 224, 256 }, { 5, 225, 256 }, { 5, 226, 256 }, { 6, 227, 256 }, { 5, 228, 256 }, { 6, 229, 256 }, { 6, 230, 256 }, { 7, 231, 256 }, - { 5, 232, 256 }, { 6, 233, 256 }, { 6, 234, 256 }, { 7, 235, 256 }, { 6, 236, 256 }, { 7, 237, 256 }, { 7, 238, 256 }, { 8, 239, 256 }, - { 5, 240, 256 }, { 6, 241, 256 }, { 6, 242, 256 }, { 7, 243, 256 }, { 6, 244, 256 }, { 7, 245, 256 }, { 7, 246, 256 }, { 8, 247, 256 }, - { 6, 248, 256 }, { 7, 249, 256 }, { 7, 250, 256 }, { 8, 251, 256 }, { 7, 252, 256 }, { 8, 253, 256 }, { 8, 254, 256 }, { 9, 255, 256 }, -#if FP_LUT > 9 - { 1, 0, 0 }, { 2, 1, 512 }, { 2, 2, 512 }, { 3, 3, 512 }, { 2, 4, 512 }, { 3, 5, 512 }, { 3, 6, 512 }, { 4, 7, 512 }, - { 2, 8, 512 }, { 3, 9, 512 }, { 3, 10, 512 }, { 4, 11, 512 }, { 3, 12, 512 }, { 4, 13, 512 }, { 4, 14, 512 }, { 5, 15, 512 }, - { 2, 16, 512 }, { 3, 17, 512 }, { 3, 18, 512 }, { 4, 19, 512 }, { 3, 20, 512 }, { 4, 21, 512 }, { 4, 22, 512 }, { 5, 23, 512 }, - { 3, 24, 512 }, { 4, 25, 512 }, { 4, 26, 512 }, { 5, 27, 512 }, { 4, 28, 512 }, { 5, 29, 512 }, { 5, 30, 512 }, { 6, 31, 512 }, - { 2, 32, 512 }, { 3, 33, 512 }, { 3, 34, 512 }, { 4, 35, 512 }, { 3, 36, 512 }, { 4, 37, 512 }, { 4, 38, 512 }, { 5, 39, 512 }, - { 3, 40, 512 }, { 4, 41, 512 }, { 4, 42, 512 }, { 5, 43, 512 }, { 4, 44, 512 }, { 5, 45, 512 }, { 5, 46, 512 }, { 6, 47, 512 }, - { 3, 48, 512 }, { 4, 49, 512 }, { 4, 50, 512 }, { 5, 51, 512 }, { 4, 52, 512 }, { 5, 53, 512 }, { 5, 54, 512 }, { 6, 55, 512 }, - { 4, 56, 512 }, { 5, 57, 512 }, { 5, 58, 512 }, { 6, 59, 512 }, { 5, 60, 512 }, { 6, 61, 512 }, { 6, 62, 512 }, { 7, 63, 512 }, - { 2, 64, 512 }, { 3, 65, 512 }, { 3, 66, 512 }, { 4, 67, 512 }, { 3, 68, 512 }, { 4, 69, 512 }, { 4, 70, 512 }, { 5, 71, 512 }, - { 3, 72, 512 }, { 4, 73, 512 }, { 4, 74, 512 }, { 5, 75, 512 }, { 4, 76, 512 }, { 5, 77, 512 }, { 5, 78, 512 }, { 6, 79, 512 }, - { 3, 80, 512 }, { 4, 81, 512 }, { 4, 82, 512 }, { 5, 83, 512 }, { 4, 84, 512 }, { 5, 85, 512 }, { 5, 86, 512 }, { 6, 87, 512 }, - { 4, 88, 512 }, { 5, 89, 512 }, { 5, 90, 512 }, { 6, 91, 512 }, { 5, 92, 512 }, { 6, 93, 512 }, { 6, 94, 512 }, { 7, 95, 512 }, - { 3, 96, 512 }, { 4, 97, 512 }, { 4, 98, 512 }, { 5, 99, 512 }, { 4, 100, 512 }, { 5, 101, 512 }, { 5, 102, 512 }, { 6, 103, 512 }, - { 4, 104, 512 }, { 5, 105, 512 }, { 5, 106, 512 }, { 6, 107, 512 }, { 5, 108, 512 }, { 6, 109, 512 }, { 6, 110, 512 }, { 7, 111, 512 }, - { 4, 112, 512 }, { 5, 113, 512 }, { 5, 114, 512 }, { 6, 115, 512 }, { 5, 116, 512 }, { 6, 117, 512 }, { 6, 118, 512 }, { 7, 119, 512 }, - { 5, 120, 512 }, { 6, 121, 512 }, { 6, 122, 512 }, { 7, 123, 512 }, { 6, 124, 512 }, { 7, 125, 512 }, { 7, 126, 512 }, { 8, 127, 512 }, - { 2, 128, 512 }, { 3, 129, 512 }, { 3, 130, 512 }, { 4, 131, 512 }, { 3, 132, 512 }, { 4, 133, 512 }, { 4, 134, 512 }, { 5, 135, 512 }, - { 3, 136, 512 }, { 4, 137, 512 }, { 4, 138, 512 }, { 5, 139, 512 }, { 4, 140, 512 }, { 5, 141, 512 }, { 5, 142, 512 }, { 6, 143, 512 }, - { 3, 144, 512 }, { 4, 145, 512 }, { 4, 146, 512 }, { 5, 147, 512 }, { 4, 148, 512 }, { 5, 149, 512 }, { 5, 150, 512 }, { 6, 151, 512 }, - { 4, 152, 512 }, { 5, 153, 512 }, { 5, 154, 512 }, { 6, 155, 512 }, { 5, 156, 512 }, { 6, 157, 512 }, { 6, 158, 512 }, { 7, 159, 512 }, - { 3, 160, 512 }, { 4, 161, 512 }, { 4, 162, 512 }, { 5, 163, 512 }, { 4, 164, 512 }, { 5, 165, 512 }, { 5, 166, 512 }, { 6, 167, 512 }, - { 4, 168, 512 }, { 5, 169, 512 }, { 5, 170, 512 }, { 6, 171, 512 }, { 5, 172, 512 }, { 6, 173, 512 }, { 6, 174, 512 }, { 7, 175, 512 }, - { 4, 176, 512 }, { 5, 177, 512 }, { 5, 178, 512 }, { 6, 179, 512 }, { 5, 180, 512 }, { 6, 181, 512 }, { 6, 182, 512 }, { 7, 183, 512 }, - { 5, 184, 512 }, { 6, 185, 512 }, { 6, 186, 512 }, { 7, 187, 512 }, { 6, 188, 512 }, { 7, 189, 512 }, { 7, 190, 512 }, { 8, 191, 512 }, - { 3, 192, 512 }, { 4, 193, 512 }, { 4, 194, 512 }, { 5, 195, 512 }, { 4, 196, 512 }, { 5, 197, 512 }, { 5, 198, 512 }, { 6, 199, 512 }, - { 4, 200, 512 }, { 5, 201, 512 }, { 5, 202, 512 }, { 6, 203, 512 }, { 5, 204, 512 }, { 6, 205, 512 }, { 6, 206, 512 }, { 7, 207, 512 }, - { 4, 208, 512 }, { 5, 209, 512 }, { 5, 210, 512 }, { 6, 211, 512 }, { 5, 212, 512 }, { 6, 213, 512 }, { 6, 214, 512 }, { 7, 215, 512 }, - { 5, 216, 512 }, { 6, 217, 512 }, { 6, 218, 512 }, { 7, 219, 512 }, { 6, 220, 512 }, { 7, 221, 512 }, { 7, 222, 512 }, { 8, 223, 512 }, - { 4, 224, 512 }, { 5, 225, 512 }, { 5, 226, 512 }, { 6, 227, 512 }, { 5, 228, 512 }, { 6, 229, 512 }, { 6, 230, 512 }, { 7, 231, 512 }, - { 5, 232, 512 }, { 6, 233, 512 }, { 6, 234, 512 }, { 7, 235, 512 }, { 6, 236, 512 }, { 7, 237, 512 }, { 7, 238, 512 }, { 8, 239, 512 }, - { 5, 240, 512 }, { 6, 241, 512 }, { 6, 242, 512 }, { 7, 243, 512 }, { 6, 244, 512 }, { 7, 245, 512 }, { 7, 246, 512 }, { 8, 247, 512 }, - { 6, 248, 512 }, { 7, 249, 512 }, { 7, 250, 512 }, { 8, 251, 512 }, { 7, 252, 512 }, { 8, 253, 512 }, { 8, 254, 512 }, { 9, 255, 512 }, - { 2, 256, 512 }, { 3, 257, 512 }, { 3, 258, 512 }, { 4, 259, 512 }, { 3, 260, 512 }, { 4, 261, 512 }, { 4, 262, 512 }, { 5, 263, 512 }, - { 3, 264, 512 }, { 4, 265, 512 }, { 4, 266, 512 }, { 5, 267, 512 }, { 4, 268, 512 }, { 5, 269, 512 }, { 5, 270, 512 }, { 6, 271, 512 }, - { 3, 272, 512 }, { 4, 273, 512 }, { 4, 274, 512 }, { 5, 275, 512 }, { 4, 276, 512 }, { 5, 277, 512 }, { 5, 278, 512 }, { 6, 279, 512 }, - { 4, 280, 512 }, { 5, 281, 512 }, { 5, 282, 512 }, { 6, 283, 512 }, { 5, 284, 512 }, { 6, 285, 512 }, { 6, 286, 512 }, { 7, 287, 512 }, - { 3, 288, 512 }, { 4, 289, 512 }, { 4, 290, 512 }, { 5, 291, 512 }, { 4, 292, 512 }, { 5, 293, 512 }, { 5, 294, 512 }, { 6, 295, 512 }, - { 4, 296, 512 }, { 5, 297, 512 }, { 5, 298, 512 }, { 6, 299, 512 }, { 5, 300, 512 }, { 6, 301, 512 }, { 6, 302, 512 }, { 7, 303, 512 }, - { 4, 304, 512 }, { 5, 305, 512 }, { 5, 306, 512 }, { 6, 307, 512 }, { 5, 308, 512 }, { 6, 309, 512 }, { 6, 310, 512 }, { 7, 311, 512 }, - { 5, 312, 512 }, { 6, 313, 512 }, { 6, 314, 512 }, { 7, 315, 512 }, { 6, 316, 512 }, { 7, 317, 512 }, { 7, 318, 512 }, { 8, 319, 512 }, - { 3, 320, 512 }, { 4, 321, 512 }, { 4, 322, 512 }, { 5, 323, 512 }, { 4, 324, 512 }, { 5, 325, 512 }, { 5, 326, 512 }, { 6, 327, 512 }, - { 4, 328, 512 }, { 5, 329, 512 }, { 5, 330, 512 }, { 6, 331, 512 }, { 5, 332, 512 }, { 6, 333, 512 }, { 6, 334, 512 }, { 7, 335, 512 }, - { 4, 336, 512 }, { 5, 337, 512 }, { 5, 338, 512 }, { 6, 339, 512 }, { 5, 340, 512 }, { 6, 341, 512 }, { 6, 342, 512 }, { 7, 343, 512 }, - { 5, 344, 512 }, { 6, 345, 512 }, { 6, 346, 512 }, { 7, 347, 512 }, { 6, 348, 512 }, { 7, 349, 512 }, { 7, 350, 512 }, { 8, 351, 512 }, - { 4, 352, 512 }, { 5, 353, 512 }, { 5, 354, 512 }, { 6, 355, 512 }, { 5, 356, 512 }, { 6, 357, 512 }, { 6, 358, 512 }, { 7, 359, 512 }, - { 5, 360, 512 }, { 6, 361, 512 }, { 6, 362, 512 }, { 7, 363, 512 }, { 6, 364, 512 }, { 7, 365, 512 }, { 7, 366, 512 }, { 8, 367, 512 }, - { 5, 368, 512 }, { 6, 369, 512 }, { 6, 370, 512 }, { 7, 371, 512 }, { 6, 372, 512 }, { 7, 373, 512 }, { 7, 374, 512 }, { 8, 375, 512 }, - { 6, 376, 512 }, { 7, 377, 512 }, { 7, 378, 512 }, { 8, 379, 512 }, { 7, 380, 512 }, { 8, 381, 512 }, { 8, 382, 512 }, { 9, 383, 512 }, - { 3, 384, 512 }, { 4, 385, 512 }, { 4, 386, 512 }, { 5, 387, 512 }, { 4, 388, 512 }, { 5, 389, 512 }, { 5, 390, 512 }, { 6, 391, 512 }, - { 4, 392, 512 }, { 5, 393, 512 }, { 5, 394, 512 }, { 6, 395, 512 }, { 5, 396, 512 }, { 6, 397, 512 }, { 6, 398, 512 }, { 7, 399, 512 }, - { 4, 400, 512 }, { 5, 401, 512 }, { 5, 402, 512 }, { 6, 403, 512 }, { 5, 404, 512 }, { 6, 405, 512 }, { 6, 406, 512 }, { 7, 407, 512 }, - { 5, 408, 512 }, { 6, 409, 512 }, { 6, 410, 512 }, { 7, 411, 512 }, { 6, 412, 512 }, { 7, 413, 512 }, { 7, 414, 512 }, { 8, 415, 512 }, - { 4, 416, 512 }, { 5, 417, 512 }, { 5, 418, 512 }, { 6, 419, 512 }, { 5, 420, 512 }, { 6, 421, 512 }, { 6, 422, 512 }, { 7, 423, 512 }, - { 5, 424, 512 }, { 6, 425, 512 }, { 6, 426, 512 }, { 7, 427, 512 }, { 6, 428, 512 }, { 7, 429, 512 }, { 7, 430, 512 }, { 8, 431, 512 }, - { 5, 432, 512 }, { 6, 433, 512 }, { 6, 434, 512 }, { 7, 435, 512 }, { 6, 436, 512 }, { 7, 437, 512 }, { 7, 438, 512 }, { 8, 439, 512 }, - { 6, 440, 512 }, { 7, 441, 512 }, { 7, 442, 512 }, { 8, 443, 512 }, { 7, 444, 512 }, { 8, 445, 512 }, { 8, 446, 512 }, { 9, 447, 512 }, - { 4, 448, 512 }, { 5, 449, 512 }, { 5, 450, 512 }, { 6, 451, 512 }, { 5, 452, 512 }, { 6, 453, 512 }, { 6, 454, 512 }, { 7, 455, 512 }, - { 5, 456, 512 }, { 6, 457, 512 }, { 6, 458, 512 }, { 7, 459, 512 }, { 6, 460, 512 }, { 7, 461, 512 }, { 7, 462, 512 }, { 8, 463, 512 }, - { 5, 464, 512 }, { 6, 465, 512 }, { 6, 466, 512 }, { 7, 467, 512 }, { 6, 468, 512 }, { 7, 469, 512 }, { 7, 470, 512 }, { 8, 471, 512 }, - { 6, 472, 512 }, { 7, 473, 512 }, { 7, 474, 512 }, { 8, 475, 512 }, { 7, 476, 512 }, { 8, 477, 512 }, { 8, 478, 512 }, { 9, 479, 512 }, - { 5, 480, 512 }, { 6, 481, 512 }, { 6, 482, 512 }, { 7, 483, 512 }, { 6, 484, 512 }, { 7, 485, 512 }, { 7, 486, 512 }, { 8, 487, 512 }, - { 6, 488, 512 }, { 7, 489, 512 }, { 7, 490, 512 }, { 8, 491, 512 }, { 7, 492, 512 }, { 8, 493, 512 }, { 8, 494, 512 }, { 9, 495, 512 }, - { 6, 496, 512 }, { 7, 497, 512 }, { 7, 498, 512 }, { 8, 499, 512 }, { 7, 500, 512 }, { 8, 501, 512 }, { 8, 502, 512 }, { 9, 503, 512 }, - { 7, 504, 512 }, { 8, 505, 512 }, { 8, 506, 512 }, { 9, 507, 512 }, { 8, 508, 512 }, { 9, 509, 512 }, { 9, 510, 512 }, { 10, 511, 512 }, -#if FP_LUT > 10 - { 1, 0, 0 }, { 2, 1, 1024 }, { 2, 2, 1024 }, { 3, 3, 1024 }, { 2, 4, 1024 }, { 3, 5, 1024 }, { 3, 6, 1024 }, { 4, 7, 1024 }, - { 2, 8, 1024 }, { 3, 9, 1024 }, { 3, 10, 1024 }, { 4, 11, 1024 }, { 3, 12, 1024 }, { 4, 13, 1024 }, { 4, 14, 1024 }, { 5, 15, 1024 }, - { 2, 16, 1024 }, { 3, 17, 1024 }, { 3, 18, 1024 }, { 4, 19, 1024 }, { 3, 20, 1024 }, { 4, 21, 1024 }, { 4, 22, 1024 }, { 5, 23, 1024 }, - { 3, 24, 1024 }, { 4, 25, 1024 }, { 4, 26, 1024 }, { 5, 27, 1024 }, { 4, 28, 1024 }, { 5, 29, 1024 }, { 5, 30, 1024 }, { 6, 31, 1024 }, - { 2, 32, 1024 }, { 3, 33, 1024 }, { 3, 34, 1024 }, { 4, 35, 1024 }, { 3, 36, 1024 }, { 4, 37, 1024 }, { 4, 38, 1024 }, { 5, 39, 1024 }, - { 3, 40, 1024 }, { 4, 41, 1024 }, { 4, 42, 1024 }, { 5, 43, 1024 }, { 4, 44, 1024 }, { 5, 45, 1024 }, { 5, 46, 1024 }, { 6, 47, 1024 }, - { 3, 48, 1024 }, { 4, 49, 1024 }, { 4, 50, 1024 }, { 5, 51, 1024 }, { 4, 52, 1024 }, { 5, 53, 1024 }, { 5, 54, 1024 }, { 6, 55, 1024 }, - { 4, 56, 1024 }, { 5, 57, 1024 }, { 5, 58, 1024 }, { 6, 59, 1024 }, { 5, 60, 1024 }, { 6, 61, 1024 }, { 6, 62, 1024 }, { 7, 63, 1024 }, - { 2, 64, 1024 }, { 3, 65, 1024 }, { 3, 66, 1024 }, { 4, 67, 1024 }, { 3, 68, 1024 }, { 4, 69, 1024 }, { 4, 70, 1024 }, { 5, 71, 1024 }, - { 3, 72, 1024 }, { 4, 73, 1024 }, { 4, 74, 1024 }, { 5, 75, 1024 }, { 4, 76, 1024 }, { 5, 77, 1024 }, { 5, 78, 1024 }, { 6, 79, 1024 }, - { 3, 80, 1024 }, { 4, 81, 1024 }, { 4, 82, 1024 }, { 5, 83, 1024 }, { 4, 84, 1024 }, { 5, 85, 1024 }, { 5, 86, 1024 }, { 6, 87, 1024 }, - { 4, 88, 1024 }, { 5, 89, 1024 }, { 5, 90, 1024 }, { 6, 91, 1024 }, { 5, 92, 1024 }, { 6, 93, 1024 }, { 6, 94, 1024 }, { 7, 95, 1024 }, - { 3, 96, 1024 }, { 4, 97, 1024 }, { 4, 98, 1024 }, { 5, 99, 1024 }, { 4, 100, 1024 }, { 5, 101, 1024 }, { 5, 102, 1024 }, { 6, 103, 1024 }, - { 4, 104, 1024 }, { 5, 105, 1024 }, { 5, 106, 1024 }, { 6, 107, 1024 }, { 5, 108, 1024 }, { 6, 109, 1024 }, { 6, 110, 1024 }, { 7, 111, 1024 }, - { 4, 112, 1024 }, { 5, 113, 1024 }, { 5, 114, 1024 }, { 6, 115, 1024 }, { 5, 116, 1024 }, { 6, 117, 1024 }, { 6, 118, 1024 }, { 7, 119, 1024 }, - { 5, 120, 1024 }, { 6, 121, 1024 }, { 6, 122, 1024 }, { 7, 123, 1024 }, { 6, 124, 1024 }, { 7, 125, 1024 }, { 7, 126, 1024 }, { 8, 127, 1024 }, - { 2, 128, 1024 }, { 3, 129, 1024 }, { 3, 130, 1024 }, { 4, 131, 1024 }, { 3, 132, 1024 }, { 4, 133, 1024 }, { 4, 134, 1024 }, { 5, 135, 1024 }, - { 3, 136, 1024 }, { 4, 137, 1024 }, { 4, 138, 1024 }, { 5, 139, 1024 }, { 4, 140, 1024 }, { 5, 141, 1024 }, { 5, 142, 1024 }, { 6, 143, 1024 }, - { 3, 144, 1024 }, { 4, 145, 1024 }, { 4, 146, 1024 }, { 5, 147, 1024 }, { 4, 148, 1024 }, { 5, 149, 1024 }, { 5, 150, 1024 }, { 6, 151, 1024 }, - { 4, 152, 1024 }, { 5, 153, 1024 }, { 5, 154, 1024 }, { 6, 155, 1024 }, { 5, 156, 1024 }, { 6, 157, 1024 }, { 6, 158, 1024 }, { 7, 159, 1024 }, - { 3, 160, 1024 }, { 4, 161, 1024 }, { 4, 162, 1024 }, { 5, 163, 1024 }, { 4, 164, 1024 }, { 5, 165, 1024 }, { 5, 166, 1024 }, { 6, 167, 1024 }, - { 4, 168, 1024 }, { 5, 169, 1024 }, { 5, 170, 1024 }, { 6, 171, 1024 }, { 5, 172, 1024 }, { 6, 173, 1024 }, { 6, 174, 1024 }, { 7, 175, 1024 }, - { 4, 176, 1024 }, { 5, 177, 1024 }, { 5, 178, 1024 }, { 6, 179, 1024 }, { 5, 180, 1024 }, { 6, 181, 1024 }, { 6, 182, 1024 }, { 7, 183, 1024 }, - { 5, 184, 1024 }, { 6, 185, 1024 }, { 6, 186, 1024 }, { 7, 187, 1024 }, { 6, 188, 1024 }, { 7, 189, 1024 }, { 7, 190, 1024 }, { 8, 191, 1024 }, - { 3, 192, 1024 }, { 4, 193, 1024 }, { 4, 194, 1024 }, { 5, 195, 1024 }, { 4, 196, 1024 }, { 5, 197, 1024 }, { 5, 198, 1024 }, { 6, 199, 1024 }, - { 4, 200, 1024 }, { 5, 201, 1024 }, { 5, 202, 1024 }, { 6, 203, 1024 }, { 5, 204, 1024 }, { 6, 205, 1024 }, { 6, 206, 1024 }, { 7, 207, 1024 }, - { 4, 208, 1024 }, { 5, 209, 1024 }, { 5, 210, 1024 }, { 6, 211, 1024 }, { 5, 212, 1024 }, { 6, 213, 1024 }, { 6, 214, 1024 }, { 7, 215, 1024 }, - { 5, 216, 1024 }, { 6, 217, 1024 }, { 6, 218, 1024 }, { 7, 219, 1024 }, { 6, 220, 1024 }, { 7, 221, 1024 }, { 7, 222, 1024 }, { 8, 223, 1024 }, - { 4, 224, 1024 }, { 5, 225, 1024 }, { 5, 226, 1024 }, { 6, 227, 1024 }, { 5, 228, 1024 }, { 6, 229, 1024 }, { 6, 230, 1024 }, { 7, 231, 1024 }, - { 5, 232, 1024 }, { 6, 233, 1024 }, { 6, 234, 1024 }, { 7, 235, 1024 }, { 6, 236, 1024 }, { 7, 237, 1024 }, { 7, 238, 1024 }, { 8, 239, 1024 }, - { 5, 240, 1024 }, { 6, 241, 1024 }, { 6, 242, 1024 }, { 7, 243, 1024 }, { 6, 244, 1024 }, { 7, 245, 1024 }, { 7, 246, 1024 }, { 8, 247, 1024 }, - { 6, 248, 1024 }, { 7, 249, 1024 }, { 7, 250, 1024 }, { 8, 251, 1024 }, { 7, 252, 1024 }, { 8, 253, 1024 }, { 8, 254, 1024 }, { 9, 255, 1024 }, - { 2, 256, 1024 }, { 3, 257, 1024 }, { 3, 258, 1024 }, { 4, 259, 1024 }, { 3, 260, 1024 }, { 4, 261, 1024 }, { 4, 262, 1024 }, { 5, 263, 1024 }, - { 3, 264, 1024 }, { 4, 265, 1024 }, { 4, 266, 1024 }, { 5, 267, 1024 }, { 4, 268, 1024 }, { 5, 269, 1024 }, { 5, 270, 1024 }, { 6, 271, 1024 }, - { 3, 272, 1024 }, { 4, 273, 1024 }, { 4, 274, 1024 }, { 5, 275, 1024 }, { 4, 276, 1024 }, { 5, 277, 1024 }, { 5, 278, 1024 }, { 6, 279, 1024 }, - { 4, 280, 1024 }, { 5, 281, 1024 }, { 5, 282, 1024 }, { 6, 283, 1024 }, { 5, 284, 1024 }, { 6, 285, 1024 }, { 6, 286, 1024 }, { 7, 287, 1024 }, - { 3, 288, 1024 }, { 4, 289, 1024 }, { 4, 290, 1024 }, { 5, 291, 1024 }, { 4, 292, 1024 }, { 5, 293, 1024 }, { 5, 294, 1024 }, { 6, 295, 1024 }, - { 4, 296, 1024 }, { 5, 297, 1024 }, { 5, 298, 1024 }, { 6, 299, 1024 }, { 5, 300, 1024 }, { 6, 301, 1024 }, { 6, 302, 1024 }, { 7, 303, 1024 }, - { 4, 304, 1024 }, { 5, 305, 1024 }, { 5, 306, 1024 }, { 6, 307, 1024 }, { 5, 308, 1024 }, { 6, 309, 1024 }, { 6, 310, 1024 }, { 7, 311, 1024 }, - { 5, 312, 1024 }, { 6, 313, 1024 }, { 6, 314, 1024 }, { 7, 315, 1024 }, { 6, 316, 1024 }, { 7, 317, 1024 }, { 7, 318, 1024 }, { 8, 319, 1024 }, - { 3, 320, 1024 }, { 4, 321, 1024 }, { 4, 322, 1024 }, { 5, 323, 1024 }, { 4, 324, 1024 }, { 5, 325, 1024 }, { 5, 326, 1024 }, { 6, 327, 1024 }, - { 4, 328, 1024 }, { 5, 329, 1024 }, { 5, 330, 1024 }, { 6, 331, 1024 }, { 5, 332, 1024 }, { 6, 333, 1024 }, { 6, 334, 1024 }, { 7, 335, 1024 }, - { 4, 336, 1024 }, { 5, 337, 1024 }, { 5, 338, 1024 }, { 6, 339, 1024 }, { 5, 340, 1024 }, { 6, 341, 1024 }, { 6, 342, 1024 }, { 7, 343, 1024 }, - { 5, 344, 1024 }, { 6, 345, 1024 }, { 6, 346, 1024 }, { 7, 347, 1024 }, { 6, 348, 1024 }, { 7, 349, 1024 }, { 7, 350, 1024 }, { 8, 351, 1024 }, - { 4, 352, 1024 }, { 5, 353, 1024 }, { 5, 354, 1024 }, { 6, 355, 1024 }, { 5, 356, 1024 }, { 6, 357, 1024 }, { 6, 358, 1024 }, { 7, 359, 1024 }, - { 5, 360, 1024 }, { 6, 361, 1024 }, { 6, 362, 1024 }, { 7, 363, 1024 }, { 6, 364, 1024 }, { 7, 365, 1024 }, { 7, 366, 1024 }, { 8, 367, 1024 }, - { 5, 368, 1024 }, { 6, 369, 1024 }, { 6, 370, 1024 }, { 7, 371, 1024 }, { 6, 372, 1024 }, { 7, 373, 1024 }, { 7, 374, 1024 }, { 8, 375, 1024 }, - { 6, 376, 1024 }, { 7, 377, 1024 }, { 7, 378, 1024 }, { 8, 379, 1024 }, { 7, 380, 1024 }, { 8, 381, 1024 }, { 8, 382, 1024 }, { 9, 383, 1024 }, - { 3, 384, 1024 }, { 4, 385, 1024 }, { 4, 386, 1024 }, { 5, 387, 1024 }, { 4, 388, 1024 }, { 5, 389, 1024 }, { 5, 390, 1024 }, { 6, 391, 1024 }, - { 4, 392, 1024 }, { 5, 393, 1024 }, { 5, 394, 1024 }, { 6, 395, 1024 }, { 5, 396, 1024 }, { 6, 397, 1024 }, { 6, 398, 1024 }, { 7, 399, 1024 }, - { 4, 400, 1024 }, { 5, 401, 1024 }, { 5, 402, 1024 }, { 6, 403, 1024 }, { 5, 404, 1024 }, { 6, 405, 1024 }, { 6, 406, 1024 }, { 7, 407, 1024 }, - { 5, 408, 1024 }, { 6, 409, 1024 }, { 6, 410, 1024 }, { 7, 411, 1024 }, { 6, 412, 1024 }, { 7, 413, 1024 }, { 7, 414, 1024 }, { 8, 415, 1024 }, - { 4, 416, 1024 }, { 5, 417, 1024 }, { 5, 418, 1024 }, { 6, 419, 1024 }, { 5, 420, 1024 }, { 6, 421, 1024 }, { 6, 422, 1024 }, { 7, 423, 1024 }, - { 5, 424, 1024 }, { 6, 425, 1024 }, { 6, 426, 1024 }, { 7, 427, 1024 }, { 6, 428, 1024 }, { 7, 429, 1024 }, { 7, 430, 1024 }, { 8, 431, 1024 }, - { 5, 432, 1024 }, { 6, 433, 1024 }, { 6, 434, 1024 }, { 7, 435, 1024 }, { 6, 436, 1024 }, { 7, 437, 1024 }, { 7, 438, 1024 }, { 8, 439, 1024 }, - { 6, 440, 1024 }, { 7, 441, 1024 }, { 7, 442, 1024 }, { 8, 443, 1024 }, { 7, 444, 1024 }, { 8, 445, 1024 }, { 8, 446, 1024 }, { 9, 447, 1024 }, - { 4, 448, 1024 }, { 5, 449, 1024 }, { 5, 450, 1024 }, { 6, 451, 1024 }, { 5, 452, 1024 }, { 6, 453, 1024 }, { 6, 454, 1024 }, { 7, 455, 1024 }, - { 5, 456, 1024 }, { 6, 457, 1024 }, { 6, 458, 1024 }, { 7, 459, 1024 }, { 6, 460, 1024 }, { 7, 461, 1024 }, { 7, 462, 1024 }, { 8, 463, 1024 }, - { 5, 464, 1024 }, { 6, 465, 1024 }, { 6, 466, 1024 }, { 7, 467, 1024 }, { 6, 468, 1024 }, { 7, 469, 1024 }, { 7, 470, 1024 }, { 8, 471, 1024 }, - { 6, 472, 1024 }, { 7, 473, 1024 }, { 7, 474, 1024 }, { 8, 475, 1024 }, { 7, 476, 1024 }, { 8, 477, 1024 }, { 8, 478, 1024 }, { 9, 479, 1024 }, - { 5, 480, 1024 }, { 6, 481, 1024 }, { 6, 482, 1024 }, { 7, 483, 1024 }, { 6, 484, 1024 }, { 7, 485, 1024 }, { 7, 486, 1024 }, { 8, 487, 1024 }, - { 6, 488, 1024 }, { 7, 489, 1024 }, { 7, 490, 1024 }, { 8, 491, 1024 }, { 7, 492, 1024 }, { 8, 493, 1024 }, { 8, 494, 1024 }, { 9, 495, 1024 }, - { 6, 496, 1024 }, { 7, 497, 1024 }, { 7, 498, 1024 }, { 8, 499, 1024 }, { 7, 500, 1024 }, { 8, 501, 1024 }, { 8, 502, 1024 }, { 9, 503, 1024 }, - { 7, 504, 1024 }, { 8, 505, 1024 }, { 8, 506, 1024 }, { 9, 507, 1024 }, { 8, 508, 1024 }, { 9, 509, 1024 }, { 9, 510, 1024 }, { 10, 511, 1024 }, - { 2, 512, 1024 }, { 3, 513, 1024 }, { 3, 514, 1024 }, { 4, 515, 1024 }, { 3, 516, 1024 }, { 4, 517, 1024 }, { 4, 518, 1024 }, { 5, 519, 1024 }, - { 3, 520, 1024 }, { 4, 521, 1024 }, { 4, 522, 1024 }, { 5, 523, 1024 }, { 4, 524, 1024 }, { 5, 525, 1024 }, { 5, 526, 1024 }, { 6, 527, 1024 }, - { 3, 528, 1024 }, { 4, 529, 1024 }, { 4, 530, 1024 }, { 5, 531, 1024 }, { 4, 532, 1024 }, { 5, 533, 1024 }, { 5, 534, 1024 }, { 6, 535, 1024 }, - { 4, 536, 1024 }, { 5, 537, 1024 }, { 5, 538, 1024 }, { 6, 539, 1024 }, { 5, 540, 1024 }, { 6, 541, 1024 }, { 6, 542, 1024 }, { 7, 543, 1024 }, - { 3, 544, 1024 }, { 4, 545, 1024 }, { 4, 546, 1024 }, { 5, 547, 1024 }, { 4, 548, 1024 }, { 5, 549, 1024 }, { 5, 550, 1024 }, { 6, 551, 1024 }, - { 4, 552, 1024 }, { 5, 553, 1024 }, { 5, 554, 1024 }, { 6, 555, 1024 }, { 5, 556, 1024 }, { 6, 557, 1024 }, { 6, 558, 1024 }, { 7, 559, 1024 }, - { 4, 560, 1024 }, { 5, 561, 1024 }, { 5, 562, 1024 }, { 6, 563, 1024 }, { 5, 564, 1024 }, { 6, 565, 1024 }, { 6, 566, 1024 }, { 7, 567, 1024 }, - { 5, 568, 1024 }, { 6, 569, 1024 }, { 6, 570, 1024 }, { 7, 571, 1024 }, { 6, 572, 1024 }, { 7, 573, 1024 }, { 7, 574, 1024 }, { 8, 575, 1024 }, - { 3, 576, 1024 }, { 4, 577, 1024 }, { 4, 578, 1024 }, { 5, 579, 1024 }, { 4, 580, 1024 }, { 5, 581, 1024 }, { 5, 582, 1024 }, { 6, 583, 1024 }, - { 4, 584, 1024 }, { 5, 585, 1024 }, { 5, 586, 1024 }, { 6, 587, 1024 }, { 5, 588, 1024 }, { 6, 589, 1024 }, { 6, 590, 1024 }, { 7, 591, 1024 }, - { 4, 592, 1024 }, { 5, 593, 1024 }, { 5, 594, 1024 }, { 6, 595, 1024 }, { 5, 596, 1024 }, { 6, 597, 1024 }, { 6, 598, 1024 }, { 7, 599, 1024 }, - { 5, 600, 1024 }, { 6, 601, 1024 }, { 6, 602, 1024 }, { 7, 603, 1024 }, { 6, 604, 1024 }, { 7, 605, 1024 }, { 7, 606, 1024 }, { 8, 607, 1024 }, - { 4, 608, 1024 }, { 5, 609, 1024 }, { 5, 610, 1024 }, { 6, 611, 1024 }, { 5, 612, 1024 }, { 6, 613, 1024 }, { 6, 614, 1024 }, { 7, 615, 1024 }, - { 5, 616, 1024 }, { 6, 617, 1024 }, { 6, 618, 1024 }, { 7, 619, 1024 }, { 6, 620, 1024 }, { 7, 621, 1024 }, { 7, 622, 1024 }, { 8, 623, 1024 }, - { 5, 624, 1024 }, { 6, 625, 1024 }, { 6, 626, 1024 }, { 7, 627, 1024 }, { 6, 628, 1024 }, { 7, 629, 1024 }, { 7, 630, 1024 }, { 8, 631, 1024 }, - { 6, 632, 1024 }, { 7, 633, 1024 }, { 7, 634, 1024 }, { 8, 635, 1024 }, { 7, 636, 1024 }, { 8, 637, 1024 }, { 8, 638, 1024 }, { 9, 639, 1024 }, - { 3, 640, 1024 }, { 4, 641, 1024 }, { 4, 642, 1024 }, { 5, 643, 1024 }, { 4, 644, 1024 }, { 5, 645, 1024 }, { 5, 646, 1024 }, { 6, 647, 1024 }, - { 4, 648, 1024 }, { 5, 649, 1024 }, { 5, 650, 1024 }, { 6, 651, 1024 }, { 5, 652, 1024 }, { 6, 653, 1024 }, { 6, 654, 1024 }, { 7, 655, 1024 }, - { 4, 656, 1024 }, { 5, 657, 1024 }, { 5, 658, 1024 }, { 6, 659, 1024 }, { 5, 660, 1024 }, { 6, 661, 1024 }, { 6, 662, 1024 }, { 7, 663, 1024 }, - { 5, 664, 1024 }, { 6, 665, 1024 }, { 6, 666, 1024 }, { 7, 667, 1024 }, { 6, 668, 1024 }, { 7, 669, 1024 }, { 7, 670, 1024 }, { 8, 671, 1024 }, - { 4, 672, 1024 }, { 5, 673, 1024 }, { 5, 674, 1024 }, { 6, 675, 1024 }, { 5, 676, 1024 }, { 6, 677, 1024 }, { 6, 678, 1024 }, { 7, 679, 1024 }, - { 5, 680, 1024 }, { 6, 681, 1024 }, { 6, 682, 1024 }, { 7, 683, 1024 }, { 6, 684, 1024 }, { 7, 685, 1024 }, { 7, 686, 1024 }, { 8, 687, 1024 }, - { 5, 688, 1024 }, { 6, 689, 1024 }, { 6, 690, 1024 }, { 7, 691, 1024 }, { 6, 692, 1024 }, { 7, 693, 1024 }, { 7, 694, 1024 }, { 8, 695, 1024 }, - { 6, 696, 1024 }, { 7, 697, 1024 }, { 7, 698, 1024 }, { 8, 699, 1024 }, { 7, 700, 1024 }, { 8, 701, 1024 }, { 8, 702, 1024 }, { 9, 703, 1024 }, - { 4, 704, 1024 }, { 5, 705, 1024 }, { 5, 706, 1024 }, { 6, 707, 1024 }, { 5, 708, 1024 }, { 6, 709, 1024 }, { 6, 710, 1024 }, { 7, 711, 1024 }, - { 5, 712, 1024 }, { 6, 713, 1024 }, { 6, 714, 1024 }, { 7, 715, 1024 }, { 6, 716, 1024 }, { 7, 717, 1024 }, { 7, 718, 1024 }, { 8, 719, 1024 }, - { 5, 720, 1024 }, { 6, 721, 1024 }, { 6, 722, 1024 }, { 7, 723, 1024 }, { 6, 724, 1024 }, { 7, 725, 1024 }, { 7, 726, 1024 }, { 8, 727, 1024 }, - { 6, 728, 1024 }, { 7, 729, 1024 }, { 7, 730, 1024 }, { 8, 731, 1024 }, { 7, 732, 1024 }, { 8, 733, 1024 }, { 8, 734, 1024 }, { 9, 735, 1024 }, - { 5, 736, 1024 }, { 6, 737, 1024 }, { 6, 738, 1024 }, { 7, 739, 1024 }, { 6, 740, 1024 }, { 7, 741, 1024 }, { 7, 742, 1024 }, { 8, 743, 1024 }, - { 6, 744, 1024 }, { 7, 745, 1024 }, { 7, 746, 1024 }, { 8, 747, 1024 }, { 7, 748, 1024 }, { 8, 749, 1024 }, { 8, 750, 1024 }, { 9, 751, 1024 }, - { 6, 752, 1024 }, { 7, 753, 1024 }, { 7, 754, 1024 }, { 8, 755, 1024 }, { 7, 756, 1024 }, { 8, 757, 1024 }, { 8, 758, 1024 }, { 9, 759, 1024 }, - { 7, 760, 1024 }, { 8, 761, 1024 }, { 8, 762, 1024 }, { 9, 763, 1024 }, { 8, 764, 1024 }, { 9, 765, 1024 }, { 9, 766, 1024 }, { 10, 767, 1024 }, - { 3, 768, 1024 }, { 4, 769, 1024 }, { 4, 770, 1024 }, { 5, 771, 1024 }, { 4, 772, 1024 }, { 5, 773, 1024 }, { 5, 774, 1024 }, { 6, 775, 1024 }, - { 4, 776, 1024 }, { 5, 777, 1024 }, { 5, 778, 1024 }, { 6, 779, 1024 }, { 5, 780, 1024 }, { 6, 781, 1024 }, { 6, 782, 1024 }, { 7, 783, 1024 }, - { 4, 784, 1024 }, { 5, 785, 1024 }, { 5, 786, 1024 }, { 6, 787, 1024 }, { 5, 788, 1024 }, { 6, 789, 1024 }, { 6, 790, 1024 }, { 7, 791, 1024 }, - { 5, 792, 1024 }, { 6, 793, 1024 }, { 6, 794, 1024 }, { 7, 795, 1024 }, { 6, 796, 1024 }, { 7, 797, 1024 }, { 7, 798, 1024 }, { 8, 799, 1024 }, - { 4, 800, 1024 }, { 5, 801, 1024 }, { 5, 802, 1024 }, { 6, 803, 1024 }, { 5, 804, 1024 }, { 6, 805, 1024 }, { 6, 806, 1024 }, { 7, 807, 1024 }, - { 5, 808, 1024 }, { 6, 809, 1024 }, { 6, 810, 1024 }, { 7, 811, 1024 }, { 6, 812, 1024 }, { 7, 813, 1024 }, { 7, 814, 1024 }, { 8, 815, 1024 }, - { 5, 816, 1024 }, { 6, 817, 1024 }, { 6, 818, 1024 }, { 7, 819, 1024 }, { 6, 820, 1024 }, { 7, 821, 1024 }, { 7, 822, 1024 }, { 8, 823, 1024 }, - { 6, 824, 1024 }, { 7, 825, 1024 }, { 7, 826, 1024 }, { 8, 827, 1024 }, { 7, 828, 1024 }, { 8, 829, 1024 }, { 8, 830, 1024 }, { 9, 831, 1024 }, - { 4, 832, 1024 }, { 5, 833, 1024 }, { 5, 834, 1024 }, { 6, 835, 1024 }, { 5, 836, 1024 }, { 6, 837, 1024 }, { 6, 838, 1024 }, { 7, 839, 1024 }, - { 5, 840, 1024 }, { 6, 841, 1024 }, { 6, 842, 1024 }, { 7, 843, 1024 }, { 6, 844, 1024 }, { 7, 845, 1024 }, { 7, 846, 1024 }, { 8, 847, 1024 }, - { 5, 848, 1024 }, { 6, 849, 1024 }, { 6, 850, 1024 }, { 7, 851, 1024 }, { 6, 852, 1024 }, { 7, 853, 1024 }, { 7, 854, 1024 }, { 8, 855, 1024 }, - { 6, 856, 1024 }, { 7, 857, 1024 }, { 7, 858, 1024 }, { 8, 859, 1024 }, { 7, 860, 1024 }, { 8, 861, 1024 }, { 8, 862, 1024 }, { 9, 863, 1024 }, - { 5, 864, 1024 }, { 6, 865, 1024 }, { 6, 866, 1024 }, { 7, 867, 1024 }, { 6, 868, 1024 }, { 7, 869, 1024 }, { 7, 870, 1024 }, { 8, 871, 1024 }, - { 6, 872, 1024 }, { 7, 873, 1024 }, { 7, 874, 1024 }, { 8, 875, 1024 }, { 7, 876, 1024 }, { 8, 877, 1024 }, { 8, 878, 1024 }, { 9, 879, 1024 }, - { 6, 880, 1024 }, { 7, 881, 1024 }, { 7, 882, 1024 }, { 8, 883, 1024 }, { 7, 884, 1024 }, { 8, 885, 1024 }, { 8, 886, 1024 }, { 9, 887, 1024 }, - { 7, 888, 1024 }, { 8, 889, 1024 }, { 8, 890, 1024 }, { 9, 891, 1024 }, { 8, 892, 1024 }, { 9, 893, 1024 }, { 9, 894, 1024 }, { 10, 895, 1024 }, - { 4, 896, 1024 }, { 5, 897, 1024 }, { 5, 898, 1024 }, { 6, 899, 1024 }, { 5, 900, 1024 }, { 6, 901, 1024 }, { 6, 902, 1024 }, { 7, 903, 1024 }, - { 5, 904, 1024 }, { 6, 905, 1024 }, { 6, 906, 1024 }, { 7, 907, 1024 }, { 6, 908, 1024 }, { 7, 909, 1024 }, { 7, 910, 1024 }, { 8, 911, 1024 }, - { 5, 912, 1024 }, { 6, 913, 1024 }, { 6, 914, 1024 }, { 7, 915, 1024 }, { 6, 916, 1024 }, { 7, 917, 1024 }, { 7, 918, 1024 }, { 8, 919, 1024 }, - { 6, 920, 1024 }, { 7, 921, 1024 }, { 7, 922, 1024 }, { 8, 923, 1024 }, { 7, 924, 1024 }, { 8, 925, 1024 }, { 8, 926, 1024 }, { 9, 927, 1024 }, - { 5, 928, 1024 }, { 6, 929, 1024 }, { 6, 930, 1024 }, { 7, 931, 1024 }, { 6, 932, 1024 }, { 7, 933, 1024 }, { 7, 934, 1024 }, { 8, 935, 1024 }, - { 6, 936, 1024 }, { 7, 937, 1024 }, { 7, 938, 1024 }, { 8, 939, 1024 }, { 7, 940, 1024 }, { 8, 941, 1024 }, { 8, 942, 1024 }, { 9, 943, 1024 }, - { 6, 944, 1024 }, { 7, 945, 1024 }, { 7, 946, 1024 }, { 8, 947, 1024 }, { 7, 948, 1024 }, { 8, 949, 1024 }, { 8, 950, 1024 }, { 9, 951, 1024 }, - { 7, 952, 1024 }, { 8, 953, 1024 }, { 8, 954, 1024 }, { 9, 955, 1024 }, { 8, 956, 1024 }, { 9, 957, 1024 }, { 9, 958, 1024 }, { 10, 959, 1024 }, - { 5, 960, 1024 }, { 6, 961, 1024 }, { 6, 962, 1024 }, { 7, 963, 1024 }, { 6, 964, 1024 }, { 7, 965, 1024 }, { 7, 966, 1024 }, { 8, 967, 1024 }, - { 6, 968, 1024 }, { 7, 969, 1024 }, { 7, 970, 1024 }, { 8, 971, 1024 }, { 7, 972, 1024 }, { 8, 973, 1024 }, { 8, 974, 1024 }, { 9, 975, 1024 }, - { 6, 976, 1024 }, { 7, 977, 1024 }, { 7, 978, 1024 }, { 8, 979, 1024 }, { 7, 980, 1024 }, { 8, 981, 1024 }, { 8, 982, 1024 }, { 9, 983, 1024 }, - { 7, 984, 1024 }, { 8, 985, 1024 }, { 8, 986, 1024 }, { 9, 987, 1024 }, { 8, 988, 1024 }, { 9, 989, 1024 }, { 9, 990, 1024 }, { 10, 991, 1024 }, - { 6, 992, 1024 }, { 7, 993, 1024 }, { 7, 994, 1024 }, { 8, 995, 1024 }, { 7, 996, 1024 }, { 8, 997, 1024 }, { 8, 998, 1024 }, { 9, 999, 1024 }, - { 7, 1000, 1024 }, { 8, 1001, 1024 }, { 8, 1002, 1024 }, { 9, 1003, 1024 }, { 8, 1004, 1024 }, { 9, 1005, 1024 }, { 9, 1006, 1024 }, { 10, 1007, 1024 }, - { 7, 1008, 1024 }, { 8, 1009, 1024 }, { 8, 1010, 1024 }, { 9, 1011, 1024 }, { 8, 1012, 1024 }, { 9, 1013, 1024 }, { 9, 1014, 1024 }, { 10, 1015, 1024 }, - { 8, 1016, 1024 }, { 9, 1017, 1024 }, { 9, 1018, 1024 }, { 10, 1019, 1024 }, { 9, 1020, 1024 }, { 10, 1021, 1024 }, { 10, 1022, 1024 }, { 11, 1023, 1024 }, -#if FP_LUT > 11 - { 1, 0, 0 }, { 2, 1, 2048 }, { 2, 2, 2048 }, { 3, 3, 2048 }, { 2, 4, 2048 }, { 3, 5, 2048 }, { 3, 6, 2048 }, { 4, 7, 2048 }, - { 2, 8, 2048 }, { 3, 9, 2048 }, { 3, 10, 2048 }, { 4, 11, 2048 }, { 3, 12, 2048 }, { 4, 13, 2048 }, { 4, 14, 2048 }, { 5, 15, 2048 }, - { 2, 16, 2048 }, { 3, 17, 2048 }, { 3, 18, 2048 }, { 4, 19, 2048 }, { 3, 20, 2048 }, { 4, 21, 2048 }, { 4, 22, 2048 }, { 5, 23, 2048 }, - { 3, 24, 2048 }, { 4, 25, 2048 }, { 4, 26, 2048 }, { 5, 27, 2048 }, { 4, 28, 2048 }, { 5, 29, 2048 }, { 5, 30, 2048 }, { 6, 31, 2048 }, - { 2, 32, 2048 }, { 3, 33, 2048 }, { 3, 34, 2048 }, { 4, 35, 2048 }, { 3, 36, 2048 }, { 4, 37, 2048 }, { 4, 38, 2048 }, { 5, 39, 2048 }, - { 3, 40, 2048 }, { 4, 41, 2048 }, { 4, 42, 2048 }, { 5, 43, 2048 }, { 4, 44, 2048 }, { 5, 45, 2048 }, { 5, 46, 2048 }, { 6, 47, 2048 }, - { 3, 48, 2048 }, { 4, 49, 2048 }, { 4, 50, 2048 }, { 5, 51, 2048 }, { 4, 52, 2048 }, { 5, 53, 2048 }, { 5, 54, 2048 }, { 6, 55, 2048 }, - { 4, 56, 2048 }, { 5, 57, 2048 }, { 5, 58, 2048 }, { 6, 59, 2048 }, { 5, 60, 2048 }, { 6, 61, 2048 }, { 6, 62, 2048 }, { 7, 63, 2048 }, - { 2, 64, 2048 }, { 3, 65, 2048 }, { 3, 66, 2048 }, { 4, 67, 2048 }, { 3, 68, 2048 }, { 4, 69, 2048 }, { 4, 70, 2048 }, { 5, 71, 2048 }, - { 3, 72, 2048 }, { 4, 73, 2048 }, { 4, 74, 2048 }, { 5, 75, 2048 }, { 4, 76, 2048 }, { 5, 77, 2048 }, { 5, 78, 2048 }, { 6, 79, 2048 }, - { 3, 80, 2048 }, { 4, 81, 2048 }, { 4, 82, 2048 }, { 5, 83, 2048 }, { 4, 84, 2048 }, { 5, 85, 2048 }, { 5, 86, 2048 }, { 6, 87, 2048 }, - { 4, 88, 2048 }, { 5, 89, 2048 }, { 5, 90, 2048 }, { 6, 91, 2048 }, { 5, 92, 2048 }, { 6, 93, 2048 }, { 6, 94, 2048 }, { 7, 95, 2048 }, - { 3, 96, 2048 }, { 4, 97, 2048 }, { 4, 98, 2048 }, { 5, 99, 2048 }, { 4, 100, 2048 }, { 5, 101, 2048 }, { 5, 102, 2048 }, { 6, 103, 2048 }, - { 4, 104, 2048 }, { 5, 105, 2048 }, { 5, 106, 2048 }, { 6, 107, 2048 }, { 5, 108, 2048 }, { 6, 109, 2048 }, { 6, 110, 2048 }, { 7, 111, 2048 }, - { 4, 112, 2048 }, { 5, 113, 2048 }, { 5, 114, 2048 }, { 6, 115, 2048 }, { 5, 116, 2048 }, { 6, 117, 2048 }, { 6, 118, 2048 }, { 7, 119, 2048 }, - { 5, 120, 2048 }, { 6, 121, 2048 }, { 6, 122, 2048 }, { 7, 123, 2048 }, { 6, 124, 2048 }, { 7, 125, 2048 }, { 7, 126, 2048 }, { 8, 127, 2048 }, - { 2, 128, 2048 }, { 3, 129, 2048 }, { 3, 130, 2048 }, { 4, 131, 2048 }, { 3, 132, 2048 }, { 4, 133, 2048 }, { 4, 134, 2048 }, { 5, 135, 2048 }, - { 3, 136, 2048 }, { 4, 137, 2048 }, { 4, 138, 2048 }, { 5, 139, 2048 }, { 4, 140, 2048 }, { 5, 141, 2048 }, { 5, 142, 2048 }, { 6, 143, 2048 }, - { 3, 144, 2048 }, { 4, 145, 2048 }, { 4, 146, 2048 }, { 5, 147, 2048 }, { 4, 148, 2048 }, { 5, 149, 2048 }, { 5, 150, 2048 }, { 6, 151, 2048 }, - { 4, 152, 2048 }, { 5, 153, 2048 }, { 5, 154, 2048 }, { 6, 155, 2048 }, { 5, 156, 2048 }, { 6, 157, 2048 }, { 6, 158, 2048 }, { 7, 159, 2048 }, - { 3, 160, 2048 }, { 4, 161, 2048 }, { 4, 162, 2048 }, { 5, 163, 2048 }, { 4, 164, 2048 }, { 5, 165, 2048 }, { 5, 166, 2048 }, { 6, 167, 2048 }, - { 4, 168, 2048 }, { 5, 169, 2048 }, { 5, 170, 2048 }, { 6, 171, 2048 }, { 5, 172, 2048 }, { 6, 173, 2048 }, { 6, 174, 2048 }, { 7, 175, 2048 }, - { 4, 176, 2048 }, { 5, 177, 2048 }, { 5, 178, 2048 }, { 6, 179, 2048 }, { 5, 180, 2048 }, { 6, 181, 2048 }, { 6, 182, 2048 }, { 7, 183, 2048 }, - { 5, 184, 2048 }, { 6, 185, 2048 }, { 6, 186, 2048 }, { 7, 187, 2048 }, { 6, 188, 2048 }, { 7, 189, 2048 }, { 7, 190, 2048 }, { 8, 191, 2048 }, - { 3, 192, 2048 }, { 4, 193, 2048 }, { 4, 194, 2048 }, { 5, 195, 2048 }, { 4, 196, 2048 }, { 5, 197, 2048 }, { 5, 198, 2048 }, { 6, 199, 2048 }, - { 4, 200, 2048 }, { 5, 201, 2048 }, { 5, 202, 2048 }, { 6, 203, 2048 }, { 5, 204, 2048 }, { 6, 205, 2048 }, { 6, 206, 2048 }, { 7, 207, 2048 }, - { 4, 208, 2048 }, { 5, 209, 2048 }, { 5, 210, 2048 }, { 6, 211, 2048 }, { 5, 212, 2048 }, { 6, 213, 2048 }, { 6, 214, 2048 }, { 7, 215, 2048 }, - { 5, 216, 2048 }, { 6, 217, 2048 }, { 6, 218, 2048 }, { 7, 219, 2048 }, { 6, 220, 2048 }, { 7, 221, 2048 }, { 7, 222, 2048 }, { 8, 223, 2048 }, - { 4, 224, 2048 }, { 5, 225, 2048 }, { 5, 226, 2048 }, { 6, 227, 2048 }, { 5, 228, 2048 }, { 6, 229, 2048 }, { 6, 230, 2048 }, { 7, 231, 2048 }, - { 5, 232, 2048 }, { 6, 233, 2048 }, { 6, 234, 2048 }, { 7, 235, 2048 }, { 6, 236, 2048 }, { 7, 237, 2048 }, { 7, 238, 2048 }, { 8, 239, 2048 }, - { 5, 240, 2048 }, { 6, 241, 2048 }, { 6, 242, 2048 }, { 7, 243, 2048 }, { 6, 244, 2048 }, { 7, 245, 2048 }, { 7, 246, 2048 }, { 8, 247, 2048 }, - { 6, 248, 2048 }, { 7, 249, 2048 }, { 7, 250, 2048 }, { 8, 251, 2048 }, { 7, 252, 2048 }, { 8, 253, 2048 }, { 8, 254, 2048 }, { 9, 255, 2048 }, - { 2, 256, 2048 }, { 3, 257, 2048 }, { 3, 258, 2048 }, { 4, 259, 2048 }, { 3, 260, 2048 }, { 4, 261, 2048 }, { 4, 262, 2048 }, { 5, 263, 2048 }, - { 3, 264, 2048 }, { 4, 265, 2048 }, { 4, 266, 2048 }, { 5, 267, 2048 }, { 4, 268, 2048 }, { 5, 269, 2048 }, { 5, 270, 2048 }, { 6, 271, 2048 }, - { 3, 272, 2048 }, { 4, 273, 2048 }, { 4, 274, 2048 }, { 5, 275, 2048 }, { 4, 276, 2048 }, { 5, 277, 2048 }, { 5, 278, 2048 }, { 6, 279, 2048 }, - { 4, 280, 2048 }, { 5, 281, 2048 }, { 5, 282, 2048 }, { 6, 283, 2048 }, { 5, 284, 2048 }, { 6, 285, 2048 }, { 6, 286, 2048 }, { 7, 287, 2048 }, - { 3, 288, 2048 }, { 4, 289, 2048 }, { 4, 290, 2048 }, { 5, 291, 2048 }, { 4, 292, 2048 }, { 5, 293, 2048 }, { 5, 294, 2048 }, { 6, 295, 2048 }, - { 4, 296, 2048 }, { 5, 297, 2048 }, { 5, 298, 2048 }, { 6, 299, 2048 }, { 5, 300, 2048 }, { 6, 301, 2048 }, { 6, 302, 2048 }, { 7, 303, 2048 }, - { 4, 304, 2048 }, { 5, 305, 2048 }, { 5, 306, 2048 }, { 6, 307, 2048 }, { 5, 308, 2048 }, { 6, 309, 2048 }, { 6, 310, 2048 }, { 7, 311, 2048 }, - { 5, 312, 2048 }, { 6, 313, 2048 }, { 6, 314, 2048 }, { 7, 315, 2048 }, { 6, 316, 2048 }, { 7, 317, 2048 }, { 7, 318, 2048 }, { 8, 319, 2048 }, - { 3, 320, 2048 }, { 4, 321, 2048 }, { 4, 322, 2048 }, { 5, 323, 2048 }, { 4, 324, 2048 }, { 5, 325, 2048 }, { 5, 326, 2048 }, { 6, 327, 2048 }, - { 4, 328, 2048 }, { 5, 329, 2048 }, { 5, 330, 2048 }, { 6, 331, 2048 }, { 5, 332, 2048 }, { 6, 333, 2048 }, { 6, 334, 2048 }, { 7, 335, 2048 }, - { 4, 336, 2048 }, { 5, 337, 2048 }, { 5, 338, 2048 }, { 6, 339, 2048 }, { 5, 340, 2048 }, { 6, 341, 2048 }, { 6, 342, 2048 }, { 7, 343, 2048 }, - { 5, 344, 2048 }, { 6, 345, 2048 }, { 6, 346, 2048 }, { 7, 347, 2048 }, { 6, 348, 2048 }, { 7, 349, 2048 }, { 7, 350, 2048 }, { 8, 351, 2048 }, - { 4, 352, 2048 }, { 5, 353, 2048 }, { 5, 354, 2048 }, { 6, 355, 2048 }, { 5, 356, 2048 }, { 6, 357, 2048 }, { 6, 358, 2048 }, { 7, 359, 2048 }, - { 5, 360, 2048 }, { 6, 361, 2048 }, { 6, 362, 2048 }, { 7, 363, 2048 }, { 6, 364, 2048 }, { 7, 365, 2048 }, { 7, 366, 2048 }, { 8, 367, 2048 }, - { 5, 368, 2048 }, { 6, 369, 2048 }, { 6, 370, 2048 }, { 7, 371, 2048 }, { 6, 372, 2048 }, { 7, 373, 2048 }, { 7, 374, 2048 }, { 8, 375, 2048 }, - { 6, 376, 2048 }, { 7, 377, 2048 }, { 7, 378, 2048 }, { 8, 379, 2048 }, { 7, 380, 2048 }, { 8, 381, 2048 }, { 8, 382, 2048 }, { 9, 383, 2048 }, - { 3, 384, 2048 }, { 4, 385, 2048 }, { 4, 386, 2048 }, { 5, 387, 2048 }, { 4, 388, 2048 }, { 5, 389, 2048 }, { 5, 390, 2048 }, { 6, 391, 2048 }, - { 4, 392, 2048 }, { 5, 393, 2048 }, { 5, 394, 2048 }, { 6, 395, 2048 }, { 5, 396, 2048 }, { 6, 397, 2048 }, { 6, 398, 2048 }, { 7, 399, 2048 }, - { 4, 400, 2048 }, { 5, 401, 2048 }, { 5, 402, 2048 }, { 6, 403, 2048 }, { 5, 404, 2048 }, { 6, 405, 2048 }, { 6, 406, 2048 }, { 7, 407, 2048 }, - { 5, 408, 2048 }, { 6, 409, 2048 }, { 6, 410, 2048 }, { 7, 411, 2048 }, { 6, 412, 2048 }, { 7, 413, 2048 }, { 7, 414, 2048 }, { 8, 415, 2048 }, - { 4, 416, 2048 }, { 5, 417, 2048 }, { 5, 418, 2048 }, { 6, 419, 2048 }, { 5, 420, 2048 }, { 6, 421, 2048 }, { 6, 422, 2048 }, { 7, 423, 2048 }, - { 5, 424, 2048 }, { 6, 425, 2048 }, { 6, 426, 2048 }, { 7, 427, 2048 }, { 6, 428, 2048 }, { 7, 429, 2048 }, { 7, 430, 2048 }, { 8, 431, 2048 }, - { 5, 432, 2048 }, { 6, 433, 2048 }, { 6, 434, 2048 }, { 7, 435, 2048 }, { 6, 436, 2048 }, { 7, 437, 2048 }, { 7, 438, 2048 }, { 8, 439, 2048 }, - { 6, 440, 2048 }, { 7, 441, 2048 }, { 7, 442, 2048 }, { 8, 443, 2048 }, { 7, 444, 2048 }, { 8, 445, 2048 }, { 8, 446, 2048 }, { 9, 447, 2048 }, - { 4, 448, 2048 }, { 5, 449, 2048 }, { 5, 450, 2048 }, { 6, 451, 2048 }, { 5, 452, 2048 }, { 6, 453, 2048 }, { 6, 454, 2048 }, { 7, 455, 2048 }, - { 5, 456, 2048 }, { 6, 457, 2048 }, { 6, 458, 2048 }, { 7, 459, 2048 }, { 6, 460, 2048 }, { 7, 461, 2048 }, { 7, 462, 2048 }, { 8, 463, 2048 }, - { 5, 464, 2048 }, { 6, 465, 2048 }, { 6, 466, 2048 }, { 7, 467, 2048 }, { 6, 468, 2048 }, { 7, 469, 2048 }, { 7, 470, 2048 }, { 8, 471, 2048 }, - { 6, 472, 2048 }, { 7, 473, 2048 }, { 7, 474, 2048 }, { 8, 475, 2048 }, { 7, 476, 2048 }, { 8, 477, 2048 }, { 8, 478, 2048 }, { 9, 479, 2048 }, - { 5, 480, 2048 }, { 6, 481, 2048 }, { 6, 482, 2048 }, { 7, 483, 2048 }, { 6, 484, 2048 }, { 7, 485, 2048 }, { 7, 486, 2048 }, { 8, 487, 2048 }, - { 6, 488, 2048 }, { 7, 489, 2048 }, { 7, 490, 2048 }, { 8, 491, 2048 }, { 7, 492, 2048 }, { 8, 493, 2048 }, { 8, 494, 2048 }, { 9, 495, 2048 }, - { 6, 496, 2048 }, { 7, 497, 2048 }, { 7, 498, 2048 }, { 8, 499, 2048 }, { 7, 500, 2048 }, { 8, 501, 2048 }, { 8, 502, 2048 }, { 9, 503, 2048 }, - { 7, 504, 2048 }, { 8, 505, 2048 }, { 8, 506, 2048 }, { 9, 507, 2048 }, { 8, 508, 2048 }, { 9, 509, 2048 }, { 9, 510, 2048 }, { 10, 511, 2048 }, - { 2, 512, 2048 }, { 3, 513, 2048 }, { 3, 514, 2048 }, { 4, 515, 2048 }, { 3, 516, 2048 }, { 4, 517, 2048 }, { 4, 518, 2048 }, { 5, 519, 2048 }, - { 3, 520, 2048 }, { 4, 521, 2048 }, { 4, 522, 2048 }, { 5, 523, 2048 }, { 4, 524, 2048 }, { 5, 525, 2048 }, { 5, 526, 2048 }, { 6, 527, 2048 }, - { 3, 528, 2048 }, { 4, 529, 2048 }, { 4, 530, 2048 }, { 5, 531, 2048 }, { 4, 532, 2048 }, { 5, 533, 2048 }, { 5, 534, 2048 }, { 6, 535, 2048 }, - { 4, 536, 2048 }, { 5, 537, 2048 }, { 5, 538, 2048 }, { 6, 539, 2048 }, { 5, 540, 2048 }, { 6, 541, 2048 }, { 6, 542, 2048 }, { 7, 543, 2048 }, - { 3, 544, 2048 }, { 4, 545, 2048 }, { 4, 546, 2048 }, { 5, 547, 2048 }, { 4, 548, 2048 }, { 5, 549, 2048 }, { 5, 550, 2048 }, { 6, 551, 2048 }, - { 4, 552, 2048 }, { 5, 553, 2048 }, { 5, 554, 2048 }, { 6, 555, 2048 }, { 5, 556, 2048 }, { 6, 557, 2048 }, { 6, 558, 2048 }, { 7, 559, 2048 }, - { 4, 560, 2048 }, { 5, 561, 2048 }, { 5, 562, 2048 }, { 6, 563, 2048 }, { 5, 564, 2048 }, { 6, 565, 2048 }, { 6, 566, 2048 }, { 7, 567, 2048 }, - { 5, 568, 2048 }, { 6, 569, 2048 }, { 6, 570, 2048 }, { 7, 571, 2048 }, { 6, 572, 2048 }, { 7, 573, 2048 }, { 7, 574, 2048 }, { 8, 575, 2048 }, - { 3, 576, 2048 }, { 4, 577, 2048 }, { 4, 578, 2048 }, { 5, 579, 2048 }, { 4, 580, 2048 }, { 5, 581, 2048 }, { 5, 582, 2048 }, { 6, 583, 2048 }, - { 4, 584, 2048 }, { 5, 585, 2048 }, { 5, 586, 2048 }, { 6, 587, 2048 }, { 5, 588, 2048 }, { 6, 589, 2048 }, { 6, 590, 2048 }, { 7, 591, 2048 }, - { 4, 592, 2048 }, { 5, 593, 2048 }, { 5, 594, 2048 }, { 6, 595, 2048 }, { 5, 596, 2048 }, { 6, 597, 2048 }, { 6, 598, 2048 }, { 7, 599, 2048 }, - { 5, 600, 2048 }, { 6, 601, 2048 }, { 6, 602, 2048 }, { 7, 603, 2048 }, { 6, 604, 2048 }, { 7, 605, 2048 }, { 7, 606, 2048 }, { 8, 607, 2048 }, - { 4, 608, 2048 }, { 5, 609, 2048 }, { 5, 610, 2048 }, { 6, 611, 2048 }, { 5, 612, 2048 }, { 6, 613, 2048 }, { 6, 614, 2048 }, { 7, 615, 2048 }, - { 5, 616, 2048 }, { 6, 617, 2048 }, { 6, 618, 2048 }, { 7, 619, 2048 }, { 6, 620, 2048 }, { 7, 621, 2048 }, { 7, 622, 2048 }, { 8, 623, 2048 }, - { 5, 624, 2048 }, { 6, 625, 2048 }, { 6, 626, 2048 }, { 7, 627, 2048 }, { 6, 628, 2048 }, { 7, 629, 2048 }, { 7, 630, 2048 }, { 8, 631, 2048 }, - { 6, 632, 2048 }, { 7, 633, 2048 }, { 7, 634, 2048 }, { 8, 635, 2048 }, { 7, 636, 2048 }, { 8, 637, 2048 }, { 8, 638, 2048 }, { 9, 639, 2048 }, - { 3, 640, 2048 }, { 4, 641, 2048 }, { 4, 642, 2048 }, { 5, 643, 2048 }, { 4, 644, 2048 }, { 5, 645, 2048 }, { 5, 646, 2048 }, { 6, 647, 2048 }, - { 4, 648, 2048 }, { 5, 649, 2048 }, { 5, 650, 2048 }, { 6, 651, 2048 }, { 5, 652, 2048 }, { 6, 653, 2048 }, { 6, 654, 2048 }, { 7, 655, 2048 }, - { 4, 656, 2048 }, { 5, 657, 2048 }, { 5, 658, 2048 }, { 6, 659, 2048 }, { 5, 660, 2048 }, { 6, 661, 2048 }, { 6, 662, 2048 }, { 7, 663, 2048 }, - { 5, 664, 2048 }, { 6, 665, 2048 }, { 6, 666, 2048 }, { 7, 667, 2048 }, { 6, 668, 2048 }, { 7, 669, 2048 }, { 7, 670, 2048 }, { 8, 671, 2048 }, - { 4, 672, 2048 }, { 5, 673, 2048 }, { 5, 674, 2048 }, { 6, 675, 2048 }, { 5, 676, 2048 }, { 6, 677, 2048 }, { 6, 678, 2048 }, { 7, 679, 2048 }, - { 5, 680, 2048 }, { 6, 681, 2048 }, { 6, 682, 2048 }, { 7, 683, 2048 }, { 6, 684, 2048 }, { 7, 685, 2048 }, { 7, 686, 2048 }, { 8, 687, 2048 }, - { 5, 688, 2048 }, { 6, 689, 2048 }, { 6, 690, 2048 }, { 7, 691, 2048 }, { 6, 692, 2048 }, { 7, 693, 2048 }, { 7, 694, 2048 }, { 8, 695, 2048 }, - { 6, 696, 2048 }, { 7, 697, 2048 }, { 7, 698, 2048 }, { 8, 699, 2048 }, { 7, 700, 2048 }, { 8, 701, 2048 }, { 8, 702, 2048 }, { 9, 703, 2048 }, - { 4, 704, 2048 }, { 5, 705, 2048 }, { 5, 706, 2048 }, { 6, 707, 2048 }, { 5, 708, 2048 }, { 6, 709, 2048 }, { 6, 710, 2048 }, { 7, 711, 2048 }, - { 5, 712, 2048 }, { 6, 713, 2048 }, { 6, 714, 2048 }, { 7, 715, 2048 }, { 6, 716, 2048 }, { 7, 717, 2048 }, { 7, 718, 2048 }, { 8, 719, 2048 }, - { 5, 720, 2048 }, { 6, 721, 2048 }, { 6, 722, 2048 }, { 7, 723, 2048 }, { 6, 724, 2048 }, { 7, 725, 2048 }, { 7, 726, 2048 }, { 8, 727, 2048 }, - { 6, 728, 2048 }, { 7, 729, 2048 }, { 7, 730, 2048 }, { 8, 731, 2048 }, { 7, 732, 2048 }, { 8, 733, 2048 }, { 8, 734, 2048 }, { 9, 735, 2048 }, - { 5, 736, 2048 }, { 6, 737, 2048 }, { 6, 738, 2048 }, { 7, 739, 2048 }, { 6, 740, 2048 }, { 7, 741, 2048 }, { 7, 742, 2048 }, { 8, 743, 2048 }, - { 6, 744, 2048 }, { 7, 745, 2048 }, { 7, 746, 2048 }, { 8, 747, 2048 }, { 7, 748, 2048 }, { 8, 749, 2048 }, { 8, 750, 2048 }, { 9, 751, 2048 }, - { 6, 752, 2048 }, { 7, 753, 2048 }, { 7, 754, 2048 }, { 8, 755, 2048 }, { 7, 756, 2048 }, { 8, 757, 2048 }, { 8, 758, 2048 }, { 9, 759, 2048 }, - { 7, 760, 2048 }, { 8, 761, 2048 }, { 8, 762, 2048 }, { 9, 763, 2048 }, { 8, 764, 2048 }, { 9, 765, 2048 }, { 9, 766, 2048 }, { 10, 767, 2048 }, - { 3, 768, 2048 }, { 4, 769, 2048 }, { 4, 770, 2048 }, { 5, 771, 2048 }, { 4, 772, 2048 }, { 5, 773, 2048 }, { 5, 774, 2048 }, { 6, 775, 2048 }, - { 4, 776, 2048 }, { 5, 777, 2048 }, { 5, 778, 2048 }, { 6, 779, 2048 }, { 5, 780, 2048 }, { 6, 781, 2048 }, { 6, 782, 2048 }, { 7, 783, 2048 }, - { 4, 784, 2048 }, { 5, 785, 2048 }, { 5, 786, 2048 }, { 6, 787, 2048 }, { 5, 788, 2048 }, { 6, 789, 2048 }, { 6, 790, 2048 }, { 7, 791, 2048 }, - { 5, 792, 2048 }, { 6, 793, 2048 }, { 6, 794, 2048 }, { 7, 795, 2048 }, { 6, 796, 2048 }, { 7, 797, 2048 }, { 7, 798, 2048 }, { 8, 799, 2048 }, - { 4, 800, 2048 }, { 5, 801, 2048 }, { 5, 802, 2048 }, { 6, 803, 2048 }, { 5, 804, 2048 }, { 6, 805, 2048 }, { 6, 806, 2048 }, { 7, 807, 2048 }, - { 5, 808, 2048 }, { 6, 809, 2048 }, { 6, 810, 2048 }, { 7, 811, 2048 }, { 6, 812, 2048 }, { 7, 813, 2048 }, { 7, 814, 2048 }, { 8, 815, 2048 }, - { 5, 816, 2048 }, { 6, 817, 2048 }, { 6, 818, 2048 }, { 7, 819, 2048 }, { 6, 820, 2048 }, { 7, 821, 2048 }, { 7, 822, 2048 }, { 8, 823, 2048 }, - { 6, 824, 2048 }, { 7, 825, 2048 }, { 7, 826, 2048 }, { 8, 827, 2048 }, { 7, 828, 2048 }, { 8, 829, 2048 }, { 8, 830, 2048 }, { 9, 831, 2048 }, - { 4, 832, 2048 }, { 5, 833, 2048 }, { 5, 834, 2048 }, { 6, 835, 2048 }, { 5, 836, 2048 }, { 6, 837, 2048 }, { 6, 838, 2048 }, { 7, 839, 2048 }, - { 5, 840, 2048 }, { 6, 841, 2048 }, { 6, 842, 2048 }, { 7, 843, 2048 }, { 6, 844, 2048 }, { 7, 845, 2048 }, { 7, 846, 2048 }, { 8, 847, 2048 }, - { 5, 848, 2048 }, { 6, 849, 2048 }, { 6, 850, 2048 }, { 7, 851, 2048 }, { 6, 852, 2048 }, { 7, 853, 2048 }, { 7, 854, 2048 }, { 8, 855, 2048 }, - { 6, 856, 2048 }, { 7, 857, 2048 }, { 7, 858, 2048 }, { 8, 859, 2048 }, { 7, 860, 2048 }, { 8, 861, 2048 }, { 8, 862, 2048 }, { 9, 863, 2048 }, - { 5, 864, 2048 }, { 6, 865, 2048 }, { 6, 866, 2048 }, { 7, 867, 2048 }, { 6, 868, 2048 }, { 7, 869, 2048 }, { 7, 870, 2048 }, { 8, 871, 2048 }, - { 6, 872, 2048 }, { 7, 873, 2048 }, { 7, 874, 2048 }, { 8, 875, 2048 }, { 7, 876, 2048 }, { 8, 877, 2048 }, { 8, 878, 2048 }, { 9, 879, 2048 }, - { 6, 880, 2048 }, { 7, 881, 2048 }, { 7, 882, 2048 }, { 8, 883, 2048 }, { 7, 884, 2048 }, { 8, 885, 2048 }, { 8, 886, 2048 }, { 9, 887, 2048 }, - { 7, 888, 2048 }, { 8, 889, 2048 }, { 8, 890, 2048 }, { 9, 891, 2048 }, { 8, 892, 2048 }, { 9, 893, 2048 }, { 9, 894, 2048 }, { 10, 895, 2048 }, - { 4, 896, 2048 }, { 5, 897, 2048 }, { 5, 898, 2048 }, { 6, 899, 2048 }, { 5, 900, 2048 }, { 6, 901, 2048 }, { 6, 902, 2048 }, { 7, 903, 2048 }, - { 5, 904, 2048 }, { 6, 905, 2048 }, { 6, 906, 2048 }, { 7, 907, 2048 }, { 6, 908, 2048 }, { 7, 909, 2048 }, { 7, 910, 2048 }, { 8, 911, 2048 }, - { 5, 912, 2048 }, { 6, 913, 2048 }, { 6, 914, 2048 }, { 7, 915, 2048 }, { 6, 916, 2048 }, { 7, 917, 2048 }, { 7, 918, 2048 }, { 8, 919, 2048 }, - { 6, 920, 2048 }, { 7, 921, 2048 }, { 7, 922, 2048 }, { 8, 923, 2048 }, { 7, 924, 2048 }, { 8, 925, 2048 }, { 8, 926, 2048 }, { 9, 927, 2048 }, - { 5, 928, 2048 }, { 6, 929, 2048 }, { 6, 930, 2048 }, { 7, 931, 2048 }, { 6, 932, 2048 }, { 7, 933, 2048 }, { 7, 934, 2048 }, { 8, 935, 2048 }, - { 6, 936, 2048 }, { 7, 937, 2048 }, { 7, 938, 2048 }, { 8, 939, 2048 }, { 7, 940, 2048 }, { 8, 941, 2048 }, { 8, 942, 2048 }, { 9, 943, 2048 }, - { 6, 944, 2048 }, { 7, 945, 2048 }, { 7, 946, 2048 }, { 8, 947, 2048 }, { 7, 948, 2048 }, { 8, 949, 2048 }, { 8, 950, 2048 }, { 9, 951, 2048 }, - { 7, 952, 2048 }, { 8, 953, 2048 }, { 8, 954, 2048 }, { 9, 955, 2048 }, { 8, 956, 2048 }, { 9, 957, 2048 }, { 9, 958, 2048 }, { 10, 959, 2048 }, - { 5, 960, 2048 }, { 6, 961, 2048 }, { 6, 962, 2048 }, { 7, 963, 2048 }, { 6, 964, 2048 }, { 7, 965, 2048 }, { 7, 966, 2048 }, { 8, 967, 2048 }, - { 6, 968, 2048 }, { 7, 969, 2048 }, { 7, 970, 2048 }, { 8, 971, 2048 }, { 7, 972, 2048 }, { 8, 973, 2048 }, { 8, 974, 2048 }, { 9, 975, 2048 }, - { 6, 976, 2048 }, { 7, 977, 2048 }, { 7, 978, 2048 }, { 8, 979, 2048 }, { 7, 980, 2048 }, { 8, 981, 2048 }, { 8, 982, 2048 }, { 9, 983, 2048 }, - { 7, 984, 2048 }, { 8, 985, 2048 }, { 8, 986, 2048 }, { 9, 987, 2048 }, { 8, 988, 2048 }, { 9, 989, 2048 }, { 9, 990, 2048 }, { 10, 991, 2048 }, - { 6, 992, 2048 }, { 7, 993, 2048 }, { 7, 994, 2048 }, { 8, 995, 2048 }, { 7, 996, 2048 }, { 8, 997, 2048 }, { 8, 998, 2048 }, { 9, 999, 2048 }, - { 7, 1000, 2048 }, { 8, 1001, 2048 }, { 8, 1002, 2048 }, { 9, 1003, 2048 }, { 8, 1004, 2048 }, { 9, 1005, 2048 }, { 9, 1006, 2048 }, { 10, 1007, 2048 }, - { 7, 1008, 2048 }, { 8, 1009, 2048 }, { 8, 1010, 2048 }, { 9, 1011, 2048 }, { 8, 1012, 2048 }, { 9, 1013, 2048 }, { 9, 1014, 2048 }, { 10, 1015, 2048 }, - { 8, 1016, 2048 }, { 9, 1017, 2048 }, { 9, 1018, 2048 }, { 10, 1019, 2048 }, { 9, 1020, 2048 }, { 10, 1021, 2048 }, { 10, 1022, 2048 }, { 11, 1023, 2048 }, - { 2, 1024, 2048 }, { 3, 1025, 2048 }, { 3, 1026, 2048 }, { 4, 1027, 2048 }, { 3, 1028, 2048 }, { 4, 1029, 2048 }, { 4, 1030, 2048 }, { 5, 1031, 2048 }, - { 3, 1032, 2048 }, { 4, 1033, 2048 }, { 4, 1034, 2048 }, { 5, 1035, 2048 }, { 4, 1036, 2048 }, { 5, 1037, 2048 }, { 5, 1038, 2048 }, { 6, 1039, 2048 }, - { 3, 1040, 2048 }, { 4, 1041, 2048 }, { 4, 1042, 2048 }, { 5, 1043, 2048 }, { 4, 1044, 2048 }, { 5, 1045, 2048 }, { 5, 1046, 2048 }, { 6, 1047, 2048 }, - { 4, 1048, 2048 }, { 5, 1049, 2048 }, { 5, 1050, 2048 }, { 6, 1051, 2048 }, { 5, 1052, 2048 }, { 6, 1053, 2048 }, { 6, 1054, 2048 }, { 7, 1055, 2048 }, - { 3, 1056, 2048 }, { 4, 1057, 2048 }, { 4, 1058, 2048 }, { 5, 1059, 2048 }, { 4, 1060, 2048 }, { 5, 1061, 2048 }, { 5, 1062, 2048 }, { 6, 1063, 2048 }, - { 4, 1064, 2048 }, { 5, 1065, 2048 }, { 5, 1066, 2048 }, { 6, 1067, 2048 }, { 5, 1068, 2048 }, { 6, 1069, 2048 }, { 6, 1070, 2048 }, { 7, 1071, 2048 }, - { 4, 1072, 2048 }, { 5, 1073, 2048 }, { 5, 1074, 2048 }, { 6, 1075, 2048 }, { 5, 1076, 2048 }, { 6, 1077, 2048 }, { 6, 1078, 2048 }, { 7, 1079, 2048 }, - { 5, 1080, 2048 }, { 6, 1081, 2048 }, { 6, 1082, 2048 }, { 7, 1083, 2048 }, { 6, 1084, 2048 }, { 7, 1085, 2048 }, { 7, 1086, 2048 }, { 8, 1087, 2048 }, - { 3, 1088, 2048 }, { 4, 1089, 2048 }, { 4, 1090, 2048 }, { 5, 1091, 2048 }, { 4, 1092, 2048 }, { 5, 1093, 2048 }, { 5, 1094, 2048 }, { 6, 1095, 2048 }, - { 4, 1096, 2048 }, { 5, 1097, 2048 }, { 5, 1098, 2048 }, { 6, 1099, 2048 }, { 5, 1100, 2048 }, { 6, 1101, 2048 }, { 6, 1102, 2048 }, { 7, 1103, 2048 }, - { 4, 1104, 2048 }, { 5, 1105, 2048 }, { 5, 1106, 2048 }, { 6, 1107, 2048 }, { 5, 1108, 2048 }, { 6, 1109, 2048 }, { 6, 1110, 2048 }, { 7, 1111, 2048 }, - { 5, 1112, 2048 }, { 6, 1113, 2048 }, { 6, 1114, 2048 }, { 7, 1115, 2048 }, { 6, 1116, 2048 }, { 7, 1117, 2048 }, { 7, 1118, 2048 }, { 8, 1119, 2048 }, - { 4, 1120, 2048 }, { 5, 1121, 2048 }, { 5, 1122, 2048 }, { 6, 1123, 2048 }, { 5, 1124, 2048 }, { 6, 1125, 2048 }, { 6, 1126, 2048 }, { 7, 1127, 2048 }, - { 5, 1128, 2048 }, { 6, 1129, 2048 }, { 6, 1130, 2048 }, { 7, 1131, 2048 }, { 6, 1132, 2048 }, { 7, 1133, 2048 }, { 7, 1134, 2048 }, { 8, 1135, 2048 }, - { 5, 1136, 2048 }, { 6, 1137, 2048 }, { 6, 1138, 2048 }, { 7, 1139, 2048 }, { 6, 1140, 2048 }, { 7, 1141, 2048 }, { 7, 1142, 2048 }, { 8, 1143, 2048 }, - { 6, 1144, 2048 }, { 7, 1145, 2048 }, { 7, 1146, 2048 }, { 8, 1147, 2048 }, { 7, 1148, 2048 }, { 8, 1149, 2048 }, { 8, 1150, 2048 }, { 9, 1151, 2048 }, - { 3, 1152, 2048 }, { 4, 1153, 2048 }, { 4, 1154, 2048 }, { 5, 1155, 2048 }, { 4, 1156, 2048 }, { 5, 1157, 2048 }, { 5, 1158, 2048 }, { 6, 1159, 2048 }, - { 4, 1160, 2048 }, { 5, 1161, 2048 }, { 5, 1162, 2048 }, { 6, 1163, 2048 }, { 5, 1164, 2048 }, { 6, 1165, 2048 }, { 6, 1166, 2048 }, { 7, 1167, 2048 }, - { 4, 1168, 2048 }, { 5, 1169, 2048 }, { 5, 1170, 2048 }, { 6, 1171, 2048 }, { 5, 1172, 2048 }, { 6, 1173, 2048 }, { 6, 1174, 2048 }, { 7, 1175, 2048 }, - { 5, 1176, 2048 }, { 6, 1177, 2048 }, { 6, 1178, 2048 }, { 7, 1179, 2048 }, { 6, 1180, 2048 }, { 7, 1181, 2048 }, { 7, 1182, 2048 }, { 8, 1183, 2048 }, - { 4, 1184, 2048 }, { 5, 1185, 2048 }, { 5, 1186, 2048 }, { 6, 1187, 2048 }, { 5, 1188, 2048 }, { 6, 1189, 2048 }, { 6, 1190, 2048 }, { 7, 1191, 2048 }, - { 5, 1192, 2048 }, { 6, 1193, 2048 }, { 6, 1194, 2048 }, { 7, 1195, 2048 }, { 6, 1196, 2048 }, { 7, 1197, 2048 }, { 7, 1198, 2048 }, { 8, 1199, 2048 }, - { 5, 1200, 2048 }, { 6, 1201, 2048 }, { 6, 1202, 2048 }, { 7, 1203, 2048 }, { 6, 1204, 2048 }, { 7, 1205, 2048 }, { 7, 1206, 2048 }, { 8, 1207, 2048 }, - { 6, 1208, 2048 }, { 7, 1209, 2048 }, { 7, 1210, 2048 }, { 8, 1211, 2048 }, { 7, 1212, 2048 }, { 8, 1213, 2048 }, { 8, 1214, 2048 }, { 9, 1215, 2048 }, - { 4, 1216, 2048 }, { 5, 1217, 2048 }, { 5, 1218, 2048 }, { 6, 1219, 2048 }, { 5, 1220, 2048 }, { 6, 1221, 2048 }, { 6, 1222, 2048 }, { 7, 1223, 2048 }, - { 5, 1224, 2048 }, { 6, 1225, 2048 }, { 6, 1226, 2048 }, { 7, 1227, 2048 }, { 6, 1228, 2048 }, { 7, 1229, 2048 }, { 7, 1230, 2048 }, { 8, 1231, 2048 }, - { 5, 1232, 2048 }, { 6, 1233, 2048 }, { 6, 1234, 2048 }, { 7, 1235, 2048 }, { 6, 1236, 2048 }, { 7, 1237, 2048 }, { 7, 1238, 2048 }, { 8, 1239, 2048 }, - { 6, 1240, 2048 }, { 7, 1241, 2048 }, { 7, 1242, 2048 }, { 8, 1243, 2048 }, { 7, 1244, 2048 }, { 8, 1245, 2048 }, { 8, 1246, 2048 }, { 9, 1247, 2048 }, - { 5, 1248, 2048 }, { 6, 1249, 2048 }, { 6, 1250, 2048 }, { 7, 1251, 2048 }, { 6, 1252, 2048 }, { 7, 1253, 2048 }, { 7, 1254, 2048 }, { 8, 1255, 2048 }, - { 6, 1256, 2048 }, { 7, 1257, 2048 }, { 7, 1258, 2048 }, { 8, 1259, 2048 }, { 7, 1260, 2048 }, { 8, 1261, 2048 }, { 8, 1262, 2048 }, { 9, 1263, 2048 }, - { 6, 1264, 2048 }, { 7, 1265, 2048 }, { 7, 1266, 2048 }, { 8, 1267, 2048 }, { 7, 1268, 2048 }, { 8, 1269, 2048 }, { 8, 1270, 2048 }, { 9, 1271, 2048 }, - { 7, 1272, 2048 }, { 8, 1273, 2048 }, { 8, 1274, 2048 }, { 9, 1275, 2048 }, { 8, 1276, 2048 }, { 9, 1277, 2048 }, { 9, 1278, 2048 }, { 10, 1279, 2048 }, - { 3, 1280, 2048 }, { 4, 1281, 2048 }, { 4, 1282, 2048 }, { 5, 1283, 2048 }, { 4, 1284, 2048 }, { 5, 1285, 2048 }, { 5, 1286, 2048 }, { 6, 1287, 2048 }, - { 4, 1288, 2048 }, { 5, 1289, 2048 }, { 5, 1290, 2048 }, { 6, 1291, 2048 }, { 5, 1292, 2048 }, { 6, 1293, 2048 }, { 6, 1294, 2048 }, { 7, 1295, 2048 }, - { 4, 1296, 2048 }, { 5, 1297, 2048 }, { 5, 1298, 2048 }, { 6, 1299, 2048 }, { 5, 1300, 2048 }, { 6, 1301, 2048 }, { 6, 1302, 2048 }, { 7, 1303, 2048 }, - { 5, 1304, 2048 }, { 6, 1305, 2048 }, { 6, 1306, 2048 }, { 7, 1307, 2048 }, { 6, 1308, 2048 }, { 7, 1309, 2048 }, { 7, 1310, 2048 }, { 8, 1311, 2048 }, - { 4, 1312, 2048 }, { 5, 1313, 2048 }, { 5, 1314, 2048 }, { 6, 1315, 2048 }, { 5, 1316, 2048 }, { 6, 1317, 2048 }, { 6, 1318, 2048 }, { 7, 1319, 2048 }, - { 5, 1320, 2048 }, { 6, 1321, 2048 }, { 6, 1322, 2048 }, { 7, 1323, 2048 }, { 6, 1324, 2048 }, { 7, 1325, 2048 }, { 7, 1326, 2048 }, { 8, 1327, 2048 }, - { 5, 1328, 2048 }, { 6, 1329, 2048 }, { 6, 1330, 2048 }, { 7, 1331, 2048 }, { 6, 1332, 2048 }, { 7, 1333, 2048 }, { 7, 1334, 2048 }, { 8, 1335, 2048 }, - { 6, 1336, 2048 }, { 7, 1337, 2048 }, { 7, 1338, 2048 }, { 8, 1339, 2048 }, { 7, 1340, 2048 }, { 8, 1341, 2048 }, { 8, 1342, 2048 }, { 9, 1343, 2048 }, - { 4, 1344, 2048 }, { 5, 1345, 2048 }, { 5, 1346, 2048 }, { 6, 1347, 2048 }, { 5, 1348, 2048 }, { 6, 1349, 2048 }, { 6, 1350, 2048 }, { 7, 1351, 2048 }, - { 5, 1352, 2048 }, { 6, 1353, 2048 }, { 6, 1354, 2048 }, { 7, 1355, 2048 }, { 6, 1356, 2048 }, { 7, 1357, 2048 }, { 7, 1358, 2048 }, { 8, 1359, 2048 }, - { 5, 1360, 2048 }, { 6, 1361, 2048 }, { 6, 1362, 2048 }, { 7, 1363, 2048 }, { 6, 1364, 2048 }, { 7, 1365, 2048 }, { 7, 1366, 2048 }, { 8, 1367, 2048 }, - { 6, 1368, 2048 }, { 7, 1369, 2048 }, { 7, 1370, 2048 }, { 8, 1371, 2048 }, { 7, 1372, 2048 }, { 8, 1373, 2048 }, { 8, 1374, 2048 }, { 9, 1375, 2048 }, - { 5, 1376, 2048 }, { 6, 1377, 2048 }, { 6, 1378, 2048 }, { 7, 1379, 2048 }, { 6, 1380, 2048 }, { 7, 1381, 2048 }, { 7, 1382, 2048 }, { 8, 1383, 2048 }, - { 6, 1384, 2048 }, { 7, 1385, 2048 }, { 7, 1386, 2048 }, { 8, 1387, 2048 }, { 7, 1388, 2048 }, { 8, 1389, 2048 }, { 8, 1390, 2048 }, { 9, 1391, 2048 }, - { 6, 1392, 2048 }, { 7, 1393, 2048 }, { 7, 1394, 2048 }, { 8, 1395, 2048 }, { 7, 1396, 2048 }, { 8, 1397, 2048 }, { 8, 1398, 2048 }, { 9, 1399, 2048 }, - { 7, 1400, 2048 }, { 8, 1401, 2048 }, { 8, 1402, 2048 }, { 9, 1403, 2048 }, { 8, 1404, 2048 }, { 9, 1405, 2048 }, { 9, 1406, 2048 }, { 10, 1407, 2048 }, - { 4, 1408, 2048 }, { 5, 1409, 2048 }, { 5, 1410, 2048 }, { 6, 1411, 2048 }, { 5, 1412, 2048 }, { 6, 1413, 2048 }, { 6, 1414, 2048 }, { 7, 1415, 2048 }, - { 5, 1416, 2048 }, { 6, 1417, 2048 }, { 6, 1418, 2048 }, { 7, 1419, 2048 }, { 6, 1420, 2048 }, { 7, 1421, 2048 }, { 7, 1422, 2048 }, { 8, 1423, 2048 }, - { 5, 1424, 2048 }, { 6, 1425, 2048 }, { 6, 1426, 2048 }, { 7, 1427, 2048 }, { 6, 1428, 2048 }, { 7, 1429, 2048 }, { 7, 1430, 2048 }, { 8, 1431, 2048 }, - { 6, 1432, 2048 }, { 7, 1433, 2048 }, { 7, 1434, 2048 }, { 8, 1435, 2048 }, { 7, 1436, 2048 }, { 8, 1437, 2048 }, { 8, 1438, 2048 }, { 9, 1439, 2048 }, - { 5, 1440, 2048 }, { 6, 1441, 2048 }, { 6, 1442, 2048 }, { 7, 1443, 2048 }, { 6, 1444, 2048 }, { 7, 1445, 2048 }, { 7, 1446, 2048 }, { 8, 1447, 2048 }, - { 6, 1448, 2048 }, { 7, 1449, 2048 }, { 7, 1450, 2048 }, { 8, 1451, 2048 }, { 7, 1452, 2048 }, { 8, 1453, 2048 }, { 8, 1454, 2048 }, { 9, 1455, 2048 }, - { 6, 1456, 2048 }, { 7, 1457, 2048 }, { 7, 1458, 2048 }, { 8, 1459, 2048 }, { 7, 1460, 2048 }, { 8, 1461, 2048 }, { 8, 1462, 2048 }, { 9, 1463, 2048 }, - { 7, 1464, 2048 }, { 8, 1465, 2048 }, { 8, 1466, 2048 }, { 9, 1467, 2048 }, { 8, 1468, 2048 }, { 9, 1469, 2048 }, { 9, 1470, 2048 }, { 10, 1471, 2048 }, - { 5, 1472, 2048 }, { 6, 1473, 2048 }, { 6, 1474, 2048 }, { 7, 1475, 2048 }, { 6, 1476, 2048 }, { 7, 1477, 2048 }, { 7, 1478, 2048 }, { 8, 1479, 2048 }, - { 6, 1480, 2048 }, { 7, 1481, 2048 }, { 7, 1482, 2048 }, { 8, 1483, 2048 }, { 7, 1484, 2048 }, { 8, 1485, 2048 }, { 8, 1486, 2048 }, { 9, 1487, 2048 }, - { 6, 1488, 2048 }, { 7, 1489, 2048 }, { 7, 1490, 2048 }, { 8, 1491, 2048 }, { 7, 1492, 2048 }, { 8, 1493, 2048 }, { 8, 1494, 2048 }, { 9, 1495, 2048 }, - { 7, 1496, 2048 }, { 8, 1497, 2048 }, { 8, 1498, 2048 }, { 9, 1499, 2048 }, { 8, 1500, 2048 }, { 9, 1501, 2048 }, { 9, 1502, 2048 }, { 10, 1503, 2048 }, - { 6, 1504, 2048 }, { 7, 1505, 2048 }, { 7, 1506, 2048 }, { 8, 1507, 2048 }, { 7, 1508, 2048 }, { 8, 1509, 2048 }, { 8, 1510, 2048 }, { 9, 1511, 2048 }, - { 7, 1512, 2048 }, { 8, 1513, 2048 }, { 8, 1514, 2048 }, { 9, 1515, 2048 }, { 8, 1516, 2048 }, { 9, 1517, 2048 }, { 9, 1518, 2048 }, { 10, 1519, 2048 }, - { 7, 1520, 2048 }, { 8, 1521, 2048 }, { 8, 1522, 2048 }, { 9, 1523, 2048 }, { 8, 1524, 2048 }, { 9, 1525, 2048 }, { 9, 1526, 2048 }, { 10, 1527, 2048 }, - { 8, 1528, 2048 }, { 9, 1529, 2048 }, { 9, 1530, 2048 }, { 10, 1531, 2048 }, { 9, 1532, 2048 }, { 10, 1533, 2048 }, { 10, 1534, 2048 }, { 11, 1535, 2048 }, - { 3, 1536, 2048 }, { 4, 1537, 2048 }, { 4, 1538, 2048 }, { 5, 1539, 2048 }, { 4, 1540, 2048 }, { 5, 1541, 2048 }, { 5, 1542, 2048 }, { 6, 1543, 2048 }, - { 4, 1544, 2048 }, { 5, 1545, 2048 }, { 5, 1546, 2048 }, { 6, 1547, 2048 }, { 5, 1548, 2048 }, { 6, 1549, 2048 }, { 6, 1550, 2048 }, { 7, 1551, 2048 }, - { 4, 1552, 2048 }, { 5, 1553, 2048 }, { 5, 1554, 2048 }, { 6, 1555, 2048 }, { 5, 1556, 2048 }, { 6, 1557, 2048 }, { 6, 1558, 2048 }, { 7, 1559, 2048 }, - { 5, 1560, 2048 }, { 6, 1561, 2048 }, { 6, 1562, 2048 }, { 7, 1563, 2048 }, { 6, 1564, 2048 }, { 7, 1565, 2048 }, { 7, 1566, 2048 }, { 8, 1567, 2048 }, - { 4, 1568, 2048 }, { 5, 1569, 2048 }, { 5, 1570, 2048 }, { 6, 1571, 2048 }, { 5, 1572, 2048 }, { 6, 1573, 2048 }, { 6, 1574, 2048 }, { 7, 1575, 2048 }, - { 5, 1576, 2048 }, { 6, 1577, 2048 }, { 6, 1578, 2048 }, { 7, 1579, 2048 }, { 6, 1580, 2048 }, { 7, 1581, 2048 }, { 7, 1582, 2048 }, { 8, 1583, 2048 }, - { 5, 1584, 2048 }, { 6, 1585, 2048 }, { 6, 1586, 2048 }, { 7, 1587, 2048 }, { 6, 1588, 2048 }, { 7, 1589, 2048 }, { 7, 1590, 2048 }, { 8, 1591, 2048 }, - { 6, 1592, 2048 }, { 7, 1593, 2048 }, { 7, 1594, 2048 }, { 8, 1595, 2048 }, { 7, 1596, 2048 }, { 8, 1597, 2048 }, { 8, 1598, 2048 }, { 9, 1599, 2048 }, - { 4, 1600, 2048 }, { 5, 1601, 2048 }, { 5, 1602, 2048 }, { 6, 1603, 2048 }, { 5, 1604, 2048 }, { 6, 1605, 2048 }, { 6, 1606, 2048 }, { 7, 1607, 2048 }, - { 5, 1608, 2048 }, { 6, 1609, 2048 }, { 6, 1610, 2048 }, { 7, 1611, 2048 }, { 6, 1612, 2048 }, { 7, 1613, 2048 }, { 7, 1614, 2048 }, { 8, 1615, 2048 }, - { 5, 1616, 2048 }, { 6, 1617, 2048 }, { 6, 1618, 2048 }, { 7, 1619, 2048 }, { 6, 1620, 2048 }, { 7, 1621, 2048 }, { 7, 1622, 2048 }, { 8, 1623, 2048 }, - { 6, 1624, 2048 }, { 7, 1625, 2048 }, { 7, 1626, 2048 }, { 8, 1627, 2048 }, { 7, 1628, 2048 }, { 8, 1629, 2048 }, { 8, 1630, 2048 }, { 9, 1631, 2048 }, - { 5, 1632, 2048 }, { 6, 1633, 2048 }, { 6, 1634, 2048 }, { 7, 1635, 2048 }, { 6, 1636, 2048 }, { 7, 1637, 2048 }, { 7, 1638, 2048 }, { 8, 1639, 2048 }, - { 6, 1640, 2048 }, { 7, 1641, 2048 }, { 7, 1642, 2048 }, { 8, 1643, 2048 }, { 7, 1644, 2048 }, { 8, 1645, 2048 }, { 8, 1646, 2048 }, { 9, 1647, 2048 }, - { 6, 1648, 2048 }, { 7, 1649, 2048 }, { 7, 1650, 2048 }, { 8, 1651, 2048 }, { 7, 1652, 2048 }, { 8, 1653, 2048 }, { 8, 1654, 2048 }, { 9, 1655, 2048 }, - { 7, 1656, 2048 }, { 8, 1657, 2048 }, { 8, 1658, 2048 }, { 9, 1659, 2048 }, { 8, 1660, 2048 }, { 9, 1661, 2048 }, { 9, 1662, 2048 }, { 10, 1663, 2048 }, - { 4, 1664, 2048 }, { 5, 1665, 2048 }, { 5, 1666, 2048 }, { 6, 1667, 2048 }, { 5, 1668, 2048 }, { 6, 1669, 2048 }, { 6, 1670, 2048 }, { 7, 1671, 2048 }, - { 5, 1672, 2048 }, { 6, 1673, 2048 }, { 6, 1674, 2048 }, { 7, 1675, 2048 }, { 6, 1676, 2048 }, { 7, 1677, 2048 }, { 7, 1678, 2048 }, { 8, 1679, 2048 }, - { 5, 1680, 2048 }, { 6, 1681, 2048 }, { 6, 1682, 2048 }, { 7, 1683, 2048 }, { 6, 1684, 2048 }, { 7, 1685, 2048 }, { 7, 1686, 2048 }, { 8, 1687, 2048 }, - { 6, 1688, 2048 }, { 7, 1689, 2048 }, { 7, 1690, 2048 }, { 8, 1691, 2048 }, { 7, 1692, 2048 }, { 8, 1693, 2048 }, { 8, 1694, 2048 }, { 9, 1695, 2048 }, - { 5, 1696, 2048 }, { 6, 1697, 2048 }, { 6, 1698, 2048 }, { 7, 1699, 2048 }, { 6, 1700, 2048 }, { 7, 1701, 2048 }, { 7, 1702, 2048 }, { 8, 1703, 2048 }, - { 6, 1704, 2048 }, { 7, 1705, 2048 }, { 7, 1706, 2048 }, { 8, 1707, 2048 }, { 7, 1708, 2048 }, { 8, 1709, 2048 }, { 8, 1710, 2048 }, { 9, 1711, 2048 }, - { 6, 1712, 2048 }, { 7, 1713, 2048 }, { 7, 1714, 2048 }, { 8, 1715, 2048 }, { 7, 1716, 2048 }, { 8, 1717, 2048 }, { 8, 1718, 2048 }, { 9, 1719, 2048 }, - { 7, 1720, 2048 }, { 8, 1721, 2048 }, { 8, 1722, 2048 }, { 9, 1723, 2048 }, { 8, 1724, 2048 }, { 9, 1725, 2048 }, { 9, 1726, 2048 }, { 10, 1727, 2048 }, - { 5, 1728, 2048 }, { 6, 1729, 2048 }, { 6, 1730, 2048 }, { 7, 1731, 2048 }, { 6, 1732, 2048 }, { 7, 1733, 2048 }, { 7, 1734, 2048 }, { 8, 1735, 2048 }, - { 6, 1736, 2048 }, { 7, 1737, 2048 }, { 7, 1738, 2048 }, { 8, 1739, 2048 }, { 7, 1740, 2048 }, { 8, 1741, 2048 }, { 8, 1742, 2048 }, { 9, 1743, 2048 }, - { 6, 1744, 2048 }, { 7, 1745, 2048 }, { 7, 1746, 2048 }, { 8, 1747, 2048 }, { 7, 1748, 2048 }, { 8, 1749, 2048 }, { 8, 1750, 2048 }, { 9, 1751, 2048 }, - { 7, 1752, 2048 }, { 8, 1753, 2048 }, { 8, 1754, 2048 }, { 9, 1755, 2048 }, { 8, 1756, 2048 }, { 9, 1757, 2048 }, { 9, 1758, 2048 }, { 10, 1759, 2048 }, - { 6, 1760, 2048 }, { 7, 1761, 2048 }, { 7, 1762, 2048 }, { 8, 1763, 2048 }, { 7, 1764, 2048 }, { 8, 1765, 2048 }, { 8, 1766, 2048 }, { 9, 1767, 2048 }, - { 7, 1768, 2048 }, { 8, 1769, 2048 }, { 8, 1770, 2048 }, { 9, 1771, 2048 }, { 8, 1772, 2048 }, { 9, 1773, 2048 }, { 9, 1774, 2048 }, { 10, 1775, 2048 }, - { 7, 1776, 2048 }, { 8, 1777, 2048 }, { 8, 1778, 2048 }, { 9, 1779, 2048 }, { 8, 1780, 2048 }, { 9, 1781, 2048 }, { 9, 1782, 2048 }, { 10, 1783, 2048 }, - { 8, 1784, 2048 }, { 9, 1785, 2048 }, { 9, 1786, 2048 }, { 10, 1787, 2048 }, { 9, 1788, 2048 }, { 10, 1789, 2048 }, { 10, 1790, 2048 }, { 11, 1791, 2048 }, - { 4, 1792, 2048 }, { 5, 1793, 2048 }, { 5, 1794, 2048 }, { 6, 1795, 2048 }, { 5, 1796, 2048 }, { 6, 1797, 2048 }, { 6, 1798, 2048 }, { 7, 1799, 2048 }, - { 5, 1800, 2048 }, { 6, 1801, 2048 }, { 6, 1802, 2048 }, { 7, 1803, 2048 }, { 6, 1804, 2048 }, { 7, 1805, 2048 }, { 7, 1806, 2048 }, { 8, 1807, 2048 }, - { 5, 1808, 2048 }, { 6, 1809, 2048 }, { 6, 1810, 2048 }, { 7, 1811, 2048 }, { 6, 1812, 2048 }, { 7, 1813, 2048 }, { 7, 1814, 2048 }, { 8, 1815, 2048 }, - { 6, 1816, 2048 }, { 7, 1817, 2048 }, { 7, 1818, 2048 }, { 8, 1819, 2048 }, { 7, 1820, 2048 }, { 8, 1821, 2048 }, { 8, 1822, 2048 }, { 9, 1823, 2048 }, - { 5, 1824, 2048 }, { 6, 1825, 2048 }, { 6, 1826, 2048 }, { 7, 1827, 2048 }, { 6, 1828, 2048 }, { 7, 1829, 2048 }, { 7, 1830, 2048 }, { 8, 1831, 2048 }, - { 6, 1832, 2048 }, { 7, 1833, 2048 }, { 7, 1834, 2048 }, { 8, 1835, 2048 }, { 7, 1836, 2048 }, { 8, 1837, 2048 }, { 8, 1838, 2048 }, { 9, 1839, 2048 }, - { 6, 1840, 2048 }, { 7, 1841, 2048 }, { 7, 1842, 2048 }, { 8, 1843, 2048 }, { 7, 1844, 2048 }, { 8, 1845, 2048 }, { 8, 1846, 2048 }, { 9, 1847, 2048 }, - { 7, 1848, 2048 }, { 8, 1849, 2048 }, { 8, 1850, 2048 }, { 9, 1851, 2048 }, { 8, 1852, 2048 }, { 9, 1853, 2048 }, { 9, 1854, 2048 }, { 10, 1855, 2048 }, - { 5, 1856, 2048 }, { 6, 1857, 2048 }, { 6, 1858, 2048 }, { 7, 1859, 2048 }, { 6, 1860, 2048 }, { 7, 1861, 2048 }, { 7, 1862, 2048 }, { 8, 1863, 2048 }, - { 6, 1864, 2048 }, { 7, 1865, 2048 }, { 7, 1866, 2048 }, { 8, 1867, 2048 }, { 7, 1868, 2048 }, { 8, 1869, 2048 }, { 8, 1870, 2048 }, { 9, 1871, 2048 }, - { 6, 1872, 2048 }, { 7, 1873, 2048 }, { 7, 1874, 2048 }, { 8, 1875, 2048 }, { 7, 1876, 2048 }, { 8, 1877, 2048 }, { 8, 1878, 2048 }, { 9, 1879, 2048 }, - { 7, 1880, 2048 }, { 8, 1881, 2048 }, { 8, 1882, 2048 }, { 9, 1883, 2048 }, { 8, 1884, 2048 }, { 9, 1885, 2048 }, { 9, 1886, 2048 }, { 10, 1887, 2048 }, - { 6, 1888, 2048 }, { 7, 1889, 2048 }, { 7, 1890, 2048 }, { 8, 1891, 2048 }, { 7, 1892, 2048 }, { 8, 1893, 2048 }, { 8, 1894, 2048 }, { 9, 1895, 2048 }, - { 7, 1896, 2048 }, { 8, 1897, 2048 }, { 8, 1898, 2048 }, { 9, 1899, 2048 }, { 8, 1900, 2048 }, { 9, 1901, 2048 }, { 9, 1902, 2048 }, { 10, 1903, 2048 }, - { 7, 1904, 2048 }, { 8, 1905, 2048 }, { 8, 1906, 2048 }, { 9, 1907, 2048 }, { 8, 1908, 2048 }, { 9, 1909, 2048 }, { 9, 1910, 2048 }, { 10, 1911, 2048 }, - { 8, 1912, 2048 }, { 9, 1913, 2048 }, { 9, 1914, 2048 }, { 10, 1915, 2048 }, { 9, 1916, 2048 }, { 10, 1917, 2048 }, { 10, 1918, 2048 }, { 11, 1919, 2048 }, - { 5, 1920, 2048 }, { 6, 1921, 2048 }, { 6, 1922, 2048 }, { 7, 1923, 2048 }, { 6, 1924, 2048 }, { 7, 1925, 2048 }, { 7, 1926, 2048 }, { 8, 1927, 2048 }, - { 6, 1928, 2048 }, { 7, 1929, 2048 }, { 7, 1930, 2048 }, { 8, 1931, 2048 }, { 7, 1932, 2048 }, { 8, 1933, 2048 }, { 8, 1934, 2048 }, { 9, 1935, 2048 }, - { 6, 1936, 2048 }, { 7, 1937, 2048 }, { 7, 1938, 2048 }, { 8, 1939, 2048 }, { 7, 1940, 2048 }, { 8, 1941, 2048 }, { 8, 1942, 2048 }, { 9, 1943, 2048 }, - { 7, 1944, 2048 }, { 8, 1945, 2048 }, { 8, 1946, 2048 }, { 9, 1947, 2048 }, { 8, 1948, 2048 }, { 9, 1949, 2048 }, { 9, 1950, 2048 }, { 10, 1951, 2048 }, - { 6, 1952, 2048 }, { 7, 1953, 2048 }, { 7, 1954, 2048 }, { 8, 1955, 2048 }, { 7, 1956, 2048 }, { 8, 1957, 2048 }, { 8, 1958, 2048 }, { 9, 1959, 2048 }, - { 7, 1960, 2048 }, { 8, 1961, 2048 }, { 8, 1962, 2048 }, { 9, 1963, 2048 }, { 8, 1964, 2048 }, { 9, 1965, 2048 }, { 9, 1966, 2048 }, { 10, 1967, 2048 }, - { 7, 1968, 2048 }, { 8, 1969, 2048 }, { 8, 1970, 2048 }, { 9, 1971, 2048 }, { 8, 1972, 2048 }, { 9, 1973, 2048 }, { 9, 1974, 2048 }, { 10, 1975, 2048 }, - { 8, 1976, 2048 }, { 9, 1977, 2048 }, { 9, 1978, 2048 }, { 10, 1979, 2048 }, { 9, 1980, 2048 }, { 10, 1981, 2048 }, { 10, 1982, 2048 }, { 11, 1983, 2048 }, - { 6, 1984, 2048 }, { 7, 1985, 2048 }, { 7, 1986, 2048 }, { 8, 1987, 2048 }, { 7, 1988, 2048 }, { 8, 1989, 2048 }, { 8, 1990, 2048 }, { 9, 1991, 2048 }, - { 7, 1992, 2048 }, { 8, 1993, 2048 }, { 8, 1994, 2048 }, { 9, 1995, 2048 }, { 8, 1996, 2048 }, { 9, 1997, 2048 }, { 9, 1998, 2048 }, { 10, 1999, 2048 }, - { 7, 2000, 2048 }, { 8, 2001, 2048 }, { 8, 2002, 2048 }, { 9, 2003, 2048 }, { 8, 2004, 2048 }, { 9, 2005, 2048 }, { 9, 2006, 2048 }, { 10, 2007, 2048 }, - { 8, 2008, 2048 }, { 9, 2009, 2048 }, { 9, 2010, 2048 }, { 10, 2011, 2048 }, { 9, 2012, 2048 }, { 10, 2013, 2048 }, { 10, 2014, 2048 }, { 11, 2015, 2048 }, - { 7, 2016, 2048 }, { 8, 2017, 2048 }, { 8, 2018, 2048 }, { 9, 2019, 2048 }, { 8, 2020, 2048 }, { 9, 2021, 2048 }, { 9, 2022, 2048 }, { 10, 2023, 2048 }, - { 8, 2024, 2048 }, { 9, 2025, 2048 }, { 9, 2026, 2048 }, { 10, 2027, 2048 }, { 9, 2028, 2048 }, { 10, 2029, 2048 }, { 10, 2030, 2048 }, { 11, 2031, 2048 }, - { 8, 2032, 2048 }, { 9, 2033, 2048 }, { 9, 2034, 2048 }, { 10, 2035, 2048 }, { 9, 2036, 2048 }, { 10, 2037, 2048 }, { 10, 2038, 2048 }, { 11, 2039, 2048 }, - { 9, 2040, 2048 }, { 10, 2041, 2048 }, { 10, 2042, 2048 }, { 11, 2043, 2048 }, { 10, 2044, 2048 }, { 11, 2045, 2048 }, { 11, 2046, 2048 }, { 12, 2047, 2048 }, -#endif -#endif -#endif -#endif -#endif -#endif -}; - -/* find a hole and free as required, return -1 if no hole found */ -static int _find_hole(void) -{ - unsigned x; - int y, z; - for (z = -1, y = INT_MAX, x = 0; x < FP_ENTRIES; x++) { - if (fp_cache[x].lru_count < y && fp_cache[x].lock == 0) { - z = x; - y = fp_cache[x].lru_count; - } - } - - /* decrease all */ - for (x = 0; x < FP_ENTRIES; x++) { - if (fp_cache[x].lru_count > 3) { - --(fp_cache[x].lru_count); - } - } - - /* free entry z */ - if (z >= 0 && fp_cache[z].g) { - if (fp_cache[z].mu != NULL) { - mp_clear(fp_cache[z].mu); - fp_cache[z].mu = NULL; - } - ltc_ecc_del_point(fp_cache[z].g); - fp_cache[z].g = NULL; - for (x = 0; x < (1U<x, g->x) == LTC_MP_EQ && - mp_cmp(fp_cache[x].g->y, g->y) == LTC_MP_EQ && - mp_cmp(fp_cache[x].g->z, g->z) == LTC_MP_EQ) { - break; - } - } - if (x == FP_ENTRIES) { - x = -1; - } - return x; -} - -/* add a new base to the cache */ -static int _add_entry(int idx, ecc_point *g) -{ - unsigned x, y; - - /* allocate base and LUT */ - fp_cache[idx].g = ltc_ecc_new_point(); - if (fp_cache[idx].g == NULL) { - return CRYPT_MEM; - } - - /* copy x and y */ - if ((mp_copy(g->x, fp_cache[idx].g->x) != CRYPT_OK) || - (mp_copy(g->y, fp_cache[idx].g->y) != CRYPT_OK) || - (mp_copy(g->z, fp_cache[idx].g->z) != CRYPT_OK)) { - ltc_ecc_del_point(fp_cache[idx].g); - fp_cache[idx].g = NULL; - return CRYPT_MEM; - } - - for (x = 0; x < (1U<x, mu, modulus, fp_cache[idx].LUT[1]->x) != CRYPT_OK) || - (mp_mulmod(fp_cache[idx].g->y, mu, modulus, fp_cache[idx].LUT[1]->y) != CRYPT_OK) || - (mp_mulmod(fp_cache[idx].g->z, mu, modulus, fp_cache[idx].LUT[1]->z) != CRYPT_OK)) { goto ERR; } - - /* make all single bit entries */ - for (x = 1; x < FP_LUT; x++) { - if ((mp_copy(fp_cache[idx].LUT[1<<(x-1)]->x, fp_cache[idx].LUT[1<x) != CRYPT_OK) || - (mp_copy(fp_cache[idx].LUT[1<<(x-1)]->y, fp_cache[idx].LUT[1<y) != CRYPT_OK) || - (mp_copy(fp_cache[idx].LUT[1<<(x-1)]->z, fp_cache[idx].LUT[1<z) != CRYPT_OK)) { goto ERR; } - - /* now double it bitlen/FP_LUT times */ - for (y = 0; y < lut_gap; y++) { - if ((err = ltc_mp.ecc_ptdbl(fp_cache[idx].LUT[1<z, modulus, mp)) != CRYPT_OK) { goto ERR; } - - /* invert it */ - if ((err = mp_invmod(fp_cache[idx].LUT[x]->z, modulus, fp_cache[idx].LUT[x]->z)) != CRYPT_OK) { goto ERR; } - - /* now square it */ - if ((err = mp_sqrmod(fp_cache[idx].LUT[x]->z, modulus, tmp)) != CRYPT_OK) { goto ERR; } - - /* fix x */ - if ((err = mp_mulmod(fp_cache[idx].LUT[x]->x, tmp, modulus, fp_cache[idx].LUT[x]->x)) != CRYPT_OK) { goto ERR; } - - /* get 1/z^3 */ - if ((err = mp_mulmod(tmp, fp_cache[idx].LUT[x]->z, modulus, tmp)) != CRYPT_OK) { goto ERR; } - - /* fix y */ - if ((err = mp_mulmod(fp_cache[idx].LUT[x]->y, tmp, modulus, fp_cache[idx].LUT[x]->y)) != CRYPT_OK) { goto ERR; } - - /* free z */ - mp_clear(fp_cache[idx].LUT[x]->z); - fp_cache[idx].LUT[x]->z = NULL; - } - mp_clear(tmp); - - return CRYPT_OK; -ERR: - err = CRYPT_MEM; -DONE: - for (y = 0; y < (1U< mp_unsigned_bin_size(modulus)) { - /* find order */ - y = mp_unsigned_bin_size(modulus); - for (x = 0; ltc_ecc_sets[x].size; x++) { - if (y <= (unsigned)ltc_ecc_sets[x].size) break; - } - - /* back off if we are on the 521 bit curve */ - if (y == 66) --x; - - if ((err = mp_init(&order)) != CRYPT_OK) { - return err; - } - if ((err = mp_read_radix(order, ltc_ecc_sets[x].order, 16)) != CRYPT_OK) { - mp_clear(&order); - return err; - } - - /* k must be less than modulus */ - if (mp_cmp(k, order) != LTC_MP_LT) { - if ((err = mp_init(&tk)) != CRYPT_OK) { - mp_clear(order); - return err; - } - if ((err = mp_mod(k, order, tk)) != CRYPT_OK) { - mp_clear(tk); - mp_clear(order); - return err; - } - } else { - tk = k; - } - mp_clear(order); - } else { - tk = k; - } - - /* get bitlen and round up to next multiple of FP_LUT */ - bitlen = mp_unsigned_bin_size(modulus) << 3; - x = bitlen % FP_LUT; - if (x) { - bitlen += FP_LUT - x; - } - lut_gap = bitlen / FP_LUT; - - /* get the k value */ - if (mp_unsigned_bin_size(tk) > (sizeof(kb) - 2)) { - if (tk != k) { - mp_clear(tk); - } - return CRYPT_BUFFER_OVERFLOW; - } - - /* store k */ - zeromem(kb, sizeof(kb)); - if ((err = mp_to_unsigned_bin(tk, kb)) != CRYPT_OK) { - if (tk != k) { - mp_clear(tk); - } - return err; - } - - /* let's reverse kb so it's little endian */ - x = 0; - y = mp_unsigned_bin_size(tk) - 1; - if (tk != k) { - mp_clear(tk); - } - while ((unsigned)x < y) { - z = kb[x]; kb[x] = kb[y]; kb[y] = z; - ++x; --y; - } - - /* at this point we can start, yipee */ - first = 1; - for (x = lut_gap-1; x >= 0; x--) { - /* extract FP_LUT bits from kb spread out by lut_gap bits and offset by x bits from the start */ - bitpos = x; - for (y = z = 0; y < FP_LUT; y++) { - z |= ((kb[bitpos>>3] >> (bitpos&7)) & 1) << y; - bitpos += lut_gap; /* it's y*lut_gap + x, but here we can avoid the mult in each loop */ - } - - /* double if not first */ - if (!first) { - if ((err = ltc_mp.ecc_ptdbl(R, R, modulus, mp)) != CRYPT_OK) { - return err; - } - } - - /* add if not first, otherwise copy */ - if (!first && z) { - if ((err = ltc_mp.ecc_ptadd(R, fp_cache[idx].LUT[z], R, modulus, mp)) != CRYPT_OK) { - return err; - } - } else if (z) { - if ((mp_copy(fp_cache[idx].LUT[z]->x, R->x) != CRYPT_OK) || - (mp_copy(fp_cache[idx].LUT[z]->y, R->y) != CRYPT_OK) || - (mp_copy(fp_cache[idx].mu, R->z) != CRYPT_OK)) { return CRYPT_MEM; } - first = 0; - } - } - z = 0; - zeromem(kb, sizeof(kb)); - /* map R back from projective space */ - if (map) { - err = ltc_ecc_map(R, modulus, mp); - } else { - err = CRYPT_OK; - } - return err; -} - -#ifdef LTC_ECC_SHAMIR -/* perform a fixed point ECC mulmod */ -static int _accel_fp_mul2add(int idx1, int idx2, - void *kA, void *kB, - ecc_point *R, void *modulus, void *mp) -{ - unsigned char kb[2][128]; - int x; - unsigned y, z, err, bitlen, bitpos, lut_gap, first, zA, zB; - void *tka, *tkb, *order; - - /* if it's smaller than modulus we fine */ - if (mp_unsigned_bin_size(kA) > mp_unsigned_bin_size(modulus)) { - /* find order */ - y = mp_unsigned_bin_size(modulus); - for (x = 0; ltc_ecc_sets[x].size; x++) { - if (y <= (unsigned)ltc_ecc_sets[x].size) break; - } - - /* back off if we are on the 521 bit curve */ - if (y == 66) --x; - - if ((err = mp_init(&order)) != CRYPT_OK) { - return err; - } - if ((err = mp_read_radix(order, ltc_ecc_sets[x].order, 16)) != CRYPT_OK) { - mp_clear(&order); - return err; - } - - /* kA must be less than modulus */ - if (mp_cmp(kA, order) != LTC_MP_LT) { - if ((err = mp_init(&tka)) != CRYPT_OK) { - mp_clear(order); - return err; - } - if ((err = mp_mod(kA, order, tka)) != CRYPT_OK) { - mp_clear(tka); - mp_clear(order); - return err; - } - } else { - tka = kA; - } - mp_clear(order); - } else { - tka = kA; - } - - /* if it's smaller than modulus we fine */ - if (mp_unsigned_bin_size(kB) > mp_unsigned_bin_size(modulus)) { - /* find order */ - y = mp_unsigned_bin_size(modulus); - for (x = 0; ltc_ecc_sets[x].size; x++) { - if (y <= (unsigned)ltc_ecc_sets[x].size) break; - } - - /* back off if we are on the 521 bit curve */ - if (y == 66) --x; - - if ((err = mp_init(&order)) != CRYPT_OK) { - return err; - } - if ((err = mp_read_radix(order, ltc_ecc_sets[x].order, 16)) != CRYPT_OK) { - mp_clear(&order); - return err; - } - - /* kB must be less than modulus */ - if (mp_cmp(kB, order) != LTC_MP_LT) { - if ((err = mp_init(&tkb)) != CRYPT_OK) { - mp_clear(order); - return err; - } - if ((err = mp_mod(kB, order, tkb)) != CRYPT_OK) { - mp_clear(tkb); - mp_clear(order); - return err; - } - } else { - tkb = kB; - } - mp_clear(order); - } else { - tkb = kB; - } - - /* get bitlen and round up to next multiple of FP_LUT */ - bitlen = mp_unsigned_bin_size(modulus) << 3; - x = bitlen % FP_LUT; - if (x) { - bitlen += FP_LUT - x; - } - lut_gap = bitlen / FP_LUT; - - /* get the k value */ - if ((mp_unsigned_bin_size(tka) > (sizeof(kb[0]) - 2)) || (mp_unsigned_bin_size(tkb) > (sizeof(kb[0]) - 2)) ) { - if (tka != kA) { - mp_clear(tka); - } - if (tkb != kB) { - mp_clear(tkb); - } - return CRYPT_BUFFER_OVERFLOW; - } - - /* store k */ - zeromem(kb, sizeof(kb)); - if ((err = mp_to_unsigned_bin(tka, kb[0])) != CRYPT_OK) { - if (tka != kA) { - mp_clear(tka); - } - if (tkb != kB) { - mp_clear(tkb); - } - return err; - } - - /* let's reverse kb so it's little endian */ - x = 0; - y = mp_unsigned_bin_size(tka) - 1; - if (tka != kA) { - mp_clear(tka); - } - while ((unsigned)x < y) { - z = kb[0][x]; kb[0][x] = kb[0][y]; kb[0][y] = z; - ++x; --y; - } - - /* store b */ - if ((err = mp_to_unsigned_bin(tkb, kb[1])) != CRYPT_OK) { - if (tkb != kB) { - mp_clear(tkb); - } - return err; - } - - x = 0; - y = mp_unsigned_bin_size(tkb) - 1; - if (tkb != kB) { - mp_clear(tkb); - } - while ((unsigned)x < y) { - z = kb[1][x]; kb[1][x] = kb[1][y]; kb[1][y] = z; - ++x; --y; - } - - /* at this point we can start, yipee */ - first = 1; - for (x = lut_gap-1; x >= 0; x--) { - /* extract FP_LUT bits from kb spread out by lut_gap bits and offset by x bits from the start */ - bitpos = x; - for (y = zA = zB = 0; y < FP_LUT; y++) { - zA |= ((kb[0][bitpos>>3] >> (bitpos&7)) & 1) << y; - zB |= ((kb[1][bitpos>>3] >> (bitpos&7)) & 1) << y; - bitpos += lut_gap; /* it's y*lut_gap + x, but here we can avoid the mult in each loop */ - } - - /* double if not first */ - if (!first) { - if ((err = ltc_mp.ecc_ptdbl(R, R, modulus, mp)) != CRYPT_OK) { - return err; - } - } - - /* add if not first, otherwise copy */ - if (!first) { - if (zA) { - if ((err = ltc_mp.ecc_ptadd(R, fp_cache[idx1].LUT[zA], R, modulus, mp)) != CRYPT_OK) { - return err; - } - } - if (zB) { - if ((err = ltc_mp.ecc_ptadd(R, fp_cache[idx2].LUT[zB], R, modulus, mp)) != CRYPT_OK) { - return err; - } - } - } else { - if (zA) { - if ((mp_copy(fp_cache[idx1].LUT[zA]->x, R->x) != CRYPT_OK) || - (mp_copy(fp_cache[idx1].LUT[zA]->y, R->y) != CRYPT_OK) || - (mp_copy(fp_cache[idx1].mu, R->z) != CRYPT_OK)) { return CRYPT_MEM; } - first = 0; - } - if (zB && first == 0) { - if (zB) { - if ((err = ltc_mp.ecc_ptadd(R, fp_cache[idx2].LUT[zB], R, modulus, mp)) != CRYPT_OK) { - return err; - } - } - } else if (zB && first == 1) { - if ((mp_copy(fp_cache[idx2].LUT[zB]->x, R->x) != CRYPT_OK) || - (mp_copy(fp_cache[idx2].LUT[zB]->y, R->y) != CRYPT_OK) || - (mp_copy(fp_cache[idx2].mu, R->z) != CRYPT_OK)) { return CRYPT_MEM; } - first = 0; - } - } - } - zeromem(kb, sizeof(kb)); - return ltc_ecc_map(R, modulus, mp); -} - -/** ECC Fixed Point mulmod global - Computes kA*A + kB*B = C using Shamir's Trick - @param A First point to multiply - @param kA What to multiple A by - @param B Second point to multiply - @param kB What to multiple B by - @param C [out] Destination point (can overlap with A or B) - @param modulus Modulus for curve - @return CRYPT_OK on success -*/ -int ltc_ecc_fp_mul2add(ecc_point *A, void *kA, - ecc_point *B, void *kB, - ecc_point *C, void *modulus) -{ - int idx1, idx2, err; - void *mp, *mu; - - mp = NULL; - mu = NULL; - LTC_MUTEX_LOCK(<c_ecc_fp_lock); - /* find point */ - idx1 = _find_base(A); - - /* no entry? */ - if (idx1 == -1) { - /* find hole and add it */ - if ((idx1 = _find_hole()) >= 0) { - if ((err = _add_entry(idx1, A)) != CRYPT_OK) { - goto LBL_ERR; - } - } - } - if (idx1 != -1) { - /* increment LRU */ - ++(fp_cache[idx1].lru_count); - } - - /* find point */ - idx2 = _find_base(B); - - /* no entry? */ - if (idx2 == -1) { - /* find hole and add it */ - if ((idx2 = _find_hole()) >= 0) { - if ((err = _add_entry(idx2, B)) != CRYPT_OK) { - goto LBL_ERR; - } - } - } - if (idx2 != -1) { - /* increment LRU */ - ++(fp_cache[idx2].lru_count); - } - - /* if it's 2 build the LUT, if it's higher just use the LUT */ - if (idx1 >= 0 && fp_cache[idx1].lru_count == 2) { - /* compute mp */ - if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { goto LBL_ERR; } - - /* compute mu */ - if ((err = mp_init(&mu)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* build the LUT */ - if ((err = _build_lut(idx1, modulus, mp, mu)) != CRYPT_OK) { - goto LBL_ERR;; - } - } - - /* if it's 2 build the LUT, if it's higher just use the LUT */ - if (idx2 >= 0 && fp_cache[idx2].lru_count == 2) { - if (mp == NULL) { - /* compute mp */ - if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { goto LBL_ERR; } - - /* compute mu */ - if ((err = mp_init(&mu)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) { - goto LBL_ERR; - } - } - - /* build the LUT */ - if ((err = _build_lut(idx2, modulus, mp, mu)) != CRYPT_OK) { - goto LBL_ERR;; - } - } - - - if (idx1 >=0 && idx2 >= 0 && fp_cache[idx1].lru_count >= 2 && fp_cache[idx2].lru_count >= 2) { - if (mp == NULL) { - /* compute mp */ - if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { goto LBL_ERR; } - } - err = _accel_fp_mul2add(idx1, idx2, kA, kB, C, modulus, mp); - } else { - err = ltc_ecc_mul2add(A, kA, B, kB, C, modulus); - } -LBL_ERR: - LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); - if (mp != NULL) { - mp_montgomery_free(mp); - } - if (mu != NULL) { - mp_clear(mu); - } - return err; -} -#endif - -/** ECC Fixed Point mulmod global - @param k The multiplicand - @param G Base point to multiply - @param R [out] Destination of product - @param modulus The modulus for the curve - @param map [boolean] If non-zero maps the point back to affine co-ordinates, otherwise it's left in jacobian-montgomery form - @return CRYPT_OK if successful -*/ -int ltc_ecc_fp_mulmod(void *k, ecc_point *G, ecc_point *R, void *modulus, int map) -{ - int idx, err; - void *mp, *mu; - - mp = NULL; - mu = NULL; - LTC_MUTEX_LOCK(<c_ecc_fp_lock); - /* find point */ - idx = _find_base(G); - - /* no entry? */ - if (idx == -1) { - /* find hole and add it */ - idx = _find_hole(); - - if (idx >= 0) { - if ((err = _add_entry(idx, G)) != CRYPT_OK) { - goto LBL_ERR; - } - } - } - if (idx != -1) { - /* increment LRU */ - ++(fp_cache[idx].lru_count); - } - - - /* if it's 2 build the LUT, if it's higher just use the LUT */ - if (idx >= 0 && fp_cache[idx].lru_count == 2) { - /* compute mp */ - if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { goto LBL_ERR; } - - /* compute mu */ - if ((err = mp_init(&mu)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* build the LUT */ - if ((err = _build_lut(idx, modulus, mp, mu)) != CRYPT_OK) { - goto LBL_ERR;; - } - } - - if (idx >= 0 && fp_cache[idx].lru_count >= 2) { - if (mp == NULL) { - /* compute mp */ - if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { goto LBL_ERR; } - } - err = _accel_fp_mul(idx, k, R, modulus, mp, map); - } else { - err = ltc_ecc_mulmod(k, G, R, modulus, map); - } -LBL_ERR: - LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); - if (mp != NULL) { - mp_montgomery_free(mp); - } - if (mu != NULL) { - mp_clear(mu); - } - return err; -} - -/* helper function for freeing the cache ... must be called with the cache mutex locked */ -static void _ltc_ecc_fp_free_cache(void) -{ - unsigned x, y; - for (x = 0; x < FP_ENTRIES; x++) { - if (fp_cache[x].g != NULL) { - for (y = 0; y < (1U<= 0) { - /* it is already in the cache ... just check that the LUT is initialized */ - if(fp_cache[idx].lru_count >= 2) { - LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); - return CRYPT_OK; - } - } - - if(idx == -1 && (idx = _find_hole()) == -1) { - err = CRYPT_BUFFER_OVERFLOW; - goto LBL_ERR; - } - if ((err = _add_entry(idx, g)) != CRYPT_OK) { - goto LBL_ERR; - } - /* compute mp */ - if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* compute mu */ - if ((err = mp_init(&mu)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* build the LUT */ - if ((err = _build_lut(idx, modulus, mp, mu)) != CRYPT_OK) { - goto LBL_ERR; - } - fp_cache[idx].lru_count = 2; - fp_cache[idx].lock = lock; -LBL_ERR: - LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); - if (mp != NULL) { - mp_montgomery_free(mp); - } - if (mu != NULL) { - mp_clear(mu); - } - return err; -} - -/** Prevent/permit the FP cache from being updated - @param flag If flag is 0, remove cache lock (unlock), otherwise lock it -*/ -void ltc_ecc_fp_tablelock(int lock) -{ - int i; - - LTC_MUTEX_LOCK(<c_ecc_fp_lock); - for (i = 0; i < FP_ENTRIES; i++) { - fp_cache[i].lock = lock; - } - LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); -} - -/** Export the current cache as a binary packet - @param out [out] pointer to malloc'ed space containing the packet - @param outlen [out] size of exported packet - @return CRYPT_OK if successful -*/ -int ltc_ecc_fp_save_state(unsigned char **out, unsigned long *outlen) -{ - ltc_asn1_list *cache_entry; - unsigned int i, j, k; - unsigned long fp_entries, fp_lut, num_entries; - int err; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - fp_entries = FP_ENTRIES; - fp_lut = FP_LUT; - num_entries = 0; - - LTC_MUTEX_LOCK(<c_ecc_fp_lock); - /* - * build the list; - Cache DEFINITIONS ::= - BEGIN - CacheDump ::= SEQUENCE { - numEntries SHORTINTEGER, - maxEntries SHORTINTEGER, - numLUT SHORTINTEGER, - cache SEQUENCE OF INTEGER - } - END - * - */ - /* - * The cache itself is a point (3 INTEGERS), - * the LUT as pairs of INTEGERS (2 * 1<x, 1); - LTC_SET_ASN1(cache_entry, j++, LTC_ASN1_INTEGER, fp_cache[i].g->y, 1); - LTC_SET_ASN1(cache_entry, j++, LTC_ASN1_INTEGER, fp_cache[i].g->z, 1); - for (k = 0; k < (1U<x, 1); - LTC_SET_ASN1(cache_entry, j++, LTC_ASN1_INTEGER, fp_cache[i].LUT[k]->y, 1); - } - LTC_SET_ASN1(cache_entry, j++, LTC_ASN1_INTEGER, fp_cache[i].mu, 1); - } - LTC_SET_ASN1(cache_entry, j++, LTC_ASN1_EOL, 0, 0); - - LTC_SET_ASN1(cache_entry, 0, LTC_ASN1_SHORT_INTEGER, &num_entries, 1); - - if ((err = der_length_sequence(cache_entry, j, outlen)) != CRYPT_OK) { - goto save_err; - } - if ((*out = XMALLOC(*outlen)) == NULL) { - err = CRYPT_MEM; - goto save_err; - } - err = der_encode_sequence(cache_entry, j, *out, outlen); -save_err: - XFREE(cache_entry); - LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); - return err; -} - -/** Import a binary packet into the current cache - @param in [in] pointer to packet - @param inlen [in] size of packet (bytes) - @return CRYPT_OK if successful -*/ -int ltc_ecc_fp_restore_state(unsigned char *in, unsigned long inlen) -{ - int err; - ltc_asn1_list *asn1_list; - unsigned long num_entries, fp_entries, fp_lut; - unsigned long i, j; - unsigned int x; - - LTC_ARGCHK(in != NULL); - if (inlen == 0) { - return CRYPT_INVALID_ARG; - } - - /* zero indecies */ - i = 0; - j = 0; - asn1_list = NULL; - - LTC_MUTEX_LOCK(<c_ecc_fp_lock); - /* - * start with an empty cache - */ - _ltc_ecc_fp_free_cache(); - - /* - * decode the input packet: It consists of a sequence with a few - * integers (including the FP_ENTRIES and FP_LUT sizes), followed by a - * SEQUENCE which is the cache itself. - * - * use standard decoding for the first part, then flexible for the second - */ - if((err = der_decode_sequence_multi(in, inlen, - LTC_ASN1_SHORT_INTEGER, 1, &num_entries, - LTC_ASN1_SHORT_INTEGER, 1, &fp_entries, - LTC_ASN1_SHORT_INTEGER, 1, &fp_lut, - LTC_ASN1_EOL, 0, 0)) != CRYPT_OK) { - goto ERR_OUT; - } - if (fp_entries != FP_ENTRIES || fp_lut != FP_LUT || num_entries > fp_entries) { - err = CRYPT_INVALID_PACKET; - goto ERR_OUT; - } - if ((asn1_list = XCALLOC(3+num_entries*(4+2*(1<x, 1); - LTC_SET_ASN1(asn1_list, j++, LTC_ASN1_INTEGER, fp_cache[i].g->y, 1); - LTC_SET_ASN1(asn1_list, j++, LTC_ASN1_INTEGER, fp_cache[i].g->z, 1); - for (x = 0; x < (1U<x, &p->y, NULL)) != CRYPT_OK) { - goto ERR_OUT; - } - p->z = NULL; - LTC_SET_ASN1(asn1_list, j++, LTC_ASN1_INTEGER, p->x, 1); - LTC_SET_ASN1(asn1_list, j++, LTC_ASN1_INTEGER, p->y, 1); - } - if((err = mp_init(&fp_cache[i].mu)) != CRYPT_OK) { - goto ERR_OUT; - } - LTC_SET_ASN1(asn1_list, j++, LTC_ASN1_INTEGER, fp_cache[i].mu, 1); - fp_cache[i].lru_count = 3; - fp_cache[i].lock = 1; - } - - if ((err = der_decode_sequence(in, inlen, asn1_list, j)) != CRYPT_OK) { - goto ERR_OUT; - } - XFREE(asn1_list); - LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); - return CRYPT_OK; -ERR_OUT: - if(asn1_list) - XFREE(asn1_list); - _ltc_ecc_fp_free_cache(); - LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); - return err; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/math/gmp_desc.c b/src/libtomcrypt/src/math/gmp_desc.c deleted file mode 100644 index 5622dafbcd..0000000000 --- a/src/libtomcrypt/src/math/gmp_desc.c +++ /dev/null @@ -1,554 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#define DESC_DEF_ONLY -#include "tomcrypt.h" - -#ifdef GMP_DESC - -#include -#include - -static int init(void **a) -{ - LTC_ARGCHK(a != NULL); - - *a = XCALLOC(1, sizeof(__mpz_struct)); - if (*a == NULL) { - return CRYPT_MEM; - } - mpz_init(((__mpz_struct *)*a)); - return CRYPT_OK; -} - -static void deinit(void *a) -{ - LTC_ARGCHKVD(a != NULL); - mpz_clear(a); - XFREE(a); -} - -static int neg(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - mpz_neg(b, a); - return CRYPT_OK; -} - -static int copy(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - mpz_set(b, a); - return CRYPT_OK; -} - -static int init_copy(void **a, void *b) -{ - if (init(a) != CRYPT_OK) { - return CRYPT_MEM; - } - return copy(b, *a); -} - -/* ---- trivial ---- */ -static int set_int(void *a, ltc_mp_digit b) -{ - LTC_ARGCHK(a != NULL); - mpz_set_ui(((__mpz_struct *)a), b); - return CRYPT_OK; -} - -static unsigned long get_int(void *a) -{ - LTC_ARGCHK(a != NULL); - return mpz_get_ui(a); -} - -static ltc_mp_digit get_digit(void *a, int n) -{ - LTC_ARGCHK(a != NULL); - return mpz_getlimbn(a, n); -} - -static int get_digit_count(void *a) -{ - LTC_ARGCHK(a != NULL); - return mpz_size(a); -} - -static int compare(void *a, void *b) -{ - int ret; - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - ret = mpz_cmp(a, b); - if (ret < 0) { - return LTC_MP_LT; - } else if (ret > 0) { - return LTC_MP_GT; - } else { - return LTC_MP_EQ; - } -} - -static int compare_d(void *a, ltc_mp_digit b) -{ - int ret; - LTC_ARGCHK(a != NULL); - ret = mpz_cmp_ui(((__mpz_struct *)a), b); - if (ret < 0) { - return LTC_MP_LT; - } else if (ret > 0) { - return LTC_MP_GT; - } else { - return LTC_MP_EQ; - } -} - -static int count_bits(void *a) -{ - LTC_ARGCHK(a != NULL); - return mpz_sizeinbase(a, 2); -} - -static int count_lsb_bits(void *a) -{ - LTC_ARGCHK(a != NULL); - return mpz_scan1(a, 0); -} - - -static int twoexpt(void *a, int n) -{ - LTC_ARGCHK(a != NULL); - mpz_set_ui(a, 0); - mpz_setbit(a, n); - return CRYPT_OK; -} - -/* ---- conversions ---- */ - -static const char rmap[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"; - -/* read ascii string */ -static int read_radix(void *a, const char *b, int radix) -{ - int ret; - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - if (radix == 64) { - /* Sadly, GMP only supports radixes up to 62, but we need 64. - * So, although this is not the most elegant or efficient way, - * let's just convert the base 64 string (6 bits per digit) to - * an octal string (3 bits per digit) that's twice as long. */ - char c, *tmp, *q; - const char *p; - int i; - tmp = XMALLOC (1 + 2 * strlen (b)); - if (tmp == NULL) { - return CRYPT_MEM; - } - p = b; - q = tmp; - while ((c = *p++) != 0) { - for (i = 0; i < 64; i++) { - if (c == rmap[i]) - break; - } - if (i == 64) { - XFREE (tmp); - /* printf ("c = '%c'\n", c); */ - return CRYPT_ERROR; - } - *q++ = '0' + (i / 8); - *q++ = '0' + (i % 8); - } - *q = 0; - ret = mpz_set_str(a, tmp, 8); - /* printf ("ret = %d for '%s'\n", ret, tmp); */ - XFREE (tmp); - } else { - ret = mpz_set_str(a, b, radix); - } - return (ret == 0 ? CRYPT_OK : CRYPT_ERROR); -} - -/* write one */ -static int write_radix(void *a, char *b, int radix) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - if (radix >= 11 && radix <= 36) - /* If radix is positive, GMP uses lowercase, and if negative, uppercase. - * We want it to use uppercase, to match the test vectors (presumably - * generated with LibTomMath). */ - radix = -radix; - mpz_get_str(b, radix, a); - return CRYPT_OK; -} - -/* get size as unsigned char string */ -static unsigned long unsigned_size(void *a) -{ - unsigned long t; - LTC_ARGCHK(a != NULL); - t = mpz_sizeinbase(a, 2); - if (mpz_cmp_ui(((__mpz_struct *)a), 0) == 0) return 0; - return (t>>3) + ((t&7)?1:0); -} - -/* store */ -static int unsigned_write(void *a, unsigned char *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - mpz_export(b, NULL, 1, 1, 1, 0, ((__mpz_struct*)a)); - return CRYPT_OK; -} - -/* read */ -static int unsigned_read(void *a, unsigned char *b, unsigned long len) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - mpz_import(a, len, 1, 1, 1, 0, b); - return CRYPT_OK; -} - -/* add */ -static int add(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_add(c, a, b); - return CRYPT_OK; -} - -static int addi(void *a, ltc_mp_digit b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - mpz_add_ui(c, a, b); - return CRYPT_OK; -} - -/* sub */ -static int sub(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_sub(c, a, b); - return CRYPT_OK; -} - -static int subi(void *a, ltc_mp_digit b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - mpz_sub_ui(c, a, b); - return CRYPT_OK; -} - -/* mul */ -static int mul(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_mul(c, a, b); - return CRYPT_OK; -} - -static int muli(void *a, ltc_mp_digit b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - mpz_mul_ui(c, a, b); - return CRYPT_OK; -} - -/* sqr */ -static int sqr(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - mpz_mul(b, a, a); - return CRYPT_OK; -} - -/* div */ -static int divide(void *a, void *b, void *c, void *d) -{ - mpz_t tmp; - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - if (c != NULL) { - mpz_init(tmp); - mpz_divexact(tmp, a, b); - } - if (d != NULL) { - mpz_mod(d, a, b); - } - if (c != NULL) { - mpz_set(c, tmp); - mpz_clear(tmp); - } - return CRYPT_OK; -} - -static int div_2(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - mpz_divexact_ui(b, a, 2); - return CRYPT_OK; -} - -/* modi */ -static int modi(void *a, ltc_mp_digit b, ltc_mp_digit *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - - *c = mpz_fdiv_ui(a, b); - return CRYPT_OK; -} - -/* gcd */ -static int gcd(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_gcd(c, a, b); - return CRYPT_OK; -} - -/* lcm */ -static int lcm(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_lcm(c, a, b); - return CRYPT_OK; -} - -static int addmod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - mpz_add(d, a, b); - mpz_mod(d, d, c); - return CRYPT_OK; -} - -static int submod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - mpz_sub(d, a, b); - mpz_mod(d, d, c); - return CRYPT_OK; -} - -static int mulmod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - mpz_mul(d, a, b); - mpz_mod(d, d, c); - return CRYPT_OK; -} - -static int sqrmod(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_mul(c, a, a); - mpz_mod(c, c, b); - return CRYPT_OK; -} - -/* invmod */ -static int invmod(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_invert(c, a, b); - return CRYPT_OK; -} - -/* setup */ -static int montgomery_setup(void *a, void **b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - *b = (void *)1; - return CRYPT_OK; -} - -/* get normalization value */ -static int montgomery_normalization(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - mpz_set_ui(a, 1); - return CRYPT_OK; -} - -/* reduce */ -static int montgomery_reduce(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - mpz_mod(a, a, b); - return CRYPT_OK; -} - -/* clean up */ -static void montgomery_deinit(void *a) -{ - LTC_UNUSED_PARAM(a); -} - -static int exptmod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - mpz_powm(d, a, b, c); - return CRYPT_OK; -} - -static int isprime(void *a, int b, int *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - if (b == 0) { - b = LTC_MILLER_RABIN_REPS; - } /* if */ - *c = mpz_probab_prime_p(a, b) > 0 ? LTC_MP_YES : LTC_MP_NO; - return CRYPT_OK; -} - -static int set_rand(void *a, int size) -{ - LTC_ARGCHK(a != NULL); - mpz_random(a, size); - return CRYPT_OK; -} - -const ltc_math_descriptor gmp_desc = { - "GNU MP", - sizeof(mp_limb_t) * CHAR_BIT - GMP_NAIL_BITS, - - &init, - &init_copy, - &deinit, - - &neg, - ©, - - &set_int, - &get_int, - &get_digit, - &get_digit_count, - &compare, - &compare_d, - &count_bits, - &count_lsb_bits, - &twoexpt, - - &read_radix, - &write_radix, - &unsigned_size, - &unsigned_write, - &unsigned_read, - - &add, - &addi, - &sub, - &subi, - &mul, - &muli, - &sqr, - ÷, - &div_2, - &modi, - &gcd, - &lcm, - - &mulmod, - &sqrmod, - &invmod, - - &montgomery_setup, - &montgomery_normalization, - &montgomery_reduce, - &montgomery_deinit, - - &exptmod, - &isprime, - -#ifdef LTC_MECC -#ifdef LTC_MECC_FP - <c_ecc_fp_mulmod, -#else - <c_ecc_mulmod, -#endif /* LTC_MECC_FP */ - <c_ecc_projective_add_point, - <c_ecc_projective_dbl_point, - <c_ecc_map, -#ifdef LTC_ECC_SHAMIR -#ifdef LTC_MECC_FP - <c_ecc_fp_mul2add, -#else - <c_ecc_mul2add, -#endif /* LTC_MECC_FP */ -#else - NULL, -#endif /* LTC_ECC_SHAMIR */ -#else - NULL, NULL, NULL, NULL, NULL, -#endif /* LTC_MECC */ - -#ifdef LTC_MRSA - &rsa_make_key, - &rsa_exptmod, -#else - NULL, NULL, -#endif - &addmod, - &submod, - - &set_rand, - -}; - - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/math/ltm_desc.c b/src/libtomcrypt/src/math/ltm_desc.c deleted file mode 100644 index 6af5181aca..0000000000 --- a/src/libtomcrypt/src/math/ltm_desc.c +++ /dev/null @@ -1,513 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#define DESC_DEF_ONLY -#include "tomcrypt.h" - -#ifdef LTM_DESC - -#include - -static const struct { - int mpi_code, ltc_code; -} mpi_to_ltc_codes[] = { - { MP_OKAY , CRYPT_OK}, - { MP_MEM , CRYPT_MEM}, - { MP_VAL , CRYPT_INVALID_ARG}, -}; - -/** - Convert a MPI error to a LTC error (Possibly the most powerful function ever! Oh wait... no) - @param err The error to convert - @return The equivalent LTC error code or CRYPT_ERROR if none found -*/ -static int mpi_to_ltc_error(int err) -{ - int x; - - for (x = 0; x < (int)(sizeof(mpi_to_ltc_codes)/sizeof(mpi_to_ltc_codes[0])); x++) { - if (err == mpi_to_ltc_codes[x].mpi_code) { - return mpi_to_ltc_codes[x].ltc_code; - } - } - return CRYPT_ERROR; -} - -static int init(void **a) -{ - int err; - - LTC_ARGCHK(a != NULL); - - *a = XCALLOC(1, sizeof(mp_int)); - if (*a == NULL) { - return CRYPT_MEM; - } - - if ((err = mpi_to_ltc_error(mp_init(*a))) != CRYPT_OK) { - XFREE(*a); - } - return err; -} - -static void deinit(void *a) -{ - LTC_ARGCHKVD(a != NULL); - mp_clear(a); - XFREE(a); -} - -static int neg(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - return mpi_to_ltc_error(mp_neg(a, b)); -} - -static int copy(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - return mpi_to_ltc_error(mp_copy(a, b)); -} - -static int init_copy(void **a, void *b) -{ - if (init(a) != CRYPT_OK) { - return CRYPT_MEM; - } - return copy(b, *a); -} - -/* ---- trivial ---- */ -static int set_int(void *a, ltc_mp_digit b) -{ - LTC_ARGCHK(a != NULL); - return mpi_to_ltc_error(mp_set_int(a, b)); -} - -static unsigned long get_int(void *a) -{ - LTC_ARGCHK(a != NULL); - return mp_get_int(a); -} - -static ltc_mp_digit get_digit(void *a, int n) -{ - mp_int *A; - LTC_ARGCHK(a != NULL); - A = a; - return (n >= A->used || n < 0) ? 0 : A->dp[n]; -} - -static int get_digit_count(void *a) -{ - mp_int *A; - LTC_ARGCHK(a != NULL); - A = a; - return A->used; -} - -static int compare(void *a, void *b) -{ - int ret; - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - ret = mp_cmp(a, b); - switch (ret) { - case MP_LT: return LTC_MP_LT; - case MP_EQ: return LTC_MP_EQ; - case MP_GT: return LTC_MP_GT; - default: return 0; - } -} - -static int compare_d(void *a, ltc_mp_digit b) -{ - int ret; - LTC_ARGCHK(a != NULL); - ret = mp_cmp_d(a, b); - switch (ret) { - case MP_LT: return LTC_MP_LT; - case MP_EQ: return LTC_MP_EQ; - case MP_GT: return LTC_MP_GT; - default: return 0; - } -} - -static int count_bits(void *a) -{ - LTC_ARGCHK(a != NULL); - return mp_count_bits(a); -} - -static int count_lsb_bits(void *a) -{ - LTC_ARGCHK(a != NULL); - return mp_cnt_lsb(a); -} - - -static int twoexpt(void *a, int n) -{ - LTC_ARGCHK(a != NULL); - return mpi_to_ltc_error(mp_2expt(a, n)); -} - -/* ---- conversions ---- */ - -/* read ascii string */ -static int read_radix(void *a, const char *b, int radix) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - return mpi_to_ltc_error(mp_read_radix(a, b, radix)); -} - -/* write one */ -static int write_radix(void *a, char *b, int radix) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - return mpi_to_ltc_error(mp_toradix(a, b, radix)); -} - -/* get size as unsigned char string */ -static unsigned long unsigned_size(void *a) -{ - LTC_ARGCHK(a != NULL); - return mp_unsigned_bin_size(a); -} - -/* store */ -static int unsigned_write(void *a, unsigned char *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - return mpi_to_ltc_error(mp_to_unsigned_bin(a, b)); -} - -/* read */ -static int unsigned_read(void *a, unsigned char *b, unsigned long len) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - return mpi_to_ltc_error(mp_read_unsigned_bin(a, b, len)); -} - -/* add */ -static int add(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - return mpi_to_ltc_error(mp_add(a, b, c)); -} - -static int addi(void *a, ltc_mp_digit b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - return mpi_to_ltc_error(mp_add_d(a, b, c)); -} - -/* sub */ -static int sub(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - return mpi_to_ltc_error(mp_sub(a, b, c)); -} - -static int subi(void *a, ltc_mp_digit b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - return mpi_to_ltc_error(mp_sub_d(a, b, c)); -} - -/* mul */ -static int mul(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - return mpi_to_ltc_error(mp_mul(a, b, c)); -} - -static int muli(void *a, ltc_mp_digit b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - return mpi_to_ltc_error(mp_mul_d(a, b, c)); -} - -/* sqr */ -static int sqr(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - return mpi_to_ltc_error(mp_sqr(a, b)); -} - -/* div */ -static int divide(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - return mpi_to_ltc_error(mp_div(a, b, c, d)); -} - -static int div_2(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - return mpi_to_ltc_error(mp_div_2(a, b)); -} - -/* modi */ -static int modi(void *a, ltc_mp_digit b, ltc_mp_digit *c) -{ - mp_digit tmp; - int err; - - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - - if ((err = mpi_to_ltc_error(mp_mod_d(a, b, &tmp))) != CRYPT_OK) { - return err; - } - *c = tmp; - return CRYPT_OK; -} - -/* gcd */ -static int gcd(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - return mpi_to_ltc_error(mp_gcd(a, b, c)); -} - -/* lcm */ -static int lcm(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - return mpi_to_ltc_error(mp_lcm(a, b, c)); -} - -static int addmod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - return mpi_to_ltc_error(mp_addmod(a,b,c,d)); -} - -static int submod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - return mpi_to_ltc_error(mp_submod(a,b,c,d)); -} - -static int mulmod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - return mpi_to_ltc_error(mp_mulmod(a,b,c,d)); -} - -static int sqrmod(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - return mpi_to_ltc_error(mp_sqrmod(a,b,c)); -} - -/* invmod */ -static int invmod(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - return mpi_to_ltc_error(mp_invmod(a, b, c)); -} - -/* setup */ -static int montgomery_setup(void *a, void **b) -{ - int err; - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - *b = XCALLOC(1, sizeof(mp_digit)); - if (*b == NULL) { - return CRYPT_MEM; - } - if ((err = mpi_to_ltc_error(mp_montgomery_setup(a, (mp_digit *)*b))) != CRYPT_OK) { - XFREE(*b); - } - return err; -} - -/* get normalization value */ -static int montgomery_normalization(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - return mpi_to_ltc_error(mp_montgomery_calc_normalization(a, b)); -} - -/* reduce */ -static int montgomery_reduce(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - return mpi_to_ltc_error(mp_montgomery_reduce(a, b, *((mp_digit *)c))); -} - -/* clean up */ -static void montgomery_deinit(void *a) -{ - XFREE(a); -} - -static int exptmod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - return mpi_to_ltc_error(mp_exptmod(a,b,c,d)); -} - -static int isprime(void *a, int b, int *c) -{ - int err; - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - if (b == 0) { - b = LTC_MILLER_RABIN_REPS; - } /* if */ - err = mpi_to_ltc_error(mp_prime_is_prime(a, b, c)); - *c = (*c == MP_YES) ? LTC_MP_YES : LTC_MP_NO; - return err; -} - -static int set_rand(void *a, int size) -{ - LTC_ARGCHK(a != NULL); - return mpi_to_ltc_error(mp_rand(a, size)); -} - -const ltc_math_descriptor ltm_desc = { - - "LibTomMath", - (int)DIGIT_BIT, - - &init, - &init_copy, - &deinit, - - &neg, - ©, - - &set_int, - &get_int, - &get_digit, - &get_digit_count, - &compare, - &compare_d, - &count_bits, - &count_lsb_bits, - &twoexpt, - - &read_radix, - &write_radix, - &unsigned_size, - &unsigned_write, - &unsigned_read, - - &add, - &addi, - &sub, - &subi, - &mul, - &muli, - &sqr, - ÷, - &div_2, - &modi, - &gcd, - &lcm, - - &mulmod, - &sqrmod, - &invmod, - - &montgomery_setup, - &montgomery_normalization, - &montgomery_reduce, - &montgomery_deinit, - - &exptmod, - &isprime, - -#ifdef LTC_MECC -#ifdef LTC_MECC_FP - <c_ecc_fp_mulmod, -#else - <c_ecc_mulmod, -#endif - <c_ecc_projective_add_point, - <c_ecc_projective_dbl_point, - <c_ecc_map, -#ifdef LTC_ECC_SHAMIR -#ifdef LTC_MECC_FP - <c_ecc_fp_mul2add, -#else - <c_ecc_mul2add, -#endif /* LTC_MECC_FP */ -#else - NULL, -#endif /* LTC_ECC_SHAMIR */ -#else - NULL, NULL, NULL, NULL, NULL, -#endif /* LTC_MECC */ - -#ifdef LTC_MRSA - &rsa_make_key, - &rsa_exptmod, -#else - NULL, NULL, -#endif - &addmod, - &submod, - - &set_rand, - -}; - - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/math/multi.c b/src/libtomcrypt/src/math/multi.c deleted file mode 100644 index 666a4d8138..0000000000 --- a/src/libtomcrypt/src/math/multi.c +++ /dev/null @@ -1,76 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#ifdef LTC_MPI -#include - -int ltc_init_multi(void **a, ...) -{ - void **cur = a; - int np = 0; - va_list args; - - va_start(args, a); - while (cur != NULL) { - if (mp_init(cur) != CRYPT_OK) { - /* failed */ - va_list clean_list; - - va_start(clean_list, a); - cur = a; - while (np--) { - mp_clear(*cur); - cur = va_arg(clean_list, void**); - } - va_end(clean_list); - va_end(args); - return CRYPT_MEM; - } - ++np; - cur = va_arg(args, void**); - } - va_end(args); - return CRYPT_OK; -} - -void ltc_deinit_multi(void *a, ...) -{ - void *cur = a; - va_list args; - - va_start(args, a); - while (cur != NULL) { - mp_clear(cur); - cur = va_arg(args, void *); - } - va_end(args); -} - -void ltc_cleanup_multi(void **a, ...) -{ - void **cur = a; - va_list args; - - va_start(args, a); - while (cur != NULL) { - if (*cur != NULL) { - mp_clear(*cur); - *cur = NULL; - } - cur = va_arg(args, void**); - } - va_end(args); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/math/radix_to_bin.c b/src/libtomcrypt/src/math/radix_to_bin.c deleted file mode 100644 index 6796227073..0000000000 --- a/src/libtomcrypt/src/math/radix_to_bin.c +++ /dev/null @@ -1,62 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file radix_to_bin.c - Convert data from a specific radix to binary. - Steffen Jaeckel -*/ - -/** - Convert data from a specific radix to binary - - The default MPI descriptors #ltm_desc, #tfm_desc and #gmp_desc - have the following restrictions on parameters: - - \p in - NUL-terminated char buffer - - \p radix - 2..64 - - @param in The input - @param radix The radix of the input - @param out The output buffer - @param len [in/out] The length of the output buffer - - @return CRYPT_OK on success. -*/ -int radix_to_bin(const void *in, int radix, void *out, unsigned long *len) -{ - unsigned long l; - void* mpi; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(len != NULL); - - if ((err = mp_init(&mpi)) != CRYPT_OK) return err; - if ((err = mp_read_radix(mpi, in, radix)) != CRYPT_OK) goto LBL_ERR; - - if ((l = mp_unsigned_bin_size(mpi)) > *len) { - *len = l; - err = CRYPT_BUFFER_OVERFLOW; - goto LBL_ERR; - } - *len = l; - - if ((err = mp_to_unsigned_bin(mpi, out)) != CRYPT_OK) goto LBL_ERR; - -LBL_ERR: - mp_clear(mpi); - return err; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/math/rand_bn.c b/src/libtomcrypt/src/math/rand_bn.c deleted file mode 100644 index a735f96c9b..0000000000 --- a/src/libtomcrypt/src/math/rand_bn.c +++ /dev/null @@ -1,75 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#if defined(LTC_MDSA) || defined(LTC_MECC) -/** - Generate a random number N with given bitlength (note: MSB can be 0) -*/ - -int rand_bn_bits(void *N, int bits, prng_state *prng, int wprng) -{ - int res, bytes; - unsigned char *buf, mask; - - LTC_ARGCHK(N != NULL); - LTC_ARGCHK(bits > 1); - - /* check PRNG */ - if ((res = prng_is_valid(wprng)) != CRYPT_OK) return res; - - bytes = (bits+7) >> 3; - mask = 0xff << (8 - bits % 8); - - /* allocate buffer */ - if ((buf = XCALLOC(1, bytes)) == NULL) return CRYPT_MEM; - - /* generate random bytes */ - if (prng_descriptor[wprng].read(buf, bytes, prng) != (unsigned long)bytes) { - res = CRYPT_ERROR_READPRNG; - goto cleanup; - } - /* mask bits */ - buf[0] &= ~mask; - /* load value */ - if ((res = mp_read_unsigned_bin(N, buf, bytes)) != CRYPT_OK) goto cleanup; - - res = CRYPT_OK; - -cleanup: -#ifdef LTC_CLEAN_STACK - zeromem(buf, bytes); -#endif - XFREE(buf); - return res; -} - -/** - Generate a random number N in a range: 1 <= N < limit -*/ -int rand_bn_upto(void *N, void *limit, prng_state *prng, int wprng) -{ - int res, bits; - - LTC_ARGCHK(N != NULL); - LTC_ARGCHK(limit != NULL); - - bits = mp_count_bits(limit); - do { - res = rand_bn_bits(N, bits, prng, wprng); - if (res != CRYPT_OK) return res; - } while (mp_cmp_d(N, 0) != LTC_MP_GT || mp_cmp(N, limit) != LTC_MP_LT); - - return CRYPT_OK; -} -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/math/rand_prime.c b/src/libtomcrypt/src/math/rand_prime.c deleted file mode 100644 index efe4b13ab7..0000000000 --- a/src/libtomcrypt/src/math/rand_prime.c +++ /dev/null @@ -1,88 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#if defined(LTC_MRSA) || (!defined(LTC_NO_MATH) && !defined(LTC_NO_PRNGS)) - -/** - @file rand_prime.c - Generate a random prime, Tom St Denis -*/ - -#define USE_BBS 1 - -int rand_prime(void *N, long len, prng_state *prng, int wprng) -{ - int err, res, type; - unsigned char *buf; - - LTC_ARGCHK(N != NULL); - - /* get type */ - if (len < 0) { - type = USE_BBS; - len = -len; - } else { - type = 0; - } - - /* allow sizes between 2 and 512 bytes for a prime size */ - if (len < 2 || len > 512) { - return CRYPT_INVALID_PRIME_SIZE; - } - - /* valid PRNG? Better be! */ - if ((err = prng_is_valid(wprng)) != CRYPT_OK) { - return err; - } - - /* allocate buffer to work with */ - buf = XCALLOC(1, len); - if (buf == NULL) { - return CRYPT_MEM; - } - - do { - /* generate value */ - if (prng_descriptor[wprng].read(buf, len, prng) != (unsigned long)len) { - XFREE(buf); - return CRYPT_ERROR_READPRNG; - } - - /* munge bits */ - buf[0] |= 0x80 | 0x40; - buf[len-1] |= 0x01 | ((type & USE_BBS) ? 0x02 : 0x00); - - /* load value */ - if ((err = mp_read_unsigned_bin(N, buf, len)) != CRYPT_OK) { - XFREE(buf); - return err; - } - - /* test */ - if ((err = mp_prime_is_prime(N, LTC_MILLER_RABIN_REPS, &res)) != CRYPT_OK) { - XFREE(buf); - return err; - } - } while (res == LTC_MP_NO); - -#ifdef LTC_CLEAN_STACK - zeromem(buf, len); -#endif - - XFREE(buf); - return CRYPT_OK; -} - -#endif /* LTC_NO_MATH */ - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/math/tfm_desc.c b/src/libtomcrypt/src/math/tfm_desc.c deleted file mode 100644 index fc8b8f9f57..0000000000 --- a/src/libtomcrypt/src/math/tfm_desc.c +++ /dev/null @@ -1,807 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#define DESC_DEF_ONLY -#include "tomcrypt.h" - -#ifdef TFM_DESC - -#include - -static const struct { - int tfm_code, ltc_code; -} tfm_to_ltc_codes[] = { - { FP_OKAY , CRYPT_OK}, - { FP_MEM , CRYPT_MEM}, - { FP_VAL , CRYPT_INVALID_ARG}, -}; - -/** - Convert a tfm error to a LTC error (Possibly the most powerful function ever! Oh wait... no) - @param err The error to convert - @return The equivalent LTC error code or CRYPT_ERROR if none found -*/ -static int tfm_to_ltc_error(int err) -{ - int x; - - for (x = 0; x < (int)(sizeof(tfm_to_ltc_codes)/sizeof(tfm_to_ltc_codes[0])); x++) { - if (err == tfm_to_ltc_codes[x].tfm_code) { - return tfm_to_ltc_codes[x].ltc_code; - } - } - return CRYPT_ERROR; -} - -static int init(void **a) -{ - LTC_ARGCHK(a != NULL); - - *a = XCALLOC(1, sizeof(fp_int)); - if (*a == NULL) { - return CRYPT_MEM; - } - fp_init(*a); - return CRYPT_OK; -} - -static void deinit(void *a) -{ - LTC_ARGCHKVD(a != NULL); - XFREE(a); -} - -static int neg(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - fp_neg(((fp_int*)a), ((fp_int*)b)); - return CRYPT_OK; -} - -static int copy(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - fp_copy(a, b); - return CRYPT_OK; -} - -static int init_copy(void **a, void *b) -{ - if (init(a) != CRYPT_OK) { - return CRYPT_MEM; - } - return copy(b, *a); -} - -/* ---- trivial ---- */ -static int set_int(void *a, ltc_mp_digit b) -{ - LTC_ARGCHK(a != NULL); - fp_set(a, b); - return CRYPT_OK; -} - -static unsigned long get_int(void *a) -{ - fp_int *A; - LTC_ARGCHK(a != NULL); - A = a; - return A->used > 0 ? A->dp[0] : 0; -} - -static ltc_mp_digit get_digit(void *a, int n) -{ - fp_int *A; - LTC_ARGCHK(a != NULL); - A = a; - return (n >= A->used || n < 0) ? 0 : A->dp[n]; -} - -static int get_digit_count(void *a) -{ - fp_int *A; - LTC_ARGCHK(a != NULL); - A = a; - return A->used; -} - -static int compare(void *a, void *b) -{ - int ret; - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - ret = fp_cmp(a, b); - switch (ret) { - case FP_LT: return LTC_MP_LT; - case FP_EQ: return LTC_MP_EQ; - case FP_GT: return LTC_MP_GT; - } - return 0; -} - -static int compare_d(void *a, ltc_mp_digit b) -{ - int ret; - LTC_ARGCHK(a != NULL); - ret = fp_cmp_d(a, b); - switch (ret) { - case FP_LT: return LTC_MP_LT; - case FP_EQ: return LTC_MP_EQ; - case FP_GT: return LTC_MP_GT; - } - return 0; -} - -static int count_bits(void *a) -{ - LTC_ARGCHK(a != NULL); - return fp_count_bits(a); -} - -static int count_lsb_bits(void *a) -{ - LTC_ARGCHK(a != NULL); - return fp_cnt_lsb(a); -} - -static int twoexpt(void *a, int n) -{ - LTC_ARGCHK(a != NULL); - fp_2expt(a, n); - return CRYPT_OK; -} - -/* ---- conversions ---- */ - -/* read ascii string */ -static int read_radix(void *a, const char *b, int radix) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - return tfm_to_ltc_error(fp_read_radix(a, (char *)b, radix)); -} - -/* write one */ -static int write_radix(void *a, char *b, int radix) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - return tfm_to_ltc_error(fp_toradix(a, b, radix)); -} - -/* get size as unsigned char string */ -static unsigned long unsigned_size(void *a) -{ - LTC_ARGCHK(a != NULL); - return fp_unsigned_bin_size(a); -} - -/* store */ -static int unsigned_write(void *a, unsigned char *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - fp_to_unsigned_bin(a, b); - return CRYPT_OK; -} - -/* read */ -static int unsigned_read(void *a, unsigned char *b, unsigned long len) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - fp_read_unsigned_bin(a, b, len); - return CRYPT_OK; -} - -/* add */ -static int add(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - fp_add(a, b, c); - return CRYPT_OK; -} - -static int addi(void *a, ltc_mp_digit b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - fp_add_d(a, b, c); - return CRYPT_OK; -} - -/* sub */ -static int sub(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - fp_sub(a, b, c); - return CRYPT_OK; -} - -static int subi(void *a, ltc_mp_digit b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - fp_sub_d(a, b, c); - return CRYPT_OK; -} - -/* mul */ -static int mul(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - fp_mul(a, b, c); - return CRYPT_OK; -} - -static int muli(void *a, ltc_mp_digit b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - fp_mul_d(a, b, c); - return CRYPT_OK; -} - -/* sqr */ -static int sqr(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - fp_sqr(a, b); - return CRYPT_OK; -} - -/* div */ -static int divide(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - return tfm_to_ltc_error(fp_div(a, b, c, d)); -} - -static int div_2(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - fp_div_2(a, b); - return CRYPT_OK; -} - -/* modi */ -static int modi(void *a, ltc_mp_digit b, ltc_mp_digit *c) -{ - fp_digit tmp; - int err; - - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - - if ((err = tfm_to_ltc_error(fp_mod_d(a, b, &tmp))) != CRYPT_OK) { - return err; - } - *c = tmp; - return CRYPT_OK; -} - -/* gcd */ -static int gcd(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - fp_gcd(a, b, c); - return CRYPT_OK; -} - -/* lcm */ -static int lcm(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - fp_lcm(a, b, c); - return CRYPT_OK; -} - -static int addmod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - return tfm_to_ltc_error(fp_addmod(a,b,c,d)); -} - -static int submod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - return tfm_to_ltc_error(fp_submod(a,b,c,d)); -} - -static int mulmod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - return tfm_to_ltc_error(fp_mulmod(a,b,c,d)); -} - -static int sqrmod(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - return tfm_to_ltc_error(fp_sqrmod(a,b,c)); -} - -/* invmod */ -static int invmod(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - return tfm_to_ltc_error(fp_invmod(a, b, c)); -} - -/* setup */ -static int montgomery_setup(void *a, void **b) -{ - int err; - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - *b = XCALLOC(1, sizeof(fp_digit)); - if (*b == NULL) { - return CRYPT_MEM; - } - if ((err = tfm_to_ltc_error(fp_montgomery_setup(a, (fp_digit *)*b))) != CRYPT_OK) { - XFREE(*b); - } - return err; -} - -/* get normalization value */ -static int montgomery_normalization(void *a, void *b) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - fp_montgomery_calc_normalization(a, b); - return CRYPT_OK; -} - -/* reduce */ -static int montgomery_reduce(void *a, void *b, void *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - fp_montgomery_reduce(a, b, *((fp_digit *)c)); - return CRYPT_OK; -} - -/* clean up */ -static void montgomery_deinit(void *a) -{ - XFREE(a); -} - -static int exptmod(void *a, void *b, void *c, void *d) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(d != NULL); - return tfm_to_ltc_error(fp_exptmod(a,b,c,d)); -} - -static int isprime(void *a, int b, int *c) -{ - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(c != NULL); - if (b == 0) { - b = LTC_MILLER_RABIN_REPS; - } /* if */ - *c = (fp_isprime_ex(a, b) == FP_YES) ? LTC_MP_YES : LTC_MP_NO; - return CRYPT_OK; -} - -#if defined(LTC_MECC) && defined(LTC_MECC_ACCEL) - -static int tfm_ecc_projective_dbl_point(ecc_point *P, ecc_point *R, void *modulus, void *Mp) -{ - fp_int t1, t2; - fp_digit mp; - - LTC_ARGCHK(P != NULL); - LTC_ARGCHK(R != NULL); - LTC_ARGCHK(modulus != NULL); - LTC_ARGCHK(Mp != NULL); - - mp = *((fp_digit*)Mp); - - fp_init(&t1); - fp_init(&t2); - - if (P != R) { - fp_copy(P->x, R->x); - fp_copy(P->y, R->y); - fp_copy(P->z, R->z); - } - - /* t1 = Z * Z */ - fp_sqr(R->z, &t1); - fp_montgomery_reduce(&t1, modulus, mp); - /* Z = Y * Z */ - fp_mul(R->z, R->y, R->z); - fp_montgomery_reduce(R->z, modulus, mp); - /* Z = 2Z */ - fp_add(R->z, R->z, R->z); - if (fp_cmp(R->z, modulus) != FP_LT) { - fp_sub(R->z, modulus, R->z); - } - - /* &t2 = X - T1 */ - fp_sub(R->x, &t1, &t2); - if (fp_cmp_d(&t2, 0) == FP_LT) { - fp_add(&t2, modulus, &t2); - } - /* T1 = X + T1 */ - fp_add(&t1, R->x, &t1); - if (fp_cmp(&t1, modulus) != FP_LT) { - fp_sub(&t1, modulus, &t1); - } - /* T2 = T1 * T2 */ - fp_mul(&t1, &t2, &t2); - fp_montgomery_reduce(&t2, modulus, mp); - /* T1 = 2T2 */ - fp_add(&t2, &t2, &t1); - if (fp_cmp(&t1, modulus) != FP_LT) { - fp_sub(&t1, modulus, &t1); - } - /* T1 = T1 + T2 */ - fp_add(&t1, &t2, &t1); - if (fp_cmp(&t1, modulus) != FP_LT) { - fp_sub(&t1, modulus, &t1); - } - - /* Y = 2Y */ - fp_add(R->y, R->y, R->y); - if (fp_cmp(R->y, modulus) != FP_LT) { - fp_sub(R->y, modulus, R->y); - } - /* Y = Y * Y */ - fp_sqr(R->y, R->y); - fp_montgomery_reduce(R->y, modulus, mp); - /* T2 = Y * Y */ - fp_sqr(R->y, &t2); - fp_montgomery_reduce(&t2, modulus, mp); - /* T2 = T2/2 */ - if (fp_isodd(&t2)) { - fp_add(&t2, modulus, &t2); - } - fp_div_2(&t2, &t2); - /* Y = Y * X */ - fp_mul(R->y, R->x, R->y); - fp_montgomery_reduce(R->y, modulus, mp); - - /* X = T1 * T1 */ - fp_sqr(&t1, R->x); - fp_montgomery_reduce(R->x, modulus, mp); - /* X = X - Y */ - fp_sub(R->x, R->y, R->x); - if (fp_cmp_d(R->x, 0) == FP_LT) { - fp_add(R->x, modulus, R->x); - } - /* X = X - Y */ - fp_sub(R->x, R->y, R->x); - if (fp_cmp_d(R->x, 0) == FP_LT) { - fp_add(R->x, modulus, R->x); - } - - /* Y = Y - X */ - fp_sub(R->y, R->x, R->y); - if (fp_cmp_d(R->y, 0) == FP_LT) { - fp_add(R->y, modulus, R->y); - } - /* Y = Y * T1 */ - fp_mul(R->y, &t1, R->y); - fp_montgomery_reduce(R->y, modulus, mp); - /* Y = Y - T2 */ - fp_sub(R->y, &t2, R->y); - if (fp_cmp_d(R->y, 0) == FP_LT) { - fp_add(R->y, modulus, R->y); - } - - return CRYPT_OK; -} - -/** - Add two ECC points - @param P The point to add - @param Q The point to add - @param R [out] The destination of the double - @param modulus The modulus of the field the ECC curve is in - @param Mp The "b" value from montgomery_setup() - @return CRYPT_OK on success -*/ -static int tfm_ecc_projective_add_point(ecc_point *P, ecc_point *Q, ecc_point *R, void *modulus, void *Mp) -{ - fp_int t1, t2, x, y, z; - fp_digit mp; - - LTC_ARGCHK(P != NULL); - LTC_ARGCHK(Q != NULL); - LTC_ARGCHK(R != NULL); - LTC_ARGCHK(modulus != NULL); - LTC_ARGCHK(Mp != NULL); - - mp = *((fp_digit*)Mp); - - fp_init(&t1); - fp_init(&t2); - fp_init(&x); - fp_init(&y); - fp_init(&z); - - /* should we dbl instead? */ - fp_sub(modulus, Q->y, &t1); - if ( (fp_cmp(P->x, Q->x) == FP_EQ) && - (Q->z != NULL && fp_cmp(P->z, Q->z) == FP_EQ) && - (fp_cmp(P->y, Q->y) == FP_EQ || fp_cmp(P->y, &t1) == FP_EQ)) { - return tfm_ecc_projective_dbl_point(P, R, modulus, Mp); - } - - fp_copy(P->x, &x); - fp_copy(P->y, &y); - fp_copy(P->z, &z); - - /* if Z is one then these are no-operations */ - if (Q->z != NULL) { - /* T1 = Z' * Z' */ - fp_sqr(Q->z, &t1); - fp_montgomery_reduce(&t1, modulus, mp); - /* X = X * T1 */ - fp_mul(&t1, &x, &x); - fp_montgomery_reduce(&x, modulus, mp); - /* T1 = Z' * T1 */ - fp_mul(Q->z, &t1, &t1); - fp_montgomery_reduce(&t1, modulus, mp); - /* Y = Y * T1 */ - fp_mul(&t1, &y, &y); - fp_montgomery_reduce(&y, modulus, mp); - } - - /* T1 = Z*Z */ - fp_sqr(&z, &t1); - fp_montgomery_reduce(&t1, modulus, mp); - /* T2 = X' * T1 */ - fp_mul(Q->x, &t1, &t2); - fp_montgomery_reduce(&t2, modulus, mp); - /* T1 = Z * T1 */ - fp_mul(&z, &t1, &t1); - fp_montgomery_reduce(&t1, modulus, mp); - /* T1 = Y' * T1 */ - fp_mul(Q->y, &t1, &t1); - fp_montgomery_reduce(&t1, modulus, mp); - - /* Y = Y - T1 */ - fp_sub(&y, &t1, &y); - if (fp_cmp_d(&y, 0) == FP_LT) { - fp_add(&y, modulus, &y); - } - /* T1 = 2T1 */ - fp_add(&t1, &t1, &t1); - if (fp_cmp(&t1, modulus) != FP_LT) { - fp_sub(&t1, modulus, &t1); - } - /* T1 = Y + T1 */ - fp_add(&t1, &y, &t1); - if (fp_cmp(&t1, modulus) != FP_LT) { - fp_sub(&t1, modulus, &t1); - } - /* X = X - T2 */ - fp_sub(&x, &t2, &x); - if (fp_cmp_d(&x, 0) == FP_LT) { - fp_add(&x, modulus, &x); - } - /* T2 = 2T2 */ - fp_add(&t2, &t2, &t2); - if (fp_cmp(&t2, modulus) != FP_LT) { - fp_sub(&t2, modulus, &t2); - } - /* T2 = X + T2 */ - fp_add(&t2, &x, &t2); - if (fp_cmp(&t2, modulus) != FP_LT) { - fp_sub(&t2, modulus, &t2); - } - - /* if Z' != 1 */ - if (Q->z != NULL) { - /* Z = Z * Z' */ - fp_mul(&z, Q->z, &z); - fp_montgomery_reduce(&z, modulus, mp); - } - - /* Z = Z * X */ - fp_mul(&z, &x, &z); - fp_montgomery_reduce(&z, modulus, mp); - - /* T1 = T1 * X */ - fp_mul(&t1, &x, &t1); - fp_montgomery_reduce(&t1, modulus, mp); - /* X = X * X */ - fp_sqr(&x, &x); - fp_montgomery_reduce(&x, modulus, mp); - /* T2 = T2 * x */ - fp_mul(&t2, &x, &t2); - fp_montgomery_reduce(&t2, modulus, mp); - /* T1 = T1 * X */ - fp_mul(&t1, &x, &t1); - fp_montgomery_reduce(&t1, modulus, mp); - - /* X = Y*Y */ - fp_sqr(&y, &x); - fp_montgomery_reduce(&x, modulus, mp); - /* X = X - T2 */ - fp_sub(&x, &t2, &x); - if (fp_cmp_d(&x, 0) == FP_LT) { - fp_add(&x, modulus, &x); - } - - /* T2 = T2 - X */ - fp_sub(&t2, &x, &t2); - if (fp_cmp_d(&t2, 0) == FP_LT) { - fp_add(&t2, modulus, &t2); - } - /* T2 = T2 - X */ - fp_sub(&t2, &x, &t2); - if (fp_cmp_d(&t2, 0) == FP_LT) { - fp_add(&t2, modulus, &t2); - } - /* T2 = T2 * Y */ - fp_mul(&t2, &y, &t2); - fp_montgomery_reduce(&t2, modulus, mp); - /* Y = T2 - T1 */ - fp_sub(&t2, &t1, &y); - if (fp_cmp_d(&y, 0) == FP_LT) { - fp_add(&y, modulus, &y); - } - /* Y = Y/2 */ - if (fp_isodd(&y)) { - fp_add(&y, modulus, &y); - } - fp_div_2(&y, &y); - - fp_copy(&x, R->x); - fp_copy(&y, R->y); - fp_copy(&z, R->z); - - return CRYPT_OK; -} - - -#endif - -static int set_rand(void *a, int size) -{ - LTC_ARGCHK(a != NULL); - fp_rand(a, size); - return CRYPT_OK; -} - -const ltc_math_descriptor tfm_desc = { - - "TomsFastMath", - (int)DIGIT_BIT, - - &init, - &init_copy, - &deinit, - - &neg, - ©, - - &set_int, - &get_int, - &get_digit, - &get_digit_count, - &compare, - &compare_d, - &count_bits, - &count_lsb_bits, - &twoexpt, - - &read_radix, - &write_radix, - &unsigned_size, - &unsigned_write, - &unsigned_read, - - &add, - &addi, - &sub, - &subi, - &mul, - &muli, - &sqr, - ÷, - &div_2, - &modi, - &gcd, - &lcm, - - &mulmod, - &sqrmod, - &invmod, - - &montgomery_setup, - &montgomery_normalization, - &montgomery_reduce, - &montgomery_deinit, - - &exptmod, - &isprime, - -#ifdef LTC_MECC -#ifdef LTC_MECC_FP - <c_ecc_fp_mulmod, -#else - <c_ecc_mulmod, -#endif /* LTC_MECC_FP */ -#ifdef LTC_MECC_ACCEL - &tfm_ecc_projective_add_point, - &tfm_ecc_projective_dbl_point, -#else - <c_ecc_projective_add_point, - <c_ecc_projective_dbl_point, -#endif /* LTC_MECC_ACCEL */ - <c_ecc_map, -#ifdef LTC_ECC_SHAMIR -#ifdef LTC_MECC_FP - <c_ecc_fp_mul2add, -#else - <c_ecc_mul2add, -#endif /* LTC_MECC_FP */ -#else - NULL, -#endif /* LTC_ECC_SHAMIR */ -#else - NULL, NULL, NULL, NULL, NULL, -#endif /* LTC_MECC */ - -#ifdef LTC_MRSA - &rsa_make_key, - &rsa_exptmod, -#else - NULL, NULL, -#endif - &addmod, - &submod, - - set_rand, - -}; - - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/adler32.c b/src/libtomcrypt/src/misc/adler32.c deleted file mode 100644 index ef35395c8d..0000000000 --- a/src/libtomcrypt/src/misc/adler32.c +++ /dev/null @@ -1,131 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file adler32.c - Adler-32 checksum algorithm - Written and placed in the public domain by Wei Dai - Adapted for libtomcrypt by Steffen Jaeckel -*/ -#ifdef LTC_ADLER32 - -static const unsigned long _adler32_base = 65521; - -void adler32_init(adler32_state *ctx) -{ - LTC_ARGCHKVD(ctx != NULL); - ctx->s[0] = 1; - ctx->s[1] = 0; -} - -void adler32_update(adler32_state *ctx, const unsigned char *input, unsigned long length) -{ - unsigned long s1, s2; - - LTC_ARGCHKVD(ctx != NULL); - LTC_ARGCHKVD(input != NULL); - s1 = ctx->s[0]; - s2 = ctx->s[1]; - - if (length % 8 != 0) { - do { - s1 += *input++; - s2 += s1; - length--; - } while (length % 8 != 0); - - if (s1 >= _adler32_base) - s1 -= _adler32_base; - s2 %= _adler32_base; - } - - while (length > 0) { - s1 += input[0]; - s2 += s1; - s1 += input[1]; - s2 += s1; - s1 += input[2]; - s2 += s1; - s1 += input[3]; - s2 += s1; - s1 += input[4]; - s2 += s1; - s1 += input[5]; - s2 += s1; - s1 += input[6]; - s2 += s1; - s1 += input[7]; - s2 += s1; - - length -= 8; - input += 8; - - if (s1 >= _adler32_base) - s1 -= _adler32_base; - s2 %= _adler32_base; - } - - LTC_ARGCHKVD(s1 < _adler32_base); - LTC_ARGCHKVD(s2 < _adler32_base); - - ctx->s[0] = (unsigned short)s1; - ctx->s[1] = (unsigned short)s2; -} - -void adler32_finish(adler32_state *ctx, void *hash, unsigned long size) -{ - unsigned char* h; - - LTC_ARGCHKVD(ctx != NULL); - LTC_ARGCHKVD(hash != NULL); - - h = hash; - - switch (size) { - default: - h[3] = ctx->s[0] & 0x0ff; - /* FALLTHROUGH */ - case 3: - h[2] = (ctx->s[0] >> 8) & 0x0ff; - /* FALLTHROUGH */ - case 2: - h[1] = ctx->s[1] & 0x0ff; - /* FALLTHROUGH */ - case 1: - h[0] = (ctx->s[1] >> 8) & 0x0ff; - /* FALLTHROUGH */ - case 0: - ; - } -} - -int adler32_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - const void* in = "libtomcrypt"; - const unsigned char adler32[] = { 0x1b, 0xe8, 0x04, 0xba }; - unsigned char out[4]; - adler32_state ctx; - adler32_init(&ctx); - adler32_update(&ctx, in, strlen(in)); - adler32_finish(&ctx, out, 4); - if (compare_testvector(adler32, 4, out, 4, "adler32", 0)) { - return CRYPT_FAIL_TESTVECTOR; - } - return CRYPT_OK; -#endif -} -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/base64/base64_decode.c b/src/libtomcrypt/src/misc/base64/base64_decode.c deleted file mode 100644 index f17c5d16c4..0000000000 --- a/src/libtomcrypt/src/misc/base64/base64_decode.c +++ /dev/null @@ -1,196 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file base64_decode.c - Compliant base64 code donated by Wayne Scott (wscott@bitmover.com) - base64 URL Safe variant (RFC 4648 section 5) by Karel Miko -*/ - - -#if defined(LTC_BASE64) || defined (LTC_BASE64_URL) - -#if defined(LTC_BASE64) -static const unsigned char map_base64[256] = { -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, -255, 254, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255, -255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255 }; -#endif /* LTC_BASE64 */ - -static const unsigned char map_base64url[] = { -#if defined(LTC_BASE64_URL) -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, -255, 254, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 63, -255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, -255, 255, 255, 255 -#endif /* LTC_BASE64_URL */ -}; - -enum { - relaxed = 0, - strict = 1 -}; - -static int _base64_decode_internal(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - const unsigned char *map, int is_strict) -{ - unsigned long t, x, y, z; - unsigned char c; - int g; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - g = 0; /* '=' counter */ - for (x = y = z = t = 0; x < inlen; x++) { - c = map[in[x]&0xFF]; - if (c == 254) { - g++; - continue; - } - else if (is_strict && g > 0) { - /* we only allow '=' to be at the end */ - return CRYPT_INVALID_PACKET; - } - if (c == 255) { - if (is_strict) - return CRYPT_INVALID_PACKET; - else - continue; - } - - t = (t<<6)|c; - - if (++y == 4) { - if (z + 3 > *outlen) return CRYPT_BUFFER_OVERFLOW; - out[z++] = (unsigned char)((t>>16)&255); - out[z++] = (unsigned char)((t>>8)&255); - out[z++] = (unsigned char)(t&255); - y = t = 0; - } - } - - if (y != 0) { - if (y == 1) return CRYPT_INVALID_PACKET; - if ((y + g) != 4 && is_strict && map != map_base64url) return CRYPT_INVALID_PACKET; - t = t << (6 * (4 - y)); - if (z + y - 1 > *outlen) return CRYPT_BUFFER_OVERFLOW; - if (y >= 2) out[z++] = (unsigned char) ((t >> 16) & 255); - if (y == 3) out[z++] = (unsigned char) ((t >> 8) & 255); - } - *outlen = z; - return CRYPT_OK; -} - -#if defined(LTC_BASE64) -/** - Relaxed base64 decode a block of memory - @param in The base64 data to decode - @param inlen The length of the base64 data - @param out [out] The destination of the binary decoded data - @param outlen [in/out] The max size and resulting size of the decoded data - @return CRYPT_OK if successful -*/ -int base64_decode(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - return _base64_decode_internal(in, inlen, out, outlen, map_base64, relaxed); -} - -/** - Strict base64 decode a block of memory - @param in The base64 data to decode - @param inlen The length of the base64 data - @param out [out] The destination of the binary decoded data - @param outlen [in/out] The max size and resulting size of the decoded data - @return CRYPT_OK if successful -*/ -int base64_strict_decode(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - return _base64_decode_internal(in, inlen, out, outlen, map_base64, strict); -} -#endif /* LTC_BASE64 */ - -#if defined(LTC_BASE64_URL) -/** - Relaxed base64 (URL Safe, RFC 4648 section 5) decode a block of memory - @param in The base64 data to decode - @param inlen The length of the base64 data - @param out [out] The destination of the binary decoded data - @param outlen [in/out] The max size and resulting size of the decoded data - @return CRYPT_OK if successful -*/ -int base64url_decode(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - return _base64_decode_internal(in, inlen, out, outlen, map_base64url, relaxed); -} - -/** - Strict base64 (URL Safe, RFC 4648 section 5) decode a block of memory - @param in The base64 data to decode - @param inlen The length of the base64 data - @param out [out] The destination of the binary decoded data - @param outlen [in/out] The max size and resulting size of the decoded data - @return CRYPT_OK if successful -*/ -int base64url_strict_decode(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - return _base64_decode_internal(in, inlen, out, outlen, map_base64url, strict); -} -#endif /* LTC_BASE64_URL */ - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/base64/base64_encode.c b/src/libtomcrypt/src/misc/base64/base64_encode.c deleted file mode 100644 index daa8ccad6a..0000000000 --- a/src/libtomcrypt/src/misc/base64/base64_encode.c +++ /dev/null @@ -1,124 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file base64_encode.c - Compliant base64 encoder donated by Wayne Scott (wscott@bitmover.com) - base64 URL Safe variant (RFC 4648 section 5) by Karel Miko -*/ - - -#if defined(LTC_BASE64) || defined (LTC_BASE64_URL) - -#if defined(LTC_BASE64) -static const char * const codes_base64 = -"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -#endif /* LTC_BASE64 */ - -#if defined(LTC_BASE64_URL) -static const char * const codes_base64url = -"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"; -#endif /* LTC_BASE64_URL */ - -static int _base64_encode_internal(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - const char *codes, int pad) -{ - unsigned long i, len2, leven; - unsigned char *p; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* valid output size ? */ - len2 = 4 * ((inlen + 2) / 3); - if (*outlen < len2 + 1) { - *outlen = len2 + 1; - return CRYPT_BUFFER_OVERFLOW; - } - p = out; - leven = 3*(inlen / 3); - for (i = 0; i < leven; i += 3) { - *p++ = codes[(in[0] >> 2) & 0x3F]; - *p++ = codes[(((in[0] & 3) << 4) + (in[1] >> 4)) & 0x3F]; - *p++ = codes[(((in[1] & 0xf) << 2) + (in[2] >> 6)) & 0x3F]; - *p++ = codes[in[2] & 0x3F]; - in += 3; - } - /* Pad it if necessary... */ - if (i < inlen) { - unsigned a = in[0]; - unsigned b = (i+1 < inlen) ? in[1] : 0; - - *p++ = codes[(a >> 2) & 0x3F]; - *p++ = codes[(((a & 3) << 4) + (b >> 4)) & 0x3F]; - if (pad) { - *p++ = (i+1 < inlen) ? codes[(((b & 0xf) << 2)) & 0x3F] : '='; - *p++ = '='; - } - else { - if (i+1 < inlen) *p++ = codes[(((b & 0xf) << 2)) & 0x3F]; - } - } - - /* append a NULL byte */ - *p = '\0'; - - /* return ok */ - *outlen = (unsigned long)(p - out); - return CRYPT_OK; -} - -#if defined(LTC_BASE64) -/** - base64 Encode a buffer (NUL terminated) - @param in The input buffer to encode - @param inlen The length of the input buffer - @param out [out] The destination of the base64 encoded data - @param outlen [in/out] The max size and resulting size - @return CRYPT_OK if successful -*/ -int base64_encode(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - return _base64_encode_internal(in, inlen, out, outlen, codes_base64, 1); -} -#endif /* LTC_BASE64 */ - - -#if defined(LTC_BASE64_URL) -/** - base64 (URL Safe, RFC 4648 section 5) Encode a buffer (NUL terminated) - @param in The input buffer to encode - @param inlen The length of the input buffer - @param out [out] The destination of the base64 encoded data - @param outlen [in/out] The max size and resulting size - @return CRYPT_OK if successful -*/ -int base64url_encode(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - return _base64_encode_internal(in, inlen, out, outlen, codes_base64url, 0); -} - -int base64url_strict_encode(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - return _base64_encode_internal(in, inlen, out, outlen, codes_base64url, 1); -} -#endif /* LTC_BASE64_URL */ - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/burn_stack.c b/src/libtomcrypt/src/misc/burn_stack.c deleted file mode 100644 index e9b2685a48..0000000000 --- a/src/libtomcrypt/src/misc/burn_stack.c +++ /dev/null @@ -1,32 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file burn_stack.c - Burn stack, Tom St Denis -*/ - -/** - Burn some stack memory - @param len amount of stack to burn in bytes -*/ -void burn_stack(unsigned long len) -{ - unsigned char buf[32]; - zeromem(buf, sizeof(buf)); - if (len > (unsigned long)sizeof(buf)) - burn_stack(len - sizeof(buf)); -} - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/compare_testvector.c b/src/libtomcrypt/src/misc/compare_testvector.c deleted file mode 100644 index 67fe1c1f9a..0000000000 --- a/src/libtomcrypt/src/misc/compare_testvector.c +++ /dev/null @@ -1,87 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -/** - @file compare_testvector.c - Function to compare two testvectors and print a (detailed) error-message if required, Steffen Jaeckel -*/ - -#if defined(LTC_TEST) && defined(LTC_TEST_DBG) -static void _print_hex(const char* what, const void* v, const unsigned long l) -{ - const unsigned char* p = v; - unsigned long x, y = 0, z; - fprintf(stderr, "%s contents: \n", what); - for (x = 0; x < l; ) { - fprintf(stderr, "%02X ", p[x]); - if (!(++x % 16) || x == l) { - if((x % 16) != 0) { - z = 16 - (x % 16); - if(z >= 8) - fprintf(stderr, " "); - for (; z != 0; --z) { - fprintf(stderr, " "); - } - } - fprintf(stderr, " | "); - for(; y < x; y++) { - if((y % 8) == 0) - fprintf(stderr, " "); - if(isgraph(p[y])) - fprintf(stderr, "%c", p[y]); - else - fprintf(stderr, "."); - } - fprintf(stderr, "\n"); - } - else if((x % 8) == 0) { - fprintf(stderr, " "); - } - } -} -#endif - -/** - Compare two test-vectors - - @param is The data as it is - @param is_len The length of is - @param should The data as it should - @param should_len The length of should - @param what The type of the data - @param which The iteration count - @return 0 on equality, -1 or 1 on difference -*/ -int compare_testvector(const void* is, const unsigned long is_len, const void* should, const unsigned long should_len, const char* what, int which) -{ - int res = 0; - if(is_len != should_len) - res = is_len > should_len ? -1 : 1; - else - res = XMEMCMP(is, should, is_len); - -#if defined(LTC_TEST) && defined(LTC_TEST_DBG) - if (res != 0) { - fprintf(stderr, "Testvector #%i of %s failed:\n", which, what); - _print_hex("SHOULD", should, should_len); - _print_hex("IS ", is, is_len); - } -#else - LTC_UNUSED_PARAM(which); - LTC_UNUSED_PARAM(what); -#endif - - return res; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crc32.c b/src/libtomcrypt/src/misc/crc32.c deleted file mode 100644 index fb6fa8d393..0000000000 --- a/src/libtomcrypt/src/misc/crc32.c +++ /dev/null @@ -1,202 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crc32.c - CRC-32 checksum algorithm - Written and placed in the public domain by Wei Dai - Adapted for libtomcrypt by Steffen Jaeckel -*/ -#ifdef LTC_CRC32 - -static const ulong32 _CRC32_NEGL = 0xffffffffUL; - -#if defined(ENDIAN_LITTLE) -#define CRC32_INDEX(c) (c & 0xff) -#define CRC32_SHIFTED(c) (c >> 8) -#elif defined(ENDIAN_BIG) -#define CRC32_INDEX(c) (c >> 24) -#define CRC32_SHIFTED(c) (c << 8) -#else -#error The existing CRC32 implementation only works properly when the endianness of the target platform is known. -#endif - -/* Table of CRC-32's of all single byte values (made by makecrc.c) */ -static const ulong32 crc32_m_tab[] = -{ -#if defined(ENDIAN_LITTLE) - 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, - 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, - 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, - 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, - 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, - 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, - 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, - 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, - 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, - 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL, - 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, - 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, - 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L, - 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, - 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, - 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, - 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, - 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, - 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, - 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, - 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, - 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, - 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, - 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, - 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, - 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, - 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, - 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, - 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, - 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, - 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, - 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, - 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, - 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, - 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, - 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, - 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL, - 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, - 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, - 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, - 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, - 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L, - 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, - 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, - 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L, - 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, - 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, - 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, - 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, - 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L, - 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, - 0x2d02ef8dL -#else - 0x00000000L, 0x96300777L, 0x2c610eeeL, 0xba510999L, 0x19c46d07L, - 0x8ff46a70L, 0x35a563e9L, 0xa395649eL, 0x3288db0eL, 0xa4b8dc79L, - 0x1ee9d5e0L, 0x88d9d297L, 0x2b4cb609L, 0xbd7cb17eL, 0x072db8e7L, - 0x911dbf90L, 0x6410b71dL, 0xf220b06aL, 0x4871b9f3L, 0xde41be84L, - 0x7dd4da1aL, 0xebe4dd6dL, 0x51b5d4f4L, 0xc785d383L, 0x56986c13L, - 0xc0a86b64L, 0x7af962fdL, 0xecc9658aL, 0x4f5c0114L, 0xd96c0663L, - 0x633d0ffaL, 0xf50d088dL, 0xc8206e3bL, 0x5e10694cL, 0xe44160d5L, - 0x727167a2L, 0xd1e4033cL, 0x47d4044bL, 0xfd850dd2L, 0x6bb50aa5L, - 0xfaa8b535L, 0x6c98b242L, 0xd6c9bbdbL, 0x40f9bcacL, 0xe36cd832L, - 0x755cdf45L, 0xcf0dd6dcL, 0x593dd1abL, 0xac30d926L, 0x3a00de51L, - 0x8051d7c8L, 0x1661d0bfL, 0xb5f4b421L, 0x23c4b356L, 0x9995bacfL, - 0x0fa5bdb8L, 0x9eb80228L, 0x0888055fL, 0xb2d90cc6L, 0x24e90bb1L, - 0x877c6f2fL, 0x114c6858L, 0xab1d61c1L, 0x3d2d66b6L, 0x9041dc76L, - 0x0671db01L, 0xbc20d298L, 0x2a10d5efL, 0x8985b171L, 0x1fb5b606L, - 0xa5e4bf9fL, 0x33d4b8e8L, 0xa2c90778L, 0x34f9000fL, 0x8ea80996L, - 0x18980ee1L, 0xbb0d6a7fL, 0x2d3d6d08L, 0x976c6491L, 0x015c63e6L, - 0xf4516b6bL, 0x62616c1cL, 0xd8306585L, 0x4e0062f2L, 0xed95066cL, - 0x7ba5011bL, 0xc1f40882L, 0x57c40ff5L, 0xc6d9b065L, 0x50e9b712L, - 0xeab8be8bL, 0x7c88b9fcL, 0xdf1ddd62L, 0x492dda15L, 0xf37cd38cL, - 0x654cd4fbL, 0x5861b24dL, 0xce51b53aL, 0x7400bca3L, 0xe230bbd4L, - 0x41a5df4aL, 0xd795d83dL, 0x6dc4d1a4L, 0xfbf4d6d3L, 0x6ae96943L, - 0xfcd96e34L, 0x468867adL, 0xd0b860daL, 0x732d0444L, 0xe51d0333L, - 0x5f4c0aaaL, 0xc97c0dddL, 0x3c710550L, 0xaa410227L, 0x10100bbeL, - 0x86200cc9L, 0x25b56857L, 0xb3856f20L, 0x09d466b9L, 0x9fe461ceL, - 0x0ef9de5eL, 0x98c9d929L, 0x2298d0b0L, 0xb4a8d7c7L, 0x173db359L, - 0x810db42eL, 0x3b5cbdb7L, 0xad6cbac0L, 0x2083b8edL, 0xb6b3bf9aL, - 0x0ce2b603L, 0x9ad2b174L, 0x3947d5eaL, 0xaf77d29dL, 0x1526db04L, - 0x8316dc73L, 0x120b63e3L, 0x843b6494L, 0x3e6a6d0dL, 0xa85a6a7aL, - 0x0bcf0ee4L, 0x9dff0993L, 0x27ae000aL, 0xb19e077dL, 0x44930ff0L, - 0xd2a30887L, 0x68f2011eL, 0xfec20669L, 0x5d5762f7L, 0xcb676580L, - 0x71366c19L, 0xe7066b6eL, 0x761bd4feL, 0xe02bd389L, 0x5a7ada10L, - 0xcc4add67L, 0x6fdfb9f9L, 0xf9efbe8eL, 0x43beb717L, 0xd58eb060L, - 0xe8a3d6d6L, 0x7e93d1a1L, 0xc4c2d838L, 0x52f2df4fL, 0xf167bbd1L, - 0x6757bca6L, 0xdd06b53fL, 0x4b36b248L, 0xda2b0dd8L, 0x4c1b0aafL, - 0xf64a0336L, 0x607a0441L, 0xc3ef60dfL, 0x55df67a8L, 0xef8e6e31L, - 0x79be6946L, 0x8cb361cbL, 0x1a8366bcL, 0xa0d26f25L, 0x36e26852L, - 0x95770cccL, 0x03470bbbL, 0xb9160222L, 0x2f260555L, 0xbe3bbac5L, - 0x280bbdb2L, 0x925ab42bL, 0x046ab35cL, 0xa7ffd7c2L, 0x31cfd0b5L, - 0x8b9ed92cL, 0x1daede5bL, 0xb0c2649bL, 0x26f263ecL, 0x9ca36a75L, - 0x0a936d02L, 0xa906099cL, 0x3f360eebL, 0x85670772L, 0x13570005L, - 0x824abf95L, 0x147ab8e2L, 0xae2bb17bL, 0x381bb60cL, 0x9b8ed292L, - 0x0dbed5e5L, 0xb7efdc7cL, 0x21dfdb0bL, 0xd4d2d386L, 0x42e2d4f1L, - 0xf8b3dd68L, 0x6e83da1fL, 0xcd16be81L, 0x5b26b9f6L, 0xe177b06fL, - 0x7747b718L, 0xe65a0888L, 0x706a0fffL, 0xca3b0666L, 0x5c0b0111L, - 0xff9e658fL, 0x69ae62f8L, 0xd3ff6b61L, 0x45cf6c16L, 0x78e20aa0L, - 0xeed20dd7L, 0x5483044eL, 0xc2b30339L, 0x612667a7L, 0xf71660d0L, - 0x4d476949L, 0xdb776e3eL, 0x4a6ad1aeL, 0xdc5ad6d9L, 0x660bdf40L, - 0xf03bd837L, 0x53aebca9L, 0xc59ebbdeL, 0x7fcfb247L, 0xe9ffb530L, - 0x1cf2bdbdL, 0x8ac2bacaL, 0x3093b353L, 0xa6a3b424L, 0x0536d0baL, - 0x9306d7cdL, 0x2957de54L, 0xbf67d923L, 0x2e7a66b3L, 0xb84a61c4L, - 0x021b685dL, 0x942b6f2aL, 0x37be0bb4L, 0xa18e0cc3L, 0x1bdf055aL, - 0x8def022dL -#endif -}; - -void crc32_init(crc32_state *ctx) -{ - LTC_ARGCHKVD(ctx != NULL); - ctx->crc = _CRC32_NEGL; -} - -void crc32_update(crc32_state *ctx, const unsigned char *input, unsigned long length) -{ - ulong32 crc; - LTC_ARGCHKVD(ctx != NULL); - LTC_ARGCHKVD(input != NULL); - crc = ctx->crc; - - while (length--) - crc = crc32_m_tab[CRC32_INDEX(crc) ^ *input++] ^ CRC32_SHIFTED(crc); - - ctx->crc = crc; -} - -void crc32_finish(crc32_state *ctx, void *hash, unsigned long size) -{ - unsigned long i; - unsigned char* h; - ulong32 crc; - LTC_ARGCHKVD(ctx != NULL); - LTC_ARGCHKVD(hash != NULL); - - h = hash; - crc = ctx->crc; - crc ^= _CRC32_NEGL; - - if (size > 4) size = 4; - for (i = 0; i < size; i++) { - h[i] = ((unsigned char*)&(crc))[size-i-1]; - } -} - -int crc32_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - const void* in = "libtomcrypt"; - const unsigned char crc32[] = { 0xb3, 0x73, 0x76, 0xef }; - unsigned char out[4]; - crc32_state ctx; - crc32_init(&ctx); - crc32_update(&ctx, in, strlen(in)); - crc32_finish(&ctx, out, 4); - if (compare_testvector(crc32, 4, out, 4, "CRC32", 0)) { - return CRYPT_FAIL_TESTVECTOR; - } - return CRYPT_OK; -#endif -} -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt.c b/src/libtomcrypt/src/misc/crypt/crypt.c deleted file mode 100644 index d8d7ac4bf5..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt.c +++ /dev/null @@ -1,496 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt.c - Build strings, Tom St Denis -*/ -#define NAME_VALUE(s) #s"="NAME(s) -#define NAME(s) #s - -const char *crypt_build_settings = - "LibTomCrypt " SCRYPT " (www.libtom.net)\n" - "LibTomCrypt is public domain software.\n" -#if defined(INCLUDE_BUILD_DATE) - "Built on " __DATE__ " at " __TIME__ "\n" -#endif - "\n\nEndianness: " -#if defined(ENDIAN_NEUTRAL) - "neutral/" -#endif -#if defined(ENDIAN_LITTLE) - "little" -#elif defined(ENDIAN_BIG) - "big" -#endif - #if defined(ENDIAN_32BITWORD) - " (32-bit words)\n" - #elif defined(ENDIAN_64BITWORD) - " (64-bit words)\n" - #else - " (no wordsize defined)\n" - #endif - "Clean stack: " -#if defined(LTC_CLEAN_STACK) - "enabled\n" -#else - "disabled\n" -#endif - "\nCiphers built-in:\n" -#if defined(LTC_BLOWFISH) - " Blowfish\n" -#endif -#if defined(LTC_RC2) - " RC2\n" -#endif -#if defined(LTC_RC5) - " RC5\n" -#endif -#if defined(LTC_RC6) - " RC6\n" -#endif -#if defined(LTC_SAFERP) - " Safer+\n" -#endif -#if defined(LTC_SAFER) - " Safer\n" -#endif -#if defined(LTC_RIJNDAEL) - " Rijndael\n" -#endif -#if defined(LTC_XTEA) - " XTEA\n" -#endif -#if defined(LTC_TWOFISH) - " Twofish " - #if defined(LTC_TWOFISH_SMALL) && defined(LTC_TWOFISH_TABLES) && defined(LTC_TWOFISH_ALL_TABLES) - "(small, tables, all_tables)\n" - #elif defined(LTC_TWOFISH_SMALL) && defined(LTC_TWOFISH_TABLES) - "(small, tables)\n" - #elif defined(LTC_TWOFISH_SMALL) && defined(LTC_TWOFISH_ALL_TABLES) - "(small, all_tables)\n" - #elif defined(LTC_TWOFISH_TABLES) && defined(LTC_TWOFISH_ALL_TABLES) - "(tables, all_tables)\n" - #elif defined(LTC_TWOFISH_SMALL) - "(small)\n" - #elif defined(LTC_TWOFISH_TABLES) - "(tables)\n" - #elif defined(LTC_TWOFISH_ALL_TABLES) - "(all_tables)\n" - #else - "\n" - #endif -#endif -#if defined(LTC_DES) - " DES\n" -#endif -#if defined(LTC_CAST5) - " CAST5\n" -#endif -#if defined(LTC_NOEKEON) - " Noekeon\n" -#endif -#if defined(LTC_SKIPJACK) - " Skipjack\n" -#endif -#if defined(LTC_KHAZAD) - " Khazad\n" -#endif -#if defined(LTC_ANUBIS) - " Anubis " -#endif -#if defined(LTC_ANUBIS_TWEAK) - " (tweaked)" -#endif - "\n" -#if defined(LTC_KSEED) - " KSEED\n" -#endif -#if defined(LTC_KASUMI) - " KASUMI\n" -#endif -#if defined(LTC_MULTI2) - " MULTI2\n" -#endif -#if defined(LTC_CAMELLIA) - " Camellia\n" -#endif - "Stream ciphers built-in:\n" -#if defined(LTC_CHACHA) - " ChaCha\n" -#endif -#if defined(LTC_RC4_STREAM) - " RC4\n" -#endif -#if defined(LTC_SOBER128_STREAM) - " SOBER128\n" -#endif - - "\nHashes built-in:\n" -#if defined(LTC_SHA3) - " SHA3\n" -#endif -#if defined(LTC_SHA512) - " SHA-512\n" -#endif -#if defined(LTC_SHA384) - " SHA-384\n" -#endif -#if defined(LTC_SHA512_256) - " SHA-512/256\n" -#endif -#if defined(LTC_SHA256) - " SHA-256\n" -#endif -#if defined(LTC_SHA512_224) - " SHA-512/224\n" -#endif -#if defined(LTC_SHA224) - " SHA-224\n" -#endif -#if defined(LTC_TIGER) - " TIGER\n" -#endif -#if defined(LTC_SHA1) - " SHA1\n" -#endif -#if defined(LTC_MD5) - " MD5\n" -#endif -#if defined(LTC_MD4) - " MD4\n" -#endif -#if defined(LTC_MD2) - " MD2\n" -#endif -#if defined(LTC_RIPEMD128) - " RIPEMD128\n" -#endif -#if defined(LTC_RIPEMD160) - " RIPEMD160\n" -#endif -#if defined(LTC_RIPEMD256) - " RIPEMD256\n" -#endif -#if defined(LTC_RIPEMD320) - " RIPEMD320\n" -#endif -#if defined(LTC_WHIRLPOOL) - " WHIRLPOOL\n" -#endif -#if defined(LTC_BLAKE2S) - " BLAKE2S\n" -#endif -#if defined(LTC_BLAKE2B) - " BLAKE2B\n" -#endif -#if defined(LTC_CHC_HASH) - " CHC_HASH\n" -#endif - - "\nBlock Chaining Modes:\n" -#if defined(LTC_CFB_MODE) - " CFB\n" -#endif -#if defined(LTC_OFB_MODE) - " OFB\n" -#endif -#if defined(LTC_ECB_MODE) - " ECB\n" -#endif -#if defined(LTC_CBC_MODE) - " CBC\n" -#endif -#if defined(LTC_CTR_MODE) - " CTR\n" -#endif -#if defined(LTC_LRW_MODE) - " LRW" -#if defined(LTC_LRW_TABLES) - " (tables) " -#endif - "\n" -#endif -#if defined(LTC_F8_MODE) - " F8\n" -#endif -#if defined(LTC_XTS_MODE) - " XTS\n" -#endif - - "\nMACs:\n" -#if defined(LTC_HMAC) - " HMAC\n" -#endif -#if defined(LTC_OMAC) - " OMAC\n" -#endif -#if defined(LTC_PMAC) - " PMAC\n" -#endif -#if defined(LTC_PELICAN) - " PELICAN\n" -#endif -#if defined(LTC_XCBC) - " XCBC\n" -#endif -#if defined(LTC_F9_MODE) - " F9\n" -#endif -#if defined(LTC_POLY1305) - " POLY1305\n" -#endif -#if defined(LTC_BLAKE2SMAC) - " BLAKE2S MAC\n" -#endif -#if defined(LTC_BLAKE2BMAC) - " BLAKE2B MAC\n" -#endif - - "\nENC + AUTH modes:\n" -#if defined(LTC_EAX_MODE) - " EAX\n" -#endif -#if defined(LTC_OCB_MODE) - " OCB\n" -#endif -#if defined(LTC_OCB3_MODE) - " OCB3\n" -#endif -#if defined(LTC_CCM_MODE) - " CCM\n" -#endif -#if defined(LTC_GCM_MODE) - " GCM" -#if defined(LTC_GCM_TABLES) - " (tables) " -#endif -#if defined(LTC_GCM_TABLES_SSE2) - " (SSE2) " -#endif - "\n" -#endif -#if defined(LTC_CHACHA20POLY1305_MODE) - " CHACHA20POLY1305\n" -#endif - - "\nPRNG:\n" -#if defined(LTC_YARROW) - " Yarrow ("NAME_VALUE(LTC_YARROW_AES)")\n" -#endif -#if defined(LTC_SPRNG) - " SPRNG\n" -#endif -#if defined(LTC_RC4) - " RC4\n" -#endif -#if defined(LTC_CHACHA20_PRNG) - " ChaCha20\n" -#endif -#if defined(LTC_FORTUNA) - " Fortuna (" NAME_VALUE(LTC_FORTUNA_POOLS) ", " NAME_VALUE(LTC_FORTUNA_WD) ")\n" -#endif -#if defined(LTC_SOBER128) - " SOBER128\n" -#endif - - "\nPK Crypto:\n" -#if defined(LTC_MRSA) - " RSA" -#if defined(LTC_RSA_BLINDING) && defined(LTC_RSA_CRT_HARDENING) - " (with blinding and CRT hardening)" -#elif defined(LTC_RSA_BLINDING) - " (with blinding)" -#elif defined(LTC_RSA_CRT_HARDENING) - " (with CRT hardening)" -#endif - "\n" -#endif -#if defined(LTC_MDH) - " DH\n" -#endif -#if defined(LTC_MECC) - " ECC" -#if defined(LTC_ECC_TIMING_RESISTANT) - " (with blinding)" -#endif - "\n" -#endif -#if defined(LTC_MDSA) - " DSA\n" -#endif -#if defined(LTC_MKAT) - " Katja\n" -#endif -#if defined(LTC_PK_MAX_RETRIES) - " "NAME_VALUE(LTC_PK_MAX_RETRIES)"\n" -#endif - - "\nMPI (Math):\n" -#if defined(LTC_MPI) - " LTC_MPI\n" -#endif -#if defined(LTM_DESC) - " LTM_DESC\n" -#endif -#if defined(TFM_DESC) - " TFM_DESC\n" -#endif -#if defined(GMP_DESC) - " GMP_DESC\n" -#endif -#if defined(LTC_MILLER_RABIN_REPS) - " "NAME_VALUE(LTC_MILLER_RABIN_REPS)"\n" -#endif - - "\nCompiler:\n" -#if defined(_WIN64) - " WIN64 platform detected.\n" -#elif defined(_WIN32) - " WIN32 platform detected.\n" -#endif -#if defined(__CYGWIN__) - " CYGWIN Detected.\n" -#endif -#if defined(__DJGPP__) - " DJGPP Detected.\n" -#endif -#if defined(_MSC_VER) - " MSVC compiler detected.\n" -#endif -#if defined(__clang_version__) - " Clang compiler " __clang_version__ ".\n" -#elif defined(INTEL_CC) - " Intel C Compiler " __VERSION__ ".\n" -#elif defined(__GNUC__) /* clang and icc also define __GNUC__ */ - " GCC compiler " __VERSION__ ".\n" -#endif - -#if defined(__x86_64__) - " x86-64 detected.\n" -#endif -#if defined(LTC_PPC32) - " PPC32 detected.\n" -#endif - - "\nVarious others: " -#if defined(ARGTYPE) - " " NAME_VALUE(ARGTYPE) " " -#endif -#if defined(LTC_ADLER32) - " ADLER32 " -#endif -#if defined(LTC_BASE64) - " BASE64 " -#endif -#if defined(LTC_BASE64_URL) - " BASE64-URL-SAFE " -#endif -#if defined(LTC_CRC32) - " CRC32 " -#endif -#if defined(LTC_DER) - " DER " - " " NAME_VALUE(LTC_DER_MAX_RECURSION) " " -#endif -#if defined(LTC_PKCS_1) - " PKCS#1 " -#endif -#if defined(LTC_PKCS_5) - " PKCS#5 " -#endif -#if defined(LTC_HKDF) - " HKDF " -#endif -#if defined(LTC_DEVRANDOM) - " LTC_DEVRANDOM " -#endif -#if defined(LTC_TRY_URANDOM_FIRST) - " LTC_TRY_URANDOM_FIRST " -#endif -#if defined(LTC_RNG_GET_BYTES) - " LTC_RNG_GET_BYTES " -#endif -#if defined(LTC_RNG_MAKE_PRNG) - " LTC_RNG_MAKE_PRNG " -#endif -#if defined(LTC_PRNG_ENABLE_LTC_RNG) - " LTC_PRNG_ENABLE_LTC_RNG " -#endif -#if defined(LTC_HASH_HELPERS) - " LTC_HASH_HELPERS " -#endif -#if defined(LTC_VALGRIND) - " LTC_VALGRIND " -#endif -#if defined(LTC_TEST) - " LTC_TEST " -#endif -#if defined(LTC_TEST_DBG) - " " NAME_VALUE(LTC_TEST_DBG) " " -#endif -#if defined(LTC_TEST_EXT) - " LTC_TEST_EXT " -#endif -#if defined(LTC_SMALL_CODE) - " LTC_SMALL_CODE " -#endif -#if defined(LTC_NO_FILE) - " LTC_NO_FILE " -#endif -#if defined(LTC_FILE_READ_BUFSIZE) - " " NAME_VALUE(LTC_FILE_READ_BUFSIZE) " " -#endif -#if defined(LTC_FAST) - " LTC_FAST " -#endif -#if defined(LTC_NO_FAST) - " LTC_NO_FAST " -#endif -#if defined(LTC_NO_BSWAP) - " LTC_NO_BSWAP " -#endif -#if defined(LTC_NO_ASM) - " LTC_NO_ASM " -#endif -#if defined(LTC_ROx_ASM) - " LTC_ROx_ASM " -#if defined(LTC_NO_ROLC) - " LTC_NO_ROLC " -#endif -#endif -#if defined(LTC_NO_TEST) - " LTC_NO_TEST " -#endif -#if defined(LTC_NO_TABLES) - " LTC_NO_TABLES " -#endif -#if defined(LTC_PTHREAD) - " LTC_PTHREAD " -#endif -#if defined(LTC_EASY) - " LTC_EASY " -#endif -#if defined(LTC_MECC_ACCEL) - " LTC_MECC_ACCEL " -#endif -#if defined(LTC_MECC_FP) - " LTC_MECC_FP " -#endif -#if defined(LTC_ECC_SHAMIR) - " LTC_ECC_SHAMIR " -#endif - "\n" - ; - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_argchk.c b/src/libtomcrypt/src/misc/crypt/crypt_argchk.c deleted file mode 100644 index a93962420e..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_argchk.c +++ /dev/null @@ -1,27 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_argchk.c - Perform argument checking, Tom St Denis -*/ - -#if (ARGTYPE == 0) -void crypt_argchk(const char *v, const char *s, int d) -{ - fprintf(stderr, "LTC_ARGCHK '%s' failure on line %d of file %s\n", - v, d, s); - abort(); -} -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_cipher_descriptor.c b/src/libtomcrypt/src/misc/crypt/crypt_cipher_descriptor.c deleted file mode 100644 index a9de9d6785..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_cipher_descriptor.c +++ /dev/null @@ -1,25 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_cipher_descriptor.c - Stores the cipher descriptor table, Tom St Denis -*/ - -struct ltc_cipher_descriptor cipher_descriptor[TAB_SIZE] = { -{ NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL } - }; - -LTC_MUTEX_GLOBAL(ltc_cipher_mutex) - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_cipher_is_valid.c b/src/libtomcrypt/src/misc/crypt/crypt_cipher_is_valid.c deleted file mode 100644 index 2ba32bf5e8..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_cipher_is_valid.c +++ /dev/null @@ -1,34 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_cipher_is_valid.c - Determine if cipher is valid, Tom St Denis -*/ - -/* - Test if a cipher index is valid - @param idx The index of the cipher to search for - @return CRYPT_OK if valid -*/ -int cipher_is_valid(int idx) -{ - LTC_MUTEX_LOCK(<c_cipher_mutex); - if (idx < 0 || idx >= TAB_SIZE || cipher_descriptor[idx].name == NULL) { - LTC_MUTEX_UNLOCK(<c_cipher_mutex); - return CRYPT_INVALID_CIPHER; - } - LTC_MUTEX_UNLOCK(<c_cipher_mutex); - return CRYPT_OK; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_constants.c b/src/libtomcrypt/src/misc/crypt/crypt_constants.c deleted file mode 100644 index b1519c3051..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_constants.c +++ /dev/null @@ -1,292 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_constants.c - - Make various constants available to dynamic languages - like Python - Larry Bugbee, February 2013 - - LB - Dec 2013 - revised to include compiler define options - LB - Mar 2014 - added endianness and word size -*/ - -typedef struct { - const char *name; - const int value; -} crypt_constant; - -#define _C_STRINGIFY(s) { #s, s } - -static const crypt_constant _crypt_constants[] = { - - _C_STRINGIFY(CRYPT_OK), - _C_STRINGIFY(CRYPT_ERROR), - _C_STRINGIFY(CRYPT_NOP), - _C_STRINGIFY(CRYPT_INVALID_KEYSIZE), - _C_STRINGIFY(CRYPT_INVALID_ROUNDS), - _C_STRINGIFY(CRYPT_FAIL_TESTVECTOR), - _C_STRINGIFY(CRYPT_BUFFER_OVERFLOW), - _C_STRINGIFY(CRYPT_INVALID_PACKET), - _C_STRINGIFY(CRYPT_INVALID_PRNGSIZE), - _C_STRINGIFY(CRYPT_ERROR_READPRNG), - _C_STRINGIFY(CRYPT_INVALID_CIPHER), - _C_STRINGIFY(CRYPT_INVALID_HASH), - _C_STRINGIFY(CRYPT_INVALID_PRNG), - _C_STRINGIFY(CRYPT_MEM), - _C_STRINGIFY(CRYPT_PK_TYPE_MISMATCH), - _C_STRINGIFY(CRYPT_PK_NOT_PRIVATE), - _C_STRINGIFY(CRYPT_INVALID_ARG), - _C_STRINGIFY(CRYPT_FILE_NOTFOUND), - _C_STRINGIFY(CRYPT_PK_INVALID_TYPE), - _C_STRINGIFY(CRYPT_OVERFLOW), - _C_STRINGIFY(CRYPT_UNUSED1), - _C_STRINGIFY(CRYPT_INPUT_TOO_LONG), - _C_STRINGIFY(CRYPT_PK_INVALID_SIZE), - _C_STRINGIFY(CRYPT_INVALID_PRIME_SIZE), - _C_STRINGIFY(CRYPT_PK_INVALID_PADDING), - _C_STRINGIFY(CRYPT_HASH_OVERFLOW), - - _C_STRINGIFY(PK_PUBLIC), - _C_STRINGIFY(PK_PRIVATE), - - _C_STRINGIFY(LTC_ENCRYPT), - _C_STRINGIFY(LTC_DECRYPT), - -#ifdef LTC_PKCS_1 - {"LTC_PKCS_1", 1}, - /* Block types */ - _C_STRINGIFY(LTC_PKCS_1_EMSA), - _C_STRINGIFY(LTC_PKCS_1_EME), - - /* Padding types */ - _C_STRINGIFY(LTC_PKCS_1_V1_5), - _C_STRINGIFY(LTC_PKCS_1_OAEP), - _C_STRINGIFY(LTC_PKCS_1_PSS), - _C_STRINGIFY(LTC_PKCS_1_V1_5_NA1), -#else - {"LTC_PKCS_1", 0}, -#endif - -#ifdef LTC_MRSA - {"LTC_MRSA", 1}, -#else - {"LTC_MRSA", 0}, -#endif - -#ifdef LTC_MKAT - {"LTC_MKAT", 1}, - _C_STRINGIFY(MIN_KAT_SIZE), - _C_STRINGIFY(MAX_KAT_SIZE), -#else - {"LTC_MKAT", 0}, -#endif - -#ifdef LTC_MECC - {"LTC_MECC", 1}, - _C_STRINGIFY(ECC_BUF_SIZE), - _C_STRINGIFY(ECC_MAXSIZE), -#else - {"LTC_MECC", 0}, -#endif - -#ifdef LTC_MDSA - {"LTC_MDSA", 1}, - _C_STRINGIFY(LTC_MDSA_DELTA), - _C_STRINGIFY(LTC_MDSA_MAX_GROUP), -#else - {"LTC_MDSA", 0}, -#endif - -#ifdef LTC_MILLER_RABIN_REPS - _C_STRINGIFY(LTC_MILLER_RABIN_REPS), -#endif - -#ifdef LTC_DER -/* DER handling */ - {"LTC_DER", 1}, - _C_STRINGIFY(LTC_ASN1_EOL), - _C_STRINGIFY(LTC_ASN1_BOOLEAN), - _C_STRINGIFY(LTC_ASN1_INTEGER), - _C_STRINGIFY(LTC_ASN1_SHORT_INTEGER), - _C_STRINGIFY(LTC_ASN1_BIT_STRING), - _C_STRINGIFY(LTC_ASN1_OCTET_STRING), - _C_STRINGIFY(LTC_ASN1_NULL), - _C_STRINGIFY(LTC_ASN1_OBJECT_IDENTIFIER), - _C_STRINGIFY(LTC_ASN1_IA5_STRING), - _C_STRINGIFY(LTC_ASN1_PRINTABLE_STRING), - _C_STRINGIFY(LTC_ASN1_UTF8_STRING), - _C_STRINGIFY(LTC_ASN1_UTCTIME), - _C_STRINGIFY(LTC_ASN1_CHOICE), - _C_STRINGIFY(LTC_ASN1_SEQUENCE), - _C_STRINGIFY(LTC_ASN1_SET), - _C_STRINGIFY(LTC_ASN1_SETOF), - _C_STRINGIFY(LTC_ASN1_RAW_BIT_STRING), - _C_STRINGIFY(LTC_ASN1_TELETEX_STRING), - _C_STRINGIFY(LTC_ASN1_CONSTRUCTED), - _C_STRINGIFY(LTC_ASN1_CONTEXT_SPECIFIC), - _C_STRINGIFY(LTC_ASN1_GENERALIZEDTIME), - _C_STRINGIFY(LTC_DER_MAX_RECURSION), -#else - {"LTC_DER", 0}, -#endif - -#ifdef LTC_CTR_MODE - {"LTC_CTR_MODE", 1}, - _C_STRINGIFY(CTR_COUNTER_LITTLE_ENDIAN), - _C_STRINGIFY(CTR_COUNTER_BIG_ENDIAN), - _C_STRINGIFY(LTC_CTR_RFC3686), -#else - {"LTC_CTR_MODE", 0}, -#endif -#ifdef LTC_GCM_MODE - _C_STRINGIFY(LTC_GCM_MODE_IV), - _C_STRINGIFY(LTC_GCM_MODE_AAD), - _C_STRINGIFY(LTC_GCM_MODE_TEXT), -#endif - - _C_STRINGIFY(LTC_MP_LT), - _C_STRINGIFY(LTC_MP_EQ), - _C_STRINGIFY(LTC_MP_GT), - - _C_STRINGIFY(LTC_MP_NO), - _C_STRINGIFY(LTC_MP_YES), - - _C_STRINGIFY(MAXBLOCKSIZE), - _C_STRINGIFY(TAB_SIZE), - _C_STRINGIFY(ARGTYPE), - -#ifdef LTM_DESC - {"LTM_DESC", 1}, -#else - {"LTM_DESC", 0}, -#endif -#ifdef TFM_DESC - {"TFM_DESC", 1}, -#else - {"TFM_DESC", 0}, -#endif -#ifdef GMP_DESC - {"GMP_DESC", 1}, -#else - {"GMP_DESC", 0}, -#endif - -#ifdef LTC_FAST - {"LTC_FAST", 1}, -#else - {"LTC_FAST", 0}, -#endif - -#ifdef LTC_NO_FILE - {"LTC_NO_FILE", 1}, -#else - {"LTC_NO_FILE", 0}, -#endif - -#ifdef ENDIAN_LITTLE - {"ENDIAN_LITTLE", 1}, -#else - {"ENDIAN_LITTLE", 0}, -#endif - -#ifdef ENDIAN_BIG - {"ENDIAN_BIG", 1}, -#else - {"ENDIAN_BIG", 0}, -#endif - -#ifdef ENDIAN_32BITWORD - {"ENDIAN_32BITWORD", 1}, -#else - {"ENDIAN_32BITWORD", 0}, -#endif - -#ifdef ENDIAN_64BITWORD - {"ENDIAN_64BITWORD", 1}, -#else - {"ENDIAN_64BITWORD", 0}, -#endif - -#ifdef ENDIAN_NEUTRAL - {"ENDIAN_NEUTRAL", 1}, -#else - {"ENDIAN_NEUTRAL", 0}, -#endif -}; - - -/* crypt_get_constant() - * valueout will be the value of the named constant - * return -1 if named item not found - */ -int crypt_get_constant(const char* namein, int *valueout) { - int i; - int _crypt_constants_len = sizeof(_crypt_constants) / sizeof(_crypt_constants[0]); - for (i=0; i<_crypt_constants_len; i++) { - if (XSTRCMP(_crypt_constants[i].name, namein) == 0) { - *valueout = _crypt_constants[i].value; - return 0; - } - } - return 1; -} - -/* crypt_list_all_constants() - * if names_list is NULL, names_list_size will be the minimum - * number of bytes needed to receive the complete names_list - * if names_list is NOT NULL, names_list must be the addr of - * sufficient memory allocated into which the names_list - * is to be written. Also, the value in names_list_size - * sets the upper bound of the number of characters to be - * written. - * a -1 return value signifies insufficient space made available - */ -int crypt_list_all_constants(char *names_list, unsigned int *names_list_size) { - int i; - unsigned int total_len = 0; - char *ptr; - int number_len; - int count = sizeof(_crypt_constants) / sizeof(_crypt_constants[0]); - - /* calculate amount of memory required for the list */ - for (i=0; i *names_list_size) { - return -1; - } - /* build the names list */ - ptr = names_list; - for (i=0; i total_len) return -1; - total_len -= number_len; - ptr += number_len; - } - /* to remove the trailing new-line */ - ptr -= 1; - *ptr = 0; - } - return 0; -} - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_find_cipher.c b/src/libtomcrypt/src/misc/crypt/crypt_find_cipher.c deleted file mode 100644 index 7333675e55..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_find_cipher.c +++ /dev/null @@ -1,39 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_find_cipher.c - Find a cipher in the descriptor tables, Tom St Denis -*/ - -/** - Find a registered cipher by name - @param name The name of the cipher to look for - @return >= 0 if found, -1 if not present -*/ -int find_cipher(const char *name) -{ - int x; - LTC_ARGCHK(name != NULL); - LTC_MUTEX_LOCK(<c_cipher_mutex); - for (x = 0; x < TAB_SIZE; x++) { - if (cipher_descriptor[x].name != NULL && !XSTRCMP(cipher_descriptor[x].name, name)) { - LTC_MUTEX_UNLOCK(<c_cipher_mutex); - return x; - } - } - LTC_MUTEX_UNLOCK(<c_cipher_mutex); - return -1; -} - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_find_cipher_any.c b/src/libtomcrypt/src/misc/crypt/crypt_find_cipher_any.c deleted file mode 100644 index 6325725771..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_find_cipher_any.c +++ /dev/null @@ -1,48 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_find_cipher_any.c - Find a cipher in the descriptor tables, Tom St Denis -*/ - -/** - Find a cipher flexibly. First by name then if not present by block and key size - @param name The name of the cipher desired - @param blocklen The minimum length of the block cipher desired (octets) - @param keylen The minimum length of the key size desired (octets) - @return >= 0 if found, -1 if not present -*/ -int find_cipher_any(const char *name, int blocklen, int keylen) -{ - int x; - - if(name != NULL) { - x = find_cipher(name); - if (x != -1) return x; - } - - LTC_MUTEX_LOCK(<c_cipher_mutex); - for (x = 0; x < TAB_SIZE; x++) { - if (cipher_descriptor[x].name == NULL) { - continue; - } - if (blocklen <= (int)cipher_descriptor[x].block_length && keylen <= (int)cipher_descriptor[x].max_key_length) { - LTC_MUTEX_UNLOCK(<c_cipher_mutex); - return x; - } - } - LTC_MUTEX_UNLOCK(<c_cipher_mutex); - return -1; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_find_cipher_id.c b/src/libtomcrypt/src/misc/crypt/crypt_find_cipher_id.c deleted file mode 100644 index d32246eb94..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_find_cipher_id.c +++ /dev/null @@ -1,38 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_find_cipher_id.c - Find cipher by ID, Tom St Denis -*/ - -/** - Find a cipher by ID number - @param ID The ID (not same as index) of the cipher to find - @return >= 0 if found, -1 if not present -*/ -int find_cipher_id(unsigned char ID) -{ - int x; - LTC_MUTEX_LOCK(<c_cipher_mutex); - for (x = 0; x < TAB_SIZE; x++) { - if (cipher_descriptor[x].ID == ID) { - x = (cipher_descriptor[x].name == NULL) ? -1 : x; - LTC_MUTEX_UNLOCK(<c_cipher_mutex); - return x; - } - } - LTC_MUTEX_UNLOCK(<c_cipher_mutex); - return -1; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_find_hash.c b/src/libtomcrypt/src/misc/crypt/crypt_find_hash.c deleted file mode 100644 index 8f86414e5d..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_find_hash.c +++ /dev/null @@ -1,38 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_find_hash.c - Find a hash, Tom St Denis -*/ - -/** - Find a registered hash by name - @param name The name of the hash to look for - @return >= 0 if found, -1 if not present -*/ -int find_hash(const char *name) -{ - int x; - LTC_ARGCHK(name != NULL); - LTC_MUTEX_LOCK(<c_hash_mutex); - for (x = 0; x < TAB_SIZE; x++) { - if (hash_descriptor[x].name != NULL && XSTRCMP(hash_descriptor[x].name, name) == 0) { - LTC_MUTEX_UNLOCK(<c_hash_mutex); - return x; - } - } - LTC_MUTEX_UNLOCK(<c_hash_mutex); - return -1; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_find_hash_any.c b/src/libtomcrypt/src/misc/crypt/crypt_find_hash_any.c deleted file mode 100644 index 3723897551..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_find_hash_any.c +++ /dev/null @@ -1,47 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_find_hash_any.c - Find a hash, Tom St Denis -*/ - -/** - Find a hash flexibly. First by name then if not present by digest size - @param name The name of the hash desired - @param digestlen The minimum length of the digest size (octets) - @return >= 0 if found, -1 if not present -*/int find_hash_any(const char *name, int digestlen) -{ - int x, y, z; - LTC_ARGCHK(name != NULL); - - x = find_hash(name); - if (x != -1) return x; - - LTC_MUTEX_LOCK(<c_hash_mutex); - y = MAXBLOCKSIZE+1; - z = -1; - for (x = 0; x < TAB_SIZE; x++) { - if (hash_descriptor[x].name == NULL) { - continue; - } - if ((int)hash_descriptor[x].hashsize >= digestlen && (int)hash_descriptor[x].hashsize < y) { - z = x; - y = hash_descriptor[x].hashsize; - } - } - LTC_MUTEX_UNLOCK(<c_hash_mutex); - return z; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_find_hash_id.c b/src/libtomcrypt/src/misc/crypt/crypt_find_hash_id.c deleted file mode 100644 index c1fa9ccbd7..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_find_hash_id.c +++ /dev/null @@ -1,38 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_find_hash_id.c - Find hash by ID, Tom St Denis -*/ - -/** - Find a hash by ID number - @param ID The ID (not same as index) of the hash to find - @return >= 0 if found, -1 if not present -*/ -int find_hash_id(unsigned char ID) -{ - int x; - LTC_MUTEX_LOCK(<c_hash_mutex); - for (x = 0; x < TAB_SIZE; x++) { - if (hash_descriptor[x].ID == ID) { - x = (hash_descriptor[x].name == NULL) ? -1 : x; - LTC_MUTEX_UNLOCK(<c_hash_mutex); - return x; - } - } - LTC_MUTEX_UNLOCK(<c_hash_mutex); - return -1; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_find_hash_oid.c b/src/libtomcrypt/src/misc/crypt/crypt_find_hash_oid.c deleted file mode 100644 index 59036bdf9e..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_find_hash_oid.c +++ /dev/null @@ -1,33 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_find_hash_oid.c - Find a hash, Tom St Denis -*/ - -int find_hash_oid(const unsigned long *ID, unsigned long IDlen) -{ - int x; - LTC_ARGCHK(ID != NULL); - LTC_MUTEX_LOCK(<c_hash_mutex); - for (x = 0; x < TAB_SIZE; x++) { - if (hash_descriptor[x].name != NULL && hash_descriptor[x].OIDlen == IDlen && !XMEMCMP(hash_descriptor[x].OID, ID, sizeof(unsigned long) * IDlen)) { - LTC_MUTEX_UNLOCK(<c_hash_mutex); - return x; - } - } - LTC_MUTEX_UNLOCK(<c_hash_mutex); - return -1; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_find_prng.c b/src/libtomcrypt/src/misc/crypt/crypt_find_prng.c deleted file mode 100644 index 5f049be7c6..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_find_prng.c +++ /dev/null @@ -1,39 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_find_prng.c - Find a PRNG, Tom St Denis -*/ - -/** - Find a registered PRNG by name - @param name The name of the PRNG to look for - @return >= 0 if found, -1 if not present -*/ -int find_prng(const char *name) -{ - int x; - LTC_ARGCHK(name != NULL); - LTC_MUTEX_LOCK(<c_prng_mutex); - for (x = 0; x < TAB_SIZE; x++) { - if ((prng_descriptor[x].name != NULL) && XSTRCMP(prng_descriptor[x].name, name) == 0) { - LTC_MUTEX_UNLOCK(<c_prng_mutex); - return x; - } - } - LTC_MUTEX_UNLOCK(<c_prng_mutex); - return -1; -} - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_fsa.c b/src/libtomcrypt/src/misc/crypt/crypt_fsa.c deleted file mode 100644 index bce0ea8929..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_fsa.c +++ /dev/null @@ -1,56 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" -#include - -/** - @file crypt_fsa.c - LibTomCrypt FULL SPEED AHEAD!, Tom St Denis -*/ - -/* format is ltc_mp, cipher_desc, [cipher_desc], NULL, hash_desc, [hash_desc], NULL, prng_desc, [prng_desc], NULL */ -int crypt_fsa(void *mp, ...) -{ - va_list args; - void *p; - - va_start(args, mp); - if (mp != NULL) { - XMEMCPY(<c_mp, mp, sizeof(ltc_mp)); - } - - while ((p = va_arg(args, void*)) != NULL) { - if (register_cipher(p) == -1) { - va_end(args); - return CRYPT_INVALID_CIPHER; - } - } - - while ((p = va_arg(args, void*)) != NULL) { - if (register_hash(p) == -1) { - va_end(args); - return CRYPT_INVALID_HASH; - } - } - - while ((p = va_arg(args, void*)) != NULL) { - if (register_prng(p) == -1) { - va_end(args); - return CRYPT_INVALID_PRNG; - } - } - - va_end(args); - return CRYPT_OK; -} - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_hash_descriptor.c b/src/libtomcrypt/src/misc/crypt/crypt_hash_descriptor.c deleted file mode 100644 index dc64cff437..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_hash_descriptor.c +++ /dev/null @@ -1,25 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_hash_descriptor.c - Stores the hash descriptor table, Tom St Denis -*/ - -struct ltc_hash_descriptor hash_descriptor[TAB_SIZE] = { -{ NULL, 0, 0, 0, { 0 }, 0, NULL, NULL, NULL, NULL, NULL } -}; - -LTC_MUTEX_GLOBAL(ltc_hash_mutex) - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_hash_is_valid.c b/src/libtomcrypt/src/misc/crypt/crypt_hash_is_valid.c deleted file mode 100644 index 02079064dc..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_hash_is_valid.c +++ /dev/null @@ -1,34 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_hash_is_valid.c - Determine if hash is valid, Tom St Denis -*/ - -/* - Test if a hash index is valid - @param idx The index of the hash to search for - @return CRYPT_OK if valid -*/ -int hash_is_valid(int idx) -{ - LTC_MUTEX_LOCK(<c_hash_mutex); - if (idx < 0 || idx >= TAB_SIZE || hash_descriptor[idx].name == NULL) { - LTC_MUTEX_UNLOCK(<c_hash_mutex); - return CRYPT_INVALID_HASH; - } - LTC_MUTEX_UNLOCK(<c_hash_mutex); - return CRYPT_OK; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_inits.c b/src/libtomcrypt/src/misc/crypt/crypt_inits.c deleted file mode 100644 index 2bb8afe364..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_inits.c +++ /dev/null @@ -1,43 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_inits.c - - Provide math library functions for dynamic languages - like Python - Larry Bugbee, February 2013 -*/ - - -#ifdef LTM_DESC -void init_LTM(void) -{ - ltc_mp = ltm_desc; -} -#endif - -#ifdef TFM_DESC -void init_TFM(void) -{ - ltc_mp = tfm_desc; -} -#endif - -#ifdef GMP_DESC -void init_GMP(void) -{ - ltc_mp = gmp_desc; -} -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_ltc_mp_descriptor.c b/src/libtomcrypt/src/misc/crypt/crypt_ltc_mp_descriptor.c deleted file mode 100644 index 7c70908da4..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_ltc_mp_descriptor.c +++ /dev/null @@ -1,16 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/* Initialize ltc_mp to nulls, to force allocation on all platforms, including macOS. */ -ltc_math_descriptor ltc_mp = { 0 }; - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_prng_descriptor.c b/src/libtomcrypt/src/misc/crypt/crypt_prng_descriptor.c deleted file mode 100644 index 37b7d88e2c..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_prng_descriptor.c +++ /dev/null @@ -1,24 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_prng_descriptor.c - Stores the PRNG descriptors, Tom St Denis -*/ -struct ltc_prng_descriptor prng_descriptor[TAB_SIZE] = { -{ NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL } -}; - -LTC_MUTEX_GLOBAL(ltc_prng_mutex) - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_prng_is_valid.c b/src/libtomcrypt/src/misc/crypt/crypt_prng_is_valid.c deleted file mode 100644 index c9d1f81b67..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_prng_is_valid.c +++ /dev/null @@ -1,34 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_prng_is_valid.c - Determine if PRNG is valid, Tom St Denis -*/ - -/* - Test if a PRNG index is valid - @param idx The index of the PRNG to search for - @return CRYPT_OK if valid -*/ -int prng_is_valid(int idx) -{ - LTC_MUTEX_LOCK(<c_prng_mutex); - if (idx < 0 || idx >= TAB_SIZE || prng_descriptor[idx].name == NULL) { - LTC_MUTEX_UNLOCK(<c_prng_mutex); - return CRYPT_INVALID_PRNG; - } - LTC_MUTEX_UNLOCK(<c_prng_mutex); - return CRYPT_OK; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_prng_rng_descriptor.c b/src/libtomcrypt/src/misc/crypt/crypt_prng_rng_descriptor.c deleted file mode 100644 index 45bf97c701..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_prng_rng_descriptor.c +++ /dev/null @@ -1,17 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#ifdef LTC_PRNG_ENABLE_LTC_RNG -unsigned long (*ltc_rng)(unsigned char *out, unsigned long outlen, void (*callback)(void)); -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_register_all_ciphers.c b/src/libtomcrypt/src/misc/crypt/crypt_register_all_ciphers.c deleted file mode 100644 index f29edc1553..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_register_all_ciphers.c +++ /dev/null @@ -1,100 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -/** - @file crypt_register_all_ciphers.c - - Steffen Jaeckel -*/ - -#define REGISTER_CIPHER(h) do {\ - LTC_ARGCHK(register_cipher(h) != -1); \ -} while(0) - -int register_all_ciphers(void) -{ -#ifdef LTC_RIJNDAEL -#ifdef ENCRYPT_ONLY - /* alternative would be - * register_cipher(&rijndael_enc_desc); - */ - REGISTER_CIPHER(&aes_enc_desc); -#else - /* alternative would be - * register_cipher(&rijndael_desc); - */ - REGISTER_CIPHER(&aes_desc); -#endif -#endif -#ifdef LTC_BLOWFISH - REGISTER_CIPHER(&blowfish_desc); -#endif -#ifdef LTC_XTEA - REGISTER_CIPHER(&xtea_desc); -#endif -#ifdef LTC_RC5 - REGISTER_CIPHER(&rc5_desc); -#endif -#ifdef LTC_RC6 - REGISTER_CIPHER(&rc6_desc); -#endif -#ifdef LTC_SAFERP - REGISTER_CIPHER(&saferp_desc); -#endif -#ifdef LTC_TWOFISH - REGISTER_CIPHER(&twofish_desc); -#endif -#ifdef LTC_SAFER - REGISTER_CIPHER(&safer_k64_desc); - REGISTER_CIPHER(&safer_sk64_desc); - REGISTER_CIPHER(&safer_k128_desc); - REGISTER_CIPHER(&safer_sk128_desc); -#endif -#ifdef LTC_RC2 - REGISTER_CIPHER(&rc2_desc); -#endif -#ifdef LTC_DES - REGISTER_CIPHER(&des_desc); - REGISTER_CIPHER(&des3_desc); -#endif -#ifdef LTC_CAST5 - REGISTER_CIPHER(&cast5_desc); -#endif -#ifdef LTC_NOEKEON - REGISTER_CIPHER(&noekeon_desc); -#endif -#ifdef LTC_SKIPJACK - REGISTER_CIPHER(&skipjack_desc); -#endif -#ifdef LTC_ANUBIS - REGISTER_CIPHER(&anubis_desc); -#endif -#ifdef LTC_KHAZAD - REGISTER_CIPHER(&khazad_desc); -#endif -#ifdef LTC_KSEED - REGISTER_CIPHER(&kseed_desc); -#endif -#ifdef LTC_KASUMI - REGISTER_CIPHER(&kasumi_desc); -#endif -#ifdef LTC_MULTI2 - REGISTER_CIPHER(&multi2_desc); -#endif -#ifdef LTC_CAMELLIA - REGISTER_CIPHER(&camellia_desc); -#endif - return CRYPT_OK; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_register_all_hashes.c b/src/libtomcrypt/src/misc/crypt/crypt_register_all_hashes.c deleted file mode 100644 index 9475fa8ea1..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_register_all_hashes.c +++ /dev/null @@ -1,99 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -/** - @file crypt_register_all_hashes.c - - Steffen Jaeckel -*/ - -#define REGISTER_HASH(h) do {\ - LTC_ARGCHK(register_hash(h) != -1); \ -} while(0) - -int register_all_hashes(void) -{ -#ifdef LTC_TIGER - REGISTER_HASH(&tiger_desc); -#endif -#ifdef LTC_MD2 - REGISTER_HASH(&md2_desc); -#endif -#ifdef LTC_MD4 - REGISTER_HASH(&md4_desc); -#endif -#ifdef LTC_MD5 - REGISTER_HASH(&md5_desc); -#endif -#ifdef LTC_SHA1 - REGISTER_HASH(&sha1_desc); -#endif -#ifdef LTC_SHA224 - REGISTER_HASH(&sha224_desc); -#endif -#ifdef LTC_SHA256 - REGISTER_HASH(&sha256_desc); -#endif -#ifdef LTC_SHA384 - REGISTER_HASH(&sha384_desc); -#endif -#ifdef LTC_SHA512 - REGISTER_HASH(&sha512_desc); -#endif -#ifdef LTC_SHA512_224 - REGISTER_HASH(&sha512_224_desc); -#endif -#ifdef LTC_SHA512_256 - REGISTER_HASH(&sha512_256_desc); -#endif -#ifdef LTC_SHA3 - REGISTER_HASH(&sha3_224_desc); - REGISTER_HASH(&sha3_256_desc); - REGISTER_HASH(&sha3_384_desc); - REGISTER_HASH(&sha3_512_desc); -#endif -#ifdef LTC_RIPEMD128 - REGISTER_HASH(&rmd128_desc); -#endif -#ifdef LTC_RIPEMD160 - REGISTER_HASH(&rmd160_desc); -#endif -#ifdef LTC_RIPEMD256 - REGISTER_HASH(&rmd256_desc); -#endif -#ifdef LTC_RIPEMD320 - REGISTER_HASH(&rmd320_desc); -#endif -#ifdef LTC_WHIRLPOOL - REGISTER_HASH(&whirlpool_desc); -#endif -#ifdef LTC_BLAKE2S - REGISTER_HASH(&blake2s_128_desc); - REGISTER_HASH(&blake2s_160_desc); - REGISTER_HASH(&blake2s_224_desc); - REGISTER_HASH(&blake2s_256_desc); -#endif -#ifdef LTC_BLAKE2S - REGISTER_HASH(&blake2b_160_desc); - REGISTER_HASH(&blake2b_256_desc); - REGISTER_HASH(&blake2b_384_desc); - REGISTER_HASH(&blake2b_512_desc); -#endif -#ifdef LTC_CHC_HASH - REGISTER_HASH(&chc_desc); - LTC_ARGCHK(chc_register(find_cipher_any("aes", 8, 16)) == CRYPT_OK); -#endif - return CRYPT_OK; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_register_all_prngs.c b/src/libtomcrypt/src/misc/crypt/crypt_register_all_prngs.c deleted file mode 100644 index c1bacdd48d..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_register_all_prngs.c +++ /dev/null @@ -1,48 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -/** - @file crypt_register_all_prngs.c - - Steffen Jaeckel -*/ - -#define REGISTER_PRNG(h) do {\ - LTC_ARGCHK(register_prng(h) != -1); \ -} while(0) - -int register_all_prngs(void) -{ -#ifdef LTC_YARROW - REGISTER_PRNG(&yarrow_desc); -#endif -#ifdef LTC_FORTUNA - REGISTER_PRNG(&fortuna_desc); -#endif -#ifdef LTC_RC4 - REGISTER_PRNG(&rc4_desc); -#endif -#ifdef LTC_CHACHA20_PRNG - REGISTER_PRNG(&chacha20_prng_desc); -#endif -#ifdef LTC_SOBER128 - REGISTER_PRNG(&sober128_desc); -#endif -#ifdef LTC_SPRNG - REGISTER_PRNG(&sprng_desc); -#endif - - return CRYPT_OK; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_register_cipher.c b/src/libtomcrypt/src/misc/crypt/crypt_register_cipher.c deleted file mode 100644 index 59fc042d89..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_register_cipher.c +++ /dev/null @@ -1,52 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_register_cipher.c - Register a cipher, Tom St Denis -*/ - -/** - Register a cipher with the descriptor table - @param cipher The cipher you wish to register - @return value >= 0 if successfully added (or already present), -1 if unsuccessful -*/ -int register_cipher(const struct ltc_cipher_descriptor *cipher) -{ - int x; - - LTC_ARGCHK(cipher != NULL); - - /* is it already registered? */ - LTC_MUTEX_LOCK(<c_cipher_mutex); - for (x = 0; x < TAB_SIZE; x++) { - if (cipher_descriptor[x].name != NULL && cipher_descriptor[x].ID == cipher->ID) { - LTC_MUTEX_UNLOCK(<c_cipher_mutex); - return x; - } - } - - /* find a blank spot */ - for (x = 0; x < TAB_SIZE; x++) { - if (cipher_descriptor[x].name == NULL) { - XMEMCPY(&cipher_descriptor[x], cipher, sizeof(struct ltc_cipher_descriptor)); - LTC_MUTEX_UNLOCK(<c_cipher_mutex); - return x; - } - } - - /* no spot */ - LTC_MUTEX_UNLOCK(<c_cipher_mutex); - return -1; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_register_hash.c b/src/libtomcrypt/src/misc/crypt/crypt_register_hash.c deleted file mode 100644 index ce43e6cd0a..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_register_hash.c +++ /dev/null @@ -1,52 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_register_hash.c - Register a HASH, Tom St Denis -*/ - -/** - Register a hash with the descriptor table - @param hash The hash you wish to register - @return value >= 0 if successfully added (or already present), -1 if unsuccessful -*/ -int register_hash(const struct ltc_hash_descriptor *hash) -{ - int x; - - LTC_ARGCHK(hash != NULL); - - /* is it already registered? */ - LTC_MUTEX_LOCK(<c_hash_mutex); - for (x = 0; x < TAB_SIZE; x++) { - if (XMEMCMP(&hash_descriptor[x], hash, sizeof(struct ltc_hash_descriptor)) == 0) { - LTC_MUTEX_UNLOCK(<c_hash_mutex); - return x; - } - } - - /* find a blank spot */ - for (x = 0; x < TAB_SIZE; x++) { - if (hash_descriptor[x].name == NULL) { - XMEMCPY(&hash_descriptor[x], hash, sizeof(struct ltc_hash_descriptor)); - LTC_MUTEX_UNLOCK(<c_hash_mutex); - return x; - } - } - - /* no spot */ - LTC_MUTEX_UNLOCK(<c_hash_mutex); - return -1; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_register_prng.c b/src/libtomcrypt/src/misc/crypt/crypt_register_prng.c deleted file mode 100644 index e7e919e399..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_register_prng.c +++ /dev/null @@ -1,52 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_register_prng.c - Register a PRNG, Tom St Denis -*/ - -/** - Register a PRNG with the descriptor table - @param prng The PRNG you wish to register - @return value >= 0 if successfully added (or already present), -1 if unsuccessful -*/ -int register_prng(const struct ltc_prng_descriptor *prng) -{ - int x; - - LTC_ARGCHK(prng != NULL); - - /* is it already registered? */ - LTC_MUTEX_LOCK(<c_prng_mutex); - for (x = 0; x < TAB_SIZE; x++) { - if (XMEMCMP(&prng_descriptor[x], prng, sizeof(struct ltc_prng_descriptor)) == 0) { - LTC_MUTEX_UNLOCK(<c_prng_mutex); - return x; - } - } - - /* find a blank spot */ - for (x = 0; x < TAB_SIZE; x++) { - if (prng_descriptor[x].name == NULL) { - XMEMCPY(&prng_descriptor[x], prng, sizeof(struct ltc_prng_descriptor)); - LTC_MUTEX_UNLOCK(<c_prng_mutex); - return x; - } - } - - /* no spot */ - LTC_MUTEX_UNLOCK(<c_prng_mutex); - return -1; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_sizes.c b/src/libtomcrypt/src/misc/crypt/crypt_sizes.c deleted file mode 100644 index 07e9518ed6..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_sizes.c +++ /dev/null @@ -1,348 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_sizes.c - - Make various struct sizes available to dynamic languages - like Python - Larry Bugbee, February 2013 - - LB - Dec 2013 - revised to include compiler define options -*/ - - -typedef struct { - const char *name; - const unsigned int size; -} crypt_size; - -#define _SZ_STRINGIFY_S(s) { #s, sizeof(struct s) } -#define _SZ_STRINGIFY_T(s) { #s, sizeof(s) } - -static const crypt_size _crypt_sizes[] = { - /* hash state sizes */ - _SZ_STRINGIFY_S(ltc_hash_descriptor), - _SZ_STRINGIFY_T(hash_state), -#ifdef LTC_CHC_HASH - _SZ_STRINGIFY_S(chc_state), -#endif -#ifdef LTC_WHIRLPOOL - _SZ_STRINGIFY_S(whirlpool_state), -#endif -#ifdef LTC_SHA3 - _SZ_STRINGIFY_S(sha3_state), -#endif -#ifdef LTC_SHA512 - _SZ_STRINGIFY_S(sha512_state), -#endif -#ifdef LTC_SHA256 - _SZ_STRINGIFY_S(sha256_state), -#endif -#ifdef LTC_SHA1 - _SZ_STRINGIFY_S(sha1_state), -#endif -#ifdef LTC_MD5 - _SZ_STRINGIFY_S(md5_state), -#endif -#ifdef LTC_MD4 - _SZ_STRINGIFY_S(md4_state), -#endif -#ifdef LTC_MD2 - _SZ_STRINGIFY_S(md2_state), -#endif -#ifdef LTC_TIGER - _SZ_STRINGIFY_S(tiger_state), -#endif -#ifdef LTC_RIPEMD128 - _SZ_STRINGIFY_S(rmd128_state), -#endif -#ifdef LTC_RIPEMD160 - _SZ_STRINGIFY_S(rmd160_state), -#endif -#ifdef LTC_RIPEMD256 - _SZ_STRINGIFY_S(rmd256_state), -#endif -#ifdef LTC_RIPEMD320 - _SZ_STRINGIFY_S(rmd320_state), -#endif -#ifdef LTC_BLAKE2S - _SZ_STRINGIFY_S(blake2s_state), -#endif -#ifdef LTC_BLAKE2B - _SZ_STRINGIFY_S(blake2b_state), -#endif - - /* block cipher key sizes */ - _SZ_STRINGIFY_S(ltc_cipher_descriptor), - _SZ_STRINGIFY_T(symmetric_key), -#ifdef LTC_ANUBIS - _SZ_STRINGIFY_S(anubis_key), -#endif -#ifdef LTC_CAMELLIA - _SZ_STRINGIFY_S(camellia_key), -#endif -#ifdef LTC_BLOWFISH - _SZ_STRINGIFY_S(blowfish_key), -#endif -#ifdef LTC_CAST5 - _SZ_STRINGIFY_S(cast5_key), -#endif -#ifdef LTC_DES - _SZ_STRINGIFY_S(des_key), - _SZ_STRINGIFY_S(des3_key), -#endif -#ifdef LTC_KASUMI - _SZ_STRINGIFY_S(kasumi_key), -#endif -#ifdef LTC_KHAZAD - _SZ_STRINGIFY_S(khazad_key), -#endif -#ifdef LTC_KSEED - _SZ_STRINGIFY_S(kseed_key), -#endif -#ifdef LTC_MULTI2 - _SZ_STRINGIFY_S(multi2_key), -#endif -#ifdef LTC_NOEKEON - _SZ_STRINGIFY_S(noekeon_key), -#endif -#ifdef LTC_RC2 - _SZ_STRINGIFY_S(rc2_key), -#endif -#ifdef LTC_RC5 - _SZ_STRINGIFY_S(rc5_key), -#endif -#ifdef LTC_RC6 - _SZ_STRINGIFY_S(rc6_key), -#endif -#ifdef LTC_SKIPJACK - _SZ_STRINGIFY_S(skipjack_key), -#endif -#ifdef LTC_XTEA - _SZ_STRINGIFY_S(xtea_key), -#endif -#ifdef LTC_RIJNDAEL - _SZ_STRINGIFY_S(rijndael_key), -#endif -#ifdef LTC_SAFER - _SZ_STRINGIFY_S(safer_key), -#endif -#ifdef LTC_SAFERP - _SZ_STRINGIFY_S(saferp_key), -#endif -#ifdef LTC_TWOFISH - _SZ_STRINGIFY_S(twofish_key), -#endif - - /* mode sizes */ -#ifdef LTC_ECB_MODE - _SZ_STRINGIFY_T(symmetric_ECB), -#endif -#ifdef LTC_CFB_MODE - _SZ_STRINGIFY_T(symmetric_CFB), -#endif -#ifdef LTC_OFB_MODE - _SZ_STRINGIFY_T(symmetric_OFB), -#endif -#ifdef LTC_CBC_MODE - _SZ_STRINGIFY_T(symmetric_CBC), -#endif -#ifdef LTC_CTR_MODE - _SZ_STRINGIFY_T(symmetric_CTR), -#endif -#ifdef LTC_LRW_MODE - _SZ_STRINGIFY_T(symmetric_LRW), -#endif -#ifdef LTC_F8_MODE - _SZ_STRINGIFY_T(symmetric_F8), -#endif -#ifdef LTC_XTS_MODE - _SZ_STRINGIFY_T(symmetric_xts), -#endif - - /* stream cipher sizes */ -#ifdef LTC_CHACHA - _SZ_STRINGIFY_T(chacha_state), -#endif -#ifdef LTC_RC4_STREAM - _SZ_STRINGIFY_T(rc4_state), -#endif -#ifdef LTC_SOBER128_STREAM - _SZ_STRINGIFY_T(sober128_state), -#endif - - /* MAC sizes -- no states for ccm, lrw */ -#ifdef LTC_HMAC - _SZ_STRINGIFY_T(hmac_state), -#endif -#ifdef LTC_OMAC - _SZ_STRINGIFY_T(omac_state), -#endif -#ifdef LTC_PMAC - _SZ_STRINGIFY_T(pmac_state), -#endif -#ifdef LTC_POLY1305 - _SZ_STRINGIFY_T(poly1305_state), -#endif -#ifdef LTC_EAX_MODE - _SZ_STRINGIFY_T(eax_state), -#endif -#ifdef LTC_OCB_MODE - _SZ_STRINGIFY_T(ocb_state), -#endif -#ifdef LTC_OCB3_MODE - _SZ_STRINGIFY_T(ocb3_state), -#endif -#ifdef LTC_CCM_MODE - _SZ_STRINGIFY_T(ccm_state), -#endif -#ifdef LTC_GCM_MODE - _SZ_STRINGIFY_T(gcm_state), -#endif -#ifdef LTC_PELICAN - _SZ_STRINGIFY_T(pelican_state), -#endif -#ifdef LTC_XCBC - _SZ_STRINGIFY_T(xcbc_state), -#endif -#ifdef LTC_F9_MODE - _SZ_STRINGIFY_T(f9_state), -#endif -#ifdef LTC_CHACHA20POLY1305_MODE - _SZ_STRINGIFY_T(chacha20poly1305_state), -#endif - - /* asymmetric keys */ -#ifdef LTC_MRSA - _SZ_STRINGIFY_T(rsa_key), -#endif -#ifdef LTC_MDSA - _SZ_STRINGIFY_T(dsa_key), -#endif -#ifdef LTC_MDH - _SZ_STRINGIFY_T(dh_key), -#endif -#ifdef LTC_MECC - _SZ_STRINGIFY_T(ltc_ecc_set_type), - _SZ_STRINGIFY_T(ecc_point), - _SZ_STRINGIFY_T(ecc_key), -#endif -#ifdef LTC_MKAT - _SZ_STRINGIFY_T(katja_key), -#endif - - /* DER handling */ -#ifdef LTC_DER - _SZ_STRINGIFY_T(ltc_asn1_list), /* a list entry */ - _SZ_STRINGIFY_T(ltc_utctime), - _SZ_STRINGIFY_T(ltc_generalizedtime), -#endif - - /* prng state sizes */ - _SZ_STRINGIFY_S(ltc_prng_descriptor), - _SZ_STRINGIFY_T(prng_state), -#ifdef LTC_FORTUNA - _SZ_STRINGIFY_S(fortuna_prng), -#endif -#ifdef LTC_CHACHA20_PRNG - _SZ_STRINGIFY_S(chacha20_prng), -#endif -#ifdef LTC_RC4 - _SZ_STRINGIFY_S(rc4_prng), -#endif -#ifdef LTC_SOBER128 - _SZ_STRINGIFY_S(sober128_prng), -#endif -#ifdef LTC_YARROW - _SZ_STRINGIFY_S(yarrow_prng), -#endif - /* sprng has no state as it uses other potentially available sources */ - /* like /dev/random. See Developers Guide for more info. */ - -#ifdef LTC_ADLER32 - _SZ_STRINGIFY_T(adler32_state), -#endif -#ifdef LTC_CRC32 - _SZ_STRINGIFY_T(crc32_state), -#endif - - _SZ_STRINGIFY_T(ltc_mp_digit), - _SZ_STRINGIFY_T(ltc_math_descriptor) - -}; - -/* crypt_get_size() - * sizeout will be the size (bytes) of the named struct or union - * return -1 if named item not found - */ -int crypt_get_size(const char* namein, unsigned int *sizeout) { - int i; - int count = sizeof(_crypt_sizes) / sizeof(_crypt_sizes[0]); - for (i=0; i *names_list_size) { - return -1; - } - /* build the names list */ - ptr = names_list; - for (i=0; i total_len) return -1; - total_len -= number_len; - ptr += number_len; - } - /* to remove the trailing new-line */ - ptr -= 1; - *ptr = 0; - } - return 0; -} - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_unregister_cipher.c b/src/libtomcrypt/src/misc/crypt/crypt_unregister_cipher.c deleted file mode 100644 index 271c3a9519..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_unregister_cipher.c +++ /dev/null @@ -1,43 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_unregister_cipher.c - Unregister a cipher, Tom St Denis -*/ - -/** - Unregister a cipher from the descriptor table - @param cipher The cipher descriptor to remove - @return CRYPT_OK on success -*/ -int unregister_cipher(const struct ltc_cipher_descriptor *cipher) -{ - int x; - - LTC_ARGCHK(cipher != NULL); - - /* is it already registered? */ - LTC_MUTEX_LOCK(<c_cipher_mutex); - for (x = 0; x < TAB_SIZE; x++) { - if (XMEMCMP(&cipher_descriptor[x], cipher, sizeof(struct ltc_cipher_descriptor)) == 0) { - cipher_descriptor[x].name = NULL; - cipher_descriptor[x].ID = 255; - LTC_MUTEX_UNLOCK(<c_cipher_mutex); - return CRYPT_OK; - } - } - LTC_MUTEX_UNLOCK(<c_cipher_mutex); - return CRYPT_ERROR; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_unregister_hash.c b/src/libtomcrypt/src/misc/crypt/crypt_unregister_hash.c deleted file mode 100644 index 3684f5ab1e..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_unregister_hash.c +++ /dev/null @@ -1,42 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_unregister_hash.c - Unregister a hash, Tom St Denis -*/ - -/** - Unregister a hash from the descriptor table - @param hash The hash descriptor to remove - @return CRYPT_OK on success -*/ -int unregister_hash(const struct ltc_hash_descriptor *hash) -{ - int x; - - LTC_ARGCHK(hash != NULL); - - /* is it already registered? */ - LTC_MUTEX_LOCK(<c_hash_mutex); - for (x = 0; x < TAB_SIZE; x++) { - if (XMEMCMP(&hash_descriptor[x], hash, sizeof(struct ltc_hash_descriptor)) == 0) { - hash_descriptor[x].name = NULL; - LTC_MUTEX_UNLOCK(<c_hash_mutex); - return CRYPT_OK; - } - } - LTC_MUTEX_UNLOCK(<c_hash_mutex); - return CRYPT_ERROR; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/crypt/crypt_unregister_prng.c b/src/libtomcrypt/src/misc/crypt/crypt_unregister_prng.c deleted file mode 100644 index d196ad0d21..0000000000 --- a/src/libtomcrypt/src/misc/crypt/crypt_unregister_prng.c +++ /dev/null @@ -1,42 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file crypt_unregister_prng.c - Unregister a PRNG, Tom St Denis -*/ - -/** - Unregister a PRNG from the descriptor table - @param prng The PRNG descriptor to remove - @return CRYPT_OK on success -*/ -int unregister_prng(const struct ltc_prng_descriptor *prng) -{ - int x; - - LTC_ARGCHK(prng != NULL); - - /* is it already registered? */ - LTC_MUTEX_LOCK(<c_prng_mutex); - for (x = 0; x < TAB_SIZE; x++) { - if (XMEMCMP(&prng_descriptor[x], prng, sizeof(struct ltc_prng_descriptor)) == 0) { - prng_descriptor[x].name = NULL; - LTC_MUTEX_UNLOCK(<c_prng_mutex); - return CRYPT_OK; - } - } - LTC_MUTEX_UNLOCK(<c_prng_mutex); - return CRYPT_ERROR; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/error_to_string.c b/src/libtomcrypt/src/misc/error_to_string.c deleted file mode 100644 index 75fb712782..0000000000 --- a/src/libtomcrypt/src/misc/error_to_string.c +++ /dev/null @@ -1,79 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -/** - @file error_to_string.c - Convert error codes to ASCII strings, Tom St Denis -*/ - -static const char * const err_2_str[] = -{ - "CRYPT_OK", - "CRYPT_ERROR", - "Non-fatal 'no-operation' requested.", - - "Invalid key size.", - "Invalid number of rounds for block cipher.", - "Algorithm failed test vectors.", - - "Buffer overflow.", - "Invalid input packet.", - - "Invalid number of bits for a PRNG.", - "Error reading the PRNG.", - - "Invalid cipher specified.", - "Invalid hash specified.", - "Invalid PRNG specified.", - - "Out of memory.", - - "Invalid PK key or key type specified for function.", - "A private PK key is required.", - - "Invalid argument provided.", - "File Not Found", - - "Invalid PK type.", - - "An overflow of a value was detected/prevented.", - - "UNUSED1.", - - "The input was longer than expected.", - - "Invalid sized parameter.", - - "Invalid size for prime.", - - "Invalid padding.", - - "Hash applied to too many bits.", -}; - -/** - Convert an LTC error code to ASCII - @param err The error code - @return A pointer to the ASCII NUL terminated string for the error or "Invalid error code." if the err code was not valid. -*/ -const char *error_to_string(int err) -{ - if (err < 0 || err >= (int)(sizeof(err_2_str)/sizeof(err_2_str[0]))) { - return "Invalid error code."; - } else { - return err_2_str[err]; - } -} - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/hkdf/hkdf.c b/src/libtomcrypt/src/misc/hkdf/hkdf.c deleted file mode 100644 index fa0b12c8e0..0000000000 --- a/src/libtomcrypt/src/misc/hkdf/hkdf.c +++ /dev/null @@ -1,143 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include -#include -#include - -#include "tomcrypt.h" - -#ifdef LTC_HKDF - -/* This is mostly just a wrapper around hmac_memory */ -int hkdf_extract(int hash_idx, const unsigned char *salt, unsigned long saltlen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - /* libtomcrypt chokes on a zero length HMAC key, so we need to check for - that. HMAC specifies that keys shorter than the hash's blocksize are - 0 padded to the block size. HKDF specifies that a NULL salt is to be - substituted with a salt comprised of hashLen 0 bytes. HMAC's padding - means that in either case the HMAC is actually using a blocksize long - zero filled key. Unless blocksize < hashLen (which wouldn't make any - sense), we can use a single 0 byte as the HMAC key and still generate - valid results for HKDF. */ - if (salt == NULL || saltlen == 0) { - return hmac_memory(hash_idx, (const unsigned char *)"", 1, in, inlen, out, outlen); - } else { - return hmac_memory(hash_idx, salt, saltlen, in, inlen, out, outlen); - } -} - -int hkdf_expand(int hash_idx, const unsigned char *info, unsigned long infolen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long outlen) -{ - unsigned long hashsize; - int err; - unsigned char N; - unsigned long Noutlen, outoff; - - unsigned char *T, *dat; - unsigned long Tlen, datlen; - - /* make sure hash descriptor is valid */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - - hashsize = hash_descriptor[hash_idx].hashsize; - - /* RFC5869 parameter restrictions */ - if (inlen < hashsize || outlen > hashsize * 255) - return CRYPT_INVALID_ARG; - if (info == NULL && infolen != 0) - return CRYPT_INVALID_ARG; - LTC_ARGCHK(out != NULL); - - Tlen = hashsize + infolen + 1; - T = XMALLOC(Tlen); /* Replace with static buffer? */ - if (T == NULL) { - return CRYPT_MEM; - } - if (info != NULL) { - XMEMCPY(T + hashsize, info, infolen); - } - - /* HMAC data T(1) doesn't include a previous hash value */ - dat = T + hashsize; - datlen = Tlen - hashsize; - - N = 0; - outoff = 0; /* offset in out to write to */ - while (1) { /* an exit condition breaks mid-loop */ - Noutlen = MIN(hashsize, outlen - outoff); - T[Tlen - 1] = ++N; - if ((err = hmac_memory(hash_idx, in, inlen, dat, datlen, - out + outoff, &Noutlen)) != CRYPT_OK) { - zeromem(T, Tlen); - XFREE(T); - return err; - } - outoff += Noutlen; - - if (outoff >= outlen) /* loop exit condition */ - break; - - /* All subsequent HMAC data T(N) DOES include the previous hash value */ - XMEMCPY(T, out + hashsize * (N-1), hashsize); - if (N == 1) { - dat = T; - datlen = Tlen; - } - } - zeromem(T, Tlen); - XFREE(T); - return CRYPT_OK; -} - -/* all in one step */ -int hkdf(int hash_idx, const unsigned char *salt, unsigned long saltlen, - const unsigned char *info, unsigned long infolen, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long outlen) -{ - unsigned long hashsize; - int err; - unsigned char *extracted; - - /* make sure hash descriptor is valid */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - - hashsize = hash_descriptor[hash_idx].hashsize; - - extracted = XMALLOC(hashsize); /* replace with static buffer? */ - if (extracted == NULL) { - return CRYPT_MEM; - } - if ((err = hkdf_extract(hash_idx, salt, saltlen, in, inlen, extracted, &hashsize)) != 0) { - zeromem(extracted, hashsize); - XFREE(extracted); - return err; - } - err = hkdf_expand(hash_idx, info, infolen, extracted, hashsize, out, outlen); - zeromem(extracted, hashsize); - XFREE(extracted); - return err; -} -#endif /* LTC_HKDF */ - - -/* vim: set ts=2 sw=2 et ai si: */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/hkdf/hkdf_test.c b/src/libtomcrypt/src/misc/hkdf/hkdf_test.c deleted file mode 100644 index bece4fdd06..0000000000 --- a/src/libtomcrypt/src/misc/hkdf/hkdf_test.c +++ /dev/null @@ -1,294 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file hkdf_test.c - LTC_HKDF support, self-test, Steffen Jaeckel -*/ - -#ifdef LTC_HKDF - -/* - TEST CASES SOURCE: - -Internet Engineering Task Force (IETF) H. Krawczyk -Request for Comments: 5869 IBM Research -Category: Informational P. Eronen -ISSN: 2070-1721 Nokia - May 2010 -Appendix A. Test Vectors -*/ - -/** - LTC_HKDF self-test - @return CRYPT_OK if successful, CRYPT_NOP if tests have been disabled. -*/ -int hkdf_test(void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - unsigned char OKM[82]; - int i; - - static const struct hkdf_test_case { - int num; - const char* Hash; - unsigned char IKM[80]; - unsigned long IKM_l; - unsigned char salt[80]; - unsigned long salt_l; - unsigned char info[80]; - unsigned long info_l; - unsigned char PRK[32]; - unsigned long PRK_l; - unsigned char OKM[82]; - unsigned long OKM_l; - } cases[] = { -#ifdef LTC_SHA256 - /* - Basic test case with SHA-256 - - Hash = SHA-256 - IKM = 0x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b (22 octets) - salt = 0x000102030405060708090a0b0c (13 octets) - info = 0xf0f1f2f3f4f5f6f7f8f9 (10 octets) - L = 42 - - PRK = 0x077709362c2e32df0ddc3f0dc47bba63 - 90b6c73bb50f9c3122ec844ad7c2b3e5 (32 octets) - OKM = 0x3cb25f25faacd57a90434f64d0362f2a - 2d2d0a90cf1a5a4c5db02d56ecc4c5bf - 34007208d5b887185865 (42 octets) - */ - {1, "sha256", - {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 22, - {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c}, 13, - {0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9}, 10, - {0x07, 0x77, 0x09, 0x36, 0x2c, 0x2e, 0x32, 0xdf, - 0x0d, 0xdc, 0x3f, 0x0d, 0xc4, 0x7b, 0xba, 0x63, - 0x90, 0xb6, 0xc7, 0x3b, 0xb5, 0x0f, 0x9c, 0x31, - 0x22, 0xec, 0x84, 0x4a, 0xd7, 0xc2, 0xb3, 0xe5}, 32, - {0x3c, 0xb2, 0x5f, 0x25, 0xfa, 0xac, 0xd5, 0x7a, - 0x90, 0x43, 0x4f, 0x64, 0xd0, 0x36, 0x2f, 0x2a, - 0x2d, 0x2d, 0x0a, 0x90, 0xcf, 0x1a, 0x5a, 0x4c, - 0x5d, 0xb0, 0x2d, 0x56, 0xec, 0xc4, 0xc5, 0xbf, - 0x34, 0x00, 0x72, 0x08, 0xd5, 0xb8, 0x87, 0x18, - 0x58, 0x65}, 42}, -#ifdef LTC_TEST_EXT - /* Test with SHA-256 and longer inputs/outputs */ - {2, "sha256", - {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, - 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, - 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, - 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, - 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f}, 80, - {0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, - 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, - 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, - 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, - 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf}, 80, - {0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, - 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff}, 80, - {0x06, 0xa6, 0xb8, 0x8c, 0x58, 0x53, 0x36, 0x1a, - 0x06, 0x10, 0x4c, 0x9c, 0xeb, 0x35, 0xb4, 0x5c, - 0xef, 0x76, 0x00, 0x14, 0x90, 0x46, 0x71, 0x01, - 0x4a, 0x19, 0x3f, 0x40, 0xc1, 0x5f, 0xc2, 0x44}, 32, - {0xb1, 0x1e, 0x39, 0x8d, 0xc8, 0x03, 0x27, 0xa1, - 0xc8, 0xe7, 0xf7, 0x8c, 0x59, 0x6a, 0x49, 0x34, - 0x4f, 0x01, 0x2e, 0xda, 0x2d, 0x4e, 0xfa, 0xd8, - 0xa0, 0x50, 0xcc, 0x4c, 0x19, 0xaf, 0xa9, 0x7c, - 0x59, 0x04, 0x5a, 0x99, 0xca, 0xc7, 0x82, 0x72, - 0x71, 0xcb, 0x41, 0xc6, 0x5e, 0x59, 0x0e, 0x09, - 0xda, 0x32, 0x75, 0x60, 0x0c, 0x2f, 0x09, 0xb8, - 0x36, 0x77, 0x93, 0xa9, 0xac, 0xa3, 0xdb, 0x71, - 0xcc, 0x30, 0xc5, 0x81, 0x79, 0xec, 0x3e, 0x87, - 0xc1, 0x4c, 0x01, 0xd5, 0xc1, 0xf3, 0x43, 0x4f, - 0x1d, 0x87}, 82}, - /* Test with SHA-256 and zero length salt/info */ - {3, "sha256", - {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 22, - {0}, 0, - {0}, 0, - {0x19, 0xef, 0x24, 0xa3, 0x2c, 0x71, 0x7b, 0x16, - 0x7f, 0x33, 0xa9, 0x1d, 0x6f, 0x64, 0x8b, 0xdf, - 0x96, 0x59, 0x67, 0x76, 0xaf, 0xdb, 0x63, 0x77, - 0xac, 0x43, 0x4c, 0x1c, 0x29, 0x3c, 0xcb, 0x04}, 32, - {0x8d, 0xa4, 0xe7, 0x75, 0xa5, 0x63, 0xc1, 0x8f, - 0x71, 0x5f, 0x80, 0x2a, 0x06, 0x3c, 0x5a, 0x31, - 0xb8, 0xa1, 0x1f, 0x5c, 0x5e, 0xe1, 0x87, 0x9e, - 0xc3, 0x45, 0x4e, 0x5f, 0x3c, 0x73, 0x8d, 0x2d, - 0x9d, 0x20, 0x13, 0x95, 0xfa, 0xa4, 0xb6, 0x1a, - 0x96, 0xc8}, 42}, -#endif /* LTC_TEST_EXT */ -#endif /* LTC_SHA256 */ -#ifdef LTC_SHA1 - /* Basic test case with SHA-1 */ - {4, "sha1", - {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b}, 11, - {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c}, 13, - {0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9}, 10, - {0x9b, 0x6c, 0x18, 0xc4, 0x32, 0xa7, 0xbf, 0x8f, - 0x0e, 0x71, 0xc8, 0xeb, 0x88, 0xf4, 0xb3, 0x0b, - 0xaa, 0x2b, 0xa2, 0x43}, 20, - {0x08, 0x5a, 0x01, 0xea, 0x1b, 0x10, 0xf3, 0x69, - 0x33, 0x06, 0x8b, 0x56, 0xef, 0xa5, 0xad, 0x81, - 0xa4, 0xf1, 0x4b, 0x82, 0x2f, 0x5b, 0x09, 0x15, - 0x68, 0xa9, 0xcd, 0xd4, 0xf1, 0x55, 0xfd, 0xa2, - 0xc2, 0x2e, 0x42, 0x24, 0x78, 0xd3, 0x05, 0xf3, - 0xf8, 0x96}, 42}, -#ifdef LTC_TEST_EXT - /* Test with SHA-1 and longer inputs/outputs */ - {5, "sha1", - {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, - 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, - 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, - 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, - 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, - 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, - 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f}, 80, - {0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, - 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, - 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, - 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, - 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, - 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, - 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, - 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf}, 80, - {0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, - 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, - 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, - 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, - 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, - 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, - 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, - 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff}, 80, - {0x8a, 0xda, 0xe0, 0x9a, 0x2a, 0x30, 0x70, 0x59, - 0x47, 0x8d, 0x30, 0x9b, 0x26, 0xc4, 0x11, 0x5a, - 0x22, 0x4c, 0xfa, 0xf6}, 20, - {0x0b, 0xd7, 0x70, 0xa7, 0x4d, 0x11, 0x60, 0xf7, - 0xc9, 0xf1, 0x2c, 0xd5, 0x91, 0x2a, 0x06, 0xeb, - 0xff, 0x6a, 0xdc, 0xae, 0x89, 0x9d, 0x92, 0x19, - 0x1f, 0xe4, 0x30, 0x56, 0x73, 0xba, 0x2f, 0xfe, - 0x8f, 0xa3, 0xf1, 0xa4, 0xe5, 0xad, 0x79, 0xf3, - 0xf3, 0x34, 0xb3, 0xb2, 0x02, 0xb2, 0x17, 0x3c, - 0x48, 0x6e, 0xa3, 0x7c, 0xe3, 0xd3, 0x97, 0xed, - 0x03, 0x4c, 0x7f, 0x9d, 0xfe, 0xb1, 0x5c, 0x5e, - 0x92, 0x73, 0x36, 0xd0, 0x44, 0x1f, 0x4c, 0x43, - 0x00, 0xe2, 0xcf, 0xf0, 0xd0, 0x90, 0x0b, 0x52, - 0xd3, 0xb4}, 82}, - /* Test with SHA-1 and zero-length salt/info */ - {6, "sha1", - {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, - 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 22, - {0}, 0, - {0}, 0, - {0xda, 0x8c, 0x8a, 0x73, 0xc7, 0xfa, 0x77, 0x28, - 0x8e, 0xc6, 0xf5, 0xe7, 0xc2, 0x97, 0x78, 0x6a, - 0xa0, 0xd3, 0x2d, 0x01}, 20, - {0x0a, 0xc1, 0xaf, 0x70, 0x02, 0xb3, 0xd7, 0x61, - 0xd1, 0xe5, 0x52, 0x98, 0xda, 0x9d, 0x05, 0x06, - 0xb9, 0xae, 0x52, 0x05, 0x72, 0x20, 0xa3, 0x06, - 0xe0, 0x7b, 0x6b, 0x87, 0xe8, 0xdf, 0x21, 0xd0, - 0xea, 0x00, 0x03, 0x3d, 0xe0, 0x39, 0x84, 0xd3, - 0x49, 0x18}, 42}, - /* Test with SHA-1, salt not provided (defaults to HashLen zero octets), - zero-length info */ - {7, "sha1", - {0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c}, 22, - {0}, 0, /* pass a null pointer */ - {0}, 0, - {0x2a, 0xdc, 0xca, 0xda, 0x18, 0x77, 0x9e, 0x7c, - 0x20, 0x77, 0xad, 0x2e, 0xb1, 0x9d, 0x3f, 0x3e, - 0x73, 0x13, 0x85, 0xdd}, 20, - {0x2c, 0x91, 0x11, 0x72, 0x04, 0xd7, 0x45, 0xf3, - 0x50, 0x0d, 0x63, 0x6a, 0x62, 0xf6, 0x4f, 0x0a, - 0xb3, 0xba, 0xe5, 0x48, 0xaa, 0x53, 0xd4, 0x23, - 0xb0, 0xd1, 0xf2, 0x7e, 0xbb, 0xa6, 0xf5, 0xe5, - 0x67, 0x3a, 0x08, 0x1d, 0x70, 0xcc, 0xe7, 0xac, - 0xfc, 0x48}, 42}, -#endif /* LTC_TEST_EXT */ -#endif /* LTC_SHA1 */ - }; - - int err; - int tested=0,failed=0; - for(i=0; i < (int)(sizeof(cases) / sizeof(cases[0])); i++) { - int hash = find_hash(cases[i].Hash); - if (hash == -1) continue; - ++tested; - if((err = hkdf(hash, cases[i].salt, cases[i].salt_l, - cases[i].info, cases[i].info_l, - cases[i].IKM, cases[i].IKM_l, - OKM, cases[i].OKM_l)) != CRYPT_OK) { -#if defined(LTC_TEST_DBG) && (LTC_TEST_DBG > 1) - printf("LTC_HKDF-%s test #%d, %s\n", cases[i].Hash, i, error_to_string(err)); -#endif - return err; - } - - if(compare_testvector(OKM, cases[i].OKM_l, cases[i].OKM, (size_t)cases[i].OKM_l, "HKDF", cases[i].num)) { - failed++; - } - } - - if (failed != 0) { - return CRYPT_FAIL_TESTVECTOR; - } else if (tested == 0) { - return CRYPT_NOP; - } else { - return CRYPT_OK; - } - #endif -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/mem_neq.c b/src/libtomcrypt/src/misc/mem_neq.c deleted file mode 100644 index 60bc17809f..0000000000 --- a/src/libtomcrypt/src/misc/mem_neq.c +++ /dev/null @@ -1,63 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file mem_neq.c - Compare two blocks of memory for inequality in constant time. - Steffen Jaeckel -*/ - -/** - Compare two blocks of memory for inequality in constant time. - - The usage is similar to that of standard memcmp, but you can only test - if the memory is equal or not - you can not determine by how much the - first different byte differs. - - This function shall be used to compare results of cryptographic - operations where inequality means most likely usage of a wrong key. - The execution time has therefore to be constant as otherwise - timing attacks could be possible. - - @param a The first memory region - @param b The second memory region - @param len The length of the area to compare (octets) - - @return 0 when a and b are equal for len bytes, 1 they are not equal. -*/ -int mem_neq(const void *a, const void *b, size_t len) -{ - unsigned char ret = 0; - const unsigned char* pa; - const unsigned char* pb; - - LTC_ARGCHK(a != NULL); - LTC_ARGCHK(b != NULL); - - pa = a; - pb = b; - - while (len-- > 0) { - ret |= *pa ^ *pb; - ++pa; - ++pb; - } - - ret |= ret >> 4; - ret |= ret >> 2; - ret |= ret >> 1; - ret &= 1; - - return ret; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/pk_get_oid.c b/src/libtomcrypt/src/misc/pk_get_oid.c deleted file mode 100644 index 01741f1883..0000000000 --- a/src/libtomcrypt/src/misc/pk_get_oid.c +++ /dev/null @@ -1,44 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#ifdef LTC_DER -static const oid_st rsa_oid = { - { 1, 2, 840, 113549, 1, 1, 1 }, - 7, -}; - -static const oid_st dsa_oid = { - { 1, 2, 840, 10040, 4, 1 }, - 6, -}; - -/* - Returns the OID of the public key algorithm. - @return CRYPT_OK if valid -*/ -int pk_get_oid(int pk, oid_st *st) -{ - switch (pk) { - case PKA_RSA: - XMEMCPY(st, &rsa_oid, sizeof(*st)); - break; - case PKA_DSA: - XMEMCPY(st, &dsa_oid, sizeof(*st)); - break; - default: - return CRYPT_INVALID_ARG; - } - return CRYPT_OK; -} -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/pkcs5/pkcs_5_1.c b/src/libtomcrypt/src/misc/pkcs5/pkcs_5_1.c deleted file mode 100644 index d8ea4cefd7..0000000000 --- a/src/libtomcrypt/src/misc/pkcs5/pkcs_5_1.c +++ /dev/null @@ -1,187 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pkcs_5_1.c - PKCS #5, Algorithm #1, Tom St Denis -*/ -#ifdef LTC_PKCS_5 -/** - Execute PKCS #5 v1 in strict or OpenSSL EVP_BytesToKey()-compat mode. - - PKCS#5 v1 specifies that the output key length can be no larger than - the hash output length. OpenSSL unilaterally extended that by repeating - the hash process on a block-by-block basis for as long as needed to make - bigger keys. If you want to be compatible with KDF for e.g. "openssl enc", - you'll want that. - - If you want strict PKCS behavior, turn openssl_compat off. Or (more - likely), use one of the convenience functions below. - - @param password The password (or key) - @param password_len The length of the password (octet) - @param salt The salt (or nonce) which is 8 octets long - @param iteration_count The PKCS #5 v1 iteration count - @param hash_idx The index of the hash desired - @param out [out] The destination for this algorithm - @param outlen [in/out] The max size and resulting size of the algorithm output - @param openssl_compat [in] Whether or not to grow the key to the buffer size ala OpenSSL - @return CRYPT_OK if successful -*/ -static int _pkcs_5_alg1_common(const unsigned char *password, - unsigned long password_len, - const unsigned char *salt, - int iteration_count, int hash_idx, - unsigned char *out, unsigned long *outlen, - int openssl_compat) -{ - int err; - unsigned long x; - hash_state *md; - unsigned char *buf; - /* Storage vars in case we need to support > hashsize (OpenSSL compat) */ - unsigned long block = 0, iter; - /* How many bytes to put in the outbut buffer (convenience calc) */ - unsigned long outidx = 0, nb = 0; - - LTC_ARGCHK(password != NULL); - LTC_ARGCHK(salt != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* test hash IDX */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - - /* allocate memory */ - md = XMALLOC(sizeof(hash_state)); - buf = XMALLOC(MAXBLOCKSIZE); - if (md == NULL || buf == NULL) { - if (md != NULL) { - XFREE(md); - } - if (buf != NULL) { - XFREE(buf); - } - return CRYPT_MEM; - } - - while(block * hash_descriptor[hash_idx].hashsize < *outlen) { - - /* hash initial (maybe previous hash) + password + salt */ - if ((err = hash_descriptor[hash_idx].init(md)) != CRYPT_OK) { - goto LBL_ERR; - } - /* in OpenSSL mode, we first hash the previous result for blocks 2-n */ - if (openssl_compat && block) { - if ((err = hash_descriptor[hash_idx].process(md, buf, hash_descriptor[hash_idx].hashsize)) != CRYPT_OK) { - goto LBL_ERR; - } - } - if ((err = hash_descriptor[hash_idx].process(md, password, password_len)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hash_descriptor[hash_idx].process(md, salt, 8)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hash_descriptor[hash_idx].done(md, buf)) != CRYPT_OK) { - goto LBL_ERR; - } - - iter = iteration_count; - while (--iter) { - /* code goes here. */ - x = MAXBLOCKSIZE; - if ((err = hash_memory(hash_idx, buf, hash_descriptor[hash_idx].hashsize, buf, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - } - - /* limit the size of the copy to however many bytes we have left in - the output buffer (and how many bytes we have to copy) */ - outidx = block*hash_descriptor[hash_idx].hashsize; - nb = hash_descriptor[hash_idx].hashsize; - if(outidx+nb > *outlen) - nb = *outlen - outidx; - if(nb > 0) - XMEMCPY(out+outidx, buf, nb); - - block++; - if (!openssl_compat) - break; - } - /* In strict mode, we always return the hashsize, in compat we filled it - as much as was requested, so we leave it alone. */ - if(!openssl_compat) - *outlen = hash_descriptor[hash_idx].hashsize; - - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(buf, MAXBLOCKSIZE); - zeromem(md, sizeof(hash_state)); -#endif - - XFREE(buf); - XFREE(md); - - return err; -} - -/** - Execute PKCS #5 v1 - Strict mode (no OpenSSL-compatible extension) - @param password The password (or key) - @param password_len The length of the password (octet) - @param salt The salt (or nonce) which is 8 octets long - @param iteration_count The PKCS #5 v1 iteration count - @param hash_idx The index of the hash desired - @param out [out] The destination for this algorithm - @param outlen [in/out] The max size and resulting size of the algorithm output - @return CRYPT_OK if successful -*/ -int pkcs_5_alg1(const unsigned char *password, unsigned long password_len, - const unsigned char *salt, - int iteration_count, int hash_idx, - unsigned char *out, unsigned long *outlen) -{ - return _pkcs_5_alg1_common(password, password_len, salt, iteration_count, - hash_idx, out, outlen, 0); -} - -/** - Execute PKCS #5 v1 - OpenSSL-extension-compatible mode - - Use this one if you need to derive keys as "openssl enc" does by default. - OpenSSL (for better or worse), uses MD5 as the hash and iteration_count=1. - @param password The password (or key) - @param password_len The length of the password (octet) - @param salt The salt (or nonce) which is 8 octets long - @param iteration_count The PKCS #5 v1 iteration count - @param hash_idx The index of the hash desired - @param out [out] The destination for this algorithm - @param outlen [in/out] The max size and resulting size of the algorithm output - @return CRYPT_OK if successful -*/ -int pkcs_5_alg1_openssl(const unsigned char *password, - unsigned long password_len, - const unsigned char *salt, - int iteration_count, int hash_idx, - unsigned char *out, unsigned long *outlen) -{ - return _pkcs_5_alg1_common(password, password_len, salt, iteration_count, - hash_idx, out, outlen, 1); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/pkcs5/pkcs_5_2.c b/src/libtomcrypt/src/misc/pkcs5/pkcs_5_2.c deleted file mode 100644 index d0c34730f1..0000000000 --- a/src/libtomcrypt/src/misc/pkcs5/pkcs_5_2.c +++ /dev/null @@ -1,127 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pkcs_5_2.c - PKCS #5, Algorithm #2, Tom St Denis -*/ -#ifdef LTC_PKCS_5 - -/** - Execute PKCS #5 v2 - @param password The input password (or key) - @param password_len The length of the password (octets) - @param salt The salt (or nonce) - @param salt_len The length of the salt (octets) - @param iteration_count # of iterations desired for PKCS #5 v2 [read specs for more] - @param hash_idx The index of the hash desired - @param out [out] The destination for this algorithm - @param outlen [in/out] The max size and resulting size of the algorithm output - @return CRYPT_OK if successful -*/ -int pkcs_5_alg2(const unsigned char *password, unsigned long password_len, - const unsigned char *salt, unsigned long salt_len, - int iteration_count, int hash_idx, - unsigned char *out, unsigned long *outlen) -{ - int err, itts; - ulong32 blkno; - unsigned long stored, left, x, y; - unsigned char *buf[2]; - hmac_state *hmac; - - LTC_ARGCHK(password != NULL); - LTC_ARGCHK(salt != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* test hash IDX */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - - buf[0] = XMALLOC(MAXBLOCKSIZE * 2); - hmac = XMALLOC(sizeof(hmac_state)); - if (hmac == NULL || buf[0] == NULL) { - if (hmac != NULL) { - XFREE(hmac); - } - if (buf[0] != NULL) { - XFREE(buf[0]); - } - return CRYPT_MEM; - } - /* buf[1] points to the second block of MAXBLOCKSIZE bytes */ - buf[1] = buf[0] + MAXBLOCKSIZE; - - left = *outlen; - blkno = 1; - stored = 0; - while (left != 0) { - /* process block number blkno */ - zeromem(buf[0], MAXBLOCKSIZE*2); - - /* store current block number and increment for next pass */ - STORE32H(blkno, buf[1]); - ++blkno; - - /* get PRF(P, S||int(blkno)) */ - if ((err = hmac_init(hmac, hash_idx, password, password_len)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hmac_process(hmac, salt, salt_len)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hmac_process(hmac, buf[1], 4)) != CRYPT_OK) { - goto LBL_ERR; - } - x = MAXBLOCKSIZE; - if ((err = hmac_done(hmac, buf[0], &x)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* now compute repeated and XOR it in buf[1] */ - XMEMCPY(buf[1], buf[0], x); - for (itts = 1; itts < iteration_count; ++itts) { - if ((err = hmac_memory(hash_idx, password, password_len, buf[0], x, buf[0], &x)) != CRYPT_OK) { - goto LBL_ERR; - } - for (y = 0; y < x; y++) { - buf[1][y] ^= buf[0][y]; - } - } - - /* now emit upto x bytes of buf[1] to output */ - for (y = 0; y < x && left != 0; ++y) { - out[stored++] = buf[1][y]; - --left; - } - } - *outlen = stored; - - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(buf[0], MAXBLOCKSIZE*2); - zeromem(hmac, sizeof(hmac_state)); -#endif - - XFREE(hmac); - XFREE(buf[0]); - - return err; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/pkcs5/pkcs_5_test.c b/src/libtomcrypt/src/misc/pkcs5/pkcs_5_test.c deleted file mode 100644 index b913a86493..0000000000 --- a/src/libtomcrypt/src/misc/pkcs5/pkcs_5_test.c +++ /dev/null @@ -1,231 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file hkdf_test.c - PKCS #5 support, self-test, Steffen Jaeckel -*/ - -#ifdef LTC_PKCS_5 - -/* - TEST CASES SOURCE: - -Internet Engineering Task Force (IETF) S. Josefsson -Request for Comments: 6070 SJD AB -Category: Informational January 2011 -ISSN: 2070-1721 -*/ - -/** - PKCS #5 self-test - @return CRYPT_OK if successful, CRYPT_NOP if tests have been disabled. -*/ -int pkcs_5_test (void) -{ - #ifndef LTC_TEST - return CRYPT_NOP; - #else - - typedef struct { - const char* P; - unsigned long P_len; - const char* S; - unsigned long S_len; - int c; - unsigned long dkLen; - unsigned char DK[40]; - } case_item; - - static const case_item cases_5_2[] = { - { - "password", - 8, - "salt", - 4, - 1, - 20, - { 0x0c, 0x60, 0xc8, 0x0f, 0x96, 0x1f, 0x0e, 0x71, - 0xf3, 0xa9, 0xb5, 0x24, 0xaf, 0x60, 0x12, 0x06, - 0x2f, 0xe0, 0x37, 0xa6 } - }, - { - "password", - 8, - "salt", - 4, - 2, - 20, - { 0xea, 0x6c, 0x01, 0x4d, 0xc7, 0x2d, 0x6f, 0x8c, - 0xcd, 0x1e, 0xd9, 0x2a, 0xce, 0x1d, 0x41, 0xf0, - 0xd8, 0xde, 0x89, 0x57 } - }, -#ifdef LTC_TEST_EXT - { - "password", - 8, - "salt", - 4, - 4096, - 20, - { 0x4b, 0x00, 0x79, 0x01, 0xb7, 0x65, 0x48, 0x9a, - 0xbe, 0xad, 0x49, 0xd9, 0x26, 0xf7, 0x21, 0xd0, - 0x65, 0xa4, 0x29, 0xc1 } - }, - { - "password", - 8, - "salt", - 4, - 16777216, - 20, - { 0xee, 0xfe, 0x3d, 0x61, 0xcd, 0x4d, 0xa4, 0xe4, - 0xe9, 0x94, 0x5b, 0x3d, 0x6b, 0xa2, 0x15, 0x8c, - 0x26, 0x34, 0xe9, 0x84 } - }, - { - "passwordPASSWORDpassword", - 25, - "saltSALTsaltSALTsaltSALTsaltSALTsalt", - 36, - 4096, - 25, - { 0x3d, 0x2e, 0xec, 0x4f, 0xe4, 0x1c, 0x84, 0x9b, - 0x80, 0xc8, 0xd8, 0x36, 0x62, 0xc0, 0xe4, 0x4a, - 0x8b, 0x29, 0x1a, 0x96, 0x4c, 0xf2, 0xf0, 0x70, - 0x38 } - }, - { - "pass\0word", - 9, - "sa\0lt", - 5, - 4096, - 16, - { 0x56, 0xfa, 0x6a, 0xa7, 0x55, 0x48, 0x09, 0x9d, - 0xcc, 0x37, 0xd7, 0xf0, 0x34, 0x25, 0xe0, 0xc3 } - }, -#endif /* LTC_TEST_EXT */ - }; - - static const case_item cases_5_1[] = { - { - "password", - 8, - "saltsalt", /* must be 8 octects */ - 8, /* ignored by alg1 */ - 1, - 20, - { 0xca, 0xb8, 0x6d, 0xd6, 0x26, 0x17, 0x10, 0x89, 0x1e, 0x8c, - 0xb5, 0x6e, 0xe3, 0x62, 0x56, 0x91, 0xa7, 0x5d, 0xf3, 0x44 } - }, - }; - - static const case_item cases_5_1o[] = { - { - "password", - 8, - "saltsalt", /* must be 8 octects */ - 8, /* ignored by alg1_openssl */ - 1, - 20, - { 0xca, 0xb8, 0x6d, 0xd6, 0x26, 0x17, 0x10, 0x89, 0x1e, 0x8c, - 0xb5, 0x6e, 0xe3, 0x62, 0x56, 0x91, 0xa7, 0x5d, 0xf3, 0x44 } - - }, - { - "password", - 8, - "saltsalt", /* must be 8 octects */ - 8, /* ignored by alg1_openssl */ - 1, - 30, - { 0xca, 0xb8, 0x6d, 0xd6, 0x26, 0x17, 0x10, 0x89, 0x1e, 0x8c, - 0xb5, 0x6e, 0xe3, 0x62, 0x56, 0x91, 0xa7, 0x5d, 0xf3, 0x44, - 0xf0, 0xbf, 0xf4, 0xc1, 0x2c, 0xf3, 0x59, 0x6f, 0xc0, 0x0b } - - } - }; - - unsigned char DK[40]; - unsigned long dkLen; - int i, err; - int tested=0, failed=0; - int hash = find_hash("sha1"); - if (hash == -1) - { -#ifdef LTC_TEST_DBG - printf("PKCS#5 test failed: 'sha1' hash not found\n"); -#endif - return CRYPT_ERROR; - } - - /* testing alg 2 */ - for(i=0; i < (int)(sizeof(cases_5_2) / sizeof(cases_5_2[0])); i++) { - ++tested; - dkLen = cases_5_2[i].dkLen; - if((err = pkcs_5_alg2((unsigned char*)cases_5_2[i].P, cases_5_2[i].P_len, - (unsigned char*)cases_5_2[i].S, cases_5_2[i].S_len, - cases_5_2[i].c, hash, - DK, &dkLen)) != CRYPT_OK) { -#ifdef LTC_TEST_DBG - printf("\npkcs_5_alg2() #%d: Failed/1 (%s)\n", i, error_to_string(err)); -#endif - ++failed; - } - else if (compare_testvector(DK, dkLen, cases_5_2[i].DK, cases_5_2[i].dkLen, "PKCS#5_2", i)) { - ++failed; - } - } - - /* testing alg 1 */ - for(i=0; i < (int)(sizeof(cases_5_1) / sizeof(case_item)); i++, tested++) { - dkLen = cases_5_1[i].dkLen; - if((err = pkcs_5_alg1((unsigned char*)cases_5_1[i].P, cases_5_1[i].P_len, - (unsigned char*)cases_5_1[i].S, - cases_5_1[i].c, hash, - DK, &dkLen)) != CRYPT_OK) { -#ifdef LTC_TEST_DBG - printf("\npkcs_5_alg1() #%d: Failed/1 (%s)\n", i, error_to_string(err)); -#endif - ++failed; - } - else if (compare_testvector(DK, dkLen, cases_5_1[i].DK, cases_5_1[i].dkLen, "PKCS#5_1", i)) { - ++failed; - } - } - - /* testing alg 1_openssl */ - for(i = 0; i < (int)(sizeof(cases_5_1o) / sizeof(cases_5_1o[0])); i++, tested++) { - dkLen = cases_5_1o[i].dkLen; - if ((err = pkcs_5_alg1_openssl((unsigned char*)cases_5_1o[i].P, cases_5_1o[i].P_len, - (unsigned char*)cases_5_1o[i].S, - cases_5_1o[i].c, hash, - DK, &dkLen)) != CRYPT_OK) { -#ifdef LTC_TEST_DBG - printf("\npkcs_5_alg1_openssl() #%d: Failed/1 (%s)\n", i, error_to_string(err)); -#endif - ++failed; - } - else if (compare_testvector(DK, dkLen, cases_5_1o[i].DK, cases_5_1o[i].dkLen, "PKCS#5_1o", i)) { - ++failed; - } - } - - return (failed != 0) ? CRYPT_FAIL_TESTVECTOR : CRYPT_OK; - #endif -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/misc/zeromem.c b/src/libtomcrypt/src/misc/zeromem.c deleted file mode 100644 index dc81d9b1e2..0000000000 --- a/src/libtomcrypt/src/misc/zeromem.c +++ /dev/null @@ -1,32 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file zeromem.c - Zero a block of memory, Tom St Denis -*/ - -/** - Zero a block of memory - @param out The destination of the area to zero - @param outlen The length of the area to zero (octets) -*/ -void zeromem(volatile void *out, size_t outlen) -{ - volatile char *mem = out; - LTC_ARGCHKVD(out != NULL); - while (outlen-- > 0) { - *mem++ = '\0'; - } -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/cbc/cbc_decrypt.c b/src/libtomcrypt/src/modes/cbc/cbc_decrypt.c deleted file mode 100644 index 685aff80b0..0000000000 --- a/src/libtomcrypt/src/modes/cbc/cbc_decrypt.c +++ /dev/null @@ -1,95 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file cbc_decrypt.c - CBC implementation, encrypt block, Tom St Denis -*/ - - -#ifdef LTC_CBC_MODE - -/** - CBC decrypt - @param ct Ciphertext - @param pt [out] Plaintext - @param len The number of bytes to process (must be multiple of block length) - @param cbc CBC state - @return CRYPT_OK if successful -*/ -int cbc_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CBC *cbc) -{ - int x, err; - unsigned char tmp[16]; -#ifdef LTC_FAST - LTC_FAST_TYPE tmpy; -#else - unsigned char tmpy; -#endif - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(cbc != NULL); - - if ((err = cipher_is_valid(cbc->cipher)) != CRYPT_OK) { - return err; - } - - /* is blocklen valid? */ - if (cbc->blocklen < 1 || cbc->blocklen > (int)sizeof(cbc->IV) || cbc->blocklen > (int)sizeof(tmp)) { - return CRYPT_INVALID_ARG; - } - - if (len % cbc->blocklen) { - return CRYPT_INVALID_ARG; - } -#ifdef LTC_FAST - if (cbc->blocklen % sizeof(LTC_FAST_TYPE)) { - return CRYPT_INVALID_ARG; - } -#endif - - if (cipher_descriptor[cbc->cipher].accel_cbc_decrypt != NULL) { - return cipher_descriptor[cbc->cipher].accel_cbc_decrypt(ct, pt, len / cbc->blocklen, cbc->IV, &cbc->key); - } else { - while (len) { - /* decrypt */ - if ((err = cipher_descriptor[cbc->cipher].ecb_decrypt(ct, tmp, &cbc->key)) != CRYPT_OK) { - return err; - } - - /* xor IV against plaintext */ - #if defined(LTC_FAST) - for (x = 0; x < cbc->blocklen; x += sizeof(LTC_FAST_TYPE)) { - tmpy = *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) ^ *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)tmp + x)); - *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) = *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)ct + x)); - *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pt + x)) = tmpy; - } - #else - for (x = 0; x < cbc->blocklen; x++) { - tmpy = tmp[x] ^ cbc->IV[x]; - cbc->IV[x] = ct[x]; - pt[x] = tmpy; - } - #endif - - ct += cbc->blocklen; - pt += cbc->blocklen; - len -= cbc->blocklen; - } - } - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/cbc/cbc_done.c b/src/libtomcrypt/src/modes/cbc/cbc_done.c deleted file mode 100644 index 92adfa8f15..0000000000 --- a/src/libtomcrypt/src/modes/cbc/cbc_done.c +++ /dev/null @@ -1,40 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file cbc_done.c - CBC implementation, finish chain, Tom St Denis -*/ - -#ifdef LTC_CBC_MODE - -/** Terminate the chain - @param cbc The CBC chain to terminate - @return CRYPT_OK on success -*/ -int cbc_done(symmetric_CBC *cbc) -{ - int err; - LTC_ARGCHK(cbc != NULL); - - if ((err = cipher_is_valid(cbc->cipher)) != CRYPT_OK) { - return err; - } - cipher_descriptor[cbc->cipher].done(&cbc->key); - return CRYPT_OK; -} - - - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/cbc/cbc_encrypt.c b/src/libtomcrypt/src/modes/cbc/cbc_encrypt.c deleted file mode 100644 index 52f339de14..0000000000 --- a/src/libtomcrypt/src/modes/cbc/cbc_encrypt.c +++ /dev/null @@ -1,96 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file cbc_encrypt.c - CBC implementation, encrypt block, Tom St Denis -*/ - - -#ifdef LTC_CBC_MODE - -/** - CBC encrypt - @param pt Plaintext - @param ct [out] Ciphertext - @param len The number of bytes to process (must be multiple of block length) - @param cbc CBC state - @return CRYPT_OK if successful -*/ -int cbc_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CBC *cbc) -{ - int x, err; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(cbc != NULL); - - if ((err = cipher_is_valid(cbc->cipher)) != CRYPT_OK) { - return err; - } - - /* is blocklen valid? */ - if (cbc->blocklen < 1 || cbc->blocklen > (int)sizeof(cbc->IV)) { - return CRYPT_INVALID_ARG; - } - - if (len % cbc->blocklen) { - return CRYPT_INVALID_ARG; - } -#ifdef LTC_FAST - if (cbc->blocklen % sizeof(LTC_FAST_TYPE)) { - return CRYPT_INVALID_ARG; - } -#endif - - if (cipher_descriptor[cbc->cipher].accel_cbc_encrypt != NULL) { - return cipher_descriptor[cbc->cipher].accel_cbc_encrypt(pt, ct, len / cbc->blocklen, cbc->IV, &cbc->key); - } else { - while (len) { - /* xor IV against plaintext */ - #if defined(LTC_FAST) - for (x = 0; x < cbc->blocklen; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) ^= *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pt + x)); - } - #else - for (x = 0; x < cbc->blocklen; x++) { - cbc->IV[x] ^= pt[x]; - } - #endif - - /* encrypt */ - if ((err = cipher_descriptor[cbc->cipher].ecb_encrypt(cbc->IV, ct, &cbc->key)) != CRYPT_OK) { - return err; - } - - /* store IV [ciphertext] for a future block */ - #if defined(LTC_FAST) - for (x = 0; x < cbc->blocklen; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) = *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)ct + x)); - } - #else - for (x = 0; x < cbc->blocklen; x++) { - cbc->IV[x] = ct[x]; - } - #endif - - ct += cbc->blocklen; - pt += cbc->blocklen; - len -= cbc->blocklen; - } - } - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/cbc/cbc_getiv.c b/src/libtomcrypt/src/modes/cbc/cbc_getiv.c deleted file mode 100644 index dab9c2b2bd..0000000000 --- a/src/libtomcrypt/src/modes/cbc/cbc_getiv.c +++ /dev/null @@ -1,44 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file cbc_getiv.c - CBC implementation, get IV, Tom St Denis -*/ - -#ifdef LTC_CBC_MODE - -/** - Get the current initialization vector - @param IV [out] The destination of the initialization vector - @param len [in/out] The max size and resulting size of the initialization vector - @param cbc The CBC state - @return CRYPT_OK if successful -*/ -int cbc_getiv(unsigned char *IV, unsigned long *len, symmetric_CBC *cbc) -{ - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(len != NULL); - LTC_ARGCHK(cbc != NULL); - if ((unsigned long)cbc->blocklen > *len) { - *len = cbc->blocklen; - return CRYPT_BUFFER_OVERFLOW; - } - XMEMCPY(IV, cbc->IV, cbc->blocklen); - *len = cbc->blocklen; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/cbc/cbc_setiv.c b/src/libtomcrypt/src/modes/cbc/cbc_setiv.c deleted file mode 100644 index 826e9bfd5a..0000000000 --- a/src/libtomcrypt/src/modes/cbc/cbc_setiv.c +++ /dev/null @@ -1,42 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file cbc_setiv.c - CBC implementation, set IV, Tom St Denis -*/ - - -#ifdef LTC_CBC_MODE - -/** - Set an initialization vector - @param IV The initialization vector - @param len The length of the vector (in octets) - @param cbc The CBC state - @return CRYPT_OK if successful -*/ -int cbc_setiv(const unsigned char *IV, unsigned long len, symmetric_CBC *cbc) -{ - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(cbc != NULL); - if (len != (unsigned long)cbc->blocklen) { - return CRYPT_INVALID_ARG; - } - XMEMCPY(cbc->IV, IV, len); - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/cbc/cbc_start.c b/src/libtomcrypt/src/modes/cbc/cbc_start.c deleted file mode 100644 index 08483e2b8f..0000000000 --- a/src/libtomcrypt/src/modes/cbc/cbc_start.c +++ /dev/null @@ -1,60 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file cbc_start.c - CBC implementation, start chain, Tom St Denis -*/ - -#ifdef LTC_CBC_MODE - -/** - Initialize a CBC context - @param cipher The index of the cipher desired - @param IV The initialization vector - @param key The secret key - @param keylen The length of the secret key (octets) - @param num_rounds Number of rounds in the cipher desired (0 for default) - @param cbc The CBC state to initialize - @return CRYPT_OK if successful -*/ -int cbc_start(int cipher, const unsigned char *IV, const unsigned char *key, - int keylen, int num_rounds, symmetric_CBC *cbc) -{ - int x, err; - - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(cbc != NULL); - - /* bad param? */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - - /* setup cipher */ - if ((err = cipher_descriptor[cipher].setup(key, keylen, num_rounds, &cbc->key)) != CRYPT_OK) { - return err; - } - - /* copy IV */ - cbc->blocklen = cipher_descriptor[cipher].block_length; - cbc->cipher = cipher; - for (x = 0; x < cbc->blocklen; x++) { - cbc->IV[x] = IV[x]; - } - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/cfb/cfb_decrypt.c b/src/libtomcrypt/src/modes/cfb/cfb_decrypt.c deleted file mode 100644 index 39af766f66..0000000000 --- a/src/libtomcrypt/src/modes/cfb/cfb_decrypt.c +++ /dev/null @@ -1,65 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file cfb_decrypt.c - CFB implementation, decrypt data, Tom St Denis -*/ - -#ifdef LTC_CFB_MODE - -/** - CFB decrypt - @param ct Ciphertext - @param pt [out] Plaintext - @param len Length of ciphertext (octets) - @param cfb CFB state - @return CRYPT_OK if successful -*/ -int cfb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CFB *cfb) -{ - int err; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(cfb != NULL); - - if ((err = cipher_is_valid(cfb->cipher)) != CRYPT_OK) { - return err; - } - - /* is blocklen/padlen valid? */ - if (cfb->blocklen < 0 || cfb->blocklen > (int)sizeof(cfb->IV) || - cfb->padlen < 0 || cfb->padlen > (int)sizeof(cfb->pad)) { - return CRYPT_INVALID_ARG; - } - - while (len-- > 0) { - if (cfb->padlen == cfb->blocklen) { - if ((err = cipher_descriptor[cfb->cipher].ecb_encrypt(cfb->pad, cfb->IV, &cfb->key)) != CRYPT_OK) { - return err; - } - cfb->padlen = 0; - } - cfb->pad[cfb->padlen] = *ct; - *pt = *ct ^ cfb->IV[cfb->padlen]; - ++pt; - ++ct; - ++(cfb->padlen); - } - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/cfb/cfb_done.c b/src/libtomcrypt/src/modes/cfb/cfb_done.c deleted file mode 100644 index 2042b885f9..0000000000 --- a/src/libtomcrypt/src/modes/cfb/cfb_done.c +++ /dev/null @@ -1,40 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file cfb_done.c - CFB implementation, finish chain, Tom St Denis -*/ - -#ifdef LTC_CFB_MODE - -/** Terminate the chain - @param cfb The CFB chain to terminate - @return CRYPT_OK on success -*/ -int cfb_done(symmetric_CFB *cfb) -{ - int err; - LTC_ARGCHK(cfb != NULL); - - if ((err = cipher_is_valid(cfb->cipher)) != CRYPT_OK) { - return err; - } - cipher_descriptor[cfb->cipher].done(&cfb->key); - return CRYPT_OK; -} - - - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/cfb/cfb_encrypt.c b/src/libtomcrypt/src/modes/cfb/cfb_encrypt.c deleted file mode 100644 index 0c011791bb..0000000000 --- a/src/libtomcrypt/src/modes/cfb/cfb_encrypt.c +++ /dev/null @@ -1,63 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file cfb_encrypt.c - CFB implementation, encrypt data, Tom St Denis -*/ - -#ifdef LTC_CFB_MODE - -/** - CFB encrypt - @param pt Plaintext - @param ct [out] Ciphertext - @param len Length of plaintext (octets) - @param cfb CFB state - @return CRYPT_OK if successful -*/ -int cfb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CFB *cfb) -{ - int err; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(cfb != NULL); - - if ((err = cipher_is_valid(cfb->cipher)) != CRYPT_OK) { - return err; - } - - /* is blocklen/padlen valid? */ - if (cfb->blocklen < 0 || cfb->blocklen > (int)sizeof(cfb->IV) || - cfb->padlen < 0 || cfb->padlen > (int)sizeof(cfb->pad)) { - return CRYPT_INVALID_ARG; - } - - while (len-- > 0) { - if (cfb->padlen == cfb->blocklen) { - if ((err = cipher_descriptor[cfb->cipher].ecb_encrypt(cfb->pad, cfb->IV, &cfb->key)) != CRYPT_OK) { - return err; - } - cfb->padlen = 0; - } - cfb->pad[cfb->padlen] = (*ct = *pt ^ cfb->IV[cfb->padlen]); - ++pt; - ++ct; - ++(cfb->padlen); - } - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/cfb/cfb_getiv.c b/src/libtomcrypt/src/modes/cfb/cfb_getiv.c deleted file mode 100644 index e01170b53e..0000000000 --- a/src/libtomcrypt/src/modes/cfb/cfb_getiv.c +++ /dev/null @@ -1,44 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file cfb_getiv.c - CFB implementation, get IV, Tom St Denis -*/ - -#ifdef LTC_CFB_MODE - -/** - Get the current initialization vector - @param IV [out] The destination of the initialization vector - @param len [in/out] The max size and resulting size of the initialization vector - @param cfb The CFB state - @return CRYPT_OK if successful -*/ -int cfb_getiv(unsigned char *IV, unsigned long *len, symmetric_CFB *cfb) -{ - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(len != NULL); - LTC_ARGCHK(cfb != NULL); - if ((unsigned long)cfb->blocklen > *len) { - *len = cfb->blocklen; - return CRYPT_BUFFER_OVERFLOW; - } - XMEMCPY(IV, cfb->IV, cfb->blocklen); - *len = cfb->blocklen; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/cfb/cfb_setiv.c b/src/libtomcrypt/src/modes/cfb/cfb_setiv.c deleted file mode 100644 index b1368efa46..0000000000 --- a/src/libtomcrypt/src/modes/cfb/cfb_setiv.c +++ /dev/null @@ -1,50 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file cfb_setiv.c - CFB implementation, set IV, Tom St Denis -*/ - -#ifdef LTC_CFB_MODE - -/** - Set an initialization vector - @param IV The initialization vector - @param len The length of the vector (in octets) - @param cfb The CFB state - @return CRYPT_OK if successful -*/ -int cfb_setiv(const unsigned char *IV, unsigned long len, symmetric_CFB *cfb) -{ - int err; - - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(cfb != NULL); - - if ((err = cipher_is_valid(cfb->cipher)) != CRYPT_OK) { - return err; - } - - if (len != (unsigned long)cfb->blocklen) { - return CRYPT_INVALID_ARG; - } - - /* force next block */ - cfb->padlen = 0; - return cipher_descriptor[cfb->cipher].ecb_encrypt(IV, cfb->IV, &cfb->key); -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/cfb/cfb_start.c b/src/libtomcrypt/src/modes/cfb/cfb_start.c deleted file mode 100644 index f4d771a407..0000000000 --- a/src/libtomcrypt/src/modes/cfb/cfb_start.c +++ /dev/null @@ -1,63 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file cfb_start.c - CFB implementation, start chain, Tom St Denis -*/ - - -#ifdef LTC_CFB_MODE - -/** - Initialize a CFB context - @param cipher The index of the cipher desired - @param IV The initialization vector - @param key The secret key - @param keylen The length of the secret key (octets) - @param num_rounds Number of rounds in the cipher desired (0 for default) - @param cfb The CFB state to initialize - @return CRYPT_OK if successful -*/ -int cfb_start(int cipher, const unsigned char *IV, const unsigned char *key, - int keylen, int num_rounds, symmetric_CFB *cfb) -{ - int x, err; - - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(cfb != NULL); - - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - - - /* copy data */ - cfb->cipher = cipher; - cfb->blocklen = cipher_descriptor[cipher].block_length; - for (x = 0; x < cfb->blocklen; x++) - cfb->IV[x] = IV[x]; - - /* init the cipher */ - if ((err = cipher_descriptor[cipher].setup(key, keylen, num_rounds, &cfb->key)) != CRYPT_OK) { - return err; - } - - /* encrypt the IV */ - cfb->padlen = 0; - return cipher_descriptor[cfb->cipher].ecb_encrypt(cfb->IV, cfb->IV, &cfb->key); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ctr/ctr_decrypt.c b/src/libtomcrypt/src/modes/ctr/ctr_decrypt.c deleted file mode 100644 index 7f3fed4605..0000000000 --- a/src/libtomcrypt/src/modes/ctr/ctr_decrypt.c +++ /dev/null @@ -1,40 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ctr_decrypt.c - CTR implementation, decrypt data, Tom St Denis -*/ - -#ifdef LTC_CTR_MODE - -/** - CTR decrypt - @param ct Ciphertext - @param pt [out] Plaintext - @param len Length of ciphertext (octets) - @param ctr CTR state - @return CRYPT_OK if successful -*/ -int ctr_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CTR *ctr) -{ - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(ctr != NULL); - - return ctr_encrypt(ct, pt, len, ctr); -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ctr/ctr_done.c b/src/libtomcrypt/src/modes/ctr/ctr_done.c deleted file mode 100644 index c8b31388ee..0000000000 --- a/src/libtomcrypt/src/modes/ctr/ctr_done.c +++ /dev/null @@ -1,40 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ctr_done.c - CTR implementation, finish chain, Tom St Denis -*/ - -#ifdef LTC_CTR_MODE - -/** Terminate the chain - @param ctr The CTR chain to terminate - @return CRYPT_OK on success -*/ -int ctr_done(symmetric_CTR *ctr) -{ - int err; - LTC_ARGCHK(ctr != NULL); - - if ((err = cipher_is_valid(ctr->cipher)) != CRYPT_OK) { - return err; - } - cipher_descriptor[ctr->cipher].done(&ctr->key); - return CRYPT_OK; -} - - - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ctr/ctr_encrypt.c b/src/libtomcrypt/src/modes/ctr/ctr_encrypt.c deleted file mode 100644 index 5d3dbda47b..0000000000 --- a/src/libtomcrypt/src/modes/ctr/ctr_encrypt.c +++ /dev/null @@ -1,139 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ctr_encrypt.c - CTR implementation, encrypt data, Tom St Denis -*/ - - -#ifdef LTC_CTR_MODE - -/** - CTR encrypt software implementation - @param pt Plaintext - @param ct [out] Ciphertext - @param len Length of plaintext (octets) - @param ctr CTR state - @return CRYPT_OK if successful -*/ -static int _ctr_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CTR *ctr) -{ - int x, err; - - while (len) { - /* is the pad empty? */ - if (ctr->padlen == ctr->blocklen) { - /* increment counter */ - if (ctr->mode == CTR_COUNTER_LITTLE_ENDIAN) { - /* little-endian */ - for (x = 0; x < ctr->ctrlen; x++) { - ctr->ctr[x] = (ctr->ctr[x] + (unsigned char)1) & (unsigned char)255; - if (ctr->ctr[x] != (unsigned char)0) { - break; - } - } - } else { - /* big-endian */ - for (x = ctr->blocklen-1; x >= ctr->ctrlen; x--) { - ctr->ctr[x] = (ctr->ctr[x] + (unsigned char)1) & (unsigned char)255; - if (ctr->ctr[x] != (unsigned char)0) { - break; - } - } - } - - /* encrypt it */ - if ((err = cipher_descriptor[ctr->cipher].ecb_encrypt(ctr->ctr, ctr->pad, &ctr->key)) != CRYPT_OK) { - return err; - } - ctr->padlen = 0; - } -#ifdef LTC_FAST - if ((ctr->padlen == 0) && (len >= (unsigned long)ctr->blocklen)) { - for (x = 0; x < ctr->blocklen; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)ct + x)) = *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pt + x)) ^ - *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)ctr->pad + x)); - } - pt += ctr->blocklen; - ct += ctr->blocklen; - len -= ctr->blocklen; - ctr->padlen = ctr->blocklen; - continue; - } -#endif - *ct++ = *pt++ ^ ctr->pad[ctr->padlen++]; - --len; - } - return CRYPT_OK; -} - -/** - CTR encrypt - @param pt Plaintext - @param ct [out] Ciphertext - @param len Length of plaintext (octets) - @param ctr CTR state - @return CRYPT_OK if successful -*/ -int ctr_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CTR *ctr) -{ - int err, fr; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(ctr != NULL); - - if ((err = cipher_is_valid(ctr->cipher)) != CRYPT_OK) { - return err; - } - - /* is blocklen/padlen valid? */ - if ((ctr->blocklen < 1) || (ctr->blocklen > (int)sizeof(ctr->ctr)) || - (ctr->padlen < 0) || (ctr->padlen > (int)sizeof(ctr->pad))) { - return CRYPT_INVALID_ARG; - } - -#ifdef LTC_FAST - if (ctr->blocklen % sizeof(LTC_FAST_TYPE)) { - return CRYPT_INVALID_ARG; - } -#endif - - /* handle acceleration only if pad is empty, accelerator is present and length is >= a block size */ - if ((cipher_descriptor[ctr->cipher].accel_ctr_encrypt != NULL) && (len >= (unsigned long)ctr->blocklen)) { - if (ctr->padlen < ctr->blocklen) { - fr = ctr->blocklen - ctr->padlen; - if ((err = _ctr_encrypt(pt, ct, fr, ctr)) != CRYPT_OK) { - return err; - } - pt += fr; - ct += fr; - len -= fr; - } - - if (len >= (unsigned long)ctr->blocklen) { - if ((err = cipher_descriptor[ctr->cipher].accel_ctr_encrypt(pt, ct, len/ctr->blocklen, ctr->ctr, ctr->mode, &ctr->key)) != CRYPT_OK) { - return err; - } - pt += (len / ctr->blocklen) * ctr->blocklen; - ct += (len / ctr->blocklen) * ctr->blocklen; - len %= ctr->blocklen; - } - } - - return _ctr_encrypt(pt, ct, len, ctr); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ctr/ctr_getiv.c b/src/libtomcrypt/src/modes/ctr/ctr_getiv.c deleted file mode 100644 index 4f09d56f33..0000000000 --- a/src/libtomcrypt/src/modes/ctr/ctr_getiv.c +++ /dev/null @@ -1,44 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ctr_getiv.c - CTR implementation, get IV, Tom St Denis -*/ - -#ifdef LTC_CTR_MODE - -/** - Get the current initialization vector - @param IV [out] The destination of the initialization vector - @param len [in/out] The max size and resulting size of the initialization vector - @param ctr The CTR state - @return CRYPT_OK if successful -*/ -int ctr_getiv(unsigned char *IV, unsigned long *len, symmetric_CTR *ctr) -{ - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(len != NULL); - LTC_ARGCHK(ctr != NULL); - if ((unsigned long)ctr->blocklen > *len) { - *len = ctr->blocklen; - return CRYPT_BUFFER_OVERFLOW; - } - XMEMCPY(IV, ctr->ctr, ctr->blocklen); - *len = ctr->blocklen; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ctr/ctr_setiv.c b/src/libtomcrypt/src/modes/ctr/ctr_setiv.c deleted file mode 100644 index 2df00ed3c1..0000000000 --- a/src/libtomcrypt/src/modes/ctr/ctr_setiv.c +++ /dev/null @@ -1,54 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ctr_setiv.c - CTR implementation, set IV, Tom St Denis -*/ - -#ifdef LTC_CTR_MODE - -/** - Set an initialization vector - @param IV The initialization vector - @param len The length of the vector (in octets) - @param ctr The CTR state - @return CRYPT_OK if successful -*/ -int ctr_setiv(const unsigned char *IV, unsigned long len, symmetric_CTR *ctr) -{ - int err; - - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(ctr != NULL); - - /* bad param? */ - if ((err = cipher_is_valid(ctr->cipher)) != CRYPT_OK) { - return err; - } - - if (len != (unsigned long)ctr->blocklen) { - return CRYPT_INVALID_ARG; - } - - /* set IV */ - XMEMCPY(ctr->ctr, IV, len); - - /* force next block */ - ctr->padlen = 0; - return cipher_descriptor[ctr->cipher].ecb_encrypt(IV, ctr->pad, &ctr->key); -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ctr/ctr_start.c b/src/libtomcrypt/src/modes/ctr/ctr_start.c deleted file mode 100644 index e61bde454b..0000000000 --- a/src/libtomcrypt/src/modes/ctr/ctr_start.c +++ /dev/null @@ -1,99 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ctr_start.c - CTR implementation, start chain, Tom St Denis -*/ - - -#ifdef LTC_CTR_MODE - -/** - Initialize a CTR context - @param cipher The index of the cipher desired - @param IV The initialization vector - @param key The secret key - @param keylen The length of the secret key (octets) - @param num_rounds Number of rounds in the cipher desired (0 for default) - @param ctr_mode The counter mode (CTR_COUNTER_LITTLE_ENDIAN or CTR_COUNTER_BIG_ENDIAN) - @param ctr The CTR state to initialize - @return CRYPT_OK if successful -*/ -int ctr_start( int cipher, - const unsigned char *IV, - const unsigned char *key, int keylen, - int num_rounds, int ctr_mode, - symmetric_CTR *ctr) -{ - int x, err; - - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ctr != NULL); - - /* bad param? */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - - /* ctrlen == counter width */ - ctr->ctrlen = (ctr_mode & 255) ? (ctr_mode & 255) : cipher_descriptor[cipher].block_length; - if (ctr->ctrlen > cipher_descriptor[cipher].block_length) { - return CRYPT_INVALID_ARG; - } - - if ((ctr_mode & 0x1000) == CTR_COUNTER_BIG_ENDIAN) { - ctr->ctrlen = cipher_descriptor[cipher].block_length - ctr->ctrlen; - } - - /* setup cipher */ - if ((err = cipher_descriptor[cipher].setup(key, keylen, num_rounds, &ctr->key)) != CRYPT_OK) { - return err; - } - - /* copy ctr */ - ctr->blocklen = cipher_descriptor[cipher].block_length; - ctr->cipher = cipher; - ctr->padlen = 0; - ctr->mode = ctr_mode & 0x1000; - for (x = 0; x < ctr->blocklen; x++) { - ctr->ctr[x] = IV[x]; - } - - if (ctr_mode & LTC_CTR_RFC3686) { - /* increment the IV as per RFC 3686 */ - if (ctr->mode == CTR_COUNTER_LITTLE_ENDIAN) { - /* little-endian */ - for (x = 0; x < ctr->ctrlen; x++) { - ctr->ctr[x] = (ctr->ctr[x] + (unsigned char)1) & (unsigned char)255; - if (ctr->ctr[x] != (unsigned char)0) { - break; - } - } - } else { - /* big-endian */ - for (x = ctr->blocklen-1; x >= ctr->ctrlen; x--) { - ctr->ctr[x] = (ctr->ctr[x] + (unsigned char)1) & (unsigned char)255; - if (ctr->ctr[x] != (unsigned char)0) { - break; - } - } - } - } - - return cipher_descriptor[ctr->cipher].ecb_encrypt(ctr->ctr, ctr->pad, &ctr->key); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ctr/ctr_test.c b/src/libtomcrypt/src/modes/ctr/ctr_test.c deleted file mode 100644 index 6b354ab887..0000000000 --- a/src/libtomcrypt/src/modes/ctr/ctr_test.c +++ /dev/null @@ -1,83 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ctr_test.c - CTR implementation, Tests again RFC 3686, Tom St Denis -*/ - -#ifdef LTC_CTR_MODE - -int ctr_test(void) -{ -#ifdef LTC_NO_TEST - return CRYPT_NOP; -#else - static const struct { - int keylen, msglen; - unsigned char key[32], IV[16], pt[64], ct[64]; - } tests[] = { -/* 128-bit key, 16-byte pt */ -{ - 16, 16, - {0xAE,0x68,0x52,0xF8,0x12,0x10,0x67,0xCC,0x4B,0xF7,0xA5,0x76,0x55,0x77,0xF3,0x9E }, - {0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, - {0x53,0x69,0x6E,0x67,0x6C,0x65,0x20,0x62,0x6C,0x6F,0x63,0x6B,0x20,0x6D,0x73,0x67 }, - {0xE4,0x09,0x5D,0x4F,0xB7,0xA7,0xB3,0x79,0x2D,0x61,0x75,0xA3,0x26,0x13,0x11,0xB8 }, -}, - -/* 128-bit key, 36-byte pt */ -{ - 16, 36, - {0x76,0x91,0xBE,0x03,0x5E,0x50,0x20,0xA8,0xAC,0x6E,0x61,0x85,0x29,0xF9,0xA0,0xDC }, - {0x00,0xE0,0x01,0x7B,0x27,0x77,0x7F,0x3F,0x4A,0x17,0x86,0xF0,0x00,0x00,0x00,0x00 }, - {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, - 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, - 0x20,0x21,0x22,0x23}, - {0xC1,0xCF,0x48,0xA8,0x9F,0x2F,0xFD,0xD9,0xCF,0x46,0x52,0xE9,0xEF,0xDB,0x72,0xD7, - 0x45,0x40,0xA4,0x2B,0xDE,0x6D,0x78,0x36,0xD5,0x9A,0x5C,0xEA,0xAE,0xF3,0x10,0x53, - 0x25,0xB2,0x07,0x2F }, -}, -}; - int idx, err, x; - unsigned char buf[64]; - symmetric_CTR ctr; - - /* AES can be under rijndael or aes... try to find it */ - if ((idx = find_cipher("aes")) == -1) { - if ((idx = find_cipher("rijndael")) == -1) { - return CRYPT_NOP; - } - } - - for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - if ((err = ctr_start(idx, tests[x].IV, tests[x].key, tests[x].keylen, 0, CTR_COUNTER_BIG_ENDIAN|LTC_CTR_RFC3686, &ctr)) != CRYPT_OK) { - return err; - } - if ((err = ctr_encrypt(tests[x].pt, buf, tests[x].msglen, &ctr)) != CRYPT_OK) { - return err; - } - ctr_done(&ctr); - if (compare_testvector(buf, tests[x].msglen, tests[x].ct, tests[x].msglen, "CTR", x)) { - return CRYPT_FAIL_TESTVECTOR; - } - } - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - - - diff --git a/src/libtomcrypt/src/modes/ecb/ecb_decrypt.c b/src/libtomcrypt/src/modes/ecb/ecb_decrypt.c deleted file mode 100644 index 42e1b6f456..0000000000 --- a/src/libtomcrypt/src/modes/ecb/ecb_decrypt.c +++ /dev/null @@ -1,59 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ecb_decrypt.c - ECB implementation, decrypt a block, Tom St Denis -*/ - -#ifdef LTC_ECB_MODE - -/** - ECB decrypt - @param ct Ciphertext - @param pt [out] Plaintext - @param len The number of octets to process (must be multiple of the cipher block size) - @param ecb ECB state - @return CRYPT_OK if successful -*/ -int ecb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_ECB *ecb) -{ - int err; - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(ecb != NULL); - if ((err = cipher_is_valid(ecb->cipher)) != CRYPT_OK) { - return err; - } - if (len % cipher_descriptor[ecb->cipher].block_length) { - return CRYPT_INVALID_ARG; - } - - /* check for accel */ - if (cipher_descriptor[ecb->cipher].accel_ecb_decrypt != NULL) { - return cipher_descriptor[ecb->cipher].accel_ecb_decrypt(ct, pt, len / cipher_descriptor[ecb->cipher].block_length, &ecb->key); - } else { - while (len) { - if ((err = cipher_descriptor[ecb->cipher].ecb_decrypt(ct, pt, &ecb->key)) != CRYPT_OK) { - return err; - } - pt += cipher_descriptor[ecb->cipher].block_length; - ct += cipher_descriptor[ecb->cipher].block_length; - len -= cipher_descriptor[ecb->cipher].block_length; - } - } - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ecb/ecb_done.c b/src/libtomcrypt/src/modes/ecb/ecb_done.c deleted file mode 100644 index 070b65d89c..0000000000 --- a/src/libtomcrypt/src/modes/ecb/ecb_done.c +++ /dev/null @@ -1,40 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ecb_done.c - ECB implementation, finish chain, Tom St Denis -*/ - -#ifdef LTC_ECB_MODE - -/** Terminate the chain - @param ecb The ECB chain to terminate - @return CRYPT_OK on success -*/ -int ecb_done(symmetric_ECB *ecb) -{ - int err; - LTC_ARGCHK(ecb != NULL); - - if ((err = cipher_is_valid(ecb->cipher)) != CRYPT_OK) { - return err; - } - cipher_descriptor[ecb->cipher].done(&ecb->key); - return CRYPT_OK; -} - - - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ecb/ecb_encrypt.c b/src/libtomcrypt/src/modes/ecb/ecb_encrypt.c deleted file mode 100644 index 5df6404858..0000000000 --- a/src/libtomcrypt/src/modes/ecb/ecb_encrypt.c +++ /dev/null @@ -1,59 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ecb_encrypt.c - ECB implementation, encrypt a block, Tom St Denis -*/ - -#ifdef LTC_ECB_MODE - -/** - ECB encrypt - @param pt Plaintext - @param ct [out] Ciphertext - @param len The number of octets to process (must be multiple of the cipher block size) - @param ecb ECB state - @return CRYPT_OK if successful -*/ -int ecb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_ECB *ecb) -{ - int err; - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(ecb != NULL); - if ((err = cipher_is_valid(ecb->cipher)) != CRYPT_OK) { - return err; - } - if (len % cipher_descriptor[ecb->cipher].block_length) { - return CRYPT_INVALID_ARG; - } - - /* check for accel */ - if (cipher_descriptor[ecb->cipher].accel_ecb_encrypt != NULL) { - return cipher_descriptor[ecb->cipher].accel_ecb_encrypt(pt, ct, len / cipher_descriptor[ecb->cipher].block_length, &ecb->key); - } else { - while (len) { - if ((err = cipher_descriptor[ecb->cipher].ecb_encrypt(pt, ct, &ecb->key)) != CRYPT_OK) { - return err; - } - pt += cipher_descriptor[ecb->cipher].block_length; - ct += cipher_descriptor[ecb->cipher].block_length; - len -= cipher_descriptor[ecb->cipher].block_length; - } - } - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ecb/ecb_start.c b/src/libtomcrypt/src/modes/ecb/ecb_start.c deleted file mode 100644 index 317c8a9688..0000000000 --- a/src/libtomcrypt/src/modes/ecb/ecb_start.c +++ /dev/null @@ -1,46 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ecb_start.c - ECB implementation, start chain, Tom St Denis -*/ - - -#ifdef LTC_ECB_MODE - -/** - Initialize a ECB context - @param cipher The index of the cipher desired - @param key The secret key - @param keylen The length of the secret key (octets) - @param num_rounds Number of rounds in the cipher desired (0 for default) - @param ecb The ECB state to initialize - @return CRYPT_OK if successful -*/ -int ecb_start(int cipher, const unsigned char *key, int keylen, int num_rounds, symmetric_ECB *ecb) -{ - int err; - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ecb != NULL); - - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - ecb->cipher = cipher; - ecb->blocklen = cipher_descriptor[cipher].block_length; - return cipher_descriptor[cipher].setup(key, keylen, num_rounds, &ecb->key); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/f8/f8_decrypt.c b/src/libtomcrypt/src/modes/f8/f8_decrypt.c deleted file mode 100644 index c3d6862d6a..0000000000 --- a/src/libtomcrypt/src/modes/f8/f8_decrypt.c +++ /dev/null @@ -1,41 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file f8_decrypt.c - F8 implementation, decrypt data, Tom St Denis -*/ - -#ifdef LTC_F8_MODE - -/** - F8 decrypt - @param ct Ciphertext - @param pt [out] Plaintext - @param len Length of ciphertext (octets) - @param f8 F8 state - @return CRYPT_OK if successful -*/ -int f8_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_F8 *f8) -{ - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(f8 != NULL); - return f8_encrypt(ct, pt, len, f8); -} - - -#endif - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/f8/f8_done.c b/src/libtomcrypt/src/modes/f8/f8_done.c deleted file mode 100644 index 21cb608b41..0000000000 --- a/src/libtomcrypt/src/modes/f8/f8_done.c +++ /dev/null @@ -1,40 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file f8_done.c - F8 implementation, finish chain, Tom St Denis -*/ - -#ifdef LTC_F8_MODE - -/** Terminate the chain - @param f8 The F8 chain to terminate - @return CRYPT_OK on success -*/ -int f8_done(symmetric_F8 *f8) -{ - int err; - LTC_ARGCHK(f8 != NULL); - - if ((err = cipher_is_valid(f8->cipher)) != CRYPT_OK) { - return err; - } - cipher_descriptor[f8->cipher].done(&f8->key); - return CRYPT_OK; -} - - - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/f8/f8_encrypt.c b/src/libtomcrypt/src/modes/f8/f8_encrypt.c deleted file mode 100644 index fb559b492e..0000000000 --- a/src/libtomcrypt/src/modes/f8/f8_encrypt.c +++ /dev/null @@ -1,101 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file f8_encrypt.c - F8 implementation, encrypt data, Tom St Denis -*/ - -#ifdef LTC_F8_MODE - -/** - F8 encrypt - @param pt Plaintext - @param ct [out] Ciphertext - @param len Length of plaintext (octets) - @param f8 F8 state - @return CRYPT_OK if successful -*/ -int f8_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_F8 *f8) -{ - int err, x; - unsigned char buf[MAXBLOCKSIZE]; - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(f8 != NULL); - if ((err = cipher_is_valid(f8->cipher)) != CRYPT_OK) { - return err; - } - - /* is blocklen/padlen valid? */ - if (f8->blocklen < 0 || f8->blocklen > (int)sizeof(f8->IV) || - f8->padlen < 0 || f8->padlen > (int)sizeof(f8->IV)) { - return CRYPT_INVALID_ARG; - } - - zeromem(buf, sizeof(buf)); - - /* make sure the pad is empty */ - if (f8->padlen == f8->blocklen) { - /* xor of IV, MIV and blockcnt == what goes into cipher */ - STORE32H(f8->blockcnt, (buf+(f8->blocklen-4))); - ++(f8->blockcnt); - for (x = 0; x < f8->blocklen; x++) { - f8->IV[x] ^= f8->MIV[x] ^ buf[x]; - } - if ((err = cipher_descriptor[f8->cipher].ecb_encrypt(f8->IV, f8->IV, &f8->key)) != CRYPT_OK) { - return err; - } - f8->padlen = 0; - } - -#ifdef LTC_FAST - if (f8->padlen == 0) { - while (len >= (unsigned long)f8->blocklen) { - STORE32H(f8->blockcnt, (buf+(f8->blocklen-4))); - ++(f8->blockcnt); - for (x = 0; x < f8->blocklen; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&ct[x])) = *(LTC_FAST_TYPE_PTR_CAST(&pt[x])) ^ *(LTC_FAST_TYPE_PTR_CAST(&f8->IV[x])); - *(LTC_FAST_TYPE_PTR_CAST(&f8->IV[x])) ^= *(LTC_FAST_TYPE_PTR_CAST(&f8->MIV[x])) ^ *(LTC_FAST_TYPE_PTR_CAST(&buf[x])); - } - if ((err = cipher_descriptor[f8->cipher].ecb_encrypt(f8->IV, f8->IV, &f8->key)) != CRYPT_OK) { - return err; - } - len -= x; - pt += x; - ct += x; - } - } -#endif - - while (len > 0) { - if (f8->padlen == f8->blocklen) { - /* xor of IV, MIV and blockcnt == what goes into cipher */ - STORE32H(f8->blockcnt, (buf+(f8->blocklen-4))); - ++(f8->blockcnt); - for (x = 0; x < f8->blocklen; x++) { - f8->IV[x] ^= f8->MIV[x] ^ buf[x]; - } - if ((err = cipher_descriptor[f8->cipher].ecb_encrypt(f8->IV, f8->IV, &f8->key)) != CRYPT_OK) { - return err; - } - f8->padlen = 0; - } - *ct++ = *pt++ ^ f8->IV[f8->padlen++]; - --len; - } - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/f8/f8_getiv.c b/src/libtomcrypt/src/modes/f8/f8_getiv.c deleted file mode 100644 index aaa5ee015c..0000000000 --- a/src/libtomcrypt/src/modes/f8/f8_getiv.c +++ /dev/null @@ -1,44 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ofb_getiv.c - F8 implementation, get IV, Tom St Denis -*/ - -#ifdef LTC_F8_MODE - -/** - Get the current initialization vector - @param IV [out] The destination of the initialization vector - @param len [in/out] The max size and resulting size of the initialization vector - @param f8 The F8 state - @return CRYPT_OK if successful -*/ -int f8_getiv(unsigned char *IV, unsigned long *len, symmetric_F8 *f8) -{ - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(len != NULL); - LTC_ARGCHK(f8 != NULL); - if ((unsigned long)f8->blocklen > *len) { - *len = f8->blocklen; - return CRYPT_BUFFER_OVERFLOW; - } - XMEMCPY(IV, f8->IV, f8->blocklen); - *len = f8->blocklen; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/f8/f8_setiv.c b/src/libtomcrypt/src/modes/f8/f8_setiv.c deleted file mode 100644 index cfee0d35d4..0000000000 --- a/src/libtomcrypt/src/modes/f8/f8_setiv.c +++ /dev/null @@ -1,50 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file f8_setiv.c - F8 implementation, set IV, Tom St Denis -*/ - -#ifdef LTC_F8_MODE - -/** - Set an initialization vector - @param IV The initialization vector - @param len The length of the vector (in octets) - @param f8 The F8 state - @return CRYPT_OK if successful -*/ -int f8_setiv(const unsigned char *IV, unsigned long len, symmetric_F8 *f8) -{ - int err; - - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(f8 != NULL); - - if ((err = cipher_is_valid(f8->cipher)) != CRYPT_OK) { - return err; - } - - if (len != (unsigned long)f8->blocklen) { - return CRYPT_INVALID_ARG; - } - - /* force next block */ - f8->padlen = 0; - return cipher_descriptor[f8->cipher].ecb_encrypt(IV, f8->IV, &f8->key); -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/f8/f8_start.c b/src/libtomcrypt/src/modes/f8/f8_start.c deleted file mode 100644 index 84ae59153b..0000000000 --- a/src/libtomcrypt/src/modes/f8/f8_start.c +++ /dev/null @@ -1,96 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file f8_start.c - F8 implementation, start chain, Tom St Denis -*/ - - -#ifdef LTC_F8_MODE - -/** - Initialize an F8 context - @param cipher The index of the cipher desired - @param IV The initialization vector - @param key The secret key - @param keylen The length of the secret key (octets) - @param salt_key The salting key for the IV - @param skeylen The length of the salting key (octets) - @param num_rounds Number of rounds in the cipher desired (0 for default) - @param f8 The F8 state to initialize - @return CRYPT_OK if successful -*/ -int f8_start( int cipher, const unsigned char *IV, - const unsigned char *key, int keylen, - const unsigned char *salt_key, int skeylen, - int num_rounds, symmetric_F8 *f8) -{ - int x, err; - unsigned char tkey[MAXBLOCKSIZE]; - - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(salt_key != NULL); - LTC_ARGCHK(f8 != NULL); - - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - -#ifdef LTC_FAST - if (cipher_descriptor[cipher].block_length % sizeof(LTC_FAST_TYPE)) { - return CRYPT_INVALID_ARG; - } -#endif - - /* copy details */ - f8->blockcnt = 0; - f8->cipher = cipher; - f8->blocklen = cipher_descriptor[cipher].block_length; - f8->padlen = f8->blocklen; - - /* now get key ^ salt_key [extend salt_ket with 0x55 as required to match length] */ - zeromem(tkey, sizeof(tkey)); - for (x = 0; x < keylen && x < (int)sizeof(tkey); x++) { - tkey[x] = key[x]; - } - for (x = 0; x < skeylen && x < (int)sizeof(tkey); x++) { - tkey[x] ^= salt_key[x]; - } - for (; x < keylen && x < (int)sizeof(tkey); x++) { - tkey[x] ^= 0x55; - } - - /* now encrypt with tkey[0..keylen-1] the IV and use that as the IV */ - if ((err = cipher_descriptor[cipher].setup(tkey, keylen, num_rounds, &f8->key)) != CRYPT_OK) { - return err; - } - - /* encrypt IV */ - if ((err = cipher_descriptor[f8->cipher].ecb_encrypt(IV, f8->MIV, &f8->key)) != CRYPT_OK) { - cipher_descriptor[f8->cipher].done(&f8->key); - return err; - } - zeromem(tkey, sizeof(tkey)); - zeromem(f8->IV, sizeof(f8->IV)); - - /* terminate this cipher */ - cipher_descriptor[f8->cipher].done(&f8->key); - - /* init the cipher */ - return cipher_descriptor[cipher].setup(key, keylen, num_rounds, &f8->key); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/f8/f8_test_mode.c b/src/libtomcrypt/src/modes/f8/f8_test_mode.c deleted file mode 100644 index 42d7233bdd..0000000000 --- a/src/libtomcrypt/src/modes/f8/f8_test_mode.c +++ /dev/null @@ -1,74 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file f8_test_mode.c - F8 implementation, test, Tom St Denis -*/ - - -#ifdef LTC_F8_MODE - -int f8_test_mode(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const unsigned char key[16] = { 0x23, 0x48, 0x29, 0x00, 0x84, 0x67, 0xbe, 0x18, - 0x6c, 0x3d, 0xe1, 0x4a, 0xae, 0x72, 0xd6, 0x2c }; - static const unsigned char salt[4] = { 0x32, 0xf2, 0x87, 0x0d }; - static const unsigned char IV[16] = { 0x00, 0x6e, 0x5c, 0xba, 0x50, 0x68, 0x1d, 0xe5, - 0x5c, 0x62, 0x15, 0x99, 0xd4, 0x62, 0x56, 0x4a }; - static const unsigned char pt[39] = { 0x70, 0x73, 0x65, 0x75, 0x64, 0x6f, 0x72, 0x61, - 0x6e, 0x64, 0x6f, 0x6d, 0x6e, 0x65, 0x73, 0x73, - 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x6e, 0x65, 0x78, 0x74, 0x20, 0x62, 0x65, 0x73, - 0x74, 0x20, 0x74, 0x68, 0x69, 0x6e, 0x67 }; - static const unsigned char ct[39] = { 0x01, 0x9c, 0xe7, 0xa2, 0x6e, 0x78, 0x54, 0x01, - 0x4a, 0x63, 0x66, 0xaa, 0x95, 0xd4, 0xee, 0xfd, - 0x1a, 0xd4, 0x17, 0x2a, 0x14, 0xf9, 0xfa, 0xf4, - 0x55, 0xb7, 0xf1, 0xd4, 0xb6, 0x2b, 0xd0, 0x8f, - 0x56, 0x2c, 0x0e, 0xef, 0x7c, 0x48, 0x02 }; - unsigned char buf[39]; - symmetric_F8 f8; - int err, idx; - - idx = find_cipher("aes"); - if (idx == -1) { - idx = find_cipher("rijndael"); - if (idx == -1) return CRYPT_NOP; - } - - /* initialize the context */ - if ((err = f8_start(idx, IV, key, sizeof(key), salt, sizeof(salt), 0, &f8)) != CRYPT_OK) { - return err; - } - - /* encrypt block */ - if ((err = f8_encrypt(pt, buf, sizeof(pt), &f8)) != CRYPT_OK) { - f8_done(&f8); - return err; - } - f8_done(&f8); - - /* compare */ - if (compare_testvector(buf, sizeof(ct), ct, sizeof(ct), "f8", 0)) { - return CRYPT_FAIL_TESTVECTOR; - } - - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/lrw/lrw_decrypt.c b/src/libtomcrypt/src/modes/lrw/lrw_decrypt.c deleted file mode 100644 index 2db823214b..0000000000 --- a/src/libtomcrypt/src/modes/lrw/lrw_decrypt.c +++ /dev/null @@ -1,49 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file lrw_decrypt.c - LRW_MODE implementation, Decrypt blocks, Tom St Denis -*/ - -#ifdef LTC_LRW_MODE - -/** - LRW decrypt blocks - @param ct The ciphertext - @param pt [out] The plaintext - @param len The length in octets, must be a multiple of 16 - @param lrw The LRW state -*/ -int lrw_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_LRW *lrw) -{ - int err; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(lrw != NULL); - - if ((err = cipher_is_valid(lrw->cipher)) != CRYPT_OK) { - return err; - } - - if (cipher_descriptor[lrw->cipher].accel_lrw_decrypt != NULL) { - return cipher_descriptor[lrw->cipher].accel_lrw_decrypt(ct, pt, len, lrw->IV, lrw->tweak, &lrw->key); - } - - return lrw_process(ct, pt, len, LRW_DECRYPT, lrw); -} - - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/lrw/lrw_done.c b/src/libtomcrypt/src/modes/lrw/lrw_done.c deleted file mode 100644 index 0d58be0767..0000000000 --- a/src/libtomcrypt/src/modes/lrw/lrw_done.c +++ /dev/null @@ -1,40 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file lrw_done.c - LRW_MODE implementation, Free resources, Tom St Denis -*/ - -#ifdef LTC_LRW_MODE - -/** - Terminate a LRW state - @param lrw The state to terminate - @return CRYPT_OK if successful -*/ -int lrw_done(symmetric_LRW *lrw) -{ - int err; - - LTC_ARGCHK(lrw != NULL); - - if ((err = cipher_is_valid(lrw->cipher)) != CRYPT_OK) { - return err; - } - cipher_descriptor[lrw->cipher].done(&lrw->key); - - return CRYPT_OK; -} - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/lrw/lrw_encrypt.c b/src/libtomcrypt/src/modes/lrw/lrw_encrypt.c deleted file mode 100644 index 3104775382..0000000000 --- a/src/libtomcrypt/src/modes/lrw/lrw_encrypt.c +++ /dev/null @@ -1,48 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file lrw_encrypt.c - LRW_MODE implementation, Encrypt blocks, Tom St Denis -*/ - -#ifdef LTC_LRW_MODE - -/** - LRW encrypt blocks - @param pt The plaintext - @param ct [out] The ciphertext - @param len The length in octets, must be a multiple of 16 - @param lrw The LRW state -*/ -int lrw_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_LRW *lrw) -{ - int err; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(lrw != NULL); - - if ((err = cipher_is_valid(lrw->cipher)) != CRYPT_OK) { - return err; - } - - if (cipher_descriptor[lrw->cipher].accel_lrw_encrypt != NULL) { - return cipher_descriptor[lrw->cipher].accel_lrw_encrypt(pt, ct, len, lrw->IV, lrw->tweak, &lrw->key); - } - - return lrw_process(pt, ct, len, LRW_ENCRYPT, lrw); -} - - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/lrw/lrw_getiv.c b/src/libtomcrypt/src/modes/lrw/lrw_getiv.c deleted file mode 100644 index afeb2e8e75..0000000000 --- a/src/libtomcrypt/src/modes/lrw/lrw_getiv.c +++ /dev/null @@ -1,43 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file lrw_getiv.c - LRW_MODE implementation, Retrieve the current IV, Tom St Denis -*/ - -#ifdef LTC_LRW_MODE - -/** - Get the IV for LRW - @param IV [out] The IV, must be 16 octets - @param len Length ... must be at least 16 :-) - @param lrw The LRW state to read - @return CRYPT_OK if successful -*/ -int lrw_getiv(unsigned char *IV, unsigned long *len, symmetric_LRW *lrw) -{ - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(len != NULL); - LTC_ARGCHK(lrw != NULL); - if (*len < 16) { - *len = 16; - return CRYPT_BUFFER_OVERFLOW; - } - - XMEMCPY(IV, lrw->IV, 16); - *len = 16; - return CRYPT_OK; -} - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/lrw/lrw_process.c b/src/libtomcrypt/src/modes/lrw/lrw_process.c deleted file mode 100644 index afe114e963..0000000000 --- a/src/libtomcrypt/src/modes/lrw/lrw_process.c +++ /dev/null @@ -1,118 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file lrw_process.c - LRW_MODE implementation, Encrypt/decrypt blocks, Tom St Denis -*/ - -#ifdef LTC_LRW_MODE - -/** - Process blocks with LRW, since decrypt/encrypt are largely the same they share this code. - @param pt The "input" data - @param ct [out] The "output" data - @param len The length of the input, must be a multiple of 128-bits (16 octets) - @param mode LRW_ENCRYPT or LRW_DECRYPT - @param lrw The LRW state - @return CRYPT_OK if successful -*/ -int lrw_process(const unsigned char *pt, unsigned char *ct, unsigned long len, int mode, symmetric_LRW *lrw) -{ - unsigned char prod[16]; - int x, err; -#ifdef LTC_LRW_TABLES - int y; -#endif - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(lrw != NULL); - - if (len & 15) { - return CRYPT_INVALID_ARG; - } - - while (len) { - /* copy pad */ - XMEMCPY(prod, lrw->pad, 16); - - /* increment IV */ - for (x = 15; x >= 0; x--) { - lrw->IV[x] = (lrw->IV[x] + 1) & 255; - if (lrw->IV[x]) { - break; - } - } - - /* update pad */ -#ifdef LTC_LRW_TABLES - /* for each byte changed we undo it's affect on the pad then add the new product */ - for (; x < 16; x++) { -#ifdef LTC_FAST - for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(lrw->pad + y)) ^= *(LTC_FAST_TYPE_PTR_CAST(&lrw->PC[x][lrw->IV[x]][y])) ^ *(LTC_FAST_TYPE_PTR_CAST(&lrw->PC[x][(lrw->IV[x]-1)&255][y])); - } -#else - for (y = 0; y < 16; y++) { - lrw->pad[y] ^= lrw->PC[x][lrw->IV[x]][y] ^ lrw->PC[x][(lrw->IV[x]-1)&255][y]; - } -#endif - } -#else - gcm_gf_mult(lrw->tweak, lrw->IV, lrw->pad); -#endif - - /* xor prod */ -#ifdef LTC_FAST - for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(ct + x)) = *(LTC_FAST_TYPE_PTR_CAST(pt + x)) ^ *(LTC_FAST_TYPE_PTR_CAST(prod + x)); - } -#else - for (x = 0; x < 16; x++) { - ct[x] = pt[x] ^ prod[x]; - } -#endif - - /* send through cipher */ - if (mode == LRW_ENCRYPT) { - if ((err = cipher_descriptor[lrw->cipher].ecb_encrypt(ct, ct, &lrw->key)) != CRYPT_OK) { - return err; - } - } else { - if ((err = cipher_descriptor[lrw->cipher].ecb_decrypt(ct, ct, &lrw->key)) != CRYPT_OK) { - return err; - } - } - - /* xor prod */ -#ifdef LTC_FAST - for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(ct + x)) = *(LTC_FAST_TYPE_PTR_CAST(ct + x)) ^ *(LTC_FAST_TYPE_PTR_CAST(prod + x)); - } -#else - for (x = 0; x < 16; x++) { - ct[x] = ct[x] ^ prod[x]; - } -#endif - - /* move to next */ - pt += 16; - ct += 16; - len -= 16; - } - - return CRYPT_OK; -} - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/lrw/lrw_setiv.c b/src/libtomcrypt/src/modes/lrw/lrw_setiv.c deleted file mode 100644 index 9cbfe64a50..0000000000 --- a/src/libtomcrypt/src/modes/lrw/lrw_setiv.c +++ /dev/null @@ -1,77 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file lrw_setiv.c - LRW_MODE implementation, Set the current IV, Tom St Denis -*/ - -#ifdef LTC_LRW_MODE - -/** - Set the IV for LRW - @param IV The IV, must be 16 octets - @param len Length ... must be 16 :-) - @param lrw The LRW state to update - @return CRYPT_OK if successful -*/ -int lrw_setiv(const unsigned char *IV, unsigned long len, symmetric_LRW *lrw) -{ - int err; -#ifdef LTC_LRW_TABLES - unsigned char T[16]; - int x, y; -#endif - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(lrw != NULL); - - if (len != 16) { - return CRYPT_INVALID_ARG; - } - - if ((err = cipher_is_valid(lrw->cipher)) != CRYPT_OK) { - return err; - } - - /* copy the IV */ - XMEMCPY(lrw->IV, IV, 16); - - /* check if we have to actually do work */ - if (cipher_descriptor[lrw->cipher].accel_lrw_encrypt != NULL && cipher_descriptor[lrw->cipher].accel_lrw_decrypt != NULL) { - /* we have accelerators, let's bail since they don't use lrw->pad anyways */ - return CRYPT_OK; - } - -#ifdef LTC_LRW_TABLES - XMEMCPY(T, &lrw->PC[0][IV[0]][0], 16); - for (x = 1; x < 16; x++) { -#ifdef LTC_FAST - for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(T + y)) ^= *(LTC_FAST_TYPE_PTR_CAST(&lrw->PC[x][IV[x]][y])); - } -#else - for (y = 0; y < 16; y++) { - T[y] ^= lrw->PC[x][IV[x]][y]; - } -#endif - } - XMEMCPY(lrw->pad, T, 16); -#else - gcm_gf_mult(lrw->tweak, IV, lrw->pad); -#endif - - return CRYPT_OK; -} - - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/lrw/lrw_start.c b/src/libtomcrypt/src/modes/lrw/lrw_start.c deleted file mode 100644 index 6db74ff876..0000000000 --- a/src/libtomcrypt/src/modes/lrw/lrw_start.c +++ /dev/null @@ -1,101 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file lrw_start.c - LRW_MODE implementation, start mode, Tom St Denis -*/ - -#ifdef LTC_LRW_MODE - -/** - Initialize the LRW context - @param cipher The cipher desired, must be a 128-bit block cipher - @param IV The index value, must be 128-bits - @param key The cipher key - @param keylen The length of the cipher key in octets - @param tweak The tweak value (second key), must be 128-bits - @param num_rounds The number of rounds for the cipher (0 == default) - @param lrw [out] The LRW state - @return CRYPT_OK on success. -*/ -int lrw_start( int cipher, - const unsigned char *IV, - const unsigned char *key, int keylen, - const unsigned char *tweak, - int num_rounds, - symmetric_LRW *lrw) -{ - int err; -#ifdef LTC_LRW_TABLES - unsigned char B[16]; - int x, y, z, t; -#endif - - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(tweak != NULL); - LTC_ARGCHK(lrw != NULL); - -#ifdef LTC_FAST - if (16 % sizeof(LTC_FAST_TYPE)) { - return CRYPT_INVALID_ARG; - } -#endif - - /* is cipher valid? */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - if (cipher_descriptor[cipher].block_length != 16) { - return CRYPT_INVALID_CIPHER; - } - - /* schedule key */ - if ((err = cipher_descriptor[cipher].setup(key, keylen, num_rounds, &lrw->key)) != CRYPT_OK) { - return err; - } - lrw->cipher = cipher; - - /* copy the IV and tweak */ - XMEMCPY(lrw->tweak, tweak, 16); - -#ifdef LTC_LRW_TABLES - /* setup tables */ - /* generate the first table as it has no shifting (from which we make the other tables) */ - zeromem(B, 16); - for (y = 0; y < 256; y++) { - B[0] = y; - gcm_gf_mult(tweak, B, &lrw->PC[0][y][0]); - } - - /* now generate the rest of the tables based the previous table */ - for (x = 1; x < 16; x++) { - for (y = 0; y < 256; y++) { - /* now shift it right by 8 bits */ - t = lrw->PC[x-1][y][15]; - for (z = 15; z > 0; z--) { - lrw->PC[x][y][z] = lrw->PC[x-1][y][z-1]; - } - lrw->PC[x][y][0] = gcm_shift_table[t<<1]; - lrw->PC[x][y][1] ^= gcm_shift_table[(t<<1)+1]; - } - } -#endif - - /* generate first pad */ - return lrw_setiv(IV, 16, lrw); -} - - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/lrw/lrw_test.c b/src/libtomcrypt/src/modes/lrw/lrw_test.c deleted file mode 100644 index 28f99468b3..0000000000 --- a/src/libtomcrypt/src/modes/lrw/lrw_test.c +++ /dev/null @@ -1,134 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file lrw_test.c - LRW_MODE implementation, test LRW, Tom St Denis -*/ - -#ifdef LTC_LRW_MODE - -/** - Test LRW against specs - @return CRYPT_OK if goodly -*/ -int lrw_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - static const struct { - unsigned char key[16], tweak[16], IV[16], P[16], expected_tweak[16], C[16]; - } tests[] = { - -{ -{ 0x45, 0x62, 0xac, 0x25, 0xf8, 0x28, 0x17, 0x6d, 0x4c, 0x26, 0x84, 0x14, 0xb5, 0x68, 0x01, 0x85 }, -{ 0x25, 0x8e, 0x2a, 0x05, 0xe7, 0x3e, 0x9d, 0x03, 0xee, 0x5a, 0x83, 0x0c, 0xcc, 0x09, 0x4c, 0x87 }, -{ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, -{ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, -{ 0x25, 0x8e, 0x2a, 0x05, 0xe7, 0x3e, 0x9d, 0x03, 0xee, 0x5a, 0x83, 0x0c, 0xcc, 0x09, 0x4c, 0x87 }, -{ 0xf1, 0xb2, 0x73, 0xcd, 0x65, 0xa3, 0xdf, 0x5f, 0xe9, 0x5d, 0x48, 0x92, 0x54, 0x63, 0x4e, 0xb8 } -}, - -{ -{ 0x59, 0x70, 0x47, 0x14, 0xf5, 0x57, 0x47, 0x8c, 0xd7, 0x79, 0xe8, 0x0f, 0x54, 0x88, 0x79, 0x44 }, -{ 0x35, 0x23, 0xc2, 0xde, 0xc5, 0x69, 0x4f, 0xa8, 0x72, 0xa9, 0xac, 0xa7, 0x0b, 0x2b, 0xee, 0xbc }, -{ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, -{ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, -{ 0x1a, 0x91, 0xe1, 0x6f, 0x62, 0xb4, 0xa7, 0xd4, 0x39, 0x54, 0xd6, 0x53, 0x85, 0x95, 0xf7, 0x5e }, -{ 0x00, 0xc8, 0x2b, 0xae, 0x95, 0xbb, 0xcd, 0xe5, 0x27, 0x4f, 0x07, 0x69, 0xb2, 0x60, 0xe1, 0x36 }, -}, - -{ -{ 0x59, 0x70, 0x47, 0x14, 0xf5, 0x57, 0x47, 0x8c, 0xd7, 0x79, 0xe8, 0x0f, 0x54, 0x88, 0x79, 0x44 }, -{ 0x67, 0x53, 0xc9, 0x0c, 0xb7, 0xd8, 0xcd, 0xe5, 0x06, 0xa0, 0x47, 0x78, 0x1a, 0xad, 0x85, 0x11 }, -{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }, -{ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, -{ 0x1a, 0x91, 0xe1, 0x6f, 0x62, 0xb4, 0xa7, 0xd4, 0x39, 0x54, 0xd6, 0x53, 0x85, 0x95, 0xf7, 0x5e }, -{ 0x00, 0xc8, 0x2b, 0xae, 0x95, 0xbb, 0xcd, 0xe5, 0x27, 0x4f, 0x07, 0x69, 0xb2, 0x60, 0xe1, 0x36 }, -}, - -{ - -{ 0xd8, 0x2a, 0x91, 0x34, 0xb2, 0x6a, 0x56, 0x50, 0x30, 0xfe, 0x69, 0xe2, 0x37, 0x7f, 0x98, 0x47 }, -{ 0x4e, 0xb5, 0x5d, 0x31, 0x05, 0x97, 0x3a, 0x3f, 0x5e, 0x23, 0xda, 0xfb, 0x5a, 0x45, 0xd6, 0xc0 }, -{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 }, -{ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, -{ 0x18, 0xc9, 0x1f, 0x6d, 0x60, 0x1a, 0x1a, 0x37, 0x5d, 0x0b, 0x0e, 0xf7, 0x3a, 0xd5, 0x74, 0xc4 }, -{ 0x76, 0x32, 0x21, 0x83, 0xed, 0x8f, 0xf1, 0x82, 0xf9, 0x59, 0x62, 0x03, 0x69, 0x0e, 0x5e, 0x01 }, - -} -}; - - int idx, err, x; - symmetric_LRW lrw; - unsigned char buf[2][16]; - - idx = find_cipher("aes"); - if (idx == -1) { - idx = find_cipher("rijndael"); - if (idx == -1) { - return CRYPT_NOP; - } - } - - for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { - /* schedule it */ - if ((err = lrw_start(idx, tests[x].IV, tests[x].key, 16, tests[x].tweak, 0, &lrw)) != CRYPT_OK) { - return err; - } - - /* check pad against expected tweak */ - if (compare_testvector(tests[x].expected_tweak, 16, lrw.pad, 16, "LRW Tweak", x)) { - lrw_done(&lrw); - return CRYPT_FAIL_TESTVECTOR; - } - - /* process block */ - if ((err = lrw_encrypt(tests[x].P, buf[0], 16, &lrw)) != CRYPT_OK) { - lrw_done(&lrw); - return err; - } - - if (compare_testvector(buf[0], 16, tests[x].C, 16, "LRW Encrypt", x)) { - lrw_done(&lrw); - return CRYPT_FAIL_TESTVECTOR; - } - - /* process block */ - if ((err = lrw_setiv(tests[x].IV, 16, &lrw)) != CRYPT_OK) { - lrw_done(&lrw); - return err; - } - - if ((err = lrw_decrypt(buf[0], buf[1], 16, &lrw)) != CRYPT_OK) { - lrw_done(&lrw); - return err; - } - - if (compare_testvector(buf[1], 16, tests[x].P, 16, "LRW Decrypt", x)) { - lrw_done(&lrw); - return CRYPT_FAIL_TESTVECTOR; - } - if ((err = lrw_done(&lrw)) != CRYPT_OK) { - return err; - } - } - return CRYPT_OK; -#endif -} - -#endif - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ofb/ofb_decrypt.c b/src/libtomcrypt/src/modes/ofb/ofb_decrypt.c deleted file mode 100644 index 224732a989..0000000000 --- a/src/libtomcrypt/src/modes/ofb/ofb_decrypt.c +++ /dev/null @@ -1,41 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ofb_decrypt.c - OFB implementation, decrypt data, Tom St Denis -*/ - -#ifdef LTC_OFB_MODE - -/** - OFB decrypt - @param ct Ciphertext - @param pt [out] Plaintext - @param len Length of ciphertext (octets) - @param ofb OFB state - @return CRYPT_OK if successful -*/ -int ofb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_OFB *ofb) -{ - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(ofb != NULL); - return ofb_encrypt(ct, pt, len, ofb); -} - - -#endif - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ofb/ofb_done.c b/src/libtomcrypt/src/modes/ofb/ofb_done.c deleted file mode 100644 index 4ff148f84d..0000000000 --- a/src/libtomcrypt/src/modes/ofb/ofb_done.c +++ /dev/null @@ -1,40 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ofb_done.c - OFB implementation, finish chain, Tom St Denis -*/ - -#ifdef LTC_OFB_MODE - -/** Terminate the chain - @param ofb The OFB chain to terminate - @return CRYPT_OK on success -*/ -int ofb_done(symmetric_OFB *ofb) -{ - int err; - LTC_ARGCHK(ofb != NULL); - - if ((err = cipher_is_valid(ofb->cipher)) != CRYPT_OK) { - return err; - } - cipher_descriptor[ofb->cipher].done(&ofb->key); - return CRYPT_OK; -} - - - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ofb/ofb_encrypt.c b/src/libtomcrypt/src/modes/ofb/ofb_encrypt.c deleted file mode 100644 index 285a2c88e3..0000000000 --- a/src/libtomcrypt/src/modes/ofb/ofb_encrypt.c +++ /dev/null @@ -1,58 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ofb_encrypt.c - OFB implementation, encrypt data, Tom St Denis -*/ - -#ifdef LTC_OFB_MODE - -/** - OFB encrypt - @param pt Plaintext - @param ct [out] Ciphertext - @param len Length of plaintext (octets) - @param ofb OFB state - @return CRYPT_OK if successful -*/ -int ofb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_OFB *ofb) -{ - int err; - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(ofb != NULL); - if ((err = cipher_is_valid(ofb->cipher)) != CRYPT_OK) { - return err; - } - - /* is blocklen/padlen valid? */ - if (ofb->blocklen < 0 || ofb->blocklen > (int)sizeof(ofb->IV) || - ofb->padlen < 0 || ofb->padlen > (int)sizeof(ofb->IV)) { - return CRYPT_INVALID_ARG; - } - - while (len-- > 0) { - if (ofb->padlen == ofb->blocklen) { - if ((err = cipher_descriptor[ofb->cipher].ecb_encrypt(ofb->IV, ofb->IV, &ofb->key)) != CRYPT_OK) { - return err; - } - ofb->padlen = 0; - } - *ct++ = *pt++ ^ ofb->IV[(ofb->padlen)++]; - } - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ofb/ofb_getiv.c b/src/libtomcrypt/src/modes/ofb/ofb_getiv.c deleted file mode 100644 index d7c57e34de..0000000000 --- a/src/libtomcrypt/src/modes/ofb/ofb_getiv.c +++ /dev/null @@ -1,44 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ofb_getiv.c - OFB implementation, get IV, Tom St Denis -*/ - -#ifdef LTC_OFB_MODE - -/** - Get the current initialization vector - @param IV [out] The destination of the initialization vector - @param len [in/out] The max size and resulting size of the initialization vector - @param ofb The OFB state - @return CRYPT_OK if successful -*/ -int ofb_getiv(unsigned char *IV, unsigned long *len, symmetric_OFB *ofb) -{ - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(len != NULL); - LTC_ARGCHK(ofb != NULL); - if ((unsigned long)ofb->blocklen > *len) { - *len = ofb->blocklen; - return CRYPT_BUFFER_OVERFLOW; - } - XMEMCPY(IV, ofb->IV, ofb->blocklen); - *len = ofb->blocklen; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ofb/ofb_setiv.c b/src/libtomcrypt/src/modes/ofb/ofb_setiv.c deleted file mode 100644 index fad70c56f3..0000000000 --- a/src/libtomcrypt/src/modes/ofb/ofb_setiv.c +++ /dev/null @@ -1,50 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ofb_setiv.c - OFB implementation, set IV, Tom St Denis -*/ - -#ifdef LTC_OFB_MODE - -/** - Set an initialization vector - @param IV The initialization vector - @param len The length of the vector (in octets) - @param ofb The OFB state - @return CRYPT_OK if successful -*/ -int ofb_setiv(const unsigned char *IV, unsigned long len, symmetric_OFB *ofb) -{ - int err; - - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(ofb != NULL); - - if ((err = cipher_is_valid(ofb->cipher)) != CRYPT_OK) { - return err; - } - - if (len != (unsigned long)ofb->blocklen) { - return CRYPT_INVALID_ARG; - } - - /* force next block */ - ofb->padlen = 0; - return cipher_descriptor[ofb->cipher].ecb_encrypt(IV, ofb->IV, &ofb->key); -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/ofb/ofb_start.c b/src/libtomcrypt/src/modes/ofb/ofb_start.c deleted file mode 100644 index 203e119002..0000000000 --- a/src/libtomcrypt/src/modes/ofb/ofb_start.c +++ /dev/null @@ -1,58 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file ofb_start.c - OFB implementation, start chain, Tom St Denis -*/ - - -#ifdef LTC_OFB_MODE - -/** - Initialize a OFB context - @param cipher The index of the cipher desired - @param IV The initialization vector - @param key The secret key - @param keylen The length of the secret key (octets) - @param num_rounds Number of rounds in the cipher desired (0 for default) - @param ofb The OFB state to initialize - @return CRYPT_OK if successful -*/ -int ofb_start(int cipher, const unsigned char *IV, const unsigned char *key, - int keylen, int num_rounds, symmetric_OFB *ofb) -{ - int x, err; - - LTC_ARGCHK(IV != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ofb != NULL); - - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - - /* copy details */ - ofb->cipher = cipher; - ofb->blocklen = cipher_descriptor[cipher].block_length; - for (x = 0; x < ofb->blocklen; x++) { - ofb->IV[x] = IV[x]; - } - - /* init the cipher */ - ofb->padlen = ofb->blocklen; - return cipher_descriptor[cipher].setup(key, keylen, num_rounds, &ofb->key); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/xts/xts_decrypt.c b/src/libtomcrypt/src/modes/xts/xts_decrypt.c deleted file mode 100644 index 5b35a8150b..0000000000 --- a/src/libtomcrypt/src/modes/xts/xts_decrypt.c +++ /dev/null @@ -1,156 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects - */ - -#ifdef LTC_XTS_MODE - -static int _tweak_uncrypt(const unsigned char *C, unsigned char *P, unsigned char *T, symmetric_xts *xts) -{ - unsigned long x; - int err; - - /* tweak encrypt block i */ -#ifdef LTC_FAST - for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&P[x])) = *(LTC_FAST_TYPE_PTR_CAST(&C[x])) ^ *(LTC_FAST_TYPE_PTR_CAST(&T[x])); - } -#else - for (x = 0; x < 16; x++) { - P[x] = C[x] ^ T[x]; - } -#endif - - err = cipher_descriptor[xts->cipher].ecb_decrypt(P, P, &xts->key1); - -#ifdef LTC_FAST - for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&P[x])) ^= *(LTC_FAST_TYPE_PTR_CAST(&T[x])); - } -#else - for (x = 0; x < 16; x++) { - P[x] = P[x] ^ T[x]; - } -#endif - - /* LFSR the tweak */ - xts_mult_x(T); - - return err; -} - -/** XTS Decryption - @param ct [in] Ciphertext - @param ptlen Length of plaintext (and ciphertext) - @param pt [out] Plaintext - @param tweak [in] The 128--bit encryption tweak (e.g. sector number) - @param xts The XTS structure - Returns CRYPT_OK upon success - */ -int xts_decrypt(const unsigned char *ct, unsigned long ptlen, unsigned char *pt, unsigned char *tweak, - symmetric_xts *xts) -{ - unsigned char PP[16], CC[16], T[16]; - unsigned long i, m, mo, lim; - int err; - - /* check inputs */ - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(tweak != NULL); - LTC_ARGCHK(xts != NULL); - - /* check if valid */ - if ((err = cipher_is_valid(xts->cipher)) != CRYPT_OK) { - return err; - } - - /* get number of blocks */ - m = ptlen >> 4; - mo = ptlen & 15; - - /* must have at least one full block */ - if (m == 0) { - return CRYPT_INVALID_ARG; - } - - if (mo == 0) { - lim = m; - } else { - lim = m - 1; - } - - if (cipher_descriptor[xts->cipher].accel_xts_decrypt && lim > 0) { - - /* use accelerated decryption for whole blocks */ - if ((err = cipher_descriptor[xts->cipher].accel_xts_decrypt(ct, pt, lim, tweak, &xts->key1, &xts->key2)) != - CRYPT_OK) { - return err; - } - ct += lim * 16; - pt += lim * 16; - - /* tweak is encrypted on output */ - XMEMCPY(T, tweak, sizeof(T)); - } else { - /* encrypt the tweak */ - if ((err = cipher_descriptor[xts->cipher].ecb_encrypt(tweak, T, &xts->key2)) != CRYPT_OK) { - return err; - } - - for (i = 0; i < lim; i++) { - if ((err = _tweak_uncrypt(ct, pt, T, xts)) != CRYPT_OK) { - return err; - } - ct += 16; - pt += 16; - } - } - - /* if ptlen not divide 16 then */ - if (mo > 0) { - XMEMCPY(CC, T, 16); - xts_mult_x(CC); - - /* PP = tweak decrypt block m-1 */ - if ((err = _tweak_uncrypt(ct, PP, CC, xts)) != CRYPT_OK) { - return err; - } - - /* Pm = first ptlen % 16 bytes of PP */ - for (i = 0; i < mo; i++) { - CC[i] = ct[16 + i]; - pt[16 + i] = PP[i]; - } - for (; i < 16; i++) { - CC[i] = PP[i]; - } - - /* Pm-1 = Tweak uncrypt CC */ - if ((err = _tweak_uncrypt(CC, pt, T, xts)) != CRYPT_OK) { - return err; - } - } - - /* Decrypt the tweak back */ - if ((err = cipher_descriptor[xts->cipher].ecb_decrypt(T, tweak, &xts->key2)) != CRYPT_OK) { - return err; - } - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/xts/xts_done.c b/src/libtomcrypt/src/modes/xts/xts_done.c deleted file mode 100644 index efc68ac743..0000000000 --- a/src/libtomcrypt/src/modes/xts/xts_done.c +++ /dev/null @@ -1,31 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects -*/ - -#ifdef LTC_XTS_MODE - -/** Terminate XTS state - @param xts The state to terminate -*/ -void xts_done(symmetric_xts *xts) -{ - LTC_ARGCHKVD(xts != NULL); - cipher_descriptor[xts->cipher].done(&xts->key1); - cipher_descriptor[xts->cipher].done(&xts->key2); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/xts/xts_encrypt.c b/src/libtomcrypt/src/modes/xts/xts_encrypt.c deleted file mode 100644 index 63ec71c7e8..0000000000 --- a/src/libtomcrypt/src/modes/xts/xts_encrypt.c +++ /dev/null @@ -1,157 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects - */ - -#ifdef LTC_XTS_MODE - -static int _tweak_crypt(const unsigned char *P, unsigned char *C, unsigned char *T, symmetric_xts *xts) -{ - unsigned long x; - int err; - - /* tweak encrypt block i */ -#ifdef LTC_FAST - for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&C[x])) = *(LTC_FAST_TYPE_PTR_CAST(&P[x])) ^ *(LTC_FAST_TYPE_PTR_CAST(&T[x])); - } -#else - for (x = 0; x < 16; x++) { - C[x] = P[x] ^ T[x]; - } -#endif - - if ((err = cipher_descriptor[xts->cipher].ecb_encrypt(C, C, &xts->key1)) != CRYPT_OK) { - return err; - } - -#ifdef LTC_FAST - for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&C[x])) ^= *(LTC_FAST_TYPE_PTR_CAST(&T[x])); - } -#else - for (x = 0; x < 16; x++) { - C[x] = C[x] ^ T[x]; - } -#endif - - /* LFSR the tweak */ - xts_mult_x(T); - - return CRYPT_OK; -} - -/** XTS Encryption - @param pt [in] Plaintext - @param ptlen Length of plaintext (and ciphertext) - @param ct [out] Ciphertext - @param tweak [in] The 128--bit encryption tweak (e.g. sector number) - @param xts The XTS structure - Returns CRYPT_OK upon success - */ -int xts_encrypt(const unsigned char *pt, unsigned long ptlen, unsigned char *ct, unsigned char *tweak, - symmetric_xts *xts) -{ - unsigned char PP[16], CC[16], T[16]; - unsigned long i, m, mo, lim; - int err; - - /* check inputs */ - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(ct != NULL); - LTC_ARGCHK(tweak != NULL); - LTC_ARGCHK(xts != NULL); - - /* check if valid */ - if ((err = cipher_is_valid(xts->cipher)) != CRYPT_OK) { - return err; - } - - /* get number of blocks */ - m = ptlen >> 4; - mo = ptlen & 15; - - /* must have at least one full block */ - if (m == 0) { - return CRYPT_INVALID_ARG; - } - - if (mo == 0) { - lim = m; - } else { - lim = m - 1; - } - - if (cipher_descriptor[xts->cipher].accel_xts_encrypt && lim > 0) { - - /* use accelerated encryption for whole blocks */ - if ((err = cipher_descriptor[xts->cipher].accel_xts_encrypt(pt, ct, lim, tweak, &xts->key1, &xts->key2)) != - CRYPT_OK) { - return err; - } - ct += lim * 16; - pt += lim * 16; - - /* tweak is encrypted on output */ - XMEMCPY(T, tweak, sizeof(T)); - } else { - - /* encrypt the tweak */ - if ((err = cipher_descriptor[xts->cipher].ecb_encrypt(tweak, T, &xts->key2)) != CRYPT_OK) { - return err; - } - - for (i = 0; i < lim; i++) { - if ((err = _tweak_crypt(pt, ct, T, xts)) != CRYPT_OK) { - return err; - } - ct += 16; - pt += 16; - } - } - - /* if ptlen not divide 16 then */ - if (mo > 0) { - /* CC = tweak encrypt block m-1 */ - if ((err = _tweak_crypt(pt, CC, T, xts)) != CRYPT_OK) { - return err; - } - - /* Cm = first ptlen % 16 bytes of CC */ - for (i = 0; i < mo; i++) { - PP[i] = pt[16 + i]; - ct[16 + i] = CC[i]; - } - - for (; i < 16; i++) { - PP[i] = CC[i]; - } - - /* Cm-1 = Tweak encrypt PP */ - if ((err = _tweak_crypt(PP, ct, T, xts)) != CRYPT_OK) { - return err; - } - } - - /* Decrypt the tweak back */ - if ((err = cipher_descriptor[xts->cipher].ecb_decrypt(T, tweak, &xts->key2)) != CRYPT_OK) { - return err; - } - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/xts/xts_init.c b/src/libtomcrypt/src/modes/xts/xts_init.c deleted file mode 100644 index f1c1caf2e3..0000000000 --- a/src/libtomcrypt/src/modes/xts/xts_init.c +++ /dev/null @@ -1,61 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects -*/ - -#ifdef LTC_XTS_MODE - -/** Start XTS mode - @param cipher The index of the cipher to use - @param key1 The encrypt key - @param key2 The tweak encrypt key - @param keylen The length of the keys (each) in octets - @param num_rounds The number of rounds for the cipher (0 == default) - @param xts [out] XTS structure - Returns CRYPT_OK upon success. -*/ -int xts_start(int cipher, const unsigned char *key1, const unsigned char *key2, unsigned long keylen, int num_rounds, - symmetric_xts *xts) -{ - int err; - - /* check inputs */ - LTC_ARGCHK(key1 != NULL); - LTC_ARGCHK(key2 != NULL); - LTC_ARGCHK(xts != NULL); - - /* check if valid */ - if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { - return err; - } - - if (cipher_descriptor[cipher].block_length != 16) { - return CRYPT_INVALID_ARG; - } - - /* schedule the two ciphers */ - if ((err = cipher_descriptor[cipher].setup(key1, keylen, num_rounds, &xts->key1)) != CRYPT_OK) { - return err; - } - if ((err = cipher_descriptor[cipher].setup(key2, keylen, num_rounds, &xts->key2)) != CRYPT_OK) { - return err; - } - xts->cipher = cipher; - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/xts/xts_mult_x.c b/src/libtomcrypt/src/modes/xts/xts_mult_x.c deleted file mode 100644 index c6245acd91..0000000000 --- a/src/libtomcrypt/src/modes/xts/xts_mult_x.c +++ /dev/null @@ -1,39 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects -*/ - -#ifdef LTC_XTS_MODE - -/** multiply by x - @param I The value to multiply by x (LFSR shift) -*/ -void xts_mult_x(unsigned char *I) -{ - int x; - unsigned char t, tt; - - for (x = t = 0; x < 16; x++) { - tt = I[x] >> 7; - I[x] = ((I[x] << 1) | t) & 0xFF; - t = tt; - } - if (tt) { - I[0] ^= 0x87; - } -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/modes/xts/xts_test.c b/src/libtomcrypt/src/modes/xts/xts_test.c deleted file mode 100644 index b23141c8a8..0000000000 --- a/src/libtomcrypt/src/modes/xts/xts_test.c +++ /dev/null @@ -1,306 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#ifdef LTC_XTS_MODE - -#ifndef LTC_NO_TEST -static int _xts_test_accel_xts_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long blocks, - unsigned char *tweak, symmetric_key *skey1, symmetric_key *skey2) -{ - int ret; - symmetric_xts xts; - int (*orig)(const unsigned char *, unsigned char *, - unsigned long , unsigned char *, symmetric_key *, - symmetric_key *); - - /* AES can be under rijndael or aes... try to find it */ - if ((xts.cipher = find_cipher("aes")) == -1) { - if ((xts.cipher = find_cipher("rijndael")) == -1) { - return CRYPT_NOP; - } - } - orig = cipher_descriptor[xts.cipher].accel_xts_encrypt; - cipher_descriptor[xts.cipher].accel_xts_encrypt = NULL; - - XMEMCPY(&xts.key1, skey1, sizeof(symmetric_key)); - XMEMCPY(&xts.key2, skey2, sizeof(symmetric_key)); - - ret = xts_encrypt(pt, blocks << 4, ct, tweak, &xts); - cipher_descriptor[xts.cipher].accel_xts_encrypt = orig; - - return ret; -} - -static int _xts_test_accel_xts_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long blocks, - unsigned char *tweak, symmetric_key *skey1, symmetric_key *skey2) -{ - int ret; - symmetric_xts xts; - int (*orig)(const unsigned char *, unsigned char *, - unsigned long , unsigned char *, symmetric_key *, - symmetric_key *); - - /* AES can be under rijndael or aes... try to find it */ - if ((xts.cipher = find_cipher("aes")) == -1) { - if ((xts.cipher = find_cipher("rijndael")) == -1) { - return CRYPT_NOP; - } - } - orig = cipher_descriptor[xts.cipher].accel_xts_decrypt; - cipher_descriptor[xts.cipher].accel_xts_decrypt = NULL; - - XMEMCPY(&xts.key1, skey1, sizeof(symmetric_key)); - XMEMCPY(&xts.key2, skey2, sizeof(symmetric_key)); - - ret = xts_decrypt(ct, blocks << 4, pt, tweak, &xts); - cipher_descriptor[xts.cipher].accel_xts_decrypt = orig; - - return ret; -} -#endif - -/** - Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects - - Returns CRYPT_OK upon success. -*/ -int xts_test(void) -{ -#ifdef LTC_NO_TEST - return CRYPT_NOP; -#else - static const struct - { - int keylen; - unsigned char key1[32]; - unsigned char key2[32]; - ulong64 seqnum; - unsigned long PTLEN; - unsigned char PTX[512], CTX[512]; - } tests[] = { - -/* #1 32 byte key, 32 byte PTX */ -{ - 32, - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, - 0, - 32, - { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, - { 0x91,0x7c,0xf6,0x9e,0xbd,0x68,0xb2,0xec,0x9b,0x9f,0xe9,0xa3,0xea,0xdd,0xa6,0x92,0xcd,0x43,0xd2,0xf5,0x95,0x98,0xed,0x85,0x8c,0x02,0xc2,0x65,0x2f,0xbf,0x92,0x2e }, -}, - -/* #2, 32 byte key, 32 byte PTX */ -{ - 32, - { 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11 }, - { 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22 }, - CONST64(0x3333333333), - 32, - { 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44 }, - { 0xc4,0x54,0x18,0x5e,0x6a,0x16,0x93,0x6e,0x39,0x33,0x40,0x38,0xac,0xef,0x83,0x8b,0xfb,0x18,0x6f,0xff,0x74,0x80,0xad,0xc4,0x28,0x93,0x82,0xec,0xd6,0xd3,0x94,0xf0 }, -}, - -/* #5 from xts.7, 32 byte key, 32 byte PTX */ -{ - 32, - { 0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0 }, - { 0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb9,0xb8,0xb7,0xb6,0xb5,0xb4,0xb3,0xb2,0xb1,0xb0 }, - CONST64(0x123456789a), - 32, - { 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44 }, - { 0xb0,0x1f,0x86,0xf8,0xed,0xc1,0x86,0x37,0x06,0xfa,0x8a,0x42,0x53,0xe3,0x4f,0x28,0xaf,0x31,0x9d,0xe3,0x83,0x34,0x87,0x0f,0x4d,0xd1,0xf9,0x4c,0xbe,0x98,0x32,0xf1 }, -}, - -/* #4, 32 byte key, 512 byte PTX */ -{ - 32, - { 0x27,0x18,0x28,0x18,0x28,0x45,0x90,0x45,0x23,0x53,0x60,0x28,0x74,0x71,0x35,0x26 }, - { 0x31,0x41,0x59,0x26,0x53,0x58,0x97,0x93,0x23,0x84,0x62,0x64,0x33,0x83,0x27,0x95 }, - 0, - 512, - { -0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f, -0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, -0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f, -0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f, -0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, -0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf, -0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf, -0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff, -0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f, -0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, -0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f, -0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f, -0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, -0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf, -0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf, -0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff, - }, - { -0x27,0xa7,0x47,0x9b,0xef,0xa1,0xd4,0x76,0x48,0x9f,0x30,0x8c,0xd4,0xcf,0xa6,0xe2,0xa9,0x6e,0x4b,0xbe,0x32,0x08,0xff,0x25,0x28,0x7d,0xd3,0x81,0x96,0x16,0xe8,0x9c, -0xc7,0x8c,0xf7,0xf5,0xe5,0x43,0x44,0x5f,0x83,0x33,0xd8,0xfa,0x7f,0x56,0x00,0x00,0x05,0x27,0x9f,0xa5,0xd8,0xb5,0xe4,0xad,0x40,0xe7,0x36,0xdd,0xb4,0xd3,0x54,0x12, -0x32,0x80,0x63,0xfd,0x2a,0xab,0x53,0xe5,0xea,0x1e,0x0a,0x9f,0x33,0x25,0x00,0xa5,0xdf,0x94,0x87,0xd0,0x7a,0x5c,0x92,0xcc,0x51,0x2c,0x88,0x66,0xc7,0xe8,0x60,0xce, -0x93,0xfd,0xf1,0x66,0xa2,0x49,0x12,0xb4,0x22,0x97,0x61,0x46,0xae,0x20,0xce,0x84,0x6b,0xb7,0xdc,0x9b,0xa9,0x4a,0x76,0x7a,0xae,0xf2,0x0c,0x0d,0x61,0xad,0x02,0x65, -0x5e,0xa9,0x2d,0xc4,0xc4,0xe4,0x1a,0x89,0x52,0xc6,0x51,0xd3,0x31,0x74,0xbe,0x51,0xa1,0x0c,0x42,0x11,0x10,0xe6,0xd8,0x15,0x88,0xed,0xe8,0x21,0x03,0xa2,0x52,0xd8, -0xa7,0x50,0xe8,0x76,0x8d,0xef,0xff,0xed,0x91,0x22,0x81,0x0a,0xae,0xb9,0x9f,0x91,0x72,0xaf,0x82,0xb6,0x04,0xdc,0x4b,0x8e,0x51,0xbc,0xb0,0x82,0x35,0xa6,0xf4,0x34, -0x13,0x32,0xe4,0xca,0x60,0x48,0x2a,0x4b,0xa1,0xa0,0x3b,0x3e,0x65,0x00,0x8f,0xc5,0xda,0x76,0xb7,0x0b,0xf1,0x69,0x0d,0xb4,0xea,0xe2,0x9c,0x5f,0x1b,0xad,0xd0,0x3c, -0x5c,0xcf,0x2a,0x55,0xd7,0x05,0xdd,0xcd,0x86,0xd4,0x49,0x51,0x1c,0xeb,0x7e,0xc3,0x0b,0xf1,0x2b,0x1f,0xa3,0x5b,0x91,0x3f,0x9f,0x74,0x7a,0x8a,0xfd,0x1b,0x13,0x0e, -0x94,0xbf,0xf9,0x4e,0xff,0xd0,0x1a,0x91,0x73,0x5c,0xa1,0x72,0x6a,0xcd,0x0b,0x19,0x7c,0x4e,0x5b,0x03,0x39,0x36,0x97,0xe1,0x26,0x82,0x6f,0xb6,0xbb,0xde,0x8e,0xcc, -0x1e,0x08,0x29,0x85,0x16,0xe2,0xc9,0xed,0x03,0xff,0x3c,0x1b,0x78,0x60,0xf6,0xde,0x76,0xd4,0xce,0xcd,0x94,0xc8,0x11,0x98,0x55,0xef,0x52,0x97,0xca,0x67,0xe9,0xf3, -0xe7,0xff,0x72,0xb1,0xe9,0x97,0x85,0xca,0x0a,0x7e,0x77,0x20,0xc5,0xb3,0x6d,0xc6,0xd7,0x2c,0xac,0x95,0x74,0xc8,0xcb,0xbc,0x2f,0x80,0x1e,0x23,0xe5,0x6f,0xd3,0x44, -0xb0,0x7f,0x22,0x15,0x4b,0xeb,0xa0,0xf0,0x8c,0xe8,0x89,0x1e,0x64,0x3e,0xd9,0x95,0xc9,0x4d,0x9a,0x69,0xc9,0xf1,0xb5,0xf4,0x99,0x02,0x7a,0x78,0x57,0x2a,0xee,0xbd, -0x74,0xd2,0x0c,0xc3,0x98,0x81,0xc2,0x13,0xee,0x77,0x0b,0x10,0x10,0xe4,0xbe,0xa7,0x18,0x84,0x69,0x77,0xae,0x11,0x9f,0x7a,0x02,0x3a,0xb5,0x8c,0xca,0x0a,0xd7,0x52, -0xaf,0xe6,0x56,0xbb,0x3c,0x17,0x25,0x6a,0x9f,0x6e,0x9b,0xf1,0x9f,0xdd,0x5a,0x38,0xfc,0x82,0xbb,0xe8,0x72,0xc5,0x53,0x9e,0xdb,0x60,0x9e,0xf4,0xf7,0x9c,0x20,0x3e, -0xbb,0x14,0x0f,0x2e,0x58,0x3c,0xb2,0xad,0x15,0xb4,0xaa,0x5b,0x65,0x50,0x16,0xa8,0x44,0x92,0x77,0xdb,0xd4,0x77,0xef,0x2c,0x8d,0x6c,0x01,0x7d,0xb7,0x38,0xb1,0x8d, -0xeb,0x4a,0x42,0x7d,0x19,0x23,0xce,0x3f,0xf2,0x62,0x73,0x57,0x79,0xa4,0x18,0xf2,0x0a,0x28,0x2d,0xf9,0x20,0x14,0x7b,0xea,0xbe,0x42,0x1e,0xe5,0x31,0x9d,0x05,0x68, - } -}, - -/* #7, 32 byte key, 17 byte PTX */ -{ - 32, - { 0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0 }, - { 0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb9,0xb8,0xb7,0xb6,0xb5,0xb4,0xb3,0xb2,0xb1,0xb0 }, - CONST64(0x123456789a), - 17, - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10 }, - { 0x6c,0x16,0x25,0xdb,0x46,0x71,0x52,0x2d,0x3d,0x75,0x99,0x60,0x1d,0xe7,0xca,0x09,0xed }, -}, - -/* #15, 32 byte key, 25 byte PTX */ -{ - 32, - { 0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0 }, - { 0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb9,0xb8,0xb7,0xb6,0xb5,0xb4,0xb3,0xb2,0xb1,0xb0 }, - CONST64(0x123456789a), - 25, - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18 }, - { 0x8f,0x4d,0xcb,0xad,0x55,0x55,0x8d,0x7b,0x4e,0x01,0xd9,0x37,0x9c,0xd4,0xea,0x22,0xed,0xbf,0x9d,0xac,0xe4,0x5d,0x6f,0x6a,0x73 }, -}, - -/* #21, 32 byte key, 31 byte PTX */ -{ - 32, - { 0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0 }, - { 0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb9,0xb8,0xb7,0xb6,0xb5,0xb4,0xb3,0xb2,0xb1,0xb0 }, - CONST64(0x123456789a), - 31, - { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e }, - { 0xd0,0x5b,0xc0,0x90,0xa8,0xe0,0x4f,0x1b,0x3d,0x3e,0xcd,0xd5,0xba,0xec,0x0f,0xd4,0xed,0xbf,0x9d,0xac,0xe4,0x5d,0x6f,0x6a,0x73,0x06,0xe6,0x4b,0xe5,0xdd,0x82 }, -}, - -}; - unsigned char OUT[512], Torg[16], T[16]; - ulong64 seq; - symmetric_xts xts; - int i, j, k, err, idx; - unsigned long len; - - /* AES can be under rijndael or aes... try to find it */ - if ((idx = find_cipher("aes")) == -1) { - if ((idx = find_cipher("rijndael")) == -1) { - return CRYPT_NOP; - } - } - for (k = 0; k < 4; ++k) { - cipher_descriptor[idx].accel_xts_encrypt = NULL; - cipher_descriptor[idx].accel_xts_decrypt = NULL; - if (k & 0x1) { - cipher_descriptor[idx].accel_xts_encrypt = _xts_test_accel_xts_encrypt; - } - if (k & 0x2) { - cipher_descriptor[idx].accel_xts_decrypt = _xts_test_accel_xts_decrypt; - } - for (j = 0; j < 2; j++) { - for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { - /* skip the cases where - * the length is smaller than 2*blocklen - * or the length is not a multiple of 32 - */ - if ((j == 1) && ((tests[i].PTLEN < 32) || (tests[i].PTLEN % 32))) { - continue; - } - if ((k > 0) && (j == 1)) { - continue; - } - len = tests[i].PTLEN / 2; - - err = xts_start(idx, tests[i].key1, tests[i].key2, tests[i].keylen / 2, 0, &xts); - if (err != CRYPT_OK) { - return err; - } - - seq = tests[i].seqnum; - STORE64L(seq, Torg); - XMEMSET(Torg + 8, 0, 8); - - XMEMCPY(T, Torg, sizeof(T)); - if (j == 0) { - err = xts_encrypt(tests[i].PTX, tests[i].PTLEN, OUT, T, &xts); - if (err != CRYPT_OK) { - xts_done(&xts); - return err; - } - } else { - err = xts_encrypt(tests[i].PTX, len, OUT, T, &xts); - if (err != CRYPT_OK) { - xts_done(&xts); - return err; - } - err = xts_encrypt(&tests[i].PTX[len], len, &OUT[len], T, &xts); - if (err != CRYPT_OK) { - xts_done(&xts); - return err; - } - } - - if (compare_testvector(OUT, tests[i].PTLEN, tests[i].CTX, tests[i].PTLEN, "XTS encrypt", i)) { - xts_done(&xts); - return CRYPT_FAIL_TESTVECTOR; - } - - XMEMCPY(T, Torg, sizeof(T)); - if (j == 0) { - err = xts_decrypt(tests[i].CTX, tests[i].PTLEN, OUT, T, &xts); - if (err != CRYPT_OK) { - xts_done(&xts); - return err; - } - } else { - err = xts_decrypt(tests[i].CTX, len, OUT, T, &xts); - if (err != CRYPT_OK) { - xts_done(&xts); - return err; - } - err = xts_decrypt(&tests[i].CTX[len], len, &OUT[len], T, &xts); - if (err != CRYPT_OK) { - xts_done(&xts); - return err; - } - } - - if (compare_testvector(OUT, tests[i].PTLEN, tests[i].PTX, tests[i].PTLEN, "XTS decrypt", i)) { - xts_done(&xts); - return CRYPT_FAIL_TESTVECTOR; - } - xts_done(&xts); - } - } - } - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/bit/der_decode_bit_string.c b/src/libtomcrypt/src/pk/asn1/der/bit/der_decode_bit_string.c deleted file mode 100644 index cfd2ab72e8..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/bit/der_decode_bit_string.c +++ /dev/null @@ -1,100 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_decode_bit_string.c - ASN.1 DER, encode a BIT STRING, Tom St Denis -*/ - - -#ifdef LTC_DER - -/** - Store a BIT STRING - @param in The DER encoded BIT STRING - @param inlen The size of the DER BIT STRING - @param out [out] The array of bits stored (one per char) - @param outlen [in/out] The number of bits stored - @return CRYPT_OK if successful -*/ -int der_decode_bit_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - unsigned long dlen, blen, x, y; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* packet must be at least 4 bytes */ - if (inlen < 4) { - return CRYPT_INVALID_ARG; - } - - /* check for 0x03 */ - if ((in[0]&0x1F) != 0x03) { - return CRYPT_INVALID_PACKET; - } - - /* offset in the data */ - x = 1; - - /* get the length of the data */ - if (in[x] & 0x80) { - /* long format get number of length bytes */ - y = in[x++] & 0x7F; - - /* invalid if 0 or > 2 */ - if (y == 0 || y > 2) { - return CRYPT_INVALID_PACKET; - } - - /* read the data len */ - dlen = 0; - while (y--) { - dlen = (dlen << 8) | (unsigned long)in[x++]; - } - } else { - /* short format */ - dlen = in[x++] & 0x7F; - } - - /* is the data len too long or too short? */ - if ((dlen == 0) || (dlen + x > inlen)) { - return CRYPT_INVALID_PACKET; - } - - /* get padding count */ - blen = ((dlen - 1) << 3) - (in[x++] & 7); - - /* too many bits? */ - if (blen > *outlen) { - *outlen = blen; - return CRYPT_BUFFER_OVERFLOW; - } - - /* decode/store the bits */ - for (y = 0; y < blen; y++) { - out[y] = (in[x] & (1 << (7 - (y & 7)))) ? 1 : 0; - if ((y & 7) == 7) { - ++x; - } - } - - /* we done */ - *outlen = blen; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/bit/der_decode_raw_bit_string.c b/src/libtomcrypt/src/pk/asn1/der/bit/der_decode_raw_bit_string.c deleted file mode 100644 index 3149ba854f..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/bit/der_decode_raw_bit_string.c +++ /dev/null @@ -1,107 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_decode_bit_string.c - ASN.1 DER, encode a BIT STRING, Tom St Denis -*/ - - -#ifdef LTC_DER - -#define SETBIT(v, n) (v=((unsigned char)(v) | (1U << (unsigned char)(n)))) -#define CLRBIT(v, n) (v=((unsigned char)(v) & ~(1U << (unsigned char)(n)))) - -/** - Store a BIT STRING - @param in The DER encoded BIT STRING - @param inlen The size of the DER BIT STRING - @param out [out] The array of bits stored (8 per char) - @param outlen [in/out] The number of bits stored - @return CRYPT_OK if successful -*/ -int der_decode_raw_bit_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - unsigned long dlen, blen, x, y; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* packet must be at least 4 bytes */ - if (inlen < 4) { - return CRYPT_INVALID_ARG; - } - - /* check for 0x03 */ - if ((in[0]&0x1F) != 0x03) { - return CRYPT_INVALID_PACKET; - } - - /* offset in the data */ - x = 1; - - /* get the length of the data */ - if (in[x] & 0x80) { - /* long format get number of length bytes */ - y = in[x++] & 0x7F; - - /* invalid if 0 or > 2 */ - if (y == 0 || y > 2) { - return CRYPT_INVALID_PACKET; - } - - /* read the data len */ - dlen = 0; - while (y--) { - dlen = (dlen << 8) | (unsigned long)in[x++]; - } - } else { - /* short format */ - dlen = in[x++] & 0x7F; - } - - /* is the data len too long or too short? */ - if ((dlen == 0) || (dlen + x > inlen)) { - return CRYPT_INVALID_PACKET; - } - - /* get padding count */ - blen = ((dlen - 1) << 3) - (in[x++] & 7); - - /* too many bits? */ - if (blen > *outlen) { - *outlen = blen; - return CRYPT_BUFFER_OVERFLOW; - } - - /* decode/store the bits */ - for (y = 0; y < blen; y++) { - if (in[x] & (1 << (7 - (y & 7)))) { - SETBIT(out[y/8], 7-(y%8)); - } else { - CLRBIT(out[y/8], 7-(y%8)); - } - if ((y & 7) == 7) { - ++x; - } - } - - /* we done */ - *outlen = blen; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/bit/der_encode_bit_string.c b/src/libtomcrypt/src/pk/asn1/der/bit/der_encode_bit_string.c deleted file mode 100644 index 404bb7a50d..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/bit/der_encode_bit_string.c +++ /dev/null @@ -1,87 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_encode_bit_string.c - ASN.1 DER, encode a BIT STRING, Tom St Denis -*/ - - -#ifdef LTC_DER - -/** - Store a BIT STRING - @param in The array of bits to store (one per char) - @param inlen The number of bits tostore - @param out [out] The destination for the DER encoded BIT STRING - @param outlen [in/out] The max size and resulting size of the DER BIT STRING - @return CRYPT_OK if successful -*/ -int der_encode_bit_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - unsigned long len, x, y; - unsigned char buf; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* avoid overflows */ - if ((err = der_length_bit_string(inlen, &len)) != CRYPT_OK) { - return err; - } - - if (len > *outlen) { - *outlen = len; - return CRYPT_BUFFER_OVERFLOW; - } - - /* store header (include bit padding count in length) */ - x = 0; - y = (inlen >> 3) + ((inlen&7) ? 1 : 0) + 1; - - out[x++] = 0x03; - if (y < 128) { - out[x++] = (unsigned char)y; - } else if (y < 256) { - out[x++] = 0x81; - out[x++] = (unsigned char)y; - } else if (y < 65536) { - out[x++] = 0x82; - out[x++] = (unsigned char)((y>>8)&255); - out[x++] = (unsigned char)(y&255); - } - - /* store number of zero padding bits */ - out[x++] = (unsigned char)((8 - inlen) & 7); - - /* store the bits in big endian format */ - for (y = buf = 0; y < inlen; y++) { - buf |= (in[y] ? 1 : 0) << (7 - (y & 7)); - if ((y & 7) == 7) { - out[x++] = buf; - buf = 0; - } - } - /* store last byte */ - if (inlen & 7) { - out[x++] = buf; - } - *outlen = x; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/bit/der_encode_raw_bit_string.c b/src/libtomcrypt/src/pk/asn1/der/bit/der_encode_raw_bit_string.c deleted file mode 100644 index 6189967cd8..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/bit/der_encode_raw_bit_string.c +++ /dev/null @@ -1,90 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_encode_bit_string.c - ASN.1 DER, encode a BIT STRING, Tom St Denis -*/ - - -#ifdef LTC_DER - -#define getbit(n, k) (((n) & ( 1 << (k) )) >> (k)) - -/** - Store a BIT STRING - @param in The array of bits to store (8 per char) - @param inlen The number of bits to store - @param out [out] The destination for the DER encoded BIT STRING - @param outlen [in/out] The max size and resulting size of the DER BIT STRING - @return CRYPT_OK if successful -*/ -int der_encode_raw_bit_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - unsigned long len, x, y; - unsigned char buf; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* avoid overflows */ - if ((err = der_length_bit_string(inlen, &len)) != CRYPT_OK) { - return err; - } - - if (len > *outlen) { - *outlen = len; - return CRYPT_BUFFER_OVERFLOW; - } - - /* store header (include bit padding count in length) */ - x = 0; - y = (inlen >> 3) + ((inlen&7) ? 1 : 0) + 1; - - out[x++] = 0x03; - if (y < 128) { - out[x++] = (unsigned char)y; - } else if (y < 256) { - out[x++] = 0x81; - out[x++] = (unsigned char)y; - } else if (y < 65536) { - out[x++] = 0x82; - out[x++] = (unsigned char)((y>>8)&255); - out[x++] = (unsigned char)(y&255); - } - - /* store number of zero padding bits */ - out[x++] = (unsigned char)((8 - inlen) & 7); - - /* store the bits in big endian format */ - for (y = buf = 0; y < inlen; y++) { - buf |= (getbit(in[y/8],7-y%8)?1:0) << (7 - (y & 7)); - if ((y & 7) == 7) { - out[x++] = buf; - buf = 0; - } - } - /* store last byte */ - if (inlen & 7) { - out[x++] = buf; - } - - *outlen = x; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/bit/der_length_bit_string.c b/src/libtomcrypt/src/pk/asn1/der/bit/der_length_bit_string.c deleted file mode 100644 index 5b88049112..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/bit/der_length_bit_string.c +++ /dev/null @@ -1,52 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_length_bit_string.c - ASN.1 DER, get length of BIT STRING, Tom St Denis -*/ - -#ifdef LTC_DER -/** - Gets length of DER encoding of BIT STRING - @param nbits The number of bits in the string to encode - @param outlen [out] The length of the DER encoding for the given string - @return CRYPT_OK if successful -*/ -int der_length_bit_string(unsigned long nbits, unsigned long *outlen) -{ - unsigned long nbytes; - LTC_ARGCHK(outlen != NULL); - - /* get the number of the bytes */ - nbytes = (nbits >> 3) + ((nbits & 7) ? 1 : 0) + 1; - - if (nbytes < 128) { - /* 03 LL PP DD DD DD ... */ - *outlen = 2 + nbytes; - } else if (nbytes < 256) { - /* 03 81 LL PP DD DD DD ... */ - *outlen = 3 + nbytes; - } else if (nbytes < 65536) { - /* 03 82 LL LL PP DD DD DD ... */ - *outlen = 4 + nbytes; - } else { - return CRYPT_INVALID_ARG; - } - - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/boolean/der_decode_boolean.c b/src/libtomcrypt/src/pk/asn1/der/boolean/der_decode_boolean.c deleted file mode 100644 index 81c5360fb4..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/boolean/der_decode_boolean.c +++ /dev/null @@ -1,45 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_decode_boolean.c - ASN.1 DER, decode a BOOLEAN, Tom St Denis -*/ - - -#ifdef LTC_DER - -/** - Read a BOOLEAN - @param in The destination for the DER encoded BOOLEAN - @param inlen The size of the DER BOOLEAN - @param out [out] The boolean to decode - @return CRYPT_OK if successful -*/ -int der_decode_boolean(const unsigned char *in, unsigned long inlen, - int *out) -{ - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - - if (inlen < 3 || in[0] != 0x01 || in[1] != 0x01 || (in[2] != 0x00 && in[2] != 0xFF)) { - return CRYPT_INVALID_ARG; - } - - *out = (in[2]==0xFF) ? 1 : 0; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/boolean/der_encode_boolean.c b/src/libtomcrypt/src/pk/asn1/der/boolean/der_encode_boolean.c deleted file mode 100644 index bf4d62def0..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/boolean/der_encode_boolean.c +++ /dev/null @@ -1,49 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_encode_boolean.c - ASN.1 DER, encode a BOOLEAN, Tom St Denis -*/ - - -#ifdef LTC_DER - -/** - Store a BOOLEAN - @param in The boolean to encode - @param out [out] The destination for the DER encoded BOOLEAN - @param outlen [in/out] The max size and resulting size of the DER BOOLEAN - @return CRYPT_OK if successful -*/ -int der_encode_boolean(int in, - unsigned char *out, unsigned long *outlen) -{ - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(out != NULL); - - if (*outlen < 3) { - *outlen = 3; - return CRYPT_BUFFER_OVERFLOW; - } - - *outlen = 3; - out[0] = 0x01; - out[1] = 0x01; - out[2] = in ? 0xFF : 0x00; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/boolean/der_length_boolean.c b/src/libtomcrypt/src/pk/asn1/der/boolean/der_length_boolean.c deleted file mode 100644 index 611f36cccc..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/boolean/der_length_boolean.c +++ /dev/null @@ -1,33 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_length_boolean.c - ASN.1 DER, get length of a BOOLEAN, Tom St Denis -*/ - -#ifdef LTC_DER -/** - Gets length of DER encoding of a BOOLEAN - @param outlen [out] The length of the DER encoding - @return CRYPT_OK if successful -*/ -int der_length_boolean(unsigned long *outlen) -{ - LTC_ARGCHK(outlen != NULL); - *outlen = 3; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/choice/der_decode_choice.c b/src/libtomcrypt/src/pk/asn1/der/choice/der_decode_choice.c deleted file mode 100644 index 2a33869ac9..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/choice/der_decode_choice.c +++ /dev/null @@ -1,223 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_decode_choice.c - ASN.1 DER, decode a CHOICE, Tom St Denis -*/ - -#ifdef LTC_DER - -/** - Decode a CHOICE - @param in The DER encoded input - @param inlen [in/out] The size of the input and resulting size of read type - @param list The list of items to decode - @param outlen The number of items in the list - @return CRYPT_OK on success -*/ -int der_decode_choice(const unsigned char *in, unsigned long *inlen, - ltc_asn1_list *list, unsigned long outlen) -{ - unsigned long size, x, z; - void *data; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(inlen != NULL); - LTC_ARGCHK(list != NULL); - - /* get blk size */ - if (*inlen < 2) { - return CRYPT_INVALID_PACKET; - } - - /* set all of the "used" flags to zero */ - for (x = 0; x < outlen; x++) { - list[x].used = 0; - } - - /* now scan until we have a winner */ - for (x = 0; x < outlen; x++) { - size = list[x].size; - data = list[x].data; - - switch (list[x].type) { - case LTC_ASN1_BOOLEAN: - if (der_decode_boolean(in, *inlen, data) == CRYPT_OK) { - if (der_length_boolean(&z) == CRYPT_OK) { - list[x].used = 1; - *inlen = z; - return CRYPT_OK; - } - } - break; - - case LTC_ASN1_INTEGER: - if (der_decode_integer(in, *inlen, data) == CRYPT_OK) { - if (der_length_integer(data, &z) == CRYPT_OK) { - list[x].used = 1; - *inlen = z; - return CRYPT_OK; - } - } - break; - - case LTC_ASN1_SHORT_INTEGER: - if (der_decode_short_integer(in, *inlen, data) == CRYPT_OK) { - if (der_length_short_integer(size, &z) == CRYPT_OK) { - list[x].used = 1; - *inlen = z; - return CRYPT_OK; - } - } - break; - - case LTC_ASN1_BIT_STRING: - if (der_decode_bit_string(in, *inlen, data, &size) == CRYPT_OK) { - if (der_length_bit_string(size, &z) == CRYPT_OK) { - list[x].used = 1; - list[x].size = size; - *inlen = z; - return CRYPT_OK; - } - } - break; - - case LTC_ASN1_RAW_BIT_STRING: - if (der_decode_raw_bit_string(in, *inlen, data, &size) == CRYPT_OK) { - if (der_length_bit_string(size, &z) == CRYPT_OK) { - list[x].used = 1; - list[x].size = size; - *inlen = z; - return CRYPT_OK; - } - } - break; - - case LTC_ASN1_OCTET_STRING: - if (der_decode_octet_string(in, *inlen, data, &size) == CRYPT_OK) { - if (der_length_octet_string(size, &z) == CRYPT_OK) { - list[x].used = 1; - list[x].size = size; - *inlen = z; - return CRYPT_OK; - } - } - break; - - case LTC_ASN1_NULL: - if (*inlen == 2 && in[x] == 0x05 && in[x+1] == 0x00) { - *inlen = 2; - list[x].used = 1; - return CRYPT_OK; - } - break; - - case LTC_ASN1_OBJECT_IDENTIFIER: - if (der_decode_object_identifier(in, *inlen, data, &size) == CRYPT_OK) { - if (der_length_object_identifier(data, size, &z) == CRYPT_OK) { - list[x].used = 1; - list[x].size = size; - *inlen = z; - return CRYPT_OK; - } - } - break; - - case LTC_ASN1_TELETEX_STRING: - if (der_decode_teletex_string(in, *inlen, data, &size) == CRYPT_OK) { - if (der_length_teletex_string(data, size, &z) == CRYPT_OK) { - list[x].used = 1; - list[x].size = size; - *inlen = z; - return CRYPT_OK; - } - } - break; - - case LTC_ASN1_IA5_STRING: - if (der_decode_ia5_string(in, *inlen, data, &size) == CRYPT_OK) { - if (der_length_ia5_string(data, size, &z) == CRYPT_OK) { - list[x].used = 1; - list[x].size = size; - *inlen = z; - return CRYPT_OK; - } - } - break; - - case LTC_ASN1_PRINTABLE_STRING: - if (der_decode_printable_string(in, *inlen, data, &size) == CRYPT_OK) { - if (der_length_printable_string(data, size, &z) == CRYPT_OK) { - list[x].used = 1; - list[x].size = size; - *inlen = z; - return CRYPT_OK; - } - } - break; - - case LTC_ASN1_UTF8_STRING: - if (der_decode_utf8_string(in, *inlen, data, &size) == CRYPT_OK) { - if (der_length_utf8_string(data, size, &z) == CRYPT_OK) { - list[x].used = 1; - list[x].size = size; - *inlen = z; - return CRYPT_OK; - } - } - break; - - case LTC_ASN1_UTCTIME: - z = *inlen; - if (der_decode_utctime(in, &z, data) == CRYPT_OK) { - list[x].used = 1; - *inlen = z; - return CRYPT_OK; - } - break; - - case LTC_ASN1_GENERALIZEDTIME: - z = *inlen; - if (der_decode_generalizedtime(in, &z, data) == CRYPT_OK) { - list[x].used = 1; - *inlen = z; - return CRYPT_OK; - } - break; - - case LTC_ASN1_SET: - case LTC_ASN1_SETOF: - case LTC_ASN1_SEQUENCE: - if (der_decode_sequence(in, *inlen, data, size) == CRYPT_OK) { - if (der_length_sequence(data, size, &z) == CRYPT_OK) { - list[x].used = 1; - *inlen = z; - return CRYPT_OK; - } - } - break; - - case LTC_ASN1_CHOICE: - case LTC_ASN1_CONSTRUCTED: - case LTC_ASN1_CONTEXT_SPECIFIC: - case LTC_ASN1_EOL: - return CRYPT_INVALID_ARG; - } - } - - return CRYPT_INVALID_PACKET; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/generalizedtime/der_decode_generalizedtime.c b/src/libtomcrypt/src/pk/asn1/der/generalizedtime/der_decode_generalizedtime.c deleted file mode 100644 index 600075426d..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/generalizedtime/der_decode_generalizedtime.c +++ /dev/null @@ -1,144 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_decode_generalizedtime.c - ASN.1 DER, decode a GeneralizedTime, Steffen Jaeckel - Based on der_decode_utctime.c -*/ - -#ifdef LTC_DER - -static int _char_to_int(unsigned char x) -{ - switch (x) { - case '0': return 0; - case '1': return 1; - case '2': return 2; - case '3': return 3; - case '4': return 4; - case '5': return 5; - case '6': return 6; - case '7': return 7; - case '8': return 8; - case '9': return 9; - default: return 100; - } -} - -#define DECODE_V(y, max) do {\ - y = _char_to_int(buf[x])*10 + _char_to_int(buf[x+1]); \ - if (y >= max) return CRYPT_INVALID_PACKET; \ - x += 2; \ -} while(0) - -#define DECODE_V4(y, max) do {\ - y = _char_to_int(buf[x])*1000 + _char_to_int(buf[x+1])*100 + _char_to_int(buf[x+2])*10 + _char_to_int(buf[x+3]); \ - if (y >= max) return CRYPT_INVALID_PACKET; \ - x += 4; \ -} while(0) - -/** - Decodes a Generalized time structure in DER format (reads all 6 valid encoding formats) - @param in Input buffer - @param inlen Length of input buffer in octets - @param out [out] Destination of Generalized time structure - @return CRYPT_OK if successful -*/ -int der_decode_generalizedtime(const unsigned char *in, unsigned long *inlen, - ltc_generalizedtime *out) -{ - unsigned char buf[32]; - unsigned long x; - int y; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(inlen != NULL); - LTC_ARGCHK(out != NULL); - - /* check header */ - if (*inlen < 2UL || (in[1] >= sizeof(buf)) || ((in[1] + 2UL) > *inlen)) { - return CRYPT_INVALID_PACKET; - } - - /* decode the string */ - for (x = 0; x < in[1]; x++) { - y = der_ia5_value_decode(in[x+2]); - if (y == -1) { - return CRYPT_INVALID_PACKET; - } - if (!((y >= '0' && y <= '9') - || y == 'Z' || y == '.' - || y == '+' || y == '-')) { - return CRYPT_INVALID_PACKET; - } - buf[x] = y; - } - *inlen = 2 + x; - - if (x < 15) { - return CRYPT_INVALID_PACKET; - } - - /* possible encodings are -YYYYMMDDhhmmssZ -YYYYMMDDhhmmss+hh'mm' -YYYYMMDDhhmmss-hh'mm' -YYYYMMDDhhmmss.fsZ -YYYYMMDDhhmmss.fs+hh'mm' -YYYYMMDDhhmmss.fs-hh'mm' - - So let's do a trivial decode upto [including] ss - */ - - x = 0; - DECODE_V4(out->YYYY, 10000); - DECODE_V(out->MM, 13); - DECODE_V(out->DD, 32); - DECODE_V(out->hh, 24); - DECODE_V(out->mm, 60); - DECODE_V(out->ss, 60); - - /* clear fractional seconds info */ - out->fs = 0; - - /* now is it Z or . */ - if (buf[x] == 'Z') { - return CRYPT_OK; - } else if (buf[x] == '.') { - x++; - while (buf[x] >= '0' && buf[x] <= '9') { - unsigned fs = out->fs; - if (x >= sizeof(buf)) return CRYPT_INVALID_PACKET; - out->fs *= 10; - out->fs += _char_to_int(buf[x]); - if (fs > out->fs) return CRYPT_OVERFLOW; - x++; - } - } - - /* now is it Z, +, - */ - if (buf[x] == 'Z') { - return CRYPT_OK; - } else if (buf[x] == '+' || buf[x] == '-') { - out->off_dir = (buf[x++] == '+') ? 0 : 1; - DECODE_V(out->off_hh, 24); - DECODE_V(out->off_mm, 60); - return CRYPT_OK; - } else { - return CRYPT_INVALID_PACKET; - } -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/generalizedtime/der_encode_generalizedtime.c b/src/libtomcrypt/src/pk/asn1/der/generalizedtime/der_encode_generalizedtime.c deleted file mode 100644 index e6071b493c..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/generalizedtime/der_encode_generalizedtime.c +++ /dev/null @@ -1,108 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_encode_utctime.c - ASN.1 DER, encode a GeneralizedTime, Steffen Jaeckel - Based on der_encode_utctime.c -*/ - -#ifdef LTC_DER - -static const char * const baseten = "0123456789"; - -#define STORE_V(y) do {\ - out[x++] = der_ia5_char_encode(baseten[(y/10) % 10]); \ - out[x++] = der_ia5_char_encode(baseten[y % 10]); \ -} while(0) - -#define STORE_V4(y) do {\ - out[x++] = der_ia5_char_encode(baseten[(y/1000) % 10]); \ - out[x++] = der_ia5_char_encode(baseten[(y/100) % 10]); \ - out[x++] = der_ia5_char_encode(baseten[(y/10) % 10]); \ - out[x++] = der_ia5_char_encode(baseten[y % 10]); \ -} while(0) - -/** - Encodes a Generalized time structure in DER format - @param gtime The GeneralizedTime structure to encode - @param out The destination of the DER encoding of the GeneralizedTime structure - @param outlen [in/out] The length of the DER encoding - @return CRYPT_OK if successful -*/ -int der_encode_generalizedtime(ltc_generalizedtime *gtime, - unsigned char *out, unsigned long *outlen) -{ - unsigned long x, tmplen; - int err; - - LTC_ARGCHK(gtime != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - if ((err = der_length_generalizedtime(gtime, &tmplen)) != CRYPT_OK) { - return err; - } - if (tmplen > *outlen) { - *outlen = tmplen; - return CRYPT_BUFFER_OVERFLOW; - } - - /* store header */ - out[0] = 0x18; - - /* store values */ - x = 2; - STORE_V4(gtime->YYYY); - STORE_V(gtime->MM); - STORE_V(gtime->DD); - STORE_V(gtime->hh); - STORE_V(gtime->mm); - STORE_V(gtime->ss); - - if (gtime->fs) { - unsigned long divisor; - unsigned fs = gtime->fs; - unsigned len = 0; - out[x++] = der_ia5_char_encode('.'); - divisor = 1; - do { - fs /= 10; - divisor *= 10; - len++; - } while(fs != 0); - while (len-- > 1) { - divisor /= 10; - out[x++] = der_ia5_char_encode(baseten[(gtime->fs/divisor) % 10]); - } - out[x++] = der_ia5_char_encode(baseten[gtime->fs % 10]); - } - - if (gtime->off_mm || gtime->off_hh) { - out[x++] = der_ia5_char_encode(gtime->off_dir ? '-' : '+'); - STORE_V(gtime->off_hh); - STORE_V(gtime->off_mm); - } else { - out[x++] = der_ia5_char_encode('Z'); - } - - /* store length */ - out[1] = (unsigned char)(x - 2); - - /* all good let's return */ - *outlen = x; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/generalizedtime/der_length_generalizedtime.c b/src/libtomcrypt/src/pk/asn1/der/generalizedtime/der_length_generalizedtime.c deleted file mode 100644 index 6a57cf7efd..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/generalizedtime/der_length_generalizedtime.c +++ /dev/null @@ -1,58 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_length_utctime.c - ASN.1 DER, get length of GeneralizedTime, Steffen Jaeckel - Based on der_length_utctime.c -*/ - -#ifdef LTC_DER - -/** - Gets length of DER encoding of GeneralizedTime - @param gtime The GeneralizedTime structure to get the size of - @param outlen [out] The length of the DER encoding - @return CRYPT_OK if successful -*/ -int der_length_generalizedtime(ltc_generalizedtime *gtime, unsigned long *outlen) -{ - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(gtime != NULL); - - if (gtime->fs == 0) { - /* we encode as YYYYMMDDhhmmssZ */ - *outlen = 2 + 14 + 1; - } else { - unsigned long len = 2 + 14 + 1; - unsigned fs = gtime->fs; - do { - fs /= 10; - len++; - } while(fs != 0); - if (gtime->off_hh == 0 && gtime->off_mm == 0) { - /* we encode as YYYYMMDDhhmmss.fsZ */ - len += 1; - } - else { - /* we encode as YYYYMMDDhhmmss.fs{+|-}hh'mm' */ - len += 5; - } - *outlen = len; - } - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/ia5/der_decode_ia5_string.c b/src/libtomcrypt/src/pk/asn1/der/ia5/der_decode_ia5_string.c deleted file mode 100644 index 012d9c85f8..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/ia5/der_decode_ia5_string.c +++ /dev/null @@ -1,94 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_decode_ia5_string.c - ASN.1 DER, encode a IA5 STRING, Tom St Denis -*/ - - -#ifdef LTC_DER - -/** - Store a IA5 STRING - @param in The DER encoded IA5 STRING - @param inlen The size of the DER IA5 STRING - @param out [out] The array of octets stored (one per char) - @param outlen [in/out] The number of octets stored - @return CRYPT_OK if successful -*/ -int der_decode_ia5_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - unsigned long x, y, len; - int t; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* must have header at least */ - if (inlen < 2) { - return CRYPT_INVALID_PACKET; - } - - /* check for 0x16 */ - if ((in[0] & 0x1F) != 0x16) { - return CRYPT_INVALID_PACKET; - } - x = 1; - - /* decode the length */ - if (in[x] & 0x80) { - /* valid # of bytes in length are 1,2,3 */ - y = in[x] & 0x7F; - if ((y == 0) || (y > 3) || ((x + y) > inlen)) { - return CRYPT_INVALID_PACKET; - } - - /* read the length in */ - len = 0; - ++x; - while (y--) { - len = (len << 8) | in[x++]; - } - } else { - len = in[x++] & 0x7F; - } - - /* is it too long? */ - if (len > *outlen) { - *outlen = len; - return CRYPT_BUFFER_OVERFLOW; - } - - if (len + x > inlen) { - return CRYPT_INVALID_PACKET; - } - - /* read the data */ - for (y = 0; y < len; y++) { - t = der_ia5_value_decode(in[x++]); - if (t == -1) { - return CRYPT_INVALID_ARG; - } - out[y] = t; - } - - *outlen = y; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/ia5/der_encode_ia5_string.c b/src/libtomcrypt/src/pk/asn1/der/ia5/der_encode_ia5_string.c deleted file mode 100644 index 4bb00386d6..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/ia5/der_encode_ia5_string.c +++ /dev/null @@ -1,83 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_encode_ia5_string.c - ASN.1 DER, encode a IA5 STRING, Tom St Denis -*/ - -#ifdef LTC_DER - -/** - Store an IA5 STRING - @param in The array of IA5 to store (one per char) - @param inlen The number of IA5 to store - @param out [out] The destination for the DER encoded IA5 STRING - @param outlen [in/out] The max size and resulting size of the DER IA5 STRING - @return CRYPT_OK if successful -*/ -int der_encode_ia5_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - unsigned long x, y, len; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* get the size */ - if ((err = der_length_ia5_string(in, inlen, &len)) != CRYPT_OK) { - return err; - } - - /* too big? */ - if (len > *outlen) { - *outlen = len; - return CRYPT_BUFFER_OVERFLOW; - } - - /* encode the header+len */ - x = 0; - out[x++] = 0x16; - if (inlen < 128) { - out[x++] = (unsigned char)inlen; - } else if (inlen < 256) { - out[x++] = 0x81; - out[x++] = (unsigned char)inlen; - } else if (inlen < 65536UL) { - out[x++] = 0x82; - out[x++] = (unsigned char)((inlen>>8)&255); - out[x++] = (unsigned char)(inlen&255); - } else if (inlen < 16777216UL) { - out[x++] = 0x83; - out[x++] = (unsigned char)((inlen>>16)&255); - out[x++] = (unsigned char)((inlen>>8)&255); - out[x++] = (unsigned char)(inlen&255); - } else { - return CRYPT_INVALID_ARG; - } - - /* store octets */ - for (y = 0; y < inlen; y++) { - out[x++] = der_ia5_char_encode(in[y]); - } - - /* retun length */ - *outlen = x; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/ia5/der_length_ia5_string.c b/src/libtomcrypt/src/pk/asn1/der/ia5/der_length_ia5_string.c deleted file mode 100644 index 079e1be607..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/ia5/der_length_ia5_string.c +++ /dev/null @@ -1,192 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_length_ia5_string.c - ASN.1 DER, get length of IA5 STRING, Tom St Denis -*/ - -#ifdef LTC_DER - -static const struct { - int code, value; -} ia5_table[] = { -{ '\0', 0 }, -{ '\a', 7 }, -{ '\b', 8 }, -{ '\t', 9 }, -{ '\n', 10 }, -{ '\f', 12 }, -{ '\r', 13 }, -{ ' ', 32 }, -{ '!', 33 }, -{ '"', 34 }, -{ '#', 35 }, -{ '$', 36 }, -{ '%', 37 }, -{ '&', 38 }, -{ '\'', 39 }, -{ '(', 40 }, -{ ')', 41 }, -{ '*', 42 }, -{ '+', 43 }, -{ ',', 44 }, -{ '-', 45 }, -{ '.', 46 }, -{ '/', 47 }, -{ '0', 48 }, -{ '1', 49 }, -{ '2', 50 }, -{ '3', 51 }, -{ '4', 52 }, -{ '5', 53 }, -{ '6', 54 }, -{ '7', 55 }, -{ '8', 56 }, -{ '9', 57 }, -{ ':', 58 }, -{ ';', 59 }, -{ '<', 60 }, -{ '=', 61 }, -{ '>', 62 }, -{ '?', 63 }, -{ '@', 64 }, -{ 'A', 65 }, -{ 'B', 66 }, -{ 'C', 67 }, -{ 'D', 68 }, -{ 'E', 69 }, -{ 'F', 70 }, -{ 'G', 71 }, -{ 'H', 72 }, -{ 'I', 73 }, -{ 'J', 74 }, -{ 'K', 75 }, -{ 'L', 76 }, -{ 'M', 77 }, -{ 'N', 78 }, -{ 'O', 79 }, -{ 'P', 80 }, -{ 'Q', 81 }, -{ 'R', 82 }, -{ 'S', 83 }, -{ 'T', 84 }, -{ 'U', 85 }, -{ 'V', 86 }, -{ 'W', 87 }, -{ 'X', 88 }, -{ 'Y', 89 }, -{ 'Z', 90 }, -{ '[', 91 }, -{ '\\', 92 }, -{ ']', 93 }, -{ '^', 94 }, -{ '_', 95 }, -{ '`', 96 }, -{ 'a', 97 }, -{ 'b', 98 }, -{ 'c', 99 }, -{ 'd', 100 }, -{ 'e', 101 }, -{ 'f', 102 }, -{ 'g', 103 }, -{ 'h', 104 }, -{ 'i', 105 }, -{ 'j', 106 }, -{ 'k', 107 }, -{ 'l', 108 }, -{ 'm', 109 }, -{ 'n', 110 }, -{ 'o', 111 }, -{ 'p', 112 }, -{ 'q', 113 }, -{ 'r', 114 }, -{ 's', 115 }, -{ 't', 116 }, -{ 'u', 117 }, -{ 'v', 118 }, -{ 'w', 119 }, -{ 'x', 120 }, -{ 'y', 121 }, -{ 'z', 122 }, -{ '{', 123 }, -{ '|', 124 }, -{ '}', 125 }, -{ '~', 126 } -}; - -int der_ia5_char_encode(int c) -{ - int x; - for (x = 0; x < (int)(sizeof(ia5_table)/sizeof(ia5_table[0])); x++) { - if (ia5_table[x].code == c) { - return ia5_table[x].value; - } - } - return -1; -} - -int der_ia5_value_decode(int v) -{ - int x; - for (x = 0; x < (int)(sizeof(ia5_table)/sizeof(ia5_table[0])); x++) { - if (ia5_table[x].value == v) { - return ia5_table[x].code; - } - } - return -1; -} - -/** - Gets length of DER encoding of IA5 STRING - @param octets The values you want to encode - @param noctets The number of octets in the string to encode - @param outlen [out] The length of the DER encoding for the given string - @return CRYPT_OK if successful -*/ -int der_length_ia5_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen) -{ - unsigned long x; - - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(octets != NULL); - - /* scan string for validity */ - for (x = 0; x < noctets; x++) { - if (der_ia5_char_encode(octets[x]) == -1) { - return CRYPT_INVALID_ARG; - } - } - - if (noctets < 128) { - /* 16 LL DD DD DD ... */ - *outlen = 2 + noctets; - } else if (noctets < 256) { - /* 16 81 LL DD DD DD ... */ - *outlen = 3 + noctets; - } else if (noctets < 65536UL) { - /* 16 82 LL LL DD DD DD ... */ - *outlen = 4 + noctets; - } else if (noctets < 16777216UL) { - /* 16 83 LL LL LL DD DD DD ... */ - *outlen = 5 + noctets; - } else { - return CRYPT_INVALID_ARG; - } - - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/integer/der_decode_integer.c b/src/libtomcrypt/src/pk/asn1/der/integer/der_decode_integer.c deleted file mode 100644 index f1ceb52f7c..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/integer/der_decode_integer.c +++ /dev/null @@ -1,108 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_decode_integer.c - ASN.1 DER, decode an integer, Tom St Denis -*/ - - -#ifdef LTC_DER - -/** - Read a mp_int integer - @param in The DER encoded data - @param inlen Size of DER encoded data - @param num The first mp_int to decode - @return CRYPT_OK if successful -*/ -int der_decode_integer(const unsigned char *in, unsigned long inlen, void *num) -{ - unsigned long x, y, z; - int err; - - LTC_ARGCHK(num != NULL); - LTC_ARGCHK(in != NULL); - - /* min DER INTEGER is 0x02 01 00 == 0 */ - if (inlen < (1 + 1 + 1)) { - return CRYPT_INVALID_PACKET; - } - - /* ok expect 0x02 when we AND with 0001 1111 [1F] */ - x = 0; - if ((in[x++] & 0x1F) != 0x02) { - return CRYPT_INVALID_PACKET; - } - - /* now decode the len stuff */ - z = in[x++]; - - if ((z & 0x80) == 0x00) { - /* short form */ - - /* will it overflow? */ - if (x + z > inlen) { - return CRYPT_INVALID_PACKET; - } - - /* no so read it */ - if ((err = mp_read_unsigned_bin(num, (unsigned char *)in + x, z)) != CRYPT_OK) { - return err; - } - } else { - /* long form */ - z &= 0x7F; - - /* will number of length bytes overflow? (or > 4) */ - if (((x + z) > inlen) || (z > 4) || (z == 0)) { - return CRYPT_INVALID_PACKET; - } - - /* now read it in */ - y = 0; - while (z--) { - y = ((unsigned long)(in[x++])) | (y << 8); - } - - /* now will reading y bytes overrun? */ - if ((x + y) > inlen) { - return CRYPT_INVALID_PACKET; - } - - /* no so read it */ - if ((err = mp_read_unsigned_bin(num, (unsigned char *)in + x, y)) != CRYPT_OK) { - return err; - } - } - - /* see if it's negative */ - if (in[x] & 0x80) { - void *tmp; - if (mp_init(&tmp) != CRYPT_OK) { - return CRYPT_MEM; - } - - if (mp_2expt(tmp, mp_count_bits(num)) != CRYPT_OK || mp_sub(num, tmp, num) != CRYPT_OK) { - mp_clear(tmp); - return CRYPT_MEM; - } - mp_clear(tmp); - } - - return CRYPT_OK; - -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/integer/der_encode_integer.c b/src/libtomcrypt/src/pk/asn1/der/integer/der_encode_integer.c deleted file mode 100644 index dfe05af3e6..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/integer/der_encode_integer.c +++ /dev/null @@ -1,128 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_encode_integer.c - ASN.1 DER, encode an integer, Tom St Denis -*/ - - -#ifdef LTC_DER - -/* Exports a positive bignum as DER format (upto 2^32 bytes in size) */ -/** - Store a mp_int integer - @param num The first mp_int to encode - @param out [out] The destination for the DER encoded integers - @param outlen [in/out] The max size and resulting size of the DER encoded integers - @return CRYPT_OK if successful -*/ -int der_encode_integer(void *num, unsigned char *out, unsigned long *outlen) -{ - unsigned long tmplen, y; - int err, leading_zero; - - LTC_ARGCHK(num != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* find out how big this will be */ - if ((err = der_length_integer(num, &tmplen)) != CRYPT_OK) { - return err; - } - - if (*outlen < tmplen) { - *outlen = tmplen; - return CRYPT_BUFFER_OVERFLOW; - } - - if (mp_cmp_d(num, 0) != LTC_MP_LT) { - /* we only need a leading zero if the msb of the first byte is one */ - if ((mp_count_bits(num) & 7) == 0 || mp_iszero(num) == LTC_MP_YES) { - leading_zero = 1; - } else { - leading_zero = 0; - } - - /* get length of num in bytes (plus 1 since we force the msbyte to zero) */ - y = mp_unsigned_bin_size(num) + leading_zero; - } else { - leading_zero = 0; - y = mp_count_bits(num); - y = y + (8 - (y & 7)); - y = y >> 3; - if (((mp_cnt_lsb(num)+1)==mp_count_bits(num)) && ((mp_count_bits(num)&7)==0)) --y; - } - - /* now store initial data */ - *out++ = 0x02; - if (y < 128) { - /* short form */ - *out++ = (unsigned char)y; - } else if (y < 256) { - *out++ = 0x81; - *out++ = (unsigned char)y; - } else if (y < 65536UL) { - *out++ = 0x82; - *out++ = (unsigned char)((y>>8)&255); - *out++ = (unsigned char)y; - } else if (y < 16777216UL) { - *out++ = 0x83; - *out++ = (unsigned char)((y>>16)&255); - *out++ = (unsigned char)((y>>8)&255); - *out++ = (unsigned char)y; - } else { - return CRYPT_INVALID_ARG; - } - - /* now store msbyte of zero if num is non-zero */ - if (leading_zero) { - *out++ = 0x00; - } - - /* if it's not zero store it as big endian */ - if (mp_cmp_d(num, 0) == LTC_MP_GT) { - /* now store the mpint */ - if ((err = mp_to_unsigned_bin(num, out)) != CRYPT_OK) { - return err; - } - } else if (mp_iszero(num) != LTC_MP_YES) { - void *tmp; - - /* negative */ - if (mp_init(&tmp) != CRYPT_OK) { - return CRYPT_MEM; - } - - /* 2^roundup and subtract */ - y = mp_count_bits(num); - y = y + (8 - (y & 7)); - if (((mp_cnt_lsb(num)+1)==mp_count_bits(num)) && ((mp_count_bits(num)&7)==0)) y -= 8; - if (mp_2expt(tmp, y) != CRYPT_OK || mp_add(tmp, num, tmp) != CRYPT_OK) { - mp_clear(tmp); - return CRYPT_MEM; - } - if ((err = mp_to_unsigned_bin(tmp, out)) != CRYPT_OK) { - mp_clear(tmp); - return err; - } - mp_clear(tmp); - } - - /* we good */ - *outlen = tmplen; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/integer/der_length_integer.c b/src/libtomcrypt/src/pk/asn1/der/integer/der_length_integer.c deleted file mode 100644 index b7fe96578e..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/integer/der_length_integer.c +++ /dev/null @@ -1,79 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_length_integer.c - ASN.1 DER, get length of encoding, Tom St Denis -*/ - - -#ifdef LTC_DER -/** - Gets length of DER encoding of num - @param num The int to get the size of - @param outlen [out] The length of the DER encoding for the given integer - @return CRYPT_OK if successful -*/ -int der_length_integer(void *num, unsigned long *outlen) -{ - unsigned long z, len; - int leading_zero; - - LTC_ARGCHK(num != NULL); - LTC_ARGCHK(outlen != NULL); - - if (mp_cmp_d(num, 0) != LTC_MP_LT) { - /* positive */ - - /* we only need a leading zero if the msb of the first byte is one */ - if ((mp_count_bits(num) & 7) == 0 || mp_iszero(num) == LTC_MP_YES) { - leading_zero = 1; - } else { - leading_zero = 0; - } - - /* size for bignum */ - z = len = leading_zero + mp_unsigned_bin_size(num); - } else { - /* it's negative */ - /* find power of 2 that is a multiple of eight and greater than count bits */ - z = mp_count_bits(num); - z = z + (8 - (z & 7)); - if (((mp_cnt_lsb(num)+1)==mp_count_bits(num)) && ((mp_count_bits(num)&7)==0)) --z; - len = z = z >> 3; - } - - /* now we need a length */ - if (z < 128) { - /* short form */ - ++len; - } else { - /* long form (relies on z != 0), assumes length bytes < 128 */ - ++len; - - while (z) { - ++len; - z >>= 8; - } - } - - /* we need a 0x02 to indicate it's INTEGER */ - ++len; - - /* return length */ - *outlen = len; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/object_identifier/der_decode_object_identifier.c b/src/libtomcrypt/src/pk/asn1/der/object_identifier/der_decode_object_identifier.c deleted file mode 100644 index c4799bda02..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/object_identifier/der_decode_object_identifier.c +++ /dev/null @@ -1,106 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_decode_object_identifier.c - ASN.1 DER, Decode Object Identifier, Tom St Denis -*/ - -#ifdef LTC_DER -/** - Decode OID data and store the array of integers in words - @param in The OID DER encoded data - @param inlen The length of the OID data - @param words [out] The destination of the OID words - @param outlen [in/out] The number of OID words - @return CRYPT_OK if successful -*/ -int der_decode_object_identifier(const unsigned char *in, unsigned long inlen, - unsigned long *words, unsigned long *outlen) -{ - unsigned long x, y, t, len; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(words != NULL); - LTC_ARGCHK(outlen != NULL); - - /* header is at least 3 bytes */ - if (inlen < 3) { - return CRYPT_INVALID_PACKET; - } - - /* must be room for at least two words */ - if (*outlen < 2) { - *outlen = 2; - return CRYPT_BUFFER_OVERFLOW; - } - - /* decode the packet header */ - x = 0; - if ((in[x++] & 0x1F) != 0x06) { - return CRYPT_INVALID_PACKET; - } - - /* get the length */ - if (in[x] < 128) { - len = in[x++]; - } else { - if (in[x] < 0x81 || in[x] > 0x82) { - return CRYPT_INVALID_PACKET; - } - y = in[x++] & 0x7F; - len = 0; - while (y--) { - len = (len << 8) | (unsigned long)in[x++]; - } - } - - if (len < 1 || (len + x) > inlen) { - return CRYPT_INVALID_PACKET; - } - - /* decode words */ - y = 0; - t = 0; - while (len--) { - t = (t << 7) | (in[x] & 0x7F); - if (!(in[x++] & 0x80)) { - /* store t */ - if (y >= *outlen) { - y++; - } else { - if (y == 0) { - words[0] = t / 40; - words[1] = t % 40; - y = 2; - } else { - words[y++] = t; - } - } - t = 0; - } - } - - if (y > *outlen) { - err = CRYPT_BUFFER_OVERFLOW; - } else { - err = CRYPT_OK; - } - - *outlen = y; - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/object_identifier/der_encode_object_identifier.c b/src/libtomcrypt/src/pk/asn1/der/object_identifier/der_encode_object_identifier.c deleted file mode 100644 index c5e081eeef..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/object_identifier/der_encode_object_identifier.c +++ /dev/null @@ -1,109 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_encode_object_identifier.c - ASN.1 DER, Encode Object Identifier, Tom St Denis -*/ - -#ifdef LTC_DER -/** - Encode an OID - @param words The words to encode (upto 32-bits each) - @param nwords The number of words in the OID - @param out [out] Destination of OID data - @param outlen [in/out] The max and resulting size of the OID - @return CRYPT_OK if successful -*/ -int der_encode_object_identifier(unsigned long *words, unsigned long nwords, - unsigned char *out, unsigned long *outlen) -{ - unsigned long i, x, y, z, t, mask, wordbuf; - int err; - - LTC_ARGCHK(words != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* check length */ - if ((err = der_length_object_identifier(words, nwords, &x)) != CRYPT_OK) { - return err; - } - if (x > *outlen) { - *outlen = x; - return CRYPT_BUFFER_OVERFLOW; - } - - /* compute length to store OID data */ - z = 0; - wordbuf = words[0] * 40 + words[1]; - for (y = 1; y < nwords; y++) { - t = der_object_identifier_bits(wordbuf); - z += t/7 + ((t%7) ? 1 : 0) + (wordbuf == 0 ? 1 : 0); - if (y < nwords - 1) { - wordbuf = words[y + 1]; - } - } - - /* store header + length */ - x = 0; - out[x++] = 0x06; - if (z < 128) { - out[x++] = (unsigned char)z; - } else if (z < 256) { - out[x++] = 0x81; - out[x++] = (unsigned char)z; - } else if (z < 65536UL) { - out[x++] = 0x82; - out[x++] = (unsigned char)((z>>8)&255); - out[x++] = (unsigned char)(z&255); - } else { - return CRYPT_INVALID_ARG; - } - - /* store first byte */ - wordbuf = words[0] * 40 + words[1]; - for (i = 1; i < nwords; i++) { - /* store 7 bit words in little endian */ - t = wordbuf & 0xFFFFFFFF; - if (t) { - y = x; - mask = 0; - while (t) { - out[x++] = (unsigned char)((t & 0x7F) | mask); - t >>= 7; - mask |= 0x80; /* upper bit is set on all but the last byte */ - } - /* now swap bytes y...x-1 */ - z = x - 1; - while (y < z) { - t = out[y]; out[y] = out[z]; out[z] = (unsigned char)t; - ++y; - --z; - } - } else { - /* zero word */ - out[x++] = 0x00; - } - - if (i < nwords - 1) { - wordbuf = words[i + 1]; - } - } - - *outlen = x; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/object_identifier/der_length_object_identifier.c b/src/libtomcrypt/src/pk/asn1/der/object_identifier/der_length_object_identifier.c deleted file mode 100644 index 9cfe9ecc66..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/object_identifier/der_length_object_identifier.c +++ /dev/null @@ -1,87 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_length_object_identifier.c - ASN.1 DER, get length of Object Identifier, Tom St Denis -*/ - -#ifdef LTC_DER - -unsigned long der_object_identifier_bits(unsigned long x) -{ - unsigned long c; - x &= 0xFFFFFFFF; - c = 0; - while (x) { - ++c; - x >>= 1; - } - return c; -} - - -/** - Gets length of DER encoding of Object Identifier - @param nwords The number of OID words - @param words The actual OID words to get the size of - @param outlen [out] The length of the DER encoding for the given string - @return CRYPT_OK if successful -*/ -int der_length_object_identifier(unsigned long *words, unsigned long nwords, unsigned long *outlen) -{ - unsigned long y, z, t, wordbuf; - - LTC_ARGCHK(words != NULL); - LTC_ARGCHK(outlen != NULL); - - - /* must be >= 2 words */ - if (nwords < 2) { - return CRYPT_INVALID_ARG; - } - - /* word1 = 0,1,2,3 and word2 0..39 */ - if (words[0] > 3 || (words[0] < 2 && words[1] > 39)) { - return CRYPT_INVALID_ARG; - } - - /* leading word is the first two */ - z = 0; - wordbuf = words[0] * 40 + words[1]; - for (y = 1; y < nwords; y++) { - t = der_object_identifier_bits(wordbuf); - z += t/7 + ((t%7) ? 1 : 0) + (wordbuf == 0 ? 1 : 0); - if (y < nwords - 1) { - /* grab next word */ - wordbuf = words[y+1]; - } - } - - /* now depending on the length our length encoding changes */ - if (z < 128) { - z += 2; - } else if (z < 256) { - z += 3; - } else if (z < 65536UL) { - z += 4; - } else { - return CRYPT_INVALID_ARG; - } - - *outlen = z; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/octet/der_decode_octet_string.c b/src/libtomcrypt/src/pk/asn1/der/octet/der_decode_octet_string.c deleted file mode 100644 index 4f42c371e0..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/octet/der_decode_octet_string.c +++ /dev/null @@ -1,89 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_decode_octet_string.c - ASN.1 DER, encode a OCTET STRING, Tom St Denis -*/ - - -#ifdef LTC_DER - -/** - Store a OCTET STRING - @param in The DER encoded OCTET STRING - @param inlen The size of the DER OCTET STRING - @param out [out] The array of octets stored (one per char) - @param outlen [in/out] The number of octets stored - @return CRYPT_OK if successful -*/ -int der_decode_octet_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - unsigned long x, y, len; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* must have header at least */ - if (inlen < 2) { - return CRYPT_INVALID_PACKET; - } - - /* check for 0x04 */ - if ((in[0] & 0x1F) != 0x04) { - return CRYPT_INVALID_PACKET; - } - x = 1; - - /* decode the length */ - if (in[x] & 0x80) { - /* valid # of bytes in length are 1,2,3 */ - y = in[x] & 0x7F; - if ((y == 0) || (y > 3) || ((x + y) > inlen)) { - return CRYPT_INVALID_PACKET; - } - - /* read the length in */ - len = 0; - ++x; - while (y--) { - len = (len << 8) | in[x++]; - } - } else { - len = in[x++] & 0x7F; - } - - /* is it too long? */ - if (len > *outlen) { - *outlen = len; - return CRYPT_BUFFER_OVERFLOW; - } - - if (len + x > inlen) { - return CRYPT_INVALID_PACKET; - } - - /* read the data */ - for (y = 0; y < len; y++) { - out[y] = in[x++]; - } - - *outlen = y; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/octet/der_encode_octet_string.c b/src/libtomcrypt/src/pk/asn1/der/octet/der_encode_octet_string.c deleted file mode 100644 index 0c354f6ca7..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/octet/der_encode_octet_string.c +++ /dev/null @@ -1,84 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_encode_octet_string.c - ASN.1 DER, encode a OCTET STRING, Tom St Denis -*/ - - -#ifdef LTC_DER - -/** - Store an OCTET STRING - @param in The array of OCTETS to store (one per char) - @param inlen The number of OCTETS to store - @param out [out] The destination for the DER encoded OCTET STRING - @param outlen [in/out] The max size and resulting size of the DER OCTET STRING - @return CRYPT_OK if successful -*/ -int der_encode_octet_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - unsigned long x, y, len; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* get the size */ - if ((err = der_length_octet_string(inlen, &len)) != CRYPT_OK) { - return err; - } - - /* too big? */ - if (len > *outlen) { - *outlen = len; - return CRYPT_BUFFER_OVERFLOW; - } - - /* encode the header+len */ - x = 0; - out[x++] = 0x04; - if (inlen < 128) { - out[x++] = (unsigned char)inlen; - } else if (inlen < 256) { - out[x++] = 0x81; - out[x++] = (unsigned char)inlen; - } else if (inlen < 65536UL) { - out[x++] = 0x82; - out[x++] = (unsigned char)((inlen>>8)&255); - out[x++] = (unsigned char)(inlen&255); - } else if (inlen < 16777216UL) { - out[x++] = 0x83; - out[x++] = (unsigned char)((inlen>>16)&255); - out[x++] = (unsigned char)((inlen>>8)&255); - out[x++] = (unsigned char)(inlen&255); - } else { - return CRYPT_INVALID_ARG; - } - - /* store octets */ - for (y = 0; y < inlen; y++) { - out[x++] = in[y]; - } - - /* retun length */ - *outlen = x; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/octet/der_length_octet_string.c b/src/libtomcrypt/src/pk/asn1/der/octet/der_length_octet_string.c deleted file mode 100644 index 6c41e55974..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/octet/der_length_octet_string.c +++ /dev/null @@ -1,51 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_length_octet_string.c - ASN.1 DER, get length of OCTET STRING, Tom St Denis -*/ - -#ifdef LTC_DER -/** - Gets length of DER encoding of OCTET STRING - @param noctets The number of octets in the string to encode - @param outlen [out] The length of the DER encoding for the given string - @return CRYPT_OK if successful -*/ -int der_length_octet_string(unsigned long noctets, unsigned long *outlen) -{ - LTC_ARGCHK(outlen != NULL); - - if (noctets < 128) { - /* 04 LL DD DD DD ... */ - *outlen = 2 + noctets; - } else if (noctets < 256) { - /* 04 81 LL DD DD DD ... */ - *outlen = 3 + noctets; - } else if (noctets < 65536UL) { - /* 04 82 LL LL DD DD DD ... */ - *outlen = 4 + noctets; - } else if (noctets < 16777216UL) { - /* 04 83 LL LL LL DD DD DD ... */ - *outlen = 5 + noctets; - } else { - return CRYPT_INVALID_ARG; - } - - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/printable_string/der_decode_printable_string.c b/src/libtomcrypt/src/pk/asn1/der/printable_string/der_decode_printable_string.c deleted file mode 100644 index a75ecde8e2..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/printable_string/der_decode_printable_string.c +++ /dev/null @@ -1,94 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_decode_printable_string.c - ASN.1 DER, encode a printable STRING, Tom St Denis -*/ - - -#ifdef LTC_DER - -/** - Store a printable STRING - @param in The DER encoded printable STRING - @param inlen The size of the DER printable STRING - @param out [out] The array of octets stored (one per char) - @param outlen [in/out] The number of octets stored - @return CRYPT_OK if successful -*/ -int der_decode_printable_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - unsigned long x, y, len; - int t; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* must have header at least */ - if (inlen < 2) { - return CRYPT_INVALID_PACKET; - } - - /* check for 0x13 */ - if ((in[0] & 0x1F) != 0x13) { - return CRYPT_INVALID_PACKET; - } - x = 1; - - /* decode the length */ - if (in[x] & 0x80) { - /* valid # of bytes in length are 1,2,3 */ - y = in[x] & 0x7F; - if ((y == 0) || (y > 3) || ((x + y) > inlen)) { - return CRYPT_INVALID_PACKET; - } - - /* read the length in */ - len = 0; - ++x; - while (y--) { - len = (len << 8) | in[x++]; - } - } else { - len = in[x++] & 0x7F; - } - - /* is it too long? */ - if (len > *outlen) { - *outlen = len; - return CRYPT_BUFFER_OVERFLOW; - } - - if (len + x > inlen) { - return CRYPT_INVALID_PACKET; - } - - /* read the data */ - for (y = 0; y < len; y++) { - t = der_printable_value_decode(in[x++]); - if (t == -1) { - return CRYPT_INVALID_ARG; - } - out[y] = t; - } - - *outlen = y; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/printable_string/der_encode_printable_string.c b/src/libtomcrypt/src/pk/asn1/der/printable_string/der_encode_printable_string.c deleted file mode 100644 index 7d772a1d0b..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/printable_string/der_encode_printable_string.c +++ /dev/null @@ -1,83 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_encode_printable_string.c - ASN.1 DER, encode a printable STRING, Tom St Denis -*/ - -#ifdef LTC_DER - -/** - Store an printable STRING - @param in The array of printable to store (one per char) - @param inlen The number of printable to store - @param out [out] The destination for the DER encoded printable STRING - @param outlen [in/out] The max size and resulting size of the DER printable STRING - @return CRYPT_OK if successful -*/ -int der_encode_printable_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - unsigned long x, y, len; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* get the size */ - if ((err = der_length_printable_string(in, inlen, &len)) != CRYPT_OK) { - return err; - } - - /* too big? */ - if (len > *outlen) { - *outlen = len; - return CRYPT_BUFFER_OVERFLOW; - } - - /* encode the header+len */ - x = 0; - out[x++] = 0x13; - if (inlen < 128) { - out[x++] = (unsigned char)inlen; - } else if (inlen < 256) { - out[x++] = 0x81; - out[x++] = (unsigned char)inlen; - } else if (inlen < 65536UL) { - out[x++] = 0x82; - out[x++] = (unsigned char)((inlen>>8)&255); - out[x++] = (unsigned char)(inlen&255); - } else if (inlen < 16777216UL) { - out[x++] = 0x83; - out[x++] = (unsigned char)((inlen>>16)&255); - out[x++] = (unsigned char)((inlen>>8)&255); - out[x++] = (unsigned char)(inlen&255); - } else { - return CRYPT_INVALID_ARG; - } - - /* store octets */ - for (y = 0; y < inlen; y++) { - out[x++] = der_printable_char_encode(in[y]); - } - - /* retun length */ - *outlen = x; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/printable_string/der_length_printable_string.c b/src/libtomcrypt/src/pk/asn1/der/printable_string/der_length_printable_string.c deleted file mode 100644 index bdd8970309..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/printable_string/der_length_printable_string.c +++ /dev/null @@ -1,164 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_length_printable_string.c - ASN.1 DER, get length of Printable STRING, Tom St Denis -*/ - -#ifdef LTC_DER - -static const struct { - int code, value; -} printable_table[] = { -{ ' ', 32 }, -{ '\'', 39 }, -{ '(', 40 }, -{ ')', 41 }, -{ '+', 43 }, -{ ',', 44 }, -{ '-', 45 }, -{ '.', 46 }, -{ '/', 47 }, -{ '0', 48 }, -{ '1', 49 }, -{ '2', 50 }, -{ '3', 51 }, -{ '4', 52 }, -{ '5', 53 }, -{ '6', 54 }, -{ '7', 55 }, -{ '8', 56 }, -{ '9', 57 }, -{ ':', 58 }, -{ '=', 61 }, -{ '?', 63 }, -{ 'A', 65 }, -{ 'B', 66 }, -{ 'C', 67 }, -{ 'D', 68 }, -{ 'E', 69 }, -{ 'F', 70 }, -{ 'G', 71 }, -{ 'H', 72 }, -{ 'I', 73 }, -{ 'J', 74 }, -{ 'K', 75 }, -{ 'L', 76 }, -{ 'M', 77 }, -{ 'N', 78 }, -{ 'O', 79 }, -{ 'P', 80 }, -{ 'Q', 81 }, -{ 'R', 82 }, -{ 'S', 83 }, -{ 'T', 84 }, -{ 'U', 85 }, -{ 'V', 86 }, -{ 'W', 87 }, -{ 'X', 88 }, -{ 'Y', 89 }, -{ 'Z', 90 }, -{ 'a', 97 }, -{ 'b', 98 }, -{ 'c', 99 }, -{ 'd', 100 }, -{ 'e', 101 }, -{ 'f', 102 }, -{ 'g', 103 }, -{ 'h', 104 }, -{ 'i', 105 }, -{ 'j', 106 }, -{ 'k', 107 }, -{ 'l', 108 }, -{ 'm', 109 }, -{ 'n', 110 }, -{ 'o', 111 }, -{ 'p', 112 }, -{ 'q', 113 }, -{ 'r', 114 }, -{ 's', 115 }, -{ 't', 116 }, -{ 'u', 117 }, -{ 'v', 118 }, -{ 'w', 119 }, -{ 'x', 120 }, -{ 'y', 121 }, -{ 'z', 122 }, -}; - -int der_printable_char_encode(int c) -{ - int x; - for (x = 0; x < (int)(sizeof(printable_table)/sizeof(printable_table[0])); x++) { - if (printable_table[x].code == c) { - return printable_table[x].value; - } - } - return -1; -} - -int der_printable_value_decode(int v) -{ - int x; - for (x = 0; x < (int)(sizeof(printable_table)/sizeof(printable_table[0])); x++) { - if (printable_table[x].value == v) { - return printable_table[x].code; - } - } - return -1; -} - -/** - Gets length of DER encoding of Printable STRING - @param octets The values you want to encode - @param noctets The number of octets in the string to encode - @param outlen [out] The length of the DER encoding for the given string - @return CRYPT_OK if successful -*/ -int der_length_printable_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen) -{ - unsigned long x; - - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(octets != NULL); - - /* scan string for validity */ - for (x = 0; x < noctets; x++) { - if (der_printable_char_encode(octets[x]) == -1) { - return CRYPT_INVALID_ARG; - } - } - - if (noctets < 128) { - /* 16 LL DD DD DD ... */ - *outlen = 2 + noctets; - } else if (noctets < 256) { - /* 16 81 LL DD DD DD ... */ - *outlen = 3 + noctets; - } else if (noctets < 65536UL) { - /* 16 82 LL LL DD DD DD ... */ - *outlen = 4 + noctets; - } else if (noctets < 16777216UL) { - /* 16 83 LL LL LL DD DD DD ... */ - *outlen = 5 + noctets; - } else { - return CRYPT_INVALID_ARG; - } - - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_ex.c b/src/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_ex.c deleted file mode 100644 index 59cd07970a..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_ex.c +++ /dev/null @@ -1,328 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - - -/** - @file der_decode_sequence_ex.c - ASN.1 DER, decode a SEQUENCE, Tom St Denis -*/ - -#ifdef LTC_DER - -/** - Decode a SEQUENCE - @param in The DER encoded input - @param inlen The size of the input - @param list The list of items to decode - @param outlen The number of items in the list - @param ordered Search an unordeded or ordered list - @return CRYPT_OK on success -*/ -int der_decode_sequence_ex(const unsigned char *in, unsigned long inlen, - ltc_asn1_list *list, unsigned long outlen, int ordered) -{ - int err, i; - ltc_asn1_type type; - unsigned long size, x, y, z, blksize; - void *data; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(list != NULL); - - /* get blk size */ - if (inlen < 2) { - return CRYPT_INVALID_PACKET; - } - - /* sequence type? We allow 0x30 SEQUENCE and 0x31 SET since fundamentally they're the same structure */ - x = 0; - if (in[x] != 0x30 && in[x] != 0x31) { - return CRYPT_INVALID_PACKET; - } - ++x; - - /* check if the msb is set, which signals that the - * 7 lsb bits represent the number of bytes of the length - */ - if (in[x] < 128) { - blksize = in[x++]; - } else { - if (in[x] < 0x81 || in[x] > 0x83) { - return CRYPT_INVALID_PACKET; - } - y = in[x++] & 0x7F; - - /* would reading the len bytes overrun? */ - if (x + y > inlen) { - return CRYPT_INVALID_PACKET; - } - - /* read len */ - blksize = 0; - while (y--) { - blksize = (blksize << 8) | (unsigned long)in[x++]; - } - } - - /* would this blksize overflow? */ - if (x + blksize > inlen) { - return CRYPT_INVALID_PACKET; - } - - /* mark all as unused */ - for (i = 0; i < (int)outlen; i++) { - list[i].used = 0; - } - - /* ok read data */ - inlen = blksize; - for (i = 0; i < (int)outlen; i++) { - z = 0; - type = list[i].type; - size = list[i].size; - data = list[i].data; - if (!ordered && list[i].used == 1) { continue; } - - if (type == LTC_ASN1_EOL) { - break; - } - - switch (type) { - case LTC_ASN1_BOOLEAN: - z = inlen; - if ((err = der_decode_boolean(in + x, z, ((int *)data))) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - if ((err = der_length_boolean(&z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_INTEGER: - z = inlen; - if ((err = der_decode_integer(in + x, z, data)) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - if ((err = der_length_integer(data, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_SHORT_INTEGER: - z = inlen; - if ((err = der_decode_short_integer(in + x, z, data)) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - if ((err = der_length_short_integer(((unsigned long*)data)[0], &z)) != CRYPT_OK) { - goto LBL_ERR; - } - - break; - - case LTC_ASN1_BIT_STRING: - z = inlen; - if ((err = der_decode_bit_string(in + x, z, data, &size)) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - list[i].size = size; - if ((err = der_length_bit_string(size, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_RAW_BIT_STRING: - z = inlen; - if ((err = der_decode_raw_bit_string(in + x, z, data, &size)) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - list[i].size = size; - if ((err = der_length_bit_string(size, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_OCTET_STRING: - z = inlen; - if ((err = der_decode_octet_string(in + x, z, data, &size)) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - list[i].size = size; - if ((err = der_length_octet_string(size, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_NULL: - if (inlen < 2 || in[x] != 0x05 || in[x+1] != 0x00) { - if (!ordered) { continue; } - err = CRYPT_INVALID_PACKET; - goto LBL_ERR; - } - z = 2; - break; - - case LTC_ASN1_OBJECT_IDENTIFIER: - z = inlen; - if ((err = der_decode_object_identifier(in + x, z, data, &size)) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - list[i].size = size; - if ((err = der_length_object_identifier(data, size, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_TELETEX_STRING: - z = inlen; - if ((err = der_decode_teletex_string(in + x, z, data, &size)) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - list[i].size = size; - if ((err = der_length_teletex_string(data, size, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_IA5_STRING: - z = inlen; - if ((err = der_decode_ia5_string(in + x, z, data, &size)) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - list[i].size = size; - if ((err = der_length_ia5_string(data, size, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - - case LTC_ASN1_PRINTABLE_STRING: - z = inlen; - if ((err = der_decode_printable_string(in + x, z, data, &size)) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - list[i].size = size; - if ((err = der_length_printable_string(data, size, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_UTF8_STRING: - z = inlen; - if ((err = der_decode_utf8_string(in + x, z, data, &size)) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - list[i].size = size; - if ((err = der_length_utf8_string(data, size, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_UTCTIME: - z = inlen; - if ((err = der_decode_utctime(in + x, &z, data)) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - break; - - case LTC_ASN1_GENERALIZEDTIME: - z = inlen; - if ((err = der_decode_generalizedtime(in + x, &z, data)) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - break; - - case LTC_ASN1_SET: - z = inlen; - if ((err = der_decode_set(in + x, z, data, size)) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - if ((err = der_length_sequence(data, size, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_SETOF: - case LTC_ASN1_SEQUENCE: - /* detect if we have the right type */ - if ((type == LTC_ASN1_SETOF && (in[x] & 0x3F) != 0x31) || (type == LTC_ASN1_SEQUENCE && (in[x] & 0x3F) != 0x30)) { - err = CRYPT_INVALID_PACKET; - goto LBL_ERR; - } - - z = inlen; - if ((err = der_decode_sequence(in + x, z, data, size)) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - if ((err = der_length_sequence(data, size, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - - case LTC_ASN1_CHOICE: - z = inlen; - if ((err = der_decode_choice(in + x, &z, data, size)) != CRYPT_OK) { - if (!ordered) { continue; } - goto LBL_ERR; - } - break; - - case LTC_ASN1_CONSTRUCTED: - case LTC_ASN1_CONTEXT_SPECIFIC: - case LTC_ASN1_EOL: - err = CRYPT_INVALID_ARG; - goto LBL_ERR; - } - x += z; - inlen -= z; - list[i].used = 1; - if (!ordered) { - /* restart the decoder */ - i = -1; - } - } - - for (i = 0; i < (int)outlen; i++) { - if (list[i].used == 0) { - err = CRYPT_INVALID_PACKET; - goto LBL_ERR; - } - } - - if (inlen == 0) { - err = CRYPT_OK; - } else { - err = CRYPT_INPUT_TOO_LONG; - } - -LBL_ERR: - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_flexi.c b/src/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_flexi.c deleted file mode 100644 index f6eabfcf44..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_flexi.c +++ /dev/null @@ -1,484 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_decode_sequence_flexi.c - ASN.1 DER, decode an array of ASN.1 types with a flexi parser, Tom St Denis -*/ - -#ifdef LTC_DER - -static unsigned long _fetch_length(const unsigned char *in, unsigned long inlen, unsigned long *data_offset) -{ - unsigned long x, z; - - *data_offset = 0; - - /* skip type and read len */ - if (inlen < 2) { - return 0xFFFFFFFF; - } - ++in; ++(*data_offset); - - /* read len */ - x = *in++; ++(*data_offset); - - /* <128 means literal */ - if (x < 128) { - return x+*data_offset; - } - x &= 0x7F; /* the lower 7 bits are the length of the length */ - inlen -= 2; - - /* len means len of len! */ - if (x == 0 || x > 4 || x > inlen) { - return 0xFFFFFFFF; - } - - *data_offset += x; - z = 0; - while (x--) { - z = (z<<8) | ((unsigned long)*in); - ++in; - } - return z+*data_offset; -} - -static int _new_element(ltc_asn1_list **l) -{ - /* alloc new link */ - if (*l == NULL) { - *l = XCALLOC(1, sizeof(ltc_asn1_list)); - if (*l == NULL) { - return CRYPT_MEM; - } - } else { - (*l)->next = XCALLOC(1, sizeof(ltc_asn1_list)); - if ((*l)->next == NULL) { - return CRYPT_MEM; - } - (*l)->next->prev = *l; - *l = (*l)->next; - } - return CRYPT_OK; -} - -/** - ASN.1 DER Flexi(ble) decoder will decode arbitrary DER packets and create a linked list of the decoded elements. - @param in The input buffer - @param inlen [in/out] The length of the input buffer and on output the amount of decoded data - @param out [out] A pointer to the linked list - @return CRYPT_OK on success. -*/ -int der_decode_sequence_flexi(const unsigned char *in, unsigned long *inlen, ltc_asn1_list **out) -{ - ltc_asn1_list *l, *t; - unsigned long err, type, len, totlen, data_offset, len_len; - void *realloc_tmp; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(inlen != NULL); - LTC_ARGCHK(out != NULL); - - l = NULL; - totlen = 0; - - if (*inlen == 0) { - /* alloc new link */ - if ((err = _new_element(&l)) != CRYPT_OK) { - goto error; - } - } - - /* scan the input and and get lengths and what not */ - while (*inlen) { - /* read the type byte */ - type = *in; - - /* fetch length */ - len = _fetch_length(in, *inlen, &data_offset); - if (len > *inlen) { - err = CRYPT_INVALID_PACKET; - goto error; - } - - /* alloc new link */ - if ((err = _new_element(&l)) != CRYPT_OK) { - goto error; - } - - if ((type & 0x20) && (type != 0x30) && (type != 0x31)) { - /* constructed, use the 'used' field to store the original identifier */ - l->used = type; - /* treat constructed elements like SETs */ - type = 0x20; - } - else if ((type & 0xC0) == 0x80) { - /* context-specific, use the 'used' field to store the original identifier */ - l->used = type; - /* context-specific elements are treated as opaque data */ - type = 0x80; - } - - /* now switch on type */ - switch (type) { - case 0x01: /* BOOLEAN */ - l->type = LTC_ASN1_BOOLEAN; - l->size = 1; - l->data = XCALLOC(1, sizeof(int)); - - if ((err = der_decode_boolean(in, *inlen, l->data)) != CRYPT_OK) { - goto error; - } - - if ((err = der_length_boolean(&len)) != CRYPT_OK) { - goto error; - } - break; - - case 0x02: /* INTEGER */ - /* init field */ - l->type = LTC_ASN1_INTEGER; - l->size = 1; - if ((err = mp_init(&l->data)) != CRYPT_OK) { - goto error; - } - - /* decode field */ - if ((err = der_decode_integer(in, *inlen, l->data)) != CRYPT_OK) { - goto error; - } - - /* calc length of object */ - if ((err = der_length_integer(l->data, &len)) != CRYPT_OK) { - goto error; - } - break; - - case 0x03: /* BIT */ - /* init field */ - l->type = LTC_ASN1_BIT_STRING; - l->size = len * 8; /* *8 because we store decoded bits one per char and they are encoded 8 per char. */ - - if ((l->data = XCALLOC(1, l->size)) == NULL) { - err = CRYPT_MEM; - goto error; - } - - if ((err = der_decode_bit_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) { - goto error; - } - - if ((err = der_length_bit_string(l->size, &len)) != CRYPT_OK) { - goto error; - } - break; - - case 0x04: /* OCTET */ - - /* init field */ - l->type = LTC_ASN1_OCTET_STRING; - l->size = len; - - if ((l->data = XCALLOC(1, l->size)) == NULL) { - err = CRYPT_MEM; - goto error; - } - - if ((err = der_decode_octet_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) { - goto error; - } - - if ((err = der_length_octet_string(l->size, &len)) != CRYPT_OK) { - goto error; - } - break; - - case 0x05: /* NULL */ - - /* valid NULL is 0x05 0x00 */ - if (in[0] != 0x05 || in[1] != 0x00) { - err = CRYPT_INVALID_PACKET; - goto error; - } - - /* simple to store ;-) */ - l->type = LTC_ASN1_NULL; - l->data = NULL; - l->size = 0; - len = 2; - - break; - - case 0x06: /* OID */ - - /* init field */ - l->type = LTC_ASN1_OBJECT_IDENTIFIER; - l->size = len; - - if ((l->data = XCALLOC(len, sizeof(unsigned long))) == NULL) { - err = CRYPT_MEM; - goto error; - } - - if ((err = der_decode_object_identifier(in, *inlen, l->data, &l->size)) != CRYPT_OK) { - goto error; - } - - if ((err = der_length_object_identifier(l->data, l->size, &len)) != CRYPT_OK) { - goto error; - } - - /* resize it to save a bunch of mem */ - if ((realloc_tmp = XREALLOC(l->data, l->size * sizeof(unsigned long))) == NULL) { - /* out of heap but this is not an error */ - break; - } - l->data = realloc_tmp; - break; - - case 0x0C: /* UTF8 */ - - /* init field */ - l->type = LTC_ASN1_UTF8_STRING; - l->size = len; - - if ((l->data = XCALLOC(sizeof(wchar_t), l->size)) == NULL) { - err = CRYPT_MEM; - goto error; - } - - if ((err = der_decode_utf8_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) { - goto error; - } - - if ((err = der_length_utf8_string(l->data, l->size, &len)) != CRYPT_OK) { - goto error; - } - break; - - case 0x13: /* PRINTABLE */ - - /* init field */ - l->type = LTC_ASN1_PRINTABLE_STRING; - l->size = len; - - if ((l->data = XCALLOC(1, l->size)) == NULL) { - err = CRYPT_MEM; - goto error; - } - - if ((err = der_decode_printable_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) { - goto error; - } - - if ((err = der_length_printable_string(l->data, l->size, &len)) != CRYPT_OK) { - goto error; - } - break; - - case 0x14: /* TELETEXT */ - - /* init field */ - l->type = LTC_ASN1_TELETEX_STRING; - l->size = len; - - if ((l->data = XCALLOC(1, l->size)) == NULL) { - err = CRYPT_MEM; - goto error; - } - - if ((err = der_decode_teletex_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) { - goto error; - } - - if ((err = der_length_teletex_string(l->data, l->size, &len)) != CRYPT_OK) { - goto error; - } - break; - - case 0x16: /* IA5 */ - - /* init field */ - l->type = LTC_ASN1_IA5_STRING; - l->size = len; - - if ((l->data = XCALLOC(1, l->size)) == NULL) { - err = CRYPT_MEM; - goto error; - } - - if ((err = der_decode_ia5_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) { - goto error; - } - - if ((err = der_length_ia5_string(l->data, l->size, &len)) != CRYPT_OK) { - goto error; - } - break; - - case 0x17: /* UTC TIME */ - - /* init field */ - l->type = LTC_ASN1_UTCTIME; - l->size = 1; - - if ((l->data = XCALLOC(1, sizeof(ltc_utctime))) == NULL) { - err = CRYPT_MEM; - goto error; - } - - len = *inlen; - if ((err = der_decode_utctime(in, &len, l->data)) != CRYPT_OK) { - goto error; - } - - if ((err = der_length_utctime(l->data, &len)) != CRYPT_OK) { - goto error; - } - break; - - case 0x18: - l->type = LTC_ASN1_GENERALIZEDTIME; - l->size = len; - - if ((l->data = XCALLOC(1, sizeof(ltc_generalizedtime))) == NULL) { - err = CRYPT_MEM; - goto error; - } - - if ((err = der_decode_generalizedtime(in, &len, l->data)) != CRYPT_OK) { - goto error; - } - - if ((err = der_length_generalizedtime(l->data, &len)) != CRYPT_OK) { - goto error; - } - - break; - - case 0x20: /* Any CONSTRUCTED element that is neither SEQUENCE nor SET */ - case 0x30: /* SEQUENCE */ - case 0x31: /* SET */ - - /* init field */ - if (type == 0x20) { - l->type = LTC_ASN1_CONSTRUCTED; - } - else if (type == 0x30) { - l->type = LTC_ASN1_SEQUENCE; - } - else { - l->type = LTC_ASN1_SET; - } - - if ((l->data = XMALLOC(len)) == NULL) { - err = CRYPT_MEM; - goto error; - } - - XMEMCPY(l->data, in, len); - l->size = len; - - - /* jump to the start of the data */ - in += data_offset; - *inlen -= data_offset; - len = len - data_offset; - - /* Sequence elements go as child */ - if ((err = der_decode_sequence_flexi(in, &len, &(l->child))) != CRYPT_OK) { - goto error; - } - - /* len update */ - totlen += data_offset; - - /* the flexi decoder can also do nothing, so make sure a child has been allocated */ - if (l->child) { - /* link them up y0 */ - l->child->parent = l; - } - - t = l; - len_len = 0; - while((t != NULL) && (t->child != NULL)) { - len_len++; - t = t->child; - } - if (len_len > LTC_DER_MAX_RECURSION) { - err = CRYPT_ERROR; - goto error; - } - - break; - - case 0x80: /* Context-specific */ - l->type = LTC_ASN1_CONTEXT_SPECIFIC; - - if ((l->data = XCALLOC(1, len - data_offset)) == NULL) { - err = CRYPT_MEM; - goto error; - } - - XMEMCPY(l->data, in + data_offset, len - data_offset); - l->size = len - data_offset; - - break; - - default: - /* invalid byte ... this is a soft error */ - /* remove link */ - if (l->prev) { - l = l->prev; - XFREE(l->next); - l->next = NULL; - } - goto outside; - } - - /* advance pointers */ - totlen += len; - in += len; - *inlen -= len; - } - -outside: - - /* in case we processed anything */ - if (totlen) { - /* rewind l please */ - while (l->prev != NULL || l->parent != NULL) { - if (l->parent != NULL) { - l = l->parent; - } else { - l = l->prev; - } - } - } - - /* return */ - *out = l; - *inlen = totlen; - return CRYPT_OK; - -error: - /* free list */ - der_sequence_free(l); - - return err; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_multi.c b/src/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_multi.c deleted file mode 100644 index 38069ebf1d..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_multi.c +++ /dev/null @@ -1,145 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" -#include - - -/** - @file der_decode_sequence_multi.c - ASN.1 DER, decode a SEQUENCE, Tom St Denis -*/ - -#ifdef LTC_DER - -/** - Decode a SEQUENCE type using a VA list - @param in Input buffer - @param inlen Length of input in octets - @remark <...> is of the form (int, unsigned long, void*) - @return CRYPT_OK on success -*/ -int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...) -{ - int err; - ltc_asn1_type type; - unsigned long size, x; - void *data; - va_list args; - ltc_asn1_list *list; - - LTC_ARGCHK(in != NULL); - - /* get size of output that will be required */ - va_start(args, inlen); - x = 0; - for (;;) { - type = (ltc_asn1_type)va_arg(args, int); - size = va_arg(args, unsigned long); - data = va_arg(args, void*); - LTC_UNUSED_PARAM(size); - LTC_UNUSED_PARAM(data); - - if (type == LTC_ASN1_EOL) { - break; - } - - switch (type) { - case LTC_ASN1_BOOLEAN: - case LTC_ASN1_INTEGER: - case LTC_ASN1_SHORT_INTEGER: - case LTC_ASN1_BIT_STRING: - case LTC_ASN1_OCTET_STRING: - case LTC_ASN1_NULL: - case LTC_ASN1_OBJECT_IDENTIFIER: - case LTC_ASN1_IA5_STRING: - case LTC_ASN1_PRINTABLE_STRING: - case LTC_ASN1_UTF8_STRING: - case LTC_ASN1_UTCTIME: - case LTC_ASN1_SET: - case LTC_ASN1_SETOF: - case LTC_ASN1_SEQUENCE: - case LTC_ASN1_CHOICE: - case LTC_ASN1_RAW_BIT_STRING: - case LTC_ASN1_TELETEX_STRING: - case LTC_ASN1_GENERALIZEDTIME: - ++x; - break; - - case LTC_ASN1_EOL: - case LTC_ASN1_CONSTRUCTED: - case LTC_ASN1_CONTEXT_SPECIFIC: - va_end(args); - return CRYPT_INVALID_ARG; - } - } - va_end(args); - - /* allocate structure for x elements */ - if (x == 0) { - return CRYPT_NOP; - } - - list = XCALLOC(sizeof(*list), x); - if (list == NULL) { - return CRYPT_MEM; - } - - /* fill in the structure */ - va_start(args, inlen); - x = 0; - for (;;) { - type = (ltc_asn1_type)va_arg(args, int); - size = va_arg(args, unsigned long); - data = va_arg(args, void*); - - if (type == LTC_ASN1_EOL) { - break; - } - - switch (type) { - case LTC_ASN1_BOOLEAN: - case LTC_ASN1_INTEGER: - case LTC_ASN1_SHORT_INTEGER: - case LTC_ASN1_BIT_STRING: - case LTC_ASN1_OCTET_STRING: - case LTC_ASN1_NULL: - case LTC_ASN1_OBJECT_IDENTIFIER: - case LTC_ASN1_IA5_STRING: - case LTC_ASN1_PRINTABLE_STRING: - case LTC_ASN1_UTF8_STRING: - case LTC_ASN1_UTCTIME: - case LTC_ASN1_SEQUENCE: - case LTC_ASN1_SET: - case LTC_ASN1_SETOF: - case LTC_ASN1_CHOICE: - case LTC_ASN1_RAW_BIT_STRING: - case LTC_ASN1_TELETEX_STRING: - case LTC_ASN1_GENERALIZEDTIME: - LTC_SET_ASN1(list, x++, type, data, size); - break; - /* coverity[dead_error_line] */ - case LTC_ASN1_EOL: - case LTC_ASN1_CONSTRUCTED: - case LTC_ASN1_CONTEXT_SPECIFIC: - break; - } - } - va_end(args); - - err = der_decode_sequence(in, inlen, list, x); - XFREE(list); - return err; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/sequence/der_decode_subject_public_key_info.c b/src/libtomcrypt/src/pk/asn1/der/sequence/der_decode_subject_public_key_info.c deleted file mode 100644 index 2bf8393578..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/sequence/der_decode_subject_public_key_info.c +++ /dev/null @@ -1,112 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" -/** - @file der_decode_subject_public_key_info.c - ASN.1 DER, encode a Subject Public Key structure --nmav -*/ - -#ifdef LTC_DER - -/* AlgorithmIdentifier := SEQUENCE { - * algorithm OBJECT IDENTIFIER, - * parameters ANY DEFINED BY algorithm - * } - * - * SubjectPublicKeyInfo := SEQUENCE { - * algorithm AlgorithmIdentifier, - * subjectPublicKey BIT STRING - * } - */ -/** - Decode a subject public key info - @param in The input buffer - @param inlen The length of the input buffer - @param algorithm One out of the enum #public_key_algorithms - @param public_key The buffer for the public key - @param public_key_len [in/out] The length of the public key buffer and the written length - @param parameters_type The parameters' type out of the enum ltc_asn1_type - @param parameters The parameters to include - @param parameters_len The number of parameters to include - @return CRYPT_OK on success -*/ -int der_decode_subject_public_key_info(const unsigned char *in, unsigned long inlen, - unsigned int algorithm, void* public_key, unsigned long* public_key_len, - unsigned long parameters_type, ltc_asn1_list* parameters, unsigned long parameters_len) -{ - int err; - unsigned long len; - oid_st oid; - unsigned char *tmpbuf; - unsigned long tmpoid[16]; - ltc_asn1_list alg_id[2]; - ltc_asn1_list subject_pubkey[2]; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(inlen != 0); - LTC_ARGCHK(public_key_len != NULL); - - err = pk_get_oid(algorithm, &oid); - if (err != CRYPT_OK) { - return err; - } - - /* see if the OpenSSL DER format RSA public key will work */ - tmpbuf = XCALLOC(1, inlen); - if (tmpbuf == NULL) { - err = CRYPT_MEM; - goto LBL_ERR; - } - - /* this includes the internal hash ID and optional params (NULL in this case) */ - LTC_SET_ASN1(alg_id, 0, LTC_ASN1_OBJECT_IDENTIFIER, tmpoid, sizeof(tmpoid)/sizeof(tmpoid[0])); - LTC_SET_ASN1(alg_id, 1, (ltc_asn1_type)parameters_type, parameters, parameters_len); - - /* the actual format of the SSL DER key is odd, it stores a RSAPublicKey - * in a **BIT** string ... so we have to extract it then proceed to convert bit to octet - */ - LTC_SET_ASN1(subject_pubkey, 0, LTC_ASN1_SEQUENCE, alg_id, 2); - LTC_SET_ASN1(subject_pubkey, 1, LTC_ASN1_RAW_BIT_STRING, tmpbuf, inlen*8U); - - err=der_decode_sequence(in, inlen, subject_pubkey, 2UL); - if (err != CRYPT_OK) { - goto LBL_ERR; - } - - if ((alg_id[0].size != oid.OIDlen) || - XMEMCMP(oid.OID, alg_id[0].data, oid.OIDlen * sizeof(oid.OID[0])) != 0) { - /* OID mismatch */ - err = CRYPT_PK_INVALID_TYPE; - goto LBL_ERR; - } - - len = subject_pubkey[1].size/8; - if (*public_key_len > len) { - XMEMCPY(public_key, subject_pubkey[1].data, len); - *public_key_len = len; - } else { - *public_key_len = len; - err = CRYPT_BUFFER_OVERFLOW; - goto LBL_ERR; - } - - err = CRYPT_OK; - -LBL_ERR: - - XFREE(tmpbuf); - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_ex.c b/src/libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_ex.c deleted file mode 100644 index 80738fd341..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_ex.c +++ /dev/null @@ -1,217 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - - -/** - @file der_encode_sequence_ex.c - ASN.1 DER, encode a SEQUENCE, Tom St Denis -*/ - -#ifdef LTC_DER - -/** - Encode a SEQUENCE - @param list The list of items to encode - @param inlen The number of items in the list - @param out [out] The destination - @param outlen [in/out] The size of the output - @param type_of LTC_ASN1_SEQUENCE or LTC_ASN1_SET/LTC_ASN1_SETOF - @return CRYPT_OK on success -*/ -int der_encode_sequence_ex(ltc_asn1_list *list, unsigned long inlen, - unsigned char *out, unsigned long *outlen, int type_of) -{ - int err; - ltc_asn1_type type; - unsigned long size, x, y, z, i; - void *data; - - LTC_ARGCHK(list != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* get size of output that will be required */ - y = 0; z = 0; - if ((err = der_length_sequence_ex(list, inlen, &y, &z)) != CRYPT_OK) return CRYPT_INVALID_ARG; - - /* too big ? */ - if (*outlen < y) { - *outlen = y; - err = CRYPT_BUFFER_OVERFLOW; - goto LBL_ERR; - } - - /* store header */ - x = 0; - out[x++] = (type_of == LTC_ASN1_SEQUENCE) ? 0x30 : 0x31; - - if (z < 128) { - out[x++] = (unsigned char)z; - } else if (z < 256) { - out[x++] = 0x81; - out[x++] = (unsigned char)z; - } else if (z < 65536UL) { - out[x++] = 0x82; - out[x++] = (unsigned char)((z>>8UL)&255); - out[x++] = (unsigned char)(z&255); - } else if (z < 16777216UL) { - out[x++] = 0x83; - out[x++] = (unsigned char)((z>>16UL)&255); - out[x++] = (unsigned char)((z>>8UL)&255); - out[x++] = (unsigned char)(z&255); - } - - /* store data */ - *outlen -= x; - for (i = 0; i < inlen; i++) { - type = list[i].type; - size = list[i].size; - data = list[i].data; - - if (type == LTC_ASN1_EOL) { - break; - } - - switch (type) { - case LTC_ASN1_BOOLEAN: - z = *outlen; - if ((err = der_encode_boolean(*((int *)data), out + x, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_INTEGER: - z = *outlen; - if ((err = der_encode_integer(data, out + x, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_SHORT_INTEGER: - z = *outlen; - if ((err = der_encode_short_integer(*((unsigned long*)data), out + x, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_BIT_STRING: - z = *outlen; - if ((err = der_encode_bit_string(data, size, out + x, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_RAW_BIT_STRING: - z = *outlen; - if ((err = der_encode_raw_bit_string(data, size, out + x, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_OCTET_STRING: - z = *outlen; - if ((err = der_encode_octet_string(data, size, out + x, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_NULL: - out[x] = 0x05; - out[x+1] = 0x00; - z = 2; - break; - - case LTC_ASN1_OBJECT_IDENTIFIER: - z = *outlen; - if ((err = der_encode_object_identifier(data, size, out + x, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_IA5_STRING: - z = *outlen; - if ((err = der_encode_ia5_string(data, size, out + x, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_PRINTABLE_STRING: - z = *outlen; - if ((err = der_encode_printable_string(data, size, out + x, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_UTF8_STRING: - z = *outlen; - if ((err = der_encode_utf8_string(data, size, out + x, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_UTCTIME: - z = *outlen; - if ((err = der_encode_utctime(data, out + x, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_GENERALIZEDTIME: - z = *outlen; - if ((err = der_encode_generalizedtime(data, out + x, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_SET: - z = *outlen; - if ((err = der_encode_set(data, size, out + x, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_SETOF: - z = *outlen; - if ((err = der_encode_setof(data, size, out + x, &z)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_SEQUENCE: - z = *outlen; - if ((err = der_encode_sequence_ex(data, size, out + x, &z, type)) != CRYPT_OK) { - goto LBL_ERR; - } - break; - - case LTC_ASN1_CHOICE: - case LTC_ASN1_CONSTRUCTED: - case LTC_ASN1_CONTEXT_SPECIFIC: - case LTC_ASN1_EOL: - case LTC_ASN1_TELETEX_STRING: - err = CRYPT_INVALID_ARG; - goto LBL_ERR; - } - - x += z; - *outlen -= z; - } - *outlen = x; - err = CRYPT_OK; - -LBL_ERR: - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_multi.c b/src/libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_multi.c deleted file mode 100644 index 21617a3812..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_multi.c +++ /dev/null @@ -1,149 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" -#include - - -/** - @file der_encode_sequence_multi.c - ASN.1 DER, encode a SEQUENCE, Tom St Denis -*/ - -#ifdef LTC_DER - -/** - Encode a SEQUENCE type using a VA list - @param out [out] Destination for data - @param outlen [in/out] Length of buffer and resulting length of output - @remark <...> is of the form (int, unsigned long, void*) - @return CRYPT_OK on success -*/ -int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...) -{ - int err; - ltc_asn1_type type; - unsigned long size, x; - void *data; - va_list args; - ltc_asn1_list *list; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* get size of output that will be required */ - va_start(args, outlen); - x = 0; - for (;;) { - type = (ltc_asn1_type)va_arg(args, int); - size = va_arg(args, unsigned long); - data = va_arg(args, void*); - LTC_UNUSED_PARAM(size); - LTC_UNUSED_PARAM(data); - - if (type == LTC_ASN1_EOL) { - break; - } - - switch (type) { - case LTC_ASN1_BOOLEAN: - case LTC_ASN1_INTEGER: - case LTC_ASN1_SHORT_INTEGER: - case LTC_ASN1_BIT_STRING: - case LTC_ASN1_OCTET_STRING: - case LTC_ASN1_NULL: - case LTC_ASN1_OBJECT_IDENTIFIER: - case LTC_ASN1_IA5_STRING: - case LTC_ASN1_PRINTABLE_STRING: - case LTC_ASN1_UTF8_STRING: - case LTC_ASN1_UTCTIME: - case LTC_ASN1_SEQUENCE: - case LTC_ASN1_SET: - case LTC_ASN1_SETOF: - case LTC_ASN1_RAW_BIT_STRING: - case LTC_ASN1_GENERALIZEDTIME: - ++x; - break; - - case LTC_ASN1_CHOICE: - case LTC_ASN1_CONSTRUCTED: - case LTC_ASN1_CONTEXT_SPECIFIC: - case LTC_ASN1_EOL: - case LTC_ASN1_TELETEX_STRING: - va_end(args); - return CRYPT_INVALID_ARG; - } - } - va_end(args); - - /* allocate structure for x elements */ - if (x == 0) { - return CRYPT_NOP; - } - - list = XCALLOC(sizeof(*list), x); - if (list == NULL) { - return CRYPT_MEM; - } - - /* fill in the structure */ - va_start(args, outlen); - x = 0; - for (;;) { - type = (ltc_asn1_type)va_arg(args, int); - size = va_arg(args, unsigned long); - data = va_arg(args, void*); - - if (type == LTC_ASN1_EOL) { - break; - } - - switch (type) { - case LTC_ASN1_BOOLEAN: - case LTC_ASN1_INTEGER: - case LTC_ASN1_SHORT_INTEGER: - case LTC_ASN1_BIT_STRING: - case LTC_ASN1_OCTET_STRING: - case LTC_ASN1_NULL: - case LTC_ASN1_OBJECT_IDENTIFIER: - case LTC_ASN1_IA5_STRING: - case LTC_ASN1_PRINTABLE_STRING: - case LTC_ASN1_UTF8_STRING: - case LTC_ASN1_UTCTIME: - case LTC_ASN1_SEQUENCE: - case LTC_ASN1_SET: - case LTC_ASN1_SETOF: - case LTC_ASN1_RAW_BIT_STRING: - case LTC_ASN1_GENERALIZEDTIME: - LTC_SET_ASN1(list, x++, type, data, size); - break; - - case LTC_ASN1_CHOICE: - case LTC_ASN1_CONSTRUCTED: - case LTC_ASN1_CONTEXT_SPECIFIC: - case LTC_ASN1_EOL: - case LTC_ASN1_TELETEX_STRING: - va_end(args); - err = CRYPT_INVALID_ARG; - goto LBL_ERR; - } - } - va_end(args); - - err = der_encode_sequence(list, x, out, outlen); -LBL_ERR: - XFREE(list); - return err; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/sequence/der_encode_subject_public_key_info.c b/src/libtomcrypt/src/pk/asn1/der/sequence/der_encode_subject_public_key_info.c deleted file mode 100644 index ed3eeb6d1a..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/sequence/der_encode_subject_public_key_info.c +++ /dev/null @@ -1,71 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_encode_subject_public_key_info.c - ASN.1 DER, encode a Subject Public Key structure --nmav -*/ - -#ifdef LTC_DER - -/* AlgorithmIdentifier := SEQUENCE { - * algorithm OBJECT IDENTIFIER, - * parameters ANY DEFINED BY algorithm - * } - * - * SubjectPublicKeyInfo := SEQUENCE { - * algorithm AlgorithmIdentifier, - * subjectPublicKey BIT STRING - * } - */ -/** - Encode a subject public key info - @param out The output buffer - @param outlen [in/out] Length of buffer and resulting length of output - @param algorithm One out of the enum #public_key_algorithms - @param public_key The buffer for the public key - @param public_key_len The length of the public key buffer - @param parameters_type The parameters' type out of the enum ltc_asn1_type - @param parameters The parameters to include - @param parameters_len The number of parameters to include - @return CRYPT_OK on success -*/ -int der_encode_subject_public_key_info(unsigned char *out, unsigned long *outlen, - unsigned int algorithm, void* public_key, unsigned long public_key_len, - unsigned long parameters_type, void* parameters, unsigned long parameters_len) -{ - int err; - ltc_asn1_list alg_id[2]; - oid_st oid; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - err = pk_get_oid(algorithm, &oid); - if (err != CRYPT_OK) { - return err; - } - - LTC_SET_ASN1(alg_id, 0, LTC_ASN1_OBJECT_IDENTIFIER, oid.OID, oid.OIDlen); - LTC_SET_ASN1(alg_id, 1, (ltc_asn1_type)parameters_type, parameters, parameters_len); - - return der_encode_sequence_multi(out, outlen, - LTC_ASN1_SEQUENCE, (unsigned long)sizeof(alg_id)/sizeof(alg_id[0]), alg_id, - LTC_ASN1_RAW_BIT_STRING, public_key_len*8U, public_key, - LTC_ASN1_EOL, 0UL, NULL); - -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/asn1/der/sequence/der_length_sequence.c b/src/libtomcrypt/src/pk/asn1/der/sequence/der_length_sequence.c deleted file mode 100644 index 5eb8af4dfd..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/sequence/der_length_sequence.c +++ /dev/null @@ -1,193 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_length_sequence.c - ASN.1 DER, length a SEQUENCE, Tom St Denis -*/ - -#ifdef LTC_DER - -/** - Get the length of a DER sequence - @param list The sequences of items in the SEQUENCE - @param inlen The number of items - @param outlen [out] The length required in octets to store it - @return CRYPT_OK on success -*/ -int der_length_sequence(ltc_asn1_list *list, unsigned long inlen, - unsigned long *outlen) -{ - return der_length_sequence_ex(list, inlen, outlen, NULL); -} - -int der_length_sequence_ex(ltc_asn1_list *list, unsigned long inlen, - unsigned long *outlen, unsigned long *payloadlen) -{ - int err; - ltc_asn1_type type; - unsigned long size, x, y, i, z; - void *data; - - LTC_ARGCHK(list != NULL); - LTC_ARGCHK(outlen != NULL); - - /* get size of output that will be required */ - y = 0; - for (i = 0; i < inlen; i++) { - type = list[i].type; - size = list[i].size; - data = list[i].data; - - if (type == LTC_ASN1_EOL) { - break; - } - - switch (type) { - case LTC_ASN1_BOOLEAN: - if ((err = der_length_boolean(&x)) != CRYPT_OK) { - goto LBL_ERR; - } - y += x; - break; - - case LTC_ASN1_INTEGER: - if ((err = der_length_integer(data, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - y += x; - break; - - case LTC_ASN1_SHORT_INTEGER: - if ((err = der_length_short_integer(*((unsigned long *)data), &x)) != CRYPT_OK) { - goto LBL_ERR; - } - y += x; - break; - - case LTC_ASN1_BIT_STRING: - case LTC_ASN1_RAW_BIT_STRING: - if ((err = der_length_bit_string(size, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - y += x; - break; - - case LTC_ASN1_OCTET_STRING: - if ((err = der_length_octet_string(size, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - y += x; - break; - - case LTC_ASN1_NULL: - y += 2; - break; - - case LTC_ASN1_OBJECT_IDENTIFIER: - if ((err = der_length_object_identifier(data, size, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - y += x; - break; - - case LTC_ASN1_IA5_STRING: - if ((err = der_length_ia5_string(data, size, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - y += x; - break; - - case LTC_ASN1_TELETEX_STRING: - if ((err = der_length_teletex_string(data, size, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - y += x; - break; - - case LTC_ASN1_PRINTABLE_STRING: - if ((err = der_length_printable_string(data, size, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - y += x; - break; - - case LTC_ASN1_UTCTIME: - if ((err = der_length_utctime(data, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - y += x; - break; - - case LTC_ASN1_GENERALIZEDTIME: - if ((err = der_length_generalizedtime(data, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - y += x; - break; - - case LTC_ASN1_UTF8_STRING: - if ((err = der_length_utf8_string(data, size, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - y += x; - break; - - case LTC_ASN1_SET: - case LTC_ASN1_SETOF: - case LTC_ASN1_SEQUENCE: - if ((err = der_length_sequence(data, size, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - y += x; - break; - - - case LTC_ASN1_CHOICE: - case LTC_ASN1_CONSTRUCTED: - case LTC_ASN1_CONTEXT_SPECIFIC: - case LTC_ASN1_EOL: - err = CRYPT_INVALID_ARG; - goto LBL_ERR; - } - } - - /* calc header size */ - z = y; - if (y < 128) { - y += 2; - } else if (y < 256) { - /* 0x30 0x81 LL */ - y += 3; - } else if (y < 65536UL) { - /* 0x30 0x82 LL LL */ - y += 4; - } else if (y < 16777216UL) { - /* 0x30 0x83 LL LL LL */ - y += 5; - } else { - err = CRYPT_INVALID_ARG; - goto LBL_ERR; - } - - /* store size */ - if (payloadlen) *payloadlen = z; - *outlen = y; - err = CRYPT_OK; - -LBL_ERR: - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/sequence/der_sequence_free.c b/src/libtomcrypt/src/pk/asn1/der/sequence/der_sequence_free.c deleted file mode 100644 index b4de90a8bc..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/sequence/der_sequence_free.c +++ /dev/null @@ -1,63 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_sequence_free.c - ASN.1 DER, free's a structure allocated by der_decode_sequence_flexi(), Tom St Denis -*/ - -#ifdef LTC_DER - -/** - Free memory allocated by der_decode_sequence_flexi() - @param in The list to free -*/ -void der_sequence_free(ltc_asn1_list *in) -{ - ltc_asn1_list *l; - - if (!in) return; - - /* walk to the start of the chain */ - while (in->prev != NULL || in->parent != NULL) { - if (in->parent != NULL) { - in = in->parent; - } else { - in = in->prev; - } - } - - /* now walk the list and free stuff */ - while (in != NULL) { - /* is there a child? */ - if (in->child) { - /* disconnect */ - in->child->parent = NULL; - der_sequence_free(in->child); - } - - switch (in->type) { - case LTC_ASN1_SETOF: break; - case LTC_ASN1_INTEGER : if (in->data != NULL) { mp_clear(in->data); } break; - default : if (in->data != NULL) { XFREE(in->data); } - } - - /* move to next and free current */ - l = in->next; - XFREE(in); - in = l; - } -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/sequence/der_sequence_shrink.c b/src/libtomcrypt/src/pk/asn1/der/sequence/der_sequence_shrink.c deleted file mode 100644 index b66355564e..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/sequence/der_sequence_shrink.c +++ /dev/null @@ -1,50 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_sequence_shrink.c - Free memory allocated for CONSTRUCTED, SET or SEQUENCE elements by der_decode_sequence_flexi(), Steffen Jaeckel -*/ - -#ifdef LTC_DER - -/** - Free memory allocated for CONSTRUCTED, - SET or SEQUENCE elements by der_decode_sequence_flexi() - @param in The list to shrink -*/ -void der_sequence_shrink(ltc_asn1_list *in) -{ - if (!in) return; - - /* now walk the list and free stuff */ - while (in != NULL) { - /* is there a child? */ - if (in->child) { - der_sequence_shrink(in->child); - } - - switch (in->type) { - case LTC_ASN1_CONSTRUCTED: - case LTC_ASN1_SET: - case LTC_ASN1_SEQUENCE : if (in->data != NULL) { XFREE(in->data); in->data = NULL; } break; - default: break; - } - - /* move to next and free current */ - in = in->next; - } -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/set/der_encode_set.c b/src/libtomcrypt/src/pk/asn1/der/set/der_encode_set.c deleted file mode 100644 index 70308ed162..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/set/der_encode_set.c +++ /dev/null @@ -1,108 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_encode_set.c - ASN.1 DER, Encode a SET, Tom St Denis -*/ - -#ifdef LTC_DER - -/* LTC define to ASN.1 TAG */ -static int _ltc_to_asn1(ltc_asn1_type v) -{ - switch (v) { - case LTC_ASN1_BOOLEAN: return 0x01; - case LTC_ASN1_INTEGER: - case LTC_ASN1_SHORT_INTEGER: return 0x02; - case LTC_ASN1_RAW_BIT_STRING: - case LTC_ASN1_BIT_STRING: return 0x03; - case LTC_ASN1_OCTET_STRING: return 0x04; - case LTC_ASN1_NULL: return 0x05; - case LTC_ASN1_OBJECT_IDENTIFIER: return 0x06; - case LTC_ASN1_UTF8_STRING: return 0x0C; - case LTC_ASN1_PRINTABLE_STRING: return 0x13; - case LTC_ASN1_TELETEX_STRING: return 0x14; - case LTC_ASN1_IA5_STRING: return 0x16; - case LTC_ASN1_UTCTIME: return 0x17; - case LTC_ASN1_GENERALIZEDTIME: return 0x18; - case LTC_ASN1_SEQUENCE: return 0x30; - case LTC_ASN1_SET: - case LTC_ASN1_SETOF: return 0x31; - case LTC_ASN1_CHOICE: - case LTC_ASN1_CONSTRUCTED: - case LTC_ASN1_CONTEXT_SPECIFIC: - case LTC_ASN1_EOL: return -1; - } - return -1; -} - - -static int _qsort_helper(const void *a, const void *b) -{ - ltc_asn1_list *A = (ltc_asn1_list *)a, *B = (ltc_asn1_list *)b; - int r; - - r = _ltc_to_asn1(A->type) - _ltc_to_asn1(B->type); - - /* for QSORT the order is UNDEFINED if they are "equal" which means it is NOT DETERMINISTIC. So we force it to be :-) */ - if (r == 0) { - /* their order in the original list now determines the position */ - return A->used - B->used; - } else { - return r; - } -} - -/* - Encode a SET type - @param list The list of items to encode - @param inlen The number of items in the list - @param out [out] The destination - @param outlen [in/out] The size of the output - @return CRYPT_OK on success -*/ -int der_encode_set(ltc_asn1_list *list, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - ltc_asn1_list *copy; - unsigned long x; - int err; - - /* make copy of list */ - copy = XCALLOC(inlen, sizeof(*copy)); - if (copy == NULL) { - return CRYPT_MEM; - } - - /* fill in used member with index so we can fully sort it */ - for (x = 0; x < inlen; x++) { - copy[x] = list[x]; - copy[x].used = x; - } - - /* sort it by the "type" field */ - XQSORT(copy, inlen, sizeof(*copy), &_qsort_helper); - - /* call der_encode_sequence_ex() */ - err = der_encode_sequence_ex(copy, inlen, out, outlen, LTC_ASN1_SET); - - /* free list */ - XFREE(copy); - - return err; -} - - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/set/der_encode_setof.c b/src/libtomcrypt/src/pk/asn1/der/set/der_encode_setof.c deleted file mode 100644 index 8b2be8e3e8..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/set/der_encode_setof.c +++ /dev/null @@ -1,161 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_encode_setof.c - ASN.1 DER, Encode SET OF, Tom St Denis -*/ - -#ifdef LTC_DER - -struct edge { - unsigned char *start; - unsigned long size; -}; - -static int _qsort_helper(const void *a, const void *b) -{ - struct edge *A = (struct edge *)a, *B = (struct edge *)b; - int r; - unsigned long x; - - /* compare min length */ - r = XMEMCMP(A->start, B->start, MIN(A->size, B->size)); - - if (r == 0 && A->size != B->size) { - if (A->size > B->size) { - for (x = B->size; x < A->size; x++) { - if (A->start[x]) { - return 1; - } - } - } else { - for (x = A->size; x < B->size; x++) { - if (B->start[x]) { - return -1; - } - } - } - } - - return r; -} - -/** - Encode a SETOF stucture - @param list The list of items to encode - @param inlen The number of items in the list - @param out [out] The destination - @param outlen [in/out] The size of the output - @return CRYPT_OK on success -*/ -int der_encode_setof(ltc_asn1_list *list, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - unsigned long x, y, z; - ptrdiff_t hdrlen; - int err; - struct edge *edges; - unsigned char *ptr, *buf; - - /* check that they're all the same type */ - for (x = 1; x < inlen; x++) { - if (list[x].type != list[x-1].type) { - return CRYPT_INVALID_ARG; - } - } - - /* alloc buffer to store copy of output */ - buf = XCALLOC(1, *outlen); - if (buf == NULL) { - return CRYPT_MEM; - } - - /* encode list */ - if ((err = der_encode_sequence_ex(list, inlen, buf, outlen, LTC_ASN1_SETOF)) != CRYPT_OK) { - XFREE(buf); - return err; - } - - /* allocate edges */ - edges = XCALLOC(inlen, sizeof(*edges)); - if (edges == NULL) { - XFREE(buf); - return CRYPT_MEM; - } - - /* skip header */ - ptr = buf + 1; - - /* now skip length data */ - x = *ptr++; - if (x >= 0x80) { - ptr += (x & 0x7F); - } - - /* get the size of the static header */ - hdrlen = ptr - buf; - - - /* scan for edges */ - x = 0; - while (ptr < (buf + *outlen)) { - /* store start */ - edges[x].start = ptr; - - /* skip type */ - z = 1; - - /* parse length */ - y = ptr[z++]; - if (y < 128) { - edges[x].size = y; - } else { - y &= 0x7F; - edges[x].size = 0; - while (y--) { - edges[x].size = (edges[x].size << 8) | ((unsigned long)ptr[z++]); - } - } - - /* skip content */ - edges[x].size += z; - ptr += edges[x].size; - ++x; - } - - /* sort based on contents (using edges) */ - XQSORT(edges, inlen, sizeof(*edges), &_qsort_helper); - - /* copy static header */ - XMEMCPY(out, buf, hdrlen); - - /* copy+sort using edges+indecies to output from buffer */ - for (y = (unsigned long)hdrlen, x = 0; x < inlen; x++) { - XMEMCPY(out+y, edges[x].start, edges[x].size); - y += edges[x].size; - } - -#ifdef LTC_CLEAN_STACK - zeromem(buf, *outlen); -#endif - - /* free buffers */ - XFREE(edges); - XFREE(buf); - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/short_integer/der_decode_short_integer.c b/src/libtomcrypt/src/pk/asn1/der/short_integer/der_decode_short_integer.c deleted file mode 100644 index 5af69a73f8..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/short_integer/der_decode_short_integer.c +++ /dev/null @@ -1,66 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_decode_short_integer.c - ASN.1 DER, decode an integer, Tom St Denis -*/ - - -#ifdef LTC_DER - -/** - Read a short integer - @param in The DER encoded data - @param inlen Size of data - @param num [out] The integer to decode - @return CRYPT_OK if successful -*/ -int der_decode_short_integer(const unsigned char *in, unsigned long inlen, unsigned long *num) -{ - unsigned long len, x, y; - - LTC_ARGCHK(num != NULL); - LTC_ARGCHK(in != NULL); - - /* check length */ - if (inlen < 2) { - return CRYPT_INVALID_PACKET; - } - - /* check header */ - x = 0; - if ((in[x++] & 0x1F) != 0x02) { - return CRYPT_INVALID_PACKET; - } - - /* get the packet len */ - len = in[x++]; - - if (x + len > inlen) { - return CRYPT_INVALID_PACKET; - } - - /* read number */ - y = 0; - while (len--) { - y = (y<<8) | (unsigned long)in[x++]; - } - *num = y; - - return CRYPT_OK; - -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/short_integer/der_encode_short_integer.c b/src/libtomcrypt/src/pk/asn1/der/short_integer/der_encode_short_integer.c deleted file mode 100644 index b9e761469e..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/short_integer/der_encode_short_integer.c +++ /dev/null @@ -1,95 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_encode_short_integer.c - ASN.1 DER, encode an integer, Tom St Denis -*/ - - -#ifdef LTC_DER - -/** - Store a short integer in the range (0,2^32-1) - @param num The integer to encode - @param out [out] The destination for the DER encoded integers - @param outlen [in/out] The max size and resulting size of the DER encoded integers - @return CRYPT_OK if successful -*/ -int der_encode_short_integer(unsigned long num, unsigned char *out, unsigned long *outlen) -{ - unsigned long len, x, y, z; - int err; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* force to 32 bits */ - num &= 0xFFFFFFFFUL; - - /* find out how big this will be */ - if ((err = der_length_short_integer(num, &len)) != CRYPT_OK) { - return err; - } - - if (*outlen < len) { - *outlen = len; - return CRYPT_BUFFER_OVERFLOW; - } - - /* get len of output */ - z = 0; - y = num; - while (y) { - ++z; - y >>= 8; - } - - /* handle zero */ - if (z == 0) { - z = 1; - } - - /* see if msb is set */ - z += (num&(1UL<<((z<<3) - 1))) ? 1 : 0; - - /* adjust the number so the msB is non-zero */ - for (x = 0; (z <= 4) && (x < (4 - z)); x++) { - num <<= 8; - } - - /* store header */ - x = 0; - out[x++] = 0x02; - out[x++] = (unsigned char)z; - - /* if 31st bit is set output a leading zero and decrement count */ - if (z == 5) { - out[x++] = 0; - --z; - } - - /* store values */ - for (y = 0; y < z; y++) { - out[x++] = (unsigned char)((num >> 24) & 0xFF); - num <<= 8; - } - - /* we good */ - *outlen = x; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/short_integer/der_length_short_integer.c b/src/libtomcrypt/src/pk/asn1/der/short_integer/der_length_short_integer.c deleted file mode 100644 index 1f7de45472..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/short_integer/der_length_short_integer.c +++ /dev/null @@ -1,68 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_length_short_integer.c - ASN.1 DER, get length of encoding, Tom St Denis -*/ - - -#ifdef LTC_DER -/** - Gets length of DER encoding of num - @param num The integer to get the size of - @param outlen [out] The length of the DER encoding for the given integer - @return CRYPT_OK if successful -*/ -int der_length_short_integer(unsigned long num, unsigned long *outlen) -{ - unsigned long z, y, len; - - LTC_ARGCHK(outlen != NULL); - - /* force to 32 bits */ - num &= 0xFFFFFFFFUL; - - /* get the number of bytes */ - z = 0; - y = num; - while (y) { - ++z; - y >>= 8; - } - - /* handle zero */ - if (z == 0) { - z = 1; - } - - /* we need a 0x02 to indicate it's INTEGER */ - len = 1; - - /* length byte */ - ++len; - - /* bytes in value */ - len += z; - - /* see if msb is set */ - len += (num&(1UL<<((z<<3) - 1))) ? 1 : 0; - - /* return length */ - *outlen = len; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/teletex_string/der_decode_teletex_string.c b/src/libtomcrypt/src/pk/asn1/der/teletex_string/der_decode_teletex_string.c deleted file mode 100644 index c863fbbe33..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/teletex_string/der_decode_teletex_string.c +++ /dev/null @@ -1,93 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_decode_teletex_string.c - ASN.1 DER, encode a teletex STRING -*/ - -#ifdef LTC_DER - -/** - Store a teletex STRING - @param in The DER encoded teletex STRING - @param inlen The size of the DER teletex STRING - @param out [out] The array of octets stored (one per char) - @param outlen [in/out] The number of octets stored - @return CRYPT_OK if successful -*/ -int der_decode_teletex_string(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - unsigned long x, y, len; - int t; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* must have header at least */ - if (inlen < 2) { - return CRYPT_INVALID_PACKET; - } - - /* check for 0x14 */ - if ((in[0] & 0x1F) != 0x14) { - return CRYPT_INVALID_PACKET; - } - x = 1; - - /* decode the length */ - if (in[x] & 0x80) { - /* valid # of bytes in length are 1,2,3 */ - y = in[x] & 0x7F; - if ((y == 0) || (y > 3) || ((x + y) > inlen)) { - return CRYPT_INVALID_PACKET; - } - - /* read the length in */ - len = 0; - ++x; - while (y--) { - len = (len << 8) | in[x++]; - } - } else { - len = in[x++] & 0x7F; - } - - /* is it too long? */ - if (len > *outlen) { - *outlen = len; - return CRYPT_BUFFER_OVERFLOW; - } - - if (len + x > inlen) { - return CRYPT_INVALID_PACKET; - } - - /* read the data */ - for (y = 0; y < len; y++) { - t = der_teletex_value_decode(in[x++]); - if (t == -1) { - return CRYPT_INVALID_ARG; - } - out[y] = t; - } - - *outlen = y; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/teletex_string/der_length_teletex_string.c b/src/libtomcrypt/src/pk/asn1/der/teletex_string/der_length_teletex_string.c deleted file mode 100644 index 388d1e751d..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/teletex_string/der_length_teletex_string.c +++ /dev/null @@ -1,208 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_length_teletex_string.c - ASN.1 DER, get length of teletex STRING -*/ - -#ifdef LTC_DER - -static const struct { - int code, value; -} teletex_table[] = { -{ '\0', 0 }, -{ '\a', 7 }, -{ '\b', 8 }, -{ '\t', 9 }, -{ '\n', 10 }, -{ '\v', 11 }, -{ '\f', 12 }, -{ '\r', 13 }, -{ ' ', 32 }, -{ '!', 33 }, -{ '"', 34 }, -{ '%', 37 }, -{ '&', 38 }, -{ '\'', 39 }, -{ '(', 40 }, -{ ')', 41 }, -{ '+', 43 }, -{ ',', 44 }, -{ '-', 45 }, -{ '.', 46 }, -{ '/', 47 }, -{ '0', 48 }, -{ '1', 49 }, -{ '2', 50 }, -{ '3', 51 }, -{ '4', 52 }, -{ '5', 53 }, -{ '6', 54 }, -{ '7', 55 }, -{ '8', 56 }, -{ '9', 57 }, -{ ':', 58 }, -{ ';', 59 }, -{ '<', 60 }, -{ '=', 61 }, -{ '>', 62 }, -{ '?', 63 }, -{ '@', 64 }, -{ 'A', 65 }, -{ 'B', 66 }, -{ 'C', 67 }, -{ 'D', 68 }, -{ 'E', 69 }, -{ 'F', 70 }, -{ 'G', 71 }, -{ 'H', 72 }, -{ 'I', 73 }, -{ 'J', 74 }, -{ 'K', 75 }, -{ 'L', 76 }, -{ 'M', 77 }, -{ 'N', 78 }, -{ 'O', 79 }, -{ 'P', 80 }, -{ 'Q', 81 }, -{ 'R', 82 }, -{ 'S', 83 }, -{ 'T', 84 }, -{ 'U', 85 }, -{ 'V', 86 }, -{ 'W', 87 }, -{ 'X', 88 }, -{ 'Y', 89 }, -{ 'Z', 90 }, -{ '[', 91 }, -{ ']', 93 }, -{ '_', 95 }, -{ 'a', 97 }, -{ 'b', 98 }, -{ 'c', 99 }, -{ 'd', 100 }, -{ 'e', 101 }, -{ 'f', 102 }, -{ 'g', 103 }, -{ 'h', 104 }, -{ 'i', 105 }, -{ 'j', 106 }, -{ 'k', 107 }, -{ 'l', 108 }, -{ 'm', 109 }, -{ 'n', 110 }, -{ 'o', 111 }, -{ 'p', 112 }, -{ 'q', 113 }, -{ 'r', 114 }, -{ 's', 115 }, -{ 't', 116 }, -{ 'u', 117 }, -{ 'v', 118 }, -{ 'w', 119 }, -{ 'x', 120 }, -{ 'y', 121 }, -{ 'z', 122 }, -{ '|', 124 }, -{ ' ', 160 }, -{ 0xa1, 161 }, -{ 0xa2, 162 }, -{ 0xa3, 163 }, -{ '$', 164 }, -{ 0xa5, 165 }, -{ '#', 166 }, -{ 0xa7, 167 }, -{ 0xa4, 168 }, -{ 0xab, 171 }, -{ 0xb0, 176 }, -{ 0xb1, 177 }, -{ 0xb2, 178 }, -{ 0xb3, 179 }, -{ 0xd7, 180 }, -{ 0xb5, 181 }, -{ 0xb6, 182 }, -{ 0xb7, 183 }, -{ 0xf7, 184 }, -{ 0xbb, 187 }, -{ 0xbc, 188 }, -{ 0xbd, 189 }, -{ 0xbe, 190 }, -{ 0xbf, 191 }, -}; - -int der_teletex_char_encode(int c) -{ - int x; - for (x = 0; x < (int)(sizeof(teletex_table)/sizeof(teletex_table[0])); x++) { - if (teletex_table[x].code == c) { - return teletex_table[x].value; - } - } - return -1; -} - -int der_teletex_value_decode(int v) -{ - int x; - for (x = 0; x < (int)(sizeof(teletex_table)/sizeof(teletex_table[0])); x++) { - if (teletex_table[x].value == v) { - return teletex_table[x].code; - } - } - return -1; -} - -/** - Gets length of DER encoding of teletex STRING - @param octets The values you want to encode - @param noctets The number of octets in the string to encode - @param outlen [out] The length of the DER encoding for the given string - @return CRYPT_OK if successful -*/ -int der_length_teletex_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen) -{ - unsigned long x; - - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(octets != NULL); - - /* scan string for validity */ - for (x = 0; x < noctets; x++) { - if (der_teletex_char_encode(octets[x]) == -1) { - return CRYPT_INVALID_ARG; - } - } - - if (noctets < 128) { - /* 16 LL DD DD DD ... */ - *outlen = 2 + noctets; - } else if (noctets < 256) { - /* 16 81 LL DD DD DD ... */ - *outlen = 3 + noctets; - } else if (noctets < 65536UL) { - /* 16 82 LL LL DD DD DD ... */ - *outlen = 4 + noctets; - } else if (noctets < 16777216UL) { - /* 16 83 LL LL LL DD DD DD ... */ - *outlen = 5 + noctets; - } else { - return CRYPT_INVALID_ARG; - } - - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/utctime/der_decode_utctime.c b/src/libtomcrypt/src/pk/asn1/der/utctime/der_decode_utctime.c deleted file mode 100644 index cfacdb0085..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/utctime/der_decode_utctime.c +++ /dev/null @@ -1,125 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_decode_utctime.c - ASN.1 DER, decode a UTCTIME, Tom St Denis -*/ - -#ifdef LTC_DER - -static int _char_to_int(unsigned char x) -{ - switch (x) { - case '0': return 0; - case '1': return 1; - case '2': return 2; - case '3': return 3; - case '4': return 4; - case '5': return 5; - case '6': return 6; - case '7': return 7; - case '8': return 8; - case '9': return 9; - default: return 100; - } -} - -#define DECODE_V(y, max) \ - y = _char_to_int(buf[x])*10 + _char_to_int(buf[x+1]); \ - if (y >= max) return CRYPT_INVALID_PACKET; \ - x += 2; - -/** - Decodes a UTC time structure in DER format (reads all 6 valid encoding formats) - @param in Input buffer - @param inlen Length of input buffer in octets - @param out [out] Destination of UTC time structure - @return CRYPT_OK if successful -*/ -int der_decode_utctime(const unsigned char *in, unsigned long *inlen, - ltc_utctime *out) -{ - unsigned char buf[32] = { 0 }; /* initialize as all zeroes */ - unsigned long x; - int y; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(inlen != NULL); - LTC_ARGCHK(out != NULL); - - /* check header */ - if (*inlen < 2UL || (in[1] >= sizeof(buf)) || ((in[1] + 2UL) > *inlen)) { - return CRYPT_INVALID_PACKET; - } - - /* decode the string */ - for (x = 0; x < in[1]; x++) { - y = der_ia5_value_decode(in[x+2]); - if (y == -1) { - return CRYPT_INVALID_PACKET; - } - buf[x] = y; - } - *inlen = 2 + x; - - - /* possible encodings are -YYMMDDhhmmZ -YYMMDDhhmm+hh'mm' -YYMMDDhhmm-hh'mm' -YYMMDDhhmmssZ -YYMMDDhhmmss+hh'mm' -YYMMDDhhmmss-hh'mm' - - So let's do a trivial decode upto [including] mm - */ - - x = 0; - DECODE_V(out->YY, 100); - DECODE_V(out->MM, 13); - DECODE_V(out->DD, 32); - DECODE_V(out->hh, 24); - DECODE_V(out->mm, 60); - - /* clear timezone and seconds info */ - out->off_dir = out->off_hh = out->off_mm = out->ss = 0; - - /* now is it Z, +, - or 0-9 */ - if (buf[x] == 'Z') { - return CRYPT_OK; - } else if (buf[x] == '+' || buf[x] == '-') { - out->off_dir = (buf[x++] == '+') ? 0 : 1; - DECODE_V(out->off_hh, 24); - DECODE_V(out->off_mm, 60); - return CRYPT_OK; - } - - /* decode seconds */ - DECODE_V(out->ss, 60); - - /* now is it Z, +, - */ - if (buf[x] == 'Z') { - return CRYPT_OK; - } else if (buf[x] == '+' || buf[x] == '-') { - out->off_dir = (buf[x++] == '+') ? 0 : 1; - DECODE_V(out->off_hh, 24); - DECODE_V(out->off_mm, 60); - return CRYPT_OK; - } else { - return CRYPT_INVALID_PACKET; - } -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/utctime/der_encode_utctime.c b/src/libtomcrypt/src/pk/asn1/der/utctime/der_encode_utctime.c deleted file mode 100644 index e74d3ebccb..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/utctime/der_encode_utctime.c +++ /dev/null @@ -1,81 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_encode_utctime.c - ASN.1 DER, encode a UTCTIME, Tom St Denis -*/ - -#ifdef LTC_DER - -static const char * const baseten = "0123456789"; - -#define STORE_V(y) \ - out[x++] = der_ia5_char_encode(baseten[(y/10) % 10]); \ - out[x++] = der_ia5_char_encode(baseten[y % 10]); - -/** - Encodes a UTC time structure in DER format - @param utctime The UTC time structure to encode - @param out The destination of the DER encoding of the UTC time structure - @param outlen [in/out] The length of the DER encoding - @return CRYPT_OK if successful -*/ -int der_encode_utctime(ltc_utctime *utctime, - unsigned char *out, unsigned long *outlen) -{ - unsigned long x, tmplen; - int err; - - LTC_ARGCHK(utctime != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - if ((err = der_length_utctime(utctime, &tmplen)) != CRYPT_OK) { - return err; - } - if (tmplen > *outlen) { - *outlen = tmplen; - return CRYPT_BUFFER_OVERFLOW; - } - - /* store header */ - out[0] = 0x17; - - /* store values */ - x = 2; - STORE_V(utctime->YY); - STORE_V(utctime->MM); - STORE_V(utctime->DD); - STORE_V(utctime->hh); - STORE_V(utctime->mm); - STORE_V(utctime->ss); - - if (utctime->off_mm || utctime->off_hh) { - out[x++] = der_ia5_char_encode(utctime->off_dir ? '-' : '+'); - STORE_V(utctime->off_hh); - STORE_V(utctime->off_mm); - } else { - out[x++] = der_ia5_char_encode('Z'); - } - - /* store length */ - out[1] = (unsigned char)(x - 2); - - /* all good let's return */ - *outlen = x; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/utctime/der_length_utctime.c b/src/libtomcrypt/src/pk/asn1/der/utctime/der_length_utctime.c deleted file mode 100644 index 715020f657..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/utctime/der_length_utctime.c +++ /dev/null @@ -1,44 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_length_utctime.c - ASN.1 DER, get length of UTCTIME, Tom St Denis -*/ - -#ifdef LTC_DER - -/** - Gets length of DER encoding of UTCTIME - @param utctime The UTC time structure to get the size of - @param outlen [out] The length of the DER encoding - @return CRYPT_OK if successful -*/ -int der_length_utctime(ltc_utctime *utctime, unsigned long *outlen) -{ - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(utctime != NULL); - - if (utctime->off_hh == 0 && utctime->off_mm == 0) { - /* we encode as YYMMDDhhmmssZ */ - *outlen = 2 + 13; - } else { - /* we encode as YYMMDDhhmmss{+|-}hh'mm' */ - *outlen = 2 + 17; - } - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/utf8/der_decode_utf8_string.c b/src/libtomcrypt/src/pk/asn1/der/utf8/der_decode_utf8_string.c deleted file mode 100644 index 8d1ad2b2f7..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/utf8/der_decode_utf8_string.c +++ /dev/null @@ -1,114 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_decode_utf8_string.c - ASN.1 DER, encode a UTF8 STRING, Tom St Denis -*/ - - -#ifdef LTC_DER - -/** - Store a UTF8 STRING - @param in The DER encoded UTF8 STRING - @param inlen The size of the DER UTF8 STRING - @param out [out] The array of utf8s stored (one per char) - @param outlen [in/out] The number of utf8s stored - @return CRYPT_OK if successful -*/ -int der_decode_utf8_string(const unsigned char *in, unsigned long inlen, - wchar_t *out, unsigned long *outlen) -{ - wchar_t tmp; - unsigned long x, y, z, len; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* must have header at least */ - if (inlen < 2) { - return CRYPT_INVALID_PACKET; - } - - /* check for 0x0C */ - if ((in[0] & 0x1F) != 0x0C) { - return CRYPT_INVALID_PACKET; - } - x = 1; - - /* decode the length */ - if (in[x] & 0x80) { - /* valid # of bytes in length are 1,2,3 */ - y = in[x] & 0x7F; - if ((y == 0) || (y > 3) || ((x + y) > inlen)) { - return CRYPT_INVALID_PACKET; - } - - /* read the length in */ - len = 0; - ++x; - while (y--) { - len = (len << 8) | in[x++]; - } - } else { - len = in[x++] & 0x7F; - } - - if (len + x > inlen) { - return CRYPT_INVALID_PACKET; - } - - /* proceed to decode */ - for (y = 0; x < inlen; ) { - /* get first byte */ - tmp = in[x++]; - - /* count number of bytes */ - for (z = 0; (tmp & 0x80) && (z <= 4); z++, tmp = (tmp << 1) & 0xFF); - - if (z > 4 || (x + (z - 1) > inlen)) { - return CRYPT_INVALID_PACKET; - } - - /* decode, grab upper bits */ - tmp >>= z; - - /* grab remaining bytes */ - if (z > 1) { --z; } - while (z-- != 0) { - if ((in[x] & 0xC0) != 0x80) { - return CRYPT_INVALID_PACKET; - } - tmp = (tmp << 6) | ((wchar_t)in[x++] & 0x3F); - } - - if (y < *outlen) { - out[y] = tmp; - } - y++; - } - if (y > *outlen) { - err = CRYPT_BUFFER_OVERFLOW; - } else { - err = CRYPT_OK; - } - *outlen = y; - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/utf8/der_encode_utf8_string.c b/src/libtomcrypt/src/pk/asn1/der/utf8/der_encode_utf8_string.c deleted file mode 100644 index a187b20f77..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/utf8/der_encode_utf8_string.c +++ /dev/null @@ -1,104 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_encode_utf8_string.c - ASN.1 DER, encode a UTF8 STRING, Tom St Denis -*/ - - -#ifdef LTC_DER - -/** - Store an UTF8 STRING - @param in The array of UTF8 to store (one per wchar_t) - @param inlen The number of UTF8 to store - @param out [out] The destination for the DER encoded UTF8 STRING - @param outlen [in/out] The max size and resulting size of the DER UTF8 STRING - @return CRYPT_OK if successful -*/ -int der_encode_utf8_string(const wchar_t *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen) -{ - unsigned long x, y, len; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* get the size */ - for (x = len = 0; x < inlen; x++) { - if (!der_utf8_valid_char(in[x])) return CRYPT_INVALID_ARG; - len += der_utf8_charsize(in[x]); - } - - if (len < 128) { - y = 2 + len; - } else if (len < 256) { - y = 3 + len; - } else if (len < 65536UL) { - y = 4 + len; - } else if (len < 16777216UL) { - y = 5 + len; - } else { - return CRYPT_INVALID_ARG; - } - - /* too big? */ - if (y > *outlen) { - *outlen = y; - return CRYPT_BUFFER_OVERFLOW; - } - - /* encode the header+len */ - x = 0; - out[x++] = 0x0C; - if (len < 128) { - out[x++] = (unsigned char)len; - } else if (len < 256) { - out[x++] = 0x81; - out[x++] = (unsigned char)len; - } else if (len < 65536UL) { - out[x++] = 0x82; - out[x++] = (unsigned char)((len>>8)&255); - out[x++] = (unsigned char)(len&255); - } else if (len < 16777216UL) { - out[x++] = 0x83; - out[x++] = (unsigned char)((len>>16)&255); - out[x++] = (unsigned char)((len>>8)&255); - out[x++] = (unsigned char)(len&255); - } else { - /* coverity[dead_error_line] */ - return CRYPT_INVALID_ARG; - } - - /* store UTF8 */ - for (y = 0; y < inlen; y++) { - switch (der_utf8_charsize(in[y])) { - case 1: out[x++] = (unsigned char)in[y]; break; - case 2: out[x++] = 0xC0 | ((in[y] >> 6) & 0x1F); out[x++] = 0x80 | (in[y] & 0x3F); break; - case 3: out[x++] = 0xE0 | ((in[y] >> 12) & 0x0F); out[x++] = 0x80 | ((in[y] >> 6) & 0x3F); out[x++] = 0x80 | (in[y] & 0x3F); break; -#if !defined(LTC_WCHAR_MAX) || LTC_WCHAR_MAX > 0xFFFF - case 4: out[x++] = 0xF0 | ((in[y] >> 18) & 0x07); out[x++] = 0x80 | ((in[y] >> 12) & 0x3F); out[x++] = 0x80 | ((in[y] >> 6) & 0x3F); out[x++] = 0x80 | (in[y] & 0x3F); break; -#endif - } - } - - /* retun length */ - *outlen = x; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/asn1/der/utf8/der_length_utf8_string.c b/src/libtomcrypt/src/pk/asn1/der/utf8/der_length_utf8_string.c deleted file mode 100644 index f6f45584c8..0000000000 --- a/src/libtomcrypt/src/pk/asn1/der/utf8/der_length_utf8_string.c +++ /dev/null @@ -1,102 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file der_length_utf8_string.c - ASN.1 DER, get length of UTF8 STRING, Tom St Denis -*/ - -#ifdef LTC_DER - -/** Return the size in bytes of a UTF-8 character - @param c The UTF-8 character to measure - @return The size in bytes -*/ -unsigned long der_utf8_charsize(const wchar_t c) -{ - if (c <= 0x7F) { - return 1; - } else if (c <= 0x7FF) { - return 2; -#if LTC_WCHAR_MAX == 0xFFFF - } else { - return 3; - } -#else - } else if (c <= 0xFFFF) { - return 3; - } else { - return 4; - } -#endif -} - -/** - Test whether the given code point is valid character - @param c The UTF-8 character to test - @return 1 - valid, 0 - invalid -*/ -int der_utf8_valid_char(const wchar_t c) -{ - LTC_UNUSED_PARAM(c); -#if !defined(LTC_WCHAR_MAX) || LTC_WCHAR_MAX > 0xFFFF - if (c > 0x10FFFF) return 0; -#endif -#if LTC_WCHAR_MAX != 0xFFFF && LTC_WCHAR_MAX != 0xFFFFFFFF - if (c < 0) return 0; -#endif - return 1; -} - -/** - Gets length of DER encoding of UTF8 STRING - @param in The characters to measure the length of - @param noctets The number of octets in the string to encode - @param outlen [out] The length of the DER encoding for the given string - @return CRYPT_OK if successful -*/ -int der_length_utf8_string(const wchar_t *in, unsigned long noctets, unsigned long *outlen) -{ - unsigned long x, len; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(outlen != NULL); - - len = 0; - for (x = 0; x < noctets; x++) { - if (!der_utf8_valid_char(in[x])) return CRYPT_INVALID_ARG; - len += der_utf8_charsize(in[x]); - } - - if (len < 128) { - /* 0C LL DD DD DD ... */ - *outlen = 2 + len; - } else if (len < 256) { - /* 0C 81 LL DD DD DD ... */ - *outlen = 3 + len; - } else if (len < 65536UL) { - /* 0C 82 LL LL DD DD DD ... */ - *outlen = 4 + len; - } else if (len < 16777216UL) { - /* 0C 83 LL LL LL DD DD DD ... */ - *outlen = 5 + len; - } else { - return CRYPT_INVALID_ARG; - } - - return CRYPT_OK; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dh/dh.c b/src/libtomcrypt/src/pk/dh/dh.c deleted file mode 100644 index b48eb6b44a..0000000000 --- a/src/libtomcrypt/src/pk/dh/dh.c +++ /dev/null @@ -1,237 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_MDH - -/* This holds the key settings. ***MUST*** be organized by size from smallest to largest. */ -const ltc_dh_set_type ltc_dh_sets[] = { -#ifdef LTC_DH768 -{ /* 768-bit MODP Group 1 - https://tools.ietf.org/html/rfc7296#appendix-B.1 */ - 96, - "DH-768", - "2", - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" - "E485B576625E7EC6F44C42E9A63A3620FFFFFFFFFFFFFFFF" -}, -#endif -#ifdef LTC_DH1024 -{ /* 1024-bit MODP Group 2 - https://tools.ietf.org/html/rfc7296#appendix-B.2 */ - 128, - "DH-1024", - "2", - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381" - "FFFFFFFFFFFFFFFF" -}, -#endif -#ifdef LTC_DH1536 -{ /* 1536-bit MODP Group 5 - https://tools.ietf.org/html/rfc3526#section-2 */ - 192, - "DH-1536", - "2", - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" - "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" - "83655D23DCA3AD961C62F356208552BB9ED529077096966D" - "670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF" -}, -#endif -#ifdef LTC_DH2048 -{ /* 2048-bit MODP Group 14 - https://tools.ietf.org/html/rfc3526#section-3 */ - 256, - "DH-2048", - "2", - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" - "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" - "83655D23DCA3AD961C62F356208552BB9ED529077096966D" - "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" - "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" - "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" - "15728E5A8AACAA68FFFFFFFFFFFFFFFF" -}, -#endif -#ifdef LTC_DH3072 -{ /* 3072-bit MODP Group 15 - https://tools.ietf.org/html/rfc3526#section-4 */ - 384, - "DH-3072", - "2", - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" - "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" - "83655D23DCA3AD961C62F356208552BB9ED529077096966D" - "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" - "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" - "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" - "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" - "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" - "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" - "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" - "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" - "43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF" -}, -#endif -#ifdef LTC_DH4096 -{ /* 4096-bit MODP Group 16 - https://tools.ietf.org/html/rfc3526#section-5 */ - 512, - "DH-4096", - "2", - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" - "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" - "83655D23DCA3AD961C62F356208552BB9ED529077096966D" - "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" - "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" - "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" - "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" - "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" - "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" - "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" - "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" - "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" - "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" - "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" - "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" - "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" - "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199" - "FFFFFFFFFFFFFFFF" -}, -#endif -#ifdef LTC_DH6144 -{ /* 6144-bit MODP Group 17 - https://tools.ietf.org/html/rfc3526#section-6 */ - 768, - "DH-6144", - "2", - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" - "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" - "83655D23DCA3AD961C62F356208552BB9ED529077096966D" - "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" - "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" - "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" - "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" - "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" - "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" - "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" - "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" - "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" - "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" - "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" - "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" - "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" - "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492" - "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BD" - "F8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831" - "179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1B" - "DB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF" - "5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6" - "D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F3" - "23A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA" - "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE328" - "06A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C" - "DA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE" - "12BF2D5B0B7474D6E694F91E6DCC4024FFFFFFFFFFFFFFFF" -}, -#endif -#ifdef LTC_DH8192 -{ /* 8192-bit MODP Group 18 - https://tools.ietf.org/html/rfc3526#section-7 */ - 1024, - "DH-8192", - "2", - "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" - "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" - "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" - "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" - "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" - "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" - "83655D23DCA3AD961C62F356208552BB9ED529077096966D" - "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" - "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" - "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" - "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" - "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" - "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" - "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" - "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" - "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" - "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" - "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" - "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" - "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" - "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492" - "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BD" - "F8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831" - "179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1B" - "DB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF" - "5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6" - "D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F3" - "23A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA" - "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE328" - "06A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C" - "DA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE" - "12BF2D5B0B7474D6E694F91E6DBE115974A3926F12FEE5E4" - "38777CB6A932DF8CD8BEC4D073B931BA3BC832B68D9DD300" - "741FA7BF8AFC47ED2576F6936BA424663AAB639C5AE4F568" - "3423B4742BF1C978238F16CBE39D652DE3FDB8BEFC848AD9" - "22222E04A4037C0713EB57A81A23F0C73473FC646CEA306B" - "4BCBC8862F8385DDFA9D4B7FA2C087E879683303ED5BDD3A" - "062B3CF5B3A278A66D2A13F83F44F82DDF310EE074AB6A36" - "4597E899A0255DC164F31CC50846851DF9AB48195DED7EA1" - "B1D510BD7EE74D73FAF36BC31ECFA268359046F4EB879F92" - "4009438B481C6CD7889A002ED5EE382BC9190DA6FC026E47" - "9558E4475677E9AA9E3050E2765694DFC81F56E880B96E71" - "60C980DD98EDD3DFFFFFFFFFFFFFFFFF" -}, -#endif -{ - 0, - NULL, - NULL, - NULL -} -}; - -/** - Returns the DH group size (octets) for given key - @param key The DH key to get the size of - @return The group size in octets (0 on error) - */ -int dh_get_groupsize(dh_key *key) -{ - if (key == NULL) return 0; - return mp_unsigned_bin_size(key->prime); -} - -#endif /* LTC_MDH */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dh/dh_check_pubkey.c b/src/libtomcrypt/src/pk/dh/dh_check_pubkey.c deleted file mode 100644 index e8c119236c..0000000000 --- a/src/libtomcrypt/src/pk/dh/dh_check_pubkey.c +++ /dev/null @@ -1,65 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_MDH - -/** - Check DH public key (INTERNAL ONLY, not part of public API) - @param key The key you wish to test - @return CRYPT_OK if successful -*/ -int dh_check_pubkey(dh_key *key) -{ - void *p_minus1; - ltc_mp_digit digit; - int i, digit_count, bits_set = 0, err; - - LTC_ARGCHK(key != NULL); - - if ((err = mp_init(&p_minus1)) != CRYPT_OK) { - return err; - } - - /* avoid: y <= 1 OR y >= p-1 */ - if ((err = mp_sub_d(key->prime, 1, p_minus1)) != CRYPT_OK) { - goto error; - } - if (mp_cmp(key->y, p_minus1) != LTC_MP_LT || mp_cmp_d(key->y, 1) != LTC_MP_GT) { - err = CRYPT_INVALID_ARG; - goto error; - } - - /* public key must have more than one bit set */ - digit_count = mp_get_digit_count(key->y); - for (i = 0; i < digit_count && bits_set < 2; i++) { - digit = mp_get_digit(key->y, i); - while (digit > 0) { - if (digit & 1) bits_set++; - digit >>= 1; - } - } - if (bits_set > 1) { - err = CRYPT_OK; - } - else { - err = CRYPT_INVALID_ARG; - } - -error: - mp_clear(p_minus1); - return err; -} - -#endif /* LTC_MDH */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dh/dh_export.c b/src/libtomcrypt/src/pk/dh/dh_export.c deleted file mode 100644 index f711f63228..0000000000 --- a/src/libtomcrypt/src/pk/dh/dh_export.c +++ /dev/null @@ -1,62 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_MDH - -/** - Export a DH key to a binary packet - @param out [out] The destination for the key - @param outlen [in/out] The max size and resulting size of the DH key - @param type Which type of key (PK_PRIVATE or PK_PUBLIC) - @param key The key you wish to export - @return CRYPT_OK if successful -*/ -int dh_export(unsigned char *out, unsigned long *outlen, int type, dh_key *key) -{ - unsigned char flags[1]; - int err; - unsigned long version = 0; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - if (type == PK_PRIVATE) { - /* export x - private key */ - flags[0] = 1; - err = der_encode_sequence_multi(out, outlen, - LTC_ASN1_SHORT_INTEGER, 1UL, &version, - LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_INTEGER, 1UL, key->prime, - LTC_ASN1_INTEGER, 1UL, key->base, - LTC_ASN1_INTEGER, 1UL, key->x, - LTC_ASN1_EOL, 0UL, NULL); - } - else { - /* export y - public key */ - flags[0] = 0; - err = der_encode_sequence_multi(out, outlen, - LTC_ASN1_SHORT_INTEGER, 1UL, &version, - LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_INTEGER, 1UL, key->prime, - LTC_ASN1_INTEGER, 1UL, key->base, - LTC_ASN1_INTEGER, 1UL, key->y, - LTC_ASN1_EOL, 0UL, NULL); - } - - return err; -} - -#endif /* LTC_MDH */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dh/dh_export_key.c b/src/libtomcrypt/src/pk/dh/dh_export_key.c deleted file mode 100644 index 0964782c27..0000000000 --- a/src/libtomcrypt/src/pk/dh/dh_export_key.c +++ /dev/null @@ -1,47 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_MDH - -/** - Binary export a DH key to a buffer - @param out [out] The destination for the key - @param outlen [in/out] The max size and resulting size of the DH key - @param type Which type of key (PK_PRIVATE or PK_PUBLIC) - @param key The key you wish to export - @return CRYPT_OK if successful -*/ -int dh_export_key(void *out, unsigned long *outlen, int type, dh_key *key) -{ - unsigned long len; - void *k; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - k = (type == PK_PRIVATE) ? key->x : key->y; - len = mp_unsigned_bin_size(k); - - if (*outlen < len) { - *outlen = len; - return CRYPT_BUFFER_OVERFLOW; - } - *outlen = len; - - return mp_to_unsigned_bin(k, out); -} - -#endif /* LTC_MDH */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dh/dh_free.c b/src/libtomcrypt/src/pk/dh/dh_free.c deleted file mode 100644 index ccc52c1a7c..0000000000 --- a/src/libtomcrypt/src/pk/dh/dh_free.c +++ /dev/null @@ -1,28 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_MDH - -/** - Free the allocated ram for a DH key - @param key The key which you wish to free -*/ -void dh_free(dh_key *key) -{ - LTC_ARGCHKVD(key != NULL); - mp_cleanup_multi(&key->prime, &key->base, &key->y, &key->x, NULL); -} - -#endif /* LTC_MDH */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dh/dh_generate_key.c b/src/libtomcrypt/src/pk/dh/dh_generate_key.c deleted file mode 100644 index 281cdf90fe..0000000000 --- a/src/libtomcrypt/src/pk/dh/dh_generate_key.c +++ /dev/null @@ -1,102 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_MDH - -static int _dh_groupsize_to_keysize(int groupsize) -{ - /* The strength estimates from https://tools.ietf.org/html/rfc3526#section-8 - * We use "Estimate 2" to get an appropriate private key (exponent) size. - */ - if (groupsize <= 0) { - return 0; - } - else if (groupsize <= 192) { - return 30; /* 1536-bit => key size 240-bit */ - } - else if (groupsize <= 256) { - return 40; /* 2048-bit => key size 320-bit */ - } - else if (groupsize <= 384) { - return 52; /* 3072-bit => key size 416-bit */ - } - else if (groupsize <= 512) { - return 60; /* 4096-bit => key size 480-bit */ - } - else if (groupsize <= 768) { - return 67; /* 6144-bit => key size 536-bit */ - } - else if (groupsize <= 1024) { - return 77; /* 8192-bit => key size 616-bit */ - } - else { - return 0; - } -} - -int dh_generate_key(prng_state *prng, int wprng, dh_key *key) -{ - unsigned char *buf; - unsigned long keysize; - int err, max_iterations = LTC_PK_MAX_RETRIES; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - /* good prng? */ - if ((err = prng_is_valid(wprng)) != CRYPT_OK) { - return err; - } - - keysize = _dh_groupsize_to_keysize(mp_unsigned_bin_size(key->prime)); - if (keysize == 0) { - err = CRYPT_INVALID_KEYSIZE; - goto freemp; - } - - /* allocate buffer */ - buf = XMALLOC(keysize); - if (buf == NULL) { - err = CRYPT_MEM; - goto freemp; - } - - key->type = PK_PRIVATE; - do { - /* make up random buf */ - if (prng_descriptor[wprng].read(buf, keysize, prng) != keysize) { - err = CRYPT_ERROR_READPRNG; - goto freebuf; - } - /* load the x value - private key */ - if ((err = mp_read_unsigned_bin(key->x, buf, keysize)) != CRYPT_OK) { - goto freebuf; - } - /* compute the y value - public key */ - if ((err = mp_exptmod(key->base, key->x, key->prime, key->y)) != CRYPT_OK) { - goto freebuf; - } - err = dh_check_pubkey(key); - } while (err != CRYPT_OK && max_iterations-- > 0); - -freebuf: - zeromem(buf, keysize); - XFREE(buf); -freemp: - if (err != CRYPT_OK) dh_free(key); - return err; -} - -#endif /* LTC_MDH */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dh/dh_import.c b/src/libtomcrypt/src/pk/dh/dh_import.c deleted file mode 100644 index 44e6f24a4b..0000000000 --- a/src/libtomcrypt/src/pk/dh/dh_import.c +++ /dev/null @@ -1,99 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_MDH - -/** - Import a DH key from a binary packet - @param in The packet to read - @param inlen The length of the input packet - @param key [out] Where to import the key to - @return CRYPT_OK if successful, on error all allocated memory is freed automatically -*/ -int dh_import(const unsigned char *in, unsigned long inlen, dh_key *key) -{ - unsigned char flags[1]; - int err; - unsigned long version; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(key != NULL); - - /* init */ - if ((err = mp_init_multi(&key->x, &key->y, &key->base, &key->prime, NULL)) != CRYPT_OK) { - return err; - } - - /* find out what type of key it is */ - err = der_decode_sequence_multi(in, inlen, - LTC_ASN1_SHORT_INTEGER, 1UL, &version, - LTC_ASN1_BIT_STRING, 1UL, &flags, - LTC_ASN1_EOL, 0UL, NULL); - if (err != CRYPT_OK && err != CRYPT_INPUT_TOO_LONG) { - goto error; - } - - if (version == 0) { - if (flags[0] == 1) { - key->type = PK_PRIVATE; - if ((err = der_decode_sequence_multi(in, inlen, - LTC_ASN1_SHORT_INTEGER, 1UL, &version, - LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_INTEGER, 1UL, key->prime, - LTC_ASN1_INTEGER, 1UL, key->base, - LTC_ASN1_INTEGER, 1UL, key->x, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { - goto error; - } - /* compute public key: y = (base ^ x) mod prime */ - if ((err = mp_exptmod(key->base, key->x, key->prime, key->y)) != CRYPT_OK) { - goto error; - } - } - else if (flags[0] == 0) { - key->type = PK_PUBLIC; - if ((err = der_decode_sequence_multi(in, inlen, - LTC_ASN1_SHORT_INTEGER, 1UL, &version, - LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_INTEGER, 1UL, key->prime, - LTC_ASN1_INTEGER, 1UL, key->base, - LTC_ASN1_INTEGER, 1UL, key->y, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { - goto error; - } - } - else { - err = CRYPT_INVALID_PACKET; - goto error; - } - } - else { - err = CRYPT_INVALID_PACKET; - goto error; - } - - /* check public key */ - if ((err = dh_check_pubkey(key)) != CRYPT_OK) { - goto error; - } - - return CRYPT_OK; - -error: - dh_free(key); - return err; -} - -#endif /* LTC_MDH */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dh/dh_set.c b/src/libtomcrypt/src/pk/dh/dh_set.c deleted file mode 100644 index 88411b3b79..0000000000 --- a/src/libtomcrypt/src/pk/dh/dh_set.c +++ /dev/null @@ -1,124 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_MDH - -/** - Import DH key parts p and g from raw numbers - - @param p DH's p (prime) - @param plen DH's p's length - @param g DH's g (group) - @param glen DH's g's length - @param key [out] the destination for the imported key - @return CRYPT_OK if successful -*/ -int dh_set_pg(const unsigned char *p, unsigned long plen, - const unsigned char *g, unsigned long glen, - dh_key *key) -{ - int err; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(p != NULL); - LTC_ARGCHK(g != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - if ((err = mp_init_multi(&key->x, &key->y, &key->base, &key->prime, NULL)) != CRYPT_OK) { - return err; - } - - if ((err = mp_read_unsigned_bin(key->base, (unsigned char*)g, glen)) != CRYPT_OK) { goto LBL_ERR; } - if ((err = mp_read_unsigned_bin(key->prime, (unsigned char*)p, plen)) != CRYPT_OK) { goto LBL_ERR; } - - return CRYPT_OK; - -LBL_ERR: - dh_free(key); - return err; -} - -/** - Import DH key parts p and g from built-in DH groups - - @param groupsize The size of the DH group to use - @param key [out] Where the newly created DH key will be stored - @return CRYPT_OK if successful, note: on error all allocated memory will be freed automatically. -*/ -int dh_set_pg_groupsize(int groupsize, dh_key *key) -{ - int err, i; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - LTC_ARGCHK(groupsize > 0); - - for (i = 0; (groupsize > ltc_dh_sets[i].size) && (ltc_dh_sets[i].size != 0); i++); - if (ltc_dh_sets[i].size == 0) return CRYPT_INVALID_KEYSIZE; - - if ((err = mp_init_multi(&key->x, &key->y, &key->base, &key->prime, NULL)) != CRYPT_OK) { - return err; - } - if ((err = mp_read_radix(key->base, ltc_dh_sets[i].base, 16)) != CRYPT_OK) { goto LBL_ERR; } - if ((err = mp_read_radix(key->prime, ltc_dh_sets[i].prime, 16)) != CRYPT_OK) { goto LBL_ERR; } - - return CRYPT_OK; - -LBL_ERR: - dh_free(key); - return err; -} - -/** - Import DH public or private key part from raw numbers - - NB: The p & g parts must be set beforehand - - @param in The key-part to import, either public or private. - @param inlen The key-part's length - @param type Which type of key (PK_PRIVATE or PK_PUBLIC) - @param key [out] the destination for the imported key - @return CRYPT_OK if successful -*/ -int dh_set_key(const unsigned char *in, unsigned long inlen, int type, dh_key *key) -{ - int err; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - if (type == PK_PRIVATE) { - key->type = PK_PRIVATE; - if ((err = mp_read_unsigned_bin(key->x, (unsigned char*)in, inlen)) != CRYPT_OK) { goto LBL_ERR; } - if ((err = mp_exptmod(key->base, key->x, key->prime, key->y)) != CRYPT_OK) { goto LBL_ERR; } - } - else { - key->type = PK_PUBLIC; - if ((err = mp_read_unsigned_bin(key->y, (unsigned char*)in, inlen)) != CRYPT_OK) { goto LBL_ERR; } - } - - /* check public key */ - if ((err = dh_check_pubkey(key)) != CRYPT_OK) { - goto LBL_ERR; - } - - return CRYPT_OK; - -LBL_ERR: - dh_free(key); - return err; -} - -#endif /* LTC_MDH */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dh/dh_set_pg_dhparam.c b/src/libtomcrypt/src/pk/dh/dh_set_pg_dhparam.c deleted file mode 100644 index 78707c6433..0000000000 --- a/src/libtomcrypt/src/pk/dh/dh_set_pg_dhparam.c +++ /dev/null @@ -1,54 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_MDH - -/** - Import DH key parts p and g from dhparam - - dhparam data: openssl dhparam -outform DER -out dhparam.der 2048 - - @param dhparam The DH param DER encoded data - @param dhparamlen The length of dhparam data - @param key [out] Where the newly created DH key will be stored - @return CRYPT_OK if successful, note: on error all allocated memory will be freed automatically. -*/ -int dh_set_pg_dhparam(const unsigned char *dhparam, unsigned long dhparamlen, dh_key *key) -{ - int err; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - LTC_ARGCHK(dhparam != NULL); - LTC_ARGCHK(dhparamlen > 0); - - if ((err = mp_init_multi(&key->x, &key->y, &key->base, &key->prime, NULL)) != CRYPT_OK) { - return err; - } - if ((err = der_decode_sequence_multi(dhparam, dhparamlen, - LTC_ASN1_INTEGER, 1UL, key->prime, - LTC_ASN1_INTEGER, 1UL, key->base, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { - goto LBL_ERR; - } - - return CRYPT_OK; - -LBL_ERR: - dh_free(key); - return err; -} - -#endif /* LTC_MDH */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dh/dh_shared_secret.c b/src/libtomcrypt/src/pk/dh/dh_shared_secret.c deleted file mode 100644 index fd0db8ed7c..0000000000 --- a/src/libtomcrypt/src/pk/dh/dh_shared_secret.c +++ /dev/null @@ -1,80 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_MDH - -/** - Create a DH shared secret. - @param private_key The private DH key in the pair - @param public_key The public DH key in the pair - @param out [out] The destination of the shared data - @param outlen [in/out] The max size and resulting size of the shared data. - @return CRYPT_OK if successful -*/ -int dh_shared_secret(dh_key *private_key, dh_key *public_key, - unsigned char *out, unsigned long *outlen) -{ - void *tmp; - unsigned long x; - int err; - - LTC_ARGCHK(private_key != NULL); - LTC_ARGCHK(public_key != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* types valid? */ - if (private_key->type != PK_PRIVATE) { - return CRYPT_PK_NOT_PRIVATE; - } - - /* same DH group? */ - if (mp_cmp(private_key->prime, public_key->prime) != LTC_MP_EQ) { return CRYPT_PK_TYPE_MISMATCH; } - if (mp_cmp(private_key->base, public_key->base) != LTC_MP_EQ) { return CRYPT_PK_TYPE_MISMATCH; } - - /* init big numbers */ - if ((err = mp_init(&tmp)) != CRYPT_OK) { - return err; - } - - /* check public key */ - if ((err = dh_check_pubkey(public_key)) != CRYPT_OK) { - goto error; - } - - /* compute tmp = y^x mod p */ - if ((err = mp_exptmod(public_key->y, private_key->x, private_key->prime, tmp)) != CRYPT_OK) { - goto error; - } - - /* enough space for output? */ - x = (unsigned long)mp_unsigned_bin_size(tmp); - if (*outlen < x) { - *outlen = x; - err = CRYPT_BUFFER_OVERFLOW; - goto error; - } - if ((err = mp_to_unsigned_bin(tmp, out)) != CRYPT_OK) { - goto error; - } - *outlen = x; - err = CRYPT_OK; - -error: - mp_clear(tmp); - return err; -} - -#endif /* LTC_MDH */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dsa/dsa_decrypt_key.c b/src/libtomcrypt/src/pk/dsa/dsa_decrypt_key.c deleted file mode 100644 index d1d0ed8da9..0000000000 --- a/src/libtomcrypt/src/pk/dsa/dsa_decrypt_key.c +++ /dev/null @@ -1,139 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file dsa_decrypt_key.c - DSA Crypto, Tom St Denis -*/ - -#ifdef LTC_MDSA - -/** - Decrypt an DSA encrypted key - @param in The ciphertext - @param inlen The length of the ciphertext (octets) - @param out [out] The plaintext - @param outlen [in/out] The max size and resulting size of the plaintext - @param key The corresponding private DSA key - @return CRYPT_OK if successful -*/ -int dsa_decrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - dsa_key *key) -{ - unsigned char *skey, *expt; - void *g_pub; - unsigned long x, y; - unsigned long hashOID[32] = { 0 }; - int hash, err; - ltc_asn1_list decode[3]; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - /* right key type? */ - if (key->type != PK_PRIVATE) { - return CRYPT_PK_NOT_PRIVATE; - } - - /* decode to find out hash */ - LTC_SET_ASN1(decode, 0, LTC_ASN1_OBJECT_IDENTIFIER, hashOID, sizeof(hashOID)/sizeof(hashOID[0])); - err = der_decode_sequence(in, inlen, decode, 1); - if (err != CRYPT_OK && err != CRYPT_INPUT_TOO_LONG) { - return err; - } - - hash = find_hash_oid(hashOID, decode[0].size); - if (hash_is_valid(hash) != CRYPT_OK) { - return CRYPT_INVALID_PACKET; - } - - /* we now have the hash! */ - - if ((err = mp_init(&g_pub)) != CRYPT_OK) { - return err; - } - - /* allocate memory */ - expt = XMALLOC(mp_unsigned_bin_size(key->p) + 1); - skey = XMALLOC(MAXBLOCKSIZE); - if (expt == NULL || skey == NULL) { - if (expt != NULL) { - XFREE(expt); - } - if (skey != NULL) { - XFREE(skey); - } - mp_clear(g_pub); - return CRYPT_MEM; - } - - LTC_SET_ASN1(decode, 1, LTC_ASN1_INTEGER, g_pub, 1UL); - LTC_SET_ASN1(decode, 2, LTC_ASN1_OCTET_STRING, skey, MAXBLOCKSIZE); - - /* read the structure in now */ - if ((err = der_decode_sequence(in, inlen, decode, 3)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* make shared key */ - x = mp_unsigned_bin_size(key->p) + 1; - if ((err = dsa_shared_secret(key->x, g_pub, key, expt, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - - y = mp_unsigned_bin_size(key->p) + 1; - y = MIN(y, MAXBLOCKSIZE); - if ((err = hash_memory(hash, expt, x, expt, &y)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* ensure the hash of the shared secret is at least as big as the encrypt itself */ - if (decode[2].size > y) { - err = CRYPT_INVALID_PACKET; - goto LBL_ERR; - } - - /* avoid buffer overflow */ - if (*outlen < decode[2].size) { - *outlen = decode[2].size; - err = CRYPT_BUFFER_OVERFLOW; - goto LBL_ERR; - } - - /* Decrypt the key */ - for (x = 0; x < decode[2].size; x++) { - out[x] = expt[x] ^ skey[x]; - } - *outlen = x; - - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(expt, mp_unsigned_bin_size(key->p) + 1); - zeromem(skey, MAXBLOCKSIZE); -#endif - - XFREE(expt); - XFREE(skey); - - mp_clear(g_pub); - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/dsa/dsa_encrypt_key.c b/src/libtomcrypt/src/pk/dsa/dsa_encrypt_key.c deleted file mode 100644 index 662bf9e7d7..0000000000 --- a/src/libtomcrypt/src/pk/dsa/dsa_encrypt_key.c +++ /dev/null @@ -1,128 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file dsa_encrypt_key.c - DSA Crypto, Tom St Denis -*/ - -#ifdef LTC_MDSA - -/** - Encrypt a symmetric key with DSA - @param in The symmetric key you want to encrypt - @param inlen The length of the key to encrypt (octets) - @param out [out] The destination for the ciphertext - @param outlen [in/out] The max size and resulting size of the ciphertext - @param prng An active PRNG state - @param wprng The index of the PRNG you wish to use - @param hash The index of the hash you want to use - @param key The DSA key you want to encrypt to - @return CRYPT_OK if successful -*/ -int dsa_encrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int wprng, int hash, - dsa_key *key) -{ - unsigned char *expt, *skey; - void *g_pub, *g_priv; - unsigned long x, y; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - /* check that wprng/cipher/hash are not invalid */ - if ((err = prng_is_valid(wprng)) != CRYPT_OK) { - return err; - } - - if ((err = hash_is_valid(hash)) != CRYPT_OK) { - return err; - } - - if (inlen > hash_descriptor[hash].hashsize) { - return CRYPT_INVALID_HASH; - } - - /* make a random key and export the public copy */ - if ((err = mp_init_multi(&g_pub, &g_priv, NULL)) != CRYPT_OK) { - return err; - } - - expt = XMALLOC(mp_unsigned_bin_size(key->p) + 1); - skey = XMALLOC(MAXBLOCKSIZE); - if (expt == NULL || skey == NULL) { - if (expt != NULL) { - XFREE(expt); - } - if (skey != NULL) { - XFREE(skey); - } - mp_clear_multi(g_pub, g_priv, NULL); - return CRYPT_MEM; - } - - /* make a random g_priv, g_pub = g^x pair - private key x should be in range: 1 <= x <= q-1 (see FIPS 186-4 B.1.2) - */ - if ((err = rand_bn_upto(g_priv, key->q, prng, wprng)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* compute y */ - if ((err = mp_exptmod(key->g, g_priv, key->p, g_pub)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* make random key */ - x = mp_unsigned_bin_size(key->p) + 1; - if ((err = dsa_shared_secret(g_priv, key->y, key, expt, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - - y = MAXBLOCKSIZE; - if ((err = hash_memory(hash, expt, x, skey, &y)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* Encrypt key */ - for (x = 0; x < inlen; x++) { - skey[x] ^= in[x]; - } - - err = der_encode_sequence_multi(out, outlen, - LTC_ASN1_OBJECT_IDENTIFIER, hash_descriptor[hash].OIDlen, hash_descriptor[hash].OID, - LTC_ASN1_INTEGER, 1UL, g_pub, - LTC_ASN1_OCTET_STRING, inlen, skey, - LTC_ASN1_EOL, 0UL, NULL); - -LBL_ERR: -#ifdef LTC_CLEAN_STACK - /* clean up */ - zeromem(expt, mp_unsigned_bin_size(key->p) + 1); - zeromem(skey, MAXBLOCKSIZE); -#endif - - XFREE(skey); - XFREE(expt); - - mp_clear_multi(g_pub, g_priv, NULL); - return err; -} - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/dsa/dsa_export.c b/src/libtomcrypt/src/pk/dsa/dsa_export.c deleted file mode 100644 index 09bede8e83..0000000000 --- a/src/libtomcrypt/src/pk/dsa/dsa_export.c +++ /dev/null @@ -1,116 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file dsa_export.c - DSA implementation, export key, Tom St Denis -*/ - -#ifdef LTC_MDSA - -/** - Export a DSA key to a binary packet - @param out [out] Where to store the packet - @param outlen [in/out] The max size and resulting size of the packet - @param type The type of key to export (PK_PRIVATE or PK_PUBLIC) - @param key The key to export - @return CRYPT_OK if successful -*/ -int dsa_export(unsigned char *out, unsigned long *outlen, int type, dsa_key *key) -{ - unsigned long zero=0; - int err, std; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - std = type & PK_STD; - type &= ~PK_STD; - - /* can we store the static header? */ - if (type == PK_PRIVATE && key->type != PK_PRIVATE) { - return CRYPT_PK_TYPE_MISMATCH; - } - - if (type != PK_PUBLIC && type != PK_PRIVATE) { - return CRYPT_INVALID_ARG; - } - - if (type == PK_PRIVATE) { - if (std) { - return der_encode_sequence_multi(out, outlen, - LTC_ASN1_SHORT_INTEGER, 1UL, &zero, - LTC_ASN1_INTEGER, 1UL, key->p, - LTC_ASN1_INTEGER, 1UL, key->q, - LTC_ASN1_INTEGER, 1UL, key->g, - LTC_ASN1_INTEGER, 1UL, key->y, - LTC_ASN1_INTEGER, 1UL, key->x, - LTC_ASN1_EOL, 0UL, NULL); - } - else { - unsigned char flags[1]; - flags[0] = 1; - return der_encode_sequence_multi(out, outlen, - LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_INTEGER, 1UL, key->g, - LTC_ASN1_INTEGER, 1UL, key->p, - LTC_ASN1_INTEGER, 1UL, key->q, - LTC_ASN1_INTEGER, 1UL, key->y, - LTC_ASN1_INTEGER, 1UL, key->x, - LTC_ASN1_EOL, 0UL, NULL); - } - } else { - if (std) { - unsigned long tmplen = (unsigned long)(mp_count_bits(key->y) / 8) + 8; - unsigned char* tmp = XMALLOC(tmplen); - ltc_asn1_list int_list[3]; - - if (tmp == NULL) { - return CRYPT_MEM; - } - - err = der_encode_integer(key->y, tmp, &tmplen); - if (err != CRYPT_OK) { - goto error; - } - - LTC_SET_ASN1(int_list, 0, LTC_ASN1_INTEGER, key->p, 1UL); - LTC_SET_ASN1(int_list, 1, LTC_ASN1_INTEGER, key->q, 1UL); - LTC_SET_ASN1(int_list, 2, LTC_ASN1_INTEGER, key->g, 1UL); - - err = der_encode_subject_public_key_info(out, outlen, PKA_DSA, tmp, - tmplen, LTC_ASN1_SEQUENCE, int_list, - sizeof(int_list) / sizeof(int_list[0])); - -error: - XFREE(tmp); - return err; - } - else { - unsigned char flags[1]; - flags[0] = 0; - return der_encode_sequence_multi(out, outlen, - LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_INTEGER, 1UL, key->g, - LTC_ASN1_INTEGER, 1UL, key->p, - LTC_ASN1_INTEGER, 1UL, key->q, - LTC_ASN1_INTEGER, 1UL, key->y, - LTC_ASN1_EOL, 0UL, NULL); - } - } -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dsa/dsa_free.c b/src/libtomcrypt/src/pk/dsa/dsa_free.c deleted file mode 100644 index dcb4a0977b..0000000000 --- a/src/libtomcrypt/src/pk/dsa/dsa_free.c +++ /dev/null @@ -1,33 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file dsa_free.c - DSA implementation, free a DSA key, Tom St Denis -*/ - -#ifdef LTC_MDSA - -/** - Free a DSA key - @param key The key to free from memory -*/ -void dsa_free(dsa_key *key) -{ - LTC_ARGCHKVD(key != NULL); - mp_cleanup_multi(&key->y, &key->x, &key->q, &key->g, &key->p, NULL); - key->type = key->qord = 0; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dsa/dsa_generate_key.c b/src/libtomcrypt/src/pk/dsa/dsa_generate_key.c deleted file mode 100644 index 0c1f448ab5..0000000000 --- a/src/libtomcrypt/src/pk/dsa/dsa_generate_key.c +++ /dev/null @@ -1,47 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file dsa_make_key.c - DSA implementation, generate a DSA key -*/ - -#ifdef LTC_MDSA - -/** - Create a DSA key - @param prng An active PRNG state - @param wprng The index of the PRNG desired - @param key [in/out] Where to store the created key - @return CRYPT_OK if successful. -*/ -int dsa_generate_key(prng_state *prng, int wprng, dsa_key *key) -{ - int err; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - /* so now we have our DH structure, generator g, order q, modulus p - Now we need a random exponent [mod q] and it's power g^x mod p - */ - /* private key x should be from range: 1 <= x <= q-1 (see FIPS 186-4 B.1.2) */ - if ((err = rand_bn_upto(key->x, key->q, prng, wprng)) != CRYPT_OK) { return err; } - if ((err = mp_exptmod(key->g, key->x, key->p, key->y)) != CRYPT_OK) { return err; } - key->type = PK_PRIVATE; - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dsa/dsa_generate_pqg.c b/src/libtomcrypt/src/pk/dsa/dsa_generate_pqg.c deleted file mode 100644 index 08ae15ae44..0000000000 --- a/src/libtomcrypt/src/pk/dsa/dsa_generate_pqg.c +++ /dev/null @@ -1,244 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file dsa_generate_pqg.c - DSA implementation - generate DSA parameters p, q & g -*/ - -#ifdef LTC_MDSA - -/** - Create DSA parameters (INTERNAL ONLY, not part of public API) - @param prng An active PRNG state - @param wprng The index of the PRNG desired - @param group_size Size of the multiplicative group (octets) - @param modulus_size Size of the modulus (octets) - @param p [out] bignum where generated 'p' is stored (must be initialized by caller) - @param q [out] bignum where generated 'q' is stored (must be initialized by caller) - @param g [out] bignum where generated 'g' is stored (must be initialized by caller) - @return CRYPT_OK if successful, upon error this function will free all allocated memory -*/ -static int _dsa_make_params(prng_state *prng, int wprng, int group_size, int modulus_size, void *p, void *q, void *g) -{ - unsigned long L, N, n, outbytes, seedbytes, counter, j, i; - int err, res, mr_tests_q, mr_tests_p, found_p, found_q, hash; - unsigned char *wbuf, *sbuf, digest[MAXBLOCKSIZE]; - void *t2L1, *t2N1, *t2q, *t2seedlen, *U, *W, *X, *c, *h, *e, *seedinc; - - /* check size */ - if (group_size >= LTC_MDSA_MAX_GROUP || group_size < 1 || group_size >= modulus_size) { - return CRYPT_INVALID_ARG; - } - - /* FIPS-186-4 A.1.1.2 Generation of the Probable Primes p and q Using an Approved Hash Function - * - * L = The desired length of the prime p (in bits e.g. L = 1024) - * N = The desired length of the prime q (in bits e.g. N = 160) - * seedlen = The desired bit length of the domain parameter seed; seedlen shallbe equal to or greater than N - * outlen = The bit length of Hash function - * - * 1. Check that the (L, N) - * 2. If (seedlen = 2^(L-1)) { - * Test whether or not p is prime as specified in Appendix C.3. - * If p is determined to be prime, then return VALID and the values of p, qand (optionally) the values of domain_parameter_seed and counter - * } - * offset = offset + n + 1 Comment: Increment offset - * } - */ - - seedbytes = group_size; - L = (unsigned long)modulus_size * 8; - N = (unsigned long)group_size * 8; - - /* XXX-TODO no Lucas test */ -#ifdef LTC_MPI_HAS_LUCAS_TEST - /* M-R tests (when followed by one Lucas test) according FIPS-186-4 - Appendix C.3 - table C.1 */ - mr_tests_p = (L <= 2048) ? 3 : 2; - if (N <= 160) { mr_tests_q = 19; } - else if (N <= 224) { mr_tests_q = 24; } - else { mr_tests_q = 27; } -#else - /* M-R tests (without Lucas test) according FIPS-186-4 - Appendix C.3 - table C.1 */ - if (L <= 1024) { mr_tests_p = 40; } - else if (L <= 2048) { mr_tests_p = 56; } - else { mr_tests_p = 64; } - - if (N <= 160) { mr_tests_q = 40; } - else if (N <= 224) { mr_tests_q = 56; } - else { mr_tests_q = 64; } -#endif - - if (N <= 256) { - hash = register_hash(&sha256_desc); - } - else if (N <= 384) { - hash = register_hash(&sha384_desc); - } - else if (N <= 512) { - hash = register_hash(&sha512_desc); - } - else { - return CRYPT_INVALID_ARG; /* group_size too big */ - } - - if ((err = hash_is_valid(hash)) != CRYPT_OK) { return err; } - outbytes = hash_descriptor[hash].hashsize; - - n = ((L + outbytes*8 - 1) / (outbytes*8)) - 1; - - if ((wbuf = XMALLOC((n+1)*outbytes)) == NULL) { err = CRYPT_MEM; goto cleanup3; } - if ((sbuf = XMALLOC(seedbytes)) == NULL) { err = CRYPT_MEM; goto cleanup2; } - - err = mp_init_multi(&t2L1, &t2N1, &t2q, &t2seedlen, &U, &W, &X, &c, &h, &e, &seedinc, NULL); - if (err != CRYPT_OK) { goto cleanup1; } - - if ((err = mp_2expt(t2L1, L-1)) != CRYPT_OK) { goto cleanup; } - /* t2L1 = 2^(L-1) */ - if ((err = mp_2expt(t2N1, N-1)) != CRYPT_OK) { goto cleanup; } - /* t2N1 = 2^(N-1) */ - if ((err = mp_2expt(t2seedlen, seedbytes*8)) != CRYPT_OK) { goto cleanup; } - /* t2seedlen = 2^seedlen */ - - for(found_p=0; !found_p;) { - /* q */ - for(found_q=0; !found_q;) { - if (prng_descriptor[wprng].read(sbuf, seedbytes, prng) != seedbytes) { err = CRYPT_ERROR_READPRNG; goto cleanup; } - i = outbytes; - if ((err = hash_memory(hash, sbuf, seedbytes, digest, &i)) != CRYPT_OK) { goto cleanup; } - if ((err = mp_read_unsigned_bin(U, digest, outbytes)) != CRYPT_OK) { goto cleanup; } - if ((err = mp_mod(U, t2N1, U)) != CRYPT_OK) { goto cleanup; } - if ((err = mp_add(t2N1, U, q)) != CRYPT_OK) { goto cleanup; } - if (!mp_isodd(q)) mp_add_d(q, 1, q); - if ((err = mp_prime_is_prime(q, mr_tests_q, &res)) != CRYPT_OK) { goto cleanup; } - if (res == LTC_MP_YES) found_q = 1; - } - - /* p */ - if ((err = mp_read_unsigned_bin(seedinc, sbuf, seedbytes)) != CRYPT_OK) { goto cleanup; } - if ((err = mp_add(q, q, t2q)) != CRYPT_OK) { goto cleanup; } - for(counter=0; counter < 4*L && !found_p; counter++) { - for(j=0; j<=n; j++) { - if ((err = mp_add_d(seedinc, 1, seedinc)) != CRYPT_OK) { goto cleanup; } - if ((err = mp_mod(seedinc, t2seedlen, seedinc)) != CRYPT_OK) { goto cleanup; } - /* seedinc = (seedinc+1) % 2^seed_bitlen */ - if ((i = mp_unsigned_bin_size(seedinc)) > seedbytes) { err = CRYPT_INVALID_ARG; goto cleanup; } - zeromem(sbuf, seedbytes); - if ((err = mp_to_unsigned_bin(seedinc, sbuf + seedbytes-i)) != CRYPT_OK) { goto cleanup; } - i = outbytes; - err = hash_memory(hash, sbuf, seedbytes, wbuf+(n-j)*outbytes, &i); - if (err != CRYPT_OK) { goto cleanup; } - } - if ((err = mp_read_unsigned_bin(W, wbuf, (n+1)*outbytes)) != CRYPT_OK) { goto cleanup; } - if ((err = mp_mod(W, t2L1, W)) != CRYPT_OK) { goto cleanup; } - if ((err = mp_add(W, t2L1, X)) != CRYPT_OK) { goto cleanup; } - if ((err = mp_mod(X, t2q, c)) != CRYPT_OK) { goto cleanup; } - if ((err = mp_sub_d(c, 1, p)) != CRYPT_OK) { goto cleanup; } - if ((err = mp_sub(X, p, p)) != CRYPT_OK) { goto cleanup; } - if (mp_cmp(p, t2L1) != LTC_MP_LT) { - /* p >= 2^(L-1) */ - if ((err = mp_prime_is_prime(p, mr_tests_p, &res)) != CRYPT_OK) { goto cleanup; } - if (res == LTC_MP_YES) { - found_p = 1; - } - } - } - } - - /* FIPS-186-4 A.2.1 Unverifiable Generation of the Generator g - * 1. e = (p - 1)/q - * 2. h = any integer satisfying: 1 < h < (p - 1) - * h could be obtained from a random number generator or from a counter that changes after each use - * 3. g = h^e mod p - * 4. if (g == 1), then go to step 2. - * - */ - - if ((err = mp_sub_d(p, 1, e)) != CRYPT_OK) { goto cleanup; } - if ((err = mp_div(e, q, e, c)) != CRYPT_OK) { goto cleanup; } - /* e = (p - 1)/q */ - i = mp_count_bits(p); - do { - do { - if ((err = rand_bn_bits(h, i, prng, wprng)) != CRYPT_OK) { goto cleanup; } - } while (mp_cmp(h, p) != LTC_MP_LT || mp_cmp_d(h, 2) != LTC_MP_GT); - if ((err = mp_sub_d(h, 1, h)) != CRYPT_OK) { goto cleanup; } - /* h is randon and 1 < h < (p-1) */ - if ((err = mp_exptmod(h, e, p, g)) != CRYPT_OK) { goto cleanup; } - } while (mp_cmp_d(g, 1) == LTC_MP_EQ); - - err = CRYPT_OK; -cleanup: - mp_clear_multi(t2L1, t2N1, t2q, t2seedlen, U, W, X, c, h, e, seedinc, NULL); -cleanup1: - XFREE(sbuf); -cleanup2: - XFREE(wbuf); -cleanup3: - return err; -} - -/** - Generate DSA parameters p, q & g - @param prng An active PRNG state - @param wprng The index of the PRNG desired - @param group_size Size of the multiplicative group (octets) - @param modulus_size Size of the modulus (octets) - @param key [out] Where to store the created key - @return CRYPT_OK if successful. -*/ -int dsa_generate_pqg(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key) -{ - int err; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - /* init mp_ints */ - if ((err = mp_init_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL)) != CRYPT_OK) { - return err; - } - /* generate params */ - err = _dsa_make_params(prng, wprng, group_size, modulus_size, key->p, key->q, key->g); - if (err != CRYPT_OK) { - goto cleanup; - } - - key->qord = group_size; - - return CRYPT_OK; - -cleanup: - dsa_free(key); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dsa/dsa_import.c b/src/libtomcrypt/src/pk/dsa/dsa_import.c deleted file mode 100644 index 83eb68cc20..0000000000 --- a/src/libtomcrypt/src/pk/dsa/dsa_import.c +++ /dev/null @@ -1,152 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file dsa_import.c - DSA implementation, import a DSA key, Tom St Denis -*/ - -#ifdef LTC_MDSA - -/** - Import a DSA key - @param in The binary packet to import from - @param inlen The length of the binary packet - @param key [out] Where to store the imported key - @return CRYPT_OK if successful, upon error this function will free all allocated memory -*/ -int dsa_import(const unsigned char *in, unsigned long inlen, dsa_key *key) -{ - int err, stat; - unsigned long zero = 0; - unsigned char* tmpbuf = NULL; - unsigned char flags[1]; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - /* init key */ - if (mp_init_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL) != CRYPT_OK) { - return CRYPT_MEM; - } - - /* try to match the old libtomcrypt format */ - err = der_decode_sequence_multi(in, inlen, LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_EOL, 0UL, NULL); - - if (err == CRYPT_OK || err == CRYPT_INPUT_TOO_LONG) { - /* private key */ - if (flags[0] == 1) { - if ((err = der_decode_sequence_multi(in, inlen, - LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_INTEGER, 1UL, key->g, - LTC_ASN1_INTEGER, 1UL, key->p, - LTC_ASN1_INTEGER, 1UL, key->q, - LTC_ASN1_INTEGER, 1UL, key->y, - LTC_ASN1_INTEGER, 1UL, key->x, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { - goto LBL_ERR; - } - key->type = PK_PRIVATE; - goto LBL_OK; - } - /* public key */ - else if (flags[0] == 0) { - if ((err = der_decode_sequence_multi(in, inlen, - LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_INTEGER, 1UL, key->g, - LTC_ASN1_INTEGER, 1UL, key->p, - LTC_ASN1_INTEGER, 1UL, key->q, - LTC_ASN1_INTEGER, 1UL, key->y, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { - goto LBL_ERR; - } - key->type = PK_PUBLIC; - goto LBL_OK; - } - else { - err = CRYPT_INVALID_PACKET; - goto LBL_ERR; - } - } - /* get key type */ - if ((err = der_decode_sequence_multi(in, inlen, - LTC_ASN1_SHORT_INTEGER, 1UL, &zero, - LTC_ASN1_INTEGER, 1UL, key->p, - LTC_ASN1_INTEGER, 1UL, key->q, - LTC_ASN1_INTEGER, 1UL, key->g, - LTC_ASN1_INTEGER, 1UL, key->y, - LTC_ASN1_INTEGER, 1UL, key->x, - LTC_ASN1_EOL, 0UL, NULL)) == CRYPT_OK) { - - key->type = PK_PRIVATE; - } else { /* public */ - ltc_asn1_list params[3]; - unsigned long tmpbuf_len = inlen; - - LTC_SET_ASN1(params, 0, LTC_ASN1_INTEGER, key->p, 1UL); - LTC_SET_ASN1(params, 1, LTC_ASN1_INTEGER, key->q, 1UL); - LTC_SET_ASN1(params, 2, LTC_ASN1_INTEGER, key->g, 1UL); - - tmpbuf = XCALLOC(1, tmpbuf_len); - if (tmpbuf == NULL) { - err = CRYPT_MEM; - goto LBL_ERR; - } - - err = der_decode_subject_public_key_info(in, inlen, PKA_DSA, - tmpbuf, &tmpbuf_len, - LTC_ASN1_SEQUENCE, params, 3); - if (err != CRYPT_OK) { - XFREE(tmpbuf); - goto LBL_ERR; - } - - if ((err=der_decode_integer(tmpbuf, tmpbuf_len, key->y)) != CRYPT_OK) { - XFREE(tmpbuf); - goto LBL_ERR; - } - - XFREE(tmpbuf); - key->type = PK_PUBLIC; - } - -LBL_OK: - key->qord = mp_unsigned_bin_size(key->q); - - /* quick p, q, g validation, without primality testing */ - if ((err = dsa_int_validate_pqg(key, &stat)) != CRYPT_OK) { - goto LBL_ERR; - } - if (stat == 0) { - err = CRYPT_INVALID_PACKET; - goto LBL_ERR; - } - /* validate x, y */ - if ((err = dsa_int_validate_xy(key, &stat)) != CRYPT_OK) { - goto LBL_ERR; - } - if (stat == 0) { - err = CRYPT_INVALID_PACKET; - goto LBL_ERR; - } - - return CRYPT_OK; -LBL_ERR: - dsa_free(key); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dsa/dsa_make_key.c b/src/libtomcrypt/src/pk/dsa/dsa_make_key.c deleted file mode 100644 index 55047b3789..0000000000 --- a/src/libtomcrypt/src/pk/dsa/dsa_make_key.c +++ /dev/null @@ -1,41 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file dsa_make_key.c - DSA implementation, generate a DSA key -*/ - -#ifdef LTC_MDSA - -/** - Old-style creation of a DSA key - @param prng An active PRNG state - @param wprng The index of the PRNG desired - @param group_size Size of the multiplicative group (octets) - @param modulus_size Size of the modulus (octets) - @param key [out] Where to store the created key - @return CRYPT_OK if successful. -*/ -int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key) -{ - int err; - - if ((err = dsa_generate_pqg(prng, wprng, group_size, modulus_size, key)) != CRYPT_OK) { return err; } - if ((err = dsa_generate_key(prng, wprng, key)) != CRYPT_OK) { return err; } - - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dsa/dsa_set.c b/src/libtomcrypt/src/pk/dsa/dsa_set.c deleted file mode 100644 index 5a53ecd348..0000000000 --- a/src/libtomcrypt/src/pk/dsa/dsa_set.c +++ /dev/null @@ -1,112 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - - -#ifdef LTC_MDSA - -/** - Import DSA's p, q & g from raw numbers - @param p DSA's p in binary representation - @param plen The length of p - @param q DSA's q in binary representation - @param qlen The length of q - @param g DSA's g in binary representation - @param glen The length of g - @param key [out] the destination for the imported key - @return CRYPT_OK if successful. -*/ -int dsa_set_pqg(const unsigned char *p, unsigned long plen, - const unsigned char *q, unsigned long qlen, - const unsigned char *g, unsigned long glen, - dsa_key *key) -{ - int err, stat; - - LTC_ARGCHK(p != NULL); - LTC_ARGCHK(q != NULL); - LTC_ARGCHK(g != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - /* init key */ - err = mp_init_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL); - if (err != CRYPT_OK) return err; - - if ((err = mp_read_unsigned_bin(key->p, (unsigned char *)p , plen)) != CRYPT_OK) { goto LBL_ERR; } - if ((err = mp_read_unsigned_bin(key->g, (unsigned char *)g , glen)) != CRYPT_OK) { goto LBL_ERR; } - if ((err = mp_read_unsigned_bin(key->q, (unsigned char *)q , qlen)) != CRYPT_OK) { goto LBL_ERR; } - - key->qord = mp_unsigned_bin_size(key->q); - - /* do only a quick validation, without primality testing */ - if ((err = dsa_int_validate_pqg(key, &stat)) != CRYPT_OK) { goto LBL_ERR; } - if (stat == 0) { - err = CRYPT_INVALID_PACKET; - goto LBL_ERR; - } - - return CRYPT_OK; - -LBL_ERR: - dsa_free(key); - return err; -} - -/** - Import DSA public or private key-part from raw numbers - - NB: The p, q & g parts must be set beforehand - - @param in The key-part to import, either public or private. - @param inlen The key-part's length - @param type Which type of key (PK_PRIVATE or PK_PUBLIC) - @param key [out] the destination for the imported key - @return CRYPT_OK if successful. -*/ -int dsa_set_key(const unsigned char *in, unsigned long inlen, int type, dsa_key *key) -{ - int err, stat = 0; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(key->x != NULL); - LTC_ARGCHK(key->y != NULL); - LTC_ARGCHK(key->p != NULL); - LTC_ARGCHK(key->g != NULL); - LTC_ARGCHK(key->q != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - if (type == PK_PRIVATE) { - key->type = PK_PRIVATE; - if ((err = mp_read_unsigned_bin(key->x, (unsigned char *)in, inlen)) != CRYPT_OK) { goto LBL_ERR; } - if ((err = mp_exptmod(key->g, key->x, key->p, key->y)) != CRYPT_OK) { goto LBL_ERR; } - } - else { - key->type = PK_PUBLIC; - if ((err = mp_read_unsigned_bin(key->y, (unsigned char *)in, inlen)) != CRYPT_OK) { goto LBL_ERR; } - } - - if ((err = dsa_int_validate_xy(key, &stat)) != CRYPT_OK) { goto LBL_ERR; } - if (stat == 0) { - err = CRYPT_INVALID_PACKET; - goto LBL_ERR; - } - - return CRYPT_OK; - -LBL_ERR: - dsa_free(key); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dsa/dsa_set_pqg_dsaparam.c b/src/libtomcrypt/src/pk/dsa/dsa_set_pqg_dsaparam.c deleted file mode 100644 index ea4d0bfccc..0000000000 --- a/src/libtomcrypt/src/pk/dsa/dsa_set_pqg_dsaparam.c +++ /dev/null @@ -1,67 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - - -#ifdef LTC_MDSA - -/** - Import DSA's p, q & g from dsaparam - - dsaparam data: openssl dsaparam -outform DER -out dsaparam.der 2048 - - @param dsaparam The DSA param DER encoded data - @param dsaparamlen The length of dhparam data - @param key [out] the destination for the imported key - @return CRYPT_OK if successful. -*/ -int dsa_set_pqg_dsaparam(const unsigned char *dsaparam, unsigned long dsaparamlen, - dsa_key *key) -{ - int err, stat; - - LTC_ARGCHK(dsaparam != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - /* init key */ - err = mp_init_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL); - if (err != CRYPT_OK) return err; - - if ((err = der_decode_sequence_multi(dsaparam, dsaparamlen, - LTC_ASN1_INTEGER, 1UL, key->p, - LTC_ASN1_INTEGER, 1UL, key->q, - LTC_ASN1_INTEGER, 1UL, key->g, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { - goto LBL_ERR; - } - - key->qord = mp_unsigned_bin_size(key->q); - - /* quick p, q, g validation, without primality testing */ - if ((err = dsa_int_validate_pqg(key, &stat)) != CRYPT_OK) { - goto LBL_ERR; - } - if (stat == 0) { - err = CRYPT_INVALID_PACKET; - goto LBL_ERR; - } - - return CRYPT_OK; - -LBL_ERR: - dsa_free(key); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dsa/dsa_shared_secret.c b/src/libtomcrypt/src/pk/dsa/dsa_shared_secret.c deleted file mode 100644 index 30d0133934..0000000000 --- a/src/libtomcrypt/src/pk/dsa/dsa_shared_secret.c +++ /dev/null @@ -1,70 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file dsa_shared_secret.c - DSA Crypto, Tom St Denis -*/ - -#ifdef LTC_MDSA - -/** - Create a DSA shared secret between two keys - @param private_key The private DSA key (the exponent) - @param base The base of the exponentiation (allows this to be used for both encrypt and decrypt) - @param public_key The public key - @param out [out] Destination of the shared secret - @param outlen [in/out] The max size and resulting size of the shared secret - @return CRYPT_OK if successful -*/ -int dsa_shared_secret(void *private_key, void *base, - dsa_key *public_key, - unsigned char *out, unsigned long *outlen) -{ - unsigned long x; - void *res; - int err; - - LTC_ARGCHK(private_key != NULL); - LTC_ARGCHK(public_key != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* make new point */ - if ((err = mp_init(&res)) != CRYPT_OK) { - return err; - } - - if ((err = mp_exptmod(base, private_key, public_key->p, res)) != CRYPT_OK) { - mp_clear(res); - return err; - } - - x = (unsigned long)mp_unsigned_bin_size(res); - if (*outlen < x) { - *outlen = x; - err = CRYPT_BUFFER_OVERFLOW; - goto done; - } - zeromem(out, x); - if ((err = mp_to_unsigned_bin(res, out + (x - mp_unsigned_bin_size(res)))) != CRYPT_OK) { goto done; } - - err = CRYPT_OK; - *outlen = x; -done: - mp_clear(res); - return err; -} - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/dsa/dsa_sign_hash.c b/src/libtomcrypt/src/pk/dsa/dsa_sign_hash.c deleted file mode 100644 index 67b2a6229f..0000000000 --- a/src/libtomcrypt/src/pk/dsa/dsa_sign_hash.c +++ /dev/null @@ -1,152 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file dsa_sign_hash.c - DSA implementation, sign a hash, Tom St Denis -*/ - -#ifdef LTC_MDSA - -/** - Sign a hash with DSA - @param in The hash to sign - @param inlen The length of the hash to sign - @param r The "r" integer of the signature (caller must initialize with mp_init() first) - @param s The "s" integer of the signature (caller must initialize with mp_init() first) - @param prng An active PRNG state - @param wprng The index of the PRNG desired - @param key A private DSA key - @return CRYPT_OK if successful -*/ -int dsa_sign_hash_raw(const unsigned char *in, unsigned long inlen, - void *r, void *s, - prng_state *prng, int wprng, dsa_key *key) -{ - void *k, *kinv, *tmp; - unsigned char *buf; - int err, qbits; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(r != NULL); - LTC_ARGCHK(s != NULL); - LTC_ARGCHK(key != NULL); - - if ((err = prng_is_valid(wprng)) != CRYPT_OK) { - return err; - } - if (key->type != PK_PRIVATE) { - return CRYPT_PK_NOT_PRIVATE; - } - - /* check group order size */ - if (key->qord >= LTC_MDSA_MAX_GROUP) { - return CRYPT_INVALID_ARG; - } - - buf = XMALLOC(LTC_MDSA_MAX_GROUP); - if (buf == NULL) { - return CRYPT_MEM; - } - - /* Init our temps */ - if ((err = mp_init_multi(&k, &kinv, &tmp, NULL)) != CRYPT_OK) { goto ERRBUF; } - - qbits = mp_count_bits(key->q); -retry: - - do { - /* gen random k */ - if ((err = rand_bn_bits(k, qbits, prng, wprng)) != CRYPT_OK) { goto error; } - - /* k should be from range: 1 <= k <= q-1 (see FIPS 186-4 B.2.2) */ - if (mp_cmp_d(k, 0) != LTC_MP_GT || mp_cmp(k, key->q) != LTC_MP_LT) { goto retry; } - - /* test gcd */ - if ((err = mp_gcd(k, key->q, tmp)) != CRYPT_OK) { goto error; } - } while (mp_cmp_d(tmp, 1) != LTC_MP_EQ); - - /* now find 1/k mod q */ - if ((err = mp_invmod(k, key->q, kinv)) != CRYPT_OK) { goto error; } - - /* now find r = g^k mod p mod q */ - if ((err = mp_exptmod(key->g, k, key->p, r)) != CRYPT_OK) { goto error; } - if ((err = mp_mod(r, key->q, r)) != CRYPT_OK) { goto error; } - - if (mp_iszero(r) == LTC_MP_YES) { goto retry; } - - /* FIPS 186-4 4.6: use leftmost min(bitlen(q), bitlen(hash)) bits of 'hash'*/ - inlen = MIN(inlen, (unsigned long)(key->qord)); - - /* now find s = (in + xr)/k mod q */ - if ((err = mp_read_unsigned_bin(tmp, (unsigned char *)in, inlen)) != CRYPT_OK) { goto error; } - if ((err = mp_mul(key->x, r, s)) != CRYPT_OK) { goto error; } - if ((err = mp_add(s, tmp, s)) != CRYPT_OK) { goto error; } - if ((err = mp_mulmod(s, kinv, key->q, s)) != CRYPT_OK) { goto error; } - - if (mp_iszero(s) == LTC_MP_YES) { goto retry; } - - err = CRYPT_OK; -error: - mp_clear_multi(k, kinv, tmp, NULL); -ERRBUF: -#ifdef LTC_CLEAN_STACK - zeromem(buf, LTC_MDSA_MAX_GROUP); -#endif - XFREE(buf); - return err; -} - -/** - Sign a hash with DSA - @param in The hash to sign - @param inlen The length of the hash to sign - @param out [out] Where to store the signature - @param outlen [in/out] The max size and resulting size of the signature - @param prng An active PRNG state - @param wprng The index of the PRNG desired - @param key A private DSA key - @return CRYPT_OK if successful -*/ -int dsa_sign_hash(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int wprng, dsa_key *key) -{ - void *r, *s; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - if (mp_init_multi(&r, &s, NULL) != CRYPT_OK) { - return CRYPT_MEM; - } - - if ((err = dsa_sign_hash_raw(in, inlen, r, s, prng, wprng, key)) != CRYPT_OK) { - goto error; - } - - err = der_encode_sequence_multi(out, outlen, - LTC_ASN1_INTEGER, 1UL, r, - LTC_ASN1_INTEGER, 1UL, s, - LTC_ASN1_EOL, 0UL, NULL); - -error: - mp_clear_multi(r, s, NULL); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dsa/dsa_verify_hash.c b/src/libtomcrypt/src/pk/dsa/dsa_verify_hash.c deleted file mode 100644 index 02038287c0..0000000000 --- a/src/libtomcrypt/src/pk/dsa/dsa_verify_hash.c +++ /dev/null @@ -1,137 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file dsa_verify_hash.c - DSA implementation, verify a signature, Tom St Denis -*/ - - -#ifdef LTC_MDSA - -/** - Verify a DSA signature - @param r DSA "r" parameter - @param s DSA "s" parameter - @param hash The hash that was signed - @param hashlen The length of the hash that was signed - @param stat [out] The result of the signature verification, 1==valid, 0==invalid - @param key The corresponding public DSA key - @return CRYPT_OK if successful (even if the signature is invalid) -*/ -int dsa_verify_hash_raw( void *r, void *s, - const unsigned char *hash, unsigned long hashlen, - int *stat, dsa_key *key) -{ - void *w, *v, *u1, *u2; - int err; - - LTC_ARGCHK(r != NULL); - LTC_ARGCHK(s != NULL); - LTC_ARGCHK(stat != NULL); - LTC_ARGCHK(key != NULL); - - /* default to invalid signature */ - *stat = 0; - - /* init our variables */ - if ((err = mp_init_multi(&w, &v, &u1, &u2, NULL)) != CRYPT_OK) { - return err; - } - - /* neither r or s can be null or >q*/ - if (mp_cmp_d(r, 0) != LTC_MP_GT || mp_cmp_d(s, 0) != LTC_MP_GT || mp_cmp(r, key->q) != LTC_MP_LT || mp_cmp(s, key->q) != LTC_MP_LT) { - err = CRYPT_INVALID_PACKET; - goto error; - } - - /* FIPS 186-4 4.7: use leftmost min(bitlen(q), bitlen(hash)) bits of 'hash' */ - hashlen = MIN(hashlen, (unsigned long)(key->qord)); - - /* w = 1/s mod q */ - if ((err = mp_invmod(s, key->q, w)) != CRYPT_OK) { goto error; } - - /* u1 = m * w mod q */ - if ((err = mp_read_unsigned_bin(u1, (unsigned char *)hash, hashlen)) != CRYPT_OK) { goto error; } - if ((err = mp_mulmod(u1, w, key->q, u1)) != CRYPT_OK) { goto error; } - - /* u2 = r*w mod q */ - if ((err = mp_mulmod(r, w, key->q, u2)) != CRYPT_OK) { goto error; } - - /* v = g^u1 * y^u2 mod p mod q */ - if ((err = mp_exptmod(key->g, u1, key->p, u1)) != CRYPT_OK) { goto error; } - if ((err = mp_exptmod(key->y, u2, key->p, u2)) != CRYPT_OK) { goto error; } - if ((err = mp_mulmod(u1, u2, key->p, v)) != CRYPT_OK) { goto error; } - if ((err = mp_mod(v, key->q, v)) != CRYPT_OK) { goto error; } - - /* if r = v then we're set */ - if (mp_cmp(r, v) == LTC_MP_EQ) { - *stat = 1; - } - - err = CRYPT_OK; -error: - mp_clear_multi(w, v, u1, u2, NULL); - return err; -} - -/** - Verify a DSA signature - @param sig The signature - @param siglen The length of the signature (octets) - @param hash The hash that was signed - @param hashlen The length of the hash that was signed - @param stat [out] The result of the signature verification, 1==valid, 0==invalid - @param key The corresponding public DSA key - @return CRYPT_OK if successful (even if the signature is invalid) -*/ -int dsa_verify_hash(const unsigned char *sig, unsigned long siglen, - const unsigned char *hash, unsigned long hashlen, - int *stat, dsa_key *key) -{ - int err; - void *r, *s; - ltc_asn1_list sig_seq[2]; - unsigned long reallen = 0; - - LTC_ARGCHK(stat != NULL); - *stat = 0; /* must be set before the first return */ - - if ((err = mp_init_multi(&r, &s, NULL)) != CRYPT_OK) { - return err; - } - - LTC_SET_ASN1(sig_seq, 0, LTC_ASN1_INTEGER, r, 1UL); - LTC_SET_ASN1(sig_seq, 1, LTC_ASN1_INTEGER, s, 1UL); - - err = der_decode_sequence(sig, siglen, sig_seq, 2); - if (err != CRYPT_OK) { - goto LBL_ERR; - } - - err = der_length_sequence(sig_seq, 2, &reallen); - if (err != CRYPT_OK || reallen != siglen) { - goto LBL_ERR; - } - - /* do the op */ - err = dsa_verify_hash_raw(r, s, hash, hashlen, stat, key); - -LBL_ERR: - mp_clear_multi(r, s, NULL); - return err; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/dsa/dsa_verify_key.c b/src/libtomcrypt/src/pk/dsa/dsa_verify_key.c deleted file mode 100644 index c05d785707..0000000000 --- a/src/libtomcrypt/src/pk/dsa/dsa_verify_key.c +++ /dev/null @@ -1,199 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file dsa_verify_key.c - DSA implementation, verify a key, Tom St Denis -*/ - -#ifdef LTC_MDSA - -/** - Validate a DSA key - - Yeah, this function should've been called dsa_validate_key() - in the first place and for compat-reasons we keep it - as it was (for now). - - @param key The key to validate - @param stat [out] Result of test, 1==valid, 0==invalid - @return CRYPT_OK if successful -*/ -int dsa_verify_key(dsa_key *key, int *stat) -{ - int err; - - err = dsa_int_validate_primes(key, stat); - if (err != CRYPT_OK || *stat == 0) return err; - - err = dsa_int_validate_pqg(key, stat); - if (err != CRYPT_OK || *stat == 0) return err; - - return dsa_int_validate_xy(key, stat); -} - -/** - Non-complex part (no primality testing) of the validation - of DSA params (p, q, g) - - @param key The key to validate - @param stat [out] Result of test, 1==valid, 0==invalid - @return CRYPT_OK if successful -*/ -int dsa_int_validate_pqg(dsa_key *key, int *stat) -{ - void *tmp1, *tmp2; - int err; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(stat != NULL); - *stat = 0; - - /* check q-order */ - if ( key->qord >= LTC_MDSA_MAX_GROUP || key->qord <= 15 || - (unsigned long)key->qord >= mp_unsigned_bin_size(key->p) || - (mp_unsigned_bin_size(key->p) - key->qord) >= LTC_MDSA_DELTA ) { - return CRYPT_OK; - } - - /* FIPS 186-4 chapter 4.1: 1 < g < p */ - if (mp_cmp_d(key->g, 1) != LTC_MP_GT || mp_cmp(key->g, key->p) != LTC_MP_LT) { - return CRYPT_OK; - } - - if ((err = mp_init_multi(&tmp1, &tmp2, NULL)) != CRYPT_OK) { return err; } - - /* FIPS 186-4 chapter 4.1: q is a divisor of (p - 1) */ - if ((err = mp_sub_d(key->p, 1, tmp1)) != CRYPT_OK) { goto error; } - if ((err = mp_div(tmp1, key->q, tmp1, tmp2)) != CRYPT_OK) { goto error; } - if (mp_iszero(tmp2) != LTC_MP_YES) { - err = CRYPT_OK; - goto error; - } - - /* FIPS 186-4 chapter 4.1: g is a generator of a subgroup of order q in - * the multiplicative group of GF(p) - so we make sure that g^q mod p = 1 - */ - if ((err = mp_exptmod(key->g, key->q, key->p, tmp1)) != CRYPT_OK) { goto error; } - if (mp_cmp_d(tmp1, 1) != LTC_MP_EQ) { - err = CRYPT_OK; - goto error; - } - - err = CRYPT_OK; - *stat = 1; -error: - mp_clear_multi(tmp2, tmp1, NULL); - return err; -} - -/** - Primality testing of DSA params p and q - - @param key The key to validate - @param stat [out] Result of test, 1==valid, 0==invalid - @return CRYPT_OK if successful -*/ -int dsa_int_validate_primes(dsa_key *key, int *stat) -{ - int err, res; - - *stat = 0; - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(stat != NULL); - - /* key->q prime? */ - if ((err = mp_prime_is_prime(key->q, LTC_MILLER_RABIN_REPS, &res)) != CRYPT_OK) { - return err; - } - if (res == LTC_MP_NO) { - return CRYPT_OK; - } - - /* key->p prime? */ - if ((err = mp_prime_is_prime(key->p, LTC_MILLER_RABIN_REPS, &res)) != CRYPT_OK) { - return err; - } - if (res == LTC_MP_NO) { - return CRYPT_OK; - } - - *stat = 1; - return CRYPT_OK; -} - -/** - Validation of a DSA key (x and y values) - - @param key The key to validate - @param stat [out] Result of test, 1==valid, 0==invalid - @return CRYPT_OK if successful -*/ -int dsa_int_validate_xy(dsa_key *key, int *stat) -{ - void *tmp; - int err; - - *stat = 0; - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(stat != NULL); - - /* 1 < y < p-1 */ - if ((err = mp_init(&tmp)) != CRYPT_OK) { - return err; - } - if ((err = mp_sub_d(key->p, 1, tmp)) != CRYPT_OK) { - goto error; - } - if (mp_cmp_d(key->y, 1) != LTC_MP_GT || mp_cmp(key->y, tmp) != LTC_MP_LT) { - err = CRYPT_OK; - goto error; - } - - if (key->type == PK_PRIVATE) { - /* FIPS 186-4 chapter 4.1: 0 < x < q */ - if (mp_cmp_d(key->x, 0) != LTC_MP_GT || mp_cmp(key->x, key->q) != LTC_MP_LT) { - err = CRYPT_OK; - goto error; - } - /* FIPS 186-4 chapter 4.1: y = g^x mod p */ - if ((err = mp_exptmod(key->g, key->x, key->p, tmp)) != CRYPT_OK) { - goto error; - } - if (mp_cmp(tmp, key->y) != LTC_MP_EQ) { - err = CRYPT_OK; - goto error; - } - } - else { - /* with just a public key we cannot test y = g^x mod p therefore we - * only test that y^q mod p = 1, which makes sure y is in g^x mod p - */ - if ((err = mp_exptmod(key->y, key->q, key->p, tmp)) != CRYPT_OK) { - goto error; - } - if (mp_cmp_d(tmp, 1) != LTC_MP_EQ) { - err = CRYPT_OK; - goto error; - } - } - - err = CRYPT_OK; - *stat = 1; -error: - mp_clear(tmp); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/ecc/ecc.c b/src/libtomcrypt/src/pk/ecc/ecc.c deleted file mode 100644 index 24549224d2..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ecc.c +++ /dev/null @@ -1,125 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ecc.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -/* This holds the key settings. ***MUST*** be organized by size from smallest to largest. */ -const ltc_ecc_set_type ltc_ecc_sets[] = { -#ifdef LTC_ECC112 -{ - 14, - "SECP112R1", - "DB7C2ABF62E35E668076BEAD208B", - "659EF8BA043916EEDE8911702B22", - "DB7C2ABF62E35E7628DFAC6561C5", - "09487239995A5EE76B55F9C2F098", - "A89CE5AF8724C0A23E0E0FF77500" -}, -#endif -#ifdef LTC_ECC128 -{ - 16, - "SECP128R1", - "FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF", - "E87579C11079F43DD824993C2CEE5ED3", - "FFFFFFFE0000000075A30D1B9038A115", - "161FF7528B899B2D0C28607CA52C5B86", - "CF5AC8395BAFEB13C02DA292DDED7A83", -}, -#endif -#ifdef LTC_ECC160 -{ - 20, - "SECP160R1", - "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF", - "1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45", - "0100000000000000000001F4C8F927AED3CA752257", - "4A96B5688EF573284664698968C38BB913CBFC82", - "23A628553168947D59DCC912042351377AC5FB32", -}, -#endif -#ifdef LTC_ECC192 -{ - 24, - "ECC-192", - "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF", - "64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1", - "FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831", - "188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012", - "7192B95FFC8DA78631011ED6B24CDD573F977A11E794811", -}, -#endif -#ifdef LTC_ECC224 -{ - 28, - "ECC-224", - "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001", - "B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4", - "FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D", - "B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21", - "BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34", -}, -#endif -#ifdef LTC_ECC256 -{ - 32, - "ECC-256", - "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF", - "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B", - "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551", - "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296", - "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5", -}, -#endif -#ifdef LTC_ECC384 -{ - 48, - "ECC-384", - "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF", - "B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF", - "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973", - "AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7", - "3617DE4A96262C6F5D9E98BF9292DC29F8F41DBD289A147CE9DA3113B5F0B8C00A60B1CE1D7E819D7A431D7C90EA0E5F", -}, -#endif -#ifdef LTC_ECC521 -{ - 66, - "ECC-521", - "1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", - "51953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00", - "1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409", - "C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66", - "11839296A789A3BC0045C8A5FB42C7D1BD998F54449579B446817AFBD17273E662C97EE72995EF42640C550B9013FAD0761353C7086A272C24088BE94769FD16650", -}, -#endif -{ - 0, - NULL, NULL, NULL, NULL, NULL, NULL -} -}; - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ecc_ansi_x963_export.c b/src/libtomcrypt/src/pk/ecc/ecc_ansi_x963_export.c deleted file mode 100644 index 08f648f185..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ecc_ansi_x963_export.c +++ /dev/null @@ -1,77 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ecc_ansi_x963_export.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -/** ECC X9.63 (Sec. 4.3.6) uncompressed export - @param key Key to export - @param out [out] destination of export - @param outlen [in/out] Length of destination and final output size - Return CRYPT_OK on success -*/ -int ecc_ansi_x963_export(ecc_key *key, unsigned char *out, unsigned long *outlen) -{ - unsigned char buf[ECC_BUF_SIZE]; - unsigned long numlen, xlen, ylen; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(outlen != NULL); - - if (ltc_ecc_is_valid_idx(key->idx) == 0) { - return CRYPT_INVALID_ARG; - } - numlen = key->dp->size; - xlen = mp_unsigned_bin_size(key->pubkey.x); - ylen = mp_unsigned_bin_size(key->pubkey.y); - - if (xlen > numlen || ylen > numlen || sizeof(buf) < numlen) { - return CRYPT_BUFFER_OVERFLOW; - } - - if (*outlen < (1 + 2*numlen)) { - *outlen = 1 + 2*numlen; - return CRYPT_BUFFER_OVERFLOW; - } - - LTC_ARGCHK(out != NULL); - - /* store byte 0x04 */ - out[0] = 0x04; - - /* pad and store x */ - zeromem(buf, sizeof(buf)); - mp_to_unsigned_bin(key->pubkey.x, buf + (numlen - xlen)); - XMEMCPY(out+1, buf, numlen); - - /* pad and store y */ - zeromem(buf, sizeof(buf)); - mp_to_unsigned_bin(key->pubkey.y, buf + (numlen - ylen)); - XMEMCPY(out+1+numlen, buf, numlen); - - *outlen = 1 + 2*numlen; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/ecc/ecc_ansi_x963_import.c b/src/libtomcrypt/src/pk/ecc/ecc_ansi_x963_import.c deleted file mode 100644 index 8859fc3bc0..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ecc_ansi_x963_import.c +++ /dev/null @@ -1,102 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ecc_ansi_x963_import.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -/** Import an ANSI X9.63 format public key - @param in The input data to read - @param inlen The length of the input data - @param key [out] destination to store imported key \ -*/ -int ecc_ansi_x963_import(const unsigned char *in, unsigned long inlen, ecc_key *key) -{ - return ecc_ansi_x963_import_ex(in, inlen, key, NULL); -} - -int ecc_ansi_x963_import_ex(const unsigned char *in, unsigned long inlen, ecc_key *key, ltc_ecc_set_type *dp) -{ - int x, err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(key != NULL); - - /* must be odd */ - if ((inlen & 1) == 0) { - return CRYPT_INVALID_ARG; - } - - /* init key */ - if (mp_init_multi(&key->pubkey.x, &key->pubkey.y, &key->pubkey.z, &key->k, NULL) != CRYPT_OK) { - return CRYPT_MEM; - } - - /* check for 4, 6 or 7 */ - if (in[0] != 4 && in[0] != 6 && in[0] != 7) { - err = CRYPT_INVALID_PACKET; - goto error; - } - - /* read data */ - if ((err = mp_read_unsigned_bin(key->pubkey.x, (unsigned char *)in+1, (inlen-1)>>1)) != CRYPT_OK) { - goto error; - } - - if ((err = mp_read_unsigned_bin(key->pubkey.y, (unsigned char *)in+1+((inlen-1)>>1), (inlen-1)>>1)) != CRYPT_OK) { - goto error; - } - if ((err = mp_set(key->pubkey.z, 1)) != CRYPT_OK) { goto error; } - - if (dp == NULL) { - /* determine the idx */ - for (x = 0; ltc_ecc_sets[x].size != 0; x++) { - if ((unsigned)ltc_ecc_sets[x].size >= ((inlen-1)>>1)) { - break; - } - } - if (ltc_ecc_sets[x].size == 0) { - err = CRYPT_INVALID_PACKET; - goto error; - } - /* set the idx */ - key->idx = x; - key->dp = <c_ecc_sets[x]; - } else { - if (((inlen-1)>>1) != (unsigned long) dp->size) { - err = CRYPT_INVALID_PACKET; - goto error; - } - key->idx = -1; - key->dp = dp; - } - key->type = PK_PUBLIC; - - /* we're done */ - return CRYPT_OK; -error: - mp_clear_multi(key->pubkey.x, key->pubkey.y, key->pubkey.z, key->k, NULL); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/ecc/ecc_decrypt_key.c b/src/libtomcrypt/src/pk/ecc/ecc_decrypt_key.c deleted file mode 100644 index 7ee0afa5c9..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ecc_decrypt_key.c +++ /dev/null @@ -1,149 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ecc_decrypt_key.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -/** - Decrypt an ECC encrypted key - @param in The ciphertext - @param inlen The length of the ciphertext (octets) - @param out [out] The plaintext - @param outlen [in/out] The max size and resulting size of the plaintext - @param key The corresponding private ECC key - @return CRYPT_OK if successful -*/ -int ecc_decrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - ecc_key *key) -{ - unsigned char *ecc_shared, *skey, *pub_expt; - unsigned long x, y; - unsigned long hashOID[32] = { 0 }; - int hash, err; - ecc_key pubkey; - ltc_asn1_list decode[3]; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - /* right key type? */ - if (key->type != PK_PRIVATE) { - return CRYPT_PK_NOT_PRIVATE; - } - - /* decode to find out hash */ - LTC_SET_ASN1(decode, 0, LTC_ASN1_OBJECT_IDENTIFIER, hashOID, sizeof(hashOID)/sizeof(hashOID[0])); - err = der_decode_sequence(in, inlen, decode, 1); - if (err != CRYPT_OK && err != CRYPT_INPUT_TOO_LONG) { - return err; - } - - hash = find_hash_oid(hashOID, decode[0].size); - if (hash_is_valid(hash) != CRYPT_OK) { - return CRYPT_INVALID_PACKET; - } - - /* we now have the hash! */ - - /* allocate memory */ - pub_expt = XMALLOC(ECC_BUF_SIZE); - ecc_shared = XMALLOC(ECC_BUF_SIZE); - skey = XMALLOC(MAXBLOCKSIZE); - if (pub_expt == NULL || ecc_shared == NULL || skey == NULL) { - if (pub_expt != NULL) { - XFREE(pub_expt); - } - if (ecc_shared != NULL) { - XFREE(ecc_shared); - } - if (skey != NULL) { - XFREE(skey); - } - return CRYPT_MEM; - } - LTC_SET_ASN1(decode, 1, LTC_ASN1_OCTET_STRING, pub_expt, ECC_BUF_SIZE); - LTC_SET_ASN1(decode, 2, LTC_ASN1_OCTET_STRING, skey, MAXBLOCKSIZE); - - /* read the structure in now */ - if ((err = der_decode_sequence(in, inlen, decode, 3)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* import ECC key from packet */ - if ((err = ecc_import(decode[1].data, decode[1].size, &pubkey)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* make shared key */ - x = ECC_BUF_SIZE; - if ((err = ecc_shared_secret(key, &pubkey, ecc_shared, &x)) != CRYPT_OK) { - ecc_free(&pubkey); - goto LBL_ERR; - } - ecc_free(&pubkey); - - y = MIN(ECC_BUF_SIZE, MAXBLOCKSIZE); - if ((err = hash_memory(hash, ecc_shared, x, ecc_shared, &y)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* ensure the hash of the shared secret is at least as big as the encrypt itself */ - if (decode[2].size > y) { - err = CRYPT_INVALID_PACKET; - goto LBL_ERR; - } - - /* avoid buffer overflow */ - if (*outlen < decode[2].size) { - *outlen = decode[2].size; - err = CRYPT_BUFFER_OVERFLOW; - goto LBL_ERR; - } - - /* Decrypt the key */ - for (x = 0; x < decode[2].size; x++) { - out[x] = skey[x] ^ ecc_shared[x]; - } - *outlen = x; - - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(pub_expt, ECC_BUF_SIZE); - zeromem(ecc_shared, ECC_BUF_SIZE); - zeromem(skey, MAXBLOCKSIZE); -#endif - - XFREE(pub_expt); - XFREE(ecc_shared); - XFREE(skey); - - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ecc_encrypt_key.c b/src/libtomcrypt/src/pk/ecc/ecc_encrypt_key.c deleted file mode 100644 index 58acd920db..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ecc_encrypt_key.c +++ /dev/null @@ -1,134 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ecc_encrypt_key.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -/** - Encrypt a symmetric key with ECC - @param in The symmetric key you want to encrypt - @param inlen The length of the key to encrypt (octets) - @param out [out] The destination for the ciphertext - @param outlen [in/out] The max size and resulting size of the ciphertext - @param prng An active PRNG state - @param wprng The index of the PRNG you wish to use - @param hash The index of the hash you want to use - @param key The ECC key you want to encrypt to - @return CRYPT_OK if successful -*/ -int ecc_encrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int wprng, int hash, - ecc_key *key) -{ - unsigned char *pub_expt, *ecc_shared, *skey; - ecc_key pubkey; - unsigned long x, y, pubkeysize; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - /* check that wprng/cipher/hash are not invalid */ - if ((err = prng_is_valid(wprng)) != CRYPT_OK) { - return err; - } - - if ((err = hash_is_valid(hash)) != CRYPT_OK) { - return err; - } - - if (inlen > hash_descriptor[hash].hashsize) { - return CRYPT_INVALID_HASH; - } - - /* make a random key and export the public copy */ - if ((err = ecc_make_key_ex(prng, wprng, &pubkey, key->dp)) != CRYPT_OK) { - return err; - } - - pub_expt = XMALLOC(ECC_BUF_SIZE); - ecc_shared = XMALLOC(ECC_BUF_SIZE); - skey = XMALLOC(MAXBLOCKSIZE); - if (pub_expt == NULL || ecc_shared == NULL || skey == NULL) { - if (pub_expt != NULL) { - XFREE(pub_expt); - } - if (ecc_shared != NULL) { - XFREE(ecc_shared); - } - if (skey != NULL) { - XFREE(skey); - } - ecc_free(&pubkey); - return CRYPT_MEM; - } - - pubkeysize = ECC_BUF_SIZE; - if ((err = ecc_export(pub_expt, &pubkeysize, PK_PUBLIC, &pubkey)) != CRYPT_OK) { - ecc_free(&pubkey); - goto LBL_ERR; - } - - /* make random key */ - x = ECC_BUF_SIZE; - if ((err = ecc_shared_secret(&pubkey, key, ecc_shared, &x)) != CRYPT_OK) { - ecc_free(&pubkey); - goto LBL_ERR; - } - ecc_free(&pubkey); - y = MAXBLOCKSIZE; - if ((err = hash_memory(hash, ecc_shared, x, skey, &y)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* Encrypt key */ - for (x = 0; x < inlen; x++) { - skey[x] ^= in[x]; - } - - err = der_encode_sequence_multi(out, outlen, - LTC_ASN1_OBJECT_IDENTIFIER, hash_descriptor[hash].OIDlen, hash_descriptor[hash].OID, - LTC_ASN1_OCTET_STRING, pubkeysize, pub_expt, - LTC_ASN1_OCTET_STRING, inlen, skey, - LTC_ASN1_EOL, 0UL, NULL); - -LBL_ERR: -#ifdef LTC_CLEAN_STACK - /* clean up */ - zeromem(pub_expt, ECC_BUF_SIZE); - zeromem(ecc_shared, ECC_BUF_SIZE); - zeromem(skey, MAXBLOCKSIZE); -#endif - - XFREE(skey); - XFREE(ecc_shared); - XFREE(pub_expt); - - return err; -} - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ecc_export.c b/src/libtomcrypt/src/pk/ecc/ecc_export.c deleted file mode 100644 index 57dc38dde8..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ecc_export.c +++ /dev/null @@ -1,80 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ecc_export.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -/** - Export an ECC key as a binary packet - @param out [out] Destination for the key - @param outlen [in/out] Max size and resulting size of the exported key - @param type The type of key you want to export (PK_PRIVATE or PK_PUBLIC) - @param key The key to export - @return CRYPT_OK if successful -*/ -int ecc_export(unsigned char *out, unsigned long *outlen, int type, ecc_key *key) -{ - int err; - unsigned char flags[1]; - unsigned long key_size; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - /* type valid? */ - if (key->type != PK_PRIVATE && type == PK_PRIVATE) { - return CRYPT_PK_TYPE_MISMATCH; - } - - if (ltc_ecc_is_valid_idx(key->idx) == 0) { - return CRYPT_INVALID_ARG; - } - - /* we store the NIST byte size */ - key_size = key->dp->size; - - if (type == PK_PRIVATE) { - flags[0] = 1; - err = der_encode_sequence_multi(out, outlen, - LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_SHORT_INTEGER, 1UL, &key_size, - LTC_ASN1_INTEGER, 1UL, key->pubkey.x, - LTC_ASN1_INTEGER, 1UL, key->pubkey.y, - LTC_ASN1_INTEGER, 1UL, key->k, - LTC_ASN1_EOL, 0UL, NULL); - } else { - flags[0] = 0; - err = der_encode_sequence_multi(out, outlen, - LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_SHORT_INTEGER, 1UL, &key_size, - LTC_ASN1_INTEGER, 1UL, key->pubkey.x, - LTC_ASN1_INTEGER, 1UL, key->pubkey.y, - LTC_ASN1_EOL, 0UL, NULL); - } - - return err; -} - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ecc_free.c b/src/libtomcrypt/src/pk/ecc/ecc_free.c deleted file mode 100644 index 8ae3436076..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ecc_free.c +++ /dev/null @@ -1,38 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ecc_free.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -/** - Free an ECC key from memory - @param key The key you wish to free -*/ -void ecc_free(ecc_key *key) -{ - LTC_ARGCHKVD(key != NULL); - mp_clear_multi(key->pubkey.x, key->pubkey.y, key->pubkey.z, key->k, NULL); -} - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ecc_get_size.c b/src/libtomcrypt/src/pk/ecc/ecc_get_size.c deleted file mode 100644 index 8cbc7e3224..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ecc_get_size.c +++ /dev/null @@ -1,42 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ecc_get_size.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -/** - Get the size of an ECC key - @param key The key to get the size of - @return The size (octets) of the key or INT_MAX on error -*/ -int ecc_get_size(ecc_key *key) -{ - LTC_ARGCHK(key != NULL); - if (ltc_ecc_is_valid_idx(key->idx)) - return key->dp->size; - else - return INT_MAX; /* large value known to cause it to fail when passed to ecc_make_key() */ -} - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ecc_import.c b/src/libtomcrypt/src/pk/ecc/ecc_import.c deleted file mode 100644 index 18b761cf62..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ecc_import.c +++ /dev/null @@ -1,174 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ecc_import.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -static int _is_point(ecc_key *key) -{ - void *prime, *b, *t1, *t2; - int err; - - if ((err = mp_init_multi(&prime, &b, &t1, &t2, NULL)) != CRYPT_OK) { - return err; - } - - /* load prime and b */ - if ((err = mp_read_radix(prime, key->dp->prime, 16)) != CRYPT_OK) { goto error; } - if ((err = mp_read_radix(b, key->dp->B, 16)) != CRYPT_OK) { goto error; } - - /* compute y^2 */ - if ((err = mp_sqr(key->pubkey.y, t1)) != CRYPT_OK) { goto error; } - - /* compute x^3 */ - if ((err = mp_sqr(key->pubkey.x, t2)) != CRYPT_OK) { goto error; } - if ((err = mp_mod(t2, prime, t2)) != CRYPT_OK) { goto error; } - if ((err = mp_mul(key->pubkey.x, t2, t2)) != CRYPT_OK) { goto error; } - - /* compute y^2 - x^3 */ - if ((err = mp_sub(t1, t2, t1)) != CRYPT_OK) { goto error; } - - /* compute y^2 - x^3 + 3x */ - if ((err = mp_add(t1, key->pubkey.x, t1)) != CRYPT_OK) { goto error; } - if ((err = mp_add(t1, key->pubkey.x, t1)) != CRYPT_OK) { goto error; } - if ((err = mp_add(t1, key->pubkey.x, t1)) != CRYPT_OK) { goto error; } - if ((err = mp_mod(t1, prime, t1)) != CRYPT_OK) { goto error; } - while (mp_cmp_d(t1, 0) == LTC_MP_LT) { - if ((err = mp_add(t1, prime, t1)) != CRYPT_OK) { goto error; } - } - while (mp_cmp(t1, prime) != LTC_MP_LT) { - if ((err = mp_sub(t1, prime, t1)) != CRYPT_OK) { goto error; } - } - - /* compare to b */ - if (mp_cmp(t1, b) != LTC_MP_EQ) { - err = CRYPT_INVALID_PACKET; - } else { - err = CRYPT_OK; - } - -error: - mp_clear_multi(prime, b, t1, t2, NULL); - return err; -} - -/** - Import an ECC key from a binary packet - @param in The packet to import - @param inlen The length of the packet - @param key [out] The destination of the import - @return CRYPT_OK if successful, upon error all allocated memory will be freed -*/ -int ecc_import(const unsigned char *in, unsigned long inlen, ecc_key *key) -{ - return ecc_import_ex(in, inlen, key, NULL); -} - -/** - Import an ECC key from a binary packet, using user supplied domain params rather than one of the NIST ones - @param in The packet to import - @param inlen The length of the packet - @param key [out] The destination of the import - @param dp pointer to user supplied params; must be the same as the params used when exporting - @return CRYPT_OK if successful, upon error all allocated memory will be freed -*/ -int ecc_import_ex(const unsigned char *in, unsigned long inlen, ecc_key *key, const ltc_ecc_set_type *dp) -{ - unsigned long key_size; - unsigned char flags[1]; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - /* init key */ - if (mp_init_multi(&key->pubkey.x, &key->pubkey.y, &key->pubkey.z, &key->k, NULL) != CRYPT_OK) { - return CRYPT_MEM; - } - - /* find out what type of key it is */ - err = der_decode_sequence_multi(in, inlen, LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_EOL, 0UL, NULL); - if (err != CRYPT_OK && err != CRYPT_INPUT_TOO_LONG) { - goto done; - } - - - if (flags[0] == 1) { - /* private key */ - key->type = PK_PRIVATE; - if ((err = der_decode_sequence_multi(in, inlen, - LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_SHORT_INTEGER, 1UL, &key_size, - LTC_ASN1_INTEGER, 1UL, key->pubkey.x, - LTC_ASN1_INTEGER, 1UL, key->pubkey.y, - LTC_ASN1_INTEGER, 1UL, key->k, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { - goto done; - } - } else if (flags[0] == 0) { - /* public key */ - key->type = PK_PUBLIC; - if ((err = der_decode_sequence_multi(in, inlen, - LTC_ASN1_BIT_STRING, 1UL, flags, - LTC_ASN1_SHORT_INTEGER, 1UL, &key_size, - LTC_ASN1_INTEGER, 1UL, key->pubkey.x, - LTC_ASN1_INTEGER, 1UL, key->pubkey.y, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { - goto done; - } - } - else { - err = CRYPT_INVALID_PACKET; - goto done; - } - - if (dp == NULL) { - /* find the idx */ - for (key->idx = 0; ltc_ecc_sets[key->idx].size && (unsigned long)ltc_ecc_sets[key->idx].size != key_size; ++key->idx); - if (ltc_ecc_sets[key->idx].size == 0) { - err = CRYPT_INVALID_PACKET; - goto done; - } - key->dp = <c_ecc_sets[key->idx]; - } else { - key->idx = -1; - key->dp = dp; - } - /* set z */ - if ((err = mp_set(key->pubkey.z, 1)) != CRYPT_OK) { goto done; } - - /* is it a point on the curve? */ - if ((err = _is_point(key)) != CRYPT_OK) { - goto done; - } - - /* we're good */ - return CRYPT_OK; -done: - mp_clear_multi(key->pubkey.x, key->pubkey.y, key->pubkey.z, key->k, NULL); - return err; -} -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ecc_make_key.c b/src/libtomcrypt/src/pk/ecc/ecc_make_key.c deleted file mode 100644 index 86afddca9e..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ecc_make_key.c +++ /dev/null @@ -1,128 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ecc_make_key.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -/** - Make a new ECC key - @param prng An active PRNG state - @param wprng The index of the PRNG you wish to use - @param keysize The keysize for the new key (in octets from 20 to 65 bytes) - @param key [out] Destination of the newly created key - @return CRYPT_OK if successful, upon error all allocated memory will be freed -*/ -int ecc_make_key(prng_state *prng, int wprng, int keysize, ecc_key *key) -{ - int x, err; - - /* find key size */ - for (x = 0; (keysize > ltc_ecc_sets[x].size) && (ltc_ecc_sets[x].size != 0); x++); - keysize = ltc_ecc_sets[x].size; - - if (keysize > ECC_MAXSIZE || ltc_ecc_sets[x].size == 0) { - return CRYPT_INVALID_KEYSIZE; - } - err = ecc_make_key_ex(prng, wprng, key, <c_ecc_sets[x]); - key->idx = x; - return err; -} - -int ecc_make_key_ex(prng_state *prng, int wprng, ecc_key *key, const ltc_ecc_set_type *dp) -{ - int err; - ecc_point *base; - void *prime, *order; - unsigned char *buf; - int keysize; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - LTC_ARGCHK(dp != NULL); - - /* good prng? */ - if ((err = prng_is_valid(wprng)) != CRYPT_OK) { - return err; - } - - key->idx = -1; - key->dp = dp; - keysize = dp->size; - - /* allocate ram */ - base = NULL; - buf = XMALLOC(ECC_MAXSIZE); - if (buf == NULL) { - return CRYPT_MEM; - } - - /* make up random string */ - if (prng_descriptor[wprng].read(buf, (unsigned long)keysize, prng) != (unsigned long)keysize) { - err = CRYPT_ERROR_READPRNG; - goto ERR_BUF; - } - - /* setup the key variables */ - if ((err = mp_init_multi(&key->pubkey.x, &key->pubkey.y, &key->pubkey.z, &key->k, &prime, &order, NULL)) != CRYPT_OK) { - goto ERR_BUF; - } - base = ltc_ecc_new_point(); - if (base == NULL) { - err = CRYPT_MEM; - goto errkey; - } - - /* read in the specs for this key */ - if ((err = mp_read_radix(prime, (char *)key->dp->prime, 16)) != CRYPT_OK) { goto errkey; } - if ((err = mp_read_radix(order, (char *)key->dp->order, 16)) != CRYPT_OK) { goto errkey; } - if ((err = mp_read_radix(base->x, (char *)key->dp->Gx, 16)) != CRYPT_OK) { goto errkey; } - if ((err = mp_read_radix(base->y, (char *)key->dp->Gy, 16)) != CRYPT_OK) { goto errkey; } - if ((err = mp_set(base->z, 1)) != CRYPT_OK) { goto errkey; } - if ((err = mp_read_unsigned_bin(key->k, (unsigned char *)buf, keysize)) != CRYPT_OK) { goto errkey; } - - /* the key should be smaller than the order of base point */ - if (mp_cmp(key->k, order) != LTC_MP_LT) { - if((err = mp_mod(key->k, order, key->k)) != CRYPT_OK) { goto errkey; } - } - /* make the public key */ - if ((err = ltc_mp.ecc_ptmul(key->k, base, &key->pubkey, prime, 1)) != CRYPT_OK) { goto errkey; } - key->type = PK_PRIVATE; - - /* free up ram */ - err = CRYPT_OK; - goto cleanup; -errkey: - mp_clear_multi(key->pubkey.x, key->pubkey.y, key->pubkey.z, key->k, NULL); -cleanup: - ltc_ecc_del_point(base); - mp_clear_multi(prime, order, NULL); -ERR_BUF: -#ifdef LTC_CLEAN_STACK - zeromem(buf, ECC_MAXSIZE); -#endif - XFREE(buf); - return err; -} - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ecc_shared_secret.c b/src/libtomcrypt/src/pk/ecc/ecc_shared_secret.c deleted file mode 100644 index 673b6c7b78..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ecc_shared_secret.c +++ /dev/null @@ -1,93 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ecc_shared_secret.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -/** - Create an ECC shared secret between two keys - @param private_key The private ECC key - @param public_key The public key - @param out [out] Destination of the shared secret (Conforms to EC-DH from ANSI X9.63) - @param outlen [in/out] The max size and resulting size of the shared secret - @return CRYPT_OK if successful -*/ -int ecc_shared_secret(ecc_key *private_key, ecc_key *public_key, - unsigned char *out, unsigned long *outlen) -{ - unsigned long x; - ecc_point *result; - void *prime; - int err; - - LTC_ARGCHK(private_key != NULL); - LTC_ARGCHK(public_key != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* type valid? */ - if (private_key->type != PK_PRIVATE) { - return CRYPT_PK_NOT_PRIVATE; - } - - if (ltc_ecc_is_valid_idx(private_key->idx) == 0 || ltc_ecc_is_valid_idx(public_key->idx) == 0) { - return CRYPT_INVALID_ARG; - } - - if (XSTRCMP(private_key->dp->name, public_key->dp->name) != 0) { - return CRYPT_PK_TYPE_MISMATCH; - } - - /* make new point */ - result = ltc_ecc_new_point(); - if (result == NULL) { - return CRYPT_MEM; - } - - if ((err = mp_init(&prime)) != CRYPT_OK) { - ltc_ecc_del_point(result); - return err; - } - - if ((err = mp_read_radix(prime, (char *)private_key->dp->prime, 16)) != CRYPT_OK) { goto done; } - if ((err = ltc_mp.ecc_ptmul(private_key->k, &public_key->pubkey, result, prime, 1)) != CRYPT_OK) { goto done; } - - x = (unsigned long)mp_unsigned_bin_size(prime); - if (*outlen < x) { - *outlen = x; - err = CRYPT_BUFFER_OVERFLOW; - goto done; - } - zeromem(out, x); - if ((err = mp_to_unsigned_bin(result->x, out + (x - mp_unsigned_bin_size(result->x)))) != CRYPT_OK) { goto done; } - - err = CRYPT_OK; - *outlen = x; -done: - mp_clear(prime); - ltc_ecc_del_point(result); - return err; -} - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ecc_sign_hash.c b/src/libtomcrypt/src/pk/ecc/ecc_sign_hash.c deleted file mode 100644 index b8b91cb5d1..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ecc_sign_hash.c +++ /dev/null @@ -1,171 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_MECC - -/** - @file ecc_sign_hash.c - ECC Crypto, Tom St Denis -*/ - -static int _ecc_sign_hash(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int wprng, ecc_key *key, int sigformat) -{ - ecc_key pubkey; - void *r, *s, *e, *p, *b; - int err, max_iterations = LTC_PK_MAX_RETRIES; - unsigned long pbits, pbytes, i, shift_right; - unsigned char ch, buf[MAXBLOCKSIZE]; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - /* is this a private key? */ - if (key->type != PK_PRIVATE) { - return CRYPT_PK_NOT_PRIVATE; - } - - /* is the IDX valid ? */ - if (ltc_ecc_is_valid_idx(key->idx) != 1) { - return CRYPT_PK_INVALID_TYPE; - } - - if ((err = prng_is_valid(wprng)) != CRYPT_OK) { - return err; - } - - /* init the bignums */ - if ((err = mp_init_multi(&r, &s, &p, &e, &b, NULL)) != CRYPT_OK) { - return err; - } - if ((err = mp_read_radix(p, (char *)key->dp->order, 16)) != CRYPT_OK) { goto errnokey; } - - /* get the hash and load it as a bignum into 'e' */ - pbits = mp_count_bits(p); - pbytes = (pbits+7) >> 3; - if (pbits > inlen*8) { - if ((err = mp_read_unsigned_bin(e, (unsigned char *)in, inlen)) != CRYPT_OK) { goto errnokey; } - } - else if (pbits % 8 == 0) { - if ((err = mp_read_unsigned_bin(e, (unsigned char *)in, pbytes)) != CRYPT_OK) { goto errnokey; } - } - else { - shift_right = 8 - pbits % 8; - for (i=0, ch=0; i> shift_right); - } - if ((err = mp_read_unsigned_bin(e, (unsigned char *)buf, pbytes)) != CRYPT_OK) { goto errnokey; } - } - - /* make up a key and export the public copy */ - do { - if ((err = ecc_make_key_ex(prng, wprng, &pubkey, key->dp)) != CRYPT_OK) { - goto errnokey; - } - - /* find r = x1 mod n */ - if ((err = mp_mod(pubkey.pubkey.x, p, r)) != CRYPT_OK) { goto error; } - - if (mp_iszero(r) == LTC_MP_YES) { - ecc_free(&pubkey); - } else { - if ((err = rand_bn_upto(b, p, prng, wprng)) != CRYPT_OK) { goto error; } /* b = blinding value */ - /* find s = (e + xr)/k */ - if ((err = mp_mulmod(pubkey.k, b, p, pubkey.k)) != CRYPT_OK) { goto error; } /* k = kb */ - if ((err = mp_invmod(pubkey.k, p, pubkey.k)) != CRYPT_OK) { goto error; } /* k = 1/kb */ - if ((err = mp_mulmod(key->k, r, p, s)) != CRYPT_OK) { goto error; } /* s = xr */ - if ((err = mp_mulmod(pubkey.k, s, p, s)) != CRYPT_OK) { goto error; } /* s = xr/kb */ - if ((err = mp_mulmod(pubkey.k, e, p, e)) != CRYPT_OK) { goto error; } /* e = e/kb */ - if ((err = mp_add(e, s, s)) != CRYPT_OK) { goto error; } /* s = e/kb + xr/kb */ - if ((err = mp_mulmod(s, b, p, s)) != CRYPT_OK) { goto error; } /* s = b(e/kb + xr/kb) = (e + xr)/k */ - ecc_free(&pubkey); - if (mp_iszero(s) == LTC_MP_NO) { - break; - } - } - } while (--max_iterations > 0); - - if (max_iterations == 0) { - goto errnokey; - } - - if (sigformat == 1) { - /* RFC7518 format */ - if (*outlen < 2*pbytes) { err = CRYPT_MEM; goto errnokey; } - zeromem(out, 2*pbytes); - i = mp_unsigned_bin_size(r); - if ((err = mp_to_unsigned_bin(r, out + (pbytes - i))) != CRYPT_OK) { goto errnokey; } - i = mp_unsigned_bin_size(s); - if ((err = mp_to_unsigned_bin(s, out + (2*pbytes - i))) != CRYPT_OK) { goto errnokey; } - *outlen = 2*pbytes; - err = CRYPT_OK; - } - else { - /* store as ASN.1 SEQUENCE { r, s -- integer } */ - err = der_encode_sequence_multi(out, outlen, - LTC_ASN1_INTEGER, 1UL, r, - LTC_ASN1_INTEGER, 1UL, s, - LTC_ASN1_EOL, 0UL, NULL); - } - goto errnokey; -error: - ecc_free(&pubkey); -errnokey: - mp_clear_multi(r, s, p, e, b, NULL); - return err; -} - -/** - Sign a message digest - @param in The message digest to sign - @param inlen The length of the digest - @param out [out] The destination for the signature - @param outlen [in/out] The max size and resulting size of the signature - @param prng An active PRNG state - @param wprng The index of the PRNG you wish to use - @param key A private ECC key - @return CRYPT_OK if successful -*/ -int ecc_sign_hash(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int wprng, ecc_key *key) -{ - return _ecc_sign_hash(in, inlen, out, outlen, prng, wprng, key, 0); -} - -/** - Sign a message digest in RFC7518 format - @param in The message digest to sign - @param inlen The length of the digest - @param out [out] The destination for the signature - @param outlen [in/out] The max size and resulting size of the signature - @param prng An active PRNG state - @param wprng The index of the PRNG you wish to use - @param key A private ECC key - @return CRYPT_OK if successful -*/ -int ecc_sign_hash_rfc7518(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int wprng, ecc_key *key) -{ - return _ecc_sign_hash(in, inlen, out, outlen, prng, wprng, key, 1); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/ecc/ecc_sizes.c b/src/libtomcrypt/src/pk/ecc/ecc_sizes.c deleted file mode 100644 index dbb17e2789..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ecc_sizes.c +++ /dev/null @@ -1,46 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ecc_sizes.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -void ecc_sizes(int *low, int *high) -{ - int i; - LTC_ARGCHKVD(low != NULL); - LTC_ARGCHKVD(high != NULL); - - *low = INT_MAX; - *high = 0; - for (i = 0; ltc_ecc_sets[i].size != 0; i++) { - if (ltc_ecc_sets[i].size < *low) { - *low = ltc_ecc_sets[i].size; - } - if (ltc_ecc_sets[i].size > *high) { - *high = ltc_ecc_sets[i].size; - } - } -} - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ecc_test.c b/src/libtomcrypt/src/pk/ecc/ecc_test.c deleted file mode 100644 index 1b0d69ee02..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ecc_test.c +++ /dev/null @@ -1,93 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ecc_test.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -/** - Perform on the ECC system - @return CRYPT_OK if successful -*/ -int ecc_test(void) -{ - void *modulus, *order; - ecc_point *G, *GG; - int i, err, primality; - - if ((err = mp_init_multi(&modulus, &order, NULL)) != CRYPT_OK) { - return err; - } - - G = ltc_ecc_new_point(); - GG = ltc_ecc_new_point(); - if (G == NULL || GG == NULL) { - mp_clear_multi(modulus, order, NULL); - ltc_ecc_del_point(G); - ltc_ecc_del_point(GG); - return CRYPT_MEM; - } - - for (i = 0; ltc_ecc_sets[i].size; i++) { - #if 0 - printf("Testing %d\n", ltc_ecc_sets[i].size); - #endif - if ((err = mp_read_radix(modulus, (char *)ltc_ecc_sets[i].prime, 16)) != CRYPT_OK) { goto done; } - if ((err = mp_read_radix(order, (char *)ltc_ecc_sets[i].order, 16)) != CRYPT_OK) { goto done; } - - /* is prime actually prime? */ - if ((err = mp_prime_is_prime(modulus, 8, &primality)) != CRYPT_OK) { goto done; } - if (primality == 0) { - err = CRYPT_FAIL_TESTVECTOR; - goto done; - } - - /* is order prime ? */ - if ((err = mp_prime_is_prime(order, 8, &primality)) != CRYPT_OK) { goto done; } - if (primality == 0) { - err = CRYPT_FAIL_TESTVECTOR; - goto done; - } - - if ((err = mp_read_radix(G->x, (char *)ltc_ecc_sets[i].Gx, 16)) != CRYPT_OK) { goto done; } - if ((err = mp_read_radix(G->y, (char *)ltc_ecc_sets[i].Gy, 16)) != CRYPT_OK) { goto done; } - mp_set(G->z, 1); - - /* then we should have G == (order + 1)G */ - if ((err = mp_add_d(order, 1, order)) != CRYPT_OK) { goto done; } - if ((err = ltc_mp.ecc_ptmul(order, G, GG, modulus, 1)) != CRYPT_OK) { goto done; } - if (mp_cmp(G->x, GG->x) != LTC_MP_EQ || mp_cmp(G->y, GG->y) != LTC_MP_EQ) { - err = CRYPT_FAIL_TESTVECTOR; - goto done; - } - } - err = CRYPT_OK; -done: - ltc_ecc_del_point(GG); - ltc_ecc_del_point(G); - mp_clear_multi(order, modulus, NULL); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ecc_verify_hash.c b/src/libtomcrypt/src/pk/ecc/ecc_verify_hash.c deleted file mode 100644 index f9493b560d..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ecc_verify_hash.c +++ /dev/null @@ -1,200 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_MECC - -/** - @file ecc_verify_hash.c - ECC Crypto, Tom St Denis -*/ - -static int _ecc_verify_hash(const unsigned char *sig, unsigned long siglen, - const unsigned char *hash, unsigned long hashlen, - int *stat, ecc_key *key, int sigformat) -{ - ecc_point *mG, *mQ; - void *r, *s, *v, *w, *u1, *u2, *e, *p, *m; - void *mp; - int err; - unsigned long pbits, pbytes, i, shift_right; - unsigned char ch, buf[MAXBLOCKSIZE]; - - LTC_ARGCHK(sig != NULL); - LTC_ARGCHK(hash != NULL); - LTC_ARGCHK(stat != NULL); - LTC_ARGCHK(key != NULL); - - /* default to invalid signature */ - *stat = 0; - mp = NULL; - - /* is the IDX valid ? */ - if (ltc_ecc_is_valid_idx(key->idx) != 1) { - return CRYPT_PK_INVALID_TYPE; - } - - /* allocate ints */ - if ((err = mp_init_multi(&r, &s, &v, &w, &u1, &u2, &p, &e, &m, NULL)) != CRYPT_OK) { - return CRYPT_MEM; - } - - /* allocate points */ - mG = ltc_ecc_new_point(); - mQ = ltc_ecc_new_point(); - if (mQ == NULL || mG == NULL) { - err = CRYPT_MEM; - goto error; - } - - if (sigformat == 1) { - /* RFC7518 format */ - if ((siglen % 2) == 1) { - err = CRYPT_INVALID_PACKET; - goto error; - } - i = siglen / 2; - if ((err = mp_read_unsigned_bin(r, (unsigned char *)sig, i)) != CRYPT_OK) { goto error; } - if ((err = mp_read_unsigned_bin(s, (unsigned char *)sig+i, i)) != CRYPT_OK) { goto error; } - } - else { - /* ASN.1 format */ - if ((err = der_decode_sequence_multi(sig, siglen, - LTC_ASN1_INTEGER, 1UL, r, - LTC_ASN1_INTEGER, 1UL, s, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { goto error; } - } - - /* get the order */ - if ((err = mp_read_radix(p, (char *)key->dp->order, 16)) != CRYPT_OK) { goto error; } - - /* get the modulus */ - if ((err = mp_read_radix(m, (char *)key->dp->prime, 16)) != CRYPT_OK) { goto error; } - - /* check for zero */ - if (mp_iszero(r) || mp_iszero(s) || mp_cmp(r, p) != LTC_MP_LT || mp_cmp(s, p) != LTC_MP_LT) { - err = CRYPT_INVALID_PACKET; - goto error; - } - - /* read hash - truncate if needed */ - pbits = mp_count_bits(p); - pbytes = (pbits+7) >> 3; - if (pbits > hashlen*8) { - if ((err = mp_read_unsigned_bin(e, (unsigned char *)hash, hashlen)) != CRYPT_OK) { goto error; } - } - else if (pbits % 8 == 0) { - if ((err = mp_read_unsigned_bin(e, (unsigned char *)hash, pbytes)) != CRYPT_OK) { goto error; } - } - else { - shift_right = 8 - pbits % 8; - for (i=0, ch=0; i> shift_right); - } - if ((err = mp_read_unsigned_bin(e, (unsigned char *)buf, pbytes)) != CRYPT_OK) { goto error; } - } - - /* w = s^-1 mod n */ - if ((err = mp_invmod(s, p, w)) != CRYPT_OK) { goto error; } - - /* u1 = ew */ - if ((err = mp_mulmod(e, w, p, u1)) != CRYPT_OK) { goto error; } - - /* u2 = rw */ - if ((err = mp_mulmod(r, w, p, u2)) != CRYPT_OK) { goto error; } - - /* find mG and mQ */ - if ((err = mp_read_radix(mG->x, (char *)key->dp->Gx, 16)) != CRYPT_OK) { goto error; } - if ((err = mp_read_radix(mG->y, (char *)key->dp->Gy, 16)) != CRYPT_OK) { goto error; } - if ((err = mp_set(mG->z, 1)) != CRYPT_OK) { goto error; } - - if ((err = mp_copy(key->pubkey.x, mQ->x)) != CRYPT_OK) { goto error; } - if ((err = mp_copy(key->pubkey.y, mQ->y)) != CRYPT_OK) { goto error; } - if ((err = mp_copy(key->pubkey.z, mQ->z)) != CRYPT_OK) { goto error; } - - /* compute u1*mG + u2*mQ = mG */ - if (ltc_mp.ecc_mul2add == NULL) { - if ((err = ltc_mp.ecc_ptmul(u1, mG, mG, m, 0)) != CRYPT_OK) { goto error; } - if ((err = ltc_mp.ecc_ptmul(u2, mQ, mQ, m, 0)) != CRYPT_OK) { goto error; } - - /* find the montgomery mp */ - if ((err = mp_montgomery_setup(m, &mp)) != CRYPT_OK) { goto error; } - - /* add them */ - if ((err = ltc_mp.ecc_ptadd(mQ, mG, mG, m, mp)) != CRYPT_OK) { goto error; } - - /* reduce */ - if ((err = ltc_mp.ecc_map(mG, m, mp)) != CRYPT_OK) { goto error; } - } else { - /* use Shamir's trick to compute u1*mG + u2*mQ using half of the doubles */ - if ((err = ltc_mp.ecc_mul2add(mG, u1, mQ, u2, mG, m)) != CRYPT_OK) { goto error; } - } - - /* v = X_x1 mod n */ - if ((err = mp_mod(mG->x, p, v)) != CRYPT_OK) { goto error; } - - /* does v == r */ - if (mp_cmp(v, r) == LTC_MP_EQ) { - *stat = 1; - } - - /* clear up and return */ - err = CRYPT_OK; -error: - ltc_ecc_del_point(mG); - ltc_ecc_del_point(mQ); - mp_clear_multi(r, s, v, w, u1, u2, p, e, m, NULL); - if (mp != NULL) { - mp_montgomery_free(mp); - } - return err; -} - -/** - Verify an ECC signature - @param sig The signature to verify - @param siglen The length of the signature (octets) - @param hash The hash (message digest) that was signed - @param hashlen The length of the hash (octets) - @param stat Result of signature, 1==valid, 0==invalid - @param key The corresponding public ECC key - @return CRYPT_OK if successful (even if the signature is not valid) -*/ -int ecc_verify_hash(const unsigned char *sig, unsigned long siglen, - const unsigned char *hash, unsigned long hashlen, - int *stat, ecc_key *key) -{ - return _ecc_verify_hash(sig, siglen, hash, hashlen, stat, key, 0); -} - -/** - Verify an ECC signature in RFC7518 format - @param sig The signature to verify - @param siglen The length of the signature (octets) - @param hash The hash (message digest) that was signed - @param hashlen The length of the hash (octets) - @param stat Result of signature, 1==valid, 0==invalid - @param key The corresponding public ECC key - @return CRYPT_OK if successful (even if the signature is not valid) -*/ -int ecc_verify_hash_rfc7518(const unsigned char *sig, unsigned long siglen, - const unsigned char *hash, unsigned long hashlen, - int *stat, ecc_key *key) -{ - return _ecc_verify_hash(sig, siglen, hash, hashlen, stat, key, 1); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/ecc/ltc_ecc_is_valid_idx.c b/src/libtomcrypt/src/pk/ecc/ltc_ecc_is_valid_idx.c deleted file mode 100644 index 4a970ffd1c..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ltc_ecc_is_valid_idx.c +++ /dev/null @@ -1,44 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ltc_ecc_is_valid_idx.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -/** Returns whether an ECC idx is valid or not - @param n The idx number to check - @return 1 if valid, 0 if not -*/ -int ltc_ecc_is_valid_idx(int n) -{ - int x; - - for (x = 0; ltc_ecc_sets[x].size != 0; x++); - /* -1 is a valid index --- indicating that the domain params were supplied by the user */ - if ((n >= -1) && (n < x)) { - return 1; - } - return 0; -} - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ltc_ecc_map.c b/src/libtomcrypt/src/pk/ecc/ltc_ecc_map.c deleted file mode 100644 index 2d0a5cbe76..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ltc_ecc_map.c +++ /dev/null @@ -1,74 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ltc_ecc_map.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -/** - Map a projective jacbobian point back to affine space - @param P [in/out] The point to map - @param modulus The modulus of the field the ECC curve is in - @param mp The "b" value from montgomery_setup() - @return CRYPT_OK on success -*/ -int ltc_ecc_map(ecc_point *P, void *modulus, void *mp) -{ - void *t1, *t2; - int err; - - LTC_ARGCHK(P != NULL); - LTC_ARGCHK(modulus != NULL); - LTC_ARGCHK(mp != NULL); - - if ((err = mp_init_multi(&t1, &t2, NULL)) != CRYPT_OK) { - return err; - } - - /* first map z back to normal */ - if ((err = mp_montgomery_reduce(P->z, modulus, mp)) != CRYPT_OK) { goto done; } - - /* get 1/z */ - if ((err = mp_invmod(P->z, modulus, t1)) != CRYPT_OK) { goto done; } - - /* get 1/z^2 and 1/z^3 */ - if ((err = mp_sqr(t1, t2)) != CRYPT_OK) { goto done; } - if ((err = mp_mod(t2, modulus, t2)) != CRYPT_OK) { goto done; } - if ((err = mp_mul(t1, t2, t1)) != CRYPT_OK) { goto done; } - if ((err = mp_mod(t1, modulus, t1)) != CRYPT_OK) { goto done; } - - /* multiply against x/y */ - if ((err = mp_mul(P->x, t2, P->x)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(P->x, modulus, mp)) != CRYPT_OK) { goto done; } - if ((err = mp_mul(P->y, t1, P->y)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(P->y, modulus, mp)) != CRYPT_OK) { goto done; } - if ((err = mp_set(P->z, 1)) != CRYPT_OK) { goto done; } - - err = CRYPT_OK; -done: - mp_clear_multi(t1, t2, NULL); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ltc_ecc_mul2add.c b/src/libtomcrypt/src/pk/ecc/ltc_ecc_mul2add.c deleted file mode 100644 index 6abf84acf7..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ltc_ecc_mul2add.c +++ /dev/null @@ -1,206 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ltc_ecc_mul2add.c - ECC Crypto, Shamir's Trick, Tom St Denis -*/ - -#ifdef LTC_MECC - -#ifdef LTC_ECC_SHAMIR - -/** Computes kA*A + kB*B = C using Shamir's Trick - @param A First point to multiply - @param kA What to multiple A by - @param B Second point to multiply - @param kB What to multiple B by - @param C [out] Destination point (can overlap with A or B - @param modulus Modulus for curve - @return CRYPT_OK on success -*/ -int ltc_ecc_mul2add(ecc_point *A, void *kA, - ecc_point *B, void *kB, - ecc_point *C, - void *modulus) -{ - ecc_point *precomp[16]; - unsigned bitbufA, bitbufB, lenA, lenB, len, x, y, nA, nB, nibble; - unsigned char *tA, *tB; - int err, first; - void *mp, *mu; - - /* argchks */ - LTC_ARGCHK(A != NULL); - LTC_ARGCHK(B != NULL); - LTC_ARGCHK(C != NULL); - LTC_ARGCHK(kA != NULL); - LTC_ARGCHK(kB != NULL); - LTC_ARGCHK(modulus != NULL); - - /* allocate memory */ - tA = XCALLOC(1, ECC_BUF_SIZE); - if (tA == NULL) { - return CRYPT_MEM; - } - tB = XCALLOC(1, ECC_BUF_SIZE); - if (tB == NULL) { - XFREE(tA); - return CRYPT_MEM; - } - - /* get sizes */ - lenA = mp_unsigned_bin_size(kA); - lenB = mp_unsigned_bin_size(kB); - len = MAX(lenA, lenB); - - /* sanity check */ - if ((lenA > ECC_BUF_SIZE) || (lenB > ECC_BUF_SIZE)) { - err = CRYPT_INVALID_ARG; - goto ERR_T; - } - - /* extract and justify kA */ - mp_to_unsigned_bin(kA, (len - lenA) + tA); - - /* extract and justify kB */ - mp_to_unsigned_bin(kB, (len - lenB) + tB); - - /* allocate the table */ - for (x = 0; x < 16; x++) { - precomp[x] = ltc_ecc_new_point(); - if (precomp[x] == NULL) { - for (y = 0; y < x; ++y) { - ltc_ecc_del_point(precomp[y]); - } - err = CRYPT_MEM; - goto ERR_T; - } - } - - /* init montgomery reduction */ - if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { - goto ERR_P; - } - if ((err = mp_init(&mu)) != CRYPT_OK) { - goto ERR_MP; - } - if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) { - goto ERR_MU; - } - - /* copy ones ... */ - if ((err = mp_mulmod(A->x, mu, modulus, precomp[1]->x)) != CRYPT_OK) { goto ERR_MU; } - if ((err = mp_mulmod(A->y, mu, modulus, precomp[1]->y)) != CRYPT_OK) { goto ERR_MU; } - if ((err = mp_mulmod(A->z, mu, modulus, precomp[1]->z)) != CRYPT_OK) { goto ERR_MU; } - - if ((err = mp_mulmod(B->x, mu, modulus, precomp[1<<2]->x)) != CRYPT_OK) { goto ERR_MU; } - if ((err = mp_mulmod(B->y, mu, modulus, precomp[1<<2]->y)) != CRYPT_OK) { goto ERR_MU; } - if ((err = mp_mulmod(B->z, mu, modulus, precomp[1<<2]->z)) != CRYPT_OK) { goto ERR_MU; } - - /* precomp [i,0](A + B) table */ - if ((err = ltc_mp.ecc_ptdbl(precomp[1], precomp[2], modulus, mp)) != CRYPT_OK) { goto ERR_MU; } - if ((err = ltc_mp.ecc_ptadd(precomp[1], precomp[2], precomp[3], modulus, mp)) != CRYPT_OK) { goto ERR_MU; } - - /* precomp [0,i](A + B) table */ - if ((err = ltc_mp.ecc_ptdbl(precomp[1<<2], precomp[2<<2], modulus, mp)) != CRYPT_OK) { goto ERR_MU; } - if ((err = ltc_mp.ecc_ptadd(precomp[1<<2], precomp[2<<2], precomp[3<<2], modulus, mp)) != CRYPT_OK) { goto ERR_MU; } - - /* precomp [i,j](A + B) table (i != 0, j != 0) */ - for (x = 1; x < 4; x++) { - for (y = 1; y < 4; y++) { - if ((err = ltc_mp.ecc_ptadd(precomp[x], precomp[(y<<2)], precomp[x+(y<<2)], modulus, mp)) != CRYPT_OK) { goto ERR_MU; } - } - } - - nibble = 3; - first = 1; - bitbufA = tA[0]; - bitbufB = tB[0]; - - /* for every byte of the multiplicands */ - for (x = 0;; ) { - /* grab a nibble */ - if (++nibble == 4) { - if (x == len) break; - bitbufA = tA[x]; - bitbufB = tB[x]; - nibble = 0; - ++x; - } - - /* extract two bits from both, shift/update */ - nA = (bitbufA >> 6) & 0x03; - nB = (bitbufB >> 6) & 0x03; - bitbufA = (bitbufA << 2) & 0xFF; - bitbufB = (bitbufB << 2) & 0xFF; - - /* if both zero, if first, continue */ - if ((nA == 0) && (nB == 0) && (first == 1)) { - continue; - } - - /* double twice, only if this isn't the first */ - if (first == 0) { - /* double twice */ - if ((err = ltc_mp.ecc_ptdbl(C, C, modulus, mp)) != CRYPT_OK) { goto ERR_MU; } - if ((err = ltc_mp.ecc_ptdbl(C, C, modulus, mp)) != CRYPT_OK) { goto ERR_MU; } - } - - /* if not both zero */ - if ((nA != 0) || (nB != 0)) { - if (first == 1) { - /* if first, copy from table */ - first = 0; - if ((err = mp_copy(precomp[nA + (nB<<2)]->x, C->x)) != CRYPT_OK) { goto ERR_MU; } - if ((err = mp_copy(precomp[nA + (nB<<2)]->y, C->y)) != CRYPT_OK) { goto ERR_MU; } - if ((err = mp_copy(precomp[nA + (nB<<2)]->z, C->z)) != CRYPT_OK) { goto ERR_MU; } - } else { - /* if not first, add from table */ - if ((err = ltc_mp.ecc_ptadd(C, precomp[nA + (nB<<2)], C, modulus, mp)) != CRYPT_OK) { goto ERR_MU; } - } - } - } - - /* reduce to affine */ - err = ltc_ecc_map(C, modulus, mp); - - /* clean up */ -ERR_MU: - mp_clear(mu); -ERR_MP: - mp_montgomery_free(mp); -ERR_P: - for (x = 0; x < 16; x++) { - ltc_ecc_del_point(precomp[x]); - } -ERR_T: -#ifdef LTC_CLEAN_STACK - zeromem(tA, ECC_BUF_SIZE); - zeromem(tB, ECC_BUF_SIZE); -#endif - XFREE(tA); - XFREE(tB); - - return err; -} - -#endif -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod.c b/src/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod.c deleted file mode 100644 index 7658e03268..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod.c +++ /dev/null @@ -1,220 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ltc_ecc_mulmod.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC -#ifndef LTC_ECC_TIMING_RESISTANT - -/* size of sliding window, don't change this! */ -#define WINSIZE 4 - -/** - Perform a point multiplication - @param k The scalar to multiply by - @param G The base point - @param R [out] Destination for kG - @param modulus The modulus of the field the ECC curve is in - @param map Boolean whether to map back to affine or not (1==map, 0 == leave in projective) - @return CRYPT_OK on success -*/ -int ltc_ecc_mulmod(void *k, ecc_point *G, ecc_point *R, void *modulus, int map) -{ - ecc_point *tG, *M[8]; - int i, j, err; - void *mu, *mp; - ltc_mp_digit buf; - int first, bitbuf, bitcpy, bitcnt, mode, digidx; - - LTC_ARGCHK(k != NULL); - LTC_ARGCHK(G != NULL); - LTC_ARGCHK(R != NULL); - LTC_ARGCHK(modulus != NULL); - - /* init montgomery reduction */ - if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { - return err; - } - if ((err = mp_init(&mu)) != CRYPT_OK) { - mp_montgomery_free(mp); - return err; - } - if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) { - mp_montgomery_free(mp); - mp_clear(mu); - return err; - } - - /* alloc ram for window temps */ - for (i = 0; i < 8; i++) { - M[i] = ltc_ecc_new_point(); - if (M[i] == NULL) { - for (j = 0; j < i; j++) { - ltc_ecc_del_point(M[j]); - } - mp_montgomery_free(mp); - mp_clear(mu); - return CRYPT_MEM; - } - } - - /* make a copy of G incase R==G */ - tG = ltc_ecc_new_point(); - if (tG == NULL) { err = CRYPT_MEM; goto done; } - - /* tG = G and convert to montgomery */ - if (mp_cmp_d(mu, 1) == LTC_MP_EQ) { - if ((err = mp_copy(G->x, tG->x)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(G->y, tG->y)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(G->z, tG->z)) != CRYPT_OK) { goto done; } - } else { - if ((err = mp_mulmod(G->x, mu, modulus, tG->x)) != CRYPT_OK) { goto done; } - if ((err = mp_mulmod(G->y, mu, modulus, tG->y)) != CRYPT_OK) { goto done; } - if ((err = mp_mulmod(G->z, mu, modulus, tG->z)) != CRYPT_OK) { goto done; } - } - mp_clear(mu); - mu = NULL; - - /* calc the M tab, which holds kG for k==8..15 */ - /* M[0] == 8G */ - if ((err = ltc_mp.ecc_ptdbl(tG, M[0], modulus, mp)) != CRYPT_OK) { goto done; } - if ((err = ltc_mp.ecc_ptdbl(M[0], M[0], modulus, mp)) != CRYPT_OK) { goto done; } - if ((err = ltc_mp.ecc_ptdbl(M[0], M[0], modulus, mp)) != CRYPT_OK) { goto done; } - - /* now find (8+k)G for k=1..7 */ - for (j = 9; j < 16; j++) { - if ((err = ltc_mp.ecc_ptadd(M[j-9], tG, M[j-8], modulus, mp)) != CRYPT_OK) { goto done; } - } - - /* setup sliding window */ - mode = 0; - bitcnt = 1; - buf = 0; - digidx = mp_get_digit_count(k) - 1; - bitcpy = bitbuf = 0; - first = 1; - - /* perform ops */ - for (;;) { - /* grab next digit as required */ - if (--bitcnt == 0) { - if (digidx == -1) { - break; - } - buf = mp_get_digit(k, digidx); - bitcnt = (int) ltc_mp.bits_per_digit; - --digidx; - } - - /* grab the next msb from the ltiplicand */ - i = (buf >> (ltc_mp.bits_per_digit - 1)) & 1; - buf <<= 1; - - /* skip leading zero bits */ - if (mode == 0 && i == 0) { - continue; - } - - /* if the bit is zero and mode == 1 then we double */ - if (mode == 1 && i == 0) { - if ((err = ltc_mp.ecc_ptdbl(R, R, modulus, mp)) != CRYPT_OK) { goto done; } - continue; - } - - /* else we add it to the window */ - bitbuf |= (i << (WINSIZE - ++bitcpy)); - mode = 2; - - if (bitcpy == WINSIZE) { - /* if this is the first window we do a simple copy */ - if (first == 1) { - /* R = kG [k = first window] */ - if ((err = mp_copy(M[bitbuf-8]->x, R->x)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(M[bitbuf-8]->y, R->y)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(M[bitbuf-8]->z, R->z)) != CRYPT_OK) { goto done; } - first = 0; - } else { - /* normal window */ - /* ok window is filled so double as required and add */ - /* double first */ - for (j = 0; j < WINSIZE; j++) { - if ((err = ltc_mp.ecc_ptdbl(R, R, modulus, mp)) != CRYPT_OK) { goto done; } - } - - /* then add, bitbuf will be 8..15 [8..2^WINSIZE] guaranteed */ - if ((err = ltc_mp.ecc_ptadd(R, M[bitbuf-8], R, modulus, mp)) != CRYPT_OK) { goto done; } - } - /* empty window and reset */ - bitcpy = bitbuf = 0; - mode = 1; - } - } - - /* if bits remain then double/add */ - if (mode == 2 && bitcpy > 0) { - /* double then add */ - for (j = 0; j < bitcpy; j++) { - /* only double if we have had at least one add first */ - if (first == 0) { - if ((err = ltc_mp.ecc_ptdbl(R, R, modulus, mp)) != CRYPT_OK) { goto done; } - } - - bitbuf <<= 1; - if ((bitbuf & (1 << WINSIZE)) != 0) { - if (first == 1){ - /* first add, so copy */ - if ((err = mp_copy(tG->x, R->x)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(tG->y, R->y)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(tG->z, R->z)) != CRYPT_OK) { goto done; } - first = 0; - } else { - /* then add */ - if ((err = ltc_mp.ecc_ptadd(R, tG, R, modulus, mp)) != CRYPT_OK) { goto done; } - } - } - } - } - - /* map R back from projective space */ - if (map) { - err = ltc_ecc_map(R, modulus, mp); - } else { - err = CRYPT_OK; - } -done: - if (mu != NULL) { - mp_clear(mu); - } - mp_montgomery_free(mp); - ltc_ecc_del_point(tG); - for (i = 0; i < 8; i++) { - ltc_ecc_del_point(M[i]); - } - return err; -} - -#endif - -#undef WINSIZE - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod_timing.c b/src/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod_timing.c deleted file mode 100644 index ea93077c4d..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod_timing.c +++ /dev/null @@ -1,163 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ltc_ecc_mulmod_timing.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -#ifdef LTC_ECC_TIMING_RESISTANT - -/** - Perform a point multiplication (timing resistant) - @param k The scalar to multiply by - @param G The base point - @param R [out] Destination for kG - @param modulus The modulus of the field the ECC curve is in - @param map Boolean whether to map back to affine or not (1==map, 0 == leave in projective) - @return CRYPT_OK on success -*/ -int ltc_ecc_mulmod(void *k, ecc_point *G, ecc_point *R, void *modulus, int map) -{ - ecc_point *tG, *M[3]; - int i, j, err; - void *mu, *mp; - ltc_mp_digit buf; - int bitcnt, mode, digidx; - - LTC_ARGCHK(k != NULL); - LTC_ARGCHK(G != NULL); - LTC_ARGCHK(R != NULL); - LTC_ARGCHK(modulus != NULL); - - /* init montgomery reduction */ - if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { - return err; - } - if ((err = mp_init(&mu)) != CRYPT_OK) { - mp_montgomery_free(mp); - return err; - } - if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) { - mp_clear(mu); - mp_montgomery_free(mp); - return err; - } - - /* alloc ram for window temps */ - for (i = 0; i < 3; i++) { - M[i] = ltc_ecc_new_point(); - if (M[i] == NULL) { - for (j = 0; j < i; j++) { - ltc_ecc_del_point(M[j]); - } - mp_clear(mu); - mp_montgomery_free(mp); - return CRYPT_MEM; - } - } - - /* make a copy of G incase R==G */ - tG = ltc_ecc_new_point(); - if (tG == NULL) { err = CRYPT_MEM; goto done; } - - /* tG = G and convert to montgomery */ - if ((err = mp_mulmod(G->x, mu, modulus, tG->x)) != CRYPT_OK) { goto done; } - if ((err = mp_mulmod(G->y, mu, modulus, tG->y)) != CRYPT_OK) { goto done; } - if ((err = mp_mulmod(G->z, mu, modulus, tG->z)) != CRYPT_OK) { goto done; } - mp_clear(mu); - mu = NULL; - - /* calc the M tab */ - /* M[0] == G */ - if ((err = mp_copy(tG->x, M[0]->x)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(tG->y, M[0]->y)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(tG->z, M[0]->z)) != CRYPT_OK) { goto done; } - /* M[1] == 2G */ - if ((err = ltc_mp.ecc_ptdbl(tG, M[1], modulus, mp)) != CRYPT_OK) { goto done; } - - /* setup sliding window */ - mode = 0; - bitcnt = 1; - buf = 0; - digidx = mp_get_digit_count(k) - 1; - - /* perform ops */ - for (;;) { - /* grab next digit as required */ - if (--bitcnt == 0) { - if (digidx == -1) { - break; - } - buf = mp_get_digit(k, digidx); - bitcnt = (int) MP_DIGIT_BIT; - --digidx; - } - - /* grab the next msb from the ltiplicand */ - i = (buf >> (MP_DIGIT_BIT - 1)) & 1; - buf <<= 1; - - if (mode == 0 && i == 0) { - /* dummy operations */ - if ((err = ltc_mp.ecc_ptadd(M[0], M[1], M[2], modulus, mp)) != CRYPT_OK) { goto done; } - if ((err = ltc_mp.ecc_ptdbl(M[1], M[2], modulus, mp)) != CRYPT_OK) { goto done; } - continue; - } - - if (mode == 0 && i == 1) { - mode = 1; - /* dummy operations */ - if ((err = ltc_mp.ecc_ptadd(M[0], M[1], M[2], modulus, mp)) != CRYPT_OK) { goto done; } - if ((err = ltc_mp.ecc_ptdbl(M[1], M[2], modulus, mp)) != CRYPT_OK) { goto done; } - continue; - } - - if ((err = ltc_mp.ecc_ptadd(M[0], M[1], M[i^1], modulus, mp)) != CRYPT_OK) { goto done; } - if ((err = ltc_mp.ecc_ptdbl(M[i], M[i], modulus, mp)) != CRYPT_OK) { goto done; } - } - - /* copy result out */ - if ((err = mp_copy(M[0]->x, R->x)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(M[0]->y, R->y)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(M[0]->z, R->z)) != CRYPT_OK) { goto done; } - - /* map R back from projective space */ - if (map) { - err = ltc_ecc_map(R, modulus, mp); - } else { - err = CRYPT_OK; - } -done: - if (mu != NULL) { - mp_clear(mu); - } - mp_montgomery_free(mp); - ltc_ecc_del_point(tG); - for (i = 0; i < 3; i++) { - ltc_ecc_del_point(M[i]); - } - return err; -} - -#endif -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ltc_ecc_points.c b/src/libtomcrypt/src/pk/ecc/ltc_ecc_points.c deleted file mode 100644 index 716819168d..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ltc_ecc_points.c +++ /dev/null @@ -1,58 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ltc_ecc_points.c - ECC Crypto, Tom St Denis -*/ - -#ifdef LTC_MECC - -/** - Allocate a new ECC point - @return A newly allocated point or NULL on error -*/ -ecc_point *ltc_ecc_new_point(void) -{ - ecc_point *p; - p = XCALLOC(1, sizeof(*p)); - if (p == NULL) { - return NULL; - } - if (mp_init_multi(&p->x, &p->y, &p->z, NULL) != CRYPT_OK) { - XFREE(p); - return NULL; - } - return p; -} - -/** Free an ECC point from memory - @param p The point to free -*/ -void ltc_ecc_del_point(ecc_point *p) -{ - /* prevents free'ing null arguments */ - if (p != NULL) { - mp_clear_multi(p->x, p->y, p->z, NULL); /* note: p->z may be NULL but that's ok with this function anyways */ - XFREE(p); - } -} - -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_add_point.c b/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_add_point.c deleted file mode 100644 index 634a38d735..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_add_point.c +++ /dev/null @@ -1,194 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ltc_ecc_projective_add_point.c - ECC Crypto, Tom St Denis -*/ - -#if defined(LTC_MECC) && (!defined(LTC_MECC_ACCEL) || defined(LTM_DESC)) - -/** - Add two ECC points - @param P The point to add - @param Q The point to add - @param R [out] The destination of the double - @param modulus The modulus of the field the ECC curve is in - @param mp The "b" value from montgomery_setup() - @return CRYPT_OK on success -*/ -int ltc_ecc_projective_add_point(ecc_point *P, ecc_point *Q, ecc_point *R, void *modulus, void *mp) -{ - void *t1, *t2, *x, *y, *z; - int err; - - LTC_ARGCHK(P != NULL); - LTC_ARGCHK(Q != NULL); - LTC_ARGCHK(R != NULL); - LTC_ARGCHK(modulus != NULL); - LTC_ARGCHK(mp != NULL); - - if ((err = mp_init_multi(&t1, &t2, &x, &y, &z, NULL)) != CRYPT_OK) { - return err; - } - - /* should we dbl instead? */ - if ((err = mp_sub(modulus, Q->y, t1)) != CRYPT_OK) { goto done; } - - if ( (mp_cmp(P->x, Q->x) == LTC_MP_EQ) && - (Q->z != NULL && mp_cmp(P->z, Q->z) == LTC_MP_EQ) && - (mp_cmp(P->y, Q->y) == LTC_MP_EQ || mp_cmp(P->y, t1) == LTC_MP_EQ)) { - mp_clear_multi(t1, t2, x, y, z, NULL); - return ltc_ecc_projective_dbl_point(P, R, modulus, mp); - } - - if ((err = mp_copy(P->x, x)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(P->y, y)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(P->z, z)) != CRYPT_OK) { goto done; } - - /* if Z is one then these are no-operations */ - if (Q->z != NULL) { - /* T1 = Z' * Z' */ - if ((err = mp_sqr(Q->z, t1)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } - /* X = X * T1 */ - if ((err = mp_mul(t1, x, x)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(x, modulus, mp)) != CRYPT_OK) { goto done; } - /* T1 = Z' * T1 */ - if ((err = mp_mul(Q->z, t1, t1)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } - /* Y = Y * T1 */ - if ((err = mp_mul(t1, y, y)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(y, modulus, mp)) != CRYPT_OK) { goto done; } - } - - /* T1 = Z*Z */ - if ((err = mp_sqr(z, t1)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } - /* T2 = X' * T1 */ - if ((err = mp_mul(Q->x, t1, t2)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(t2, modulus, mp)) != CRYPT_OK) { goto done; } - /* T1 = Z * T1 */ - if ((err = mp_mul(z, t1, t1)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } - /* T1 = Y' * T1 */ - if ((err = mp_mul(Q->y, t1, t1)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } - - /* Y = Y - T1 */ - if ((err = mp_sub(y, t1, y)) != CRYPT_OK) { goto done; } - if (mp_cmp_d(y, 0) == LTC_MP_LT) { - if ((err = mp_add(y, modulus, y)) != CRYPT_OK) { goto done; } - } - /* T1 = 2T1 */ - if ((err = mp_add(t1, t1, t1)) != CRYPT_OK) { goto done; } - if (mp_cmp(t1, modulus) != LTC_MP_LT) { - if ((err = mp_sub(t1, modulus, t1)) != CRYPT_OK) { goto done; } - } - /* T1 = Y + T1 */ - if ((err = mp_add(t1, y, t1)) != CRYPT_OK) { goto done; } - if (mp_cmp(t1, modulus) != LTC_MP_LT) { - if ((err = mp_sub(t1, modulus, t1)) != CRYPT_OK) { goto done; } - } - /* X = X - T2 */ - if ((err = mp_sub(x, t2, x)) != CRYPT_OK) { goto done; } - if (mp_cmp_d(x, 0) == LTC_MP_LT) { - if ((err = mp_add(x, modulus, x)) != CRYPT_OK) { goto done; } - } - /* T2 = 2T2 */ - if ((err = mp_add(t2, t2, t2)) != CRYPT_OK) { goto done; } - if (mp_cmp(t2, modulus) != LTC_MP_LT) { - if ((err = mp_sub(t2, modulus, t2)) != CRYPT_OK) { goto done; } - } - /* T2 = X + T2 */ - if ((err = mp_add(t2, x, t2)) != CRYPT_OK) { goto done; } - if (mp_cmp(t2, modulus) != LTC_MP_LT) { - if ((err = mp_sub(t2, modulus, t2)) != CRYPT_OK) { goto done; } - } - - /* if Z' != 1 */ - if (Q->z != NULL) { - /* Z = Z * Z' */ - if ((err = mp_mul(z, Q->z, z)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(z, modulus, mp)) != CRYPT_OK) { goto done; } - } - - /* Z = Z * X */ - if ((err = mp_mul(z, x, z)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(z, modulus, mp)) != CRYPT_OK) { goto done; } - - /* T1 = T1 * X */ - if ((err = mp_mul(t1, x, t1)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } - /* X = X * X */ - if ((err = mp_sqr(x, x)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(x, modulus, mp)) != CRYPT_OK) { goto done; } - /* T2 = T2 * x */ - if ((err = mp_mul(t2, x, t2)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(t2, modulus, mp)) != CRYPT_OK) { goto done; } - /* T1 = T1 * X */ - if ((err = mp_mul(t1, x, t1)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } - - /* X = Y*Y */ - if ((err = mp_sqr(y, x)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(x, modulus, mp)) != CRYPT_OK) { goto done; } - /* X = X - T2 */ - if ((err = mp_sub(x, t2, x)) != CRYPT_OK) { goto done; } - if (mp_cmp_d(x, 0) == LTC_MP_LT) { - if ((err = mp_add(x, modulus, x)) != CRYPT_OK) { goto done; } - } - - /* T2 = T2 - X */ - if ((err = mp_sub(t2, x, t2)) != CRYPT_OK) { goto done; } - if (mp_cmp_d(t2, 0) == LTC_MP_LT) { - if ((err = mp_add(t2, modulus, t2)) != CRYPT_OK) { goto done; } - } - /* T2 = T2 - X */ - if ((err = mp_sub(t2, x, t2)) != CRYPT_OK) { goto done; } - if (mp_cmp_d(t2, 0) == LTC_MP_LT) { - if ((err = mp_add(t2, modulus, t2)) != CRYPT_OK) { goto done; } - } - /* T2 = T2 * Y */ - if ((err = mp_mul(t2, y, t2)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(t2, modulus, mp)) != CRYPT_OK) { goto done; } - /* Y = T2 - T1 */ - if ((err = mp_sub(t2, t1, y)) != CRYPT_OK) { goto done; } - if (mp_cmp_d(y, 0) == LTC_MP_LT) { - if ((err = mp_add(y, modulus, y)) != CRYPT_OK) { goto done; } - } - /* Y = Y/2 */ - if (mp_isodd(y)) { - if ((err = mp_add(y, modulus, y)) != CRYPT_OK) { goto done; } - } - if ((err = mp_div_2(y, y)) != CRYPT_OK) { goto done; } - - if ((err = mp_copy(x, R->x)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(y, R->y)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(z, R->z)) != CRYPT_OK) { goto done; } - - err = CRYPT_OK; -done: - mp_clear_multi(t1, t2, x, y, z, NULL); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_dbl_point.c b/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_dbl_point.c deleted file mode 100644 index a347663373..0000000000 --- a/src/libtomcrypt/src/pk/ecc/ltc_ecc_projective_dbl_point.c +++ /dev/null @@ -1,145 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b - * - * All curves taken from NIST recommendation paper of July 1999 - * Available at http://csrc.nist.gov/cryptval/dss.htm - */ -#include "tomcrypt.h" - -/** - @file ltc_ecc_projective_dbl_point.c - ECC Crypto, Tom St Denis -*/ - -#if defined(LTC_MECC) && (!defined(LTC_MECC_ACCEL) || defined(LTM_DESC)) - -/** - Double an ECC point - @param P The point to double - @param R [out] The destination of the double - @param modulus The modulus of the field the ECC curve is in - @param mp The "b" value from montgomery_setup() - @return CRYPT_OK on success -*/ -int ltc_ecc_projective_dbl_point(ecc_point *P, ecc_point *R, void *modulus, void *mp) -{ - void *t1, *t2; - int err; - - LTC_ARGCHK(P != NULL); - LTC_ARGCHK(R != NULL); - LTC_ARGCHK(modulus != NULL); - LTC_ARGCHK(mp != NULL); - - if ((err = mp_init_multi(&t1, &t2, NULL)) != CRYPT_OK) { - return err; - } - - if (P != R) { - if ((err = mp_copy(P->x, R->x)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(P->y, R->y)) != CRYPT_OK) { goto done; } - if ((err = mp_copy(P->z, R->z)) != CRYPT_OK) { goto done; } - } - - /* t1 = Z * Z */ - if ((err = mp_sqr(R->z, t1)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } - /* Z = Y * Z */ - if ((err = mp_mul(R->z, R->y, R->z)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(R->z, modulus, mp)) != CRYPT_OK) { goto done; } - /* Z = 2Z */ - if ((err = mp_add(R->z, R->z, R->z)) != CRYPT_OK) { goto done; } - if (mp_cmp(R->z, modulus) != LTC_MP_LT) { - if ((err = mp_sub(R->z, modulus, R->z)) != CRYPT_OK) { goto done; } - } - - /* T2 = X - T1 */ - if ((err = mp_sub(R->x, t1, t2)) != CRYPT_OK) { goto done; } - if (mp_cmp_d(t2, 0) == LTC_MP_LT) { - if ((err = mp_add(t2, modulus, t2)) != CRYPT_OK) { goto done; } - } - /* T1 = X + T1 */ - if ((err = mp_add(t1, R->x, t1)) != CRYPT_OK) { goto done; } - if (mp_cmp(t1, modulus) != LTC_MP_LT) { - if ((err = mp_sub(t1, modulus, t1)) != CRYPT_OK) { goto done; } - } - /* T2 = T1 * T2 */ - if ((err = mp_mul(t1, t2, t2)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(t2, modulus, mp)) != CRYPT_OK) { goto done; } - /* T1 = 2T2 */ - if ((err = mp_add(t2, t2, t1)) != CRYPT_OK) { goto done; } - if (mp_cmp(t1, modulus) != LTC_MP_LT) { - if ((err = mp_sub(t1, modulus, t1)) != CRYPT_OK) { goto done; } - } - /* T1 = T1 + T2 */ - if ((err = mp_add(t1, t2, t1)) != CRYPT_OK) { goto done; } - if (mp_cmp(t1, modulus) != LTC_MP_LT) { - if ((err = mp_sub(t1, modulus, t1)) != CRYPT_OK) { goto done; } - } - - /* Y = 2Y */ - if ((err = mp_add(R->y, R->y, R->y)) != CRYPT_OK) { goto done; } - if (mp_cmp(R->y, modulus) != LTC_MP_LT) { - if ((err = mp_sub(R->y, modulus, R->y)) != CRYPT_OK) { goto done; } - } - /* Y = Y * Y */ - if ((err = mp_sqr(R->y, R->y)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(R->y, modulus, mp)) != CRYPT_OK) { goto done; } - /* T2 = Y * Y */ - if ((err = mp_sqr(R->y, t2)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(t2, modulus, mp)) != CRYPT_OK) { goto done; } - /* T2 = T2/2 */ - if (mp_isodd(t2)) { - if ((err = mp_add(t2, modulus, t2)) != CRYPT_OK) { goto done; } - } - if ((err = mp_div_2(t2, t2)) != CRYPT_OK) { goto done; } - /* Y = Y * X */ - if ((err = mp_mul(R->y, R->x, R->y)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(R->y, modulus, mp)) != CRYPT_OK) { goto done; } - - /* X = T1 * T1 */ - if ((err = mp_sqr(t1, R->x)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(R->x, modulus, mp)) != CRYPT_OK) { goto done; } - /* X = X - Y */ - if ((err = mp_sub(R->x, R->y, R->x)) != CRYPT_OK) { goto done; } - if (mp_cmp_d(R->x, 0) == LTC_MP_LT) { - if ((err = mp_add(R->x, modulus, R->x)) != CRYPT_OK) { goto done; } - } - /* X = X - Y */ - if ((err = mp_sub(R->x, R->y, R->x)) != CRYPT_OK) { goto done; } - if (mp_cmp_d(R->x, 0) == LTC_MP_LT) { - if ((err = mp_add(R->x, modulus, R->x)) != CRYPT_OK) { goto done; } - } - - /* Y = Y - X */ - if ((err = mp_sub(R->y, R->x, R->y)) != CRYPT_OK) { goto done; } - if (mp_cmp_d(R->y, 0) == LTC_MP_LT) { - if ((err = mp_add(R->y, modulus, R->y)) != CRYPT_OK) { goto done; } - } - /* Y = Y * T1 */ - if ((err = mp_mul(R->y, t1, R->y)) != CRYPT_OK) { goto done; } - if ((err = mp_montgomery_reduce(R->y, modulus, mp)) != CRYPT_OK) { goto done; } - /* Y = Y - T2 */ - if ((err = mp_sub(R->y, t2, R->y)) != CRYPT_OK) { goto done; } - if (mp_cmp_d(R->y, 0) == LTC_MP_LT) { - if ((err = mp_add(R->y, modulus, R->y)) != CRYPT_OK) { goto done; } - } - - err = CRYPT_OK; -done: - mp_clear_multi(t1, t2, NULL); - return err; -} -#endif -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ - diff --git a/src/libtomcrypt/src/pk/katja/katja_decrypt_key.c b/src/libtomcrypt/src/pk/katja/katja_decrypt_key.c deleted file mode 100644 index 8314121d45..0000000000 --- a/src/libtomcrypt/src/pk/katja/katja_decrypt_key.c +++ /dev/null @@ -1,103 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file katja_decrypt_key.c - Katja PKCS #1 OAEP Decryption, Tom St Denis -*/ - -#ifdef LTC_MKAT - -/** - (PKCS #1 v2.0) decrypt then OAEP depad - @param in The ciphertext - @param inlen The length of the ciphertext (octets) - @param out [out] The plaintext - @param outlen [in/out] The max size and resulting size of the plaintext (octets) - @param lparam The system "lparam" value - @param lparamlen The length of the lparam value (octets) - @param hash_idx The index of the hash desired - @param stat [out] Result of the decryption, 1==valid, 0==invalid - @param key The corresponding private Katja key - @return CRYPT_OK if succcessul (even if invalid) -*/ -int katja_decrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - const unsigned char *lparam, unsigned long lparamlen, - int hash_idx, int *stat, - katja_key *key) -{ - unsigned long modulus_bitlen, modulus_bytelen, x; - int err; - unsigned char *tmp; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(stat != NULL); - - /* default to invalid */ - *stat = 0; - - /* valid hash ? */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - - /* get modulus len in bits */ - modulus_bitlen = mp_count_bits( (key->N)); - - /* payload is upto pq, so we know q is 1/3rd the size of N and therefore pq is 2/3th the size */ - modulus_bitlen = ((modulus_bitlen << 1) / 3); - - /* round down to next byte */ - modulus_bitlen -= (modulus_bitlen & 7) + 8; - - /* outlen must be at least the size of the modulus */ - modulus_bytelen = mp_unsigned_bin_size( (key->N)); - if (modulus_bytelen != inlen) { - return CRYPT_INVALID_PACKET; - } - - /* allocate ram */ - tmp = XMALLOC(inlen); - if (tmp == NULL) { - return CRYPT_MEM; - } - - /* rsa decode the packet */ - x = inlen; - if ((err = katja_exptmod(in, inlen, tmp, &x, PK_PRIVATE, key)) != CRYPT_OK) { - XFREE(tmp); - return err; - } - - /* shift right by modulus_bytelen - modulus_bitlen/8 bytes */ - for (x = 0; x < (modulus_bitlen >> 3); x++) { - tmp[x] = tmp[x+(modulus_bytelen-(modulus_bitlen>>3))]; - } - - /* now OAEP decode the packet */ - err = pkcs_1_oaep_decode(tmp, x, lparam, lparamlen, modulus_bitlen, hash_idx, - out, outlen, stat); - - XFREE(tmp); - return err; -} - -#endif /* LTC_MRSA */ - - - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/katja/katja_encrypt_key.c b/src/libtomcrypt/src/pk/katja/katja_encrypt_key.c deleted file mode 100644 index 5518e1611e..0000000000 --- a/src/libtomcrypt/src/pk/katja/katja_encrypt_key.c +++ /dev/null @@ -1,85 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file katja_encrypt_key.c - Katja PKCS-style OAEP encryption, Tom St Denis -*/ - -#ifdef LTC_MKAT - -/** - (PKCS #1 v2.0) OAEP pad then encrypt - @param in The plaintext - @param inlen The length of the plaintext (octets) - @param out [out] The ciphertext - @param outlen [in/out] The max size and resulting size of the ciphertext - @param lparam The system "lparam" for the encryption - @param lparamlen The length of lparam (octets) - @param prng An active PRNG - @param prng_idx The index of the desired prng - @param hash_idx The index of the desired hash - @param key The Katja key to encrypt to - @return CRYPT_OK if successful -*/ -int katja_encrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - const unsigned char *lparam, unsigned long lparamlen, - prng_state *prng, int prng_idx, int hash_idx, katja_key *key) -{ - unsigned long modulus_bitlen, modulus_bytelen, x; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - /* valid prng and hash ? */ - if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) { - return err; - } - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - - /* get modulus len in bits */ - modulus_bitlen = mp_count_bits((key->N)); - - /* payload is upto pq, so we know q is 1/3rd the size of N and therefore pq is 2/3th the size */ - modulus_bitlen = ((modulus_bitlen << 1) / 3); - - /* round down to next byte */ - modulus_bitlen -= (modulus_bitlen & 7) + 8; - - /* outlen must be at least the size of the modulus */ - modulus_bytelen = mp_unsigned_bin_size((key->N)); - if (modulus_bytelen > *outlen) { - *outlen = modulus_bytelen; - return CRYPT_BUFFER_OVERFLOW; - } - - /* OAEP pad the key */ - x = *outlen; - if ((err = pkcs_1_oaep_encode(in, inlen, lparam, - lparamlen, modulus_bitlen, prng, prng_idx, hash_idx, - out, &x)) != CRYPT_OK) { - return err; - } - - /* Katja exptmod the OAEP pad */ - return katja_exptmod(out, x, out, outlen, PK_PUBLIC, key); -} - -#endif /* LTC_MRSA */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/katja/katja_export.c b/src/libtomcrypt/src/pk/katja/katja_export.c deleted file mode 100644 index 40509e65eb..0000000000 --- a/src/libtomcrypt/src/pk/katja/katja_export.c +++ /dev/null @@ -1,73 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file katja_export.c - Export Katja PKCS-style keys, Tom St Denis -*/ - -#ifdef LTC_MKAT - -/** - This will export either an KatjaPublicKey or KatjaPrivateKey - @param out [out] Destination of the packet - @param outlen [in/out] The max size and resulting size of the packet - @param type The type of exported key (PK_PRIVATE or PK_PUBLIC) - @param key The Katja key to export - @return CRYPT_OK if successful -*/ -int katja_export(unsigned char *out, unsigned long *outlen, int type, katja_key *key) -{ - int err; - unsigned long zero=0; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - /* type valid? */ - if (!(key->type == PK_PRIVATE) && (type == PK_PRIVATE)) { - return CRYPT_PK_INVALID_TYPE; - } - - if (type == PK_PRIVATE) { - /* private key */ - /* output is - Version, n, d, p, q, d mod (p-1), d mod (q - 1), 1/q mod p, pq - */ - if ((err = der_encode_sequence_multi(out, outlen, - LTC_ASN1_SHORT_INTEGER, 1UL, &zero, - LTC_ASN1_INTEGER, 1UL, key->N, - LTC_ASN1_INTEGER, 1UL, key->d, - LTC_ASN1_INTEGER, 1UL, key->p, - LTC_ASN1_INTEGER, 1UL, key->q, - LTC_ASN1_INTEGER, 1UL, key->dP, - LTC_ASN1_INTEGER, 1UL, key->dQ, - LTC_ASN1_INTEGER, 1UL, key->qP, - LTC_ASN1_INTEGER, 1UL, key->pq, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { - return err; - } - - /* clear zero and return */ - return CRYPT_OK; - } else { - /* public key */ - return der_encode_sequence_multi(out, outlen, - LTC_ASN1_INTEGER, 1UL, key->N, - LTC_ASN1_EOL, 0UL, NULL); - } -} - -#endif /* LTC_MRSA */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/katja/katja_exptmod.c b/src/libtomcrypt/src/pk/katja/katja_exptmod.c deleted file mode 100644 index 83610210c1..0000000000 --- a/src/libtomcrypt/src/pk/katja/katja_exptmod.c +++ /dev/null @@ -1,113 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file katja_exptmod.c - Katja PKCS-style exptmod, Tom St Denis -*/ - -#ifdef LTC_MKAT - -/** - Compute an RSA modular exponentiation - @param in The input data to send into RSA - @param inlen The length of the input (octets) - @param out [out] The destination - @param outlen [in/out] The max size and resulting size of the output - @param which Which exponent to use, e.g. PK_PRIVATE or PK_PUBLIC - @param key The RSA key to use - @return CRYPT_OK if successful -*/ -int katja_exptmod(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, int which, - katja_key *key) -{ - void *tmp, *tmpa, *tmpb; - unsigned long x; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - /* is the key of the right type for the operation? */ - if (which == PK_PRIVATE && (key->type != PK_PRIVATE)) { - return CRYPT_PK_NOT_PRIVATE; - } - - /* must be a private or public operation */ - if (which != PK_PRIVATE && which != PK_PUBLIC) { - return CRYPT_PK_INVALID_TYPE; - } - - /* init and copy into tmp */ - if ((err = mp_init_multi(&tmp, &tmpa, &tmpb, NULL)) != CRYPT_OK) { return err; } - if ((err = mp_read_unsigned_bin(tmp, (unsigned char *)in, (int)inlen)) != CRYPT_OK) { goto error; } - - /* sanity check on the input */ - if (mp_cmp(key->N, tmp) == LTC_MP_LT) { - err = CRYPT_PK_INVALID_SIZE; - goto done; - } - - /* are we using the private exponent and is the key optimized? */ - if (which == PK_PRIVATE) { - /* tmpa = tmp^dP mod p */ - if ((err = mp_exptmod(tmp, key->dP, key->p, tmpa)) != CRYPT_OK) { goto error; } - - /* tmpb = tmp^dQ mod q */ - if ((err = mp_exptmod(tmp, key->dQ, key->q, tmpb)) != CRYPT_OK) { goto error; } - - /* tmp = (tmpa - tmpb) * qInv (mod p) */ - if ((err = mp_sub(tmpa, tmpb, tmp)) != CRYPT_OK) { goto error; } - if ((err = mp_mulmod(tmp, key->qP, key->p, tmp)) != CRYPT_OK) { goto error; } - - /* tmp = tmpb + q * tmp */ - if ((err = mp_mul(tmp, key->q, tmp)) != CRYPT_OK) { goto error; } - if ((err = mp_add(tmp, tmpb, tmp)) != CRYPT_OK) { goto error; } - } else { - /* exptmod it */ - if ((err = mp_exptmod(tmp, key->N, key->N, tmp)) != CRYPT_OK) { goto error; } - } - - /* read it back */ - x = (unsigned long)mp_unsigned_bin_size(key->N); - if (x > *outlen) { - *outlen = x; - err = CRYPT_BUFFER_OVERFLOW; - goto done; - } - - /* this should never happen ... */ - if (mp_unsigned_bin_size(tmp) > mp_unsigned_bin_size(key->N)) { - err = CRYPT_ERROR; - goto done; - } - *outlen = x; - - /* convert it */ - zeromem(out, x); - if ((err = mp_to_unsigned_bin(tmp, out+(x-mp_unsigned_bin_size(tmp)))) != CRYPT_OK) { goto error; } - - /* clean up and return */ - err = CRYPT_OK; - goto done; -error: -done: - mp_clear_multi(tmp, tmpa, tmpb, NULL); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/katja/katja_free.c b/src/libtomcrypt/src/pk/katja/katja_free.c deleted file mode 100644 index 7bf28329ec..0000000000 --- a/src/libtomcrypt/src/pk/katja/katja_free.c +++ /dev/null @@ -1,33 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file katja_free.c - Free an Katja key, Tom St Denis -*/ - -#ifdef LTC_MKAT - -/** - Free an Katja key from memory - @param key The RSA key to free -*/ -void katja_free(katja_key *key) -{ - LTC_ARGCHK(key != NULL); - mp_clear_multi( key->d, key->N, key->dQ, key->dP, - key->qP, key->p, key->q, key->pq, NULL); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/katja/katja_import.c b/src/libtomcrypt/src/pk/katja/katja_import.c deleted file mode 100644 index 6b7735ef2e..0000000000 --- a/src/libtomcrypt/src/pk/katja/katja_import.c +++ /dev/null @@ -1,79 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file katja_import.c - Import a PKCS-style Katja key, Tom St Denis -*/ - -#ifdef LTC_MKAT - -/** - Import an KatjaPublicKey or KatjaPrivateKey [two-prime only, only support >= 1024-bit keys, defined in PKCS #1 v2.1] - @param in The packet to import from - @param inlen It's length (octets) - @param key [out] Destination for newly imported key - @return CRYPT_OK if successful, upon error allocated memory is freed -*/ -int katja_import(const unsigned char *in, unsigned long inlen, katja_key *key) -{ - int err; - void *zero; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - /* init key */ - if ((err = mp_init_multi(&zero, &key->d, &key->N, &key->dQ, - &key->dP, &key->qP, &key->p, &key->q, &key->pq, NULL)) != CRYPT_OK) { - return err; - } - - if ((err = der_decode_sequence_multi(in, inlen, - LTC_ASN1_INTEGER, 1UL, key->N, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { - goto LBL_ERR; - } - - if (mp_cmp_d(key->N, 0) == LTC_MP_EQ) { - /* it's a private key */ - if ((err = der_decode_sequence_multi(in, inlen, - LTC_ASN1_INTEGER, 1UL, zero, - LTC_ASN1_INTEGER, 1UL, key->N, - LTC_ASN1_INTEGER, 1UL, key->d, - LTC_ASN1_INTEGER, 1UL, key->p, - LTC_ASN1_INTEGER, 1UL, key->q, - LTC_ASN1_INTEGER, 1UL, key->dP, - LTC_ASN1_INTEGER, 1UL, key->dQ, - LTC_ASN1_INTEGER, 1UL, key->qP, - LTC_ASN1_INTEGER, 1UL, key->pq, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { - goto LBL_ERR; - } - key->type = PK_PRIVATE; - } else { - /* public we have N */ - key->type = PK_PUBLIC; - } - mp_clear(zero); - return CRYPT_OK; -LBL_ERR: - mp_clear_multi(zero, key->d, key->N, key->dQ, key->dP, - key->qP, key->p, key->q, key->pq, NULL); - return err; -} - -#endif /* LTC_MRSA */ - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/katja/katja_make_key.c b/src/libtomcrypt/src/pk/katja/katja_make_key.c deleted file mode 100644 index bbfe72d7ba..0000000000 --- a/src/libtomcrypt/src/pk/katja/katja_make_key.c +++ /dev/null @@ -1,99 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file katja_make_key.c - Katja key generation, Tom St Denis -*/ - -#ifdef LTC_MKAT - -/** - Create a Katja key - @param prng An active PRNG state - @param wprng The index of the PRNG desired - @param size The size of the modulus (key size) desired (octets) - @param key [out] Destination of a newly created private key pair - @return CRYPT_OK if successful, upon error all allocated ram is freed -*/ -int katja_make_key(prng_state *prng, int wprng, int size, katja_key *key) -{ - void *p, *q, *tmp1, *tmp2; - int err; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - if ((size < (MIN_KAT_SIZE/8)) || (size > (MAX_KAT_SIZE/8))) { - return CRYPT_INVALID_KEYSIZE; - } - - if ((err = prng_is_valid(wprng)) != CRYPT_OK) { - return err; - } - - if ((err = mp_init_multi(&p, &q, &tmp1, &tmp2, NULL)) != CRYPT_OK) { - return err; - } - - /* divide size by three */ - size = (((size << 3) / 3) + 7) >> 3; - - /* make prime "q" (we negate size to make q == 3 mod 4) */ - if ((err = rand_prime(q, -size, prng, wprng)) != CRYPT_OK) { goto done; } - if ((err = mp_sub_d(q, 1, tmp1)) != CRYPT_OK) { goto done; } - - /* make prime "p" */ - do { - if ((err = rand_prime(p, size+1, prng, wprng)) != CRYPT_OK) { goto done; } - if ((err = mp_gcd(p, tmp1, tmp2)) != CRYPT_OK) { goto done; } - } while (mp_cmp_d(tmp2, 1) != LTC_MP_EQ); - - /* make key */ - if ((err = mp_init_multi(&key->d, &key->N, &key->dQ, &key->dP, - &key->qP, &key->p, &key->q, &key->pq, NULL)) != CRYPT_OK) { - goto error; - } - - /* n=p^2q and 1/n mod pq */ - if ((err = mp_copy( p, key->p)) != CRYPT_OK) { goto error2; } - if ((err = mp_copy( q, key->q)) != CRYPT_OK) { goto error2; } - if ((err = mp_mul(key->p, key->q, key->pq)) != CRYPT_OK) { goto error2; } /* tmp1 = pq */ - if ((err = mp_mul(key->pq, key->p, key->N)) != CRYPT_OK) { goto error2; } /* N = p^2q */ - if ((err = mp_sub_d( p, 1, tmp1)) != CRYPT_OK) { goto error2; } /* tmp1 = q-1 */ - if ((err = mp_sub_d( q, 1, tmp2)) != CRYPT_OK) { goto error2; } /* tmp2 = p-1 */ - if ((err = mp_lcm(tmp1, tmp2, key->d)) != CRYPT_OK) { goto error2; } /* tmp1 = lcd(p-1,q-1) */ - if ((err = mp_invmod( key->N, key->d, key->d)) != CRYPT_OK) { goto error2; } /* key->d = 1/N mod pq */ - - /* optimize for CRT now */ - /* find d mod q-1 and d mod p-1 */ - if ((err = mp_mod( key->d, tmp1, key->dP)) != CRYPT_OK) { goto error2; } /* dP = d mod p-1 */ - if ((err = mp_mod( key->d, tmp2, key->dQ)) != CRYPT_OK) { goto error2; } /* dQ = d mod q-1 */ - if ((err = mp_invmod( q, p, key->qP)) != CRYPT_OK) { goto error2; } /* qP = 1/q mod p */ - - /* set key type (in this case it's CRT optimized) */ - key->type = PK_PRIVATE; - - /* return ok and free temps */ - err = CRYPT_OK; - goto done; -error2: - mp_clear_multi( key->d, key->N, key->dQ, key->dP, key->qP, key->p, key->q, key->pq, NULL); -error: -done: - mp_clear_multi( tmp2, tmp1, p, q, NULL); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_i2osp.c b/src/libtomcrypt/src/pk/pkcs1/pkcs_1_i2osp.c deleted file mode 100644 index 293e7b2649..0000000000 --- a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_i2osp.c +++ /dev/null @@ -1,49 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pkcs_1_i2osp.c - Integer to Octet I2OSP, Tom St Denis -*/ - -#ifdef LTC_PKCS_1 - -/* always stores the same # of bytes, pads with leading zero bytes - as required - */ - -/** - PKCS #1 Integer to binary - @param n The integer to store - @param modulus_len The length of the RSA modulus - @param out [out] The destination for the integer - @return CRYPT_OK if successful -*/ -int pkcs_1_i2osp(void *n, unsigned long modulus_len, unsigned char *out) -{ - unsigned long size; - - size = mp_unsigned_bin_size(n); - - if (size > modulus_len) { - return CRYPT_BUFFER_OVERFLOW; - } - - /* store it */ - zeromem(out, modulus_len); - return mp_to_unsigned_bin(n, out+(modulus_len-size)); -} - -#endif /* LTC_PKCS_1 */ - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c b/src/libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c deleted file mode 100644 index a26fcb75eb..0000000000 --- a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c +++ /dev/null @@ -1,106 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pkcs_1_mgf1.c - The Mask Generation Function (MGF1) for PKCS #1, Tom St Denis -*/ - -#ifdef LTC_PKCS_1 - -/** - Perform PKCS #1 MGF1 (internal) - @param hash_idx The index of the hash desired - @param seed The seed for MGF1 - @param seedlen The length of the seed - @param mask [out] The destination - @param masklen The length of the mask desired - @return CRYPT_OK if successful -*/ -int pkcs_1_mgf1(int hash_idx, - const unsigned char *seed, unsigned long seedlen, - unsigned char *mask, unsigned long masklen) -{ - unsigned long hLen, x; - ulong32 counter; - int err; - hash_state *md; - unsigned char *buf; - - LTC_ARGCHK(seed != NULL); - LTC_ARGCHK(mask != NULL); - - /* ensure valid hash */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - - /* get hash output size */ - hLen = hash_descriptor[hash_idx].hashsize; - - /* allocate memory */ - md = XMALLOC(sizeof(hash_state)); - buf = XMALLOC(hLen); - if (md == NULL || buf == NULL) { - if (md != NULL) { - XFREE(md); - } - if (buf != NULL) { - XFREE(buf); - } - return CRYPT_MEM; - } - - /* start counter */ - counter = 0; - - while (masklen > 0) { - /* handle counter */ - STORE32H(counter, buf); - ++counter; - - /* get hash of seed || counter */ - if ((err = hash_descriptor[hash_idx].init(md)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hash_descriptor[hash_idx].process(md, seed, seedlen)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hash_descriptor[hash_idx].process(md, buf, 4)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hash_descriptor[hash_idx].done(md, buf)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* store it */ - for (x = 0; x < hLen && masklen > 0; x++, masklen--) { - *mask++ = buf[x]; - } - } - - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(buf, hLen); - zeromem(md, sizeof(hash_state)); -#endif - - XFREE(buf); - XFREE(md); - - return err; -} - -#endif /* LTC_PKCS_1 */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c b/src/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c deleted file mode 100644 index 713d8c16ad..0000000000 --- a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c +++ /dev/null @@ -1,185 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pkcs_1_oaep_decode.c - OAEP Padding for PKCS #1, Tom St Denis -*/ - -#ifdef LTC_PKCS_1 - -/** - PKCS #1 v2.00 OAEP decode - @param msg The encoded data to decode - @param msglen The length of the encoded data (octets) - @param lparam The session or system data (can be NULL) - @param lparamlen The length of the lparam - @param modulus_bitlen The bit length of the RSA modulus - @param hash_idx The index of the hash desired - @param out [out] Destination of decoding - @param outlen [in/out] The max size and resulting size of the decoding - @param res [out] Result of decoding, 1==valid, 0==invalid - @return CRYPT_OK if successful -*/ -int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, - const unsigned char *lparam, unsigned long lparamlen, - unsigned long modulus_bitlen, int hash_idx, - unsigned char *out, unsigned long *outlen, - int *res) -{ - unsigned char *DB, *seed, *mask; - unsigned long hLen, x, y, modulus_len; - int err, ret; - - LTC_ARGCHK(msg != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(res != NULL); - - /* default to invalid packet */ - *res = 0; - - /* test valid hash */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - hLen = hash_descriptor[hash_idx].hashsize; - modulus_len = (modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0); - - /* test hash/message size */ - if ((2*hLen >= (modulus_len - 2)) || (msglen != modulus_len)) { - return CRYPT_PK_INVALID_SIZE; - } - - /* allocate ram for DB/mask/salt of size modulus_len */ - DB = XMALLOC(modulus_len); - mask = XMALLOC(modulus_len); - seed = XMALLOC(hLen); - if (DB == NULL || mask == NULL || seed == NULL) { - if (DB != NULL) { - XFREE(DB); - } - if (mask != NULL) { - XFREE(mask); - } - if (seed != NULL) { - XFREE(seed); - } - return CRYPT_MEM; - } - - /* ok so it's now in the form - - 0x00 || maskedseed || maskedDB - - 1 || hLen || modulus_len - hLen - 1 - - */ - - ret = CRYPT_OK; - - /* must have leading 0x00 byte */ - if (msg[0] != 0x00) { - ret = CRYPT_INVALID_PACKET; - } - - /* now read the masked seed */ - x = 1; - XMEMCPY(seed, msg + x, hLen); - x += hLen; - - /* now read the masked DB */ - XMEMCPY(DB, msg + x, modulus_len - hLen - 1); - x += modulus_len - hLen - 1; - - /* compute MGF1 of maskedDB (hLen) */ - if ((err = pkcs_1_mgf1(hash_idx, DB, modulus_len - hLen - 1, mask, hLen)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* XOR against seed */ - for (y = 0; y < hLen; y++) { - seed[y] ^= mask[y]; - } - - /* compute MGF1 of seed (k - hlen - 1) */ - if ((err = pkcs_1_mgf1(hash_idx, seed, hLen, mask, modulus_len - hLen - 1)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* xor against DB */ - for (y = 0; y < (modulus_len - hLen - 1); y++) { - DB[y] ^= mask[y]; - } - - /* now DB == lhash || PS || 0x01 || M, PS == k - mlen - 2hlen - 2 zeroes */ - - /* compute lhash and store it in seed [reuse temps!] */ - x = modulus_len; - if (lparam != NULL) { - if ((err = hash_memory(hash_idx, lparam, lparamlen, seed, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - } else { - /* can't pass hash_memory a NULL so use DB with zero length */ - if ((err = hash_memory(hash_idx, DB, 0, seed, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - } - - /* compare the lhash'es */ - if (XMEM_NEQ(seed, DB, hLen) != 0) { - ret = CRYPT_INVALID_PACKET; - } - - /* now zeroes before a 0x01 */ - for (x = hLen; x < (modulus_len - hLen - 1) && DB[x] == 0x00; x++) { - /* step... */ - } - - /* error if wasn't 0x01 */ - if (x == (modulus_len - hLen - 1) || DB[x] != 0x01) { - ret = CRYPT_INVALID_PACKET; - } - - /* rest is the message (and skip 0x01) */ - if ((modulus_len - hLen - 1 - ++x) > *outlen) { - ret = CRYPT_INVALID_PACKET; - } - - if (ret == CRYPT_OK) { - /* copy message */ - *outlen = modulus_len - hLen - 1 - x; - XMEMCPY(out, DB + x, modulus_len - hLen - 1 - x); - - /* valid packet */ - *res = 1; - } - err = ret; - -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(DB, modulus_len); - zeromem(seed, hLen); - zeromem(mask, modulus_len); -#endif - - XFREE(seed); - XFREE(mask); - XFREE(DB); - - return err; -} - -#endif /* LTC_PKCS_1 */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_encode.c b/src/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_encode.c deleted file mode 100644 index ce2d615dd3..0000000000 --- a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_encode.c +++ /dev/null @@ -1,171 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pkcs_1_oaep_encode.c - OAEP Padding for PKCS #1, Tom St Denis -*/ - -#ifdef LTC_PKCS_1 - -/** - PKCS #1 v2.00 OAEP encode - @param msg The data to encode - @param msglen The length of the data to encode (octets) - @param lparam A session or system parameter (can be NULL) - @param lparamlen The length of the lparam data - @param modulus_bitlen The bit length of the RSA modulus - @param prng An active PRNG state - @param prng_idx The index of the PRNG desired - @param hash_idx The index of the hash desired - @param out [out] The destination for the encoded data - @param outlen [in/out] The max size and resulting size of the encoded data - @return CRYPT_OK if successful -*/ -int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen, - const unsigned char *lparam, unsigned long lparamlen, - unsigned long modulus_bitlen, prng_state *prng, - int prng_idx, int hash_idx, - unsigned char *out, unsigned long *outlen) -{ - unsigned char *DB, *seed, *mask; - unsigned long hLen, x, y, modulus_len; - int err; - - LTC_ARGCHK(msg != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* test valid hash */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - - /* valid prng */ - if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) { - return err; - } - - hLen = hash_descriptor[hash_idx].hashsize; - modulus_len = (modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0); - - /* test message size */ - if ((2*hLen >= (modulus_len - 2)) || (msglen > (modulus_len - 2*hLen - 2))) { - return CRYPT_PK_INVALID_SIZE; - } - - /* allocate ram for DB/mask/salt of size modulus_len */ - DB = XMALLOC(modulus_len); - mask = XMALLOC(modulus_len); - seed = XMALLOC(hLen); - if (DB == NULL || mask == NULL || seed == NULL) { - if (DB != NULL) { - XFREE(DB); - } - if (mask != NULL) { - XFREE(mask); - } - if (seed != NULL) { - XFREE(seed); - } - return CRYPT_MEM; - } - - /* get lhash */ - /* DB == lhash || PS || 0x01 || M, PS == k - mlen - 2hlen - 2 zeroes */ - x = modulus_len; - if (lparam != NULL) { - if ((err = hash_memory(hash_idx, lparam, lparamlen, DB, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - } else { - /* can't pass hash_memory a NULL so use DB with zero length */ - if ((err = hash_memory(hash_idx, DB, 0, DB, &x)) != CRYPT_OK) { - goto LBL_ERR; - } - } - - /* append PS then 0x01 (to lhash) */ - x = hLen; - y = modulus_len - msglen - 2*hLen - 2; - XMEMSET(DB+x, 0, y); - x += y; - - /* 0x01 byte */ - DB[x++] = 0x01; - - /* message (length = msglen) */ - XMEMCPY(DB+x, msg, msglen); - x += msglen; - - /* now choose a random seed */ - if (prng_descriptor[prng_idx].read(seed, hLen, prng) != hLen) { - err = CRYPT_ERROR_READPRNG; - goto LBL_ERR; - } - - /* compute MGF1 of seed (k - hlen - 1) */ - if ((err = pkcs_1_mgf1(hash_idx, seed, hLen, mask, modulus_len - hLen - 1)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* xor against DB */ - for (y = 0; y < (modulus_len - hLen - 1); y++) { - DB[y] ^= mask[y]; - } - - /* compute MGF1 of maskedDB (hLen) */ - if ((err = pkcs_1_mgf1(hash_idx, DB, modulus_len - hLen - 1, mask, hLen)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* XOR against seed */ - for (y = 0; y < hLen; y++) { - seed[y] ^= mask[y]; - } - - /* create string of length modulus_len */ - if (*outlen < modulus_len) { - *outlen = modulus_len; - err = CRYPT_BUFFER_OVERFLOW; - goto LBL_ERR; - } - - /* start output which is 0x00 || maskedSeed || maskedDB */ - x = 0; - out[x++] = 0x00; - XMEMCPY(out+x, seed, hLen); - x += hLen; - XMEMCPY(out+x, DB, modulus_len - hLen - 1); - x += modulus_len - hLen - 1; - - *outlen = x; - - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(DB, modulus_len); - zeromem(seed, hLen); - zeromem(mask, modulus_len); -#endif - - XFREE(seed); - XFREE(mask); - XFREE(DB); - - return err; -} - -#endif /* LTC_PKCS_1 */ - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_os2ip.c b/src/libtomcrypt/src/pk/pkcs1/pkcs_1_os2ip.c deleted file mode 100644 index 5e831bf6ca..0000000000 --- a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_os2ip.c +++ /dev/null @@ -1,34 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pkcs_1_os2ip.c - Octet to Integer OS2IP, Tom St Denis -*/ -#ifdef LTC_PKCS_1 - -/** - Read a binary string into an mp_int - @param n [out] The mp_int destination - @param in The binary string to read - @param inlen The length of the binary string - @return CRYPT_OK if successful -*/ -int pkcs_1_os2ip(void *n, unsigned char *in, unsigned long inlen) -{ - return mp_read_unsigned_bin(n, in, inlen); -} - -#endif /* LTC_PKCS_1 */ - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c b/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c deleted file mode 100644 index 0b80eff743..0000000000 --- a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c +++ /dev/null @@ -1,176 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pkcs_1_pss_decode.c - PKCS #1 PSS Signature Padding, Tom St Denis -*/ - -#ifdef LTC_PKCS_1 - -/** - PKCS #1 v2.00 PSS decode - @param msghash The hash to verify - @param msghashlen The length of the hash (octets) - @param sig The signature data (encoded data) - @param siglen The length of the signature data (octets) - @param saltlen The length of the salt used (octets) - @param hash_idx The index of the hash desired - @param modulus_bitlen The bit length of the RSA modulus - @param res [out] The result of the comparison, 1==valid, 0==invalid - @return CRYPT_OK if successful (even if the comparison failed) -*/ -int pkcs_1_pss_decode(const unsigned char *msghash, unsigned long msghashlen, - const unsigned char *sig, unsigned long siglen, - unsigned long saltlen, int hash_idx, - unsigned long modulus_bitlen, int *res) -{ - unsigned char *DB, *mask, *salt, *hash; - unsigned long x, y, hLen, modulus_len; - int err; - hash_state md; - - LTC_ARGCHK(msghash != NULL); - LTC_ARGCHK(res != NULL); - - /* default to invalid */ - *res = 0; - - /* ensure hash is valid */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - - hLen = hash_descriptor[hash_idx].hashsize; - modulus_bitlen--; - modulus_len = (modulus_bitlen>>3) + (modulus_bitlen & 7 ? 1 : 0); - - /* check sizes */ - if ((saltlen > modulus_len) || - (modulus_len < hLen + saltlen + 2)) { - return CRYPT_PK_INVALID_SIZE; - } - - /* allocate ram for DB/mask/salt/hash of size modulus_len */ - DB = XMALLOC(modulus_len); - mask = XMALLOC(modulus_len); - salt = XMALLOC(modulus_len); - hash = XMALLOC(modulus_len); - if (DB == NULL || mask == NULL || salt == NULL || hash == NULL) { - if (DB != NULL) { - XFREE(DB); - } - if (mask != NULL) { - XFREE(mask); - } - if (salt != NULL) { - XFREE(salt); - } - if (hash != NULL) { - XFREE(hash); - } - return CRYPT_MEM; - } - - /* ensure the 0xBC byte */ - if (sig[siglen-1] != 0xBC) { - err = CRYPT_INVALID_PACKET; - goto LBL_ERR; - } - - /* copy out the DB */ - x = 0; - XMEMCPY(DB, sig + x, modulus_len - hLen - 1); - x += modulus_len - hLen - 1; - - /* copy out the hash */ - XMEMCPY(hash, sig + x, hLen); - /* x += hLen; */ - - /* check the MSB */ - if ((sig[0] & ~(0xFF >> ((modulus_len<<3) - (modulus_bitlen)))) != 0) { - err = CRYPT_INVALID_PACKET; - goto LBL_ERR; - } - - /* generate mask of length modulus_len - hLen - 1 from hash */ - if ((err = pkcs_1_mgf1(hash_idx, hash, hLen, mask, modulus_len - hLen - 1)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* xor against DB */ - for (y = 0; y < (modulus_len - hLen - 1); y++) { - DB[y] ^= mask[y]; - } - - /* now clear the first byte [make sure smaller than modulus] */ - DB[0] &= 0xFF >> ((modulus_len<<3) - (modulus_bitlen)); - - /* DB = PS || 0x01 || salt, PS == modulus_len - saltlen - hLen - 2 zero bytes */ - - /* check for zeroes and 0x01 */ - for (x = 0; x < modulus_len - saltlen - hLen - 2; x++) { - if (DB[x] != 0x00) { - err = CRYPT_INVALID_PACKET; - goto LBL_ERR; - } - } - - /* check for the 0x01 */ - if (DB[x++] != 0x01) { - err = CRYPT_INVALID_PACKET; - goto LBL_ERR; - } - - /* M = (eight) 0x00 || msghash || salt, mask = H(M) */ - if ((err = hash_descriptor[hash_idx].init(&md)) != CRYPT_OK) { - goto LBL_ERR; - } - zeromem(mask, 8); - if ((err = hash_descriptor[hash_idx].process(&md, mask, 8)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hash_descriptor[hash_idx].process(&md, msghash, msghashlen)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hash_descriptor[hash_idx].process(&md, DB+x, saltlen)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hash_descriptor[hash_idx].done(&md, mask)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* mask == hash means valid signature */ - if (XMEM_NEQ(mask, hash, hLen) == 0) { - *res = 1; - } - - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(DB, modulus_len); - zeromem(mask, modulus_len); - zeromem(salt, modulus_len); - zeromem(hash, modulus_len); -#endif - - XFREE(hash); - XFREE(salt); - XFREE(mask); - XFREE(DB); - - return err; -} - -#endif /* LTC_PKCS_1 */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c b/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c deleted file mode 100644 index 403fd141d6..0000000000 --- a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c +++ /dev/null @@ -1,174 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file pkcs_1_pss_encode.c - PKCS #1 PSS Signature Padding, Tom St Denis -*/ - -#ifdef LTC_PKCS_1 - -/** - PKCS #1 v2.00 Signature Encoding - @param msghash The hash to encode - @param msghashlen The length of the hash (octets) - @param saltlen The length of the salt desired (octets) - @param prng An active PRNG context - @param prng_idx The index of the PRNG desired - @param hash_idx The index of the hash desired - @param modulus_bitlen The bit length of the RSA modulus - @param out [out] The destination of the encoding - @param outlen [in/out] The max size and resulting size of the encoded data - @return CRYPT_OK if successful -*/ -int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen, - unsigned long saltlen, prng_state *prng, - int prng_idx, int hash_idx, - unsigned long modulus_bitlen, - unsigned char *out, unsigned long *outlen) -{ - unsigned char *DB, *mask, *salt, *hash; - unsigned long x, y, hLen, modulus_len; - int err; - hash_state md; - - LTC_ARGCHK(msghash != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* ensure hash and PRNG are valid */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) { - return err; - } - - hLen = hash_descriptor[hash_idx].hashsize; - modulus_bitlen--; - modulus_len = (modulus_bitlen>>3) + (modulus_bitlen & 7 ? 1 : 0); - - /* check sizes */ - if ((saltlen > modulus_len) || (modulus_len < hLen + saltlen + 2)) { - return CRYPT_PK_INVALID_SIZE; - } - - /* allocate ram for DB/mask/salt/hash of size modulus_len */ - DB = XMALLOC(modulus_len); - mask = XMALLOC(modulus_len); - salt = XMALLOC(modulus_len); - hash = XMALLOC(modulus_len); - if (DB == NULL || mask == NULL || salt == NULL || hash == NULL) { - if (DB != NULL) { - XFREE(DB); - } - if (mask != NULL) { - XFREE(mask); - } - if (salt != NULL) { - XFREE(salt); - } - if (hash != NULL) { - XFREE(hash); - } - return CRYPT_MEM; - } - - - /* generate random salt */ - if (saltlen > 0) { - if (prng_descriptor[prng_idx].read(salt, saltlen, prng) != saltlen) { - err = CRYPT_ERROR_READPRNG; - goto LBL_ERR; - } - } - - /* M = (eight) 0x00 || msghash || salt, hash = H(M) */ - if ((err = hash_descriptor[hash_idx].init(&md)) != CRYPT_OK) { - goto LBL_ERR; - } - zeromem(DB, 8); - if ((err = hash_descriptor[hash_idx].process(&md, DB, 8)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hash_descriptor[hash_idx].process(&md, msghash, msghashlen)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hash_descriptor[hash_idx].process(&md, salt, saltlen)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = hash_descriptor[hash_idx].done(&md, hash)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* generate DB = PS || 0x01 || salt, PS == modulus_len - saltlen - hLen - 2 zero bytes */ - x = 0; - XMEMSET(DB + x, 0, modulus_len - saltlen - hLen - 2); - x += modulus_len - saltlen - hLen - 2; - DB[x++] = 0x01; - XMEMCPY(DB + x, salt, saltlen); - /* x += saltlen; */ - - /* generate mask of length modulus_len - hLen - 1 from hash */ - if ((err = pkcs_1_mgf1(hash_idx, hash, hLen, mask, modulus_len - hLen - 1)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* xor against DB */ - for (y = 0; y < (modulus_len - hLen - 1); y++) { - DB[y] ^= mask[y]; - } - - /* output is DB || hash || 0xBC */ - if (*outlen < modulus_len) { - *outlen = modulus_len; - err = CRYPT_BUFFER_OVERFLOW; - goto LBL_ERR; - } - - /* DB len = modulus_len - hLen - 1 */ - y = 0; - XMEMCPY(out + y, DB, modulus_len - hLen - 1); - y += modulus_len - hLen - 1; - - /* hash */ - XMEMCPY(out + y, hash, hLen); - y += hLen; - - /* 0xBC */ - out[y] = 0xBC; - - /* now clear the 8*modulus_len - modulus_bitlen most significant bits */ - out[0] &= 0xFF >> ((modulus_len<<3) - modulus_bitlen); - - /* store output size */ - *outlen = modulus_len; - err = CRYPT_OK; -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(DB, modulus_len); - zeromem(mask, modulus_len); - zeromem(salt, modulus_len); - zeromem(hash, modulus_len); -#endif - - XFREE(hash); - XFREE(salt); - XFREE(mask); - XFREE(DB); - - return err; -} - -#endif /* LTC_PKCS_1 */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_decode.c b/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_decode.c deleted file mode 100644 index 3ce76c8a74..0000000000 --- a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_decode.c +++ /dev/null @@ -1,112 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** @file pkcs_1_v1_5_decode.c - * - * PKCS #1 v1.5 Padding. (Andreas Lange) - */ - -#ifdef LTC_PKCS_1 - -/** @brief PKCS #1 v1.5 decode. - * - * @param msg The encoded data to decode - * @param msglen The length of the encoded data (octets) - * @param block_type Block type to use in padding (\sa ltc_pkcs_1_v1_5_blocks) - * @param modulus_bitlen The bit length of the RSA modulus - * @param out [out] Destination of decoding - * @param outlen [in/out] The max size and resulting size of the decoding - * @param is_valid [out] Boolean whether the padding was valid - * - * @return CRYPT_OK if successful - */ -int pkcs_1_v1_5_decode(const unsigned char *msg, - unsigned long msglen, - int block_type, - unsigned long modulus_bitlen, - unsigned char *out, - unsigned long *outlen, - int *is_valid) -{ - unsigned long modulus_len, ps_len, i; - int result; - - /* default to invalid packet */ - *is_valid = 0; - - modulus_len = (modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0); - - /* test message size */ - - if ((msglen > modulus_len) || (modulus_len < 11)) { - return CRYPT_PK_INVALID_SIZE; - } - - result = CRYPT_OK; - - /* separate encoded message */ - - if ((msg[0] != 0x00) || (msg[1] != (unsigned char)block_type)) { - result = CRYPT_INVALID_PACKET; - } - - if (block_type == LTC_PKCS_1_EME) { - for (i = 2; i < modulus_len; i++) { - /* separator */ - if (msg[i] == 0x00) { break; } - } - ps_len = i++ - 2; - - if (i >= modulus_len) { - /* There was no octet with hexadecimal value 0x00 to separate ps from m. - */ - result = CRYPT_INVALID_PACKET; - } - } else { - for (i = 2; i < modulus_len - 1; i++) { - if (msg[i] != 0xFF) { break; } - } - - /* separator check */ - if (msg[i] != 0) { - /* There was no octet with hexadecimal value 0x00 to separate ps from m. */ - result = CRYPT_INVALID_PACKET; - } - - ps_len = i - 2; - } - - if (ps_len < 8) - { - /* The length of ps is less than 8 octets. - */ - result = CRYPT_INVALID_PACKET; - } - - if (*outlen < (msglen - (2 + ps_len + 1))) { - result = CRYPT_INVALID_PACKET; - } - - if (result == CRYPT_OK) { - *outlen = (msglen - (2 + ps_len + 1)); - XMEMCPY(out, &msg[2 + ps_len + 1], *outlen); - - /* valid packet */ - *is_valid = 1; - } - - return result; -} /* pkcs_1_v1_5_decode */ - -#endif /* #ifdef LTC_PKCS_1 */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_encode.c b/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_encode.c deleted file mode 100644 index b117b84eeb..0000000000 --- a/src/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_encode.c +++ /dev/null @@ -1,109 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/*! \file pkcs_1_v1_5_encode.c - * - * PKCS #1 v1.5 Padding (Andreas Lange) - */ - -#ifdef LTC_PKCS_1 - -/*! \brief PKCS #1 v1.5 encode. - * - * \param msg The data to encode - * \param msglen The length of the data to encode (octets) - * \param block_type Block type to use in padding (\sa ltc_pkcs_1_v1_5_blocks) - * \param modulus_bitlen The bit length of the RSA modulus - * \param prng An active PRNG state (only for LTC_PKCS_1_EME) - * \param prng_idx The index of the PRNG desired (only for LTC_PKCS_1_EME) - * \param out [out] The destination for the encoded data - * \param outlen [in/out] The max size and resulting size of the encoded data - * - * \return CRYPT_OK if successful - */ -int pkcs_1_v1_5_encode(const unsigned char *msg, - unsigned long msglen, - int block_type, - unsigned long modulus_bitlen, - prng_state *prng, - int prng_idx, - unsigned char *out, - unsigned long *outlen) -{ - unsigned long modulus_len, ps_len, i; - unsigned char *ps; - int result; - - /* valid block_type? */ - if ((block_type != LTC_PKCS_1_EMSA) && - (block_type != LTC_PKCS_1_EME)) { - return CRYPT_PK_INVALID_PADDING; - } - - if (block_type == LTC_PKCS_1_EME) { /* encryption padding, we need a valid PRNG */ - if ((result = prng_is_valid(prng_idx)) != CRYPT_OK) { - return result; - } - } - - modulus_len = (modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0); - - /* test message size */ - if ((msglen + 11) > modulus_len) { - return CRYPT_PK_INVALID_SIZE; - } - - if (*outlen < modulus_len) { - *outlen = modulus_len; - result = CRYPT_BUFFER_OVERFLOW; - goto bail; - } - - /* generate an octets string PS */ - ps = &out[2]; - ps_len = modulus_len - msglen - 3; - - if (block_type == LTC_PKCS_1_EME) { - /* now choose a random ps */ - if (prng_descriptor[prng_idx].read(ps, ps_len, prng) != ps_len) { - result = CRYPT_ERROR_READPRNG; - goto bail; - } - - /* transform zero bytes (if any) to non-zero random bytes */ - for (i = 0; i < ps_len; i++) { - while (ps[i] == 0) { - if (prng_descriptor[prng_idx].read(&ps[i], 1, prng) != 1) { - result = CRYPT_ERROR_READPRNG; - goto bail; - } - } - } - } else { - XMEMSET(ps, 0xFF, ps_len); - } - - /* create string of length modulus_len */ - out[0] = 0x00; - out[1] = (unsigned char)block_type; /* block_type 1 or 2 */ - out[2 + ps_len] = 0x00; - XMEMCPY(&out[2 + ps_len + 1], msg, msglen); - *outlen = modulus_len; - - result = CRYPT_OK; -bail: - return result; -} /* pkcs_1_v1_5_encode */ - -#endif /* #ifdef LTC_PKCS_1 */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/rsa/rsa_decrypt_key.c b/src/libtomcrypt/src/pk/rsa/rsa_decrypt_key.c deleted file mode 100644 index a879f0ca75..0000000000 --- a/src/libtomcrypt/src/pk/rsa/rsa_decrypt_key.c +++ /dev/null @@ -1,103 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file rsa_decrypt_key.c - RSA PKCS #1 Decryption, Tom St Denis and Andreas Lange -*/ - -#ifdef LTC_MRSA - -/** - PKCS #1 decrypt then v1.5 or OAEP depad - @param in The ciphertext - @param inlen The length of the ciphertext (octets) - @param out [out] The plaintext - @param outlen [in/out] The max size and resulting size of the plaintext (octets) - @param lparam The system "lparam" value - @param lparamlen The length of the lparam value (octets) - @param hash_idx The index of the hash desired - @param padding Type of padding (LTC_PKCS_1_OAEP or LTC_PKCS_1_V1_5) - @param stat [out] Result of the decryption, 1==valid, 0==invalid - @param key The corresponding private RSA key - @return CRYPT_OK if succcessul (even if invalid) -*/ -int rsa_decrypt_key_ex(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - const unsigned char *lparam, unsigned long lparamlen, - int hash_idx, int padding, - int *stat, rsa_key *key) -{ - unsigned long modulus_bitlen, modulus_bytelen, x; - int err; - unsigned char *tmp; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(stat != NULL); - - /* default to invalid */ - *stat = 0; - - /* valid padding? */ - - if ((padding != LTC_PKCS_1_V1_5) && - (padding != LTC_PKCS_1_OAEP)) { - return CRYPT_PK_INVALID_PADDING; - } - - if (padding == LTC_PKCS_1_OAEP) { - /* valid hash ? */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - } - - /* get modulus len in bits */ - modulus_bitlen = mp_count_bits( (key->N)); - - /* outlen must be at least the size of the modulus */ - modulus_bytelen = mp_unsigned_bin_size( (key->N)); - if (modulus_bytelen != inlen) { - return CRYPT_INVALID_PACKET; - } - - /* allocate ram */ - tmp = XMALLOC(inlen); - if (tmp == NULL) { - return CRYPT_MEM; - } - - /* rsa decode the packet */ - x = inlen; - if ((err = ltc_mp.rsa_me(in, inlen, tmp, &x, PK_PRIVATE, key)) != CRYPT_OK) { - XFREE(tmp); - return err; - } - - if (padding == LTC_PKCS_1_OAEP) { - /* now OAEP decode the packet */ - err = pkcs_1_oaep_decode(tmp, x, lparam, lparamlen, modulus_bitlen, hash_idx, - out, outlen, stat); - } else { - /* now PKCS #1 v1.5 depad the packet */ - err = pkcs_1_v1_5_decode(tmp, x, LTC_PKCS_1_EME, modulus_bitlen, out, outlen, stat); - } - - XFREE(tmp); - return err; -} - -#endif /* LTC_MRSA */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/rsa/rsa_encrypt_key.c b/src/libtomcrypt/src/pk/rsa/rsa_encrypt_key.c deleted file mode 100644 index 9a92f6c112..0000000000 --- a/src/libtomcrypt/src/pk/rsa/rsa_encrypt_key.c +++ /dev/null @@ -1,100 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file rsa_encrypt_key.c - RSA PKCS #1 encryption, Tom St Denis and Andreas Lange -*/ - -#ifdef LTC_MRSA - -/** - (PKCS #1 v2.0) OAEP pad then encrypt - @param in The plaintext - @param inlen The length of the plaintext (octets) - @param out [out] The ciphertext - @param outlen [in/out] The max size and resulting size of the ciphertext - @param lparam The system "lparam" for the encryption - @param lparamlen The length of lparam (octets) - @param prng An active PRNG - @param prng_idx The index of the desired prng - @param hash_idx The index of the desired hash - @param padding Type of padding (LTC_PKCS_1_OAEP or LTC_PKCS_1_V1_5) - @param key The RSA key to encrypt to - @return CRYPT_OK if successful -*/ -int rsa_encrypt_key_ex(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - const unsigned char *lparam, unsigned long lparamlen, - prng_state *prng, int prng_idx, int hash_idx, int padding, rsa_key *key) -{ - unsigned long modulus_bitlen, modulus_bytelen, x; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - /* valid padding? */ - if ((padding != LTC_PKCS_1_V1_5) && - (padding != LTC_PKCS_1_OAEP)) { - return CRYPT_PK_INVALID_PADDING; - } - - /* valid prng? */ - if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) { - return err; - } - - if (padding == LTC_PKCS_1_OAEP) { - /* valid hash? */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - } - - /* get modulus len in bits */ - modulus_bitlen = mp_count_bits( (key->N)); - - /* outlen must be at least the size of the modulus */ - modulus_bytelen = mp_unsigned_bin_size( (key->N)); - if (modulus_bytelen > *outlen) { - *outlen = modulus_bytelen; - return CRYPT_BUFFER_OVERFLOW; - } - - if (padding == LTC_PKCS_1_OAEP) { - /* OAEP pad the key */ - x = *outlen; - if ((err = pkcs_1_oaep_encode(in, inlen, lparam, - lparamlen, modulus_bitlen, prng, prng_idx, hash_idx, - out, &x)) != CRYPT_OK) { - return err; - } - } else { - /* PKCS #1 v1.5 pad the key */ - x = *outlen; - if ((err = pkcs_1_v1_5_encode(in, inlen, LTC_PKCS_1_EME, - modulus_bitlen, prng, prng_idx, - out, &x)) != CRYPT_OK) { - return err; - } - } - - /* rsa exptmod the OAEP or PKCS #1 v1.5 pad */ - return ltc_mp.rsa_me(out, x, out, outlen, PK_PUBLIC, key); -} - -#endif /* LTC_MRSA */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/rsa/rsa_export.c b/src/libtomcrypt/src/pk/rsa/rsa_export.c deleted file mode 100644 index eb146f10a8..0000000000 --- a/src/libtomcrypt/src/pk/rsa/rsa_export.c +++ /dev/null @@ -1,97 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file rsa_export.c - Export RSA PKCS keys, Tom St Denis -*/ - -#ifdef LTC_MRSA - -/** - This will export either an RSAPublicKey or RSAPrivateKey [defined in PKCS #1 v2.1] - @param out [out] Destination of the packet - @param outlen [in/out] The max size and resulting size of the packet - @param type The type of exported key (PK_PRIVATE or PK_PUBLIC) - @param key The RSA key to export - @return CRYPT_OK if successful -*/ -int rsa_export(unsigned char *out, unsigned long *outlen, int type, rsa_key *key) -{ - unsigned long zero=0; - int err; - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - /* type valid? */ - if (!(key->type == PK_PRIVATE) && (type == PK_PRIVATE)) { - return CRYPT_PK_INVALID_TYPE; - } - - if (type == PK_PRIVATE) { - /* private key */ - /* output is - Version, n, e, d, p, q, d mod (p-1), d mod (q - 1), 1/q mod p - */ - return der_encode_sequence_multi(out, outlen, - LTC_ASN1_SHORT_INTEGER, 1UL, &zero, - LTC_ASN1_INTEGER, 1UL, key->N, - LTC_ASN1_INTEGER, 1UL, key->e, - LTC_ASN1_INTEGER, 1UL, key->d, - LTC_ASN1_INTEGER, 1UL, key->p, - LTC_ASN1_INTEGER, 1UL, key->q, - LTC_ASN1_INTEGER, 1UL, key->dP, - LTC_ASN1_INTEGER, 1UL, key->dQ, - LTC_ASN1_INTEGER, 1UL, key->qP, - LTC_ASN1_EOL, 0UL, NULL); - } else { - /* public key */ - unsigned long tmplen, *ptmplen; - unsigned char* tmp = NULL; - - if (type & PK_STD) { - tmplen = (unsigned long)(mp_count_bits(key->N) / 8) * 2 + 8; - tmp = XMALLOC(tmplen); - ptmplen = &tmplen; - if (tmp == NULL) { - return CRYPT_MEM; - } - } - else { - tmp = out; - ptmplen = outlen; - } - - err = der_encode_sequence_multi(tmp, ptmplen, - LTC_ASN1_INTEGER, 1UL, key->N, - LTC_ASN1_INTEGER, 1UL, key->e, - LTC_ASN1_EOL, 0UL, NULL); - - if ((err != CRYPT_OK) || !(type & PK_STD)) { - goto finish; - } - - err = der_encode_subject_public_key_info(out, outlen, - PKA_RSA, tmp, tmplen, LTC_ASN1_NULL, NULL, 0); - -finish: - if (tmp != out) - XFREE(tmp); - return err; - - } -} - -#endif /* LTC_MRSA */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/rsa/rsa_exptmod.c b/src/libtomcrypt/src/pk/rsa/rsa_exptmod.c deleted file mode 100644 index 545d777687..0000000000 --- a/src/libtomcrypt/src/pk/rsa/rsa_exptmod.c +++ /dev/null @@ -1,182 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file rsa_exptmod.c - RSA PKCS exptmod, Tom St Denis - Added RSA blinding --nmav -*/ - -#ifdef LTC_MRSA - -/** - Compute an RSA modular exponentiation - @param in The input data to send into RSA - @param inlen The length of the input (octets) - @param out [out] The destination - @param outlen [in/out] The max size and resulting size of the output - @param which Which exponent to use, e.g. PK_PRIVATE or PK_PUBLIC - @param key The RSA key to use - @return CRYPT_OK if successful -*/ -int rsa_exptmod(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, int which, - rsa_key *key) -{ - void *tmp, *tmpa, *tmpb; - #ifdef LTC_RSA_BLINDING - void *rnd, *rndi /* inverse of rnd */; - #endif - unsigned long x; - int err, has_crt_parameters; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - /* is the key of the right type for the operation? */ - if (which == PK_PRIVATE && (key->type != PK_PRIVATE)) { - return CRYPT_PK_NOT_PRIVATE; - } - - /* must be a private or public operation */ - if (which != PK_PRIVATE && which != PK_PUBLIC) { - return CRYPT_PK_INVALID_TYPE; - } - - /* init and copy into tmp */ - if ((err = mp_init_multi(&tmp, &tmpa, &tmpb, -#ifdef LTC_RSA_BLINDING - &rnd, &rndi, -#endif /* LTC_RSA_BLINDING */ - NULL)) != CRYPT_OK) - { return err; } - if ((err = mp_read_unsigned_bin(tmp, (unsigned char *)in, (int)inlen)) != CRYPT_OK) - { goto error; } - - - /* sanity check on the input */ - if (mp_cmp(key->N, tmp) == LTC_MP_LT) { - err = CRYPT_PK_INVALID_SIZE; - goto error; - } - - /* are we using the private exponent and is the key optimized? */ - if (which == PK_PRIVATE) { - #ifdef LTC_RSA_BLINDING - /* do blinding */ - err = mp_rand(rnd, mp_get_digit_count(key->N)); - if (err != CRYPT_OK) { - goto error; - } - - /* rndi = 1/rnd mod N */ - err = mp_invmod(rnd, key->N, rndi); - if (err != CRYPT_OK) { - goto error; - } - - /* rnd = rnd^e */ - err = mp_exptmod( rnd, key->e, key->N, rnd); - if (err != CRYPT_OK) { - goto error; - } - - /* tmp = tmp*rnd mod N */ - err = mp_mulmod( tmp, rnd, key->N, tmp); - if (err != CRYPT_OK) { - goto error; - } - #endif /* LTC_RSA_BLINDING */ - - has_crt_parameters = (key->p != NULL) && (mp_get_digit_count(key->p) != 0) && - (key->q != NULL) && (mp_get_digit_count(key->q) != 0) && - (key->dP != NULL) && (mp_get_digit_count(key->dP) != 0) && - (key->dQ != NULL) && (mp_get_digit_count(key->dQ) != 0) && - (key->qP != NULL) && (mp_get_digit_count(key->qP) != 0); - - if (!has_crt_parameters) { - /* - * In case CRT optimization parameters are not provided, - * the private key is directly used to exptmod it - */ - if ((err = mp_exptmod(tmp, key->d, key->N, tmp)) != CRYPT_OK) { goto error; } - } else { - /* tmpa = tmp^dP mod p */ - if ((err = mp_exptmod(tmp, key->dP, key->p, tmpa)) != CRYPT_OK) { goto error; } - - /* tmpb = tmp^dQ mod q */ - if ((err = mp_exptmod(tmp, key->dQ, key->q, tmpb)) != CRYPT_OK) { goto error; } - - /* tmp = (tmpa - tmpb) * qInv (mod p) */ - if ((err = mp_sub(tmpa, tmpb, tmp)) != CRYPT_OK) { goto error; } - if ((err = mp_mulmod(tmp, key->qP, key->p, tmp)) != CRYPT_OK) { goto error; } - - /* tmp = tmpb + q * tmp */ - if ((err = mp_mul(tmp, key->q, tmp)) != CRYPT_OK) { goto error; } - if ((err = mp_add(tmp, tmpb, tmp)) != CRYPT_OK) { goto error; } - } - - #ifdef LTC_RSA_BLINDING - /* unblind */ - err = mp_mulmod( tmp, rndi, key->N, tmp); - if (err != CRYPT_OK) { - goto error; - } - #endif - - #ifdef LTC_RSA_CRT_HARDENING - if (has_crt_parameters) { - if ((err = mp_exptmod(tmp, key->e, key->N, tmpa)) != CRYPT_OK) { goto error; } - if ((err = mp_read_unsigned_bin(tmpb, (unsigned char *)in, (int)inlen)) != CRYPT_OK) { goto error; } - if (mp_cmp(tmpa, tmpb) != LTC_MP_EQ) { err = CRYPT_ERROR; goto error; } - } - #endif - } else { - /* exptmod it */ - if ((err = mp_exptmod(tmp, key->e, key->N, tmp)) != CRYPT_OK) { goto error; } - } - - /* read it back */ - x = (unsigned long)mp_unsigned_bin_size(key->N); - if (x > *outlen) { - *outlen = x; - err = CRYPT_BUFFER_OVERFLOW; - goto error; - } - - /* this should never happen ... */ - if (mp_unsigned_bin_size(tmp) > mp_unsigned_bin_size(key->N)) { - err = CRYPT_ERROR; - goto error; - } - *outlen = x; - - /* convert it */ - zeromem(out, x); - if ((err = mp_to_unsigned_bin(tmp, out+(x-mp_unsigned_bin_size(tmp)))) != CRYPT_OK) { goto error; } - - /* clean up and return */ - err = CRYPT_OK; -error: - mp_clear_multi( -#ifdef LTC_RSA_BLINDING - rndi, rnd, -#endif /* LTC_RSA_BLINDING */ - tmpb, tmpa, tmp, NULL); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/rsa/rsa_free.c b/src/libtomcrypt/src/pk/rsa/rsa_free.c deleted file mode 100644 index 73fb51eb2d..0000000000 --- a/src/libtomcrypt/src/pk/rsa/rsa_free.c +++ /dev/null @@ -1,32 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file rsa_free.c - Free an RSA key, Tom St Denis -*/ - -#ifdef LTC_MRSA - -/** - Free an RSA key from memory - @param key The RSA key to free -*/ -void rsa_free(rsa_key *key) -{ - LTC_ARGCHKVD(key != NULL); - mp_cleanup_multi(&key->q, &key->p, &key->qP, &key->dP, &key->dQ, &key->N, &key->d, &key->e, NULL); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/rsa/rsa_get_size.c b/src/libtomcrypt/src/pk/rsa/rsa_get_size.c deleted file mode 100644 index 4bd12f6be0..0000000000 --- a/src/libtomcrypt/src/pk/rsa/rsa_get_size.c +++ /dev/null @@ -1,40 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file rsa_get_size.c - Retrieve the size of an RSA key, Steffen Jaeckel. -*/ - -#ifdef LTC_MRSA - -/** - Retrieve the size in bytes of an RSA key. - @param key The RSA key - @return The size in bytes of the RSA key or INT_MAX on error. -*/ -int rsa_get_size(rsa_key *key) -{ - int ret = INT_MAX; - LTC_ARGCHK(key != NULL); - - if (key) - { - ret = mp_unsigned_bin_size(key->N); - } /* if */ - - return ret; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/rsa/rsa_import.c b/src/libtomcrypt/src/pk/rsa/rsa_import.c deleted file mode 100644 index 2f212a9a56..0000000000 --- a/src/libtomcrypt/src/pk/rsa/rsa_import.c +++ /dev/null @@ -1,129 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file rsa_import.c - Import a PKCS RSA key, Tom St Denis -*/ - -#ifdef LTC_MRSA - -/** - Import an RSAPublicKey or RSAPrivateKey [two-prime only, only support >= 1024-bit keys, defined in PKCS #1 v2.1] - @param in The packet to import from - @param inlen It's length (octets) - @param key [out] Destination for newly imported key - @return CRYPT_OK if successful, upon error allocated memory is freed -*/ -int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key) -{ - int err; - void *zero; - unsigned char *tmpbuf=NULL; - unsigned long tmpbuf_len; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - /* init key */ - if ((err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, - &key->dP, &key->qP, &key->p, &key->q, NULL)) != CRYPT_OK) { - return err; - } - - /* see if the OpenSSL DER format RSA public key will work */ - tmpbuf_len = inlen; - tmpbuf = XCALLOC(1, tmpbuf_len); - if (tmpbuf == NULL) { - err = CRYPT_MEM; - goto LBL_ERR; - } - - err = der_decode_subject_public_key_info(in, inlen, - PKA_RSA, tmpbuf, &tmpbuf_len, - LTC_ASN1_NULL, NULL, 0); - - if (err == CRYPT_OK) { /* SubjectPublicKeyInfo format */ - - /* now it should be SEQUENCE { INTEGER, INTEGER } */ - if ((err = der_decode_sequence_multi(tmpbuf, tmpbuf_len, - LTC_ASN1_INTEGER, 1UL, key->N, - LTC_ASN1_INTEGER, 1UL, key->e, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { - goto LBL_ERR; - } - key->type = PK_PUBLIC; - err = CRYPT_OK; - goto LBL_FREE; - } - - /* not SSL public key, try to match against PKCS #1 standards */ - err = der_decode_sequence_multi(in, inlen, LTC_ASN1_INTEGER, 1UL, key->N, - LTC_ASN1_EOL, 0UL, NULL); - - if (err != CRYPT_OK && err != CRYPT_INPUT_TOO_LONG) { - goto LBL_ERR; - } - - if (mp_cmp_d(key->N, 0) == LTC_MP_EQ) { - if ((err = mp_init(&zero)) != CRYPT_OK) { - goto LBL_ERR; - } - /* it's a private key */ - if ((err = der_decode_sequence_multi(in, inlen, - LTC_ASN1_INTEGER, 1UL, zero, - LTC_ASN1_INTEGER, 1UL, key->N, - LTC_ASN1_INTEGER, 1UL, key->e, - LTC_ASN1_INTEGER, 1UL, key->d, - LTC_ASN1_INTEGER, 1UL, key->p, - LTC_ASN1_INTEGER, 1UL, key->q, - LTC_ASN1_INTEGER, 1UL, key->dP, - LTC_ASN1_INTEGER, 1UL, key->dQ, - LTC_ASN1_INTEGER, 1UL, key->qP, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { - mp_clear(zero); - goto LBL_ERR; - } - mp_clear(zero); - key->type = PK_PRIVATE; - } else if (mp_cmp_d(key->N, 1) == LTC_MP_EQ) { - /* we don't support multi-prime RSA */ - err = CRYPT_PK_INVALID_TYPE; - goto LBL_ERR; - } else { - /* it's a public key and we lack e */ - if ((err = der_decode_sequence_multi(in, inlen, - LTC_ASN1_INTEGER, 1UL, key->N, - LTC_ASN1_INTEGER, 1UL, key->e, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { - goto LBL_ERR; - } - key->type = PK_PUBLIC; - } - err = CRYPT_OK; - goto LBL_FREE; - -LBL_ERR: - mp_clear_multi(key->d, key->e, key->N, key->dQ, key->dP, key->qP, key->p, key->q, NULL); - -LBL_FREE: - if (tmpbuf != NULL) - XFREE(tmpbuf); - - return err; -} - -#endif /* LTC_MRSA */ - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/rsa/rsa_import_pkcs8.c b/src/libtomcrypt/src/pk/rsa/rsa_import_pkcs8.c deleted file mode 100644 index a4747904d7..0000000000 --- a/src/libtomcrypt/src/pk/rsa/rsa_import_pkcs8.c +++ /dev/null @@ -1,153 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file rsa_import_pkcs8.c - Import a PKCS RSA key -*/ - -#ifdef LTC_MRSA - -/* Public-Key Cryptography Standards (PKCS) #8: - * Private-Key Information Syntax Specification Version 1.2 - * https://tools.ietf.org/html/rfc5208 - * - * PrivateKeyInfo ::= SEQUENCE { - * version Version, - * privateKeyAlgorithm PrivateKeyAlgorithmIdentifier, - * privateKey PrivateKey, - * attributes [0] IMPLICIT Attributes OPTIONAL } - * where: - * - Version ::= INTEGER - * - PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier - * - PrivateKey ::= OCTET STRING - * - Attributes ::= SET OF Attribute - * - * EncryptedPrivateKeyInfo ::= SEQUENCE { - * encryptionAlgorithm EncryptionAlgorithmIdentifier, - * encryptedData EncryptedData } - * where: - * - EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier - * - EncryptedData ::= OCTET STRING - */ - -/** - Import an RSAPublicKey or RSAPrivateKey in PKCS#8 format - @param in The packet to import from - @param inlen It's length (octets) - @param passwd The password for decrypting privkey (NOT SUPPORTED YET) - @param passwdlen Password's length (octets) - @param key [out] Destination for newly imported key - @return CRYPT_OK if successful, upon error allocated memory is freed -*/ -int rsa_import_pkcs8(const unsigned char *in, unsigned long inlen, - const void *passwd, unsigned long passwdlen, - rsa_key *key) -{ - int err; - void *zero, *iter; - unsigned char *buf1 = NULL, *buf2 = NULL; - unsigned long buf1len, buf2len; - unsigned long oid[16]; - oid_st rsaoid; - ltc_asn1_list alg_seq[2], top_seq[3]; - ltc_asn1_list alg_seq_e[2], key_seq_e[2], top_seq_e[2]; - unsigned char *decrypted = NULL; - unsigned long decryptedlen; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - /* get RSA alg oid */ - err = pk_get_oid(PKA_RSA, &rsaoid); - if (err != CRYPT_OK) { goto LBL_NOFREE; } - - /* alloc buffers */ - buf1len = inlen; /* approx. */ - buf1 = XMALLOC(buf1len); - if (buf1 == NULL) { err = CRYPT_MEM; goto LBL_NOFREE; } - buf2len = inlen; /* approx. */ - buf2 = XMALLOC(buf2len); - if (buf2 == NULL) { err = CRYPT_MEM; goto LBL_FREE1; } - - /* init key */ - err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, &key->dP, &key->qP, &key->p, &key->q, &zero, &iter, NULL); - if (err != CRYPT_OK) { goto LBL_FREE2; } - - /* try to decode encrypted priv key */ - LTC_SET_ASN1(key_seq_e, 0, LTC_ASN1_OCTET_STRING, buf1, buf1len); - LTC_SET_ASN1(key_seq_e, 1, LTC_ASN1_INTEGER, iter, 1UL); - LTC_SET_ASN1(alg_seq_e, 0, LTC_ASN1_OBJECT_IDENTIFIER, oid, 16UL); - LTC_SET_ASN1(alg_seq_e, 1, LTC_ASN1_SEQUENCE, key_seq_e, 2UL); - LTC_SET_ASN1(top_seq_e, 0, LTC_ASN1_SEQUENCE, alg_seq_e, 2UL); - LTC_SET_ASN1(top_seq_e, 1, LTC_ASN1_OCTET_STRING, buf2, buf2len); - err=der_decode_sequence(in, inlen, top_seq_e, 2UL); - if (err == CRYPT_OK) { - LTC_UNUSED_PARAM(passwd); - LTC_UNUSED_PARAM(passwdlen); - /* XXX: TODO encrypted pkcs8 not implemented yet */ - /* fprintf(stderr, "decrypt: iter=%ld salt.len=%ld encdata.len=%ld\n", mp_get_int(iter), key_seq_e[0].size, top_seq_e[1].size); */ - err = CRYPT_PK_INVALID_TYPE; - goto LBL_ERR; - } - else { - decrypted = (unsigned char *)in; - decryptedlen = inlen; - } - - /* try to decode unencrypted priv key */ - LTC_SET_ASN1(alg_seq, 0, LTC_ASN1_OBJECT_IDENTIFIER, oid, 16UL); - LTC_SET_ASN1(alg_seq, 1, LTC_ASN1_NULL, NULL, 0UL); - LTC_SET_ASN1(top_seq, 0, LTC_ASN1_INTEGER, zero, 1UL); - LTC_SET_ASN1(top_seq, 1, LTC_ASN1_SEQUENCE, alg_seq, 2UL); - LTC_SET_ASN1(top_seq, 2, LTC_ASN1_OCTET_STRING, buf1, buf1len); - err=der_decode_sequence(decrypted, decryptedlen, top_seq, 3UL); - if (err != CRYPT_OK) { goto LBL_ERR; } - - /* check alg oid */ - if ((alg_seq[0].size != rsaoid.OIDlen) || - XMEMCMP(rsaoid.OID, alg_seq[0].data, rsaoid.OIDlen * sizeof(rsaoid.OID[0])) != 0) { - err = CRYPT_PK_INVALID_TYPE; - goto LBL_ERR; - } - - err = der_decode_sequence_multi(buf1, top_seq[2].size, - LTC_ASN1_INTEGER, 1UL, zero, - LTC_ASN1_INTEGER, 1UL, key->N, - LTC_ASN1_INTEGER, 1UL, key->e, - LTC_ASN1_INTEGER, 1UL, key->d, - LTC_ASN1_INTEGER, 1UL, key->p, - LTC_ASN1_INTEGER, 1UL, key->q, - LTC_ASN1_INTEGER, 1UL, key->dP, - LTC_ASN1_INTEGER, 1UL, key->dQ, - LTC_ASN1_INTEGER, 1UL, key->qP, - LTC_ASN1_EOL, 0UL, NULL); - if (err != CRYPT_OK) { goto LBL_ERR; } - key->type = PK_PRIVATE; - err = CRYPT_OK; - goto LBL_FREE2; - -LBL_ERR: - rsa_free(key); -LBL_FREE2: - mp_clear_multi(iter, zero, NULL); - XFREE(buf2); -LBL_FREE1: - XFREE(buf1); -LBL_NOFREE: - return err; -} - -#endif /* LTC_MRSA */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/rsa/rsa_import_x509.c b/src/libtomcrypt/src/pk/rsa/rsa_import_x509.c deleted file mode 100644 index 87993551d7..0000000000 --- a/src/libtomcrypt/src/pk/rsa/rsa_import_x509.c +++ /dev/null @@ -1,118 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file rsa_import.c - Import an RSA key from a X.509 certificate, Steffen Jaeckel -*/ - -#ifdef LTC_MRSA - -/** - Import an RSA key from a X.509 certificate - @param in The packet to import from - @param inlen It's length (octets) - @param key [out] Destination for newly imported key - @return CRYPT_OK if successful, upon error allocated memory is freed -*/ -int rsa_import_x509(const unsigned char *in, unsigned long inlen, rsa_key *key) -{ - int err; - unsigned char *tmpbuf; - unsigned long tmpbuf_len, tmp_inlen; - ltc_asn1_list *decoded_list = NULL, *l; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - /* init key */ - if ((err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, - &key->dP, &key->qP, &key->p, &key->q, NULL)) != CRYPT_OK) { - return err; - } - - tmpbuf_len = inlen; - tmpbuf = XCALLOC(1, tmpbuf_len); - if (tmpbuf == NULL) { - err = CRYPT_MEM; - goto LBL_ERR; - } - - tmp_inlen = inlen; - if ((err = der_decode_sequence_flexi(in, &tmp_inlen, &decoded_list)) == CRYPT_OK) { - l = decoded_list; - /* Move 2 levels up in the tree - SEQUENCE - SEQUENCE - ... - */ - if (l->type == LTC_ASN1_SEQUENCE && l->child) { - l = l->child; - if (l->type == LTC_ASN1_SEQUENCE && l->child) { - l = l->child; - - err = CRYPT_ERROR; - - /* Move forward in the tree until we find this combination - ... - SEQUENCE - SEQUENCE - OBJECT IDENTIFIER 1.2.840.113549.1.1.1 - NULL - BIT STRING - */ - do { - /* The additional check for l->data is there to make sure - * we won't try to decode a list that has been 'shrunk' - */ - if (l->type == LTC_ASN1_SEQUENCE && l->data && l->child && - l->child->type == LTC_ASN1_SEQUENCE && l->child->child && - l->child->child->type == LTC_ASN1_OBJECT_IDENTIFIER && l->child->next && - l->child->next->type == LTC_ASN1_BIT_STRING) { - err = der_decode_subject_public_key_info(l->data, l->size, - PKA_RSA, tmpbuf, &tmpbuf_len, - LTC_ASN1_NULL, NULL, 0); - if (err == CRYPT_OK) { - /* now it should be SEQUENCE { INTEGER, INTEGER } */ - if ((err = der_decode_sequence_multi(tmpbuf, tmpbuf_len, - LTC_ASN1_INTEGER, 1UL, key->N, - LTC_ASN1_INTEGER, 1UL, key->e, - LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { - goto LBL_ERR; - } - key->type = PK_PUBLIC; - err = CRYPT_OK; - goto LBL_FREE; - } - } - l = l->next; - } while(l); - } - } - } - - -LBL_ERR: - rsa_free(key); - -LBL_FREE: - if (decoded_list) der_free_sequence_flexi(decoded_list); - if (tmpbuf != NULL) XFREE(tmpbuf); - - return err; -} - -#endif /* LTC_MRSA */ - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/rsa/rsa_make_key.c b/src/libtomcrypt/src/pk/rsa/rsa_make_key.c deleted file mode 100644 index e07f2c15c5..0000000000 --- a/src/libtomcrypt/src/pk/rsa/rsa_make_key.c +++ /dev/null @@ -1,107 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file rsa_make_key.c - RSA key generation, Tom St Denis -*/ - -#ifdef LTC_MRSA - -/** - Create an RSA key - @param prng An active PRNG state - @param wprng The index of the PRNG desired - @param size The size of the modulus (key size) desired (octets) - @param e The "e" value (public key). e==65537 is a good choice - @param key [out] Destination of a newly created private key pair - @return CRYPT_OK if successful, upon error all allocated ram is freed -*/ -int rsa_make_key(prng_state *prng, int wprng, int size, long e, rsa_key *key) -{ - void *p, *q, *tmp1, *tmp2, *tmp3; - int err; - - LTC_ARGCHK(ltc_mp.name != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(size > 0); - - if ((e < 3) || ((e & 1) == 0)) { - return CRYPT_INVALID_ARG; - } - - if ((err = prng_is_valid(wprng)) != CRYPT_OK) { - return err; - } - - if ((err = mp_init_multi(&p, &q, &tmp1, &tmp2, &tmp3, NULL)) != CRYPT_OK) { - return err; - } - - /* make primes p and q (optimization provided by Wayne Scott) */ - if ((err = mp_set_int(tmp3, e)) != CRYPT_OK) { goto cleanup; } /* tmp3 = e */ - - /* make prime "p" */ - do { - if ((err = rand_prime( p, size/2, prng, wprng)) != CRYPT_OK) { goto cleanup; } - if ((err = mp_sub_d( p, 1, tmp1)) != CRYPT_OK) { goto cleanup; } /* tmp1 = p-1 */ - if ((err = mp_gcd( tmp1, tmp3, tmp2)) != CRYPT_OK) { goto cleanup; } /* tmp2 = gcd(p-1, e) */ - } while (mp_cmp_d( tmp2, 1) != 0); /* while e divides p-1 */ - - /* make prime "q" */ - do { - if ((err = rand_prime( q, size/2, prng, wprng)) != CRYPT_OK) { goto cleanup; } - if ((err = mp_sub_d( q, 1, tmp1)) != CRYPT_OK) { goto cleanup; } /* tmp1 = q-1 */ - if ((err = mp_gcd( tmp1, tmp3, tmp2)) != CRYPT_OK) { goto cleanup; } /* tmp2 = gcd(q-1, e) */ - } while (mp_cmp_d( tmp2, 1) != 0); /* while e divides q-1 */ - - /* tmp1 = lcm(p-1, q-1) */ - if ((err = mp_sub_d( p, 1, tmp2)) != CRYPT_OK) { goto cleanup; } /* tmp2 = p-1 */ - /* tmp1 = q-1 (previous do/while loop) */ - if ((err = mp_lcm( tmp1, tmp2, tmp1)) != CRYPT_OK) { goto cleanup; } /* tmp1 = lcm(p-1, q-1) */ - - /* make key */ - if ((err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, &key->dP, &key->qP, &key->p, &key->q, NULL)) != CRYPT_OK) { - goto errkey; - } - - if ((err = mp_set_int( key->e, e)) != CRYPT_OK) { goto errkey; } /* key->e = e */ - if ((err = mp_invmod( key->e, tmp1, key->d)) != CRYPT_OK) { goto errkey; } /* key->d = 1/e mod lcm(p-1,q-1) */ - if ((err = mp_mul( p, q, key->N)) != CRYPT_OK) { goto errkey; } /* key->N = pq */ - - /* optimize for CRT now */ - /* find d mod q-1 and d mod p-1 */ - if ((err = mp_sub_d( p, 1, tmp1)) != CRYPT_OK) { goto errkey; } /* tmp1 = q-1 */ - if ((err = mp_sub_d( q, 1, tmp2)) != CRYPT_OK) { goto errkey; } /* tmp2 = p-1 */ - if ((err = mp_mod( key->d, tmp1, key->dP)) != CRYPT_OK) { goto errkey; } /* dP = d mod p-1 */ - if ((err = mp_mod( key->d, tmp2, key->dQ)) != CRYPT_OK) { goto errkey; } /* dQ = d mod q-1 */ - if ((err = mp_invmod( q, p, key->qP)) != CRYPT_OK) { goto errkey; } /* qP = 1/q mod p */ - - if ((err = mp_copy( p, key->p)) != CRYPT_OK) { goto errkey; } - if ((err = mp_copy( q, key->q)) != CRYPT_OK) { goto errkey; } - - /* set key type (in this case it's CRT optimized) */ - key->type = PK_PRIVATE; - - /* return ok and free temps */ - err = CRYPT_OK; - goto cleanup; -errkey: - rsa_free(key); -cleanup: - mp_clear_multi(tmp3, tmp2, tmp1, q, p, NULL); - return err; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/rsa/rsa_set.c b/src/libtomcrypt/src/pk/rsa/rsa_set.c deleted file mode 100644 index 4caf389302..0000000000 --- a/src/libtomcrypt/src/pk/rsa/rsa_set.c +++ /dev/null @@ -1,134 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - - -#ifdef LTC_MRSA - -/** - Import RSA key from raw numbers - - @param N RSA's N - @param Nlen RSA's N's length - @param e RSA's e - @param elen RSA's e's length - @param d RSA's d (only private key, NULL for public key) - @param dlen RSA's d's length - @param key [out] the destination for the imported key - @return CRYPT_OK if successful -*/ -int rsa_set_key(const unsigned char *N, unsigned long Nlen, - const unsigned char *e, unsigned long elen, - const unsigned char *d, unsigned long dlen, - rsa_key *key) -{ - int err; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(N != NULL); - LTC_ARGCHK(e != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, &key->dP, &key->qP, &key->p, &key->q, NULL); - if (err != CRYPT_OK) return err; - - if ((err = mp_read_unsigned_bin(key->N , (unsigned char *)N , Nlen)) != CRYPT_OK) { goto LBL_ERR; } - if ((err = mp_read_unsigned_bin(key->e , (unsigned char *)e , elen)) != CRYPT_OK) { goto LBL_ERR; } - if (d && dlen) { - if ((err = mp_read_unsigned_bin(key->d , (unsigned char *)d , dlen)) != CRYPT_OK) { goto LBL_ERR; } - key->type = PK_PRIVATE; - } - else { - key->type = PK_PUBLIC; - } - return CRYPT_OK; - -LBL_ERR: - rsa_free(key); - return err; -} - -/** - Import factors of an RSA key from raw numbers - - Only for private keys. - - @param p RSA's p - @param plen RSA's p's length - @param q RSA's q - @param qlen RSA's q's length - @param key [out] the destination for the imported key - @return CRYPT_OK if successful -*/ -int rsa_set_factors(const unsigned char *p, unsigned long plen, - const unsigned char *q, unsigned long qlen, - rsa_key *key) -{ - int err; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(p != NULL); - LTC_ARGCHK(q != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - if (key->type != PK_PRIVATE) return CRYPT_PK_TYPE_MISMATCH; - - if ((err = mp_read_unsigned_bin(key->p , (unsigned char *)p , plen)) != CRYPT_OK) { goto LBL_ERR; } - if ((err = mp_read_unsigned_bin(key->q , (unsigned char *)q , qlen)) != CRYPT_OK) { goto LBL_ERR; } - return CRYPT_OK; - -LBL_ERR: - rsa_free(key); - return err; -} - -/** - Import CRT parameters of an RSA key from raw numbers - - Only for private keys. - - @param dP RSA's dP - @param dPlen RSA's dP's length - @param dQ RSA's dQ - @param dQlen RSA's dQ's length - @param qP RSA's qP - @param qPlen RSA's qP's length - @param key [out] the destination for the imported key - @return CRYPT_OK if successful -*/ -int rsa_set_crt_params(const unsigned char *dP, unsigned long dPlen, - const unsigned char *dQ, unsigned long dQlen, - const unsigned char *qP, unsigned long qPlen, - rsa_key *key) -{ - int err; - - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(dP != NULL); - LTC_ARGCHK(dQ != NULL); - LTC_ARGCHK(qP != NULL); - LTC_ARGCHK(ltc_mp.name != NULL); - - if (key->type != PK_PRIVATE) return CRYPT_PK_TYPE_MISMATCH; - - if ((err = mp_read_unsigned_bin(key->dP, (unsigned char *)dP, dPlen)) != CRYPT_OK) { goto LBL_ERR; } - if ((err = mp_read_unsigned_bin(key->dQ, (unsigned char *)dQ, dQlen)) != CRYPT_OK) { goto LBL_ERR; } - if ((err = mp_read_unsigned_bin(key->qP, (unsigned char *)qP, qPlen)) != CRYPT_OK) { goto LBL_ERR; } - return CRYPT_OK; - -LBL_ERR: - rsa_free(key); - return err; -} - -#endif /* LTC_MRSA */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/rsa/rsa_sign_hash.c b/src/libtomcrypt/src/pk/rsa/rsa_sign_hash.c deleted file mode 100644 index 79e6a77846..0000000000 --- a/src/libtomcrypt/src/pk/rsa/rsa_sign_hash.c +++ /dev/null @@ -1,146 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file rsa_sign_hash.c - RSA PKCS #1 v1.5 and v2 PSS sign hash, Tom St Denis and Andreas Lange -*/ - -#ifdef LTC_MRSA - -/** - PKCS #1 pad then sign - @param in The hash to sign - @param inlen The length of the hash to sign (octets) - @param out [out] The signature - @param outlen [in/out] The max size and resulting size of the signature - @param padding Type of padding (LTC_PKCS_1_PSS, LTC_PKCS_1_V1_5 or LTC_PKCS_1_V1_5_NA1) - @param prng An active PRNG state - @param prng_idx The index of the PRNG desired - @param hash_idx The index of the hash desired - @param saltlen The length of the salt desired (octets) - @param key The private RSA key to use - @return CRYPT_OK if successful -*/ -int rsa_sign_hash_ex(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - int padding, - prng_state *prng, int prng_idx, - int hash_idx, unsigned long saltlen, - rsa_key *key) -{ - unsigned long modulus_bitlen, modulus_bytelen, x, y; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - /* valid padding? */ - if ((padding != LTC_PKCS_1_V1_5) && - (padding != LTC_PKCS_1_PSS) && - (padding != LTC_PKCS_1_V1_5_NA1)) { - return CRYPT_PK_INVALID_PADDING; - } - - if (padding == LTC_PKCS_1_PSS) { - /* valid prng ? */ - if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) { - return err; - } - } - - if (padding != LTC_PKCS_1_V1_5_NA1) { - /* valid hash ? */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - } - - /* get modulus len in bits */ - modulus_bitlen = mp_count_bits((key->N)); - - /* outlen must be at least the size of the modulus */ - modulus_bytelen = mp_unsigned_bin_size((key->N)); - if (modulus_bytelen > *outlen) { - *outlen = modulus_bytelen; - return CRYPT_BUFFER_OVERFLOW; - } - - if (padding == LTC_PKCS_1_PSS) { - /* PSS pad the key */ - x = *outlen; - if ((err = pkcs_1_pss_encode(in, inlen, saltlen, prng, prng_idx, - hash_idx, modulus_bitlen, out, &x)) != CRYPT_OK) { - return err; - } - } else { - /* PKCS #1 v1.5 pad the hash */ - unsigned char *tmpin; - - if (padding == LTC_PKCS_1_V1_5) { - ltc_asn1_list digestinfo[2], siginfo[2]; - /* not all hashes have OIDs... so sad */ - if (hash_descriptor[hash_idx].OIDlen == 0) { - return CRYPT_INVALID_ARG; - } - - /* construct the SEQUENCE - SEQUENCE { - SEQUENCE {hashoid OID - blah NULL - } - hash OCTET STRING - } - */ - LTC_SET_ASN1(digestinfo, 0, LTC_ASN1_OBJECT_IDENTIFIER, hash_descriptor[hash_idx].OID, hash_descriptor[hash_idx].OIDlen); - LTC_SET_ASN1(digestinfo, 1, LTC_ASN1_NULL, NULL, 0); - LTC_SET_ASN1(siginfo, 0, LTC_ASN1_SEQUENCE, digestinfo, 2); - LTC_SET_ASN1(siginfo, 1, LTC_ASN1_OCTET_STRING, in, inlen); - - /* allocate memory for the encoding */ - y = mp_unsigned_bin_size(key->N); - tmpin = XMALLOC(y); - if (tmpin == NULL) { - return CRYPT_MEM; - } - - if ((err = der_encode_sequence(siginfo, 2, tmpin, &y)) != CRYPT_OK) { - XFREE(tmpin); - return err; - } - } else { - /* set the pointer and data-length to the input values */ - tmpin = (unsigned char *)in; - y = inlen; - } - - x = *outlen; - err = pkcs_1_v1_5_encode(tmpin, y, LTC_PKCS_1_EMSA, modulus_bitlen, NULL, 0, out, &x); - - if (padding == LTC_PKCS_1_V1_5) { - XFREE(tmpin); - } - - if (err != CRYPT_OK) { - return err; - } - } - - /* RSA encode it */ - return ltc_mp.rsa_me(out, x, out, outlen, PK_PRIVATE, key); -} - -#endif /* LTC_MRSA */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/rsa/rsa_sign_saltlen_get.c b/src/libtomcrypt/src/pk/rsa/rsa_sign_saltlen_get.c deleted file mode 100644 index 7009d5fac7..0000000000 --- a/src/libtomcrypt/src/pk/rsa/rsa_sign_saltlen_get.c +++ /dev/null @@ -1,47 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file rsa_sign_saltlen_get.c - Retrieve the maximum size of the salt, Steffen Jaeckel. -*/ - -#ifdef LTC_MRSA - -/** - Retrieve the maximum possible size of the salt when creating a PKCS#1 PSS signature. - @param padding Type of padding (LTC_PKCS_1_PSS only) - @param hash_idx The index of the desired hash - @param key The RSA key - @return The maximum salt length in bytes or INT_MAX on error. -*/ -int rsa_sign_saltlen_get_max_ex(int padding, int hash_idx, rsa_key *key) -{ - int ret = INT_MAX; - LTC_ARGCHK(key != NULL); - - if ((hash_is_valid(hash_idx) == CRYPT_OK) && - (padding == LTC_PKCS_1_PSS)) - { - ret = rsa_get_size(key); - if (ret < INT_MAX) - { - ret -= (hash_descriptor[hash_idx].hashsize + 2); - } /* if */ - } /* if */ - - return ret; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/pk/rsa/rsa_verify_hash.c b/src/libtomcrypt/src/pk/rsa/rsa_verify_hash.c deleted file mode 100644 index 51a0398409..0000000000 --- a/src/libtomcrypt/src/pk/rsa/rsa_verify_hash.c +++ /dev/null @@ -1,193 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file rsa_verify_hash.c - RSA PKCS #1 v1.5 or v2 PSS signature verification, Tom St Denis and Andreas Lange -*/ - -#ifdef LTC_MRSA - -/** - PKCS #1 de-sign then v1.5 or PSS depad - @param sig The signature data - @param siglen The length of the signature data (octets) - @param hash The hash of the message that was signed - @param hashlen The length of the hash of the message that was signed (octets) - @param padding Type of padding (LTC_PKCS_1_PSS, LTC_PKCS_1_V1_5 or LTC_PKCS_1_V1_5_NA1) - @param hash_idx The index of the desired hash - @param saltlen The length of the salt used during signature - @param stat [out] The result of the signature comparison, 1==valid, 0==invalid - @param key The public RSA key corresponding to the key that performed the signature - @return CRYPT_OK on success (even if the signature is invalid) -*/ -int rsa_verify_hash_ex(const unsigned char *sig, unsigned long siglen, - const unsigned char *hash, unsigned long hashlen, - int padding, - int hash_idx, unsigned long saltlen, - int *stat, rsa_key *key) -{ - unsigned long modulus_bitlen, modulus_bytelen, x; - int err; - unsigned char *tmpbuf; - - LTC_ARGCHK(hash != NULL); - LTC_ARGCHK(sig != NULL); - LTC_ARGCHK(stat != NULL); - LTC_ARGCHK(key != NULL); - - /* default to invalid */ - *stat = 0; - - /* valid padding? */ - - if ((padding != LTC_PKCS_1_V1_5) && - (padding != LTC_PKCS_1_PSS) && - (padding != LTC_PKCS_1_V1_5_NA1)) { - return CRYPT_PK_INVALID_PADDING; - } - - if (padding != LTC_PKCS_1_V1_5_NA1) { - /* valid hash ? */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - } - - /* get modulus len in bits */ - modulus_bitlen = mp_count_bits( (key->N)); - - /* outlen must be at least the size of the modulus */ - modulus_bytelen = mp_unsigned_bin_size( (key->N)); - if (modulus_bytelen != siglen) { - return CRYPT_INVALID_PACKET; - } - - /* allocate temp buffer for decoded sig */ - tmpbuf = XMALLOC(siglen); - if (tmpbuf == NULL) { - return CRYPT_MEM; - } - - /* RSA decode it */ - x = siglen; - if ((err = ltc_mp.rsa_me(sig, siglen, tmpbuf, &x, PK_PUBLIC, key)) != CRYPT_OK) { - XFREE(tmpbuf); - return err; - } - - /* make sure the output is the right size */ - if (x != siglen) { - XFREE(tmpbuf); - return CRYPT_INVALID_PACKET; - } - - if (padding == LTC_PKCS_1_PSS) { - /* PSS decode and verify it */ - - if(modulus_bitlen%8 == 1){ - err = pkcs_1_pss_decode(hash, hashlen, tmpbuf+1, x-1, saltlen, hash_idx, modulus_bitlen, stat); - } - else{ - err = pkcs_1_pss_decode(hash, hashlen, tmpbuf, x, saltlen, hash_idx, modulus_bitlen, stat); - } - - } else { - /* PKCS #1 v1.5 decode it */ - unsigned char *out; - unsigned long outlen; - int decoded; - - /* allocate temp buffer for decoded hash */ - outlen = ((modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0)) - 3; - out = XMALLOC(outlen); - if (out == NULL) { - err = CRYPT_MEM; - goto bail_2; - } - - if ((err = pkcs_1_v1_5_decode(tmpbuf, x, LTC_PKCS_1_EMSA, modulus_bitlen, out, &outlen, &decoded)) != CRYPT_OK) { - XFREE(out); - goto bail_2; - } - - if (padding == LTC_PKCS_1_V1_5) { - unsigned long loid[16], reallen; - ltc_asn1_list digestinfo[2], siginfo[2]; - - /* not all hashes have OIDs... so sad */ - if (hash_descriptor[hash_idx].OIDlen == 0) { - err = CRYPT_INVALID_ARG; - goto bail_2; - } - - /* now we must decode out[0...outlen-1] using ASN.1, test the OID and then test the hash */ - /* construct the SEQUENCE - SEQUENCE { - SEQUENCE {hashoid OID - blah NULL - } - hash OCTET STRING - } - */ - LTC_SET_ASN1(digestinfo, 0, LTC_ASN1_OBJECT_IDENTIFIER, loid, sizeof(loid)/sizeof(loid[0])); - LTC_SET_ASN1(digestinfo, 1, LTC_ASN1_NULL, NULL, 0); - LTC_SET_ASN1(siginfo, 0, LTC_ASN1_SEQUENCE, digestinfo, 2); - LTC_SET_ASN1(siginfo, 1, LTC_ASN1_OCTET_STRING, tmpbuf, siglen); - - if ((err = der_decode_sequence(out, outlen, siginfo, 2)) != CRYPT_OK) { - /* fallback to Legacy:missing NULL */ - LTC_SET_ASN1(siginfo, 0, LTC_ASN1_SEQUENCE, digestinfo, 1); - if ((err = der_decode_sequence(out, outlen, siginfo, 2)) != CRYPT_OK) { - XFREE(out); - goto bail_2; - } - } - - if ((err = der_length_sequence(siginfo, 2, &reallen)) != CRYPT_OK) { - XFREE(out); - goto bail_2; - } - - /* test OID */ - if ((reallen == outlen) && - (digestinfo[0].size == hash_descriptor[hash_idx].OIDlen) && - (XMEMCMP(digestinfo[0].data, hash_descriptor[hash_idx].OID, sizeof(unsigned long) * hash_descriptor[hash_idx].OIDlen) == 0) && - (siginfo[1].size == hashlen) && - (XMEMCMP(siginfo[1].data, hash, hashlen) == 0)) { - *stat = 1; - } - } else { - /* only check if the hash is equal */ - if ((hashlen == outlen) && - (XMEMCMP(out, hash, hashlen) == 0)) { - *stat = 1; - } - } - -#ifdef LTC_CLEAN_STACK - zeromem(out, outlen); -#endif - XFREE(out); - } - -bail_2: -#ifdef LTC_CLEAN_STACK - zeromem(tmpbuf, siglen); -#endif - XFREE(tmpbuf); - return err; -} - -#endif /* LTC_MRSA */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/prngs/chacha20.c b/src/libtomcrypt/src/prngs/chacha20.c deleted file mode 100644 index d7a3633ba2..0000000000 --- a/src/libtomcrypt/src/prngs/chacha20.c +++ /dev/null @@ -1,247 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - - /* the idea of re-keying loosely follows the approach used in: - * http://bxr.su/OpenBSD/lib/libc/crypt/arc4random.c - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA20_PRNG - -const struct ltc_prng_descriptor chacha20_prng_desc = -{ - "chacha20", - 40, - &chacha20_prng_start, - &chacha20_prng_add_entropy, - &chacha20_prng_ready, - &chacha20_prng_read, - &chacha20_prng_done, - &chacha20_prng_export, - &chacha20_prng_import, - &chacha20_prng_test -}; - -/** - Start the PRNG - @param prng The PRNG state to initialize - @return CRYPT_OK if successful -*/ -int chacha20_prng_start(prng_state *prng) -{ - LTC_ARGCHK(prng != NULL); - prng->ready = 0; - XMEMSET(&prng->chacha.ent, 0, sizeof(prng->chacha.ent)); - prng->chacha.idx = 0; - LTC_MUTEX_INIT(&prng->lock) - return CRYPT_OK; -} - -/** - Add entropy to the PRNG state - @param in The data to add - @param inlen Length of the data to add - @param prng PRNG state to update - @return CRYPT_OK if successful -*/ -int chacha20_prng_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng) -{ - unsigned char buf[40]; - unsigned long i; - int err; - - LTC_ARGCHK(prng != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(inlen > 0); - - LTC_MUTEX_LOCK(&prng->lock); - if (prng->ready) { - /* chacha20_prng_ready() was already called, do "rekey" operation */ - if ((err = chacha_keystream(&prng->chacha.s, buf, sizeof(buf))) != CRYPT_OK) goto LBL_UNLOCK; - for(i = 0; i < inlen; i++) buf[i % sizeof(buf)] ^= in[i]; - /* key 32 bytes, 20 rounds */ - if ((err = chacha_setup(&prng->chacha.s, buf, 32, 20)) != CRYPT_OK) goto LBL_UNLOCK; - /* iv 8 bytes */ - if ((err = chacha_ivctr64(&prng->chacha.s, buf + 32, 8, 0)) != CRYPT_OK) goto LBL_UNLOCK; - /* clear KEY + IV */ - zeromem(buf, sizeof(buf)); - } - else { - /* chacha20_prng_ready() was not called yet, add entropy to ent buffer */ - while (inlen--) prng->chacha.ent[prng->chacha.idx++ % sizeof(prng->chacha.ent)] ^= *in++; - } - err = CRYPT_OK; -LBL_UNLOCK: - LTC_MUTEX_UNLOCK(&prng->lock); - return err; -} - -/** - Make the PRNG ready to read from - @param prng The PRNG to make active - @return CRYPT_OK if successful -*/ -int chacha20_prng_ready(prng_state *prng) -{ - int err; - - LTC_ARGCHK(prng != NULL); - - LTC_MUTEX_LOCK(&prng->lock); - if (prng->ready) { err = CRYPT_OK; goto LBL_UNLOCK; } - /* key 32 bytes, 20 rounds */ - if ((err = chacha_setup(&prng->chacha.s, prng->chacha.ent, 32, 20)) != CRYPT_OK) goto LBL_UNLOCK; - /* iv 8 bytes */ - if ((err = chacha_ivctr64(&prng->chacha.s, prng->chacha.ent + 32, 8, 0)) != CRYPT_OK) goto LBL_UNLOCK; - XMEMSET(&prng->chacha.ent, 0, sizeof(prng->chacha.ent)); - prng->chacha.idx = 0; - prng->ready = 1; -LBL_UNLOCK: - LTC_MUTEX_UNLOCK(&prng->lock); - return err; -} - -/** - Read from the PRNG - @param out Destination - @param outlen Length of output - @param prng The active PRNG to read from - @return Number of octets read -*/ -unsigned long chacha20_prng_read(unsigned char *out, unsigned long outlen, prng_state *prng) -{ - if (outlen == 0 || prng == NULL || out == NULL) return 0; - LTC_MUTEX_LOCK(&prng->lock); - if (!prng->ready) { outlen = 0; goto LBL_UNLOCK; } - if (chacha_keystream(&prng->chacha.s, out, outlen) != CRYPT_OK) outlen = 0; -LBL_UNLOCK: - LTC_MUTEX_UNLOCK(&prng->lock); - return outlen; -} - -/** - Terminate the PRNG - @param prng The PRNG to terminate - @return CRYPT_OK if successful -*/ -int chacha20_prng_done(prng_state *prng) -{ - int err; - LTC_ARGCHK(prng != NULL); - LTC_MUTEX_LOCK(&prng->lock); - prng->ready = 0; - err = chacha_done(&prng->chacha.s); - LTC_MUTEX_UNLOCK(&prng->lock); - LTC_MUTEX_DESTROY(&prng->lock); - return err; -} - -/** - Export the PRNG state - @param out [out] Destination - @param outlen [in/out] Max size and resulting size of the state - @param prng The PRNG to export - @return CRYPT_OK if successful -*/ -int chacha20_prng_export(unsigned char *out, unsigned long *outlen, prng_state *prng) -{ - unsigned long len = chacha20_prng_desc.export_size; - - LTC_ARGCHK(prng != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - if (*outlen < len) { - *outlen = len; - return CRYPT_BUFFER_OVERFLOW; - } - - if (chacha20_prng_read(out, len, prng) != len) { - return CRYPT_ERROR_READPRNG; - } - - *outlen = len; - return CRYPT_OK; -} - -/** - Import a PRNG state - @param in The PRNG state - @param inlen Size of the state - @param prng The PRNG to import - @return CRYPT_OK if successful -*/ -int chacha20_prng_import(const unsigned char *in, unsigned long inlen, prng_state *prng) -{ - int err; - - LTC_ARGCHK(prng != NULL); - LTC_ARGCHK(in != NULL); - if (inlen < (unsigned long)chacha20_prng_desc.export_size) return CRYPT_INVALID_ARG; - - if ((err = chacha20_prng_start(prng)) != CRYPT_OK) return err; - if ((err = chacha20_prng_add_entropy(in, inlen, prng)) != CRYPT_OK) return err; - return CRYPT_OK; -} - -/** - PRNG self-test - @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled -*/ -int chacha20_prng_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - prng_state st; - unsigned char en[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, - 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, - 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, - 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, - 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32 }; - unsigned char dmp[300]; - unsigned long dmplen = sizeof(dmp); - unsigned char out[500]; - unsigned char t1[] = { 0x59, 0xB2, 0x26, 0x95, 0x2B, 0x01, 0x8F, 0x05, 0xBE, 0xD8 }; - unsigned char t2[] = { 0x47, 0xC9, 0x0D, 0x03, 0xE4, 0x75, 0x34, 0x27, 0xBD, 0xDE }; - unsigned char t3[] = { 0xBC, 0xFA, 0xEF, 0x59, 0x37, 0x7F, 0x1A, 0x91, 0x1A, 0xA6 }; - int err; - - if ((err = chacha20_prng_start(&st)) != CRYPT_OK) return err; - /* add entropy to uninitialized prng */ - if ((err = chacha20_prng_add_entropy(en, sizeof(en), &st)) != CRYPT_OK) return err; - if ((err = chacha20_prng_ready(&st)) != CRYPT_OK) return err; - if (chacha20_prng_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ - if (compare_testvector(out, 10, t1, sizeof(t1), "CHACHA-PRNG", 1)) return CRYPT_FAIL_TESTVECTOR; - if (chacha20_prng_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ - /* add entropy to already initialized prng */ - if ((err = chacha20_prng_add_entropy(en, sizeof(en), &st)) != CRYPT_OK) return err; - if (chacha20_prng_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ - if ((err = chacha20_prng_export(dmp, &dmplen, &st)) != CRYPT_OK) return err; - if (chacha20_prng_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ - if (chacha20_prng_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ - if (compare_testvector(out, 10, t2, sizeof(t2), "CHACHA-PRNG", 2)) return CRYPT_FAIL_TESTVECTOR; - if ((err = chacha20_prng_done(&st)) != CRYPT_OK) return err; - if ((err = chacha20_prng_import(dmp, dmplen, &st)) != CRYPT_OK) return err; - if ((err = chacha20_prng_ready(&st)) != CRYPT_OK) return err; - if (chacha20_prng_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ - if (chacha20_prng_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ - if (compare_testvector(out, 10, t3, sizeof(t3), "CHACHA-PRNG", 3)) return CRYPT_FAIL_TESTVECTOR; - if ((err = chacha20_prng_done(&st)) != CRYPT_OK) return err; - - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/prngs/fortuna.c b/src/libtomcrypt/src/prngs/fortuna.c deleted file mode 100644 index 02b8244b2f..0000000000 --- a/src/libtomcrypt/src/prngs/fortuna.c +++ /dev/null @@ -1,498 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file fortuna.c - Fortuna PRNG, Tom St Denis -*/ - -/* Implementation of Fortuna by Tom St Denis - -We deviate slightly here for reasons of simplicity [and to fit in the API]. First all "sources" -in the AddEntropy function are fixed to 0. Second since no reliable timer is provided -we reseed automatically when len(pool0) >= 64 or every LTC_FORTUNA_WD calls to the read function */ - -#ifdef LTC_FORTUNA - -/* requries LTC_SHA256 and AES */ -#if !(defined(LTC_RIJNDAEL) && defined(LTC_SHA256)) - #error LTC_FORTUNA requires LTC_SHA256 and LTC_RIJNDAEL (AES) -#endif - -#ifndef LTC_FORTUNA_POOLS - #warning LTC_FORTUNA_POOLS was not previously defined (old headers?) - #define LTC_FORTUNA_POOLS 32 -#endif - -#if LTC_FORTUNA_POOLS < 4 || LTC_FORTUNA_POOLS > 32 - #error LTC_FORTUNA_POOLS must be in [4..32] -#endif - -const struct ltc_prng_descriptor fortuna_desc = { - "fortuna", - (32 * LTC_FORTUNA_POOLS), /* default: 1024 */ - &fortuna_start, - &fortuna_add_entropy, - &fortuna_ready, - &fortuna_read, - &fortuna_done, - &fortuna_export, - &fortuna_import, - &fortuna_test -}; - -/* update the IV */ -static void _fortuna_update_iv(prng_state *prng) -{ - int x; - unsigned char *IV; - /* update IV */ - IV = prng->fortuna.IV; - for (x = 0; x < 16; x++) { - IV[x] = (IV[x] + 1) & 255; - if (IV[x] != 0) break; - } -} - -/* reseed the PRNG */ -static int _fortuna_reseed(prng_state *prng) -{ - unsigned char tmp[MAXBLOCKSIZE]; - hash_state md; - ulong64 reset_cnt; - int err, x; - - - /* new K == LTC_SHA256(K || s) where s == LTC_SHA256(P0) || LTC_SHA256(P1) ... */ - sha256_init(&md); - if ((err = sha256_process(&md, prng->fortuna.K, 32)) != CRYPT_OK) { - sha256_done(&md, tmp); - return err; - } - - reset_cnt = prng->fortuna.reset_cnt + 1; - - for (x = 0; x < LTC_FORTUNA_POOLS; x++) { - if (x == 0 || ((reset_cnt >> (x-1)) & 1) == 0) { - /* terminate this hash */ - if ((err = sha256_done(&prng->fortuna.pool[x], tmp)) != CRYPT_OK) { - sha256_done(&md, tmp); - return err; - } - /* add it to the string */ - if ((err = sha256_process(&md, tmp, 32)) != CRYPT_OK) { - sha256_done(&md, tmp); - return err; - } - /* reset this pool */ - if ((err = sha256_init(&prng->fortuna.pool[x])) != CRYPT_OK) { - sha256_done(&md, tmp); - return err; - } - } else { - break; - } - } - - /* finish key */ - if ((err = sha256_done(&md, prng->fortuna.K)) != CRYPT_OK) { - return err; - } - if ((err = rijndael_setup(prng->fortuna.K, 32, 0, &prng->fortuna.skey)) != CRYPT_OK) { - return err; - } - _fortuna_update_iv(prng); - - /* reset/update internals */ - prng->fortuna.pool0_len = 0; - prng->fortuna.wd = 0; - prng->fortuna.reset_cnt = reset_cnt; - - -#ifdef LTC_CLEAN_STACK - zeromem(&md, sizeof(md)); - zeromem(tmp, sizeof(tmp)); -#endif - - return CRYPT_OK; -} - -/** - "Update Seed File"-compliant update of K - - @param in The PRNG state - @param inlen Size of the state - @param prng The PRNG to import - @return CRYPT_OK if successful -*/ -static int _fortuna_update_seed(const unsigned char *in, unsigned long inlen, prng_state *prng) -{ - int err; - unsigned char tmp[MAXBLOCKSIZE]; - hash_state md; - - LTC_MUTEX_LOCK(&prng->lock); - /* new K = LTC_SHA256(K || in) */ - sha256_init(&md); - if ((err = sha256_process(&md, prng->fortuna.K, 32)) != CRYPT_OK) { - sha256_done(&md, tmp); - goto LBL_UNLOCK; - } - if ((err = sha256_process(&md, in, inlen)) != CRYPT_OK) { - sha256_done(&md, tmp); - goto LBL_UNLOCK; - } - /* finish key */ - if ((err = sha256_done(&md, prng->fortuna.K)) != CRYPT_OK) { - goto LBL_UNLOCK; - } - _fortuna_update_iv(prng); - -LBL_UNLOCK: - LTC_MUTEX_UNLOCK(&prng->lock); -#ifdef LTC_CLEAN_STACK - zeromem(&md, sizeof(md)); -#endif - - return err; -} - -/** - Start the PRNG - @param prng [out] The PRNG state to initialize - @return CRYPT_OK if successful -*/ -int fortuna_start(prng_state *prng) -{ - int err, x, y; - unsigned char tmp[MAXBLOCKSIZE]; - - LTC_ARGCHK(prng != NULL); - prng->ready = 0; - - /* initialize the pools */ - for (x = 0; x < LTC_FORTUNA_POOLS; x++) { - if ((err = sha256_init(&prng->fortuna.pool[x])) != CRYPT_OK) { - for (y = 0; y < x; y++) { - sha256_done(&prng->fortuna.pool[y], tmp); - } - return err; - } - } - prng->fortuna.pool_idx = prng->fortuna.pool0_len = prng->fortuna.wd = 0; - prng->fortuna.reset_cnt = 0; - - /* reset bufs */ - zeromem(prng->fortuna.K, 32); - if ((err = rijndael_setup(prng->fortuna.K, 32, 0, &prng->fortuna.skey)) != CRYPT_OK) { - for (x = 0; x < LTC_FORTUNA_POOLS; x++) { - sha256_done(&prng->fortuna.pool[x], tmp); - } - return err; - } - zeromem(prng->fortuna.IV, 16); - - LTC_MUTEX_INIT(&prng->lock) - - return CRYPT_OK; -} - -/** - Add entropy to the PRNG state - @param in The data to add - @param inlen Length of the data to add - @param prng PRNG state to update - @return CRYPT_OK if successful -*/ -int fortuna_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng) -{ - unsigned char tmp[2]; - int err; - - LTC_ARGCHK(prng != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(inlen > 0); - - /* ensure inlen <= 32 */ - if (inlen > 32) { - inlen = 32; - } - - /* add s || length(in) || in to pool[pool_idx] */ - tmp[0] = 0; - tmp[1] = (unsigned char)inlen; - - LTC_MUTEX_LOCK(&prng->lock); - if ((err = sha256_process(&prng->fortuna.pool[prng->fortuna.pool_idx], tmp, 2)) != CRYPT_OK) { - goto LBL_UNLOCK; - } - if ((err = sha256_process(&prng->fortuna.pool[prng->fortuna.pool_idx], in, inlen)) != CRYPT_OK) { - goto LBL_UNLOCK; - } - if (prng->fortuna.pool_idx == 0) { - prng->fortuna.pool0_len += inlen; - } - if (++(prng->fortuna.pool_idx) == LTC_FORTUNA_POOLS) { - prng->fortuna.pool_idx = 0; - } - err = CRYPT_OK; /* success */ - -LBL_UNLOCK: - LTC_MUTEX_UNLOCK(&prng->lock); - return err; -} - -/** - Make the PRNG ready to read from - @param prng The PRNG to make active - @return CRYPT_OK if successful -*/ -int fortuna_ready(prng_state *prng) -{ - int err; - LTC_ARGCHK(prng != NULL); - - LTC_MUTEX_LOCK(&prng->lock); - err = _fortuna_reseed(prng); - prng->ready = (err == CRYPT_OK) ? 1 : 0; - - LTC_MUTEX_UNLOCK(&prng->lock); - return err; -} - -/** - Read from the PRNG - @param out Destination - @param outlen Length of output - @param prng The active PRNG to read from - @return Number of octets read -*/ -unsigned long fortuna_read(unsigned char *out, unsigned long outlen, prng_state *prng) -{ - unsigned char tmp[16]; - unsigned long tlen = 0; - - if (outlen == 0 || prng == NULL || out == NULL) return 0; - - LTC_MUTEX_LOCK(&prng->lock); - - if (!prng->ready) { - goto LBL_UNLOCK; - } - - /* do we have to reseed? */ - if ((++prng->fortuna.wd == LTC_FORTUNA_WD) && (prng->fortuna.pool0_len >= 64)) { - if (_fortuna_reseed(prng) != CRYPT_OK) { - goto LBL_UNLOCK; - } - } - - /* ensure that one reseed happened before allowing to read */ - if (prng->fortuna.reset_cnt == 0) { - goto LBL_UNLOCK; - } - - /* now generate the blocks required */ - tlen = outlen; - - /* handle whole blocks without the extra XMEMCPY */ - while (outlen >= 16) { - /* encrypt the IV and store it */ - rijndael_ecb_encrypt(prng->fortuna.IV, out, &prng->fortuna.skey); - out += 16; - outlen -= 16; - _fortuna_update_iv(prng); - } - - /* left over bytes? */ - if (outlen > 0) { - rijndael_ecb_encrypt(prng->fortuna.IV, tmp, &prng->fortuna.skey); - XMEMCPY(out, tmp, outlen); - _fortuna_update_iv(prng); - } - - /* generate new key */ - rijndael_ecb_encrypt(prng->fortuna.IV, prng->fortuna.K , &prng->fortuna.skey); - _fortuna_update_iv(prng); - - rijndael_ecb_encrypt(prng->fortuna.IV, prng->fortuna.K+16, &prng->fortuna.skey); - _fortuna_update_iv(prng); - - if (rijndael_setup(prng->fortuna.K, 32, 0, &prng->fortuna.skey) != CRYPT_OK) { - tlen = 0; - } - -LBL_UNLOCK: -#ifdef LTC_CLEAN_STACK - zeromem(tmp, sizeof(tmp)); -#endif - LTC_MUTEX_UNLOCK(&prng->lock); - return tlen; -} - -/** - Terminate the PRNG - @param prng The PRNG to terminate - @return CRYPT_OK if successful -*/ -int fortuna_done(prng_state *prng) -{ - int err, x; - unsigned char tmp[32]; - - LTC_ARGCHK(prng != NULL); - - LTC_MUTEX_LOCK(&prng->lock); - prng->ready = 0; - - /* terminate all the hashes */ - for (x = 0; x < LTC_FORTUNA_POOLS; x++) { - if ((err = sha256_done(&(prng->fortuna.pool[x]), tmp)) != CRYPT_OK) { - goto LBL_UNLOCK; - } - } - /* call cipher done when we invent one ;-) */ - err = CRYPT_OK; /* success */ - -LBL_UNLOCK: -#ifdef LTC_CLEAN_STACK - zeromem(tmp, sizeof(tmp)); -#endif - LTC_MUTEX_UNLOCK(&prng->lock); - LTC_MUTEX_DESTROY(&prng->lock); - return err; -} - -/** - Export the PRNG state - @param out [out] Destination - @param outlen [in/out] Max size and resulting size of the state - @param prng The PRNG to export - @return CRYPT_OK if successful -*/ -int fortuna_export(unsigned char *out, unsigned long *outlen, prng_state *prng) -{ - int x, err; - hash_state *md; - unsigned long len = fortuna_desc.export_size; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(prng != NULL); - - LTC_MUTEX_LOCK(&prng->lock); - - if (!prng->ready) { - err = CRYPT_ERROR; - goto LBL_UNLOCK; - } - - /* we'll write bytes for s&g's */ - if (*outlen < len) { - *outlen = len; - err = CRYPT_BUFFER_OVERFLOW; - goto LBL_UNLOCK; - } - - md = XMALLOC(sizeof(hash_state)); - if (md == NULL) { - err = CRYPT_MEM; - goto LBL_UNLOCK; - } - - /* to emit the state we copy each pool, terminate it then hash it again so - * an attacker who sees the state can't determine the current state of the PRNG - */ - for (x = 0; x < LTC_FORTUNA_POOLS; x++) { - /* copy the PRNG */ - XMEMCPY(md, &(prng->fortuna.pool[x]), sizeof(*md)); - - /* terminate it */ - if ((err = sha256_done(md, out+x*32)) != CRYPT_OK) { - goto LBL_ERR; - } - - /* now hash it */ - if ((err = sha256_init(md)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = sha256_process(md, out+x*32, 32)) != CRYPT_OK) { - goto LBL_ERR; - } - if ((err = sha256_done(md, out+x*32)) != CRYPT_OK) { - goto LBL_ERR; - } - } - *outlen = len; - err = CRYPT_OK; - -LBL_ERR: -#ifdef LTC_CLEAN_STACK - zeromem(md, sizeof(*md)); -#endif - XFREE(md); -LBL_UNLOCK: - LTC_MUTEX_UNLOCK(&prng->lock); - return err; -} - -/** - Import a PRNG state - @param in The PRNG state - @param inlen Size of the state - @param prng The PRNG to import - @return CRYPT_OK if successful -*/ -int fortuna_import(const unsigned char *in, unsigned long inlen, prng_state *prng) -{ - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(prng != NULL); - - if (inlen < (unsigned long)fortuna_desc.export_size) { - return CRYPT_INVALID_ARG; - } - - if ((err = fortuna_start(prng)) != CRYPT_OK) { - return err; - } - - if ((err = _fortuna_update_seed(in, inlen, prng)) != CRYPT_OK) { - return err; - } - - return err; -} - -/** - PRNG self-test - @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled -*/ -int fortuna_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - int err; - - if ((err = sha256_test()) != CRYPT_OK) { - return err; - } - return rijndael_test(); -#endif -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/prngs/rc4.c b/src/libtomcrypt/src/prngs/rc4.c deleted file mode 100644 index c5843647ce..0000000000 --- a/src/libtomcrypt/src/prngs/rc4.c +++ /dev/null @@ -1,250 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file prngs/rc4.c - RC4 PRNG, Tom St Denis -*/ - -#ifdef LTC_RC4 - -const struct ltc_prng_descriptor rc4_desc = -{ - "rc4", - 32, - &rc4_start, - &rc4_add_entropy, - &rc4_ready, - &rc4_read, - &rc4_done, - &rc4_export, - &rc4_import, - &rc4_test -}; - -/** - Start the PRNG - @param prng [out] The PRNG state to initialize - @return CRYPT_OK if successful -*/ -int rc4_start(prng_state *prng) -{ - LTC_ARGCHK(prng != NULL); - prng->ready = 0; - /* set entropy (key) size to zero */ - prng->rc4.s.x = 0; - /* clear entropy (key) buffer */ - XMEMSET(&prng->rc4.s.buf, 0, sizeof(prng->rc4.s.buf)); - LTC_MUTEX_INIT(&prng->lock) - return CRYPT_OK; -} - -/** - Add entropy to the PRNG state - @param in The data to add - @param inlen Length of the data to add - @param prng PRNG state to update - @return CRYPT_OK if successful -*/ -int rc4_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng) -{ - unsigned char buf[256]; - unsigned long i; - int err; - - LTC_ARGCHK(prng != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(inlen > 0); - - LTC_MUTEX_LOCK(&prng->lock); - if (prng->ready) { - /* rc4_ready() was already called, do "rekey" operation */ - if ((err = rc4_stream_keystream(&prng->rc4.s, buf, sizeof(buf))) != CRYPT_OK) goto LBL_UNLOCK; - for(i = 0; i < inlen; i++) buf[i % sizeof(buf)] ^= in[i]; - /* initialize RC4 */ - if ((err = rc4_stream_setup(&prng->rc4.s, buf, sizeof(buf))) != CRYPT_OK) goto LBL_UNLOCK; - /* drop first 3072 bytes - https://en.wikipedia.org/wiki/RC4#Fluhrer.2C_Mantin_and_Shamir_attack */ - for (i = 0; i < 12; i++) rc4_stream_keystream(&prng->rc4.s, buf, sizeof(buf)); - zeromem(buf, sizeof(buf)); - } - else { - /* rc4_ready() was not called yet, add entropy to the buffer */ - while (inlen--) prng->rc4.s.buf[prng->rc4.s.x++ % sizeof(prng->rc4.s.buf)] ^= *in++; - } - err = CRYPT_OK; -LBL_UNLOCK: - LTC_MUTEX_UNLOCK(&prng->lock); - return err; -} - -/** - Make the PRNG ready to read from - @param prng The PRNG to make active - @return CRYPT_OK if successful -*/ -int rc4_ready(prng_state *prng) -{ - unsigned char buf[256] = { 0 }; - unsigned long len; - int err, i; - - LTC_ARGCHK(prng != NULL); - - LTC_MUTEX_LOCK(&prng->lock); - if (prng->ready) { err = CRYPT_OK; goto LBL_UNLOCK; } - XMEMCPY(buf, prng->rc4.s.buf, sizeof(buf)); - /* initialize RC4 */ - len = MIN(prng->rc4.s.x, 256); /* TODO: we can perhaps always use all 256 bytes */ - if ((err = rc4_stream_setup(&prng->rc4.s, buf, len)) != CRYPT_OK) goto LBL_UNLOCK; - /* drop first 3072 bytes - https://en.wikipedia.org/wiki/RC4#Fluhrer.2C_Mantin_and_Shamir_attack */ - for (i = 0; i < 12; i++) rc4_stream_keystream(&prng->rc4.s, buf, sizeof(buf)); - prng->ready = 1; -LBL_UNLOCK: - LTC_MUTEX_UNLOCK(&prng->lock); - return err; -} - -/** - Read from the PRNG - @param out Destination - @param outlen Length of output - @param prng The active PRNG to read from - @return Number of octets read -*/ -unsigned long rc4_read(unsigned char *out, unsigned long outlen, prng_state *prng) -{ - if (outlen == 0 || prng == NULL || out == NULL) return 0; - LTC_MUTEX_LOCK(&prng->lock); - if (!prng->ready) { outlen = 0; goto LBL_UNLOCK; } - if (rc4_stream_keystream(&prng->rc4.s, out, outlen) != CRYPT_OK) outlen = 0; -LBL_UNLOCK: - LTC_MUTEX_UNLOCK(&prng->lock); - return outlen; -} - -/** - Terminate the PRNG - @param prng The PRNG to terminate - @return CRYPT_OK if successful -*/ -int rc4_done(prng_state *prng) -{ - int err; - LTC_ARGCHK(prng != NULL); - LTC_MUTEX_LOCK(&prng->lock); - prng->ready = 0; - err = rc4_stream_done(&prng->rc4.s); - LTC_MUTEX_UNLOCK(&prng->lock); - LTC_MUTEX_DESTROY(&prng->lock); - return err; -} - -/** - Export the PRNG state - @param out [out] Destination - @param outlen [in/out] Max size and resulting size of the state - @param prng The PRNG to export - @return CRYPT_OK if successful -*/ -int rc4_export(unsigned char *out, unsigned long *outlen, prng_state *prng) -{ - unsigned long len = rc4_desc.export_size; - - LTC_ARGCHK(prng != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - if (*outlen < len) { - *outlen = len; - return CRYPT_BUFFER_OVERFLOW; - } - - if (rc4_read(out, len, prng) != len) { - return CRYPT_ERROR_READPRNG; - } - - *outlen = len; - return CRYPT_OK; -} - -/** - Import a PRNG state - @param in The PRNG state - @param inlen Size of the state - @param prng The PRNG to import - @return CRYPT_OK if successful -*/ -int rc4_import(const unsigned char *in, unsigned long inlen, prng_state *prng) -{ - int err; - - LTC_ARGCHK(prng != NULL); - LTC_ARGCHK(in != NULL); - if (inlen < (unsigned long)rc4_desc.export_size) return CRYPT_INVALID_ARG; - - if ((err = rc4_start(prng)) != CRYPT_OK) return err; - if ((err = rc4_add_entropy(in, inlen, prng)) != CRYPT_OK) return err; - return CRYPT_OK; -} - -/** - PRNG self-test - @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled -*/ -int rc4_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - prng_state st; - unsigned char en[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, - 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, - 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, - 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, - 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32 }; - unsigned char dmp[500]; - unsigned long dmplen = sizeof(dmp); - unsigned char out[1000]; - unsigned char t1[] = { 0xE0, 0x4D, 0x9A, 0xF6, 0xA8, 0x9D, 0x77, 0x53, 0xAE, 0x09 }; - unsigned char t2[] = { 0xEF, 0x80, 0xA2, 0xE6, 0x50, 0x91, 0xF3, 0x17, 0x4A, 0x8A }; - unsigned char t3[] = { 0x4B, 0xD6, 0x5C, 0x67, 0x99, 0x03, 0x56, 0x12, 0x80, 0x48 }; - int err; - - if ((err = rc4_start(&st)) != CRYPT_OK) return err; - /* add entropy to uninitialized prng */ - if ((err = rc4_add_entropy(en, sizeof(en), &st)) != CRYPT_OK) return err; - if ((err = rc4_ready(&st)) != CRYPT_OK) return err; - if (rc4_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ - if (compare_testvector(out, 10, t1, sizeof(t1), "RC4-PRNG", 1)) return CRYPT_FAIL_TESTVECTOR; - if (rc4_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ - /* add entropy to already initialized prng */ - if ((err = rc4_add_entropy(en, sizeof(en), &st)) != CRYPT_OK) return err; - if (rc4_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ - if ((err = rc4_export(dmp, &dmplen, &st)) != CRYPT_OK) return err; - if (rc4_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ - if (rc4_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ - if (compare_testvector(out, 10, t2, sizeof(t2), "RC4-PRNG", 2)) return CRYPT_FAIL_TESTVECTOR; - if ((err = rc4_done(&st)) != CRYPT_OK) return err; - if ((err = rc4_import(dmp, dmplen, &st)) != CRYPT_OK) return err; - if ((err = rc4_ready(&st)) != CRYPT_OK) return err; - if (rc4_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ - if (rc4_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ - if (compare_testvector(out, 10, t3, sizeof(t3), "RC4-PRNG", 3)) return CRYPT_FAIL_TESTVECTOR; - if ((err = rc4_done(&st)) != CRYPT_OK) return err; - - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/prngs/rng_get_bytes.c b/src/libtomcrypt/src/prngs/rng_get_bytes.c deleted file mode 100644 index 1f7079bf11..0000000000 --- a/src/libtomcrypt/src/prngs/rng_get_bytes.c +++ /dev/null @@ -1,159 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#ifdef LTC_RNG_GET_BYTES -/** - @file rng_get_bytes.c - portable way to get secure random bits to feed a PRNG (Tom St Denis) -*/ - -#if defined(LTC_DEVRANDOM) && !defined(_WIN32) -/* on *NIX read /dev/random */ -static unsigned long _rng_nix(unsigned char *buf, unsigned long len, - void (*callback)(void)) -{ -#ifdef LTC_NO_FILE - LTC_UNUSED_PARAM(callback); - LTC_UNUSED_PARAM(buf); - LTC_UNUSED_PARAM(len); - return 0; -#else - FILE *f; - unsigned long x; - LTC_UNUSED_PARAM(callback); -#ifdef LTC_TRY_URANDOM_FIRST - f = fopen("/dev/urandom", "rb"); - if (f == NULL) -#endif /* LTC_TRY_URANDOM_FIRST */ - f = fopen("/dev/random", "rb"); - - if (f == NULL) { - return 0; - } - - /* disable buffering */ - if (setvbuf(f, NULL, _IONBF, 0) != 0) { - fclose(f); - return 0; - } - - x = (unsigned long)fread(buf, 1, (size_t)len, f); - fclose(f); - return x; -#endif /* LTC_NO_FILE */ -} - -#endif /* LTC_DEVRANDOM */ - -#if !defined(_WIN32_WCE) - -#define ANSI_RNG - -static unsigned long _rng_ansic(unsigned char *buf, unsigned long len, - void (*callback)(void)) -{ - clock_t t1; - int l, acc, bits, a, b; - - l = len; - bits = 8; - acc = a = b = 0; - while (len--) { - if (callback != NULL) callback(); - while (bits--) { - do { - t1 = XCLOCK(); while (t1 == XCLOCK()) a ^= 1; - t1 = XCLOCK(); while (t1 == XCLOCK()) b ^= 1; - } while (a == b); - acc = (acc << 1) | a; - } - *buf++ = acc; - acc = 0; - bits = 8; - } - return l; -} - -#endif - -/* Try the Microsoft CSP */ -#if defined(_WIN32) || defined(_WIN32_WCE) -#ifndef _WIN32_WINNT - #define _WIN32_WINNT 0x0400 -#endif -#ifdef _WIN32_WCE - #define UNDER_CE - #define ARM -#endif - -#define WIN32_LEAN_AND_MEAN -#include -#include - -static unsigned long _rng_win32(unsigned char *buf, unsigned long len, - void (*callback)(void)) -{ - HCRYPTPROV hProv = 0; - LTC_UNUSED_PARAM(callback); - if (!CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, - (CRYPT_VERIFYCONTEXT | CRYPT_MACHINE_KEYSET)) && - !CryptAcquireContext (&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, - CRYPT_VERIFYCONTEXT | CRYPT_MACHINE_KEYSET | CRYPT_NEWKEYSET)) - return 0; - - if (CryptGenRandom(hProv, len, buf) == TRUE) { - CryptReleaseContext(hProv, 0); - return len; - } else { - CryptReleaseContext(hProv, 0); - return 0; - } -} - -#endif /* WIN32 */ - -/** - Read the system RNG - @param out Destination - @param outlen Length desired (octets) - @param callback Pointer to void function to act as "callback" when RNG is slow. This can be NULL - @return Number of octets read -*/ -unsigned long rng_get_bytes(unsigned char *out, unsigned long outlen, - void (*callback)(void)) -{ - unsigned long x; - - LTC_ARGCHK(out != NULL); - -#ifdef LTC_PRNG_ENABLE_LTC_RNG - if (ltc_rng) { - x = ltc_rng(out, outlen, callback); - if (x != 0) { - return x; - } - } -#endif - -#if defined(_WIN32) || defined(_WIN32_WCE) - x = _rng_win32(out, outlen, callback); if (x != 0) { return x; } -#elif defined(LTC_DEVRANDOM) - x = _rng_nix(out, outlen, callback); if (x != 0) { return x; } -#endif -#ifdef ANSI_RNG - x = _rng_ansic(out, outlen, callback); if (x != 0) { return x; } -#endif - return 0; -} -#endif /* #ifdef LTC_RNG_GET_BYTES */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/prngs/rng_make_prng.c b/src/libtomcrypt/src/prngs/rng_make_prng.c deleted file mode 100644 index 6300e4d042..0000000000 --- a/src/libtomcrypt/src/prngs/rng_make_prng.c +++ /dev/null @@ -1,69 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -#ifdef LTC_RNG_MAKE_PRNG -/** - @file rng_make_prng.c - portable way to get secure random bits to feed a PRNG (Tom St Denis) -*/ - -/** - Create a PRNG from a RNG - @param bits Number of bits of entropy desired (64 ... 1024) - @param wprng Index of which PRNG to setup - @param prng [out] PRNG state to initialize - @param callback A pointer to a void function for when the RNG is slow, this can be NULL - @return CRYPT_OK if successful -*/ -int rng_make_prng(int bits, int wprng, prng_state *prng, - void (*callback)(void)) -{ - unsigned char buf[256]; - int err; - - LTC_ARGCHK(prng != NULL); - - /* check parameter */ - if ((err = prng_is_valid(wprng)) != CRYPT_OK) { - return err; - } - - if (bits < 64 || bits > 1024) { - return CRYPT_INVALID_PRNGSIZE; - } - - if ((err = prng_descriptor[wprng].start(prng)) != CRYPT_OK) { - return err; - } - - bits = ((bits/8)+((bits&7)!=0?1:0)) * 2; - if (rng_get_bytes(buf, (unsigned long)bits, callback) != (unsigned long)bits) { - return CRYPT_ERROR_READPRNG; - } - - if ((err = prng_descriptor[wprng].add_entropy(buf, (unsigned long)bits, prng)) != CRYPT_OK) { - return err; - } - - if ((err = prng_descriptor[wprng].ready(prng)) != CRYPT_OK) { - return err; - } - - #ifdef LTC_CLEAN_STACK - zeromem(buf, sizeof(buf)); - #endif - return CRYPT_OK; -} -#endif /* #ifdef LTC_RNG_MAKE_PRNG */ - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/prngs/sober128.c b/src/libtomcrypt/src/prngs/sober128.c deleted file mode 100644 index f0b0ad9feb..0000000000 --- a/src/libtomcrypt/src/prngs/sober128.c +++ /dev/null @@ -1,249 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -/** - @file prngs/sober128.c - Implementation of SOBER-128 by Tom St Denis. - Based on s128fast.c reference code supplied by Greg Rose of QUALCOMM. -*/ - -#ifdef LTC_SOBER128 - -const struct ltc_prng_descriptor sober128_desc = -{ - "sober128", - 40, - &sober128_start, - &sober128_add_entropy, - &sober128_ready, - &sober128_read, - &sober128_done, - &sober128_export, - &sober128_import, - &sober128_test -}; - -/** - Start the PRNG - @param prng [out] The PRNG state to initialize - @return CRYPT_OK if successful -*/ -int sober128_start(prng_state *prng) -{ - LTC_ARGCHK(prng != NULL); - prng->ready = 0; - XMEMSET(&prng->sober128.ent, 0, sizeof(prng->sober128.ent)); - prng->sober128.idx = 0; - LTC_MUTEX_INIT(&prng->lock) - return CRYPT_OK; -} - -/** - Add entropy to the PRNG state - @param in The data to add - @param inlen Length of the data to add - @param prng PRNG state to update - @return CRYPT_OK if successful -*/ -int sober128_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng) -{ - unsigned char buf[40]; - unsigned long i; - int err; - - LTC_ARGCHK(prng != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(inlen > 0); - - LTC_MUTEX_LOCK(&prng->lock); - if (prng->ready) { - /* sober128_ready() was already called, do "rekey" operation */ - if ((err = sober128_stream_keystream(&prng->sober128.s, buf, sizeof(buf))) != CRYPT_OK) goto LBL_UNLOCK; - for(i = 0; i < inlen; i++) buf[i % sizeof(buf)] ^= in[i]; - /* key 32 bytes, 20 rounds */ - if ((err = sober128_stream_setup(&prng->sober128.s, buf, 32)) != CRYPT_OK) goto LBL_UNLOCK; - /* iv 8 bytes */ - if ((err = sober128_stream_setiv(&prng->sober128.s, buf + 32, 8)) != CRYPT_OK) goto LBL_UNLOCK; - /* clear KEY + IV */ - zeromem(buf, sizeof(buf)); - } - else { - /* sober128_ready() was not called yet, add entropy to ent buffer */ - while (inlen--) prng->sober128.ent[prng->sober128.idx++ % sizeof(prng->sober128.ent)] ^= *in++; - } - err = CRYPT_OK; -LBL_UNLOCK: - LTC_MUTEX_UNLOCK(&prng->lock); - return err; -} - -/** - Make the PRNG ready to read from - @param prng The PRNG to make active - @return CRYPT_OK if successful -*/ -int sober128_ready(prng_state *prng) -{ - int err; - - LTC_ARGCHK(prng != NULL); - - LTC_MUTEX_LOCK(&prng->lock); - if (prng->ready) { err = CRYPT_OK; goto LBL_UNLOCK; } - /* key 32 bytes, 20 rounds */ - if ((err = sober128_stream_setup(&prng->sober128.s, prng->sober128.ent, 32)) != CRYPT_OK) goto LBL_UNLOCK; - /* iv 8 bytes */ - if ((err = sober128_stream_setiv(&prng->sober128.s, prng->sober128.ent + 32, 8)) != CRYPT_OK) goto LBL_UNLOCK; - XMEMSET(&prng->sober128.ent, 0, sizeof(prng->sober128.ent)); - prng->sober128.idx = 0; - prng->ready = 1; -LBL_UNLOCK: - LTC_MUTEX_UNLOCK(&prng->lock); - return err; -} - -/** - Read from the PRNG - @param out Destination - @param outlen Length of output - @param prng The active PRNG to read from - @return Number of octets read -*/ -unsigned long sober128_read(unsigned char *out, unsigned long outlen, prng_state *prng) -{ - if (outlen == 0 || prng == NULL || out == NULL) return 0; - LTC_MUTEX_LOCK(&prng->lock); - if (!prng->ready) { outlen = 0; goto LBL_UNLOCK; } - if (sober128_stream_keystream(&prng->sober128.s, out, outlen) != CRYPT_OK) outlen = 0; -LBL_UNLOCK: - LTC_MUTEX_UNLOCK(&prng->lock); - return outlen; -} - -/** - Terminate the PRNG - @param prng The PRNG to terminate - @return CRYPT_OK if successful -*/ -int sober128_done(prng_state *prng) -{ - int err; - LTC_ARGCHK(prng != NULL); - LTC_MUTEX_LOCK(&prng->lock); - prng->ready = 0; - err = sober128_stream_done(&prng->sober128.s); - LTC_MUTEX_UNLOCK(&prng->lock); - LTC_MUTEX_DESTROY(&prng->lock); - return err; -} - -/** - Export the PRNG state - @param out [out] Destination - @param outlen [in/out] Max size and resulting size of the state - @param prng The PRNG to export - @return CRYPT_OK if successful -*/ -int sober128_export(unsigned char *out, unsigned long *outlen, prng_state *prng) -{ - unsigned long len = sober128_desc.export_size; - - LTC_ARGCHK(prng != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - if (*outlen < len) { - *outlen = len; - return CRYPT_BUFFER_OVERFLOW; - } - - if (sober128_read(out, len, prng) != len) { - return CRYPT_ERROR_READPRNG; - } - - *outlen = len; - return CRYPT_OK; -} - -/** - Import a PRNG state - @param in The PRNG state - @param inlen Size of the state - @param prng The PRNG to import - @return CRYPT_OK if successful -*/ -int sober128_import(const unsigned char *in, unsigned long inlen, prng_state *prng) -{ - int err; - - LTC_ARGCHK(prng != NULL); - LTC_ARGCHK(in != NULL); - if (inlen < (unsigned long)sober128_desc.export_size) return CRYPT_INVALID_ARG; - - if ((err = sober128_start(prng)) != CRYPT_OK) return err; - if ((err = sober128_add_entropy(in, inlen, prng)) != CRYPT_OK) return err; - return CRYPT_OK; -} - -/** - PRNG self-test - @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled -*/ -int sober128_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - prng_state st; - unsigned char en[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, - 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, - 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, - 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, - 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32 }; - unsigned char dmp[300]; - unsigned long dmplen = sizeof(dmp); - unsigned char out[500]; - unsigned char t1[] = { 0x31, 0x82, 0xA7, 0xA5, 0x8B, 0xD7, 0xCB, 0x39, 0x86, 0x1A }; - unsigned char t2[] = { 0x6B, 0x43, 0x9E, 0xBC, 0xE7, 0x62, 0x9B, 0xE6, 0x9B, 0x83 }; - unsigned char t3[] = { 0x4A, 0x0E, 0x6C, 0xC1, 0xCF, 0xB4, 0x73, 0x49, 0x99, 0x05 }; - int err; - - if ((err = sober128_start(&st)) != CRYPT_OK) return err; - /* add entropy to uninitialized prng */ - if ((err = sober128_add_entropy(en, sizeof(en), &st)) != CRYPT_OK) return err; - if ((err = sober128_ready(&st)) != CRYPT_OK) return err; - if (sober128_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ - if (compare_testvector(out, 10, t1, sizeof(t1), "SOBER128-PRNG", 1)) return CRYPT_FAIL_TESTVECTOR; - if (sober128_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ - /* add entropy to already initialized prng */ - if ((err = sober128_add_entropy(en, sizeof(en), &st)) != CRYPT_OK) return err; - if (sober128_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ - if ((err = sober128_export(dmp, &dmplen, &st)) != CRYPT_OK) return err; - if (sober128_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ - if (sober128_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ - if (compare_testvector(out, 10, t2, sizeof(t2), "SOBER128-PRNG", 2)) return CRYPT_FAIL_TESTVECTOR; - if ((err = sober128_done(&st)) != CRYPT_OK) return err; - if ((err = sober128_import(dmp, dmplen, &st)) != CRYPT_OK) return err; - if ((err = sober128_ready(&st)) != CRYPT_OK) return err; - if (sober128_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ - if (sober128_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ - if (compare_testvector(out, 10, t3, sizeof(t3), "SOBER128-PRNG", 3)) return CRYPT_FAIL_TESTVECTOR; - if ((err = sober128_done(&st)) != CRYPT_OK) return err; - - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/prngs/sprng.c b/src/libtomcrypt/src/prngs/sprng.c deleted file mode 100644 index 0aecaa5b62..0000000000 --- a/src/libtomcrypt/src/prngs/sprng.c +++ /dev/null @@ -1,161 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file sprng.c - Secure PRNG, Tom St Denis -*/ - -/* A secure PRNG using the RNG functions. Basically this is a - * wrapper that allows you to use a secure RNG as a PRNG - * in the various other functions. - */ - -#ifdef LTC_SPRNG - -const struct ltc_prng_descriptor sprng_desc = -{ - "sprng", 0, - &sprng_start, - &sprng_add_entropy, - &sprng_ready, - &sprng_read, - &sprng_done, - &sprng_export, - &sprng_import, - &sprng_test -}; - -/** - Start the PRNG - @param prng [out] The PRNG state to initialize - @return CRYPT_OK if successful -*/ -int sprng_start(prng_state *prng) -{ - LTC_UNUSED_PARAM(prng); - return CRYPT_OK; -} - -/** - Add entropy to the PRNG state - @param in The data to add - @param inlen Length of the data to add - @param prng PRNG state to update - @return CRYPT_OK if successful -*/ -int sprng_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng) -{ - LTC_UNUSED_PARAM(in); - LTC_UNUSED_PARAM(inlen); - LTC_UNUSED_PARAM(prng); - return CRYPT_OK; -} - -/** - Make the PRNG ready to read from - @param prng The PRNG to make active - @return CRYPT_OK if successful -*/ -int sprng_ready(prng_state *prng) -{ - LTC_UNUSED_PARAM(prng); - return CRYPT_OK; -} - -/** - Read from the PRNG - @param out Destination - @param outlen Length of output - @param prng The active PRNG to read from - @return Number of octets read -*/ -unsigned long sprng_read(unsigned char *out, unsigned long outlen, prng_state *prng) -{ - LTC_ARGCHK(out != NULL); - LTC_UNUSED_PARAM(prng); - return rng_get_bytes(out, outlen, NULL); -} - -/** - Terminate the PRNG - @param prng The PRNG to terminate - @return CRYPT_OK if successful -*/ -int sprng_done(prng_state *prng) -{ - LTC_UNUSED_PARAM(prng); - return CRYPT_OK; -} - -/** - Export the PRNG state - @param out [out] Destination - @param outlen [in/out] Max size and resulting size of the state - @param prng The PRNG to export - @return CRYPT_OK if successful -*/ -int sprng_export(unsigned char *out, unsigned long *outlen, prng_state *prng) -{ - LTC_ARGCHK(outlen != NULL); - LTC_UNUSED_PARAM(out); - LTC_UNUSED_PARAM(prng); - - *outlen = 0; - return CRYPT_OK; -} - -/** - Import a PRNG state - @param in The PRNG state - @param inlen Size of the state - @param prng The PRNG to import - @return CRYPT_OK if successful -*/ -int sprng_import(const unsigned char *in, unsigned long inlen, prng_state *prng) -{ - LTC_UNUSED_PARAM(in); - LTC_UNUSED_PARAM(inlen); - LTC_UNUSED_PARAM(prng); - return CRYPT_OK; -} - -/** - PRNG self-test - @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled -*/ -int sprng_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - prng_state st; - unsigned char en[] = { 0x01, 0x02, 0x03, 0x04 }; - unsigned char out[1000]; - int err; - - if ((err = sprng_start(&st)) != CRYPT_OK) return err; - if ((err = sprng_add_entropy(en, sizeof(en), &st)) != CRYPT_OK) return err; - if ((err = sprng_ready(&st)) != CRYPT_OK) return err; - if (sprng_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ - if ((err = sprng_done(&st)) != CRYPT_OK) return err; - - return CRYPT_OK; -#endif -} - -#endif - - - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/prngs/yarrow.c b/src/libtomcrypt/src/prngs/yarrow.c deleted file mode 100644 index 2b7cc97fba..0000000000 --- a/src/libtomcrypt/src/prngs/yarrow.c +++ /dev/null @@ -1,352 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file yarrow.c - Yarrow PRNG, Tom St Denis -*/ - -#ifdef LTC_YARROW - -const struct ltc_prng_descriptor yarrow_desc = -{ - "yarrow", 64, - &yarrow_start, - &yarrow_add_entropy, - &yarrow_ready, - &yarrow_read, - &yarrow_done, - &yarrow_export, - &yarrow_import, - &yarrow_test -}; - -/** - Start the PRNG - @param prng [out] The PRNG state to initialize - @return CRYPT_OK if successful -*/ -int yarrow_start(prng_state *prng) -{ - int err; - - LTC_ARGCHK(prng != NULL); - prng->ready = 0; - - /* these are the default hash/cipher combo used */ -#ifdef LTC_RIJNDAEL -#if LTC_YARROW_AES==0 - prng->yarrow.cipher = register_cipher(&rijndael_enc_desc); -#elif LTC_YARROW_AES==1 - prng->yarrow.cipher = register_cipher(&aes_enc_desc); -#elif LTC_YARROW_AES==2 - prng->yarrow.cipher = register_cipher(&rijndael_desc); -#elif LTC_YARROW_AES==3 - prng->yarrow.cipher = register_cipher(&aes_desc); -#endif -#elif defined(LTC_BLOWFISH) - prng->yarrow.cipher = register_cipher(&blowfish_desc); -#elif defined(LTC_TWOFISH) - prng->yarrow.cipher = register_cipher(&twofish_desc); -#elif defined(LTC_RC6) - prng->yarrow.cipher = register_cipher(&rc6_desc); -#elif defined(LTC_RC5) - prng->yarrow.cipher = register_cipher(&rc5_desc); -#elif defined(LTC_SAFERP) - prng->yarrow.cipher = register_cipher(&saferp_desc); -#elif defined(LTC_RC2) - prng->yarrow.cipher = register_cipher(&rc2_desc); -#elif defined(LTC_NOEKEON) - prng->yarrow.cipher = register_cipher(&noekeon_desc); -#elif defined(LTC_ANUBIS) - prng->yarrow.cipher = register_cipher(&anubis_desc); -#elif defined(LTC_KSEED) - prng->yarrow.cipher = register_cipher(&kseed_desc); -#elif defined(LTC_KHAZAD) - prng->yarrow.cipher = register_cipher(&khazad_desc); -#elif defined(LTC_CAST5) - prng->yarrow.cipher = register_cipher(&cast5_desc); -#elif defined(LTC_XTEA) - prng->yarrow.cipher = register_cipher(&xtea_desc); -#elif defined(LTC_SAFER) - prng->yarrow.cipher = register_cipher(&safer_sk128_desc); -#elif defined(LTC_DES) - prng->yarrow.cipher = register_cipher(&des3_desc); -#else - #error LTC_YARROW needs at least one CIPHER -#endif - if ((err = cipher_is_valid(prng->yarrow.cipher)) != CRYPT_OK) { - return err; - } - -#ifdef LTC_SHA256 - prng->yarrow.hash = register_hash(&sha256_desc); -#elif defined(LTC_SHA512) - prng->yarrow.hash = register_hash(&sha512_desc); -#elif defined(LTC_TIGER) - prng->yarrow.hash = register_hash(&tiger_desc); -#elif defined(LTC_SHA1) - prng->yarrow.hash = register_hash(&sha1_desc); -#elif defined(LTC_RIPEMD320) - prng->yarrow.hash = register_hash(&rmd320_desc); -#elif defined(LTC_RIPEMD256) - prng->yarrow.hash = register_hash(&rmd256_desc); -#elif defined(LTC_RIPEMD160) - prng->yarrow.hash = register_hash(&rmd160_desc); -#elif defined(LTC_RIPEMD128) - prng->yarrow.hash = register_hash(&rmd128_desc); -#elif defined(LTC_MD5) - prng->yarrow.hash = register_hash(&md5_desc); -#elif defined(LTC_MD4) - prng->yarrow.hash = register_hash(&md4_desc); -#elif defined(LTC_MD2) - prng->yarrow.hash = register_hash(&md2_desc); -#elif defined(LTC_WHIRLPOOL) - prng->yarrow.hash = register_hash(&whirlpool_desc); -#else - #error LTC_YARROW needs at least one HASH -#endif - if ((err = hash_is_valid(prng->yarrow.hash)) != CRYPT_OK) { - return err; - } - - /* zero the memory used */ - zeromem(prng->yarrow.pool, sizeof(prng->yarrow.pool)); - LTC_MUTEX_INIT(&prng->lock) - - return CRYPT_OK; -} - -/** - Add entropy to the PRNG state - @param in The data to add - @param inlen Length of the data to add - @param prng PRNG state to update - @return CRYPT_OK if successful -*/ -int yarrow_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng) -{ - hash_state md; - int err; - - LTC_ARGCHK(prng != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(inlen > 0); - - LTC_MUTEX_LOCK(&prng->lock); - - if ((err = hash_is_valid(prng->yarrow.hash)) != CRYPT_OK) { - goto LBL_UNLOCK; - } - - /* start the hash */ - if ((err = hash_descriptor[prng->yarrow.hash].init(&md)) != CRYPT_OK) { - goto LBL_UNLOCK; - } - - /* hash the current pool */ - if ((err = hash_descriptor[prng->yarrow.hash].process(&md, prng->yarrow.pool, - hash_descriptor[prng->yarrow.hash].hashsize)) != CRYPT_OK) { - goto LBL_UNLOCK; - } - - /* add the new entropy */ - if ((err = hash_descriptor[prng->yarrow.hash].process(&md, in, inlen)) != CRYPT_OK) { - goto LBL_UNLOCK; - } - - /* store result */ - err = hash_descriptor[prng->yarrow.hash].done(&md, prng->yarrow.pool); - -LBL_UNLOCK: - LTC_MUTEX_UNLOCK(&prng->lock); - return err; -} - -/** - Make the PRNG ready to read from - @param prng The PRNG to make active - @return CRYPT_OK if successful -*/ -int yarrow_ready(prng_state *prng) -{ - int ks, err; - - LTC_ARGCHK(prng != NULL); - - LTC_MUTEX_LOCK(&prng->lock); - - if ((err = hash_is_valid(prng->yarrow.hash)) != CRYPT_OK) { - goto LBL_UNLOCK; - } - - if ((err = cipher_is_valid(prng->yarrow.cipher)) != CRYPT_OK) { - goto LBL_UNLOCK; - } - - /* setup CTR mode using the "pool" as the key */ - ks = (int)hash_descriptor[prng->yarrow.hash].hashsize; - if ((err = cipher_descriptor[prng->yarrow.cipher].keysize(&ks)) != CRYPT_OK) { - goto LBL_UNLOCK; - } - - if ((err = ctr_start(prng->yarrow.cipher, /* what cipher to use */ - prng->yarrow.pool, /* IV */ - prng->yarrow.pool, ks, /* KEY and key size */ - 0, /* number of rounds */ - CTR_COUNTER_LITTLE_ENDIAN, /* little endian counter */ - &prng->yarrow.ctr)) != CRYPT_OK) { - goto LBL_UNLOCK; - } - prng->ready = 1; - -LBL_UNLOCK: - LTC_MUTEX_UNLOCK(&prng->lock); - return err; -} - -/** - Read from the PRNG - @param out Destination - @param outlen Length of output - @param prng The active PRNG to read from - @return Number of octets read -*/ -unsigned long yarrow_read(unsigned char *out, unsigned long outlen, prng_state *prng) -{ - if (outlen == 0 || prng == NULL || out == NULL) return 0; - - LTC_MUTEX_LOCK(&prng->lock); - - if (!prng->ready) { - outlen = 0; - goto LBL_UNLOCK; - } - - /* put out in predictable state first */ - zeromem(out, outlen); - - /* now randomize it */ - if (ctr_encrypt(out, out, outlen, &prng->yarrow.ctr) != CRYPT_OK) { - outlen = 0; - } - -LBL_UNLOCK: - LTC_MUTEX_UNLOCK(&prng->lock); - return outlen; -} - -/** - Terminate the PRNG - @param prng The PRNG to terminate - @return CRYPT_OK if successful -*/ -int yarrow_done(prng_state *prng) -{ - int err; - LTC_ARGCHK(prng != NULL); - - LTC_MUTEX_LOCK(&prng->lock); - prng->ready = 0; - - /* call cipher done when we invent one ;-) */ - - /* we invented one */ - err = ctr_done(&prng->yarrow.ctr); - - LTC_MUTEX_UNLOCK(&prng->lock); - LTC_MUTEX_DESTROY(&prng->lock); - return err; -} - -/** - Export the PRNG state - @param out [out] Destination - @param outlen [in/out] Max size and resulting size of the state - @param prng The PRNG to export - @return CRYPT_OK if successful -*/ -int yarrow_export(unsigned char *out, unsigned long *outlen, prng_state *prng) -{ - unsigned long len = yarrow_desc.export_size; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(prng != NULL); - - if (*outlen < len) { - *outlen = len; - return CRYPT_BUFFER_OVERFLOW; - } - - if (yarrow_read(out, len, prng) != len) { - return CRYPT_ERROR_READPRNG; - } - - *outlen = len; - return CRYPT_OK; -} - -/** - Import a PRNG state - @param in The PRNG state - @param inlen Size of the state - @param prng The PRNG to import - @return CRYPT_OK if successful -*/ -int yarrow_import(const unsigned char *in, unsigned long inlen, prng_state *prng) -{ - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(prng != NULL); - if (inlen < (unsigned long)yarrow_desc.export_size) return CRYPT_INVALID_ARG; - - if ((err = yarrow_start(prng)) != CRYPT_OK) return err; - if ((err = yarrow_add_entropy(in, inlen, prng)) != CRYPT_OK) return err; - return CRYPT_OK; -} - -/** - PRNG self-test - @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled -*/ -int yarrow_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - int err; - prng_state prng; - - if ((err = yarrow_start(&prng)) != CRYPT_OK) { - return err; - } - - /* now let's test the hash/cipher that was chosen */ - if (cipher_descriptor[prng.yarrow.cipher].test && - ((err = cipher_descriptor[prng.yarrow.cipher].test()) != CRYPT_OK)) { - return err; - } - if (hash_descriptor[prng.yarrow.hash].test && - ((err = hash_descriptor[prng.yarrow.hash].test()) != CRYPT_OK)) { - return err; - } - - return CRYPT_OK; -#endif -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/stream/chacha/chacha_crypt.c b/src/libtomcrypt/src/stream/chacha/chacha_crypt.c deleted file mode 100644 index d23df0d5a3..0000000000 --- a/src/libtomcrypt/src/stream/chacha/chacha_crypt.c +++ /dev/null @@ -1,101 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* The implementation is based on: - * chacha-ref.c version 20080118 - * Public domain from D. J. Bernstein - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA - -#define QUARTERROUND(a,b,c,d) \ - x[a] += x[b]; x[d] = ROL(x[d] ^ x[a], 16); \ - x[c] += x[d]; x[b] = ROL(x[b] ^ x[c], 12); \ - x[a] += x[b]; x[d] = ROL(x[d] ^ x[a], 8); \ - x[c] += x[d]; x[b] = ROL(x[b] ^ x[c], 7); - -static void _chacha_block(unsigned char *output, const ulong32 *input, int rounds) -{ - ulong32 x[16]; - int i; - XMEMCPY(x, input, sizeof(x)); - for (i = rounds; i > 0; i -= 2) { - QUARTERROUND(0, 4, 8,12) - QUARTERROUND(1, 5, 9,13) - QUARTERROUND(2, 6,10,14) - QUARTERROUND(3, 7,11,15) - QUARTERROUND(0, 5,10,15) - QUARTERROUND(1, 6,11,12) - QUARTERROUND(2, 7, 8,13) - QUARTERROUND(3, 4, 9,14) - } - for (i = 0; i < 16; ++i) { - x[i] += input[i]; - STORE32L(x[i], output + 4 * i); - } -} - -/** - Encrypt (or decrypt) bytes of ciphertext (or plaintext) with ChaCha - @param st The ChaCha state - @param in The plaintext (or ciphertext) - @param inlen The length of the input (octets) - @param out [out] The ciphertext (or plaintext), length inlen - @return CRYPT_OK if successful -*/ -int chacha_crypt(chacha_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out) -{ - unsigned char buf[64]; - unsigned long i, j; - - if (inlen == 0) return CRYPT_OK; /* nothing to do */ - - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(st->ivlen != 0); - - if (st->ksleft > 0) { - j = MIN(st->ksleft, inlen); - for (i = 0; i < j; ++i, st->ksleft--) out[i] = in[i] ^ st->kstream[64 - st->ksleft]; - inlen -= j; - if (inlen == 0) return CRYPT_OK; - out += j; - in += j; - } - for (;;) { - _chacha_block(buf, st->input, st->rounds); - if (st->ivlen == 8) { - /* IV-64bit, increment 64bit counter */ - if (0 == ++st->input[12] && 0 == ++st->input[13]) return CRYPT_OVERFLOW; - } - else { - /* IV-96bit, increment 32bit counter */ - if (0 == ++st->input[12]) return CRYPT_OVERFLOW; - } - if (inlen <= 64) { - for (i = 0; i < inlen; ++i) out[i] = in[i] ^ buf[i]; - st->ksleft = 64 - inlen; - for (i = inlen; i < 64; ++i) st->kstream[i] = buf[i]; - return CRYPT_OK; - } - for (i = 0; i < 64; ++i) out[i] = in[i] ^ buf[i]; - inlen -= 64; - out += 64; - in += 64; - } -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/stream/chacha/chacha_done.c b/src/libtomcrypt/src/stream/chacha/chacha_done.c deleted file mode 100644 index 4525c5e4bc..0000000000 --- a/src/libtomcrypt/src/stream/chacha/chacha_done.c +++ /dev/null @@ -1,30 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA - -/** - Terminate and clear ChaCha state - @param st The ChaCha state - @return CRYPT_OK on success -*/ -int chacha_done(chacha_state *st) -{ - LTC_ARGCHK(st != NULL); - XMEMSET(st, 0, sizeof(chacha_state)); - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/stream/chacha/chacha_ivctr32.c b/src/libtomcrypt/src/stream/chacha/chacha_ivctr32.c deleted file mode 100644 index 30845d0e21..0000000000 --- a/src/libtomcrypt/src/stream/chacha/chacha_ivctr32.c +++ /dev/null @@ -1,47 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* The implementation is based on: - * chacha-ref.c version 20080118 - * Public domain from D. J. Bernstein - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA - -/** - Set IV + counter data to the ChaCha state - @param st The ChaCha20 state - @param iv The IV data to add - @param ivlen The length of the IV (must be 12) - @param counter 32bit (unsigned) initial counter value - @return CRYPT_OK on success - */ -int chacha_ivctr32(chacha_state *st, const unsigned char *iv, unsigned long ivlen, ulong32 counter) -{ - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(iv != NULL); - /* 96bit IV + 32bit counter */ - LTC_ARGCHK(ivlen == 12); - - st->input[12] = counter; - LOAD32L(st->input[13], iv + 0); - LOAD32L(st->input[14], iv + 4); - LOAD32L(st->input[15], iv + 8); - st->ksleft = 0; - st->ivlen = ivlen; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/stream/chacha/chacha_ivctr64.c b/src/libtomcrypt/src/stream/chacha/chacha_ivctr64.c deleted file mode 100644 index b1a684384b..0000000000 --- a/src/libtomcrypt/src/stream/chacha/chacha_ivctr64.c +++ /dev/null @@ -1,47 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* The implementation is based on: - * chacha-ref.c version 20080118 - * Public domain from D. J. Bernstein - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA - -/** - Set IV + counter data to the ChaCha state - @param st The ChaCha20 state - @param iv The IV data to add - @param ivlen The length of the IV (must be 8) - @param counter 64bit (unsigned) initial counter value - @return CRYPT_OK on success - */ -int chacha_ivctr64(chacha_state *st, const unsigned char *iv, unsigned long ivlen, ulong64 counter) -{ - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(iv != NULL); - /* 64bit IV + 64bit counter */ - LTC_ARGCHK(ivlen == 8); - - st->input[12] = (ulong32)(counter & 0xFFFFFFFF); - st->input[13] = (ulong32)(counter >> 32); - LOAD32L(st->input[14], iv + 0); - LOAD32L(st->input[15], iv + 4); - st->ksleft = 0; - st->ivlen = ivlen; - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/stream/chacha/chacha_keystream.c b/src/libtomcrypt/src/stream/chacha/chacha_keystream.c deleted file mode 100644 index 5305884bd9..0000000000 --- a/src/libtomcrypt/src/stream/chacha/chacha_keystream.c +++ /dev/null @@ -1,38 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* The implementation is based on: - * chacha-ref.c version 20080118 - * Public domain from D. J. Bernstein - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA - -/** - Generate a stream of random bytes via ChaCha - @param st The ChaCha20 state - @param out [out] The output buffer - @param outlen The output length - @return CRYPT_OK on success - */ -int chacha_keystream(chacha_state *st, unsigned char *out, unsigned long outlen) -{ - if (outlen == 0) return CRYPT_OK; /* nothing to do */ - LTC_ARGCHK(out != NULL); - XMEMSET(out, 0, outlen); - return chacha_crypt(st, out, outlen, out); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/stream/chacha/chacha_setup.c b/src/libtomcrypt/src/stream/chacha/chacha_setup.c deleted file mode 100644 index eedac069c3..0000000000 --- a/src/libtomcrypt/src/stream/chacha/chacha_setup.c +++ /dev/null @@ -1,67 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* The implementation is based on: - * chacha-ref.c version 20080118 - * Public domain from D. J. Bernstein - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA - -static const char * const sigma = "expand 32-byte k"; -static const char * const tau = "expand 16-byte k"; - -/** - Initialize an ChaCha context (only the key) - @param st [out] The destination of the ChaCha state - @param key The secret key - @param keylen The length of the secret key (octets) - @param rounds Number of rounds (e.g. 20 for ChaCha20) - @return CRYPT_OK if successful -*/ -int chacha_setup(chacha_state *st, const unsigned char *key, unsigned long keylen, int rounds) -{ - const char *constants; - - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(keylen == 32 || keylen == 16); - - if (rounds == 0) rounds = 20; - - LOAD32L(st->input[4], key + 0); - LOAD32L(st->input[5], key + 4); - LOAD32L(st->input[6], key + 8); - LOAD32L(st->input[7], key + 12); - if (keylen == 32) { /* 256bit */ - key += 16; - constants = sigma; - } else { /* 128bit */ - constants = tau; - } - LOAD32L(st->input[8], key + 0); - LOAD32L(st->input[9], key + 4); - LOAD32L(st->input[10], key + 8); - LOAD32L(st->input[11], key + 12); - LOAD32L(st->input[0], constants + 0); - LOAD32L(st->input[1], constants + 4); - LOAD32L(st->input[2], constants + 8); - LOAD32L(st->input[3], constants + 12); - st->rounds = rounds; /* e.g. 20 for chacha20 */ - st->ivlen = 0; /* will be set later by chacha_ivctr(32|64) */ - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/stream/chacha/chacha_test.c b/src/libtomcrypt/src/stream/chacha/chacha_test.c deleted file mode 100644 index 31c340dd43..0000000000 --- a/src/libtomcrypt/src/stream/chacha/chacha_test.c +++ /dev/null @@ -1,71 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/* The implementation is based on: - * chacha-ref.c version 20080118 - * Public domain from D. J. Bernstein - */ - -#include "tomcrypt.h" - -#ifdef LTC_CHACHA - -int chacha_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - unsigned long len; - unsigned char out[1000]; - /* https://tools.ietf.org/html/rfc7539#section-2.4.2 */ - unsigned char k[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }; - unsigned char n[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00 }; - unsigned char ct[] = { 0x6E, 0x2E, 0x35, 0x9A, 0x25, 0x68, 0xF9, 0x80, 0x41, 0xBA, 0x07, 0x28, 0xDD, 0x0D, 0x69, 0x81, - 0xE9, 0x7E, 0x7A, 0xEC, 0x1D, 0x43, 0x60, 0xC2, 0x0A, 0x27, 0xAF, 0xCC, 0xFD, 0x9F, 0xAE, 0x0B, - 0xF9, 0x1B, 0x65, 0xC5, 0x52, 0x47, 0x33, 0xAB, 0x8F, 0x59, 0x3D, 0xAB, 0xCD, 0x62, 0xB3, 0x57, - 0x16, 0x39, 0xD6, 0x24, 0xE6, 0x51, 0x52, 0xAB, 0x8F, 0x53, 0x0C, 0x35, 0x9F, 0x08, 0x61, 0xD8, - 0x07, 0xCA, 0x0D, 0xBF, 0x50, 0x0D, 0x6A, 0x61, 0x56, 0xA3, 0x8E, 0x08, 0x8A, 0x22, 0xB6, 0x5E, - 0x52, 0xBC, 0x51, 0x4D, 0x16, 0xCC, 0xF8, 0x06, 0x81, 0x8C, 0xE9, 0x1A, 0xB7, 0x79, 0x37, 0x36, - 0x5A, 0xF9, 0x0B, 0xBF, 0x74, 0xA3, 0x5B, 0xE6, 0xB4, 0x0B, 0x8E, 0xED, 0xF2, 0x78, 0x5E, 0x42, - 0x87, 0x4D }; - char pt[] = "Ladies and Gentlemen of the class of '99: If I could offer you only one tip for the future, sunscreen would be it."; - chacha_state st; - int err; - - len = strlen(pt); - /* crypt piece by piece */ - if ((err = chacha_setup(&st, k, sizeof(k), 20)) != CRYPT_OK) return err; - if ((err = chacha_ivctr32(&st, n, sizeof(n), 1)) != CRYPT_OK) return err; - if ((err = chacha_crypt(&st, (unsigned char*)pt, 35, out)) != CRYPT_OK) return err; - if ((err = chacha_crypt(&st, (unsigned char*)pt + 35, 35, out + 35)) != CRYPT_OK) return err; - if ((err = chacha_crypt(&st, (unsigned char*)pt + 70, 5, out + 70)) != CRYPT_OK) return err; - if ((err = chacha_crypt(&st, (unsigned char*)pt + 75, 5, out + 75)) != CRYPT_OK) return err; - if ((err = chacha_crypt(&st, (unsigned char*)pt + 80, len - 80, out + 80)) != CRYPT_OK) return err; - if (compare_testvector(out, len, ct, sizeof(ct), "CHACHA-TV1", 1)) return CRYPT_FAIL_TESTVECTOR; - /* crypt in one go */ - if ((err = chacha_setup(&st, k, sizeof(k), 20)) != CRYPT_OK) return err; - if ((err = chacha_ivctr32(&st, n, sizeof(n), 1)) != CRYPT_OK) return err; - if ((err = chacha_crypt(&st, (unsigned char*)pt, len, out)) != CRYPT_OK) return err; - if (compare_testvector(out, len, ct, sizeof(ct), "CHACHA-TV2", 1)) return CRYPT_FAIL_TESTVECTOR; - /* crypt in one go - using chacha_ivctr64() */ - if ((err = chacha_setup(&st, k, sizeof(k), 20)) != CRYPT_OK) return err; - if ((err = chacha_ivctr64(&st, n + 4, sizeof(n) - 4, 1)) != CRYPT_OK) return err; - if ((err = chacha_crypt(&st, (unsigned char*)pt, len, out)) != CRYPT_OK) return err; - if (compare_testvector(out, len, ct, sizeof(ct), "CHACHA-TV3", 1)) return CRYPT_FAIL_TESTVECTOR; - - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/stream/rc4/rc4_stream.c b/src/libtomcrypt/src/stream/rc4/rc4_stream.c deleted file mode 100644 index fe47e41406..0000000000 --- a/src/libtomcrypt/src/stream/rc4/rc4_stream.c +++ /dev/null @@ -1,111 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_RC4_STREAM - -/** - Initialize an RC4 context (only the key) - @param st [out] The destination of the RC4 state - @param key The secret key - @param keylen The length of the secret key (8 - 256 bytes) - @return CRYPT_OK if successful -*/ -int rc4_stream_setup(rc4_state *st, const unsigned char *key, unsigned long keylen) -{ - unsigned char tmp, *s; - int x, y; - unsigned long j; - - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(keylen >= 5); /* 40-2048 bits */ - - s = st->buf; - for (x = 0; x < 256; x++) { - s[x] = x; - } - - for (j = x = y = 0; x < 256; x++) { - y = (y + s[x] + key[j++]) & 255; - if (j == keylen) { - j = 0; - } - tmp = s[x]; s[x] = s[y]; s[y] = tmp; - } - st->x = 0; - st->y = 0; - - return CRYPT_OK; -} - -/** - Encrypt (or decrypt) bytes of ciphertext (or plaintext) with RC4 - @param st The RC4 state - @param in The plaintext (or ciphertext) - @param inlen The length of the input (octets) - @param out [out] The ciphertext (or plaintext), length inlen - @return CRYPT_OK if successful -*/ -int rc4_stream_crypt(rc4_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out) -{ - unsigned char x, y, *s, tmp; - - LTC_ARGCHK(st != NULL); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - - x = st->x; - y = st->y; - s = st->buf; - while (inlen--) { - x = (x + 1) & 255; - y = (y + s[x]) & 255; - tmp = s[x]; s[x] = s[y]; s[y] = tmp; - tmp = (s[x] + s[y]) & 255; - *out++ = *in++ ^ s[tmp]; - } - st->x = x; - st->y = y; - return CRYPT_OK; -} - -/** - Generate a stream of random bytes via RC4 - @param st The RC420 state - @param out [out] The output buffer - @param outlen The output length - @return CRYPT_OK on success - */ -int rc4_stream_keystream(rc4_state *st, unsigned char *out, unsigned long outlen) -{ - if (outlen == 0) return CRYPT_OK; /* nothing to do */ - LTC_ARGCHK(out != NULL); - XMEMSET(out, 0, outlen); - return rc4_stream_crypt(st, out, outlen, out); -} - -/** - Terminate and clear RC4 state - @param st The RC4 state - @return CRYPT_OK on success -*/ -int rc4_stream_done(rc4_state *st) -{ - LTC_ARGCHK(st != NULL); - XMEMSET(st, 0, sizeof(rc4_state)); - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/stream/rc4/rc4_test.c b/src/libtomcrypt/src/stream/rc4/rc4_test.c deleted file mode 100644 index 0f9445502a..0000000000 --- a/src/libtomcrypt/src/stream/rc4/rc4_test.c +++ /dev/null @@ -1,39 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_RC4_STREAM - -int rc4_stream_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - rc4_state st; - int err; - const unsigned char key[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }; - const unsigned char pt[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }; - const unsigned char ct[] = { 0x75, 0xb7, 0x87, 0x80, 0x99, 0xe0, 0xc5, 0x96 }; - unsigned char buf[10]; - - if ((err = rc4_stream_setup(&st, key, sizeof(key))) != CRYPT_OK) return err; - if ((err = rc4_stream_crypt(&st, pt, sizeof(pt), buf)) != CRYPT_OK) return err; - if (compare_testvector(buf, sizeof(ct), ct, sizeof(ct), "RC4", 0)) return CRYPT_FAIL_TESTVECTOR; - if ((err = rc4_stream_done(&st)) != CRYPT_OK) return err; - - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/stream/sober128/sober128_stream.c b/src/libtomcrypt/src/stream/sober128/sober128_stream.c deleted file mode 100644 index 353832e238..0000000000 --- a/src/libtomcrypt/src/stream/sober128/sober128_stream.c +++ /dev/null @@ -1,346 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file sober128_stream.c - Implementation of SOBER-128 by Tom St Denis. - Based on s128fast.c reference code supplied by Greg Rose of QUALCOMM. -*/ - -#ifdef LTC_SOBER128 - -#define __LTC_SOBER128TAB_C__ -#include "sober128tab.c" - -/* don't change these... */ -#define N 17 -#define FOLD N /* how many iterations of folding to do */ -#define INITKONST 0x6996c53a /* value of KONST to use during key loading */ -#define KEYP 15 /* where to insert key words */ -#define FOLDP 4 /* where to insert non-linear feedback */ - -#define B(x,i) ((unsigned char)(((x) >> (8*i)) & 0xFF)) - -static ulong32 BYTE2WORD(unsigned char *b) -{ - ulong32 t; - LOAD32L(t, b); - return t; -} - -static void XORWORD(ulong32 w, const unsigned char *in, unsigned char *out) -{ - ulong32 t; - LOAD32L(t, in); - t ^= w; - STORE32L(t, out); -} - -/* give correct offset for the current position of the register, - * where logically R[0] is at position "zero". - */ -#define OFF(zero, i) (((zero)+(i)) % N) - -/* step the LFSR */ -/* After stepping, "zero" moves right one place */ -#define STEP(R,z) \ - R[OFF(z,0)] = R[OFF(z,15)] ^ R[OFF(z,4)] ^ (R[OFF(z,0)] << 8) ^ Multab[(R[OFF(z,0)] >> 24) & 0xFF]; - -static void cycle(ulong32 *R) -{ - ulong32 t; - int i; - - STEP(R,0); - t = R[0]; - for (i = 1; i < N; ++i) { - R[i-1] = R[i]; - } - R[N-1] = t; -} - -/* Return a non-linear function of some parts of the register. - */ -#define NLFUNC(c,z) \ -{ \ - t = c->R[OFF(z,0)] + c->R[OFF(z,16)]; \ - t ^= Sbox[(t >> 24) & 0xFF]; \ - t = RORc(t, 8); \ - t = ((t + c->R[OFF(z,1)]) ^ c->konst) + c->R[OFF(z,6)]; \ - t ^= Sbox[(t >> 24) & 0xFF]; \ - t = t + c->R[OFF(z,13)]; \ -} - -static ulong32 nltap(sober128_state *c) -{ - ulong32 t; - NLFUNC(c, 0); - return t; -} - -/* Save the current register state - */ -static void s128_savestate(sober128_state *c) -{ - int i; - for (i = 0; i < N; ++i) { - c->initR[i] = c->R[i]; - } -} - -/* initialise to previously saved register state - */ -static void s128_reloadstate(sober128_state *c) -{ - int i; - - for (i = 0; i < N; ++i) { - c->R[i] = c->initR[i]; - } -} - -/* Initialise "konst" - */ -static void s128_genkonst(sober128_state *c) -{ - ulong32 newkonst; - - do { - cycle(c->R); - newkonst = nltap(c); - } while ((newkonst & 0xFF000000) == 0); - c->konst = newkonst; -} - -/* Load key material into the register - */ -#define ADDKEY(k) \ - c->R[KEYP] += (k); - -#define XORNL(nl) \ - c->R[FOLDP] ^= (nl); - -/* nonlinear diffusion of register for key */ -#define DROUND(z) STEP(c->R,z); NLFUNC(c,(z+1)); c->R[OFF((z+1),FOLDP)] ^= t; -static void s128_diffuse(sober128_state *c) -{ - ulong32 t; - /* relies on FOLD == N == 17! */ - DROUND(0); - DROUND(1); - DROUND(2); - DROUND(3); - DROUND(4); - DROUND(5); - DROUND(6); - DROUND(7); - DROUND(8); - DROUND(9); - DROUND(10); - DROUND(11); - DROUND(12); - DROUND(13); - DROUND(14); - DROUND(15); - DROUND(16); -} - -/** - Initialize an Sober128 context (only the key) - @param c [out] The destination of the Sober128 state - @param key The secret key - @param keylen The length of the secret key (octets) - @return CRYPT_OK if successful -*/ -int sober128_stream_setup(sober128_state *c, const unsigned char *key, unsigned long keylen) -{ - ulong32 i, k; - - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(keylen > 0); - - /* keylen must be multiple of 4 bytes */ - if ((keylen & 3) != 0) { - return CRYPT_INVALID_KEYSIZE; - } - - /* Register initialised to Fibonacci numbers */ - c->R[0] = 1; - c->R[1] = 1; - for (i = 2; i < N; ++i) { - c->R[i] = c->R[i-1] + c->R[i-2]; - } - c->konst = INITKONST; - - for (i = 0; i < keylen; i += 4) { - k = BYTE2WORD((unsigned char *)&key[i]); - ADDKEY(k); - cycle(c->R); - XORNL(nltap(c)); - } - - /* also fold in the length of the key */ - ADDKEY(keylen); - - /* now diffuse */ - s128_diffuse(c); - s128_genkonst(c); - s128_savestate(c); - c->nbuf = 0; - - return CRYPT_OK; -} - -/** - Set IV to the Sober128 state - @param c The Sober12820 state - @param iv The IV data to add - @param ivlen The length of the IV (must be 12) - @return CRYPT_OK on success - */ -int sober128_stream_setiv(sober128_state *c, const unsigned char *iv, unsigned long ivlen) -{ - ulong32 i, k; - - LTC_ARGCHK(c != NULL); - LTC_ARGCHK(iv != NULL); - LTC_ARGCHK(ivlen > 0); - - /* ok we are adding an IV then... */ - s128_reloadstate(c); - - /* ivlen must be multiple of 4 bytes */ - if ((ivlen & 3) != 0) { - return CRYPT_INVALID_KEYSIZE; - } - - for (i = 0; i < ivlen; i += 4) { - k = BYTE2WORD((unsigned char *)&iv[i]); - ADDKEY(k); - cycle(c->R); - XORNL(nltap(c)); - } - - /* also fold in the length of the key */ - ADDKEY(ivlen); - - /* now diffuse */ - s128_diffuse(c); - c->nbuf = 0; - - return CRYPT_OK; -} - -/* XOR pseudo-random bytes into buffer - */ -#define SROUND(z) STEP(c->R,z); NLFUNC(c,(z+1)); XORWORD(t, in+(z*4), out+(z*4)); - -/** - Encrypt (or decrypt) bytes of ciphertext (or plaintext) with Sober128 - @param c The Sober128 state - @param in The plaintext (or ciphertext) - @param inlen The length of the input (octets) - @param out [out] The ciphertext (or plaintext), length inlen - @return CRYPT_OK if successful -*/ -int sober128_stream_crypt(sober128_state *c, const unsigned char *in, unsigned long inlen, unsigned char *out) -{ - ulong32 t; - - if (inlen == 0) return CRYPT_OK; /* nothing to do */ - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(c != NULL); - - /* handle any previously buffered bytes */ - while (c->nbuf != 0 && inlen != 0) { - *out++ = *in++ ^ (unsigned char)(c->sbuf & 0xFF); - c->sbuf >>= 8; - c->nbuf -= 8; - --inlen; - } - -#ifndef LTC_SMALL_CODE - /* do lots at a time, if there's enough to do */ - while (inlen >= N*4) { - SROUND(0); - SROUND(1); - SROUND(2); - SROUND(3); - SROUND(4); - SROUND(5); - SROUND(6); - SROUND(7); - SROUND(8); - SROUND(9); - SROUND(10); - SROUND(11); - SROUND(12); - SROUND(13); - SROUND(14); - SROUND(15); - SROUND(16); - out += 4*N; - in += 4*N; - inlen -= 4*N; - } -#endif - - /* do small or odd size buffers the slow way */ - while (4 <= inlen) { - cycle(c->R); - t = nltap(c); - XORWORD(t, in, out); - out += 4; - in += 4; - inlen -= 4; - } - - /* handle any trailing bytes */ - if (inlen != 0) { - cycle(c->R); - c->sbuf = nltap(c); - c->nbuf = 32; - while (c->nbuf != 0 && inlen != 0) { - *out++ = *in++ ^ (unsigned char)(c->sbuf & 0xFF); - c->sbuf >>= 8; - c->nbuf -= 8; - --inlen; - } - } - - return CRYPT_OK; -} - -int sober128_stream_keystream(sober128_state *c, unsigned char *out, unsigned long outlen) -{ - if (outlen == 0) return CRYPT_OK; /* nothing to do */ - LTC_ARGCHK(out != NULL); - XMEMSET(out, 0, outlen); - return sober128_stream_crypt(c, out, outlen, out); -} - -/** - Terminate and clear Sober128 state - @param c The Sober128 state - @return CRYPT_OK on success -*/ -int sober128_stream_done(sober128_state *c) -{ - LTC_ARGCHK(c != NULL); - XMEMSET(c, 0, sizeof(sober128_state)); - return CRYPT_OK; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/stream/sober128/sober128_test.c b/src/libtomcrypt/src/stream/sober128/sober128_test.c deleted file mode 100644 index 2b4bf21f33..0000000000 --- a/src/libtomcrypt/src/stream/sober128/sober128_test.c +++ /dev/null @@ -1,45 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "tomcrypt.h" - -#ifdef LTC_SOBER128 - -int sober128_stream_test(void) -{ -#ifndef LTC_TEST - return CRYPT_NOP; -#else - unsigned char key[16] = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6b, 0x65, 0x79, - 0x20, 0x31, 0x32, 0x38, 0x62, 0x69, 0x74, 0x73 }; - unsigned char iv[4] = { 0x00, 0x00, 0x00, 0x00 }; - unsigned char out[20] = { 0x43, 0x50, 0x0c, 0xcf, 0x89, 0x91, 0x9f, 0x1d, - 0xaa, 0x37, 0x74, 0x95, 0xf4, 0xb4, 0x58, 0xc2, - 0x40, 0x37, 0x8b, 0xbb }; - int err, len = 20; - unsigned char src[20], dst[20]; - sober128_state st; - - XMEMSET(src, 0, len); /* input */ - if ((err = sober128_stream_setup(&st, key, sizeof(key))) != CRYPT_OK) return err; - if ((err = sober128_stream_setiv(&st, iv, sizeof(iv))) != CRYPT_OK) return err; - if ((err = sober128_stream_crypt(&st, src, len, dst)) != CRYPT_OK) return err; - if ((err = sober128_stream_done(&st)) != CRYPT_OK) return err; - if (compare_testvector(dst, len, out, len, "SOBER-128", 0)) { - return CRYPT_FAIL_TESTVECTOR; - } - return CRYPT_OK; -#endif -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/src/stream/sober128/sober128tab.c b/src/libtomcrypt/src/stream/sober128/sober128tab.c deleted file mode 100644 index 3a136d922a..0000000000 --- a/src/libtomcrypt/src/stream/sober128/sober128tab.c +++ /dev/null @@ -1,176 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -/** - @file sober128tab.c - SOBER-128 Tables -*/ - -#ifdef __LTC_SOBER128TAB_C__ - -/* $ID$ */ -/* @(#)TuringMultab.h 1.3 (QUALCOMM) 02/09/03 */ -/* Multiplication table for Turing using 0xD02B4367 */ -static const ulong32 Multab[256] = { - 0x00000000, 0xD02B4367, 0xED5686CE, 0x3D7DC5A9, - 0x97AC41D1, 0x478702B6, 0x7AFAC71F, 0xAAD18478, - 0x631582EF, 0xB33EC188, 0x8E430421, 0x5E684746, - 0xF4B9C33E, 0x24928059, 0x19EF45F0, 0xC9C40697, - 0xC62A4993, 0x16010AF4, 0x2B7CCF5D, 0xFB578C3A, - 0x51860842, 0x81AD4B25, 0xBCD08E8C, 0x6CFBCDEB, - 0xA53FCB7C, 0x7514881B, 0x48694DB2, 0x98420ED5, - 0x32938AAD, 0xE2B8C9CA, 0xDFC50C63, 0x0FEE4F04, - 0xC154926B, 0x117FD10C, 0x2C0214A5, 0xFC2957C2, - 0x56F8D3BA, 0x86D390DD, 0xBBAE5574, 0x6B851613, - 0xA2411084, 0x726A53E3, 0x4F17964A, 0x9F3CD52D, - 0x35ED5155, 0xE5C61232, 0xD8BBD79B, 0x089094FC, - 0x077EDBF8, 0xD755989F, 0xEA285D36, 0x3A031E51, - 0x90D29A29, 0x40F9D94E, 0x7D841CE7, 0xADAF5F80, - 0x646B5917, 0xB4401A70, 0x893DDFD9, 0x59169CBE, - 0xF3C718C6, 0x23EC5BA1, 0x1E919E08, 0xCEBADD6F, - 0xCFA869D6, 0x1F832AB1, 0x22FEEF18, 0xF2D5AC7F, - 0x58042807, 0x882F6B60, 0xB552AEC9, 0x6579EDAE, - 0xACBDEB39, 0x7C96A85E, 0x41EB6DF7, 0x91C02E90, - 0x3B11AAE8, 0xEB3AE98F, 0xD6472C26, 0x066C6F41, - 0x09822045, 0xD9A96322, 0xE4D4A68B, 0x34FFE5EC, - 0x9E2E6194, 0x4E0522F3, 0x7378E75A, 0xA353A43D, - 0x6A97A2AA, 0xBABCE1CD, 0x87C12464, 0x57EA6703, - 0xFD3BE37B, 0x2D10A01C, 0x106D65B5, 0xC04626D2, - 0x0EFCFBBD, 0xDED7B8DA, 0xE3AA7D73, 0x33813E14, - 0x9950BA6C, 0x497BF90B, 0x74063CA2, 0xA42D7FC5, - 0x6DE97952, 0xBDC23A35, 0x80BFFF9C, 0x5094BCFB, - 0xFA453883, 0x2A6E7BE4, 0x1713BE4D, 0xC738FD2A, - 0xC8D6B22E, 0x18FDF149, 0x258034E0, 0xF5AB7787, - 0x5F7AF3FF, 0x8F51B098, 0xB22C7531, 0x62073656, - 0xABC330C1, 0x7BE873A6, 0x4695B60F, 0x96BEF568, - 0x3C6F7110, 0xEC443277, 0xD139F7DE, 0x0112B4B9, - 0xD31DD2E1, 0x03369186, 0x3E4B542F, 0xEE601748, - 0x44B19330, 0x949AD057, 0xA9E715FE, 0x79CC5699, - 0xB008500E, 0x60231369, 0x5D5ED6C0, 0x8D7595A7, - 0x27A411DF, 0xF78F52B8, 0xCAF29711, 0x1AD9D476, - 0x15379B72, 0xC51CD815, 0xF8611DBC, 0x284A5EDB, - 0x829BDAA3, 0x52B099C4, 0x6FCD5C6D, 0xBFE61F0A, - 0x7622199D, 0xA6095AFA, 0x9B749F53, 0x4B5FDC34, - 0xE18E584C, 0x31A51B2B, 0x0CD8DE82, 0xDCF39DE5, - 0x1249408A, 0xC26203ED, 0xFF1FC644, 0x2F348523, - 0x85E5015B, 0x55CE423C, 0x68B38795, 0xB898C4F2, - 0x715CC265, 0xA1778102, 0x9C0A44AB, 0x4C2107CC, - 0xE6F083B4, 0x36DBC0D3, 0x0BA6057A, 0xDB8D461D, - 0xD4630919, 0x04484A7E, 0x39358FD7, 0xE91ECCB0, - 0x43CF48C8, 0x93E40BAF, 0xAE99CE06, 0x7EB28D61, - 0xB7768BF6, 0x675DC891, 0x5A200D38, 0x8A0B4E5F, - 0x20DACA27, 0xF0F18940, 0xCD8C4CE9, 0x1DA70F8E, - 0x1CB5BB37, 0xCC9EF850, 0xF1E33DF9, 0x21C87E9E, - 0x8B19FAE6, 0x5B32B981, 0x664F7C28, 0xB6643F4F, - 0x7FA039D8, 0xAF8B7ABF, 0x92F6BF16, 0x42DDFC71, - 0xE80C7809, 0x38273B6E, 0x055AFEC7, 0xD571BDA0, - 0xDA9FF2A4, 0x0AB4B1C3, 0x37C9746A, 0xE7E2370D, - 0x4D33B375, 0x9D18F012, 0xA06535BB, 0x704E76DC, - 0xB98A704B, 0x69A1332C, 0x54DCF685, 0x84F7B5E2, - 0x2E26319A, 0xFE0D72FD, 0xC370B754, 0x135BF433, - 0xDDE1295C, 0x0DCA6A3B, 0x30B7AF92, 0xE09CECF5, - 0x4A4D688D, 0x9A662BEA, 0xA71BEE43, 0x7730AD24, - 0xBEF4ABB3, 0x6EDFE8D4, 0x53A22D7D, 0x83896E1A, - 0x2958EA62, 0xF973A905, 0xC40E6CAC, 0x14252FCB, - 0x1BCB60CF, 0xCBE023A8, 0xF69DE601, 0x26B6A566, - 0x8C67211E, 0x5C4C6279, 0x6131A7D0, 0xB11AE4B7, - 0x78DEE220, 0xA8F5A147, 0x958864EE, 0x45A32789, - 0xEF72A3F1, 0x3F59E096, 0x0224253F, 0xD20F6658, -}; - -/* $ID$ */ -/* Sbox for SOBER-128 */ -/* - * This is really the combination of two SBoxes; the least significant - * 24 bits comes from: - * 8->32 Sbox generated by Millan et. al. at Queensland University of - * Technology. See: E. Dawson, W. Millan, L. Burnett, G. Carter, - * "On the Design of 8*32 S-boxes". Unpublished report, by the - * Information Systems Research Centre, - * Queensland University of Technology, 1999. - * - * The most significant 8 bits are the Skipjack "F table", which can be - * found at http://csrc.nist.gov/CryptoToolkit/skipjack/skipjack.pdf . - * In this optimised table, though, the intent is to XOR the word from - * the table selected by the high byte with the input word. Thus, the - * high byte is actually the Skipjack F-table entry XORED with its - * table index. - */ -static const ulong32 Sbox[256] = { - 0xa3aa1887, 0xd65e435c, 0x0b65c042, 0x800e6ef4, - 0xfc57ee20, 0x4d84fed3, 0xf066c502, 0xf354e8ae, - 0xbb2ee9d9, 0x281f38d4, 0x1f829b5d, 0x735cdf3c, - 0x95864249, 0xbc2e3963, 0xa1f4429f, 0xf6432c35, - 0xf7f40325, 0x3cc0dd70, 0x5f973ded, 0x9902dc5e, - 0xda175b42, 0x590012bf, 0xdc94d78c, 0x39aab26b, - 0x4ac11b9a, 0x8c168146, 0xc3ea8ec5, 0x058ac28f, - 0x52ed5c0f, 0x25b4101c, 0x5a2db082, 0x370929e1, - 0x2a1843de, 0xfe8299fc, 0x202fbc4b, 0x833915dd, - 0x33a803fa, 0xd446b2de, 0x46233342, 0x4fcee7c3, - 0x3ad607ef, 0x9e97ebab, 0x507f859b, 0xe81f2e2f, - 0xc55b71da, 0xd7e2269a, 0x1339c3d1, 0x7ca56b36, - 0xa6c9def2, 0xb5c9fc5f, 0x5927b3a3, 0x89a56ddf, - 0xc625b510, 0x560f85a7, 0xace82e71, 0x2ecb8816, - 0x44951e2a, 0x97f5f6af, 0xdfcbc2b3, 0xce4ff55d, - 0xcb6b6214, 0x2b0b83e3, 0x549ea6f5, 0x9de041af, - 0x792f1f17, 0xf73b99ee, 0x39a65ec0, 0x4c7016c6, - 0x857709a4, 0xd6326e01, 0xc7b280d9, 0x5cfb1418, - 0xa6aff227, 0xfd548203, 0x506b9d96, 0xa117a8c0, - 0x9cd5bf6e, 0xdcee7888, 0x61fcfe64, 0xf7a193cd, - 0x050d0184, 0xe8ae4930, 0x88014f36, 0xd6a87088, - 0x6bad6c2a, 0x1422c678, 0xe9204de7, 0xb7c2e759, - 0x0200248e, 0x013b446b, 0xda0d9fc2, 0x0414a895, - 0x3a6cc3a1, 0x56fef170, 0x86c19155, 0xcf7b8a66, - 0x551b5e69, 0xb4a8623e, 0xa2bdfa35, 0xc4f068cc, - 0x573a6acd, 0x6355e936, 0x03602db9, 0x0edf13c1, - 0x2d0bb16d, 0x6980b83c, 0xfeb23763, 0x3dd8a911, - 0x01b6bc13, 0xf55579d7, 0xf55c2fa8, 0x19f4196e, - 0xe7db5476, 0x8d64a866, 0xc06e16ad, 0xb17fc515, - 0xc46feb3c, 0x8bc8a306, 0xad6799d9, 0x571a9133, - 0x992466dd, 0x92eb5dcd, 0xac118f50, 0x9fafb226, - 0xa1b9cef3, 0x3ab36189, 0x347a19b1, 0x62c73084, - 0xc27ded5c, 0x6c8bc58f, 0x1cdde421, 0xed1e47fb, - 0xcdcc715e, 0xb9c0ff99, 0x4b122f0f, 0xc4d25184, - 0xaf7a5e6c, 0x5bbf18bc, 0x8dd7c6e0, 0x5fb7e420, - 0x521f523f, 0x4ad9b8a2, 0xe9da1a6b, 0x97888c02, - 0x19d1e354, 0x5aba7d79, 0xa2cc7753, 0x8c2d9655, - 0x19829da1, 0x531590a7, 0x19c1c149, 0x3d537f1c, - 0x50779b69, 0xed71f2b7, 0x463c58fa, 0x52dc4418, - 0xc18c8c76, 0xc120d9f0, 0xafa80d4d, 0x3b74c473, - 0xd09410e9, 0x290e4211, 0xc3c8082b, 0x8f6b334a, - 0x3bf68ed2, 0xa843cc1b, 0x8d3c0ff3, 0x20e564a0, - 0xf8f55a4f, 0x2b40f8e7, 0xfea7f15f, 0xcf00fe21, - 0x8a6d37d6, 0xd0d506f1, 0xade00973, 0xefbbde36, - 0x84670fa8, 0xfa31ab9e, 0xaedab618, 0xc01f52f5, - 0x6558eb4f, 0x71b9e343, 0x4b8d77dd, 0x8cb93da6, - 0x740fd52d, 0x425412f8, 0xc5a63360, 0x10e53ad0, - 0x5a700f1c, 0x8324ed0b, 0xe53dc1ec, 0x1a366795, - 0x6d549d15, 0xc5ce46d7, 0xe17abe76, 0x5f48e0a0, - 0xd0f07c02, 0x941249b7, 0xe49ed6ba, 0x37a47f78, - 0xe1cfffbd, 0xb007ca84, 0xbb65f4da, 0xb59f35da, - 0x33d2aa44, 0x417452ac, 0xc0d674a7, 0x2d61a46a, - 0xdc63152a, 0x3e12b7aa, 0x6e615927, 0xa14fb118, - 0xa151758d, 0xba81687b, 0xe152f0b3, 0x764254ed, - 0x34c77271, 0x0a31acab, 0x54f94aec, 0xb9e994cd, - 0x574d9e81, 0x5b623730, 0xce8a21e8, 0x37917f0b, - 0xe8a9b5d6, 0x9697adf8, 0xf3d30431, 0x5dcac921, - 0x76b35d46, 0xaa430a36, 0xc2194022, 0x22bca65e, - 0xdaec70ba, 0xdfaea8cc, 0x777bae8b, 0x242924d5, - 0x1f098a5a, 0x4b396b81, 0x55de2522, 0x435c1cb8, - 0xaeb8fe1d, 0x9db3c697, 0x5b164f83, 0xe0c16376, - 0xa319224c, 0xd0203b35, 0x433ac0fe, 0x1466a19a, - 0x45f0b24f, 0x51fda998, 0xc0d52d71, 0xfa0896a8, - 0xf9e6053f, 0xa4b0d300, 0xd499cbcc, 0xb95e3d40, -}; - -#endif /* __LTC_SOBER128TAB_C__ */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/testbuild.sh b/src/libtomcrypt/testbuild.sh deleted file mode 100644 index c4caa48388..0000000000 --- a/src/libtomcrypt/testbuild.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -# output version -bash printinfo.sh - -echo "$1 (Build Only, $2, $3)..." -make clean 1>/dev/null 2>/dev/null -echo -n "building..." -touch testok.txt -CFLAGS="$2 $CFLAGS $4" EXTRALIBS="$5" make -f $3 test tv_gen 1>gcc_1.txt 2>gcc_2.txt || (echo "build $1 failed see gcc_2.txt for more information" && cat gcc_2.txt && rm -f testok.txt && exit 1) -if find testok.txt -type f 1>/dev/null 2>/dev/null ; then - echo "successful" - exit 0 -fi -exit 1 diff --git a/src/libtomcrypt/testme.sh b/src/libtomcrypt/testme.sh deleted file mode 100644 index 5c259fa50b..0000000000 --- a/src/libtomcrypt/testme.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/bash - -if [ $# -lt 3 ] -then - echo "usage is: ${0##*/} " - echo "e.g. \"${0##*/} \"makefile -j9\" \"-DUSE_LTM -DLTM_DESC -I../libtommath\" ../libtommath/libtommath.a\"" - echo "to create aggregate coverage: pre-pend with LTC_COVERAGE=1" - exit -1 -fi - -# date -echo "date="`date` - -# check sources -bash check_source.sh "CHECK_SOURCES" " " "$1" "$2" "$3" || exit 1 - -mk="$1" - -[ "$LTC_COVERAGE" != "" ] && mk="$mk COVERAGE=1" - -# stock build -bash run.sh "STOCK" " " "$mk" "$2" "$3" || exit 1 - -# EASY build -bash run.sh "EASY" "-DLTC_EASY" "$mk" "$2" "$3" || exit 1 - -# SMALL code -bash run.sh "SMALL" "-DLTC_SMALL_CODE" "$mk" "$2" "$3" || exit 1 - -# NOTABLES -bash run.sh "NOTABLES" "-DLTC_NO_TABLES" "$mk" "$2" "$3" || exit 1 - -# SMALL+NOTABLES -bash run.sh "SMALL+NOTABLES" "-DLTC_SMALL_CODE -DLTC_NO_TABLES" "$mk" "$2" "$3" || exit 1 - -# CLEANSTACK -bash run.sh "CLEANSTACK" "-DLTC_CLEAN_STACK" "$mk" "$2" "$3" || exit 1 - -# CLEANSTACK + SMALL -bash run.sh "CLEANSTACK+SMALL" "-DLTC_SMALL_CODE -DLTC_CLEAN_STACK" "$mk" "$2" "$3" || exit 1 - -# CLEANSTACK + NOTABLES -bash run.sh "CLEANSTACK+NOTABLES" "-DLTC_NO_TABLES -DLTC_CLEAN_STACK" "$mk" "$2" "$3" || exit 1 - -# CLEANSTACK + NOTABLES + SMALL -bash run.sh "CLEANSTACK+NOTABLES+SMALL" "-DLTC_NO_TABLES -DLTC_CLEAN_STACK -DLTC_SMALL_CODE" "$mk" "$2" "$3" || exit 1 - -# NO_FAST -bash run.sh "NO_FAST" "-DLTC_NO_FAST" "$mk" "$2" "$3" || exit 1 - -# NO_FAST + NOTABLES -bash run.sh "NO_FAST+NOTABLES" "-DLTC_NO_FAST -DLTC_NO_TABLES" "$mk" "$2" "$3" || exit 1 - -# NO_ASM -bash run.sh "NO_ASM" "-DLTC_NO_ASM" "$mk" "$2" "$3" || exit 1 - -# NO_TIMING_RESISTANCE -bash run.sh "NO_TIMING_RESISTANCE" "-DLTC_NO_ECC_TIMING_RESISTANT -DLTC_NO_RSA_BLINDING" "$mk" "$2" "$3" || exit 1 - -# CLEANSTACK+NOTABLES+SMALL+NO_ASM+NO_TIMING_RESISTANCE -bash run.sh "CLEANSTACK+NOTABLES+SMALL+NO_ASM+NO_TIMING_RESISTANCE" "-DLTC_CLEAN_STACK -DLTC_NO_TABLES -DLTC_SMALL_CODE -DLTC_NO_ECC_TIMING_RESISTANT -DLTC_NO_RSA_BLINDING" "$mk" "$2" "$3" || exit 1 - -# test build with no testing -bash testbuild.sh "NOTEST" "-DLTC_NO_TEST" "$mk" "$2" "$3" || exit 1 - -# test build with no file routines -bash testbuild.sh "NOFILE" "-DLTC_NO_FILE" "$mk" "$2" "$3" || exit 1 - -# ref: HEAD -> master, tag: v1.18.2 -# git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 -# commit time: 2018-07-01 22:49:01 +0200 diff --git a/src/libtomcrypt/tests/base64_test.c b/src/libtomcrypt/tests/base64_test.c deleted file mode 100644 index e20cce089d..0000000000 --- a/src/libtomcrypt/tests/base64_test.c +++ /dev/null @@ -1,134 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -#if defined(LTC_BASE64) || defined(LTC_BASE64_URL) -int base64_test(void) -{ - unsigned char in[64], out[256], tmp[64]; - unsigned long x, l1, l2, slen1; - - const unsigned char special_case[] = { - 0xbe, 0xe8, 0x92, 0x3c, 0xa2, 0x25, 0xf0, 0xf8, - 0x91, 0xe4, 0xef, 0xab, 0x0b, 0x8c, 0xfd, 0xff, - 0x14, 0xd0, 0x29, 0x9d, 0x00 }; - -#if defined(LTC_BASE64) - /* - TEST CASES SOURCE: - - Network Working Group S. Josefsson - Request for Comments: 4648 SJD - Obsoletes: 3548 October 2006 - Category: Standards Track - */ - const struct { - const char* s; - const char* b64; - } cases[] = { - {"", "" }, - {"f", "Zg==" }, - {"fo", "Zm8=" }, - {"foo", "Zm9v" }, - {"foob", "Zm9vYg==" }, - {"fooba", "Zm9vYmE=" }, - {"foobar", "Zm9vYmFy"}, - {(char*)special_case,"vuiSPKIl8PiR5O+rC4z9/xTQKZ0="} - }; -#endif - -#ifdef LTC_BASE64_URL - const struct { - const char* s; - int is_strict; - } url_cases[] = { - {"vuiSPKIl8PiR5O-rC4z9_xTQKZ0", 0}, - {"vuiSPKIl8PiR5O-rC4z9_xTQKZ0=", 1}, - {"vuiS*PKIl8P*iR5O-rC4*z9_xTQKZ0", 0}, - {"vuiS*PKIl8P*iR5O-rC4*z9_xTQKZ0=", 0}, - {"vuiS*PKIl8P*iR5O-rC4*z9_xTQKZ0==", 0}, - {"vuiS*PKIl8P*iR5O-rC4*z9_xTQKZ0===", 0}, - {"vuiS*PKIl8P*iR5O-rC4*z9_xTQKZ0====", 0}, - {"vuiS*=PKIl8P*iR5O-rC4*z9_xTQKZ0=", 0}, - {"vuiS*==PKIl8P*iR5O-rC4*z9_xTQKZ0=", 0}, - {"vuiS*===PKIl8P*iR5O-rC4*z9_xTQKZ0=", 0}, - }; - - for (x = 0; x < sizeof(url_cases)/sizeof(url_cases[0]); ++x) { - slen1 = strlen(url_cases[x].s); - l1 = sizeof(out); - if(url_cases[x].is_strict) - DO(base64url_strict_decode((unsigned char*)url_cases[x].s, slen1, out, &l1)); - else - DO(base64url_decode((unsigned char*)url_cases[x].s, slen1, out, &l1)); - if (compare_testvector(out, l1, special_case, sizeof(special_case) - 1, "base64url decode", x)) { - return 1; - } - if(x < 2) { - l2 = sizeof(tmp); - if(x == 0) - DO(base64url_encode(out, l1, tmp, &l2)); - else - DO(base64url_strict_encode(out, l1, tmp, &l2)); - if (compare_testvector(tmp, l2, url_cases[x].s, strlen(url_cases[x].s), "base64url encode", x)) { - return 1; - } - } - } - - DO(base64url_strict_decode((unsigned char*)url_cases[4].s, slen1, out, &l1) == CRYPT_INVALID_PACKET ? CRYPT_OK : CRYPT_INVALID_PACKET); -#endif - -#if defined(LTC_BASE64) - for (x = 0; x < sizeof(cases)/sizeof(cases[0]); ++x) { - memset(out, 0, sizeof(out)); - memset(tmp, 0, sizeof(tmp)); - slen1 = strlen(cases[x].s); - l1 = sizeof(out); - DO(base64_encode((unsigned char*)cases[x].s, slen1, out, &l1)); - l2 = sizeof(tmp); - DO(base64_strict_decode(out, l1, tmp, &l2)); - if (compare_testvector(out, l1, cases[x].b64, strlen(cases[x].b64), "base64 encode", x) || - compare_testvector(tmp, l2, cases[x].s, slen1, "base64 decode", x)) { - return 1; - } - } - - for (x = 0; x < 64; x++) { - yarrow_read(in, x, &yarrow_prng); - l1 = sizeof(out); - DO(base64_encode(in, x, out, &l1)); - l2 = sizeof(tmp); - DO(base64_decode(out, l1, tmp, &l2)); - if (compare_testvector(tmp, x, in, x, "random base64", x)) { - return 1; - } - } - - x--; - memmove(&out[11], &out[10], l1 - 10); - out[10] = '='; - l1++; - l2 = sizeof(tmp); - DO(base64_decode(out, l1, tmp, &l2)); - if (compare_testvector(tmp, l2, in, l2, "relaxed base64 decoding", -1)) { - print_hex("input ", out, l1); - return 1; - } - l2 = sizeof(tmp); - DO(base64_strict_decode(out, l1, tmp, &l2) == CRYPT_INVALID_PACKET ? CRYPT_OK : CRYPT_INVALID_PACKET); -#endif - - return 0; -} -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/cipher_hash_test.c b/src/libtomcrypt/tests/cipher_hash_test.c deleted file mode 100644 index 3a1b7b7320..0000000000 --- a/src/libtomcrypt/tests/cipher_hash_test.c +++ /dev/null @@ -1,46 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -/* test the ciphers and hashes using their built-in self-tests */ - -#include - -int cipher_hash_test(void) -{ - int x; - - /* test ciphers */ - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - DOX(cipher_descriptor[x].test(), cipher_descriptor[x].name); - } - - /* stream ciphers */ -#ifdef LTC_CHACHA - DO(chacha_test()); -#endif -#ifdef LTC_RC4_STREAM - DO(rc4_stream_test()); -#endif -#ifdef LTC_SOBER128_STREAM - DO(sober128_stream_test()); -#endif - - /* test hashes */ - for (x = 0; hash_descriptor[x].name != NULL; x++) { - DOX(hash_descriptor[x].test(), hash_descriptor[x].name); - } - - /* SHAKE128 + SHAKE256 tests are a bit special */ - DOX(sha3_shake_test(), "sha3_shake"); - - return 0; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/common.c b/src/libtomcrypt/tests/common.c deleted file mode 100644 index 9f4a6b72a9..0000000000 --- a/src/libtomcrypt/tests/common.c +++ /dev/null @@ -1,68 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#include "common.h" - -/** - @file common.c - - Steffen Jaeckel -*/ - -void run_cmd(int res, int line, const char *file, const char *cmd, const char *algorithm) -{ - if (res != CRYPT_OK) { - fprintf(stderr, "%s (%d)%s%s\n%s:%d:%s\n", - error_to_string(res), res, - (algorithm ? " - " : ""), (algorithm ? algorithm : ""), - file, line, cmd); - if (res != CRYPT_NOP) { - exit(EXIT_FAILURE); - } - } -} - -void print_hex(const char* what, const void* v, const unsigned long l) -{ - const unsigned char* p = v; - unsigned long x, y = 0, z; - fprintf(stderr, "%s contents: \n", what); - for (x = 0; x < l; ) { - fprintf(stderr, "%02X ", p[x]); - if (!(++x % 16) || x == l) { - if((x % 16) != 0) { - z = 16 - (x % 16); - if(z >= 8) - fprintf(stderr, " "); - for (; z != 0; --z) { - fprintf(stderr, " "); - } - } - fprintf(stderr, " | "); - for(; y < x; y++) { - if((y % 8) == 0) - fprintf(stderr, " "); - if(isgraph(p[y])) - fprintf(stderr, "%c", p[y]); - else - fprintf(stderr, "."); - } - fprintf(stderr, "\n"); - } - else if((x % 8) == 0) { - fprintf(stderr, " "); - } - } -} - -prng_state yarrow_prng; - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/common.h b/src/libtomcrypt/tests/common.h deleted file mode 100644 index f4ec234153..0000000000 --- a/src/libtomcrypt/tests/common.h +++ /dev/null @@ -1,34 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#ifndef DEMOS_COMMON_H_ -#define DEMOS_COMMON_H_ - -#include - -extern prng_state yarrow_prng; - -#ifdef LTC_VERBOSE -#define DO(x) do { fprintf(stderr, "%s:\n", #x); run_cmd((x), __LINE__, __FILE__, #x, NULL); } while (0) -#define DOX(x, str) do { fprintf(stderr, "%s - %s:\n", #x, (str)); run_cmd((x), __LINE__, __FILE__, #x, (str)); } while (0) -#define SHOULD_FAIL(x) do { fprintf(stderr, "%s:\n", #x); run_cmd((x) != CRYPT_OK ? CRYPT_OK : CRYPT_FAIL_TESTVECTOR, __LINE__, __FILE__, #x, NULL); } while (0) -#else -#define DO(x) do { run_cmd((x), __LINE__, __FILE__, #x, NULL); } while (0) -#define DOX(x, str) do { run_cmd((x), __LINE__, __FILE__, #x, (str)); } while (0) -#define SHOULD_FAIL(x) do { run_cmd((x) != CRYPT_OK ? CRYPT_OK : CRYPT_FAIL_TESTVECTOR, __LINE__, __FILE__, #x, NULL); } while (0) -#endif - -void run_cmd(int res, int line, const char *file, const char *cmd, const char *algorithm); - -void print_hex(const char* what, const void* v, const unsigned long l); - -#endif /* DEMOS_COMMON_H_ */ - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/der_test.c b/src/libtomcrypt/tests/der_test.c deleted file mode 100644 index 0db4d699f5..0000000000 --- a/src/libtomcrypt/tests/der_test.c +++ /dev/null @@ -1,1472 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include -#if defined(GMP_LTC_DESC) || defined(USE_GMP) -#include -#endif - -#if !defined(LTC_DER) || !defined(LTC_TEST_MPI) - -int der_test(void) -{ - return CRYPT_NOP; -} - -#else - -static const unsigned char _der_tests_stinky_root_cert[] = - "MIIFETCCA/mgAwIBAgIQbv53JNmv518t5lkCHE272jANBgkqhkiG9w0BAQUFADCB" - "lTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug" - "Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho" - "dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAbBgNVBAMTFFVUTi1VU0VSRmlyc3Qt" - "T2JqZWN0MB4XDTA4MDQyOTAwMDAwMFoXDTEwMDQyOTIzNTk1OVowgbUxCzAJBgNV" - "BAYTAlVTMQ4wDAYDVQQRDAU0NDE0MzELMAkGA1UECAwCT0gxGTAXBgNVBAcMEE1h" - "eWZpZWxkIFZpbGxhZ2UxEDAOBgNVBAkMB1N1aXRlIEExFDASBgNVBAkMCzc2NyBC" - "ZXRhIERyMSIwIAYDVQQKDBlQcmVlbXB0aXZlIFNvbHV0aW9ucywgTExDMSIwIAYD" - "VQQDDBlQcmVlbXB0aXZlIFNvbHV0aW9ucywgTExDMIIBIjANBgkqhkiG9w0BAQEF" - "AAOCAQ8AMIIBCgKCAQEAzH7ZBkMcBuHx8d2f10RGTHAf7gzzVteGbOihJGH2BwlS" - "ZvNp6WEE4DfL+s1vp0wzk1XeLN5tRjg2qum9YqyCk7okh7pXGy46f5mWbLQiefGA" - "j5UXRcr6WJ3xeACdbXxKrYMV0REia+4Jb2UbFA8S81PjhRon6vcRz76ziUWwt8NC" - "igX+4ZC0skhhKzKszel6KGL7bJCtLG7ukw9DZCrvPCRcKFeM/GwQ6ACMgP88CSCL" - "t1fbIXDH1vd/x2XM3QlaSDN6hYDbef8m1T+9TCkXVKeqG1GYjSUrHzYnCZUmTRrR" - "38jgC3qXxiIpDKW105uM0nlXe2XF9c+ot2MdWvV4TwIDAQABo4IBOTCCATUwHwYD" - "VR0jBBgwFoAU2u1kdBScFDyr3ZmpvVsoTYs8ydgwHQYDVR0OBBYEFK+1HzZE4i28" - "oLIzuqlFR9SspiCIMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMBMGA1Ud" - "JQQMMAoGCCsGAQUFBwMDMBEGCWCGSAGG+EIBAQQEAwIEEDBGBgNVHSAEPzA9MDsG" - "DCsGAQQBsjEBAgEDAjArMCkGCCsGAQUFBwIBFh1odHRwczovL3NlY3VyZS5jb21v" - "ZG8ubmV0L0NQUzBCBgNVHR8EOzA5MDegNaAzhjFodHRwOi8vY3JsLnVzZXJ0cnVz" - "dC5jb20vVVROLVVTRVJGaXJzdC1PYmplY3QuY3JsMCEGA1UdEQQaMBiBFnN1cHBv" - "cnRAcHJlZW1wdGl2ZS5jb20wDQYJKoZIhvcNAQEFBQADggEBAC+JM26Dokvonudl" - "JXe/Yun7IBhimkagZUjbk9l/GQWN6i+v1o95UJ1wGJtBdm2+MxbSaPoNTDZR4B+2" - "lYL9MW57UVmePrnfUPXQKZZG+8gTRDz8+7ol/CEAKmS3MLKCRcH5oe+J5345sGxi" - "FC/KWNKedTNraW95xlg8NTlL2yRP7TMsjvBxgLmkbaFUoXzPTbQWmtovIagIT8GC" - "JeXwdFaRjbamiz3Irl+u7x/mhxdza6RvgBYylXRFMudANpeGsV7gDXlnfzpFDKHQ" - "niVwB7P5sbPFIlmIc+4/xRItkLIRjCVXaepgN9KYu3VOgiSDI6wXiTwP44/LUXQM" - "hetwa7s="; -const unsigned char _der_tests_cacert_root_cert[] = - "MIIHPTCCBSWgAwIBAgIBADANBgkqhkiG9w0BAQQFADB5MRAwDgYDVQQKEwdSb290" - "IENBMR4wHAYDVQQLExVodHRwOi8vd3d3LmNhY2VydC5vcmcxIjAgBgNVBAMTGUNB" - "IENlcnQgU2lnbmluZyBBdXRob3JpdHkxITAfBgkqhkiG9w0BCQEWEnN1cHBvcnRA" - "Y2FjZXJ0Lm9yZzAeFw0wMzAzMzAxMjI5NDlaFw0zMzAzMjkxMjI5NDlaMHkxEDAO" - "BgNVBAoTB1Jvb3QgQ0ExHjAcBgNVBAsTFWh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEi" - "MCAGA1UEAxMZQ0EgQ2VydCBTaWduaW5nIEF1dGhvcml0eTEhMB8GCSqGSIb3DQEJ" - "ARYSc3VwcG9ydEBjYWNlcnQub3JnMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC" - "CgKCAgEAziLA4kZ97DYoB1CW8qAzQIxL8TtmPzHlawI229Z89vGIj053NgVBlfkJ" - "8BLPRoZzYLdufujAWGSuzbCtRRcMY/pnCujW0r8+55jE8Ez64AO7NV1sId6eINm6" - "zWYyN3L69wj1x81YyY7nDl7qPv4coRQKFWyGhFtkZip6qUtTefWIonvuLwphK42y" - "fk1WpRPs6tqSnqxEQR5YYGUFZvjARL3LlPdCfgv3ZWiYUQXw8wWRBB0bF4LsyFe7" - "w2t6iPGwcswlWyCR7BYCEo8y6RcYSNDHBS4CMEK4JZwFaz+qOqfrU0j36NK2B5jc" - "G8Y0f3/JHIJ6BVgrCFvzOKKrF11myZjXnhCLotLddJr3cQxyYN/Nb5gznZY0dj4k" - "epKwDpUeb+agRThHqtdB7Uq3EvbXG4OKDy7YCbZZ16oE/9KTfWgu3YtLq1i6L43q" - "laegw1SJpfvbi1EinbLDvhG+LJGGi5Z4rSDTii8aP8bQUWWHIbEZAWV/RRyH9XzQ" - "QUxPKZgh/TMfdQwEUfoZd9vUFBzugcMd9Zi3aQaRIt0AUMyBMawSB3s42mhb5ivU" - "fslfrejrckzzAeVLIL+aplfKkQABi6F1ITe1Yw1nPkZPcCBnzsXWWdsC4PDSy826" - "YreQQejdIOQpvGQpQsgi3Hia/0PsmBsJUUtaWsJx8cTLc6nloQsCAwEAAaOCAc4w" - "ggHKMB0GA1UdDgQWBBQWtTIb1Mfz4OaO873SsDrusjkY0TCBowYDVR0jBIGbMIGY" - "gBQWtTIb1Mfz4OaO873SsDrusjkY0aF9pHsweTEQMA4GA1UEChMHUm9vdCBDQTEe" - "MBwGA1UECxMVaHR0cDovL3d3dy5jYWNlcnQub3JnMSIwIAYDVQQDExlDQSBDZXJ0" - "IFNpZ25pbmcgQXV0aG9yaXR5MSEwHwYJKoZIhvcNAQkBFhJzdXBwb3J0QGNhY2Vy" - "dC5vcmeCAQAwDwYDVR0TAQH/BAUwAwEB/zAyBgNVHR8EKzApMCegJaAjhiFodHRw" - "czovL3d3dy5jYWNlcnQub3JnL3Jldm9rZS5jcmwwMAYJYIZIAYb4QgEEBCMWIWh0" - "dHBzOi8vd3d3LmNhY2VydC5vcmcvcmV2b2tlLmNybDA0BglghkgBhvhCAQgEJxYl" - "aHR0cDovL3d3dy5jYWNlcnQub3JnL2luZGV4LnBocD9pZD0xMDBWBglghkgBhvhC" - "AQ0ESRZHVG8gZ2V0IHlvdXIgb3duIGNlcnRpZmljYXRlIGZvciBGUkVFIGhlYWQg" - "b3ZlciB0byBodHRwOi8vd3d3LmNhY2VydC5vcmcwDQYJKoZIhvcNAQEEBQADggIB" - "ACjH7pyCArpcgBLKNQodgW+JapnM8mgPf6fhjViVPr3yBsOQWqy1YPaZQwGjiHCc" - "nWKdpIevZ1gNMDY75q1I08t0AoZxPuIrA2jxNGJARjtT6ij0rPtmlVOKTV39O9lg" - "18p5aTuxZZKmxoGCXJzN600BiqXfEVWqFcofN8CCmHBh22p8lqOOLlQ+TyGpkO/c" - "gr/c6EWtTZBzCDyUZbAEmXZ/4rzCahWqlwQ3JNgelE5tDlG+1sSPypZt90Pf6DBl" - "Jzt7u0NDY8RD97LsaMzhGY4i+5jhe1o+ATc7iwiwovOVThrLm82asduycPAtStvY" - "sONvRUgzEv/+PDIqVPfE94rwiCPCR/5kenHA0R6mY7AHfqQv0wGP3J8rtsYIqQ+T" - "SCX8Ev2fQtzzxD72V7DX3WnRBnc0CkvSyqD/HMaMyRa+xMwyN2hzXwj7UfdJUzYF" - "CpUCTPJ5GhD22Dp1nPMd8aINcGeGG7MW9S/lpOt5hvk9C8JzC6WZrG/8Z7jlLwum" - "GCSNe9FINSkYQKyTYOGWhlC0elnYjyELn8+CkcY7v2vcB5G5l1YjqrZslMZIBjzk" - "zk6q5PYvCdxTby78dOs6Y5nCpqyJvKeyRKANihDjbPIky/qbn3BHLt4Ui9SyIAmW" - "omTxJBzcoTWcFbLUvFUufQb1nA5V9FrWk9p2rSVzTMVD"; -const unsigned long _der_tests_cacert_root_cert_size = sizeof(_der_tests_cacert_root_cert); - -/* -SEQUENCE(3 elem) - SEQUENCE(8 elem) - [0](1) - INTEGER 2 - INTEGER 0 - SEQUENCE(2 elem) - OBJECT IDENTIFIER 1.2.840.113549.1.1.4 - NULL - SEQUENCE(4 elem) - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.5.4.10 - PrintableString Root CA - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.5.4.11 - PrintableString http://www.cacert.org - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.5.4.3 - PrintableString CA Cert Signing Authority - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 1.2.840.113549.1.9.1 - IA5String support@cacert.org - SEQUENCE(2 elem) - UTCTime03-03-30 12:29:49 UTC - UTCTime33-03-29 12:29:49 UTC - SEQUENCE(4 elem) - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.5.4.10 - PrintableString Root CA - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.5.4.11 - PrintableString http://www.cacert.org - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.5.4.3 - PrintableString CA Cert Signing Authority - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 1.2.840.113549.1.9.1 - IA5String support@cacert.org - SEQUENCE(2 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 1.2.840.113549.1.1.1 - NULL - BIT STRING(1 elem) - SEQUENCE(2 elem) - INTEGER (4096 bit) - INTEGER 65537 - [3](1) - SEQUENCE(7 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.5.29.14 - OCTET STRING(1 elem) - OCTET STRING(20 byte) 16B5321BD4C7F3E0E68EF3BDD2B03AEEB23918D1 - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.5.29.35 - OCTET STRING(1 elem) - SEQUENCE(3 elem) - [0] - [1](1) - [4](1) - SEQUENCE(4 elem) - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.5.4.10 - PrintableString Root CA - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.5.4.11 - PrintableString http://www.cacert.org - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.5.4.3 - PrintableString CA Cert Signing Authority - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 1.2.840.113549.1.9.1 - IA5String support@cacert.org - [2] - SEQUENCE(3 elem) - OBJECT IDENTIFIER 2.5.29.19 - BOOLEAN true - OCTET STRING(1 elem) - SEQUENCE(1 elem) - BOOLEAN true - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.5.29.31 - OCTET STRING(1 elem) - SEQUENCE(1 elem) - SEQUENCE(1 elem) - [0](1) - [0](1) - [6] - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.16.840.1.113730.1.4 - OCTET STRING(1 elem) - IA5String https://www.cacert.org/revoke.crl - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.16.840.1.113730.1.8 - OCTET STRING(1 elem) - IA5String http://www.cacert.org/index.php?id=10 - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.16.840.1.113730.1.13 - OCTET STRING(1 elem) - IA5String To get your own certificate for FREE head over to http://www.cacert.org - SEQUENCE(2 elem) - OBJECT IDENTIFIER 1.2.840.113549.1.1.4 - NULL - BIT STRING(4096 bit) - */ - -#define __ASN1_FMTSTRING_FMT "line: %d, type=%d, size=%lu, data=%p, self=%p, next=%p, prev=%p, parent=%p, child=%p" -#define __ASN1_FMTSTRING_VAL(l) __LINE__, (l)->type, (l)->size, (l)->data, (l), (l)->next, (l)->prev, (l)->parent, (l)->child - -#define __ASN1_ERR(l) fprintf(stderr, __ASN1_FMTSTRING_FMT "\n", __ASN1_FMTSTRING_VAL(l)); \ - exit(EXIT_FAILURE) - -#define __CHECK_ASN1_HAS(l, w) do { if ((l)->w == NULL) { \ - __ASN1_ERR(l);\ -} } while(0) - -#define __CHECK_ASN1_HAS_NO(l, w) do { if ((l)->w != NULL) { \ - __ASN1_ERR(l);\ -} } while(0) - - - -#define CHECK_ASN1_TYPE(l, t) do { if ((l)->type != (t)) { \ - __ASN1_ERR(l);\ -} } while(0) - -#define CHECK_ASN1_HAS_CHILD(l) __CHECK_ASN1_HAS(l, child) -#define CHECK_ASN1_HAS_NO_CHILD(l) __CHECK_ASN1_HAS_NO(l, child) -#define CHECK_ASN1_HAS_NEXT(l) __CHECK_ASN1_HAS(l, next) -#define CHECK_ASN1_HAS_NO_NEXT(l) __CHECK_ASN1_HAS_NO(l, next) -#define CHECK_ASN1_HAS_DATA(l) __CHECK_ASN1_HAS(l, data) -#define CHECK_ASN1_HAS_NO_DATA(l) __CHECK_ASN1_HAS_NO(l, data) - -#ifdef LTC_DER_TESTS_PRINT_FLEXI -static void _der_tests_print_flexi(ltc_asn1_list* l, unsigned int level) -{ - char buf[1024]; - const char* name = NULL; - const char* text = NULL; - ltc_asn1_list* ostring = NULL; - unsigned int n; - - switch (l->type) - { - case LTC_ASN1_EOL: - name = "EOL"; - snprintf(buf, sizeof(buf),__ASN1_FMTSTRING_FMT "\n", __ASN1_FMTSTRING_VAL(l)); - text = buf; - break; - case LTC_ASN1_BOOLEAN: - name = "BOOLEAN"; - { - if (*(int*)l->data) - text = "true"; - else - text = "false"; - } - break; - case LTC_ASN1_INTEGER: - name = "INTEGER"; - break; - case LTC_ASN1_SHORT_INTEGER: - name = "SHORT INTEGER"; - break; - case LTC_ASN1_BIT_STRING: - name = "BIT STRING"; - break; - case LTC_ASN1_OCTET_STRING: - name = "OCTET STRING"; - { - unsigned long ostring_l = l->size; - /* sometimes there's another sequence in an octet string... - * try to decode that... if it fails print out the octet string - */ - if (der_decode_sequence_flexi(l->data, &ostring_l, &ostring) == CRYPT_OK) { - text = ""; - } - else { - int r; - char* s = buf; - int sz = sizeof(buf); - for (n = 0; n < l->size; ++n) { - r = snprintf(s, sz, "%02X", ((unsigned char*)l->data)[n]); - if (r < 0 || r >= sz) { - fprintf(stderr, "%s boom\n", name); - exit(EXIT_FAILURE); - } - s += r; - sz -= r; - } - text = buf; - } - } - break; - case LTC_ASN1_NULL: - name = "NULL"; - text = ""; - break; - case LTC_ASN1_OBJECT_IDENTIFIER: - name = "OBJECT IDENTIFIER"; - { - unsigned long i; - int r; - char* s = buf; - int sz = sizeof(buf); - for (i = 0; i < l->size; ++i) { - r = snprintf(s, sz, "%lu.", ((unsigned long*)l->data)[i]); - if (r < 0 || r >= sz) { - fprintf(stderr, "%s boom\n", name); - exit(EXIT_FAILURE); - } - s += r; - sz -= r; - } - /* replace the last . with a \0 */ - *(s - 1) = '\0'; - text = buf; - } - break; - case LTC_ASN1_IA5_STRING: - name = "IA5 STRING"; - text = l->data; - break; - case LTC_ASN1_PRINTABLE_STRING: - name = "PRINTABLE STRING"; - text = l->data; - break; - case LTC_ASN1_UTF8_STRING: - name = "UTF8 STRING"; - break; - case LTC_ASN1_UTCTIME: - name = "UTCTIME"; - { - ltc_utctime* ut = l->data; - snprintf(buf, sizeof(buf), "%02d-%02d-%02d %02d:%02d:%02d %c%02d:%02d", - ut->YY, ut->MM, ut->DD, ut->hh, ut->mm, ut->ss, - ut->off_dir ? '-' : '+', ut->off_hh, ut->off_mm); - text = buf; - } - break; - case LTC_ASN1_GENERALIZEDTIME: - name = "GENERALIZED TIME"; - { - ltc_generalizedtime* gt = l->data; - if(gt->fs) - snprintf(buf, sizeof(buf), "%04d-%02d-%02d %02d:%02d:%02d.%02dZ", - gt->YYYY, gt->MM, gt->DD, gt->hh, gt->mm, gt->ss, gt->fs); - else - snprintf(buf, sizeof(buf), "%04d-%02d-%02d %02d:%02d:%02dZ", - gt->YYYY, gt->MM, gt->DD, gt->hh, gt->mm, gt->ss); - text = buf; - } - break; - case LTC_ASN1_CHOICE: - name = "CHOICE"; - break; - case LTC_ASN1_SEQUENCE: - name = "SEQUENCE"; - text = ""; - break; - case LTC_ASN1_SET: - name = "SET"; - text = ""; - break; - case LTC_ASN1_SETOF: - name = "SETOF"; - text = ""; - break; - case LTC_ASN1_RAW_BIT_STRING: - name = "RAW BIT STRING"; - break; - case LTC_ASN1_TELETEX_STRING: - name = "TELETEX STRING"; - text = l->data; - break; - case LTC_ASN1_CONSTRUCTED: - if (l->used & 0x80) - name = "CONTEXT SPECIFIC"; - else - name = "CONSTRUCTED"; - snprintf(buf, sizeof(buf), "[%d]", l->used & 0x1f); - text = buf; - break; - case LTC_ASN1_CONTEXT_SPECIFIC: - name = "CONTEXT SPECIFIC"; - { - int r; - char* s = buf; - int sz = sizeof(buf); - r = snprintf(s, sz, "[%d] ", l->used & 0x1f); - if (r < 0 || r >= sz) { - printf("Context Specific boom"); - exit(EXIT_FAILURE); - } - s += r; - sz -= r; - for (n = 0; n < l->size; ++n) { - r = snprintf(s, sz, "%02X", ((unsigned char*)l->data)[n]); - if (r < 0 || r >= sz) { - printf("Context Specific boom"); - exit(EXIT_FAILURE); - } - s += r; - sz -= r; - } - text = buf; - } - break; - } - - for (n = 0; n < level; ++n) { - fprintf(stderr, " "); - } - if (name) { - if (text) - fprintf(stderr, "%s %s\n", name, text); - else - fprintf(stderr, "%s \n", name); - } - else - fprintf(stderr, "WTF type=%i\n", l->type); - - if (ostring) { - _der_tests_print_flexi(ostring, level + 1); - der_free_sequence_flexi(ostring); - } - - if (l->child) - _der_tests_print_flexi(l->child, level + 1); - - if (l->next) - _der_tests_print_flexi(l->next, level); -} -#endif - -static void der_cacert_test(void) -{ - unsigned char buf[sizeof(_der_tests_cacert_root_cert)]; - unsigned long len1 = sizeof(buf), len2; - - ltc_asn1_list *decoded_list, *l, *l1, *l2; - - DO(base64_decode(_der_tests_stinky_root_cert, sizeof(_der_tests_stinky_root_cert), buf, &len1)); - len2 = len1; - DO(der_decode_sequence_flexi(buf, &len2, &decoded_list)); - der_free_sequence_flexi(decoded_list); - - len1 = sizeof(buf); - DO(base64_decode(_der_tests_cacert_root_cert, sizeof(_der_tests_cacert_root_cert), buf, &len1)); - len2 = len1; - DO(der_decode_sequence_flexi(buf, &len2, &decoded_list)); - CHECK_ASN1_TYPE(decoded_list, LTC_ASN1_SEQUENCE); - CHECK_ASN1_HAS_DATA(decoded_list); - - der_sequence_shrink(decoded_list); - - CHECK_ASN1_TYPE(decoded_list, LTC_ASN1_SEQUENCE); - CHECK_ASN1_HAS_NO_DATA(decoded_list); - -#ifdef LTC_DER_TESTS_PRINT_FLEXI - printf("\n\n--- test print start ---\n\n"); - _der_tests_print_flexi(decoded_list, 0); - printf("\n\n--- test print end ---\n\n"); -#endif - - l = decoded_list; - - /* -SEQUENCE(3 elem) - SEQUENCE(8 elem) - */ - - CHECK_ASN1_TYPE(l, LTC_ASN1_SEQUENCE); - CHECK_ASN1_HAS_CHILD(l); - CHECK_ASN1_HAS_NO_NEXT(l); - - l = l->child; - - CHECK_ASN1_TYPE(l, LTC_ASN1_SEQUENCE); - CHECK_ASN1_HAS_CHILD(l); - CHECK_ASN1_HAS_NEXT(l); - - l1 = l->child; - - /* - [0](1) - INTEGER 2 - */ - - CHECK_ASN1_TYPE(l1, LTC_ASN1_CONSTRUCTED); - CHECK_ASN1_HAS_CHILD(l1); - CHECK_ASN1_HAS_NEXT(l1); - - l2 = l1->child; - - CHECK_ASN1_TYPE(l2, LTC_ASN1_INTEGER); - CHECK_ASN1_HAS_NO_CHILD(l2); - CHECK_ASN1_HAS_NO_NEXT(l2); - - l1 = l1->next; - - /* - INTEGER 0 - */ - - CHECK_ASN1_TYPE(l1, LTC_ASN1_INTEGER); - CHECK_ASN1_HAS_NO_CHILD(l1); - CHECK_ASN1_HAS_NEXT(l1); - - l1 = l1->next; - - /* - SEQUENCE(2 elem) - OBJECT IDENTIFIER 1.2.840.113549.1.1.4 - NULL - */ - - CHECK_ASN1_TYPE(l1, LTC_ASN1_SEQUENCE); - CHECK_ASN1_HAS_CHILD(l1); - CHECK_ASN1_HAS_NEXT(l1); - - l2 = l1->child; - - CHECK_ASN1_TYPE(l2, LTC_ASN1_OBJECT_IDENTIFIER); - CHECK_ASN1_HAS_NO_CHILD(l2); - CHECK_ASN1_HAS_NEXT(l2); - - l2 = l2->next; - - CHECK_ASN1_TYPE(l2, LTC_ASN1_NULL); - CHECK_ASN1_HAS_NO_CHILD(l2); - CHECK_ASN1_HAS_NO_NEXT(l2); - - /* - SEQUENCE(4 elem) - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.5.4.10 - PrintableString Root CA - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.5.4.11 - PrintableString http://www.cacert.org - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 2.5.4.3 - PrintableString CA Cert Signing Authority - SET(1 elem) - SEQUENCE(2 elem) - OBJECT IDENTIFIER 1.2.840.113549.1.9.1 - IA5String support@cacert.org - */ - - l = l->next; - - /* - SEQUENCE(2 elem) - OBJECT IDENTIFIER 1.2.840.113549.1.1.4 - NULL - */ - - CHECK_ASN1_TYPE(l, LTC_ASN1_SEQUENCE); - CHECK_ASN1_HAS_CHILD(l); - CHECK_ASN1_HAS_NEXT(l); - - l1 = l->child; - - CHECK_ASN1_TYPE(l1, LTC_ASN1_OBJECT_IDENTIFIER); - CHECK_ASN1_HAS_NO_CHILD(l1); - CHECK_ASN1_HAS_NEXT(l1); - - l1 = l1->next; - - CHECK_ASN1_TYPE(l1, LTC_ASN1_NULL); - CHECK_ASN1_HAS_NO_CHILD(l1); - CHECK_ASN1_HAS_NO_NEXT(l1); - - l = l->next; - - /* - BIT STRING(4096 bit) - */ - - CHECK_ASN1_TYPE(l, LTC_ASN1_BIT_STRING); - CHECK_ASN1_HAS_NO_CHILD(l); - CHECK_ASN1_HAS_NO_NEXT(l); - - der_free_sequence_flexi(decoded_list); -} - -static void der_set_test(void) -{ - ltc_asn1_list list[10]; - static const unsigned char oct_str[] = { 1, 2, 3, 4 }; - static const unsigned char bin_str[] = { 1, 0, 0, 1 }; - static const unsigned long int_val = 12345678UL; - - unsigned char strs[10][10], outbuf[128]; - unsigned long x, val, outlen; - - /* make structure and encode it */ - LTC_SET_ASN1(list, 0, LTC_ASN1_OCTET_STRING, oct_str, sizeof(oct_str)); - LTC_SET_ASN1(list, 1, LTC_ASN1_BIT_STRING, bin_str, sizeof(bin_str)); - LTC_SET_ASN1(list, 2, LTC_ASN1_SHORT_INTEGER, &int_val, 1); - - /* encode it */ - outlen = sizeof(outbuf); - DO(der_encode_set(list, 3, outbuf, &outlen)); - - /* first let's test the set_decoder out of order to see what happens, we should get all the fields we expect even though they're in a diff order */ - LTC_SET_ASN1(list, 0, LTC_ASN1_BIT_STRING, strs[1], sizeof(strs[1])); - LTC_SET_ASN1(list, 1, LTC_ASN1_SHORT_INTEGER, &val, 1); - LTC_SET_ASN1(list, 2, LTC_ASN1_OCTET_STRING, strs[0], sizeof(strs[0])); - - DO(der_decode_set(outbuf, outlen, list, 3)); - - /* now compare the items */ - if (memcmp(strs[0], oct_str, sizeof(oct_str))) { - fprintf(stderr, "error decoding set using der_decode_set (oct_str is wrong):\n"); - exit(EXIT_FAILURE); - } - - if (memcmp(strs[1], bin_str, sizeof(bin_str))) { - fprintf(stderr, "error decoding set using der_decode_set (bin_str is wrong):\n"); - exit(EXIT_FAILURE); - } - - if (val != int_val) { - fprintf(stderr, "error decoding set using der_decode_set (int_val is wrong):\n"); - exit(EXIT_FAILURE); - } - - strcpy((char*)strs[0], "one"); - strcpy((char*)strs[1], "one2"); - strcpy((char*)strs[2], "two"); - strcpy((char*)strs[3], "aaa"); - strcpy((char*)strs[4], "aaaa"); - strcpy((char*)strs[5], "aab"); - strcpy((char*)strs[6], "aaab"); - strcpy((char*)strs[7], "bbb"); - strcpy((char*)strs[8], "bbba"); - strcpy((char*)strs[9], "bbbb"); - - for (x = 0; x < 10; x++) { - LTC_SET_ASN1(list, x, LTC_ASN1_PRINTABLE_STRING, strs[x], strlen((char*)strs[x])); - } - - outlen = sizeof(outbuf); - DO(der_encode_setof(list, 10, outbuf, &outlen)); - - for (x = 0; x < 10; x++) { - LTC_SET_ASN1(list, x, LTC_ASN1_PRINTABLE_STRING, strs[x], sizeof(strs[x]) - 1); - } - XMEMSET(strs, 0, sizeof(strs)); - - DO(der_decode_set(outbuf, outlen, list, 10)); - - /* now compare */ - for (x = 1; x < 10; x++) { - if (!(strlen((char*)strs[x-1]) <= strlen((char*)strs[x])) && strcmp((char*)strs[x-1], (char*)strs[x]) >= 0) { - fprintf(stderr, "error SET OF order at %lu is wrong\n", x); - exit(EXIT_FAILURE); - } - } - -} - - -/* we are encoding - - SEQUENCE { - PRINTABLE "printable" - IA5 "ia5" - SEQUENCE { - INTEGER 12345678 - UTCTIME { 91, 5, 6, 16, 45, 40, 1, 7, 0 } - GENERALIZEDTIME { 2017, 03, 21, 10, 21, 12, 4, 1, 2, 0 } - SEQUENCE { - OCTET STRING { 1, 2, 3, 4 } - BIT STRING { 1, 0, 0, 1 } - SEQUENCE { - OID { 1, 2, 840, 113549 } - NULL - SET OF { - PRINTABLE "333" -- WILL GET SORTED - PRINTABLE "222" - } - } - } - } - -*/ - -static void der_flexi_test(void) -{ - static const char printable_str[] = "printable"; - static const char set1_str[] = "333"; - static const char set2_str[] = "222"; - static const char ia5_str[] = "ia5"; - static const unsigned long int_val = 12345678UL; - static const ltc_utctime utctime = { 91, 5, 6, 16, 45, 40, 1, 7, 0 }; - static const ltc_generalizedtime gtime = { 2017, 03, 21, 10, 21, 12, 421, 1, 2, 0 }; - static const unsigned char oct_str[] = { 1, 2, 3, 4 }; - static const unsigned char bit_str[] = { 1, 0, 0, 1 }; - static const unsigned long oid_str[] = { 1, 2, 840, 113549 }; - - unsigned char encode_buf[192]; - unsigned long encode_buf_len, decode_len; - - ltc_asn1_list static_list[5][4], *decoded_list, *l; - - /* build list */ - LTC_SET_ASN1(static_list[0], 0, LTC_ASN1_PRINTABLE_STRING, (void *)printable_str, strlen(printable_str)); - LTC_SET_ASN1(static_list[0], 1, LTC_ASN1_IA5_STRING, (void *)ia5_str, strlen(ia5_str)); - LTC_SET_ASN1(static_list[0], 2, LTC_ASN1_SEQUENCE, static_list[1], 4); - - LTC_SET_ASN1(static_list[1], 0, LTC_ASN1_SHORT_INTEGER, (void *)&int_val, 1); - LTC_SET_ASN1(static_list[1], 1, LTC_ASN1_UTCTIME, (void *)&utctime, 1); - LTC_SET_ASN1(static_list[1], 2, LTC_ASN1_GENERALIZEDTIME, (void *)>ime, 1); - LTC_SET_ASN1(static_list[1], 3, LTC_ASN1_SEQUENCE, static_list[2], 3); - - LTC_SET_ASN1(static_list[2], 0, LTC_ASN1_OCTET_STRING, (void *)oct_str, 4); - LTC_SET_ASN1(static_list[2], 1, LTC_ASN1_BIT_STRING, (void *)bit_str, 4); - LTC_SET_ASN1(static_list[2], 2, LTC_ASN1_SEQUENCE, static_list[3], 3); - - LTC_SET_ASN1(static_list[3], 0, LTC_ASN1_OBJECT_IDENTIFIER,(void *)oid_str, 4); - LTC_SET_ASN1(static_list[3], 1, LTC_ASN1_NULL, NULL, 0); - LTC_SET_ASN1(static_list[3], 2, LTC_ASN1_SETOF, static_list[4], 2); - - LTC_SET_ASN1(static_list[4], 0, LTC_ASN1_PRINTABLE_STRING, set1_str, strlen(set1_str)); - LTC_SET_ASN1(static_list[4], 1, LTC_ASN1_PRINTABLE_STRING, set2_str, strlen(set2_str)); - - /* encode it */ - encode_buf_len = sizeof(encode_buf); - DO(der_encode_sequence(&static_list[0][0], 3, encode_buf, &encode_buf_len)); - -#if 0 - { - FILE *f; - f = fopen("t.bin", "wb"); - fwrite(encode_buf, 1, encode_buf_len, f); - fclose(f); - } -#endif - - /* decode with flexi */ - decode_len = encode_buf_len; - DO(der_decode_sequence_flexi(encode_buf, &decode_len, &decoded_list)); - - if (decode_len != encode_buf_len) { - fprintf(stderr, "Decode len of %lu does not match encode len of %lu \n", decode_len, encode_buf_len); - exit(EXIT_FAILURE); - } - - /* we expect l->next to be NULL and l->child to not be */ - l = decoded_list; - if (l->next != NULL || l->child == NULL) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - /* we expect a SEQUENCE */ - if (l->type != LTC_ASN1_SEQUENCE) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - l = l->child; - - /* PRINTABLE STRING */ - /* we expect printable_str */ - if (l->next == NULL || l->child != NULL) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->type != LTC_ASN1_PRINTABLE_STRING) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->size != strlen(printable_str) || memcmp(printable_str, l->data, l->size)) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - /* move to next */ - l = l->next; - - /* IA5 STRING */ - /* we expect ia5_str */ - if (l->next == NULL || l->child != NULL) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->type != LTC_ASN1_IA5_STRING) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->size != strlen(ia5_str) || memcmp(ia5_str, l->data, l->size)) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - /* move to next */ - l = l->next; - - /* expect child anve move down */ - - if (l->next != NULL || l->child == NULL) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->type != LTC_ASN1_SEQUENCE) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - l = l->child; - - - /* INTEGER */ - - if (l->next == NULL || l->child != NULL) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->type != LTC_ASN1_INTEGER) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (mp_cmp_d(l->data, 12345678UL) != LTC_MP_EQ) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - /* move to next */ - l = l->next; - - /* UTCTIME */ - - if (l->next == NULL || l->child != NULL) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->type != LTC_ASN1_UTCTIME) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (memcmp(l->data, &utctime, sizeof(utctime))) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - /* move to next */ - l = l->next; - - /* GeneralizedTime */ - - if (l->next == NULL || l->child != NULL) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->type != LTC_ASN1_GENERALIZEDTIME) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (memcmp(l->data, >ime, sizeof(gtime))) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - /* move to next */ - l = l->next; - - /* expect child anve move down */ - - if (l->next != NULL || l->child == NULL) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->type != LTC_ASN1_SEQUENCE) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - l = l->child; - - - /* OCTET STRING */ - /* we expect oct_str */ - if (l->next == NULL || l->child != NULL) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->type != LTC_ASN1_OCTET_STRING) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->size != sizeof(oct_str) || memcmp(oct_str, l->data, l->size)) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - /* move to next */ - l = l->next; - - /* BIT STRING */ - /* we expect oct_str */ - if (l->next == NULL || l->child != NULL) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->type != LTC_ASN1_BIT_STRING) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->size != sizeof(bit_str) || memcmp(bit_str, l->data, l->size)) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - /* move to next */ - l = l->next; - - /* expect child anve move down */ - - if (l->next != NULL || l->child == NULL) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->type != LTC_ASN1_SEQUENCE) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - l = l->child; - - - /* OID STRING */ - /* we expect oid_str */ - if (l->next == NULL || l->child != NULL) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->type != LTC_ASN1_OBJECT_IDENTIFIER) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->size != sizeof(oid_str)/sizeof(oid_str[0]) || memcmp(oid_str, l->data, l->size*sizeof(oid_str[0]))) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - /* move to next */ - l = l->next; - - /* NULL */ - if (l->type != LTC_ASN1_NULL) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - /* move to next */ - l = l->next; - - /* expect child anve move down */ - if (l->next != NULL || l->child == NULL) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->type != LTC_ASN1_SET) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - l = l->child; - - /* PRINTABLE STRING */ - /* we expect printable_str */ - if (l->next == NULL || l->child != NULL) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->type != LTC_ASN1_PRINTABLE_STRING) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - -/* note we compare set2_str FIRST because the SET OF is sorted and "222" comes before "333" */ - if (l->size != strlen(set2_str) || memcmp(set2_str, l->data, l->size)) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - /* move to next */ - l = l->next; - - /* PRINTABLE STRING */ - /* we expect printable_str */ - if (l->type != LTC_ASN1_PRINTABLE_STRING) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - if (l->size != strlen(set1_str) || memcmp(set1_str, l->data, l->size)) { - fprintf(stderr, "(%d), %d, %lu, next=%p, prev=%p, parent=%p, child=%p\n", __LINE__, l->type, l->size, l->next, l->prev, l->parent, l->child); - exit(EXIT_FAILURE); - } - - - der_sequence_free(l); - -} - -static int der_choice_test(void) -{ - ltc_asn1_list types[7], host[1]; - unsigned char bitbuf[10], octetbuf[10], ia5buf[10], printbuf[10], outbuf[256], x, y; - unsigned long integer, oidbuf[10], outlen, inlen; - void *mpinteger; - ltc_utctime utctime = { 91, 5, 6, 16, 45, 40, 1, 7, 0 }; - ltc_generalizedtime gtime = { 2038, 01, 19, 3, 14, 8, 0, 0, 0, 0 }; - - /* setup variables */ - for (x = 0; x < sizeof(bitbuf); x++) { bitbuf[x] = x & 1; } - for (x = 0; x < sizeof(octetbuf); x++) { octetbuf[x] = x; } - for (x = 0; x < sizeof(ia5buf); x++) { ia5buf[x] = 'a'; } - for (x = 0; x < sizeof(printbuf); x++) { printbuf[x] = 'a'; } - integer = 1; - for (x = 0; x < sizeof(oidbuf)/sizeof(oidbuf[0]); x++) { oidbuf[x] = x + 1; } - DO(mp_init(&mpinteger)); - - for (x = 0; x < 14; x++) { - /* setup list */ - LTC_SET_ASN1(types, 0, LTC_ASN1_PRINTABLE_STRING, printbuf, sizeof(printbuf)); - LTC_SET_ASN1(types, 1, LTC_ASN1_BIT_STRING, bitbuf, sizeof(bitbuf)); - LTC_SET_ASN1(types, 2, LTC_ASN1_OCTET_STRING, octetbuf, sizeof(octetbuf)); - LTC_SET_ASN1(types, 3, LTC_ASN1_IA5_STRING, ia5buf, sizeof(ia5buf)); - if (x > 7) { - LTC_SET_ASN1(types, 4, LTC_ASN1_SHORT_INTEGER, &integer, 1); - } else { - LTC_SET_ASN1(types, 4, LTC_ASN1_INTEGER, mpinteger, 1); - } - LTC_SET_ASN1(types, 5, LTC_ASN1_OBJECT_IDENTIFIER, oidbuf, sizeof(oidbuf)/sizeof(oidbuf[0])); - if (x > 7) { - LTC_SET_ASN1(types, 6, LTC_ASN1_UTCTIME, &utctime, 1); - } else { - LTC_SET_ASN1(types, 6, LTC_ASN1_GENERALIZEDTIME, >ime, 1); - } - - LTC_SET_ASN1(host, 0, LTC_ASN1_CHOICE, types, 7); - - - /* encode */ - outlen = sizeof(outbuf); - DO(der_encode_sequence(&types[x>6?x-7:x], 1, outbuf, &outlen)); - - /* decode it */ - inlen = outlen; - DO(der_decode_sequence(outbuf, inlen, &host[0], 1)); - - for (y = 0; y < 7; y++) { - if (types[y].used && y != (x>6?x-7:x)) { - fprintf(stderr, "CHOICE, flag %u in trial %u was incorrectly set to one\n", y, x); - return 1; - } - if (!types[y].used && y == (x>6?x-7:x)) { - fprintf(stderr, "CHOICE, flag %u in trial %u was incorrectly set to zero\n", y, x); - return 1; - } - } - } - mp_clear(mpinteger); - return 0; -} - - -static void _der_recursion_limit(void) -{ - int failed = 0; - unsigned int n; - unsigned long integer = 123, s; - ltc_asn1_list seqs[LTC_DER_MAX_RECURSION + 2], dummy[1], *flexi; - unsigned char buf[2048]; - LTC_SET_ASN1(dummy, 0, LTC_ASN1_SHORT_INTEGER, &integer, 1); - LTC_SET_ASN1(seqs, LTC_DER_MAX_RECURSION + 1, LTC_ASN1_SEQUENCE, dummy, 1); - for (n = 0; n < LTC_DER_MAX_RECURSION + 1; ++n) { - LTC_SET_ASN1(seqs, LTC_DER_MAX_RECURSION - n, LTC_ASN1_SEQUENCE, &seqs[LTC_DER_MAX_RECURSION - n + 1], 1); - } - s = sizeof(buf); - DO(der_encode_sequence(seqs, 1, buf, &s)); - DO(der_decode_sequence(buf, s, seqs, 1)); - SHOULD_FAIL(der_decode_sequence_flexi(buf, &s, &flexi)); - if (failed) exit(EXIT_FAILURE); -} - -int der_test(void) -{ - unsigned long x, y, z, zz, oid[2][32]; - unsigned char buf[3][2048]; - void *a, *b, *c, *d, *e, *f, *g; - - static const unsigned char rsa_oid_der[] = { 0x06, 0x06, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d }; - static const unsigned long rsa_oid[] = { 1, 2, 840, 113549 }; - - static const unsigned char rsa_ia5[] = "test1@rsa.com"; - static const unsigned char rsa_ia5_der[] = { 0x16, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x31, - 0x40, 0x72, 0x73, 0x61, 0x2e, 0x63, 0x6f, 0x6d }; - - static const unsigned char rsa_printable[] = "Test User 1"; - static const unsigned char rsa_printable_der[] = { 0x13, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, - 0x73, 0x65, 0x72, 0x20, 0x31 }; - - static const ltc_utctime rsa_time1 = { 91, 5, 6, 16, 45, 40, 1, 7, 0 }; - static const ltc_utctime rsa_time2 = { 91, 5, 6, 23, 45, 40, 0, 0, 0 }; - ltc_utctime tmp_time; - - static const unsigned char rsa_time1_der[] = { 0x17, 0x11, 0x39, 0x31, 0x30, 0x35, 0x30, 0x36, 0x31, 0x36, 0x34, 0x35, 0x34, 0x30, 0x2D, 0x30, 0x37, 0x30, 0x30 }; - static const unsigned char rsa_time2_der[] = { 0x17, 0x0d, 0x39, 0x31, 0x30, 0x35, 0x30, 0x36, 0x32, 0x33, 0x34, 0x35, 0x34, 0x30, 0x5a }; - - static const wchar_t utf8_1[] = { 0x0041, 0x2262, 0x0391, 0x002E }; - static const unsigned char utf8_1_der[] = { 0x0C, 0x07, 0x41, 0xE2, 0x89, 0xA2, 0xCE, 0x91, 0x2E }; - static const wchar_t utf8_2[] = { 0xD55C, 0xAD6D, 0xC5B4 }; - static const unsigned char utf8_2_der[] = { 0x0C, 0x09, 0xED, 0x95, 0x9C, 0xEA, 0xB5, 0xAD, 0xEC, 0x96, 0xB4 }; - - unsigned char utf8_buf[32]; - wchar_t utf8_out[32]; - - - _der_recursion_limit(); - der_cacert_test(); - - DO(mp_init_multi(&a, &b, &c, &d, &e, &f, &g, NULL)); - for (zz = 0; zz < 16; zz++) { -#ifdef USE_TFM - for (z = 0; z < 256; z++) { -#else - for (z = 0; z < 1024; z++) { -#endif - if (yarrow_read(buf[0], z, &yarrow_prng) != z) { - fprintf(stderr, "Failed to read %lu bytes from yarrow\n", z); - return 1; - } - DO(mp_read_unsigned_bin(a, buf[0], z)); -/* if (mp_iszero(a) == LTC_MP_NO) { a.sign = buf[0][0] & 1 ? LTC_MP_ZPOS : LTC_MP_NEG; } */ - x = sizeof(buf[0]); - DO(der_encode_integer(a, buf[0], &x)); - DO(der_length_integer(a, &y)); - if (y != x) { fprintf(stderr, "DER INTEGER size mismatch\n"); return 1; } - mp_set_int(b, 0); - DO(der_decode_integer(buf[0], y, b)); - if (y != x || mp_cmp(a, b) != LTC_MP_EQ) { - fprintf(stderr, "%lu: %lu vs %lu\n", z, x, y); - mp_clear_multi(a, b, c, d, e, f, g, NULL); - return 1; - } - } - } - -/* test short integer */ - for (zz = 0; zz < 256; zz++) { - for (z = 1; z < 4; z++) { - if (yarrow_read(buf[2], z, &yarrow_prng) != z) { - fprintf(stderr, "Failed to read %lu bytes from yarrow\n", z); - return 1; - } - /* encode with normal */ - DO(mp_read_unsigned_bin(a, buf[2], z)); - - x = sizeof(buf[0]); - DO(der_encode_integer(a, buf[0], &x)); - - /* encode with short */ - y = sizeof(buf[1]); - DO(der_encode_short_integer(mp_get_int(a), buf[1], &y)); - if (x != y || memcmp(buf[0], buf[1], x)) { - fprintf(stderr, "DER INTEGER short encoding failed, %lu, %lu, 0x%lX\n", x, y, mp_get_int(a)); - for (zz = 0; zz < z; zz++) fprintf(stderr, "%02x ", buf[2][zz]); - fprintf(stderr, "\n"); - for (z = 0; z < x; z++) fprintf(stderr, "%02x ", buf[0][z]); - fprintf(stderr, "\n"); - for (z = 0; z < y; z++) fprintf(stderr, "%02x ", buf[1][z]); - fprintf(stderr, "\n"); - mp_clear_multi(a, b, c, d, e, f, g, NULL); - return 1; - } - - /* decode it */ - x = 0; - DO(der_decode_short_integer(buf[1], y, &x)); - if (x != mp_get_int(a)) { - fprintf(stderr, "DER INTEGER short decoding failed, %lu, %lu\n", x, mp_get_int(a)); - mp_clear_multi(a, b, c, d, e, f, g, NULL); - return 1; - } - } - } - mp_clear_multi(a, b, c, d, e, f, g, NULL); - - -/* Test bit string */ - for (zz = 1; zz < 1536; zz++) { - yarrow_read(buf[0], zz, &yarrow_prng); - for (z = 0; z < zz; z++) { - buf[0][z] &= 0x01; - } - x = sizeof(buf[1]); - DO(der_encode_bit_string(buf[0], zz, buf[1], &x)); - DO(der_length_bit_string(zz, &y)); - if (y != x) { - fprintf(stderr, "\nDER BIT STRING length of encoded not match expected : %lu, %lu, %lu\n", z, x, y); - return 1; - } - - y = sizeof(buf[2]); - DO(der_decode_bit_string(buf[1], x, buf[2], &y)); - if (y != zz || memcmp(buf[0], buf[2], zz)) { - fprintf(stderr, "%lu, %lu, %d\n", y, zz, memcmp(buf[0], buf[2], zz)); - return 1; - } - } - -/* Test octet string */ - for (zz = 1; zz < 1536; zz++) { - yarrow_read(buf[0], zz, &yarrow_prng); - x = sizeof(buf[1]); - DO(der_encode_octet_string(buf[0], zz, buf[1], &x)); - DO(der_length_octet_string(zz, &y)); - if (y != x) { - fprintf(stderr, "\nDER OCTET STRING length of encoded not match expected : %lu, %lu, %lu\n", z, x, y); - return 1; - } - y = sizeof(buf[2]); - DO(der_decode_octet_string(buf[1], x, buf[2], &y)); - if (y != zz || memcmp(buf[0], buf[2], zz)) { - fprintf(stderr, "%lu, %lu, %d\n", y, zz, memcmp(buf[0], buf[2], zz)); - return 1; - } - } - -/* test OID */ - x = sizeof(buf[0]); - DO(der_encode_object_identifier((unsigned long*)rsa_oid, sizeof(rsa_oid)/sizeof(rsa_oid[0]), buf[0], &x)); - if (x != sizeof(rsa_oid_der) || memcmp(rsa_oid_der, buf[0], x)) { - fprintf(stderr, "rsa_oid_der encode failed to match, %lu, ", x); - for (y = 0; y < x; y++) fprintf(stderr, "%02x ", buf[0][y]); - fprintf(stderr, "\n"); - return 1; - } - - y = sizeof(oid[0])/sizeof(oid[0][0]); - DO(der_decode_object_identifier(buf[0], x, oid[0], &y)); - if (y != sizeof(rsa_oid)/sizeof(rsa_oid[0]) || memcmp(rsa_oid, oid[0], sizeof(rsa_oid))) { - fprintf(stderr, "rsa_oid_der decode failed to match, %lu, ", y); - for (z = 0; z < y; z++) fprintf(stderr, "%lu ", oid[0][z]); - fprintf(stderr, "\n"); - return 1; - } - - /* do random strings */ - for (zz = 0; zz < 5000; zz++) { - /* pick a random number of words */ - yarrow_read(buf[0], 4, &yarrow_prng); - LOAD32L(z, buf[0]); - z = 2 + (z % ((sizeof(oid[0])/sizeof(oid[0][0])) - 2)); - - /* fill them in */ - oid[0][0] = buf[0][0] % 3; - oid[0][1] = buf[0][1] % 40; - - for (y = 2; y < z; y++) { - yarrow_read(buf[0], 4, &yarrow_prng); - LOAD32L(oid[0][y], buf[0]); - } - - /* encode it */ - x = sizeof(buf[0]); - DO(der_encode_object_identifier(oid[0], z, buf[0], &x)); - DO(der_length_object_identifier(oid[0], z, &y)); - if (x != y) { - fprintf(stderr, "Random OID %lu test failed, length mismatch: %lu, %lu\n", z, x, y); - for (x = 0; x < z; x++) fprintf(stderr, "%lu\n", oid[0][x]); - return 1; - } - - /* decode it */ - y = sizeof(oid[0])/sizeof(oid[0][0]); - DO(der_decode_object_identifier(buf[0], x, oid[1], &y)); - if (y != z) { - fprintf(stderr, "Random OID %lu test failed, decode length mismatch: %lu, %lu\n", z, x, y); - return 1; - } - if (memcmp(oid[0], oid[1], sizeof(oid[0][0]) * z)) { - fprintf(stderr, "Random OID %lu test failed, decoded values wrong\n", z); - for (x = 0; x < z; x++) fprintf(stderr, "%lu\n", oid[0][x]); - fprintf(stderr, "\n\n Got \n\n"); - for (x = 0; x < z; x++) fprintf(stderr, "%lu\n", oid[1][x]); - return 1; - } - } - -/* IA5 string */ - x = sizeof(buf[0]); - DO(der_encode_ia5_string(rsa_ia5, strlen((char*)rsa_ia5), buf[0], &x)); - if (x != sizeof(rsa_ia5_der) || memcmp(buf[0], rsa_ia5_der, x)) { - fprintf(stderr, "IA5 encode failed: %lu, %lu\n", x, (unsigned long)sizeof(rsa_ia5_der)); - return 1; - } - DO(der_length_ia5_string(rsa_ia5, strlen((char*)rsa_ia5), &y)); - if (y != x) { - fprintf(stderr, "IA5 length failed to match: %lu, %lu\n", x, y); - return 1; - } - y = sizeof(buf[1]); - DO(der_decode_ia5_string(buf[0], x, buf[1], &y)); - if (y != strlen((char*)rsa_ia5) || memcmp(buf[1], rsa_ia5, strlen((char*)rsa_ia5))) { - fprintf(stderr, "DER IA5 failed test vector\n"); - return 1; - } - -/* Printable string */ - x = sizeof(buf[0]); - DO(der_encode_printable_string(rsa_printable, strlen((char*)rsa_printable), buf[0], &x)); - if (x != sizeof(rsa_printable_der) || memcmp(buf[0], rsa_printable_der, x)) { - fprintf(stderr, "PRINTABLE encode failed: %lu, %lu\n", x, (unsigned long)sizeof(rsa_printable_der)); - return 1; - } - DO(der_length_printable_string(rsa_printable, strlen((char*)rsa_printable), &y)); - if (y != x) { - fprintf(stderr, "printable length failed to match: %lu, %lu\n", x, y); - return 1; - } - y = sizeof(buf[1]); - DO(der_decode_printable_string(buf[0], x, buf[1], &y)); - if (y != strlen((char*)rsa_printable) || memcmp(buf[1], rsa_printable, strlen((char*)rsa_printable))) { - fprintf(stderr, "DER printable failed test vector\n"); - return 1; - } - -/* Test UTC time */ - x = sizeof(buf[0]); - DO(der_encode_utctime((ltc_utctime*)&rsa_time1, buf[0], &x)); - if (x != sizeof(rsa_time1_der) || memcmp(buf[0], rsa_time1_der, x)) { - fprintf(stderr, "UTCTIME encode of rsa_time1 failed: %lu, %lu\n", x, (unsigned long)sizeof(rsa_time1_der)); - fprintf(stderr, "\n\n"); - for (y = 0; y < x; y++) fprintf(stderr, "%02x ", buf[0][y]); - fprintf(stderr, "\n"); - return 1; - } - DO(der_length_utctime((ltc_utctime*)&rsa_time1, &y)); - if (y != x) { - fprintf(stderr, "UTCTIME length failed to match for rsa_time1: %lu, %lu\n", x, y); - return 1; - } - DO(der_decode_utctime(buf[0], &y, &tmp_time)); - if (y != x || memcmp(&rsa_time1, &tmp_time, sizeof(ltc_utctime))) { - fprintf(stderr, "UTCTIME decode failed for rsa_time1: %lu %lu\n", x, y); -fprintf(stderr, "\n\n%u %u %u %u %u %u %u %u %u\n\n", -tmp_time.YY, -tmp_time.MM, -tmp_time.DD, -tmp_time.hh, -tmp_time.mm, -tmp_time.ss, -tmp_time.off_dir, -tmp_time.off_mm, -tmp_time.off_hh); - return 1; - } - - x = sizeof(buf[0]); - DO(der_encode_utctime((ltc_utctime*)&rsa_time2, buf[0], &x)); - if (x != sizeof(rsa_time2_der) || memcmp(buf[0], rsa_time2_der, x)) { - fprintf(stderr, "UTCTIME encode of rsa_time2 failed: %lu, %lu\n", x, (unsigned long)sizeof(rsa_time1_der)); - fprintf(stderr, "\n\n"); - for (y = 0; y < x; y++) fprintf(stderr, "%02x ", buf[0][y]); - fprintf(stderr, "\n"); - return 1; - } - DO(der_length_utctime((ltc_utctime*)&rsa_time2, &y)); - if (y != x) { - fprintf(stderr, "UTCTIME length failed to match for rsa_time2: %lu, %lu\n", x, y); - return 1; - } - DO(der_decode_utctime(buf[0], &y, &tmp_time)); - if (y != x || memcmp(&rsa_time2, &tmp_time, sizeof(ltc_utctime))) { - fprintf(stderr, "UTCTIME decode failed for rsa_time2: %lu %lu\n", x, y); -fprintf(stderr, "\n\n%u %u %u %u %u %u %u %u %u\n\n", -tmp_time.YY, -tmp_time.MM, -tmp_time.DD, -tmp_time.hh, -tmp_time.mm, -tmp_time.ss, -tmp_time.off_dir, -tmp_time.off_mm, -tmp_time.off_hh); - - - return 1; - } - - /* UTF 8 */ - /* encode it */ - x = sizeof(utf8_buf); - DO(der_encode_utf8_string(utf8_1, sizeof(utf8_1) / sizeof(utf8_1[0]), utf8_buf, &x)); - DO(der_length_utf8_string(utf8_1, sizeof(utf8_1) / sizeof(utf8_1[0]), &y)); - if (x != sizeof(utf8_1_der) || memcmp(utf8_buf, utf8_1_der, x) || x != y) { - fprintf(stderr, "DER UTF8_1 encoded to %lu bytes\n", x); - for (y = 0; y < x; y++) fprintf(stderr, "%02x ", (unsigned)utf8_buf[y]); - fprintf(stderr, "\n"); - return 1; - } - /* decode it */ - y = sizeof(utf8_out) / sizeof(utf8_out[0]); - DO(der_decode_utf8_string(utf8_buf, x, utf8_out, &y)); - if (y != (sizeof(utf8_1) / sizeof(utf8_1[0])) || memcmp(utf8_1, utf8_out, y * sizeof(wchar_t))) { - fprintf(stderr, "DER UTF8_1 decoded to %lu wchar_t\n", y); - for (x = 0; x < y; x++) fprintf(stderr, "%04lx ", (unsigned long)utf8_out[x]); - fprintf(stderr, "\n"); - return 1; - } - - /* encode it */ - x = sizeof(utf8_buf); - DO(der_encode_utf8_string(utf8_2, sizeof(utf8_2) / sizeof(utf8_2[0]), utf8_buf, &x)); - if (x != sizeof(utf8_2_der) || memcmp(utf8_buf, utf8_2_der, x)) { - fprintf(stderr, "DER UTF8_2 encoded to %lu bytes\n", x); - for (y = 0; y < x; y++) fprintf(stderr, "%02x ", (unsigned)utf8_buf[y]); - fprintf(stderr, "\n"); - return 1; - } - /* decode it */ - y = sizeof(utf8_out) / sizeof(utf8_out[0]); - DO(der_decode_utf8_string(utf8_buf, x, utf8_out, &y)); - if (y != (sizeof(utf8_2) / sizeof(utf8_2[0])) || memcmp(utf8_2, utf8_out, y * sizeof(wchar_t))) { - fprintf(stderr, "DER UTF8_2 decoded to %lu wchar_t\n", y); - for (x = 0; x < y; x++) fprintf(stderr, "%04lx ", (unsigned long)utf8_out[x]); - fprintf(stderr, "\n"); - return 1; - } - - - der_set_test(); - der_flexi_test(); - return der_choice_test(); -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/dh_test.c b/src/libtomcrypt/tests/dh_test.c deleted file mode 100644 index 8ffd7d3e53..0000000000 --- a/src/libtomcrypt/tests/dh_test.c +++ /dev/null @@ -1,454 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -#if defined(LTC_MDH) && defined(LTC_TEST_MPI) - -#ifdef LTC_DH4096 -#define KEYSIZE 4096 -#else -#define KEYSIZE 2048 -#endif - -static int _prime_test(void) -{ - void *p, *g, *tmp; - int x, err, primality; - - if ((err = mp_init_multi(&p, &g, &tmp, NULL)) != CRYPT_OK) { goto error; } - - for (x = 0; ltc_dh_sets[x].size != 0; x++) { - if ((err = mp_read_radix(g, ltc_dh_sets[x].base, 16)) != CRYPT_OK) { goto error; } - if ((err = mp_read_radix(p, ltc_dh_sets[x].prime, 16)) != CRYPT_OK) { goto error; } - - /* ensure p is prime */ - if ((err = mp_prime_is_prime(p, 8, &primality)) != CRYPT_OK) { goto done; } - if (primality != LTC_MP_YES ) { - err = CRYPT_FAIL_TESTVECTOR; - goto done; - } - - if ((err = mp_sub_d(p, 1, tmp)) != CRYPT_OK) { goto error; } - if ((err = mp_div_2(tmp, tmp)) != CRYPT_OK) { goto error; } - - /* ensure (p-1)/2 is prime */ - if ((err = mp_prime_is_prime(tmp, 8, &primality)) != CRYPT_OK) { goto done; } - if (primality == 0) { - err = CRYPT_FAIL_TESTVECTOR; - goto done; - } - - /* now see if g^((p-1)/2) mod p is in fact 1 */ - if ((err = mp_exptmod(g, tmp, p, tmp)) != CRYPT_OK) { goto error; } - if (mp_cmp_d(tmp, 1)) { - err = CRYPT_FAIL_TESTVECTOR; - goto done; - } - } - err = CRYPT_OK; -error: -done: - mp_clear_multi(tmp, g, p, NULL); - return err; -} - -static int _dhparam_test(void) -{ - dh_key k; - unsigned char buf[1024]; - /* generated by: openssl dhparam -outform der -out dhparam.der 2048 */ - unsigned char dhparam_der[] = { - 0x30, 0x82, 0x01, 0x08, 0x02, 0x82, 0x01, 0x01, 0x00, 0xae, 0xfe, 0x78, 0xce, 0x80, 0xd5, 0xd7, - 0x8e, 0xcc, 0x4f, 0x0c, 0x1b, 0xb0, 0x95, 0x10, 0xe1, 0x41, 0x15, 0x53, 0x4d, 0x0e, 0x68, 0xb0, - 0xf8, 0x5a, 0x41, 0x0e, 0x65, 0x2f, 0x9f, 0xac, 0x9c, 0x30, 0xb0, 0x76, 0xec, 0x02, 0xe9, 0x43, - 0x55, 0x08, 0xb4, 0x20, 0x60, 0xd9, 0x52, 0xda, 0x2d, 0xab, 0x9a, 0xba, 0xe6, 0xcf, 0x11, 0xa7, - 0x00, 0x44, 0xc2, 0x5e, 0xd1, 0xba, 0x9b, 0xaa, 0xfe, 0x03, 0xdd, 0xdc, 0xef, 0x41, 0x89, 0x9c, - 0xac, 0x64, 0x13, 0xd9, 0x6a, 0x8a, 0x55, 0xa0, 0x5b, 0xff, 0x12, 0x92, 0x37, 0x52, 0x6a, 0x91, - 0xa4, 0x6e, 0x9e, 0x61, 0xb7, 0xfe, 0xb0, 0x17, 0x8e, 0x67, 0x0f, 0x88, 0x46, 0xa7, 0x9e, 0xb1, - 0xdb, 0x68, 0x77, 0x70, 0xb5, 0x77, 0xf2, 0x7e, 0x33, 0xb1, 0x3e, 0x10, 0xc4, 0x63, 0x36, 0xd0, - 0x13, 0x27, 0xd3, 0x29, 0xc3, 0xb6, 0x5d, 0xf6, 0x5d, 0xa7, 0xd8, 0x25, 0x5c, 0x0b, 0x65, 0x99, - 0xfa, 0xf9, 0x5f, 0x1d, 0xee, 0xd1, 0x86, 0x64, 0x7c, 0x44, 0xcb, 0xa0, 0x12, 0x52, 0x4c, 0xd4, - 0x46, 0x81, 0xae, 0x07, 0xdb, 0xc7, 0x13, 0x29, 0xce, 0x9b, 0xcf, 0x1c, 0x06, 0xd2, 0x0f, 0x2d, - 0xbb, 0x12, 0x33, 0xb9, 0xb1, 0x0f, 0x67, 0x5d, 0x3f, 0x0c, 0xe4, 0xfa, 0x67, 0x26, 0xe2, 0x89, - 0xa2, 0xd5, 0x66, 0x29, 0x1c, 0xe2, 0x8e, 0xbb, 0x7b, 0xcb, 0xcc, 0x70, 0x7e, 0x4f, 0x0e, 0xd3, - 0x5d, 0x64, 0x64, 0x1b, 0x27, 0xbb, 0xda, 0xa9, 0x08, 0x2b, 0x62, 0xd4, 0xca, 0xc3, 0x3a, 0x23, - 0x39, 0x58, 0x57, 0xaf, 0x7b, 0x8b, 0x0c, 0x5b, 0x2e, 0xfc, 0x42, 0x57, 0x59, 0x39, 0x2e, 0x6d, - 0x39, 0x97, 0xdb, 0x5b, 0x5c, 0xb9, 0x59, 0x71, 0x42, 0xf3, 0xcd, 0xea, 0xda, 0x86, 0x54, 0x86, - 0x61, 0x8d, 0x93, 0x66, 0xc7, 0x65, 0xd1, 0x98, 0xcb, 0x02, 0x01, 0x02 - }; - /* text dump: openssl dh -inform DER -in dhparam.der -text - DH Parameters: (2048 bit) - prime: - 00:ae:fe:78:ce:80:d5:d7:8e:cc:4f:0c:1b:b0:95: - 10:e1:41:15:53:4d:0e:68:b0:f8:5a:41:0e:65:2f: - 9f:ac:9c:30:b0:76:ec:02:e9:43:55:08:b4:20:60: - d9:52:da:2d:ab:9a:ba:e6:cf:11:a7:00:44:c2:5e: - d1:ba:9b:aa:fe:03:dd:dc:ef:41:89:9c:ac:64:13: - d9:6a:8a:55:a0:5b:ff:12:92:37:52:6a:91:a4:6e: - 9e:61:b7:fe:b0:17:8e:67:0f:88:46:a7:9e:b1:db: - 68:77:70:b5:77:f2:7e:33:b1:3e:10:c4:63:36:d0: - 13:27:d3:29:c3:b6:5d:f6:5d:a7:d8:25:5c:0b:65: - 99:fa:f9:5f:1d:ee:d1:86:64:7c:44:cb:a0:12:52: - 4c:d4:46:81:ae:07:db:c7:13:29:ce:9b:cf:1c:06: - d2:0f:2d:bb:12:33:b9:b1:0f:67:5d:3f:0c:e4:fa: - 67:26:e2:89:a2:d5:66:29:1c:e2:8e:bb:7b:cb:cc: - 70:7e:4f:0e:d3:5d:64:64:1b:27:bb:da:a9:08:2b: - 62:d4:ca:c3:3a:23:39:58:57:af:7b:8b:0c:5b:2e: - fc:42:57:59:39:2e:6d:39:97:db:5b:5c:b9:59:71: - 42:f3:cd:ea:da:86:54:86:61:8d:93:66:c7:65:d1: - 98:cb - generator: 2 (0x2) - */ - unsigned char prime[] = { - 0xae, 0xfe, 0x78, 0xce, 0x80, 0xd5, 0xd7, 0x8e, 0xcc, 0x4f, 0x0c, 0x1b, 0xb0, 0x95, - 0x10, 0xe1, 0x41, 0x15, 0x53, 0x4d, 0x0e, 0x68, 0xb0, 0xf8, 0x5a, 0x41, 0x0e, 0x65, 0x2f, - 0x9f, 0xac, 0x9c, 0x30, 0xb0, 0x76, 0xec, 0x02, 0xe9, 0x43, 0x55, 0x08, 0xb4, 0x20, 0x60, - 0xd9, 0x52, 0xda, 0x2d, 0xab, 0x9a, 0xba, 0xe6, 0xcf, 0x11, 0xa7, 0x00, 0x44, 0xc2, 0x5e, - 0xd1, 0xba, 0x9b, 0xaa, 0xfe, 0x03, 0xdd, 0xdc, 0xef, 0x41, 0x89, 0x9c, 0xac, 0x64, 0x13, - 0xd9, 0x6a, 0x8a, 0x55, 0xa0, 0x5b, 0xff, 0x12, 0x92, 0x37, 0x52, 0x6a, 0x91, 0xa4, 0x6e, - 0x9e, 0x61, 0xb7, 0xfe, 0xb0, 0x17, 0x8e, 0x67, 0x0f, 0x88, 0x46, 0xa7, 0x9e, 0xb1, 0xdb, - 0x68, 0x77, 0x70, 0xb5, 0x77, 0xf2, 0x7e, 0x33, 0xb1, 0x3e, 0x10, 0xc4, 0x63, 0x36, 0xd0, - 0x13, 0x27, 0xd3, 0x29, 0xc3, 0xb6, 0x5d, 0xf6, 0x5d, 0xa7, 0xd8, 0x25, 0x5c, 0x0b, 0x65, - 0x99, 0xfa, 0xf9, 0x5f, 0x1d, 0xee, 0xd1, 0x86, 0x64, 0x7c, 0x44, 0xcb, 0xa0, 0x12, 0x52, - 0x4c, 0xd4, 0x46, 0x81, 0xae, 0x07, 0xdb, 0xc7, 0x13, 0x29, 0xce, 0x9b, 0xcf, 0x1c, 0x06, - 0xd2, 0x0f, 0x2d, 0xbb, 0x12, 0x33, 0xb9, 0xb1, 0x0f, 0x67, 0x5d, 0x3f, 0x0c, 0xe4, 0xfa, - 0x67, 0x26, 0xe2, 0x89, 0xa2, 0xd5, 0x66, 0x29, 0x1c, 0xe2, 0x8e, 0xbb, 0x7b, 0xcb, 0xcc, - 0x70, 0x7e, 0x4f, 0x0e, 0xd3, 0x5d, 0x64, 0x64, 0x1b, 0x27, 0xbb, 0xda, 0xa9, 0x08, 0x2b, - 0x62, 0xd4, 0xca, 0xc3, 0x3a, 0x23, 0x39, 0x58, 0x57, 0xaf, 0x7b, 0x8b, 0x0c, 0x5b, 0x2e, - 0xfc, 0x42, 0x57, 0x59, 0x39, 0x2e, 0x6d, 0x39, 0x97, 0xdb, 0x5b, 0x5c, 0xb9, 0x59, 0x71, - 0x42, 0xf3, 0xcd, 0xea, 0xda, 0x86, 0x54, 0x86, 0x61, 0x8d, 0x93, 0x66, 0xc7, 0x65, 0xd1, - 0x98, 0xcb - }; - - DO(dh_set_pg_dhparam(dhparam_der, sizeof(dhparam_der), &k)); - DO(dh_generate_key(&yarrow_prng, find_prng ("yarrow"), &k)); - if (mp_unsigned_bin_size(k.prime) > sizeof(buf)) { - printf("dhparam_test: short buf\n"); - dh_free(&k); - return CRYPT_ERROR; - } - DO(mp_to_unsigned_bin(k.prime, buf)); - if (compare_testvector(buf, sizeof(prime), prime, sizeof(prime), "dhparam_test", 1)) { - printf("dhparam_test: prime mismatch\n"); - dh_free(&k); - return CRYPT_ERROR; - } - if (mp_cmp_d(k.base, 2) != LTC_MP_EQ) { - printf("dhparam_test: base mismatch\n"); - dh_free(&k); - return CRYPT_ERROR; - } - dh_free(&k); - return CRYPT_OK; -} - -static int _set_test(void) -{ - dh_key k1, k2, k3; - unsigned char buf[4096]; - unsigned long len; - int i; - unsigned char gbin[] = { 0x02 }; - unsigned char pbin[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, - 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, - 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, - 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, - 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, - 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, - 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, - 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, - 0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, - 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, - 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, - 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, - 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, - 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, - 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, - 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAC, 0xAA, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - }; - unsigned char xbin[] = { - 0xA6, 0x68, 0x1A, 0xDC, 0x38, 0x6C, 0xE9, 0x44, 0xC3, 0xDE, 0xD9, 0xA7, 0x30, 0x1D, 0xCC, 0x9C, - 0x51, 0x82, 0x50, 0xE3, 0xED, 0xB6, 0x2F, 0x95, 0x91, 0x98, 0xF8, 0xDC, 0x00, 0x57, 0xDD, 0x6F, - 0xB5, 0x7A, 0xBA, 0xFD, 0x78, 0x81, 0x98, 0xB1 - }; - unsigned char ybin[] = { - 0x39, 0x04, 0x66, 0x32, 0xC8, 0x34, 0x41, 0x8D, 0xFA, 0x07, 0xB3, 0x09, 0x15, 0x38, 0xB6, 0x14, - 0xD1, 0xFB, 0x5D, 0xBB, 0x78, 0x5C, 0x0F, 0xBE, 0xA3, 0xB9, 0x8B, 0x29, 0x5B, 0xC0, 0xCD, 0x07, - 0x6A, 0x88, 0xD9, 0x45, 0x21, 0x41, 0xA2, 0x69, 0xE8, 0xBA, 0xEB, 0x1D, 0xD6, 0x54, 0xEB, 0xA0, - 0x3A, 0x57, 0x05, 0x31, 0x8D, 0x12, 0x97, 0x54, 0xCD, 0xF4, 0x00, 0x3A, 0x8C, 0x39, 0x92, 0x40, - 0xFB, 0xB8, 0xF1, 0x62, 0x49, 0x0F, 0x6F, 0x0D, 0xC7, 0x0E, 0x41, 0x4B, 0x6F, 0xEE, 0x88, 0x08, - 0x6A, 0xFA, 0xA4, 0x8E, 0x9F, 0x3A, 0x24, 0x8E, 0xDC, 0x09, 0x34, 0x52, 0x66, 0x3D, 0x34, 0xE0, - 0xE8, 0x09, 0xD4, 0xF6, 0xBA, 0xDB, 0xB3, 0x6F, 0x80, 0xB6, 0x81, 0x3E, 0xBF, 0x7C, 0x32, 0x81, - 0xB8, 0x62, 0x20, 0x9E, 0x56, 0x04, 0xBD, 0xEA, 0x8B, 0x8F, 0x5F, 0x7B, 0xFD, 0xC3, 0xEE, 0xB7, - 0xAD, 0xB7, 0x30, 0x48, 0x28, 0x9B, 0xCE, 0xA0, 0xF5, 0xA5, 0xCD, 0xEE, 0x7D, 0xF9, 0x1C, 0xD1, - 0xF0, 0xBA, 0x63, 0x2F, 0x06, 0xDB, 0xE9, 0xBA, 0x7E, 0xF0, 0x14, 0xB8, 0x4B, 0x02, 0xD4, 0x97, - 0xCA, 0x7D, 0x0C, 0x60, 0xF7, 0x34, 0x75, 0x2A, 0x64, 0x9D, 0xA4, 0x96, 0x94, 0x6B, 0x4E, 0x53, - 0x1B, 0x30, 0xD9, 0xF8, 0x2E, 0xDD, 0x85, 0x56, 0x36, 0xC0, 0xB0, 0xF2, 0xAE, 0x23, 0x2E, 0x41, - 0x86, 0x45, 0x4E, 0x88, 0x87, 0xBB, 0x42, 0x3E, 0x32, 0xA5, 0xA2, 0x49, 0x5E, 0xAC, 0xBA, 0x99, - 0x62, 0x0A, 0xCD, 0x03, 0xA3, 0x83, 0x45, 0xEB, 0xB6, 0x73, 0x5E, 0x62, 0x33, 0x0A, 0x8E, 0xE9, - 0xAA, 0x6C, 0x83, 0x70, 0x41, 0x0F, 0x5C, 0xD4, 0x5A, 0xF3, 0x7E, 0xE9, 0x0A, 0x0D, 0xA9, 0x5B, - 0xE9, 0x6F, 0xC9, 0x39, 0xE8, 0x8F, 0xE0, 0xBD, 0x2C, 0xD0, 0x9F, 0xC8, 0xF5, 0x24, 0x20, 0x8C - }; - - struct { - int radix; - void* g; int glen; - void* p; int plen; - void* x; int xlen; - void* y; int ylen; - } test[1] = { - { 256, gbin, sizeof(gbin), pbin, sizeof(pbin), xbin, sizeof(xbin), ybin, sizeof(ybin) } - }; - - unsigned char export_private[] = { - 0x30, 0x82, 0x01, 0x3A, 0x02, 0x01, 0x00, 0x03, 0x02, 0x07, 0x80, 0x02, 0x82, 0x01, 0x01, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, - 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, - 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, - 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, - 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, - 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, - 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, - 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, - 0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, - 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, - 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, - 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, - 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, - 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, - 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, - 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAC, 0xAA, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x02, 0x01, 0x02, 0x02, 0x29, 0x00, 0xA6, 0x68, 0x1A, 0xDC, 0x38, 0x6C, 0xE9, 0x44, 0xC3, 0xDE, - 0xD9, 0xA7, 0x30, 0x1D, 0xCC, 0x9C, 0x51, 0x82, 0x50, 0xE3, 0xED, 0xB6, 0x2F, 0x95, 0x91, 0x98, - 0xF8, 0xDC, 0x00, 0x57, 0xDD, 0x6F, 0xB5, 0x7A, 0xBA, 0xFD, 0x78, 0x81, 0x98, 0xB1 - }; - unsigned char export_public[] = { - 0x30, 0x82, 0x02, 0x13, 0x02, 0x01, 0x00, 0x03, 0x02, 0x07, 0x00, 0x02, 0x82, 0x01, 0x01, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, - 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, - 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, - 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, - 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, - 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, - 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, - 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, - 0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, - 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, - 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, - 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, - 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, - 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, - 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, - 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAC, 0xAA, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x02, 0x01, 0x02, 0x02, 0x82, 0x01, 0x00, 0x39, 0x04, 0x66, 0x32, 0xC8, 0x34, 0x41, 0x8D, 0xFA, - 0x07, 0xB3, 0x09, 0x15, 0x38, 0xB6, 0x14, 0xD1, 0xFB, 0x5D, 0xBB, 0x78, 0x5C, 0x0F, 0xBE, 0xA3, - 0xB9, 0x8B, 0x29, 0x5B, 0xC0, 0xCD, 0x07, 0x6A, 0x88, 0xD9, 0x45, 0x21, 0x41, 0xA2, 0x69, 0xE8, - 0xBA, 0xEB, 0x1D, 0xD6, 0x54, 0xEB, 0xA0, 0x3A, 0x57, 0x05, 0x31, 0x8D, 0x12, 0x97, 0x54, 0xCD, - 0xF4, 0x00, 0x3A, 0x8C, 0x39, 0x92, 0x40, 0xFB, 0xB8, 0xF1, 0x62, 0x49, 0x0F, 0x6F, 0x0D, 0xC7, - 0x0E, 0x41, 0x4B, 0x6F, 0xEE, 0x88, 0x08, 0x6A, 0xFA, 0xA4, 0x8E, 0x9F, 0x3A, 0x24, 0x8E, 0xDC, - 0x09, 0x34, 0x52, 0x66, 0x3D, 0x34, 0xE0, 0xE8, 0x09, 0xD4, 0xF6, 0xBA, 0xDB, 0xB3, 0x6F, 0x80, - 0xB6, 0x81, 0x3E, 0xBF, 0x7C, 0x32, 0x81, 0xB8, 0x62, 0x20, 0x9E, 0x56, 0x04, 0xBD, 0xEA, 0x8B, - 0x8F, 0x5F, 0x7B, 0xFD, 0xC3, 0xEE, 0xB7, 0xAD, 0xB7, 0x30, 0x48, 0x28, 0x9B, 0xCE, 0xA0, 0xF5, - 0xA5, 0xCD, 0xEE, 0x7D, 0xF9, 0x1C, 0xD1, 0xF0, 0xBA, 0x63, 0x2F, 0x06, 0xDB, 0xE9, 0xBA, 0x7E, - 0xF0, 0x14, 0xB8, 0x4B, 0x02, 0xD4, 0x97, 0xCA, 0x7D, 0x0C, 0x60, 0xF7, 0x34, 0x75, 0x2A, 0x64, - 0x9D, 0xA4, 0x96, 0x94, 0x6B, 0x4E, 0x53, 0x1B, 0x30, 0xD9, 0xF8, 0x2E, 0xDD, 0x85, 0x56, 0x36, - 0xC0, 0xB0, 0xF2, 0xAE, 0x23, 0x2E, 0x41, 0x86, 0x45, 0x4E, 0x88, 0x87, 0xBB, 0x42, 0x3E, 0x32, - 0xA5, 0xA2, 0x49, 0x5E, 0xAC, 0xBA, 0x99, 0x62, 0x0A, 0xCD, 0x03, 0xA3, 0x83, 0x45, 0xEB, 0xB6, - 0x73, 0x5E, 0x62, 0x33, 0x0A, 0x8E, 0xE9, 0xAA, 0x6C, 0x83, 0x70, 0x41, 0x0F, 0x5C, 0xD4, 0x5A, - 0xF3, 0x7E, 0xE9, 0x0A, 0x0D, 0xA9, 0x5B, 0xE9, 0x6F, 0xC9, 0x39, 0xE8, 0x8F, 0xE0, 0xBD, 0x2C, - 0xD0, 0x9F, 0xC8, 0xF5, 0x24, 0x20, 0x8C - }; - - for (i = 0; i < 1; i++) { - DO(dh_set_pg(test[i].p, test[i].plen, test[i].g, test[i].glen, &k1)); - DO(dh_set_key(test[i].x, test[i].xlen, PK_PRIVATE, &k1)); - - len = sizeof(buf); - DO(dh_export(buf, &len, PK_PRIVATE, &k1)); - if (compare_testvector(buf, len, export_private, sizeof(export_private), "radix_test", i*10 + 0)) { - printf("radix_test: dh_export+PK_PRIVATE mismatch\n"); - dh_free(&k1); - return CRYPT_ERROR; - } - len = sizeof(buf); - DO(dh_export(buf, &len, PK_PUBLIC, &k1)); - if (compare_testvector(buf, len, export_public, sizeof(export_public), "radix_test", i*10 + 1)) { - printf("radix_test: dh_export+PK_PUBLIC mismatch\n"); - dh_free(&k1); - return CRYPT_ERROR; - } - len = sizeof(buf); - DO(dh_export_key(buf, &len, PK_PRIVATE, &k1)); - if (compare_testvector(buf, len, xbin, sizeof(xbin), "radix_test", i*10 + 2)) { - printf("radix_test: dh_export+PK_PRIVATE mismatch\n"); - dh_free(&k1); - return CRYPT_ERROR; - } - len = sizeof(buf); - DO(dh_export_key(buf, &len, PK_PUBLIC, &k1)); - if (compare_testvector(buf, len, ybin, sizeof(ybin), "radix_test", i*10 + 3)) { - printf("radix_test: dh_export+PK_PUBLIC mismatch\n"); - dh_free(&k1); - return CRYPT_ERROR; - } - dh_free(&k1); - - DO(dh_set_pg(test[i].p, test[i].plen, test[i].g, test[i].glen, &k1)); - DO(dh_set_key(test[i].x, test[i].xlen, PK_PRIVATE, &k1)); - - len = sizeof(buf); - DO(dh_export(buf, &len, PK_PRIVATE, &k1)); - if (compare_testvector(buf, len, export_private, sizeof(export_private), "radix_test", i*10 + 4)) { - printf("radix_test: dh_export+PK_PRIVATE mismatch\n"); - dh_free(&k1); - return CRYPT_ERROR; - } - len = sizeof(buf); - DO(dh_export(buf, &len, PK_PUBLIC, &k1)); - if (compare_testvector(buf, len, export_public, sizeof(export_public), "radix_test", i*10 + 5)) { - printf("radix_test: dh_export+PK_PUBLIC mismatch\n"); - dh_free(&k1); - return CRYPT_ERROR; - } - dh_free(&k1); - - DO(dh_set_pg(test[i].p, test[i].plen, test[i].g, test[i].glen, &k2)); - DO(dh_set_key(test[i].y, test[i].ylen, PK_PUBLIC, &k2)); - - len = sizeof(buf); - DO(dh_export(buf, &len, PK_PUBLIC, &k2)); - if (compare_testvector(buf, len, export_public, sizeof(export_public), "radix_test", i*10 + 6)) { - printf("radix_test: dh_export+PK_PUBLIC mismatch\n"); - dh_free(&k2); - return CRYPT_ERROR; - } - len = sizeof(buf); - DO(dh_export_key(buf, &len, PK_PUBLIC, &k2)); - if (compare_testvector(buf, len, ybin, sizeof(ybin), "radix_test", i*10 + 7)) { - printf("radix_test: dh_export+PK_PUBLIC mismatch\n"); - dh_free(&k2); - return CRYPT_ERROR; - } - dh_free(&k2); - - DO(dh_set_pg(test[i].p, test[i].plen, test[i].g, test[i].glen, &k3)); - DO(dh_generate_key(&yarrow_prng, find_prng("yarrow"), &k3)); - - len = mp_unsigned_bin_size(k3.prime); - DO(mp_to_unsigned_bin(k3.prime, buf)); - if (compare_testvector(buf, len, pbin, sizeof(pbin), "radix_test", i*10 + 8)) { - printf("radix_test: dh_make_key_ex prime mismatch\n"); - dh_free(&k3); - return CRYPT_ERROR; - } - len = mp_unsigned_bin_size(k3.base); - DO(mp_to_unsigned_bin(k3.base, buf)); - if (compare_testvector(buf, len, gbin, sizeof(gbin), "radix_test", i*10 + 9)) { - printf("radix_test: dh_make_key_ex base mismatch\n"); - dh_free(&k3); - return CRYPT_ERROR; - } - dh_free(&k3); - } - - return CRYPT_OK; -} - -static int _basic_test(void) -{ - unsigned char buf[3][4096]; - unsigned long x, y, z; - int size; - dh_key usera, userb; - - /* make up two keys */ - DO(dh_set_pg_groupsize(KEYSIZE/8, &usera)); - DO(dh_generate_key(&yarrow_prng, find_prng ("yarrow"), &usera)); - DO(dh_set_pg_groupsize(KEYSIZE/8, &userb)); - DO(dh_generate_key(&yarrow_prng, find_prng ("yarrow"), &userb)); - - /* make the shared secret */ - x = KEYSIZE; - DO(dh_shared_secret (&usera, &userb, buf[0], &x)); - - y = KEYSIZE; - DO(dh_shared_secret (&userb, &usera, buf[1], &y)); - if (y != x) { - fprintf(stderr, "DH Shared keys are not same size.\n"); - dh_free (&usera); - dh_free (&userb); - return CRYPT_ERROR; - } - if (memcmp (buf[0], buf[1], x)) { - fprintf(stderr, "DH Shared keys not same contents.\n"); - dh_free (&usera); - dh_free (&userb); - return CRYPT_ERROR; - } - - /* now export userb */ - y = KEYSIZE; - DO(dh_export (buf[1], &y, PK_PUBLIC, &userb)); - dh_free (&userb); - - /* import and make the shared secret again */ - DO(dh_import (buf[1], y, &userb)); - z = KEYSIZE; - DO(dh_shared_secret (&usera, &userb, buf[2], &z)); - - dh_free (&usera); - dh_free (&userb); - - if (z != x) { - fprintf(stderr, "failed. Size don't match?\n"); - return CRYPT_ERROR; - } - if (memcmp (buf[0], buf[2], x)) { - fprintf(stderr, "Failed. Content didn't match.\n"); - return CRYPT_ERROR; - } - - for (x = 0; ltc_dh_sets[x].size != 0; x++) { - DO(dh_set_pg_groupsize(ltc_dh_sets[x].size, &usera)); - DO(dh_generate_key(&yarrow_prng, find_prng ("yarrow"), &usera)); - size = dh_get_groupsize(&usera); - dh_free(&usera); - if (size != ltc_dh_sets[x].size) { - fprintf(stderr, "dh_groupsize mismatch %d %d\n", size, ltc_dh_sets[x].size); - return CRYPT_ERROR; - } - dh_free(&usera); - } - - return CRYPT_OK; -} - -int dh_test(void) -{ - int fails = 0; - if (_prime_test() != CRYPT_OK) fails++; - if (_basic_test() != CRYPT_OK) fails++; - if (_dhparam_test() != CRYPT_OK) fails++; - if (_set_test() != CRYPT_OK) fails++; - return fails > 0 ? CRYPT_FAIL_TESTVECTOR : CRYPT_OK; -} - -#else - -int dh_test(void) -{ - return CRYPT_NOP; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/dsa_test.c b/src/libtomcrypt/tests/dsa_test.c deleted file mode 100644 index 14a4d1a6a2..0000000000 --- a/src/libtomcrypt/tests/dsa_test.c +++ /dev/null @@ -1,400 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -#if defined(LTC_MDSA) && defined(LTC_TEST_MPI) - -/* This is the private key from test_dsa.key */ -static const unsigned char openssl_priv_dsa[] = { - 0x30, 0x82, 0x01, 0xbb, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xc5, - 0x0a, 0x37, 0x51, 0x5c, 0xab, 0xd6, 0x18, 0xd5, 0xa2, 0x70, 0xbd, 0x4a, - 0x6f, 0x6b, 0x4a, 0xf9, 0xe1, 0x39, 0x95, 0x0f, 0x2b, 0x99, 0x38, 0x7d, - 0x9a, 0x64, 0xd6, 0x4c, 0xb5, 0x96, 0x7a, 0xdc, 0xed, 0xac, 0xa8, 0xac, - 0xc6, 0x1b, 0x65, 0x5a, 0xde, 0xdb, 0x00, 0x61, 0x25, 0x1a, 0x18, 0x2c, - 0xee, 0xa1, 0x07, 0x90, 0x62, 0x5e, 0x4d, 0x12, 0x31, 0x90, 0xc7, 0x03, - 0x21, 0xfa, 0x09, 0xe7, 0xb1, 0x73, 0xd7, 0x8e, 0xaf, 0xdb, 0xfd, 0xbf, - 0xb3, 0xef, 0xad, 0xd1, 0xa1, 0x2a, 0x03, 0x6d, 0xe7, 0x06, 0x92, 0x4a, - 0x85, 0x2a, 0xff, 0x7a, 0x01, 0x66, 0x53, 0x1f, 0xea, 0xc6, 0x67, 0x41, - 0x84, 0x5a, 0xc0, 0x6c, 0xed, 0x62, 0xf9, 0xc2, 0x62, 0x62, 0x05, 0xa4, - 0xfa, 0x48, 0xa0, 0x66, 0xec, 0x35, 0xc9, 0xa8, 0x11, 0xfe, 0xb9, 0x81, - 0xab, 0xee, 0xbe, 0x31, 0xb6, 0xbf, 0xcf, 0x02, 0x15, 0x00, 0xaa, 0x5b, - 0xd7, 0xf4, 0xe5, 0x06, 0x24, 0x13, 0xe5, 0x88, 0x35, 0xca, 0x00, 0xc7, - 0xa6, 0x35, 0x71, 0x61, 0x94, 0xc5, 0x02, 0x81, 0x80, 0x3b, 0x92, 0xe4, - 0xff, 0x59, 0x29, 0x15, 0x0b, 0x08, 0x99, 0x5a, 0x7b, 0xf2, 0xad, 0x14, - 0x40, 0x55, 0x6f, 0xa0, 0x47, 0xff, 0x90, 0x99, 0xb3, 0x44, 0xb3, 0xd4, - 0xfc, 0x45, 0x15, 0x05, 0xae, 0x67, 0x22, 0x43, 0x9c, 0xba, 0x37, 0x10, - 0xa5, 0x89, 0x47, 0x37, 0xec, 0xcc, 0xf5, 0xae, 0xad, 0xa8, 0xb4, 0x7a, - 0x35, 0xcb, 0x9d, 0x93, 0x5c, 0xed, 0xe6, 0xb0, 0x7e, 0x96, 0x94, 0xc4, - 0xa6, 0x0c, 0x7d, 0xd6, 0x70, 0x8a, 0x09, 0x4f, 0x81, 0x4a, 0x0e, 0xc2, - 0x13, 0xfb, 0xeb, 0x16, 0xbf, 0xea, 0xa4, 0xf4, 0x56, 0xff, 0x72, 0x30, - 0x05, 0xde, 0x8a, 0x44, 0x3f, 0xbe, 0xc6, 0x85, 0x26, 0x55, 0xd6, 0x2d, - 0x1d, 0x1e, 0xdb, 0x15, 0xda, 0xa4, 0x45, 0x83, 0x3c, 0x17, 0x97, 0x98, - 0x0b, 0x8d, 0x87, 0xf3, 0x49, 0x0d, 0x90, 0xbd, 0xa9, 0xab, 0x67, 0x6e, - 0x87, 0x68, 0x72, 0x23, 0xdc, 0x02, 0x81, 0x80, 0x53, 0x16, 0xb0, 0xfb, - 0xbf, 0x59, 0x8a, 0x5e, 0x55, 0x95, 0xc1, 0x4f, 0xac, 0x43, 0xb8, 0x08, - 0x53, 0xe6, 0xcf, 0x0d, 0x92, 0x23, 0xfa, 0xb1, 0x84, 0x59, 0x52, 0x39, - 0xbf, 0xcb, 0xf2, 0x2d, 0x38, 0x3a, 0xdd, 0x93, 0x52, 0x05, 0x49, 0x7e, - 0x2b, 0x12, 0xc4, 0x61, 0x73, 0xe3, 0x6f, 0x54, 0xbd, 0x96, 0xe5, 0xa7, - 0xaa, 0xa9, 0x5a, 0x58, 0xa4, 0xb7, 0x67, 0xd2, 0xc0, 0xbd, 0xc8, 0x1e, - 0xb1, 0x3a, 0x12, 0x4f, 0x98, 0xc0, 0x05, 0xef, 0x39, 0x5d, 0x6a, 0xba, - 0xb7, 0x0b, 0x3b, 0xd8, 0xb7, 0x95, 0xdd, 0x79, 0x6e, 0xa2, 0xd2, 0x84, - 0x73, 0x47, 0x03, 0x88, 0xb4, 0x64, 0xd9, 0xb9, 0xb8, 0x4f, 0xf1, 0xc9, - 0x34, 0xbb, 0xf9, 0x73, 0x66, 0xf5, 0x7c, 0x2e, 0x11, 0xfe, 0xc3, 0x31, - 0xe6, 0x08, 0x38, 0x59, 0x67, 0x81, 0xeb, 0x6d, 0x41, 0x27, 0xd7, 0x0d, - 0x74, 0xaf, 0xa0, 0x35, 0x02, 0x15, 0x00, 0x99, 0x36, 0xe5, 0xe4, 0xe9, - 0xfb, 0x28, 0xbe, 0x91, 0xf5, 0x06, 0x5f, 0xe8, 0xc9, 0x35, 0xb3, 0xf5, - 0xd8, 0x1f, 0xc5 -}; - -/* private key - raw hexadecimal numbers */ -static const char *hex_g = "3B92E4FF5929150B08995A7BF2AD1440556FA047FF9099B344B3D4FC451505AE6722439CBA3710A5894737ECCCF5AEADA8B47A35CB9D935CEDE6B07E9694C4A60C7DD6708A094F814A0EC213FBEB16BFEAA4F456FF723005DE8A443FBEC6852655D62D1D1EDB15DAA445833C1797980B8D87F3490D90BDA9AB676E87687223DC"; -static const char *hex_p = "C50A37515CABD618D5A270BD4A6F6B4AF9E139950F2B99387D9A64D64CB5967ADCEDACA8ACC61B655ADEDB0061251A182CEEA10790625E4D123190C70321FA09E7B173D78EAFDBFDBFB3EFADD1A12A036DE706924A852AFF7A0166531FEAC66741845AC06CED62F9C2626205A4FA48A066EC35C9A811FEB981ABEEBE31B6BFCF"; -static const char *hex_q = "AA5BD7F4E5062413E58835CA00C7A635716194C5"; -static const char *hex_x = "9936E5E4E9FB28BE91F5065FE8C935B3F5D81FC5"; -static const char *hex_y = "5316B0FBBF598A5E5595C14FAC43B80853E6CF0D9223FAB184595239BFCBF22D383ADD935205497E2B12C46173E36F54BD96E5A7AAA95A58A4B767D2C0BDC81EB13A124F98C005EF395D6ABAB70B3BD8B795DD796EA2D28473470388B464D9B9B84FF1C934BBF97366F57C2E11FEC331E60838596781EB6D4127D70D74AFA035"; - -/* The public part of test_dsa.key in SubjectPublicKeyInfo format */ -static const unsigned char openssl_pub_dsa[] = { - 0x30, 0x82, 0x01, 0xb6, 0x30, 0x82, 0x01, 0x2b, 0x06, 0x07, 0x2a, 0x86, - 0x48, 0xce, 0x38, 0x04, 0x01, 0x30, 0x82, 0x01, 0x1e, 0x02, 0x81, 0x81, - 0x00, 0xc5, 0x0a, 0x37, 0x51, 0x5c, 0xab, 0xd6, 0x18, 0xd5, 0xa2, 0x70, - 0xbd, 0x4a, 0x6f, 0x6b, 0x4a, 0xf9, 0xe1, 0x39, 0x95, 0x0f, 0x2b, 0x99, - 0x38, 0x7d, 0x9a, 0x64, 0xd6, 0x4c, 0xb5, 0x96, 0x7a, 0xdc, 0xed, 0xac, - 0xa8, 0xac, 0xc6, 0x1b, 0x65, 0x5a, 0xde, 0xdb, 0x00, 0x61, 0x25, 0x1a, - 0x18, 0x2c, 0xee, 0xa1, 0x07, 0x90, 0x62, 0x5e, 0x4d, 0x12, 0x31, 0x90, - 0xc7, 0x03, 0x21, 0xfa, 0x09, 0xe7, 0xb1, 0x73, 0xd7, 0x8e, 0xaf, 0xdb, - 0xfd, 0xbf, 0xb3, 0xef, 0xad, 0xd1, 0xa1, 0x2a, 0x03, 0x6d, 0xe7, 0x06, - 0x92, 0x4a, 0x85, 0x2a, 0xff, 0x7a, 0x01, 0x66, 0x53, 0x1f, 0xea, 0xc6, - 0x67, 0x41, 0x84, 0x5a, 0xc0, 0x6c, 0xed, 0x62, 0xf9, 0xc2, 0x62, 0x62, - 0x05, 0xa4, 0xfa, 0x48, 0xa0, 0x66, 0xec, 0x35, 0xc9, 0xa8, 0x11, 0xfe, - 0xb9, 0x81, 0xab, 0xee, 0xbe, 0x31, 0xb6, 0xbf, 0xcf, 0x02, 0x15, 0x00, - 0xaa, 0x5b, 0xd7, 0xf4, 0xe5, 0x06, 0x24, 0x13, 0xe5, 0x88, 0x35, 0xca, - 0x00, 0xc7, 0xa6, 0x35, 0x71, 0x61, 0x94, 0xc5, 0x02, 0x81, 0x80, 0x3b, - 0x92, 0xe4, 0xff, 0x59, 0x29, 0x15, 0x0b, 0x08, 0x99, 0x5a, 0x7b, 0xf2, - 0xad, 0x14, 0x40, 0x55, 0x6f, 0xa0, 0x47, 0xff, 0x90, 0x99, 0xb3, 0x44, - 0xb3, 0xd4, 0xfc, 0x45, 0x15, 0x05, 0xae, 0x67, 0x22, 0x43, 0x9c, 0xba, - 0x37, 0x10, 0xa5, 0x89, 0x47, 0x37, 0xec, 0xcc, 0xf5, 0xae, 0xad, 0xa8, - 0xb4, 0x7a, 0x35, 0xcb, 0x9d, 0x93, 0x5c, 0xed, 0xe6, 0xb0, 0x7e, 0x96, - 0x94, 0xc4, 0xa6, 0x0c, 0x7d, 0xd6, 0x70, 0x8a, 0x09, 0x4f, 0x81, 0x4a, - 0x0e, 0xc2, 0x13, 0xfb, 0xeb, 0x16, 0xbf, 0xea, 0xa4, 0xf4, 0x56, 0xff, - 0x72, 0x30, 0x05, 0xde, 0x8a, 0x44, 0x3f, 0xbe, 0xc6, 0x85, 0x26, 0x55, - 0xd6, 0x2d, 0x1d, 0x1e, 0xdb, 0x15, 0xda, 0xa4, 0x45, 0x83, 0x3c, 0x17, - 0x97, 0x98, 0x0b, 0x8d, 0x87, 0xf3, 0x49, 0x0d, 0x90, 0xbd, 0xa9, 0xab, - 0x67, 0x6e, 0x87, 0x68, 0x72, 0x23, 0xdc, 0x03, 0x81, 0x84, 0x00, 0x02, - 0x81, 0x80, 0x53, 0x16, 0xb0, 0xfb, 0xbf, 0x59, 0x8a, 0x5e, 0x55, 0x95, - 0xc1, 0x4f, 0xac, 0x43, 0xb8, 0x08, 0x53, 0xe6, 0xcf, 0x0d, 0x92, 0x23, - 0xfa, 0xb1, 0x84, 0x59, 0x52, 0x39, 0xbf, 0xcb, 0xf2, 0x2d, 0x38, 0x3a, - 0xdd, 0x93, 0x52, 0x05, 0x49, 0x7e, 0x2b, 0x12, 0xc4, 0x61, 0x73, 0xe3, - 0x6f, 0x54, 0xbd, 0x96, 0xe5, 0xa7, 0xaa, 0xa9, 0x5a, 0x58, 0xa4, 0xb7, - 0x67, 0xd2, 0xc0, 0xbd, 0xc8, 0x1e, 0xb1, 0x3a, 0x12, 0x4f, 0x98, 0xc0, - 0x05, 0xef, 0x39, 0x5d, 0x6a, 0xba, 0xb7, 0x0b, 0x3b, 0xd8, 0xb7, 0x95, - 0xdd, 0x79, 0x6e, 0xa2, 0xd2, 0x84, 0x73, 0x47, 0x03, 0x88, 0xb4, 0x64, - 0xd9, 0xb9, 0xb8, 0x4f, 0xf1, 0xc9, 0x34, 0xbb, 0xf9, 0x73, 0x66, 0xf5, - 0x7c, 0x2e, 0x11, 0xfe, 0xc3, 0x31, 0xe6, 0x08, 0x38, 0x59, 0x67, 0x81, - 0xeb, 0x6d, 0x41, 0x27, 0xd7, 0x0d, 0x74, 0xaf, 0xa0, 0x35 -}; - -static unsigned char dsaparam_der[] = { - 0x30, 0x82, 0x01, 0x1e, 0x02, 0x81, 0x81, 0x00, 0xc5, 0x0a, 0x37, 0x51, - 0x5c, 0xab, 0xd6, 0x18, 0xd5, 0xa2, 0x70, 0xbd, 0x4a, 0x6f, 0x6b, 0x4a, - 0xf9, 0xe1, 0x39, 0x95, 0x0f, 0x2b, 0x99, 0x38, 0x7d, 0x9a, 0x64, 0xd6, - 0x4c, 0xb5, 0x96, 0x7a, 0xdc, 0xed, 0xac, 0xa8, 0xac, 0xc6, 0x1b, 0x65, - 0x5a, 0xde, 0xdb, 0x00, 0x61, 0x25, 0x1a, 0x18, 0x2c, 0xee, 0xa1, 0x07, - 0x90, 0x62, 0x5e, 0x4d, 0x12, 0x31, 0x90, 0xc7, 0x03, 0x21, 0xfa, 0x09, - 0xe7, 0xb1, 0x73, 0xd7, 0x8e, 0xaf, 0xdb, 0xfd, 0xbf, 0xb3, 0xef, 0xad, - 0xd1, 0xa1, 0x2a, 0x03, 0x6d, 0xe7, 0x06, 0x92, 0x4a, 0x85, 0x2a, 0xff, - 0x7a, 0x01, 0x66, 0x53, 0x1f, 0xea, 0xc6, 0x67, 0x41, 0x84, 0x5a, 0xc0, - 0x6c, 0xed, 0x62, 0xf9, 0xc2, 0x62, 0x62, 0x05, 0xa4, 0xfa, 0x48, 0xa0, - 0x66, 0xec, 0x35, 0xc9, 0xa8, 0x11, 0xfe, 0xb9, 0x81, 0xab, 0xee, 0xbe, - 0x31, 0xb6, 0xbf, 0xcf, 0x02, 0x15, 0x00, 0xaa, 0x5b, 0xd7, 0xf4, 0xe5, - 0x06, 0x24, 0x13, 0xe5, 0x88, 0x35, 0xca, 0x00, 0xc7, 0xa6, 0x35, 0x71, - 0x61, 0x94, 0xc5, 0x02, 0x81, 0x80, 0x3b, 0x92, 0xe4, 0xff, 0x59, 0x29, - 0x15, 0x0b, 0x08, 0x99, 0x5a, 0x7b, 0xf2, 0xad, 0x14, 0x40, 0x55, 0x6f, - 0xa0, 0x47, 0xff, 0x90, 0x99, 0xb3, 0x44, 0xb3, 0xd4, 0xfc, 0x45, 0x15, - 0x05, 0xae, 0x67, 0x22, 0x43, 0x9c, 0xba, 0x37, 0x10, 0xa5, 0x89, 0x47, - 0x37, 0xec, 0xcc, 0xf5, 0xae, 0xad, 0xa8, 0xb4, 0x7a, 0x35, 0xcb, 0x9d, - 0x93, 0x5c, 0xed, 0xe6, 0xb0, 0x7e, 0x96, 0x94, 0xc4, 0xa6, 0x0c, 0x7d, - 0xd6, 0x70, 0x8a, 0x09, 0x4f, 0x81, 0x4a, 0x0e, 0xc2, 0x13, 0xfb, 0xeb, - 0x16, 0xbf, 0xea, 0xa4, 0xf4, 0x56, 0xff, 0x72, 0x30, 0x05, 0xde, 0x8a, - 0x44, 0x3f, 0xbe, 0xc6, 0x85, 0x26, 0x55, 0xd6, 0x2d, 0x1d, 0x1e, 0xdb, - 0x15, 0xda, 0xa4, 0x45, 0x83, 0x3c, 0x17, 0x97, 0x98, 0x0b, 0x8d, 0x87, - 0xf3, 0x49, 0x0d, 0x90, 0xbd, 0xa9, 0xab, 0x67, 0x6e, 0x87, 0x68, 0x72, - 0x23, 0xdc - }; - - -static int _dsa_compat_test(void) -{ - dsa_key key; - unsigned char tmp[1024], buf[1024]; - unsigned long x, len; - unsigned char key_parts[5][256]; - unsigned long key_lens[5]; - int stat; - - DO(dsa_import(openssl_priv_dsa, sizeof(openssl_priv_dsa), &key)); - - x = sizeof(tmp); - DO(dsa_export(tmp, &x, PK_PRIVATE | PK_STD, &key)); - if (compare_testvector(tmp, x, openssl_priv_dsa, sizeof(openssl_priv_dsa), - "DSA private export failed from dsa_import(priv_key)\n", __LINE__)) { - return CRYPT_FAIL_TESTVECTOR; - } - - x = sizeof(tmp); - DO(dsa_export(tmp, &x, PK_PUBLIC | PK_STD, &key)); - if (compare_testvector(tmp, x, openssl_pub_dsa, sizeof(openssl_pub_dsa), - "DSA public export failed from dsa_import(priv_key)\n", __LINE__)) { - return CRYPT_FAIL_TESTVECTOR; - } - dsa_free(&key); - - DO(dsa_import(openssl_pub_dsa, sizeof(openssl_pub_dsa), &key)); - - x = sizeof(tmp); - DO(dsa_export(tmp, &x, PK_PUBLIC | PK_STD, &key)); - if (compare_testvector(tmp, x, openssl_pub_dsa, sizeof(openssl_pub_dsa), - "DSA public export failed from dsa_import(pub_key)\n", __LINE__)) { - return CRYPT_FAIL_TESTVECTOR; - } - dsa_free(&key); - - /* try import private key from raw hexadecimal numbers */ - for (x = 0; x < 5; ++x) { - key_lens[x] = sizeof(key_parts[x]); - } - DO(radix_to_bin(hex_p, 16, key_parts[0], &key_lens[0])); - DO(radix_to_bin(hex_q, 16, key_parts[1], &key_lens[1])); - DO(radix_to_bin(hex_g, 16, key_parts[2], &key_lens[2])); - DO(radix_to_bin(hex_y, 16, key_parts[3], &key_lens[3])); - DO(radix_to_bin(hex_x, 16, key_parts[4], &key_lens[4])); - - DO(dsa_set_pqg(key_parts[0], key_lens[0], - key_parts[1], key_lens[1], - key_parts[2], key_lens[2], - &key)); - DO(dsa_set_key(key_parts[4], key_lens[4], - PK_PRIVATE, - &key)); - len = sizeof(buf); - DO(dsa_export(buf, &len, PK_PRIVATE | PK_STD, &key)); - if (compare_testvector(buf, len, openssl_priv_dsa, sizeof(openssl_priv_dsa), - "DSA private export failed from dsa_set_pqg() & dsa_set_key()\n", __LINE__)) { - return CRYPT_FAIL_TESTVECTOR; - } - dsa_free(&key); - - /* try import public key from raw hexadecimal numbers */ - DO(dsa_set_pqg(key_parts[0], key_lens[0], - key_parts[1], key_lens[1], - key_parts[2], key_lens[2], - &key)); - DO(dsa_set_key(key_parts[3], key_lens[3], - PK_PUBLIC, - &key)); - len = sizeof(buf); - DO(dsa_export(buf, &len, PK_PUBLIC | PK_STD, &key)); - if (compare_testvector(buf, len, openssl_pub_dsa, sizeof(openssl_pub_dsa), - "DSA public export failed from dsa_set_pqg() & dsa_set_key()\n", __LINE__)) { - return CRYPT_FAIL_TESTVECTOR; - } - dsa_free(&key); - - /* try import dsaparam */ - DO(dsa_set_pqg_dsaparam(dsaparam_der, sizeof(dsaparam_der), &key)); - DO(dsa_generate_key(&yarrow_prng, find_prng("yarrow"), &key)); - /* verify it */ - DO(dsa_verify_key(&key, &stat)); - if (stat == 0) { - fprintf(stderr, "dsa_verify_key after dsa_set_pqg_dsaparam()"); - return CRYPT_FAIL_TESTVECTOR; - } - dsa_free(&key); - - /* try import dsaparam - our public key */ - DO(dsa_set_pqg_dsaparam(dsaparam_der, sizeof(dsaparam_der), &key)); - DO(dsa_set_key(key_parts[3], key_lens[3], - PK_PUBLIC, - &key)); - len = sizeof(buf); - DO(dsa_export(buf, &len, PK_PUBLIC | PK_STD, &key)); - if (compare_testvector(buf, len, openssl_pub_dsa, sizeof(openssl_pub_dsa), - "DSA public export failed from dsa_set_pqg_dsaparam()\n", __LINE__)) { - return CRYPT_FAIL_TESTVECTOR; - } - dsa_free(&key); - - /* try import dsaparam - our private key */ - DO(dsa_set_pqg_dsaparam(dsaparam_der, sizeof(dsaparam_der), &key)); - DO(dsa_set_key(key_parts[4], key_lens[4], - PK_PRIVATE, - &key)); - len = sizeof(buf); - DO(dsa_export(buf, &len, PK_PRIVATE | PK_STD, &key)); - if (compare_testvector(buf, len, openssl_priv_dsa, sizeof(openssl_priv_dsa), - "DSA private export failed from dsa_set_pqg_dsaparam()\n", __LINE__)) { - return CRYPT_FAIL_TESTVECTOR; - } - dsa_free(&key); - - return CRYPT_OK; -} - -static int _dsa_wycheproof_test(void) -{ - /* test case from https://github.com/google/wycheproof/blob/master/testvectors/dsa_test.json - * - * "comment" : "appending unused 0's", - * "message" : "48656c6c6f", - * "result" : "invalid", - * "sig" : "303d021c1e41b479ad576905b960fe14eadb91b0ccf34843dab916173bb8c9cd021d00ade65988d237d30f9ef41dd424a4e1c8f16967cf3365813fe87862360000", - * "tcId" : 55 - */ - unsigned char msg[] = { 0x48, 0x65, 0x6c, 0x6c, 0x6f }; - unsigned char sig[] = { 0x30, 0x3d, 0x02, 0x1c, 0x1e, 0x41, 0xb4, 0x79, 0xad, 0x57, 0x69, 0x05, 0xb9, 0x60, 0xfe, - 0x14, 0xea, 0xdb, 0x91, 0xb0, 0xcc, 0xf3, 0x48, 0x43, 0xda, 0xb9, 0x16, 0x17, 0x3b, 0xb8, - 0xc9, 0xcd, 0x02, 0x1d, 0x00, 0xad, 0xe6, 0x59, 0x88, 0xd2, 0x37, 0xd3, 0x0f, 0x9e, 0xf4, - 0x1d, 0xd4, 0x24, 0xa4, 0xe1, 0xc8, 0xf1, 0x69, 0x67, 0xcf, 0x33, 0x65, 0x81, 0x3f, 0xe8, - 0x78, 0x62, 0x36, 0x00, 0x00 }; - const char* b64key = - "MIIDQjCCAjUGByqGSM44BAEwggIoAoIBAQCPeTXZuarpv6vtiHrPSVG28y7FnjuvNxjo6sSWHz79" - "NgbnQ1GpxBgzObgJ58KuHFObp0dbhdARrbi0eYd1SYRpXKwOjxSzNggooi/6JxEKPWKpk0U0CaD+" - "aWxGWPhL3SCBnDcJoBBXsZWtzQAjPbpUhLYpH51kjviDRIZ3l5zsBLQ0pqwudemYXeI9sCkvwRGM" - "n/qdgYHnM423krcw17njSVkvaAmYchU5Feo9a4tGU8YzRY+AOzKkwuDycpAlbk4/ijsIOKHEUOTh" - "jBopo33fXqFD3ktm/wSQPtXPFiPhWNSHxgjpfyEc2B3KI8tuOAdl+CLjQr5ITAV2OTlgHNZnAh0A" - "uvaWpoV499/e5/pnyXfHhe8ysjO65YDAvNVpXQKCAQAWplxYIEhQcE51AqOXVwQNNNo6NHjBVNTk" - "pcAtJC7gT5bmHkvQkEq9rI837rHgnzGC0jyQQ8tkL4gAQWDt+coJsyB2p5wypifyRz6Rh5uixOdE" - "vSCBVEy1W4AsNo0fqD7UielOD6BojjJCilx4xHjGjQUntxyaOrsLC+EsRGiWOefTznTbEBplqiuH" - "9kxoJts+xy9LVZmDS7TtsC98kOmkltOlXVNb6/xF1PYZ9j897buHOSXC8iTgdzEpbaiH7B5HSPh+" - "+1/et1SEMWsiMt7lU92vAhErDR8C2jCXMiT+J67ai51LKSLZuovjntnhA6Y8UoELxoi34u1DFuHv" - "F9veA4IBBQACggEAHnf4QrGuD82ZKdOUFh1B4UYU/3UHqaMfSh8U0i4qYnofTllmJIg/GlsWjpQl" - "FG8i1fbuKHV0FHFLuZS6ESnwFdbgSnF+35tTCl1cq5TxRjHotM95rrNYzHQYRVU4QeisRhYw6ASm" - "L0Nna6Z5SvZomcN3uGnqYSp7n+ZhGqlr5S64tiyXkRe7vMqKfsHh/6scffz8cEhwDTrjhYE26Jdw" - "HXwpIbXf7x0fiX9Q2WyhtcLtxYytoYkZ41ZC8IB+6/oAyZoy9NCVwxiPeO1UcRvgMlxLUyrszWVA" - "pWfDJyJUQOoVMZveBlEEeaGGF5niW1fezHPANtdaBwK9NzyiMTSZMQ=="; - unsigned char derkey[838]; - unsigned long derlen = sizeof(derkey); - unsigned char hash[32]; - unsigned long hashlen = sizeof(hash); - dsa_key key; - int stat; - - DO(base64_decode((unsigned char*)b64key, strlen(b64key), derkey, &derlen)); - if (derlen != 838) { - fprintf(stderr, "base64_decode failed, derlen=%lu (expected 838)\n", derlen); - return CRYPT_FAIL_TESTVECTOR; - } - DO(dsa_import(derkey, derlen, &key)); - DO(hash_memory(find_hash("sha224"), msg, sizeof(msg), hash, &hashlen)); - if (hashlen != 28) { - fprintf(stderr, "hash_memory failed, hashlen=%lu (expected 32)\n", hashlen); - return CRYPT_FAIL_TESTVECTOR; - } - - stat = 666; /* intentionally not one, not zero */ - DO(dsa_verify_hash(sig, sizeof(sig)-2, hash, hashlen, &stat, &key)); - /* without the last two 0x00 bytes it is a valid signature */ - if (stat != 1) { - fprintf(stderr, "dsa_verify_hash rejected valid signature\n"); - return CRYPT_FAIL_TESTVECTOR; - } - - stat = 666; /* intentionally not one, not zero */ - DO(dsa_verify_hash(sig, sizeof(sig), hash, hashlen, &stat, &key)); - /* this should be invalid */ - if (stat != 0) { - fprintf(stderr, "dsa_verify_hash did not reject invalid signature\n"); - return CRYPT_FAIL_TESTVECTOR; - } - - dsa_free(&key); - return CRYPT_OK; -} - -int dsa_test(void) -{ - unsigned char msg[16], out[1024], out2[1024], ch; - unsigned long x, y; - int stat1, stat2; - dsa_key key, key2; - - DO(_dsa_compat_test()); - DO(_dsa_wycheproof_test()); - - /* make a random key */ - DO(dsa_generate_pqg(&yarrow_prng, find_prng("yarrow"), 20, 128, &key)); - DO(dsa_generate_key(&yarrow_prng, find_prng("yarrow"), &key)); - - /* verify it */ - DO(dsa_verify_key(&key, &stat1)); - if (stat1 == 0) { fprintf(stderr, "dsa_verify_key "); return 1; } - - /* encrypt a message */ - for (ch = 0; ch < 16; ch++) { msg[ch] = ch; } - x = sizeof(out); - DO(dsa_encrypt_key(msg, 16, out, &x, &yarrow_prng, find_prng("yarrow"), find_hash("sha1"), &key)); - - /* decrypt */ - y = sizeof(out2); - DO(dsa_decrypt_key(out, x, out2, &y, &key)); - - if (y != 16 || memcmp(out2, msg, 16)) { - fprintf(stderr, "dsa_decrypt failed, y == %lu\n", y); - return 1; - } - - /* sign the message */ - x = sizeof(out); - DO(dsa_sign_hash(msg, sizeof(msg), out, &x, &yarrow_prng, find_prng("yarrow"), &key)); - - /* verify it once */ - DO(dsa_verify_hash(out, x, msg, sizeof(msg), &stat1, &key)); - - /* Modify and verify again */ - msg[0] ^= 1; - DO(dsa_verify_hash(out, x, msg, sizeof(msg), &stat2, &key)); - msg[0] ^= 1; - if (!(stat1 == 1 && stat2 == 0)) { fprintf(stderr, "dsa_verify %d %d", stat1, stat2); return 1; } - - /* test exporting it */ - y = sizeof(out2); - DO(dsa_export(out2, &y, PK_PRIVATE, &key)); - DO(dsa_import(out2, y, &key2)); - - /* verify a signature with it */ - DO(dsa_verify_hash(out, x, msg, sizeof(msg), &stat1, &key2)); - if (stat1 == 0) { fprintf(stderr, "dsa_verify (import private) %d ", stat1); return 1; } - dsa_free(&key2); - - /* export as public now */ - y = sizeof(out2); - DO(dsa_export(out2, &y, PK_PUBLIC, &key)); - - DO(dsa_import(out2, y, &key2)); - /* verify a signature with it */ - DO(dsa_verify_hash(out, x, msg, sizeof(msg), &stat1, &key2)); - if (stat1 == 0) { fprintf(stderr, "dsa_verify (import public) %d ", stat1); return 1; } - dsa_free(&key2); - dsa_free(&key); - - return 0; -} - -#else - -int dsa_test(void) -{ - return CRYPT_NOP; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/ecc_test.c b/src/libtomcrypt/tests/ecc_test.c deleted file mode 100644 index 1a98624954..0000000000 --- a/src/libtomcrypt/tests/ecc_test.c +++ /dev/null @@ -1,268 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -#if defined(LTC_MECC) && defined(LTC_TEST_MPI) - -static unsigned int sizes[] = { -#ifdef LTC_ECC112 -14, -#endif -#ifdef LTC_ECC128 -16, -#endif -#ifdef LTC_ECC160 -20, -#endif -#ifdef LTC_ECC192 -24, -#endif -#ifdef LTC_ECC224 -28, -#endif -#ifdef LTC_ECC256 -32, -#endif -#ifdef LTC_ECC384 -48, -#endif -#ifdef LTC_ECC521 -65 -#endif -}; - -#ifdef LTC_ECC_SHAMIR -int ecc_test_shamir(void) -{ - void *modulus, *mp, *kA, *kB, *rA, *rB; - ecc_point *G, *A, *B, *C1, *C2; - int x, y, z; - unsigned char buf[ECC_BUF_SIZE]; - - DO(mp_init_multi(&kA, &kB, &rA, &rB, &modulus, NULL)); - LTC_ARGCHK((G = ltc_ecc_new_point()) != NULL); - LTC_ARGCHK((A = ltc_ecc_new_point()) != NULL); - LTC_ARGCHK((B = ltc_ecc_new_point()) != NULL); - LTC_ARGCHK((C1 = ltc_ecc_new_point()) != NULL); - LTC_ARGCHK((C2 = ltc_ecc_new_point()) != NULL); - - for (x = 0; x < (int)(sizeof(sizes)/sizeof(sizes[0])); x++) { - /* get the base point */ - for (z = 0; ltc_ecc_sets[z].name; z++) { - if (sizes[z] < (unsigned int)ltc_ecc_sets[z].size) break; - } - LTC_ARGCHK(ltc_ecc_sets[z].name != NULL); - - /* load it */ - DO(mp_read_radix(G->x, ltc_ecc_sets[z].Gx, 16)); - DO(mp_read_radix(G->y, ltc_ecc_sets[z].Gy, 16)); - DO(mp_set(G->z, 1)); - DO(mp_read_radix(modulus, ltc_ecc_sets[z].prime, 16)); - DO(mp_montgomery_setup(modulus, &mp)); - - /* do 100 random tests */ - for (y = 0; y < 100; y++) { - /* pick a random r1, r2 */ - LTC_ARGCHK(yarrow_read(buf, sizes[x], &yarrow_prng) == sizes[x]); - DO(mp_read_unsigned_bin(rA, buf, sizes[x])); - LTC_ARGCHK(yarrow_read(buf, sizes[x], &yarrow_prng) == sizes[x]); - DO(mp_read_unsigned_bin(rB, buf, sizes[x])); - - /* compute rA * G = A */ - DO(ltc_mp.ecc_ptmul(rA, G, A, modulus, 1)); - - /* compute rB * G = B */ - DO(ltc_mp.ecc_ptmul(rB, G, B, modulus, 1)); - - /* pick a random kA, kB */ - LTC_ARGCHK(yarrow_read(buf, sizes[x], &yarrow_prng) == sizes[x]); - DO(mp_read_unsigned_bin(kA, buf, sizes[x])); - LTC_ARGCHK(yarrow_read(buf, sizes[x], &yarrow_prng) == sizes[x]); - DO(mp_read_unsigned_bin(kB, buf, sizes[x])); - - /* now, compute kA*A + kB*B = C1 using the older method */ - DO(ltc_mp.ecc_ptmul(kA, A, C1, modulus, 0)); - DO(ltc_mp.ecc_ptmul(kB, B, C2, modulus, 0)); - DO(ltc_mp.ecc_ptadd(C1, C2, C1, modulus, mp)); - DO(ltc_mp.ecc_map(C1, modulus, mp)); - - /* now compute using mul2add */ - DO(ltc_mp.ecc_mul2add(A, kA, B, kB, C2, modulus)); - - /* is they the sames? */ - if ((mp_cmp(C1->x, C2->x) != LTC_MP_EQ) || (mp_cmp(C1->y, C2->y) != LTC_MP_EQ) || (mp_cmp(C1->z, C2->z) != LTC_MP_EQ)) { - fprintf(stderr, "ECC failed shamir test: size=%d, testno=%d\n", sizes[x], y); - return 1; - } - } - mp_montgomery_free(mp); - } - ltc_ecc_del_point(C2); - ltc_ecc_del_point(C1); - ltc_ecc_del_point(B); - ltc_ecc_del_point(A); - ltc_ecc_del_point(G); - mp_clear_multi(kA, kB, rA, rB, modulus, NULL); - return 0; -} -#endif - -int ecc_tests (void) -{ - unsigned char buf[4][4096], ch; - unsigned long x, y, z, s; - int stat, stat2; - ecc_key usera, userb, pubKey, privKey; - - DO(ecc_test ()); - - for (s = 0; s < (sizeof(sizes)/sizeof(sizes[0])); s++) { - /* make up two keys */ - DO(ecc_make_key (&yarrow_prng, find_prng ("yarrow"), sizes[s], &usera)); - DO(ecc_make_key (&yarrow_prng, find_prng ("yarrow"), sizes[s], &userb)); - - /* make the shared secret */ - x = sizeof(buf[0]); - DO(ecc_shared_secret (&usera, &userb, buf[0], &x)); - - y = sizeof(buf[1]); - DO(ecc_shared_secret (&userb, &usera, buf[1], &y)); - - if (y != x) { - fprintf(stderr, "ecc Shared keys are not same size."); - return 1; - } - - if (memcmp (buf[0], buf[1], x)) { - fprintf(stderr, "ecc Shared keys not same contents."); - return 1; - } - - /* now export userb */ - y = sizeof(buf[0]); - DO(ecc_export (buf[1], &y, PK_PUBLIC, &userb)); - ecc_free (&userb); - - /* import and make the shared secret again */ - DO(ecc_import (buf[1], y, &userb)); - - z = sizeof(buf[0]); - DO(ecc_shared_secret (&usera, &userb, buf[2], &z)); - - if (z != x) { - fprintf(stderr, "failed. Size don't match?"); - return 1; - } - if (memcmp (buf[0], buf[2], x)) { - fprintf(stderr, "Failed. Contents didn't match."); - return 1; - } - - /* export with ANSI X9.63 */ - y = sizeof(buf[1]); - DO(ecc_ansi_x963_export(&userb, buf[1], &y)); - ecc_free (&userb); - - /* now import the ANSI key */ - DO(ecc_ansi_x963_import(buf[1], y, &userb)); - - /* shared secret */ - z = sizeof(buf[0]); - DO(ecc_shared_secret (&usera, &userb, buf[2], &z)); - - if (z != x) { - fprintf(stderr, "failed. Size don't match?"); - return 1; - } - if (memcmp (buf[0], buf[2], x)) { - fprintf(stderr, "Failed. Contents didn't match."); - return 1; - } - - ecc_free (&usera); - ecc_free (&userb); - - /* test encrypt_key */ - DO(ecc_make_key (&yarrow_prng, find_prng ("yarrow"), sizes[s], &usera)); - - /* export key */ - x = sizeof(buf[0]); - DO(ecc_export(buf[0], &x, PK_PUBLIC, &usera)); - DO(ecc_import(buf[0], x, &pubKey)); - x = sizeof(buf[0]); - DO(ecc_export(buf[0], &x, PK_PRIVATE, &usera)); - DO(ecc_import(buf[0], x, &privKey)); - - for (ch = 0; ch < 32; ch++) { - buf[0][ch] = ch; - } - y = sizeof (buf[1]); - DO(ecc_encrypt_key (buf[0], 32, buf[1], &y, &yarrow_prng, find_prng ("yarrow"), find_hash ("sha256"), &pubKey)); - zeromem (buf[0], sizeof (buf[0])); - x = sizeof (buf[0]); - DO(ecc_decrypt_key (buf[1], y, buf[0], &x, &privKey)); - if (x != 32) { - fprintf(stderr, "Failed (length)"); - return 1; - } - for (ch = 0; ch < 32; ch++) { - if (buf[0][ch] != ch) { - fprintf(stderr, "Failed (contents)"); - return 1; - } - } - /* test sign_hash */ - for (ch = 0; ch < 16; ch++) { - buf[0][ch] = ch; - } - x = sizeof (buf[1]); - DO(ecc_sign_hash (buf[0], 16, buf[1], &x, &yarrow_prng, find_prng ("yarrow"), &privKey)); - DO(ecc_verify_hash (buf[1], x, buf[0], 16, &stat, &pubKey)); - buf[0][0] ^= 1; - DO(ecc_verify_hash (buf[1], x, buf[0], 16, &stat2, &privKey)); - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "ecc_verify_hash failed %d, %d, ", stat, stat2); - return 1; - } - /* test sign_hash_rfc7518 */ - for (ch = 0; ch < 16; ch++) { - buf[0][ch] = ch; - } - x = sizeof (buf[1]); - DO(ecc_sign_hash_rfc7518(buf[0], 16, buf[1], &x, &yarrow_prng, find_prng ("yarrow"), &privKey)); - DO(ecc_verify_hash_rfc7518(buf[1], x, buf[0], 16, &stat, &pubKey)); - buf[0][0] ^= 1; - DO(ecc_verify_hash_rfc7518(buf[1], x, buf[0], 16, &stat2, &privKey)); - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "ecc_verify_hash_rfc7518 failed %d, %d, ", stat, stat2); - return 1; - } - ecc_free (&usera); - ecc_free (&pubKey); - ecc_free (&privKey); - } -#ifdef LTC_ECC_SHAMIR - return ecc_test_shamir(); -#else - return 0; -#endif -} - -#else - -int ecc_tests(void) -{ - return CRYPT_NOP; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/file_test.c b/src/libtomcrypt/tests/file_test.c deleted file mode 100644 index 83cc715e0f..0000000000 --- a/src/libtomcrypt/tests/file_test.c +++ /dev/null @@ -1,115 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -/* test file related functions */ - -#include - -int file_test(void) -{ -#ifdef LTC_NO_FILE - return CRYPT_NOP; -#else - unsigned char key[32] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F }; - unsigned char buf[200]; - unsigned long len; - const char *fname = "tests/test.key"; - FILE *in; - int err, isha256, iaes; - - /* expected results */ - unsigned char exp_sha256[32] = { 0x76, 0xEC, 0x7F, 0xAE, 0xBD, 0xC4, 0x2A, 0x4D, 0xE3, 0x5C, 0xA7, 0x00, 0x24, 0xC2, 0xD2, 0x73, - 0xE9, 0xF7, 0x85, 0x6C, 0xA6, 0x16, 0x12, 0xE8, 0x9F, 0x5F, 0x66, 0x35, 0x0B, 0xA8, 0xCF, 0x5F }; - isha256 = find_hash("sha256"); - iaes = find_cipher("aes"); - - len = sizeof(buf); - if ((in = fopen(fname, "rb")) == NULL) return CRYPT_FILE_NOTFOUND; - err = hash_filehandle(isha256, in, buf, &len); - fclose(in); - if (err != CRYPT_OK) return err; - if (compare_testvector(buf, len, exp_sha256, 32, "hash_filehandle", 1)) return 1; - - len = sizeof(buf); - if ((err = hash_file(isha256, fname, buf, &len)) != CRYPT_OK) return err; - if (compare_testvector(buf, len, exp_sha256, 32, "hash_file", 1)) return 1; - -#ifdef LTC_HMAC - { - unsigned char exp_hmacsha256[32] = { 0xE4, 0x07, 0x74, 0x95, 0xF1, 0xF8, 0x5B, 0xB5, 0xF1, 0x4F, 0x7D, 0x4F, 0x59, 0x8E, 0x4B, 0xBC, - 0x8F, 0x68, 0xCF, 0xBA, 0x2E, 0xAD, 0xC4, 0x63, 0x9D, 0x7F, 0x02, 0x99, 0x8C, 0x08, 0xAC, 0xC0 }; - len = sizeof(buf); - if ((err = hmac_file(isha256, fname, key, 32, buf, &len)) != CRYPT_OK) return err; - if (compare_testvector(buf, len, exp_hmacsha256, 32, "hmac_file", 1)) return 1; - } -#endif -#ifdef LTC_OMAC - { - unsigned char exp_omacaes[16] = { 0x50, 0xB4, 0x6C, 0x62, 0xE9, 0xCA, 0x48, 0xFC, 0x38, 0x8D, 0xF4, 0xA2, 0x7D, 0x6A, 0x1E, 0xD8 }; - len = sizeof(buf); - if ((err = omac_file(iaes, key, 32, fname, buf, &len)) != CRYPT_OK) return err; - if (compare_testvector(buf, len, exp_omacaes, 16, "omac_file", 1)) return 1; - } -#endif -#ifdef LTC_PMAC - { - unsigned char exp_pmacaes[16] = { 0x7D, 0x65, 0xF0, 0x75, 0x4F, 0x8D, 0xE2, 0xB0, 0xE4, 0xFA, 0x54, 0x4E, 0x45, 0x01, 0x36, 0x1B }; - len = sizeof(buf); - if ((err = pmac_file(iaes, key, 32, fname, buf, &len)) != CRYPT_OK) return err; - if (compare_testvector(buf, len, exp_pmacaes, 16, "pmac_file", 1)) return 1; - } -#endif -#ifdef LTC_XCBC - { - unsigned char exp_xcbcaes[16] = { 0x9C, 0x73, 0xA2, 0xD7, 0x90, 0xA5, 0x86, 0x25, 0x4D, 0x3C, 0x8A, 0x6A, 0x24, 0x6D, 0xD1, 0xAB }; - len = sizeof(buf); - if ((err = xcbc_file(iaes, key, 32, fname, buf, &len)) != CRYPT_OK) return err; - if (compare_testvector(buf, len, exp_xcbcaes, 16, "xcbc_file", 1)) return 1; - } -#endif -#ifdef LTC_F9_MODE - { - unsigned char exp_f9aes[16] = { 0x6B, 0x6A, 0x18, 0x34, 0x13, 0x8E, 0x01, 0xEF, 0x33, 0x8E, 0x7A, 0x3F, 0x5B, 0x9A, 0xA6, 0x7A }; - len = sizeof(buf); - if ((err = f9_file(iaes, key, 32, fname, buf, &len)) != CRYPT_OK) return err; - if (compare_testvector(buf, len, exp_f9aes, 16, "f9_file", 1)) return 1; - } -#endif -#ifdef LTC_POLY1305 - { - unsigned char exp_poly1305[16] = { 0xD0, 0xC7, 0xFB, 0x13, 0xA8, 0x87, 0x84, 0x23, 0x21, 0xCC, 0xA9, 0x43, 0x81, 0x18, 0x75, 0xBE }; - len = sizeof(buf); - if ((err = poly1305_file(fname, key, 32, buf, &len)) != CRYPT_OK) return err; - if (compare_testvector(buf, len, exp_poly1305, 16, "poly1305_file", 1)) return 1; - } -#endif -#ifdef LTC_BLAKE2SMAC - { - unsigned char exp_blake2smac[16] = { 0x4f, 0x94, 0x45, 0x15, 0xcd, 0xd1, 0xca, 0x02, 0x1a, 0x0c, 0x7a, 0xe4, 0x6d, 0x2f, 0xe8, 0xb3 }; - len = 16; - if ((err = blake2smac_file(fname, key, 32, buf, &len)) != CRYPT_OK) return err; - if (compare_testvector(buf, len, exp_blake2smac, 16, "exp_blake2smac_file", 1)) return 1; - } -#endif -#ifdef LTC_BLAKE2BMAC - { - unsigned char exp_blake2bmac[16] = { 0xdf, 0x0e, 0x7a, 0xab, 0x96, 0x6b, 0x75, 0x4e, 0x52, 0x6a, 0x43, 0x96, 0xbd, 0xef, 0xab, 0x44 }; - len = 16; - if ((err = blake2bmac_file(fname, key, 32, buf, &len)) != CRYPT_OK) return err; - if (compare_testvector(buf, len, exp_blake2bmac, 16, "exp_blake2bmac_file", 1)) return 1; - } -#endif - - return CRYPT_OK; -#endif -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/katja_test.c b/src/libtomcrypt/tests/katja_test.c deleted file mode 100644 index ee80b09116..0000000000 --- a/src/libtomcrypt/tests/katja_test.c +++ /dev/null @@ -1,242 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -#if defined(LTC_MKAT) && defined(LTC_TEST_MPI) - -int katja_test(void) -{ - unsigned char in[1024], out[1024], tmp[1024]; - katja_key key, privKey, pubKey; - int hash_idx, prng_idx, stat, stat2, size; - unsigned long kat_msgsize, len, len2, cnt; - static unsigned char lparam[] = { 0x01, 0x02, 0x03, 0x04 }; - - hash_idx = find_hash("sha1"); - prng_idx = find_prng("yarrow"); - if (hash_idx == -1 || prng_idx == -1) { - fprintf(stderr, "katja_test requires LTC_SHA1 and yarrow"); - return 1; - } - -for (size = 1024; size <= 2048; size += 256) { - - /* make 10 random key */ - for (cnt = 0; cnt < 10; cnt++) { - DO(katja_make_key(&yarrow_prng, prng_idx, size/8, &key)); - if (mp_count_bits(key.N) < size - 7) { - fprintf(stderr, "katja_%d key modulus has %d bits\n", size, mp_count_bits(key.N)); - -len = mp_unsigned_bin_size(key.N); -mp_to_unsigned_bin(key.N, tmp); - fprintf(stderr, "N == \n"); -for (cnt = 0; cnt < len; ) { - fprintf(stderr, "%02x ", tmp[cnt]); - if (!(++cnt & 15)) fprintf(stderr, "\n"); -} - -len = mp_unsigned_bin_size(key.p); -mp_to_unsigned_bin(key.p, tmp); - fprintf(stderr, "p == \n"); -for (cnt = 0; cnt < len; ) { - fprintf(stderr, "%02x ", tmp[cnt]); - if (!(++cnt & 15)) fprintf(stderr, "\n"); -} - -len = mp_unsigned_bin_size(key.q); -mp_to_unsigned_bin(key.q, tmp); - fprintf(stderr, "\nq == \n"); -for (cnt = 0; cnt < len; ) { - fprintf(stderr, "%02x ", tmp[cnt]); - if (!(++cnt & 15)) fprintf(stderr, "\n"); -} - fprintf(stderr, "\n"); - - - return 1; - } - if (cnt != 9) { - katja_free(&key); - } - } - /* encrypt the key (without lparam) */ - for (cnt = 0; cnt < 4; cnt++) { - for (kat_msgsize = 1; kat_msgsize <= 42; kat_msgsize++) { - /* make a random key/msg */ - yarrow_read(in, kat_msgsize, &yarrow_prng); - - len = sizeof(out); - len2 = kat_msgsize; - - DO(katja_encrypt_key(in, kat_msgsize, out, &len, NULL, 0, &yarrow_prng, prng_idx, hash_idx, &key)); - /* change a byte */ - out[8] ^= 1; - DO(katja_decrypt_key(out, len, tmp, &len2, NULL, 0, hash_idx, &stat2, &key)); - /* change a byte back */ - out[8] ^= 1; - if (len2 != kat_msgsize) { - fprintf(stderr, "\nkatja_decrypt_key mismatch len %lu (first decrypt)", len2); - return 1; - } - - len2 = kat_msgsize; - DO(katja_decrypt_key(out, len, tmp, &len2, NULL, 0, hash_idx, &stat, &key)); - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "katja_decrypt_key failed"); - return 1; - } - if (len2 != kat_msgsize || memcmp(tmp, in, kat_msgsize)) { - unsigned long x; - fprintf(stderr, "\nkatja_decrypt_key mismatch, len %lu (second decrypt)\n", len2); - fprintf(stderr, "Original contents: \n"); - for (x = 0; x < kat_msgsize; ) { - fprintf(stderr, "%02x ", in[x]); - if (!(++x % 16)) { - fprintf(stderr, "\n"); - } - } - fprintf(stderr, "\n"); - fprintf(stderr, "Output contents: \n"); - for (x = 0; x < kat_msgsize; ) { - fprintf(stderr, "%02x ", out[x]); - if (!(++x % 16)) { - fprintf(stderr, "\n"); - } - } - fprintf(stderr, "\n"); - return 1; - } - } - } - - /* encrypt the key (with lparam) */ - for (kat_msgsize = 1; kat_msgsize <= 42; kat_msgsize++) { - len = sizeof(out); - len2 = kat_msgsize; - DO(katja_encrypt_key(in, kat_msgsize, out, &len, lparam, sizeof(lparam), &yarrow_prng, prng_idx, hash_idx, &key)); - /* change a byte */ - out[8] ^= 1; - DO(katja_decrypt_key(out, len, tmp, &len2, lparam, sizeof(lparam), hash_idx, &stat2, &key)); - if (len2 != kat_msgsize) { - fprintf(stderr, "\nkatja_decrypt_key mismatch len %lu (first decrypt)", len2); - return 1; - } - /* change a byte back */ - out[8] ^= 1; - - len2 = kat_msgsize; - DO(katja_decrypt_key(out, len, tmp, &len2, lparam, sizeof(lparam), hash_idx, &stat, &key)); - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "katja_decrypt_key failed"); - return 1; - } - if (len2 != kat_msgsize || memcmp(tmp, in, kat_msgsize)) { - fprintf(stderr, "katja_decrypt_key mismatch len %lu", len2); - return 1; - } - } - -#if 0 - - /* sign a message (unsalted, lower cholestorol and Atkins approved) now */ - len = sizeof(out); - DO(katja_sign_hash(in, 20, out, &len, &yarrow_prng, prng_idx, hash_idx, 0, &key)); - -/* export key and import as both private and public */ - len2 = sizeof(tmp); - DO(katja_export(tmp, &len2, PK_PRIVATE, &key)); - DO(katja_import(tmp, len2, &privKey)); - len2 = sizeof(tmp); - DO(katja_export(tmp, &len2, PK_PUBLIC, &key)); - DO(katja_import(tmp, len2, &pubKey)); - - /* verify with original */ - DO(katja_verify_hash(out, len, in, 20, hash_idx, 0, &stat, &key)); - /* change a byte */ - in[0] ^= 1; - DO(katja_verify_hash(out, len, in, 20, hash_idx, 0, &stat2, &key)); - - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "katja_verify_hash (unsalted, origKey) failed, %d, %d", stat, stat2); - katja_free(&key); - katja_free(&pubKey); - katja_free(&privKey); - return 1; - } - - /* verify with privKey */ - /* change a byte */ - in[0] ^= 1; - DO(katja_verify_hash(out, len, in, 20, hash_idx, 0, &stat, &privKey)); - /* change a byte */ - in[0] ^= 1; - DO(katja_verify_hash(out, len, in, 20, hash_idx, 0, &stat2, &privKey)); - - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "katja_verify_hash (unsalted, privKey) failed, %d, %d", stat, stat2); - katja_free(&key); - katja_free(&pubKey); - katja_free(&privKey); - return 1; - } - - /* verify with pubKey */ - /* change a byte */ - in[0] ^= 1; - DO(katja_verify_hash(out, len, in, 20, hash_idx, 0, &stat, &pubKey)); - /* change a byte */ - in[0] ^= 1; - DO(katja_verify_hash(out, len, in, 20, hash_idx, 0, &stat2, &pubKey)); - - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "katja_verify_hash (unsalted, pubkey) failed, %d, %d", stat, stat2); - katja_free(&key); - katja_free(&pubKey); - katja_free(&privKey); - return 1; - } - - /* sign a message (salted) now (use privKey to make, pubKey to verify) */ - len = sizeof(out); - DO(katja_sign_hash(in, 20, out, &len, &yarrow_prng, prng_idx, hash_idx, 8, &privKey)); - DO(katja_verify_hash(out, len, in, 20, hash_idx, 8, &stat, &pubKey)); - /* change a byte */ - in[0] ^= 1; - DO(katja_verify_hash(out, len, in, 20, hash_idx, 8, &stat2, &pubKey)); - - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "katja_verify_hash (salted) failed, %d, %d", stat, stat2); - katja_free(&key); - katja_free(&pubKey); - katja_free(&privKey); - return 1; - } -#endif - - katja_free(&key); - katja_free(&pubKey); - katja_free(&privKey); -} - - /* free the key and return */ - return 0; -} - -#else - -int katja_test(void) -{ - return CRYPT_NOP; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/mac_test.c b/src/libtomcrypt/tests/mac_test.c deleted file mode 100644 index 1ee188e6d3..0000000000 --- a/src/libtomcrypt/tests/mac_test.c +++ /dev/null @@ -1,64 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -/* test pmac/omac/hmac */ -#include - -int mac_test(void) -{ -#ifdef LTC_HMAC - DO(hmac_test()); -#endif -#ifdef LTC_PMAC - DO(pmac_test()); -#endif -#ifdef LTC_OMAC - DO(omac_test()); -#endif -#ifdef LTC_XCBC - DO(xcbc_test()); -#endif -#ifdef LTC_F9_MODE - DO(f9_test()); -#endif -#ifdef LTC_EAX_MODE - DO(eax_test()); -#endif -#ifdef LTC_OCB_MODE - DO(ocb_test()); -#endif -#ifdef LTC_OCB3_MODE - DO(ocb3_test()); -#endif -#ifdef LTC_CCM_MODE - DO(ccm_test()); -#endif -#ifdef LTC_GCM_MODE - DO(gcm_test()); -#endif -#ifdef LTC_PELICAN - DO(pelican_test()); -#endif -#ifdef LTC_POLY1305 - DO(poly1305_test()); -#endif -#ifdef LTC_CHACHA20POLY1305_MODE - DO(chacha20poly1305_test()); -#endif -#ifdef LTC_BLAKE2SMAC - DO(blake2smac_test()); -#endif -#ifdef LTC_BLAKE2BMAC - DO(blake2bmac_test()); -#endif - return 0; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/misc_test.c b/src/libtomcrypt/tests/misc_test.c deleted file mode 100644 index 3c4c7ddcd8..0000000000 --- a/src/libtomcrypt/tests/misc_test.c +++ /dev/null @@ -1,33 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -int misc_test(void) -{ -#ifdef LTC_HKDF - DO(hkdf_test()); -#endif -#ifdef LTC_PKCS_5 - DO(pkcs_5_test()); -#endif -#ifdef LTC_BASE64 - DO(base64_test()); -#endif -#ifdef LTC_ADLER32 - DO(adler32_test()); -#endif -#ifdef LTC_CRC32 - DO(crc32_test()); -#endif - return 0; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/modes_test.c b/src/libtomcrypt/tests/modes_test.c deleted file mode 100644 index a19c14d0b9..0000000000 --- a/src/libtomcrypt/tests/modes_test.c +++ /dev/null @@ -1,130 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -/* test CFB/OFB/CBC modes */ -#include - -int modes_test(void) -{ - int ret = CRYPT_NOP; -#ifdef LTC_CBC_MODE - symmetric_CBC cbc; -#endif -#ifdef LTC_CFB_MODE - symmetric_CFB cfb; -#endif -#ifdef LTC_OFB_MODE - symmetric_OFB ofb; -#endif -#if defined(LTC_CBC_MODE) || defined(LTC_CFB_MODE) || defined(LTC_OFB_MODE) - unsigned char pt[64], ct[64], tmp[64], key[16], iv[16], iv2[16]; - int cipher_idx; - unsigned long l; - - /* make a random pt, key and iv */ - yarrow_read(pt, 64, &yarrow_prng); - yarrow_read(key, 16, &yarrow_prng); - yarrow_read(iv, 16, &yarrow_prng); - - /* get idx of AES handy */ - cipher_idx = find_cipher("aes"); - if (cipher_idx == -1) { - fprintf(stderr, "test requires AES"); - return 1; - } -#endif - -#ifdef LTC_F8_MODE - DO(ret = f8_test_mode()); -#endif - -#ifdef LTC_LRW_MODE - DO(ret = lrw_test()); -#endif - -#ifdef LTC_CBC_MODE - /* test CBC mode */ - /* encode the block */ - DO(ret = cbc_start(cipher_idx, iv, key, 16, 0, &cbc)); - l = sizeof(iv2); - DO(ret = cbc_getiv(iv2, &l, &cbc)); - if (l != 16 || memcmp(iv2, iv, 16)) { - fprintf(stderr, "cbc_getiv failed"); - return 1; - } - DO(ret = cbc_encrypt(pt, ct, 64, &cbc)); - - /* decode the block */ - DO(ret = cbc_setiv(iv2, l, &cbc)); - zeromem(tmp, sizeof(tmp)); - DO(ret = cbc_decrypt(ct, tmp, 64, &cbc)); - if (memcmp(tmp, pt, 64) != 0) { - fprintf(stderr, "CBC failed"); - return 1; - } -#endif - -#ifdef LTC_CFB_MODE - /* test CFB mode */ - /* encode the block */ - DO(ret = cfb_start(cipher_idx, iv, key, 16, 0, &cfb)); - l = sizeof(iv2); - DO(ret = cfb_getiv(iv2, &l, &cfb)); - /* note we don't memcmp iv2/iv since cfb_start processes the IV for the first block */ - if (l != 16) { - fprintf(stderr, "cfb_getiv failed"); - return 1; - } - DO(ret = cfb_encrypt(pt, ct, 64, &cfb)); - - /* decode the block */ - DO(ret = cfb_setiv(iv, l, &cfb)); - zeromem(tmp, sizeof(tmp)); - DO(ret = cfb_decrypt(ct, tmp, 64, &cfb)); - if (memcmp(tmp, pt, 64) != 0) { - fprintf(stderr, "CFB failed"); - return 1; - } -#endif - -#ifdef LTC_OFB_MODE - /* test OFB mode */ - /* encode the block */ - DO(ret = ofb_start(cipher_idx, iv, key, 16, 0, &ofb)); - l = sizeof(iv2); - DO(ret = ofb_getiv(iv2, &l, &ofb)); - if (l != 16 || memcmp(iv2, iv, 16)) { - fprintf(stderr, "ofb_getiv failed"); - return 1; - } - DO(ret = ofb_encrypt(pt, ct, 64, &ofb)); - - /* decode the block */ - DO(ret = ofb_setiv(iv2, l, &ofb)); - zeromem(tmp, sizeof(tmp)); - DO(ret = ofb_decrypt(ct, tmp, 64, &ofb)); - if (memcmp(tmp, pt, 64) != 0) { - fprintf(stderr, "OFB failed"); - return 1; - } -#endif - -#if defined(LTC_CTR_MODE) && defined(LTC_RIJNDAEL) - DO(ret = ctr_test()); -#endif - -#ifdef LTC_XTS_MODE - DO(ret = xts_test()); -#endif - - return 0; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/mpi_test.c b/src/libtomcrypt/tests/mpi_test.c deleted file mode 100644 index 3fd7de7df8..0000000000 --- a/src/libtomcrypt/tests/mpi_test.c +++ /dev/null @@ -1,147 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -#if defined(LTC_MPI) && defined(LTC_TEST_MPI) -static int _radix_to_bin_test(void) -{ - /* RADIX 16 */ - const char *ghex = "2"; - const char *phex = "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22" - "514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6" - "F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" - "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB" - "9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E8603" - "9B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA0510" - "15728E5A8AACAA68FFFFFFFFFFFFFFFF"; - const char *xhex = "A6681ADC386CE944C3DED9A7301DCC9C518250E3EDB62F959198F8DC0057DD6FB57ABAFD788198B1"; - const char *yhex = "39046632C834418DFA07B3091538B614D1FB5DBB785C0FBEA3B98B295BC0CD076A88D9452141A269" - "E8BAEB1DD654EBA03A5705318D129754CDF4003A8C399240FBB8F162490F6F0DC70E414B6FEE8808" - "6AFAA48E9F3A248EDC093452663D34E0E809D4F6BADBB36F80B6813EBF7C3281B862209E5604BDEA" - "8B8F5F7BFDC3EEB7ADB73048289BCEA0F5A5CDEE7DF91CD1F0BA632F06DBE9BA7EF014B84B02D497" - "CA7D0C60F734752A649DA496946B4E531B30D9F82EDD855636C0B0F2AE232E4186454E8887BB423E" - "32A5A2495EACBA99620ACD03A38345EBB6735E62330A8EE9AA6C8370410F5CD45AF37EE90A0DA95B" - "E96FC939E88FE0BD2CD09FC8F524208C"; - /* RADIX 47 */ - const char *gr47 = "2"; - const char *pr47 = "F27Mg1SadOFIRbDOJ5dHgHiVF02Z1LHHQ6G5SLG2U8aTdfH1ETk4GARRE7WW99dBUBLb9e2OHFIaSM1A" - "ag2LNNjgYa9I9CjQGJihL3J7A2SGQe8j5Ch8EHMj5jVbAYDiQKhhPhM6Hc56fKS40GUfJkGO7KJ6EXZQ" - "VgbSa2AkPC65F91g0PaYie8AGNVaFKaV9HOQf3ia1iW4i6eCOB9CcBbH7TbQij8AEgjZ0VRBcLKc6UYO" - "1Zc3I2Jc0h1H2HBEH8ONI3OYBbaPV6XhAd8WCc60D0RDBU3H9U7cWL28a0c90XNO0dh5RXEFBbUCE2ZG" - "gh9XQSVIHkVbFIS5F5IGVOkiWAVc9i8BHB2V0UbGW6UdRTZVV"; - const char *xr47 = "6bhO7O9NWFRgEMjdU0Y5POj3c1JP15MYEdIg3FO1PEjUY2aGYNSXcaF01R"; - const char *yr47 = "3GNPNWEYfKML1cIbI7Cc1Z0O7aQLJgB734dO2i56LLYDdI4gHYk2GAbQH2WI97hNeC7dj3fPEH8I9gV9" - "U323AXj1AJXbFPFIHGOTdC29QUUeH2SSc6NWhfQDDXd5Q5iXCKEAUGX3SKcNFIfVOYJgZCLjfHYQdgOQ" - "GCjKNgbEV7Hj34MU3b79iANX2DbMYfb9iGi78BWH2HYAd7IAhk7U0OYGHKJX1bIUUj1KBLhAUg46GaER" - "G9W3ARMfBCj6kSdDF9TdkWAjWTDj722IeVJERC4bKU2VDFG20kDhCMF985efD1SS8DfXcdCHF1kDUkSA" - "884FHYiFEPkaagQOBQaN9BNaEHNbbd002DCIIX5eMP4HgPJPF"; - /* RADIX 64 */ - const char *gr64 = "2"; - const char *pr64 = "3//////////yaFsg8XQC8qnCPYYu3S7D4f0au8YcVCT08BlgOx4viYKKe8UOuq1DtlbHcppJf36p0h2c" - "toNnGtJ+4rRMrHmaNaXRLsObv+nlHCGkccD+rh2/zSjlG6j+tkE6lxMecVfQwV915yIn/cIIXcKUpaMp" - "t207oueME/1PZQI3OSLTEQQHO/gFqapr+3PLqZtAEjbXnYyrOWXLAxdjKf1t2Mbcrd33LEIhoO1F5qR0" - "ZA625yCf1UHYuspZlZddSi60w60vidWwBi1wAFjSLTy6zCKidUAylsbLWN63cLINpgbMhb5T8c69Zw1H" - "0LSevQYgogQF//////////"; - const char *xr64 = "2cQ1hSE6pfHCFUsQSm7SoSKO9Gu+ssBvMHcFZS05VTRxLwklruWPYn"; - const char *yr64 = "v16Ooo3H1ZVe7imaLEBOKqVjTktXS3xwZkOifMy3D1sg8sKKXGQ9fwBhh7TPKww0wLmKnZHANLCtq03g" - "CEP90+xZnOaaFRmt73a5BR+w826hwf8wVEYIEt0aqKcOzDE3e2TJskjkpRu2sWJw/V3A1k68WdbO4lUg" - "BZrzx/SFkjwstC4WecywWzQNDxdtv7D7mkcCl1jlfkdxm5BXB0jINodqCOFSqTIfadQIMb6jEKnimsVW" - "ktOLMDi2myguZBa66HKw8Xxj2FZAbeabUhBgPOWhD0wE3HUksSrvYCmgEwQfiWt113rpKMlD+wGeDgLl" - "fRyavw8/WlIpGdyZr922C"; - /* RADIX 256 */ - unsigned char gbin[] = { 0x02 }; - unsigned char pbin[] = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x0F, 0xDA, 0xA2, 0x21, 0x68, 0xC2, 0x34, - 0xC4, 0xC6, 0x62, 0x8B, 0x80, 0xDC, 0x1C, 0xD1, 0x29, 0x02, 0x4E, 0x08, 0x8A, 0x67, 0xCC, 0x74, - 0x02, 0x0B, 0xBE, 0xA6, 0x3B, 0x13, 0x9B, 0x22, 0x51, 0x4A, 0x08, 0x79, 0x8E, 0x34, 0x04, 0xDD, - 0xEF, 0x95, 0x19, 0xB3, 0xCD, 0x3A, 0x43, 0x1B, 0x30, 0x2B, 0x0A, 0x6D, 0xF2, 0x5F, 0x14, 0x37, - 0x4F, 0xE1, 0x35, 0x6D, 0x6D, 0x51, 0xC2, 0x45, 0xE4, 0x85, 0xB5, 0x76, 0x62, 0x5E, 0x7E, 0xC6, - 0xF4, 0x4C, 0x42, 0xE9, 0xA6, 0x37, 0xED, 0x6B, 0x0B, 0xFF, 0x5C, 0xB6, 0xF4, 0x06, 0xB7, 0xED, - 0xEE, 0x38, 0x6B, 0xFB, 0x5A, 0x89, 0x9F, 0xA5, 0xAE, 0x9F, 0x24, 0x11, 0x7C, 0x4B, 0x1F, 0xE6, - 0x49, 0x28, 0x66, 0x51, 0xEC, 0xE4, 0x5B, 0x3D, 0xC2, 0x00, 0x7C, 0xB8, 0xA1, 0x63, 0xBF, 0x05, - 0x98, 0xDA, 0x48, 0x36, 0x1C, 0x55, 0xD3, 0x9A, 0x69, 0x16, 0x3F, 0xA8, 0xFD, 0x24, 0xCF, 0x5F, - 0x83, 0x65, 0x5D, 0x23, 0xDC, 0xA3, 0xAD, 0x96, 0x1C, 0x62, 0xF3, 0x56, 0x20, 0x85, 0x52, 0xBB, - 0x9E, 0xD5, 0x29, 0x07, 0x70, 0x96, 0x96, 0x6D, 0x67, 0x0C, 0x35, 0x4E, 0x4A, 0xBC, 0x98, 0x04, - 0xF1, 0x74, 0x6C, 0x08, 0xCA, 0x18, 0x21, 0x7C, 0x32, 0x90, 0x5E, 0x46, 0x2E, 0x36, 0xCE, 0x3B, - 0xE3, 0x9E, 0x77, 0x2C, 0x18, 0x0E, 0x86, 0x03, 0x9B, 0x27, 0x83, 0xA2, 0xEC, 0x07, 0xA2, 0x8F, - 0xB5, 0xC5, 0x5D, 0xF0, 0x6F, 0x4C, 0x52, 0xC9, 0xDE, 0x2B, 0xCB, 0xF6, 0x95, 0x58, 0x17, 0x18, - 0x39, 0x95, 0x49, 0x7C, 0xEA, 0x95, 0x6A, 0xE5, 0x15, 0xD2, 0x26, 0x18, 0x98, 0xFA, 0x05, 0x10, - 0x15, 0x72, 0x8E, 0x5A, 0x8A, 0xAC, 0xAA, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - }; - unsigned char xbin[] = { - 0xA6, 0x68, 0x1A, 0xDC, 0x38, 0x6C, 0xE9, 0x44, 0xC3, 0xDE, 0xD9, 0xA7, 0x30, 0x1D, 0xCC, 0x9C, - 0x51, 0x82, 0x50, 0xE3, 0xED, 0xB6, 0x2F, 0x95, 0x91, 0x98, 0xF8, 0xDC, 0x00, 0x57, 0xDD, 0x6F, - 0xB5, 0x7A, 0xBA, 0xFD, 0x78, 0x81, 0x98, 0xB1 - }; - unsigned char ybin[] = { - 0x39, 0x04, 0x66, 0x32, 0xC8, 0x34, 0x41, 0x8D, 0xFA, 0x07, 0xB3, 0x09, 0x15, 0x38, 0xB6, 0x14, - 0xD1, 0xFB, 0x5D, 0xBB, 0x78, 0x5C, 0x0F, 0xBE, 0xA3, 0xB9, 0x8B, 0x29, 0x5B, 0xC0, 0xCD, 0x07, - 0x6A, 0x88, 0xD9, 0x45, 0x21, 0x41, 0xA2, 0x69, 0xE8, 0xBA, 0xEB, 0x1D, 0xD6, 0x54, 0xEB, 0xA0, - 0x3A, 0x57, 0x05, 0x31, 0x8D, 0x12, 0x97, 0x54, 0xCD, 0xF4, 0x00, 0x3A, 0x8C, 0x39, 0x92, 0x40, - 0xFB, 0xB8, 0xF1, 0x62, 0x49, 0x0F, 0x6F, 0x0D, 0xC7, 0x0E, 0x41, 0x4B, 0x6F, 0xEE, 0x88, 0x08, - 0x6A, 0xFA, 0xA4, 0x8E, 0x9F, 0x3A, 0x24, 0x8E, 0xDC, 0x09, 0x34, 0x52, 0x66, 0x3D, 0x34, 0xE0, - 0xE8, 0x09, 0xD4, 0xF6, 0xBA, 0xDB, 0xB3, 0x6F, 0x80, 0xB6, 0x81, 0x3E, 0xBF, 0x7C, 0x32, 0x81, - 0xB8, 0x62, 0x20, 0x9E, 0x56, 0x04, 0xBD, 0xEA, 0x8B, 0x8F, 0x5F, 0x7B, 0xFD, 0xC3, 0xEE, 0xB7, - 0xAD, 0xB7, 0x30, 0x48, 0x28, 0x9B, 0xCE, 0xA0, 0xF5, 0xA5, 0xCD, 0xEE, 0x7D, 0xF9, 0x1C, 0xD1, - 0xF0, 0xBA, 0x63, 0x2F, 0x06, 0xDB, 0xE9, 0xBA, 0x7E, 0xF0, 0x14, 0xB8, 0x4B, 0x02, 0xD4, 0x97, - 0xCA, 0x7D, 0x0C, 0x60, 0xF7, 0x34, 0x75, 0x2A, 0x64, 0x9D, 0xA4, 0x96, 0x94, 0x6B, 0x4E, 0x53, - 0x1B, 0x30, 0xD9, 0xF8, 0x2E, 0xDD, 0x85, 0x56, 0x36, 0xC0, 0xB0, 0xF2, 0xAE, 0x23, 0x2E, 0x41, - 0x86, 0x45, 0x4E, 0x88, 0x87, 0xBB, 0x42, 0x3E, 0x32, 0xA5, 0xA2, 0x49, 0x5E, 0xAC, 0xBA, 0x99, - 0x62, 0x0A, 0xCD, 0x03, 0xA3, 0x83, 0x45, 0xEB, 0xB6, 0x73, 0x5E, 0x62, 0x33, 0x0A, 0x8E, 0xE9, - 0xAA, 0x6C, 0x83, 0x70, 0x41, 0x0F, 0x5C, 0xD4, 0x5A, 0xF3, 0x7E, 0xE9, 0x0A, 0x0D, 0xA9, 0x5B, - 0xE9, 0x6F, 0xC9, 0x39, 0xE8, 0x8F, 0xE0, 0xBD, 0x2C, 0xD0, 0x9F, 0xC8, 0xF5, 0x24, 0x20, 0x8C - }; - - struct { - int radix; - const void* g; int glen; - const void* p; int plen; - const void* x; int xlen; - const void* y; int ylen; - } test[4] = { - { 256, gbin, sizeof(gbin), pbin, sizeof(pbin), xbin, sizeof(xbin), ybin, sizeof(ybin) }, - { 16, ghex, strlen(ghex)+1, phex, strlen(phex)+1, xhex, strlen(xhex)+1, yhex, strlen(yhex)+1 }, - { 47, gr47, strlen(gr47)+1, pr47, strlen(pr47)+1, xr47, strlen(xr47)+1, yr47, strlen(yr47)+1 }, - { 64, gr64, strlen(gr64)+1, pr64, strlen(pr64)+1, xr64, strlen(xr64)+1, yr64, strlen(yr64)+1 }, - }; - int i, j; - unsigned char key_parts[4][256]; - unsigned long key_lens[4]; - - for (i = 1; i < 4; i++) { - for (j = 0; j < 4; ++j) { - key_lens[j] = sizeof(key_parts[j]); - } - DO(radix_to_bin(test[i].x, test[i].radix, key_parts[0], &key_lens[0])); - DO(radix_to_bin(test[i].y, test[i].radix, key_parts[1], &key_lens[1])); - DO(radix_to_bin(test[i].p, test[i].radix, key_parts[2], &key_lens[2])); - DO(radix_to_bin(test[i].g, test[i].radix, key_parts[3], &key_lens[3])); - - if (compare_testvector(key_parts[0], key_lens[0], test[0].x, test[0].xlen, "radix_to_bin(x)", i)) return CRYPT_FAIL_TESTVECTOR; - if (compare_testvector(key_parts[1], key_lens[1], test[0].y, test[0].ylen, "radix_to_bin(y)", i)) return CRYPT_FAIL_TESTVECTOR; - if (compare_testvector(key_parts[2], key_lens[2], test[0].p, test[0].plen, "radix_to_bin(p)", i)) return CRYPT_FAIL_TESTVECTOR; - if (compare_testvector(key_parts[3], key_lens[3], test[0].g, test[0].glen, "radix_to_bin(g)", i)) return CRYPT_FAIL_TESTVECTOR; - } - return CRYPT_OK; -} - -int mpi_test(void) -{ - return _radix_to_bin_test(); -} -#else -int mpi_test(void) -{ - return CRYPT_NOP; -} -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/multi_test.c b/src/libtomcrypt/tests/multi_test.c deleted file mode 100644 index 24d0dda40b..0000000000 --- a/src/libtomcrypt/tests/multi_test.c +++ /dev/null @@ -1,237 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -/* test the multi helpers... */ -#include - -int multi_test(void) -{ - unsigned char key[32] = { 0 }; - unsigned char buf[2][MAXBLOCKSIZE]; - unsigned long len, len2; - -/* register algos */ - register_hash(&sha256_desc); - register_cipher(&aes_desc); - -/* HASH testing */ - len = sizeof(buf[0]); - hash_memory(find_hash("sha256"), (unsigned char*)"hello", 5, buf[0], &len); - len2 = sizeof(buf[0]); - hash_memory_multi(find_hash("sha256"), buf[1], &len2, (unsigned char*)"hello", 5, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = sizeof(buf[0]); - hash_memory_multi(find_hash("sha256"), buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL, 0); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = sizeof(buf[0]); - hash_memory_multi(find_hash("sha256"), buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - -#ifdef LTC_HMAC - len = sizeof(buf[0]); - hmac_memory(find_hash("sha256"), key, 16, (unsigned char*)"hello", 5, buf[0], &len); - len2 = sizeof(buf[0]); - hmac_memory_multi(find_hash("sha256"), key, 16, buf[1], &len2, (unsigned char*)"hello", 5UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = sizeof(buf[0]); - hmac_memory_multi(find_hash("sha256"), key, 16, buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = sizeof(buf[0]); - hmac_memory_multi(find_hash("sha256"), key, 16, buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } -#endif - -#ifdef LTC_OMAC - len = sizeof(buf[0]); - omac_memory(find_cipher("aes"), key, 16, (unsigned char*)"hello", 5, buf[0], &len); - len2 = sizeof(buf[0]); - omac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"hello", 5UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = sizeof(buf[0]); - omac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = sizeof(buf[0]); - omac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } -#endif - -#ifdef LTC_PMAC - len = sizeof(buf[0]); - pmac_memory(find_cipher("aes"), key, 16, (unsigned char*)"hello", 5, buf[0], &len); - len2 = sizeof(buf[0]); - pmac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"hello", 5, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = sizeof(buf[0]); - pmac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = sizeof(buf[0]); - pmac_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } -#endif - -#ifdef LTC_XCBC - len = sizeof(buf[0]); - xcbc_memory(find_cipher("aes"), key, 16, (unsigned char*)"hello", 5, buf[0], &len); - len2 = sizeof(buf[0]); - xcbc_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"hello", 5, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = sizeof(buf[0]); - xcbc_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = sizeof(buf[0]); - xcbc_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } -#endif - -#ifdef LTC_F9 - len = sizeof(buf[0]); - f9_memory(find_cipher("aes"), key, 16, (unsigned char*)"hello", 5, buf[0], &len); - len2 = sizeof(buf[0]); - f9_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"hello", 5, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = sizeof(buf[0]); - f9_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = sizeof(buf[0]); - f9_memory_multi(find_cipher("aes"), key, 16, buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } -#endif - -#ifdef LTC_PELICAN - /* TODO: there is no pelican_memory_multi(..) */ -#endif - -#ifdef LTC_POLY1305 - len = sizeof(buf[0]); - poly1305_memory(key, 32, (unsigned char*)"hello", 5, buf[0], &len); - len2 = sizeof(buf[0]); - poly1305_memory_multi(key, 32, buf[1], &len2, (unsigned char*)"hello", 5, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = sizeof(buf[0]); - poly1305_memory_multi(key, 32, buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = sizeof(buf[0]); - poly1305_memory_multi(key, 32, buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } -#endif - -#ifdef LTC_BLAKE2SMAC - len = 32; - blake2smac_memory(key, 16, (unsigned char*)"hello", 5, buf[0], &len); - len2 = 32; - blake2smac_memory_multi(key, 16, buf[1], &len2, (unsigned char*)"hello", 5, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = 32; - blake2smac_memory_multi(key, 16, buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = 32; - blake2smac_memory_multi(key, 16, buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } -#endif - -#ifdef LTC_BLAKE2BMAC - len = 64; - blake2bmac_memory(key, 16, (unsigned char*)"hello", 5, buf[0], &len); - len2 = 64; - blake2bmac_memory_multi(key, 16, buf[1], &len2, (unsigned char*)"hello", 5, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = 64; - blake2bmac_memory_multi(key, 16, buf[1], &len2, (unsigned char*)"he", 2UL, "llo", 3UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } - len2 = 64; - blake2bmac_memory_multi(key, 16, buf[1], &len2, (unsigned char*)"h", 1UL, "e", 1UL, "l", 1UL, "l", 1UL, "o", 1UL, NULL); - if (len != len2 || memcmp(buf[0], buf[1], len)) { - printf("Failed: %d %lu %lu\n", __LINE__, len, len2); - return CRYPT_FAIL_TESTVECTOR; - } -#endif - - return CRYPT_OK; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/no_prng.c b/src/libtomcrypt/tests/no_prng.c deleted file mode 100644 index 0d089c45d7..0000000000 --- a/src/libtomcrypt/tests/no_prng.c +++ /dev/null @@ -1,185 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include "tomcrypt.h" - -/** - @file no_prng.c - NO PRNG, Steffen Jaeckel -*/ - -#ifdef LTC_PKCS_1 - -typedef struct -{ - struct ltc_prng_descriptor desc; - char name[64]; - unsigned char entropy[1024]; - unsigned long len; - unsigned long offset; -} no_prng_desc_t; - -/** - Start the PRNG - @param prng [out] The PRNG state to initialize - @return CRYPT_OK if successful -*/ -int no_prng_start(prng_state *prng) -{ - no_prng_desc_t *no_prng = (no_prng_desc_t*) prng; - LTC_ARGCHK(no_prng != NULL); - LTC_ARGCHK(no_prng->name == (char*)no_prng + offsetof(no_prng_desc_t, name)); - no_prng->len = 0; - no_prng->offset = 0; - - return CRYPT_OK; -} - -/** - Add entropy to the PRNG state - @param in The data to add - @param inlen Length of the data to add - @param prng PRNG state to update - @return CRYPT_OK if successful -*/ -int no_prng_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng) -{ - no_prng_desc_t *no_prng = (no_prng_desc_t*) prng; - LTC_ARGCHK(no_prng != NULL); - LTC_ARGCHK(no_prng->name == (char*)no_prng + offsetof(no_prng_desc_t, name)); - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(inlen <= sizeof(no_prng->entropy)); - - no_prng->len = MIN(inlen, sizeof(no_prng->entropy)); - memcpy(no_prng->entropy, in, no_prng->len); - no_prng->offset = 0; - - return CRYPT_OK; - -} - -/** - Make the PRNG ready to read from - @param prng The PRNG to make active - @return CRYPT_OK if successful -*/ -int no_prng_ready(prng_state *prng) -{ - LTC_ARGCHK(prng != NULL); - - return CRYPT_OK; -} - -/** - Read from the PRNG - @param out Destination - @param outlen Length of output - @param prng The active PRNG to read from - @return Number of octets read -*/ -unsigned long no_prng_read(unsigned char *out, unsigned long outlen, prng_state *prng) -{ - no_prng_desc_t *no_prng = (no_prng_desc_t*) prng; - LTC_ARGCHK(no_prng != NULL); - LTC_ARGCHK(no_prng->name == (char*)no_prng + offsetof(no_prng_desc_t, name)); - LTC_ARGCHK(out != NULL); - - outlen = MIN(outlen, no_prng->len - no_prng->offset); - memcpy(out, &no_prng->entropy[no_prng->offset], outlen); - no_prng->offset += outlen; - - return outlen; -} - -/** - Terminate the PRNG - @param prng The PRNG to terminate - @return CRYPT_OK if successful -*/ -int no_prng_done(prng_state *prng) -{ - LTC_UNUSED_PARAM(prng); - return CRYPT_OK; -} - -/** - Export the PRNG state - @param out [out] Destination - @param outlen [in/out] Max size and resulting size of the state - @param prng The PRNG to export - @return CRYPT_OK if successful -*/ -int no_prng_export(unsigned char *out, unsigned long *outlen, prng_state *prng) -{ - LTC_UNUSED_PARAM(out); - LTC_UNUSED_PARAM(outlen); - LTC_UNUSED_PARAM(prng); - return CRYPT_OK; -} - -/** - Import a PRNG state - @param in The PRNG state - @param inlen Size of the state - @param prng The PRNG to import - @return CRYPT_OK if successful -*/ -int no_prng_import(const unsigned char *in, unsigned long inlen, prng_state *prng) -{ - LTC_UNUSED_PARAM(in); - LTC_UNUSED_PARAM(inlen); - LTC_UNUSED_PARAM(prng); - return CRYPT_OK; -} - -/** - PRNG self-test - @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled -*/ -int no_prng_test(void) -{ - return CRYPT_OK; -} - -static const struct ltc_prng_descriptor no_prng_desc = -{ - NULL, 0, - &no_prng_start, - &no_prng_add_entropy, - &no_prng_ready, - &no_prng_read, - &no_prng_done, - &no_prng_export, - &no_prng_import, - &no_prng_test -}; - -struct ltc_prng_descriptor* no_prng_desc_get(void) -{ - no_prng_desc_t* no_prng = XMALLOC(sizeof(*no_prng)); - LTC_ARGCHK(no_prng != NULL); - XMEMCPY(&no_prng->desc, &no_prng_desc, sizeof(no_prng_desc)); - LTC_ARGCHK(snprintf(no_prng->name, sizeof(no_prng->name), "no_prng@%p", no_prng) < (int)sizeof(no_prng->name)); - no_prng->desc.name = no_prng->name; - return &no_prng->desc; -} - -void no_prng_desc_free(struct ltc_prng_descriptor* prng) -{ - no_prng_desc_t *no_prng = (no_prng_desc_t*) prng; - LTC_ARGCHK(no_prng != NULL); - LTC_ARGCHK(no_prng->name == (char*)no_prng + offsetof(no_prng_desc_t, name)); - XFREE(no_prng); -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/pkcs_1_eme_test.c b/src/libtomcrypt/tests/pkcs_1_eme_test.c deleted file mode 100644 index 2b4e21942d..0000000000 --- a/src/libtomcrypt/tests/pkcs_1_eme_test.c +++ /dev/null @@ -1,78 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -#if defined(LTC_PKCS_1) && defined(LTC_TEST_MPI) - -#include "../notes/rsa-testvectors/pkcs1v15crypt-vectors.c" - - - -int pkcs_1_eme_test(void) -{ - struct ltc_prng_descriptor* no_prng_desc = no_prng_desc_get(); - int prng_idx = register_prng(no_prng_desc); - int hash_idx = find_hash("sha1"); - unsigned int i; - unsigned int j; - - DO(prng_is_valid(prng_idx)); - DO(hash_is_valid(hash_idx)); - - for (i = 0; i < sizeof(testcases_eme)/sizeof(testcases_eme[0]); ++i) { - testcase_t* t = &testcases_eme[i]; - rsa_key k, *key = &k; - DOX(mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, - &key->dP, &key->qP, &key->p, &key->q, NULL), t->name); - - DOX(mp_read_unsigned_bin(key->e, t->rsa.e, t->rsa.e_l), t->name); - DOX(mp_read_unsigned_bin(key->d, t->rsa.d, t->rsa.d_l), t->name); - DOX(mp_read_unsigned_bin(key->N, t->rsa.n, t->rsa.n_l), t->name); - DOX(mp_read_unsigned_bin(key->dQ, t->rsa.dQ, t->rsa.dQ_l), t->name); - DOX(mp_read_unsigned_bin(key->dP, t->rsa.dP, t->rsa.dP_l), t->name); - DOX(mp_read_unsigned_bin(key->qP, t->rsa.qInv, t->rsa.qInv_l), t->name); - DOX(mp_read_unsigned_bin(key->q, t->rsa.q, t->rsa.q_l), t->name); - DOX(mp_read_unsigned_bin(key->p, t->rsa.p, t->rsa.p_l), t->name); - key->type = PK_PRIVATE; - - for (j = 0; j < sizeof(t->data)/sizeof(t->data[0]); ++j) { - rsaData_t* s = &t->data[j]; - unsigned char buf[256], obuf[256]; - unsigned long buflen = sizeof(buf), obuflen = sizeof(obuf); - int stat; - prng_descriptor[prng_idx].add_entropy(s->o2, s->o2_l, (prng_state*)no_prng_desc); - DOX(rsa_encrypt_key_ex(s->o1, s->o1_l, obuf, &obuflen, NULL, 0, (prng_state*)no_prng_desc, prng_idx, -1, LTC_PKCS_1_V1_5, key), s->name); - DOX(obuflen == (unsigned long)s->o3_l?CRYPT_OK:CRYPT_FAIL_TESTVECTOR, s->name); - DOX(memcmp(s->o3, obuf, s->o3_l)==0?CRYPT_OK:CRYPT_FAIL_TESTVECTOR, s->name); - DOX(rsa_decrypt_key_ex(obuf, obuflen, buf, &buflen, NULL, 0, -1, LTC_PKCS_1_V1_5, &stat, key), s->name); - DOX(stat == 1?CRYPT_OK:CRYPT_FAIL_TESTVECTOR, s->name); - } /* for */ - - mp_clear_multi(key->d, key->e, key->N, key->dQ, key->dP, key->qP, key->p, key->q, NULL); - } /* for */ - - unregister_prng(no_prng_desc); - no_prng_desc_free(no_prng_desc); - - return 0; -} - -#else - -int pkcs_1_eme_test(void) -{ - return CRYPT_NOP; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/pkcs_1_emsa_test.c b/src/libtomcrypt/tests/pkcs_1_emsa_test.c deleted file mode 100644 index 3775e97260..0000000000 --- a/src/libtomcrypt/tests/pkcs_1_emsa_test.c +++ /dev/null @@ -1,72 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -#if defined(LTC_PKCS_1) && defined(LTC_TEST_MPI) - -#include "../notes/rsa-testvectors/pkcs1v15sign-vectors.c" - - - -int pkcs_1_emsa_test(void) -{ - int hash_idx = find_hash("sha1"); - unsigned int i; - unsigned int j; - - DO(hash_is_valid(hash_idx)); - - for (i = 0; i < sizeof(testcases_emsa)/sizeof(testcases_emsa[0]); ++i) { - testcase_t* t = &testcases_emsa[i]; - rsa_key k, *key = &k; - DOX(mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, - &key->dP, &key->qP, &key->p, &key->q, NULL), t->name); - - DOX(mp_read_unsigned_bin(key->e, t->rsa.e, t->rsa.e_l), t->name); - DOX(mp_read_unsigned_bin(key->d, t->rsa.d, t->rsa.d_l), t->name); - DOX(mp_read_unsigned_bin(key->N, t->rsa.n, t->rsa.n_l), t->name); - DOX(mp_read_unsigned_bin(key->dQ, t->rsa.dQ, t->rsa.dQ_l), t->name); - DOX(mp_read_unsigned_bin(key->dP, t->rsa.dP, t->rsa.dP_l), t->name); - DOX(mp_read_unsigned_bin(key->qP, t->rsa.qInv, t->rsa.qInv_l), t->name); - DOX(mp_read_unsigned_bin(key->q, t->rsa.q, t->rsa.q_l), t->name); - DOX(mp_read_unsigned_bin(key->p, t->rsa.p, t->rsa.p_l), t->name); - key->type = PK_PRIVATE; - - for (j = 0; j < sizeof(t->data)/sizeof(t->data[0]); ++j) { - rsaData_t* s = &t->data[j]; - unsigned char buf[20], obuf[256]; - unsigned long buflen = sizeof(buf), obuflen = sizeof(obuf); - int stat; - DOX(hash_memory(hash_idx, s->o1, s->o1_l, buf, &buflen), s->name); - DOX(rsa_sign_hash_ex(buf, buflen, obuf, &obuflen, LTC_PKCS_1_V1_5, NULL, -1, hash_idx, 0, key), s->name); - DOX(obuflen == (unsigned long)s->o2_l?CRYPT_OK:CRYPT_FAIL_TESTVECTOR, s->name); - DOX(memcmp(s->o2, obuf, s->o2_l)==0?CRYPT_OK:CRYPT_FAIL_TESTVECTOR, s->name); - DOX(rsa_verify_hash_ex(obuf, obuflen, buf, buflen, LTC_PKCS_1_V1_5, hash_idx, 0, &stat, key), s->name); - DOX(stat == 1?CRYPT_OK:CRYPT_FAIL_TESTVECTOR, s->name); - } /* for */ - - mp_clear_multi(key->d, key->e, key->N, key->dQ, key->dP, key->qP, key->p, key->q, NULL); - } /* for */ - - return 0; -} - -#else - -int pkcs_1_emsa_test(void) -{ - return CRYPT_NOP; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/pkcs_1_oaep_test.c b/src/libtomcrypt/tests/pkcs_1_oaep_test.c deleted file mode 100644 index 0f43c84b20..0000000000 --- a/src/libtomcrypt/tests/pkcs_1_oaep_test.c +++ /dev/null @@ -1,78 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -#if defined(LTC_PKCS_1) && defined(LTC_TEST_MPI) - -#include "../notes/rsa-testvectors/oaep-vect.c" - - - -int pkcs_1_oaep_test(void) -{ - struct ltc_prng_descriptor* no_prng_desc = no_prng_desc_get(); - int prng_idx = register_prng(no_prng_desc); - int hash_idx = find_hash("sha1"); - unsigned int i; - unsigned int j; - - DO(prng_is_valid(prng_idx)); - DO(hash_is_valid(hash_idx)); - - for (i = 0; i < sizeof(testcases_oaep)/sizeof(testcases_oaep[0]); ++i) { - testcase_t* t = &testcases_oaep[i]; - rsa_key k, *key = &k; - DOX(mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, - &key->dP, &key->qP, &key->p, &key->q, NULL), t->name); - - DOX(mp_read_unsigned_bin(key->e, t->rsa.e, t->rsa.e_l), t->name); - DOX(mp_read_unsigned_bin(key->d, t->rsa.d, t->rsa.d_l), t->name); - DOX(mp_read_unsigned_bin(key->N, t->rsa.n, t->rsa.n_l), t->name); - DOX(mp_read_unsigned_bin(key->dQ, t->rsa.dQ, t->rsa.dQ_l), t->name); - DOX(mp_read_unsigned_bin(key->dP, t->rsa.dP, t->rsa.dP_l), t->name); - DOX(mp_read_unsigned_bin(key->qP, t->rsa.qInv, t->rsa.qInv_l), t->name); - DOX(mp_read_unsigned_bin(key->q, t->rsa.q, t->rsa.q_l), t->name); - DOX(mp_read_unsigned_bin(key->p, t->rsa.p, t->rsa.p_l), t->name); - key->type = PK_PRIVATE; - - for (j = 0; j < sizeof(t->data)/sizeof(t->data[0]); ++j) { - rsaData_t* s = &t->data[j]; - unsigned char buf[256], obuf[256]; - unsigned long buflen = sizeof(buf), obuflen = sizeof(obuf); - int stat; - prng_descriptor[prng_idx].add_entropy(s->o2, s->o2_l, (prng_state*)no_prng_desc); - DOX(rsa_encrypt_key(s->o1, s->o1_l, obuf, &obuflen, NULL, 0, (prng_state*)no_prng_desc, prng_idx, hash_idx, key), s->name); - DOX(obuflen == (unsigned long)s->o3_l?CRYPT_OK:CRYPT_FAIL_TESTVECTOR, s->name); - DOX(memcmp(s->o3, obuf, s->o3_l)==0?CRYPT_OK:CRYPT_FAIL_TESTVECTOR, s->name); - DOX(rsa_decrypt_key(obuf, obuflen, buf, &buflen, NULL, 0, hash_idx, &stat, key), s->name); - DOX(stat == 1?CRYPT_OK:CRYPT_FAIL_TESTVECTOR, s->name); - } /* for */ - - mp_clear_multi(key->d, key->e, key->N, key->dQ, key->dP, key->qP, key->p, key->q, NULL); - } /* for */ - - unregister_prng(no_prng_desc); - no_prng_desc_free(no_prng_desc); - - return 0; -} - -#else - -int pkcs_1_oaep_test(void) -{ - return CRYPT_NOP; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/pkcs_1_pss_test.c b/src/libtomcrypt/tests/pkcs_1_pss_test.c deleted file mode 100644 index fb240d9e55..0000000000 --- a/src/libtomcrypt/tests/pkcs_1_pss_test.c +++ /dev/null @@ -1,79 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -#if defined(LTC_PKCS_1) && defined(LTC_TEST_MPI) - -#include "../notes/rsa-testvectors/pss-vect.c" - - - -int pkcs_1_pss_test(void) -{ - struct ltc_prng_descriptor* no_prng_desc = no_prng_desc_get(); - int prng_idx = register_prng(no_prng_desc); - int hash_idx = find_hash("sha1"); - unsigned int i; - unsigned int j; - - DO(prng_is_valid(prng_idx)); - DO(hash_is_valid(hash_idx)); - - for (i = 0; i < sizeof(testcases_pss)/sizeof(testcases_pss[0]); ++i) { - testcase_t* t = &testcases_pss[i]; - rsa_key k, *key = &k; - DOX(mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, - &key->dP, &key->qP, &key->p, &key->q, NULL), t->name); - - DOX(mp_read_unsigned_bin(key->e, t->rsa.e, t->rsa.e_l), t->name); - DOX(mp_read_unsigned_bin(key->d, t->rsa.d, t->rsa.d_l), t->name); - DOX(mp_read_unsigned_bin(key->N, t->rsa.n, t->rsa.n_l), t->name); - DOX(mp_read_unsigned_bin(key->dQ, t->rsa.dQ, t->rsa.dQ_l), t->name); - DOX(mp_read_unsigned_bin(key->dP, t->rsa.dP, t->rsa.dP_l), t->name); - DOX(mp_read_unsigned_bin(key->qP, t->rsa.qInv, t->rsa.qInv_l), t->name); - DOX(mp_read_unsigned_bin(key->q, t->rsa.q, t->rsa.q_l), t->name); - DOX(mp_read_unsigned_bin(key->p, t->rsa.p, t->rsa.p_l), t->name); - key->type = PK_PRIVATE; - - for (j = 0; j < sizeof(t->data)/sizeof(t->data[0]); ++j) { - rsaData_t* s = &t->data[j]; - unsigned char buf[20], obuf[256]; - unsigned long buflen = sizeof(buf), obuflen = sizeof(obuf); - int stat; - prng_descriptor[prng_idx].add_entropy(s->o2, s->o2_l, (prng_state*)no_prng_desc); - DOX(hash_memory(hash_idx, s->o1, s->o1_l, buf, &buflen), s->name); - DOX(rsa_sign_hash(buf, buflen, obuf, &obuflen, (prng_state*)no_prng_desc, prng_idx, hash_idx, s->o2_l, key), s->name); - DOX(obuflen == (unsigned long)s->o3_l?CRYPT_OK:CRYPT_FAIL_TESTVECTOR, s->name); - DOX(memcmp(s->o3, obuf, s->o3_l)==0?CRYPT_OK:CRYPT_FAIL_TESTVECTOR, s->name); - DOX(rsa_verify_hash(obuf, obuflen, buf, buflen, hash_idx, s->o2_l, &stat, key), s->name); - DOX(stat == 1?CRYPT_OK:CRYPT_FAIL_TESTVECTOR, s->name); - } /* for */ - - mp_clear_multi(key->d, key->e, key->N, key->dQ, key->dP, key->qP, key->p, key->q, NULL); - } /* for */ - - unregister_prng(no_prng_desc); - no_prng_desc_free(no_prng_desc); - - return 0; -} - -#else - -int pkcs_1_pss_test(void) -{ - return CRYPT_NOP; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/pkcs_1_test.c b/src/libtomcrypt/tests/pkcs_1_test.c deleted file mode 100644 index 2dfbccd0f8..0000000000 --- a/src/libtomcrypt/tests/pkcs_1_test.c +++ /dev/null @@ -1,106 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -#ifdef LTC_PKCS_1 - -#ifdef LTC_TEST_REAL_RAND -#define LTC_TEST_RAND_SEED time(NULL) -#else -#define LTC_TEST_RAND_SEED 23 -#endif - -int pkcs_1_test(void) -{ - unsigned char buf[3][128]; - int res1, res2, res3, prng_idx, hash_idx; - unsigned long x, y, l1, l2, l3, i1, i2, lparamlen, saltlen, modlen; - static const unsigned char lparam[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 }; - - /* get hash/prng */ - hash_idx = find_hash("sha1"); - prng_idx = find_prng("yarrow"); - - if (hash_idx == -1 || prng_idx == -1) { - fprintf(stderr, "pkcs_1 tests require sha1/yarrow"); - return 1; - } - - srand(LTC_TEST_RAND_SEED); - /* do many tests */ - for (x = 0; x < 100; x++) { - zeromem(buf, sizeof(buf)); - - /* make a dummy message (of random length) */ - l3 = (rand() & 31) + 8; - for (y = 0; y < l3; y++) buf[0][y] = rand() & 255; - - /* pick a random lparam len [0..16] */ - lparamlen = abs(rand()) % 17; - - /* pick a random saltlen 0..16 */ - saltlen = abs(rand()) % 17; - - /* PKCS #1 v2.0 supports modlens not multiple of 8 */ - modlen = 800 + (abs(rand()) % 224); - - /* encode it */ - l1 = sizeof(buf[1]); - DO(pkcs_1_oaep_encode(buf[0], l3, lparam, lparamlen, modlen, &yarrow_prng, prng_idx, hash_idx, buf[1], &l1)); - - /* decode it */ - l2 = sizeof(buf[2]); - DO(pkcs_1_oaep_decode(buf[1], l1, lparam, lparamlen, modlen, hash_idx, buf[2], &l2, &res1)); - - if (res1 != 1 || l2 != l3 || memcmp(buf[2], buf[0], l3) != 0) { - fprintf(stderr, "Outsize == %lu, should have been %lu, res1 = %d, lparamlen = %lu, msg contents follow.\n", l2, l3, res1, lparamlen); - fprintf(stderr, "ORIGINAL:\n"); - for (x = 0; x < l3; x++) { - fprintf(stderr, "%02x ", buf[0][x]); - } - fprintf(stderr, "\nRESULT:\n"); - for (x = 0; x < l2; x++) { - fprintf(stderr, "%02x ", buf[2][x]); - } - fprintf(stderr, "\n\n"); - return 1; - } - - /* test PSS */ - l1 = sizeof(buf[1]); - DO(pkcs_1_pss_encode(buf[0], l3, saltlen, &yarrow_prng, prng_idx, hash_idx, modlen, buf[1], &l1)); - DO(pkcs_1_pss_decode(buf[0], l3, buf[1], l1, saltlen, hash_idx, modlen, &res1)); - - buf[0][i1 = abs(rand()) % l3] ^= 1; - DO(pkcs_1_pss_decode(buf[0], l3, buf[1], l1, saltlen, hash_idx, modlen, &res2)); - - buf[0][i1] ^= 1; - buf[1][i2 = abs(rand()) % (l1 - 1)] ^= 1; - pkcs_1_pss_decode(buf[0], l3, buf[1], l1, saltlen, hash_idx, modlen, &res3); - if (!(res1 == 1 && res2 == 0 && res3 == 0)) { - fprintf(stderr, "PSS failed: %d, %d, %d, %lu, %lu\n", res1, res2, res3, l3, saltlen); - return 1; - } - } - return 0; -} - -#else - -int pkcs_1_test(void) -{ - return CRYPT_NOP; -} - -#endif - - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/prng_test.c b/src/libtomcrypt/tests/prng_test.c deleted file mode 100644 index b8b12a442c..0000000000 --- a/src/libtomcrypt/tests/prng_test.c +++ /dev/null @@ -1,90 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -#ifdef LTC_PRNG_ENABLE_LTC_RNG - -static unsigned long my_test_rng_read; - -static unsigned long my_test_rng(unsigned char *buf, unsigned long len, - void (*callback)(void)) -{ - unsigned long n; - LTC_UNUSED_PARAM(callback); - for (n = 0; n < len; ++n) { - buf[n] = 4; - } - my_test_rng_read += n; - return n; -} - -#endif - -int prng_test(void) -{ - int err = CRYPT_NOP; - int x; - unsigned char buf[4096] = { 0 }; - unsigned long n, one; - prng_state nprng; - -#ifdef LTC_PRNG_ENABLE_LTC_RNG - unsigned long before; - - unsigned long (*previous)(unsigned char *, unsigned long , void (*)(void)) = ltc_rng; - ltc_rng = my_test_rng; - - before = my_test_rng_read; - - if ((err = rng_make_prng(128, find_prng("yarrow"), &yarrow_prng, NULL)) != CRYPT_OK) { - fprintf(stderr, "rng_make_prng with 'my_test_rng' failed: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - - if (before == my_test_rng_read) { - fprintf(stderr, "somehow there was no read from the ltc_rng! %lu == %lu\n", before, my_test_rng_read); - exit(EXIT_FAILURE); - } - - ltc_rng = previous; -#endif - - /* test prngs (test, import/export) */ - for (x = 0; prng_descriptor[x].name != NULL; x++) { - if(strstr(prng_descriptor[x].name, "no_prng") == prng_descriptor[x].name) continue; - err = CRYPT_OK; - DOX(prng_descriptor[x].test(), prng_descriptor[x].name); - DOX(prng_descriptor[x].start(&nprng), prng_descriptor[x].name); - DOX(prng_descriptor[x].add_entropy((unsigned char *)"helloworld12", 12, &nprng), prng_descriptor[x].name); - DOX(prng_descriptor[x].ready(&nprng), prng_descriptor[x].name); - n = sizeof(buf); - if (strcmp(prng_descriptor[x].name, "sprng")) { - one = 1; - if (prng_descriptor[x].pexport(buf, &one, &nprng) != CRYPT_BUFFER_OVERFLOW) { - fprintf(stderr, "Error testing pexport with a short buffer (%s)\n", prng_descriptor[x].name); - return CRYPT_ERROR; - } - } - DOX(prng_descriptor[x].pexport(buf, &n, &nprng), prng_descriptor[x].name); - prng_descriptor[x].done(&nprng); - DOX(prng_descriptor[x].pimport(buf, n, &nprng), prng_descriptor[x].name); - DOX(prng_descriptor[x].pimport(buf, 4096, &nprng), prng_descriptor[x].name); /* try to import larger data */ - DOX(prng_descriptor[x].ready(&nprng), prng_descriptor[x].name); - if (prng_descriptor[x].read(buf, 100, &nprng) != 100) { - fprintf(stderr, "Error reading from imported PRNG (%s)!\n", prng_descriptor[x].name); - return CRYPT_ERROR; - } - prng_descriptor[x].done(&nprng); - } - return err; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/rotate_test.c b/src/libtomcrypt/tests/rotate_test.c deleted file mode 100644 index 07663ee2c6..0000000000 --- a/src/libtomcrypt/tests/rotate_test.c +++ /dev/null @@ -1,416 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -/* Test rotate macros */ -int rotate_test(void) -{ - ulong32 L32 = 0x12345678UL; - ulong64 L64 = CONST64(0x1122334455667788); - int err = 0; - - /* ROR */ - if (ROR(L32, 0 ) != 0x12345678UL) { fprintf(stderr, "ROR 0 failed\n"); err++; } - if (ROR(L32, 1 ) != 0x091a2b3cUL) { fprintf(stderr, "ROR 1 failed\n"); err++; } - if (ROR(L32, 2 ) != 0x048d159eUL) { fprintf(stderr, "ROR 2 failed\n"); err++; } - if (ROR(L32, 3 ) != 0x02468acfUL) { fprintf(stderr, "ROR 3 failed\n"); err++; } - if (ROR(L32, 4 ) != 0x81234567UL) { fprintf(stderr, "ROR 4 failed\n"); err++; } - if (ROR(L32, 5 ) != 0xc091a2b3UL) { fprintf(stderr, "ROR 5 failed\n"); err++; } - if (ROR(L32, 6 ) != 0xe048d159UL) { fprintf(stderr, "ROR 6 failed\n"); err++; } - if (ROR(L32, 7 ) != 0xf02468acUL) { fprintf(stderr, "ROR 7 failed\n"); err++; } - if (ROR(L32, 8 ) != 0x78123456UL) { fprintf(stderr, "ROR 8 failed\n"); err++; } - if (ROR(L32, 9 ) != 0x3c091a2bUL) { fprintf(stderr, "ROR 9 failed\n"); err++; } - if (ROR(L32, 10) != 0x9e048d15UL) { fprintf(stderr, "ROR 10 failed\n"); err++; } - if (ROR(L32, 11) != 0xcf02468aUL) { fprintf(stderr, "ROR 11 failed\n"); err++; } - if (ROR(L32, 12) != 0x67812345UL) { fprintf(stderr, "ROR 12 failed\n"); err++; } - if (ROR(L32, 13) != 0xb3c091a2UL) { fprintf(stderr, "ROR 13 failed\n"); err++; } - if (ROR(L32, 14) != 0x59e048d1UL) { fprintf(stderr, "ROR 14 failed\n"); err++; } - if (ROR(L32, 15) != 0xacf02468UL) { fprintf(stderr, "ROR 15 failed\n"); err++; } - if (ROR(L32, 16) != 0x56781234UL) { fprintf(stderr, "ROR 16 failed\n"); err++; } - if (ROR(L32, 17) != 0x2b3c091aUL) { fprintf(stderr, "ROR 17 failed\n"); err++; } - if (ROR(L32, 18) != 0x159e048dUL) { fprintf(stderr, "ROR 18 failed\n"); err++; } - if (ROR(L32, 19) != 0x8acf0246UL) { fprintf(stderr, "ROR 19 failed\n"); err++; } - if (ROR(L32, 20) != 0x45678123UL) { fprintf(stderr, "ROR 20 failed\n"); err++; } - if (ROR(L32, 21) != 0xa2b3c091UL) { fprintf(stderr, "ROR 21 failed\n"); err++; } - if (ROR(L32, 22) != 0xd159e048UL) { fprintf(stderr, "ROR 22 failed\n"); err++; } - if (ROR(L32, 23) != 0x68acf024UL) { fprintf(stderr, "ROR 23 failed\n"); err++; } - if (ROR(L32, 24) != 0x34567812UL) { fprintf(stderr, "ROR 24 failed\n"); err++; } - if (ROR(L32, 25) != 0x1a2b3c09UL) { fprintf(stderr, "ROR 25 failed\n"); err++; } - if (ROR(L32, 26) != 0x8d159e04UL) { fprintf(stderr, "ROR 26 failed\n"); err++; } - if (ROR(L32, 27) != 0x468acf02UL) { fprintf(stderr, "ROR 27 failed\n"); err++; } - if (ROR(L32, 28) != 0x23456781UL) { fprintf(stderr, "ROR 28 failed\n"); err++; } - if (ROR(L32, 29) != 0x91a2b3c0UL) { fprintf(stderr, "ROR 29 failed\n"); err++; } - if (ROR(L32, 30) != 0x48d159e0UL) { fprintf(stderr, "ROR 30 failed\n"); err++; } - if (ROR(L32, 31) != 0x2468acf0UL) { fprintf(stderr, "ROR 31 failed\n"); err++; } - /* ROR64 */ - if (ROR64(L64, 0 ) != CONST64(0x1122334455667788)) { fprintf(stderr, "ROR64 0 failed\n"); err++; } - if (ROR64(L64, 1 ) != CONST64(0x089119a22ab33bc4)) { fprintf(stderr, "ROR64 1 failed\n"); err++; } - if (ROR64(L64, 2 ) != CONST64(0x04488cd115599de2)) { fprintf(stderr, "ROR64 2 failed\n"); err++; } - if (ROR64(L64, 3 ) != CONST64(0x022446688aaccef1)) { fprintf(stderr, "ROR64 3 failed\n"); err++; } - if (ROR64(L64, 4 ) != CONST64(0x8112233445566778)) { fprintf(stderr, "ROR64 4 failed\n"); err++; } - if (ROR64(L64, 5 ) != CONST64(0x4089119a22ab33bc)) { fprintf(stderr, "ROR64 5 failed\n"); err++; } - if (ROR64(L64, 6 ) != CONST64(0x204488cd115599de)) { fprintf(stderr, "ROR64 6 failed\n"); err++; } - if (ROR64(L64, 7 ) != CONST64(0x1022446688aaccef)) { fprintf(stderr, "ROR64 7 failed\n"); err++; } - if (ROR64(L64, 8 ) != CONST64(0x8811223344556677)) { fprintf(stderr, "ROR64 8 failed\n"); err++; } - if (ROR64(L64, 9 ) != CONST64(0xc4089119a22ab33b)) { fprintf(stderr, "ROR64 9 failed\n"); err++; } - if (ROR64(L64, 10) != CONST64(0xe204488cd115599d)) { fprintf(stderr, "ROR64 10 failed\n"); err++; } - if (ROR64(L64, 11) != CONST64(0xf1022446688aacce)) { fprintf(stderr, "ROR64 11 failed\n"); err++; } - if (ROR64(L64, 12) != CONST64(0x7881122334455667)) { fprintf(stderr, "ROR64 12 failed\n"); err++; } - if (ROR64(L64, 13) != CONST64(0xbc4089119a22ab33)) { fprintf(stderr, "ROR64 13 failed\n"); err++; } - if (ROR64(L64, 14) != CONST64(0xde204488cd115599)) { fprintf(stderr, "ROR64 14 failed\n"); err++; } - if (ROR64(L64, 15) != CONST64(0xef1022446688aacc)) { fprintf(stderr, "ROR64 15 failed\n"); err++; } - if (ROR64(L64, 16) != CONST64(0x7788112233445566)) { fprintf(stderr, "ROR64 16 failed\n"); err++; } - if (ROR64(L64, 17) != CONST64(0x3bc4089119a22ab3)) { fprintf(stderr, "ROR64 17 failed\n"); err++; } - if (ROR64(L64, 18) != CONST64(0x9de204488cd11559)) { fprintf(stderr, "ROR64 18 failed\n"); err++; } - if (ROR64(L64, 19) != CONST64(0xcef1022446688aac)) { fprintf(stderr, "ROR64 19 failed\n"); err++; } - if (ROR64(L64, 20) != CONST64(0x6778811223344556)) { fprintf(stderr, "ROR64 20 failed\n"); err++; } - if (ROR64(L64, 21) != CONST64(0x33bc4089119a22ab)) { fprintf(stderr, "ROR64 21 failed\n"); err++; } - if (ROR64(L64, 22) != CONST64(0x99de204488cd1155)) { fprintf(stderr, "ROR64 22 failed\n"); err++; } - if (ROR64(L64, 23) != CONST64(0xccef1022446688aa)) { fprintf(stderr, "ROR64 23 failed\n"); err++; } - if (ROR64(L64, 24) != CONST64(0x6677881122334455)) { fprintf(stderr, "ROR64 24 failed\n"); err++; } - if (ROR64(L64, 25) != CONST64(0xb33bc4089119a22a)) { fprintf(stderr, "ROR64 25 failed\n"); err++; } - if (ROR64(L64, 26) != CONST64(0x599de204488cd115)) { fprintf(stderr, "ROR64 26 failed\n"); err++; } - if (ROR64(L64, 27) != CONST64(0xaccef1022446688a)) { fprintf(stderr, "ROR64 27 failed\n"); err++; } - if (ROR64(L64, 28) != CONST64(0x5667788112233445)) { fprintf(stderr, "ROR64 28 failed\n"); err++; } - if (ROR64(L64, 29) != CONST64(0xab33bc4089119a22)) { fprintf(stderr, "ROR64 29 failed\n"); err++; } - if (ROR64(L64, 30) != CONST64(0x5599de204488cd11)) { fprintf(stderr, "ROR64 30 failed\n"); err++; } - if (ROR64(L64, 31) != CONST64(0xaaccef1022446688)) { fprintf(stderr, "ROR64 31 failed\n"); err++; } - if (ROR64(L64, 32) != CONST64(0x5566778811223344)) { fprintf(stderr, "ROR64 32 failed\n"); err++; } - if (ROR64(L64, 33) != CONST64(0x2ab33bc4089119a2)) { fprintf(stderr, "ROR64 33 failed\n"); err++; } - if (ROR64(L64, 34) != CONST64(0x15599de204488cd1)) { fprintf(stderr, "ROR64 34 failed\n"); err++; } - if (ROR64(L64, 35) != CONST64(0x8aaccef102244668)) { fprintf(stderr, "ROR64 35 failed\n"); err++; } - if (ROR64(L64, 36) != CONST64(0x4556677881122334)) { fprintf(stderr, "ROR64 36 failed\n"); err++; } - if (ROR64(L64, 37) != CONST64(0x22ab33bc4089119a)) { fprintf(stderr, "ROR64 37 failed\n"); err++; } - if (ROR64(L64, 38) != CONST64(0x115599de204488cd)) { fprintf(stderr, "ROR64 38 failed\n"); err++; } - if (ROR64(L64, 39) != CONST64(0x88aaccef10224466)) { fprintf(stderr, "ROR64 39 failed\n"); err++; } - if (ROR64(L64, 40) != CONST64(0x4455667788112233)) { fprintf(stderr, "ROR64 40 failed\n"); err++; } - if (ROR64(L64, 41) != CONST64(0xa22ab33bc4089119)) { fprintf(stderr, "ROR64 41 failed\n"); err++; } - if (ROR64(L64, 42) != CONST64(0xd115599de204488c)) { fprintf(stderr, "ROR64 42 failed\n"); err++; } - if (ROR64(L64, 43) != CONST64(0x688aaccef1022446)) { fprintf(stderr, "ROR64 43 failed\n"); err++; } - if (ROR64(L64, 44) != CONST64(0x3445566778811223)) { fprintf(stderr, "ROR64 44 failed\n"); err++; } - if (ROR64(L64, 45) != CONST64(0x9a22ab33bc408911)) { fprintf(stderr, "ROR64 45 failed\n"); err++; } - if (ROR64(L64, 46) != CONST64(0xcd115599de204488)) { fprintf(stderr, "ROR64 46 failed\n"); err++; } - if (ROR64(L64, 47) != CONST64(0x6688aaccef102244)) { fprintf(stderr, "ROR64 47 failed\n"); err++; } - if (ROR64(L64, 48) != CONST64(0x3344556677881122)) { fprintf(stderr, "ROR64 48 failed\n"); err++; } - if (ROR64(L64, 49) != CONST64(0x19a22ab33bc40891)) { fprintf(stderr, "ROR64 49 failed\n"); err++; } - if (ROR64(L64, 50) != CONST64(0x8cd115599de20448)) { fprintf(stderr, "ROR64 50 failed\n"); err++; } - if (ROR64(L64, 51) != CONST64(0x46688aaccef10224)) { fprintf(stderr, "ROR64 51 failed\n"); err++; } - if (ROR64(L64, 52) != CONST64(0x2334455667788112)) { fprintf(stderr, "ROR64 52 failed\n"); err++; } - if (ROR64(L64, 53) != CONST64(0x119a22ab33bc4089)) { fprintf(stderr, "ROR64 53 failed\n"); err++; } - if (ROR64(L64, 54) != CONST64(0x88cd115599de2044)) { fprintf(stderr, "ROR64 54 failed\n"); err++; } - if (ROR64(L64, 55) != CONST64(0x446688aaccef1022)) { fprintf(stderr, "ROR64 55 failed\n"); err++; } - if (ROR64(L64, 56) != CONST64(0x2233445566778811)) { fprintf(stderr, "ROR64 56 failed\n"); err++; } - if (ROR64(L64, 57) != CONST64(0x9119a22ab33bc408)) { fprintf(stderr, "ROR64 57 failed\n"); err++; } - if (ROR64(L64, 58) != CONST64(0x488cd115599de204)) { fprintf(stderr, "ROR64 58 failed\n"); err++; } - if (ROR64(L64, 59) != CONST64(0x2446688aaccef102)) { fprintf(stderr, "ROR64 59 failed\n"); err++; } - if (ROR64(L64, 60) != CONST64(0x1223344556677881)) { fprintf(stderr, "ROR64 60 failed\n"); err++; } - if (ROR64(L64, 61) != CONST64(0x89119a22ab33bc40)) { fprintf(stderr, "ROR64 61 failed\n"); err++; } - if (ROR64(L64, 62) != CONST64(0x4488cd115599de20)) { fprintf(stderr, "ROR64 62 failed\n"); err++; } - if (ROR64(L64, 63) != CONST64(0x22446688aaccef10)) { fprintf(stderr, "ROR64 63 failed\n"); err++; } - /* ROL */ - if (ROL(L32, 0 ) != 0x12345678UL) { fprintf(stderr, "ROL 0 failed\n"); err++; } - if (ROL(L32, 1 ) != 0x2468acf0UL) { fprintf(stderr, "ROL 1 failed\n"); err++; } - if (ROL(L32, 2 ) != 0x48d159e0UL) { fprintf(stderr, "ROL 2 failed\n"); err++; } - if (ROL(L32, 3 ) != 0x91a2b3c0UL) { fprintf(stderr, "ROL 3 failed\n"); err++; } - if (ROL(L32, 4 ) != 0x23456781UL) { fprintf(stderr, "ROL 4 failed\n"); err++; } - if (ROL(L32, 5 ) != 0x468acf02UL) { fprintf(stderr, "ROL 5 failed\n"); err++; } - if (ROL(L32, 6 ) != 0x8d159e04UL) { fprintf(stderr, "ROL 6 failed\n"); err++; } - if (ROL(L32, 7 ) != 0x1a2b3c09UL) { fprintf(stderr, "ROL 7 failed\n"); err++; } - if (ROL(L32, 8 ) != 0x34567812UL) { fprintf(stderr, "ROL 8 failed\n"); err++; } - if (ROL(L32, 9 ) != 0x68acf024UL) { fprintf(stderr, "ROL 9 failed\n"); err++; } - if (ROL(L32, 10) != 0xd159e048UL) { fprintf(stderr, "ROL 10 failed\n"); err++; } - if (ROL(L32, 11) != 0xa2b3c091UL) { fprintf(stderr, "ROL 11 failed\n"); err++; } - if (ROL(L32, 12) != 0x45678123UL) { fprintf(stderr, "ROL 12 failed\n"); err++; } - if (ROL(L32, 13) != 0x8acf0246UL) { fprintf(stderr, "ROL 13 failed\n"); err++; } - if (ROL(L32, 14) != 0x159e048dUL) { fprintf(stderr, "ROL 14 failed\n"); err++; } - if (ROL(L32, 15) != 0x2b3c091aUL) { fprintf(stderr, "ROL 15 failed\n"); err++; } - if (ROL(L32, 16) != 0x56781234UL) { fprintf(stderr, "ROL 16 failed\n"); err++; } - if (ROL(L32, 17) != 0xacf02468UL) { fprintf(stderr, "ROL 17 failed\n"); err++; } - if (ROL(L32, 18) != 0x59e048d1UL) { fprintf(stderr, "ROL 18 failed\n"); err++; } - if (ROL(L32, 19) != 0xb3c091a2UL) { fprintf(stderr, "ROL 19 failed\n"); err++; } - if (ROL(L32, 20) != 0x67812345UL) { fprintf(stderr, "ROL 20 failed\n"); err++; } - if (ROL(L32, 21) != 0xcf02468aUL) { fprintf(stderr, "ROL 21 failed\n"); err++; } - if (ROL(L32, 22) != 0x9e048d15UL) { fprintf(stderr, "ROL 22 failed\n"); err++; } - if (ROL(L32, 23) != 0x3c091a2bUL) { fprintf(stderr, "ROL 23 failed\n"); err++; } - if (ROL(L32, 24) != 0x78123456UL) { fprintf(stderr, "ROL 24 failed\n"); err++; } - if (ROL(L32, 25) != 0xf02468acUL) { fprintf(stderr, "ROL 25 failed\n"); err++; } - if (ROL(L32, 26) != 0xe048d159UL) { fprintf(stderr, "ROL 26 failed\n"); err++; } - if (ROL(L32, 27) != 0xc091a2b3UL) { fprintf(stderr, "ROL 27 failed\n"); err++; } - if (ROL(L32, 28) != 0x81234567UL) { fprintf(stderr, "ROL 28 failed\n"); err++; } - if (ROL(L32, 29) != 0x02468acfUL) { fprintf(stderr, "ROL 29 failed\n"); err++; } - if (ROL(L32, 30) != 0x048d159eUL) { fprintf(stderr, "ROL 30 failed\n"); err++; } - if (ROL(L32, 31) != 0x091a2b3cUL) { fprintf(stderr, "ROL 31 failed\n"); err++; } - /* ROL64 */ - if (ROL64(L64, 0 ) != CONST64(0x1122334455667788)) { fprintf(stderr, "ROL64 0 failed\n"); err++; } - if (ROL64(L64, 1 ) != CONST64(0x22446688aaccef10)) { fprintf(stderr, "ROL64 1 failed\n"); err++; } - if (ROL64(L64, 2 ) != CONST64(0x4488cd115599de20)) { fprintf(stderr, "ROL64 2 failed\n"); err++; } - if (ROL64(L64, 3 ) != CONST64(0x89119a22ab33bc40)) { fprintf(stderr, "ROL64 3 failed\n"); err++; } - if (ROL64(L64, 4 ) != CONST64(0x1223344556677881)) { fprintf(stderr, "ROL64 4 failed\n"); err++; } - if (ROL64(L64, 5 ) != CONST64(0x2446688aaccef102)) { fprintf(stderr, "ROL64 5 failed\n"); err++; } - if (ROL64(L64, 6 ) != CONST64(0x488cd115599de204)) { fprintf(stderr, "ROL64 6 failed\n"); err++; } - if (ROL64(L64, 7 ) != CONST64(0x9119a22ab33bc408)) { fprintf(stderr, "ROL64 7 failed\n"); err++; } - if (ROL64(L64, 8 ) != CONST64(0x2233445566778811)) { fprintf(stderr, "ROL64 8 failed\n"); err++; } - if (ROL64(L64, 9 ) != CONST64(0x446688aaccef1022)) { fprintf(stderr, "ROL64 9 failed\n"); err++; } - if (ROL64(L64, 10) != CONST64(0x88cd115599de2044)) { fprintf(stderr, "ROL64 10 failed\n"); err++; } - if (ROL64(L64, 11) != CONST64(0x119a22ab33bc4089)) { fprintf(stderr, "ROL64 11 failed\n"); err++; } - if (ROL64(L64, 12) != CONST64(0x2334455667788112)) { fprintf(stderr, "ROL64 12 failed\n"); err++; } - if (ROL64(L64, 13) != CONST64(0x46688aaccef10224)) { fprintf(stderr, "ROL64 13 failed\n"); err++; } - if (ROL64(L64, 14) != CONST64(0x8cd115599de20448)) { fprintf(stderr, "ROL64 14 failed\n"); err++; } - if (ROL64(L64, 15) != CONST64(0x19a22ab33bc40891)) { fprintf(stderr, "ROL64 15 failed\n"); err++; } - if (ROL64(L64, 16) != CONST64(0x3344556677881122)) { fprintf(stderr, "ROL64 16 failed\n"); err++; } - if (ROL64(L64, 17) != CONST64(0x6688aaccef102244)) { fprintf(stderr, "ROL64 17 failed\n"); err++; } - if (ROL64(L64, 18) != CONST64(0xcd115599de204488)) { fprintf(stderr, "ROL64 18 failed\n"); err++; } - if (ROL64(L64, 19) != CONST64(0x9a22ab33bc408911)) { fprintf(stderr, "ROL64 19 failed\n"); err++; } - if (ROL64(L64, 20) != CONST64(0x3445566778811223)) { fprintf(stderr, "ROL64 20 failed\n"); err++; } - if (ROL64(L64, 21) != CONST64(0x688aaccef1022446)) { fprintf(stderr, "ROL64 21 failed\n"); err++; } - if (ROL64(L64, 22) != CONST64(0xd115599de204488c)) { fprintf(stderr, "ROL64 22 failed\n"); err++; } - if (ROL64(L64, 23) != CONST64(0xa22ab33bc4089119)) { fprintf(stderr, "ROL64 23 failed\n"); err++; } - if (ROL64(L64, 24) != CONST64(0x4455667788112233)) { fprintf(stderr, "ROL64 24 failed\n"); err++; } - if (ROL64(L64, 25) != CONST64(0x88aaccef10224466)) { fprintf(stderr, "ROL64 25 failed\n"); err++; } - if (ROL64(L64, 26) != CONST64(0x115599de204488cd)) { fprintf(stderr, "ROL64 26 failed\n"); err++; } - if (ROL64(L64, 27) != CONST64(0x22ab33bc4089119a)) { fprintf(stderr, "ROL64 27 failed\n"); err++; } - if (ROL64(L64, 28) != CONST64(0x4556677881122334)) { fprintf(stderr, "ROL64 28 failed\n"); err++; } - if (ROL64(L64, 29) != CONST64(0x8aaccef102244668)) { fprintf(stderr, "ROL64 29 failed\n"); err++; } - if (ROL64(L64, 30) != CONST64(0x15599de204488cd1)) { fprintf(stderr, "ROL64 30 failed\n"); err++; } - if (ROL64(L64, 31) != CONST64(0x2ab33bc4089119a2)) { fprintf(stderr, "ROL64 31 failed\n"); err++; } - if (ROL64(L64, 32) != CONST64(0x5566778811223344)) { fprintf(stderr, "ROL64 32 failed\n"); err++; } - if (ROL64(L64, 33) != CONST64(0xaaccef1022446688)) { fprintf(stderr, "ROL64 33 failed\n"); err++; } - if (ROL64(L64, 34) != CONST64(0x5599de204488cd11)) { fprintf(stderr, "ROL64 34 failed\n"); err++; } - if (ROL64(L64, 35) != CONST64(0xab33bc4089119a22)) { fprintf(stderr, "ROL64 35 failed\n"); err++; } - if (ROL64(L64, 36) != CONST64(0x5667788112233445)) { fprintf(stderr, "ROL64 36 failed\n"); err++; } - if (ROL64(L64, 37) != CONST64(0xaccef1022446688a)) { fprintf(stderr, "ROL64 37 failed\n"); err++; } - if (ROL64(L64, 38) != CONST64(0x599de204488cd115)) { fprintf(stderr, "ROL64 38 failed\n"); err++; } - if (ROL64(L64, 39) != CONST64(0xb33bc4089119a22a)) { fprintf(stderr, "ROL64 39 failed\n"); err++; } - if (ROL64(L64, 40) != CONST64(0x6677881122334455)) { fprintf(stderr, "ROL64 40 failed\n"); err++; } - if (ROL64(L64, 41) != CONST64(0xccef1022446688aa)) { fprintf(stderr, "ROL64 41 failed\n"); err++; } - if (ROL64(L64, 42) != CONST64(0x99de204488cd1155)) { fprintf(stderr, "ROL64 42 failed\n"); err++; } - if (ROL64(L64, 43) != CONST64(0x33bc4089119a22ab)) { fprintf(stderr, "ROL64 43 failed\n"); err++; } - if (ROL64(L64, 44) != CONST64(0x6778811223344556)) { fprintf(stderr, "ROL64 44 failed\n"); err++; } - if (ROL64(L64, 45) != CONST64(0xcef1022446688aac)) { fprintf(stderr, "ROL64 45 failed\n"); err++; } - if (ROL64(L64, 46) != CONST64(0x9de204488cd11559)) { fprintf(stderr, "ROL64 46 failed\n"); err++; } - if (ROL64(L64, 47) != CONST64(0x3bc4089119a22ab3)) { fprintf(stderr, "ROL64 47 failed\n"); err++; } - if (ROL64(L64, 48) != CONST64(0x7788112233445566)) { fprintf(stderr, "ROL64 48 failed\n"); err++; } - if (ROL64(L64, 49) != CONST64(0xef1022446688aacc)) { fprintf(stderr, "ROL64 49 failed\n"); err++; } - if (ROL64(L64, 50) != CONST64(0xde204488cd115599)) { fprintf(stderr, "ROL64 50 failed\n"); err++; } - if (ROL64(L64, 51) != CONST64(0xbc4089119a22ab33)) { fprintf(stderr, "ROL64 51 failed\n"); err++; } - if (ROL64(L64, 52) != CONST64(0x7881122334455667)) { fprintf(stderr, "ROL64 52 failed\n"); err++; } - if (ROL64(L64, 53) != CONST64(0xf1022446688aacce)) { fprintf(stderr, "ROL64 53 failed\n"); err++; } - if (ROL64(L64, 54) != CONST64(0xe204488cd115599d)) { fprintf(stderr, "ROL64 54 failed\n"); err++; } - if (ROL64(L64, 55) != CONST64(0xc4089119a22ab33b)) { fprintf(stderr, "ROL64 55 failed\n"); err++; } - if (ROL64(L64, 56) != CONST64(0x8811223344556677)) { fprintf(stderr, "ROL64 56 failed\n"); err++; } - if (ROL64(L64, 57) != CONST64(0x1022446688aaccef)) { fprintf(stderr, "ROL64 57 failed\n"); err++; } - if (ROL64(L64, 58) != CONST64(0x204488cd115599de)) { fprintf(stderr, "ROL64 58 failed\n"); err++; } - if (ROL64(L64, 59) != CONST64(0x4089119a22ab33bc)) { fprintf(stderr, "ROL64 59 failed\n"); err++; } - if (ROL64(L64, 60) != CONST64(0x8112233445566778)) { fprintf(stderr, "ROL64 60 failed\n"); err++; } - if (ROL64(L64, 61) != CONST64(0x022446688aaccef1)) { fprintf(stderr, "ROL64 61 failed\n"); err++; } - if (ROL64(L64, 62) != CONST64(0x04488cd115599de2)) { fprintf(stderr, "ROL64 62 failed\n"); err++; } - if (ROL64(L64, 63) != CONST64(0x089119a22ab33bc4)) { fprintf(stderr, "ROL64 63 failed\n"); err++; } - /* RORc */ - if (RORc(L32, 0 ) != 0x12345678UL) { fprintf(stderr, "RORc 0 failed\n"); err++; } - if (RORc(L32, 1 ) != 0x091a2b3cUL) { fprintf(stderr, "RORc 1 failed\n"); err++; } - if (RORc(L32, 2 ) != 0x048d159eUL) { fprintf(stderr, "RORc 2 failed\n"); err++; } - if (RORc(L32, 3 ) != 0x02468acfUL) { fprintf(stderr, "RORc 3 failed\n"); err++; } - if (RORc(L32, 4 ) != 0x81234567UL) { fprintf(stderr, "RORc 4 failed\n"); err++; } - if (RORc(L32, 5 ) != 0xc091a2b3UL) { fprintf(stderr, "RORc 5 failed\n"); err++; } - if (RORc(L32, 6 ) != 0xe048d159UL) { fprintf(stderr, "RORc 6 failed\n"); err++; } - if (RORc(L32, 7 ) != 0xf02468acUL) { fprintf(stderr, "RORc 7 failed\n"); err++; } - if (RORc(L32, 8 ) != 0x78123456UL) { fprintf(stderr, "RORc 8 failed\n"); err++; } - if (RORc(L32, 9 ) != 0x3c091a2bUL) { fprintf(stderr, "RORc 9 failed\n"); err++; } - if (RORc(L32, 10) != 0x9e048d15UL) { fprintf(stderr, "RORc 10 failed\n"); err++; } - if (RORc(L32, 11) != 0xcf02468aUL) { fprintf(stderr, "RORc 11 failed\n"); err++; } - if (RORc(L32, 12) != 0x67812345UL) { fprintf(stderr, "RORc 12 failed\n"); err++; } - if (RORc(L32, 13) != 0xb3c091a2UL) { fprintf(stderr, "RORc 13 failed\n"); err++; } - if (RORc(L32, 14) != 0x59e048d1UL) { fprintf(stderr, "RORc 14 failed\n"); err++; } - if (RORc(L32, 15) != 0xacf02468UL) { fprintf(stderr, "RORc 15 failed\n"); err++; } - if (RORc(L32, 16) != 0x56781234UL) { fprintf(stderr, "RORc 16 failed\n"); err++; } - if (RORc(L32, 17) != 0x2b3c091aUL) { fprintf(stderr, "RORc 17 failed\n"); err++; } - if (RORc(L32, 18) != 0x159e048dUL) { fprintf(stderr, "RORc 18 failed\n"); err++; } - if (RORc(L32, 19) != 0x8acf0246UL) { fprintf(stderr, "RORc 19 failed\n"); err++; } - if (RORc(L32, 20) != 0x45678123UL) { fprintf(stderr, "RORc 20 failed\n"); err++; } - if (RORc(L32, 21) != 0xa2b3c091UL) { fprintf(stderr, "RORc 21 failed\n"); err++; } - if (RORc(L32, 22) != 0xd159e048UL) { fprintf(stderr, "RORc 22 failed\n"); err++; } - if (RORc(L32, 23) != 0x68acf024UL) { fprintf(stderr, "RORc 23 failed\n"); err++; } - if (RORc(L32, 24) != 0x34567812UL) { fprintf(stderr, "RORc 24 failed\n"); err++; } - if (RORc(L32, 25) != 0x1a2b3c09UL) { fprintf(stderr, "RORc 25 failed\n"); err++; } - if (RORc(L32, 26) != 0x8d159e04UL) { fprintf(stderr, "RORc 26 failed\n"); err++; } - if (RORc(L32, 27) != 0x468acf02UL) { fprintf(stderr, "RORc 27 failed\n"); err++; } - if (RORc(L32, 28) != 0x23456781UL) { fprintf(stderr, "RORc 28 failed\n"); err++; } - if (RORc(L32, 29) != 0x91a2b3c0UL) { fprintf(stderr, "RORc 29 failed\n"); err++; } - if (RORc(L32, 30) != 0x48d159e0UL) { fprintf(stderr, "RORc 30 failed\n"); err++; } - if (RORc(L32, 31) != 0x2468acf0UL) { fprintf(stderr, "RORc 31 failed\n"); err++; } - /* ROR64c */ - if (ROR64c(L64, 0 ) != CONST64(0x1122334455667788)) { fprintf(stderr, "ROR64c 0 failed\n"); err++; } - if (ROR64c(L64, 1 ) != CONST64(0x089119a22ab33bc4)) { fprintf(stderr, "ROR64c 1 failed\n"); err++; } - if (ROR64c(L64, 2 ) != CONST64(0x04488cd115599de2)) { fprintf(stderr, "ROR64c 2 failed\n"); err++; } - if (ROR64c(L64, 3 ) != CONST64(0x022446688aaccef1)) { fprintf(stderr, "ROR64c 3 failed\n"); err++; } - if (ROR64c(L64, 4 ) != CONST64(0x8112233445566778)) { fprintf(stderr, "ROR64c 4 failed\n"); err++; } - if (ROR64c(L64, 5 ) != CONST64(0x4089119a22ab33bc)) { fprintf(stderr, "ROR64c 5 failed\n"); err++; } - if (ROR64c(L64, 6 ) != CONST64(0x204488cd115599de)) { fprintf(stderr, "ROR64c 6 failed\n"); err++; } - if (ROR64c(L64, 7 ) != CONST64(0x1022446688aaccef)) { fprintf(stderr, "ROR64c 7 failed\n"); err++; } - if (ROR64c(L64, 8 ) != CONST64(0x8811223344556677)) { fprintf(stderr, "ROR64c 8 failed\n"); err++; } - if (ROR64c(L64, 9 ) != CONST64(0xc4089119a22ab33b)) { fprintf(stderr, "ROR64c 9 failed\n"); err++; } - if (ROR64c(L64, 10) != CONST64(0xe204488cd115599d)) { fprintf(stderr, "ROR64c 10 failed\n"); err++; } - if (ROR64c(L64, 11) != CONST64(0xf1022446688aacce)) { fprintf(stderr, "ROR64c 11 failed\n"); err++; } - if (ROR64c(L64, 12) != CONST64(0x7881122334455667)) { fprintf(stderr, "ROR64c 12 failed\n"); err++; } - if (ROR64c(L64, 13) != CONST64(0xbc4089119a22ab33)) { fprintf(stderr, "ROR64c 13 failed\n"); err++; } - if (ROR64c(L64, 14) != CONST64(0xde204488cd115599)) { fprintf(stderr, "ROR64c 14 failed\n"); err++; } - if (ROR64c(L64, 15) != CONST64(0xef1022446688aacc)) { fprintf(stderr, "ROR64c 15 failed\n"); err++; } - if (ROR64c(L64, 16) != CONST64(0x7788112233445566)) { fprintf(stderr, "ROR64c 16 failed\n"); err++; } - if (ROR64c(L64, 17) != CONST64(0x3bc4089119a22ab3)) { fprintf(stderr, "ROR64c 17 failed\n"); err++; } - if (ROR64c(L64, 18) != CONST64(0x9de204488cd11559)) { fprintf(stderr, "ROR64c 18 failed\n"); err++; } - if (ROR64c(L64, 19) != CONST64(0xcef1022446688aac)) { fprintf(stderr, "ROR64c 19 failed\n"); err++; } - if (ROR64c(L64, 20) != CONST64(0x6778811223344556)) { fprintf(stderr, "ROR64c 20 failed\n"); err++; } - if (ROR64c(L64, 21) != CONST64(0x33bc4089119a22ab)) { fprintf(stderr, "ROR64c 21 failed\n"); err++; } - if (ROR64c(L64, 22) != CONST64(0x99de204488cd1155)) { fprintf(stderr, "ROR64c 22 failed\n"); err++; } - if (ROR64c(L64, 23) != CONST64(0xccef1022446688aa)) { fprintf(stderr, "ROR64c 23 failed\n"); err++; } - if (ROR64c(L64, 24) != CONST64(0x6677881122334455)) { fprintf(stderr, "ROR64c 24 failed\n"); err++; } - if (ROR64c(L64, 25) != CONST64(0xb33bc4089119a22a)) { fprintf(stderr, "ROR64c 25 failed\n"); err++; } - if (ROR64c(L64, 26) != CONST64(0x599de204488cd115)) { fprintf(stderr, "ROR64c 26 failed\n"); err++; } - if (ROR64c(L64, 27) != CONST64(0xaccef1022446688a)) { fprintf(stderr, "ROR64c 27 failed\n"); err++; } - if (ROR64c(L64, 28) != CONST64(0x5667788112233445)) { fprintf(stderr, "ROR64c 28 failed\n"); err++; } - if (ROR64c(L64, 29) != CONST64(0xab33bc4089119a22)) { fprintf(stderr, "ROR64c 29 failed\n"); err++; } - if (ROR64c(L64, 30) != CONST64(0x5599de204488cd11)) { fprintf(stderr, "ROR64c 30 failed\n"); err++; } - if (ROR64c(L64, 31) != CONST64(0xaaccef1022446688)) { fprintf(stderr, "ROR64c 31 failed\n"); err++; } - if (ROR64c(L64, 32) != CONST64(0x5566778811223344)) { fprintf(stderr, "ROR64c 32 failed\n"); err++; } - if (ROR64c(L64, 33) != CONST64(0x2ab33bc4089119a2)) { fprintf(stderr, "ROR64c 33 failed\n"); err++; } - if (ROR64c(L64, 34) != CONST64(0x15599de204488cd1)) { fprintf(stderr, "ROR64c 34 failed\n"); err++; } - if (ROR64c(L64, 35) != CONST64(0x8aaccef102244668)) { fprintf(stderr, "ROR64c 35 failed\n"); err++; } - if (ROR64c(L64, 36) != CONST64(0x4556677881122334)) { fprintf(stderr, "ROR64c 36 failed\n"); err++; } - if (ROR64c(L64, 37) != CONST64(0x22ab33bc4089119a)) { fprintf(stderr, "ROR64c 37 failed\n"); err++; } - if (ROR64c(L64, 38) != CONST64(0x115599de204488cd)) { fprintf(stderr, "ROR64c 38 failed\n"); err++; } - if (ROR64c(L64, 39) != CONST64(0x88aaccef10224466)) { fprintf(stderr, "ROR64c 39 failed\n"); err++; } - if (ROR64c(L64, 40) != CONST64(0x4455667788112233)) { fprintf(stderr, "ROR64c 40 failed\n"); err++; } - if (ROR64c(L64, 41) != CONST64(0xa22ab33bc4089119)) { fprintf(stderr, "ROR64c 41 failed\n"); err++; } - if (ROR64c(L64, 42) != CONST64(0xd115599de204488c)) { fprintf(stderr, "ROR64c 42 failed\n"); err++; } - if (ROR64c(L64, 43) != CONST64(0x688aaccef1022446)) { fprintf(stderr, "ROR64c 43 failed\n"); err++; } - if (ROR64c(L64, 44) != CONST64(0x3445566778811223)) { fprintf(stderr, "ROR64c 44 failed\n"); err++; } - if (ROR64c(L64, 45) != CONST64(0x9a22ab33bc408911)) { fprintf(stderr, "ROR64c 45 failed\n"); err++; } - if (ROR64c(L64, 46) != CONST64(0xcd115599de204488)) { fprintf(stderr, "ROR64c 46 failed\n"); err++; } - if (ROR64c(L64, 47) != CONST64(0x6688aaccef102244)) { fprintf(stderr, "ROR64c 47 failed\n"); err++; } - if (ROR64c(L64, 48) != CONST64(0x3344556677881122)) { fprintf(stderr, "ROR64c 48 failed\n"); err++; } - if (ROR64c(L64, 49) != CONST64(0x19a22ab33bc40891)) { fprintf(stderr, "ROR64c 49 failed\n"); err++; } - if (ROR64c(L64, 50) != CONST64(0x8cd115599de20448)) { fprintf(stderr, "ROR64c 50 failed\n"); err++; } - if (ROR64c(L64, 51) != CONST64(0x46688aaccef10224)) { fprintf(stderr, "ROR64c 51 failed\n"); err++; } - if (ROR64c(L64, 52) != CONST64(0x2334455667788112)) { fprintf(stderr, "ROR64c 52 failed\n"); err++; } - if (ROR64c(L64, 53) != CONST64(0x119a22ab33bc4089)) { fprintf(stderr, "ROR64c 53 failed\n"); err++; } - if (ROR64c(L64, 54) != CONST64(0x88cd115599de2044)) { fprintf(stderr, "ROR64c 54 failed\n"); err++; } - if (ROR64c(L64, 55) != CONST64(0x446688aaccef1022)) { fprintf(stderr, "ROR64c 55 failed\n"); err++; } - if (ROR64c(L64, 56) != CONST64(0x2233445566778811)) { fprintf(stderr, "ROR64c 56 failed\n"); err++; } - if (ROR64c(L64, 57) != CONST64(0x9119a22ab33bc408)) { fprintf(stderr, "ROR64c 57 failed\n"); err++; } - if (ROR64c(L64, 58) != CONST64(0x488cd115599de204)) { fprintf(stderr, "ROR64c 58 failed\n"); err++; } - if (ROR64c(L64, 59) != CONST64(0x2446688aaccef102)) { fprintf(stderr, "ROR64c 59 failed\n"); err++; } - if (ROR64c(L64, 60) != CONST64(0x1223344556677881)) { fprintf(stderr, "ROR64c 60 failed\n"); err++; } - if (ROR64c(L64, 61) != CONST64(0x89119a22ab33bc40)) { fprintf(stderr, "ROR64c 61 failed\n"); err++; } - if (ROR64c(L64, 62) != CONST64(0x4488cd115599de20)) { fprintf(stderr, "ROR64c 62 failed\n"); err++; } - if (ROR64c(L64, 63) != CONST64(0x22446688aaccef10)) { fprintf(stderr, "ROR64c 63 failed\n"); err++; } - /* ROLc */ - if (ROLc(L32, 0 ) != 0x12345678UL) { fprintf(stderr, "ROLc 0 failed\n"); err++; } - if (ROLc(L32, 1 ) != 0x2468acf0UL) { fprintf(stderr, "ROLc 1 failed\n"); err++; } - if (ROLc(L32, 2 ) != 0x48d159e0UL) { fprintf(stderr, "ROLc 2 failed\n"); err++; } - if (ROLc(L32, 3 ) != 0x91a2b3c0UL) { fprintf(stderr, "ROLc 3 failed\n"); err++; } - if (ROLc(L32, 4 ) != 0x23456781UL) { fprintf(stderr, "ROLc 4 failed\n"); err++; } - if (ROLc(L32, 5 ) != 0x468acf02UL) { fprintf(stderr, "ROLc 5 failed\n"); err++; } - if (ROLc(L32, 6 ) != 0x8d159e04UL) { fprintf(stderr, "ROLc 6 failed\n"); err++; } - if (ROLc(L32, 7 ) != 0x1a2b3c09UL) { fprintf(stderr, "ROLc 7 failed\n"); err++; } - if (ROLc(L32, 8 ) != 0x34567812UL) { fprintf(stderr, "ROLc 8 failed\n"); err++; } - if (ROLc(L32, 9 ) != 0x68acf024UL) { fprintf(stderr, "ROLc 9 failed\n"); err++; } - if (ROLc(L32, 10) != 0xd159e048UL) { fprintf(stderr, "ROLc 10 failed\n"); err++; } - if (ROLc(L32, 11) != 0xa2b3c091UL) { fprintf(stderr, "ROLc 11 failed\n"); err++; } - if (ROLc(L32, 12) != 0x45678123UL) { fprintf(stderr, "ROLc 12 failed\n"); err++; } - if (ROLc(L32, 13) != 0x8acf0246UL) { fprintf(stderr, "ROLc 13 failed\n"); err++; } - if (ROLc(L32, 14) != 0x159e048dUL) { fprintf(stderr, "ROLc 14 failed\n"); err++; } - if (ROLc(L32, 15) != 0x2b3c091aUL) { fprintf(stderr, "ROLc 15 failed\n"); err++; } - if (ROLc(L32, 16) != 0x56781234UL) { fprintf(stderr, "ROLc 16 failed\n"); err++; } - if (ROLc(L32, 17) != 0xacf02468UL) { fprintf(stderr, "ROLc 17 failed\n"); err++; } - if (ROLc(L32, 18) != 0x59e048d1UL) { fprintf(stderr, "ROLc 18 failed\n"); err++; } - if (ROLc(L32, 19) != 0xb3c091a2UL) { fprintf(stderr, "ROLc 19 failed\n"); err++; } - if (ROLc(L32, 20) != 0x67812345UL) { fprintf(stderr, "ROLc 20 failed\n"); err++; } - if (ROLc(L32, 21) != 0xcf02468aUL) { fprintf(stderr, "ROLc 21 failed\n"); err++; } - if (ROLc(L32, 22) != 0x9e048d15UL) { fprintf(stderr, "ROLc 22 failed\n"); err++; } - if (ROLc(L32, 23) != 0x3c091a2bUL) { fprintf(stderr, "ROLc 23 failed\n"); err++; } - if (ROLc(L32, 24) != 0x78123456UL) { fprintf(stderr, "ROLc 24 failed\n"); err++; } - if (ROLc(L32, 25) != 0xf02468acUL) { fprintf(stderr, "ROLc 25 failed\n"); err++; } - if (ROLc(L32, 26) != 0xe048d159UL) { fprintf(stderr, "ROLc 26 failed\n"); err++; } - if (ROLc(L32, 27) != 0xc091a2b3UL) { fprintf(stderr, "ROLc 27 failed\n"); err++; } - if (ROLc(L32, 28) != 0x81234567UL) { fprintf(stderr, "ROLc 28 failed\n"); err++; } - if (ROLc(L32, 29) != 0x02468acfUL) { fprintf(stderr, "ROLc 29 failed\n"); err++; } - if (ROLc(L32, 30) != 0x048d159eUL) { fprintf(stderr, "ROLc 30 failed\n"); err++; } - if (ROLc(L32, 31) != 0x091a2b3cUL) { fprintf(stderr, "ROLc 31 failed\n"); err++; } - /* ROL64c */ - if (ROL64c(L64, 0 ) != CONST64(0x1122334455667788)) { fprintf(stderr, "ROL64c 0 failed\n"); err++; } - if (ROL64c(L64, 1 ) != CONST64(0x22446688aaccef10)) { fprintf(stderr, "ROL64c 1 failed\n"); err++; } - if (ROL64c(L64, 2 ) != CONST64(0x4488cd115599de20)) { fprintf(stderr, "ROL64c 2 failed\n"); err++; } - if (ROL64c(L64, 3 ) != CONST64(0x89119a22ab33bc40)) { fprintf(stderr, "ROL64c 3 failed\n"); err++; } - if (ROL64c(L64, 4 ) != CONST64(0x1223344556677881)) { fprintf(stderr, "ROL64c 4 failed\n"); err++; } - if (ROL64c(L64, 5 ) != CONST64(0x2446688aaccef102)) { fprintf(stderr, "ROL64c 5 failed\n"); err++; } - if (ROL64c(L64, 6 ) != CONST64(0x488cd115599de204)) { fprintf(stderr, "ROL64c 6 failed\n"); err++; } - if (ROL64c(L64, 7 ) != CONST64(0x9119a22ab33bc408)) { fprintf(stderr, "ROL64c 7 failed\n"); err++; } - if (ROL64c(L64, 8 ) != CONST64(0x2233445566778811)) { fprintf(stderr, "ROL64c 8 failed\n"); err++; } - if (ROL64c(L64, 9 ) != CONST64(0x446688aaccef1022)) { fprintf(stderr, "ROL64c 9 failed\n"); err++; } - if (ROL64c(L64, 10) != CONST64(0x88cd115599de2044)) { fprintf(stderr, "ROL64c 10 failed\n"); err++; } - if (ROL64c(L64, 11) != CONST64(0x119a22ab33bc4089)) { fprintf(stderr, "ROL64c 11 failed\n"); err++; } - if (ROL64c(L64, 12) != CONST64(0x2334455667788112)) { fprintf(stderr, "ROL64c 12 failed\n"); err++; } - if (ROL64c(L64, 13) != CONST64(0x46688aaccef10224)) { fprintf(stderr, "ROL64c 13 failed\n"); err++; } - if (ROL64c(L64, 14) != CONST64(0x8cd115599de20448)) { fprintf(stderr, "ROL64c 14 failed\n"); err++; } - if (ROL64c(L64, 15) != CONST64(0x19a22ab33bc40891)) { fprintf(stderr, "ROL64c 15 failed\n"); err++; } - if (ROL64c(L64, 16) != CONST64(0x3344556677881122)) { fprintf(stderr, "ROL64c 16 failed\n"); err++; } - if (ROL64c(L64, 17) != CONST64(0x6688aaccef102244)) { fprintf(stderr, "ROL64c 17 failed\n"); err++; } - if (ROL64c(L64, 18) != CONST64(0xcd115599de204488)) { fprintf(stderr, "ROL64c 18 failed\n"); err++; } - if (ROL64c(L64, 19) != CONST64(0x9a22ab33bc408911)) { fprintf(stderr, "ROL64c 19 failed\n"); err++; } - if (ROL64c(L64, 20) != CONST64(0x3445566778811223)) { fprintf(stderr, "ROL64c 20 failed\n"); err++; } - if (ROL64c(L64, 21) != CONST64(0x688aaccef1022446)) { fprintf(stderr, "ROL64c 21 failed\n"); err++; } - if (ROL64c(L64, 22) != CONST64(0xd115599de204488c)) { fprintf(stderr, "ROL64c 22 failed\n"); err++; } - if (ROL64c(L64, 23) != CONST64(0xa22ab33bc4089119)) { fprintf(stderr, "ROL64c 23 failed\n"); err++; } - if (ROL64c(L64, 24) != CONST64(0x4455667788112233)) { fprintf(stderr, "ROL64c 24 failed\n"); err++; } - if (ROL64c(L64, 25) != CONST64(0x88aaccef10224466)) { fprintf(stderr, "ROL64c 25 failed\n"); err++; } - if (ROL64c(L64, 26) != CONST64(0x115599de204488cd)) { fprintf(stderr, "ROL64c 26 failed\n"); err++; } - if (ROL64c(L64, 27) != CONST64(0x22ab33bc4089119a)) { fprintf(stderr, "ROL64c 27 failed\n"); err++; } - if (ROL64c(L64, 28) != CONST64(0x4556677881122334)) { fprintf(stderr, "ROL64c 28 failed\n"); err++; } - if (ROL64c(L64, 29) != CONST64(0x8aaccef102244668)) { fprintf(stderr, "ROL64c 29 failed\n"); err++; } - if (ROL64c(L64, 30) != CONST64(0x15599de204488cd1)) { fprintf(stderr, "ROL64c 30 failed\n"); err++; } - if (ROL64c(L64, 31) != CONST64(0x2ab33bc4089119a2)) { fprintf(stderr, "ROL64c 31 failed\n"); err++; } - if (ROL64c(L64, 32) != CONST64(0x5566778811223344)) { fprintf(stderr, "ROL64c 32 failed\n"); err++; } - if (ROL64c(L64, 33) != CONST64(0xaaccef1022446688)) { fprintf(stderr, "ROL64c 33 failed\n"); err++; } - if (ROL64c(L64, 34) != CONST64(0x5599de204488cd11)) { fprintf(stderr, "ROL64c 34 failed\n"); err++; } - if (ROL64c(L64, 35) != CONST64(0xab33bc4089119a22)) { fprintf(stderr, "ROL64c 35 failed\n"); err++; } - if (ROL64c(L64, 36) != CONST64(0x5667788112233445)) { fprintf(stderr, "ROL64c 36 failed\n"); err++; } - if (ROL64c(L64, 37) != CONST64(0xaccef1022446688a)) { fprintf(stderr, "ROL64c 37 failed\n"); err++; } - if (ROL64c(L64, 38) != CONST64(0x599de204488cd115)) { fprintf(stderr, "ROL64c 38 failed\n"); err++; } - if (ROL64c(L64, 39) != CONST64(0xb33bc4089119a22a)) { fprintf(stderr, "ROL64c 39 failed\n"); err++; } - if (ROL64c(L64, 40) != CONST64(0x6677881122334455)) { fprintf(stderr, "ROL64c 40 failed\n"); err++; } - if (ROL64c(L64, 41) != CONST64(0xccef1022446688aa)) { fprintf(stderr, "ROL64c 41 failed\n"); err++; } - if (ROL64c(L64, 42) != CONST64(0x99de204488cd1155)) { fprintf(stderr, "ROL64c 42 failed\n"); err++; } - if (ROL64c(L64, 43) != CONST64(0x33bc4089119a22ab)) { fprintf(stderr, "ROL64c 43 failed\n"); err++; } - if (ROL64c(L64, 44) != CONST64(0x6778811223344556)) { fprintf(stderr, "ROL64c 44 failed\n"); err++; } - if (ROL64c(L64, 45) != CONST64(0xcef1022446688aac)) { fprintf(stderr, "ROL64c 45 failed\n"); err++; } - if (ROL64c(L64, 46) != CONST64(0x9de204488cd11559)) { fprintf(stderr, "ROL64c 46 failed\n"); err++; } - if (ROL64c(L64, 47) != CONST64(0x3bc4089119a22ab3)) { fprintf(stderr, "ROL64c 47 failed\n"); err++; } - if (ROL64c(L64, 48) != CONST64(0x7788112233445566)) { fprintf(stderr, "ROL64c 48 failed\n"); err++; } - if (ROL64c(L64, 49) != CONST64(0xef1022446688aacc)) { fprintf(stderr, "ROL64c 49 failed\n"); err++; } - if (ROL64c(L64, 50) != CONST64(0xde204488cd115599)) { fprintf(stderr, "ROL64c 50 failed\n"); err++; } - if (ROL64c(L64, 51) != CONST64(0xbc4089119a22ab33)) { fprintf(stderr, "ROL64c 51 failed\n"); err++; } - if (ROL64c(L64, 52) != CONST64(0x7881122334455667)) { fprintf(stderr, "ROL64c 52 failed\n"); err++; } - if (ROL64c(L64, 53) != CONST64(0xf1022446688aacce)) { fprintf(stderr, "ROL64c 53 failed\n"); err++; } - if (ROL64c(L64, 54) != CONST64(0xe204488cd115599d)) { fprintf(stderr, "ROL64c 54 failed\n"); err++; } - if (ROL64c(L64, 55) != CONST64(0xc4089119a22ab33b)) { fprintf(stderr, "ROL64c 55 failed\n"); err++; } - if (ROL64c(L64, 56) != CONST64(0x8811223344556677)) { fprintf(stderr, "ROL64c 56 failed\n"); err++; } - if (ROL64c(L64, 57) != CONST64(0x1022446688aaccef)) { fprintf(stderr, "ROL64c 57 failed\n"); err++; } - if (ROL64c(L64, 58) != CONST64(0x204488cd115599de)) { fprintf(stderr, "ROL64c 58 failed\n"); err++; } - if (ROL64c(L64, 59) != CONST64(0x4089119a22ab33bc)) { fprintf(stderr, "ROL64c 59 failed\n"); err++; } - if (ROL64c(L64, 60) != CONST64(0x8112233445566778)) { fprintf(stderr, "ROL64c 60 failed\n"); err++; } - if (ROL64c(L64, 61) != CONST64(0x022446688aaccef1)) { fprintf(stderr, "ROL64c 61 failed\n"); err++; } - if (ROL64c(L64, 62) != CONST64(0x04488cd115599de2)) { fprintf(stderr, "ROL64c 62 failed\n"); err++; } - if (ROL64c(L64, 63) != CONST64(0x089119a22ab33bc4)) { fprintf(stderr, "ROL64c 63 failed\n"); err++; } - - return err; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/rsa_test.c b/src/libtomcrypt/tests/rsa_test.c deleted file mode 100644 index 7024148754..0000000000 --- a/src/libtomcrypt/tests/rsa_test.c +++ /dev/null @@ -1,702 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -#if defined(LTC_MRSA) && defined(LTC_TEST_MPI) - -#define RSA_MSGSIZE 78 - -/* These are test keys [see file test.key] that I use to test my import/export against */ -static const unsigned char openssl_private_rsa[] = { - 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xcf, 0x9a, 0xde, 0x64, 0x8a, - 0xda, 0xc8, 0x33, 0x20, 0xa9, 0xd7, 0x83, 0x31, 0x19, 0x54, 0xb2, 0x9a, 0x85, 0xa7, 0xa1, 0xb7, - 0x75, 0x33, 0xb6, 0xa9, 0xac, 0x84, 0x24, 0xb3, 0xde, 0xdb, 0x7d, 0x85, 0x2d, 0x96, 0x65, 0xe5, - 0x3f, 0x72, 0x95, 0x24, 0x9f, 0x28, 0x68, 0xca, 0x4f, 0xdb, 0x44, 0x1c, 0x3e, 0x60, 0x12, 0x8a, - 0xdd, 0x26, 0xa5, 0xeb, 0xff, 0x0b, 0x5e, 0xd4, 0x88, 0x38, 0x49, 0x2a, 0x6e, 0x5b, 0xbf, 0x12, - 0x37, 0x47, 0xbd, 0x05, 0x6b, 0xbc, 0xdb, 0xf3, 0xee, 0xe4, 0x11, 0x8e, 0x41, 0x68, 0x7c, 0x61, - 0x13, 0xd7, 0x42, 0xc8, 0x80, 0xbe, 0x36, 0x8f, 0xdc, 0x08, 0x8b, 0x4f, 0xac, 0xa4, 0xe2, 0x76, - 0x0c, 0xc9, 0x63, 0x6c, 0x49, 0x58, 0x93, 0xed, 0xcc, 0xaa, 0xdc, 0x25, 0x3b, 0x0a, 0x60, 0x3f, - 0x8b, 0x54, 0x3a, 0xc3, 0x4d, 0x31, 0xe7, 0x94, 0xa4, 0x44, 0xfd, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x81, 0x00, 0xc8, 0x62, 0xb9, 0xea, 0xde, 0x44, 0x53, 0x1d, 0x56, 0x97, 0xd9, 0x97, - 0x9e, 0x1a, 0xcf, 0x30, 0x1e, 0x0a, 0x88, 0x45, 0x86, 0x29, 0x30, 0xa3, 0x4d, 0x9f, 0x61, 0x65, - 0x73, 0xe0, 0xd6, 0x87, 0x8f, 0xb6, 0xf3, 0x06, 0xa3, 0x82, 0xdc, 0x7c, 0xac, 0xfe, 0x9b, 0x28, - 0x9a, 0xae, 0xfd, 0xfb, 0xfe, 0x2f, 0x0e, 0xd8, 0x97, 0x04, 0xe3, 0xbb, 0x1f, 0xd1, 0xec, 0x0d, - 0xba, 0xa3, 0x49, 0x7f, 0x47, 0xac, 0x8a, 0x44, 0x04, 0x7e, 0x86, 0xb7, 0x39, 0x42, 0x3f, 0xad, - 0x1e, 0xb7, 0x0e, 0xa5, 0x51, 0xf4, 0x40, 0x63, 0x1e, 0xfd, 0xbd, 0xea, 0x9f, 0x41, 0x9f, 0xa8, - 0x90, 0x1d, 0x6f, 0x0a, 0x5a, 0x95, 0x13, 0x11, 0x0d, 0x80, 0xaf, 0x5f, 0x64, 0x98, 0x8a, 0x2c, - 0x78, 0x68, 0x65, 0xb0, 0x2b, 0x8b, 0xa2, 0x53, 0x87, 0xca, 0xf1, 0x64, 0x04, 0xab, 0xf2, 0x7b, - 0xdb, 0x83, 0xc8, 0x81, 0x02, 0x41, 0x00, 0xf7, 0xbe, 0x5e, 0x23, 0xc3, 0x32, 0x3f, 0xbf, 0x8b, - 0x8e, 0x3a, 0xee, 0xfc, 0xfc, 0xcb, 0xe5, 0xf7, 0xf1, 0x0b, 0xbc, 0x42, 0x82, 0xae, 0xd5, 0x7a, - 0x3e, 0xca, 0xf7, 0xd5, 0x69, 0x3f, 0x64, 0x25, 0xa2, 0x1f, 0xb7, 0x75, 0x75, 0x05, 0x92, 0x42, - 0xeb, 0xb8, 0xf1, 0xf3, 0x0a, 0x05, 0xe3, 0x94, 0xd1, 0x55, 0x78, 0x35, 0xa0, 0x36, 0xa0, 0x9b, - 0x7c, 0x92, 0x84, 0x6c, 0xdd, 0xdc, 0x4d, 0x02, 0x41, 0x00, 0xd6, 0x86, 0x0e, 0x85, 0x42, 0x0b, - 0x04, 0x08, 0x84, 0x21, 0x60, 0xf0, 0x0e, 0x0d, 0x88, 0xfd, 0x1e, 0x36, 0x10, 0x65, 0x4f, 0x1e, - 0x53, 0xb4, 0x08, 0x72, 0x80, 0x5c, 0x3f, 0x59, 0x66, 0x17, 0xe6, 0x98, 0xf2, 0xe9, 0x6c, 0x7a, - 0x06, 0x4c, 0xac, 0x76, 0x3d, 0xed, 0x8c, 0xa1, 0xce, 0xad, 0x1b, 0xbd, 0xb4, 0x7d, 0x28, 0xbc, - 0xe3, 0x0e, 0x38, 0x8d, 0x99, 0xd8, 0x05, 0xb5, 0xa3, 0x71, 0x02, 0x40, 0x6d, 0xeb, 0xc3, 0x2d, - 0x2e, 0xf0, 0x5e, 0xa4, 0x88, 0x31, 0x05, 0x29, 0x00, 0x8a, 0xd1, 0x95, 0x29, 0x9b, 0x83, 0xcf, - 0x75, 0xdb, 0x31, 0xe3, 0x7a, 0x27, 0xde, 0x3a, 0x74, 0x30, 0x0c, 0x76, 0x4c, 0xd4, 0x50, 0x2a, - 0x40, 0x2d, 0x39, 0xd9, 0x99, 0x63, 0xa9, 0x5d, 0x80, 0xae, 0x53, 0xca, 0x94, 0x3f, 0x05, 0x23, - 0x1e, 0xf8, 0x05, 0x04, 0xe1, 0xb8, 0x35, 0xf2, 0x17, 0xb3, 0xa0, 0x89, 0x02, 0x41, 0x00, 0xab, - 0x90, 0x88, 0xfa, 0x60, 0x08, 0x29, 0x50, 0x9a, 0x43, 0x8b, 0xa0, 0x50, 0xcc, 0xd8, 0x5a, 0xfe, - 0x97, 0x64, 0x63, 0x71, 0x74, 0x22, 0xa3, 0x20, 0x02, 0x5a, 0xcf, 0xeb, 0xc6, 0x16, 0x95, 0x54, - 0xd1, 0xcb, 0xab, 0x8d, 0x1a, 0xc6, 0x00, 0xfa, 0x08, 0x92, 0x9c, 0x71, 0xd5, 0x52, 0x52, 0x35, - 0x96, 0x71, 0x4b, 0x8b, 0x92, 0x0c, 0xd0, 0xe9, 0xbf, 0xad, 0x63, 0x0b, 0xa5, 0xe9, 0xb1, 0x02, - 0x41, 0x00, 0xdc, 0xcc, 0x27, 0xc8, 0xe4, 0xdc, 0x62, 0x48, 0xd5, 0x9b, 0xaf, 0xf5, 0xab, 0x60, - 0xf6, 0x21, 0xfd, 0x53, 0xe2, 0xb7, 0x5d, 0x09, 0xc9, 0x1a, 0xa1, 0x04, 0xa9, 0xfc, 0x61, 0x2c, - 0x5d, 0x04, 0x58, 0x3a, 0x5a, 0x39, 0xf1, 0x4a, 0x21, 0x56, 0x67, 0xfd, 0xcc, 0x20, 0xa3, 0x8f, - 0x78, 0x18, 0x5a, 0x79, 0x3d, 0x2e, 0x8e, 0x7e, 0x86, 0x0a, 0xe6, 0xa8, 0x33, 0xc1, 0x04, 0x17, - 0x4a, 0x9f, }; - -static const unsigned char x509_public_rsa[] = - "MIICdTCCAd4CCQCYjCwz0l9JpjANBgkqhkiG9w0BAQsFADB+MQswCQYDVQQGEwJD\ - WjEPMA0GA1UECAwGTW9yYXZhMQ0wCwYDVQQHDARCcm5vMRAwDgYDVQQKDAdMVEMg\ - THRkMQ8wDQYDVQQLDAZDcnlwdG8xEjAQBgNVBAMMCVRlc3QgQ2VydDEYMBYGCSqG\ - SIb3DQEJARYJdGVzdEBjZXJ0MCAXDTE3MDMwOTIzNDMzOVoYDzIyOTAxMjIyMjM0\ - MzM5WjB+MQswCQYDVQQGEwJDWjEPMA0GA1UECAwGTW9yYXZhMQ0wCwYDVQQHDARC\ - cm5vMRAwDgYDVQQKDAdMVEMgTHRkMQ8wDQYDVQQLDAZDcnlwdG8xEjAQBgNVBAMM\ - CVRlc3QgQ2VydDEYMBYGCSqGSIb3DQEJARYJdGVzdEBjZXJ0MIGfMA0GCSqGSIb3\ - DQEBAQUAA4GNADCBiQKBgQDPmt5kitrIMyCp14MxGVSymoWnobd1M7aprIQks97b\ - fYUtlmXlP3KVJJ8oaMpP20QcPmASit0mpev/C17UiDhJKm5bvxI3R70Fa7zb8+7k\ - EY5BaHxhE9dCyIC+No/cCItPrKTidgzJY2xJWJPtzKrcJTsKYD+LVDrDTTHnlKRE\ - /QIDAQABMA0GCSqGSIb3DQEBCwUAA4GBAApwWqupmmLGHeKOLFLcthQpAXXYep6T\ - 3S3e8X7fIG6TGhfvn5DHn+/V/C4184oOCwImI+VYRokdXdQ1AMGfVUomHJxsFPia\ - bv5Aw3hiKsIG3jigKHwmMScgkl3yn+8hLkx6thNbqQoa6Yyo20RqaEFBwlZ5G8lF\ - rZsdeO84SeCH"; - -static const unsigned char pkcs8_private_rsa[] = { - 0x30, 0x82, 0x02, 0x78, 0x02, 0x01, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, - 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x02, 0x62, 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, - 0x00, 0x02, 0x81, 0x81, 0x00, 0xcf, 0x9a, 0xde, 0x64, 0x8a, 0xda, 0xc8, 0x33, 0x20, 0xa9, 0xd7, - 0x83, 0x31, 0x19, 0x54, 0xb2, 0x9a, 0x85, 0xa7, 0xa1, 0xb7, 0x75, 0x33, 0xb6, 0xa9, 0xac, 0x84, - 0x24, 0xb3, 0xde, 0xdb, 0x7d, 0x85, 0x2d, 0x96, 0x65, 0xe5, 0x3f, 0x72, 0x95, 0x24, 0x9f, 0x28, - 0x68, 0xca, 0x4f, 0xdb, 0x44, 0x1c, 0x3e, 0x60, 0x12, 0x8a, 0xdd, 0x26, 0xa5, 0xeb, 0xff, 0x0b, - 0x5e, 0xd4, 0x88, 0x38, 0x49, 0x2a, 0x6e, 0x5b, 0xbf, 0x12, 0x37, 0x47, 0xbd, 0x05, 0x6b, 0xbc, - 0xdb, 0xf3, 0xee, 0xe4, 0x11, 0x8e, 0x41, 0x68, 0x7c, 0x61, 0x13, 0xd7, 0x42, 0xc8, 0x80, 0xbe, - 0x36, 0x8f, 0xdc, 0x08, 0x8b, 0x4f, 0xac, 0xa4, 0xe2, 0x76, 0x0c, 0xc9, 0x63, 0x6c, 0x49, 0x58, - 0x93, 0xed, 0xcc, 0xaa, 0xdc, 0x25, 0x3b, 0x0a, 0x60, 0x3f, 0x8b, 0x54, 0x3a, 0xc3, 0x4d, 0x31, - 0xe7, 0x94, 0xa4, 0x44, 0xfd, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, 0x81, 0x81, 0x00, 0xc8, 0x62, - 0xb9, 0xea, 0xde, 0x44, 0x53, 0x1d, 0x56, 0x97, 0xd9, 0x97, 0x9e, 0x1a, 0xcf, 0x30, 0x1e, 0x0a, - 0x88, 0x45, 0x86, 0x29, 0x30, 0xa3, 0x4d, 0x9f, 0x61, 0x65, 0x73, 0xe0, 0xd6, 0x87, 0x8f, 0xb6, - 0xf3, 0x06, 0xa3, 0x82, 0xdc, 0x7c, 0xac, 0xfe, 0x9b, 0x28, 0x9a, 0xae, 0xfd, 0xfb, 0xfe, 0x2f, - 0x0e, 0xd8, 0x97, 0x04, 0xe3, 0xbb, 0x1f, 0xd1, 0xec, 0x0d, 0xba, 0xa3, 0x49, 0x7f, 0x47, 0xac, - 0x8a, 0x44, 0x04, 0x7e, 0x86, 0xb7, 0x39, 0x42, 0x3f, 0xad, 0x1e, 0xb7, 0x0e, 0xa5, 0x51, 0xf4, - 0x40, 0x63, 0x1e, 0xfd, 0xbd, 0xea, 0x9f, 0x41, 0x9f, 0xa8, 0x90, 0x1d, 0x6f, 0x0a, 0x5a, 0x95, - 0x13, 0x11, 0x0d, 0x80, 0xaf, 0x5f, 0x64, 0x98, 0x8a, 0x2c, 0x78, 0x68, 0x65, 0xb0, 0x2b, 0x8b, - 0xa2, 0x53, 0x87, 0xca, 0xf1, 0x64, 0x04, 0xab, 0xf2, 0x7b, 0xdb, 0x83, 0xc8, 0x81, 0x02, 0x41, - 0x00, 0xf7, 0xbe, 0x5e, 0x23, 0xc3, 0x32, 0x3f, 0xbf, 0x8b, 0x8e, 0x3a, 0xee, 0xfc, 0xfc, 0xcb, - 0xe5, 0xf7, 0xf1, 0x0b, 0xbc, 0x42, 0x82, 0xae, 0xd5, 0x7a, 0x3e, 0xca, 0xf7, 0xd5, 0x69, 0x3f, - 0x64, 0x25, 0xa2, 0x1f, 0xb7, 0x75, 0x75, 0x05, 0x92, 0x42, 0xeb, 0xb8, 0xf1, 0xf3, 0x0a, 0x05, - 0xe3, 0x94, 0xd1, 0x55, 0x78, 0x35, 0xa0, 0x36, 0xa0, 0x9b, 0x7c, 0x92, 0x84, 0x6c, 0xdd, 0xdc, - 0x4d, 0x02, 0x41, 0x00, 0xd6, 0x86, 0x0e, 0x85, 0x42, 0x0b, 0x04, 0x08, 0x84, 0x21, 0x60, 0xf0, - 0x0e, 0x0d, 0x88, 0xfd, 0x1e, 0x36, 0x10, 0x65, 0x4f, 0x1e, 0x53, 0xb4, 0x08, 0x72, 0x80, 0x5c, - 0x3f, 0x59, 0x66, 0x17, 0xe6, 0x98, 0xf2, 0xe9, 0x6c, 0x7a, 0x06, 0x4c, 0xac, 0x76, 0x3d, 0xed, - 0x8c, 0xa1, 0xce, 0xad, 0x1b, 0xbd, 0xb4, 0x7d, 0x28, 0xbc, 0xe3, 0x0e, 0x38, 0x8d, 0x99, 0xd8, - 0x05, 0xb5, 0xa3, 0x71, 0x02, 0x40, 0x6d, 0xeb, 0xc3, 0x2d, 0x2e, 0xf0, 0x5e, 0xa4, 0x88, 0x31, - 0x05, 0x29, 0x00, 0x8a, 0xd1, 0x95, 0x29, 0x9b, 0x83, 0xcf, 0x75, 0xdb, 0x31, 0xe3, 0x7a, 0x27, - 0xde, 0x3a, 0x74, 0x30, 0x0c, 0x76, 0x4c, 0xd4, 0x50, 0x2a, 0x40, 0x2d, 0x39, 0xd9, 0x99, 0x63, - 0xa9, 0x5d, 0x80, 0xae, 0x53, 0xca, 0x94, 0x3f, 0x05, 0x23, 0x1e, 0xf8, 0x05, 0x04, 0xe1, 0xb8, - 0x35, 0xf2, 0x17, 0xb3, 0xa0, 0x89, 0x02, 0x41, 0x00, 0xab, 0x90, 0x88, 0xfa, 0x60, 0x08, 0x29, - 0x50, 0x9a, 0x43, 0x8b, 0xa0, 0x50, 0xcc, 0xd8, 0x5a, 0xfe, 0x97, 0x64, 0x63, 0x71, 0x74, 0x22, - 0xa3, 0x20, 0x02, 0x5a, 0xcf, 0xeb, 0xc6, 0x16, 0x95, 0x54, 0xd1, 0xcb, 0xab, 0x8d, 0x1a, 0xc6, - 0x00, 0xfa, 0x08, 0x92, 0x9c, 0x71, 0xd5, 0x52, 0x52, 0x35, 0x96, 0x71, 0x4b, 0x8b, 0x92, 0x0c, - 0xd0, 0xe9, 0xbf, 0xad, 0x63, 0x0b, 0xa5, 0xe9, 0xb1, 0x02, 0x41, 0x00, 0xdc, 0xcc, 0x27, 0xc8, - 0xe4, 0xdc, 0x62, 0x48, 0xd5, 0x9b, 0xaf, 0xf5, 0xab, 0x60, 0xf6, 0x21, 0xfd, 0x53, 0xe2, 0xb7, - 0x5d, 0x09, 0xc9, 0x1a, 0xa1, 0x04, 0xa9, 0xfc, 0x61, 0x2c, 0x5d, 0x04, 0x58, 0x3a, 0x5a, 0x39, - 0xf1, 0x4a, 0x21, 0x56, 0x67, 0xfd, 0xcc, 0x20, 0xa3, 0x8f, 0x78, 0x18, 0x5a, 0x79, 0x3d, 0x2e, - 0x8e, 0x7e, 0x86, 0x0a, 0xe6, 0xa8, 0x33, 0xc1, 0x04, 0x17, 0x4a, 0x9f }; - -/* private key - hexadecimal */ -enum { - pk_d , - pk_dP, - pk_dQ, - pk_e , - pk_N , - pk_p , - pk_q , - pk_qP, -}; -static const char *hex_key[] = { - "C862B9EADE44531D5697D9979E1ACF301E0A8845862930A34D9F616573E0D6878FB6F306A382DC7CACFE9B289AAEFDFBFE2F0ED89704E3BB1FD1EC0DBAA3497F47AC8A44047E86B739423FAD1EB70EA551F440631EFDBDEA9F419FA8901D6F0A5A9513110D80AF5F64988A2C786865B02B8BA25387CAF16404ABF27BDB83C881", - "6DEBC32D2EF05EA488310529008AD195299B83CF75DB31E37A27DE3A74300C764CD4502A402D39D99963A95D80AE53CA943F05231EF80504E1B835F217B3A089", - "AB9088FA600829509A438BA050CCD85AFE976463717422A320025ACFEBC6169554D1CBAB8D1AC600FA08929C71D552523596714B8B920CD0E9BFAD630BA5E9B1", - "010001", - "CF9ADE648ADAC83320A9D783311954B29A85A7A1B77533B6A9AC8424B3DEDB7D852D9665E53F7295249F2868CA4FDB441C3E60128ADD26A5EBFF0B5ED48838492A6E5BBF123747BD056BBCDBF3EEE4118E41687C6113D742C880BE368FDC088B4FACA4E2760CC9636C495893EDCCAADC253B0A603F8B543AC34D31E794A444FD", - "F7BE5E23C3323FBF8B8E3AEEFCFCCBE5F7F10BBC4282AED57A3ECAF7D5693F6425A21FB77575059242EBB8F1F30A05E394D1557835A036A09B7C92846CDDDC4D", - "D6860E85420B0408842160F00E0D88FD1E3610654F1E53B40872805C3F596617E698F2E96C7A064CAC763DED8CA1CEAD1BBDB47D28BCE30E388D99D805B5A371", - "DCCC27C8E4DC6248D59BAFF5AB60F621FD53E2B75D09C91AA104A9FC612C5D04583A5A39F14A215667FDCC20A38F78185A793D2E8E7E860AE6A833C104174A9F" }; - -/*** openssl public RSA key in DER format */ -static const unsigned char openssl_public_rsa[] = { - 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, - 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xcf, 0x9a, 0xde, - 0x64, 0x8a, 0xda, 0xc8, 0x33, 0x20, 0xa9, 0xd7, 0x83, 0x31, 0x19, 0x54, 0xb2, 0x9a, 0x85, 0xa7, - 0xa1, 0xb7, 0x75, 0x33, 0xb6, 0xa9, 0xac, 0x84, 0x24, 0xb3, 0xde, 0xdb, 0x7d, 0x85, 0x2d, 0x96, - 0x65, 0xe5, 0x3f, 0x72, 0x95, 0x24, 0x9f, 0x28, 0x68, 0xca, 0x4f, 0xdb, 0x44, 0x1c, 0x3e, 0x60, - 0x12, 0x8a, 0xdd, 0x26, 0xa5, 0xeb, 0xff, 0x0b, 0x5e, 0xd4, 0x88, 0x38, 0x49, 0x2a, 0x6e, 0x5b, - 0xbf, 0x12, 0x37, 0x47, 0xbd, 0x05, 0x6b, 0xbc, 0xdb, 0xf3, 0xee, 0xe4, 0x11, 0x8e, 0x41, 0x68, - 0x7c, 0x61, 0x13, 0xd7, 0x42, 0xc8, 0x80, 0xbe, 0x36, 0x8f, 0xdc, 0x08, 0x8b, 0x4f, 0xac, 0xa4, - 0xe2, 0x76, 0x0c, 0xc9, 0x63, 0x6c, 0x49, 0x58, 0x93, 0xed, 0xcc, 0xaa, 0xdc, 0x25, 0x3b, 0x0a, - 0x60, 0x3f, 0x8b, 0x54, 0x3a, 0xc3, 0x4d, 0x31, 0xe7, 0x94, 0xa4, 0x44, 0xfd, 0x02, 0x03, 0x01, - 0x00, 0x01, }; - -/* same key but with extra headers stripped */ -static const unsigned char openssl_public_rsa_stripped[] = { - 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xcf, 0x9a, 0xde, - 0x64, 0x8a, 0xda, 0xc8, 0x33, 0x20, 0xa9, 0xd7, 0x83, 0x31, 0x19, 0x54, 0xb2, 0x9a, 0x85, 0xa7, - 0xa1, 0xb7, 0x75, 0x33, 0xb6, 0xa9, 0xac, 0x84, 0x24, 0xb3, 0xde, 0xdb, 0x7d, 0x85, 0x2d, 0x96, - 0x65, 0xe5, 0x3f, 0x72, 0x95, 0x24, 0x9f, 0x28, 0x68, 0xca, 0x4f, 0xdb, 0x44, 0x1c, 0x3e, 0x60, - 0x12, 0x8a, 0xdd, 0x26, 0xa5, 0xeb, 0xff, 0x0b, 0x5e, 0xd4, 0x88, 0x38, 0x49, 0x2a, 0x6e, 0x5b, - 0xbf, 0x12, 0x37, 0x47, 0xbd, 0x05, 0x6b, 0xbc, 0xdb, 0xf3, 0xee, 0xe4, 0x11, 0x8e, 0x41, 0x68, - 0x7c, 0x61, 0x13, 0xd7, 0x42, 0xc8, 0x80, 0xbe, 0x36, 0x8f, 0xdc, 0x08, 0x8b, 0x4f, 0xac, 0xa4, - 0xe2, 0x76, 0x0c, 0xc9, 0x63, 0x6c, 0x49, 0x58, 0x93, 0xed, 0xcc, 0xaa, 0xdc, 0x25, 0x3b, 0x0a, - 0x60, 0x3f, 0x8b, 0x54, 0x3a, 0xc3, 0x4d, 0x31, 0xe7, 0x94, 0xa4, 0x44, 0xfd, 0x02, 0x03, 0x01, - 0x00, 0x01, }; - - -/* generated with the private key above as: - echo -n 'test' | openssl rsautl -sign -inkey rsa_private.pem -pkcs -hexdump - */ -static const unsigned char openssl_rsautl_pkcs[] = { - 0x24, 0xef, 0x54, 0xea, 0x1a, 0x12, 0x0c, 0xf4, 0x04, 0x0c, 0x48, 0xc8, 0xe8, 0x17, 0xd2, 0x6f, - 0xc3, 0x41, 0xb3, 0x97, 0x5c, 0xbc, 0xa3, 0x2d, 0x21, 0x00, 0x10, 0x0e, 0xbb, 0xf7, 0x30, 0x21, - 0x7e, 0x12, 0xd2, 0xdf, 0x26, 0x28, 0xd8, 0x0f, 0x6d, 0x4d, 0xc8, 0x4d, 0xa8, 0x78, 0xe7, 0x03, - 0xee, 0xbc, 0x68, 0xba, 0x98, 0xea, 0xe9, 0xb6, 0x06, 0x8d, 0x85, 0x5b, 0xdb, 0xa6, 0x49, 0x86, - 0x6f, 0xc7, 0x3d, 0xe0, 0x53, 0x83, 0xe0, 0xea, 0xb1, 0x08, 0x6a, 0x7b, 0xbd, 0xeb, 0xb5, 0x4a, - 0xdd, 0xbc, 0x64, 0x97, 0x8c, 0x17, 0x20, 0xa3, 0x5c, 0xd4, 0xb8, 0x87, 0x43, 0xc5, 0x13, 0xad, - 0x41, 0x6e, 0x45, 0x41, 0x32, 0xd4, 0x09, 0x12, 0x7f, 0xdc, 0x59, 0x1f, 0x28, 0x3f, 0x1e, 0xbc, - 0xef, 0x57, 0x23, 0x4b, 0x3a, 0xa3, 0x24, 0x91, 0x4d, 0xfb, 0xb2, 0xd4, 0xe7, 0x5e, 0x41, 0x7e, -}; - -extern const unsigned char _der_tests_cacert_root_cert[]; -extern const unsigned long _der_tests_cacert_root_cert_size; - -static int rsa_compat_test(void) -{ - rsa_key key, pubkey; - int stat, i; - unsigned char buf[1024], key_parts[8][128]; - unsigned long len, key_lens[8]; - - /* try reading the key */ - DO(rsa_import(openssl_private_rsa, sizeof(openssl_private_rsa), &key)); - DO(rsa_import(openssl_public_rsa, sizeof(openssl_public_rsa), &pubkey)); - - /* sign-verify a message with PKCS #1 v1.5 no ASN.1 */ - len = sizeof(buf); - DO(rsa_sign_hash_ex((unsigned char*)"test", 4, buf, &len, LTC_PKCS_1_V1_5_NA1, NULL, 0, 0, 0, &key)); - if (len != sizeof(openssl_rsautl_pkcs) || memcmp(buf, openssl_rsautl_pkcs, len)) { - fprintf(stderr, "RSA rsa_sign_hash_ex + LTC_PKCS_1_V1_5_NA1 failed\n"); - return 1; - } - stat = 0; - DO(rsa_verify_hash_ex(openssl_rsautl_pkcs, sizeof(openssl_rsautl_pkcs), (unsigned char*)"test", 4, LTC_PKCS_1_V1_5_NA1, 0, 0, &stat, &pubkey)); - if (stat != 1) { - fprintf(stderr, "RSA rsa_verify_hash_ex + LTC_PKCS_1_V1_5_NA1 failed\n"); - return 1; - } - rsa_free(&pubkey); - - /* now try to export private/public and compare */ - len = sizeof(buf); - DO(rsa_export(buf, &len, PK_PRIVATE, &key)); - if (compare_testvector(buf, len, openssl_private_rsa, sizeof(openssl_private_rsa), "RSA private export (from OpenSSL)", 0)) { - return 1; - } - - len = sizeof(buf); - DO(rsa_export(buf, &len, PK_PUBLIC, &key)); - if (compare_testvector(buf, len, openssl_public_rsa_stripped, sizeof(openssl_public_rsa_stripped), "RSA public export (from OpenSSL private key)", 0)) { - return 1; - } - rsa_free(&key); - - /* try reading the public key */ - DO(rsa_import(openssl_public_rsa_stripped, sizeof(openssl_public_rsa_stripped), &key)); - len = sizeof(buf); - DO(rsa_export(buf, &len, PK_PUBLIC, &key)); - if (compare_testvector(buf, len, openssl_public_rsa_stripped, sizeof(openssl_public_rsa_stripped), "RSA public export (from stripped OpenSSL)", 0)) { - return 1; - } - rsa_free(&key); - - /* try reading the public key */ - DO(rsa_import(openssl_public_rsa, sizeof(openssl_public_rsa), &key)); - len = sizeof(buf); - DO(rsa_export(buf, &len, PK_PUBLIC, &key)); - if (compare_testvector(buf, len, openssl_public_rsa_stripped, sizeof(openssl_public_rsa_stripped), "RSA public export (from OpenSSL)", 0)) { - return 1; - } - rsa_free(&key); - - /* try import private key in pkcs8 format */ - DO(rsa_import_pkcs8(pkcs8_private_rsa, sizeof(pkcs8_private_rsa), NULL, 0, &key)); - len = sizeof(buf); - DO(rsa_export(buf, &len, PK_PRIVATE, &key)); - if (compare_testvector(buf, len, openssl_private_rsa, sizeof(openssl_private_rsa), "RSA private export (from PKCS#8)", 0)) { - return 1; - } - rsa_free(&key); - - /* convert raw hexadecimal numbers to binary */ - for (i = 0; i < 8; ++i) { - key_lens[i] = sizeof(key_parts[i]); - DO(radix_to_bin(hex_key[i], 16, key_parts[i], &key_lens[i])); - } - /* try import private key from converted raw hexadecimal numbers */ - DO(rsa_set_key(key_parts[pk_N], key_lens[pk_N], key_parts[pk_e], key_lens[pk_e], key_parts[pk_d], key_lens[pk_d], &key)); - DO(rsa_set_factors(key_parts[pk_p], key_lens[pk_p], key_parts[pk_q], key_lens[pk_q], &key)); - DO(rsa_set_crt_params(key_parts[pk_dP], key_lens[pk_dP], key_parts[pk_dQ], key_lens[pk_dQ], key_parts[pk_qP], key_lens[pk_qP], &key)); - len = sizeof(buf); - DO(rsa_export(buf, &len, PK_PRIVATE, &key)); - if (compare_testvector(buf, len, openssl_private_rsa, sizeof(openssl_private_rsa), "RSA private export (from hex)", 0)) { - return 1; - } - rsa_free(&key); - - /* try import public key from converted raw hexadecimal numbers */ - DO(rsa_set_key(key_parts[pk_N], key_lens[pk_N], key_parts[pk_e], key_lens[pk_e], NULL, 0, &key)); - len = sizeof(buf); - DO(rsa_export(buf, &len, PK_PUBLIC, &key)); - if (compare_testvector(buf, len, openssl_public_rsa_stripped, sizeof(openssl_public_rsa_stripped), "RSA public export (from hex)", 0)) { - return 1; - } - rsa_free(&key); - - /* try export in SubjectPublicKeyInfo format of the public key */ - DO(rsa_import(openssl_public_rsa, sizeof(openssl_public_rsa), &key)); - len = sizeof(buf); - DO(rsa_export(buf, &len, PK_PUBLIC | PK_STD, &key)); - if (len != sizeof(openssl_public_rsa) || memcmp(buf, openssl_public_rsa, len)) { - fprintf(stderr, "RSA(public) SSL public X.509 export failed to match OpenSSL output\n"); - print_hex("should", openssl_public_rsa, sizeof(openssl_public_rsa)); - print_hex("is", buf, len); - return 1; - } - rsa_free(&key); - - return 0; -} - -static int _rsa_key_cmp(const int should_type, const rsa_key *should, const rsa_key *is) -{ - if(should_type != is->type) - return CRYPT_ERROR; - if(should_type == PK_PRIVATE) { - if(mp_cmp(should->q, is->q) != LTC_MP_EQ) - return CRYPT_ERROR; - if(mp_cmp(should->p, is->p) != LTC_MP_EQ) - return CRYPT_ERROR; - if(mp_cmp(should->qP, is->qP) != LTC_MP_EQ) - return CRYPT_ERROR; - if(mp_cmp(should->dP, is->dP) != LTC_MP_EQ) - return CRYPT_ERROR; - if(mp_cmp(should->dQ, is->dQ) != LTC_MP_EQ) - return CRYPT_ERROR; - if(mp_cmp(should->d, is->d) != LTC_MP_EQ) - return CRYPT_ERROR; - } - if(mp_cmp(should->N, is->N) != LTC_MP_EQ) - return CRYPT_ERROR; - if(mp_cmp(should->e, is->e) != LTC_MP_EQ) - return CRYPT_ERROR; - return CRYPT_OK; -} - -static int _rsa_issue_301(int prng_idx) -{ - rsa_key key, key_in; - unsigned char buf[4096]; - unsigned long len; - - DO(rsa_make_key(&yarrow_prng, prng_idx, sizeof(buf)/8, 65537, &key)); - - len = sizeof(buf); - DO(rsa_export(buf, &len, PK_PRIVATE, &key)); - DO(rsa_import(buf, len, &key_in)); - - DO(_rsa_key_cmp(PK_PRIVATE, &key, &key_in)); - rsa_free(&key_in); - - len = sizeof(buf); - DO(rsa_export(buf, &len, PK_PUBLIC, &key)); - DO(rsa_import(buf, len, &key_in)); - - DO(_rsa_key_cmp(PK_PUBLIC, &key, &key_in)); - rsa_free(&key_in); - - len = sizeof(buf); - DO(rsa_export(buf, &len, PK_PUBLIC | PK_STD, &key)); - DO(rsa_import(buf, len, &key_in)); - - DO(_rsa_key_cmp(PK_PUBLIC, &key, &key_in)); - rsa_free(&key_in); - - rsa_free(&key); - return CRYPT_OK; -} - -int rsa_test(void) -{ - unsigned char in[1024], out[1024], tmp[3072]; - rsa_key key, privKey, pubKey; - int hash_idx, prng_idx, stat, stat2, i, err; - unsigned long rsa_msgsize, len, len2, len3, cnt, cnt2; - static unsigned char lparam[] = { 0x01, 0x02, 0x03, 0x04 }; - void* dP; - unsigned char* p; - unsigned char* p2; - unsigned char* p3; - - if (rsa_compat_test() != 0) { - return 1; - } - - hash_idx = find_hash("sha1"); - prng_idx = find_prng("yarrow"); - if (hash_idx == -1 || prng_idx == -1) { - fprintf(stderr, "rsa_test requires LTC_SHA1 and yarrow"); - return 1; - } - - DO(_rsa_issue_301(prng_idx)); - - /* make 10 random key */ - for (cnt = 0; cnt < 10; cnt++) { - DO(rsa_make_key(&yarrow_prng, prng_idx, 1024/8, 65537, &key)); - if (mp_count_bits(key.N) != 1024) { - fprintf(stderr, "rsa_1024 key modulus has %d bits\n", mp_count_bits(key.N)); - -len = mp_unsigned_bin_size(key.N); -mp_to_unsigned_bin(key.N, tmp); -print_hex("N", tmp, len); - -len = mp_unsigned_bin_size(key.p); -mp_to_unsigned_bin(key.p, tmp); -print_hex("p", tmp, len); - -len = mp_unsigned_bin_size(key.q); -mp_to_unsigned_bin(key.q, tmp); -print_hex("q", tmp, len); - - return 1; - } - if (cnt != 9) { - rsa_free(&key); - } - } - - /* encrypt the key (without lparam) */ - for (cnt = 0; cnt < 4; cnt++) { - for (rsa_msgsize = 1; rsa_msgsize <= 86; rsa_msgsize++) { - /* make a random key/msg */ - yarrow_read(in, rsa_msgsize, &yarrow_prng); - - len = sizeof(out); - len2 = rsa_msgsize; - - DO(rsa_encrypt_key(in, rsa_msgsize, out, &len, NULL, 0, &yarrow_prng, prng_idx, hash_idx, &key)); - /* change a byte */ - out[8] ^= 1; - DOX((err = rsa_decrypt_key(out, len, tmp, &len2, NULL, 0, hash_idx, &stat2, &key)) - == CRYPT_INVALID_PACKET ? CRYPT_OK:err, "should fail"); - /* change a byte back */ - out[8] ^= 1; - if (len2 != rsa_msgsize) { - fprintf(stderr, "\n%i:rsa_decrypt_key mismatch len %lu (first decrypt)", __LINE__, len2); - return 1; - } - - len2 = rsa_msgsize; - DO(rsa_decrypt_key(out, len, tmp, &len2, NULL, 0, hash_idx, &stat, &key)); - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "rsa_decrypt_key (without lparam) failed (rsa_msgsize = %lu)", rsa_msgsize); - fprintf(stderr, "\n stat: %i stat2: %i", stat, stat2); - return 1; - } - if (len2 != rsa_msgsize || memcmp(tmp, in, rsa_msgsize)) { - fprintf(stderr, "\nrsa_decrypt_key mismatch, len %lu (second decrypt)\n", len2); - print_hex("Original", in, rsa_msgsize); - print_hex("Output", tmp, len2); - return 1; - } - } - } - - /* encrypt the key (with lparam) */ - for (rsa_msgsize = 1; rsa_msgsize <= 86; rsa_msgsize++) { - len = sizeof(out); - len2 = rsa_msgsize; - DO(rsa_encrypt_key(in, rsa_msgsize, out, &len, lparam, sizeof(lparam), &yarrow_prng, prng_idx, hash_idx, &key)); - /* change a byte */ - out[8] ^= 1; - DOX((err = rsa_decrypt_key(out, len, tmp, &len2, lparam, sizeof(lparam), hash_idx, &stat2, &key)) - == CRYPT_INVALID_PACKET ? CRYPT_OK:err, "should fail"); - if (len2 != rsa_msgsize) { - fprintf(stderr, "\n%i:rsa_decrypt_key mismatch len %lu (first decrypt)", __LINE__, len2); - return 1; - } - /* change a byte back */ - out[8] ^= 1; - - len2 = rsa_msgsize; - DO(rsa_decrypt_key(out, len, tmp, &len2, lparam, sizeof(lparam), hash_idx, &stat, &key)); - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "rsa_decrypt_key (with lparam) failed (rsa_msgsize = %lu)", rsa_msgsize); - return 1; - } - if (len2 != rsa_msgsize || memcmp(tmp, in, rsa_msgsize)) { - fprintf(stderr, "rsa_decrypt_key mismatch len %lu", len2); - print_hex("Original", in, rsa_msgsize); - print_hex("Output", tmp, len2); - return 1; - } - } - - /* encrypt the key PKCS #1 v1.5 (payload from 1 to 117 bytes) */ - for (rsa_msgsize = 1; rsa_msgsize <= 117; rsa_msgsize++) { - len = sizeof(out); - len2 = rsa_msgsize; - /* make a random key/msg */ - yarrow_read(in, rsa_msgsize, &yarrow_prng); - DO(rsa_encrypt_key_ex(in, rsa_msgsize, out, &len, NULL, 0, &yarrow_prng, prng_idx, 0, LTC_PKCS_1_V1_5, &key)); - - len2 = rsa_msgsize; - DO(rsa_decrypt_key_ex(out, len, tmp, &len2, NULL, 0, 0, LTC_PKCS_1_V1_5, &stat, &key)); - if (stat != 1) { - fprintf(stderr, "rsa_decrypt_key_ex failed, %d, %d", stat, stat2); - return 1; - } - if (len2 != rsa_msgsize) { - fprintf(stderr, "rsa_decrypt_key_ex mismatch len %lu", len2); - return 1; - } - if (memcmp(tmp, in, rsa_msgsize)) { - fprintf(stderr, "rsa_decrypt_key_ex mismatch data"); - print_hex("Original", in, rsa_msgsize); - print_hex("Output", tmp, rsa_msgsize); - return 1; - } - } - - /* sign a message (unsalted, lower cholestorol and Atkins approved) now */ - len = sizeof(out); - DO(rsa_sign_hash(in, 20, out, &len, &yarrow_prng, prng_idx, hash_idx, 0, &key)); - -/* export key and import as both private and public */ - len2 = sizeof(tmp); - DO(rsa_export(tmp, &len2, PK_PRIVATE, &key)); - DO(rsa_import(tmp, len2, &privKey)); - len2 = sizeof(tmp); - DO(rsa_export(tmp, &len2, PK_PUBLIC, &key)); - DO(rsa_import(tmp, len2, &pubKey)); - - /* verify with original */ - DO(rsa_verify_hash(out, len, in, 20, hash_idx, 0, &stat, &key)); - /* change a byte */ - in[0] ^= 1; - DO(rsa_verify_hash(out, len, in, 20, hash_idx, 0, &stat2, &key)); - - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "rsa_verify_hash (unsalted, origKey) failed, %d, %d", stat, stat2); - rsa_free(&key); - rsa_free(&pubKey); - rsa_free(&privKey); - return 1; - } - - /* verify with privKey */ - /* change byte back to original */ - in[0] ^= 1; - DO(rsa_verify_hash(out, len, in, 20, hash_idx, 0, &stat, &privKey)); - /* change a byte */ - in[0] ^= 1; - DO(rsa_verify_hash(out, len, in, 20, hash_idx, 0, &stat2, &privKey)); - - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "rsa_verify_hash (unsalted, privKey) failed, %d, %d", stat, stat2); - rsa_free(&key); - rsa_free(&pubKey); - rsa_free(&privKey); - return 1; - } - - /* verify with privKey but remove pointer to dP to test without CRT */ - - dP = privKey.dP; - privKey.dP = NULL; - /* change byte back to original */ - in[0] ^= 1; - DO(rsa_verify_hash(out, len, in, 20, hash_idx, 0, &stat, &privKey)); - /* change a byte */ - in[0] ^= 1; - DO(rsa_verify_hash(out, len, in, 20, hash_idx, 0, &stat2, &privKey)); - - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "rsa_verify_hash (unsalted, privKey) failed, %d, %d", stat, stat2); - rsa_free(&key); - rsa_free(&pubKey); - rsa_free(&privKey); - return 1; - } - privKey.dP = dP; - - /* verify with pubKey */ - /* change byte back to original */ - in[0] ^= 1; - DO(rsa_verify_hash(out, len, in, 20, hash_idx, 0, &stat, &pubKey)); - /* change a byte */ - in[0] ^= 1; - DO(rsa_verify_hash(out, len, in, 20, hash_idx, 0, &stat2, &pubKey)); - - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "rsa_verify_hash (unsalted, pubkey) failed, %d, %d", stat, stat2); - rsa_free(&key); - rsa_free(&pubKey); - rsa_free(&privKey); - return 1; - } - - /* sign a message (salted) now (use privKey to make, pubKey to verify) */ - len = sizeof(out); - DO(rsa_sign_hash(in, 20, out, &len, &yarrow_prng, prng_idx, hash_idx, 8, &privKey)); - DO(rsa_verify_hash(out, len, in, 20, hash_idx, 8, &stat, &pubKey)); - /* change a byte */ - in[0] ^= 1; - DO(rsa_verify_hash(out, len, in, 20, hash_idx, 8, &stat2, &pubKey)); - - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "rsa_verify_hash (salted) failed, %d, %d", stat, stat2); - rsa_free(&key); - rsa_free(&pubKey); - rsa_free(&privKey); - return 1; - } - - /* sign a message with PKCS #1 v1.5 */ - len = sizeof(out); - DO(rsa_sign_hash_ex(in, 20, out, &len, LTC_PKCS_1_V1_5, &yarrow_prng, prng_idx, hash_idx, 8, &privKey)); - DO(rsa_verify_hash_ex(out, len, in, 20, LTC_PKCS_1_V1_5, hash_idx, 8, &stat, &pubKey)); - /* change a byte */ - in[0] ^= 1; - DO(rsa_verify_hash_ex(out, len, in, 20, LTC_PKCS_1_V1_5, hash_idx, 8, &stat2, &pubKey)); - - if (!(stat == 1 && stat2 == 0)) { - fprintf(stderr, "rsa_verify_hash_ex failed, %d, %d", stat, stat2); - rsa_free(&key); - rsa_free(&pubKey); - rsa_free(&privKey); - return 1; - } - - /* Testcase for Bleichenbacher attack - * - * (1) Create a valid signature - * (2) Check that it can be verified - * (3) Decrypt the package to fetch plain text - * (4) Forge the structure of PKCS#1-EMSA encoded data - * (4.1) Search for start and end of the padding string - * (4.2) Move the signature to the front of the padding string - * (4.3) Zero the message until the end - * (5) Encrypt the package again - * (6) Profit :) - * For PS lengths < 8: the verification process should fail - * For PS lengths >= 8: the verification process should succeed - * For all PS lengths: the result should not be valid - */ - - p = in; - p2 = out; - p3 = tmp; - for (i = 0; i < 9; ++i) { - len = sizeof(in); - len2 = sizeof(out); - /* (1) */ - DO(rsa_sign_hash_ex(p, 20, p2, &len2, LTC_PKCS_1_V1_5, &yarrow_prng, prng_idx, hash_idx, 8, &privKey)); - /* (2) */ - DOX(rsa_verify_hash_ex(p2, len2, p, 20, LTC_PKCS_1_V1_5, hash_idx, -1, &stat, &pubKey), "should succeed"); - DOX(stat == 1?CRYPT_OK:CRYPT_FAIL_TESTVECTOR, "should succeed"); - len3 = sizeof(tmp); - /* (3) */ - DO(ltc_mp.rsa_me(p2, len2, p3, &len3, PK_PUBLIC, &key)); - /* (4) */ -#if defined(LTC_TEST_DBG) && LTC_TEST_DBG > 1 - print_hex("Original signature", p3, len3); -#endif - /* (4.1) */ - for (cnt = 0; cnt < len3; ++cnt) { - if (p3[cnt] == 0xff) - break; - } - for (cnt2 = cnt+1; cnt2 < len3; ++cnt2) { - if (p3[cnt2] != 0xff) - break; - } - /* (4.2) */ - memmove(&p3[cnt+i], &p3[cnt2], len3-cnt2); - /* (4.3) */ - for (cnt = cnt + len3-cnt2+i; cnt < len; ++cnt) { - p3[cnt] = 0; - } -#if defined(LTC_TEST_DBG) && LTC_TEST_DBG > 1 - print_hex("Forged signature", p3, len3); -#endif - - len2 = sizeof(out); - /* (5) */ - DO(ltc_mp.rsa_me(p3, len3, p2, &len2, PK_PRIVATE, &key)); - - len3 = sizeof(tmp); - /* (6) */ - if (i < 8) - DOX(rsa_verify_hash_ex(p2, len2, p, 20, LTC_PKCS_1_V1_5, hash_idx, -1, &stat, &pubKey) - == CRYPT_INVALID_PACKET ? CRYPT_OK:CRYPT_INVALID_PACKET, "should fail"); - else - DOX(rsa_verify_hash_ex(p2, len2, p, 20, LTC_PKCS_1_V1_5, hash_idx, -1, &stat, &pubKey), "should succeed"); - DOX(stat == 0?CRYPT_OK:CRYPT_FAIL_TESTVECTOR, "should fail"); - } - rsa_free(&key); - - /* try reading the public RSA key from a X509 certificate */ - len3 = sizeof(tmp); - DO(base64_decode(x509_public_rsa, sizeof(x509_public_rsa), tmp, &len3)); - DO(rsa_import_x509(tmp, len3, &key)); - len = sizeof(tmp); - DO(rsa_export(tmp, &len, PK_PUBLIC, &key)); - if (len != sizeof(openssl_public_rsa_stripped) || memcmp(tmp, openssl_public_rsa_stripped, len)) { - fprintf(stderr, "RSA public export failed to match rsa_import_x509\n"); - return 1; - } - rsa_free(&key); - - len3 = sizeof(tmp); - DO(base64_decode(_der_tests_cacert_root_cert, _der_tests_cacert_root_cert_size, tmp, &len3)); - - DO(rsa_import_x509(tmp, len3, &key)); - - /* free the key and return */ - rsa_free(&key); - rsa_free(&pubKey); - rsa_free(&privKey); - return 0; -} - -#else - -int rsa_test(void) -{ - return CRYPT_NOP; -} - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/store_test.c b/src/libtomcrypt/tests/store_test.c deleted file mode 100644 index bc8a7dc7ac..0000000000 --- a/src/libtomcrypt/tests/store_test.c +++ /dev/null @@ -1,86 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -/* Test store/load macros with offsets */ -int store_test(void) -{ - unsigned char buf[256]; - int y; - ulong32 L, L1; - ulong64 LL, LL1; -#ifdef LTC_FAST - int x, z; -#endif - - for (y = 0; y < 4; y++) { - L = 0x12345678UL; - L1 = 0; - STORE32L(L, buf + y); - LOAD32L(L1, buf + y); - if (L1 != L) { - fprintf(stderr, "\n32L failed at offset %d\n", y); - return 1; - } - STORE32H(L, buf + y); - LOAD32H(L1, buf + y); - if (L1 != L) { - fprintf(stderr, "\n32H failed at offset %d\n", y); - return 1; - } - } - - for (y = 0; y < 8; y++) { - LL = CONST64 (0x01020304050607); - LL1 = 0; - STORE64L(LL, buf + y); - LOAD64L(LL1, buf + y); - if (LL1 != LL) { - fprintf(stderr, "\n64L failed at offset %d\n", y); - return 1; - } - STORE64H(LL, buf + y); - LOAD64H(LL1, buf + y); - if (LL1 != LL) { - fprintf(stderr, "\n64H failed at offset %d\n", y); - return 1; - } - } - -/* test LTC_FAST */ -#ifdef LTC_FAST - y = 16; - - for (z = 0; z < y; z++) { - /* fill y bytes with random */ - yarrow_read(buf+z, y, &yarrow_prng); - yarrow_read(buf+z+y, y, &yarrow_prng); - - /* now XOR it byte for byte */ - for (x = 0; x < y; x++) { - buf[2*y+z+x] = buf[z+x] ^ buf[z+y+x]; - } - - /* now XOR it word for word */ - for (x = 0; x < y; x += sizeof(LTC_FAST_TYPE)) { - *(LTC_FAST_TYPE_PTR_CAST(&buf[3*y+z+x])) = *(LTC_FAST_TYPE_PTR_CAST(&buf[z+x])) ^ *(LTC_FAST_TYPE_PTR_CAST(&buf[z+y+x])); - } - - if (memcmp(&buf[2*y+z], &buf[3*y+z], y)) { - fprintf(stderr, "\nLTC_FAST failed at offset %d\n", z); - return 1; - } - } -#endif - return 0; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/test.c b/src/libtomcrypt/tests/test.c deleted file mode 100644 index 6e0b67f356..0000000000 --- a/src/libtomcrypt/tests/test.c +++ /dev/null @@ -1,433 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ -#include - -#ifndef GIT_VERSION -#define GIT_VERSION "Undefined version" -#endif - -#define LTC_TEST_FN(f) { f, #f } - -typedef struct { - int (*fn)(void); - const char* name; -} test_function; - -static const test_function test_functions[] = -{ - LTC_TEST_FN(store_test), - LTC_TEST_FN(rotate_test), - LTC_TEST_FN(misc_test), - LTC_TEST_FN(mpi_test), - LTC_TEST_FN(cipher_hash_test), - LTC_TEST_FN(mac_test), - LTC_TEST_FN(modes_test), - LTC_TEST_FN(der_test), - LTC_TEST_FN(pkcs_1_test), - LTC_TEST_FN(pkcs_1_pss_test), - LTC_TEST_FN(pkcs_1_oaep_test), - LTC_TEST_FN(pkcs_1_emsa_test), - LTC_TEST_FN(pkcs_1_eme_test), - LTC_TEST_FN(rsa_test), - LTC_TEST_FN(dh_test), - LTC_TEST_FN(ecc_tests), - LTC_TEST_FN(dsa_test), - LTC_TEST_FN(katja_test), - LTC_TEST_FN(file_test), - LTC_TEST_FN(multi_test), - /* keep the prng_test always at the end as - * it has to be handled specially when - * testing with LTC_PTHREAD enabled - */ - LTC_TEST_FN(prng_test), -}; - - -#if defined(_WIN32) - #include /* GetSystemTimeAsFileTime */ -#else - #include -#endif - -/* microseconds since 1970 (UNIX epoch) */ -static ulong64 epoch_usec(void) -{ -#if defined(LTC_NO_TEST_TIMING) - return 0; -#elif defined(_WIN32) - FILETIME CurrentTime; - ulong64 cur_time; - ULARGE_INTEGER ul; - GetSystemTimeAsFileTime(&CurrentTime); - ul.LowPart = CurrentTime.dwLowDateTime; - ul.HighPart = CurrentTime.dwHighDateTime; - cur_time = ul.QuadPart; - cur_time -= CONST64(116444736000000000); /* subtract epoch in microseconds */ - cur_time /= 10; /* nanoseconds > microseconds */ - return cur_time; -#else - struct timeval tv; - gettimeofday(&tv, NULL); - return (ulong64)(tv.tv_sec) * 1000000 + (ulong64)(tv.tv_usec); /* get microseconds */ -#endif -} - -#ifdef LTC_PTHREAD -typedef struct -{ - pthread_t thread_id; - const test_function* t; - int err; - ulong64 delta; -} thread_info; - -static void *run(void *arg) -{ - thread_info *tinfo = arg; - ulong64 ts; - - ts = epoch_usec(); - tinfo->err = tinfo->t->fn(); - tinfo->delta = epoch_usec() - ts; - - return arg; -} -#endif - - -/* - * unregister ciphers, hashes & prngs - */ -static void _unregister_all(void) -{ -#ifdef LTC_RIJNDAEL -#ifdef ENCRYPT_ONLY - /* alternative would be - * unregister_cipher(&rijndael_enc_desc); - */ - unregister_cipher(&aes_enc_desc); -#else - /* alternative would be - * unregister_cipher(&rijndael_desc); - */ - unregister_cipher(&aes_desc); -#endif -#endif -#ifdef LTC_BLOWFISH - unregister_cipher(&blowfish_desc); -#endif -#ifdef LTC_XTEA - unregister_cipher(&xtea_desc); -#endif -#ifdef LTC_RC5 - unregister_cipher(&rc5_desc); -#endif -#ifdef LTC_RC6 - unregister_cipher(&rc6_desc); -#endif -#ifdef LTC_SAFERP - unregister_cipher(&saferp_desc); -#endif -#ifdef LTC_TWOFISH - unregister_cipher(&twofish_desc); -#endif -#ifdef LTC_SAFER - unregister_cipher(&safer_k64_desc); - unregister_cipher(&safer_sk64_desc); - unregister_cipher(&safer_k128_desc); - unregister_cipher(&safer_sk128_desc); -#endif -#ifdef LTC_RC2 - unregister_cipher(&rc2_desc); -#endif -#ifdef LTC_DES - unregister_cipher(&des_desc); - unregister_cipher(&des3_desc); -#endif -#ifdef LTC_CAST5 - unregister_cipher(&cast5_desc); -#endif -#ifdef LTC_NOEKEON - unregister_cipher(&noekeon_desc); -#endif -#ifdef LTC_SKIPJACK - unregister_cipher(&skipjack_desc); -#endif -#ifdef LTC_KHAZAD - unregister_cipher(&khazad_desc); -#endif -#ifdef LTC_ANUBIS - unregister_cipher(&anubis_desc); -#endif -#ifdef LTC_KSEED - unregister_cipher(&kseed_desc); -#endif -#ifdef LTC_KASUMI - unregister_cipher(&kasumi_desc); -#endif -#ifdef LTC_MULTI2 - unregister_cipher(&multi2_desc); -#endif -#ifdef LTC_CAMELLIA - unregister_cipher(&camellia_desc); -#endif - -#ifdef LTC_TIGER - unregister_hash(&tiger_desc); -#endif -#ifdef LTC_MD2 - unregister_hash(&md2_desc); -#endif -#ifdef LTC_MD4 - unregister_hash(&md4_desc); -#endif -#ifdef LTC_MD5 - unregister_hash(&md5_desc); -#endif -#ifdef LTC_SHA1 - unregister_hash(&sha1_desc); -#endif -#ifdef LTC_SHA224 - unregister_hash(&sha224_desc); -#endif -#ifdef LTC_SHA256 - unregister_hash(&sha256_desc); -#endif -#ifdef LTC_SHA384 - unregister_hash(&sha384_desc); -#endif -#ifdef LTC_SHA512 - unregister_hash(&sha512_desc); -#endif -#ifdef LTC_SHA512_224 - unregister_hash(&sha512_224_desc); -#endif -#ifdef LTC_SHA512_256 - unregister_hash(&sha512_256_desc); -#endif -#ifdef LTC_SHA3 - unregister_hash(&sha3_224_desc); - unregister_hash(&sha3_256_desc); - unregister_hash(&sha3_384_desc); - unregister_hash(&sha3_512_desc); -#endif -#ifdef LTC_RIPEMD128 - unregister_hash(&rmd128_desc); -#endif -#ifdef LTC_RIPEMD160 - unregister_hash(&rmd160_desc); -#endif -#ifdef LTC_RIPEMD256 - unregister_hash(&rmd256_desc); -#endif -#ifdef LTC_RIPEMD320 - unregister_hash(&rmd320_desc); -#endif -#ifdef LTC_WHIRLPOOL - unregister_hash(&whirlpool_desc); -#endif -#ifdef LTC_BLAKE2S - unregister_hash(&blake2s_128_desc); - unregister_hash(&blake2s_160_desc); - unregister_hash(&blake2s_224_desc); - unregister_hash(&blake2s_256_desc); -#endif -#ifdef LTC_BLAKE2B - unregister_hash(&blake2b_160_desc); - unregister_hash(&blake2b_256_desc); - unregister_hash(&blake2b_384_desc); - unregister_hash(&blake2b_512_desc); -#endif -#ifdef LTC_CHC_HASH - unregister_hash(&chc_desc); -#endif - - unregister_prng(&yarrow_desc); -#ifdef LTC_FORTUNA - unregister_prng(&fortuna_desc); -#endif -#ifdef LTC_RC4 - unregister_prng(&rc4_desc); -#endif -#ifdef LTC_CHACHA20_PRNG - unregister_prng(&chacha20_prng_desc); -#endif -#ifdef LTC_SOBER128 - unregister_prng(&sober128_desc); -#endif -#ifdef LTC_SPRNG - unregister_prng(&sprng_desc); -#endif -} /* _cleanup() */ - -static void register_algs(void) -{ - int err; - - atexit(_unregister_all); - -#ifndef LTC_YARROW - #error This demo requires Yarrow. -#endif - if ((err = register_all_ciphers()) != CRYPT_OK) { - fprintf(stderr, "register_all_ciphers err=%s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - if ((err = register_all_hashes()) != CRYPT_OK) { - fprintf(stderr, "register_all_hashes err=%s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - if ((err = register_all_prngs()) != CRYPT_OK) { - fprintf(stderr, "register_all_prngs err=%s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - - if ((err = rng_make_prng(128, find_prng("yarrow"), &yarrow_prng, NULL)) != CRYPT_OK) { - fprintf(stderr, "rng_make_prng failed: %s\n", error_to_string(err)); - exit(EXIT_FAILURE); - } - - if (strcmp("CRYPT_OK", error_to_string(err))) { - exit(EXIT_FAILURE); - } -} - -int main(int argc, char **argv) -{ -#ifdef LTC_PTHREAD - thread_info *tinfo, *res; -#endif - int x, pass = 0, fail = 0, nop = 0; - size_t fn_len, i, dots; - char *single_test = NULL; - ulong64 ts; - long delta, dur, real = 0; - register_algs(); - - printf("LTC_VERSION = %s\n%s\n\n", GIT_VERSION, crypt_build_settings); - -#ifdef USE_LTM - ltc_mp = ltm_desc; - printf("MP_PROVIDER = LibTomMath\n"); -#elif defined(USE_TFM) - ltc_mp = tfm_desc; - printf("MP_PROVIDER = TomsFastMath\n"); -#elif defined(USE_GMP) - ltc_mp = gmp_desc; - printf("MP_PROVIDER = GnuMP\n"); -#elif defined(EXT_MATH_LIB) - { - extern ltc_math_descriptor EXT_MATH_LIB; - ltc_mp = EXT_MATH_LIB; - } - -#define NAME_VALUE(s) #s"="NAME(s) -#define NAME(s) #s - printf("MP_PROVIDER = %s\n", NAME_VALUE(EXT_MATH_LIB)); -#undef NAME_VALUE -#undef NAME - -#endif -#ifdef LTC_TEST_MPI - printf("MP_DIGIT_BIT = %d\n", MP_DIGIT_BIT); -#else - printf("NO math provider selected, all tests requiring MPI were disabled and will 'nop'\n"); -#endif - - printf("sizeof(ltc_mp_digit) = %d\n", (int)sizeof(ltc_mp_digit)); - -#ifdef LTC_PTHREAD - tinfo = XCALLOC(sizeof(test_functions)/sizeof(test_functions[0]), sizeof(thread_info)); - if (tinfo == NULL) { - printf("\n\nFAILURE: XCALLOC\n"); - return EXIT_FAILURE; - } -#endif - - fn_len = 0; - for (i = 0; i < sizeof(test_functions) / sizeof(test_functions[0]); ++i) { - size_t len = strlen(test_functions[i].name); - if (fn_len < len) fn_len = len; - -#ifdef LTC_PTHREAD - if(test_functions[i].fn == prng_test) continue; - tinfo[i].t = &test_functions[i]; - x = pthread_create(&tinfo[i].thread_id, NULL, run, &tinfo[i]); - if (x != 0) { - printf("\n\nFAILURE: pthread_create\n"); - return EXIT_FAILURE; - } -#endif - } - - fn_len = fn_len + (4 - (fn_len % 4)); - - /* single test name from commandline */ - if (argc > 1) single_test = argv[1]; - - dur = epoch_usec(); - for (i = 0; i < sizeof(test_functions)/sizeof(test_functions[0]); ++i) { - if (single_test && strstr(test_functions[i].name, single_test) == NULL) { - continue; - } - dots = fn_len - strlen(test_functions[i].name); - - printf("\n%s", test_functions[i].name); - while(dots--) printf("."); - fflush(stdout); - -#ifdef LTC_PTHREAD - if(test_functions[i].fn != prng_test) { - x = pthread_join(tinfo[i].thread_id, (void**)&res); - if (x != 0){ - printf("\n\nFAILURE: pthread_join\n"); - return EXIT_FAILURE; - } - x = res->err; - delta = res->delta; - } - else { - ts = epoch_usec(); - x = test_functions[i].fn(); - delta = (long)(epoch_usec() - ts); - } -#else - ts = epoch_usec(); - x = test_functions[i].fn(); - delta = (long)(epoch_usec() - ts); -#endif - real += delta; - - if (x == CRYPT_OK) { - printf("passed %10.3fms", (double)(delta)/1000); - pass++; - } - else if (x == CRYPT_NOP) { - printf("nop"); - nop++; - } - else { - printf("failed (%s) %10.3fms", error_to_string(x), (double)(delta)/1000); - fail++; - } - } - dur = epoch_usec() - dur; - -#ifdef LTC_PTHREAD - XFREE(tinfo); -#endif - - x = (fail > 0 || fail+pass+nop == 0) ? EXIT_FAILURE : EXIT_SUCCESS; - printf("\n\n%s: passed=%d failed=%d nop=%d duration=%.1fsec real=%.1fsec\n", x ? "FAILURE" : "SUCCESS", pass, fail, nop, (double)(dur)/(1000*1000), (double)(real)/(1000*1000)); - return x; -} - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/tests/test.der b/src/libtomcrypt/tests/test.der deleted file mode 100644 index d7041f9bae..0000000000 Binary files a/src/libtomcrypt/tests/test.der and /dev/null differ diff --git a/src/libtomcrypt/tests/test.key b/src/libtomcrypt/tests/test.key deleted file mode 100644 index e4996c35cc..0000000000 --- a/src/libtomcrypt/tests/test.key +++ /dev/null @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXgIBAAKBgQDPmt5kitrIMyCp14MxGVSymoWnobd1M7aprIQks97bfYUtlmXl -P3KVJJ8oaMpP20QcPmASit0mpev/C17UiDhJKm5bvxI3R70Fa7zb8+7kEY5BaHxh -E9dCyIC+No/cCItPrKTidgzJY2xJWJPtzKrcJTsKYD+LVDrDTTHnlKRE/QIDAQAB -AoGBAMhiuereRFMdVpfZl54azzAeCohFhikwo02fYWVz4NaHj7bzBqOC3Hys/pso -mq79+/4vDtiXBOO7H9HsDbqjSX9HrIpEBH6GtzlCP60etw6lUfRAYx79veqfQZ+o -kB1vClqVExENgK9fZJiKLHhoZbAri6JTh8rxZASr8nvbg8iBAkEA975eI8MyP7+L -jjru/PzL5ffxC7xCgq7Vej7K99VpP2Qloh+3dXUFkkLruPHzCgXjlNFVeDWgNqCb -fJKEbN3cTQJBANaGDoVCCwQIhCFg8A4NiP0eNhBlTx5TtAhygFw/WWYX5pjy6Wx6 -Bkysdj3tjKHOrRu9tH0ovOMOOI2Z2AW1o3ECQG3rwy0u8F6kiDEFKQCK0ZUpm4PP -ddsx43on3jp0MAx2TNRQKkAtOdmZY6ldgK5TypQ/BSMe+AUE4bg18hezoIkCQQCr -kIj6YAgpUJpDi6BQzNha/pdkY3F0IqMgAlrP68YWlVTRy6uNGsYA+giSnHHVUlI1 -lnFLi5IM0Om/rWMLpemxAkEA3MwnyOTcYkjVm6/1q2D2If1T4rddCckaoQSp/GEs -XQRYOlo58UohVmf9zCCjj3gYWnk9Lo5+hgrmqDPBBBdKnw== ------END RSA PRIVATE KEY----- diff --git a/src/libtomcrypt/tests/test_dsa.key b/src/libtomcrypt/tests/test_dsa.key deleted file mode 100644 index 2f026694c1..0000000000 --- a/src/libtomcrypt/tests/test_dsa.key +++ /dev/null @@ -1,12 +0,0 @@ ------BEGIN DSA PRIVATE KEY----- -MIIBuwIBAAKBgQDFCjdRXKvWGNWicL1Kb2tK+eE5lQ8rmTh9mmTWTLWWetztrKis -xhtlWt7bAGElGhgs7qEHkGJeTRIxkMcDIfoJ57Fz146v2/2/s++t0aEqA23nBpJK -hSr/egFmUx/qxmdBhFrAbO1i+cJiYgWk+kigZuw1yagR/rmBq+6+Mba/zwIVAKpb -1/TlBiQT5Yg1ygDHpjVxYZTFAoGAO5Lk/1kpFQsImVp78q0UQFVvoEf/kJmzRLPU -/EUVBa5nIkOcujcQpYlHN+zM9a6tqLR6Ncudk1zt5rB+lpTEpgx91nCKCU+BSg7C -E/vrFr/qpPRW/3IwBd6KRD++xoUmVdYtHR7bFdqkRYM8F5eYC42H80kNkL2pq2du -h2hyI9wCgYBTFrD7v1mKXlWVwU+sQ7gIU+bPDZIj+rGEWVI5v8vyLTg63ZNSBUl+ -KxLEYXPjb1S9luWnqqlaWKS3Z9LAvcgesToST5jABe85XWq6tws72LeV3XluotKE -c0cDiLRk2bm4T/HJNLv5c2b1fC4R/sMx5gg4WWeB621BJ9cNdK+gNQIVAJk25eTp -+yi+kfUGX+jJNbP12B/F ------END DSA PRIVATE KEY----- diff --git a/src/libtomcrypt/tests/tomcrypt_test.h b/src/libtomcrypt/tests/tomcrypt_test.h deleted file mode 100644 index 001f437b24..0000000000 --- a/src/libtomcrypt/tests/tomcrypt_test.h +++ /dev/null @@ -1,69 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - */ - -#ifndef __TEST_H_ -#define __TEST_H_ - -#include - -#include "common.h" - -#ifdef USE_LTM -/* Use libtommath as MPI provider */ -#define LTC_TEST_MPI -#elif defined(USE_TFM) -/* Use tomsfastmath as MPI provider */ -#define LTC_TEST_MPI -#elif defined(USE_GMP) -/* Use GNU Multiple Precision Arithmetic Library as MPI provider */ -#define LTC_TEST_MPI -#elif defined(EXT_MATH_LIB) -/* The user must define his own MPI provider! */ -#define LTC_TEST_MPI -#endif - -typedef struct { - char *name, *prov, *req; - int (*entry)(void); -} test_entry; - -/* TESTS */ -int cipher_hash_test(void); -int modes_test(void); -int mac_test(void); -int pkcs_1_test(void); -int pkcs_1_pss_test(void); -int pkcs_1_oaep_test(void); -int pkcs_1_emsa_test(void); -int pkcs_1_eme_test(void); -int store_test(void); -int rotate_test(void); -int rsa_test(void); -int dh_test(void); -int katja_test(void); -int ecc_tests(void); -int dsa_test(void); -int der_test(void); -int misc_test(void); -int base64_test(void); -int file_test(void); -int multi_test(void); -int prng_test(void); -int mpi_test(void); - -#ifdef LTC_PKCS_1 -struct ltc_prng_descriptor* no_prng_desc_get(void); -void no_prng_desc_free(struct ltc_prng_descriptor*); -#endif - -#endif - -/* ref: HEAD -> master, tag: v1.18.2 */ -/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ -/* commit time: 2018-07-01 22:49:01 +0200 */ diff --git a/src/libtomcrypt/updatemakes.sh b/src/libtomcrypt/updatemakes.sh deleted file mode 100644 index 14210c05d1..0000000000 --- a/src/libtomcrypt/updatemakes.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -./helper.pl --update-makefiles || exit 1 - -makefiles=(makefile makefile_include.mk makefile.shared makefile.unix makefile.mingw makefile.msvc) -vcproj=(libtomcrypt_VS2008.vcproj) - -if [ $# -eq 1 ] && [ "$1" == "-c" ]; then - git add ${makefiles[@]} ${vcproj[@]} doc/Doxyfile && git commit -m 'Update makefiles' -fi - -exit 0